Ly0tIFRoaXMgc2V0IG9mIHRlc3RzIGNoZWNrcyBsb2NhbC1zcGVjaWZpYyBmZWF0dXJlcywgdXNpbmcgdGhlIGZyX0ZSIGxvY2FsZS4gCiAgICBJdCBpcyBub3QgUGVybC1jb21wYXRpYmxlLiBUaGVyZSBpcyBkaWZmZXJlbnQgdmVyc2lvbiBjYWxsZWQgd2ludGVzdGlucHV0MwogIGYgIG9yIHVzZSBvbiBXaW5kb3dzLCB3aGVyZSB0aGUgbG9jYWxlIGlzIGNhbGxlZCAiZnJlbmNoIi4gLS0vCgovXltcd10rLwogICAgKioqIEZhaWxlcnMKICAgIMljb2xlCgovXltcd10rL0xmcl9GUgogICAgyWNvbGUKCi9eW1x3XSsvCiAgICAqKiogRmFpbGVycwogICAgyWNvbGUKCi9eW1xXXSsvCiAgICDJY29sZQoKL15bXFddKy9MZnJfRlIKICAgICoqKiBGYWlsZXJzCiAgICDJY29sZQoKL1tcYl0vCiAgICBcYgogICAgKioqIEZhaWxlcnMKICAgIGEKCi9bXGJdL0xmcl9GUgogICAgXGIKICAgICoqKiBGYWlsZXJzCiAgICBhCgovXlx3Ky8KICAgICoqKiBGYWlsZXJzCiAgICDJY29sZQoKL15cdysvTGZyX0ZSCiAgICDJY29sZQoKLyguKylcYiguKykvCiAgICDJY29sZQoKLyguKylcYiguKykvTGZyX0ZSCiAgICAqKiogRmFpbGVycwogICAgyWNvbGUKCi/JY29sZS9pCiAgICDJY29sZQogICAgKioqIEZhaWxlcnMKICAgIOljb2xlCgovyWNvbGUvaUxmcl9GUgogICAgyWNvbGUKICAgIOljb2xlCgovXHcvSVMKCi9cdy9JU0xmcl9GUgoKL15bXHhjOC1ceGM5XS9pTGZyX0ZSCiAgICDJY29sZQogICAg6WNvbGUKCi9eW1x4YzgtXHhjOV0vTGZyX0ZSCiAgICDJY29sZQogICAgKioqIEZhaWxlcnMgCiAgICDpY29sZQoKL1xXKy9MZnJfRlIKICAgID4+Plx4YWE8PDwKICAgID4+Plx4YmE8PDwgCgovW1xXXSsvTGZyX0ZSCiAgICA+Pj5ceGFhPDw8CiAgICA+Pj5ceGJhPDw8IAoKL1teWzphbHBoYTpdXSsvTGZyX0ZSCiAgICA+Pj5ceGFhPDw8CiAgICA+Pj5ceGJhPDw8IAoKL1x3Ky9MZnJfRlIKICAgID4+Plx4YWE8PDwKICAgID4+Plx4YmE8PDwgCgovW1x3XSsvTGZyX0ZSCiAgICA+Pj5ceGFhPDw8CiAgICA+Pj5ceGJhPDw8IAoKL1tbOmFscGhhOl1dKy9MZnJfRlIKICAgID4+Plx4YWE8PDwKICAgID4+Plx4YmE8PDwgCiAgICAKL1tbOmFscGhhOl1dW1s6bG93ZXI6XV1bWzp1cHBlcjpdXS9EWkxmcl9GUiAKCi8tLSBFbmQgb2YgdGVzdGlucHV0MyAtLS8K