LyoKICogTG9jYWxlIGRlZmluaXRpb25zIGZvciBLb3JlYW4KICoKICogQ29weXJpZ2h0IDIwMDIgQWxleGFuZHJlIEp1bGxpYXJkIGZvciBDb2RlV2VhdmVycwogKgogKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCiAqIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgogKgogKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKICogTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KICoKICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwogKiBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCiAqIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EKICovCgojcHJhZ21hIGNvZGVfcGFnZSg5NDkpCgpTVFJJTkdUQUJMRSBMQU5HVUFHRSBMQU5HX0tPUkVBTiwgU1VCTEFOR19LT1JFQU4KewogIExPQ0FMRV9GT05UU0lHTkFUVVJFIEwiXHgwMmE3XHg4MDAwXHg3Y2Y5XHgzOWQ3XHgwMDEwXHgwMDAwXHgwMDAwXHgwMDAwXHgwMDAwXHgwMDA4XHgwMDAwXHgwMDAwXHgwMDAwXHgwMDA4XHgwMDAwXHgwMDAwIgogIExPQ0FMRV9JQ0FMRU5EQVJUWVBFICIxIgogIExPQ0FMRV9JQ0VOVFVSWSAiMSIKICBMT0NBTEVfSUNPVU5UUlkgIjgyIgogIExPQ0FMRV9JQ1VSUkRJR0lUUyAiMCIKICBMT0NBTEVfSUNVUlJFTkNZICIwIgogIExPQ0FMRV9JREFURSAiMiIKICBMT0NBTEVfSURBWUxaRVJPICIxIgogIExPQ0FMRV9JREVGQVVMVEFOU0lDT0RFUEFHRSAiOTQ5IgogIExPQ0FMRV9JREVGQVVMVENPREVQQUdFICI5NDkiCiAgTE9DQUxFX0lERUZBVUxUQ09VTlRSWSAiODIiCiAgTE9DQUxFX0lERUZBVUxURUJDRElDQ09ERVBBR0UgIjIwODMzIgogIExPQ0FMRV9JREVGQVVMVExBTkdVQUdFICIwNDEyIgogIExPQ0FMRV9JREVGQVVMVE1BQ0NPREVQQUdFICIxMDAwMyIKICBMT0NBTEVfSURFRkFVTFRVTklYQ09ERVBBR0UgIjk0OSIKICBMT0NBTEVfSURJR0lUUyAiMiIKICBMT0NBTEVfSURJR0lUU1VCU1RJVFVUSU9OICIxIgogIExPQ0FMRV9JRklSU1REQVlPRldFRUsgIjYiCiAgTE9DQUxFX0lGSVJTVFdFRUtPRllFQVIgIjAiCiAgTE9DQUxFX0lJTlRMQ1VSUkRJR0lUUyAiMiIKICBMT0NBTEVfSUxBTkdVQUdFICIwNDEyIgogIExPQ0FMRV9JTERBVEUgIjIiCiAgTE9DQUxFX0lMWkVSTyAiMSIKICBMT0NBTEVfSU1FQVNVUkUgIjAiCiAgTE9DQUxFX0lNT05MWkVSTyAiMSIKICBMT0NBTEVfSU5FR0NVUlIgIjEiCiAgTE9DQUxFX0lORUdOVU1CRVIgIjEiCiAgTE9DQUxFX0lORUdTRVBCWVNQQUNFICIwIgogIExPQ0FMRV9JTkVHU0lHTlBPU04gIjMiCiAgTE9DQUxFX0lORUdTWU1QUkVDRURFUyAiMSIKICBMT0NBTEVfSU9QVElPTkFMQ0FMRU5EQVIgIjUiCiAgTE9DQUxFX0lQQVBFUlNJWkUgIjkiCiAgTE9DQUxFX0lQT1NTRVBCWVNQQUNFICIwIgogIExPQ0FMRV9JUE9TU0lHTlBPU04gIjMiCiAgTE9DQUxFX0lQT1NTWU1QUkVDRURFUyAiMSIKICBMT0NBTEVfSVRJTUUgIjAiCiAgTE9DQUxFX0lUSU1FTUFSS1BPU04gIjEiCiAgTE9DQUxFX0lUTFpFUk8gIjAiCiAgTE9DQUxFX1MxMTU5ICK/wMD8IgogIExPQ0FMRV9TMjM1OSAiv8DIxCIKICBMT0NBTEVfU0FCQlJFVkNUUllOQU1FICJLT1IiCiAgTE9DQUxFX1NBQkJSRVZEQVlOQU1FMSAiv/kiCiAgTE9DQUxFX1NBQkJSRVZEQVlOQU1FMiAiyK0iCiAgTE9DQUxFX1NBQkJSRVZEQVlOQU1FMyAivPYiCiAgTE9DQUxFX1NBQkJSRVZEQVlOQU1FNCAiuPEiCiAgTE9DQUxFX1NBQkJSRVZEQVlOQU1FNSAisd0iCiAgTE9DQUxFX1NBQkJSRVZEQVlOQU1FNiAixeQiCiAgTE9DQUxFX1NBQkJSRVZEQVlOQU1FNyAiwM8iCiAgTE9DQUxFX1NBQkJSRVZMQU5HTkFNRSAiS09SIgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FMSAiMSIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTIgIjIiCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUUzICIzIgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FNCAiNCIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTUgIjUiCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUU2ICI2IgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FNyAiNyIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTggIjgiCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUU5ICI5IgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FMTAgIjEwIgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FMTEgIjExIgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FMTIgIjEyIgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FMTMgIiIKICBMT0NBTEVfU0NPVU5UUlkgIktvcmVhIgogIExPQ0FMRV9TQ1VSUkVOQ1kgTCJceDIwYTkiCiAgTE9DQUxFX1NEQVRFICItIgogIExPQ0FMRV9TREFZTkFNRTEgIr/5v+TAzyIKICBMT0NBTEVfU0RBWU5BTUUyICLIrb/kwM8iCiAgTE9DQUxFX1NEQVlOQU1FMyAivPa/5MDPIgogIExPQ0FMRV9TREFZTkFNRTQgIrjxv+TAzyIKICBMT0NBTEVfU0RBWU5BTUU1ICKx3b/kwM8iCiAgTE9DQUxFX1NEQVlOQU1FNiAixeS/5MDPIgogIExPQ0FMRV9TREFZTkFNRTcgIsDPv+TAzyIKICBMT0NBTEVfU0RFQ0lNQUwgIi4iCiAgTE9DQUxFX1NFTkdDT1VOVFJZICJLb3JlYSIKICBMT0NBTEVfU0VOR0NVUlJOQU1FICJLb3JlYW4gV29uIgogIExPQ0FMRV9TRU5HTEFOR1VBR0UgIktvcmVhbiIKICBMT0NBTEVfU0dST1VQSU5HICIzOzAiCiAgTE9DQUxFX1NJTlRMU1lNQk9MICJLUlciCiAgTE9DQUxFX1NJU08zMTY2Q1RSWU5BTUUgIktSIgogIExPQ0FMRV9TSVNPNjM5TEFOR05BTUUgImtvIgogIExPQ0FMRV9TTEFOR1VBR0UgIktvcmVhbiIKICBMT0NBTEVfU0xJU1QgIiwiCiAgTE9DQUxFX1NMT05HREFURSAieXl5eSez4icgTSe/+ScgZCfAzycgZGRkZCIKICBMT0NBTEVfU01PTkRFQ0lNQUxTRVAgIi4iCiAgTE9DQUxFX1NNT05HUk9VUElORyAiMzswIgogIExPQ0FMRV9TTU9OVEhOQU1FMSAiMb/5IgogIExPQ0FMRV9TTU9OVEhOQU1FMiAiMr/5IgogIExPQ0FMRV9TTU9OVEhOQU1FMyAiM7/5IgogIExPQ0FMRV9TTU9OVEhOQU1FNCAiNL/5IgogIExPQ0FMRV9TTU9OVEhOQU1FNSAiNb/5IgogIExPQ0FMRV9TTU9OVEhOQU1FNiAiNr/5IgogIExPQ0FMRV9TTU9OVEhOQU1FNyAiN7/5IgogIExPQ0FMRV9TTU9OVEhOQU1FOCAiOL/5IgogIExPQ0FMRV9TTU9OVEhOQU1FOSAiOb/5IgogIExPQ0FMRV9TTU9OVEhOQU1FMTAgIjEwv/kiCiAgTE9DQUxFX1NNT05USE5BTUUxMSAiMTG/+SIKICBMT0NBTEVfU01PTlRITkFNRTEyICIxMr/5IgogIExPQ0FMRV9TTU9OVEhOQU1FMTMgIiIKICBMT0NBTEVfU01PTlRIT1VTQU5EU0VQICIsIgogIExPQ0FMRV9TTkFNRSAia28tS1IiCiAgTE9DQUxFX1NOQVRJVkVDVFJZTkFNRSAitOvH0bnOsbkiCiAgTE9DQUxFX1NOQVRJVkVDVVJSTkFNRSAiv/giCiAgTE9DQUxFX1NOQVRJVkVESUdJVFMgIjAxMjM0NTY3ODkiCiAgTE9DQUxFX1NOQVRJVkVMQU5HTkFNRSAix9Gxub7uIgogIExPQ0FMRV9TTkVHQVRJVkVTSUdOICItIgogIExPQ0FMRV9TUE9TSVRJVkVTSUdOICIiCiAgTE9DQUxFX1NTSE9SVERBVEUgInl5eXktTU0tZGQiCiAgTE9DQUxFX1NTT1JUTkFNRSAiRGljdGlvbmFyeSIKICBMT0NBTEVfU1RIT1VTQU5EICIsIgogIExPQ0FMRV9TVElNRSAiOiIKICBMT0NBTEVfU1RJTUVGT1JNQVQgInR0IGg6bW06c3MiCiAgTE9DQUxFX1NZRUFSTU9OVEggInl5eXkns+InIE0nv/knIgoKICBMR1JQSURfV0VTVEVSTl9FVVJPUEUrTEdSUElEX1JFU19CQVNFICJXZXN0ZXJuIEV1cm9wZSBhbmQgVW5pdGVkIFN0YXRlcyIKICBMR1JQSURfQ0VOVFJBTF9FVVJPUEUrTEdSUElEX1JFU19CQVNFICJDZW50cmFsIEV1cm9wZSIKICBMR1JQSURfQkFMVElDK0xHUlBJRF9SRVNfQkFTRSAiQmFsdGljIgogIExHUlBJRF9HUkVFSytMR1JQSURfUkVTX0JBU0UgIkdyZWVrIgogIExHUlBJRF9DWVJJTExJQytMR1JQSURfUkVTX0JBU0UgIkN5cmlsbGljIgogIExHUlBJRF9UVVJLSVNIK0xHUlBJRF9SRVNfQkFTRSAiVHVya2ljIgogIExHUlBJRF9KQVBBTkVTRStMR1JQSURfUkVTX0JBU0UgIkphcGFuZXNlIgogIExHUlBJRF9LT1JFQU4rTEdSUElEX1JFU19CQVNFICJLb3JlYW4iCiAgTEdSUElEX1RSQURJVElPTkFMX0NISU5FU0UrTEdSUElEX1JFU19CQVNFICJUcmFkaXRpb25hbCBDaGluZXNlIgogIExHUlBJRF9TSU1QTElGSUVEX0NISU5FU0UrTEdSUElEX1JFU19CQVNFICJTaW1wbGlmaWVkIENoaW5lc2UiCiAgTEdSUElEX1RIQUkrTEdSUElEX1JFU19CQVNFICJUaGFpIgogIExHUlBJRF9IRUJSRVcrTEdSUElEX1JFU19CQVNFICJIZWJyZXciCiAgTEdSUElEX0FSQUJJQytMR1JQSURfUkVTX0JBU0UgIkFyYWJpYyIgCiAgTEdSUElEX1ZJRVROQU1FU0UrTEdSUElEX1JFU19CQVNFICJWaWV0bmFtZXNlIgogIExHUlBJRF9JTkRJQytMR1JQSURfUkVTX0JBU0UgIkluZGljIgogIExHUlBJRF9HRU9SR0lBTitMR1JQSURfUkVTX0JBU0UgIkdlb3JnaWFuIgogIExHUlBJRF9BUk1FTklBTitMR1JQSURfUkVTX0JBU0UgIkFybWVuaWFuIgp9Cg==