LyoKICogTG9jYWxlIGRlZmluaXRpb25zIGZvciBGcmVuY2ggKENhbmFkYSkKICoKICogQ29weXJpZ2h0IDIwMDIgQWxleGFuZHJlIEp1bGxpYXJkIGZvciBDb2RlV2VhdmVycwogKgogKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCiAqIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgogKgogKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKICogTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KICoKICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwogKiBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCiAqIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EKICovCgojcHJhZ21hIGNvZGVfcGFnZSgxMjUyKQoKU1RSSU5HVEFCTEUgTEFOR1VBR0UgTEFOR19GUkVOQ0gsIFNVQkxBTkdfRlJFTkNIX0NBTkFESUFOCnsKICBMT0NBTEVfRk9OVFNJR05BVFVSRSBMIlx4MDAyZlx4ODAwMFx4MzgwOFx4MDAwMFx4MDAwMFx4MDAwMFx4MDAwMFx4MDAwMFx4MDAwMVx4MDAwMFx4MDAwMFx4NDAwMFx4MDAxM1x4MDAwMFx4MDAwMFx4YzVkNCIKICBMT0NBTEVfSUNBTEVOREFSVFlQRSAiMSIKICBMT0NBTEVfSUNFTlRVUlkgIjEiCiAgTE9DQUxFX0lDT1VOVFJZICIyIgogIExPQ0FMRV9JQ1VSUkRJR0lUUyAiMiIKICBMT0NBTEVfSUNVUlJFTkNZICIzIgogIExPQ0FMRV9JREFURSAiMiIKICBMT0NBTEVfSURBWUxaRVJPICIxIgogIExPQ0FMRV9JREVGQVVMVEFOU0lDT0RFUEFHRSAiMTI1MiIKICBMT0NBTEVfSURFRkFVTFRDT0RFUEFHRSAiODUwIgogIExPQ0FMRV9JREVGQVVMVENPVU5UUlkgIjIiCiAgTE9DQUxFX0lERUZBVUxURUJDRElDQ09ERVBBR0UgIjIwMjk3IgogIExPQ0FMRV9JREVGQVVMVExBTkdVQUdFICIwYzBjIgogIExPQ0FMRV9JREVGQVVMVE1BQ0NPREVQQUdFICIxMDAwMCIKICBMT0NBTEVfSURFRkFVTFRVTklYQ09ERVBBR0UgIjI4NTkxIgogIExPQ0FMRV9JRElHSVRTICIyIgogIExPQ0FMRV9JRElHSVRTVUJTVElUVVRJT04gIjEiCiAgTE9DQUxFX0lGSVJTVERBWU9GV0VFSyAiNiIKICBMT0NBTEVfSUZJUlNUV0VFS09GWUVBUiAiMCIKICBMT0NBTEVfSUlOVExDVVJSRElHSVRTICIyIgogIExPQ0FMRV9JTEFOR1VBR0UgIjBjMGMiCiAgTE9DQUxFX0lMREFURSAiMSIKICBMT0NBTEVfSUxaRVJPICIxIgogIExPQ0FMRV9JTUVBU1VSRSAiMCIKICBMT0NBTEVfSU1PTkxaRVJPICIxIgogIExPQ0FMRV9JTkVHQ1VSUiAiNCIKICBMT0NBTEVfSU5FR05VTUJFUiAiMSIKICBMT0NBTEVfSU5FR1NFUEJZU1BBQ0UgIjAiCiAgTE9DQUxFX0lORUdTSUdOUE9TTiAiMCIKICBMT0NBTEVfSU5FR1NZTVBSRUNFREVTICIwIgogIExPQ0FMRV9JTkVVVFJBTCAiMCIKICBMT0NBTEVfSU9QVElPTkFMQ0FMRU5EQVIgIjAiCiAgTE9DQUxFX0lQQVBFUlNJWkUgIjEiCiAgTE9DQUxFX0lQT1NTRVBCWVNQQUNFICIxIgogIExPQ0FMRV9JUE9TU0lHTlBPU04gIjEiCiAgTE9DQUxFX0lQT1NTWU1QUkVDRURFUyAiMCIKICBMT0NBTEVfSVJFQURJTkdMQVlPVVQgIjAiCiAgTE9DQUxFX0lUSU1FICIxIgogIExPQ0FMRV9JVElNRU1BUktQT1NOICIwIgogIExPQ0FMRV9JVExaRVJPICIxIgogIExPQ0FMRV9TMTE1OSAiIgogIExPQ0FMRV9TMjM1OSAiIgogIExPQ0FMRV9TQUJCUkVWQ1RSWU5BTUUgIkNBTiIKICBMT0NBTEVfU0FCQlJFVkRBWU5BTUUxICJsdW4uIgogIExPQ0FMRV9TQUJCUkVWREFZTkFNRTIgIm1hci4iCiAgTE9DQUxFX1NBQkJSRVZEQVlOQU1FMyAibWVyLiIKICBMT0NBTEVfU0FCQlJFVkRBWU5BTUU0ICJqZXUuIgogIExPQ0FMRV9TQUJCUkVWREFZTkFNRTUgInZlbi4iCiAgTE9DQUxFX1NBQkJSRVZEQVlOQU1FNiAic2FtLiIKICBMT0NBTEVfU0FCQlJFVkRBWU5BTUU3ICJkaW0uIgogIExPQ0FMRV9TQUJCUkVWTEFOR05BTUUgIkZSQyIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTEgImphbnYuIgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FMiAiZul2ci4iCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUUzICJtYXJzIgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FNCAiYXZyLiIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTUgIm1haSIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTYgImp1aW4iCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUU3ICJqdWlsLiIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTggImFv+3QiCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUU5ICJzZXB0LiIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTEwICJvY3QuIgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FMTEgIm5vdi4iCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUUxMiAiZOljLiIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTEzICIiCiAgTE9DQUxFX1NDT1VOVFJZICJDYW5hZGEiCiAgTE9DQUxFX1NDVVJSRU5DWSAiJCIKICBMT0NBTEVfU0RBVEUgIi0iCiAgTE9DQUxFX1NEQVlOQU1FMSAibHVuZGkiCiAgTE9DQUxFX1NEQVlOQU1FMiAibWFyZGkiCiAgTE9DQUxFX1NEQVlOQU1FMyAibWVyY3JlZGkiCiAgTE9DQUxFX1NEQVlOQU1FNCAiamV1ZGkiCiAgTE9DQUxFX1NEQVlOQU1FNSAidmVuZHJlZGkiCiAgTE9DQUxFX1NEQVlOQU1FNiAic2FtZWRpIgogIExPQ0FMRV9TREFZTkFNRTcgImRpbWFuY2hlIgogIExPQ0FMRV9TREVDSU1BTCAiLCIKICBMT0NBTEVfU0VOR0NPVU5UUlkgIkNhbmFkYSIKICBMT0NBTEVfU0VOR0NVUlJOQU1FICJDYW5hZGlhbiBEb2xsYXIiCiAgTE9DQUxFX1NFTkdMQU5HVUFHRSAiRnJlbmNoIgogIExPQ0FMRV9TR1JPVVBJTkcgIjM7MCIKICBMT0NBTEVfU0lOVExTWU1CT0wgIkNBRCIKICBMT0NBTEVfU0lTTzMxNjZDVFJZTkFNRSAiQ0EiCiAgTE9DQUxFX1NJU082MzlMQU5HTkFNRSAiZnIiCiAgTE9DQUxFX1NMQU5HVUFHRSAiRnJlbmNoIChDYW5hZGEpIgogIExPQ0FMRV9TTElTVCAiOyIKICBMT0NBTEVfU0xPTkdEQVRFICJkIE1NTU0sIHl5eXkiCiAgTE9DQUxFX1NNT05ERUNJTUFMU0VQICIsIgogIExPQ0FMRV9TTU9OR1JPVVBJTkcgIjM7MCIKICBMT0NBTEVfU01PTlRITkFNRTEgImphbnZpZXIiCiAgTE9DQUxFX1NNT05USE5BTUUyICJm6XZyaWVyIgogIExPQ0FMRV9TTU9OVEhOQU1FMyAibWFycyIKICBMT0NBTEVfU01PTlRITkFNRTQgImF2cmlsIgogIExPQ0FMRV9TTU9OVEhOQU1FNSAibWFpIgogIExPQ0FMRV9TTU9OVEhOQU1FNiAianVpbiIKICBMT0NBTEVfU01PTlRITkFNRTcgImp1aWxsZXQiCiAgTE9DQUxFX1NNT05USE5BTUU4ICJhb/t0IgogIExPQ0FMRV9TTU9OVEhOQU1FOSAic2VwdGVtYnJlIgogIExPQ0FMRV9TTU9OVEhOQU1FMTAgIm9jdG9icmUiCiAgTE9DQUxFX1NNT05USE5BTUUxMSAibm92ZW1icmUiCiAgTE9DQUxFX1NNT05USE5BTUUxMiAiZOljZW1icmUiCiAgTE9DQUxFX1NNT05USE5BTUUxMyAiIgogIExPQ0FMRV9TTU9OVEhPVVNBTkRTRVAgIqAiCiAgTE9DQUxFX1NOQU1FICJmci1DQSIKICBMT0NBTEVfU05BVElWRUNUUllOQU1FICJDYW5hZGEiCiAgTE9DQUxFX1NOQVRJVkVDVVJSTkFNRSAiRG9sbGFyIGNhbmFkaWVuIgogIExPQ0FMRV9TTkFUSVZFRElHSVRTICIwMTIzNDU2Nzg5IgogIExPQ0FMRV9TTkFUSVZFRElTUExBWU5BTUUgImZyYW7nYWlzIChDYW5hZGEpIgogIExPQ0FMRV9TTkFUSVZFTEFOR05BTUUgImZyYW7nYWlzIgogIExPQ0FMRV9TTkVHQVRJVkVTSUdOICItIgogIExPQ0FMRV9TT1BFTlRZUEVMQU5HVUFHRVRBRyAiRlJBICIKICBMT0NBTEVfU1BPU0lUSVZFU0lHTiAiIgogIExPQ0FMRV9TU0NSSVBUUyAiTGF0bjsiCiAgTE9DQUxFX1NTSE9SVERBVEUgInl5eXktTU0tZGQiCiAgTE9DQUxFX1NTSE9SVFRJTUUgIkhIOm1tIgogIExPQ0FMRV9TU09SVE5BTUUgIkRlZmF1bHQiCiAgTE9DQUxFX1NUSE9VU0FORCAioCIKICBMT0NBTEVfU1RJTUUgIjoiCiAgTE9DQUxFX1NUSU1FRk9STUFUICJISDptbTpzcyIKICBMT0NBTEVfU1lFQVJNT05USCAiTU1NTSwgeXl5eSIKCiAgTEdSUElEX1dFU1RFUk5fRVVST1BFK0xHUlBJRF9SRVNfQkFTRSAiRXVyb3BlIG9jY2lkZW50YWxlIGV0IMl0YXRzLVVuaXMgZCdBbelyaXF1ZSIKICBMR1JQSURfQ0VOVFJBTF9FVVJPUEUrTEdSUElEX1JFU19CQVNFICJFdXJvcGUgY2VudHJhbGUiCiAgTEdSUElEX0JBTFRJQytMR1JQSURfUkVTX0JBU0UgIkJhbHRpcXVlIgogIExHUlBJRF9HUkVFSytMR1JQSURfUkVTX0JBU0UgIkdyZWMiCiAgTEdSUElEX0NZUklMTElDK0xHUlBJRF9SRVNfQkFTRSAiQ3lyaWxsaXF1ZSIKICBMR1JQSURfVFVSS0lTSCtMR1JQSURfUkVTX0JBU0UgIlR1cmMiCiAgTEdSUElEX0pBUEFORVNFK0xHUlBJRF9SRVNfQkFTRSAiSmFwb25haXMiCiAgTEdSUElEX0tPUkVBTitMR1JQSURfUkVTX0JBU0UgIkNvcullbiIKICBMR1JQSURfVFJBRElUSU9OQUxfQ0hJTkVTRStMR1JQSURfUkVTX0JBU0UgIkNoaW5vaXMgdHJhZGl0aW9ubmVsIgogIExHUlBJRF9TSU1QTElGSUVEX0NISU5FU0UrTEdSUElEX1JFU19CQVNFICJDaGlub2lzIHNpbXBsaWZp6SIKICBMR1JQSURfVEhBSStMR1JQSURfUkVTX0JBU0UgIlRoYe8iCiAgTEdSUElEX0hFQlJFVytMR1JQSURfUkVTX0JBU0UgIkjpYnJldSIKICBMR1JQSURfQVJBQklDK0xHUlBJRF9SRVNfQkFTRSAiQXJhYmUiIAogIExHUlBJRF9WSUVUTkFNRVNFK0xHUlBJRF9SRVNfQkFTRSAiVmlldG5hbWllbiIKICBMR1JQSURfSU5ESUMrTEdSUElEX1JFU19CQVNFICJJbmRpZW4iCiAgTEdSUElEX0dFT1JHSUFOK0xHUlBJRF9SRVNfQkFTRSAiR+lvcmdpZW4iCiAgTEdSUElEX0FSTUVOSUFOK0xHUlBJRF9SRVNfQkFTRSAiQXJt6W5pZW4iCn0K