LyoKICogTG9jYWxlIGRlZmluaXRpb25zIGZvciBBemVyaSAoQ3lyaWxsaWMpCiAqCiAqIENvcHlyaWdodCAyMDAyIEFsZXhhbmRyZSBKdWxsaWFyZCBmb3IgQ29kZVdlYXZlcnMKICoKICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCiAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgogKiB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KICoKICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCiAqIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiAqCiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKICogTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQogKiBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBCiAqLwoKI3ByYWdtYSBjb2RlX3BhZ2UoMTI1MSkKClNUUklOR1RBQkxFIExBTkdVQUdFIExBTkdfQVpFUkksIFNVQkxBTkdfQVpFUklfQ1lSSUxMSUMKewogIExPQ0FMRV9GT05UU0lHTkFUVVJFIEwiXHgwMjAzXHg4MDAwXHgzODQ4XHgwMDAwXHgwMDAwXHgwMDAwXHgwMDAwXHgwMDAwXHgwMDA0XHgwMDAwXHgwMDAwXHgwMDAyXHgwMDA0XHgwMDAwXHgwMDAwXHgwMjAyIgogIExPQ0FMRV9JQ0FMRU5EQVJUWVBFICIxIgogIExPQ0FMRV9JQ0VOVFVSWSAiMSIKICBMT0NBTEVfSUNPVU5UUlkgIjk5NCIKICBMT0NBTEVfSUNVUlJESUdJVFMgIjIiCiAgTE9DQUxFX0lDVVJSRU5DWSAiMyIKICBMT0NBTEVfSURBVEUgIjEiCiAgTE9DQUxFX0lEQVlMWkVSTyAiMSIKICBMT0NBTEVfSURFRkFVTFRBTlNJQ09ERVBBR0UgIjEyNTEiCiAgTE9DQUxFX0lERUZBVUxUQ09ERVBBR0UgIjg2NiIKICBMT0NBTEVfSURFRkFVTFRDT1VOVFJZICI5OTQiCiAgTE9DQUxFX0lERUZBVUxURUJDRElDQ09ERVBBR0UgIjIwODgwIgogIExPQ0FMRV9JREVGQVVMVExBTkdVQUdFICIwODJjIgogIExPQ0FMRV9JREVGQVVMVE1BQ0NPREVQQUdFICIxMDAwNyIKICBMT0NBTEVfSURFRkFVTFRVTklYQ09ERVBBR0UgIjI4NTk1IgogIExPQ0FMRV9JRElHSVRTICIyIgogIExPQ0FMRV9JRElHSVRTVUJTVElUVVRJT04gIjEiCiAgTE9DQUxFX0lGSVJTVERBWU9GV0VFSyAiMCIKICBMT0NBTEVfSUZJUlNUV0VFS09GWUVBUiAiMCIKICBMT0NBTEVfSUlOVExDVVJSRElHSVRTICIyIgogIExPQ0FMRV9JTEFOR1VBR0UgIjA4MmMiCiAgTE9DQUxFX0lMREFURSAiMSIKICBMT0NBTEVfSUxaRVJPICIxIgogIExPQ0FMRV9JTUVBU1VSRSAiMCIKICBMT0NBTEVfSU1PTkxaRVJPICIxIgogIExPQ0FMRV9JTkVHQ1VSUiAiOCIKICBMT0NBTEVfSU5FR05VTUJFUiAiMSIKICBMT0NBTEVfSU5FR1NFUEJZU1BBQ0UgIjEiCiAgTE9DQUxFX0lORUdTSUdOUE9TTiAiMSIKICBMT0NBTEVfSU5FR1NZTVBSRUNFREVTICIwIgogIExPQ0FMRV9JTkVVVFJBTCAiMCIKICBMT0NBTEVfSU9QVElPTkFMQ0FMRU5EQVIgIjAiCiAgTE9DQUxFX0lQQVBFUlNJWkUgIjkiCiAgTE9DQUxFX0lQT1NTRVBCWVNQQUNFICIxIgogIExPQ0FMRV9JUE9TU0lHTlBPU04gIjEiCiAgTE9DQUxFX0lQT1NTWU1QUkVDRURFUyAiMCIKICBMT0NBTEVfSVJFQURJTkdMQVlPVVQgIjAiCiAgTE9DQUxFX0lUSU1FICIxIgogIExPQ0FMRV9JVElNRU1BUktQT1NOICIwIgogIExPQ0FMRV9JVExaRVJPICIwIgogIExPQ0FMRV9TMTE1OSAiIgogIExPQ0FMRV9TMjM1OSAiIgogIExPQ0FMRV9TQUJCUkVWQ1RSWU5BTUUgIkFaRSIKICBMT0NBTEVfU0FCQlJFVkRBWU5BTUUxICLB5SIKICBMT0NBTEVfU0FCQlJFVkRBWU5BTUUyICLX4CIKICBMT0NBTEVfU0FCQlJFVkRBWU5BTUUzICLXIgogIExPQ0FMRV9TQUJCUkVWREFZTkFNRTQgTCJceDA0YjhceDA0MzAiCiAgTE9DQUxFX1NBQkJSRVZEQVlOQU1FNSBMIlx4MDRiOCIKICBMT0NBTEVfU0FCQlJFVkRBWU5BTUU2ICLYIgogIExPQ0FMRV9TQUJCUkVWREFZTkFNRTcgIsEiCiAgTE9DQUxFX1NBQkJSRVZMQU5HTkFNRSAiQVpFIgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FMSAio+DtIgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FMiAi1OXiIgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FMyAizODwIgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FNCAiwO/wIgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FNSAizOC8IgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FNiAiyLzz7SIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTcgIsi88+siCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUU4ICLA4uMiCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUU5ICLR5e0iCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUUxMCAizuryIgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FMTEgIs3u/yIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTEyICLE5eoiCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUUxMyAiIgogIExPQ0FMRV9TQ09VTlRSWSAiQXplcmJhaWphbiIKICBMT0NBTEVfU0NVUlJFTkNZICLs4O0uIgogIExPQ0FMRV9TREFURSAiLiIKICBMT0NBTEVfU0RBWU5BTUUxIEwiXHgwNDExXHgwNDMwXHgwNDM3XHgwNDMwXHgwNDQwXHgwMGEwXHgwNDM1XHgwNDQwXHgwNDQyXHgwNGQ5XHgwNDQxXHgwNDM4IgogIExPQ0FMRV9TREFZTkFNRTIgTCJceDA0MjdceDA0ZDlceDA0NDBceDA0NDhceDA0ZDlceDA0M2RceDA0MzFceDA0ZDlceDAwYTBceDA0MzBceDA0NDVceDA0NDhceDA0MzBceDA0M2NceDA0NGIiCiAgTE9DQUxFX1NEQVlOQU1FMyBMIlx4MDQyN1x4MDRkOVx4MDQ0MFx4MDQ0OFx4MDRkOVx4MDQzZFx4MDQzMVx4MDRkOSIKICBMT0NBTEVfU0RBWU5BTUU0IEwiXHgwNGI4XHgwNGFmXHgwNDNjXHgwNGQ5XHgwMGEwXHgwNDMwXHgwNDQ1XHgwNDQ4XHgwNDMwXHgwNDNjXHgwNDRiIgogIExPQ0FMRV9TREFZTkFNRTUgTCJceDA0YjhceDA0YWZceDA0M2NceDA0ZDkiCiAgTE9DQUxFX1NEQVlOQU1FNiBMIlx4MDQyOFx4MDRkOVx4MDQzZFx4MDQzMVx4MDRkOSIKICBMT0NBTEVfU0RBWU5BTUU3ICLB4Ofg8CIKICBMT0NBTEVfU0RFQ0lNQUwgIiwiCiAgTE9DQUxFX1NFTkdDT1VOVFJZICJBemVyYmFpamFuIgogIExPQ0FMRV9TRU5HQ1VSUk5BTUUgIkF6ZXJiYWlqYW5pYW4gTWFuYXQiCiAgTE9DQUxFX1NFTkdMQU5HVUFHRSAiQXplcmkgKEN5cmlsbGljKSIKICBMT0NBTEVfU0dST1VQSU5HICIzOzAiCiAgTE9DQUxFX1NJTlRMU1lNQk9MICJBWk0iCiAgTE9DQUxFX1NJU08zMTY2Q1RSWU5BTUUgIkFaIgogIExPQ0FMRV9TSVNPNjM5TEFOR05BTUUgImF6IgogIExPQ0FMRV9TTEFOR1VBR0UgIkF6ZXJpIChDeXJpbGxpYykiCiAgTE9DQUxFX1NMSVNUICI7IgogIExPQ0FMRV9TTE9OR0RBVEUgImQgTU1NTSB5eXl5IgogIExPQ0FMRV9TTU9OREVDSU1BTFNFUCAiLCIKICBMT0NBTEVfU01PTkdST1VQSU5HICIzOzAiCiAgTE9DQUxFX1NNT05USE5BTUUxICKj4O3i4PAiCiAgTE9DQUxFX1NNT05USE5BTUUyICLU5eLw4OsiCiAgTE9DQUxFX1NNT05USE5BTUUzICLM4PDyIgogIExPQ0FMRV9TTU9OVEhOQU1FNCAiwO/w5esiCiAgTE9DQUxFX1NNT05USE5BTUU1ICLM4LwiCiAgTE9DQUxFX1NNT05USE5BTUU2ICLIvPPtIgogIExPQ0FMRV9TTU9OVEhOQU1FNyAiyLzz6yIKICBMT0NBTEVfU01PTlRITkFNRTggIsDi4/Px8iIKICBMT0NBTEVfU01PTlRITkFNRTkgItHl7fK84OHwIgogIExPQ0FMRV9TTU9OVEhOQU1FMTAgIs7q8rzg4fAiCiAgTE9DQUxFX1NNT05USE5BTUUxMSAize684OHwIgogIExPQ0FMRV9TTU9OVEhOQU1FMTIgIsTl6uDh8CIKICBMT0NBTEVfU01PTlRITkFNRTEzICIiCiAgTE9DQUxFX1NNT05USE9VU0FORFNFUCAioCIKICBMT0NBTEVfU05BTUUgImF6LUFaIgogIExPQ0FMRV9TTkFUSVZFQ1RSWU5BTUUgTCJceDA0MTBceDA0MzdceDA0ZDlceDA0NDBceDA0MzFceDA0MzBceDA0NThceDA0YjlceDA0MzBceDA0M2QiCiAgTE9DQUxFX1NOQVRJVkVDVVJSTkFNRSAi8PPh6/wiCiAgTE9DQUxFX1NOQVRJVkVESUdJVFMgIjAxMjM0NTY3ODkiCiAgTE9DQUxFX1NOQVRJVkVESVNQTEFZTkFNRSAiIgogIExPQ0FMRV9TTkFUSVZFTEFOR05BTUUgTCJceDA0MTBceDA0MzdceDA0ZDlceDA0NDBceDA0MzFceDA0MzBceDA0NThceDA0YjlceDA0MzBceDA0M2QiCiAgTE9DQUxFX1NORUdBVElWRVNJR04gIi0iCiAgTE9DQUxFX1NQT1NJVElWRVNJR04gIiIKICBMT0NBTEVfU1NDUklQVFMgIkFyYWI7IgogIExPQ0FMRV9TU0hPUlREQVRFICJkZC5NTS55eXl5IgogIExPQ0FMRV9TU09SVE5BTUUgIkRlZmF1bHQiCiAgTE9DQUxFX1NUSE9VU0FORCAioCIKICBMT0NBTEVfU1RJTUUgIjoiCiAgTE9DQUxFX1NUSU1FRk9STUFUICJIOm1tOnNzIgogIExPQ0FMRV9TWUVBUk1PTlRIICJNTU1NIHl5eXkiCgogIExHUlBJRF9XRVNURVJOX0VVUk9QRStMR1JQSURfUkVTX0JBU0UgIldlc3Rlcm4gRXVyb3BlIGFuZCBVbml0ZWQgU3RhdGVzIgogIExHUlBJRF9DRU5UUkFMX0VVUk9QRStMR1JQSURfUkVTX0JBU0UgIkNlbnRyYWwgRXVyb3BlIgogIExHUlBJRF9CQUxUSUMrTEdSUElEX1JFU19CQVNFICJCYWx0aWMiCiAgTEdSUElEX0dSRUVLK0xHUlBJRF9SRVNfQkFTRSAiR3JlZWsiCiAgTEdSUElEX0NZUklMTElDK0xHUlBJRF9SRVNfQkFTRSAiQ3lyaWxsaWMiCiAgTEdSUElEX1RVUktJU0grTEdSUElEX1JFU19CQVNFICJUdXJraWMiCiAgTEdSUElEX0pBUEFORVNFK0xHUlBJRF9SRVNfQkFTRSAiSmFwYW5lc2UiCiAgTEdSUElEX0tPUkVBTitMR1JQSURfUkVTX0JBU0UgIktvcmVhbiIKICBMR1JQSURfVFJBRElUSU9OQUxfQ0hJTkVTRStMR1JQSURfUkVTX0JBU0UgIlRyYWRpdGlvbmFsIENoaW5lc2UiCiAgTEdSUElEX1NJTVBMSUZJRURfQ0hJTkVTRStMR1JQSURfUkVTX0JBU0UgIlNpbXBsaWZpZWQgQ2hpbmVzZSIKICBMR1JQSURfVEhBSStMR1JQSURfUkVTX0JBU0UgIlRoYWkiCiAgTEdSUElEX0hFQlJFVytMR1JQSURfUkVTX0JBU0UgIkhlYnJldyIKICBMR1JQSURfQVJBQklDK0xHUlBJRF9SRVNfQkFTRSAiQXJhYmljIiAKICBMR1JQSURfVklFVE5BTUVTRStMR1JQSURfUkVTX0JBU0UgIlZpZXRuYW1lc2UiCiAgTEdSUElEX0lORElDK0xHUlBJRF9SRVNfQkFTRSAiSW5kaWMiCiAgTEdSUElEX0dFT1JHSUFOK0xHUlBJRF9SRVNfQkFTRSAiR2VvcmdpYW4iCiAgTEdSUElEX0FSTUVOSUFOK0xHUlBJRF9SRVNfQkFTRSAiQXJtZW5pYW4iIAp9Cg==