LyoKICogUmVnZWRpdCByZXNvdXJjZXMKICoKICogQ29weXJpZ2h0IDIwMDIgUm9iZXJ0IERpY2tlbnNvbgogKgogKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCiAqIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgogKgogKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKICogTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KICoKICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwogKiBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCiAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BICAwMjExMS0xMzA3ICBVU0EKICovCgpMQU5HVUFHRSBMQU5HX1BPTElTSCwgU1VCTEFOR19ERUZBVUxUCgovKgogKiBNZW51CiAqLwoKSURDX1JFR0VESVQgTUVOVSBESVNDQVJEQUJMRQpCRUdJTgogICAgUE9QVVAgIiZQbGlrIgogICAgQkVHSU4KICAgICAgICBNRU5VSVRFTSAiWmEma2/xY3oiLCAgICAgICAgICAgICAgICAgICAgICAgSURfUkVHSVNUUllfRVhJVAogICAgRU5ECiAgICBQT1BVUCAiJkhlbHAiCiAgICBCRUdJTgogICAgICAgIE1FTlVJVEVNICImQWJvdXQgLi4uIiwgICAgICAgICAgICAgICAgICBJRF9IRUxQX0FCT1VUCiAgICBFTkQKRU5ECgpJRFJfUkVHRURJVF9NRU5VIE1FTlUgRElTQ0FSREFCTEUKQkVHSU4KICAgIFBPUFVQICImUmVqZXN0ciIKICAgIEJFR0lOCiAgICAgICAgTUVOVUlURU0gIiZJbXBvcnR1aiByZWplc3RyLi4uIiwgICAgICAgIElEX1JFR0lTVFJZX0lNUE9SVFJFR0lTVFJZRklMRQogICAgICAgIE1FTlVJVEVNICImRWtzcG9ydHVqIHJlamVzdHIuLi4iLCAgICAgICBJRF9SRUdJU1RSWV9FWFBPUlRSRUdJU1RSWUZJTEUKICAgICAgICBNRU5VSVRFTSBTRVBBUkFUT1IKICAgICAgICBNRU5VSVRFTSAiJlBvZLO5Y3ogcmVqZXN0ciBzaWVjaW93eS4uLiIsSURfUkVHSVNUUllfQ09OTkVDVE5FVFdPUktSRUdJU1RSWSwgR1JBWUVECiAgICAgICAgTUVOVUlURU0gIiZPZLO5Y3ogcmVqZXN0ciBzaWVjaW93eS4uLiIsIElEX1JFR0lTVFJZX0RJU0NPTk5FQ1RORVRXT1JLUkVHSVNUUlksIEdSQVlFRAogICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgIE1FTlVJVEVNICImRHJ1a3VqXHRDdHJsK1AiLCAgICAgICAgICAgICBJRF9SRUdJU1RSWV9QUklOVCwgR1JBWUVECiAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgTUVOVUlURU0gIlphJmtv8WN6IiwgICAgICAgICAgICAgICAgICAgIElEX1JFR0lTVFJZX0VYSVQKICAgIEVORAogICAgUE9QVVAgIiZFZHljamEiCiAgICBCRUdJTgogICAgICAgIE1FTlVJVEVNICImTW9keWZpa3VqIiwgICAgICAgICAgICAgICAgICBJRF9FRElUX01PRElGWQogICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgIFBPUFVQICImTm93eSIKICAgICAgICBCRUdJTgogICAgICAgICAgICBNRU5VSVRFTSAiJktsdWN6IiwgICAgICAgICAgICAgICAgICBJRF9FRElUX05FV19LRVkKICAgICAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgICAgIE1FTlVJVEVNICImRGFuYSB0ZWtzdG93YSIsICAgICAgIElEX0VESVRfTkVXX1NUUklOR1ZBTFVFCiAgICAgICAgICAgIE1FTlVJVEVNICImRGFuYSBiaW5hcm5hIiwgICAgICAgIElEX0VESVRfTkVXX0JJTkFSWVZBTFVFCiAgICAgICAgICAgIE1FTlVJVEVNICImRGFuYSBsaWN6Ym93YSAoRFdPUkQpIixJRF9FRElUX05FV19EV09SRFZBTFVFCiAgICAgICAgRU5ECiAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgTUVOVUlURU0gIlUmc3XxXHREZWwiLCAgICAgICAgICAgICAgICAgIElEX0VESVRfREVMRVRFCiAgICAgICAgTUVOVUlURU0gIlombWll8SBuYXp36lx0RjIiLCAgICAgICAgICBJRF9FRElUX1JFTkFNRQogICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgIE1FTlVJVEVNICImS29waXVqIG5henfqIGtsdWN6YSIsICAgICAgICAgSURfRURJVF9DT1BZS0VZTkFNRQogICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgIE1FTlVJVEVNICImWm5hamSfLi4uXHRDdHJsK0YiLCAgICAgICAgICBJRF9FRElUX0ZJTkQKICAgICAgICBNRU5VSVRFTSAiWm4mYWpknyBuYXN06nBueVx0RjMiLCAgICAgICAgSURfRURJVF9GSU5ETkVYVAogICAgRU5ECiAgICBQT1BVUCAiJldpZG9rIgogICAgQkVHSU4KICAgICAgICBNRU5VSVRFTSAiJlBhc2VrIHN0YW51IiwgICAgICAgICAgICAgICAgSURfVklFV19TVEFUVVNCQVIKICAgICAgICBNRU5VSVRFTSBTRVBBUkFUT1IKICAgICAgICBNRU5VSVRFTSAiUG8mZHppZWwiLCAgICAgICAgICAgICAgICAgICAgSURfVklFV19TUExJVAogICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgIE1FTlVJVEVNICImT2Scd2llv1x0RjUiLCAgICAgICAgICAgICAgICBJRF9WSUVXX1JFRlJFU0gKICAgIEVORAogICAgUE9QVVAgIiZVbHViaW9uZSIKICAgIEJFR0lOCiAgICAgICAgTUVOVUlURU0gIiZEb2RhaiBkbyB1bHViaW9ueWNoIiwgICAgICAgIElEX0ZBVk9SSVRFU19BRERUT0ZBVk9SSVRFUwogICAgICAgIE1FTlVJVEVNICImVXN18SB1bHViaW9ueSIsICAgICAgICAgICAgICBJRF9GQVZPUklURVNfUkVNT1ZFRkFWT1JJVEUKICAgIEVORAogICAgUE9QVVAgIlBvbW8mYyIKICAgIEJFR0lOCiAgICAgICAgTUVOVUlURU0gIiZUZW1hdHkgUG9tb2N5XHRGMSIsICAgICAgICAgIElEX0hFTFBfSEVMUFRPUElDUwogICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgIE1FTlVJVEVNICJFZHl0b3IgcmVqZXN0cnUgLSBpJm5mb3JtYWNqZSIsSURfSEVMUF9BQk9VVAogICAgRU5ECkVORAoKSURSX1BPUFVQX01FTlVTIE1FTlUgRElTQ0FSREFCTEUKQkVHSU4KICBQT1BVUCAiIgogIEJFR0lOCglNRU5VSVRFTSAiJk1vZHlmaWt1aiIsICAgICAgICAgICAgICAgICAgICAgSURfRURJVF9NT0RJRlkKCU1FTlVJVEVNICJNb2R5ZmlrdWogZGFuZSBiaW5hcm5lIiwgICAgICAgICBJRF9FRElUX01PRElGWV9CSU4KCU1FTlVJVEVNIFNFUEFSQVRPUgoJTUVOVUlURU0gIiZVc3XxXHREZWwiLCAgICAgICAgICAgICAgICAgICAgIElEX0VESVRfREVMRVRFCglNRU5VSVRFTSAiJlptaWXxIG5henfqIiwgICAgICAgICAgICAgICAgICAgSURfRURJVF9SRU5BTUUKICBFTkQKICBQT1BVUCAiIgogIEJFR0lOCiAgICAgICAgUE9QVVAgIiZOb3d5IgogICAgICAgIEJFR0lOCiAgICAgICAgICAgIE1FTlVJVEVNICImS2x1Y3oiLCAgICAgICAgICAgICAgICBJRF9FRElUX05FV19LRVkKICAgICAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgICAgIE1FTlVJVEVNICImRGFuYSB0ZWtzdG93YSIsICAgICAgICBJRF9FRElUX05FV19TVFJJTkdWQUxVRQogICAgICAgICAgICBNRU5VSVRFTSAiJkRhbmEgYmluYXJuYSIsICAgICAgICAgSURfRURJVF9ORVdfQklOQVJZVkFMVUUKICAgICAgICAgICAgTUVOVUlURU0gIiZEYW5hIGxpY3pib3dhIChEV09SRCkiLElEX0VESVRfTkVXX0RXT1JEVkFMVUUKICAgICAgICBFTkQKICAgICAgICBNRU5VSVRFTSBTRVBBUkFUT1IKICAgICAgICBNRU5VSVRFTSAiVSZzdfFcdERlbCIsICAgICAgICAgICAgICAgICAgSURfRURJVF9ERUxFVEUKICAgICAgICBNRU5VSVRFTSAiWiZtaWXxIG5henfqXHRGMiIsICAgICAgICAgIElEX0VESVRfUkVOQU1FCiAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgTUVOVUlURU0gIiZLb3BpdWogbmF6d+oga2x1Y3phIiwgICAgICAgICBJRF9FRElUX0NPUFlLRVlOQU1FCiAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgTUVOVUlURU0gIiZabmFqZDw5Zj4uLi5cdEN0cmwrRiIsICAgICAgICAgIElEX0VESVRfRklORCwgR1JBWUVECiAgRU5ECkVORAoKCi8qCiAqIERpYWxvZwogKi8KCklERF9BQk9VVEJPWCBESUFMT0cgRElTQ0FSREFCTEUgIDIyLCAxNywgMjMwLCA3NQpTVFlMRSBEU19NT0RBTEZSQU1FIHwgV1NfQ0FQVElPTiB8IFdTX1NZU01FTlUKQ0FQVElPTiAiRWR5dG9yIHJlamVzdHJ1IC0gaW5mb3JtYWNqZSIKRk9OVCA4LCAiTVMgU2hlbGwgRGxnIgpCRUdJTgogICAgSUNPTiAgICAgICAgICAgIElESV9SRUdFRElULElESV9SRUdFRElULDE0LDksMTYsMTYKICAgIExURVhUICAgICAgICAgICAiUmVhY3RPUyByZWdlZGl0IFZlcnNpb24gMS4wIixJRENfU1RBVElDLDQ5LDEwLDExOSw4LAogICAgICAgICAgICAgICAgICAgIFNTX05PUFJFRklYCiAgICBMVEVYVCAgICAgICAgICAgIkNvcHlyaWdodCAoQykgMjAwMiBSZWFjdE9TIFRlYW0iLElEQ19TVEFUSUMsNDksMjAsMTE5LDgKICAgIERFRlBVU0hCVVRUT04gICAiT0siLElET0ssMTk1LDYsMzAsMTEsV1NfR1JPVVAKRU5ECgpJRERfRklORCBESUFMT0cgRElTQ0FSREFCTEUgIDIyLCAxNywgMjEwLCA4NQpTVFlMRSBEU19NT0RBTEZSQU1FIHwgV1NfQ0FQVElPTiB8IFdTX1NZU01FTlUKQ0FQVElPTiAiV3lzenVrYWogdyByZWplc3RyemUiCkZPTlQgOCwgIk1TIFNoZWxsIERsZyIKQkVHSU4KICAgIExURVhUICAgICAgICAgICAiWm5hamSfOiIsSURDX1NUQVRJQyw1LDcsMTE5LDgKICAgIEVESVRURVhUICAgICAgICBJRENfVkFMVUVfTkFNRSw0MCw1LDEyNSwxMiwgV1NfQk9SREVSIHwgV1NfVEFCU1RPUCB8IEVTX0FVVE9IU0NST0xMCiAgICBMVEVYVCAgICAgICAgICAgIlN6dWthaiB3OiIsSURDX1NUQVRJQyw1LCAyMiwgMTE5LCA4CiAgICBDSEVDS0JPWCAgICAgICAgIktsdWN6YWNoIiwgSURDX0ZJTkRfS0VZUywgNSwgMzQsIDkwLCAxMCwgV1NfVEFCU1RPUCB8IFdTX0dST1VQIHwgQlNfQVVUT0NIRUNLQk9YCiAgICBDSEVDS0JPWCAgICAgICAgIk5hendhY2ggd2FydG+cY2kiLCBJRENfRklORF9WQUxVRVMsIDUsIDQ2LCA5MCwgMTAsIFdTX1RBQlNUT1AgfCBCU19BVVRPQ0hFQ0tCT1gKICAgIENIRUNLQk9YICAgICAgICAiVHJlnGNpIHdhcnRvnGNpIiwgSURDX0ZJTkRfQ09OVEVOVCwgNSwgNTgsIDkwLCAxMCwgV1NfVEFCU1RPUCB8IEJTX0FVVE9DSEVDS0JPWAogICAgQ0hFQ0tCT1ggICAgICAgICJUeWxrbyBwZbNuZSBkb3Bhc293YW5pZSIsIElEQ19GSU5EX1dIT0xFLCA1LCA3MCwgMTIwLCAxMCwgV1NfVEFCU1RPUCB8IEJTX0FVVE9DSEVDS0JPWAogICAgREVGUFVTSEJVVFRPTiAgICJabmFqZJ8iLElET0ssMTc1LDUsMzAsMTEsV1NfR1JPVVAKICAgIFBVU0hCVVRUT04gICAgICAiWmFta25paiIsSURDQU5DRUwsMTc1LDIyLDMwLDExLCBXU19HUk9VUApFTkQKCklERF9BRERGQVZPUklURSBESUFMT0cgRElTQ0FSREFCTEUgIDIyLCAxNywgMjEwLCA1NQpTVFlMRSBEU19NT0RBTEZSQU1FIHwgV1NfQ0FQVElPTiB8IFdTX1NZU01FTlUKQ0FQVElPTiAiRG9kYWogZG8gdWx1YmlvbnljaCIKRk9OVCA4LCAiTVMgU2hlbGwgRGxnIgpCRUdJTgogICAgTFRFWFQgICAgICAgICAgICJOYXp3YToiLElEQ19TVEFUSUMsNSw1LDExOSw4CiAgICBFRElUVEVYVCAgICAgICAgSURDX1ZBTFVFX05BTUUsNSwxNSwyMDAsMTIsIFdTX0JPUkRFUiB8IFdTX1RBQlNUT1AgfCBFU19BVVRPSFNDUk9MTAogICAgREVGUFVTSEJVVFRPTiAgICJPSyIsSURPSywxNDAsNDAsMzAsMTEsV1NfR1JPVVAKICAgIFBVU0hCVVRUT04gICAgICAiQW51bHVqIixJRENBTkNFTCwxNzUsNDAsMzAsMTEsIFdTX0dST1VQCkVORAoKSUREX0RFTEZBVk9SSVRFIERJQUxPRyBESVNDQVJEQUJMRSAgMjIsIDE3LCAyMTAsIDkwClNUWUxFIERTX01PREFMRlJBTUUgfCBXU19DQVBUSU9OIHwgV1NfU1lTTUVOVQpDQVBUSU9OICJVc3XxIHVsdWJpb255IgpGT05UIDgsICJNUyBTaGVsbCBEbGciCkJFR0lOCiAgICBMVEVYVCAgICAgICAgICAgIk5hendhOiIsSURDX1NUQVRJQyw1LDUsMTE5LDgKICAgIExJU1RCT1ggICAgICAgICBJRENfTkFNRV9MSVNULDUsMTUsMjAwLDUyLCBXU19CT1JERVIgfCBXU19UQUJTVE9QIHwgTEJTX1NPUlQgfCBMQlNfTk9JTlRFR1JBTEhFSUdIVCB8IFdTX1ZTQ1JPTEwKICAgIERFRlBVU0hCVVRUT04gICAiT0siLElET0ssMTQwLDczLDMwLDExLFdTX0dST1VQCiAgICBQVVNIQlVUVE9OICAgICAgIkFudWx1aiIsSURDQU5DRUwsMTc1LDczLDMwLDExLCBXU19HUk9VUApFTkQKCklERF9FRElUX1NUUklORyBESUFMT0cgRElTQ0FSREFCTEUgIDIyLCAxNywgMjEwLCA3NQpTVFlMRSBEU19NT0RBTEZSQU1FIHwgV1NfQ0FQVElPTiB8IFdTX1NZU01FTlUKQ0FQVElPTiAiRWR5Y2phIGRhbmVqIHRla3N0b3dlaiIKRk9OVCA4LCAiTVMgU2hlbGwgRGxnIgpCRUdJTgogICAgTFRFWFQgICAgICAgICAgICJOYXp3YToiLElEQ19TVEFUSUMsNSw1LDExOSw4CiAgICBFRElUVEVYVCAgICAgICAgSURDX1ZBTFVFX05BTUUsNSwxNSwyMDAsMTIsIFdTX0JPUkRFUiB8IFdTX1RBQlNUT1AgfCBXU19ESVNBQkxFRAogICAgTFRFWFQgICAgICAgICAgICJXYXJ0b5zmOiIsSURDX1NUQVRJQyw1LDMwLDExOSw4CiAgICBFRElUVEVYVCAgICAgICAgSURDX1ZBTFVFX0RBVEEsNSw0MCwyMDAsMTIsIFdTX0JPUkRFUiB8IFdTX1RBQlNUT1AgfCBFU19BVVRPSFNDUk9MTAogICAgREVGUFVTSEJVVFRPTiAgICJPSyIsSURPSywxNDAsNjAsMzAsMTEsV1NfR1JPVVAKICAgIFBVU0hCVVRUT04gICAiQW51bHVqIixJRENBTkNFTCwxNzUsNjAsMzAsMTEsV1NfR1JPVVAKRU5ECgpJRERfRURJVF9EV09SRCBESUFMT0cgRElTQ0FSREFCTEUgIDIyLCAxNywgMjEwLCAxMDAKU1RZTEUgRFNfTU9EQUxGUkFNRSB8IFdTX0NBUFRJT04gfCBXU19TWVNNRU5VCkNBUFRJT04gIkVkeWNqYSBkYW5laiBsaWN6Ym93ZWogKERXT1JEKSIKRk9OVCA4LCAiTVMgU2hlbGwgRGxnIgpCRUdJTgogICAgTFRFWFQgICAgICAgICAgICJOYXp3YToiLElEQ19TVEFUSUMsNSw1LDExOSw4CiAgICBFRElUVEVYVCAgICAgICAgSURDX1ZBTFVFX05BTUUsNSwxNSwyMDAsMTIsIFdTX0JPUkRFUiB8IFdTX1RBQlNUT1AgfCBXU19ESVNBQkxFRAogICAgTFRFWFQgICAgICAgICAgICJXYXJ0b5zmOiIsSURDX1NUQVRJQyw1LDMwLDkwLDgKICAgIEVESVRURVhUICAgICAgICBJRENfVkFMVUVfREFUQSw1LDQwLDkwLDEyLCBXU19CT1JERVIgfCBXU19UQUJTVE9QCiAgICBHUk9VUEJPWCAgICAgICAgIlN5c3RlbSIsIElEQ19EV09SRF9CQVNFLCAxMjAsIDMwLCA4NSwgMzcsIEJTX0dST1VQQk9YCiAgICBBVVRPUkFESU9CVVRUT04gIlN6ZXNuYXN0a293eSIsIElEQ19EV09SRF9IRVgsIDEzMCwgNDAsIDYwLCAxMCwgV1NfVEFCU1RPUAogICAgQVVUT1JBRElPQlVUVE9OICJEemllc2nqdG55IiwgSURDX0RXT1JEX0RFQywgMTMwLCA1MiwgNjAsIDEwLCBXU19UQUJTVE9QCiAgICBERUZQVVNIQlVUVE9OICAgIk9LIixJRE9LLDE0MCw4MCwzMCwxMSxXU19HUk9VUAogICAgUFVTSEJVVFRPTiAgICJBbnVsdWoiLElEQ0FOQ0VMLDE3NSw4MCwzMCwxMSxXU19HUk9VUApFTkQKCi8qCiAqIFN0cmluZyBUYWJsZQogKi8KClNUUklOR1RBQkxFIERJU0NBUkRBQkxFCkJFR0lOCiAgICBJRFNfTElTVF9DT0xVTU5fTkFNRSAgICAiTmF6d2EiCiAgICBJRFNfTElTVF9DT0xVTU5fVFlQRSAgICAiVHlwIgogICAgSURTX0xJU1RfQ09MVU1OX0RBVEEgICAgIldhcnRvnOYiCkVORAoKU1RSSU5HVEFCTEUgRElTQ0FSREFCTEUKQkVHSU4KICAgIElEU19BUFBfVElUTEUgICAgICAgICAgICJFZHl0b3IgcmVqZXN0cnUiCiAgICBJRENfUkVHRURJVCAgICAgICAgICAgICAiUkVHRURJVCIKICAgIElEQ19SRUdFRElUX0ZSQU1FICAgICAgICJSRUdFRElUX0ZSQU1FIgpFTkQKClNUUklOR1RBQkxFIERJU0NBUkRBQkxFCkJFR0lOCiAgICBJRF9SRUdJU1RSWV9NRU5VICAgICAgICAiWmF3aWVyYSBwb2xlY2VuaWEgb3BlcnVquWNlIG5hIGNhs3ltIHJlamVzdHJ6ZSIKICAgIElEX0VESVRfTUVOVSAgICAgICAgICAgICJaYXdpZXJhIHBvbGVjZW5pYSBkb3R5Y3q5Y2UgZWR5Y2ppIGtsdWN6eSBpIGRhbnljaCIKICAgIElEX1ZJRVdfTUVOVSAgICAgICAgICAgICJaYXdpZXJhIHBvbGVjZW5pYSBkb3R5Y3q5Y2Ugd3lnbLlkdSBwcm9ncmFtdSIKICAgIElEX0ZBVk9SSVRFU19NRU5VICAgICAgICJaYXdpZXJhIHBvbGVjZW5pYSBkb3R5Y3q5Y2Ugc2ty83TzdyBkbyBrbHVjenkgcmVqZXN0cnUiCiAgICBJRF9IRUxQX01FTlUgICAgICAgICAgICAiWmF3aWVyYSBwb2xlY2VuaWEgd3mcd2lldGxharljZSBpbmZvcm1hY2plIG8gcHJvZ3JhbWllIgogICAgSURfRURJVF9ORVdfTUVOVSAgICAgICAgIlphd2llcmEgcG9sZWNlbmlhIHR3b3J6uWNlIG5vd2Uga2x1Y3plIGkgZGFuZSIKRU5ECgpTVFJJTkdUQUJMRSBESVNDQVJEQUJMRQpCRUdJTgogICAgSURfRURJVF9NT0RJRlkgICAgICAgICAgIlBvendhbGEgem1vZHlmaWtvd2HmIHdhcnRvnOYgZGFuZWoiCiAgICBJRF9FRElUX05FV19LRVkgICAgICAgICAiRG9kYWplIG5vd3kga2x1Y3oiCiAgICBJRF9FRElUX05FV19TVFJJTkdWQUxVRSAiRG9kYWplIG5vd7kgZGFuuSB0ZWtzdG93uSIKICAgIElEX0VESVRfTkVXX0JJTkFSWVZBTFVFICJEb2RhamUgbm93uSBkYW65IGJpbmFybrkiCiAgICBJRF9FRElUX05FV19EV09SRFZBTFVFICAiRG9kYWplIG5vd7kgZGFuuSBsaWN6Ym93uSIKICAgIElEX1JFR0lTVFJZX0lNUE9SVFJFR0lTVFJZRklMRSAiSW1wb3J0dWplIHBsaWsgdGVrc3Rvd3kgZG8gcmVqZXN0cnUiCiAgICBJRF9SRUdJU1RSWV9FWFBPUlRSRUdJU1RSWUZJTEUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICJFa3Nwb3J0dWplIGN66pzmIGx1YiBjYbNvnOYgcmVqZXN0cnUgZG8gcGxpa3UgdGVrc3Rvd2VnbyIKICAgIElEX1JFR0lTVFJZX0NPTk5FQ1RORVRXT1JLUkVHSVNUUlkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICKjuWN6eSBzaeogZG8gcmVqZXN0cnUgaW5uZWdvIGtvbXB1dGVyYSIKICAgIElEX1JFR0lTVFJZX0RJU0NPTk5FQ1RORVRXT1JLUkVHSVNUUlkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICJPZLO5Y3phIHNp6iBvZCByZWplc3RydSBpbm5lZ28ga29tcHV0ZXJhIgogICAgSURfUkVHSVNUUllfUFJJTlQgICAgICAgIkRydWt1amUgY2Gzb5zmIGx1YiBjeuqc5iByZWplc3RydSIKLyogICAgSURfSEVMUF9IRUxQVE9QSUNTICAgICAgIk9wZW5zIHJlZ2lzdHJ5IGVkaXRvciBoZWxwIiAqLwogICAgSURfSEVMUF9BQk9VVCAgICAgICAgICAgIld5nHdpZXRsYSBpbmZvcm1hY2rqIG8gcHJvZ3JhbWllLCBudW1lcnplIHdlcnNqaSBpIHByYXdhY2ggYXV0b3Jza2ljaCIKRU5ECgpTVFJJTkdUQUJMRSBESVNDQVJEQUJMRQpCRUdJTgogICAgSURfUkVHSVNUUllfRVhJVCAgICAgICAgIktv8WN6eSBkemlhs2FuaWUgZWR5dG9yYSByZWplc3RydSIKICAgIElEX0ZBVk9SSVRFU19BRERUT0ZBVk9SSVRFUyAiRG9kYWplIGtsdWN6ZSBkbyBsaXN0eSB1bHViaW9ueWNoIgogICAgSURfRkFWT1JJVEVTX1JFTU9WRUZBVk9SSVRFICJVc3V3YSBrbHVjemUgeiBsaXN0eSB1bHViaW9ueWNoIgogICAgSURfVklFV19TVEFUVVNCQVIgICAgICAgIld5nHdpZXRsYSBsdWIgdWtyeXdhIHBhc2VrIHN0YW51IgogICAgSURfVklFV19TUExJVCAgICAgICAgICAgIlptaWVuaWEgcHJvcG9yY2plIHN6ZXJva2+cY2kgcGFuZWxpIgogICAgSURfVklFV19SRUZSRVNIICAgICAgICAgIk9knHdpZb9hIHphd2FydG+c5iBva2llbiIKICAgIElEX0VESVRfREVMRVRFICAgICAgICAgICJLYXN1amUgemF6bmFjem9ueSBvYmlla3QiCiAgICBJRF9FRElUX1JFTkFNRSAgICAgICAgICAiWm1pZW5pYSBuYXp36iB6YXpuYWN6b25lZ28gb2JpZWt0dSIKICAgIElEX0VESVRfQ09QWUtFWU5BTUUgICAgICJLb3BpdWplIG5henfqIHphem5hY3pvbmVnbyBrbHVjemEgZG8gc2Nob3drYSIKICAgIElEX0VESVRfRklORCAgICAgICAgICAgICJabmFqZHVqZSBjablnIHpuYWvzdyB3IGtsdWN6dSBsdWIgZGFuZWoiCiAgICBJRF9FRElUX0ZJTkRORVhUICAgICAgICAiWm5hamR1amUgbmFzdOpwbmUgd3lzdLlwaWVuaWUgb3N0YXRuaW8gc3p1a2FuZWdvIGNpuWd1IgpFTkQKClNUUklOR1RBQkxFIERJU0NBUkRBQkxFCkJFR0lOCiAgICBJRFNfRVJST1IJCSAgICAiQrO5ZCIKICAgIElEU19CQURfS0VZCQkgICAgIk5pZSB1ZGGzbyBzaWUgcHJ6ZWN6eXRh5iBrbHVjemEgJyVzJyIKICAgIElEU19CQURfVkFMVUUgICAgICAgICAgICJOaWUgdWRhs28gc2llIHByemVjenl0YeYgZGFuZWogJyVzJyIKICAgIElEU19VTlNVUFBPUlRFRF9UWVBFICAgICJOaWUgZGEgc2nqIG1vZHlmaWtvd2HmIGtsdWN6eSB0ZWdvIHR5cHUgKCVsZCkiCiAgICBJRFNfVE9PX0JJR19WQUxVRSAgICAgICAiV2FydG+c5iBqZXN0IHpieXQgZHW/YSAoJWxkKSIKICAgIElEU19ERUxFVEVfQk9YX1RJVExFICAgICJQb3R3aWVyZHplbmllIGthc293YW5pYSIKICAgIElEU19ERUxFVEVfQk9YX1RFWFQgICAgICJKZXN0ZZwgcGV3aWVuLCC/ZSBjaGNlc3ogdXN1brnmIGRhbrkgJyVzJz8iCiAgICBJRFNfTkVXS0VZICAgICAgICAgICAgICAiTm93eSBrbHVjeiAjJWQiCiAgICBJRFNfTkVXVkFMVUUgICAgICAgICAgICAiTm93YSBkYW5hICMlZCIKICAgIElEU19OT1RGT1VORCAgICAgICAgICAgICJOaWUgdWRhs28gc2nqIHd5c3p1a2HmIGNpuWd1ICclcyciCkVORAoKLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwoKCi8qCiAqIERpYWxvZwogKi8KCklERF9ESUFMT0cxIERJQUxPRyBESVNDQVJEQUJMRSAgNTAsIDUwLCAyNjgsIDk4ClNUWUxFIERTXzNETE9PSyB8IERTX0NPTlRST0wgfCBXU19DSElMRCB8IFdTX1ZJU0lCTEUgfCBXU19DTElQU0lCTElOR1MgfAogICAgV1NfQk9SREVSCkZPTlQgOCwgIk1TIFNoZWxsIERsZyIKQkVHSU4KRU5ECgpJRERfRElBTE9HMiBESUFMT0cgRElTQ0FSREFCTEUgIDAsIDAsIDE4NywgOTUKU1RZTEUgRFNfTU9EQUxGUkFNRSB8IFdTX1BPUFVQIHwgV1NfQ0FQVElPTiB8IFdTX1NZU01FTlUKQ0FQVElPTiAiRGlhbG9nIgpGT05UIDgsICJNUyBTaGVsbCBEbGciCkJFR0lOCiAgICBERUZQVVNIQlVUVE9OICAgIk9LIixJRE9LLDEzMCw3LDUwLDE0CiAgICBQVVNIQlVUVE9OICAgICAgIkFudWx1aiIsSURDQU5DRUwsMTMwLDI0LDUwLDE0CkVORAoKCi8qCiAqIFRFWFRJTkNMVURFCiAqLwoKMSBURVhUSU5DTFVERSBESVNDQVJEQUJMRQpCRUdJTgogICAgInJlc291cmNlLmhcMCIKRU5ECgoKCi8qCiAqIFN0cmluZyBUYWJsZQogKi8KCi8qCiAqU1RSSU5HVEFCTEUgRElTQ0FSREFCTEUKICpCRUdJTgogKiAgICBJRF9IRUxQX0hFTFBUT1BJQ1MgICAgICAiT3BlbnMgUmVnaXN0cnkgRWRpdG9yIEhlbHAuIgogKiAgICBJRF9IRUxQX0FCT1VUICAgICAgICAgICAiRGlzcGxheXMgcHJvZ3JhbSBpbmZvcm1hdGlvbiwgdmVyc2lvbiBudW1iZXIsIGFuZCBjb3B5cmlnaHQuIgogKkVORAogKi8K