LyoKICogUmVnZWRpdCByZXNvdXJjZXMKICoKICogQ29weXJpZ2h0IDIwMDYgQW5kcmFzIEtvdmFjcwogKgogKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCiAqIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgogKgogKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKICogTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KICoKICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwogKiBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCiAqIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EKICovCgovKiBIdW5nYXJpYW4gUmVzb3VyY2VzICovCgpMQU5HVUFHRSBMQU5HX0hVTkdBUklBTiwgU1VCTEFOR19ORVVUUkFMCgpJRFJfUkVHRURJVF9NRU5VIE1FTlUgRElTQ0FSREFCTEUKQkVHSU4KICAgIFBPUFVQICImUmVnaXN6dHLhY2nzcyBBZGF0YuF6aXMiCiAgICBCRUdJTgogICAgICAgIE1FTlVJVEVNICJSZWdpc3p0cuFjafNzIGFkYXRi4XppcyBm4WpsICZpbXBvcnThbOFzYS4uLiIsICAgIElEX1JFR0lTVFJZX0lNUE9SVFJFR0lTVFJZRklMRQogICAgICAgIE1FTlVJVEVNICJSZWdpc3p0cuFjafNzIGFkYXRi4XppcyBm4WpsICZleHBvcnThbOFzYS4uLiIsICAgIElEX1JFR0lTVFJZX0VYUE9SVFJFR0lTVFJZRklMRQogICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgIE1FTlVJVEVNICImQ3NhdGxha2964XMgaOFs83phdGkgcmVnaXN6dHLhY2nzcyBhZGF0YuF6aXNob3ouLi4iLCBJRF9SRUdJU1RSWV9DT05ORUNUTkVUV09SS1JFR0lTVFJZLCBHUkFZRUQKICAgICAgICBNRU5VSVRFTSAiTGV24Wxhc3p04XMgYSBo4WzzemF0aSBhJmRhdGLhemlzcvNsLi4uIiwgSURfUkVHSVNUUllfRElTQ09OTkVDVE5FVFdPUktSRUdJU1RSWSwgR1JBWUVECiAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgTUVOVUlURU0gIiZOeW9tdGF04XNcdEN0cmwrUCIsICAgICAgICAgICAgICBJRF9SRUdJU1RSWV9QUklOVCwgR1JBWUVECiAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgTUVOVUlURU0gIktpJmzpcOlzIiwgICAgICAgICAgICAgICAgICAgICAgIElEX1JFR0lTVFJZX0VYSVQKICAgIEVORAogICAgUE9QVVAgIlN6JmVya2VzenTpcyIKICAgIEJFR0lOCiAgICAgICAgTUVOVUlURU0gIiZN82Rvc+104XMiLCAgICAgICAgICAgICAgICAgICAgIElEX0VESVRfTU9ESUZZCiAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgUE9QVVAgIibaaiIKICAgICAgICBCRUdJTgogICAgICAgICAgICBNRU5VSVRFTSAiJkt1bGNzIiwgICAgICAgICAgICAgICAgICAgICAgICBJRF9FRElUX05FV19LRVkKICAgICAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgICAgIE1FTlVJVEVNICImU3p0cmluZyDpcnTpayIsICAgICAgICAgICAgICAgSURfRURJVF9ORVdfU1RSSU5HVkFMVUUKICAgICAgICAgICAgTUVOVUlURU0gIiZCaW7hcmlzIOlydOlrIiwgICAgICAgICAgICAgICBJRF9FRElUX05FV19CSU5BUllWQUxVRQogICAgICAgICAgICBNRU5VSVRFTSAiJkRXT1JEIOlydOlrIiwgICAgICAgICAgICAgICAgSURfRURJVF9ORVdfRFdPUkRWQUxVRQogICAgICAgIEVORAogICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgIE1FTlVJVEVNICImVPZybOlzXHREZWwiLCAgICAgICAgICAgICAgICBJRF9FRElUX0RFTEVURQogICAgICAgIE1FTlVJVEVNICImwXRuZXZleulzXHRGMiIsICAgICAgICAgICAgICAgICBJRF9FRElUX1JFTkFNRQogICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgIE1FTlVJVEVNICJLdWwmY3Nu6XYgbeFzb2zhc2EiLCAgICAgICAgICAgICAgSURfRURJVF9DT1BZS0VZTkFNRQogICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgIE1FTlVJVEVNICImS2VyZXPpc1x0Q3RybCtGIiwgICAgICAgICAgICAgICBJRF9FRElUX0ZJTkQsIEdSQVlFRAogICAgICAgIE1FTlVJVEVNICJLJvZ2ZXRrZXr1IGtlcmVz6XNlXHRGMyIsICAgICAgICAgICAgICBJRF9FRElUX0ZJTkRORVhULCBHUkFZRUQKICAgIEVORAogICAgUE9QVVAgIiZO6XpldCIKICAgIEJFR0lOCiAgICAgICAgTUVOVUlURU0gIsFsbGEmcG90c29yIiwgICAgICAgICAgICAgICAgIElEX1ZJRVdfU1RBVFVTQkFSCiAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgTUVOVUlURU0gIlN66XR24SZsYXN6dOFzIiwgICAgICAgICAgICAgICAgICAgICAgSURfVklFV19TUExJVAogICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgIE1FTlVJVEVNICJGJnJpc3PtdOlzXHRGNSIsICAgICAgICAgICAgICAgIElEX1ZJRVdfUkVGUkVTSAogICAgRU5ECiAgICBQT1BVUCAiS2VkJnZlbmNlayIKICAgIEJFR0lOCiAgICAgICAgTUVOVUlURU0gIkhvenrhJmFk4XMgYSBrZWR2ZW5jZWtoZXoiLCAgICAgICAgICBJRF9GQVZPUklURVNfQUREVE9GQVZPUklURVMKICAgICAgICBNRU5VSVRFTSAiVPYmcmzpcyBhIGtlZHZlbmNla2L1bCIsICAgICAgICAgICBJRF9GQVZPUklURVNfUkVNT1ZFRkFWT1JJVEUKICAgIEVORAogICAgUE9QVVAgIiZT+mfzIgogICAgQkVHSU4KICAgICAgICBNRU5VSVRFTSAiUyb6Z/MgdOltYWv2cvZrXHRGMSIsICAgICAgICAgICAgSURfSEVMUF9IRUxQVE9QSUNTCiAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgTUVOVUlURU0gIlJlZ2lzenRy4WNp83MgJmFkYXRi4XppcyBzemVya2VzenT1IG7pdmplZ3llIiwgICAgICBJRF9IRUxQX0FCT1VUCiAgICBFTkQKRU5ECgovKgogKiBEaWFsb2cKICovCgpJRERfRklORCBESUFMT0cgRElTQ0FSREFCTEUgIDIyLCAxNywgMjEwLCA4NQpTVFlMRSBEU19NT0RBTEZSQU1FIHwgV1NfQ0FQVElPTiB8IFdTX1NZU01FTlUKQ0FQVElPTiAiS2VyZXPpcyIKRk9OVCA4LCAiTVMgU2hlbGwgRGxnIgpCRUdJTgogICAgTFRFWFQgICAgICAgICAgICJLZXJlc+lzOiIsSURDX1NUQVRJQyw1LDcsMTE5LDgKICAgIEVESVRURVhUICAgICAgICBJRENfVkFMVUVfTkFNRSw0MCw1LDEyNSwxMiwgV1NfQk9SREVSIHwgV1NfVEFCU1RPUCB8IEVTX0FVVE9IU0NST0xMCiAgICBMVEVYVCAgICAgICAgICAgIktlcmVz6XMgaXR0OiIsSURDX1NUQVRJQyw1LCAyMiwgMTE5LCA4CiAgICBDSEVDS0JPWCAgICAgICAgIkt1bGNzb2siLCBJRENfRklORF9LRVlTLCA1LCAzNCwgOTAsIDEwLCBXU19UQUJTVE9QIHwgV1NfR1JPVVAgfCBCU19BVVRPQ0hFQ0tCT1gKICAgIENIRUNLQk9YICAgICAgICAiyXJ06WsgbmV2ZWsiLCBJRENfRklORF9WQUxVRVMsIDUsIDQ2LCA5MCwgMTAsIFdTX1RBQlNUT1AgfCBCU19BVVRPQ0hFQ0tCT1gKICAgIENIRUNLQk9YICAgICAgICAiyXJ06WsgdGFydGFsbWFrIiwgSURDX0ZJTkRfQ09OVEVOVCwgNSwgNTgsIDkwLCAxMCwgV1NfVEFCU1RPUCB8IEJTX0FVVE9DSEVDS0JPWAogICAgQ0hFQ0tCT1ggICAgICAgICJDc2FrIHRlbGplcyBzevZ2ZWciLCBJRENfRklORF9XSE9MRSwgNSwgNzAsIDkwLCAxMCwgV1NfVEFCU1RPUCB8IEJTX0FVVE9DSEVDS0JPWAogICAgREVGUFVTSEJVVFRPTiAgICJLZXJlc+lzIixJRE9LLDE3NSw1LDMwLDExLFdTX0dST1VQCiAgICBQVVNIQlVUVE9OICAgICAgIkJleuFy4XMiLElEQ0FOQ0VMLDE3NSwyMiwzMCwxMSwgV1NfR1JPVVAKRU5ECgpJRERfQURERkFWT1JJVEUgRElBTE9HIERJU0NBUkRBQkxFICAyMiwgMTcsIDIxMCwgNTUKU1RZTEUgRFNfTU9EQUxGUkFNRSB8IFdTX0NBUFRJT04gfCBXU19TWVNNRU5VCkNBUFRJT04gIktlZHZlbmMgaG96euFhZOFzYSIKRk9OVCA4LCAiTVMgU2hlbGwgRGxnIgpCRUdJTgogICAgTFRFWFQgICAgICAgICAgICJO6XY6IixJRENfU1RBVElDLDUsNSwxMTksOAogICAgRURJVFRFWFQgICAgICAgIElEQ19WQUxVRV9OQU1FLDUsMTUsMjAwLDEyLCBXU19CT1JERVIgfCBXU19UQUJTVE9QIHwgRVNfQVVUT0hTQ1JPTEwKICAgIERFRlBVU0hCVVRUT04gICAiT0siLElET0ssMTQwLDQwLDMwLDExLFdTX0dST1VQCiAgICBQVVNIQlVUVE9OICAgICAgIk3pZ3NlIixJRENBTkNFTCwxNzUsNDAsMzAsMTEsIFdTX0dST1VQCkVORAoKSUREX0RFTEZBVk9SSVRFIERJQUxPRyBESVNDQVJEQUJMRSAgMjIsIDE3LCAyMTAsIDkwClNUWUxFIERTX01PREFMRlJBTUUgfCBXU19DQVBUSU9OIHwgV1NfU1lTTUVOVQpDQVBUSU9OICJLZWR2ZW5jIHT2cmzpc2UiCkZPTlQgOCwgIk1TIFNoZWxsIERsZyIKQkVHSU4KICAgIExURVhUICAgICAgICAgICAiTul2OiIsSURDX1NUQVRJQyw1LDUsMTE5LDgKICAgIExJU1RCT1ggICAgICAgICBJRENfTkFNRV9MSVNULDUsMTUsMjAwLDUyLCBXU19CT1JERVIgfCBXU19UQUJTVE9QIHwgTEJTX1NPUlQgfCBMQlNfTk9JTlRFR1JBTEhFSUdIVCB8IFdTX1ZTQ1JPTEwKICAgIERFRlBVU0hCVVRUT04gICAiT0siLElET0ssMTQwLDczLDMwLDExLFdTX0dST1VQCiAgICBQVVNIQlVUVE9OICAgICAgIk3pZ3NlIixJRENBTkNFTCwxNzUsNzMsMzAsMTEsIFdTX0dST1VQCkVORAoKSUREX0VESVRfU1RSSU5HIERJQUxPRyBESVNDQVJEQUJMRSAgMjIsIDE3LCAyMTAsIDc1ClNUWUxFIERTX01PREFMRlJBTUUgfCBXU19DQVBUSU9OIHwgV1NfU1lTTUVOVQpDQVBUSU9OICJTenRyaW5nIHN6ZXJrZXN6dOlzZSIKRk9OVCA4LCAiTVMgU2hlbGwgRGxnIgpCRUdJTgogICAgTFRFWFQgICAgICAgICAgICLJcnTpayBuZXZlOiIsSURDX1NUQVRJQyw1LDUsMTE5LDgKICAgIEVESVRURVhUICAgICAgICBJRENfVkFMVUVfTkFNRSw1LDE1LDIwMCwxMiwgV1NfQk9SREVSIHwgV1NfVEFCU1RPUCB8IEVTX0FVVE9IU0NST0xMfCBXU19ESVNBQkxFRAogICAgTFRFWFQgICAgICAgICAgICLJcnTpayBhZGF0OiIsSURDX1NUQVRJQyw1LDMwLDExOSw4CiAgICBFRElUVEVYVCAgICAgICAgSURDX1ZBTFVFX0RBVEEsNSw0MCwyMDAsMTIsIFdTX0JPUkRFUiB8IFdTX1RBQlNUT1AgfCBFU19BVVRPSFNDUk9MTAogICAgREVGUFVTSEJVVFRPTiAgICJPSyIsSURPSywxNDAsNjAsMzAsMTEsV1NfR1JPVVAKICAgIFBVU0hCVVRUT04gICAiTelnc2UiLElEQ0FOQ0VMLDE3NSw2MCwzMCwxMSxXU19HUk9VUApFTkQKCklERF9FRElUX0RXT1JEIERJQUxPRyBESVNDQVJEQUJMRSAgMjIsIDE3LCAyMTAsIDEwMApTVFlMRSBEU19NT0RBTEZSQU1FIHwgRFNfTk9JRExFTVNHIHwgV1NfQ0FQVElPTiB8IFdTX1NZU01FTlUKQ0FQVElPTiAiRFdPUkQgc3plcmtlc3p06XNlIgpGT05UIDgsICJNUyBTaGVsbCBEbGciCkJFR0lOCiAgICBMVEVYVCAgICAgICAgICAgIslydOlrIG5ldmU6IixJRENfU1RBVElDLDUsNSwxMTksOAogICAgRURJVFRFWFQgICAgICAgIElEQ19WQUxVRV9OQU1FLDUsMTUsMjAwLDEyLCBXU19CT1JERVIgfCBXU19UQUJTVE9QIHwgRVNfQVVUT0hTQ1JPTEx8IFdTX0RJU0FCTEVECiAgICBMVEVYVCAgICAgICAgICAgIslydOlrIGFkYXQ6IixJRENfU1RBVElDLDUsMzAsOTAsOAogICAgRURJVFRFWFQgICAgICAgIElEQ19WQUxVRV9EQVRBLDUsNDAsOTAsMTIsIFdTX0JPUkRFUiB8IFdTX1RBQlNUT1AKICAgIEdST1VQQk9YICAgICAgICAiQWxhcCIsIElEQ19EV09SRF9CQVNFLCAxMjAsIDMwLCA4NSwgMzcsIEJTX0dST1VQQk9YCiAgICBBVVRPUkFESU9CVVRUT04gIkhleGFkZWNpbeFsaXMiLCBJRENfRFdPUkRfSEVYLCAxMzAsIDQwLCA2MCwgMTAsIFdTX1RBQlNUT1AKICAgIEFVVE9SQURJT0JVVFRPTiAiRGVjaW3hbGlzIiwgSURDX0RXT1JEX0RFQywgMTMwLCA1MiwgNjAsIDEwLCBXU19UQUJTVE9QCiAgICBERUZQVVNIQlVUVE9OICAgIk9LIixJRE9LLDE0MCw4MCwzMCwxMSxXU19HUk9VUAogICAgUFVTSEJVVFRPTiAgICJN6WdzZSIsSURDQU5DRUwsMTc1LDgwLDMwLDExLFdTX0dST1VQCkVORAoKSUREX0VESVRfQklOQVJZIERJQUxPRyBESVNDQVJEQUJMRSAgMjIsIDE3LCAyMTAsIDEwMApTVFlMRSBEU19NT0RBTEZSQU1FIHwgRFNfTk9JRExFTVNHIHwgV1NfQ0FQVElPTiB8IFdTX1NZU01FTlUKQ0FQVElPTiAiQmlu4XJpcyBzemVya2VzenTpc2UiCkZPTlQgOCwgIk1TIFNoZWxsIERsZyIKQkVHSU4KICAgIExURVhUICAgICAgICAgICAiyXJ06WsgbmV2ZToiLElEQ19TVEFUSUMsNSw1LDExOSw4CiAgICBFRElUVEVYVCAgICAgICAgSURDX1ZBTFVFX05BTUUsNSwxNSwyMDAsMTIsIFdTX0JPUkRFUiB8IFdTX1RBQlNUT1AgfCBFU19BVVRPSFNDUk9MTHwgV1NfRElTQUJMRUQKICAgIExURVhUICAgICAgICAgICAiyXJ06WsgYWRhdDoiLElEQ19TVEFUSUMsNSwzMCw5MCw4CiAgICBDT05UUk9MICAgICAgICAgIiIsSURDX1ZBTFVFX0RBVEEsIkhleEVkaXQiLFdTX1RBQlNUT1AsNCw0MCwxNjAsNDAKICAgIERFRlBVU0hCVVRUT04gICAiT0siLElET0ssMTQwLDgwLDMwLDExLFdTX0dST1VQCiAgICBQVVNIQlVUVE9OICAgIk3pZ3NlIixJRENBTkNFTCwxNzUsODAsMzAsMTEsV1NfR1JPVVAKRU5ECgovKgogKiBTdHJpbmcgVGFibGUKICovCgpTVFJJTkdUQUJMRSBESVNDQVJEQUJMRQpCRUdJTgogICAgSURTX0xJU1RfQ09MVU1OX05BTUUgICAgIk7pdiIKICAgIElEU19MSVNUX0NPTFVNTl9UWVBFICAgICJU7XB1cyIKICAgIElEU19MSVNUX0NPTFVNTl9EQVRBICAgICJBZGF0IgpFTkQKClNUUklOR1RBQkxFIERJU0NBUkRBQkxFCkJFR0lOCiAgICBJRFNfQVBQX1RJVExFICAgICAgICAgICAiUmVnaXN6dHLhY2nzcyBhZGF0YuF6aXMgc3plcmtlc3p09SIKICAgIElEQ19SRUdFRElUICAgICAgICAgICAgICJSRUdFRElUIgogICAgSURDX1JFR0VESVRfRlJBTUUgICAgICAgIlJFR0VESVRfRlJBTUUiCkVORAoKU1RSSU5HVEFCTEUgRElTQ0FSREFCTEUKQkVHSU4KICAgIElEX1JFR0lTVFJZX01FTlUgICAgICAgICJQYXJhbmNzb2thdCB0YXJ0YWxtYXogYXogZWfpc3ogcmVnaXN6dHLhY2nzcyBhZGF0YuF6aXNzYWwgdPZydOlu9SBtdW5r4WhveiIKICAgIElEX0VESVRfTUVOVSAgICAgICAgICAgICJQYXJhbmNzb2thdCB0YXJ0YWxtYXogYXog6XJ06Wsg6XMga3VsY3NzemVya2VzenTpc2hleiIKICAgIElEX1ZJRVdfTUVOVSAgICAgICAgICAgICJQYXJhbmNzb2thdCB0YXJ0YWxtYXogYSByZWdpc3p0cuFjafNzIGFkYXRi4XppcyBhYmxhayB0ZXN0cmVzemFi4XPhdmFsIGthcGNzb2xhdGJhbiIKICAgIElEX0ZBVk9SSVRFU19NRU5VICAgICAgICJQYXJhbmNzb2thdCB0YXJ0YWxtYXogYSBneWFrcmFuIGhvenrhZulydCBrdWxjc29raG96IgogICAgSURfSEVMUF9NRU5VICAgICAgICAgICAgIlBhcmFuY3Nva2F0IHRhcnRhbG1heiBhIFJlZ2lzenRy4WNp83MgYWRhdGLhemlzIHN6ZXJrZXN6dPUgc/pn82rhbmFrIOlzIGluZm9ybeFjafNq4W5hayBtZWdqZWxlbu106XPpaGV6IgogICAgSURfRURJVF9ORVdfTUVOVSAgICAgICAgIlBhcmFuY3Nva2F0IHRhcnRhbG1heiD6aiBrdWxjc29rIOlzIOlydOlrZWsgbOl0cmVob3rhc+Fob3oiCkVORAoKU1RSSU5HVEFCTEUgRElTQ0FSREFCTEUKQkVHSU4KICAgIElEX0VESVRfTU9ESUZZICAgICAgICAgICJN82Rvc+10amEgZWd5IOlydOlrIGFkYXThdCIKICAgIElEX0VESVRfTkVXX0tFWSAgICAgICAgICJIb3p64WFkIGVneSD6aiBrdWxjc290IgogICAgSURfRURJVF9ORVdfU1RSSU5HVkFMVUUgIkhvenrhYWQgZWd5IPpqIHN6dHJpbmcg6XJ06WtldCIKICAgIElEX0VESVRfTkVXX0JJTkFSWVZBTFVFICJIb3p64WFkIGVneSD6aiBiaW7hcmlzIOlydOlrZXQiCiAgICBJRF9FRElUX05FV19EV09SRFZBTFVFICAiSG96euFhZCBlZ3kg+mogZHVwbGFzevMg6XJ06WtldCIKICAgIElEX1JFR0lTVFJZX0lNUE9SVFJFR0lTVFJZRklMRSAiRWd5IHN69nZlZ2bhamx0IGltcG9ydOFsIGEgcmVnaXN6dHLhY2nzcyBhZGF0YuF6aXNiYSIKICAgIElEX1JFR0lTVFJZX0VYUE9SVFJFR0lTVFJZRklMRQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIkF6IGVn6XN6IHJlZ2lzenRy4WNp83MgYWRhdGLhemlzdCBraWV4cG9ydOFsamEgZWd5IHN69nZlZ2bhamxiYSIKICAgIElEX1JFR0lTVFJZX0NPTk5FQ1RORVRXT1JLUkVHSVNUUlkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICJLYXBjc29s82RpayBlZ3kgdOF2b2xpIHN64W3tdPNn6XAgcmVnaXN6dHLhY2nzcyBhZGF0YuF6aXPhaG96IgogICAgSURfUkVHSVNUUllfRElTQ09OTkVDVE5FVFdPUktSRUdJU1RSWQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIkxla2FwY3NvbPNkaWsgZWd5IHThdm9saSBzeuFt7XTzZ+lwIHJlZ2lzenRy4WNp83MgYWRhdGLhemlz4XLzbCIKICAgIElEX1JFR0lTVFJZX1BSSU5UICAgICAgICJLaW55b210YXRqYSBheiBlZ+lzeiByZWdpc3p0cuFjafNzIGFkYXRi4Xppc3QsIHZhZ3kgYW5uYWsgZWd5IHLpc3rpdCIKLyogICAgSURfSEVMUF9IRUxQVE9QSUNTICAgICAgIk1lZ255aXRqYSBhIFJlZ2lzenRy4WNp83MgYWRhdGLhemlzIHN6ZXJrZXN6dPUgc/pn82rhdCIgKi8KSURfSEVMUF9BQk9VVCAgICAgICAgICAgIk1lZ2plbGVu7XRpIGEgcHJvZ3JhbSBpbmZvcm3hY2nza2F0LCB2ZXJ6afNzeuFtb3QsIOlzIGEgc3plcnr1aSBqb2dvdCIKRU5ECgpTVFJJTkdUQUJMRSBESVNDQVJEQUJMRQpCRUdJTgogICAgSURfUkVHSVNUUllfRVhJVCAgICAgICAgIktpbOlwIGEgUmVnaXN6dHLhY2nzcyBhZGF0YuF6aXMgc3plcmtlc3p09WL1bCIKICAgIElEX0ZBVk9SSVRFU19BRERUT0ZBVk9SSVRFUyAiS3VsY3Nva2F0IGFkIGhvenrhIGEga2VkdmVuY2VrIGxpc3ThaG96IgogICAgSURfRkFWT1JJVEVTX1JFTU9WRUZBVk9SSVRFICJLdWxjc29rYXQgdPZy9mwgYSBrZWR2ZW5jZWsgbGlzdOFi82wiCiAgICBJRF9WSUVXX1NUQVRVU0JBUiAgICAgICAiTWVnamVsZW7tdGkgdmFneSBlbHT8bnRldGkgYXog4WxsYXBvdHNvcnQiCiAgICBJRF9WSUVXX1NQTElUICAgICAgICAgICAiTWVnduFsdG96dGF0amEgYSBr6XQgYWJsYWty6XN6IHBpeu1jafNq4XQiCiAgICBJRF9WSUVXX1JFRlJFU0ggICAgICAgICAiRnJpc3PtdGkgYXogYWJsYWtvdCIKICAgIElEX0VESVRfREVMRVRFICAgICAgICAgICJU9nJsaSBhIGtpamVs9mzpc3QiCiAgICBJRF9FRElUX1JFTkFNRSAgICAgICAgICAiwXRuZXZlemkgYSBraWplbPZs6XN0IgogICAgSURfRURJVF9DT1BZS0VZTkFNRSAgICAgIkEga2lqZWz2bHQga3VsY3MgbmV26XQgbeFzb2xqYSBhIHbhZ/NsYXByYSIKICAgIElEX0VESVRfRklORCAgICAgICAgICAgICJNZWdrZXJlcyBlZ3kgc3r2dmVnZXMgc3p0cmluZ2V0IGVneSBrdWxjc2Jhbiwg6XJ06WtiZW4sIHZhZ3kgYWRhdGJhbiIKICAgIElEX0VESVRfRklORE5FWFQgICAgICAgICJLZXJlc2kgYSBr9nZldGtlevUgZWz1Zm9yZHVs4XN0IGF6IGVs9Xr1IGtlcmVz6XN09Wwga2V6ZHZlIgpFTkQKClNUUklOR1RBQkxFIERJU0NBUkRBQkxFCkJFR0lOCiAgICBJRFNfRVJST1IJCSAgICAiSGliYSIKICAgIElEU19CQURfS0VZCQkgICAgIk5lbSB0dWRvbSBsZWvpcm5pIGEga3VsY3NvdDogJyVzJyIKICAgIElEU19CQURfVkFMVUUgICAgICAgICAgICJOZW0gdHVkb20gbGVr6XJuaSBheiDpcnTpa2V0OiAnJXMnIgogICAgSURTX1VOU1VQUE9SVEVEX1RZUEUgICAgIk5lbSB0dWRvbSBlenQgYSB07XB1c/oga3VsY3NvdCBzemVya2VzenRlbmk6ICglbGQpIgogICAgSURTX1RPT19CSUdfVkFMVUUgICAgICAgIkF6IOlydOlrIHT6bCBuYWd5OiAoJWxkKSIKICAgIElEU19ERUxFVEVfQk9YX1RJVExFICAgICLJcnTpa3T2cmzpcyBq83bhaGFneeFzYSIKICAgIElEU19ERUxFVEVfQk9YX1RFWFQgICAgICJCaXp0b3MgaG9neSB09nL2bG5pIHN6ZXJldG7pIGEoeikgJyVzJyBrdWxjc290PyIKICAgIElEU19ORVdLRVkgICAgICAgICAgICAgICLaaiBrdWxjcyAjJWQiCiAgICBJRFNfTkVXVkFMVUUgICAgICAgICAgICAi2mog6XJ06WsgIyVkIgogICAgSURTX05PVEZPVU5EICAgICAgICAgICAgIkEoeikgJyVzJyBrZXJlc+lzaSBraWZlamV66XMgbmVtIHRhbOFsaGF08yIKRU5ECgovKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCgovKgogKiBURVhUSU5DTFVERQogKi8KCjEgVEVYVElOQ0xVREUgRElTQ0FSREFCTEUKQkVHSU4KICAgICJyZXNvdXJjZS5oXDAiCkVORAoKCgovKgogKiBTdHJpbmcgVGFibGUKICovCgovKgogKlNUUklOR1RBQkxFIERJU0NBUkRBQkxFCiAqQkVHSU4KICogICAgSURfSEVMUF9IRUxQVE9QSUNTICAgICAgIk1lZ255aXRqYSBhIFJlZ2lzenRy4WNp83MgYWRhdGLhemlzIHN6ZXJrZXN6dPUgc/pn82rhdC4iCiAqICAgIElEX0hFTFBfQUJPVVQgICAgICAgICAgICJNZWdqZWxlbu10aSBhIHByb2dyYW0gaW5mb3Jt4WNp82thdCwgdmVyemnzc3rhbW90LCDpcyBhIHN6ZXJ69Wkgam9nb3QuIgogKkVORAogKi8KCi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8K