LyoKICogTG9jYWxlIGRlZmluaXRpb25zIGZvciBGcmVuY2ggKENhbmFkYSkKICoKICogQ29weXJpZ2h0IDIwMDIgQWxleGFuZHJlIEp1bGxpYXJkIGZvciBDb2Rld2VhdmVycwogKgogKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCiAqIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgogKgogKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKICogTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KICoKICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwogKiBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCiAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BICAwMjExMS0xMzA3ICBVU0EKICovCgojcHJhZ21hIGNvZGVfcGFnZSgxMjUyKQoKU1RSSU5HVEFCTEUgTEFOR1VBR0UgTEFOR19GUkVOQ0gsIFNVQkxBTkdfRlJFTkNIX0NBTkFESUFOCnsKICBMT0NBTEVfRk9OVFNJR05BVFVSRSBMIlx4MDAyZlx4ODAwMFx4MzgwOFx4MDAwMFx4MDAwMFx4MDAwMFx4MDAwMFx4MDAwMFx4MDAwMVx4MDAwMFx4MDAwMFx4NDAwMFx4MDAxM1x4MDAwMFx4MDAwMFx4YzVkNCIKICBMT0NBTEVfSUNBTEVOREFSVFlQRSAiMSIKICBMT0NBTEVfSUNFTlRVUlkgIjEiCiAgTE9DQUxFX0lDT1VOVFJZICIyIgogIExPQ0FMRV9JQ1VSUkRJR0lUUyAiMiIKICBMT0NBTEVfSUNVUlJFTkNZICIzIgogIExPQ0FMRV9JREFURSAiMiIKICBMT0NBTEVfSURBWUxaRVJPICIxIgogIExPQ0FMRV9JREVGQVVMVEFOU0lDT0RFUEFHRSAiMTI1MiIKICBMT0NBTEVfSURFRkFVTFRDT0RFUEFHRSAiODUwIgogIExPQ0FMRV9JREVGQVVMVENPVU5UUlkgIjIiCiAgTE9DQUxFX0lERUZBVUxURUJDRElDQ09ERVBBR0UgIjIwMjk3IgogIExPQ0FMRV9JREVGQVVMVExBTkdVQUdFICIwYzBjIgogIExPQ0FMRV9JREVGQVVMVE1BQ0NPREVQQUdFICIxMDAwMCIKICBMT0NBTEVfSURJR0lUUyAiMiIKICBMT0NBTEVfSURJR0lUU1VCU1RJVFVUSU9OICIxIgogIExPQ0FMRV9JRklSU1REQVlPRldFRUsgIjYiCiAgTE9DQUxFX0lGSVJTVFdFRUtPRllFQVIgIjAiCiAgTE9DQUxFX0lJTlRMQ1VSUkRJR0lUUyAiMiIKICBMT0NBTEVfSUxBTkdVQUdFICIwYzBjIgogIExPQ0FMRV9JTERBVEUgIjEiCiAgTE9DQUxFX0lMWkVSTyAiMSIKICBMT0NBTEVfSU1FQVNVUkUgIjAiCiAgTE9DQUxFX0lNT05MWkVSTyAiMSIKICBMT0NBTEVfSU5FR0NVUlIgIjQiCiAgTE9DQUxFX0lORUdOVU1CRVIgIjEiCiAgTE9DQUxFX0lORUdTRVBCWVNQQUNFICIwIgogIExPQ0FMRV9JTkVHU0lHTlBPU04gIjAiCiAgTE9DQUxFX0lORUdTWU1QUkVDRURFUyAiMCIKICBMT0NBTEVfSU9QVElPTkFMQ0FMRU5EQVIgIjAiCiAgTE9DQUxFX0lQQVBFUlNJWkUgIjEiCiAgTE9DQUxFX0lQT1NTRVBCWVNQQUNFICIxIgogIExPQ0FMRV9JUE9TU0lHTlBPU04gIjEiCiAgTE9DQUxFX0lQT1NTWU1QUkVDRURFUyAiMCIKICBMT0NBTEVfSVRJTUUgIjEiCiAgTE9DQUxFX0lUSU1FTUFSS1BPU04gIjAiCiAgTE9DQUxFX0lUTFpFUk8gIjEiCiAgTE9DQUxFX1MxMTU5ICIiCiAgTE9DQUxFX1MyMzU5ICIiCiAgTE9DQUxFX1NBQkJSRVZDVFJZTkFNRSAiQ0FOIgogIExPQ0FMRV9TQUJCUkVWREFZTkFNRTEgImx1bi4iCiAgTE9DQUxFX1NBQkJSRVZEQVlOQU1FMiAibWFyLiIKICBMT0NBTEVfU0FCQlJFVkRBWU5BTUUzICJtZXIuIgogIExPQ0FMRV9TQUJCUkVWREFZTkFNRTQgImpldS4iCiAgTE9DQUxFX1NBQkJSRVZEQVlOQU1FNSAidmVuLiIKICBMT0NBTEVfU0FCQlJFVkRBWU5BTUU2ICJzYW0uIgogIExPQ0FMRV9TQUJCUkVWREFZTkFNRTcgImRpbS4iCiAgTE9DQUxFX1NBQkJSRVZMQU5HTkFNRSAiRlJDIgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FMSAiamFudi4iCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUUyICJm6XZyLiIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTMgIm1hcnMiCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUU0ICJhdnIuIgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FNSAibWFpIgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FNiAianVpbiIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTcgImp1aWwuIgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FOCAiYW/7dCIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTkgInNlcHQuIgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FMTAgIm9jdC4iCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUUxMSAibm92LiIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTEyICJk6WMuIgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FMTMgIiIKICBMT0NBTEVfU0NPVU5UUlkgIkNhbmFkYSIKICBMT0NBTEVfU0NVUlJFTkNZICIkIgogIExPQ0FMRV9TREFURSAiLSIKICBMT0NBTEVfU0RBWU5BTUUxICJsdW5kaSIKICBMT0NBTEVfU0RBWU5BTUUyICJtYXJkaSIKICBMT0NBTEVfU0RBWU5BTUUzICJtZXJjcmVkaSIKICBMT0NBTEVfU0RBWU5BTUU0ICJqZXVkaSIKICBMT0NBTEVfU0RBWU5BTUU1ICJ2ZW5kcmVkaSIKICBMT0NBTEVfU0RBWU5BTUU2ICJzYW1lZGkiCiAgTE9DQUxFX1NEQVlOQU1FNyAiZGltYW5jaGUiCiAgTE9DQUxFX1NERUNJTUFMICIsIgogIExPQ0FMRV9TRU5HQ09VTlRSWSAiQ2FuYWRhIgogIExPQ0FMRV9TRU5HQ1VSUk5BTUUgIkNhbmFkaWFuIERvbGxhciIKICBMT0NBTEVfU0VOR0xBTkdVQUdFICJGcmVuY2giCiAgTE9DQUxFX1NHUk9VUElORyAiMzswIgogIExPQ0FMRV9TSU5UTFNZTUJPTCAiQ0FEIgogIExPQ0FMRV9TSVNPMzE2NkNUUllOQU1FICJDQSIKICBMT0NBTEVfU0lTTzYzOUxBTkdOQU1FICJmciIKICBMT0NBTEVfU0xBTkdVQUdFICJGcmVuY2ggKENhbmFkYSkiCiAgTE9DQUxFX1NMSVNUICI7IgogIExPQ0FMRV9TTE9OR0RBVEUgImQgTU1NTSwgeXl5eSIKICBMT0NBTEVfU01PTkRFQ0lNQUxTRVAgIiwiCiAgTE9DQUxFX1NNT05HUk9VUElORyAiMzswIgogIExPQ0FMRV9TTU9OVEhOQU1FMSAiamFudmllciIKICBMT0NBTEVfU01PTlRITkFNRTIgImbpdnJpZXIiCiAgTE9DQUxFX1NNT05USE5BTUUzICJtYXJzIgogIExPQ0FMRV9TTU9OVEhOQU1FNCAiYXZyaWwiCiAgTE9DQUxFX1NNT05USE5BTUU1ICJtYWkiCiAgTE9DQUxFX1NNT05USE5BTUU2ICJqdWluIgogIExPQ0FMRV9TTU9OVEhOQU1FNyAianVpbGxldCIKICBMT0NBTEVfU01PTlRITkFNRTggImFv+3QiCiAgTE9DQUxFX1NNT05USE5BTUU5ICJzZXB0ZW1icmUiCiAgTE9DQUxFX1NNT05USE5BTUUxMCAib2N0b2JyZSIKICBMT0NBTEVfU01PTlRITkFNRTExICJub3ZlbWJyZSIKICBMT0NBTEVfU01PTlRITkFNRTEyICJk6WNlbWJyZSIKICBMT0NBTEVfU01PTlRITkFNRTEzICIiCiAgTE9DQUxFX1NNT05USE9VU0FORFNFUCAioCIKICBMT0NBTEVfU05BVElWRUNUUllOQU1FICJDYW5hZGEiCiAgTE9DQUxFX1NOQVRJVkVDVVJSTkFNRSAiRG9sbGFyIGNhbmFkaWVuIgogIExPQ0FMRV9TTkFUSVZFRElHSVRTICIwMTIzNDU2Nzg5IgogIExPQ0FMRV9TTkFUSVZFTEFOR05BTUUgImZyYW7nYWlzIgogIExPQ0FMRV9TTkVHQVRJVkVTSUdOICItIgogIExPQ0FMRV9TUE9TSVRJVkVTSUdOICIiCiAgTE9DQUxFX1NTSE9SVERBVEUgInl5eXktTU0tZGQiCiAgTE9DQUxFX1NTT1JUTkFNRSAiRGVmYXVsdCIKICBMT0NBTEVfU1RIT1VTQU5EICKgIgogIExPQ0FMRV9TVElNRSAiOiIKICBMT0NBTEVfU1RJTUVGT1JNQVQgIkhIOm1tOnNzIgogIExPQ0FMRV9TWUVBUk1PTlRIICJNTU1NLCB5eXl5Igp9Cg==