LyoKICogTG9jYWxlIGRlZmluaXRpb25zIGZvciBDemVjaAogKgogKiBDb3B5cmlnaHQgMjAwMiBBbGV4YW5kcmUgSnVsbGlhcmQgZm9yIENvZGVXZWF2ZXJzCiAqCiAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwogKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKICogdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiAqCiAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAogKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgogKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQogKiBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgogKgogKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCiAqIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKICogRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3QsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQQogKi8KCiNwcmFnbWEgY29kZV9wYWdlKDEyNTApCgpTVFJJTkdUQUJMRSBMQU5HVUFHRSBMQU5HX0NaRUNILCBTVUJMQU5HX0RFRkFVTFQKewogIExPQ0FMRV9GT05UU0lHTkFUVVJFIEwiXHgwMDI3XHg4MDAwXHgzODA4XHgwMDAwXHgwMDAwXHgwMDAwXHgwMDAwXHgwMDAwXHgwMDAyXHgwMDAwXHgwMDAwXHgwNDAwXHgwMDEzXHgwMDAwXHgwMDAwXHhjNWQ0IgogIExPQ0FMRV9JQ0FMRU5EQVJUWVBFICIxIgogIExPQ0FMRV9JQ0VOVFVSWSAiMSIKICBMT0NBTEVfSUNPVU5UUlkgIjQyMCIKICBMT0NBTEVfSUNVUlJESUdJVFMgIjIiCiAgTE9DQUxFX0lDVVJSRU5DWSAiMyIKICBMT0NBTEVfSURBVEUgIjEiCiAgTE9DQUxFX0lEQVlMWkVSTyAiMCIKICBMT0NBTEVfSURFRkFVTFRBTlNJQ09ERVBBR0UgIjEyNTAiCiAgTE9DQUxFX0lERUZBVUxUQ09ERVBBR0UgIjg1MiIKICBMT0NBTEVfSURFRkFVTFRDT1VOVFJZICI0MjAiCiAgTE9DQUxFX0lERUZBVUxURUJDRElDQ09ERVBBR0UgIjUwMCIKICBMT0NBTEVfSURFRkFVTFRMQU5HVUFHRSAiMDQwNSIKICBMT0NBTEVfSURFRkFVTFRNQUNDT0RFUEFHRSAiMTAwMjkiCiAgTE9DQUxFX0lERUZBVUxUVU5JWENPREVQQUdFICIyODU5MiIKICBMT0NBTEVfSURJR0lUUyAiMiIKICBMT0NBTEVfSURJR0lUU1VCU1RJVFVUSU9OICIxIgogIExPQ0FMRV9JRklSU1REQVlPRldFRUsgIjAiCiAgTE9DQUxFX0lGSVJTVFdFRUtPRllFQVIgIjAiCiAgTE9DQUxFX0lJTlRMQ1VSUkRJR0lUUyAiMiIKICBMT0NBTEVfSUxBTkdVQUdFICIwNDA1IgogIExPQ0FMRV9JTERBVEUgIjEiCiAgTE9DQUxFX0lMWkVSTyAiMSIKICBMT0NBTEVfSU1FQVNVUkUgIjAiCiAgTE9DQUxFX0lNT05MWkVSTyAiMCIKICBMT0NBTEVfSU5FR0NVUlIgIjgiCiAgTE9DQUxFX0lORUdOVU1CRVIgIjEiCiAgTE9DQUxFX0lORUdTRVBCWVNQQUNFICIxIgogIExPQ0FMRV9JTkVHU0lHTlBPU04gIjEiCiAgTE9DQUxFX0lORUdTWU1QUkVDRURFUyAiMCIKICBMT0NBTEVfSU5FVVRSQUwgIjAiCiAgTE9DQUxFX0lPUFRJT05BTENBTEVOREFSICIwIgogIExPQ0FMRV9JUEFQRVJTSVpFICI5IgogIExPQ0FMRV9JUE9TU0VQQllTUEFDRSAiMSIKICBMT0NBTEVfSVBPU1NJR05QT1NOICIxIgogIExPQ0FMRV9JUE9TU1lNUFJFQ0VERVMgIjAiCiAgTE9DQUxFX0lSRUFESU5HTEFZT1VUICIwIgogIExPQ0FMRV9JVElNRSAiMSIKICBMT0NBTEVfSVRJTUVNQVJLUE9TTiAiMCIKICBMT0NBTEVfSVRMWkVSTyAiMCIKICBMT0NBTEVfUzExNTkgImRvcC4iCiAgTE9DQUxFX1MyMzU5ICJvZHAuIgogIExPQ0FMRV9TQUJCUkVWQ1RSWU5BTUUgIkNaRSIKICBMT0NBTEVfU0FCQlJFVkRBWU5BTUUxICJwbyIKICBMT0NBTEVfU0FCQlJFVkRBWU5BTUUyICL6dCIKICBMT0NBTEVfU0FCQlJFVkRBWU5BTUUzICJzdCIKICBMT0NBTEVfU0FCQlJFVkRBWU5BTUU0ICLodCIKICBMT0NBTEVfU0FCQlJFVkRBWU5BTUU1ICJw4SIKICBMT0NBTEVfU0FCQlJFVkRBWU5BTUU2ICJzbyIKICBMT0NBTEVfU0FCQlJFVkRBWU5BTUU3ICJuZSIKICBMT0NBTEVfU0FCQlJFVkxBTkdOQU1FICJDU1kiCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUUxICJJIgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FMiAiSUkiCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUUzICJJSUkiCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUU0ICJJViIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTUgIlYiCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUU2ICJWSSIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTcgIlZJSSIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTggIlZJSUkiCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUU5ICJJWCIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTEwICJYIgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FMTEgIlhJIgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FMTIgIlhJSSIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTEzICIiCiAgTE9DQUxFX1NDT1VOVFJZICJDemVjaCBSZXB1YmxpYyIKICBMT0NBTEVfU0NVUlJFTkNZICJL6CIKICBMT0NBTEVfU0RBVEUgIi4iCiAgTE9DQUxFX1NEQVlOQU1FMSAicG9uZOxs7SIKICBMT0NBTEVfU0RBWU5BTUUyICL6dGVy/SIKICBMT0NBTEVfU0RBWU5BTUUzICJzdPhlZGEiCiAgTE9DQUxFX1NEQVlOQU1FNCAi6HR2cnRlayIKICBMT0NBTEVfU0RBWU5BTUU1ICJw4XRlayIKICBMT0NBTEVfU0RBWU5BTUU2ICJzb2JvdGEiCiAgTE9DQUxFX1NEQVlOQU1FNyAibmVk7GxlIgogIExPQ0FMRV9TREVDSU1BTCAiLCIKICBMT0NBTEVfU0VOR0NPVU5UUlkgIkN6ZWNoIFJlcHVibGljIgogIExPQ0FMRV9TRU5HQ1VSUk5BTUUgIkN6ZWNoIEtvcnVuYSIKICBMT0NBTEVfU0VOR0xBTkdVQUdFICJDemVjaCIKICBMT0NBTEVfU0dST1VQSU5HICIzOzAiCiAgTE9DQUxFX1NJTlRMU1lNQk9MICJDWksiCiAgTE9DQUxFX1NJU08zMTY2Q1RSWU5BTUUgIkNaIgogIExPQ0FMRV9TSVNPNjM5TEFOR05BTUUgImNzIgogIExPQ0FMRV9TTEFOR1VBR0UgIkN6ZWNoIgogIExPQ0FMRV9TTElTVCAiOyIKICBMT0NBTEVfU0xPTkdEQVRFICJkLiBNTU1NIHl5eXkiCiAgTE9DQUxFX1NNT05ERUNJTUFMU0VQICIsIgogIExPQ0FMRV9TTU9OR1JPVVBJTkcgIjM7MCIKICBMT0NBTEVfU01PTlRITkFNRTEgImxlZGVuIgogIExPQ0FMRV9TTU9OVEhOQU1FMiAi+m5vciIKICBMT0NBTEVfU01PTlRITkFNRTMgImL4ZXplbiIKICBMT0NBTEVfU01PTlRITkFNRTQgImR1YmVuIgogIExPQ0FMRV9TTU9OVEhOQU1FNSAia3bsdGVuIgogIExPQ0FMRV9TTU9OVEhOQU1FNiAi6GVydmVuIgogIExPQ0FMRV9TTU9OVEhOQU1FNyAi6GVydmVuZWMiCiAgTE9DQUxFX1NNT05USE5BTUU4ICJzcnBlbiIKICBMT0NBTEVfU01PTlRITkFNRTkgInrh+O0iCiAgTE9DQUxFX1NNT05USE5BTUUxMCAi+O1qZW4iCiAgTE9DQUxFX1NNT05USE5BTUUxMSAibGlzdG9wYWQiCiAgTE9DQUxFX1NNT05USE5BTUUxMiAicHJvc2luZWMiCiAgTE9DQUxFX1NNT05USE5BTUUxMyAiIgogIExPQ0FMRV9TTU9OVEhPVVNBTkRTRVAgIqAiCiAgTE9DQUxFX1NOQU1FICJjcy1DWiIKICBMT0NBTEVfU05BVElWRUNUUllOQU1FICLIZXNr4aByZXB1Ymxpa2EiCiAgTE9DQUxFX1NOQVRJVkVDVVJSTkFNRSAiS29ydW5hIMhlc2vhIgogIExPQ0FMRV9TTkFUSVZFRElHSVRTICIwMTIzNDU2Nzg5IgogIExPQ0FMRV9TTkFUSVZFRElTUExBWU5BTUUgIuhlmnRpbmEgKMhlc2vhoHJlcHVibGlrYSkiCiAgTE9DQUxFX1NOQVRJVkVMQU5HTkFNRSAi6GWadGluYSIKICBMT0NBTEVfU05FR0FUSVZFU0lHTiAiLSIKICBMT0NBTEVfU1BPU0lUSVZFU0lHTiAiIgogIExPQ0FMRV9TU0NSSVBUUyAiTGF0bjsiCiAgTE9DQUxFX1NTSE9SVERBVEUgImQuTS55eXl5IgogIExPQ0FMRV9TU09SVE5BTUUgIkRlZmF1bHQiCiAgTE9DQUxFX1NUSE9VU0FORCAioCIKICBMT0NBTEVfU1RJTUUgIjoiCiAgTE9DQUxFX1NUSU1FRk9STUFUICJIOm1tOnNzIgogIExPQ0FMRV9TWUVBUk1PTlRIICJNTU1NIHl5eXkiCgogIExHUlBJRF9XRVNURVJOX0VVUk9QRStMR1JQSURfUkVTX0JBU0UgIldlc3Rlcm4gRXVyb3BlIGFuZCBVbml0ZWQgU3RhdGVzIgogIExHUlBJRF9DRU5UUkFMX0VVUk9QRStMR1JQSURfUkVTX0JBU0UgIkNlbnRyYWwgRXVyb3BlIgogIExHUlBJRF9CQUxUSUMrTEdSUElEX1JFU19CQVNFICJCYWx0aWMiCiAgTEdSUElEX0dSRUVLK0xHUlBJRF9SRVNfQkFTRSAiR3JlZWsiCiAgTEdSUElEX0NZUklMTElDK0xHUlBJRF9SRVNfQkFTRSAiQ3lyaWxsaWMiCiAgTEdSUElEX1RVUktJU0grTEdSUElEX1JFU19CQVNFICJUdXJraWMiCiAgTEdSUElEX0pBUEFORVNFK0xHUlBJRF9SRVNfQkFTRSAiSmFwYW5lc2UiCiAgTEdSUElEX0tPUkVBTitMR1JQSURfUkVTX0JBU0UgIktvcmVhbiIKICBMR1JQSURfVFJBRElUSU9OQUxfQ0hJTkVTRStMR1JQSURfUkVTX0JBU0UgIlRyYWRpdGlvbmFsIENoaW5lc2UiCiAgTEdSUElEX1NJTVBMSUZJRURfQ0hJTkVTRStMR1JQSURfUkVTX0JBU0UgIlNpbXBsaWZpZWQgQ2hpbmVzZSIKICBMR1JQSURfVEhBSStMR1JQSURfUkVTX0JBU0UgIlRoYWkiCiAgTEdSUElEX0hFQlJFVytMR1JQSURfUkVTX0JBU0UgIkhlYnJldyIKICBMR1JQSURfQVJBQklDK0xHUlBJRF9SRVNfQkFTRSAiQXJhYmljIiAKICBMR1JQSURfVklFVE5BTUVTRStMR1JQSURfUkVTX0JBU0UgIlZpZXRuYW1lc2UiCiAgTEdSUElEX0lORElDK0xHUlBJRF9SRVNfQkFTRSAiSW5kaWMiCiAgTEdSUElEX0dFT1JHSUFOK0xHUlBJRF9SRVNfQkFTRSAiR2VvcmdpYW4iCiAgTEdSUElEX0FSTUVOSUFOK0xHUlBJRF9SRVNfQkFTRSAiQXJtZW5pYW4iCn0K