LyoKICogTG9jYWxlIGRlZmluaXRpb25zIGZvciBBemVyaSAoTGF0aW4pCiAqCiAqIENvcHlyaWdodCAyMDAyIEFsZXhhbmRyZSBKdWxsaWFyZCBmb3IgQ29kZVdlYXZlcnMKICoKICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCiAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgogKiB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KICoKICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCiAqIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiAqCiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKICogTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQogKiBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBCiAqLwoKI3ByYWdtYSBjb2RlX3BhZ2UoMTI1NCkKClNUUklOR1RBQkxFIExBTkdVQUdFIExBTkdfQVpFUkksIFNVQkxBTkdfQVpFUklfTEFUSU4KewogIExPQ0FMRV9GT05UU0lHTkFUVVJFIEwiXHgwMDI3XHg4MDAwXHgzODA4XHgwMDAwXHgwMDAwXHgwMDAwXHgwMDAwXHgwMDAwXHgwMDAyXHgwMDAwXHgwMDAwXHgwNDAwXHgwMDEzXHgwMDAwXHgwMDAwXHhjNWQ0IgogIExPQ0FMRV9JQ0FMRU5EQVJUWVBFICIxIgogIExPQ0FMRV9JQ0VOVFVSWSAiMSIKICBMT0NBTEVfSUNPVU5UUlkgIjk5NCIKICBMT0NBTEVfSUNVUlJESUdJVFMgIjIiCiAgTE9DQUxFX0lDVVJSRU5DWSAiMyIKICBMT0NBTEVfSURBVEUgIjEiCiAgTE9DQUxFX0lEQVlMWkVSTyAiMSIKICBMT0NBTEVfSURFRkFVTFRBTlNJQ09ERVBBR0UgIjEyNTQiCiAgTE9DQUxFX0lERUZBVUxUQ09ERVBBR0UgIjg1NyIKICBMT0NBTEVfSURFRkFVTFRDT1VOVFJZICI5OTQiCiAgTE9DQUxFX0lERUZBVUxURUJDRElDQ09ERVBBR0UgIjIwOTA1IgogIExPQ0FMRV9JREVGQVVMVExBTkdVQUdFICIwNDJjIgogIExPQ0FMRV9JREVGQVVMVE1BQ0NPREVQQUdFICIxMDA4MSIKICBMT0NBTEVfSURFRkFVTFRVTklYQ09ERVBBR0UgIjI4NTk5IgogIExPQ0FMRV9JRElHSVRTICIyIgogIExPQ0FMRV9JRElHSVRTVUJTVElUVVRJT04gIjEiCiAgTE9DQUxFX0lGSVJTVERBWU9GV0VFSyAiMCIKICBMT0NBTEVfSUZJUlNUV0VFS09GWUVBUiAiMCIKICBMT0NBTEVfSUlOVExDVVJSRElHSVRTICIyIgogIExPQ0FMRV9JTEFOR1VBR0UgIjA0MmMiCiAgTE9DQUxFX0lMREFURSAiMSIKICBMT0NBTEVfSUxaRVJPICIxIgogIExPQ0FMRV9JTUVBU1VSRSAiMCIKICBMT0NBTEVfSU1PTkxaRVJPICIxIgogIExPQ0FMRV9JTkVHQ1VSUiAiOCIKICBMT0NBTEVfSU5FR05VTUJFUiAiMSIKICBMT0NBTEVfSU5FR1NFUEJZU1BBQ0UgIjEiCiAgTE9DQUxFX0lORUdTSUdOUE9TTiAiMSIKICBMT0NBTEVfSU5FR1NZTVBSRUNFREVTICIwIgogIExPQ0FMRV9JTkVVVFJBTCAiMCIKICBMT0NBTEVfSU9QVElPTkFMQ0FMRU5EQVIgIjAiCiAgTE9DQUxFX0lQQVBFUlNJWkUgIjkiCiAgTE9DQUxFX0lQT1NTRVBCWVNQQUNFICIxIgogIExPQ0FMRV9JUE9TU0lHTlBPU04gIjEiCiAgTE9DQUxFX0lQT1NTWU1QUkVDRURFUyAiMCIKICBMT0NBTEVfSVJFQURJTkdMQVlPVVQgIjAiCiAgTE9DQUxFX0lUSU1FICIxIgogIExPQ0FMRV9JVElNRU1BUktQT1NOICIwIgogIExPQ0FMRV9JVExaRVJPICIwIgogIExPQ0FMRV9TMTE1OSAiIgogIExPQ0FMRV9TMjM1OSAiIgogIExPQ0FMRV9TQUJCUkVWQ1RSWU5BTUUgIkFaRSIKICBMT0NBTEVfU0FCQlJFVkRBWU5BTUUxICJCZSIKICBMT0NBTEVfU0FCQlJFVkRBWU5BTUUyICLHYSIKICBMT0NBTEVfU0FCQlJFVkRBWU5BTUUzICLHIgogIExPQ0FMRV9TQUJCUkVWREFZTkFNRTQgIkNhIgogIExPQ0FMRV9TQUJCUkVWREFZTkFNRTUgIkMiCiAgTE9DQUxFX1NBQkJSRVZEQVlOQU1FNiAi3iIKICBMT0NBTEVfU0FCQlJFVkRBWU5BTUU3ICJCIgogIExPQ0FMRV9TQUJCUkVWTEFOR05BTUUgIkFaRSIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTEgIllhbiIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTIgIkZldiIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTMgIk1hciIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTQgIkFwciIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTUgIk1heSIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTYgIt15dW4iCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUU3ICLdeXVsIgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FOCAiQXZnIgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FOSAiU2VuIgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FMTAgIk9rdCIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTExICJOb3kiCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUUxMiAiRGVrIgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FMTMgIiIKICBMT0NBTEVfU0NPVU5UUlkgIkF6ZXJiYWlqYW4iCiAgTE9DQUxFX1NDVVJSRU5DWSAibWFuLiIKICBMT0NBTEVfU0RBVEUgIi4iCiAgTE9DQUxFX1NEQVlOQU1FMSBMIkJhemFyXHgwMGEwZXJ0XHgwMjU5c2kiCiAgTE9DQUxFX1NEQVlOQU1FMiBMIlx4MDBjN1x4MDI1OXJceDAxNWZceDAyNTluYlx4MDI1OVx4MDBhMGF4XHgwMTVmYW1ceDAxMzEiCiAgTE9DQUxFX1NEQVlOQU1FMyBMIlx4MDBjN1x4MDI1OXJceDAxNWZceDAyNTluYlx4MDI1OSIKICBMT0NBTEVfU0RBWU5BTUU0IEwiQ1x4MDBmY21ceDAyNTlceDAwYTBheFx4MDE1ZmFtXHgwMTMxIgogIExPQ0FMRV9TREFZTkFNRTUgTCJDXHgwMGZjbVx4MDI1OSIKICBMT0NBTEVfU0RBWU5BTUU2IEwiXHgwMTVlXHgwMjU5bmJceDAyNTkiCiAgTE9DQUxFX1NEQVlOQU1FNyAiQmF6YXIiCiAgTE9DQUxFX1NERUNJTUFMICIsIgogIExPQ0FMRV9TRU5HQ09VTlRSWSAiQXplcmJhaWphbiIKICBMT0NBTEVfU0VOR0NVUlJOQU1FICJBemVyYmFpamFuaWFuIE1hbmF0IgogIExPQ0FMRV9TRU5HTEFOR1VBR0UgIkF6ZXJpIChMYXRpbikiCiAgTE9DQUxFX1NHUk9VUElORyAiMzswIgogIExPQ0FMRV9TSU5UTFNZTUJPTCAiQVpNIgogIExPQ0FMRV9TSVNPMzE2NkNUUllOQU1FICJBWiIKICBMT0NBTEVfU0lTTzYzOUxBTkdOQU1FICJheiIKICBMT0NBTEVfU0xBTkdVQUdFICJBemVyaSAoTGF0aW4pIgogIExPQ0FMRV9TTElTVCAiOyIKICBMT0NBTEVfU0xPTkdEQVRFICJkIE1NTU0geXl5eSIKICBMT0NBTEVfU01PTkRFQ0lNQUxTRVAgIiwiCiAgTE9DQUxFX1NNT05HUk9VUElORyAiMzswIgogIExPQ0FMRV9TTU9OVEhOQU1FMSAiWWFudmFyIgogIExPQ0FMRV9TTU9OVEhOQU1FMiAiRmV2cmFsIgogIExPQ0FMRV9TTU9OVEhOQU1FMyAiTWFydCIKICBMT0NBTEVfU01PTlRITkFNRTQgIkFwcmVsIgogIExPQ0FMRV9TTU9OVEhOQU1FNSAiTWF5IgogIExPQ0FMRV9TTU9OVEhOQU1FNiAi3Xl1biIKICBMT0NBTEVfU01PTlRITkFNRTcgIt15dWwiCiAgTE9DQUxFX1NNT05USE5BTUU4ICJBdmd1c3QiCiAgTE9DQUxFX1NNT05USE5BTUU5ICJTZW50eWFiciIKICBMT0NBTEVfU01PTlRITkFNRTEwICJPa3R5YWJyIgogIExPQ0FMRV9TTU9OVEhOQU1FMTEgIk5veWFiciIKICBMT0NBTEVfU01PTlRITkFNRTEyICJEZWthYnIiCiAgTE9DQUxFX1NNT05USE5BTUUxMyAiIgogIExPQ0FMRV9TTU9OVEhPVVNBTkRTRVAgIqAiCiAgTE9DQUxFX1NOQU1FICJhei1MYXRuLUFaIgogIExPQ0FMRV9TTkFUSVZFQ1RSWU5BTUUgTCJBelx4MDI1OXJiYXljYW5jYSIKICBMT0NBTEVfU05BVElWRUNVUlJOQU1FICJtYW5hdCIKICBMT0NBTEVfU05BVElWRURJR0lUUyAiMDEyMzQ1Njc4OSIKICBMT0NBTEVfU05BVElWRURJU1BMQVlOQU1FICIiCiAgTE9DQUxFX1NOQVRJVkVMQU5HTkFNRSBMIkF6XHgwMjU5cmJheWNhblx4MDBhZFx4MDEzMWxceDAxMzEiCiAgTE9DQUxFX1NORUdBVElWRVNJR04gIi0iCiAgTE9DQUxFX1NQT1NJVElWRVNJR04gIiIKICBMT0NBTEVfU1NDUklQVFMgIkxhdG47IgogIExPQ0FMRV9TU0hPUlREQVRFICJkZC5NTS55eXl5IgogIExPQ0FMRV9TU09SVE5BTUUgIkRlZmF1bHQiCiAgTE9DQUxFX1NUSE9VU0FORCAioCIKICBMT0NBTEVfU1RJTUUgIjoiCiAgTE9DQUxFX1NUSU1FRk9STUFUICJIOm1tOnNzIgogIExPQ0FMRV9TWUVBUk1PTlRIICJNTU1NIHl5eXkiCgogIExHUlBJRF9XRVNURVJOX0VVUk9QRStMR1JQSURfUkVTX0JBU0UgIldlc3Rlcm4gRXVyb3BlIGFuZCBVbml0ZWQgU3RhdGVzIgogIExHUlBJRF9DRU5UUkFMX0VVUk9QRStMR1JQSURfUkVTX0JBU0UgIkNlbnRyYWwgRXVyb3BlIgogIExHUlBJRF9CQUxUSUMrTEdSUElEX1JFU19CQVNFICJCYWx0aWMiCiAgTEdSUElEX0dSRUVLK0xHUlBJRF9SRVNfQkFTRSAiR3JlZWsiCiAgTEdSUElEX0NZUklMTElDK0xHUlBJRF9SRVNfQkFTRSAiQ3lyaWxsaWMiCiAgTEdSUElEX1RVUktJU0grTEdSUElEX1JFU19CQVNFICJUdXJraWMiCiAgTEdSUElEX0pBUEFORVNFK0xHUlBJRF9SRVNfQkFTRSAiSmFwYW5lc2UiCiAgTEdSUElEX0tPUkVBTitMR1JQSURfUkVTX0JBU0UgIktvcmVhbiIKICBMR1JQSURfVFJBRElUSU9OQUxfQ0hJTkVTRStMR1JQSURfUkVTX0JBU0UgIlRyYWRpdGlvbmFsIENoaW5lc2UiCiAgTEdSUElEX1NJTVBMSUZJRURfQ0hJTkVTRStMR1JQSURfUkVTX0JBU0UgIlNpbXBsaWZpZWQgQ2hpbmVzZSIKICBMR1JQSURfVEhBSStMR1JQSURfUkVTX0JBU0UgIlRoYWkiCiAgTEdSUElEX0hFQlJFVytMR1JQSURfUkVTX0JBU0UgIkhlYnJldyIKICBMR1JQSURfQVJBQklDK0xHUlBJRF9SRVNfQkFTRSAiQXJhYmljIiAKICBMR1JQSURfVklFVE5BTUVTRStMR1JQSURfUkVTX0JBU0UgIlZpZXRuYW1lc2UiCiAgTEdSUElEX0lORElDK0xHUlBJRF9SRVNfQkFTRSAiSW5kaWMiCiAgTEdSUElEX0dFT1JHSUFOK0xHUlBJRF9SRVNfQkFTRSAiR2VvcmdpYW4iCiAgTEdSUElEX0FSTUVOSUFOK0xHUlBJRF9SRVNfQkFTRSAiQXJtZW5pYW4iCn0K