LyoKICogUmVnZWRpdCBOb3J3ZWdpYW4gQm9rbeVsIHJlc291cmNlcwogKgogKiBDb3B5cmlnaHQgMjAwNSBBbGV4YW5kZXIgTi4gU/hybmVzIDxhbGV4QHRoZWhhbmRvZmFnb255LmNvbT4KICoKICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCiAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgogKiB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KICoKICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCiAqIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiAqCiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKICogTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQogKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAgMDIxMTEtMTMwNyAgVVNBCiAqLwoKTEFOR1VBR0UgTEFOR19OT1JXRUdJQU4sIFNVQkxBTkdfTk9SV0VHSUFOX0JPS01BTAoKLyoKICogTWVudQogKi8KCklEQ19SRUdFRElUIE1FTlUgRElTQ0FSREFCTEUKQkVHSU4KICAgIFBPUFVQICImRmlsIgogICAgQkVHSU4KICAgICAgICBNRU5VSVRFTSAiJkF2c2x1dHQiLCAgICAgICAgICAgICAgICAgICAgICAgSURfUkVHSVNUUllfRVhJVAogICAgRU5ECiAgICBQT1BVUCAiJkhqZWxwIgogICAgQkVHSU4KICAgICAgICBNRU5VSVRFTSAiJk9tIC4gLiAuIiwgICAgICAgICAgICAgICAgICBJRF9IRUxQX0FCT1VUCiAgICBFTkQKRU5ECgpJRFJfUkVHRURJVF9NRU5VIE1FTlUgRElTQ0FSREFCTEUKQkVHSU4KICAgIFBPUFVQICImUmVnaXN0ZXIiCiAgICBCRUdJTgogICAgICAgIE1FTlVJVEVNICImSW1wb3J0ZXIgcmVnaXN0ZXJmaWwgLiAuIC4iLCAgICBJRF9SRUdJU1RSWV9JTVBPUlRSRUdJU1RSWUZJTEUKICAgICAgICBNRU5VSVRFTSAiJkVrc3BvcnRlciByZWdpc3RlcmZpbCAuIC4gLiIsICAgIElEX1JFR0lTVFJZX0VYUE9SVFJFR0lTVFJZRklMRQogICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgIE1FTlVJVEVNICJLb2JsZSAmdGlsIG5ldHR2ZXJrc3JlZ2lzdGVyIC4gLiAuIiwgSURfUkVHSVNUUllfQ09OTkVDVE5FVFdPUktSRUdJU1RSWSwgR1JBWUVECiAgICAgICAgTUVOVUlURU0gIktvYmxlICZmcmEgbmV0dHZlcmtzcmVnaXN0ZXIgLiAuIC4iLCBJRF9SRUdJU1RSWV9ESVNDT05ORUNUTkVUV09SS1JFR0lTVFJZLCBHUkFZRUQKICAgICAgICBNRU5VSVRFTSBTRVBBUkFUT1IKICAgICAgICBNRU5VSVRFTSAiJlNrcml2IHV0XHRDdHJsK1AiLCAgICAgICAgICAgICAgSURfUkVHSVNUUllfUFJJTlQsIEdSQVlFRAogICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgIE1FTlVJVEVNICImQXZzbHV0dCIsICAgICAgICAgICAgICAgICAgICAgICBJRF9SRUdJU1RSWV9FWElUCiAgICBFTkQKICAgIFBPUFVQICJSJmVkaWdlciIKICAgIEJFR0lOCiAgICAgICAgTUVOVUlURU0gIiZFbmRyZSIsICAgICAgICAgICAgICAgICAgICAgSURfRURJVF9NT0RJRlkKICAgICAgICBNRU5VSVRFTSBTRVBBUkFUT1IKICAgICAgICBQT1BVUCAiJk55IgogICAgICAgIEJFR0lOCiAgICAgICAgICAgIE1FTlVJVEVNICJO+CZra2VsIiwgICAgICAgICAgICAgICAgICAgICAgICBJRF9FRElUX05FV19LRVkKICAgICAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgICAgIE1FTlVJVEVNICImU3RyZW5ndmVyZGkiLCAgICAgICAgICAgICAgIElEX0VESVRfTkVXX1NUUklOR1ZBTFVFCiAgICAgICAgICAgIE1FTlVJVEVNICImQmlu5nJ2ZXJkaSIsICAgICAgICAgICAgICAgSURfRURJVF9ORVdfQklOQVJZVkFMVUUKICAgICAgICAgICAgTUVOVUlURU0gIiZEV09SRC12ZXJkaSIsICAgICAgICAgICAgICAgIElEX0VESVRfTkVXX0RXT1JEVkFMVUUKICAgICAgICBFTkQKICAgICAgICBNRU5VSVRFTSBTRVBBUkFUT1IKICAgICAgICBNRU5VSVRFTSAiJlNsZXR0XHREZWwiLCAgICAgICAgICAgICAgICBJRF9FRElUX0RFTEVURQogICAgICAgIE1FTlVJVEVNICImR2kgbnl0dCBuYXZuXHRGMiIsICAgICAgICAgICAgICAgICBJRF9FRElUX1JFTkFNRQogICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgIE1FTlVJVEVNICImS29waWVyIG74a2tlbG5hdm4iLCAgICAgICAgICAgICAgSURfRURJVF9DT1BZS0VZTkFNRQogICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgIE1FTlVJVEVNICImRmlublx0Q3RybCtGIiwgICAgICAgICAgICAgICBJRF9FRElUX0ZJTkQsIEdSQVlFRAogICAgICAgIE1FTlVJVEVNICJGaW5uICZuZXN0ZVx0RjMiLCAgICAgICAgICAgICAgSURfRURJVF9GSU5ETkVYVCwgR1JBWUVECiAgICBFTkQKICAgIFBPUFVQICImVmlzIgogICAgQkVHSU4KICAgICAgICBNRU5VSVRFTSAiJlN0YXR1c2xpbmplIiwgICAgICAgICAgICAgICAgIElEX1ZJRVdfU1RBVFVTQkFSCiAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgTUVOVUlURU0gIkRlJmwgb3BwIiwgICAgICAgICAgICAgICAgICAgICAgSURfVklFV19TUExJVAogICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgIE1FTlVJVEVNICJPcHBkYXRlJnJcdEY1IiwgICAgICAgICAgICAgICAgSURfVklFV19SRUZSRVNICiAgICBFTkQKICAgIFBPUFVQICImRmF2b3JpdHRlcnMiCiAgICBCRUdJTgogICAgICAgIE1FTlVJVEVNICJMZWdnIHRpbCBpIGYmYXZvcml0dGVyIiwgICAgICAgICAgSURfRkFWT1JJVEVTX0FERFRPRkFWT1JJVEVTCiAgICAgICAgTUVOVUlURU0gIkZqZSZybiBmYXZvcml0dCIsICAgICAgICAgICBJRF9GQVZPUklURVNfUkVNT1ZFRkFWT1JJVEUKICAgIEVORAogICAgUE9QVVAgIiZIamVscCIKICAgIEJFR0lOCiAgICAgICAgTUVOVUlURU0gIkVtbmVyIGkgJmhqZWxwXHRGMSIsICAgICAgICAgICAgSURfSEVMUF9IRUxQVE9QSUNTCiAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgTUVOVUlURU0gIiZPbSBSZWdpc3RlcnJlZGlnZXJpbmciLCAgICAgIElEX0hFTFBfQUJPVVQKICAgIEVORApFTkQKCklEUl9QT1BVUF9NRU5VUyBNRU5VIERJU0NBUkRBQkxFCkJFR0lOCiAgUE9QVVAgIiIKICBCRUdJTgoJTUVOVUlURU0gIiZFbmRyZSIsICAgICAgICAgICAgICAgICAgICAgSURfRURJVF9NT0RJRlkKCU1FTlVJVEVNICJNb2RpZnkgQmluYXJ5IERhdGEiLCAgICAgICAgICBJRF9FRElUX01PRElGWV9CSU4KCU1FTlVJVEVNIFNFUEFSQVRPUgoJTUVOVUlURU0gIiZTbGV0dFx0RGVsIiwgICAgICAgICAgICAgICAgSURfRURJVF9ERUxFVEUKCU1FTlVJVEVNICImR2kgbnl0dCBuYXZuIiwgICAgICAgICAgICAgICAgICAgICBJRF9FRElUX1JFTkFNRQogIEVORAogIFBPUFVQICIiCiAgQkVHSU4KICAgICAgICBQT1BVUCAiJk55IgogICAgICAgIEJFR0lOCiAgICAgICAgICAgIE1FTlVJVEVNICJO+CZra2VsIiwgICAgICAgICAgICAgICAgICAgICAgICBJRF9FRElUX05FV19LRVkKICAgICAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgICAgIE1FTlVJVEVNICImU3RyZW5ndmVyZGkiLCAgICAgICAgICAgICAgIElEX0VESVRfTkVXX1NUUklOR1ZBTFVFCiAgICAgICAgICAgIE1FTlVJVEVNICImQmlu5nJ2ZXJkaSIsICAgICAgICAgICAgICAgSURfRURJVF9ORVdfQklOQVJZVkFMVUUKICAgICAgICAgICAgTUVOVUlURU0gIiZEV09SRC12ZXJkaSIsICAgICAgICAgICAgICAgIElEX0VESVRfTkVXX0RXT1JEVkFMVUUKICAgICAgICBFTkQKICAgICAgICBNRU5VSVRFTSBTRVBBUkFUT1IKICAgICAgICBNRU5VSVRFTSAiJlNsZXR0XHREZWwiLCAgICAgICAgICAgICAgICBJRF9FRElUX0RFTEVURQogICAgICAgIE1FTlVJVEVNICImR2kgbnl0dCBuYXZuXHRGMiIsICAgICAgICAgICAgICAgICBJRF9FRElUX1JFTkFNRQogICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgIE1FTlVJVEVNICImS29waWVyIG74a2tlbG5hdm4iLCAgICAgICAgICAgICAgSURfRURJVF9DT1BZS0VZTkFNRQogICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgIE1FTlVJVEVNICImRmlublx0Q3RybCtGIiwgICAgICAgICAgICAgICBJRF9FRElUX0ZJTkQsIEdSQVlFRAogIEVORApFTkQKCgovKgogKiBEaWFsb2cKICovCgpJRERfQUJPVVRCT1ggRElBTE9HIERJU0NBUkRBQkxFICAyMiwgMTcsIDIzMCwgNzUKU1RZTEUgRFNfTU9EQUxGUkFNRSB8IERTX05PSURMRU1TRyB8IFdTX0NBUFRJT04gfCBXU19TWVNNRU5VCkNBUFRJT04gIk9tIgpGT05UIDgsICJNUyBTaGVsbCBEbGciCkJFR0lOCiAgICBJQ09OICAgICAgICAgICAgSURJX1JFR0VESVQsSURJX1JFR0VESVQsMTQsOSwxNiwxNgogICAgTFRFWFQgICAgICAgICAgICJSZWFjdE9TIFJlZ2lzdGVycmVkaWdlcmVyIHZlcnNqb24gMS4wIixJRENfU1RBVElDLDQ5LDEwLDExOSw4LAogICAgICAgICAgICAgICAgICAgIFNTX05PUFJFRklYCiAgICBMVEVYVCAgICAgICAgICAgIktvcGlyZXR0IDIwMDIgdGlsaPhyZXIgUmVhY3RPUy1sYWdldC4gT3ZlcnNhdHQgYXYgQWxleGFuZGVyIE4uIFP4cm5lcy4iLElEQ19TVEFUSUMsNDksMjAsMTE5LDgKICAgIERFRlBVU0hCVVRUT04gICAiT0siLElET0ssMTk1LDYsMzAsMTEsV1NfR1JPVVAKRU5ECgpJRERfRklORCBESUFMT0cgRElTQ0FSREFCTEUgIDIyLCAxNywgMjEwLCA4NQpTVFlMRSBEU19NT0RBTEZSQU1FIHwgV1NfQ0FQVElPTiB8IFdTX1NZU01FTlUKQ0FQVElPTiAiRmlubiIKRk9OVCA4LCAiTVMgU2hlbGwgRGxnIgpCRUdJTgpMVEVYVCAgICAgICAgICAgIkZpbm46IixJRENfU1RBVElDLDUsNywxMTksOApFRElUVEVYVCAgICAgICAgSURDX1ZBTFVFX05BTUUsNDAsNSwxMjUsMTIsIFdTX0JPUkRFUiB8IFdTX1RBQlNUT1AgfCBFU19BVVRPSFNDUk9MTApMVEVYVCAgICAgICAgICAgIkZpbm4gaToiLElEQ19TVEFUSUMsNSwgMjIsIDExOSwgOApDSEVDS0JPWCAgICAgICAgIk74a2xlciIsIElEQ19GSU5EX0tFWVMsIDUsIDM0LCA5MCwgMTAsIFdTX1RBQlNUT1AgfCBXU19HUk9VUCB8IEJTX0FVVE9DSEVDS0JPWApDSEVDS0JPWCAgICAgICAgIlZlcmRpbmF2biIsIElEQ19GSU5EX1ZBTFVFUywgNSwgNDYsIDkwLCAxMCwgV1NfVEFCU1RPUCB8IEJTX0FVVE9DSEVDS0JPWApDSEVDS0JPWCAgICAgICAgIlZlcmRpaW5uaG9sZCIsIElEQ19GSU5EX0NPTlRFTlQsIDUsIDU4LCA5MCwgMTAsIFdTX1RBQlNUT1AgfCBCU19BVVRPQ0hFQ0tCT1gKQ0hFQ0tCT1ggICAgICAgICJLdW4gaGVsZSBzdHJlbmdlciIsIElEQ19GSU5EX1dIT0xFLCA1LCA3MCwgOTAsIDEwLCBXU19UQUJTVE9QIHwgQlNfQVVUT0NIRUNLQk9YCkRFRlBVU0hCVVRUT04gICAiRmlubiIsSURPSywxNzUsNSwzMCwxMSxXU19HUk9VUApQVVNIQlVUVE9OICAgICAgIkx1a2siLElEQ0FOQ0VMLDE3NSwyMiwzMCwxMSwgV1NfR1JPVVAKRU5ECgpJRERfQURERkFWT1JJVEUgRElBTE9HIERJU0NBUkRBQkxFICAyMiwgMTcsIDIxMCwgNTUKU1RZTEUgRFNfTU9EQUxGUkFNRSB8IFdTX0NBUFRJT04gfCBXU19TWVNNRU5VCkNBUFRJT04gIkxlZ2cgdGlsIGZhdm9yaXR0IgpGT05UIDgsICJNUyBTaGVsbCBEbGciCkJFR0lOCkxURVhUICAgICAgICAgICAiTmF2bjoiLElEQ19TVEFUSUMsNSw1LDExOSw4CkVESVRURVhUICAgICAgICBJRENfVkFMVUVfTkFNRSw1LDE1LDIwMCwxMiwgV1NfQk9SREVSIHwgV1NfVEFCU1RPUCB8IEVTX0FVVE9IU0NST0xMCkRFRlBVU0hCVVRUT04gICAiT0siLElET0ssMTQwLDQwLDMwLDExLFdTX0dST1VQClBVU0hCVVRUT04gICAgICAiQXZicnl0IixJRENBTkNFTCwxNzUsNDAsMzAsMTEsIFdTX0dST1VQCkVORAoKSUREX0RFTEZBVk9SSVRFIERJQUxPRyBESVNDQVJEQUJMRSAgMjIsIDE3LCAyMTAsIDkwClNUWUxFIERTX01PREFMRlJBTUUgfCBXU19DQVBUSU9OIHwgV1NfU1lTTUVOVQpDQVBUSU9OICJGamVybiBmYXZvcml0dCIKRk9OVCA4LCAiTVMgU2hlbGwgRGxnIgpCRUdJTgpMVEVYVCAgICAgICAgICAgIk5hdm46IixJRENfU1RBVElDLDUsNSwxMTksOApMSVNUQk9YICAgICAgICAgSURDX05BTUVfTElTVCw1LDE1LDIwMCw1MiwgV1NfQk9SREVSIHwgV1NfVEFCU1RPUCB8IExCU19TT1JUIHwgTEJTX05PSU5URUdSQUxIRUlHSFQgfCBXU19WU0NST0xMCkRFRlBVU0hCVVRUT04gICAiT0siLElET0ssMTQwLDczLDMwLDExLFdTX0dST1VQClBVU0hCVVRUT04gICAgICAiQXZicnl0IixJRENBTkNFTCwxNzUsNzMsMzAsMTEsIFdTX0dST1VQCkVORAoKSUREX0VESVRfU1RSSU5HIERJQUxPRyBESVNDQVJEQUJMRSAgMjIsIDE3LCAyMTAsIDc1ClNUWUxFIERTX01PREFMRlJBTUUgfCBXU19DQVBUSU9OIHwgV1NfU1lTTUVOVQpDQVBUSU9OICJSZWRpZ2VyIHN0cmVuZyIKRk9OVCA4LCAiTVMgU2hlbGwgRGxnIgpCRUdJTgogICAgTFRFWFQgICAgICAgICAgICJWZXJkaW5hdm46IixJRENfU1RBVElDLDUsNSwxMTksOAogICAgRURJVFRFWFQgICAgICAgIElEQ19WQUxVRV9OQU1FLDUsMTUsMjAwLDEyLCBXU19CT1JERVIgfCBXU19UQUJTVE9QIHwgV1NfRElTQUJMRUQKICAgIExURVhUICAgICAgICAgICAiVmVyZGlkYXRhOiIsSURDX1NUQVRJQyw1LDMwLDExOSw4CiAgICBFRElUVEVYVCAgICAgICAgSURDX1ZBTFVFX0RBVEEsNSw0MCwyMDAsMTIsIFdTX0JPUkRFUiB8IFdTX1RBQlNUT1AgfCBFU19BVVRPSFNDUk9MTAogICAgREVGUFVTSEJVVFRPTiAgICJPSyIsSURPSywxNDAsNjAsMzAsMTEsV1NfR1JPVVAKICAgIFBVU0hCVVRUT04gICAiQXZicnl0IixJRENBTkNFTCwxNzUsNjAsMzAsMTEsV1NfR1JPVVAKRU5ECgpJRERfRURJVF9EV09SRCBESUFMT0cgRElTQ0FSREFCTEUgIDIyLCAxNywgMjEwLCAxMDAKU1RZTEUgRFNfTU9EQUxGUkFNRSB8IERTX05PSURMRU1TRyB8IFdTX0NBUFRJT04gfCBXU19TWVNNRU5VCkNBUFRJT04gIlJlZGlnZXIgRFdPUkQiCkZPTlQgOCwgIk1TIFNoZWxsIERsZyIKQkVHSU4KICAgIExURVhUICAgICAgICAgICAiVmVyZGluYXZuOiIsSURDX1NUQVRJQyw1LDUsMTE5LDgKICAgIEVESVRURVhUICAgICAgICBJRENfVkFMVUVfTkFNRSw1LDE1LDIwMCwxMiwgV1NfQk9SREVSIHwgV1NfVEFCU1RPUCB8IFdTX0RJU0FCTEVECiAgICBMVEVYVCAgICAgICAgICAgIlZlcmRpZGF0YToiLElEQ19TVEFUSUMsNSwzMCw5MCw4CiAgICBFRElUVEVYVCAgICAgICAgSURDX1ZBTFVFX0RBVEEsNSw0MCw5MCwxMiwgV1NfQk9SREVSIHwgV1NfVEFCU1RPUAogICAgR1JPVVBCT1ggICAgICAgICJCYXNlIiwgSURDX0RXT1JEX0JBU0UsIDEyMCwgMzAsIDg1LCAzNywgQlNfR1JPVVBCT1gKICAgIEFVVE9SQURJT0JVVFRPTiAiSGVrc2FkZXNpbWFsIiwgSURDX0RXT1JEX0hFWCwgMTMwLCA0MCwgNjAsIDEwLCBXU19UQUJTVE9QCiAgICBBVVRPUkFESU9CVVRUT04gIkRlc2ltYWwiLCBJRENfRFdPUkRfREVDLCAxMzAsIDUyLCA2MCwgMTAsIFdTX1RBQlNUT1AKICAgIERFRlBVU0hCVVRUT04gICAiT0siLElET0ssMTQwLDgwLDMwLDExLFdTX0dST1VQCiAgICBQVVNIQlVUVE9OICAgIkF2YnJ5dCIsSURDQU5DRUwsMTc1LDgwLDMwLDExLFdTX0dST1VQCkVORAoKSUREX0VESVRfQklOQVJZIERJQUxPRyBESVNDQVJEQUJMRSAgMjIsIDE3LCAyMTAsIDEwMApTVFlMRSBEU19NT0RBTEZSQU1FIHwgRFNfTk9JRExFTVNHIHwgV1NfQ0FQVElPTiB8IFdTX1NZU01FTlUKQ0FQVElPTiAiUmVkaWdlciBiaW7mciIKRk9OVCA4LCAiTVMgU2hlbGwgRGxnIgpCRUdJTgogICAgTFRFWFQgICAgICAgICAgICJWZXJkaW5hdm46IixJRENfU1RBVElDLDUsNSwxMTksOAogICAgRURJVFRFWFQgICAgICAgIElEQ19WQUxVRV9OQU1FLDUsMTUsMjAwLDEyLCBXU19CT1JERVIgfCBXU19UQUJTVE9QIHwgV1NfRElTQUJMRUQKICAgIExURVhUICAgICAgICAgICAiVmVyZGlkYXRhOiIsSURDX1NUQVRJQyw1LDMwLDkwLDgKICAgIENPTlRST0wgICAgICAgICAiIixJRENfVkFMVUVfREFUQSwiSGV4RWRpdCIsV1NfVEFCU1RPUCw0LDQwLDE2MCw0MAogICAgREVGUFVTSEJVVFRPTiAgICJPSyIsSURPSywxNDAsODAsMzAsMTEsV1NfR1JPVVAKICAgIFBVU0hCVVRUT04gICAiQXZicnl0IixJRENBTkNFTCwxNzUsODAsMzAsMTEsV1NfR1JPVVAKRU5ECgovKgogKiBTdHJpbmcgVGFibGUKICovCgpTVFJJTkdUQUJMRSBESVNDQVJEQUJMRQpCRUdJTgogICAgSURTX0xJU1RfQ09MVU1OX05BTUUgICAgIk5hdm4iCiAgICBJRFNfTElTVF9DT0xVTU5fVFlQRSAgICAiVHlwZSIKICAgIElEU19MSVNUX0NPTFVNTl9EQVRBICAgICJEYXRhIgpFTkQKClNUUklOR1RBQkxFIERJU0NBUkRBQkxFCkJFR0lOCiAgICBJRFNfQVBQX1RJVExFICAgICAgICAgICAiUmVnaXN0ZXJyZWRpZ2VyaW5nIgogICAgSURDX1JFR0VESVQgICAgICAgICAgICAgIlJFR0VESVQiCiAgICBJRENfUkVHRURJVF9GUkFNRSAgICAgICAiUkVHRURJVF9GUkFNRSIKRU5ECgpTVFJJTkdUQUJMRSBESVNDQVJEQUJMRQpCRUdJTgogICAgSURfUkVHSVNUUllfTUVOVSAgICAgICAgIklubmVob2xkZXIga29tbWFuZG9lciBmb3Ig5SBhcmJlaWRlIG1lZCBoZWxlIHJlZ2lzdGVyZXQiCiAgICBJRF9FRElUX01FTlUgICAgICAgICAgICAiSW5uZWhvbGRlciBrb21tYW5kb2VyIGZvciDlIHJlZGlnZXJlIHZlcmRpZXIgb2cgbvhrbGVyIgogICAgSURfVklFV19NRU5VICAgICAgICAgICAgIklubmVob2xkZXIga29tbWFub2RlciBmb3Ig5SB0aWxwYXNzZSByZWdpc3RlcnZpbmR1ZXQiCiAgICBJRF9GQVZPUklURVNfTUVOVSAgICAgICAiSW5uZWhvbGRlciBrb21tYW5kb2VyIGZvciDlIGblIHRpbGdhbmcgdGlsIG74a2xlciBzb20gYnJ1a2VzIG9mdGUiCiAgICBJRF9IRUxQX01FTlUgICAgICAgICAgICAiSW5uZWhvbGRlciBrb21tYW5kb2VyIGZvciDlIHZpc2UgaGplbHAgb2cgaW5mb3JtYXNqb24gb20gUmVnaXN0ZXJyZWRpZ2VyaW5nIgogICAgSURfRURJVF9ORVdfTUVOVSAgICAgICAgIklubmVob2xkZXIga29tbWFuZG9lciBmb3Ig5SBvcHByZXR0ZSBueWUgbvhrbGVyIGVsbGVyIHZlcmRpZXIiCkVORAoKU1RSSU5HVEFCTEUgRElTQ0FSREFCTEUKQkVHSU4KICAgIElEX0VESVRfTU9ESUZZICAgICAgICAgICJFbmRyZXIgdmVyZGllbnMgZGF0YSIKICAgIElEX0VESVRfTkVXX0tFWSAgICAgICAgICJMZWdnZXIgdGlsIGVuIG55IG74a2tlbCIKICAgIElEX0VESVRfTkVXX1NUUklOR1ZBTFVFICJMZWdnZXIgdGlsIGVuIG55IHN0cmVuZ3ZlcmRpIgogICAgSURfRURJVF9ORVdfQklOQVJZVkFMVUUgIkxlZ2dlciB0aWwgZW4gbnkgYmlu5nJ2ZXJkaXMiCiAgICBJRF9FRElUX05FV19EV09SRFZBTFVFICAiTGVnZ2VyIHRpbCBlbiBueSBkb2JiZWx0b3JkLXZlcmRpIgogICAgSURfUkVHSVNUUllfSU1QT1JUUkVHSVNUUllGSUxFICJJbXBvcnRlcmVyIGVuIHRla3N0ZmlsIGlubiBpIHJlZ2lzdGVyZXQiCiAgICBJRF9SRUdJU1RSWV9FWFBPUlRSRUdJU1RSWUZJTEUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICJFa3Nwb3J0ZXJlciBoZWxlIGVsbGVyIGRlbGVyIGF2IHJlZ2lzdGVyZXQgdGlsIGVuIHRla3N0ZmlsIgogICAgSURfUkVHSVNUUllfQ09OTkVDVE5FVFdPUktSRUdJU1RSWQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIktvYmxlciB0aWwgcmVnaXN0ZXJldCBw5SBlbiBhbm5lbiBtYXNraW4iCiAgICBJRF9SRUdJU1RSWV9ESVNDT05ORUNUTkVUV09SS1JFR0lTVFJZCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAiS29ibGVyIGZyYSByZWdpc3RlcmV0IHDlIGVuIGFubmVuIG1hc2tpbiIKICAgIElEX1JFR0lTVFJZX1BSSU5UICAgICAgICJTa3JpdmVyIHV0IGhlbGUgZWxsZXIgZGVsZXIgYXYgcmVnaXN0ZXJldCIKLyogICAgSURfSEVMUF9IRUxQVE9QSUNTICAgICAgIlZpc2VyIGhqZWxwIHRpbCBSZWdpc3RlcnJlZGlnZXJpbmciICovCiAgICBJRF9IRUxQX0FCT1VUICAgICAgICAgICAiVmlzZXIgcHJvZ3JhbWluZm9ybWFzam9uLCB2ZXJzam9ubnVtbWVyIG9nIGtvcGlyZXR0IgpFTkQKClNUUklOR1RBQkxFIERJU0NBUkRBQkxFCkJFR0lOCiAgICBJRF9SRUdJU1RSWV9FWElUICAgICAgICAiQXZzbHV0dGVyIFJlZ2lzdGVycmVkaWdlcmluZyIKICAgIElEX0ZBVk9SSVRFU19BRERUT0ZBVk9SSVRFUyAiTGVnZ2VyIG74a2xlciB0aWwgaSBmYXZvcml0dGxpc3RlbiIKICAgIElEX0ZBVk9SSVRFU19SRU1PVkVGQVZPUklURSAiRmplcm5lciBu+GtsZXIgZnJhIGZhdm9yaXR0bGlzdGVuIgogICAgSURfVklFV19TVEFUVVNCQVIgICAgICAgIlZpc2VyIGVsbGVyIHNranVsZXIgc3RhdHVzbGluamVucyIKICAgIElEX1ZJRVdfU1BMSVQgICAgICAgICAgICJFbmRyZXIgcG9zaXNqb25lbiB0aWwgZGVsaW5nc2xpbmplbiBtZWxsb20gdG8gcnV0ZXIiCiAgICBJRF9WSUVXX1JFRlJFU0ggICAgICAgICAiT3BwZGF0ZXJlciB2aW5kdWV0IgogICAgSURfRURJVF9ERUxFVEUgICAgICAgICAgIlNsZXR0ZXIgdXR2YWxnZXQiCiAgICBJRF9FRElUX1JFTkFNRSAgICAgICAgICAiR2lyIG55dHQgbmF2biB0aWwgdXR2YWxnZXQiCiAgICBJRF9FRElUX0NPUFlLRVlOQU1FICAgICAiS29waWVyZXIgbmF2bmV0IHRpbCBkZW4gdmFsZ3RlIG74a2tlbGVuIHRpbCB1dGtsaXBwc3RhdmxlbiIKICAgIElEX0VESVRfRklORCAgICAgICAgICAgICJGaW5uZXIgZW4gdGVrc3RzdHJlbmcgaSBlbiBu+GtrZWwsIHZlcmRpIGVsbGVyIGRhdGEiCiAgICBJRF9FRElUX0ZJTkRORVhUICAgICAgICAiRmlubmVyIG5lc3RlIHRyZWZmIHRpbCB0ZWtzdGVuIHNwZXNpZmlzZXJ0IGkgZm9ycmlnZSBz+GsiCkVORAoKU1RSSU5HVEFCTEUgRElTQ0FSREFCTEUKQkVHSU4KICAgIElEU19FUlJPUgkJICAgICJGZWlsIgogICAgSURTX0JBRF9LRVkJCSAgICAiS3VubmUgaWtrZSBzcPhycmUgbvhra2VsZW4gJyVzJyIKICAgIElEU19CQURfVkFMVUUgICAgICAgICAgICJLdW5uZSBpa2tlIHNw+PhyZSB2ZXJkaWVuICclcyciCiAgICBJRFNfVU5TVVBQT1JURURfVFlQRSAgICAiS3VubmUgaWtrZSByZWRpZ2VyZSBu+GtsZXIgYXYgdHlwZW4gJyVsZCciCiAgICBJRFNfVE9PX0JJR19WQUxVRSAgICAgICAiVmVyZGllbiBlciBmb3Igc3RvciAoJWxkKSIKICAgIElEU19ERUxFVEVfQk9YX1RJVExFICAgICJCZWtyZWZ0IHNsZXR0aW5nIGF2IHZlcmRpIgogICAgSURTX0RFTEVURV9CT1hfVEVYVCAgICAgIlZpcmtlbGlnIHNsZXR0ZSB2ZXJkaWVuICclcyc/IgogICAgSURTX05FV0tFWSAgICAgICAgICAgICAgIk55IG74a2tlbCAjJWQiCiAgICBJRFNfTkVXVkFMVUUgICAgICAgICAgICAiTnkgdmVyZGkgIyVkIgogICAgSURTX05PVEZPVU5EICAgICAgICAgICAgIkZhbnQgaWtrZSBz+Gtlc3RyZW5nZW4gqyVzuyIKRU5ECgovKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCgoKLyoKICogRGlhbG9nCiAqLwoKSUREX0RJQUxPRzEgRElBTE9HIERJU0NBUkRBQkxFICA1MCwgNTAsIDI2OCwgOTgKU1RZTEUgRFNfM0RMT09LIHwgRFNfQ09OVFJPTCB8IFdTX0NISUxEIHwgV1NfVklTSUJMRSB8IFdTX0NMSVBTSUJMSU5HUyB8CiAgICBXU19CT1JERVIKRk9OVCA4LCAiTVMgU2hlbGwgRGxnIgpCRUdJTgpFTkQKCklERF9ESUFMT0cyIERJQUxPRyBESVNDQVJEQUJMRSAgMCwgMCwgMTg3LCA5NQpTVFlMRSBEU19NT0RBTEZSQU1FIHwgV1NfUE9QVVAgfCBXU19DQVBUSU9OIHwgV1NfU1lTTUVOVQpDQVBUSU9OICJEaWFsb2ciCkZPTlQgOCwgIk1TIFNoZWxsIERsZyIKQkVHSU4KICAgIERFRlBVU0hCVVRUT04gICAiT0siLElET0ssMTMwLDcsNTAsMTQKICAgIFBVU0hCVVRUT04gICAgICAiQXZicnl0IixJRENBTkNFTCwxMzAsMjQsNTAsMTQKRU5ECgoKLyoKICogVEVYVElOQ0xVREUKICovCgoxIFRFWFRJTkNMVURFIERJU0NBUkRBQkxFCkJFR0lOCiAgICAicmVzb3VyY2UuaFwwIgpFTkQKCgoKLyoKICogU3RyaW5nIFRhYmxlCiAqLwoKLyoKICpTVFJJTkdUQUJMRSBESVNDQVJEQUJMRQogKkJFR0lOCiAqICAgIElEX0hFTFBfSEVMUFRPUElDUyAgICAgICJWaXNlciBoamVscCB0aWwgUmVnaXN0ZXJyZWRpZ2VyaW5nLiIKICogICAgSURfSEVMUF9BQk9VVCAgICAgICAgICAgIlZpc2VyIHByb2dyYW1pbmZvcm1hc2pvbiwgdmVyc2pvbm51bW1lciBvZyBrb3BpcmV0dC4iCiAqRU5ECiAqLwoKLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwo=