LyoKICogTG9jYWxlIGRlZmluaXRpb25zIGZvciBTcGFuaXNoIChIb25kdXJhcykKICoKICogQ29weXJpZ2h0IDIwMDIgQWxleGFuZHJlIEp1bGxpYXJkIGZvciBDb2RlV2VhdmVycwogKgogKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCiAqIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgogKgogKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKICogTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KICoKICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwogKiBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCiAqIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EKICovCgojcHJhZ21hIGNvZGVfcGFnZSgxMjUyKQoKU1RSSU5HVEFCTEUgTEFOR1VBR0UgTEFOR19TUEFOSVNILCBTVUJMQU5HX1NQQU5JU0hfSE9ORFVSQVMKewogIExPQ0FMRV9GT05UU0lHTkFUVVJFIEwiXHgwMDJmXHg4MDAwXHgzODA4XHgwMDAwXHgwMDAwXHgwMDAwXHgwMDAwXHgwMDAwXHgwMDAxXHgwMDAwXHgwMDAwXHg0MDAwXHgwMDEzXHgwMDAwXHgwMDAwXHhjNWQ0IgogIExPQ0FMRV9JQ0FMRU5EQVJUWVBFICIxIgogIExPQ0FMRV9JQ0VOVFVSWSAiMSIKICBMT0NBTEVfSUNPVU5UUlkgIjUwNCIKICBMT0NBTEVfSUNVUlJESUdJVFMgIjIiCiAgTE9DQUxFX0lDVVJSRU5DWSAiMiIKICBMT0NBTEVfSURBVEUgIjEiCiAgTE9DQUxFX0lEQVlMWkVSTyAiMSIKICBMT0NBTEVfSURFRkFVTFRBTlNJQ09ERVBBR0UgIjEyNTIiCiAgTE9DQUxFX0lERUZBVUxUQ09ERVBBR0UgIjg1MCIKICBMT0NBTEVfSURFRkFVTFRDT1VOVFJZICI1MDQiCiAgTE9DQUxFX0lERUZBVUxURUJDRElDQ09ERVBBR0UgIjIwMjg0IgogIExPQ0FMRV9JREVGQVVMVExBTkdVQUdFICI0ODBhIgogIExPQ0FMRV9JREVGQVVMVE1BQ0NPREVQQUdFICIxMDAwMCIKICBMT0NBTEVfSURFRkFVTFRVTklYQ09ERVBBR0UgIjI4NTkxIgogIExPQ0FMRV9JRElHSVRTICIyIgogIExPQ0FMRV9JRElHSVRTVUJTVElUVVRJT04gIjEiCiAgTE9DQUxFX0lGSVJTVERBWU9GV0VFSyAiNiIKICBMT0NBTEVfSUZJUlNUV0VFS09GWUVBUiAiMCIKICBMT0NBTEVfSUlOVExDVVJSRElHSVRTICIyIgogIExPQ0FMRV9JTEFOR1VBR0UgIjQ4MGEiCiAgTE9DQUxFX0lMREFURSAiMSIKICBMT0NBTEVfSUxaRVJPICIxIgogIExPQ0FMRV9JTUVBU1VSRSAiMCIKICBMT0NBTEVfSU1PTkxaRVJPICIxIgogIExPQ0FMRV9JTkVHQ1VSUiAiMTIiCiAgTE9DQUxFX0lORUdOVU1CRVIgIjEiCiAgTE9DQUxFX0lORUdTRVBCWVNQQUNFICIxIgogIExPQ0FMRV9JTkVHU0lHTlBPU04gIjQiCiAgTE9DQUxFX0lORUdTWU1QUkVDRURFUyAiMSIKICBMT0NBTEVfSU9QVElPTkFMQ0FMRU5EQVIgIjAiCiAgTE9DQUxFX0lQQVBFUlNJWkUgIjEiCiAgTE9DQUxFX0lQT1NTRVBCWVNQQUNFICIxIgogIExPQ0FMRV9JUE9TU0lHTlBPU04gIjQiCiAgTE9DQUxFX0lQT1NTWU1QUkVDRURFUyAiMSIKICBMT0NBTEVfSVRJTUUgIjAiCiAgTE9DQUxFX0lUSU1FTUFSS1BPU04gIjAiCiAgTE9DQUxFX0lUTFpFUk8gIjEiCiAgTE9DQUxFX1MxMTU5ICJhLm0uIgogIExPQ0FMRV9TMjM1OSAicC5tLiIKICBMT0NBTEVfU0FCQlJFVkNUUllOQU1FICJITkQiCiAgTE9DQUxFX1NBQkJSRVZEQVlOQU1FMSAiTHVuIgogIExPQ0FMRV9TQUJCUkVWREFZTkFNRTIgIk1hciIKICBMT0NBTEVfU0FCQlJFVkRBWU5BTUUzICJNaekiCiAgTE9DQUxFX1NBQkJSRVZEQVlOQU1FNCAiSnVlIgogIExPQ0FMRV9TQUJCUkVWREFZTkFNRTUgIlZpZSIKICBMT0NBTEVfU0FCQlJFVkRBWU5BTUU2ICJT4WIiCiAgTE9DQUxFX1NBQkJSRVZEQVlOQU1FNyAiRG9tIgogIExPQ0FMRV9TQUJCUkVWTEFOR05BTUUgIkVTSCIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTEgIkVuZSIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTIgIkZlYiIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTMgIk1hciIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTQgIkFiciIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTUgIk1heSIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTYgIkp1biIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTcgIkp1bCIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTggIkFnbyIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTkgIlNlcCIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTEwICJPY3QiCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUUxMSAiTm92IgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FMTIgIkRpYyIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTEzICIiCiAgTE9DQUxFX1NDT1VOVFJZICJIb25kdXJhcyIKICBMT0NBTEVfU0NVUlJFTkNZICJMLiIKICBMT0NBTEVfU0RBVEUgIi8iCiAgTE9DQUxFX1NEQVlOQU1FMSAiTHVuZXMiCiAgTE9DQUxFX1NEQVlOQU1FMiAiTWFydGVzIgogIExPQ0FMRV9TREFZTkFNRTMgIk1p6XJjb2xlcyIKICBMT0NBTEVfU0RBWU5BTUU0ICJKdWV2ZXMiCiAgTE9DQUxFX1NEQVlOQU1FNSAiVmllcm5lcyIKICBMT0NBTEVfU0RBWU5BTUU2ICJT4WJhZG8iCiAgTE9DQUxFX1NEQVlOQU1FNyAiRG9taW5nbyIKICBMT0NBTEVfU0RFQ0lNQUwgIi4iCiAgTE9DQUxFX1NFTkdDT1VOVFJZICJIb25kdXJhcyIKICBMT0NBTEVfU0VOR0NVUlJOQU1FICJIb25kdXJhbiBMZW1waXJhIgogIExPQ0FMRV9TRU5HTEFOR1VBR0UgIlNwYW5pc2giCiAgTE9DQUxFX1NHUk9VUElORyAiMzswIgogIExPQ0FMRV9TSU5UTFNZTUJPTCAiSE5MIgogIExPQ0FMRV9TSVNPMzE2NkNUUllOQU1FICJITiIKICBMT0NBTEVfU0lTTzYzOUxBTkdOQU1FICJlcyIKICBMT0NBTEVfU0xBTkdVQUdFICJTcGFuaXNoIChIb25kdXJhcykiCiAgTE9DQUxFX1NMSVNUICIsIgogIExPQ0FMRV9TTE9OR0RBVEUgImRkZGQsIGRkJyBkZSAnTU1NTScgZGUgJ3l5eXkiCiAgTE9DQUxFX1NNT05ERUNJTUFMU0VQICIuIgogIExPQ0FMRV9TTU9OR1JPVVBJTkcgIjMiCiAgTE9DQUxFX1NNT05USE5BTUUxICJFbmVybyIKICBMT0NBTEVfU01PTlRITkFNRTIgIkZlYnJlcm8iCiAgTE9DQUxFX1NNT05USE5BTUUzICJNYXJ6byIKICBMT0NBTEVfU01PTlRITkFNRTQgIkFicmlsIgogIExPQ0FMRV9TTU9OVEhOQU1FNSAiTWF5byIKICBMT0NBTEVfU01PTlRITkFNRTYgIkp1bmlvIgogIExPQ0FMRV9TTU9OVEhOQU1FNyAiSnVsaW8iCiAgTE9DQUxFX1NNT05USE5BTUU4ICJBZ29zdG8iCiAgTE9DQUxFX1NNT05USE5BTUU5ICJTZXB0aWVtYnJlIgogIExPQ0FMRV9TTU9OVEhOQU1FMTAgIk9jdHVicmUiCiAgTE9DQUxFX1NNT05USE5BTUUxMSAiTm92aWVtYnJlIgogIExPQ0FMRV9TTU9OVEhOQU1FMTIgIkRpY2llbWJyZSIKICBMT0NBTEVfU01PTlRITkFNRTEzICIiCiAgTE9DQUxFX1NNT05USE9VU0FORFNFUCAiLCIKICBMT0NBTEVfU05BTUUgImVzLUhOIgogIExPQ0FMRV9TTkFUSVZFQ1RSWU5BTUUgIkhvbmR1cmFzIgogIExPQ0FMRV9TTkFUSVZFQ1VSUk5BTUUgIkxlbXBpcmEiCiAgTE9DQUxFX1NOQVRJVkVESUdJVFMgIjAxMjM0NTY3ODkiCiAgTE9DQUxFX1NOQVRJVkVMQU5HTkFNRSAiRXNwYfFvbCIKICBMT0NBTEVfU05FR0FUSVZFU0lHTiAiLSIKICBMT0NBTEVfU1BPU0lUSVZFU0lHTiAiIgogIExPQ0FMRV9TU0hPUlREQVRFICJkZC9NTS95eXl5IgogIExPQ0FMRV9TU09SVE5BTUUgIkRlZmF1bHQiCiAgTE9DQUxFX1NUSE9VU0FORCAiLCIKICBMT0NBTEVfU1RJTUUgIjoiCiAgTE9DQUxFX1NUSU1FRk9STUFUICJoaDptbTpzcyB0dCIKICBMT0NBTEVfU1lFQVJNT05USCAiTU1NTScgZGUgJ3l5eXkiCgogIExHUlBJRF9XRVNURVJOX0VVUk9QRStMR1JQSURfUkVTX0JBU0UgIldlc3Rlcm4gRXVyb3BlIGFuZCBVbml0ZWQgU3RhdGVzIgogIExHUlBJRF9DRU5UUkFMX0VVUk9QRStMR1JQSURfUkVTX0JBU0UgIkNlbnRyYWwgRXVyb3BlIgogIExHUlBJRF9CQUxUSUMrTEdSUElEX1JFU19CQVNFICJCYWx0aWMiCiAgTEdSUElEX0dSRUVLK0xHUlBJRF9SRVNfQkFTRSAiR3JlZWsiCiAgTEdSUElEX0NZUklMTElDK0xHUlBJRF9SRVNfQkFTRSAiQ3lyaWxsaWMiCiAgTEdSUElEX1RVUktJU0grTEdSUElEX1JFU19CQVNFICJUdXJraWMiCiAgTEdSUElEX0pBUEFORVNFK0xHUlBJRF9SRVNfQkFTRSAiSmFwYW5lc2UiCiAgTEdSUElEX0tPUkVBTitMR1JQSURfUkVTX0JBU0UgIktvcmVhbiIKICBMR1JQSURfVFJBRElUSU9OQUxfQ0hJTkVTRStMR1JQSURfUkVTX0JBU0UgIlRyYWRpdGlvbmFsIENoaW5lc2UiCiAgTEdSUElEX1NJTVBMSUZJRURfQ0hJTkVTRStMR1JQSURfUkVTX0JBU0UgIlNpbXBsaWZpZWQgQ2hpbmVzZSIKICBMR1JQSURfVEhBSStMR1JQSURfUkVTX0JBU0UgIlRoYWkiCiAgTEdSUElEX0hFQlJFVytMR1JQSURfUkVTX0JBU0UgIkhlYnJldyIKICBMR1JQSURfQVJBQklDK0xHUlBJRF9SRVNfQkFTRSAiQXJhYmljIiAKICBMR1JQSURfVklFVE5BTUVTRStMR1JQSURfUkVTX0JBU0UgIlZpZXRuYW1lc2UiCiAgTEdSUElEX0lORElDK0xHUlBJRF9SRVNfQkFTRSAiSW5kaWMiCiAgTEdSUElEX0dFT1JHSUFOK0xHUlBJRF9SRVNfQkFTRSAiR2VvcmdpYW4iCiAgTEdSUElEX0FSTUVOSUFOK0xHUlBJRF9SRVNfQkFTRSAiQXJtZW5pYW4iCn0K