LyoKICogV2luZUNmZyByZXNvdXJjZXMKICogU3dlZGlzaCBMYW5ndWFnZSBTdXBwb3J0CiAqCiAqIENvcHlyaWdodCAyMDA3IERhbmllbCBOeWxhbmRlciA8cG9AZGFuaWVsbnlsYW5kZXIuc2U+CiAqCiAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwogKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKICogdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiAqCiAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAogKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgogKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQogKiBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgogKgogKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCiAqIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKICogRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3QsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQQogKgogKi8KCkxBTkdVQUdFIExBTkdfU1dFRElTSCwgU1VCTEFOR19ORVVUUkFMCgpJRFJfV0lORUNGRyBNRU5VIERJU0NBUkRBQkxFCkJFR0lOCiAgICBQT1BVUCAiIgogICAgQkVHSU4KICAgICAgICBNRU5VSVRFTSAiS29uZmlndXJlcmEiLCBJRENfQVVESU9fQ09ORklHVVJFCiAgICBFTkQKRU5ECgpJRERfQUJPVVRDRkcgRElBTE9HRVggMCwgMCwgMjYwLCAyNzAKU1RZTEUgV1NfQ0hJTEQKRk9OVCA4LCAiTVMgU2hlbGwgRGxnIgpCRUdJTgogICAgTFRFWFQgICAgICAgICAgIFBBQ0tBR0VfU1RSSU5HLElEQ19TVEFUSUMsMTE5LDE3LDEyMCw4CiAgICBDT05UUk9MICAgICAgICAgSURCX1dJTkUsSURDX1NUQVRJQywiU3RhdGljIixTU19CSVRNQVAgLDE1LDE3LDE1NywxMTEKICAgIExURVhUICAgICAgICAgICAiaHR0cDovL3d3dy53aW5laHEub3JnLyIsSURDX1NUQVRJQywxMTksMzEsMTA2LDgKICAgIExURVhUICAgICAgICAgICAiRGV0dGEgYmlibGlvdGVrIORyIGZyaSBwcm9ncmFtdmFyYS4gRHUga2FuIGRpc3RyaWJ1ZXJhIGRldCBvY2gvZWxsZXIgbW9kaWZpZXJhIGRldCB1bmRlciB2aWxsa29yZW4gaSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UsIHB1YmxpY2VyYWQgYXYgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBhbnRpbmdlbiB2ZXJzaW9uIDIuMSBlbGxlciAob20gZHUgc+UgdmlsbCkgbuVnb24gc2VuYXJlIHZlcnNpb24uIiwKICAgICAgICAgICAgICAgICAgICBJRENfU1RBVElDLDExOSw0NCwxMjQsNzIKRU5ECgpJRERfQVBQQ0ZHIERJQUxPRyBESVNDQVJEQUJMRSAgMCwgMCwgMjYwLCAyNTAKU1RZTEUgV1NfQ0hJTEQgfCBXU19ESVNBQkxFRApGT05UIDgsICJNUyBTaGVsbCBEbGciCkJFR0lOCiAgICBHUk9VUEJPWCAgICAgICAgIiBQcm9ncmFtaW5zdORsbG5pbmdhciAiLElEQ19TVEFUSUMsIDgsNCwyNDQsMjQwCiAgICBMVEVYVCAgICAgICAgICAgIldpbmUga2FuIGltaXRlcmEgb2xpa2EgV2luZG93cy12ZXJzaW9uZXIgZvZyIHZhcmplIHByb2dyYW0uICBEZW4gaORyIGZsaWtlbiDkciBs5G5rYWQgdGlsbCBmbGlrYXJuYSBCaWJsaW90ZWsgb2NoIEdyYWZpayBm9nIgYXR0IGzldGEgZGlnIORuZHJhIGluc3TkbGxuaW5nYXIgaSBkZSBmbGlrYXJuYSBvY2tz5SwgYW50aW5nZW4gc3lzdGVtYnJlZGEgZWxsZXIgcGVyIHByb2dyYW0uIiwKICAgICAgICAgICAgICAgICAgICBJRENfU1RBVElDLDE1LDIwLDIyNywzMAogICAgQ09OVFJPTCAgICAgICAgICJQcm9ncmFtIixJRENfQVBQX0xJU1RWSUVXLCJTeXNMaXN0VmlldzMyIixXU19CT1JERVIgfCBXU19UQUJTVE9QIHwgTFZTX0xJU1QgfCBMVlNfU0lOR0xFU0VMIHwgTFZTX1NIT1dTRUxBTFdBWVMsCiAgICAgICAgICAgICAgICAgICAgMTUsNTAsMjMwLDE1MAogICAgUFVTSEJVVFRPTgkgICAgIiZM5GdnIHRpbGwgcHJvZ3JhbSIsSURDX0FQUF9BRERBUFAsIDkwLDIwNCw3NSwxNAogICAgUFVTSEJVVFRPTgkgICAgIiZUYSBib3J0IHByb2dyYW0iLElEQ19BUFBfUkVNT1ZFQVBQLCAxNzAsMjA0LDc1LDE0CiAgICBMVEVYVCAgICAgICAgICAgIiZXaW5kb3dzLXZlcnNpb246IixJRENfU1RBVElDLDE3LDIyNiw1OCw4CiAgICBDT01CT0JPWCAgICAgICAgSURDX1dJTlZFUiw4MywyMjQsMTYzLDU2LENCU19EUk9QRE9XTkxJU1QgfCBXU19WU0NST0xMIHwgV1NfVEFCU1RPUApFTkQKCklERF9HUkFQSENGRyBESUFMT0cgRElTQ0FSREFCTEUgIDAsIDAsIDI2MCwgMjUwClNUWUxFIFdTX0NISUxEIHwgV1NfRElTQUJMRUQKRk9OVCA4LCAiTVMgU2hlbGwgRGxnIgpCRUdJTgogICAgR1JPVVBCT1ggICAgIiBG9m5zdGVyaW5zdORsbG5pbmdhciAiLElEQ19TVEFUSUMsOCw0LDI0NCw4NAogICAgQ09OVFJPTCAgICAgIlRpbGzldCBEaXJlY3RYLXByb2dyYW0gYXR0IHN0b3BwYSAmbXVzZW4gc29tIGzkbW5hciBkZXNzIGb2bnN0ZXIiLElEQ19EWF9NT1VTRV9HUkFCLCJCdXR0b24iLEJTX0FVVE9DSEVDS0JPWCB8IFdTX1RBQlNUT1AsMTUsMjAsMjMwLDgKICAgIENPTlRST0wgICAgICJBbGxvdyB0aGUgd2luZG93IG1hbmFnZXIgdG8gJmRlY29yYXRlIHRoZSB3aW5kb3dzIixJRENfRU5BQkxFX0RFQ09SQVRFRCwiQnV0dG9uIixCU19BVVRPQ0hFQ0tCT1ggfCBXU19UQUJTVE9QLDE1LDMyLDIzMCw4CiAgICBDT05UUk9MICAgICAiVGlsbOV0ICZm9m5zdGVyaGFudGVyYXJlbiBhdHQgc3R5cmEgZvZuc3RyZW4iLElEQ19FTkFCTEVfTUFOQUdFRCwiQnV0dG9uIixCU19BVVRPQ0hFQ0tCT1ggfCBXU19UQUJTVE9QLDE1LDQ0LDIzMCw4CiAgICBDT05UUk9MICAgICAiRW11bGVyYSBldHQgdmlydHVlbGx0IHNrcml2JmJvcmQiLElEQ19FTkFCTEVfREVTS1RPUCwiQnV0dG9uIiwKICAgICAgICAgICAgICAgIEJTX0FVVE9DSEVDS0JPWCB8IFdTX1RBQlNUT1AsMTUsNTYsMjMwLDgKICAgIExURVhUICAgICAgICJTdG9ybGVrIHDlICZza3JpdmJvcmQ6IixJRENfREVTS1RPUF9TSVpFLDE1LDcwLDQ0LDgsV1NfRElTQUJMRUQKICAgIExURVhUICAgICAgICJYIixJRENfREVTS1RPUF9CWSwxMDksNzAsOCw4LFdTX0RJU0FCTEVECiAgICBFRElUVEVYVCAgICBJRENfREVTS1RPUF9XSURUSCw2NCw2OCw0MCwxMixFU19BVVRPSFNDUk9MTCB8IEVTX05VTUJFUiB8IFdTX0RJU0FCTEVECiAgICBFRElUVEVYVCAgICBJRENfREVTS1RPUF9IRUlHSFQsMTE3LDY4LDQwLDEyLEVTX0FVVE9IU0NST0xMIHwgRVNfTlVNQkVSIHwgV1NfRElTQUJMRUQKCiAgICBHUk9VUEJPWCAgICAiIERpcmVjdDNEICIsSURDX1NUQVRJQyw4LDk1LDI0NCw0OQogICAgTFRFWFQgICAgICAgIlN09mQgZvZyICZWZXJ0ZXggU2hhZGVyOiAiLElEQ19TVEFUSUMsMTUsMTEwLDgwLDMyCiAgICBDT01CT0JPWCAgICBJRENfRDNEX1ZTSEFERVJfTU9ERSwxMDAsMTA4LDE0NSw3MCxDQlNfRFJPUERPV05MSVNUIHwgV1NfVlNDUk9MTCB8IFdTX1RBQlNUT1AKICAgIENPTlRST0wgICAgICJUaWxs5XQgJlBpeGVsIFNoYWRlciAob20gaOVyZHZhcmFuIHN09mRzKSIsSURDX0QzRF9QU0hBREVSX01PREUsIkJ1dHRvbiIsQlNfQVVUT0NIRUNLQk9YIHwgV1NfVEFCU1RPUCwxNSwxMjYsMjMwLDEwCgogICAgR1JPVVBCT1ggICAgIiBTa+RybSZ1cHBs9nNuaW5nICIsSURDX1NUQVRJQyw4LDE1MSwyNDQsOTMKICAgIENPTlRST0wgICAgICIiLCBJRENfUkVTX1RSQUNLQkFSLCAibXNjdGxzX3RyYWNrYmFyMzIiLFdTX1RBQlNUT1AsMTIsMTYxLDE4NywxNQogICAgRURJVFRFWFQgICAgSURDX1JFU19EUElFRElULDIwNCwxNjEsMjMsMTMsRVNfTlVNQkVSfFdTX1RBQlNUT1AKICAgIExURVhUICAgICAgICJkcGkiLElEQ19TVEFUSUMsMjM1LDE2MywxMCw4CiAgICBMVEVYVCAgICAgICAiVGhpcyBpcyBhIHNhbXBsZSB0ZXh0IHVzaW5nIDEwIHBvaW50IFRhaG9tYSIsSURDX1JFU19GT05UX1BSRVZJRVcsMTUsMTgxLDIzMCw1NQpFTkQKCklERF9ETExDRkcgRElBTE9HIERJU0NBUkRBQkxFICAwLCAwLCAyNjAsIDI1MApTVFlMRSBXU19DSElMRCB8IFdTX0RJU0FCTEVECkZPTlQgOCwgIk1TIFNoZWxsIERsZyIKQkVHSU4KICAgIEdST1VQQk9YICAgICAgICAiIERMTC3lc2lkb3PkdHRuaW5nYXIgIixJRENfU1RBVElDLDgsNCwyNDQsMjQwCiAgICBMVEVYVCAgICAgICAgICAgIkR5bmFtaWMgTGluayBMaWJyYXJpZXMga2FuIGFuZ2VzIGluZGl2aWR1ZWxsdCBhdHQgdmFyYSBhbnRpbmdlbiBpbmJ5Z2dkYSAodGlsbGhhbmRhaOVsbHMgYXYgV2luZSkgZWxsZXIgdXJzcHJ1bmdsaWdhICh0YWduYSBmcuVuIFdpbmRvd3MgZWxsZXIgdGlsbGhhbmRhaOVsbHMgYXYgcHJvZ3JhbW1ldCkuIgogICAgICAgICAgICAgICAgICAgICxJRENfU1RBVElDLDE2LDE2LDIyMCwzMgogICAgTFRFWFQgICAgICAgICAgICImTnkg5XNpZG9z5HR0bmluZyBm9nIgYmlibGlvdGVrOiIsSURDX1NUQVRJQywxNiw1OCwxMDAsOAogICAgQ09NQk9CT1ggICAgICAgIElEQ19ETExDT01CTywxNiw2OCwxNDAsMTQsQ0JTX0RST1BET1dOIHwgV1NfVlNDUk9MTCB8IFdTX1RBQlNUT1AgfCBDQlNfU09SVCB8IENCU19MT1dFUkNBU0UKICAgIFBVU0hCVVRUT04gICAgICAiJkzkZ2cgdGlsbCIsSURDX0RMTFNfQURERExMLCAxNjQsNjgsODIsMTMsQlNfREVGUFVTSEJVVFRPTgogICAgTFRFWFQgICAgICAgICAgICJCZWZpbnRsaWdhICblc2lkb3PkdHRuaW5nYXI6IixJRENfU1RBVElDLDE2LDg2LDEwMCw4CiAgICBMSVNUQk9YICAgICAgICAgSURDX0RMTFNfTElTVCwxNiw5NiwxNDAsMTQwLFdTX0JPUkRFUiB8IFdTX1RBQlNUT1AgfCBXU19WU0NST0xMCiAgICBQVVNIQlVUVE9OICAgICAgIlImZWRpZ2VyYSIsSURDX0RMTFNfRURJVERMTCwxNjQsOTYsODIsMTQKICAgIFBVU0hCVVRUT04gICAgICAiJlRhIGJvcnQiLElEQ19ETExTX1JFTU9WRURMTCwxNjQsMTE0LDgyLDE0CkVORAoKSUREX0xPQURPUkRFUiBESUFMT0cgRElTQ0FSREFCTEUgODAsIDkwLCAxMTAsIDkyClNUWUxFIERTX01PREFMRlJBTUUgfCBXU19DQVBUSU9OIHwgV1NfU1lTTUVOVQpDQVBUSU9OICJSZWRpZ2VyYSDlc2lkb3PkdHRuaW5nIgpGT05UIDgsICJNUyBTaGVsbCBEbGciCkJFR0lOCiAgICBHUk9VUEJPWCAgICAgICAgIiBJbmzkc25pbmdzb3JkbmluZyAiLElEQ19TVEFUSUMsOCw0LDk0LDY2CiAgICBDT05UUk9MICAgICAgICAgIiZJbmJ5Z2dkIChXaW5lKSIsSURDX1JBRF9CVUlMVElOLCJCdXR0b24iLCBCU19BVVRPUkFESU9CVVRUT04gfCBXU19HUk9VUCwxNiwxNCw3NSwxMAogICAgQ09OVFJPTCAgICAgICAgICImVXJzcHJ1bmdsaWcgKFdpbmRvd3MpIixJRENfUkFEX05BVElWRSwiQnV0dG9uIiwgQlNfQVVUT1JBRElPQlVUVE9OLDE2LDI0LDc1LDEwCiAgICBDT05UUk9MICAgICAgICAgIkluYiZ5Z2dkIHNlZGFuIFVyc3BydW5nbGlnIixJRENfUkFEX0JVSUxUSU5fTkFUSVZFLCJCdXR0b24iLCBCU19BVVRPUkFESU9CVVRUT04sMTYsMzQsNzUsMTAKICAgIENPTlRST0wgICAgICAgICAiVXJzJnBydW5nbGlnIHNlZGFuIEluYnlnZ2QiLElEQ19SQURfTkFUSVZFX0JVSUxUSU4sIkJ1dHRvbiIsIEJTX0FVVE9SQURJT0JVVFRPTiwxNiw0NCw3NSwxMAogICAgQ09OVFJPTCAgICAgICAgICImSW5ha3RpdmVyYSIsSURDX1JBRF9ESVNBQkxFLCJCdXR0b24iLCBCU19BVVRPUkFESU9CVVRUT04sMTYsNTQsNzUsMTAKICAgIERFRlBVU0hCVVRUT04gICAiT0siLElET0ssOCw3NCw0NSwxNCxXU19HUk9VUAogICAgUFVTSEJVVFRPTiAgICAgICJBdmJyeXQiLElEQ0FOQ0VMLDU3LDc0LDQ1LDE0LFdTX0dST1VQCkVORAoKSUREX0RSSVZFQ0ZHIERJQUxPRyBESVNDQVJEQUJMRSAgMCwgMCwgMjYwLCAyNTAKU1RZTEUgV1NfQ0hJTEQgfCBXU19ESVNBQkxFRApGT05UIDgsICJNUyBTaGVsbCBEbGciCkJFR0lOCiAgICBHUk9VUEJPWCAgICAgICAgIiBFbmhldHMmbWFwcG5pbmdhciAiLElEQ19TVEFUSUMsOCw0LDI0NCwyNDAKICAgIENPTlRST0wgICAgICAgICAiTGlzdHZ5IixJRENfTElTVF9EUklWRVMsIlN5c0xpc3RWaWV3MzIiLExWU19SRVBPUlQgfCBMVlNfQVVUT0FSUkFOR0UgfCBMVlNfQUxJR05MRUZUIHwKICAgICAgICAgICAgICAgICAgICBMVlNfU0lOR0xFU0VMIHwgV1NfQk9SREVSIHwgV1NfVEFCU1RPUCwgMTUsMTgsMjMyLDc2CiAgICBQVVNIQlVUVE9OICAgICAgIiZM5GdnIHRpbGwuLi4iLElEQ19CVVRUT05fQURELDE1LDk4LDM3LDE0CiAgICBQVVNIQlVUVE9OICAgICAgIiZUYSBib3J0IixJRENfQlVUVE9OX1JFTU9WRSw1Niw5OCwzNywxNAogICAgUFVTSEJVVFRPTiAgICAgICJBdXRvJmRldGVjdC4uLiIsSURDX0JVVFRPTl9BVVRPREVURUNULDE5Nyw5OCw0OSwxNAoKICAgIC8qIGVkaXRpbmcgZHJpdmUgZGV0YWlscyAqLwogICAgTFRFWFQgICAgICAgICAgICImU/ZrduRnOiIsSURDX1NUQVRJQywxNSwxMjMsMjAsOQogICAgRURJVFRFWFQgICAgICAgIElEQ19FRElUX1BBVEgsNDEsMTIwLDE2MCwxMyxFU19BVVRPSFNDUk9MTCB8IFdTX1RBQlNUT1AKICAgIFBVU0hCVVRUT04gICAgICAiJkJs5GRkcmEuLi4iLElEQ19CVVRUT05fQlJPV1NFX1BBVEgsMjA2LDEyMCw0MCwxMwoKICAgIExURVhUICAgICAgICAgICAiJlR5cDoiLElEQ19TVEFUSUNfVFlQRSwxNSwxMzgsMjEsMTAKICAgIENPTUJPQk9YICAgICAgICBJRENfQ09NQk9fVFlQRSw0MSwxMzUsNzcsNjAsQ0JTX0RST1BET1dOTElTVCB8IFdTX1ZTQ1JPTEwgfCBXU19UQUJTVE9QCgogICAgTFRFWFQgICAgICAgICAgICJFdGlrZXR0IG9jaCBzZXJpZW51bW1lciIsSURDX0xBQkVMU0VSSUFMX1NUQVRJQywxNSwxNTUsOTUsMTAKCiAgICBQVVNIQlVUVE9OICAgICAgIlZpc2EgJmF2YW5jZXJhdCIsSURDX0JVVFRPTl9TSE9XX0hJREVfQURWQU5DRUQsMTg2LDEzNiw2MCwxMwogICAgQ09OVFJPTCAgICAgICAgICJJZGVudGlmaWVyYSBhdXRvbWF0aXNrdCAmZnLlbiBlbmhldDoiLElEQ19SQURJT19BVVRPREVURUNULCJCdXR0b24iLAogICAgICAgICAgICAgICAgICAgIEJTX0FVVE9SQURJT0JVVFRPTiwxNSwxNjYsOTMsMTAKICAgIEVESVRURVhUICAgICAgICBJRENfRURJVF9ERVZJQ0UsMjcsMTc2LDE3NCwxMyxFU19BVVRPSFNDUk9MTAogICAgUFVTSEJVVFRPTiAgICAgICJCcm8md3NlLi4uIixJRENfQlVUVE9OX0JST1dTRV9ERVZJQ0UsMjA2LDE3Niw0MCwxMwogICAgQ09OVFJPTCAgICAgICAgICJUaWxsZGVsYSAmbWFudWVsbHQ6IixJRENfUkFESU9fQVNTSUdOLCJCdXR0b24iLAogICAgICAgICAgICAgICAgICAgIEJTX0FVVE9SQURJT0JVVFRPTiwxNSwxOTUsNjksMTAKCiAgICBMVEVYVCAgICAgICAgICAgIiZFdGlrZXR0OiIsSURDX1NUQVRJQ19MQUJFTCwzMywyMDgsMjksMTIKICAgIEVESVRURVhUICAgICAgICBJRENfRURJVF9MQUJFTCw2MywyMDUsNzgsMTMsRVNfQVVUT0hTQ1JPTEwgfCBXU19UQUJTVE9QCiAgICBMVEVYVCAgICAgICAgICAgIlMmZXJpZW5yOiIsSURDX1NUQVRJQ19TRVJJQUwsMzMsMjI1LDI5LDEyCiAgICBFRElUVEVYVCAgICAgICAgSURDX0VESVRfU0VSSUFMLDYzLDIyMSw3OCwxMyxFU19BVVRPSFNDUk9MTCB8IFdTX1RBQlNUT1AKCiAgICBDT05UUk9MICAgICAgICAgIlZpc2EgJnB1bmt0ZmlsZXIiLElEQ19TSE9XX0RPVF9GSUxFUywiQnV0dG9uIixCU19BVVRPQ0hFQ0tCT1ggfCBXU19UQUJTVE9QLDgsMjYwLDIzMCw4CkVORAoKSUREX0FVRElPQ0ZHIERJQUxPRyBESVNDQVJEQUJMRSAgMCwgMCwgMjYwLCAyNTAKU1RZTEUgV1NfQ0hJTEQgfCBXU19ESVNBQkxFRApGT05UIDgsICJNUyBTaGVsbCBEbGciCkJFR0lOCiAgICBHUk9VUEJPWCAgICAgICAgIiBFbmhldHN2YWwgIixJRENfU1RBVElDLDgsNCwyNDQsMTk1CiAgICBMVEVYVCAgICAgICAgICAgIlbkbGogZW4gbGp1ZGRyaXZydXRpbiBnZW5vbSBhdHQga3J5c3NhIGkgcnV0YW4gZvZyIGRlbiD2bnNrYWRlIGRyaXZydXRpbmVuLiAgSW5ha3RpdmVyYSBsanVkIGdlbm9tIGF0dCBpbnRlIHbkbGphIG7lZ29uIGRyaXZydXRpbi4gVmFsIGF2IGZsZXJhIGRyaXZydXRpbmVyIHJla29tbWVuZGVyYXMgaW50ZS4gS29uZmlndXJlcmEgZW4gZHJpdnJ1dGluIGdlbm9tIGF0dCBo9mdlcmtsaWNrYSBw5SBkZW4uIixJRENfU1RBVElDLDE1LDIwLDIyNywzMAogICAgQ09OVFJPTCAgICAgICAgICJFbmhldGVyIixJRENfQVVESU9fVFJFRSwiU3lzVHJlZVZpZXczMiIsV1NfQk9SREVSIHwgV1NfVEFCU1RPUCwxNSw1MCwxNDAsMTQwCiAgICBQVVNIQlVUVE9OICAgICAgIiZUZXN0YSBsanVkIixJRENfQVVESU9fVEVTVCwxNzAsNTAsNTksMTQKICAgIFBVU0hCVVRUT04JICAgICImS29udHJvbGxwYW5lbCIsSURDX0FVRElPX0NPTlRST0xfUEFORUwsMTcwLDcwLDU5LDE0CiAgICBHUk9VUEJPWCAgICAgICAgIiBEaXJlY3RTb3VuZCAiLElEQ19TVEFUSUMsOCwyMDUsMjQ0LDYwCiAgICBMVEVYVAkgICAgIiZI5XJkdmFydWFjY2VsZXJlcmluZzogIixJRENfU1RBVElDLDE1LDIxNSw5MCwxMAogICAgQ09NQk9CT1gJICAgIElEQ19EU09VTkRfSFdfQUNDRUwsMTAwLDIxMywxNTAsNzAsQ0JTX0RST1BET1dOTElTVCB8IFdTX1ZTQ1JPTEwgfCBXU19UQUJTVE9QCiAgICBMVEVYVCAgICAgICAgICAgIiZTYW1wbGluZ3NmcmVrdmVucyBzb20gc3RhbmRhcmQ6IixJRENfU1RBVElDLDE1LDIzMiw3MCw4CiAgICBDT01CT0JPWCAgICAgICAgSURDX0RTT1VORF9SQVRFUyw5MCwyMzAsNDIsNzYsQ0JTX0RST1BET1dOTElTVCB8IFdTX1ZTQ1JPTEwgfCBXU19UQUJTVE9QCiAgICBMVEVYVCAgICAgICAgICAgIiZCaXRhciBwZXIgc2FtcGxpbmcgc29tIHN0YW5kYXJkOiIsSURDX1NUQVRJQywxMzcsMjMyLDgwLDgKICAgIENPTUJPQk9YICAgICAgICBJRENfRFNPVU5EX0JJVFMsMjIwLDIzMCwzMCw1NixDQlNfRFJPUERPV05MSVNUIHwgV1NfVlNDUk9MTCB8IFdTX1RBQlNUT1AKICAgIENPTlRST0wgICAgICAgICAiRHJpdnJ1dGlucyZlbXVsZXJpbmciLElEQ19EU09VTkRfRFJWX0VNVUwsIkJ1dHRvbiIsQlNfQVVUT0NIRUNLQk9YIHwgV1NfVEFCU1RPUCwxNSwyNTAsMjMwLDEwCkVORAoKSUREX0RFU0tUT1BfSU5URUdSQVRJT04gRElBTE9HIERJU0NBUkRBQkxFICAwLCAwLCAyNjAsIDI1MApTVFlMRSBXU19DSElMRCB8IFdTX0RJU0FCTEVECkZPTlQgOCwgIk1TIFNoZWxsIERsZyIKQkVHSU4KICAgIEdST1VQQk9YICAgICAgICAiIFV0c2VlbmRlICIsSURDX1NUQVRJQyw4LDQsMjQ0LDEwNgogICAgTFRFWFQgICAgICAgICAgICImVGVtYToiLElEQ19TVEFUSUMsMTUsMTYsMTMwLDgKICAgIENPTUJPQk9YICAgICAgICBJRENfVEhFTUVfVEhFTUVDT01CTywxNSwyNCwxMzAsMTQsQ0JTX0RST1BET1dOTElTVCB8IFdTX1ZTQ1JPTEwgfCBXU19UQUJTVE9QCiAgICBQVVNIQlVUVE9OICAgICAgIiZJbnN0YWxsZXJhIHRlbWEuLi4iLElEQ19USEVNRV9JTlNUQUxMLDE1MiwyMyw5MywxNAogICAgTFRFWFQgICAgICAgICAgICImRuRyZzoiLElEQ19USEVNRV9DT0xPUlRFWFQsMTUsNDAsMTEyLDgKICAgIENPTUJPQk9YICAgICAgICBJRENfVEhFTUVfQ09MT1JDT01CTywxNSw0OCwxMTIsMTQsQ0JTX0RST1BET1dOTElTVCB8IFdTX1ZTQ1JPTEwgfCBXU19UQUJTVE9QCiAgICBMVEVYVCAgICAgICAgICAgIiZTdG9ybGVrOiIsSURDX1RIRU1FX1NJWkVURVhULDEzNSw0MCwxMTAsOAogICAgQ09NQk9CT1ggICAgICAgIElEQ19USEVNRV9TSVpFQ09NQk8sMTM1LDQ4LDExMCwxNCxDQlNfRFJPUERPV05MSVNUIHwgV1NfVlNDUk9MTCB8IFdTX1RBQlNUT1AKICAgIExURVhUICAgICAgICAgICAiT2ImamVrdDoiLElEQ19TVEFUSUMsMTUsNjQsMTEyLDgKICAgIENPTUJPQk9YICAgICAgICBJRENfU1lTUEFSQU1fQ09NQk8sMTUsNzQsMTEyLDEyMCxDQlNfRFJPUERPV05MSVNUIHwgV1NfVlNDUk9MTCB8IFdTX1RBQlNUT1AgfCBDQlNfU09SVAogICAgTFRFWFQgICAgICAgICAgICJG5CZyZzoiLElEQ19TWVNQQVJBTV9DT0xPUl9URVhULDEzNSw2NCwyNSw4LFdTX0RJU0FCTEVECiAgICBQVVNIQlVUVE9OICAgICAgIiIsSURDX1NZU1BBUkFNX0NPTE9SLDEzNSw3NCwyNSwxMyxXU19ESVNBQkxFRCB8IEJTX09XTkVSRFJBVwogICAgTFRFWFQgICAgICAgICAgICJTdCZvcmxlazoiLElEQ19TWVNQQVJBTV9TSVpFX1RFWFQsMTY2LDY0LDMwLDgsV1NfRElTQUJMRUQKICAgIEVESVRURVhUICAgICAgICBJRENfU1lTUEFSQU1fU0laRSwxNjYsNzQsMjMsMTMsRVNfQVVUT0hTQ1JPTEwgfCBXU19UQUJTVE9QIHwgV1NfRElTQUJMRUQKICAgIENPTlRST0wgICAgICAgICAiIixJRENfU1lTUEFSQU1fU0laRV9VRCxVUERPV05fQ0xBU1MsVURTX1NFVEJVRERZSU5UIHwgV1NfRElTQUJMRUQsMTg3LDc0LDE1LDEzCiAgICBQVVNIQlVUVE9OICAgICAgIiZUeXBzbml0dCIsSURDX1NZU1BBUkFNX0ZPTlQsMjA4LDc0LDM3LDEzLFdTX0RJU0FCTEVECiAgICBHUk9VUEJPWCAgICAgICAgIiBTJmhlbGwtbWFwcCAiLElEQ19TVEFUSUMsOCwxMTQsMjQ0LDEwMAogICAgQ09OVFJPTCAgICAgICAgICJMaXN0dnkiLElEQ19MSVNUX1NGUEFUSFMsIlN5c0xpc3RWaWV3MzIiLExWU19SRVBPUlQgfCBMVlNfQVVUT0FSUkFOR0UgfCBMVlNfQUxJR05MRUZUIHwKICAgICAgICAgICAgICAgICAgICAgTFZTX1NJTkdMRVNFTCB8IFdTX0JPUkRFUiB8IFdTX1RBQlNUT1AsIDE1LDEyNiwyMzAsNjQKICAgIENPTlRST0wgICAgICAgICAiJkzkbmthIHRpbGw6IixJRENfTElOS19TRlBBVEgsIkJ1dHRvbiIsQlNfQVVUT0NIRUNLQk9YfFdTX1RBQlNUT1B8V1NfRElTQUJMRUQsMTUsMTk1LDUwLDEzCiAgICBFRElUVEVYVCAgICAgICAgIElEQ19FRElUX1NGUEFUSCw2NSwxOTUsMTQ1LDEzLEVTX0FVVE9IU0NST0xMfFdTX1RBQlNUT1B8V1NfRElTQUJMRUQKICAgIFBVU0hCVVRUT04gICAgICAiQiZs5GRkcmEiLElEQ19CUk9XU0VfU0ZQQVRILDIxNSwxOTUsMzAsMTMsV1NfRElTQUJMRUQKRU5ECgpTVFJJTkdUQUJMRSBESVNDQVJEQUJMRQpCRUdJTgogICAgSURTX1RBQl9BUFBMSUNBVElPTlMgICAgIlByb2dyYW0iCiAgICBJRFNfVEFCX0RMTFMgICAgICAgICAgICAiQmlibGlvdGVrIgogICAgSURTX1RBQl9EUklWRVMgICAgICAgICAgIkVuaGV0ZXIiCiAgICBJRFNfQ0hPT1NFX1BBVEggICAgICAgICAiVuRsaiB1bml4LW3lbGthdGFsb2csIHRhY2suIgogICAgSURTX0hJREVfQURWQU5DRUQgICAgICAgIkT2bGogJmF2YW5jZXJhdCIKICAgIElEU19TSE9XX0FEVkFOQ0VEICAgICAgICJWaXNhICZhdmFuY2VyYXQiCiAgICBJRFNfTk9USEVNRSAgICAgICAgICAgICAiKEluZ2V0IHRlbWEpIgogICAgSURTX1RBQl9HUkFQSElDUyAgICAgICAgIkdyYWZpayIKICAgIElEU19UQUJfREVTS1RPUF9JTlRFR1JBVElPTiAiU2tyaXZib3Jkc2ludGVncmF0aW9uIgogICAgSURTX1RBQl9BVURJTyAgICAgICAgICAgIkxqdWQiCiAgICBJRFNfVEFCX0FCT1VUICAgICAgICAgICAiT20iCiAgICBJRFNfV0lORUNGR19USVRMRSAgICAgICAiS29uZmlndXJhdGlvbiBhdiBXaW5lIgogICAgSURTX1dJTkVDRkdfVElUTEVfQVBQICAgIldpbmUta29uZmlndXJhdGlvbiBm9nIgJXMiCiAgICBJRFNfVEhFTUVGSUxFICAgICAgICAgICAiVGVtYWZpbGVyIgogICAgSURTX1RIRU1FRklMRV9TRUxFQ1QgICAgIlbkbGogZW4gdGVtYWZpbCIKICAgIElEU19BVURJT19NSVNTSU5HICAgICAgICJEZXQgZmlubnMgaW5nZW4gbGp1ZGRyaXZydXRpbiBm9nIgbuRydmFyYW5kZSBhbmdpdmVuIGkgcmVnaXN0cmV0LlxuXG5FbiByZWtvbW1lbmRlcmFkIGRyaXZydXRpbiBoYXIgdmFsdHMg5XQgZGlnLlxuRHUga2FuIGFuduRuZGEgZGVubmEgZHJpdnJ1dGluIGVsbGVyIHbkbGphIGVuIGFubmFuIHRpbGxn5G5nbGlnIGRyaXZydXRpbi5cblxuRHUgbeVzdGUga2xpY2thIHDlIFZlcmtzdORsbCBm9nIgYXR0IHZhbGV0IHNrYSBi9nJqYSBn5GxsYS4iCiAgICBJRFNfU0hFTExfRk9MREVSICAgICAgICAiU2hlbGwtbWFwcCIKICAgIElEU19MSU5LU19UTyAgICAgICAgICAgICJM5G5rYXIgdGlsbCIKRU5ECgpTVFJJTkdUQUJMRSBESVNDQVJEQUJMRQpCRUdJTgogICAgSURTX0RMTF9XQVJOSU5HICAgICAgICAgIsRuZHJpbmcgYXYgaW5s5HNuaW5nc29yZG5pbmdlbiBm9nIgZGV0dGEgYmlibGlvdGVrIHJla29tbWVuZGVyYXMgaW50ZS5cbsRyIGR1IHPka2VyIHDlIGF0dCBkdSB2aWxsIGf2cmEgZGV0dGE/IgogICAgSURTX0RMTF9XQVJOSU5HX0NBUFRJT04gIlZhcm5pbmc6IHN5c3RlbWJpYmxpb3RlayIKICAgIElEU19ETExfTkFUSVZFICAgICAgICAgICJ1cnNwcnVuZ2xpZyIKICAgIElEU19ETExfQlVJTFRJTiAgICAgICAgICJpbmJ5Z2dkIgogICAgSURTX0RMTF9OQVRJVkVfQlVJTFRJTiAgInVyc3BydW5nbGlnLCBpbmJ5Z2dkIgogICAgSURTX0RMTF9CVUlMVElOX05BVElWRSAgImluYnlnZ2QsIHVyc3BydW5nbGlnIgogICAgSURTX0RMTF9ESVNBQkxFRCAgICAgICAgImluYWt0aXZlcmFkIgogICAgSURTX0RFRkFVTFRfU0VUVElOR1MgICAgIlN0YW5kYXJkaW5zdORsbG5pbmdhciIKICAgIElEU19FWEVDVVRBQkxFX0ZJTFRFUiAgICJXaW5lLXByb2dyYW0gKCouZXhlLCouZXhlLnNvKVwwKi5leGU7Ki5leGUuc29cMCIKICAgIElEU19VU0VfR0xPQkFMX1NFVFRJTkdTICJBbnbkbmQgZ2xvYmFsYSBpbnN05GxsbmluZ2FyIgogICAgSURTX1NFTEVDVF9FWEVDVVRBQkxFICAgIlbkbGogZW4ga/ZyYmFyIGZpbCIKRU5ECgpTVFJJTkdUQUJMRSBESVNDQVJEQUJMRQpCRUdJTgogICAgSURTX1NIQURFUl9NT0RFX0hBUkRXQVJFICAgICJI5XJkdmFyYSIKICAgIElEU19TSEFERVJfTU9ERV9OT05FICAgICAgICAiSW5nZW4iCkVORAoKU1RSSU5HVEFCTEUgRElTQ0FSREFCTEUKQkVHSU4KICAgIElEU19EUklWRV9VTktOT1dOICAgICAgICAgICAiQXV0b2RldGVjdCIKICAgIElEU19EUklWRV9GSVhFRCAgICAgICAgICAgICAiTG9rYWwgaOVyZGRpc2siCiAgICBJRFNfRFJJVkVfUkVNT1RFICAgICAgICAgICAgIk7kdHZlcmtzdXRkZWxuaW5nIgogICAgSURTX0RSSVZFX1JFTU9WQUJMRSAgICAgICAgICJEaXNrZXR0IgogICAgSURTX0RSSVZFX0NEUk9NICAgICAgICAgICAgICJDZC1yb20iCiAgICBJRFNfRFJJVkVfTEVUVEVSU19FWENFRURFRCAgIkR1IGthbiBpbnRlIGzkZ2dhIHRpbGwgZmxlciBlbmhldGVyLlxuXG5WYXJqZSBlbmhldCBt5XN0ZSBoYSBlbiBib2tzdGF2LCBmcuVuIEEgdGlsbCBaLCBz5SBkdSBrYW4gaW50ZSBoYSBmbGVyIORuIDI2IgogICAgSURTX1NZU1RFTV9EUklWRV9MQUJFTCAgICAgICJTeXN0ZW1lbmhldCIKICAgIElEU19DT05GSVJNX0RFTEVURV9DICAgICAgICAixHIgZHUgc+RrZXIgcOUgYXR0IGR1IHZpbGwgdGEgYm9ydCBlbmhldGVuIEM/XG5cbkRlIGZsZXN0YSBXaW5kb3dzLXByb2dyYW0gZvZyduRudGFyIGF0dCBlbmhldCBDIGZpbm5zLCBvY2gga29tbWVyIGF0dCBk9iBvbSBkZW4gaW50ZSBmaW5ucy4gT20gZHUgZm9ydHPkdHRlciBi9nIgZHUga29tbWEgaWjlZyBhdHQg5XRlcnNrYXBhIGRlbiEiCiAgICBJRFNfQ09MX0RSSVZFTEVUVEVSICAgICAgICAgIkJva3N0YXYiCiAgICBJRFNfQ09MX0RSSVZFTUFQUElORyAgICAgICAgIkVuaGV0c21hcHBuaW5nIgogICAgSURTX05PX0RSSVZFX0MgICAgICAgICAgICAgICJEdSBzYWtuYXIgZW5oZXQgQy4gRGV0IGjkciDkciBpbnRlIHPlIGJyYS5cblxuS29tIGlo5WcgYXR0IGtsaWNrYSBw5SCRTORnZyB0aWxskiBpIGZsaWtlbiBFbmhldGVyIGb2ciBhdHQgc2thcGEgZW4hXG4iCkVORAoKU1RSSU5HVEFCTEUgRElTQ0FSREFCTEUKQkVHSU4KICAgIElEU19BQ0NFTF9GVUxMICAgICAgICAgICAgICAiRnVsbHN05G5kaWciCiAgICBJRFNfQUNDRUxfU1RBTkRBUkQgICAgICAgICAgIlN0YW5kYXJkIgogICAgSURTX0FDQ0VMX0JBU0lDICAgICAgICAgICAgICJHcnVuZGzkZ2dhbmRlIgogICAgSURTX0FDQ0VMX0VNVUxBVElPTiAgICAgICAgICJFbXVsZXJpbmciCiAgICBJRFNfRFJJVkVSX0FMU0EgICAgICAgICAgICAgIkFMU0EtZHJpdnJ1dGluIgogICAgSURTX0RSSVZFUl9FU09VTkQgICAgICAgICAgICJFc291bkQtZHJpdnJ1dGluIgogICAgSURTX0RSSVZFUl9PU1MgICAgICAgICAgICAgICJPU1MtZHJpdnJ1dGluIgogICAgSURTX0RSSVZFUl9KQUNLICAgICAgICAgICAgICJKQUNLLWRyaXZydXRpbiIKICAgIElEU19EUklWRVJfTkFTICAgICAgICAgICAgICAiTkFTLWRyaXZydXRpbiIKICAgIElEU19EUklWRVJfQVVESU9JTyAgICAgICAgICAiQXVkaW8gSU8tZHJpdnJ1dGluIChTb2xhcmlzKSIKICAgIElEU19EUklWRVJfQ09SRUFVRElPICAgICAgICAiQ29yZUF1ZGlvIERyaXZlciIKICAgIElEU19PUEVOX0RSSVZFUl9FUlJPUiAgICAgICAiS3VuZGUgaW50ZSD2cHBuYSAlcyEiCiAgICBJRFNfU09VTkREUklWRVJTICAgICAgICAgICAgIkxqdWRkcml2cnV0aW5lciIKICAgIElEU19ERVZJQ0VTX1dBVkVPVVQgICAgICAgICAiV2F2ZSBPdXQtZW5oZXRlciIKICAgIElEU19ERVZJQ0VTX1dBVkVJTiAgICAgICAgICAiV2F2ZSBJbi1lbmhldGVyIgogICAgSURTX0RFVklDRVNfTUlESU9VVCAgICAgICAgICJNSURJIE91dC1lbmhldGVyIgogICAgSURTX0RFVklDRVNfTUlESUlOICAgICAgICAgICJNSURJIEluLWVuaGV0ZXIiCiAgICBJRFNfREVWSUNFU19BVVggICAgICAgICAgICAgIkF1eC1lbmhldGVyIgogICAgSURTX0RFVklDRVNfTUlYRVIgICAgICAgICAgICJNaXhlcmVuaGV0ZXIiCiAgICBJRFNfVU5BVkFJTEFCTEVfRFJJVkVSICAgICAgIkhpdHRhZGUgZHJpdnJ1dGluIGkgcmVnaXN0cmV0IHNvbSBpbnRlIGZpbm5zIHRpbGxn5G5nbGlnIVxuXG5UYSBib3J0IJMlc5QgZnLlbiByZWdpc3RyZXQ/IgogICAgSURTX1dBUk5JTkcgICAgICAgICAgICAgICAgICJWYXJuaW5nIgpFTkQKClNUUklOR1RBQkxFIERJU0NBUkRBQkxFCkJFR0lOCiAgICBJRENfU1lTUEFSQU1TX0JVVFRPTiAgICAgICAgICAgICJDb250cm9scyBCYWNrZ3JvdW5kIgogICAgSURDX1NZU1BBUkFNU19CVVRUT05fVEVYVCAgICAgICAiQ29udHJvbHMgVGV4dCIKICAgIElEQ19TWVNQQVJBTVNfREVTS1RPUCAgICAgICAgICAgIlNrcml2Ym9yZCIKICAgIElEQ19TWVNQQVJBTVNfTUVOVSAgICAgICAgICAgICAgIk1lbnliYWtncnVuZCIKICAgIElEQ19TWVNQQVJBTVNfTUVOVV9URVhUICAgICAgICAgIk1lbnl0ZXh0IgogICAgSURDX1NZU1BBUkFNU19TQ1JPTExCQVIgICAgICAgICAiU2Nyb2xsYmFyIgogICAgSURDX1NZU1BBUkFNU19TRUxFQ1RJT04gICAgICAgICAiU2VsZWN0aW9uIEJhY2tncm91bmQiCiAgICBJRENfU1lTUEFSQU1TX1NFTEVDVElPTl9URVhUICAgICJTZWxlY3Rpb24gVGV4dCIKICAgIElEQ19TWVNQQVJBTVNfVE9PTFRJUCAgICAgICAgICAgIlRvb2xUaXAgQmFja2dyb3VuZCIKICAgIElEQ19TWVNQQVJBTVNfVE9PTFRJUF9URVhUICAgICAgIlRvb2xUaXAgVGV4dCIKICAgIElEQ19TWVNQQVJBTVNfV0lORE9XICAgICAgICAgICAgIldpbmRvdyBCYWNrZ3JvdW5kIgogICAgSURDX1NZU1BBUkFNU19XSU5ET1dfVEVYVCAgICAgICAiV2luZG93IFRleHQiCiAgICBJRENfU1lTUEFSQU1TX0FDVElWRV9USVRMRSAgICAgICJBY3RpdmUgVGl0bGUgQmFyIgogICAgSURDX1NZU1BBUkFNU19BQ1RJVkVfVElUTEVfVEVYVCAiQWN0aXZlIFRpdGxlIFRleHQiCiAgICBJRENfU1lTUEFSQU1TX0lOQUNUSVZFX1RJVExFICAgICJJbmFjdGl2ZSBUaXRsZSBCYXIiCiAgICBJRENfU1lTUEFSQU1TX0lOQUNUSVZFX1RJVExFX1RFWFQgIkluYWN0aXZlIFRpdGxlIFRleHQiCkVORAo=