LyoKICoJT0xFMk5MUyBsaWJyYXJ5CiAqICAgICAgQXJhYmljIChTYXVkaSBBcmFiaWEpCiAqCiAqCShhcmFiaWMgc3RyaW5ncyBpbiBpc28tODg1OS02KQogKgogKiBDb3B5cmlnaHQgMTk5OCBNYXJjZWwgQmF1cgogKgogKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCiAqIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgogKgogKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKICogTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KICoKICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwogKiBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCiAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BICAwMjExMS0xMzA3ICBVU0EKICovCgpMT0NWQUwoTE9DQUxFX0lMQU5HVUFHRSwiMDQwMSIpCi8qIExPQ1ZBTChMT0NBTEVfU0xBTkdVQUdFLCIiKSAqLwpMT0NWQUwoTE9DQUxFX1NFTkdMQU5HVUFHRSwiQXJhYmljIChTYXVkaSBBcmFiaWEpIikKTE9DVkFMKExPQ0FMRV9TQUJCUkVWTEFOR05BTUUsImFyYSIpCi8qIExPQ1ZBTChMT0NBTEVfU05BVElWRUxBTkdOQU1FLCIiKSAqLwovKiBMT0NWQUwoTE9DQUxFX0lDT1VOVFJZLCIiKSAqLwovKiBMT0NWQUwoTE9DQUxFX1NDT1VOVFJZLCIiKSAqLwpMT0NWQUwoTE9DQUxFX1NFTkdDT1VOVFJZLCJTYXVkaSBBcmFiaWEiKQpMT0NWQUwoTE9DQUxFX1NBQkJSRVZDVFJZTkFNRSwiU0FVIikKLyogTE9DVkFMKExPQ0FMRV9TTkFUSVZFQ1RSWU5BTUUsIiIpICovCkxPQ1ZBTChMT0NBTEVfSURFRkFVTFRMQU5HVUFHRSwiMDQwMSIpCi8qIExPQ1ZBTChMT0NBTEVfSURFRkFVTFRDT1VOVFJZLCIiKSAqLwovKiBMT0NWQUwoTE9DQUxFX0lERUZBVUxUQ09ERVBBR0UpICovCkxPQ1ZBTChMT0NBTEVfSURFRkFVTFRBTlNJQ09ERVBBR0UsIjEyNTYiKQovKiBMT0NWQUwoTE9DQUxFX1NMSVNULCIiKSAqLwovKiBMT0NWQUwoTE9DQUxFX0lNRUFTVVJFLCIiKSAqLwpMT0NWQUwoTE9DQUxFX1NERUNJTUFMLCIsIikKTE9DVkFMKExPQ0FMRV9TVEhPVVNBTkQsIi4iKQovKiBMT0NWQUwoTE9DQUxFX1NHUk9VUElORykgKi8KLyogTE9DVkFMKExPQ0FMRV9JRElHSVRTLCIyIikgKi8KLyogTE9DVkFMKExPQ0FMRV9JTFpFUk8sIjEiKSAqLwovKiBMT0NWQUwoTE9DQUxFX0lORUdOVU1CRVIpICovCkxPQ1ZBTChMT0NBTEVfU05BVElWRURJR0lUUywiMDEyMzQ1Njc4OSIpCi8qIExPQ1ZBTChMT0NBTEVfU0NVUlJFTkNZLCIiKSAqLwpMT0NWQUwoTE9DQUxFX1NJTlRMU1lNQk9MLCJBRUQiKQpMT0NWQUwoTE9DQUxFX1NNT05ERUNJTUFMU0VQLCIsIikKTE9DVkFMKExPQ0FMRV9TTU9OVEhPVVNBTkRTRVAsIi4iKQovKiBMT0NWQUwoTE9DQUxFX1NNT05HUk9VUElORykgKi8KLyogTE9DVkFMKExPQ0FMRV9JQ1VSUkRJR0lUUywiMiIpICovCi8qIExPQ1ZBTChMT0NBTEVfSUlOVExDVVJSRElHSVRTKSAqLwovKiBMT0NWQUwoTE9DQUxFX0lDVVJSRU5DWSwiMyIpICovCi8qIExPQ1ZBTChMT0NBTEVfSU5FR0NVUlIsIjgiKSAqLwpMT0NWQUwoTE9DQUxFX1NEQVRFLCIvIikKTE9DVkFMKExPQ0FMRV9TVElNRSwiOiIpCkxPQ1ZBTChMT0NBTEVfU1NIT1JUREFURSwgInl5eXkvTU0vZGQiKQpMT0NWQUwoTE9DQUxFX1NMT05HREFURSwgIuUgeXl5eSBNTU1NrCBkZCBkZGRkIikKTE9DVkFMKExPQ0FMRV9TVElNRUZPUk1BVCwgInR0IGg6bW06c3MiKQovKiBMT0NWQUwoTE9DQUxFX0lEQVRFLCIxIikgKi8KLyogTE9DVkFMKExPQ0FMRV9JTERBVEUpICovCkxPQ1ZBTChMT0NBTEVfSVRJTUUsIjEiKQovKiBMT0NWQUwoTE9DQUxFX0lUSU1FTUFSS1BPU04pICovCi8qIExPQ1ZBTChMT0NBTEVfSUNFTlRVUlkpICovCkxPQ1ZBTChMT0NBTEVfSVRMWkVSTywiMSIpCi8qIExPQ1ZBTChMT0NBTEVfSURBWUxaRVJPKSAqLwovKiBMT0NWQUwoTE9DQUxFX0lNT05MWkVSTykgKi8KTE9DVkFMKExPQ0FMRV9TMTE1OSwgItUiKQpMT0NWQUwoTE9DQUxFX1MyMzU5LCAi5SIpCkxPQ1ZBTChMT0NBTEVfSUNBTEVOREFSVFlQRSwgIjEiKQovKiBMT0NWQUwoTE9DQUxFX0lPUFRJT05BTENBTEVOREFSKSAqLwovKiBMT0NWQUwoTE9DQUxFX0lGSVJTVERBWU9GV0VFSykgKi8KLyogTE9DVkFMKExPQ0FMRV9JRklSU1RXRUVLT0ZZRUFSKSAqLwoKTE9DVkFMKExPQ0FMRV9TREFZTkFNRTEsIsfkw8vm6uYiKQpMT0NWQUwoTE9DQUxFX1NEQVlOQU1FMiwix+TL5MfLx8EiKQpMT0NWQUwoTE9DQUxFX1NEQVlOQU1FMywix+TD0cjZx8EiKQpMT0NWQUwoTE9DQUxFX1NEQVlOQU1FNCwix+TO5erTIikKTE9DVkFMKExPQ0FMRV9TREFZTkFNRTUsIsfkzOXZ5yIpCkxPQ1ZBTChMT0NBTEVfU0RBWU5BTUU2LCLH5NPIyiIpCkxPQ1ZBTChMT0NBTEVfU0RBWU5BTUU3LCLH5MPNzyIpCgpMT0NWQUwoTE9DQUxFX1NBQkJSRVZEQVlOQU1FMSwi5iIpCkxPQ1ZBTChMT0NBTEVfU0FCQlJFVkRBWU5BTUUyLCLLIikKTE9DVkFMKExPQ0FMRV9TQUJCUkVWREFZTkFNRTMsItEiKQpMT0NWQUwoTE9DQUxFX1NBQkJSRVZEQVlOQU1FNCwiziIpCkxPQ1ZBTChMT0NBTEVfU0FCQlJFVkRBWU5BTUU1LCLMIikKTE9DVkFMKExPQ0FMRV9TQUJCUkVWREFZTkFNRTYsItMiKQpMT0NWQUwoTE9DQUxFX1NBQkJSRVZEQVlOQU1FNywizSIpCgpMT0NWQUwoTE9DQUxFX1NNT05USE5BTUUxLCLq5sfq0SIpCkxPQ1ZBTChMT0NBTEVfU01PTlRITkFNRTIsIuHI0cfq0SIpCkxPQ1ZBTChMT0NBTEVfU01PTlRITkFNRTMsIuXH0dMiKQpMT0NWQUwoTE9DQUxFX1NNT05USE5BTUU0LCLFyNHq5CIpCkxPQ1ZBTChMT0NBTEVfU01PTlRITkFNRTUsIuXH6ugiKQpMT0NWQUwoTE9DQUxFX1NNT05USE5BTUU2LCLq6Obq5yIpCkxPQ1ZBTChMT0NBTEVfU01PTlRITkFNRTcsIuro5OrnIikKTE9DVkFMKExPQ0FMRV9TTU9OVEhOQU1FOCwiw9rT19MiKQpMT0NWQUwoTE9DQUxFX1NNT05USE5BTUU5LCLTyMrlyNEiKQpMT0NWQUwoTE9DQUxFX1NNT05USE5BTUUxMCwiw+PK6MjRIikKTE9DVkFMKExPQ0FMRV9TTU9OVEhOQU1FMTEsIubo4eXI0SIpCkxPQ1ZBTChMT0NBTEVfU01PTlRITkFNRTEyLCLP6tPlyNEiKQovKiBMT0NWQUwoTE9DQUxFX1NNT05USE5BTUUxMywiIikgKi8KCkxPQ1ZBTChMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTEsIurmxyIpCkxPQ1ZBTChMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTIsIuHI0SIpCkxPQ1ZBTChMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTMsIuXH0SIpCkxPQ1ZBTChMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTQsIsXI0SIpCkxPQ1ZBTChMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTUsIuXH6iIpCkxPQ1ZBTChMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTYsIuro5iIpCkxPQ1ZBTChMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTcsIuro5CIpCkxPQ1ZBTChMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTgsIsPa0yIpCkxPQ1ZBTChMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTksItPI5SIpCkxPQ1ZBTChMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTEwLCLD48oiKQpMT0NWQUwoTE9DQUxFX1NBQkJSRVZNT05USE5BTUUxMSwi5ujhIikKTE9DVkFMKExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FMTIsIs/q0yIpCi8qIExPQ1ZBTChMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTEzLCIiKSAqLwoKTE9DVkFMKExPQ0FMRV9TUE9TSVRJVkVTSUdOLCAiIikKTE9DVkFMKExPQ0FMRV9TTkVHQVRJVkVTSUdOLCAiLSIpCi8qIExPQ1ZBTChMT0NBTEVfSVBPU1NJR05QT1NOLCAiIikgKi8KLyogTE9DVkFMKExPQ0FMRV9JTkVHU0lHTlBPU04sICIiKSAqLwovKiBMT0NWQUwoTE9DQUxFX0lQT1NTWU1QUkVDRURFUywgIiIpICovCi8qIExPQ1ZBTChMT0NBTEVfSVBPU1NFUEJZU1BBQ0UsICIiKSAqLwovKiBMT0NWQUwoTE9DQUxFX0lORUdTWU1QUkVDRURFUywgIiIpICovCi8qIExPQ1ZBTChMT0NBTEVfSU5FR1NFUEJZU1BBQ0UsICIiKSAqLwovKiBMT0NWQUwoTE9DQUxFX0ZPTlRTSUdOQVRVUkUsICIiKSAqLwpMT0NWQUwoTE9DQUxFX1NJU082MzlMQU5HTkFNRSwiYXIiKQpMT0NWQUwoTE9DQUxFX1NJU08zMTY2Q1RSWU5BTUUsIlNBIikK