LyoKICogICAgT0xFMk5MUyBsaWJyYXJ5CiAqICAgIFRoYWkKICoKICogQ29weXJpZ2h0IDE5OTggTWFyY2VsIEJhdXIKICoKICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCiAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgogKiB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KICoKICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCiAqIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiAqCiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKICogTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQogKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAgMDIxMTEtMTMwNyAgVVNBCiAqLwpMT0NWQUwoTE9DQUxFX0lMQU5HVUFHRSwgIjA0MWUiKQpMT0NWQUwoTE9DQUxFX1NMQU5HVUFHRSwgIlRoYWkiKQpMT0NWQUwoTE9DQUxFX1NFTkdMQU5HVUFHRSwgIlRoYWkiKQpMT0NWQUwoTE9DQUxFX1NBQkJSRVZMQU5HTkFNRSwgIlRIQSIpCkxPQ1ZBTChMT0NBTEVfU05BVElWRUxBTkdOQU1FLCAi5LfCIikKTE9DVkFMKExPQ0FMRV9JQ09VTlRSWSwgIjY2IikKTE9DVkFMKExPQ0FMRV9TQ09VTlRSWSwgIlRoYWlsYW5kIikKTE9DVkFMKExPQ0FMRV9TRU5HQ09VTlRSWSwgIlRoYWlsYW5kIikKTE9DVkFMKExPQ0FMRV9TQUJCUkVWQ1RSWU5BTUUsICJUSEEiKQpMT0NWQUwoTE9DQUxFX1NOQVRJVkVDVFJZTkFNRSwgIuS3wiIpCkxPQ1ZBTChMT0NBTEVfSURFRkFVTFRMQU5HVUFHRSwgIjA0MWUiKQpMT0NWQUwoTE9DQUxFX0lERUZBVUxUQ09VTlRSWSwgIjY2IikKTE9DVkFMKExPQ0FMRV9JREVGQVVMVENPREVQQUdFLCAiODc0IikKTE9DVkFMKExPQ0FMRV9JREVGQVVMVEFOU0lDT0RFUEFHRSwgIjg3NCIpCkxPQ1ZBTChMT0NBTEVfSURFRkFVTFRNQUNDT0RFUEFHRSwgIiIiIikKTE9DVkFMKExPQ0FMRV9TTElTVCwgIiwiKQpMT0NWQUwoTE9DQUxFX0lNRUFTVVJFLCAiMCIpCkxPQ1ZBTChMT0NBTEVfU0RFQ0lNQUwsICIuIikKTE9DVkFMKExPQ0FMRV9TVEhPVVNBTkQsICIsIikKTE9DVkFMKExPQ0FMRV9TR1JPVVBJTkcsICIzOzAiKQpMT0NWQUwoTE9DQUxFX0lESUdJVFMsICIyIikKTE9DVkFMKExPQ0FMRV9JTFpFUk8sICIwIikKTE9DVkFMKExPQ0FMRV9JTkVHTlVNQkVSLCAiMSIpCkxPQ1ZBTChMT0NBTEVfU05BVElWRURJR0lUUywgIvDx8vP09fb3+PkiKQpMT0NWQUwoTE9DQUxFX1NDVVJSRU5DWSwgIt8iKQpMT0NWQUwoTE9DQUxFX1NJTlRMU1lNQk9MLCAiVEhCIikKTE9DVkFMKExPQ0FMRV9TTU9OREVDSU1BTFNFUCwgIi4iKQpMT0NWQUwoTE9DQUxFX1NNT05USE9VU0FORFNFUCwgIiwiKQpMT0NWQUwoTE9DQUxFX1NNT05HUk9VUElORywgIjM7MCIpCkxPQ1ZBTChMT0NBTEVfSUNVUlJESUdJVFMsICIyIikKTE9DVkFMKExPQ0FMRV9JSU5UTENVUlJESUdJVFMsICIyIikKTE9DVkFMKExPQ0FMRV9JQ1VSUkVOQ1ksICIwIikKTE9DVkFMKExPQ0FMRV9JTkVHQ1VSUiwgIjEiKQpMT0NWQUwoTE9DQUxFX1NEQVRFLCAiLyIpCkxPQ1ZBTChMT0NBTEVfU1RJTUUsICI6IikKTE9DVkFMKExPQ0FMRV9TU0hPUlREQVRFLCAiZC9NL3l5IikKTE9DVkFMKExPQ0FMRV9TTE9OR0RBVEUsICJkIE1NTU0geXl5eSIpCkxPQ1ZBTChMT0NBTEVfU1RJTUVGT1JNQVQsICJIOm1tOnNzIikKTE9DVkFMKExPQ0FMRV9JREFURSwgIjEiKQpMT0NWQUwoTE9DQUxFX0lMREFURSwgIjEiKQpMT0NWQUwoTE9DQUxFX0lUSU1FLCAiMSIpCkxPQ1ZBTChMT0NBTEVfSVRJTUVNQVJLUE9TTiwgIjAiKQpMT0NWQUwoTE9DQUxFX0lDRU5UVVJZLCAiMCIpCkxPQ1ZBTChMT0NBTEVfSVRMWkVSTywgIjAiKQpMT0NWQUwoTE9DQUxFX0lEQVlMWkVSTywgIjAiKQpMT0NWQUwoTE9DQUxFX0lNT05MWkVSTywgIjAiKQpMT0NWQUwoTE9DQUxFX1MxMTU5LCAiQU0iKQpMT0NWQUwoTE9DQUxFX1MyMzU5LCAiUE0iKQpMT0NWQUwoTE9DQUxFX0lDQUxFTkRBUlRZUEUsICI3IikKTE9DVkFMKExPQ0FMRV9JT1BUSU9OQUxDQUxFTkRBUiwgIjciKQpMT0NWQUwoTE9DQUxFX0lGSVJTVERBWU9GV0VFSywgIjAiKQpMT0NWQUwoTE9DQUxFX0lGSVJTVFdFRUtPRllFQVIsICIwIikKTE9DVkFMKExPQ0FMRV9TREFZTkFNRTEsICKo0bm3w+wiKQpMT0NWQUwoTE9DQUxFX1NEQVlOQU1FMiwgIs3Rp6TSwyIpCkxPQ1ZBTChMT0NBTEVfU0RBWU5BTUUzLCAivti4IikKTE9DVkFMKExPQ0FMRV9TREFZTkFNRTQsICK+xMvRyrq01SIpCkxPQ1ZBTChMT0NBTEVfU0RBWU5BTUU1LCAiyNihw+wiKQpMT0NWQUwoTE9DQUxFX1NEQVlOQU1FNiwgIuDK0sPsIikKTE9DVkFMKExPQ0FMRV9TREFZTkFNRTcsICLN0rfUtcLsIikKTE9DVkFMKExPQ0FMRV9TQUJCUkVWREFZTkFNRTEsICKoLiIpCkxPQ1ZBTChMT0NBTEVfU0FCQlJFVkRBWU5BTUUyLCAizS4iKQpMT0NWQUwoTE9DQUxFX1NBQkJSRVZEQVlOQU1FMywgIr4uIikKTE9DVkFMKExPQ0FMRV9TQUJCUkVWREFZTkFNRTQsICK+xC4iKQpMT0NWQUwoTE9DQUxFX1NBQkJSRVZEQVlOQU1FNSwgIsguIikKTE9DVkFMKExPQ0FMRV9TQUJCUkVWREFZTkFNRTYsICLKLiIpCkxPQ1ZBTChMT0NBTEVfU0FCQlJFVkRBWU5BTUU3LCAizdIuIikKTE9DVkFMKExPQ0FMRV9TTU9OVEhOQU1FMSwgIsGhw9KkwSIpCkxPQ1ZBTChMT0NBTEVfU01PTlRITkFNRTIsICKh2MHA0r7RubjsIikKTE9DVkFMKExPQ0FMRV9TTU9OVEhOQU1FMywgIsHVudKkwSIpCkxPQ1ZBTChMT0NBTEVfU01PTlRITkFNRTQsICLgwcnSwrkiKQpMT0NWQUwoTE9DQUxFX1NNT05USE5BTUU1LCAivsTJwNKkwSIpCkxPQ1ZBTChMT0NBTEVfU01PTlRITkFNRTYsICLB1LbYudLCuSIpCkxPQ1ZBTChMT0NBTEVfU01PTlRITkFNRTcsICKhw6Gu0qTBIikKTE9DVkFMKExPQ0FMRV9TTU9OVEhOQU1FOCwgIsrUp8vSpMEiKQpMT0NWQUwoTE9DQUxFX1NNT05USE5BTUU5LCAiodG5wtLCuSIpCkxPQ1ZBTChMT0NBTEVfU01PTlRITkFNRTEwLCAitdjF0qTBIikKTE9DVkFMKExPQ0FMRV9TTU9OVEhOQU1FMTEsICK+xMio1KHSwrkiKQpMT0NWQUwoTE9DQUxFX1NNT05USE5BTUUxMiwgIrjRucfSpMEiKQpMT0NWQUwoTE9DQUxFX1NNT05USE5BTUUxMywgIiIpCkxPQ1ZBTChMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTEsICLBLqQuIikKTE9DVkFMKExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FMiwgIqEuvi4iKQpMT0NWQUwoTE9DQUxFX1NBQkJSRVZNT05USE5BTUUzLCAiwdUupC4iKQpMT0NWQUwoTE9DQUxFX1NBQkJSRVZNT05USE5BTUU0LCAi4MEuwi4iKQpMT0NWQUwoTE9DQUxFX1NBQkJSRVZNT05USE5BTUU1LCAivi6kLiIpCkxPQ1ZBTChMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTYsICLB1C7CLiIpCkxPQ1ZBTChMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTcsICKhLqQuIikKTE9DVkFMKExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FOCwgIsoupC4iKQpMT0NWQUwoTE9DQUxFX1NBQkJSRVZNT05USE5BTUU5LCAioS7CLiIpCkxPQ1ZBTChMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTEwLCAitS6kLiIpCkxPQ1ZBTChMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTExLCAivi7CLiIpCkxPQ1ZBTChMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTEyLCAiuC6kLiIpCkxPQ1ZBTChMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTEzLCAiIikKTE9DVkFMKExPQ0FMRV9TUE9TSVRJVkVTSUdOLCAiIikKTE9DVkFMKExPQ0FMRV9TTkVHQVRJVkVTSUdOLCAiLSIpCkxPQ1ZBTChMT0NBTEVfSVBPU1NJR05QT1NOLCAiMyIpCkxPQ1ZBTChMT0NBTEVfSU5FR1NJR05QT1NOLCAiMyIpCkxPQ1ZBTChMT0NBTEVfSVBPU1NZTVBSRUNFREVTLCAiMSIpCkxPQ1ZBTChMT0NBTEVfSVBPU1NFUEJZU1BBQ0UsICIwIikKTE9DVkFMKExPQ0FMRV9JTkVHU1lNUFJFQ0VERVMsICIxIikKTE9DVkFMKExPQ0FMRV9JTkVHU0VQQllTUEFDRSwgIjAiKQpMT0NWQUwoTE9DQUxFX0ZPTlRTSUdOQVRVUkUsICIDIikKTE9DVkFMKExPQ0FMRV9TSVNPNjM5TEFOR05BTUUsICJ0aCIpCkxPQ1ZBTChMT0NBTEVfU0lTTzMxNjZDVFJZTkFNRSwgIlRIIikKLypMT0NWQUwoTE9DQUxFX0lERUZBVUxURUJDRElDQ09ERVBBR0UsICIiIiIpKi8KLypMT0NWQUwoTE9DQUxFX0lQQVBFUlNJWkUsICIiIiIpKi8KLypMT0NWQUwoTE9DQUxFX1NFTkdDVVJSTkFNRSwgIiIiIikqLwovKkxPQ1ZBTChMT0NBTEVfU05BVElWRUNVUlJOQU1FLCAiIiIiKSovCi8qTE9DVkFMKExPQ0FMRV9TWUVBUk1PTlRILCAiIiIiKSovCi8qTE9DVkFMKExPQ0FMRV9TU09SVE5BTUUsICIiIiIpKi8KLypMT0NWQUwoTE9DQUxFX0lESUdJVFNVQlNUSVRVVElPTiwgIiIiIikqLwo=