LyogSGV5LCBFbWFjcywgb3BlbiB0aGlzIGZpbGUgd2l0aCAtKi0gY29kaW5nOiBjcDEyNTAgLSotCiAqCiAqIENvcHlyaWdodCAyMDAwIEVyaWMgUG91ZWNoCiAqCiAqIEN6ZWNoIHJlc291cmNlcyBmb3IgTVMgQUNNCiAqIENvcHlyaWdodCAyMDA0IERhdmlkIEtyZWRiYQogKgogKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCiAqIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgogKgogKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKICogTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KICoKICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwogKiBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCiAqIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EKICovCgpMQU5HVUFHRSBMQU5HX0NaRUNILCBTVUJMQU5HX0RFRkFVTFQKCi8qIEN6ZWNoIHN0cmluZ3MgaW4gQ1AxMjUwICovCgpETEdfQUNNRk9STUFUQ0hPT1NFX0lEIERJQUxPRyBESVNDQVJEQUJMRSAgMTAsIDIwLCAyMjUsIDEwMApTVFlMRSBEU19NT0RBTEZSQU1FIHwgV1NfUE9QVVAgfCBXU19WSVNJQkxFIHwgV1NfQ0FQVElPTiB8IFdTX1NZU01FTlUKQ0FQVElPTiAiVv1i7HIgenZ1a3UiCkZPTlQgOCwgIk1TIFNoZWxsIERsZyIKQkVHSU4KCiAgICBMVEVYVCAgICAgICAgICAgIiZO4XpldjoiLCAtMSwgNSwgNSwgMTE1LCA4LCBOT1QgV1NfR1JPVVAKCiAgICBDT01CT0JPWCAgICAgICAgSUREX0FDTUZPUk1BVENIT09TRV9DTUJfQ1VTVE9NLCA1LCAxNSwgMTE1LCA2MCwKICAgICAgICAgICAgICAgICAgICBDQlNfRFJPUERPV05MSVNUIHwgQ0JTX1NPUlQgfCBXU19WU0NST0xMIHwgV1NfVEFCU1RPUAoKICAgIFBVU0hCVVRUT04gICAgICAiJlVsb55pdCBqYWtvIiwgSUREX0FDTUZPUk1BVENIT09TRV9CVE5fU0VUTkFNRSwgMTI1LCAxNCwgNDUsIDE0CiAgICBQVVNIQlVUVE9OICAgICAgIk9kZWImcmF0IiwgSUREX0FDTUZPUk1BVENIT09TRV9CVE5fREVMTkFNRSwgMTc1LCAxNCwgNDUsIDE0CgogICAgTFRFWFQgICAgICAgICAgICImRm9ybeF0OiIsIC0xLCA1LCA0MSwgNDQsIDgsIE5PVCBXU19HUk9VUAoKICAgIENPTUJPQk9YICAgICAgICBJRERfQUNNRk9STUFUQ0hPT1NFX0NNQl9GT1JNQVRUQUcsIDUwLCAzOSwgMTcwLCA2MCwKICAgICAgICAgICAgICAgICAgICBDQlNfRFJPUERPV05MSVNUIHwgQ0JTX1NPUlQgfCBXU19WU0NST0xMIHwgV1NfVEFCU1RPUAoKICAgIExURVhUICAgICAgICAgICAiJkF0cmlidXR5OiIsIC0xLCA1LCA1OSwgNDQsIDgsIE5PVCBXU19HUk9VUAoKI2lmIDAKICAgIENPTUJPQk9YICAgICAgICBJRERfQUNNRk9STUFUQ0hPT1NFX0NNQl9GT1JNQVQsIDUwLCA1NywgMTcwLCA2MCwKICAgICAgICAgICAgICAgICAgICBDQlNfRFJPUERPV05MSVNUIHwgV1NfVlNDUk9MTCB8IFdTX1RBQlNUT1AgfAogICAgICAgICAgICAgICAgICAgIENCU19PV05FUkRSQVdGSVhFRCB8IENCU19IQVNTVFJJTkdTCiNlbHNlCiAgICBDT01CT0JPWCAgICAgICAgSUREX0FDTUZPUk1BVENIT09TRV9DTUJfRk9STUFULCA1MCwgNTcsIDE3MCwgNjAsCiAgICAgICAgICAgICAgICAgICAgQ0JTX0RST1BET1dOTElTVCB8IFdTX1ZTQ1JPTEwgfCBXU19UQUJTVE9QCiNlbmRpZgogICAgREVGUFVTSEJVVFRPTiAgICJPSyIsIElET0ssIDQ4LCA4MCwgNDAsIDE0CiAgICBQVVNIQlVUVE9OICAgICAgIlN0b3JubyIsIElEQ0FOQ0VMLCA5MiwgODAsIDQwLCAxNAogICAgUFVTSEJVVFRPTiAgICAgICJQJm9tb2MiLCBJRERfQUNNRk9STUFUQ0hPT1NFX0JUTl9IRUxQLCAxMzYsIDgwLCA0MCwgMTQKCkVORAo=