LyoKICogTG9jYWxlIGRlZmluaXRpb25zIGZvciBJY2VsYW5kaWMKICoKICogQ29weXJpZ2h0IDIwMDIgQWxleGFuZHJlIEp1bGxpYXJkIGZvciBDb2RlV2VhdmVycwogKgogKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCiAqIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgogKgogKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKICogTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KICoKICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwogKiBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCiAqIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EKICovCgojcHJhZ21hIGNvZGVfcGFnZSgxMjUyKQoKU1RSSU5HVEFCTEUgTEFOR1VBR0UgTEFOR19JQ0VMQU5ESUMsIFNVQkxBTkdfREVGQVVMVAp7CiAgTE9DQUxFX0ZPTlRTSUdOQVRVUkUgTCJceDAwMmZceDgwMDBceDM4MDhceDAwMDBceDAwMDBceDAwMDBceDAwMDBceDAwMDBceDAwMDFceDAwMDBceDAwMDBceDQwMDBceDAwMDNceDAwMDBceDAwMDBceGM1ZDQiCiAgTE9DQUxFX0lDQUxFTkRBUlRZUEUgIjEiCiAgTE9DQUxFX0lDRU5UVVJZICIxIgogIExPQ0FMRV9JQ09VTlRSWSAiMzU0IgogIExPQ0FMRV9JQ1VSUkRJR0lUUyAiMiIKICBMT0NBTEVfSUNVUlJFTkNZICIzIgogIExPQ0FMRV9JREFURSAiMSIKICBMT0NBTEVfSURBWUxaRVJPICIwIgogIExPQ0FMRV9JREVGQVVMVEFOU0lDT0RFUEFHRSAiMTI1MiIKICBMT0NBTEVfSURFRkFVTFRDT0RFUEFHRSAiODUwIgogIExPQ0FMRV9JREVGQVVMVENPVU5UUlkgIjM1NCIKICBMT0NBTEVfSURFRkFVTFRFQkNESUNDT0RFUEFHRSAiMjA4NzEiCiAgTE9DQUxFX0lERUZBVUxUTEFOR1VBR0UgIjA0MGYiCiAgTE9DQUxFX0lERUZBVUxUTUFDQ09ERVBBR0UgIjEwMDc5IgogIExPQ0FMRV9JREVGQVVMVFVOSVhDT0RFUEFHRSAiMjg2MDUiCiAgTE9DQUxFX0lESUdJVFMgIjIiCiAgTE9DQUxFX0lESUdJVFNVQlNUSVRVVElPTiAiMSIKICBMT0NBTEVfSUZJUlNUREFZT0ZXRUVLICIwIgogIExPQ0FMRV9JRklSU1RXRUVLT0ZZRUFSICIyIgogIExPQ0FMRV9JSU5UTENVUlJESUdJVFMgIjIiCiAgTE9DQUxFX0lMQU5HVUFHRSAiMDQwZiIKICBMT0NBTEVfSUxEQVRFICIxIgogIExPQ0FMRV9JTFpFUk8gIjEiCiAgTE9DQUxFX0lNRUFTVVJFICIwIgogIExPQ0FMRV9JTU9OTFpFUk8gIjAiCiAgTE9DQUxFX0lORUdDVVJSICI4IgogIExPQ0FMRV9JTkVHTlVNQkVSICIxIgogIExPQ0FMRV9JTkVHU0VQQllTUEFDRSAiMSIKICBMT0NBTEVfSU5FR1NJR05QT1NOICIxIgogIExPQ0FMRV9JTkVHU1lNUFJFQ0VERVMgIjAiCiAgTE9DQUxFX0lORVVUUkFMICIwIgogIExPQ0FMRV9JT1BUSU9OQUxDQUxFTkRBUiAiMCIKICBMT0NBTEVfSVBBUEVSU0laRSAiOSIKICBMT0NBTEVfSVBPU1NFUEJZU1BBQ0UgIjEiCiAgTE9DQUxFX0lQT1NTSUdOUE9TTiAiMSIKICBMT0NBTEVfSVBPU1NZTVBSRUNFREVTICIwIgogIExPQ0FMRV9JUkVBRElOR0xBWU9VVCAiMCIKICBMT0NBTEVfSVRJTUUgIjEiCiAgTE9DQUxFX0lUSU1FTUFSS1BPU04gIjAiCiAgTE9DQUxFX0lUTFpFUk8gIjEiCiAgTE9DQUxFX1MxMTU5ICIiCiAgTE9DQUxFX1MyMzU5ICIiCiAgTE9DQUxFX1NBQkJSRVZDVFJZTkFNRSAiSVNMIgogIExPQ0FMRV9TQUJCUkVWREFZTkFNRTEgIm3hbi4iCiAgTE9DQUxFX1NBQkJSRVZEQVlOQU1FMiAi/nJpLiIKICBMT0NBTEVfU0FCQlJFVkRBWU5BTUUzICJtafAuIgogIExPQ0FMRV9TQUJCUkVWREFZTkFNRTQgImZpbS4iCiAgTE9DQUxFX1NBQkJSRVZEQVlOQU1FNSAiZvZzLiIKICBMT0NBTEVfU0FCQlJFVkRBWU5BTUU2ICJsYXUuIgogIExPQ0FMRV9TQUJCUkVWREFZTkFNRTcgInN1bi4iCiAgTE9DQUxFX1NBQkJSRVZMQU5HTkFNRSAiSVNMIgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FMSAiamFuLiIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTIgImZlYi4iCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUUzICJtYXIuIgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FNCAiYXByLiIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTUgIm1h7SIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTYgImr6bi4iCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUU3ICJq+mwuIgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FOCAi4Wf6LiIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTkgInNlcC4iCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUUxMCAib2t0LiIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTExICJu83YuIgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FMTIgImRlcy4iCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUUxMyAiIgogIExPQ0FMRV9TQ09VTlRSWSAiSWNlbGFuZCIKICBMT0NBTEVfU0NVUlJFTkNZICJrci4iCiAgTE9DQUxFX1NEQVRFICIuIgogIExPQ0FMRV9TREFZTkFNRTEgIm3hbnVkYWd1ciIKICBMT0NBTEVfU0RBWU5BTUUyICL+cmnwanVkYWd1ciIKICBMT0NBTEVfU0RBWU5BTUUzICJtafB2aWt1ZGFndXIiCiAgTE9DQUxFX1NEQVlOQU1FNCAiZmltbXR1ZGFndXIiCiAgTE9DQUxFX1NEQVlOQU1FNSAiZvZzdHVkYWd1ciIKICBMT0NBTEVfU0RBWU5BTUU2ICJsYXVnYXJkYWd1ciIKICBMT0NBTEVfU0RBWU5BTUU3ICJzdW5udWRhZ3VyIgogIExPQ0FMRV9TREVDSU1BTCAiLCIKICBMT0NBTEVfU0VOR0NPVU5UUlkgIkljZWxhbmQiCiAgTE9DQUxFX1NFTkdDVVJSTkFNRSAiSWNlbGFuZGljIEtyb25hIgogIExPQ0FMRV9TRU5HTEFOR1VBR0UgIkljZWxhbmRpYyIKICBMT0NBTEVfU0dST1VQSU5HICIzOzAiCiAgTE9DQUxFX1NJTlRMU1lNQk9MICJJU0siCiAgTE9DQUxFX1NJU08zMTY2Q1RSWU5BTUUgIklTIgogIExPQ0FMRV9TSVNPNjM5TEFOR05BTUUgImlzIgogIExPQ0FMRV9TTEFOR1VBR0UgIkljZWxhbmRpYyIKICBMT0NBTEVfU0xJU1QgIjsiCiAgTE9DQUxFX1NMT05HREFURSAiZC4gTU1NTSB5eXl5IgogIExPQ0FMRV9TTU9OREVDSU1BTFNFUCAiLCIKICBMT0NBTEVfU01PTkdST1VQSU5HICIzOzAiCiAgTE9DQUxFX1NNT05USE5BTUUxICJqYW76YXIiCiAgTE9DQUxFX1NNT05USE5BTUUyICJmZWJy+mFyIgogIExPQ0FMRV9TTU9OVEhOQU1FMyAibWFycyIKICBMT0NBTEVfU01PTlRITkFNRTQgImFwcu1sIgogIExPQ0FMRV9TTU9OVEhOQU1FNSAibWHtIgogIExPQ0FMRV9TTU9OVEhOQU1FNiAiavpu7SIKICBMT0NBTEVfU01PTlRITkFNRTcgImr6bO0iCiAgTE9DQUxFX1NNT05USE5BTUU4ICLhZ/pzdCIKICBMT0NBTEVfU01PTlRITkFNRTkgInNlcHRlbWJlciIKICBMT0NBTEVfU01PTlRITkFNRTEwICJva3TzYmVyIgogIExPQ0FMRV9TTU9OVEhOQU1FMTEgIm7zdmVtYmVyIgogIExPQ0FMRV9TTU9OVEhOQU1FMTIgImRlc2VtYmVyIgogIExPQ0FMRV9TTU9OVEhOQU1FMTMgIiIKICBMT0NBTEVfU01PTlRIT1VTQU5EU0VQICIuIgogIExPQ0FMRV9TTkFNRSAiaXMtSVMiCiAgTE9DQUxFX1NOQVRJVkVDVFJZTkFNRSAizXNsYW5kIgogIExPQ0FMRV9TTkFUSVZFQ1VSUk5BTUUgIkty825hIgogIExPQ0FMRV9TTkFUSVZFRElHSVRTICIwMTIzNDU2Nzg5IgogIExPQ0FMRV9TTkFUSVZFRElTUExBWU5BTUUgIu1zbGVuc2thICjNc2xhbmQpIgogIExPQ0FMRV9TTkFUSVZFTEFOR05BTUUgIu1zbGVuc2thIgogIExPQ0FMRV9TTkVHQVRJVkVTSUdOICItIgogIExPQ0FMRV9TUE9TSVRJVkVTSUdOICIiCiAgTE9DQUxFX1NTQ1JJUFRTICJMYXRuOyIKICBMT0NBTEVfU1NIT1JUREFURSAiZC5NLnl5eXkiCiAgTE9DQUxFX1NTT1JUTkFNRSAiRGVmYXVsdCIKICBMT0NBTEVfU1RIT1VTQU5EICIuIgogIExPQ0FMRV9TVElNRSAiOiIKICBMT0NBTEVfU1RJTUVGT1JNQVQgIkhIOm1tOnNzIgogIExPQ0FMRV9TWUVBUk1PTlRIICJNTU1NIHl5eXkiCgogIExHUlBJRF9XRVNURVJOX0VVUk9QRStMR1JQSURfUkVTX0JBU0UgIldlc3Rlcm4gRXVyb3BlIGFuZCBVbml0ZWQgU3RhdGVzIgogIExHUlBJRF9DRU5UUkFMX0VVUk9QRStMR1JQSURfUkVTX0JBU0UgIkNlbnRyYWwgRXVyb3BlIgogIExHUlBJRF9CQUxUSUMrTEdSUElEX1JFU19CQVNFICJCYWx0aWMiCiAgTEdSUElEX0dSRUVLK0xHUlBJRF9SRVNfQkFTRSAiR3JlZWsiCiAgTEdSUElEX0NZUklMTElDK0xHUlBJRF9SRVNfQkFTRSAiQ3lyaWxsaWMiCiAgTEdSUElEX1RVUktJU0grTEdSUElEX1JFU19CQVNFICJUdXJraWMiCiAgTEdSUElEX0pBUEFORVNFK0xHUlBJRF9SRVNfQkFTRSAiSmFwYW5lc2UiCiAgTEdSUElEX0tPUkVBTitMR1JQSURfUkVTX0JBU0UgIktvcmVhbiIKICBMR1JQSURfVFJBRElUSU9OQUxfQ0hJTkVTRStMR1JQSURfUkVTX0JBU0UgIlRyYWRpdGlvbmFsIENoaW5lc2UiCiAgTEdSUElEX1NJTVBMSUZJRURfQ0hJTkVTRStMR1JQSURfUkVTX0JBU0UgIlNpbXBsaWZpZWQgQ2hpbmVzZSIKICBMR1JQSURfVEhBSStMR1JQSURfUkVTX0JBU0UgIlRoYWkiCiAgTEdSUElEX0hFQlJFVytMR1JQSURfUkVTX0JBU0UgIkhlYnJldyIKICBMR1JQSURfQVJBQklDK0xHUlBJRF9SRVNfQkFTRSAiQXJhYmljIiAKICBMR1JQSURfVklFVE5BTUVTRStMR1JQSURfUkVTX0JBU0UgIlZpZXRuYW1lc2UiCiAgTEdSUElEX0lORElDK0xHUlBJRF9SRVNfQkFTRSAiSW5kaWMiCiAgTEdSUElEX0dFT1JHSUFOK0xHUlBJRF9SRVNfQkFTRSAiR2VvcmdpYW4iCiAgTEdSUElEX0FSTUVOSUFOK0xHUlBJRF9SRVNfQkFTRSAiQXJtZW5pYW4iCn0K