LyoKICogTG9jYWxlIGRlZmluaXRpb25zIGZvciBTbG92YWsKICoKICogQ29weXJpZ2h0IDIwMDIgQWxleGFuZHJlIEp1bGxpYXJkIGZvciBDb2RlV2VhdmVycwogKgogKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCiAqIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgogKgogKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKICogTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KICoKICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwogKiBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCiAqIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EKICovCgojcHJhZ21hIGNvZGVfcGFnZSgxMjUwKQoKU1RSSU5HVEFCTEUgTEFOR1VBR0UgTEFOR19TTE9WQUssIFNVQkxBTkdfREVGQVVMVAp7CiAgTE9DQUxFX0ZPTlRTSUdOQVRVUkUgTCJceDAwMjdceDgwMDBceDM4MDhceDAwMDBceDAwMDBceDAwMDBceDAwMDBceDAwMDBceDAwMDJceDAwMDBceDAwMDBceDA0MDBceDAwMTJceDAwMDBceDAwMDBceGM1ZDQiCiAgTE9DQUxFX0lDQUxFTkRBUlRZUEUgIjEiCiAgTE9DQUxFX0lDRU5UVVJZICIxIgogIExPQ0FMRV9JQ09VTlRSWSAiNDIxIgogIExPQ0FMRV9JQ1VSUkRJR0lUUyAiMiIKICBMT0NBTEVfSUNVUlJFTkNZICIzIgogIExPQ0FMRV9JREFURSAiMSIKICBMT0NBTEVfSURBWUxaRVJPICIwIgogIExPQ0FMRV9JREVGQVVMVEFOU0lDT0RFUEFHRSAiMTI1MCIKICBMT0NBTEVfSURFRkFVTFRDT0RFUEFHRSAiODUyIgogIExPQ0FMRV9JREVGQVVMVENPVU5UUlkgIjQyMSIKICBMT0NBTEVfSURFRkFVTFRFQkNESUNDT0RFUEFHRSAiMjA4ODAiCiAgTE9DQUxFX0lERUZBVUxUTEFOR1VBR0UgIjA0MWIiCiAgTE9DQUxFX0lERUZBVUxUTUFDQ09ERVBBR0UgIjEwMDI5IgogIExPQ0FMRV9JREVGQVVMVFVOSVhDT0RFUEFHRSAiMjg1OTIiCiAgTE9DQUxFX0lESUdJVFMgIjIiCiAgTE9DQUxFX0lESUdJVFNVQlNUSVRVVElPTiAiMSIKICBMT0NBTEVfSUZJUlNUREFZT0ZXRUVLICIwIgogIExPQ0FMRV9JRklSU1RXRUVLT0ZZRUFSICIwIgogIExPQ0FMRV9JSU5UTENVUlJESUdJVFMgIjIiCiAgTE9DQUxFX0lMQU5HVUFHRSAiMDQxYiIKICBMT0NBTEVfSUxEQVRFICIxIgogIExPQ0FMRV9JTFpFUk8gIjEiCiAgTE9DQUxFX0lNRUFTVVJFICIwIgogIExPQ0FMRV9JTU9OTFpFUk8gIjAiCiAgTE9DQUxFX0lORUdDVVJSICI4IgogIExPQ0FMRV9JTkVHTlVNQkVSICIxIgogIExPQ0FMRV9JTkVHU0VQQllTUEFDRSAiMSIKICBMT0NBTEVfSU5FR1NJR05QT1NOICIxIgogIExPQ0FMRV9JTkVHU1lNUFJFQ0VERVMgIjAiCiAgTE9DQUxFX0lORVVUUkFMICIwIgogIExPQ0FMRV9JT1BUSU9OQUxDQUxFTkRBUiAiMCIKICBMT0NBTEVfSVBBUEVSU0laRSAiOSIKICBMT0NBTEVfSVBPU1NFUEJZU1BBQ0UgIjEiCiAgTE9DQUxFX0lQT1NTSUdOUE9TTiAiMSIKICBMT0NBTEVfSVBPU1NZTVBSRUNFREVTICIwIgogIExPQ0FMRV9JUkVBRElOR0xBWU9VVCAiMCIKICBMT0NBTEVfSVRJTUUgIjEiCiAgTE9DQUxFX0lUSU1FTUFSS1BPU04gIjAiCiAgTE9DQUxFX0lUTFpFUk8gIjAiCiAgTE9DQUxFX1MxMTU5ICIiCiAgTE9DQUxFX1MyMzU5ICIiCiAgTE9DQUxFX1NBQkJSRVZDVFJZTkFNRSAiU1ZLIgogIExPQ0FMRV9TQUJCUkVWREFZTkFNRTEgInBvIgogIExPQ0FMRV9TQUJCUkVWREFZTkFNRTIgInV0IgogIExPQ0FMRV9TQUJCUkVWREFZTkFNRTMgInN0IgogIExPQ0FMRV9TQUJCUkVWREFZTkFNRTQgIpp0IgogIExPQ0FMRV9TQUJCUkVWREFZTkFNRTUgInBpIgogIExPQ0FMRV9TQUJCUkVWREFZTkFNRTYgInNvIgogIExPQ0FMRV9TQUJCUkVWREFZTkFNRTcgIm5lIgogIExPQ0FMRV9TQUJCUkVWTEFOR05BTUUgIlNLWSIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTEgIkkiCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUUyICJJSSIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTMgIklJSSIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTQgIklWIgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FNSAiViIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTYgIlZJIgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FNyAiVklJIgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FOCAiVklJSSIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTkgIklYIgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FMTAgIlgiCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUUxMSAiWEkiCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUUxMiAiWElJIgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FMTMgIiIKICBMT0NBTEVfU0NPVU5UUlkgIlNsb3Zha2lhIgogIExPQ0FMRV9TQ1VSUkVOQ1kgIlNrIgogIExPQ0FMRV9TREFURSAiLiIKICBMT0NBTEVfU0RBWU5BTUUxICJwb25kZWxvayIKICBMT0NBTEVfU0RBWU5BTUUyICJ1dG9yb2siCiAgTE9DQUxFX1NEQVlOQU1FMyAic3RyZWRhIgogIExPQ0FMRV9TREFZTkFNRTQgIpp0dnJ0b2siCiAgTE9DQUxFX1NEQVlOQU1FNSAicGlhdG9rIgogIExPQ0FMRV9TREFZTkFNRTYgInNvYm90YSIKICBMT0NBTEVfU0RBWU5BTUU3ICJuZWRlvmEiCiAgTE9DQUxFX1NERUNJTUFMICIsIgogIExPQ0FMRV9TRU5HQ09VTlRSWSAiU2xvdmFraWEiCiAgTE9DQUxFX1NFTkdDVVJSTkFNRSAiU2xvdmFrIEtvcnVuYSIKICBMT0NBTEVfU0VOR0xBTkdVQUdFICJTbG92YWsiCiAgTE9DQUxFX1NHUk9VUElORyAiMzswIgogIExPQ0FMRV9TSU5UTFNZTUJPTCAiU0tLIgogIExPQ0FMRV9TSVNPMzE2NkNUUllOQU1FICJTSyIKICBMT0NBTEVfU0lTTzYzOUxBTkdOQU1FICJzayIKICBMT0NBTEVfU0xBTkdVQUdFICJTbG92YWsiCiAgTE9DQUxFX1NMSVNUICI7IgogIExPQ0FMRV9TTE9OR0RBVEUgImQuIE1NTU0geXl5eSIKICBMT0NBTEVfU01PTkRFQ0lNQUxTRVAgIiwiCiAgTE9DQUxFX1NNT05HUk9VUElORyAiMzswIgogIExPQ0FMRV9TTU9OVEhOQU1FMSAiamFudeFyIgogIExPQ0FMRV9TTU9OVEhOQU1FMiAiZmVicnXhciIKICBMT0NBTEVfU01PTlRITkFNRTMgIm1hcmVjIgogIExPQ0FMRV9TTU9OVEhOQU1FNCAiYXBy7WwiCiAgTE9DQUxFX1NNT05USE5BTUU1ICJt4WoiCiAgTE9DQUxFX1NNT05USE5BTUU2ICJq+m4iCiAgTE9DQUxFX1NNT05USE5BTUU3ICJq+mwiCiAgTE9DQUxFX1NNT05USE5BTUU4ICJhdWd1c3QiCiAgTE9DQUxFX1NNT05USE5BTUU5ICJzZXB0ZW1iZXIiCiAgTE9DQUxFX1NNT05USE5BTUUxMCAib2t082JlciIKICBMT0NBTEVfU01PTlRITkFNRTExICJub3ZlbWJlciIKICBMT0NBTEVfU01PTlRITkFNRTEyICJkZWNlbWJlciIKICBMT0NBTEVfU01PTlRITkFNRTEzICIiCiAgTE9DQUxFX1NNT05USE9VU0FORFNFUCAioCIKICBMT0NBTEVfU05BTUUgInNrLVNLIgogIExPQ0FMRV9TTkFUSVZFQ1RSWU5BTUUgIlNsb3ZlbnNr4SByZXB1Ymxpa2EiCiAgTE9DQUxFX1NOQVRJVkVDVVJSTkFNRSAiU2xvdmVuc2vhIGtvcnVuYSIKICBMT0NBTEVfU05BVElWRURJR0lUUyAiMDEyMzQ1Njc4OSIKICBMT0NBTEVfU05BVElWRURJU1BMQVlOQU1FICJzbG92ZW7oaW5hIChTbG92ZW5za+EgcmVwdWJsaWthKSIKICBMT0NBTEVfU05BVElWRUxBTkdOQU1FICJzbG92ZW7oaW5hIgogIExPQ0FMRV9TTkVHQVRJVkVTSUdOICItIgogIExPQ0FMRV9TT1BFTlRZUEVMQU5HVUFHRVRBRyAiU0tZICIKICBMT0NBTEVfU1BPU0lUSVZFU0lHTiAiIgogIExPQ0FMRV9TU0NSSVBUUyAiTGF0bjsiCiAgTE9DQUxFX1NTSE9SVERBVEUgImQuIE0uIHl5eXkiCiAgTE9DQUxFX1NTSE9SVFRJTUUgIkg6bW0iCiAgTE9DQUxFX1NTT1JUTkFNRSAiRGVmYXVsdCIKICBMT0NBTEVfU1RIT1VTQU5EICKgIgogIExPQ0FMRV9TVElNRSAiOiIKICBMT0NBTEVfU1RJTUVGT1JNQVQgIkg6bW06c3MiCiAgTE9DQUxFX1NZRUFSTU9OVEggIk1NTU0geXl5eSIKCiAgTEdSUElEX1dFU1RFUk5fRVVST1BFK0xHUlBJRF9SRVNfQkFTRSAiWuFwYWRu4SBFdXLzcGEgYSBTcG9qZW7pIJp04XR5IgogIExHUlBJRF9DRU5UUkFMX0VVUk9QRStMR1JQSURfUkVTX0JBU0UgIlN0cmVkb2V1cvNwc2tlIGphenlreSIKICBMR1JQSURfQkFMVElDK0xHUlBJRF9SRVNfQkFTRSAiUG9iYWx0c2vpIGphenlreSIKICBMR1JQSURfR1JFRUsrTEdSUElEX1JFU19CQVNFICJHcunodGluYSIKICBMR1JQSURfQ1lSSUxMSUMrTEdSUElEX1JFU19CQVNFICJDeXJpbGlrYSIKICBMR1JQSURfVFVSS0lTSCtMR1JQSURfUkVTX0JBU0UgIlR1cmVja+kgamF6eWt5IgogIExHUlBJRF9KQVBBTkVTRStMR1JQSURfUkVTX0JBU0UgIkphcG9u6GluYSIKICBMR1JQSURfS09SRUFOK0xHUlBJRF9SRVNfQkFTRSAiS/NyZWroaW5hIgogIExHUlBJRF9UUkFESVRJT05BTF9DSElORVNFK0xHUlBJRF9SRVNfQkFTRSAiyO1umnRpbmEgKHRyYWRp6G7hKSIKICBMR1JQSURfU0lNUExJRklFRF9DSElORVNFK0xHUlBJRF9SRVNfQkFTRSAiyO1umnRpbmEgKHpqZWRub2R1mmVu4SkiCiAgTEdSUElEX1RIQUkrTEdSUElEX1JFU19CQVNFICJUaGFq6GluYSIKICBMR1JQSURfSEVCUkVXK0xHUlBJRF9SRVNfQkFTRSAiSGVicmVq6GluYSIKICBMR1JQSURfQVJBQklDK0xHUlBJRF9SRVNfQkFTRSAiQXJhYnNr6SBqYXp5a3kiCiAgTEdSUElEX1ZJRVROQU1FU0UrTEdSUElEX1JFU19CQVNFICJWaWV0bmFt6GluYSIKICBMR1JQSURfSU5ESUMrTEdSUElEX1JFU19CQVNFICJJbmRpY2vpIGphenlreSIKICBMR1JQSURfR0VPUkdJQU4rTEdSUElEX1JFU19CQVNFICJHcnV67W7oaW5hIgogIExHUlBJRF9BUk1FTklBTitMR1JQSURfUkVTX0JBU0UgIkFybelu6GluYSIKfQo=