Ly9NaWNyb3NvZnQgZU1iZWRkZWQgVmlzdWFsIEMrKyBnZW5lcmF0ZWQgcmVzb3VyY2Ugc2NyaXB0Lg0KLy8NCiNpbmNsdWRlICJyZXNvdXJjZS5oIg0KDQojZGVmaW5lIEFQU1RVRElPX1JFQURPTkxZX1NZTUJPTFMNCi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vDQovLw0KLy8gR2VuZXJhdGVkIGZyb20gdGhlIFRFWFRJTkNMVURFIDIgcmVzb3VyY2UuDQovLw0KI2luY2x1ZGUgImFmeHJlcy5oIg0KI2luY2x1ZGUgIm5ld3Jlcy5oIg0KDQovLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLw0KI3VuZGVmIEFQU1RVRElPX1JFQURPTkxZX1NZTUJPTFMNCg0KLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8NCi8vIEVuZ2xpc2ggKFUuUy4pIHJlc291cmNlcw0KDQojaWYgIWRlZmluZWQoQUZYX1JFU09VUkNFX0RMTCkgfHwgZGVmaW5lZChBRlhfVEFSR19FTlUpDQojaWZkZWYgX1dJTjMyDQpMQU5HVUFHRSBMQU5HX0VOR0xJU0gsIFNVQkxBTkdfRU5HTElTSF9VUw0KI3ByYWdtYSBjb2RlX3BhZ2UoMTI1MikNCiNlbmRpZiAvL19XSU4zMg0KDQojaWZkZWYgQVBTVFVESU9fSU5WT0tFRA0KLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8NCi8vDQovLyBURVhUSU5DTFVERQ0KLy8NCg0KMSBURVhUSU5DTFVERSBESVNDQVJEQUJMRSANCkJFR0lODQogICAgInJlc291cmNlLmhcMCINCkVORA0KDQoyIFRFWFRJTkNMVURFIERJU0NBUkRBQkxFIA0KQkVHSU4NCiAgICAiI2luY2x1ZGUgIiJhZnhyZXMuaCIiXHJcbiINCiAgICAiI2luY2x1ZGUgIiJuZXdyZXMuaCIiXHJcbiINCiAgICAiXDAiDQpFTkQNCg0KMyBURVhUSU5DTFVERSBESVNDQVJEQUJMRSANCkJFR0lODQogICAgIiNkZWZpbmUgX0FGWF9OT19TUExJVFRFUl9SRVNPVVJDRVNcclxuIg0KICAgICIjZGVmaW5lIF9BRlhfTk9fT0xFX1JFU09VUkNFU1xyXG4iDQogICAgIiNkZWZpbmUgX0FGWF9OT19UUkFDS0VSX1JFU09VUkNFU1xyXG4iDQogICAgIiNkZWZpbmUgX0FGWF9OT19QUk9QRVJUWV9SRVNPVVJDRVNcclxuIg0KICAgICJcclxuIg0KICAgICIjaWYgIWRlZmluZWQoQUZYX1JFU09VUkNFX0RMTCkgfHwgZGVmaW5lZChBRlhfVEFSR19FTlUpXHJcbiINCiAgICAiI2lmZGVmIF9XSU4zMlxyXG4iDQogICAgIkxBTkdVQUdFIDksIDFcclxuIg0KICAgICIjcHJhZ21hIGNvZGVfcGFnZSgxMjUyKVxyXG4iDQogICAgIiNlbmRpZiAvL19XSU4zMlxyXG4iDQogICAgIiNpbmNsdWRlICIicmVzXFxQb2NrZXRQSi5yYzIiIiAgLy8gbm9uLU1pY3Jvc29mdCBlTWJlZGRlZCBWaXN1YWwgQysrIGVkaXRlZCByZXNvdXJjZXNcclxuIg0KICAgICIjaW5jbHVkZSAiImFmeHJlcy5yYyIiICAgICAgICAgLy8gU3RhbmRhcmQgY29tcG9uZW50c1xyXG4iDQogICAgIiNpbmNsdWRlICIid2NlcmVzLnJjIiIgICAgICAgICAvLyBXQ0Utc3BlY2lmaWMgY29tcG9uZW50c1xyXG4iDQogICAgIiNlbmRpZlxyXG4iDQogICAgIlwwIg0KRU5EDQoNCiNlbmRpZiAgICAvLyBBUFNUVURJT19JTlZPS0VEDQoNCg0KLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8NCi8vDQovLyBJY29uDQovLw0KDQovLyBJY29uIHdpdGggbG93ZXN0IElEIHZhbHVlIHBsYWNlZCBmaXJzdCB0byBlbnN1cmUgYXBwbGljYXRpb24gaWNvbg0KLy8gcmVtYWlucyBjb25zaXN0ZW50IG9uIGFsbCBzeXN0ZW1zLg0KSURSX01BSU5GUkFNRSAgICAgICAgICAgSUNPTiAgICBESVNDQVJEQUJMRSAgICAgInJlc1xcUG9ja2V0UEouaWNvIg0KSURJX09OTElORSAgICAgICAgICAgICAgSUNPTiAgICBESVNDQVJEQUJMRSAgICAgInJlc1xcb25saW5lLmljbyINCklESV9PRkZMSU5FICAgICAgICAgICAgIElDT04gICAgRElTQ0FSREFCTEUgICAgICJyZXNcXG9mZmxpbmUuaWNvIg0KSURJX0lOVklTSUJMRSAgICAgICAgICAgSUNPTiAgICBESVNDQVJEQUJMRSAgICAgInJlc1xcaW52aXNpYmwuaWNvIg0KDQovLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLw0KLy8NCi8vIERpYWxvZw0KLy8NCg0KSUREX1BPQ0tFVFBKX0RJQUxPRyBESUFMT0dFWCAwLCAwLCAxMzksIDE1MQ0KU1RZTEUgV1NfUE9QVVAgfCBXU19WSVNJQkxFIHwgV1NfQ0FQVElPTg0KRVhTVFlMRSBXU19FWF9BUFBXSU5ET1cgfCAweDgwMDAwMDAwTA0KQ0FQVElPTiAiUG9ja2V0UEoiDQpGT05UIDgsICJTeXN0ZW0iDQpCRUdJTg0KICAgIExURVhUICAgICAgICAgICAic2lwOnVzZXJAcGpzaXAubGFiIixJRENfQUNDX0lELDIyLDUsMTE1LDgNCiAgICBDT05UUk9MICAgICAgICAgMTM1LElEQ19CVE5fQUNDLCJTdGF0aWMiLFNTX0JJVE1BUCB8IFNTX05PVElGWSB8IA0KICAgICAgICAgICAgICAgICAgICBXU19CT1JERVIgfCBXU19UQUJTVE9QLDcsMywxMiwxMQ0KICAgIENPTlRST0wgICAgICAgICAiTGlzdDEiLElEQ19CVUREWV9MSVNULCJTeXNMaXN0VmlldzMyIixMVlNfU01BTExJQ09OIHwgDQogICAgICAgICAgICAgICAgICAgIExWU19TSU5HTEVTRUwgfCBMVlNfU09SVEFTQ0VORElORyB8IFdTX0JPUkRFUiB8IA0KICAgICAgICAgICAgICAgICAgICBXU19UQUJTVE9QLDcsMzUsMTI3LDEwOQ0KICAgIExURVhUICAgICAgICAgICAiVVJMOiIsSURDX1NUQVRJQyw3LDE5LDE2LDgNCiAgICBFRElUVEVYVCAgICAgICAgSURDX1VSTCwyNSwxNiw5NywxMixFU19BVVRPSFNDUk9MTA0KICAgIENPTlRST0wgICAgICAgICAxMzgsSURDX0JUTl9BQ1RJT04sIlN0YXRpYyIsU1NfQklUTUFQIHwgU1NfTk9USUZZIHwgDQogICAgICAgICAgICAgICAgICAgIFdTX0JPUkRFUiwxMjUsMTYsMTIsMTENCkVORA0KDQpJRERfU0VUVElORyBESUFMT0cgRElTQ0FSREFCTEUgIDAsIDAsIDE0MCwgMTQzDQpTVFlMRSBXU19QT1BVUCB8IFdTX0NBUFRJT04gfCBXU19TWVNNRU5VDQpDQVBUSU9OICJQb2NrZXRQSiBTZXR0aW5ncy4uIg0KRk9OVCA4LCAiU3lzdGVtIg0KQkVHSU4NCiAgICBFRElUVEVYVCAgICAgICAgSURDX0RPTUFJTiwzOCw3LDc4LDEyLEVTX0FVVE9IU0NST0xMDQogICAgRURJVFRFWFQgICAgICAgIElEQ19VU0VSLDM4LDIxLDc4LDEyLEVTX0FVVE9IU0NST0xMDQogICAgRURJVFRFWFQgICAgICAgIElEQ19QQVNTV0QsMzgsMzUsNzgsMTIsRVNfUEFTU1dPUkQgfCBFU19BVVRPSFNDUk9MTA0KICAgIEVESVRURVhUICAgICAgICBJRENfRE5TLDM4LDQ5LDc4LDEyLEVTX0FVVE9IU0NST0xMDQogICAgRURJVFRFWFQgICAgICAgIElEQ19TVFVOX1NSViw1Niw2NCw3NywxMixFU19BVVRPSFNDUk9MTA0KICAgIENPTlRST0wgICAgICAgICAiSUNFIixJRENfSUNFLCJCdXR0b24iLEJTX0FVVE9DSEVDS0JPWCB8IFdTX1RBQlNUT1AsNyw3OSwNCiAgICAgICAgICAgICAgICAgICAgMjQsMTANCiAgICBDT05UUk9MICAgICAgICAgIlRDUCIsSURDX1RDUCwiQnV0dG9uIixCU19BVVRPQ0hFQ0tCT1ggfCBXU19UQUJTVE9QLDMzLA0KICAgICAgICAgICAgICAgICAgICA3OSwyNCwxMA0KICAgIENPTlRST0wgICAgICAgICAiU1JUUCIsSURDX1NSVFAsIkJ1dHRvbiIsQlNfQVVUT0NIRUNLQk9YIHwgV1NfVEFCU1RPUCw2MSwNCiAgICAgICAgICAgICAgICAgICAgNzksMjksMTANCiAgICBDT05UUk9MICAgICAgICAgIlBVQkxJU0giLElEQ19QVUJMSVNILCJCdXR0b24iLEJTX0FVVE9DSEVDS0JPWCB8IA0KICAgICAgICAgICAgICAgICAgICBXU19UQUJTVE9QLDkzLDc5LDQwLDEwDQogICAgQ09OVFJPTCAgICAgICAgICJFQywgdGFpbDoiLElEQ19FQ0hPX1NVUFBSRVNTLCJCdXR0b24iLEJTX0FVVE9DSEVDS0JPWCB8IA0KICAgICAgICAgICAgICAgICAgICBXU19UQUJTVE9QLDcsOTIsMzcsMTANCiAgICBFRElUVEVYVCAgICAgICAgSURDX0VDX1RBSUwsNDcsOTEsMjMsMTIsRVNfQVVUT0hTQ1JPTEwNCiAgICBDT05UUk9MICAgICAgICAgIlZBRCIsSURDX1ZBRCwiQnV0dG9uIixCU19BVVRPQ0hFQ0tCT1ggfCBXU19UQUJTVE9QLDkzLA0KICAgICAgICAgICAgICAgICAgICA5MiwyNSwxMA0KICAgIENPTUJPQk9YICAgICAgICBJRENfQ09ERUNTLDU5LDEwNSw0MiwzOSxDQlNfRFJPUERPV05MSVNUIHwgV1NfVlNDUk9MTCB8IA0KICAgICAgICAgICAgICAgICAgICBXU19UQUJTVE9QDQogICAgUFVTSEJVVFRPTiAgICAgICJPSyIsSURPSywxNywxMjIsNTAsMTQNCiAgICBQVVNIQlVUVE9OICAgICAgIkNhbmNlbCIsSURDQU5DRUwsNzMsMTIyLDUwLDE0DQogICAgTFRFWFQgICAgICAgICAgICJEb21haW46IixJRENfU1RBVElDLDcsOCwzMCw5DQogICAgTFRFWFQgICAgICAgICAgICJVc2VyOiIsSURDX1NUQVRJQyw3LDIyLDMwLDkNCiAgICBMVEVYVCAgICAgICAgICAgIlBhc3N3ZDoiLElEQ19TVEFUSUMsNywzNiwzMCw5DQogICAgQ09OVFJPTCAgICAgICAgICJTVFVOIFNydjoiLElEQ19TVFVOLCJCdXR0b24iLEJTX0FVVE9DSEVDS0JPWCB8IA0KICAgICAgICAgICAgICAgICAgICBXU19UQUJTVE9QLDcsNjUsNDcsMTANCiAgICBMVEVYVCAgICAgICAgICAgIkROUzoiLElEQ19TVEFUSUMsOCw1MCwzMCw5DQogICAgTFRFWFQgICAgICAgICAgICJtcyIsSURDX1NUQVRJQyw3NSw5MiwxMyw5DQogICAgTFRFWFQgICAgICAgICAgICJDb2RlYyBwcmlvcml0eToiLElEQ19TVEFUSUMsNywxMDcsNDksOQ0KICAgIENPTlRST0wgICAgICAgICAiQUEiLElEQ19BQSwiQnV0dG9uIixCU19BVVRPQ0hFQ0tCT1ggfCBXU19UQUJTVE9QLDEwNywNCiAgICAgICAgICAgICAgICAgICAgMTA3LDI1LDEwDQpFTkQNCg0KDQojaWZuZGVmIF9NQUMNCi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vDQovLw0KLy8gVmVyc2lvbg0KLy8NCg0KVlNfVkVSU0lPTl9JTkZPIFZFUlNJT05JTkZPDQogRklMRVZFUlNJT04gMSwwLDAsMQ0KIFBST0RVQ1RWRVJTSU9OIDEsMCwwLDENCiBGSUxFRkxBR1NNQVNLIDB4M2ZMDQojaWZkZWYgX0RFQlVHDQogRklMRUZMQUdTIDB4MUwNCiNlbHNlDQogRklMRUZMQUdTIDB4MEwNCiNlbmRpZg0KIEZJTEVPUyAweDRMDQogRklMRVRZUEUgMHgxTA0KIEZJTEVTVUJUWVBFIDB4MEwNCkJFR0lODQogICAgQkxPQ0sgIlN0cmluZ0ZpbGVJbmZvIg0KICAgIEJFR0lODQogICAgICAgIEJMT0NLICIwNDA5MDRCMCINCiAgICAgICAgQkVHSU4NCiAgICAgICAgICAgIFZBTFVFICJDb21wYW55TmFtZSIsICJIUFwwIg0KICAgICAgICAgICAgVkFMVUUgIkZpbGVEZXNjcmlwdGlvbiIsICJQb2NrZXRQSiBXQ0UgTUZDIEFwcGxpY2F0aW9uXDAiDQogICAgICAgICAgICBWQUxVRSAiRmlsZVZlcnNpb24iLCAiMSwgMCwgMCwgMVwwIg0KICAgICAgICAgICAgVkFMVUUgIkludGVybmFsTmFtZSIsICJQb2NrZXRQSlwwIg0KICAgICAgICAgICAgVkFMVUUgIkxlZ2FsQ29weXJpZ2h0IiwgIkNvcHlyaWdodCCpIDIwMDhcMCINCiAgICAgICAgICAgIFZBTFVFICJMZWdhbFRyYWRlbWFya3MiLCAiXDAiDQogICAgICAgICAgICBWQUxVRSAiT3JpZ2luYWxGaWxlbmFtZSIsICJQb2NrZXRQSi5leGVcMCINCiAgICAgICAgICAgIFZBTFVFICJQcm9kdWN0TmFtZSIsICJQb2NrZXRQSiBBcHBsaWNhdGlvblwwIg0KICAgICAgICAgICAgVkFMVUUgIlByb2R1Y3RWZXJzaW9uIiwgIjEsIDAsIDAsIDFcMCINCiAgICAgICAgRU5EDQogICAgRU5EDQogICAgQkxPQ0sgIlZhckZpbGVJbmZvIg0KICAgIEJFR0lODQogICAgICAgIFZBTFVFICJUcmFuc2xhdGlvbiIsIDB4NDA5LCAxMjAwDQogICAgRU5EDQpFTkQNCg0KI2VuZGlmICAgIC8vICFfTUFDDQoNCg0KLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8NCi8vDQovLyBERVNJR05JTkZPDQovLw0KDQojaWZkZWYgQVBTVFVESU9fSU5WT0tFRA0KR1VJREVMSU5FUyBERVNJR05JTkZPIERJU0NBUkRBQkxFIA0KQkVHSU4NCiAgICBJRERfUE9DS0VUUEpfRElBTE9HLCBESUFMT0cNCiAgICBCRUdJTg0KICAgICAgICBMRUZUTUFSR0lOLCA3DQogICAgICAgIFJJR0hUTUFSR0lOLCAxMzcNCiAgICAgICAgVE9QTUFSR0lOLCA3DQogICAgICAgIEJPVFRPTU1BUkdJTiwgMTQ0DQogICAgICAgIEhPUlpHVUlERSwgMjgNCiAgICBFTkQNCg0KICAgIElERF9TRVRUSU5HLCBESUFMT0cNCiAgICBCRUdJTg0KICAgICAgICBMRUZUTUFSR0lOLCA3DQogICAgICAgIFJJR0hUTUFSR0lOLCAxMzMNCiAgICAgICAgVE9QTUFSR0lOLCA3DQogICAgICAgIEJPVFRPTU1BUkdJTiwgMTM2DQogICAgRU5EDQpFTkQNCiNlbmRpZiAgICAvLyBBUFNUVURJT19JTlZPS0VEDQoNCg0KLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8NCi8vDQovLyBCaXRtYXANCi8vDQoNCklEQl9PTkxJTkUgICAgICAgICAgICAgIEJJVE1BUCAgRElTQ0FSREFCTEUgICAgICJyZXNcXG9ubGluZS5ibXAiDQpJREJfT0ZGTElORSAgICAgICAgICAgICBCSVRNQVAgIERJU0NBUkRBQkxFICAgICAicmVzXFxvZmZsaW5lLmJtcCINCklEQl9JTlZJU0lCTEUgICAgICAgICAgIEJJVE1BUCAgRElTQ0FSREFCTEUgICAgICJyZXNcXGludmlzaWJsLmJtcCINCklEQl9BQ1RJT04gICAgICAgICAgICAgIEJJVE1BUCAgRElTQ0FSREFCTEUgICAgICJyZXNcXGFjdGlvbi5ibXAiDQpJREJfQkxBTksgICAgICAgICAgICAgICBCSVRNQVAgIERJU0NBUkRBQkxFICAgICAicmVzXFxibGFuay5ibXAiDQoNCi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vDQovLw0KLy8gTWVudWJhcg0KLy8NCg0KSURSX0FDQ19NRU5VIE1FTlUgRElTQ0FSREFCTEUgDQpCRUdJTg0KICAgIFBPUFVQICJTZXQgT25saW5lIFN0YXR1czoiDQogICAgQkVHSU4NCiAgICAgICAgTUVOVUlURU0gIiZPbmxpbmUiLCAgICAgICAgICAgICAgICAgICAgIElEQ19BQ0NfT05MSU5FDQogICAgICAgIE1FTlVJVEVNICImSW52aXNpYmxlIiwgICAgICAgICAgICAgICAgICBJRENfQUNDX0lOVklTSUJMRQ0KICAgICAgICBNRU5VSVRFTSBTRVBBUkFUT1INCiAgICAgICAgTUVOVUlURU0gIiZTZXR0aW5ncy4uLiIsICAgICAgICAgICAgICAgIElEQ19BQ0NfU0VUVElOR1MNCiAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SDQogICAgICAgIE1FTlVJVEVNICJFJnhpdCIsICAgICAgICAgICAgICAgICAgICAgICBJRE9LDQogICAgRU5EDQpFTkQNCg0KSURSX1VSSV9NRU5VIE1FTlUgRElTQ0FSREFCTEUgDQpCRUdJTg0KICAgIFBPUFVQICJVUkkgQWN0aW9uIg0KICAgIEJFR0lODQogICAgICAgIE1FTlVJVEVNICImQ2FsbC4uLiIsICAgICAgICAgICAgICAgICAgICBJRENfVVJJX0NBTEwNCiAgICAgICAgTUVOVUlURU0gIkFkZCB0byBCdWRkeSBMaXN0IiwgICAgICAgICAgIElEQ19VUklfQUREX0JVRERZDQogICAgICAgIE1FTlVJVEVNICImRGVsIEJ1ZGR5IiwgICAgICAgICAgICAgICAgICBJRENfVVJJX0RFTF9CVUREWQ0KICAgIEVORA0KRU5EDQoNCg0KLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8NCi8vDQovLyBEYXRhDQovLw0KDQpJRFJfQUNDX01FTlUgU0hNRU5VQkFSIERJU0NBUkRBQkxFIA0KQkVHSU4NCiAgICBJRFJfQUNDX01FTlUsIDEsDQogICAgSV9JTUFHRU5PTkUsIElEQ19NRU5VMSwgVEJTVEFURV9FTkFCTEVELCANCiAgICBUQlNUWUxFX0RST1BET1dOIHwgVEJTVFlMRV9BVVRPU0laRSwgSURTX0NBUF9NRU5VSVRFTTMyNzg2LCAwLCAwLA0KRU5EDQoNCklEUl9VUklfTUVOVSBTSE1FTlVCQVIgRElTQ0FSREFCTEUgDQpCRUdJTg0KICAgIElEUl9VUklfTUVOVSwgMSwNCiAgICBJX0lNQUdFTk9ORSwgSURDX01FTlUyLCBUQlNUQVRFX0VOQUJMRUQsIA0KICAgIFRCU1RZTEVfRFJPUERPV04gfCBUQlNUWUxFX0FVVE9TSVpFLCBJRFNfQ0FQX01FTlVJVEVNMzI3OTAsIDAsIDAsDQpFTkQNCg0KDQovLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLw0KLy8NCi8vIFN0cmluZyBUYWJsZQ0KLy8NCg0KU1RSSU5HVEFCTEUgRElTQ0FSREFCTEUgDQpCRUdJTg0KICAgIElEU19DQVBfT05MSU5FICAgICAgICAgICJPbmxpbmUiDQogICAgSURTX0NBUF9PRkZMSU5FICAgICAgICAgIk9mZmxpbmUiDQogICAgSURTX0NBUF9JTlZJU0lCTEUgICAgICAgIkludmlzaWJsZSINCkVORA0KDQpTVFJJTkdUQUJMRSBESVNDQVJEQUJMRSANCkJFR0lODQogICAgSURTX0NBUF9NRU5VSVRFTTMyNzg2ICAgIlNldCBPbmxpbmUgU3RhdHVzOiINCiAgICBJRFNfQ0FQX01FTlVJVEVNMzI3OTAgICAiVVJJIEFjdGlvbiINCkVORA0KDQojZW5kaWYgICAgLy8gRW5nbGlzaCAoVS5TLikgcmVzb3VyY2VzDQovLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLw0KDQoNCg0KI2lmbmRlZiBBUFNUVURJT19JTlZPS0VEDQovLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLw0KLy8NCi8vIEdlbmVyYXRlZCBmcm9tIHRoZSBURVhUSU5DTFVERSAzIHJlc291cmNlLg0KLy8NCiNkZWZpbmUgX0FGWF9OT19TUExJVFRFUl9SRVNPVVJDRVMNCiNkZWZpbmUgX0FGWF9OT19PTEVfUkVTT1VSQ0VTDQojZGVmaW5lIF9BRlhfTk9fVFJBQ0tFUl9SRVNPVVJDRVMNCiNkZWZpbmUgX0FGWF9OT19QUk9QRVJUWV9SRVNPVVJDRVMNCg0KI2lmICFkZWZpbmVkKEFGWF9SRVNPVVJDRV9ETEwpIHx8IGRlZmluZWQoQUZYX1RBUkdfRU5VKQ0KI2lmZGVmIF9XSU4zMg0KTEFOR1VBR0UgOSwgMQ0KI3ByYWdtYSBjb2RlX3BhZ2UoMTI1MikNCiNlbmRpZiAvL19XSU4zMg0KI2luY2x1ZGUgInJlc1xQb2NrZXRQSi5yYzIiICAvLyBub24tTWljcm9zb2Z0IGVNYmVkZGVkIFZpc3VhbCBDKysgZWRpdGVkIHJlc291cmNlcw0KI2luY2x1ZGUgImFmeHJlcy5yYyIgICAgICAgICAvLyBTdGFuZGFyZCBjb21wb25lbnRzDQovLyAjaW5jbHVkZSAid2NlcmVzLnJjIiAgICAgICAgIC8vIFdDRS1zcGVjaWZpYyBjb21wb25lbnRzDQojZW5kaWYNCg0KLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8NCiNlbmRpZiAgICAvLyBub3QgQVBTVFVESU9fSU5WT0tFRA0KDQo=