LyoKICogTG9jYWxlIGRlZmluaXRpb25zIGZvciBIdW5nYXJpYW4KICoKICogQ29weXJpZ2h0IDIwMDIgQWxleGFuZHJlIEp1bGxpYXJkIGZvciBDb2RlV2VhdmVycwogKgogKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCiAqIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgogKgogKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKICogTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KICoKICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwogKiBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCiAqIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EKICovCgojcHJhZ21hIGNvZGVfcGFnZSgxMjUwKQoKU1RSSU5HVEFCTEUgTEFOR1VBR0UgTEFOR19IVU5HQVJJQU4sIFNVQkxBTkdfREVGQVVMVAp7CiAgTE9DQUxFX0ZPTlRTSUdOQVRVUkUgTCJceDAwMjdceDgwMDBceDM4MDhceDAwMDBceDAwMDBceDAwMDBceDAwMDBceDAwMDBceDAwMDJceDAwMDBceDAwMDBceDA0MDBceDAwMTJceDAwMDBceDAwMDBceGM1ZDQiCiAgTE9DQUxFX0lDQUxFTkRBUlRZUEUgIjEiCiAgTE9DQUxFX0lDRU5UVVJZICIxIgogIExPQ0FMRV9JQ09VTlRSWSAiMzYiCiAgTE9DQUxFX0lDVVJSRElHSVRTICIyIgogIExPQ0FMRV9JQ1VSUkVOQ1kgIjMiCiAgTE9DQUxFX0lEQVRFICIyIgogIExPQ0FMRV9JREFZTFpFUk8gIjEiCiAgTE9DQUxFX0lERUZBVUxUQU5TSUNPREVQQUdFICIxMjUwIgogIExPQ0FMRV9JREVGQVVMVENPREVQQUdFICI4NTIiCiAgTE9DQUxFX0lERUZBVUxUQ09VTlRSWSAiMzYiCiAgTE9DQUxFX0lERUZBVUxURUJDRElDQ09ERVBBR0UgIjUwMCIKICBMT0NBTEVfSURFRkFVTFRMQU5HVUFHRSAiMDQwZSIKICBMT0NBTEVfSURFRkFVTFRNQUNDT0RFUEFHRSAiMTAwMjkiCiAgTE9DQUxFX0lERUZBVUxUVU5JWENPREVQQUdFICIyODU5MiIKICBMT0NBTEVfSURJR0lUUyAiMiIKICBMT0NBTEVfSURJR0lUU1VCU1RJVFVUSU9OICIxIgogIExPQ0FMRV9JRklSU1REQVlPRldFRUsgIjAiCiAgTE9DQUxFX0lGSVJTVFdFRUtPRllFQVIgIjAiCiAgTE9DQUxFX0lJTlRMQ1VSUkRJR0lUUyAiMiIKICBMT0NBTEVfSUxBTkdVQUdFICIwNDBlIgogIExPQ0FMRV9JTERBVEUgIjIiCiAgTE9DQUxFX0lMWkVSTyAiMSIKICBMT0NBTEVfSU1FQVNVUkUgIjAiCiAgTE9DQUxFX0lNT05MWkVSTyAiMSIKICBMT0NBTEVfSU5FR0NVUlIgIjgiCiAgTE9DQUxFX0lORUdOVU1CRVIgIjEiCiAgTE9DQUxFX0lORUdTRVBCWVNQQUNFICIxIgogIExPQ0FMRV9JTkVHU0lHTlBPU04gIjEiCiAgTE9DQUxFX0lORUdTWU1QUkVDRURFUyAiMCIKICBMT0NBTEVfSU5FVVRSQUwgIjAiCiAgTE9DQUxFX0lPUFRJT05BTENBTEVOREFSICIwIgogIExPQ0FMRV9JUEFQRVJTSVpFICI5IgogIExPQ0FMRV9JUE9TU0VQQllTUEFDRSAiMSIKICBMT0NBTEVfSVBPU1NJR05QT1NOICIxIgogIExPQ0FMRV9JUE9TU1lNUFJFQ0VERVMgIjAiCiAgTE9DQUxFX0lSRUFESU5HTEFZT1VUICIwIgogIExPQ0FMRV9JVElNRSAiMSIKICBMT0NBTEVfSVRJTUVNQVJLUE9TTiAiMCIKICBMT0NBTEVfSVRMWkVSTyAiMCIKICBMT0NBTEVfUzExNTkgImRlLiIKICBMT0NBTEVfUzIzNTkgImR1LiIKICBMT0NBTEVfU0FCQlJFVkNUUllOQU1FICJIVU4iCiAgTE9DQUxFX1NBQkJSRVZEQVlOQU1FMSAiSCIKICBMT0NBTEVfU0FCQlJFVkRBWU5BTUUyICJLIgogIExPQ0FMRV9TQUJCUkVWREFZTkFNRTMgIlN6ZSIKICBMT0NBTEVfU0FCQlJFVkRBWU5BTUU0ICJDcyIKICBMT0NBTEVfU0FCQlJFVkRBWU5BTUU1ICJQIgogIExPQ0FMRV9TQUJCUkVWREFZTkFNRTYgIlN6byIKICBMT0NBTEVfU0FCQlJFVkRBWU5BTUU3ICJWIgogIExPQ0FMRV9TQUJCUkVWTEFOR05BTUUgIkhVTiIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTEgImphbi4iCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUUyICJmZWJyLiIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTMgIm3hcmMuIgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FNCAi4XByLiIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTUgIm3hai4iCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUU2ICJq+m4uIgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FNyAiavpsLiIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTggImF1Zy4iCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUU5ICJzemVwdC4iCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUUxMCAib2t0LiIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTExICJub3YuIgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FMTIgImRlYy4iCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUUxMyAiIgogIExPQ0FMRV9TQ09VTlRSWSAiSHVuZ2FyeSIKICBMT0NBTEVfU0NVUlJFTkNZICJGdCIKICBMT0NBTEVfU0RBVEUgIi4iCiAgTE9DQUxFX1NEQVlOQU1FMSAiaOl0ZvUiCiAgTE9DQUxFX1NEQVlOQU1FMiAia2VkZCIKICBMT0NBTEVfU0RBWU5BTUUzICJzemVyZGEiCiAgTE9DQUxFX1NEQVlOQU1FNCAiY3P8dPZydPZrIgogIExPQ0FMRV9TREFZTkFNRTUgInDpbnRlayIKICBMT0NBTEVfU0RBWU5BTUU2ICJzem9tYmF0IgogIExPQ0FMRV9TREFZTkFNRTcgInZhc+FybmFwIgogIExPQ0FMRV9TREVDSU1BTCAiLCIKICBMT0NBTEVfU0VOR0NPVU5UUlkgIkh1bmdhcnkiCiAgTE9DQUxFX1NFTkdDVVJSTkFNRSAiSHVuZ2FyaWFuIEZvcmludCIKICBMT0NBTEVfU0VOR0xBTkdVQUdFICJIdW5nYXJpYW4iCiAgTE9DQUxFX1NHUk9VUElORyAiMzswIgogIExPQ0FMRV9TSU5UTFNZTUJPTCAiSFVGIgogIExPQ0FMRV9TSVNPMzE2NkNUUllOQU1FICJIVSIKICBMT0NBTEVfU0lTTzYzOUxBTkdOQU1FICJodSIKICBMT0NBTEVfU0xBTkdVQUdFICJIdW5nYXJpYW4iCiAgTE9DQUxFX1NMSVNUICI7IgogIExPQ0FMRV9TTE9OR0RBVEUgInl5eXkuIE1NTU0gZC4iCiAgTE9DQUxFX1NNT05ERUNJTUFMU0VQICIsIgogIExPQ0FMRV9TTU9OR1JPVVBJTkcgIjM7MCIKICBMT0NBTEVfU01PTlRITkFNRTEgImphbnXhciIKICBMT0NBTEVfU01PTlRITkFNRTIgImZlYnJ14XIiCiAgTE9DQUxFX1NNT05USE5BTUUzICJt4XJjaXVzIgogIExPQ0FMRV9TTU9OVEhOQU1FNCAi4XByaWxpcyIKICBMT0NBTEVfU01PTlRITkFNRTUgIm3hanVzIgogIExPQ0FMRV9TTU9OVEhOQU1FNiAiavpuaXVzIgogIExPQ0FMRV9TTU9OVEhOQU1FNyAiavpsaXVzIgogIExPQ0FMRV9TTU9OVEhOQU1FOCAiYXVndXN6dHVzIgogIExPQ0FMRV9TTU9OVEhOQU1FOSAic3plcHRlbWJlciIKICBMT0NBTEVfU01PTlRITkFNRTEwICJva3TzYmVyIgogIExPQ0FMRV9TTU9OVEhOQU1FMTEgIm5vdmVtYmVyIgogIExPQ0FMRV9TTU9OVEhOQU1FMTIgImRlY2VtYmVyIgogIExPQ0FMRV9TTU9OVEhOQU1FMTMgIiIKICBMT0NBTEVfU01PTlRIT1VTQU5EU0VQICKgIgogIExPQ0FMRV9TTkFNRSAiaHUtSFUiCiAgTE9DQUxFX1NOQVRJVkVDVFJZTkFNRSAiTWFneWFyb3JzeuFnIgogIExPQ0FMRV9TTkFUSVZFQ1VSUk5BTUUgIkZvcmludCIKICBMT0NBTEVfU05BVElWRURJR0lUUyAiMDEyMzQ1Njc4OSIKICBMT0NBTEVfU05BVElWRUxBTkdOQU1FICJNYWd5YXIiCiAgTE9DQUxFX1NORUdBVElWRVNJR04gIi0iCiAgTE9DQUxFX1NQT1NJVElWRVNJR04gIiIKICBMT0NBTEVfU1NDUklQVFMgIkxhdG47IgogIExPQ0FMRV9TU0hPUlREQVRFICJ5eXl5LiBNTS4gZGQuIgogIExPQ0FMRV9TU09SVE5BTUUgIkRlZmF1bHQiCiAgTE9DQUxFX1NUSE9VU0FORCAioCIKICBMT0NBTEVfU1RJTUUgIjoiCiAgTE9DQUxFX1NUSU1FRk9STUFUICJIOm1tOnNzIgogIExPQ0FMRV9TWUVBUk1PTlRIICJ5eXl5LiBNTU1NIgoKICBMR1JQSURfV0VTVEVSTl9FVVJPUEUrTEdSUElEX1JFU19CQVNFICJXZXN0ZXJuIEV1cm9wZSBhbmQgVW5pdGVkIFN0YXRlcyIKICBMR1JQSURfQ0VOVFJBTF9FVVJPUEUrTEdSUElEX1JFU19CQVNFICJDZW50cmFsIEV1cm9wZSIKICBMR1JQSURfQkFMVElDK0xHUlBJRF9SRVNfQkFTRSAiQmFsdGljIgogIExHUlBJRF9HUkVFSytMR1JQSURfUkVTX0JBU0UgIkdyZWVrIgogIExHUlBJRF9DWVJJTExJQytMR1JQSURfUkVTX0JBU0UgIkN5cmlsbGljIgogIExHUlBJRF9UVVJLSVNIK0xHUlBJRF9SRVNfQkFTRSAiVHVya2ljIgogIExHUlBJRF9KQVBBTkVTRStMR1JQSURfUkVTX0JBU0UgIkphcGFuZXNlIgogIExHUlBJRF9LT1JFQU4rTEdSUElEX1JFU19CQVNFICJLb3JlYW4iCiAgTEdSUElEX1RSQURJVElPTkFMX0NISU5FU0UrTEdSUElEX1JFU19CQVNFICJUcmFkaXRpb25hbCBDaGluZXNlIgogIExHUlBJRF9TSU1QTElGSUVEX0NISU5FU0UrTEdSUElEX1JFU19CQVNFICJTaW1wbGlmaWVkIENoaW5lc2UiCiAgTEdSUElEX1RIQUkrTEdSUElEX1JFU19CQVNFICJUaGFpIgogIExHUlBJRF9IRUJSRVcrTEdSUElEX1JFU19CQVNFICJIZWJyZXciCiAgTEdSUElEX0FSQUJJQytMR1JQSURfUkVTX0JBU0UgIkFyYWJpYyIgCiAgTEdSUElEX1ZJRVROQU1FU0UrTEdSUElEX1JFU19CQVNFICJWaWV0bmFtZXNlIgogIExHUlBJRF9JTkRJQytMR1JQSURfUkVTX0JBU0UgIkluZGljIgogIExHUlBJRF9HRU9SR0lBTitMR1JQSURfUkVTX0JBU0UgIkdlb3JnaWFuIgogIExHUlBJRF9BUk1FTklBTitMR1JQSURfUkVTX0JBU0UgIkFybWVuaWFuIgp9Cg==