IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyBDb3B5cmlnaHQgKGMpIDIwMDgtMjAxMCBNb3Rvcm9sYSBJbmMuCiMgQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscyAKIyBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAgCiMgd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQgCiMgaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwgCiMgCiMgSW5pdGlhbCBDb250cmlidXRvcjoKIyBPdOF2aW8gRmVycmFudGkgKE1vdG9yb2xhKQojCiMgQ29udHJpYnV0b3JzOgojIE1hdXJlbiBCcmVubmVyIChFbGRvcmFkbykgLSBbMjU3NTg1XSBVcGRhdGUgcHJvdmlkZXIgbmFtZQojIERhbmllbCBQYXN0b3JlIChFbGRvcmFkbykgLSBbMjg5ODcwXSBNb3ZpbmcgYW5kIHJlbmFtaW5nIFRtbCB0byBTZXF1b3lhaAojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwoKIyBOTFNfTUVTU0FHRUZPUk1BVF9OT05FCiMgTkxTX0VOQ09ESU5HPVVURi04CgpwbHVnaW5OYW1lPUxpbnV4IFRvb2xzIEJhc2UgUGx1Z2luIChJbmN1YmF0aW9uKQpwcm92aWRlck5hbWU9RWNsaXBzZS5vcmcgLSBEU0RQCgpjYXRlZ29yeS5uYW1lPUxpbnV4IFRvb2xzCgp2aWV3Lm1lbW9yeW1hcC5uYW1lPU1lbW9yeSBNYXAKdmlldy5jcHVsb2FkLm5hbWU9Q1BVIExvYWQKCgoK