LyoKICogTG9jYWxlIGRlZmluaXRpb25zIGZvciBJY2VsYW5kaWMKICoKICogQ29weXJpZ2h0IDIwMDIgQWxleGFuZHJlIEp1bGxpYXJkIGZvciBDb2RlV2VhdmVycwogKgogKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCiAqIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgogKgogKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKICogTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KICoKICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwogKiBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCiAqIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EKICovCgojcHJhZ21hIGNvZGVfcGFnZSgxMjUyKQoKU1RSSU5HVEFCTEUgTEFOR1VBR0UgTEFOR19JQ0VMQU5ESUMsIFNVQkxBTkdfREVGQVVMVAp7CiAgTE9DQUxFX0ZPTlRTSUdOQVRVUkUgTCJceDAwMmZceDgwMDBceDM4MDhceDAwMDBceDAwMDBceDAwMDBceDAwMDBceDAwMDBceDAwMDFceDAwMDBceDAwMDBceDQwMDBceDAwMDNceDAwMDBceDAwMDBceGM1ZDQiCiAgTE9DQUxFX0lDQUxFTkRBUlRZUEUgIjEiCiAgTE9DQUxFX0lDRU5UVVJZICIxIgogIExPQ0FMRV9JQ09VTlRSWSAiMzU0IgogIExPQ0FMRV9JQ1VSUkRJR0lUUyAiMiIKICBMT0NBTEVfSUNVUlJFTkNZICIzIgogIExPQ0FMRV9JREFURSAiMSIKICBMT0NBTEVfSURBWUxaRVJPICIwIgogIExPQ0FMRV9JREVGQVVMVEFOU0lDT0RFUEFHRSAiMTI1MiIKICBMT0NBTEVfSURFRkFVTFRDT0RFUEFHRSAiODUwIgogIExPQ0FMRV9JREVGQVVMVENPVU5UUlkgIjM1NCIKICBMT0NBTEVfSURFRkFVTFRFQkNESUNDT0RFUEFHRSAiMjA4NzEiCiAgTE9DQUxFX0lERUZBVUxUTEFOR1VBR0UgIjA0MGYiCiAgTE9DQUxFX0lERUZBVUxUTUFDQ09ERVBBR0UgIjEwMDc5IgogIExPQ0FMRV9JREVGQVVMVFVOSVhDT0RFUEFHRSAiMjg2MDUiCiAgTE9DQUxFX0lESUdJVFMgIjIiCiAgTE9DQUxFX0lESUdJVFNVQlNUSVRVVElPTiAiMSIKICBMT0NBTEVfSUZJUlNUREFZT0ZXRUVLICIwIgogIExPQ0FMRV9JRklSU1RXRUVLT0ZZRUFSICIyIgogIExPQ0FMRV9JSU5UTENVUlJESUdJVFMgIjIiCiAgTE9DQUxFX0lMQU5HVUFHRSAiMDQwZiIKICBMT0NBTEVfSUxEQVRFICIxIgogIExPQ0FMRV9JTFpFUk8gIjEiCiAgTE9DQUxFX0lNRUFTVVJFICIwIgogIExPQ0FMRV9JTU9OTFpFUk8gIjAiCiAgTE9DQUxFX0lORUdDVVJSICI4IgogIExPQ0FMRV9JTkVHTlVNQkVSICIxIgogIExPQ0FMRV9JTkVHU0VQQllTUEFDRSAiMSIKICBMT0NBTEVfSU5FR1NJR05QT1NOICIxIgogIExPQ0FMRV9JTkVHU1lNUFJFQ0VERVMgIjAiCiAgTE9DQUxFX0lPUFRJT05BTENBTEVOREFSICIwIgogIExPQ0FMRV9JUEFQRVJTSVpFICI5IgogIExPQ0FMRV9JUE9TU0VQQllTUEFDRSAiMSIKICBMT0NBTEVfSVBPU1NJR05QT1NOICIxIgogIExPQ0FMRV9JUE9TU1lNUFJFQ0VERVMgIjAiCiAgTE9DQUxFX0lUSU1FICIxIgogIExPQ0FMRV9JVElNRU1BUktQT1NOICIwIgogIExPQ0FMRV9JVExaRVJPICIxIgogIExPQ0FMRV9TMTE1OSAiIgogIExPQ0FMRV9TMjM1OSAiIgogIExPQ0FMRV9TQUJCUkVWQ1RSWU5BTUUgIklTTCIKICBMT0NBTEVfU0FCQlJFVkRBWU5BTUUxICJt4W4uIgogIExPQ0FMRV9TQUJCUkVWREFZTkFNRTIgIv5yaS4iCiAgTE9DQUxFX1NBQkJSRVZEQVlOQU1FMyAibWnwLiIKICBMT0NBTEVfU0FCQlJFVkRBWU5BTUU0ICJmaW0uIgogIExPQ0FMRV9TQUJCUkVWREFZTkFNRTUgImb2cy4iCiAgTE9DQUxFX1NBQkJSRVZEQVlOQU1FNiAibGF1LiIKICBMT0NBTEVfU0FCQlJFVkRBWU5BTUU3ICJzdW4uIgogIExPQ0FMRV9TQUJCUkVWTEFOR05BTUUgIklTTCIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTEgImphbi4iCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUUyICJmZWIuIgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FMyAibWFyLiIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTQgImFwci4iCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUU1ICJtYe0iCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUU2ICJq+m4uIgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FNyAiavpsLiIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTggIuFn+i4iCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUU5ICJzZXAuIgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FMTAgIm9rdC4iCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUUxMSAibvN2LiIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTEyICJkZXMuIgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FMTMgIiIKICBMT0NBTEVfU0NPVU5UUlkgIkljZWxhbmQiCiAgTE9DQUxFX1NDVVJSRU5DWSAia3IuIgogIExPQ0FMRV9TREFURSAiLiIKICBMT0NBTEVfU0RBWU5BTUUxICJt4W51ZGFndXIiCiAgTE9DQUxFX1NEQVlOQU1FMiAi/nJp8Gp1ZGFndXIiCiAgTE9DQUxFX1NEQVlOQU1FMyAibWnwdmlrdWRhZ3VyIgogIExPQ0FMRV9TREFZTkFNRTQgImZpbW10dWRhZ3VyIgogIExPQ0FMRV9TREFZTkFNRTUgImb2c3R1ZGFndXIiCiAgTE9DQUxFX1NEQVlOQU1FNiAibGF1Z2FyZGFndXIiCiAgTE9DQUxFX1NEQVlOQU1FNyAic3VubnVkYWd1ciIKICBMT0NBTEVfU0RFQ0lNQUwgIiwiCiAgTE9DQUxFX1NFTkdDT1VOVFJZICJJY2VsYW5kIgogIExPQ0FMRV9TRU5HQ1VSUk5BTUUgIkljZWxhbmRpYyBLcm9uYSIKICBMT0NBTEVfU0VOR0xBTkdVQUdFICJJY2VsYW5kaWMiCiAgTE9DQUxFX1NHUk9VUElORyAiMzswIgogIExPQ0FMRV9TSU5UTFNZTUJPTCAiSVNLIgogIExPQ0FMRV9TSVNPMzE2NkNUUllOQU1FICJJUyIKICBMT0NBTEVfU0lTTzYzOUxBTkdOQU1FICJpcyIKICBMT0NBTEVfU0xBTkdVQUdFICJJY2VsYW5kaWMiCiAgTE9DQUxFX1NMSVNUICI7IgogIExPQ0FMRV9TTE9OR0RBVEUgImQuIE1NTU0geXl5eSIKICBMT0NBTEVfU01PTkRFQ0lNQUxTRVAgIiwiCiAgTE9DQUxFX1NNT05HUk9VUElORyAiMzswIgogIExPQ0FMRV9TTU9OVEhOQU1FMSAiamFu+mFyIgogIExPQ0FMRV9TTU9OVEhOQU1FMiAiZmVicvphciIKICBMT0NBTEVfU01PTlRITkFNRTMgIm1hcnMiCiAgTE9DQUxFX1NNT05USE5BTUU0ICJhcHLtbCIKICBMT0NBTEVfU01PTlRITkFNRTUgIm1h7SIKICBMT0NBTEVfU01PTlRITkFNRTYgImr6bu0iCiAgTE9DQUxFX1NNT05USE5BTUU3ICJq+mztIgogIExPQ0FMRV9TTU9OVEhOQU1FOCAi4Wf6c3QiCiAgTE9DQUxFX1NNT05USE5BTUU5ICJzZXB0ZW1iZXIiCiAgTE9DQUxFX1NNT05USE5BTUUxMCAib2t082JlciIKICBMT0NBTEVfU01PTlRITkFNRTExICJu83ZlbWJlciIKICBMT0NBTEVfU01PTlRITkFNRTEyICJkZXNlbWJlciIKICBMT0NBTEVfU01PTlRITkFNRTEzICIiCiAgTE9DQUxFX1NNT05USE9VU0FORFNFUCAiLiIKICBMT0NBTEVfU05BTUUgImlzLUlTIgogIExPQ0FMRV9TTkFUSVZFQ1RSWU5BTUUgIs1zbGFuZCIKICBMT0NBTEVfU05BVElWRUNVUlJOQU1FICJLcvNuYSIKICBMT0NBTEVfU05BVElWRURJR0lUUyAiMDEyMzQ1Njc4OSIKICBMT0NBTEVfU05BVElWRUxBTkdOQU1FICLtc2xlbnNrYSIKICBMT0NBTEVfU05FR0FUSVZFU0lHTiAiLSIKICBMT0NBTEVfU1BPU0lUSVZFU0lHTiAiIgogIExPQ0FMRV9TU0hPUlREQVRFICJkLk0ueXl5eSIKICBMT0NBTEVfU1NPUlROQU1FICJEZWZhdWx0IgogIExPQ0FMRV9TVEhPVVNBTkQgIi4iCiAgTE9DQUxFX1NUSU1FICI6IgogIExPQ0FMRV9TVElNRUZPUk1BVCAiSEg6bW06c3MiCiAgTE9DQUxFX1NZRUFSTU9OVEggIk1NTU0geXl5eSIKCiAgTEdSUElEX1dFU1RFUk5fRVVST1BFK0xHUlBJRF9SRVNfQkFTRSAiV2VzdGVybiBFdXJvcGUgYW5kIFVuaXRlZCBTdGF0ZXMiCiAgTEdSUElEX0NFTlRSQUxfRVVST1BFK0xHUlBJRF9SRVNfQkFTRSAiQ2VudHJhbCBFdXJvcGUiCiAgTEdSUElEX0JBTFRJQytMR1JQSURfUkVTX0JBU0UgIkJhbHRpYyIKICBMR1JQSURfR1JFRUsrTEdSUElEX1JFU19CQVNFICJHcmVlayIKICBMR1JQSURfQ1lSSUxMSUMrTEdSUElEX1JFU19CQVNFICJDeXJpbGxpYyIKICBMR1JQSURfVFVSS0lTSCtMR1JQSURfUkVTX0JBU0UgIlR1cmtpYyIKICBMR1JQSURfSkFQQU5FU0UrTEdSUElEX1JFU19CQVNFICJKYXBhbmVzZSIKICBMR1JQSURfS09SRUFOK0xHUlBJRF9SRVNfQkFTRSAiS29yZWFuIgogIExHUlBJRF9UUkFESVRJT05BTF9DSElORVNFK0xHUlBJRF9SRVNfQkFTRSAiVHJhZGl0aW9uYWwgQ2hpbmVzZSIKICBMR1JQSURfU0lNUExJRklFRF9DSElORVNFK0xHUlBJRF9SRVNfQkFTRSAiU2ltcGxpZmllZCBDaGluZXNlIgogIExHUlBJRF9USEFJK0xHUlBJRF9SRVNfQkFTRSAiVGhhaSIKICBMR1JQSURfSEVCUkVXK0xHUlBJRF9SRVNfQkFTRSAiSGVicmV3IgogIExHUlBJRF9BUkFCSUMrTEdSUElEX1JFU19CQVNFICJBcmFiaWMiIAogIExHUlBJRF9WSUVUTkFNRVNFK0xHUlBJRF9SRVNfQkFTRSAiVmlldG5hbWVzZSIKICBMR1JQSURfSU5ESUMrTEdSUElEX1JFU19CQVNFICJJbmRpYyIKICBMR1JQSURfR0VPUkdJQU4rTEdSUElEX1JFU19CQVNFICJHZW9yZ2lhbiIKICBMR1JQSURfQVJNRU5JQU4rTEdSUElEX1JFU19CQVNFICJBcm1lbmlhbiIKfQo=