LyoKICogTG9jYWxlIGRlZmluaXRpb25zIGZvciBVemJlayAoQ3lyaWxsaWMpCiAqCiAqIENvcHlyaWdodCAyMDAyIEFsZXhhbmRyZSBKdWxsaWFyZCBmb3IgQ29kZXdlYXZlcnMKICoKICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCiAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgogKiB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KICoKICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCiAqIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiAqCiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKICogTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQogKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAgMDIxMTEtMTMwNyAgVVNBCiAqLwoKI3ByYWdtYSBjb2RlX3BhZ2UoMTI1MSkKClNUUklOR1RBQkxFIExBTkdVQUdFIExBTkdfVVpCRUssIFNVQkxBTkdfVVpCRUtfQ1lSSUxMSUMKewogIExPQ0FMRV9GT05UU0lHTkFUVVJFIEwiXHgwMjAzXHg4MDAwXHgzODQ4XHgwMDAwXHgwMDAwXHgwMDAwXHgwMDAwXHgwMDAwXHgwMDA0XHgwMDAwXHgwMDAwXHgwMDAyXHgwMDA0XHgwMDAwXHgwMDAwXHgwMjAyIgogIExPQ0FMRV9JQ0FMRU5EQVJUWVBFICIxIgogIExPQ0FMRV9JQ0VOVFVSWSAiMSIKICBMT0NBTEVfSUNPVU5UUlkgIjciCiAgTE9DQUxFX0lDVVJSRElHSVRTICIyIgogIExPQ0FMRV9JQ1VSUkVOQ1kgIjMiCiAgTE9DQUxFX0lEQVRFICIxIgogIExPQ0FMRV9JREFZTFpFUk8gIjEiCiAgTE9DQUxFX0lERUZBVUxUQU5TSUNPREVQQUdFICIxMjUxIgogIExPQ0FMRV9JREVGQVVMVENPREVQQUdFICI4NjYiCiAgTE9DQUxFX0lERUZBVUxUQ09VTlRSWSAiNyIKICBMT0NBTEVfSURFRkFVTFRFQkNESUNDT0RFUEFHRSAiMjA4ODAiCiAgTE9DQUxFX0lERUZBVUxUTEFOR1VBR0UgIjA4NDMiCiAgTE9DQUxFX0lERUZBVUxUTUFDQ09ERVBBR0UgIjEwMDA3IgogIExPQ0FMRV9JRElHSVRTICIyIgogIExPQ0FMRV9JRElHSVRTVUJTVElUVVRJT04gIjEiCiAgTE9DQUxFX0lGSVJTVERBWU9GV0VFSyAiMCIKICBMT0NBTEVfSUZJUlNUV0VFS09GWUVBUiAiMCIKICBMT0NBTEVfSUlOVExDVVJSRElHSVRTICIyIgogIExPQ0FMRV9JTEFOR1VBR0UgIjA4NDMiCiAgTE9DQUxFX0lMREFURSAiMSIKICBMT0NBTEVfSUxaRVJPICIwIgogIExPQ0FMRV9JTUVBU1VSRSAiMCIKICBMT0NBTEVfSU1PTkxaRVJPICIxIgogIExPQ0FMRV9JTkVHQ1VSUiAiOCIKICBMT0NBTEVfSU5FR05VTUJFUiAiMSIKICBMT0NBTEVfSU5FR1NFUEJZU1BBQ0UgIjEiCiAgTE9DQUxFX0lORUdTSUdOUE9TTiAiMSIKICBMT0NBTEVfSU5FR1NZTVBSRUNFREVTICIwIgogIExPQ0FMRV9JT1BUSU9OQUxDQUxFTkRBUiAiMCIKICBMT0NBTEVfSVBBUEVSU0laRSAiOSIKICBMT0NBTEVfSVBPU1NFUEJZU1BBQ0UgIjEiCiAgTE9DQUxFX0lQT1NTSUdOUE9TTiAiMSIKICBMT0NBTEVfSVBPU1NZTVBSRUNFREVTICIwIgogIExPQ0FMRV9JVElNRSAiMSIKICBMT0NBTEVfSVRJTUVNQVJLUE9TTiAiMCIKICBMT0NBTEVfSVRMWkVSTyAiMSIKICBMT0NBTEVfUzExNTkgIiIKICBMT0NBTEVfUzIzNTkgIiIKICBMT0NBTEVfU0FCQlJFVkNUUllOQU1FICJVWkIiCiAgTE9DQUxFX1NBQkJSRVZEQVlOQU1FMSAi5PgiCiAgTE9DQUxFX1NBQkJSRVZEQVlOQU1FMiAi8fgiCiAgTE9DQUxFX1NBQkJSRVZEQVlOQU1FMyAi9/giCiAgTE9DQUxFX1NBQkJSRVZEQVlOQU1FNCAi7/giCiAgTE9DQUxFX1NBQkJSRVZEQVlOQU1FNSAi5iIKICBMT0NBTEVfU0FCQlJFVkRBWU5BTUU2ICL4IgogIExPQ0FMRV9TQUJCUkVWREFZTkFNRTcgIv/q+CIKICBMT0NBTEVfU0FCQlJFVkxBTkdOQU1FICJVWkIiCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUUxICLf7eIiCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUUyICLU5eIiCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUUzICLM4PAiCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUU0ICLA7/AiCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUU1ICLM4OkiCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUU2ICLI/u0iCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUU3ICLI/usiCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUU4ICLA4uMiCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUU5ICLR5e0iCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUUxMCAizuryIgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FMTEgIs3u/yIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTEyICLE5eoiCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUUxMyAiIgogIExPQ0FMRV9TQ09VTlRSWSAiVXpiZWtpc3RhbiIKICBMT0NBTEVfU0NVUlJFTkNZICLxouwiCiAgTE9DQUxFX1NEQVRFICIuIgogIExPQ0FMRV9TREFZTkFNRTEgIuTz+ODt4eAiCiAgTE9DQUxFX1NEQVlOQU1FMiAi8eX44O3h4CIKICBMT0NBTEVfU0RBWU5BTUUzICL37vD44O3h4CIKICBMT0NBTEVfU0RBWU5BTUU0ICLv4On44O3h4CIKICBMT0NBTEVfU0RBWU5BTUU1ICLm8+zgIgogIExPQ0FMRV9TREFZTkFNRTYgIvjg7eHgIgogIExPQ0FMRV9TREFZTkFNRTcgIv/q+ODt4eAiCiAgTE9DQUxFX1NERUNJTUFMICIsIgogIExPQ0FMRV9TRU5HQ09VTlRSWSAiVXpiZWtpc3RhbiIKICBMT0NBTEVfU0VOR0NVUlJOQU1FICJVemJla2lzdGFuIFN1bSIKICBMT0NBTEVfU0VOR0xBTkdVQUdFICJVemJlayAoQ3lyaWxsaWMpIgogIExPQ0FMRV9TR1JPVVBJTkcgIjM7MCIKICBMT0NBTEVfU0lOVExTWU1CT0wgIlVaUyIKICBMT0NBTEVfU0lTTzMxNjZDVFJZTkFNRSAiVVoiCiAgTE9DQUxFX1NJU082MzlMQU5HTkFNRSAidXoiCiAgTE9DQUxFX1NMQU5HVUFHRSAiVXpiZWsgKEN5cmlsbGljKSIKICBMT0NBTEVfU0xJU1QgIjsiCiAgTE9DQUxFX1NMT05HREFURSAieXl5eSAn6ejrJyBkLU1NTU0iCiAgTE9DQUxFX1NNT05ERUNJTUFMU0VQICIsIgogIExPQ0FMRV9TTU9OR1JPVVBJTkcgIjM7MCIKICBMT0NBTEVfU01PTlRITkFNRTEgIt/t4uDwIgogIExPQ0FMRV9TTU9OVEhOQU1FMiAi1OXi8ODrIgogIExPQ0FMRV9TTU9OVEhOQU1FMyAizODw8iIKICBMT0NBTEVfU01PTlRITkFNRTQgIsDv8OXrIgogIExPQ0FMRV9TTU9OVEhOQU1FNSAizODpIgogIExPQ0FMRV9TTU9OVEhOQU1FNiAiyP7tIgogIExPQ0FMRV9TTU9OVEhOQU1FNyAiyP7rIgogIExPQ0FMRV9TTU9OVEhOQU1FOCAiwOLj8/HyIgogIExPQ0FMRV9TTU9OVEhOQU1FOSAi0eXt8v/h8CIKICBMT0NBTEVfU01PTlRITkFNRTEwICLO6vL/4fAiCiAgTE9DQUxFX1NNT05USE5BTUUxMSAize7/4fAiCiAgTE9DQUxFX1NNT05USE5BTUUxMiAixOXq4OHwIgogIExPQ0FMRV9TTU9OVEhOQU1FMTMgIiIKICBMT0NBTEVfU01PTlRIT1VTQU5EU0VQICKgIgogIExPQ0FMRV9TTkFUSVZFQ1RSWU5BTUUgIqHn4eXq6PHy7u0iCiAgTE9DQUxFX1NOQVRJVkVDVVJSTkFNRSAi8PPh6/wiCiAgTE9DQUxFX1NOQVRJVkVESUdJVFMgIjAxMjM0NTY3ODkiCiAgTE9DQUxFX1NOQVRJVkVMQU5HTkFNRSAioefh5eoiCiAgTE9DQUxFX1NORUdBVElWRVNJR04gIi0iCiAgTE9DQUxFX1NQT1NJVElWRVNJR04gIiIKICBMT0NBTEVfU1NIT1JUREFURSAiZGQuTU0ueXl5eSIKICBMT0NBTEVfU1NPUlROQU1FICJEZWZhdWx0IgogIExPQ0FMRV9TVEhPVVNBTkQgIqAiCiAgTE9DQUxFX1NUSU1FICI6IgogIExPQ0FMRV9TVElNRUZPUk1BVCAiSEg6bW06c3MiCiAgTE9DQUxFX1NZRUFSTU9OVEggIk1NTU0geXl5eSIKfQo=