LyoKICogUmVnZWRpdCByZXNvdXJjZXMKICoKICogQ29weXJpZ2h0IDIwMDIgUm9iZXJ0IERpY2tlbnNvbgogKiBDb3B5cmlnaHQgMjAwMyBWaW5jZW50IELpcm9uCiAqCiAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwogKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKICogdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiAqCiAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAogKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgogKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQogKiBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgogKgogKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCiAqIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgIDAyMTExLTEzMDcgIFVTQQogKi8KCkxBTkdVQUdFIExBTkdfRlJFTkNILCBTVUJMQU5HX05FVVRSQUwKCi8qCiAqIE1lbnUKICovCgpJRENfUkVHRURJVCBNRU5VIERJU0NBUkRBQkxFCkJFR0lOCiAgICBQT1BVUCAiJkZpY2hpZXIiCiAgICBCRUdJTgogICAgICAgIE1FTlVJVEVNICImUXVpdHRlciIsICAgICAgICAgICAgICAgICAgICAgICBJRF9SRUdJU1RSWV9FWElUCiAgICBFTkQKICAgIFBPUFVQICImQWlkZSIKICAgIEJFR0lOCiAgICAgICAgTUVOVUlURU0gIiZBIHByb3Bvcy4uLiIsICAgICAgICAgICAgICAgICAgSURfSEVMUF9BQk9VVAogICAgRU5ECkVORAoKSURSX1JFR0VESVRfTUVOVSBNRU5VIERJU0NBUkRBQkxFCkJFR0lOCiAgICBQT1BVUCAiJlJlZ2lzdHJlcyIKICAgIEJFR0lOCiAgICAgICAgTUVOVUlURU0gIiZJbXBvcnRlciB1biBmaWNoaWVyIGRlIHJlZ2lzdHJlcy4uLiIsICAgIElEX1JFR0lTVFJZX0lNUE9SVFJFR0lTVFJZRklMRQogICAgICAgIE1FTlVJVEVNICImRXhwb3J0ZXIgdW4gZmljaGllciBkZSByZWdpc3RyZXMuLi4iLCAgICBJRF9SRUdJU1RSWV9FWFBPUlRSRUdJU1RSWUZJTEUKICAgICAgICBNRU5VSVRFTSBTRVBBUkFUT1IKICAgICAgICBNRU5VSVRFTSAiJkNvbm5lY3RlciDgIGRlcyByZWdpc3RyZXMgdmlhIGxlIHLpc2VhdS4uLiIsIElEX1JFR0lTVFJZX0NPTk5FQ1RORVRXT1JLUkVHSVNUUlksIEdSQVlFRAogICAgICAgIE1FTlVJVEVNICImROljb25uZWN0ZXIgZGUgcmVnaXN0cmVzIHLpc2VhdS4uLiIsIElEX1JFR0lTVFJZX0RJU0NPTk5FQ1RORVRXT1JLUkVHSVNUUlksIEdSQVlFRAogICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgIE1FTlVJVEVNICJJbSZwcmltZXJcdEN0cmwrUCIsICAgICAgICAgICAgICBJRF9SRUdJU1RSWV9QUklOVCwgR1JBWUVECiAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgTUVOVUlURU0gIiZRdWl0dGVyIiwgICAgICAgICAgICAgICAgICAgICAgIElEX1JFR0lTVFJZX0VYSVQKICAgIEVORAogICAgUE9QVVAgIiZFZGl0aW9uIgogICAgQkVHSU4KICAgICAgICBNRU5VSVRFTSAiJk1vZGlmaWVyIiwgICAgICAgICAgICAgICAgICAgICBJRF9FRElUX01PRElGWQogICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgIFBPUFVQICImTm91dmVsbGUiCiAgICAgICAgQkVHSU4KICAgICAgICAgICAgTUVOVUlURU0gIiZDbOkiLCAgICAgICAgICAgICAgICAgICAgICAgIElEX0VESVRfTkVXX0tFWQogICAgICAgICAgICBNRU5VSVRFTSBTRVBBUkFUT1IKICAgICAgICAgICAgTUVOVUlURU0gIlZhbGV1ciBjJmhh7m5lIiwgICAgICAgICAgICAgICBJRF9FRElUX05FV19TVFJJTkdWQUxVRQogICAgICAgICAgICBNRU5VSVRFTSAiVmFsZXVyICZiaW5haXJlIiwgICAgICAgICAgICAgICBJRF9FRElUX05FV19CSU5BUllWQUxVRQogICAgICAgICAgICBNRU5VSVRFTSAiVmFsZXVyICZtb3QgZG91YmxlIiwgICAgICAgICAgICAgICAgSURfRURJVF9ORVdfRFdPUkRWQUxVRQogICAgICAgIEVORAogICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgIE1FTlVJVEVNICImU3VwcHJpbWVyXHREZWwiLCAgICAgICAgICAgICAgICBJRF9FRElUX0RFTEVURQogICAgICAgIE1FTlVJVEVNICJSZW4mb21tZXJcdEYyIiwgICAgICAgICAgICAgICAgICBJRF9FRElUX1JFTkFNRQogICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgIE1FTlVJVEVNICImQ29waWVyIGxlIG5vbSBkZSBsYSBjbOkiLCAgICAgICAgICAgICAgSURfRURJVF9DT1BZS0VZTkFNRQogICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgIE1FTlVJVEVNICImUmVjaGVyY2hlclx0Q3RybCtGIiwgICAgICAgICAgICAgICBJRF9FRElUX0ZJTkQsIEdSQVlFRAogICAgICAgIE1FTlVJVEVNICJTdWkmdmFudFx0RjMiLCAgICAgICAgICAgICAgSURfRURJVF9GSU5ETkVYVCwgR1JBWUVECiAgICBFTkQKICAgIFBPUFVQICImQWZmaWNoYWdlIgogICAgQkVHSU4KICAgICAgICBNRU5VSVRFTSAiJkJhcnJlIGQn6XRhdCIsICAgICAgICAgICAgICAgICBJRF9WSUVXX1NUQVRVU0JBUgogICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgIE1FTlVJVEVNICImU+lwYXJhdGV1ciIsICAgICAgICAgICAgICAgICAgICAgIElEX1ZJRVdfU1BMSVQKICAgICAgICBNRU5VSVRFTSBTRVBBUkFUT1IKICAgICAgICBNRU5VSVRFTSAiJlJhZnJh7mNoaXJcdEY1IiwgICAgICAgICAgICAgICAgSURfVklFV19SRUZSRVNICiAgICBFTkQKICAgIFBPUFVQICImRmF2b3JpcyIKICAgIEJFR0lOCiAgICAgICAgTUVOVUlURU0gIiZBam91dGVyIGF1eCBGYXZvcmlzIiwgICAgICAgICAgSURfRkFWT1JJVEVTX0FERFRPRkFWT1JJVEVTCiAgICAgICAgLCBHUkFZRUQKICAgICAgICBNRU5VSVRFTSAiJlJldGlyZXIgZGVzIEZhdm9yaXMiLCAgICAgICAgICAgSURfRkFWT1JJVEVTX1JFTU9WRUZBVk9SSVRFCiAgICAgICAgLCBHUkFZRUQKICAgIEVORAogICAgUE9QVVAgIiZBaWRlIgogICAgQkVHSU4KICAgICAgICBNRU5VSVRFTSAiJlN1amV0cyBkZSBsJ2FpZGUiLCAgICAgICAgICAgICAgICBJRF9IRUxQX0hFTFBUT1BJQ1MKICAgICAgICBNRU5VSVRFTSBTRVBBUkFUT1IKICAgICAgICBNRU5VSVRFTSAiJkEgcHJvcG9zIGRlIGwn6WRpdGV1ciBkZSByZWdpc3RyZXMiLCAgICAgIElEX0hFTFBfQUJPVVQKICAgIEVORApFTkQKCklEUl9QT1BVUF9NRU5VUyBNRU5VIERJU0NBUkRBQkxFCkJFR0lOCiAgUE9QVVAgIiIKICBCRUdJTgoJTUVOVUlURU0gIiZNb2RpZmllciIsICAgICAgICAgICAgICAgICAgICAgSURfRURJVF9NT0RJRlkKCU1FTlVJVEVNICJNb2RpZmllciBkb25u6WVzIGJpbmFpcmVzIiwgICAgICAgICAgSURfRURJVF9NT0RJRllfQklOCglNRU5VSVRFTSBTRVBBUkFUT1IKCU1FTlVJVEVNICImU3VwcHJpbWVyXHREZWwiLCAgICAgICAgICAgICAgICBJRF9FRElUX0RFTEVURQoJTUVOVUlURU0gIlJlbiZvbW1lciIsICAgICAgICAgICAgICAgICAgICAgSURfRURJVF9SRU5BTUUKICBFTkQKICBQT1BVUCAiIgogIEJFR0lOCiAgICAgICAgUE9QVVAgIiZOb3V2ZWxsZSIKICAgICAgICBCRUdJTgogICAgICAgICAgICBNRU5VSVRFTSAiJkNs6SIsICAgICAgICAgICAgICAgICAgICAgICAgSURfRURJVF9ORVdfS0VZCiAgICAgICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgICAgICBNRU5VSVRFTSAiVmFsZXVyIGMmaGHubmUiLCAgICAgICAgICAgICAgIElEX0VESVRfTkVXX1NUUklOR1ZBTFVFCiAgICAgICAgICAgIE1FTlVJVEVNICJWYWxldXIgJmJpbmFpcmUiLCAgICAgICAgICAgICAgIElEX0VESVRfTkVXX0JJTkFSWVZBTFVFCiAgICAgICAgICAgIE1FTlVJVEVNICJWYWxldXIgJm1vdCBkb3VibGUiLCAgICAgICAgICAgICAgICBJRF9FRElUX05FV19EV09SRFZBTFVFCiAgICAgICAgRU5ECiAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgTUVOVUlURU0gIiZTdXBwcmltZXJcdERlbCIsICAgICAgICAgICAgICAgIElEX0VESVRfREVMRVRFCiAgICAgICAgTUVOVUlURU0gIlJlbiZvbW1lclx0RjIiLCAgICAgICAgICAgICAgICAgIElEX0VESVRfUkVOQU1FCiAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgTUVOVUlURU0gIiZDb3BpZXIgbGUgbm9tIGRlIGxhIGNs6SIsICAgICAgICAgICAgICBJRF9FRElUX0NPUFlLRVlOQU1FCiAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgTUVOVUlURU0gIiZSZWNoZXJjaGVyXHRDdHJsK0YiLCAgICAgICAgICAgICAgIElEX0VESVRfRklORCwgR1JBWUVECiAgRU5ECkVORAoKLyoKICogRGlhbG9nCiAqLwoKSUREX0FCT1VUQk9YIERJQUxPRyBESVNDQVJEQUJMRSAgMjIsIDE3LCAyMzAsIDc1ClNUWUxFIERTX01PREFMRlJBTUUgfCBXU19DQVBUSU9OIHwgV1NfU1lTTUVOVQpDQVBUSU9OICLAIHByb3BvcyIKRk9OVCA4LCAiTVMgU2hlbGwgRGxnIgpCRUdJTgogICAgSUNPTiAgICAgICAgICAgIElESV9SRUdFRElULElESV9SRUdFRElULDE0LDksMTYsMTYKICAgIExURVhUICAgICAgICAgICAiUmVnZWRpdCBSZWFjdE9TIFZlcnNpb24gMS4wIixJRENfU1RBVElDLDQ5LDEwLDExOSw4LAogICAgICAgICAgICAgICAgICAgIFNTX05PUFJFRklYCiAgICBMVEVYVCAgICAgICAgICAgIkNvcHlyaWdodCAoQykgMjAwMiBwYXIgbCfpcXVpcGUgZGUgUmVhY3RPUyIsSURDX1NUQVRJQyw0OSwyMCwxMTksOAogICAgREVGUFVTSEJVVFRPTiAgICJPSyIsSURPSywxOTUsNiwzMCwxMSxXU19HUk9VUApFTkQKCklERF9FRElUX1NUUklORyBESUFMT0cgRElTQ0FSREFCTEUgIDIyLCAxNywgMjEwLCA3NQpTVFlMRSBEU19NT0RBTEZSQU1FIHwgV1NfQ0FQVElPTiB8IFdTX1NZU01FTlUKQ0FQVElPTiAiyWRpdGV6IGMmaGHubmUiCkZPTlQgOCwgIk1TIFNoZWxsIERsZyIKQkVHSU4KICAgIExURVhUICAgICAgICAgICAiTm9tIGRlIHZhbGV1cjoiLElEQ19TVEFUSUMsNSw1LDExOSw4CiAgICBFRElUVEVYVCAgICAgICAgSURDX1ZBTFVFX05BTUUsNSwxNSwyMDAsMTIsIFdTX0JPUkRFUiB8IFdTX1RBQlNUT1AgfCBXU19ESVNBQkxFRAogICAgTFRFWFQgICAgICAgICAgICJEb25u6WVzIGRlIHZhbGV1cjoiLElEQ19TVEFUSUMsNSwzMCwxMTksOAogICAgRURJVFRFWFQgICAgICAgIElEQ19WQUxVRV9EQVRBLDUsNDAsMjAwLDEyLCBXU19CT1JERVIgfCBXU19UQUJTVE9QIHwgRVNfQVVUT0hTQ1JPTEwKICAgIERFRlBVU0hCVVRUT04gICAiT0siLElET0ssMTQwLDYwLDMwLDExLFdTX0dST1VQCiAgICBQVVNIQlVUVE9OICAgICAgIkFubnVsZXIiLElEQ0FOQ0VMLDE3NSw2MCwzMCwxMSxXU19HUk9VUApFTkQKCklERF9FRElUX0RXT1JEIERJQUxPRyBESVNDQVJEQUJMRSAgMjIsIDE3LCAyMTAsIDEwMApTVFlMRSBEU19NT0RBTEZSQU1FIHwgV1NfQ0FQVElPTiB8IFdTX1NZU01FTlUKQ0FQVElPTiAiyWRpdGV6IERXT1JEIgpGT05UIDgsICJNUyBTaGVsbCBEbGciCkJFR0lOCiAgICBMVEVYVCAgICAgICAgICAgIk5vbSBkZSB2YWxldXI6IixJRENfU1RBVElDLDUsNSwxMTksOAogICAgRURJVFRFWFQgICAgICAgIElEQ19WQUxVRV9OQU1FLDUsMTUsMjAwLDEyLCBXU19CT1JERVIgfCBXU19UQUJTVE9QIHwgV1NfRElTQUJMRUQKICAgIExURVhUICAgICAgICAgICAiRG9ubullcyBkZSB2YWxldXI6IixJRENfU1RBVElDLDUsMzAsOTAsOAogICAgRURJVFRFWFQgICAgICAgIElEQ19WQUxVRV9EQVRBLDUsNDAsOTAsMTIsIFdTX0JPUkRFUiB8IFdTX1RBQlNUT1AKICAgIEdST1VQQk9YICAgICAgICAiQmFzc2UiLCBJRENfRFdPUkRfQkFTRSwgMTIwLCAzMCwgODUsIDM3LCBCU19HUk9VUEJPWAogICAgQVVUT1JBRElPQlVUVE9OICJIZXhhZOljaW1hbGUiLCBJRENfRFdPUkRfSEVYLCAxMzAsIDQwLCA2MCwgMTAsIFdTX1RBQlNUT1AKICAgIEFVVE9SQURJT0JVVFRPTiAiROljaW1hbGUiLCBJRENfRFdPUkRfREVDLCAxMzAsIDUyLCA2MCwgMTAsIFdTX1RBQlNUT1AKICAgIERFRlBVU0hCVVRUT04gICAiT0siLElET0ssMTQwLDgwLDMwLDExLFdTX0dST1VQCiAgICBQVVNIQlVUVE9OICAgICAgIkFubnVsZXIiLElEQ0FOQ0VMLDE3NSw4MCwzMCwxMSxXU19HUk9VUApFTkQKCi8qCiAqIFN0cmluZyBUYWJsZQogKi8KClNUUklOR1RBQkxFIERJU0NBUkRBQkxFCkJFR0lOCiAgICBJRFNfTElTVF9DT0xVTU5fTkFNRSAgICAiTm9tIgogICAgSURTX0xJU1RfQ09MVU1OX1RZUEUgICAgIlR5cGUiCiAgICBJRFNfTElTVF9DT0xVTU5fREFUQSAgICAiVmFsZXVyIgpFTkQKClNUUklOR1RBQkxFIERJU0NBUkRBQkxFCkJFR0lOCiAgICBJRFNfQVBQX1RJVExFICAgICAgICAgICAiyWRpdGV1ciBkZSByZWdpc3RyZXMiCiAgICBJRENfUkVHRURJVCAgICAgICAgICAgICAiUkVHRURJVCIKICAgIElEQ19SRUdFRElUX0ZSQU1FICAgICAgICJSRUdFRElUX0ZSQU1FIgpFTkQKClNUUklOR1RBQkxFIERJU0NBUkRBQkxFCkJFR0lOCiAgICBJRF9SRUdJU1RSWV9NRU5VICAgICAgICAiQ29udGllbnQgZGVzIGNvbW1hbmRlcyBwb3VyIHRyYXZhaWxsZXIgc3VyIGxlcyByZWdpc3RyZXMgZGUgbWFuaehyZSBnbG9iYWxlIgogICAgSURfRURJVF9NRU5VICAgICAgICAgICAgIkNvbnRpZW50IGRlcyBjb21tYW5kZXMgcG91ciDpZGl0ZXIgZGVzIHZhbGV1cnMgb3UgZGVzIGNs6XMiCiAgICBJRF9WSUVXX01FTlUgICAgICAgICAgICAiQ29udGllbnQgZGVzIGNvbW1hbmRlcyBwb3VyIHBlcnNvbm5hbGlzZXIgbGEgZmVu6nRyZSBkZXMgcmVnaXN0cmVzIgogICAgSURfRkFWT1JJVEVTX01FTlUgICAgICAgIkNvbnRpZW50IGRlcyBjb21tYW5kZXMgcG91ciBhY2PpZGVyIGF1eCBjbOlzIGZy6XF1ZW1tZW50IHV0aWxpc+llcyIKICAgIElEX0hFTFBfTUVOVSAgICAgICAgICAgICJDb250aWVudCBkZXMgY29tbWFuZGVzIHBvdXIgYWZmaWNoZXIgZGUgbCdhaWRlIGV0IGRlIGwnaW5mb3JtYXRpb24g4CBwcm9wb3MgZGUgbCfpZGl0ZXVyIGRlIHJlZ2lzdHJlcyIKICAgIElEX0VESVRfTkVXX01FTlUgICAgICAgICJDb250aWVudCBkZXMgY29tbWFuZGVzIHBvdXIgY3LpZXIgZGUgbm91dmVsbGVzIGNs6XMgb3UgdmFsZXVycyIKRU5ECgpTVFJJTkdUQUJMRSBESVNDQVJEQUJMRQpCRUdJTgogICAgSURfRURJVF9NT0RJRlkgICAgICAgICAgIk1vZGlmaWUgbGVzIGRvbm7pZXMgZCd1bmUgdmFsZXVyIgogICAgSURfRURJVF9ORVdfS0VZICAgICAgICAgIkFqb3V0ZSB1bmUgbm91dmVsbGUgY2zpIgogICAgSURfRURJVF9ORVdfU1RSSU5HVkFMVUUgIkFqb3V0ZSB1bmUgbm91dmVsbGUgdmFsZXVyIGNoYe5uZSIKICAgIElEX0VESVRfTkVXX0JJTkFSWVZBTFVFICJBam91dGUgdW5lIG5vdXZlbGxlIHZhbGV1ciBiaW5haXJlIgogICAgSURfRURJVF9ORVdfRFdPUkRWQUxVRSAgIkFqb3V0ZSB1bmUgbm91dmVsbGUgdmFsZXVyIG1vdCBkb3VibGUiCiAgICBJRF9SRUdJU1RSWV9JTVBPUlRSRUdJU1RSWUZJTEUgIkltcG9ydGUgdW4gZmljaGllciB0ZXh0ZSBkYW5zIGxlcyByZWdpc3RyZXMiCiAgICBJRF9SRUdJU1RSWV9FWFBPUlRSRUdJU1RSWUZJTEUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICJFeHBvcnRlIHRvdXQgb3UgdW5lIHBhcnRpZSBkZXMgcmVnaXN0cmVzIGRhbnMgdW4gZmljaGllciB0ZXh0ZSIKICAgIElEX1JFR0lTVFJZX0NPTk5FQ1RORVRXT1JLUkVHSVNUUlkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICJDb25uZWN0ZSBhdXggcmVnaXN0cmVzIGQndW4gb3JkaW5hdGV1ciBkaXN0YW50IgogICAgSURfUkVHSVNUUllfRElTQ09OTkVDVE5FVFdPUktSRUdJU1RSWQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIkTpY29ubmVjdGUgZGVzIHJlZ2lzdHJlcyBkJ3VuIG9yZGluYXRldXIgZGlzdGFudCIKICAgIElEX1JFR0lTVFJZX1BSSU5UICAgICAgICJJbXByaW1lIHRvdXQgb3UgdW5lIHBhcnRpZSBkZXMgcmVnaXN0cmVzIgovKiAgICBJRF9IRUxQX0hFTFBUT1BJQ1MgICAgICAiT3V2cmUgbCdhaWRlIGRlIGwn6WRpdGV1ciBkZSByZWdpc3RyZXMiICovCiAgICBJRF9IRUxQX0FCT1VUICAgICAgICAgICAiQWZmaWNoZSBkZSBsJ2luZm9ybWF0aW9uIHN1ciBsZSBwcm9ncmFtbWUsIGxlIG51belybyBkZSB2ZXJzaW9uIGV0IGxlIGNvcHlyaWdodCIKRU5ECgpTVFJJTkdUQUJMRSBESVNDQVJEQUJMRQpCRUdJTgogICAgSURfUkVHSVNUUllfRVhJVCAgICAgICAgIlF1aXR0ZSBsJ+lkaXRldXIgZGUgcmVnaXN0cmVzIgogICAgSURfRkFWT1JJVEVTX0FERFRPRkFWT1JJVEVTICJBam91dGUgZGVzIGNs6XMg4CBsYSBsaXN0ZSBkZXMgRmF2b3JpcyIKICAgIElEX0ZBVk9SSVRFU19SRU1PVkVGQVZPUklURSAiUmV0aXJlIGRlcyBjbOlzIGRlIGxhIGxpc3RlIGRlcyBGYXZvcmlzIgogICAgSURfVklFV19TVEFUVVNCQVIgICAgICAgIk1vbnRyZSBvdSBjYWNoZSBsYSBiYXJyZSBkJ+l0YXQiCiAgICBJRF9WSUVXX1NQTElUICAgICAgICAgICAiQ2hhbmdlIGxhIHBvc2l0aW9uIGRlIGxhIHPpcGFyYXRpb24gZW50cmUgbGVzIGRldXggcGFubmVhdXgiCiAgICBJRF9WSUVXX1JFRlJFU0ggICAgICAgICAiUmFmcmHuY2hpdCBsYSBmZW7qdHJlIgogICAgSURfRURJVF9ERUxFVEUgICAgICAgICAgIlN1cHByaW1lIGxhIHPpbGVjdGlvbiIKICAgIElEX0VESVRfUkVOQU1FICAgICAgICAgICJSZW5vbW1lIGxhIHPpbGVjdGlvbiIKICAgIElEX0VESVRfQ09QWUtFWU5BTUUgICAgICJDb3BpZSBsZSBub20gZGUgbGEgY2zpIHPpbGVjdGlvbm7pZSB2ZXJzIGxlIHByZXNzZS1wYXBpZXIiCiAgICBJRF9FRElUX0ZJTkQgICAgICAgICAgICAiUmVjaGVyY2hlIGR1IHRleHRlIGRhbnMgdW5lIGNs6SwgdW5lIHZhbGV1ciBvdSBkZXMgZG9ubullcyIKICAgIElEX0VESVRfRklORE5FWFQgICAgICAgICJSZWNoZXJjaGUgbCdvY2N1cmVuY2Ugc3VpdmFudGUgZHUgdGV4dGUgZGUgbGEgZGVybmnocmUgcmVjaGVyY2hlIgpFTkQKClNUUklOR1RBQkxFIERJU0NBUkRBQkxFCkJFR0lOCiAgICBJRFNfRVJST1IJCSAgICAiRXJyZXVyIgogICAgSURTX0JBRF9LRVkJCSAgICAiTmUgcGV1dCBwYXMgcXVlc3Rpb25uZXIgbGEgY2zpICclcyciCiAgICBJRFNfQkFEX1ZBTFVFICAgICAgICAgICAiTmUgcGV1dCBwYXMgcXVlc3Rpb25uZXIgbGEgdmFsZXVyICclcyciCiAgICBJRFNfVU5TVVBQT1JURURfVFlQRSAgICAiTmUgcGV1dCBwYXMg6WRpdGVyIGRlcyBjbOlzIGRlIGNlIHR5cGUgKCVsZCkiCiAgICBJRFNfVE9PX0JJR19WQUxVRSAgICAgICAiTGEgdmFsZXVyIGVzdCB0cm9wIGdyYW5kZSAoJWxkKSIKICAgIElEU19ERUxFVEVfQk9YX1RJVExFICAgICJDb25maXJtZXogbCdlZmZhY2VtZW50IGRlIHZhbGV1ciIKICAgIElEU19ERUxFVEVfQk9YX1RFWFQgICAgICLKdGVzIHZvdXMgc/tyIHZvdXMgdm91bGV6IHN1cHByaW1lciBsYSB2YWxldXIgJyVzJz8iCiAgICBJRFNfTkVXS0VZICAgICAgICAgICAgICAiTm91dmVsbGUgQ2zpICMlZCIKICAgIElEU19ORVdWQUxVRSAgICAgICAgICAgICJOb3V2ZWxsZSBWYWxldXIgIyVkIgpFTkQKCi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KCgovKgogKiBEaWFsb2cKICovCgpJRERfRElBTE9HMSBESUFMT0cgRElTQ0FSREFCTEUgIDUwLCA1MCwgMjY4LCA5OApTVFlMRSBEU18zRExPT0sgfCBEU19DT05UUk9MIHwgV1NfQ0hJTEQgfCBXU19WSVNJQkxFIHwgV1NfQ0xJUFNJQkxJTkdTIHwKICAgIFdTX0JPUkRFUgpGT05UIDgsICJNUyBTaGVsbCBEbGciCkJFR0lOCkVORAoKSUREX0RJQUxPRzIgRElBTE9HIERJU0NBUkRBQkxFICAwLCAwLCAxODcsIDk1ClNUWUxFIERTX01PREFMRlJBTUUgfCBXU19QT1BVUCB8IFdTX0NBUFRJT04gfCBXU19TWVNNRU5VCkNBUFRJT04gIkJv7nRlIGRlIGRpYWxvZ3VlIgpGT05UIDgsICJNUyBTaGVsbCBEbGciCkJFR0lOCiAgICBERUZQVVNIQlVUVE9OICAgIk9LIixJRE9LLDEzMCw3LDUwLDE0CiAgICBQVVNIQlVUVE9OICAgICAgIkFubnVsZXIiLElEQ0FOQ0VMLDEzMCwyNCw1MCwxNApFTkQKCgovKgogKiBURVhUSU5DTFVERQogKi8KCjEgVEVYVElOQ0xVREUgRElTQ0FSREFCTEUKQkVHSU4KICAgICJyZXNvdXJjZS5oXDAiCkVORAoKCgovKgogKiBTdHJpbmcgVGFibGUKICovCgovKgogKlNUUklOR1RBQkxFIERJU0NBUkRBQkxFCiAqQkVHSU4KICogICAgSURfSEVMUF9IRUxQVE9QSUNTICAgICAgIk91dnJlIGwnYWlkZSBkZSBsJ+lkaXRldXIgZGUgcmVnaXN0cmVzLiIKICogICAgSURfSEVMUF9BQk9VVCAgICAgICAgICAgIkFmZmljaGUgZGUgbCdpbmZvcm1hdGlvbiBzdXIgbGUgcHJvZ3JhbW1lLCBsZSBudW3pcm8gZGUgdmVyc2lvbiBldCBsZSBjb3B5cmlnaHQuIgogKkVORAogKi8KCi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8K