VGhpcyBmaWxlIGNvbnRhaW5zIGEgbGlzdCBvZiBwZW9wbGUgd2hvIGFyZSByZXNwb25zaWJsZSBmb3IgY2VydGFpbiBwYXJ0cyBvZgp0aGUgSEFQcm94eSBwcm9qZWN0IGFuZCB3aG8gaGF2ZSBhdXRob3JpdHkgb24gdGhlbS4gVGhpcyBtZWFucyB0aGF0IHRoZXNlCnBlb3BsZSBoYXZlIHRvIGJlIGNvbnN1bHRlZCBiZWZvcmUgZG9pbmcgYW55IGNoYW5nZSBpbiB0aGUgcGFydHMgdGhleSBtYWludGFpbiwKaW5jbHVkaW5nIHdoZW4gZml4aW5nIGJ1Z3MuIFRoZXNlIHBlcnNvbnMgYXJlIGFsbG93ZWQgdG8gcmVqZWN0IGFueSBjaGFuZ2Ugb24KdGhlIHBhcnRzIHRoZXkgbWFpbnRhaW4sIGFuZCBpbiBwYXJhbGxlbCB0aGV5IHRyeSB0aGVpciBiZXN0IHRvIGVuc3VyZSB0aGVzZQpwYXJ0cyB3b3JrIHdlbGwuIFNpbWlsYXJseSwgYW55IGNoYW5nZSB0byB0aGVzZSBwYXJ0cyBub3QgYmVpbmcgdmFsaWRhdGVkIGJ5CnRoZW0gd2lsbCBiZSByZWplY3RlZC4KClRoZSBiZXN0IHdheSB0byBkZWFsIHdpdGggc3VjaCBzdWJzeXN0ZW1zIHdoZW4gc2VuZGluZyBwYXRjaGVzIGlzIHRvIHNlbmQgdGhlCnBhdGNoZXMgdG8gdGhlIG1haWxpbmcgbGlzdCBhbmQgdG8gQ0MgdGhlc2UgcGVvcGxlLiBXaGVuIG5vIG1haW50YWluZXIgaXMKbGlzdGVkIGZvciBhIHN1YnN5c3RlbSwgeW91IGNhbiBzaW1wbHkgc2VuZCB5b3VyIGNoYW5nZXMgdGhlIHVzdWFsIHdheSwgYW5kIGl0CmlzIGFsc28gYSBzaWduIHRoYXQgaWYgeW91IHdhbnQgdG8gc3RyZW5ndGhlbiB5b3VyIHNraWxscyBvbiBjZXJ0YWluIHBhcnRzIHlvdQpjYW4gYmVjb21lIHlvdXJzZWxmIGEgbWFpbnRhaW5lciBvZiB0aGUgcGFydHMgeW91IGNhcmUgYSBsb3QgYWJvdXQuCgpQbGVhc2UgZG8gbm90IGFzayB0aGVtIHRvIHRyb3VibGVzaG9vdCB5b3VyIGJ1Z3MsIGl0J3Mgbm90IHRoZWlyIGpvYiBldmVuIHRob3VnaAp0aGV5IG1heSBvY2Nhc2lvbmFsbHkgaGVscCBhcyB0aW1lIHBlcm1pdHMuCgpMaXN0IG9mIG1haW50YWluZXJzCi0tLS0tLS0tLS0tLS0tLS0tLS0KCjUxRGVncmVlcyBkZXZpY2UgaWRlbnRpZmljYXRpb24KTWFpbnRhaW5lcjogQmVuIFNoaWxsaXRvIDxiZW5ANTFkZWdyZWVzLmNvbT4KRmlsZXM6IGFkZG9ucy81MWRlZ3JlZXMsIGRvYy81MURlZ3JlZXMtZGV2aWNlLWRldGVjdGlvbi50eHQKCkNhY2hlCk1haW50YWluZXI6IFdpbGxpYW0gTGFsbGVtYW5kIDx3bGFsbGVtYW5kQGhhcHJveHkuY29tPgpGaWxlczogc3JjL2NhY2hlLmMsIGluY2x1ZGUvaGFwcm94eS9jYWNoZSouaAoKRGV2aWNlQXRsYXMgZGV2aWNlIGlkZW50aWZpY2F0aW9uCk1haW50YWluZXI6IERhdmlkIENhcmxpZXIgPGRjYXJsaWVyQGRldmljZWF0bGFzLmNvbT4KRmlsZXM6IGFkZG9ucy9kZXZpY2VhdGxhcywgZG9jL0RldmljZUF0bGFzLWRldmljZS1kZXRlY3Rpb24udHh0CgpETlMgYW5kIFJlc29sdmVycwpNYWludGFpbmVyOiBFbWVyaWMgQnJ1biA8ZWJydW5AaGFwcm94eS5jb20+Ck1haW50YWluZXI6IEJhcHRpc3RlIEFzc21hbm4gPGJlZGlzOUBnbWFpbC5jb20+CkZpbGVzOiBzcmMvZG5zLmMsIGluY2x1ZGUvaGFwcm94eS9kbnMqLmgKRmlsZXM6IHNyYy9yZXNvbHZlcnMuYywgaW5jbHVkZS9oYXByb3h5L3Jlc29sdmVycyouaAoKRG9jIHRvIEhUTUwgY29udmVydGVyIChkY29udikKTWFpbnRhaW5lcjogQ3lyaWwgQm9udOkgPGN5cmlsLmJvbnRlQGZyZWUuZnI+CkZpbGVzOiBkb2MvKi50eHQKTm90ZTogYXNrIEN5cmlsIGJlZm9yZSBjaGFuZ2luZyBhbnkgZG9jJ3MgZm9ybWF0IG9yIHN0cnVjdHVyZS4KCkVCVHJlZQpNYWludGFpbmVyOiBXaWxseSBUYXJyZWF1IDx3QDF3dC5ldT4KRmlsZXM6IHNyYy9lYiouYywgaW5jbHVkZS9pbXBvcnQvZWIqLmgKCkZDR0k6Ck1haW50YWluZXI6IENocmlzdG9waGVyIEZhdWxldCA8Y2ZhdWxldEBoYXByb3h5LmNvbT4KRmlsZXM6IHNyYy9tdXhfZmNnaS5jLCBzcmMvZmNnaSouYywgaW5jbHVkZS9oYXByb3h5L2ZjZ2kqLmgKCkZpbHRlcnM6Ck1haW50YWluZXI6IENocmlzdG9waGVyIEZhdWxldCA8Y2ZhdWxldEBoYXByb3h5LmNvbT4KRmlsZXM6IHNyYy9maWx0ZXJzLmMsIHNyYy9mbHRfKi5jLCBpbmNsdWRlL2hhcHJveHkvZmlsdGVycyouaApGaWxlczogZG9jL2ludGVybmFscy9maWx0ZXJzLnR4dAoKSDEgYW5kIEhUWApNYWludGFpbmVyOiBDaHJpc3RvcGhlciBGYXVsZXQgPGNmYXVsZXRAaGFwcm94eS5jb20+CkZpbGVzOiBzcmMvbXV4X2gxLmMgc3JjL2gxX2h0eC5jLCBpbmNsdWRlL2hhcHJveHkvaDFfaHR4LmgKCkgyIGFuZCBIUEFDSwpNYWludGFpbmVyOiBXaWxseSBUYXJyZWF1IDx3QDF3dC5ldT4KRmlsZXM6IHNyYy9tdXhfaDIuYyBzcmMvaDIuYyBzcmMvaHBhY2sqLmMKRmlsZXM6IGluY2x1ZGUvaGFwcm94eS9oMi5oLCBpbmNsdWRlL2hhcHJveHkvaHBhY2sqLmgKCkhlYWx0aCBjaGVja3MKTWFpbnRhaW5lcjogQ2hyaXN0b3BoZXIgRmF1bGV0IDxjZmF1bGV0QGhhcHJveHkuY29tPgpGaWxlczogc3JjL2NoZWNrcy5jLCBpbmNsdWRlL2hhcHJveHkvY2hlY2sqLmgKRmlsZXM6IHNyYy90Y3BjaGVjay5jLCBpbmNsdWRlL2hhcHJveHkvdGNwY2hlY2sqLmgKTm90ZTogaGVhbHRoIGNoZWNrcyBhcmUgZnJhZ2lsZSBhbmQgaGF2ZSBiZWVuIGJyb2tlbiBtYW55IHRpbWVzLCBzbyBwbGVhc2UKICAgICAgY29uc3VsdCB0aGUgcmVsZXZhbnQgbWFpbnRhaW5lcnMgaWYgeW91IHdhbnQgdG8gY2hhbmdlIHRoZXNlIHNwZWNpZmljCiAgICAgIHBhcnRzLgoKSFRUUApNYWludGFpbmVyOiBXaWxseSBUYXJyZWF1IDx3QDF3dC5ldT4KTWFpbnRhaW5lcjogQ2hyaXN0b3BoZXIgRmF1bGV0IDxjZmF1bGV0QGhhcHJveHkuY29tPgpGaWxlczogc3JjL2h0dHAqLmgsIGluY2x1ZGUvaGFwcm94eS9odHRwKi5oCgpIVFgKTWFpbnRhaW5lcjogQ2hyaXN0b3BoZXIgRmF1bGV0IDxjZmF1bGV0QGhhcHJveHkuY29tPgpGaWxlczogc3JjL2h0eC5jLCBpbmNsdWRlL2hhcHJveHkvaHR4Ki5jLCBkb2MvaW50ZXJuYWxzL2h0eC1hcGkudHh0CgpMdWEKTWFpbnRhaW5lcjogVGhpZXJyeSBGb3VybmllciA8dGZvdXJuaWVyQGFycGFsZXJ0Lm9yZz4KRmlsZXM6IHNyYy9obHVhLmMsIGluY2x1ZGUvaGFwcm94eS9obHVhKi5oCgpNYWlsZXJzCk1haW50YWluZXI6IFNpbW9uIEhvcm1hbiA8aG9ybXNAdmVyZ2UubmV0LmF1PgpGaWxlczogc3JjL21haWxlcnMuYywgaW5jbHVkZS9oYXByb3h5L21haWxlcnMqLmgKCk1hcHMgYW5kIHBhdHRlcm4gbWF0Y2hpbmcKTWFpbnRhaW5lcjogVGhpZXJyeSBGb3VybmllciA8dGZvdXJuaWVyQGFycGFsZXJ0Lm9yZz4KRmlsZXM6IHNyYy9tYXAuYywgaW5jbHVkZS9oYXByb3h5L21hcCouaApGaWxlczogc3JjL3BhdHRlcm4uYywgaW5jbHVkZS9oYXByb3h5L3BhdHRlcm4qLmgKCk1hc3Rlci13b3JrZXIKTWFpbnRhaW5lcjogV2lsbGlhbSBMYWxsZW1hbmQgPHdsYWxsZW1hbmRAaGFwcm94eS5jb20+Ck5vdGU6IFBsZWFzZSBDQyBXaWxsaWFtIHdoZW4gdG91Y2hpbmcgc3JjL2hhcHJveHkuYyBhbmQgYWRtaW4vc3lzdGVtZAoKTXVsdGktdGhyZWFkaW5nCk1haW50YWluZXI6IENocmlzdG9waGVyIEZhdWxldCA8Y2ZhdWxldEBoYXByb3h5LmNvbT4KTWFpbnRhaW5lcjogRW1lcmljIEJydW4gPGVicnVuQGhhcHJveHkuY29tPgpGaWxlczogc3JjL3RocmVhZC5jLCBpbmNsdWRlL2hhcHJveHkvdGhyZWFkKi5oCk5vdGU6IGV2ZXJ5IGNoYW5nZSBhcm91bmQgdGhlIGxvY2tpbmcgb3Igc3luY2hyb25pemF0aW9uIHBvaW50IHdpbGwgcmVxdWlyZQogICAgICBhcHByb3ZhbCBmcm9tIG9uZSBvZiB0aGVzZSBtYWludGFpbmVycy4gUHJvYmxlbXMgd2hpY2ggb25seSBhcHBlYXIgd2hlbgogICAgICBuYnRocmVhZCBpcyBncmVhdGVyIHRoYW4gMSBhbmQgd2hpY2ggZGlzYXBwZWFyIG90aGVyd2lzZSBhcmUgYWxzbwogICAgICByZWxldmFudC4KCk11bHRpLXRocmVhZGVkIHRhc2sgc2NoZWR1bGVyCk1haW50YWluZXI6IFdpbGx5IFRhcnJlYXUgPHdAMXd0LmV1PgpNYWludGFpbmVyOiBPbGl2aWVyIEhvdWNoYXJkIDxjb2duZXRAY2kwLm9yZz4KRmlsZXM6IGluY2x1ZGUvaGFwcm94eS90YXNrKi5oIHNyYy90YXNrLmMKClBlZXJzCk1haW50YWluZXI6IEVtZXJpYyBCcnVuIDxlYnJ1bkBoYXByb3h5LmNvbT4KRnLpZOlyaWMgTOljYWlsbGUgPGZsZWNhaWxsZUBoYXByb3h5LmNvbT4KRmlsZXM6IHNyYy9wZWVycy5jLCBpbmNsdWRlL2hhcHJveHkvcGVlcnMqLmgKClByb21ldGhldXMgRXhwb3J0ZXIKTWFpbnRhaW5lcjogQ2hyaXN0b3BoZXIgRmF1bGV0IDxjZmF1bGV0QGhhcHJveHkuY29tPgpNYWludGFpbmVyOiBXaWxsaWFtIERhdWNoeSA8d2RhdWNoeUBnbWFpbC5jb20+CkZpbGVzOiBhZGRvbnMvcHJvbWV4Ck5vdGU6IFdpbGxpYW0gaXMgdGhlIHJlZmVyZW50IHJlZ2FyZGluZyBQcm9tZXRoZXVzLiBIZSBzaG91bGQgYmUgY29uc3VsdGVkIGZvcgogICAgICBhbGwgYWRkaXRpb25zIGFuZCBtb2RpZmljYXRpb25zIG9mIGZlYXR1cmVzLiBDaHJpc3RvcGhlciBpcyB0aGUgcmVmZXJlbnQKICAgICAgZm9yIHRoZSBjb2RlIGl0c2VsZi4gSGUgc2hvdWxkIGJlIGNvbnN1bHRlZCBmb3IgcXVlc3Rpb25zIHJlZ2FyZGluZyB0aGUKICAgICAgZXhwb3J0ZXIgaW50ZWdyYXRpb24gaW50byBIQVByb3h5LCBhcyB3ZWxsIGFzIGZvciB0aGUgYnVncy4KClFVSUMgYW5kIEhUVFAvMwpNYWludGFpbmVyOiBGculk6XJpYyBM6WNhaWxsZSA8ZmxlY2FpbGxlQGhhcHJveHkuY29tPgpNYWludGFpbmVyOiBBbWF1cnkgRGVub3llbGxlIDxhZGVub3llbGxlQGhhcHJveHkuY29tPgpGaWxlczogc3JjL3F1aWMqLmMsIHNyYy9jZmdwYXJzZS1xdWljLmMsIGluY2x1ZGUvaGFwcm94eS9xdWljKi5oCkZpbGVzOiBzcmMvbXV4X3F1aWMuYywgaW5jbHVkZS9oYXByb3h5L211eF9xdWljLmgsCkZpbGVzOiBzcmMvcHJvdG9fcXVpYy5jLCBpbmNsdWRlL2hhcHJveHkvcHJvdG9fcXVpYy5oCkZpbGVzOiBzcmMveHBydF9xdWljLmMsIGluY2x1ZGUvaGFwcm94eS94cHJ0X3F1aWMuaApGaWxlczogc3JjL2gzKi5jLCBpbmNsdWRlL2hhcHJveHkvaDMqLmgKClNjaWVudGlhTW9iaWxlIFdVUkZMIERldmljZSBEZXRlY3Rpb24KTWFpbnRhaW5lcjogUGF1bCBCb3JpbGUsIE1hc3NpbWlsaWFubyBCZWxsb21pIDx3dXJmbC1oYXByb3h5LXN1cHBvcnRAc2NpZW50aWFtb2JpbGUuY29tPgpGaWxlczogYWRkb25zL3d1cmZsLCBkb2MvV1VSRkwtZGV2aWNlLWRldGVjdGlvbi50eHQKClNQT0UKTWFpbnRhaW5lcjogQ2hyaXN0b3BoZXIgRmF1bGV0IDxjZmF1bGV0QGhhcHJveHkuY29tPgpGaWxlczogc3JjL2ZsdF9zcG9lLmMsIGluY2x1ZGUvaGFwcm94eS9zcG9lKi5oLCBkb2MvU1BPRS50eHQKClNTTApNYWludGFpbmVyOiBFbWVyaWMgQnJ1biA8ZWJydW5AaGFwcm94eS5jb20+Ck1haW50YWluZXI6IFdpbGxpYW0gTGFsbGVtYW5kIDx3bGFsbGVtYW5kQGhhcHJveHkuY29tPgpGaWxlczogc3JjL2NmZ3BhcnNlLXNzbC5jLCBzcmMvc3NsXyouYywgaW5jbHVkZS9oYXByb3h5L3NzbF8qLmgKClRocmVhZC1zYWZlIGxpc3RzCk1haW50YWluZXI6IE9saXZpZXIgSG91Y2hhcmQgPGNvZ25ldEBjaTAub3JnPgpGaWxlczogaW5jbHVkZS9oYXByb3h5L2xpc3QqLmgK