IyEvYmluL3NoCi4gIiR7c3JjZGlyPS59L2luaXQuc2giOyBwYXRoX3ByZXBlbmRfIC4gLi4vc3JjCgojIFRlc3QgUHl0aG9uIHN1cHBvcnQ6IC0tZnJvbS1jb2RlIG9wdGlvbiBhbmQgZW5jb2RpbmcgcmVjb2duaXRpb24uCgojIE5vdGU6IFRoaXMgdGVzdCBmYWlscyBvbiBMaW51eCB3aXRoIG11c2wgbGliYyB2ZXJzaW9ucyB0aGF0IGRvbid0IHN1cHBvcnQKIyB0aGUgRVVDLUpQIGVuY29kaW5nIGluICdpY29udicuCgpjYXQgPDxcRU9GID4geGctcHktM2EucHkKIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCiMgVFJBTlNMQVRPUlM6IEZyYW6Pq65vaXMgUGluYXJkIGlzIGEgaGVyby4KcHJpbnQgZ2V0dGV4dC5nZXR0ZXh0KCLG/MvcuOwiKTsKRU9GCgpjYXQgPDxcRU9GID4geGctcHktM2IucHkKIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCiAgICAgICAgICAgICAgICAgICAgICAgIyBIZXkgRW1hY3MhIC0qLSBjb2Rpbmc6IGV1Yy1qcCAtKi0KIyBUUkFOU0xBVE9SUzogRnJhbo+rrm9pcyBQaW5hcmQgaXMgYSBoZXJvLgpwcmludCBnZXR0ZXh0LmdldHRleHQoIsb8y9y47CIpOwpFT0YKCmNhdCA8PFxFT0YgPiB4Zy1weS0zdS5weQojIS91c3IvYmluL2VudiBweXRob24KIyBUUkFOU0xBVE9SUzogRnJhbsOnb2lzIFBpbmFyZCBpcyBhIGhlcm8uCnByaW50IGdldHRleHQuZ2V0dGV4dCgi5pel5pys6KqeIik7CkVPRgoKY2F0IDw8XEVPRiA+IHhnLXB5LTMub2sKIyBTT01FIERFU0NSSVBUSVZFIFRJVExFLgojIENvcHlyaWdodCAoQykgWUVBUiBUSEUgUEFDS0FHRSdTIENPUFlSSUdIVCBIT0xERVIKIyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHNhbWUgbGljZW5zZSBhcyB0aGUgUEFDS0FHRSBwYWNrYWdlLgojIEZJUlNUIEFVVEhPUiA8RU1BSUxAQUREUkVTUz4sIFlFQVIuCiMKIywgZnV6enkKbXNnaWQgIiIKbXNnc3RyICIiCiJQcm9qZWN0LUlkLVZlcnNpb246IFBBQ0tBR0UgVkVSU0lPTlxuIgoiUmVwb3J0LU1zZ2lkLUJ1Z3MtVG86IFxuIgoiUE8tUmV2aXNpb24tRGF0ZTogWUVBUi1NTy1EQSBITzpNSStaT05FXG4iCiJMYXN0LVRyYW5zbGF0b3I6IEZVTEwgTkFNRSA8RU1BSUxAQUREUkVTUz5cbiIKIkxhbmd1YWdlLVRlYW06IExBTkdVQUdFIDxMTEBsaS5vcmc+XG4iCiJMYW5ndWFnZTogXG4iCiJNSU1FLVZlcnNpb246IDEuMFxuIgoiQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluOyBjaGFyc2V0PVVURi04XG4iCiJDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiA4Yml0XG4iCgojLiBUUkFOU0xBVE9SUzogRnJhbsOnb2lzIFBpbmFyZCBpcyBhIGhlcm8uCm1zZ2lkICLml6XmnKzoqp4iCm1zZ3N0ciAiIgpFT0YKCiMgVmVyaWZ5IHRoYXQgaWYgdGhlIHNvdXJjZSBmaWxlIGhhcyBubyBtYWdpYyBjb2RpbmcgY29tbWVudCwgeGdldHRleHQgZmFpbHMKIyBpZiBubyAtLWZyb20tY29kZSBvcHRpb24gaXMgZ2l2ZW4gYnV0IHN1Y2NlZWRzIGlmIGl0IGlzIGdpdmVuLgo6ICR7WEdFVFRFWFQ9eGdldHRleHR9CiR7WEdFVFRFWFR9IC0tYWRkLWNvbW1lbnRzPVRSQU5TTEFUT1JTOiAtLW5vLWxvY2F0aW9uIFwKICAtZCB4Zy1weS0zYSB4Zy1weS0zYS5weSA+IC9kZXYvbnVsbCAyPiYxCnRlc3QgJD8gPSAxIHx8IHsgRXhpdCAxOyB9CiR7WEdFVFRFWFR9IC0tYWRkLWNvbW1lbnRzPVRSQU5TTEFUT1JTOiAtLW5vLWxvY2F0aW9uIC0tZnJvbS1jb2RlPWV1Yy1qcCBcCiAgLW8geGctcHktM2EudG1wIHhnLXB5LTNhLnB5IHx8IEV4aXQgMQpmdW5jX2ZpbHRlcl9QT1RfQ3JlYXRpb25fRGF0ZSB4Zy1weS0zYS50bXAgeGctcHktM2EucG90Cgo6ICR7RElGRj1kaWZmfQoke0RJRkZ9IHhnLXB5LTMub2sgeGctcHktM2EucG90IHx8IEV4aXQgMQoKIyBWZXJpZnkgdGhhdCBpZiB0aGUgc291cmNlIGZpbGUgaGFzIGEgbWFnaWMgY29kaW5nIGNvbW1lbnQsIHhnZXR0ZXh0IHN1Y2NlZWRzLgoKJHtYR0VUVEVYVH0gLS1hZGQtY29tbWVudHM9VFJBTlNMQVRPUlM6IC0tbm8tbG9jYXRpb24gXAogIC1vIHhnLXB5LTNiLnRtcCB4Zy1weS0zYi5weSB8fCBFeGl0IDEKZnVuY19maWx0ZXJfUE9UX0NyZWF0aW9uX0RhdGUgeGctcHktM2IudG1wIHhnLXB5LTNiLnBvdAoKJHtESUZGfSB4Zy1weS0zLm9rIHhnLXB5LTNiLnBvdCB8fCBFeGl0IDEKCiMgVmVyaWZ5IHRoYXQgaWYgdGhlIHNvdXJjZSBmaWxlIGhhcyBubyBtYWdpYyBjb2RpbmcgY29tbWVudCBidXQgaXMgVVRGLTgKIyBlbmNvZGVkLCB4Z2V0dGV4dCBzdWNjZWVkcy4gKFBFUCAzMTIwKQoKJHtYR0VUVEVYVH0gLS1hZGQtY29tbWVudHM9VFJBTlNMQVRPUlM6IC0tbm8tbG9jYXRpb24gXAogIC1vIHhnLXB5LTN1LnRtcCB4Zy1weS0zdS5weSB8fCBFeGl0IDEKZnVuY19maWx0ZXJfUE9UX0NyZWF0aW9uX0RhdGUgeGctcHktM3UudG1wIHhnLXB5LTN1LnBvdAoKJHtESUZGfSB4Zy1weS0zLm9rIHhnLXB5LTN1LnBvdCB8fCBFeGl0IDEKCiMgVmVyaWZ5IHRoYXQgaWYgdGhlIHNvdXJjZSBmaWxlIGhhcyBhIG1hZ2ljIGNvZGluZyBjb21tZW50IGFuZCBhIC0tZnJvbS1jb2RlCiMgb3B0aW9uIGlzIGdpdmVuLCB0aGUgbWFnaWMgY29kaW5nIGNvbW1lbnQgdGFrZXMgcHJlY2VkZW5jZSBvdmVyIGl0LgoKJHtYR0VUVEVYVH0gLS1hZGQtY29tbWVudHM9VFJBTlNMQVRPUlM6IC0tbm8tbG9jYXRpb24gLS1mcm9tLWNvZGU9aXNvLTg4NTktMSBcCiAgLW8geGctcHktM2MudG1wIHhnLXB5LTNiLnB5IHx8IEV4aXQgMQpmdW5jX2ZpbHRlcl9QT1RfQ3JlYXRpb25fRGF0ZSB4Zy1weS0zYy50bXAgeGctcHktM2MucG90Cgoke0RJRkZ9IHhnLXB5LTMub2sgeGctcHktM2MucG90IHx8IEV4aXQgMQoKIyBWZXJpZnkgdGhhdCBiYWNrc2xhc2hlcyBpbiBhbmQgc2Vjb25kIGJ5dGVzIHdpdGggdmFsdWUgMHg1QyBhcmUgY29ycmVjdGx5CiMgZGlzdGluZ3Vpc2hlZCBpbiB3ZWlyZCBlbmNvZGluZ3MgbGlrZSBCSUc1LgoKY2F0IDw8XEVPRiA+IHhnLXB5LTNkLnB5CiMhL3Vzci9iaW4vZW52IHB5dGhvbgogICAgICAgICAgICAgICAgICAgICAgICMgSGV5IEVtYWNzISAtKi0gY29kaW5nOiBiaWc1IC0qLQpwcmludCBnZXR0ZXh0LmdldHRleHQodSKsXHUwMDIxIik7CnByaW50IGdldHRleHQuZ2V0dGV4dCh1IqxcXHUwMDIxIik7CkVPRgoKJHtYR0VUVEVYVH0gLS1hZGQtY29tbWVudHM9VFJBTlNMQVRPUlM6IFwKICAtbyB4Zy1weS0zZC50bXAgeGctcHktM2QucHkgfHwgRXhpdCAxCmZ1bmNfZmlsdGVyX1BPVF9DcmVhdGlvbl9EYXRlIHhnLXB5LTNkLnRtcCB4Zy1weS0zZC5wb3QKCmNhdCA8PFxFT0YgPiB4Zy1weS0zZC5vawojIFNPTUUgREVTQ1JJUFRJVkUgVElUTEUuCiMgQ29weXJpZ2h0IChDKSBZRUFSIFRIRSBQQUNLQUdFJ1MgQ09QWVJJR0hUIEhPTERFUgojIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgc2FtZSBsaWNlbnNlIGFzIHRoZSBQQUNLQUdFIHBhY2thZ2UuCiMgRklSU1QgQVVUSE9SIDxFTUFJTEBBRERSRVNTPiwgWUVBUi4KIwojLCBmdXp6eQptc2dpZCAiIgptc2dzdHIgIiIKIlByb2plY3QtSWQtVmVyc2lvbjogUEFDS0FHRSBWRVJTSU9OXG4iCiJSZXBvcnQtTXNnaWQtQnVncy1UbzogXG4iCiJQTy1SZXZpc2lvbi1EYXRlOiBZRUFSLU1PLURBIEhPOk1JK1pPTkVcbiIKIkxhc3QtVHJhbnNsYXRvcjogRlVMTCBOQU1FIDxFTUFJTEBBRERSRVNTPlxuIgoiTGFuZ3VhZ2UtVGVhbTogTEFOR1VBR0UgPExMQGxpLm9yZz5cbiIKIkxhbmd1YWdlOiBcbiIKIk1JTUUtVmVyc2lvbjogMS4wXG4iCiJDb250ZW50LVR5cGU6IHRleHQvcGxhaW47IGNoYXJzZXQ9VVRGLThcbiIKIkNvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IDhiaXRcbiIKCiM6IHhnLXB5LTNkLnB5OjMKbXNnaWQgIuaer3UwMDIxIgptc2dzdHIgIiIKCiM6IHhnLXB5LTNkLnB5OjQKbXNnaWQgIuaeryEiCm1zZ3N0ciAiIgpFT0YKCiR7RElGRn0geGctcHktM2Qub2sgeGctcHktM2QucG90IHx8IEV4aXQgMQoKRXhpdCAwCg==