LyoKICogTG9jYWxlIGRlZmluaXRpb25zIGZvciBUYXRhcgogKgogKiBDb3B5cmlnaHQgMjAwMiBBbGV4YW5kcmUgSnVsbGlhcmQgZm9yIENvZGVXZWF2ZXJzCiAqCiAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwogKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKICogdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiAqCiAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAogKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgogKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQogKiBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgogKgogKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCiAqIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKICogRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3QsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQQogKi8KCiNwcmFnbWEgY29kZV9wYWdlKDEyNTEpCgpTVFJJTkdUQUJMRSBMQU5HVUFHRSBMQU5HX1RBVEFSLCBTVUJMQU5HX0RFRkFVTFQKewogIExPQ0FMRV9GT05UU0lHTkFUVVJFIEwiXHgwMjAzXHg4MDAwXHgzODQ4XHgwMDAwXHgwMDAwXHgwMDAwXHgwMDAwXHgwMDAwXHgwMDA0XHgwMDAwXHgwMDAwXHgwMDAyXHgwMDA0XHgwMDAwXHgwMDAwXHgwMjAyIgogIExPQ0FMRV9JQ0FMRU5EQVJUWVBFICIxIgogIExPQ0FMRV9JQ0VOVFVSWSAiMSIKICBMT0NBTEVfSUNPVU5UUlkgIjciCiAgTE9DQUxFX0lDVVJSRElHSVRTICIyIgogIExPQ0FMRV9JQ1VSUkVOQ1kgIjMiCiAgTE9DQUxFX0lEQVRFICIxIgogIExPQ0FMRV9JREFZTFpFUk8gIjEiCiAgTE9DQUxFX0lERUZBVUxUQU5TSUNPREVQQUdFICIxMjUxIgogIExPQ0FMRV9JREVGQVVMVENPREVQQUdFICI4NjYiCiAgTE9DQUxFX0lERUZBVUxUQ09VTlRSWSAiNyIKICBMT0NBTEVfSURFRkFVTFRFQkNESUNDT0RFUEFHRSAiMjA4ODAiCiAgTE9DQUxFX0lERUZBVUxUTEFOR1VBR0UgIjA0NDQiCiAgTE9DQUxFX0lERUZBVUxUTUFDQ09ERVBBR0UgIjEwMDA3IgogIExPQ0FMRV9JREVGQVVMVFVOSVhDT0RFUEFHRSAiMjg1OTUiICAvKiBGSVhNRSAqLwogIExPQ0FMRV9JRElHSVRTICIyIgogIExPQ0FMRV9JRElHSVRTVUJTVElUVVRJT04gIjEiCiAgTE9DQUxFX0lGSVJTVERBWU9GV0VFSyAiMCIKICBMT0NBTEVfSUZJUlNUV0VFS09GWUVBUiAiMCIKICBMT0NBTEVfSUlOVExDVVJSRElHSVRTICIyIgogIExPQ0FMRV9JTEFOR1VBR0UgIjA0NDQiCiAgTE9DQUxFX0lMREFURSAiMSIKICBMT0NBTEVfSUxaRVJPICIxIgogIExPQ0FMRV9JTUVBU1VSRSAiMCIKICBMT0NBTEVfSU1PTkxaRVJPICIxIgogIExPQ0FMRV9JTkVHQ1VSUiAiOCIKICBMT0NBTEVfSU5FR05VTUJFUiAiMSIKICBMT0NBTEVfSU5FR1NFUEJZU1BBQ0UgIjEiCiAgTE9DQUxFX0lORUdTSUdOUE9TTiAiMSIKICBMT0NBTEVfSU5FR1NZTVBSRUNFREVTICIwIgogIExPQ0FMRV9JT1BUSU9OQUxDQUxFTkRBUiAiMCIKICBMT0NBTEVfSVBBUEVSU0laRSAiOSIKICBMT0NBTEVfSVBPU1NFUEJZU1BBQ0UgIjEiCiAgTE9DQUxFX0lQT1NTSUdOUE9TTiAiMSIKICBMT0NBTEVfSVBPU1NZTVBSRUNFREVTICIwIgogIExPQ0FMRV9JVElNRSAiMSIKICBMT0NBTEVfSVRJTUVNQVJLUE9TTiAiMCIKICBMT0NBTEVfSVRMWkVSTyAiMCIKICBMT0NBTEVfUzExNTkgIiIKICBMT0NBTEVfUzIzNTkgIiIKICBMT0NBTEVfU0FCQlJFVkNUUllOQU1FICJUQVQiCiAgTE9DQUxFX1NBQkJSRVZEQVlOQU1FMSBMIlx4MDQxNFx4MDRhZlx4MDQ0OCIKICBMT0NBTEVfU0FCQlJFVkRBWU5BTUUyICLR6PgiCiAgTE9DQUxFX1NBQkJSRVZEQVlOQU1FMyBMIlx4MDQyN1x4MDRkOVx4MDQ0MFx4MDQ0OCIKICBMT0NBTEVfU0FCQlJFVkRBWU5BTUU0IEwiXHgwNDFmXHgwNGQ5XHgwNDNkXHgwNDk3IgogIExPQ0FMRV9TQUJCUkVWREFZTkFNRTUgTCJceDA0OTZceDA0M2VceDA0M2MiCiAgTE9DQUxFX1NBQkJSRVZEQVlOQU1FNiAi2OjsIgogIExPQ0FMRV9TQUJCUkVWREFZTkFNRTcgIt/q+CIKICBMT0NBTEVfU0FCQlJFVkxBTkdOQU1FICJUVFQiCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUUxICLD++nt4iIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTIgItTl4iIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTMgIszg8CIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTQgIsDv8CIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTUgIszg6SIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTYgIsj+7SIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTcgIsj+6yIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTggIsDi4yIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTkgItHl7SIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTEwICLO6vIiCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUUxMSAize7/IgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FMTIgIsTl6iIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTEzICIiCiAgTE9DQUxFX1NDT1VOVFJZICJUYXRhcnN0YW4iCiAgTE9DQUxFX1NDVVJSRU5DWSAi8C4iCiAgTE9DQUxFX1NEQVRFICIuIgogIExPQ0FMRV9TREFZTkFNRTEgTCJceDA0MTRceDA0YWZceDA0NDhceDA0ZDlceDA0M2NceDA0MzFceDA0MzUiCiAgTE9DQUxFX1NEQVlOQU1FMiBMIlx4MDQyMVx4MDQzOFx4MDQ0OFx4MDRkOVx4MDQzY1x4MDQzMVx4MDQzNSIKICBMT0NBTEVfU0RBWU5BTUUzIEwiXHgwNDI3XHgwNGQ5XHgwNDQwXHgwNDQ4XHgwNGQ5XHgwNDNjXHgwNDMxXHgwNDM1IgogIExPQ0FMRV9TREFZTkFNRTQgTCJceDA0MWZceDA0ZDlceDA0M2RceDA0OTdceDA0MzVceDA0NDhceDA0ZDlceDA0M2NceDA0MzFceDA0MzUiCiAgTE9DQUxFX1NEQVlOQU1FNSBMIlx4MDQ5Nlx4MDQzZVx4MDQzY1x4MDQzM1x4MDQzMCIKICBMT0NBTEVfU0RBWU5BTUU2IEwiXHgwNDI4XHgwNDM4XHgwNDNjXHgwNDMxXHgwNGQ5IgogIExPQ0FMRV9TREFZTkFNRTcgTCJceDA0MmZceDA0M2FceDA0NDhceDA0ZDlceDA0M2NceDA0MzFceDA0MzUiCiAgTE9DQUxFX1NERUNJTUFMICIsIgogIExPQ0FMRV9TRU5HQ09VTlRSWSAiVGF0YXJzdGFuIgogIExPQ0FMRV9TRU5HQ1VSUk5BTUUgIlJ1c3NpYW4gUnVibGUiCiAgTE9DQUxFX1NFTkdMQU5HVUFHRSAiVGF0YXIiCiAgTE9DQUxFX1NHUk9VUElORyAiMzswIgogIExPQ0FMRV9TSU5UTFNZTUJPTCAiUlVSIgogIExPQ0FMRV9TSVNPMzE2NkNUUllOQU1FICJUQSIKICBMT0NBTEVfU0lTTzYzOUxBTkdOQU1FICJ0dCIKICBMT0NBTEVfU0xBTkdVQUdFICJUYXRhciIKICBMT0NBTEVfU0xJU1QgIjsiCiAgTE9DQUxFX1NMT05HREFURSAiZCBNTU1NIHl5eXkiCiAgTE9DQUxFX1NNT05ERUNJTUFMU0VQICIsIgogIExPQ0FMRV9TTU9OR1JPVVBJTkcgIjM7MCIKICBMT0NBTEVfU01PTlRITkFNRTEgIsP76e3i4PD8IgogIExPQ0FMRV9TTU9OVEhOQU1FMiAi1OXi8ODr/CIKICBMT0NBTEVfU01PTlRITkFNRTMgIszg8PIiCiAgTE9DQUxFX1NNT05USE5BTUU0ICLA7/Dl6/wiCiAgTE9DQUxFX1NNT05USE5BTUU1ICLM4OkiCiAgTE9DQUxFX1NNT05USE5BTUU2ICLI/u38IgogIExPQ0FMRV9TTU9OVEhOQU1FNyAiyP7r/CIKICBMT0NBTEVfU01PTlRITkFNRTggIsDi4/Px8iIKICBMT0NBTEVfU01PTlRITkFNRTkgItHl7fL/4fD8IgogIExPQ0FMRV9TTU9OVEhOQU1FMTAgIs7q8v/h8PwiCiAgTE9DQUxFX1NNT05USE5BTUUxMSAize7/4fD8IgogIExPQ0FMRV9TTU9OVEhOQU1FMTIgIsTl6uDh8PwiCiAgTE9DQUxFX1NNT05USE5BTUUxMyAiIgogIExPQ0FMRV9TTU9OVEhPVVNBTkRTRVAgIqAiCiAgTE9DQUxFX1NOQU1FICJ0dC1UQSIKICBMT0NBTEVfU05BVElWRUNUUllOQU1FICLS4PLg8PHy4O0iCiAgTE9DQUxFX1NOQVRJVkVDVVJSTkFNRSAi8PPh6/wiCiAgTE9DQUxFX1NOQVRJVkVESUdJVFMgIjAxMjM0NTY3ODkiCiAgTE9DQUxFX1NOQVRJVkVMQU5HTkFNRSAi0uDy4PAiCiAgTE9DQUxFX1NORUdBVElWRVNJR04gIi0iCiAgTE9DQUxFX1NQT1NJVElWRVNJR04gIiIKICBMT0NBTEVfU1NDUklQVFMgIkxhdG47IiAvKiBGSVhNRT8gKi8KICBMT0NBTEVfU1NIT1JUREFURSAiZGQuTU0ueXl5eSIKICBMT0NBTEVfU1NPUlROQU1FICJEZWZhdWx0IgogIExPQ0FMRV9TVEhPVVNBTkQgIqAiCiAgTE9DQUxFX1NUSU1FICI6IgogIExPQ0FMRV9TVElNRUZPUk1BVCAiSDptbTpzcyIKICBMT0NBTEVfU1lFQVJNT05USCAiTU1NTSB5eXl5IgoKICBMR1JQSURfV0VTVEVSTl9FVVJPUEUrTEdSUElEX1JFU19CQVNFICJXZXN0ZXJuIEV1cm9wZSBhbmQgVW5pdGVkIFN0YXRlcyIKICBMR1JQSURfQ0VOVFJBTF9FVVJPUEUrTEdSUElEX1JFU19CQVNFICJDZW50cmFsIEV1cm9wZSIKICBMR1JQSURfQkFMVElDK0xHUlBJRF9SRVNfQkFTRSAiQmFsdGljIgogIExHUlBJRF9HUkVFSytMR1JQSURfUkVTX0JBU0UgIkdyZWVrIgogIExHUlBJRF9DWVJJTExJQytMR1JQSURfUkVTX0JBU0UgIkN5cmlsbGljIgogIExHUlBJRF9UVVJLSVNIK0xHUlBJRF9SRVNfQkFTRSAiVHVya2ljIgogIExHUlBJRF9KQVBBTkVTRStMR1JQSURfUkVTX0JBU0UgIkphcGFuZXNlIgogIExHUlBJRF9LT1JFQU4rTEdSUElEX1JFU19CQVNFICJLb3JlYW4iCiAgTEdSUElEX1RSQURJVElPTkFMX0NISU5FU0UrTEdSUElEX1JFU19CQVNFICJUcmFkaXRpb25hbCBDaGluZXNlIgogIExHUlBJRF9TSU1QTElGSUVEX0NISU5FU0UrTEdSUElEX1JFU19CQVNFICJTaW1wbGlmaWVkIENoaW5lc2UiCiAgTEdSUElEX1RIQUkrTEdSUElEX1JFU19CQVNFICJUaGFpIgogIExHUlBJRF9IRUJSRVcrTEdSUElEX1JFU19CQVNFICJIZWJyZXciCiAgTEdSUElEX0FSQUJJQytMR1JQSURfUkVTX0JBU0UgIkFyYWJpYyIgCiAgTEdSUElEX1ZJRVROQU1FU0UrTEdSUElEX1JFU19CQVNFICJWaWV0bmFtZXNlIgogIExHUlBJRF9JTkRJQytMR1JQSURfUkVTX0JBU0UgIkluZGljIgogIExHUlBJRF9HRU9SR0lBTitMR1JQSURfUkVTX0JBU0UgIkdlb3JnaWFuIgogIExHUlBJRF9BUk1FTklBTitMR1JQSURfUkVTX0JBU0UgIkFybWVuaWFuIgp9Cg==