LyoKICogTG9jYWxlIGRlZmluaXRpb25zIGZvciBDemVjaAogKgogKiBDb3B5cmlnaHQgMjAwMiBBbGV4YW5kcmUgSnVsbGlhcmQgZm9yIENvZGVXZWF2ZXJzCiAqCiAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwogKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKICogdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiAqCiAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAogKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgogKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQogKiBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgogKgogKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCiAqIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKICogRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3QsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQQogKi8KCiNwcmFnbWEgY29kZV9wYWdlKDEyNTApCgpTVFJJTkdUQUJMRSBMQU5HVUFHRSBMQU5HX0NaRUNILCBTVUJMQU5HX0RFRkFVTFQKewogIExPQ0FMRV9GT05UU0lHTkFUVVJFIEwiXHgwMDI3XHg4MDAwXHgzODA4XHgwMDAwXHgwMDAwXHgwMDAwXHgwMDAwXHgwMDAwXHgwMDAyXHgwMDAwXHgwMDAwXHgwNDAwXHgwMDEzXHgwMDAwXHgwMDAwXHhjNWQ0IgogIExPQ0FMRV9JQ0FMRU5EQVJUWVBFICIxIgogIExPQ0FMRV9JQ0VOVFVSWSAiMSIKICBMT0NBTEVfSUNPVU5UUlkgIjQyMCIKICBMT0NBTEVfSUNVUlJESUdJVFMgIjIiCiAgTE9DQUxFX0lDVVJSRU5DWSAiMyIKICBMT0NBTEVfSURBVEUgIjEiCiAgTE9DQUxFX0lEQVlMWkVSTyAiMCIKICBMT0NBTEVfSURFRkFVTFRBTlNJQ09ERVBBR0UgIjEyNTAiCiAgTE9DQUxFX0lERUZBVUxUQ09ERVBBR0UgIjg1MiIKICBMT0NBTEVfSURFRkFVTFRDT1VOVFJZICI0MjAiCiAgTE9DQUxFX0lERUZBVUxURUJDRElDQ09ERVBBR0UgIjUwMCIKICBMT0NBTEVfSURFRkFVTFRMQU5HVUFHRSAiMDQwNSIKICBMT0NBTEVfSURFRkFVTFRNQUNDT0RFUEFHRSAiMTAwMjkiCiAgTE9DQUxFX0lERUZBVUxUVU5JWENPREVQQUdFICIyODU5MiIKICBMT0NBTEVfSURJR0lUUyAiMiIKICBMT0NBTEVfSURJR0lUU1VCU1RJVFVUSU9OICIxIgogIExPQ0FMRV9JRklSU1REQVlPRldFRUsgIjAiCiAgTE9DQUxFX0lGSVJTVFdFRUtPRllFQVIgIjAiCiAgTE9DQUxFX0lJTlRMQ1VSUkRJR0lUUyAiMiIKICBMT0NBTEVfSUxBTkdVQUdFICIwNDA1IgogIExPQ0FMRV9JTERBVEUgIjEiCiAgTE9DQUxFX0lMWkVSTyAiMSIKICBMT0NBTEVfSU1FQVNVUkUgIjAiCiAgTE9DQUxFX0lNT05MWkVSTyAiMCIKICBMT0NBTEVfSU5FR0NVUlIgIjgiCiAgTE9DQUxFX0lORUdOVU1CRVIgIjEiCiAgTE9DQUxFX0lORUdTRVBCWVNQQUNFICIxIgogIExPQ0FMRV9JTkVHU0lHTlBPU04gIjEiCiAgTE9DQUxFX0lORUdTWU1QUkVDRURFUyAiMCIKICBMT0NBTEVfSU9QVElPTkFMQ0FMRU5EQVIgIjAiCiAgTE9DQUxFX0lQQVBFUlNJWkUgIjkiCiAgTE9DQUxFX0lQT1NTRVBCWVNQQUNFICIxIgogIExPQ0FMRV9JUE9TU0lHTlBPU04gIjEiCiAgTE9DQUxFX0lQT1NTWU1QUkVDRURFUyAiMCIKICBMT0NBTEVfSVRJTUUgIjEiCiAgTE9DQUxFX0lUSU1FTUFSS1BPU04gIjAiCiAgTE9DQUxFX0lUTFpFUk8gIjAiCiAgTE9DQUxFX1MxMTU5ICJkb3AuIgogIExPQ0FMRV9TMjM1OSAib2RwLiIKICBMT0NBTEVfU0FCQlJFVkNUUllOQU1FICJDWkUiCiAgTE9DQUxFX1NBQkJSRVZEQVlOQU1FMSAicG8iCiAgTE9DQUxFX1NBQkJSRVZEQVlOQU1FMiAi+nQiCiAgTE9DQUxFX1NBQkJSRVZEQVlOQU1FMyAic3QiCiAgTE9DQUxFX1NBQkJSRVZEQVlOQU1FNCAi6HQiCiAgTE9DQUxFX1NBQkJSRVZEQVlOQU1FNSAicOEiCiAgTE9DQUxFX1NBQkJSRVZEQVlOQU1FNiAic28iCiAgTE9DQUxFX1NBQkJSRVZEQVlOQU1FNyAibmUiCiAgTE9DQUxFX1NBQkJSRVZMQU5HTkFNRSAiQ1NZIgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FMSAiSSIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTIgIklJIgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FMyAiSUlJIgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FNCAiSVYiCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUU1ICJWIgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FNiAiVkkiCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUU3ICJWSUkiCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUU4ICJWSUlJIgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FOSAiSVgiCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUUxMCAiWCIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTExICJYSSIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTEyICJYSUkiCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUUxMyAiIgogIExPQ0FMRV9TQ09VTlRSWSAiQ3plY2ggUmVwdWJsaWMiCiAgTE9DQUxFX1NDVVJSRU5DWSAiS+giCiAgTE9DQUxFX1NEQVRFICIuIgogIExPQ0FMRV9TREFZTkFNRTEgInBvbmTsbO0iCiAgTE9DQUxFX1NEQVlOQU1FMiAi+nRlcv0iCiAgTE9DQUxFX1NEQVlOQU1FMyAic3T4ZWRhIgogIExPQ0FMRV9TREFZTkFNRTQgIuh0dnJ0ZWsiCiAgTE9DQUxFX1NEQVlOQU1FNSAicOF0ZWsiCiAgTE9DQUxFX1NEQVlOQU1FNiAic29ib3RhIgogIExPQ0FMRV9TREFZTkFNRTcgIm5lZOxsZSIKICBMT0NBTEVfU0RFQ0lNQUwgIiwiCiAgTE9DQUxFX1NFTkdDT1VOVFJZICJDemVjaCBSZXB1YmxpYyIKICBMT0NBTEVfU0VOR0NVUlJOQU1FICJDemVjaCBLb3J1bmEiCiAgTE9DQUxFX1NFTkdMQU5HVUFHRSAiQ3plY2giCiAgTE9DQUxFX1NHUk9VUElORyAiMzswIgogIExPQ0FMRV9TSU5UTFNZTUJPTCAiQ1pLIgogIExPQ0FMRV9TSVNPMzE2NkNUUllOQU1FICJDWiIKICBMT0NBTEVfU0lTTzYzOUxBTkdOQU1FICJjcyIKICBMT0NBTEVfU0xBTkdVQUdFICJDemVjaCIKICBMT0NBTEVfU0xJU1QgIjsiCiAgTE9DQUxFX1NMT05HREFURSAiZC4gTU1NTSB5eXl5IgogIExPQ0FMRV9TTU9OREVDSU1BTFNFUCAiLCIKICBMT0NBTEVfU01PTkdST1VQSU5HICIzOzAiCiAgTE9DQUxFX1NNT05USE5BTUUxICJsZWRlbiIKICBMT0NBTEVfU01PTlRITkFNRTIgIvpub3IiCiAgTE9DQUxFX1NNT05USE5BTUUzICJi+GV6ZW4iCiAgTE9DQUxFX1NNT05USE5BTUU0ICJkdWJlbiIKICBMT0NBTEVfU01PTlRITkFNRTUgImt27HRlbiIKICBMT0NBTEVfU01PTlRITkFNRTYgIuhlcnZlbiIKICBMT0NBTEVfU01PTlRITkFNRTcgIuhlcnZlbmVjIgogIExPQ0FMRV9TTU9OVEhOQU1FOCAic3JwZW4iCiAgTE9DQUxFX1NNT05USE5BTUU5ICJ64fjtIgogIExPQ0FMRV9TTU9OVEhOQU1FMTAgIvjtamVuIgogIExPQ0FMRV9TTU9OVEhOQU1FMTEgImxpc3RvcGFkIgogIExPQ0FMRV9TTU9OVEhOQU1FMTIgInByb3NpbmVjIgogIExPQ0FMRV9TTU9OVEhOQU1FMTMgIiIKICBMT0NBTEVfU01PTlRIT1VTQU5EU0VQICKgIgogIExPQ0FMRV9TTkFNRSAiY3MtQ1oiCiAgTE9DQUxFX1NOQVRJVkVDVFJZTkFNRSAiyGVza+GgcmVwdWJsaWthIgogIExPQ0FMRV9TTkFUSVZFQ1VSUk5BTUUgIktvcnVuYSDIZXNr4SIKICBMT0NBTEVfU05BVElWRURJR0lUUyAiMDEyMzQ1Njc4OSIKICBMT0NBTEVfU05BVElWRUxBTkdOQU1FICLoZZp0aW5hIgogIExPQ0FMRV9TTkVHQVRJVkVTSUdOICItIgogIExPQ0FMRV9TUE9TSVRJVkVTSUdOICIiCiAgTE9DQUxFX1NTQ1JJUFRTICJMYXRuOyIKICBMT0NBTEVfU1NIT1JUREFURSAiZC5NLnl5eXkiCiAgTE9DQUxFX1NTT1JUTkFNRSAiRGVmYXVsdCIKICBMT0NBTEVfU1RIT1VTQU5EICKgIgogIExPQ0FMRV9TVElNRSAiOiIKICBMT0NBTEVfU1RJTUVGT1JNQVQgIkg6bW06c3MiCiAgTE9DQUxFX1NZRUFSTU9OVEggIk1NTU0geXl5eSIKCiAgTEdSUElEX1dFU1RFUk5fRVVST1BFK0xHUlBJRF9SRVNfQkFTRSAiV2VzdGVybiBFdXJvcGUgYW5kIFVuaXRlZCBTdGF0ZXMiCiAgTEdSUElEX0NFTlRSQUxfRVVST1BFK0xHUlBJRF9SRVNfQkFTRSAiQ2VudHJhbCBFdXJvcGUiCiAgTEdSUElEX0JBTFRJQytMR1JQSURfUkVTX0JBU0UgIkJhbHRpYyIKICBMR1JQSURfR1JFRUsrTEdSUElEX1JFU19CQVNFICJHcmVlayIKICBMR1JQSURfQ1lSSUxMSUMrTEdSUElEX1JFU19CQVNFICJDeXJpbGxpYyIKICBMR1JQSURfVFVSS0lTSCtMR1JQSURfUkVTX0JBU0UgIlR1cmtpYyIKICBMR1JQSURfSkFQQU5FU0UrTEdSUElEX1JFU19CQVNFICJKYXBhbmVzZSIKICBMR1JQSURfS09SRUFOK0xHUlBJRF9SRVNfQkFTRSAiS29yZWFuIgogIExHUlBJRF9UUkFESVRJT05BTF9DSElORVNFK0xHUlBJRF9SRVNfQkFTRSAiVHJhZGl0aW9uYWwgQ2hpbmVzZSIKICBMR1JQSURfU0lNUExJRklFRF9DSElORVNFK0xHUlBJRF9SRVNfQkFTRSAiU2ltcGxpZmllZCBDaGluZXNlIgogIExHUlBJRF9USEFJK0xHUlBJRF9SRVNfQkFTRSAiVGhhaSIKICBMR1JQSURfSEVCUkVXK0xHUlBJRF9SRVNfQkFTRSAiSGVicmV3IgogIExHUlBJRF9BUkFCSUMrTEdSUElEX1JFU19CQVNFICJBcmFiaWMiIAogIExHUlBJRF9WSUVUTkFNRVNFK0xHUlBJRF9SRVNfQkFTRSAiVmlldG5hbWVzZSIKICBMR1JQSURfSU5ESUMrTEdSUElEX1JFU19CQVNFICJJbmRpYyIKICBMR1JQSURfR0VPUkdJQU4rTEdSUElEX1JFU19CQVNFICJHZW9yZ2lhbiIKICBMR1JQSURfQVJNRU5JQU4rTEdSUElEX1JFU19CQVNFICJBcm1lbmlhbiIKfQo=