LyoKICogV2luZUNmZyByZXNvdXJjZXMKICogSHVuZ2FyaWFuIExhbmd1YWdlIFN1cHBvcnQKICoKICogQ29weXJpZ2h0IDIwMDYgQW5kcmFzIEtvdmFjcwogKgogKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCiAqIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgogKgogKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKICogTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KICoKICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwogKiBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCiAqIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EKICoKICovCgpMQU5HVUFHRSBMQU5HX0hVTkdBUklBTiwgU1VCTEFOR19ERUZBVUxUCgpJRFJfV0lORUNGRyBNRU5VIERJU0NBUkRBQkxFCkJFR0lOCiAgICBQT1BVUCAiIgogICAgQkVHSU4KICAgICAgICBNRU5VSVRFTSAiS29uZmlndXLhY2nzIiwgSURDX0FVRElPX0NPTkZJR1VSRQogICAgRU5ECkVORAoKSUREX0FCT1VUQ0ZHIERJQUxPR0VYIDAsIDAsIDI2MCwgMjcwClNUWUxFIFdTX0NISUxECkZPTlQgOCwgIk1TIFNoZWxsIERsZyIKQkVHSU4KICAgIExURVhUICAgICAgICAgICBQQUNLQUdFX1NUUklORyxJRENfU1RBVElDLDExOSwxNywxMjAsOAogICAgQ09OVFJPTCAgICAgICAgIElEQl9XSU5FLElEQ19TVEFUSUMsIlN0YXRpYyIsU1NfQklUTUFQICwxNSwxNywxNTcsMTExCiAgICBMVEVYVCAgICAgICAgICAgImh0dHA6Ly93d3cud2luZWhxLm9yZy8iLElEQ19TVEFUSUMsMTE5LDMxLDEwNiw4CiAgICBMVEVYVCAgICAgICAgICAgIkV6IGEgZvxnZ3bpbnlr9m52dOFyIHN6YWJhZCBzem9mdHZlcjsgc3phYmFkb24gdGVyamVzenRoZXRpLCB2YWd5IG3zZG9z7XRoYXRqYSBhIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGlzemVuYyBmZWx06XRlbGVpIHN6ZXJpbnQsIGFtaXQgYSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24ga+lzeu10ZXR0OyBtaW5kIGEgMi4xIHZlcnpp82r6IGxpY2Vuc3osIHZhZ3kgKHbhbGFzenThc2Egc3plcmludCkgYuFybWVseSBr6XP1YmJpIHZlcnpp8yBoYXN6buFsaGF08y4iLAogICAgICAgICAgICAgICAgICAgIElEQ19TVEFUSUMsMTE5LDQ0LDEyNCw3MgpFTkQKCklERF9BUFBDRkcgRElBTE9HIERJU0NBUkRBQkxFICAwLCAwLCAyNjAsIDI1MApTVFlMRSBXU19DSElMRCB8IFdTX0RJU0FCTEVECkZPTlQgOCwgIk1TIFNoZWxsIERsZyIKQkVHSU4KICAgIEdST1VQQk9YICAgICAgICAiIEFsa2FsbWF64XMgYmXhbGztdOFzb2sgIixJRENfU1RBVElDLCA4LDQsMjQ0LDI0MAogICAgTFRFWFQgICAgICAgICAgICJBIFdpbmUga/xs9m5i9nr1IFdpbmRvd3MgdmVyemnza+ludCB0dWQgdmlzZWxrZWRuaSBhbGthbG1heuFzb25r6W50LiAgRXogYSBm/Gwg9nNzemVr9nR0ZXTpc2JlbiDhbGwgYSBG/GdndulueWv2bnl2dOFyIOlzIEdyYWZpa2EgZvxsbGVsLCBob2d5IGxlaGV09XbpIHRlZ3llIGEgcmVuZHN6ZXJzemludPsgdmFneSBhbGthbG1heuFzb25r6W50aSBiZeFsbO104XNva2F0IGV6ZWtlbiBhIGb8bGVrZW4gaXMuIiwKICAgICAgICAgICAgICAgICAgICBJRENfU1RBVElDLDE1LDE1LDIyNywzNQogICAgQ09OVFJPTCAgICAgICAgICJBbGthbG1heuFzb2siLElEQ19BUFBfTElTVFZJRVcsIlN5c0xpc3RWaWV3MzIiLFdTX0JPUkRFUiB8IFdTX1RBQlNUT1AgfCBMVlNfTElTVCB8IExWU19TSU5HTEVTRUwgfCBMVlNfU0hPV1NFTEFMV0FZUywKICAgICAgICAgICAgICAgICAgICAxNSw1MCwyMzAsMTUwCiAgICBQVVNIQlVUVE9OCSAgICAiJkFsay4gaG96euFhZOFzLi4uIixJRENfQVBQX0FEREFQUCwgOTAsMjA0LDc1LDE0CiAgICBQVVNIQlVUVE9OCSAgICAiQWxrLiAmZWx04XZvbO104XNhIixJRENfQVBQX1JFTU9WRUFQUCwgMTcwLDIwNCw3NSwxNAogICAgTFRFWFQgICAgICAgICAgICImV2luZG93cyB2ZXJ6afM6IixJRENfU1RBVElDLDE3LDIyNiw1OCw4CiAgICBDT01CT0JPWCAgICAgICAgSURDX1dJTlZFUiw4MywyMjQsMTYzLDU2LENCU19EUk9QRE9XTkxJU1QgfCBXU19WU0NST0xMIHwgV1NfVEFCU1RPUCAgICAKRU5ECgpJRERfR1JBUEhDRkcgRElBTE9HIERJU0NBUkRBQkxFICAwLCAwLCAyNjAsIDI1MApTVFlMRSBXU19DSElMRCB8IFdTX0RJU0FCTEVECkZPTlQgOCwgIk1TIFNoZWxsIERsZyIKQkVHSU4KICAgIEdST1VQQk9YICAgICAgICAiIEFibGFrYmXhbGztdOFzb2sgIixJRENfU1RBVElDLDgsNSwyNDQsMTgwCgogICAgQ09OVFJPTAkgICAgIkEgRGlyZWN0WC1lcyBhbGthbG1heuFzb2sgYWJsYWvhYm9sIG5lbSBs6XBoZXQga2kgYXogZWfpcm11dGF08yIsSURDX0RYX01PVVNFX0dSQUIsIkJ1dHRvbiIsQlNfQVVUT0NIRUNLQk9YIHwgV1NfVEFCU1RPUCwxNSwxNSwyMzAsOAogICAgTFRFWFQgCSAgICAiSGEgYXogYWJsYWtva2F0IGVneSBt4XNpayBhYmxha2tlemVs9SBrZXplbGksIGFra29yIGxlc3ogc3RhbmRhcmQga2VyZXRq/GssIHRpc3p0ZWxuaSBmb2dq4WsgYSB2aXJ0deFsaXMgYXN6dGFsb2thdCwg6XMgbWVnamVsZW5uZWsgYXogYWJsYWtsaXN04WJhbi4gXG5cbkhhIGF6IGFibGFrb2sga2V6ZWxldGxlbmVrLCBlbCBmb2duYWsgduFsbG5pIGF6INZuIGFibGFra2V6ZWz1aul09WwuIEV6IGF6dCBqZWxlbnRpLCBob2d5IGF6IGFibGFrb2sgbmVtIGZvZ25hayBzem9yb3NhbiBlZ3liZelw/GxuaSBheiDWbiBhc3p0YWzhdmFsLCBkZSBheiBlbXVs4WNp8yBoYXThc29zYWJiLCBqb2JiYW4gZWd5/HR0IHR1ZCBt+2v2ZG5pIG7paOFueSBwcm9ncmFtbWFsLiIsCgkJICAgIElEQ19TVEFUSUMsMTUsMzgsMjI4LDgwCiAgICBDT05UUk9MCSAgICAiQXogYWJsYWtrZXplbPUga2V6ZWxoZXRpIGF6IGFibGFrb2thdCIsSURDX0VOQUJMRV9NQU5BR0VELCJCdXR0b24iLEJTX0FVVE9DSEVDS0JPWCB8IFdTX1RBQlNUT1AsMTUsMTEyLDIzMCw4CiAgICAKICAgIC8qIEZJWE1FOiB0aGUgd29yZGluZyBvZiB0aGlzIGV4cGxhbmF0aW9uIGNvdWxkIGJlIGEgbG90IGJldHRlciAqLwogICAgTFRFWFQgICAgICAgICAgICLWbiB24Wxhc3p0aGF0amEgYSB3aW5kb3dzIGFzenRhbCBlbXVs4Wzhc3QsIGFob2wgYXog9nNzemVzIGFibGFrIGVneSAndmlydHXhbGlzIGvpcGVybnn1bicgZm9nIG1lZ2plbG5uaSwgdmFneSBheiBhYmxha29rIG1lZ2plbG7tdGhldPVrIGF6INZuIHN0YW5kYXJkIGFzenRhbOFuLiIsCiAgICAgICAgICAgICAgICAgICAgSURDX1NUQVRJQywxNSwxMjYsMjI4LDI4CiAgICBMVEVYVCAgICAgICAgICAgIkFibGFrbelyZXQ6IixJRENfREVTS1RPUF9TSVpFLDE1LDE2OCw0NCw4LFdTX0RJU0FCTEVECiAgICBMVEVYVCAgICAgICAgICAgIlgiLElEQ19ERVNLVE9QX0JZLDEwOCwxNjgsOCw4LFdTX0RJU0FCTEVECiAgICBDT05UUk9MICAgICAgICAgIlZpcnR14WxpcyBhc3p0YWwgZW11bOFs4XNhIixJRENfRU5BQkxFX0RFU0tUT1AsIkJ1dHRvbiIsCiAgICAgICAgICAgICAgICAgICAgQlNfQVVUT0NIRUNLQk9YIHwgV1NfVEFCU1RPUCwxNSwxNTMsMjMwLDEwCgkJICAgIAogICAgRURJVFRFWFQgICAgICAgIElEQ19ERVNLVE9QX1dJRFRILDY0LDE2OCw0MCwxMixFU19BVVRPSFNDUk9MTCB8IEVTX05VTUJFUiB8IFdTX0RJU0FCTEVECiAgICBFRElUVEVYVCAgICAgICAgSURDX0RFU0tUT1BfSEVJR0hULDExNywxNjgsNDAsMTIsRVNfQVVUT0hTQ1JPTEwgfCBFU19OVU1CRVIgfCBXU19ESVNBQkxFRAoKICAgIEdST1VQQk9YICAgICAgICAiIERpcmVjdDNEICIsSURDX1NUQVRJQyw4LDE5MCwyNDQsNTAKCiAgICBMVEVYVAkgICAgIlZlcnRleCBTaGFkZXIgdOFtb2dhdOFzOiAiLElEQ19TVEFUSUMsMTUsMjAwLDgwLDMwCiAgICBDT01CT0JPWAkgICAgSURDX0QzRF9WU0hBREVSX01PREUsMTAwLDE5OCwxNTAsNzAsQ0JTX0RST1BET1dOTElTVCB8IFdTX1ZTQ1JPTEwgfCBXU19UQUJTVE9QCgogICAgQ09OVFJPTCAgICAgICAgICJQaXhlbCBTaGFkZXIgZW5nZWTpbHlleulzZSAoaGEgdOFtb2dhdGphIGEgaGFyZHZlcikiLElEQ19EM0RfUFNIQURFUl9NT0RFLCJCdXR0b24iLEJTX0FVVE9DSEVDS0JPWCB8IFdTX1RBQlNUT1AsMTUsMjE3LDIzMCwxMAogICAgR1JPVVBCT1ggICAgICAgICIgU2NyZWVuIFJlc29sdXRpb24gIixJRENfU1RBVElDLDgsMjQyLDI0NCwyNQogICAgQ09OVFJPTCAgICAgICAgICIiLCBJRENfUkVTX1RSQUNLQkFSLCAibXNjdGxzX3RyYWNrYmFyMzIiLFdTX1RBQlNUT1AsMTIsMjUwLDE4NywxNQogICAgRURJVFRFWFQgICAgICAgIElEQ19SRVNfRFBJRURJVCwyMDQsMjUwLDIzLDEzLEVTX05VTUJFUnxXU19UQUJTVE9QCiAgICBMVEVYVCAgICAgICAgICAgImRwaSIsSURDX1NUQVRJQywyMzUsMjUyLDEwLDgKRU5ECgpJRERfRExMQ0ZHIERJQUxPRyBESVNDQVJEQUJMRSAgMCwgMCwgMjYwLCAyNTAKU1RZTEUgV1NfQ0hJTEQgfCBXU19ESVNBQkxFRApGT05UIDgsICJNUyBTaGVsbCBEbGciCkJFR0lOCiAgICBHUk9VUEJPWCAgICAgICAgIiBETEwgZmVs+2xi7XLhbOFzb2sgIixJRENfU1RBVElDLDgsNCwyNDQsMjQwCiAgICBMVEVYVCAgICAgICAgICAgIkEgZGluYW1pa3VzIGNzYXRvbOFz+iBm/GdndulueWv2bnl2dOFyYWthdCBraSBsZWhldCB24Wxhc3p0YW5pIGVneWVua+ludCBob2d5IGJl6XDtdGV0dGVrIChhIFdpbmUgYml6dG9z7XRqYSksIHZhZ3kgbmF07XZhayAoYSB3aW5kb3dzYvNsIG55ZXJ0LCB2YWd5IGF6IGFsa2FsbWF64XMgYml6dG9z7XRqYSkuIgogICAgICAgICAgICAgICAgICAgICxJRENfU1RBVElDLDE2LDE2LDIyMCwzMgogICAgTFRFWFQgICAgICAgICAgICLaaiBmZWz8bGLtcuFs4XMga/ZueXZ04XJob3o6IixJRENfU1RBVElDLDE2LDU4LDEwMCw4CiAgICBDT01CT0JPWCAgICAgICAgSURDX0RMTENPTUJPLDE2LDY4LDE0MCwxNCxDQlNfRFJPUERPV04gfCBXU19WU0NST0xMIHwgV1NfVEFCU1RPUCB8IENCU19TT1JUIHwgQ0JTX0xPV0VSQ0FTRQogICAgUFVTSEJVVFRPTiAgICAgICJIb3p64SZhZOFzIixJRENfRExMU19BRERETEwsIDE2NCw2OCw4MiwxMyxCU19ERUZQVVNIQlVUVE9OIAogICAgTFRFWFQgICAgICAgICAgICJM6XRlevUgZmVs/Gxi7XLhbOFzb2s6IixJRENfU1RBVElDLDE2LDg2LDEwMCw4CiAgICBMSVNUQk9YICAgICAgICAgSURDX0RMTFNfTElTVCwxNiw5NiwxNDAsMTQwLFdTX0JPUkRFUiB8IFdTX1RBQlNUT1AgfCBXU19WU0NST0xMCiAgICBQVVNIQlVUVE9OICAgICAgIlN6JmVya2VzenTpcyIsSURDX0RMTFNfRURJVERMTCwxNjQsOTYsODIsMTQKICAgIFBVU0hCVVRUT04gICAgICAiRSZsdOF2b2ztdOFzIixJRENfRExMU19SRU1PVkVETEwsMTY0LDExNCw4MiwxNCAKRU5ECgpJRERfTE9BRE9SREVSIERJQUxPRyBESVNDQVJEQUJMRSA4MCwgOTAsIDExMCwgOTIKU1RZTEUgRFNfTU9EQUxGUkFNRSB8IFdTX0NBUFRJT04gfCBXU19TWVNNRU5VCkNBUFRJT04gIkZlbPxsYu1y4WzhcyBzemVya2VzenTpc2UiCkZPTlQgOCwgIk1TIFNoZWxsIERsZyIKQkVHSU4KICAgIEdST1VQQk9YICAgICAgICAiIEJldPZsdOlzaSBzb3JyZW5kICIsSURDX1NUQVRJQyw4LDQsOTQsNjYKICAgIENPTlRST0wgICAgICAgICAiJkJl6XDtdGV0dCAoV2luZSkiLElEQ19SQURfQlVJTFRJTiwiQnV0dG9uIiwgQlNfQVVUT1JBRElPQlVUVE9OIHwgV1NfR1JPVVAsMTYsMTQsNzUsMTAKICAgIENPTlRST0wgICAgICAgICAiJk5hdO12IChXaW5kb3dzKSIsSURDX1JBRF9OQVRJVkUsIkJ1dHRvbiIsIEJTX0FVVE9SQURJT0JVVFRPTiwxNiwyNCw3NSwxMAogICAgQ09OVFJPTCAgICAgICAgICJCZelw7XRldCZ0LCBuYXTtdiIsSURDX1JBRF9CVUlMVElOX05BVElWRSwiQnV0dG9uIiwgQlNfQVVUT1JBRElPQlVUVE9OLDE2LDM0LDc1LDEwCiAgICBDT05UUk9MICAgICAgICAgIk5hdO0mdiwgYmXpcO10ZXR0IixJRENfUkFEX05BVElWRV9CVUlMVElOLCJCdXR0b24iLCBCU19BVVRPUkFESU9CVVRUT04sMTYsNDQsNzUsMTAKICAgIENPTlRST0wgICAgICAgICAiVGlsdOEmcyIsSURDX1JBRF9ESVNBQkxFLCJCdXR0b24iLCBCU19BVVRPUkFESU9CVVRUT04sMTYsNTQsNzUsMTAKICAgIERFRlBVU0hCVVRUT04gICAiT0siLElET0ssOCw3NCw0NSwxNCxXU19HUk9VUAogICAgUFVTSEJVVFRPTiAgICAgICJN6WdzZSIsSURDQU5DRUwsNTcsNzQsNDUsMTQsV1NfR1JPVVAKRU5ECgpJRERfRFJJVkVDRkcgRElBTE9HIERJU0NBUkRBQkxFICAwLCAwLCAyNjAsIDI1MApTVFlMRSBXU19DSElMRCB8IFdTX0RJU0FCTEVECkZPTlQgOCwgIk1TIFNoZWxsIERsZyIKQkVHSU4KICAgIEdST1VQQk9YICAgICAgICAiIE1lZ2hhanTzIGhvenrhcmVuZGVs6XNlayAiLElEQ19TVEFUSUMsOCw0LDI0NCwyNDAKICAgIENPTlRST0wgICAgICAgICAiTGlzdHZpZXciLElEQ19MSVNUX0RSSVZFUywiU3lzTGlzdFZpZXczMiIsTFZTX1JFUE9SVCB8IExWU19BVVRPQVJSQU5HRSB8IExWU19BTElHTkxFRlQgfAogICAgICAgICAgICAgICAgICAgIExWU19TSU5HTEVTRUwgfCBXU19CT1JERVIgfCBXU19UQUJTVE9QLCAxNSwxOCwyMzIsNzYKICAgIFBVU0hCVVRUT04gICAgICAiSG96euEmYWQuLi4iLElEQ19CVVRUT05fQURELDE1LDk4LDM3LDE0CiAgICBQVVNIQlVUVE9OICAgICAgIlT2JnJs6XMiLElEQ19CVVRUT05fUkVNT1ZFLDU2LDk4LDM3LDE0CiAgICBQVVNIQlVUVE9OICAgICAgIkF1dG8mZmVsaXNtLi4uIixJRENfQlVUVE9OX0FVVE9ERVRFQ1QsMTk3LDk4LDQ5LDE0CgogICAgLyogZWRpdGluZyBkcml2ZSBkZXRhaWxzICovCiAgICBMVEVYVCAgICAgICAgICAgIibadHYuOiIsSURDX1NUQVRJQywxNSwxMjMsMjAsOSAgICAKICAgIEVESVRURVhUICAgICAgICBJRENfRURJVF9QQVRILDQxLDEyMCwxNjAsMTMsRVNfQVVUT0hTQ1JPTEwgfCBXU19UQUJTVE9QCiAgICBQVVNIQlVUVE9OICAgICAgIiZUYWxs83rhcy4uLiIsSURDX0JVVFRPTl9CUk9XU0VfUEFUSCwyMDYsMTIwLDQwLDEzCiAgICAKICAgIExURVhUICAgICAgICAgICAiJlTtcHVzOiIsSURDX1NUQVRJQ19UWVBFLDE1LDEzOCwyMSwxMAogICAgQ09NQk9CT1ggICAgICAgIElEQ19DT01CT19UWVBFLDQxLDEzNSw3Nyw2MCxDQlNfRFJPUERPV05MSVNUIHwgV1NfVlNDUk9MTCB8IFdTX1RBQlNUT1AKICAgIAogICAgTFRFWFQgICAgICAgICAgICJD7W1rZSDpcyBzb3JvemF0c3rhbSIsSURDX0xBQkVMU0VSSUFMX1NUQVRJQywxNSwxNTUsOTUsMTAKICAgIAogICAgUFVTSEJVVFRPTiAgICAgICImSGFsYWTzIixJRENfQlVUVE9OX1NIT1dfSElERV9BRFZBTkNFRCwxODYsMTM2LDYwLDEzCiAgICBDT05UUk9MICAgICAgICAgIkF1dG9mZWxpc21lculzICZlc3pr9npy9Ww6IixJRENfUkFESU9fQVVUT0RFVEVDVCwiQnV0dG9uIiwKICAgICAgICAgICAgICAgICAgICBCU19BVVRPUkFESU9CVVRUT04sMTUsMTY2LDkzLDEwCiAgICBFRElUVEVYVCAgICAgICAgSURDX0VESVRfREVWSUNFLDI3LDE3NiwxNzQsMTMsRVNfQVVUT0hTQ1JPTEwKICAgIFBVU0hCVVRUT04gICAgICAiVGFsbCbzeuFzLi4uIixJRENfQlVUVE9OX0JST1dTRV9ERVZJQ0UsMjA2LDE3Niw0MCwxMwogICAgQ09OVFJPTCAgICAgICAgICJL6SZ6aSBob3p64XJlbmRlbOlzOiIsSURDX1JBRElPX0FTU0lHTiwiQnV0dG9uIiwKICAgICAgICAgICAgICAgICAgICBCU19BVVRPUkFESU9CVVRUT04sMTUsMTk1LDc5LDEwCgogICAgTFRFWFQgICAgICAgICAgICImQ+1ta2U6IixJRENfU1RBVElDX0xBQkVMLDMzLDIwOCwyOSwxMgogICAgRURJVFRFWFQgICAgICAgIElEQ19FRElUX0xBQkVMLDYzLDIwNSw3OCwxMyxFU19BVVRPSFNDUk9MTCB8IFdTX1RBQlNUT1AKICAgIExURVhUICAgICAgICAgICAiUyZvcnN64W06IixJRENfU1RBVElDX1NFUklBTCwzMywyMjUsMjksMTIKICAgIEVESVRURVhUICAgICAgICBJRENfRURJVF9TRVJJQUwsNjMsMjIxLDc4LDEzLEVTX0FVVE9IU0NST0xMIHwgV1NfVEFCU1RPUAoKICAgIENPTlRST0wgICAgICAgICAiUmVqdGV0dCBm4Wpsb2sgbWVnamVsZW7tdOlzZSIsSURDX1NIT1dfRE9UX0ZJTEVTLCJCdXR0b24iLEJTX0FVVE9DSEVDS0JPWCB8IFdTX1RBQlNUT1AsOCwyNjAsMjMwLDgKRU5ECgpJRERfQVVESU9DRkcgRElBTE9HIERJU0NBUkRBQkxFICAwLCAwLCAyNjAsIDI1MApTVFlMRSBXU19DSElMRCB8IFdTX0RJU0FCTEVECkZPTlQgOCwgIk1TIFNoZWxsIERsZyIKQkVHSU4KICAgIEdST1VQQk9YICAgICAgICAiIE1lZ2hhanTzcHJvZ3JhbSB24Wxhc3p04XMgIixJRENfU1RBVElDLDgsNCwyNDQsMTk1CiAgICBMVEVYVCAgICAgICAgICAgIlbhbGFzc3pvbiBlZ3kgaGFuZ21lZ2hhanTzdCBhIGtpduFsYXN6dG90dCBtZWdoYWp083Byb2dyYW0gZWz1dHRpIG7pZ3l6ZXQgYmVqbPZs6XPpdmVsLiAgQSBoYW5nIGxldGlsdGhhdPMsIGhhIG5lbSBqZWz2bCBiZSBlZ3kgbWVnaGFqdPN0IHNlbS4gVPZiYiBtZWdoYWp083Byb2dyYW0gYmVqZWz2bOlzZSBuZW0gYWrhbmxvdHQuIEF6IPZzc3plcyBtZWdoYWp08yBiZeFsbO10aGF08ywgaGEgcuFqdWsga2F0dGludCBqb2JiIGVn6XJnb21iYmFsLiIsSURDX1NUQVRJQywxNSwxNSwyMjcsMzUKICAgIENPTlRST0wgICAgICAgICAiRXN6a/Z69msiLElEQ19BVURJT19UUkVFLCJTeXNUcmVlVmlldzMyIixXU19CT1JERVIgfCBXU19UQUJTVE9QLDE1LDUwLDE0MCwxNDAgCiAgICBQVVNIQlVUVE9OICAgICAgIiZUZXN0IFNvdW5kIixJRENfQVVESU9fVEVTVCwxNzAsNTAsNTksMTQKICAgIFBVU0hCVVRUT04JICAgICJWZXrpcmz1cHVsdCIsSURDX0FVRElPX0NPTlRST0xfUEFORUwsMTcwLDcwLDU5LDE0CiAgICBHUk9VUEJPWCAgICAgICAgIiBEaXJlY3RTb3VuZCAiLElEQ19TVEFUSUMsOCwyMDUsMjQ0LDYwCiAgICBMVEVYVAkgICAgIkhhcmR2ZXJlcyBneW9yc+104XM6ICIsSURDX1NUQVRJQywxNSwyMTUsOTAsMTAKICAgIENPTUJPQk9YCSAgICBJRENfRFNPVU5EX0hXX0FDQ0VMLDEwMCwyMTMsMTUwLDcwLENCU19EUk9QRE9XTkxJU1QgfCBXU19WU0NST0xMIHwgV1NfVEFCU1RPUAogICAgQ09OVFJPTCAgICAgICAgICJNZWdoYWp083Byb2dyYW0gZW11bOFjafMiLElEQ19EU09VTkRfRFJWX0VNVUwsIkJ1dHRvbiIsQlNfQVVUT0NIRUNLQk9YIHwgV1NfVEFCU1RPUCwxNSwyMzAsMjMwLDEwCkVORAoKSUREX0RFU0tUT1BfSU5URUdSQVRJT04gRElBTE9HIERJU0NBUkRBQkxFICAwLCAwLCAyNjAsIDI1MApTVFlMRSBXU19DSElMRCB8IFdTX0RJU0FCTEVECkZPTlQgOCwgIk1TIFNoZWxsIERsZyIKQkVHSU4KICAgIEdST1VQQk9YICAgICAgICAiIE1lZ2plbGVu6XMgIixJRENfU1RBVElDLDgsNCwyNDQsMTA2CiAgICBMVEVYVCAgICAgICAgICAgIlTpbWE6IixJRENfU1RBVElDLDE1LDE2LDEzMCw4CiAgICBDT01CT0JPWCAgICAgICAgSURDX1RIRU1FX1RIRU1FQ09NQk8sMTUsMjQsMTMwLDE0LENCU19EUk9QRE9XTkxJU1QgfCBXU19WU0NST0xMIHwgV1NfVEFCU1RPUAogICAgUFVTSEJVVFRPTiAgICAgICJU6W1hIHRlbGVw7XTpc2UuLi4iLElEQ19USEVNRV9JTlNUQUxMLDE1MiwyMyw5MywxNAogICAgTFRFWFQgICAgICAgICAgICJTeu1uOiIsSURDX1RIRU1FX0NPTE9SVEVYVCwxNSw0MCwxMTIsOAogICAgQ09NQk9CT1ggICAgICAgIElEQ19USEVNRV9DT0xPUkNPTUJPLDE1LDQ4LDExMiwxNCxDQlNfRFJPUERPV05MSVNUIHwgV1NfVlNDUk9MTCB8IFdTX1RBQlNUT1AKICAgIExURVhUICAgICAgICAgICAiTelyZXQ6IixJRENfVEhFTUVfU0laRVRFWFQsMTM1LDQwLDExMCw4CiAgICBDT01CT0JPWCAgICAgICAgSURDX1RIRU1FX1NJWkVDT01CTywxMzUsNDgsMTEwLDE0LENCU19EUk9QRE9XTkxJU1QgfCBXU19WU0NST0xMIHwgV1NfVEFCU1RPUAogICAgTFRFWFQgICAgICAgICAgICJJdGVtOiIsSURDX1NUQVRJQywxNSw2NCwxMTIsOAogICAgQ09NQk9CT1ggICAgICAgIElEQ19TWVNQQVJBTV9DT01CTywxNSw3NCwxMTIsMTIwLENCU19EUk9QRE9XTkxJU1QgfCBXU19WU0NST0xMIHwgV1NfVEFCU1RPUCB8IENCU19TT1JUCiAgICBMVEVYVCAgICAgICAgICAgIkNvbG9yOiIsSURDX1NZU1BBUkFNX0NPTE9SX1RFWFQsMTM1LDY0LDI1LDgsV1NfRElTQUJMRUQKICAgIFBVU0hCVVRUT04gICAgICAiIixJRENfU1lTUEFSQU1fQ09MT1IsMTM1LDc0LDI1LDEzLFdTX0RJU0FCTEVEIHwgQlNfT1dORVJEUkFXCiAgICBMVEVYVCAgICAgICAgICAgIlNpemU6IixJRENfU1lTUEFSQU1fU0laRV9URVhULDE2Niw2NCwzMCw4LFdTX0RJU0FCTEVECiAgICBFRElUVEVYVCAgICAgICAgSURDX1NZU1BBUkFNX1NJWkUsMTY2LDc0LDIzLDEzLEVTX0FVVE9IU0NST0xMIHwgV1NfVEFCU1RPUCB8IFdTX0RJU0FCTEVECiAgICBDT05UUk9MICAgICAgICAgIiIsSURDX1NZU1BBUkFNX1NJWkVfVUQsVVBET1dOX0NMQVNTLFVEU19TRVRCVUREWUlOVCB8IFdTX0RJU0FCTEVELDE4Nyw3NCwxNSwxMwogICAgUFVTSEJVVFRPTiAgICAgICJGb250IixJRENfU1lTUEFSQU1fRk9OVCwyMDgsNzQsMzcsMTMsV1NfRElTQUJMRUQKICAgIEdST1VQQk9YICAgICAgICAiIFJlbmRzemVybWFwcGEgIixJRENfU1RBVElDLDgsMTE0LDI0NCwxMDAKICAgIENPTlRST0wgICAgICAgICAiTGlzdHZpZXciLElEQ19MSVNUX1NGUEFUSFMsIlN5c0xpc3RWaWV3MzIiLExWU19SRVBPUlQgfCBMVlNfQVVUT0FSUkFOR0UgfCBMVlNfQUxJR05MRUZUIHwKICAgICAgICAgICAgICAgICAgICAgTFZTX1NJTkdMRVNFTCB8IFdTX0JPUkRFUiB8IFdTX1RBQlNUT1AsIDE1LDEyNiwyMzAsNjQKICAgIENPTlRST0wgICAgICAgICAiSWRlIGxpbmtlbDoiLElEQ19MSU5LX1NGUEFUSCwiQnV0dG9uIixCU19BVVRPQ0hFQ0tCT1h8V1NfVEFCU1RPUHxXU19ESVNBQkxFRCwxNSwxOTUsNTAsMTMKICAgIEVESVRURVhUICAgICAgICAgSURDX0VESVRfU0ZQQVRILDY1LDE5NSwxNDUsMTMsRVNfQVVUT0hTQ1JPTEx8V1NfVEFCU1RPUHxXU19ESVNBQkxFRAogICAgUFVTSEJVVFRPTiAgICAgICJUYWxs83rhcyIsSURDX0JST1dTRV9TRlBBVEgsMjE1LDE5NSwzMCwxMyxXU19ESVNBQkxFRApFTkQKClNUUklOR1RBQkxFIERJU0NBUkRBQkxFCkJFR0lOCiAgICBJRFNfV0lORV9WRVJTSU9OICAgICAgICAiQ1ZTIgogICAgSURTX1RBQl9BUFBMSUNBVElPTlMgICAgIkFsa2FsbWF64XNvayIKICAgIElEU19UQUJfRExMUyAgICAgICAgICAgICJG/GdndulueWv2bnl2dOFyYWsiCiAgICBJRFNfVEFCX0RSSVZFUyAgICAgICAgICAiTWVnaGFqdPNrIgogICAgSURTX0NIT09TRV9QQVRIICAgICAgICAgIkvpcmVtIHbhbGFzc3pvbiB1bml4IGPpbGv2bnl2dOFyYXQuIgogICAgSURTX0hJREVfQURWQU5DRUQgICAgICAgIkhhbGFk8yA8PCIKICAgIElEU19TSE9XX0FEVkFOQ0VEICAgICAgICJIYWxhZPMgPj4iCiAgICBJRFNfTk9USEVNRSAgICAgICAgICAgICAiKE5pbmNzIHTpbWEpIgogICAgSURTX1RBQl9HUkFQSElDUyAgICAgICAgIkdyYWZpa2EiCiAgICBJRFNfVEFCX0RFU0tUT1BfSU5URUdSQVRJT04gIkFzenRhbGJhIGJl6XD8bOlzIgogICAgSURTX1RBQl9BVURJTyAgICAgICAgICAgIkhhbmciCiAgICBJRFNfVEFCX0FCT1VUICAgICAgICAgICAiTul2amVneSIKICAgIElEU19XSU5FQ0ZHX1RJVExFICAgICAgICJXaW5lIGtvbmZpZ3Vy4WNp8yIKICAgIElEU19XSU5FQ0ZHX1RJVExFX0FQUCAgICJXaW5lIGtvbmZpZ3Vy4WNp8yAlcyBzeuFt4XJhIgogICAgSURTX1RIRU1FRklMRSAgICAgICAgICAgIlTpbWFm4Wpsb2siCiAgICBJRFNfVEhFTUVGSUxFX1NFTEVDVCAgICAiVOltYWbhamwgduFsYXN6dOFzYSIKICAgIElEU19BVURJT19NSVNTSU5HICAgICAgICJKZWxlbmxlZyBuaW5jcyBoYW5nbWVnaGFqdPMga2l24Wxhc3p0dmEgYSByZWdpc3p0cuFjafNzIGFkYXRi4Xppc2Jhbi5cblxuRWd5IGFq4W5sb3R0IG1lZ2hhanTzcHJvZ3JhbSBraSBsZXR0IHbhbGFzenR2YSDWbm5lay5cbtZuIGhhc3pu4WxoYXRqYSBlenQgYSBtZWdoYWp083QsIHZhZ3kgduFsYXN6dGhhdCBt4XNpa2F0IGhhIGVs6XJoZXT1LlxuXG7Wbm5layBheiBhbGthbG1heuFzcmEga2VsbCBrYXR0aW50YW5pIGEga2l24Wxhc3p04XMg6XJ26W55YmUgbOlwdGV06XPpaGV6LiIKICAgIElEU19TSEVMTF9GT0xERVIgICAgICAgICJSZW5kc3plcm1hcHBhIgogICAgSURTX0xJTktTX1RPICAgICAgICAgICAgIklkZSBsaW5rZWwiCkVORAoKU1RSSU5HVEFCTEUgRElTQ0FSREFCTEUKQkVHSU4KICAgIElEU19ETExfV0FSTklORyAgICAgICAgICJBIGv2bnl2dOFyYWsgYmV09mx06XNpIHNvcnJlbmRq6W5layBtZWd24Wx0b3p0YXThc2EgbmVtIGFq4W5sb3R0LlxuQml6dG9zIGhvZ3kgZXp0IGFrYXJqYSB0ZW5uaT8iCiAgICBJRFNfRExMX1dBUk5JTkdfQ0FQVElPTiAiRmlneWVsZW06IHJlbmRzemVyZvxnZ3bpbnlr9m55dnThciIKICAgIElEU19ETExfTkFUSVZFICAgICAgICAgICJuYXTtdiIKICAgIElEU19ETExfQlVJTFRJTiAgICAgICAgICJiZelw7XRldHQiCiAgICBJRFNfRExMX05BVElWRV9CVUlMVElOICAibmF07XYsIGJl6XDtdGV0dCIKICAgIElEU19ETExfQlVJTFRJTl9OQVRJVkUgICJiZelw7XRldHQsIG5hdO12IgogICAgSURTX0RMTF9ESVNBQkxFRCAgICAgICAgImxldGlsdHZhIgogICAgSURTX0RFRkFVTFRfU0VUVElOR1MgICAgIkRlZmF1bHQgU2V0dGluZ3MiCiAgICBJRFNfRVhFQ1VUQUJMRV9GSUxURVIgICAiV2luZSBQcm9ncmFtcyAoKi5leGUsKi5leGUuc28pXDAqLmV4ZTsqLmV4ZS5zb1wwIgogICAgSURTX1VTRV9HTE9CQUxfU0VUVElOR1MgIlVzZSBnbG9iYWwgc2V0dGluZ3MiCiAgICBJRFNfU0VMRUNUX0VYRUNVVEFCTEUgICAiU2VsZWN0IGFuIGV4ZWN1dGFibGUgZmlsZSIKRU5ECgpTVFJJTkdUQUJMRSBESVNDQVJEQUJMRQpCRUdJTgogICAgSURTX1NIQURFUl9NT0RFX0hBUkRXQVJFICAgICJIYXJkd2FyZSIKICAgIElEU19TSEFERVJfTU9ERV9OT05FICAgICAgICAiTm9uZSIKRU5ECgpTVFJJTkdUQUJMRSBESVNDQVJEQUJMRQpCRUdJTgogICAgSURTX0RSSVZFX1VOS05PV04gICAgICAgICAgICJBdXRvZGV0ZWN0IgogICAgSURTX0RSSVZFX0ZJWEVEICAgICAgICAgICAgICJMb2NhbCBoYXJkIGRpc2siCiAgICBJRFNfRFJJVkVfUkVNT1RFICAgICAgICAgICAgIk5ldHdvcmsgc2hhcmUiCiAgICBJRFNfRFJJVkVfUkVNT1ZBQkxFICAgICAgICAgIkZsb3BweSBkaXNrIgogICAgSURTX0RSSVZFX0NEUk9NICAgICAgICAgICAgICJDRC1ST00iCiAgICBJRFNfRFJJVkVfTEVUVEVSU19FWENFRURFRCAgIllvdSBjYW5ub3QgYWRkIGFueSBtb3JlIGRyaXZlcy5cblxuRWFjaCBkcml2ZSBtdXN0IGhhdmUgYSBsZXR0ZXIsIGZyb20gQSB0byBaLCBzbyB5b3UgY2Fubm90IGhhdmUgbW9yZSB0aGFuIDI2IgogICAgSURTX1NZU1RFTV9EUklWRV9MQUJFTCAgICAgICJTeXN0ZW0gZHJpdmUiCiAgICBJRFNfQ09ORklSTV9ERUxFVEVfQyAgICAgICAgIkFyZSB5b3Ugc3VyZSB5b3Ugd2FudCB0byBkZWxldGUgZHJpdmUgQz9cblxuTW9zdCBXaW5kb3dzIGFwcGxpY2F0aW9ucyBleHBlY3QgZHJpdmUgQyB0byBleGlzdCwgYW5kIHdpbGwgZGllIG1lc3NpbHkgaWYgaXQgZG9lc24ndC4gSWYgeW91IHByb2NlZWQgcmVtZW1iZXIgdG8gcmVjcmVhdGUgaXQhIgogICAgSURTX0NPTF9EUklWRUxFVFRFUiAgICAgICAgICJMZXR0ZXIiCiAgICBJRFNfQ09MX0RSSVZFTUFQUElORyAgICAgICAgIkRyaXZlIE1hcHBpbmciCiAgICBJRFNfTk9fRFJJVkVfQyAgICAgICAgICAgICAgIllvdSBkb24ndCBoYXZlIGEgZHJpdmUgQy4gVGhpcyBpcyBub3Qgc28gZ3JlYXQuXG5cblJlbWVtYmVyIHRvIGNsaWNrICdBZGQnIGluIHRoZSBEcml2ZXMgdGFiIHRvIGNyZWF0ZSBvbmUhXG4iCkVORAoKU1RSSU5HVEFCTEUgRElTQ0FSREFCTEUKQkVHSU4KICAgIElEU19BQ0NFTF9GVUxMICAgICAgICAgICAgICAiRnVsbCIKICAgIElEU19BQ0NFTF9TVEFOREFSRCAgICAgICAgICAiU3RhbmRhcmQiCiAgICBJRFNfQUNDRUxfQkFTSUMgICAgICAgICAgICAgIkJhc2ljIgogICAgSURTX0FDQ0VMX0VNVUxBVElPTiAgICAgICAgICJFbXVsYXRpb24iCiAgICBJRFNfRFJJVkVSX0FMU0EgICAgICAgICAgICAgIkFMU0EgRHJpdmVyIgogICAgSURTX0RSSVZFUl9FU09VTkQgICAgICAgICAgICJFc291bkQgRHJpdmVyIgogICAgSURTX0RSSVZFUl9PU1MgICAgICAgICAgICAgICJPU1MgRHJpdmVyIgogICAgSURTX0RSSVZFUl9KQUNLICAgICAgICAgICAgICJKQUNLIERyaXZlciIKICAgIElEU19EUklWRVJfTkFTICAgICAgICAgICAgICAiTkFTIERyaXZlciIKICAgIElEU19EUklWRVJfQVVESU9JTyAgICAgICAgICAiQXVkaW8gSU8gKFNvbGFyaXMpIERyaXZlciIKICAgIElEU19EUklWRVJfQ09SRUFVRElPICAgICAgICAiQ29yZUF1ZGlvIERyaXZlciIKICAgIElEU19PUEVOX0RSSVZFUl9FUlJPUiAgICAgICAiQ291bGRuJ3Qgb3BlbiAlcyEiCiAgICBJRFNfU09VTkREUklWRVJTICAgICAgICAgICAgIlNvdW5kIERyaXZlcnMiCiAgICBJRFNfREVWSUNFU19XQVZFT1VUICAgICAgICAgIldhdmUgT3V0IERldmljZXMiCiAgICBJRFNfREVWSUNFU19XQVZFSU4gICAgICAgICAgIldhdmUgSW4gRGV2aWNlcyIKICAgIElEU19ERVZJQ0VTX01JRElPVVQgICAgICAgICAiTUlESSBPdXQgRGV2aWNlcyIKICAgIElEU19ERVZJQ0VTX01JRElJTiAgICAgICAgICAiTUlESSBJbiBEZXZpY2VzIgogICAgSURTX0RFVklDRVNfQVVYICAgICAgICAgICAgICJBdXggRGV2aWNlcyIKICAgIElEU19ERVZJQ0VTX01JWEVSICAgICAgICAgICAiTWl4ZXIgRGV2aWNlcyIKICAgIElEU19VTkFWQUlMQUJMRV9EUklWRVIgICAgICAiRm91bmQgZHJpdmVyIGluIHJlZ2lzdHJ5IHRoYXQgaXMgbm90IGF2YWlsYWJsZSFcblxuUmVtb3ZlIFwiJXNcIiBmcm9tIHJlZ2lzdHJ5PyIKICAgIElEU19XQVJOSU5HICAgICAgICAgICAgICAgICAiV2FybmluZyIKRU5ECg==