SENVNSBjb25maWd1cmF0aW9uIGRldGFpbHMgYW5kIHN0YXJ0dXAgc2VxdWVuY2UKCihDKSBDb3B5cmlnaHQgMjAwNyBOZXRzdGFsIE1hc2NoaW5lbiBBRwogICAgTmlrbGF1cyBHaWdlciAoTmlrbGF1cy5HaWdlckBuZXRzdGFsLmNvbSkKClRPRE86Ci0tLS0tCi0gRml4IGVycm9yOiBXYWl0aW5nIGZvciBQSFkgYXV0byBuZWdvdGlhdGlvbiB0byBjb21wbGV0ZS4uLi4uIFRJTUVPVVQgIQogICAgIC0gRG9lcyBub3Qgb2NjdXIgaWYgYm90aCBFTUFDIGFyZSBjb25uZWN0ZWQKLSBGaXggUlRTL0NUUyBwcm9ibGVtIChIVz8pCiAgQ09ORklHX1NFUklBTF9NVUxUSS9DT05GSUdfU0VSSUFMX1NPRlRXQVJFX0ZJRk8gaGFuZ3MgYWZ0ZXIKICBTd2l0Y2hpbmcgdG8gaW50ZXJydXB0IGRyaXZlbiBzZXJpYWwgaW5wdXQgbW9kZQotIE1ha2UgdnhXb3JrcyBzdGFydCBmcm9tIHUtYm9vdC4gUG9zc2libGUgcmVhc29ucwogICAgLSBEb2VzIHZ4V29ya3MgbmVlZCBhbiBlbnRyeSBmb3IgdGhlIE1hY2hpbmUgQ2hlY2sgaW50ZXJydXB0IGxpa2UgdGhpcwogICAgICB0bGJlbnRyeSggMHg0MDAwMDAwMCwgU1pfMjU2TSwgMCwgMSwgQUNfUnxBQ19XfEFDX1h8U0FfR3xTQV9JICkgPwoKQ2F2ZWF0czoKLS0tLS0tLS0KRXJyYXRhIENISVBfODogSW5jb3JyZWN0IFdyaXRlIHRvIEREUiBTRFJBTS4gKHdhcyBub3QgYXBwbGllZCB0byBzZXF1b2lhLmMpCnNlZSBoY3U1LmMuCgoKTWVtb3J5IEJhbmsgMCAtLSBGbGFzaCBjaGlwCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKMHhmZmYwMDAwMCAtIDB4ZmZmZmZmZmYKClRoZSBmbGFzaCBjaGlwIGlzIHJlYWxseSBvbmx5IDUxMktieXRlcywgYnV0IHRoZSBoaWdoIGFkZHJlc3MgYml0IG9mCnRoZSAxTWVnIHJlZ2lvbiBpcyBpZ25vcmVkLCBzbyB0aGUgZmxhc2ggaXMgcmVwbGljYXRlZCB0aHJvdWdoIHRoZQpyZWdpb24uIFRodXMsIHRoaXMgaXMgY29uc2lzdGVudCB3aXRoIGEgZmxhc2ggYmFzZSBhZGRyZXNzIDB4ZmZmODAwMDAuCgpUaGUgcGxhY2VtZW50IGF0IHRoZSBlbmQgaXMgdG8gYmUgY29uc2lzdGVudCB3aXRoIHJlc2V0IGJlaGF2aW9yLAp3aGVyZSB0aGUgcHJvY2Vzc29yIGl0c2VsZiBpbml0aWFsbHkgdXNlcyB0aGlzIGJ1cyB0byBsb2FkIHRoZSBicmFuY2gKdmVjdG9yIGFuZCBzdGFydCBydW5uaW5nLgoKT24tQ2hpcCBNZW1vcnkKLS0tLS0tLS0tLS0tLS0KCjB4ZTAwMTAwMDAtIDB4ZTAwMTNmZmYgICBDRkdfT0NNX0JBU0UKVGhlIDQ0MEVQeCBpbmNsdWRlcyBhIDE2SyBvbi1jaGlwIG1lbW9yeSB0aGF0IGNhbiBiZSBwbGFjZWQgaG93ZXZlcgpzb2Z0d2FyZSBjaG9vc2VzLgoKSW50ZXJuYWwgUGVyaXBoZXJhbHMKLS0tLS0tLS0tLS0tLS0tLS0tLS0KCjB4ZWY2MDAzMDAgLSAweGVmNjAwOGZmCgpUaGVzZSBhcmUgc2NhdHRlcmVkIHZhcmlvdXMgcGVyaXBoZXJhbHMgaW50ZXJuYWwgdG8gdGhlIFBQQzQ0MEVQWApjaGlwLgoKQ2hpcC1TZWxlY3QgMjogRmxhc2ggTWVtb3J5Ci0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKTm90IHVzZWQKCkNoaXAtU2VsZWN0IDM6IENBTiBJbnRlcmZhY2UKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoweGM4MDAwMDA6IDIgSW50ZWwgODI1MjcgQ0FOLUNvbnRyb2xsZXIKCgpDaGlwLVNlbGVjdCA0OiBJTUMtYnVzIHN0YW5kYXJkCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCjB4Y2MwMDAwMDogTmV0c3RhbCBzcGVjaWZpYyBJTy1CdXMKCgpDaGlwLVNlbGVjdCA1OiBJTUMtYnVzIGZhc3QgKGluYWN0aXZlKQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKMHhjZTAwMDAwOiBOZXRzdGFsIHNwZWNpZmljIElPLUJ1cyAoZmFzdCwgYnV0IG5vdCB5ZXQgdXNlZCkKCgpNZW1vcnkgQmFuayAxIC0tIEREUjIKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKMHgwMDAwMDAwMCAtIDB4ZmZmZmZmZiAgICMgRGVmYXVsdCAyNTYgTUIKClBDSSA/PwoKVVNCID8/Ck9ubHkgVVNCX1NUT1JBR0UgaXMgZW5hYmxlZCB0byBsb2FkIHZ4V29ya3MKZnJvbSBhIG1lbW9yeSBzdGljay4KClN5c3RlbS1MRURzID8/PyAoQW5hbG9nIHp1IEhDVTQgPz8/KQoKU3RhcnR1cCBzZXF1ZW5jZQotLS0tLS0tLS0tLS0tLS0tCgooY3B1L3BwYzR4eC9yZXNldHZlYy5TKQpkZXBlbmRpbmcgb24gY29uZmlncyBvcHRpb24KY2FsbCBfc3RhcnRfNDQwIF9zdGFydF9wY2kgb2RlciBfc3RhcnQKCihjcHUvcHBjNHh4L3N0YXJ0LlMpCgpfc3RhcnRfNDQwOgoJaW5pdGlhbGl6ZSByZWdpc3RlciBsaWtlCglDQ1IwCglkZWJ1ZwoJc2V0dXAgaW50ZXJydXB0IHZlY3RvcnMKCWNvbmZpZ3VyZSBjYWNoZSByZWdpb25zCgljbGVhciBhbmQgc2V0dXAgVExCCgllbmFibGUgaW50ZXJuYWwgUkFNCglqdW1wIHN0YXJ0X3JhbQoJd2hpY2ggaW4gdHVybiB3aWxsIGp1bXAgdG8gc3RhcnQKX3N0YXJ0OgoJQ2xlYXIgYW5kIHNldCB1cCBzb21lIHJlZ2lzdGVycy4KCURlYnVnIHNldHVwCglTZXR1cCB0aGUgaW50ZXJuYWwgU1JBTQoJU2V0dXAgdGhlIHN0YWNrIGluIGludGVybmFsIFNSQU0KICAgIHNldHVwIHN0YWNrIHBvaW50ZXIgKHIxKQogICAgc2V0dXAgR09UCgljYWxsIGNwdV9pbml0X2YJLyogcnVuIGxvdy1sZXZlbCBDUFUgaW5pdCBjb2RlCSAgIChmcm9tIEZsYXNoKSAqLwoKICAgIGNhbGwgY3B1X2luaXRfZgogICAgYm9hcmRfaW5pdF9mOiAobGliX3BwY1xib2FyZC5jKQoJaW5pdF9zZXF1ZW5jZSBkZWZpbmVzIGEgbGlzdCBvZiBmdW5jdGlvbiB0byBiZSBjYWxsZWQKCSAgICBib2FyZF9lYXJseV9pbml0X2Y6IChib2FyZC9uZXRzdGFsL2hjdTUvaGN1NS5jKQoJCVdlIGFyZSB1c2luZyBCb290c3RyYXAtT3B0aW9uIEEKCQlpZiBDUFIwX0lDRkdfUkxJX01BU0sgPT0gMCB0aGVuIHNldCBzb21lIHJlZ2lzdGVycyBhbmQgcmVib290CgkJU2V0dXAgdGhlIEdQSU8gcGlucwoJCVNldHVwIHRoZSBpbnRlcnJ1cHQgY29udHJvbGxlciBwb2xhcml0aWVzLCB0cmlnZ2VycywgZXRjLgoJCUV0aGVybmV0LCBQQ0ksIFVTQiBlbmFibGUKCQlzZXR1cCBCT09UIEZMQVNIIChDaGlwIHRpbWluZykKCSAgICBpbml0X2JhdWRyYXRlLAoJICAgIHNlcmlhbF9pbml0CgkgICAgY2hlY2tjcHUKCSAgICBtaXNjX2luaXRfZiAjaWZkZWYKCSAgICBpbml0X2Z1bmNfaTJjICNpZmRlZgoJICAgIHBvc3RfaW5pdF9mICAjaWZkZWYKCSAgICBpbml0X2Z1bmNfcmFtIC0+IGNhbGxzIGluaXRfZHJhbSBib2FyZC9uZXRzdGFsL2hjdTUvc2RyYW0uYwoJCShFWUUgZnVuY3Rpb24gcmVtb3ZlZCEhKQoJICAgIHRlc3RfZHJhbSBjYWxsCgoJICogUmVzZXJ2ZSBtZW1vcnkgYXQgZW5kIG9mIFJBTSBmb3IgKHRvcCBkb3duIGluIHRoYXQgb3JkZXIpOgoJICogIC0ga2VybmVsIGxvZyBidWZmZXIKCSAqICAtIHByb3RlY3RlZCBSQU0KCSAqICAtIExDRCBmcmFtZWJ1ZmZlcgoJICogIC0gbW9uaXRvciBjb2RlCgkgKiAgLSBib2FyZCBpbmZvIHN0cnVjdAoJU2F2ZSBsb2NhbCB2YXJpYWJsZXMgdG8gYm9hcmQgaW5mbyBzdHJ1Y3QKCWNhbGwgcmVsb2NhdGVfY29kZSgpIGRvZXMgbm90IHJldHVybgoJcmVsb2NhdGVfY29kZTogKGNwdS9wcGM0eHgvc3RhcnQuUykKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpGcm9tIG5vdyBvbiBvdXIgY29weSBpcyBpbiBSQU0gYW5kIHdlIHdpbGwgcnVuIGZyb20gdGhlcmUsCglzdGFydGluZyB3aXRoIGJvYXJkX2luaXRfcgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICBib2FyZF9pbml0X3I6IChsaWJfcHBjXGJvYXJkLmMpCglzZXR1cCBiZCBmdW5jdGlvbiBwb2ludGVycwoJdHJhcF9pbml0CglmbGFzaF9pbml0OiAoYm9hcmQvbmV0c3RhbC9oY3U1L2ZsYXNoLmMpCgkJLyogc2V0dXAgZm9yIHUtYm9vdCBlcmFzZSwgdXBkYXRlICovCglzZXR1cCBiZCBmbGFzaCBpbmZvCgljcHVfaW5pdF9yOiAoY3B1L3BwYzR4eC9jcHVfaW5pdC5jKQoJICAgIHBlcmlwaGVyYWwgY2hpcCBzZWxlY3QgaW4gdXNpbmcgZGVmaW5lcyBsaWtlCgkgICAgQ0ZHX0VCQ19QQjBBLCBDRkdfRUJDX1BCMEMgZnJvbSBoY3U1LmgKCW1lbV9tYWxsb2NfaW5pdAoJbWFsbG9jX2Jpbl9yZWxvYwoJc3BpX2luaXQgKHIgb3IgZik/Pz8gKENGR19FTlZfSVNfSU5fRUVQUk9NKQoJZW52X3JlbG9jYXRlZAoJbWlzY19pbml0X3IoYmQpOiAoYm9hcmQvbmV0c3RhbC9oY3U1LmMpCgkgICAgZXRoYWRkciBtaXQgc2VyaWFsIG51bWJlciBlcmfkbnplbgogICAgVGhlbiB3ZSB3aWxsIHNvbWVob3cgZ28gaW50byB0aGUgY29tbWFuZCBsb29wCgpNb3N0IG9mIHRoZSBIVyBzcGVjaWZpYyBjb2RlIGZvciB0aGUgSENVNSBtYXkgYmUgZm91bmQgaW4KaW5jbHVkZS9jb25maWdzL2hjdTUuaApib2FyZC9uZXRzdGFsL2hjdTUvKgpjcHUvcHBjNHh4LyoKbGliX3BwYy8qCmluY2x1ZGUvcHBjNDQwLmgKCkRyaXZlcnMgZm9yIHNlcmlhbCBldGMgYXJlIGZvdW5kIHVuZGVyIGRyaXZlcnMvCgpEb24ndCBhc2sgcXVlc3Rpb24gaWYgeW91IGRpZCBub3QgbG9vayBhdCB0aGUgUkVBRE1FICEhCk1vc3QgQ0ZHXyogYW5kIENPTkZJR18qIHN3aXRjaGVzIGFyZSBtZW50aW9uZWQvZXhwbGFpbmVkIHRoZXJlLgo=