LyoKICogUmVnZWRpdCBOb3J3ZWdpYW4gQm9rbeVsIHJlc291cmNlcwogKgogKiBDb3B5cmlnaHQgMjAwNS0yMDA3IEFsZXhhbmRlciBOLiBT+HJuZXMgPGFsZXhAdGhlaGFuZG9mYWdvbnkuY29tPgogKgogKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCiAqIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgogKgogKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKICogTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KICoKICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwogKiBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCiAqIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EKICovCgpMQU5HVUFHRSBMQU5HX05PUldFR0lBTiwgU1VCTEFOR19OT1JXRUdJQU5fQk9LTUFMCgovKgogKiBNZW51CiAqLwoKSURSX1JFR0VESVRfTUVOVSBNRU5VIERJU0NBUkRBQkxFCkJFR0lOCiAgICBQT1BVUCAiJlJlZ2lzdGVyIgogICAgQkVHSU4KICAgICAgICBNRU5VSVRFTSAiJkltcG9ydGVyIHJlZ2lzdGVyZmlsIC4gLiAuIiwgICAgSURfUkVHSVNUUllfSU1QT1JUUkVHSVNUUllGSUxFCiAgICAgICAgTUVOVUlURU0gIiZFa3Nwb3J0ZXIgcmVnaXN0ZXJmaWwgLiAuIC4iLCAgICBJRF9SRUdJU1RSWV9FWFBPUlRSRUdJU1RSWUZJTEUKICAgICAgICBNRU5VSVRFTSBTRVBBUkFUT1IKICAgICAgICBNRU5VSVRFTSAiS29ibGUgJnRpbCBuZXR0dmVya3NyZWdpc3RlciAuIC4gLiIsIElEX1JFR0lTVFJZX0NPTk5FQ1RORVRXT1JLUkVHSVNUUlksIEdSQVlFRAogICAgICAgIE1FTlVJVEVNICJLb2JsZSAmZnJhIG5ldHR2ZXJrc3JlZ2lzdGVyIC4gLiAuIiwgSURfUkVHSVNUUllfRElTQ09OTkVDVE5FVFdPUktSRUdJU1RSWSwgR1JBWUVECiAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgTUVOVUlURU0gIiZTa3JpdiB1dFx0Q3RybCtQIiwgICAgICAgICAgICAgIElEX1JFR0lTVFJZX1BSSU5ULCBHUkFZRUQKICAgICAgICBNRU5VSVRFTSBTRVBBUkFUT1IKICAgICAgICBNRU5VSVRFTSAiJkF2c2x1dHQiLCAgICAgICAgICAgICAgICAgICAgICAgSURfUkVHSVNUUllfRVhJVAogICAgRU5ECiAgICBQT1BVUCAiUiZlZGlnZXIiCiAgICBCRUdJTgogICAgICAgIE1FTlVJVEVNICImRW5kcmUiLCAgICAgICAgICAgICAgICAgICAgIElEX0VESVRfTU9ESUZZCiAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgUE9QVVAgIiZOeSIKICAgICAgICBCRUdJTgogICAgICAgICAgICBNRU5VSVRFTSAiTvgma2tlbCIsICAgICAgICAgICAgICAgICAgICAgICAgSURfRURJVF9ORVdfS0VZCiAgICAgICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgICAgICBNRU5VSVRFTSAiJlN0cmVuZ3ZlcmRpIiwgICAgICAgICAgICAgICAgICAgSURfRURJVF9ORVdfU1RSSU5HVkFMVUUKICAgICAgICAgICAgTUVOVUlURU0gIiZCaW7mcnZlcmRpIiwgICAgICAgICAgICAgICAgICAgIElEX0VESVRfTkVXX0JJTkFSWVZBTFVFCiAgICAgICAgICAgIE1FTlVJVEVNICImRFdPUkQtdmVyZGkiLCAgICAgICAgICAgICAgICAgICBJRF9FRElUX05FV19EV09SRFZBTFVFCiAgICAgICAgICAgIE1FTlVJVEVNICImRmxlcnN0cmVuZ3ZlcmRpIiwgICAgICAgICAgICAgICBJRF9FRElUX05FV19NVUxUSV9TVFJJTkdWQUxVRQogICAgICAgIEVORAogICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgIE1FTlVJVEVNICImU2xldHRcdERlbCIsICAgICAgICAgICAgICAgIElEX0VESVRfREVMRVRFCiAgICAgICAgTUVOVUlURU0gIiZHaSBueXR0IG5hdm5cdEYyIiwgICAgICAgICAgICAgICAgIElEX0VESVRfUkVOQU1FCiAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgTUVOVUlURU0gIiZLb3BpZXIgbvhra2VsbmF2biIsICAgICAgICAgICAgICBJRF9FRElUX0NPUFlLRVlOQU1FCiAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgTUVOVUlURU0gIiZGaW5uXHRDdHJsK0YiLCAgICAgICAgICAgICAgIElEX0VESVRfRklORCwgR1JBWUVECiAgICAgICAgTUVOVUlURU0gIkZpbm4gJm5lc3RlXHRGMyIsICAgICAgICAgICAgICBJRF9FRElUX0ZJTkRORVhULCBHUkFZRUQKICAgIEVORAogICAgUE9QVVAgIiZWaXMiCiAgICBCRUdJTgogICAgICAgIE1FTlVJVEVNICImU3RhdHVzbGluamUiLCAgICAgICAgICAgICAgICAgSURfVklFV19TVEFUVVNCQVIKICAgICAgICBNRU5VSVRFTSBTRVBBUkFUT1IKICAgICAgICBNRU5VSVRFTSAiRGUmbCBvcHAiLCAgICAgICAgICAgICAgICAgICAgICBJRF9WSUVXX1NQTElUCiAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgTUVOVUlURU0gIk9wcGRhdGUmclx0RjUiLCAgICAgICAgICAgICAgICBJRF9WSUVXX1JFRlJFU0gKICAgIEVORAogICAgUE9QVVAgIiZGYXZvcml0dGVyIgogICAgQkVHSU4KICAgICAgICBNRU5VSVRFTSAiTGVnZyB0aWwgaSBmJmF2b3JpdHRlciIsICAgICAgICAgIElEX0ZBVk9SSVRFU19BRERUT0ZBVk9SSVRFUwogICAgICAgIE1FTlVJVEVNICJGamUmcm4gZmF2b3JpdHQiLCAgICAgICAgICAgSURfRkFWT1JJVEVTX1JFTU9WRUZBVk9SSVRFCiAgICBFTkQKICAgIFBPUFVQICImSGplbHAiCiAgICBCRUdJTgogICAgICAgIE1FTlVJVEVNICJFbW5lciBpICZoamVscFx0RjEiLCAgICAgICAgICAgIElEX0hFTFBfSEVMUFRPUElDUwogICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgIE1FTlVJVEVNICImT20gUmVnaXN0ZXJyZWRpZ2VyaW5nIiwgICAgICBJRF9IRUxQX0FCT1VUCiAgICBFTkQKRU5ECgpJRFJfUE9QVVBfTUVOVVMgTUVOVSBESVNDQVJEQUJMRQpCRUdJTgogIFBPUFVQICIiCiAgQkVHSU4KCU1FTlVJVEVNICImRW5kcmUiLCAgICAgICAgICAgICAgICAgICAgIElEX0VESVRfTU9ESUZZCglNRU5VSVRFTSAiRW5kcmUgYmlu5nJkYXRhIiwgICAgICAgICAgICBJRF9FRElUX01PRElGWV9CSU4KCU1FTlVJVEVNIFNFUEFSQVRPUgoJTUVOVUlURU0gIiZTbGV0dFx0RGVsIiwgICAgICAgICAgICAgICAgSURfRURJVF9ERUxFVEUKCU1FTlVJVEVNICImR2kgbnl0dCBuYXZuIiwgICAgICAgICAgICAgIElEX0VESVRfUkVOQU1FCiAgRU5ECiAgUE9QVVAgIiIKICBCRUdJTgogICAgICAgIFBPUFVQICImTnkiCiAgICAgICAgQkVHSU4KICAgICAgICAgICAgTUVOVUlURU0gIk74JmtrZWwiLCAgICAgICAgICAgICAgICAgICAgICAgIElEX0VESVRfTkVXX0tFWQogICAgICAgICAgICBNRU5VSVRFTSBTRVBBUkFUT1IKICAgICAgICAgICAgTUVOVUlURU0gIiZTdHJlbmd2ZXJkaSIsICAgICAgICAgICAgICAgICAgIElEX0VESVRfTkVXX1NUUklOR1ZBTFVFCiAgICAgICAgICAgIE1FTlVJVEVNICImQmlu5nJ2ZXJkaSIsICAgICAgICAgICAgICAgICAgICBJRF9FRElUX05FV19CSU5BUllWQUxVRQogICAgICAgICAgICBNRU5VSVRFTSAiJkRXT1JELXZlcmRpIiwgICAgICAgICAgICAgICAgICAgSURfRURJVF9ORVdfRFdPUkRWQUxVRQogICAgICAgICAgICBNRU5VSVRFTSAiJkZsZXJzdHJlbmd2ZXJkaSIsICAgICAgICAgICAgICAgSURfRURJVF9ORVdfTVVMVElfU1RSSU5HVkFMVUUKICAgICAgICBFTkQKICAgICAgICBNRU5VSVRFTSBTRVBBUkFUT1IKICAgICAgICBNRU5VSVRFTSAiJlNsZXR0XHREZWwiLCAgICAgICAgICAgICAgICBJRF9FRElUX0RFTEVURQogICAgICAgIE1FTlVJVEVNICImR2kgbnl0dCBuYXZuXHRGMiIsICAgICAgICAgICAgICAgICBJRF9FRElUX1JFTkFNRQogICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgIE1FTlVJVEVNICImS29waWVyIG74a2tlbG5hdm4iLCAgICAgICAgICAgICAgSURfRURJVF9DT1BZS0VZTkFNRQogICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgIE1FTlVJVEVNICImRmlublx0Q3RybCtGIiwgICAgICAgICAgICAgICBJRF9FRElUX0ZJTkQsIEdSQVlFRAogIEVORApFTkQKCgovKgogKiBEaWFsb2cKICovCgpJRERfRVhQT1JUX1RFTVBMQVRFIERJQUxPRyBESVNDQVJEQUJMRSAgNTAsIDUwLCAyNzgsIDU0ClNUWUxFIERTXzNETE9PSyB8IERTX0NPTlRST0wgfCBXU19DSElMRCB8IFdTX1ZJU0lCTEUgfCBXU19DTElQU0lCTElOR1MgfAogICAgV1NfQk9SREVSCkZPTlQgOCwgIk1TIFNoZWxsIERsZyIKQkVHSU4KICAgIEdST1VQQk9YICImRWtzcG9ydGVyIHJlZ2lzdGVyIiwgSURDX0VYUE9SVF9CQVNFLCA2LCA2LCAyNjYsIDQyLCBXU19HUk9VUAogICAgQVVUT1JBRElPQlVUVE9OICImQWx0IiwgSURDX0VYUE9SVF9BTEwsIDEyLCAxNSwgMjQ0LCAxMgogICAgQVVUT1JBRElPQlVUVE9OICImTWVya2V0IGRlbDoiLCBJRENfRVhQT1JUX1NFTEVDVEVELCAxMiwgMzAsIDcwLCAxMgogICAgRURJVFRFWFQgSURDX0VYUE9SVF9QQVRILCA4MiwgMzAsIDE4NCwgMTIKRU5ECgpJRERfRklORCBESUFMT0cgRElTQ0FSREFCTEUgIDIyLCAxNywgMjEwLCA4NQpTVFlMRSBEU19NT0RBTEZSQU1FIHwgV1NfQ0FQVElPTiB8IFdTX1NZU01FTlUKQ0FQVElPTiAiRmlubiIKRk9OVCA4LCAiTVMgU2hlbGwgRGxnIgpCRUdJTgpMVEVYVCAgICAgICAgICAgIkZpbm46IixJRENfU1RBVElDLDUsNywxMTksOApFRElUVEVYVCAgICAgICAgSURDX1ZBTFVFX05BTUUsNDAsNSwxMjUsMTIsIFdTX0JPUkRFUiB8IFdTX1RBQlNUT1AgfCBFU19BVVRPSFNDUk9MTApMVEVYVCAgICAgICAgICAgIkZpbm4gaToiLElEQ19TVEFUSUMsNSwgMjIsIDExOSwgOApDSEVDS0JPWCAgICAgICAgIk74a2xlciIsIElEQ19GSU5EX0tFWVMsIDUsIDM0LCA5MCwgMTAsIFdTX1RBQlNUT1AgfCBXU19HUk9VUCB8IEJTX0FVVE9DSEVDS0JPWApDSEVDS0JPWCAgICAgICAgIlZlcmRpbmF2biIsIElEQ19GSU5EX1ZBTFVFUywgNSwgNDYsIDkwLCAxMCwgV1NfVEFCU1RPUCB8IEJTX0FVVE9DSEVDS0JPWApDSEVDS0JPWCAgICAgICAgIlZlcmRpaW5uaG9sZCIsIElEQ19GSU5EX0NPTlRFTlQsIDUsIDU4LCA5MCwgMTAsIFdTX1RBQlNUT1AgfCBCU19BVVRPQ0hFQ0tCT1gKQ0hFQ0tCT1ggICAgICAgICJLdW4gaGVsZSBzdHJlbmdlciIsIElEQ19GSU5EX1dIT0xFLCA1LCA3MCwgOTAsIDEwLCBXU19UQUJTVE9QIHwgQlNfQVVUT0NIRUNLQk9YCkRFRlBVU0hCVVRUT04gICAiRmlubiIsSURPSywxNzUsNSwzMCwxMSxXU19HUk9VUApQVVNIQlVUVE9OICAgICAgIkx1a2siLElEQ0FOQ0VMLDE3NSwyMiwzMCwxMSwgV1NfR1JPVVAKRU5ECgpJRERfQURERkFWT1JJVEUgRElBTE9HIERJU0NBUkRBQkxFICAyMiwgMTcsIDIxMCwgNTUKU1RZTEUgRFNfTU9EQUxGUkFNRSB8IFdTX0NBUFRJT04gfCBXU19TWVNNRU5VCkNBUFRJT04gIkxlZ2cgdGlsIGZhdm9yaXR0IgpGT05UIDgsICJNUyBTaGVsbCBEbGciCkJFR0lOCkxURVhUICAgICAgICAgICAiTmF2bjoiLElEQ19TVEFUSUMsNSw1LDExOSw4CkVESVRURVhUICAgICAgICBJRENfVkFMVUVfTkFNRSw1LDE1LDIwMCwxMiwgV1NfQk9SREVSIHwgV1NfVEFCU1RPUCB8IEVTX0FVVE9IU0NST0xMCkRFRlBVU0hCVVRUT04gICAiT0siLElET0ssMTQwLDQwLDMwLDExLFdTX0dST1VQClBVU0hCVVRUT04gICAgICAiQXZicnl0IixJRENBTkNFTCwxNzUsNDAsMzAsMTEsIFdTX0dST1VQCkVORAoKSUREX0RFTEZBVk9SSVRFIERJQUxPRyBESVNDQVJEQUJMRSAgMjIsIDE3LCAyMTAsIDkwClNUWUxFIERTX01PREFMRlJBTUUgfCBXU19DQVBUSU9OIHwgV1NfU1lTTUVOVQpDQVBUSU9OICJGamVybiBmYXZvcml0dCIKRk9OVCA4LCAiTVMgU2hlbGwgRGxnIgpCRUdJTgpMVEVYVCAgICAgICAgICAgIk5hdm46IixJRENfU1RBVElDLDUsNSwxMTksOApMSVNUQk9YICAgICAgICAgSURDX05BTUVfTElTVCw1LDE1LDIwMCw1MiwgV1NfQk9SREVSIHwgV1NfVEFCU1RPUCB8IExCU19TT1JUIHwgTEJTX05PSU5URUdSQUxIRUlHSFQgfCBXU19WU0NST0xMCkRFRlBVU0hCVVRUT04gICAiT0siLElET0ssMTQwLDczLDMwLDExLFdTX0dST1VQClBVU0hCVVRUT04gICAgICAiQXZicnl0IixJRENBTkNFTCwxNzUsNzMsMzAsMTEsIFdTX0dST1VQCkVORAoKSUREX0VESVRfU1RSSU5HIERJQUxPRyBESVNDQVJEQUJMRSAgMjIsIDE3LCAyMTAsIDc1ClNUWUxFIERTX01PREFMRlJBTUUgfCBXU19DQVBUSU9OIHwgV1NfU1lTTUVOVQpDQVBUSU9OICJSZWRpZ2VyIHN0cmVuZyIKRk9OVCA4LCAiTVMgU2hlbGwgRGxnIgpCRUdJTgogICAgTFRFWFQgICAgICAgICAgICJWZXJkaW5hdm46IixJRENfU1RBVElDLDUsNSwxMTksOAogICAgRURJVFRFWFQgICAgICAgIElEQ19WQUxVRV9OQU1FLDUsMTUsMjAwLDEyLCBXU19CT1JERVIgfCBXU19UQUJTVE9QIHwgV1NfRElTQUJMRUQKICAgIExURVhUICAgICAgICAgICAiVmVyZGlkYXRhOiIsSURDX1NUQVRJQyw1LDMwLDExOSw4CiAgICBFRElUVEVYVCAgICAgICAgSURDX1ZBTFVFX0RBVEEsNSw0MCwyMDAsMTIsIFdTX0JPUkRFUiB8IFdTX1RBQlNUT1AgfCBFU19BVVRPSFNDUk9MTAogICAgREVGUFVTSEJVVFRPTiAgICJPSyIsSURPSywxNDAsNjAsMzAsMTEsV1NfR1JPVVAKICAgIFBVU0hCVVRUT04gICAiQXZicnl0IixJRENBTkNFTCwxNzUsNjAsMzAsMTEsV1NfR1JPVVAKRU5ECgpJRERfRURJVF9EV09SRCBESUFMT0cgRElTQ0FSREFCTEUgIDIyLCAxNywgMjEwLCAxMDAKU1RZTEUgRFNfTU9EQUxGUkFNRSB8IERTX05PSURMRU1TRyB8IFdTX0NBUFRJT04gfCBXU19TWVNNRU5VCkNBUFRJT04gIlJlZGlnZXIgRFdPUkQiCkZPTlQgOCwgIk1TIFNoZWxsIERsZyIKQkVHSU4KICAgIExURVhUICAgICAgICAgICAiVmVyZGluYXZuOiIsSURDX1NUQVRJQyw1LDUsMTE5LDgKICAgIEVESVRURVhUICAgICAgICBJRENfVkFMVUVfTkFNRSw1LDE1LDIwMCwxMiwgV1NfQk9SREVSIHwgV1NfVEFCU1RPUCB8IFdTX0RJU0FCTEVECiAgICBMVEVYVCAgICAgICAgICAgIlZlcmRpZGF0YToiLElEQ19TVEFUSUMsNSwzMCw5MCw4CiAgICBFRElUVEVYVCAgICAgICAgSURDX1ZBTFVFX0RBVEEsNSw0MCw5MCwxMiwgV1NfQk9SREVSIHwgV1NfVEFCU1RPUAogICAgR1JPVVBCT1ggICAgICAgICJCYXNlIiwgSURDX0RXT1JEX0JBU0UsIDEyMCwgMzAsIDg1LCAzNywgQlNfR1JPVVBCT1gKICAgIEFVVE9SQURJT0JVVFRPTiAiSGVrc2FkZXNpbWFsIiwgSURDX0RXT1JEX0hFWCwgMTMwLCA0MCwgNjAsIDEwLCBXU19UQUJTVE9QCiAgICBBVVRPUkFESU9CVVRUT04gIkRlc2ltYWwiLCBJRENfRFdPUkRfREVDLCAxMzAsIDUyLCA2MCwgMTAsIFdTX1RBQlNUT1AKICAgIERFRlBVU0hCVVRUT04gICAiT0siLElET0ssMTQwLDgwLDMwLDExLFdTX0dST1VQCiAgICBQVVNIQlVUVE9OICAgIkF2YnJ5dCIsSURDQU5DRUwsMTc1LDgwLDMwLDExLFdTX0dST1VQCkVORAoKSUREX0VESVRfQklOQVJZIERJQUxPRyBESVNDQVJEQUJMRSAgMjIsIDE3LCAyMTAsIDEwMApTVFlMRSBEU19NT0RBTEZSQU1FIHwgRFNfTk9JRExFTVNHIHwgV1NfQ0FQVElPTiB8IFdTX1NZU01FTlUKQ0FQVElPTiAiUmVkaWdlciBiaW7mciIKRk9OVCA4LCAiTVMgU2hlbGwgRGxnIgpCRUdJTgogICAgTFRFWFQgICAgICAgICAgICJWZXJkaW5hdm46IixJRENfU1RBVElDLDUsNSwxMTksOAogICAgRURJVFRFWFQgICAgICAgIElEQ19WQUxVRV9OQU1FLDUsMTUsMjAwLDEyLCBXU19CT1JERVIgfCBXU19UQUJTVE9QIHwgV1NfRElTQUJMRUQKICAgIExURVhUICAgICAgICAgICAiVmVyZGlkYXRhOiIsSURDX1NUQVRJQyw1LDMwLDkwLDgKICAgIENPTlRST0wgICAgICAgICAiIixJRENfVkFMVUVfREFUQSwiSGV4RWRpdCIsV1NfVEFCU1RPUCw0LDQwLDE2MCw0MAogICAgREVGUFVTSEJVVFRPTiAgICJPSyIsSURPSywxNDAsODAsMzAsMTEsV1NfR1JPVVAKICAgIFBVU0hCVVRUT04gICAiQXZicnl0IixJRENBTkNFTCwxNzUsODAsMzAsMTEsV1NfR1JPVVAKRU5ECgpJRERfRURJVF9NVUxUSV9TVFJJTkcgRElBTE9HIERJU0NBUkRBQkxFICAyMiwgMTcsIDIxMCwgMTc1ClNUWUxFIERTX01PREFMRlJBTUUgfCBXU19DQVBUSU9OIHwgV1NfU1lTTUVOVQpDQVBUSU9OICJSZWRpZ2VyIGZsZXJzdHJlbmciCkZPTlQgOCwgIk1TIFNoZWxsIERsZyIKQkVHSU4KICAgIExURVhUICAgICAgICAgICAiVmVyZGluYXZuOiIsSURDX1NUQVRJQyw1LDUsMTE5LDgKICAgIEVESVRURVhUICAgICAgICBJRENfVkFMVUVfTkFNRSw1LDE1LDIwMCwxMiwgV1NfQk9SREVSIHwgV1NfVEFCU1RPUCB8IEVTX0FVVE9IU0NST0xMfCBXU19ESVNBQkxFRAogICAgTFRFWFQgICAgICAgICAgICJWZXJkaWRhdGE6IixJRENfU1RBVElDLDUsMzAsMTE5LDgKICAgIEVESVRURVhUICAgICAgICBJRENfVkFMVUVfREFUQSw1LDQwLDIwMCwxMTIsIFdTX0JPUkRFUiB8IFdTX1RBQlNUT1AgfCBXU19IU0NST0xMIHwgV1NfVlNDUk9MTCB8IEVTX01VTFRJTElORSB8IEVTX1dBTlRSRVRVUk4KICAgIERFRlBVU0hCVVRUT04gICAiT0siLElET0ssMTQwLDE2MCwzMCwxMSxXU19HUk9VUAogICAgUFVTSEJVVFRPTiAgICJBdmJyeXQiLElEQ0FOQ0VMLDE3NSwxNjAsMzAsMTEsV1NfR1JPVVAKRU5ECgovKgogKiBTdHJpbmcgVGFibGUKICovCgpTVFJJTkdUQUJMRSBESVNDQVJEQUJMRQpCRUdJTgogICAgSURTX0xJU1RfQ09MVU1OX05BTUUgICAgIk5hdm4iCiAgICBJRFNfTElTVF9DT0xVTU5fVFlQRSAgICAiVHlwZSIKICAgIElEU19MSVNUX0NPTFVNTl9EQVRBICAgICJEYXRhIgpFTkQKClNUUklOR1RBQkxFIERJU0NBUkRBQkxFCkJFR0lOCiAgICBJRFNfQVBQX1RJVExFICAgICAgICAgICAiUmVnaXN0ZXJyZWRpZ2VyaW5nIgpFTkQKClNUUklOR1RBQkxFIERJU0NBUkRBQkxFCkJFR0lOCiAgICBJRF9SRUdJU1RSWV9NRU5VICAgICAgICAiSW5uZWhvbGRlciBrb21tYW5kb2VyIGZvciDlIGFyYmVpZGUgbWVkIGhlbGUgcmVnaXN0ZXJldCIKICAgIElEX0VESVRfTUVOVSAgICAgICAgICAgICJJbm5laG9sZGVyIGtvbW1hbmRvZXIgZm9yIOUgcmVkaWdlcmUgdmVyZGllciBvZyBu+GtsZXIiCiAgICBJRF9WSUVXX01FTlUgICAgICAgICAgICAiSW5uZWhvbGRlciBrb21tYW5vZGVyIGZvciDlIHRpbHBhc3NlIHJlZ2lzdGVydmluZHVldCIKICAgIElEX0ZBVk9SSVRFU19NRU5VICAgICAgICJJbm5laG9sZGVyIGtvbW1hbmRvZXIgZm9yIOUgZuUgdGlsZ2FuZyB0aWwgbvhrbGVyIHNvbSBicnVrZXMgb2Z0ZSIKICAgIElEX0hFTFBfTUVOVSAgICAgICAgICAgICJJbm5laG9sZGVyIGtvbW1hbmRvZXIgZm9yIOUgdmlzZSBoamVscCBvZyBpbmZvcm1hc2pvbiBvbSBSZWdpc3RlcnJlZGlnZXJpbmciCiAgICBJRF9FRElUX05FV19NRU5VICAgICAgICAiSW5uZWhvbGRlciBrb21tYW5kb2VyIGZvciDlIG9wcHJldHRlIG55ZSBu+GtsZXIgZWxsZXIgdmVyZGllciIKRU5ECgpTVFJJTkdUQUJMRSBESVNDQVJEQUJMRQpCRUdJTgogICAgSURfRURJVF9NT0RJRlkgICAgICAgICAgIkVuZHJlciB2ZXJkaWVucyBkYXRhIgogICAgSURfRURJVF9ORVdfS0VZICAgICAgICAgIkxlZ2dlciB0aWwgZW4gbnkgbvhra2VsIgogICAgSURfRURJVF9ORVdfU1RSSU5HVkFMVUUgIkxlZ2dlciB0aWwgZW4gbnkgc3RyZW5ndmVyZGkiCiAgICBJRF9FRElUX05FV19CSU5BUllWQUxVRSAiTGVnZ2VyIHRpbCBlbiBueSBiaW7mcnZlcmRpcyIKICAgIElEX0VESVRfTkVXX0RXT1JEVkFMVUUgICJMZWdnZXIgdGlsIGVuIG55IGRvYmJlbHRvcmQtdmVyZGkiCiAgICBJRF9FRElUX05FV19NVUxUSV9TVFJJTkdWQUxVRSAiTGVnZ2VyIHRpbCBlbiBueSBmbGVyc3RyZW5ndmVyZGkiCiAgICBJRF9SRUdJU1RSWV9JTVBPUlRSRUdJU1RSWUZJTEUgIkltcG9ydGVyZXIgZW4gdGVrc3RmaWwgaW5uIGkgcmVnaXN0ZXJldCIKICAgIElEX1JFR0lTVFJZX0VYUE9SVFJFR0lTVFJZRklMRQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIkVrc3BvcnRlcmVyIGhlbGUgZWxsZXIgZGVsZXIgYXYgcmVnaXN0ZXJldCB0aWwgZW4gdGVrc3RmaWwiCiAgICBJRF9SRUdJU1RSWV9DT05ORUNUTkVUV09SS1JFR0lTVFJZCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAiS29ibGVyIHRpbCByZWdpc3RlcmV0IHDlIGVuIGFubmVuIG1hc2tpbiIKICAgIElEX1JFR0lTVFJZX0RJU0NPTk5FQ1RORVRXT1JLUkVHSVNUUlkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICJLb2JsZXIgZnJhIHJlZ2lzdGVyZXQgcOUgZW4gYW5uZW4gbWFza2luIgogICAgSURfUkVHSVNUUllfUFJJTlQgICAgICAgIlNrcml2ZXIgdXQgaGVsZSBlbGxlciBkZWxlciBhdiByZWdpc3RlcmV0IgovKiAgICBJRF9IRUxQX0hFTFBUT1BJQ1MgICAgICAiVmlzZXIgaGplbHAgdGlsIFJlZ2lzdGVycmVkaWdlcmluZyIgKi8KICAgIElEX0hFTFBfQUJPVVQgICAgICAgICAgICJWaXNlciBwcm9ncmFtaW5mb3JtYXNqb24sIHZlcnNqb25udW1tZXIgb2cga29waXJldHQiCkVORAoKU1RSSU5HVEFCTEUgRElTQ0FSREFCTEUKQkVHSU4KICAgIElEX1JFR0lTVFJZX0VYSVQgICAgICAgICJBdnNsdXR0ZXIgUmVnaXN0ZXJyZWRpZ2VyaW5nIgogICAgSURfRkFWT1JJVEVTX0FERFRPRkFWT1JJVEVTICJMZWdnZXIgbvhrbGVyIHRpbCBpIGZhdm9yaXR0bGlzdGVuIgogICAgSURfRkFWT1JJVEVTX1JFTU9WRUZBVk9SSVRFICJGamVybmVyIG74a2xlciBmcmEgZmF2b3JpdHRsaXN0ZW4iCiAgICBJRF9WSUVXX1NUQVRVU0JBUiAgICAgICAiVmlzZXIgZWxsZXIgc2tqdWxlciBzdGF0dXNsaW5qZW5zIgogICAgSURfVklFV19TUExJVCAgICAgICAgICAgIkVuZHJlciBwb3Npc2pvbmVuIHRpbCBkZWxpbmdzbGluamVuIG1lbGxvbSB0byBydXRlciIKICAgIElEX1ZJRVdfUkVGUkVTSCAgICAgICAgICJPcHBkYXRlcmVyIHZpbmR1ZXQiCiAgICBJRF9FRElUX0RFTEVURSAgICAgICAgICAiU2xldHRlciB1dHZhbGdldCIKICAgIElEX0VESVRfUkVOQU1FICAgICAgICAgICJHaXIgbnl0dCBuYXZuIHRpbCB1dHZhbGdldCIKICAgIElEX0VESVRfQ09QWUtFWU5BTUUgICAgICJLb3BpZXJlciBuYXZuZXQgdGlsIGRlbiB2YWxndGUgbvhra2VsZW4gdGlsIHV0a2xpcHBzdGF2bGVuIgogICAgSURfRURJVF9GSU5EICAgICAgICAgICAgIkZpbm5lciBlbiB0ZWtzdHN0cmVuZyBpIGVuIG74a2tlbCwgdmVyZGkgZWxsZXIgZGF0YSIKICAgIElEX0VESVRfRklORE5FWFQgICAgICAgICJGaW5uZXIgbmVzdGUgdHJlZmYgdGlsIHRla3N0ZW4gc3Blc2lmaXNlcnQgaSBmb3JyaWdlIHP4ayIKRU5ECgpTVFJJTkdUQUJMRSBESVNDQVJEQUJMRQpCRUdJTgogICAgSURTX0VSUk9SCQkgICAgIkZlaWwiCiAgICBJRFNfQkFEX0tFWQkJICAgICJLdW5uZSBpa2tlIHNw+HJyZSBu+GtrZWxlbiAnJXMnIgogICAgSURTX0JBRF9WQUxVRSAgICAgICAgICAgIkt1bm5lIGlra2Ugc3D4+HJlIHZlcmRpZW4gJyVzJyIKICAgIElEU19VTlNVUFBPUlRFRF9UWVBFICAgICJLdW5uZSBpa2tlIHJlZGlnZXJlIG74a2xlciBhdiB0eXBlbiAnJWxkJyIKICAgIElEU19UT09fQklHX1ZBTFVFICAgICAgICJWZXJkaWVuIGVyIGZvciBzdG9yICglbGQpIgogICAgSURTX0RFTEVURV9CT1hfVElUTEUgICAgIkJla3JlZnQgc2xldHRpbmcgYXYgdmVyZGkiCiAgICBJRFNfREVMRVRFX0JPWF9URVhUICAgICAiVmlya2VsaWcgc2xldHRlIHZlcmRpZW4gJyVzJz8iCiAgICBJRFNfTkVXS0VZICAgICAgICAgICAgICAiTnkgbvhra2VsICMlZCIKICAgIElEU19ORVdWQUxVRSAgICAgICAgICAgICJOeSB2ZXJkaSAjJWQiCiAgICBJRFNfTk9URk9VTkQgICAgICAgICAgICAiRmFudCBpa2tlIHP4a2VzdHJlbmdlbiCrJXO7IgpFTkQKClNUUklOR1RBQkxFIERJU0NBUkRBQkxFCkJFR0lOCklEU19GSUxFRElBTE9HX0lNUE9SVF9USVRMRSAgICJJbXBvcnRlciByZWdpc3RlcmZpbCIKSURTX0ZJTEVESUFMT0dfRVhQT1JUX1RJVExFICAgIkVrc3BvcnRlciByZWdpc3RlcmZpbCIKSURTX0ZJTEVESUFMT0dfRklMVEVSICAgICAgICAgIlJlZ2lzdGVyZmlsZXJcMCoucmVnXDBXaW45eC0vTlQ0LXJlZ2lzdGVyZmlsZXIgKFJFR0VESVQ0KVwwKi5yZWdcMEFsbGUgZmlsZXIgKCouKilcMCouKlwwXDAiCkVORAoKU1RSSU5HVEFCTEUgRElTQ0FSREFCTEUKQkVHSU4KSURTX1JFR0lTVFJZX1JPT1RfTkFNRSAgICAgICAgICAgIk1pbiBkYXRhbWFza2luIgpJRFNfUkVHSVNUUllfREVGQVVMVF9WQUxVRSAgICAgICAiKFN0YW5kYXJkKSIKSURTX1JFR0lTVFJZX1ZBTFVFX05PVF9TRVQgICAgICAgIih2ZXJkaSBpa2tlIG9wcGdpdHQpIgpJRFNfUkVHSVNUUllfVkFMVUVfQ0FOVF9ESVNQTEFZICAiKGtsYXJ0ZSBpa2tlIHZpc2UgdmVyZGkpIgpJRFNfUkVHSVNUUllfVU5LTk9XTl9UWVBFICAgICAgICAiKHVramVudCAlZCkiCkVORAoKLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwoKLyoKICogVEVYVElOQ0xVREUKICovCgoxIFRFWFRJTkNMVURFIERJU0NBUkRBQkxFCkJFR0lOCiAgICAicmVzb3VyY2UuaFwwIgpFTkQKCgoKLyoKICogU3RyaW5nIFRhYmxlCiAqLwoKLyoKICpTVFJJTkdUQUJMRSBESVNDQVJEQUJMRQogKkJFR0lOCiAqICAgIElEX0hFTFBfSEVMUFRPUElDUyAgICAgICJWaXNlciBoamVscCB0aWwgUmVnaXN0ZXJyZWRpZ2VyaW5nLiIKICogICAgSURfSEVMUF9BQk9VVCAgICAgICAgICAgIlZpc2VyIHByb2dyYW1pbmZvcm1hc2pvbiwgdmVyc2pvbm51bW1lciBvZyBrb3BpcmV0dC4iCiAqRU5ECiAqLwoKLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwo=