LyoKICogY3J5cHQzMiBkbGwgRnJlbmNoIHJlc291cmNlcwogKgogKiBDb3B5cmlnaHQgMjAwNiBKb25hdGhhbiBFcm5zdAogKgogKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCiAqIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgogKgogKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKICogTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KICoKICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwogKiBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCiAqIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EKICovCgpMQU5HVUFHRSBMQU5HX0ZSRU5DSCwgU1VCTEFOR19ORVVUUkFMCgpTVFJJTkdUQUJMRSBESVNDQVJEQUJMRQp7CiAgICBJRFNfQVVUSE9SSVRZX0tFWV9JRCAiQXV0aG9yaXR5IEtleSBJZGVudGlmaWVyIgogICAgSURTX0tFWV9BVFRSSUJVVEVTICJLZXkgQXR0cmlidXRlcyIKICAgIElEU19LRVlfVVNBR0VfUkVTVFJJQ1RJT04gIktleSBVc2FnZSBSZXN0cmljdGlvbiIKICAgIElEU19TVUJKRUNUX0FMVF9OQU1FICJTdWJqZWN0IEFsdGVybmF0aXZlIE5hbWUiCiAgICBJRFNfSVNTVUVSX0FMVF9OQU1FICJJc3N1ZXIgQWx0ZXJuYXRpdmUgTmFtZSIKICAgIElEU19CQVNJQ19DT05TVFJBSU5UUyAiQmFzaWMgQ29uc3RyYWludHMiCiAgICBJRFNfS0VZX1VTQUdFICJLZXkgVXNhZ2UiCiAgICBJRFNfQ0VSVF9QT0xJQ0lFUyAiQ2VydGlmaWNhdGUgUG9saWNpZXMiCiAgICBJRFNfU1VCSkVDVF9LRVlfSURFTlRJRklFUiAiU3ViamVjdCBLZXkgSWRlbnRpZmllciIKICAgIElEU19DUkxfUkVBU09OX0NPREUgIkNSTCBSZWFzb24gQ29kZSIKICAgIElEU19DUkxfRElTVF9QT0lOVFMgIkNSTCBEaXN0cmlidXRpb24gUG9pbnRzIgogICAgSURTX0VOSEFOQ0VEX0tFWV9VU0FHRSAiRW5oYW5jZWQgS2V5IFVzYWdlIgogICAgSURTX0FVVEhPUklUWV9JTkZPX0FDQ0VTUyAiQXV0aG9yaXR5IEluZm9ybWF0aW9uIEFjY2VzcyIKICAgIElEU19DRVJUX0VYVEVOU0lPTlMgIkNlcnRpZmljYXRlIEV4dGVuc2lvbnMiCiAgICBJRFNfTkVYVF9VUERBVEVfTE9DQVRJT04gIk5leHQgVXBkYXRlIExvY2F0aW9uIgogICAgSURTX1lFU19PUl9OT19UUlVTVCAiWWVzIG9yIE5vIFRydXN0IgogICAgSURTX0VNQUlMX0FERFJFU1MgIkVtYWlsIEFkZHJlc3MiCiAgICBJRFNfVU5TVFJVQ1RVUkVEX05BTUUgIlVuc3RydWN0dXJlZCBOYW1lIgogICAgSURTX0NPTlRFTlRfVFlQRSAiQ29udGVudCBUeXBlIgogICAgSURTX01FU1NBR0VfRElHRVNUICJNZXNzYWdlIERpZ2VzdCIKICAgIElEU19TSUdOSU5HX1RJTUUgIlNpZ25pbmcgVGltZSIKICAgIElEU19DT1VOVEVSX1NJR04gIkNvdW50ZXIgU2lnbiIKICAgIElEU19DSEFMTEVOR0VfUEFTU1dPUkQgIkNoYWxsZW5nZSBQYXNzd29yZCIKICAgIElEU19VTlNUUlVDVFVSRURfQUREUkVTUyAiVW5zdHJ1Y3R1cmVkIEFkZHJlc3MiCiAgICBJRFNfU01JTUVfQ0FQQUJJTElUSUVTICJTTUlNRSBDYXBhYmlsaXRpZXMiCiAgICBJRFNfUFJFRkVSX1NJR05FRF9EQVRBICJQcmVmZXIgU2lnbmVkIERhdGEiCiAgICBJRFNfQ1BTICJDUFMiCiAgICBJRFNfVVNFUl9OT1RJQ0UgIlVzZXIgTm90aWNlIgogICAgSURTX09DU1AgIk9uLWxpbmUgQ2VydGlmaWNhdGUgU3RhdHVzIFByb3RvY29sIgogICAgSURTX0NBX0lTU1VFUiAiQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgSXNzdWVyIgogICAgSURTX0NFUlRfVEVNUExBVEVfTkFNRSAiQ2VydGlmaWNhdGlvbiBUZW1wbGF0ZSBOYW1lIgogICAgSURTX0NFUlRfVFlQRSAiQ2VydGlmaWNhdGUgVHlwZSIKICAgIElEU19DRVJUX01BTklGT0xEICJDZXJ0aWZpY2F0ZSBNYW5pZm9sZCIKICAgIElEU19ORVRTQ0FQRV9DRVJUX1RZUEUgIlR5cGUgZGUgY2VydGlmaWNhdCBOZXRzY2FwZSIKICAgIElEU19ORVRTQ0FQRV9CQVNFX1VSTCAiVVJMIE5ldHNjYXBlIGRlIGJhc2UiCiAgICBJRFNfTkVUU0NBUEVfUkVWT0NBVElPTl9VUkwgIlVSTCBOZXRzY2FwZSBkZSBy6XZvY2F0aW9uIgogICAgSURTX05FVFNDQVBFX0NBX1JFVk9DQVRJT05fVVJMICJVUkwgTmV0c2NhcGUgZGUgcul2b2NhdGlvbiBkdSBjZXJ0aWZpY2F0IgogICAgSURTX05FVFNDQVBFX0NFUlRfUkVORVdBTF9VUkwgIlVSTCBOZXRzY2FwZSBkZSByZW5vdXZlbGxlbWVudCBkdSBjZXJ0aWZpY2F0IgogICAgSURTX05FVFNDQVBFX0NBX1BPTElDWV9VUkwgIk5ldHNjYXBlIENBIFBvbGljeSBVUkwiCiAgICBJRFNfTkVUU0NBUEVfU1NMX1NFUlZFUl9OQU1FICJOZXRzY2FwZSBTU0wgU2VydmVyTmFtZSIKICAgIElEU19ORVRTQ0FQRV9DT01NRU5UICJDb21tZW50YWlyZSBOZXRzY2FwZSIKICAgIElEU19TUENfU1BfQUdFTkNZX0lORk8gIlNwY1NwQWdlbmN5SW5mbyIKICAgIElEU19TUENfRklOQU5DSUFMX0NSSVRFUklBICJTcGNGaW5hbmNpYWxDcml0ZXJpYSIKICAgIElEU19TUENfTUlOSU1BTF9DUklURVJJQSAiU3BjTWluaW1hbENyaXRlcmlhIgogICAgSURTX0NPVU5UUlkgIlBheXMvUulnaW9uIgogICAgSURTX09SR0FOSVpBVElPTiAiT3JnYW5pc2F0aW9uIgogICAgSURTX09SR0FOSVpBVElPTkFMX1VOSVQgIlVuaXTpIGQnb3JnYW5pc2F0aW9uIgogICAgSURTX0NPTU1PTl9OQU1FICJOb20gY29tbXVuIgogICAgSURTX0xPQ0FMSVRZICJMb2NhbGl0eSIKICAgIElEU19TVEFURV9PUl9QUk9WSU5DRSAiyXRhdCBvdSBwcm92aW5jZSIKICAgIElEU19USVRMRSAiVGl0cmUiCiAgICBJRFNfR0lWRU5fTkFNRSAiTm9tIGRvbm7pIgogICAgSURTX0lOSVRJQUxTICJJbml0aWFsZXMiCiAgICBJRFNfU1VSX05BTUUgIk5vbSBkZSBmYW1pbGxlIgogICAgSURTX0RPTUFJTl9DT01QT05FTlQgIkRvbWFpbiBDb21wb25lbnQiCiAgICBJRFNfU1RSRUVUX0FERFJFU1MgIkFkcmVzc2UiCiAgICBJRFNfU0VSSUFMX05VTUJFUiAiTnVt6XJvIGRlIHPpcmllIgogICAgSURTX0NBX1ZFUlNJT04gIlZlcnNpb24gZHUgQ0EiCiAgICBJRFNfQ1JPU1NfQ0FfVkVSU0lPTiAiQ3Jvc3MgQ0EgVmVyc2lvbiIKICAgIElEU19TRVJJQUxJWkVEX1NJR19TRVJJQUxfTlVNQkVSICJTZXJpYWxpemVkIFNpZ25hdHVyZSBTZXJpYWwgTnVtYmVyIgogICAgSURTX1BSSU5DSVBBTF9OQU1FICJOb20gcHJpbmNpcGFsIgogICAgSURTX1dJTkRPV1NfUFJPRFVDVF9VUERBVEUgIk1pc2Ug4CBqb3VyIGRlIFdpbmRvd3MiCiAgICBJRFNfRU5ST0xMTUVOVF9OQU1FX1ZBTFVFX1BBSVIgIkVucm9sbG1lbnQgTmFtZSBWYWx1ZSBQYWlyIgogICAgSURTX09TX1ZFUlNJT04gIlZlcnNpb24gZHUgc3lzdOhtZSBkJ2V4cGxvaXRhdGlvbiIKICAgIElEU19FTlJPTExNRU5UX0NTUCAiRW5yb2xsbWVudCBDU1AiCiAgICBJRFNfQ1JMX05VTUJFUiAiQ1JMIE51bWJlciIKICAgIElEU19ERUxUQV9DUkxfSU5ESUNBVE9SICJEZWx0YSBDUkwgSW5kaWNhdG9yIgogICAgSURTX0lTU1VJTkdfRElTVF9QT0lOVCAiSXNzdWluZyBEaXN0cmlidXRpb24gUG9pbnQiCiAgICBJRFNfRlJFU0hFU1RfQ1JMICJGcmVzaGVzdCBDUkwiCiAgICBJRFNfTkFNRV9DT05TVFJBSU5UUyAiQ29udHJhaW50ZXMgZGUgbm9tIgogICAgSURTX1BPTElDWV9NQVBQSU5HUyAiUG9saWN5IE1hcHBpbmdzIgogICAgSURTX1BPTElDWV9DT05TVFJBSU5UUyAiUG9saWN5IENvbnN0cmFpbnRzIgogICAgSURTX0NST1NTX0NFUlRfRElTVF9QT0lOVFMgIkNyb3NzLUNlcnRpZmljYXRlIERpc3RyaWJ1dGlvbiBQb2ludHMiCiAgICBJRFNfQVBQTElDQVRJT05fUE9MSUNJRVMgIkFwcGxpY2F0aW9uIFBvbGljaWVzIgogICAgSURTX0FQUExJQ0FUSU9OX1BPTElDWV9NQVBQSU5HUyAiQXBwbGljYXRpb24gUG9saWN5IE1hcHBpbmdzIgogICAgSURTX0FQUExJQ0FUSU9OX1BPTElDWV9DT05TVFJBSU5UUyAiQXBwbGljYXRpb24gUG9saWN5IENvbnN0cmFpbnRzIgogICAgSURTX0NNQ19EQVRBICJDTUMgRGF0YSIKICAgIElEU19DTUNfUkVTUE9OU0UgIkNNQyBSZXNwb25zZSIKICAgIElEU19VTlNJR05FRF9DTUNfUkVRVUVTVCAiVW5zaWduZWQgQ01DIFJlcXVlc3QiCiAgICBJRFNfQ01DX1NUQVRVU19JTkZPICJDTUMgU3RhdHVzIEluZm8iCiAgICBJRFNfQ01DX0VYVEVOU0lPTlMgIkNNQyBFeHRlbnNpb25zIgogICAgSURTX0NNQ19BVFRSSUJVVEVTICJDTUMgQXR0cmlidXRlcyIKICAgIElEU19QS0NTXzdfREFUQSAiRG9ubullcyBQS0NTIDciCiAgICBJRFNfUEtDU183X1NJR05FRCAiU2lnbukgYXZlYyBQS0NTIDciCiAgICBJRFNfUEtDU183X0VOVkVMT1BFRCAiRW52ZWxvcHDpIGF2ZWMgUEtDUyA3IgogICAgSURTX1BLQ1NfN19TSUdORURfRU5WRUxPUEVEICJFbnZlbG9wcOkgZXQgc2lnbukgYXZlYyBQS0NTIDciCiAgICBJRFNfUEtDU183X0RJR0VTVEVEICJIYWNo6SBhdmVjIFBLQ1MgNyIKICAgIElEU19QS0NTXzdfRU5DUllQVEVEICJDaGlmZnLpIGF2ZWMgUEtDUyA3IgogICAgSURTX1BSRVZJT1VTX0NBX0NFUlRfSEFTSCAiUHJldmlvdXMgQ0EgQ2VydGlmaWNhdGUgSGFzaCIKICAgIElEU19DUkxfVklSVFVBTF9CQVNFICJWaXJ0dWFsIEJhc2UgQ1JMIE51bWJlciIKICAgIElEU19DUkxfTkVYVF9QVUJMSVNIICJOZXh0IENSTCBQdWJsaXNoIgogICAgSURTX0NBX0VYQ0hBTkdFICJDZXJ0aWZpY2F0IGRlIGNoaWZmcmVtZW50IENBIgogICAgSURTX0tFWV9SRUNPVkVSWV9BR0VOVCAiS2V5IFJlY292ZXJ5IEFnZW50IgogICAgSURTX0NFUlRJRklDQVRFX1RFTVBMQVRFICJDZXJ0aWZpY2F0ZSBUZW1wbGF0ZSBJbmZvcm1hdGlvbiIKICAgIElEU19FTlRFUlBSSVNFX1JPT1RfT0lEICJFbnRlcnByaXNlIFJvb3QgT0lEIgogICAgSURTX1JETl9EVU1NWV9TSUdORVIgIlNpZ25hdGFpcmUgZmFjdGljZSIKICAgIElEU19BUkNISVZFRF9LRVlfQVRUUiAiQ2zpIGRlIGNoaWZmcmVtZW50IHByaXbpZSIKICAgIElEU19DUkxfU0VMRl9DRFAgIlB1Ymxpc2hlZCBDUkwgTG9jYXRpb25zIgogICAgSURTX1JFUVVJUkVfQ0VSVF9DSEFJTl9QT0xJQ1kgIkVuZm9yY2UgQ2VydGlmaWNhdGUgQ2hhaW4gUG9saWN5IgogICAgSURTX1RSQU5TQUNUSU9OX0lEICJUcmFuc2FjdGlvbiBJZCIKICAgIElEU19TRU5ERVJfTk9OQ0UgIlNlbmRlciBOb25jZSIKICAgIElEU19SRUNJUElFTlRfTk9OQ0UgIlJlY2lwaWVudCBOb25jZSIKICAgIElEU19SRUdfSU5GTyAiUmVnIEluZm8iCiAgICBJRFNfR0VUX0NFUlRJRklDQVRFICJHZXQgQ2VydGlmaWNhdGUiCiAgICBJRFNfR0VUX0NSTCAiR2V0IENSTCIKICAgIElEU19SRVZPS0VfUkVRVUVTVCAiUmV2b2tlIFJlcXVlc3QiCiAgICBJRFNfUVVFUllfUEVORElORyAiUXVlcnkgUGVuZGluZyIKICAgIElEU19TT1JURURfQ1RMICJDZXJ0aWZpY2F0ZSBUcnVzdCBMaXN0IgogICAgSURTX0FSQ0hJVkVEX0tFWV9DRVJUX0hBU0ggIkFyY2hpdmVkIEtleSBDZXJ0aWZpY2F0ZSBIYXNoIgogICAgSURTX1BSSVZBVEVfS0VZX1VTQUdFX1BFUklPRCAiUHJpdmF0ZSBLZXkgVXNhZ2UgUGVyaW9kIgogICAgSURTX0NMSUVOVF9JTkZPUk1BVElPTiAiQ2xpZW50IEluZm9ybWF0aW9uIgogICAgSURTX1NFUlZFUl9BVVRIRU5USUNBVElPTiAiU2VydmVyIEF1dGhlbnRpY2F0aW9uIgogICAgSURTX0NMSUVOVF9BVVRIRU5USUNBVElPTiAiQ2xpZW50IEF1dGhlbnRpY2F0aW9uIgogICAgSURTX0NPREVfU0lHTklORyAiQ29kZSBTaWduaW5nIgogICAgSURTX1NFQ1VSRV9FTUFJTCAiU2VjdXJlIEVtYWlsIgogICAgSURTX1RJTUVfU1RBTVBJTkcgIlRpbWUgU3RhbXBpbmciCiAgICBJRFNfTUlDUk9TT0ZUX1RSVVNUX0xJU1RfU0lHTklORyAiTWljcm9zb2Z0IFRydXN0IExpc3QgU2lnbmluZyIKICAgIElEU19NSUNST1NPRlRfVElNRV9TVEFNUElORyAiTWljcm9zb2Z0IFRpbWUgU3RhbXBpbmciCiAgICBJRFNfSVBTRUNfRU5EX1NZU1RFTSAiSVAgc2VjdXJpdHkgZW5kIHN5c3RlbSIKICAgIElEU19JUFNFQ19UVU5ORUwgIklQIHNlY3VyaXR5IHR1bm5lbCB0ZXJtaW5hdGlvbiIKICAgIElEU19JUFNFQ19VU0VSICJJUCBzZWN1cml0eSB1c2VyIgogICAgSURTX0VGUyAiRW5jcnlwdGluZyBGaWxlIFN5c3RlbSIKICAgIElEU19XSFFMX0NSWVBUTyAiV2luZG93cyBIYXJkd2FyZSBEcml2ZXIgVmVyaWZpY2F0aW9uIgogICAgSURTX05UNV9DUllQVE8gIldpbmRvd3MgU3lzdGVtIENvbXBvbmVudCBWZXJpZmljYXRpb24iCiAgICBJRFNfT0VNX1dIUUxfQ1JZUFRPICJPRU0gV2luZG93cyBTeXN0ZW0gQ29tcG9uZW50IFZlcmlmaWNhdGlvbiIKICAgIElEU19FTUJFRERFRF9OVF9DUllQVE8gIkVtYmVkZGVkIFdpbmRvd3MgU3lzdGVtIENvbXBvbmVudCBWZXJpZmljYXRpb24iCiAgICBJRFNfS0VZX1BBQ0tfTElDRU5TRVMgIktleSBQYWNrIExpY2Vuc2VzIgogICAgSURTX0xJQ0VOU0VfU0VSVkVSICJMaWNlbnNlIFNlcnZlciBWZXJpZmljYXRpb24iCiAgICBJRFNfU01BUlRfQ0FSRF9MT0dPTiAiU21hcnQgQ2FyZCBMb2dvbiIKICAgIElEU19ESUdJVEFMX1JJR0hUUyAiRGlnaXRhbCBSaWdodHMiCiAgICBJRFNfUVVBTElGSUVEX1NVQk9SRElOQVRJT04gIlF1YWxpZmllZCBTdWJvcmRpbmF0aW9uIgogICAgSURTX0tFWV9SRUNPVkVSWSAiUuljdXDpcmF0aW9uIGRlIGNs6SIKICAgIElEU19ET0NVTUVOVF9TSUdOSU5HICJTaWduYXR1cmUgZGUgZG9jdW1lbnQiCiAgICBJRFNfSVBTRUNfSUtFX0lOVEVSTUVESUFURSAiSVAgc2VjdXJpdHkgSUtFIGludGVybWVkaWF0ZSIKICAgIElEU19GSUxFX1JFQ09WRVJZICJS6WN1cOlyYXRpb24gZGUgZmljaGllciIKICAgIElEU19ST09UX0xJU1RfU0lHTkVSICJSb290IExpc3QgU2lnbmVyIgogICAgSURTX0FOWV9BUFBMSUNBVElPTl9QT0xJQ0lFUyAiQWxsIGFwcGxpY2F0aW9uIHBvbGljaWVzIgogICAgSURTX0RTX0VNQUlMX1JFUExJQ0FUSU9OICJEaXJlY3RvcnkgU2VydmljZSBFbWFpbCBSZXBsaWNhdGlvbiIKICAgIElEU19FTlJPTExNRU5UX0FHRU5UICJDZXJ0aWZpY2F0ZSBSZXF1ZXN0IEFnZW50IgogICAgSURTX0xJRkVUSU1FX1NJR05JTkcgIkxpZmV0aW1lIFNpZ25pbmciCiAgICBJRFNfQU5ZX0NFUlRfUE9MSUNZICJBbGwgaXNzdWFuY2UgcG9saWNpZXMiCn0K