LyoKICogTG9jYWxlIGRlZmluaXRpb25zIGZvciBJdGFsaWFuIChJdGFseSkKICoKICogQ29weXJpZ2h0IDIwMDIgQWxleGFuZHJlIEp1bGxpYXJkIGZvciBDb2RlV2VhdmVycwogKgogKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCiAqIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgogKgogKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKICogTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KICoKICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwogKiBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCiAqIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EKICovCgojcHJhZ21hIGNvZGVfcGFnZSgxMjUyKQoKU1RSSU5HVEFCTEUgTEFOR1VBR0UgTEFOR19JVEFMSUFOLCBTVUJMQU5HX0lUQUxJQU4KewogIExPQ0FMRV9GT05UU0lHTkFUVVJFIEwiXHgwMDJmXHg4MDAwXHgzODA4XHgwMDAwXHgwMDAwXHgwMDAwXHgwMDAwXHgwMDAwXHgwMDAxXHgwMDAwXHgwMDAwXHg0MDAwXHgwMDEzXHgwMDAwXHgwMDAwXHhjNWQ0IgogIExPQ0FMRV9JQ0FMRU5EQVJUWVBFICIxIgogIExPQ0FMRV9JQ0VOVFVSWSAiMSIKICBMT0NBTEVfSUNPVU5UUlkgIjM5IgogIExPQ0FMRV9JQ1VSUkRJR0lUUyAiMiIKICBMT0NBTEVfSUNVUlJFTkNZICIyIgogIExPQ0FMRV9JREFURSAiMSIKICBMT0NBTEVfSURBWUxaRVJPICIxIgogIExPQ0FMRV9JREVGQVVMVEFOU0lDT0RFUEFHRSAiMTI1MiIKICBMT0NBTEVfSURFRkFVTFRDT0RFUEFHRSAiODUwIgogIExPQ0FMRV9JREVGQVVMVENPVU5UUlkgIjM5IgogIExPQ0FMRV9JREVGQVVMVEVCQ0RJQ0NPREVQQUdFICIyMDI4MCIKICBMT0NBTEVfSURFRkFVTFRMQU5HVUFHRSAiMDQxMCIKICBMT0NBTEVfSURFRkFVTFRNQUNDT0RFUEFHRSAiMTAwMDAiCiAgTE9DQUxFX0lERUZBVUxUVU5JWENPREVQQUdFICIyODYwNSIKICBMT0NBTEVfSURJR0lUUyAiMiIKICBMT0NBTEVfSURJR0lUU1VCU1RJVFVUSU9OICIxIgogIExPQ0FMRV9JRklSU1REQVlPRldFRUsgIjAiCiAgTE9DQUxFX0lGSVJTVFdFRUtPRllFQVIgIjIiCiAgTE9DQUxFX0lJTlRMQ1VSUkRJR0lUUyAiMiIKICBMT0NBTEVfSUxBTkdVQUdFICIwNDEwIgogIExPQ0FMRV9JTERBVEUgIjEiCiAgTE9DQUxFX0lMWkVSTyAiMSIKICBMT0NBTEVfSU1FQVNVUkUgIjAiCiAgTE9DQUxFX0lNT05MWkVSTyAiMSIKICBMT0NBTEVfSU5FR0NVUlIgIjkiCiAgTE9DQUxFX0lORUdOVU1CRVIgIjEiCiAgTE9DQUxFX0lORUdTRVBCWVNQQUNFICIxIgogIExPQ0FMRV9JTkVHU0lHTlBPU04gIjMiCiAgTE9DQUxFX0lORUdTWU1QUkVDRURFUyAiMSIKICBMT0NBTEVfSU5FVVRSQUwgIjAiCiAgTE9DQUxFX0lPUFRJT05BTENBTEVOREFSICIwIgogIExPQ0FMRV9JUEFQRVJTSVpFICI5IgogIExPQ0FMRV9JUE9TU0VQQllTUEFDRSAiMSIKICBMT0NBTEVfSVBPU1NJR05QT1NOICIzIgogIExPQ0FMRV9JUE9TU1lNUFJFQ0VERVMgIjEiCiAgTE9DQUxFX0lSRUFESU5HTEFZT1VUICIwIgogIExPQ0FMRV9JVElNRSAiMSIKICBMT0NBTEVfSVRJTUVNQVJLUE9TTiAiMCIKICBMT0NBTEVfSVRMWkVSTyAiMCIKICBMT0NBTEVfUzExNTkgIiIKICBMT0NBTEVfUzIzNTkgIiIKICBMT0NBTEVfU0FCQlJFVkNUUllOQU1FICJJVEEiCiAgTE9DQUxFX1NBQkJSRVZEQVlOQU1FMSAibHVuIgogIExPQ0FMRV9TQUJCUkVWREFZTkFNRTIgIm1hciIKICBMT0NBTEVfU0FCQlJFVkRBWU5BTUUzICJtZXIiCiAgTE9DQUxFX1NBQkJSRVZEQVlOQU1FNCAiZ2lvIgogIExPQ0FMRV9TQUJCUkVWREFZTkFNRTUgInZlbiIKICBMT0NBTEVfU0FCQlJFVkRBWU5BTUU2ICJzYWIiCiAgTE9DQUxFX1NBQkJSRVZEQVlOQU1FNyAiZG9tIgogIExPQ0FMRV9TQUJCUkVWTEFOR05BTUUgIklUQSIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTEgImdlbiIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTIgImZlYiIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTMgIm1hciIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTQgImFwciIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTUgIm1hZyIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTYgImdpdSIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTcgImx1ZyIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTggImFnbyIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTkgInNldCIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTEwICJvdHQiCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUUxMSAibm92IgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FMTIgImRpYyIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTEzICIiCiAgTE9DQUxFX1NDT1VOVFJZICJJdGFseSIKICBMT0NBTEVfU0NVUlJFTkNZICKAIgogIExPQ0FMRV9TREFURSAiLyIKICBMT0NBTEVfU0RBWU5BTUUxICJsdW5lZOwiCiAgTE9DQUxFX1NEQVlOQU1FMiAibWFydGVk7CIKICBMT0NBTEVfU0RBWU5BTUUzICJtZXJjb2xlZOwiCiAgTE9DQUxFX1NEQVlOQU1FNCAiZ2lvdmVk7CIKICBMT0NBTEVfU0RBWU5BTUU1ICJ2ZW5lcmTsIgogIExPQ0FMRV9TREFZTkFNRTYgInNhYmF0byIKICBMT0NBTEVfU0RBWU5BTUU3ICJkb21lbmljYSIKICBMT0NBTEVfU0RFQ0lNQUwgIiwiCiAgTE9DQUxFX1NFTkdDT1VOVFJZICJJdGFseSIKICBMT0NBTEVfU0VOR0NVUlJOQU1FICJFdXJvIgogIExPQ0FMRV9TRU5HTEFOR1VBR0UgIkl0YWxpYW4iCiAgTE9DQUxFX1NHUk9VUElORyAiMzswIgogIExPQ0FMRV9TSU5UTFNZTUJPTCAiRVVSIgogIExPQ0FMRV9TSVNPMzE2NkNUUllOQU1FICJJVCIKICBMT0NBTEVfU0lTTzYzOUxBTkdOQU1FICJpdCIKICBMT0NBTEVfU0xBTkdVQUdFICJJdGFsaWFuIChJdGFseSkiCiAgTE9DQUxFX1NMSVNUICI7IgogIExPQ0FMRV9TTE9OR0RBVEUgImRkZGQgZCBNTU1NIHl5eXkiCiAgTE9DQUxFX1NNT05ERUNJTUFMU0VQICIsIgogIExPQ0FMRV9TTU9OR1JPVVBJTkcgIjM7MCIKICBMT0NBTEVfU01PTlRITkFNRTEgImdlbm5haW8iCiAgTE9DQUxFX1NNT05USE5BTUUyICJmZWJicmFpbyIKICBMT0NBTEVfU01PTlRITkFNRTMgIm1hcnpvIgogIExPQ0FMRV9TTU9OVEhOQU1FNCAiYXByaWxlIgogIExPQ0FMRV9TTU9OVEhOQU1FNSAibWFnZ2lvIgogIExPQ0FMRV9TTU9OVEhOQU1FNiAiZ2l1Z25vIgogIExPQ0FMRV9TTU9OVEhOQU1FNyAibHVnbGlvIgogIExPQ0FMRV9TTU9OVEhOQU1FOCAiYWdvc3RvIgogIExPQ0FMRV9TTU9OVEhOQU1FOSAic2V0dGVtYnJlIgogIExPQ0FMRV9TTU9OVEhOQU1FMTAgIm90dG9icmUiCiAgTE9DQUxFX1NNT05USE5BTUUxMSAibm92ZW1icmUiCiAgTE9DQUxFX1NNT05USE5BTUUxMiAiZGljZW1icmUiCiAgTE9DQUxFX1NNT05USE5BTUUxMyAiIgogIExPQ0FMRV9TTU9OVEhPVVNBTkRTRVAgIi4iCiAgTE9DQUxFX1NOQU1FICJpdC1JVCIKICBMT0NBTEVfU05BVElWRUNUUllOQU1FICJJdGFsaWEiCiAgTE9DQUxFX1NOQVRJVkVDVVJSTkFNRSAiZXVybyIKICBMT0NBTEVfU05BVElWRURJR0lUUyAiMDEyMzQ1Njc4OSIKICBMT0NBTEVfU05BVElWRURJU1BMQVlOQU1FICJpdGFsaWFubyAoSXRhbGlhKSIKICBMT0NBTEVfU05BVElWRUxBTkdOQU1FICJpdGFsaWFubyIKICBMT0NBTEVfU05FR0FUSVZFU0lHTiAiLSIKICBMT0NBTEVfU1BPU0lUSVZFU0lHTiAiIgogIExPQ0FMRV9TU0NSSVBUUyAiTGF0bjsiCiAgTE9DQUxFX1NTSE9SVERBVEUgImRkL01NL3l5eXkiCiAgTE9DQUxFX1NTT1JUTkFNRSAiRGVmYXVsdCIKICBMT0NBTEVfU1RIT1VTQU5EICIuIgogIExPQ0FMRV9TVElNRSAiLiIKICBMT0NBTEVfU1RJTUVGT1JNQVQgIkgubW0uc3MiCiAgTE9DQUxFX1NZRUFSTU9OVEggIk1NTU0geXl5eSIKCiAgTEdSUElEX1dFU1RFUk5fRVVST1BFK0xHUlBJRF9SRVNfQkFTRSAiRXVyb3BhIE9jY2lkZW50YWxlIGUgU3RhdGkgVW5pdGkiCiAgTEdSUElEX0NFTlRSQUxfRVVST1BFK0xHUlBJRF9SRVNfQkFTRSAiRXVyb3BhIENlbnRyYWxlIgogIExHUlBJRF9CQUxUSUMrTEdSUElEX1JFU19CQVNFICJCYWx0aWNvIgogIExHUlBJRF9HUkVFSytMR1JQSURfUkVTX0JBU0UgIkdyZWNvIgogIExHUlBJRF9DWVJJTExJQytMR1JQSURfUkVTX0JBU0UgIkNpcmlsbGljbyIKICBMR1JQSURfVFVSS0lTSCtMR1JQSURfUkVTX0JBU0UgIlR1cmNvIgogIExHUlBJRF9KQVBBTkVTRStMR1JQSURfUkVTX0JBU0UgIkdpYXBwb25lc2UiCiAgTEdSUElEX0tPUkVBTitMR1JQSURfUkVTX0JBU0UgIkNvcmVhbm8iCiAgTEdSUElEX1RSQURJVElPTkFMX0NISU5FU0UrTEdSUElEX1JFU19CQVNFICJDaW5lc2UgVHJhZGl6aW9uYWxlIgogIExHUlBJRF9TSU1QTElGSUVEX0NISU5FU0UrTEdSUElEX1JFU19CQVNFICJDaW5lc2UgU2VtcGxpZmljYXRvIgogIExHUlBJRF9USEFJK0xHUlBJRF9SRVNfQkFTRSAiVGhhaSIKICBMR1JQSURfSEVCUkVXK0xHUlBJRF9SRVNfQkFTRSAiRWJyYWljbyIKICBMR1JQSURfQVJBQklDK0xHUlBJRF9SRVNfQkFTRSAiQXJhYm8iCiAgTEdSUElEX1ZJRVROQU1FU0UrTEdSUElEX1JFU19CQVNFICJWaWV0bmFtaXRhIgogIExHUlBJRF9JTkRJQytMR1JQSURfUkVTX0JBU0UgIkluZHUiCiAgTEdSUElEX0dFT1JHSUFOK0xHUlBJRF9SRVNfQkFTRSAiR2VvcmdpY28iCiAgTEdSUElEX0FSTUVOSUFOK0xHUlBJRF9SRVNfQkFTRSAiQXJtZW5vIgp9Cg==