IyBHZXJtYW4gbWVzc2FnZXMgZm9yIEdOVSBsaWJpY29udi4KIyBDb3B5cmlnaHQgKEMpIDIwMDIgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCiMgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBzYW1lIGxpY2Vuc2UgYXMgdGhlIEdOVSBsaWJpY29udiBwYWNrYWdlLgojIEJydW5vIEhhaWJsZSA8YnJ1bm9AY2xpc3Aub3JnPiwgMjAwMi4KIwptc2dpZCAiIgptc2dzdHIgIiIKIlByb2plY3QtSWQtVmVyc2lvbjogR05VIGxpYmljb252IDEuOFxuIgoiUmVwb3J0LU1zZ2lkLUJ1Z3MtVG86IGJ1Zy1nbnUtbGliaWNvbnZAZ251Lm9yZ1xuIgoiUE9ULUNyZWF0aW9uLURhdGU6IDIwMDUtMDctMDcgMTQ6NTQrMDIwMFxuIgoiUE8tUmV2aXNpb24tRGF0ZTogMjAwMi0wNC0yOCAwNDoyNiswMjAwXG4iCiJMYXN0LVRyYW5zbGF0b3I6IEJydW5vIEhhaWJsZSA8YnJ1bm9AY2xpc3Aub3JnPlxuIgoiTGFuZ3VhZ2UtVGVhbTogR2VybWFuIDxkZUBsaS5vcmc+XG4iCiJNSU1FLVZlcnNpb246IDEuMFxuIgoiQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluOyBjaGFyc2V0PUlTTy04ODU5LTFcbiIKIkNvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IDhiaXRcbiIKIlBsdXJhbC1Gb3JtczogbnBsdXJhbHM9MjsgcGx1cmFsPShuICE9IDEpO1xuIgoKIzogc3JjL2ljb252LmM6NTYKbXNnaWQgIlVzYWdlOiBpY29udiBbLWNdIFstc10gWy1mIGZyb21jb2RlXSBbLXQgdG9jb2RlXSBbZmlsZSAuLi5dIgptc2dzdHIgIiIKIkF1ZnJ1ZjogaWNvbnYgWy1jXSBbLXNdIFstZiBBVVNHQU5HUy1LT0RJRVJVTkddIFstdCBaSUVMLUtPRElFUlVOR10gIgoiW0RBVEVJIC4uLl0iCgojOiBzcmMvaWNvbnYuYzo1OAptc2dpZCAib3I6ICAgIGljb252IC1sIgptc2dzdHIgIm9kZXI6ICAgaWNvbnYgLWwiCgojOiBzcmMvaWNvbnYuYzo2OAojLCBjLWZvcm1hdAptc2dpZCAiIgoiVGhpcyBpcyBmcmVlIHNvZnR3YXJlOyBzZWUgdGhlIHNvdXJjZSBmb3IgY29weWluZyBjb25kaXRpb25zLiAgVGhlcmUgaXMgTk9cbiIKIndhcnJhbnR5OyBub3QgZXZlbiBmb3IgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLlxuIgptc2dzdHIgIiIKIkRpZXMgaXN0IGZyZWllIFNvZnR3YXJlOyBkaWUgS29waWVyYmVkaW5ndW5nZW4gc3RlaGVuIGluIGRlbiBRdWVsbGVuLiBFc1xuIgoiZ2lidCBrZWluZSBHYXJhbnRpZTsgYXVjaCBuaWNodCBm/HIgVkVSS0FVRkJBUktFSVQgb2RlciBG3FIgU1BFWklFTExFICIKIlpXRUNLRS5cbiIKCiM6IHNyYy9pY29udi5jOjcxCiMsIGMtZm9ybWF0Cm1zZ2lkICJXcml0dGVuIGJ5ICVzLlxuIgptc2dzdHIgIkdlc2NocmllYmVuIHZvbiAlcy5cbiIKCiM6IHNyYy9pY29udi5jOjEzMSBzcmMvaWNvbnYuYzoxNzEgc3JjL2ljb252LmM6MjMyCiMsIGZ1enp5LCBjLWZvcm1hdAptc2dpZCAiaWNvbnY6ICVzOiV1OiV1OiBpbmNvbXBsZXRlIGNoYXJhY3RlciBvciBzaGlmdCBzZXF1ZW5jZVxuIgptc2dzdHIgImljb252OiAlczogdW52b2xsc3TkbmRpZ2VzIFplaWNoZW4gb2RlciB1bnZvbGxzdORuZGlnZSBVbXNjaGFsdGZvbGdlXG4iCgojOiBzcmMvaWNvbnYuYzoxNjEgc3JjL2ljb252LmM6MjIzCiMsIGZ1enp5LCBjLWZvcm1hdAptc2dpZCAiaWNvbnY6ICVzOiV1OiV1OiBjYW5ub3QgY29udmVydFxuIgptc2dzdHIgImljb252OiAlczogS2FubiBuaWNodCB1bXdhbmRlbG4uXG4iCgojOiBzcmMvaWNvbnYuYzoxOTEgc3JjL2ljb252LmM6MjQxCiMsIGZ1enp5LCBjLWZvcm1hdAptc2dpZCAiaWNvbnY6ICVzOiV1OiV1OiAiCm1zZ3N0ciAiaWNvbnY6ICVzOiAiCgojOiBzcmMvaWNvbnYuYzoyNTMKIywgYy1mb3JtYXQKbXNnaWQgImljb252OiAlczogSS9PIGVycm9yXG4iCm1zZ3N0ciAiaWNvbnY6ICVzOiBFaW4tL0F1c2dhYmVmZWhsZXJcbiIKCiM6IHNyYy9pY29udi5jOjM1MQojLCBjLWZvcm1hdAptc2dpZCAiaWNvbnY6IGNvbnZlcnNpb24gZnJvbSAlcyB1bnN1cHBvcnRlZFxuIgptc2dzdHIgImljb252OiBVbXdhbmRsdW5nIGF1c2dlaGVuZCB2b24gJXMgaXN0IG5pY2h0IHVudGVyc3T8dHp0LlxuIgoKIzogc3JjL2ljb252LmM6MzUzCiMsIGMtZm9ybWF0Cm1zZ2lkICJpY29udjogY29udmVyc2lvbiB0byAlcyB1bnN1cHBvcnRlZFxuIgptc2dzdHIgImljb252OiBVbXdhbmRsdW5nIG5hY2ggJXMgaXN0IG5pY2h0IHVudGVyc3T8dHp0LlxuIgoKIzogc3JjL2ljb252LmM6MzU1CiMsIGMtZm9ybWF0Cm1zZ2lkICJpY29udjogY29udmVyc2lvbiBmcm9tICVzIHRvICVzIHVuc3VwcG9ydGVkXG4iCm1zZ3N0ciAiaWNvbnY6IFVtd2FuZGx1bmcgdm9uICVzIG5hY2ggJXMgaXN0IG5pY2h0IHVudGVyc3T8dHp0LlxuIgoKIzogc3JjL2ljb252LmM6MzU2CiMsIGMtZm9ybWF0Cm1zZ2lkICJpY29udjogdHJ5ICclcyAtbCcgdG8gZ2V0IHRoZSBsaXN0IG9mIHN1cHBvcnRlZCBlbmNvZGluZ3NcbiIKbXNnc3RyICIiCgojOiBzcmMvaWNvbnYuYzozNzAKbXNnaWQgIihzdGRpbikiCm1zZ3N0ciAiKFN0YW5kYXJkLUVpbmdhYmUpIgoKIzogc3JjL2ljb252LmM6Mzc4CiMsIGMtZm9ybWF0Cm1zZ2lkICJpY29udjogJXM6ICIKbXNnc3RyICJpY29udjogJXM6ICIKCiM6IHNyYy9pY29udi5jOjM5MQojLCBjLWZvcm1hdAptc2dpZCAiaWNvbnY6IEkvTyBlcnJvclxuIgptc2dzdHIgImljb252OiBFaW4tL0F1c2dhYmVmZWhsZXJcbiIKCiN+IG1zZ2lkICIiCiN+ICJVc2FnZTogaWNvbnYgWy0tYmluYXJ5XSBbLWNdIFstc10gWy1mIGZyb21jb2RlXSBbLXQgdG9jb2RlXSBbZmlsZSAuLi5dIgojfiBtc2dzdHIgIiIKI34gIkF1ZnJ1ZjogaWNvbnYgWy0tYmluYXJ5XSBbLWNdIFstc11cbiIKI34gIiAgICAgICAgICAgICAgWy1mIEFVU0dBTkdTLUtPRElFUlVOR10gWy10IFpJRUwtS09ESUVSVU5HXSBbREFURUkgLi4uXSIK