LyoKICogTG9jYWxlIGRlZmluaXRpb25zIGZvciBBbGJhbmlhbgogKgogKiBDb3B5cmlnaHQgMjAwMiBBbGV4YW5kcmUgSnVsbGlhcmQgZm9yIENvZGVXZWF2ZXJzCiAqCiAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwogKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKICogdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiAqCiAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAogKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgogKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQogKiBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgogKgogKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCiAqIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKICogRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3QsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQQogKi8KCiNwcmFnbWEgY29kZV9wYWdlKDEyNTApCgpTVFJJTkdUQUJMRSBMQU5HVUFHRSBMQU5HX0FMQkFOSUFOLCBTVUJMQU5HX0RFRkFVTFQKewogIExPQ0FMRV9GT05UU0lHTkFUVVJFIEwiXHgwMDI3XHg4MDAwXHgzODA4XHgwMDAwXHgwMDAwXHgwMDAwXHgwMDAwXHgwMDAwXHgwMDAyXHgwMDAwXHgwMDAwXHgwNDAwXHgwMDEyXHgwMDAwXHgwMDAwXHhjNWQ0IgogIExPQ0FMRV9JQ0FMRU5EQVJUWVBFICIxIgogIExPQ0FMRV9JQ0VOVFVSWSAiMSIKICBMT0NBTEVfSUNPVU5UUlkgIjM1NSIKICBMT0NBTEVfSUNVUlJESUdJVFMgIjIiCiAgTE9DQUxFX0lDVVJSRU5DWSAiMSIKICBMT0NBTEVfSURBVEUgIjIiCiAgTE9DQUxFX0lEQVlMWkVSTyAiMSIKICBMT0NBTEVfSURFRkFVTFRBTlNJQ09ERVBBR0UgIjEyNTAiCiAgTE9DQUxFX0lERUZBVUxUQ09ERVBBR0UgIjg1MiIKICBMT0NBTEVfSURFRkFVTFRDT1VOVFJZICIzNTUiCiAgTE9DQUxFX0lERUZBVUxURUJDRElDQ09ERVBBR0UgIjIwODgwIgogIExPQ0FMRV9JREVGQVVMVExBTkdVQUdFICIwNDFjIgogIExPQ0FMRV9JREVGQVVMVE1BQ0NPREVQQUdFICIxMDAyOSIKICBMT0NBTEVfSURFRkFVTFRVTklYQ09ERVBBR0UgIjI4NTkyIgogIExPQ0FMRV9JRElHSVRTICIyIgogIExPQ0FMRV9JRElHSVRTVUJTVElUVVRJT04gIjEiCiAgTE9DQUxFX0lGSVJTVERBWU9GV0VFSyAiMCIKICBMT0NBTEVfSUZJUlNUV0VFS09GWUVBUiAiMCIKICBMT0NBTEVfSUlOVExDVVJSRElHSVRTICIyIgogIExPQ0FMRV9JTEFOR1VBR0UgIjA0MWMiCiAgTE9DQUxFX0lMREFURSAiMiIKICBMT0NBTEVfSUxaRVJPICIxIgogIExPQ0FMRV9JTUVBU1VSRSAiMCIKICBMT0NBTEVfSU1PTkxaRVJPICIxIgogIExPQ0FMRV9JTkVHQ1VSUiAiNSIKICBMT0NBTEVfSU5FR05VTUJFUiAiMSIKICBMT0NBTEVfSU5FR1NFUEJZU1BBQ0UgIjAiCiAgTE9DQUxFX0lORUdTSUdOUE9TTiAiMSIKICBMT0NBTEVfSU5FR1NZTVBSRUNFREVTICIwIgogIExPQ0FMRV9JTkVVVFJBTCAiMCIKICBMT0NBTEVfSU9QVElPTkFMQ0FMRU5EQVIgIjAiCiAgTE9DQUxFX0lQQVBFUlNJWkUgIjkiCiAgTE9DQUxFX0lQT1NTRVBCWVNQQUNFICIwIgogIExPQ0FMRV9JUE9TU0lHTlBPU04gIjEiCiAgTE9DQUxFX0lQT1NTWU1QUkVDRURFUyAiMCIKICBMT0NBTEVfSVJFQURJTkdMQVlPVVQgIjAiCiAgTE9DQUxFX0lUSU1FICIwIgogIExPQ0FMRV9JVElNRU1BUktQT1NOICIwIgogIExPQ0FMRV9JVExaRVJPICIwIgogIExPQ0FMRV9TMTE1OSAiUEQiCiAgTE9DQUxFX1MyMzU5ICJNRCIKICBMT0NBTEVfU0FCQlJFVkNUUllOQU1FICJBTEIiCiAgTE9DQUxFX1NBQkJSRVZEQVlOQU1FMSAiSOtuIgogIExPQ0FMRV9TQUJCUkVWREFZTkFNRTIgIk1hciIKICBMT0NBTEVfU0FCQlJFVkRBWU5BTUUzICJN63IiCiAgTE9DQUxFX1NBQkJSRVZEQVlOQU1FNCAiRW5qIgogIExPQ0FMRV9TQUJCUkVWREFZTkFNRTUgIlByZSIKICBMT0NBTEVfU0FCQlJFVkRBWU5BTUU2ICJTaHQiCiAgTE9DQUxFX1NBQkJSRVZEQVlOQU1FNyAiRGllIgogIExPQ0FMRV9TQUJCUkVWTEFOR05BTUUgIlNRSSIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTEgIkphbiIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTIgIlNoayIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTMgIk1hciIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTQgIlByaSIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTUgIk1haiIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTYgIlFlciIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTcgIktvciIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTggIkdzaCIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTkgIlNodCIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTEwICJUZXQiCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUUxMSAiTutuIgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FMTIgIkRoaiIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTEzICIiCiAgTE9DQUxFX1NDT1VOVFJZICJBbGJhbmlhIgogIExPQ0FMRV9TQ1VSUkVOQ1kgIkxlayIKICBMT0NBTEVfU0RBVEUgIi0iCiAgTE9DQUxFX1NEQVlOQU1FMSAiZSBo627rIgogIExPQ0FMRV9TREFZTkFNRTIgImUgbWFydOsiCiAgTE9DQUxFX1NEQVlOQU1FMyAiZSBt63JrdXLrIgogIExPQ0FMRV9TREFZTkFNRTQgImUgZW5qdGUiCiAgTE9DQUxFX1NEQVlOQU1FNSAiZSBwcmVtdGUiCiAgTE9DQUxFX1NEQVlOQU1FNiAiZSBzaHR1busiCiAgTE9DQUxFX1NEQVlOQU1FNyAiZSBkaWVsIgogIExPQ0FMRV9TREVDSU1BTCAiLCIKICBMT0NBTEVfU0VOR0NPVU5UUlkgIkFsYmFuaWEiCiAgTE9DQUxFX1NFTkdDVVJSTkFNRSAiQWxiYW5pYW4gTGVrIgogIExPQ0FMRV9TRU5HTEFOR1VBR0UgIkFsYmFuaWFuIgogIExPQ0FMRV9TR1JPVVBJTkcgIjM7MCIKICBMT0NBTEVfU0lOVExTWU1CT0wgIkFMTCIKICBMT0NBTEVfU0lTTzMxNjZDVFJZTkFNRSAiQUwiCiAgTE9DQUxFX1NJU082MzlMQU5HTkFNRSAic3EiCiAgTE9DQUxFX1NMQU5HVUFHRSAiQWxiYW5pYW4iCiAgTE9DQUxFX1NMSVNUICI7IgogIExPQ0FMRV9TTE9OR0RBVEUgInl5eXktTU0tZGQiCiAgTE9DQUxFX1NNT05ERUNJTUFMU0VQICIsIgogIExPQ0FMRV9TTU9OR1JPVVBJTkcgIjM7MCIKICBMT0NBTEVfU01PTlRITkFNRTEgImphbmFyIgogIExPQ0FMRV9TTU9OVEhOQU1FMiAic2hrdXJ0IgogIExPQ0FMRV9TTU9OVEhOQU1FMyAibWFycyIKICBMT0NBTEVfU01PTlRITkFNRTQgInByaWxsIgogIExPQ0FMRV9TTU9OVEhOQU1FNSAibWFqIgogIExPQ0FMRV9TTU9OVEhOQU1FNiAicWVyc2hvciIKICBMT0NBTEVfU01PTlRITkFNRTcgImtvcnJpayIKICBMT0NBTEVfU01PTlRITkFNRTggImd1c2h0IgogIExPQ0FMRV9TTU9OVEhOQU1FOSAic2h0YXRvciIKICBMT0NBTEVfU01PTlRITkFNRTEwICJ0ZXRvciIKICBMT0NBTEVfU01PTlRITkFNRTExICJu6250b3IiCiAgTE9DQUxFX1NNT05USE5BTUUxMiAiZGhqZXRvciIKICBMT0NBTEVfU01PTlRITkFNRTEzICIiCiAgTE9DQUxFX1NNT05USE9VU0FORFNFUCAiLiIKICBMT0NBTEVfU05BTUUgInNxLUFMIgogIExPQ0FMRV9TTkFUSVZFQ1RSWU5BTUUgIlNocWlw63JpYSIKICBMT0NBTEVfU05BVElWRUNVUlJOQU1FICJMZWsiCiAgTE9DQUxFX1NOQVRJVkVESUdJVFMgIjAxMjM0NTY3ODkiCiAgTE9DQUxFX1NOQVRJVkVESVNQTEFZTkFNRSAic2hxaXBlIChTaHFpcOtyaWEpIgogIExPQ0FMRV9TTkFUSVZFTEFOR05BTUUgInNocWlwZSIKICBMT0NBTEVfU05FR0FUSVZFU0lHTiAiLSIKICBMT0NBTEVfU09QRU5UWVBFTEFOR1VBR0VUQUcgIlNRSSAiCiAgTE9DQUxFX1NQT1NJVElWRVNJR04gIiIKICBMT0NBTEVfU1NDUklQVFMgIkxhdG47IgogIExPQ0FMRV9TU0hPUlREQVRFICJ5eXl5LU1NLWRkIgogIExPQ0FMRV9TU0hPUlRUSU1FICJoaDptbS50dCIKICBMT0NBTEVfU1NPUlROQU1FICJEZWZhdWx0IgogIExPQ0FMRV9TVEhPVVNBTkQgIi4iCiAgTE9DQUxFX1NUSU1FICI6IgogIExPQ0FMRV9TVElNRUZPUk1BVCAiaDptbTpzcy50dCIKICBMT0NBTEVfU1lFQVJNT05USCAieXl5eS1NTSIKCiAgTEdSUElEX1dFU1RFUk5fRVVST1BFK0xHUlBJRF9SRVNfQkFTRSAiV2VzdGVybiBFdXJvcGUgYW5kIFVuaXRlZCBTdGF0ZXMiCiAgTEdSUElEX0NFTlRSQUxfRVVST1BFK0xHUlBJRF9SRVNfQkFTRSAiQ2VudHJhbCBFdXJvcGUiCiAgTEdSUElEX0JBTFRJQytMR1JQSURfUkVTX0JBU0UgIkJhbHRpYyIKICBMR1JQSURfR1JFRUsrTEdSUElEX1JFU19CQVNFICJHcmVlayIKICBMR1JQSURfQ1lSSUxMSUMrTEdSUElEX1JFU19CQVNFICJDeXJpbGxpYyIKICBMR1JQSURfVFVSS0lTSCtMR1JQSURfUkVTX0JBU0UgIlR1cmtpYyIKICBMR1JQSURfSkFQQU5FU0UrTEdSUElEX1JFU19CQVNFICJKYXBhbmVzZSIKICBMR1JQSURfS09SRUFOK0xHUlBJRF9SRVNfQkFTRSAiS29yZWFuIgogIExHUlBJRF9UUkFESVRJT05BTF9DSElORVNFK0xHUlBJRF9SRVNfQkFTRSAiVHJhZGl0aW9uYWwgQ2hpbmVzZSIKICBMR1JQSURfU0lNUExJRklFRF9DSElORVNFK0xHUlBJRF9SRVNfQkFTRSAiU2ltcGxpZmllZCBDaGluZXNlIgogIExHUlBJRF9USEFJK0xHUlBJRF9SRVNfQkFTRSAiVGhhaSIKICBMR1JQSURfSEVCUkVXK0xHUlBJRF9SRVNfQkFTRSAiSGVicmV3IgogIExHUlBJRF9BUkFCSUMrTEdSUElEX1JFU19CQVNFICJBcmFiaWMiIAogIExHUlBJRF9WSUVUTkFNRVNFK0xHUlBJRF9SRVNfQkFTRSAiVmlldG5hbWVzZSIKICBMR1JQSURfSU5ESUMrTEdSUElEX1JFU19CQVNFICJJbmRpYyIKICBMR1JQSURfR0VPUkdJQU4rTEdSUElEX1JFU19CQVNFICJHZW9yZ2lhbiIKICBMR1JQSURfQVJNRU5JQU4rTEdSUElEX1JFU19CQVNFICJBcm1lbmlhbiIgCn0K