LyoKICogT2xlVmlldyAoRGEucmMpCiAqIERhbmlzaCBMYW5ndWFnZSBTdXBwb3J0CiAqCiAqIENvcHlyaWdodCAyMDA4IEplbnMgQWxicmV0c2VuIDxqZW5zQGFsYnJldHNlbi5kaz4KICoKICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCiAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgogKiB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KICoKICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCiAqIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiAqCiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKICogTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQogKiBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBCiAqLwoKI2luY2x1ZGUgInJlc291cmNlLmgiCgpMQU5HVUFHRSBMQU5HX0RBTklTSCwgU1VCTEFOR19ERUZBVUxUCgpETEdfQ1JFQVRFSU5TVE9OIERJQUxPRyAwLCAwLCAyNTAsIDQxClNUWUxFIERTX01PREFMRlJBTUUgfCBEU19OT0lETEVNU0cgfCBXU19DQVBUSU9OIHwgV1NfU1lTTUVOVQpDQVBUSU9OICJUaWxzbHV0IHRpbCBlbiBhbmRlbiBtYXNraW5lIgpGT05UIDgsICJNUyBTaGVsbCBEbGciCnsKICAgIExURVhUICAgIiZNYXNraW5lbmF2bjoiLCAtMSwgNSwgNiwgMTkwLCA4CiAgICBFRElUVEVYVCAgICBJRENfTUFDSElORSwgNSwgMTYsIDE5MCwgMTIsIFdTX0JPUkRFUiB8IFdTX1RBQlNUT1AgfCBFU19BVVRPSFNDUk9MTAogICAgREVGUFVTSEJVVFRPTiAgICImT0siLCBJRE9LLCAyMDAsIDUsIDQ1LCAxNAogICAgUFVTSEJVVFRPTiAgIiZBbm51bGxlciIsIElEQ0FOQ0VMLCAyMDAsIDIyLCA0NSwgMTQKfQoKRExHX1NZU0NPTkYgRElBTE9HIDAsIDAsIDE3MCwgMTAwClNUWUxFIERTX01PREFMRlJBTUUgfCBEU19OT0lETEVNU0cgfCBXU19DQVBUSU9OIHwgV1NfU1lTTUVOVQpDQVBUSU9OICJTeXN0ZW1vcHPmdG5pbmciCkZPTlQgOCwgIk1TIFNoZWxsIERsZyIKewogICAgTFRFWFQgICAiU3lzdGVtaW5kc3RpbGxpbmdlciIsIC0xLCA1LCA2LCAxNjAsIDgKICAgIENIRUNLQk9YICAgICJBbnZlbmQgZGlzdHJpYnUmZXJldCAgQ09NIiwgSURDX0VOQUJMRURDT00sIDUsIDIwLCAxNjAsIDEwLCBXU19UQUJTVE9QIHwgV1NfR1JPVVAgfCBCU19BVVRPQ0hFQ0tCT1gKICAgIENIRUNLQk9YICAgICJBbnZlbmQgZWtzdGVybmUgdGlsc2x1dG5pbmdlJnIgKGt1biBXaW45NSkiLCBJRENfRU5BQkxFUkVNT1RFLCA1LCAzNSwgMTYwLCAxMCwgV1NfVEFCU1RPUCB8IFdTX0dST1VQIHwgQlNfQVVUT0NIRUNLQk9YCiAgICBMVEVYVCAgICJEaXNzZSBpbmRzdGlsbGluZ2VyIOZuZHJlciBrdW4gcmVnaXN0ZXJ25nJkaWVyLlxuRGUgcOV2aXJrZXIgaWtrZSBXaW5lcyB5ZGVsc2UuIiwgLTEsIDUsIDUwLCAxNjAsIDQwCiAgICBERUZQVVNIQlVUVE9OICAgIiZPSyIsIElET0ssIDcwLCA4MCwgNDUsIDE0CiAgICBQVVNIQlVUVE9OICAiJkFubnVsbGVyIiwgSURDQU5DRUwsIDEyMCwgODAsIDQ1LCAxNAp9CgpETEdfREVGQVVMVF9JViBESUFMT0cgMCwgMCwgMjgwLCA1MApTVFlMRSBEU19NT0RBTEZSQU1FIHwgRFNfTk9JRExFTVNHIHwgV1NfQ0FQVElPTiB8IFdTX1NZU01FTlUKQ0FQVElPTiAiU3RhbmRhcmQgZ3LmbnNlZmxhZGUgdmlzZXIiCkZPTlQgOCwgIk1TIFNoZWxsIERsZyIKewogICAgTFRFWFQgICAiR3LmbnNlZmxhZGUiLCAtMSwgNSwgNiwgNTAsIDgKICAgIExURVhUICAgIiIsIElEQ19MQUJFTCwgNjAsIDYsIDE0NSwgOAogICAgTFRFWFQgICAiSUlEOiIsIC0xLCA1LCAxNiwgNTAsIDgKICAgIExURVhUICAgIiIsIElEQ19JREVOVElGSUVSLCA2MCwgMTYsIDE2NSwgOAogICAgREVGUFVTSEJVVFRPTiAgICImTHVrIiwgSURDQU5DRUwsIDIzMCwgNiwgNDUsIDE0CiAgICBQVVNIQlVUVE9OICAiJlZpcyB0eXBlaW5mbyIsIElEQ19WSUVXVFlQRUlORk8sIDYsIDMxLCA3MCwgMTQsIFdTX0RJU0FCTEVECn0KCkRMR19JUEVSU0lTVF9JViBESUFMT0cgMCwgMCwgMjgwLCAyOQpTVFlMRSBEU19NT0RBTEZSQU1FIHwgRFNfTk9JRExFTVNHIHwgV1NfQ0FQVElPTiB8IFdTX1NZU01FTlUKQ0FQVElPTiAiR3LmbnNlZmxhZGUgdmlzZXIgZm9yIElQZXJzaXN0IgpGT05UIDgsICJNUyBTaGVsbCBEbGciCnsKICAgIExURVhUICAgIktsYXNzZW5hdm46IiwgLTEsIDUsIDYsIDUwLCA4CiAgICBMVEVYVCAgICIiLCBJRENfTEFCRUwsIDYwLCA2LCAxNDUsIDgKICAgIExURVhUICAgIkNMU0lEOiIsIC0xLCA1LCAxNiwgNTAsIDgKICAgIExURVhUICAgIiIsIElEQ19JREVOVElGSUVSLCA2MCwgMTYsIDE2NSwgOAogICAgREVGUFVTSEJVVFRPTiAgICImTHVrIiwgSURDQU5DRUwsIDIzMCwgNiwgNDUsIDE0Cn0KCkRMR19JUEVSU0lTVFNUUkVBTV9JViBESUFMT0cgMCwgMCwgMjgwLCA2OApTVFlMRSBEU19NT0RBTEZSQU1FIHwgRFNfTk9JRExFTVNHIHwgV1NfQ0FQVElPTiB8IFdTX1NZU01FTlUKQ0FQVElPTiAiR3LmbnNlZmxhZGUgdmlzZXIgZm9yIElQZXJzaXN0U3RyZWFtIgpGT05UIDgsICJNUyBTaGVsbCBEbGciCnsKICAgIExURVhUICAgIktsYXNzZW5hdm46IiwgLTEsIDUsIDYsIDUwLCA4CiAgICBMVEVYVCAgICIiLCBJRENfTEFCRUwsIDYwLCA2LCAxNDUsIDgKICAgIExURVhUICAgIkNMU0lEOiIsIC0xLCA1LCAxNiwgNTAsIDgKICAgIExURVhUICAgIiIsIElEQ19JREVOVElGSUVSLCA2MCwgMTYsIDE2NSwgOAogICAgREVGUFVTSEJVVFRPTiAgICImTHVrIiwgSURDQU5DRUwsIDIzMCwgNiwgNDUsIDE0CiAgICBQVVNIQlVUVE9OICAiJklzRGlydHkiLCBJRENfSVNESVJUWV9CVVRUT04sIDYsIDMxLCA1MCwgMTQKICAgIExURVhUICAgIj8/PyIsIElEQ19JU0RJUlRZLCA2MCwgMzQsIDE0NSwgOAogICAgUFVTSEJVVFRPTiAgIiZHZXRTaXplTWF4IiwgSURDX0dFVFNJWkVNQVhfQlVUVE9OLCA2LCA0OSwgNTAsIDE0CiAgICBMVEVYVCAgICI/Pz8iLCBJRENfR0VUU0laRU1BWCwgNjAsIDUyLCAxNDUsIDgKfQo=