VGhpcyBmaWxlIGNvbnRhaW5zIGEgbGlzdCBvZiBwZW9wbGUgd2hvIGFyZSByZXNwb25zaWJsZSBmb3IgY2VydGFpbiBwYXJ0cyBvZgp0aGUgSEFQcm94eSBwcm9qZWN0IGFuZCB3aG8gaGF2ZSBhdXRob3JpdHkgb24gdGhlbS4gVGhpcyBtZWFucyB0aGF0IHRoZXNlCnBlb3BsZSBoYXZlIHRvIGJlIGNvbnN1bHRlZCBiZWZvcmUgZG9pbmcgYW55IGNoYW5nZSBpbiB0aGUgcGFydHMgdGhleSBtYWludGFpbiwKaW5jbHVkaW5nIHdoZW4gZml4aW5nIGJ1Z3MuIFRoZXNlIHBlcnNvbnMgYXJlIGFsbG93ZWQgdG8gcmVqZWN0IGFueSBjaGFuZ2Ugb24KdGhlIHBhcnRzIHRoZXkgbWFpbnRhaW4sIGFuZCBpbiBwYXJhbGxlbCB0aGV5IHRyeSB0aGVpciBiZXN0IHRvIGVuc3VyZSB0aGVzZQpwYXJ0cyB3b3JrIHdlbGwuIFNpbWlsYXJseSwgYW55IGNoYW5nZSB0byB0aGVzZSBwYXJ0cyBub3QgYmVpbmcgdmFsaWRhdGVkIGJ5CnRoZW0gd2lsbCBiZSByZWplY3RlZC4KClRoZSBiZXN0IHdheSB0byBkZWFsIHdpdGggc3VjaCBzdWJzeXN0ZW1zIHdoZW4gc2VuZGluZyBwYXRjaGVzIGlzIHRvIHNlbmQgdGhlCnBhdGNoZXMgdG8gdGhlIG1haWxpbmcgbGlzdCBhbmQgdG8gQ0MgdGhlc2UgcGVvcGxlLiBXaGVuIG5vIG1haW50YWluZXIgaXMKbGlzdGVkIGZvciBhIHN1YnN5c3RlbSwgeW91IGNhbiBzaW1wbHkgc2VuZCB5b3VyIGNoYW5nZXMgdGhlIHVzdWFsIHdheSwgYW5kIGl0CmlzIGFsc28gYSBzaWduIHRoYXQgaWYgeW91IHdhbnQgdG8gc3RyZW5ndGhlbiB5b3VyIHNraWxscyBvbiBjZXJ0YWluIHBhcnRzIHlvdQpjYW4gYmVjb21lIHlvdXJzZWxmIGEgbWFpbnRhaW5lciBvZiB0aGUgcGFydHMgeW91IGNhcmUgYSBsb3QgYWJvdXQuCgpQbGVhc2UgZG8gbm90IGFzayB0aGVtIHRvIHRyb3VibGVzaG9vdCB5b3VyIGJ1Z3MsIGl0J3Mgbm90IHRoZWlyIGpvYiBldmVudGhvdWdoCnRoZXkgbWF5IG9jY2FzaW9uYWxseSBoZWxwIGFzIHRpbWUgcGVybWl0cy4KCkxpc3Qgb2YgbWFpbnRhaW5lcnMKLS0tLS0tLS0tLS0tLS0tLS0tLQoKTHVhCk1haW50YWluZXI6IFRoaWVycnkgRm91cm5pZXIgPHRmb3VybmllckBhcnBhbGVydC5vcmc+CkZpbGVzOiBzcmMvaGx1YS5jLCBpbmNsdWRlLyovaGx1YS5oCgpNYXBzIGFuZCBwYXR0ZXJuIG1hdGNoaW5nCk1haW50YWluZXI6IFRoaWVycnkgRm91cm5pZXIgPHRmb3VybmllckBhcnBhbGVydC5vcmc+CkZpbGVzOiBzcmMvbWFwcy5jLCBzcmMvcGF0dGVybi5jLCBpbmNsdWRlLyovbWFwcy5oLCBpbmNsdWRlLyovcGF0dGVybi5oCgpETlMKTWFpbnRhaW5lcjogQmFwdGlzdGUgQXNzbWFubiA8YmVkaXM5QGdtYWlsLmNvbT4KRmlsZXM6IHNyYy9kbnMuYywgaW5jbHVkZS8qL2Rucy5oCgpTU0wKTWFpbnRhaW5lcjogRW1lcmljIEJydW4gPGVicnVuQGhhcHJveHkuY29tPgpGaWxlczogc3JjL3NzbF9zb2NrLmMsIGluY2x1ZGUvKi9zc2xfc29jay5oCgpQZWVycwpNYWludGFpbmVyOiBFbWVyaWMgQnJ1biA8ZWJydW5AaGFwcm94eS5jb20+CkZpbGVzOiBzcmMvcGVlcnMuYywgaW5jbHVkZS8qL3BlZXJzLmgKCkRvYyB0byBIVE1MIGNvbnZlcnRlciAoZGNvbnYpCk1haW50YWluZXI6IEN5cmlsIEJvbnTpIDxjeXJpbC5ib250ZUBmcmVlLmZyPgpGaWxlczogZG9jLyoudHh0Ck5vdGU6IGFzayBDeXJpbCBiZWZvcmUgY2hhbmdpbmcgYW55IGRvYydzIGZvcm1hdCBvciBzdHJ1Y3R1cmUuCgpIZWFsdGggY2hlY2tzCkZpbGVzOiBzcmMvY2hlY2tzLmMsIGluY2x1ZGUvKi9jaGVja3MuaApNYWludGFpbmVyczogU2ltb24gSG9ybWFuIGZvciBleHRlcm5hbC1jaGVjaywgQmFwdGlzdGUgQXNzbWFubiBmb3IgdGNwLWNoZWNrCk5vdGU6IGhlYWx0aCBjaGVja3MgYXJlIGZyYWdpbGUgYW5kIGhhdmUgYmVlbiBicm9rZW4gbWFueSB0aW1lcywgc28gcGxlYXNlCiAgICAgIGNvbnN1bHQgdGhlIHJlbGV2YW50IG1haW50YWluZXJzIGlmIHlvdSB3YW50IHRvIGNoYW5nZSB0aGVzZSBzcGVjaWZpYwogICAgICBwYXJ0cy4KCk1haWxlcnMKTWFpbnRhaW5lcjogU2ltb24gSG9ybWFuIDxob3Jtc0B2ZXJnZS5uZXQuYXU+CkZpbGVzOiBzcmMvbWFpbGVycy5jLCBpbmNsdWRlLyovbWFpbGVycy5oCgpEZXZpY2VBdGxhcyBkZXZpY2UgaWRlbnRpZmljYXRpb24KTWFpbnRhaW5lcjogRGF2aWQgQ2FybGllciA8ZGNhcmxpZXJAYWZpbGlhcy5pbmZvPgpGaWxlczogc3JjL2RhLmMsIGluY2x1ZGUvKi9kYS5oCgo1MURlZ3JlZXMgZGV2aWNlIGlkZW50aWZpY2F0aW9uCk1haW50YWluZXI6IEJlbiBTaGlsbGl0byA8YmVuQDUxZGVncmVlcy5jb20+CkZpbGVzOiBzcmMvNTFkLmMK