LyoKICogTG9jYWxlIGRlZmluaXRpb25zIGZvciBKYXBhbmVzZQogKgogKiBDb3B5cmlnaHQgMjAwMiBBbGV4YW5kcmUgSnVsbGlhcmQgZm9yIENvZGVXZWF2ZXJzCiAqCiAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwogKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKICogdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiAqCiAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAogKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgogKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQogKiBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgogKgogKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCiAqIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKICogRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3QsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQQogKi8KCiNwcmFnbWEgY29kZV9wYWdlKDkzMikKClNUUklOR1RBQkxFIExBTkdVQUdFIExBTkdfSkFQQU5FU0UsIFNVQkxBTkdfREVGQVVMVAp7CiAgTE9DQUxFX0ZPTlRTSUdOQVRVUkUgTCJceDAyODNceDgwMDBceDZjZjhceDM4YzdceDAwMTBceDAwMDBceDAwMDBceDAwMDBceDAwMDBceDAwMDJceDAwMDBceDAwMDBceDAwMDBceDAwMDJceDAwMDBceDAwMDAiCiAgTE9DQUxFX0lDQUxFTkRBUlRZUEUgIjEiCiAgTE9DQUxFX0lDRU5UVVJZICIxIgogIExPQ0FMRV9JQ09VTlRSWSAiODEiCiAgTE9DQUxFX0lDVVJSRElHSVRTICIwIgogIExPQ0FMRV9JQ1VSUkVOQ1kgIjAiCiAgTE9DQUxFX0lEQVRFICIyIgogIExPQ0FMRV9JREFZTFpFUk8gIjEiCiAgTE9DQUxFX0lERUZBVUxUQU5TSUNPREVQQUdFICI5MzIiCiAgTE9DQUxFX0lERUZBVUxUQ09ERVBBR0UgIjkzMiIKICBMT0NBTEVfSURFRkFVTFRDT1VOVFJZICI4MSIKICBMT0NBTEVfSURFRkFVTFRFQkNESUNDT0RFUEFHRSAiMjAyOTAiCiAgTE9DQUxFX0lERUZBVUxUTEFOR1VBR0UgIjA0MTEiCiAgTE9DQUxFX0lERUZBVUxUTUFDQ09ERVBBR0UgIjEwMDAxIgogIExPQ0FMRV9JREVGQVVMVFVOSVhDT0RFUEFHRSAiMjA5MzIiCiAgTE9DQUxFX0lESUdJVFMgIjIiCiAgTE9DQUxFX0lESUdJVFNVQlNUSVRVVElPTiAiMSIKICBMT0NBTEVfSUZJUlNUREFZT0ZXRUVLICI2IgogIExPQ0FMRV9JRklSU1RXRUVLT0ZZRUFSICIwIgogIExPQ0FMRV9JSU5UTENVUlJESUdJVFMgIjIiCiAgTE9DQUxFX0lMQU5HVUFHRSAiMDQxMSIKICBMT0NBTEVfSUxEQVRFICIyIgogIExPQ0FMRV9JTFpFUk8gIjEiCiAgTE9DQUxFX0lNRUFTVVJFICIwIgogIExPQ0FMRV9JTU9OTFpFUk8gIjEiCiAgTE9DQUxFX0lORUdDVVJSICIxIgogIExPQ0FMRV9JTkVHTlVNQkVSICIxIgogIExPQ0FMRV9JTkVHU0VQQllTUEFDRSAiMCIKICBMT0NBTEVfSU5FR1NJR05QT1NOICIzIgogIExPQ0FMRV9JTkVHU1lNUFJFQ0VERVMgIjEiCiAgTE9DQUxFX0lPUFRJT05BTENBTEVOREFSICIzIgogIExPQ0FMRV9JUEFQRVJTSVpFICI5IgogIExPQ0FMRV9JUE9TU0VQQllTUEFDRSAiMCIKICBMT0NBTEVfSVBPU1NJR05QT1NOICIzIgogIExPQ0FMRV9JUE9TU1lNUFJFQ0VERVMgIjEiCiAgTE9DQUxFX0lUSU1FICIxIgogIExPQ0FMRV9JVElNRU1BUktQT1NOICIwIgogIExPQ0FMRV9JVExaRVJPICIwIgogIExPQ0FMRV9TMTE1OSAijN+RTyIKICBMT0NBTEVfUzIzNTkgIozfjOMiCiAgTE9DQUxFX1NBQkJSRVZDVFJZTkFNRSAiSlBOIgogIExPQ0FMRV9TQUJCUkVWREFZTkFNRTEgIoyOIgogIExPQ0FMRV9TQUJCUkVWREFZTkFNRTIgIonOIgogIExPQ0FMRV9TQUJCUkVWREFZTkFNRTMgIpCFIgogIExPQ0FMRV9TQUJCUkVWREFZTkFNRTQgIpbYIgogIExPQ0FMRV9TQUJCUkVWREFZTkFNRTUgIovgIgogIExPQ0FMRV9TQUJCUkVWREFZTkFNRTYgIpN5IgogIExPQ0FMRV9TQUJCUkVWREFZTkFNRTcgIpP6IgogIExPQ0FMRV9TQUJCUkVWTEFOR05BTUUgIkpQTiIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTEgIjEiCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUUyICIyIgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FMyAiMyIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTQgIjQiCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUU1ICI1IgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FNiAiNiIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTcgIjciCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUU4ICI4IgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FOSAiOSIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTEwICIxMCIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTExICIxMSIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTEyICIxMiIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTEzICIiCiAgTE9DQUxFX1NDT1VOVFJZICJKYXBhbiIKICBMT0NBTEVfU0NVUlJFTkNZIEwiXHgwMGE1IgogIExPQ0FMRV9TREFURSAiLyIKICBMT0NBTEVfU0RBWU5BTUUxICKMjpdqk/oiCiAgTE9DQUxFX1NEQVlOQU1FMiAiic6XapP6IgogIExPQ0FMRV9TREFZTkFNRTMgIpCFl2qT+iIKICBMT0NBTEVfU0RBWU5BTUU0ICKW2Jdqk/oiCiAgTE9DQUxFX1NEQVlOQU1FNSAii+CXapP6IgogIExPQ0FMRV9TREFZTkFNRTYgIpN5l2qT+iIKICBMT0NBTEVfU0RBWU5BTUU3ICKT+pdqk/oiCiAgTE9DQUxFX1NERUNJTUFMICIuIgogIExPQ0FMRV9TRU5HQ09VTlRSWSAiSmFwYW4iCiAgTE9DQUxFX1NFTkdDVVJSTkFNRSAiSmFwYW5lc2UgWWVuIgogIExPQ0FMRV9TRU5HTEFOR1VBR0UgIkphcGFuZXNlIgogIExPQ0FMRV9TR1JPVVBJTkcgIjM7MCIKICBMT0NBTEVfU0lOVExTWU1CT0wgIkpQWSIKICBMT0NBTEVfU0lTTzMxNjZDVFJZTkFNRSAiSlAiCiAgTE9DQUxFX1NJU082MzlMQU5HTkFNRSAiamEiCiAgTE9DQUxFX1NMQU5HVUFHRSAiSmFwYW5lc2UiCiAgTE9DQUxFX1NMSVNUICIsIgogIExPQ0FMRV9TTE9OR0RBVEUgInl5eXknlE4nTSeMjidkJ5P6JyIKICBMT0NBTEVfU01PTkRFQ0lNQUxTRVAgIi4iCiAgTE9DQUxFX1NNT05HUk9VUElORyAiMzswIgogIExPQ0FMRV9TTU9OVEhOQU1FMSAiMYyOIgogIExPQ0FMRV9TTU9OVEhOQU1FMiAiMoyOIgogIExPQ0FMRV9TTU9OVEhOQU1FMyAiM4yOIgogIExPQ0FMRV9TTU9OVEhOQU1FNCAiNIyOIgogIExPQ0FMRV9TTU9OVEhOQU1FNSAiNYyOIgogIExPQ0FMRV9TTU9OVEhOQU1FNiAiNoyOIgogIExPQ0FMRV9TTU9OVEhOQU1FNyAiN4yOIgogIExPQ0FMRV9TTU9OVEhOQU1FOCAiOIyOIgogIExPQ0FMRV9TTU9OVEhOQU1FOSAiOYyOIgogIExPQ0FMRV9TTU9OVEhOQU1FMTAgIjEwjI4iCiAgTE9DQUxFX1NNT05USE5BTUUxMSAiMTGMjiIKICBMT0NBTEVfU01PTlRITkFNRTEyICIxMoyOIgogIExPQ0FMRV9TTU9OVEhOQU1FMTMgIiIKICBMT0NBTEVfU01PTlRIT1VTQU5EU0VQICIsIgogIExPQ0FMRV9TTkFNRSAiamEtSlAiCiAgTE9DQUxFX1NOQVRJVkVDVFJZTkFNRSAik/qWeyIKICBMT0NBTEVfU05BVElWRUNVUlJOQU1FICKJfiIKICBMT0NBTEVfU05BVElWRURJR0lUUyAiMDEyMzQ1Njc4OSIKICBMT0NBTEVfU05BVElWRUxBTkdOQU1FICKT+pZ7jOoiCiAgTE9DQUxFX1NORUdBVElWRVNJR04gIi0iCiAgTE9DQUxFX1NQT1NJVElWRVNJR04gIiIKICBMT0NBTEVfU1NIT1JUREFURSAieXl5eS9NTS9kZCIKICBMT0NBTEVfU1NPUlROQU1FICJYSklTIgogIExPQ0FMRV9TVEhPVVNBTkQgIiwiCiAgTE9DQUxFX1NUSU1FICI6IgogIExPQ0FMRV9TVElNRUZPUk1BVCAiSDptbTpzcyIKICBMT0NBTEVfU1lFQVJNT05USCAieXl5eSeUTidNJ4yOJyIKCiAgTEdSUElEX1dFU1RFUk5fRVVST1BFK0xHUlBJRF9SRVNfQkFTRSAiV2VzdGVybiBFdXJvcGUgYW5kIFVuaXRlZCBTdGF0ZXMiCiAgTEdSUElEX0NFTlRSQUxfRVVST1BFK0xHUlBJRF9SRVNfQkFTRSAiQ2VudHJhbCBFdXJvcGUiCiAgTEdSUElEX0JBTFRJQytMR1JQSURfUkVTX0JBU0UgIkJhbHRpYyIKICBMR1JQSURfR1JFRUsrTEdSUElEX1JFU19CQVNFICJHcmVlayIKICBMR1JQSURfQ1lSSUxMSUMrTEdSUElEX1JFU19CQVNFICJDeXJpbGxpYyIKICBMR1JQSURfVFVSS0lTSCtMR1JQSURfUkVTX0JBU0UgIlR1cmtpYyIKICBMR1JQSURfSkFQQU5FU0UrTEdSUElEX1JFU19CQVNFICJKYXBhbmVzZSIKICBMR1JQSURfS09SRUFOK0xHUlBJRF9SRVNfQkFTRSAiS29yZWFuIgogIExHUlBJRF9UUkFESVRJT05BTF9DSElORVNFK0xHUlBJRF9SRVNfQkFTRSAiVHJhZGl0aW9uYWwgQ2hpbmVzZSIKICBMR1JQSURfU0lNUExJRklFRF9DSElORVNFK0xHUlBJRF9SRVNfQkFTRSAiU2ltcGxpZmllZCBDaGluZXNlIgogIExHUlBJRF9USEFJK0xHUlBJRF9SRVNfQkFTRSAiVGhhaSIKICBMR1JQSURfSEVCUkVXK0xHUlBJRF9SRVNfQkFTRSAiSGVicmV3IgogIExHUlBJRF9BUkFCSUMrTEdSUElEX1JFU19CQVNFICJBcmFiaWMiIAogIExHUlBJRF9WSUVUTkFNRVNFK0xHUlBJRF9SRVNfQkFTRSAiVmlldG5hbWVzZSIKICBMR1JQSURfSU5ESUMrTEdSUElEX1JFU19CQVNFICJJbmRpYyIKICBMR1JQSURfR0VPUkdJQU4rTEdSUElEX1JFU19CQVNFICJHZW9yZ2lhbiIKICBMR1JQSURfQVJNRU5JQU4rTEdSUElEX1JFU19CQVNFICJBcm1lbmlhbiIKfQo=