LyoKICogV2luZUNmZyByZXNvdXJjZXMKICogTm9yd2VnaWFuIEJva23lbCBMYW5ndWFnZSBTdXBwb3J0CiAqCiAqIENvcHlyaWdodCAyMDA1LTIwMDYgQWxleGFuZGVyIE4uIFP4cm5lcyA8YWxleEB0aGVoYW5kb2ZhZ29ueS5jb20+CiAqCiAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwogKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKICogdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiAqCiAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAogKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgogKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQogKiBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgogKgogKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCiAqIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgIDAyMTExLTEzMDcgIFVTQQogKgogKi8KCkxBTkdVQUdFIExBTkdfTk9SV0VHSUFOLCBTVUJMQU5HX05PUldFR0lBTl9CT0tNQUwKCklEUl9XSU5FQ0ZHIE1FTlUgRElTQ0FSREFCTEUKQkVHSU4KICAgIFBPUFVQICIiCiAgICBCRUdJTgogICAgICAgIE1FTlVJVEVNICJPcHBzZXR0IiwgSURDX0FVRElPX0NPTkZJR1VSRQogICAgRU5ECkVORAoKSUREX0FCT1VUQ0ZHIERJQUxPR0VYIDAsIDAsIDI2MCwgMjcwClNUWUxFIFdTX0NISUxECkZPTlQgOCwgIk1TIFNoZWxsIERsZyIKQkVHSU4KICAgIExURVhUICAgICAgICAgICBQQUNLQUdFX1NUUklORyxJRENfU1RBVElDLDExOSwxNywxMjAsOAogICAgQ09OVFJPTCAgICAgICAgIElEQl9XSU5FLElEQ19TVEFUSUMsIlN0YXRpYyIsU1NfQklUTUFQICwxNSwxNywxNTcsMTExCiAgICBMVEVYVCAgICAgICAgICAgImh0dHA6Ly93d3cud2luZWhxLm9yZy8iLElEQ19TVEFUSUMsMTE5LDMxLDEwNiw4CiAgICBMVEVYVCAgICAgICAgICAgIkRldHRlIGJpYmxpb3Rla2V0IGVyIGZyaSBwcm9ncmFtdmFyZXI7IGRldCBrYW4gcmVkaXN0cmlidWVyZXMgaSBoZW5ob2xkIHRpbCB2aWxr5XJlbmUgaSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdXRnaXR0IGF2IKt0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uuywgZW50ZW4gdmVyc2pvbiAyLjEgYXYgZGVubmUgTGlzZW5zZW4sIGVsbGVyIChodmlzIGR1IPhuc2tlciBkZXQpIGVuIG55ZXJlIHZlcnNqb24uIiwKICAgICAgICAgICAgICAgICAgICBJRENfU1RBVElDLDExOSw0NCwxMjQsNzIKRU5ECgpJRERfQVBQQ0ZHIERJQUxPRyBESVNDQVJEQUJMRSAgMCwgMCwgMjYwLCAyNTAKU1RZTEUgV1NfQ0hJTEQgfCBXU19ESVNBQkxFRApGT05UIDgsICJNUyBTaGVsbCBEbGciCkJFR0lOCiAgICBHUk9VUEJPWCAgICAgICAgIiBQcm9ncmFtbWlubnN0aWxsaW5nZXIgIixJRENfU1RBVElDLCA4LDQsMjQ0LDI0MAogICAgTFRFWFQgICAgICAgICAgICJXaW5lIGthbiBoZXJtZSBldHRlciBmb3Jza2plbGxpZ2UgV2luZG93cy12ZXJzam9uZXIgZm9yIGh2ZXJ0IHByb2dyYW0uIERlbm5lIGZhbmVuIGVyIGtvYmxldCBtZWQgYmlibGlvdGVrLSBvZyBncmFmaWtrZmFuZW5lLCBz5W5uIGF0IGR1IGthbiBlbmRyZSBpbm5zdGlsbGluZ2VyIGZvciBoZWxlIHN5c3RlbWV0IGVsbGVyIGVua2VsdGUgcHJvZ3JhbSBkZXIgb2dz5S4iLAogICAgICAgICAgICAgICAgICAgIElEQ19TVEFUSUMsMTUsMjAsMjI3LDMwCiAgICBDT05UUk9MICAgICAgICAgIlByb2dyYW1tZXIiLElEQ19BUFBfTElTVFZJRVcsIlN5c0xpc3RWaWV3MzIiLFdTX0JPUkRFUiB8IFdTX1RBQlNUT1AgfCBMVlNfTElTVCB8IExWU19TSU5HTEVTRUwgfCBMVlNfU0hPV1NFTEFMV0FZUywKICAgICAgICAgICAgICAgICAgICAxNSw1MCwyMzAsMTUwCiAgICBQVVNIQlVUVE9OCSAgICAiTGVnZyB0aWwgcHJvZ3ImYW0gLiAuIC4iLElEQ19BUFBfQUREQVBQLCA5MCwyMDQsNzUsMTQKICAgIFBVU0hCVVRUT04JICAgICJGamUmcm4gcHJvZ3JhbSIsSURDX0FQUF9SRU1PVkVBUFAsIDE3MCwyMDQsNzUsMTQKICAgIExURVhUICAgICAgICAgICAiJldpbmRvd3MtdmVyc2pvbjoiLElEQ19TVEFUSUMsMTcsMjI2LDU4LDgKICAgIENPTUJPQk9YICAgICAgICBJRENfV0lOVkVSLDgzLDIyNCwxNjMsNTYsQ0JTX0RST1BET1dOTElTVCB8IFdTX1ZTQ1JPTEwgfCBXU19UQUJTVE9QICAgIApFTkQKCklERF9HUkFQSENGRyBESUFMT0cgRElTQ0FSREFCTEUgIDAsIDAsIDI2MCwgMjUwClNUWUxFIFdTX0NISUxEIHwgV1NfRElTQUJMRUQKRk9OVCA4LCAiTVMgU2hlbGwgRGxnIgpCRUdJTgogICAgR1JPVVBCT1ggICAgICAgICIgVmluZHVpbm5zdGlsbGluZ2VyICIsSURDX1NUQVRJQyw4LDI1LDI0NCwxODAKCiAgICBDT05UUk9MCSAgICAiVGlsbGF0IERpcmVjdFgtcHJvZ3JhbW1lciDlIGhpbmRyZSBtdXNlbiBmcmEg5SBmb3JsYXRlIHZpbmR1ZXQiLElEQ19EWF9NT1VTRV9HUkFCLCJCdXR0b24iLEJTX0FVVE9DSEVDS0JPWCB8IFdTX1RBQlNUT1AsMTUsMzUsMjMwLDgKICAgIENPTlRST0wJICAgICJBa3RpdmVyIGRvYmJlbHQgaHVydGlnbWlubmUgZm9yIHNrcml2ZWJvcmRldCIsSURDX0RPVUJMRV9CVUZGRVIsIkJ1dHRvbiIsQlNfQVVUT0NIRUNLQk9YIHwgV1NfVEFCU1RPUCwxNSw0NSwyMzAsOAogICAgTFRFWFQgCSAgICAiSHZpcyB2aW5kdWVyIGtvbnRyb2xsZXJlcyBhdiBkaW4gc3RhbmRhcmR2aW5kdXNiZWhhbmRsZXIsIGblciBkZSB2YW5saWdlIHJhbW1lciwgb2cgcmVzcGVrdGVyZXIgZGV0IHZpcnR1ZWxsZSBza3JpdmVib3JkZXQgZGl0dCBvZyB2aXNlcyBpIHZpbmR1c2xpc3Rlbi5cblxuSHZpcyBkZSBlciB1a29udHJvbGxlcnRlIGVyIGRlIGtvYmxldCBmcmEgdmluZHVzYmVoYW5kbGVyZW4uIERldHRlIGJldHlyIGF0IGRlIGlra2UgaW50ZWdyZXJlcyBsaWtlIGdvZHQgbWVkIHNrcml2ZWJvcmRldCBkaXR0LCBtZW4gZW11bGVyaW5nZW4gYmxpciBtZXIgcHJlc2lzIHPlbm4gYXQgbm9lbiBwcm9ncmFtbWVyIHZpcmtlciBiZWRyZS4iLAogICAgCQkgICAgSURDX1NUQVRJQywxNSw1OCwyMjgsODAKICAgIENPTlRST0wJICAgICJUaWxsYXQgdmluZHVzYmVoYW5kbGVyZW4g5SBrb250cm9sbGVyZSB2aW5kdWVuZSIsSURDX0VOQUJMRV9NQU5BR0VELCJCdXR0b24iLEJTX0FVVE9DSEVDS0JPWCB8IFdTX1RBQlNUT1AsMTUsMTMyLDIzMCw4CiAgICAKICAgIExURVhUICAgICAgICAgICAiRHUga2FuIHZlbGdlIOUgZW11bGVyZSBldCBXaW5kb3dzLXNrcml2ZWJvcmQsIGRlciBhbGxlIHZpbmR1ZW5lIGVyIGJ1bmRldCBpIGVuIHZpcnR1ZWxsIHNramVybSwgZWxsZXIgZHUga2FuIGblIHZpbmR1ZW5lIHRpbCDlIG9wcGb4cmUgc2VnIHNvbSBhbmRyZSBwcm9ncmFtbWVyIHDlIHNrcml2ZWJvcmRldC4iLAogICAgICAgICAgICAgICAgICAgIElEQ19TVEFUSUMsMTUsMTQ2LDIyOCwyOAogICAgTFRFWFQgICAgICAgICAgICJTa3JpdmVib3Jkc3N0cnJlbHNlOiIsSURDX0RFU0tUT1BfU0laRSwxNSwxODgsNDQsOCxXU19ESVNBQkxFRAogICAgTFRFWFQgICAgICAgICAgICJYIixJRENfREVTS1RPUF9CWSwxMDgsMTg4LDgsOCxXU19ESVNBQkxFRAogICAgQ09OVFJPTCAgICAgICAgICJFbXVsZXIgZXQgdmlydHVlbHQgc2tyaXZlYm9yZCIsSURDX0VOQUJMRV9ERVNLVE9QLCJCdXR0b24iLAogICAgICAgICAgICAgICAgICAgIEJTX0FVVE9DSEVDS0JPWCB8IFdTX1RBQlNUT1AsMTUsMTczLDIzMCwxMAoJCSAgICAKICAgIEVESVRURVhUICAgICAgICBJRENfREVTS1RPUF9XSURUSCw2NCwxODgsNDAsMTIsRVNfQVVUT0hTQ1JPTEwgfCBFU19OVU1CRVIgfCBXU19ESVNBQkxFRAogICAgRURJVFRFWFQgICAgICAgIElEQ19ERVNLVE9QX0hFSUdIVCwxMTcsMTg4LDQwLDEyLEVTX0FVVE9IU0NST0xMIHwgRVNfTlVNQkVSIHwgV1NfRElTQUJMRUQKCiAgICBHUk9VUEJPWCAgICAgICAgIiBEaXJlY3QzRCAiLElEQ19TVEFUSUMsOCwyMTAsMjQ0LDUwCgogICAgTFRFWFQJICAgICJWZXJ0ZWtzLXNreWdnZWxlZ2dpbmc6ICIsSURDX1NUQVRJQywxNSwyMjAsODAsMzAKICAgIENPTUJPQk9YCSAgICBJRENfRDNEX1ZTSEFERVJfTU9ERSwxMDAsMjE4LDE1MCw3MCxDQlNfRFJPUERPV05MSVNUIHwgV1NfVlNDUk9MTCB8IFdTX1RBQlNUT1AKCiAgICBDT05UUk9MICAgICAgICAgIlRpbGxhdCBwaWtzZWwtc2t5Z2dlbGVnZ2VyIChodmlzIG1hc2tpbnZhcmVuIHN0+HR0ZXIgZGV0KSIsSURDX0QzRF9QU0hBREVSX01PREUsIkJ1dHRvbiIsQlNfQVVUT0NIRUNLQk9YIHwgV1NfVEFCU1RPUCwxNSwyMzcsMjMwLDEwCkVORAoKSUREX0RMTENGRyBESUFMT0cgRElTQ0FSREFCTEUgIDAsIDAsIDI2MCwgMjUwClNUWUxFIFdTX0NISUxEIHwgV1NfRElTQUJMRUQKRk9OVCA4LCAiTVMgU2hlbGwgRGxnIgpCRUdJTgogICAgR1JPVVBCT1ggICAgICAgICIgRExMLW92ZXJzdHlyaW5nICIsSURDX1NUQVRJQyw4LDQsMjQ0LDI0MAogICAgTFRFWFQgICAgICAgICAgICJEeW5hbWlzayBrb2JsZWRlIGJpYmxpb3Rla2VyIGthbiBvcHBnaXMgaW5kaXZpZHVlbHQgdGlsIOUgduZyZSBlbnRlbiBpbm5lYnlnZ2V0IChmcmEgV2luZSkgZWxsZXIgaW5uZvhkdCAodGF0dCBmcmEgV2luZG93cyBlbGxlciBnaXR0IGF2IGV0IHByb2dyYW0pLiIKICAgICAgICAgICAgICAgICAgICAsSURDX1NUQVRJQywxNiwxNiwyMjAsMzIKICAgIExURVhUICAgICAgICAgICAiTnkgb3ZlcnN0eXJpbmcgZm9yIGJpYmxpb3RlazoiLElEQ19TVEFUSUMsMTYsNTgsMTAwLDgKICAgIENPTUJPQk9YICAgICAgICBJRENfRExMQ09NQk8sMTYsNjgsMTQwLDE0LENCU19EUk9QRE9XTiB8IFdTX1ZTQ1JPTEwgfCBXU19UQUJTVE9QIHwgQ0JTX1NPUlQgfCBDQlNfTE9XRVJDQVNFCiAgICBQVVNIQlVUVE9OICAgICAgIiZMZWdnIHRpbCIsSURDX0RMTFNfQURERExMLCAxNjQsNjgsODIsMTMsQlNfREVGUFVTSEJVVFRPTiAKICAgIExURVhUICAgICAgICAgICAiRWtzaXN0ZXJlbmRlIG92ZXJzdHlyaW5nZXI6IixJRENfU1RBVElDLDE2LDg2LDEwMCw4CiAgICBMSVNUQk9YICAgICAgICAgSURDX0RMTFNfTElTVCwxNiw5NiwxNDAsMTQwLFdTX0JPUkRFUiB8IFdTX1RBQlNUT1AgfCBXU19WU0NST0xMCiAgICBQVVNIQlVUVE9OICAgICAgIlImZWRpZ2VyIixJRENfRExMU19FRElURExMLDE2NCw5Niw4MiwxNAogICAgUFVTSEJVVFRPTiAgICAgICJGamUmcm4iLElEQ19ETExTX1JFTU9WRURMTCwxNjQsMTE0LDgyLDE0IApFTkQKCklERF9MT0FET1JERVIgRElBTE9HIERJU0NBUkRBQkxFIDgwLCA5MCwgMTEwLCA5MgpTVFlMRSBEU19NT0RBTEZSQU1FIHwgV1NfQ0FQVElPTiB8IFdTX1NZU01FTlUKQ0FQVElPTiAiUmVkaWdlciBvdmVyc3R5cmluZyIKRk9OVCA4LCAiTVMgU2hlbGwgRGxnIgpCRUdJTgogICAgR1JPVVBCT1ggICAgICAgICIgTGFzdGluZ3NyZWtrZWZsZ2UgIixJRENfU1RBVElDLDgsNCw5NCw2NgogICAgQ09OVFJPTCAgICAgICAgICJJbm5lJmJ5Z2dldCAoV2luZSkiLElEQ19SQURfQlVJTFRJTiwiQnV0dG9uIiwgQlNfQVVUT1JBRElPQlVUVE9OIHwgV1NfR1JPVVAsMTYsMTQsNzUsMTAKICAgIENPTlRST0wgICAgICAgICAiSSZubmb4ZHQgKFdpbmRvd3MpIixJRENfUkFEX05BVElWRSwiQnV0dG9uIiwgQlNfQVVUT1JBRElPQlVUVE9OLDE2LDI0LDc1LDEwCiAgICBDT05UUk9MICAgICAgICAgIiZJbm5lYnlnZ2V0IHPlIGlubmb4ZHQiLElEQ19SQURfQlVJTFRJTl9OQVRJVkUsIkJ1dHRvbiIsIEJTX0FVVE9SQURJT0JVVFRPTiwxNiwzNCw3NSwxMAogICAgQ09OVFJPTCAgICAgICAgICJJbm5mZPgmZHQgc+UgaW5uZWJ5Z2dldCIsSURDX1JBRF9OQVRJVkVfQlVJTFRJTiwiQnV0dG9uIiwgQlNfQVVUT1JBRElPQlVUVE9OLDE2LDQ0LDc1LDEwCiAgICBDT05UUk9MICAgICAgICAgIiZEZWFrdGl2ZXIiLElEQ19SQURfRElTQUJMRSwiQnV0dG9uIiwgQlNfQVVUT1JBRElPQlVUVE9OLDE2LDU0LDc1LDEwCiAgICBERUZQVVNIQlVUVE9OICAgIk9LIixJRE9LLDgsNzQsNDUsMTQsV1NfR1JPVVAKICAgIFBVU0hCVVRUT04gICAgICAiQXZicnl0IixJRENBTkNFTCw1Nyw3NCw0NSwxNCxXU19HUk9VUApFTkQKCklERF9EUklWRUNGRyBESUFMT0cgRElTQ0FSREFCTEUgIDAsIDAsIDI2MCwgMjUwClNUWUxFIFdTX0NISUxEIHwgV1NfRElTQUJMRUQKRk9OVCA4LCAiTVMgU2hlbGwgRGxnIgpCRUdJTgogICAgR1JPVVBCT1ggICAgICAgICIgU3Rhc2pvbmthcnRsZWdnaW5nICIsSURDX1NUQVRJQyw4LDQsMjQ0LDI0MAogICAgQ09OVFJPTCAgICAgICAgICJMaXN0ZXZpc25pbmciLElEQ19MSVNUX0RSSVZFUywiU3lzTGlzdFZpZXczMiIsTFZTX1JFUE9SVCB8IExWU19BVVRPQVJSQU5HRSB8IExWU19BTElHTkxFRlQgfAogICAgICAgICAgICAgICAgICAgIExWU19TSU5HTEVTRUwgfCBXU19CT1JERVIgfCBXU19UQUJTVE9QLCAxNSwxOCwyMzIsNzYKICAgIFBVU0hCVVRUT04gICAgICAiJkxlZ2cgdGlsIC4gLiAuIixJRENfQlVUVE9OX0FERCwxNSw5OCwzNywxNAogICAgUFVTSEJVVFRPTiAgICAgICJGamUmcm4iLElEQ19CVVRUT05fUkVNT1ZFLDU2LDk4LDM3LDE0CiAgICBQVVNIQlVUVE9OICAgICAgIiZBdXRvbWF0aXNrIC4gLiAuIixJRENfQlVUVE9OX0FVVE9ERVRFQ1QsMTk3LDk4LDQ5LDE0CgogICAgLyogZWRpdGluZyBkcml2ZSBkZXRhaWxzICovCiAgICBMVEVYVCAgICAgICAgICAgIiZTdGk6IixJRENfU1RBVElDLDE1LDEyMywyMCw5ICAgIAogICAgRURJVFRFWFQgICAgICAgIElEQ19FRElUX1BBVEgsNDEsMTIwLDE2MCwxMyxFU19BVVRPSFNDUk9MTCB8IFdTX1RBQlNUT1AKICAgIFBVU0hCVVRUT04gICAgICAiJkJsYSAuIC4gLiIsSURDX0JVVFRPTl9CUk9XU0VfUEFUSCwyMDYsMTIwLDQwLDEzCgogICAgTFRFWFQgICAgICAgICAgICImVHlwZToiLElEQ19TVEFUSUNfVFlQRSwxNSwxMzgsMjEsMTAKICAgIENPTUJPQk9YICAgICAgICBJRENfQ09NQk9fVFlQRSw0MSwxMzUsNzcsNjAsQ0JTX0RST1BET1dOTElTVCB8IFdTX1ZTQ1JPTEwgfCBXU19UQUJTVE9QCgogICAgTFRFWFQgICAgICAgICAgICJWb2x1bW5hdm4gb2cgc2VyaWVudW1tZXIiLElEQ19MQUJFTFNFUklBTF9TVEFUSUMsMTUsMTU1LDk1LDEwCgogICAgUFVTSEJVVFRPTiAgICAgICJBdmFuJnNlcnQgdmlzbmluZyIsSURDX0JVVFRPTl9TSE9XX0hJREVfQURWQU5DRUQsMTg2LDEzNiw2MCwxMwogICAgQ09OVFJPTCAgICAgICAgICImRmlubiBhdXRvbWF0aXNrIGZyYSBlbmhldDoiLElEQ19SQURJT19BVVRPREVURUNULCJCdXR0b24iLAogICAgICAgICAgICAgICAgICAgIEJTX0FVVE9SQURJT0JVVFRPTiwxNSwxNjYsOTMsMTAKICAgIEVESVRURVhUICAgICAgICBJRENfRURJVF9ERVZJQ0UsMjcsMTc2LDE3NCwxMyxFU19BVVRPSFNDUk9MTAogICAgUFVTSEJVVFRPTiAgICAgICImQmxhIC4gLiAuIixJRENfQlVUVE9OX0JST1dTRV9ERVZJQ0UsMjA2LDE3Niw0MCwxMwogICAgQ09OVFJPTCAgICAgICAgICJPcHBuZXZuICZtYW51ZWx0OiIsSURDX1JBRElPX0FTU0lHTiwiQnV0dG9uIiwKICAgICAgICAgICAgICAgICAgICBCU19BVVRPUkFESU9CVVRUT04sMTUsMTk1LDY5LDEwCgogICAgTFRFWFQgICAgICAgICAgICJWbyZsdW1uYXZuOiIsSURDX1NUQVRJQ19MQUJFTCwzMywyMDgsMjksMTIKICAgIEVESVRURVhUICAgICAgICBJRENfRURJVF9MQUJFTCw2MywyMDUsNzgsMTMsRVNfQVVUT0hTQ1JPTEwgfCBXU19UQUJTVE9QCiAgICBMVEVYVCAgICAgICAgICAgIlMmZXJpZW51bW1lcjoiLElEQ19TVEFUSUNfU0VSSUFMLDMzLDIyNSwyOSwxMgogICAgRURJVFRFWFQgICAgICAgIElEQ19FRElUX1NFUklBTCw2MywyMjEsNzgsMTMsRVNfQVVUT0hTQ1JPTEwgfCBXU19UQUJTVE9QCgogICAgQ09OVFJPTCAgICAgICAgICJWaXMgLi1maWxlciIsSURDX1NIT1dfRE9UX0ZJTEVTLCJCdXR0b24iLEJTX0FVVE9DSEVDS0JPWCB8IFdTX1RBQlNUT1AsOCwyNjAsMjMwLDgKRU5ECgpJRERfQVVESU9DRkcgRElBTE9HIERJU0NBUkRBQkxFICAwLCAwLCAyNjAsIDI1MApTVFlMRSBXU19DSElMRCB8IFdTX0RJU0FCTEVECkZPTlQgOCwgIk1TIFNoZWxsIERsZyIKQkVHSU4KICAgIEdST1VQQk9YICAgICAgICAiIFZhbGcgYXYgZHJpdmVyICIsSURDX1NUQVRJQyw4LDQsMjQ0LDE5NQogICAgTFRFWFQgICAgICAgICAgICJWZWxnIGVuIGx5ZGRyaXZlciB2ZWQg5SBrcnlzc2UgYXYgaSBib2tzZW4gdmVkIHNpZGVuIGF2IGRlbiBkdSB2aWwgYnJ1a2UuIERlYWt0aXZlciBseWQgdmVkIOUgaWtrZSB2ZWxnZSBub2VuLiBEZXQgYW5iZWZhbGVzIGlra2Ug5SB2ZWxnZSBmbGVyZSBkcml2ZXJlLiBEcml2ZXJlbnMgb3Bwc2V0dCBrYW4gZW5kcmVzIHZlZCDlIGj4eXJla2xpa2tlIHDlIGRlbi4iLElEQ19TVEFUSUMsMTUsMjAsMjI3LDMwCiAgICBDT05UUk9MICAgICAgICAgIkVuaGV0ZXIiLElEQ19BVURJT19UUkVFLCJTeXNUcmVlVmlldzMyIixXU19CT1JERVIgfCBXU19UQUJTVE9QLDE1LDUwLDE0MCwxNDAgCiAgICBQVVNIQlVUVE9OCSAgICAiS29udHJvbGxwYW5lbCIsSURDX0FVRElPX0NPTlRST0xfUEFORUwsMTcwLDUwLDU5LDE0CiAgICBHUk9VUEJPWCAgICAgICAgIiBEaXJlY3RTb3VuZCAiLElEQ19TVEFUSUMsOCwyMDUsMjQ0LDYwCiAgICBMVEVYVAkgIk1hc2tpbnZhcmVha3NlbGVyYXNqb246ICIsSURDX1NUQVRJQywxNSwyMTUsOTAsMTAKICAgIENPTUJPQk9YCSAgICBJRENfRFNPVU5EX0hXX0FDQ0VMLDEwMCwyMTMsMTUwLDcwLENCU19EUk9QRE9XTkxJU1QgfCBXU19WU0NST0xMIHwgV1NfVEFCU1RPUAogICAgTFRFWFQgICAgICAgICAgICJTdGFuZGFyZCBzYW1wbGluZ3NyYXRlOiIsSURDX1NUQVRJQywxNSwyMzIsNzAsOAogICAgQ09NQk9CT1ggICAgICAgIElEQ19EU09VTkRfUkFURVMsOTAsMjMwLDQyLDc2LENCU19EUk9QRE9XTkxJU1QgfCBXU19WU0NST0xMIHwgV1NfVEFCU1RPUAogICAgTFRFWFQgICAgICAgICAgICJTdGFuZGFyZCBiaXRlciBwZXIgcHL4dmU6IixJRENfU1RBVElDLDEzNywyMzIsODAsOAogICAgQ09NQk9CT1ggICAgICAgIElEQ19EU09VTkRfQklUUywyMjAsMjMwLDMwLDU2LENCU19EUk9QRE9XTkxJU1QgfCBXU19WU0NST0xMIHwgV1NfVEFCU1RPUAogICAgQ09OVFJPTCAgICAgICAgICJEcml2ZXJlbXVsZXJpbmciLElEQ19EU09VTkRfRFJWX0VNVUwsIkJ1dHRvbiIsQlNfQVVUT0NIRUNLQk9YIHwgV1NfVEFCU1RPUCwxNSwyNTAsMjMwLDEwCkVORAoKSUREX0RFU0tUT1BfSU5URUdSQVRJT04gRElBTE9HIERJU0NBUkRBQkxFICAwLCAwLCAyNjAsIDI1MApTVFlMRSBXU19DSElMRCB8IFdTX0RJU0FCTEVECkZPTlQgOCwgIk1TIFNoZWxsIERsZyIKQkVHSU4KICAgIEdST1VQQk9YICAgICAgICAiIEFwcGVhcmFuY2UgIixJRENfU1RBVElDLDgsNCwyNDQsMTA2CiAgICBMVEVYVCAgICAgICAgICAgIlRlbWE6IixJRENfU1RBVElDLDE1LDE2LDIzMCw4CiAgICBDT01CT0JPWCAgICAgICAgSURDX1RIRU1FX1RIRU1FQ09NQk8sMTUsMjQsMjMwLDE0LENCU19EUk9QRE9XTkxJU1QgfCBXU19WU0NST0xMIHwgV1NfVEFCU1RPUAogICAgUFVTSEJVVFRPTiAgICAgICJJbnN0YWxsZXIgdGVtYSAuIC4gLiIsSURDX1RIRU1FX0lOU1RBTEwsMTUyLDM4LDkzLDE0CiAgICBMVEVYVCAgICAgICAgICAgIkZhcmdlOiIsSURDX1RIRU1FX0NPTE9SVEVYVCwxNSw1NCwyMzAsOAogICAgQ09NQk9CT1ggICAgICAgIElEQ19USEVNRV9DT0xPUkNPTUJPLDE1LDYyLDIzMCwxNCxDQlNfRFJPUERPV05MSVNUIHwgV1NfVlNDUk9MTCB8IFdTX1RBQlNUT1AKICAgIExURVhUICAgICAgICAgICAiU3T4cnJlbHNlOiIsSURDX1RIRU1FX1NJWkVURVhULDE1LDgwLDIzMCw4CiAgICBDT01CT0JPWCAgICAgICAgSURDX1RIRU1FX1NJWkVDT01CTywxNSw4OCwyMzAsMTQsQ0JTX0RST1BET1dOTElTVCB8IFdTX1ZTQ1JPTEwgfCBXU19UQUJTVE9QCiAgICBHUk9VUEJPWCAgICAgICAgIiBTaGVsbCBGb2xkZXIgIixJRENfU1RBVElDLDgsMTE0LDI0NCwxMDAKICAgIENPTlRST0wgICAgICAgICAiTGlzdHZpZXciLElEQ19MSVNUX1NGUEFUSFMsIlN5c0xpc3RWaWV3MzIiLExWU19SRVBPUlQgfCBMVlNfQVVUT0FSUkFOR0UgfCBMVlNfQUxJR05MRUZUIHwKICAgICAgICAgICAgICAgICAgICAgTFZTX1NJTkdMRVNFTCB8IFdTX0JPUkRFUiB8IFdTX1RBQlNUT1AsIDE1LDEyNiwyMzAsNjQKICAgIENPTlRST0wgICAgICAgICAiTGluayB0bzoiLElEQ19MSU5LX1NGUEFUSCwiQnV0dG9uIixCU19BVVRPQ0hFQ0tCT1h8V1NfVEFCU1RPUHxXU19ESVNBQkxFRCwxNSwxOTUsNTAsMTMKICAgIEVESVRURVhUICAgICAgICAgSURDX0VESVRfU0ZQQVRILDY1LDE5NSwxNDUsMTMsRVNfQVVUT0hTQ1JPTEx8V1NfVEFCU1RPUHxXU19ESVNBQkxFRAogICAgUFVTSEJVVFRPTiAgICAgICJCcm93c2UiLElEQ19CUk9XU0VfU0ZQQVRILDIxNSwxOTUsMzAsMTMsV1NfRElTQUJMRUQKRU5ECgpTVFJJTkdUQUJMRSBESVNDQVJEQUJMRQpCRUdJTgogICAgSURTX1dJTkVfVkVSU0lPTiAgICAgICAgIkNWUyIKICAgIElEU19UQUJfQVBQTElDQVRJT05TICAgICJQcm9ncmFtbWVyIgogICAgSURTX1RBQl9ETExTICAgICAgICAgICAgIkJpYmxpb3Rla2VyIgogICAgSURTX1RBQl9EUklWRVMgICAgICAgICAgIlN0YXNqb25lciIKICAgIElEU19DSE9PU0VfUEFUSCAgICAgICAgICJWZWxnIFVuaXgtbeVsa2F0YWxvZ2VuLiIKICAgIElEU19ISURFX0FEVkFOQ0VEICAgICAgICJFbmtlbCB2aXNuaW5nIgogICAgSURTX1NIT1dfQURWQU5DRUQgICAgICAgIkF2YW5zZXJ0IHZpc25pbmciCiAgICBJRFNfTk9USEVNRSAgICAgICAgICAgICAiKEludGV0IHRlbWEpIgogICAgSURTX1RBQl9HUkFQSElDUyAgICAgICAgIkdyYWZpa2siCiAgICBJRFNfVEFCX0RFU0tUT1BfSU5URUdSQVRJT04gIlNrcml2ZWJvcmRzaW50ZWdyZXJpbmciCiAgICBJRFNfVEFCX0FVRElPICAgICAgICAgICAiTHlkIgogICAgSURTX1RBQl9BQk9VVCAgICAgICAgICAgIk9tIgogICAgSURTX1dJTkVDRkdfVElUTEUgICAgICAgIk9wcHNldHQgYXYgV2luZSIKICAgIElEU19XSU5FQ0ZHX1RJVExFX0FQUCAgICJXaW5lIGNvbmZpZ3VyYXRpb24gZm9yICVzIgogICAgSURTX1RIRU1FRklMRSAgICAgICAgICAgIlRlbWFmaWxlciIKICAgIElEU19USEVNRUZJTEVfU0VMRUNUICAgICJWZWxnIGVuIHRlbWFmaWwiCiAgICBJRFNfQVVESU9fTUlTU0lORyAgICAgICAiSW5nZW4gbHlkZHJpdmVyIGVyIG9wcGdpdHQgaSByZWdpc3RlcmV0LlxuXG5FbiBhbmJlZmFsdCBkcml2ZXIgZXIgdmFsZ3QgZm9yIGRlZztcbmJydWsgZGVuIGVsbGVyIHZlbGcgZW4gYW5uZW4sXG5cbm9nIHRyeWtrIKtCcnVruyBmb3IgYXQgZW5kcmluZ2VuZSBza2FsIHRyZSBpIGtyYWZ0LiIKICAgIElEU19TSEVMTF9GT0xERVIgICAgICAgICJTa2FsbGthdGFsb2ciCiAgICBJRFNfTElOS1NfVE8gICAgICAgICAgICAiUGVrZXIgdGlsIgpFTkQKICAgIAogICAgU1RSSU5HVEFCTEUgRElTQ0FSREFCTEUKICAgIEJFR0lOCiAgICBJRFNfRExMX1dBUk5JTkcgICAgICAgICAiRW5kcmluZyBhdiBsYXN0aW5nc3Jla2tlZvhsZ2VuIGZvciBkZXR0ZSBiaWJsaW90ZWtldCBhbmJlZmFsZXMgaWtrZS5cbkVyIGR1IHNpa2tlciBw5SBhdCBkdSB2aWwgZ2r4cmUgZGV0PyIKICAgIElEU19ETExfV0FSTklOR19DQVBUSU9OICJBZHZhcnNlbDogc3lzdGVtYmlibGlvdGVrIgogICAgSURTX0RMTF9OQVRJVkUgICAgICAgICAgImlubmb4ZHQiCiAgICBJRFNfRExMX0JVSUxUSU4gICAgICAgICAiaW5uZWJ5Z2dldCIKICAgIElEU19ETExfTkFUSVZFX0JVSUxUSU4gICJpbm5m+GR0LCBpbm5lYnlnZ2V0IgogICAgSURTX0RMTF9CVUlMVElOX05BVElWRSAgImlubmVieWdnZXQsIGlubmb4ZHQiCiAgICBJRFNfRExMX0RJU0FCTEVEICAgICAgICAic2zldHQgYXYiCkVORAo=