LyoKICogUmVnZWRpdCByZXNvdXJjZXMKICoKICogQ29weXJpZ2h0IDIwMDYgQW5kcmFzIEtvdmFjcwogKgogKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCiAqIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgogKgogKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKICogTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KICoKICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwogKiBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCiAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BICAwMjExMS0xMzA3ICBVU0EKICovCgovKiBIdW5nYXJpYW4gUmVzb3VyY2VzICovCgpMQU5HVUFHRSBMQU5HX0hVTkdBUklBTiwgU1VCTEFOR19ORVVUUkFMCgpJRFJfUkVHRURJVF9NRU5VIE1FTlUgRElTQ0FSREFCTEUKQkVHSU4KICAgIFBPUFVQICImUmVnaXN6dHLhY2nzcyBBZGF0YuF6aXMiCiAgICBCRUdJTgogICAgICAgIE1FTlVJVEVNICJSZWdpc3p0cuFjafNzIGFkYXRi4XppcyBm4WpsICZpbXBvcnThbOFzYS4uLiIsICAgIElEX1JFR0lTVFJZX0lNUE9SVFJFR0lTVFJZRklMRQogICAgICAgIE1FTlVJVEVNICJSZWdpc3p0cuFjafNzIGFkYXRi4XppcyBm4WpsICZleHBvcnThbOFzYS4uLiIsICAgIElEX1JFR0lTVFJZX0VYUE9SVFJFR0lTVFJZRklMRQogICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgIE1FTlVJVEVNICImQ3NhdGxha2964XMgaOFs83phdGkgcmVnaXN6dHLhY2nzcyBhZGF0YuF6aXNob3ouLi4iLCBJRF9SRUdJU1RSWV9DT05ORUNUTkVUV09SS1JFR0lTVFJZLCBHUkFZRUQKICAgICAgICBNRU5VSVRFTSAiTGV24Wxhc3p04XMgYSBo4WzzemF0aSBhJmRhdGLhemlzcvNsLi4uIiwgSURfUkVHSVNUUllfRElTQ09OTkVDVE5FVFdPUktSRUdJU1RSWSwgR1JBWUVECiAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgTUVOVUlURU0gIiZOeW9tdGF04XNcdEN0cmwrUCIsICAgICAgICAgICAgICBJRF9SRUdJU1RSWV9QUklOVCwgR1JBWUVECiAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgTUVOVUlURU0gIktpJmzpcOlzIiwgICAgICAgICAgICAgICAgICAgICAgIElEX1JFR0lTVFJZX0VYSVQKICAgIEVORAogICAgUE9QVVAgIlN6JmVya2VzenTpcyIKICAgIEJFR0lOCiAgICAgICAgTUVOVUlURU0gIiZN82Rvc+104XMiLCAgICAgICAgICAgICAgICAgICAgIElEX0VESVRfTU9ESUZZCiAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgUE9QVVAgIibaaiIKICAgICAgICBCRUdJTgogICAgICAgICAgICBNRU5VSVRFTSAiJkt1bGNzIiwgICAgICAgICAgICAgICAgICAgICAgICBJRF9FRElUX05FV19LRVkKICAgICAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgICAgIE1FTlVJVEVNICImU3p0cmluZyDpcnTpayIsICAgICAgICAgICAgICAgSURfRURJVF9ORVdfU1RSSU5HVkFMVUUKICAgICAgICAgICAgTUVOVUlURU0gIiZCaW7hcmlzIOlydOlrIiwgICAgICAgICAgICAgICBJRF9FRElUX05FV19CSU5BUllWQUxVRQogICAgICAgICAgICBNRU5VSVRFTSAiJkRXT1JEIOlydOlrIiwgICAgICAgICAgICAgICAgSURfRURJVF9ORVdfRFdPUkRWQUxVRQogICAgICAgIEVORAogICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgIE1FTlVJVEVNICImVPZybOlzXHREZWwiLCAgICAgICAgICAgICAgICBJRF9FRElUX0RFTEVURQogICAgICAgIE1FTlVJVEVNICImwXRuZXZleulzXHRGMiIsICAgICAgICAgICAgICAgICBJRF9FRElUX1JFTkFNRQogICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgIE1FTlVJVEVNICJLdWwmY3Nu6XYgbeFzb2zhc2EiLCAgICAgICAgICAgICAgSURfRURJVF9DT1BZS0VZTkFNRQogICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgIE1FTlVJVEVNICImS2VyZXPpc1x0Q3RybCtGIiwgICAgICAgICAgICAgICBJRF9FRElUX0ZJTkQKICAgICAgICBNRU5VSVRFTSAiSyb2dmV0a2V69SBrZXJlc+lzZVx0RjMiLCAgICAgICAgICAgICAgSURfRURJVF9GSU5ETkVYVAogICAgRU5ECiAgICBQT1BVUCAiJk7pemV0IgogICAgQkVHSU4KICAgICAgICBNRU5VSVRFTSAiwWxsYSZwb3Rzb3IiLCAgICAgICAgICAgICAgICAgSURfVklFV19TVEFUVVNCQVIKICAgICAgICBNRU5VSVRFTSBTRVBBUkFUT1IKICAgICAgICBNRU5VSVRFTSAiU3rpdHbhJmxhc3p04XMiLCAgICAgICAgICAgICAgICAgICAgICBJRF9WSUVXX1NQTElUCiAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgTUVOVUlURU0gIkYmcmlzc+106XNcdEY1IiwgICAgICAgICAgICAgICAgSURfVklFV19SRUZSRVNICiAgICBFTkQKICAgIFBPUFVQICJLZWQmdmVuY2VrIgogICAgQkVHSU4KICAgICAgICBNRU5VSVRFTSAiSG96euEmYWThcyBhIGtlZHZlbmNla2hleiIsICAgICAgICAgIElEX0ZBVk9SSVRFU19BRERUT0ZBVk9SSVRFUwogICAgICAgIE1FTlVJVEVNICJU9iZybOlzIGEga2VkdmVuY2VrYvVsIiwgICAgICAgICAgIElEX0ZBVk9SSVRFU19SRU1PVkVGQVZPUklURQogICAgRU5ECiAgICBQT1BVUCAiJlP6Z/MiCiAgICBCRUdJTgogICAgICAgIE1FTlVJVEVNICJTJvpn8yB06W1ha/Zy9mtcdEYxIiwgICAgICAgICAgICBJRF9IRUxQX0hFTFBUT1BJQ1MKICAgICAgICBNRU5VSVRFTSBTRVBBUkFUT1IKICAgICAgICBNRU5VSVRFTSAiUmVnaXN6dHLhY2nzcyAmYWRhdGLhemlzIHN6ZXJrZXN6dPUgbul2amVneWUiLCAgICAgIElEX0hFTFBfQUJPVVQKICAgIEVORApFTkQKCi8qCiAqIERpYWxvZwogKi8KCklERF9BQk9VVEJPWCBESUFMT0cgRElTQ0FSREFCTEUgIDIyLCAxNywgMjMwLCA3NQpTVFlMRSBEU19NT0RBTEZSQU1FIHwgRFNfTk9JRExFTVNHIHwgV1NfQ0FQVElPTiB8IFdTX1NZU01FTlUKQ0FQVElPTiAiTul2amVneSIKRk9OVCA4LCAiTVMgU2hlbGwgRGxnIgpCRUdJTgogICAgSUNPTiAgICAgICAgICAgIElESV9SRUdFRElULElESV9SRUdFRElULDE0LDksMTYsMTYKICAgIExURVhUICAgICAgICAgICAiUmVhY3RPUyByZWdlZGl0IFZlcnpp8zogMS4wIixJRENfU1RBVElDLDQ5LDEwLDExOSw4LAogICAgICAgICAgICAgICAgICAgIFNTX05PUFJFRklYCiAgICBMVEVYVCAgICAgICAgICAgIkNvcHlyaWdodCAoQykgMjAwMiBhIFJlYWN0T1MgY3NhcGF0YSIsSURDX1NUQVRJQyw0OSwyMCwxMTksOAogICAgREVGUFVTSEJVVFRPTiAgICJPSyIsSURPSywxOTUsNiwzMCwxMSxXU19HUk9VUApFTkQKCklERF9GSU5EIERJQUxPRyBESVNDQVJEQUJMRSAgMjIsIDE3LCAyMTAsIDg1ClNUWUxFIERTX01PREFMRlJBTUUgfCBXU19DQVBUSU9OIHwgV1NfU1lTTUVOVQpDQVBUSU9OICJLZXJlc+lzIgpGT05UIDgsICJNUyBTaGVsbCBEbGciCkJFR0lOCiAgICBMVEVYVCAgICAgICAgICAgIktlcmVz6XM6IixJRENfU1RBVElDLDUsNywxMTksOAogICAgRURJVFRFWFQgICAgICAgIElEQ19WQUxVRV9OQU1FLDQwLDUsMTI1LDEyLCBXU19CT1JERVIgfCBXU19UQUJTVE9QIHwgRVNfQVVUT0hTQ1JPTEwKICAgIExURVhUICAgICAgICAgICAiS2VyZXPpcyBpdHQ6IixJRENfU1RBVElDLDUsIDIyLCAxMTksIDgKICAgIENIRUNLQk9YICAgICAgICAiS3VsY3NvayIsIElEQ19GSU5EX0tFWVMsIDUsIDM0LCA5MCwgMTAsIFdTX1RBQlNUT1AgfCBXU19HUk9VUCB8IEJTX0FVVE9DSEVDS0JPWAogICAgQ0hFQ0tCT1ggICAgICAgICLJcnTpayBuZXZlayIsIElEQ19GSU5EX1ZBTFVFUywgNSwgNDYsIDkwLCAxMCwgV1NfVEFCU1RPUCB8IEJTX0FVVE9DSEVDS0JPWAogICAgQ0hFQ0tCT1ggICAgICAgICLJcnTpayB0YXJ0YWxtYWsiLCBJRENfRklORF9DT05URU5ULCA1LCA1OCwgOTAsIDEwLCBXU19UQUJTVE9QIHwgQlNfQVVUT0NIRUNLQk9YCiAgICBDSEVDS0JPWCAgICAgICAgIkNzYWsgdGVsamVzIHN69nZlZyIsIElEQ19GSU5EX1dIT0xFLCA1LCA3MCwgOTAsIDEwLCBXU19UQUJTVE9QIHwgQlNfQVVUT0NIRUNLQk9YCiAgICBERUZQVVNIQlVUVE9OICAgIktlcmVz6XMiLElET0ssMTc1LDUsMzAsMTEsV1NfR1JPVVAKICAgIFBVU0hCVVRUT04gICAgICAiQmV64XLhcyIsSURDQU5DRUwsMTc1LDIyLDMwLDExLCBXU19HUk9VUApFTkQKCklERF9BRERGQVZPUklURSBESUFMT0cgRElTQ0FSREFCTEUgIDIyLCAxNywgMjEwLCA1NQpTVFlMRSBEU19NT0RBTEZSQU1FIHwgV1NfQ0FQVElPTiB8IFdTX1NZU01FTlUKQ0FQVElPTiAiS2VkdmVuYyBob3p64WFk4XNhIgpGT05UIDgsICJNUyBTaGVsbCBEbGciCkJFR0lOCiAgICBMVEVYVCAgICAgICAgICAgIk7pdjoiLElEQ19TVEFUSUMsNSw1LDExOSw4CiAgICBFRElUVEVYVCAgICAgICAgSURDX1ZBTFVFX05BTUUsNSwxNSwyMDAsMTIsIFdTX0JPUkRFUiB8IFdTX1RBQlNUT1AgfCBFU19BVVRPSFNDUk9MTAogICAgREVGUFVTSEJVVFRPTiAgICJPSyIsSURPSywxNDAsNDAsMzAsMTEsV1NfR1JPVVAKICAgIFBVU0hCVVRUT04gICAgICAiTelnc2UiLElEQ0FOQ0VMLDE3NSw0MCwzMCwxMSwgV1NfR1JPVVAKRU5ECgpJRERfREVMRkFWT1JJVEUgRElBTE9HIERJU0NBUkRBQkxFICAyMiwgMTcsIDIxMCwgOTAKU1RZTEUgRFNfTU9EQUxGUkFNRSB8IFdTX0NBUFRJT04gfCBXU19TWVNNRU5VCkNBUFRJT04gIktlZHZlbmMgdPZybOlzZSIKRk9OVCA4LCAiTVMgU2hlbGwgRGxnIgpCRUdJTgogICAgTFRFWFQgICAgICAgICAgICJO6XY6IixJRENfU1RBVElDLDUsNSwxMTksOAogICAgTElTVEJPWCAgICAgICAgIElEQ19OQU1FX0xJU1QsNSwxNSwyMDAsNTIsIFdTX0JPUkRFUiB8IFdTX1RBQlNUT1AgfCBMQlNfU09SVCB8IExCU19OT0lOVEVHUkFMSEVJR0hUIHwgV1NfVlNDUk9MTAogICAgREVGUFVTSEJVVFRPTiAgICJPSyIsSURPSywxNDAsNzMsMzAsMTEsV1NfR1JPVVAKICAgIFBVU0hCVVRUT04gICAgICAiTelnc2UiLElEQ0FOQ0VMLDE3NSw3MywzMCwxMSwgV1NfR1JPVVAKRU5ECgpJRERfRURJVF9TVFJJTkcgRElBTE9HIERJU0NBUkRBQkxFICAyMiwgMTcsIDIxMCwgNzUKU1RZTEUgRFNfTU9EQUxGUkFNRSB8IFdTX0NBUFRJT04gfCBXU19TWVNNRU5VCkNBUFRJT04gIlN6dHJpbmcgc3plcmtlc3p06XNlIgpGT05UIDgsICJNUyBTaGVsbCBEbGciCkJFR0lOCiAgICBMVEVYVCAgICAgICAgICAgIslydOlrIG5ldmU6IixJRENfU1RBVElDLDUsNSwxMTksOAogICAgRURJVFRFWFQgICAgICAgIElEQ19WQUxVRV9OQU1FLDUsMTUsMjAwLDEyLCBXU19CT1JERVIgfCBXU19UQUJTVE9QIHwgRVNfQVVUT0hTQ1JPTEx8IFdTX0RJU0FCTEVECiAgICBMVEVYVCAgICAgICAgICAgIslydOlrIGFkYXQ6IixJRENfU1RBVElDLDUsMzAsMTE5LDgKICAgIEVESVRURVhUICAgICAgICBJRENfVkFMVUVfREFUQSw1LDQwLDIwMCwxMiwgV1NfQk9SREVSIHwgV1NfVEFCU1RPUCB8IEVTX0FVVE9IU0NST0xMCiAgICBERUZQVVNIQlVUVE9OICAgIk9LIixJRE9LLDE0MCw2MCwzMCwxMSxXU19HUk9VUAogICAgUFVTSEJVVFRPTiAgICJN6WdzZSIsSURDQU5DRUwsMTc1LDYwLDMwLDExLFdTX0dST1VQCkVORAoKSUREX0VESVRfRFdPUkQgRElBTE9HIERJU0NBUkRBQkxFICAyMiwgMTcsIDIxMCwgMTAwClNUWUxFIERTX01PREFMRlJBTUUgfCBEU19OT0lETEVNU0cgfCBXU19DQVBUSU9OIHwgV1NfU1lTTUVOVQpDQVBUSU9OICJEV09SRCBzemVya2VzenTpc2UiCkZPTlQgOCwgIk1TIFNoZWxsIERsZyIKQkVHSU4KICAgIExURVhUICAgICAgICAgICAiyXJ06WsgbmV2ZToiLElEQ19TVEFUSUMsNSw1LDExOSw4CiAgICBFRElUVEVYVCAgICAgICAgSURDX1ZBTFVFX05BTUUsNSwxNSwyMDAsMTIsIFdTX0JPUkRFUiB8IFdTX1RBQlNUT1AgfCBFU19BVVRPSFNDUk9MTHwgV1NfRElTQUJMRUQKICAgIExURVhUICAgICAgICAgICAiyXJ06WsgYWRhdDoiLElEQ19TVEFUSUMsNSwzMCw5MCw4CiAgICBFRElUVEVYVCAgICAgICAgSURDX1ZBTFVFX0RBVEEsNSw0MCw5MCwxMiwgV1NfQk9SREVSIHwgV1NfVEFCU1RPUAogICAgR1JPVVBCT1ggICAgICAgICJBbGFwIiwgSURDX0RXT1JEX0JBU0UsIDEyMCwgMzAsIDg1LCAzNywgQlNfR1JPVVBCT1gKICAgIEFVVE9SQURJT0JVVFRPTiAiSGV4YWRlY2lt4WxpcyIsIElEQ19EV09SRF9IRVgsIDEzMCwgNDAsIDYwLCAxMCwgV1NfVEFCU1RPUAogICAgQVVUT1JBRElPQlVUVE9OICJEZWNpbeFsaXMiLCBJRENfRFdPUkRfREVDLCAxMzAsIDUyLCA2MCwgMTAsIFdTX1RBQlNUT1AKICAgIERFRlBVU0hCVVRUT04gICAiT0siLElET0ssMTQwLDgwLDMwLDExLFdTX0dST1VQCiAgICBQVVNIQlVUVE9OICAgIk3pZ3NlIixJRENBTkNFTCwxNzUsODAsMzAsMTEsV1NfR1JPVVAKRU5ECgpJRERfRURJVF9CSU5BUlkgRElBTE9HIERJU0NBUkRBQkxFICAyMiwgMTcsIDIxMCwgMTAwClNUWUxFIERTX01PREFMRlJBTUUgfCBEU19OT0lETEVNU0cgfCBXU19DQVBUSU9OIHwgV1NfU1lTTUVOVQpDQVBUSU9OICJCaW7hcmlzIHN6ZXJrZXN6dOlzZSIKRk9OVCA4LCAiTVMgU2hlbGwgRGxnIgpCRUdJTgogICAgTFRFWFQgICAgICAgICAgICLJcnTpayBuZXZlOiIsSURDX1NUQVRJQyw1LDUsMTE5LDgKICAgIEVESVRURVhUICAgICAgICBJRENfVkFMVUVfTkFNRSw1LDE1LDIwMCwxMiwgV1NfQk9SREVSIHwgV1NfVEFCU1RPUCB8IEVTX0FVVE9IU0NST0xMfCBXU19ESVNBQkxFRAogICAgTFRFWFQgICAgICAgICAgICLJcnTpayBhZGF0OiIsSURDX1NUQVRJQyw1LDMwLDkwLDgKICAgIENPTlRST0wgICAgICAgICAiIixJRENfVkFMVUVfREFUQSwiSGV4RWRpdCIsV1NfVEFCU1RPUCw0LDQwLDE2MCw0MAogICAgREVGUFVTSEJVVFRPTiAgICJPSyIsSURPSywxNDAsODAsMzAsMTEsV1NfR1JPVVAKICAgIFBVU0hCVVRUT04gICAiTelnc2UiLElEQ0FOQ0VMLDE3NSw4MCwzMCwxMSxXU19HUk9VUApFTkQKCi8qCiAqIFN0cmluZyBUYWJsZQogKi8KClNUUklOR1RBQkxFIERJU0NBUkRBQkxFCkJFR0lOCiAgICBJRFNfTElTVF9DT0xVTU5fTkFNRSAgICAiTul2IgogICAgSURTX0xJU1RfQ09MVU1OX1RZUEUgICAgIlTtcHVzIgogICAgSURTX0xJU1RfQ09MVU1OX0RBVEEgICAgIkFkYXQiCkVORAoKU1RSSU5HVEFCTEUgRElTQ0FSREFCTEUKQkVHSU4KICAgIElEU19BUFBfVElUTEUgICAgICAgICAgICJSZWdpc3p0cuFjafNzIGFkYXRi4XppcyBzemVya2VzenT1IgogICAgSURDX1JFR0VESVQgICAgICAgICAgICAgIlJFR0VESVQiCiAgICBJRENfUkVHRURJVF9GUkFNRSAgICAgICAiUkVHRURJVF9GUkFNRSIKRU5ECgpTVFJJTkdUQUJMRSBESVNDQVJEQUJMRQpCRUdJTgogICAgSURfUkVHSVNUUllfTUVOVSAgICAgICAgIlBhcmFuY3Nva2F0IHRhcnRhbG1heiBheiBlZ+lzeiByZWdpc3p0cuFjafNzIGFkYXRi4Xppc3NhbCB09nJ06W71IG11bmvhaG96IgogICAgSURfRURJVF9NRU5VICAgICAgICAgICAgIlBhcmFuY3Nva2F0IHRhcnRhbG1heiBheiDpcnTpayDpcyBrdWxjc3N6ZXJrZXN6dOlzaGV6IgogICAgSURfVklFV19NRU5VICAgICAgICAgICAgIlBhcmFuY3Nva2F0IHRhcnRhbG1heiBhIHJlZ2lzenRy4WNp83MgYWRhdGLhemlzIGFibGFrIHRlc3RyZXN6YWLhc+F2YWwga2FwY3NvbGF0YmFuIgogICAgSURfRkFWT1JJVEVTX01FTlUgICAgICAgIlBhcmFuY3Nva2F0IHRhcnRhbG1heiBhIGd5YWtyYW4gaG96euFm6XJ0IGt1bGNzb2tob3oiCiAgICBJRF9IRUxQX01FTlUgICAgICAgICAgICAiUGFyYW5jc29rYXQgdGFydGFsbWF6IGEgUmVnaXN6dHLhY2nzcyBhZGF0YuF6aXMgc3plcmtlc3p09SBz+mfzauFuYWsg6XMgaW5mb3Jt4WNp82rhbmFrIG1lZ2plbGVu7XTpc+loZXoiCiAgICBJRF9FRElUX05FV19NRU5VICAgICAgICAiUGFyYW5jc29rYXQgdGFydGFsbWF6IPpqIGt1bGNzb2sg6XMg6XJ06WtlayBs6XRyZWhveuFz4WhveiIKRU5ECgpTVFJJTkdUQUJMRSBESVNDQVJEQUJMRQpCRUdJTgogICAgSURfRURJVF9NT0RJRlkgICAgICAgICAgIk3zZG9z7XRqYSBlZ3kg6XJ06WsgYWRhdOF0IgogICAgSURfRURJVF9ORVdfS0VZICAgICAgICAgIkhvenrhYWQgZWd5IPpqIGt1bGNzb3QiCiAgICBJRF9FRElUX05FV19TVFJJTkdWQUxVRSAiSG96euFhZCBlZ3kg+mogc3p0cmluZyDpcnTpa2V0IgogICAgSURfRURJVF9ORVdfQklOQVJZVkFMVUUgIkhvenrhYWQgZWd5IPpqIGJpbuFyaXMg6XJ06WtldCIKICAgIElEX0VESVRfTkVXX0RXT1JEVkFMVUUgICJIb3p64WFkIGVneSD6aiBkdXBsYXN68yDpcnTpa2V0IgogICAgSURfUkVHSVNUUllfSU1QT1JUUkVHSVNUUllGSUxFICJFZ3kgc3r2dmVnZuFqbHQgaW1wb3J04WwgYSByZWdpc3p0cuFjafNzIGFkYXRi4Xppc2JhIgogICAgSURfUkVHSVNUUllfRVhQT1JUUkVHSVNUUllGSUxFCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQXogZWfpc3ogcmVnaXN6dHLhY2nzcyBhZGF0YuF6aXN0IGtpZXhwb3J04WxqYSBlZ3kgc3r2dmVnZuFqbGJhIgogICAgSURfUkVHSVNUUllfQ09OTkVDVE5FVFdPUktSRUdJU1RSWQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIkthcGNzb2zzZGlrIGVneSB04XZvbGkgc3rhbe1082fpcCByZWdpc3p0cuFjafNzIGFkYXRi4Xppc+Fob3oiCiAgICBJRF9SRUdJU1RSWV9ESVNDT05ORUNUTkVUV09SS1JFR0lTVFJZCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTGVrYXBjc29s82RpayBlZ3kgdOF2b2xpIHN64W3tdPNn6XAgcmVnaXN6dHLhY2nzcyBhZGF0YuF6aXPhcvNsIgogICAgSURfUkVHSVNUUllfUFJJTlQgICAgICAgIktpbnlvbXRhdGphIGF6IGVn6XN6IHJlZ2lzenRy4WNp83MgYWRhdGLhemlzdCwgdmFneSBhbm5hayBlZ3kgculzeul0IgovKiAgICBJRF9IRUxQX0hFTFBUT1BJQ1MgICAgICAiTWVnbnlpdGphIGEgUmVnaXN6dHLhY2nzcyBhZGF0YuF6aXMgc3plcmtlc3p09SBz+mfzauF0IiAqLwpJRF9IRUxQX0FCT1VUICAgICAgICAgICAiTWVnamVsZW7tdGkgYSBwcm9ncmFtIGluZm9ybeFjafNrYXQsIHZlcnpp83N64W1vdCwg6XMgYSBzemVyevVpIGpvZ290IgpFTkQKClNUUklOR1RBQkxFIERJU0NBUkRBQkxFCkJFR0lOCiAgICBJRF9SRUdJU1RSWV9FWElUICAgICAgICAiS2ls6XAgYSBSZWdpc3p0cuFjafNzIGFkYXRi4XppcyBzemVya2VzenT1YvVsIgogICAgSURfRkFWT1JJVEVTX0FERFRPRkFWT1JJVEVTICJLdWxjc29rYXQgYWQgaG96euEgYSBrZWR2ZW5jZWsgbGlzdOFob3oiCiAgICBJRF9GQVZPUklURVNfUkVNT1ZFRkFWT1JJVEUgIkt1bGNzb2thdCB09nL2bCBhIGtlZHZlbmNlayBsaXN04WLzbCIKICAgIElEX1ZJRVdfU1RBVFVTQkFSICAgICAgICJNZWdqZWxlbu10aSB2YWd5IGVsdPxudGV0aSBheiDhbGxhcG90c29ydCIKICAgIElEX1ZJRVdfU1BMSVQgICAgICAgICAgICJNZWd24Wx0b3p0YXRqYSBhIGvpdCBhYmxha3Lpc3ogcGl67WNp82rhdCIKICAgIElEX1ZJRVdfUkVGUkVTSCAgICAgICAgICJGcmlzc+10aSBheiBhYmxha290IgogICAgSURfRURJVF9ERUxFVEUgICAgICAgICAgIlT2cmxpIGEga2lqZWz2bOlzdCIKICAgIElEX0VESVRfUkVOQU1FICAgICAgICAgICLBdG5ldmV6aSBhIGtpamVs9mzpc3QiCiAgICBJRF9FRElUX0NPUFlLRVlOQU1FICAgICAiQSBraWplbPZsdCBrdWxjcyBuZXbpdCBt4XNvbGphIGEgduFn82xhcHJhIgogICAgSURfRURJVF9GSU5EICAgICAgICAgICAgIk1lZ2tlcmVzIGVneSBzevZ2ZWdlcyBzenRyaW5nZXQgZWd5IGt1bGNzYmFuLCDpcnTpa2JlbiwgdmFneSBhZGF0YmFuIgogICAgSURfRURJVF9GSU5ETkVYVCAgICAgICAgIktlcmVzaSBhIGv2dmV0a2V69SBlbPVmb3JkdWzhc3QgYXogZWz1evUga2VyZXPpc3T1bCBrZXpkdmUiCkVORAoKU1RSSU5HVEFCTEUgRElTQ0FSREFCTEUKQkVHSU4KICAgIElEU19FUlJPUgkJICAgICJIaWJhIgogICAgSURTX0JBRF9LRVkJCSAgICAiTmVtIHR1ZG9tIGxla+lybmkgYSBrdWxjc290OiAnJXMnIgogICAgSURTX0JBRF9WQUxVRSAgICAgICAgICAgIk5lbSB0dWRvbSBsZWvpcm5pIGF6IOlydOlrZXQ6ICclcyciCiAgICBJRFNfVU5TVVBQT1JURURfVFlQRSAgICAiTmVtIHR1ZG9tIGV6dCBhIHTtcHVz+iBrdWxjc290IHN6ZXJrZXN6dGVuaTogKCVsZCkiCiAgICBJRFNfVE9PX0JJR19WQUxVRSAgICAgICAiQXog6XJ06WsgdPpsIG5hZ3k6ICglbGQpIgogICAgSURTX0RFTEVURV9CT1hfVElUTEUgICAgIslydOlrdPZybOlzIGrzduFoYWd54XNhIgogICAgSURTX0RFTEVURV9CT1hfVEVYVCAgICAgIkJpenRvcyBob2d5IHT2cvZsbmkgc3plcmV0bukgYSh6KSAnJXMnIGt1bGNzb3Q/IgogICAgSURTX05FV0tFWSAgICAgICAgICAgICAgItpqIGt1bGNzICMlZCIKICAgIElEU19ORVdWQUxVRSAgICAgICAgICAgICLaaiDpcnTpayAjJWQiCiAgICBJRFNfTk9URk9VTkQgICAgICAgICAgICAiQSh6KSAnJXMnIGtlcmVz6XNpIGtpZmVqZXrpcyBuZW0gdGFs4WxoYXTzIgpFTkQKCi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KCgovKgogKiBEaWFsb2cKICovCgpJRERfRElBTE9HMSBESUFMT0cgRElTQ0FSREFCTEUgIDUwLCA1MCwgMjY4LCA5OApTVFlMRSBEU18zRExPT0sgfCBEU19DT05UUk9MIHwgV1NfQ0hJTEQgfCBXU19WSVNJQkxFIHwgV1NfQ0xJUFNJQkxJTkdTIHwKICAgIFdTX0JPUkRFUgpGT05UIDgsICJNUyBTaGVsbCBEbGciCkJFR0lOCkVORAoKSUREX0RJQUxPRzIgRElBTE9HIERJU0NBUkRBQkxFICAwLCAwLCAxODcsIDk1ClNUWUxFIERTX01PREFMRlJBTUUgfCBXU19QT1BVUCB8IFdTX0NBUFRJT04gfCBXU19TWVNNRU5VCkNBUFRJT04gIkRpYWzzZ3VzIgpGT05UIDgsICJNUyBTaGVsbCBEbGciCkJFR0lOCiAgICBERUZQVVNIQlVUVE9OICAgIk9LIixJRE9LLDEzMCw3LDUwLDE0CiAgICBQVVNIQlVUVE9OICAgICAgIk3pZ3NlIixJRENBTkNFTCwxMzAsMjQsNTAsMTQKRU5ECgoKLyoKICogVEVYVElOQ0xVREUKICovCgoxIFRFWFRJTkNMVURFIERJU0NBUkRBQkxFCkJFR0lOCiAgICAicmVzb3VyY2UuaFwwIgpFTkQKCgoKLyoKICogU3RyaW5nIFRhYmxlCiAqLwoKLyoKICpTVFJJTkdUQUJMRSBESVNDQVJEQUJMRQogKkJFR0lOCiAqICAgIElEX0hFTFBfSEVMUFRPUElDUyAgICAgICJNZWdueWl0amEgYSBSZWdpc3p0cuFjafNzIGFkYXRi4XppcyBzemVya2VzenT1IHP6Z/Nq4XQuIgogKiAgICBJRF9IRUxQX0FCT1VUICAgICAgICAgICAiTWVnamVsZW7tdGkgYSBwcm9ncmFtIGluZm9ybeFjafNrYXQsIHZlcnpp83N64W1vdCwg6XMgYSBzemVyevVpIGpvZ290LiIKICpFTkQKICovCgovKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCg==