LyoKICogWENPUFkgLSBXaW5lLWNvbXBhdGlibGUgeGNvcHkgcHJvZ3JhbQogKiBQb2xpc2ggbGFuZ3VhZ2Ugc3VwcG9ydAogKgogKiBDb3B5cmlnaHQgKEMpIDIwMDcgSi4gRWRtZWFkZXMKICogQ29weXJpZ2h0IChDKSAyMDA3IE1pa29sYWogWmFsZXdza2kKICoKICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCiAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgogKiB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KICoKICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCiAqIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiAqCiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKICogTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQogKiBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBCiAqLwoKI2luY2x1ZGUgInhjb3B5LmgiCgpMQU5HVUFHRSBMQU5HX1BPTElTSCwgU1VCTEFOR19ERUZBVUxUCgpTVFJJTkdUQUJMRQp7CiAgICBTVFJJTkdfSU5WUEFSTVMsICJOaWV3s2GcY2l3YSBsaWN6YmEgcGFyYW1ldHLzdyAtIHVydWNob20geGNvcHkgLz8gYWJ5IHd5nHdpZXRsaeYgcG9tb2NcbiIKICAgIFNUUklOR19JTlZQQVJNLCAgIk5pZXpuYW55IHBhcmFtZXRlciAnJXMnIC0gIHVydWNob20geGNvcHkgLz8gYWJ5IHd5nHdpZXRsaeYgcG9tb2NcbiIKICAgIFNUUklOR19QQVVTRSwgICAgIk5hY2mcbmlqIDxlbnRlcj4gYWJ5IHJvenBvY3q55iBrb3Bpb3dhbmllXG4iCiAgICBTVFJJTkdfU0lNQ09QWSwgICIlZCBwbGlrKPN3KSB6b3N0YbNvYnkgc2tvcGlvd2FueWNoXG4iCiAgICBTVFJJTkdfQ09QWSwgICAgICIlZCBwbGlrKPN3KSBza29waW93YW55Y2hcbiIKICAgIFNUUklOR19RSVNESVIsICAgIkN6eSAnJXMnIGplc3QgbmF6d7kgcGxpa3UgY3p5IGthdGFsb2d1XG4iIFwKICAgICAgICAgICAgICAgICAgICAgImRvY2Vsb3dlZ28/XG4iIFwKICAgICAgICAgICAgICAgICAgICAgIihQIC0gcGxpaywgSyAtIGthdGFsb2cpXG4iCiAgICBTVFJJTkdfU1JDUFJPTVBULCIlcz8gKFRha3xOaWUpXG4iCiAgICBTVFJJTkdfT1ZFUldSSVRFLCJaYXN0uXBp5iAlcz8gKFRha3xOaWV8V3N6eXN0a2llKVxuIgogICAgU1RSSU5HX0NPUFlGQUlMLCAiS29waW93YW5pZSAnJXMnIGRvICclcycgbmllIHBvd2lvZLNvIHNp6iAtIGtvZCBis+pkdSAlZFxuIgogICAgU1RSSU5HX09QRU5GQUlMLCAiTmllIHVkYbNvIHNp6iBvdHdvcnp55iAnJXMnXG4iCiAgICBTVFJJTkdfUkVBREZBSUwsICJCs7lkIHBvZGN6YXMgY3p5dGFuaWEgJyVzJ1xuIgogICAgU1RSSU5HX1lFU19DSEFSLCAiVCIKICAgIFNUUklOR19OT19DSEFSLCAgIk4iCiAgICBTVFJJTkdfQUxMX0NIQVIsICJXIgogICAgU1RSSU5HX0ZJTEVfQ0hBUiwiUCIKICAgIFNUUklOR19ESVJfQ0hBUiwgIksiCgogICAgU1RSSU5HX0hFTFAsCiJYQ09QWSAtIGtvcGl1amUgcGxpa2kgbHViIGRyemV3YSBrYXRhbG9n83dcblwKXG5cClNrs2FkbmlhOlxuXApYQ09QWSCfcvNks28gW2NlbF0gWy9JXSBbL1NdIFsvUV0gWy9GXSBbL0xdIFsvV10gWy9UXSBbL05dIFsvVV1cblwKXHQgICAgIFsvUl0gWy9IXSBbL0NdIFsvUF0gWy9BXSBbL01dIFsvRV0gWy9EXSBbL1ldIFsvLVldXG5cClxuXApHZHppZTpcblwKXG5cClsvSV0gIEplv2VsaSBcImNlbFwiIG5pZSBpc3RuaWVqZSBpIGtvcGlvd2FuZSBzuSBjbyBuYWptbmllaiBkd2EgcGxpa2ksXG5cClx0emFrs2FkYSwgv2UgXCJjZWxcIiBwb3dpZW4gYnnmIGthdGFsb2dpZW1cblwKWy9TXSAgS29waXVqZSBrYXRhbG9naSBpIHBvZGthdGFsb2dpXG5cClsvRV0gIEtvcGl1amUga2F0YWxvZ2kgaSBwb2RrYXRhbG9naSwgs7ljem5pZSB6IHB1c3R5bWlcblwKWy9RXSAgTmllIHd5cGlzdWplIG5hencgcGxpa/N3IHBvZGN6YXMga29waW93YW5pYSAodHJ5YiBjaWNoeSlcblwKWy9GXSAgV3lwaXN1amUgcGWzbmUgnGNpZb9raSCfcvNks293ZSBpIGRvY2Vsb3dlIHBvZGN6YXMga29waW93YW5pYVxuXApbL0xdICBKZWR5bmllIHN5bXVsdWplIG9wZXJhY2rqLCBwb2thenVquWMgcGxpa2ksIGt083JlIGJ5s3lieSBrb3Bpb3dhbmVcblwKWy9XXSAgUHJvc2kgbyBwb3R3aWVyZHplbmllIHByemVkIHJvenBvY3rqY2llbSBrb3Bpb3dhbmlhXG5cClsvVF0gIFR3b3J6eSBwdXN0ZSBrYXRhbG9naSwgYWxlIG5pZSBrb3BpdWplIHBsaWvzd1xuXApbL1ldICBaYXN06nB1amUgcGxpa2kgYmV6IHByb5xieSBvIHBvdHdpZXJkemVuaWVcblwKWy8tWV0gWmF3c3plIHByb3NpIG8gcG90d2llcmR6ZW5pZSBwcnplZCB6YXN0uXBpZW5pZW0gcGxpa3VcblwKWy9QXSAgUHJvc2kgbyBwb3R3aWVyZHplbmllIHByemVkIHNrb3Bpb3dhbmllbSBrYb9kZWdvIHBsaWt1XG5cClsvTl0gIEtvcGl1amUgdb95d2FquWMga3LzdGtpY2ggbmF6dyBwbGlr83dcblwKWy9VXSAgS29waXVqZSB0eWxrbyBwbGlraSwga3TzcmUganW/IGlzdG5pZWq5IHcgbWllanNjdSBkb2NlbG93eW1cblwKWy9SXSAgWmFzdOpwdWplIHBsaWtpIHR5bGtvIGRvIG9kY3p5dHVcblwKWy9IXSAgS29waXVqZSBy83duaWW/IHBsaWtpIHVrcnl0ZSBpIHN5c3RlbW93ZVxuXApbL0NdICBLb250eW51dWplIG5hd2V0IGplv2VsaSBwb2RjemFzIGtvcGlvd2FuaWEgd3lzdOpwabN5IGKz6mR5XG5cClsvQV0gIEtvcGl1amUgdHlsa28gcGxpa2kgeiBhdHJ5YnV0ZW0gYXJjaGl3YWxueVxuXApbL01dICBLb3BpdWplIHR5bGtvIHBsaWtpIHogYXRyeWJ1dGVtIGFyY2hpd2FsbnkgaSB1c3V3YSB0ZW4gYXRyeWJ1dFxuXApbL0QgfCAvRDptLWQteV0gS29waXVqZSB0eWxrbyBub3dlIHBsaWtpIGx1YiB0ZSB6bW9kaWZpa293YW5lIHBvIHBvZGFuZWogZGFjaWUuXG5cClx0XHRKZb9lbGkgbmllIHBvZGFubyC/YWRuZWogZGF0eSwgdG8ga29waW93YW5lIHO5IHBsaWtpLCBrdPNyZSBzuVxuXApcdFx0bm93c3plIG5pvyB3IGthdGFsb2d1IGRvY2Vsb3d5bVxuXG4iCgp9Cg==