IyBTd2VkaXNoIG1lc3NhZ2VzIGZvciBwb3B0LgojIENvcHlyaWdodCCpIDIwMDggRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCiMgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBzYW1lIGxpY2Vuc2UgYXMgdGhlIHBvcHQgcGFja2FnZS4KIyBH9nJhbiBVZGRlYm9yZyA8Z29lcmFuQHVkZGVib3JnLnNlPiwgMjAwOC4KIwojICRSZXZpc2lvbjogMS40ICQKIwptc2dpZCAiIgptc2dzdHIgIiIKIlByb2plY3QtSWQtVmVyc2lvbjogcG9wdCAxLjE0XG4iCiJSZXBvcnQtTXNnaWQtQnVncy1UbzogPHBvcHQtZGV2ZWxAcnBtNS5vcmc+XG4iCiJQT1QtQ3JlYXRpb24tRGF0ZTogMjAxMC0wMi0xNyAxMzozNS0wNTAwXG4iCiJQTy1SZXZpc2lvbi1EYXRlOiAyMDA4LTAyLTIzIDIwOjE1KzAxMDBcbiIKIkxhc3QtVHJhbnNsYXRvcjogR/ZyYW4gVWRkZWJvcmcgPGdvZXJhbkB1ZGRlYm9yZy5zZT5cbiIKIkxhbmd1YWdlLVRlYW06IFN3ZWRpc2ggPHRwLXN2QGxpc3Rvci50cC1zdi5zZT5cbiIKIk1JTUUtVmVyc2lvbjogMS4wXG4iCiJDb250ZW50LVR5cGU6IHRleHQvcGxhaW47IGNoYXJzZXQ9aXNvLTg4NTktMVxuIgoiQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogOGJpdFxuIgoKIzogcG9wdC5jOjQ3Cm1zZ2lkICJ1bmtub3duIGVycm5vIgptc2dzdHIgIm9r5G50IGZlbG51bW1lciIKCiM6IHBvcHQuYzoxMjkwCiMsIGMtZm9ybWF0Cm1zZ2lkICJvcHRpb24gdHlwZSAoJXUpIG5vdCBpbXBsZW1lbnRlZCBpbiBwb3B0XG4iCm1zZ3N0ciAiZmxhZ2d0eXBlbiAoJXUpIORyIGludGUgaW1wbGVtZW50ZXJhZCBpIHBvcHRcbiIKCiM6IHBvcHQuYzoxNzExCm1zZ2lkICJtaXNzaW5nIGFyZ3VtZW50Igptc2dzdHIgImFyZ3VtZW50IHNha25hcyIKCiM6IHBvcHQuYzoxNzEzCm1zZ2lkICJ1bmtub3duIG9wdGlvbiIKbXNnc3RyICJva+RuZCBmbGFnZ2EiCgojOiBwb3B0LmM6MTcxNQptc2dpZCAibXV0dWFsbHkgZXhjbHVzaXZlIGxvZ2ljYWwgb3BlcmF0aW9ucyByZXF1ZXN0ZWQiCm1zZ3N0ciAi9m1zZXNpZGlndCB1dGVzbHV0YW5kZSBsb2dpc2thIG9wZXJhdGlvbmVyIGJlZ+RyZGVzIgoKIzogcG9wdC5jOjE3MTcKbXNnaWQgIm9wdC0+YXJnIHNob3VsZCBub3QgYmUgTlVMTCIKbXNnc3RyICJvcHQtPmFyZyBm5XIgaW50ZSB2YXJhIE5VTEwiCgojOiBwb3B0LmM6MTcxOQptc2dpZCAiYWxpYXNlcyBuZXN0ZWQgdG9vIGRlZXBseSIKbXNnc3RyICJhbGlhcyDkciBu5HN0YWRlIGb2ciBkanVwdCIKCiM6IHBvcHQuYzoxNzIxCm1zZ2lkICJlcnJvciBpbiBwYXJhbWV0ZXIgcXVvdGluZyIKbXNnc3RyICJmZWwgaSBwYXJhbWV0ZXJjaXRlcmluZyIKCiM6IHBvcHQuYzoxNzIzCm1zZ2lkICJpbnZhbGlkIG51bWVyaWMgdmFsdWUiCm1zZ3N0ciAib2dpbHRpZ3QgbnVtZXJpc2t0IHbkcmRlIgoKIzogcG9wdC5jOjE3MjUKbXNnaWQgIm51bWJlciB0b28gbGFyZ2Ugb3IgdG9vIHNtYWxsIgptc2dzdHIgInRhbGV0IGb2ciBzdG9ydCBlbGxlciBm9nIgbGl0ZXQiCgojOiBwb3B0LmM6MTcyNwptc2dpZCAibWVtb3J5IGFsbG9jYXRpb24gZmFpbGVkIgptc2dzdHIgIm1pbm5lc2FsbG9rZXJpbmcgbWlzc2x5Y2thZGVzIgoKIzogcG9wdC5jOjE3MjkKbXNnaWQgImNvbmZpZyBmaWxlIGZhaWxlZCBzYW5pdHkgdGVzdCIKbXNnc3RyICIiCgojOiBwb3B0LmM6MTczMwptc2dpZCAidW5rbm93biBlcnJvciIKbXNnc3RyICJva+RudCBmZWwiCgojOiBwb3B0aGVscC5jOjc1IHBvcHRoZWxwLmM6ODYKbXNnaWQgIlNob3cgdGhpcyBoZWxwIG1lc3NhZ2UiCm1zZ3N0ciAiVmlzYSBkZW5uYSBoauRscHRleHQiCgojOiBwb3B0aGVscC5jOjc2IHBvcHRoZWxwLmM6ODcKbXNnaWQgIkRpc3BsYXkgYnJpZWYgdXNhZ2UgbWVzc2FnZSIKbXNnc3RyICJWaXNhIGVuIGtvcnRmYXR0YWQgYW525G5kbmluZ3N0ZXh0IgoKIzogcG9wdGhlbHAuYzo5MAptc2dpZCAiRGlzcGxheSBvcHRpb24gZGVmYXVsdHMgaW4gbWVzc2FnZSIKbXNnc3RyICJWaXNhIHN0YW5kYXJkYWx0ZXJuYXRpdiBm9nIgZmxhZ2dvciBpIG1lZGRlbGFuZGUiCgojOiBwb3B0aGVscC5jOjkyCm1zZ2lkICJUZXJtaW5hdGUgb3B0aW9ucyIKbXNnc3RyICJBdnNsdXRhIGZsYWdnb3IiCgojOiBwb3B0aGVscC5jOjE5MQptc2dpZCAiSGVscCBvcHRpb25zOiIKbXNnc3RyICJIauRscGZsYWdnb3I6IgoKIzogcG9wdGhlbHAuYzoxOTIKbXNnaWQgIk9wdGlvbnMgaW1wbGVtZW50ZWQgdmlhIHBvcHQgYWxpYXMvZXhlYzoiCm1zZ3N0ciAiRmxhZ2dvciBpbXBsZW1lbnRlcmFkZSB2aWEgcG9wdC1hbGlhcy9leGVjOiIKCiM6IHBvcHRoZWxwLmM6MjAwCm1zZ2lkICJOT05FIgptc2dzdHIgIklOR0VUIgoKIzogcG9wdGhlbHAuYzoyMDIKbXNnaWQgIlZBTCIKbXNnc3RyICJWxFJERSIKCiM6IHBvcHRoZWxwLmM6MjA2Cm1zZ2lkICJJTlQiCm1zZ3N0ciAiSEVMVEFMIgoKIzogcG9wdGhlbHAuYzoyMDcKbXNnaWQgIlNIT1JUIgptc2dzdHIgIiIKCiM6IHBvcHRoZWxwLmM6MjA4Cm1zZ2lkICJMT05HIgptc2dzdHIgIkzFTkciCgojOiBwb3B0aGVscC5jOjIwOQptc2dpZCAiTE9OR0xPTkciCm1zZ3N0ciAiTMVOR0zFTkciCgojOiBwb3B0aGVscC5jOjIxMAptc2dpZCAiU1RSSU5HIgptc2dzdHIgIlNUUsRORyIKCiM6IHBvcHRoZWxwLmM6MjExCm1zZ2lkICJGTE9BVCIKbXNnc3RyICJGTFlUVEFMIgoKIzogcG9wdGhlbHAuYzoyMTIKbXNnaWQgIkRPVUJMRSIKbXNnc3RyICJEVUJCRUwiCgojOiBwb3B0aGVscC5jOjIxNQptc2dpZCAiQVJHIgptc2dzdHIgIkFSRyIKCiM6IHBvcHRoZWxwLmM6NjQ5Cm1zZ2lkICJVc2FnZToiCm1zZ3N0ciAiQW525G5kbmluZzoiCgojOiBwb3B0aGVscC5jOjY3Mgptc2dpZCAiW09QVElPTi4uLl0iCm1zZ3N0ciAiW0ZMQUdHQS4uLl0iCg==