LyoKICogTG9jYWxlIGRlZmluaXRpb25zIGZvciBBemVyaSAoQ3lyaWxsaWMpCiAqCiAqIENvcHlyaWdodCAyMDAyIEFsZXhhbmRyZSBKdWxsaWFyZCBmb3IgQ29kZVdlYXZlcnMKICoKICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCiAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgogKiB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KICoKICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCiAqIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiAqCiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKICogTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQogKiBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBCiAqLwoKI3ByYWdtYSBjb2RlX3BhZ2UoMTI1MSkKClNUUklOR1RBQkxFIExBTkdVQUdFIExBTkdfQVpFUkksIFNVQkxBTkdfQVpFUklfQ1lSSUxMSUMKewogIExPQ0FMRV9GT05UU0lHTkFUVVJFIEwiXHgwMjAzXHg4MDAwXHgzODQ4XHgwMDAwXHgwMDAwXHgwMDAwXHgwMDAwXHgwMDAwXHgwMDA0XHgwMDAwXHgwMDAwXHgwMDAyXHgwMDA0XHgwMDAwXHgwMDAwXHgwMjAyIgogIExPQ0FMRV9JQ0FMRU5EQVJUWVBFICIxIgogIExPQ0FMRV9JQ0VOVFVSWSAiMSIKICBMT0NBTEVfSUNPVU5UUlkgIjk5NCIKICBMT0NBTEVfSUNVUlJESUdJVFMgIjIiCiAgTE9DQUxFX0lDVVJSRU5DWSAiMyIKICBMT0NBTEVfSURBVEUgIjEiCiAgTE9DQUxFX0lEQVlMWkVSTyAiMSIKICBMT0NBTEVfSURFRkFVTFRBTlNJQ09ERVBBR0UgIjEyNTEiCiAgTE9DQUxFX0lERUZBVUxUQ09ERVBBR0UgIjg2NiIKICBMT0NBTEVfSURFRkFVTFRDT1VOVFJZICI5OTQiCiAgTE9DQUxFX0lERUZBVUxURUJDRElDQ09ERVBBR0UgIjIwODgwIgogIExPQ0FMRV9JREVGQVVMVExBTkdVQUdFICIwODJjIgogIExPQ0FMRV9JREVGQVVMVE1BQ0NPREVQQUdFICIxMDAwNyIKICBMT0NBTEVfSURFRkFVTFRVTklYQ09ERVBBR0UgIjI4NTk1IgogIExPQ0FMRV9JRElHSVRTICIyIgogIExPQ0FMRV9JRElHSVRTVUJTVElUVVRJT04gIjEiCiAgTE9DQUxFX0lGSVJTVERBWU9GV0VFSyAiMCIKICBMT0NBTEVfSUZJUlNUV0VFS09GWUVBUiAiMCIKICBMT0NBTEVfSUlOVExDVVJSRElHSVRTICIyIgogIExPQ0FMRV9JTEFOR1VBR0UgIjA4MmMiCiAgTE9DQUxFX0lMREFURSAiMSIKICBMT0NBTEVfSUxaRVJPICIxIgogIExPQ0FMRV9JTUVBU1VSRSAiMCIKICBMT0NBTEVfSU1PTkxaRVJPICIxIgogIExPQ0FMRV9JTkVHQ1VSUiAiOCIKICBMT0NBTEVfSU5FR05VTUJFUiAiMSIKICBMT0NBTEVfSU5FR1NFUEJZU1BBQ0UgIjEiCiAgTE9DQUxFX0lORUdTSUdOUE9TTiAiMSIKICBMT0NBTEVfSU5FR1NZTVBSRUNFREVTICIwIgogIExPQ0FMRV9JT1BUSU9OQUxDQUxFTkRBUiAiMCIKICBMT0NBTEVfSVBBUEVSU0laRSAiOSIKICBMT0NBTEVfSVBPU1NFUEJZU1BBQ0UgIjEiCiAgTE9DQUxFX0lQT1NTSUdOUE9TTiAiMSIKICBMT0NBTEVfSVBPU1NZTVBSRUNFREVTICIwIgogIExPQ0FMRV9JVElNRSAiMSIKICBMT0NBTEVfSVRJTUVNQVJLUE9TTiAiMCIKICBMT0NBTEVfSVRMWkVSTyAiMCIKICBMT0NBTEVfUzExNTkgIiIKICBMT0NBTEVfUzIzNTkgIiIKICBMT0NBTEVfU0FCQlJFVkNUUllOQU1FICJBWkUiCiAgTE9DQUxFX1NBQkJSRVZEQVlOQU1FMSAiweUiCiAgTE9DQUxFX1NBQkJSRVZEQVlOQU1FMiAi1+AiCiAgTE9DQUxFX1NBQkJSRVZEQVlOQU1FMyAi1yIKICBMT0NBTEVfU0FCQlJFVkRBWU5BTUU0IEwiXHgwNGI4XHgwNDMwIgogIExPQ0FMRV9TQUJCUkVWREFZTkFNRTUgTCJceDA0YjgiCiAgTE9DQUxFX1NBQkJSRVZEQVlOQU1FNiAi2CIKICBMT0NBTEVfU0FCQlJFVkRBWU5BTUU3ICLBIgogIExPQ0FMRV9TQUJCUkVWTEFOR05BTUUgIkFaRSIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTEgIqPg7SIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTIgItTl4iIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTMgIszg8CIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTQgIsDv8CIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTUgIszgvCIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTYgIsi88+0iCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUU3ICLIvPPrIgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FOCAiwOLjIgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FOSAi0eXtIgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FMTAgIs7q8iIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTExICLN7v8iCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUUxMiAixOXqIgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FMTMgIiIKICBMT0NBTEVfU0NPVU5UUlkgIkF6ZXJiYWlqYW4iCiAgTE9DQUxFX1NDVVJSRU5DWSAi7ODtLiIKICBMT0NBTEVfU0RBVEUgIi4iCiAgTE9DQUxFX1NEQVlOQU1FMSBMIlx4MDQxMVx4MDQzMFx4MDQzN1x4MDQzMFx4MDQ0MFx4MDBhMFx4MDQzNVx4MDQ0MFx4MDQ0Mlx4MDRkOVx4MDQ0MVx4MDQzOCIKICBMT0NBTEVfU0RBWU5BTUUyIEwiXHgwNDI3XHgwNGQ5XHgwNDQwXHgwNDQ4XHgwNGQ5XHgwNDNkXHgwNDMxXHgwNGQ5XHgwMGEwXHgwNDMwXHgwNDQ1XHgwNDQ4XHgwNDMwXHgwNDNjXHgwNDRiIgogIExPQ0FMRV9TREFZTkFNRTMgTCJceDA0MjdceDA0ZDlceDA0NDBceDA0NDhceDA0ZDlceDA0M2RceDA0MzFceDA0ZDkiCiAgTE9DQUxFX1NEQVlOQU1FNCBMIlx4MDRiOFx4MDRhZlx4MDQzY1x4MDRkOVx4MDBhMFx4MDQzMFx4MDQ0NVx4MDQ0OFx4MDQzMFx4MDQzY1x4MDQ0YiIKICBMT0NBTEVfU0RBWU5BTUU1IEwiXHgwNGI4XHgwNGFmXHgwNDNjXHgwNGQ5IgogIExPQ0FMRV9TREFZTkFNRTYgTCJceDA0MjhceDA0ZDlceDA0M2RceDA0MzFceDA0ZDkiCiAgTE9DQUxFX1NEQVlOQU1FNyAiweDn4PAiCiAgTE9DQUxFX1NERUNJTUFMICIsIgogIExPQ0FMRV9TRU5HQ09VTlRSWSAiQXplcmJhaWphbiIKICBMT0NBTEVfU0VOR0NVUlJOQU1FICJBemVyYmFpamFuaWFuIE1hbmF0IgogIExPQ0FMRV9TRU5HTEFOR1VBR0UgIkF6ZXJpIChDeXJpbGxpYykiCiAgTE9DQUxFX1NHUk9VUElORyAiMzswIgogIExPQ0FMRV9TSU5UTFNZTUJPTCAiQVpNIgogIExPQ0FMRV9TSVNPMzE2NkNUUllOQU1FICJBWiIKICBMT0NBTEVfU0lTTzYzOUxBTkdOQU1FICJheiIKICBMT0NBTEVfU0xBTkdVQUdFICJBemVyaSAoQ3lyaWxsaWMpIgogIExPQ0FMRV9TTElTVCAiOyIKICBMT0NBTEVfU0xPTkdEQVRFICJkIE1NTU0geXl5eSIKICBMT0NBTEVfU01PTkRFQ0lNQUxTRVAgIiwiCiAgTE9DQUxFX1NNT05HUk9VUElORyAiMzswIgogIExPQ0FMRV9TTU9OVEhOQU1FMSAio+Dt4uDwIgogIExPQ0FMRV9TTU9OVEhOQU1FMiAi1OXi8ODrIgogIExPQ0FMRV9TTU9OVEhOQU1FMyAizODw8iIKICBMT0NBTEVfU01PTlRITkFNRTQgIsDv8OXrIgogIExPQ0FMRV9TTU9OVEhOQU1FNSAizOC8IgogIExPQ0FMRV9TTU9OVEhOQU1FNiAiyLzz7SIKICBMT0NBTEVfU01PTlRITkFNRTcgIsi88+siCiAgTE9DQUxFX1NNT05USE5BTUU4ICLA4uPz8fIiCiAgTE9DQUxFX1NNT05USE5BTUU5ICLR5e3yvODh8CIKICBMT0NBTEVfU01PTlRITkFNRTEwICLO6vK84OHwIgogIExPQ0FMRV9TTU9OVEhOQU1FMTEgIs3uvODh8CIKICBMT0NBTEVfU01PTlRITkFNRTEyICLE5erg4fAiCiAgTE9DQUxFX1NNT05USE5BTUUxMyAiIgogIExPQ0FMRV9TTU9OVEhPVVNBTkRTRVAgIqAiCiAgTE9DQUxFX1NOQU1FICJhei1BWiIKICBMT0NBTEVfU05BVElWRUNUUllOQU1FIEwiXHgwNDEwXHgwNDM3XHgwNGQ5XHgwNDQwXHgwNDMxXHgwNDMwXHgwNDU4XHgwNGI5XHgwNDMwXHgwNDNkIgogIExPQ0FMRV9TTkFUSVZFQ1VSUk5BTUUgIvDz4ev8IgogIExPQ0FMRV9TTkFUSVZFRElHSVRTICIwMTIzNDU2Nzg5IgogIExPQ0FMRV9TTkFUSVZFTEFOR05BTUUgTCJceDA0MTBceDA0MzdceDA0ZDlceDA0NDBceDA0MzFceDA0MzBceDA0NThceDA0YjlceDA0MzBceDA0M2QiCiAgTE9DQUxFX1NORUdBVElWRVNJR04gIi0iCiAgTE9DQUxFX1NQT1NJVElWRVNJR04gIiIKICBMT0NBTEVfU1NDUklQVFMgIkFyYWI7IgogIExPQ0FMRV9TU0hPUlREQVRFICJkZC5NTS55eXl5IgogIExPQ0FMRV9TU09SVE5BTUUgIkRlZmF1bHQiCiAgTE9DQUxFX1NUSE9VU0FORCAioCIKICBMT0NBTEVfU1RJTUUgIjoiCiAgTE9DQUxFX1NUSU1FRk9STUFUICJIOm1tOnNzIgogIExPQ0FMRV9TWUVBUk1PTlRIICJNTU1NIHl5eXkiCgogIExHUlBJRF9XRVNURVJOX0VVUk9QRStMR1JQSURfUkVTX0JBU0UgIldlc3Rlcm4gRXVyb3BlIGFuZCBVbml0ZWQgU3RhdGVzIgogIExHUlBJRF9DRU5UUkFMX0VVUk9QRStMR1JQSURfUkVTX0JBU0UgIkNlbnRyYWwgRXVyb3BlIgogIExHUlBJRF9CQUxUSUMrTEdSUElEX1JFU19CQVNFICJCYWx0aWMiCiAgTEdSUElEX0dSRUVLK0xHUlBJRF9SRVNfQkFTRSAiR3JlZWsiCiAgTEdSUElEX0NZUklMTElDK0xHUlBJRF9SRVNfQkFTRSAiQ3lyaWxsaWMiCiAgTEdSUElEX1RVUktJU0grTEdSUElEX1JFU19CQVNFICJUdXJraWMiCiAgTEdSUElEX0pBUEFORVNFK0xHUlBJRF9SRVNfQkFTRSAiSmFwYW5lc2UiCiAgTEdSUElEX0tPUkVBTitMR1JQSURfUkVTX0JBU0UgIktvcmVhbiIKICBMR1JQSURfVFJBRElUSU9OQUxfQ0hJTkVTRStMR1JQSURfUkVTX0JBU0UgIlRyYWRpdGlvbmFsIENoaW5lc2UiCiAgTEdSUElEX1NJTVBMSUZJRURfQ0hJTkVTRStMR1JQSURfUkVTX0JBU0UgIlNpbXBsaWZpZWQgQ2hpbmVzZSIKICBMR1JQSURfVEhBSStMR1JQSURfUkVTX0JBU0UgIlRoYWkiCiAgTEdSUElEX0hFQlJFVytMR1JQSURfUkVTX0JBU0UgIkhlYnJldyIKICBMR1JQSURfQVJBQklDK0xHUlBJRF9SRVNfQkFTRSAiQXJhYmljIiAKICBMR1JQSURfVklFVE5BTUVTRStMR1JQSURfUkVTX0JBU0UgIlZpZXRuYW1lc2UiCiAgTEdSUElEX0lORElDK0xHUlBJRF9SRVNfQkFTRSAiSW5kaWMiCiAgTEdSUElEX0dFT1JHSUFOK0xHUlBJRF9SRVNfQkFTRSAiR2VvcmdpYW4iCiAgTEdSUElEX0FSTUVOSUFOK0xHUlBJRF9SRVNfQkFTRSAiQXJtZW5pYW4iIAp9Cg==