VGhpcyBmaWxlIHRyYWNrcyB0aGUgdGhpbmdzIHRoYXQgbmVlZCB0byBiZSBkb25lIHRvIGFjY29tcGxpc2ggdGhlCm1vdmUgb2YgbW9kcGVybCBwcm9qZWN0cyB0byBTVk46CgoqIG1pc3NpbmcgY29tbWl0IHRlbXBsYXRlIGZpbGVzICjgIGzgIENWUykKICBQUjoKICBPYnRhaW5lZCBmcm9tOgogIFN1Ym1pdHRlZCBieToKICBSZXZpZXdlZCBieTogCiAgLi4uCgoqIGNvbW1pdCBtZXNzYWdlcyBzaG91bGQgdHJpbSB0aGUgdW5yZWxhdGVkIGNyYXAgaW4gdGhlIGZpbGUgcGF0aAogIGUuZy4gY3VycmVudGx5IHdlIGdldDoKCiAgLS0tIHBlcmwvbW9kcGVybC9kb2NzL3RydW5rL3NyYy9zZWFyY2gvc3dpc2guY29uZiAgICAob3JpZ2luYWwpCiAgKysrIHBlcmwvbW9kcGVybC9kb2NzL3RydW5rL3NyYy9zZWFyY2gvc3dpc2guY29uZiAgICBGcmkgTm92IDE5IDIxOjIzOjI1IDIwMDQgCmFuZCBpdCBzaG91bGQgYmU6CgogIC0tLSBzcmMvc2VhcmNoL3N3aXNoLmNvbmYgICAgKG9yaWdpbmFsKQogICsrKyBzcmMvc2VhcmNoL3N3aXNoLmNvbmYgICAgRnJpIE5vdiAxOSAyMToyMzoyNSAyMDA0IAoKc28gaXQgY2FuIGJlIGFwcGxpZWQvZWRpdGVkIGVhc2lseS4gICAKCiogaW1wcm92ZSB0aGUgY29tbWl0IG1lc3NhZ2Ugc3ViamVjdCBsaW5lIHRvIHByaW50IG9ubHkgaW1wb3J0YW50IGluZm8KICAoY3VycmVudGx5IG1heSBwcmludCAxMDAgZmlsZXMgbGlzdGVkIGluIHRoZSBzdWJqZWN0KSwgZS5nLjoKCiAgU3ViamVjdDogc3ZuIGNvbW1pdDogcjEwNTgwMyAtIGluIGh0dHBkL3Rlc3QvdHJ1bmsvcGVybC1mcmFtZXdvcms6IC4gQXBhY2hlLVRlc3QgQXBhY2hlLVRlc3QvbGliL0FwYWNoZSBBcGFjaGUtVGVzdC90IEFwYWNoZS1UZXN0L3QvY29uZiBjLW1vZHVsZXMgYy1tb2R1bGVzL2F1dGhhbnkgYy1tb2R1bGVzL2NsaWVudF9hZGRfZmlsdGVyIGMtbW9kdWxlcy9lYXRfcG9zdCBjLW1vZHVsZXMvZWNob19wb3N0IGMtbW9kdWxlcy9lY2hvX3Bvc3RfY2h1bmsgYy1tb2R1bGVzL2lucHV0X2JvZHlfZmlsdGVyIGMtbW9kdWxlcy9saXN0X21vZHVsZXMgYy1tb2R1bGVzL25udHBfbGlrZSBjLW1vZHVsZXMvcmFuZG9tX2NodW5rIGMtbW9kdWxlcy90ZXN0X2Fwcl91cmkgYy1tb2R1bGVzL3Rlc3RfcGFzc19icmlnYWRlIGMtbW9kdWxlcy90ZXN0X3J3cml0ZSBjLW1vZHVsZXMvdGVzdF9zc2wgdCB0L2NvbmYgdC9jb25mL3NzbCB0L2h0ZG9jcy9tb2R1bGVzL2FjY2Vzcy9odGFjY2VzcyB0L2h0ZG9jcy9tb2R1bGVzL2NnaSB0L2h0ZG9jcy9tb2R1bGVzL3Jld3JpdGUgdC9tb2R1bGVzIAoKICBQcm9wb3NlZCBTdWJqZWN0IGZvcm1hdDoKCiAgJHN2bl9pZCAkZmlyc3Rfc3ViZGlyLyRmaXJzdF9maWxlICgkdHJ1bmspCg==