LyoKICogUmVnZWRpdCByZXNvdXJjZXMKICoKICogQ29weXJpZ2h0IDIwMDYgQW5kcmFzIEtvdmFjcwogKgogKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCiAqIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgogKgogKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKICogTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KICoKICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwogKiBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCiAqIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EKICovCgovKiBIdW5nYXJpYW4gUmVzb3VyY2VzICovCgpMQU5HVUFHRSBMQU5HX0hVTkdBUklBTiwgU1VCTEFOR19ORVVUUkFMCgpJRFJfUkVHRURJVF9NRU5VIE1FTlUgRElTQ0FSREFCTEUKQkVHSU4KICAgIFBPUFVQICImUmVnaXN6dHLhY2nzcyBBZGF0YuF6aXMiCiAgICBCRUdJTgogICAgICAgIE1FTlVJVEVNICJSZWdpc3p0cuFjafNzIGFkYXRi4XppcyBm4WpsICZpbXBvcnThbOFzYS4uLiIsICAgIElEX1JFR0lTVFJZX0lNUE9SVFJFR0lTVFJZRklMRQogICAgICAgIE1FTlVJVEVNICJSZWdpc3p0cuFjafNzIGFkYXRi4XppcyBm4WpsICZleHBvcnThbOFzYS4uLiIsICAgIElEX1JFR0lTVFJZX0VYUE9SVFJFR0lTVFJZRklMRQogICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgIE1FTlVJVEVNICImQ3NhdGxha2964XMgaOFs83phdGkgcmVnaXN6dHLhY2nzcyBhZGF0YuF6aXNob3ouLi4iLCBJRF9SRUdJU1RSWV9DT05ORUNUTkVUV09SS1JFR0lTVFJZLCBHUkFZRUQKICAgICAgICBNRU5VSVRFTSAiTGV24Wxhc3p04XMgYSBo4WzzemF0aSBhJmRhdGLhemlzcvNsLi4uIiwgSURfUkVHSVNUUllfRElTQ09OTkVDVE5FVFdPUktSRUdJU1RSWSwgR1JBWUVECiAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgTUVOVUlURU0gIiZOeW9tdGF04XNcdEN0cmwrUCIsICAgICAgICAgICAgICBJRF9SRUdJU1RSWV9QUklOVCwgR1JBWUVECiAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgTUVOVUlURU0gIktpJmzpcOlzIiwgICAgICAgICAgICAgICAgICAgICAgIElEX1JFR0lTVFJZX0VYSVQKICAgIEVORAogICAgUE9QVVAgIlN6JmVya2VzenTpcyIKICAgIEJFR0lOCiAgICAgICAgTUVOVUlURU0gIiZN82Rvc+104XMiLCAgICAgICAgICAgICAgICAgICAgIElEX0VESVRfTU9ESUZZCiAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgUE9QVVAgIibaaiIKICAgICAgICBCRUdJTgogICAgICAgICAgICBNRU5VSVRFTSAiJkt1bGNzIiwgICAgICAgICAgICAgICAgICAgICAgICBJRF9FRElUX05FV19LRVkKICAgICAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgICAgIE1FTlVJVEVNICImU3p0cmluZyDpcnTpayIsICAgICAgICAgICAgICAgSURfRURJVF9ORVdfU1RSSU5HVkFMVUUKICAgICAgICAgICAgTUVOVUlURU0gIiZCaW7hcmlzIOlydOlrIiwgICAgICAgICAgICAgICBJRF9FRElUX05FV19CSU5BUllWQUxVRQogICAgICAgICAgICBNRU5VSVRFTSAiJkRXT1JEIOlydOlrIiwgICAgICAgICAgICAgICAgSURfRURJVF9ORVdfRFdPUkRWQUxVRQogICAgICAgIEVORAogICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgIE1FTlVJVEVNICImVPZybOlzXHREZWwiLCAgICAgICAgICAgICAgICBJRF9FRElUX0RFTEVURQogICAgICAgIE1FTlVJVEVNICImwXRuZXZleulzXHRGMiIsICAgICAgICAgICAgICAgICBJRF9FRElUX1JFTkFNRQogICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgIE1FTlVJVEVNICJLdWwmY3Nu6XYgbeFzb2zhc2EiLCAgICAgICAgICAgICAgSURfRURJVF9DT1BZS0VZTkFNRQogICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgIE1FTlVJVEVNICImS2VyZXPpc1x0Q3RybCtGIiwgICAgICAgICAgICAgICBJRF9FRElUX0ZJTkQsIEdSQVlFRAogICAgICAgIE1FTlVJVEVNICJLJvZ2ZXRrZXr1IGtlcmVz6XNlXHRGMyIsICAgICAgICAgICAgICBJRF9FRElUX0ZJTkRORVhULCBHUkFZRUQKICAgIEVORAogICAgUE9QVVAgIiZO6XpldCIKICAgIEJFR0lOCiAgICAgICAgTUVOVUlURU0gIsFsbGEmcG90c29yIiwgICAgICAgICAgICAgICAgIElEX1ZJRVdfU1RBVFVTQkFSCiAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgTUVOVUlURU0gIlN66XR24SZsYXN6dOFzIiwgICAgICAgICAgICAgICAgICAgICAgSURfVklFV19TUExJVAogICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgIE1FTlVJVEVNICJGJnJpc3PtdOlzXHRGNSIsICAgICAgICAgICAgICAgIElEX1ZJRVdfUkVGUkVTSAogICAgRU5ECiAgICBQT1BVUCAiS2VkJnZlbmNlayIKICAgIEJFR0lOCiAgICAgICAgTUVOVUlURU0gIkhvenrhJmFk4XMgYSBrZWR2ZW5jZWtoZXoiLCAgICAgICAgICBJRF9GQVZPUklURVNfQUREVE9GQVZPUklURVMKICAgICAgICBNRU5VSVRFTSAiVPYmcmzpcyBhIGtlZHZlbmNla2L1bCIsICAgICAgICAgICBJRF9GQVZPUklURVNfUkVNT1ZFRkFWT1JJVEUKICAgIEVORAogICAgUE9QVVAgIiZT+mfzIgogICAgQkVHSU4KICAgICAgICBNRU5VSVRFTSAiUyb6Z/MgdOltYWv2cvZrXHRGMSIsICAgICAgICAgICAgSURfSEVMUF9IRUxQVE9QSUNTCiAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgTUVOVUlURU0gIlJlZ2lzenRy4WNp83MgJmFkYXRi4XppcyBzemVya2VzenT1IG7pdmplZ3llIiwgICAgICBJRF9IRUxQX0FCT1VUCiAgICBFTkQKRU5ECgovKgogKiBEaWFsb2cKICovCgpJRERfRklORCBESUFMT0cgRElTQ0FSREFCTEUgIDIyLCAxNywgMjEwLCA4NQpTVFlMRSBEU19NT0RBTEZSQU1FIHwgV1NfQ0FQVElPTiB8IFdTX1NZU01FTlUKQ0FQVElPTiAiS2VyZXPpcyIKRk9OVCA4LCAiTVMgU2hlbGwgRGxnIgpCRUdJTgogICAgTFRFWFQgICAgICAgICAgICJLZXJlc+lzOiIsSURDX1NUQVRJQyw1LDcsMTE5LDgKICAgIEVESVRURVhUICAgICAgICBJRENfVkFMVUVfTkFNRSw0MCw1LDEyNSwxMiwgV1NfQk9SREVSIHwgV1NfVEFCU1RPUCB8IEVTX0FVVE9IU0NST0xMCiAgICBMVEVYVCAgICAgICAgICAgIktlcmVz6XMgaXR0OiIsSURDX1NUQVRJQyw1LCAyMiwgMTE5LCA4CiAgICBDSEVDS0JPWCAgICAgICAgIkt1bGNzb2siLCBJRENfRklORF9LRVlTLCA1LCAzNCwgOTAsIDEwLCBXU19UQUJTVE9QIHwgV1NfR1JPVVAgfCBCU19BVVRPQ0hFQ0tCT1gKICAgIENIRUNLQk9YICAgICAgICAiyXJ06WsgbmV2ZWsiLCBJRENfRklORF9WQUxVRVMsIDUsIDQ2LCA5MCwgMTAsIFdTX1RBQlNUT1AgfCBCU19BVVRPQ0hFQ0tCT1gKICAgIENIRUNLQk9YICAgICAgICAiyXJ06WsgdGFydGFsbWFrIiwgSURDX0ZJTkRfQ09OVEVOVCwgNSwgNTgsIDkwLCAxMCwgV1NfVEFCU1RPUCB8IEJTX0FVVE9DSEVDS0JPWAogICAgQ0hFQ0tCT1ggICAgICAgICJDc2FrIHRlbGplcyBzevZ2ZWciLCBJRENfRklORF9XSE9MRSwgNSwgNzAsIDkwLCAxMCwgV1NfVEFCU1RPUCB8IEJTX0FVVE9DSEVDS0JPWAogICAgREVGUFVTSEJVVFRPTiAgICJLZXJlc+lzIixJRE9LLDE3NSw1LDMwLDExLFdTX0dST1VQCiAgICBQVVNIQlVUVE9OICAgICAgIkJleuFy4XMiLElEQ0FOQ0VMLDE3NSwyMiwzMCwxMSwgV1NfR1JPVVAKRU5ECgpJRERfQURERkFWT1JJVEUgRElBTE9HIERJU0NBUkRBQkxFICAyMiwgMTcsIDIxMCwgNTUKU1RZTEUgRFNfTU9EQUxGUkFNRSB8IFdTX0NBUFRJT04gfCBXU19TWVNNRU5VCkNBUFRJT04gIktlZHZlbmMgaG96euFhZOFzYSIKRk9OVCA4LCAiTVMgU2hlbGwgRGxnIgpCRUdJTgogICAgTFRFWFQgICAgICAgICAgICJO6XY6IixJRENfU1RBVElDLDUsNSwxMTksOAogICAgRURJVFRFWFQgICAgICAgIElEQ19WQUxVRV9OQU1FLDUsMTUsMjAwLDEyLCBXU19CT1JERVIgfCBXU19UQUJTVE9QIHwgRVNfQVVUT0hTQ1JPTEwKICAgIERFRlBVU0hCVVRUT04gICAiT0siLElET0ssMTQwLDQwLDMwLDExLFdTX0dST1VQCiAgICBQVVNIQlVUVE9OICAgICAgIk3pZ3NlIixJRENBTkNFTCwxNzUsNDAsMzAsMTEsIFdTX0dST1VQCkVORAoKSUREX0RFTEZBVk9SSVRFIERJQUxPRyBESVNDQVJEQUJMRSAgMjIsIDE3LCAyMTAsIDkwClNUWUxFIERTX01PREFMRlJBTUUgfCBXU19DQVBUSU9OIHwgV1NfU1lTTUVOVQpDQVBUSU9OICJLZWR2ZW5jIHT2cmzpc2UiCkZPTlQgOCwgIk1TIFNoZWxsIERsZyIKQkVHSU4KICAgIExURVhUICAgICAgICAgICAiTul2OiIsSURDX1NUQVRJQyw1LDUsMTE5LDgKICAgIExJU1RCT1ggICAgICAgICBJRENfTkFNRV9MSVNULDUsMTUsMjAwLDUyLCBXU19CT1JERVIgfCBXU19UQUJTVE9QIHwgTEJTX1NPUlQgfCBMQlNfTk9JTlRFR1JBTEhFSUdIVCB8IFdTX1ZTQ1JPTEwKICAgIERFRlBVU0hCVVRUT04gICAiT0siLElET0ssMTQwLDczLDMwLDExLFdTX0dST1VQCiAgICBQVVNIQlVUVE9OICAgICAgIk3pZ3NlIixJRENBTkNFTCwxNzUsNzMsMzAsMTEsIFdTX0dST1VQCkVORAoKSUREX0VESVRfU1RSSU5HIERJQUxPRyBESVNDQVJEQUJMRSAgMjIsIDE3LCAyMTAsIDc1ClNUWUxFIERTX01PREFMRlJBTUUgfCBXU19DQVBUSU9OIHwgV1NfU1lTTUVOVQpDQVBUSU9OICJTenRyaW5nIHN6ZXJrZXN6dOlzZSIKRk9OVCA4LCAiTVMgU2hlbGwgRGxnIgpCRUdJTgogICAgTFRFWFQgICAgICAgICAgICLJcnTpayBuZXZlOiIsSURDX1NUQVRJQyw1LDUsMTE5LDgKICAgIEVESVRURVhUICAgICAgICBJRENfVkFMVUVfTkFNRSw1LDE1LDIwMCwxMiwgV1NfQk9SREVSIHwgV1NfVEFCU1RPUCB8IEVTX0FVVE9IU0NST0xMfCBXU19ESVNBQkxFRAogICAgTFRFWFQgICAgICAgICAgICLJcnTpayBhZGF0OiIsSURDX1NUQVRJQyw1LDMwLDExOSw4CiAgICBFRElUVEVYVCAgICAgICAgSURDX1ZBTFVFX0RBVEEsNSw0MCwyMDAsMTIsIFdTX0JPUkRFUiB8IFdTX1RBQlNUT1AgfCBFU19BVVRPSFNDUk9MTAogICAgREVGUFVTSEJVVFRPTiAgICJPSyIsSURPSywxNDAsNjAsMzAsMTEsV1NfR1JPVVAKICAgIFBVU0hCVVRUT04gICAiTelnc2UiLElEQ0FOQ0VMLDE3NSw2MCwzMCwxMSxXU19HUk9VUApFTkQKCklERF9FRElUX0RXT1JEIERJQUxPRyBESVNDQVJEQUJMRSAgMjIsIDE3LCAyMTAsIDEwMApTVFlMRSBEU19NT0RBTEZSQU1FIHwgRFNfTk9JRExFTVNHIHwgV1NfQ0FQVElPTiB8IFdTX1NZU01FTlUKQ0FQVElPTiAiRFdPUkQgc3plcmtlc3p06XNlIgpGT05UIDgsICJNUyBTaGVsbCBEbGciCkJFR0lOCiAgICBMVEVYVCAgICAgICAgICAgIslydOlrIG5ldmU6IixJRENfU1RBVElDLDUsNSwxMTksOAogICAgRURJVFRFWFQgICAgICAgIElEQ19WQUxVRV9OQU1FLDUsMTUsMjAwLDEyLCBXU19CT1JERVIgfCBXU19UQUJTVE9QIHwgRVNfQVVUT0hTQ1JPTEx8IFdTX0RJU0FCTEVECiAgICBMVEVYVCAgICAgICAgICAgIslydOlrIGFkYXQ6IixJRENfU1RBVElDLDUsMzAsOTAsOAogICAgRURJVFRFWFQgICAgICAgIElEQ19WQUxVRV9EQVRBLDUsNDAsOTAsMTIsIFdTX0JPUkRFUiB8IFdTX1RBQlNUT1AKICAgIEdST1VQQk9YICAgICAgICAiQWxhcCIsIElEQ19EV09SRF9CQVNFLCAxMjAsIDMwLCA4NSwgMzcsIEJTX0dST1VQQk9YCiAgICBBVVRPUkFESU9CVVRUT04gIkhleGFkZWNpbeFsaXMiLCBJRENfRFdPUkRfSEVYLCAxMzAsIDQwLCA2MCwgMTAsIFdTX1RBQlNUT1AKICAgIEFVVE9SQURJT0JVVFRPTiAiRGVjaW3hbGlzIiwgSURDX0RXT1JEX0RFQywgMTMwLCA1MiwgNjAsIDEwLCBXU19UQUJTVE9QCiAgICBERUZQVVNIQlVUVE9OICAgIk9LIixJRE9LLDE0MCw4MCwzMCwxMSxXU19HUk9VUAogICAgUFVTSEJVVFRPTiAgICJN6WdzZSIsSURDQU5DRUwsMTc1LDgwLDMwLDExLFdTX0dST1VQCkVORAoKSUREX0VESVRfQklOQVJZIERJQUxPRyBESVNDQVJEQUJMRSAgMjIsIDE3LCAyMTAsIDEwMApTVFlMRSBEU19NT0RBTEZSQU1FIHwgRFNfTk9JRExFTVNHIHwgV1NfQ0FQVElPTiB8IFdTX1NZU01FTlUKQ0FQVElPTiAiQmlu4XJpcyBzemVya2VzenTpc2UiCkZPTlQgOCwgIk1TIFNoZWxsIERsZyIKQkVHSU4KICAgIExURVhUICAgICAgICAgICAiyXJ06WsgbmV2ZToiLElEQ19TVEFUSUMsNSw1LDExOSw4CiAgICBFRElUVEVYVCAgICAgICAgSURDX1ZBTFVFX05BTUUsNSwxNSwyMDAsMTIsIFdTX0JPUkRFUiB8IFdTX1RBQlNUT1AgfCBFU19BVVRPSFNDUk9MTHwgV1NfRElTQUJMRUQKICAgIExURVhUICAgICAgICAgICAiyXJ06WsgYWRhdDoiLElEQ19TVEFUSUMsNSwzMCw5MCw4CiAgICBDT05UUk9MICAgICAgICAgIiIsSURDX1ZBTFVFX0RBVEEsIkhleEVkaXQiLFdTX1RBQlNUT1AsNCw0MCwxNjAsNDAKICAgIERFRlBVU0hCVVRUT04gICAiT0siLElET0ssMTQwLDgwLDMwLDExLFdTX0dST1VQCiAgICBQVVNIQlVUVE9OICAgIk3pZ3NlIixJRENBTkNFTCwxNzUsODAsMzAsMTEsV1NfR1JPVVAKRU5ECgovKgogKiBTdHJpbmcgVGFibGUKICovCgpTVFJJTkdUQUJMRSBESVNDQVJEQUJMRQpCRUdJTgogICAgSURTX0xJU1RfQ09MVU1OX05BTUUgICAgIk7pdiIKICAgIElEU19MSVNUX0NPTFVNTl9UWVBFICAgICJU7XB1cyIKICAgIElEU19MSVNUX0NPTFVNTl9EQVRBICAgICJBZGF0IgpFTkQKClNUUklOR1RBQkxFIERJU0NBUkRBQkxFCkJFR0lOCiAgICBJRFNfQVBQX1RJVExFICAgICAgICAgICAiUmVnaXN6dHLhY2nzcyBhZGF0YuF6aXMgc3plcmtlc3p09SIKRU5ECgpTVFJJTkdUQUJMRSBESVNDQVJEQUJMRQpCRUdJTgogICAgSURfUkVHSVNUUllfTUVOVSAgICAgICAgIlBhcmFuY3Nva2F0IHRhcnRhbG1heiBheiBlZ+lzeiByZWdpc3p0cuFjafNzIGFkYXRi4Xppc3NhbCB09nJ06W71IG11bmvhaG96IgogICAgSURfRURJVF9NRU5VICAgICAgICAgICAgIlBhcmFuY3Nva2F0IHRhcnRhbG1heiBheiDpcnTpayDpcyBrdWxjc3N6ZXJrZXN6dOlzaGV6IgogICAgSURfVklFV19NRU5VICAgICAgICAgICAgIlBhcmFuY3Nva2F0IHRhcnRhbG1heiBhIHJlZ2lzenRy4WNp83MgYWRhdGLhemlzIGFibGFrIHRlc3RyZXN6YWLhc+F2YWwga2FwY3NvbGF0YmFuIgogICAgSURfRkFWT1JJVEVTX01FTlUgICAgICAgIlBhcmFuY3Nva2F0IHRhcnRhbG1heiBhIGd5YWtyYW4gaG96euFm6XJ0IGt1bGNzb2tob3oiCiAgICBJRF9IRUxQX01FTlUgICAgICAgICAgICAiUGFyYW5jc29rYXQgdGFydGFsbWF6IGEgUmVnaXN6dHLhY2nzcyBhZGF0YuF6aXMgc3plcmtlc3p09SBz+mfzauFuYWsg6XMgaW5mb3Jt4WNp82rhbmFrIG1lZ2plbGVu7XTpc+loZXoiCiAgICBJRF9FRElUX05FV19NRU5VICAgICAgICAiUGFyYW5jc29rYXQgdGFydGFsbWF6IPpqIGt1bGNzb2sg6XMg6XJ06WtlayBs6XRyZWhveuFz4WhveiIKRU5ECgpTVFJJTkdUQUJMRSBESVNDQVJEQUJMRQpCRUdJTgogICAgSURfRURJVF9NT0RJRlkgICAgICAgICAgIk3zZG9z7XRqYSBlZ3kg6XJ06WsgYWRhdOF0IgogICAgSURfRURJVF9ORVdfS0VZICAgICAgICAgIkhvenrhYWQgZWd5IPpqIGt1bGNzb3QiCiAgICBJRF9FRElUX05FV19TVFJJTkdWQUxVRSAiSG96euFhZCBlZ3kg+mogc3p0cmluZyDpcnTpa2V0IgogICAgSURfRURJVF9ORVdfQklOQVJZVkFMVUUgIkhvenrhYWQgZWd5IPpqIGJpbuFyaXMg6XJ06WtldCIKICAgIElEX0VESVRfTkVXX0RXT1JEVkFMVUUgICJIb3p64WFkIGVneSD6aiBkdXBsYXN68yDpcnTpa2V0IgogICAgSURfUkVHSVNUUllfSU1QT1JUUkVHSVNUUllGSUxFICJFZ3kgc3r2dmVnZuFqbHQgaW1wb3J04WwgYSByZWdpc3p0cuFjafNzIGFkYXRi4Xppc2JhIgogICAgSURfUkVHSVNUUllfRVhQT1JUUkVHSVNUUllGSUxFCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQXogZWfpc3ogcmVnaXN6dHLhY2nzcyBhZGF0YuF6aXN0IGtpZXhwb3J04WxqYSBlZ3kgc3r2dmVnZuFqbGJhIgogICAgSURfUkVHSVNUUllfQ09OTkVDVE5FVFdPUktSRUdJU1RSWQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIkthcGNzb2zzZGlrIGVneSB04XZvbGkgc3rhbe1082fpcCByZWdpc3p0cuFjafNzIGFkYXRi4Xppc+Fob3oiCiAgICBJRF9SRUdJU1RSWV9ESVNDT05ORUNUTkVUV09SS1JFR0lTVFJZCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTGVrYXBjc29s82RpayBlZ3kgdOF2b2xpIHN64W3tdPNn6XAgcmVnaXN6dHLhY2nzcyBhZGF0YuF6aXPhcvNsIgogICAgSURfUkVHSVNUUllfUFJJTlQgICAgICAgIktpbnlvbXRhdGphIGF6IGVn6XN6IHJlZ2lzenRy4WNp83MgYWRhdGLhemlzdCwgdmFneSBhbm5hayBlZ3kgculzeul0IgovKiAgICBJRF9IRUxQX0hFTFBUT1BJQ1MgICAgICAiTWVnbnlpdGphIGEgUmVnaXN6dHLhY2nzcyBhZGF0YuF6aXMgc3plcmtlc3p09SBz+mfzauF0IiAqLwpJRF9IRUxQX0FCT1VUICAgICAgICAgICAiTWVnamVsZW7tdGkgYSBwcm9ncmFtIGluZm9ybeFjafNrYXQsIHZlcnpp83N64W1vdCwg6XMgYSBzemVyevVpIGpvZ290IgpFTkQKClNUUklOR1RBQkxFIERJU0NBUkRBQkxFCkJFR0lOCiAgICBJRF9SRUdJU1RSWV9FWElUICAgICAgICAiS2ls6XAgYSBSZWdpc3p0cuFjafNzIGFkYXRi4XppcyBzemVya2VzenT1YvVsIgogICAgSURfRkFWT1JJVEVTX0FERFRPRkFWT1JJVEVTICJLdWxjc29rYXQgYWQgaG96euEgYSBrZWR2ZW5jZWsgbGlzdOFob3oiCiAgICBJRF9GQVZPUklURVNfUkVNT1ZFRkFWT1JJVEUgIkt1bGNzb2thdCB09nL2bCBhIGtlZHZlbmNlayBsaXN04WLzbCIKICAgIElEX1ZJRVdfU1RBVFVTQkFSICAgICAgICJNZWdqZWxlbu10aSB2YWd5IGVsdPxudGV0aSBheiDhbGxhcG90c29ydCIKICAgIElEX1ZJRVdfU1BMSVQgICAgICAgICAgICJNZWd24Wx0b3p0YXRqYSBhIGvpdCBhYmxha3Lpc3ogcGl67WNp82rhdCIKICAgIElEX1ZJRVdfUkVGUkVTSCAgICAgICAgICJGcmlzc+10aSBheiBhYmxha290IgogICAgSURfRURJVF9ERUxFVEUgICAgICAgICAgIlT2cmxpIGEga2lqZWz2bOlzdCIKICAgIElEX0VESVRfUkVOQU1FICAgICAgICAgICLBdG5ldmV6aSBhIGtpamVs9mzpc3QiCiAgICBJRF9FRElUX0NPUFlLRVlOQU1FICAgICAiQSBraWplbPZsdCBrdWxjcyBuZXbpdCBt4XNvbGphIGEgduFn82xhcHJhIgogICAgSURfRURJVF9GSU5EICAgICAgICAgICAgIk1lZ2tlcmVzIGVneSBzevZ2ZWdlcyBzenRyaW5nZXQgZWd5IGt1bGNzYmFuLCDpcnTpa2JlbiwgdmFneSBhZGF0YmFuIgogICAgSURfRURJVF9GSU5ETkVYVCAgICAgICAgIktlcmVzaSBhIGv2dmV0a2V69SBlbPVmb3JkdWzhc3QgYXogZWz1evUga2VyZXPpc3T1bCBrZXpkdmUiCkVORAoKU1RSSU5HVEFCTEUgRElTQ0FSREFCTEUKQkVHSU4KICAgIElEU19FUlJPUgkJICAgICJIaWJhIgogICAgSURTX0JBRF9LRVkJCSAgICAiTmVtIHR1ZG9tIGxla+lybmkgYSBrdWxjc290OiAnJXMnIgogICAgSURTX0JBRF9WQUxVRSAgICAgICAgICAgIk5lbSB0dWRvbSBsZWvpcm5pIGF6IOlydOlrZXQ6ICclcyciCiAgICBJRFNfVU5TVVBQT1JURURfVFlQRSAgICAiTmVtIHR1ZG9tIGV6dCBhIHTtcHVz+iBrdWxjc290IHN6ZXJrZXN6dGVuaTogKCVsZCkiCiAgICBJRFNfVE9PX0JJR19WQUxVRSAgICAgICAiQXog6XJ06WsgdPpsIG5hZ3k6ICglbGQpIgogICAgSURTX0RFTEVURV9CT1hfVElUTEUgICAgIslydOlrdPZybOlzIGrzduFoYWd54XNhIgogICAgSURTX0RFTEVURV9CT1hfVEVYVCAgICAgIkJpenRvcyBob2d5IHT2cvZsbmkgc3plcmV0bukgYSh6KSAnJXMnIGt1bGNzb3Q/IgogICAgSURTX05FV0tFWSAgICAgICAgICAgICAgItpqIGt1bGNzICMlZCIKICAgIElEU19ORVdWQUxVRSAgICAgICAgICAgICLaaiDpcnTpayAjJWQiCiAgICBJRFNfTk9URk9VTkQgICAgICAgICAgICAiQSh6KSAnJXMnIGtlcmVz6XNpIGtpZmVqZXrpcyBuZW0gdGFs4WxoYXTzIgpFTkQKCi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KCi8qCiAqIFRFWFRJTkNMVURFCiAqLwoKMSBURVhUSU5DTFVERSBESVNDQVJEQUJMRQpCRUdJTgogICAgInJlc291cmNlLmhcMCIKRU5ECgoKCi8qCiAqIFN0cmluZyBUYWJsZQogKi8KCi8qCiAqU1RSSU5HVEFCTEUgRElTQ0FSREFCTEUKICpCRUdJTgogKiAgICBJRF9IRUxQX0hFTFBUT1BJQ1MgICAgICAiTWVnbnlpdGphIGEgUmVnaXN6dHLhY2nzcyBhZGF0YuF6aXMgc3plcmtlc3p09SBz+mfzauF0LiIKICogICAgSURfSEVMUF9BQk9VVCAgICAgICAgICAgIk1lZ2plbGVu7XRpIGEgcHJvZ3JhbSBpbmZvcm3hY2nza2F0LCB2ZXJ6afNzeuFtb3QsIOlzIGEgc3plcnr1aSBqb2dvdC4iCiAqRU5ECiAqLwoKLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwo=