LyoKICogUmVnZWRpdCByZXNvdXJjZXMKICoKICogQ29weXJpZ2h0IDIwMDYgQW5kcmFzIEtvdmFjcwogKgogKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCiAqIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgogKgogKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKICogTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KICoKICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwogKiBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCiAqIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EKICovCgovKiBIdW5nYXJpYW4gUmVzb3VyY2VzICovCgpMQU5HVUFHRSBMQU5HX0hVTkdBUklBTiwgU1VCTEFOR19ORVVUUkFMCgpJRFJfUkVHRURJVF9NRU5VIE1FTlUgRElTQ0FSREFCTEUKQkVHSU4KICAgIFBPUFVQICImUmVnaXN6dHLhY2nzcyBBZGF0YuF6aXMiCiAgICBCRUdJTgogICAgICAgIE1FTlVJVEVNICJSZWdpc3p0cuFjafNzIGFkYXRi4XppcyBm4WpsICZpbXBvcnThbOFzYS4uLiIsICAgIElEX1JFR0lTVFJZX0lNUE9SVFJFR0lTVFJZRklMRQogICAgICAgIE1FTlVJVEVNICJSZWdpc3p0cuFjafNzIGFkYXRi4XppcyBm4WpsICZleHBvcnThbOFzYS4uLiIsICAgIElEX1JFR0lTVFJZX0VYUE9SVFJFR0lTVFJZRklMRQogICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgIE1FTlVJVEVNICImQ3NhdGxha2964XMgaOFs83phdGkgcmVnaXN6dHLhY2nzcyBhZGF0YuF6aXNob3ouLi4iLCBJRF9SRUdJU1RSWV9DT05ORUNUTkVUV09SS1JFR0lTVFJZLCBHUkFZRUQKICAgICAgICBNRU5VSVRFTSAiTGV24Wxhc3p04XMgYSBo4WzzemF0aSBhJmRhdGLhemlzcvNsLi4uIiwgSURfUkVHSVNUUllfRElTQ09OTkVDVE5FVFdPUktSRUdJU1RSWSwgR1JBWUVECiAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgTUVOVUlURU0gIiZOeW9tdGF04XNcdEN0cmwrUCIsICAgICAgICAgICAgICBJRF9SRUdJU1RSWV9QUklOVCwgR1JBWUVECiAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgTUVOVUlURU0gIktpJmzpcOlzIiwgICAgICAgICAgICAgICAgICAgICAgIElEX1JFR0lTVFJZX0VYSVQKICAgIEVORAogICAgUE9QVVAgIlN6JmVya2VzenTpcyIKICAgIEJFR0lOCiAgICAgICAgTUVOVUlURU0gIiZN82Rvc+104XMiLCAgICAgICAgICAgICAgICAgICAgIElEX0VESVRfTU9ESUZZCiAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgUE9QVVAgIibaaiIKICAgICAgICBCRUdJTgogICAgICAgICAgICBNRU5VSVRFTSAiJkt1bGNzIiwgICAgICAgICAgICAgICAgICAgICAgICBJRF9FRElUX05FV19LRVkKICAgICAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgICAgIE1FTlVJVEVNICImU3p0cmluZyDpcnTpayIsICAgICAgICAgICAgICAgSURfRURJVF9ORVdfU1RSSU5HVkFMVUUKICAgICAgICAgICAgTUVOVUlURU0gIiZCaW7hcmlzIOlydOlrIiwgICAgICAgICAgICAgICBJRF9FRElUX05FV19CSU5BUllWQUxVRQogICAgICAgICAgICBNRU5VSVRFTSAiJkRXT1JEIOlydOlrIiwgICAgICAgICAgICAgICAgSURfRURJVF9ORVdfRFdPUkRWQUxVRQogICAgICAgICAgICBNRU5VSVRFTSAiJk11bHRpIFN0cmluZyBWYWx1ZSIsICAgICAgICAgSURfRURJVF9ORVdfTVVMVElfU1RSSU5HVkFMVUUKICAgICAgICBFTkQKICAgICAgICBNRU5VSVRFTSBTRVBBUkFUT1IKICAgICAgICBNRU5VSVRFTSAiJlT2cmzpc1x0RGVsIiwgICAgICAgICAgICAgICAgSURfRURJVF9ERUxFVEUKICAgICAgICBNRU5VSVRFTSAiJsF0bmV2ZXrpc1x0RjIiLCAgICAgICAgICAgICAgICAgSURfRURJVF9SRU5BTUUKICAgICAgICBNRU5VSVRFTSBTRVBBUkFUT1IKICAgICAgICBNRU5VSVRFTSAiS3VsJmNzbul2IG3hc29s4XNhIiwgICAgICAgICAgICAgIElEX0VESVRfQ09QWUtFWU5BTUUKICAgICAgICBNRU5VSVRFTSBTRVBBUkFUT1IKICAgICAgICBNRU5VSVRFTSAiJktlcmVz6XNcdEN0cmwrRiIsICAgICAgICAgICAgICAgSURfRURJVF9GSU5ELCBHUkFZRUQKICAgICAgICBNRU5VSVRFTSAiSyb2dmV0a2V69SBrZXJlc+lzZVx0RjMiLCAgICAgICAgICAgICAgSURfRURJVF9GSU5ETkVYVCwgR1JBWUVECiAgICBFTkQKICAgIFBPUFVQICImTul6ZXQiCiAgICBCRUdJTgogICAgICAgIE1FTlVJVEVNICLBbGxhJnBvdHNvciIsICAgICAgICAgICAgICAgICBJRF9WSUVXX1NUQVRVU0JBUgogICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgIE1FTlVJVEVNICJTeul0duEmbGFzenThcyIsICAgICAgICAgICAgICAgICAgICAgIElEX1ZJRVdfU1BMSVQKICAgICAgICBNRU5VSVRFTSBTRVBBUkFUT1IKICAgICAgICBNRU5VSVRFTSAiRiZyaXNz7XTpc1x0RjUiLCAgICAgICAgICAgICAgICBJRF9WSUVXX1JFRlJFU0gKICAgIEVORAogICAgUE9QVVAgIktlZCZ2ZW5jZWsiCiAgICBCRUdJTgogICAgICAgIE1FTlVJVEVNICJIb3p64SZhZOFzIGEga2VkdmVuY2VraGV6Li4uIiwgICAgICAgICAgSURfRkFWT1JJVEVTX0FERFRPRkFWT1JJVEVTCiAgICAgICAgTUVOVUlURU0gIlT2JnJs6XMgYSBrZWR2ZW5jZWti9WwuLi4iLCAgICAgICAgICAgSURfRkFWT1JJVEVTX1JFTU9WRUZBVk9SSVRFCiAgICBFTkQKICAgIFBPUFVQICImU/pn8yIKICAgIEJFR0lOCiAgICAgICAgTUVOVUlURU0gIlMm+mfzIHTpbWFr9nL2a1x0RjEiLCAgICAgICAgICAgIElEX0hFTFBfSEVMUFRPUElDUwogICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgIE1FTlVJVEVNICJSZWdpc3p0cuFjafNzICZhZGF0YuF6aXMgc3plcmtlc3p09SBu6XZqZWd5ZSIsICAgICAgSURfSEVMUF9BQk9VVAogICAgRU5ECkVORAoKLyoKICogRGlhbG9nCiAqLwoKSUREX0ZJTkQgRElBTE9HIERJU0NBUkRBQkxFICAyMiwgMTcsIDIxMCwgODUKU1RZTEUgRFNfTU9EQUxGUkFNRSB8IFdTX0NBUFRJT04gfCBXU19TWVNNRU5VCkNBUFRJT04gIktlcmVz6XMiCkZPTlQgOCwgIk1TIFNoZWxsIERsZyIKQkVHSU4KICAgIExURVhUICAgICAgICAgICAiS2VyZXPpczoiLElEQ19TVEFUSUMsNSw3LDExOSw4CiAgICBFRElUVEVYVCAgICAgICAgSURDX1ZBTFVFX05BTUUsNDAsNSwxMjUsMTIsIFdTX0JPUkRFUiB8IFdTX1RBQlNUT1AgfCBFU19BVVRPSFNDUk9MTAogICAgTFRFWFQgICAgICAgICAgICJLZXJlc+lzIGl0dDoiLElEQ19TVEFUSUMsNSwgMjIsIDExOSwgOAogICAgQ0hFQ0tCT1ggICAgICAgICJLdWxjc29rIiwgSURDX0ZJTkRfS0VZUywgNSwgMzQsIDkwLCAxMCwgV1NfVEFCU1RPUCB8IFdTX0dST1VQIHwgQlNfQVVUT0NIRUNLQk9YCiAgICBDSEVDS0JPWCAgICAgICAgIslydOlrIG5ldmVrIiwgSURDX0ZJTkRfVkFMVUVTLCA1LCA0NiwgOTAsIDEwLCBXU19UQUJTVE9QIHwgQlNfQVVUT0NIRUNLQk9YCiAgICBDSEVDS0JPWCAgICAgICAgIslydOlrIHRhcnRhbG1hayIsIElEQ19GSU5EX0NPTlRFTlQsIDUsIDU4LCA5MCwgMTAsIFdTX1RBQlNUT1AgfCBCU19BVVRPQ0hFQ0tCT1gKICAgIENIRUNLQk9YICAgICAgICAiQ3NhayB0ZWxqZXMgc3r2dmVnIiwgSURDX0ZJTkRfV0hPTEUsIDUsIDcwLCA5MCwgMTAsIFdTX1RBQlNUT1AgfCBCU19BVVRPQ0hFQ0tCT1gKICAgIERFRlBVU0hCVVRUT04gICAiS2VyZXPpcyIsSURPSywxNzUsNSwzMCwxMSxXU19HUk9VUAogICAgUFVTSEJVVFRPTiAgICAgICJCZXrhcuFzIixJRENBTkNFTCwxNzUsMjIsMzAsMTEsIFdTX0dST1VQCkVORAoKSUREX0FEREZBVk9SSVRFIERJQUxPRyBESVNDQVJEQUJMRSAgMjIsIDE3LCAyMTAsIDU1ClNUWUxFIERTX01PREFMRlJBTUUgfCBXU19DQVBUSU9OIHwgV1NfU1lTTUVOVQpDQVBUSU9OICJLZWR2ZW5jIGhvenrhYWThc2EiCkZPTlQgOCwgIk1TIFNoZWxsIERsZyIKQkVHSU4KICAgIExURVhUICAgICAgICAgICAiTul2OiIsSURDX1NUQVRJQyw1LDUsMTE5LDgKICAgIEVESVRURVhUICAgICAgICBJRENfVkFMVUVfTkFNRSw1LDE1LDIwMCwxMiwgV1NfQk9SREVSIHwgV1NfVEFCU1RPUCB8IEVTX0FVVE9IU0NST0xMCiAgICBERUZQVVNIQlVUVE9OICAgIk9LIixJRE9LLDE0MCw0MCwzMCwxMSxXU19HUk9VUAogICAgUFVTSEJVVFRPTiAgICAgICJN6WdzZSIsSURDQU5DRUwsMTc1LDQwLDMwLDExLCBXU19HUk9VUApFTkQKCklERF9ERUxGQVZPUklURSBESUFMT0cgRElTQ0FSREFCTEUgIDIyLCAxNywgMjEwLCA5MApTVFlMRSBEU19NT0RBTEZSQU1FIHwgV1NfQ0FQVElPTiB8IFdTX1NZU01FTlUKQ0FQVElPTiAiS2VkdmVuYyB09nJs6XNlIgpGT05UIDgsICJNUyBTaGVsbCBEbGciCkJFR0lOCiAgICBMVEVYVCAgICAgICAgICAgIk7pdjoiLElEQ19TVEFUSUMsNSw1LDExOSw4CiAgICBMSVNUQk9YICAgICAgICAgSURDX05BTUVfTElTVCw1LDE1LDIwMCw1MiwgV1NfQk9SREVSIHwgV1NfVEFCU1RPUCB8IExCU19TT1JUIHwgTEJTX05PSU5URUdSQUxIRUlHSFQgfCBXU19WU0NST0xMCiAgICBERUZQVVNIQlVUVE9OICAgIk9LIixJRE9LLDE0MCw3MywzMCwxMSxXU19HUk9VUAogICAgUFVTSEJVVFRPTiAgICAgICJN6WdzZSIsSURDQU5DRUwsMTc1LDczLDMwLDExLCBXU19HUk9VUApFTkQKCklERF9FRElUX1NUUklORyBESUFMT0cgRElTQ0FSREFCTEUgIDIyLCAxNywgMjEwLCA3NQpTVFlMRSBEU19NT0RBTEZSQU1FIHwgV1NfQ0FQVElPTiB8IFdTX1NZU01FTlUKQ0FQVElPTiAiU3p0cmluZyBzemVya2VzenTpc2UiCkZPTlQgOCwgIk1TIFNoZWxsIERsZyIKQkVHSU4KICAgIExURVhUICAgICAgICAgICAiyXJ06WsgbmV2ZToiLElEQ19TVEFUSUMsNSw1LDExOSw4CiAgICBFRElUVEVYVCAgICAgICAgSURDX1ZBTFVFX05BTUUsNSwxNSwyMDAsMTIsIFdTX0JPUkRFUiB8IFdTX1RBQlNUT1AgfCBFU19BVVRPSFNDUk9MTHwgV1NfRElTQUJMRUQKICAgIExURVhUICAgICAgICAgICAiyXJ06WsgYWRhdDoiLElEQ19TVEFUSUMsNSwzMCwxMTksOAogICAgRURJVFRFWFQgICAgICAgIElEQ19WQUxVRV9EQVRBLDUsNDAsMjAwLDEyLCBXU19CT1JERVIgfCBXU19UQUJTVE9QIHwgRVNfQVVUT0hTQ1JPTEwKICAgIERFRlBVU0hCVVRUT04gICAiT0siLElET0ssMTQwLDYwLDMwLDExLFdTX0dST1VQCiAgICBQVVNIQlVUVE9OICAgIk3pZ3NlIixJRENBTkNFTCwxNzUsNjAsMzAsMTEsV1NfR1JPVVAKRU5ECgpJRERfRURJVF9EV09SRCBESUFMT0cgRElTQ0FSREFCTEUgIDIyLCAxNywgMjEwLCAxMDAKU1RZTEUgRFNfTU9EQUxGUkFNRSB8IERTX05PSURMRU1TRyB8IFdTX0NBUFRJT04gfCBXU19TWVNNRU5VCkNBUFRJT04gIkRXT1JEIHN6ZXJrZXN6dOlzZSIKRk9OVCA4LCAiTVMgU2hlbGwgRGxnIgpCRUdJTgogICAgTFRFWFQgICAgICAgICAgICLJcnTpayBuZXZlOiIsSURDX1NUQVRJQyw1LDUsMTE5LDgKICAgIEVESVRURVhUICAgICAgICBJRENfVkFMVUVfTkFNRSw1LDE1LDIwMCwxMiwgV1NfQk9SREVSIHwgV1NfVEFCU1RPUCB8IEVTX0FVVE9IU0NST0xMfCBXU19ESVNBQkxFRAogICAgTFRFWFQgICAgICAgICAgICLJcnTpayBhZGF0OiIsSURDX1NUQVRJQyw1LDMwLDkwLDgKICAgIEVESVRURVhUICAgICAgICBJRENfVkFMVUVfREFUQSw1LDQwLDkwLDEyLCBXU19CT1JERVIgfCBXU19UQUJTVE9QCiAgICBHUk9VUEJPWCAgICAgICAgIkFsYXAiLCBJRENfRFdPUkRfQkFTRSwgMTIwLCAzMCwgODUsIDM3LCBCU19HUk9VUEJPWAogICAgQVVUT1JBRElPQlVUVE9OICJIZXhhZGVjaW3hbGlzIiwgSURDX0RXT1JEX0hFWCwgMTMwLCA0MCwgNjAsIDEwLCBXU19UQUJTVE9QCiAgICBBVVRPUkFESU9CVVRUT04gIkRlY2lt4WxpcyIsIElEQ19EV09SRF9ERUMsIDEzMCwgNTIsIDYwLCAxMCwgV1NfVEFCU1RPUAogICAgREVGUFVTSEJVVFRPTiAgICJPSyIsSURPSywxNDAsODAsMzAsMTEsV1NfR1JPVVAKICAgIFBVU0hCVVRUT04gICAiTelnc2UiLElEQ0FOQ0VMLDE3NSw4MCwzMCwxMSxXU19HUk9VUApFTkQKCklERF9FRElUX0JJTkFSWSBESUFMT0cgRElTQ0FSREFCTEUgIDIyLCAxNywgMjEwLCAxMDAKU1RZTEUgRFNfTU9EQUxGUkFNRSB8IERTX05PSURMRU1TRyB8IFdTX0NBUFRJT04gfCBXU19TWVNNRU5VCkNBUFRJT04gIkJpbuFyaXMgc3plcmtlc3p06XNlIgpGT05UIDgsICJNUyBTaGVsbCBEbGciCkJFR0lOCiAgICBMVEVYVCAgICAgICAgICAgIslydOlrIG5ldmU6IixJRENfU1RBVElDLDUsNSwxMTksOAogICAgRURJVFRFWFQgICAgICAgIElEQ19WQUxVRV9OQU1FLDUsMTUsMjAwLDEyLCBXU19CT1JERVIgfCBXU19UQUJTVE9QIHwgRVNfQVVUT0hTQ1JPTEx8IFdTX0RJU0FCTEVECiAgICBMVEVYVCAgICAgICAgICAgIslydOlrIGFkYXQ6IixJRENfU1RBVElDLDUsMzAsOTAsOAogICAgQ09OVFJPTCAgICAgICAgICIiLElEQ19WQUxVRV9EQVRBLCJIZXhFZGl0IixXU19UQUJTVE9QLDQsNDAsMTYwLDQwCiAgICBERUZQVVNIQlVUVE9OICAgIk9LIixJRE9LLDE0MCw4MCwzMCwxMSxXU19HUk9VUAogICAgUFVTSEJVVFRPTiAgICJN6WdzZSIsSURDQU5DRUwsMTc1LDgwLDMwLDExLFdTX0dST1VQCkVORAoKLyoKICogU3RyaW5nIFRhYmxlCiAqLwoKU1RSSU5HVEFCTEUgRElTQ0FSREFCTEUKQkVHSU4KICAgIElEU19MSVNUX0NPTFVNTl9OQU1FICAgICJO6XYiCiAgICBJRFNfTElTVF9DT0xVTU5fVFlQRSAgICAiVO1wdXMiCiAgICBJRFNfTElTVF9DT0xVTU5fREFUQSAgICAiQWRhdCIKRU5ECgpTVFJJTkdUQUJMRSBESVNDQVJEQUJMRQpCRUdJTgogICAgSURTX0FQUF9USVRMRSAgICAgICAgICAgIlJlZ2lzenRy4WNp83MgYWRhdGLhemlzIHN6ZXJrZXN6dPUiCkVORAoKU1RSSU5HVEFCTEUgRElTQ0FSREFCTEUKQkVHSU4KICAgIElEX1JFR0lTVFJZX01FTlUgICAgICAgICJQYXJhbmNzb2thdCB0YXJ0YWxtYXogYXogZWfpc3ogcmVnaXN6dHLhY2nzcyBhZGF0YuF6aXNzYWwgdPZydOlu9SBtdW5r4WhveiIKICAgIElEX0VESVRfTUVOVSAgICAgICAgICAgICJQYXJhbmNzb2thdCB0YXJ0YWxtYXogYXog6XJ06Wsg6XMga3VsY3NzemVya2VzenTpc2hleiIKICAgIElEX1ZJRVdfTUVOVSAgICAgICAgICAgICJQYXJhbmNzb2thdCB0YXJ0YWxtYXogYSByZWdpc3p0cuFjafNzIGFkYXRi4XppcyBhYmxhayB0ZXN0cmVzemFi4XPhdmFsIGthcGNzb2xhdGJhbiIKICAgIElEX0ZBVk9SSVRFU19NRU5VICAgICAgICJQYXJhbmNzb2thdCB0YXJ0YWxtYXogYSBneWFrcmFuIGhvenrhZulydCBrdWxjc29raG96IgogICAgSURfSEVMUF9NRU5VICAgICAgICAgICAgIlBhcmFuY3Nva2F0IHRhcnRhbG1heiBhIFJlZ2lzenRy4WNp83MgYWRhdGLhemlzIHN6ZXJrZXN6dPUgc/pn82rhbmFrIOlzIGluZm9ybeFjafNq4W5hayBtZWdqZWxlbu106XPpaGV6IgogICAgSURfRURJVF9ORVdfTUVOVSAgICAgICAgIlBhcmFuY3Nva2F0IHRhcnRhbG1heiD6aiBrdWxjc29rIOlzIOlydOlrZWsgbOl0cmVob3rhc+Fob3oiCkVORAoKU1RSSU5HVEFCTEUgRElTQ0FSREFCTEUKQkVHSU4KICAgIElEX0VESVRfTU9ESUZZICAgICAgICAgICJN82Rvc+10amEgZWd5IOlydOlrIGFkYXThdCIKICAgIElEX0VESVRfTkVXX0tFWSAgICAgICAgICJIb3p64WFkIGVneSD6aiBrdWxjc290IgogICAgSURfRURJVF9ORVdfU1RSSU5HVkFMVUUgIkhvenrhYWQgZWd5IPpqIHN6dHJpbmcg6XJ06WtldCIKICAgIElEX0VESVRfTkVXX0JJTkFSWVZBTFVFICJIb3p64WFkIGVneSD6aiBiaW7hcmlzIOlydOlrZXQiCiAgICBJRF9FRElUX05FV19EV09SRFZBTFVFICAiSG96euFhZCBlZ3kg+mogZHVwbGFzevMg6XJ06WtldCIKICAgIElEX1JFR0lTVFJZX0lNUE9SVFJFR0lTVFJZRklMRSAiRWd5IHN69nZlZ2bhamx0IGltcG9ydOFsIGEgcmVnaXN6dHLhY2nzcyBhZGF0YuF6aXNiYSIKICAgIElEX1JFR0lTVFJZX0VYUE9SVFJFR0lTVFJZRklMRQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIkF6IGVn6XN6IHJlZ2lzenRy4WNp83MgYWRhdGLhemlzdCBraWV4cG9ydOFsamEgZWd5IHN69nZlZ2bhamxiYSIKICAgIElEX1JFR0lTVFJZX0NPTk5FQ1RORVRXT1JLUkVHSVNUUlkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICJLYXBjc29s82RpayBlZ3kgdOF2b2xpIHN64W3tdPNn6XAgcmVnaXN6dHLhY2nzcyBhZGF0YuF6aXPhaG96IgogICAgSURfUkVHSVNUUllfRElTQ09OTkVDVE5FVFdPUktSRUdJU1RSWQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIkxla2FwY3NvbPNkaWsgZWd5IHThdm9saSBzeuFt7XTzZ+lwIHJlZ2lzenRy4WNp83MgYWRhdGLhemlz4XLzbCIKICAgIElEX1JFR0lTVFJZX1BSSU5UICAgICAgICJLaW55b210YXRqYSBheiBlZ+lzeiByZWdpc3p0cuFjafNzIGFkYXRi4Xppc3QsIHZhZ3kgYW5uYWsgZWd5IHLpc3rpdCIKLyogICAgSURfSEVMUF9IRUxQVE9QSUNTICAgICAgIk1lZ255aXRqYSBhIFJlZ2lzenRy4WNp83MgYWRhdGLhemlzIHN6ZXJrZXN6dPUgc/pn82rhdCIgKi8KSURfSEVMUF9BQk9VVCAgICAgICAgICAgIk1lZ2plbGVu7XRpIGEgcHJvZ3JhbSBpbmZvcm3hY2nza2F0LCB2ZXJ6afNzeuFtb3QsIOlzIGEgc3plcnr1aSBqb2dvdCIKRU5ECgpTVFJJTkdUQUJMRSBESVNDQVJEQUJMRQpCRUdJTgogICAgSURfUkVHSVNUUllfRVhJVCAgICAgICAgIktpbOlwIGEgUmVnaXN6dHLhY2nzcyBhZGF0YuF6aXMgc3plcmtlc3p09WL1bCIKICAgIElEX0ZBVk9SSVRFU19BRERUT0ZBVk9SSVRFUyAiS3VsY3Nva2F0IGFkIGhvenrhIGEga2VkdmVuY2VrIGxpc3ThaG96IgogICAgSURfRkFWT1JJVEVTX1JFTU9WRUZBVk9SSVRFICJLdWxjc29rYXQgdPZy9mwgYSBrZWR2ZW5jZWsgbGlzdOFi82wiCiAgICBJRF9WSUVXX1NUQVRVU0JBUiAgICAgICAiTWVnamVsZW7tdGkgdmFneSBlbHT8bnRldGkgYXog4WxsYXBvdHNvcnQiCiAgICBJRF9WSUVXX1NQTElUICAgICAgICAgICAiTWVnduFsdG96dGF0amEgYSBr6XQgYWJsYWty6XN6IHBpeu1jafNq4XQiCiAgICBJRF9WSUVXX1JFRlJFU0ggICAgICAgICAiRnJpc3PtdGkgYXogYWJsYWtvdCIKICAgIElEX0VESVRfREVMRVRFICAgICAgICAgICJU9nJsaSBhIGtpamVs9mzpc3QiCiAgICBJRF9FRElUX1JFTkFNRSAgICAgICAgICAiwXRuZXZlemkgYSBraWplbPZs6XN0IgogICAgSURfRURJVF9DT1BZS0VZTkFNRSAgICAgIkEga2lqZWz2bHQga3VsY3MgbmV26XQgbeFzb2xqYSBhIHbhZ/NsYXByYSIKICAgIElEX0VESVRfRklORCAgICAgICAgICAgICJNZWdrZXJlcyBlZ3kgc3r2dmVnZXMgc3p0cmluZ2V0IGVneSBrdWxjc2Jhbiwg6XJ06WtiZW4sIHZhZ3kgYWRhdGJhbiIKICAgIElEX0VESVRfRklORE5FWFQgICAgICAgICJLZXJlc2kgYSBr9nZldGtlevUgZWz1Zm9yZHVs4XN0IGF6IGVs9Xr1IGtlcmVz6XN09Wwga2V6ZHZlIgpFTkQKClNUUklOR1RBQkxFIERJU0NBUkRBQkxFCkJFR0lOCiAgICBJRFNfRVJST1IJCSAgICAiSGliYSIKICAgIElEU19CQURfS0VZCQkgICAgIk5lbSB0dWRvbSBsZWvpcm5pIGEga3VsY3NvdDogJyVzJyIKICAgIElEU19CQURfVkFMVUUgICAgICAgICAgICJOZW0gdHVkb20gbGVr6XJuaSBheiDpcnTpa2V0OiAnJXMnIgogICAgSURTX1VOU1VQUE9SVEVEX1RZUEUgICAgIk5lbSB0dWRvbSBlenQgYSB07XB1c/oga3VsY3NvdCBzemVya2VzenRlbmk6ICglbGQpIgogICAgSURTX1RPT19CSUdfVkFMVUUgICAgICAgIkF6IOlydOlrIHT6bCBuYWd5OiAoJWxkKSIKICAgIElEU19ERUxFVEVfQk9YX1RJVExFICAgICLJcnTpa3T2cmzpcyBq83bhaGFneeFzYSIKICAgIElEU19ERUxFVEVfQk9YX1RFWFQgICAgICJCaXp0b3MgaG9neSB09nL2bG5pIHN6ZXJldG7pIGEoeikgJyVzJyBrdWxjc290PyIKICAgIElEU19ORVdLRVkgICAgICAgICAgICAgICLaaiBrdWxjcyAjJWQiCiAgICBJRFNfTkVXVkFMVUUgICAgICAgICAgICAi2mog6XJ06WsgIyVkIgogICAgSURTX05PVEZPVU5EICAgICAgICAgICAgIkEoeikgJyVzJyBrZXJlc+lzaSBraWZlamV66XMgbmVtIHRhbOFsaGF08yIKRU5ECgovKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCgovKgogKiBURVhUSU5DTFVERQogKi8KCjEgVEVYVElOQ0xVREUgRElTQ0FSREFCTEUKQkVHSU4KICAgICJyZXNvdXJjZS5oXDAiCkVORAoKCgovKgogKiBTdHJpbmcgVGFibGUKICovCgovKgogKlNUUklOR1RBQkxFIERJU0NBUkRBQkxFCiAqQkVHSU4KICogICAgSURfSEVMUF9IRUxQVE9QSUNTICAgICAgIk1lZ255aXRqYSBhIFJlZ2lzenRy4WNp83MgYWRhdGLhemlzIHN6ZXJrZXN6dPUgc/pn82rhdC4iCiAqICAgIElEX0hFTFBfQUJPVVQgICAgICAgICAgICJNZWdqZWxlbu10aSBhIHByb2dyYW0gaW5mb3Jt4WNp82thdCwgdmVyemnzc3rhbW90LCDpcyBhIHN6ZXJ69Wkgam9nb3QuIgogKkVORAogKi8KCi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8K