LyoNCiAqIFdyaXR0ZW4gYnkgSi5ULiBDb25rbGluIDxqdGNAbmV0YnNkLm9yZz4uDQogKiBBZGFwdGVkIGZvciB1c2UgYXMgbG9nMiBieSBVbHJpY2ggRHJlcHBlciA8ZHJlcHBlckBjeWdudXMuY29tPi4NCiAqIFB1YmxpYyBkb21haW4uDQogKg0KICogQ2hhbmdlZCB0byB1c2UgZnlsMnhwMSBmb3IgdmFsdWVzIG5lYXIgMSwgPGRyZXBwZXJAY3lnbnVzLmNvbT4uDQogKg0KICogUmVtb3ZlZCBoZWFkZXIgZmlsZSBkZXBlbmRlbmN5IGZvciB1c2UgaW4gbGlibWluZ3dleC5hIGJ5DQogKiAgIERhbm55IFNtaXRoIDxkYW5ueXNtaXRoQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4NCiAqLw0KDQoJLmZpbGUJImxvZzJmLlMiDQoJLnRleHQNCgkuYWxpZ24gNA0Kb25lOgkuZG91YmxlIDEuMA0KCS8qIEl0IGlzIG5vdCBpbXBvcnRhbnQgdGhhdCB0aGlzIGNvbnN0YW50IGlzIHByZWNpc2UuICBJdCBpcyBvbmx5DQoJICAgYSB2YWx1ZSB3aGljaCBpcyBrbm93biB0byBiZSBvbiB0aGUgc2FmZSBzaWRlIGZvciB1c2luZyB0aGUNCgkgICBmeWwyeHAxIGluc3RydWN0aW9uLiAgKi8NCmxpbWl0OgkuZG91YmxlIDAuMjkNCg0KCS50ZXh0DQoJLmFsaWduIDQNCi5nbG9ibCBfbG9nMmYNCgkuZGVmCV9sb2cyZjsJLnNjbAkyOwkudHlwZQkzMjsJLmVuZGVmDQpfbG9nMmY6DQoJZmxkbAlvbmUNCglmbGRzCTQoJWVzcCkJCS8vIHggOiAxDQoJZnhhbQ0KCWZuc3Rzdw0KCWZsZAklc3QJCS8vIHggOiB4IDogMQ0KCXNhaGYNCglqYwkzZgkJLy8gaW4gY2FzZSB4IGlzIE5hTiBvciCxSW5mDQo0Oglmc3ViCSVzdCgyKSwgJXN0CS8vIHgtMSA6IHggOiAxDQoJZmxkCSVzdAkJLy8geC0xIDogeC0xIDogeCA6IDENCglmYWJzCQkJLy8gfHgtMXwgOiB4LTEgOiB4IDogMQ0KCWZjb21wbAlsaW1pdAkJLy8geC0xIDogeCA6IDENCglmbnN0c3cJCQkvLyB4LTEgOiB4IDogMQ0KCWFuZGIJJDB4NDUsICVhaA0KCWp6CTJmDQoJZnN0cAklc3QoMSkJCS8vIHgtMSA6IDENCglmeWwyeHAxCQkJLy8gbG9nKHgpDQoJcmV0DQoNCjI6CWZzdHAJJXN0KDApCQkvLyB4IDogMQ0KCWZ5bDJ4CQkJLy8gbG9nKHgpDQoJcmV0DQoNCjM6CWpwCTRiCQkvLyBpbiBjYXNlIHggaXMgsUluZg0KCWZzdHAJJXN0KDEpDQoJZnN0cAklc3QoMSkNCglyZXQNCg==