IyBNaWNyb3NvZnQgRGV2ZWxvcGVyIFN0dWRpbyBQcm9qZWN0IEZpbGUgLSBOYW1lPSJVbml0VGVzdFBQX3ZzNiIgLSBQYWNrYWdlIE93bmVyPTw0PgojIE1pY3Jvc29mdCBEZXZlbG9wZXIgU3R1ZGlvIEdlbmVyYXRlZCBCdWlsZCBGaWxlLCBGb3JtYXQgVmVyc2lvbiA2LjAwCiMgKiogldKPV4K1gsiCooLFgq2CvoKzgqIgKioKCiMgVEFSR1RZUEUgIldpbjMyICh4ODYpIFN0YXRpYyBMaWJyYXJ5IiAweDAxMDQKCkNGRz1Vbml0VGVzdFBQX3ZzNiAtIFdpbjMyIERlYnVnCiFNRVNTQUdFIIKxguqCzZdMjPiCyNKyuMynstmCxYLNgqCC6ILcgrmC8YFCIIKxgszM39u83qq4xILwy97ZxN6Ct4Lpgr2C34LJgs0gTk1BS0UggvCOZ5dwgrWCxIKtgr6Cs4KigUIKIU1FU1NBR0UgW9KyuMynstmCzLS4vc7fsMRdILrP3cTegvCOZ5dwgrWCxI7AjXOCtYLEgq2CvoKzgqIKIU1FU1NBR0UgCiFNRVNTQUdFIE5NQUtFIC9mICJVbml0VGVzdFBQX3ZzNi5tYWsiLgohTUVTU0FHRSAKIU1FU1NBR0UgTk1BS0UggsyOwI1zjp6CyY1ckKyC8I53kuiCxYKrgtyCtwohTUVTU0FHRSC6z93E3iDXst2P44LFz7jbgsyQ3ZLogvCS6ItggrWC3IK3gUKX4ToKIU1FU1NBR0UgCiFNRVNTQUdFIE5NQUtFIC9mICJVbml0VGVzdFBQX3ZzNi5tYWsiIENGRz0iVW5pdFRlc3RQUF92czYgLSBXaW4zMiBEZWJ1ZyIKIU1FU1NBR0UgCiFNRVNTQUdFIJFJkfCJwpRcgsjL3tnE3iDTsMTeOgohTUVTU0FHRSAKIU1FU1NBR0UgIlVuaXRUZXN0UFBfdnM2IC0gV2luMzIgUmVsZWFzZSIgKCJXaW4zMiAoeDg2KSBTdGF0aWMgTGlicmFyeSIgl3ApCiFNRVNTQUdFICJVbml0VGVzdFBQX3ZzNiAtIFdpbjMyIERlYnVnIiAoIldpbjMyICh4ODYpIFN0YXRpYyBMaWJyYXJ5IiCXcCkKIU1FU1NBR0UgCgojIEJlZ2luIFByb2plY3QKIyBQUk9QIEFsbG93UGVyQ29uZmlnRGVwZW5kZW5jaWVzIDAKIyBQUk9QIFNjY19Qcm9qTmFtZSAiIgojIFBST1AgU2NjX0xvY2FsUGF0aCAiIgpDUFA9Y2wuZXhlClJTQz1yYy5leGUKCiFJRiAgIiQoQ0ZHKSIgPT0gIlVuaXRUZXN0UFBfdnM2IC0gV2luMzIgUmVsZWFzZSIKCiMgUFJPUCBCQVNFIFVzZV9NRkMgMAojIFBST1AgQkFTRSBVc2VfRGVidWdfTGlicmFyaWVzIDAKIyBQUk9QIEJBU0UgT3V0cHV0X0RpciAiUmVsZWFzZSIKIyBQUk9QIEJBU0UgSW50ZXJtZWRpYXRlX0RpciAiUmVsZWFzZSIKIyBQUk9QIEJBU0UgVGFyZ2V0X0RpciAiIgojIFBST1AgVXNlX01GQyAwCiMgUFJPUCBVc2VfRGVidWdfTGlicmFyaWVzIDAKIyBQUk9QIE91dHB1dF9EaXIgIlJlbGVhc2UiCiMgUFJPUCBJbnRlcm1lZGlhdGVfRGlyICJSZWxlYXNlIgojIFBST1AgVGFyZ2V0X0RpciAiIgojIEFERCBCQVNFIENQUCAvbm9sb2dvIC9XMyAvR1ggL08yIC9EICJXSU4zMiIgL0QgIk5ERUJVRyIgL0QgIl9NQkNTIiAvRCAiX0xJQiIgL1lYIC9GRCAvYwojIEFERCBDUFAgL25vbG9nbyAvTVQgL1czIC9HWCAvTzIgL0QgIldJTjMyIiAvRCAiTkRFQlVHIiAvRCAiX01CQ1MiIC9EICJfTElCIiAvWVggL0ZEIC9jCiMgQUREIEJBU0UgUlNDIC9sIDB4NDExIC9kICJOREVCVUciCiMgQUREIFJTQyAvbCAweDQxMSAvZCAiTkRFQlVHIgpCU0MzMj1ic2NtYWtlLmV4ZQojIEFERCBCQVNFIEJTQzMyIC9ub2xvZ28KIyBBREQgQlNDMzIgL25vbG9nbwpMSUIzMj1saW5rLmV4ZSAtbGliCiMgQUREIEJBU0UgTElCMzIgL25vbG9nbwojIEFERCBMSUIzMiAvbm9sb2dvCgohRUxTRUlGICAiJChDRkcpIiA9PSAiVW5pdFRlc3RQUF92czYgLSBXaW4zMiBEZWJ1ZyIKCiMgUFJPUCBCQVNFIFVzZV9NRkMgMAojIFBST1AgQkFTRSBVc2VfRGVidWdfTGlicmFyaWVzIDEKIyBQUk9QIEJBU0UgT3V0cHV0X0RpciAiRGVidWciCiMgUFJPUCBCQVNFIEludGVybWVkaWF0ZV9EaXIgIkRlYnVnIgojIFBST1AgQkFTRSBUYXJnZXRfRGlyICIiCiMgUFJPUCBVc2VfTUZDIDAKIyBQUk9QIFVzZV9EZWJ1Z19MaWJyYXJpZXMgMQojIFBST1AgT3V0cHV0X0RpciAiRGVidWciCiMgUFJPUCBJbnRlcm1lZGlhdGVfRGlyICJEZWJ1ZyIKIyBQUk9QIFRhcmdldF9EaXIgIiIKIyBBREQgQkFTRSBDUFAgL25vbG9nbyAvVzMgL0dtIC9HWCAvWkkgL09kIC9EICJXSU4zMiIgL0QgIl9ERUJVRyIgL0QgIl9NQkNTIiAvRCAiX0xJQiIgL1lYIC9GRCAvR1ogL2MKIyBBREQgQ1BQIC9ub2xvZ28gL01UZCAvVzMgL0dtIC9HWCAvWkkgL09kIC9EICJXSU4zMiIgL0QgIl9ERUJVRyIgL0QgIl9NQkNTIiAvRCAiX0xJQiIgL1lYIC9GRCAvR1ogL2MKIyBBREQgQkFTRSBSU0MgL2wgMHg0MTEgL2QgIl9ERUJVRyIKIyBBREQgUlNDIC9sIDB4NDExIC9kICJfREVCVUciCkJTQzMyPWJzY21ha2UuZXhlCiMgQUREIEJBU0UgQlNDMzIgL25vbG9nbwojIEFERCBCU0MzMiAvbm9sb2dvCkxJQjMyPWxpbmsuZXhlIC1saWIKIyBBREQgQkFTRSBMSUIzMiAvbm9sb2dvCiMgQUREIExJQjMyIC9ub2xvZ28KCiFFTkRJRiAKCiMgQmVnaW4gVGFyZ2V0CgojIE5hbWUgIlVuaXRUZXN0UFBfdnM2IC0gV2luMzIgUmVsZWFzZSIKIyBOYW1lICJVbml0VGVzdFBQX3ZzNiAtIFdpbjMyIERlYnVnIgojIEJlZ2luIEdyb3VwICJTb3VyY2UgRmlsZXMiCgojIFBST1AgRGVmYXVsdF9GaWx0ZXIgImNwcDtjO2N4eDtyYztkZWY7cjtvZGw7aWRsO2hwajtiYXQiCiMgQmVnaW4gU291cmNlIEZpbGUKClNPVVJDRT0uXHNyY1xBc3NlcnRFeGNlcHRpb24uY3BwCiMgRW5kIFNvdXJjZSBGaWxlCiMgQmVnaW4gU291cmNlIEZpbGUKClNPVVJDRT0uXHNyY1xDaGVja3MuY3BwCiMgRW5kIFNvdXJjZSBGaWxlCiMgQmVnaW4gU291cmNlIEZpbGUKClNPVVJDRT0uXHNyY1xDdXJyZW50VGVzdC5jcHAKIyBFbmQgU291cmNlIEZpbGUKIyBCZWdpbiBTb3VyY2UgRmlsZQoKU09VUkNFPS5cc3JjXERlZmVycmVkVGVzdFJlcG9ydGVyLmNwcAojIEVuZCBTb3VyY2UgRmlsZQojIEJlZ2luIFNvdXJjZSBGaWxlCgpTT1VSQ0U9LlxzcmNcRGVmZXJyZWRUZXN0UmVzdWx0LmNwcAojIEVuZCBTb3VyY2UgRmlsZQojIEJlZ2luIFNvdXJjZSBGaWxlCgpTT1VSQ0U9LlxzcmNcTWVtb3J5T3V0U3RyZWFtLmNwcAojIEVuZCBTb3VyY2UgRmlsZQojIEJlZ2luIFNvdXJjZSBGaWxlCgpTT1VSQ0U9LlxzcmNcUmVwb3J0QXNzZXJ0LmNwcAojIEVuZCBTb3VyY2UgRmlsZQojIEJlZ2luIFNvdXJjZSBGaWxlCgpTT1VSQ0U9LlxzcmNcVGVzdC5jcHAKIyBFbmQgU291cmNlIEZpbGUKIyBCZWdpbiBTb3VyY2UgRmlsZQoKU09VUkNFPS5cc3JjXFRlc3REZXRhaWxzLmNwcAojIEVuZCBTb3VyY2UgRmlsZQojIEJlZ2luIFNvdXJjZSBGaWxlCgpTT1VSQ0U9LlxzcmNcVGVzdExpc3QuY3BwCiMgRW5kIFNvdXJjZSBGaWxlCiMgQmVnaW4gU291cmNlIEZpbGUKClNPVVJDRT0uXHNyY1xUZXN0UmVwb3J0ZXIuY3BwCiMgRW5kIFNvdXJjZSBGaWxlCiMgQmVnaW4gU291cmNlIEZpbGUKClNPVVJDRT0uXHNyY1xUZXN0UmVwb3J0ZXJTdGRvdXQuY3BwCiMgRW5kIFNvdXJjZSBGaWxlCiMgQmVnaW4gU291cmNlIEZpbGUKClNPVVJDRT0uXHNyY1xUZXN0UmVzdWx0cy5jcHAKIyBFbmQgU291cmNlIEZpbGUKIyBCZWdpbiBTb3VyY2UgRmlsZQoKU09VUkNFPS5cc3JjXFRlc3RSdW5uZXIuY3BwCiMgRW5kIFNvdXJjZSBGaWxlCiMgQmVnaW4gU291cmNlIEZpbGUKClNPVVJDRT0uXHNyY1xUaW1lQ29uc3RyYWludC5jcHAKIyBFbmQgU291cmNlIEZpbGUKIyBCZWdpbiBTb3VyY2UgRmlsZQoKU09VUkNFPS5cc3JjXFhtbFRlc3RSZXBvcnRlci5jcHAKIyBFbmQgU291cmNlIEZpbGUKIyBFbmQgR3JvdXAKIyBCZWdpbiBHcm91cCAiSGVhZGVyIEZpbGVzIgoKIyBQUk9QIERlZmF1bHRfRmlsdGVyICJoO2hwcDtoeHg7aG07aW5sIgojIEJlZ2luIFNvdXJjZSBGaWxlCgpTT1VSQ0U9LlxzcmNcQXNzZXJ0RXhjZXB0aW9uLmgKIyBFbmQgU291cmNlIEZpbGUKIyBCZWdpbiBTb3VyY2UgRmlsZQoKU09VUkNFPS5cc3JjXENoZWNrTWFjcm9zLmgKIyBFbmQgU291cmNlIEZpbGUKIyBCZWdpbiBTb3VyY2UgRmlsZQoKU09VUkNFPS5cc3JjXENoZWNrcy5oCiMgRW5kIFNvdXJjZSBGaWxlCiMgQmVnaW4gU291cmNlIEZpbGUKClNPVVJDRT0uXHNyY1xDb25maWcuaAojIEVuZCBTb3VyY2UgRmlsZQojIEJlZ2luIFNvdXJjZSBGaWxlCgpTT1VSQ0U9LlxzcmNcQ3VycmVudFRlc3QuaAojIEVuZCBTb3VyY2UgRmlsZQojIEJlZ2luIFNvdXJjZSBGaWxlCgpTT1VSQ0U9LlxzcmNcRGVmZXJyZWRUZXN0UmVwb3J0ZXIuaAojIEVuZCBTb3VyY2UgRmlsZQojIEJlZ2luIFNvdXJjZSBGaWxlCgpTT1VSQ0U9LlxzcmNcRGVmZXJyZWRUZXN0UmVzdWx0LmgKIyBFbmQgU291cmNlIEZpbGUKIyBCZWdpbiBTb3VyY2UgRmlsZQoKU09VUkNFPS5cc3JjXEV4ZWN1dGVUZXN0LmgKIyBFbmQgU291cmNlIEZpbGUKIyBCZWdpbiBTb3VyY2UgRmlsZQoKU09VUkNFPS5cc3JjXE1lbW9yeU91dFN0cmVhbS5oCiMgRW5kIFNvdXJjZSBGaWxlCiMgQmVnaW4gU291cmNlIEZpbGUKClNPVVJDRT0uXHNyY1xSZXBvcnRBc3NlcnQuaAojIEVuZCBTb3VyY2UgRmlsZQojIEJlZ2luIFNvdXJjZSBGaWxlCgpTT1VSQ0U9LlxzcmNcVGVzdC5oCiMgRW5kIFNvdXJjZSBGaWxlCiMgQmVnaW4gU291cmNlIEZpbGUKClNPVVJDRT0uXHNyY1xUZXN0RGV0YWlscy5oCiMgRW5kIFNvdXJjZSBGaWxlCiMgQmVnaW4gU291cmNlIEZpbGUKClNPVVJDRT0uXHNyY1xUZXN0TGlzdC5oCiMgRW5kIFNvdXJjZSBGaWxlCiMgQmVnaW4gU291cmNlIEZpbGUKClNPVVJDRT0uXHNyY1xUZXN0TWFjcm9zLmgKIyBFbmQgU291cmNlIEZpbGUKIyBCZWdpbiBTb3VyY2UgRmlsZQoKU09VUkNFPS5cc3JjXFRlc3RSZXBvcnRlci5oCiMgRW5kIFNvdXJjZSBGaWxlCiMgQmVnaW4gU291cmNlIEZpbGUKClNPVVJDRT0uXHNyY1xUZXN0UmVwb3J0ZXJTdGRvdXQuaAojIEVuZCBTb3VyY2UgRmlsZQojIEJlZ2luIFNvdXJjZSBGaWxlCgpTT1VSQ0U9LlxzcmNcVGVzdFJlc3VsdHMuaAojIEVuZCBTb3VyY2UgRmlsZQojIEJlZ2luIFNvdXJjZSBGaWxlCgpTT1VSQ0U9LlxzcmNcVGVzdFJ1bm5lci5oCiMgRW5kIFNvdXJjZSBGaWxlCiMgQmVnaW4gU291cmNlIEZpbGUKClNPVVJDRT0uXHNyY1xUZXN0U3VpdGUuaAojIEVuZCBTb3VyY2UgRmlsZQojIEJlZ2luIFNvdXJjZSBGaWxlCgpTT1VSQ0U9LlxzcmNcVGltZUNvbnN0cmFpbnQuaAojIEVuZCBTb3VyY2UgRmlsZQojIEJlZ2luIFNvdXJjZSBGaWxlCgpTT1VSQ0U9LlxzcmNcVGltZUhlbHBlcnMuaAojIEVuZCBTb3VyY2UgRmlsZQojIEJlZ2luIFNvdXJjZSBGaWxlCgpTT1VSQ0U9Ii5cc3JjXHVuaXR0ZXN0cHAuaCIKIyBFbmQgU291cmNlIEZpbGUKIyBCZWdpbiBTb3VyY2UgRmlsZQoKU09VUkNFPS5cc3JjXFhtbFRlc3RSZXBvcnRlci5oCiMgRW5kIFNvdXJjZSBGaWxlCiMgRW5kIEdyb3VwCiMgQmVnaW4gR3JvdXAgIldpbjMyIgoKIyBQUk9QIERlZmF1bHRfRmlsdGVyICIiCiMgQmVnaW4gU291cmNlIEZpbGUKClNPVVJDRT0uXHNyY1xXaW4zMlxUaW1lSGVscGVycy5jcHAKIyBFbmQgU291cmNlIEZpbGUKIyBCZWdpbiBTb3VyY2UgRmlsZQoKU09VUkNFPS5cc3JjXFdpbjMyXFRpbWVIZWxwZXJzLmgKIyBFbmQgU291cmNlIEZpbGUKIyBFbmQgR3JvdXAKIyBFbmQgVGFyZ2V0CiMgRW5kIFByb2plY3QK