LyoKICogTG9jYWxlIGRlZmluaXRpb25zIGZvciBVemJlayAoTGF0aW4pCiAqCiAqIENvcHlyaWdodCAyMDAyIEFsZXhhbmRyZSBKdWxsaWFyZCBmb3IgQ29kZVdlYXZlcnMKICoKICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCiAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgogKiB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KICoKICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCiAqIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiAqCiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKICogTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQogKiBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBCiAqLwoKI3ByYWdtYSBjb2RlX3BhZ2UoMTI1NCkKClNUUklOR1RBQkxFIExBTkdVQUdFIExBTkdfVVpCRUssIFNVQkxBTkdfVVpCRUtfTEFUSU4KewogIExPQ0FMRV9GT05UU0lHTkFUVVJFIEwiXHgwMDI3XHg4MDAwXHgzODA4XHgwMDAwXHgwMDAwXHgwMDAwXHgwMDAwXHgwMDAwXHgwMDAyXHgwMDAwXHgwMDAwXHgwNDAwXHgwMDEzXHgwMDAwXHgwMDAwXHhjNWQ0IgogIExPQ0FMRV9JQ0FMRU5EQVJUWVBFICIxIgogIExPQ0FMRV9JQ0VOVFVSWSAiMSIKICBMT0NBTEVfSUNPVU5UUlkgIjciCiAgTE9DQUxFX0lDVVJSRElHSVRTICIwIgogIExPQ0FMRV9JQ1VSUkVOQ1kgIjMiCiAgTE9DQUxFX0lEQVRFICIxIgogIExPQ0FMRV9JREFZTFpFUk8gIjEiCiAgTE9DQUxFX0lERUZBVUxUQU5TSUNPREVQQUdFICIxMjU0IgogIExPQ0FMRV9JREVGQVVMVENPREVQQUdFICI4NTciCiAgTE9DQUxFX0lERUZBVUxUQ09VTlRSWSAiNyIKICBMT0NBTEVfSURFRkFVTFRFQkNESUNDT0RFUEFHRSAiNTAwIgogIExPQ0FMRV9JREVGQVVMVExBTkdVQUdFICIwNDQzIgogIExPQ0FMRV9JREVGQVVMVE1BQ0NPREVQQUdFICIxMDAyOSIKICBMT0NBTEVfSURFRkFVTFRVTklYQ09ERVBBR0UgIjI4NjA1IgogIExPQ0FMRV9JRElHSVRTICIyIgogIExPQ0FMRV9JRElHSVRTVUJTVElUVVRJT04gIjEiCiAgTE9DQUxFX0lGSVJTVERBWU9GV0VFSyAiMCIKICBMT0NBTEVfSUZJUlNUV0VFS09GWUVBUiAiMCIKICBMT0NBTEVfSUlOVExDVVJSRElHSVRTICIwIgogIExPQ0FMRV9JTEFOR1VBR0UgIjA0NDMiCiAgTE9DQUxFX0lMREFURSAiMSIKICBMT0NBTEVfSUxaRVJPICIxIgogIExPQ0FMRV9JTUVBU1VSRSAiMCIKICBMT0NBTEVfSU1PTkxaRVJPICIxIgogIExPQ0FMRV9JTkVHQ1VSUiAiOCIKICBMT0NBTEVfSU5FR05VTUJFUiAiMSIKICBMT0NBTEVfSU5FR1NFUEJZU1BBQ0UgIjEiCiAgTE9DQUxFX0lORUdTSUdOUE9TTiAiMSIKICBMT0NBTEVfSU5FR1NZTVBSRUNFREVTICIwIgogIExPQ0FMRV9JTkVVVFJBTCAiMCIKICBMT0NBTEVfSU9QVElPTkFMQ0FMRU5EQVIgIjAiCiAgTE9DQUxFX0lQQVBFUlNJWkUgIjkiCiAgTE9DQUxFX0lQT1NTRVBCWVNQQUNFICIxIgogIExPQ0FMRV9JUE9TU0lHTlBPU04gIjEiCiAgTE9DQUxFX0lQT1NTWU1QUkVDRURFUyAiMCIKICBMT0NBTEVfSVJFQURJTkdMQVlPVVQgIjAiCiAgTE9DQUxFX0lUSU1FICIxIgogIExPQ0FMRV9JVElNRU1BUktQT1NOICIwIgogIExPQ0FMRV9JVExaRVJPICIxIgogIExPQ0FMRV9TMTE1OSAiIgogIExPQ0FMRV9TMjM1OSAiIgogIExPQ0FMRV9TQUJCUkVWQ1RSWU5BTUUgIlVaQiIKICBMT0NBTEVfU0FCQlJFVkRBWU5BTUUxICJkc2guIgogIExPQ0FMRV9TQUJCUkVWREFZTkFNRTIgInNlc2guIgogIExPQ0FMRV9TQUJCUkVWREFZTkFNRTMgImNoci4iCiAgTE9DQUxFX1NBQkJSRVZEQVlOQU1FNCAicHNoLiIKICBMT0NBTEVfU0FCQlJFVkRBWU5BTUU1ICJqbS4iCiAgTE9DQUxFX1NBQkJSRVZEQVlOQU1FNiAic2guIgogIExPQ0FMRV9TQUJCUkVWREFZTkFNRTcgInlhay4iCiAgTE9DQUxFX1NBQkJSRVZMQU5HTkFNRSAiVVpCIgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FMSAieWFudmFyIgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FMiAiZmV2cmFsIgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FMyAibWFydCIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTQgImFwcmVsIgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FNSAibWF5IgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FNiAiaXl1biIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTcgIml5dWwiCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUU4ICJhdmd1c3QiCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUU5ICJzZW50eWFiciIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTEwICJva3R5YWJyIgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FMTEgIm5veWFiciIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTEyICJkZWthYnIiCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUUxMyAiIgogIExPQ0FMRV9TQ09VTlRSWSAiVXpiZWtpc3RhbiIKICBMT0NBTEVfU0NVUlJFTkNZICJzdSdtIgogIExPQ0FMRV9TREFURSAiLyIKICBMT0NBTEVfU0RBWU5BTUUxICJkdXNoYW5iYSIKICBMT0NBTEVfU0RBWU5BTUUyICJzZXNoYW5iYSIKICBMT0NBTEVfU0RBWU5BTUUzICJjaG9yc2hhbmJhIgogIExPQ0FMRV9TREFZTkFNRTQgInBheXNoYW5iYSIKICBMT0NBTEVfU0RBWU5BTUU1ICJqdW1hIgogIExPQ0FMRV9TREFZTkFNRTYgInNoYW5iYSIKICBMT0NBTEVfU0RBWU5BTUU3ICJ5YWtzaGFuYmEiCiAgTE9DQUxFX1NERUNJTUFMICIsIgogIExPQ0FMRV9TRU5HQ09VTlRSWSAiVXpiZWtpc3RhbiIKICBMT0NBTEVfU0VOR0NVUlJOQU1FICJVemJla2lzdGFuIFN1bSIKICBMT0NBTEVfU0VOR0xBTkdVQUdFICJVemJlayAoTGF0aW4pIgogIExPQ0FMRV9TR1JPVVBJTkcgIjM7MCIKICBMT0NBTEVfU0lOVExTWU1CT0wgIlVaUyIKICBMT0NBTEVfU0lTTzMxNjZDVFJZTkFNRSAiVVoiCiAgTE9DQUxFX1NJU082MzlMQU5HTkFNRSAidXoiCiAgTE9DQUxFX1NMQU5HVUFHRSAiVXpiZWsgKExhdGluKSIKICBMT0NBTEVfU0xJU1QgIjsiCiAgTE9DQUxFX1NMT05HREFURSAieXl5eSAneWlsJyBkLU1NTU0iCiAgTE9DQUxFX1NNT05ERUNJTUFMU0VQICIsIgogIExPQ0FMRV9TTU9OR1JPVVBJTkcgIjM7MCIKICBMT0NBTEVfU01PTlRITkFNRTEgInlhbnZhciIKICBMT0NBTEVfU01PTlRITkFNRTIgImZldnJhbCIKICBMT0NBTEVfU01PTlRITkFNRTMgIm1hcnQiCiAgTE9DQUxFX1NNT05USE5BTUU0ICJhcHJlbCIKICBMT0NBTEVfU01PTlRITkFNRTUgIm1heSIKICBMT0NBTEVfU01PTlRITkFNRTYgIml5dW4iCiAgTE9DQUxFX1NNT05USE5BTUU3ICJpeXVsIgogIExPQ0FMRV9TTU9OVEhOQU1FOCAiYXZndXN0IgogIExPQ0FMRV9TTU9OVEhOQU1FOSAic2VudHlhYnIiCiAgTE9DQUxFX1NNT05USE5BTUUxMCAib2t0eWFiciIKICBMT0NBTEVfU01PTlRITkFNRTExICJub3lhYnIiCiAgTE9DQUxFX1NNT05USE5BTUUxMiAiZGVrYWJyIgogIExPQ0FMRV9TTU9OVEhOQU1FMTMgIiIKICBMT0NBTEVfU01PTlRIT1VTQU5EU0VQICKgIgogIExPQ0FMRV9TTkFNRSAidXotTGF0bi1VWiIKICBMT0NBTEVfU05BVElWRUNUUllOQU1FICJVJ3piZWtpc3RvbiBSZXNwdWJsaWthc2kiCiAgTE9DQUxFX1NOQVRJVkVDVVJSTkFNRSBMIlx4MDQ0MFx4MDQ0M1x4MDQzMVx4MDQzYlx4MDQ0YyIKICBMT0NBTEVfU05BVElWRURJR0lUUyAiMDEyMzQ1Njc4OSIKICBMT0NBTEVfU05BVElWRURJU1BMQVlOQU1FICJVJ3piZWsgKFUnemJla2lzdG9uIFJlc3B1Ymxpa2FzaSkiCiAgTE9DQUxFX1NOQVRJVkVMQU5HTkFNRSAiVSd6YmVrIgogIExPQ0FMRV9TTkVHQVRJVkVTSUdOICItIgogIExPQ0FMRV9TT1BFTlRZUEVMQU5HVUFHRVRBRyAiVVpCICIKICBMT0NBTEVfU1BPU0lUSVZFU0lHTiAiIgogIExPQ0FMRV9TU0NSSVBUUyAiTGF0bjsiCiAgTE9DQUxFX1NTSE9SVERBVEUgImRkL01NIHl5eXkiCiAgTE9DQUxFX1NTSE9SVFRJTUUgIkhIOm1tIgogIExPQ0FMRV9TU09SVE5BTUUgIkRlZmF1bHQiCiAgTE9DQUxFX1NUSE9VU0FORCAioCIKICBMT0NBTEVfU1RJTUUgIjoiCiAgTE9DQUxFX1NUSU1FRk9STUFUICJISDptbTpzcyIKICBMT0NBTEVfU1lFQVJNT05USCAiTU1NTSB5eXl5IgoKICBMR1JQSURfV0VTVEVSTl9FVVJPUEUrTEdSUElEX1JFU19CQVNFICJXZXN0ZXJuIEV1cm9wZSBhbmQgVW5pdGVkIFN0YXRlcyIKICBMR1JQSURfQ0VOVFJBTF9FVVJPUEUrTEdSUElEX1JFU19CQVNFICJDZW50cmFsIEV1cm9wZSIKICBMR1JQSURfQkFMVElDK0xHUlBJRF9SRVNfQkFTRSAiQmFsdGljIgogIExHUlBJRF9HUkVFSytMR1JQSURfUkVTX0JBU0UgIkdyZWVrIgogIExHUlBJRF9DWVJJTExJQytMR1JQSURfUkVTX0JBU0UgIkN5cmlsbGljIgogIExHUlBJRF9UVVJLSVNIK0xHUlBJRF9SRVNfQkFTRSAiVHVya2ljIgogIExHUlBJRF9KQVBBTkVTRStMR1JQSURfUkVTX0JBU0UgIkphcGFuZXNlIgogIExHUlBJRF9LT1JFQU4rTEdSUElEX1JFU19CQVNFICJLb3JlYW4iCiAgTEdSUElEX1RSQURJVElPTkFMX0NISU5FU0UrTEdSUElEX1JFU19CQVNFICJUcmFkaXRpb25hbCBDaGluZXNlIgogIExHUlBJRF9TSU1QTElGSUVEX0NISU5FU0UrTEdSUElEX1JFU19CQVNFICJTaW1wbGlmaWVkIENoaW5lc2UiCiAgTEdSUElEX1RIQUkrTEdSUElEX1JFU19CQVNFICJUaGFpIgogIExHUlBJRF9IRUJSRVcrTEdSUElEX1JFU19CQVNFICJIZWJyZXciCiAgTEdSUElEX0FSQUJJQytMR1JQSURfUkVTX0JBU0UgIkFyYWJpYyIgCiAgTEdSUElEX1ZJRVROQU1FU0UrTEdSUElEX1JFU19CQVNFICJWaWV0bmFtZXNlIgogIExHUlBJRF9JTkRJQytMR1JQSURfUkVTX0JBU0UgIkluZGljIgogIExHUlBJRF9HRU9SR0lBTitMR1JQSURfUkVTX0JBU0UgIkdlb3JnaWFuIgogIExHUlBJRF9BUk1FTklBTitMR1JQSURfUkVTX0JBU0UgIkFybWVuaWFuIgp9Cg==