LyoKICogVW5pbnN0YWxsZXIgKEl0YWxpYW4gUmVzb3VyY2VzKQogKgogKiBDb3B5cmlnaHQgMjAwNiBBbnRvbmlvIENvZGF6emkKICoKICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCiAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgogKiB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KICoKICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCiAqIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiAqCiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKICogTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQogKiBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBCiAqLwoKTEFOR1VBR0UgTEFOR19JVEFMSUFOLCBTVUJMQU5HX05FVVRSQUwKCklERF9VTklOU1RBTExFUiBESUFMT0cgRElTQ0FSREFCTEUgIDAsIDAsIDMzMCwgMTYwClNUWUxFIERTX01PREFMRlJBTUUgfCBXU19DQVBUSU9OIHwgV1NfU1lTTUVOVQpDQVBUSU9OICJXSU5FIERpc2luc3RhbGxhemlvbmUgQXBwbGljYXppb25pIgpGT05UIDEwLCAiTVMgU2FucyBTZXJpZiIKQkVHSU4KTFRFWFQgICAgICAgICAgICJTZWxlemlvbmFyZSBkYWxsJ2VsZW5jbyBsJ2FwcGxpY2F6aW9uZSBjaGUgc2kgZGVzaWRlcmEgcmltdW92ZXJlIixJRENfUExFQVNFU0VMRUNULDEwLDEwLDI1MCwxNApFRElUVEVYVCAgICAgICAgSURDX0ZJTFRFUiwxMCwyNSwyNTAsMTQsRVNfQVVUT0hTQ1JPTEwKTElTVEJPWCAgICAgICAgIElEQ19MSVNULDEwLDQzLDI1MCwxMDYsTEJTX05PSU5URUdSQUxIRUlHSFQgfCAKTEJTX0VYVEVOREVEU0VMIHwgV1NfVlNDUk9MTCB8IFdTX1RBQlNUT1AKUFVTSEJVVFRPTiAgICAgICImUmltdW92aSIsSURDX1VOSU5TVEFMTCwyNzAsNDgsNTAsMTQKUFVTSEJVVFRPTiAgICAgICImSW5mbyIsSURDX0FCT1VULDI3MCw2NSw1MCwxNApQVVNIQlVUVE9OICAgICAgIiZFc2NpIixJRENfRVhJVCwyNzAsODEsNTAsMTQKRU5ECgoKU1RSSU5HVEFCTEUgRElTQ0FSREFCTEUgewpJRFNfQVBQTkFNRSwgIldpbmUgRGlzaW5zdGFsbGF6aW9uZSBBcHBsaWNhemlvbmkiCklEU19BQk9VVCwgIldpbmUgQXBwbGljYXRpb24gVW5pbnN0YWxsZXIgKEMpIDIwMDUgYnkgQW5kcmVhcyBNb2hyLCBIYW5udSBWYWx0b25lbiBhbmQgSm9uYXRoYW4gRXJuc3QuIFRyYWR1emlvbmUgaXRhbGlhbmE6IEFudG9uaW8gQ29kYXp6aSIKSURTX0FCT1VUVElUTEUsICJJbmZvcm1hemlvbmkiCklEU19SRUdJU1RSWUtFWU5PVEFWQUlMQUJMRSwgIkNoaWF2ZSBkZWwgcmVnaXN0cm8gbm9uIGRpc3BvbmliaWxlLCBudWxsYSBkYSBmYXJlICEiCklEU19VTklOU1RBTExGQUlMRUQsICJFc2VjdXppb25lIGRlbCBjb21hbmRvIGRpIGRpc2luc3RhbGxhemlvbmUgJyVzJyDoIGZhbGxpdGEsIGZvcnNlIGEgY2F1c2EgZGkgdW4gZXNlZ3VpYmlsZSBtYW5jYW50ZS5cclxuVnVvaSByaW11b3ZlcmUgZGFsIHJlZ2lzdHJvIGxhIGVudHJ5IGRpIGRpc2luc3RhbGxhemlvbmU/Igp9Cg==