IyEgL2Jpbi9zaAouICIke3NyY2Rpcj0ufS9pbml0LnNoIjsgcGF0aF9wcmVwZW5kXyAuIC4uL3NyYwoKIyBUZXN0IGV4dHJhY3RvciBvZiBOZVhUc3RlcC9HTlVzdGVwIC5zdHJpbmdzIGZpbGVzLgoKY2F0IDw8XEVPRiA+IHhnLXN0YmwtMS5zdHJpbmdzCi8qKioKR2VybWFuLmxwcm9qL0xvY2FsaXphYmxlLnN0cmluZ3MKdXBkYXRlZCBieSBtYWtlX3N0cmluZ3MgMjAwMy0xMC0xMiAxNTozMTo1MCArMDIwMAphZGQgY29tbWVudHMgYWJvdmUgdGhpcyBvbmUKKioqLwoKCi8qKiogU3RyaW5ncyBmcm9tIEhlbGxvLm0gKioqLwovKiBGaWxlOiBIZWxsby5tOjU3ICovCi8qIEZpbGU6IEhlbGxvLm06NTYgKi8KIkhlbGxvLCB3b3JsZCEiID0gIkhhbGxvIFdlbHQhIjsKLyogRmlsZTogSGVsbG8ubTo2NyAqLwoiVGhpcyBwcm9ncmFtIGlzIHJ1bm5pbmcgYXMgcHJvY2VzcyBudW1iZXIgJWQuIgo9ICJEaWVzZXMgUHJvZ3JhbW0gbOR1ZnQgbWl0IGRlciBQcm96ZXNzLU51bW1lciAlZC4iOwpFT0YKCjogJHtYR0VUVEVYVD14Z2V0dGV4dH0KJHtYR0VUVEVYVH0gLW8geGctc3RibC0xLnRtcCB4Zy1zdGJsLTEuc3RyaW5ncyB8fCBFeGl0IDEKZnVuY19maWx0ZXJfUE9UX0NyZWF0aW9uX0RhdGUgeGctc3RibC0xLnRtcCB4Zy1zdGJsLTEucG8KCmNhdCA8PFxFT0YgPiB4Zy1zdGJsLTEub2sKIyBTT01FIERFU0NSSVBUSVZFIFRJVExFLgojIENvcHlyaWdodCAoQykgWUVBUiBUSEUgUEFDS0FHRSdTIENPUFlSSUdIVCBIT0xERVIKIyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHNhbWUgbGljZW5zZSBhcyB0aGUgUEFDS0FHRSBwYWNrYWdlLgojIEZJUlNUIEFVVEhPUiA8RU1BSUxAQUREUkVTUz4sIFlFQVIuCiMKIywgZnV6enkKbXNnaWQgIiIKbXNnc3RyICIiCiJQcm9qZWN0LUlkLVZlcnNpb246IFBBQ0tBR0UgVkVSU0lPTlxuIgoiUmVwb3J0LU1zZ2lkLUJ1Z3MtVG86IFxuIgoiUE8tUmV2aXNpb24tRGF0ZTogWUVBUi1NTy1EQSBITzpNSStaT05FXG4iCiJMYXN0LVRyYW5zbGF0b3I6IEZVTEwgTkFNRSA8RU1BSUxAQUREUkVTUz5cbiIKIkxhbmd1YWdlLVRlYW06IExBTkdVQUdFIDxMTEBsaS5vcmc+XG4iCiJMYW5ndWFnZTogXG4iCiJNSU1FLVZlcnNpb246IDEuMFxuIgoiQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluOyBjaGFyc2V0PVVURi04XG4iCiJDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiA4Yml0XG4iCgojCiMgR2VybWFuLmxwcm9qL0xvY2FsaXphYmxlLnN0cmluZ3MKIyB1cGRhdGVkIGJ5IG1ha2Vfc3RyaW5ncyAyMDAzLTEwLTEyIDE1OjMxOjUwICswMjAwCiMgYWRkIGNvbW1lbnRzIGFib3ZlIHRoaXMgb25lCiMKIyBTdHJpbmdzIGZyb20gSGVsbG8ubQojOiBIZWxsby5tOjU3IEhlbGxvLm06NTYKbXNnaWQgIkhlbGxvLCB3b3JsZCEiCm1zZ3N0ciAiSGFsbG8gV2VsdCEiCgojOiBIZWxsby5tOjY3Cm1zZ2lkICJUaGlzIHByb2dyYW0gaXMgcnVubmluZyBhcyBwcm9jZXNzIG51bWJlciAlZC4iCm1zZ3N0ciAiRGllc2VzIFByb2dyYW1tIGzDpHVmdCBtaXQgZGVyIFByb3plc3MtTnVtbWVyICVkLiIKRU9GCgo6ICR7RElGRj1kaWZmfQoke0RJRkZ9IHhnLXN0YmwtMS5vayB4Zy1zdGJsLTEucG8KcmVzdWx0PSQ/CgpleGl0ICRyZXN1bHQK