dHJlZSBkNWQyOGQ5M2YxYWVjNTYzYjg0MDcyMWIzNGFlOTIwZjg3Y2ZiM2I1CnBhcmVudCA2YmRmOTM2N2ZiZjJlYTUxZmNlNjkzZDgwMTNjYjQ2ZGU4YWYyZGYwCmF1dGhvciBGculk6XJpYyBM6WNhaWxsZSA8ZmxlY2FpbGxlQGhhcHJveHkuY29tPiAxNjYwMjMxNDc4ICswMjAwCmNvbW1pdHRlciBXaWxseSBUYXJyZWF1IDx3QDF3dC5ldT4gMTY2MDIzNTYxNiArMDIwMAplbmNvZGluZyBsYXRpbjEKCkJVRy9NRURJVU06IHF1aWM6IFBvc3NpYmxlIHVzZSBvZiB1bmluaXRpYWxpemVkIDxvZGNpZD4gdmFyaWFibGUgaW4gcWNfbHN0bnJfcGFyYW1zX2luaXQoKQoKV2hlbiByZWNlaXZpbmcgYSB0b2tlbiBpbnRvIGEgY2xpZW50IEluaXRpYWwgcGFja2V0IHdpdGhvdXQgYSBjbHVzdGVyIHNlY3JldCBkZWZpbmVkCmJ5IGNvbmZpZ3VyYXRpb24sIHRoZSA8b2RjaWQ+IHZhcmlhYmxlIHVzZWQgdG8gcGFyc2UgdGhlIE9EQ0lEIGZyb20gdGhlIHRva2VuCmNvdWxkIGJlIHVzZWQgd2l0aG91dCBoYXZpbmcgYmVlbiBpbml0aWFsaXplZC4gU3VjaCBhIHBhY2tldCBtdXN0IGJlIGRyb3BwZWQuIFNvCnRoZSBzdWZmaWNpZW50IHBhcnQgb2YgdGhpcyBwYXRjaCBpcyB0aGlzIGNoZWNrOgoKKyAgICAgICAgICAgICB9CisgICAgICAgICAgICAgZWxzZSBpZiAoIWdsb2JhbC5jbHVzdGVyX3NlY3JldCAmJiB0b2tlbl9sZW4pIHsKKyAgICAgICAgICAgICAgICAgICAgLyogSW1wb3NzaWJsZSBjYXNlOiBhIHRva2VuIHdhcyByZWNlaXZlZCB3aXRob3V0IGNvbmZpZ3VyZWQKKyAgICAgICAgICAgICAgICAgICAgKiBjbHVzdGVyIHNlY3JldC4KKyAgICAgICAgICAgICAgICAgICAgKi8KKyAgICAgICAgICAgICAgICAgICAgVFJBQ0VfUFJPVE8oIlBhY2tldCBkcm9wcGVkIiwgUVVJQ19FVl9DT05OX0xQS1QsCisgICAgICAgICAgICAgICAgICAgIE5VTEwsIE5VTEwsIE5VTEwsIHF2KTsKKyAgICAgICAgICAgICAgICAgICAgZ290byBkcm9wOwogICAgICAgICAgICAgIH0KClRha2UgdGhlIG9wcG9ydHVuaXR5IG9mIHRoaXMgcGF0Y2ggdG8gcmV3b3JrIGFuZCBtYWtlIGl0IG1vcmUgcmVhZGFibGUgdGhpcyBwYXJ0Cm9mIGNvZGUgd2hlcmUgc3VjaCBhIHBhY2tldCBtdXN0IGJlIGRyb3BwZWQgcmVtb3ZpbmcgdGhlIDxjaGVja190b2tlbj4gdmFyaWFibGUuCldoZW4gYW4gT0RDSUQgaXMgcGFyc2VkIGZyb20gYSB0b2tlbiwgbmV3IDx0b2tlbl9vZGNpZD4gbmV3IHBvaW50ZXIgdmFyaWFibGUKaXMgc2V0IHRvIHRoZSBhZGRyZXNzIG9mIHRoZSBwYXJzZWQgT0RDSUQuIFRoaXMgd2F5LCBpcyBub3Qgc2V0IGJ1dCB1c2VkIGl0IHdpbGwKbWFrZSBjcmFzaCBoYXByb3h5LiBUaGlzIHdhcyBub3QgYWx3YXlzIHRoZSBjYXNlIHdpdGggYW4gdW5pbml0aWFsaXplZCBsb2NhbAp2YXJpYWJsZS4KCkFkYXB0IHRoZSBBUEkgdG8gdXNlZCBzdWNoIGEgcG9pbnRlciB2YXJpYWJsZTogPHRva2VuPiBib29sZWFuIHZhcmlhYmxlIGlzIHJlbW92ZWQKZnJvbSBxY19sc3Rucl9wYXJhbXNfaW5pdCgpIHByb3RvdHlwZS4KClRoaXMgbXVzdCBiZSBiYWNrcG9ydGVkIHRvIDIuNi4K