LyoKICogTG9jYWxlIGRlZmluaXRpb25zIGZvciBHcmVlawogKgogKiBDb3B5cmlnaHQgMjAwMiBBbGV4YW5kcmUgSnVsbGlhcmQgZm9yIENvZGVXZWF2ZXJzCiAqCiAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwogKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKICogdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiAqCiAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAogKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgogKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQogKiBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgogKgogKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCiAqIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgIDAyMTExLTEzMDcgIFVTQQogKi8KCiNwcmFnbWEgY29kZV9wYWdlKDEyNTMpCgpTVFJJTkdUQUJMRSBMQU5HVUFHRSBMQU5HX0dSRUVLLCBTVUJMQU5HX0RFRkFVTFQKewogIExPQ0FMRV9GT05UU0lHTkFUVVJFIEwiXHgwMDhiXHg4MDAwXHgzODQ5XHgxMDAwXHgwMDAwXHgwMDAwXHgwMDAwXHgwMDAwXHgwMDA4XHgwMDAwXHgwMDAwXHgxMDAwXHgwMDA4XHgwMDAwXHgwMDAwXHgxMDAxIgogIExPQ0FMRV9JQ0FMRU5EQVJUWVBFICIxIgogIExPQ0FMRV9JQ0VOVFVSWSAiMSIKICBMT0NBTEVfSUNPVU5UUlkgIjMwIgogIExPQ0FMRV9JQ1VSUkRJR0lUUyAiMiIKICBMT0NBTEVfSUNVUlJFTkNZICIzIgogIExPQ0FMRV9JREFURSAiMSIKICBMT0NBTEVfSURBWUxaRVJPICIwIgogIExPQ0FMRV9JREVGQVVMVEFOU0lDT0RFUEFHRSAiMTI1MyIKICBMT0NBTEVfSURFRkFVTFRDT0RFUEFHRSAiNzM3IgogIExPQ0FMRV9JREVGQVVMVENPVU5UUlkgIjMwIgogIExPQ0FMRV9JREVGQVVMVEVCQ0RJQ0NPREVQQUdFICIyMDI3MyIKICBMT0NBTEVfSURFRkFVTFRMQU5HVUFHRSAiMDQwOCIKICBMT0NBTEVfSURFRkFVTFRNQUNDT0RFUEFHRSAiMTAwMDYiCiAgTE9DQUxFX0lERUZBVUxUVU5JWENPREVQQUdFICIyODU5NyIKICBMT0NBTEVfSURJR0lUUyAiMiIKICBMT0NBTEVfSURJR0lUU1VCU1RJVFVUSU9OICIxIgogIExPQ0FMRV9JRklSU1REQVlPRldFRUsgIjAiCiAgTE9DQUxFX0lGSVJTVFdFRUtPRllFQVIgIjAiCiAgTE9DQUxFX0lJTlRMQ1VSUkRJR0lUUyAiMiIKICBMT0NBTEVfSUxBTkdVQUdFICIwNDA4IgogIExPQ0FMRV9JTERBVEUgIjEiCiAgTE9DQUxFX0lMWkVSTyAiMSIKICBMT0NBTEVfSU1FQVNVUkUgIjAiCiAgTE9DQUxFX0lNT05MWkVSTyAiMCIKICBMT0NBTEVfSU5FR0NVUlIgIjgiCiAgTE9DQUxFX0lORUdOVU1CRVIgIjEiCiAgTE9DQUxFX0lORUdTRVBCWVNQQUNFICIxIgogIExPQ0FMRV9JTkVHU0lHTlBPU04gIjEiCiAgTE9DQUxFX0lORUdTWU1QUkVDRURFUyAiMCIKICBMT0NBTEVfSU9QVElPTkFMQ0FMRU5EQVIgIjAiCiAgTE9DQUxFX0lQQVBFUlNJWkUgIjkiCiAgTE9DQUxFX0lQT1NTRVBCWVNQQUNFICIxIgogIExPQ0FMRV9JUE9TU0lHTlBPU04gIjEiCiAgTE9DQUxFX0lQT1NTWU1QUkVDRURFUyAiMCIKICBMT0NBTEVfSVRJTUUgIjAiCiAgTE9DQUxFX0lUSU1FTUFSS1BPU04gIjAiCiAgTE9DQUxFX0lUTFpFUk8gIjAiCiAgTE9DQUxFX1MxMTU5ICLw7CIKICBMT0NBTEVfUzIzNTkgIuzsIgogIExPQ0FMRV9TQUJCUkVWQ1RSWU5BTUUgIkdSQyIKICBMT0NBTEVfU0FCQlJFVkRBWU5BTUUxICLE5fUiCiAgTE9DQUxFX1NBQkJSRVZEQVlOQU1FMiAi1PHpIgogIExPQ0FMRV9TQUJCUkVWREFZTkFNRTMgItTl9CIKICBMT0NBTEVfU0FCQlJFVkRBWU5BTUU0ICLQ5ewiCiAgTE9DQUxFX1NBQkJSRVZEQVlOQU1FNSAi0OHxIgogIExPQ0FMRV9TQUJCUkVWREFZTkFNRTYgItPh4iIKICBMT0NBTEVfU0FCQlJFVkRBWU5BTUU3ICLK9fEiCiAgTE9DQUxFX1NBQkJSRVZMQU5HTkFNRSAiRUxMIgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FMSAiyeHtIgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FMiAi1uXiIgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FMyAizOHxIgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FNCAiwfDxIgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FNSAizOH6IgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FNiAiye/17SIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTcgIsnv9esiCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUU4ICLB9eMiCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUU5ICLT5fAiCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUUxMCAiz+r0IgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FMTEgIs3v5SIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTEyICLE5eoiCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUUxMyAiIgogIExPQ0FMRV9TQ09VTlRSWSAiR3JlZWNlIgogIExPQ0FMRV9TQ1VSUkVOQ1kgIoAiCiAgTE9DQUxFX1NEQVRFICIvIgogIExPQ0FMRV9TREFZTkFNRTEgIsTl9fTd8eEiCiAgTE9DQUxFX1NEQVlOQU1FMiAi1PHf9OciCiAgTE9DQUxFX1NEQVlOQU1FMyAi1OX03PH05yIKICBMT0NBTEVfU0RBWU5BTUU0ICLQ3ezw9OciCiAgTE9DQUxFX1NEQVlOQU1FNSAi0OHx4fPq5fXeIgogIExPQ0FMRV9TREFZTkFNRTYgItPc4uLh9O8iCiAgTE9DQUxFX1NEQVlOQU1FNyAiyvXx6eHq3iIKICBMT0NBTEVfU0RFQ0lNQUwgIiwiCiAgTE9DQUxFX1NFTkdDT1VOVFJZICJHcmVlY2UiCiAgTE9DQUxFX1NFTkdDVVJSTkFNRSAiRXVybyIKICBMT0NBTEVfU0VOR0xBTkdVQUdFICJHcmVlayIKICBMT0NBTEVfU0dST1VQSU5HICIzOzAiCiAgTE9DQUxFX1NJTlRMU1lNQk9MICJFVVIiCiAgTE9DQUxFX1NJU08zMTY2Q1RSWU5BTUUgIkdSIgogIExPQ0FMRV9TSVNPNjM5TEFOR05BTUUgImVsIgogIExPQ0FMRV9TTEFOR1VBR0UgIkdyZWVrIgogIExPQ0FMRV9TTElTVCAiOyIKICBMT0NBTEVfU0xPTkdEQVRFICJkZGRkLCBkIE1NTU0geXl5eSIKICBMT0NBTEVfU01PTkRFQ0lNQUxTRVAgIiwiCiAgTE9DQUxFX1NNT05HUk9VUElORyAiMzswIgogIExPQ0FMRV9TTU9OVEhOQU1FMSAiyeHt7/Xc8env8iIKICBMT0NBTEVfU01PTlRITkFNRTIgItbl4vHv9dzx6e/yIgogIExPQ0FMRV9TTU9OVEhOQU1FMyAizNzx9Onv8iIKICBMT0NBTEVfU01PTlRITkFNRTQgIsHw8d/r6e/yIgogIExPQ0FMRV9TTU9OVEhOQU1FNSAizNzp7/IiCiAgTE9DQUxFX1NNT05USE5BTUU2ICLJ7/3t6e/yIgogIExPQ0FMRV9TTU9OVEhOQU1FNyAiye/96+nv8iIKICBMT0NBTEVfU01PTlRITkFNRTggIsH94+/18/Tv8iIKICBMT0NBTEVfU01PTlRITkFNRTkgItPl8PTd7OLx6e/yIgogIExPQ0FMRV9TTU9OVEhOQU1FMTAgIs/q9P7i8env8iIKICBMT0NBTEVfU01PTlRITkFNRTExICLN793s4vHp7/IiCiAgTE9DQUxFX1NNT05USE5BTUUxMiAixOXq3ezi8env8iIKICBMT0NBTEVfU01PTlRITkFNRTEzICIiCiAgTE9DQUxFX1NNT05USE9VU0FORFNFUCAiLiIKICBMT0NBTEVfU05BVElWRUNUUllOQU1FICLF6+vc5OEiCiAgTE9DQUxFX1NOQVRJVkVDVVJSTkFNRSAi5fXx/iIKICBMT0NBTEVfU05BVElWRURJR0lUUyAiMDEyMzQ1Njc4OSIKICBMT0NBTEVfU05BVElWRUxBTkdOQU1FICLl6+vn7enq3CIKICBMT0NBTEVfU05FR0FUSVZFU0lHTiAiLSIKICBMT0NBTEVfU1BPU0lUSVZFU0lHTiAiIgogIExPQ0FMRV9TU0hPUlREQVRFICJkL00veXl5eSIKICBMT0NBTEVfU1NPUlROQU1FICJEZWZhdWx0IgogIExPQ0FMRV9TVEhPVVNBTkQgIi4iCiAgTE9DQUxFX1NUSU1FICI6IgogIExPQ0FMRV9TVElNRUZPUk1BVCAiaDptbTpzcyB0dCIKICBMT0NBTEVfU1lFQVJNT05USCAiTU1NTSB5eXl5IgoKICBMR1JQSURfV0VTVEVSTl9FVVJPUEUrTEdSUElEX1JFU19CQVNFICJXZXN0ZXJuIEV1cm9wZSBhbmQgVW5pdGVkIFN0YXRlcyIKICBMR1JQSURfQ0VOVFJBTF9FVVJPUEUrTEdSUElEX1JFU19CQVNFICJDZW50cmFsIEV1cm9wZSIKICBMR1JQSURfQkFMVElDK0xHUlBJRF9SRVNfQkFTRSAiQmFsdGljIgogIExHUlBJRF9HUkVFSytMR1JQSURfUkVTX0JBU0UgIkdyZWVrIgogIExHUlBJRF9DWVJJTExJQytMR1JQSURfUkVTX0JBU0UgIkN5cmlsbGljIgogIExHUlBJRF9UVVJLSVNIK0xHUlBJRF9SRVNfQkFTRSAiVHVya2ljIgogIExHUlBJRF9KQVBBTkVTRStMR1JQSURfUkVTX0JBU0UgIkphcGFuZXNlIgogIExHUlBJRF9LT1JFQU4rTEdSUElEX1JFU19CQVNFICJLb3JlYW4iCiAgTEdSUElEX1RSQURJVElPTkFMX0NISU5FU0UrTEdSUElEX1JFU19CQVNFICJUcmFkaXRpb25hbCBDaGluZXNlIgogIExHUlBJRF9TSU1QTElGSUVEX0NISU5FU0UrTEdSUElEX1JFU19CQVNFICJTaW1wbGlmaWVkIENoaW5lc2UiCiAgTEdSUElEX1RIQUkrTEdSUElEX1JFU19CQVNFICJUaGFpIgogIExHUlBJRF9IRUJSRVcrTEdSUElEX1JFU19CQVNFICJIZWJyZXciCiAgTEdSUElEX0FSQUJJQytMR1JQSURfUkVTX0JBU0UgIkFyYWJpYyIgCiAgTEdSUElEX1ZJRVROQU1FU0UrTEdSUElEX1JFU19CQVNFICJWaWV0bmFtZXNlIgogIExHUlBJRF9JTkRJQytMR1JQSURfUkVTX0JBU0UgIkluZGljIgogIExHUlBJRF9HRU9SR0lBTitMR1JQSURfUkVTX0JBU0UgIkdlb3JnaWFuIgogIExHUlBJRF9BUk1FTklBTitMR1JQSURfUkVTX0JBU0UgIkFybWVuaWFuIgp9Cg==