MjAwMC0wNi0zMCAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIE1ha2VmaWxlLmluIChjLWNvbW1vbi5vKTogRG9uJ3QgZGVwZW5kIG9uIGMtdHJlZS5oIG9yIGMtbGV4LmguCgkqIGMtY29tbW9uLmMgKHJpZHBvaW50ZXJzKTogRGVjbGFyZS4KCSogYy1jb21tb24uaCAoZW51bSByaWQpOiBEZWNsYXJlLgoJKE5PUklEKTogTGlrZXdpc2UuCgkocmlkcG9pbnRlcnMpOiBMaWtld2lzZS4KCSogYy1sZXguYyAocmlkcG9pbnRlcnMpOiBEb24ndCBkZWNsYXJlLgoJKGluaXRfbGV4KTogSW5pdGlhbGl6ZSByaWRwb2ludGVycy4KCSogYy1sZXguaCAoZW51bSByaWQpOiBEb24ndCBkZWNsYXJlLgoJKE5PUklEKTogTGlrZXdpc2UuCgkoUklEX0ZJUlNUX01PRElGSUVSKTogTGlrZXdpc2UuCgkocmlkcG9pbnRlcnMpOiBMaWtld2lzZS4KCjIwMDAtMDYtMzAgIEouIERhdmlkIEFuZ2xpbiAgPGRhdmVAaGlhdWx5MS5oaWEubnJjLmNhPgoKCSogcGEvc29tLmggKEFTTV9XRUFLRU5fTEFCRUwpOiBFeHBvcnQgd2VhayBkYXRhIHN5bWJvbHMgc28gdGhhdCB0aGV5CgloYXZlIGdsb2JhbCBzY29wZS4KCjIwMDAtMDYtMzAgIE1hcnRpbiB2b24gTG9ld2lzICA8bG9ld2lzQGluZm9ybWF0aWsuaHUtYmVybGluLmRlPgoKCSogaW52b2tlLnRleGkgKC1XcmV0dXJuLXR5cGUpOiBJbiBDKyssIGEgbWlzc2luZyByZXR1cm4gdHlwZSBpcwoJYWx3YXlzIGFuIGVycm9yLgoKMjAwMC0wNi0zMCAgQ2F0aGVyaW5lIE1vb3JlICA8Y2xtQGN5Z251cy5jb20+CgoJKiBjLWNvbW1vbi5jIChkZWNsX2F0dHJpYnV0ZXMpOiAgRGlmZmVyZW50aWF0ZSBiZXR3ZWVuCgl0eXBlcyBhbmQgdHlwZSBkZWNscyBmb3IgYWxpZ25tZW50LgoKMjAwMC0wNi0zMCAgTmF0aGFuIFNpZHdlbGwgIDxuYXRoYW5AY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGNwcC50ZXhpOiBEb2N1bWVudCAjcHJhZ21hIEdDQyBkZXBlbmRlbmN5CgkqIGNwcGZpbGVzLmMgKG9wZW5faW5jbHVkZV9maWxlKTogU2V0IGRhdGUgdG8gdW5rbm93bi4KCShfY3BwX2NvbXBhcmVfZmlsZV9kYXRlKTogTmV3IGZ1bmN0aW9uLgoJKHJlYWRfaW5jbHVkZV9maWxlKTogU2V0IGZpbGUgZGF0ZS4KCSogY3BwaGFzaC5oIChzdHJ1Y3QgaW5jbHVkZV9maWxlKTogQWRkIGRhdGUgbWVtYmVyLgoJKF9jcHBfY29tcGFyZV9maWxlX2RhdGUpOiBQcm90b3R5cGUuCgkqIGNwcGxpYi5jIChwYXJzZV9pbmNsdWRlKTogQWRkIHRyYWlsIHBhcmFtZXRlci4gQWRqdXN0LgoJKGRvX2luY2x1ZGUpOiBBZGp1c3QgcGFyc2VfaW5jbHVkZSBjYWxsLgoJKGRvX2ltcG9ydCk6IExpa2V3aXNlLgoJKGRvX2luY2x1ZGVfbmV4dCk6IExpa2V3aXNlLgoJKGdjY19wcmFnbWFzKTogQWRkIGRlcGVuZGVuY3kgcHJhZ21hLgoJKGRvX3ByYWdtYV9kZXBlbmRlbmN5KTogTmV3IHByYWdtYS4KCjIwMDAtMDYtMjkgIEphc29uIE1lcnJpbGwgIDxqYXNvbkByZWRoYXQuY29tPgoKCSogZHdhcmYyb3V0LmMgKG91dHB1dF9sb2Nfb3BlcmFuZHMpOiBEb24ndCBhYm9ydCBvbiBjb2RlcyB0aGF0IGhhdmUKCW5vIG9wZXJhbmRzLgoKMjAwMC0wNi0yOSAgSmltIFdpbHNvbiAgPHdpbHNvbkBjeWdudXMuY29tPgoKCSogY29uZmlnL2lhNjQvaWE2NC5oIChQUkVGRVJSRURfUkVMT0FEX0NMQVNTKTogUmV0dXJuIE5PX1JFR1MgZm9yCglhIHZvbGF0aWxlIG1lbSBhbmQgRlJfUkVHUy4KCjIwMDAtMDYtMjkgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjLWNvbW1vbi5jOiBJbmNsdWRlIGMtY29tbW9uLmgsIG5vdCBjLWxleC5oIG9yIGMtdHJlZS5oLgoJKiBjLWNvbW1vbi5oIChmbGFnX2NvbnN0X3N0cmluZ3MpOiBEZWNsYXJlLgoJKHdhcm5fZm9ybWF0KTogTGlrZXdpc2UuCgkoZmxhZ190cmFkaXRpb25hbCk6IExpa2V3aXNlLgoJKGZsYWdfaXNvYzk5KTogTGlrZXdpc2UuCgkod2Fybl9wYXJlbnRoZXNlcyk6IExpa2V3aXNlLgoJKHdhcm5fY29udmVyc2lvbik6IExpa2V3aXNlLgoJKENfVFlQRV9PQkpFQ1RfUCk6IExpa2V3aXNlLgoJKENfVFlQRV9JTkNPTVBMRVRFX1ApOiBMaWtld2lzZS4KCShDX1RZUEVfRlVOQ1RJT05fUCk6IExpa2V3aXNlLgoJKENfVFlQRV9PQkpFQ1RfT1JfSU5DT01QTEVURV9QKTogTGlrZXdpc2UuCgkoQ19FWFBfT1JJR0lOQUxfQ09ERSk6IExpa2V3aXNlLgoJKGJ1aWxkX3VuYXJ5X29wKTogTGlrZXdpc2UuCgkoYnVpbGRfYmluYXJ5X29wKTogTGlrZXdpc2UuCgkobHZhbHVlX3ApOiBMaWtld2lzZS4KCShkZWZhdWx0X2NvbnZlcnNpb24pOiBMaWtld2lzZS4KCShjb21tb25fdHlwZSk6IExpa2V3aXNlLgoJKiBjLXRyZWUuaCAoQ19UWVBFX09CSkVDVF9QKTogUmVtb3ZlLgoJKENfVFlQRV9JTkNPTVBMRVRFX1ApOiBMaWtld2lzZS4KCShDX1RZUEVfRlVOQ1RJT05fUCk6IExpa2V3aXNlLgoJKENfVFlQRV9PQkpFQ1RfT1JfSU5DT01QTEVURV9QKTogTGlrZXdpc2UuCgkoQ19FWFBfT1JJR0lOQUxfQ09ERSk6IExpa2V3aXNlLgoJKGNvbW1vbl90eXBlKTogTGlrZXdpc2UuCgkoZGVmYXVsdF9jb252ZXJzaW9uKTogTGlrZXdpc2UuCgkoYnVpbGRfYmluYXJ5X29wKTogTGlrZXdpc2UuCgkoYnVpbGRfdW5hcnlfb3ApOiBMaWtld2lzZS4KCShsdmFsdWVfcCk6IExpa2V3aXNlLgoJKGZsYWdfY29uc3Rfc3RyaW5ncyk6IExpa2V3aXNlLgoJKHdhcm5fZm9ybWF0KTogTGlrZXdpc2UuCgkod2Fybl9jb252ZXJzaW9uKTogTGlrZXdpc2UuCgkoZmxhZ190cmFkaXRpb25hbCk6IExpa2V3aXNlLgoJKGZsYWdfaXNvYzk5KTogTGlrZXdpc2UuCgkod2Fybl9wYXJlbnRoZXNlcyk6IExpa2V3aXNlLgoKMjAwMC0wNi0yOSAgSmFtZXMgRS4gV2lsc29uICA8d2lsc29uQGN5Z251cy5jb20+CgoJKiBjb25maWcvaWE2NC9saW51eC5oIChMSU5LX1NQRUMpOiBDaGFuZ2Ugc28uMSB0byBzby4yLgoKCSogY29uZmlnL2lhNjQvaWE2NC5oIChNT0RFU19USUVBQkxFX1ApOiBPbmx5IHRpZSBpZiBtb2RlIGNsYXNzIGlzIHRoZQoJc2FtZS4gIE9ubHkgdGllIFhGbW9kZSB3aXRoIFhGbW9kZS4KCjIwMDAtMDYtMjkgIFphY2sgV2VpbmJlcmcgIDx6YWNrQHdvbGVyeS5jdW1iLm9yZz4KCgkqIGMtZGVjbC5jLCB0aW1ldmFyLmMsIHRsaW5rLmM6IEluY2x1ZGUgaW50bC5oLgoJKiBNYWtlZmlsZS5pbjogVXBkYXRlIGRlcHMuCgoyMDAwLTA2LTI5ICBBbmRyZXcgSGFsZXkgIDxhcGhAY3lnbnVzLmNvbT4KCgkqIHRvcGxldi5jIChtYWluKTogT24gYW4gSUEtNjQsIG1ha2UgZmxhZ191bndpbmRfdGFibGVzIGRlZmF1aXQKCXRvIHRydWUuCgoyMDAwLTA2LTI5ICBBbmRyZXcgSGFsZXkgIDxhcGhAY3lnbnVzLmNvbT4KCgkqIGNvbmZpZy9pYTY0L2xpbnV4LmggKEpNUF9CVUZfU0laRSk6IFNpemUgaXMgaW4gUG1vZGUgdW5pdHMsIG5vdAoJYnl0ZXM6IHJlbW92ZSB0aGUgbXVsdGlwbHkgYnkgOC4KCjIwMDAtMDYtMjkgIFBoaWxpcHAgVGhvbWFzICA8cHRob21hc0BzdXNlLmRlPgoKCSogcnRsLmMgOiBSZXZlcnQgTkxTIGNoYW5nZXMuCgkqIGdjYy5jIDogRml4IGJ1ZyBpbiBkaXNwbGF5X2hlbHAgaW50cm9jZWQgYnkgbXkgbGFzdCBjaGFuZ2VzLgoKV2VkIEp1biAyOCAyMTowOTozMyAyMDAwICAgUmFqYSBSIEhhcmluYXRoIDxoYXJpbmF0aEBjcy51bW4uZWR1PgoKCSogZGJ4b3V0LmMgKGRieG91dF9zeW1ib2wsIGNhc2UgUkVTVUxUX0RFQ0wsIFZBUl9ERUNMKTogVXNlCglERUNMX0NPTlRFWFQsIG5vdCBERUNMX0ZJRUxEX0NPTlRFWFQuCgoyMDAwLTA2LTI5ICBNaWNoYWVsIEhheWVzICA8bS5oYXllc0BlbGVjLmNhbnRlcmJ1cnkuYWMubno+CgoJKiBmbG93LmMgKGZsb3dfZGVwdGhfZmlyc3Rfb3JkZXJfY29tcHV0ZSk6IEZpeCBhbGdvcml0aG0uCgoyMDAwLTA2LTI4ICBQaGlsaXBwIFRob21hcyAgPHB0aG9tYXNAc3VzZS5kZT4KCgkqIGMtZGVjbC5jIDogTWFyayBzdHJpbmdzIGZvciB0cmFuc2xhdGlvbi4KCShwYXJtbGlzdF90YWdzX3dhcm5pbmcpOiBVc2UgZGlzdGluY3QgbWVzc2FnZXMgaW5zdGVhZAoJb2YgY29uZGl0aW9uYWwgZXhwcmVzc2lvbnMuCgkqIGRpYWdub3N0aWMuYyAodl9tZXNzYWdlX3dpdGhfZGVjbCk6IE1hcmsgc3RyaW5nIGZvciB0cmFuc2xhdGlvbi4KCSogZ2NjLmM6IE1hcmsgbWVzc2FnZXMgZm9yIHRyYW5zbGF0aW9uLgoJKGRpc3BsYXlfaGVscCk6IENvbWJpbmUgbWVzc2FnZXMgaW50byBvbmUgc3RyaW5nIHdoZXJlIG5lY2Vzc2FyeS4KCSogbWlwcy10ZmlsZTogQWRkIGludGwuaC4gTWFyayBtZXNzYWdlcyBmb3IgdHJhbnNsYXRpb24uCgkqIHJ0bC5jIChmYXRhbF93aXRoX2ZpbGVfYW5kX2xpbmUpOiBNb2RpZnkgZnVuY3Rpb24gZm9yIE5MUy4gTWFyawoJbWVzc2FnZXMgZm9yIHRyYW5zbGF0aW9uLgoJKiB0aW1ldmFyLmM6IE1hcmsgbWVzc2FnZXMgZm9yIHRyYW5zbGF0aW9uLgoJKiB0bGluay5jOiBMaWtld2lzZS4KCSogdG9wbGV2LmM6IExpa2V3aXNlLgoKV2VkIEp1biAyOCAxNTozOToyNiAyMDAwICBEb25uIFRlcnJ5IChkb25udGVAbWljcm9zb2Z0LmNvbSkKCgkqIGkzODYtaW50ZXJpeC5oIChTVFJJUF9OQU1FX0VOQ09ESU5HKTogRGVjbGFyZSBfbmV3X25hbWUgcHJvcGVybHkuCgoJKiBhbHBoYS9hbHBoYS1pbnRlcml4Lmg6IERlbGV0ZSByZWR1bmRhbnQgLUFzeXN0ZW0oaW50ZXJpeCksCgl1c2UgLWlzeXN0ZW0gaW5zdGVhZCBvZiAtaWRpcmFmdGVyLgoJKiBpMzg2L2kzODYtaW50ZXJpeC5oOiBMaWtld2lzZS4KCjIwMDAtMDYtMjggIEphc29uIE1lcnJpbGwgIDxqYXNvbkByZWRoYXQuY29tPgoKCSogZHdhcmYyb3V0LmMgKG91dHB1dF9sb2Nfb3BlcmFuZHMpOiBEb24ndCBzdXBwb3J0ID4xIGJ5dGUgb3V0cHV0Cgl1bmxlc3MgRFdBUkYyX0RFQlVHR0lOR19JTkZPIGlzIGRlZmluZWQuCgkoQVNNX09VVFBVVF9EV0FSRl8qKTogV3JhcCBub3JtYWwgb3V0cHV0IGRlZnMgd2l0aCAjaWZuZGVmcy4KCjIwMDAtMDYtMjggIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgoJKiBjb25maWcvYWxwaGEvYWxwaGEuYyAoc3VtbWFyaXplX2luc24pOiBJZ25vcmUgU0NSQVRDSC4KCjIwMDAtMDYtMjggIEpha3ViIEplbGluZWsgIDxqYWt1YkByZWRoYXQuY29tPgoKCSogY3BwbGV4LmMgKG91dHB1dF9saW5lX2NvbW1hbmQpOiBPdXRwdXQgY29ycmVjdCAjbGluZSBpZiBhIGhlYWRlcgoJaXMgaW5jbHVkaW5nIGl0c2VsZiBhbmQgaXMgbm90IHByb3RlY3RlZCBhZ2FpbnN0IG11bHRpcGxlIGluY2x1c2lvbi4KCjIwMDAtMDYtMjggIFphY2sgV2VpbmJlcmcgIDx6YWNrQHdvbGVyeS5jdW1iLm9yZz4KCgkqIGNwcGZpbGVzLmMgKG9wZW5faW5jbHVkZV9maWxlKTogSWYgb3BlbigyKSByZXR1cm5zIEVNRklMRSBvcgoJRU5GSUxFLCBjbG9zZSBhbGwgY2FjaGVkIGZpbGUgZGVzY3JpcHRvcnMgYW5kIHRyeSBhZ2Fpbi4KCShfY3BwX2V4ZWN1dGVfaW5jbHVkZSk6IEtlZXAgYSBjb3VudCBvZiB0aGUgbnVtYmVyIG9mIHRpbWVzCgllYWNoIGhlYWRlciBpcyBpbmNsdWRlZC4KCShjbG9zZV9jYWNoZWRfZmQpOiBOZXcgZnVuY3Rpb24uCgkqIGNwcGhhc2guaCAoc3RydWN0IGluY2x1ZGVfZmlsZSk6IFJlbmFtZSBiZWZvcmUgdG8KCWluY2x1ZGVfY291bnQ7IGFsbCB1c2VycyB1cGRhdGVkLiAgTWFrZSBpbmNsdWRlX2NvdW50IGFuZCBzeXNwCgl1bnNpZ25lZCBzaG9ydC4KCSogY3BwaW5pdC5jIChjcHBfZmluaXNoKTogSWYgLUgsIHJlcG9ydCBoZWFkZXJzIHRoYXQgY291bGQgdXNlCglyZWluY2x1ZGUgZ3VhcmRzLgoJKHJlcG9ydF9taXNzaW5nX2d1YXJkKTogTmV3IGZ1bmN0aW9uLgoKV2VkIEp1biAyOCAxNDo0Njo1OCBNRVQgRFNUIDIwMDAgIEphbiBIdWJpY2thICA8amhAc3VzZS5jej4KCgkqIGkzODYubWQgKHByb2xvZ3VlX3NldF9nb3QpOiBTZXQgbGVuZ3RoX2ltbWVkaWF0ZSBmaWVsZC4KCSh0ZXN0cWlfY2Nub18xKTogIEFkZCBtaXNzaW5nICdAJyBjaGFyYWN0ZXIuCgoyMDAwLTA2LTI3ICBKYXNvbiBNZXJyaWxsICA8amFzb25AcmVkaGF0LmNvbT4KCgkqIGR3YXJmMm91dC5jIChleHBhbmRfYnVpbHRpbl9pbml0X2R3YXJmX3JlZ19zaXplcyk6IFVzZQoJRFdBUkZfRlJBTUVfUkVHTlVNLgoKMjAwMC0wNi0yNyAgQW5kcmV3IE1hY2xlb2QgPGFtYWNsZW9kQGN5Z251cy5jb20+CgoJKiBkd2FyZjJvdXQuYyAoQVNNX09VVFBVVF9EV0FSRl9EQVRBMik6IFByb3ZpZGUgZGVmYXVsdCB3aGVuIG5vCgl1bnNpZ25lZCBtYWNyb3MgYXZhaWxhYmxlLgoKMjAwMC0wNi0yNyAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAY3lnbnVzLmNvbT4KCgkqIGNvbmZpZy9pYTY0L2lhNjQuYyAoZW1pdF9pbnNuX2dyb3VwX2JhcnJpZXJzKTogU3BlY2lhbCBjYXNlCgllcGlsb2d1ZV9kZWFsbG9jYXRlX3N0YWNrLgoKCSogY29uZmlnL2lhNjQvaWE2NC5jIChpYTY0X3ByaW50X29wZXJhbmQpIFtjYXNlIERdOiBFbWl0Cgljb21wbGV0ZXJzIGZvciBVTk9SREVSRUQgYW5kIE9SREVSRUQgYXMgd2VsbC4KCSogY29uZmlnL2lhNjQvaWE2NC5tZCAoYnVub3JkZXJlZCwgYm9yZGVyZWQpOiBOZXcuCgkoc3Vub3JkZXJlZCwgc29yZGVyZWQpOiBOZXcuCgpUdWUgSnVuIDI3IDEyOjE0OjEyIE1FVCBEU1QgMjAwMCAgSmFuIEh1Ymlja2EgIDxqaEBzdXNlLmN6PgoKCSogZ2VuYXR0cnRhYi5jICh3cml0ZV9hdHRyX3ZhbHVlKTogRG8gbm90IGFib3J0IGZvciBDT05TVF9JTlQgb3BlcmFuZHMuCgkqIGkzODYuYyAoaXg4Nl9hdHRyX2xlbmd0aF9kZWZhdWx0KTogS2lsbC4KCShpeDg2X2F0dHJfbGVuZ3RoX2ltbWVkaWF0ZV9kZWZhdWx0LCBpeDg2X2F0dHJfbGVuZ3RoX2FkZHJlc3NfZGVmYXVsdCk6CglOZXcuCgkqIGkzODYtcHJvdG9zLmggKGl4ODZfYXR0cl9sZW5ndGhfZGVmYXVsdCk6IEtpbGwKCShpeDg2X2F0dHJfbGVuZ3RoX2ltbWVkaWF0ZV9kZWZhdWx0LCBpeDg2X2F0dHJfbGVuZ3RoX2FkZHJlc3NfZGVmYXVsdCk6CglBZGQgcHJvdG90eXBlCgkqIGkzODYubWQgKGF0dHJpYnV0ZSB0eXBlKTogQWRkICJ0ZXN0Ii4KCShhdHRyaWJ1dGUgbGVuZ3RoX3ByZWZpeCk6IEtpbGwuCgkoYXR0cmlidXRlIGxlbmd0aF9vcGNvZGUpOiBLaWxsLgoJKGF0dHJpYnV0ZSBpMzg3LCBtb2RlLCBsZW5ndGhfaW1tZWRpYXRlLCBsZW5ndGhfYWRkcmVzcywgcHJlZml4X2RhdGExNiwKCXByZWZpeF9yZXAsIHByZWZpeF8wZiwgbW9kcm0pOiBOZXcuCgkoYXR0cmlidXRlIGxlbmd0aCk6IENvbXB1dGUgdXNpbmcgdGhlIG5ldyBhdHRyaWJ1dGVzLgoJKGF0dHJpYnV0ZSBwZW50X3ByZWZpeCk6IE5ldy4KCShhdHRyaWJ1dGUgcGVudF9wYWlyKTogQ29tcHV0ZSB1c2luZyBwZW50X3ByZWZpeC4KCShhbGwgaW5zbiBwYXR0ZXJucyk6IFNldCBtb2RlLG1vZHJtIGFuZCBpbW1lZGlhdGVfbGVuZ3RoIGF0dHJpYnV0ZXMgd2hlcmUKCW5lZWRlZC4KCShjbXBzaSBwYXR0ZXJucyk6IENvbXB1dGUgc2l6ZXMgcHJvcGVybHkgZm9yIHRlc3QgaW5zdHJ1Y3Rpb24uCgkobW92c2ksIG1vdmhpIHBhdHRlcm5zKTogQ29tcHV0ZSBzaXplcyBwcm9wZXJseSBmb3IgZWF4IHNob3J0Y3V0cy4KCShtb3ZzdHJpY3RoaV94b3IsIG1vdnN0cmljdHFpX3hvcik6IE5ldyBwYXR0ZXJucy4KCShhbmRzaS9hbmRoaSk6IFVzZSBzcGxpdHRlcnMgdG8gZ2VuZXJhdGUgeG9yIGluc3RydWN0aW9ucy4KCSh4b3JxaV9leHRfMSk6IE5ldyBwYXR0ZXJuLgoJKG1vdnN0cmljdGhpLT5tb3ZzdHJpY3RoaV94b3IgcGVlcDIpOiBOZXcuCgpUdWUgSnVuIDI3IDEyOjAzOjAzIE1FVCBEU1QgMjAwMCAgSmFuIEh1Ymlja2EgIDxqaEBzdXNlLmN6PgoKCSogaTM4Ni5tZCAoYWRkcWlfbG93XzEpOiBSZW1vdmUuCgoyMDAwLTA2LTI3ICBQaGlsaXBwIFRob21hcyAgPHB0aG9tYXNAc3VzZS5kZT4KCgkqIDE3NTBhLmg6IE1hcmsgaGVscCBzdHJpbmdzIGZvciBvcHRpb25zL3N3aXRjaGVzIGZvciB0cmFuc2xhdGlvbi4KCSogYTI5ay5oOiBMaWtld2lzZS4KCSogYWxwaGEuaDogTGlrZXdpc2UuCgkqIGFybS5oOiBMaWtld2lzZS4KCSogcGUuaDogTGlrZXdpc2UuCgkqIHJpc2NpeC5oOiBMaWtld2lzZS4KCSogYzR4Lmg6IExpa2V3aXNlLgoJKiBjbGlwcGVyLmg6IExpa2V3aXNlLgoJKiBjb252ZXguaDogTGlrZXdpc2UuCgkqIGVseHNpLmg6IExpa2V3aXNlLgoJKiBmcjMwLmg6IExpa2V3aXNlLgoJKiBmeDgwLmg6IExpa2V3aXNlLgoJKiBoODMwMC5oOiBMaWtld2lzZS4KCSogaTM3MC5oOiBMaWtld2lzZS4KCSogY3lnd2luLmg6IExpa2V3aXNlLgoJKiBkZ3V4Lmg6IExpa2V3aXNlLgoJKiBkamdwcC5oOiBMaWtld2lzZS4KCSogaTM4Ni5oOiBMaWtld2lzZS4KCSogb3NmMWVsZi5oOiBMaWtld2lzZS4KCSogb3Nmcm9zZS5oOiBMaWtld2lzZS4KCSogc2NvNS5oOiBMaWtld2lzZS4KCSogd2luMzIuaDogTGlrZXdpc2UuCgkqIGk4NjAuaDogTGlrZXdpc2UuCgkqIHBhcmFnb24uaDogTGlrZXdpc2UuCgkqIGk5NjAuaDogTGlrZXdpc2UuCgkqIGlhNjQuaDogTGlrZXdpc2UuCgkqIG0zMnIuaDogTGlrZXdpc2UuCgkqIG1jb3JlLmg6IExpa2V3aXNlLgoJKiBtaXBzLmg6IExpa2V3aXNlLgoJKiBtbjEwMzAwLmg6IExpa2V3aXNlLgoJKiBuczMyay5oOiBMaWtld2lzZS4KCSogcGRwMTEuaDogTGlrZXdpc2UuCgkqIHBqLmg6IExpa2V3aXNlLgoJKiBhaXguaDogTGlrZXdpc2UuCgkqIGFpeDQxLmg6IExpa2V3aXNlLgoJKiBhaXg0My5oOiBMaWtld2lzZS4KCSogYmVvcy5oOiBMaWtld2lzZS4KCSogcnM2MDAwLmg6IExpa2V3aXNlLgoJKiBzeXN2NC5oOiBMaWtld2lzZS4KCSogbGludXguaDogTGlrZXdpc2UuCgkqIGxpbnV4NjQuaDogTGlrZXdpc2UuCgkqIHNwNjQtZWxmLmg6IExpa2V3aXNlLgoJKiBzcGFyYy5oOiBMaWtld2lzZS4KCSogc3BsZXQuaDogTGlrZXdpc2UuCgkqIHY4NTAuaDogTGlrZXdpc2UuCgkqIGNvbnZleC5oIChUQVJHRVRfU1dJVENIRVMpOiBQcm92aWRlIGRlc2NyaXB0aW9ucyBhbmQgbWFyayB0aGVtCglmb3IgdHJhbnNsYXRpb24uCgkqIHNwODZ4LWFvdXQuaDogUmVtb3ZlIGJvZ3VzIGZpcnN0IGRlZmluaXRpb24gb2YgU1VCVEFSR0VUX1NXSVRDSEVTLgoJUHJvcGVybHkgZG9jdW1lbnQgb3B0aW9uIGFuZCBtYXJrIGZvciB0cmFuc2xhdGlvbi4KCSogc3A4NngtZWxmLmg6IExpa2V3aXNlLgoKMjAwMC0wNi0yNyAgQmVybmQgU2NobWlkdCAgPGJlcm5kc0BjeWdudXMuY28udWs+CgoJQWRkIE1NWCBhbmQgU1NFIHJlZ2lzdGVycyB0byBpMzg2IG1hY2hpbmUgZGVzY3JpcHRpb24uCgkqIGkzODYtcHJvdG9zLmggKGl4ODZfY29uc3RhbnRfYWxpZ25tZW50LCBpeDg2X2RhdGFfYWxpZ25tZW50LAoJaXg4Nl9sb2NhbF9hbGlnbm1lbnQpOiBEZWNsYXJlLgoKCSogaTM4Ni5oIChUQVJHRVRfTU1YLCBUQVJHRVRfU1NFKTogTmV3LgoJKEZJUlNUX1BTRVVET19SRUdJU1RFUiwgRklYRURfUkVHSVNURVJTLCBDQUxMX1VTRURfUkVHSVNURVJTLAoJUkVHX0FMTE9DX09SREVSLCBIQVJEX1JFR05PX05SRUdTLCBIQVJEX1JFR05PX01PREVfT0ssCglSRUdfQ0xBU1NfTkFNRVMsIFJFR19DTEFTU19DT05URU5UUyxSRUdfQ0xBU1NfRlJPTV9MRVRURVIsCgllbnVtIHJlZ19jbGFzcywgSElfUkVHSVNURVJfTkFNRVMpOiBBZGRlZCBNTVgvU1NFIHJlZ2lzdGVycy4KCShGSVJTVF9TU0VfUkVHLCBMQVNUX1NTRV9SRUcsIFNTRV9SRUdOT19QKTogTmV3LgoJKEZJUlNUX01NWF9SRUcsIExBU1RfTU1YX1JFRywgTU1YX1JFR05PX1AsIE1NWF9SRUdfUCk6IE5ldyBtYWNyb3MuCgkoUkVUVVJOX0lOX01FTU9SWSk6IEhhbmRsZSBNTVgvU1NFLgoJKFJFR19QQVJNX1NUQUNLX1NQQUNFKTogQWRkZWQgc28gdGhlIGZpcnN0IHRocmVlIFRJbW9kZSBwYXJhbWV0ZXJzCglhbHNvIGdldCBzdGFjayBzcGFjZS4KCShNVVNUX1BBU1NfSU5fU1RBQ0spOiBBZGRlZCBUSW1vZGUgdG8gdGhlIGRlZmF1bHQgZGVmaW5pdGlvbi4KCShDVU1VTEFUSVZFX0FSR1MpOiBBZGRlZCBzc2VfbnJlZ3MsIHNzZV9yZWdubyBhbmQgc3NlX3dvcmRzLgoJKE1NWF9SRUdJU1RFUl9OQU1FUyk6IE5ldy4KCShBTElHTl9NT0RFXzEyOCk6IE5ldyBtYWNyby4KCShDT05TVEFOVF9BTElHTk1FTlQpOiBDb2RlIG1vdmVkIG91dC1vZi1saW5lOyBqdXN0IGNhbGwgdGhlIGZ1bmN0aW9uLgoJKERBVEFfQUxJR05NRU5UKTogTGlrZXdpc2UuCgkoTE9DQUxfQUxJR05NRU5UKTogTGlrZXdpc2UuCgkoQ09ORElUSU9OQUxfUkVHSVNURVJfVVNBR0UpOiBNYWtlIE1NWC9TU0UgcmVncyBmaXhlZCBpZiBub3QKCVRBUkdFVF9NTVgvVEFSR0VUX1NTRS4KCShWQUxJRF9TU0VfUkVHX01PREUsIFZBTElEX01NWF9SRUdfTU9ERSk6IE5ldyBtYWNyb3MuCgkoUkVHX0NMQVNTX0ZST01fTEVUVEVSKTogJ3knIGZvciBNTVggcmVncy4KCShTRUNPTkRBUllfTUVNT1JZX05FRURFRCk6IEJlIGNvbnNlcnZhdGl2ZSBhYm91dCBjb3B5aW5nIGJldHdlZW4KCVNTRS9NTVggcmVncyBhbmQgc29tZXRoaW5nIGVsc2UuCgkoQ0xBU1NfTUFYX05SRUdTKTogMSBmb3IgU1NFIGFuZCBNTVggcmVncy4KCShSRUdJU1RFUl9NT1ZFX0NPU1QpOiAxMCBpZiB0cnlpbmcgdG8gbW92ZSBiZXR3ZWVuIE1NWCBhbmQgU1NFIHJlZ3MsCgkzIGlmIG1vdmluZyBiZXR3ZWVuIE1NWCByZWdzIGFuZCBzb21ldGhpbmcgZWxzZS4KCgkqIGkzODYuYyAocmVnX2NsYXNzKTogQWRkIFNTRV9SRUdTLCBNTVhfUkVHUy4KCShyZWdjbGFzc19tYXApOiBBZGQgTU1YL1NTRSByZWdpc3RlcnMuCgkocHJpbnRfb3BlcmFuZCk6IEFkZCBjb2RlIHRvIHByaW50IFhNTVdPUkQgYXMgYXBwcm9wcmlhdGUuCgkoaXg4Nl9zcGxpdF9tb3ZkaSk6IEFib3J0IGZvciBNTVggcmVncy4KCShpbml0X2N1bXVsYXRpdmVfYXJncyk6IEFsc28gYWxsb3cgU1NFX1JFR1MKCShmdW5jdGlvbl9hcmdfYWR2YW5jZSwgZnVuY3Rpb25fYXJnKTogTGlrZXdpc2UKCShwcmludF9yZWcpOiBTdXBwb3J0ICdtJy4gIEFkZCBjYXNlIGZvciBUSW1vZGUuCgkob3ZlcnJpZGVfb3B0aW9ucyk6IFRBUkdFVF9TU0UgaW1wbGllcyBUQVJHRVRfTU1YLgoJKGl4ODZfY29uc3RhbnRfYWxpZ25tZW50LCBpeDg2X2RhdGFfYWxpZ25tZW50LCBpeDg2X2xvY2FsX2FsaWdubWVudCk6CglOZXcgZnVuY3Rpb25zLgoKCSogY29uZmlnL2kzODYvdW5peC5oIChWQUxVRV9SRUdOTyk6IFZFQ1RPUl9NT0RFIHZhbHVlcyBnbyB0bwoJRklSU1RfU1NFX1JFRy4KCSogY29uZmlnL2kzODYvcHR4NC1pLmggKFJFVFVSTl9JTl9NRU1PUlkpOiBSZXR1cm4gTU1YIHZhbHVlcyBpbgoJbWVtb3J5LgoJKiBjb25maWcvaTM4Ni9zeXN2NC5oIChSRVRVUk5fSU5fTUVNT1JZKTogTGlrZXdpc2UuCgkqIGNvbmZpZy9pMzg2L2kzODZlbGYuaCAoUkVUVVJOX0lOX01FTU9SWSk6IExpa2V3aXNlLgoKMjAwMC0wNi0yNiAgR2VvZmYgS2VhdGluZyAgPGdlb2Zma0BjeWdudXMuY29tPgoKCSogc3NhLmMgKHN0cnVjdCByZW5hbWVfc2V0X2RhdGEpOiBDaGFuZ2UgdGhlIG5hbWUgb2YgZmllbGQKCSdzZXRfZGVzdCcgdG8gJ29sZF9yZWcnLiAgQWRkIGNvbW1lbnRzLgoJKHN0cnVjdCByZW5hbWVfY29udGV4dCk6IENoYW5nZSB0aGUgbmFtZSBvZiAnc2V0X2RhdGEnIHRvCgknbmV3X3JlbmFtZXMnLiAgQWRkIG5ldyBmaWVsZCAnZG9uZV9yZW5hbWVzJy4KCShjcmVhdGVfZGVsYXllZF9yZW5hbWUpOiBOZXcgZnVuY3Rpb24uCgkoYXBwbHlfZGVsYXllZF9yZW5hbWVzKTogTmV3IGZ1bmN0aW9uLgoJKHJlbmFtZV9pbnNuXzEpOiBVc2UgdGhlIG5ldyBmdW5jdGlvbnMuICBIYW5kbGUgQ0xPQkJFUlMuICBIYW5kbGUKCVNVQlJFR3MgYW5kIHNpbWlsYXIgYnkgZW1pdHRpbmcgYSBtb3ZlLgoJKG5ld19yZWdpc3RlcnNfZm9yX3VwZGF0ZXMpOiBEZWxldGUsIGZ1bmN0aW9uYWxpdHkgbW92ZWQgdG8KCWFwcGx5X2RlbGF5ZWRfcmVuYW1lcy4KCShyZW5hbWVfYmxvY2spOiBIYW5kbGUgbW92ZXMgZW1pdHRlZCBieSByZW5hbWVfaW5zbl8xIGJ5IHB1dHRpbmcKCXRoZW0gaW50byBhIFNFUVVFTkNFIHdpdGggdGhlIG9yaWdpbmFsIGluc24uICBBZGQgc2FuaXR5IGNoZWNrcwoJYW5kIGNvbW1lbnRzLgoJKHJlbmFtZV9lcXVpdmFsZW50X3JlZ3NfaW5faW5zbik6IERvbid0IGhhbmRsZSBTVUJSRUdzIHNwZWNpYWxseS4KCShyZW5hbWVfZXF1aXZhbGVudF9yZWdzKTogRXhwYW5kIFNFUVVFTkNFcyBvdXQgdG8gaW5kaXZpZHVhbCBpbnNucy4KCjIwMDAtMDYtMjYgIEFuZHJldyBNYWNsZW9kIDxhbWFjbGVvZEBjeWdudXMuY29tPgoJICAgIEphc29uIE1lcnJpbGwgPGphc29uQHJlZGhhdC5jb20+CgoJKiBkd2FyZjIuaCAoZW51bSBkd2FyZl9jYWxsX2ZyYW1lX2luZm8pOiBBZGQKCURXX0NGQV9kZWZfY2ZhX2V4cHJlc3Npb24uCgkqIGR3YXJmMm91dC5jICh1bmlvbiBkd19jZmlfb3BybmRfc3RydWN0KTogQWRkIGEgcG9pbnRlciB0byBhCglkd19sb2NfZGVzY3Jfc3RydWN0IGVudHJ5LgoJKHN0cnVjdCBjZmFfbG9jKTogTmV3IHN0cnVjdHVyZSB0byB0cmFjayBhIENGQSBsb2NhdGlvbi4KCShsb29rdXBfY2ZhKTogVGFrZSBhIGNmYV9sb2MgcGFyYW1ldGVyIGluc3RlYWQgb2YgYSByZWcgYW5kIGFuIG9mZnNldC4KCShsb29rdXBfY2ZhXzEpOiBUYWtlIGEgY2ZhX2xvYyBwYXJhbWV0ZXIgaW5zdGVhZCBvZiBhIHJlZyBhbmQgYW4KCW9mZnNldCwgcGx1cyBoYW5kbGUgRFdfQ0ZBX2RlZl9jZmFfZXhwcmVzc2lvbi4KCShkZWZfY2ZhXzEpOiBVc2UgdG8gYmUgZHdhcmYyb3V0X2RlZl9jZmEsIG9ubHkgbm93IGl0IHVzZXMgYQoJY2ZhX2xvYyByZWNvcmQuCgkoZHdhcmYyb3V0X2RlZl9jZmEpOiBFbnRyeSBwb2ludCBtYWludGFpbmVkIGZvciBjb21wYXRpYmlsaXR5LgoJKGR3YXJmX2NmaV9uYW1lKTogQWRkIERXX0NGQV9kZWZfY2ZhX2V4cHJlc3Npb24uCgkoY2ZhX3JlZywgY2ZhX29mZnNldCk6IFJlcGxhY2Ugd2l0aCBjZmFfbG9jIHJlY29yZCAnY2ZhJy4KCShjZmFfc3RvcmVfcmVnLCBjZmFfc3RvcmVfb2Zmc2V0KTogUmVwbGFjZSB3aXRoIGNmYV9sb2MgJ2NmYV9zdG9yZScuCgkoaW5pdGlhbF9yZXR1cm5fc2F2ZSwgZHdhcmYyb3V0X3N0YWNrX2FkanVzdCk6IFVzZSBjZmEucmVnLCBub3QKCWNmYV9yZWcuCgkoZHdhcmYyb3V0X2ZyYW1lX2RlYnVnX2V4cHIpOiBVc2UgbmV3IGNmYV9sb2MgcmVjb3Jkcy4gUmVjb2duaXplIHJ0bAoJc2VxdWVuY2VzIGZvciB0aGUgbmV3IERXX0NGQV9kZWZfY2ZhX2V4cHJlc3Npb24gcmVjb3JkLgoJKGR3YXJmMm91dF9mcmFtZV9kZWJ1Zyk6IFVzZSBuZXcgdmFyaWFibGVzL2ZpZWxkcy5BCgkob3V0cHV0X2NmaSk6IEhhbmRsZSBEV19DRkFfZGVmX2NmYV9leHByZXNzaW9uLgoJKG91dHB1dF9jZmFfbG9jKTogTmV3IGZ1bmN0aW9uIHRvIGdlbmVyYXRlIGEgQ0ZJIHJlY29yZCBmb3IKCURXX0NGQV9kZWZfY2ZhX2V4cHJlc3Npb24uCgkoZ2V0X2NmYV9mcm9tX2xvY19kZXNjcik6IE5ldyBmdW5jdGlvbiB0byBnZXQgYSBjZmFfbG9jIHJlY29yZCBmcm9tCglhIGR3X2xvY19kZXNjciBzZXF1ZXVuY2UuCgkoYnVpbGRfbG9jX2Rlc2NyKTogQnVpbGQgYSBkd19sb2NfZGVzY3IgZnJvbSBhIGNmYV9sb2MgcmVjb3JkLgoJKGR3YXJmX3N0YWNrX29wX25hbWUsIG5ld19sb2NfZGVzY3IsIGFkZF9sb2NfZGVzY3IsIHNpemVfb2ZfbG9jX2Rlc2NyLAoJc2l6ZV9vZl9sb2NzLCBvdXRwdXRfbG9jX29wZXJhbmRzLCBvdXRwdXRfbG9jX3NlcXVlbmNlKTogTW92ZSBpbnRvCgl1bndpbmQgaW5mbyBzZWN0aW9uLgoJKiBmcmFtZS5oIChmcmFtZV9zdGF0ZSk6IEFkZCBiYXNlX29mZnNldCBhbmQgaW5kaXJlY3QgZmllbGRzLgoJKiBmcmFtZS1kd2FyZjIuYyAoZGVjb2RlX3N0YWNrX29wKTogTmV3IGZ1bmN0aW9uIHRvIGludGVycHJldCBhCglkd19sb2NfZGVzY3Igb3BlcmF0aW9uLgoJKGV4ZWN1dGVfY2ZhX2luc24pOiBBZGQgc3VwcG9ydCBmb3IgRFdfQ0ZBX2RlZl9jZmFfZXhwcmVzc2lvbi4KCShzdHJ1Y3QgZnJhbWVfc3RhdGUpOiBBZGQgYmFzZSBvZmZzZXQgYW5kIGluZGlyZWN0IGZpZWxkcy4KCSogbGliZ2NjMi5jIChuZXh0X3N0YWNrX2xldmVsKTogU3VwcG9ydCBpbmRpcmVjdCBsb2FkaW5nIGZvciBDRkEuCgoyMDAwLTA2LTI2ICBKb3NlcGggUy4gTXllcnMgIDxqc20yOEBjYW0uYWMudWs+CgoJKiBjLWRlY2wuYyAoZ3Jva2RlY2xhcmF0b3IpOiBEb24ndCB3YXJuIGFib3V0IGBsb25nIGxvbmcnIGluIEM5OS4KCU1ha2Ugd2FybmluZ3MgYWJvdXQgaW1wbGljaXQgaW50IGJlIHBlZHdhcm5zIGluIEM5OS4gIERvbid0IHdhcm4KCWFib3V0IGR1cGxpY2F0ZSB0eXBlIHF1YWxpZmllcnMgaW4gQzk5LgoJKHN0YXJ0X2Z1bmN0aW9uKTogTWFrZSB3YXJuaW5nIGFib3V0IGltcGxpY3QgaW50IHJldHVybiB0eXBlIGJlIGEKCXBlZHdhcm4gaW4gQzk5LgoJKiBjLWxleC5jICh5eWxleCk6IERvbid0IHdhcm4gYWJvdXQgYGxvbmcgbG9uZycgaW4gQzk5LgoJKiBjLXR5cGVjay5jIChjX2V4cGFuZF9yZXR1cm4pOiBJbiBDOTksIGFsd2F5cyBwZWR3YXJuIGFib3V0CglgcmV0dXJuJyB3aXRoIG5vIHZhbHVlIGluIGZ1bmN0aW9uIHJldHVybmluZyBub24tdm9pZC4KCjIwMDAtMDYtMjYgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgoJKiBjLXR5cGVjay5jIChwZWR3YXJuX2M5OSk6IE5ldy4KCSogZGlhZ25vc3RpYy5jICh2ZXJyb3IsIHZ3YXJuaW5nLCB2cGVkd2Fybik6IEV4cG9ydC4KCSogdG9wbGV2Lmg6IFByb3RvdHlwZSB0aGVtLgoKMjAwMC0wNi0yNiAgSi4gRGF2aWQgQW5nbGluICA8ZGF2ZUBoaWF1bHkxLmhpYS5ucmMuY2E+CgoJKiBjLXR5cGVjay5jIChkaWdlc3RfaW5pdCk6IFJldHVybiBlcnJvcl9tYXJrX25vZGUgbm9kZSB3aGVuCglUUkVFX1RZUEUgKGluaXQpICA9PSBlcnJvcl9tYXJrX25vZGUuCgoyMDAwLTA2LTI2ICBQaGlsaXBwIFRob21hcyAgPHB0aG9tYXNAc3VzZS5kZT4KCgkqIGFjbG9jYWwubTQgKEFNX1dJVEhfTkxTKTogRG9uJ3Qgc2V0IE1TR0ZNVCBvciBHTVNHRk1UIHRvIG5vLAoJdGVzdCBmb3IgbXNnZm10IHdpdGhvdXQgcGF0aCBpbnN0ZWFkLgoJKiBjb25maWd1cmU6IFJlYnVpbHQuCgoyMDAwLTA2LTI1IFRoZW9kb3JlIFBhcGFkb3BvdWxvIDxUaGVvZG9yZS5QYXBhZG9wb3Vsb0Bzb3BoaWEuaW5yaWEuZnI+CgoJKiBnZW5nZW5ydGwuYyAoc3BlY2lhbF9ydHgpOiBGaXggdHlwbyBpbiBjb21tZW50LgoKMjAwMC0wNi0yNiAgTWljaGFlbCBIYXllcyAgPG0uaGF5ZXNAZWxlYy5jYW50ZXJidXJ5LmFjLm56PgoKCSogbWtsaWJnY2MuaW4gKExJQjJGVU5DUyk6IEFkZCBtaXNzaW5nIHNwYWNlLgoKMjAwMC0wNi0yNCAgQmVybmQgU2NobWlkdCAgPGJlcm5kc0BjeWdudXMuY28udWs+CgoJKiB0cmVlLmggKGVudW0gdHJlZV9pbmRleCk6IEFkZCB2ZWN0b3IgdHlwZSBub2Rlcy4KCUFkZCBhY2Nlc3NvciBtYWNyb3MgZm9yIHRoZW0uCgkoVFlQRV9SRVBSRVNFTkFUSU9OX1RZUEUpOiBOZXcgbWFjcm8uCgkqIHRyZWUuYyAoYnVpbGRfY29tbW9uX3RyZWVfbm9kZXNfMik6IEJ1aWxkIHRoZXNlIG5vZGVzLgoJKGZpbmlzaF92ZWN0b3JfdHlwZSk6IE5ldyBmdW5jdGlvbi4KCSogYy1jb21tb24uYyAodHlwZV9mb3JfbW9kZSk6IEhhbmRsZSB2ZWN0b3IgbW9kZXMuCgkqIHRtLnRleGkgKFZFQ1RPUl9NT0RFX1NVUFBPUlRFRF9QKTogRG9jdW1lbnQuCgoJKiBkYnhvdXQuYyAoZGJ4b3V0X3R5cGUpOiBIYW5kbGUgVkVDVE9SX1RZUEVzLgoJKiBkd2FyZi5oIChlbnVtIGR3YXJmX2Z1bmRhbWVudGFsX3R5cGUpOiBBZGQgMTI4IGJpdCBpbnRlZ2Vycy4KCSogZHdhcmYyb3V0LmMgKGxvb2t1cF90eXBlX2RpZSk6IEhhbmRsZSBWRUNUT1JfVFlQRXMuCgkoZ2VuX3R5cGVfZGllKTogTGlrZXdpc2UuCgkqIGR3YXJmb3V0LmMgKGR3YXJmX2Z1bmRfdHlwZV9uYW1lKTogSGFuZGxlIDEyOCBiaXQgaW50ZWdlcnMuCgkoZnVuZGFtZW50YWxfdHlwZV9jb2RlKTogTGlrZXdpc2UuCgkodHlwZV9pc19mdW5kYW1lbnRhbCk6IFZFQ1RPUl9UWVBFcyBhcmVuJ3QuCgkob3V0cHV0X3R5cGUpOiBIYW5kbGUgVkVDVE9SX1RZUEVzLgoKMjAwMC0wNi0yNSAgS2F6dSBIaXJhdGEgIDxrYXp1QGh4aS5jb20+CgoJKiBjb25maWcvYXJtLmM6IEZpeCBhIGNvbW1lbnQgdHlwby4KCSogY29uZmlnL2FybS5oOiBMaWtld2lzZS4KCjIwMDAtMDYtMjUgIFBoaWxpcHAgVGhvbWFzICA8cHRob21hc0BzdXNlLmRlPgoKCSogYWNsb2NhbC5tNCAoQU1fV0lUSF9OTFMpOiBTZXQgY3JlYXRlX2NhdGFsb2dzPW5vIGlmIG5vIGNhdGFsb2cKCWNvbXBpbGVyIGZvdW5kLgoJQU1fR05VX0dFVFRFWFQ6IERvbid0IHNldCBDQVRBTE9HUyBpZiBjcmVhdGVfY2F0YWxvZ3M9bm8uCgkqIGNvbmZpZ3VyZTogUmVidWlsdC4KCjIwMDAtMDYtMjUgIEpvaG4gRGF2aWQgQW5nbGluICA8ZGF2ZS5hbmdsaW5AbnJjLmNhPgoKCSogY29uZmlnL3ZheC92YXguaCAoVEFSR0VUX1NXSVRDSEVTKTogUHJvdmlkZSBkZXNjcmlwdGlvbnMuCgoyMDAwLTA2LTI1IEhlcm1hbiBBLkouIHRlbiBCcnVnZ2UgPEhhai5UZW4uQnJ1Z2dlQG5ldC5IQ0Mubmw+CgoJKiBta2xpYmdjYy5pbjogUHJlZmVyIExJQjFBU01GVU5DUyBvdmVyIExJQjJGVU5DUyB3aGVuIGdlbmVyYXRpbmcKCWxpYmdjYy5hLgoKMjAwMC0wNi0yNCAgTWFyYyBFc3BpZSA8ZXNwaWVAY3ZzLm9wZW5ic2Qub3JnPgoKCSogY29sbGVjdDIuYyAocmVzb2x2ZV9saWJfbmFtZSk6IE1vdmUgJy8nIGNoZWNrIG91dCBvZiBsb29wLgoKMjAwMC0wNi0yNCAgRGlyayBEdWVsbG1hbm4gIDxEaXJrLkR1ZWxsbWFubkBjZXJuLmNoPgoKCSogZ2luY2x1ZGUvc3RkZGVmLmggKE5VTEwpOiBkZWZpbmUgZm9yIG5vbi1nbnUgQysrIHBhcnNlcnMgYXMgMC4KCjIwMDAtMDYtMjQgIEpha3ViIEplbGluZWsgIDxqYWt1YkByZWRoYXQuY29tPgoKCSogc3RtdC5jIChleHBhbmRfZGVjbF9jbGVhbnVwKTogRW1pdCBhIGR1bW15IGluc24gYWZ0ZXIKCWxhc3RfdW5jb25kaXRpb25hbF9jbGVhbnVwLgoKMjAwMC0wNi0yNCAgQmVybmQgU2NobWlkdCAgPGJlcm5kc0BjeWdudXMuY28udWs+CgoJKiB0cmVlLmRlZiAoVkVDVE9SX1RZUEUpOiBOZXcgbm9kZSB0eXBlLgoJKiB0cmVlLmg6IEFkanVzdCBzb21lIGNvbW1lbnRzIHRvIHJlZmxlY3QgYWRkaXRpb24gb2YgdmVjdG9yIHR5cGVzLgoJKFRZUEVfVkVDVE9SX1NVQlBBUlRTKTogTmV3IG1hY3JvLgoJKiBzdG9yLWxheW91dC5jIChsYXlvdXRfdHlwZSk6IEhhbmRsZSBWRUNUT1JfVFlQRS4KCSogYy1jb252ZXJ0LmMgKGNvbnZlcnQpOiBMaWtld2lzZS4KCSogY29udmVydC5jIChjb252ZXJ0X3RvX2ludGVnZXIpOiBIYW5kbGUgdmVjdG9yIG1vZGVzLgoJKGNvbnZlcnRfdG9fdmVjdG9yKTogTmV3IGZ1bmN0aW9uLgoJKiBjb252ZXJ0LmggKGNvbnZlcnRfdG9fdmVjdG9yKTogRGVjbGFyZS4KCSogZXhwci5jIChjb252ZXJ0X21vdmUpOiBIYW5kbGUgdmVjdG9yIG1vZGVzLgoJKiBleHBtZWQuYyAoZXh0cmFjdF9iaXRfZmllbGQpOiBEb24ndCBhYm9ydCBmb3IgdmVjdG9yIG1vZGVzLgoKMjAwMC0wNi0yNCAgTWFyZWsgTWljaGFsa2lld2ljeiAgPG1hcmVrbUBsaW51eC5vcmcucGw+CgoJKiBjb25maWcvYXZyL2F2ci1wcm90b3MuaCAoYXZyX2hhcmRfcmVnbm9fbW9kZV9vayk6IE5ldyBwcm90b3R5cGUuCgkqIGNvbmZpZy9hdnIvYXZyLmMgKG91dF9hZGpfZnJhbWVfcHRyLCBvdXRfc2V0X3N0YWNrX3B0cik6CglOZXcgZnVuY3Rpb25zLCBjb21tb24gY29kZSBtb3ZlZCBmcm9tIGZ1bmN0aW9uX3twcm9sb2d1ZSxlcGlsb2d1ZX0KCWFuZCBleHRlbmRlZCB0byBzdXBwb3J0IHRoZSAtbXRpbnktc3RhY2sgb3B0aW9uLgoJKGZ1bmN0aW9uX3Byb2xvZ3VlLCBmdW5jdGlvbl9lcGlsb2d1ZSk6IFVzZSB0aGVtLgoJVXNlIGxvOC9oaTggY29uc2lzdGVudGx5IGZvciBhc20gb3V0cHV0IHJlYWRhYmlsaXR5LgoJKGF2cl9oYXJkX3JlZ25vX21vZGVfb2spOiBOZXcgZnVuY3Rpb24uCgkqIGNvbmZpZy9hdnIvYXZyLmggKFRBUkdFVF9TV0lUQ0hFUyk6IEZpeCB0eXBvLiAgQWRkIC1tdGlueS1zdGFjay4KCShVTklUU19QRVJfV09SRCk6IERlZmluZSBhcyA0IChub3QgMSkgd2hlbiBjb21waWxpbmcgbGliZ2NjMi5jLgoJKEhBUkRfUkVHTk9fTU9ERV9PSyk6IENhbGwgdGhlIGF2cl9oYXJkX3JlZ25vX21vZGVfb2sgZnVuY3Rpb24uCgkqIGNvbmZpZy9hdnIvYXZyLm1kICgqbW92X3NwX3IpOiBBZGQgc3VwcG9ydCBmb3IgLW10aW55LXN0YWNrLgoJV3JpdGUgU1BIIGJlZm9yZSBTUEwuCgkoKm1vdnFpKTogTm8gbmVlZCB0byBkaXNhYmxlIGludGVycnVwdHMgZm9yIGp1c3Qgb25lICJvdXQiCglpbiBhbHRlcm5hdGl2ZSA1LiAgQ2hhbmdlIGxlbmd0aCBhdHRyaWJ1dGUgZnJvbSA0IHRvIDEuCgkqIGNvbmZpZy9hdnIvbGliZ2NjLlMgKF9fcHJvbG9ndWVfc2F2ZXNfXywgX19lcGlsb2d1ZV9yZXN0b3Jlc19fKToKCVdyaXRlIFNQSCBiZWZvcmUgU1BMLgoKMjAwMC0wNi0yNCAgQmVybmQgU2NobWlkdCAgPGJlcm5kc0BjeWdudXMuY28udWs+CgoJKiBydGwudGV4aSAoVmVjdG9yIE9wZXJhdGlvbnMpOiBOZXcgbm9kZS4KCShBcml0aG1ldGljKTogQWRkIHNzX3BsdXMsIHVzX3BsdXMsIHNzX21pbnVzLCB1c19taW51cy4KCShDb252ZXJzaW9ucyk6IEFkZCBzc190cnVuY2F0ZSwgdXNfdHJ1bmNhdGUuCgkqIHJ0bC5kZWYgKFZFQ19NRVJHRSwgVkVDX1NFTEVDVCwgVkVDX0NPTkNBVCwgVkVDX1JFT1JERVIsCglWRUNfQ09OU1QsIFZFQ19EVVBMSUNBVEUsIFNTX1BMVVMsIFNTX01JTlVTLCBTU19UUlVOQ0FURSwKCVVTX1RSVU5DQVRFKTogTmV3IHJ0eCBjb2Rlcy4KCSogbWFjaG1vZGUuZGVmOiBBZGQgdmVjdG9yIG1vZGVzLgoJKiBtYWNobW9kZS5oIChlbnVtIG1vZGVfY2xhc3MpOiBBZGQgTU9ERV9WRUNUT1JfSU5UIGFuZAoJTU9ERV9WRUNUT1JfRkxPQVQuCgkoSU5URUdFUl9NT0RFX1ApOiBDaGVjayBmb3IgTU9ERV9WRUNUT1JfSU5ULgoJKEZMT0FUX01PREVfUCk6IENoZWNrIGZvciBNT0RFX1ZFQ1RPUl9GTE9BVC4KCShWRUNUT1JfTU9ERV9QKTogTmV3LgoKMjAwMC0wNi0yNCAgTmF0aGFuIFNpZHdlbGwgIDxuYXRoYW5AY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGNwcC50ZXhpOiBDbGFyaWZ5ICNwcmFnbWEgR0NDIG5hbWVzcGFjZS4KCjIwMDAtMDYtMjQgIFBoaWxpcHAgVGhvbWFzICA8cHRob21hc0BzdXNlLmRlPgoKCSogYWNsb2NhbC5tNChBTV9HTlVfR0VUVEVYVCk6IElmIExJTkdVQVMgaXNuJ3Qgc2V0LCBidWlsZAoJYWxsIGNhdGFsb2dzIHNwZWNpZmllZCBpbiBBTExfTElOR1VBUy4KCSogY29uZmlndXJlOiBSZWJ1aWx0LgoKMjAwMC0wNi0yMyAgSmFrdWIgSmVsaW5layAgPGpha3ViQHJlZGhhdC5jb20+CgoJKiBjb25maWcvc3BhcmMvc3BhcmMubWQgKHJlbG9hZF9vdXRkaSsxKTogSGFuZGxlCglIT1NUX0JJVFNfUEVSX1dJREVfSU5UID09IDY0IGNhc2UgY29ycmVjdGx5LgoJKGFkZGRpM19pbnNuX3NwMzIrMSwgYWRkZGkzX2luc25fc3AzMisyLCBhbmRzaTMrMik6IExpa2V3aXNlLgoKMjAwMC0wNi0yMyAgR2VvZmZyZXkgS2VhdGluZyAgPGdlb2Zma0BjeWdudXMuY29tPgoKCSogYWxpYXMuYyAoZml4ZWRfc2NhbGFyX2FuZF92YXJ5aW5nX3N0cnVjdF9wKTogRG9uJ3QgZXhhbWluZQoJc3RydWN0IHZzLiBzY2FsYXItbmVzcyB3aGVuIC1mbm8tc3RyaWN0LWFsaWFzaW5nLgoKMjAwMC0wNi0yMyAgTmF0aGFuIFNpZHdlbGwgIDxuYXRoYW5AY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGNwcGxpYi5jIChzdHJ1Y3QgcHJhZ21hX2VudHJ5KTogTmV3IHN0cnVjdHVyZS4KCShwcmFnbWFfZGlzcGF0Y2gpOiBQcmFnbWEgZGlzcGF0Y2hlci4KCSh0b3BfcHJhZ21hcywgZ2NjX3ByYWdtYXMpOiBOZXcgc3RhdGljIHZhcmlhYmxlcy4KCShkb19wcmFnbWEpOiBVc2UgcHJhZ21hX2Rpc3BhdGNoLgoJKGRvX3ByYWdtYV9nY2MpOiBOZXcgcHJhZ21hIGhhbmRsZXIuCgkqIGNwcC50ZXhpOiBVcGRhdGUuCgoyMDAwLTA2LTIzICBKYWt1YiBKZWxpbmVrICA8amFrdWJAcmVkaGF0LmNvbT4KCgkqIGNhbGxzLmMgKGNvbXB1dGVfYXJndW1lbnRfYWRkcmVzc2VzKTogRm9yY2Ugc3RhY2sgc2xvdHMgaW50bwoJYWxpYXMgc2V0IDAuCgkqIGV4cHIuYyAoZW1pdF9wdXNoX2luc24pOiBGb3JjZSBwdXNoZXMgaW50byBhbGlhcyBzZXQgMC4KCjIwMDAtMDYtMjMgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgoJKiBjb25maWcvaWE2NC9pYTY0Lm1kIChwcmVkX3JlbF9tdXRleCk6IE9ubHkgdGFrZSBvbmUgcmVnaXN0ZXIuCgkqIGNvbmZpZy9pYTY0L2lhNjQuYyAoZW1pdF9wcmVkaWNhdGVfcmVsYXRpb25faW5mbyk6IEFkanVzdCB0byBtYXRjaC4KCjIwMDAtMDYtMjIgIEphc29uIE1lcnJpbGwgIDxqYXNvbkByZWRoYXQuY29tPgoKCSogdG9wbGV2LmMgKGNvbXBpbGVfZmlsZSk6IEFsd2F5cyBjYWxsIHRpbWV2YXJfcHJpbnQuCgkqIE1ha2VmaWxlLmluIChjYWxscy5vKTogRGVwZW5kIG9uIFRJTUVWQVJfSC4KCjIwMDAtMDYtMjIgIE5hdGhhbiBTaWR3ZWxsICA8bmF0aGFuQGNvZGVzb3VyY2VyeS5jb20+CgoJKiB2YXJhc20uYyAoY29uc3RhbnRfZGVzY3JpcHRvcik6IE1ha2UgY29udGVudHMgdW5zaWduZWQgY2hhci4KCShtYXJrX2NvbnN0X2hhc2hfZW50cnkpOiBBZGp1c3QuCgkoY29uc3RfaGFzaCk6IEp1c3QgaGFzaCB0aGUgY29kZSBvZiB1bmtub3duIG5vZGVzLgoJKGNvbXBhcmVfY29uc3RhbnRfMSk6IEFkanVzdCBmb3IgdW5zaWduZWQgY2hhci4KCVVzZSBsYW5ndWFnZSBzcGVjaWZpYyBleHBhbmRlciBvbiB1bmtub3duIG5vZGVzLgoJKHJlY29yZF9jb25zdGFudF8xKTogTGlrZXdpc2UuCgoyMDAwLTA2LTIxICBaYWNrIFdlaW5iZXJnICA8emFja0B3b2xlcnkuY3VtYi5vcmc+CgoJKiBjcHBmaWxlcy5jIChjcHBfbWFrZV9zeXN0ZW1faGVhZGVyKTogTmV3IGZ1bmN0aW9uLgoJKiBjcHBsaWIuaDogUHJvdG90eXBlIGl0LgoJKiBjcHBsaWIuYyAoZG9fbGluZSwgZG9fcHJhZ21hX3N5c3RlbV9oZWFkZXIpOiBVc2UgaXQuCgkqIGZpeC1oZWFkZXIuYyAocmVhZF9zY2FuX2ZpbGUpOiBVc2UgaXQuCgoJKiBmaXgtaGVhZGVyLmMgKGNoZWNrX21hY3JvX25hbWVzKTogQ2FzdCBzZWNvbmQgYXJnIG9mCgljcHBfZGVmaW5lZCB0byBjb25zdCB1bnNpZ25lZCBjaGFyICouCgkocmVhZF9zY2FuX2ZpbGUpOiBNYWtlIGdldGNoYXJfY2FsbCBjb25zdCB1bnNpZ25lZCBjaGFyLgoKMjAwMC0wNi0yMSAgWmFjayBXZWluYmVyZyAgPHphY2tAd29sZXJ5LmN1bWIub3JnPgoKCSogY3BwZmlsZXMuYzogSW5jbHVkZSBzcGxheS10cmVlLmgsIG5vdCBoYXNodGFiLmguCgkocmVkdW5kYW50X2luY2x1ZGVfcCwgbWFrZV9JSEFTSCwgaGFzaF9JSEFTSCwgZXFfSUhBU0gpOiBEZWxldGUuCgkoZGVzdHJveV9pbmNsdWRlX2ZpbGVfbm9kZSk6IE5ldy4KCShfY3BwX2luaXRfaW5jbHVkZV9oYXNoKTogUmVuYW1lIF9jcHBfaW5pdF9pbmNsdWRlX3RhYmxlLgoJQ3JlYXRlIGEgc3BsYXkgdHJlZSwgbm90IGEgaGFzaCB0YWJsZS4KCShvcGVuX2luY2x1ZGVfZmlsZSk6IExvb2sgdXAgdGhlIHBhdGggaW4gdGhlIGluY2x1ZGUgdGFibGUsCglkbyB0aGUgbXVsdGlwbGUgaW5jbHVkZSBvcHRpbWl6YXRpb24gaGVyZSwgZXRjLgoJKGNwcF9pbmNsdWRlZCk6IFdhbGsgdGhlIHBhdGguCgkoZmluZF9pbmNsdWRlX2ZpbGUpOiBKdXN0IHdhbGsgdGhlIHBhdGggY2FsbGluZwoJb3Blbl9pbmNsdWRlX2ZpbGUsIG9yIGNhbGwgaXQgZGlyZWN0bHkgZm9yIGFuIGFic29sdXRlIHBhdGguCgkoX2NwcF9mYWtlX2loYXNoKTogUmVuYW1lIF9jcHBfZmFrZV9pbmNsdWRlIGFuZCB1cGRhdGUgZm9yIG5ldwoJc2NoZW1lLgoJKHJlYWRfaW5jbHVkZV9maWxlKTogVXBkYXRlIGZvciBuZXcgc2NoZW1lLiAgRG9uJ3QgY2xvc2UgdGhlCglmaWxlIHVubGVzcyByZWFkaW5nIGZhaWxzLgoJKF9jcHBfZXhlY3V0ZV9pbmNsdWRlLCBjcHBfcmVhZF9maWxlKTogVHdlYWsgZm9yIG5ldyBzY2hlbWUuCgoJKiBjcHBoYXNoLmggKHN0cnVjdCBpaGFzaCwgTkVWRVJfUkVJTkNMVURFKTogRGVsZXRlLgoJKHN0cnVjdCBpbmNsdWRlX2ZpbGUpOiBOZXcuCgkoTkVWRVJfUkVSRUFELCBET19OT1RfUkVSRUFELCBDUFBfSU5fU1lTVEVNX0hFQURFUik6IE5ldwoJbWFjcm9zLgoJKENQUF9QRURBTlRJQywgQ1BQX1dUUkFESVRJT05BTCk6IFVwZGF0ZS4KCVVwZGF0ZSBwcm90b3R5cGVzLgoKCSogY3BwaW5pdC5jOiBJbmNsdWRlIHNwbGF5LXRyZWUuaC4KCShjcHBfcmVhZGVyX2luaXQsIGNwcF9jbGVhbnVwKTogVXBkYXRlLgoKCSogY3BwbGliLmggKHN0cnVjdCBjcHBfYnVmZmVyKTogQ2hhbmdlIGloYXNoIGZpZWxkIHRvCgknc3RydWN0IGluY2x1ZGVfZmlsZSAqaW5jJy4gIFJlbW92ZSBzeXN0ZW1faGVhZGVyX3AuCgkoc3RydWN0IGNwcF9yZWFkZXIpOiBDaGFuZ2UgYWxsX2luY2x1ZGVfZmlsZXMgdG8gYQoJc3RydWN0IHNwbGF5X3RyZWVfcyAqLgoKCSogY3BwbGV4LmM6IFVwZGF0ZSBhbGwgcmVmZXJlbmNlcyB0byBjcHBfYnVmZmVyLT5paGFzaCBhbmQvb3IKCWNwcF9idWZmZXItPnN5c3RlbV9oZWFkZXJfcC4KCShjcHBfcG9wX2J1ZmZlcik6IENsb3NlIGZpbGUgaGVyZSwgb25seSBpZiBET19OT1RfUkVSRUFELgoKCSogTWFrZWZpbGUuaW4gKFNQTEFZX1RSRUVfSCk6IE5ldyBtYWNyby4KCShjcHBmaWxlcy5vLCBjcHBpbml0Lm8pOiBVcGRhdGUgZGVwZW5kZW5jaWVzLgoKV2VkIEp1biAyMSAxMTowNTo0OCAyMDAwICBNYXJ0aW4gQnVjaGhvbHogPG1hcnRpbkB4ZW1hY3Mub3JnPgoKCSogaW52b2tlLnRleGkgKGcrKyk6ICJnKysiIGlzIG5vdCBhIHNjcmlwdCBhbnltb3JlLgoKMjAwMC0wNi0yMCAgSi4gRGF2aWQgQW5nbGluICA8ZGF2ZUBoaWF1bHkxLmhpYS5ucmMuY2E+CgoJKiBmdW5jdGlvbi5jIChyb3VuZF9kb3duKTogRGVsZXRlIG9ic29sZXRlIHByb3RvdHlwZS4KCgkqIHBhLmggKENQUF9TUEVDKTogQWRkIHdoaXRlc3BhY2UgYWZ0ZXIgLURfX1NURENfRVhUX18uCgoyMDAwLTA2LTIwICBaYWNrIFdlaW5iZXJnICA8emFja0B3b2xlcnkuY3VtYi5vcmc+CgoJKiBjb25maWd1cmUuaW46IFVzZSAndGVzdCBhID0gYicgbm90ICd0ZXN0IGEgPT0gYicuCgkqIGNvbmZpZ3VyZTogUmVnZW4uCgoJKiBNYWtlZmlsZS5pbiAoZml4LWhlYWRlcik6IExpbmsgd2l0aCAkKExJQlMpIG5vdCAkKEhPU1RfTElCUykuCgoJKiBNYWtlZmlsZS5pbjogUmVtb3ZlIGFsbCByZWZlcmVuY2VzIHRvIEhPU1RfSU5UTExJQlMuCgoJKiBjcHBsZXguYyAocGFyc2VfbmFtZSk6IERvbid0IHdhcm4gYWJvdXQgJCBpbiBpZGVudGlmaWVycyBpZgoJc2tpcHBpbmcuCgoyMDAwLTA2LTIwICBQaGlsaXBwIFRob21hcyAgPHB0aG9tYXNAc3VzZS5kZT4KCgkqIGNvbmZpZy9wYS9wYS5oKFRBUkdFVF9TV0lUQ0hFUyk6IFJlcXVpcmUgYmludXRpbHMgMi4xMCBvciBsYXRlcgoJZm9yIFBBIDIuMC4KCk1vbiBKdW4gMTkgMjM6MjY6NDAgMjAwMCAgSiJvcm4gUmVubmVja2UgPGFteWxhYXJAY3lnbnVzLmNvLnVrPgoKCSogVGFrZSBSRUdfSU5DIG5vdGVzIGludG8gYWNjb3VudC4KCjIwMDAtMDYtMTkgIFphY2sgV2VpbmJlcmcgIDx6YWNrQHdvbGVyeS5jdW1iLm9yZz4KCgkqIGMtcGFyc2UuaW4gKHVuZGVjbGFyZWRfdmFyaWFibGVfbm90aWNlKTogTW92ZWQgdG8gYy10eXBlY2suYy4KCShwcmltYXJ5OiBJREVOVElGSUVSKTogSnVzdCBjYWxsIGJ1aWxkX2V4dGVybmFsX3JlZi4KCSogYy1wYXJzZS55LCBjLXBhcnNlLmMsIG9iamMvb2JqYy1wYXJzZS55LCBvYmpjL29iamMtcGFyc2UuYzoKCVJlZ2VuZXJhdGUuCgkqIGMtbGV4LmMgKGxhc3RpZGRlY2wpOiBSZW1vdmUuCgkoeXlsZXgpOiBSZXBsYWNlIGFsbCBpbnN0YW5jZXMgb2YgbGFzdGlkZGVjbCB3aXRoIGxvY2FsCgl2YXJpYWJsZXMuCgoJKiBjLXR5cGVjay5jIChidWlsZF9leHRlcm5hbF9yZWYpOiBOZXcgZnVuY3Rpb24uICBUcmVhdCBkZWNscwoJd2l0aCBDX0RFQ0xfQU5USUNJUEFURUQgbW9zdGx5IHRoZSBzYW1lIGFzIG5vbmV4aXN0ZW50IGRlY2xzLgoJTG9vayB1cCB0aGUgZGVjbCBmcm9tIHRoZSBpZCBoZXJlLiAgQ2FsbCBsb29rdXBfb2JqY19pdmFyLgoJKiBjLWxhbmcuYyAobG9va3VwX29iamNfaXZhcik6IFN0dWIuCgkqIG9iamMvb2JqYy1hY3QuYyAobG9va3VwX29iamNfaXZhcik6IE5ldyBmdW5jdGlvbi4KCgkqIGMtdHJlZS5oOiBQcm90b3R5cGUgbG9va3VwX29iamNfaXZhciBhbmQgYnVpbGRfZXh0ZXJuYWxfcmVmLgoJKiBjLWxleC5oOiBEb24ndCBkZWNsYXJlIGxhc3RpZGRlY2wuCgoyMDAwLTA2LTE5ICBCZW5qYW1pbiBDaGVsZiAgPGNoZWxmQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjLWNvbW1vbi5oIChJRl9DT05EKTogQWRkZWQgZG9jdW1lbnRhdGlvbi4KCShUSEVOX0NMQVVTRSk6IExpa2V3aXNlLgoJKEVMU0VfQ0xBVVNFKTogTGlrZXdpc2UuCgkoV0hJTEVfQ09ORCk6IExpa2V3aXNlLgoJKFdISUxFX0JPRFkpOiBMaWtld2lzZS4KCShET19DT05EKTogTGlrZXdpc2UuCgkoRE9fQk9EWSk6IExpa2V3aXNlLgoJKFJFVFVSTl9FWFBSKTogTGlrZXdpc2UuCgkoRVhQUl9TVE1UX0VYUFIpOiBMaWtld2lzZS4KCShGT1JfSU5JVF9TVE1UKTogTGlrZXdpc2UuCgkoRk9SX0NPTkQpOiBMaWtld2lzZS4KCShGT1JfRVhQUik6IExpa2V3aXNlLgoJKEZPUl9CT0RZKTogTGlrZXdpc2UuCgkoU1dJVENIX0NPTkQpOiBMaWtld2lzZS4KCShTV0lUQ0hfQk9EWSk6IExpa2V3aXNlLgoJKENBU0VfTE9XKTogTGlrZXdpc2UuCgkoQ0FTRV9ISUdIKTogTGlrZXdpc2UuCgkoR09UT19ERVNUSU5BVElPTik6IExpa2V3aXNlLgoJKENPTVBPVU5EX0JPRFkpOiBMaWtld2lzZS4KCShBU01fQ1ZfUVVBTCk6IExpa2V3aXNlLgoJKEFTTV9TVFJJTkcpOiBMaWtld2lzZS4KCShBU01fT1VUUFVUUyk6IExpa2V3aXNlLgoJKEFTTV9JTlBVVFMpOiBMaWtld2lzZS4KCShBU01fQ0xPQkJFUlMpOiBMaWtld2lzZS4KCShERUNMX1NUTVRfREVDTCk6IExpa2V3aXNlLgoJKFNUTVRfRVhQUl9TVE1UKTogTGlrZXdpc2UuCgkoTEFCRUxfU1RNVF9MQUJFTCk6IExpa2V3aXNlLgoKCSogYy1jb21tb24uZGVmOiBBZGRlZCBkb2N1bWVuZXRpb24gZm9yIFNSQ0xPQywgRVhQUl9TVE1ULAoJQ09NUE9VTkRfU1RNVCwgREVDTF9TVE1ULCBJRl9TVE1ULCBGT1JfU1RNVCwgV0hJTEVfU1RNVCwgRE9fU1RNVCwKCVJFVFVSTl9TVE1ULCBCUkVBS19TVE1ULCBDT05USU5VRV9TVE1ULCBTV0lUQ0hfU1RNVCwgR09UT19TVE1ULAoJTEFCRUxfU1RNVCwgQVNNX1NUTVQsIFNDT1BFX1NUTVQsIENBU0VfTEFCRUwsIFNUTVRfRVhQUi4KCjIwMDAtMDYtMTkgIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIGNvbmZpZ3VyZS5pbiAoLS1lbmFibGUtY2hlY2tpbmcpOiBVcGRhdGUgLS1oZWxwIGRvYyB0byByZWZsZWN0CgluZXcgZGVmYXVsdHMuICBFbnN1cmUgJGFjX3NhdmVfSUZTIGlzIHNldCBiZWZvcmUgJElGUyBpcyBjaGFuZ2VkLgoKU3VuIEp1biAxOCAyMTo0MjoxNSAyMDAwICBSaWNoYXJkIEtlbm5lciAgPGtlbm5lckB2bHNpMS51bHRyYS5ueXUuZWR1PgoKCSogZ2NzZS5jIChpbnNlcnRfaW5zbl9lbmRfYmIpOiBBbHdheXMgcHV0IGFmdGVyIE5PVEVfSU5TTl9CQVNJQ19CTE9DSy4KCgkqIGZ1bmN0aW9uLmMgKHB1dF92YXJfaW50b19zdGFjayk6IERvbid0IHJlZmVyZW5jZSBERUNMXyBmaWVsZHMKCWlmIGlucHV0IGlzIGEgU0FWRV9FWFBSLgoJVXNlIHNldF9tZW1fYXR0cmlidXRlcyBpbiBDT01QTEVYIGNhc2UuCgoyMDAwLTA2LTE4ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEBjeWdudXMuY29tPgoKCSogY29uZmlnL2lhNjQvaWE2NC1wcm90b3MuaCAocHJvY2Vzc19mb3JfdW53aW5kX2RpcmVjdGl2ZSk6IERlY2xhcmUuCgkoaWE2NF9maWxlX3N0YXJ0KTogRGVjbGFyZS4KCSogY29uZmlnL2lhNjQvaWE2NC5oIChBRERMX1JFR05PX1ApOiBEb24ndCBjb21wYXJlIHVuc2lnbmVkIGFnYWluc3QgMC4KCShHUl9SRUdOT19QKTogTGlrZXdpc2UuCgkqIGNvbmZpZy9pYTY0L2lhNjQuYzogTWFueSBwcm90b3R5cGVzLgoJKGlhNjRfcmVnX251bWJlcnMpOiBDb25zdGlmeS4KCShpYTY0X2lucHV0X3JlZ19uYW1lcywgaWE2NF9sb2NhbF9yZWdfbmFtZXMpOiBMaWtld2lzZS4KCShpYTY0X3NlY3Rpb25fdGhyZXNob2xkKTogTWFrZSB1bnNpZ25lZC4KCShpYTY0X3ByaW50X29wZXJhbmQpOiBDb25zdGlmeS4KCShmaXhfcmFuZ2UpOiBDb25zdGlmeS4KCShpYTY0X2luaXRfYnVpbHRpbnMpOiBEb24ndCBjb21wYXJlIHNpZ25lZCB2cyB1bnNpZ25lZC4KCShpYTY0X2V4cGFuZF9idWlsdGluKTogTGlrZXdpc2UuCgoJKiBjb25maWcvaWE2NC9pYTY0LmggKEVYVFJBX0NPTlNUUkFJTlQpOiBOZXcuCgkoQ09OU1RSQUlOVF9PS19GT1JfUSk6IE5ldy4KCSogY29uZmlnL2lhNjQvaWE2NC5tZCAobW92ZGlfaW50ZXJuYWwpOiBVc2UgUSBmb3IgZnA8LT5tZW0uCgkobW92c2ZfaW50ZXJuYWwsIG1vdmRmX2ludGVybmFsKTogTGlrZXdpc2UuCgkoY21vdmRpX2ludGVybmFsKTogUmV3cml0ZSBzbyB0aGF0IGNvbnN0cmFpbnRzIGFuZCBwcmVkaWNhdGVzIG1hdGNoOwoJc2ltcGxpZnkgc3BsaXR0ZXJzLgoJKGNtb3ZzaV9pbnRlcm5hbCk6IExpa2V3aXNlLgoKCSogY29uZmlnL2lhNjQvaWE2NC5oIChBU01fU1BFQyk6IEFkZCAteCBmb3IgZ2FzLgoJKEFTTV9GSUxFX1NUQVJUKTogTmV3LgoJKiBjb25maWcvaWE2NC9pYTY0LmMgKGlhNjRfZmlsZV9zdGFydCk6IE5ldy4KCShydHhfbmVlZHNfYmFycmllcik6IEhhbmRsZSBwcmVkLnJlbC5tdXRleC4KCShlbWl0X3ByZWRpY2F0ZV9yZWxhdGlvbl9pbmZvKTogTmV3LgoJKiBjb25maWcvaWE2NC9pYTY0Lm1kIChwcmVkX3JlbF9tdXRleCk6IE5ldy4KCSogY29uZmlnL2lhNjQvbGludXguaCAoQVNNX1NQRUMpOiBEZWZpbmUuCgkqIGNvbmZpZy9pYTY0L3N5c3Y0LmggKEFTTV9GSUxFX1NUQVJUKTogRGVmaW5lLgoKCSogY29uZmlnL2lhNjQvaWE2NC5jIChpYTY0X2VuY29kZV9zZWN0aW9uX2luZm8pOiBGaXggdGhpbmtvCglmaWx0ZXJpbmcgZ2xvYmFsIHJlZ2lzdGVyIHZhcmlhYmxlcy4KCjIwMDAtMDYtMTggIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIGMtY29tbW9uLmMgKGFkZF9jX3RyZWVfY29kZXMpOiBGaXggZGVmaW5pdGlvbiBmb3IgdHJhZGl0aW9uYWwgQy4KCjIwMDAtMDYtMTcgIE1pY2hhZWwgTWVpc3NuZXIgIDxtZWlzc25lckByZWRoYXQuY29tPgoKCSogZ2NjLmMgKGRvX3NwZWNfMSwgJyV2MycgY2FzZSk6IERvIG5vdCBhYm9ydCBpZiBwYXRjaCBsZXZlbCBpcwoJbm90IHByZXNlbnQgYW5kIHRoZXJlIGlzIGEgZmllbGQgYWZ0ZXIgYSAnLScuCgoyMDAwLTA2LTE3ICBCcnVjZSBLb3JiICA8YmtvcmJAZ251Lm9yZz4KCgkqIGZpeGluYy9jaGVjay50cGw6ICBmaW5pc2ggdGhlIGltcGxlbWVudGF0aW9uIG9mIG11bHRpcGxlIHRlc3RzCglmb3IgYSBzaW5nbGUgZml4CgkqIGZpeGluYy9pbmNsaGFjay5kZWYoY3RybF9xdW90ZXNfZGVmKTogYWRkIGEgc2Vjb25kIHRlc3QKCShpb19xdW90ZXNfZGVmKTogYWRkIGEgc2Vjb25kIHRlc3QKCSh2YXJpb3VzKTogcmVvcmRlciBgZmlsZXMnIHNvIHRoYXQgImxpbWl0cy5oIiBpcyBuZXZlciBmaXJzdAoJKiBmaXhpbmMvdGVzdHMvYmFzZS8qOiB1cGRhdGUgdGhlIHRlc3Rpbmcgb3V0cHV0CgpTYXQgSnVuIDE3IDEwOjMzOjU5IDIwMDAgIFJpY2hhcmQgS2VubmVyICA8a2VubmVyQHZsc2kxLnVsdHJhLm55dS5lZHU+CgoJKiBnY2MudGV4aTogUmVtb3ZlIHJlZmVyZW5jZSB0byBzdHVwaWQuYy4KCjIwMDAtMDYtMTYgIEJlbmphbWluIENoZWxmICA8Y2hlbGZAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGMtY29tbW9uLmMgKGNfdHJlZV9jb2RlX3R5cGUpOiBOZXcgYXJyYXkuCgkoY190cmVlX2NvZGVfbGVuZ3RoKTogTGlrZXdpc2UuCgkoY190cmVlX2NvZGVfbmFtZSk6IExpa2V3aXNlLgoJKGFkZF9jX3RyZWVfY29kZXMpOiBOZXcgZnVuY3Rpb24uCgoJKiBjLWNvbW1vbi5oIChhZGRfY190cmVlX2NvZGVzKTogRGVjbGFyZS4KCShlbnVtIGNfdHJlZV9jb2RlKTogTmV3IGVudW0uCgoJKiBjLWxleC5jIChpbml0X3BhcnNlKTogQWRkZWQgY2FsbCB0byBhZGRfY190cmVlX2NvZGVzLgoKMjAwMC0wNi0xNiAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogZml4aW5jL2luY2xoYWNrLmRlZiAoY3RybF9xdW90ZXNfZGVmLCBpb19xdW90ZXNfZGVmKTogTW9kaWZ5CglzZWxlY3QgcGF0dGVybiB0byBhbHNvIG1hdGNoIG1hY3JvIGRlZnMgd2l0aCBvbmx5IG9uZSBhcmd1bWVudC4KClRodSBKdW4gMTUgMTg6NTY6MTIgMjAwMCAgSmVmZnJleSBBIExhdyAgKGxhd0BjeWdudXMuY29tKQoKCSogaTM4Ni5tZDogQ3JlYXRlIG5ldyBbcmlnaHQsbGVmdF0gcm90YXRlIGFuZCByaWdodCBzaGlmdAoJcGF0dGVybnMgdG8gb3B0aW1pemUgc2hpZnQgYnkgMSBiaXQgZm9yIGNlcnRhaW4gaWEzMiBwcm9jZXNzb3JzLgoJVXBkYXRlIHBhdHRlcm5zIHdoaWNoIHBlcmZvcm0gbGVmdCBzaGlmdHMgdG8gb3B0aW1pemUgc2hpZnQgYnkKCTEgYml0IGZvciBjZXJ0YWluIGlhMzIgcHJvY2Vzc29ycy4KCSogaTM4Ni5jIChjb25zdF9pbnRfMV9vcGVyYW5kKTogTmV3IHByZWRpY2F0ZS4KCSogaTM4Ni5oIChQUkVESUNBVEVfQ09ERVMpOiBIYW5kbGUgY29uc3RfaW50XzFfb3BlcmFuZC4KCSogaTM4Ni1wcm90b3MuaCAoY29uc3RfaW50XzFfb3BlcmFuZCk6IFByb3RvdHlwZS4KCldlZCBKdW4gMTQgMjM6NDY6MjYgMjAwMCAgSiJvcm4gUmVubmVja2UgPGFteWxhYXJAY3lnbnVzLmNvLnVrPgoKCSogbWlwcy5jIChtYWNoaW5lX2RlcGVuZGVudF9yZW9yZyk6IEZpeCBicmFjZXMgZm9yIG5lc3RlZCBpZi4KCjIwMDAtMDYtMTQgIEdlb2ZmIEtlYXRpbmcgIDxnZW9mZmtAY3lnbnVzLmNvbT4KCgkqIHJzNjAwMC5jICh0b2NfaGFzaF9lcSk6IFVzZSBDT0RFX0xBQkVMX05VTUJFUiB0byBjb21wYXJlCglMQUJFTF9SRUZzLgoKMjAwMC0wNi0xNCAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAY3lnbnVzLmNvbT4KCgkqIGNvbmZsaWN0LmMgKGNvbmZsaWN0X2dyYXBoX2NvbXB1dGUpOiBEb24ndCBsb29rIGZvciBSRUdfSU5DLgoKCSogY29uZmlnL2lhNjQvaWE2NC5jIChpYTY0X3NldHVwX2luY29taW5nX3ZhcmFyZ3MpOiBEb24ndCBlbWl0CglhdXRvLWluYyBjb2RlLgoKCSogcHJpbnQtcnRsLmMgKHByaW50X3J0eCk6IEVtaXQgc3BhY2UgYmVmb3JlIG1lbSBhbGlhcyBzZXQuCgoyMDAwLTA2LTE0ICBEYXZpZCBFZGVsc29obiAgPGVkZWxzb2huQGdudS5vcmc+CgoJKiByczYwMDAuYyAoZXhwYW5kX2Jsb2NrX21vdmUpOiBGaXggdHlwbyBpbiBlYXJsaWVyIGNoYW5nZS4KCShwcmludF9vcGVyYW5kKTogUmVtb3ZlIHVudXNlZCB2YXJpYWJsZXMgbmVnIGFuZCBvcC4KCSh0b2NfaGFzaF9tYXJrX2VudHJ5KTogRml4IHByb3RvdHlwZS4KCjIwMDAtMDYtMTQgIEJlbmphbWluIENoZWxmICA8Y2hlbGZAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGMtY29tbW9uLmggKElGX0NPTkQpOiBNb3ZlZCBoZXJlIGZyb20gY3AvY3AtdHJlZS5oLgoJKFRIRU5fQ0xBVVNFKTogTGlrZXdpc2UuCgkoRUxTRV9DTEFVU0UpOiBMaWtld2lzZS4KCShXSElMRV9DT05EKTogTGlrZXdpc2UuCgkoV0hJTEVfQk9EWSk6IExpa2V3aXNlLgoJKERPX0NPTkQpOiBMaWtld2lzZS4KCShET19CT0RZKTogTGlrZXdpc2UuCgkoUkVUVVJOX0VYUFIpOiBMaWtld2lzZS4KCShFWFBSX1NUTVRfRVhQUik6IExpa2V3aXNlLgoJKEZPUl9JTklUX1NUTVQpOiBMaWtld2lzZS4KCShGT1JfQ09ORCk6IExpa2V3aXNlLgoJKEZPUl9FWFBSKTogTGlrZXdpc2UuCgkoRk9SX0JPRFkpOiBMaWtld2lzZS4KCShTV0lUQ0hfQ09ORCk6IExpa2V3aXNlLgoJKFNXSVRDSF9CT0RZKTogTGlrZXdpc2UuCgkoQ0FTRV9MT1cpOiBMaWtld2lzZS4KCShDQVNFX0hJR0gpOiBMaWtld2lzZS4KCShHT1RPX0RFU1RJTkFUSU9OKTogTGlrZXdpc2UuCgkoQ09NUE9VTkRfQk9EWSk6IExpa2V3aXNlLgoJKEFTTV9DVl9RVUFMKTogTGlrZXdpc2UuCgkoQVNNX1NUUklORyk6IExpa2V3aXNlLgoJKEFTTV9PVVRQVVRTKTogTGlrZXdpc2UuCgkoQVNNX0lOUFVUUyk6IExpa2V3aXNlLgoJKEFTTV9DTE9CQkVSUyk6IExpa2V3aXNlLgoJKERFQ0xfU1RNVF9ERUNMKTogTGlrZXdpc2UuCgkoU1RNVF9FWFBSX1NUTVQpOiBMaWtld2lzZS4KCShMQUJFTF9TVE1UX0xBQkVMKTogTGlrZXdpc2UuCgkoU0NPUEVfQkVHSU5fUCk6IExpa2V3aXNlLgoJKFNDT1BFX0VORF9QKTogTGlrZXdpc2UuCgkoU0NPUEVfU1RNVF9CTE9DSyk6IExpa2V3aXNlLgoJKFNDT1BFX05VTExJRklFRF9QKTogTGlrZXdpc2UuCgkoU0NPUEVfTk9fQ0xFQU5VUFNfUCk6IExpa2V3aXNlLgoJKFNDT1BFX1BBUlRJQUxfUCk6IExpa2V3aXNlLgoJKEFTTV9WT0xBVElMRV9QKTogTGlrZXdpc2UuCgkoU1RNVF9MSU5FTk8pOiBMaWtld2lzZS4KCShTVE1UX0xJTkVOT19GT1JfRk5fUCk6IExpa2V3aXNlLgoKCSogYy1jb21tb24uZGVmOiBOZXcgZmlsZS4gQWRkZWQgU1JDTE9DLCBTSVpFT0ZfRVhQUiwgQVJST1dfRVhQUiwKCUFMSUdOT0ZfRVhQUiwgRVhQUl9TVE1ULCBDT01QT1VORF9TVE1ULCBERUNMX1NUTVQsIElGX1NUTVQsCglGT1JfU1RNVCwgV0hJTEVfU1RNVCwgRE9fU1RNVCwgUkVUVVJOX1NUTVQsIEJSRUFLX1NUTVQsCglDT05USU5VRV9TVE1ULCBTV0lUQ0hfU1RNVCwgR09UT19TVE1ULCBMQUJFTF9TVE1ULCBBU01fU1RNVCwKCVNDT1BFX1NUTVQsIENBU0VfTEFCRUwsIFNUTVRfRVhQUi4KCgkqIGdlbmNoZWNrLmMgKHRyZWVfY29kZXNbXSk6IEFkZGVkICcjaW5jbHVkZSAiYy1jb21tb24uZGVmIicuCgoyMDAwLTA2LTE0ICBEYXZpZCBPJ0JyaWVuICA8b2JyaWVuQEZyZWVCU0Qub3JnPgoKCSogZ2NjLmMgKG1haW4pOiBRdWlldCBjb21waWxlciB3YXJuaW5ncy4gIGFyZ3YgaXMgYXNzdW1lZCB0byBiZQoJd3JpdGFibGUgaW4gcGFydHMgb2YgdGhlIEdDQyBjb2RlLgoKCSogY29uZmlnL2VsZm9zLmggKEFTTV9HRU5FUkFURV9JTlRFUk5BTF9MQUJFTCk6IE1ha2UgcHJpbnRmCglzcGVjaWZpY2F0aW9uIG1hdGNoIGNhc3QuCgpXZWQgSnVuIDE0IDA5OjI1OjU3IDIwMDAgIEplZmZyZXkgQSBMYXcgIChsYXdAY3lnbnVzLmNvbSkKCgkqIGNvbmZpZ3VyZS5pbjogUmV2ZXJ0IEFDX1RZUEVfR0VUR1JPVVBTIHBhdGNoIGZyb20gSnVuZSAxMy4KCSogY29uZmlndXJlLCBjb25maWcuaW46IFJlYnVpbHQuCgkqIHN5cy1wcm90b3MuaDogU2ltaWxhcmx5LgoKV2VkIEp1biAxNCAwMzozOTo1OCBFRFQgMjAwMCAgSm9obiBXZWhsZSAgKGpvaG5AZmVpdGguY29tKQoKCSogaWZjdnQuYyAoRURHRV9DT01QTEVYKTogTW92ZSBkZWZpbml0aW9uIC4uLgoJKiBiYXNpYy1ibG9jay5oIChFREdFX0NPTVBMRVgpOiAuLi4gaGVyZS4KCgkqIGxvb3AuYyAoY2hlY2tfZGJyYV9sb29wKTogU3BlY2lmeSB0aGUgcmVnaXN0ZXIgd2hlbgoJZ2VuZXJhdGluZyBSRUdfTk9OTkVHIG5vdGVzIGFuZCBkb24ndCBnZW5lcmF0ZSBkdXBsaWNhdGVzLgoKMjAwMC0wNi0xMyAgSmFrdWIgSmVsaW5layAgPGpha3ViQHJlZGhhdC5jb20+CgoJKiB0cmVlLmggKFRZUEVfVVNFUl9BTElHTiwgREVDTF9VU0VSX0FMSUdOKTogRGVmaW5lLgoJKHN0cnVjdCB0cmVlX3R5cGUsIHN0cnVjdCB0cmVlX2RlY2wpOiBBZGQgdXNlcl9hbGlnbiBtZW1iZXIuCgkqIHN0b3ItbGF5b3V0LmMgKGxheW91dF9kZWNsKTogU2V0IERFQ0xfVVNFUl9BTElHTi4KCShwbGFjZV91bmlvbl9maWVsZCk6IElmIEJJR0dFU1RfRklFTERfQUxJR05NRU5UIGlzIGRlZmluZWQKCWFuZCBERUNMX1VTRVJfQUxJR04gMCwgY2FwIGFsaWdubWVudCB0byB0aGlzIHZhbHVlLgoJKHBsYWNlX2ZpZWxkKTogTGlrZXdpc2UuCgkoZmluYWxpemVfdHlwZV9zaXplKTogU2V0IFRZUEVfVVNFUl9BTElHTi4KCShsYXlvdXRfdHlwZSk6IExpa2V3aXNlLgoJKGluaXRpYWxpemVfc2l6ZXR5cGVzKTogTGlrZXdpc2UuCgkqIGMtY29tbW9uLmMgKGRlY2xfYXR0cmlidXRlcyk6IFNldCBUWVBFX1VTRVJfQUxJR04gcmVzcC4KCURFQ0xfVVNFUl9BTElHTiB0byAxLgoJKiBjLWRlY2wuYyAoZHVwbGljYXRlX2RlY2xzKTogU2V0IERFQ0xfVVNFUl9BTElHTi4KCSh4ZmVyX3RhZyk6IFNldCBUWVBFX1VTRVJfQUxJR04uCgkoZmluaXNoX3N0cnVjdCk6IFNldCBERUNMX1VTRVJfQUxJR04gcmVzcC4gVFlQRV9VU0VSX0FMSUdOLgoJKGZpbmlzaF9lbnVtKTogTGlrZXdpc2UuCgkqIHN0bXQuYyAoZXhwYW5kX2RlY2wpOiBTZXQgREVDTF9VU0VSX0FMSUdOLgoJKGV4cGFuZF9hbm9uX3VuaW9uX2RlY2wpOiBMaWtld2lzZS4KCSogdHJlZS5jIChtYWtlX25vZGUpOiBTZXQgREVDTF9VU0VSX0FMSUdOIHJlc3AuIFRZUEVfVVNFUl9BTElHTi4KCShidWlsZF9pbmRleF90eXBlKTogU2V0IFRZUEVfVVNFUl9BTElHTi4KCShidWlsZF9yYW5nZV90eXBlKTogTGlrZXdpc2UuCgkoYnVpbGRfY29tbW9uX3RyZWVfbm9kZXNfMik6IExpa2V3aXNlLgoJKiB0bS50ZXhpIChCSUdHRVNUX0ZJRUxEX0FMSUdOTUVOVCk6IERvY3VtZW50IHRoZSBjaGFuZ2VkIG1lYW5pbmcuCgoyMDAwLTA2LTEzICBBbmRyZWFzIEphZWdlciAgPGFqQHN1c2UuZGU+CgoJKiBjb25maWd1cmUuaW46IFVzZSAtLWVuYWJsZS1jaGVja2luZz1taXNjLHRyZWUsZ2MgYnkgZGVmYXVsdCBpZgoJbm8gLS1lbmFibGUtY2hlY2tpbmcgb3B0aW9uIGlzIGdpdmVuIGFuZCBmb3IKCS0tZW5hYmxlLWNoZWNraW5nPXllcy4KCSogY29uZmlndXJlOiBSZWJ1aWx0LgoKMjAwMC0wNi0xMyAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAY3lnbnVzLmNvbT4KCgkqIGxpYmdjYzIuYyAoaWE2NF90aHJvd19oZWxwZXIpOiBVc2UgX19idWlsdGluX3JldHVybl9hZGRyZXNzLgoJKF9fdGhyb3cpOiBEb24ndCBwYXNzIHRoZSBhZGRyZXNzIG9mIGEgbGFiZWwuCgoJKiBjb25maWcvaWE2NC9pYTY0LmMgKGlhNjRfY29tcHV0ZV9mcmFtZV9zaXplKTogVXNlCgljdXJyZW50X2Z1bmN0aW9uX2lzX2xlYWYuCgkoaWE2NF9leHBhbmRfcHJvbG9ndWUpOiBMaWtld2lzZS4gIE1vZGlmeSByZXR1cm5fYWRkcmVzc19wb2ludGVyX3J0eAoJaW5zdGVhZCBvZiByZWdfbmFtZXNbUkVUVVJOX0FERFJFU1NfUkVHTlVNXS4KCShpYTY0X2luaXRfbWFjaGluZV9zdGF0dXMpOiBSZXNldCByZXR1cm5fYWRkcmVzc19wb2ludGVyX3J0eC4KCSogY29uZmlnL2lhNjQvaWE2NC5oIChSRVRVUk5fQUREUkVTU19QT0lOVEVSX1JFR05VTSk6IFJlbmFtZQoJZnJvbSBSRVRVUk5fQUREUkVTU19SRUdOVU0uICBVcGRhdGUgYWxsIHVzZXMuCgkoUkVUVVJOX0FERFJfUlRYKTogVXNlIHJldHVybl9hZGRyZXNzX3BvaW50ZXJfcnR4OyByZXR1cm4KCXplcm8gaW5zdGVhZCBvZiBudWxsIG9uIGZhaWx1cmUuCgkoRUxJTUlOQUJMRV9SRUdTKTogQWRkIHJhLT5iMCBlbGltaW5hdGlvbi4KCShDQU5fRUxJTUlOQVRFKTogVXBkYXRlIGFjY29yZGluZ2x5LgoJKElOSVRJQUxfRUxJTUlOQVRJT05fT0ZGU0VUKTogTGlrZXdpc2UuCgkoUkVHSVNURVJfTkFNRVMpOiBVc2UgYW4gaWxsZWdhbCBhc3NlbWJsZXIgbmFtZSBmb3IKCVJFVFVSTl9BRERSRVNTX1BPSU5URVJfUkVHTlVNLgoKMjAwMC0wNi0xMyAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAY3lnbnVzLmNvbT4KCgkqIGNvbmZpZy9pYTY0L2lhNjQuaCAoZW51bSByZWdfY2xhc3MpOiBSZW1vdmUgRlJfSU5UX1JFR1MsIEZSX0ZQX1JFR1MsCglHUl9BTkRfRlJfSU5UX1JFR1MsIEdSX0FORF9GUl9GUF9SRUdTLgoJKFJFR19DTEFTU19OQU1FUyk6IExpa2V3aXNlLgoJKFJFR19DTEFTU19DT05URU5UUyk6IExpa2V3aXNlLgoJKEZSX0ZQX1JFR05PX1AsIEZSX0lOVF9SRUdOT19QKTogUmVtb3ZlLgoJKEhBUkRfUkVHTk9fTU9ERV9PSyk6IFJlbW92ZSByZWZlcmVuY2VzIHRvIHRoZW0uCgkoUkVHTk9fUkVHX0NMQVNTKTogTGlrZXdpc2UuCgkoUkVHX0NMQVNTX0ZST01fTEVUVEVSKTogTGlrZXdpc2UuCgkoQ0xBU1NfTUFYX05SRUdTKTogTGlrZXdpc2UuCgkoUkVHSVNURVJfTU9WRV9DT1NUKTogTGlrZXdpc2UuCgkqIGNvbmZpZy9pYTY0L2lhNjQuYyAoaWE2NF9zZWNvbmRhcnlfcmVsb2FkX2NsYXNzKTogTGlrZXdpc2UuCgkqIGNvbmZpZy9pYTY0L2lhNjQubWQgKCopOiBSZXBsYWNlICJlIiBjb25zdHJhaW50cyB3aXRoICJmIi4KCShtb3ZxaV9pbnRlcm5hbCk6IFNwZWNpYWwgY2FzZSBtb3ZlcyBmcm9tIHplcm8uCgkobW92aGlfaW50ZXJuYWwsIG1vdnNpX2ludGVybmFsKTogTGlrZXdpc2UuCgkobW92ZGlfaW50ZXJuYWwpOiBMaWtld2lzZS4gIEZpbGwgb3V0ICJmIiBjb25zdHJhaW50cy4KCShtb3ZzZl9pbnRlcm5hbCk6IEZpbGwgb3V0ICJyIiBjb25zdHJhaW50cy4KCShtb3ZkZl9pbnRlcm5hbCk6IExpa2V3aXNlLgoKMjAwMC0wNi0xMyAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAY3lnbnVzLmNvbT4KCgkqIGZsb3cuYyAoaW5zbl9kZWFkX3ApOiBLZWVwIHNldHMgdG8gUElDX09GRlNFVF9UQUJMRV9SRUdOVU0KCWFsaXZlIGJlZm9yZSByZWxvYWQuCgoJKiBoYWlmYS1zY2hlZC5jIChzdHJ1Y3QgZGVwcyk6IEFkZCBpbl9wb3N0X2NhbGxfZ3JvdXBfcC4KCShhZGRfZGVwZW5kZW5jZSk6IEhhbmRsZSBub3RlcyBiZXR3ZWVuIFNDSEVEX0dST1VQX1AgaW5zbnMuCgkocmVtb3ZlX2RlcGVuZGVuY2UpOiBBbHdheXMgZGVmaW5lLgoJKHNldF9zY2hlZF9ncm91cF9wKTogTmV3LgoJKHNjaGVkX2FuYWx5emVfMik6IFVzZSBpdC4KCShzY2hlZF9hbmFseXplX2luc24pOiBEb24ndCBzcGVjaWFsLWNhc2UgbmFrZWQgdXNlcy4gIExvb2sgZm9yCglhbmQgZXh0ZW5kIGluX3Bvc3RfY2FsbF9ncm91cF9wLgoJKHNjaGVkX2FuYWx5emUpOiBDbGVhciBzdGFsZSBTQ0hFRF9HUk9VUF9QLiAgU2V0IGluX3Bvc3RfY2FsbF9ncm91cF9wLgoJKGluaXRfZGVwcyk6IENsZWFyIGluX3Bvc3RfY2FsbF9ncm91cF9wLgoKMjAwMC0wNi0xMyAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAY3lnbnVzLmNvbT4KCgkqIGNvbWJpbmUuYyAoc3Vic3QpOiBVc2UgQ0xBU1NfQ0FOTk9UX0NIQU5HRV9NT0RFIGFuZAoJQ0xBU1NfQ0FOTk9UX0NIQU5HRV9NT0RFX1AgaW5zdGVhZCBvZiBDTEFTU19DQU5OT1RfQ0hBTkdFX1NJWkUKCWFuZCBoYXJkLWNvZGVkIHRlc3RzLgoJKHNpbXBsaWZ5X3NldCk6IExpa2V3aXNlLgoJKGdlbl9sb3dwYXJ0X2Zvcl9jb21iaW5lKTogTGlrZXdpc2UuCgkqIGVtaXQtcnRsLmMgKGdlbl9sb3dwYXJ0X2NvbW1vbik6IExpa2V3aXNlLgoJKiBnbG9iYWwuYyAoZmluZF9yZWcpOiBMaWtld2lzZS4KCSogbG9jYWwtYWxsb2MuYyAoZmluZF9mcmVlX3JlZyk6IExpa2V3aXNlLgoJKiByZWNvZy5jIChyZWdpc3Rlcl9vcGVyYW5kKTogTGlrZXdpc2UuCgkqIHJlZ2NsYXNzLmMgKGluaXRfcmVnX3NldHNfMSk6IExpa2V3aXNlLgoJKHJlY29yZF9vcGVyYW5kX2Nvc3RzLCByZWdjbGFzcyk6IExpa2V3aXNlLgoJKiByZWxvYWQuYyAocHVzaF9yZWxvYWQpOiBMaWtld2lzZS4KCSogcmVsb2FkMS5jIChjaG9vc2VfcmVsb2FkX3JlZ3MpOiBMaWtld2lzZS4KCSogZmxvdy5jIChtYXJrX3VzZWRfcmVncyk6IENvbmRpdGlvbmFsbHkgc2V0IFJFR19DSEFOR0VTX01PREUuCgkqIGxvY2FsLWFsbG9jLmMgKHN0cnVjdCBxdHkpOiBSZW5hbWUgY2hhbmdlc19zaXplIHRvIGNoYW5nZXNfbW9kZS4KCVVwZGF0ZSBhbGwgcmVmZXJlbmNlcy4KCSogcmVncy5oIChzdHJ1Y3QgcmVnX2luZm9fZGVmKTogTGlrZXdpc2UuCgkoUkVHX0NIQU5HRVNfTU9ERSk6IFJlbmFtZSBmcm9tIFJFR19DSEFOR0VTX1NJWkUuCgkqIHRtLnRleGkgKENMQVNTX0NBTk5PVF9DSEFOR0VfTU9ERSk6IERvY3VtZW50LgoJKENMQVNTX0NBTk5PVF9DSEFOR0VfTU9ERV9QKTogTGlrZXdpc2UuCgoJKiBjb25maWcvYWxwaGEvYWxwaGEuaCAoQ0xBU1NfQ0FOTk9UX0NIQU5HRV9NT0RFKTogUmVuYW1lLgoJKENMQVNTX0NBTk5PVF9DSEFOR0VfTU9ERV9QKTogTmV3LgoJKiBjb25maWcvbWlwcy9taXBzLmg6IExpa2V3aXNlLgoJKiBjb25maWcvcGEvcGEzMi1yZWdzLmg6IExpa2V3aXNlLgoJKiBjb25maWcvcGEvcGE2NC1yZWdzLmg6IExpa2V3aXNlLgoJKiBjb25maWcvcnM2MDAwL3JzNjAwMC5oOiBMaWtld2lzZS4KCSogY29uZmlnL3NoL3NoLmg6IExpa2V3aXNlLgoJKiBjb25maWcvaWE2NC9pYTY0LmggKENMQVNTX0NBTk5PVF9DSEFOR0VfTU9ERSk6IE5ldy4KCShDTEFTU19DQU5OT1RfQ0hBTkdFX01PREVfUCk6IE5ldy4KCSogY29uZmlnL2F2ci9hdnIuaCAoQ0xBU1NfQ0FOTk9UX0NIQU5HRV9TSVpFKTogUmVtb3ZlIGRlYWQgY29kZS4KCSogY29uZmlnL2QzMHYvZDMwdi5oOiBMaWtld2lzZS4KCjIwMDAtMDYtMTMgIEouIERhdmlkIEFuZ2xpbiAgPGRhdmVAaGlhdWx5MS5oaWEubnJjLmNhPgoKCSogY29uZmlndXJlLmluOiBBZGQgQUNfVFlQRV9HRVRHUk9VUFMgdGVzdC4KCSogc3lzLXByb3Rvcy5oOiBVc2UgR0VUR1JPVVBTX1QgKiBmb3Igc2Vjb25kIGFyZyBvZiBnZXRncm91cHMuCgkqIGNvbmZpZ3VyZTogUmVidWlsdC4KCSogY29uZmlnLmluOiBSZWJ1aWx0LgoKMjAwMC0wNi0xMyAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAY3lnbnVzLmNvbT4KCgkqIGV4cGxvdy5jIChzZXRfbWVtX2F0dHJpYnV0ZXMpOiBEbyBub3RoaW5nIGZvciBOVUxMIHR5cGUuCgpUdWUgSnVuIDEzIDE0OjQ1OjEwIDIwMDAgIEplZmZyZXkgQSBMYXcgIChsYXdAY3lnbnVzLmNvbSkKCgkqIGNvbmZpZy9tNjhrL29wZW5ic2QuaCAoQVNNX1NQRUMpOiBwYXNzIGRvd24gb3B0aW9ucyB0byBhc3NlbWJsZXIKCWNvcnJlY3RseS4KCjIwMDAtMDYtMTMgIEphbWVzIEUuIFdpbHNvbiAgPHdpbHNvbkBjeWdudXMuY29tPgoKCSogY29uZmlnL2lhNjQvaWE2NC5tZCAobW92eGZfaW50ZXJuYWwpOiBBZGQgbWlzc2luZyAiZSIgdG8gbGRmL3N0Zi4KClR1ZSBKdW4gMTMgMTQ6MDU6MzUgMjAwMCAgSmVmZnJleSBBIExhdyAgKGxhd0BjeWdudXMuY29tKQoKCSogTWFrZWZpbGUuaW4gKGdlbnN1cHBvcnQubyk6IFJlbW92ZSBib2d1cyAkKEhPU1RfUFJFRklYKSByZWZlcmVuY2UuCgoyMDAwLTA2LTEzICBQaGlsaXBwIFRob21hcyAgPHB0aG9tYXNAc3VzZS5kZT4KCgkqIGNvbmZpZ3VyZS5pbihBTExfTElOR1VBUyk6IENoYW5nZWQgZW5fVUsgdG8gZW5fR0IuCgkqIGNvbmZpZ3VyZTogUmVidWlsdC4KCjIwMDAtMDYtMDcgIERhdmlkIE8nQnJpZW4gIDxvYnJpZW5ARnJlZUJTRC5vcmc+CgoJKiBjb25maWd1cmUuaW46ICBBZGp1c3QgRnJlZUJTRCBiaXRzIHRvIG1hdGNoIGNoYW5nZXMgdG8gY29uZmlnLmd1ZXNzLgoJV2Ugbm93IGRlZmF1bHQgdG8gRUxGIGZvciB0aGUgaTM4NiwgYW5kIGEub3V0IGlzIHRoZSBzcGVjaWFsIGNhc2UuCgkqIGNvbmZpZ3VyZTogIFJlYnVpbHQuCgpUdWUgSnVuIDEzIDEwOjA1OjMwIDIwMDAgIEhhbnMtUGV0ZXIgTmlsc3NvbiAgPGhwQGF4aXMuY29tPgoKCSogZmluYWwuYyAoZmluYWxfc2Nhbl9pbnNuKTogRGVsZXRlIG5vdGVzIGJldHdlZW4gY2MwIHNldHRlciBhbmQKCXVzZXIgd2hlbiByZXN0YXJ0aW5nIGZyb20gc2V0dGVyLgoKMjAwMC0wNi0xMyAgSi4gRGF2aWQgQW5nbGluICA8ZGF2ZUBoaWF1bHkxLmhpYS5ucmMuY2E+CgoJKiB2YXguaCAoSU5ERVhfVEVSTV9QKTogRGVmaW5lIGV2YWx1YXRpb24gb3JkZXIgb2YgJiYncyBpbiB8fCBhbmQKCWNhc3QgdG8gc3F1ZWxjaCBzaWduZWQvdW5zaWduZWQgd2FybmluZ3MuCgoyMDAwLTA2LTEzICBaYWNrIFdlaW5iZXJnICA8emFja0B3b2xlcnkuY3VtYi5vcmc+CgoJKiBjcHBsaWIuYyAoaGFuZGxlX2RpcmVjdGl2ZSk6IFByaW50IG5vbi1OVUwtdGVybWluYXRlZCBzdHJpbmcKCXdpdGggJS4qcy4KCjIwMDAtMDYtMTIgIE1pY2hhZWwgTWVpc3NuZXIgIDxtZWlzc25lckByZWRoYXQuY29tPgoKCSogaWZjdnQuYyAoZGVhZF9vcl9wcmVkaWNhYmxlKTogRG9uJ3QgZG8gY29uZGl0aW9uYWwgZXhlY3V0aW9uCglwYXRoIGlmIHRoZSBtYWNoaW5lIG5lZWRzIGV4dHJhIHN1cHBvcnQgdG8gZG8gY29uZGl0aW9uYWwKCWV4ZWN1dGlvbi4KCk1vbiBKdW4gMTIgMTc6MDQ6MTcgMjAwMCAgSmVmZnJleSBBIExhdyAgKGxhd0BjeWdudXMuY29tKQoKCSogcHJpbnQtcnRsLmMgKHByaW50X3J0eCwgY2FzZSBNRU0pOiBVc2UgSE9TVF9XSURFX0lOVF9QUklOVF9ERUMKCXRvIHByaW50IHRoZSBhbGlhcyBzZXQuCgkqIHByaW50LXRyZWUuYyAocHJpbnRfbm9kZSwgREVDTF8qIG5vZGVzIGFuZCBjYXNlICd0Jyk6IFNpbWlsYXJseS4KCjIwMDAtMDYtMTIgIEouIERhdmlkIEFuZ2xpbiAgPGRhdmVAaGlhdWx5MS5oaWEubnJjLmNhPgoKCSogY29uZmlnL2Zsb2F0LXZheC5oOiBBZGQgR0ZMT0FUIGRlZmluZXMuCgpNb24gSnVuICAxMiAgOTo0NDowMCAyMDAwICBNYXJrIEtsZWluICA8bWtsZWluQGRpcy5jb20+CgoJKiBjb25maWd1cmUuaW46IFVwZGF0ZSB0bSBkZXBlbmRlbmNpZXMgZm9yIE1QRS4KCSogY29uZmlndXJlOiBSZWJ1aWx0LgoKMjAwMC0wNi0xMiAgSC5KLiBMdSAgPGhqbEBnbnUub3JnPgoKCSogZ2VuZ2VucnRsLmMgKG9ic3RhY2tfYWxsb2NfcnR4KTogQ29ycmVjdCB0aGUgYWxsb2NhdGVkIHNpemUuCgoyMDAwLTA2LTEyICBEYXZpZCBFZGVsc29obiAgPGVkZWxzb2huQGdudS5vcmc+CgoJKiBhaXg0MS5oIChTVUJUQVJHRVRfU1dJVENIRVMpOiBEZWxldGUgdGhyZWFkcy4KCShDUFBfU1BFQyk6IENoYW5nZSBtdGhyZWFkcyB0byBwdGhyZWFkLgoJKExJQl9TUEVDKTogTGlrZXdpc2UuCgkoU1RBUlRGSUxFX1NQRUMpOiBMaWtld2lzZS4KCSogYWl4NDMuaCAoU1VCVEFSR0VUX1NXSVRDSEVTKTogRGVsZXRlIHRocmVhZHMuCgkoQ1BQX1NQRUMpOiBDaGFuZ2UgbXRocmVhZHMgdG8gcHRocmVhZC4KCShMSUJfU1BFQyk6IExpa2V3aXNlLgoJKFNUQVJURklMRV9TUEVDKTogTGlrZXdpc2UuCgkqIHJzNjAwMC1wcm90b3MuaCAocmVnX29yX2FyaXRoX2NpbnRfb3BlcmFuZCk6IE5ldy4KCSogcnM2MDAwLmMgKHJlZ19vcl9hcml0aF9jaW50X29wZXJhbmQpOiBOZXcuCgkobnVtX2luc25zX2NvbnN0YW50X3dpZGUpOiBEZWNvcmF0ZSB1bnNpZ25lZCBjb25zdGFudC4KCSogcnM2MDAwLmggKFBSRURJQ0FURV9DT0RFUyk6IEFkZCByZWdfb3JfYXJpdGhfY2ludF9vcGVyYW5kLgoJKiByczYwMDAubWQgKGFkZHNpMyk6IFVzZSBuZXcgcHJlZGljYXRlLgoJKHN1YnNpMywgYWRkZGkzLCBzdWJkaTMpOiBMaWtld2lzZS4KCjIwMDAtMDYtMTIgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjLWNvbW1vbi5jIChsYW5nX2dldF9hbGlhc19zZXQpOiBGaXggdHlwby4KCjIwMDAtMDYtMTIgIFJpY2hhcmQgRWFybnNoYXcgPHJlYXJuc2hhQGFybS5jb20+CgoJKiBmbG93LmMgKG1hcmtfdXNlZF9yZWdzKTogUmV2ZXJ0IGxhc3QgY2hhbmdlLgoJKGxpZmVfYW5hbHlzaXMpOiBSZW1vdmUgUFJPUF9BVVRPSU5DIGlmIHJ1bm5pbmcgYWZ0ZXIgcmVsb2FkLgoJKHByb3BhZ2F0ZV9vbmVfaW5zbik6IFBST1BfQVVUT0lOQyBpcyBhbHdheXMgb2ZmIGFmdGVyIHJlbG9hZC4KCjIwMDAtMDYtMTEgIFJpY2hhcmQgRWFybnNoYXcgPHJlYXJuc2hhQGFybS5jb20+CgoJKiBmbG93LmMgKG1hcmtfdXNlZF9yZWdzKTogRG9uJ3QgY2FsbCBmaW5kX2F1dG9faW5jIGFmdGVyIHJlbG9hZAoJaGFzIHJ1bi4KCjIwMDAtMDYtMTEgIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIGJiLXJlb3JkZXIuYyAoYnVpbGRfc2NvcGVfZm9yZXN0KTogSW5pdGlhbGl6ZSB2YXJpYWJsZQoJYGN1cnJfc2NvcGUnLgoKCSogY2FsbHMuYyAoZXhwYW5kX2NhbGwpOiBMaWtld2lzZSBmb3IgdmFyaWFibGVzCglgc2F2ZV9wZW5kaW5nX3N0YWNrX2FkanVzdCcgYW5kIGBzYXZlX3N0YWNrX3BvaW50ZXJfZGVsdGEnLgoKCSogaTM4Ni5jIChmdW5jdGlvbl9hcmdfYWR2YW5jZSwgZnVuY3Rpb25fYXJnKTogQ2FzdCB0byBhdm9pZAoJc2lnbmVkL3Vuc2lnbmVkIHdhcm5pbmdzLgoKCSogaTM4Ni5oIChNRU1PUllfTU9WRV9DT1NUKTogTGlrZXdpc2UuCgoJKiBpZmN2dC5jIChjb25kX2V4ZWNfcHJvY2Vzc19pZl9ibG9jayk6IEluaXRpYWxpemUgdmFyaWFibGVzCglgZWxzZV9zdGFydCcgYW5kIGBlbHNlX2VuZCcuCgoJKiBsaWJnY2MyLmggKF9fZWhfYWxsb2MsIF9fZWhfZnJlZSk6IFByb3RvdHlwZS4KCgkqIHJlZ3JlbmFtZS5jIChycl9yZXBsYWNlX3JlZyk6IEluaXRpYWxpemUgdmFyaWFibGUgYGRlc3Rfc3VicmVnbm8nLgoKMjAwMC0wNi0xMCAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIE1ha2VmaWxlLmluIChsaWJpbnRsLmEpOiBEZXBlbmQgb24gaW50bC5hbGwuCgoyMDAwLTA2LTA5ICBILkouIEx1ICAoaGpsQGdudS5vcmcpCgoJKiBNYWtlZmlsZS5pbiAoYy1wYXJzZS5vKTogQWxzbyBkZXBlbmQgb24gb3V0cHV0LmguCgoyMDAwLTA2LTA5ICBSb2RuZXkgQnJvd24gIDxSb2RuZXlCcm93bkBteW5kLmNvbT4KCgkqIG1jb3JlLXByb3Rvcy5oOiBkaXNjYXJkcyBjb25zdCB3YXJuaW5nIHJlbW92YWwuCgkqIG1jb3JlLmM6IGRpc2NhcmRzIGNvbnN0IHdhcm5pbmcgcmVtb3ZhbC4KCjIwMDAtMDYtMDkgIEthenUgSGlyYXRhICA8a2F6dUBoeGkuY29tPgoKCSogY29uZmlnL2g4MzAwL2xpYjFmdW5jcy5hc206IERlY2xhcmUgdGhlIG1hY2hpbmUgYXJjaGl0ZWN0dXJlIGF0Cgl0aGUgYmVnaW5uaW5nIG9mIHRoZSBmaWxlLgoKMjAwMC0wNi0wOSAgSi4gRGF2aWQgQW5nbGluICA8ZGF2ZUBoaWF1bHkxLmhpYS5ucmMuY2E+CgoJKiByZWFsLmg6ICBBZGQgcHJvdG90eXBlIGZvciBsZGV4cC4KCjIwMDAtMDYtMDkgIFphY2sgV2VpbmJlcmcgIDx6YWNrQHdvbGVyeS5jdW1iLm9yZz4KCgkqIGdnYy1ub25lLmMsIGdnYy1zaW1wbGUuYywgZ2djLXBhZ2UuYyAoZ2djX2FsbG9jX29iaik6IFJlbmFtZQoJaXQgZ2djX2FsbG9jLCBkcm9wIHNlY29uZCBhcmd1bWVudCwgbmV2ZXIgY2xlYXIgcmV0dXJuZWQgbWVtb3J5LgoJKiBnZ2MtY29tbW9uLmMgKGdnY19hbGxvY19zdHJpbmcpOiBVc2UgZ2djX2FsbG9jLgoJKGdnY19hbGxvY19jbGVhcmVkKTogTmV3LgoJKiBnZ2MuaDogUHJvdG90eXBlIGdnY19hbGxvYyBhbmQgZ2djX2FsbG9jX2NsZWFyZWQsIG5vdAoJZ2djX2FsbG9jX29iai4gIFJlbW92ZSBnZ2NfYWxsb2MgbWFjcm8uCgkoZ2djX2FsbG9jX3J0eCwgZ2djX2FsbG9jX3J0dmVjLCBnZ2NfYWxsb2NfdHJlZSk6IFVzZSBnZ2NfYWxsb2MuCgoJKiBydGwuYyAocnR2ZWNfYWxsb2MpOiBDbGVhciB0aGUgdmVjdG9yIGFsd2F5cy4KCShydHhfYWxsb2MpOiBDbGVhciB0aGUgZmlyc3Qgd29yZCBhbHdheXMuICBSZW1vdmUgZGlydHkKCW9ic3RhY2sgdHJpY2tzICh0aGlzIHJvdXRpbmUgaXMgbm8gbG9uZ2VyIGEgYm90dGxlbmVjaykuCgkqIHRyZWUuYyAobWFrZV9ub2RlKTogQ2xlYXIgdGhlIG5ldyBub2RlIGFsd2F5cy4KCShtYWtlX3RyZWVfdmVjKTogTGlrZXdpc2UuCgkodHJlZV9jb25zKTogQ2xlYXIgdGhlIGNvbW1vbiBzdHJ1Y3R1cmUgYWx3YXlzLgoJKGJ1aWxkMSk6IExpa2V3aXNlOyBhbHNvLCBjbGVhciBUUkVFX0NPTVBMRVhJVFkuCgkqIGdlbmdlbnJ0bC5jOiBVc2UgcHV0cyB3aGVyZXZlciBwb3NzaWJsZS4gIFJlbW92ZSBleHRyYQoJbmV3bGluZXMuCgkoZ2VuZGVmKTogQ2xlYXIgdGhlIGZpcnN0IHdvcmQgb2YgYW4gUlRYIGluIHRoZSBnZW5lcmF0b3IKCWZ1bmN0aW9uLCBpcnJlc3BlY3RpdmUgb2YgZ2djX3AuICBJbml0aWFsaXplICcwJyBzbG90cyB0bwoJTlVMTC4KCShnZW5sZWdlbmQpOiBEb24ndCBnZW5lcmF0ZSBvYnN0YWNrX2FsbG9jX3J0eCByb3V0aW5lLCBqdXN0IGEKCXRoaW4gd3JhcHBlciBtYWNybyBhcm91bmQgb2JzdGFja19hbGxvYy4KCgkqIHN0bXQuYyAoZXhwYW5kX2ZpeHVwKTogVXNlIGdnY19hbGxvYy4KCSogYy10eXBlY2suYyAoYWRkX3BlbmRpbmdfaW5pdCk6IFVzZSBnZ2NfYWxsb2MuCgkqIGVtaXQtcnRsLmMgKGluaXRfZW1pdF9vbmNlKTogQ2xlYXIgQ09OU1RfRE9VQkxFX0NIQUlOKHRlbSkuCgkqIHZhcmFzbS5jIChpbW1lZF9kb3VibGVfY29uc3QpOiBTZXQgQ09OU1RfRE9VQkxFX01FTShyKSB0bwoJY29uc3QwX3J0eCB3aGVuIGl0IGlzIGNyZWF0ZWQuCgkoaW1tZWRfcmVhbF9jb25zdF8xKTogU2V0IENPTlNUX0RPVUJMRV9DSEFJTihyKSB0byBOVUxMX1JUWCBpZgoJd2UgYXJlIG5vdCBpbiBhIGZ1bmN0aW9uLgoKCSogdHJlZS5jICh0cmVlX2NsYXNzX2NoZWNrX2ZhaWxlZCk6IE1ha2Ugc2Vjb25kIGFyZyBhbiBpbnQuCgkqIHRyZWUuaDogVXBkYXRlIHByb3RvdHlwZS4KCjIwMDAtMDYtMDkgIEdlb2ZmIEtlYXRpbmcgIDxnZW9mZmtAY3lnbnVzLmNvbT4KCgkqIHRyZWUuaCAoVk9JRF9UWVBFX1ApOiBEb24ndCBsb29rIGF0IHRoZSBUWVBFX01BSU5fVkFSSUFOVAoJb2YgYW4gZXJyb3JfbWFya19ub2RlLgoKRnJpIEp1biAgOSAyMDozNToxMyAyMDAwICBEZW5pcyBDaGVydHlrb3YgIDxkZW5pc2NAb3ZlcnRhLnJ1PgoKCSogY29uZmlnL2F2ci9hdnIuYyAoYXNtX291dHB1dF9zZWN0aW9uX25hbWUpOiBidWdmaXguCgoyMDAwLTA2LTA5ICBKYXNvbiBNZXJyaWxsICA8amFzb25AY2FzZXkuc29tYS5yZWRoYXQuY29tPgoKCSogdGltZXZhci5kZWY6IEFkZCBUVl9FWFBBTkQuCgkqIHRpbWV2YXIuYyAodGltZXZhcl9wcmludCk6IFVwZGF0ZSB0aW1pbmcgaW5mb3JtYXRpb24uCgkqIGNhbGxzLmMgKHRyeV90b19pbnRlZ3JhdGUpOiBQdXNoIHRvIFRWX0lOVEVHUkFUSU9OIGZvciBpbmxpbmluZy4KCgkqIHN0bXQuYyAoZXhwYW5kX3JldHVybik6IENoZWNrIGZvciBlcnJvcl9tYXJrX25vZGUuCgoyMDAwLTA2LTA5ICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBjb25maWd1cmUuaW46IEFsc28gYXZvaWQgd3JhcHBpbmcgYXV0by1idWlsZC5oIHdpdGggSU5fR0NDLgoKCSogc2Nhbi10eXBlcy5zaCAoVkFMVUUpIFdyYXAgdXNlIHdpdGggZG91YmxlIHF1b3RlcyB0byBwcm90ZWN0Cgl2YXJpYWJsZSBhZ2FpbnN0IGZpbGVuYW1lIGV4cGFuc2lvbiB3aGVuIGl0IGNvbnRhaW5zICJjaGFyICoiLgoKCSogc3lzdGVtLmggKFNTSVpFX01BWCk6IERlbGV0ZSBiYWNrdXAgZGVmaW5pdGlvbi4KCgkqIGNwcGZpbGVzLmMgKHJlYWRfaW5jbHVkZV9maWxlKTogVXNlIElOVFRZUEVfTUFYSU1VTShzc2l6ZV90KQoJaW5zdGVhZCBvZiBTU0laRV9NQVguCgoyMDAwLTA2LTA5ICBKYWt1YiBKZWxpbmVrICA8amFrdWJAcmVkaGF0LmNvbT4KCgkqIGNvbmZpZ3VyZS5pbjogQ2hlY2sgd2hldGhlciBnYXMgc3VwcG9ydHMgLXJlbGF4LgoJKiBjb25maWd1cmUsIGNvbmZpZy5pbjogUmVidWlsdC4KCSogY29uZmlnL3NwYXJjL3NwYXJjLmggKEFTTV9SRUxBWF9TUEVDKTogRGVmaW5lLgoJKEVYVFJBX1NQRUNTKTogQWRkIGFzbV9yZWxheC4KCShBU01fU1BFQyk6IEFkZCAlKGFzbV9yZWxheCkuCgkoVEFSR0VUX1NXSVRDSEVTKTogQWRkIC1tcmVsYXggYW5kIC1tbm8tcmVsYXguCgkqIGNvbmZpZy9zcGFyYy9saW51eDY0LmggKExJTktfQVJDSF9TUEVDKTogUmVuYW1lIHRvIExJTktfU1BFQy4KCShMSU5LX1NQRUMpOiBQYXNzIC1yZWxheCB0byBsaW5rZXIgdW5sZXNzIC1tbm8tcmVsYXggb3IgLXIuCgkoQVNNX1NQRUMpOiBBZGQgJShhc21fcmVsYXgpLgoJKiBjb25maWcvc3BhcmMvbGludXguaCAoTElOS19TUEVDLCBBU01fU1BFQyk6IExpa2V3aXNlLgoJKiBjb25maWcvc3BhcmMvc3BhcmMuYyAob3V0cHV0X3NpYmNhbGwpOiBJZiBIQVZFX0FTX1JFTEFYX09QVElPTiwKCW5ldmVyIHVzZSBzZXRoaS9qbXBsIGZvciBsZWFmIHRhaWwgY2FsbHMuICBVc2Ugb3Igd2l0aCByczIgJWcwCglpbnN0ZWFkIG9mIG1vdiwgc28gdGhhdCBnYXMgY2FuIGZ1cnRoZXIgb3B0aW1pemUgaXQuCgoyMDAwLTA2LTA4ICBKYW1lcyBFLiBXaWxzb24gIDx3aWxzb25AYmxldGNobGV5cGFyay5jeWdudXMuY29tPgoKCSogZHdhcmYyb3V0LmMgKHNpemVfb2ZfZGllLCBjYXNlIGR3X3ZhbF9jbGFzc19jb25zdCk6IFVzZQoJc2l6ZV9vZl9zbGViMTI4LgoJKHZhbHVlX2Zvcm1hdCwgY2FzZSBkd192YWxfY2xhc3NfY29uc3QpOiBVc2Ugc2RhdGEgZm9ybWF0LgoJKG91dHB1dF9kaWUpOiBDYWxsIG91dHB1dF9zbGViMTI4LgoKMjAwMC0wNi0wOCAgSmFtZXMgRS4gV2lsc29uICA8d2lsc29uQGN5Z251cy5jb20+CgoJKiBkd2FyZjJvdXQuYyAoQVNNX09VVFBVVF9EV0FSRl9EQVRBOCk6IEFkZCBuZXcgbWFjcm8gdGhhdCB1c2VzCglVTkFMSUdORURfRE9VQkxFX0lOVF9BU01fT1AuICBSZW5hbWUgb2xkIG1hY3JvIHRvCglBU01fT1VUUFVUX0RXQVJGX0NPTlNUX0RPVUJMRS4KCShvdXRwdXRfZGllLCBjYXNlIGR3X3ZhbF9jbGFzc191bnNpZ25lZF9jb25zdCk6IENvcnJlY3QgY2FsbCB0bwoJQVNNX09VVFBVVF9EV0FSRl9EQVRBOC4KCShvdXRwdXRfZGllLCBjYXNlIGR3X3ZhbF9jbGFzc19sb25nX2xvbmcpOiBVc2UKCUFTTV9PVVRQVVRfRFdBUkZfQ09OU1RfRE9VQkxFLgoJKiB0cmVlLmMgKGhvc3RfaW50ZWdlcnApOiBBY2NlcHQgdW5zaWduZWQgSE9TVF9XSURFX0lOVCB2YWx1ZXMgd2hlbgoJcG9zIGlzIHplcm8uCgoJKiBjb25maWcvaWE2NC9pYTY0LXByb3Rvcy5oIChpYTY0X291dHB1dF9lbmRfcHJvbG9ndWUpOiBBZGQuCgkob3V0cHV0X2Z1bmN0aW9uX3Byb2xvZ3VlKTogRml4IG1pc3BlbGxpbmcuCgkob3V0cHV0X2Z1bmN0aW9uX3Byb2xvZ3VlLCBvdXRwdXRfZnVuY3Rpb25fZXBpbG9ndWUpOiBSZW9yZGVyIHRvCgltYXRjaCBpYTY0LmMgZGVmaW5pdGlvbiBvcmRlci4KCSogY29uZmlnL2lhNjQvaWE2NC5jIChpYTY0X2V4cGFuZF9wcm9sb2d1ZSk6IEFkZCBjb21tZW50LgoJKGlhNjRfZXhwYW5kX2VwaWxvZ3VlKTogU2V0IFJUWF9GUkFNRV9SRUxBVEVEX1Agb24gc3RhY2sgcmVzdG9yZSBpbnNucy4KCVVzZSByMyBpbnN0ZWFkIG9mIHIyIGZvciBsYXJnZSBzdGFjayByZXN0b3Jlcy4KCShpYTY0X291dHB1dF9lbmRfcHJvbG9ndWUpOiBOZXcgZnVuY3Rpb24uCgkocHJvY2Vzc19zZXQpOiBFbWl0ICIucmVzdG9yZSBzcCIgZm9yIGVwaWxvZ3VlIHN0YWNrIHJlc3RvcmVzLgoJKiBjb25maWcvaWE2NC9pYTY0LmggKEZVTkNUSU9OX0VORF9QUk9MT0dVRSk6IERlZmluZS4KCjIwMDAtMDYtMDggIEpha3ViIEplbGluZWsgIDxqYWt1YkByZWRoYXQuY29tPgoKCSogZGJ4b3V0LmMgKGRieG91dF90eXBlX2ZpZWxkcyk6IERvbid0IHNlZ2ZhdWx0IG9uIGZpZWxkcyB3aXRoCglpbmNvbXBsZXRlIHR5cGVzLgoKMjAwMC0wNi0wOCAgTmF0aGFuIFNpZHdlbGwgIDxuYXRoYW5AY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGZyYW1lLmMgKGVuZF9mZGVfc29ydCk6IFJlbW92ZSBleHRyYW5lb3VzIGVycmF0aWMgYXJyYXkgdGVzdC4KCjIwMDAtMDYtMDggIERlbmlzIFBlcmNoaW5lIDxkeXBAcGVyY2hpbmUuY29tPgoKCSogZnJhbWUuYyAoc3RhcnRfZmRlX3NvcnQpOiBEb24ndCBtYWxsb2MgKDApLgoKMjAwMC0wNi0wNyAgWmFjayBXZWluYmVyZyAgPHphY2tAd29sZXJ5LmN1bWIub3JnPgoKCSogYy1kZWNsLmMgKHB1c2hkZWNsKTogRG8gbm90IGNhbGwgQ09NUExFVEVfVFlQRV9QIG9uCgllcnJvcl9tYXJrX25vZGUuCgkqIHByaW50LXRyZWUuYyAocHJpbnRfbm9kZSk6IFRoZSB0cmFuc3BhcmVudF91bmlvbl9mbGFnIG1lYW5zCglkaWZmZXJlbnQgdGhpbmdzIGZvciB1bmlvbnMgYW5kIGFycmF5cy4gIERvIG5vdCBpbnNwZWN0IGl0Cgl3aXRoIFRZUEVfVFJBTlNQQVJFTlRfVU5JT04uCgoyMDAwLTA2LTA2ICBKYWt1YiBKZWxpbmVrICA8amFrdWJAcmVkaGF0LmNvbT4KCgkqIGNwcGxpYi5jIChkb19pZmRlZiwgZG9faWZuZGVmKTogRG9uJ3Qgc2VnZmF1bHQgaWYgcGFyc2VfaWZkZWYKCXJldHVybmVkIE5VTEwuCgpXZWQgSnVuICA3IDIwOjM0OjMzIDIwMDAgIERlbmlzIENoZXJ0eWtvdiAgPGRlbmlzY0BvdmVydGEucnU+CgoJKiBjb25maWcvYXZyL2F2ci5jIChhc21fb3V0cHV0X3NlY3Rpb25fbmFtZSk6IG91dHB1dCBzZWN0aW9uCglhdHRyaWJ1dGVzLgoJKiBjb25maWcvYXZyL2xpYmdjYy5TICgudGV4dC5saWJnY2MpOiBkZWNsYXJlIHNlY3Rpb24gYXR0cmlidXRlcy4KCjIwMDAtMDYtMDYgIEphbWVzIEUuIFdpbHNvbiAgPHdpbHNvbkBjeWdudXMuY29tPgoKCSogZnJhbWUuaCAoc3RydWN0IHVud2luZF9pbmZvX3B0cik6IENvbGxhcHNlIHZlcnNpb24sIGZsYWdzLCBhbmQgbGVuZ3RoCglmaWVsZHMgaW50byBoZWFkZXIgZmllbGQuCgkoSUE2NF9VTldfSERSX0xFTkdUSCwgSUE2NF9VTldfSERSX0ZMQUdTLCBJQTY0X1VOV19IRFJfVkVSU0lPTik6IE5ldwoJbWFjcm9zIHRvIGFjY2VzcyBsZW5ndGgsIGZsYWdzLCBhbmQgdmVyc2lvbiBpbmZvIGZyb20gaGVhZGVyIGZpZWxkLgoJKiBjb25maWcvaWE2NC9jcnRiZWdpbi5hc20gKF9fZG9fZnJhbWVfc2V0dXBfYXV4KTogRGVsZXRlIGhlcmUuCgkqIGNvbmZpZy9pYTY0L2NydGVuZC5hc20gKF9fZG9fZnJhbWVfc2V0dXBfYXV4KTogQWRkIGhlcmUuCgkoX19kb19nbG9iYWxfY3RvcnNfYXV4KTogRml4IGNhbGxlci4KCSogY29uZmlnL2lhNjQvZnJhbWUtaWE2NC5jIChnZXRfdW53aW5kX3JlY29yZCk6IENoYW5nZSBwYXJhbWV0ZXIKCXByb2xvZ3VlX2ZsYWcgdG8gaGVhZGVyLiAgUGFzcyB0byByZWFkX1BfcmVjb3JkLgoJKHJlYWRfUF9yZWNvcmQpOiBOZXcgYXJndW1lbnQgaGVhZGVyLiAgSW1wbGVtZW50IFA0IGZvcm1hdC4KCU11bHRpcGx5IFA3X1RfU0laRSBieSAxNi4KCShleGVjdXRlX29uZV9pYTY0X2Rlc2NyaXB0b3IpOiBOZXcgc3RhdGljIGxvY2FsIHJlZ2lvbl9oZWFkZXIuICBQYXNzIHRvCglnZXRfdW53aW5kX3JlY29yZC4gIENvcHkgciB0byByZWdpb25faGVhZGVyIGlmIHIgaXMgYSBoZWFkZXIgcmVjb3JkLgoJKHByaW50X2FsbF9yZWNvcmRzKTogTGlrZXdpc2UuCgkoX19idWlsZF9pYTY0X2ZyYW1lX3N0YXRlKTogVXNlIElBNjRfVU5XX0hEUl9MRU5HVEguCgkoX19nZXRfcGVyc29uYWxpdHksIF9fZ2V0X2V4Y2VwdF90YWJsZSk6IExpa2V3aXNlLgoJKiBjb25maWcvaWE2NC9pYTY0LmMgKHByb2Nlc3Nfc2V0KTogRG8gbm90IGRpdmlkZSBvZmZzZXRzIGJ5IDQuCgoyMDAwLTA2LTA2ICBQaGlsaXBwIFRob21hcyAgPHB0aG9tYXNAc3VzZS5kZT4KCgkqIGNvbmZpZ3VyZS5pbiAoQUNfQ19JTkxJTkUpOiBBZGRlZC4KCSogYWNsb2NhbC5tNCAoQU1fV0lUSF9OTFMpOiBFbmFibGUgLS13aXRoLWluY2x1ZGVkLWdldHRleHQgYnkgZGVmYXVsdC4KCSogY29uZmlndXJlOiBSZWdlbmVyYXRlLgoKMjAwMC0wNi0wNiAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGMtY29tbW9uLmggKGNfbGFuZ3VhZ2Vfa2luZCk6IE5ldyB0eXBlLgoJKGNfbGFuZ3VhZ2UpOiBOZXcgdmFyaWFiLmUKCSogYy1jb21tb24uYyAobGFuZ19nZXRfYWxpYXNfc2V0KTogRG9uJ3QgcHV0IHN0cnVjdHVyZXMgaW4KCW5vbnplcm8gYWxpYXMgc2V0cyBpbiBDKysuCgkqIGMtZGVjbC5jIChjX2xhbmd1YWdlKTogRGVmaW5lIGl0LgoJKiBjLWxleC5jIChkb2luZ19vYmpjX3RoYW5nKTogUmVtb3ZlLgoJKiBjLXRyZWUuaCAoZG9pbmdfb2JqY190aGFuZyk6IE1ha2UgaXQgYSBtYWNyby4KCSogb2JqYy9vYmpjLWFjdC5jIChsYW5nX2RlY29kZV9vcHRpb24pOiBTZXQgY19sYW5ndWFnZSwgbm90Cglkb2luZ19vYmpjX3RoYW5nLgoKMjAwMC0wNi0wNiAgR2FicmllbCBEb3MgUmVpcyAgPGdkckBjb2Rlc291cmNlcnkuY29tPgoKCSogZGlhZ25vc3RpYy5jIChvdXRwdXRfbWF4aW11bV93aWR0aCk6IFJlbW92ZS4KCShkb2luZ19saW5lX3dyYXBwaW5nKTogVHdlYWsuCgkoZGlhZ25vc3RpY19idWZmZXIpOiBOZXcgb2JqZWN0LgoJKGdsb2JhbF9vdXRwdXRfYnVmZmVyKTogTmV3IG9iamVjdC4KCShvdXRwdXRfZGVzdHJveV9wcmVmaXgpOiBOZXcgZnVuY3Rpb24uCgkoZGVmYXVsdF9pbml0aWFsaXplX2J1ZmZlcik6IExpa2V3aXNlLgoJKHJlc2hhcGVfZGlhZ25vc3RpY19idWZmZXIpOiBMaWtld2lzZS4KCShpbml0aWFsaXplX2RpYWdub3N0aWNzKTogTGlrZXdpc2UuCgkob3V0cHV0X2NsZWFyKTogVHdlYWsuCgkobGluZV93cmFwcGVyX3ByaW50Zik6IEFkanVzdCBjYWxsIHRvIGluaXRfb3V0cHV0X2J1ZmZlci4KCSh2bGluZV93cmFwcGVyX21lc3NhZ2Vfd2l0aF9sb2NhdGlvbik6IExpa2V3aXNlLiAgVXNlCglvdXRwdXRfZGVzdHJveV9wcmVmaXguCgkodl9tZXNzYWdlX3dpdGhfZGVjbCk6IExpa2V3aXNlLgoKCSogZGlhZ25vc3RpYy5oIChzdHJ1Y3Qgb3V0cHV0X2J1ZmZlcik6IENvbnN0aWZ5IHByZWZpeC4KCShpbml0X291dHB1dF9idWZmZXIsIG91dHB1dF9nZXRfcHJlZml4KTogQ29uc3RpZnkuCgkoZGlhZ25vc3RpY19tZXNzYWdlX2xlbmd0aF9wZXJfbGluZSk6IExpa2V3aXNlLgoJKHJlc2hhcGVfZGlhZ25vc3RpY19idWZmZXIpOiBEZWNsYXJlLgoJKGRlZmF1bHRfaW5pdGlhbGl6ZV9idWZmZXIpOiBEZWNsYXJlLgoJKGluaXRpYWxpemVfZGlhZ25vc3RpY3MpOiBEZWNsYXJlLgoJKGRpYWdub3N0aWNfYnVmZmVyKTogRGVjbGFyZSBuZXcgb2JiamVjdC4KCgkqIHRvcGxldi5jOiAjaW5jbHVkZSBkaWFnbm9zdGljLmgKCShkaXNwbGF5X2hlbHApOiBEb2N1bWVudCBkaWFnbm9zdGljIGZvcm1hdHRpbmcgb3B0aW9ucy4KCShkZWNvZGVfZl9vcHRpb24pOiBIYW5kbGUgZGlhZ25vc3RpYyBmb3JtYXR0aW5nIG9wdGlvbnMuCgkobWFpbik6IFNldHVwIGluaXRpYWxpemF0aW9uIGZvciBkaWFnbm9zdGljIG1lc3NhZ2VzIG91dHB1dHRlci4KCgkqIHRvcGxldi5oIChzZXRfbWVzc2FnZV9sZW5ndGgpOiBSZW1vdmUuCgoJKiBNYWtlZmlsZS5pbiAodG9wbGV2Lm8pOiBEZXBlbmRzIHVwb24gZGlhZ25vc3RpYy5oCgoJKiBpbnZva2UudGV4aSA6IERvY3VtZW50IGRpYWdub3N0aWNzIGZvcm1hdHRpbmcgb3B0aW9ucy4KClR1ZSBKdW4gIDYgMTk6MjU6MzIgMjAwMCAgUGhpbGlwcGUgRGUgTXV5dGVyICA8cGhkbUBtYWNxZWwuYmU+CgoJKiBjb25maWd1cmUuaW4gKE1ha2UgdGhlIGxpbmtzKTogVHlwbyBmaXggOiB0aGUgZmlsZSB0aGF0IG11c3QgYmUKCWluY2x1ZGVkIHdpdGhvdXQgI2lmZGVmIElOX0dDQyBpcyBgYXV0by1ob3N0LmgnLCBub3QgYGF1dG8tY29uZmlnLmgnLgoJKiBjb25maWd1cmU6IEZpbGUgcmVidWlsdC4KCjIwMDAtMDYtMDYgIE5hdGhhbiBTaWR3ZWxsICA8bmF0aGFuQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBlaC1jb21tb24uaCAoRUhfQUxMT0NfU0laRSwgRUhfQUxMT0NfQUxJR04pOiBOZXcgI2RlZmluZXMuCgkoZWhfY29udGV4dCk6IEFkZCBhbGxvY19tYXNrIGFuZCBhbGxvY19idWZmZXIgZW1lcmdlbmN5IGZhbGxiYWNrCglzcGFjZS4KCSogbGliZ2NjMi5jIChfX2VoX2FsbG9jKTogTW92ZWQgZnJvbSBjcC9leGNlcHRpb24uY2MuIEZhbGxiYWNrIG9uCgllbWVyZ2VuY3kgZWhfY29udGV4dCBidWZmZXIsIGlmIG1hbGxvYyBmYWlscy4KCShfX2VoX2ZyZWUpOiBNb3ZlZCBmcm9tIGNwL2V4Y2VwdGlvbi5jYy4gUmVsZWFzZSB0byBlbWVyZ2VuY3kKCWVoX2NvbnRleHQgYnVmZmVyLCBpZiBhcHByb3ByaWF0ZS4KCjIwMDAtMDYtMDYgIEphc29uIE1lcnJpbGwgIDxqYXNvbkBjYXNleS5zb21hLnJlZGhhdC5jb20+CgoJKiBleHByLmMgKHN0b3JlX2V4cHIpOiBGaXggdHlwby4KCjIwMDAtMDYtMDYgIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIG02OGsuYyAobGVnaXRpbWl6ZV9waWNfYWRkcmVzcyk6IE1vdmUgcHJvdG90eXBlIC4uLgoKCSogbTY4ay1wcm90b3MuaCAobGVnaXRpbWl6ZV9waWNfYWRkcmVzcyk6IC4uLiBoZXJlLgoKCSogbTY4ay5tZCAobGVnaXRpbWl6ZV9waWNfYWRkcmVzcyk6IERlbGV0ZSBwcm90b3R5cGVzLgoJKHVudHlwZWRfY2FsbCk6IEludm9rZSBHRU5fQ0FMTCgpLCBub3QgZ2VuX2NhbGwoKS4KCgkqIG5leHRzdGVwLmM6IEluY2x1ZGUgc3lzdGVtLmggYW5kIHRvcGxldi5oLgoJKGdldF9kaXJlY3RpdmVfbGluZSk6IERvbid0IHByb3RvdHlwZS4KCShoYW5kbGVfcHJhZ21hKTogTWFyayBwYXJhbWV0ZXJzIHdpdGggQVRUUklCVVRFX1VOVVNFRCBhbmQgY29uc3RpZnkuCgoJKiBuZXh0c3RlcC5oIChoYW5kbGVfcHJhZ21hKTogUHJvdG90eXBlLgoJKFNFQ1RJT05fRlVOQ1RJT04pOiBQcm90b3R5cGUgRlVOQ1RJT04oKS4gIE1vdmUgcHJvdG90eXBlIG9mCglvYmpjX3NlY3Rpb25faW5pdCAuLi4KCShFWFRSQV9TRUNUSU9OX0ZVTkNUSU9OUyk6IC4uLiBoZXJlLgoKVHVlIEp1biAgNiAwODoxNzoyNiAyMDAwICBSaWNoYXJkIEtlbm5lciAgPGtlbm5lckB2bHNpMS51bHRyYS5ueXUuZWR1PgoKCSogc2Rib3V0LmMgKHN0cnVjdCBzZGJfZmlsZSk6IE5BTUUgbm93IGNvbnN0LgoJKHNkYm91dF9pbml0KTogaW5wdXRfZmlsZV9uYW1lIG5vdyBjb25zdC4KCShzZGJvdXRfc3RhcnRfbmV3X3NvdXJjZV9maWxlKTogRklMRU5BTUUgbm93IGNvbnN0LgoJKiBzZGJvdXQuYyAoc2Rib3V0X2luaXQsIHNkYm91dF9zdGFydF9uZXdfc291cmNlX2ZpbGUpOiBSZWZsZWN0IGFib3ZlLgoKMjAwMC0wNi0wNiAgR2FicmllbCBEb3MgUmVpcyAgPGdkckBjb2Rlc291cmNlcnkuY29tPgoKCSogYy10eXBlY2suYyAoYnVpbGRfY29uZGl0aW9uYWxfZXhwcik6IEhhbmRsZSBjb21wbGV4IGRhdGEgdHlwZXMuCgoyMDAwLTA2LTA1ICBKYXNvbiBNZXJyaWxsICA8amFzb25AY2FzZXkuc29tYS5yZWRoYXQuY29tPgoKCSogZXhwbG93LmMgKG1heWJlX3NldF91bmNoYW5naW5nKTogTmV3IGZ1bmN0aW9uLCBicm9rZW4gb3V0IGZyb20uLi4KCShzZXRfbWVtX2F0dHJpYnV0ZXMpOiBIZXJlLgoJKiBleHByLmg6IERlY2xhcmUgaXQuCgkqIHN0bXQuYyAoZXhwYW5kX2RlY2wpOiBDYWxsIGl0LgoKMjAwMC0wNi0wNSAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAY3lnbnVzLmNvbT4KCgkqIHJlbG9hZDEuYyAoY2hvb3NlX3JlbG9hZF9yZWdzKTogTWluZCBDTEFTU19DQU5OT1RfQ0hBTkdFX1NJWkUKCXdoaWxlIGxvb2tpbmcgZm9yIGEgcmVnaXN0ZXIgdG8gaW5oZXJpdCBmcm9tLgoKMjAwMC0wNi0wNSAgSmFzb24gTWVycmlsbCAgPGphc29uQGNhc2V5LnNvbWEucmVkaGF0LmNvbT4KCgkqIE1ha2VmaWxlLmluIChsaWJnY2MucmVhZHkpOiBMb3NlLgoJKGxpYmdjYy5tayk6IEp1c3QgdXNlIG12LCBub3QgbW92ZS1pZi1jaGFuZ2UuCgkoTElCR0NDX0RFUFMpOiBOZXcgbWFjcm8uCgkobGliZ2NjLmEpOiBVc2UgaXQuCgkoc3RtcC1tdWx0aWxpYik6IExpa2V3aXNlLgoJKiBta2xpYmdjYy5pbiAoc3RtcC1kaXJzKTogTmV3IHRhcmdldC4gIE1ha2UgZXZlcnl0aGluZyBkZXBlbmQgb24KCWl0IHJhdGhlciB0aGFuIHRoZSBkaXJlY3RvcmllcyB0aGVtc2VsdmVzLgoJKExJQjJBREQpOiBEZXBlbmQgb24gdGhlIGxpc3QgZmlsZSByYXRoZXIgdGhhbiAnZm9yY2UnLgoKCSogZm9sZC1jb25zdC5jIChmb2xkLCBjYXNlIENPTkRfRVhQUik6IEVsaWRlIGNvbnZlcnNpb24gYmV0d2VlbgoJY3YtcXVhbGlmaWVkIHZlcnNpb25zIG9mIHR5cGVzLgoKTW9uIEp1biAgNSAxNDowNjoxOCAyMDAwICBSaWNoYXJkIEtlbm5lciAgPGtlbm5lckB2bHNpMS51bHRyYS5ueXUuZWR1PgoKCSogY29uZmlnL3NwYXJjL3NwYXJjLmMgKHNob3J0X2JyYW5jaCk6IENvcnJlY3QgZXJyb3IgaW4gcmFuZ2UKCWNvbXB1dGF0aW9uLgoKMjAwMC0wNi0wNSAgSi4gRGF2aWQgQW5nbGluICA8ZGF2ZUBoaWF1bHkxLmhpYS5ucmMuY2E+CgoJKiBmaXhpbmMvaW5jbGhhY2suZGVmOiBOZXcgaW5jbHVkZSBoYWNrcyBmb3IgdWx0cml4LgoJKiAobmVzdGVkX3VsdHJpeCk6IFJlcGxhY2VkIGJ5IHVsdHJpeF9uZXN0ZWRfc3ZjLgoJKiAodWx0cml4X2F0b2ZfcGFyYW0pOiB0ZXN0X3RleHQgc3RyaW5nIGFkZGVkLgoJKiAodWx0cml4X2lmZGVmKTogTW9kaWZpZWQgc2VsZWN0IHN0cmluZy4KCjIwMDAtMDYtMDUgIFphY2sgV2VpbmJlcmcgIDx6YWNrQHdvbGVyeS5jdW1iLm9yZz4KCgkqIG9iamMvb2JqYy1hY3QuYyAoZ2VuZXJhdGVfbWV0aG9kX2Rlc2NyaXB0b3JzKTogUmVnaXN0ZXIKCW9iamNfbWV0aG9kX3Byb3RvdHlwZV90ZW1wbGF0ZSBhcyBhIEdDIHJvb3QuCgkoY29tcF9tZXRob2Rfd2l0aF9wcm90byk6IFJlZ2lzdGVyIGZ1bmN0aW9uX3R5cGUgYXMgYSBHQyByb290LgoJKGNvbXBfcHJvdG9fd2l0aF9wcm90byk6IFJlcGxhY2UgZnVuY3Rpb25fdHlwZTEgYW5kCglmdW5jdGlvbl90eXBlMiB3aXRoIGEgdHdvLWVsZW1lbnQgYXJyYXk7IHJlZ2lzdGVyIGl0IGFzIGEgR0Mgcm9vdC4KCgkoZ2VuZXJhdGVfcHJvdG9jb2xzLCBidWlsZF9wcm90b2NvbF9pbml0aWFsaXplciwKCWdlbmVyYXRlX3Byb3RvY29sX2xpc3QsIGJ1aWxkX2NhdGVnb3J5X2luaXRpYWxpemVyLAoJYnVpbGRfc2hhcmVkX3N0cnVjdHVyZV9pbml0aWFsaXplcik6IERvIG5vdCBjYWNoZSBjYXN0X3R5cGUKCWFuZC9vciBjYXN0X3R5cGUyLgoKMjAwMC0wNi0wNSAgSi4gRGF2aWQgQW5nbGluICA8ZGF2ZUBoaWF1bHkxLmhpYS5ucmMuY2E+CgoJKiBmdW5jdGlvbi5jIChhc3NpZ25fcGFybXMpOiBBZGQgbWlzc2luZyBhcmd1bWVudCB0byBzZXRfbWVtX2F0dHJpYnV0ZXMKCWNhbGwuCgoyMDAwLTA2LTA1ICBOYXRoYW4gU2lkd2VsbCAgPG5hdGhhbkBjb2Rlc291cmNlcnkuY29tPgoKCSogdHJlZS5oIChWT0lEX1RZUEVfUCk6IE5ldyBtYWNyby4KCShDT01QTEVURV9PUl9WT0lEX1RZUEVfUCk6IFVzZSBWT0lEX1RZUEVfUC4KCSogYy1kZWNsLmMgKGdyb2tkZWNsYXJhdG9yKTogVXNlIFZPSURfVFlQRV9QLgoJKGdldF9wYXJtX2luZm8pOiBMaWtld2lzZS4KCShzdG9yZV9wYXJtX2RlY2xzKTogTGlrZXdpc2UuCgkoY29tYmluZV9wYXJtX2RlY2xzKTogTGlrZXdpc2UuCgkoZmluaXNoX2Z1bmN0aW9uKTogTGlrZXdpc2UuCgkqIGMtdHlwZWNrLmMgKGJ1aWxkX2Z1bmN0aW9uX2NhbGwpOiBMaWtld2lzZS4KCShidWlsZF9iaW5hcnlfb3ApOiBMaWtld2lzZS4KCShidWlsZF9jb25kaXRpb25hbF9leHByKTogTGlrZXdpc2UuCgkoaW50ZXJuYWxfYnVpbGRfY29tcG91bmRfZXhwcik6IExpa2V3aXNlLgoJKGNvbnZlcnRfZm9yX2Fzc2lnbm1lbnQpOiBMaWtld2lzZS4KCSogc3RtdC5jIChleHBlbmRfZXhwcl9zdG10KTogTGlrZXdpc2UuCgkod2Fybl9pZl91bnVzZWRfdmFsdWUpOiBMaWtld2lzZS4KCShleHBhbmRfcmV0dXJuKTogTGlrZXdpc2UuCgkqIGMtcGFyc2UuaW4gKHByaW1hcnkpOiBMaWtld2lzZS4KCSogYy1wYXJzZS55LCBjLXBhcnNlLmMsIGMtcGFyc2UuaDogUmVnZW5lcmF0ZS4KCSogb2JqYy9vYmpjLXBhcnNlLnksIG9iamMvb2JqYy1wYXJzZS5jOiBSZWdlbmVyYXRlLgoKTW9uIEp1biAgNSAwNjo0NjoyOCAyMDAwICBSaWNoYXJkIEtlbm5lciAgPGtlbm5lckB2bHNpMS51bHRyYS5ueXUuZWR1PgoKCSogYWxpYXMuYyAoZ2V0X2FsaWFzX3NldCk6IElmIGNvbXBuZW50IGlzIGFkZHJlc3NhYmxlLCB1c2UgYWxpYXMKCXNldCBvZiBjb21wb25lbnQuCgkqIGMtZGVjbC5jIChpbml0X2RlY2xfcHJvY2Vzc2luZyk6IERvbid0IGNhbGwgcmVjb3JkX2NvbXBvbmVudF9hbGlhc2VzLgoJKGdyb2tkZWNsYXJhdG9yKTogTGlrZXdpc2UuCgkqIGMtdHlwZWNrLmMgKGNvbW1vbl90eXBlKTogTGlrZXdpc2UuCgoyMDAwLTA2LTA0ICBBbGV4IFNhbXVlbCAgPHNhbXVlbEBjb2Rlc291cmNlcnkuY29tPgoKCSogTWFrZWZpbGUuaW4gKE9CSlMpOiBSZW1vdmUgZHluX3N0cmluZy5vCgkoZHluLXN0cmluZy5vKTogRGVsZXRlIHJ1bGUuCgkqIGR5bi1zdHJpbmcuYzogRGVsZXRlIGZpbGUKCSogZHluLXN0cmluZy5oOiBMaWtld2lzZS4KCjIwMDAtMDYtMDQgIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIE1ha2VmaWxlLmluIChpbnRsLiopOiBIb25vciBub256ZXJvIGV4aXQgY29kZXMgaW4gdGhlIGludGwKCXN1YmRpci4KCjIwMDAtMDYtMDMgIEdlb2ZmIEtlYXRpbmcgIDxnZW9mZmtAY3lnbnVzLmNvbT4KCgkqIGFsaWFzLmMgKHJlY29yZF9jb21wb25lbnRfYWxpYXNlcyk6IERvbid0IGluc3BlY3QKCURFQ0xfTk9OQUREUkVTU0FCTEVfUCBvZiBub24tRklFTERfREVDTCBjb21wb25lbnRzIG9mIHN0cnVjdHVyZXMuCgpTYXQgSnVuICAzIDE5OjA1OjMwIDIwMDAgIE1pY2hhZWwgTWVpc3NuZXIgIDxtZWlzc25lckByZWRoYXQuY29tPgoKCSogaWZjdnQuYyAocHJvY2Vzc19pbnNucyk6IElmIElGQ1ZUX01PRElGWV9JTlNOIGlzIGRlZmluZWQsIGNhbGwKCWl0IHdpdGggdGhlIHBhdHRlcm4gdG8gZG8gbWFjaGluZSBkZXBlbmRlbnQgd29yay4KCShjb25kX2V4ZWNfcHJvY2Vzc19pZl9ibG9jayk6IElmIElGQ1ZUX01PRElGWV9URVNUUyBpcyBkZWZpbmVkLAoJdXNlIGl0IHRvIG1vZGlmeSB0aGUgdHJ1ZS9mYWxzZSB0ZXN0cyB1c2VkIGluIGNvbmRpdGlvbmFsCglleGVjdXRpb24uICBJZiBJRkNWVF9NT0RJRllfRklOQUwgYW5kIElGQ1ZUX01PRElGWV9DQU5DRUwgYXJlCglkZWZpbmVkLCBpbnZva2UgdGhlbSBpZiB0aGUgY29udmVyc2lvbiB0byBjb25kaXRpb25hbCBleGVjdXRpb24KCXdhcyBzdWNjZXNzZnVsIG9yIG5vdC4KCgkqIHRtLnRleGkgKElGQ1ZUX01PRElGWV9URVNUUyk6IERvY3VtZW50LgoJKElGQ1ZUX01PRElGWV9JTlNOKTogRGl0dG8uCgkoSUZDVlRfTU9ESUZZX0ZJTkFMKTogRGl0dG8uCgkoSUZDVlRfTU9ESUZZX0NBTkNFTCk6IERpdHRvLgoKU2F0IEp1biAgMyAxNToyNjoxMyAyMDAwICBNYXR0IEtyYWFpIDxrcmFhaUBhbHVtbmkuY2FybmVnaWVtZWxsb24uZWR1PgoKCSogdG9wbGV2LmMgKG1haW4pOiBGaXggbWlzc3BlbGxpbmdzIG9mIHBvc3NpYmlsaXR5IGFuZCBsYW5ndWFnZS4KCjIwMDAtMDYtMDMgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgoJKiBhbGlhcy5jIChyZWNvcmRfYWxpYXNfc3Vic2V0KTogSW5pdGlhbGl6ZSBoYXNfemVyb19jaGlsZCBpbiB0aGUKCXN1cGVyc2V0LgoKMjAwMC0wNi0wMyAgUmljaGFyZCBFYXJuc2hhdyAocmVhcm5zaGFAYXJtLmNvbSkKCgkqIGFybS5tZCAodW50eXBlZF9jYWxsKTogVXNlIEdFTl9DQUxMIG1hY3JvLgoKMjAwMC0wNi0wMiAgUGVra2EgTmlrYW5kZXIgIDxwbnJAdGVsZGFuZXgudGNtLmh1dC5maT4KCgkqIE1ha2VmaWxlLmluOiBVc2UgJChNQUtFKSBub3QgIm1ha2UiCgpGcmkgSnVuICAyIDE5OjMxOjAzIDIwMDAgIFJpY2hhcmQgS2VubmVyICA8a2VubmVyQHZsc2kxLnVsdHJhLm55dS5lZHU+CgoJKiBhbGlhcy5jIChzdHJ1Y3QgYWxpYXNfc2V0X2VudHJ5KTogTmV3IGZpZWxkIGhhc196ZXJvX2NoaWxkLgoJKG1lbV9pbl9kaXNqb2ludF9hbGlhc19zZXRzX3ApOiBSZXR1cm4gMCBpZiBzZXQgaW4gZWl0aGVyIGFzZS4KCShnZXRfYWxpYXNfc2V0KTogSWYgbGFuZ3VhZ2UtZGVwZW5kZW50IHJvdXRpbmUgc2V0IFRZUEVfQUxJQVNfU0VULAoJZG8gbm90aGluZy4KCUNhbGwgcmVjb3JkX2NvbXBvbmVudF9hbGlhc2VzIGZvciBhZ2dyZWdhdGUgdHlwZXMuCgkocmVjb3JkX2FsaWFzX3N1YnNldCk6IFNldCBoYXNfemVyb19jaGlsZC4KCShyZWNvcmRfY29tcG9uZW50X2FsaWFzZXMsIGNhc2UgQVJSQVlfVFlQRSk6IERvIG5vdGhpbmcgaWYKCVRZUEVfTk9OQUxJQVNFU19DT01QT05FTlQuCgkocmVjb3JkX2NvbXBvbmVudF9hbGlhc2VzLCBjYXNlIFJFQ09SRF9UWVBFKTogVGVzdAoJREVDTF9OT05BRERSRVNTQUJMRV9QLgoJKiBjLWRlY2wuYyAoZ3Jva2RlY2xhcmF0b3IpOiBTZXQgREVDTF9OT05BRERSRVNTQUJMRV9QIGluc3RlYWQKCW9mIFRSRUVfQUREUkVTU0FCTEUuCgkqIGNhbGxzLmMgKGluaXRpYWxpemVfYXJndW1lbnRfaW5mb3JtYXRpb24pOiBPbmx5IHRlc3QKCVRZUEVfVFJBTlNQQVJFTlRfVU5JT04gZm9yIFVOSU9OX1RZUEUuCgkqIGZ1bmN0aW9uLmMgKGFzc2lnbl9wYXJtcyk6IExpa2V3aXNlLgoJKiBpbnRlZ3JhdGUuYyAoZnVuY3Rpb25fY2Fubm90X2lubGluZV9wKTogTGlrZXdpc2UuCgkqIHN0b3ItbGF5b3V0LmMgKGZpbmlzaF9yZWNvcmRfbGF5b3V0KTogRG9uJ3QgY2FsbAoJcmVjb3JkX2NvbXBvbmVudF9hbGlhc2VzLgoJKiB0cmVlLmggKHN0cnVjdCB0cmVlX2ludF9jc3QpOiBVc2Ugc3RydWN0IHRyZWVfY29tbW9uLgoJKHN0cnVjdCB0cmVlX3JlYWxfY3N0LCBzdHJ1Y3QgdHJlZV9zdHJpbmcpOiBMaWtld2lzZS4KCShzdHJ1Y3QgdHJlZV9jb21wbGV4LCBzdHJ1Y3QgdHJlZV9pZGVudGlmaWVyKTogTGlrZXdpc2UuCgkoc3RydWN0IHRyZWVfbGlzdCwgc3RydWN0IHRyZWVfdmVjLCBzdHJ1Y3QgdHJlZV9leHApOiBMaWtld2lzZS4KCShzdHJ1Y3QgdHJlZV9ibG9jaywgc3RydWN0IHRyZWVfdHlwZSwgc3RydWN0IHRyZWVfZGVjbCk6IExpa2V3aXNlLgoJKFRZUEVfVFJBTlNQQVJFTlRfVU5JT04pOiBVc2UgVU5JT05fVFlQRV9DSEVDSy4KCShUWVBFX05PTkFMSUFTRVNfQ09NUE9ORU5UKTogTmV3IG1hY3JvLgoJKFRZUEVfQU1CSUVOVF9CT1VOREVETkVTUyk6IFVzZSBGVU5DVElPTl9UWVBFX0NIRUNLLgoJKERFQ0xfTk9OQUREUkVTU0FCTEVfUCk6IE5ldyBtYWNyby4KCShzdHJ1Y3QgdHJlZV9kZWNsKTogUmVvcmRlciBiaXRzIGZvciBjbGFyaXR5IG9mIGhvdyBtYW55IGxlZnQ7CglhZGQgbm9uX2FkcmVzc2FibGUuCgoyMDAwLTA2LTAyICBKYXNvbiBNZXJyaWxsICA8amFzb25AY2FzZXkuc29tYS5yZWRoYXQuY29tPgoKCSogTWFrZWZpbGUuaW4gKGxpYmdjYy5hKTogQWxzbyBkZXBlbmQgb24gJChMSUIyQUREKS4KCSogbWtsaWJnY2MuaW4gKGZvcmNlKTogTmV3IHRhcmdldC4KCU1ha2UgTElCMkFERCBzdHVmZiBkZXBlbmQgb24gaXQuCgoyMDAwLTA2LTAyICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEBjeWdudXMuY29tPgoKCSogYWxpYXMuYyAobGFuZ19nZXRfYWxpYXNfc2V0KTogUmVtb3ZlLgoJKGdldF9hbGlhc19zZXQpOiBDYWxsIGl0IGRpcmVjdGx5LCBub3QgaW5kaXJlY3RseS4KCSogYy1jb21tb24uYyAobGFuZ19nZXRfYWxpYXNfc2V0KTogUmVuYW1lIGZyb20gY19nZXRfYWxpYXNfc2V0LgoJKiBjLWNvbW1vbi5oIChjX2dldF9hbGlhc19zZXQpOiBEb24ndCBkZWNsYXJlLgoJKiBjLWRlY2wuYyAoaW5pdF9kZWNsX3Byb2Nlc3NpbmcpOiBEb24ndCBzZXQgbGFuZ19nZXRfYWxpYXNfc2V0LgoJKiBleHByLmggKGxhbmdfZ2V0X2FsaWFzX3NldCk6IERlY2xhcmUgYXMgZnVuY3Rpb24sIG5vdCBwb2ludGVyLgoKMjAwMC0wNi0wMiAgQnJ1Y2UgS29yYiAgPGJrb3JiQGdudS5vcmc+CgoJKiBmaXhpbmMvc2VydmVyLmMoc2lnX2hhbmRsZXIpOiAgcmVzdW1lIGNsb3Npbmcgc2VydmVyIG9uIFNJR1BJUEUKCShzZXJ2ZXJfc2V0dXApOiAgZGVmaW5lIHRoZSBzZXJ2ZXIncyBtYXN0ZXIgcGlkCgkoY2xvc2Vfc2VydmVyKTogIGFjdHVhbGx5IGRvIHRoZSBkZWVkIElGRiB3ZSBhcmUgdGhlIHNlcnZlcidzIG1hc3RlcgoKMjAwMC0wNi0wMiAgSmFrdWIgSmVsaW5layAgPGpha3ViQHJlZGhhdC5jb20+CgoJKiBjLWNvbW1vbi5jIChjX2dldF9hbGlhc19zZXQpOiBDaGVjayB3aGV0aGVyIHNpZ25lZF90eXBlIGRpZCBub3QKCXJldHVybiBpdHMgYXJndW1lbnQgYmVmb3JlIGNhbGxpbmcgZ2V0X2FsaWFzX3NldCBvbiB0aGUgcmVzdWx0LgoKMjAwMC0wNi0wMiAgQW5kcmV3IE1hY0xlb2QgIDxhbWFjbGVvZEBjeWdudXMuY29tPgoKCSogZXhwci5jIChlbWl0X2dyb3VwX2xvYWQpOiBGaXggdHlwbywgR0VUX01PREUgbm90IEdFVF9DT0RFLgoKRnJpIEp1biAgMiAwMDoyMjo1MiAyMDAwICBKIm9ybiBSZW5uZWNrZSA8YW15bGFhckBjeWdudXMuY28udWs+CgoJKiBzaC5oIChDUFBfU1BFQyk6IEFkZCAtRF9fTk9NQUNTQVZFX18gZm9yIC1tbm9tYWNzYXZlLgoJKENPTkRJVElPTkFMX1JFR0lTVEVSX1VTQUdFKTogTWFjIHJlZ2lzdGVycyBhcmUgY2FsbCB1c2VkCglmb3IgVEFSR0VUX05PTUFDU0FWRS4KCShOT01BQ1NBVkVfQklUKTogRGVmaW5lLgoJKFRBUkdFVF9OT01BQ1NBVkUpOiBEZWZpbmUuCgkoVEFSR0VUX1NXSVRDSEVTKTogQWRkICJub21hY3NhdmUiLgoKMjAwMC0wNi0wMiAgVG9zaGl5YXN1IE1vcml0YSAgPHRvc2hpLm1vcml0YUBzZWdhLmNvbT4KCgkqIHNoLm1kICh1bnR5cGVkX2NhbGwpOiBSZW1vdmUgZXhjZXNzIHBhcmFtZXRlcnMKCjIwMDAtMDYtMDEgIExvcmVuIEouIFJpdHRsZSAgPGxqcml0dGxlQGFjbS5vcmc+CgoJKiBmaXhpbmMvaW5jbGhhY2suZGVmIChvc2ZfbmFtZXNwYWNlX2EpOiBSZWxheCBleHByZXNzaW9uIHRvCgltYXRjaCB0aGF0IHVzZWQgYmVmb3JlIHRoZSBjb252ZXJzaW9uIHRvIGNfZml4IHN0eWxlLgoJKiBmaXhpbmMvZml4aW5jbC54OiByZWdlbmVyYXRlCgoyMDAwLTA2LTAxICBTdGFuIENveCAgPHNjb3hAY3lnbnVzLmNvbT4KCgkqIHZhcnJheS5oIChWQVJSQVlfUFVTSF9HRU5FUklDX1BUUiwgVkFSUkFZX1BVU0hfQ0hBUl9QVFIpOiBGaXgKCW1hY3JvIGFyZ3VtZW50IHR5cG8uCgoyMDAwLTA2LTAxICBaYWNrIFdlaW5iZXJnICA8emFja0B3b2xlcnkuY3VtYi5vcmc+CgoJKiBjcHBsZXguYyAobWF5YmVfbWFjcm9leHBhbmQpOiBVc2UgQ1BQX1dUUkFESVRJT05BTC4gIEltcHJvdmUKCWVycm9yIG1lc3NhZ2UuCgkqIGNwcGxpYi5jIChwYXJzZV9pbmNsdWRlKTogUmVtb3ZlIHN1cHBvcnQgZm9yIFZBWC1DCgkiI2luY2x1ZGUgc3RhcmxldCIgbWlzZmVhdHVyZS4KCjIwMDAtMDUtMzEgTGF1cnluYXMgQml2ZWluaXMgPGxhdXJhc0Bzb2Z0aG9tZS5uZXQ+CgoJKiBjcHBmaWxlcy5jOiBjb25kaXRpb25hbGx5IGRlZmluZSBPX0JJTkFSWS4KCShvcGVuX2luY2x1ZGVfZmlsZSk6IHBhc3MgT19CSU5BUlkgdG8gb3BlbigpLgoKMjAwMC0wNi0wMSAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAY3lnbnVzLmNvbT4KCgkqIGk5NjAuYyAoaTk2MF9icl9wcmVkaWN0X29wY29kZSk6IFJlbW92ZS4KCShpOTYwX3ByaW50X29wZXJhbmQpIFsrXTogRW1pdCBicmFuY2ggcHJlZGljdGlvbiBoaW50cy4KCShpOTYwX2Z1bmN0aW9uX2FyZyk6IFJldHVybiBlYXJseSBmb3IgVk9JRG1vZGUuCgkoaTk2MF9yb3VuZF9hbGlnbik6IFJldHVybiBlYXJseSBmb3IgaW5jb21wbGV0ZSB0eXBlcy4KCSogaTk2MC5oIChQUklOVF9PUEVSQU5EX1BVTkNUX1ZBTElEX1ApOiBOZXcuCgkqIGk5NjAubWQgKGFsbCBjb25kaXRpb25hbCBicmFuY2hlcyk6IEFkZCAiJSsiLgoKVGh1IEp1biAgMSAxMjoyNDoyMSAyMDAwICBSaWNoYXJkIEtlbm5lciAgPGtlbm5lckB2bHNpMS51bHRyYS5ueXUuZWR1PgoKCSogYWxpYXMuYyAoZ2V0X2FsaWFzX3NldCk6IERvbid0IGNhbGwgbGFuZ3VhZ2Utc3BlY2lmaWMgcm91dGluZSBtb3JlCgl0aGFuIGlzIG5lZWRlZCBhbmQgY2xlYW4gdXAgY29kZSBhIGJpdC4KCSogYy1jb21tb24uYyAoY19nZXRfYWxpYXNfc2V0KTogQWxsIHJlZmVyZW5jZXMgd2hvc2UgdHlwZQoJaXMgY2hhciBnZXQgYWxpYXMgc2V0IDAsIGJ1dCBjaGFyYWN0ZXIgdHlwZXMgbmVlZCBub3QuCgkqIHZhcmFzbS5jIChtYWtlX2Z1bmN0aW9uX3J0bCk6IERvbid0IGNhbGwgc2V0X21lbV9hdHRyaWJ1dGVzLgoJKG1ha2VfZGVjbF9ydGwpOiBEb24ndCBjYWxsIGl0IGZvciBGVU5DVElPTl9ERUNMLgoKMjAwMC0wNi0wMSAgQnJ1Y2UgS29yYiAgPGJrb3JiQGdudS5vcmc+CgoJKiBmaXhpbmMvdGVzdHMvYmFzZS8uLi46IG5ldyBiYXNlIHJlc3VsdCBmaWxlcwoKVGh1IEp1biAgMSAwOTozNzozNSAyMDAwICBDbGludG9uIFBvcGV0eiAgPGNwb3BldHpAY3lnbnVzLmNvbT4KCgkqIGNvbmZpZy9pMzg2L2kzODYuYyAoaXg4Nl91c2VfZmNvbWlfY29tcGFyZSk6IE1ha2UgZ2xvYmFsLgoJKiBjb25maWcvaTM4Ni9pMzg2LXByb3Rvcy5oIChpeDg2X3VzZV9mY29taV9jb21wYXJlKTogRGVjbGFyZS4KCSogY29uZmlnL2kzODYvaTM4Ni5tZCAoKmZwX2pjY18zLCAqZnBfamNjXzQpOiBEaXNhYmxlIGlmIHdlCgl3aWxsIHVzZSBGQ09NSS4KCjIwMDAtMDYtMDEgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgoJKiBNYWtlZmlsZS5pbiAoYy1kZWNsLm8pOiBEZXBlbmQgb24gJChFWFBSX0gpLCBub3QgZXhwci5oLgoKCSogYy1kZWNsLmMgKGluaXRfZGVjbF9wcm9jZXNzaW5nKTogU2V0IGxhbmdfZ2V0X2FsaWFzX3NldCBmaXJzdCB0aGluZy4KCjIwMDAtMDUtMzEgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgoJKiBjb25maWcvaWE2NC9pYTY0LmMgKHNkYXRhX3N5bWJvbGljX29wZXJhbmQpOiBDb25zaWRlciBzbWFsbAoJQ09OU1RBTlRfUE9PTF9BRERSRVNTX1AgYWRkcmVzc2VzIGZvciAuc2RhdGEuCgkqIGNvbmZpZy9pYTY0L3N5c3Y0LmggKFNFTEVDVF9SVFhfU0VDVElPTik6IE5ldy4KCjIwMDAtMDUtMzEgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgoJKiBjb25maWcvaWE2NC9pYTY0LXByb3Rvcy5oIChpYTY0X2V4cGFuZF9wcmVkaWN0aW9uKTogUmVtb3ZlLgoJKiBjb25maWcvaWE2NC9pYTY0LmMgKGlhNjRfZXhwYW5kX3ByZWRpY3Rpb24pOiBNb3ZlIGNvZGUgLi4uCgkoaWE2NF9wcmludF9vcGVyYW5kKSBbK106IC4uLiBoZXJlLiAgVXNlIGN1cnJlbnRfb3V0cHV0X2luc24uCgkqIGNvbmZpZy9pYTY0L2lhNjQuaCAoUFJJTlRfT1BFUkFORF9QVU5DVF9WQUxJRF9QKTogTmV3LgoJKiBjb25maWcvaWE2NC9pYTY0Lm1kIChhbGwgYnJhbmNoL2NhbGwgcGF0dGVybnMpOiBVc2UgJSsuCgoyMDAwLTA1LTMxICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEBjeWdudXMuY29tPgoKCSogaWZjdnQuYyAoY29uZF9leGVjX3Byb2Nlc3NfaW5zbnMpOiBEb24ndCBldmVyIGlnbm9yZSBjbG9iYmVycy4KCjIwMDAtMDUtMzEgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgoJKiBpZmN2dC5jIChtZXJnZV9pZl9ibG9jayk6IEJlIHByZXBhcmVkIGZvciBKT0lOIHRvIGhhdmUgbm8KCXJlbWFpbmluZyBlZGdlcy4KCShmaW5kX2lmX2Jsb2NrKTogQWxsb3cgVEhFTiB3aXRoIG5vIG91dGdvaW5nIGVkZ2VzLgoJKiBmbG93LmMgKG1lcmdlX2Jsb2Nrc19ub21vdmUpOiBSZW1vdmUgYSBiYXJyaWVyIG5vdCBmb2xsb3dpbmcKCWEganVtcCBhcyB3ZWxsLgoKMjAwMC0wNS0zMSAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAY3lnbnVzLmNvbT4KCgkqIGZsb3cuYyAocHJvcGFnYXRlX2Jsb2NrKTogTW92ZSBpbml0aWFsaXphdGlvbiBvZiBtZW1fc2V0X2xpc3QgLi4uCgkoaW5pdF9wcm9wYWdhdGVfYmxvY2tfaW5mbyk6IC4uLiBoZXJlLiAgQWxzbyB0cmFjayBibG9ja3Mgd2l0aAoJbm8gc3VjY2Vzc29yczsgZG9uJ3Qgc2NhbiBpbnNucyBpZiAhIFBST1BfU0NBTl9ERUFEX0NPREUuCgoyMDAwLTA1LTMxICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEBjeWdudXMuY29tPgoKCSoganVtcC5jIChqdW1wX29wdGltaXplXzEpOiBSZXZlcnQgMDUtMTggY2hhbmdlLgoKMjAwMC0wNS0zMSAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGludm9rZS50ZXhpOiBSZW1vdmUgZG9jdW1lbnRhdGlvbiBmb3IgLWZndWlkaW5nLWRlY2xzLgoKMjAwMC0wNS0zMSAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAY3lnbnVzLmNvbT4KCgkqIGNvbmZpZ3VyZS5pbjogRml4IHR5cG8gbGFzdCBjaGFuZ2UuCgoyMDAwLTA1LTMxICBQaGlsaXBwIFRob21hcyAgPHB0aG9tYXNAc3VzZS5kZT4KCgkqIGNvbmZpZ3VyZS5pbiAoZW5hYmxlLW5scyk6IEVuYWJsZSBpZiBidWlsZCA9PSBob3N0LCBpLmUuIHdoZW4KCW5vdCBidWlsZGluZyBhIGNhbmFkaWFuIGNyb3NzIGNvbXBpbGVyLgoJKGVuYWJsZS1tYWludGFpbmVyLW1vZGUpOiBBZGRlZCBmb3IgdXNlIHdpdGggaTE4bi4KCSogYWNsb2NhbC5tNCAoQU1fR05VX0dFVFRFWFQpOiBPbmx5IGJ1aWxkIGNhdGFsb2dzIHRoYXQgYXJlIGEKCWNyb3NzIHNlY3Rpb24gb2YgQUxMX0xJTkdVQVMgYW5kIExJTkdVQVMuCgkqIGNvbmZpZ3VyZTogUmVidWlsZC4KCjIwMDAtMDUtMzEgIEJydWNlIEtvcmIgIDxia29yYkBnbnUub3JnPgoKCSogZml4aW5jL2NoZWNrLnRwbDogcmV3b3JrIHRvIHVzZSB0ZXN0IHJlc3VsdCB0cmVlCgkqIGZpeGluYy9NYWtlZmlsZS5pbjogY2hhbmdlIGludm9jYXRpb24gb2YgY2hlY2sgc2NyaXB0CgkqIGZpeGluYy9jaGVjay5kaWZmOiBObyBsb25nZXIgbmVlZGVkCgkqIGZpeGluYy9maXhpbmNsLng6IHJlZ2VuZXJhdGUKCSogZml4aW5jL2luY2xoYWNrLmRlZjogIGFkZCBuZXcgdGVzdHMKCSogZml4aW5jL3Rlc3RzL2Jhc2UvYXJjaC9pOTYwL2FyY2hJOTYwLmg6ICBOZXcgdGVzdCByZXN1bHQKCSogZml4aW5jL3Rlc3RzL2Jhc2UvY3Vyc2VzLmg6IG1vZGlmaWVkIHRlc3QgcmVzdWx0CgkqIGZpeGluYy90ZXN0cy9iYXNlL3N0ZGlvLmg6IGRpdHRvCgkqIGZpeGluYy90ZXN0cy9iYXNlL3RpbWUuaDogZGl0dG8KCSogZml4aW5jL3Rlc3RzL2Jhc2Uvc3lzL2FzbS5oOiBkaXR0bwoJKiBmaXhpbmMvdGVzdHMvYmFzZS9zeXMvc3RhdC5oOiBkaXR0bwoJKiBmaXhpbmMvdGVzdHMvYmFzZS9zeXMvd2FpdC5oOiBkaXR0bwoKV2VkIE1heSAzMSAxMzoxNzoyMCAyMDAwICBQaGlsaXBwZSBEZSBNdXl0ZXIgIDxwaGRtQG1hY3FlbC5iZT4KCgkqIGV4Y2VwdC5jIChjbGVhcl9mdW5jdGlvbl9laF9yZWdpb24pOiBEbyBub3QgZnJlZSBOVUxMLgoKV2VkIE1heSAzMSAwODowNzo1MiAyMDAwICBSaWNoYXJkIEtlbm5lciAgPGtlbm5lckB2bHNpMS51bHRyYS5ueXUuZWR1PgoKCSogTWFrZWZpbGUuaW4gKGMtZGVjbC5vKTogRGVwZW5kIG9uIHJ0bC5oIGFuZCBleHByLmguCgkqIGFsaWFzLmMgKHN0cnVjdCBhbGlhc19lbnRyeSk6IGFsaWFzX3NldCBpcyBIT1NUX1dJREVfSU5ULgoJKFJFR19CQVNFX1ZBTFVFKTogUmVtb3ZlIHVubmVlZGVkIGNhc3QgdG8gdW5zaWduZWQuCgkoZ2V0X2FsaWFzX3NldF9lbnRyeSk6IEFMSUFTX1NFVCBhcmcgaXMgSE9TVF9XSURFX0lOVC4KCShmaW5kX2Jhc2VfZGVjbCk6IE5ldyBmdW5jdGlvbiwgZnJvbSBjX2ZpbmRfYmFzZV9kZWNsIGluIGMtY29tbW9uLmMuCgkobmV3X2FsaWFzX3NldCk6IE1vdmVkIGZyb20gdHJlZS5jOyByZXR1cm4gaXMgSE9TVF9XSURFX0lOVC4KCShnZXRfYWxpYXNfc2V0KTogTGlrZXdpc2UuCglNYWpvciByZXdvcmsgdG8gZG8gbW9yZSB0aGluZ3MgYW5kIGFsbG93IGxhbmd1YWdlLXNwZWNpZmljIGNvZGUKCXRvIGp1c3QgaGFuZGxlIHNwZWNpYWwtY2FzZXMuCgkocmVjb3JkX2FsaWFzX3N1YnNldCk6IEFyZ3MgYXJlIEhPU1RfV0lERV9JTlQuCgkocmVjb3JkX2NvbXBvbmVudF9hbGlhcyk6IExvY2FsIHZhcnMgYXJlIEhPU1RfV0lERV9JTlQuCglEb24ndCBoYW5kbGUgQ09NUExFWF9FWFBSLgoJKGdldF92YXJhcmdzX2FsaWFzX3NldCk6IE1vdmVkIGZyb20gYnVpbHRpbnMuYy4KCShnZXRfZnJhbWVfYWxpYXNfc2V0KTogTmV3IGZ1bmN0aW9uLgoJKiBidWlsdGlucy5jIChleHBhbmRfYnVpbHRpbl9yZXR1cm5fYWRkcmVzcyk6IFVzZSBmcmFtZSBhbGlhcyBzZXQuCgkoZXhwYW5kX2J1aWx0aW5fc2V0am1wLCBleHBhbmRfYnVpbHRpbl9sb25nam1wKTogVXNlIGFsaWFzIHNldAoJZm9yIHNldGptcCBidWZmZXIuCgkoZ2V0X21lbW9yeV9ydHgpOiBSZXdvcmsgdG8gdXNlIHNldF9tZW1fYXR0cmlidXRlcy4KCShnZXRfdmFyYXJnc19hbGlhc19zZXQpOiBEZWxldGVkIGZyb20gaGVyZS4KCSogYy1jb21tb24uYyAoY19hcHBseV90eXBlX3F1YWxzX3RvX2RlY2wpOiBBbGlhcyBzZXRzIG5vdyBIT1NUX1dJREVfSU5ULgoJKGNfZmluZF9iYXNlX2RlY2wpOiBEZWxldGVkIGZyb20gaGVyZS4KCShjX2dldF9hbGlhc19zZXQpOiBSZW1vdmUgbWFueSBjYXNlcyBhbmQgcmV3b3JrIHRvIGp1c3QgaGFuZGxlCglDLXNwZWNpZmljIGNhc2VzLgoJKiBjLWNvbW1vbi5oIChjX2dldF9hbGlhc19zZXQpOiBSZXR1cm5zIEhPU1RfV0lERV9JTlQuCgkqIGMtZGVjbC5jIChydGwuaCwgZXhwci5oKTogTm93IGluY2x1ZGVkLgoJKGluaXRfZGVjbF9wcm9jZXNzaW5nKTogQ2FsbCByZWNvcmRfY29tcG9uZW50X2FsaWFzZXMgb24gYXJyYXkgdHlwZXMuCgkoZ3Jva2RlY2xhcmF0b3IpOiBMaWtld2lzZS4KCVNldCBUUkVFX0FERFJFU1NBQkxFIGZvciBhbGwgZmllbGRzIHRoYXQgYXJlIG5vdCBiaXRmaWVsZHMuCgkqIGMtdHlwZWNrLmMgKGNvbW1vbl90eXBlKTogQ2FsbCByZWNvcmRfY29tcG9uZW50X2FsaWFzZXMgZm9yIGFycmF5LgoJKiBjYWxsZXItc2F2ZS5jIChzZXR1cF9zYXZlX2FyZWFzKTogUmV3b3JrIHJlZ2lzdGVyIGxvb3AgZm9yIHVuc2lnbmVkLgoJU2V0IGFsbCBzYXZlIGFyZWFzIHRvIHRoZSBmcmFtZSBhbGlhcyBzZXQuCgkqIGNhbGxzLmMgKGluaXRpYWxpZV9hcmd1bWVudF9pbmZvcm1hdGlvbik6IENhbGwgc2V0X21lbV9hdHRyaWJ1dGVzLgoJKGNvbXB1dGVfYXJndW1lbnRfYWRkcmVzc2VzLCBleHBhbmRfY2FsbCk6IExpa2V3aXNlLgoJKiBleHBsb3cuYyAoc2V0X21lbV9hdHRyaWJ1dGVzKTogTmV3IGZ1bmN0aW9uLgoJKHN0YWJpbGl6ZSk6IFVzZSBNRU1fQ09QWV9BVFRSSUJVVEVTIGFuZCBmb3JjZV9yZWcuCgkqIGV4cHIuYyAoc3RydWN0IG1vdmVfYnlfcGllY2VzKTogUmVtb3ZlIHt0byxmcm9tfV97c3RydWN0LHJlYWRvbmx5fS4KCUxFTiBhbmQgT0ZGU0VUIG5vdyBIT1NUX1dJREVfSU5ULgoJKGNsZWFyX2J5X3BpZWNlcyk6IFNpbWlsYXIgY2hhbmdlcy4KCShtb3ZlX2J5X3BpZWNlcyk6IExFTiBub3cgSE9TVF9XSURFX0lOVDsgZG9uJ3Qgc2V0IGRlbGV0ZWQgZmllbGRzLgoJKG1vdmVfYnlfcGllY2VzX25pbnNucyk6IE5vdyByZXR1cm5zIHVuc2lnbmVkIEhPU1RfV0lERV9JTlQuCgkobW92ZV9ieV9waWVjZXNfMSk6IERvbid0IHVzZSBkZWxldGVkIGZpZWxkcywgdXNlIE1FTV9DT1BZX0FUVFJJQlVURVMuCgkoY2xlYXJfYnlfcGllY2VzXzEpOiBMaWtld2lzZS4KCShlbWl0X3B1c2hfaW5zbik6IENhbGwgc2V0X21lbV9hdHRyaWJ1dGVzLgoJKGV4cGFuZF9leHByLCBjYXNlIElORElSRUNUX1JFRik6IExpa2V3aXNlLgoJKGV4cGFuZF9leHByLCBjYXNlIFZBUl9ERUNMKTogQ2FsbCBjaGFuZ2VfYWRkcmVzcy4KCSogZXhwci5oIChBRERfUEFSTV9TSVpFLCBTVUJfUEFSTV9TSVpFKTogVXNlIGhvc3RfaW50ZWdlcnAgYW5kCgl0cmVlX2xvd19jc3QuCgkoZ2V0X3ZhcmFyZ3NfYWxpYXNfc2V0LCBnZXRfZnJhbWVfYWxpYXNfc2V0KTogTmV3IGRlY2xzLgoJKHJlY29yZF9iYXNlX3ZhbHVlLCByZWNvcmRfYWxpYXNfc3Vic2V0LCBsYW5nX2dldF9hbGlhc19zZXQpOiBMaWtld2lzZS4KCShuZXdfYWxpYXNfc2V0LCBzZXRfbWVtX2F0dHJpYnV0ZXMpOiBMaWtld3NlLgoJKiBmdW5jdGlvbi5jIChzdHJ1Y3QgdGVtcF9zbG90KTogQUxJQVNfU0VUIGlzIEhPU1RfV0lERV9JTlQuCgkoYXNzaWduX3N0YWNrX3RlbXBfZm9yX3R5cGUpOiBMaWtld2lzZS4KCUNhbiBzcGxpdCBzbG90IGV2ZW4gaWYgYWxpYXMgc2V0IHNpbmNlIGNhbiBjb3B5LgoJU2V0IE1FTV9BTElBU19TRVQgYW5kIE1FTV9TRVRfSU5fU1RSVUNUX1AuCgkoYXNzaWduX3RlbXApOiBVc2UgaG9zdF9pbnRlZ2VycCBhbmQgdHJlZV9sb3dfY3N0LgoJKHB1dF92YXJfaW50b19zdGFjayk6IFByb3Blcmx5IGhhbmRsZSBTQVZFX0VYUFIuCgkocHV0X2FkZHJlc3NvZl9pbnRvX3N0YWNrKTogTGlrZXdpc2UuCgkoYXNzaWduX3Bhcm1zKTogQ2FsbCBzZXRfbWVtX2F0dHJpYnV0ZXMuCglEZWxldGUgI2lmIDAgY29kZS4KCShmaXhfbGV4aWNhbF9hZGRyZXNzKTogUHV0IHJlZmVyZW5jZSB0byBjaGFpbiBpbnRvIGZyYW1lIGFsaWFzIHNldC4KCShleHBhbmRfZnVuY3Rpb25fc3RhcnQpOiBDYWxsIHNldF9tZW1fYXR0cmlidXRlcy4KCSogaW50ZWdyYXRlLmMgKGV4cGFuZF9pbmxpbmVfZnVuY3Rpb24pOiBMaWtld2lzZS4KCSogcmVjb2cuYyAoYWRqX29mZnNldHRhYmxlX29wZXJhbmQpOiBVc2UgTUVNX0NPUFlfQVRUUklCVVRFUy4KCSogcmVnbW92ZS5jICh0cnlfYXBwbHlfc3RhY2tfYWRqdXN0bWVudCk6IExpa2V3aXNlLgoJKiByZWxvYWQuYyAocHVzaF9yZWxvYWQsIG1ha2VfbWVtbG9jKTogTGlrZXdpc2UuCgkqIHJlbG9hZDEuYyAoYWx0ZXJfcmVnKTogTWFrZSBhbGlhcyBzZXRzIGZvciBzcGlsbGVkIHBzZXVkb3MuCgkqIHJ0bC5kZWYgKE1FTSk6IFVwZGF0ZSBjb21tZW50LgoJKiBydGwuaCAoTUVNX0FMSUFTX1NFVCk6IE5vdyB1c2VzIFhDV0lOVC4KCShtb3ZlX2J5X3BpZWNlcyk6IENoYW5nZSBsZW5ndGggdG8gSE9TVF9XSURFX0lOVC4KCShyZWNvcmRfYmFzZV92YWx1ZSwgcmVjb3JkX2FsaWFzX3N1YnNldCk6IERlbGV0ZSBmcm9tIGhlcmUuCgkqIHN0bXQuYyAoZXhwYW5kX2RlY2wpOiBDYWxsIHNldF9tZW1fYXR0cmlidXRlcy4KCSogc3Rvci1sYXlvdXQuYyAoZmluaXNoX3JlY29yZF9sYXlvdXQpOiBDYWxsIHJlY29yZF9jb21wb25lbnRfYWxpYXNlcy5pCgkqIHRvcGxldi5jIChjb21waWxlX2ZpbGUpOiBDYWxsIGluaXRfYWxpYXNfb25jZSBlYXJsaWVyLgoJKiB0cmVlLmMgKGxhbmdfZ2V0X2FsaWFzX3NldCwgZ2V0X2FsaWFzX3NldCwgbmV3X2FsaWFzX3NldCk6IERlbGV0ZWQKCWZyb20gaGVyZTogbm93IGluIGFsaWFzLmMuCgkqIHRyZWUuaCAoc3RydWN0IHRyZWVfdHlwZSk6IGFsaWFzX3NldCBpcyBIT1NUX1dJREVfSU5ULgoJKHN0cnVjdCB0cmVlX2RlY2wpOiBMaWtld2lzZS4KCShnZXRfYWxpYXNfc2V0LCBuZXdfYWxpYXNfc2V0LCBsYW5nX2dldF9hbGlhc19zZXQpOiBEZWxldGVkIGZyb20gaGVyZS4KCSogdmFyYXNtLmMgKG1ha2VfZnVuY3Rpb25fcnRsLCBtYWtlX2RlY2xfcnRsKTogQ2FsbCBzZXRfbWVtX2F0dHJpYnV0ZXMuCgkob3V0cHV0X2NvbnN0YW50X2RlZiwgZm9yY2VfY29uc3RfbWVtKTogTGlrZXdpc2UuCgoJKiBmbG93LmMgKHByb3BhZ2F0ZV9ibG9jayk6IElmIGJsb2NrIGhhcyBubyBzdWNjZXNzb3JzLCBzdG9yZXMgdG8KCWZyYW1lIGFyZSBkZWFkIGlmIG5vdCB1c2VkLgoKMjAwMC0wNS0zMSAgTmF0aGFuIFNpZHdlbGwgIDxuYXRoYW5AY29kZXNvdXJjZXJ5LmNvbT4KCgkqIHN0bXQgKGV4cGFuZF9lbmRfY2FzZSk6IFJlb3JkZXIgY29udmVyc2lvbiBzZXF1ZW5jZSBmb3IganVtcAoJdGFibGUgdG8gYXZvaWQgZXh0cmEgdHJ1bmNhdGlvbnMuCgpXZWQgTWF5IDMxIDAxOjMxOjQyIDIwMDAgIEplZmZyZXkgQSBMYXcgIChsYXdAY3lnbnVzLmNvbSkKCgkqIGlmY3Z0LmMgKGNvbmRfZXhlY19wcm9jZXNzX2lmX2Jsb2NrKTogRG8gbm90aGluZyBpZiB0aGUgbGFzdCBpbnNuCglpbiB0aGUgYmxvY2sgaXMgbW9yZSB0aGFuIGp1c3QgYSBzaW1wbGUgY29uZGl0aW9uYWwgYnJhbmNoLgoJKG5vY2VfcHJvY2Vzc19pZl9ibG9jayk6IFNpbWlsYXJseS4KClR1ZSBNYXkgMzAgMjI6MjU6NTcgMjAwMCAgQWxleGFuZHJlIE9saXZhICA8YW9saXZhQGN5Z251cy5jb20+CgoJKiBvcHRhYnMuYyAocHJlcGFyZV9mbG9hdF9saWJfY21wKTogUHJvdGVjdCAqcHggYW5kICpweSBmcm9tCglxdWV1ZS4KCjIwMDAtMDUtMzAgIE1pY2hhZWwgTWVpc3NuZXIgIDxtZWlzc25lckByZWRoYXQuY29tPgoKCSogZHdhcmYyb3V0LmMgKGR3YXJmMm91dF9mcmFtZV9kZWJ1Z19leHByKTogSWdub3JlIEhJR0gKCWluc3RydWN0aW9ucy4gIFRyZWF0IExPX1NVTSBvcGVyYXRpb25zIGFzIGxvYWRpbmcgdGhlIGZ1bGwgaW50ZWdlcgoJY29uc3RhbnQuCgoyMDAwLTA1LTMwICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEBjeWdudXMuY29tPgoKCSogY29tYmluZS5jIChnZXRfcG9zX2Zyb21fbWFzayk6IFRlc3QgZXhhY3RfbG9nMiByZXN1bHQgYXMgc2lnbmVkLgoKMjAwMC0wNS0zMCAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAY3lnbnVzLmNvbT4KCgkqIGJiLXJlb3JkZXIuYyAoZW1pdF9qdW1wX3RvX2Jsb2NrX2FmdGVyKTogUHJvdGVjdCB1c2Ugb2YgSEFWRV9yZXR1cm4uCgoyMDAwLTA1LTMwICBCcnVjZSBLb3JiICA8YmtvcmJAZ251Lm9yZz4KCgkqIGZpeGluYy90ZXN0cy8qOiAgQWRkZWQgZXhwZWN0ZWQgcmVzdWx0IGZpbGVzIGZvciBmaXhpbmMncyBtYWtlIGNoZWNrCgkqIGZpeGluYy9maXhmaXhlcyhjaGFyX21hY3JvXypfZml4KTogUmVzdG9yZSBvcmlnaW5hbCBhbGdvcml0aG0KCjIwMDAtMDUtMzAgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgoJKiBjb25maWcvYWxwaGEvYWxwaGEubWQgKCpzZXRuZV9pbnRlcm5hbCk6IFVzZSBtYXRjaF9vcGVyYXRvcgoJaW5zdGVhZCBvZiB3b3JraW5nIGRvd24gZnJvbSBpbnNuLgoKMjAwMC0wNS0zMCAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogaW52b2tlLnRleGkgKC1XdHJhZGl0aW9uYWwpOiBVcGRhdGUgV1JUIGZ1bmN0aW9uIG1hY3Jvcy4KClR1ZSBNYXkgMzAgMDk6NTc6MzIgMjAwMCAgUGhpbGlwcGUgRGUgTXV5dGVyICA8cGhkbUBtYWNxZWwuYmU+CgoJKiBleGNlcHQuYyAoZnJlZV9leGNlcHRpb25fdGFibGUpOiBEbyBub3QgZnJlZSBOVUxMLgoKMjAwMC0wNS0yOSAgWmFjayBXZWluYmVyZyAgPHphY2tAd29sZXJ5LmN1bWIub3JnPgoKCSogY3BwbGliLmMgKGRvX2lmKTogRG9uJ3Qgc2F2ZSBhbmQgcmVzdG9yZSBvbmx5X3NlZW5fd2hpdGUgaGVyZS4KCSogY3BwZXhwLmMgKF9jcHBfcGFyc2VfZXhwcik6IFNhdmUgYW5kIHJlc3RvcmUgb25seV9zZWVuX3doaXRlCglhbmQgc2tpcHBpbmcgaGVyZS4KCjIwMDAtMDUtMjkgIFJpY2hhcmQgRWFybnNoYXcgKHJlYXJuc2hhQGFybS5jb20pCgoJKiBmbG93LmMgKG1hcmtfdXNlZF9yZWcpOiBJZiBhIHJlZ2lzdGVyIGlzIHVuY29uZGl0aW9uYWxseSBsaXZlLAoJcmVtb3ZlIGFueSBjb25kaXRpb25hbCBkZWF0aCBpbmZvcm1hdGlvbi4KCjIwMDAtMDUtMjkgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgoJKiBmaW5hbC5jIChjdXJyZW50X291dHB1dF9pbnNuKTogTmV3LgoJKGZpbmFsX3NjYW5faW5zbik6IFNldCBpdC4KCSogb3V0cHV0Lmg6IERlY2xhcmUgaXQuCgoyMDAwLTA1LTI5ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEBjeWdudXMuY29tPgoKCSogc3Rvci1sYXlvdXQuYyAoZmluYWxpemVfcmVjb3JkX3NpemUpOiBGaXggdHlwby4KCgkqIGp1bXAuYyAocmVkaXJlY3RfanVtcCk6IERvbid0IGVtaXQgTk9URV9JTlNOX0ZVTkNUSU9OX0VORAoJaWYgbmxhYmVsIGlzIG51bGwuCgoyMDAwLTA1LTI5ICBaYWNrIFdlaW5iZXJnICA8emFja0B3b2xlcnkuY3VtYi5vcmc+CgoJKiBjcHBsaWIuaCAoY3BwX3JlYWRlcik6IFJlbW92ZSBpZl9zdGFjay4gIENoYW5nZQoJcG90ZW50aWFsX2NvbnRyb2xfbWFjcm8gdG8gYSBjcHBfaGFzaG5vZGUgKi4gIEFkZCBza2lwcGluZyBmbGFnLgoJKiBjcHBoYXNoLmggKHN0cnVjdCBpaGFzaCk6IENoYW5nZSBjb250cm9sX21hY3JvIHRvIGEKCWNwcF9oYXNobm9kZSAqIGFuZCBzaG9ydGVuIG5hbWUgdG8gY21hY3JvLgoJQWRkIE5FVkVSX1JFSU5DTFVERSBjb25zdGFudC4KCgkqIGNwcGZpbGVzLmMgKHJlZHVuZGFudF9pbmNsdWRlX3ApOiBEcm9wIGNwcF9yZWFkZXIgYXJndW1lbnQuCglFeGFtaW5lIHRoZSBjbWFjcm8gbm9kZSBkaXJlY3RseSwgbm8gbmVlZCB0byBjYWxsIGNwcF9kZWZpbmVkLgoJKF9jcHBfZXhlY3V0ZV9pbmNsdWRlLCByZWFkX2luY2x1ZGVfZmlsZSk6IFNldCBjbWFjcm8gdG8KCU5FVkVSX1JFSU5DTFVERSwgbm90IFUiIi4KCSogY3BwbGV4LmMgKGNwcF9wdXNoX2J1ZmZlcik6IERvbid0IHNldCBuZXctPmlmX3N0YWNrLgoJKGNwcF9nZXRfdG9rZW4pOiBJZiBwZmlsZS0+c2tpcHBpbmcgaXMgdHJ1ZSwgZGlzY2FyZCB0ZXh0IGFuZAoJa2VlcCBzY2FubmluZyB1bnRpbCB3ZSBoaXQgYSBkaXJlY3RpdmU7IGRvbid0IGV4cGFuZCBtYWNyb3MuCgoJKiBjcHBsaWIuYyAoc3RydWN0IGlmX3N0YWNrKTogUmVtb3ZlIGlmX3N1Y2NlZWRlZCwgYWRkCgl3YXNfc2tpcHBpbmcuIENoYW5nZSBjb250cm9sX21hY3JvIHRvIGEgY3BwX2hhc2hub2RlICogYW5kCglzaG9ydGVuIG5hbWUgdG8gY21hY3JvLiAgUmVtb3ZlIHR5cGVkZWYgSUZfU1RBQ0suCgkocGFyc2VfaWZkZWYpLCBkZXRlY3RfaWZfbm90X2RlZmluZWQpOiBSZXR1cm4gYSBjcHBfaGFzaG5vZGUgKi4KCShjb25kaXRpb25hbF9za2lwLCBza2lwX2lmX2dyb3VwLAoJY29uc2lkZXJfZGlyZWN0aXZlX3doaWxlX3NraXBwaW5nKTogRGVsZXRlLgoJKHB1c2hfY29uZGl0aW9uYWwpOiBOZXcuCgkoX2NwcF9oYW5kbGVfZGlyZWN0aXZlKTogRG9uJ3QgcHJvY2VzcyBkaXJlY3RpdmVzIG90aGVyIHRoYW4KCWNvbmRpdGlvbmFscyBpZiB3ZSBhcmUgc2tpcHBpbmcuCgoJKGRvX2lmZGVmLCBkb19pZm5kZWYsIGRvX2lmLCBkb19lbHNlLCBkb19lbGlmLCBkb19lbmRpZik6CglVcGRhdGUgdG8gbmV3IHNjaGVtZS4KCSh2YWxpZGF0ZV9lbHNlKTogU2tpcCByZXN0IG9mIGxpbmUgaGVyZSwgdW5jb25kaXRpb25hbGx5LgoJKF9jcHBfdW53aW5kX2lmX3N0YWNrKTogVGhlIHN0YWNrIGlzIHBlci1idWZmZXIuICBGb3JjZQoJcGZpbGUtPnNraXBwaW5nIG9mZi4KCgkoYWxsKTogUmVtb3ZlIGBzY2FyZSBxdW90ZXMnIGZyb20gZXJyb3IgbWVzc2FnZXMuCgoyMDAwLTA1LTI5ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEBjeWdudXMuY29tPgoKCSogZnVuY3Rpb24uYyAoZW1pdF9yZXR1cm5faW50b19ibG9jayk6IE5ldyBsaW5lX25vdGUgYXJnOyBlbWl0IGl0LgoJKHRocmVhZF9wcm9sb2d1ZV9hbmRfZXBpbG9ndWVfaW5zbnMpOiBBdHRlbXB0IHRvIGxvY2F0ZSBhIGxpbmUgbm90ZQoJZm9yIHRoZSBjbG9zZSBicmFjZSB0byBhY2NvbXBhbnkgSEFWRV9yZXR1cm4uICBNb3ZlIGFsbCBsaW5lIG5vdGVzCglmb2xsb3dpbmcgdGhlIGVwaWxvZ3VlIHRvIGJlZm9yZSB0aGUgTk9URV9JTlNOX0VQSUxPR1VFX0JFRy4KCjIwMDAtMDUtMjkgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgoJKiBsb25nbG9uZy5oIFtfX2FscGhhXSAoY291bnRfbGVhZGluZ196ZXJvcyk6IE5ldy4KCShjb3VudF90cmFpbGluZ196ZXJvcyk6IE5ldy4KCShDT1VOVF9MRUFESU5HX1pFUk9TXzApOiBOZXcuCgoJKiBjb25maWcvYWxwaGEvYWxwaGEuYyAoYWxwaGFfemVyb19jb21wYXJpc29uX29wZXJhdG9yKTogTmV3LgoJKGFscGhhX3NwbGl0X2NvbmRpdGlvbmFsX21vdmUpOiBOZXcuCgkqIGNvbmZpZy9hbHBoYS9hbHBoYS1wcm90b3MuaDogUHJvdG90eXBlIHRoZW0uCgkqIGNvbmZpZy9hbHBoYS9hbHBoYS5oIChQUkVESUNBVEVfQ09ERVMpOiBVcGRhdGUuCgkoQ1BQX0NQVV9ERUZBVUxUX1NQRUMpOiBGaXggdHlwbyBmb3IgRVY2Ny4KCSogY29uZmlnL2FscGhhL2FscGhhLm1kOiBVcGRhdGUgZmZzIGNpeCBjb21tZW50YXJ5LgoJKCp6ZV9hbmRfbmUpOiBOZXcuCgkoKm5hYnNzZjIsICpuYWJzZGYyKTogTmV3LgoJKCptb3ZbcWhzZF1pY2NfaW50ZXJuYWwpOiBVc2UgYWRkX29wZXJhbmQuCgkoaWZfdGhlbl9lbHNlIGNvbnN0YW50IHNwbGl0dGVycyk6IE5ldy4KCSgqY21wX3NhZGRfZGksICpjbXBfc2FkZF9zaSwgKmNtcF9zYWRkX3NpZGkpOiBOZXcuCgkoKmNtcF9zc3ViX2RpLCAqY21wX3NzdWJfc2ksICpjbXBfc3N1Yl9zaWRpKTogTmV3LgoKMjAwMC0wNS0yOSAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAY3lnbnVzLmNvbT4KCgkqIGNvbWJpbmUuYyAoZm9yY2VfdG9fbW9kZSkgW01JTlVTXTogQ29udmVydCBzdWJ0cmFjdGlvbiBmcm9tCglhIGNvbnN0YW50IHRvIE5FRyBvciBOT1Qgd2hlbiBjb25kaXRpb25zIGFsbG93LgoKCSogY29tYmluZS5jIChjb21iaW5lX3NpbXBsaWZ5X3J0eCk6IERvbid0IGNyZWF0ZSBhbiBpZl90aGVuX2Vsc2UKCXVubGVzcyBib3RoIGFyZ3MgYXJlIGdlbmVyYWxfb3BlcmFuZC4gIERvbid0IGNhbm9uaWNhbGl6ZSBwbHVzCgl0byBpb3IgdW5sZXNzIGl0IGhlbHBzLgoKCSogdG9wbGV2LmMgKHJlc3Rfb2ZfY29tcGlsYXRpb24pOiBTZXQgbm9fbmV3X3BzZXVkb3MgYWZ0ZXIgZmxvdzE7CglpbnN0ZWFkIHRyYWNrIHJlZ2lzdGVyX2xpZmVfdXBfdG9fZGF0ZS4gIFRvZ2dsZSBub19uZXdfcHNldWRvcwoJYXJvdW5kIGlmX2NvbnZlcnQuCgoyMDAwLTA1LTI4ICBHZW9mZiBLZWF0aW5nICA8Z2VvZmZrQGN5Z251cy5jb20+CgoJKiBjb25maWcvcnM2MDAwL3JzNjAwMC5jIChvdXRwdXRfY2JyYW5jaCk6IEVzY2FwZSAnJScgY2hhcmFjdGVycwoJc28gb3V0cHV0X29wZXJhbmQgZG9lc24ndCBzZWUgdGhlbS4KClN1biBNYXkgMjggMTg6Mzc6MDcgMjAwMCAgQ2xpbnRvbiBQb3BldHogIDxjcG9wZXR6QGN5Z251cy5jb20+CgoJKiBsY20uYyAobWFrZV9wcmVkc19vcGFxdWUpOiBGaXggY29tbWVudC4KCShvcHRpbWl6ZV9tb2RlX3N3aXRjaGluZyk6IFVzZSBOT1JNQUxfTU9ERSBpbnN0ZWFkIG9mCglNT0RFX1VTRVNfSU5fRVhJVF9CTE9DSy4gIENoYW5nZSBsZWZ0b3ZlciBpbnN0YW5jZSBvZgoJRlBfTU9ERV9OT05FIHRvIG5vX21vZGUuICBSZW5hbWUgTU9ERV9BVF9FTlRSWSB0byBOT1JNQUxfTU9ERS4KCUhhbmRsZSBpbnNlcnRpb25zIGJlZm9yZSBhbiBleGlzdGluZyBOT1RFX0lOU05fQkFTSUNfQkxPQ0suCgkqIHRtLnRleGkgKE9QVElNSVpFX01PREVfU1dJVENISU5HKTogUmVmZXIgdG8gTk9STUFMX01PREUuCgkoTU9ERV9VU0VTX0lOX0VYSVRfQkxPQ0spOiBEZWxldGUuCgkoTU9ERV9BVF9FTlRSWSkgUmVuYW1lIHRvIE5PUk1BTF9NT0RFLgoJKiBzaC5oIChNT0RFX1VTRVNfSU5fRVhJVF9CTE9DSyk6IERlbGV0ZS4KCShNT0RFX0FUX0VOVFJZKTogUmVuYW1lIHRvIE5PUk1BTF9NT0RFLgoJKE1PREVfTkVFREVEKTogRG9uJ3QgbG9vayBmb3IgVVNFLgoJKEVQSUxPR1VFX1VTRVMpOiBEZWZpbmUuCgpTdW4gTWF5IDI4IDIzOjI2OjU5IDIwMDAgIFBoaWxpcHBlIERlIE11eXRlciA8cGhkbUBtYWNxZWwuYmU+CgoJKiBta2xpYmdjYy5pbiAoYWxsKTogVmFyaWFibGUgaW5pdGlhbGl6ZWQgdG8gYGxpYmdjYycuCgoyMDAwLTA1LTI4ICBHYWJyaWVsIERvcyBSZWlzICA8Z2RyQGNvZGVzb3VyY2VyeS5jb20+CgoJKiB0b3BsZXYuaCAoc2tpcF9sZWFkaW5nX3N1YnN0cmluZyk6IE5ldyBtYWNyby4KCSogdG9wbGV2LmMgKGRlY29kZV9mX29wdGlvbik6IFVzZSBza2lwX2xlYWRpbmdfc3Vic3RyaW5nIGluc3RlYWQKCW9mIHN0cm5jbXAuCgkoZGVjb2RlX1dfb3B0aW9uKTogTGlrZXdpc2UuCgoyMDAwLTA1LTI4ICBOaWNrIENsaWZ0b24gIDxuaWNrY0BjeWdudXMuY29tPgoKCSogdG0udGV4aSAoQ09ORElUSU9OQUxfUkVHSVNURVJfVVNBR0UpOiBEb2N1bWVudCB0aGF0IGl0IGNhbgoJbW9kaWZ5IHJlZ19uYW1lcy4KCjIwMDAtMDUtMjggIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgoJKiByZWdjbGFzcy5jIChyZWNvcmRfb3BlcmFuZF9jb3N0cyk6IFByb3RlY3QgcmVnX2NoYW5nZXNfc2l6ZQoJd2l0aCBDTEFTU19DQU5OT1RfQ0hBTkdFX1NJWkUuCgoJKiBsb29wLmMgKGluc3RydW1lbnRfbG9vcF9iY3QpOiBTZXQgSlVNUF9MQUJFTCBvbiB0aGUgbmV3IGluc24uCgoyMDAwLTA1LTI4ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEBjeWdudXMuY29tPgoKCSogZnVuY3Rpb24uYyAoZGlkZGxlX3JldHVybl92YWx1ZSk6IEEgcGNjLXN0eWxlIHN0cnVjdCByZXR1cm4KCXJldHVybnMgYSBwb2ludGVyLgoKMjAwMC0wNS0yNyAgWmFjayBXZWluYmVyZyAgPHphY2tAd29sZXJ5LmN1bWIub3JnPgoKCSogY3BwZmlsZXMuYzogUmVhZCBmaWxlcyBpbiwgdXNpbmcgbW1hcCBpZiBwb3NzaWJsZSwgdGhlbgoJcHJlc2NhbiB0aGVtIHNlcGFyYXRlbHkuCgkocmVhZF9maWxlLCByZWFkX3dpdGhfcmVhZCk6IE5ldyBmdW5jdGlvbnMuCgkqIGNwcGxleC5jOiBEb24ndCBkZWZpbmUgVUNIQVJfTUFYLgoJKF9jcHBfcmVhZF9hbmRfcHJlc2Nhbik6IFJlbmFtZSB0byBfY3BwX3ByZXNjYW4uICBEb24ndCByZWFkCgl0aGUgZmlsZSBoZXJlLgoKCSogY3BwaW5pdC5jIChoYW5kbGVfb3B0aW9uKTogQXV0b21hdGljYWxseSBkZWZpbmUgX19jcGx1c3BsdXMsCglfX09CSkNfXywgX19BU0VFTUJMRVJfXywgX0xBTkdVQUdFX0ZPUlRSQU4gaGVyZSB3aGVuIHdlIHNlZQoJdGhlIHJlc3BlY3RpdmUgLWxhbmcgc3dpdGNoLgoKCSogY3BwaGFzaC5oIChlbnVtIG5vZGVfdHlwZSwgc3RydWN0IGhhc2hub2RlLCBfY3BwX2xvb2t1cAoJcHJvdG90eXBlKTogTW92ZSB0by4uLgoJKiBjcHBsaWIuaDogLi4uIGhlcmUuICBSZW5hbWUgc3RydWN0IGhhc2hub2RlIHRvIHN0cnVjdAoJY3BwX2hhc2hub2RlIGFuZCBnaXZlIGl0IGEgdHlwZWRlZi4gIFJlbmFtZSBfY3BwX2xvb2t1cCB0bwoJY3BwX2xvb2t1cC4gIEFkZCAnZmVfdmFsdWUnIHNsb3QsIGEgdW5pb24gdHJlZV9ub2RlICouCgoyMDAwLTA1LTI3ICBHZW9mZnJleSBLZWF0aW5nICA8Z2VvZmZrQGN5Z251cy5jb20+CgoJKiBjb25maWcvcnM2MDAwL3JzNjAwMC5tZCAobW92c2kpOiBDb25zdGlmeSAnbmFtZScuCgoJKiByZWdjbGFzcy5jIFtDTEFTU19DQU5OT1RfQ0hBTkdFX1NJWkVdCgkoY2xhc3NfY2FuX2NoYW5nZV9zaXplKTogTmV3IHZhcmlhYmxlLgoJKHJlZ19jaGFuZ2VzX3NpemUpOiBOZXcgdmFyaWFibGUuCgkoaW5pdF9yZWdfc2V0c18xKTogSW5pdGlhbGl6ZSBjbGFzc19jYW5fY2hhbmdlX3NpemUuCgkocmVjb3JkX29wZXJhbmRfY29zdHMpOiBSZW1vdmUgc3VicmVnX2NoYW5nZXNfc2l6ZS4KCURvbid0IHBhc3MgaXQgYXJvdW5kLiAgSW5zdGVhZCB1cGRhdGUgcmVnX2NoYW5nZXNfc2l6ZS4KCShyZWdjbGFzcyk6IEluaXRpYWxpemUgYW5kIGZyZWUgcmVnX2NoYW5nZXNfc2l6ZS4gIElmIGEgcmVnaXN0ZXIKCWNoYW5nZXMgc2l6ZSwgZG9uJ3QgcHJlZmVyZW5jZSBpdCB0byBhIGNsYXNzIHRoYXQgY29udGFpbnMKCXJlZ2lzdGVycyB0aGF0IGNhbid0IGNoYW5nZSBzaXplLgoJKHJlY29yZF9yZWdfY2xhc3Nlcyk6IERvbid0IGxvb2sgYXQgc3VicmVnX2NoYW5nZXNfc2l6ZS4KCjIwMDAtMDUtMjcgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgoJKiBwcmludC1ydGwuYyAocmVnX25hbWVzKTogUmVtb3ZlIGNvbnN0LgoJKiByZWdjbGFzcy5jIChyZWdfbmFtZXMpOiBMaWtld2lzZS4KCSogcmVncy5oIChyZWdfbmFtZXMpOiBMaWtld2lzZS4KCSogaGFyZC1yZWctc2V0LmggKHJlZ19uYW1lcyk6IExpa2V3aXNlLgoKMjAwMC0wNS0yNyAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAY3lnbnVzLmNvbT4KCgkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLm1kICh1bnR5cGVkX2NhbGwpOiBVc2UgR0VOX0NBTEwuCgoyMDAwLTA1LTI3ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEBjeWdudXMuY29tPgoKCSogY29uZmlnL2FscGhhL2FscGhhLmMgKGFscGhhX2RvZXNfZnVuY3Rpb25fbmVlZF9ncCk6IFRlc3QKCVRBUkdFVF9QUk9GSUxJTkdfTkVFRFNfR1AgaW4gdGhlIGlmLCBpbnN0ZWFkIG9mIHdpdGggYW4gaWZkZWYuCgkoYWxwaGFfZXhwYW5kX3Byb2xvZ3VlKTogRW1pdCBwcm9sb2d1ZV9tY291bnQgaWYgbmVlZGVkLgoJKiBjb25maWcvYWxwaGEvYWxwaGEuaCAoVEFSR0VUX1BST0ZJTElOR19ORUVEU19HUCk6IERlZmF1bHQgdG8gMC4KCSogY29uZmlnL2FscGhhL2FscGhhLm1kIChwcm9sb2d1ZV9tY291bnQpOiBOZXcuCgkqIGNvbmZpZy9hbHBoYS9saW51eC5oIChGVU5DVElPTl9QUk9GSUxFUik6IFJlbW92ZS4KCShUQVJHRVRfUFJPRklMSU5HX05FRURTX0dQKTogVW5kZWYgYmVmb3JlIHJlZGVmaW5pbmcuCgkqIGNvbmZpZy9hbHBoYS9uZXRic2QuaDogTGlrZXdpc2UuCgoyMDAwLTA1LTI3ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEBjeWdudXMuY29tPgoKCSogY29uZmlnL2FscGhhL2VsZi5oIChTRUxFQ1RfU0VDVElPTik6IE1pcnJvciBLZW5uZXIncyBNYXkgMTkKCWNoYW5nZSB0byBjb25maWcvZWxmb3MuaC4KCjIwMDAtMDUtMjcgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgoJKiBNYWtlZmlsZS5pbiAocmVzb3VyY2Uubyk6IERlcGVuZCBvbiBleGNlcHQuaC4KCSogZXhjZXB0LmggKG91dHB1dF9leGNlcHRpb25fdGFibGVfZGF0YSk6IFByb3RvdHlwZS4KCSogZ2VuY29uZmlnLmMgKGdlbl9wZWVwaG9sZTIpOiBQcm90b3R5cGUuCgkqIGdlbmVtaXQuYyAobWFpbik6IEluY2x1ZGUgZ2djLmguCgkqIGdlbm91dHB1dC5jOiBSZXZlcnQgcGFydHMgb2YgbGFzdCBjaGFuZ2U6IGluY2x1ZGUgZXJyb3JzLmgKCShtYWluKTogU2V0IHByb2duYW1lLgoJKiByZWNvZy5jOiBJbmNsdWRlIGhhcmQtcmVnLXNldC5oIGJlZm9yZSByZWNvZy5oLgoJKiByZXNvdXJjZS5jOiBJbmNsdWRlIGV4Y2VwdC5oLgoKCSogY29uZmlnL2FscGhhL2FscGhhLXByb3Rvcy5oIChhbHBoYV9hcmdfaW5mb19yZWdfdmFsKTogUHJvdGVjdAoJd2l0aCBSVFhfQ09ERS4KCShhbHBoYV93cml0ZV9saW5rYWdlKTogUHJvdGVjdCB3aXRoIEJVRlNJWi4KCShhbHBoYV9uZWVkX2xpbmthZ2UpOiBVcGRhdGUgcHJvdG90eXBlLgoJKiBjb25maWcvYWxwaGEvYWxwaGEuYyAoZnVuY3Rpb25fYXJnKTogTW92ZSBWTVMgY29kZSBoZXJlLgoJKGFscGhhX2xpbmtzX2Jhc2UpOiBSZW1vdmUuCgkoYWxwaGFfbGlua3MpOiBOZXcuCgkobWFya19hbHBoYV9saW5rc19ub2RlLCBtYXJrX2FscGhhX2xpbmtzKTogTmV3LgoJKGFscGhhX3dyaXRlX29uZV9saW5rYWdlKTogTmV3LgoJKGFscGhhX25lZWRfbGlua2FnZSk6IFVzZSBhIHNwbGF5IHRyZWUuICBCdWlsZCB0aGUgbGlua2FnZSBzeW1ib2wuCgkoYWxwaGFfd3JpdGVfbGlua2FnZSk6IFVzZSBzcGxheV90cmVlX2ZvcmVhY2guCgkqIGNvbmZpZy9hbHBoYS9hbHBoYS5tZCAoY2FsbF92bXMpOiBVc2UgYWxwaGFfbmVlZF9saW5rYWdlCgl0byBnZXQgdGhlIGxpbmthZ2Ugc3ltYm9sLgoJKGNhbGxfdmFsdWVfdm1zKTogTGlrZXdpc2UuCgkqIGNvbmZpZy9hbHBoYS9lbGYuaCAob3V0cHV0X2ZpbGVfZGlyZWN0aXZlKTogUmVtb3ZlIGRlY2wuCgkoY3RvcnNfc2VjdGlvbiwgZHRvcnNfc2VjdGlvbik6IFByb3RvdHlwZS4KCShzYnNzX3NlY3Rpb24sIHNkYXRhX3NlY3Rpb24pOiBQcm90b3R5cGUuCgkqIGNvbmZpZy9hbHBoYS92bXMuaCAoRlVOQ1RJT05fQVJHKTogUmVtb3ZlLgoJKHJlYWRvbmx5X3NlY3Rpb24sIGxpbmtfc2VjdGlvbiwgbGl0ZXJhbHNfc2VjdGlvbik6IFByb3RvdHlwZS4KCShjdG9yc19zZWN0aW9uLCBkdG9yc19zZWN0aW9uKTogUHJvdG90eXBlLgoJKHZtc192YWxpZF9kZWNsX2F0dHJpYnV0ZV9wKTogUmVtb3ZlIGRlY2wuCgkoYWxwaGFfYXJnX3R5cGUsIGFscGhhX2FyZ19pbmZvX3JlZ192YWwpOiBMaWtld2lzZS4KCjIwMDAtMDUtMjcgIEdlb2ZmIEtlYXRpbmcgIDxnZW9mZmtAY3lnbnVzLmNvbT4KCgkqIHJlbG9hZC5jIChnZXRfc2Vjb25kYXJ5X21lbSk6IERvbid0IHdpZGVuIGZsb2F0aW5nLXBvaW50IG1vZGVzLgoKCSogY29tYmluZS5jIChzdWJzdCk6IEhvbm9yIENMQVNTX0NBTk5PVF9DSEFOR0VfU0laRSB3aGVuCglzdWJzdGl0dXRpbmcgdGhlIFJFRyBpbiBhIChzdWJyZWc6WCAocmVnOlkgLi4uKSkuCgoyMDAwLTA1LTI4ICBOZWlsIEJvb3RoICA8TmVpbEJAZWFydGhsaW5nLm5ldD4KCgkqIGNwcGxleC5jIChfY3BwX2xleF9saW5lKTogTWVyZ2UgdmVydGljYWwgc3BhY2UuICBGbGFnCglmaXJzdCB0b2tlbiBvZiBhIGxpbmUgQk9MLiAgVXBkYXRlIEVPRiBjb2RlIGZvciB0aGlzLgoJUmVtb3ZlIGlsbGVnYWwgZGlyZWN0aXZlIGNoZWNrIC0gaXQgYXBwZWFycyBpbiB0aGUgKG5vdAoJeWV0IGNvbW1pdHRlZCkgY2FsbGVyLgoJKiBjcHBsaWIuaCAoQk9MKTogTmV3IGZsYWcuCgoyMDAwLTA1LTI4ICBOZWlsIEJvb3RoICA8TmVpbEJAZWFydGhsaW5nLm5ldD4KCgkqIGNwcGxleC5jIChfY3BwX2luaXRfdG9rbGlzdCk6IE5vIGNvbW1lbnQgc3BhY2UgdG8gaW5pdGlhbGl6ZS4KCShfY3BwX2ZyZWVfdG9rbGlzdCk6IE5vIGNvbW1lbnQgc3BhY2UgdG8gZnJlZS4KCShleHBhbmRfY29tbWVudF9zcGFjZSk6IFJlbW92ZS4KCShzYXZlX2NvbW1lbnRfc3BhY2UpOiBQbGFjZSB0aGUgY29tbWVudCBpbiB0aGUgY3VycmVudCB0b2tlbiBhbmQKCW5vdCBpbiBhIHNlcGFyYXRlIGNvbW1lbnQgc3BhY2UuCgkoX2NwcF9sZXhfbGluZSk6IFNhdmUgY29tbWVudHMgZHVyaW5nIHBsYWluIGNvZGUgYW5kICNkZWZpbmUKCWRpcmVjdGl2ZXMgb25seS4KCSogY3BwbGliLmggKHN0cnVjdCBfY3BwX3Rva2xpc3QpOiBSZW1vdmUgY29tbWVudCBzcGFjZS4KCjIwMDAtMDUtMjggIE5laWwgQm9vdGggIDxOZWlsQkBlYXJ0aGxpbmcubmV0PgoKCSogY3BwZXhwLmMgKHBhcnNlX2Fzc2VydGlvbik6IFN1cHBseSBleHRyYSBhcmd1bWVudCB0bwoJX2NwcF9pbml0X3Rva2xpc3QuCgkqIGNwcGxpYi5jIChkb19hc3NlcnQsIGRvX3VuYXNzZXJ0KTogU2ltaWxhcmx5LgoJKiBjcHBoYXNoLmggKF9jcHBfaW5pdF90b2tsaXN0KSBVcGRhdGUuCgkoX2NwcF9leHBhbmRfdG9rZW5fc3BhY2UpOiBOZXcuCgkoRFVNTVlfVE9LRU4sIE5PX0RVTU1ZX1RPS0VOKTogTmV3LgoJKiBjcHBsZXguYyAoX2NwcF9pbml0X3Rva2xpc3QpOiBOZXcgYXJndW1lbnQuCgkocGFyc2Vfc3RyaW5nMik6IE5ldyBhcmd1bWVudCBtdWx0aWxpbmVfb2suCgkoc3BlbGxfdG9rZW4pOiBUYWtlIGEgY29uc3QgY3BwX3Rva2VuICouCgkoSU5JVF9OQU1FKTogUmVwbGFjZSB3aXRoIElOSVRfVE9LRU5fTkFNRS4gIFVwZGF0ZSB0b2tlbnNfdXNlZC4KCShTUEVMTF8gbWFjcm9zKTogUmVwbGFjZSB3aXRoIGVudW0uCgkoZXhwYW5kX3Rva2VuX3NwYWNlKTogUmVwbGFjZSB3aXRoIF9jcHBfZXhwYW5kX3Rva2VuX3NwYWNlLgoJVGFrZSBDT1VOVCBhcmd1bWVudC4KCShJU19ESVJFQ1RJVkUpOiBVcGRhdGUuCgkoX2NwcF9sZXhfbGluZSk6IFVwZGF0ZSB0b2tlbiBzdHJ1Y3R1cmUgYmVmb3JlIHBhcnNpbmcgbnVtYmVyLgoJRG9uJ3QgYXNzdW1lIHN0YXJ0IGF0IGJlZ2lubmluZyBvZiB0b2tlbiBsaXN0LgoJKHNhdmVfY29tbWVudCk6IFVzZSBJTklUX1RPS0VOX05BTUUuCgoyMDAwLTA1LTI3ICBaYWNrIFdlaW5iZXJnICA8emFja0B3b2xlcnkuY3VtYi5vcmc+CgoJKiBjb25maWd1cmUuaW4gKHN0YWdlMV93YXJuX2NmbGFncyk6IEFkZCAtV3N0cmljdC1wcm90b3R5cGVzCgktV21pc3NpbmctcHJvdG90eXBlcy4KCSogY29uZmlndXJlOiBSZWdlbmVyYXRlLgoJKiBnY2MudGV4aTogUmVtb3ZlIGV4cGxhbmF0aW9uIG9mIE1EX0NBTExfUFJPVE9UWVBFUy4KCgkqIGJ1aWx0aW5zLmMsIGNhbGxzLmM6IENoYW5nZSBhbGwgaW5zdGFuY2VzIG9mIGdlbl9jYWxsXyogb3IKCWdlbl9zaWJjYWxsXyogdG8gR0VOX0NBTExfKiBhbmQgR0VOX1NJQkNBTExfKi4KCSogY2FsbHMuYyAoc3RydWN0X3ZhbHVlX3NpemVfcnR4KTogU2VwYXJhdGUgZGVmaW5pdGlvbiBmcm9tCglpbml0aWFsaXphdGlvbiB0byBhdm9pZCB1bnVzZWQgdmFyaWFibGUgd2FybmluZy4KCgkqIGdlbmZsYWdzLmMgKGdlbl9tYWNybyk6IE5ldyBmdW5jdGlvbi4KCShnZW5fcHJvdG8pOiBDYWxsIGl0IGZvciBnZW5fY2FsbF8qIGFuZCBnZW5fc2liY2FsbF8qLgoJKGdlbl9ub25wcm90byk6IERlbGV0ZS4KCShnZW5faW5zbik6IFB1dCBhbGwgaW5zbnMgb24gdGhlIHNhbWUgb2JzdGFjay4KCShtYWluKTogR2VuZXJhdGUgcHJvdG90eXBlcyBmb3IgZXZlcnl0aGluZyB1bmNvbmRpdGlvbmFsbHkuCgoJKiBjb25maWd1cmUuaW46IEFkZCBBQ19DSEVDS19UWVBFKHNzaXplX3QpLiAgUmVtb3ZlIGNvbW1lbnRlZAoJb3V0IGNoZWNrIGZvciB3Y2hhcl90LgoJKiBhY2NvbmZpZy5oOiBBZGQgdGVtcGxhdGUgZm9yIHNzaXplX3QuICBSZW1vdmUgQFRPUEAuCgkqIHN5c3RlbS5oOiBBZGQgaW5mcmFzdHJ1Y3R1cmUgZm9yIGRlZmluaW5nIG1pc3NpbmcKCVRZUEVfTUFYL1RZUEVfTUlOIG1hY3Jvcy4gIFVzZSBpdCB0byBwcm92aWRlIGZhbGxiYWNrCglkZWZpbml0aW9ucyBvZiBVQ0hBUl9NQVggYW5kIFNTSVpFX01BWC4KCSogY29uZmlndXJlOiBSZWdlbmVyYXRlLgoJKiBjb25maWcuaW46IFJlZ2VuZXJhdGUuCgoJKiBNYWtlZmlsZS5pbiAobGliZ2NjMi5yZWFkeSk6IFJlbmFtZSB0byBsaWJnY2MucmVhZHkuCglEZXBlbmQgb24gJChMQU5HVUFHRVMpIGFzIHdlbGwgYXMgJChHQ0NfUEFUQ0hFUykgYW5kIGZpeGVkCgloZWFkZXJzLgoJKGNsZWFuKTogTm8gbmVlZCB0byBkZWxldGUgbGliZ2NjMS5hLCBsaWJnY2MxLWFzbS5hLAoJbGliZ2NjMi5hLCBvciBsaWJnY2MxLm51bGwuCgoyMDAwLTA1LTI3ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEBjeWdudXMuY29tPgoKCSogTWFrZWZpbGUuaW4gKHJlY29nLm8pOiBEb24ndCBkZXBlbmQgb24gcmVzb3VyY2UuaC4KCSogcmVjb2cuYzogRG9uJ3QgaW5jbHVkZSByZXNvdXJjZS5oLgoJKHJlY29nX2xhc3RfYWxsb3dlZF9pbnNuKTogUmVtb3ZlLgoJKHJlY29nX25leHRfaW5zbik6IFJlbW92ZS4KCShzdHJ1Y3QgcGVlcDJfaW5zbl9kYXRhKTogTmV3LgoJKHBlZXAyX2luc25fZGF0YSwgcGVlcDJfY3VycmVudCk6IE5ldy4KCShwZWVwMl9uZXh0X2luc24pOiBOZXcuCgkocGVlcDJfcmVnbm9fZGVhZF9wLCBwZWVwMl9yZWdfZGVhZF9wKTogTmV3LgoJKHBlZXAyX2ZpbmRfZnJlZV9yZWdpc3Rlcik6IE5ldy4KCShwZWVwaG9sZTJfb3B0aW1pemUpOiBUcmFjayBsaWZlIGluZm9ybWF0aW9uIGJ5IGluc24gYXMgd2UgZ28uCgkqIHJlY29nLmg6IFVwZGF0ZSBkZWNsYXJhdGlvbnMuCgkqIHJlc291cmNlLmMgKGZpbmRfZnJlZV9yZWdpc3RlciwgcmVnX2RlYWRfcCk6IFJlbW92ZS4KCSogcmVzb3VyY2UuaDogUmVtb3ZlIHRoZWlyIGRlY2xhcmF0aW9ucy4KCSogdG9wbGV2LmM6IEluY2x1ZGUgaGFyZC1yZWctc2V0LmggYmVmb3JlIHJlY29nLmguCgoJKiBnZW5jb25maWcuYyAobWF4X2luc25zX3Blcl9wZWVwMik6IE5ldy4KCShnZW5fcGVlcGhvbGUyKTogTmV3LgoJKG1haW4pOiBDYWxsIGl0LgoJKiBnZW5lbWl0LmMgKG91dHB1dF9wZWVwaG9sZTJfc2NyYXRjaGVzKTogR2VuZXJhdGUgY2FsbHMgdG8KCXBlZXAyX2ZpbmRfZnJlZV9yZWdpc3RlcjsgYWRqdXN0IHN1cnJvdW5kaW5nIGNvZGUuCgkobWFpbik6IEhhdmUgaW5zbi1lbWl0LmMgaW5jbHVkZSBoYXJkLXJlZy1zZXQuaCBiZWZvcmUgcmVjb2cuaC4KCSogZ2VucmVjb2cuYyAoY2hhbmdlX3N0YXRlKTogRG9uJ3QgdHJhY2sgbGFzdF9pbnNuLgoJKHdyaXRlX2FjdGlvbik6IFdyaXRlIGludG8gKl9wbWF0Y2hfbGVuIGJlZm9yZSBhY2NlcHRpbmcuCgkod3JpdGVfdHJlZSk6IEFkanVzdCBwZWVwaG9sZTJfaW5zbnMgYW5kIHN1YnJvdXRpbmVzIHRvIG1hdGNoLgoKCSogY29uZmlnL2kzODYvaTM4Ni5tZCAoYWxsIHBlZXBob2xlcyk6IFVzZSBwZWVwMl9yZWdub19kZWFkX3AuCgoJKiBjb25maWcvYWxwaGEvYWxwaGEuYyAoaGFyZF9mcF9yZWdpc3Rlcl9vcGVyYW5kKTogTWluZCB0aGUgbW9kZS4KCShoYXJkX2ludF9yZWdpc3Rlcl9vcGVyYW5kKTogTmV3LgoJKiBjb25maWcvYWxwaGEvYWxwaGEtcHJvdG9zLmg6IERlY2xhcmUgaXQuCgkqIGNvbmZpZy9hbHBoYS9hbHBoYS5oIChQUkVESUNBVEVfQ09ERVMpOiBVcGRhdGUuCgkqIGNvbmZpZy9hbHBoYS9hbHBoYS5tZCAocGVlcDIgcGF0dGVybnMpOiBVc2UgaGFyZF9pbnRfcmVnaXN0ZXJfb3BlcmFuZAoJYXMgbmVlZGVkOyB1c2UgcGVlcDJfcmVnX2RlYWRfcCBpbnN0ZWFkIG9mIGRlYWRfb3Jfc2V0X3AuCgoyMDAwLTA1LTI3ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEBjeWdudXMuY29tPgoKCSogZnVuY3Rpb24uYyAodGhyZWFkX3Byb2xvZ3VlX2VwaWxvZ3VlX2luc25zKTogRG9uJ3QgbW92ZSB0aGUKCWxpbmUgbm90ZSBhdCB0aGUgaGVhZCBvZiB0aGUgY2hhaW4uICBPbmx5IGZvcmNlIGEgbGluZW5vIG5vdGUKCWJlZm9yZSB0aGUgZW5kIG9mIGJsb2NrIDAuCgoyMDAwLTA1LTI3ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEBjeWdudXMuY29tPgoKCSogZ2Vuc3VwcG9ydC5jIChjb2xsZWN0X2luc25fZGF0YSk6IFJlY29yZCB0aGUgbWF4aW11bSBudW1iZXIKCW9mIGFsdGVybmF0aXZlcywgbm90IHRoZSBsYXN0IHNlZW4uCgoJKiBnZW5vdXRwdXQuYzogRG9uJ3QgaW5jbHVkZSBlcnJvcnMuaC4KCShzdHJ1Y3QgZGF0YSk6IEFkZCBsaW5lbm8gbWVtYmVyLgoJKGhhdmVfZXJyb3IpOiBOZXcuCgkoc2Nhbl9vcGVyYW5kcyk6IFVzZSBtZXNzYWdlX3dpdGhfbGluZSBpbnN0ZWFkIG9mIGVycm9yLgoJKHZhbGlkYXRlX2luc25fYWx0ZXJuYXRpdmVzKTogTGlrZXdpc2UuCgkoZ2VuX2luc24pOiBBY2NlcHQgYW5kIHN0b3JlIHRoZSBwYXR0ZXJuJ3MgbGluZSBudW1iZXIuCgkoZ2VuX3BlZXBob2xlLCBnZW5fZXhwYW5kLCBnZW5fc3BsaXQpOiBMaWtld2lzZS4KCShtYWluKTogRG9uJ3Qgc2V0IHByb2duYW1lLiAgUGFzcyBsaW5lX25vIHRvIGdlbl9mb28uCgoyMDAwLTA1LTI3ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEBjeWdudXMuY29tPgoKCSogY29uZmlnL2QzMHYvZDMwdi5jIChkMzB2X3ByaW50X29wZXJhbmQpOiBIYW5kbGUgJzonLgoJKiBjb25maWcvZDMwdi9kMzB2LmggKFBSSU5UX09QRVJBTkRfUFVOQ1RfVkFMSURfUCk6IEFjY2VwdCAnOicuCgkqIGNvbmZpZy9kMzB2L2QzMHYubWQgKGF0dHIgcHJlZGljYWJsZSk6IE5ldy4KCShhbGwgaW5zbiBwYXR0ZXJucyk6IE1hcmsgbm9uLXByZWRpY2FibGUgcGF0dGVybnM7IHVzZSAlOiBvbiB0aGUgcmVzdC4KCShhbmRzaTMqKTogVW5pZnkgaW50byBvbmUgcGF0dGVybi4KCShpb3JzaTMqLCB4b3JzaTMqKTogTGlrZXdpc2UuCgkocGVlcGhvbGUyIHBhdHRlcm5zKTogVXNlIHBlZXAyX3JlZ19kZWFkX3A7IHZlcmlmeSBub3QgYQoJY29uZGl0aW9uYWwgcmV0dXJuLgoJKG9sZCBjb25kX2V4ZWMgcGF0dGVybnMpOiBSZW1vdmUuCgkoZGVmaW5lX2NvbmRfZXhlYyk6IE5ldy4KClNhdCBNYXkgMjcgMTE6MDE6MjcgMjAwMCAgUmljaGFyZCBLZW5uZXIgIDxrZW5uZXJAdmxzaTEudWx0cmEubnl1LmVkdT4KCgkqIHRyZWUuaCAoVFJFRV9DT0RFX0xFTkdUSCk6IE5ldyBtYWNyby4KCSogYy1jb21tb24uYyAoY19maW5kX2Jhc2VfZGVjbCk6IFVzZSBpdC4KCSogZXhwci5jIChzYWZlX2Zyb21fcCk6IExpa2V3aXNlLgoJKiBwcmludC10cmVlLmMgKHByaW50X25vZGUpOiBMaWtld2lzZS4KCSogdHJlZS5jIChtYWtlX25vZGUsIGNvcHlfbm9kZSwgZ2V0X2lkZW50aWZpZXIpOiBMaWtld2llLgoJKGZpcnN0X3J0bF9vcCwgY29udGFpbnNfcGxhY2Vob2xkZXJfcCwgc3Vic3RpdHV0ZV9pbl9leHByKTogTGlrZXdpc2UuCgkoYnVpbGQsIGJ1aWxkX250LCBidWlsZF9wYXJzZV9ub2RlLCBzaW1wbGVfY3N0X2VxdWFsKTogTGlrZXdpc2UuCgkqIGZvbGQtY29uc3QuYyAobWFrZV9yYW5nZSk6IExpa2V3aXNlLgoJKGZvbGQpOiBMaWtld2lzZTsgYWxzbyB1c2UgZmlyc3RfcnRsX29wLgoJKiBjLWl0ZXJhdGUuYyAoY29sbGVjdF9pdGVyYXRvcnMpOiBVc2UgZmlyc3RfcnRsX29wLgoJKiBjYWxscy5jIChjYWxsc19mdW5jdGlvbl8xKTogTGlrZXdpc2U7IGFsc28gcmVuYW1lIFRZUEUgdG8gQ0xBU1MuCglVc2UgSVNfRVhQUl9DT0RFX0NMQVNTLgoJKHByZWV4cGFuZF9jYWxscyk6IExpa2V3aXNlLgoJKiBnZ2MtY29tbW9uLmMgKGdnY19tYXJrX3RyZWVzKTogUmV3b3JrIHRvIHVzZSBmaXJzdF9ydGxfb3AKCWFuZCBUUkVFX0NPREVfTEVOR1RILgoJKiBzdG10LmMgKHdhcm5faWZfdW51c2VkX3ZhbHVlKTogSWYgbm8gb3BlcmFuZHMsIG5vIHVudXNlZCB2YWx1ZS4KCjIwMDAtMDUtMjYgIEdlb2ZmcmV5IEtlYXRpbmcgIDxnZW9mZmtAY3lnbnVzLmNvbT4KCgkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLm1kIChtb3ZzaV9pbnRlcm5hbDEpOiBVc2UgJyVhMScgcmF0aGVyCgl0aGFuICclMSglKiknLgoJKG1vdmRpX2ludGVybmFsNjQpOiBMaWtld2lzZS4KCgkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLm1kOiBDb3JyZWN0IG9yZGVyIG9mIG9wZXJhbmRzIGZvciBESW1vZGUKCWJvb2xlYW4gcGF0dGVybnMuCgoJKiBjb25maWcvcnM2MDAwL3JzNjAwMC5jIChib29sZWFuX29yX29wZXJhdG9yKTogTmV3IGZ1bmN0aW9uLgoJKiBjb25maWcvcnM2MDAwL3JzNjAwMC1wcm90b3MuaCAoYm9vbGVhbl9vcl9vcGVyYXRvcik6IFByb3RvdHlwZSBpdC4KCSogY29uZmlnL3JzNjAwMC9yczYwMDAuaCAoUFJFRElDQVRFX0NPREVTKTogQWRkIGJvb2xlYW5fb3Jfb3BlcmF0b3IuCgkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLm1kOiBVc2UgYm9vbGVhbl9vcl9vcGVyYXRvciBpbnN0ZWFkIG9mCglib29sZWFuX29wZXJhdG9yIGZvciB0aGUgYm9vbGVhbiBwYXR0ZXJucyB3aXRob3V0IE5PVHMuCgoJKiBjb25maWcvcnM2MDAwL3JzNjAwMC5jIChyZWdfb3JfbG9naWNhbF9jaW50X29wZXJhbmQpOiBSZW5hbWUKCWZyb20gcmVnX29yX3VfY2ludF9vcGVyYW5kLiAgQ2hhbmdlIGNvbW1lbnQgYW5kIGJlaGF2aW9yLgoJKGxvZ2ljYWxfb3BlcmFuZCk6IENsZWFuIHVwLCBhZGQgYXNzZXJ0aW9uLgoJKG5vbl9sb2dpY2FsX2NpbnRfb3BlcmFuZCk6IEFsc28gY2hlY2sgZm9yCglyZWdfb3JfbG9naWNhbF9jaW50X29wZXJhbmQuCgkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLmggKFBSRURJQ0FURV9DT0RFUyk6IFVwZGF0ZS4KCSogY29uZmlnL3JzNjAwMC9yczYwMDAubWQgKGlvcnNpMyk6IFVzZSByZWdfb3JfbG9naWNhbF9jaW50X29wZXJhbmQKCWluIHRoZSBleHBhbmRlci4KCSh4b3JzaTMpOiBMaWtld2lzZS4KCShpb3JkaTMpOiBMaWtld2lzZS4KCSh4b3JkaTMpOiBMaWtld2lzZS4KCjIwMDAtMDUtMjYgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiB0cmVlLmggKHN0cnVjdCByZWNvcmRfbGF5b3V0X2luZm8pOiBSZW5hbWUgdG8gKHN0cnVjdAoJcmVjb3JkX2xheW91dF9pbmZvX3MpLgoJKiBzdG9yLWxheW91dC5jIChzdGFydF9yZWNvcmRfbGF5b3V0KTogUmVwbGFjZQoJYHJlY29yZF9sYXlvdXRfaW5mbycgd2l0aCBgcmVjb3JkX2xheW91dF9pbmZvX3MnLgoKMjAwMC0wNS0yNiAgUmljaGFyZCBFYXJuc2hhdyAgPHJlYXJuc2hhQGFybS5jb20+CgoJKiBmbG93LmMgKGZpbmRfbGFiZWxfcmVmcyk6IE5ldyBmdW5jdGlvbi4KCShmaW5kX2Jhc2ljX2Jsb2Nrc18xKTogQ2FsbCBpdCBmb3IgZWFjaCBhbHRlcm5hdGl2ZSBvZiBhIGNhbGwKCXBsYWNlaG9sZGVyLgoKMjAwMC0wNS0yNiAgUmljaGFyZCBFYXJuc2hhdyAgPHJlYXJuc2hhQGFybS5jb20+CgoJKiBpZmN2dC5jIChjb25kX2V4ZWNfZ2V0X2NvbmRpdGlvbik6IFNldCB0ZXN0X2lmIHRvIHRoZSBTRVRfU1JDCglvZiBnZXRfcGMuCgoyMDAwLTA1LTI1ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEBjeWdudXMuY29tPgoKCSogY29uZmlnL2FscGhhL2FscGhhLmMgKGFscGhhX2NvbXBhcmlzb25fb3BlcmF0b3IpOiBEb24ndCBiZQoJc28gc3RyaWN0IGFib3V0IERJbW9kZS4KCShhbHBoYV9zd2FwcGVkX2NvbXBhcmlzb25fb3BlcmF0b3IpOiBMaWtld2lzZS4KCSogY29uZmlnL2FscGhhL2FscGhhLm1kICgqc2V0bmVfaW50ZXJuYWwpOiBOYW1lIGl0LiAgQWxsb3cKCWFueSBpbnRlZ2VyIG91dHB1dCBtb2RlLgoJKCpzZXRjY19pbnRlcm5hbCk6IExpa2V3aXNlLgoJKCpzZXRjY19zd2FwcGVkX2ludGVybmFsKTogTGlrZXdpc2UuCgkoKm1vdmRpY2NfaW50ZXJuYWwsICptb3ZkaWNjX2xiYywgKm1vdmRpY2NfbGJzKTogTmFtZSB0aGVtLgoJKCptb3ZbcWhzXWljY19pbnRlcm5hbCk6IE5ldy4KCSgqbW92W3Foc11pY2NfbGJjLCAqbW92W3Foc11pY2NfbGJzKTogTmV3LgoKMjAwMC0wNS0yNSAgSi4gRGF2aWQgQW5nbGluICA8ZGF2ZUBoaWF1bHkxLmhpYS5ucmMuY2E+CgoJKiB2YXguaCAoQ1BQX1NQRUMpOiBEZWZpbmUgX19HRkxPQVQgYW5kIEdGTE9BVCB3aGVuIC1tZyBpcyBzcGVjaWZpZWQuCgoyMDAwLTA1LTI1ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEBjeWdudXMuY29tPgoKCSogYmItcmVvcmRlci5jIChyZW9yZGVyX2Jsb2NrX2RlZik6IFJlb3JkZXIgZWxlbWVudHMgZm9yIHNpemUuCglSZW1vdmUgYWRkX2p1bXA7IGFkZCBuZXh0OyByZXBsYWNlIGZsYWdzIHdpdGggdmlzaXRlZC4KCShyYmRfaW5pdCk6IFJlbW92ZS4KCShSRU9SREVSX0JMT0NLX0hFQUQsIFJFT1JERVJfQkxPQ0tfVklTSVRFRCk6IFJlbW92ZS4KCShSRU9SREVSX0JMT0NLX0ZMQUdTLCBSRU9SREVSX0JMT0NLX0lOREVYKTogUmVtb3ZlLgoJKFJFT1JERVJfQkxPQ0tfQUREX0pVTVAsIFJFT1JERVJfQkxPQ0tfRUZGX0hFQUQpOiBSZW1vdmUuCgkoUkVPUkRFUl9CTE9DS19FRkZfRU5ELCBSRU9SREVSX0JMT0NLX1NDT1BFKTogUmVtb3ZlLgoJKFJCSSk6IE5ldy4KCShyZW9yZGVyX2luZGV4LCByZW9yZGVyX2xhc3RfdmlzaXRlZCk6IFJlbW92ZS4KCShza2lwX2luc25zX2FmdGVyX2Jsb2NrKTogUmV3cml0ZSB0byB1c2UgYSBzd2l0Y2guCgkoZ2V0X2NvbW1vbl9kZXN0KTogUmVtb3ZlLgoJKGNoYWluX3Jlb3JkZXJfYmxvY2tzKTogUmVtb3ZlLgoJKHJlY29yZF9lZmZlY3RpdmVfZW5kcG9pbnRzKTogU3BsaXQgb3V0IGZyb20gcmVvcmRlcl9iYXNpY19ibG9ja3MuCgkobWFrZV9yZW9yZGVyX2NoYWluKTogTGlrZXdpc2UuICBMb29wIHVudGlsIGFsbCBibG9ja3MgYXJlIHBsYWNlZC4KCShtYWtlX3Jlb3JkZXJfY2hhaW5fMSk6IFJlbmFtZWQgZnJvbSBvbGQgbWFrZV9yZW9yZGVyX2NoYWluLgoJT25seSBjb25zdHJ1Y3QgdGhlIHJlb3JkZXIgY2hhaW4sIGRvIG5vdCBtb3ZlIGluc25zLiAgVHJ5IGhhcmRlcgoJdG8gdGFpbCByZWN1cnNlLgoJKGxhYmVsX2Zvcl9iYiwgZW1pdF9qdW1wX3RvX2Jsb2NrX2FmdGVyKTogTmV3LgoJKGZpeHVwX3Jlb3JkZXJfY2hhaW4pOiBVc2UgdGhlbS4gIERvIGJ1bGsgYmxvY2sgbW92ZW1lbnQuICBFeGFtaW5lCglhbmQgYWRqdXN0IHRoZSBqdW1wIGluc25zIGFwcHJvcHJpYXRlbHkuICBGaXh1cCBiYXNpY19ibG9ja19pbmZvLgoJKHZlcmlmeV9pbnNuX2NoYWluKTogQWx3YXlzIGRlZmluZS4KCShyZWxhdGVfYmJzX3dpdGhfc2NvcGVzKTogQ2FsbCB4bWFsbG9jLCBub3QgeGNhbGxvYy4gIEZpeCB0aGlua28KCWluIGFsbG9jYXRpb24gc2l6ZS4KCShtYWtlX25ld19zY29wZSk6IERvbid0IHdyaXRlIHplcm9zIHRvIGNhbGxvYydkIHNwYWNlLgoJKGJ1aWxkX3Njb3BlX2ZvcmVzdCk6IFJlbHkgb24geHJlYWxsb2MgdG8gRFRSVC4KCShyZW9yZGVyX2Jhc2ljX2Jsb2Nrcyk6IERvbid0IGJ1aWxkIGxvb3AgbmVzdC4gIERvbid0IGZhaWwgaWYKCXByb2ZpbGVfYXJjX2ZsYWcuICBTdHJlYW1saW5lIEVIIHRlc3QuCgoJKiBmbG93LmMgKHJlZGlyZWN0X2VkZ2Vfc3VjYywgcmVkaXJlY3RfZWRnZV9wcmVkKTogTmV3LgoJKiBiYXNpYy1ibG9jay5oOiBEZWNsYXJlIHRoZW0uCgoyMDAwLTA1LTI1ICBBbGV4YW5kcmUgT2xpdmEgIDxhb2xpdmFAY3lnbnVzLmNvbT4KCgkqIGVtaXQtcnRsLmMgKHJlc2V0X3VzZWRfZGVjbHMpOiBOZXcgZnVuY3Rpb24uCgkodW5zaGFyZV9hbGxfcnRsX2FnYWluKTogQ2FsbCBpdC4KCjIwMDAtMDUtMjUgIFphY2sgV2VpbmJlcmcgIDx6YWNrQHdvbGVyeS5jdW1iLm9yZz4KCgkqIGNwcGxleC5jIChtYXliZV9tYWNyb2V4cGFuZCk6IFdhcm4gYWJvdXQgZnVuY3Rpb24tbGlrZQoJbWFjcm9zIHVzZWQgaW4gbm9uLWZ1bmN0aW9uIGNvbnRleHQsIGlmIC1XdHJhZGl0aW9uYWwuCgoyMDAwLTA1LTI1ICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogcmVjb2cuYyAocGVlcGhvbGUyX29wdGltaXplKTogVXNlIElOU05fUC4KCjIwMDAtMDUtMjUgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgoJKiBpZmN2dC5jIChzZXFfY29udGFpbnNfanVtcCk6IE5ldy4KCShub2NlX3RyeV9zdG9yZV9mbGFnX2NvbnN0YW50cyk6IFVzZSBpdCB0byBmYWlsIGNvbnZlcnNpb24uCgkobm9jZV90cnlfc3RvcmVfZmxhZ19pbmMsIG5vY2VfdHJ5X3N0b3JlX2ZsYWdfbWFzayk6IExpa2V3aXNlLgoKMjAwMC0wNS0yNSAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGV4Y2VwdC5oIChjYW5fdGhyb3cpOiBEZWNsYXJlIGl0LgoJKiBleGNlcHQuYyAoY2FuX3Rocm93KTogR2l2ZSBpdCBleHRlcm5hbCBsaW5rYWdlLgoJKiByZXNvdXJjZS5jIChmaW5kX2RlYWRfb3Jfc2V0X3JlZ2lzdGVycyk6IFVzZSBjYW5fdGhyb3cuCgoyMDAwLTA1LTI1ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEBjeWdudXMuY29tPgoKCSogZmxvdy5jIChtYXJrX3NldF8xKTogRG9uJ3QgcmVjb3JkIGNvbmRpdGlvbmFsbHkgZGVhZCBtZW1vcnkuCgoyMDAwLTA1LTI1ICBKYW4gSHViaWNrYSAgPGpoQHN1c2UuY3o+CgoJKiBjb21iaW5lLmMgKHRyeV9jb21iaW5lKTogVXNlIGFueV9jb25kanVtcF9wLCBhbnlfdW5jb25kanVtcF9wCglhbmQgcGNfc2V0IGF0IHRoZSBwbGFjZSBvZiBzaW1wbGVqdW1wX3AgYW5kIGNvbmRqdW1wX3AuCgkqIGNzZS5jIChyZWNvcmRfanVtcF9lcXVpdik6IExpa2V3aXNlLgoJKiBlbWl0LXJ0bC5jIChlbWl0KTogTGlrZXdpc2UuCgkqIGV4cGxvdy5jIChmaW5kX25leHRfcmVmKTogTGlrZXdpc2UuCgkqIGZsb3cuYyAodGlkeV9mYWxsdGhydV9lZGdlKTogTGlrZXdpc2UuCgkoaW5pdF9wcm9wYWdhdGVfYmxvY2tfaW5mbyk6IExpa2V3aXNlLgoJKiBnY3NlLmMgKGRlbGV0ZV9udWxsX3BvaW50ZXJfY2hlY2tzKTogTGlrZXdpc2UuCgkqIGlmY3Z0LmMgKGNvbmRfZXhlY19nZXRfY29uZGl0aW9uLCBub2NlX2dldF9jb25kaXRpb24sCglkZWFkX29yX3ByZWRpY2FibGUpOiBMaWtld2lzZS4KCSogaW50ZWdyYXRlLmMgKGNvcHlfaW5zbl9saXN0KTogTGlrZXdpc2UuCgkqIGxvb3AuYyAoc2Nhbl9sb29wLCB2ZXJpZnlfZG9taW5hdG9yLCBmaW5kX2FuZF92ZXJpZnlfbG9vcHMsCglmb3JfZWFjaF9pbnNuX2luX2xvb3AsIGNoZWNrX2RicmFfbG9vcCwgZ2V0X2NvbmRpdGlvbiwKCWluc2VydF9iY3QsIGxvYWRfbWVtcyk6IExpa2V3aXNlLgoJKiByZXNvdXJjZS5jIChmaW5kX2RlYWRfb3Jfc2V0X3JlZ2lzdGVycyk6IExpa2V3aXNlLgoJKiBzaWJjYWxscy5jIChzaW1wbGVqdW1wX3ApOiBMaWtld2lzZS4KCSogdW5yb2xsLmMgKGNvcHlfbG9vcF9ib2R5LCByZWdfZGVhZF9hZnRlcl9sb29wKTogTGlrZXdpc2UuCgoyMDAwLTA1LTI1ICBEYXZpZCBFZGVsc29obiAgPGVkZWxzb2huQGdudS5vcmc+CgoJKiByczYwMDAuYyAoZXhwYW5kX2Jsb2NrX21vdmUpOiBBZGQgNjQtYml0IFBvd2VyUEMgZG91Ymxld29yZCBtb3ZlCgl0byBTVFJJTkcgY2FzZS4gIFVzZSBkb3VibGV3b3JkIFNUUklORyBtb3ZlIGZvciBUQVJHRVRfUE9XRVJQQzY0Cgl3aGVuIHVuYWxpZ25lZC4KCSogcnM2MDAwLmggKENPTlNUX09LX0ZPUl9MRVRURVJfUCwgJ0onKTogdW5zaWduZWQgSE9TVF9XSURFX0lOVC4KCShSRVRVUk5fQUREUl9SVFgpOiBVc2UgQ09VTlQgYW5kIEZSQU1FLCBub3QgY291bnQgYW5kIGZyYW1lLgoJKExFR0lUSU1JWkVfUkVMT0FEX0FERFJFU1MpOiB1bnNpZ25lZCBIT1NUX1dJREVfSU5UIGhpZ2guCgkqIHJzNjAwMC5tZDogTmFtZSB2YXJpb3VzIGludGVybmFsIHBhdHRlcm5zLgoKMjAwMC0wNS0yNSAgSmFuIEh1Ymlja2EgIDxqaEBzdXNlLmN6PgoKCSoganVtcC5jIChpbnZlcnRfZXhwXzEpOiBSZW1vdmUgZmlyc3QgYXJndW1lbnQsIHVzZSBwY19zZXQKCXRvIGdldCB0aGUgZXhwcmVzc2lvbi4KCShyZWRpcmVjdF9leHApOiBNYWtlIHN0YXRpYzsgcmVkaXJlY3Qgb25seSB0aGUgcGNfc2V0IGV4cHJlc3Npb24sCglyZW1vdmUgZmlyc3QgYXJndW1lbnQuCgkoaW52ZXJ0X2V4cCk6IFJlbW92ZSBmaXJzdCBhcmd1bWVudCwgbWFrZSBzdGF0aWMuCgkoanVtcF9vcHRpbWl6ZSk6IFVzZSBhbnlfY29uZGp1bXBfcCwgYW55X3VuY29uZGp1bXBfcCBhbmQKCWFueV9vbmx5anVtcCBhdCBtb3N0IHBsYWNlcyB3aGVyZSB3ZSBvcmlnaW5hbHkgZGlkIGNvbmRqdW1wX3AKCWFuZCBzaW1wbGVqdW1wX3AuCgkoanVtcF9iYWNrX3AsIGZvbGxvd19qdW1wcywgdGhyZWFkX2p1bXBzKTogTGlrZXdpc2UuCgkoZGVsZXRlX2JhcnJpZXJfc3VjY2Vzb3JzKTogVXNlIHBjX3NldC4KCShpbnZlcnRfanVtcF8xLCBpbnZlcnRfanVtcCwgcmVkaXJlY3RfanVtcF8xLCByZWRpcmVjdF9qdW1wKTogVXBkYXRlCgljYWxscyBvZiBpbnZlcnRfZXhwIGFuZCByZWRpcmVjdF9leHAuCgkqIHJ0bC5oIChyZWRpcmVjdF9leHAsIGludmVydF9leHApOiBSZW1vdmUuCgkqIHVucm9sbC5jIChjb3B5X2xvb3BfYm9keSk6IFVzZSBpbnZlcnRfanVtcCBhbmQgcmVkaXJlY3RfanVtcC4KCjIwMDAtMDUtMjUgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgoJKiBzdG10LmMgKGV4cGFuZF9lbmRfYmluZGluZ3MpOiBGaXggdGhpbmtvIGxhc3QgY2hhbmdlLgoKMjAwMC0wNS0yNSAgQW5kcmV3IE1hY0xlb2QgIDxhbWFjbGVvZEBjeWdudXMuY29tPgoJICAgIEFuZHJldyBIYWxleSAgPGFwaEBjeWdudXMuY29tPgoKCSogZXhjZXB0LmMgIChmdW5jX2VoX2VudHJ5KTogQWRkIGVtaXR0ZWQgZmllbGQuCgkobmV3X2VoX3JlZ2lvbl9lbnRyeSk6IFNldCBlbWl0dGVkIGZpZWxkIHRvIDA7Cgkob3V0cHV0X2V4Y2VwdGlvbl90YWJsZV9lbnRyeSk6IE9ubHkgZW1pdCBwcmV2aW91c2x5IHVuLWVtaXR0ZWQgZGF0YSwKCWFuZCBzZW5kIGl0IHRvIHRoZSBlaF9kYXRhIHNlY3Rpb24uCgkob3V0cHV0X2V4Y2VwdGlvbl90YWJsZSk6IEJyZWFrIG91dCBjb21tb24gcGFydHMuIE91dHB1dAoJZXhjZXB0aW9uIHRhYmxlIGZvciBlbnRpcmUgY29tcGlsYXRpb24gdW5pdCB0byBlaF9kYXRhIHNlY3Rpb24uCgkob3V0cHV0X2V4Y2VwdGlvbl90YWJsZV9kYXRhKTogQ29tbW9uIHBhcnRzIG9mIG91dHB1dF9leGNlcHRpb25fdGFibGUuCglTZW5kIG91dHB1dCB0byBlaF9kYXRhIHNlY3Rpb24uCgkob3V0cHV0X2Z1bmN0aW9uX2V4Y2VwdGlvbl90YWJsZSk6IE91dHB1dCBleGNlcHRpb24gdGFibGUgZGF0YSBmb3IKCWEgc2luZ2xlIGZ1bmN0aW9uIHRvIGVoX2RhdGEgc2VjdGlvbi4KCShmcmVlX2V4Y2VwdGlvbl90YWJsZSk6IE5ldyBleHRlcm5hbCB0byBmcmVlIHRoZSB0YWJsZS4KCSogZXhjZXB0LmggKGZyZWVfZXhjZXB0aW9uX3RhYmxlKTogQWRkIHByb3RvdHlwZS4KCShvdXRwdXRfZnVuY3Rpb25fZXhjZXB0aW9uX3RhYmxlKTogQWRkIHByb3RvdHlwZS4KCSogZmluYWwuYyAoZmluYWxfZW5kX2Z1bmN0aW9uKTogT3V0cHV0IGZ1bmN0aW9uIGV4Y2VwdGlvbiB0YWJsZQoJZm9yIElBNjRfVU5XSU5EX0lORk8uCgkoZmluYWxfc2Nhbl9pbnNuKTogRW1pdCBhbnkgdW53aW5kIGRpcmVjdGl2ZXMgZm9yIGFuIGluc24uCgoJKiBmcmFtZS1kd2FyZjIuYzogTmV3IGZpbGUgY29udGFpbmluZyBhbGwgRFdBUkYgMiBzcGVjaWZpYyBjb2RlCglmcm9tIGZyYW1lLmMuCgkqIGZyYW1lLmM6IFJlbW92ZSBhbGwgRFdBUkYgMiBzcGVjaWZpYyBjb2RlLgoJKiBjb25maWcvaWE2NC9mcmFtZS1pYTY0LmM6IE5ldyBmaWxlLgoJKGd0aHJlYWRfc3R1ZmYpOiBNYWtlIGFsbCBndGhyZWFkIGF2YWlsYWJsZSB3aXRoCglJQTY0X1VOV0lORF9JTkZPLgoJKGR3YXJmX2ZkZSk6IERlZmluZSBhbiBJQTY0IHN0cnVjdCBmb3IgZHdhcmZfZmRlLgoJKF9fcmVnaXN0ZXJfZnJhbWVfaW5mbywgX19yZWdpc3Rlcl9mcmFtZSk6IE1vdmUgdG8gY29tbW9uIGFyZWEgb2YgZmlsZS4KCShfX3JlZ2lzdGVyX2ZyYW1lX2luZm9fdGFibGUsIF9fcmVnaXN0ZXJfZnJhbWVfdGFibGUpOiBNb3ZlIHRvIGNvbW1vbiBpCglhcmVhLgoJKF9fZGVyZWdpc3Rlcl9mcmFtZV9pbmZvLCBfX2RlcmVnaXN0ZXJfZnJhbWUpOiBNb3ZlIHRvIGNvbW1vbiBhcmVhLgoJKF9fZnJhbWVfaW5pdCwgZmluZF9mZGUpOiBOZXcgdmVyc2lvbnMgZm9yIElBNjRfVU5XSU5EX0lORk8uCgkocmVhZF91bGViMTI4KTogTmV3IHZlcnNpb24gZm9yIGlhNjQuCgkoZ2V0X3Vud2luZF9yZWNvcmQpOiBSZWFkIHRoZSBuZXh0IElBLTY0IHVud2luZCByZWNvcmQuCgkocmVhZF9SX3JlY29yZCk6IFJlYWQgYSByZWdpb24gaGVhZGVyIHJlY29yZC4KCShwcm9jZXNzX2FfYl9yZWdfY29kZSk6IFggcmVjb3JkIGhlbHBlci4KCShyZWFkX1hfcmVjb3JkKTogUmVhZCBhbiBYIGZvcm1hdCByZWNvcmQuCgkocmVhZF9CX3JlY29yZCk6IFJlYWQgYSBCIGZvcm1hdCByZWNvcmQuCgkoUDNfcmVjb3JkX3R5cGVzKTogTGlzdCBvZiByZWNvcmQgdHlwZXMgbWF0Y2hpbmcgdGhlIFAzIGZvcm1hdC4KCShQN19yZWNvcmRfdHlwZXMpOiBMaXN0IG9mIHJlY29yZCB0eXBlcyBtYXRjaGluZyB0aGUgUDcgZm9ybWF0LgoJKFA4X3JlY29yZF90eXBlcyk6IExpc3Qgb2YgcmVjb3JkIHR5cGVzIG1hdGNoaW5nIHRoZSBQOCBmb3JtYXQuCgkocmVhZF9QX3JlY29yZCk6IFJlYWQgYSBQIGZvcm1hdCByZWNvcmQuCgkoaW5pdF9pYTY0X3JlZ19sb2MpOiBTZXQgZGVmYXVsdCBmaWVsZHMgZm9yIGEgcmVnaXN0ZXIuCgkoaW5pdF9pYTY0X3Vud2luZF9mcmFtZSk6IFNldCBkZWZhdWx0cyBmb3IgYWxsIHJlZ2lzdGVyIHJlY29yZHMuCgkoZXhlY3V0ZV9vbmVfaWE2NF9kZXNjcmlwdG9yKTogRXhlY3V0ZSBvbmUgZGVzY3JpcHRvciByZWNvcmQuCgkocnNlX2FkZHJlc3NfYWRkKTogQ2FsY3VsYXRlIHRoZSBwb3NpdGlvbiBvZiBhIGxvY2FsIHJlZyBpbiBtZW1vcnkuCgkobm9ybWFsaXplX3JlZ19sb2MpOiBUdXJuIGEgbG9jYXRpb24gZGVzY3JpcHRvciBpbnRvIGEgbWVtb3J5IGFkZHJlc3MuCgkobWF5YmVfbm9ybWFsaXplX3JlZ19sb2MpOiBPbmx5IG5vcm1hbGl6ZSBhIGRlc2NyaXB0b3IgaWYgaXQgZmFsbHMKCXdpdGhpbiBhIHNwZWNpZmllZCBQQyBvZmZzZXQgcmFuZ2UuCgkoZ2V0X3JlYWxfcmVnX3ZhbHVlKTogR2l2ZW4gYSByZWdpc3RlciBsb2NhdGlvbiwgcmV0cmlldmUgaXRzIHZhbHVlLgoJKHNldF9yZWFsX3JlZ192YWx1ZSk6IENoYW5nZSB0aGUgdmFsdWUgb2YgYSByZWdpc3RlciBsb2NhdGlvbi4KCShjb3B5X3JlZ192YWx1ZSk6IENvcHkgcmVnIHZhbHVlcywgaWYgbmVlZGVkLgoJKGNvcHlfc2F2ZWRfcmVnX3N0YXRlKTogQ29weSBhbGwgcmVnaXN0ZXJzIHRoYXQgbmVlZCB0byBiZSBjb3BpZWQuCgkocHJvY2Vzc19zdGF0ZV9iZXR3ZWVuKTogTm9ybWFsaXplIGFsbCBmcmFtZSByZWdpc3RlciByZWNvcmRzIHRoYXQKCWZhbGwgd2l0aGluIHRoZSBzcGVjaWZpZWQgUEMgcmFuZ2UuCgkoZnJhbWVfdHJhbnNsYXRlKTogVGFrZSBhIHByb2Nlc3NlZCBmcmFtZSBkZXNjcmlwdGlvbiwgYW5kIHR1cm4KCWV2ZXJ5dGhpbmcgaW50byBhZGRyZXNzZXMuCgkoYnVpbGRfaWE2NF9mcmFtZV9zdGF0ZSApOiBGaW5kIGFuZCBjcmVhdGUgZnJhbWUgc3RhdGUgcmVjb3JkIGZvciBhIFBDLgoJKGdldF9wZXJzb25hbGl0eSk6IEdldCB0aGUgcGVyc29uYWxpdHkgcm91dGluZSBmb3IgYSBnaXZlbiBmcmFtZS4KCShnZXRfZXhjZXB0X3RhYmxlKTogR2V0IHRoZSBleGNlcHRpb24gdGFibGUgZm9yIGEgZ2l2ZW4gZnJhbWUuCgkocmVjb3JkX25hbWUpOiBVbndpbmQgcmVjb3JkIG5hbWVzIGZvciBkZWJ1Z2dpbmcuCgkocHJpbnRfcmVjb3JkKTogUHJpbnQgYW5kIHVud2luZCByZWNvcmQuCgkocHJpbnRfYWxsX3JlY29yZHMpOiBQcmludCBhbiBlbnRpcmUgdW53aW5kIGltYWdlLgoJKF9faWE2NF9iYWNrdHJhY2UpOiBQcmludCBhIGJhY2t0cmFjZS4KCShpYTY0X2JhY2t0cmFjZV9oZWxwZXIpOiBOZXcgZnVuY3Rpb24uCgkoX19yZWdpc3Rlcl9mcmFtZV9pbmZvX2F1eCk6IE5ldyBmdW5jdGlvbi4KCSogY29uZmlnL2lhNjQvY3J0ZW5kLmFzbSAoX19kb19mcmFtZV9zZXR1cF9hdXgpOiBOZXcgZnVuY3Rpb24uCgoJKiBmcmFtZS5oIChlbnVtIHVud19yZWNvcmRfdHlwZSk6IE5ldyB1bndpbmQgcmVjb3JkIHR5cGVzLgoJKHN0cnVjdCB1bndfcF9yZWNvcmQsIHVud19iX3JlY29yZCwgdW53X3hfcmVjb3JkKSA6IE5ldyB1bndpbmQgcmVjb3Jkcy4KCShzdHJ1Y3QgdW53X3JfcmVjb3JkLCB1bndpbmRfcmVjb3JkKTogTmV3IHVud2luZCByZWNvcmQgc3RydWN0cy4KCShzdHJ1Y3QgdW53aW5kX2luZm9fcHRyKTogVW53aW5kIGluZm9ybWF0aW9uIGxheW91dC4KCShJQTY0X1VOV19MT0NfVFlQRV8qKTogTWFjcm9zIGZvciBkaWZmZXJlbnQgdHlwZXMgZm9yIGxvY2F0aW9uCglkZXNjcmlwdG9ycy4KCShzdHJ1Y3QgaWE2NF9yZWdfbG9jKTogUmVnaXN0ZXIgbG9jYXRpb24gZGVzY3JpcHRpb24uCgkoc3RydWN0IGlhNjRfZnJhbWVfc3RhdGUpOiBMb2NhdGlvbiBvZiBhbGwgcmVnaXN0ZXJzIGluIGEgZnJhbWUuCgkoc3RydWN0IG9iamVjdCk6IEFkZCBwY19iYXNlIGFuZCBmZGVfZW5kIGZvciBJQTY0X1VOV0lORF9JTkZPLgoJKiBsaWJnY2MyLmMgKF9faWE2NF9wZXJzb25hbGl0eV92MSk6IFBlcnNvbmFsaXR5IHJvdXRpbmUuCgkoX19jYWxjX2NhbGxlcl9ic3ApOiBDYWxjdWxhdGUgdGhlIGJzcCByZWdpc3RlciBmb3IgdGhlIGNhbGxlcidzCglmcmFtZS4KCShpYTY0X3Rocm93X2hlbHBlcik6IEZpZ3VyZSBvdXQgd2hvIHRvIHJldHVybiB0byBhbmQgc2V0IHVwIHRoZQoJcmVnaXN0ZXJzLgoJKF9fdGhyb3cpOiBUaHJvdyByb3V0aW5lLgoKCSogb3V0cHV0LmggKGFzc2VtYmxlX2VoX2FsaWduLCBhc3NlbWJsZV9laF9sYWJlbCk6IE5ldyBmdW5jdGlvbnMKCXRvIGdlbmVyYXRlIEVIIGluZm8gd2hlcmUgd2Ugd2FudCBpdC4KCShhc3NlbWJsZV9laF9pbnRlZ2VyKTogTmV3IGZ1bmN0aW9uLgoJKiB0b3BsZXYuYyAoY29tcGlsZV9maWxlKTogT3V0cHV0IG1vZHVsZSBsZXZlbCBleGNlcHRpb24gdGFibGUgZm9yCglub24taWE2NCB0YXJnZXRzLgoJKG1haW4pOiBTZXQgZXhjZXB0aW9uc192aWFfbG9uZ2p1bXAgYW5kIGZsYWdfbmV3X2V4Y2VwdGlvbnMgYmFzZWQKCW9uIElBNjRfVU5XSU5EX0lORk8gdG9vLgoKCSogdmFyYXNtLmMgKGFzc2VtYmxlX2VoX2xhYmVsKTogR2VuZXJhdGUgYSBsYWJlbCB2aWEKCUFTTV9PVVRQVVRfRUhfTEFCRUwgaWYgaXQgaGFzIGJlZW4gc3BlY2lmaWVkLgoJKGFzc2VtYmxlX2VoX2FsaWduKTogR2VuZXJhdGUgYW4gYWxpZ25tZW50IGRpcmVjdGl2ZSB2aWEKCUFTTV9PVVRQVVRfRUhfQUxJR04gaWYgaXQgaGFzIGJlZW4gc3BlY2lmaWVkLgoJKGFzc2VtYmxlX2VoX2xhYmVsKTogR2VuZXJhdGUgYW4gaW50ZWdlciB2YWx1ZSB2aWEKCUFTTV9PVVRQVVRfRUhfdHlwZSBpZiB0aGV5IGhhdmUgYmVlbiBzcGVjaWZpZWQuCgkqIGNvbmZpZy9pYTY0L2lhNjQuYyAocnR4X25lZWRzX2JhcnJpZXIpOiBBZGQgZmx1c2hycy4KCShpYTY0X2luaXRfYnVpbHRpbnMpOiBBZGQgX19idWlsdGluX2lhNjRfYnNwCglhbmQgX19idWlsdGluX2lhNjRfZmx1c2hycy4KCShpYTY0X2V4cGFuZF9idWlsdGluKTogQWRkIElBNjRfQlVJTFRJTl9CU1AgYW5kCglJQTY0X0JVSUxUSU5fRkxVU0hSUy4KCSogY29uZmlnL2lhNjQvaWE2NC5oIChpYTY0X2J1aWx0aW5zKTogQWRkIElBNjRfQlVJTFRJTl9CU1AgYW5kCglJQTY0X0JVSUxUSU5fRkxVU0hSUy4KCgkqIGNvbmZpZy9pYTY0L2lhNjQubWQgKGZsdXNocnMpOiBOZXcgaW5zbiB0byBmbHVzaCB0aGUgcmVnaXN0ZXIKCXN0YWNrLiAgQWRkIHRvIHVuc3BlYyBsaXN0LgoKCSogY29uZmlnL2lhNjQvY3J0YmVnaW4uYXNtIChmcmFtZV9vYmplY3QpOiBDaGFuZ2Ugc2l6ZS4KCShfX2RvX2ZyYW1lX3NldHVwX2F1eCk6IE5ldyBmdW5jdGlvbi4KCSogY29uZmlnL2lhNjQvY3J0ZW5kLmFzbTogY2FsbCBfX2RvX2ZyYW1lX3NldHVwX2F1eC4KCSogY29uZmlnL2lhNjQvdC1pYTY0IChMSUIyQURERUgpOiBBZGQuCgkqIE1ha2VmaWxlLmluIChMSUIyQURERUgpOiBBZGQuCgkoTElCMkFERCk6IFVzZSBMSUIyQURERUguCgoyMDAwLTA1LTI0ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEBjeWdudXMuY29tPgoKCSogcmVjb2cuYyAob2Zmc2V0dGFibGVfYWRkcmVzc19wKTogSWYgbW9kZSBzaXplIGlzIHplcm8sIGFzc3VtZQoJQklHR0VTVF9BTElHTk1FTlQuCgoyMDAwLTA1LTI0ICBKLiBEYXZpZCBBbmdsaW4gIDxkYXZlQGhpYXVseS5oaWEubnJjLmNhPgoKCSogY29uZmlndXJlLmluOiBDaGVjayBmb3IgLVduby1sb25nLWxvbmcgb3B0aW9uIHN1cHBvcnQgYW5kIGltcHJvdmUKCWhhbmRsaW5nIG9mIHdhcm5pbmcgQ0ZMQUdTIGZvciBzdGFnZXMgMSBhbmQgMi4KCSogTWFrZWZpbGUuaW4gKFdBUk5fQ0ZMQUdTKTogTW92ZSBkZWZpbml0aW9uIHRvIGNvbmZpZ3VyZS5pbi4KCSogY29uZmlndXJlOiBSZWdlbmVyYXRlLgoKV2VkIE1heSAyNCAxOTozNzo1MyAyMDAwICBKZWZmcmV5IEEgTGF3ICAobGF3QGN5Z251cy5jb20pCgoJKiBnY2MudGV4aTogUmVtb3ZlIGNvbnRyaWJ1dG9yIGxpc3QuICBJbnN0ZWFkIGluY2x1ZGUgY29udHJpYi50ZXhpLgoJKiBjb250cmliLnRleGk6IE5ldyBmaWxlLgoKVGh1IE1heSAyNSAwMjoyNzoyMiAyMDAwICBKIm9ybiBSZW5uZWNrZSA8YW15bGFhckBjeWdudXMuY28udWs+CgoJKiBsb29wLmMgKGJhc2ljX2luZHVjdGlvbl92YXIpOiBBdm9pZCBkb3VibGUgcmVjb3JkaW5nIG9mIGFuIGluY3JlbWVudC4KClRodSBNYXkgMjUgMDI6MTk6MjcgMjAwMCAgSiJvcm4gUmVubmVja2UgPGFteWxhYXJAY3lnbnVzLmNvLnVrPgoKCSogQmFjayBvdXQgdGhpcyBwYXRjaDoKCVR1ZSBEZWMgIDcgMTk6MjI6MDYgMTk5OSAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAY3lnbnVzLmNvbT4KCSAgKiBsb29wLmggKHN0cnVjdCBpbmR1Y3Rpb24pOiBBZGQgbXVsdGlfaW5zbl9pbmNyLgoJICAqIGxvb3AuYyAoYmFzaWNfaW5kdWN0aW9uX3Zhcik6IE5ldyBtdWx0aV9pbnNuX2luY3IgYXJndW1lbnQuCgkgIFNldCBpdCBpZiB3ZSBzZWFyY2ggYmFjayB0aHJvdWdoIHByZXZpb3VzIGluc25zIGZvciB0aGUgYml2LgoJICAocmVjb3JkX2Jpdik6IE5ldyBtdWx0aV9pbnNuX2luY3IgYXJndW1lbnQ7IGZpbGwgaW4gc3RydWN0IGluZHVjdGlvbi4KCSAgKHN0cmVuZ3RoX3JlZHVjZSk6IERpc2NhcmQgYW4gaXYgd2l0aCBtdWx0aXBsZSBiaXZzLCBhbnkgb2YKCSAgd2hpY2ggcmVxdWlyZSBtdWx0aXBsZSBpbnNucyB0byBpbmNyZW1lbnQuCgoJKiBsb29wLmMgKGNoZWNrX2luc25fZm9yX2JpdnMpOiBSZW1vdmUgYml0cyBjb3BpZWQgZnJvbSBhYm92ZSBwYXRjaC4KClRodSBNYXkgMjUgMDI6MDk6MTAgMjAwMCAgSiJvcm4gUmVubmVja2UgPGFteWxhYXJAY3lnbnVzLmNvLnVrPgoKCSogcnRsLmggKGxvY19tZW50aW9uZWRfaW5fcCk6IERlY2xhcmUuCgkqIHJlbG9hZC5jIChsb2NfbWVudGlvbmVkX2luX3ApOiBNb3ZlZCBmcm9tIGhlcmUuLi4KCSogcnRsYW5hbC5jIChsb2NfbWVudGlvbmVkX2luX3ApOiB0byBoZXJlLiAgTm8gbG9uZ2VyIHN0YXRpYy4KCUZpeCBsb29wIGluY3JlbWVudCBmb3IgJ0UnIGhhbmRsaW5nLgoJKiBsb29wLmMgKHN0cmVuZ3RoX3JlZHVjZSk6IFdoZW4gZG9pbmcgYml2LT5naXYgY29udmVyc2lvbiwKCXRha2UgbXVsdGktaW5zbiBiaXYgaW5jcmVtZW50cyBpbnRvIGFjY291bnQuCgoyMDAwLTA1LTI0ICBKYXNvbiBNZXJyaWxsICA8amFzb25AY2FzZXkuc29tYS5yZWRoYXQuY29tPgoKCSogc3RtdC5jIChleHBhbmRfZW5kX2JpbmRpbmdzKTogTG9vayB0aHJvdWdoIE5PVEVzIHRvIGZpbmQgYQoJQkFSUklFUi4KCjIwMDAtMDUtMjQgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjYWxscy5jIChleHBhbmRfY2FsbCk6IEhhbmRsZSBjbGVhbnVwcyBpbiB0YWlsLXJlY3Vyc2lvbgoJYXJndW1lbnRzIGFuYWxvZ291c2x5IHRvIGNsZWFudXBzIGluIHNpYmxpbmcgY2FsbHMuCgoyMDAwLTA1LTI0ICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBzaW1wbGlmeS1ydHguYzogUmVuYW1lIG1hY3JvIFNJR05fRVhURU5EIHRvIEhXSV9TSUdOX0VYVEVORC4KCUFsbCBjYWxsZXJzIGNoYW5nZWQuCgoyMDAwLTA1LTI0ICBBbGV4YW5kcmUgT2xpdmEgIDxhb2xpdmFAY3lnbnVzLmNvbT4KCgkqIGV4cHIuYyAoZXhwYW5kX2Fzc2lnbm1lbnQsIHN0b3JlX2V4cHIsIGV4cGFuZF9leHByLAoJZXhwYW5kX2V4cHJfdW5hbGlnbmVkKTogU2V0IGluX2NoZWNrX21lbW9yeV91c2FnZSB3aGlsZSBlbWl0dGluZwoJY2hrcl9jaGVja19hZGRyIGxpYmNhbGwuCgoyMDAwLTA1LTI0ICBOaWNrIENsaWZ0b24gIDxuaWNrY0BjeWdudXMuY29tPgoKCSogZm9sZC1jb25zdC5jIChleHRyYWN0X211bGRpdik6IFdoZW4gY29uc3RydWN0aW5nIGEKCW11bHRpcGxpZXIvZGl2aXNvciwgZG8gbm90IGV4cGVjdCBjb25zdF9iaW5vcCB0byBjb3JyZWN0bHkKCWRldGVybWluZSBpZiBvdmVyZmxvdyBoYXMgb2NjdXJyZWQsIHNvIGNoZWNrIGV4cGxpY2l0bHkuCgoyMDAwLTA1LTI0ICBBbGV4YW5kcmUgT2xpdmEgIDxhb2xpdmFAY3lnbnVzLmNvbT4KCgkqIGMtZGVjbC5jIChidWlsZF9lbnVtZXJhdG9yKTogRG9uJ3QgbW9kaWZ5IHRoZSB2YWx1ZSdzIHR5cGUsCgljb252ZXJ0IGl0LgoKMjAwMC0wNS0yNCAgQW5kcmVhcyBKYWVnZXIgIDxhakBzdXNlLmRlPgoKCSogbWlwcy5oIChMSU5LRVJfRU5ESUFOX1NQRUMpOiBQYXNzIC1FTCB0byBsaW5rZXIgYnkgZGVmYXVsdC4KCjIwMDAtMDUtMjQgIEVyaWMgQ2hyaXN0b3BoZXIgPGVjaHJpc3RvQGN5Z251cy5jb20+CgoJKiBjb25maWd1cmUuaW46IFJlZGVmaW5lIGluaGliaXRfbGliYyBjb25kaXRpb25zLgoJKiBsaWJnY2MyLmM6IFJlbW92ZSBpbmhpYml0X2xpYmMgY29uZGl0aW9uYWwgZGVmaW5lLgoJKiBjb25maWd1cmU6IFJlZ2VuZXJhdGUuCgoyMDAwLTA1LTI0ICBQaGlsIEVkd2FyZHMgIDxwbWVAc291cmNld2FyZS5jeWdudXMuY29tPgoKCSogY29uZmlndXJlLmluOiAgRm9yIC0tZW5hYmxlLWxhbmd1YWdlcz1MSVNULCBjaGVjayBmb3IgZW1wdHkgTElTVC4KCSogY29uZmlndXJlOiAgUmVnZW5lcmF0ZS4KCjIwMDAtMDUtMjQgIExhcnMgQnJpbmtob2ZmICA8bGFyc0Bub2NyZXcub3JnPgoKCSogcGRwMTEuaCAoU1RBQ0tfQk9VTkRBUlkpOiBEZWZpbmUuCgoyMDAwLTA1LTI0ICBKYWt1YiBKZWxpbmVrICA8amFrdWJAcmVkaGF0LmNvbT4KCgkqIGlmY3Z0LmMgKGlmX2NvbnZlcnQpOiBVcGRhdGUgbGlmZSBpbmZvIGdsb2JhbGx5LgoKMjAwMC0wNS0yNCAgQWxleGFuZHJlIE9saXZhICA8b2xpdmFAbHNkLmljLnVuaWNhbXAuYnI+CgoJKiBlbWl0LXJ0bC5jICh1bnNoYXJlX2FsbF9kZWNscyk6IE5ldyBmdW5jdGlvbi4KCSh1bnNoYXJlX2FsbF9ydGwpOiBDYWxsIGl0LgoKMjAwMC0wNS0yMyAgTmljayBDbGlmdG9uICA8bmlja2NAY3lnbnVzLmNvbT4KCgkqIGNvbmZpZ3VyZS5pbjogVHJlYXQgJ3N0cm9uZ2FybScgYXMgaWYgaXQgd2VyZSAnYXJtJyB3aGVuCglkZXRlcm1pbmluZyBjcHUgdHlwZS4KCgkqIGNvbmZpZ3VyZTogUmVnZW5lcmF0ZS4KCgkqIGNvbmZpZy9hcm0vYXJtLmM6IENoYW5nZSAnY2hhciAqJyB0byAnY29uc3QgY2hhciAqJyBmb3IgY2FzZXMKCXdoZXJlIGNvbnN0YW50IHN0cmluZ3MgYXJlIGludm9sdmVkLgoKCSogY29uZmlnL2FybS9hcm0uaCAoYXJtX2NvbmRpdGlvbl9jb2Rlcyk6IENoYW5nZSB0eXBlIHRvICdjb25zdAoJY2hhciAqJy4KCgkqIGNvbmZpZy9hcm0vYXJtLXByb3Rvcy5oOiBDaGFuZ2UgJ2NoYXIgKicgdG8gJ2NvbnN0IGNoYXIgKicgZm9yCgljYXNlcyB3aGVyZSBjb25zdGFudCBzdHJpbmdzIGFyZSBpbnZvbHZlZC4KClR1ZSBNYXkgMjMgMTU6MDg6MzEgMjAwMCAgQ2xpbnRvbiBQb3BldHogIDxjcG9wZXR6QGN5Z251cy5jb20+CgoJKiBjb25maWcvc2gvc2guYyAoZ2VuX2Zhcl9icmFuY2gsIHNwbGl0X2JyYW5jaGVzKTogVXBkYXRlCgl0byByZWZsZWN0IG5ldyBwcm90b3R5cGVzIGZvciByZWRpcmVjdF9qdW1wIGFuZCBpbnZlcnRfanVtcC4KCShzaF9pbnNuX2xlbmd0aF9hZGp1c3RtZW50KTogR2V0IHJpZCBvZiBjb25zdCB3YXJuaW5ncy4KCjIwMDAtMDUtMjMgIEthenUgSGlyYXRhICA8a2F6dUBoeGkuY29tPgoKCSogaW52b2tlLnRleGkgKE9wdGlvbnMgZm9yIERlYnVnZ2luZyBZb3VyIFByb2dyYW0gb3IgR0NDKTogVXBkYXRlCgl0aGUgbmFtZXMgb2YgZHVtcCBmaWxlcy4KClR1ZSBNYXkgMjMgMTM6NTg6NTIgMjAwMCAgUGhpbGlwcGUgRGUgTXV5dGVyICA8cGhkbUBtYWNxZWwuYmU+CgoJKiBjb25maWd1cmUuaW4gKE5PX01JTlVTX0NfTUlOVVNfTyk6IEZpeCB0aGlua28gaW4gcHJldmlvdXMgZml4LgoJKiBjb25maWd1cmU6IFJlZ2VuZXJhdGVkLgoKMjAwMC0wNS0yMyAgWmFjayBXZWluYmVyZyAgPHphY2tAd29sZXJ5LmN1bWIub3JnPgoKCSogc2ltcGxpZnktcnR4LmMgKFNJR05fRVhURU5EKTogTmV3IG1hY3JvLgoJKHNpbXBsaWZ5X3VuYXJ5X29wZXJhdGlvbiwgc2ltcGxpZnlfYmluYXJ5X29wZXJhdGlvbiwKCXNpbXBsaWZ5X3JlbGF0aW9uYWxfb3BlcmF0aW9uKTogVXNlIFNJR05fRVhURU5ELiAgTWFrZSBsb3cKCWhhbHZlcyBvZiAobG93LCBoaWdoKSBwYWlycyB1bnNpZ25lZCBpZiB0aGV5IHdlcmVuJ3QgYWxyZWFkeS4KCShzaW1wbGlmeV90ZXJuYXJ5X29wZXJhdGlvbik6IENhc3QgSU5UVkFMIHRvIHVuc2lnbmVkIGJlZm9yZQoJY29tcGFyaW5nIHRvIGEgTU9ERV9CSVRTSVpFLgoKMjAwMC0wNS0yMyAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogYWNsb2NhbC5tNCAoZ2NjX0FDX0NIRUNLX0RFQ0wsIGdjY19BQ19DSEVDS19ERUNMUyk6IE5ldyBtYWNyb3MKCXJld3JpdHRlbiBmcm9tIHRoZSBpbnRlcm5hbHMgb2YgZ2NjX0FDX05FRURfREVDTEFSQVRJT057U30uCgoJKiBjb25maWd1cmUuaW4gKGdjY19BQ19DSEVDS19ERUNMUyk6IENhbGwgdGhpcyBpbnN0ZWFkIG9mCglnY2NfQUNfTkVFRF9ERUNMQVJBVElPTlMuCgoJKiBkd2FyZm91dC5jOiBEb24ndCBwcm90b3R5cGUgdGltZSgpLgoKCSogZ2NjLmM6IENoZWNrIEhBVkVfREVDTF8qIGluc3RlYWQgb2YgTkVFRF9ERUNMQVJBVElPTl8qLgoKCSogc3lzdGVtLmg6IExpa2V3aXNlLgoKCSogdG9wbGV2LmM6IExpa2V3aXNlLgoKMjAwMC0wNS0yMyAgWmFjayBXZWluYmVyZyAgPHphY2tAd29sZXJ5LmN1bWIub3JnPgoKCSogYy1kZWNsLmMgKHB1c2hkZWNsKTogSW52ZXJ0IHNlbnNlIG9mIHRlc3QgZm9yIG5vbi1nbG9iYWwgdHlwZXMuCgpUdWUgTWF5IDIzIDE4OjExOjQyIDIwMDAgIEoib3JuIFJlbm5lY2tlIDxhbXlsYWFyQGN5Z251cy5jby51az4KCgkqIHJlbG9hZDEuYyAocmVsb2FkX2NzZV9tb3ZlMmFkZCk6IEhvbm9yIFRSVUxZX05PT1BfVFJVTkNBVElPTi4KCjIwMDAtMDUtMjMgIEpvbmF0aGFuIExhcm1vdXIgIDxqbGFybW91ckByZWRoYXQuY28udWs+CgoJKiBjb25maWcvbWlwcy9lbGY2NC5oIChDVE9SX0xJU1RTX0RFRklORURfRVhURVJOQUxMWSk6IERlZmluZQoKVHVlIE1heSAyMyAwNjo1MDoyOSAyMDAwICBSaWNoYXJkIEtlbm5lciAgPGtlbm5lckB2bHNpMS51bHRyYS5ueXUuZWR1PgoKCSogY29uZmlnL2FscGhhL2FscGhhLmM6IFJlbW92ZSAjaWZkZWYgSEFJRkEgc2luY2Ugbm93IG9ubHkgc2NoZWR1bGVyLgoJKGFscGhhX3N0YXJ0X2Z1bmN0aW9uKTogTmV2ZXIgd3JpdGUgLi5uZyBsYWJlbCBpZiBWTVMgb3IgTlQuCgkoYWxwaGFfYWxpZ25faW5zbnMpOiBSZW1vdmUgR1BfSU5fVVNFIGFyZy4KCUFsaWdubWVudCBub3cgdW5zaWduZWQuCgkoYWxwaGFfcmVvcmcpOiBEb24ndCBwYXNzIEdQX0lOX1VTRSBhcmcgdG8gYWxwaGFfYWxpZ25faW5zbnMuCgkqIGNvbmZpZy9hbHBoYS9hbHBoYS5tZCAocHJvbG9ndWVfbGRncCk6IFNwbGl0IGludG8gb25lIGRlZmluZV9leHBhbmQKCWFuZCB0d28gZGVmaW5lX2luc24ncy4KCjIwMDAtMDUtMjIgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgoJKiBjb21iaW5lLmMgKHNpbXBsaWZ5X2NvbXBhcmlzb24pOiBVc2UgdHJ1bmNfaW50X2Zvcl9tb2RlLgoKMjAwMC0wNS0yMiAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAY3lnbnVzLmNvbT4KCgkqIHN0b3ItbGF5b3V0LmMgKHBsYWNlX2ZpZWxkKTogQ2hhbmdlIHJsaS0+c2l6ZSB0byBybGktPm9mZnNldC4KCjIwMDAtMDUtMjIgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgoJKiBmdW5jdGlvbi5jICh0aHJlYWRfcHJvbG9ndWVfYW5kX2VwaWxvZ3VlX2luc25zKTogTWFrZSBzdXJlCglleGlzdGluZyBsaW5lIG51bWJlciBub3RlcyBhcHBlYXIgYWZ0ZXIgdGhlIHByb2xvZ3VlLgoKTW9uIE1heSAyMiAyMTo0OTowMCAyMDAwICBSaWNoYXJkIEtlbm5lciAgPGtlbm5lckB2bHNpMS51bHRyYS5ueXUuZWR1PgoKCSogY29uZmlnL2FscGhhL2FscGhhLmMgKGFscGhhX2ZubmFtZSk6IE5ldyBzdGF0aWMgdmFyaWFibGUuCgkocHJpbnRfb3BlcmFuZCwgY2FzZSAnficpOiBOZXcgY2FzZS4KCShhbHBoYV9leHBhbmRfcHJvbG9ndWUpOiBFbWl0IHByb2xvZ3VlX2xkZ3AgaW5zbiBpZiBuZWVkZWQuCgkoYWxwaGFfc3RhcnRfZnVuY3Rpb24pOiBTZXQgYWxwaGFfZm5uYW1lLgoJV3JpdGUgIm5nIiBsYWJlbCBpZiBubyBsZGdwOyBkb24ndCB3cml0ZSBsZGdwIGluc24uCgkqIGNvbmZpZy9hbHBoYS9hbHBoYS5oIChQUklOVF9PUEVSQU5EX1BVTkNUX1ZBTElEX1ApOiBOZXcgY2FzZSAnficuCgkqIGNvbmZpZy9hbHBoYS9hbHBoYS5tZCAocHJvbG9ndWVfbGRncCk6IE5ldyBkZWZpbmVfaW5zbi4KCk1vbiBNYXkgMjIgMTE6MzA6NDggMjAwMCAgQ2xpbnRvbiBQb3BldHogIDxjcG9wZXR6QGN5Z251cy5jb20+CgoJKiBqdW1wLmMgKGp1bXBfb3B0aW1pemVfMSk6IERvbid0IGluY3JlbWVudCBMQUJFTF9OVVNFUwoJb24gZGVsZXRlZCBsYWJlbHMuCgoyMDAwLTA1LTIyICBaYWNrIFdlaW5iZXJnICA8emFja0B3b2xlcnkuY3VtYi5vcmc+CgoJKiB2YXJhc20uYyAoZWhfZnJhbWVfc2VjdGlvbik6IFJldmVydCBjaGFuZ2UgdG8gYXJndW1lbnQgbGlzdC4KCk1vbiBNYXkgMjIgMTM6MTQ6MDMgMjAwMCAgUmljaGFyZCBLZW5uZXIgIDxrZW5uZXJAdmxzaTEudWx0cmEubnl1LmVkdT4KCgkqIG9wdGFicy5jIChjYW5fZXh0ZW5kX3ApOiBBbGxvdyB1bnNpZ25lZHAgdG8gaGF2ZSBhbnkgbm9uemVybyB2YWx1ZS4KCShnZW5fZXh0ZW5kX2luc24sIGNhbl9maXhfcCwgY2FuX2Zsb2F0X3ApOiBMaWtld2lzZS4KCgkqIGZpbmFsLmMgKGZpbmFsX3NjYW5faW5zbiwgY2FzZSBOT1RFX0lOU05fRlVOQ1RJT05fQkVHKTogUmVtb3ZlCglkYW5nbGluZyAiZWxzZSIgdGhhdCBjYXVzZXMgImJyZWFrIiB0byBiZSBjb25kaXRpb25hbC4KCUFsc28gcmVtb3ZlIHVubmVlZGVkIGNvZGUgYXQgc3RhcnQuCgpNb24gTWF5IDIyIDE3OjMxOjM1IDIwMDAgIFBoaWxpcHBlIERlIE11eXRlciAgPHBoZG1AbWFjcWVsLmJlPgoKCSogbTY4ay9tNjhrLmggKFNUT1JFX0ZMQUdfVkFMVUUpOiBNYWNybyBzZXQgdG8gKC0xKSwgbm90IC0xLgoJKiBmeDgwL2Z4ODAuaCwgaTM3MC9pMzcwLmgsIG04OGsvbTg4ay5oIChTVE9SRV9GTEFHX1ZBTFVFKTogRGl0dG8uCgkqIGdtaWNyby9nbWljcm8uaCwgd2UzMmsvd2UzMmsuaCAoU1RPUkVfRkxBR19WQUxVRSk6IERpdHRvLgoKMjAwMC0wNS0yMiAgSmFrdWIgSmVsaW5layAgPGpha3ViQHJlZGhhdC5jb20+CgoJKiBjb25maWcvc3BhcmMvc3BhcmMubWQgKG1vdmRmX2luc25fdjlvbmx5X3Zpcyk6IGZ6ZXJvIGhhcwoJanVzdCBvbmUgYXJndW1lbnQuCgpNb24gTWF5IDIyIDA2OjU3OjQ5IDIwMDAgIFJpY2hhcmQgS2VubmVyICA8a2VubmVyQHZsc2kxLnVsdHJhLm55dS5lZHU+CgoJKiBhbGlhcy5jIChyZWNvcmRfY29tcG9uZW50X2FsaWFzZXMpOiBOZXcgZnVuY3Rpb24uCgkqIHRyZWUuaDogQ2xlYW4gdXAgc29tZSBkZWNsYXJhdGlvbnMgYW5kIGNvbW1lbnRzLgoJKHJlY29yZF9jb21wb25lbnRfYWxpYXNlcyk6IE5ldyBkZWNsYXJhdGlvbi4KCSogdHJlZS5jIChnZXRfYWxpYXNfc2V0KTogSWYgdHlwZSBhbmQgaGFzIGFsaWFzIHNldCwgdXNlIGl0LgoKMjAwMC0wNS0yMiAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAY3lnbnVzLmNvbT4KCgkqIHNpbXBsaWZ5LXJ0eC5jIChzaW1wbGlmeV90ZXJuYXJ5X29wZXJhdGlvbik6IFRyeSB0byBzaW1wbGlmeQoJSUZfVEhFTl9FTFNFIHRvIGEgc2V0Y2MgZm9ybS4KCSoganVtcC5jIChjYW5fcmV2ZXJzZV9jb21wYXJpc29uX3ApOiBCZSBwcmVwYXJlZCBmb3IgaW5zbiBudWxsLgoKMjAwMC0wNS0yMSAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogZml4aW5jL2luY2xoYWNrLmRlZiAoc3VuX21hbGxvYyk6IEhhbmRsZSBgY2FsbG9jJy4KCShzdW5fbWFsbG9jLCBzeXN6X3N0ZHR5cGVzX2Zvcl9zdW4pOiBBZGQgdGVzdF90ZXh0LgoKU3VuIE1heSAyMSAxNjo0MjozMSAyMDAwICBSaWNoYXJkIEtlbm5lciAgPGtlbm5lckB2bHNpMS51bHRyYS5ueXUuZWR1PgoKCSogY29tYmluZS5jICh0cnlfY29tYmluZSk6IEhhbmRsZSBpM19zdWJzdF9pbnRvX2kyIGNhc2Ugd2hlbiBJMiBpcwoJbm90IGEgUEFSQUxMRUwuCgoyMDAwLTA1LTIwICBBbGV4YW5kcmUgT2xpdmEgIDxhb2xpdmFAY3lnbnVzLmNvbT4KCgkqIGNvbmZpZy9tbjEwMzAwL21uMTAzMDAubWQgKG1vdmRpLCBtb3ZkZik6IDY0LWJpdCBjbGVhbi11cC4KCSogY29uZmlnL21uMTAzMDAvbW4xMDMwMC5jIChwcmludF9vcGVyYW5kKTogTGlrZXdpc2UuCgoJKiBmaW5hbC5jIChzcGxpdF9kb3VibGUpOiBSaWdodCBzaGlmdCBvZiBuZWdhdGl2ZSB2YWx1ZXMgaXMgbm90Cglwb3J0YWJsZS4KCgkqIGlmY3Z0LmMgKGlmX2NvbnZlcnQpOiBTY2FuIGFuZCBraWxsIGRlYWQgY29kZS4KCgkqIGVtaXQtcnRsLmMgKHVuc2hhcmVfYWxsX3J0bCk6IFN0b3JlIHRoZSBjb3BpZWQgcnR4LgoKMjAwMC0wNS0yMCAgWmFjayBXZWluYmVyZyAgPHphY2tAd29sZXJ5LmN1bWIub3JnPgoKCSogZGlhZ25vc3RpYy5jOiBFbGltaW5hdGUgaW1wbGljaXQgaW50LgoJKiBleGNlcHQuYywgZ2NjLmM6IEFkZCBzdGF0aWMgcHJvdG90eXBlcy4KCSogZmluYWwuYyAoZmluYWxfZW5kX2Z1bmN0aW9uKTogTWFyayBmaWxlIGFyZyBBVFRSSUJVVEVfVU5VU0VELgoJKiBnZW5zdXBwb3J0LmMgKHByb2Nlc3NfcnR4KTogVXNlIFhWRUMgdG8gaW5pdGlhbGl6ZSB2ZWN0b3IKCXNsb3Qgb2YgJ3NwbGl0Jy4KCgkqIHByaW50LXJ0bC5jOiBJZiBERUJVR19SRUdJU1RFUl9OQU1FUywgZGVmaW5lIHN0YXRpYwoJZGVidWdfcmVnX25hbWVzIGluc3RlYWQgb2Ygc3RhdGljIHJlZ19uYW1lcy4gIElmIG5vdCwgZGVmaW5lCglnbG9iYWwgcmVnX25hbWVzLgoJKiByZWdjbGFzcy5jOiBEb24ndCBkZWZpbmUgZ2xvYmFsIHJlZ19uYW1lcyB1bmxlc3MKCURFQlVHX1JFR0lTVEVSX05BTUVTIGlzIGRlZmluZWQuCgoJKiByZWxvYWQxLmMgKG9yZGVyX3JlZ3NfZm9yX3JlbG9hZCk6IFJlbW92ZSB1bnVzZWQgdmFyaWFibGUuCgkqIHZhcmFzbS5jOiBJbmNsdWRlIG91dHB1dC5oIGFmdGVyIGRlZmF1bHRzLmguICBEZWZpbmUKCWVoX2ZyYW1lX3NlY3Rpb24gYXMgZnVuY3Rpb24gb2Ygbm8gYXJncywgbm90IG9mIHVuc3BlY2lmaWVkIGFyZ3MuCgoJKiBnY2MuYzogQ29uc3RpZnkgYXJnYnVmOyBhcmd1bWVudHMgdG8gc3RvcmVfYXJnLAoJcHJvY2Vzc19jb21tYW5kLCBtYWluOyBlbGVtZW50cyBvZiBzdHJ1Y3QgY29tbWFuZCBhbmQgc3RydWN0Cglzd2l0Y2hzdHI7IGxvY2FsIHZhcmlhYmxlcyBpbiBleGVjdXRlLCBwcm9jZXNzX2NvbW1hbmQsIG1haW4uCgoyMDAwLTA1LTIwICBCcnVjZSBLb3JiICA8YmtvcmJAZ251Lm9yZz4KCgkqIGZpeGluYy9pbmNsaGFjay5kZWY6ICBtYW55IGFwcGxpY2F0aW9ucyBvZiBjX2ZpeD1mb3JtYXQgKyB0ZXN0cwoJKiBmaXhpbmMvY2hlY2suZGlmZjogIHJlZ2VuZXJhdGVkCgkqIGZpeGluYy9maXhpbmNsLng6ICByZWdlbmVyYXRlZAoKU2F0IE1heSAyMCAwOTozMDo1NSAyMDAwICBSaWNoYXJkIEtlbm5lciAgPGtlbm5lckB2bHNpMS51bHRyYS5ueXUuZWR1PgoKCSogYWxpYXMuYzogQ2xhcmlmeSBzb21lIGNvbW1lbnRzLgoJKHJlY29yZF9iYXNlX3ZhbHVlKTogUkVHTk8gaXMgdW5zaWduZWQuCgkqIHJ0bC5oIChyZWNvcmRfYmFzZV92YWx1ZSk6IExpa2V3aXNlLgoKCSogYWxpYXMuYyAoYWxpYXNlc19ldmVyeXRoaW5nX3ApOiBEb24ndCBzcGVjaWFsLWNhc2UgUUltb2RlIGhlcmUuCgkqIGMtY29tbW9uLmMgKGNfZ2V0X2FsaWFzX3NldCk6IERvIGl0IGhlcmUuCglIYW5kbGUgQklUX0ZJRUxEX1JFRiBieSBnZXR0aW5nIGFsaWFzIGluZm8gZm9yIGFyZy4KCVVzZSBQT0lOVEVSX1RZUEVfUC4KCjIwMDAtMDUtMjAgIEFsZXhhbmRyZSBPbGl2YSAgPGFvbGl2YUBjeWdudXMuY29tPgoKCSogbWtsaWJnY2MuaW46IFJlc3RvcmUgcnVsZSB0byBjcmVhdGUgJHtkaXJ9LgoKU2F0IE1heSAyMCAwODo0NTo0MSAyMDAwICBILkouIEx1ICA8aGpsQGdudS5vcmc+CgoJKiBNYWtlZmlsZS5pbiAobGliZ2NjLm1rKTogRGVwZW5kIG9uIHhnY2MkKGV4ZWV4dCkgZm9yCglHQ0NfRk9SX1RBUkdFVCB1c2VkIGJ5IE1VTFRJTElCUy4KCSogbWtsaWJnY2MuaW46IE1ha2Ugc3VyZSBlYWNoIC5vIGZpbGUgZGVwZW5kcyBvbiB0aGUKCWRpcmVjdG9yeSBpdCB3aWxsIGJlIGluLgoJTWFrZSB0aGUgbXVsdGlsaWIgZGlyZWN0b3J5IGRlcGVuZHMgbGliZ2NjLgoKU2F0IE1heSAyMCAwODoyOToyOCAyMDAwICBILkouIEx1ICA8aGpsQGdudS5vcmc+CgoJKiBNYWtlZmlsZS5pbiAoYm9vdHN0cmFwKTogVW5zZXQgTEFOR19MSUIyRlVOQ1MgZm9yIHN0YWdlIDEuCgpTYXQgTWF5IDIwIDA3OjI3OjM1IDIwMDAgIEFsZXhhbmRyZSBPbGl2YSAgPGFvbGl2YUBjeWdudXMuY29tPgoKCSogZm9sZC1jb25zdC5jIChtYWtlX3JhbmdlKTogSGFuZGxlIGRlZ2VuZXJhdGVkIGludGVydmFscy4KCUZpeGVzIGMtdG9ydHVyZS9leGVjdXRlLzk5MTIyMS0xLmMKCkZyaSBNYXkgMTkgMTg6MTY6MzEgMjAwMCAgUmljaGFyZCBLZW5uZXIgIDxrZW5uZXJAdmxzaTEudWx0cmEubnl1LmVkdT4KCgkqIGNzZS5jIChjc2VfYmFzaWNfYmxvY2spOiBPbmx5IGNhbGwgZmluZF9yZWdfbm90ZSBpZiBSRUdfTk9URVMgbm90IDAuCgkqIHJlbG9hZC5jIChmaW5kX2VxdWl2X3JlZyk6IExpa2V3aXNlLgoJKiBhbGlhcy5jIChpbml0X2FsaWFzX2FuYWx5c2lzKTogTGlrZXdpc2UuCglPbmx5IGNhbGwgcHJvbG9ndWVfZXBpbG9ndWVfY29udGFpbnMgb24gaW5zbnMuCgkqIGJhc2ljLWJsb2NrLmggKFJFR19TRVRfVE9fSEFSRF9SRUdfU0VUKTogQ2FsbCBuZXcgZnVuY3Rpb24uCgkqIGJiLXJlb3JkZXIuYyAoaGFyZC1yZWctc2V0LmgpOiBJbmNsdWRlIGVhcmxpZXIuCgkqIGhhaWZhLXNjaGVkLmMgKGhhcmQtcmVnLXNldC5oKTogTGlrZXdpc2UuCgkqIGlmY3Z0LmMgKGhhcmQtcmVnLXNldC5oKTogTGlrZXdpc2UuCgkqIGxvY2FsLWFsbG9jLmMgKGhhcmQtcmVnLXNldC5oKTogTGlrZXdpc2UuCgkqIGxvb3AuYyAoaGFyZC1yZWctc2V0LmgpOiBMaWtld2lzZS4KCSogcHJlZGljdC5jIChoYXJkLXJlZy1zZXQuaCk6IExpa2V3aXNlLgoJKiByZWdyZW5hbWUuYyAoaGFyZC1yZWctc2V0LmgpOiBMaWtld2lzZS4KCSogZmxvdy5jIChoYXJkLXJlZy1zZXQuaCk6IExpa2V3aXNlLgoJKHJlZ19zZXRfdG9faGFyZF9yZWdfc2V0KTogTmV3IGZ1bmN0aW9uLgoJKiBiaXRtYXAuYyAocmVncy5oLCBiYXNpYy1ibG9jay5oKTogTm8gbG9uZ2VyIGluY2x1ZGUuCgkoYml0bWFwLmgpOiBOb3cgaW5jbHVkZS4KCSogY29uZmxpY3QuYyAoaGFyZC1yZWctc2V0LmgpOiBJbmNsdWRlLgoJKiBwcm9maWxlLmMgKGhhcmQtcmVnLXNldC5oKTogTGlrZXdpc2UuCgkqIHByaW50LXJ0bC5jIChoYXJkLXJlZy1zZXQuaCk6IExpa2V3aXNlLgoJKiBzYml0bWFwLmMgKGhhcmQtcmVnLXNldC5oKTogTGlrZXdpc2UuCgkqIHRvcGxldi5jIChoYXJkLXJlZy1zZXQuaCk6IExpa2V3aXNlLgoJKiB1bnJvbGwuYyAoaGFyZC1yZWctc2V0LmgsIGJhc2ljLWJsb2NrLmgpOiBMaWtld2lzZS4KCSogaGFyZC1yZWctc2V0LmggKHJlZ19uYW1lcyk6IE5vdyBjb25zdGFudC4KCSogcmVncy5oIChyZWdfbmFtZXMpOiBMaWtld2lzZS4KCSogcmVnY2xhc3MuYyAocmVnX25hbWVzKTogTGlrZXdpc2UuCgkqIGxvb3AuaCAoYmFzaWMtYmxvY2suaCk6IE5vIGxvbmdlciBpbmNsdWRlLgoJKGJpdG1hcC5oKTogTm93IGluY2x1ZGUuCgkqIHJlbG9hZDEuYyAob3JkZXJfcmVnc19mb3JfcmVsb2FkKTogQXZvaWQgbG9vcCBvdmVyIHJlZyBzZXRzLgoJKiBNYWtlZmlsZS5pbiAoTE9PUF9ILCBzYml0bWFwLm8sIHByb2ZpbGUubyk6IFJlZmxlY3QgYWJvdmUgY2hhbmdlcy4KCSh0b3BsZXYubywgcHJpbnQtcnRsLm8sIGNvbmZsaWN0Lm8sIHVucm9sbC5vLCBiaXRtYXAubyk6IExpa2V3aXNlLgoKMjAwMC0wNS0xOSAgSmFuIEh1Ymlja2EgIDxqaEBzdXNlLmN6PgoJICAgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgoJKiBiYXNpYy1ibG9jay5oIChzdHJ1Y3QgZWRnZV9kZWYpOiBOZXcgZmllbGQgImNvdW50Ii4KCShzdHJ1Y3QgYmFzaWNfYmxvY2tfZGVmKTogTGlrZXdpc2UuCgkqIGZsb3cuYyAoZW50cnlfZXhpdF9ibG9ja3MpOiBBZGQgY291bnQgZmlsZWRzLgoJKHNwbGl0X2VkZ2UpOiBLZWVwIGNvdW50IGluZm9ybWF0aW9uIHVwLXRvLWRhdGUuCgkoZHVtcF9lZGdlX2luZm8sIGR1bXBfZmxvd19pbmZvKTogRHVtcCBjb3VudCBmaWVsZHMuCgoJKiBmaW5hbC5jIChjb3VudF9pbnN0cnVtZW50ZWRfZWRnZXMpOiBSZW5hbWUgdG8gZWRnZSBmcm9tIGFyYy4KCShlbmRfZmluYWwpOiBVcGRhdGUgdXNlcnMuCgkqIHByb2ZpbGUuYzogSW5jbHVkZSBleHByLmgsIGJhc2ljLWJsb2NrLmguCgkoc3RydWN0IGFkal9saXN0LCBBUkNfVEFSR0VULCBBUkNfU09VUkNFLCBBUkNfQ09VTlQpOiBLaWxsLgoJKHN0cnVjdCBiYl9pbmZvLCBsYWJlbF90b19iYiwgbGFiZWxfdG9fYmJfc2l6ZSwgYmJfZ3JhcGgpOiBLaWxsLgoJKGlnbm9yZV9uZXh0X25vdGUsIHJldHVybl9sYWJlbF9leGVjdXRpb25fY291bnQpOiBLaWxsLgoJKGJiZ19maWxlX25hbWUsIGRhX2ZpbGVfbmFtZSk6IEtpbGwuCgkoZWRnZV9pbmZvLCBiYl9pbmZvKTogTmV3IHN0cnVjdHVyZXMuCgkoRURHRV9JTkZPLCBCQl9JTkZPLCBHQ09WX0lOREVYX1RPX0JCLCBCQl9UT19HQ09WX0lOREVYKTogTmV3IG1hY3Jvcy4KCShjb3VudF9pbnN0cnVtZW50ZWRfZWRnZXMsIHRvdGFsX251bV9lZGdlcyk6IFJlbmFtZSB0byBlZGdlIGZyb20gYXJjLgoJKHRvdGFsX251bV9lZGdlc19pbnN0cnVtZW50ZWQpOiBMaWtld2lzZS4KCShpbml0X2FyYywgZXhwYW5kX3NwYW5uaW5nX3RyZWUpOiBLaWxsLgoJKGZpbGxfc3Bhbm5pbmdfdHJlZSwgdGFibGVqdW1wX2VudHJ5X3ApOiBLaWxsLgoJKGluc3RydW1lbnRfZWRnZXMpOiAgUmV3cml0ZSBmcm9tIGluc3RydW1lbnRfYXJjcyB0byB1c2UKCWNvbW1pdF9lZGdlX2luc2VydGlvbnMgaW5mcmFzdHJ1Y3R1cmUuCgkoY29tcHV0ZV9icmFuY2hfcHJvYmFiaWxpdGllcyk6IFJlbW92ZSBhcmd1bWVudHM7IHJld3JpdGUgZm9yCglDRkcgaW5mcmFzdHJ1Y3R1cmU7IHVzZSBydGxfZHVtcF9maWxlIGRpcmVjdGx5LgoJKGJyYW5jaF9wcm9iLCBmaW5kX3NwYW5uaW5nX3RyZWUpOiBMaWtld2lzZS4KCSh1bmlvbl9ncm91cHMsIGZpbmRfZ3JvdXApOiBOZXcuCgkoaW5pdF9icmFuY2hfcHJvYik6IE1ha2UgYmJnX2ZpbGVfbmFtZSBhbmQgZGFfZmlsZV9uYW1lIGxvY2FsLgoJKGVuZF9icmFuY2hfcHJvYik6IFVzZSBydGxfZHVtcF9maWxlIGRpcmVjdGx5LgoJKGluaXRfZWRnZV9wcm9maWxlcik6IFJlbmFtZSB0byBlZGdlIGZyb20gYXJjLgoJKG91dHB1dF9hcmNfcHJvZmlsZXIpOiBLaWxsLgoJKGdlbl9lZGdlX3Byb2ZpbGVyKTogTmV3LgoJKG91dHB1dF9mdW5jX3N0YXJ0X3Byb2ZpbGVyKTogVHVybiBvZmYgcHJvZmlsaW5nLiAgTWFrZSB0aGUKCWNvbnN0cnVjdG9yIHN0YXRpYyB3aGVuIHdlIGNhbi4KCSogcnRsLmggKGJyYW5jaF9wcm9iLCBlbmRfYnJhbmNoX3Byb2IpOiBVcGRhdGUgcHJvdG90eXBlcy4KCgkqIHRvcGxldi5jIChERklfZmxvdyk6IFJlbW92ZS4KCShERklfY2ZnLCBERklfbGlmZSk6IE5ldy4KCShkdW1wX2ZpbGUpOiBVcGRhdGUgYWNjb3JkaW5nbHkuCgkoY29tcGlsZV9maWxlKTogQ2FsbCBlbmRfYnJhbmNoX3Byb2IgaWYgcHJvZmlsZV9hcmNfZmxhZyB0b28uCgkocmVzdF9vZl9jb21waWxhdGlvbik6IE1vdmUgZmxvdzEgY2ZnIGNyZWF0aW9uIHRvIERGSV9jZmcuICBEbyBlZGdlCglwcm9maWxpbmcgYWZ0ZXIgdGhlIENGRyBpcyBidWlsdC4gIE1vdmUgZmxvdzEgbGlmZSBhbmFseXNpcyB0bwoJREZJX2xpZmUuICBBbHdheXMgZXN0aW1hdGUgcmVtYWluaW5nIHByb2JhYmlsaXRpZXMuCgoyMDAwLTA1LTE5ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEBjeWdudXMuY29tPgoKCSogaWZjdnQuYyAoZmluZF9pZl9jYXNlXzIpOiBEb24ndCBhbGxvdyBUSEVOIHRvIGJlIEVYSVQuCgoJKiBmbG93LmMgKG1ha2VfZWRnZXMpOiBUaGUgc2libGluZyBjYWxsIGVkZ2UgdG8gZXhpdCBpcyBhYm5vcm1hbC4KCjIwMDAtMDUtMTkgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgoJKiBqdW1wLmMgKHJlZGlyZWN0X2p1bXApOiBBZGQgZGVsZXRlX3VudXNlZCBhcmd1bWVudC4gIERvbid0CglyZW1vdmUgbGFiZWxzIGFuZCBjb2RlIGZvbGxvd2luZyB3aGVuIExBQkVMX05VU0VTIGdvZXMgdG8gemVyby4KCShpbnZlcnRfanVtcCk6IExpa2V3aXNlLgoJKGp1bXBfb3B0aW1pemVfMSk6IEZpeCByZWRpcmVjdC9pbnZlcnQgYXJndW1lbnRzLgoJKGRvX2Nyb3NzX2p1bXAsIHRocmVhZF9qdW1wcyk6IExpa2V3aXNlLgoJKiBmbG93LmMgKHNwbGl0X2VkZ2UpOiBMaWtld2lzZS4KCSogcmVvcmcuYyAob3B0aW1pemVfc2tpcCk6IExpa2V3aXNlLgoJKHJlb3JnX3JlZGlyZWN0X2p1bXAsIHJlbGF4X2RlbGF5X3Nsb3RzLCBkYnJfc2NoZWR1bGUpOiBMaWtld2lzZS4KCSogcHJvZmlsZS5jIChpbnN0cnVtZW50X2FyY3MpOiBMaWtld2lzZS4KCSogbG9vcC5jIChmaW5kX2FuZF92ZXJpZnlfbG9vcHMpOiBMaWtld2lzZS4gIEZpeCBpbmRlbnRhdGlvbi4KCSogcnRsLmg6IFVwZGF0ZSBwcm90b3R5cGVzLgoKRnJpIE1heSAxOSAxMjowNToxMyAyMDAwICBDbGludG9uIFBvcGV0eiAgPGNwb3BldHpAY3lnbnVzLmNvbT4KCgkqIHNzYS5jIChjb252ZXJ0X2Zyb21fc3NhKTogVGVsbCBsaWZlX2FuYWx5c2lzIHdlIG5lZWQgZGVhdGgKCW5vdGVzLgoJKG1ha2VfcmVnc19lcXVpdmFsZW50X292ZXJfYmFkX2VkZ2VzKTogT25seSBsb29rIGF0IGFibm9ybWFsCgljcml0aWNhbCBlZGdlcy4KCjIwMDAtMDUtMTkgIFphY2sgV2VpbmJlcmcgIDx6YWNrQHdvbGVyeS5jdW1iLm9yZz4KCgkqIGNwcGhhc2guYyAoZnVubGlrZV9tYWNyb2V4cGFuZCk6IE1ha2Ugc3VyZSBub3QgdG8gd2FsayBwMQoJcGFzdCBsMSB3aGVuIGRlbGV0aW5nIHdoaXRlc3BhY2UgYW5kIG1hcmtlcnMuCgoJKiBjcHBsZXguYyAoX2NwcF9zY2FuX3VudGlsKTogQ2xlYXIgQVVYIGZpZWxkIG9mIHRva2Vucy4KCSogY3BwbGliLmMgKGRvX3VuYXNzZXJ0KTogUHV0IHRoZSBsaXN0IHRvIGNvbXBhcmUgYWdhaW5zdCBvbgoJdGhlIHN0YWNrLgoKMjAwMC0wNS0xOSAgQnJ1Y2UgS29yYiAgPGJrb3JiQGdudS5vcmc+CgoJKiBmaXhpbmMvUkVBRE1FOiAgY2xlYW5lZCB1cCBvbGQgZG9jdW1lbnRhdGlvbgoJKiBmaXhpbmMvY2hlY2suZGlmZjogcmVnZW5lcmF0ZWQgJiB2ZXJpZmllZCBvbiBPU1I1IG9uIGl4ODYKCSogZml4aW5jL2NoZWNrLnRwbDogY29tcHV0ZSB0aGUgbGlzdCBvZiBuZWVkZWQgZGlyZWN0b3JpZXMKCWVtaXQgIiNpZiBkZWZpbmVkKG5hbWUpIiBiZWNhdXNlIG9mIGNvbmZsaWN0CglvbWl0IG1hY2hpbmUgbmFtZSBkaWZmZXJlbmNlcyBmcm9tIG91dHB1dCBkaWZmZXJlbmNlcwoJKiBmaXhpbmMvaW5jbGhhY2suZGVmKCBtODhrX211bHRpX2luY2wgKTogIFVzZSBgd3JhcCcgZnVuY3Rpb24KCShtYWNoaW5lX25hbWUpOiBjaGFuZ2UgdGVzdCB0ZXh0IHRvIHVzZSBgc2VkJyBtYXJrZXJzCgkqIGZpeGluYy9maXhpbmNsLng6IHJlZ2VuCgpGcmkgTWF5IDE5IDA2OjQ5OjM1IDIwMDAgIFJpY2hhcmQgS2VubmVyICA8a2VubmVyQHZsc2kxLnVsdHJhLm55dS5lZHU+CgoJKiBjb25maWcvZWxmb3MuaCAoU0VMRUNUX1NFQ1RJT04pOiBEb24ndCBhY2Nlc3MgREVDTF9JTklUSUFMIG9mCglhIENPTlNUUlVDVE9SLgoKMjAwMC0wNS0xOCAgQ2hyaXMgRGVtZXRyaW91ICA8Y2dkQHNpYnl0ZS5jb20+CgoJKiBnY2MudGV4aSAoTVVMVElMSUJfRVhDRVBUSU9OUyk6IENvcnJlY3QgZXhhbXBsZSBhbmQgdXBkYXRlCglpdCB0byBtYXRjaCB0aGUgY3VycmVudCBwcmFjdGljZS4KCjIwMDAtMDUtMTggIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBNYWtlZmlsZS5pbiAoU1RBR0VTVFVGRik6IEZpeCB0eXBvIGluIHNwZWxsaW5nIG9mIHMtdW5kZXIuCgoyMDAwLTA1LTE4ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEBjeWdudXMuY29tPgoKCSogcnRsYW5hbC5jIChpbnNuX2RlcGVuZGFudF9wLCBpbnNuX2RlcGVuZGFudF9wXzEpOiBOZXcuCgkqIHJ0bC5oIChpbnNuX2RlcGVuZGFudF9wKTogRGVjbGFyZSBpdC4KCSogbG9vcC5jIChzdHJlbmd0aF9yZWR1Y2UpOiBVc2UgaXQuCgoyMDAwLTA1LTE4ICBBbGV4YW5kcmUgT2xpdmEgIDxhb2xpdmFAY3lnbnVzLmNvbT4KCgkqIGNvbmZpZy9tbjEwMzAwL21uMTAzMDAuYyAoZXhwYW5kX3Byb2xvZ3VlLCBleHBhbmRfZXBpbG9ndWUpOgoJMTYtYml0IGFuZCA2NC1iaXQgY2xlYW4tdXAuCgoyMDAwLTA1LTE4IE1hcmsgRWxicmVjaHQgPHNub3diYWxsM0BiaWdmb290LmNvbT4KCgkqIGNvbmZpZ3VyZS5pbiAoKi1wYy1tc2Rvc2RqZ3BwKTogU2V0IGZsb2F0X2Zvcm1hdCB0byBub25lLgoJKiBjb25maWd1cmU6IFJlYnVpbHQuCgoyMDAwLTA1LTE4ICBaYWNrIFdlaW5iZXJnICA8emFja0B3b2xlcnkuY3VtYi5vcmc+CgoJKiBnZW5vcGluaXQuYzogVXNlICQgZm9yIGVzY2FwZSBzZXF1ZW5jZXMgaW4gb3B0YWIgcGF0dGVybnMuCglSZW1vdmUgYmFja3NsYXNoZXMgZnJvbSBvcHRhYiBwYXR0ZXJucy4gIENoYW5nZSAkQSwgJEIsICRDIHRvCglleHBhbmQgdG8gKGludCkgd2hhdGV2ZXIgaW5zdGVhZCBvZiBqdXN0IHdoYXRldmVyOyByZW1vdmUKCWV4cGxpY2l0IChpbnQpIGZyb20gYWxsIG9wdGFiIHBhdHRlcm5zLgoKCSogZ2Vuc3VwcG9ydC5jICh4bWFsbG9jLCB4cmVhbGxvYywgeHN0cmR1cCk6IFByb3ZpZGUuCgkqIGdlbmF0dHIuYywgZ2VuYXR0cnRhYi5jLCBnZW5jb2Rlcy5jLCBnZW5jb25maWcuYywgZ2VuZW1pdC5jLAoJZ2VuZXh0cmFjdC5jLCBnZW5mbGFncy5jLCBnZW5vcGluaXQuYywgZ2Vub3V0cHV0LmMsIGdlbnBlZXAuYywKCWdlbnJlY29nLmM6IFJlbW92ZSBwcml2YXRlIGNvcGllcyBvZiB4bWFsbG9jLCB4cmVhbGxvYywgYW5kCgl4c3RyZHVwLgoKMjAwMC0wNS0xOCAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAY3lnbnVzLmNvbT4KCgkqIGp1bXAuYyAoanVtcF9vcHRpbWl6ZV8xKTogQmFzZSBtaW5pbXVtIGluc24gY291bnQgZHVyaW5nCglmaW5kX2Nyb3NzX2p1bXAgb24gQlJBTkNIX0NPU1QuCgoyMDAwLTA1LTE4ICBKYWt1YiBKZWxpbmVrICA8amFrdWJAcmVkaGF0LmNvbT4KCgkqIHByaW50LXJ0bC5jIChwcmludF9ydHgpOiBPbmx5IHByaW50IG5vdGUgbGluZSBudW1iZXIgYXMgc3RyaW5nCglpZiBiZXR3ZWVuIE5PVEVfSU5TTl9CSUFTIGFuZCBOT1RFX0lOU05fTUFYLgoJKiBmaW5hbC5jIChmaW5hbF9zY2FuX2luc24pOiBEbyBub3RoaW5nIGZvciBub3RlIGxpbmUgbnVtYmVyIDAuCgoyMDAwLTA1LTE4ICBKYWt1YiBKZWxpbmVrICA8amFrdWJAcmVkaGF0LmNvbT4KCgkqIGdjYy1jb21tb24uYyAoZ2djX21hcmtfcnR4X2NoaWxkcmVuKTogTWFyayBOT1RFX0VYUEVDVEVEX1ZBTFVFCglmcm9tIE5PVEVfSU5TTl9FWFBFQ1RFRF9WQUxVRSBub3RlcyBhbmQgTk9URV9TT1VSQ0VfRklMRSBmcm9tCglOT1RFX0lOU05fREVMRVRFRF9MQUJFTC4KCjIwMDAtMDUtMTggIE5pY2sgQ2xpZnRvbiAgPG5pY2tjQGN5Z251cy5jb20+CgoJKiBjb25maWcvYXJtL3Vua25vd24tZWxmLmggKFVOSVFVRV9TRUNUSU9OKTogUGxhY2UgY29uc3RhbnQsCgl1bmluaXRpYWxpemVkIGRhdGEgaW4gLnJvZGF0YSBub3QgLmJzcywgYW5kIGRvIG5vdCBpbnRlcnByZXQgYW4KCWVycm9yIGluIHRoZSBpbml0aWFsaXNhdGlvbiB2YWx1ZSBhcyBtZWFuaW5nIHRoYXQgdGhlIHZhcmlhYmxlCglzaG91bGQgYmUgcGxhY2VkIGluIHRoZSAuYnNzIHNlY3Rpb24uCgpUaHUgTWF5IDE4IDEyOjEwOjE4IDIwMDAgIFBoaWxpcHBlIERlIE11eXRlciAgPHBoZG1AbWFjcWVsLmJlPgoKCSogY29uZmlndXJlLmluIChOT19NSU5VU19DX01JTlVTX08pOiBUZXN0IGAkYWNfY3ZfcHJvZ19jY18ke2FjX2NjfV9jX28nLAoJbm90IGAkYWNfY3ZfcHJvZ19jY19jY19jX28nLgoJKiBjb25maWd1cmU6IFJlZ2VuZXJhdGVkLgoKMjAwMC0wNS0xOCAgQ2hyaXMgRGVtZXRyaW91ICA8Y2dkQHNpYnl0ZS5jb20+CgkgICAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAY3lnbnVzLmNvbT4KCgkqIGMtY29tbW9uLmggKGVudW0gY190cmVlX2luZGV4KTogQWRkIGc3NyB0eXBlIGVudHJpZXMuCgkoZzc3X2ludGVnZXJfdHlwZV9ub2RlLCBnNzdfdWludGVnZXJfdHlwZV9ub2RlKTogTmV3LgoJKGc3N19sb25naW50X3R5cGVfbm9kZSwgZzc3X3Vsb25naW50X3R5cGVfbm9kZSk6IE5ldy4KCSogYy1kZWNsLmMgKGluaXRfZGVjbF9wcm9jZXNzaW5nKTogSW5pdGlhbGl6ZSB0aGVtLgoKMjAwMC0wNS0xOCAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAY3lnbnVzLmNvbT4KCgkqIGNvbmZpZy9oODMwMC9oODMwMC5tZCAoc3VicyBwYXR0ZXJucyk6IFVzZSAlRyB0byBuZWdhdGUuCgoJKiBjb25maWcvaDgzMDAvaDgzMDAuYyAob2tfZm9yX2JjbHIpOiBUYWtlIGEgSE9TVF9XSURFX0lOVC4KCShzbWFsbF9wb3dlcl9vZl90d28pOiBMaWtld2lzZTsgdXNlIGV4YWN0X2xvZzIuCgkoYWRkc19zdWJzX29wZXJhbmQsIG9uZV9pbnNuX2FkZHNfc3Vic19vcGVyYW5kKTogUmVtb3ZlLgoJKG91dHB1dF9hZGRzX3N1YnMpOiBSZW1vdmUuCgkodHdvX2luc25fYWRkc19zdWJzX29wZXJhbmQpOiBOZXcuCgkoc3BsaXRfYWRkc19zdWJzKTogTmV3LgoJKiBjb25maWcvaDgzMDAvaDgzMDAtcHJvdG9zLmg6IFVwZGF0ZS4KCSogY29uZmlnL2g4MzAwL2g4MzAwLmggKENPTlNUX09LX0ZPUl9KKTogQ2FzdCB0byB1bnMgSE9TVF9XSURFX0lOVC4KCShDT05TVF9PS19GT1JfTCk6IE1hdGNoIHN0cmljdCBhZGRzIG9wZXJhbmRzLgoJKENPTlNUX09LX0ZPUl9OKTogTWF0Y2ggc3RydWN0IHN1YnMgb3BlcmFuZHMuCgkqIGNvbmZpZy9oODMwMC9oODMwMC5tZCAoYWRkc19zdWJzIGluc25zKTogUmVtb3ZlLgoJKGFkZGhpIHBhdHRlcm5zKTogT3V0cHV0IGFkZHMvc3VicyBkaXJlY3RseS4KCShhZGRzaV9oODMwMGgpOiBMaWtld2lzZS4KCShhZGRoaS9hZGRzaSBzcGxpdHRlcnMpOiBOZXcuICBEZWNvbXBvc2UgdHdvX2luc25fYWRkc19zdWJzX29wZXJhbmQuCgoyMDAwLTA1LTE4ICBaYWNrIFdlaW5iZXJnICA8emFja0B3b2xlcnkuY3VtYi5vcmc+CgoJKiBjcHBleHAuYyAocGFyc2VfYXNzZXJ0aW9uKTogTmV3LgoJKGxleCk6IENhbGwgaXQgZm9yIENQUF9IQVNILiAgUmVtb3ZlIENQUF9BU1NFUlRJT04gY2FzZS4KCShfY3BwX3BhcnNlX2V4cHIpOiBSZW1vdmUgY2FzZSAnIycuICBEb24ndCBzZXQKCXBhcnNpbmdfaWZfZGlyZWN0aXZlLgoJKiBjcHBoYXNoLmMgKGNvbGxlY3Rfb2JqbGlrZV9leHBhbnNpb24sCgljb2xsZWN0X2Z1bmxpa2VfZXhwYW5zaW9uLCBjb2xsZWN0X3BhcmFtcywKCV9jcHBfY3JlYXRlX2RlZmluaXRpb24pOiBUaGUgbGlzdCBubyBsb25nZXIgaGFzIGEgdHJhaWxpbmcKCVZTUEFDRSB0b2tlbi4KCSogY3BwaGFzaC5oIChlbnVtIG5vZGVfdHlwZSk6IEFkZCBUX0FTU0VSVElPTi4KCShzdHJ1Y3QgaGFzaG5vZGUpOiBSZW1vdmUgYXNjaGFpbiwgYWRkIHByZWQuCgkoc3RydWN0IHByZWRpY2F0ZSk6IE5ldy4KCVVwZGF0ZSBwcm90b3R5cGVzLgoKCSogY3BwbGV4LmMgKGV4cGFuZF90b2tlbl9zcGFjZSk6IEhhbmRsZSBib3RoIG9mZnNldCBhbmQKCW5vbm9mZnNldCBsaXN0cy4KCShpbml0X3Rva2VuX2xpc3QsIF9jcHBfZnJlZV90b2tlbl9saXN0LCBfY3BwX3BhcnNlX2Fzc2VydGlvbik6IERlbGV0ZS4KCShfY3BwX2luaXRfdG9rbGlzdCwgX2NwcF9jbGVhcl90b2tsaXN0LCBfY3BwX2ZyZWVfdG9rbGlzdCwKCV9jcHBfc2xpY2VfdG9rbGlzdCwgX2NwcF9zcXVlZXplX3Rva2xpc3QsIF9jcHBfZXF1aXZfdG9rZW5zLAoJX2NwcF9lcXVpdl90b2tsaXN0cyk6IE5ldy4KCShfY3BwX3NjYW5fbGluZSk6IFJlbmFtZSB0byBfY3BwX3NjYW5fdW50aWw7IGFkZCBhYmlsaXR5IHRvCglzdG9wIGF0IGFueSBzaW5nbGUtY2hhcmFjdGVyIHRva2VuLCBub3QganVzdCBuZXdsaW5lLgoJKF9jcHBfbGV4X3Rva2VuKTogUmVtb3ZlIHNwZWNpYWwgY2FzZXMgZm9yICNkZWZpbmUgYW5kICNpZi4KCShjcHBfZ2V0X3Rva2VuKTogRXhwZWN0ICMgYXMgYSBzZXBhcmF0ZSB0b2tlbiB0eXBlLiAgUmVtb3ZlCglESVJFQ1RJVkUgY2FzZS4KCShfY3BwX2dldF9kaXJlY3RpdmVfdG9rZW4pOiBSZW1vdmUgRElSRUNUSVZFIGNhc2UuCgkoX2NwcF9sZXhfbGluZSwgX2NwcF9sZXhfZmlsZSwgX2NwcF9pbml0X2lucHV0X2J1ZmZlcik6IFVwZGF0ZS4KCgkqIGNwcGxpYi5jIChfY3BwX2NoZWNrX2RpcmVjdGl2ZSk6IFNldCBkaXJubyBhbmQKCVNZTlRBWF9JTkNMVURFIGJpdCBvZiBmbGFncywgbm90IGRpcl9oYW5kbGVyIGFuZCBkaXJfZmxhZ3MuCgkoX2NwcF9oYW5kbGVfZGlyZWN0aXZlKTogUnVuICMgPG51bWJlcj4gdGhyb3VnaCB0aGUgc2FtZSBsb2dpYwoJYXMgbm9ybWFsIGRpcmVjdGl2ZXMuCgkoZG9fZGVmaW5lKTogRG9uJ3Qgc2V0IHBhcnNpbmdfZGVmaW5lX2RpcmVjdGl2ZS4gIFVzZQoJX2NwcF9zY2FuX3VudGlsLiAgVGhlIGxpc3QgZG9lcyBub3QgaGF2ZSBhIFZTUEFDRSBhdCB0aGUgZW5kLgoJKGRvX2lmKTogU2F2ZSwgY2xlYXIsIGFuZCByZXN0b3JlIG9ubHlfc2Vlbl93aGl0ZSBhcm91bmQKCV9jcHBfcGFyc2VfZXhwci4KCShza2lwX2lmX2dyb3VwKTogcy9DUFBfRElSRUNUSVZFL0NQUF9IQVNILwoJKGRvX2Fzc2VydCwgZG9fdW5hc3NlcnQpOiBSZXdyaXRlLgoKCSogY3BwbGliLmggKFRUWVBFX1RBQkxFKTogUmVtb3ZlIENQUF9BU1NFUlRJT04uCgkoTElTVF9PRkZTRVQpOiBOZXcgZmxhZy4KCShzdHJ1Y3QgY3BwX3Rva2xpc3QpOiBSZXBsYWNlIGRpcl9oYW5kbGVyIGFuZCBkaXJfZmxhZ3Mgd2l0aAoJZGlybm8gYW5kIGZsYWdzLgoJKHN0cnVjdCBjcHBfcmVhZGVyKTogUmVtb3ZlIHBhcnNpbmdfaWZfZGlyZWN0aXZlIGFuZAoJcGFyc2luZ19kZWZpbmVfZGlyZWN0aXZlLgoKMjAwMC0wNS0xOCAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogZml4aW5jL2luY2xoYWNrLmRlZiAoYnJva2VuX2NhYnMpOiBVcGRhdGUgZml4IHRvIGhhbmRsZSBjb21tZW50cwoJZm9sbG93aW5nIHRoZSBjYWJzIGRlY2wgd2hpY2ggdGVybWluYXRlIG9uIHRoZSBmb2xsb3dpbmcgbGluZS4KCUFkZCB0aGUgY29ycmVzcG9uZGluZyB0ZXN0X3RleHQgY2FzZS4KCjIwMDAtMDUtMTggIE5laWwgQm9vdGggIDxOZWlsQkBlYXJ0aGxpbmcubmV0PgoKCSogY3BwaW5pdC5jIChjcHBfcmVhZGVyX2luaXQpOiBJbml0aWFsaXplIGNvbF9hZGp1c3QgYW5kCglkZWZhdWx0IHRhYiBzdG9wIHNpemUuCgkobm9fbnVtLCBPUFRfZnRhYnN0b3ApOiBOZXcuCgkoaGFuZGxlX29wdGlvbik6IEhhbmRsZSAiZnRhYnN0b3A9IiBjb21tYW5kLWxpbmUgb3B0aW9uLgoJKHByaW50X2hlbHApOiBEb2N1bWVudCBpdC4KCSogY3BwbGV4LmMgKENPTFVNTik6IFJlbW92ZS4KCShoYW5kbGVfbmV3bGluZSk6IFJlc2V0IGNvbF9hZGp1c3QuCgkoc2tpcF93aGl0ZXNwYWNlKTogVXBkYXRlIGNvbF9hZGp1c3QgYXMgdGFicyBlbmNvdW50ZXJlZC4KCShfY3BwX2xleF9saW5lKTogVXBkYXRlIHRvIHVzZSBjb2xfYWRqdXN0LiAgQ2FsbAoJc2tpcF93aGl0ZXNwYWNlIGZvciBhbGwgd2hpdGVzcGFjZS4KCSogY3BwbGliLmggKHN0cnVjdCBjcHBfb3B0aW9ucyk6IE5ldyBtZW1iZXIgdGFic3RvcC4KCShzdHJ1Y3QgY3BwX3JlYWRlcik6IE5ldyBtZW1iZXIgY29sX2FkanVzdC4KCShDUFBfQlVGX0NPTCk6IFVwZGF0ZS4KCShDUFBfQlVGX0NPTFVNTik6IE5ldy4KCSogY3BwLnRleGk6IERvY3VtZW50ICItZnRhYnN0b3A9IiBjb21tYW5kIGxpbmUgb3B0aW9uLgoKV2VkIE1heSAxNyAxODoxOTo0MSAyMDAwICBQaGlsaXBwZSBEZSBNdXl0ZXIgIDxwaGRtQG1hY3FlbC5iZT4KCgkqIGNvbmZpZ3VyZS5pbiAoTk9fTUlOVVNfQ19NSU5VU19PKTogTWFjcm8gbWFkZSBhdmFpbGFiZSBmb3IgQUNfT1VUUFVUCglmaWxlcy4KCSogY29uZmlndXJlOiBSZWJ1aWx0LgoKV2VkIE1heSAxNyAxODowNjoxMiAyMDAwICBKb2huIERhdmlkIEFuZ2xpbiA8ZGF2ZUBoaWF1bHkxLmhpYS5ucmMuY2E+CgoJKiBta2xpYmdjYy5pbiBBZGQgbWlzc2luZyAtREwkbmFtZSB3aGVuIGNvbXBpbGluZyBtb2R1bGVzIGluIGxpYmdjYzEuYy4KCgkqIHRyZWUuYyAoYnVpbGRfY29tbW9uX3RyZWVfbm9kZXMpOiBEbyBub3QgYnVpbGQgVEkgbm9kZXMgdW5sZXNzCglIT1NUX0JJVFNfUEVSX1dJREVfSU5UIGlzID49IDY0LgoKMjAwMC0wNS0xNyAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAY3lnbnVzLmNvbT4KCgkqIGp1bXAuYyAoanVtcF9vcHRpbWl6ZV8xKTogUmVtb3ZlIGluYWN0aXZlIGJ1dCByZWFsIGluc25zCglpbiBqdW1wLXRvLW5leHQtaW5zbiBvcHRpbWl6YXRpb24uCgoyMDAwLTA1LTE3ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEBjeWdudXMuY29tPgoKCSogdG9wbGV2LmMgKHJlc3Rfb2ZfY29tcGlsYXRpb24pOiBEb24ndCBjYWxsIG9wdGltaXplX21vZGVfc3dpdGNoaW5nCgl1bmxlc3MgT1BUSU1JWkVfTU9ERV9TV0lUQ0hJTkcuICBDb25kaXRpb25hbGx5IHNldCBub19uZXdfcHNldWRvcy4KCURvbid0IGNhbGwgcmVjb21wdXRlX3JlZ191c2FnZSBpZiBub19uZXdfcHNldWRvcyBpcyB0cnVlLgoJKiBsY20uYyAob3B0aW1pemVfbW9kZV9zd2l0Y2hpbmcpOiBNb3ZlIGlmZGVmcyBvdXRzaWRlIGZ1bmN0aW9uLgoJUmV0dXJuIHRydWUgaWYgd2UgZGlkIHdvcms7IHVwZGF0ZSBnbG9iYWwgbGlmZSBpbmZvcm1hdGlvbi4KCSogYmFzaWMtYmxvY2suaCAob3B0aW1pemVfbW9kZV9zd2l0Y2hpbmcpOiBVcGRhdGUgZGVjbC4KCjIwMDAtMDUtMTcgIE5laWwgQm9vdGggIDxuZWlsYkBlYXJ0aGxpbmcubmV0PgoKCSogY3BwbGV4LmMgKGV4cGFuZF9uYW1lX3NwYWNlKTogRG9uJ3QgdXNlIHB0cmRpZmZfdC4KCjIwMDAtMDUtMTcgIFphY2sgV2VpbmJlcmcgIDx6YWNrQHdvbGVyeS5jdW1iLm9yZz4KCgkqIGNwcGxpYi5jOiBOZXcgZmVhdHVyZSwgI3ByYWdtYSBzeXN0ZW1faGVhZGVyLgoJKiBjcHAudGV4aTogRG9jdW1lbnQgc3BlY2lhbCB0cmVhdG1lbnQgb2Ygc3lzdGVtIGhlYWRlcnMsIGFuZAoJdGhlIHZhcmlvdXMgbWVjaGFuaXNtcyB0byBnZXQgYSBoZWFkZXIgdGhhdCBzcGVjaWFsIHRyZWF0bWVudC4KCjIwMDAtMDUtMTcgIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIHN5c3RlbS5oIChvZmZzZXRvZik6IERlZmluZSBhdCB0aGUgdmVyeSBlbmQsIHRvIGVuc3VyZSB3ZSBwcmVmZXIKCXRoZSBwbGF0Zm9ybSdzIGRlZmluaXRpb24gaWYgYXZhaWxhYmxlLgoKMjAwMC0wNS0xNiAgQnJ1Y2UgS29yYiAgPGJrb3JiQGdudS5vcmc+CgoJKiBmaXhpbmMvZml4aW5jbC5jOiBpbXByb3ZlIHRoZSBkZWJ1ZyBkaXNwbGF5cywgaWdub3JlIFNJR1BJUEUKCSogZml4aW5jL3NlcnZlci5jOiBsaWtld2lzZQoJKiBmaXhpbmMvZml4Zml4ZXMuYyggY2hhcl9tYWNyb19kZWZfZml4ICk6IGZpeCByZWdleAoJKyAjaWZkZWYgZGVidWdnaW5nIGNvZGUgKyB1c2UgI2RlZiBjb25zdGFudCBmb3IKCXN1Yi1wYXR0ZXJuIGNvdW50CgkqIGZpeGluYy9pbmNsaGFjay5kZWYoIGhwdXgxMV9mYWJzZiApOiBLZWVwIEhQLVVYIDExIGZyb20gc3RvbXBpbmcKCW9uIEMrKyBtYXRoIG5hbWVzcGFjZQoKMjAwMC0wNS0xNyAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogZml4aW5jL2ZpeGZpeGVzLmMgKGNoYXJfbWFjcm9fdXNlX2ZpeCwgY2hhcl9tYWNyb19kZWZfZml4KToKCURvbid0IGNoZWNrIHRoZSByZXR1cm4gdmFsdWUgb2Ygc3ByaW50Zi4gIFVzZSBhc3ByaW50ZiB0byBhdm9pZAoJYnVmZmVyIG92ZXJmbG93cy4KCldlZCBNYXkgMTcgMTc6Mjc6NDQgMjAwMCAgQW5kcmV3IENhZ25leSAgPGNhZ25leUBiMS5jeWdudXMuY29tPgoKCSogZmxhZ3MuaCAod2Fybl91bnVzZWRfZnVuY3Rpb24sIHdhcm5fdW51c2VkX2xhYmVsLAoJd2Fybl91bnVzZWRfcGFyYW1ldGVyLCB3YXJuX3VudXNlZF92YXJpYWJsZSwgd2Fybl91bnVzZWRfdmFsdWUpOgoJUmVwbGFjZSBgYHdhcm5fdW51c2VkJycuCgkoc2V0X1d1bnVzZWQpOiBBZGQgZGVjbGFyYXRpb24uCgkqIHRvcGxldi5jIChzZXRfV3VudXNlZCk6IE5ldyBmdW5jdGlvbi4KCSh3YXJuX3VudXNlZF9mdW5jdGlvbiwgd2Fybl91bnVzZWRfbGFiZWwsIHdhcm5fdW51c2VkX3BhcmFtZXRlciwKCXdhcm5fdW51c2VkX3ZhcmlhYmxlLCB3YXJuX3VudXNlZF92YWx1ZSk6IE5ldyB2YXJpYWJsZXMuCgkoV19vcHRpb25zKTogQWRkIC1XdW51c2VkLWZ1bmN0aW9uLCAtV3VudXNlZC1mdW5jdGlvbiwKCS1XdW51c2VkLWxhYmVsLCAtV3VudXNlZC1wYXJhbWV0ZXIsIC1XdW51c2VkLXZhcmlhYmxlIGFuZAoJLVd1bnVzZWQtdmFsdWUuICBEZWxldGUgLVd1bnVzZWQuICBIYW5kbGVkIGluIGRlY29kZV9XX29wdGlvbi4KCgkqIHRvcGxldi5jIChkZWNvZGVfV19vcHRpb24pOiBVcGRhdGUgLVd1bnVzZWQgZmxhZ3MgYnkgY2FsbGluZwoJc2V0X1d1bnVzZWQuCgkqIGMtZGVjbC5jIChjX2RlY29kZV9vcHRpb24pOiBEaXR0byBmb3IgLVdhbGwuCgoJKiBzdG10LmMgKGV4cGFuZF9leHByX3N0bXQsIGV4cGFuZF9leHByX3N0bXQsCgl3YXJuX2Fib3V0X3VudXNlZF92YXJpYWJsZXMpOiBSZXBsYWNlIHdhcm5fdW51c2VkIHdpdGggbW9yZQoJZXhwbGljaXQgd2Fybl91bnVzZWRfdmFsdWUgZXQuYWwuCgkqIGZ1bmN0aW9uLmMgKGV4cGFuZF9mdW5jdGlvbl9lbmQpOiBEaXR0by4KCSogYy10eXBlY2suYyAoaW50ZXJuYWxfYnVpbGRfY29tcG91bmRfZXhwciwKCWludGVybmFsX2J1aWxkX2NvbXBvdW5kX2V4cHIpOiBEaXR0by4KCSogYy1kZWNsLmMgKHBvcGxldmVsLCBwb3BfbGFiZWxfbGV2ZWwpOiBEaXR0by4KCSogdG9wbGV2LmMgKGNoZWNrX2dsb2JhbF9kZWNsYXJhdGlvbnMpOiBSZXBsYWNlIHdhcm5fdW51c2VkIHdpdGgKCWNoZWNrIGZvciBlaXRoZXIgd2Fybl91bnVzZWRfZnVuY3Rpb24gb3Igd2Fybl91bnVzZWRfdmFyaWFibGUuCgoJKiBnY2MuMSwgaW52b2tlLnRleGkgKFdhcm5pbmcgT3B0aW9ucyk6IERvY3VtZW50CgktV3VudXNlZC1mdW5jdGlvbiwgLVd1bnVzZWQtZnVuY3Rpb24sIC1XdW51c2VkLWxhYmVsLAoJLVd1bnVzZWQtcGFyYW1ldGVyLCAtV3VudXNlZC12YXJpYWJsZSBhbmQgLVd1bnVzZWQtdmFsdWUgb3B0aW9ucy4KCldlZCBNYXkgMTcgMTA6Mjg6MTIgMjAwMCAgUGhpbGlwcGUgRGUgTXV5dGVyICA8cGhkbUBtYWNxZWwuYmU+CgoJKiBta2xpYmdjYy5pbiAoYnVpbGRpbmcgbGliZ2NjMSkgW1hsaWJnY2MxLmFdOiBGaW5kIGxpYmdjYzEuYyBpbgoJJChzcmNkaXIpLCBub3QgaW4gdGhlIGN1cnJlbnQgZGlyZWN0b3J5LgoKMjAwMC0wNS0xNiAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAY3lnbnVzLmNvbT4KCgkqIGNvbmZpZy9pYTY0L2NydGJlZ2luLmFzbSAoX19kc29faGFuZGxlKTogTWFyayBoaWRkZW4gaWYgdGhlCglhc3NlbWJsZXIgc3VwcG9ydHMgaXQuCgkoLmZpbmksIC5pbml0KTogVXNlIGEgZ3AtcmVsYXRpdmUgaW5kaXJlY3QgY2FsbC4KCShfX2RvX2dsb2JhbF9kdG9yc19hdXgpOiBQcmVzZXJ2ZSB0aGUgZ3A7IHJlYnVuZGxlLgoJKF9fZG9fZnJhbWVfc2V0dXApOiBMaWtld2lzZS4KCSogY29uZmlnL2lhNjQvY3J0ZW5kLmFzbSAoLklBXzY0LnVud2luZCk6IERvbid0IHRlcm1pbmF0ZSB3aXRoIC0xLgoJKC5pbml0KTogVXNlIGEgZ3AtcmVsYXRpdmUgaW5kaXJlY3QgY2FsbC4KCShfX2RvX2dsb2JhbF9jdG9yc19hdXgpOiBQcmVzZXJ2ZSB0aGUgZ3AuCgoyMDAwLTA1LTE2ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEBjeWdudXMuY29tPgoKCSogZmxvdy5jIChjb21taXRfb25lX2VkZ2VfaW5zZXJ0aW9uKTogQmUgcHJlcGFyZWQgZm9yIGEgcmV0dXJuCglpbnNuIHRvIGJlIGluc2VydGVkIG9uIHRoZSBlZGdlIHdpdGggYSBub3JtYWwganVtcC4KCSoganVtcC5jIChqdW1wX29wdGltaXplXzEpOiBEb24ndCBsb29rIHRvIGNyZWF0ZSByZXR1cm4gaXNucy4KCgkqIGZsb3cuYyAoZmxvd19kZWxldGVfaW5zbik6IERvbid0IGFkanVzdCByZWZlcmVuY2UgY291bnQgb2Ygbm90ZXMuCgkqIGp1bXAuYyAoanVtcF9vcHRpbWl6ZV8xKTogTGlrZXdpc2UuCgkocmV0dXJuanVtcF9wKTogVmVyaWZ5IHRoZSBhcmd1bWVudCBpcyBhIEpVTVBfSU5TTi4KCSogcnRsLmRlZiAoTk9URSk6IEFkZCA1dGggZWxlbWVudCBmb3IgTk9URV9JTlNOX0RFTEVURURfTEFCRUwuCgoyMDAwLTA1LTE2ICBOaWNrIENsaWZ0b24gIDxuaWNrY0BjeWdudXMuY29tPgoKCSogY29uZmlnL20zMnIvbTMyci5jIChzbWFsbF9pbnNuX3ApOiBVc2UgSU5TTl9QKCkgdG8gcmVwbGFjZQoJR0VUX1JUWF9DTEFTUyAoR0VUX0NPREUgKCkpID09ICdpJy4KCShsYXJnZV9pbnNuX3ApOiBEaXR0by4KCShtMzJyX2lzX2luc24pOiBOZXcgZnVuY3Rpb246IFJldHVybiB0cnVlIGlmIHRoZSBpbnNuIGNvbnRhaW5zCglhbiBleGVjdXRhYmxlIGluc3RydWN0aW9uLgoJKG0zMnJfYWRqdXN0X2luc24pOiBVc2UgbTMycl9pc19pbnNuLgoJKG0zMnJfc2NoZWRfcmVvcmRlcik6IFVzZSBtMzJyX2lzX2luc24uCgkobTMycl9zY2hlZF92YXJpYWJsZV9pc3N1ZSk6IFVzZSBtMzJyX2lzX2luc24uCgoyMDAwLTA1LTE2ICBGcmFueiBTaXJsICA8RnJhbnouU2lybC1rZXJuZWxAbGF1dGVyYmFjaC5jb20+CgoJKiByczYwMDAvcnM2MDAwLmMgKHJzNjAwMF9zZWxlY3Rfc2VjdGlvbik6IFRyZWF0IENPTlNUUlVDVE9SIGxpa2UKCVZBUl9ERUNMLgoKCSogcnM2MDAwL3N5c3Y0LmggKEFTTV9PVVRQVVRfRFdBUkZfQUREUik6IERlbGV0ZSB1bnVzZWQgdmFyaWFibGUuCgoJKiByczYwMDAvc3lzdjQuaCAoQ1BQX09TX0xJTlVYX1NQRUMpOiBEZWZpbmUgX191bml4IGFuZCBfX2xpbnV4CglhY2NvcmRpbmcgdG8gZ2l2ZW4gb3B0aW9ucy4KClR1ZSBNYXkgMTYgMTI6MTc6MzEgMjAwMCAgSmVmZnJleSBBIExhdyAgKGxhd0BjeWdudXMuY29tKQoKCSogbW4xMDIwMC5oIChQUkVGRVJSRURfUkVMT0FEX0NMQVNTKTogRG8gbm90IHByZWZlciBEQVRBX1JFR1MKCWlmIFggaGFzIFZPSURtb2RlIGVpdGhlci4KCShMSU1JVF9SRUxPQURfQ0xBU1MpOiBTaW1pbGFybHkuCgoJKiBtbjEwMjAwLm1kIChpbmRpcmVjdF9qdW1wLCB0YWJsZWp1bXApOiBVc2UgInJlZ2lzdGVyX29wZXJhbmQiLAoJbm90ICJnZW5lcmFsX29wZXJhbmQiIHRvIG1hdGNoIHRoZSBwcm9jZXNzb3IncyBjYXBhYmlsaXRpZXMuCgoyMDAwLTA1LTE2ICBCcnVjZSBLb3JiICA8YmtvcmJAZ251Lm9yZz4KCgkqIGZpeGluYy9SRUFETUU6ICBjb3JyZWN0ZWQgcmV0dXJuIGFkZHJlc3MKCSogZml4aW5jL2NoZWNrLmRpZmY6ICByZWdlbmVyYXRlLCBub3cgdGhhdCB0ZXN0IHdvcmtzCgkqIGZpeGluYy9maXhmaXhlcy5jKGZvcm1hdF9maXgsZm9ybWF0X3dyaXRlKTogcmVmb3JtYXR0ZWQKCShjaGFyX21hY3JvX2RlZl9maXgsY2hhcl9tYWNyb191c2VfZml4KTogY29ycmVjdGVkIGFuZAoJcmV3cm90ZSB0byB1c2UgcmVnZXggdG8gcGFyc2UgdGhlIHRleHQKCSogZml4aW5jL2luY2xoYWNrLmRlZjogbW9yZSB0ZXN0aW5nCgkqIGZpeGluYy9maXhpbmNsLng6ICByZWdlbmVyYXRlZAoKCSogZml4aW5jL2luY2xoYWNrLmRlZjogYWRkZWQgc2V2ZXJhbCAidGVzdF90ZXh0IiBhdHRyaWJ1dGVzCgljaGFuZ2VkIHNldmVyYWwgZml4ZXMgdG8gdXNlIGBjX2ZpeCA9IGZvcm1hdCcKCXJlLWFscGhhYmV0aXplZCB0aGUgZml4ZXMKCgkqIGZpeGluYy9jaGVjay5kaWZmOiByZWdlbmVyYXRlCgkqIGZpeGluYy9maXhpbmNsLng6IHJlZ2VuZXJhdGUKCSogZml4aW5jL2NoZWNrLnRwbDogYWRkZWQgYHNwYXJjJyBhbmQgYG5ldGluZXQnIHRvIHRoZSBsaXN0CglvZiBjcmVhdGVkIGRpcnMKCgoyMDAwLTA1LTE2ICBBbGV4YW5kcmUgT2xpdmEgIDxhb2xpdmFAY3lnbnVzLmNvbT4KCgkqIGNvbmZpZy9tbjEwMzAwL21uMTAzMDAuaCAoQVNNX09VVFBVVF9EV0FSRjJfQUREUl9DT05TVCk6IFJlbW92ZS4KCjIwMDAtMDUtMTUgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgoJKiB0b3BsZXYuYyAocmVzdF9vZl9jb21waWxhdGlvbik6IFJ1biBmdWxsIGp1bXAgcGFzcyBiZWZvcmUKCWZpbmRfYmFzaWNfYmxvY2tzIG9mIGZsb3cyLgoKMjAwMC0wNS0xNSAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAY3lnbnVzLmNvbT4KCgkqIGp1bXAuYzogRml4IHR5cG9zIGFuZCBjbGFyaWZ5IGNvbW1lbnRhcnkgZnJvbSBsYXN0IGNoYW5nZS4KCShhbnlfY29uZGp1bXBfcCk6IFZlcmlmeSBTRVRfU1JDIGlzIGFuIElGX1RIRU5fRUxTRS4KCShzYWZlX3RvX3JlbW92ZV9qdW1wX3ApOiBSZW1vdmUuCgkoY29uZGp1bXBfbGFiZWwpOiBVc2UgcGNfc2V0LgoKMjAwMC0wNS0xNSAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAY3lnbnVzLmNvbT4KCgkqIGlmY3Z0LmMgKGNvbmRfZXhlY19wcm9jZXNzX2luc25zKTogRHJvcCBVU0UgYW5kIENMT0JCRVIgaW5zbnMKCXRoYXQgZ2V0IGluIHRoZSB3YXkgYWZ0ZXIgcmVsb2FkLgoJKGNvbmRfZXhlY19wcm9jZXNzX2lmX2Jsb2NrKTogU2tpcCBhIGxhYmVsIGhlYWRpbmcgVEhFTiBibG9jay4KCjIwMDAtMDUtMTUgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgoJKiB2YXJhc20uYyAob3V0cHV0X2NvbnN0YW50X3Bvb2wpOiBBYm9ydCBpbnN0ZWFkIG9mIGNvbnZlcnRpbmcKCShpbXByb3Blcmx5KSBkZWxldGVkIGxhYmVscyB0byB6ZXJvLgoKMjAwMC0wNS0xNiAgTmVpbCBCb290aCAgPE5laWxCQGVhcnRobGluZy5uZXQ+CgoJKiBjcHBsZXguYyAocGFyc2Vfc3RyaW5nMik6IFVwZGF0ZSBjb21tZW50LgoJKGNwcF9sZXhfbGluZSk6IE5vIHNwZWNpYWwgYXNzZXJ0aW9uIHRyZWF0bWVudCBmb3IgJygnLgoJKiBjcHBsaWIuYyAoRElSRUNUSVZFX1RBQkxFKTogUmVtb3ZlIFNZTlRBWF9BU1NFUlQuCgkqIGNwcGxpYi5oIChTWU5UQVhfQVNTRVJUKTogUmVtb3ZlLgoKTW9uIE1heSAxNSAyMTo0NTozNiBNRVQgRFNUIDIwMDAgIEphbiBIdWJpY2thICA8amhAc3VzZS5jej4KCgkqIGp1bXAuYyAoY29uZGp1bXBfcCk6ICBNYXJrIGFzIGRlcHJlYWNoZWQuCgkoYW55X2NvbmR1bXBfcCk6IE5ldy4KCShhbnlfdW5jb25kdW1wX3ApOiBOZXcuCgkocGNfc2V0KTogTmV3LgoJKHNhZmVfdG9fcmVtb3ZlX2p1bXBfcCk6IE5ldy4KCSogcnRsLmggKGFueV9jb25kdW1wX3AsIGFueV91bmNvbmRqdW1wX3AsIHBjX3NldAoJc2FmZV90b19yZW1vdmVfanVtcF9wKTogRGVjbGFyZS4KCk1vbiBNYXkgMTUgMjE6MDc6MjAgTUVUIERTVCAyMDAwICBKYW4gSHViaWNrYSAgPGpoQHN1c2UuY3o+CgoJKiBjYWxscy5jOiBSZS1pbnN0YWxsIGJvdGggcGF0Y2hlcyByZXZlcnRlZCBieSBsYXN0IHBhdGNoLgoJKHN0cnVjdCBhcmdfZGF0YSk6IE5ldyBmaWVsZCB0YWlsX2NhbGxfcmVnLgoJKGluaXRpYWxpemVfYXJndW1lbnRfaW5mb3JtYXRpb24pOiBJbml0aWFsaXplIHRhaWxfY2FsbF9yZWcKCShsb2FkX3JlZ2lzdGVyX3BhcmFtZXRlcnMpOiBOZXcgYXJndW1lbnQgZmxhZ3MsIHVzZQoJdGFpbF9jYWxsX3JlZyB3aGVuIGVtaXRpbmcgdGFpbCBjYWxsIHNlcXVlbmNlLgoJKGV4cGFuZF9jYWxsKTogVXBkYXRlIGNhbGwgb2YgbG9hZF9yZWdpc3Rlcl9wYXJhbWV0ZXJzOwoJY29weSB1bmFkanVzdGVkX2FyZ3Nfc2l6ZSB0byBhZGp1c3RlZF9hcmdzX3NpemUuCgpNb24gTWF5IDE1IDE5OjAxOjQyIE1FVCBEU1QgMjAwMCAgSmFuIEh1Ymlja2EgIDxqaEBzdXNlLmN6PgoKCSogbG9vcC5jIChzY2FuX2xvb3AsIHN0cmVuZ3RoX3JlZHVjZSwgbG9vcF9vcHRpbWl6ZSk6IENoYW5nZSB1bnJvbGxfcAoJYW5kIGJjdF9wIHBhcmFtZXRlcnMgdG8gZmxhZ3MuCgkqIGxvb3AuaCAoTE9PUF9VTlJPTEwsIExPT1BfQkNUKTogTmV3IGNvbnN0YW50cy4KCSogcnRsLmggKGxvb3Bfb3B0aW1pemUpOiBVcGRhdGUgcHJvdG90eXBlLgoJKiB0b3BsZXYuYyAocmVzdF9vZl9jb21waWxhdGlvbik6IFVwZGF0ZSBjYWxsIG9mIGxvb3Bfb3B0aW1pemUuCgoyMDAwLTA1LTE1ICBKYWt1YiBKZWxpbmVrICA8amFrdWJAcmVkaGF0LmNvbT4KCgkqIGNhbGxzLmMgKGV4cGFuZF9jYWxsKTogTW92ZSBleHBhbmRfc3RhcnRfdGFyZ2V0X3RlbXBzIGNhbGwgYWZ0ZXIKCXN0YXJ0X3NlcXVlbmNlKCkuCgoyMDAwLTA1LTE1ICBOZWlsIEJvb3RoICA8TmVpbEJAZWFydGhsaW5nLm5ldD4KCgkqIGNwcGhhc2guYyAodHJhZF9zdHJpbmdpZnksIHdhcm5fdHJhZF9zdHJpbmdpZnksCgljb2xsZWN0X3BhcmFtcyk6IE1ha2Ugc29tZSBwb2ludGVycyBwb2ludGVycyB0byBjb25zdC4KCSogY3BwbGV4LmMgKGF1dG9fZXhwYW5kX25hbWVfc3BhY2UpIEd1YXJhbnRlZWQgdG8gYWx3YXlzCglleHBhbmQgYnkgYXQgbGVhc3Qgb25lIGNoYXJhY3Rlci4KCShTUEVMTF9DSEFSLCBTUEVMTF9OT05FKTogVGVtcG9yYXJpbHkgcmV2ZXJzZSBvcmRlci4KCShzdHJ1Y3QgdG9rZW5fc3BlbGxpbmcpOiBVc2UgY29uc3QgVV9DSEFSICogcmF0aGVyIHRoYW4gUFRSLgoJKGV4cGFuZF9uYW1lX3NwYWNlKTogRml4IHVwIHRva2VuIHBvaW50ZXJzIGlmIG5hbWUgc3BhY2UKCWlzIG1vdmVkIHdoZW4gZXhwYW5kaW5nLgoJKElOSVRfTkFNRSwgY3BwX3NjYW5fbGluZSwgcGFyc2VfbmFtZSwgcGFyc2VfbnVtYmVyLAoJcGFyc2Vfc3RyaW5nMiwgc2F2ZV9jb21tZW50LCBzcGVsbF90b2tlbiwgY3BwX291dHB1dF9saXN0KToKCVVwZGF0ZSBzbyB0aGUgcm91dGluZXMgaGFuZGxlIHRva2VucyB3aXRoIGEgZGlyZWN0IHBvaW50ZXIgdG8KCXRoZWlyIHRleHQsIHJhdGhlciB0aGFuIGFuIG9mZnNldCBpbnRvIHRoZSB0b2tlbidzIGxpc3QncyBuYW1lYnVmLgoJKF9jcHBfbGV4X2xpbmUpOiBSZWFycmFuZ2UgZm9yIGNsYXJpdHkuCgoJKiBjcHBsaWIuYyAoX2NwcF9jaGVja19kaXJlY3RpdmUpOiBTaW1pbGFybHkuCgkoZG9fZGVmaW5lKTogTWFrZSBTWU0gYSBwb2ludGVyIHRvIGNvbnN0LgoJKiBjcHBsaWIuaCAoc3RydWN0IGNwcF9uYW1lKTogUmVwbGFjZSBvZmZzZXQgd2l0aCBkaXJlY3QgcG9pbnRlci4KCShDUFBfSU5ULCBDUFBfRkxPQVQpOiBTcGVsbGluZyB0eXBlIHNob3VsZCBiZSBTUEVMTF9JREVOVC4KCShUT0tfT0ZGU0VUKTogRGVsZXRlLgoJKFRPS19OQU1FKTogVXBkYXRlLgoKMjAwMC0wNS0xNCAgR2VvZmZyZXkgS2VhdGluZyAgPGdlb2Zma0BjeWdudXMuY29tPgoKCSogY29uZmlnL3JzNjAwMC9yczYwMDAuaCAoUkVUVVJOX0FERFJFU1NfT0ZGU0VUKTogQ29ycmVjdCBmb3IKCTY0LWJpdCBBQkkuCgoJKiBjb25maWcvcnM2MDAwL3JzNjAwMC5jIChsb2dpY2FsX29wZXJhbmQpOiBSZXdyaXRlIHRvIHRha2UgTU9ERQoJaW50byBhY2NvdW50LgoJKGxvZ2ljYWxfdV9vcGVyYW5kKTogRGVsZXRlLgoJKG5vbl9sb2dpY2FsX2NpbnRfb3BlcmFuZCk6IFJld3JpdGUgdG8gdGFrZSBNT0RFIGludG8gYWNjb3VudC4KCShub25fbG9naWNhbF91X2NpbnRfb3BlcmFuZCk6IERlbGV0ZS4KCShib29sZWFuX29wZXJhdG9yKTogTmV3IGZ1bmN0aW9uLgoJKHByaW50X29wZXJhbmQpOiBBZGQgbmV3ICVxIG9wZXJhbmQuCgkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLmggKFBSRURJQ0FURV9DT0RFUyk6IEFkZCBib29sZWFuX29wZXJhdG9yLAoJcmVtb3ZlIGxvZ2ljYWxfdV9vcGVyYW5kIGFuZCBub25fbG9naWNhbF91X2NpbnRfb3BlcmFuZCwKCXVwZGF0ZSBsb2dpY2FsX29wZXJhbmQgYW5kIG5vbl9sb2dpY2FsX2NpbnRfb3BlcmFuZC4KCSogY29uZmlnL3JzNjAwMC9yczYwMDAubWQ6IFJld3JpdGUgdGhlIHBhdHRlcm5zIGZvciBwZXJmb3JtaW5nCglsb2dpY2FsIG9wZXJhdGlvbnMgdG8gdXNlICVxLgoKCSogY29uZmlnL3JzNjAwMC9yczYwMDAubWQgKG1vdnNpKTogRG9uJ3QgbW9kaWZ5IFJUTCBpbi1wbGFjZS4KCShtb3ZkaSk6IE1ha2Ugc2ltaWxhciB0byBtb3ZzaS4KCSogY29uZmlnL3JzNjAwMC9yczYwMDAuaCAoQVNNX09VVFBVVF9TUEVDSUFMX1BPT0xfRU5UUllfUCk6IFRoZXJlCglpcyBubyBzdWNoIHRoaW5nIGFzIGEgREltb2RlIENPTlNUX0RPVUJMRS4KCSogY29uZmlnL3JzNjAwMC9yczYwMDAuYyAob3V0cHV0X3RvYyk6IExpa2V3aXNlLgoKCSogY29uZmlnL3JzNjAwMC9yczYwMDAuYyAob3V0cHV0X2NicmFuY2gpOiBEb24ndCBvdXRwdXQgcHJlZGljdGlvbgoJY29kZXMgd2hlbiBvbGQgbW5lbW9uaWNzIGFyZSBpbiB1c2UuICBQcmludCByZWdpc3RlciBuYW1lcwoJZm9yIGNjIHJlZ2lzdGVycyB3aGVuIHJlcXVlc3RlZC4KCgkqIG9wdGFicy5jIChleHBhbmRfZmxvYXQpOiBEb24ndCBhbGxvdyBtb2RlIHdpZGVuaW5nIHRoYXQgY2F1c2VzCglkb3VibGUgcm91bmRpbmcuCgoJKiBpbnZva2UudGV4aSAoUlMvNjAwMCBhbmQgUG93ZXJQQyBPcHRpb25zKTogVXBkYXRlIC1tNjQvLW0zMgoJZmxhZ3MgdG8gdGhlaXIgY3VycmVudCBuYW1lcyAtbWFpeDY0IGFuZCAtbWFpeDMyLgoKMjAwMC0wNS0xNCAgQnJ1Y2UgS29yYiAgPGJrb3JiQGdudS5vcmc+CgoJKiBmaXhpbmMvZml4Zml4ZXMuYyh3cmFwX2ZpeCk6IG5ldyBmaXggLSBpbnNlcnRzIHRleHQgYmVmb3JlCglhbmQvb3IgYWZ0ZXIgY3VycmVudCB0ZXh0IG9mIGZpbGUKCSogZml4aW5jL2ZpeGxpYi5jKG11c3RfbWFsbG9jKToKCSogZml4aW5jL2ZpeGxpYi5oKG11c3RfbWFsbG9jKTogKyByZWZvcm1hdHRpbmcKCSogZml4aW5jL2luY2xoYWNrLmRlZjogcmVwbGFjZSB0aGUgIjFpIiBhbmQgIiRhIiBzZWQgY29tbWFuZHMKCXdpdGggdXNhZ2VzIG9mIGBgY19maXggPSB3cmFwOycnCglBZGQgc2V2ZXJhbCB0ZXN0cyBhbmQgdXNlIHRoZSBgYGNfZml4ID0gZm9ybWF0JycgZml4ZXIgbW9yZS4KCSogZml4aW5jL2ZpeGluY2wueDogcmVnZW4KCSogZml4aW5jL2NoZWNrLmRpZmY6IHJlZ2VuCgkqIGZpeGluYy9jaGVjay50cGw6IGVtaXQgdGhlIGFzc29jaWF0ZWQgaGVhZGVyIHdpdGggdGhlIG1pc3NpbmcKCXRlc3QgbWVzc2FnZQoKU3VuIE1heSAxNCAxNzo1ODo1OSAyMDAwICBIYW5zLVBldGVyIE5pbHNzb24gIDxocEBheGlzLmNvbT4KCgkqIG1rbGliZ2NjLmluIChidWlsZGluZyBsaWJnY2MxKSBbWGxpYmdjYzEuYV06IERvIG5vdCB1c2UgdW5zZXQKCXZhcmlhYmxlcyAkc3JjIGFuZCAkZHN0LgoKMjAwMC0wNS0xMyAgR2FicmllbCBEb3MgUmVpcyA8Z2RyQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBkaWFnbm9zdGljLmggKERJQUdOT1NUSUNTX1NIT1dfUFJFRklYX09OQ0UpOiBOZXcgbWFjcm8uCgkoRElBR05PU1RJQ1NfU0hPV19QUkVGSVhfTkVWRVIpOiBMaWtld2lzZS4KCShESUFHTk9TVElDU19TSE9XX1BSRUZJWF9FVkVSWV9MSU5FKTogTGlrZXdpc2UuCgkoc3RydWN0IG91dHB1dF9idWZmZXI6IGVtaXR0ZWRfcHJlZml4X3AsIHByZWZpeGluZ19ydWxlKTogTmV3CglmaWVsZHMuCgkoc2V0X21lc3NhZ2VfcHJlZml4aW5nX3J1bGUpOiBEZWNsYXJlLgoKCSogZGlhZ25vc3RpYy5jOiAoY3VycmVudF9wcmVmaXhpbmdfcnVsZSk6IE5ldyB2YXJpYWJsZS4KCShzZXRfbWVzc2FnZV9wcmVmaXhpbmdfcnVsZSk6IERlZmluZS4KCShvdXRwdXRfc2V0X3ByZWZpeCk6IEFkanVzdCBidWZmZXItPmVtaXR0ZWRfcHJlZml4X3AuCgkoaW5pdF9vdXRwdXRfYnVmZmVyKTogQWRqdXN0IEluaXRpYWxpemF0aW9uLgoJKG91dHB1dF9lbWl0X3ByZWZpeCk6IFJld3JpdGUuICBUYWtlIHByZWZpeGluZyBydWxlcyBpbnRvIGFjY291bnQuCgpTYXQgTWF5IDEzIDExOjA1OjQ3IDIwMDAgIFBoaWxpcHBlIERlIE11eXRlciAgPHBoZG1AbWFjcWVsLmJlPgoKCSogaWZjdnQuYyAoaWZfY29udmVydCk6IERvIG5vdCBmcmVlIE5VTEwuCgoyMDAwLTA1LTEyICBILkouIEx1ICAoaGpsQGdudS5vcmcpCgoJKiBndGhyLWRjZS5oOiBBZGQgc3VwcG9ydCBmb3IgbGlib2JqYy4KCSogZ3Roci1wb3NpeC5oOiBMaWtld2lzZS4KCSogZ3Roci1zb2xhcmlzLmg6IExpa2V3aXNlLgoJKiBndGhyLXZ4d29ya3MuaDogTGlrZXdpc2UuCgkqIGd0aHItc2luZ2xlLmg6IExpa2V3aXNlLgoJKiBndGhyLXdpbjMyLmg6IExpa2V3aXNlLgoKMjAwMC0wNS0xMiAgTmljayBDbGlmdG9uICA8bmlja2NAY3lnbnVzLmNvbT4KCgkqIGNvbmZpZy9mcjMwL2ZyMzAuYyAoZnIzMF9tb3ZlX2RvdWJsZSk6IE5ldyBmdW5jdGlvbjogIEVtaXQgY29kZQoJdG8gbW92ZSBhIGRvdWJsZSB3b3JkIHZhbHVlLgoJKGRpX29wZXJhbmQpOiBOZXcgZnVuY3Rpb246IFJldHVybiB0cnVlIGlmIHRoZSBvcGVyYW5kIGlzIHN1aXRiYWxlCglmb3IgYSBkb3VibGUgd29yZCBtb3ZlIG9wZXJhdGlvbi4KCShub25pbW1lZGlhdGVfZGlfb3BlcmFuZCk6IE5ldyBmdW5jdGlvbjogUmV0dXJuIHRydWUgaWYgdGhlCglvcGVyYW5kIGlzIGEgREltb2RlIHJlZ2lzdGVyIG9yIE1FTS4KCgkqIGNvbmZpZy9mcjMwL2ZyMzAuaCAoUFJFRElDQVRFX0NPREVTKTogQWRkIGRpX29wZXJhbmQgYW5kCglub25pbW1lZGlhdGVfZGlfb3BlcmFuZC4KCgkqIGNvbmZpZy9mcjMwL2ZyMzAtcHJvdG9zLmggQWRkIGZyMzBfbW92ZV9kb3VibGUsIGRpX29wZXJhbmQsIGFuZAoJbm9uaW1tZWRpYXRlX2RpX29wZXJhbmQuCgoJKiBjb25maWcvZnIzMC9mcjMwLm1kIChtb3ZkaSk6IE5ldyBwYXR0ZXJuLiAgUmVxdWlyZWQgYmVjYXVzZQoJb3RoZXIgcGF0dGVybnMgZ2VuZXJhdGUgREltb2RlIHJlc3VsdHMuCgkobW92ZGlfaW5zbik6IE5ldyBwYXR0ZXJuLgoKMjAwMC0wNS0xMiAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAY3lnbnVzLmNvbT4KCgkqIGNvbmZpZy9hbHBoYS9hbHBoYS5jIChzdHJ1Y3Qgc2hhZG93X3N1bW1hcnkpOiBEZWZpbmUKCWJpdGZpZWxkcyBhcyB0eXBlIHVuc2lnbmVkIGludC4KClNhdCBNYXkgMTMgMDA6MDk6NTkgMjAwMCAgRGVuaXMgQ2hlcnR5a292ICA8ZGVuaXNjQG92ZXJ0YS5ydT4KCgkqIGNvbmZpZy9hdnIvdC1hdnI6IEFkZGVkIGRlZmluaXRpb24gb2YgRkxPQVQgd2hpbGUgZ2VuZXJhdGVzCglmcC1iaXQuYwoKCSogY29uZmlnL2F2ci9hdnIubWQ6IGBORVhUX0lOU04gKGluc24pJyBzdWJzdGl0dXRlZCB0byBgaW5zbicgaW4KCXBlZXBob2xlcyBmb3IgdHN0K2p1bXAgPSBzYnJzL3NicmMgb3B0aW1pemF0aW9uLgoKRnJ5IE1heSAxMiAyMDowMzowMCBDRVNUIDIwMDAgIEphbiBIdWJpY2thICA8amhAc3VzZS5jej4KCgkqIGV4cHIuYyAoZW1pdF9wdXNoX2luc24pOiBEbyBub3QgYWRqdXN0IHN0YWNrIHBvaW50ZXIgd2hlbgoJcHJlYWxsb2NhdGluZy4KCkZyaSBNYXkgMTIgMTk6MDM6NTggMjAwMCAgUGhpbGlwcGUgRGUgTXV5dGVyICA8cGhkbUBtYWNxZWwuYmU+CgoJKiBnZ2Mtc2ltcGxlLmMgKG9mZnNldG9mKTogTWFjcm8gZmFsbGJhY2sgZGVmaW5pdGlvbiBtb3ZlZCBmcm9tIGhlcmUgLi4KCSogc3lzdGVtLmggKG9mZnNldG9mKTogLi4uIHRvIGhlcmUuCgoyMDAwLTA1LTEyICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEBjeWdudXMuY29tPgoKCSogTWFrZWZpbGUuaW4gKGZpbmFsLm8pOiBEZXBlbmQgb24gQkFTSUNfQkxPQ0tfSC4KCSogZmluYWwuYyAoZmluYWxfZW5kX2Z1bmN0aW9uKTogVXNlIGFwcF9kaXNhYmxlLiAgUmVhcnJhbmdlIG5vdGUKCWhhbmRsaW5nIGludG8gYSBzd2l0Y2guICBFbWl0IGRlbGV0ZWQgbGFiZWxzLgoJKG91dHB1dF9hc21fbGFiZWwpOiBHZW5lcmF0ZSBsYWJlbCBzdHJpbmdzIGZvciBkZWxldGVkIGxhYmVscy4KCSogZmxvdy5jICh0YWlsX3JlY3Vyc2lvbl9sYWJlbF9saXN0KTogTmV3LgoJKGZpbmRfYmFzaWNfYmxvY2tzXzEpOiBTZXQgbGFiZWxfdmFsdWVfbGlzdCBkaXJlY3RseS4gIENvbGxlY3QgbGlzdAoJb2YgdGFpbCByZWN1cnNpb24gbGFiZWxzIGZyb20gY2FsbF9wbGFjZWhvbGRlcnMuICBEb24ndCBhZGQgZGVsZXRlZAoJbGFiZWxzIHRvIHRoZSBsYWJlbCB2YWx1ZSBsaXN0LgoJKGNsZWFudXBfY2ZnKTogVXNlIGZyZWVfRVhQUl9MSVNUX2xpc3QuCgkoZmxvd19kZWxldGVfaW5zbl9jaGFpbik6IFR1cm4gbm9uLXJlbW92YWJsZSBsYWJlbHMgaW50byBub3Rlcy4KCShmbG93X2RlbGV0ZV9ibG9jayk6IERvbid0IGRpc2FibGUgZGVsZXRpbmcgdGhlIGJsb2NrIGJlY2F1c2Ugb2YKCWEgbm9uLXJlbW92YWJsZSBsYWJlbC4KCSh0YWlsX3JlY3Vyc2lvbl9sYWJlbF9wKTogTmV3LgoJKG1lcmdlX2Jsb2Nrc19tb3ZlX3ByZWRlY2Vzc29yX25vanVtcHMpOiBEb24ndCBkaXNhYmxlIHRoZSBtZXJnZQoJYmVjYXVzZSBvZiBhIGxhYmVsLgoJKG1lcmdlX2Jsb2Nrc19tb3ZlX3N1Y2Nlc3Nvcl9ub2p1bXBzKTogTGlrZXdpc2UuICBBbHNvIG1vdmUgYQoJanVtcCB0YWJsZS4KCShtZXJnZV9ibG9ja3MpOiBEaXNhYmxlIGEgbWVyZ2UgYmVjYXVzZSBvZiB0YWlsIHJlY3Vyc2lvbiBsYWJlbHMuCgkqIGlmY3Z0LmMgKG1lcmdlX2lmX2Jsb2NrKTogRG9uJ3QgZGlzYWJsZSBhIG1lcmdlIGJlY2F1c2Ugb2YgYSBsYWJlbC4KCVVzZSBhIG1vcmUgYWNjdXJhdGUgbWVhc3VyZSBvZiBub3QgbWVyZ2luZyB0aGUgam9pbiBibG9jay4KCShmaW5kX2lmX2Jsb2NrKTogRG9uJ3QgZGlzYWJsZSBjb252ZXJzaW9uIGJlY2F1c2Ugb2YgYSBsYWJlbC4KCShmaW5kX2lmX2Nhc2VfMSwgZmluZF9pZl9jYXNlXzIpOiBMaWtld2lzZS4KCSoganVtcC5jIChkdXBsaWNhdGVfbG9vcF9leGl0X3Rlc3QpOiBQcmVzZXJ2ZSB0aGUga2luZCBvZiBsaXN0CgllbGVtZW50IHdoZW4gY29weWluZy4KCShzcXVlZXplX25vdGVzKTogQWxzbyBsZWF2ZSBFSCBub3Rlcy4KCShtYXJrX2p1bXBfbGFiZWwpOiBJZ25vcmUgZGVsZXRlZCBsYWJlbHMuICBVc2UgYW4gSU5TTl9MSVNUIGZvcgoJUkVHX0xBQkVMIG5vdGVzLgoJKGRlbGV0ZV9pbnNuKTogUHJlc2VydmUgTEFCRUxfTkFNRSBpbiBOT1RFX1NPVVJDRV9GSUxFIHdoZW4KCWRlbGV0aW5nIGEgbGFiZWwuCgkqIHByaW50LXJ0bC5jIChwcmludF9ydHgpOiBQcmludCBOT1RFX1NPVVJDRV9GSUxFIGZvcgoJTk9URV9JTlNOX0RFTEVURURfTEFCRUwuICBQcmludCBgWyMgZGVsZXRlZF0nIGZvciBhIGxhYmVsX3JlZgoJcmVmZXJyaW5nIHRvIGEgZGVsZXRlZCBsYWJlbC4gIENvbnZlcnQgdGFpbCBoYW5kbGluZyB0byBhIHN3aXRjaC4KCSogcnRsLmRlZiAoQ09ERV9MQUJFTCk6IFJlYXJyYW5nZSBlbGVtZW50cyB0byBiZSBjb21wYXRpYmxlIHdpdGggTk9URQoJZm9yIE5PVEVfSU5TTl9ERUxFVEVEX0xBQkVMLgoJKE5PVEUpOiBGaXggY29tbWVudGFyeS4KCSogcnRsLmggKFJFR19MQUJFTCk6IFVwZGF0ZSBjb21tZW50YXJ5IHdydCBJTlNOX0xJU1QuCgkoUkVHX0NDX1NFVFRFUiwgUkVHX0NDX1VTRVIsIFJFR19MSUJDQUxMKTogTGlrZXdpc2UuCgkoQ09ERV9MQUJFTF9OVU1CRVIsIExBQkVMX05BTUUpOiBVcGRhdGUgaW5kZXguCgkoTEFCRUxfTlVTRVMsIExBQkVMX1JFRlMpOiBMaWtld2lzZS4KCSogdW5yb2xsLmMgKGNvcHlfbG9vcF9ib2R5KTogRG9uJ3QgY29weSBOT1RFX0lOU05fREVMRVRFRF9MQUJFTC4KCjIwMDAtMDUtMTIgIEJydWNlIEtvcmIgIDxia29yYkBnbnUub3JnPgoKCSogZml4aW5jL2ZpeGZpeGVzLmMoZm9ybWF0X3dyaXRlKTogYnVnbGV0ICYgcmVsYXhlZCBydWxlcwoJKiBmaXhpbmMvY2hlY2suZGlmZjogdXBkYXRlZAoJKiBmaXhpbmMvaW5jbGhhY2suZGVmOiBjb3JyZWN0ZWQgJiBhZGRlZCBzb21lIHRlc3RfdGV4dC1zCgkqIGZpeGluYy9nZW5maXhlczogcmVtb3ZlZCB1bm5lZWRlZCBvcHRpb25zIHRvIGF1dG9nZW4gaW52b2NhdGlvbgoJKiBmaXhpbmMvZml4aW5jbC50cGw6IFNwZWNpZmllZCB0aGUgb3V0cHV0IGZpbGUKCSogZml4aW5jL2ZpeGZpeGVzLmM6IHZpc3VhbCBhcHBlYXJhbmNlCgkqIGZpeGluYy9maXhpbmNsLng6IHJlZ2VuZXJhdGUKCjIwMDAtMDUtMTIgIFphY2sgV2VpbmJlcmcgPHphY2tAd29sZXJ5LmN1bWIub3JnPgoKCSogZml4aW5jL2ZpeGZpeGVzLmMgKElPX3VzZV9maXgsIElPX2RlZm5fZml4LCBDVFJMX3VzZV9maXgsCglDVFJMX2RlZm5fZml4KTogRGVsZXRlLgoJKGZpeF9jaGFyX21hY3JvX2RlZmluZXMsIGZpeF9jaGFyX21hY3JvX3VzZXMpOiBSZW5hbWUgdG8KCWNoYXJfbWFjcm9fZGVmX2ZpeCBhbmQgY2hhcl9tYWNyb191c2VfZml4LCByZXNwZWN0aXZlbHkuICBQdXQKCXRoZW0gaW50byB0aGUgRklYVVBfVEFCTEUuICBHZXQgdGhlIHN0cmluZyB0byBzZWFyY2ggZm9yIGZyb20KCWEgY19maXhfYXJnLgoKCShmb3JtYXRfd3JpdGUpOiBOZXcgZnVuY3Rpb24uCgkoZm9ybWF0X2ZpeCk6IFVzZSBpdC4KCgkoRklYX1BST0NfSEVBRCk6IENvbnN0aWZ5IHRleHQgcGFyYW1ldGVyLgoJKG1hY2hpbmVfbmFtZV9maXgpOiBDb25zdGlmeSBhbGwgY2hhciAqcy4KCSogZml4dGVzdHMuYyAoc2tpcF9xdW90ZSk6IFJlbW92ZSBkb3VibGUgc3RhdGljLgoKCSogaW5jbGhhY2suZGVmIChpb19kZWZfcXVvdGVzLCBpb191c2VfcXVvdGVzLCBjdHJsX2RlZl9xdW90ZXMsCgljdHJsX3VzZV9xdW90ZXMpOiBVcGRhdGUgZm9yIG5ldyBzY2hlbWUuCgkqIGZpeGluY2wueDogUmVnZW5lcmF0ZS4KCjIwMDAtMDUtMTIgIEFsZXhhbmRyZSBPbGl2YSAgPGFvbGl2YUBjeWdudXMuY29tPgoKCSogY29uZmlnL21uMTAzMDAvbW4xMDMwMC5oIChQUkVGRVJSRURfREVCVUdHSU5HX1RZUEUpOiBSZWRlZmluZSBhcwoJRFdBUkYyX0RFQlVHLgoJKERXQVJGMl9BU01fTElORV9ERUJVR19JTkZPKTogRGVmaW5lLgoJKEFTTV9PVVRQVVRfRFdBUkYyX0FERFJfQ09OU1QpOiBEZWZpbmUuCgoyMDAwLTA1LTExICBSb2JlcnQgTGlwZSA8cm9iZXJ0bGlwZUB1c2EubmV0PgoKCSogZml4aW5jL2luY2xoYWNrLmRlZiAoaHB1eDhfYm9ndXNfaW5saW5lcyk6IERlbGV0ZSBieXBhc3MgZm9yIFNDTy4KCSogZml4aW5jbC54OiBSZWdlbmVyYXRlLgoKMjAwMC0wNS0xMSAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAY3lnbnVzLmNvbT4KCgkqIGNhbGxzLmM6IFJldmVydCBib3RoIDA1LTA5IHBhdGNoZXMuCgoyMDAwLTA1LTExICBBbGV4YW5kcmUgT2xpdmEgIDxhb2xpdmFAY3lnbnVzLmNvbT4KCgkqIGNvbmZpZy9tbjEwMzAwL21uMTAzMDAuYyAocHJpbnRfb3BlcmFuZCk6IFByaW50IEZQIGNvbnN0YW50cyBpbgoJaGV4YWRlY2ltYWwuCgkqIGNvbmZpZy9tbjEwMzAwL21uMTAzMDAubWQgKG1vdnNmLCBtb3ZkZik6IFVzZSB0aGUgYEYnIGNvbnN0cmFpbnQKCWZvciBGUCB2YWx1ZXMuCgoJKiBta2xpYmdjYy5pbiAoRVEpOiBEZWZpbmUgaXQgdG8gYW4gZXF1YWwgc2lnbiBpbiB0aGUgTWFrZWZpbGUsCglhbmQgcmVwbGFjZSBhbnkgb2NjdXJyZW5jZXMgb2YgYD0nIGluIG11bHRpbGliIGRpcnMgd2l0aCBgJChFUSknLgoKMjAwMC0wNS0xMSAgSmFzb24gTWVycmlsbCAgPGphc29uQGNhc2V5LmN5Z251cy5jb20+CgoJKiBmaXhpbmMvZml4aW5jbC5jIChydW5fY29tcGlsZXMpOiBEb24ndCBjcmFzaCBvbiBudWxsIHB6X21hY2hpbmUuCgoyMDAwLTA1LTExICBaYWNrIFdlaW5iZXJnICA8emFja0B3b2xlcnkuY3VtYi5vcmc+CgoJKiBmaXhpbmMvZml4Zml4ZXMuYywgZml4aW5jL2ZpeHRlc3RzLmM6IFVwZGF0ZSBjb21tZW50YXJ5LgoKVGh1IE1heSAxMSAyMjoyODowNSAyMDAwICBEZW5pcyBDaGVydHlrb3YgIDxkZW5pc2NAb3ZlcnRhLnJ1PgoKCSogY29uZmlnL2F2ci9hdnItcHJvdG9zLmMgKGp1bXBfb3Zlcl9vbmVfaW5zbl9wKTogTmV3IGRlY2xhcmF0aW9uLgoJKiBjb25maWcvYXZyL2F2ci5jIChqdW1wX292ZXJfb25lX2luc25fcCk6IE5ldyBmdW5jdGlvbi4KCSogY29uZmlnL2F2ci9hdnIubWQ6IE5ldyBwZWVwaG9sZXMgYWRkZWQuIE91dHB1dCB0ZXN0IGFuZAoJY29uZGl0aW9uYWwganVtcCB0byAic2JyYyIgb3IgInNicnMiIGNvbW1hbmQuCgoyMDAwLTA1LTExICBNYXJrIEVsYnJlY2h0ICA8c25vd2JhbGwzQGJpZ2Zvb3QuY29tPgoKCSogY3BwbWFpbi5jIChtYWluKTogVXNlIElTX0RJUl9TRVBBUkFUT1IuCgoyMDAwLTA1LTExICBKYWt1YiBKZWxpbmVrICA8amFrdWJAcmVkaGF0LmNvbT4KCgkqIGV4Y2VwdC5jIChmaW5kX2V4Y2VwdGlvbl9oYW5kbGVyX2xhYmVsc18xKTogTmV3IGZ1bmN0aW9uLgoJKGZpbmRfZXhjZXB0aW9uX2hhbmRsZXJfbGFiZWxzKTogU3BsaXQgaW50byB0d28gZnVuY3Rpb25zLCBkaXZlCglpbnRvIENBTExfUExBQ0VIT0xERVJzIHdoZW4gbG9va2luZyBmb3IgZXhjZXB0aW9uIGhhbmRsZXIgbGFiZWxzLgoKMjAwMC0wNS0xMSBTdGFuIENveCA8c2NveEBjeWdudXMuY29tPgoKCSogcmVncmVuYW1lLmMgKHJlcGxhY2VfcmVnX2luX2Jsb2NrKTogSW1wcm92ZSBSRUdfREVBRCBoYW5kbGluZy4KCSogdGltZXZhci5kZWYgKFRWX1JFTkFNRV9SRUdJU1RFUlMpOiBNb3ZlIGJlZm9yZSBUVl9TQ0hFRDIuCgkqIHRvcGxldi5jIChyZXN0X29mX2NvbXBpbGF0aW9uKTogQ2FsbCByZWdyZW5hbWVfb3B0aW1pemUgYmVmb3JlIHNjaGVkMi4KCjIwMDAtMDUtMTEgIEJydWNlIEtvcmIgIDxia29yYkBnbnUub3JnPgoKCSogZml4aW5jL2ZpeGZpeGVzLmMgKGRvdWJsZV9zbGFzaF9maXgpOiAgb2Jzb2xldGUKCShlbHNlX2VuZGlmX2xhYmVsX2ZpeCk6IG9ic29sZXRlCgkoZm9ybWF0X2ZpeCk6ICBuZXcsIHVudXNlZCBhcyB5ZXQKCShtYWluKTogb2Jzb2xldGUKCSogZml4aW5jL2ZpeGxpYi5oOiBhZGRlZCBmaXggZGVzY3JpcHRpb24gc3RydWN0IGZvciB1c2UgYnkgZm9ybWF0X2ZpeAoJKiBmaXhpbmMvZml4aW5jbC5jOiByZW1vdmVkIHRoZSBzdHJ1Y3QgJiB0ZXN0IGZvciBTSUdJT1QgYmVmdXJlIHVzaW5nCgkqIGZpeGluYy9NYWtlZmlsZS5pbjogIGNvbXBpbGUgZml4Zml4ZXMuYyBhbmQgZml4dGVzdHMuYyBhcyBzZXBhcmF0ZQoJbW9kdWxlcy4gIFJlbW92ZWQgdGhlIHZlc3RpZ2VzIG9mIHRoZSBzY3JpcHQgdmVyc2lvbi4KCUFkZGVkIHN1cHBvcnQgZm9yICJtYWtlIGNoZWNrIi4KCSogZml4aW5jL2NoZWNrLmRpZmY6IGJhc2UgZGlmZiBmaWxlIChuZWVkcyB3b3JrISEpCgkqIGZpeGluYy9jaGVjay50cGw6IHF1aWV0IHRoZSBmaXh1cCBvdXRwdXQKCSogZml4aW5jL2ZpeHRlc3RzLmMgKG1haW4pOiBvYnNvbGV0ZQoJKiBmaXhpbmMvZml4aW5jbC5zaDogIGRvbid0IGJvdGhlciBjb3B5aW5nIGZpeGluY2wgdG8gLi4KCSogZml4aW5jL2ZpeGluY2wudHBsOiAgcHJvdmlkZSBmb3IgYXJndW1lbnRzIHRvIGNfZml4IHJvdXRpbmVzCgpUaHUgTWF5IDExIDExOjU3OjAyIE1FVCBEU1QgMjAwMCAgSmFuIEh1Ymlja2EgPGpoQHN1c2UuY3o+CgoJKiB0b3BsZXYuYyAocmVzdF9vZl9jb21waWxhdGlvbik6IFJlbW92ZSBkZWFkIGNvZGUgYWZ0ZXIKCWNvbWJpbmUuCgoyMDAwLTA1LTExICBaYWNrIFdlaW5iZXJnICA8emFja0B3b2xlcnkuY3VtYi5vcmc+CgoJKiBjcHBoYXNoLmMgKGNvbGxlY3RfZnVubGlrZV9leHBhbnNpb24pOiBNYWtlICIjIGlzIG5vdAoJZm9sbG93ZWQgYnkgYSBtYWNybyBhcmd1bWVudCBuYW1lIiBhIHBlZHdhcm4sIG5vdCBhbiBlcnJvci4KCVByZXNlcnZlIHRoZSAjIGluIHRoZSBvdXRwdXQuICBTdXBwcmVzcyB0aGUgd2FybmluZyBpZiBsYW5nX2FzbS4KClRodSBNYXkgMTEgMDE6MTk6MzEgMjAwMCAgSmVmZnJleSBBIExhdyAgKGxhd0BjeWdudXMuY29tKQoKCSogY29uZmlndXJlLmluIChocHBhKjY0Ki0qLWhwdXgxMSopOiBOZXcgdGFyZ2V0IGZvciBQQTY0IHN1cHBvcnQuCgkqIGNvbmZpZ3VyZTogUmVidWlsdC4KCjIwMDAtMDUtMTAgTGF1cnluYXMgQml2ZWluaXMgPGxhdXJhc0Bzb2Z0aG9tZS5uZXQ+CgoJKiBpMzg2L3htLWRqZ3BwLmggKFhSRUZfRklMRV9OQU1FKTogQWRkIG1pc2luZyBicmFjZS4KCjIwMDAtMDUtMTAgIEthenUgSGlyYXRhICA8a2F6dUBoeGkuY29tPgoKCSogY29tYmluZS5jICh0cnlfY29tYmluZSk6IEZpeCBhIHR5cG8uCgpXZWQgTWF5IDEwIDIxOjMxOjQ0IDIwMDAgIEppbSBXaWxzb24gIDx3aWxzb25AY3lnbnVzLmNvbT4KCgkqIGNvbmZpZy9pYTY0L2lhNjQubWQgKGluc3YpOiBBZGQgY29tbWVudC4KCjIwMDAtMDUtMTAgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgoJKiBNYWtlZmlsZS5pbiAobGliZ2NjLmEsIHN0bXAtbXVsdGlsaWIpOiBEZXBlbmQgb24gRlBCSVQgYW5kIERQQklULgoJKiBta2xpYmdjYy5pbjogUmV3cml0ZSB0byBub3QgdXNlIGZ1bmN0aW9ucy4gIERvbid0IHNob3J0Y3V0CglkZXBlbmRlbmNpZXMgb24gRlBCSVQgYW5kIERQQklULgoKMjAwMC0wNS0xMCAgTmljayBDbGlmdG9uICA8bmlja2NAcmVkaGF0LmNvbT4KCgkqIGZsb3cuYyAoZmluZF9hdXRvX2luYyk6IERvIG5vdCBiaWFzIFJFR19OX1JFRlMgYnkgbG9vcF9kZXB0aAoJd2hlbiBvcHRpbWlzaW5nIGZvciBzaXplLgoJKG1hcmtfdXNlZF9yZWdzOikgRGl0dG8uCgkodHJ5X3ByZV9pbmNyZW1lbnRfMSk6IERpdHRvLgoKMjAwMC0wNS0xMCAgWmFjayBXZWluYmVyZyAgPHphY2tAd29sZXJ5LmN1bWIub3JnPgoKCSogY3BwZXhwLmMgKGxleCk6IFVzZSAlLipzIHRvIHByaW50IG5vbi1OVUwtdGVybWluYXRlZCBzdHJpbmcuCglNYWtlIGVycm9yIG1lc3NhZ2UgZnJpZW5kbGllci4KCgkqIGNwcGhhc2guaCAoc3RydWN0IGhhc2hub2RlKTogVXNlIHN0cnVjdCBoYWNrIGZvciBuYW1lCgltZW1iZXIuCgkqIGNwcGhhc2guYyAoc3RydWN0IGhhc2hkdW1teSk6IE5ldy4KCShlcV9IQVNITk9ERSk6IFNlY29uZCBhcmd1bWVudCBpcyBhIGhhc2hkdW1teSwgbm90IGEgSEFTSE5PREUuCgkobWFrZV9IQVNITk9ERSk6IE5vIG5lZWQgdG8gc2V0IC0+bmFtZSBwb2ludGVyLiAgQ29ycmVjdAoJc2V0dGluZyBvZiBwLgoJKGNwcF9sb29rdXApOiBNYWtlICdkdW1teScgYSBzdHJ1Y3QgaGFzaGR1bW15LiAgVGlkeSB1cCBhIGJpdC4KCjIwMDAtMDUtMTAgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgoJKiBmbG93LmMgKGZpbmRfYmFzaWNfYmxvY2tzXzEpOiBSZW1vdmUgYW55IHNwYXJlIGJiX25vdGUKCWFmdGVyIGNvbXBsZXRpb24uCgoyMDAwLTA1LTEwICBCcnVjZSBLb3JiICA8YmtvcmJAZ251Lm9yZz4KCgkqIGZpeGluYy9nbnUtcmVnZXguYzogIHJlZ19zeW50YXhfdCByZV9zeW50YXhfb3B0aW9ucyBtdXN0IGJlIHN0YXRpYwoKMjAwMC0wNS0xMCAgRXJpYyBTY2h3ZWl0eiAgPHNjaHdlaXR6QG5vcnRlbG5ldHdvcmtzLmNvbT4KCgkqIGR3YXJmb3V0LmMgKGR3YXJmb3V0X2ZpbmlzaCk6IENhbGwgcmV0cnlfaW5jb21wbGV0ZV90eXBlcwoJYWZ0ZXIgd2UgZW50ZXIgLmRlYnVnLgoKMjAwMC0wNS0xMCAgSmFzb24gTWVycmlsbCAgPGphc29uQGNhc2V5LmN5Z251cy5jb20+CgoJKiBkd2FyZjJvdXQuYyAoZ2VuX3N1YnByb2dyYW1fZGllKTogRml4dXAgZGllX3BhcmVudCBmb3IgdGhlCglhYnN0cmFjdCBpbnN0YW5jZSBvZiBhIG5lc3RlZCBpbmxpbmUgZnVuY3Rpb24uCgoJKiBzdG9yLWxheW91dC5jIChmaW5pc2hfcmVjb3JkX2xheW91dCk6IGZpbmFsaXplX3R5cGVfc2l6ZQoJYmVmb3JlIGxheWluZyBvdXQgdGhlIHBlbmRpbmdfc3RhdGljcy4KCldlZCAxMCBNYXkgMDk6MzY6NDcgMjAwMCAgTmVpbCBCb290aCAgPE5laWxCQGVhcnRobGluZy5uZXQ+CgoJKiBjcHBsZXguYyAoc3BlbGxfdG9rZW4pOiBOZXcgZnVuY3Rpb24uCgkoc3BlbGxfc3RyaW5nLCBzcGVsbF9jb21tZW50LCBzcGVsbF9uYW1lKTogZm9sZCBpbnRvCglzcGVsbF90b2tlbi4KCShJLCBTKTogQWRkIG1hY3Jvcy4KCShFLCBIKTogUmVtb3ZlIG1hY3Jvcy4KCShzYXZlX2NvbW1lbnQpOiBTYXZlIGNvbW1lbnQgb3BlbmluZyBjaGFyYWN0ZXJzIHRvby4KCShfY3BwX2xleF9maWxlKTogVXBkYXRlIHRvIHVzZSBzcGVsbF90b2tlbi4gIFRpZHkgdXAgY29tbWVudAoJaGFuZGxpbmcuCgkqIGNwcGxpYi5oIChJLCBTKTogQWRkIG1hY3Jvcy4KCShFLCBIKTogUmVtb3ZlIG1hY3Jvcy4KCShUVFlQRV9UQUJMRSk6IFVwZGF0ZSBlbnRyaWVzIGZvciBuZXcgc3BlbGxlci4KCShTWU5UQVhfQVNTRVJUKTogUmVtb3ZlLgoKV2VkIDEwIE1heSAwOTowODozMCAyMDAwICBOZWlsIEJvb3RoICA8TmVpbEJAZWFydGhsaW5nLm5ldD4KCgkqIGNwcGxleC5jIChfY3BwX2xleF9saW5lKTogTWFpbnRhaW4gUFJFVl9XSElURVNQQUNFIGZsYWcKCXdoZW4gcmVtb3ZpbmcgZXNjYXBlZCBuZXdsaW5lcy4gIFJldmVyc2Ugc2Vuc2Ugb2YgdGVzdCBmb3IKCWVzY2FwZWQgbmV3bGluZS4KCjIwMDAtMDUtMDkgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgoJKiBmbG93LmMgKGZpbmRfYmFzaWNfYmxvY2tzXzEpOiBEbyBub3QgZGVsZXRlIHRoZSBmaXJzdAoJYmJfbm90ZSB3ZSBydW4gYWNyb3NzLgoJKGNyZWF0ZV9iYXNpY19ibG9jayk6IFVzZSByZW9yZGVyX2luc25zIHRvIG1vdmUgYW4gZXhpc3RpbmcKCWJiX25vdGUgdG8gdGhlIGNvcnJlY3QgcGxhY2UuCgoyMDAwLTA1LTA5ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEBjeWdudXMuY29tPgoKCSogY2FsbHMuYyAoZXhwYW5kX2NhbGwpOiBJbmNyZW1lbnQgY3VycmVudGx5X2V4cGFuZGluZ19jYWxsCgliZWZvcmUgY2FsbGluZyBvcHRpbWl6ZV90YWlsX3JlY3Vyc2lvbi4KClR1ZSBNYXkgIDkgMTg6NTQ6MTYgMjAwMCAgUmljaGFyZCBLZW5uZXIgIDxrZW5uZXJAdmxzaTEudWx0cmEubnl1LmVkdT4KCgkqIHJlbG9hZDEuYyAocmVsb2FkX2NvbWJpbmUpOiBGaXggZXJyb3JzIGluIGxhc3QgY2hhbmdlLgoKMjAwMC0wNS0wOSAgWmFjayBXZWluYmVyZyAgPHphY2tAd29sZXJ5LmN1bWIub3JnPgoKCSogZ2NjLmMgKHVzZWRfYXJnKTogU2tpcCBvdmVyIGEgc2VtaWNvbG9uIGF0IHRoZSBlbmQgb2YgdGhlCglzcGxpdC11cCBsb29wOyBkb24ndCBicmVhayBvdXQgb2YgaXQuCgoJKiBNYWtlZmlsZS5pbiAoV0FSTl9DRkxBR1MpOiBBZGQgLVd3cml0ZS1zdHJpbmdzLgoJKHRyZWUubyk6IERlcGVuZCBvbiBvdXRwdXQuaC4KCgkqIGMtZGVjbC5jIChwZW5kaW5nX2ludmFsaWRfeHJlZl9maWxlLAoJY3VycmVudF9mdW5jdGlvbl9wcm90b3R5cGVfZmlsZSk6IENvbnN0aWZ5LgoJKHB1c2hkZWNsKTogQ29uc3RpZnkgYSBsb2NhbCBjaGFyICouCgkoZGVmaW5lX2xhYmVsKTogQ29uc3RpZnkgZmlsZW5hbWUgcGFyYW1ldGVyLgoJKiBjLWxleC5jIChpbml0X3BhcnNlKTogQ29uc3RpZnkgcGFyYW1ldGVyIGFuZCByZXR1cm4gdmFsdWUuCgkqIGMtdHlwZWNrLmMgKGNfZXhwYW5kX2FzbV9vcGVyYW5kcyk6IENvbnN0aWZ5IGZpbGVuYW1lIHBhcmFtZXRlci4KCSogYy10cmVlLmg6IFVwZGF0ZSBwcm90b3R5cGVzLgoJKiBjLXBhcnNlLmluOiBDb25zdGlmeSBmaWxlbmFtZSBtZW1iZXIgb2YgJXVuaW9uLCBhbmQgaWZfc3RtdF9maWxlLgoJKiBjLXBhcnNlLnksIGMtcGFyc2UuYywgYy1wYXJzZS5oLCBvYmpjL29iamMtcGFyc2UueSwKCW9iamMvb2JqYy1wYXJzZS5jOiBSZWdlbmVyYXRlLgoKCSogZHdhcmZvdXQuYyAoZHdhcmZvdXRfaW5pdCk6IENvbnN0aWZ5IG1haW5faW5wdXRfZmlsZW5hbWUgcGFyYW1ldGVyLgoJKiBkd2FyZm91dC5oOiBVcGRhdGUgcHJvdG90eXBlcy4KCSogZXhwci5jIChleHBhbmRfZXhwcik6IENvbnN0aWZ5IGEgbG9jYWwgY2hhciAqLgoJKiBmbGFncy5oOiBDb25zdGlmeSBtYWluX2lucHV0X2ZpbGVuYW1lLgoJKiBmdW5jdGlvbi5jIChleHBhbmRfZnVuY3Rpb25fZW5kKTogQ29uc3RpZnkgZmlsZW5hbWUgcGFyYW1ldGVyLgoJKiBnZW5yZWNvZy5jIChtYWtlX2luc25fc2VxdWVuY2UpOiBVc2UgYSBjaGFyYWN0ZXIgYXJyYXkgZm9yCgljX3Rlc3RfcG9zLgoJKG1haW4pOiBSZW1vdmUgdW51c2VkIHZhcmlhYmxlcy4KCSogaW5wdXQuaDogQ29uc3RpZnkgaW5wdXRfZmlsZW5hbWUsIG1haW5faW5wdXRfZmlsZW5hbWUsIGFuZAoJZmlsZV9zdGFjay5uYW1lLiAgVXBkYXRlIHByb3RvdHlwZXMuCgkqIG91dHB1dC5oOiBEZWNsYXJlIGZpcnN0X2dsb2JhbF9vYmplY3RfbmFtZSBhbmQKCXdlYWtfZ2xvYmFsX29iamVjdF9uYW1lIGhlcmUsIGFzIGNvbnN0IGNoYXIgKi4KCSogc3RtdC5jIChleHBhbmRfYXNtX29wZXJhbmRzKTogQ29uc3RpZnkgZmlsZW5hbWUgcGFyYW1ldGVyLgoJKiB0b3BsZXYuYyAoY29tcGlsZV9maWxlLCBwdXNoX3NyY2xvYywgZGVidWdfc3RhcnRfc291cmNlX2ZpbGUpOgoJQ29uc3RpZnkgZmlsZW5hbWUgcGFyYW1ldGVyLgoJKGlucHV0X2ZpbGVuYW1lLCBtYWluX2lucHV0X2ZpbGVuYW1lKTogQ29uc3RpZnkuCgkqIHRvcGxldi5oOiBVcGRhdGUgcHJvdG90eXBlcy4KCSogdHJlZS5jOiBJbmNsdWRlIG91dHB1dC5oLiAgRG9uJ3QgZGVjbGFyZQoJZmlyc3RfZ2xvYmFsX29iamVjdF9uYW1lIG9yIHdlYWtfZ2xvYmFsX29iamVjdF9uYW1lLiAgQ2xlYW4gdXAgc3RyaW5nCgliYXNoaW5nIGluIGdldF9maWxlX2Z1bmN0aW9uX25hbWVfbG9uZy4KCSogdHJlZS5oIChzdHJ1Y3QgdHJlZV9kZWNsKTogQ29uc3RpZnkgZmlsZW5hbWUgbWVtYmVyLgoJKGlucHV0X2ZpbGVuYW1lKTogQ29uc3RpZnkuCglVcGRhdGUgcHJvdG90eXBlcy4KCSogdmFyYXNtLmMgKGZpcnN0X2dsb2JhbF9vYmplY3RfbmFtZSwgd2Vha19nbG9iYWxfb2JqZWN0X25hbWUpOgoJQ29uc3RpZnkuCgkoYXNzZW1ibGVfc3RhcnRfZnVuY3Rpb24sIGFzc2VtYmxlX3ZhcmlhYmxlKTogQ2xlYW4gdXAgc3RyaW5nIGJhc2hpbmcuCgoJKiBnY2MuYzogQ29uc3RpZnkgYWxsIHNwZWMtcmVsYXRlZCBzdHJpbmdzIGluaXRpYWxpemVkLAoJdHJhbnNpdGl2ZWx5LCBmcm9tIHN0cmluZyBjb25zdGFudHMuICBDb25zdGlmeSBhbGwgc3RyaW5ncwoJYW5kIHN0cmluZyB2YXJpYWJsZXMgcmVsYXRlZCB0byBtdWx0aWxpYnMuCgkoc2V0X3NwZWMsIHJlYWRfc3BlY3MpOiBDYXN0IGFyZ3VtZW50IHRvIGZyZWUgdG8gUFRSLgoJKHVzZWRfYXJnKTogRG8gbm90IG1vZGlmeSBtdWx0aWxpYl9tYXRjaGVzLiAgVXNlIHN0cm5jbXAgcGx1cwoJbGVuZ3RoIGNvbXBhcmlzb24gdG8gY29tcGFyZSBtdWx0aWxpYiBzd2l0Y2hlcy4KCSogZ2VubXVsdGlsaWI6IENvbnN0aWZ5IGV2ZXJ5dGhpbmcgZGVjbGFyZWQgaW4gbXVsdGlsaWIuaC4KClR1ZSBNYXkgIDkgMjI6Mjg6MDMgMjAwMCAgRGVuaXMgQ2hlcnR5a292ICA8ZGVuaXNjQG92ZXJ0YS5ydT4KCgkqIGZsb3cuYyAoZmxvd19kZWxldGVfaW5zbik6IFVzZSBJTlNOX0RFTEVURURfUCBmb3IgbWFya2luZyBpbnNuCglhcyBkZWxldGVkLgoKVHVlIE1heSAgOSAyMDo1Mjo0MyAyMDAwICBEZW5pcyBDaGVydHlrb3YgIDxkZW5pc2NAb3ZlcnRhLnJ1PgoKCSogY29uZmlnL2F2ci9hdnItcHJvdG9zLmggKGV4dHJhX2NvbnN0cmFpbnQpOiBjaGFuZ2UgYSB0eXBlIG9mCglzZWNvbmQgYXJndW1lbnQgZnJvbSBjaGFyIHRvIGludCB0byBhdm9pZCB3YXJuaW5ncy4KCShhc21fb3V0cHV0X2J5dGUpOiBMaWtld2lzZS4KCgkqIGNvbmZpZy9hdnIvYXZyLmMgKE1BWF9MRF9PRkZTRVQpIE5ldyBtYWNyby4KCShpbml0aWFsX2VsaW1pbmF0aW9uX29mZnNldCk6IEhhbmRsZSBlbGltaW5hdGlvbiBmcm9tCglGUkFNRV9QT0lOVEVSX1JFR05VTSB0byBTVEFDS19QT0lOVEVSX1JFR05VTS4KCShsZWdpdGltYXRlX2FkZHJlc3NfcCk6IFVzZSBNQVhfTERfT0ZGU0VULgoJKGxlZ2l0aW1pemVfYWRkcmVzcyk6IExpa2V3aXNlLgoJKG91dF9tb3ZxaV9yX21yKTogTGlrZXdpc2UuCgkob3V0X21vdmhpX3JfbXIpOiBMaWtld2lzZSwgdXNlIGBmYXRhbF9pbnNuJyBpbnN0ZWFkIG9mIGBmYXRhbCcuCgkob3V0X21vdnNpX3JfbXIpOiBVc2UgTUFYX0xEX09GRlNFVC4KCShvdXRfbW92c2lfbXJfcik6IExpa2V3aXNlLgoJKG91dF9tb3ZxaV9tcl9yKTogTGlrZXdpc2UuCgkob3V0X21vdmhpX21yX3IpOiBMaWtld2lzZS4KCShub3RpY2VfdXBkYXRlX2NjKTogQ29ycmVjdCBDQyBmb3IgdGhlIGFzaHJxaTMgd2l0aCB0aGUgc2hpZnQKCWNvdW50IGFzIENPTlNUX0lOVCAhPSA2LgoJKGFzaGxxaTNfb3V0KTogQ29kaW5nIHN0eWxlIG1vZGlmaWNhdGlvbnMuIFJ1biBgZmF0YWxfaW5zbicgaWYKCXNoaWZ0IGNvdW50IGlzIGEgQ09OU1RBTlRfUCwgYnV0IG5vdCBhIENPTlNUX0lOVC4KCShhc2hsaGkzX291dCk6IENvZGluZyBzdHlsZSBtb2RpZmljYXRpb25zLgoJKGFzaGxzaTNfb3V0KTogTGlrZXdpc2UuCgkoYXNocmhpM19vdXQpOiBMaWtld2lzZS4KCShhc2hyc2kzX291dCk6IExpa2V3aXNlLgoJKGxzaHJoaTNfb3V0KTogTGlrZXdpc2UuCgkobHNocnNpM19vdXQpOiBMaWtld2lzZS4KCShhc2hycWkzX291dCk6IEdlbmVyYXRlIHNoaWZ0IGZvciBhbnkga25vd24gY29uc3RhbnQgY291bnQgd2l0aG91dAoJc2NyYXRjaCByZWdpc3Rlci4gUnVuIGBmYXRhbF9pbnNuJyBpZiBzaGlmdCBjb3VudCBpcyBhIENPTlNUQU5UX1AsCglidXQgbm90IGEgQ09OU1RfSU5ULgoJKGxzaHJxaTNfb3V0KTogQ29kaW5nIHN0eWxlIG1vZGlmaWNhdGlvbnMuIFJ1biBgZmF0YWxfaW5zbicgaWYKCXNoaWZ0IGNvdW50IGlzIGEgQ09OU1RBTlRfUCwgYnV0IG5vdCBhIENPTlNUX0lOVC4KCShleHRyYV9jb25zdHJhaW50KTogY2hhbmdlIGEgdHlwZSBvZgoJc2Vjb25kIGFyZ3VtZW50IGZyb20gY2hhciB0byBpbnQgdG8gYXZvaWQgd2FybmluZ3MuCgkoYXNtX291dHB1dF9ieXRlKTogTGlrZXdpc2UuCgkoYXNtX2ZpbGVfZW5kKTogT3V0cHV0IHNpemUgZ2VuZXJhdGVkIGNvbW1hbmRzIGNvdW50IGFzIGEgaGV4CgludW1iZXIgdG9vLgoKCSogY29uZmlnL2F2ci9hdnIuaCAoUkVUVVJOX0FERFJfUlRYKTogTmV3IG1hY3JvLgoKCSogY29uZmlnL2F2ci9hdnIubWQgKGFkZGhpMyk6IEZyYWdtZW50IGNvbW1lbnRlZCBieSAmJjAgaXMKCXJlbW92ZWQuCgkoYXNobHFpMyk6IFZhbHVlcyBvZiAibGVuZ3RoIiBhdHRyaWJ1dGUgY2hhbmdlZC4gU2hpZnQgY291bnQKCXVzZXMgY29uc3RyYWludHMgJ24nIGluc3RlYWQgb2YgJ2knLgoJKGFzaHJxaTMpOiBMaWtld2lzZS4gVmFsdWVzIG9mICJjYyIgYXR0cmlidXRlIGNoYW5nZWQuIEdlbmVyYXRlCglzaGlmdHMgd2l0aG91dCBjbG9iYmVyIHJlZ2lzdGVyLgoJKGxzaHJxaTMpOiBTaGlmdCBjb3VudCB1c2VzIGNvbnN0cmFpbnRzICduJyBpbnN0ZWFkIG9mICdpJy4KCShjYWxsX2luc24pOiBDb3JyZWN0IHRlc3QgZm9yIHdoaWNoX2FsdGVybmF0aXZlID09IDEgKHdhcyAwKS4KCShjYWxsX3ZhbHVlX2luc24pOiBMaWtld2lzZS4KCgkqIGNvbmZpZy9hdnIvdC1hdnI6IFJlbW92ZSBkZWZpbml0aW9uIG9mIEZMT0FUIHdoaWxlIGdlbmVyYXRlcwoJZnAtYml0LmMKCjIwMDAtMDUtMDkgIEJydWNlIEtvcmIgIDxia29yYkBnbnUub3JnPgoKCSogZml4aW5jL2NoZWNrLnRwbDogIFRlbXBsYXRlIGZvciBjaGVja2luZyBmaXhlcwoJKiBmaXhpbmMvaW5jbGhhY2suZGVmOiAgQWRkZWQgJ3Rlc3RfdGV4dCcgZm9yIG1hbnkgZml4ZXMKCWRpc2FibGUgaHB1eDhfYm9ndXNfaW5saW5lcyBvbiBTQ08KCSogZml4aW5jL2ZpeGluYy5zY286ICBPaCwgeWVzLCB3ZSBkb24ndCBuZWVkIHRoaXMgYW55IG1vcmUuCgpUdWUgTWF5ICA5IDE2OjMwOjI3IE1FVCBEU1QgMjAwMCAgSmFuIEh1Ymlja2EgIDxqaEBzdXNlLmN6PgoKCSogY2FsbHMuYyAoZXhwYW5kX2NhbGwpOiBSZW9yZ2FuaXplIHNvbWV3aGF0IGluIG9yZGVyCgl0byBhdm9pZCB1bm5lY2VzYXJ5IHJlY2FsY3VsYXRpb24gaW5zaWRlIGxvb3AgYW5kIG1ha2UKCXRhaWwgY2FsbCBmYWlsdXJlIGNvZGUgY2xlYW5lci4KClR1ZSBNYXkgIDkgMDY6MzA6MjAgMjAwMCAgUmljaGFyZCBLZW5uZXIgIDxrZW5uZXJAdmxzaTEudWx0cmEubnl1LmVkdT4KCgkqIGFsaWFzLmMgKG5vbmxvY2FsX3JlZmVyZW5jZV9wKTogTWlub3IgcmVmb3JtYXR0aW5nLgoJKiByZWxvYWQuYyAoZmluZF9lcXVpdl9yZWcpOiBTaW1wbGlmeSBsb2dpYyBmb3IKCUNBTExfSU5TTl9GVU5DVElPTl9VU0FHRSBzaW5jZSBjYW4ndCBoYXZlIFNVQlJFRyBvciBwc2V1ZG9zIGFuZAoJc29tZSBzb21lIHJlZm9ybWF0dGluZy4KCSogcmVsb2FkMS5jIChyZWxvYWRfY29tYmluZSk6IERvbid0IGFzc3VtZSBldmVyeXRoaW5nIGluCglDQUxMX0lOU05fRlVOQ1RJT05fVVNBR0UgaXMgYSBSRUcgYW5kIGNsZWFuIHVwIGNvZGUgYSBiaXQuCgoyMDAwLTA1LTA4ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEBjeWdudXMuY29tPgoKCSogZmluYWwuYyAoY3VycmVudF9pbnNuX3ByZWRpY2F0ZSk6IE5ldy4KCShmaW5hbF9zY2FuX2luc24pOiBTZXQgaXQuCgkqIG91dHB1dC5oIChjdXJyZW50X2luc25fcHJlZGljYXRlKTogRGVjbGFyZS4KCgkqIGlmY3Z0LmMgKGNvbmRfZXhlY19wcm9jZXNzX2luc25zKTogTmV3IGFyZ3VtZW50IHByb2JfdmFsLgoJQXR0YWNoIGl0IHRvIGNhbGwgaW5zbnMuCgkoY29uZF9leGVjX3Byb2Nlc3NfaWZfYmxvY2spOiBUcmFjayBwcm9iYWJpbGl0eSBmb3IgdHJ1ZSBhbmQKCWZhbHNlIGJyYW5jaGVzLgoJKGRlYWRfb3JfcHJlZGljYWJsZSk6IExpa2V3aXNlLgoKCSogcHJlZGljdC5jIChQUk9CX05FVkVSLCBQUk9CX1ZFUllfVU5MSUtFTFkpOiBOZXcuCgkoUFJPQl9VTkxJS0VMWSwgUFJPQl9FVkVOLCBQUk9CX0xJS0VMWSk6IE5ldy4KCShQUk9CX1ZFUllfTElLRUxZLCBQUk9CX0FMV0FZUyk6IE5ldy4KCShlc3RpbWF0ZV9wcm9iYWJpbGl0eSwgZXhwZWN0ZWRfdmFsdWVfdG9fYnJfcHJvYik6IFVzZSB0aGVtLgoKCSogY29uZmlnL2lhNjQvaWE2NC1wcm90b3MuaCAoaWE2NF9leHBhbmRfcHJlZGljdGlvbik6IERlY2xhcmUuCgkqIGNvbmZpZy9pYTY0L2lhNjQuYyAoaWE2NF9wcmludF9vcGVyYW5kX2FkZHJlc3MpOiBIYW5kbGUgJ2onLgoJKGlhNjRfZXhwYW5kX3ByZWRpY3Rpb24pOiBOZXcuCgkoZW1pdF9pbnNuX2dyb3VwX2JhcnJpZXJzKTogRG9uJ3QgbG9vayBhdCBub3Rlcy4gIEVtaXQgYmFycmllcnMKCWFzIG5lZWRlZCBhZnRlciBjYWxscy4KCShpYTY0X2VwaWxvZ3VlX3VzZXMpOiBNYXJrIGIwIHVzZWQuCgkqIGNvbmZpZy9pYTY0L2lhNjQubWQgKGJlcV90cnVlLCBiZXFfZmFsc2UpOiBSZW1vdmUuCgkoYm5lX3RydWUsIGJuZV9mYWxzZSk6IFJlbW92ZS4KCShlcV9yZXR1cm4sIGVxX25vdF9yZXR1cm4sIG5lX3JldHVybiwgbmVfbm90X3JldHVybik6IFJlbW92ZS4KCShicl90cnVlLCBicl9mYWxzZSk6IE5ldy4gIFVzZSBwcmVkaWNhdGVfb3BlcmF0b3IgYW5kCglpYTY0X2V4cGFuZF9wcmVkaWN0aW9uLgoJKHJldHVybl90cnVlLCByZXR1cm5fZmFsc2UpOiBMaWtld2lzZS4KCShjYWxsX2ludGVybmFsKTogVXNlIGlhNjRfZXhwYW5kX3ByZWRpY3Rpb24uICBEb24ndCBlbWl0IHN0b3AgYml0LgoJKGNhbGxfaW50ZXJuYWwxLCBjYWxsX3ZhbHVlX2ludGVybmFsKTogTGlrZXdpc2UuCgkoY2FsbF92YWx1ZV9pbnRlcm5hbDEsIGNhbGxfbXVsdGlwbGVfdmFsdWVzX2ludGVybmFsMSk6IExpa2V3aXNlLgoKCSogY29uZmlnL2lhNjQvaWE2NC5jIChpYTY0X2RpcmVjdF9yZXR1cm4pOiBSZXF1aXJlIGZyYW1lIHNpemUgemVyby4KCgkqIGNvbmZpZy9pYTY0L2lhNjQubWQgKGV4dGVuZHNmZGYyKTogU3BsaXQgb25seSBhZnRlciByZWxvYWQuCgoyMDAwLTA1LTA4ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEBjeWdudXMuY29tPgoKCSogcnRsYW5hbC5jIChtYXlfdHJhcF9wKTogQ29uc2lkZXIgb2xkLXN0eWxlIGFuZCB2b2xhdGlsZQoJYXNtcyB0byB0cmFwLgoKTW9uIE1heSAgOCAxNzoxNjo0OCAyMDAwICBKaW0gV2lsc29uICA8d2lsc29uQGN5Z251cy5jb20+CgoJKiBjb25maWcvaWE2NC9pYTY0LmggKFJFVFVSTl9BRERSX1JUWCk6IFVzZSBDT1VOVCBub3QgY291bnQuCgoyMDAwLTA1LTA4ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEBjeWdudXMuY29tPgoKCSogY29uZmlnL2lhNjQvaWE2NC5oIChwcmVkaWNhdGVfb3BlcmF0b3IpOiBEZWNsYXJlLgoKCSogY29uZmlnL2lhNjQvaWE2NC5tZCAoZXh0ZW5kc2ZkZjIpOiBTcGxpdCB0aGUgbm9wIGNhc2Ugb3V0CglvZiBleGlzdGVuY2UuCgoJKiBnZW5zdXBwb3J0LmMgKHByb2Nlc3NfcnR4KTogQ29weSBhbmQgcG9zdC1wcm9jZXNzIGVhY2ggbWVtYmVyCglvZiB0aGUgZGVmaW5lX2luc24gcnR2ZWMgaW5kaXZpZHVhbGx5LgoKTW9uICA4IE1heSAyMjoxNzozNSAyMDAwICBOZWlsIEJvb3RoICA8TmVpbEJAZWFydGhsaW5nLm5ldD4KCgkqIGNwcGxleC5jIChzcGVsbF90b2tlbik6IE5ldyBmdW5jdGlvbi4KCShUT0tFTl9MRU4pOiBBZGQgMSBmb3Igd2hpdGVzcGFjZS4KCShfY3BwX2xleF9maWxlKTogVXBkYXRlIHRvIHVzZSBzcGVsbF90b2tlbi4KCSogY3BwbGliLmggKEUpOiBSZW1vdmUuCgkoVFRZUEVfVEFCTEUpOiBVcGRhdGUgQ1BQX1ZTUEFDRSBlbnRyeS4KCjIwMDAtMDUtMDggIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgoJKiBmbG93LmMgKGluaXRfcHJvcGFnYXRlX2Jsb2NrX2luZm8pOiBXYXRjaCBvdXQgZm9yIGNvbmRpdGlvbmFsCglicmFuY2ggdG8gbmV4dCBpbnN0cnVjdGlvbiwgYW5kIHRodXMgb25lIG91dGdvaW5nIGVkZ2UuCgoJKiBjb25maWcvaWE2NC9pYTY0LmMgKGlhNjRfZW5jb2RlX3NlY3Rpb25faW5mbyk6IEV4aXQgZWFybHkKCWZvciBnbG9iYWwgcmVnaXN0ZXIgdmFyaWFibGVzOyBkb24ndCBzcGVjaWFsIGNhc2UgX19bQ0RdVE9SX0xJU1RfXzsKCW1pbmQgZ2djX3AgZm9yIHN0cmluZyBhbGxvY2F0aW9uLgoKMjAwMC0wNS0wOCAgTmljayBDbGlmdG9uICA8bmlja2NAY3lnbnVzLmNvbT4KCgkqIGNvbmZpZy9pMzg2L2kzODYuaCAoRUxJTUlOQUJMRV9SRUdTKTogRml4IGNvbW1lbnQuCgoyMDAwLTA1LTA4ICBCcnVjZSBLb3JiICA8YmtvcmJAZ251Lm9yZz4KCgkqIGZpeGluYy9ta2ZpeGluYy5zaDogIGZpeGluYy5zY28gaXMgbm8gbG9uZ2VyIHVzZWQKCWk/ODYtKi1tc2Rvc2RqZ3BwKiBubyBsb25nZXIgdXNlcyBmaXhpbmNsdWRlcwoJKiBmaXhpbmMvZ2VuZml4ZXM6ICBpbmNsaGFjay5zaCBhbmQgZml4aW5jbC5zaCBhcmUgbm8gbG9uZ2VyIGdlbmVyYXRlZAoJKiBmaXhpbmMvaW5jbGhhY2suc2g6ICBkZWxldGVkCgkqIGZpeGluYy9oYWNrc2hlbGwudHBsOiAgZGVsZXRlZAoJKiBmaXhpbmMvaW5jbGhhY2sudHBsOiAgZGVsZXRlZAoJKiBmaXhpbmMvTWFrZWZpbGUuaW46ICBSZW1vdmUgZGVwZW5kZW5jaWVzIG9uIGFib3ZlCgkqIGZpeGluYy9maXhpbmNsLnNoOiAgIkRPIE5PVCBFRElUIiB0ZXh0IG1vZGlmaWVkCgoyMDAwLTA1LTA4ICBBbmRyZWFzIEphZWdlciAgPGFqQHN1c2UuZGU+CgoJKiBjb25maWcvbWlwcy9saW51eC5oOiBSZW1vdmUgdW5kZWZpbmVzIHdoaWNoIGRpc2FibGVkIC5jdG9yLy5kdG9yCglzdXBwb3J0LgoKMjAwMC0wNS0wNyAgWmFjayBXZWluYmVyZyAgPHphY2tAd29sZXJ5LmN1bWIub3JnPgoKCSogTWFrZWZpbGUuaW4gKExPT1NFX0NGTEFHUyk6IEFkZCAvZyBtb2RpZmllcnMgdG8gYm90aCBzZWQKCXN1YnN0aXR1dGlvbnMuCgpTdW4gIDcgTWF5IDA4OjQzOjUzIDIwMDAgIE5laWwgQm9vdGggIDxOZWlsQkBlYXJ0aGxpbmcubmV0PgoKCSogY3BwbGV4LmM6IE1vdmUgbmV3IGxleGVyIGRlZmluaXRpb25zIGFuZCBwcm90b3R5cGVzCgl0byB0b3AuICBDb25kaXRpb25hbCBpbmNsdWRlIHRoZXNlIGFuZCB0aGUgY29kZSBpZgoJTkVXX0xFWEVSIGlzIGRlZmluZWQuICBSZW5hbWUgZnVuY3Rpb25zIHdob3NlIG5hbWVzCgljbGFzaCBpZiB0aGlzIGNvZGUgaW5jbHVkZWQuCgpTdW4gTWF5ICA3IDAwOjU0OjU3IEVEVCAyMDAwICBKb2huIFdlaGxlICAoam9obkBmZWl0aC5jb20pCgoJKiBydGwuZGVmIChDT05EX0VYRUMpOiBDbGFyaWZ5LgoKCSogaTM4Ni5tZCAoZXh0ZW5kc2lkaTIpOiBDbG9iYmVyIChyZWc6Q0MgMTcpIGluIHRoZQoJc2FtZSBmYXNoaW9uIGFzIHplcm9fZXh0ZW5kc2lkaTIuCgoyMDAwLTA1LTA2ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEBjeWdudXMuY29tPgoKCSogY29uZmlnL2lhNjQvaWE2NC5jIChwcmVkaWNhdGVfb3BlcmF0b3IpOiBOZXcuCgkoaWE2NF9wcmludF9vcGVyYW5kKTogSGFuZGxlICdKJy4KCShydHhfbmVlZHNfYmFycmllcik6IEhhbmRsZSBDT05EX0VYRUMuCgkqIGNvbmZpZy9pYTY0L2lhNjQuaCAoQlJBTkNIX0NPU1QpOiBEZWZpbmUuCgkoUFJFRElDQVRFX0NPREVTKTogVXBkYXRlLgoJKiBjb25maWcvaWE2NC9pYTY0Lm1kOiBEb2N1bWVudCB1c2VkIHVuc3BlYyB2YWx1ZXMuCgkoYXR0ciBwcmVkaWNhYmxlKTogTmV3LgoJKG1vdnhmLCBtb3Z4Zl9pbnRlcm5hbCk6IE5ldy4KCShleHRlbmRzZmRmMik6IERvbid0IGNvbW1lbnQgb3V0IG5vcC4KCShmbG9hdGRpZGYyKTogUmVtb3ZlLgoJKHRydW5jeGZzZjIsIHRydW5jeGZkZjIsIGZsb2F0ZGl4ZjIpOiBOZXcuCgkoYWJzc2kyLCBhYnNkaTIpOiBQdXQgdGhlIG5lZyBpbiB0aGUgInRydWUiIHNsb3QuCgkoY29uZGl0aW9uYWwgYnJhbmNoIGluc3RydWN0aW9ucyk6IE1hcmsgbm90IHByZWRpY2FibGUuCgkoY21vdipfaW50ZXJuYWwpOiBVc2UgcHJlZGljYXRlX29wZXJhdG9yLiAgU3BsaXQgdG8gY29uZF9leGVjLgoJKGFicypfaW50ZXJuYWwpOiBMaWtld2lzZS4KCShhbGxvYywgc2V0X2JzcCk6IE1hcmsgbm90IHByZWRpY2FibGUuCgkoYmFycmllciwgaW5zbl9ncm91cF9iYXJyaWVyLCBmbHVzaF9jYWNoZSk6IExpa2V3aXNlLgoJKGRlZmluZV9jb25kX2V4ZWMpOiBOZXcuCgoyMDAwLTA1LTA2ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEBjeWdudXMuY29tPgoKCSogYy1kZWNsLmM6IEluY2x1ZGUgInRtX3AuaCIuCgoJKiBjb25maWcvaWE2NC9pYTY0LXByb3Rvcy5oOiBSZWFycmFuZ2UgZGVjbHMgdG8gcmVkdWNlIGlmZGVmIG1hZG5lc3MuCgkoZmV0Y2hhZGRfb3BlcmFuZCwgaWE2NF9leHBhbmRfZmV0Y2hfYW5kX29wKTogRGVjbGFyZS4KCShpYTY0X2V4cGFuZF9vcF9hbmRfZmV0Y2gpOiBEZWNsYXJlLgoJKiBjb25maWcvaWE2NC9pYTY0LmM6IEluY2x1ZGUgInRvcGxldi5oIi4gIEtpbGwgdHJhaWxpbmcgd2hpdGVzcGFjZS4KCShzZXRqbXBfb3BlcmFuZCk6IENvbnN0aWZ5IHZhcmlhYmxlcyBmb3IgWFNUUi4KCShpYTY0X2VuY29kZV9zZWN0aW9uX2luZm8pOiBMaWtld2lzZS4KCShpYTY0X3ByaW50X29wZXJhbmQpOiBVc2UgJWQgZm9yIGV4YWN0X2xvZzI7IGNhc3QgMzItYml0IHByaW50ZWQKCXZhbHVlcyB0byBpbnQuCgkoaWE2NF9hc21fb3V0cHV0X2V4dGVybmFsKTogQ29uc3RpZnkgbmFtZS4KCShwcm9jZXNzX3NldCk6IFVzZSBIT1NUX1dJREVfSU5UX1BSSU5UX0RFQyBmb3IgZnJhbWUgc2l6ZS4KCShwcm9jZXNzX2Zvcl91bndpbmRfZGlyZWN0aXZlKTogUHJvdmlkZSBzd2l0Y2ggZGVmYXVsdC4KCShpYTY0X2V4cGFuZF9jb21wYXJlX2FuZF9zd2FwKTogUmVtb3ZlIHVudXNlZCB2YXJpYWJsZXMuCgkoaWE2NF9leHBhbmRfYnVpbHRpbik6IExpa2V3aXNlLgoJKiBjb25maWcvaWE2NC9pYTY0LmggKEFTTV9PVVRQVVRfQllURSk6IE1hc2sgYW5kIGNhc3QgdmFsdWUgdG8gaW50Cglmb3IgcHJpbnRpbmcuCgoJKiBjb25maWcvaWE2NC9pYTY0LmMgKHNkYXRhX3N5bWJvbGljX29wZXJhbmQpOiBNYXJrIHVudXNlZCBhcmdzLgoJKHN5bWJvbGljX29wZXJhbmQsIGZ1bmN0aW9uX29wZXJhbmQsIHNldGptcF9vcGVyYW5kKTogTGlrZXdpc2UuCgkoc2hpZnRfY291bnRfb3BlcmFuZCwgc2hpZnRfMzJiaXRfY291bnRfb3BlcmFuZCk6IExpa2V3aXNlLgoJKHNobGFkZF9vcGVyYW5kLCBmZXRjaGFkZF9vcGVyYW5kLCBpYTY0X2Z1bmN0aW9uX3Byb2xvZ3VlKTogTGlrZXdpc2UuCgkoaWE2NF9mdW5jdGlvbl9lcGlsb2d1ZSwgaWE2NF9zZXR1cF9pbmNvbWluZ192YXJhcmdzKTogTGlrZXdpc2UuCgkoaWE2NF9mdW5jdGlvbl9hcmdfcGFydGlhbF9ucmVncywgaWE2NF9mdW5jdGlvbl92YWx1ZSk6IExpa2V3aXNlLgoJKGlhNjRfcHJpbnRfb3BlcmFuZF9hZGRyZXNzLCBpYTY0X3NlY29uZGFyeV9yZWxvYWRfY2xhc3MpOiBMaWtld2lzZS4KCShpYTY0X2V4cGFuZF9idWlsdGluKTogTGlrZXdpc2UuCgkoY2FsbF9tdWx0aXBsZV92YWx1ZXNfb3BlcmF0aW9uKTogTWFrZSBkZXN0X3JlZ25vIHVuc2lnbmVkLgoKMjAwMC0wNS0wNiAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAY3lnbnVzLmNvbT4KCgkqIHJ0bC5kZWYgKERFRklORV9DT05EX0VYRUMpOiBOZXcuCgkqIG1kLnRleGk6IERvY3VtZW50IGl0LgoKCSogZ2Vuc3VwcG9ydC5jIChpbnB1dF9maWxlKTogUmVtb3ZlLgoJKHN0cnVjdCBxdWV1ZV9lbGVtKTogQWRkIGxpbmVuby4KCShydHhfcmVhZHlfcXVldWUpOiBSZW1vdmUuCgkoZXJyb3JzKTogTmV3LgoJKHByZWRpY2FibGVfZGVmYXVsdCk6IE5ldy4KCShwcmVkaWNhYmxlX3RydWUsIHByZWRpY2FibGVfZmFsc2UpOiBOZXcuCgkoZGVmaW5lX2F0dHJfcXVldWUsIGRlZmluZV9hdHRyX3RhaWwpOiBOZXcuCgkoZGVmaW5lX2luc25fcXVldWUsIGRlZmluZV9pbnNuX3RhaWwpOiBOZXcuCgkoZGVmaW5lX2NvbmRfZXhlY19xdWV1ZSwgZGVmaW5lX2NvbmRfZXhlY190YWlsKTogTmV3LgoJKG90aGVyX3F1ZXVlLCBvdGhlcl90YWlsKTogTmV3LgoJKHF1ZXVlX3BhdHRlcm4pOiBOZXcuCgkocHJvY2Vzc19ydHgpOiBBZGQgcGF0dGVybnMgdG8gdGhlIGFwcHJvcHJpYXRlIHF1ZXVlcy4KCShpc19wcmVkaWNhYmxlLCBpZGVudGlmeV9wcmVkaWNhYmxlX2F0dHJpYnV0ZSk6IE5ldy4KCShuX2FsdGVybmF0aXZlcywgY29sbGVjdF9pbnNuX2RhdGEpOiBOZXcuCgkoYWx0ZXJfcHJlZGljYXRlX2Zvcl9pbnNuLCBhbHRlcl90ZXN0X2Zvcl9pbnNuKTogTmV3LgoJKHNoaWZ0X291dHB1dF90ZW1wbGF0ZSwgYWx0ZXJfb3V0cHV0X2Zvcl9pbnNuKTogTmV3LgoJKHByb2Nlc3Nfb25lX2NvbmRfZXhlYywgcHJvY2Vzc19kZWZpbmVfY29uZF9leGVjKTogTmV3LgoJKGluaXRfbWRfcmVhZGVyKTogUmVhZCB0aGUgZW50aXJlIGZpbGUuICBQcm9jZXNzIGRlZmluZV9jb25kX2V4ZWMuCgkocmVhZF9tZF9ydHgpOiBSZXR1cm4gZWxlbWVudHMgZnJvbSB0aGUgcXVldWVzLgoKMjAwMC0wNS0wNiAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAY3lnbnVzLmNvbT4KCgkqIGZsb3cuYyAobWFya19zZXRfMSk6IERvbid0IHVwZGF0ZSBjb25kaXRpb25hbCBsaWZlIGluZm8KCWlmIHRoZSByZWdpc3RlciBpcyBub3RfZGVhZC4KCjIwMDAtMDUtMDYgIFphY2sgV2VpbmJlcmcgIDx6YWNrQHdvbGVyeS5jdW1iLm9yZz4KCgkqIE1ha2VmaWxlLmluIChTVEFHRVNUVUZGKTogQWRkIGdlbnJ0bC5jIGFuZCBnZW5ydGwuaC4KCShtb3N0bHljbGVhbik6IEFsc28gZGVsZXRlIGZpeGluY2wsIGZpeGluYy5zaCwgYW5kCglzcGVjcy5yZWFkeSwgYW5kIG1ha2UgY2xlYW4gaW4gdGhlIGZpeGluYyBzdWJkaXIuCgoyMDAwLTA1LTA2ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEBjeWdudXMuY29tPgoKCSogTWFrZWZpbGUuaW4gKGdlbnN1cHBvcnQubyk6IENvbXBpbGUgZm9yIHRoZSBob3N0LgoJKGhvc3QtcHJlZml4IGdlbnN1dXBydC5vKTogUmVtb3ZlLgoJKGdlbmZsYWdzLm8pOiBEZXBlbmQgb24gZ2Vuc3VwcG9ydC5oIGFuZCBPQlNUQUNLX0guCgkoZ2VuYXR0cnRhYi5vKTogTGlrZXdpc2UuCgkoZ2VuY29kZXMubyk6IERlcGVuZCBvbiBnZW5zdXBwb3J0LmguCgkoZ2VuZW1pdC5vLCBnZW5vcGluaXQubywgZ2VucmVjb2cubywgZ2VuZXh0cmFjdC5vKTogTGlrZXdpc2UuCgkoZ2VucGVlcC5vLCBnZW5hdHRyLm8sIGdlbm91dHB1dC5vKTogTGlrZXdpc2UuCgoJKiBnZW5zdXBwb3J0LmMgKG9ic3RhY2ssIHJ0bF9vYnN0YWNrKTogTmV3LgoJKGluaXRfbWRfcmVhZGVyKTogSW5pdGlhbGl6ZSBydGxfb2JzdGFjay4KCSogZ2Vuc3VwcG9ydC5oIChydGxfb2JzdGFjayk6IERlY2xhcmUuCgkobWVzc2FnZV93aXRoX2xpbmUpOiBEZWNsYXJlLgoKCSogZ2VuYXR0ci5jOiBSZW1vdmUgYWxsIHRyYWNlcyBvZiBvYnN0YWNrIG1hbmlwdWxhdGlvbi4KCSogZ2VuY29kZXMuYywgZ2VuY29uZmlnLmMsIGdlbmVtaXQuYywgZ2VuZXh0cmFjdC5jOiBMaWtld2lzZS4KCSogZ2Vub3Bpbml0LmMsIGdlbm91dHB1dC5jLCBnZW5wZWVwLmMsIGdlbnJlY29nLmM6IExpa2V3aXNlLgoKCSogZ2VuYXR0cnRhYi5jIChvYnN0YWNrLCBydGxfb2JzdGFjayk6IFJlbW92ZS4KCShtYWluKTogRG9uJ3QgaW5pdCBydGxfb2JzdGFjay4KCSogZ2VuZmxhZ3MuYzogTGlrZXdpc2UuCgoJKiBnZW5yZWNvZy5jIChtZXNzYWdlX3dpdGhfbGluZSk6IE1vdmUgLi4uCgkqIGdlbnN1cHBvcnQuYzogLi4uIGhlcmUuCgoyMDAwLTA1LTA2ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEBjeWdudXMuY29tPgoKCSogYy10eXBlY2suYyAoYnVpbGRfY19jYXN0KTogUmVtb3ZlIGRlYWQgY29kZS4KCjIwMDAtMDUtMDYgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgoJKiBmbG93LmMgKHNwbGl0X2VkZ2UpOiBEb24ndCBhbGxvY2F0ZSBnbG9iYWxfbGl2ZV9hdF9zdGFydCBmb3IKCXRoZSBuZXcgYmxvY2sgdW5sZXNzIHRoZSBvbGQgYmxvY2tzIGhhZCB0aGVtIGFzIHdlbGwuCgoJKiBmbG93LmMgKG1hcmtfc2V0XzEpOiBSZXNwZWN0IG5vdF9kZWFkIHdoZW4gdXBkYXRpbmcgcmVnX2xpdmUuCgoJKiBpZmN2dC5jIChub2NlX3Byb2Nlc3NfaWZfYmxvY2spOiBEb24ndCB1c2UgYW4gaW5zbl9iIGZyb20KCXRlc3RfYmIgaWYgYSBvciBiIHVzZXMgeC4KCjIwMDAtMDUtMDYgIFphY2sgV2VpbmJlcmcgIDx6YWNrQHdvbGVyeS5jdW1iLm9yZz4KCgkqIGNwcGhhc2guaDogUmVtb3ZlIGNvbmRpdGlvbmFsICNkZWZpbmUgb2YgX19leHRlbnNpb25fXy4KCSogcnRsLmg6IEFkZCBfX2V4dGVuc2lvbl9fIHRvIFJUTF9DSEVDSzEsIFJUTF9DSEVDSzIsCglSVExfQ0hFQ0tDMSwgUlRMX0NIRUNLQzIsIGFuZCBSVFZFQ19FTFQgbWFjcm9zCgkoRU5BQkxFX1JUTF9DSEVDS0lORyBvbmx5KS4KCSogdHJlZS5oOiBBZGQgX19leHRlbnNpb25fXyB0byBUUkVFX0NIRUNLLCBUUkVFX0NMQVNTX0NIRUNLLAoJQ1NUX09SX0NPTlNUUlVDVE9SX0NIRUNLLCBhbmQgRVhQUl9DSEVDSyBtYWNyb3MKCShFTkFCTEVfVFJFRV9DSEVDS0lORyBvbmx5KS4KCSogdmFycmF5Lmg6IEFkZCBfX2V4dGVuc2lvbl9fIHRvIFZBUlJBWV9DSEVDSyBtYWNybwoJKEVOQUJMRV9DSEVDS0lORyBvbmx5KS4KCjIwMDAtMDUtMDYgIFJpY2hhcmQgRWFybnNoYXcgKHJlYW5yc2hhQGFybS5jb20pCgoJVXNlIG5ldyB0YWlsLWNhbGxpbmcgbWVjaGFuaXNtIG9uIEFSTS4KCSogYXJtLm1kIChzaWJjYWxsLCBzaWJjYWxsX3ZhbHVlKTogTmV3IGV4cGFuZHMuCgkoc2liY2FsbF9pbnNuLCBzaWJjYWxsX3ZhbHVlX2luc24sIHNpYmNhbGxfZXBpbG9ndWUpOiBOZXcgaW5zbnMuCgkodGFpbGNhbGxpbmcgcGVlcGhvbGVzKTogRGVsZXRlLgoJKHB1c2hfbXVsdGkpOiBTaW1wbGlmeS4KCSogYXJtLmMgKGxyX3NhdmVfZWxpbWluYXRlZCk6IERlbGV0ZSBkZWZpbml0aW9uLgoJKHBhdHRlcm5fcmVhbGx5X2Nsb2JiZXJzX2xyLCBmdW5jdGlvbl9yZWFsbHlfY2xvYmJlcnNfbHIpOiBEZWxldGUuCgkob3V0cHV0X3JldHVybl9pbnN0cnVjdGlvbik6IFJlbW92ZSBjaGVja3Mgb24gbHJfc2F2ZV9lbGltaW5hdGVkLgoJKG91dHB1dF9hcm1fcHJvbG9ndWUpOiBSZW1vdmUgb2xkIHRhaWwtY2FsbGluZyBjb2RlLgoJKGFybV9vdXRwdXRfZXBpbG9ndWUpOiBOZXcgcGFyYW1ldGVyLCByZWFsbHlfcmV0dXJuLiAgQWxsIGNhbGxlcnMKCWNoYW5nZWQuICBIYW5kbGUgdGFpbC1jYWxsaW5nIGVwaWxvZ3Vlcy4KCSogYXJtLmggKGxyX3NhdmVfZWxpbWluYXRlZCk6IERlbGV0ZSBkZWNsYXJhdGlvbi4KCShmcmFtZV9wb2ludGVyX25lZWRlZCk6IERlbGV0ZSBkZWNsYXJhdGlvbi4KCSogYXJtLXByb3Rvcy5oIChhcm1fb3V0cHV0X2VwaWxvZ3VlKTogQWRqdXN0IHByb3RvdHlwZS4KCgkqIGFybS5tZCAoaXNfdGh1bWIpOiBFeGFtaW5lIHN5bWJvbCB0aHVtYl9jb2RlLCBub3QgZXhwcmVzc2lvbgoJVEFSR0VUX0FSTS4KCSogYXJtLmMgKHRodW1iX2NvZGUpOiBEZWZpbmUgaXQuCgkoYXJtX292ZXJyaWRlX29wdGlvbnMpOiBTZXQgaXQuCgkqIGFybS5oICh0aHVtYl9jb2RlKTogRGVjbGFyZSBpdC4KCjIwMDAtMDUtMDYgIFJpY2hhcmQgRWFybnNoYXcgKHJlYW5yc2hhQGFybS5jb20pCgoJKiBhcm0tcHJvdG9zLmggKGFybV9kbGxleHBvcnRfbmFtZV9wLCBhcm1fZGxsaW1wb3J0X25hbWVfcCk6IENvbnN0aWZ5LgoKMjAwMC0wNS0wNiAgUmljaGFyZCBFYXJuc2hhdyAocmVhbnJzaGFAYXJtLmNvbSkKCgkqIGFybS5jIChhcm1fZ2VuX2xvYWRfbXVsdGlwbGUsIGFybV9nZW5fc3RvcmVfbXVsaXRwbGUpOiBEb24ndCBhZGQKCWJvZ3VzIGNsb2JiZXIgdG8gaW5zbnMuCgkobG9hZF9tdWx0aXBsZV9vcGVyYXRpb24sIHN0b3JlX211bGl0cGxlX29wZXJhdGlvbik6IERvbid0IGNoZWNrCglmb3IgaXQuCgkqIGFybS5tZCAobGRtc2lfcG9zdGluYywgc3Rtc2lfcG9zdGluYyk6IEFkanVzdCBhY2NvcmRpbmdseS4KCgkqIGFybS5tZCAoYW5kX3NjYywgaW9yX3NjYyk6IEFkZCBtaXNzaW5nIG1vZGUuCgoJKiBhcm0ubWQgKGNhbGxfdmFsdWVfc3ltYm9sKTogUmVtb3ZlIHByZWRpY2F0ZSBmcm9tIG9wMi4KCgkqIGFybS5oIChTUEVDSUFMX01PREVfUFJFRElDQVRFUyk6IERlZmluZS4KClNhdCBNYXkgIDYgMDY6MjU6NTYgMjAwMCAgUmljaGFyZCBLZW5uZXIgIDxrZW5uZXJAdmxzaTEudWx0cmEubnl1LmVkdT4KCgkqIGV4cHIuYyAoZ2V0X3N1YnRhcmdldCk6IE5ldyBmdW5jdGlvbi4KCShmb3JjZV9vcGVyYW5kLCBleHBhbmRfZXhwciwgZG9fc3RvcmVfZmxhZyk6IFVzZSBpdC4KCgkqIHRvcGxldi5jIChjb21waWxlX2ZpbGUpOiBEb24ndCB0YWtlIHN0cmxlbiBvZiBOQU1FIGlmIG51bGwuCgoyMDAwLTA1LTA2ICBEYXZpZCBFZGVsc29obiAgPGVkZWxzb2huQGdudS5vcmc+CgoJKiB4Y29mZm91dC5jICh4Y29mZl9jdXJyZW50X2luY2x1ZGVfZmlsZSwKCXhjb2ZmX2N1cnJlbnRfZnVuY3Rpb25fZmlsZSwgeGNvZmZfbGFzdGZpbGUpOiBDb25zdGlmeSBjaGFyICouCgkoeGNvZmZvdXRfc291cmNlX2ZpbGUsIHhjb2Zmb3V0X3NvdXJjZV9saW5lKTogTWFrZSBmaWxlbmFtZSAnY29uc3QKCWNoYXIgKicuCgkoeGNvZmZvdXRfZGVjbGFyZV9mdW5jdGlvbik6IE1ha2UgbmFtZSAnY29uc3QgY2hhciAqJy4KCSh4Y29mZm91dF9lbmRfZXBpbG9ndWUpOiBNYWtlIGZuYW1lICdjb25zdCBjaGFyIConCgkqIHhjb2Zmb3V0LmggKHhjb2ZmX2N1cnJlbnRfaW5jbHVkZV9maWxlLCB4Y29mZl9sYXN0ZmlsZSwKCXhjb2Zmb3V0X2RlY2xhcmVfZnVuY3Rpb24sIHhjb2Zmb3V0X3NvdXJjZV9saW5lKTogTWF0Y2ggYWJvdmUuCgoJKiBhaXg0My5oIChTVUJUQVJHRVRfT1ZFUlJJREVfT1BUSU9OUyk6IC1tcG93ZXJwYzY0IHdpdGhvdXQKCS1tYWl4NjQJaXMgZXJyb3IuCgkqIHJzNjAwMC5jIChwcmludF9vcGVyYW5kKTogRml4IGxvc3NhZ2UgdHlwby4KCShvdXRwdXRfY2JyYW5jaCk6IFJlbW92ZSAiY3IiIGRlY29yYXRpb24gZm9yIG5vdy4KCSogcnM2MDAwLmggKEFTTV9PVVRQVVRfREVGX0ZST01fREVDTFMpOiBNYWtlIGFsaWFzICdjb25zdCBjaGFyIConLgoKU2F0IE1heSAgNiAwNjo1NTozMiAyMDAwICBEZW5pcyBDaGVydHlrb3YgIDxkZW5pc2NAb3ZlcnRhLnJ1PgoKCSogY29uZmlnL2F2ci9hdnIuYyAob3V0X3NoaWZ0X3dpdGhfY250KTogQnVnZml4IGZvciBzaGlmdCBieQoJY29uc3RhbnQgY291bnQuCgoyMDAwLTA1LTA1ICBCcnVjZSBLb3JiICA8YmtvcmJAZ251Lm9yZz4KCgkqIGZpeGluYy9nZW5maXhlczogSW1wcm92ZSB0aGUgbWF0Y2hpbmcgZm9yIG1ha2UgdGFyZ2V0IG5hbWVzCgoyMDAwLTA1LTA1ICBDYXRoZXJpbmUgTW9vcmUgIDxjbG1AY3lnbnVzLmNvbT4KCgkqIGMtY29tbW9uLmMgKGRlY2xfYXR0cmlidXRlcyk6ICBGb3IgVFlQRV9ERUNMcyBhdHRhY2ggdGhlCglhdHRyaWJ1dGUgdG8gdGhlIGRlY2wuCgkqIGMtZGVjbC5jIChwdXNoZGVjbCk6IFByb3BhZ2F0ZSB0aGUgVVNFRCBhdHRyaWJ1dGUgdG8gdGhlCgl0eXBlIGNvcHkuCgoyMDAwLTA1LTA1ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEBjeWdudXMuY29tPgoKCSogcnRsYW5hbC5jIChyZWdfb3ZlcmxhcF9tZW50aW9uZWRfcCk6IFRyZWF0IHBhcmFsbGVscyBpbiB0aGUKCXNhbWUgd2F5IGVtaXRfZ3JvdXBfbG9hZCBkb2VzLgoKMjAwMC0wNS0wNSBNYXJrIEVsYnJlY2h0IDxzbm93YmFsbDNAYmlnZm9vdC5jb20+CgoJKiBnY2MuYyAoc2V0X2lucHV0KSBbSEFWRV9ET1NfU1RZTEVfRklMRV9TWVNURU1dOiBTa2lwIGRyaXZlIG5hbWUuCgoJKiB0b3BsZXYuYyAob3V0cHV0X2ZpbGVfZGlyZWN0aXZlKTogVXNlIElTX0RJUl9TRVBBUkFUT1IuCgkobWFpbik6IExpa2V3aXNlLgoKMjAwMC0wNS0wNSBSb2RuZXkgQnJvd24JPFJvZG5leUJyb3duQG15bmQuY29tPgoKCSogcGEuaCAoRlVOQ1RJT05fQVJHX0FEVkFOQ0UpOiBXYXJuaW5nIHJlbW92YWwuCgpGcmkgTWF5ICA1IDEwOjI5OjIxIDIwMDAgIE1hcmMgRXNwaWUgPGVzcGllQGN2cy5vcGVuYnNkLm9yZz4KCgkqIGNvbmZpZy9vcGVuYnNkLmggKExJTktfU1BFQyk6IHBhc3MgY29ycmVjdCBmbGFncyB0byBsZAoJdG8gc3VwcG9ydCAtc2hhcmVkLCBvbiBwbGF0Zm9ybXMgd2l0aCBkeW5hbWljIGxpYnJhcmllcy4KCkZyaSBNYXkgIDUgMTA6Mjc6MDYgMjAwMCAgUGhpbGlwcGUgRGUgTXV5dGVyICA8cGhkbUBtYWNxZWwuYmU+CgoJKiBzeXN0ZW0uaCAoU19JU0JMSyk6IFByb3ZpZGUgZmFsbGJhY2sgZGVmaW5pdGlvbi4KCjIwMDAtMDUtMDUgIEdlb2ZmIEJlcnJ5ICA8Z2VvZmZiQGJvcHMuY29tPgoKCSogZXh0ZW5kLnRleGkgKEV4dGVuZGVkIEFzbSk6IERvY3VtZW50IGluYWJpbGl0eSB0byBnaXZlIGFzbQoJc3RhdGVtZW50cyBhY2Nlc3MgdG8gY29uZGl0aW9uIGNvZGVzLgoKMjAwMC0wNS0wNSAgTWFyZWsgTWljaGFsa2lld2ljeiAgPG1hcmVrbUBsaW51eC5vcmcucGw+CgoJKiB2YXJhc20uYyAoYXNtX2VtaXRfdW5pbml0aWFsaXNlZCk6IFVzZSAwLCBub3QgTlVMTAoJYXMgYXJnIDIgb2YgVU5JUVVFX1NFQ1RJT04uCgpGcmkgTWF5ICA1IDEwOjExOjQxIDIwMDAgIEplZmZyZXkgQSBMYXcgIChsYXdAY3lnbnVzLmNvbSkKCgkqIHByZWRpY3QuYzogUmVtb3ZlIE1heSA0IGNoYW5nZS4KCSogYmItcmVvcmRlci5jIChtYWtlX3Jlb3JkZXJfY2hhaW4pOiBEbyBub3QgcGVyZm9ybSBibG9jayBtb3ZlbWVudAoJaWYgd2UgaGF2ZSBwcmVkaWN0ZWQgdGhlIGJyYW5jaCBhdCA1MC01MCBwcm9iYWJpbGl0eS4KCjIwMDAtMDUtMDUgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgoJKiBmbG93LmMgKGluaXRfcHJvcGFnYXRlX2Jsb2NrX2luZm8pOiBGaXggbWVyZ2UgZXJyb3IKCWluIEhBVkVfY29uZGl0aW9uYWxfZXhlY3V0aW9uIGNvZGUuCgpGcmkgTWF5ICA1IDA3OjQzOjUwIDIwMDAgIERlbmlzIENoZXJ0eWtvdiAgPGRlbmlzY0BvdmVydGEucnU+CgoJKiBjb25maWcvYXZyL2F2ci5jIChvdXRfc2hpZnRfd2l0aF9jbnQpOiBHZW5ldGFyZSBhIG1vcmUgb3B0aW1hbAoJc2hpZnQgY3ljbGUgZm9yIHVua25vd24gc2hpZnQgY291bnQuIEFsc28gZ2VuZXJhdGVzIGRlYyArIGJycGwuCgkoYXNobHFpM19vdXQpOiBEb24ndCBnZW5lcmF0ZSBkZWMgKyBicnBsIHdoaWNoIG5vdyBnZW5lcmF0ZXMgYnkKCWBvdXRfc2hpZnRfd2l0aF9jbnQnLgoJKGFzaGxoaTNfb3V0KTogTGlrZXdpc2UuCgkoYXNobHNpM19vdXQpOiBMaWtld2lzZS4KCShhc2hycWkzX291dCk6IExpa2V3aXNlLgoJKGFzaHJoaTNfb3V0KTogTGlrZXdpc2UuCgkoYXNocnNpM19vdXQpOiBMaWtld2lzZS4KCShsc2hycWkzX291dCk6IExpa2V3aXNlLgoJKGxzaHJoaTNfb3V0KTogTGlrZXdpc2UuCgkobHNocnNpM19vdXQpOiBMaWtld2lzZS4KCjIwMDAtMDUtMDQgTWFyayBFbGJyZWNodCA8c25vd2JhbGwzQGJpZ2Zvb3QuY29tPgoKCSogZ2NjLmMgKGZyZWVfc3BsaXRfZGlyZWN0b3JpZXMpOiBDb3JyZWN0IHR5cG8gaW4gZXhwbGFuYXRpb24KCW9mIG1ha2VfcmVsYXRpdmVfcHJlZml4LgoKMjAwMC0wNS0wNCAgR2VvZmYgS2VhdGluZyAgPGdlb2Zma0BjeWdudXMuY29tPgoKCSogY29uZmlnL3JzNjAwMC9yczYwMDAuaCAoUFJFRElDQVRFX0NPREVTKTogQWRkIGZsb2F0aW5nLXBvaW50Cgljb21wYXJpc29uIGNvZGVzIHRvIGJyYW5jaF9jb21wYXJpc29uX29wZXJhdG9yLgoKMjAwMC0wNS0wNCAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAY3lnbnVzLmNvbT4KCgkqIGlmY3Z0LmMgKG5vY2VfcHJvY2Vzc19pZl9ibG9jayk6IEFsd2F5cyByZXNldCBYIGluIHRoZSBBID09IEIgY2FzZS4KCjIwMDAtMDUtMDQgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgoJKiBNYWtlZmlsZS5pbiAoRlBCSVRfRlVOQ1MpOiBSZW1vdmUgX2RmX3RvX3VzaS4KCShEUEJJVF9GVU5DUyk6IFJlbW92ZSBfc2ZfdG9fdXNpLgoJKHN0bXAtbXVsdGlsaWIpOiBQYXNzIExJQjFBU01TUkMgdG8gbGliZ2NjLm1rLgoKCSogaWZjdnQuYyAobm9jZV9wcm9jZXNzX2lmX2Jsb2NrKTogRmFpbCBpZiBBIG9yIEIgbW9kaWZpZWQKCWJldHdlZW4gY29uZGl0aW9uIGFuZCBqdW1wLgoKCSogbGliZ2NjMi5jIChuZWFyIGVoX2NvbnRleHRfc3BlY2lmaWMpOiBDb21tZW50ICNlbmRpZiBzdHJpbmcuCgkqIGxvbmdsb25nLmg6IERvbid0IHVzZSBzdHJpbmdzIHdpdGggZW1iZWRkZWQgbmV3bGluZXMuCgoyMDAwLTA1LTA0ICBHZW9mZiBLZWF0aW5nICA8Z2VvZmZrQGN5Z251cy5jb20+CgoJKiBjb25maWcvcnM2MDAwL3JzNjAwMC1wcm90b3MuaDogQWRkIG91dHB1dF9jYnJhbmNoLgoJKiBjb25maWcvcnM2MDAwL3JzNjAwMC5jIChjY3JfYml0X25lZ2F0ZWRfcCk6IERlbGV0ZS4KCShwcmludF9vcGVyYW5kKTogRGVsZXRlICV0IGFuZCAlVCBjb2Rlcy4KCShvdXRwdXRfY2JyYW5jaCk6IE5ldyBmdW5jdGlvbi4gIFN1cHBvcnQgYnJhbmNoIHByZWRpY3Rpb24uCgkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLm1kOiBVc2Ugb3V0cHV0X2NicmFuY2ggZm9yCgljb25kaXRpb25hbCBicmFuY2hlcyBhbmQgcmV0dXJucy4KCjIwMDAtMDUtMDQgIEphc29uIE1lcnJpbGwgIDxqYXNvbkBjYXNleS5jeWdudXMuY29tPgoKCSogc2ltcGxpZnktcnR4LmMgKHNpbXBsaWZ5X3Rlcm5hcnlfb3BlcmF0aW9uKTogQ2FzdCB0byB1bnNpZ25lZC4KCSogc3Rvci1sYXlvdXQuYyAocGxhY2VfZmllbGQpOiBMaWtld2lzZS4KCSogaW50ZWdyYXRlLmggKHN0cnVjdCBpbmxpbmVfcmVtYXApOiBNYWtlIHJlZ25vX3BvaW50ZXJfYWxpZ24gdW5zaWduZWQuCgkqIGV4cHIuYyAoc3RvcmVfZXhwcik6IE1ha2UgYWxpZ24gdW5zaWduZWQuCgkqIGV4cGxvdy5jIChwbHVzX2NvbnN0YW50X3dpZGUpOiBNYWtlIGxvdyB3b3JkcyB1bnNpZ25lZC4KCSogZXhwbWVkLmMgKGNob29zZV9tdWx0aXBsaWVyKTogTGlrZXdpc2UuCgkqIGZvbGQtY29uc3QuYyAoZm9sZCk6ICBMaWtld2lzZS4KCSogdHJlZS5oIChidWlsZF9pbnRfMik6IExpa2V3aXNlLgoJKiB0cmVlLmMgKGJ1aWxkX2ludF8yX3dpZGUsIHRyZWVfaW50X2NzdF9tc2IpOiBMaWtld2lzZS4KCSogZW1pdC1ydGwuYyAoZ2VuX3JlZ19ydHgpOiBBZGQgY2FzdCB0byB1bnNpZ25lZCBjaGFyKi4KCShpbml0X2VtaXQpOiBDaGFuZ2UgY2FzdCB0byB1bnNpZ25lZCBjaGFyKi4KCSogdmFyYXNtLmMgKGNvbXBhcmVfY29uc3RhbnRfMSk6IEFkZCBjYXN0IHRvIGNoYXIqLgoJKiBnY3NlLmMgKGRlbGV0ZV9udWxsX3BvaW50ZXJfY2hlY2tzKTogQ2hhbmdlIGNhc3QgdG8gdW5zaWduZWQgaW50Ki4KCSogcmVsb2FkMS5jIChyZWxvYWQpOiBMaWtld2lzZS4KCgkqIHJ0bC5oIChNRU1fU0VUX0lOX1NUUlVDVF9QKTogVXNlIGRvIHsgfSB3aGlsZSAoMCkuCgpUaHUgTWF5ICA0IDE0OjM3OjIzIDIwMDAgIEplZmZyZXkgQSBMYXcgIChsYXdAY3lnbnVzLmNvbSkKCgkqIHByZWRpY3QuYyAoZXN0aW1hdGVfcHJvYmFiaWxpdHkpOiBJZiBubyBwcmVkaWN0aW9uIHdhcyBmb3VuZCwgdGhlbgoJcHJlZGljdCB0aGUgc3VjY2Vzc29yIHRoYXQgaXMgdGhlIG5leHQgcGh5c2ljYWwgYmxvY2sgKGlmIHN1Y2ggYQoJc3VjY2Vzc29yIGV4aXN0cykuCgoyMDAwLTA1LTA0ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEBjeWdudXMuY29tPgoKCSogY29uZmlnL2FscGhhL3QtYWxwaGEgKExJQjJGVU5DU19FWFRSQSk6IFVzZSBxcnJuZC5hc20gaW4gcGxhY2UuCgoyMDAwLTA1LTA0ICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBzeXN0ZW0uaDogRG9uJ3Qgd3JhcCA8c3lzL3R5cGVzLmg+IHdpdGggSEFWRV9TWVNfVFlQRVNfSC4KCjIwMDAtMDUtMDQgIE11bWl0IEtoYW4gIDxraGFuQHhyYXlsaXRoLndpc2MuZWR1PgoKCSogaTM4Ni9jeWd3aW4uaCAoQ1BQX1BSRURFRklORVMpOiBEb24ndCBkZWZpbmUgX19TVERDX18uIE1vdmUKCWF0dHJpYnV0ZSBtYWNyb3MgZnJvbSBoZXJlIC4uLgoJKENQUF9TUEVDKTogdG8gaGVyZS4KCSogaTM4Ni9taW5ndzMyLmggKENQUF9QUkVERUZJTkVTKTogTGlrZXdpc2UuCgkoQ1BQX1NQRUMpOiBMaWtld2lzZS4KCSogaTM4Ni9jcnRkbGwuaCAoQ1BQX1BSRURFRklORVMpOiBEZWxldGUgYXR0cmlidXRlIG1hY3Jvcy4KCgkqIE1ha2VmaWxlLmluICgkKEhPU1RfUFJFRklYXzEpZ2Vuc3VwcG9ydC5vKTogQWRkIGJ1aWxkIHJ1bGUuCgkobGliZ2NjLmEpOiBQYXNzIExJQjFBU01TUkMgdG8gbGliZ2NjLm1rLgoKMjAwMC0wNS0wNCAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogYmItcmVvcmRlci5jIChnZXRfbmV4dF9iYl9ub3RlLCBnZXRfcHJldl9iYl9ub3RlKTogUHJvdG90eXBlLgoKCSogZGlhZ25vc3RpYyAodmJ1aWxkX21lc3NhZ2Vfc3RyaW5nLCBidWlsZF9tZXNzYWdlX3N0cmluZywKCWJ1aWxkX2xvY2F0aW9uX3ByZWZpeCwgb3V0cHV0X2dldF9wcmVmaXgsIGluaXRfb3V0cHV0X2J1ZmZlciwKCW91dHB1dF9ub3RpY2UsIHZsaW5lX3dyYXBwZXJfbWVzc2FnZV93aXRoX2xvY2F0aW9uLAoJdl9tZXNzYWdlX3dpdGhfZGVjbCwgZGVmYXVsdF9wcmludF9lcnJvcl9mdW5jdGlvbik6IERlLWNvbnN0aWZ5LgoJKHNldF9yZWFsX21heGltdW1fbGVuZ3RoKTogUHJvdG90eXBlLgoKCSogZGlhZ25vc3RpYy5oIChzdHJ1Y3Qgb3V0cHV0X2J1ZmZlciwgaW5pdF9vdXRwdXRfYnVmZmVyLAoJb3V0cHV0X2dldF9wcmVmaXgsIG91dHB1dF9zZXRfcHJlZml4KTogRGUtY29uc3RpZnkuCgoJKiBmdW5jdGlvbi5jIChpbml0X2Z1bmN0aW9uX3N0YXJ0KTogQ29uc3RpZnkuCgoJKiBnZW5zdXBwb3J0LmMgKHJlbW92ZV9jb25zdHJhaW50cywgcHJvY2Vzc19ydHgpOiBQcm90b3R5cGUuCgoJKiBndGhyLXBvc2l4Lmg6IEluZGVudCB1c2VzIG9mICNwcmFnbWEuCgoJKiBvYmpjL29iamMtYWN0LmMgKGdnY19tYXJrX2ltcF9saXN0LCBnZ2NfbWFya19oYXNoX3RhYmxlKToKCVByb3RvdHlwZS4KCgkqIHByZWRpY3QuYyAoZmluZF9leHBlY3RlZF92YWx1ZSk6IERlbGV0ZSBwcm90b3R5cGUuCgkoZXhwZWN0ZWRfdmFsdWVfdG9fYnJfcHJvYik6IEluaXRpYWxpemUgdmFyaWFibGUgYGV2X3JlZycuCgoJKiBzYml0bWFwLmggKGRlYnVnX3NiaXRtYXApOiBQcm90b3R5cGUuCgoJKiBzc2EuYyAoY29tcHV0ZV9jb2FsZXNjZWRfcmVnX3BhcnRpdGlvbik6IFByb3RvdHlwZS4KCgkqIHN0b3ItbGF5b3V0LmMgKGRlYnVnX3JsaSk6IFByb3RvdHlwZS4KCgkqIHRyZWUuaCAocm91bmRfZG93bik6IFByb3RvdHlwZS4KCShpbml0X2Z1bmN0aW9uX3N0YXJ0KTogQ29uc3RpZnkuCgoyMDAwLTA1LTA0ICBaYWNrIFdlaW5iZXJnICA8emFja0B3b2xlcnkuY3VtYi5vcmc+CgoJKiBjcHBoYXNoLmg6ICNkZWZpbmUgX19leHRlbnNpb25fXyBhd2F5IGlmIEdDQ19WRVJTSU9OIDwgMjA5NQoJKG92ZXJseSBjb25zZXJ2YXRpdmUpLiAgQ2hhbmdlIGV4dGVybiBpbmxpbmUgd3JhcHBlcnMgdG8KCXN0YXRpYyBpbmxpbmUsIGRlZmluZSB0aGVtIGFsd2F5cywgdXNlIFBBUkFNUyBwcm9wZXJseS4KCSogY3BwbGV4LmMgKF9jcHBfZ2V0X2RpcmVjdGl2ZV90b2tlbik6IERvbid0IGlzc3VlIHBlZGFudGljCgl3aGl0ZXNwYWNlIHdhcm5pbmdzIGZvciBcZiBhbmQgXHYgYXQgdGhlIGJlZ2lubmluZyBvZiBhIGxpbmUuCgpUaHUgTWF5ICA0IDEwOjAzOjUwIDIwMDAgIEplZmZyZXkgQSBMYXcgIChsYXdAY3lnbnVzLmNvbSkKCgkqIGhhaWZhLXNjaGVkLmMgKHNjaGVkdWxlX2luc25zKTogRnJlZSB0aGUgZmxvdyBlZGdlIGxpc3Qgd2hlbiBpdAoJaXMgbm8gbG9uZ2VyIG5lZWRlZAoKMjAwMC0wNS0wNCAgQnJ1Y2UgS29yYiAgPGJrb3JiQGdudS5vcmc+CgoJKiBmaXhpbmNsL2luY2xoYWNrLmRlZjogYWRkZWQgYnJva2VuX2NhYnMgLQoJUmVtb3ZlIGBleHRlcm4gZG91YmxlIGNhYnMnIGRlY2xhcmF0aW9ucyBmcm9tIG1hdGguaAoJKiBmaXhpbmNsL2luY2xoYWNrLnNoOiByZWdlbgoJKiBmaXhpbmNsL2ZpeGluY2wueDogcmVnZW4KCSogZml4aW5jbC9maXhpbmNsLmM6IFJlbW92ZSBCT0dPU0lUWSBjb2RlCgkqIGZpeGluY2wvbWtmaXhpbmMuc2g6IFJlbW92ZSBjb2RlIGZvciBpbnN0YWxsaW5nICJzaGVsbCIgdmVyc2lvbgoKVGh1IE1heSAgNCAwOTo0NToxMiAyMDAwICBSaWNoYXJkIEtlbm5lciAgPGtlbm5lckB2bHNpMS51bHRyYS5ueXUuZWR1PgoKCSogcnRsLmggKE1FTV9DT1BZX0FUVFJJQlVURVMpOiBBbHNvIGNvcHkgUlRYX1VOQ0hBTkdJTkdfUCBhbmQKCU1FTV9BTElBU19TRVQuCgkqIGFsaWFzLmMgKGNhbm9uX3J0eCk6IERvbid0IGNvcHkgUlRYX1VOQ0hBTkdJTkdfUCBvciBNRU1fQUxJQVNfU0VUCgl3aGVuIGNhbGxpbmcgTUVNX0NPUFlfQVRUUklCVVRFUy4KCSogZW1pdC1ydGwuYyAob3BlcmFuZF9zdWJ3b3JkLCBjaGFuZ2VfYWRkcmVzcyk6IExpa2V3aXNlLgoJKiBleHBsb3cuYyAoc3RhYmlsaXplKTogTGlrZXdpc2UuCgkqIGV4cHIuYyAocHJvdGVjdF9mcm9tX3F1ZXVlLCBlbWl0X21vdmVfaW5zbl8xKTogTGlrZXdpc2UuCgkqIGludGVncmF0ZS5jIChjb3B5X3J0eF9hbmRfc3Vic3RpdHV0ZSk6IExpa2V3aXNlLgoJKiBjb21iaW5lLmMgKGNvbWJpbmVfc2ltcGxpZnlfcnR4KTogRG9uJ3QgY29weSBSVFhfVU5DSEFOR0lOR19QCgl3aGVuIGNhbGxpbmcgTUVNX0NPUFlfQVRUUklCVVRFUy4KCShtYWtlX2V4dHJhY3Rpb24sIHNpbXBsaWZ5X3NoaWZ0X2NvbnN0LCBnZW5fbG93cGFydF9mb3JfY29tYmluZSk6CglMaWtld2lzZS4KCSogY3NlLmMgKGdlbl9sb3dwYXJ0X2lmX3Bvc3NpYmxlKTogTGlrZXdpc2UuCgkqIGZ1bmN0aW9uLmMgKGZpeHVwX3Zhcl9yZWZzXzEsIHB1cmdlX2FkZHJlc3NvZl8xKTogTGlrZXdpc2UuCgkqIG9wdGFicy5jIChnZW5fbW92ZV9pbnNuKTogTGlrZXdpc2UuCgkqIHJlY29nLmMgKHZhbGlkYXRlX3JlcGxhY2VfcnR4XzEpOiBMaWtld2lzZS4KCSogc2ltcGxpZnktcnR4LmMgKGFkZF9tZW1fZm9yX2FkZHIpOiBMaWtld2lzZS4KCSogc3RtdC5jIChleHBhbmRfYW5vbl91bmlvbl9kZWNsKTogTGlrZXdpc2UuCgkqIGNvbmZpZy9hcm0vYXJtLm1kOiBMaWtld2lzZS4KCSogY29uZmlnL2g4MzAwL2g3MzAwLmMgKGZpeF9iaXRfb3BlcmFuZCk6IExpa2V3aXNlLgoJKiBjb25maWcvbTg4ay9tODhrLmMgKGxlZ2l0aW1pemVfYWRkcmVzcywgYmxvY2tfbW92ZV9sb29wKTogTGlrZXdpc2UuCgkoYmxvY2tfbW92ZV9ub19sb29wLCBibG9ja19tb3ZlX3NlcXVlbmNlKTogTGlrZXdpc2UuCgkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLmMgKGV4cGFuZF9ibG9ja19tb3ZlX21lbSk6IExpa2V3aXNlLgoJKiBjb25maWcvYWxwaGEvYWxwaGEuYyAoZ2V0X2FsaWduZWRfbWVtKTogTGlrZXdpc2UuCglDbGVhciBNRU1fQUxJQVNfU0VULgoJKiBmaW5hbC5jIChhbHRlcl9zdWJyZWcpOiBEb24ndCBjb3B5IE1FTV9BTElBU19TRVQgd2hlbiBjYWxsaW5nCglNRU1fQ09QWV9BVFRSSUJVVEVTLgoKMjAwMC0wNS0wMyAgUm9iZXJ0IExpcGUgPHJvYmVydGxpcGVAdXNhLm5ldD4KCgkqIGNvbmZpZ3VyZS5pbiAoaVszNDU2N104Ni0qLWlzYyopIFt0bWFrZV9maWxlXTogQWRkIHQtaTM4NmJhcmUKCXRvIHN1cHByZXNzIGxpYmdjYzEuCgkoaVszNDU2N104Ni0qLXNjbzMuMnY1KikgTGlrZXdpc2UuCgkoaVszNDU2N104Ni0qLXNjbzMuMnY0KikgTGlrZXdpc2UuCgkoaVszNDU2N104Ni0qLXNjbykgTGlrZXdpc2UuCgkoaVszNDU2N104Ni0qLXNvbGFyaXMyKSBMaWtld2lzZS4KCShpWzM0NTY3XTg2LSotc3lzdjUqKSBMaWtld2lzZS4KCShpWzM0NTY3XTg2LSotc3lzdjQqKSBMaWtld2lzZS4KCShpWzM0NTY3XTg2LSotdWRrKikgTGlrZXdpc2UuCgkoaVszNDU2N104Ni0qLXN5c3YqKSBMaWtld2lzZS4KCjIwMDAtMDUtMDMgIFphY2sgV2VpbmJlcmcgIDx6YWNrQHdvbGVyeS5jdW1iLm9yZz4KCgkqIGNwcGhhc2guaCAoVSk6IE5ldyBkZWZpbmUsIHRvIGNvcnJlY3QgdHlwZSBvZiBzdHJpbmcgY29uc3RhbnRzLgoJKHVzdHJjbXAsIHVzdHJuY21wLCB1c3RybGVuLCB1eHN0cmR1cCwgdXN0cmNocik6IE5ldyB3cmFwcGVyCglyb3V0aW5lcywgdG8gZG8gY2FzdHMgd2hlbiBwYXNzaW5nIHVuc2lnbmVkIHN0cmluZ3MgdG8gbGliYy4KCSogY3BwZXhwLmMsIGNwcGZpbGVzLmMsIGNwcGhhc2guYywgY3BwaW5pdC5jLCBjcHBsaWIuYzogVXNlIHRoZW0uCgoJKiBjcHBmaWxlcy5jIChfY3BwX2V4ZWN1dGVfaW5jbHVkZSk6IE1ha2UgZmlsZW5hbWUgYW4gVV9DSEFSICouCgkqIGNwcGhhc2guYyAoX2NwcF9xdW90ZV9zdHJpbmcpOiBNYWtlIHN0cmluZyBhbiBVX0NIQVIgKi4KCSogY3BwaW5pdC5jIChkdW1wX3NwZWNpYWxfdG9fYnVmZmVyKTogTWFrZSBtYWNybyBuYW1lIGFuIFVfQ0hBUiAqLgoJKiBjcHBsZXguYyAocGFyc2VfaWZkZWYsIHBhcnNlX2luY2x1ZGUsIHZhbGlkYXRlX2Vsc2UpOiBNYWtlCglzZWNvbmQgYXJndW1lbnQgYW4gVV9DSEFSICouCgoJKiBjcHBpbml0LmMgKGJ1aWx0aW5fYXJyYXkpOiBNYWtlIG5hbWUgYW5kIHZhbHVlIFVfQ0hBUiAqLCBhZGQKCWxlbmd0aCBmaWVsZCwgY2xlYW4gdXAgaW5pdGlhbGl6ZXIuCgkoSVNUQUJMRSk6IEFkZCBfX2V4dGVuc2lvbl9fIHRvIGRlc2lnbmF0ZWQtCglpbml0aWFsaXplcnMgdmVyc2lvbi4KCSogY3BwbGV4LmMgKENIQVJUQUIpOiBMaWtld2lzZS4KCgkqIG1iY2hhci5jOiBBZGQgZHVtbXkgZXh0ZXJuYWwgZGVjbGFyYXRpb24gdG8gdGhlICFNVUxUSUJZVEVfQ0hBUlMKCWNhc2Ugc28gdGhlIGZpbGUgd29uJ3QgYmUgZW1wdHkuCgpXZWQgTWF5ICAzIDIxOjAxOjQ2IDIwMDAgIEphc29uIEVja2hhcmR0ICA8amxlQGN5Z251cy5jb20+CgoJKiBiYi1yZW9yZGVyLmMgKHN0cnVjdCByZW9yZGVyX2Jsb2NrX2RlZik6IE1lbWJlciBzdWNjIHJlbW92ZWQuCgkoUkVPUkRFUl9CTE9DS19TVUNDKTogUmVtb3ZlZC4KCShlbnVtIHJlb3JkZXJfc2tpcF90eXBlKTogUmVtb3ZlZC4KCShza2lwX2luc25zX2JldHdlZW5fYmxvY2spOiBSZW5hbWVkIHRvIHNraXBfaW5zbnNfYWZ0ZXJfYmxvY2suCglSZW1vdmVkIHNlY29uZCBhcmd1bWVudC4gUmVtb3ZlZCBkZWFkIGNvZGUgYW5kIGNsZWFuZWQgdXAuCgkobWFrZV9yZW9yZGVyX2NoYWluKTogUmVtb3ZlZCB1c2Ugb2YgUkVPUkRFUl9CTE9DS19TVUNDLgoJKHJlb3JkZXJfYmFzaWNfYmxvY2tzKTogUmVtb3ZlIHVzZSBvZiBSRU9SREVSX1NLSVBfQUZURVIuIFJlbW92ZWQKCXNlY29uZCBwYXJhbWV0ZXIgdG8gc2tpcF9pbnNuc19hZnRlcl9ibG9jay4KCldlZCBNYXkgIDMgMTM6Mjk6NTQgMjAwMCAgUmljaGFyZCBLZW5uZXIgIDxrZW5uZXJAdmxzaTEudWx0cmEubnl1LmVkdT4KCgkqIHRyZWUuYyAoc3RhdGljcCwgY2FzZSBMQUJFTF9ERUNMKTogTmV3IGNhc2UuCgoyMDAwLTA1LTAzICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEBjeWdudXMuY29tPgoKCSogTWFrZWZpbGUuaW4gKHN0YXJ0LmVuY2FwKTogRG8gbm90IGRlcGVuZCBvbiBMSUJHQ0MxLgoKCSogbWtsaWJnY2MxLmluOiBGaXggdHlwbyBsYXN0IGNoYW5nZS4KCjIwMDAtMDUtMDMgIEphc29uIE1lcnJpbGwgIDxqYXNvbkBjYXNleS5jeWdudXMuY29tPgoKCSogTWFrZWZpbGUuaW4gKFdBUk5fQ0ZMQUdTKTogQWRkIC1wZWRhbnRpYyAtV25vLWxvbmctbG9uZy4KCShMT09TRV9DRkxBR1MpOiBOZXc6IENGTEFHUyB3aXRob3V0IC1wZWRhbnRpYyBhbmQgLVd0cmFkaXRpb25hbC4KCShHQ0NfQ0ZMQUdTKTogVXNlIGl0LgoJKExBTkdfRkxBR1NfVE9fUEFTUyk6IE5ldzogU1VCRElSX0ZMQUdTX1RPX1BBU1Mgd2l0aCBMT09TRV9DRkxBR1MuCgkqIGNwL01ha2UtbGFuZy5pbiwgamF2YS9NYWtlLWxhbmcuaW4sIGYvTWFrZS1sYW5nLmluLCBjaC9NYWtlLWxhbmcuaW4sCglvYmpjL01ha2UtbGFuZy5pbjogVXNlIGl0LgoKMjAwMC0wNS0wMyAgSmFzb24gUiBUaG9ycGUgIDx0aG9ycGVqQHplbWJ1LmNvbT4KCgkqIGNvbmZpZy9pMzg2L2kzODYubWQgKGxzaHJxaTJfY21wbm8pOiBVc2UgcSBub3QgciBpbiBjb25zdHJhaW50LgoKMjAwMC0wNS0wMyAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAY3lnbnVzLmNvbT4KCgkqIG1rbGliZ2NjLmluOiBSZXN0cmljdCBPTERDQz1HQ0MgdGVzdCB0byBuYXRpdmUuICBFcXVhdGUKCUxJQkdDQzEgZW1wdHkgd2l0aCBsaWJnY2MxLm51bGwuCgpXZWQgTWF5ICAzIDEyOjU1OjQ2IDIwMDAgIEppbSBXaWxzb24gIDx3aWxzb25AY3lnbnVzLmNvbT4KCgkqIGZvbGQtY29uc3QuYyAoZXh0cmFjdF9tdWxkaXYsIGNhc2UgTUFYX0VYUFIpOiBEb24ndCBhbGxvdyBzaWduZWRuZXNzCgljaGFuZ2UuCgoyMDAwLTA1LTAzICBHcmVnIE1jR2FyeSAgPGdrbUBnbnUub3JnPgoKCSogdHJlZS5oICh0cmVlX2NvbW1vbik6IEFkZCBib3VuZGVkX2ZsYWcgbWVtYmVyLiAgUmVtb3ZlCglpbmFjY3VyYXRlIGNvbW1lbnQgYWJvdXQgbnVtYmVyIG9mIHJlbWFpbmluZyBiaXRzLgoJKEJPVU5ERURfSU5ESVJFQ1RfVFlQRV9QLCBCT1VOREVEX1BPSU5URVJfVFlQRV9QLAoJQk9VTkRFRF9SRUZFUkVOQ0VfVFlQRV9QLCBNQVlCRV9CT1VOREVEX0lORElSRUNUX1RZUEVfUCwKCU1BWUJFX0JPVU5ERURfUE9JTlRFUl9UWVBFX1AsIE1BWUJFX0JPVU5ERURfUkVGRVJFTkNFX1RZUEVfUCwKCVRSRUVfQk9VTkRFRCwgVFlQRV9NQUlOX1ZBUklBTlRTX1BIWVNJQ0FMTFlfRVFVQUxfUCwKCVRZUEVfTUFJTl9QSFlTSUNBTF9WQVJJQU5ULCBUWVBFX0JPVU5ERUQpOiBOZXcgbWFjcm9zLgoJKFRZUEVfUVVBTF9CT1VOREVEKTogTmV3IGNvbnN0YW50LgoJKFRZUEVfUVVBTFMpOiBIYW5kbGUgYm91bmRlZCBxdWFsaWZpZXIuCgkoVFJFRV9FWFBSX1FVQUxTLCBUUkVFX0ZVTkNfUVVBTFMpOiBOZXcgbWFjcm9zLgoJKFRZUEVfQk9VTkRFRF9WQUxVRSwgVFlQRV9CT1VOREVEX0JBU0UsIFRZUEVfQk9VTkRFRF9FWFRFTlQsCglUWVBFX0JPVU5ERURfU1VCVFlQRSwgVFlQRV9VTkJPVU5ERURfVkFSSUFOVCwgVFlQRV9QT0lOVEVSX0RFUFRILAoJVFlQRV9BTUJJRU5UX0JPVU5ERURORVNTKTogTmV3IG1hY3Jvcy4KCShNQVhfUE9JTlRFUl9ERVBUSCwgVkFfTElTVF9QT0lOVEVSX0RFUFRIKTogTmV3IGNvbnN0YW50cy4KCSh0cmVlX3R5cGUpOiBBZGQgcG9pbnRlcl9kZXB0aCBtZW1iZXIuICBSZW1vdmUKCWluYWNjdXJhdGUgY29tbWVudCBhYm91dCBudW1iZXIgb2YgcmVtYWluaW5nIGJpdHMuCgkoREVDTF9QT0lOVEVSX0RFUFRIKTogQWRkIG1hY3JvLgoJKHRyZWVfZGVjbCk6IEFkZCBwb2ludGVyX2RlcHRoIG1lbWJlci4KCldlZCBNYXkgIDMgMjI6NTI6NTMgMjAwMCAgRGVuaXMgQ2hlcnR5a292ICA8ZGVuaXNjQG92ZXJ0YS5ydT4KCgkqIGNvbmZpZy9hdnIvYXZyLXByb3Rvcy5oICh0ZXN0X2hhcmRfcmVnX2NsYXNzKTogRGVjbGFyZWQuCgkqIGNvbmZpZy9hdnIvYXZyLmMgKGFzaHJoaTNfb3V0KTogb3B0aW1pemVkIHNoaWZ0IGJ5IDE1LgoJKGxzaHJoaTNfb3V0KTogTGlrZXdpc2UuCgkoYXNocnNpM19vdXQpOiBidWdmaXggaW4gc2hpZnQgYnkgOC4KCSh0ZXN0X2hhcmRfcmVnX2NsYXNzKTogTmV3IGZ1bmN0aW9uLgoJKiBjb25maWcvYXZyL2F2ci5tZDogQnVnZml4IGluc2lkZSBjb25kaXRpb25zIGluIHBlZXBob2xlcy4KCShhc2hsaGkzKTogcmVtb3ZlZCBkZWZpbmVfZXhwYW5kIG9mIHRoaXMgcGF0dGVybi4KCSgqYXNobGhpM19pbnNuKTogcmVuYW1lZCB0byBhc2hsaGkzLgoJKGFzaGxzaTMpOiByZW1vdmVkIGRlZmluZV9leHBhbmQgb2YgdGhpcyBwYXR0ZXJuLgoJKCphc2hsc2kzX2luc24pOiByZW5hbWVkIHRvIGFzaGxzaTMuCgkoYXNocnFpMyk6IHJlbW92ZWQgZGVmaW5lX2V4cGFuZCBvZiB0aGlzIHBhdHRlcm4uCgkoKmFzaHJxaTNfaW5zbik6IHJlbmFtZWQgdG8gYXNocnFpMy4KCShhc2hyaGkzKTogcmVtb3ZlZCBkZWZpbmVfZXhwYW5kIG9mIHRoaXMgcGF0dGVybi4KCSgqYXNocmhpM19pbnNuKTogcmVuYW1lZCB0byBhc2hyaGkzLgoJKGFzaHJzaTMpOiByZW1vdmVkIGRlZmluZV9leHBhbmQgb2YgdGhpcyBwYXR0ZXJuLgoJKCphc2hyc2kzX2luc24pOiByZW5hbWVkIHRvIGFzaHJzaTMuCgkobHNocmhpMyk6IHJlbW92ZWQgZGVmaW5lX2V4cGFuZCBvZiB0aGlzIHBhdHRlcm4uCgkoKmxzaHJoaTNfaW5zbik6IHJlbmFtZWQgdG8gbHNocmhpMy4KCShsc2hyc2kzKTogcmVtb3ZlZCBkZWZpbmVfZXhwYW5kIG9mIHRoaXMgcGF0dGVybi4KCSgqbHNocnNpM19pbnNuKTogcmVuYW1lZCB0byBsc2hyc2kzLgoKMjAwMC0wNS0wMyAgUm9kbmV5IEJyb3duICA8Um9kbmV5QnJvd25AcG1zYy5jb20+CgoJKiBjb25maWcvbWNvcmUvbWNvcmUuYzogUmVwbGFjaW5nIGluY2x1c2lvbiBvZiAic3RkaW8saCIgd2l0aAoJaW5jbHVzaW9uIG9mICJzeXN0ZW0uaCIuCgpXZWQgTWF5ICAzIDExOjQzOjUzIDIwMDAgIEppbSBXaWxzb24gIDx3aWxzb25AY3lnbnVzLmNvbT4KCgkqIGNvbmZpZy9pYTY0L2lhNjQuYyAoaWE2NF9lbmNvZGVfc2VjdGlvbl9pbmZvKTogQWRkIGNoZWNrIGZvcgoJVFJFRV9BU01fV1JJVFRFTi4KCjIwMDAtMDUtMDMgIERhdmlkIE1vc2JlcmdlciAgPGRhdmlkbUBocGwuaHAuY29tPgoKCSogY29uZmlnL2lhNjQvaWE2NC5jIChpYTY0X292ZXJyaWRlX29wdGlvbnMpOiBGb3JjZSAtbWNvbnN0YW50LWdwCglpZiAtbWF1dG8tcGljIGlzIG9uLgoJKGlhNjRfZXBpbG9ndWVfdXNlcyk6IE1hcmsgImdwIiAocjEpIGFzIHVzZWQgYnkgdGhlIGVwaWxvZ3VlIGlmCgktbWNvbnN0YW50LWdwIGlzIGluIGVmZmVjdCBhbmQgZnVuY3Rpb24tZGVzY3JpcHRvcnMgYXJlIGJlaW5nIHVzZWQKCXRvIG1ha2UgaW5kaXJlY3QgY2FsbHMuCgkqIGNvbmZpZy9pYTY0L2lhNjQuaCAoTUFTS19DT05TVF9HUCk6IE5ldyBtYWNyby4KCShNQVNLX0FVVE9fUElDKTogRGl0dG8uCgkoVEFSR0VUX0NPTlNUX0dQKTogRGl0dG8uCgkoVEFSR0VUX0FVVE9fUElDKTogRGl0dG8uCgkoVEFSR0VUX1NXSVRDSEVTKTogQWRkIC1tY29uc3RhbnQtZ3AgYW5kIC1tYXV0by1waWMgb3B0aW9ucy4KCShBU01fT1VUUFVUX0RPVUJMRV9JTlQpOiBEb24ndCBnZW5lcmF0ZSBAZnB0cigpIGlmIC1tYXV0by1waWMgb3IKCS1tbm8tcGljIGlzIGluIGVmZmVjdC4KCShBU01fT1VUUFVUX1hEQVRBX0RPVUJMRV9JTlQpOiBEaXR0by4KCSogY29uZmlnL2lhNjQvaWE2NC5tZCAobW92ZGkpOiBVc2UgZ2VuX2xvYWRfZ3ByZWw2NCgpIGlmCgktbWF1dG8tcGljIGlzIGluIGVmZmVjdC4KCShncHJlbDY0X29mZnNldCk6IE5ldyBwYXR0ZXJuLgoJKGxvYWRfZ3ByZWw2NCk6IERpdHRvLgoJKGNhbGwpOiBIYW5kbGUgLW1hdXRvLXBpYyBsaWtlIC1tbm8tcGljIChkb24ndCB1c2UgZnB0cikuICBJZgoJLW1jb25zdGFudC1ncCBpcyBpbiBlZmZlY3QsIG5vIG5lZWQgdG8gcHJlc2VydmUgZ3AgYXJvdW5kIGRpcmVjdAoJY2FsbHMuCgkoY2FsbF92YWx1ZSk6IERpdHRvLgoJKiBjb25maWcvaWE2NC9saW51eC5oIChQUk9GSUxFX0JFRk9SRV9QUk9MT0dVRSk6IERlZmluZS4KCShGVU5DVElPTl9QUk9GSUxFUik6IERlZmluZS4KCSogY29uZmlnL2lhNjQvc3lzdjQuaCAoQVNNX09VVFBVVF9DT05TVFJVQ1RPUik6IERvbid0IGdlbmVyYXRlCglAZnB0cigpIGRpcmVjdGl2ZSB3aGVuIC1tbm8tcGljIG9yIC1tYXV0by1waWMgaXMgaW4gZWZmZWN0LgoJKEFTTV9PVVRQVVRfREVTVFJVQ1RPUik6IERpdHRvLgoKMjAwMC0wNS0wMyAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAY3lnbnVzLmNvbT4KCgkqIE1ha2VmaWxlLmluIChTVEFHRVNUVUZGKTogQWRkIGxpYmdjYyBsaWJnY2MubWsuCgkobGliZ2NjMS5udWxsLCBsaWJnY2MxLmNyb3NzLCBsaWJnY2MxLmEpOiBSZW1vdmUgdGFyZ2V0cy4KCShsaWJnY2MxLWFzbS5hLCBsaWJnY2MxLlMsIGxpYmdjYzIuYSk6IFJlbW92ZSB0YXJnZXRzLgoJKG1rbGliZ2NjLCBsaWJnY2MubWspOiBOZXcgdGFyZ2V0cy4KCShsaWJnY2MuYSk6IFVzZSBsaWJnY2MubWsuCgkoc3RtcC1tdWx0aWxpYik6IExpa2V3aXNlLgoJKHN0bXAtbXVsdGlsaWItc3ViKTogUmVtb3ZlLgoJKG1vc3RseWNsZWFuKTogRG9uJ3QgZGVsZXRlIGxpYmdjYzIgdGVtcCBmaWxlcy4KCSogY29uZmlndXJlLmluIChBQ19QUk9HX0NDX0NfTyk6IEFkZC4KCShOT19NSU5VU19DX01JTlVTX08pOiBTdWJzdGl0dXRlIGl0LgoJKGFsbF9vdXRwdXRzKTogQWRkIG1rbGliZ2NjLgoJKiBta2xpYmdjYy5pbjogTmV3IGZpbGUuCgoyMDAwLTA1LTAzICBKYXNvbiBNZXJyaWxsICA8amFzb25AY2FzZXkuY3lnbnVzLmNvbT4KCgkqIGNwcGV4cC5jIChvcF90KTogTWFrZSBhbiBpbnQuCgoJKiBydGxhbmFsLmMgKGRlYWRfb3Jfc2V0X3JlZ25vX3ApOiBSZW1vdmUgdW51c2VkIHZhcmlhYmxlLgoKCSogdmFyYXNtLmMgKGluaXRpYWxpemVyX2NvbnN0YW50X3ZhbGlkX3ApOiBGaXggcGFyZW50aGVzaXMuCgoJKiBnZW5zdXBwb3J0LmMgKHByb2Nlc3NfcnR4KTogRml4IG1hY3JvcyB1c2VkLgoKMjAwMC0wNS0wMyAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAY3lnbnVzLmNvbT4KCgkqIGZsb3cuYyAocHJvcGFnYXRlX29uZV9pbnNuKTogQWxzbyBkb24ndCBQUk9QX1JFR19JTkZPIGZvcgoJY2FsbC1jbG9iYmVyZWQgcmVnaXN0ZXJzIG9mIGEgY2FsbC4KCldlZCBNYXkgIDMgMTI6NDA6NTMgMjAwMCAgQ2xpbnRvbiBQb3BldHogIDxjcG9wZXR6QGN5Z251cy5jb20+CgoJKiBnZW5zdXBwb3J0LmM6IE5ldyBmaWxlLgoJKiBnZW5zdXBwb3J0Lmg6IE5ldyBmaWxlLgoJKiBNYWtlZmlsZS5pbiAoSE9TVF9SVEwpOiBEZXBlbmQgb24gZ2Vuc3VwcG9ydC4KCShnZW5zdXBwb3J0Lm8pIE5ldyBydWxlLgoJKiBnZW5hdHRyLmM6IFVzZSBnZW5zdXBwb3J0IGZvciByZWFkaW5nIC5tZCBmaWxlcy4KCSogZ2VuYXR0cnRhYi5jOiBEaXR0by4KCSogZ2VuY29kZXMuYzogRGl0dG8uCgkqIGdlbmNvbmZpZy5jOiBEaXR0by4KCSogZ2VuZW1pdC5jOiBEaXR0by4KCSogZ2VuZXh0cmFjdC5jOiBEaXR0by4KCSogZ2VuZmxhZ3MuYzogRGl0dG8uCgkqIGdlbm9waW5pdC5jOiBEaXR0by4KCSogZ2Vub3V0cHV0LmM6IERpdHRvLgoJKiBnZW5wZWVwLmM6IERpdHRvLgoJKiBnZW5yZWNvZy5jOiBEaXR0by4KCSogcnRsLmRlZiAoZGVmaW5lX2luc25fYW5kX3NwbGl0KTogTmV3IERFRl9SVExfRVhQUi4KCSogbWQudGV4aSAoSW5zbiBTcGxpdHRpbmcpOiBEb2N1bWVudCBkZWZpbmVfaW5zbl9hbmRfc3BsaXQuCgpUdWUgTWF5ICAyIDAwOjIwOjMwIDIwMDAgIEphc29uIEVja2hhcmR0ICA8amxlQGN5Z251cy5jb20+CgoJKiBmbG93LmMgKHZlcmlmeV9mbG93X2luZm8pOiBBZGRlZCB0d28gbW9yZSBzYW5pdHkgY2hlY2tzLiBUaGUKCWZpcnN0IGNoZWNrcyB0aGF0IHRoZSBibG9ja3MgYXJlIG51bWJlcmVkIGNvbnNlY3V0aXZlbHkuIFRoZSBzZWNvbmQKCWNoZWNrcyB0aGF0IG5fYmFzaWNfYmxvY2tzIGlzIGFjdHVhbGx5IGVxdWFsIHRvIHRoZSBudW1iZXIgb2YKCWJhc2ljIGJsb2NrcyBpbiB0aGUgaW5zbiBjaGFpbi4KCjIwMDAtMDUtMDMgIFphY2sgV2VpbmJlcmcgIDx6YWNrQHdvbGVyeS5jdW1iLm9yZz4KCgkqIGNwcGxpYi5oOiBBZGQgYWNjZXNzb3IgbWFjcm9zIGZvciB0b2tlbiBsaXN0cy4KCSogY3BwbGliLmMsIGNwcGhhc2guYywgY3BwbGV4LmM6IFVzZSB0aGVtLgoKV2VkIE1heSAgMyAwOToyOToxNyAyMDAwICBSaWNoYXJkIEtlbm5lciAgPGtlbm5lckB2bHNpMS51bHRyYS5ueXUuZWR1PgoKCSogZXhwci5jIChleHBhbmRfZXhwciwgY2FzZSBDT01QT05FTlRfUkVGKTogRG9uJ3QgY2hlY2sgZm9yIGNoZWNraW5nCgltZW1vcnkgdXNhZ2UgaWYgbm90IGluIGEgZnVuY3Rpb24uCgkqIHZhcmFzbS5jIChpbml0aWFsaXplcl9jb25zdGFudF92YWxpZF9wLCBjYXNlIEFERFJfRVhQUik6IE9ubHkKCXJldHVybiBhZGRyZXNzIGlmIHN0YXRpYy4KCldlZCBNYXkgIDMgMTM6MTQ6NDkgTUVUIERTVCAyMDAwICBKYW4gSHViaWNrYSAgPGpoQHN1c2UuY3o+CgoJKiBpZmN2dC5jIChub2NlX3RyeV9jbW92ZV9hcml0aCk6ICBVc2UgbWF5X3RyYXBfcCB0byB0aGVzdAoJd2hldGhlciBhZGRyZXNzIG1heSB0cmFwLgoKVHVlIE1heSAgMiAyMzozODozNyAyMDAwICBKYXNvbiBFY2toYXJkdCAgPGpsZUBjeWdudXMuY29tPgoKCSogYmItcmVvcmRlciAoY2hhaW5fcmVvcmRlcl9ibG9ja3MpOiBDaGFuZ2VkIGNvZGUgdG8gdGVzdCBmb3IKCUVER0VfRkFMTFRIUlUgcmF0aGVyIHRoYW4gbWFraW5nIGVycm9uZW91cyBhc3N1bXB0aW9uIHRoYXQgdGhlCglmaXJzdCBvdXRnb2luZyBlZGdlIGlzIHRoZSBmYWxsLXRocm91Z2ggZWRnZS4KClR1ZSBNYXkgIDIgMTg6MjA6MzEgMjAwMCAgRG9uYWxkIExpbmRzYXkgIDxkbGluZHNheUBob3VuZC5jeWdudXMuY29tPgoKCSogY29uZmlnL21pcHMvbWlwcy5jIChtaXBzX2J1aWxkX3ZhX2xpc3QsbWlwc192YV9zdGFydCxtaXBzX3ZhX2FyZyk6IG5ldwoJQUJJIGZvciB2YXJhcmdzLCBhY3Jvc3MgYWxsIE1JUFMuIFRoaXMgaXMgaW5jb21wYXRpYmxlIGJlY2F1c2UgdGhlCgl2YV9saXN0IChfX2J1aWx0aW5fdmFfbGlzdCkgc3RydWN0dXJlIGlzIGRpZmZlcmVudCwgc28gYSBjb21waWxhdGlvbgoJdW5pdCBwYXNzaW5nIGEgdmFfbGlzdCBhbmQgYSBjb21waWxhdGlvbiB1bml0IGJlaW5nIHBhc3NlZCBvbmUsIHNob3VsZAoJYm90aCBiZSBjb21waWxlZCB3aXRoIHRoZSBzYW1lIEFCSS4gKFRoZSBvbGQgc3RydWN0dXJlIGhhZCB0d28KCXBvaW50ZXJzLCBub3cgaXQgaGFzIHRocmVlLikKClR1ZSBNYXkgIDIgMTk6MTg6NDMgMjAwMCAgSmFzb24gRWNraGFyZHQgIDxqbGVAY3lnbnVzLmNvbT4KCgkqIGJiLXJlb3JkZXIuYyAoc3RydWN0IHJlb3JkZXJfYmxvY2tfZGVmKTogUmVtb3ZlIG1lbWJlcnMgZW5kLAoJYmxvY2tfYmVnaW4sIGFuZCBibG9ja19lbmQuCgkoUkVPUkRFUl9CTE9DS19PTERfRU5EKTogRGVsZXRlLgoJKFJFT1JERVJfQkxPQ0tfQkVHSU4pOiBEZWxldGUuCgkoUkVPUkRFUl9CTE9DS19FTkQpOiBEZWxldGUuCgkoY2hhaW5fcmVvcmRlcl9ibG9ja3MpOiBSZW1vdmUgZGVhZCBjb2RlLgoKVHVlIE1heSAgMiAxNzowNjo1MyAyMDAwICBKYXNvbiBFY2toYXJkdCAgPGpsZUBjeWdudXMuY29tPgoKCSogYmItcmVvcmRlci5jIChyZW1vdmVfc2NvcGVfbm90ZXMpOiBDaGVjayBmb3IgYm90aCB0eXBlcyBvZiBzY29wZQoJbm90ZXMgYXMgdGhlIGVuZCBvZiBhIGJhc2ljIGJsb2NrIGJlZm9yZSBkZWxldGluZy4KCjIwMDAtMDUtMDIgIE11bWl0IEtoYW4gIDxraGFuQHhyYXlsaXRoLndpc2MuZWR1PgoKCSogZmluYWwuYyAoZmluYWxfc3RhcnRfZnVuY3Rpb24pOiBGaXggc3BlbGxpbmcgb2YgIm5lY2Vzc2FyeSIuCgoyMDAwLTA1LTAyICBKYXNvbiBNZXJyaWxsICA8amFzb25AY2FzZXkuY3lnbnVzLmNvbT4KCgkqIHRvcGxldi5jIChkZWJ1Z19pZ25vcmVfYmxvY2spOiBSZXR1cm4gaW50LgoJKiBkd2FyZjJvdXQuYyAoZHdhcmYyb3V0X2lnbm9yZV9ibG9jayk6IExpa2V3aXNlLgoJKiB0b3BsZXYuaCwgZHdhcmYyb3V0Lmg6IEFkanVzdC4KCSogZW1pdC1ydGwuYyAocmVtb3ZlX3VubmVjZXNzYXJ5X25vdGVzKTogVGVzdCByZXR1cm4gdmFsdWUuCgoJKiBlbWl0LXJ0bC5jIChyZW1vdmVfdW5uZWNlc3Nhcnlfbm90ZXMpOiBGaXggc3BlbGxpbmcgb2YgIm5lY2Vzc2FyeSIuCgkqIHRvcGxldi5jLCBmaW5hbC5jLCBydGwuaDogQWRqdXN0LgoKMjAwMC0wNS0wMiAgWmFjayBXZWluYmVyZyAgPHphY2tAd29sZXJ5LmN1bWIub3JnPgoKCSogYWNsb2NhbC5tNCAoZ2NjX0FDX0NIRUNLX1BST0dfVkVSKTogTmV3IG1hY3JvLgoJKiBjb25maWd1cmUuaW46IExvb2sgZm9yIG1ha2VpbmZvIGluIHRoZSB1bmlmaWVkIHRyZWUsIHRoZW4KCWZvciBhIHN5c3RlbSBtYWtlaW5mbyB3aGljaCBpcyBzdWZmaWNpZW50bHkgbmV3LgoJKiBNYWtlZmlsZS5pbjogSWYgY29uZmlndXJlIHNheXMgbWFrZWluZm8gaXMgdG9vIG9sZCwgZG9uJ3QKCWJ1aWxkIG9yIGluc3RhbGwgSW5mbyBkb2N1bWVudGF0aW9uLgoKMjAwMC0wNS0wMiAgWmFjayBXZWluYmVyZyAgPHphY2tAd29sZXJ5LmN1bWIub3JnPgoKCSogY3BwaGFzaC5jIChjb2xsZWN0X3BhcmFtcyk6IEZpeCBvZmYtYnktb25lIGVycm9yLgoJKGR1bXBfaGFzaF9oZWxwZXIpOiBEdW1wIGFsbCBmb3VyIG1hY3JvIG5vZGV0eXBlcy4KCjIwMDAtMDUtMDIgIEpha3ViIEplbGluZWsgIDxqYWt1YkByZWRoYXQuY29tPgoKCSogY3BwaGFzaC5jICh0cmFkX3N0cmluZ2lmeSk6IEFkanVzdCBwIGFmdGVyIHN0cmluZ2lmaWNhdGlvbiBhcwoJd2VsbC4KCjIwMDAtMDUtMDIgIFphY2sgV2VpbmJlcmcgIDx6YWNrQHdvbGVyeS5jdW1iLm9yZz4KCgkqIGNwcGxpYi5oIChDUFBfUE9QLCBwYXJzZV9jbGVhbnVwX3QpOiBEZWxldGUuCgkoY3BwX2J1ZmZlcik6IFJlbW92ZSBjbGVhbnVwLCBzZWVuX2VvZiwgbWFudWFsX3BvcCBtZW1iZXJzLgoKCSogY3BwZmlsZXMuYyAoZmlsZV9jbGVhbnVwKTogRGVsZXRlLgoJKiBjcHBoYXNoLmMgKG1hY3JvX2NsZWFudXApOiBEZWxldGUuCgkoY29sbGVjdF9vYmpsaWtlX2V4cGFuc2lvbiwgY29sbGVjdF9mdW5saWtlX2V4cGFuc2lvbiwKCW1hY2FyZywgc2Nhbl9hcmd1bWVudHMpOiBSZW1vdmUgQ1BQX1BPUCBjYXNlLgoKCSogY3BwbGV4LmMgKG51bGxfY2xlYW51cCk6IERlbGV0ZS4KCShjcHBfcG9wX2J1ZmZlcik6IERvIHRoZSB3b3JrIHRoYXQgd2FzIGRvbmUgaW4gdGhlIGNsZWFudXBzCgloZXJlLiAgQ2FsbCBfY3BwX3Vud2luZF9pZl9zdGFjayBmcm9tIGhlcmUuCgkoX2NwcF9leHBhbmRfdG9fYnVmZmVyLCBjcHBfc2Nhbl9idWZmZXJfbm9vdXRwdXQsCgljcHBfc2Nhbl9idWZmZXIpOiBSdW4gdW50aWwgd2Ugc2VlIENQUF9FT0YgYW5kIHRoZSB0b3Agb2YKCXN0YWNrIGlzIHRoZSBidWZmZXIgX2JlbG93XyB0aGUgb25lIHdlIHN0YWNrZWQuCgkoY3BwX2dldF90b2tlbik6IEFsd2F5cyBwb3AgYW4gZXhoYXVzdGVkIGJ1ZmZlci4gIFJldHVybgoJQ1BQX0VPRiB1bmxlc3MgaXQncyBhIG1hY3JvIGJ1ZmZlci4gIERvbid0IGNhbGwgX2NwcF9oYW5kbGVfZW9mLgoJKiBjcHBsaWIuYyAoc2tpcF9pZl9ncm91cCk6IERvbid0IGNhbGwgY3BwX2dldF90b2tlbiB0bwoJaW5jcmVtZW50IHRoZSBsaW5lIG51bWJlci4KCShfY3BwX2hhbmRsZV9lb2YpOiBSZW5hbWUgdG8gX2NwcF91bndpbmRfaWZfc3RhY2suCgoJKiBmaXgtaGVhZGVyLmMgKHJlYWRfc2Nhbl9maWxlKSBbcGFyc2luZyBnZXRjaGFyKCldOiBSdW4gdW50aWwKCXdlIHNlZSBDUFBfRU9GIGFuZCB0aGUgdG9wIG9mIHN0YWNrIGlzIHRoZSBidWZmZXIgX2JlbG93XyB0aGUKCW9uZSB3ZSBzdGFja2VkLgoJKiBzY2FuLWRlY2xzLmM6IExpa2V3aXNlLgoKMjAwMC0wNS0wMiAgQW5kcmV3IEhhbGV5ICA8YXBoQGN5Z251cy5jb20+CgoJKiBjb25maWcvaWE2NC9pYTY0LmMgKGlhNjRfZW5jb2RlX3NlY3Rpb25faW5mbyk6IEhhbmRsZSB0aGUgY2FzZQoJd2hlcmUgdGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgZm9yIHRoZSBzZWNvbmQgdGltZSBvbiBhIGRlY2wgdGhhdAoJaGFzIGhhZCBpdHMgc2VjdGlvbiBpbmZvIGNoYW5nZWQgaW4gc3VjaCBhIHdheSBhcyB0byBtb3ZlIGl0IG91dAoJb2Ygc21hbGwgZGF0YS9ic3MuCgkqIGNvbmZpZy9pYTY0L2lhNjQuaCAoUkVET19TRUNUSU9OX0lORk9fUCk6IE5ldyBkZWZpbml0aW9uLgoKMjAwMC0wNS0wMSAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAY3lnbnVzLmNvbT4KCgkqIGlmY3Z0LmMgKGRlYWRfb3JfcHJlZGljYWJsZSk6IFNldCBtZXJnZV9iYi0+ZW5kIHRvIHRoZSBpbnNuIGJlZm9yZQoJdGhlIHNlcXVlbmNlIHdlJ3JlIG1vdmluZywgbm90IHRvIG1lcmdlX2JiLT5oZWFkLgoKMjAwMC0wNS0wMSAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAY3lnbnVzLmNvbT4KCgkqIGNvbmZpZ3VyZS5pbiAoYWxwaGEqLSotbGludXgtZ251bGliYzEqKSBbdG1ha2VfZmlsZV06IFJlbW92ZQoJcmVmZXJlbmNlIHRvIGFscGhhL3QtbGludXguCgkoYWxwaGEqLSotbGludXgtZ251Kik6IExpa2V3aXNlLgoJKiBjb25maWd1cmU6IFJlYnVpbGQuCgoJKiBjYWxscy5jIChleHBhbmRfY2FsbCk6IERvbid0IGVtaXQgcmVnIG5vdGVzIGZvciBhIHNpYmNhbGwuCgoJKiBmbG93LmMgKGNhbGN1bGF0ZV9nbG9iYWxfcmVnc19saXZlKTogU2tpcCBmb3JfZWFjaF9zdWNjZXNzb3JfcGhpCglpZiBub3QgaW4gU1NBIGZvcm0uCgoJKiBpZmN2dC5jIChpZl9jb252ZXJ0KTogT25seSB2ZXJpZnlfZmxvd19pbmZvIGlmIEVOQUJMRV9DSEVDS0lORy4KCjIwMDAtMDUtMDEgIEphc29uIE1lcnJpbGwgIDxqYXNvbkBjYXNleS5jeWdudXMuY29tPgoKCSogaW50ZWdyYXRlLmMgKGNvcHlfZGVjbF9mb3JfaW5saW5pbmcpOiBDb3B5IFRSRUVfUkVBRE9OTFkgYW5kCglUUkVFX1RISVNfVk9MQVRJTEUuCgoyMDAwLTA1LTAxICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEBjeWdudXMuY29tPgoKCSogaWZjdnQuYyAobm9jZV9lbWl0X2Ntb3ZlKTogQ29uZGl0aW9uYWxseSBjb21waWxlIGNhbGwgdG8KCWVtaXRfY29uZGl0aW9uYWxfbW92ZS4KCjIwMDAtMDUtMDEgIEpha3ViIEplbGluZWsgIDxqYWt1YkByZWRoYXQuY29tPgoKCSogY29uZmlnL2lhNjQvbGludXguaCAoTElOS19TUEVDKTogVXNlIC9saWIvbGQtbGludXgtaWE2NC5zby4xCglhcyB0aGUgZHluYW1pYyBsaW5rZXIuCgoyMDAwLTA1LTAxICBaYWNrIFdlaW5iZXJnICA8emFja0B3b2xlcnkuY3VtYi5vcmc+CgoJKiBjcHBmaWxlcy5jIChvcGVuX2luY2x1ZGVfZmlsZSk6IE9wZW4gZmlsZSBpbiBibG9ja2luZyBtb2RlLgoJKHJlYWRfaW5jbHVkZV9maWxlKTogRG9uJ3QgZmNudGwoZmQsIEZfU0VURkwsIDApIGFueW1vcmUuCglPbmx5IGV4Y2x1ZGUgYmxvY2sgZGV2aWNlcyBhbmQgZGlyZWN0b3JpZXMuCgoJKiBjcHBoYXNoLmMgKF9jcHBfbWFrZV9oYXNobm9kZSk6IFJlbmFtZSBtYWtlX0hBU0hOT0RFLCBub3cKCXN0YXRpYy4gIEFsbG9jYXRlIHRoZSBoYXNobm9kZSBhbmQgaXRzIHN0cmluZyBpbiB0aGUgc2FtZQoJYmxvY2sgb2YgbWVtb3J5LgoJKGRlbF9IQVNITk9ERSk6IERvbid0IGZyZWUgaC0+bmFtZS4KCShfY3BwX2xvb2t1cCk6IElmIHRoZXJlIGlzIG5vIGVudHJ5IGZvciB0aGlzIHN0cmluZywgY3JlYXRlCglvbmUsIG9mIHR5cGUgVF9WT0lELgoJKF9jcHBfbG9va3VwX3Nsb3QpOiBEZWxldGUuCgkqIGNwcGhhc2guaDogVXBkYXRlIHByb3RvdHlwZXMuCgoJKiBjcHBsZXguYyAobWF5YmVfbWFjcm9leHBhbmQpOiBDaGVjayBmb3IgaHAtPnR5cGUgPT0gVF9WT0lELAoJbm90IGhwID09IE5VTEwuCgkqIGNwcGxpYi5jIChkb19kZWZpbmUsIGRvX3VuZGVmLCBkb19wcmFnbWFfcG9pc29uLCBkb19hc3NlcnQsCglkb191bmFzc2VydCwgY3BwX2RlZmluZWQpOiBVc2UgX2NwcF9sb29rdXAuICBEb24ndCBjcmVhdGUgYQoJbm9kZSBoZXJlLCBqdXN0IGZpbGwgaW4gdGhlIHZhbHVlIGZpZWxkIHByb3Blcmx5LiAgIkRlbGV0ZSIKCWVudHJpZXMgYnkgc2V0dGluZyB0aGUgdmFsdWUgZmllbGQgdG8gVF9WT0lELiAgQ2hlY2sgZm9yCglocC0+dHlwZSA9PSBUX1ZPSUQsIG5vdCBocCA9PSBOVUxMLgoKCSogTWFrZWZpbGUuaW4gKGNwcGxpYi5vKTogRG9uJ3QgZGVwZW5kIG9uICQoSEFTSFRBQl9IKS4KCSogY3BwZXJyb3IuYywgY3BwZXhwLmMsIGNwcGxleC5jLCBjcHBsaWIuYzogIERvbid0IGluY2x1ZGUKCWhhc2h0YWIuaC4KCjIwMDAtMDUtMDEgIEFsZXhhbmRyZSBPbGl2YSAgPGFvbGl2YUBjeWdudXMuY29tPgoKCSogY29uZmlnL21uMTAzMDAvbW4xMDMwMC5jIChwcmludF9vcGVyYW5kX2FkZHJlc3MpOiBEbyBub3QgYWRkCgl6ZXJvIHRvIFNQLgoKCSogY29uZmlnL21uMTAzMDAvbW4xMDMwMC5jIChleHBhbmRfZXBpbG9ndWUpOiBJZiBTUCBpcyB0byBiZQoJYWRqdXN0ZWQgYnkgbGVzcyB0aGFuIDI1NiBieXRlcywgdXNlIHJldCByZWdhcmRsZXNzIG9mIGhhdmluZyBhbnkKCWNhbGxlZS1zYXZlZCByZWdpc3RlciB0byByZXN0b3JlLgoKMjAwMC0wNS0wMSBMYXVyeW5hcyBCaXZlaW5pcyA8bGF1cmFzQHNvZnRob21lLm5ldD4KCgkqIHRtLnRleGkgKFRBUkdFVF9IQVNfRl9TRVRGTEtXKTogRml4IHR5cG8uCgoyMDAwLTA1LTAxIE1hcmsgRWxicmVjaHQgPHNub3diYWxsM0BiaWdmb290LmNvbT4KCgkqIGNvbmZpZy9pMzg2L2RqZ3BwLmggKElOVF9BU01fT1ApOiBEZWZpbmUuCgkoQ1BQX1BSRURFRklORVMpOiBSZW5hbWUgTVNET1MgdG8gX19NU0RPU19fLgoJKEFTTV9XRUFLRU5fTEFCRUwpOiBEZWZpbmUuCgkoTUFTS19CTlUyMTApOiBEZWZpbmUuCgkoU1VCVEFSR0VUX1NXSVRDSEVTKTogRGVmaW5lLgoJKFNVUFBPUlRTX1dFQUssIFNVUFBPUlRTX09ORV9PTkxZKTogRGVmaW5lLgoJKE1BS0VfREVDTF9PTkVfT05MWSk6IERlZmluZS4KCShVTklRVUVfU0VDVElPTl9QLCBVTklRVUVfU0VDVElPTik6IERlZmluZS4KCjIwMDAtMDUtMDEgIE11bWl0IEtoYW4gIDxraGFuQHhyYXlsaXRoLndpc2MuZWR1PgoKCSogaTM4Ni9jeWd3aW4uaCAoSU5UX0FTTV9PUCk6IERlZmluZS4KCk1vbiBNYXkgIDEgMTg6MjA6MDYgMjAwMCAgRGVuaXMgQ2hlcnR5a292ICA8ZGVuaXNjQG92ZXJ0YS5ydT4KCgkqIGNvbmZpZy9hdnIvYXZyLmMgKGFkZHJlc3NfY29zdCk6IHJlbmFtZWQgdG8gYXZyX2FkZHJlc3NfY29zdC4KCSogY29uZmlnL2F2ci9hdnIuaCAoQUREUkVTU19DT1NUKTogdXNlIGF2cl9hZGRyZXNzX2Nvc3QuCgpNb24gTWF5ICAxIDE3OjUwOjQ0IDIwMDAgIERlbmlzIENoZXJ0eWtvdiAgPGRlbmlzY0BvdmVydGEucnU+CgoJKiBjb25maWcvYXZyL2F2ci5jIChhc21fZmlsZV9zdGFydCk6IG91dHB1dCAwIGFzIHIwIGFuZCAxIGFzIHIxIGluCglfX3RtcF9yZWdfXyBhbmQgX196ZXJvX3JlZ19fIGluaXRpYWxpemF0aW9uLgoKMjAwMC0wNC0zMCAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAY3lnbnVzLmNvbT4KCgkqIGZsb3cuYyAocHJvcGFnYXRlX29uZV9pbnNuKTogTWFyayBzZXRzIGV2ZW4gd2hlbiB0aGUgaW5zbiBpcyBkZWFkLgoKCSogaWZjdnQuYyAobm9jZV9wcm9jZXNzX2lmX2Jsb2NrKTogRmFpbCB0aGUgY29udmVyc2lvbiBpZiBYIGlzCglyZWZlcmVuY2VkIGJld3RlZW4gdGhlIGNvbmRpdGlvbiBhbmQgdGhlIGp1bXAuICBEb24ndCBkZWxldGUKCWFueXRoaW5nIGJ1dCB0aGUganVtcC4KClN1biBBcHIgMzAgMjI6NDg6MjQgMjAwMCAgSmFzb24gRWNraGFyZHQgIDxqbGVAY3lnbnVzLmNvbT4KCgkqIGJiLXJlb3JkZXIuYyAoc2NvcGVfZGVmKTogTmV3IHN0cnVjdC4KCShzY29wZV9mb3Jlc3RfaW5mbyk6IE5ldyBzdHJ1Y3QuCgkoc3RydWN0IHJlb3JkZXJfYmxvY2tfZGVmKTogTmV3IG1lbWJlciAic2NvcGUiLgoJKFJFT1JERVJfQkxPQ0tfU0NPUEUpOiBOZXcgbWFjcm8uCgkocmVsYXRlX2Jic193aXRoX3Njb3Blcyk6IE5ldyBmdW5jdGlvbiBhbmQgcHJvdG90eXBlLgoJKG1ha2VfbmV3X3Njb3BlKTogTGlrZXdpc2UuCgkoYnVpbGRfc2NvcGVfZm9yZXN0KTogTGlrZXdpc2UuCgkocmVtb3ZlX3Njb3BlX25vdGVzKTogTGlrZXdpc2UuCgkoaW5zZXJ0X2ludHJhXzEpOiBMaWtld2lzZS4KCShpbnNlcnRfaW50cmFfYmJfc2NvcGVfbm90ZXMpOiBMaWtld2lzZS4KCShpbnNlcnRfaW50ZXJfYmJfc2NvcGVfbm90ZXMpOiBMaWtld2lzZS4KCShyZWJ1aWxkX3Njb3BlX25vdGVzKTogTGlrZXdpc2UuCgkoZnJlZV9zY29wZV9mb3Jlc3RfMSk6IExpa2V3aXNlLgoJKGZyZWVfc2NvcGVfZm9yZXN0KTogTGlrZXdpc2UuCgkoZHVtcF9zY29wZV9mb3Jlc3QpOiBMaWtld2lzZS4KCShkdW1wX3Njb3BlX2ZvcmVzdF8xKTogTGlrZXdpc2UuCgkoY2hhaW5fcmVvcmRlcl9ibG9ja3MpOiBTZXQgUkVPUkRFUl9CTE9DS19TQ09QRSBmb3IgbmV3IGJsb2NrLgoJVXBkYXRlIFJFT1JERVJfQkxPQ0tfRUZGX0hFQUQgYW5kIFJFT1JERVJfQkxPQ0tfRUZGX0VORCBmb3IgbmV3CglibG9jay4KCShyZW9yZGVyX2Jhc2ljX2Jsb2Nrcyk6IEFkZGVkIGNhbGxzIHRvIGJ1aWxkX3Njb3BlX3Njb3BlX2ZvcmVzdAoJYW5kIHJlbW92ZV9zY29wZV9ub3RlcyBiZWZvcmUgcmVvcmRlcmluZyBpcyBkb25lLiBBZGRlZCBjYWxscyB0bwoJcmVidWlsZF9zY29wZV9ub3RlcywgZnJlZV9zY29wZV9mb3Jlc3QsIGFuZCByZW9yZGVyX2Jsb2NrcyBhZnRlcgoJYWZ0ZXIgcmVvcmRlcmluZyBpcyBkb25lLgoKMjAwMC00MC0zMCAgQnJ1Y2UgS29yYiAgPGJrb3JiQGdudS5vcmc+CgoJKiBmaXhpbmMvaW5jbGhhY2suZGVmOiAgQWRkZWQgZGVmaW5pdGlvbnMgbmVlZGVkIGJ5IE9TUjUsCglyZW1vdmVkIHR3byBzdGFsZSBlbnRyaWVzIChkZWZpbmVkIGF3YXkgd2l0aCBPTERfQ1BQKS4KCSogZml4aW5jL2luY2xoYWNrLnNoOiByZWdlbgoJKiBmaXhpbmMvZml4aW5jbC54OiByZWdlbgoKMjAwMC0wNC0zMCAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAY3lnbnVzLmNvbT4KCgkqIGlmY3Z0LmMgKGRlYWRfb3JfcHJlZGljYWJsZSk6IE1hbnVhbGx5IHNxdWVlemUgbm9uLW1vdmFibGUgbm90ZXMKCWZyb20gdGhlIGxhc3QgaW5zbiBpbiB0aGUgc2VxdWVuY2UuCgoyMDAwLTA0LTMwICBaYWNrIFdlaW5iZXJnICA8emFja0B3b2xlcnkuY3VtYi5vcmc+CgoJKiBjcHBsZXguYyAoY3BwX2lkY21wKTogTmV3IGZ1bmN0aW9uLgoJKiBjcHBsaWIuaDogUHJvdG90eXBlIGl0LgoJKiBzY2FuX2RlY2xzLmMgKHNjYW5fZGVjbHMpOiBVc2UgaXQgdG8gaW5zcGVjdCB0b2tlbiBuYW1lcy4KCSogZml4LWhlYWRlci5jIChyZWFkX3NjYW5fZmlsZSk6IExpa2V3aXNlLiAgU2V0IHN5c3RlbV9oZWFkZXJfcCBvbgoJdGhlIGZpbGUgYmVpbmcgcnVuIHRocm91Z2ggdGhlIHByZXByb2Nlc3Nvci4KCShjaGVja19tYWNyb19uYW1lcyk6IFByb3ZpZGUgbGVuZ3RoIG9mIHRva2VuIHRvIGNwcF9kZWZpbmVkLgoKCSogTWFrZWZpbGUuaW46IFJlbW92ZSBzdGFsZSB3YXJuaW5nIG1lc3NhZ2UuCgoJKiBjcHBmaWxlcy5jIChyZWR1bmRhbnRfaW5jbHVkZV9wKTogUHJvdmlkZSBsZW5ndGggb2YgdG9rZW4gdG8KCWNwcF9kZWZpbmVkLgoJKiBjcHBoYXNoLmMgKF9jcHBfbWFrZV9oYXNobm9kZSwgX2NwcF9sb29rdXBfc2xvdCk6IEhhc2gKCXZhbHVlcyBhcmUgdW5zaWduZWQgaW50LgoJKF9jcHBfbG9va3VwLCBfY3BwX2xvb2t1cF9zbG90KTogRG8gbm90IGNhbGN1bGF0ZSB0aGUgbGVuZ3RoLgoJKF9jcHBfbG9va3VwX3Nsb3QpOiBEbyBub3QgY2FsY3VsYXRlIHRoZSBoYXNoLCBlaXRoZXIuCgkqIGNwcGhhc2guaDogVXBkYXRlIHByb3RvdHlwZXMuCgkqIGNwcGxpYi5jIChkb19kZWZpbmUsIGRvX3VuZGVmLCBkb19wcmFnbWFfcG9pc29uLCBkb19hc3NlcnQpOgoJSGFzaGVzIGFyZSB1bnNpZ25lZCBpbnQuICBDYWxjdWxhdGUgaGFzaCBoZXJlLCBwYXNzIGJ5IHZhbHVlCgl0byBfY3BwX2xvb2t1cF9zbG90LgoKMjAwMC0wNC0zMCAgQmVybmQgU2NobWlkdCAgPGJlcm5kc0BjeWdudXMuY28udWs+CgoJKiBzaW1wbGlmeS1ydHguYyAoY2hlY2tfdmFsdWVfdXNlbGVzcyk6IERlbGV0ZSBmdW5jdGlvbi4KCShkaXNjYXJkX3VzZWxlc3NfbG9jcyk6IERvbid0IGNhbGwgaXQ7IG1hbmFnZSBOX1VTRUxFU19WQUxVRVMgY291bnRlcgoJYnkgaGFuZC4KCShjc2VsaWJfaW52YWxpZGF0ZV9yZWdubyk6IExpa2V3aXNlLgoJKGNzZWxpYl9pbnZhbGlkYXRlX21lbV8xKTogTGlrZXdpc2UuCgkocmVmZXJlbmNlc192YWx1ZV9wKTogUmVjb2duaXplIHVzZWxlc3MgdmFsdWVzIGJ5IHRoZSBmYWN0IHRoYXQgdGhleQoJaGF2ZSBubyBsb2NhdGlvbnMuCgkoZGlzY2FyZF91c2VsZXNzX3ZhbHVlcyk6IExpa2V3aXNlLgoJKGNzZWxpYl9yZWNvcmRfc2V0KTogVGhpcyBtYXkgdHVybiBhIHVzZWxlc3MgdmFsdWUKCWludG8gYSB1c2VmdWwgb25lLgoKMjAwMC0wNC0zMCAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAY3lnbnVzLmNvbT4KCgkqIGNvbmZpZy9kMzB2OiBOZXcgcG9ydC4KCgkqIGNvbmZpZ3VyZS5pbiAoZDMwdi0qKTogU2V0IGZwIGZvcm1hdC4KCSogY29uZmlndXJlOiBSZWJ1aWxkLgoKMjAwMC0wNC0zMCAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAY3lnbnVzLmNvbT4KCgkqIGlmY3Z0LmM6IE5ldyBmaWxlLgoJKiBNYWtlZmlsZS5pbiAoT0JKUyk6IEFkZCBpdC4KCShpZmN2dC5vKTogTmV3IHRhcmdldC4KCSoganVtcC5jIChqdW1wX29wdGltaXplXzEpOiBSZW1vdmUgYWxsIGNvZGUgcmVsYXRlZCB0byBpZi1jb252ZXJzaW9uLAoJYW5kIGNvbmRpdGlvbmFsIGFyaXRobWV0aWMuCgkoZmluZF9pbnNlcnRfcG9zaXRpb24pOiBSZW1vdmUuCgkqIHRpbWV2YXIuZGVmIChUVl9JRkNWVCwgVFZfSUZDVlQyKTogTmV3LgoJKiB0b3BsZXYuYyAoREZJX2NlLCBERklfY2UyKTogTmV3LgoJKGR1bXBfZmlsZSk6IEFkZCBjZSBhbmQgY2UyIGR1bXBzLgoJKHJlc3Rfb2ZfY29tcGlsYXRpb24pOiBSdW4gaWZfY29udmVydCBhIGNvdXBsZSBvIHRpbWVzLiAgU2V0Cgljc2Vfbm90X2V4cGVjdGVkIGFmdGVyIGNzZTIuICBEb24ndCBzZXQgbm9fbmV3X3BzZXVkb3MgdW50aWwKCWFmdGVyIHNjaGVkMSBvciByZWNvbXB1dGVfcmVnX3VzYWdlLgoKMjAwMC0wNC0zMCAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAY3lnbnVzLmNvbT4KCgkqIGNvbmZpZy9hbHBoYS90LWNydGJlIChjcnRiZWdpbi5vKTogQWRkICItSS4iLgoJKGNydGVuZC5vLCBjcnRiZWdpblMubywgY3J0ZW5kUy5vKTogTGlrZXdpc2UuCgoyMDAwLTA0LTMwICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEBjeWdudXMuY29tPgoKCSogZmxvdy5jIChzdHJ1Y3QgcmVnX2NvbmRfbGlmZV9pbmZvKTogTmV3LgoJKHN0cnVjdCBwcm9wYWdhdGVfYmxvY2tfaW5mbyk6IEFkZCByZWdfY29uZF9kZWFkIGFuZCByZWdfY29uZF9yZWcuCgkoaW5pdF9wcm9wYWdhdGVfYmxvY2tfaW5mbyk6IEluaXRpYWxpemUgdGhlbS4KCShmcmVlX3Byb3BhZ2F0ZV9ibG9ja19pbmZvKTogRGVzdHJ1Y3QgdGhlbS4KCShtYXJrX3NldF8xKTogQ29uc2lkZXIgY29uZGl0aW9uYWwgbGlmZSBiZWZvcmUga2lsbGluZyBhIHJlZ2lzdGVyLgoJKG1hcmtfcmVnbm9fY29uZF9kZWFkKTogTmV3LgoJKGZyZWVfcmVnX2NvbmRfbGlmZV9pbmZvKTogTmV3LgoJKGZsdXNoX3JlZ19jb25kX3JlZ18xLCBmbHVzaF9yZWdfY29uZF9yZWcpOiBOZXcuCgkoaW9yX3JlZ19jb25kLCBub3RfcmVnX2NvbmQsIG5hbmRfcmVnX2NvbmQpOiBOZXcuCgkobWFya191c2VkX3JlZyk6IFJlY29yZCBjb25kaXRpb25hbCBsaWZlLgoKCSogaGFpZmEtc2NoZWQuYyAoc2NoZWR1bGVfaW5zbnMpOiBEaXNhYmxlIGRlYXRoIGNvdW50aW5nCglzYW5pdHkgY2hlY2sgZm9yIEhBVkVfY29uZGl0aW9uYWxfZXhlY3V0aW9uLgoKMjAwMC0wNC0zMCAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAY3lnbnVzLmNvbT4KCgkqIE1ha2VmaWxlLmluIChUSU1FVkFSX0gpOiBOZXcuCgkoZ2djLXNpbXBsZS5vLCBnZ2MtcGFnZS5vLCB0b3BsZXYubywgdGltZXZhci5vKTogVXNlIGl0LgoJKHRpbWV2YXIuaCk6IFJlbW92ZSBydWxlLgoKMjAwMC0wNC0yOSAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAY3lnbnVzLmNvbT4KCgkqIGNvbmZpZy9hbHBoYS9jcnRlbmQuYXNtOiBVc2UgQyBjb21tZW50cyBpbnN0ZWFkIG9mICMuCgkqIGNvbmZpZy9hbHBoYS9jcnRiZWdpbi5hc206IExpa2V3aXNlLiAgTWFyayBfX2Rzb19oYW5kbGUgaGlkZGVuLgoKCSogY29uZmlnL2FscGhhL2VsZi5oIChTRUxFQ1RfU0VDVElPTik6IFRyZWF0IENPTlNUUlVDVE9SIGxpa2UgVkFSX0RFQ0wuCgoyMDAwLTA0LTI5ICBaYWNrIFdlaW5iZXJnICA8emFja0B3b2xlcnkuY3VtYi5vcmc+CgoJKiBjcHBoYXNoLmggKGVudW0gbm9kZV90eXBlOiBUYWtlIG91dCBUX01DT05TVC4KCSh1bmlvbiBoYXNodmFsKTogTW92ZSBpbnRvIHN0cnVjdCBoYXNobm9kZS4KCShzdHJ1Y3QgaGFzaG5vZGUpOiBQYWNrIHRpZ2h0ZXIuICBSZW1vdmUgZmlsZSwgbGluZSwgY29sCgltZW1iZXJzLgoJKiBjcHBoYXNoLmM6IENvbnN0aWZ5IG1vc3Qgb2YgdGhlIG1hY3JvLWRlZmluaXRpb24gc3RydWN0dXJlcy4KCShzdHJ1Y3QgZGVmaW5pdGlvbik6IFJlcGxhY2UgYnkgc3RydWN0IG9iamVjdF9kZWZuCglhbmQgc3RydWN0IGZ1bmN0X2RlZm4uICBQdXQgZmlsZSwgbGluZSwgY29sdW1uIGluZm9ybWF0aW9uCgloZXJlLiAgQWxsIHVzZXJzIHVwZGF0ZWQgdG8gbWF0Y2guCgkoX2NwcF9jcmVhdGVfZGVmaW5pdGlvbiwgX2NwcF9tYWNyb2V4cGFuZCk6IFJlbW92ZSBzcGVjaWFsCgljYXNlIGZvciAjZGVmaW5lIFdPUkQgT1RIRVJXT1JELgoJKiBjcHBsaWIuYyAoZG9fdW5kZWYpOiBSZW1vdmUgVF9NQ09OU1QgY2FzZS4KCgkqIGNwcGhhc2guaDogTW92ZSBzdHJ1Y3QgcmVmbGlzdCwgc3RydWN0IGRlZmluaXRpb24sIGFuZCB0aGUKCURFRklOSVRJT04gdHlwZWRlZiB0byBjcHBoYXNoLmMuICBVc2UgJ3N0cnVjdCBkZWZpbml0aW9uIConIGluCgl1bmlvbiBoYXNodmFsLiAgX2NwcF9mcmVlX2RlZmluaXRpb24gdGFrZXMgYSBIQVNITk9ERSBwb2ludGVyLgoJKiBjcHBoYXNoLmMgKF9jcHBfZnJlZV9kZWZpbml0aW9uKTogRnJlZSBkYXRhIHBvaW50ZWQgdG8gYnkKCU1DT05TVCwgWENPTlNULCBNQUNSTywgYW5kIEZNQUNSTyBub2RlcyBwcm9wZXJseS4KCShfY3BwX2NyZWF0ZV9kZWZpbml0aW9uLCBkZWxfSEFTSE5PREUpOiBKdXN0IGNhbGwKCV9jcHBfZnJlZV9kZWZpbml0aW9uIHRvIGNsZWFyIG91dCBhIGhhc2hub2RlLgoJKiBjcHBsaWIuYyAoZG9fcHJhZ21hX3BvaXNvbik6IExpa2V3aXNlLgoKU2F0IEFwciAyOSAxMjoyNToxNyAyMDAwICBBbGV4YW5kcmUgT2xpdmEgIDxhb2xpdmFAY3lnbnVzLmNvbT4KCgkqIGNvbmZpZy9tbjEwMzAwL21uMTAzMDAuaCAoRklSU1RfREFUQV9SRUdOVU0sCglMQVNUX0RBVEFfUkVHTlVNLCBGSVJTVF9BRERSRVNTX1JFR05VTSwgTEFTVF9BRERSRVNTX1JFR05VTSwKCUZJUlNUX0VYVEVOREVEX1JFR05VTSwgTEFTVF9FWFRFTkRFRF9SRUdOVU0pOiBOZXcgbWFjcm9zLgoJKFJFR05PX1NQX1ApOiBSZWRlZmluZSBpbiB0ZXJtcyBvZiBTVEFDS19QT0lOVEVSX1JFR05VTS4KCShSRUdOT19EQVRBX1AsIFJFR05PX0FERFJFU1NfUCwgUkVHTk9fRVhURU5ERURfUCwKCVJFR05PX0FNMzNfUCk6IFJlZGVmaW5lIGluIHRlcm1zIG9mIHRoZSBuZXcgbWFjcm9zLgoJKENPTkRJVElPTkFMX1JFR0lTVEVSX1VTQUdFLCBSRUdOT19SRUdfQ0xBU1MpOiBMaWtld2lzZS4KCShGVU5DVElPTl9WQUxVRSwgTElCQ0FMTF9WQUxVRSwgRlVOQ1RJT05fVkFMVUVfUkVHTk9fUCwKCVNUUlVDVF9WQUxVRSk6IExpa2V3aXNlLgoJKFNUQUNLX1BPSU5URVJfUkVHTlVNLCBGUkFNRV9QT0lOVEVSX1JFR05VTSwKCUFSR19QT0lOVEVSX1JFR05VTSwgU1RBVElDX0NIQUlOX1JFR05VTSk6IExpa2V3aXNlLiAgTW92ZWQuCgpTYXQgQXByIDI5IDAxOjE4OjQ1IE1FVCBEU1QgMjAwMCAgSmFuIEh1Ymlja2EgIDxqaEBzdXNlLmN6PgoKCSogcmVnbW92ZS5jIChzdHJ1Y3QgcmVjb3JkX3N0YWNrX21lbXJlZnNfZGF0YSk6IE5ldy4KCShyZWNvcmRfc3RhY2tfbWVtcmVmcyk6IE5ldyBmdW5jdGlvbi4KCShjb21iaW5lX3N0YWNrX2FkanVzdG1lbnRzX2Zvcl9ibG9jayk6IFVzZSBpdC4KClNhdCBBcHIgMjkgMDE6MTU6MjcgTUVUIERTVCAyMDAwICBKYW4gSHViaWNrYSAgPGpoQHN1c2UuY3o+CgoJKiBjYWxscy5jIChjYWxsc19mdW5jdGlvbl8xKTogIFByb3Blcmx5IGhhbmRsZSBUUkVFX0xJU1QgZXhwcmVzc2lvbnM7Cgl1c2Ugc3BlY2lhbF9mdW5jdGlvbl9wIHRvIGRldGVjdCBhbGxvY2EuCgpGcmkgQXByIDI4IDE2OjMwOjMzIDIwMDAgIE1hcmMgRXNwaWUgPGVzcGllQGN2cy5vcGVuYnNkLm9yZz4KCgkqIGdjYy50ZXhpOiBGaXhlcyBmb3IgbWFrZWluZm8gNC4wIC0taHRtbC4KCjIwMDAtMDQtMjggIFphY2sgV2VpbmJlcmcgIDx6YWNrQHdvbGVyeS5jdW1iLm9yZz4KCgkqIHBjcC5oOiBEZWxldGUgZmlsZS4KCjIwMDAtMDQtMjggIEthenUgSGlyYXRhICA8a2F6dUBoeGkuY29tPgoKCSogaDgzMDAuYyAoZnVuY3Rpb25fZXBpbG9ndWUpOiBDbGVhbiB1cCBmbGFncyB3aGVuIHRoZSBsYXN0IGluc24KCWluIGEgZnVuY3Rpb24gaXMgYSBiYXJyaWVyLgoKMjAwMC0wNC0yOCAgQ2hyaXMgRGVtZXRyaW91ICA8Y2dkQHNpYnl0ZS5jb20+CgoJKiBjb25maWd1cmUuaW4gKHNwYXJjLWhhbC1zb2xhcmlzMiopOiBwcm90ZWN0IFtdIGdsb2IgZnJvbQoJbXkgZXhwYW5zaW9uLgoJKG1pcHMqLSotZWNvZmYqLCBtaXBzKi0qLWVsZiosIG1pcHMqLSotKik6IHVzZSBNQVNLXyBkZWZpbmVzCglyYXRoZXIgdGhhbiBoYXJkLWNvZGVkIGNvbnN0YW50cyBpbiB0YXJnZXRfY3B1X2RlZmF1bHQyLgoJKiBjb25maWd1cmU6IFJlZ2VuZXJhdGUuCgoyMDAwLTA0LTI4ICBKYXNvbiBNZXJyaWxsICA8amFzb25AY2FzZXkuY3lnbnVzLmNvbT4KCgkqIHRyZWUuYyAoZ2V0X2NhbGxlZV9mbmRlY2wpOiBFeHRyYWN0IHRoZSBpbml0aWFsIHZhbHVlIGZyb20KCWEgcmVhZG9ubHkgZGVjbC4KCjIwMDAtMDQtMjggIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgoJKiB2YXJhc20uYyAocmVjb3JkX2NvbnN0YW50XzEpOiBSZWNvcmQgdGhlIENPREVfTEFCRUwgd2hlbgoJdGFraW5nIHRoZSBhZGRyZXNzIG9mIGEgTEFCRUxfUkVGLgoKMjAwMC0wNC0yOCAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAY3lnbnVzLmNvbT4KCSAgICBKYW4gSHViaWNrYSAgPGpoQHN1c2UuY3o+CgoJKiBjYWxscy5jIChjb21iaW5lX3BlbmRpbmdfc3RhY2tfYWRqdXN0bWVudF9hbmRfY2FsbCk6IFJldHVybiB0aGUKCWFkanVzdG1lbnQ7IGRvbid0IGRvIHRoZSBzdGFjayBhZGp1c3QuCgkoZXhwYW5kX2NhbGwpOiBDYWxsIGNvbXB1dGVfYXJndW1lbnRfYmxvY2tfc2l6ZSByaWdodCBiZWZvcmUKCWFsbG9jYXRpbmcgdGhlIGJsb2NrOyB1cGRhdGUgY29tbWVudDsgZG9uJ3QgZG8gYWxpZ25tZW50IHNhbml0eQoJY2hlY2tpbmcgZm9yIHNpYmxpbmcgY2FsbDsgdXNlIGFyZ3Nfc2l6ZSBpbnN0ZWFkIG9mCgl1bmFkanVzdGVkX2FyZ3Nfc2l6ZSBiZWZvcmUgYXJnc19zaXplIGlzIGFkanVzdGVkLiAgVXNlCgljb21iaW5lX3BlbmRpbmdfc3RhY2tfYWRqdXN0bWVudF9hbmRfY2FsbCB0byBjb21wdXRlIHN0YWNrIGFkanVzdAoJZm9yIG11c3RfcHJlYWxsb2NhdGUgY2FzZS4KCgkqIGV4cHIuYyAocHVzaF9ibG9jayk6IFJlbW92ZSBzaGFkb3cgYHRlbXAnIGluIGlubmVyIHNjb3BlLgoKMjAwMC0wNC0yOCAgSmFzb24gTWVycmlsbCAgPGphc29uQGNhc2V5LmN5Z251cy5jb20+CgoJKiB0b3BsZXYuYyAocmVzdF9vZl9jb21waWxhdGlvbik6IENhbGwKCW5vdGVfZGVmZXJyYWxfb2ZfZGVmaW5lZF9pbmxpbmVfZnVuY3Rpb24gZXZlbiBpZiB0aGUgZnVuY3Rpb24KCWNhbid0IGJlIGlubGluZWQuCgoyMDAwLTA0LTI4ICBTY290dCBCYW1icm91Z2ggIDxzY290dGJAbmV0d2luZGVyLm9yZz4KCgkqIGNwcGxleC5jIChfY3BwX3NjYW5fbGluZSk6IEZpeCBidWZmZXIgb3ZlcndyaXRlLgoKMjAwMC0wNC0yOCAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAY3lnbnVzLmNvbT4KCgkqIHRvcGxldi5jIChyZXN0X29mX3R5cGVfY29tcGlsYXRpb24pOiBGaXggc2RiIFRJTUVWQVIgdHlwby4KCjIwMDAtMDQtMjggIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIHRpbWV2YXIuYyAoaW5pdF90aW1ldmFyKTogRGVBTlNJZnkgZnVuY3Rpb24gZGVmaW5pdGlvbi4KCjIwMDAtMDQtMjcgIEFsZXggU2FtdWVsICA8c2FtdWVsQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBNYWtlZmlsZS5pbiAodGltZXZhci5vKTogRGVwZW5kIG9uIGZsYWdzLmguCgkqIHRpbWV2YXIuYyAodW51c2VkX3N0YWNrX2luc3RhbmNlcyk6IE5ldyB2YXJpYWJsZS4KCSh0aW1ldmFyX3B1c2gpOiBUYWtlIGEgdGltZXZhcl9zdGFja19kZWYgZnJvbQoJdW51c2VkX3N0YWNrX2luc3RhbmNlcyBpZiBhdmFpbGFibGUuCgkodGltZXZhcl9wb3ApOiBQdXNoIHRoZSBwb3BwZWQgdGltZXZhcl9zdGFja19kZWYgb250bwoJdW51c2VkX3N0YWNrX2luc3RhbmNlcy4KCShUSU1FVkFSX0VOQUJMRSk6IE5ldyBtYWNyby4KCSh0aW1ldmFyX2RlZik6IE1ha2Ugc3RhbmRhbG9uZSBhIDEtYml0IGZpZWxkLiAgQWRkIGZpZWxkIHVzZWQuCgkoZ2V0X3RpbWUpOiBSZW5hbWUgcGFyYW1ldGVyIHRvIG5vdy4gIFJldHVybiBhZnRlciBjbGVhcmluZyBpdCBpZgoJbm90IFRJTUVWQVJfRU5BQkxFLgoJKGluaXRfdGltZXZhcik6IERvIG5vdGhpbmcgaWYgbm90IFRJTUVWQVJfRU5BQkxFLgoJKHRpbWV2YXJfcG9wKTogTGlrZXdpc2UuCgkodGltZXZhcl9zdG9wKTogTGlrZXdpc2UuCgkodGltZXZhcl9wdXNoKTogTGlrZXdpc2UuICBNYXJrIHRoZSB0aW1pbmcgdmFyaWFibGUgYXMgdXNlZC4KCSh0aW1ldmFyX3N0YXJ0KTogTGlrZXdpc2UuCgkodGltZXZhcl9wcmludCk6IERvIG5vdGhpbmcgaWYgbm90IFRJTUVWQVJfRU5BQkxFLiAgRG9uJ3QgcHJpbnQKCXRpbWV2YXJzIHRoYXQgd2VyZSBuZXZlciB1c2VkLgoKMjAwMC0wNC0yNyAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGMtY29tbW9uLmMgKGNfYXBwbHlfdHlwZV9xdWFsc190b19kZWNsKTogUkVGRVJFTkNFX1RZUEVTIGFyZQoJYWx3YXlzIFRSRUVfUkVBRE9OTFkuCgoyMDAwLTA0LTI3ICBVbHJpY2ggRHJlcHBlciAgPGRyZXBwZXJAY3lnbnVzLmNvbT4KCgkqIGkzODYuaCAoRlVOQ1RJT05fQkxPQ0tfUFJPRklMRVJfRVhJVCk6IEdlbmVyYXRlIG1lbSByZWZlcmVuY2UKCWZvciBjYWxsIGluc3RydWN0aW9uIHdpdGggbW9kZSBRSW1vZGUuCgoyMDAwLTA0LTI3ICBBbGV4IFNhbXVlbCAgPHNhbXVlbEBjb2Rlc291cmNlcnkuY29tPgoKCSogTWFrZWZpbGUuaW4gKE9CSlMpOiBBZGQgdGltZXZhci5vLgoJKHRvcGxldi5vKTogRGVwZW5kIG9uIHRpbWV2YXIuaC4KCShnZ2Mtc2ltcGxlLm8pOiBMaWtld2lzZS4KCShnZ2MtcGFnZS5vKTogTGlrZXdpc2UuCgkodGltZXZhci5vKTogTmV3IHJ1bGUuCgkodGltZXZhci5oKTogTmV3IHJ1bGUuCgoJKiB0aW1ldmFyLmg6IE5ldyBmaWxlLgoJKiB0aW1ldmFyLmM6IExpa2V3aXNlLgoJKiB0aW1ldmFyLmRlZjogTGlrZXdpc2UuCgoJKiB0b3BsZXYuaCAoZ2NfdGltZSwgcGFyc2VfdGltZSwgdmFyY29uc3RfdGltZSk6IFJlbW92ZS4KCSogdG9wbGV2LmM6IFVzZSB0aW1ldmFyX3B1c2ggYW5kIHRpbWV2YXJfcG9wIGluc3RlYWQgb2YgVElNRVZBUgoJdGhyb3VnaG91dC4KCShUSU1FVkFSKTogUmVtb3ZlIG1hY3JvLgoJKGdjX3RpbWUsIHBhcnNlX3RpbWUsIHZhcmNvbnN0X3RpbWUsIGludGVncmF0aW9uX3RpbWUsIGp1bXBfdGltZSwKCWNzZV90aW1lLCBnY3NlX3RpbWUsIGxvb3BfdGltZSwgY3NlMl90aW1lLCBicmFuY2hfcHJvYl90aW1lLAoJZmxvd190aW1lLCBjb21iaW5lX3RpbWUsIHJlZ21vdmVfdGltZSwgc2NoZWRfdGltZSwKCWxvY2FsX2FsbG9jX3RpbWUsIGdsb2JhbF9hbGxvY190aW1lLCBmbG93Ml90aW1lLCBwZWVwaG9sZTJfdGltZSwKCXNjaGVkMl90aW1lLCBkYnJfc2NoZWRfdGltZSwgcmVvcmRlcl9ibG9ja3NfdGltZSwKCXJlbmFtZV9yZWdpc3RlcnNfdGltZSwgc2hvcnRlbl9icmFuY2hfdGltZSwgc3RhY2tfcmVnX3RpbWUsCgl0b19zc2FfdGltZSwgZnJvbV9zc2FfdGltZSwgZmluYWxfdGltZSwgc3ltb3V0X3RpbWUsIGR1bXBfdGltZSwKCWFsbF90aW1lKTogUmVtb3ZlLgoJKGNvbXBpbGVfZmlsZSk6IERvbid0IGluaXRpYWxpemUgdGltZSB2YXJpYWJsZXMuICBDYWxsCglpbml0X3RpbWV2YXIgYW5kIHN0YXJ0IFRWX1RPVEFMIHRpbWVyLiAgQ2FsbCB0aW1ldmFyX3ByaW50IGluc3RlYWQKCW9mIG1hbnkgY2FsbHMgdG8gcHJpbnRfdGltZS4KCShyZXN0X29mX2NvbXBpbGF0aW9uKTogQWRkIHRpbWluZyBmb3IgcmVsb2FkX2NzZV9yZWdzLgoJKGdldF9ydW5fdGltZSk6IFJlbW92ZWQgdG8gdGltZXZhci5jLgoJKHByaW50X3RpbWUpOiBMaWtld2lzZS4KCShnZXRfcnVuX3RpbWUpOiBJbXBsZW1lbnQgdXNpbmcgVFZfVE9UQUwgdGltZSB2YXJpYWJsZS4KCShwcmludF90aW1lKTogR2V0IHRvdGFsIHJ1biB0aW1lIGZyb20gZ2V0X3J1bl90aW1lLgoJKiBnZ2MtcGFnZS5jIChnZ2NfY29sbGVjdCk6IFB1c2ggYW5kIHBvcCBUVl9HQyBpbnN0ZWFkIG9mCgljb21wdXRpbmcgZWxhcHNlZCB0aW1lIGV4cGxpY2l0bHkuCgkqIGdnYy1zaW1wbGUuYyAoZ2djX2NvbGxlY3QpOiBMaWtld2lzZS4KCShnY190aW1lKTogUmVtb3ZlIGRlY2xhcmF0aW9uLgoKMjAwMC0wNC0yNyAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGNhbGxzLmMgKGNvbWJpbmVfcGVuZGluZ19zdGFja19hZGp1c3RtZW50X2FuZF9jYWxsKTogTmV3IGZ1bmN0aW9uLgoJKGV4cGFuZF9jYWxsKTogVXNlIGl0LgoKMjAwMC0wNC0yNyAgSmFuIEh1Ymlja2EgIDxqaEBzdXNlLmN6PgoKCSogZmxvdy5jIChtYXJrX3NldF8xKTogIEhhbmRsZSBNRU1zIGluIFpFUk9fRVhUUkFDVC9TSUdOX0VYVFJBQ1QKCWZpZWxkcy4KClRodSBBcHIgMjcgMTI6NDc6MDAgMjAwMCAgQWxleGFuZHJlIE9saXZhICA8YW9saXZhQGN5Z251cy5jb20+CgoJKiBjb25maWcvbW4xMDMwMC9tbjEwMzAwLm1kIChtb3ZoaSk6IFNpbXBsaWZ5LiAgUHJlZmVyIGRhdGEKCXJlZ2lzdGVycy4KClRodSBBcHIgMjcgMTc6MzM6MDUgTUVUIERTVCAyMDAwICBKYW4gSHViaWNrYSAgPGpoQHN1c2UuY3o+CgoJKiBmdW5jdGlvbi5jIChlcGlsb2d1ZV9kb25lKTogUGFzcyB3aG9sZSBpbnNuIHRvIHJlY29yZF9pbnNucy4KClRodSBBcHIgMjcgMTY6NTU6MjggTUVUIERTVCAyMDAwICBKYW4gSHViaWNrYSAgPGpoQHN1c2UuY3o+CgoJKiBjc2UuYyAoQ1NFX0FERFJFU1NfQ09TVCk6IFJlbW92ZS4KCShmaW5kX2Jlc3RfYWRkcik6IEFkZCBuZXcgcGFyYW1ldGVyICJNT0RFIiwgdXNlIGFkZHJlc3NfY29zdCBpbnN0ZWFkCglvZiBDU0VfQUREUkVTU19DT1NUCgkoYWRkcmVzc19jb3N0KTogTmV3LgoJKGZvbGRfcnR4KTogVXBkYXRlIGNhbGwgb2YgZmluZF9iZXN0X2FkZHIuCgkqIHJ0bC5oIChhZGRyZXNzX2Nvc3QpOiBEZWNsYXJlLgoJKiBsb29wLmMgKGdlbmVyYWxfaW5kdWN0aW9uX3Zhcik6IEFkZCBuZXcgcGFyYW1ldGVyICJNT0RFIiwgdXNlCglhZGRyZXNzX2Nvc3QgaW5zdGVhZCBvZiBBRERSRVNTX0NPU1QKCShpbml0X2xvb3ApOiBVc2UgYWRkcmVzc19jb3N0IGluc3RlYWQgb2YgQUREUkVTU19DT1NULgoJKGNoZWNrX2luc25fZm9yX2dpdnMpOiBVcGRhdGUgY2FsbCBvZiBnZW5lcmFsX2luZHVjdGlvbl92YXIuCgkoZmluZF9tZW1fZ2l2cyk6IExpa2V3aXNlLgoJKGNvbnNlY19zZXRzX2dpdik6IExpa2V3aXNlLgoJKiBjb25maWcvaTM4Ni9pMzg2LmggKEFERFJFU1NfQ09TVCk6IENhbGwgaXg4Nl9hZGRyZXNzX2Nvc3QuCgkqIGkzODYuYyAoaXg4Nl9hZGRyZXNzX2Nvc3QpOiBOZXcuCgkqIGkzODYtcHJvdG9zLmggKGl4ODZfYWRkcmVzc19jb3N0KTogRGVjbGFyZS4KClRodSBBcHIgMjcgMTE6NDU6MTYgMjAwMCAgQWxleGFuZHJlIE9saXZhICA8YW9saXZhQGN5Z251cy5jb20+CgoJKiBjb25maWcvbW4xMDMwMC9tbjEwMzAwLm1kIChtb3ZxaSk6IFNpbXBsaWZ5LiAgUHJlZmVyIGRhdGEKCXJlZ2lzdGVycy4KClRodSBBcHIgMjcgMTY6MTE6MDAgTUVUIERTVCAyMDAwICBKYW4gSHViaWNrYSAgPGpoQHN1c2UuY3o+CgoJKiBleHByLmMgKHN0b3JlX2V4cHIpOiBVc2UgY2xlYXJfc3RvcmFnZSBpbnN0ZWFkIG9mIGRpcmVjdCBtZW1zZXQKCWxpYmNhbGwuCgpUaHUgQXByIDI3IDEwOjM2OjUxIDIwMDAgIEFsZXhhbmRyZSBPbGl2YSAgPGFvbGl2YUBjeWdudXMuY29tPgoKCSogY29uZmlnL21uMTAzMDAvbW4xMDMwMC5jIChtbjEwMzAwX2FkZHJlc3NfY29zdCk6IFRlc3QKCUFTSElGVCwgQU5EIGFuZCBMQUJFTF9SRUYuCgpUaHUgQXByIDI3IDE1OjA4OjQ2IE1FVCBEU1QgMjAwMCAgSmFuIEh1Ymlja2EgIDxqaEBzdXNlLmN6PgoKCSogaW52b2tlLnRleGkgKC1mb3B0aW1pemUtc2libGluZy1jYWxscyk6IEZpeC4KClRodSBBcHIgMjcgMTQ6NTQ6MjIgTUVUIERTVCAyMDAwICBKYW4gSHViaWNrYSAgPGpoQHN1c2UuY3o+CgoJKiBsb29wLmMgKGxvYWRfbWVtcykgIERvbid0IHVzZSBoYXJkIHJlZ2lzdGVycyBmb3IgdGhlIGhvaXN0aW5nLgoKCSogdW5yb2xsLmMgKHVucm9sbF9sb29wKTogQXZvaWQgb3ZlcmZsb3cgaW4gdGhlIG5faXRlcmF0aW9ucwoJY2FsY3VsYXRpb247IHJlbmFtZSBjb25zdF9lcXVpdiBhcnJheSBpbiB0aGUgcHJlY29uZGl0aW9uaW5nIGNvZGUKCWZyb20gbG9vcF91bnJvbGwgdG8gbG9vcF91bnJvbGxfcHJlY29uZGl0aW9uCgoyMDAwLTA0LTI3ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEBjeWdudXMuY29tPgoKCSogZmxvdy5jIChzdHJ1Y3QgcHJvcGFnYXRlX2Jsb2NrX2luZm8pOiBSZW1vdmUgbmV3X2RlYWQsIG5ld19saXZlOwoJYWRkIG5ld19zZXQuCgkocHJvcGFnYXRlX29uZV9pbnNuKTogQ2xlYXIgaXQuICBEb24ndCB1cGRhdGUgcmVnX2xpdmUgaGVyZS4KCShpbml0X3Byb3BhZ2F0ZV9ibG9ja19pbmZvKTogVXBkYXRlIGZvciBwYmkgbWVtYmVyIGNoYW5nZXMuCgkoZnJlZV9wcm9wYWdhdGVfYmxvY2tfaW5mbyk6IExpa2V3aXNlLgoJKG1hcmtfc2V0XzEpOiBLbm93IHRoYXQgemVyb19leHRyYWN0LCBzaWduX2V4dHJhY3QsIGFuZAoJc3RyaWN0X2xvd19wYXJ0IGRvbid0IGtpbGwgdGhlaXIgYXJndW1lbnQuICBBbHRlciBoYXJkIHN1YnJlZ3MuCglVcGRhdGUgbmV3X3NldCBmb3Igbm9uLUNMT0JCRVIgc2V0cy4gIFVwZGF0ZSByZWdfbGl2ZS4KCShmaW5kX2F1dG9faW5jKTogVXBkYXRlIHJlZ19saXZlLCBub3QgbmV3X2RlYWQuCgkobWFya191c2VkX3JlZyk6IFVwZGF0ZSByZWdfbGl2ZSwgbm90IG5ld19saXZlLiAgRXhhbWluZSBuZXdfc2V0Cgl0byBkZXRlcm1pbmUgaWYgdGhlIHJlZyBpbiBxdWVzdGlvbiB3YXMgc2V0IHRoaXMgaW5zbi4gIE9ubHkgdXBkYXRlCglyZWcgaW5mbyB3aXRoIFBST1BfUkVHX0lORk8uCgoyMDAwLTA0LTI2ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEBjeWdudXMuY29tPgoKCSogZmxvdy5jIChhbGxvY2F0ZV9yZWdfbGlmZV9kYXRhKTogU2V0IG1heF9yZWdubyBoZXJlIC4uLgoJKGxpZmVfYW5hbHlzaXMpOiAuLi4gbm90IGhlcmUuCgoJKiBmbG93LmMgKGNhbGN1bGF0ZV9nbG9iYWxfcmVnc19saXZlKTogRm9yY2Ugc3RhY2sgcG9pbnRlcgoJbGl2ZSBhdCBlbmQuCgoyMDAwLTA0LTI2ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEBjeWdudXMuY29tPgoKCSoganVtcC5jIChyZWRpcmVjdF9leHBfMSk6IFJld29yayBmcm9tIG9sZCByZWRpcmVjdF9leHAuICBOZXZlcgoJY29tbWl0IGNoYW5nZSBncm91cCBjaGFuZ2VzLgoJKGludmVydF9leHBfMSk6IFNpbWlsYXJseS4KCShyZWRpcmVjdF9leHAsIGludmVydF9leHApOiBVc2UgdGhlbS4KCShyZWRpcmVjdF9qdW1wXzEpOiBOZXcuCgkoaW52ZXJ0X2p1bXBfMSk6IE5ldy4KCShqdW1wX29wdGltaXplXzEpOiBSZW1vdmUgY29kZSBzdWJzdW1lZCBieSBjb25kZXhlYy5jLgoJKiBydGwuaCAoaW52ZXJ0X2p1bXBfMSwgcmVkaXJlY3RfanVtcF8xKTogRGVjbGFyZS4KCjIwMDAtMDQtMjYgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgoJKiBydGxhbmFsLmMgKGRlYWRfb3Jfc2V0X3JlZ25vX3ApOiBVc2UgZmluZF9yZWdub19ub3RlLgoKCSogZ2VuY29uZmlnLmMgKG1haW4pOiBTZXQgYWxsIEhBVkVfZm9vIHRvIDEuCgoJKiBncmFwaC5jIChub2RlX2RhdGEpOiBVc2UgR0VUX05PVEVfSU5TTl9OQU1FIGluc3RlYWQgb2YgbG9jYWwgYXJyYXkuCgoyMDAwLTA0LTI2ICBBbGV4IFNhbXVlbCAgPHNhbXVlbEBjb2Rlc291cmNlcnkuY29tPgoKCSogaW52b2tlLnRleGk6IERvY3VtZW50IC1mc3NhIGZsYWcuCgoyMDAwLTA0LTI2ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEBjeWdudXMuY29tPgoKCSogZmxvdy5jIChjb3VudF9yZWdfc2V0c18xKTogUmVtb3ZlLgoJKGNvdW50X3JlZ19zZXRzLCBjb3VudF9yZWdfcmVmZXJlbmNlcyk6IFJlbW92ZS4KCShyZWNvbXB1dGVfcmVnX3VzYWdlKTogSW1wbGVtZW50IHdpdGggdXBkYXRlX2xpZmVfaW5mby4KCVJlYWxsb2NhdGUgbGlmZSBkYXRhLgoKMjAwMC0wNC0yNiAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAY3lnbnVzLmNvbT4KCgkqIGZsb3cuYyAodXBkYXRlX2xpZmVfaW5mbyk6IENvbnNpZGVyIGJsb2NrcyBudWxsIHRvIG1lYW4gdGhlCgl1bml2ZXJzYWwgc2V0LgoJKGNhbGN1bGF0ZV9nbG9iYWxfcmVnc19saXZlKTogTGlrZXdpc2UuCgkobGlmZV9hbmFseXNpcyk6IERvIHRoYXQgaW5zdGVhZCBvZiBjb2xsZWN0aW5nIGFsbF9ibG9ja3MuCgoyMDAwLTA0LTI2ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEBjeWdudXMuY29tPgoKCSogZmxvdy5jICh0aWR5X2ZhbGx0aHJ1X2VkZ2UpOiBEb24ndCBkZWxldGUgdGhlIGp1bXAgd2hlbiBpdCdzCglhIHN0aWxsLXZhbGlkIGNvbmRpdGlvbmFsIGp1bXAuCgoyMDAwLTA0LTI2ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEBjeWdudXMuY29tPgoKCSoganVtcC5jIChpbnZlcnRfanVtcCk6IEFsd2F5cyBpbnZlcnQgUkVHX0JSX1BST0IuICBEbyBpdCBjb3JyZWN0bHkuCgoJKiBiYi1yZW9yZGVyLmMgKHJlb3JkZXJfYmFzaWNfYmxvY2tzKTogRG9uJ3QgcnVuIGVzdGltYXRlX3Byb2JhYmlsaXR5LgoJKiBmbG93LmMgKGNhbGN1bGF0ZV9sb29wX2RlcHRoKTogUmVtb3ZlLgoJKiBvdXRwdXQuaCAoY2FsY3VsYXRlX2xvb3BfZGVwdGgpOiBEb24ndCBkZWNsYXJlLgoJKiB0b3BsZXYuYyAocmVzdF9vZl9jb21waWxhdGlvbik6IEV4cGFuZCBjYWxjdWxhdGVfbG9vcF9kZXB0aAoJaW5saW5lOyBydW4gZXN0aW1hdGVfcHJvYmFiaWxpdHkgYXQgdGhlIHNhbWUgdGltZS4KCjIwMDAtMDQtMjYgIE5laWwgQm9vdGggIDxOZWlsQkBlYXJ0aGxpbmcubmV0PgoKCSogY3BwbGliLmg6ICJ+PSIgaXMgbm90IGEgc2luZ2xlIHBwLXRva2VuLgoJKiBjcHBsZXguYzogQ29ycmVjdCBjb21tZW50YXJ5LgoKMjAwMC0wNC0yNiAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAY3lnbnVzLmNvbT4KCgkqIGZsb3cuYyAobWFya19zZXRfMSk6IE5ldyBhcmd1bWVudHMgY29kZSBhbmQgZmxhZ3M7IHVwZGF0ZSBhbGwKCWNhbGxlcnMuICBUcmFjayByZWdub19maXJzdCBhbmQgcmVnbm9fbGFzdDsgZG8gSEFSRF9SRUdOT19OUkVHUwoJdGVzdCBpbiBvbmUgcGxhY2UuICBUaWR5IGZsYWdzIHRlc3RzLiAgRG9uJ3QgYmlhcyBSRUdfTl9SRUZTIGJ5Cglsb29wX2RlcHRoIHdoZW4gb3B0aW1pemluZyBmb3Igc2l6ZS4gIERvIG5ld19kZWFkIHVwZGF0ZSBhZnRlcgoJZW1pdHRpbmcgUkVHX1VOVVNFRCBub3Rlcy4gIE1lcmdlIG1hcmtfc2V0X3JlZyBjb2RlLgoJKG1hcmtfc2V0X3JlZyk6IFJlbW92ZS4KCShwcm9wYWdhdGVfb25lX2luc24pOiBVc2UgbWFya19zZXRfMSBmb3IgY2FsbC1jbG9iYmVyZWQgcmVnaXN0ZXJzOwoJYXJyYW5nZSB0byBub3QgZW1pdCBSRUdfVU5VU0VEIG5vdGVzLgoKMjAwMC0wNC0yNiAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAY3lnbnVzLmNvbT4KCgkqIGZsb3cuYyAoZmluZF9hdXRvX2luYyk6IFVzZSBwYmktPmJiIGluc3RlYWQgb2YgQkxPQ0tfRk9SX0lOU04uCgkqIHNzYS5jIChjb252ZXJ0X2Zyb21fc3NhKTogRG9uJ3QgcnVuIGNvbXB1dGVfYmJfZm9yX2luc24uCgoyMDAwLTA0LTI2ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEBjeWdudXMuY29tPgoKCSogZmxvdy5jIChwcm9wYWdhdGVfb25lX2luc24pOiBCcmVhayBvdXQgZnJvbSBwcm9wYWdhdGVfYmxvY2suCgkoaW5pdF9wcm9wYWdhdGVfYmxvY2tfaW5mbyk6IExpa2V3aXNlLgoJKGZyZWVfcHJvcGFnYXRlX2Jsb2NrX2luZm8pOiBMaWtld2lzZS4KCShwcm9wYWdhdGVfYmxvY2spOiBVc2UgdGhlbS4gIEV4cG9ydC4KCSogYmFzaWMtYmxvY2suaDogRGVjbGFyZSB0aGVtIGFsbC4KCjIwMDAtMDQtMjYgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgoJKiBiYXNpYy1ibG9jay5oIChsaWZlX2FuYWx5c2lzKTogRGVjbGFyZSBoZXJlIC4uLgoJKiBvdXRwdXQuaDogLi4uIG5vdCBoZXJlLgoJKiBmbG93LmMgKGxpZmVfYW5hbHlzaXMpOiBSZW1vdmUgbnJlZ3MgcGFyYW1ldGVyOyByZXBsYWNlCglyZW1vdmVfZGVhZF9jb2RlIHdpdGggZmxhZ3MuICBSZW1vdmUgc3NhIGRlYWQgY29kZSBjaGVjay4KCU9ubHkgaW5pdCBhbGlhcyBhbmFseXNpcyBpZiB3ZSdsbCB1c2UgaXQuCgkqIHJlZy1zdGFjay5jIChyZWdfdG9fc3RhY2spOiBVcGRhdGUgbGlmZV9hbmFseXNpcyBhcmd1bWVudHMuCgkqIHNzYS5jIChjb252ZXJ0X3RvX3NzYSk6IExpa2V3aXNlLgoJKGNvbnZlcnRfZnJvbV9zc2EpOiBMaWtld2lzZS4KCSogdG9wbGV2LmMgKHJlc3Rfb2ZfY29tcGlsYXRpb24pOiBMaWtld2lzZS4KCjIwMDAtMDQtMjYgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgoJKiBmbG93LmMgKGZsb3dfZGVsZXRlX2Jsb2NrKTogUmVuYW1lIGZyb20gZGVsZXRlX2Jsb2NrLiAgRXhwb3J0LgoJKiBiYXNpYy1ibG9jay5oIChmbG93X2RlbGV0ZV9ibG9jayk6IERlY2xhcmUuCgoyMDAwLTA0LTI2ICBEYXZpZCBTLiBNaWxsZXIgIDxkYXZlbUByZWRoYXQuY29tPgoKCSogb3B0YWJzLmMgKGVtaXRfbGliY2FsbF9ibG9jayk6IFZlcmlmeSBpbnNucyB3aXRoIElOU05fUCBiZWZvcmUKCXRha2luZyBhIFBBVFRFUk4gb2YgaXQuCgoyMDAwLTA0LTI2ICA8TmVpbEJAZWFydGhsaW5nLm5ldD4KCgkqIGNwcGxleC5jIChzcGVsbF9vdGhlciwgc3BlbGxfY2hhcik6IFJlbW92ZS4KCShTUEVMTF9DSEFSKTogTmV3LgoJKHRva2VuX3NwZWxsaW5nLCB0cmlncmFwaF9tYXApOiBVc2UgdW5zaWduZWQgY2hhcnMuCgkoX2NwcF9sZXhfbGluZSk6IFRpZHkgdXAgdGhlIHN3aXRjaCBzdGF0ZW1lbnQuCgkqIGNwcGxpYi5oOiBJbXBsZW1lbnQgc3BlbGxfY2hhciB3aXRoIHNwZWxsX3N0cmluZy4KCShDKTogTmV3LgoKMjAwMC0wNC0yNiAgPFJvZG5leUJyb3duQHBtc2MuY29tPgoKCSogcGEvcGEzMi1yZWdzLmggKEhBUkRfUkVHTk9fTU9ERV9PSyk6IFdhcm5pbmcgcmVtb3ZhbC4KCSogcGEvcGE2NC1yZWdzLmggKEhBUkRfUkVHTk9fTU9ERV9PSyk6IFdhcm5pbmcgcmVtb3ZhbC4KCjIwMDAtMDQtMjYgIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIGR3YXJmMm91dC5jIChkd19jZmlfb3BybmRfc3RydWN0LCBkd19mZGVfc3RydWN0LCBhZGRfZmRlX2NmaSwKCXJlZ19zYXZlLCBkd2FyZjJvdXRfZnJhbWVfZGVidWdfZXhwciwgZHdhcmYyb3V0X2RlZl9jZmEsCglkd2FyZjJvdXRfd2luZG93X3NhdmUsIGR3YXJmMm91dF9hcmdzX3NpemUsIGR3YXJmMm91dF9yZWdfc2F2ZSwKCWR3YXJmMm91dF9yZXR1cm5fc2F2ZSwgZHdhcmYyb3V0X3JldHVybl9yZWcsCglkd2FyZjJvdXRfc3RhY2tfYWRqdXN0LCBkd2FyZjJvdXRfZnJhbWVfZGVidWcsIHByaW1hcnlfZmlsZW5hbWUsCglhZGRfQVRfbGJsX2lkLCBhZGRfQVRfbGJsX29mZnNldCwgdHlwZV90YWcsIGRlY2xfc3RhcnRfbGFiZWwsCglnZW5fY29tcGlsZV91bml0X2RpZSwgZHdhcmYyb3V0X2luaXQpOiBDb25zdGlmeSBhIGNoYXIqLgoKCSogZHdhcmYyb3V0LmggKGR3YXJmMm91dF9pbml0KTogTGlrZXdpc2UuCgoJKiBkd2FyZm91dC5jIChmaWxlbmFtZV9lbnRyeSwgcHJpbWFyeV9maWxlbmFtZSwgbGFzdF9maWxlbmFtZSwKCXR5cGVfdGFnLCBvdXRwdXRfY29tcGlsZV91bml0X2RpZSwgZHdhcmZvdXRfaW5pdCk6IExpa2V3aXNlLgoKCSogdHJlZS5oIChkd2FyZjJvdXRfZGVmX2NmYSwgZHdhcmYyb3V0X3dpbmRvd19zYXZlLAoJZHdhcmYyb3V0X2FyZ3Nfc2l6ZSwgZHdhcmYyb3V0X3JlZ19zYXZlLCBkd2FyZjJvdXRfcmV0dXJuX3NhdmUsCglkd2FyZjJvdXRfcmV0dXJuX3JlZyk6IExpa2V3aXNlLgoKMjAwMC0wNC0yNiAgQW5kcmVhcyBKYWVnZXIgIDxhakBzdXNlLmRlPgoKCSogZXh0ZW5kLnRleGkgKEZ1bmN0aW9uIEF0dHJpYnV0ZXMpOiBGaXggZGVzY3JpcHRpb24gb2YgcHVyZQoJYXR0cmlidXRlLgoKMjAwMC0wNC0yNiAgSmFzb24gTWVycmlsbCAgPGphc29uQGNhc2V5LmN5Z251cy5jb20+CgoJKiBpbnRlZ3JhdGUuYyAob3V0cHV0X2lubGluZV9mdW5jdGlvbik6IERvIGNsZWFyIERFQ0xfREVGRVJfT1VUUFVUCgliZWZvcmUgY2FsbGluZyByZXN0X29mX2NvbXBpbGF0aW9uLgoKMjAwMC0wNC0yNiAgQW5kcmVhcyBKYWVnZXIgIDxhakBzdXNlLmRlPgoKCSogY29uZmlnL21pcHMvbGludXguaDogUmVtb3ZlIGVycm9uZW91cyBjb21taXQgb2YgI2lmIDAvI2VuZGlmIGluCglsYXN0IHBhdGNoLgoKMjAwMC0wNC0yNSAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAY3lnbnVzLmNvbT4KCgkqIGNzZS5jIChjc2VfaW5zbik6IEVtaXQgYmFycmllciBhZnRlciB1bmNvbmRpdGlvbmFsIGp1bXAuCgoJKiBjYWxscy5jIChleHBhbmRfY2FsbCk6IERpc2FibGUgdGFpbCBjYWxsIGdlbmVyYXRpb24gb25jZQoJcnR4X2VxdWFsX2Z1bmN0aW9uX3ZhbHVlX21hdHRlcnMgaXMgZmFsc2UuCgoJKiByZWctc3RhY2suYyAoY29udmVydF9yZWdzXzEpOiBUcmVhdCBFREdFX0FCTk9STUFMX0NBTEwgZWRnZXMKCWxpa2UgRURHRV9FSCBlZGdlcy4KCjIwMDAtMDQtMjUgIEphc29uIE1lcnJpbGwgIDxqYXNvbkBjYXNleS5jeWdudXMuY29tPgoKCSogZHdhcmYyb3V0LmMgKGFkZF9ib3VuZF9pbmZvKTogRG9uJ3QgY3Jhc2ggb24gYW4gdW5leHBhbmRlZCBTQVZFX0VYUFIuCgoJKiBkd2FyZm91dC5jIChvdXRwdXRfZGVjbCk6IElnbm9yZSBOQU1FU1BBQ0VfREVDTHMuCgoJKiBkd2FyZjJvdXQuYyAoZ2VuX3N1YnByb2dyYW1fZGllKTogVGhlIGNsYXNzLXNjb3BlIGRlY2xhcmF0aW9uIERJRQoJaXMgdGhlIHByaW1hcnkgRElFIGZvciBhIG1lbWJlciBmdW5jdGlvbi4KCShnZW5fZGVjbF9kaWUpOiBDYWxsIHNldF9kZWNsX29yaWdpbl9zZWxmIGhlcmUuCgkqIGR3YXJmb3V0LmMgKG91dHB1dF9kZWNsKTogQW5kIGhlcmUuCgkqIGludGVncmF0ZS5jIChvdXRwdXRfaW5saW5lX2Z1bmN0aW9uKTogTm90IGhlcmUuCglEb24ndCBjbGVhciBERUNMX0lOTElORSB1bnRpbCBhZnRlciBjYWxsaW5nIHJlc3Rfb2ZfY29tcGlsYXRpb24uCgkoc2V0X2RlY2xfb3JpZ2luX3NlbGYpOiBObyBsb25nZXIgc3RhdGljLgoJKiB0cmVlLmg6IEFkZCBwcm90b3R5cGUuCgkqIHRvcGxldi5jIChub3RlX2RlZmVycmFsX29mX2RlZmluZWRfaW5saW5lX2Z1bmN0aW9uKTogT25seSB3cml0ZQoJb3V0IGFic3RyYWN0IGluc3RhbmNlIGZvciBhY3R1YWwgaW5saW5lcy4KCjIwMDAtMDQtMjUgIEFsZXhhbmRyZSBPbGl2YSAgPGFvbGl2YUBjeWdudXMuY29tPgoKCSogY29uZmlnL21uMTAzMDAvbW4xMDMwMC5oIChSRUdfQ0xBU1NfRlJPTV9MRVRURVIpOiBSZXR1cm4KCUVYVEVOREVEX1JFR1Mgb25seSBpZiBUQVJHRVRfQU0zMy4KCSogY29uZmlnL21uMTAzMDAvbW4xMDMwMC5tZCAobW92c2ksIGFkZHNpKTogQXZvaWQgZXhwb3NpbmcKCVNQX1JFR1MgdG8gcmVnaXN0ZXIgYWxsb2NhdGlvbiBhbmQgcmVsb2FkaW5nIHVubGVzcyBhYnNvbHV0ZWx5CgluZWNlc3NhcnkuCgkobW92c2kzKTogUmVtb3ZlIHNwZWNpYWwtY2FzZSBvZiBhZGRpbmcgbm9uLWNvbnN0YW50cyB0byBTUC4KCjIwMDAtMDQtMjUgIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIGFjbG9jYWwubTQgKGdjY19BQ19ORUVEX0RFQ0xBUkFUSU9OKTogVGhpcyBtYWNybyBub3cgcmVxdWlyZXMKCUlOQ0xVREVTIHRvIHNlYXJjaCBhbmQgZG9lcyBub3QgcHJvdmlkZSBhbnkgb2YgaXRzIG93bi4gIEFsc28gaXQKCW5vdyBhY2NlcHRzIG9wdGlvbmFsIEFDVElPTi1JRi1ORUVERUQgYW5kIEFDVElPTi1JRi1OT1QtTkVFREVECglwYXJhbWV0ZXJzLiAgQWxzbyBpdCBkb2VzIG5vdCBjYWxsIEFDX0RFRklORS4KCShnY2NfQUNfTkVFRF9ERUNMQVJBVElPTlMpOiBMaWtld2lzZS4gIEFsc28gdGhpcyBtYWNybyBub3cgY2FsbHMKCUFDX0RFRklORSBhbmQgcHJvdmlkZXMgZm9yIGF1dG9tYXRpYyBlbnRyaWVzIGZvciBhdXRvaGVhZGVyLgoJKGdjY19BQ19GVU5DX1BSSU5URl9QVFIpOiBDbGVhbnVwIEMgY29kZSBpbiB0ZXN0LgoKCSogY29uZmlndXJlLmluIChnY2NfQUNfTkVFRF9ERUNMQVJBVElPTlMpOiBTYXZlIGFuZCByZXN0b3JlIENGTEFHUwoJc28gd2UgY2FuIHBhc3MgLUkgZmxhZ3MgYW5kIGluY2x1ZGUgZ2Fuc2lkZWNsLmgvc3lzdGVtLmggaW4gdGhpcwoJdGVzdC4KCgkqIGFjY29uZmlnLmg6IERlbGV0ZSBhbGwgTkVFRF9ERUNMQVJBVElPTl8qIGVudHJpZXMuCgoyMDAwLTA0LTI1ICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBhY2NvbmZpZy5oIChFTkFCTEVfU1REX05BTUVTUEFDRSwgRU5BQkxFX0NIRUNLSU5HLAoJRU5BQkxFX1RSRUVfQ0hFQ0tJTkcsIEVOQUJMRV9SVExfQ0hFQ0tJTkcsIEVOQUJMRV9HQ19DSEVDS0lORywKCUVOQUJMRV9HQ19BTFdBWVNfQ09MTEVDVCk6IERlbGV0ZSBlbnRyaWVzLgoKCSogY29uZmlndXJlLmluIChFTkFCTEVfU1REX05BTUVTUEFDRSwgRU5BQkxFX0NIRUNLSU5HLAoJRU5BQkxFX1RSRUVfQ0hFQ0tJTkcsIEVOQUJMRV9SVExfQ0hFQ0tJTkcsIEVOQUJMRV9HQ19DSEVDS0lORywKCUVOQUJMRV9HQ19BTFdBWVNfQ09MTEVDVCk6IFVzZSB0aHJlZSBhcmd1bWVudCBmb3JtIG9mIEFDX0RFRklORQoJZm9yIHRoZXNlIG1hY3Jvcy4gIENsZWFuIHVwIHNwYWNpbmcgYW5kIGxpbmV3cmFwcy4KCjIwMDAtMDQtMjYgIEphc29uIE1lcnJpbGwgIDxqYXNvbkBjYXNleS5jeWdudXMuY29tPgoKCSogY2FsbHMuYyAoZXhwYW5kX2NhbGwpOiBVc2UgZ2V0X2NhbGxlZV9mbmRlY2wuCgoJKiBwcmludC10cmVlLmMgKHByaW50X25vZGUpOiBQcmludCB0aGUgY2hhaW4gb2YgYW4gX0VYUFIuCgpUdWUgQXByIDI1IDE2OjE2OjA0IDIwMDAgIEFuZHJldyBNYWNMZW9kICA8YW1hY2xlb2RAY3lnbnVzLmNvbT4KCQkJICBKaW0gV2lsc29uICA8d2lsc29uQGN5Z251cy5jb20+CgkJCSAgQW5kcmV3IEhhbGV5ICA8YXBoQGN5Z251cy5jb20+CgoJKiBjb25maWcvaWE2NC9jcnRiZWdpbi5hc206IEFkZCBJQS02NCB1bndpbmQgc3VwcG9ydC4gIENvcnJlY3QgYWxsb2MKCWFuZCBncCBzYXZlL3Jlc3RvcmUgcHJvYmxlbXMuCgkqIGNvbmZpZy9pYTY0L2NydGVuZC5hc206IEFkZCBJQS02NCB1bndpbmQgc3VwcG9ydC4KCSogY29uZmlnL2lhNjQvaWE2NC5jIChpYTY0X2NvbXB1dGVfZnJhbWVfc2l6ZSk6IERvbid0IGluY2x1ZGUgcHJfc2l6ZQoJaW4gZnJfcGFkX3NpemUgY2FsY3VsYXRpb24uCgkoc2F2ZV9yZXN0b3JlX2luc25zKTogTW92ZSBQUiBzYXZlIGFyZWEuICBDb3JyZWN0IHVzZXMgb2YKCVJUWF9GUkFNRV9SRUxBVEVEX1AuCgkoaWE2NF9leHBhbmRfcHJvbG9ndWUpOiBNYXJrIGFsbG9jIHdpdGggUlRYX0ZSQU1FX1JFTEFURURfUC4KCShpYTY0X2V4cGFuZF9lcGlsb2d1ZSk6IEFkZCBlaF9lcGlsb2d1ZSBzdXBwb3J0LgoJKGlhNjRfZnVuY3Rpb25fcHJvbG9ndWUpOiBFbWl0IC5wcm9sb2d1ZSBkaXJlY3RpdmUuCgkoaWE2NF9pbml0X21hY2hpbmVfc3RhdHVzLCBpYTY0X21hcmtfbWFjaGluZV9zdGF0dXMpOiBOZXcgZnVuY3Rpb25zLgoJKGlhNjRfb3ZlcnJpZGVfb3B0aW9ucyk6IFNldCBpbml0X21hY2hpbmVfc3RhdHVzIGFuZAoJbWFya19tYWNoaW5lX3N0YXR1cy4KCShydHhfbmVlZHNfYmFycmllcik6IEhhbmRsZSBic3AgcmVhZHMgYW5kIHdyaXRlcy4KCShzcGlsbF9vZmZzZXQsIHNwX29mZnNldCwgc3BpbGxfb2Zmc2V0X2VtaXR0ZWQsIHRtcF9yZWcsIHRtcF9zYXZlZCk6CglOZXcgc3RhdGljIHZhcmlhYmxlcy4KCShwcm9jZXNzX3NldCwgcHJvY2Vzc19mb3JfdW53aW5kX2RpcmVjdGl2ZSk6IE5ldyBmdW5jdGlvbnMuCgkqIGNvbmZpZy9pYTY0L2lhNjQuaCAoQVNNX09VVFBVVF9YREFUQV9DSEFSLCBBU01fT1VUUFVUX1hEQVRBX1NIT1JULAoJQVNNX09VVFBVVF9YREFUQV9JTlQsIEFTTV9PVVRQVVRfWERBVEFfRE9VQkxFX0lOVCwgQVNNX09VVFBVVF9FSF9DSEFSLAoJQVNNX09VVFBVVF9FSF9TSE9SVCwgQVNNX09VVFBVVF9FSF9JTlQsIEFTTV9PVVRQVVRfRUhfRE9VQkxFX0lOVCk6IE5ldwoJbWFjcm9zLgoJKEVIX0ZSQU1FX1NFQ1RJT05fQVNNX09QKTogRGVmaW5lIHRvIElBXzY0LnVud2luZCBzZWN0aW9uLgoJKElBNjRfVU5XSU5EX0lORk8sIEhBTkRMRVJfU0VDVElPTiwgSUE2NF9VTldJTkRfRU1JVCk6IERlZmluZS4KCShzdHJ1Y3QgbWFjaGluZV9mdW5jdGlvbik6IERlZmluZS4KCSogY29uZmlnL2lhNjQvaWE2NC5tZCAoYnNwX3ZhbHVlLCBzZXRfYnNwLCBlaF9lcGlsb2d1ZSk6IE5ldyBwYXR0ZXJucy4KCjIwMDAtMDQtMjUgIEJydWNlIEtvcmIgIDxia29yYkBnbnUub3JnPgoKCSogZml4aW5jL01ha2VmaWxlLmluOiBtYWtlIHRoZSByZW1vdmFsIG9mIG9sZCBwcm9ncmFtcyBtb3JlCglyb2J1c3QKCSogZml4aW5jL21rZml4aW5jLnNoOiB1c2UgdGhlIHR3byBuZXcgdGFyZ2V0cyBpbiB0aGUgTWFrZWZpbGU6CglpbnN0YWxsLWJpbiBhbmQgaW5zdGFsbC1zaAoKMjAwMC0wNC0yNSAgTmljayBDbGlmdG9uICA8bmlja2NAY3lnbnVzLmNvbT4KCgkqIGludGVncmF0ZS5jIChGVU5DVElPTl9BVFRSSUJVVEVfSU5MSU5BQkxFX1ApOiBJZiBub3QKCWRlZmluZWQsIGRlZmluZSB0byByZXR1cm4gemVyby4KCShmdW5jdGlvbl9jYW5ub3RfaW5saW5lX3ApOiBJZiBhIGZ1bmN0aW9uIGhhcyBhbnkgdGFyZ2V0CglzcGVjaWZpYyBhdHRyaWJ1dGVzLCB0aGVuIHVzZSB0aGUgbWFjcm8KCUZVTkNUSU9OX0FUVFJJQlVURV9JTkxJTkFCTEVfUCB0byBhbGxvdyB0aGUgdGFyZ2V0IHRvIGRlY2lkZQoJd2hldGhlciBpdCBjYW4gYmUgaW5saW5lZC4gIElmIGl0IGNhbm5vdCwgaXNzdWUgYSBzdWl0YWJsZQoJZXhwbGFuYXRpb24uCgoJKiB0bS50ZXhpOiBBZGQgYSBuZXcgbm9kZSAnSW5saW5pbmcnIHRvIGRvY3VtZW50IHRoZSBuZXcgbWFjcm8KCUZVTkNUSU9OX0FUVFJJQlVURV9JTkxJTkFCTEVfUC4KCjIwMDAtMDQtMjUgIFphY2sgV2VpbmJlcmcgIDx6YWNrQHdvbGVyeS5jdW1iLm9yZz4KCgkqIGNwcGxpYi5oIChzdHJ1Y3QgY3BwX2J1ZmZlcik6IEFkZCAnbWFwcGVkJyBmbGFnOyBmaXgKCWNvbW1lbnRhcnkuCgoyMDAwLTA0LTI1ICBOZWlsIEJvb3RoICA8TmVpbEJAZWFydGhsaW5nLm5ldD4KCglSZXN0b3JlIHByZXZpb3VzIHBhdGNoLCBwbHVzIHRoZSBmb2xsb3dpbmcgZml4ZXM6CgoJKiBjcHBoYXNoLmMgKF9jcHBfY3JlYXRlX2RlZmluaXRpb24pOiBUZXN0IFBSRVZfV0hJVEVTUEFDRSBpbgoJZmxhZ3MsIG5vdCBDUFBfT1BFTl9QQVJFTi4KCSogY3BwbGV4LmMgKGV4cGFuZF90b2tlbl9zcGFjZSwgaW5pdF90b2tlbl9saXN0LAoJY3BwX2ZyZWVfdG9rZW5fbGlzdCk6IFB1dCB0aGUgZHVtbXkgdG9rZW4gYXQgbGlzdC0+dG9rZW5zWy0xXS4KCShfY3BwX2xleF9saW5lLCBfY3BwX2xleF9maWxlKTogdG9rZW4gbGlzdCBpcyAwLWJhc2VkLgoKVHVlIEFwciAyNSAxNDowNjo0MCAyMDAwICBBbGV4YW5kcmUgT2xpdmEgIDxvbGl2YUBsc2QuaWMudW5pY2FtcC5icj4KCgkqIGNvbmZpZy9pMzg2L2ZyZWVic2QuaCAoSU5UX0FTTV9PUCk6IERlZmluZS4KClR1ZSBBcHIgMjUgMTQ6NTE6MDcgTUVUIERTVCAyMDAwICBKYW4gSHViaWNrYSAgPGpoQHN1c2UuY3o+CgoJKiBsb29wLmMgKHN0cmVuZ3RoX3JlZHVjZSk6IEZpeCB0eXBvIGluIHRoZSBsYXN0IGNoZWNraW4uCgpUdWUgQXByIDI1IDA3OjMzOjEyIDIwMDAgIFJpY2hhcmQgS2VubmVyICA8a2VubmVyQHZsc2kxLnVsdHJhLm55dS5lZHU+CgoJKiBzdG9yLWxheW91dC5jIChmaW5hbGl6ZV9yZWNvcmRfc2l6ZSk6IFNpbXBsaWZ5IHRvIHVzZSBleGlzdGluZwoJZnVuY3Rpb25zLgoJKGNvbXB1dGVfcmVjb3JkX21vZGUpOiBObyBsb25nZXIgc3RhdGljLgoJKiB0cmVlLmggKGNvbXB1dGVfcmVjb3JkX21vZGUpOiBOZXcgZGVjbGFyYXRpb24uCgoyMDAwLTA0LTI1ICBOZWlsIEJvb3RoICA8TmVpbEJAZWFydGhsaW5nLm5ldD4KCgkqIFJldmVydCBteSBwYXRjaCBiZWxvdyB1bnRpbCBjYXVzZSBvZiBidWlsZCBmYWlsdXJlcwoJZGV0ZXJtaW5lZC4KCjIwMDAtMDQtMjUgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgoJKiBjb21iaW5lLmMgKGNvbWJpbmVfaW5zdHJ1Y3Rpb25zKTogQWRkIG1pc3NpbmcgYXJndW1lbnQKCXRvIHRyeV9jb21iaW5lLgoKCSogdG9wbGV2LmMgKHJlc3Rfb2ZfY29tcGlsYXRpb24pOiBEZWxheSBzaWJjYWxsIG9wdGltaXphdGlvbgoJdW50aWwgYWZ0ZXIgZW1pdF9laF9jb250ZXh0LgoKMjAwMC0wNC0yNCAgTmljayBDbGlmdG9uICA8bmlja2NAcmVkaGF0LmNvbT4KCgkqIGNvbWJpbmUuYyAoY29tYmluZV9pbnN0cnVjdGlvbnMpOiBEbyBub3QgdHJ5IHRvIGNvbWJpbmUgYQoJc2VxdWVuY2Ugb2YgaW5zbnMgd2hlbiB0aGUgc2Vjb25kIGluc24gaGFzIGJlZW4gcmVwbGFjZWQgYnkgYQoJbm90ZS4KCk1vbiBBcHIgMjQgMTc6MzQ6MTggMjAwMCAgTXVtaXQgS2hhbiAgPGtoYW5AeHJheWxpdGgud2lzYy5lZHU+CgoJKiBnY2MuYyAobG9hZF9zcGVjcyk6IE5ldyBzdGF0aWMgZnVuY3Rpb24uCgkocmVhZF9zcGVjcyk6IFVzZSBpdC4KCgkqIGdjYy5jIChsb29rdXBfY29tcGlsZXIpOiBNYWtlIG11bHRpcGxlIHBhc3NlcyBmb3IgY2FzZQoJaW5zZW5zaXRpdmUgZmlsZXN5c3RlbXMuCgoyMDAwLTA0LTI0ICBOZWlsIEJvb3RoICA8TmVpbEJAZWFydGhsaW5nLm5ldD4KCgkqIGNwcGhhc2guYzogcmVwbGFjZSBIU1BBQ0VfQkVGT1JFIHdpdGggUFJFVl9XSElURVNQQUNFLgoJKiBjcHBoYXNoLmggKF9jcHBfY2hlY2tfZGlyZWN0aXZlKTogbmV3LgoJKiBjcHBsZXguYyAoaGFuZGxlX25ld2xpbmUsIGNwcF9mcmVlX3Rva2VuX2xpc3QsCglpbml0X3RyaWdyYXBoX21hcCwgdHJpZ3JhcGhfb2ssIHRyaWdyYXBoX3JlcGxhY2UsCgliYWNrc2xhc2hfc3RhcnQsIHNraXBfYmxvY2tfY29tbWVudCwgc2tpcF9saW5lX2NvbW1lbnQsCglza2lwX3doaXRlc3BhY2UsIHBhcnNlX25hbWUsIHBhcnNlX251bWJlciwgcGFyc2Vfc3RyaW5nLAoJY29weV9jb21tZW50LCBfY3BwX2xleF9saW5lLCBzcGVsbF9jaGFyLCBzcGVsbF9zdHJpbmcsCglzcGVsbF9jb21tZW50LCBzcGVsbF9uYW1lLCBzcGVsbF9vdGhlciwgX2NwcF9sZXhfZmlsZSwKCV9jcHBfb3V0cHV0X2xpc3QpOiBuZXcuCgkoZXhwYW5kX25hbWVfc3BhY2UpOiB0YWtlIGxlbmd0aCBhcmd1bWVudC4KCShpbml0X3Rva2VuX2xpc3QpOiBhZGQgY29tbWVudCBsaXN0IGluaXRpYWxpc2F0aW9uLgoJKGNwcF9zY2FuX2xpbmUpOiB1c2UgYXV0b19leHBhbmRfbmFtZV9zcGFjZS4gIFBSRVZfV0hJVEVTUEFDRQoJaW5zdGVhZCBvZiBIU1BBQ0VfQkVGT1JFLgoKCSogY3BwbGliLmMgKF9jcHBfY2hlY2tfZGlyZWN0aXZlKTogbmV3CgkqIGNwcGxpYi5oIChjcHBfbmFtZSwgUFJFVl9XSElURVNQQUNFLCBQUkVWX0NPTU1FTlQsCglESUdSQVBILCBVTlNJR05FRF9JTlQsIFRPS19OQU1FKTogbmV3LgoJKEhTUEFDRV9CRUZPUkUpOiBkZWxldGUuCgkoVFRZUEVfVEFCTEUpOiByZWFycmFuZ2UuCgkoc3RydWN0IGNwcF90b2tsaXN0KTogdXBkYXRlLgoKMjAwMC0wNC0yNCAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogYWNsb2NhbC5tNCAoZ2NjX0FDX0hFQURFUl9TVFJJTkcsIGdjY19BQ19GVU5DX1BSSU5URl9QVFIsCglnY2NfQUNfQ19WT0xBVElMRSwgZ2NjX0FDX0ZVTkNfTUtESVJfVEFLRVNfT05FX0FSRyk6IFVzZSB0aGUgdGhyZWUKCWFyZ3VtZW50IGZvcm0gb2YgQUNfREVGSU5FLgoKCSogY29uZmlndXJlLmluIChERUZBVUxUX0xJTktFUiwgREVGQVVMVF9BU1NFTUJMRVIsCglIQVZFX0lOVFRZUEVTX0gsIFBBQ0tBR0UsIFZFUlNJT04sIEVOQUJMRV9XSU4zMl9SRUdJU1RSWSwKCVdJTjMyX1JFR0lTVFJZX0tFWSwgSEFWRV9HQVNfU1VCU0VDVElPTl9PUkRFUklORywgSEFWRV9HQVNfV0VBSywKCUhBVkVfR0FTX0hJRERFTiwgSEFWRV9BU19SRUdJU1RFUl9QU0VVRE9fT1AsIEFTX1NQQVJDNjRfRkxBRywKCUhBVkVfQVNfT0ZGU0VUQUJMRV9MTzEwLCBFTkFCTEVfTkVXX0dYWF9BQkkpOiBMaWtld2lzZS4KCgkqIGFjY29uZmlnLmg6IERlbGV0ZSBzdHVicyBtYWRlIHJlZHVuZGFudCBieSAzLWFyZyBBQ19ERUZJTkUuCgoyMDAwLTA0LTI0ICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBNYWtlZmlsZS5pbiAoR0NDX0ZPUl9UQVJHRVQsIEdDQ19DRkxBR1MsIExJQkdDQzJfSU5DTFVERVMsCglkZWR1Y2VkLmgpOiBVc2UgLWlzeXN0ZW0sIG5vdCAtSSwgZm9yIGluY2x1ZGluZyBzeXN0ZW0gaGVhZGVycy4KCjIwMDAtMDQtMjQgIE5pY2sgQ2xpZnRvbiAgPG5pY2tjQGN5Z251cy5jb20+CgoJKiBjb25maWcvZnIzMC9mcjMwLm1kIChhZGRzaTMpOiBEbyBub3QgdXNlIHNtYWxsIGFkZCBpbnN0cnVjdGlvbiBpZgoJdGhlIHNvdXJjZSByZWdpc3RlciBpcyB0aGUgZnJhbWUgcG9pbnRlciBvciBhcmcgcG9pbnRlci4KCShhZGRzaTNfc21hbGxfaW50KTogRGlzYWxsb3cgaWYgc291cmNlIHJlZ2lzdGVyIGlzIHRoZSBmcmFtZQoJcG9pbnRlciBvciBhcmcgcG9pbnRlci4KCjIwMDAtMDQtMjQgIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIGNvbmZpZ3VyZS5pbiAoRU5VTV9CSVRGSUVMRFNfQVJFX1VOU0lHTkVEKTogRGVsZXRlIHJlZHVuZGFudAoJY2FsbCB0byBBQ19NU0dfUkVTVUxULgoKMjAwMC0wNC0yNCAgTWFydGluIHYuIEz2d2lzICA8bG9ld2lzQGluZm9ybWF0aWsuaHUtYmVybGluLmRlPgoKCSogaW52b2tlLnRleGk6IENvcnJlY3QgZ3JhbW1hdGljYWwgZXJyb3JzLCBkb2N1bWVudAoJLWZuby1nbnUta2V5d29yZHMgYXMgaWRlbnRpY2FsIHRvIC1mbm8tYXNtIGZvciBDKysuCgoyMDAwLTA0LTI0ICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBhY2xvY2FsLm00OiAoR0NDX0hFQURFUl9TVFJJTkcsIEdDQ19ORUVEX0RFQ0xBUkFUSU9OLAoJR0NDX05FRURfREVDTEFSQVRJT05TLCBHQ0NfRlVOQ19WRlBSSU5URl9ET1BSTlQsCglHQ0NfRlVOQ19QUklOVEZfUFRSLCBHQ0NfUFJPR19MTl9TLCBHQ0NfUFJPR19MTiwgR0NDX0NfVk9MQVRJTEUsCglBQ19HQ0NfQ19MT05HX0RPVUJMRSwgR0NDX0ZVTkNfTUtESVJfVEFLRVNfT05FX0FSRywKCUVHQ1NfUFJPR19JTlNUQUxMKTogUmVuYW1lIGF1dG9jb25mIG1hY3JvcyB3aXRoIHByZWZpeCBnY2NfQUNfLgoKCSogY29uZmlndXJlLmluIChBQ19HQ0NfQ19MT05HX0RPVUJMRSwgR0NDX1BST0dfTE4sIEdDQ19QUk9HX0xOX1MsCglHQ0NfQ19WT0xBVElMRSwgRUdDU19QUk9HX0lOU1RBTEwsIEdDQ19IRUFERVJfU1RSSU5HLAoJR0NDX0ZVTkNfVkZQUklOVEZfRE9QUk5ULCBHQ0NfRlVOQ19QUklOVEZfUFRSLAoJR0NDX05FRURfREVDTEFSQVRJT05TLCBHQ0NfRlVOQ19NS0RJUl9UQUtFU19PTkVfQVJHKTogSW52b2tlIHdpdGgKCW5ldyBtYWNyb3MgbmFtZXMuCgoyMDAwLTA0LTI0ICBNdW1pdCBLaGFuICA8a2hhbkB4cmF5bGl0aC53aXNjLmVkdT4KCgkqIGMtcHJhZ21hLmMgKHB1c2hfYWxpZ25tZW50KTogVXNlIEJJVFNfUEVSX1VOSVQgbWFjcm8uCgkocG9wX2FsaWdubWVudCk6IExpa2V3aXNlLgoJKGhhbmRsZV9wcmFnbWFfdG9rZW4pOiBMaWtld2lzZS4KCjIwMDAtMDQtMjQgIFJvYmVydCBMaXBlIDxyb2JlcnRsaXBlQHVzYS5uZXQ+CgoJKiB0cmVlLmggKHRyZWVfZGVjbCk6IE1lbWJlciBgbW9kZScgbm93IEVOVU1fQklURklFTEQuCgoyMDAwLTA0LTI0ICBIaXJveXVraSBNYWNoaWRhIDxtYWNoaWRhQHNtLnNvbnkuY28uanA+CgoJKiBjb21iaW5lLmMgKHRyeV9jb21iaW5lKTogVXBkYXRlIHJlZ19ub256ZXJvX2JpdHMgb2YKCW5ld2kycGF0IGJlZm9yZSBuZXdwYXQuCgpNb24gQXByIDI0IDEwOjE5OjQ4IE1FVCBEU1QgMjAwMCAgSmFuIEh1Ymlja2EgIDxqaEBzdXNlLmN6PgoKCSogbG9vcC5jIChzdHJlbmd0aF9yZWR1Y2UpOiBTaW1wbGlmeSB0ZXN0IHRvIElOU05fUC4KCShyZWNvcmRfZ2l2KTogQXR0ZW1wdCB0byBzaW1wbGlmeSB0aGUgYWRkIHZhbHVlLCB1c2UgQ09OU1RBTlRfUAoJZXhwcmVzc2lvbnMgaW5zdGVhZCBvZiBDT05TVF9JTlQuCgkoZXhwcmVzc19mcm9tXzEpOiBMaWtld2lzZS4KCjIwMDAtMDQtMjQgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiByZWdzLmggKHJlZ19uX21heCk6IERvbid0IGRlY2xhcmUuCgkqIGZsb3cuYyAocmVnX25fbWF4KTogRG9uJ3QgZGVmaW5lLgoJKiByZWdjbGFzcy5jIChyZW51bWJlcik6IERvbid0IGluaXRpYWxpemUgdG8gemVyby4KCShyZWdub19hbGxvY2F0ZWQpOiBMaWtld2lzZS4KCShyZWdfbl9tYXgpOiBEZWZpbmUuCgkoYWxsb2NhdGVfcmVnX2luZm8pOiBEb24ndCBpbml0aWFsaXplIHVubmVjZXNzYXJpbHkuCgpNb24gQXByIDI0IDAwOjIxOjM2IDIwMDAgIEplZmZyZXkgQSBMYXcgIChsYXdAY3lnbnVzLmNvbSkKCgkqIGdlbmF0dHJ0YWIuYyAoZmluZF9hdHRyKTogSW5pdGlhbGl6ZSB1bnNpZ25lZF9wLCBmdW5jX3VuaXRzX3AKCWFuZCBibG9ja2FnZV9wIGluIHRoZSBuZXdseSBhbGxvY2F0ZWQgYXR0cmlidXRlLgoKU3VuIEFwciAyMyAyMDoxNjo0OSAyMDAwICBBbGV4YW5kcmUgT2xpdmEgIDxhb2xpdmFAY3lnbnVzLmNvbT4KCgkqIGNvbmZpZy9tbjEwMzAwL21uMTAzMDAubWQgKGFkZHNpKTogYGluYzQnIG9uIGFkZHJlc3MKCXJlZ2lzdGVycyBkb2VzIG5vdCBtb2RpZnkgY2MsIGJ1dCBgaW5jJyBvbiBhbiBleHRlbmRlZAoJcmVnaXN0ZXIgZG9lcy4KClN1biBBcHIgMjMgMTY6MjQ6MzUgMjAwMCAgRGVuaXMgQ2hlcnR5a292ICA8ZGVuaXNjQG92ZXJ0YS5ydT4KCgkqIHJlbG9hZC5jIChmaW5kX2VxdWl2X3JlZyk6IENoZWNrcyBhbGwgdmFsdWVubyByZWdzCglhcyBhIHJlbG9hZF9yZWdfcCByZWdzLgoKMjAwMC0wNC0yMyAgWmFjayBXZWluYmVyZyAgPHphY2tAd29sZXJ5LmN1bWIub3JnPgoKCSogY3BwaGFzaC5jIChjb2xsZWN0X29iamxpa2VfZXhwYW5zaW9uKTogQWRkIHNhbml0eSBjaGVjay4KCShzcGVjaWFsX3N5bWJvbCk6IFJlbW92ZSBjYXNlIFRfQ09OU1QsIFRfWENPTlNULCBUX01DT05TVC4gIElmCgl0aGUgYnVmZmVyIGlzIHRoZSBlbXB0eSBzdHJpbmcsIHJldHVybi4gIE1hcmsgX19EQVRFX18gYW5kCglfX1RJTUVfXyBhcyBYQ09OU1Qgbm9kZXMsIG5vdCBNQ09OU1QuCgkoX2NwcF9tYWNyb2V4cGFuZCk6IEF2b2lkIHB1c2hpbmcgYW4gZW1wdHkgYnVmZmVyLgoJKGZ1bmxpa2VfbWFjcm9leHBhbmQpOiBEb24ndCBwb3AgdG9rZW5fYnVmZmVyIGhlcmUuCgpTdW4gQXByIDIzIDE4OjM3OjUzIDIwMDAgIEFsZXhhbmRyZSBPbGl2YSAgPGFvbGl2YUBjeWdudXMuY29tPgoKCSogY29uZmlnL21uMTAzMDAvbW4xMDMwMC5oIChSRUdOT19JTl9SQU5HRV9QKTogTmV3IG1hY3JvLgoJKFJFR05PX0RBVEFfUCwgUkVHTk9fQUREUkVTU19QLCBSRUdOT19TUF9QKTogTmV3IG1hY3Jvcy4KCShSRUdOT19FWFRFTkRFRF9QLCBSRUdOT19BTTMzX1ApOiBOZXcgbWFjcm9zLgoJKFJFR05PX09LX0ZPUl9CQVNFX1ApOiBEZWZpbmUgaW4gdGVybXMgb2YgdGhlbS4KCShSRUdOT19PS19GT1JfQklUX0JBU0VfUCwgUkVHTk9fT0tfRk9SX0lOREVYX1ApOiBMaWtld2lzZS4KCShSRUdfT0tfRk9SX0JBU0VfUCk6IERlZmluZSBpbiB0ZXJtcyBvZiB0aGUgUkVHTk8gbWFjcm8uCgkoUkVHX09LX0ZPUl9CSVRfQkFTRV9QLCBSRUdfT0tfRk9SX0lOREVYX1ApOiBMaWtld2lzZS4KClN1biBBcHIgMjMgMjI6MjM6MDggTUVUIERTVCAyMDAwICBKYW4gSHViaWNrYSAgPGpoQHN1c2UuY3o+CgoJKiBsb29wLmMgKHNpbXBsaWZ5X2dpdl9leHByKTogIEJlIG1vcmUgYWdyZXNzaXZlIG9uIHNpbXBsaWZ5aW5nCgljb25zdGFudCBNVUxUIGdpdnMuCgoyMDAwLTA0LTIzICBaYWNrIFdlaW5iZXJnICA8emFja0B3b2xlcnkuY3VtYi5vcmc+CgoJKiBjcHBoYXNoLmggKHN0cnVjdCBkZWZpbml0aW9uKTogTW92ZSBmaWxlLCBsaW5lLCBjb2wgbWVtYmVycy4uLgoJKHN0cnVjdCBoYXNobm9kZSk6IC4uLiBoZXJlLiAgQWxzbyBhZGQgJ2Rpc2FibGVkJyBmbGFnLgoJKGVudW0gbm9kZV90eXBlKTogQWRkIFRfVk9JRCwgVF9YQ09OU1QsIFRfRk1BQ1JPLCBhbmQKCVRfSURFTlRJVFkuICBSZW1vdmUgVF9ESVNBQkxFRC4KCVVwZGF0ZSBwcm90b3R5cGVzLgoKCSogY3BwaGFzaC5jIChfY3BwX2R1bXBfZGVmaW5pdGlvbik6IFNwbGl0IG91dCBkdW1wX0RFRklOSVRJT04uCgkoY29sbGVjdF9leHBhbnNpb24pOiBTcGxpdCBpbnRvIGNvbGxlY3Rfb2JqbGlrZV9leHBhbnNpb24gYW5kCgljb2xsZWN0X2Z1bmxpa2VfZXhwYW5zaW9uLgoJKF9jcHBfbWFjcm9leHBhbmQpOiBTcGxpdCBvdXQgc2Nhbl9hcmd1bWVudHMsIHN0cmluZ2lmeSwgYW5kCglmdW5saWtlX21hY3JvZXhwYW5kLgoJKF9jcHBfY29tcGFyZV9kZWZzKTogUmVuYW1lIGNvbXBhcmVfZGVmcywgbWFrZSBzdGF0aWMuCgkoX2NwcF9tYWtlX2hhc2hub2RlKTogSW5pdGlhbGl6ZSBocC0+ZGlzYWJsZWQuCgkobWFjcm9fY2xlYW51cCk6IEFkanVzdCBmb3IgbmV3IHRva2VuIHR5cGVzLiAgQ2xlYXIKCW0tPmRpc2FibGVkLgoJKF9jcHBfY3JlYXRlX2RlZmluaXRpb24pOiBNb3ZlIGNvZGUgaGVyZSB0byBkZXRlcm1pbmUgd2hhdAoJc29ydCBvZiBtYWNybyBpdCBpcywgYW5kIGNvZGUgdG8gY2hlY2sgZm9yIHJlZGVmaW5pdGlvbnMsIGZyb20KCWRvX2RlZmluZS4gIEltcGxlbWVudCBhIGZldyBzaW1wbGUgY2FzZXMgd2l0aG91dCBjcmVhdGluZyBhCglmdWxsIERFRklOSVRJT04uCgkoX2NwcF9tYWNyb2V4cGFuZCwgc3BlY2lhbF9zeW1ib2wsIF9jcHBfZHVtcF9kZWZpbml0aW9uKToKCUhhbmRsZSB0aGUgc2ltcGxlIGNhc2VzLgoJKHB1c2hfbWFjcm9fZXhwYW5zaW9uKTogU2V0IGJ1Zi0+aGFzX2VzY2FwZXMgYW5kIGhwLT5kaXNhYmxlZAoJaGVyZS4KCgkqIGNwcGluaXQuYyAoYnVpbHRpbl9hcnJheSk6IENoYW5nZSBNQ09OU1QgdG8gWENPTlNUCglldmVyeXdoZXJlLgoJKiBjcHBsZXguYyAobWF5YmVfbWFjcm9leHBhbmQpOiBIYW5kbGUgSURFTlRJVFkgbWFjcm9zIGhlcmU7CglmaXggY2hlY2sgZm9yIGRpc2FibGVkIGFuZCBmdW5jdGlvbi1saWtlIG1hY3Jvcy4KCSogY3BwbGliLmMgKGRvX2RlZmluZSk6IE1vdmUgbW9zdCBsb2dpYyB0bwoJX2NwcF9jcmVhdGVfZGVmaW5pdGlvbi4KCShkb191bmRlZik6IEhhbmRsZSBuZXcgc3BlY2lhbCB0b2tlbiB0eXBlcy4KClN1biBBcHIgMjMgMTQ6Mjc6NDQgTUVUIERTVCAyMDAwICBKYW4gSHViaWNrYSAgPGpoQHN1c2UuY3o+CgoJKiBsb29wLmMgKG1heWJlX2VsaW1pbmF0ZV9iaXZfMSk6IFVzZSBHRVRfQ09ERSAoeCkgPT0gQ09OU1RfSU5UIGluc3RlYWQKCW9mIENPTlNUQU5UX1AgZm9yIG11bHRfdmFsOyBhbHdheXMgdXNlIHZhbGlkYXRlX2NoYW5nZSB0byB1cGRhdGUgaW5zbi4KCjIwMDAtMDQtMjIgIFphY2sgV2VpbmJlcmcgIDx6YWNrQHdvbGVyeS5jdW1iLm9yZz4KCgkqIGNwcGhhc2guYyAodHJhZF9zdHJpbmdpZnksIGFkZF9wYXQpOiBOZXcgZnVuY3Rpb25zLgoJKGNvbGxlY3RfZXhwYW5zaW9uKTogUmVzdG9yZSBzdXBwb3J0IGZvciAtdHJhZGl0aW9uYWwgc3ludGF4LgoJVXNlIHRyYWRfc3RyaW5naWZ5IGFuZCBhZGRfcGF0LgoJKF9jcHBfbWFjcm9leHBhbmQpOiBSZXN0b3JlIHN1cHBvcnQgZm9yIC10cmFkaXRpb25hbCBzZW1hbnRpY3MuCgkqIGNwcGxleC5jIChfY3BwX3NjYW5fbGluZSk6IERvbid0IGNoYW5nZSBzcGFjZV9iZWZvcmUgaWYgd2UKCWdldCBhIENPTU1FTlQgdG9rZW4uCgkoX2NwcF9sZXhfdG9rZW4pOiBQcm92aWRlIENPTU1FTlQgdG9rZW5zIHRvIGNhbGxlciBpZgoJdHJhZGl0aW9uYWwgYW5kIHBhcnNpbmdfZGVmaW5lX2RpcmVjdGl2ZS4KCShza2lwX2NvbW1lbnQpOiBXYXJuIGFib3V0IC8vIGNvbW1lbnRzIGlmIC1XdHJhZGl0aW9uYWwuCgkqIGNwcGxpYi5jIChkb19kZWZpbmUpOiBGaXggdHlwby4gIENyZWF0ZSBFTVBUWSBub2RlcyB3aXRoCglwcm9wZXIgbm9kZSB0eXBlLgoJKGRvX3VuZGVmKTogRG9uJ3Qgd2FybiBhYm91dCB1bmRlZmluaW5nIEVNUFRZIG5vZGVzLgoKU2F0IEFwciAyMiAyMjozNTozOCBNRVQgRFNUIDIwMDAgIEphbiBIdWJpY2thICA8amhAc3VzZS5jej4KCgkqIGxvb3AuYyAoc3RyZW5ndGhfcmVkdWNlKTogRml4IGJpdiByZW1vdmFsIGNvZGUuCgoyMDAwLTA0LTIyICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEBjeWdudXMuY29tPgoKCSogcHJlZGljdC5jIChlc3RpbWF0ZV9wcm9iYWJpbGl0eSk6IEV4YW1pbmUgYm90aCBzaWRlcyBvZgoJYSBicmFuY2ggZm9yIG5vIGV4aXRzLiAgVXNlIDkwJSBub3QgNTAlIGZvciBwcmVkaWN0IHRha2VuLgoJUmVvcmcgZm9yIG9uZSBjb3B5IG9mIG5vdGUgZ2VuZXJhdGlvbiBjb2RlLgoKMjAwMC0wNC0yMiAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAY3lnbnVzLmNvbT4KCgkqIGZsb3cuYyAobWFya191c2VkX3JlZyk6IEhhY2sgYXJvdW5kIHJzNjAwMCBlbGltaW5hYmxlIHBpYyByZWcuCgoyMDAwLTA0LTIyICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEBjeWdudXMuY29tPgoKCSogZGlhZ25vc3RpYy5jIChpbml0X291dHB1dF9idWZmZXIpOiBEb24ndCBpbml0aWFsaXplIGZvcm1hdF9hcmdzLgoJKG91dHB1dF9jbGVhcik6IExpa2V3aXNlLgoJKG91dHB1dF9wcmludGYpOiBVc2UgdmFfY29weS4KCSh2bGluZV93cmFwcGVyX21lc3NhZ2Vfd2l0aF9sb2NhdGlvbik6IExpa2V3aXNlLgoJKHZfbWVzc2FnZV93aXRoX2RlY2wpOiBMaWtld2lzZS4KCShsaW5lX3dyYXBwZXJfcHJpbnRmKTogVkFfU1RBUlQgaW5mb3IgYnVmZmVyLmZvcm1hdF9hcmdzIGRpcmVjdGx5LgoJKiBzeXN0ZW0uaCAodmFfY29weSk6IFByb3ZpZGUgZGVmYXVsdCBpbXBsZW1lbnRhdGlvbi4KCjIwMDAtMDQtMjIgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgoJKiBwcmVkaWN0LmMgKGV4cGVjdGVkX3ZhbHVlX3RvX2JyX3Byb2IpOiBEb24ndCBib21iIGlmIG9wMSBvZgoJdGhlIGNvbGxlY3RlZCBjb25kaXRpb24gaXMgbm90IGEgY29uc3RhbnQuCgoyMDAwLTA0LTIyICBHYWJyaWVsIERvcyBSZWlzICA8Z2RyQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBkaWFnbm9zdGljLmg6IE5ldyBmaWxlLgoKCSogTWFrZWZpbGUuaW4gKGRpYWdub3N0aWMubyk6IERlcGVuZHMgb24gZGlhZ25vc3RpYy5oCgoJKiBkaWFnbm9zdGljLmM6IFR3ZWFrLiAgUmF0aW9uYWxpemUgdGhlIG91dHB1dCBsb2dpYy4gIEFkanVzdAoJdmFyaW91cyBmdW5jdGlvbiBwcm90b3R5cGVzLgoJKGRpYWdub3N0aWMuaCk6ICNpbmNsdWRlLgoJKHN0cnVjdCBvdXRwdXRfYnVmZmVyKTogTW92ZSBpbnRvIGRpYWdub3N0aWMuaC4KCShnZXRfb3V0cHV0X3ByZWZpeCk6IFJlbmFtZSB0byBvdXRwdXRfZ2V0X3ByZWZpeC4gIEV4cG9ydC4KCShpbml0X291dHB1dF9idWZmZXIpOiBFeHBvcnQuIEJyZWFrIG91dC4gIEFkanVzdCBpbml0aWFsaXphdGlvbi4KCShvdXRwdXRfc3BhY2VfbGVmdCwgb3V0cHV0X2FwcGVuZCk6IEV4cG9ydC4KCShvdXRwdXRfbmV3bGluZSk6IFJlbmFtZSB0byBvdXRwdXRfYWRkX25ld2xpbmUuICBFeHBvcnQuCgkob3V0cHV0X2NsZWFyKTogTnVsbGlmeSBhZGRpdGlvbmFsIG91dHB1dF9idWZmZXIgZmllbGRzLgoJKG91dHB1dF9wdXRzKTogUmVuYW1lIHRvIG91dHB1dF9hZGRfc3RyaW5nLiAgRXhwb3J0LgoJKGR1bXBfb3V0cHV0KTogUmVuYW1lIHRvIG91dHB1dF9mbHVzaF9vbi4gIEV4cG9ydC4KCShidWlsZF9sb2NhdGlvbl9wcmVmaXgpOiBDb25zdGlmeSByZXR1cm4tdHlwZS4KCShlbWl0X291dHB1dF9wcmVmaXgpOiBSZW5hbWUgdG8gb3V0cHV0X2VtaXRfcHJlZml4LiBFeHBvcnQuCgkoc2V0X3JlYWxfbWF4aW11bV9sZW5ndGgpOiBOZXcgZnVuY3Rpb24uCgkob3V0cHV0X3NldF9tYXhpbXVtX2xlbmd0aCk6IERpdHRvCgkob3V0cHV0X2NsZWFyKTogRGl0dG8uCgkob3V0cHV0X2FkZF9jaGFyYWN0ZXIpOiBEaXR0by4KCShvdXRwdXRfYWRkX2ludGVnZXIpOiBEaXR0by4KCShvdXRwdXRfYWRkX3NwYWNlKTogRGl0dG8uCgkob3V0cHV0X2Zvcm1hdCk6IERpdHRvLgoJKG91dHB1dF9wcmludGYpOiBBZGp1c3QgYnVmZmVyIGluaXRpYWxpemF0aW9uLgoJKHZsaW5lX3dyYXBwZXJfbWVzc2FnZV93aXRoX2xvY2F0aW9uKTogRGl0dG8uCgkodl9tZXNzYWdlX3dpdGhfZGVjbCk6IERpdHRvLiAgQWRqdXN0IGNhbGwgdG8gb3V0cHV0X3B1dHMKCWFuZCBnZXRfb3V0cHV0X3ByZWZpeC4KCShkZWZhdWx0X3ByaW50X2Vycm9yX2Z1bmN0aW9uKTogQWRqdXN0IGJ1ZmZlciBpbml0aWFsaXphdGlvbi4KClNhdCBBcHIgMjIgMDY6NDU6MDQgMjAwMCAgUmljaGFyZCBLZW5uZXIgIDxrZW5uZXJAdmxzaTEudWx0cmEubnl1LmVkdT4KCgkqIGV4cHIuYyAocHJlZXhwYW5kX2NhbGxzLCBjYXNlIENBTExfRVhQUik6IERvbid0IGxvb2sgYXQgVFlQRV9TSVpFCglvZiBWT0lEX1RZUEUuCgpGcmkgQXByIDIxIDE4OjMzOjA5IDIwMDAgIEFsZXhhbmRyZSBPbGl2YSAgPGFvbGl2YUBjeWdudXMuY29tPgoKCSogY29uZmlnL21uMTAzMDAvbW4xMDMwMC5oIChSRUdOT19SRUdfQ0xBU1MpOiBVc2UgTk9fUkVHUyBpbnN0ZWFkCglvZiBleHBsaWNpdCAwLgoKRnJpIEFwciAyMSAxODozMDowMCAyMDAwICBBbGV4YW5kcmUgT2xpdmEgIDxhb2xpdmFAY3lnbnVzLmNvbT4KCgkqIGNvbmZpZy9tbjEwMzAwL21uMTAzMDAuaCAoUkVHSVNURVJfTU9WRV9DT1NUKTogUHJvdmlkZSBtb3JlCglhY2N1cmF0ZSBkYXRhIGFib3V0IFNQIG1vdmVzLgoKRnJpIEFwciAyMSAxODoyODoyOCAyMDAwICBBbGV4YW5kcmUgT2xpdmEgIDxhb2xpdmFAY3lnbnVzLmNvbT4KCgkqIGNvbmZpZy9tbjEwMzAwL21uMTAzMDAuaCAoQURESVRJT05BTF9SRUdJU1RFUl9OQU1FUyk6IEFkZGVkCglhbGlhc2VzIHRvIEFNMzMgcmVnaXN0ZXJzLgoKRnJpIEFwciAyMSAxODoyNjoxNyAyMDAwICBBbGV4YW5kcmUgT2xpdmEgIDxhb2xpdmFAY3lnbnVzLmNvbT4KCgkqIGNvbmZpZy9tbjEwMzAwL21uMTAzMDAuaCAoUkVHX0NMQVNTX0NPTlRFTlRTKTogQWRkZWQgcmVnaXN0ZXIgMTYKCXRvIGFsbCBFWFRFTkRFRCBiaXRtYXBzLgoKRnJpIEFwciAyMSAxODoxNzoxMiAyMDAwICBBbGV4YW5kcmUgT2xpdmEgIDxhb2xpdmFAY3lnbnVzLmNvbT4KCgkqIGNvbmZpZy9tbjEwMzAwL21uMTAzMDAtcHJvdG9zLmggKG1uMTAzMDBfYWRkcmVzc19jb3N0KTogRGVjbGFyZS4KCSogY29uZmlnL21uMTAzMDAvbW4xMDMwMC5oIChBRERSRVNTX0NPU1QpOiBOZXcgbWFjcm8uCgkqIGNvbmZpZy9tbjEwMzAwL21uMTAzMDAuYyAobW4xMDMwMF9hZGRyZXNzX2Nvc3QpOiBOZXcgZnVuY3Rpb24uCgpGcmkgQXByIDIxIDE4OjExOjU2IDIwMDAgIEFsZXhhbmRyZSBPbGl2YSAgPGFvbGl2YUBjeWdudXMuY29tPgoKCSogY29uZmlnL21uMTAzMDAvbW4xMDMwMC5tZCAobW92ZGksIG1vdmRmKTogRG8gbm90IHVzZSBgbW92dScgd2hlbgoJdGhlIG9wZXJhbmQgaXMgbm90IGNvbnN0YW50LgoKRnJpIEFwciAyMSAxNDo1ODoyOSAyMDAwICBEZW5pcyBDaGVydHlrb3YgIDxkZW5pc2NAb3ZlcnRhLnJ1PgoKCSogcmVsb2FkLmMgKGZpbmRfZXF1aXZfcmVnKTogQ2hlY2tzIGFsbCB2YWx1ZW5vIGFuZCByZWdubyByZWdzCglhcyBhIGNhbGwtY2xvYmJlcmVkIHJlZ3MuCgpGcmkgQXByIDIxIDEzOjMwOjI2IDIwMDAgIFJpY2hhcmQgS2VubmVyICA8a2VubmVyQHZsc2kxLnVsdHJhLm55dS5lZHU+CgoJKiBydGwuYzogVXNlIE5PVEVfSU5TTl9SRVBFQVRFRF9MSU5FX05VTUJFUiBhbmQgTk9URV9JTlNOX1JBTkdFX0JFRy4KCSogcnRsLmg6IExpa2V3aXNlLgoJKiBydGwuZGVmOiBVcGRhdGUgY29tbWVudC4KCSogZnVuY3Rpb24uYyAoZXhwYW5kX2Z1bmN0aW9uKTogVXNlIE5PVEVfSU5TTl9SRVBFQVRFRF9MSU5FX05VTUJFUi4KCSogaW50ZWdyYXRlLmMgKGV4cGFuZF9pbmxpbmVfZnVuY3Rpb24pOiBMaWtld2lzZS4KCSogcHJvZmlsZS5jIChicmFuY2hfcHJvYik6IExpa2V3aXNlLgoJKiBnZ2MtY29tbW9uLmMgKGdnY19tYXJrX3J0eF9jaGlsZHJlbik6IFVzZSBOT1RFX0lOU05fUkFOR0VfQkVHLgoJKiBwcmludC1ydGwuYyAocHJpbnRfcnR4KTogTGlrZXdpc2UuCgkqIGhhaWZhLXNjaGVkLmMgKHNjaGVkX2FuYWx5emUsIHVubGlua19vdGhlcl9ub3Rlcyk6IExpa2V3aXNlLgoJKHJlZW1pdF9ub3Rlcyk6IExpa2V3aXNlOyBhbHNvIHVzZSBlbnVtIGluc25fbm90ZS4KCgkqIHN0b3ItbGF5b3V0LmMgKGxheW91dF9kZWNsKTogT25seSBzZXQgREVDTF9NT0RFIGlmIG5vdCBhbHJlYWR5IHNldC4KCShwbGFjZV9maWVsZCk6IFByb3Blcmx5IGNvbXB1dGUga25vdyBhbmQgYWN0dWFsIGFsaWdubWVudC4KCgkqIGdlbmdlbnJ0bC5jIChnZW5jb2RlKTogV3JpdGUgb2JzdGFja19hbGxvY19ydHggZnVuY3Rpb24gc3RhcnQKCWluIHByb3BlciBmb3JtYXQuCgoJKiBjc2UuYyAoY3NlX2luc24pOiBJbiAoc2V0IFJFRzAgUkVHMSkgY2FzZSwgcmVtb3ZlIGEgUkVHX0VRVUFMCglub3RlIGZvciBSRUcxLgoKMjAwMC0wNC0yMSAgWmFjayBXZWluYmVyZyAgPHphY2tAd29sZXJ5LmN1bWIub3JnPgoKCSogY3BwaGFzaC5jIChzdHJ1Y3QgYXJnLCBzdHJ1Y3QgYXJnbGlzdCk6IENvbnN0LWlmeSBzdHJpbmdzLgoJKHdhcm5fdHJhZF9zdHJpbmdpZnksIGR1cGxpY2F0ZV9hcmdfcCk6IE5ldyBoZWxwZXIgZnVuY3Rpb25zLgoJKGNvbGxlY3RfZXhwYW5zaW9uKTogUmV3cml0ZSB0byBzY2FuIG92ZXIgYSB0b2tlbiBsaXN0LgoJUmVtb3ZlIC10cmFkaXRpb25hbCBzdXBwb3J0LgoJKGNvbGxlY3RfZm9ybWFsX3BhcmFtZXRlcnMpOiBSZW5hbWUgdG8gY29sbGVjdF9wYXJhbXM7IHJld3JpdGUKCXRvIHNjYW4gb3ZlciBhIHRva2VuIGxpc3QuCgkoX2NwcF9jcmVhdGVfZGVmaW5pdGlvbik6IEFkanVzdCB0byBzY2FuIGEgdG9rZW4gbGlzdC4KCShfY3BwX21hY3JvZXhwYW5kKTogUmVtb3ZlIC10cmFkaXRpb25hbCBzdXBwb3J0LgoJKF9jcHBfY29tcGFyZV9kZWZzKTogV2hpdGVzcGFjZSBpcyBub3cgY2Fub25pY2FsaXplZC4KCShjb21wX2RlZl9wYXJ0KTogRGVsZXRlIGZ1bmN0aW9uLgoKCSogY3BwaGFzaC5oOiBVcGRhdGUgcHJvdG90eXBlcy4KCSogY3BwbGV4LmMgKGluaXRfdG9rZW5fbGlzdCk6IERvbid0IHNldCBsaW5lbm8gaWYgdGhlcmUgaXMgbm8KCWJ1ZmZlci4KCShwZWRhbnRpY193aGl0ZXNwYWNlKTogTmV3IGZ1bmN0aW9uLgoJKF9jcHBfc2Nhbl9saW5lKTogTWFyayB0b2tlbnMgdGhhdCBoYWQgaHNwYWNlIGJlZm9yZS4gIERvbid0Cgljb25zdW1lIGEgbmV3bGluZS4gIFVzZSBwZWRhbnRpY193aGl0ZXNwYWNlLgoJKF9jcHBfbGV4X3Rva2VuKTogUmVtb3ZlIHN1cHBvcnQgZm9yIC10cmFkaXRpb25hbCBtYWNyb3MuCgkoX2NwcF9nZXRfZGVmaW5lX3Rva2VuKTogRGVsZXRlLgoJKF9jcHBfZ2V0X2RpcmVjdGl2ZV90b2tlbik6IERvIHRoZSByZWFsIHdvcmsgaGVyZS4gIFVzZQoJcGVkYW50aWNfd2hpdGVzcGFjZS4KCShfY3BwX2luaXRfaW5wdXRfYnVmZmVyKTogSW5pdGlhbGl6ZSBwZmlsZS0+ZGlyZWN0YnVmLgoKCSogY3BwbGliLmMgKGdldF9tYWNyb19uYW1lKTogRGVsZXRlLgoJKGRvX2RlZmluZSk6IFJlYWQgdGhlIGVudGlyZSBsaW5lIGludG8gcGZpbGUtPmRpcmVjdGJ1ZiwgdGhlbgoJZmVlZCB0aGUgdG9rZW4gbGlzdCB0byBfY3BwX2NyZWF0ZV9kZWZpbml0aW9uLgoJKiBjcHBsaWIuaCAoSFNQQUNFX0JFRk9SRSk6IG5ldyBkZWZpbmUuCgkoc3RydWN0IGNwcF9yZWFkZXIpOiBBZGQgYSB0b2tsaXN0IG1lbWJlciwgImRpcmVjdGJ1ZiIuCgoJKiBwcmVkaWN0LmMgKGVzdGltYXRlX3Byb2JhYmlsaXR5KTogTmV3IGhldXJpc3RpYzogaWYgYSBqdW1wCglicmFuY2hlcyBhcm91bmQgYSBibG9jayB3aXRoIG5vIHN1Y2Nlc3NvcnMsIHByZWRpY3QgaXQgdGFrZW4uCglEaXNlbnRhbmdsZSBjb250cm9sIGZsb3cuCgoyMDAwLTA0LTIwICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEBjeWdudXMuY29tPgoKCSogbG9vcC5jIChlbWl0X2l2X2FkZF9tdWx0KTogUmV2ZXJ0IGxhc3QgY2hhbmdlLgoKMjAwMC0wNC0yMCAgWmFjayBXZWluYmVyZyAgPHphY2tAd29sZXJ5LmN1bWIub3JnPgoKCSogY3BwbGliLmggKGVudW0gY3BwX3R0eXBlKTogQWRkIHRva2VuIHR5cGVzIGZvciBhbGwKCXB1bmN0dWF0b3JzLiAgRGlzdGluZ3Vpc2ggcHAtbnVtYmVycyBmcm9tIHZhbGlkIEMgbnVtYmVycy4KCUdpdmUgc29tZSB0b2tlbnMgYmV0dGVyIG5hbWVzLiAgSW5pdGlhbGl6ZSBmcm9tIG1hY3JvLgoJKHN0cnVjdCBjcHBfbmFtZSwgY3BwX3Rva2VuLCBjcHBfdG9rbGlzdCk6IE5ldyBkYXRhCglzdHJ1Y3R1cmVzLgoJVXBkYXRlIHByb3RvdHlwZXMuCgkqIGNwcGxleC5jIChidW1wX2NvbHVtbiwgZXhwYW5kX25hbWVfc3BhY2UsCglleHBhbmRfdG9rZW5fc3BhY2UsIGluaXRfdG9rZW5fbGlzdCwgY3BwX291dHB1dF9saXN0LAoJX2NwcF9zY2FuX2xpbmUpOiAgTmV3IGZ1bmN0aW9ucy4KCShvdXRwdXRfbGluZV9jb21tYW5kKTogQWRkIHRoaXJkIGFyZ3VtZW50LCBuZXcgbGluZSBudW1iZXIuCgkqIGNwcGhhc2guaDogVXBkYXRlIHByb3RvdHlwZXMuCgkqIGNwcGV4cC5jLCBjcHBoYXNoLmMsIGNwcGxpYi5jLCBzY2FuLWRlY2xzLmM6IFVwZGF0ZSBmb3IgbmV3Cgl0b2tlbiBuYW1lcy4KCjIwMDAtMDQtMjAgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgoJKiBjb25maWcvYWxwaGEvYWxwaGEuYyAoYWxwaGFfZW1pdF9mbG9hdHVucyk6IEVtaXQgbWlzc2luZyBiYXJyaWVyLgoKMjAwMC0wNC0yMCAgWmFjayBXZWluYmVyZyAgPHphY2tAd29sZXJ5LmN1bWIub3JnPgoKCSogYy1jb21tb24uYyAoZGVjbF9hdHRyaWJ1dGVzKSBbQV9BTElBU106IFNldCBUUkVFX1VTRUQgb24gdGhlCglvYmplY3QgcG9pbnRlZCB0by4KClRodSBBcHIgMjAgMTQ6MTk6MTggTUVUIERTVCAyMDAwICBKYW4gSHViaWNrYSAgPGpoQHN1c2UuY3o+CgoJKiBsb29wLmMgKGVtaXRfaXZfYWRkX211bHQpOiAgU2ltcGxpZnkgaXQncyBpbnB1dCBhbmQgZW1pdAoJUkVHX0VRVUFMIG5vdGUgZXhwbGFpbmluZyB0aGUgY2FsY3VsYXRlZCB2YWx1ZS4KCgkqIGNhbGxzLmMgKGV4cGFuZF9jYWxsKTogQXZvaWQgdW5uZWNlc2FyeSBwcmVjYWxjdWxhdGlvbgoJYW5kIG91dGdvaW5nIHBhcmFtZXRlcnMgc3BhY2UgZ3VhcmRpbmcgZm9yIHNpYmxpbmcgY2FsbHMuCgkoc3RvcmVfb25lX2FyZyk6IExpa2V3aXNlLgoKVGh1IEFwciAyMCAwODowMTowNyAyMDAwICBSaWNoYXJkIEtlbm5lciAgPGtlbm5lckB2bHNpMS51bHRyYS5ueXUuZWR1PgoKCSogdG9wbGV2LmMgKGVudW0gZHVtcF9maWxlX2luZGV4LCBkdW1wX2ZpbGUpOiBBZGQgREZJX3NpYmxpbmcuCgkocmVzdF9vZl9jb21waWxhdGlvbik6IFdyaXRlIHNpYmxpbmcgZHVtcCBmaWxlIGFuZCBhY2NvdW50Cglmb3IgdGltZSBhcyBqdW1wIHRpbWUuCgkqIGludm9rZS50ZXhpOiBVcGRhdGUgZG9jdW1lbnRhdGlvbiBvbiBkdW1wIGZsYWdzLgoKMjAwMC0wNC0xOSAgTWFyZWsgTWljaGFsa2lld2ljeiAgPG1hcmVrbUBsaW51eC5vcmcucGw+CgoJKiBhdnIuYzogI2luY2x1ZGUgInN5c3RlbS5oIiBpbnN0ZWFkIG9mIDxzdGRpby5oPiBhbmQgPHN0ZGxpYi5oPi4KCjIwMDAtMDQtMTkgIFphY2sgV2VpbmJlcmcgIDx6YWNrQHdvbGVyeS5jdW1iLm9yZz4KCgkqIGNwcGhhc2guYyAoc3BlY2lhbF9zeW1ib2wpOiBSZXByZXNlbnQgYW4gZW1wdHkgbWFjcm8gd2l0aAoJIlxyIFxyICIgbm90IGp1c3QgIlxyICIuCgkoX2NwcF9tYWNyb2V4cGFuZCk6IENvcnJlY3QgY29uZGl0aW9uIGZvciB0aGUgZm9vICggKSBzcGVjaWFsCgljYXNlLgoJKHVuc2FmZV9jaGFycyk6IEhhbmRsZSBFT0YgYXMgc2Vjb25kIGFyZ3VtZW50LgoJKHB1c2hfbWFjcm9fZXhwYW5zaW9uKTogU2ltcGxpZnkgdGVzdCBmb3IgcmVtb3ZpbmcgZXNjYXBlIGF0CgllbmQuICBEbyBub3QgdHJpbSBib3RoIGVzY2FwZXMgaWYgdGhlcmUgaXMgbm8gdGV4dCBpbiBiZXR3ZWVuLgoKMjAwMC0wNC0xOSAgSmltIEJsYW5keSAgPGppbWJAcmVkaGF0LmNvbT4KCgkqIGR3YXJmMm91dC5jIChEV0FSRjJfQUREUl9TSVpFKTogTmV3IG1hY3JvLiAgVXNlIGl0IGluc3RlYWQKCW9mIFBUUl9TSVpFLCB3aGVuIGFwcHJvcHJpYXRlLgoKMjAwMC0wNC0xOSAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIHN5c3RlbS5oIChPTkxZX0lOVF9GSUVMRFMpOiBNYWtlIHN1cmUgaXQgaXMgZGVmaW5lZC4KCShVU0VfRU5VTV9CSVRGSUVMRFMpOiBGaXggdHlwby4KCldlZCBBcHIgMTkgMTI6MTQ6NTUgMjAwMCAgUmljaGFyZCBLZW5uZXIgIDxrZW5uZXJAdmxzaTEudWx0cmEubnl1LmVkdT4KCgkqIHN0b3ItbGF5b3V0LmMgKHBsYWNlX2ZpZWxkKTogU2V0IHJsaS0+b2Zmc2V0X2FsaWduIHByb3Blcmx5LgoKMjAwMC0wNC0xOSAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogbWlwcy5oIChCSVRTX1BFUl9XT1JELCBVTklUU19QRVJfV09SRCwgVU5JVFNfUEVSX0ZQUkVHLAoJSU5UX1RZUEVfU0laRSwgTE9OR19UWVBFX1NJWkUsIFBPSU5URVJfU0laRSwgUE9JTlRFUl9CT1VOREFSWSwKCVBBUk1fQk9VTkRBUlkpOiBSZW1vdmUgdW5uZWNlc3NhcnkgY2FzdHMuCgpXZWQgQXByIDE5IDEyOjAyOjM3IE1FVCBEU1QgMjAwMCAgSmFuIEh1Ymlja2EgIDxqaEBzdXNlLmN6PgoKCSogY2FsbHMuYyAocHJlY29tcHV0ZV9hcmd1bWVudHMpOiBSZW1vdmUgbXVzdF9wcmVhbGxvY2F0ZSBhbmQKCWFyZ3Nfc2l6ZSBjYWxscy4KCShleHBhbmRfY2FsbCk6IFVwZGF0ZSBjYWxsIG9mIHByZWNvbXB1dGVfYXJndW1lbnRzLgoKCSogbG9vcC5jIChjaGVja19pbnNuX2Zvcl9iaXZzLCBmb3JfZXZlcnlfaW5zbl9pbl9sb29wLAoJY2hlY2tfaW5zbl9mb3JfZ2l2cyk6IEJyZWFrIG91dCBmcm9tIC4uLgoJKHN0cmVuZ3RoX3JlZHVjZSkgLi4uIGhlcmU7IHVzZSBmb3JfZXZlcnlfaW5zbl9pbl9sb29wIHRvIGNhbGwKCWNoZWNrX2luc25fZm9yX2dpdnMuCgkqIGxvb3AuaCAoZm9yX2V2ZXJ5X2luc25faW5fbG9vcCk6IERlY2xhcmUuCgkobG9vcF9pbnNuX2NhbGxiYWNrKTogTmV3IHR5cGUuCgoyMDAwLTA0LTE4ICBaYWNrIFdlaW5iZXJnICA8emFja0B3b2xlcnkuY3VtYi5vcmc+CgoJKiBjcHBsaWIuYyAoZG9fcHJhZ21hX3BvaXNvbik6ICBTdHJpbmdzIGluIHRoZSB0b2tlbiBidWZmZXIgYXJlCglub3QgbnVsLXRlcm1pbmF0ZWQuCgpUdWUgQXByIDE4IDE2OjA0OjEyIDIwMDAgIEppbSBXaWxzb24gIDx3aWxzb25AY3lnbnVzLmNvbT4KCgkqIGNvbmZpZy9pYTY0L3N5c3Y0LmggKFNFTEVDVF9TRUNUSU9OKTogVXNlIGRhdGFfc2VjdGlvbiBpZgoJZmxhZ19waWMgYW5kIFJFTE9DLgoKMjAwMC0wNC0xOCAgWmFjayBXZWluYmVyZyAgPHphY2tAd29sZXJ5LmN1bWIub3JnPgoKCSogY2NjcC5jLCBjZXhwLnksIGNleHAuYywgY2NjcC4xOiBSZW1vdmVkLgoKCSogY29uZmlndXJlLmluOiBEZWxldGUgLS1kaXNhYmxlLWNwcGxpYiBvcHRpb24gYW5kIGFsbAoJcmVmZXJlbmNlcyB0byBjcHBfbWFpbi4KCSogY29uZmlndXJlOiBSZWdlbmVyYXRlLgoJKiBNYWtlZmlsZS5pbjogUmVtb3ZlIGFsbCByZWZlcmVuY2VzIHRvIENDQ1AsIENDQ1BfT0JKUywKCUBjcHBfbWFpbkAsIGNjY3AuYywgY2V4cC5jLCBjZXhwLnksIGNleHAub3V0cHV0LCBjZXhwLm8sCgljY2NwLm8sIGNjY3AsIG9yIGNwcG1haW4uICBMaW5rIGNwcG1haW4ubyBzdHJhaWdodCB0bwoJY3BwJChleGVleHQpLiAgQWRkIC0tbm8taGVhZGVycyB0byBtYWtlaW5mbyBjb21tYW5kIGxpbmUgd2hlbgoJZ2VuZXJhdGluZyBJTlNUQUxMLiAgSW5zdGFsbCBhbmQgdW5pbnN0YWxsIGNwcC4xIG1hbnBhZ2UsIG5vdAoJY2NjcC4xLgoJKiBpbnN0YWxsLnRleGk6IERlbGV0ZSBhbGwgcmVmZXJlbmNlcyB0byBjZXhwLnkvY2V4cC5jLgoJRGVsZXRlIGFuY2llbnQgaW5zdHJ1Y3Rpb25zIGZvciBjb21waWxpbmcgR0NDIG9uIDNiMS4KCSogSU5TVEFMTDogUmVnZW5lcmF0ZS4KCgkqIGNwcGZpbGVzLmMsIGNwcGxpYi5oLCBqdW1wLmMsIHByb3RvaXplLmMsIGMtbGV4LmMsIG1pcHMvdC1lY29mZiwKCW1pcHMvdC1lbGYsIG1pcHMvdC1yMzkwMDogUmVtb3ZlIHJlZmVyZW5jZXMgdG8gY2NjcC5jLgoJKiBjb252ZXguaCwgZng4MC5oLCBtNjhrLmgsIHBkcDExLmg6IFJlbW92ZSByZWZlcmVuY2VzIHRvCgljZXhwLmMvY2V4cC55LgoJKiB4bS1saW51eC5oLCB4bS1vczIuaCwgcm9tcC5oOiBSZW1vdmUgZGVmaW5pdGlvbiBvZiBCU1RSSU5HLAoJd2hpY2ggaXMgbm8gbG9uZ2VyIHRlc3RlZCBhbnl3aGVyZS4KCgkqIGNwcGluaXQuYyAoaGFuZGxlX29wdGlvbik6IERvbid0IHJ1biBlcnJvciBtZXNzYWdlIHRocm91Z2gKCWdldHRleHQgdHdpY2UuCgpUdWUgQXByIDE4IDE0OjE2OjQ3IDIwMDAgIFJpY2hhcmQgS2VubmVyICA8a2VubmVyQHZsc2kxLnVsdHJhLm55dS5lZHU+CgoJKiBjb25mbGljdC5jIChjb25mbGljdF9ncmFwaF9hZGQpOiBQYXNzIGVudW0gdHlwZSB0byBodGFiX2ZpbmRfc2xvdC4KCSogY3BwZXJyb3IuYyAoaGFzaHRhYi5oKTogTm93IGluY2x1ZGUuCgkqIGNwcGV4cC5jIChoYXNodGFiLmgpOiBMaWtld2lzZS4KCSogY3BwbGV4LmMgKGhhc2h0YWIuaCk6IExpa2V3aXNlLgoJKiBjcHBmaWxlcy5jIChoYXNodGFiLmgpOiBMaWtld2lzZS4KCShmaW5kX2luY2x1ZGVfZmlsZSwgX2NwcF9jYWxjX2hhc2gsIGNwcF9yZWFkX2ZpbGUpOiBQYXNzIGVudW0gdHlwZQoJdG8gaHRhYl9maW5kX3Nsb3Rfd2l0aF9oYXNoLgoJKiBjcHBoYXNoLmMgKGhhc2h0YWIuaCk6IE5vdyBpbmNsdWRlLgoJKF9jcHBfbG9va3VwX3Nsb3QpOiBJTlNFUlQgaXMgbm93IGVudW0gaW5zZXJ0X29wdGlvbi4KCSogY3BwaGFzaC5oIChfY3BwX2xvb2t1cF9zbG90KTogTGlrZXdpc2UuCgkqIGNwcGluaXQuYyAoaGFzaHRhYi5oKTogSW5jbHVkZSBlYXJsaWVyLgoJKGluaXRpYWxpemVfYnVpbHRpbnMpOiBQYXNzIGVudW0gdG8gaHRhYl9maW5kX3Nsb3QuCgkqIGNwcGxpYi5jIChoYXNodGFiLmgpOiBOb3cgaW5jbHVkZS4KCShkb19kZWZpbmUsIGRvX3VuZGVmKTogUGFzcyBlbnVtIHR5cGUgdG8gX2NwcF9sb29rdXBfc2xvdC4KCShkb19wcmFnbWFfcG9pc29uLCBkb19hc3NlcnQpOiBMaWtld2lzZS4KCSogZW1pdC1ydGwuYyAoZ2VuX3J0eF9DT05TVF9JTlQpOiBQYXNzIGVudW0gdG8KCWh0YWJfZmluZF9zbG90X3dpdGhfaGFzaC4KCSogc2ltcGxpZnktcnR4LmMgKGNzZWxpYl9sb29rdXBfbWVtLCBjc2VsaWJfbG9va3VwKTogTGlrZXdpc2UuCgkqIHRyZWUuYyAodHlwZV9oYXNoX2FkZCk6IExpa2V3aXNlLgoJKGJ1aWxkMSk6IE1pbm9yIGNsZWFudXAuCgoJKiBnZ2MtY29tbW9uLmM6IEFkZCBtaXNzaW5nIGJsYW5rcy4KCSogcHJpbnQtdHJlZS5jIChwcmludF9ub2RlKTogUHJpbnQgREVDTF9PRkZTRVRfQUxJR04uCgkqIHRyZWUuaCAoREVDTF9PRkZTRVRfQUxJR04pOiBGaXggdHlwbyBpbiBjb21tZW50LgoKCSogc3RtdC5jIChtYXJrX2Nhc2Vfbm9kZSk6IE5ldyBmdW5jdGlvbi4KCShtYXJrX2Nhc2VfbmVzdGluZyk6IENhbGwgaXQuCgoJKiBleHBtZWQuYyAoZW1pdF9zdG9yZV9mbGFnKTogSWYgY29tcGFyaW5nIHR3by13b3JkIGludGVnZXIKCXdpdGggemVybywgY2FuIG9wdGltaXplIE5FLCBFUSwgR0UsIGFuZCBMVC4KCgkqIGMtZGVjbC5jIChtYXJrX2JpbmRpbmdfbGV2ZWwpOiBVc2UgJ2ZvcicgaW5zdGVhZCBvZiBgd2hpbGUnLgoJKiBjb25mbGljdC5jOiBNaW5vciBjbGVhbnVwcy4KCSogb3B0YWJzLmM6IEFkZCBibGFuayBsaW5lCgkqIHNpbXBsaWZ5LXJ0eC5jOiBNaW5vciBjbGVhbnVwcy4KCjIwMDAtMDQtMTggIFN0YW4gQ294ICA8c2NveEBjeWdudXMuY29tPgoKCSogZ2VuZ2VucnRsLmMgKGdlbmxlZ2VuZCk6IEZpeCBtaXNzcGVsbGluZy4KCjIwMDAtMDQtMTggIFJvYmVydCBMaXBlICA8cm9iZXJ0bGlwZUB1c2EubmV0PgoKCSogY29uZmlndXJlLmluIChFTlVNX0JJVEZJRUxEU19BUkVfVU5TSUdORUQpOiBBZGRlZC4gIENoZWNrIHRoYXQKCWJpdGZpZWxkcyBvZiB0aGUgaG9zdCBjb21waWxlciBhcmUgbm90IHNpZ25lZCBxdWFudGl0aWVzLgoJKiBjb25maWcuaW46IFJlZ2VuZXJhdGUuCgkqIGNvbmZpZ3VyZTogUmVnZW5lcmF0ZS4KCSogc3lzdGVtLmggKFVTRV9FTlVNX0JJVEZJRUxEUyk6IEFkZGVkLgoJKEVOVU1fQklURklFTERTKTogQWRkZWQuCgkqIHJ0bC5oIChydHhfZGVmKTogTWVtYmVycyBgY29kZScsIGBtb2RlJywgbm93IEVOVU1fQklURklFTEQuCgkoU0hPUlRfRU5VTV9CVUcpOiBEZWxldGVkLgoJKiB0cmVlLmggKHRyZWVfY29tbW9uKTogTWVtYmVycyBgY29kZScsIGBtb2RlJywgYGJ1aWx0X2luX2NsYXNzJywKCW5vdyBFTlVNX0JJVEZJRUxELgoJKiBjb25maWcvaTM4Ni94bS1zY28uaCAoT05MWV9JTlRfRklFTERTKTogRGVsZXRlZC4KCShDT0RFX0ZJRUxEX0JVRyk6IExpa2V3aXNlLgoJKiBjb25maWcvbTY4ay94LWFwb2xsbzY4IChDQyk6IERlbGV0ZWQgU0hPUlRfRU5VTV9CVUcuCgkoT0xEX0NDKTogTGlrZXdpc2UuCgkqIGNvbmZpZy9tNjhrL3gtY2N1ciAoWF9DRkxBR1MpOiBMaWtld2lzZS4KCjIwMDAtMDQtMTggIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjcHBsZXguYyAoX2NwcF9sZXhfdG9rZW4pOiBEb24ndCBjYWxsIENQUF9CVU1QX0xJTkUgd2hlbiB0aGUKCW1hcmsgaXMgYWN0aXZlLgoKMjAwMC0wNC0xNyAgWmFjayBXZWluYmVyZyAgPHphY2tAd29sZXJ5LmN1bWIub3JnPgoKCSogY3BwZXhwLmMgKGxleCk6IERvbid0IGFzc3VtZSB0b2tlbnMgYXJlIE5VTCB0ZXJtaW5hdGVkLgoJKiBjcHBsaWIuYyAoZG9faW5jbHVkZSwgZG9faW1wb3J0LCBkb19pbmNsdWRlX25leHQsCglyZWFkX2xpbmVfbnVtYmVyLCBkZXRlY3RfaWZfbm90X2RlZmluZWQpOiBMaWtld2lzZS4KCSogY3BwaGFzaC5jIChjb2xsZWN0X2V4cGFuc2lvbik6IExpa2V3aXNlLgoJKHNwZWNpYWxfc3ltYm9sLCBfY3BwX21hY3JvZXhwYW5kKTogQ2hlY2sgcmV0dXJuIGZyb20KCWNwcF9maWxlX2J1ZmZlci4KCSogY3BwaGFzaC5oIChDUFBfTlVMX1RFUk1JTkFURSwgQ1BQX05VTF9URVJNSU5BVEVfUSk6IERlbGV0ZQoJbWFjcm9zLiAgRGVsZXRlIGFsbCB1c2VzLgoKCSogZ2NjLmRnL2NwcC1taS5jOiBBZGQgdHdvIG1vcmUgdGVzdCBjYXNlcy4KCSogZ2NjLmRnL2NwcC1taW5kLmgsIGdjYy5kZy9jcHAtbWluZHAuaDogTmV3IGZpbGVzLgoKMjAwMC0wNC0xNyAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAY3lnbnVzLmNvbT4KCgkqIGJiLXJlb3JkZXIuYyAoZml4dXBfcmVvcmRlcl9jaGFpbik6IERvbid0IGxvb2sgdXAgbmV3IGJsb2NrIGFnYWluLgoJKHJlb3JkZXJfYmFzaWNfYmxvY2tzKTogSWYgbm8gZXBpbG9ndWUgaW4gcnRsLCBmb3JjZSBsYXN0IGJsb2NrIGxhc3QuCgoyMDAwLTA0LTE3ICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogZnVuY3Rpb24uYyAoZXhwYW5kX2Z1bmN0aW9uX3N0YXJ0KTogVXNlIGhhcmRfZnVuY3Rpb25fdmFsdWUgdG8KCWNvbXB1dGUgdGhlIFJUTCB0byB1c2UgZm9yIERFQ0xfUkVTVUxULgoKTW9uIEFwciAxNyAyMzozNToyOSBNRVQgRFNUIDIwMDAgIEphbiBIdWJpY2thICA8amhAc3VzZS5jej4KCgkqIGkzODYuYyAoYXRobG9uX2Nvc3QpOiBGaXggbGVhLCBkaXZpZGUgYW5kIFhGbW9kZSBtb3ZlIGNvc3RzLgoJKHg4Nl9pbnRlZ2VyX0RGbW9kZV9tb3ZlcywgeDg2X3BhcnRpYWxfcmVnX2RlcGVuZGVuY3ksCgkgeDg2X21lbW9yeV9taXNtYXRjaF9zdGFsbCk6IE5ldyBnbG9iYWwgdmFyaWFibGVzLgoJKGl4ODZfYWRqdXN0X2Nvc3QpOiBIYW5kbGUgTUVNT1JZX0JPVEggb24gcGxhY2VzIE1FTU9SWV9TVE9SRSB3YXMgb25seQoJYWxsb3ZlZDsgZml4IGxvYWQgcGVuYWx0aWVzIGZvciBBdGhsb24uCgkqIGkzODYuaCAoeDg2X2ludGVnZXJfREZtb2RlX21vdmVzLCB4ODZfcGFydGlhbF9yZWdfZGVwZW5kZW5jeSwKCXg4Nl9tZW1vcnlfbWlzbWF0Y2hfc3RhbGwpOiBEZWNsYXJlLgoJKFRBUkdFVF9JTlRFR0VSX0RGTU9ERV9NT1ZFUywgVEFSR0VUX1BBUlRJQUxfUkVHX0RFUEVOREVOQ1ksCgkgVEFSR0VUX01FTU9SWV9NSVNNQVRDSF9TVEFMTCk6IE5ldy4KCSogaTM4Ni5tZCAoYXRobG9uIHNjaGVkdWxpbmcgcGFyYW1ldGVycyk6IEZpeCBsYXRlbmNpZXMgYWNjb3JkaW5nIHRvCglBdGhsb24gT3B0aW1pemF0aW9uIE1hbnVhbC4KCShzYWhmLCB4Y2hnLCBmbGRjdywgbGVhdmUgaW5zdHJ1Y3Rpb24gcGF0dGVybnMpOiBTZXQgYXRobG9uX2RlY29kZSB0bwoJdmVjdG9yLgoJKGZzcXJ0IGluc3RydWN0aW9uIHBhdHRlcm5zKTogU2V0IGF0aGxvbl9kZWNvZGUgdG8gZGlyZWN0LgoJKG1vdmhpXzEpOiBQcm9tb3RlIGZvciBUQVJHRVRfUEFSVElBTF9SRUdfREVQRU5ERU5DWSBhbmQgZm9yCglQQVJUSUFMX1JFR0lTVEVSX1NUQUxMIHdpdGggIVRBUkdFVF9ISU1PREVfTUFUSCBtYWNoaW5lcy4KCShtb3ZxaV8xKTogSGFuZGxlIHByb21vdGluZyBjb3JyZWN0bHkgZm9yIFRBUkdFVF9QQVJUSUFMX1JFR19ERVBFTkRFTkNZCglhbmQgVEFSR0VUX1BBUlRJQUxfUkVHSVNURVJfU1RBTEwgbWFjaGluZXMuCgkocHVzaGRmX25vaW50ZWdlcik6IE5ldyBwYXR0ZXJuLgoJKHB1c2hkZl9pbnRlZ2VyKTogUmVuYW1lIGZyb20gcHVzaGRmLgoJKG1vdmRmX25vaW50Z2VyKTogRW5hYmxlIGZvciAhVEFSR0VUX0lOVEVHRVJfREZNT0RFX01PVkVTIG1hY2hpbmVzLgoJKG1vdmRmX2ludGdlcik6IERpc2FibGUgZm9yICFUQVJHRVRfSU5URUdFUl9ERk1PREVfTU9WRVMgbWFjaGluZXMuCgoyMDAwLTA0LTE3ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEBjeWdudXMuY29tPgoKCSogbG9vcC5jIChjYW5vbmljYWxpemVfY29uZGl0aW9uKTogQWRkIFdBTlRfUkVHIGFyZ3VtZW50LgoJU3RvcCB0aGUgc2VhcmNoIGlmIHdlIG1hdGNoIGl0LgoJKiBleHByLmggKGNhbm9uaWNhbGl6ZV9jb25kaXRpb24pOiBVcGRhdGUgZGVjbC4KCSogcHJlZGljdC5jIChleHBlY3RlZF92YWx1ZV90b19icl9wcm9iKTogVXNlIGl0LiAgVHJhY2sgbGFzdAoJZXhwZWN0ZWQgdmFsdWUgbm90ZS4KCShmaW5kX2V4cGVjdGVkX3ZhbHVlKTogUmVtb3ZlLgoKCSogcmVvcmcuYyAobW9zdGx5X3RydWVfanVtcCk6IEFsd2F5cyB1c2UgQlJfUFJPQiBpZiBwcmVzZW50LgoKMjAwMC0wNC0xNyAgWmFjayBXZWluYmVyZyAgPHphY2tAd29sZXJ5LmN1bWIub3JnPgoKCSogYWNsb2NhbC5tNCAoQU1fR05VX0dFVFRFWFQpOiBEb24ndCBBQ19SRVFVSVJFKFtBQ19GVU5DX01NQVBdKS4KCShBQ19GVU5DX01NQVBfRklMRSk6IE5ldyBtYWNybywgdGVzdHMgcmVhZC1vbmx5IHByaXZhdGUgbWFwIG9mCglhIHBsYWluIGZpbGUuCgkqIGNvbmZpZ3VyZS5pbjogQ2FsbCBBQ19GVU5DX01NQVBfRklMRS4KCSogY29uZmlndXJlOiBSZWdlbmVyYXRlLgoJKiBjb25maWcuaW46IFJlZ2VuZXJhdGUuCgoJKiBpbnRsL2xvYWRtc2djYXQuYzogVGVzdCBIQVZFX01NQVBfRklMRSBub3QgSEFWRV9NTUFQLgoJKiBmaXhpbmMvZml4aW5jbC5jOiBMaWtld2lzZS4KCjIwMDAtMDQtMTcgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgoJKiBidWlsdGlucy5jIChleHBhbmRfYnVpbHRpbl9leHBlY3QpOiBOZXcuCgkoZXhwYW5kX2J1aWx0aW4pOiBDYWxsIGl0LgoJKiBidWlsdGlucy5kZWYgKEJVSUxUX0lOX0VYUEVDVCk6IE5ldy4KCSogYy1jb21tb24uYyAoY19jb21tb25fbm9kZXNfYW5kX2J1aWx0aW5zKTogRGVjbGFyZSBfX2J1aWx0aW5fZXhwZWN0LgoJKiBleHRlbmQudGV4aTogRG9jdW1lbnQgaXQuCgoJKiBwcmVkaWN0LmMgKGV4cGVjdGVkX3ZhbHVlX3RvX2JyX3Byb2IpOiBOZXcuCgkoZmluZF9leHBlY3RlZF92YWx1ZSk6IE5ldy4KCSogYmFzaWMtYmxvY2suaCAoZXhwZWN0ZWRfdmFsdWVfdG9fYnJfcHJvYik6IERlY2xhcmUuCgkqIHRvcGxldi5jIChyZXN0X29mX2NvbXBpbGF0aW9uKTogSW52b2tlIGl0LgoKCSogcnRsLmggKE5PVEVfRVhQRUNURURfVkFMVUUpOiBOZXcuCgkoTk9URV9JTlNOX0VYUEVDVEVEX1ZBTFVFKTogTmV3LgoJKiBydGwuYyAobm90ZV9pbnNuX25hbWUpOiBVcGRhdGUuCgkqIHByaW50LXJ0bC5jIChwcmludF9ydHgpOiBSZW9yZyBOT1RFX0xJTkVfTlVNQkVSIHNwZWNpYWwKCWNhc2VzOyBoYW5kbGUgTk9URV9JTlNOX0VYUEVDVEVEX1ZBTFVFLgoKMjAwMC0wNC0xNyAgSmFrdWIgSmVsaW5layAgPGpha3ViQHJlZGhhdC5jb20+CgoJKiBjb25maWcvc3BhcmMvc3BhcmMuYyAoZWxpZ2libGVfZm9yX3NpYmNhbGxfZGVsYXkpOiBDYW5ub3QgdXNlCglsZWFmIHNpYmNhbGwgZGVsYXkgc2xvdCBpZiBmbGFnX3BpYy4KCShvdXRwdXRfc2liY2FsbCk6IEFsd2F5cyBlbWl0IGNhbGwgZm9yIGxlYWYgc2liY2FsbCBpZiBmbGFnX3BpYy4KCjIwMDAtMDQtMTcgIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIE1ha2VmaWxlLmluIChzdG1wLWZpeHByb3RvKTogQWNrbm93bGVkZ2UgZXJyb3JzIGluIGZpeHByb3RvLgoKCSogZml4cHJvdG86IElmIGZpeC1oZWFkZXIgZmFpbHMsIGV4aXQgd2l0aCBhbiBlcnJvci4KCk1vbiBBcHIgMTcgMTQ6NTk6MzYgTUVUIERTVCAyMDAwICBKYW4gSHViaWNrYSAgPGpoQHN1c2UuY3o+CgoJKiBjc2UuYyAoc3RydWN0IGNoZWNrX2RlcGVuZGVuY2VfZGF0YSk6IE5ldy4KCShjaGVja19kZXBlbmRlbmNlKTogTmV3IGZ1bmN0aW9uLgoJKGludmFsaWRhdGUpOiBVc2UgY2hlY2tfZGVwZGVuZW5jZS4KCjIwMDAtMDQtMTYgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBkd2FyZjJvdXQuYyAoRFdBUkZfQ0lFX0RBVEFfQUxJR05NRU5UKTogQWRqdXN0LCBub3cgdGhhdAoJVU5JVFNfUEVSX1dPUkQgaXMgdW5zaWduZWQuCgoJKiB0cmVlLmggKHN0cnVjdCB0cmVlX2NvbW1vbik6IFJlbW92ZSBtaXNsZWFkaW5nIGNvbW1lbnQuCgoyMDAwLTA0LTE2ICBEYXZlIFBpdHRzICA8ZHBpdHRzQGNvenguY29tPgoKCSogTWFrZWZpbGUuaW4gKCQoc3JjZGlyKS9jLXBhcnNlLnk6IGMtcGFyc2UuaW4pOiBFbmNsb3NlIHRoZSB3aG9sZQoJbWVzc2FnZSBpbiBxdW90ZXMuIE90aGVyd2lzZSwgSUJNJ3MgbWFrZSBwcm9ncmFtIHRyZWF0cyB0aGUgJyMnIGFzIHRoZQoJc3RhcnQgb2YgYSBjb21tZW50IGFuZCBpZ25vcmVzIHRoZSByZW1haW5kZXIgb2YgdGhlIGxpbmUuCgoJKiBjLWxleC5jICh5eWxleCk6IENoYW5nZSBmb3IgRUJDRElDLCBsb3dlciBjYXNlIGNoYXJhY3RlcnMgcHJlY2VkZQoJdXBwZXIgY2FzZS4KCSogY2NjcC5jIChpbml0aWFsaXplX2NoYXJfc3ludGF4KTogQWxsb3cgZm9yIGhvbGVzIGluIEVCQ0RJQy4KCSogY2V4cC55IChpbml0aWFsaXplX3JhbmRvbV9qdW5rKTogTGlrZXdpc2UuCgkqIGNwcGZpbGVzLmMgKGZpbmRfaW5jbHVkZV9maWxlKTogQ2FzdCBhbGxvY2EgcmV0dXJuIHZhbHVlLgoJKiBjcHBpbml0LmMgKGluaXRpYWxpemVfc3RhbmRhcmRfaW5jbHVkZXMpOiBMaWtld2lzZS4KCSogY3BwbGliLmMgKGNwcF9kZWZpbmUsIGNwcF91bmRlZik6IExpa2V3aXNlLgoJKiBkZWZhdWx0cy5oIChBU01fT1VUUFVUX0FTQ0lJKTogVXNlIElTUFJJTlQuCgkqIGZpbmFsLmMgKG91dHB1dF9hc21faW5zbik6IEFsbG93IGZvciBob2xlcyBpbiBFQkNESUMuCgkqIGZvbGQtY29uc3QuYyAoQ0hBUk1BU0spOiBOZXcuCgkocmVhbF9oZXhfdG9fZik6IFVzZSBpdC4KCSogcmVhbC5jIChDSEFSTUFTSyk6IE5ldy4KCShldG9hc2MsIGFzY3RvZWcpOiBVc2UgaXQuCgkoYXNjdG9lZyk6IEVCQ0RJQyBsb3dlciBjYXNlIGNoYXJhY3RlcnMgcHJlY2VkZSB1cHBlciBjYXNlLgoKCSogaTM3MC5jIChtdnNfYWRkX2xhYmVsKTogQ2hhbmdlIHNwYWNpbmcgZm9yIGNvZGluZyBjb252ZW50aW9ucy4KCSogaTM3MC5oIChBU01fT1VUUFVUX0NBU0VfTEFCRUwpOiBDaGFuZ2UgdG8gdGhlIGRhdGEgQ1NFQ1QgZm9yIHRoZQoJb3V0cHV0dGluZyBjYXNlIHZlY3RvcnMuCgkoQVNNX09VVFBVVF9DQVNFX0VORCk6IE5ldywgcHV0IGFzc2VtYmxlciBiYWNrIGludG8gY29kZSBDU0VDVC4KCShBU01fT1VUUFVUX0FERFJfVkVDX0VMVCwgQVNNX09VVFBVVF9BRERSX0RJRkZfRUxUKTogUmVtb3ZlIHBhZ2UgY2hlY2ssCglzaW5jZSB2ZWN0b3IgaW4gaW4gdGhlIGRhdGEgQ1NFQ1QuCgkoQVNNX09VVFBVVF9SRUdfUE9QLCBBU01fT1VUUFVUX1JFR19QVVNIKTogUmVzdG9yZSB0byBjb3JyZWN0IG9wZXJhdGlvbi4KCSogaTM3MC5tZCAoTWFueSBwYXR0ZXJucyk6IFB1dCB0aGUgbGVuZ3RoIGluIHRoZSBYTCBkaXJlY3RpdmVzLgoJKG1vdmRpKTogUHV0IGJhY2sgU1RNIGFuZCBNVkMgaW4gZGVmaW5pdGlvbi4KCShmbG9hdHNpZGYyKTogQ29ycmVjdCBUQVJHRVRfRUxGX0FCSSBwYXR0ZXJuIGFuZCBhZGQgYmFjayB0aGUgTEUzNzAKCXBhdHRlcm4gdXNpbmcgdGhlIFRDQS4KCSogb2UuaCAoQ1BQX1NQRUMpOiBBZGRlZCB0byBhbGxvdyB0cmlncmFwaHMuCgkqIHhtLW9lLmggKEhPU1RfQklUU19QRVJfTE9OR0xPTkcpOiBDaGFuZ2UgdG8gMzIuIElCTSdzIGNvbXBpbGVyIGRvZXMKCW5vdCBzdXBwb3J0IHRoZSAibG9uZyBsb25nIiB0eXBlLgoKMjAwMC0wNC0xNiAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGNvbmZpZy9taXBzL21pcHMtcHJvdG9zLmggKG1pcHNfbGVnaXRpbWF0ZV9hZGRyZXNzX3ApOiBOZXcKCWZ1bmN0aW9uLgoJKG1pcHNfcmVnX21vZGVfb2tfZm9yX2Jhc2VfcCk6IExpa2V3aXNlLgoJKiBjb25maWcvbWlwcy9taXBzLmggKFJFR19PS19TVFJJQ1RfUCk6IERvbid0IGRlZmluZS4KCShSRUdfT0tfRk9SX0lOREVYX1ApOiBEZWZpbmUgdW5jb25kaXRpb25hbGx5LgoJKFJFR19NT0RFX09LX0ZPUl9CQVNFX1ApOiBVc2UgbWlwc19yZWdfbW9kZV9va19mb3JfYmFzZV9wLgoJKEdPX0lGX0xFR0lUSU1BVEVfQUREUkVTUyk6IFVzZSBtaXBzX2xlZ2l0aW1hdGVfYWRkcmVzc19wLgoJKiBjb25maWcvbWlwcy9taXBzLmMgKG1pcHMxNl9zaW1wbGVfbWVtb3J5X29wZXJhbmQpOiBBZGp1c3Qgbm93Cgl0aGF0IEdFVF9NT0RFX1NJWkUgaXMgdW5zaWduZWQuCgkobWlwc19yZWdfbW9kZV9va19mb3JfYmFzZV9wKTogRGVmaW5lLgoJKG1pcHNfbGVnaXRpbWF0ZV9hZGRyZXNzX3ApOiBMaWtld2lzZS4gIEFkanVzdCBub3cKCXRoYXQgR0VUX01PREVfU0laRSBpcyB1bnNpZ25lZC4KCShibG9ja19tb3ZlX2xvb3ApOiBNYWtlIHRoZSBudW1iZXIgb2YgYnl0ZXMgdW5zaWduZWQuCgkoZXhwYW5kX2Jsb2NrX21vdmUpOiBMaWtld2lzZS4KCShmdW5jdGlvbl9hcmcpOiBNYWtlIHRoZSBsb29wIGNvdW50ZXIgdW5zaWduZWQgdG8gbWF0Y2ggdGhlCglib3VuZGFyeSBjb25kaXRpb24uCgoyMDAwLTA0LTE2ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEBjeWdudXMuY29tPgoKCSogcnRsLmggKGVudW0gaW5zbl9ub3RlKTogTmV3IGVudW1lcmF0aW9uLiAgU3Vic3VtZQoJTk9URV9JTlNOX0RFTEVURUQgYW5kIGZyaWVuZHMuCgkoR0VUX05PVEVfSU5TTl9OQU1FKTogQWRqdXN0IGluZGV4IGJ5IE5PVEVfSU5TTl9CSUFTLgoJKiBydGwuYyAobm90ZV9pbnNuX25hbWUpOiBUd2VhayBzdHJpbmcgb3JkZXIuCgoyMDAwLTA0LTE1ICBaYWNrIFdlaW5iZXJnICA8emFja0B3b2xlcnkuY3VtYi5vcmc+CgoJKiBjcHBsZXguYyAoX2NwcF9yZWFkX2FuZF9wcmVzY2FuKTogRW5sYXJnZSBsZW4gYnkgc2V0dGluZyBpdAoJdG8gb2Zmc2V0ICogMi4KCgkqIGNwcGxleC5jIChvdXRwdXRfbGluZV9jb21tYW5kKTogUmVtb3ZlIGRlYnVnZ2luZyBwcmludHMuCgkoY3BwX291dHB1dF90b2tlbnMpOiBEb24ndCB3cml0ZSBvdXQgYSB6ZXJvLWxlbmd0aCBidWZmZXIgb3IKCXRyeSB0byBzZWUgaWYgaXQgaGFzIGEgbmV3bGluZSBpbiBpdC4KCShfY3BwX2V4cGFuZF90b19idWZmZXIpOiBDb3B5IHRoZSBzb3VyY2UgYnVmZmVyIGJlZm9yZSBwdXNoaW5nLgoJKF9jcHBfcmVhZF9hbmRfcHJlc2Nhbik6IE1vdmUgc2hpZnQtZG93biBvZiBwdXNoYmFjayBieXRlcyB0bwoJdGhlIGVuZCBvZiB0aGUgbG9vcC4gIFVzZSBtZW1tb3ZlLiAgRG9uJ3QgcmVhZCBwYXN0IHRoZSBlbmQgb2YKCXRoZSBidWZmZXIuICBSZW1vdmUgdHJhaWxpbmcgbmV3bGluZXMgZnJvbSBlcnJvciBtZXNzYWdlcy4KCjIwMDQtMDQtMTYgIE5laWwgQm9vdGggIDxOZWlsQkBlYXJ0aGxpbmcubmV0PgoKCSogY3BwaGFzaC5oIChTWU5UQVhfSU5DTFVERSwgU1lOVEFYX0FTU0VSVCwgZGlyZWN0aXZlX2hhbmRsZXIpOiBuZXcuCgkqIGNwcGxpYi5jOiBBZGQgbmV3IHN5bnRheCBmbGFncyB0byBkaXJlY3RpdmUgdGFibGUsIGFuZAoJc3VwcG9ydGluZyBtYWNyb3MuCgoyMDAwLTA0LTE1ICBVbHJpY2ggRHJlcHBlciAgPGRyZXBwZXJAcmVkaGF0LmNvbT4KCgkqIGkzODYuYyAoaXg4Nl9leHBhbmRfZXBpbG9ndWUpOiBZZXMsIHRoZSB4ODYgY2FuIHBvcCA2NGsgYXQgb25jZQoJdXNpbmcgcmV0ICROLgoKMjAwMC0wNC0xNSAgRGF2aWQgRWRlbHNvaG4gIDxlZGVsc29obkBnbnUub3JnPgoKCSogdG9wbGV2LmMgKGRpc3BsYXlfaGVscCk6IFByZWZpeCAiZiIgdG8gInNjaGVkLXZlcmJvc2U9Ii4KCSogaGFpZmEtc2NoZWQuYzogVXBkYXRlIC1mc2NoZWQtdmVyYm9zZSBjb21tZW50cyB0byB1c2UgIj0iLgoKU2F0IEFwciAxNSAxMDo1OToxOSAyMDAwICBSaWNoYXJkIEtlbm5lciAgPGtlbm5lckB2bHNpMS51bHRyYS5ueXUuZWR1PgoKCSogTWFrZWZpbGUuaW4gKGdnYy1wYWdlLm8pOiBOb3cgaW5jbHVkZXMgdG9wbGV2LmguCgkqIGdnYy1wYWdlLmMgKHRvcGxldi5oKTogTm93IGluY2x1ZGVkLgoJKGdjX3RpbWUpOiBSZW1vdmUgZGVjbGFyYXRpb24uCgkoZ2djX2NvbGxlY3QpOiBUSU1FIG5vdyBsb25nLgoJKiB0b3BsZXYuYyAocGFyc2VfdGltZSwgdmFyYXNtX3RpbWUsIGdjX3RpbWUpOiBTdGlsbCBnbG9iYWw7IGFsbAoJb3RoZXJzIHN0YXRpYy4KCSogdG9wbGV2LmggKGdjX3RpbWUsIHBhcnNlX3RpbWUsIGdjX3RpbWUpOiBOZXcgZGVjbGFyYXRpb25zLgoKCSogdG9wbGV2LmM6IE1ha2UgKl90aW1lIHZhcmlhYmxlIGxvbmcgdG8gcmVkdWNlIGNoYW5jZSBvZiBvdmVyZmxvdy4KCShUSU1FVkFSKTogTGlrZXdpc2UgZm9yIGBvdGltZScuCgkocHJpbnRfdGltZSk6IEFyZyBpcyBub3cgbG9uZzsgY29tcHV0ZSBwZXJjZW50YWdlIGluIEZQIGFuZCByb3VuZC4KCSogdG9wbGV2LmggKHByaW50X3RpbWUpOiBBcmcgaXMgbG9uZy4KCgkqIHRyZWUuYzogTWlub3Igd2hpdGVzcGFjZSBjaGFuZ2VzLgoKCSogY29uZmlndXJlLmluIChhbHBoYSotKi0qKTogQWRkIGNvbmZpZy9hbHBoYS90LWFscGhhLgoJKiBjb25maWd1cmU6IFJlYnVpbHQuCgkqIGxpYmdjYzIuYyAoX19maXh1bnN0ZkRJKTogUmVuYW1lZCBmcm9tIF9fZml4dW5zdGZkaS4KCShfX2ZpeHVuc3hmREkpOiBSZW5hbWVkIGZyb20gX19maXh1bnN4ZmRpLgoJKF9fZml4dW5zZGZESSk6IFJlbmFtZWQgZnJvbSBfX2ZpeHVuc2RmZGkuCgkoX19maXh1bnNzZkRJKTogUmVuYW1lZCBmcm9tIF9fZml4dW5zc2ZkaS4KCShfX2Zsb2F0ZGlzZik6IFVzZSBwcm9wZXIgdHlwZSBpbiBSRVBfQklUIG1hY3JvLgoJKF9fZml4dW5zeGZTSSk6IFJlbmFtZWQgZnJvbSBfX2ZpeHVuc3hmc2kuCgkoX19maXh1bnNkZlNJKTogUmVuYW1lZCBmcm9tIF9fZml4dW5zZGZzaS4KCShfX2ZpeHVuc3NmU0kpOiBSZW5hbWVkIGZyb20gX19maXh1bnNzZnNpLgoJKiBsaWJnY2MyLmg6IEFkZCBjYXNlcyBmb3IgTUlOX1VOSVRTX1BFUl9XT1JEID4gNC4KCUNoYW5nZSBsb2NhdGlvbiBvZiBtYWNyb3MgYW5kIHVwcGVyLWNhc2Ugc29tZSBuYW1lcyBhcyBhYm92ZS4KCSogbG9uZ2xvbmcuaCAoW2FscGhhXSk6IFVzZSBQQVJBTVMsIG5vdCBfX1AgaW4gZGVjbCBvZiBfX3VkaXZfX3Fybm5kLgoJKiBjb25maWcvYWxwaGEvdC1hbHBoYSwgY29uZmlnL2FscGhhL3Fybm5kLmFzbTogTmV3IGZpbGVzLgoKCSogdmFyYXNtLmMgKGFzc2VtYmxlX3ZhcmlhYmxlKTogQWRkIGNhc3QgdG8gcmVtb3ZlIHdhcm5pbmcuCgkoaW1tZWRfcmVhbF9jb25zdF8xKTogT25seSB1c2UgQ09OU1RbMDFdX1JUWCBpZiBub3QgaW4gbmVzdGVkIGZ1bmN0aW9uLgoKCSogZmxvdy5jIChjb3VudF9iYXNpY19ibG9ja3MsIGZpbmRfYmFzaWNfYmxvY2tzXzEpOiBSZW1vdmUgbGFzdCBjaGFuZ2UuCgkqIG9wdGFicy5jIChlbWl0X2xpYmNhbGxfYmxvY2spOiBJZiBoYXZlIFJFR19FSF9SRUdJT04sIHVwZGF0ZQoJcmVnaW9uIG51bWJlciB0byAtMS4KCjIwMDAtMDQtMTUgIFJpY2hhcmQgRWFybnNoYXcgKHJlYXJuc2FoQGFybS5jb20pCgoJKiBlbWl0LXJ0bC5jICh1bnNoYXJlX2FsbF9ydGxfYWdhaW4pOiBVbm1hcmsgZXZlcnl0aGluZywgdGhlbgoJY2FsbCB1bnNoYXJlX2FsbF9ydGwuCgoJKiBhcm0ubWQgKG1vdmhpKTogUkVHTk9fUE9JTlRFUl9BTElHTiBpcyBub3cgYml0cy4KCkZyaSBBcHIgMTQgMTY6NTg6NDUgMjAwMCAgSmltIFdpbHNvbiAgPHdpbHNvbkBjeWdudXMuY29tPgoKCSogY29uZmlnL2lhNjQvbGliMWZ1bmNzLmFzbSAoX19kaXZkaTMsIF9fbW9kZGkzLCBfX3VkaXZkaTMsIF9fdW1vZGRpMyk6CglVc2UgLnMxIG5vdCAuczAgZm9yIGFsbCBGUCBpbnN0cnVjdGlvbnMuCgoyMDAwLTA0LTE0ICBaYWNrIFdlaW5iZXJnICA8emFja0B3b2xlcnkuY3VtYi5vcmc+CgoJKiBjcHBsZXguYyAoY3BwX291dHB1dF90b2tlbnMsIGNwcF9zY2FuX2J1ZmZlcl9ub291dHB1dCk6IE5ldyBwdWJsaWMKCWludGVyZmFjZXMuCgkoc2FmZV9md3JpdGUsIG91dHB1dF9saW5lX2NvbW1hbmQpOiBOZXcgc3RhdGljIGZ1bmN0aW9ucy4KCShjcHBfZXhwYW5kX3RvX2J1ZmZlcik6IE5vdyBwcml2YXRlIHRvIGNwcGxpYi4KCShjcHBfc2Nhbl9idWZmZXIpOiBUYWtlIGEgcHJpbnRlci4KCgkqIGNwcGhhc2guaDogVXBkYXRlIHByb3RvdHlwZXMuCgkqIGNwcGxpYi5oOiBVcGRhdGUgcHJvdG90eXBlcy4KCShjcHBfcHJpbnRlcik6IE5ldy4KCShjcHBfYnVmZmVyKTogUmVtb3ZlIGxhc3Rfbm9taW5hbF9mbmFtZS4KCShjcHBfcmVhZGVyKTogUmVtb3ZlIGxpbmVuby4KCgkqIGNwcG1haW4uYzogVXNlIGEgY3BwX3ByaW50ZXIuCgkqIGZpeC1oZWFkZXIuYzogTm8gbmVlZCB0byBpbmhpYml0IGxpbmUgY29tbWFuZHMuICBDYWxsCgljcHBfc3RhcnRfcmVhZCB3aXRoIG5vIHByaW50ZXIuCgoJKiBjcHBlcnJvci5jIChjcHBfbm90aWNlX2Zyb21fZXJybm8pOiBQcm92aWRlIGRlZmF1bHQgbmFtZS4KCSogY3BwZmlsZXMuYyAobWFrZV9JSEFTSCwgX2NwcF9mYWtlX2loYXNoKTogTmV3IGZ1bmN0aW9ucy4KCShmaW5kX2luY2x1ZGVfZmlsZSwgY3BwX3JlYWRfZmlsZSk6IFVzZSBtYWtlX0lIQVNILgoJKGZpbGVfY2xlYW51cCk6IFNldCBjb250cm9sX21hY3JvIGFuZCBjbGVhcgoJaW5wdXRfc3RhY2tfbGlzdGluZ19jdXJyZW50IGhlcmUuCgkoX2NwcF9leGVjdXRlX2luY2x1ZGUpOiBEb24ndCBvdXRwdXQgZW50ZXJpbmctZmlsZSBtYXJrZXIuCgkqIGNwcGhhc2guYyAoc3BlY2lhbF9zeW1ib2wpOiBMb29rIGZvciB0aGUgbGluZSBudW1iZXIgaW4gdGhlCglidWZmZXIsIG5vdCB0aGUgcmVhZGVyLgoJKF9jcHBfbWFjcm9leHBhbmQpOiBObyBuZWVkIHRvIGRpc2FibGUgbGluZSBjb21tYW5kcy4KCShfY3BwX2R1bXBfZGVmaW5pdGlvbik6IE5vIG5lZWQgdG8gZ2VuZXJhdGUgbGluZSBjb21tYW5kcy4KCShkdW1wX2hhc2hfaGVscGVyKTogUmVtb3ZlIGV4Y2VzcyBuZXdsaW5lIGZyb20gb3V0cHV0LgoJKiBjcHBpbml0LmMgKGR1bXBfc3BlY2lhbF90b19idWZmZXIpOiBObyBuZWVkIHRvIGdlbmVyYXRlIGxpbmUKCWNvbW1hbmRzLgoJKGNwcF9wcmludGVyX2luaXQpOiBOZXcuCgkoY3BwX3N0YXJ0X3JlYWQpOiBUYWtlIGEgcHJpbnRlciwgYW5kIHN0YXJ0IGl0IHVwIGlmIGl0J3Mgbm90CglOVUxMLiAgTm8gbmVlZCB0byBnZW5lcmF0ZSBsaW5lIGNvbW1hbmRzLgoJKGNwcF9maW5pc2gpOiBFeHBlY3Qgbm8gYnVmZmVycyBzdGFja2VkIGF0IGFsbC4gIFRha2UgYQoJcHJpbnRlciBhcmd1bWVudCwgYW5kIGZsdXNoIHRoZSBvdXRwdXQgYnVmZmVyIGlmIGl0J3Mgbm90CglOVUxMLgoJKiBjcHBsZXguYyAoX2NwcF9sZXhfdG9rZW4pOiBSZXR1cm4gRU9GIGlmIHRoZXJlJ3Mgbm8gYnVmZmVyLgoJRG9uJ3QgcHV0IHR3byBoYXNoZXMgYXQgdGhlIGJlZ2lubmluZyBvZiBhbiBhc3NlcnRpb24uCgkoY3BwX2dldF90b2tlbik6IERvbid0IGluY3JlbWVudCBwZmlsZS0+bGluZW5vIG9yIGVtaXQgbGluZQoJY29tbWFuZHMgaGVyZS4gIFJldHVybiBFT0YgaWYgdGhlcmUncyBubyBidWZmZXIgd2hlbiB3ZSBnZXQKCUVPRi4KCSogY3BwbGliLmMgKGRvX2RlZmluZSwgc2tpcF9pZl9ncm91cCk6CglObyBuZWVkIHRvIGRpc2FibGUgbGluZSBjb21tYW5kcy4KCShfY3BwX291dHB1dF9saW5lX2NvbW1hbmQpOiBEZWxldGUgZnVuY3Rpb24uCgkoZG9fbGluZSk6IERvbid0IGVtaXQgbGluZSBjb21tYW5kcyBoZXJlLCBidXQgc2V0IHRoaW5ncyB1cCBzbwoJdGhleSB3aWxsIGJlIGVtaXR0ZWQgaWYgbmVjZXNzYXJ5LiAgVXNlIF9jcHBfZmFrZV9paGFzaCB0bwoJbWFrZSB1bmlxdWUgbm9taW5hbF9mbmFtZXMgaWYgbmVjZXNzYXJ5LgoJKGRvX2VsaWYsIGRvX2Vsc2UsIF9jcHBfaGFuZGxlX2VvZik6IENhbGwgY3BwX2Vycm9yX3dpdGhfbGluZQoJd2l0aCAwIGZvciBjb2x1bW4sIG5vdCAtMS4KCShfY3BwX2hhbmRsZV9lb2YpOiBEb24ndCBzZXQgdGhlIGNvbnRyb2wgbWFjcm8gaGVyZS4gIERvbid0CgljbGVhciBpbnB1dF9zdGFja19saXN0aW5nX2N1cnJlbnQgaGVyZS4gIERvbid0IGVtaXQgbGluZQoJY29tbWFuZHMuCgoyMDAwLTA0LTE0ICBHZW9mZiBLZWF0aW5nICA8Z2VvZmZrQGN5Z251cy5jb20+CgoJKiBjb25maWcvcnM2MDAwL3N5c3Y0LmggKExJTktfU1RBUlRfU09MQVJJU19TUEVDKTogRGVmaW5lIHRvIGVtcHR5CglhbHdheXMsIHVzZSB0aGUgZGVmYXVsdCBTVlI0IHN0YXJ0IGFkZHJlc3MuCgoJKiBjb25maWcvcnM2MDAwL2xpbnV4LmggKExJTktfU1BFQyk6IERvbid0IGRlZmluZS4KCShMSU5LX1NITElCX1NQRUMpOiBEZWZpbmUuCgkoTElOS19TVEFSVF9ERUZBVUxUX1NQRUMpOiBEZWZpbmUuCgkoTElOS19PU19ERUZBVUxUX1NQRUMpOiBEZWZpbmUuCgoJKiBjb25maWcvcnM2MDAwL3N5c3Y0LmggKEVOREZJTEVfU1BFQyk6IFVzZSB0aGUgJShlbmRmaWxlXyopIG1hY3Jvcy4KCgkqIGNvbmZpZy9yczYwMDAvZWFiaS5hc20gKF9fZWFiaSk6IENhbGwgX19pbml0IHJhdGhlciB0aGFuCglfX2RvX2dsb2JhbF9jdG9ycyB0byBoYW5kbGUgY29uc3RydWN0b3JzLgoJKiBjb25maWcvcnM2MDAwL3N5c3Y0LmggKFNUQVJURklMRV9BRFNfU1BFQyk6IFVzZSBjcnRiZWdpbi4KCShTVEFSVEZJTEVfWUVMTE9XS05JRkVfU1BFQyk6IExpa2V3aXNlLgoJKFNUQVJURklMRV9NVk1FX1NQRUMpOiBMaWtld2lzZS4KCShTVEFSVEZJTEVfU0lNX1NQRUMpOiBMaWtld2lzZS4KCShFTkRGSUxFX0FEU19TUEVDKTogVXNlIGNydGVuZC4KCShFTkRGSUxFX1lFTExPV0tOSUZFX1NQRUMpOiBMaWtld2lzZS4KCShFTkRGSUxFX01WTUVfU1BFQyk6IExpa2V3aXNlLgoJKEVOREZJTEVfU0lNX1NQRUMpOiBMaWtld2lzZS4KCShTVEFSVEZJTEVfU09MQVJJU19TUEVDKTogVXNlIGNydGJlZ2luL2NydGJlZ2luUy4KCShFTkRGSUxFX1NPTEFSSVNfU1BFQyk6IFVzZSBjcnRlbmQvY3J0ZW5kUy4KCShTVEFSVEZJTEVfTElOVVhfU1BFQyk6IFVzZSBjcnRiZWdpblMgZm9yIHNoYXJlZCBvYmplY3RzLgoJKEVOREZJTEVfTElOVVhfU1BFQyk6IFVzZSBjcnRlbmRTIGZvciBzaGFyZWQgb2JqZWN0cy4KCSogY29uZmlnL3JzNjAwMC90LXBwY2NvbW0gKExJQjJGVU5DU19FWFRSQSk6IERvbid0IGJ1aWxkIGVhYmktY3RvcnMuby4KCShFWFRSQV9NVUxUSUxJQl9QQVJUUyk6IEJ1aWxkIGNydGJlZ2luUy9jcnRlbmRTLgoJKENSVFNUVUZGX1RfQ0ZMQUdTX1MpOiBEZWZpbmUuCgkqIGNvbmZpZy9yczYwMDAvZWFiaS1jdG9ycy5jOiBEZWxldGUuCgoJKiBjb25maWcvcnM2MDAwL2VhYmktY2kuYXNtIChfX2luaXQpOiBBbGlnbiBzdGFjayB0byAxNi1ieXRlCglib3VuZGFyeS4KCShfX2ZpbmkpOiBMaWtld2lzZS4KCSogY29uZmlnL3JzNjAwMC9lYWJpLWNuLmFzbSAoX19pbml0KTogQWxsb3cgZm9yIDE2LWJ5dGUgc3RhY2sgZnJhbWUuCglib3VuZGFyeS4KCShfX2ZpbmkpOiBMaWtld2lzZS4KCkZyaSBBcHIgMTQgMTY6MDk6MDIgMjAwMCAgSmltIFdpbHNvbiAgPHdpbHNvbkBjeWdudXMuY29tPgoKCSogY29tYmluZS5jIChmb3JjZV90b19tb2RlLCBjYXNlIExTSElGVFJUKTogQ2hlY2sgdGhhdCBzaGlmdCBzaGlmdAoJcGx1cyBtYXNrIHNpemUgaXMgc21hbGxlciBvciBlcXVhbCB0byB0aGUgbW9kZSBzaXplLgoKRnJpIEFwciAxNCAxODowNzozMCAyMDAwICBSaWNoYXJkIEtlbm5lciAgPGtlbm5lckB2bHNpMS51bHRyYS5ueXUuZWR1PgoKCSogcHJpbnQtcnRsLmMgKHByaW50X3J0eCwgY2FzZSBOT1RFKTogRG9uJ3QgYmxvdyB1cCBpZiBOT1RFX0JBU0lDX0JMT0NLCglub3QgeWV0IHNldC4KCgkqIGV4cHIuYyAocmVsb2FkLmgpOiBOb3cgaW5jbHVkZWQuCgkoZW1pdF9ibG9ja19tb3ZlKTogU2V0IHZvbGF0aWxlX29rIHdoZW4gY2hlY2tpbmcgZm9yIG1vdnN0ci4KCShlbWl0X21vdmVfMSk6IENoZWNrIGZvciByZXBsYWNlbWVudHMgaW4gYWRkcmVzc2VzIGluIG11bHRpLXdvcmQgY2FzZS4KCSogTWFrZWZpbGUuaW4gKGV4cHIubyk6IE5vdyBpbmNsdWRlcyByZWxvYWQuaC4KCgkqIGZsb3cuYyAoY291bnRfYmFzaWNfYmxvY2tzKTogUmVtb3ZlIHVudXNlZCB2YXIgUFJFVl9DQUxMLgoJTmV2ZXIgaGF2ZSBhIExJQkNBTEwgZW5kIGEgYmFzaWMgYmxvY2suCgkoZmluZF9iYXNpY19ibG9ja3NfMSk6IExpa2V3aXNlLgoJUmVvcmdhbml6ZSBDQUxMX0lOU04gY2FzZXMuCgoJKiBzYml0bWFwLmggKEVYRUNVVEVfSUZfU0VUX0lOX1NCSVRNQVApOiBSZXZlcnQgbGFzdCBjaGFuZ2UuCgpGcmkgQXByIDE0IDEwOjU0OjIyIDIwMDAgIEppbSBXaWxzb24gIDx3aWxzb25AY3lnbnVzLmNvbT4KCgkqIGNvbmZpZy9pYTY0L2xpYjFmdW5jcy5hc20gKF9faWE2NF9ub25sb2NhbF9nb3RvKTogRHJvcCBvYnNvbGV0ZQoJY29tcGxldGVycyBmcm9tIG1vdi5yZXQgaW5zdHJ1Y3Rpb24uCgoyMDAwLTA0LTE0ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEBjeWdudXMuY29tPgoKCSogZm9sZC1jb25zdC5jIChleHRyYWN0X211bGRpdik6IERvbid0IGRpc3RyaWJ1dGUgYW5kIHdpZGVuCgltdWx0aXBseSBhY3Jvc3MgcGx1cyBmb3Igbm9uLXNpemV0eXBlIHVuc2lnbmVkIHR5cGVzLgoKMjAwMC0wNC0xNCAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAY3lnbnVzLmNvbT4KCgkqIGZsb3cuYyAoZmluZF9hdXRvX2luYyk6IERvbid0IGF1dG9pbmMgZWxpbWluYWJsZSByZWdpc3RlcnMuCglJZiB0aGUgb3JpZ2luYWwgc291cmNlIGlzIGRlYWQgaW4gdGhlIGluY3IgaW5zbiwgaXQncyBkZWFkIG5vdy4KCkZyaSBBcHIgMTQgMDc6NDA6MzIgMjAwMCAgUmljaGFyZCBLZW5uZXIgIDxrZW5uZXJAdmxzaTEudWx0cmEubnl1LmVkdT4KCgkqIHN0b3ItbGF5b3V0LmMgKGxheW91dF9kZWNsKTogUHJvcGVybHkgY29tcGFyZSBLTk9XTl9BTElHTiB0bwoJc2VlIGlmIERFQ0xfQklUX0ZJRUxEIG5lZWRzIHRvIHN0aWxsIGJlIHNldC4KCgkqIHRyZWUuaCAoc3RydWN0IHRyZWVfdHlwZSk6IE1ha2UgUFJFQ0lTSU9OIDkgYml0cyBhbmQgTU9ERSA3LgoKCSogZGJ4b3V0LmMgKGRieG91dF90eXBlLCBjYXNlIElOVEVHRVJfVFlQRSk6IERvbid0IGNhbGwKCXByaW50X2ludF9jc3Rfb2N0YWwgd2l0aCBzb21ldGhpbmcgdGhhdCdzIG5vdCBhbiBJTlRFR0VSX0NTVC4KCgkqIGNvbmZpZy9hbHBoYS9hbHBoYS5jIChhbHBoYV9lbWl0X2Zsb2F0dW5zKTogRW5zdXJlIHdlIHBhc3MgYSBSRUcKCWFuZCBub3QgYSBTVUJSRUcgdG8gYSBGTE9BVCBydGwuCgpUaHUgQXByIDEzIDE5OjM5OjU2IDIwMDAgIENsaW50b24gUG9wZXR6ICA8Y3BvcGV0ekBjeWdudXMuY29tPgoKCSogZW1pdC1ydGwuYyAodHJ5X3NwbGl0KTogQXZvaWQgaW5maW5pdGUgbG9vcCBpZiB0aGUgc3BsaXQKCXJlc3VsdHMgaW4gYSBzZXF1ZW5jZSB0aGF0IGNvbnRhaW5zIHRoZSBvcmlnaW5hbCBpbnNuLgoKMjAwMC0wNC0xMyAgQW5kcmVhcyBKYWVnZXIgIDxhakBzdXNlLmRlPgoKCSogY29uZmlnL21pcHMvbWlwcy5jIChleHBhbmRfYmxvY2tfbW92ZSk6IFBhc3MgYWxpZ25tZW50Cglhcmd1bWVudCB0byBtb3ZlX2J5X3BpZWNlcyBpbiBiaXRzLCBub3QgYnl0ZXMuCgoJKiBjb25maWcvbWlwcy9saW51eC5oIChDUFBfUFJFREVGSU5FUyk6IEFsc28gZGVmaW5lIF9fUElDX18gYW5kCglfX3BpY19fIGZvciBsaXR0bGUgZW5kaWFuLgoKMjAwMC0wNC0xMyAgQW5kcmVhcyBKYWVnZXIgIDxhakBzdXNlLmRlPgoKCSogY29uZmlnL2kzODYvaTM4Ni1wcm90b3MuaDogQWRkIHByb3RvdHlwZSBmb3IKCXVub19jb21wYXJpc29uX29wZXJhdG9yLgoKVGh1IEFwciAxMyAxNTo1NTowOCBNRVQgRFNUIDIwMDAgIEphbiBIdWJpY2thICA8amhAc3VzZS5jej4KCgkqIGFsaWFzLmMgKG5vbmxvY2FsX3JlZmVyZW5jZV9wKTogVGFrZSBjYXJlIG9mIENBTExfSU5TTlMncyBmdXNhZ2UuCgkqIGNhbGxzLmMgKEVDRl9QVVJFKTogTmV3IGZsYWcuCgkoZW1pdF9jYWxsXzEpOiBIYW5kbGUgRUNGX1BVUkUgY2FsbHMuCgkoaW5pdGlhbGl6ZV9hcmd1bWVudF9pbmZvcm1hdGlvbik6IFVuc2V0IEVDRl9QVVJFIGZsYWcgdG9vLgoJKHByZWNvbXB1dGVfYXJndW1lbnRzKTogUHJlY29tcHV0ZSBmb3IgRUNGX1BVUkUgdG9vLgoJKGV4cGFuZF9jYWxsKTogSGFuZGxlIEVDRl9QVVJFIGNhbGxzIHRvby4KCShlbWl0X2xpYnJhcnlfY2FsbF92YWx1ZV8xKTogUmVuYW1lIG5vX3F1ZXVlIGFyZ3VtZW50IHRvIGZuX3R5cGUsCglhY2NlcHQgdmFsdWUgb2YgMiBhcyBwdXJlIGZ1bmN0aW9uLgoJKGVtaXRfbGlicmFyeV9jYWxsX3ZhbHVlLCBlbWl0X2xpYnJhcnlfY2FsbCk6IFJlbmFtZSBub19xdWV1ZSBhcmd1bWVudAoJdG8gZm5fdHlwZS4KCSogb3B0YWJzLmMgKHByZXBhcmVfY21wX2luc24pOiBQYXNzIGZuX3R5cGUgMiB0byBtZW1jbXAgY2FsbC4KCgkqIHRyZWUuaCAoREVDTF9JU19QVVJFKTogTmV3IG1hY3JvLgoJKHN0cnVjdCB0cmVlX2RlY2wpOiBBZGQgcHVyZV9mbGFnLgoJKiBjLWNvbW1vbi5jIChlbnVtIGF0dHJzKTogQWRkIGF0dHJpYnV0ZSAicHVyZSIuCgkoaW5pdF9hdHRyaWJ1dGVzKTogSW5pdGlhbGl6ZSBhdHRyaWJ1dGUgInB1cmUiCgkoZGVjbF9hdHRyaWJ1dGVzKTogSGFuZGxlIGF0dHJpYnV0ZSAicHVyZSIuCgkqIGV4dGVuZC50ZXhpIChBdHRyaWJ1dGUgInB1cmUiKTogRG9jdW1lbnQuCgkqIGNhbGxzLmMgKGV4cGFuZF9jYWxsKTogQWRkIChtZW06QkxLIChzY3JhdGNoKSkgdG8gImVxdWFsIGZyb20iCglpbiBwdXJlIGZ1bmN0aW9uLgoJKGZsYWdzX2Zyb21fZGVjbF9vcl90eXBlKTogU3VwcG9ydCBhdHRyaWJ1dGUgInB1cmUiLgoKMjAwMC0wNC0xMyAgSmFzb24gTWVycmlsbCAgPGphc29uQGNhc2V5LmN5Z251cy5jb20+CgoJKiBjcHBsZXguYyAoX2NwcF9sZXhfdG9rZW4pOiBIYW5kbGUgZGlncmFwaHMuICBEb24ndCBudWxsLXRlcm1pbmF0ZQoJdGhlIHRva2VuIGV4Y2VwdCBmb3IgbnVtYmVycyBhbmQgaWRlbnRpZmllcnMuCgpUaHUgQXByIDEzIDAwOjA5OjE2IEVEVCAyMDAwICBKb2huIFdlaGxlICAoam9obkBmZWl0aC5jb20pCgoJKiBpMzg2LmMgKGl4ODZfZXhwYW5kX2JpbmFyeV9vcGVyYXRvciwKCWl4ODZfZXhwYW5kX3VuYXJ5X29wZXJhdG9yKTogQ2hlY2sgbm9fbmV3X3BzZXVkb3MKCWluc3RlYWQgb2YgcmVsb2FkX2luX3Byb2dyZXNzIGFuZCByZWxvYWRfY29tcGxldGVkLgoJKGl4ODZfc3BsaXRfYXNobGRpLCBpeDg2X3NwbGl0X2FzaHJkaSwKCWl4ODZfc3BsaXRfbHNocmRpKTogQ2hlY2sgbm9fbmV3X3BzZXVkb3MgaW5zdGVhZAoJb2YgcmVsb2FkX2NvbXBsZXRlZC4KCjIwMDAtMDQtMTIgIEplZmZyZXkgQSBMYXcgIChsYXdAY3lnbnVzLmNvbSkKCgkqIGZ1bmN0aW9uLmMgKHB1cmdlX2FkZHJlc3NvZik6IFVuc2hhcmUgYW55IHNoYXJlZCBydGwgY3JlYXRlZCBieQoJcHVyZ2VfYWRkcmVzc29mIGFuZCBpdHMgY2hpbGRyZW4uCgoyMDAwLTA0LTEyICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogZnVuY3Rpb24uYyAoYWdncmVnYXRlX3ZhbHVlX3ApOiBWT0lEX1RZUEUgbm9kZXMgYXJlIG5ldmVyCglhZ2dyZWdhdGVzLgoKMjAwMC0wNC0wNSAgQW5kcmVhcyBKYWVnZXIgIDxhakBzdXNlLmRlPgoKCSogY29uZmlnL21pcHMvbGludXguaCAoU1VCVEFSR0VUX0FTTV9TUEVDKTogVXNlIHByb3BlciBmbGFncyBpZgoJbm90IGNvbXBpbGluZyBQSUMgY29kZSwgYWRkIGZsYWdzIGZvciBtYWJpPTY0LgoJKFNVQlRBUkdFVF9DUFBfU0laRV9TUEVDKTogTmV3LgoJKFNVQlRBUkdFVF9DUFBfU1BFQyk6IE5ldy4KCShDUFBfUFJFREVGSU5FUyk6IERlZmluZSBfX1BJQ19fIGFuZCBfX3BpY19fLiAgUElDIGNvZGUgaXMgZGVmYXVsdAoJZm9yIE1JUFMvTGludXggYW5kIGxvdHMgb2YgY29kZSBuZWVkcyB0aGVzZSBkZWZpbmVzLgoKV2VkIEFwciAxMiAyMjo0NDoxMSAyMDAwICBIYW5zLVBldGVyIE5pbHNzb24gIDxocEBheGlzLmNvbT4KCgkqIHJlb3JnLmMgKGZpbGxfc2xvdHNfZnJvbV90aHJlYWQpOiBDaGVjayBzaWRlX2VmZmVjdHNfcCB3aGVuCgl0cnlpbmcgdGhlICJvcHBvc2l0ZSBhcml0aG1ldGljIiBhcHByb2FjaC4KCldlZCBBcHIgMTIgMjA6NTE6MjAgMjAwMCAgSiJvcm4gUmVubmVja2UgPGFteWxhYXJAY3lnbnVzLmNvLnVrPgoKCSogc2guaCAoU1RSVUNUX1ZBTFVFKTogSnVzdCAwIGZvciBUQVJHRVRfSElUQUNISS4KCShzdHJ1Y3Qgc2hfYXJncyk6IEFkZCBuZXcgZmllbGQgZm9yY2VfbWVtLgoJKElOSVRfQ1VNVUxBVElWRV9BUkdTKTogSW5pdGlhbGl6ZSBpdC4KCShGVU5DVElPTl9BUkcsIEZVTkNUSU9OX0FSR19BRFZBTkNFKTogQWN0IG9uIGl0LgoKV2VkIEFwciAxMiAxNzoyMDo0MSBNRVQgRFNUIDIwMDAgIEphbiBIdWJpY2thICA8amhAc3VzZS5jej4KCgkqIGNhbGxzLmMgKGV4cGFuZF9jYWxsKTogRG8gbm90IHJldmVyc2UgYXJncyBpbiAiZXF1YWwgZnJvbSIgZmllbGQuCgkoZW1pdF9saWJyYXJ5X2NhbGxfdmFsdWVfMSk6IEVtaXRfbGliY2FsbF9ibG9jayBmb3IgY29uc3QgYW5kIHB1cmUKCWZ1bmN0aW9uLgoKV2VkIEFwciAxMiAxNjowMDoyNSAyMDAwICBKIm9ybiBSZW5uZWNrZSA8YW15bGFhckBjeWdudXMuY28udWs+CgoJKiByZWxvYWQxLmMgKHJlbG9hZF9jb21iaW5lKTogRG9uJ3QgZW5hYmxlIG9wdGltaXphdGlvbiBmb3IgZml4ZWQKCXJlZ2lzdGVycyB3aGVuIGVuY291bnRlcmluZyBhIEJBUlJJRVIuCgpXZWQgQXByIDEyIDE1OjU0OjExIE1FVCBEU1QgMjAwMCAgSmFuIEh1Ymlja2EgIDxqaEBzdXNlLmN6PgoKCSogYnVpbHRpbnMuYyAoZXhwYW5kX2J1aWx0aW5fbWVtY21wKTogRG8gZXhwYW5zaW9uIGV2ZW4gd2l0aAoJIUhBVkVfY21wc3Ryc2ksIGRvIGxpYmNhbGwgd2hlbiBnZW5fc3RyY21wc2kgZmFpbHMuCgoJKiBjYWxscy5jIChleHBhbmRfY2FsbCk6IERvIE5PX0RFRkVSX1BPUCB1bmNvbmRpdGlvbmFsbHkgb25jZQoJc3RhY2sgaXMgcHJvcGVybHkgYWxpZ25lZDsgYWRkIHNhbml0eSBjaGVja2luZyBmb3IgYWxpZ25lZAoJc3RhY2sgcG9pbnRlci4KCShleHBhbmRfbGlicmFyeV9jYWxsX3ZhbHVlXzEpOiBBZGQgc2FuaXR5IGNoZWNraW5nIGZvciBhbGlnbmVkCglzdGFjayBwb2ludGVyLgoKV2VkIEFwciAxMiAwNzo1MTo1NCAyMDAwICBDYXRoZXJpbmUgTW9vcmUgIDxjbG1AY3lnbnVzLmNvbT4KCgkqIGNhbGxzLmMgKGVtaXRfbGlicmFyeV9jYWxsX3ZhbHVlXzEpOiBDaGFuZ2UgM3JkIGFyZyB0bwoJbG9jYXRlX2FuZF9wYWRfcGFybSB0byBkaXNyZWdhcmQgdGhlIHNldHRpbmcgb2YgcGFydGlhbC4KCldlZCBBcHIgMTIgMDg6NDc6MzggMjAwMCAgUmljaGFyZCBLZW5uZXIgIDxrZW5uZXJAdmxzaTEudWx0cmEubnl1LmVkdT4KCgkqIHRyZWUuYyAodW5zYXZlX2V4cHJfbm93X3IsIHVuc2FmZV9mb3JfcmVldmFsKTogUHJvcGVybHkgZG8gVFJFRV9MSVNULgoKCSogcHJpbnQtcnRsLmMgKHByaW50X3J0eCk6IEZvciBDQUxMX1BMQUNFSE9MREVSLCBvdXRwdXQgdGhlCglDQUxMX0lOU04gZnJvbSB0aGUgbm9ybWFsIGNhc2UuCgpGcmkgQXByICA3IDEyOjIzOjA0IE1FVCBEU1QgMjAwMCAgSmFuIEh1Ymlja2EgIDxqaEBzdXNlLmN6PgoKCSogaTM4Ni5jICh4ODZfc3ViX2VzcF80LCB4ODZfc3ViX2VzcF84LCB4ODZfYWRkX2VzcF80LCB4ODZfYWRkX2VzcF84KToKCU5ldyBnbG9iYWwgdmFyaWFibGVzLgoJKGl4ODZfZW1pdF9lcGlsb2d1ZV9hZGp1c3RtZW50KTogRG8gbm90IGF0dGVtcHQgdG8gdXNlIHBvcCBmb3IgdGhlCglhZGp1c3RtZW50LgoJKiBpMzg2LmggKHg4Nl9zdWJfZXNwXzQsIHg4Nl9zdWJfZXNwXzgsIHg4Nl9hZGRfZXNwXzQsIHg4Nl9hZGRfZXNwXzgpOgoJRGVjbGFyZSwKCShUQVJHRVRfU1VCX0VTUF80LCBUQVJHRVRfU1VCX0VTUF84LCBUQVJHRVRfQUREX0VTUF80LAoJIFRBUkdFVF9BRERfRVNQXzgpOiBOZXcgbWFjcm9zLgoJKiBpMzg2Lm1kOiBBZGQgcGVlcDJzIHRvIGNvbnZlcnQgZXNwIGFkanVzdG1lbnRzIHRvIHB1c2ggYW5kIHBvcAoJaW5zdHJ1Y3Rpb25zLgoJKHB1c2hzaV9wcm9sb2d1ZSwgcG9wc2lfZXBpbG9ndWUpOiBOZXcgcGF0dGVybnMuCgoyMDAwLTA0LTEyICBKYWt1YiBKZWxpbmVrICA8amFrdWJAcmVkaGF0LmNvbT4KCgkqIHJlYWwuYyAodG9lNjQpOiBSZW1vdmUgc3RhbGUgI2VuZGlmIGZyb20gdGhlIGxhc3QgY2hhbmdlLgoKMjAwMC0wNC0xMiAgU3RlcGhlbiBMIE1vc2hpZXIgIDxtb3NoaWVyQG1lZGlhb25lLm5ldD4KCgkqIHJlYWwuaCAoTUFYX0xPTkdfRE9VQkxFX1RZUEVfU0laRSk6IENvbW1lbnQuCgkqIHJlYWwuYyAodG9lNjQpOiBSZXZlcnQgcHJldmlvdXMgY2hhbmdlLgoKMjAwMC0wNC0xMiAgSmFrdWIgSmVsaW5layAgPGpha3ViQHJlZGhhdC5jb20+CgoJKiBvYmpjL29iamMtYWN0LmM6IEluY2x1ZGUgZ2djLmguCgkob2JqY190cmVlX2luZGV4LCBvYmpjX2dsb2JhbF90cmVlcyk6IENvbnZlcnQgbW9zdCBvZiB0aGUKCXN0YXRpYyB0cmVlIHZhcmlhYmxlcyBpbnRvIGEgc3RhdGljIGFycmF5IHdpdGggcHJldmlvdXMgbmFtZXMKCWFzIGRlZmluZXMuCgkob2JqY19lbGxpcHNpc19ub2RlKTogTmV3IHZhcmlhYmxlLgoJKGxhbmdfaW5pdCk6IENhbGwgb2JqY19hY3RfcGFyc2VfaW5pdCBhbmQgY19wYXJzZV9pbml0LgoJQ3JlYXRlIG9iamNfZWxsaXBzaXNfbm9kZS4KCShidWlsZF9zZWxlY3Rvcl90cmFuc2xhdGlvbl90YWJsZSk6IFVzZSBvYmpjX2VsbGlwc2lzX25vZGUgaW5zdGVhZAoJb2YgKHRyZWUpMS4KCShoYWNrX21ldGhvZF9wcm90b3R5cGUpOiBMaWtld2lzZS4KCShnZXRfYXJnX3R5cGVfbGlzdCk6IExpa2V3aXNlLgoJKHN0YXJ0X21ldGhvZF9kZWYpOiBMaWtld2lzZS4KCShjb250aW51ZV9tZXRob2RfZGVmKTogTGlrZXdpc2UuCgkoZ2VuX21ldGhvZF9kZWNsKTogTGlrZXdpc2UuCgkoZ2djX21hcmtfaW1wX2xpc3QpOiBOZXcgZnVuY3Rpb24uCgkoZ2djX21hcmtfaGFzaF90YWJsZSk6IE5ldyBmdW5jdGlvbi4KCShvYmpjX2FjdF9wYXJzZV9pbml0KTogTmV3IGZ1bmN0aW9uLgoJKiBvYmpjL29iamMtYWN0LmggKG9iamNfZWxsaXBzaXNfbm9kZSk6IEFkZCBleHRlcm4gdmFyaWFibGUuCgkqIGMtcGFyc2UuaW4gKGNfcGFyc2VfaW5pdCk6IEZvciBvYmpjIGFkZCByb290cyBvZiBvYmpjIHNwZWNpZmljCglsb2NhbCB0cmVlIHZhcmlhYmxlcy4KCSogb2JqYy9vYmpjLXBhcnNlLnk6IFJlYnVpbHQuCgkqIG9iamMvb2JqYy1wYXJzZS5jOiBSZWJ1aWx0LgoJKG9wdF9wYXJtX2xpc3QpOiBVc2Ugb2JqY19lbGxpcHNpc19ub2RlIGluc3RlYWQgb2YgKHRyZWUpMS4KCldlZCBBcHIgMTIgMDE6MDA6NDQgRURUIDIwMDAgIEpvaG4gV2VobGUgIChqb2huQGZlaXRoLmNvbSkKCgkqIGNzZS5jIChkZWxldGVfdHJpdmlhbGx5X2RlYWRfaW5zbnMpOiBBbHNvIGRlbGV0ZSBpbnNucwoJdGhhdCBjb3B5IGEgcmVnaXN0ZXIgdG8gaXRzZWxmIHdoZXJlIHRoZSBkZXN0aW5hdGlvbiBpcwoJYSBzdHJpY3RfbG93X3BhcnQuCgoyMDAwLTA0LTExICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEBjeWdudXMuY29tPgoKCSogZmxvdy5jIChzdHJ1Y3QgcHJvcGFnYXRlX2Jsb2NrX2luZm8pOiBBZGQgbmV3X2RlYWQsIG5ld19saXZlLgoJKHByb3BhZ2F0ZV9ibG9jayk6IEluaXRpYWxpemUgdGhlbS4gIFVzZSB0aGVtIGluIHBhcmFsbGVsIGluc3RlYWQKCW9mIG9uZSB0bXAgdmFyaWFibGUsIGllIHJldmVydCBtdWNoIG9mIHRoZSAwNDA4IGFuZCAwNDA3IGZ1bmN0aW9uYWwKCWNoYW5nZXMsIGJ1dCBrZWVwIHRoZSBzdHJ1Y3R1cmFsIGNoYW5nZXMuCgkobWFya19zZXRfcmVncyk6IFRha2UgbmV3X2RlYWQgZnJvbSBwcm9wYWdhdGVfYmxvY2tfaW5mbyBpbnN0ZWFkLgoJKG1hcmtfc2V0XzEsIG1hcmtfc2V0X3JlZyk6IExpa2V3aXNlLgoJKG1hcmtfdXNlZF9yZWdzKTogTGlrZXdpc2Ugd2l0aCBuZXdfbGl2ZS4KCShtYXJrX3VzZWRfcmVnKTogTGlrZXdpc2UuICBSZXZlcnQgMDQwOCBjaGFuZ2UuCgoyMDAwLTA0LTExICBOaWNrIENsaWZ0b24gIDxuaWNrY0BjeWdudXMuY29tPgoKCSogY29uZmlnL2FybS9hcm0uaDogKElOQ09NSU5HX1JFVFVSTl9BRERSX1JUWCk6IFJlbW92ZSBEd2FyZjIKCXJlc3RyaWN0aW9uLgoJKERXQVJGX0ZSQU1FX1JFVFVSTl9DT0xVTU4pOiBSZW1vdmUgRHdhcmYyIHJlc3RyaWN0aW9uLgoKMjAwMC0wNC0xMSAgQWxleGFuZHJlIE9saXZhICA8b2xpdmFAbHNkLmljLnVuaWNhbXAuYnI+CgoJKiBjb25maWcvZWxmb3MuaCAoU0VMRUNUX1NFQ1RJT04pOiBEZWNpZGUgd2hldGhlciB0byB1c2UgYSBkYXRhIG9yCgljb25zdCBzZWN0aW9uIHRvIG91dHB1dCBhIENPTlNUUlVDVE9SIGJhc2VkIG9uIHRoZSBzYW1lIGNvbmRpdGlvbnMKCXVzZWQgZm9yIFZBUl9ERUNMcy4KClR1ZSBBcHIgMTEgMDk6NTU6NTkgMjAwMCAgSmVmZnJleSBBIExhdyAgKGxhd0BjeWdudXMuY29tKQoKCSogcGEvbG9uZy1kb3VibGUuaCAoRklYX1RSVU5DVEZTSTJfTElCQ0FMTCk6IFR3ZWFrIGZvciBQQTY0LgoJKiBwYS9wYS1wcm90b3MuaCAob3V0cHV0X2NhbGwpOiBBZGQgYWRkaXRpb25hbCBhcmd1bWVudCBpbmRpY2F0aW5nCglpZiB0aGUgY2FsbCBpcyBhIHNpYmxpbmcvdGFpbCBjYWxsLgoJKGNvbXB1dGVfemRlcGRpX29wZXJhbmRzLCBvdXRwdXRfNjRiaXRfYW5kKTogUHJvdG90eXBlIG5ldyBmdW5jdGlvbnMuCgkoY29tcHV0ZV82NGJpdF9pb3IsIGNtcGliX2NvbXBhcmlzb25fb3BlcmF0b3IpOiBMaWtld2lzZS4KCShmdW5jdGlvbl9hcmcsIGZ1bmN0aW9uX2FyZ19wYXJ0aWFsX25yZWdzKTogTGlrZXdpc2UKCSogcGEvcGEuYyAob3ZlcnJpZGVfb3B0aW9ucyk6IEFsd2F5cyBzZXQgZmxhZ19waWMgZm9yIFRBUkdFVF82NEJJVC4KCShlbWl0X21vdmVfc2VxdWVuY2UpOiBaZXJvIGV4dGVuZCBjZXJ0YWluIGNvbnN0YW50cyBhcyBuZWVkZWQKCWZvciBUQVJHRVRfNjRCSVQuCgkoY29tcHV0ZV96ZGVwZGlfb3BlcmFuZHMsIG91dHB1dF82NGJpdF9hbmQpOiBOZXcgZnVuY3Rpb25zLgoJKG91dHB1dF82NGJpdF9pb3IsIGZ1bmN0aW9uX2FyZyk6IExpa2V3aXNlLgoJKGNtcGliX2NvbXBhcmlzb25fb3BlcmF0b3IsIGZ1bmN0aW9uX2FyZ19wYXJ0aWFsX25yZWdzKTogTGlrZXdpc2UuCgkoY29tcHV0ZV9mcmFtZV9zaXplLCBocHBhX2V4cGFuZF9wcm9sb2d1ZSk6IEhhbmRsZSBUQVJHRVRfNjRCSVQuCgkoaHBwYV9leHBhbmRfZXBpbG9ndWUsIHJldHVybl9hZGRyX3J0eCwgaHBwYV92YV9hcmcpOiBMaWtld2lzZS4KCShocHBhX2J1aWx0aW5fc2F2ZXJlZ3MsIG91dHB1dF9jYnJhbmNoLCBvdXRwdXRfYmIpOiBMaWtld2lzZS4KCShvdXRwdXRfYnZiKTogTGlrZXdpc2UuCgkob3V0cHV0X21pbGxpY29kZV9jYWxsKTogUmV0dXJuIHBvaW50ZXIgaXMgaW4gJXIyIGZvciBUQVJHRVRfNjRCSVQuCgkob3V0cHV0X2NhbGwpOiBOZXcgYXJndW1lbnQgJ3NpYmNhbGwnLiAgR2VuZXJhdGUgc2liY2FsbCBzZXF1ZW5jZXMKCWFzIG5lZWRlZC4KCShwcmludF9vcGVyYW5kKTsgSGFuZGxlIGNhc2VzICdRJywgJ3AnLCBhbmQgJ3onIGZvciBUQVJHRVRfNjRCSVQuICBGb3IKCShvdXB1dF9hcmdfZGVzY3JpcHRvcik6IERvIG5vdCBlbWl0IGFyZ3VtZW50IGRlc2NyaXB0b3JzIGZvcgoJVEFSR0VUXzY0QklULgoJKiBwYS9wYS5oIChUQVJHRVRfUEFfMTEsIFRBUkdFVF9QQV8yMCk6IE9ubHkgZGVmaW5lIGlmIG5vdCBhbHJlYWR5CglkZWZpbmVkLgoJKFRBUkdFVF82NEJJVCwgUFJPTU9URV9GVU5DVElPTl9SRVRVUk4pOiBEZWZpbmUuCgkoRlVOQ1RJT05fT0tfRk9SX1NJQkFMTCk6IERlZmluZS4KCShDUFBfUEExMF9TUEVDLCBDUFBfUEExMV9TUEVDLCBDUFBfUEEyMF9TUEVDKTogRGVmaW5lLgoJKENQUF9DUFVfREVGQVVMVF9TUEVDLCBTVUJUQVJHRVRfRVhUUkFfU1BFQ1MsIEVYVFJBX1NQRUNTKTogTGlrZXdpc2UuCgkoQ1BQX1NQRUMpOiBVc2UgbmV3IHNwZWMgaW5mcmFzdHJ1Y3R1cmUuCgkoQklUU19QRVJfV09SRCwgVU5JVFNfUEVSX1dPUkQpOiBIYW5kbGUgVEFSR0VUXzY0QklULgoJKFNUQUNLX0JPVU5EQVJZLCBGVU5DVElPTl9CT1VOREFSWSwgUElDX09GRlNFVF9UQUJMRV9SRUdOVU0pOiBMaWtld2lzZS4KCShSRVRVUk5fSU5fTUVNT1JZLCBFWFRSQV9DT05TVFJBSU5ULCBGSVJTVF9QQVJNX09GRlNFVCk6IExpa2V3aXNlLgoJKFJFR19QQVJNX1NUQUNLX1NQQUNFLCBTVEFDS19QT0lOVEVSX09GRlNFVCk6IExpa2V3aXNlLgoJKFNUQUNLX0RZTkFNSUNfT0ZGU0VULCBGVU5DVElPTl9WQUxVRSk6IExpa2V3aXNlLgoJKEZVTkNUSU9OX0FSR19QQVNTX0JZX1JFRkVSRU5DRSwgRlVOQ1RJT05fQVJHX0NBTExFRV9DT1BJRVMpOiBMaWtld2lzZS4KCShUUkFNUE9MSU5FX1RFTVBMQVRFLCBUUkFNUE9MSU5FX1NJWkUpOiBMaWtld2lzZS4KCShJTklUSUFMSVpFX1RSQU1QT0xJTkUsIExFR0lUSU1BVEVfQ09OU1RBTlRfUCk6IExpa2V3aXNlLgoJKENPTlNUX09LX0ZPUl9MRVRURVJfUCwgTU9WRV9SQVRJTyk6IExpa2V3aXNlLgoJKEZVTkNUSU9OX0FSRyk7IENhbGwgb3V0IHRvIEMgY29kZS4KCShGVU5DVElPTl9BUkdfUEFSVElBTF9OUkVHUyk6IExpa2V3aXNlLgoJKE1BWF9CSVRTX1BFUl9XT1JELCBNQVhfTE9OR19UWVBFX1NJWkUsIE1BWF9XQ0hBUl9UWVBFX1NJWkUpOiBEZWZpbmUuCgkoTUlOX1VOSVRTX1BFUl9XT1JEKTogTGlrZXdpc2UuCgkqIHBhL3BhLm1kIChjbXBkaSk6IE5ldyBleHBhbmRlci4KCShzY2MgcGF0dGVybnMsIG1vdnN0cnNpKTogTm90IGF2YWlsYWJsZSBmb3IgVEFSR0VUXzY0QklULgoJKDY0Yml0IGNvbmRpdGlvbmFsIGFyaXRobWV0aWMpOiBOZXcgcGF0dGVybnMuCgkoYWJzZGkyLCBzbWluZGkzLCB1bWluZGkzLCBzbWF4ZGkzLCB1bWF4ZGkzKTogTmV3IHBhdHRlcm5zLgoJKG1vdnNpY2MpOiBOb3QgYXZhaWxhYmxlIGlmIG1vZGVzIG9uIGFsbCB0aGUgb3BlcmFuZHMgdG8gbm90IG1hdGNoLgoJKG1vdmRpY2MpOiBOZXcgZXhwYW5kZXIgYW5kIGFzc29jaWF0ZWQgcGF0dGVybnMuCgkoNjRiaXQgYnJhbmNoZXMpOiBOZXcgcGF0dGVybnMuCgkocHJlX2xvYWQsIHBvc3Rfc3RvcmUpOiBHZW5lcmF0ZSBhcHByb3ByaWF0ZSBjb2RlIGZvciBUQVJHRVRfNjRCSVQuCgkocHJlX2xkZCwgcG9zdF9zdGQpOiBOZXcgcGF0dGVybnMuCgkoNjRiaXQgYWRkaWwsIGxvYWQgbG93IHBhcnQpOiBOZXcgcGF0dGVybnMuCgkoc3BlY2lhbCBtb3ZzZiBjb25zdGFudCk6IE5vdCBhdmFpbGFibGUgZm9yIFRBUkdFVF82NEJJVC4KCShtb3ZzZiwgbW92ZGYgZXhwYW5kZXJzKTogRm9yY2UgY29uc3RhbnRzIGludG8gbWVtb3J5LgoJKDMyYml0IG1vdmRmL21vdmRpIHBhdHRlcm5zKTogRGlzYWJsZSBmb3IgVEFSR0VUXzY0QklULgoJKDY0Yml0IG1vdmRmL21vdmRpIHBhdHRlcm5zKTogTmV3IHBhdHRlcm5zLgoJKHplcm9fZXh0ZW5kcWlkaTIsIHplcm9fZXh0ZW5kaGlkaTIsIHplcm9fZXh0ZW5kc2lkaTIpOiBOZXcgcGF0dGVybnMKCWZvciBUQVJHRVRfNjRCSVQuCgkoZXh0ZW5kcWlkaTIsIGV4dGVuZGhpZGkyLCBleHRlbmRzaWRpMik6IFNpbWlsYXJseS4KCShhZGRkaTMgZXhwYW5kZXIpOiBBbGxvdyAiYXJpdGhfb3BlcmFuZCIgZm9yIHNlY29uZCBpbnB1dC4KCSgzMmJpdCBhZGRkaTMsIHN1YmRpMywgdWFkZGNtKTogRGlzYWJsZSBmb3IgVEFSR0VUXzY0QklULgoJKDY0Yml0IGFkZGRpMywgc3Vic2kzLCB1YWRkY20pOiBOZXcgcGF0dGVybnMgZm9yIFRBUkdFVF82NEJJVC4KCShtdWxzaTMgZXhwYW5kZXIpOiBSZXZhbXAgc2xpZ2h0bHkgc28gaXQgc3VwcG9ydHMgVEFSR0VUXzY0QklUIHRvby4KCShtdWxkaTMpOiBOZXcgZXhwYW5kZXIgZm9yIFRBUkdFVF82NEJJVC4KCShkaXZzaTMsIHVkaXZzaTMsIG1vZHNpMywgdW1vZHNpMyk6IEZvdXJ0aCBvcGVyYW5kIG11c3QgYmUgKHJlZzpTSSAyKQoJZm9yIFRBUkdFVF82NEJJVC4KCSgzMmJpdCBhbmRkaTMsIGlvcmRpMywgeG9yZGkzLCBhbmRjbSwgbmVnZGkyLCB1YWRkY20pOiBEaXNhYmxlCglwYXR0ZXJucyBmb3IgVEFSR0VUXzY0QklULgoJKDY0Yml0IGFuZGRpMywgaW9yZGkzLCB4b3JkaTMsIGFuZGNtLCBuZWdkaTIsIHVhZGRjbSwgc2hhZGQpOiBOZXcKCXBhdHRlcm5zIGZvciBUQVJHRVRfNjRCSVQuCgkoNjRiaXQgYml0IGluc2VydGlvbi9leHRyYWN0aW9ucyk6IE5ldyBwYXR0ZXJucyBmb3IgVEFSR0VUXzY0QklULgoJKDY0Yml0IHNoaWZ0cy9yb3RhdGVzKTogTmV3IHBhdHRlcm5zL2V4cGFuZGVycyBmb3IgVEFSR0VUXzY0QklULgoJKHNpYmNhbGxfZXBpbG9ndWUpOiBOZXcgZXhwYW5kZXIuCgkoY2FzZXNpKTogVHdlYWsgZm9yIFRBUkdFVF82NEJJVC4KCShjYWxsIGV4cGFuZGVycyk6IFNldCAmIHVzZSB0aGUgb3V0Z29pbmcgYXJndW1lbnQgcG9pbnRlci4gIFVzZSB0aGUKCTY0Yml0IGNhbGwgcGF0dGVybnMgYXMgbmVlZGVkLiBBZGQgYWRkaXRpb25hbCBhcmcgdG8gb3V0cHV0X2NhbGwuCgkoY2FsbF9pbnRlcm5hbF9yZWdfNjRiaXQsIGNhbGxfdmFsdWVfaW50ZXJuYWxfcmVnXzY0Yml0KTogTmV3IHBhdHRlcm4uCgkoc2liY2FsbCwgc2liY2FsbF9pbnRlcm5hbF9zeW1yZWYpOiBOZXcgZXhwYW5kZXJzLgoJKHNpYmNhbGxfdmFsdWUsIHNpYmNhbGxfdmFsdWVfaW50ZXJuYWxfc3ltcmVmCgkoaW50ZXJzcGFjZV9qdW1wKTogVHVybiBpbnRvIGFuIGV4cGFuZGVyICsgbWF0Y2hpbmcgcGF0dGVybnMuCgkoY2Fub25pY2FsaXplX2Z1bmNwdHJfZm9yX2NvbXBhcmUpOiBOb3QgbmVlZGVkIGZvciBUQVJHRVRfNjRCSVQuCgkqIHBhL3BhNjQtcmVncy5oOiBFbGltaW5hdGUgdHJpZ3JhcGggc2VxdWVuY2VzLgoJKiBwYS9wYTY0LXN0YXJ0LmggKFRBUkdFVF9QQV8yMCk6IEZpeCB0eXBvLgoKMjAwMC0wNC0xMSAgWmFjayBXZWluYmVyZyAgPHphY2tAd29sZXJ5LmN1bWIub3JnPgoKCSogY3BwZXhwLmMsIGNwcGhhc2guYywgY3BwaGFzaC5oLCBjcHBsZXguYywgY3BwbGliLmMsCgljcHBsaWIuaCwgY3BwbWFpbi5jLCBmaXgtaGVhZGVyLmMsIHNjYW4tZGVjbHMuYzogUmVwbGFjZQoJY3BwX3Rva2VuIHdpdGggY3BwX3R0eXBlIGV2ZXJ5d2hlcmUuCgkqIGNwcGVycm9yLmMsIGNwcGhhc2guYywgY3BwbGV4LmMsIGNwcGxpYi5jLCBzY2FuLWRlY2xzLmM6CglSZXBsYWNlIGNwcF9idWZfbGluZV9hbmRfY29sIHdpdGggQ1BQX0JVRl9MSU5FIGFuZC9vcgoJQ1BQX0JVRl9DT0wuICBMaW5lIGFuZCBjb2x1bW4gbnVtYmVycyBhcmUgdW5zaWduZWQgaW50LCBub3QKCWxvbmcuCgkqIGNwcGxleC5jIChjcHBfYnVmX2xpbmVfYW5kX2NvbCk6IERlbGV0ZS4KCSogY3BwbGliLmggKHN0cnVjdCBjcHBfYnVmZmVyLCBzdHJ1Y3QgY3BwX3JlYWRlcik6IENoYW5nZQoJJ2xvbmcgbGluZW5vJyB0byAndW5zaWduZWQgaW50IGxpbmVubycuCgkoQ1BQX0JVRl9MSU5FLCBDUFBfQlVGX0NPTCk6IE5ldyBtYWNyb3MuCgoyMDAwLTA0LTExICBNYXJ0aW4gdi4gTPZ3aXMgIDxsb2V3aXNAaW5mb3JtYXRpay5odS1iZXJsaW4uZGU+CgoJKiBleHRlbmQudGV4aTogSVNPIEM5OSBpcyBub3QgYSBkcmFmdCBhbnltb3JlLgoJKiBpbnZva2UudGV4aTogSVNPIEMrKyBpcyBub3QgYSBkcmFmdCBhbnltb3JlLgoJKiBjcHAudGV4aTogX19jcGx1c3BsdXMgaXMgcmVxdWlyZWQgYnkgdGhlIElTTyBzdGFuZGFyZC4KCgkqIGV4dGVuZC50ZXhpICgtZnRoaXMtaXMtdmFyaWFibGUpOiBVbmRvY3VtZW50LgoJKiBmbGFncy5oICh3YXJuX3RlbXBsYXRlX2RlYnVnZ2luZyk6IFJlbW92ZSBkZWNsYXJhdGlvbi4KCSogZ2NjLjEgKC1mYWxsLXZpcnR1YWwsIC1mZW51bS1pbnQtZXF1aXYsIC1mdGhpcy1pcy12YXJpYWJsZSwKCS1XZW51bS1jbGFzaCwgLVd0ZW1wbGF0ZS1kZWJ1Z2dpbmcpOiBVbmRvY3VtZW50LgoKMjAwMC0wNC0xMCAgTmljayBDbGlmdG9uICA8bmlja2NAY3lnbnVzLmNvbT4KCgkqIGNvbmZpZy9hcm0vYXJtLmggKEhPU1RfSU5UKTogTmV3IG1hY3JvOiBEZWNsYXJlIGEgSE9TVF9XSURFX0lOVAoJaW50ZWdlci4KCShIT1NUX1VJTlQpOiBOZXcgbWFjcm86IERlY2xhcmUgYW4gdW5zaWduZWQgSE9TVF9XSURFX0lOVAoJaW50ZWdlci4KCShBUk1fU0lHTl9FWFRFTkQpOiBVc2UgSE9TVF9VSU5ULgoJKFNUUklQX05BTUVfRU5DT0RJTkcpOiBQcmV2ZW50IHdhcm5pbmdzIGFib3V0IHJlZGVmaW5pdGlvbnMuCgkoQVNNX09VVFBVVF9MQUJFTFJFRik6IFByZXZlbnQgd2FybmluZ3MgYWJvdXQgcmVkZWZpbml0aW9ucy4KCShJTkNPTUlOR19SRVRVUk5fQUREUl9SVFgpOiBPbmx5IGRlZmluZSBpZiBEd2FyZjIgaXMgc3VwcG9ydGVkLgoJKERXQVJGX0ZSQU1FX1JFVFVSTl9DT0xVTU4pOiBPbmx5IGRlZmluZSBpZiBEd2FyZjIgaXMgc3VwcG9ydGVkLgoKCSogY29uZmlnL2FybS9hcm0uYzogKGNvbnN0X29rX2Zvcl9hcm0pOiBVc2UgSE9TVF9VSU5ULgoJKGFybV9nZW5fY29uc3RhbnQpOiBVc2UgSE9TVF9VSU5ULgoJKGFybV9jYW5vbmljYWxpemVfY29uc3RhbnQpOiBVc2UgSE9TVF9VSU5ULgoJKGFybV9yZWxvYWRfaW5faGkpOiBVc2UgSE9TVF9VSU5ULgoJKGFybV9yZWxvYWRfb3V0X2hpKTogVXNlIEhPU1RfVUlOVC4KCShvdXRwdXRfbXVsdGlfaW1tZWRpYXRlKTogVXNlIEhPU1RfVUlOVC4KCShpbnRfbG9nMik6IFVzZSBIT1NUX1VJTlQuCgkoYXJtX3Bva2VfZnVuY3Rpb25fbmFtZSk6IFVzZSBIT1NUX1VJTlQuCgkoYXJtX291dHB1dF9lcGlsb2d1ZSk6IFVzZSBhcm1fdm9sYXRpbGVfZnVuYygpLgoJKG91dHB1dF90aHVtYl9wcm9sb2d1ZSk6IFVzZSBhcm1fc3RyaXBfbmFtZV9lbmNvZGluZygpLgoKTW9uIEFwciAxMCAxNTo0MDo1OSAyMDAwICBSaWNoYXJkIEtlbm5lciAgPGtlbm5lckB2bHNpMS51bHRyYS5ueXUuZWR1PgoKCSogc2JpdG1hcC5jIChzYml0bWFwX2Ffc3Vic2V0X2JfcCk6IFJld29yayBsb29wIHRvIGF2b2lkIHBvdGVudGlhbAoJb2Ygc2VxdWVuY2UgcG9pbnQgcHJvYmxlbXMuCgoyMDAwLTA0LTEwICBOYXRoYW4gU2lkd2VsbCAgPG5hdGhhbkBjb2Rlc291cmNlcnkuY29tPgoKCSogcnRsLmRlZiAoQVNISUZULCBST1RBVEUsIEFTSElGVFJULCBMU0hJRlRSVCwgUk9UQVRFUlQpOgoJUmVjb21tZW50LgoJKiB0cmVlLmRlZiAoTFNISUZUX0VYUFIsIFJTSElGVF9FWFBSKTogUmVjb21tZW50LgoKTW9uIEFwciAxMCAwNzoyMToxMyAyMDAwICBSaWNoYXJkIEtlbm5lciAgPGtlbm5lckB2bHNpMS51bHRyYS5ueXUuZWR1PgoKCSogc2JpdG1hcC5oOiBXaGl0ZXNwYWNlIGNoYW5nZXMgYW5kIHVzZSB1cHBlci1jYXNlIG1hY3JvIGFyZ3MuCgkoc3RydWN0IHNpbXBsZV9iaXRtYXBfZGVmKTogQWxsIHNpemVzIG5vdyB1bnNpZ25lZC4KCShFWEVDVVRFX0lGX1NFVF9JTl9TQklUTUFQKTogSW50ZXJuYWwgdmFycyBub3cgX1ggaW5zdGVhZCBvZiBYXy4KCSogc2JpdG1hcC5jIChzYml0bWFwX2FsbG9jKTogTl9FTE1TIG5vdyB1bnNpZ25lZDsgYWxzbyBsb2NhbCB2YXJzLgoJKHNiaXRtYXBfdmVjdG9yX2FsbG9jKTogUGFybXMgYW5kIGxvY2FsIHZhcnMgbm93IHVuc2lnbmVkLgoJKHNiaXRtYXBfemVybyk6IENhc3QgYnplcm8gYXJnIHRvIFBUUi4KCShzYml0bWFwX3ZlY3Rvcl96ZXJvLCBzYml0bWFwX3ZlY3Rvcl9vbmUpOiBQYXJtIGFuZCBMb2NhbCB2YXIgdW5zaWduZWQuCgkoc2JpdG1hcF91bmlvbl9vZl9kaWZmcyk6IENoYW5nZSBsb29wIGluZGV4IHRvIHVuc2lnbmVkIGFuZCByZXdvcmsKCWxvb3AgdG8gbWFrZSBzdHJ1Y3R1cmUgY2xlYXJlci4KCShzYml0bWFwX25vdCwgc2JpdG1hcF9kaWZmZXJlbmNlLCBzYml0bWFwX2FfYW5kX2IpOiBMaWtld2lzZS4KCShzYml0bWFwX2Ffb3JfYiwgc2JpdG1hcF9hX3N1YnNldF9iX3AsIHNiaXRtYXBfYV9vcl9iX2FuZF9jKTogTGlrZXdpc2UuCgkoc2JpdG1hcF9hX2FuZF9iX29yX2MpOiBMaWtld2lzZS4KCShzYml0bWFwX2ludGVyc2VjdGlvbl9vZl9zdWNjcyk6IE1pbm9yIGNsZWFudXBzLgoJKHNiaXRtYXBfaW50ZXJzZWN0aW9uX29mX3ByZWRzLCBzYml0bWFwX3VuaW9uX29mX3N1Y2NzKTogTGlrZXdpc2UuCgkoc2JpdG1hcF91bmlvbl9vZl9wcmVkcyk6IExpa2V3aXNlLgoJKHNiaXRtYXBfZmlyc3Rfc2V0X2JpdCwgZHVtcF9zYml0bWFwKTogTG9jYWwgdmFyaWFibGVzIG5vdyB1bnNpZ25lZC4KCShkZWJ1Z19zYml0bWFwKTogTmV3IGZ1bmN0aW9uLgoKCSogYy1jb252ZXJ0LmMgKGNvbnZlcnQpOiBIYW5kbGUgUkVGRVJFTkNFX1RZUEUgbGlrZSBQT0lOVEVSX1RZUEUuCgkqIGMtdHlwZWNrLmMgKGNvbnZlcnRfZm9yX2Fzc2lnbm1lbnQpOiBMaWtld2lzZS4KCgkqIGV4cG1lZC5jIChpbml0X2V4cG1lZCk6IERvbid0IGZyZWUgb2JqZWN0cyB3ZSBtYWtlLgoJKiBlbWl0LXJ0bC5jIChnZW5fcnR4X0NPTlNUX0lOVCwgaW5pdF9lbWl0X29uY2UpOiBNaW5vciBjbGVhbnVwcy4KCgkqIGV4cHIuYyAoZ2V0X2lubmVyX3JlZmVyZW5jZSk6IENvcnJlY3Qgc29tZSBXSVRIX1JFQ09SRF9FWFBSIGNhc2VzLgoJKGV4cGFuZF9leHByLCBjYXNlIENPTlZFUlRfRVhQUik6IFBhc3MgcHJvcGVyIGFsaWdubWVudCB0byBzdG9yZV9maWVsZC4KCgkqIGdjc2UuYyAoZXhwcl9oYXNoX3RhYmxlX3NpemUpOiBOb3cgdW5zaWduZWQuCgkoY29tcHV0ZV9hZV9nZW4pOiBMb2NhbCB2YXJpYWJsZSBgaScgbm93IHVuc2lnbmVkLgoJKGNvbXB1dGVfYWVfa2lsbCwgcHJlX2luc2VydF9jb3BpZXMsIHByZV9kZWxldGUsIHByZV9nY3NlKTogTGlrZXdpc2UuCgkoY29tcHV0ZV90cmFuc291dCwgaG9pc3RfY29kZSk6IExpa2V3aXNlLgoJKGNvbXB1dGVfbG9jYWxfcHJvcGVydGllcyk6IExpa2V3aXNlLCBhbHNvIGhhc2hfdGFibGVfc2l6ZS4KCShhbGxvY19leHByX2hhc2hfdGFibGUpOiBOX0lOU05TIG5vdyB1bnNpZ25lZC4KCShkZWxldGVfbnVsbF9wb2ludGVyX2NoZWNrcyk6IE1hcmsgYXJnIEYgYXMgdW51c2VkLgoKCSogcmVncmVuYW1lLmM6IE1pbm9yIGNsZWFudXBzLCBpbmNsdWRpbmcgY2hhbmcgc29tZSB2YXJpYWJsZXMKCXRvIHVuc2lnbmVkIGludC4KCjIwMDAtMDQtMTAgIE5laWwgQm9vdGggIDxOZWlsQkBlYXJ0aGxpbmcubmV0PgoKCSogY3BwbGV4LmMgKHNraXBfYmxvY2tfY29tbWVudCk6IFVzZSBwb2ludGVyIGFyaXRobWV0aWMgcmF0aGVyCgl0aGFuIEdFVEMgKCkuCgkqIGNwcGhhc2guaDogKENQUF9CVU1QX0JVRkZFUl9MSU5FX0NVUiwgQ1BQX0JVTVBfTElORV9DVVIpOiBOZXcuCgoyMDAwLTA0LTEwICBNYXJ0aW4gdi4gTPZ3aXMgIDxsb2V3aXNAaW5mb3JtYXRpay5odS1iZXJsaW4uZGU+CgoJKiBpbnZva2UudGV4aSAoLWZuby1nbnUta2V5d29yZHMpOiBSZW1vdmUgY2xhc3NvZiwgaGVhZG9mLAoJX19jbGFzc29mX18sIGFuZCBfX2hlYWRvZl9fIGZyb20gdGhlIGxpc3Qgb2YgZ251IGtleXdvcmRzLgoJKC1hbnNpKTogUmVtb3ZlIC1mb3BlcmF0b3ItbmFtZXMgZnJvbSBsaXN0IG9mIGltcGxpZWQgb3B0aW9ucy4KCURvIG5vdCBjYWxsIGl0IEFOU0kgQysrLgoJKC1mb3BlcmF0b3ItbmFtZXMpOiBEb2N1bWVudCBhcyAtZm5vLW9wZXJhdG9yLW5hbWVzLgoKMjAwMC0wNC0wOSAgWmFjayBXZWluYmVyZyAgPHphY2tAd29sZXJ5LmN1bWIub3JnPgoKCSogY3BwaGFzaC5jICh0aW1lc3RhbXApOiBEZWxldGUuCgkoZGVsX0hBU0hOT0RFKTogSWYgdHlwZSBpcyBUX01DT05TVCwgZnJlZSB2YWx1ZS5jcHZhbC4KCShzcGVjaWFsX3N5bWJvbCk6IFJlbW92ZSB1bm5lY2Vzc2FyeSBicmFjZXMuICBSZW1vdmUKCVRfVkVSU0lPTi4gIFRyZWF0IFRfU1REQyBsaWtlIFRfQ09OU1QgdW5sZXNzCglTVERDXzBfSU5fU1lTVEVNX0hFQURFUlMuICBSZW5kZXIgYm90aCBfX0RBVEVfXyBhbmQgX19USU1FX18KCXdoZW4gb25lIGlzIGVuY291bnRlcmVkLCB0aGVuIGNvbnZlcnQgdGhlbSBpbnRvIFRfTUNPTlNUCglub2Rlcy4KCSogY3BwaW5pdC5jIChidWlsdGluX2FycmF5KTogdmVyc2lvbl9zdHJpbmcgaXMgVF9NQ09OU1QuCglfX1NURENfXyBoYXMgYSAiMSIgaW4gaXRzIGNwdmFsLiAgRG9uJ3QgaGF2ZSBhIHRlcm1pbmF0b3IKCWVudHJ5LiAgQ2xlYW4gdXAgd2hpY2ggZW50cmllcyBhcmUgZHVtcGVkLgoJKGluaXRpYWxpemVfYnVpbHRpbnMpOiBPbmx5IF9fU1REQ19fIGdldHMgdGhlIHNwZWNpYWwKCS10cmFkaXRpb25hbCB0cmVhdG1lbnQuICBDb3VudCB0aGUgbGVuZ3RoIG9mIGJ1aWx0aW5fYXJyYXkuCglSZW5kZXIgdmVyc2lvbl9zdHJpbmcgaGVyZS4KCSogY3BwaGFzaC5oOiBSZW1vdmUgVF9WRVJTSU9OLiAgQWRkIFRfTUNPTlNULgoJKiBjcHBsaWIuaCAoc3RydWN0IGNwcF9yZWFkZXIpOiBSZW1vdmUgdGltZWJ1Zi4KCjIwMDAtMDQtMDkgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgoJKiBnZW5yZWNvZy5jIChwcmVkKTogVXBkYXRlIGNvbXBhcmlzb25fb3BlcmF0b3IgZm9yIHRoZSB1bm9yZGVyZWQKCW9wZXJhdG9ycy4KCgkqIGNvbmZpZy9pMzg2L2kzODYuYyAobm9fY29tcGFyaXNvbl9vcGVyYXRvcik6IERpc2FsbG93IHVub3JkZXJlZAoJb3BlcmF0b3JzLgoJKGZjbW92X2NvbXBhcmlzb25fb3BlcmF0b3IpOiBBbGxvdyBVTk9SREVSRUQvT1JERVJFRC4KCSh1bm9fY29tcGFyaXNvbl9vcGVyYXRvcik6IE5ldy4KCShwdXRfY29uZGl0aW9uX2NvZGUpOiBIYW5kbGUgVU5PUkRFUkVEL09SREVSRUQuCgkodW5zaWduZWRfY29tcGFyaXNvbik6IExpa2V3aXNlLgoJKGl4ODZfZnBfY29tcGFyZV9tb2RlKTogQnJva2VuIG91dCBvZiBpeDg2X2V4cGFuZF9mcF9jb21wYXJlLgoJKGl4ODZfdXNlX2Zjb21pX2NvbXBhcmUsIGl4ODZfcHJlcGFyZV9mcF9jb21wYXJlX2FyZ3MpOiBMaWtld2lzZS4KCShpeDg2X2V4cGFuZF9mcF9jb21wYXJlKTogVXNlIHRoZW0uICBUYWtlIHNjcmF0Y2ggYXMgYXJndW1lbnQsCgl1cGRhdGUgYWxsIGNhbGxlcnMuICBIYW5kbGUgYWxsIDggdW5vcmRlcmVkIG9wZXJhdG9ycy4KCShpeDg2X2V4cGFuZF9zZXRjYyk6IExvc2UgdGhlIHVub3JkZXJlZCBhcmd1bWVudCwgdXBkYXRlIGFsbCBjYWxsZXJzLgoJKGl4ODZfZXhwYW5kX2JyYW5jaCk6IExpa2V3aXNlLiAgRG9uJ3QgZnVsbHkgZXhwYW5kIGZwIGJyYW5jaGVzLgoJKiBjb25maWcvaTM4Ni9pMzg2LmggKFBSRURJQ0FURV9DT0RFUyk6IFVwZGF0ZS4KCSogY29uZmlnL2kzODYvaTM4Ni1wcm90b3MuaCAoaXg4Nl9leHBhbmRfZnBfY29tcGFyZSk6IERlY2xhcmUuCgkoaXg4Nl9leHBhbmRfYnJhbmNoLCBpeDg2X2V4cGFuZF9zZXRjYyk6IFVwZGF0ZS4KCSogY29uZmlnL2kzODYvaTM4Ni5tZCAoc3Vub3JkZXJlZCwgc29yZGVyZWQpOiBOZXcuCgkoc3VuZXEsIHN1bmdlLCBzdW5ndCwgc3VubGUsIHN1bmx0LCBzbHRndCk6IE5ldy4KCShidW5vcmRlcmVkLCBib3JkZXJlZCk6IE5ldy4KCShidW5lcSwgYnVuZ2UsIGJ1bmd0LCBidW5sZSwgYnVubHQsIGJsdGd0KTogTmV3LgoJKCpmcF9qY2NfMSwgKmZwX2pjY18yLCAqZnBfamNjXzMsICpmcF9qY2NfNCk6IE5ldy4KCSgqZnBfamNjXzUsICpmcF9qY2NfNiwgYW5kIHNwbGl0dGVycyk6IE5ldy4KCjIwMDAtMDQtMDkgIFBoaWxpcCBCbHVuZGVsbCAgPHBoaWxiQGdudS5vcmc+CgoJKiBjb25maWcvYXJtL2FybS5oIChBUk1fTkFNRV9FTkNPRElOR19MRU5HVEhTKTogU3RyaXAgYConIHRvby4KClN1biBBcHIgIDkgMTU6MTY6MTQgRURUIDIwMDAgIEpvaG4gV2VobGUgIChqb2huQGZlaXRoLmNvbSkKCgkqIGkzODYubWQgKGZpeF90cnVuY3NmaGkyLCBmaXhfdHJ1bmNkZmhpMiwKCWZpeF90cnVuY3hmaGkyKTogTmV3IHBhdHRlcm5zLgoJKiBpMzg2LmMgKG91dHB1dF9maXhfdHJ1bmMpOiBIYW5kbGUgY29udmVydGluZyB0byBISW1vZGUuCgoyMDAwLTA0LTA4ICBBbGV4IFNhbXVlbCAgPHNhbXVlbEBjb2Rlc291cmNlcnkuY29tPgoKCSogc3NhLmMgKGNvbnZlcnRfdG9fc3NhKTogRWxpbWluYXRlIGRlYWQgY29kZSB3aGVuIGNhbGxpbmcKCWxpZmVfYW5hbHlzaXMuCgkoY29udmVydF9mcm9tX3NzYSk6IENhbGwgY29tcHV0ZV9iYl9mb3JfaW5zbiBiZWZvcmUgbGlmZV9hbmFseXNpcy4KCShmb3JfZWFjaF9zdWNjZXNzb3JfcGhpKTogQ2hhbmdlIHBhcmFtZXRlciB0byBiYXNpY19ibG9jay4KCShjb2FsZXNjZV9yZWdzX2luX3N1Y2Nlc3Nvcl9waGlfbm9kZXMpOiBMaWtld2lzZS4KCShjb2FsZXNjZV9yZWdzX2luX2NvcGllcyk6IExpa2V3aXNlLgoJKGNvbXB1dGVfY29hbGVzY2VkX3JlZ19wYXJ0aXRpb24pOiBVc2UgYmFzaWNfYmxvY2sgaW5zdGVhZCBvZiBpbmRleC4KCSogcnRsLmggKGNvbnZlcnRfdG9fc3NhKTogRGVsZXRlLgoJKGNvbnZlcnRfZnJvbV9zc2EpOiBMaWtld2lzZS4KCShzdWNjZXNzb3JfcGhpX2ZuKTogTGlrZXdpc2UuCgkoZm9yX2VhY2hfc3VjY2Vzc29yX3BoaSk6IExpa2V3aXNlLgoJKGluX3NzYV9mb3JtKTogTGlrZXdpc2UuCgkqIGJhc2ljLWJsb2NrLmggKGNvbnZlcnRfdG9fc3NhKTogTW92ZWQgZnJvbSBydGwuaC4KCShjb252ZXJ0X2Zyb21fc3NhKTogTGlrZXdpc2UuCgkoc3VjY2Vzc29yX3BoaV9mbik6IExpa2V3aXNlLgoJKGluX3NzYV9mb3JtKTogTGlrZXdpc2UuCgkoZm9yX2VhY2hfc3VjY2Vzc29yX3BoaSk6IExpa2V3aXNlLiAgQ2hhbmdlIHBhcmFtZXRlciB0byBiYXNpY19ibG9jay4KCSogZmxvdy5jIChjYWxjdWxhdGVfZ2xvYmFsX3JlZ3NfbGl2ZSk6IFBhc3MgYSBiYXNpY19ibG9jayB0bwoJZm9yX2VhY2hfc3VjY2Vzc29yX3BoaS4KCjIwMDAtMDQtMDggIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgoJKiBmbG93LmMgKG1hcmtfdXNlZF9yZWcpOiBVc2UgcmVnX3NldF9wIHRvIGRldGVybWluZSBpZiBhIHJlZ2lzdGVyCgl3YXMgbW9kaWZpZWQgaW4gdGhlIGN1cnJlbnQgaW5zbi4KCjIwMDAtMDQtMDggIFJpY2hhcmQgRWFybnNoYXcgKHJlYXJuc2hhQGFybS5jb20pCgoJKiBhcm0vdGh1bWIubWQ6IERlbGV0ZS4KCSogYXJtL3RodW1iLXByb3Rvcy5oOiBEZWxldGUuCgoyMDAwLTA0LTA4ICBSaWNoYXJkIEVhcm5zaGF3IChyZWFybnNoYUBhcm0uY29tKQoKCU1lcmdlIGNoYW5nZXMgZnJvbSBtZXJnZWQtYXJtLXRodW1iLWJhY2tlbmQtYnJhbmNoIG9udG8gdHJ1bmsuCgoJMjAwMC0wNC0wOCAgUmljaGFyZCBFYXJuc2hhdyAocmVhcm5zaGFAYXJtLmNvbSkKCgkqIE1lcmdlIHRydW5rIGNvZGUgZnJvbSB0YWcgbWVyZ2VkLWFybS10aHVtYi1iYWNrZW5kLW1lcmdlXzIwMDAwNDA4CglpbnRvIGJyYW5jaC4KCgkqIGFybS5tZCAobm9wKTogVXNlIHRoZSBzdGFuZGFyZCBSVEwgZXhwcmVzc2lvbi4gIERvbid0IGNvZGUgYXMgYQoJZGVmaW5lX2V4cGFuZC4KCSgqYXJtX25vcCwgKnRodW1iX25vcCk6IERlbGV0ZS4KCgkqIGFybS5jIChjb25zdF9va19mb3JfYXJtKTogRG9uJ3QgdXNlIEFOU0kgZXh0ZW5zaW9ucyBmb3IgZGVmaW5pbmcKCWNvbnN0YW50cy4gIFVzZSBjYXN0cyBpbnN0ZWFkLgoJKGFybV9nZW5fY29uc3RhbnQsIGFybV9ydHhfY29zdHMsIGFybV9yZWxvYWRfaW5faGksIGFybV9yZWxvYWRfb3V0X2hpLAoJb3V0cHV0X211bHRpX2ltbWVkaWF0ZSwgYXJtX3Bva2VfZnVuY3Rpb25fbmFtZSk6IExpa2V3aXNlLgoJKiBhcm0uaCAoQVJNX0xFR0lUSUlNSVpFX1JFTE9BRF9BRERSRVNTLCBBUk1fU0lHTl9FWFRFTkQsCglNQVNLX1JFVFVSTl9BREREUik6IExpa2V3aXNlLgoKCTIwMDAtMDMtMzEgIFJpY2hhcmQgRWFybnNoYXcgKHJlYXJuc2hhQGFybS5jb20pCgoJKiBNZXJnZSB0cnVuayBjb2RlIGZyb20gdGFnIG1lcmdlZC1hcm0tdGh1bWItYmFja2VuZC1tZXJnZV8yMDAwMDMyNQoJaW50byBicmFuY2guCgoJKiBhcm0ubWQgKGVoX2VwaWxvZ3VlKTogTmV3IGZ1bmN0aW9uLgoJKiBhcm0uaCAoc3RydWN0IG1hY2hpbmVfZnVuY3Rpb24pOiBNb3ZlIHRvIGhlcmUgLi4uCgkqIGFybS5jOiAuLi4gZnJvbSBoZXJlLgoJKGFybV9vdXRwdXRfZXBpbG9ndWUpOiBTdXBwb3J0IGVwaWxvZ3VlcyBmb3IgX19idWlsdGluX2VoX3JldHVybi4KCSh0aHVtYl9leGl0KTogRXh0cmEgcGFyYW1ldGVyIGVoX29mcy4gIEFsbCBjYWxsZXJzIGNoYW5nZWQuCglIYW5kbGUgZXBpbG9ndWVzIGZvciBfX2J1aWx0aW5fZWhfcmV0dXJuLiAgTWFrZSBiaXQtZmllbGRzIHVuc2lnbmVkLgoKCTIwMDAtMDMtMzAgIE5pY2sgQ2xpZnRvbiAgPG5pY2tjQGN5Z251cy5jb20+CgoJKiBjb25maWcvYXJtL3NlbWkuaCAoQVNNX1NQRUMpOiBSZXN0b3JlIGRlZmluaXRpb24uCgkoU1VCVEFSR0VUX0VYVFJBX0FTTV9TUEVDKTogRGVmaW5lIGlmIG5vdCBhbHJlYWR5IGRlZmluZWQuCgoJKiBjb25maWcvYXJtL2VsZi5oIChBU01fU1BFQyk6IFJlc3RvcmUgZGVmaW5pdGlvbi4KCShTVUJUQVJHRVRfRVhUUkFfQVNNX1NQRUMpOiBEZWZpbmUgaWYgbm90IGFscmVhZHkgZGVmaW5lZC4KCgkqIGNvbmZpZy9hcm0vYXJtLmggKEFTTV9TUEVDKTogUmVtb3ZlIGRlZmluaXRpb24uCgkoU1VCVEFSR0VUX0VYVFJBX0FTTV9TUEVDKTogUmVtb3ZlIGRlZmluaXRpb24uCgoJMjAwMC0wMy0yNiAgQmVybmQgU2NobWlkdCA8YmVybmRzQGN5Z251cy5jby51az4KCgkqIGNvbmZpZy9hcm0vYXJtLmM6IERpc2FibGUgLWZzY2hlZHVsZS1pbnNucyBmb3IgVGh1bWIuCgoJMjAwMC0wMy0yNCAgTmljayBDbGlmdG9uICA8bmlja2NAY3lnbnVzLmNvbT4KCglWYXJpb3VzIGZvcm1hdGluZyB0aWR5dXBzLCBlbGltaW5hdGlvbiBvZiBjb21waWxlIHRpbWUKCXdhcm5pbmdzIGFuZCBzeW5jaHJvbmlzYXRpb24gd2l0aCBpbnRlcm5hbCBzb3VyY2VzOgoKCSogY29uZmlnL2FybS9hcm0tcHJvdG9zLmggKGFzc2VtYmxlX2FsaWduKTogQWRkIHByb3RvdHlwZS4KCShnZW5fcm90YXRlZF9oYWxmX2xvYWQpOiBSZW5hbWUgdG8gYXJtX2dlbl9yb3RhdGVkX2hhbGZfbG9hZC4KCShnZW5fY29tYXByZV9yZWcpOiBSZW5hbWUgdG8gYXJtX2dlbl9jb21wYXJlX3JlZy4KCShhcm1fcmV0dXJuX2FkZHJfcnR4KTogUmVuYW1lIHRvIGFybV9yZXR1cm5fYWRkci4KCgkqIGNvbmZpZy9hcm0vYXJtLmM6IEluY2x1ZGUgZXhjZXB0LmguCglEZWZpbmUgc2hvcnRlciB0eXBlbmFtZXMgZm9yIHN0cmljdCBtaW5pcG9vbF9ub2RlIGFuZCBzdHJ1Y3QKCW1pbmlwb29sX2ZpeC4KCShhcm1fcmV0dXJuX2luX21lbW9yeSk6IEZvciBXaW5DRSByZXR1cm4gYWxsIHN0cnVjdHVyZXMgPD0gMzIgYml0cwoJaW4gbWVtb3J5LgoJKGdlbl9yb3RhdGVkX2hhbGZfbG9hZCk6IFJlbmFtZSB0byBhcm1fZ2VuX3JvdGF0ZWRfaGFsZl9sb2FkLgoJKGdlbl9jb21hcHJlX3JlZyk6IFJlbmFtZSB0byBhcm1fZ2VuX2NvbXBhcmVfcmVnLgoKCSogY29uZmlnL2FybS9hcm0uaCAoU1VCVEFSR0VUX0VYVFJBX0FTTV9TUEVDKTogRGVmaW5lIGlmIG5vdAoJYWxyZWFkeSBkZWZpbmVkLgoJKEFTTV9TUEVDKTogRGVmaW5lIGlmIG5vdCBhbHJlYWR5IGRlZmluZWQuCgkoQVNNX09VVFBVVF9ERUZfRlJPTV9ERUNMUyk6IERlZmluZS4KCgkqIGNvbmZpZy9hcm0vYXJtLm1kOiBSZW5hbWUgcmVmZXJlbmNlcyB0byBnZW5fcm90YXRlZF9oYWxmX2xvYWQgdG8KCWFybV9nZW5fcm90YXRlZF9oYWxmX2xvYWQsIGFuZCByZWZlcmVuY2VzIHRvIGdlbl9jb21hcHJlX3JlZyB0bwoJYXJtX2dlbl9jb21wYXJlX3JlZy4KCShpbmRpcmVjdF9qdW1wKTogIE9ubHkgYWNjZXB0IHJlZ2lzdGVyIG9wZXJhbmRzLgoJKGxvYWRfaW5kaXJlY3RfanVtcCk6IEtlZXAgdGhpcyBwYXR0ZXJuIHNpbmNlIGNvbWJpbmUgY2FuIGdlbmVyYXRlCglpdC4KCgkqIGNvbmZpZy9hcm0vY29mZi5oOiBJbmNsdWRlIGFvdXQuaC4KCShNVUxUSUxJQl9ERUZBVUxUUyk6IE9ubHkgZGVmaW5lIGlmIG5vdCBhbHJlYWR5IGRlZmluZWQuCgoJKiBjb25maWcvYXJtL2VsZi5oIChBU01fT1VUUFVUX0RFRl9GUk9NX0RFQ0xTKTogTW92ZSBkZWZpbml0aW9uCglpbnRvIGFybS5oIChzbyB0aGF0IENPRkYgcG9ydHMgY2FuIHN1cHBvcnQgdGh1bWIgYmFzZWQgYWxpYXNlcykuCgkoQVNNX1NQRUMpOiBNb3ZlIGRlZmluaXRpb24gaW50byBhcm0uaAoKCSogY29uZmlnL2FybS9saW51eC1lbGYuaCAoU1VCVEFSR0VUX0VYVFJBX0FTTV9TUEVDKTogUmVtb3ZlCglyZWR1bmRhbnQgYXBjcyBzcGVjLgoJKEFTTV9TUEVDKTogTW92ZSBkZWZpbml0aW9uIHRvIGFybS5oCgoJKiBjb25maWcvYXJtL3NlbWkuaCAoQVNNX1NQRUMpOiBNb3ZlIGRlZmluaXRpb24gdG8gYXJtLmgKCgkqIGNvbmZpZy9hcm0vdW5rbm93bi1lbGYuaCAoQVNNX09VVFBVVF9TRUNUSU9OX05BTUUpOiBBZGQgc3VwcG9ydAoJZm9yIGVudHJpZXMgaW4gdGhlIC5ic3Mgc2VjdGlvbgoKCTIwMDAtMDMtMjMgIE5pY2sgQ2xpZnRvbiAgPG5pY2tjQGN5Z251cy5jb20+CgoJKiBjb25maWcvYXJtL2FybS5oIChUSFVNQl9JTklUSUFMX0VMSU1JTkFUSU9OX09GRlNFVCk6IFBhc3MgMAoJdG8gdGh1bWJfZmFyX2p1bXBfdXNlZF9wLgoKCSogY29uZmlnL2FybS9hcm0tcHJvdG9zLmggKHRodW1iX2Zhcl9qdW1wX3VzZWRfcCk6IFRha2UgYQoJc2luZ2xlIGludGVnZXIgcGFyYW1ldGVyLgoKCSogY29uZmlnL2FybS9hcm0uYyAoc3RydWN0IG1hY2hpbmVfZnVuY3Rpb24pOiBBZGQgdHdvIG5ldwoJZmllbGRzLCAnZmFyX2p1bXBfdXNlZCcgYW5kICdhcmdfcG9pbnRlcl9saXZlJy4KCSh0aHVtYl9mYXJfanVtcF91c2VkX3ApOiBPbmNlIHRoZSBkZWNpc2lvbiBoYXMgYmVlbiBtYWRlIHRoYXQKCWZhciBqdW1wcyBtaWdodCBiZSB1c2VkLCBhbHdheXMgcmV0dXJuIHRydWUuCglJZiBiZWluZyBjYWxsZWQgZnJvbSB0aGUgaW5pdGlhbCBlbGltaW5hdGlvbiBvZmZzZXQgbWFjcm8gdGhlbgoJZG8gbm90IGJvdGhlciB0byBwZXJmb3JtIHRoZSB0ZXN0IGlmIHRoZSBhcmcgcG9pbnRlciBpcyBub3QKCWJlaW5nIHVzZWQuCgkodGh1bWJfdW5leHBhbmRfZXBpbG9ndWUpOiBQYXNzIDEgdG8gdGh1bWJfZmFyX2p1bXBfdXNlZF9wKCkuCgkob3V0cHV0X3RodW1iX3Byb2xvZ3VlKTogUGFzcyAxIHRvIHRodW1iX2Zhcl9qdW1wX3VzZWRfcCgpLgoKCTIwMDAtMDMtMjMgIFJpY2hhcmQgRWFybnNoYXcgKHJlYXJuc2hhQGFybS5jb20pCgoJKiBhcm0uYyAob3V0cHV0X3JldHVybl9pbnN0cnVjdGlvbik6IEhhbmRsZSBtb3JlIGNhc2VzIHdoZXJlIHdlIGNhbgoJcmV0dXJuIGZyb20gYSBmdW5jdGlvbiB3aXRoIGFuIGxkciBpbnN0cnVjdGlvbi4KCShhcm1fb3V0cHV0X2VwaWxvZ3VlKTogTGlrZXdpc2UuCgoJKiBhcm0uYyAodGh1bWJfZXhwYW5kX3Byb2xvZ3VlKTogRG9uJ3QgY2xvYmJlciB0aGUgZnJhbWUgcG9pbnRlcgoJaWYgd2UgbmVlZCB0byBwdXNoIGEgbGFyZ2Ugc3RhY2sgZnJhbWUgYW5kIHRoZXJlIGFyZSBubyBjYWxsZWUtc2F2ZWQKCXJlZ2lzdGVycy4KCgkqIGFybS5jIChhcm1fZGVidWdnZXJfYXJnX29mZnNldCk6IEFuIG9mZnNldCBvZiAwIGlzIGFsc28gdmFsaWQKCWluIEFSTSBjb2RlIGlmIHRoZSBmcmFtZSBwb2ludGVyIGhhcyBiZWVuIGVsaW1pbmF0ZWQuCgoJKiBhcm0ubWQgKGVwaWxvZ3VlLCAqZXBpbG9ndWVfaW5zbnMsIGNvbnN0dGFibGVfKiwgYWxpZ25fNCk6IFJlbnVtYmVyCgl1bnNwZWNfdm9sYXRpbGUgYXJndW1lbnRzIHRvIGF2b2lkIGR1cGxpY2F0ZXMuCgkoY29uc3R0YWJsZV8xLCBjb25zdHRhYmxlXzIpOiBGaXhlcyBmb3IgYmlnLWVuZGlhbiBtb2RlLgoKCSogYXJtLm1kIChhbGwgQVJNLW1vZGUgbG9hZCBpbnNucyk6IEFkZCBuZWdfcG9vbF9yYW5nZSBhdHRyaWJ1dGUKCWFzIGFwcHJvcHJpYXRlLgoKCVJlLXdyaXRlIGNvbnN0YW50IHBvb2wgY29kZS4KCSogYXJtLmMgKG1pbmlwb29sX25vZGUsIG1pbmlwb29sX2ZpeCk6IE5ldyB0eXBlcy4KCShtaW5pZml4KTogRGVsZXRlIHR5cGUuCgkoYXJtX2FkZF9taW5pcG9vbF9jb25zdGFudCk6IERlbGV0ZS4KCShhcm1fY29tcHV0ZV9taW5pcG9vbF9vZmZzZXRzLCBhcm1fZmluZF9iYXJyaWVyLAoJYXJtX2ZpbmRfbWluaXBvb2xfY29uc3RhbnQsIGZpeHVwX2NvbXBhcmUsIHNvcnRfZml4dXBzKTogTGlrZXdpc2UuCgkoZ2V0X2p1bXBfdGFibGVfc2l6ZSk6IE5vdyByZXR1cm5zIEhPU1RfV0lERV9JTlQuCgkobW92ZV9taW5pcG9vbF9maXhfZm9yd2FyZF9yZWYsIGFkZF9taW5pcG9vbF9mb3J3YXJkX3JlZik6IE5ldwoJZnVuY3Rpb25zLgoJKG1vdmVfbWluaXBvb2xfZml4X2JhY2t3YXJkX3JlZiwgYWRkX21pbmlwb29sX2JhY2t3YXJkX3JlZik6IExpa2V3aXNlLgoJKGFzc2lnbl9taW5pcG9vbF9vZmZzZXRzLCBhcm1fcHJpbnRfdmFsdWUpOiBMaWtld2lzZS4KCShkdW1wX21pbmlwb29sKTogUmV3cml0ZS4KCShhcm1fYmFycmllcl9jb3N0KTogTmV3IGZ1bmN0aW9uLgoJKGNyZWF0ZV9maXhfYmFycmllcik6IE5ldyBmdW5jdGlvbi4KCShwdXNoX21pbmlwb29sX2JhcnJpZXIpOiBOZXcgZnVuY3Rpb24uCgkocHVzaF9taW5pcG9vbF9maXgpOiBSZWNvcmQgYWRkaXRpb25hbCBpbmZvcm1hdGlvbiBhYm91dCB0aGUgZml4dXAKCXJlcXVpcmVkLgoJKG5vdGVfaW52YWxpZF9jb25zdGFudHMpOiBSZW1vdmUgcHVzaCBmb3IgKFVOU1BFQyAzKS4gIERvbid0CgljaGVjayB0aGUgbW9kZSBvZiB3aGF0IG5lZWRzIGZpeGluZy4KCShhcm1fcmVvcmcpOiBSZXdyaXRlLgoKCTIwMDAtMDMtMDggIE5pY2sgQ2xpZnRvbiAgPG5pY2tjQGN5Z251cy5jb20+CgoJKiBjb25maWcvYXJtL2FybS5tZCAoaW5kaXJlY3RfanVtcCk6IEZvcmNlIGNvbnN0YW50IGFkZHJlc3NlcyBpbnRvCglhIHJlZ2lzdGVyLgoKCTIwMDAtMDMtMDEgIEJlcm5kIFNjaG1pZHQgPGJlcm5kc0BjeWdudXMuY28udWs+CgoJKiBjb25maWcvYXJtL2FybS5tZDogQWRkIHNwbGl0dGVyIHRvIHR1cm4gU0YgbW92ZXMgaW50byBTSSBtb3Zlcy4KCgkyMDAwLTAyLTI0ICBOaWNrIENsaWZ0b24gIDxuaWNrY0BjeWdudXMuY29tPgoKCSogY29uZmlnL2FybS9hcm0uYyAodGh1bWJfZXhwYW5kX3Byb2xvZ3VlKTogTWFrZSBzdXJlIHRoYXQgc3RhY2sKCWFkanVzdCBpcyB3b3JkIGFsaWduZWQuCgkodGh1bWJfZXhwYW5kX2VwaWxvZ3VlKTogTWFrZSBzdXJlIHRoYXQgc3RhY2sgYWRqdXN0IGlzIHdvcmQKCWFsaWduZWQuCgoJKiBjb25maWcvYXJtL2VsZi5oIChBU01fRklMRV9TVEFSVCk6IEZpeCB0eXBlIG9mIHZlcnNpb24gc3RyaW5nLgoKCTIwMDAtMDItMjQgIEJlcm5kIFNjaG1pZHQgPGJlcm5kc0BjeWdudXMuY29tPgoKCSogY29uZmlnL2FybS9hcm0uaCAoVEhVTUJfR09fSUZfTEVHSVRJTUFURV9BRERSRVNTKTogQWxsb3cgZnJhbWUKCXBvaW50ZXIgcmVsYXRpdmUgYWRkcmVzc2VzLgoKCTIwMDAtMDItMTAgIFJpY2hhcmQgRWFybnNoYXcgIDxyZWFybnNoYUBhcm0uY29tPgoKCSogYXJtLmMgKGZpbmRfYmFycmllcik6IEZpbmQgdGhlIGxhc3QgYmFycmllciB3aXRoaW4gdGhlIGFsbG93ZWQKCXJhbmdlLgoKCTIwMDAtMDItMDkgIE5pY2sgQ2xpZnRvbiAgPG5pY2tjQGN5Z251cy5jb20+CgoJKiBjb25maWcvYXJtL2FybS1wcm90b3MuaDogUmVwbGFjZSBQUk9UTyB3aXRoIFBBUkFNUy4KCgkyMDAwLTAyLTA5ICBOaWNrIENsaWZ0b24gIDxuaWNrY0BjeWdudXMuY29tPgoKCSogY29uZmlnL2FybS9saW51eC1lbGYuaCAoRlVOQ1RJT05fUFJPRklMRVIpOiBSZW5hbWUgdG8KCUFSTV9GVU5DVElPTl9QUk9GSUxFUi4KCgkqIGNvbmZpZy9hcm0vbmV0YnNkLmggKEZVTkNUSU9OX1BST0ZJTEVSKTogUmVuYW1lIHRvCglBUk1fRlVOQ1RJT05fUFJPRklMRVIuCgoJKiBjb25maWcvYXJtL2xpbnV4LW9sZGxkLmg6IEltcG9ydGVkIGZyb20gbWFpbmxpbmUgc291cmNlcy4KCgkyMDAwLTAyLTA3ICBOaWNrIENsaWZ0b24gIDxuaWNrY0BjeWdudXMuY29tPgoKCSogY29uZmlnL2FybS9saWIxZnVuY3MuYXNtOiBNZXJnZSBpbiB0aHVtYiBmdW5jdGlvbnMgZnJvbQoJbGliMXRodW1iLmFzbS4KCgkqIGNvbmZpZy9hcm0vbGliMXRodW1iLmFzbTogRGVsZXRlLgoKCTIwMDAtMDItMDQgIE5pY2sgQ2xpZnRvbiAgPG5pY2tjQGN5Z251cy5jb20+CgoJKiBjb25maWcvYXJtL2FybS5jOiBTeWNocm9uaXNlZCB3aXRoIGN1cnJlbnQgUmVkIGhhdCBsb2NhbAoJc291cmNlcy4KCSogY29uZmlnL2FybS9hcm0uaDogRGl0dG8uCgkqIGNvbmZpZy9hcm0vYXJtLXByb3Rvcy5oOiBEaXR0by4KCgkyMDAwLTAyLTAyICBCZXJuZCBTY2htaWR0ICA8YmVybmRzQGN5Z251cy5jby51az4KCgkqIGFybS5jIChzb2Z0X2RmX29wZXJhbmQpOiBSZWplY3QgU1VCUkVHcyBjb250YWluaW5nIGEgY29uc3RhbnQuCgoJKiBhcm0uYyAoYXJtX2dlbl9tb3ZzdHJxaSk6IEdlbmVyYXRlIGhhbGZ3b3JkIHN0b3JlcyByYXRoZXIgdGhhbiB0d28KCWJ5dGUgc3RvcmVzLgoKCTIwMDAtMDItMDIgIE5pY2sgQ2xpZnRvbiAgPG5pY2tjQGN5Z251cy5jb20+CgoJKiBjb25maWcvYXJtL3RodW1iLmMgKHRodW1iX2V4aXQpOiBBZGRpdGlvbmFsIGZpeCBmb3Igc2FtZSBidWcuCgoJKiBjb25maWcvYXJtL2FybS5tZCAoZXBpbG9ndWUpOiBGaXggcnRsIGNoZWNraW5nIGFib3J0IGJlY2F1c2UKCShyZXR1cm4pIHdhcyBlbWl0ZWQgdXNpbmcgYW4gZW1pdF9pbnNuKCkgY2FsbC4KCgkyMDAwLTAxLTMxICBOaWNrIENsaWZ0b24gIDxuaWNrY0BjeWdudXMuY29tPgoKCSogY29uZmlnL2FybS9hcm0uYyAob3V0cHV0X3RodW1iX3Byb2xvZ3VlKTogRml4IGJ1ZyBnZW5lcmF0aW5nCgl0aHVtYiBzdGFjayBmcmFtZS4KCSh0aHVtYl9leGl0KTogTW92ZSBmcmFtZSBwb2ludGVyIGJhY2sgaW50byBoYXJkIGZyYW1lIHBvaW50ZXIKCXJlZ2lzdGVyIGlmIGJhY2t0cmFjaW5nIGlzIGJlaW5nIHVzZWQuCgoJMjAwMC0wMS0xMyAgUmljaGFyZCBFYXJuc2hhdyAocmVhcm5zaGFAYXJtLmNvbSkKCgkqIE1lcmdlIHRydW5rIGNvZGUgZnJvbSB0YWcgbWVyZ2VkLWFybS10aHVtYi1iYWNrZW5kLW1lcmdlXzIwMDAwMTEzCglpbnRvIGJyYW5jaC4KCgkxOTk5LTEyLTE1ICBCZXJuZCBTY2htaWR0ICA8YmVybmRzQGN5Z251cy5jby51az4KCgkqIGNvbmZpZy9hcm0vYXJtLm1kIChuZWdfcG9vbF9vZmZzZXQpOiBQcm92aWRlIGRlZmF1bHQgZm9yIG5ldwoJYXR0cmlidXRlLgoJKGFybV9tb3ZzaV9pbnNuKTogQWRkIG5lZ19wb29sX29mZnNldCBhdHRyaWJ1dGUuCgkqIGNvbmZpZy9hcm0vYXJtLmMgKGFybV9maW5kX2JhcnJpZXIpOiBSZXBsYWNlIGFyZyBGSVggd2l0aCBhbgoJcnR4IGZvciB0aGUgaW5zbiB0aGF0IHN0YXJ0cyB0aGUgc2NhbiBhbmQgYW4gdW5zaWduZWQgbG9uZyBmb3IgaXRzCglhZGRyZXNzLiAgQWRkIE1JTl9PRkZTRVQgYW5kIFBJTlNFUlRFRCBhcmdzLiAgQWxsIGNhbGxlcnMgY2hhbmdlZC4KCUNoYW5nZSBzY2FuIHRvIGlnbm9yZSBpbnNucyBiZWZvcmUgTUlOX09GRlNFVC4gIFN0b3JlIHNpemUgb2YgaW5zZXJ0ZWQKCWluc3RydWN0aW9ucyBpbiAqUElOU0VSVEVELgoJKHN0cnVjdCBtaW5pcG9vbF9maXh1cCk6IEFkZCBNSU5fQUREUkVTUyBlbHQuCgkoc29ydF9maXh1cHMpOiBDb21wdXRlIGl0LgoJKGFybV9yZW9yZyk6IENoYW5nZXMgdG8gc3VwcG9ydCBpbnNlcnRpbmcgcG9vbHMgYmVmb3JlIHRoZSBpbnNuIHRvIGJlCglmaXhlZCB1cC4KCgkxOTk5LTEyLTA4ICBCZXJuZCBTY2htaWR0ICA8YmVybmRzQGN5Z251cy5jby51az4KCgkqIGNvbmZpZy9hcm0vZWxmLmggKE1VTFRJTElCX0RFRkFVTFRTKTogQWRkICJtYXJtIi4KCSogY29uZmlnL2FybS9saW51eC1lbGYuaCAoTVVMVElMSUJfREVGQVVMVFMpOiBBZGQgIm1hcm0iLgoJKiBjb25maWcvYXJtL2NvZmYuaCAoTVVMVElMSUJfREVGQVVMVFMpOiBBZGQgIm1hcm0iLgoKCVdlZCBOb3YgIDMgMTA6MDQ6MDcgMTk5OSAgTmljayBDbGlmdG9uICA8bmlja2NAY3lnbnVzLmNvbT4KCgkqIGNvbmZpZy9hcm0vc2VtaS5oIChUQVJHRVRfVkVSU0lPTik6IERvIG5vdCBkZWZpbmUgaWYgYWxyZWFkeQoJZGVmaW5lZC4KCShUQVJHRVRfREVGQVVMVCk6IERvIG5vdCBkZWZpbmUgaWYgYWxyZWFkeSBkZWZpbmVkLgoKCVR1ZSBOb3YgIDIgMTA6Mzc6MjUgMTk5OSAgTmljayBDbGlmdG9uICA8bmlja2NAY3lnbnVzLmNvbT4KCgkqIGNvbmZpZy9hcm0vYXJtLm1kIChhbmRkaTMpOiBBbGxvdyBkaXNqb2ludCBzb3VyY2Ugb3BlcmFuZHMuCgkoaW9yZGkzKTogQWxsb3cgZGlzam9pbnQgc291cmNlIG9wZXJhbmRzLgoJKHhvcmRpMyk6IEFsbG93IGRpc2pvaW50IHNvdXJjZSBvcGVyYW5kcy4KCShuZWdkaTIpOiBQZXJtaXQgY29uc3RydWN0aW9uIGZvciBBUk0gYW5kIFRodW1iLgoJKGFybV9uZWdkaTIpOiBSZW5hbWVkIHZlcnNpb24gb2Ygb2xkIG5lZ2RpMiBwYXR0ZXJuLgoJKHRodW1iX25lZ2RpMik6IE5ldyBwYXR0ZXJuOiBPbmx5IHBlcm1pdCBub24tb3ZlcmxhcHBpbmcKCXNvdXJjZSBhbmQgZGVzdGluYXRpb24uCgoJRnJpIE9jdCAyOSAxODo1MjozOCAxOTk5ICBOaWNrIENsaWZ0b24gIDxuaWNrY0BjeWdudXMuY29tPgoKCSogY29uZmlnL2FybS9hcm0uYyAodGh1bWJfZXhwYW5kX3Byb2xvZ3VlKTogRW1pdCBhIFVTRSBvZiB0aGUKCXNjcmF0Y2ggbG93IHJlZ2lzdGVyIHNvIHRoYXQgaXQgd2lsbCBub3QgYmUgZGVsZXRlZC4KCglGcmkgT2N0IDI5IDE1OjIzOjQ4IDE5OTkgIE5pY2sgQ2xpZnRvbiAgPG5pY2tjQGN5Z251cy5jb20+CgoJKiBjb25maWcvYXJtL3BlLmggKEFSTV9QRSk6IERlZmluZS4KCgkqIGNvbmZpZy9hcm0vYXJtLmMgKGFybV92YWxpZF9tYWNoaW5lX2RlY2xfYXR0cmlidXRlKTogQWxsb3cKCWludGVyZmFjZWFybSBhdHRyaWJ1dGUgaWYgdGhpcyBpcyBhIFBFIHRvb2xjaGFpbi4KCShvdXRwdXRfcmV0dXJuX2luc3RydWN0aW9uKTogRG8gbm90IGVtaXQgYW55dGhpbmcgaWYgdGhlIGZ1bmN0aW9uCgloYXMgdGhlIG5ha2VkIGF0dHJpYnV0ZSBzZXQuCgkoaXNfY2FsbGVkX2luX0FSTV9tb2RlKTogSWYgdGhlIGZ1bmN0aW9uIGhhcyB0aGUgaW50ZXJmYWNlYXJtCglhdHRyaWJ1dGUgdGhlbiByZXR1cm4gdHJ1ZS4KCSh0aHVtYl9leHBhbmRfcHJvbG9ndWUpOiBEbyBub3QgZ2VuZXJhdGUgYSBwcm9sb2d1ZSBmb3IgbmFrZWQKCWZ1bmN0aW9ucy4KCSh0aHVtYl9leHBhbmRfZXBpbG9ndWUpOiBEbyBub3QgZ2VuZXJhdGUgYW4gZXBpbG9naWUgZm9yIGEgbmFrZWQKCWZ1bmN0aW9uLgoJKG91dHB1dF90aHVtYl9wcm9sb2d1ZSk6IERvIG5vdCBib3RoZXIgaWYgdGhlIGZ1bmN0aW9uIGlzIG5ha2VkLgoJU3RyaXAgUEUgZW5jb2RpbmcgZnJvbSBmdW5jdGlvbiBuYW1lIGJlZm9yZSBlbWl0dGluZy4KCglUaHUgT2N0IDI4IDExOjA1OjEzIDE5OTkgIFJpY2hhcmQgRWFybnNoYXcgPHJlYXJuc2hhQGFybS5jb20+CgoJKiBhcm0ubWQgKHBpY19sb2FkX2FkZHIpOiBGaXggY29uc3RyYWludHMuCgoJKiBhcm0ubWQgKGNhc2VzaV9pbnNuKTogRml4IG1pcy1hcHBsaWVkIHBhdGNoLgoKCSogYXJtLm1kICgiY29yZSIgZnVuY3Rpb24gdW5pdCk6IEFkZCBydWxlcyBmb3Igc2luZ2xlLSBhbmQKCW11bHRpLWN5Y2xlIGluc25zLgoJKEFsbCBUQVJHRVRfVEhVTUIgcGF0dGVybnMpOiBBZGQgInR5cGUiIGF0dHJpYnV0ZSBpbmZvcm1hdGlvbgoJd2hlcmUgbmVlZGVkLgoJKiBhcm0uYyAoYXJtX2FkanVzdF9jb3N0KTogUmVkdWNlIHRoZSBjb3N0IG9mIGEgZGF0YSBkZXBlbmRlbmN5IGlmCgl0aGUgZm9sbG93aW5nIGluc24gaXMgYSBDQUxMLgoKCSogYXJtLmMgKHRodW1iX2V4cGFuZF9lcGlsb2d1ZSk6IEFkZCBhIHVzZSBvZiB0aGUgYWRqdXN0ZWQgc3RhY2sKCXBvaW50ZXIuCgkqIGFybS5oIChDT05ESVRJT05BTF9SRUdJU1RFUl9VU0FHRSk6IE5haWwgZG93biB0aGUKCUFSTV9IQVJEX0ZSQU1FX1BPSU5URVJfUkVHTlVNIHdoZW4gVEFSR0VUX0FQQ1NfRlJBTUUuCgkoRlJBTUVfUE9JTlRFUl9SRVFVSVJFRCk6IE9ubHkgY2hlY2sgVEFSR0VUX0FQQ1NfRlJBTUUgaWYgVEFSR0VUX0FSTS4KCglXZWQgT2N0IDI3IDE0OjQwOjQ4IDE5OTkgIE5pY2sgQ2xpZnRvbiAgPG5pY2tjQGN5Z251cy5jb20+CgoJKiBjb25maWcvYXJtL2xpbnV4LWdhcy5oOiBvb3BzIC0gdGhpcyBmaWxlIHdhcyBtaXNzZWQgb3V0IHdoZW4gdGhlCglicmFuY2ggd2FzIGNyZWF0ZWQuLi4KCglUdWUgT2N0IDI2IDE3OjA3OjM4IDE5OTkgIFJpY2hhcmQgRWFybnNoYXcgPHJlYXJuc2hhQGFybS5jb20+CgoJKiB0aHVtYi5jOiBEZWxldGVkLiAgTW92ZSBjb250ZW50cyB0byAuLi4KCSogYXJtLmM6IC4uLiBoZXJlLgoJKiB0LWFybS1hb3V0LCB0LWFybS1jb2ZmLCB0LWFybS1lbGYsIHQtbGludXgsIHQtbmV0YnNkLCB0LXNlbWk6IFJlbW92ZQoJcnVsZSBmb3IgdGh1bWIubwoJKiBjb25maWd1cmUuaW4gKGFybSotKi0qKTogUmVtb3ZlIHRodW1iLm8gZnJvbSBleHRyYV9vYmpzIGxpc3QuCgkqIGNvbmZpZ3VyZTogUmVnZW4uCgoJKiBhcm0tcHJvdG9zLmg6IFVzZSBSVFhfQ09ERSBhbmQgdGlkeSB1cCBsb25nIGxpbmVzLiAgRG9uJ3QKCWRlY2xhcmUgYSBwcm90b3R5cGUgZm9yIGFzbV9vdXRwdXRfYWxpZ24oKTsKCgkqIGFybS5jICh0aHVtYl9jb25kaXRpb25fY29kZSk6IERlbGV0ZS4KCShhcm1fcHJpbnRfb3BlcmFuZCk6IEFsd2F5cyB1c2UgYXJtX2NvbmRpdGlvbl9jb2RlIGFycmF5LgoKCSogYXJtLmMgKHRodW1iX3JldHVybl9hZGRyX3J0eCk6IERlbGV0ZS4KCShhcm1fc2F2ZV9tYWNoaW5lX3N0YXR1cywgYXJtX3Jlc3RvcmVfbWFjaGluZV9zdGF0dXMpOiBEZWxldGUuCgkoYXJtX2luaXRfbWFjaGluZV9zdGF0dXMsIGFybV9tYXJrX21hY2hpbmVfc3RhdHVzKTogTmV3IGZ1bmN0aW9ucy4KCShhcm1faW5pdF9leHBhbmRlcnMpOiBVcGRhdGUgYWNjb3JkaW5nbHkuCgkoYXJtX3JldHVybl9hZGRyKTogUmVuYW1lZCBmcm9tIGFybV9yZXR1cm5fYWRkcl9ydHguICBSZXdyaXRlLgoJKHRodW1iX2V4cGFuZF9wcm9sb2d1ZSk6IERlbGV0ZSBjb2RlIHJlZmVyZW5jaW5nIHRodW1iX3JldHVybl9hZGRyX3J0eC4KCSogYXJtLmggKFJFVFVSTl9BRERSX1JUWCk6IENhbGwgYXJtX3JldHVybl9hZGRyKCkuCgoJVHVlIE9jdCAyNiAxMzoyNDoxNiAxOTk5ICBOaWNrIENsaWZ0b24gIDxuaWNrY0BjeWdudXMuY29tPgoKCSogY29uZmlndXJlLmluIDogRml4IGFybS0qLWFvdXQgdGFyZ2V0IHRvIHVzZSBuZXcgdC1hcm0tYW91dAoJc2NyaXB0LgoJKiBjb25maWcvYXJtL3QtYXJtLWFvdXQ6IE5ldyBmaWxlOiBNYWtlZmlsZSBzY3JpcHQgZm9yIGFybS0qLWFvdXQKCXRhcmdldHMuCgoJVHVlIE9jdCAyNiAxMToyNzoxMiAxOTk5ICBOaWNrIENsaWZ0b24gIDxuaWNrY0BjeWdudXMuY29tPgoKCSogY29uZmlnL2FybS90aHVtYi5jIChvdXRwdXRfdGh1bWJfcHJvbG9ndWUpOiBGaXggYnVnIGNyZWF0aW5nCglzdGFjayBiYWNrdHJhY2Ugc3RydWN0dXJlLgoKCSogY29uZmlnL2FybS9hcm0tcHJvdG9zLmg6IEFkZCBwcm90b3R5cGVzIGZvciBmdW5jdGlvbnMgZGVmaW5lZCBpbgoJYXJtL3BlLmguCgoJKiBjb25maWcvYXJtL2FybS5jIChhcm1fb3ZlcnJpZGVfb3B0aW9ucyk6IEZpeCBzZWxlY3Rpb24gb2YKCWF0dHJpYnV0ZXMgb2YgZGVmYXVsdCBwcm9jZXNzb3IuCgoJKiBjb25maWcvYXJtL2NvZmYuaDogRGVsZXRlIG5lZWRsZXNzICNpbmNsdWRlLgoKCSogY29uZmlnL2FybS9wZS5jOiBEZWxldGUgdW51c2VkIGNvZGUuCgoJKiBjb25maWcvYXJtL3BlLmggKENQUF9ERUZJTkVTKTogRGVsZXRlCgkoU1VCVEFSR0VUX0NQUF9TUEVDKTogRGVmaW5lLgoJKEFTTV9ERUNMQVJFX0ZVTkNUSU9OX05BTUUpOiBVc2UgQVJNX0RFQ0xBUkVfRlVOQ1RJT05fTkFNRS4KCgkqIGNvbmZpZy9hcm0vdC1wZTogQWRkIC1ESW5oaWJpdF9saWJjIHRvIGFsbG9mIGxpYmdjYy5hIHRvIGJ1aWxkLgoKCU1vbiBPY3QgMjUgMTU6NDI6MDkgMTk5OSAgUmljaGFyZCBFYXJuc2hhdyAocmVhcm5zaGFAYXJtLmNvbSkKCgkqIGFybS5oIChUQVJHRVRfQVBDU19GUkFNRSk6IFJlbmFtZWQgZnJvbSBUQVJHRVRfQVBDUyAtLSBhbGwgdXNlcwoJdXBkYXRlZC4KCShDQU5fREVCVUdfV0lUSE9VVF9GUCk6IERlZmluZS4KCShGSVhFRF9SRUdJU1RFUlMpOiBNYWtlIHIxMSBjYWxsLXNhdmVkLgoJKENBTExfVVNFRF9SRUdJU1RFUlMpOiBMaWtld2lzZS4KCShDT05ESVRJT05BTF9SRUdJU1RFUl9VU0FHRSk6IEZpeCByMTEgaWYgVEFSR0VUX0FQQ1NfRlJBTUUuCgkoRlJBTUVfUE9JTlRFUl9SRVFVSVJFRCk6IENvcnJlY3QgbG9naWMgZm9yIGRldGVybWluaW5nIHdoZW4gYQoJZnJhbWUtcG9pbnRlciBpcyByZXF1aXJlZC4KCShUQVJHRVRfREVGQVVMVCk6IE1ha2UgZGVmYXVsdCBzZXR0aW5nIGluY2x1ZGUgQVJNX0ZMQUdfQVBDU19GUkFNRS4KCSogYXJtLmMgKGFybV9vdmVycmlkZV9vcHRpb25zKTogV2FybiBhYm91dCAtbW5vLWFwY3MtZnJhbWUgYW5kIC1nCglpZiB0aGUgdGFyZ2V0IG5vcm1hbGx5IG5lZWRzIGEgc3RhY2sgZnJhbWUgaW4gbm9uLWxlYWYgZnVuY3Rpb25zLgoJKHVzZV9yZXR1cm5faW5zbik6IENvcnJlY3QgbG9naWMgZm9yIGRldGVybWluaW5nIHdoZW4gYSByZXR1cm4KCWluc3RydWN0aW9uIGNhbiBiZSB1c2VkLgoJKG91dHB1dF9yZXR1cm5faW5zdHJ1Y3Rpb24pOiBIYW5kbGUgdGhlIGZyYW1lLXBvaW50ZXIgcmVnaXN0ZXIgYXMKCWEgbm9ybWFsIHJlZ2lzdGVyIHdoZW4gbm90IFRBUkdFVF9BUENTX0ZSQU1FLgoJKGFybV9vdXRwdXRfcHJvbG9ndWUpOiBMaWtld2lzZS4KCShhcm1fb3V0cHV0X2VwaWxvZ3VlKTogTGlrZXdpc2UuCgkob3V0cHV0X2Z1bmNfZXBpbG9ndWUpOiBMaWtld2lzZS4KCShhcm1fZXhwYW5kX3Byb2xvZ3VlKTogTGlrZXdpc2UuCgkqIG5ldGJzZC5oIHNlbWkuaCAoVEFSR0VUX0RFRkFVTFQpOiBBZGQgQVJNX0ZMQUdfQVBDU19GUkFNRS4KCgkqIGFybS5jICh1c2VfcmV0dXJuX2luc24pOiBObyBuZWVkIHRvIGNoZWNrIGZsb2F0aW5nIHBvaW50IHJlZ3MgaWYKCVRBUkdFVF9TT0ZUX0ZMT0FULgoJKGFybV9maW5kX21pbmlwb29sX2NvbnN0YW50KTogQ29ycmVjdCB0eXBvOyB1c2UgR0VUX0NPREUgdG8gZ2V0Cgl0aGUgY29kZSBvZiB2YWx1ZSBzdG9yZWQgaW4gdGhlIG1pbmlwb29sIGFycmF5LgoJKGFybV9hZGRfbWluaXBvb2xfY29uc3RhbnQpOiBMaWtld2lzZS4KCjIwMDAtMDQtMDggIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIGJhc2ljLWJsb2NrLmggKGNvbmZsaWN0X2dyYXBoX2VudW1fZm4pOiBLJlIgZml4LgoKMjAwMC0wNC0wOCAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogdHJlZS5jICh0cmVlX2V4cHJfbm9ubmVnYXRpdmVfcCk6IE5ldyBmdW5jdGlvbi4KCgkqIHRyZWUuaCAodHJlZV9leHByX25vbm5lZ2F0aXZlX3ApOiBEZWNsYXJlLgoKCSogYy10eXBlY2suYyAoYnVpbGRfYmluYXJ5X29wKTogQ2FsbCBgdHJlZV9leHByX25vbm5lZ2F0aXZlX3AnIHRvCgllbGlkZSBzb21lIHNpZ25fY29tcGFyZSB3YXJuaW5ncy4KCShidWlsZF9jb25kaXRpb25hbF9leHByKTogTGlrZXdpc2UuCgpTYXQgQXByICA4IDAwOjIxOjUxIEVEVCAyMDAwICBKb2huIFdlaGxlICAoam9obkBmZWl0aC5jb20pCgoJKiBpMzg2Lm1kIChhc2hyc2kzLCBhc2hyaGkzLCBhc2hycWkzKTogRml4IHR5cG8uCgoJKiBpMzg2Lm1kIChmbG9hdGhpc2YyLCBmbG9hdGhpZGYyLCBmbG9hdGhpeGYyKTogTmV3IHBhdHRlcm5zLgoJKiBpMzg2LmMgKHByaW50X29wZXJhbmQpOiBVc2UgdGhlIHByb3BlciBzdWZmaXggZm9yIGEgMzg3IEhJbW9kZQoJb3BlcmFuZC4gIEFib3J0IGlmIGEgMzg3IG9wZXJhbmQgaGFzIGFuIHVuc3VwcG9ydGVkIHNpemUuCgoyMDAwLTA0LTA4ICBOZWlsIEJvb3RoICA8TmVpbEJAZWFydGhsaW5nLm5ldD4KCgkqIGNwcGV4cC5jIChwYXJzZV9jaGFyY29uc3QpOiBOdWxsIGRvZXMgbm90IGVuZCBjaGFyYWN0ZXIKCWNvbnN0YW50cy4KCSogY3BwaW5pdC5jIChJU1RBQkxFKTogTnVsbCBjaGFyYWN0ZXIgaGFuZGxlZCBhcyB3aGl0ZXNwYWNlLgoJKiBjcHBsZXguYyAobnVsbF93YXJuaW5nKTogIG5ldyBmdW5jdGlvbi4KCShza2lwX3N0cmluZyk6IEVtaXQgd2FybmluZyBpZiBudWxscyBlbmNvdW50ZXJlZC4KCShfY3BwX3NraXBfaHNwYWNlKTogRW1pdCB3YXJuaW5nIGlmIG51bGxzIGVuY291bnRlcmVkLgoJKF9jcHBfbGV4X3Rva2VuKTogRW1pdCB3YXJuaW5nIGlmIG51bGxzIGVuY291bnRlcmVkLiAgRHJvcAoJdGhlbS4KCSogY3BwLnRleGk6IFVwZGF0ZS4KCjIwMDAtMDQtMDcgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgoJKiBmbG93LmMgKGxvb3BfZGVwdGgpOiBSZW1vdmUuCgkocmVnX25leHRfdXNlLCBjYzBfbGl2ZSwgbWVtX3NldF9saXN0KTogUmVwbGFjZSB3aXRoIC4uLgoJKHN0cnVjdCBwcm9wYWdhdGVfYmxvY2tfaW5mbyk6IE5ldy4KCShsaWZlX2FuYWx5c2lzKTogRG9uJ3QgYWxsb2NhdGUgcmVnX25leHRfdXNlLgoJKHByb3BhZ2F0ZV9ibG9ja19kZWxldGVfaW5zbik6IEJyZWFrIG91dCBvZiBwcm9wYWdhdGVfYmxvY2suCglVc2UgZmxvd19kZWxldGVfaW5zbiB0byB1bmxpbmsgcmF0aGVyIHRoYW4gdXNlIE5PVEVfSU5TTl9ERUxFVEVELgoJKHByb3BhZ2F0ZV9ibG9ja19kZWxldGVfbGliY2FsbCk6IExpa2V3aXNlLgoJKHByb3BhZ2F0ZV9ibG9jayk6IENyZWF0ZSBhIHByb3BhZ2F0ZV9ibG9ja19pbmZvIHN0cnVjdCB0byBwYXNzCgl0byBzdWJyb3V0aW5lcy4gIEFsbG9jYXRlIG9uZSBub3QgdHdvIHRlbXBvcmFyeSByZWdzZXRzLiAgRG9uJ3QKCWNsb2JiZXIgbWVtb3J5IGZvciBjb25zdCBjYWxscy4gIExvb2sgZm9yIGNsb2JiZXJzIGluCglDQUxMX0lOU05fRlVOQ1RJT05fVVNBR0UuCgkobWFya19zZXRfcmVncyk6IFJlY29nbml6ZSBDT05EX0VYRUMuCgkobWFya19zZXRfcmVnKTogQnJlYWsgb3V0IG9mIG1hcmtfc2V0XzEuCgkobWFya191c2VkX3JlZyk6IEJyZWFrIG91dCBvZiBtYXJrX3VzZWRfcmVncy4KCShtYXJrX3VzZWRfcmVncyk6IFJlY29nbml6ZSBDT05EX0VYRUMuCgkoaW5zbl9kZWFkX3ApOiBVc2UgcHJvcGFnYXRlX2Jsb2NrX2luZm8gc3RydWN0LgoJKGxpYmNhbGxfZGVhZF9wLCBpbnZhbGlkYXRlX21lbXNfZnJvbV9hdXRvaW5jKTogTGlrZXdpc2UuCgkoZmluZF9hdXRvX2luYywgdHJ5X3ByZV9pbmNyZW1lbnRfMSk6IExpa2V3aXNlLgoJKHByaW50X3J0bF93aXRoX2JiKTogRHVtcCByZWdzIGxpdmUgYXQgZW5kIHRvby4KCShjb3VudF9yZWdfc2V0c18xKTogUGFzcyBpbiBsb29wX2RlcHRoLgoJKGNvdW50X3JlZ19zZXRzLCBjb3VudF9yZWdfcmVmZXJlbmNlcyk6IExpa2V3aXNlLgoJKHJlY29tcHV0ZV9yZWdfdXNhZ2UpOiBQcm92aWRlIGl0LgoKMjAwMC0wNC0wNyAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAY3lnbnVzLmNvbT4KCgkqIE1ha2VmaWxlLmluIChjb25mbGljdC5vKTogRGVwZW5kIG9uICQoUlRMX0gpIGFuZCAkKEJBU0lDX0JMT0NLX0gpCglub3QgdGhlIHJhdyBmaWxlcy4KCjIwMDAtMDQtMDcgIFphY2sgV2VpbmJlcmcgIDx6YWNrQHdvbGVyeS5jdW1iLm9yZz4KCgkqIGNwcGxpYi5jIChkb19lbGlmKTogU2tpcCB0aGUgcmVzdCBvZiB0aGUgbGluZSBpZiB3ZSdyZQoJbm90IGdvaW5nIHRvIGJvdGhlciBldmFsdWF0aW5nIGl0LgoJKHNraXBfaWZfZ3JvdXApOiBDbGVhciBwZmlsZS0+b25seV9zZWVuX3doaXRlLiAgUmVvcmRlciBsb29wCgl0byBhdm9pZCBwb2ludGxlc3MgY2FsbHMgdG8gdGhlIGxleGVyLgoKRnJpIEFwciAgNyAxMTo1MDo1NCAyMDAwICBKaW0gV2lsc29uICA8d2lsc29uQGN5Z251cy5jb20+CgoJKiBjb25maWcvaWE2NC9pYTY0LmM6IERlbGV0ZSBzdGRpby5oIGFuZCBjdHlwZS5oIGluY2x1ZGVzLgoKMjAwMC0wNC0wNyAgSmFzb24gTWVycmlsbCAgPGphc29uQGNhc2V5LmN5Z251cy5jb20+CgoJKiBjYWxscy5jIChleHBhbmRfY2FsbCk6IGVtaXRfcXVldWUgaWYgd2UncmUgdHJ5aW5nIGEgc2liY2FsbC4KCjIwMDAtMDQtMDcgIEpha3ViIEplbGluZWsgIDxqYWt1YkByZWRoYXQuY29tPgoKCSogY29uZmlnL3NwYXJjL3QtbGludXg2NCAodGNydGJlZ2luUy5vLCB0Y3J0ZW5kUy5vKTogUmVtb3ZlLgoKMjAwMC0wNC0wNiAgR2VvZmYgS2VhdGluZyAgPGdlb2Zma0BjeWdudXMuY29tPgoKCSogTWFrZWZpbGUuaW46IEJ1aWxkIGNydGJlZ2luUyBhbmQgY3J0ZW5kUyBsaWtlIGNydGJlZ2luIGFuZAoJY3J0ZW5kIHNvIHRoZXkgY2FuIGJlIG11bHRpbGliYmVkLgoJKFNUQUdFU1RVRkYpOiBSZW1vdmUgcy1jcnQgYW5kIHMtY3J0Uy4KCjIwMDAtMDQtMDcgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgoJKiBjb25maWcvYWxwaGEvYWxwaGEuYyAoYWxwaGFfZW1pdF9jb25kaXRpb25hbF9tb3ZlKTogRmFpbAoJaWYgd2UgZGlzY292ZXIgd2UgbmVlZCBhIHBzZXVkbyBhbmQgbm9fbmV3X3BzZXVkb3MgaXMgdHJ1ZS4KCSogY29uZmlnL2FscGhhL2FscGhhLm1kIChuZTpESSBpbnNuKTogTmV3LgoJKHRydW5jdGZzZjIsIHNuZSk6IEVtaXQgTkUgaW5zdGVhZCBvZiBub24tY2Fub25pY2FsIExUVS4KCjIwMDAtMDQtMDcgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgoJKiBydGwuZGVmIChDT05EX0VYRUMpOiBOZXcuCgkqIHJ0bC5oIChDT05EX0VYRUNfVEVTVCwgQ09ORF9FWEVDX0NPREUpOiBOZXcuCgkqIHRtLnRleGkgKE1BWF9DT05ESVRJT05BTF9FWEVDVVRFKTogRG9jdW1lbnQuCgoJKiBnZW5jb25maWcuYyAoaGF2ZV9jb25kX2FyaXRoX2ZsYWcpOiBSZW1vdmUuCgkoaGF2ZV9jb25kX2V4ZWNfZmxhZyk6IE5ldy4KCSh3YWxrX2luc25fcGFydCk6IERldGVjdCBDT05EX0VYRUMsIG5vdCBhcml0aG1ldGljIGluIElGX1RIRU5fRUxTRS4KCShtYWluKTogUHJpbnQgSEFWRV9jb25kaXRpb25hbF9leGVjdXRpb24uCgoJKiBoYWlmYS1zY2hlZC5jIChoYWlmYV9jbGFzc2lmeV9pbnNuKTogUmVjb2duaXplIENPTkRfRVhFQy4KCShzY2hlZF9hbmFseXplX2luc24sIHByaW50X3BhdHRlcm4pOiBMaWtld2lzZS4KCSogcmVsb2FkLmMgKGZpbmRfZXF1aXZfcmVnKTogTGlrZXdpc2UuCgkqIHJ0bGFuYWwuYyAocmVnX3JlZmVyZW5jZWRfcCk6IExpa2V3aXNlLgoJKG5vdGVfc3RvcmVzLCBkZWFkX29yX3NldF9yZWdub19wKTogTGlrZXdpc2UuCgkocmVnX292ZXJsYXBfbWVudGlvbmVkX3ApOiBSZXdyaXRlIHRvIHVzZSBhIHN3aXRjaC4KCgkqIGdnYy5oIChzdHJ1Y3QgcnR4X2RlZik6IEZvcndhcmQgZGVjbGFyZS4KCgkqIHByaW50LXJ0bC5jIChkZWJ1Z19ydHhfcmFuZ2UpOiBOZXcuCgkqIHJ0bC5oIChkZWJ1Z19ydHhfcmFuZ2UpOiBEZWNsYXJlLgoKCSogdmFycmF5LmggKFZBUlJBWV9BQ1RJVkVfU0laRSwgVkFSUkFZX1BPUF9BTEwpOiBOZXcuCgoJKiBnY3NlLmMgKGdjc2VfbWFpbik6IERvbid0IHJlYnVpbGQgdGhlIENGRyBoZXJlLgoJKGRlbGV0ZV9udWxsX3BvaW50ZXJfY2hlY2tzKTogTGlrZXdpc2UuCgkqIHNzYS5jIChjb252ZXJ0X3RvX3NzYSk6IExpa2V3aXNlLgoJKiB0b3BsZXYuYyAocmVzdF9vZl9jb21waWxhdGlvbik6IERvIGl0IGhlcmUgaW5zdGVhZC4gIENvbWJpbmUKCXNlcXVlbnRpYWwgY2FsbHMgdG8gVElNRVZBUi4gIENvbnNpc3RlbnRseSB1c2UgYGluc25zJyBpbnN0ZWFkIG9mCglgZ2V0X2luc25zKCknLiAgQWx3YXlzIHNwbGl0IGluc25zIGFmdGVyIHJlbG9hZCB3aGVuIG9wdGltaXppbmcuCgoJKiBiYXNpYy1ibG9jay5oIChtZXJnZV9ibG9ja3Nfbm9tb3ZlKTogRGVjbGFyZS4KCSh0aWR5X2ZhbGx0aHJ1X2VkZ2UpOiBEZWNsYXJlLgoJKiBmbG93LmMgKG1lcmdlX2Jsb2Nrc19ub21vdmUpOiBEb2N1bWVudCBhcyBtZXJnaW5nIGludG8gcHJldmlvdXMKCWJsb2Nrcy4gIFJlbW92ZSBjcnVmdCBmcm9tIGJldHdlZW4gYmxvY2tzOyByZW1vdmUgYWxsIGVkZ2VzIG91dCBvZiBBLgoJKHRpZHlfZmFsbHRocnVfZWRnZSk6IEV4cG9ydC4KCjIwMDAtMDQtMDYgIEFsZXggU2FtdWVsICA8c2FtdWVsQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBzc2EuYyAoY29tcHV0ZV9jb25zZXJ2YXRpdmVfcmVnX3BhcnRpdGlvbik6IERlY2xhcmUgd2l0aAoJdm9pZCBhcmd1bWVudHMuCgkqIHRvcGxldi5jIChjbGVhbl9kdW1wX2ZpbGUpOiBSZW1vdmUgcHJldmlvdXNseS1kZWxldGVkIGZ1bmN0aW9uCglpbmFkdmVydGFudGx5IG1lcmdlZCBiYWNrIGluLgoJKiBjb25mbGljdC5jIChjb25mbGljdF9ncmFwaF9hZGQpOiBVc2UgYSBzaW5nbGUgY2FsbCB0bwoJaHRhYl9maW5kX3Nsb3QgdG8gbG9vayB1cCBhbmQgaW5zZXJ0LgoKMjAwMC0wNC0wNiAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAY3lnbnVzLmNvbT4KCgkqIGdlbnJlY29nLmMgKCopOiBSZW5hbWUgX2xhc3RfaW5zbiB0byBsYXN0X2luc24uCgkobWFrZV9pbnNuX3NlcXVlbmNlKTogU2V0IHRoZSBwb3NpdGlvbiBvZiB0aGUgcGVlcGhvbGUyIEMgdGVzdAoJdG8gYmUgYXQgdGhlIGxhc3QgaW5zbi4KCjIwMDAtMDQtMDYgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgoJKiBmbG93LmMgKGNvbXB1dGVfZmxvd19kb21pbmF0b3JzKTogRnJlZSB3b3JrbGlzdC4KCjIwMDAtMDQtMDYgIE1pY2hhZWwgTWF0eiAgPG1hdHptaWNoQGNzLnR1LWJlcmxpbi5kZT4KCgkqIGZsb3cuYyAoY29tcHV0ZV9mbG93X2RvbWluYXRvcnMpOiBQcm9jZXNzIGJsb2NrcyBGSUZPIG5vdCBMSUZPLgoKMjAwMC0wNC0wNiAgQWxleCBTYW11ZWwgIDxzYW11ZWxAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIHJ0bC5oIChJTlNOX1ApOiBOZXcgbWFjcm8uCgkoc3VjY2Vzc29yX3BoaV9mbik6IE5ldyB0eXBlZGVmLgoJKGZvcl9lYWNoX3N1Y2Nlc3Nvcl9waGkpOiBOZXcgcHJvdG90eXBlLgoJKGluX3NzYV9mb3JtKTogTmV3IHZhcmlhYmxlLgoJKFBISV9OT0RFX1ApOiBMaWtld2lzZS4KCSogZmxvdy5jIChjYWxjdWxhdGVfZ2xvYmFsX3JlZ3NfbGl2ZSk6IEFkZCB0byBuZXdfbGl2ZV9hdF9lbmQgZnJvbQoJcGhpIG5vZGVzIGluIHN1Y2Nlc3NvcnMuCgkobWFya191c2VkX3JlZ3MpOiBBZGQgUEhJIGNhc2UuCgkoc2V0X3BoaV9hbHRlcm5hdGl2ZV9yZWcpOiBOZXcgZnVuY3Rpb24uCgkobGlmZV9hbmFseXNpcyk6IEFzc2VydCB0aGF0IGRlYWQgY29kZSBlbGltaW5hdGlvbiBpcyBub3Qgc2VsZWN0ZWQKCXdoZW4gaW4gU1NBIGZvcm0uCgkqIHRvcGxldi5jICh0b19zc2FfdGltZSk6IE5ldyB2YXJpYWJsZS4KCShmcm9tX3NzYV90aW1lKTogTGlrZXdpc2UuCgkoY29tcGlsZV9maWxlKTogWmVybyB0b19zc2FfdGltZSBhbmQgZnJvbV9zc2FfdGltZS4KCVByaW50IHRpbWUgdG8gY29udmVydCB0byBhbmQgZnJvbSBTU0EuCgkocmVzdF9vZl9jb21waWxhdGlvbik6IFRpbWUgY29udmVydF90b19zc2EgYW5kIGNvbnZlcnRfZnJvbV9zc2EuCgkocHJpbnRfdGltZSk6IENvbXB1dGUgcGVyY2VudCBmcmFjdGlvbiBhcyBpbnRlZ2VyLgoJKiBzc2EuYyAoUEhJX05PREVfUCk6IE1vdmVkIHRvIHJ0bC5oLgoJKGNvbnZlcnRfdG9fc3NhKTogQ2hlY2sgaWYgd2UncmUgYWxyZWFkeSBpbiBTU0EuCglEb24ndCBlbGltaW5hdGUgZGVhZCBjb2RlIGluIGxpZmVfYW5hbHlzaXMuCglSZXJ1biBmbG93IGFuZCBsaWZlIGFuYWx5c2lzIGF0IGJvdHRvbS4KCShlbGltaW5hdGVfcGhpKTogVXNlIGNhbm9uaWNhbCByZWdub3Mgd2hlbiBhZGRpbmcgbm9kZXMuCgkobWFya19yZWdfaW5fcGhpKTogTmV3IGZ1bmN0aW9uLgoJKG1hcmtfcGhpX2FuZF9jb3B5X3JlZ3MpOiBMaWtld2lzZS4KCShjb252ZXJ0X2Zyb21fc3NhKTogUmVydW4gbGlmZSBhbmFseXNpcyBhdCB0b3AuCglVc2UgY29hbGVzY2VkIHBhcnRpdGlvbi4KCUNoZWNrIGZvciByZW1vdmluZyBhIHBoaSBub2RlIGF0IHRoZSBlbmQgb2YgdGhlIGJsb2NrLgoJKGNvbXB1dGVfY29hbGVzY2VkX3JlZ19wYXJ0aXRpb24pOiBOZXcgZnVuY3Rpb24uCgkoY29hbGVzY2VfcmVnc19pbl9jb3BpZXMpOiBMaWtld2lzZS4KCShjb2FsZXNjZV9yZWdfaW5fcGhpKTogTGlrZXdpc2UuCgkoY29hbGVzY2VfcmVnc19pbl9zdWNjZXNzb3JfcGhpX25vZGVzKTogTGlrZXdpc2UuCgkoZm9yX2VhY2hfc3VjY2Vzc29yX3BoaSk6IExpa2V3aXNlLgoJKHJlbmFtZV9jb250ZXh0KTogTmV3IHN0cnVjdC4KCShyZW5hbWVfYmxvY2spOiBVc2UgYSByZW5hbWVfY29udGV4dCB3aXRoIHJlbmFtZV9pbnNuXzEuICBXaGVuCglyZW5hbWluZyBzZXRzIG9mIGEgc3VicmVnLCBlbWl0IGEgY29weSBvZiB0aGUgZW50aXJlIHJlZyBmaXJzdC4KCShyZW5hbWVfaW5zbl8xKTogVHJlYXQgZGF0YSBhcyBhIHJlbmFtZV9jb250ZXh0ICouICBTYXZlIGN1cnJlbnQKCWluc24gaW4gc2V0X2RhdGEuCgkocmVuYW1lX3NldF9kYXRhKTogQWRkIGZpZWxkIHNldF9pbnNuLgoJKiBNYWtlZmlsZS5pbiAoSEFTSFRBQl9IKTogTW92ZSB1cCBpbiBmaWxlLgoJKE9CU1RBQ0tfSCk6IE5ldyBtYWNyby4KCShjb2xsZWN0Mi5vKTogVXNlIE9CU1RBQ0tfSCBpbiBkZXBlbmRlbmNpZXMuCgkoc2Rib3V0Lm8pOiBMaWtld2lzZS4KCShlbWl0LXJ0bC5vKTogTGlrZXdpc2UuCgkoc2ltcGxpZnktcnR4Lm8pOiBMaWtld2lzZS4KCShmaXgtaGVhZGVyLm8pOiBMaWtld2lzZS4KCShPQkpTKToJQWRkIGNvbmZsaWN0Lm8uCgkoY29uZmxpY3Qubyk6IE5ldyBydWxlLgoJKiBiYXNpYy1ibG9jay5oOiBJbmNsdWRlIHBhcnRpdGlvbi5oLgoJKGNvbmZsaWN0X2dyYXBoKTogTmV3IHR5cGVkZWYuCgkoY29uZmxpY3RfZ3JhcGhfZW51bV9mbik6IExpa2V3aXNlLgoJKGNvbmZsaWN0X2dyYXBoX25ldyk6IE5ldyBwcm90b3R5cGUuCgkoY29uZmxpY3RfZ3JhcGhfZGVsZXRlKTogTGlrZXdpc2UuCgkoY29uZmxpY3RfZ3JhcGhfYWRkKTogTGlrZXdpc2UuCgkoY29uZmxpY3RfZ3JhcGhfY29uZmxpY3RfcCk6IExpa2V3aXNlLgoJKGNvbmZsaWN0X2dyYXBoX2VudW0pOiBMaWtld2lzZS4KCShjb25mbGljdF9ncmFwaF9tZXJnZV9yZWdzKTogTGlrZXdpc2UuCgkoY29uZmxpY3RfZ3JhcGhfcHJpbnQpOiBMaWtld2lzZS4KCShjb25mbGljdF9ncmFwaF9jb21wdXRlKTogTGlrZXdpc2UuCgkqIGNvbmZsaWN0LmM6IE5ldyBmaWxlLgoKMjAwMC0wNC0wNiAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogdGxpbmsuYyAocmVhZF9yZXBvX2ZpbGVzKTogRG9uJ3QgbG9vayBmb3IgLnJwbyBpbmZvIGZvcgoJbGlua2VyIGZsYWdzLgoKVGh1IEFwciAgNiAyMDozOToyNiAyMDAwICBKIm9ybiBSZW5uZWNrZSA8YW15bGFhckBjeWdudXMuY28udWs+CgoJKiBzaC5oIChTVFJVQ1RfVkFMVUUsIFJFVFVSTl9JTl9NRU1PUlkpOiBEZWZpbmUuCgpUaHUgQXByICA2IDE5OjM0OjA4IDIwMDAgIEoib3JuIFJlbm5lY2tlIDxhbXlsYWFyQGN5Z251cy5jby51az4KCgkqIGNvbmZpZy9zaC9saWIxZnVuY3MuYXNtIChfX191ZGl2c2kzX2k0KToKCSggX19TSDRfU0lOR0xFX18gLyBfX1NINF9TSU5HTEVfT05MWV9fIHZhcmlhbnQpOiB2YWx1ZSBmb3IgZnBzY3IKCW9ubHkgZGVwZW5kcyBvbiBGTU9WRF9XT1JLUy4KClRodSBBcHIgIDYgMTk6MTE6NDcgMjAwMCAgSiJvcm4gUmVubmVja2UgPGFteWxhYXJAY3lnbnVzLmNvLnVrPgoKCSogY29uZmlnL3NoL2xpYjFmdW5jcy5hc20gKF9fX3VkaXZzaTNfaTQpOiBXaGVuIHVzaW5nIGZtb3ZkLAoJbWFrZSBkb3VibGUgY29uc3RhbnQgOC1ieXRlIGFsaWduZWQuCgoyMDAwLTA0LTA2ICBKYWt1YiBKZWxpbmVrICA8amFrdWJAcmVkaGF0LmNvbT4KCgkqIGNvbmZpZy9zcGFyYy9zcGFyYy5tZCAobW92dGZfaW5zbl9zcDMyLCBtb3Z0Zl9pbnNuX3Zpc19zcDMyLAoJbW92dGZfbm9fZV9pbnNuX3NwMzIsIG1vdnRmX2luc25faHFfc3A2NCwgbW92dGZfaW5zbl9ocV92aXNfc3A2NCwKCW1vdnRmX25vX2VfaW5zbl9zcDY0KTogQWNjZXB0IGxvYWRpbmcgMC4wIGludG8gR0VORVJBTF9SRUdTLgoJKG1vdnRmX2luc25fc3A2NCwgbW92dGZfaW5zbl92aXNfc3A2NCk6IExpa2V3aXNlLgoJQWNjZXB0IHN0b3JpbmcgR0VORVJBTF9SRUdTIGludG8gb2Zmc2V0YWJsZSBtZW1vcnkuCgkqIGNvbmZpZy9zcGFyYy9zcGFyYy5oIChQUkVGRVJSRURfUkVMT0FEX0NMQVNTKTogRG9uJ3QgYWxsb3cKCWJ1aWxkaW5nIGEgVEZtb2RlIGNvbnN0YW50IG90aGVyIHRoYW4gMC4wTCBpbnRvIEdFTkVSQUxfUkVHUy4KCjIwMDAtMDQtMDYgIENsaW50b24gUG9wZXR6ICA8Y3BvcGV0ekBjeWdudXMuY29tPgoKCSogcmVncmVuYW1lLmMgKHJlZ3JlbmFtZV9vcHRpbWl6ZSk6IEhhbmRsZSBubyBSRUdfQUxMT0NfT1JERVIuCgoyMDAwLTA0LTA2ICBaYWNrIFdlaW5iZXJnICA8emFja0B3b2xlcnkuY3VtYi5vcmc+CgoJKiBjcHBoYXNoLmMgKENQUF9JU19NQUNST19CVUZGRVIsIEZPUldBUkQsIFBFRUtDKTogRGVsZXRlLgoJKG1hY3JvX2NsZWFudXApOiBObyBuZWVkIHRvIGNhc3QgcGJ1Zi0+bWFjcm8uCgkoY29sbGVjdF9leHBhbnNpb24pOiBVc2UgX2NwcF9nZXRfZGVmaW5lX3Rva2VuLiAgR290byBkb25lIGlmCglpdCByZXR1cm5zIFZTUEFDRS4gIFJlbW92ZSBjaGVjayBmb3IgdHJhaWxpbmcgc3BhY2UgYWZ0ZXIKCUNQUF9DT01NRU5ULgoJKF9jcHBfY3JlYXRlX2RlZmluaXRpb24pOiBEb24ndCBkaWRkbGUgZmxhZ3MgaGVyZS4gIFJldHVybgoJZGlyZWN0bHkgb24gZXJyb3IuCgkodW5zYWZlX2NoYXJzKTogSGFuZGxlIGMxIGJlaW5nIEVPRi4KCShwdXNoX21hY3JvX2V4cGFuc2lvbik6IFVzZSB1bnNhZmVfY2hhcnMgZm9yIGJvdGggYWNjaWRlbnRhbC1wYXN0ZQoJY2hlY2tzLiAgRG9uJ3QgcHVzaCB0aGUgYnVmZmVyIHRpbGwgYWZ0ZXIgd2UncmUgZG9uZSB3aXRoCgl0aGVtLgoJKiBjcHBsZXguYyAoUEVFS0JVRiwgR0VUQlVGLCBGT1JXQVJEQlVGKTogTmV3LgoJKFBFRUtOLCBGT1JXQVJELCBHRVRDLCBQRUVLQyk6IFVzZSB0aGVtLgoJKGNwcF9wdXNoX2J1ZmZlcik6IERvbid0IHNldCBuZXctPmFsaW1pdC4gIFNldCBuZXctPm1hcmsKCWFwcHJvcHJpYXRlbHkuCgkoX2NwcF9wYXJzZV9hc3NlcnRpb24pOiBEb24ndCBOVUwgdGVybWluYXRlLgoJKF9jcHBfbGV4X3Rva2VuKTogRml4IC10cmFkaXRpb25hbCBtYWNybyBoYW5kbGluZy4gIERvbid0IHNraXAKCWhzcGFjZSBiZWZvcmUgY2FsbGluZyBfY3BwX3BhcnNlX2Fzc2VydGlvbi4gIFJlbW92ZSBhbGwgc2V0cwoJb2Ygb25seV9zZWVuX3doaXRlLiBUcmVhdCAnXGYnIGFzIGhzcGFjZS4gIERvbid0IGRvIGFueXRoaW5nCglzcGVjaWFsIHdpdGggJ1xuJyBoZXJlLgoJKG1heWJlX21hY3JvZXhwYW5kKTogSGFuZGxlIFRfRU1QVFkgaGFzaCBlbnRyaWVzIHdpdGhvdXQKCXB1c2hpbmcgYSBidWZmZXIgYXQgYWxsLgoJKGNwcF9nZXRfdG9rZW4pOiBIYW5kbGUgY2xlYXJpbmcgb25seV9zZWVuX3doaXRlIGhlcmUuICBIYW5kbGUKCWluY3JlbWVudGluZyB0aGUgbGluZSBudW1iZXIgaGVyZS4gIENsZWFyCglwb3RlbnRpYWxfY29udHJvbF9tYWNybyBhcyB3ZWxsIGFzIG9ubHlfc2Vlbl93aGl0ZSwgaWYKCWFwcHJvcHJpYXRlLgoJKGNwcF9nZXRfbm9uX3NwYWNlX3Rva2VuKTogRG9uJ3QgZWF0IENQUF9QT1AgdG9rZW5zLgoJKF9jcHBfZ2V0X2RlZmluZV90b2tlbik6IE5ldyBmdW5jdGlvbiwgYmFzaWNhbGx5IGxpa2UKCV9jcHBfZ2V0X2RpcmVjdGl2ZV90b2tlbiB3YXMgYnV0IGRvZXNuJ3QgZWF0IGhvcml6b250YWwgc3BhY2UuCglEb24ndCBkbyBhbnl0aGluZyB3aXRoIG9ubHlfc2Vlbl93aGl0ZSBoZXJlLgoJKF9jcHBfZ2V0X2RpcmVjdGl2ZV90b2tlbik6IEp1c3QgY2FsbCBfY3BwX2dldF9kZWZpbmVfdG9rZW4KCXJlcGVhdGVkbHkgdGlsbCBpdCByZXR1cm5zIG5vbi1oc3BhY2UuCgoJKiBjcHBsaWIuYyAoUEVFS04sIEZPUldBUkQsIEdFVEMsIFBFRUtDKTogRGVsZXRlLgoJKGNvbmRpdGlvbmFsX3NraXAsIHNraXBfaWZfZ3JvdXApOiBSZXR1cm4gaW50LgoJKERJUkVDVElWRV9UQUJMRSk6IENoYW5nZSBvcmlnaW4gb2YgYWxsIGNvbmRpdGlvbmFsIGRpcmVjdGl2ZXMKCXRvICJDT05EIi4KCShUUkFEX0RJUkVDVF9QKTogTmV3IG1hY3JvLgoJKF9jcHBfaGFuZGxlX2RpcmVjdGl2ZSk6IFVzZSBfY3BwX2dldF9kaXJlY3RpdmVfdG9rZW4uICBJc3N1ZQoJYW4gZXJyb3IgZm9yIGEgYm9ndXMgZGlyZWN0aXZlLCB1bmxlc3MgLWxhbmctYXNtLiAgVXNlCglUUkFEX0RJUkVDVF9QLiBMb29wIGNhbGxpbmcgaGFuZGxlciBmdW5jdGlvbnMgdGlsbCBvbmUgcmV0dXJucwoJemVyby4KCShnZXRfbWFjcm9fbmFtZSk6IERvbid0IGRpZGRsZSBmbGFncyBoZXJlLgoJKGRvX2RlZmluZSk6IERpZGRsZSBmbGFncyBoZXJlLiAgVXNlIF9jcHBfZ2V0X2RpcmVjdGl2ZV90b2tlbi4KCUNyZWF0ZSBUX0VNUFRZIG5vZGVzIGZvciAjZGVmaW5lIG1hY3JvIC8qIG5vdGhpbmcgKi8uCgkoZG9fdW5kZWYpOiBEb24ndCBjb3B5IHRoZSBuYW1lLiAgVXNlIF9jcHBfZ2V0X2RpcmVjdGl2ZV90b2tlbi4KCVVzZSBocC0+bmFtZSB3aGVuIGNhbGxpbmcgcGFzc190aHJ1X2RpcmVjdGl2ZS4KCShkb19pZiwgZG9fZWxzZSwgZG9fZWxpZiwgZG9faWZkZWYsIGRvX2lmbmRlZiwgY29uZGl0aW9uYWxfc2tpcCk6CglSZXR1cm4gdGhlIHJlc3VsdCBvZiBjb25kaXRpb25hbF9za2lwIGFuZC9vciBza2lwX2lmX2dyb3VwLgoJRG9uJ3QgY2FsbCBfY3BwX291dHB1dF9saW5lX2NvbW1hbmQuCgkoY29uc2lkZXJfZGlyZWN0aXZlX3doaWxlX3NraXBwaW5nKTogVXNlIF9jcHBfZ2V0X2RpcmVjdGl2ZV90b2tlbi4KCUlzc3VlIC1XdHJhZGl0aW9uYWwgd2FybmluZ3MgYXMgYXBwcm9wcmlhdGUuICBEb24ndCBjb21wbGFpbgoJYWJvdXQgdW5yZWNvZ25pemVkIGRpcmVjdGl2ZXMuICBJZiB3ZSBhcmUgdG8gc3RvcCBza2lwcGluZywKCXJldHVybiB0aGUgbnVtYmVyIG9mIHRoZSBkaXJlY3RpdmUgdGhhdCBlbmRlZCB0aGUgc2tpcC4KCShza2lwX2lmX2dyb3VwKTogVXNlIF9jcHBfZ2V0X2RpcmVjdGl2ZV90b2tlbi4gIFR1cm4gb2ZmIG1hY3JvCglleHBhbnNpb24gYW5kIGxpbmUgY29tbWFuZHMgd2hpbGUgc2tpcHBpbmcuICBSZXR1cm4gdGhlIHJlc3VsdAoJb2YgY29uc2lkZXJfZGlyZWN0aXZlX3doaWxlX3NraXBwaW5nLCBpZiBub256ZXJvLgoJKGRvX2VuZGlmKTogSnVzdCBzZXQgcG90ZW50aWFsX2NvbnRyb2xfbWFjcm8gaGVyZS4KCSh2YWxpZGF0ZV9lbHNlKTogVXNlIF9jcHBfZ2V0X2RpcmVjdGl2ZV90b2tlbi4KCShkb19hc3NlcnQsIGRvX3VuYXNzZXJ0KTogRG9uJ3Qgc2F2ZSBwb2ludGVycyBpbnRvIHRoZQoJdG9rZW5fYnVmZmVyIGFjcm9zcyBjYWxscyB0byB0aGUgbGV4ZXIuICBVc2UKCV9jcHBfZ2V0X2RpcmVjdGl2ZV90b2tlbi4KCgkqIGNwcGxpYi5oIChjcHBfYnVmZmVyKTogUmVtb3ZlIGFsaW1pdCBhbmQgY29sbm8uICBNYWtlIG1hcmsgYQoJcG9pbnRlciwgbm90IGFuIG9mZnNldC4gIFJlcGxhY2UgJ2RhdGEnLCB3aGljaCB3YXMgYSBnZW5lcmljCglwb2ludGVyLCB3aXRoICdtYWNybycsIHdoaWNoIHBvaW50cyB0byBhIHN0cnVjdCBoYXNobm9kZS4KCShjcHBfcmVhZGVyKTogQWRkICdwb3RlbnRpYWxfY29udHJvbF9tYWNybycgcG9pbnRlci4KCSogY3BwaGFzaC5oIChUX1VOVVNFRCk6IFJlcGxhY2Ugd2l0aCBUX0VNUFRZLgoJKENQUF9CVUZfR0VULCBDUFBfRk9SV0FSRCk6IERlbGV0ZS4KCShDUFBfSU5fQ09MVU1OXzEsIEFESkFDRU5UX1RPX01BUkspOiBOZXcgbWFjcm9zLgoJKENQUF9JU19NQUNST19CVUZGRVIsIENQUF9TRVRfQlVGX01BUkssIENQUF9HT1RPX0JVRl9NQVJLLAoJQUNUSVZFX01BUktfUCk6IFVwZGF0ZS4KCShfY3BwX2dldF9kZWZpbmVfdG9rZW4pOiBOZXcgaW50ZXJuYWwgZnVuY3Rpb24uCgkqIGNwcGZpbGVzLmMgKHJlYWRfaW5jbHVkZV9maWxlKTogRG9uJ3Qgc2V0IGZwLT5hbGltaXQgb3IgZnAtPmNvbG5vLgoKMjAwMC0wNC0wNSAgIEJlbmphbWluIEtvc25payAgPGJrb3pAY3lnbnVzLmNvbT4KCgkqIGNvbmZpZ3VyZS5pbjogQW5kIGhlcmUuCgkqIGNvbmZpZ3VyZTogUmVnZW5lcmF0ZS4KCSogYWNjb25maWcuaDogQWRkIEVOQUJMRV9TVERfTkFNRVNQQUNFIHRvIHNldCBmbGFnX2hvbm9yX3N0ZCBpZgoJLS1lbmFibGUtbGlic3RkY3h4LXYzIGlzIHBhc3NlZCBhdCBjb25maWd1cmUgdGltZS4KCSogY29uZmlnLmguaW46IFJlZ2VuZXJhdGUuCgoyMDAwLTA0LTA1ICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogZmluYWwuYyAoZmluYWwpOiBVc2UgeGNhbGxvYyB0byBhbGxvY2F0ZSBsaW5lX25vdGVfZXhpc3RzLgoJKiBmdW5jdGlvbi5jIChmcmVlX2FmdGVyX2NvbXBpbGF0aW9uKTogRnJlZSB0aGUgdGVtcF9zbG90cy4KCShhc3NpZ25fc3RhY2tfdGVtcF9mb3JfdHlwZSk6IFVzZSB4bWFsbG9jIHRvIGFsbG9jYXRlIHRlbXBfc2xvdHMuCgkoY29tYmluZV90ZW1wX3Nsb3QpOiBGcmVlIHRlbXBfc2xvdHMgd2hlbiB0aGV5IGdldCBjb21iaW5lZC4KCShwdXJnZV9hZGRyZXNzb2YpOiBGaXggdHlwbyBpbiBjb21tZW50LgoJKiBzdG10LmMgKG1hcmtfZ290b19maXh1cCk6IE1hcmsgdGhlIGZpeHVwIGl0c2VsZi4KCShleHBhbmRfZml4dXApOiBBbGxvY2F0ZSB0aGUgZml4dXAgd2l0aCBnZ2NfYWxsb2Nfb2JqLgoKCSogZ2djLmg6IEluY2x1ZGUgdmFycmF5LmguCgkoZ2djX3BlbmRpbmdfdHJlZXMpOiBEZWNsYXJlLgoJKGdnY19tYXJrX3RyZWVfY2hpbGRyZW4pOiBSZW1vdmUgZGVjbGFyYXRpb24uCgkoZ2djX21hcmtfdHJlZSk6IEp1c3QgcHVzaCB1bm1hcmtlZCB0cmVlcyBvbiBnZ2NfcGVuZGluZ190cmVlcy4KCSogZ2djLWNvbW1vbi5jIChnZ2NfcGVuZGluZ190cmVlcyk6IE5ldyB2YXJpYWJsZS4KCShnZ2NfbWFya19yb290cyk6IENhbGwgZ2djX21hcmtfdHJlZXMuCgkoZ2djX21hcmtfdHJlZV9jaGlsZHJlbik6IFJlbmFtZSB0byBnZ2NfbWFya190cmVlcy4gIFByb2Nlc3MgYWxsCgl0aGUgZ2djX3BlbmRpbmdfdHJlZXMuCgkqIE1ha2VmaWxlLmluIChHR0NfSCk6IE5ldyB2YXJpYWJsZS4gIFVzZSBpdCB0aHJvdWdob3V0IGluIHBsYWNlCglvZiBnZ2MuaC4KClRodSBBcHIgIDYgMDA6MzA6NTAgMjAwMCAgSiJvcm4gUmVubmVja2UgPGFteWxhYXJAY3lnbnVzLmNvLnVrPgoKCSogc2guaCAoRlVOQ1RJT05fQVJHX1BBUlRJQUxfTlJFR1MpOiBBY2NvbW1vZGF0ZSBhbiB1bnNpZ25lZAoJR0VUX01PREVfU0laRS4KCldlZCBBcHIgIDUgMjM6MTc6MTAgMjAwMCAgSiJvcm4gUmVubmVja2UgPGFteWxhYXJAY3lnbnVzLmNvLnVrPgoKCSogc2guYyAoc2hfaW5zbl9sZW5ndGhfYWRqdXN0bWVudCk6IE5ldyBmdW5jdGlvbi4KCSogc2gtcHJvdG9zLmggKHNoX2luc25fbGVuZ3RoX2FkanVzdG1lbnQpOiBEZWNsYXJlLgoJKiBzaC5oIChBREpVU1RfSU5TTl9MRU5HVEgpOiBVc2UgaXQuCgpXZWQgQXByICA1IDEyOjM1OjE4IDIwMDAgIEhhbnMtUGV0ZXIgTmlsc3NvbiAgPGhwQGF4aXMuY29tPgoKCSogb3B0YWJzLmMgKGVtaXRfbGliY2FsbF9ibG9jayk6IFJlbW92ZSBzcHVyaW91cyBSRUdfRVFVQUwgbm90ZXMKCWZyb20gdGhlIGluc24gd2hlcmUgUkVHX1JFVFZBTCBpcyBhZGRlZC4KCShlbWl0X25vX2NvbmZsaWN0X2Jsb2NrKTogRGl0dG8uCgoJKiBtZC50ZXhpIChTdGFuZGFyZCBOYW1lcyk6IENsYXJpZnkgd2hlbiBtb3ZYIGlzIG5lZWRlZC4KCgkqIGNvbWJpbmUuYyAoc2ltcGxpZnlfY29tcGFyaXNvbikgW01JTlVTXTogRG8gbm90IHJlcGxhY2UKCWFsbCAob3AgKG1pbnVzIEEgQikgMCkgd2l0aCAob3AgQSBCKS4KCldlZCBBcHIgIDUgMTg6MDM6MzEgMjAwMCAgVG9zaGl5YXN1IE1vcml0YSAgKHRvc2hpLm1vcml0YUBzZWdhLmNvbSkKCQkJICBKIm9ybiBSZW5uZWNrZSA8YW15bGFhckBjeWdudXMuY28udWs+CgoJKiBzaC5tZCAoYmxvY2tfbHVtcF9yZWFsX2k0KTogQWRkIG1pc3NpbmcgY2xvYmJlciBvZiBUX1JFRwoJKGJsb2NrX2x1bXBfcmVhbCk6IExpa2V3aXNlLgoKMjAwMC0wNC0wNSAgQ2hyaXMgRGVtZXRyaW91ICA8Y2dkQG5ldGJzZC5vcmc+CgoJKiBtaXBzLmggKE1BU0tfREVCVUdfQSwgTUFTS19ERUJVR19CLCBNQVNLX0RFQlVHX0MpOiBaZXJvIHRoZQoJcmVtYWluaW5nIG5vbnplcm8gZGVidWdnaW5nIG1hc2tzLgoKV2VkIEFwciAgNSAwOTo0NDowNyAyMDAwICBKZWZmcmV5IEEgTGF3ICAobGF3QGN5Z251cy5jb20pCgoJKiBiYXNpYy1ibG9jay5oICh2ZXJpZnlfZmxvd19pbmZvKTogRGVjbGFyZS4KCShmbG93X2xvb3Bfb3V0c2lkZV9lZGdlX3ApOiBEZWNsYXJlLgoJKiBmbG93LmMgKHZlcmlmeV9mbG93X2luZm8pOiBSZW1vdmUgZGVjbGFyYXRpb24uCgkoY2xlYXJfbG9nX2xpbmtzLCBmbG93X2xvb3Bfb3V0c2lkZV9lZGdlX3ApOiBMaWtld2lzZS4KCldlZCBBcHIgIDUgMDk6MzQ6MjYgMjAwMCAgUGhpbGlwcGUgRGUgTXV5dGVyIDxwaGRtQG1hY3FlbC5iZT4KCgkqIG02OGsvbTY4ay1wcm90b3MuaCAoZmluYWxpemVfcGljKTogVHVybiBwcm90b3R5cGUgb2ZmIHVzaW5nIGAjaWYgMCcsCglub3QgQysrIGNvbW1lbnRzLgoKMjAwMC0wNC0wNSAgSmFrdWIgSmVsaW5layAgPGpha3ViQHJlZGhhdC5jb20+CgoJKiBjb25maWcvc3BhcmMvc3BhcmMubWQgKHNuZWRpX3plcm8rMSwgbmVnX3NuZWRpX3plcm8rMSwKCXNuZWRpX3plcm9fdHJ1bmMrMSwgc2VxZGlfemVybysxLCBuZWdfc2VxZGlfemVybysxLAoJc2VxZGlfemVyb190cnVuYysxKTogQWxsb3cgc3BsaXRzIG9ubHkgaWYgcmVnaXN0ZXJzIGFyZQoJZGlmZmVyZW50LgoKMjAwMC0wNC0wNCAgVWxyaWNoIERyZXBwZXIgIDxkcmVwcGVyQGN5Z251cy5jb20+CgoJKiBhY2NvbmZpZy5oOiBBZGQgSEFWRV9HQVNfSElEREVOLgoJKiBjb25maWcuaW46IFJlZ2VuZXJhdGVkLgoJKiBjb25maWd1cmUuaW46IEFkZCB0ZXN0IGZvciAuaGlkZGVuIHBzZXVkby1vcCBpbiBnYXMuCgkqIGNvbmZpZ3VyZTogUmVnZW5lcmF0ZWQuCgkqIGNydHN0dWZmLmM6IEluY2x1ZGUgYXV0by1ob3N0LmguCglFbWl0IGFkZGl0aW9uYWwgLmhpZGRlbiBwc2V1ZG8tb3AgZm9yIF9fZHNvX2hhbmRsZSBpZiB0aGUKCWFzc2VtYmxlciBrbm93cyBhYm91dCBpdC4KCjIwMDAtMDQtMDQgIFBoaWxpcHBlIERlIE11eXRlciAgPHBoZG1AbWFjcWVsLmJlPgoKCSogY3BwaGFzaC5jIChfY3BwX2ZyZWVfZGVmaW5pdGlvbik6IFRlc3QgYXJnbmFtZXMsIG5vdCBuYXJncyA+PSAwLAoJYmVmb3JlIGZyZWVpbmcgYXJnbmFtZXMuCgkqIGNwcGxpYi5jIChkb19pZm5kZWYpOiBDYXN0IHJldHVybiB2YWx1ZSBvZiB4c3RyZHVwLgoKMjAwMC0wNC0wNSAgTWljaGFlbCBNZWlzc25lciAgPG1laXNzbmVyQHJlZGhhdC5jb20+CgoJKiBjb25maWcvcnM2MDAwL3JzNjAwMC5jIChwcmludF9vcGVyYW5kKTogUGF0Y2ggZnJvbSBKb25hdGhhbgoJV2FsdG9uIDxqb25ib3lAZ29yZGlhbi5jb20+IHRvIG1ha2UgbWVtb3J5IHJlZmVyZW5jZXMgd2l0aCB1cGRhdGUKCXdvcmsgd3RpaCAtbXJlZ25hbWVzLgoKMjAwMC0wNC0wNCAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogcmVncmVuYW1lLmMgKHJlZ25vX2ZpcnN0X3VzZV9pbik6IFdyYXAgcHJvdG90eXBlIGluIFBBUkFNUy4KCShyZWdyZW5hbWVfb3B0aW1pemUpOiBSZW5hbWUgdmFyaWFibGVzIGBkZWZfdXNlcycgYW5kCglgZXh0X2Jhc2ljX2Jsb2NrcycgdG8gYXZvaWQgY29uZmxpY3RzIHdpdGggc2ltaWxhcmx5IG5hbWVkCgl0eXBlZGVmcyBpbiB0cmFkaXRpb25hbCBDLgoKCSogY2FsbHMuYyAoaW5pdGlhbGl6ZV9hcmd1bWVudF9pbmZvcm1hdGlvbik6IEZpeCB0eXBvIGluIHByZXZpb3VzCgljaGFuZ2UuCgoyMDAwLTA0LTA0ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEBjeWdudXMuY29tPgoKCSogcmVncmVuYW1lLmMgKGNvbnNpZGVyX2F2YWlsYWJsZSk6IFRlc3QgZml4ZWRfcmVncyBub3QKCVBJQ19PRkZTRVRfVEFCTEVfUkVHTlVNLgoKMjAwMC0wNC0wNCAgR2VvZmYgS2VhdGluZyAgPGdlb2Zma0BjeWdudXMuY29tPgoKCSogY29uZmlnL3JzNjAwMC90LXBwY2NvbW0gKEVYVFJBX01VTFRJTElCX1BBUlRTKTogQWRkIGNydGJlZ2luLAoJY3J0ZW5kLgoJKENSVFNUVUZGX1RfQ0ZMQUdTX1MpOiBEZWxldGUgZGVmaW5pdGlvbi4KCSogY29uZmlnL3JzNjAwMC9zeXN2NC5oIChTVEFSVEZJTEVfTElOVVhfU1BFQyk6IEFsd2F5cyB1c2UgY3J0YmVnaW4uCgkoRU5ERklMRV9MSU5VWF9TUEVDKTogQWx3YXlzIHVzZSBjcnRlbmQuCgkqIGNvbmZpZ3VyZS5pbiAocG93ZXJwYy0qLWxpbnV4LWdudWxpYmMxKTogRG9uJ3QgZGVmaW5lIGV4dHJhX3BhcnRzLgoJKHBvd2VycGMtKi1saW51eC1nbnUpOiBMaWtld2lzZS4KCSogY29uZmlndXJlOiBSZWdlbmVyYXRlLgoKCSogY29uZmlnL3JzNjAwMC9lYWJpLmg6CURvbid0IGluY2x1ZGUgc3lzdjQuaC4KCShNVUxUSUxJQl9ERUZBVUxUUyk6IERvbid0IGRlZmluZS4KCSogY29uZmlnL3JzNjAwMC9lYWJpYWl4Lmg6IERvbid0IGluY2x1ZGUgZWFiaS5oLgoJKiBjb25maWcvcnM2MDAwL2VhYmlsZS5oOiBEZWxldGUuCgkqIGNvbmZpZy9yczYwMDAvZWFiaWxlc2ltLmg6IERlbGV0ZS4KCSogY29uZmlnL3JzNjAwMC9lYWJpc2ltLmg6IERvbid0IGluY2x1ZGUgZWFiaS5oLgoJKiBjb25maWcvcnM2MDAwL2xpbnV4Lmg6IERvbid0IGluY2x1ZGUgc3lzdjQuaC4KCShKVU1QX1RBQkxFU19JTl9URVhUX1NFQ1RJT04pOiBEb24ndCByZWRlZmluZS4KCShNVUxUSUxJQl9ERUZBVUxUUyk6IERvbid0IHJlZGVmaW5lLgoJKiBjb25maWcvcnM2MDAwL3J0ZW1zLmg6IERvbid0IGluY2x1ZGUgZWFiaS5oLgoJKiBjb25maWcvcnM2MDAwL3NvbDIuaDogRG9uJ3QgaW5jbHVkZSBzeXN2NGxlLmguCgkqIGNvbmZpZy9yczYwMDAvc3lzdjRsZS5oOiBEb24ndCBpbmNsdWRlIHN5c3Y0LmguCgkqIGNvbmZpZy9yczYwMDAvdC1wcGM6IERlbGV0ZS4KCSogY29uZmlnL3JzNjAwMC90LXBwY2dhczogQ29ycmVjdCBjb21tZW50LgoJKiBjb25maWcvcnM2MDAwL3QtcHBjb3M6IENvcnJlY3QgY29tbWVudC4gIERvbid0IGJ1aWxkCgltdWx0aWxpYnMgZm9yIC1mUElDLCByYXRoZXIgdXNlIC1mUElDIC1tc3RyaWN0LWFsaWduCglhcyBkZWZhdWx0LgoJKiBjb25maWcvcnM2MDAwL3QtcHBjOiBEZWxldGUuCgkqIGNvbmZpZy9yczYwMDAvdnhwcGMuaDogRG9uJ3QgaW5jbHVkZSBzeXN2NC5oLgoJKiBjb25maWcvcnM2MDAwL3Z4cHBjbGUuaDogRGVsZXRlLgoJKiBjb25maWd1cmUuaW46IFVzZSBtdWx0aXBsZSBoZWFkZXIgZmlsZXMgZm9yIHAycGMgRUxGIHRhcmdldHMKCXBvd2VycGMtZWFiaWFpeCwgcG93ZXJwYy1lYWJpc2ltLCBwb3dlcnBjLXJ0ZW1zLCBwb3dlcnBjbGUtZWFiaSwKCXBvd2VycGNsZS1lYWJpc2ltLCBwb3dlcnBjLWVsZiwgcG93ZXJwY2xlLWVsZiwgcG93ZXJwYy1saW51eC1nbnUsCglwb3dlcnBjLWxpbnV4LWdudWxpYmMxLCBwb3dlcnBjLXN5c3YsIHBvd2VycGNsZS1zeXN2LAoJcG93ZXJwYy12eHdvcmtzLCBwb3dlcnBjbGUtdnh3b3Jrcy4gIEFzc3VtZSBHQVMgZnVuY3Rpb25hbGl0eSBpcwoJYWx3YXlzIGF2YWlsYWJsZSBmb3IgdGhlc2UgcGxhdGZvcm1zLgoKMjAwMC0wNC0wNCAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAY3lnbnVzLmNvbT4KCgkqIGNhbGxzLmMgKHRyeV90b19pbnRlZ3JhdGUpOiBJbml0aWFsaXplIHJlZ19wYXJtX3N0YWNrX3NwYWNlLgoKMjAwMC0wNC0wNCAgU3RhbiBDb3ggIDxzY294QGN5Z251cy5jb20+CgoJKiBNYWtlZmlsZS5pbjogQWRkIHJ1bGVzIGZvciByZWdyZW5hbWUubwoJKiByZWdyZW5hbWUuYzogTmV3IGZpbGUuCgkqIHJ0bC5oIChyZWdyZW5hbWVfb3B0aW1pemUpOiBBZGQgcHJvdG90eXBlLgoJKiB0b3BsZXYuYyAocmVuYW1lX3JlZ2lzdGVyc19kdW1wLCBmbGFnX3JlbmFtZV9yZWdpc3RlcnMpOiBOZXcgdmFyaWFibGVzCgkoY29tcGlsZV9maWxlLCBkZWNvZGVfZF9vcHRpb24pOiBBZGQgc3VwcG9ydCBmb3IgLWZyZW5hbWUtcmVnaXN0ZXJzLgoJKHJlc3Rfb2ZfY29tcGlsYXRpb24pOiBDYWxsIHJlZ3JlbmFtZV9vcHRpbWl6ZS4KCSogY29uZmlnL2lhNjQvaWE2NC5oIChIQVJEX1JFR05PX1JFTkFNRV9PSywgUkVOQU1FX0VYVEVOREVEX0JMT0NLUyk6CglOZXcgbWFjcm9zLgoKMjAwMC0wNC0wNCAgTWFydGluIHYuIEz2d2lzICA8bG9ld2lzQGluZm9ybWF0aWsuaHUtYmVybGluLmRlPgoKCSogTWFrZWZpbGUgKGdjY2J1Zyk6IE5ldyB0YXJnZXQuCgkoZG9jKTogRGVwZW5kIG9uIGl0LgoJKiBnY2MudGV4aSAoQnVncyk6IExpbmsgc3Vibm9kZXMuCgkoZ2NjYnVnKTogTmV3IG5vZGUuCgkqIGdjY2J1Zy5pbiAoQ0FURUdPUklFUyk6IFJlbW92ZSBnYywgaG9zdCwgcHJvZmlsaW5nLCBsaWJnY2MuCglEb2N1bWVudCBzZXZlcml0aWVzLCBwcmlvcml0aWVzLCBhbmQgY2xhc3NlcyBpbiBidWcgZm9ybS4KCjIwMDAtMDQtMDQgIFphY2sgV2VpbmJlcmcgIDx6YWNrQHdvbGVyeS5jdW1iLm9yZz4KCgkqIGNwcGxleC5jICh0cmlncmFwaF9tYXAsIHNwZWNjYXNlKTogQ29tYmluZSBpbnRvIHNpbmdsZQoJdGFibGUsIGNoYXJ0YWIuCgkoTk9STUFMLCBOT05UUkkpOiBOZXcgbWFjcm9zLgoJKF9jcHBfcmVhZF9hbmRfcHJlc2Nhbik6IENoYW5nZSB0byB1c2UgdW5pZmllZCB0YWJsZS4gIFVzZQoJaXNfaHNwYWNlIHRvIHRlc3QgZm9yIHdoaXRlc3BhY2UuCgoJKiBkYnhvdXQuYyAoQ09OVElOKTogSWYgaXQgZG9lc24ndCBoYXZlIHRvIGRvIGFueXRoaW5nLCBnaXZlIGl0IGEKCWRlZmluaXRpb24gdGhhdCBkb2Vzbid0IHByb3Zva2UgdGhlICJlbXB0eSBib2R5IGluIGFuCglpZi1zdGF0ZW1lbnQiIHdhcm5pbmcuCgoyMDAwLTA0LTA0ICBDbGludG9uIFBvcGV0eiAgPGNwb3BldHpAY3lnbnVzLmNvbT4KCgkqIGJ1aWx0aW5zLmMgKGV4cGFuZF9idWlsdGluX3N0cmxlbik6IEZvcmNlIHRoZSBzb3VyY2UgdG8KCWJlIGEgbWVtb3J5IGFkZHJlc3MuCgoyMDAwLTA0LTA0ICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBjcHBsaWIuYyAoRCk6IEFkanVzdCB0byBjYWxsIENPTkNBVDIgbWFjcm8gd2l0aG91dCB3aGl0ZXNwYWNlLgoKVHVlIEFwciAgNCAxOToxNzoyMCBNRVQgRFNUIDIwMDAgIEphbiBIdWJpY2thICA8amhAc3VzZS5jej4KCgkqIGNhbGxzLmMgKEVDRl9NQUxMT0MsIEVDRl9NQVlfQkVfQUxMT0NBLCBFQ0ZfUkVUVVJOU19UV0lDRSwKCSBFQ0ZfTE9OR0pNUCwgRUNGX0ZPUktfT1JfRVhFQyk6ICBOZXcgY29uc3RhbnRzLgoJKEVDRl9JU19DT05TVCk6IFJlbmFtZSB0byBFQ0ZfQ09OU1QuCgkoc3BlY2lhbF9mdW5jdGlvbl9wKTogTWFrZSBzdGF0aWMsIGNoYW5nZSBpbnRlcmZhY2UuCgkoZmxhZ3NfZnJvbV9kZWNsX29yX3R5cGUsIHRyeV90b19pbnRlZ3JhdGUpOiBCcmVhayBvdXQgZnJvbSAuLi4KCShleHBhbmRfY2FsbCkgLi4uIGhlcmU7IGNvbnZlcnQgbnVtYmVyIG9mIHZhcmlhYmxlcyB0byBmbGFncy4KCShlbWl0X2xpYnJhcnlfY2FsbF92bHVlXzEpOiBMaWtld2lzZS4KCShzZXRqbXBfY2FsbF9wKTogTmV3IGZ1bmN0aW9uLgoJKGluaXRpYWxpemVfYXJndW1lbnRfaW5mb3JtYXRpb24pOiBBY2NlcHRzIGZsYWdzIGFzIGFyZ3VtZW50OwoJcmV0dXJuIGZsYWdzLgoJKHByZWNvbXB1dGVfYXJndW1lbnRzKTogTGlrZXdpc2UuCgkqIHRyZWUuaCAoc3BlY2lhbF9mdW5jdGlvbl9wKTogUmVtb3ZlLgoJKHNldGptcF9jYWxsX3ApOiBBZGQgcHJvdG90eXBlLgoKMjAwMC0wNC0wNCAgSmFrdWIgSmVsaW5layAgPGpha3ViQHJlZGhhdC5jb20+CgoJKiBjb25maWcvc3BhcmMvc3BhcmMuaCAoUlRYX09LX0ZPUl9PRkZTRVRfUCk6IExlYXZlIG1pbm9yIG1hcmdpbgoJc28gdGhhdCBhZGRyZXNzZXMgYXJlIG9mZnNldGFibGUgYnkgdXAgdG8gMTYgYnl0ZXMuCgkoR09fSUZfTEVHSVRJTUFURV9BRERSRVNTKTogRG9uJ3QgYWxsb3cgUkVHK1JFRyBhZGRyZXNzZXMgZm9yCglub24tb3B0aW1pemluZyBUQVJHRVRfQVJDSDMyIGluIERGIG9yIERJIG1vZGVzIGJlY2F1c2UgaXQgaXMgbm90CglvZmZzZXRhYmxlLgoKCSogY29uZmlnL3NwYXJjL3NwYXJjLm1kIChtb3ZkaV9pbnNuX3NwNjRfbm92aXMpOiBOZXcgcGF0dGVybi4KCShtb3ZkaV9pbnNuX3NwNjRfdmlzKTogUmVuYW1lZCBmcm9tIG1vdmRpX2luc25fc3A2NC4KCShtb3ZzZik6IERvbid0IGZvcmNlIGFueSBjb25zdGFudCB0byBtZW1vcnkgaWYgdGFyZ2V0IGlzIGludGVnZXIKCWhhcmQgcmVnaXN0ZXIuCglNb3ZlIGZwX3plcm9fb3BlcmFuZCBjaGVjayBiZWxvdyB0aGUgY29uc3QwX3J0eCBjaGVjay4KCShtb3Z0Zik6IExpa2V3aXNlLiBBbHNvIGFsbG93IGZwX3plcm9fb3BlcmFuZCBmb3Igc3RvcmVzIGludG8KCW1lbW9yeS4KCShtb3ZkZik6IExpa2V3aXNlLiBBbHNvIGFsbG93IGZwX3plcm9fb3BlcmFuZCBmb3Igc3RvcmVzIGludG8KCW1lbW9yeSBhbmQgaW50byBpbnRlZ2VyIGhhcmQgcmVnaXN0ZXJzLgoJKGNsZWFyX2RmLCBjbGVhcl9kZnAsIG1vdmRmX2NvbnN0X2ludHJlZ19zcDMyLAoJbW92ZGZfY29uc3RfaW50cmVnX3NwNjQpOiBSZW1vdmUuCgkobW92ZGZfaW5zbl9zcDMyLCBtb3ZkZl9ub19lX2luc25fc3AzMik6IFJlZG8gY29uc3RyYWludHMgYW5kCgljb25kaXRpb25zLgoJKG1vdmRmX25vX2VfaW5zbl92OV9zcDMyKTogTmV3IHBhdHRlcm4uCgkobW92ZGZfaW5zbl92OW9ubHkpOiBSZW1vdmUuCgkobW92ZGZfaW5zbl92OW9ubHlfbm92aXMsIG1vdmRmX2luc25fdjlvbmx5X3Zpcyk6IE5ldyBwYXR0ZXJucy4KCShtb3ZkZl9pbnNuX3NwNjQpOiBSZW1vdmUuCgkobW92ZGZfaW5zbl9zcDY0X25vdmlzLCBtb3ZkZl9pbnNuX3NwNjRfdmlzKTogTmV3IHBhdHRlcm5zLgoJKG1vdmRmX25vX2VfaW5zbl9zcDY0KTogQWxsb3cgc3RvcmluZyAwLjAgaW50byBtZW1vcnkuCgkoZm9sbG93aW5nIHNwbGl0cyk6IFJld3JpdGUgY29uZGl0aW9ucy4gQWRkIHR3byBuZXcgc3BsaXRzCglmb3Igc3RvcmluZyAwLjAgaW50byBtZW1vcnkgYW5kIHJlZ2lzdGVycy4KCShjbGVhcl90ZiwgY2xlYXJfdGYrMSwgY2xlYXJfdGZwLCBjbGVhcl90ZnArMSk6IFJlbW92ZS4KCShtb3Z0Zl9pbnNuX3NwMzIpOiBSZWRvIGNvbnN0cmFpbnRzIGFuZCBjb25kaXRpb25zLgoJKG1vdnRmX2luc25fdmlzX3NwMzIpOiBOZXcgcGF0dGVybi4KCShtb3Z0Zl9ub19lX2luc25fc3AzMik6IFJlZG8gY29uc3RyYWludHMgYW5kIGNvbmRpdGlvbnMuCgkobW92dGZfaW5zbl9ocV9zcDY0KTogTGlrZXdpc2UuCgkobW92dGZfaW5zbl9ocV92aXNfc3A2NCk6IE5ldyBwYXR0ZXJuLgoJKG1vdnRmX2luc25fc3A2NCk6IFJlZG8gY29uc3RyYWludHMgYW5kIGNvbmRpdGlvbnMuCgkobW92dGZfaW5zbl92aXNfc3A2NCk6IE5ldyBwYXR0ZXJuLgoJKG1vdnRmX25vX2VfaW5zbl9zcDY0KTogUmVkbyBjb25zdHJhaW50cyBhbmQgY29uZGl0aW9ucy4KCShtb3Z0Zl9ub19lX2luc25fc3A2NCsxKTogTmV3IHNwbGl0IGZvciBzdG9yaW5nIDAuMEwgaW50byByZWdpc3RlcnMKCW9yIG1lbW9yeS4KCSogY29uZmlnL3NwYXJjL3NwYXJjLmMgKHNwYXJjX292ZXJyaWRlX29wdGlvbnMpOiBBc3N1bWUgdjkgaWYgZWl0aGVyCgktbXZpcyBvciAtbTY0IHRvIHRha2UgZG93biB0aGUgbnVtYmVyIG9mIHZhcmlvdXMgcmVsb2FkIHBhdHRlcm5zLgoKVHVlIEFwciAgNCAwMDo0MTo1MyAyMDAwICBKZWZmcmV5IEEgTGF3ICAobGF3QGN5Z251cy5jb20pCgoJKiBwYS9wYS02NC5oOiBOZXcgZmlsZS4KCSogcGEvcGE2NC1yZWdzLmg6IE5ldyBmaWxlLgoJKiBwYS9wYTY0LXN0YXJ0Lmg6IE5ldyBmaWxlLgoJKiBwYS90LXBhNjQ6IE5ldyBmaWxlLgoJKiBwYS94bS1wYTY0aHB1eC5oOiBOZXcgZmlsZS4KCjIwMDAtMDQtMDMgIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIHNwYXJjLmMgKG91dHB1dF9yZXN0b3JlX3JlZ3MpOiBQcm90b3R5cGUuCgkoc3BhcmNfZW1pdF9mbG9hdF9saWJfY21wKTogQ29uc3RpZmljYXRpb24uCgoJKiBlbWl0LXJ0bC5jIChjb25zdF9pbnRfaHRhYl9oYXNoLCBjb25zdF9pbnRfaHRhYl9lcSk6IExpa2V3aXNlLgoKCSogcmVsb2FkMS5jIChyZWxvYWRfY3NlX2RlbGV0ZV9ub29wX3NldCwgcmVsb2FkX2NzZV9zaW1wbGlmeSk6CglQcm90b3R5cGUuCgoJKiBzaW1wbGlmeS1ydHguYyAoZW50cnlfYW5kX3J0eF9lcXVhbF9wKTogQ29uc3RpZmljYXRpb24uCgkoZ2V0X3ZhbHVlX2hhc2gsIGhhc2hfcnR4KTogTGlrZXdpc2UuCgoJKiBzc2EuYyAoY29tcHV0ZV9jb25zZXJ2YXRpdmVfcmVnX3BhcnRpdGlvbik6IFByb3RvdHlwZS4KCgkqIHRyZWUuYyAobWFya19oYXNoX2VudHJ5KTogUHJvdG90eXBlLgoKMjAwMC0wNC0wMyAgWmFjayBXZWluYmVyZyAgPHphY2tAd29sZXJ5LmN1bWIub3JnPgoKCSogYmItcmVvcmRlci5jICh2ZXJpZnlfaW5zbl9jaGFpbik6ICNpZmRlZiBvdXQgdW5sZXNzIEVOQUJMRV9DSEVDS0lORy4KCSogaTM4Ni5oIChGVU5DVElPTl9BUkdfUkVHTk9fUCk6IFJlbW92ZSB1bm5lY2Vzc2FyeSB0ZXN0IGZvciBOID49IDAuCgkqIGkzODYubWQgKGNhbGxfdmFsdWUsIGNhbGxfdmFsdWVfcG9wKTogUmVtb3ZlIHVudXNlZCB2YXJpYWJsZSAnYWRkcicuCgoJKiBnY2MuYyAoQyBzcGVjcyk6IFBhc3MgLWZuby1zaG93LWNvbHVtbiB0byB0aGUgcHJlcHJvY2Vzc29yLgoJKiBvYmpjL2xhbmctc3BlY3MuaDogTGlrZXdpc2UuCgoyMDAwLTA0LTAzICBOZWlsIEJvb3RoICA8TmVpbEJAZWFydGhsaW5nLm5ldD4KCgkqIGNwcGV4cC5jOiB3cmFwIGxvbmcgbGluZXMuICBOZXcgbWFjcm9zIENQUF9JQ0UsIFNZTlRBWF9FUlJPUgoJYW5kIFNZTlRBWF9FUlJPUjIuIFJlcGxhY2UgYCcgaW4gbWVzc2FnZXMgd2l0aCAnJy4KCShvcF90b19zdHIpOiBNYWtlIHJlLWVudHJhbnQuCgkoX2NwcF9wYXJzZV9leHByKTogSW1wbGVtZW50IG5ldyBlcnJvciBtYWNyb3MuIFVzZSB8IHJhdGhlcgoJdGhhbiB8fCB0byBsb2dpY2FsbHkgb3IgMiBib29sZWFuIGludGVnZXJzLiAgU2ltcGx5IGV4cHJlc3Npb24KCWNoZWNraW5nIHdlIGhhdmUgYSBsZWZ0IG9wZXJhbmQgaWZmIG5lZWRlZC4KCjIwMDAtMDQtMDMgIE5pY2sgQ2xpZnRvbiAgPG5pY2tjQGN5Z251cy5jb20+CgoJKiBNYWtlZmlsZS5pbiAoZGlhZ25vc3RpYy5vKTogRGVwZW5kIHVwb24gZGlhZ25vc3RpYy5jCgoyMDAwLTA0LTAzICBQaGlsaXAgQmx1bmRlbGwgIDxwaGlsYkBnbnUub3JnPgoKCSogY29uZmlnL2FybS9saW51eC1lbGYuaCAoU1VCVEFSR0VUX0VYVFJBX0xJTktfU1BFQyk6IEZpeCB0eXBvcy4KCjIwMDAtMDQtMDMgIEZlbGl4IExlZSAgPGZsZWVAY3lnbnVzLmNvbT4KCgkqIGZpeGluYy9zZXJ2ZXIuYyAoZmluZF9zaGVsbCk6IE5ldyBmdW5jdGlvbi4gIEF2b2lkICRTSEVMTC4KCShydW5fc2hlbGwpOiBVc2UgaXQuCgoyMDAwLTA0LTAzICBKb25hdGhhbiBMYXJtb3VyICA8amxhcm1vdXJAcmVkaGF0LmNvLnVrPgoKCSogTWFrZWZpbGUuaW4gKHN0bXAtaW50LWhkcnMpOiBNYWtlIGluY2x1ZGUgc3ViZGlyIGhlcmUuLi4KCShzdG1wLWZpeHByb3RvKTogLi4ucmF0aGVyIHRoYW4gaGVyZS4KCk1vbiBBcHIgIDMgMDA6NTA6MDYgMjAwMCAgSmFzb24gRWNraGFyZHQgPGpsZUBjeWdudXMuY29tPgoKCSogcGEuYyAocHJpbnRfb3BlcmFuZCk6IENvbXB1dGUgJ2Jhc2UnIG9ubHkgaW5zaWRlIHRoZSBjb2RlIHBhdGhzCgl0aGF0IHVzZSBpdC4KCjIwMDAtMDQtMDMgIEdlb2ZmcmV5IEtlYXRpbmcgIDxnZW9mZmtAY3lnbnVzLmNvbT4KCgkqIHN0b3ItbGF5b3V0LmMgKGJ5dGVfZnJvbV9wb3MpOiBVc2UgVFJVTkNfRElWX0VYUFIgcmF0aGVyIHRoYW4KCUNFSUxfRElWX0VYUFIuCgoyMDAwLTA0LTAzICBQaGlsaXBwIFRob21hcyAgPHB0aG9tYXNAc3VzZS5kZT4KCgkqIGkzODYuaCAoVEFSR0VUX1NXSVRDSEVTKTogUmVtb3ZlIGJvZ3VzIGVtcHR5IHN0cmluZ3MsIGZpeCB0eXBvLgoKTW9uIEFwciAgMyAwMDowMjo1OSAyMDAwICBCcmFkIEx1Y2llciA8bHVjaWVyQG1hdGgucHVyZHVlLmVkdT4KCgkqIE1ha2VmaWxlLmluIChhbGlhcy5vKTogRGVwZW5kIG9uICQoVFJFRV9IKS4KCjIwMDAtMDQtMDIgIFphY2sgV2VpbmJlcmcgIDx6YWNrQHdvbGVyeS5jdW1iLm9yZz4KCgkqIGNwcGluaXQuYyAoY3BwX3N0YXJ0X3JlYWQpOiBUdXJuIG9mZiAtV3RyYWRpdGlvbmFsIGlmCglwcm9jZXNzaW5nIEMrKy4KCSogY3BwbGliLmMgKF9jcHBfaGFuZGxlX2RpcmVjdGl2ZSk6IEltcHJvdmUgd2FybmluZ3MgZm9yCgl0cmFkaXRpb25hbCBDIGFuZCBpbmRlbnRlZCBkaXJlY3RpdmVzLgoKCSogZW5xdWlyZS5jLCBnc3lzbGltaXRzLmgsIGxpbWl0eS5oLCBjb25maWcvY29udmV4L2ZpeGluYy5jb252ZXgsCglmaXhpbmMvZml4aW5jLmlyaXgsIGZpeGluYy9maXhpbmMuc2NvLCBmaXhpbmMvZml4aW5jLndyYXAsCglmaXhpbmMvaW5jbGhhY2suZGVmOiBJbmRlbnQgdGhlICMgb2YgI2luY2x1ZGVfbmV4dCBvbmUgc3BhY2UuCgkqIGNwL3J0dGkuYzogVW4taW5kZW50ICNpZiBhbmQgI2VuZGlmLgoKCSogY3BwZXhwLmMgKF9jcHBfcGFyc2VfZXhwcik6IElmIGxleCByZXR1cm5zICcjJywgaXQncyBhCglzeW50YXggZXJyb3IsIGJ1dCBhbiBlcnJvciBoYXMgYWxyZWFkeSBiZWVuIHByaW50ZWQuCgkqIGNwcGxleC5jIChfY3BwX3BhcnNlX2Fzc2VydGlvbik6IEdpdmUgYSBtb3JlIHNwZWNpZmljIGVycm9yCgltZXNzYWdlIHdoZW4gY2FsbGVkIHdpdGggbm90aGluZyByZW1haW5pbmcgb24gdGhlIGxpbmUuCgkoX2NwcF9sZXhfdG9rZW4pOiBJZiBfY3BwX3BhcnNlX2Fzc2VydGlvbiBmYWlscywgcmV0dXJuIGFuCglPVEhFUiB0b2tlbiwgbm90IGFuIEFTU0VSVElPTi4KCSogY3BwbGliLmMgKGRvX2Fzc2VydCk6IFdoZW4gd2UgY3JlYXRlIGEgJ2Jhc2UnIG5vZGUsIGNsZWFyCglpdHMgYXNjaGFpbiBwb2ludGVyLgoKMjAwMC0wNC0wMiAgTmVpbCBCb290aCA8TmVpbEJAZWFydGhsaW5nLm5ldD4KCgkqIGNwcGV4cC5jOiAgTmV3IHR5cGVkZWYgb3BfdC4gIHN0cnVjdCBvcGVyYXRpb24gYW5kIHN0cnVjdAoJdG9rZW4gdXBkYXRlZCB0byB1c2UgaXQuCgkob3BfdG9fc3RyKTogTmV3IGZ1bmN0aW9uLgoJKF9jcHBfcGFyc2VfZXhwcik6IEVycm9yIG1lc3NhZ2VzIG1vZGlmaWVkIHRvIHVzZSBvcF90b19zdHIuCgoyMDAwLTA0LTAyICBNaWNoYWVsIEhheWVzICA8bS5oYXllc0BlbGVjLmNhbnRlcmJ1cnkuYWMubno+CgoJKiBjb25maWcvYzR4L2M0eC5jIChjNHhfZnVuY3Rpb25fYXJnKTogQ2hlY2sgZm9yIHZvaWRfdHlwZV9ub2RlCgliZWZvcmUgY2hlY2tpbmcgTVVTVF9QQVNTX0lOX1NUQUNLLgoKMjAwMC0wNC0wMiAgTmVpbCBCb290aCA8TmVpbEJAZWFydGhsaW5nLm5ldD4KCgkqIGNwcGV4cC5jOiAgTmV3IEZJTklTSEVEIGR1bW15IHRva2VuLiAgQ29tYmluZSBvcGVyYXRvciBpbml0aWFsCglmbGFncyBhbmQgaW5pdGlhbCBwcmlvcml0eSBpbnRvIGEgc2luZ2xlIGNvbnN0YW50LiAgTmV3CglFUVVBTElUWSBtYWNyby4gIE5ldyBvcGVyYXRvciBmbGFnIFNIT1JUX0NJUkNVSVQuCgkoX3BhcnNlX2NwcF9leHByKTogSW1wbGVtZW50IG5ldyBjb25zdGFudHMuICBUYWtlIGxlZnQgb3BlcmFuZAoJY2hlY2tzIG91dCBvZiByZWR1Y3Rpb24gbG9vcC4gIEhhbmRsZSBTSE9SVF9DSVJDVUlULiAgRW5kIG9mCglwYXJzZSBpbmRpY2F0ZWQgYnkgcmVkdWNpbmcgRklOSVNIRUQgdG9rZW4uICBSZW1vdmUgbmV3IGxpbmVzCglmcm9tIGNwcF9lcnJvciBtZXNzYWdlcy4KCjIwMDAtMDQtMDEgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBlbWl0LXJ0bC5jIChnZW5fcnR4X0NPTlNUX0lOVCk6IENyZWF0ZSBjYWNoZWQgQ09OU1RfSU5UcyBvbiB0aGUKCXBlcm1hbmVudCBvYnN0YWNrLgoKMjAwMC0wNC0wMSAgWmFjayBXZWluYmVyZyAgPHphY2tAd29sZXJ5LmN1bWIub3JnPgoKCSogY3BwbGliLmM6IEluY2x1ZGUgc3ltY2F0LmguICBBZGQgJ29yaWdpbicgZmllbGQgdG8gc3RydWN0CglkaXJlY3RpdmUuICBBZGQgb3JpZ2luIHZhbHVlcyB0byBESVJFQ1RJVkVfVEFCTEUuICBHZW5lcmF0ZQoJdGhlIHN0cmluZ3MgYW5kIGZ1bmN0aW9uIG5hbWVzIG9uIHRoZSBmbHkuICBUYWtlIHRoZSAjc2NjcwoJZW50cnkgb3V0IG9mIHRoZSB0YWJsZSBpZiBTQ0NTX0RJUkVDVElWRSBpcyBub3QgZGVmaW5lZC4KCShfY3BwX2hhbmRsZV9kaXJlY3RpdmUpOiBEZWNpZGUgaWYgdGhlICMgd2FzIGF0IHRoZSBiZWdpbm5pbmcKCW9mIHRoZSBsaW5lIGhlcmUuICBJc3N1ZSAtcGVkYW50aWMgd2FybmluZ3MgZm9yIGV4dGVuZGVkCglkaXJlY3RpdmVzIGhlcmUuICBXYXJuIGFib3V0IEsrUiBkaXJlY3RpdmVzIHdpdGggdGhlICMKCWluZGVudGVkLCBhbmQgQzg5L2V4dGVuZGVkIGRpcmVjdGl2ZXMgd2l0aCB0aGUgIyBub3QgaW5kZW50ZWQsCgloZXJlLgoJKGRvX2ltcG9ydCwgZG9faW5jbHVkZV9uZXh0LCBkb193YXJuaW5nLCBkb19pZGVudCwgZG9fc2NjcywKCWRvX2Fzc2VydCwgZG9fdW5hc3NlcnQpOiBEb24ndCBpc3N1ZSBwZWRhbnRpYyB3YXJuaW5nIGhlcmUuCgoJKiBjcHBoYXNoLmg6IEFkZCBDUFBfV1RSQURJVElPTkFMIG1hY3JvLgoJKiBjcHBsaWIuaCAoc3RydWN0IGNwcF9vcHRpb25zKTogUmVuYW1lIHdhcm5fc3RyaW5naWZ5IHRvCgl3YXJuX3RyYWRpdGlvbmFsOyB1cGRhdGUgY29tbWVudHMuCgkqIGNwcGluaXQuYyAoaGFuZGxlX29wdGlvbik6IFNldCB3YXJuX3RyYWRpdGlvbmFsIG5vdAoJd2Fybl9zdHJpbmdpZnkuCgkqIGNwcGhhc2guYzogUmVwbGFjZSBDUFBfT1BUSU9OIChwZmlsZSwgd2Fybl9zdHJpbmdpZnkpIHdpdGgKCUNQUF9XVFJBRElUSU9OQUwgKHBmaWxlKS4KCSogY3BwbGV4LmMgKF9jcHBfbGV4X3Rva2VuKTogRG9uJ3QgZGVjaWRlIGlmIGRpcmVjdGl2ZXMgc2hvdWxkCgliZSBpZ25vcmVkIGluIC10cmFkaXRpb25hbCBtb2RlIGhlcmUuCgoJKiBjcHBsZXguYzogQ29weSBJU1RBQkxFIG1hY3JvcyBmcm9tIGNwcGluaXQuYywgYW5kIGFkYXB0IHRoZW0KCXRvIGluaXRpYWxpemUgc3BlY2Nhc2VbXSBhbmQgdHJpZ3JhcGhfbWFwW10uICBEZWxldGUgYWxsCglyZWZlcmVuY2VzIHRvIHBmaWxlLT5pbnB1dF9zcGVjY2FzZS4gIEFsd2F5cyB0cmVhdCAnPycgYXMgYQoJc3BlY2lhbCBjaGFyYWN0ZXIuICBSZW1vdmUgdGFibGUtaW5pdGlhbGl6YXRpb24gY29kZSBmcm9tCglfY3BwX2luaXRfaW5wdXRfYnVmZmVyLgoKCSogY3BwbGliLmggKHN0cnVjdCBjcHBfcmVhZGVyKTogUmVtb3ZlIGlucHV0X3NwZWNjYXNlIGZpZWxkLgoJKiBjcHBpbml0LmMgKGNwcF9jbGVhbnVwKTogRG9uJ3QgZnJlZSBpbnB1dF9zcGVjY2FzZS4KCjIwMDAtMDQtMDEgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgoJKiBNYWtlZmlsZS5pbiAoU1RBR0VTVFVGRik6IFdpbGRjYXJkIGFsbCBkZWJ1Z2dpbmcgZHVtcHMgYXQgb25jZS4KCShtb3N0bHljbGVhbik6IExpa2V3aXNlLgoKCSogdG9wbGV2LmMgKHJ0bF9kdW1wLCBqdW1wX29wdF9kdW1wLCBldGMpOiBSZW1vdmUuCgkoc3RydWN0IGR1bXBfZmlsZV9pbmZvLCBlbnVtIGR1bXBfZmlsZV9pbmRleCwgZHVtcF9maWxlKTogTmV3LgoJKG9wZW5fZHVtcF9maWxlKTogVGFrZSBhIGR1bXBfZmlsZV9pbmRleCBub3QgYSBzdWZmaXgsIGFuZCBhIGRlY2wKCW5vdCBhIHN0cmluZy4gIENsZWFuIG91dCBmaWxlIGlmIHdlIGhhdmVuJ3QgeWV0IGRvbmUgc28uICBEbyBub3RoaW5nCglpZiB0aGUgZHVtcCBpc24ndCBlbmFibGVkLgoJKGNsb3NlX2R1bXBfZmlsZSk6IERvIG5vdGhpbmcgaWYgdGhlIGR1bXAgaXNuJ3Qgb3Blbi4gIER1bXAKCWdyYXBoIGRhdGEgaWYgcmVxdWVzdGVkLgoJKGR1bXBfcnRsLCBjbGVhbl9kdW1wX2ZpbGUpOiBSZW1vdmUuCgkoY29tcGlsZV9maWxlKTogRG9uJ3QgY2xlYW4gdGhlIGR1bXAgZmlsZXMuICBPbmx5IGZpbmFsaXplIC5icCBkdW1wCglpZiBmbGFnX3Rlc3RfY292ZXJhZ2Ugb3IgZmxhZ19icmFuY2hfcHJvYmFiaWxpdGllcy4gIE9ubHkgZmluYWxpemUKCS5jb21iaW5lIGR1bXAgaWYgb3B0aW1pemluZy4gIEl0ZXJhdGUgb3ZlciBkdW1wX2ZpbGUgdG8gZmluYWxpemUgdGhlCglncmFwaCBkdW1wcy4KCShyZXN0X29mX2NvbXBpbGF0aW9uKTogVXBkYXRlIGZvciBvcGVuX2R1bXBfZmlsZS9jbG9zZV9kdW1wX2ZpbGUuCglDb252ZXJ0IGFsbCB1c2VzIG9mIGR1bXBfcnRsLgoJKGRlY29kZV9kX29wdGlvbik6IEl0ZXJhdGUgb3ZlciBkdW1wX2ZpbGUgdG8gaW1wbGVtZW50ICdhJyBhbmQgdG8KCWxvY2F0ZSBwYXNzLXNwZWNpZmljIGR1bXBzLgoKMjAwMC0wNC0wMSAgTmVpbCBCb290aCA8TmVpbEJAZWFydGhsaW5nLm5ldD4KCgkqIGNwcGV4cC5jOiBSZWRlZmluZSBwcmlvcml0eSBjb25zdGFudHMuCgkoX2NwcF9wYXJzZV9leHByKTogUmVwbGFjZSBsZWZ0IGFuZCByaWdodCBwcmlvcml0eSBzY2hlbWUgd2l0aAoJc2luZ2xlIHByaW9yaXR5IGxvZ2ljLiAgTW92ZSBMT0dJQ0FMIHRvIHNhbWUgcGxhY2UgYXMgQ09NUEFSRS4KCVJlbW92ZSBib2d1cyBjaGVjayBmb3IgbXVsdGlwbGUgdW5hcnkgKy8tIG9wZXJhdG9ycy4KCjIwMDAtMDQtMDEgIE5laWwgQm9vdGggPE5laWxCQGVhcnRobGluZy5uZXQ+CgoJKiBjcHBleHAuYzogKF9jcHBfcGFyc2VfZXhwcik6IE51bWVyaWNhbCBjb25zdGFudHMgYXJlIHB1c2hlZAoJd2l0aGluIHRoZSBzd2l0Y2ggc3RhdGVtZW50LiAgQmluYXJ5IG9wZXJhdGlvbnMgYnJlYWsgb3V0IG9mCgl0aGUgc3dpdGNoIG5hdHVyYWxseS4gICcoJyB0b2tlbnMgaGFuZGxlZCBieSBmb3JjaW5nCglpbW1lZGlhdGUgc2hpZnQuICAnKScgaGFuZGxlZCBieSBmb3JjaW5nIGltbWVkaWF0ZSByZWR1Y2UgdG8KCXRoZSBwcmV2aW91cyAnKCcuICBOZXcgZXJyb3IgbWVzc2FnZXMuCgoyMDAwLTAzLTMxICBHZW9mZiBLZWF0aW5nICA8Z2VvZmZrQGN5Z251cy5jb20+CgoJKiBjb25maWcvcnM2MDAwL3JzNjAwMC5jIChwcmludF9vcGVyYW5kKTogRG9uJ3QgdXNlICVsIGZvciAnbG93CglwYXJ0JywgaXQncyBhbHJlYWR5IGluIHVzZS4gIFVzZSAlSyBpbnN0ZWFkLiAgQWRkIGEgcmV0dXJuIGF0IHRoZQoJZW5kIG9mIHdoYXQgaXMgbm93ICVLLgoJKiBjb25maWcvcnM2MDAwL3JzNjAwMC5tZCAoZWxmX2xvdyk6IFVzZSAlSyBpbnN0ZWFkIG9mICVsLgoKU2F0IEFwciAgMSAwMjowNToyOSBNRVQgRFNUIDIwMDAgIEphbiBIdWJpY2thICA8amhAc3VzZS5jej4KCgkqIGJ1aWx0aW5zLmMgIChleHBhbmRfYnVpbHRpbl9hcHBseSk6ICBQYXNzIHByb3BlciBwYXJhbWV0ZXJzIHRvCglhbGxvY2F0ZV9keW5hbWljX3N0YWNrX3NwYWNlLgoJKiBjYWxscy5jIChlbWl0X2NhbGxfMSk6ICBEbyBub3QgYWRqdXN0IHN0YWNrIHBvaW50ZXIgZm9yIFNJQiwKCXVwZGF0ZSBzdGFja19wb2ludGVyX2RlbHRhOyBkbyBub3QgdXBkYXRlIGFyZ19zaXplX3NvX2Zhci4KCShjb21wdXRlX2FyZ3VtZW50X2Jsb2NrX3NpemUpOiBVc2Ugc3RhY2tfZGVsdGEgaW5zdGVhZCBvZgoJc3RhY2tfcG9pbnRlcl9wZW5kaW5nIGFuZCBhcmdfc2l6ZV9zb19mYXIuCgkoZXhwYW5kX2NhbGwpOiBBZGQgc2FuaXR5IGNoZWNraW5nIGZvciBzdGFja19wb2ludGVyX2RlbHRhOwoJc2F2ZSBhbmQgcmVzdG9yZSBzdGFja19wb2ludGVyX2RlbHRhIGZvciBTSUIsIHVzZQoJc3RhY2tfcG9pbnRlcl9kZWx0YSBmb3IgYWxpZ25tZW50OyBkbyBub3QgdXBkYXRlIGFyZ19zcGFjZV9zb19mYXIuCgkoZW1pdF9saWJyYXJ5X2NhbGxfdmFsdWUpOiBVc2Ugc3RhY2tfcG9pbnRlcl9kZWx0YSBmb3IgYWxpZ25tZW50LgoJKHN0b3JlX29uZV9hcmcpOiBEbyBub3QgdXBkYXRlIGFyZ19zcGFjZV9zb19mYXIuCgkqIGV4cGxvdy5jIChhZGp1c3Rfc3RhY2ssIGFudGlfYWRqdXN0X3N0YWNrKTogVXBkYXRlCglzdGFja19wb2ludGVyX2RlbHRhLgoJKGFsbG9jYXRlX2R5bmFtaWNfc3RhY2tfc3BhY2UpOiBBZGQgc2FuaXR5IGNoZWNraW5nIGZvcgoJc3RhY2tfcG9pbnRlcl9kZWx0YS4KCSogZXhwci5jIChpbml0X2V4cHIsIGNsZWFyX3BlbmRpbmdfc3RhY2tfYWRqdXN0KTogQ2xlYXIKCXN0YWNrX3BvaW50ZXJfZGVsdGEuCgkoZW1pdF9wdXNoX2luc24pOiBVcGRhdGUgc3RhY2tfcG9pbnRlcl9kZWx0YS4KCSogZnVuY3Rpb24uaCAoc3RydWN0IGV4cHJfc3RhdHVzKTogQWRkIHhfc3RhY2tfcG9pbnRlcl9kZWx0YTsKCXJlbW92ZSB4X2FyZ19zcGFjZV9zb19mYXIuCgkoYXJnX3NwYWNlX3NvX2Zhcik6IFJlbW92ZS4KCShzdGFja19wb2ludGVyX2RlbHRhKTogTmV3IG1hY3JvLgoKMjAwMC0wMy0zMSAgWmFjayBXZWluYmVyZyAgPHphY2tAd29sZXJ5LmN1bWIub3JnPgoKCSogY3BwbGliLmg6IE1lcmdlIHN0cnVjdCBjcHBfb3B0aW9ucyBpbnRvIHN0cnVjdCBjcHBfcmVhZGVyLgoJUmVvcmRlciBzdHJ1Y3QgY3BwX29wdGlvbnMgYW5kIHN0cnVjdCBjcHBfcmVhZGVyIGZvciBiZXR0ZXIKCXBhY2tpbmcuICBSZXBsYWNlIENQUF9PUFRJT05TIG1hY3JvIHdpdGggQ1BQX09QVElPTiB3aGljaAoJdGFrZXMgdHdvIGFyZ3MuICBDaGFuZ2UgYWxsICdjaGFyJyBmbGFncyB0byAndW5zaWduZWQgY2hhcicuCglNb3ZlIHNob3dfY29sdW1uIGZsYWcgaW50byBzdHJ1Y3QgY3BwX29wdGlvbnMuICBEb24ndAoJcHJvdG90eXBlIGNwcF9vcHRpb25zX2luaXQuCgkqIGNwcGhhc2guaCwgY3BwZXJyb3IuYywgY3BwZXhwLmMsIGNwcGZpbGVzLmMsIGNwcGhhc2guYywKCWNwcGluaXQuYywgY3BwbGV4LmMsIGNwcGxpYi5jOgoJUmVwbGFjZSBDUFBfT1BUSU9OUyAocGZpbGUpLT53aGF0ZXZlciB3aXRoCglDUFBfT1BUSU9OIChwZmlsZSwgd2hhdGV2ZXIpLCBhbmQgbGlrZXdpc2UgZm9yCglvcHRzID0gQ1BQX09QVElPTlMgKHBmaWxlKTsgLi4uIG9wdHMtPndoYXRldmVyOwoKCSogY3BwaW5pdC5jIChtZXJnZV9pbmNsdWRlX2NoYWlucyk6IFRha2UgYSBjcHBfcmVhZGVyICouCglFeHRyYWN0IENQUF9PUFRJT04gKHBmaWxlLCBwZW5kaW5nKSBhbmQgd29yayB3aXRoIHRoYXQKCWRpcmVjdGx5LgoJKGNwcF9vcHRpb25zX2luaXQpOiBEZWxldGUuCgkoY3BwX3JlYWRlcl9pbml0KTogVHVybiBvbiBvbi1ieS1kZWZhdWx0IG9wdGlvbnMgaGVyZS4KCUFsbG9jYXRlIHRoZSBwZW5kaW5nIHN0cnVjdHVyZSBoZXJlLgoJKGNsX29wdGlvbnMsIGVudW0gb3B0X2NvZGUpOiBEZWZpbmUgdGhlc2UgZnJvbSB0aGUgc2FtZSB0YWJsZSwKCWtlcHQgaW4gYSBsYXJnZSBtYWNyby4gIEFkZCAtZnNob3ctY29sdW1uIGFuZCAtZm5vLXNob3ctY29sdW1uCglvcHRpb25zLgoKCSogY3BwZXJyb3IuYyAodl9tZXNzYWdlKTogSWYgc2hvd19jb2x1bW4gaXMgb2ZmLCBkb24ndCBwcmludAoJdGhlIGNvbHVtbiBudW1iZXIuCgoJKiBjcHBtYWluLmM6IFVwZGF0ZSBmb3IgbmV3IGludGVyZmFjZS4KCSogZml4LWhlYWRlci5jOiBMaWtld2lzZS4KCjIwMDAtMDMtMzAgIEdlb2ZmIEtlYXRpbmcgIDxnZW9mZmtAY3lnbnVzLmNvbT4KCgkqIGNvbmZpZy9yczYwMDAvdC1haXg0MyAoQVJfRkxBR1NfRk9SX1RBUkdFVCk6IEFkanVzdCBmb3IgbmV3CglkZWZpbml0aW9uLgoJKiBNYWtlZmlsZS5pbiAoQVJfRkxBR1NfRk9SX1RBUkdFVCk6IElzIG5vdyB0aGUgZmxhZ3MgdGhhdAoJYXJlIHBhc3NlZCB0byBhbnkgaW52b2NhdGlvbiBvZiBBUl9GT1JfVEFSR0VULgoJKEFSX0NSRUFURV9GT1JfVEFSR0VUKTogTmV3IG1hY3JvLgoJKEFSX0VYVFJBQ1RfRk9SX1RBUkdFVCk6IE5ldyBtYWNyby4KCShPUkRJTkFSWV9GTEFHU19UT19QQVNTKTogQWRkIEFSX0NSRUFURV9GT1JfVEFSR0VULAoJQVJfRVhUUkFDVF9GT1JfVEFSR0VULgoJKG1hbnkgcGxhY2VzKTogVXNlIEFSX0NSRUFURV9GT1JfVEFSR0VULCBBUl9FWFRSQUNUX0ZPUl9UQVJHRVQKCWluIHBsYWNlIG9mIGAkKEFSX0ZPUl9UQVJHRVQpICQoQVJfRkxBR1NfRk9SX1RBUkdFVCknIGFuZAoJYCQoQVJfRk9SX1RBUkdFVCkgeCcuICBQYXNzIEFSX0NSRUFURV9GT1JfVEFSR0VUIGFuZAoJQVJfRVhUUkFDVF9GT1JfVEFSR0VUIHRvIHN1Yi1tYWtlcy4KCjIwMDAtMDMtMzEgIE5laWwgQm9vdGggPE5laWxCQGVhcnRobGluZy5uZXQ+CgoJKiBjcHBleHAuYzogRGVsZXRlIFNLSVBfT1BFUkFORC4gIENvcnJlY3QgcHJpb3JpdHkKCVBBUkVOX0lOTkVSX1BSSU8uCgkoX2NwcF9wYXJzZV9leHByKTogQ2hlY2sgZm9yIG11bHRpcGxlIHVuYXJ5ICsvLSBvcGVyYXRvcnMuCglDb3JyZWN0IHByaW9yaXRpZXMgb2YgJzonIGFuZCAnPycuICBUcmVhdCAnKScgYXMgaGF2aW5nIGEKCXZhbHVlLglFbnN1cmUgY29uZGl0aW9uYWwgZXhwcmVzc2lvbiBpcyBub3Qgdm9pZC4KCjIwMDAtMDMtMzEgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBhbGlhcy5jIChjYW5vbl9ydHgpOiBNYWtlIGl0IGdsb2JhbC4KCShydHhfZXF1YWxfZm9yX21lbXJlZl9wKTogQ09OU1RfSU5UIGVxdWFsaXR5IGlzIG5vdyBwb2ludGVyCgllcXVhbGl0eS4KCSogY3NlLmMgKHN0cnVjdCB0YWJsZV9lbHQpOiBBZGQgY2Fub25fZXhwLgoJKGluc2VydCk6IENsZWFyIGl0LgoJKGludmFsaWRhdGUpOiBDYW5vbmljYWxpemUgZXhwcmVzc2lvbnMgb25seSBvbmNlLgoJKiBydGwuaCAoY2Fub25fcnR4KTogRGVjbGFyZS4KCjIwMDAtMDMtMzAgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBNYWtlZmlsZS5pbiAoZW1pdC1ydGwubyk6IERlcGVuZCBvbiBIQVNIVEFCX0guCgkqIGFsaWFzLmMgKHJlZ19rbm93bl92YWx1ZSk6IEFkZCBjb21tZW50cy4KCShpbml0X2FsaWFzX2FuYWx5c2lzKTogTGlrZXdpc2UuCgkqIGNzZS5jIChleHBfZXF1aXZfcCk6IENPTlNUX0lOVHMgYXJlIGVxdWFsIGlmZiB0aGV5IGhhdmUgdGhlIHNhbWUKCWFkZHJlc3MuCgkoY3NlX2Jhc2ljX2Jsb2NrKTogRml4IHR5cG8gaW4gY29tbWVudC4KCSogZW1pdC1ydGwuYzogSW5jbHVkZSBoYXNodGFiLmguCgkoY29uc3RfaW50X2h0YWIpOiBOZXcgdmFyaWFibGUuCgkoY29uc3RfaW50X2h0YWJfaGFzaCk6IE5ldyBmdW5jdGlvbi4KCShjb25zdF9pbnRfaHRhYl9lcSk6IExpa2V3aXNlLgoJKHJ0eF9odGFiX21hcmtfMSk6IExpa2V3aXNlLgoJKHJ0eF9odGFiX21hcmspOiBMaWtld2lzZS4KCShnZW5fcnR4X0NPTlNUX0lOVCk6IENhY2hlIGFsbCBDT05TVF9JTlRzLgoJKHVuc2hhcmVfYWxsX3J0eCk6IEZpeCBmb3JtYXR0aW5nLgoJKGluaXRfZW1pdF9vbmNlKTogSW5pdGlhbGl6ZSBjb25zdF9pbnRfaHRhYi4KCSogcnRsLmMgKHJ0eF9lcXVhbF9wKTogQ09OU1RfSU5UcyBhcmUgZXF1YWwgaWZmIHRoZXkgaGF2ZSB0aGUgc2FtZQoJYWRkcmVzcy4KCSogcnRsLnRleGk6IERvY3VtZW50IHRoZSBmYWN0IHRoYXQgYWxsIENPTlNUX0lOVHMgd2l0aCB0aGUgc2FtZQoJdmFsdWUgYXJlIHNoYXJlZC4KCjIwMDAtMDMtMzAgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgoJKiBhbHBoYS5oIChGVU5DVElPTl9CT1VOREFSWSk6IFJlZHVjZSB0byAxMjggYml0cy4KCjIwMDAtMDMtMzAgIFphY2sgV2VpbmJlcmcgIDx6YWNrQHdvbGVyeS5jdW1iLm9yZz4KCgkqIGNvbmZpZ3VyZS5pbjogQ29tbWVudCBvdXQgLS1lbmFibGUtYy1jcHBsaWIgc3RhbnphLgoJKiBjb25maWd1cmU6IFJlZ2VuZXJhdGUuCgpUaHUgTWFyIDMwIDA2OjMyOjUxIDIwMDAgIFJpY2hhcmQgS2VubmVyICA8a2VubmVyQHZsc2kxLnVsdHJhLm55dS5lZHU+CgoJKiBleHByLmMgKHN0b3JlX2NvbnN0cnVjdG9yKTogUHJvcGVybHkgY29tcHV0ZSBkaXNwbGFjZW1lbnQgYW5kCglhbGlnbm1lbnQgd2hlbiBvZmZzZXQgaXMgdmFyaWFibGUuCgoJKiBleHBtZWQuYyAoc3RvcmVfYml0X2ZpZWxkLCBzdG9yZV9maXhlZF9iaXRfZmllbGQpOiBGaXggbW9yZQoJY2FzZXMgb2YgYWxpZ25tZW50IGluIGJ5dGVzLgoKVGh1IE1hciAzMCAxMzozMDo0MCAyMDAwICBKZWZmcmV5IEEgTGF3ICAobGF3QGN5Z251cy5jb20pCgoJKiBjLXBhcnNlLmluIChjYXN0X2V4cHIpOiBNb3ZlIGNoYW5nZSBmcm9tIE1hcmNoIDIxIGludG8gYy1wYXJzZS5pbgoJc2luY2UgaXQgaXMgdXNlZCB0byBnZW5lcmF0ZSBjLXBhcnNlLnkuCgkqIG9iamMtcGFyc2UuYywgb2JqYy1wYXJzZS55OiBSZWdlbmVyYXRlZC4KCgkqIGZ1bmN0aW9uLmMgKGV4cGFuZF9mdW5jdGlvbl9lbmQpOiBQYXNzIGFsaWdubWVudCBhcmd1bWVudCB0bwoJZW1pdF9ibG9ja19tb3ZlIGluIGJpdHMsIG5vdCBieXRlcy4KClRodSBNYXIgMzAgMDY6MzI6NTEgMjAwMCAgUmljaGFyZCBLZW5uZXIgIDxrZW5uZXJAdmxzaTEudWx0cmEubnl1LmVkdT4KCgkqIGV4cHIuYyAobW92ZV9ieV9waWVjZXNfbmluc25zKTogRml4IG9uZSBtb3JlIG1pc3NpbmcgYWxpZ24KCWNvcnJlY3Rpb24uCgoJKiBleHBtZWQuYyAoc3RvcmVfZml4ZWRfYml0X2ZpZWxkKTogU1RSVUNUX0FMSUdOIGlzIGluIGJpdHMuCgoJKiBjYWxscy5jIChleHBhbmRfY2FsbCk6IFBhc3MgYml0IGFsaWdubWVudCB0byBtYXJrX3JlZ19wb2ludGVyLgoJKiBleHBsb3cuYyAobWVtb3J5X2FkZHJlc3MsIGFsbG9jYXRlX2R5bmFtaWNfc3RhY2tfc3BhY2UpOiBMaWtld2lzZS4KCSogZnVuY3Rpb24uYyAoYXNzaWduX3Bhcm1zKTogTGlrZXdpc2UuCgkqIGludGVncmF0ZS5jIChleHBhbmRfaW5saW5lX2Z1bmN0aW9uKTogTGlrZXdpc2UuCgkqIHN0bXQuYyAoZXhwYW5kX2RlY2wpOiBMaWtld2lzZS4KCShjb3B5X3J0eF9hbmRfc3Vic3RpdHV0ZSk6IExpa2V3aXNlLgoJKiBleHByLmMgKGV4cGFuZF9leHByLCBleHBhbmRfZXhwcl91bmFsaWduZWQpOiBMaWtld2lzZS4KCShjbGVhcl9ieV9waWVjZXMpOiBGaXggZXJyb3IgaW4gbGFzdCBjaGFuZ2UuCgkqIGVtaXQtcnRsLmMgKGluaXRfZW1pdCk6IFNldCBrbm93biByZWdpc3RlcnMgYWxpZ25tZW50IGluIGJpdHMuCgkqIGZ1bmN0aW9uLmggKHJlZ25vX3BvaW50ZXJfYWxpZ24pOiBOb3cgdW5zaWduZWQuCgkqIGNvbmZpZy9hcm0vYXJtLmMgKGFsaWduYWJsZV9tZW1vcnlfb3BlcmFuZCk6IFJFR05PX1BPSU5URVJfQUxJR04KCWlzIGluIGJpdHMuCgkqIGNvbmZpZy9pMzg2L2kzODYuYyAoYWxpZ25lZF9vcGVyYW5kKTogTGlrZXdpc2UuCgkqIGNvbmZpZy9zcGFyYy9zcGFyYy5jIChtZW1fbWluX2FsaWdubWVudCk6IExpa2V3aXNlLgoJKiBjb25maWcvYWxwaGEvYWxwaGEuYyAoYWxpZ25lZF9tZW1vcnlfb3BlcmFuZCk6IExpa2V3aXNlLgoJKHVuYWxpZ25lZF9tZW1vcnlfb3BlcmFuZCk6IExpa2V3aXNlLgoJKGFscGhhX2V4cGFuZF9ibG9ja19tb3ZlLCBhbHBoYV9leHBhbmRfYmxvY2tfY2xlYXIpOiBMaWtld2lzZS4KCUFsc28gbWFrZSBhbGlnbm1lbnRzIGFuZCBzaXplcyB1bnNpZ25lZCBhbmQgc29tZSB3aGl0ZXNwYWNlIGNsZWFudXAuCgkoYWxwaGFfdmFfc3RhcnQpOiBEbyBub3RoaW5nIGlmIFZBTElTVCdzIHR5cGUgaXMgZXJyb3JfbWFya19ub2RlLgoKCSogYnVpbHRpbnMuYyAoZ2V0X3BvaW50ZXJfYWxpZ25tZW50KTogVXNlIGhvc3RfaW50ZWdlcnAgJiB0cmVlX2xvd19jc3QuCgkoZXhwYW5kX2J1aWx0aW5fYXBwbHkpOiBQYXNzIGFsaWdubWVudCB0byBlbWl0X2Jsb2NrX21vdmUgaW4gYml0cy4KCShleHBhbmRfYnVpbHRpbl9tZW1jcHksIGV4cGFuZF9idWlsdGluX3ZhX2NvcHkpOiBMaWtld2lzZS4KCShleHBhbmRfYnVpbHRpbl9tZW1zZXQpOiBMaWtld2lzZSwgYnV0IHRvIGNsZWFyX3N0b3JhZ2UuCgkqIGNhbGxzLmMgKHNhdmVfZml4ZWRfYXJndW1lbnRfYXJlYSk6IExpa2V3aXNlLCB0byBtb3ZlX2J5X3BpZWNlcy4KCShyZXN0b3JlX2ZpeGVkX2FyZ3VtZW50X2FyZWEpOiBMaWtld2lzZS4KCShzdG9yZV91bmFsaWduZWRfYXJndW1lbnRzX2ludG9fcHNldWRvcyk6IExpa2V3aXNlLCB0byBzdG9yZV9iaXRfZmllbGQuCgkobG9hZF9yZWdpc3Rlcl9wYXJhbWV0ZXJzKTogTGlrZXdpc2UsIHRvIGVtaXRfZ3JvdXBfbG9hZC4KCShleHBhbmRfY2FsbCk6IExpa2V3aXNlLCB0byBlbWl0X2dyb3VwX3N0b3JlIGFuZCBlbWl0X2Jsb2NrX21vdmUuCgkoZW1pdF9saWJyYXJ5X2NhbGxfdmFsdWVfMSk6IExpa2V3aXNlLCB0byBlbWl0X2Jsb2NrX21vdmUuCgkoc3RvcmVfb25lX2FyZyk6IExpa2V3aXNlLCBhbmQgdG8gZW1pdF9wdXNoX2luc24uCgkqIGV4cG1lZC5jIChleHRyYWN0X2JpdF9maWVsZCk6IEFsaWdubWVudCBpcyBpbiBiaXRzLCBub3QgYnl0ZXMuCgkoZXh0cmFjdF9maXhlZF9iaXRfZmllbGQsIGV4dHJhY3Rfc3BsaXRfYml0X2ZpZWxkKTogTGlrZXdpc2UuCgkqIGV4cHIuYyAobW92ZV9ieV9waWVjZXMsIG1vdmVfYnlfcGllY2VzX25pbnNucyk6IExpa2V3aXNlLgoJKGVtaXRfYmxvY2tfbW92ZSwgZW1pdF9ncm91cF9sb2FkLCBlbWl0X2dyb3VwX3N0b3JlKTogTGlrZXdpc2UuCgkoY2xlYXJfYnlfcGllY2VzLCBjbGVhcl9zdG9yYWdlLCBlbWl0X3B1c2hfaW5zbik6IExpa2V3aXNlLgoJKGV4cGFuZF9hc3NpZ21lbnQsIHN0b3JlX2V4cHIsIHN0b3JlX2NvbnN0cnVjdG9yX2ZpZWxkKTogTGlrZXdpc2UuCgkoZXhwYW5kX2V4cHJfdW5hbGlnbmVkLCBkb19qdW1wLCBkb19jb21wYXJlX2FuZF9qdW1wKTogTGlrZXdpc2UuCgkoc3RvcmVfY29uc3RydWN0b3IsIHN0b3JlX2ZpZWxkLCBnZXRfaW5uZXJfcmVmZXJlbmNlKTogTGlrZXdpc2UuCglVc2UgaG9zdF9pbnRlZ2VycCBhbmQgdHJlZV9sb3dfY3N0OyBzaXplcyBhbmQgcG9zaXRpb25zIEhPU1RfV0lERV9JTlQuCgkoZXhwYW5kX2V4cHIsIGNhc2UgQ09NUE9ORU5UX1JFRik6IExpa2V3aXNlLgoJKGNvcHlfYmxrbW9kZV9mcm9tX3JlZ3MpOiBVc2UgVU5TSUdORURfSE9TVF9XSURFX0lOVCBmb3Igc2l6ZXMKCWFuZCBwb3NpdGlvbnM7IHJlaW5kZW50IGNvZGUuCgkqIGV4cHIuaCAoZW1pdF9jbXBfaW5zbiwgZW1pdF9jbXBfYW5kX2p1bXBfaW5zbnMpOiBBbGlnbm1lbnQgdW5zaWduZWQuCgkqIGZ1bmN0aW9uLmMgKHB1cmdlX2FkZHJlc3NvZl8xKTogUGFzcyBiaXQgYWxpZ24gdG8gc3RvcmVfYml0X2ZpZWxkLgoJKGFzc2lnbl9wYXJtcyk6IExpa2V3aXNlIHRvIGVtaXRfZ3JvdXBfc3RvcmUuCgkqIG9wdGFicy5jIChwcmVwYXJlX2NtcF9pbnNuKTogQWxpZ25tZW50IGlzIGluIGJpdHMuCgkoZW1pdF9jbXBfYW5kX2p1bXBfaW5zbnMsIGVtaXRfY21wX2luc24pOiBMaWtld2lzZSwgYW5kIGFsc28gdW5zaWduZWQuCgkqIHN0bXQuYyAoZXhwYW5kX3ZhbHVlX3JldHVybik6IFBhc3MgYWxpZ24gaW4gYml0cyB0byBlbWl0X2dyb3VwX2xvYWQuCgkoZXhwYW5kX3JldHVybik6IExpa2V3aXNlIHRvIHtleHRyYWN0LHN0b3JlfV9iaXRfZmllbGQuCgkqIHN0b3ItbGF5b3V0LmMgKGdldF9tb2RlX2FsaWdubWVudCk6IE1pbm9yIGNsZWFudXAuCgkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLmggKFNMT1dfVU5BTElHTkVEX0FDQ0VTUyk6IEFsaWduIGlzIGluIGJpdHMuCgkqIGNvbmZpZy9zaC9zaC5oIChNT1ZFX0JZX1BJRUNFU19QKTogTGlrZXdpc2UuCgoyMDAwLTAzLTI5ICBOaWNrIENsaWZ0b24gIDxuaWNrY0BjeWdudXMuY29tPgoKCSogY29uZmlnL2FybS9hcm0uaDogVW5kbyBlZmZlY3RzIG9mIHByZXZpb3VzIGRlbHRhOgoJKEFTTV9TUEVDKTogRG8gbm90IGRlZmluZS4KCShTVUJUQVJHRVRfRVhUUkFfQVNNX1NQRUMpOiBEbyBub3QgZGVmaW5lLgoKCSogY29uZmlnL2FybS9saW51eC1lbGYuaDogKFNVQlRBUkdFVF9FWFRSQV9BU01fU1BFQykgRml4Cgl0eXBvLgoKMjAwMC0wMy0yOSAgWmFjayBXZWluYmVyZyAgPHphY2tAd29sZXJ5LmN1bWIub3JnPgoKCSogY3BwaW5pdC5jIChjcHBfc3RhcnRfcmVhZCk6IENhbGwgaW5pdGlhbGl6ZV9kZXBlbmRlbmN5X291dHB1dAoJb25seSBhZnRlciByZWFkaW5nIGluIHRoZSBwcmltYXJ5IHNvdXJjZSBmaWxlLgoKMjAwMC0wMy0yOSAgR2VvZmYgS2VhdGluZyAgPGdlb2Zma0BjeWdudXMuY29tPgoKCSogYy1jb21tb24uYyAoY19jb21tb25fbm9kZXNfYW5kX2J1aWx0aW5zKTogVGhlIGZpcnN0IHBhcmFtZXRlciB0bwoJX19idWlsdGluX3ZhX3N0YXJ0IGFuZCBfX2J1aWx0aW5fdmFfY29weSBpcyBub3cgZWl0aGVyIGEgJ3ZhX2xpc3QnCglvciBhIHJlZmVyZW5jZSB0byBhIHZhX2xpc3QuCgkqIGJ1aWx0aW5zLmMgKHN0YWJpbGl6ZV92YV9saXN0KTogU2ltcGxpZnkgbm93IHdlIGRvbid0IGhhdmUgdG8KCXdvcmsgYXJvdW5kIEMgYXJyYXkgYWRkcmVzcyBkZWNheS4KCSogYy10eXBlY2suYyAoY29udmVydF9mb3JfYXNzaWdubWVudCk6IEhhbmRsZSBhc3NpZ25tZW50IHRvCglhIHJlZmVyZW5jZSBwYXJhbWV0ZXIgYnkgdGFraW5nIHRoZSBhZGRyZXNzIG9mIHRoZSBSSFMuCgkqIGdpbmNsdWRlL3N0ZGFyZy5oICh2YV9zdGFydCk6IERvbid0IHRha2UgYWRkcmVzcyBvZiBmaXJzdCBwYXJhbWV0ZXIuCgkodmFfY29weSk6IExpa2V3aXNlLgoJKF9fdmFfY29weSk6IExpa2V3aXNlLgoJKiBnaW5jbHVkZS92YXJhcmdzLmggKHZhX3N0YXJ0KTogTGlrZXdpc2UuCgkoX192YV9jb3B5KTogTGlrZXdpc2UuCgpXZWQgTWFyIDI5IDE1OjQ0OjUzIDIwMDAgIEplZmZyZXkgQSBMYXcgIChsYXdAY3lnbnVzLmNvbSkKCgkqIGkzODYvZGpncHAuaDogUmVtb3ZlIGV4dHJhbmVvdXMgIisiLgoKCSogc3RtdC5jIChzdG10X2xvb3BfbmVzdF9lbXB0eSk6IEZpeCB0aGlua28gaW4gbGFzdCBjaGFuZ2UuCgoJKiBjYWxscy5jIChleHBhbmRfY2FsbCk6IEZpeCB0eXBvIGluIGxhc3QgY2hhbmdlLgoKMjAwMC0wMy0yOSAgSmFzb24gTWVycmlsbCAgPGphc29uQGNhc2V5LmN5Z251cy5jb20+CgoJKiB0cmVlLmMgKHVuc2F2ZV9leHByXzEpOiBEb24ndCBtZXNzIHdpdGggYSBUQVJHRVRfRVhQUiB0aGF0IGhhc24ndAoJYmVlbiBleHBhbmRlZC4KCldlZCBNYXIgMjkgMTU6Mzk6MTAgMjAwMCAgUmljaGFyZCBLZW5uZXIgIDxrZW5uZXJAdmxzaTEudWx0cmEubnl1LmVkdT4KCgkqIHN0b3ItbGF5b3V0LmMgKGJpdF9mcm9tX3BvcywgYnl0ZV9mcm9tX3Bvcyk6IE5ldyBmdW5jdGlvbnMuCgkocG9zX2Zyb21fYnl0ZSwgcG9zX2Zyb21fYml0LCBub3JtYWxpemVfb2Zmc2V0KTogTGlrZXdpc2UuCgkobm9ybWFsaXplX3JsaSwgcmxpX3NpemVfc29fZmFyLCBybGlfc2l6ZV91bml0X3NvX2Zhcik6IFVzZSB0aGVtLgoJKiB0cmVlLmMgKGJpdF9wb3NpdGlvbiwgYnl0ZV9wb3NpdGlvbik6IExpa2V3aXNlLgoJKiB0cmVlLmg6IERlY2xhcmUgbmV3IGZ1bmN0aW9ucy4KCjIwMDAtMDMtMjkgIE5pY2sgQ2xpZnRvbiAgPG5pY2tjQGN5Z251cy5jb20+CgoJKiBjb25maWcvYXJtL2FybS5jOiBNaW5vciBmb3JtYXR0aW5nIGNoYW5nZXMvCgkqIGNvbmZpZy9hcm0vYXJtLmggKFNVQlRBUkdFVF9FWFRSQV9BU01fU1BFQyk6IERlZmluZSBpZiBub3QKCWFscmVhZHkgZGVmaW5lZC4KCShBU01fU1BFQyk6IERlZmluZSBpZiBub3QgYWxyZWFkeSBkZWZpbmVkLgoKMjAwMC0wMy0yOSAgWmFjayBXZWluYmVyZyAgPHphY2tAd29sZXJ5LmN1bWIub3JnPgoKCSogY3BwZmlsZXMuYyAoY3BwX3JlYWRfZmlsZSk6IERvbid0IHBhc3MgemVyby1sZW5ndGggc3RyaW5nIHRvCglfY3BwX2NhbGNfaGFzaC4KCjIwMDAtMDMtMjkgIEpha3ViIEplbGluZWsgIDxqYWt1YkByZWRoYXQuY29tPgoKCSogZHdhcmYyb3V0LmMgKGdlbl9lbnVtZXJhdGlvbl90eXBlX2RpZSk6IElmIGVudW0gaGFzIGEgbmVnYXRpdmUKCXZhbHVlLCBkb24ndCBvdXRwdXQgaXQgYXMgdW5zaWduZWQuCgpXZWQgTWFyIDI5IDEwOjUzOjQ5IDIwMDAgIEplZmZyZXkgQSBMYXcgIChsYXdAY3lnbnVzLmNvbSkKCgkqIHN0bXQuYyAoc3RtdF9sb29wX25lc3RfZW1wdHkpOiBBbGxvdyBjZnVuLT5zdG10IHRvIGJlIE5VTEwuCgoyMDAwLTAzLTI5ICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBjLWNvbW1vbi5jIChjX2NvbW1vbl9ub2Rlc19hbmRfYnVpbHRpbnMpOiBEb24ndCBzcGVjaWFsIGNhc2UKCWNwbHVzX21vZGUgd2hlbiBkZWNsYXJpbmcgYnVpbHRpbiBiemVyby9iY21wLCBhbHdheXMgYXZvaWQKCXByb3RvdHlwZSBhcmd1bWVudHMuCgoyMDAwLTAzLTI5ICBCcnVjZSBLb3JiICA8YmtvcmJAZ251Lm9yZz4KCgkqIGZpeGluYy9ta2ZpeGluYy5zaDogSW5pdGlhbGx5IHNldCB0aGUgdmFyaWFibGUgImZpeGluY2x1ZGVzIgoJdG8gYSBub24tZmlsZQoKV2VkIE1hciAyOSAxNTowODowMSBNRVQgRFNUIDIwMDAgIEphbiBIdWJpY2thICA8amhAc3VzZS5jej4KCglDb252ZXJ0IEFDQ1VNVUxBVEVfT1VUR09JTkdfQVJHUyB0byBhbiBleHByZXNzaW9uLgoJKiBjYWxscy5jIChQVVNIX0FSR1NfUkVWRVJTRUQpIENoYW5nZSB0byBleHByZXNzaW9uLgoJKEFDQ1VNVUxBVEVfT1VUR09JTkdfQVJHUywgUFVTSF9BUkdTKTogUHJvdmlkZSBkZWZhdWx0IHZhbHVlLgoJKHN0cnVjdCBhcmdfZGF0YSk6IFJlbW92ZSAjaWZkZWYgQUNDVU1VTEFURV9PVVRHT0lOR19BUkdTLgoJKHNhdmVfZml4ZWRfYXJndW1lbnRfYXJlYSwgcmVzdG9yZV9maXhlZF9hcmd1bWVudF9hcmVhKToKCWNvbmRpdGlvbml6ZSBieSAjaWZkZWYgUkVHX1BBUk1fU1RBQ0tfU1BBQ0Ugb25seS4KCShlbWl0X2NhbGwpOiBDaGFuZ2UgI2lmZGVmcyBvbiBBQ0NVTVVMQVRFX09VVEdPSU5HX0FSR1MKCXRvIGNvbmRpdGlvbnMsIGhhbmRsZSBSRVRVUk5fUE9QU19BUkdTIG9uIEFDQ1VNVUxBVEVfT1VUR09JTkdfQVJHUy4KCShwcmVjb21wdXRlX3JlZ2lzdGVyX3BhcmFtZXRlcnMpOiBBdm9pZCAjaWZkZWZzIG9uCglBQ0NVTVVMQVRFX09VVEdPSU5HX0FSR1MgYW5kIFBVU0hfQVJHU19SRVZFUlNFRC4KCShzdGlyZV9vbmVfYXJncyk6IExpa2V3aXNlLgoJKGV4cGFuZF9jYWxsKTogTGlrZXdpc2U7IGNvbmRpdGlvbml6ZSBQVVNIX1JPVU5ESU5HIGNvZGUgYnkgUFVTSF9BUkdTLgoJKGVtaXRfbGlicmFyeV9jYWxsX3ZhbHVlXzEpOiBMaWtld2lzZS4KCShjb21wdXRlX2FyZ3VtZW50X2Jsb2NrX3NpemUpOiBBbGlnbiB0byBTVEFDS19CT1VOREFSWSBvbmx5IGZvcgoJQUNDVU1VTEFURV9PVVRHT0lOR19BUkdTLgoJKiBjb21iaW5lLmMgKEFDQ1VNVUxBVEVfT1VUR09JTkdfQVJHUywgUFVTSF9BUkdTKTogUHJvdmlkZSBkZWZhdWx0Cgl2YWx1ZS4KCShub256ZXJvX2JpdHMpOiBDb25kaXRpb25pemUgUFVTSF9ST1VORElORyBjb2RlIGJ5IFVTRV9QVVNILgoJKHVzZV9jcm9zc2VzX3NldF9wKTogTGlrZXdpc2UuCgkqIGFsbCB0YXJnZXRzIChBQ0NVTVVMQVRFX09VVEdPSU5HX0FSR1MgZGVmaW5lKTogQ2hhbmdlIHRvCgkjZGVmaW5lIEFDQ1VNVUxBVEVfT1VUR09JTkdfQVJHUyAxLgoJKiBpMzg2LmMgKGl4ODZfY29tcHV0ZV9mcmFtZV9zaXplKTogSGFuZGxlIEFDQ1VNVUxBVEVfT1VUR09JTkdfQVJHUwoJZnJhbWVzLgoJKiBpMzg2LmggKE1BU0tfTk9fUFVTSF9BUkdTLCBNQVNLX0FDQ1VNVUxBVEVfT1VUR09JTkdfQVJHUyk6IE5ldwoJY29uc3RhbnRzLgoJKFRBUkdFVF9QVVNIX0FSR1MsIFRBUkdFVF9BQ0NVTVVMQVRFX09VVEdPSU5HX0FSR1MpOiBOZXcgbWFjcm9zLgoJKFRBUkdFVF9TV0lUQ0hFUyk6IEFkZCBwdXNoLWFyZ3MsIG5vLXB1c2gtYXJncywKCWFjY3VtdWxhdGUtb3V0Z29pbmctYXJncyBhbmQgbm8tYWNjdW11bGF0ZS1vdXRnb2luZy1hcmdzLgoJKEFDQ1VNVUxBVEVfT1VUR09JTkdfQVJHUywgUFVTSF9BUkdTKTogTmV3IG1hY3JvLgoJKiBleHByLmMgKEFDQ1VNVUxBVEVfT1VUR09OR19BUkdTLCBQVVNIX0FSR1MpOiBQcm92aWRlIGRlZmF1bHQuCgkocHVzaF9ibG9jayk6IEF2b2lkIGlmZGVmcyBvbiBBQ0NVTVVMQVRFX09VVEdPTkdfQVJHUwoJYW5kIFBVU0hfUk9VTkRJTkcuCgkoZW1pdF9wdXNoX2luc24pOiBMaWtld2lzZS4KCSogZmluYWwuYyAoQUNDVU1VTEFURV9PVVRHT0lOR19BUkdTKTogUHJvdmlkZSBkZWZhdWx0LgoJKGZpbmFsX3NjYW5faW5zbik6IEF2b2lkIGlmZGVmcyBvbiBBQ0NVTVVMQVRFX09VVEdPSU5HX0FSR1MuCgkqIGZ1bmN0aW9uLmMgKEFDQ1VNVUxBVEVfT1VUR09JTkdfQVJHUyk6IFByb3ZpZGUgZGVmYXVsdC4KCShTVEFDS19EWU5BTUlDX09GRlNFVCk6IERlZmluZSBjb3JyZWN0bHkgZm9yIGJvdGgKCUFDQ1VNVUxBVEVfT1VUR09JTkdfQVJHUyBhbmQgbm9ybWFsIG1vZGUuCgkqIGludm9rZS50ZXhpICgtbXB1c2hfYXJncywgLW1hY2N1bXVsYXRlLW91dGdvaW5nLWFyZ3MpOiBEb2N1bWVudC4KCSogdG0udGV4aSAoUFVTSF9BUkdTKTogRG9jdW1lbnQuCgkoQUNDVU1VTEFURV9PVVRHT0lOR19BUkdTLCBQVVNIX1JPVU5ESU5HKTogVXBkYXRlIGRvY3VtZW50YXRpb24uCgpXZWQgTWFyIDI5IDExOjUxOjEzIE1FVCBEU1QgMjAwMCAgSmFuIEh1Ymlja2EgIDxqaEBzdXNlLmN6PgoKCSogZmxhZ3MuaCAoZmxhZ19vcHRpbWl6ZV9zaWJsaW5nX2NhbGxzKTogRGVjbGFyZS4KCSogY2FsbHMuYyAoZXhwYW5kX2NhbGwpOiBGYWlsIHNpYmNhbGwgd2hlbgoJIWZsYWdfb3B0aW1pemVfc2libGluZ19jYWxscwoJKiBpbnZva2UudGV4aSAoZmxhZ19vcHRpbWl6ZV9zaWJsaW5nX2NhbGxzKTogRG9jdW1lbnQuCgkqIHRvcGxldi5jIChmbGFnX29wdGltaXplX3NpYmxpbmdfY2FsbHMpOiBOZXcgZ2xvYmFsIHZhcmlhYmxlLgoJKGZfb3B0aW9ucyk6IEFkZCBmbGFnX29wdGltaXplX3NpYmxpbmdfY2FsbHMuCgkocmVzdF9vZl9jb21waWxhdGlvbik6IENvbmRpdGlvbml6ZQoJb3B0aW1pemVfc2libGluZ19hbmRfdGFpbF9yZWN1cnNpdmVfY2FsbHMgYnkKCWZsYWdfb3B0aW1pemVfc2libGluZ19jYWxscy4KCShtYWluKTogU2V0IGZsYWdfb3B0aW1pemVfc2libGluZ19jYWxscyBmb3IgLU8yLgoJKiBzdG10LmMgKGV4cGFuZF9yZXR1cm4pOiBDb25kaXRpb25pemUgdGFpbCByZWN1cnNpb24gYnkKCWZsYWdfb3B0aW1pemVfc2libGluZ19jYWxscy4KCjIwMDAtMDMtMjkgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgoJKiBjb25maWcvaTM4Ni9hdHQuaCAoTE9DQUxfTEFCRUxfUFJFRklYKTogRGVmaW5lLgoJKEFTTV9HRU5FUkFURV9JTlRFUk5BTF9MQUJFTCwgQVNNX09VVFBVVF9JTlRFUk5BTF9MQUJFTCk6IFVzZSBpdC4KCjIwMDAtMDMtMjkgIE5hdGhhbiBTaWR3ZWxsICA8bmF0aGFuQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBleGNlcHQuYyAoYWRkX2VoX3RhYmxlX2VudHJ5KTogTWFyayB0eXBlX2luZm8ncyBhcyByZWZlcmVuY2VkLgoKMjAwMC0wMy0yOSAgQWxleGFuZHJlIE9saXZhICA8b2xpdmFAbHNkLmljLnVuaWNhbXAuYnI+CgoJKiBjb25maWcvcnM2MDAwL2FpeDQxLmggKENQUF9TUEVDKTogRGVmaW5lIF9BTlNJX0NfU09VUkNFIGlmIC1hbnNpCglpcyBnaXZlbi4KCSogY29uZmlnL3JzNjAwMC9haXg0My5oIChDUFBfU1BFQyk6IExpa2V3aXNlLgoJKiBjb25maWcvcnM2MDAwL3JzNjAwMC5oIChDUFBfU1BFQyk6IE1vdmVkIHRvLi4uCgkqIGNvbmZpZy9yczYwMDAvYWl4Lmg6IHRoZW4gbW9kaWZpZWQgbGlrZXdpc2UuCgoyMDAwLTAzLTI4ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEBjeWdudXMuY29tPgoKCSogcnRsLmg6IFJlZGlzdHJpYnV0ZSBlbnVtIHJlZ19ub3RlIGRvY3VtZW50YXRpb24uCglLaWxsIHRyYWlsaW5nIHdoaXRlc3BhY2UuCgkqIHJ0bC5jIChyZWdfbm90ZV9uYW1lKTogQWRqdXN0IHRvIG1hdGNoIGVudW0gcmVnX25vdGUgdHdlZWtzLgoJS2lsbCB0cmFpbGluZyB3aGl0ZXNwYWNlLgoKMjAwMC0wMy0yOCAgWmFjayBXZWluYmVyZyAgPHphY2tAd29sZXJ5LmN1bWIub3JnPgoKCSogY3BwZmlsZXMuYyAoaGFzaF9JSEFTSCk6IEp1c3QgcmV0dXJuIGktPmhhc2guCgkoY3BwX2luY2x1ZGVkKTogU2V0IGR1bW15Lmhhc2ggdXNpbmcgX2NwcF9jYWxjX2hhc2guICBVc2UKCWh0YWJfZmluZF93aXRoX2hhc2guCgkoY3BwX3JlYWRfZmlsZSk6IExpa2V3aXNlLgoJKGZpbmRfaW5jbHVkZV9maWxlKTogTGlrZXdpc2UuICBQcm9wZXJseSBpbml0aWFsaXplCglpaC0+bnNob3J0LiAgU2hhcmUgaWgtPm5hbWUgYW5kIGloLT5uc2hvcnQgaWYgcG9zc2libGUuCgkqIGNwcGhhc2guYyAoX2NwcF9jYWxjX2hhc2gpOiBOZXcgZnVuY3Rpb24uCgkoaGFzaF9IQVNITk9ERSk6IEp1c3QgcmV0dXJuIGgtPmhhc2guCgkoX2NwcF9sb29rdXApOiBTZXQgZHVtbXkuaGFzaCB1c2luZyBfY3BwX2NhbGNfaGFzaC4gIFVzZQoJaHRhYl9maW5kX3dpdGhfaGFzaC4KCSogY3BwaGFzaC5oOiBQcm90b3R5cGUgX2NwcF9jYWxjX2hhc2guCgkqIGNwcGluaXQuYyAoaW5pdGlhbGl6ZV9idWlsdGlucyk6IFByb3ZpZGUgYSB2YWxpZCBoYXNoCgl0byBfY3BwX21ha2VfaGFzaG5vZGUsIHVzaW5nIF9jcHBfY2FsY19oYXNoLgoKCSogY3BwaGFzaC5jIChjb2xsZWN0X2V4cGFuc2lvbik6ICMgaXMgbm90IGEgc3BlY2lhbCBjaGFyYWN0ZXIKCWluIG9iamVjdC1saWtlIG1hY3Jvcy4gIEluIC10cmFkaXRpb25hbCBtb2RlLCAvKiovIGlzIG5vdAoJdG9rZW4gcGFzdGUgYXQgdGhlIGJlZ2lubmluZyBvciBlbmQgb2YgdGhlIGxpbmUuCgkqIGNwcGxpYi5jIChkb19pbmNsdWRlLCBkb19pbXBvcnQsIGRvX2luY2x1ZGVfbmV4dCk6IElmCglwYXJzZV9pbmNsdWRlIGZhaWxzLCByZXR1cm4gaW1tZWRpYXRlbHkuCgoyMDAwLTAzLTI4ICBKYXNvbiBNZXJyaWxsICA8amFzb25AY2FzZXkuY3lnbnVzLmNvbT4KCgkqIGNvbmZpZy9hcm0vYXJtLm1kIChyZXR1cm4gcGVlcGhvbGVzKTogVXBkYXRlIHRvIHJlZmxlY3QgdGhlIG5ldwoJY2FsbCBpbnNuIHBhdHRlcm5zLgoJKiBjb25maWcvYXJtL2FybS5jIChhcm1fdm9sYXRpbGVfZnVuYyk6IEFsc28gY2hlY2sKCWN1cnJlbnRfZnVuY3Rpb25fbm90aHJvdy4KCShvdXRwdXRfcmV0dXJuX2luc3RydWN0aW9uLCBvdXRwdXRfZnVuY19wcm9sb2d1ZSk6IFVzZSBpdC4KCShhcm1fb3V0cHV0X2VwaWxvZ3VlLCBhcm1fZXhwYW5kX3Byb2xvZ3VlKTogTGlrZXdpc2UuCgoyMDAwLTAzLTI3ICBUb20gVHJvbWV5ICA8dHJvbWV5QGN5Z251cy5jb20+CgoJKiBnY2MuYyAoaGFuZGxlX2JyYWNlcyk6IEluIHt4Ki4uLn0gY2FzZSwgYnJlYWsgb3V0IG9mIGxvb3AgaWYKCXN3aXRjaCBpcyBmb3VuZC4KClR1ZSBNYXIgMjggMTE6NTU6NDggMjAwMCAgUmljaGFyZCBLZW5uZXIgIDxrZW5uZXJAdmxzaTEudWx0cmEubnl1LmVkdT4KCgkqIGV4cHIuYyAoc3RvcmVfY29uc3RydWN0b3IpOiBTSVpFIG5vdyBzaWduZWQuCglGb3IgRVhQUl9TSVpFLCBkb24ndCBldmFsdWF0ZSBzaXplOyBqdXN0IG5lZWRlZCBpZiBjb25zdGFudC4KCSogZm9sZC1jb25zdC5jIChmb2xkKTogRml4IGEgbnVtYmVyIG9mIGNhc2VzIHdoZW4gZm9sZGVkIHRyZWUgaXMKCXdyb25nIHR5cGUuCgkqIGZ1bmN0aW9uLmMgKGZsdXNoX2FkZHJlc3NvZik6IFJlZW5hYmxlLgoJKiB0cmVlLmggKGZsdXNoX2FkZHJlc3NvZik6IExpa2V3aXNlLgoJKiB0b3BsZXYuYyAoaW5kZXBlbmRlbnRfZGVjb2RlX29wdGlvbik6IExvb2sgYXQgc3RyaW5nc19wcm9jZXNzZWQuCgkqIGNvbmZpZy9hbHBoYS9hbHBoYS5oIChNSU5JTVVNX0FUT01JQ19BTElHTk1FTlQpOiBDYXN0IHRvIHVuc2lnbmVkLgoKVHVlIE1hciAyOCAwODoyOTo0NiAyMDAwICBKYW4gSHViaWNrYSAgPGpoQHN1c2UuY3o+CgoJKiBzaWJjYWxsLmMgKGlkZW50aWZ5X2NhbGxfcmV0dXJuX3ZhbHVlKTogRmluZCBsYXN0IGNhbGwgaW4gdGhlIGNoYWluOwoJQWxsb3cgc3RhY2sgYWRqdXN0bWVudCBhZnRlciBmdW5jdGlvbiBjYWxsLgoKCSogcmVnbW92ZS5jIChzdHJ1Y3QgY3NhX21lbWxpc3QpOiBNYWtlIG1lbSBmaWVsZCBydHggKi4KCShyZWNvcmRfb25lX3N0YWNrX3JlZik6IEFjY2VwdCBydHggKiBpbnN0ZWFkIG9mIHJ0eCBhcyBwYXJhbWV0ZXIuCgkodHJ5X2FwcGx5X3N0YWNrX2FkanVzdG1lbnQpOiBSZXBsYWNlIHdob2xlIE1FTSBydHguCgkoY29tYmluZV9zdGFja19hZGp1c3RtZW50c19mb3JfYmxvY2spOiBVcGRhdGUgY2FsbHMKCXRvIHJlY29yZF9vbmVfc3RhY2tfcmVmLgoKMjAwMC0wMy0yOCAgTmVpbCBCb290aCAgPE5laWxCQGVhcnRobGluZy5uZXQ+CgoJKiBjcHBsZXguYyAoX2NwcF9yZWFkX2FuZF9wcmVzY2FuKTogTWFyayBlbmQgb2YgaW5wdXQgYnVmZmVyIHdpdGgKCSdcXCcgcmF0aGVyIHRoYW4gYSBudWxsIGNoYXJhY3Rlciwgc28gbnVsbHMgYXJlIG5vdCBzcGVjaWFsLiAgRml4CgkiXFxcbiIgaGFuZGxpbmcgaW4gZW5kLW9mLWJ1ZmZlciBjb25kaXRpb25zLiAgVXNlIHRyaWdyYXBoIG1hcCB0bwoJc3BlZWQgdHJpZ3JhcGggY29udmVyc2lvbi4KCShfY3BwX2luaXRfaW5wdXRfYnVmZmVyKTogSW5pdGlhbGl6ZSB0cmlncmFwaCBtYXAuCgoyMDAwLTAzLTI3ICBBbGFuIE1vZHJhICA8YWxhbkBsaW51eGNhcmUuY29tLmF1PgoKCSogY29uZmlnL2kzODYvaTM4Ni5jIChvdXRwdXRfMzg3X2JpbmFyeV9vcCk6IENvcnJlY3QgaW50ZWwKCW1vZGUgYXNzZW1ibHkgb3V0cHV0LCBhbmQgYWRkIHNwYWNlcyBhZnRlciBjb21tYXMgaW4gQVQmVAoJb3V0cHV0LiAgQ29ycmVjdCBVbml4d2FyZSBhc3NlbWJsZXIgY29tbWVudC4gIERvY3VtZW50IGlucHV0Cgljb25zdHJhaW50cy4gIENvbW1lbnQgZnAgb3BlcmF0aW9ucy4gIFJlZHVjZSBwcm9mbGlnYXRlIGJ1ZmZlcgoJc2l6ZS4gIFJlbW92ZSBleHRyYW5lb3VzIGFib3J0LiAgTG9jYWxpemUgdGVtcCB2YXIuCgkoU1lTVjM4Nl9DT01QQVQpOiBEZWZpbmUuICBBZGQgIVNZU1YzODZfQ09NUEFUIGNvZGUuCgkob3V0cHV0X2ZpeF90cnVuYyk6IEFkZCBzcGFjZXMgYWZ0ZXIgY29tbWFzIGluIGFzc2VtYmx5IG91dHB1dC4KCjIwMDAtMDMtMjcgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgoJKiBpMzg2LXByb3Rvcy5oIChpeDg2X21hdGNoX2NjbW9kZSk6IERlY2xhcmUuCgkqIGkzODYuYyAoaXg4Nl9tYXRjaF9jY21vZGUpOiBOZXcuCgkoaXg4Nl9leHBhbmRfZnBfY29tcGFyZSk6IFVwZGF0ZSBmb3IgcGF0dGVybiByZW5hbWVzLgoJKGl4ODZfZXhwYW5kX3N0cmxlbnNpX3Vucm9sbF8xKTogTGlrZXdpc2UuCgkqIGkzODYuaCAoRVhUUkFfQ0NfTU9ERVMpOiBBZGQgQ0NaLgoJKFNFTEVDVF9DQ19NT0RFKTogVXNlIGl0IGZvciBFUS9ORSB6ZXJvLgoJKiBpMzg2Lm1kIChjbXBzaV9jY3pfMSk6IE5ldy4KCShjbXBxaV9jY3pfMSk6IE5ldy4KCSgqdGVzdHNpX2Njel8xKTogTmV3LgoJKHRlc3RxaV9jY3pfMSk6IE5ldy4KCShjbXBzaV9jY25vXzEpOiBSZW5hbWUgZnJvbSBjbXBzaV8wLgoJKHRlc3RzaV9jY25vXzEpOiBSZW5hbWUgZnJvbSB0ZXN0c2lfMS4KCSh0ZXN0cWlfY2Nub18xKTogUmVuYW1lIGZyb20gdGVzdHFpXzEuCgkoKnRlc3RxaV9leHRfY2N6XzApOiBSZW5hbWUgZnJvbSB0ZXN0cWlfZXh0XzAuCgkodGVzdHFpX2V4dF9jY25vXzApOiBSZW5hbWUgZnJvbSAqdGVzdHFpX2V4dF8xLgoJKCpjbXBoaV8wKTogVXNlIGl4ODZfbWF0Y2hfY2Ntb2RlLgoJKCpjbXBxaV9leHRfMiwgKmFkZHNpXzIsICphZGRoaV8yLCAqYWRkcWlfMik6IExpa2V3aXNlLgoJKCpzdWJzaV8yLCAqc3ViaGlfMiwgKnN1YnFpXzIsICp0ZXN0aGlfMSk6IExpa2V3aXNlLgoJKCp0ZXN0cWlfZXh0XzEsICp0ZXN0cWlfZXh0XzIsICp0ZXN0cWlfZXh0XzMpOiBMaWtld2lzZS4KCSgqYW5kc2lfMiwgKmFuZGhpXzIsICphbmRxaV8yLCAqYW5kcWlfZXh0XzBfY2MpOiBMaWtld2lzZS4KCSgqaW9yc2lfMiwgKmlvcmhpXzIsICppb3JxaV8yKTogTGlrZXdpc2UuCgkoKnhvcnNpXzIsICp4b3JoaV8yLCAqeG9ycWlfY2NfMSk6IExpa2V3aXNlLgoJKCpvbmVfY21wbHNpMl8yLCAqb25lX2NtcGxoaTJfMiwgKm9uZV9jbXBscWkyXzIpOiBMaWtld2lzZS4KCSgqYXNobHNpM19jbXBubywgKmFzaGxoaTNfY21wbm8sICphc2hscWkzX2NtcG5vKTogTGlrZXdpc2UuCgkoKmFzaHJzaTNfY21wbm8sICphc2hyaGkzX2NtcG5vLCAqYXNocnFpM19jbXBubyk6IExpa2V3aXNlLgoJKCpsc2hyc2kzX2NtcG5vLCAqbHNocmhpM19jbXBubywgKmxzaHJxaTNfY21wbm8pOiBMaWtld2lzZS4KCShhcHByb3ByaWF0ZSBwZWVwaG9sZXMpOiBMaWtld2lzZS4KCSgqY21waGlfMSwgKmNtcHFpX2Njbm9fMSwgKmNtcHFpXzEpOiBTdGFyIG91dCBuYW1lLgoJKCpzdWJzaV8zLCAqc3ViaGlfMywgKnN1YnFpXzMpOiBSZW1vdmUuCgkoKm5lZ2RpMl8xKzEgc3BsaXR0ZXIpOiBVc2UgQ0NaIGZvciBuZWcgcGF0dGVybnMuCgkoKm5lZ3NpMl9jbXAsICpuZWdoaTJfY21wLCAqbmVncWkyX2NtcCk6IFJlbW92ZS4KCSgqbmVnc2kyX2NtcHopOiBSZW5hbWUgZnJvbSAqbmVnc2kyX2NtcG5vLCB1c2UgQ0NaLgoJKCpuZWdoaTJfY21weiwgKm5lZ3FpMl9jbXB6KTogU2ltaWxhcmx5LgoJKHg4Nl9zaGlmdF9hZGpfMSk6IFVzZSBDQ1ouCgkoKmRicmFfZ2UrMSwgKmRicmFfZ2UrMiwgZmZzc2kyLCBmZnNzaV8xKTogTGlrZXdpc2UuCgoyMDAwLTAzLTI3ICBTdGFuIENveCAgPHNjb3hAY3lnbnVzLmNvbT4KCgkqIHJlc291cmNlLmggKG1hcmtfcmVzb3VyY2VfdHlwZSk6IE5ldy4KCSogcmVzb3VyY2UuYyAoZmluZF9kZWFkX29yX3NldF9yZWdpc3RlcnMsIG1hcmtfdGFyZ2V0X2xpdmVfcmVncywKCWZpbmRfZnJlZV9yZWdpc3Rlcik6IFVzZSBtYXJrX3Jlc291cmNlX3R5cGUuCgkobWFya19zZXRfcmVzb3VyY2VzKTogQ2hhbmdlIGluY2x1ZGVfZGVsYXllZF9lZmZlY3RzCgl0byBtYXJrX3Jlc291cmNlX3R5cGUuCgkqIHJlb3JnLmMgKHN0ZWFsX2RlbGF5X2xpc3RfZnJvbV90YXJnZXQsIHRyeV9tZXJnZV9kZWxheV9pbnNucywKCXJlZHVuZGFudF9pbnNuLCBmaWxsX3NpbXBsZV9kZWxheV9zbG90cywgZmlsbF9zbG90c19mcm9tX3RocmVhZCk6CglVc2UgbWFya19yZXNvdXJjZV90eXBlLgoKMjAwMC0wMy0yNyAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAY3lnbnVzLmNvbT4KCgkqIGkzODYubWQgKGNhbGxfcG9wXzAsIGNhbGxfdmFsdWVfcG9wXzApOiBOZXcuCgkoY2FsbF9wb3BfMSk6IFJlbW92ZSBjb25zdHJhaW50IGZyb20gdW51c2VkIGFyZy4gIFN1cHBvcnQgc2liY2FsbHMuCgkoY2FsbF92YWx1ZV9wb3BfMSk6IExpa2V3aXNlLgoJKGNhbGxfMCwgY2FsbF92YWx1ZV8wKTogTmV3LgoJKGNhbGxfMSwgY2FsbF92YWx1ZV8xKTogUmVtb3ZlIGNvbnN0cmFpbnQgZnJvbSB1bnVzZWQgYXJnLgoKMjAwMC0wMy0yNyAgTmljayBDbGlmdG9uICA8bmlja2NAY3lnbnVzLmNvbT4KCgkqIGludm9rZS50ZXhpIChTcGVjIEZpbGVzKTogRG9jdW1lbnQgbmV3IHNwZWMgJSBjb21tYW5kIGNyZWF0ZWQgYnkKCVRvbSBUcm9tZXkncyByZWNlbnQgcGF0Y2guCgoyMDAwLTAzLTI3ICBKYWt1YiBKZWxpbmVrICA8amFrdWJAcmVkaGF0LmNvbT4KCgkqIGxpYmdjYzIuaCAoTUlOX1VOSVRTX1BFUl9XT1JEKTogRGVmaW5lIHRvIFVOSVRTX1BFUl9XT1JECglpZiBub3QgZGVmaW5lZC4KCk1vbiBNYXIgMjcgMDY6MDQ6MjIgMjAwMCAgUmljaGFyZCBLZW5uZXIgIDxrZW5uZXJAdmxzaTEudWx0cmEubnl1LmVkdT4KCgkqIGV4cHIuYyAoZXhwYW5kX2Fzc2lnbm1lbnQpOiBGaXggdHlwbyBpbiBsYXN0IGNoYW5nZS4KCgkqIGxpYmdjYzIuaDogVXNlIE1JTl9VTklUU19QRVJfV09SRCwgbm90IFVOSVRTX1BFUl9XT1JELgoKU3VuIE1hciAyNiAyMDoxNToyNiAyMDAwICBSaWNoYXJkIEtlbm5lciAgPGtlbm5lckB2bHNpMS51bHRyYS5ueXUuZWR1PgoKCSogYy1jb252ZXJ0LmMgKGNvbnZlcnQpOiBSZXR1cm4gaWYgb3V0cHV0IG9yIGlucHV0IHR5cGUgaXMgRVJST1JfTUFSSy4KCSogYy1kZWNsLmMgKGR1cGxpY2F0ZV9kZWNscyk6IE9ubHkgbG9vayBhdCBERUNMX0JVSUxUX0lOX05PTkFOU0kKCWFuZCBERUNMX0lOTElORSBpZiBGVU5DVElPTl9ERUNMLgoJKHB1c2hkZWNsLCByZWRlY2xhcmF0aW9uX2Vycm9yX21lc3NhZ2UpOiBMaWtld2lzZSwgZm9yIERFQ0xfSU5MSU5FLgoJKHN0b3JlX3Bhcm1fZGVjbHMpOiBDaGVjayBmb3IgdHlwZSBvZiBQQVJNX0RFQ0wgYmVpbmcgRVJST1JfTUFSSy4KCVVzZSBERUNMX1dFQUssIG5vdCBERUNMX1JFU1VMVCwgdG8gZmxhZyBmb3IgYWxyZWFkeSBzZWVuLgoJKGNvbWJpbmVfcGFybV9kZWNscyk6IExpa2V3aXNlLgoJKiBnZ2MtY29tbW9uLmMgKGdjY19tYXJrX3RyZWVfY2hpbGRyZW4sIGNhc2UgJ2QnKTogVXNlIERFQ0xfUkVTVUxUX0ZMRC4KCSogcHJpbnQtdHJlZS5jIChwcmludF9ub2RlKTogTGlrZXdpc2UuCglPbmx5IHRlc3QgREVDTF9QQUNLRUQsIERFQ0xfSU5MSU5FLCBERUNMX0JJVF9GSUVMRCwgYW5kCglERUNMX1RSQU5TUEFSRU5UX1VOSU9OIG9uIHByb3BlciBkZWNsIHR5cGVzLgoJUHJvcGVybHkgaGFuZGx5IERFQ0xfSU5DT01JTkdfUlRMIGFuZCBERUNMX1NBVkVEX0lOU05TLgoJKiBzdG9yLWxheW91dC5jIChsYXlvdXRfZGVjbCk6IE9ubHkgY2hlY2sgREVDTF9QQUNLRUQgYW5kCglERUNMX0JJVF9GSUVMRCBvZiBGSUVMRF9ERUNMLgoJKiB0cmVlLmggKERFQ0xfUkVTVUxUX0ZMRCk6IE5ldyBtYWNyby4KCgkqIGV4cHIuYyAoZXhwYW5kX2Fzc2lnbm1lbnQpOiBBZGQgY29kZSB0byBoYW5kbGUgdmFyaWFibGUtc2l6ZWQKCUJMS21vZGUgY2FzZS4KCjIwMDAtMDMtMjYgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgoJKiBjYWxscy5jIChleHBhbmRfY2FsbCk6IFBhc3MgcGFybXMgbm90IG9yaWdpbmFsIGV4cCB0bwoJb3B0aW1pemVfdGFpbF9yZWN1cnNpb24uICBNaW5kIHJldHVybiB2YWx1ZSBpbnN0ZWFkIG9mIGxvb2tpbmcKCWZvciBhIGJhcnJpZXIuCgkqIHN0bXQuYyAob3B0aW1pemVfdGFpbF9yZWN1cnNpb24pOiBUYWtlIHBhcmFtZXRlciBsaXN0LCBub3QgZW50aXJlCgljYWxsX2V4cHIuICBNb3ZlIGNoZWNrcyBmb3IgY2FsbF9leHByIGFuZCBjdXJyZW50X2Z1bmN0aW9uX2RlY2wgLi4uCgkoZXhwYW5kX3JldHVybik6IC4uLiBoZXJlLgoKMjAwMC0wMy0yNiAgVG9tIFRyb21leSAgPHRyb21leUBjeWdudXMuY29tPgoKCSogZ2NjLmMgKGhhbmRsZV9icmFjZXMpOiBSZWNvZ25pemUgYCV7PFN9JyBjb25zdHJ1Y3QuCgkoU1dJVENIX09LLCBTV0lUQ0hfRkFMU0UsIFNXSVRDSF9JR05PUkUsIFNXSVRDSF9MSVZFKTogTmV3CglkZWZpbmVzLgoJKHByb2Nlc3NfY29tbWFuZCk6IFVzZSB0aGVtLgoJKGNoZWNrX2xpdmVfc3dpdGNoKTogTGlrZXdpc2UuCgkoZ2l2ZV9zd2l0Y2gpOiBTa2lwIGlnbm9yZWQgc3dpdGNoZXMuCgoyMDAwLTAzLTI2ICBKYW4gSHViaWNrYSAgPGpoQHN1c2UuY3o+CgoJKiBqdW1wLmMgKGp1bXBfb3B0aW1pemVfMSk6IEZpeCB0eXBvIGluIGVsaWRlIG9wdGltaXphdGlvbnMKCWZvciBtaW5pbWFsIGp1bXAgcGFzcyB0ZXN0LgoKMjAwMC0wMy0yNiAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGludGVncmF0ZS5jIChmdW5jdGlvbl9jYW5ub3RfaW5saW5lX3ApOiBEbyBpbmxpbmUgZnVuY3Rpb25zIHRoYXQKCXJldHVybiBgdm9pZCcuCgpTdW4gTWFyIDI2IDExOjM3OjU1IDIwMDAgIFJpY2hhcmQgS2VubmVyICA8a2VubmVyQHZsc2kxLnVsdHJhLm55dS5lZHU+CgoJKiBzdG9yLWxheW91dC5jIChsYXlvdXRfdHlwZSwgc2V0X3NpemV0eXBlKTogZWFybHlfdHlwZV9saXN0IGlzCglub3cgYSBsaXN0IG9mIFRSRUVfTElTVCBlbnRyaWVzLCBub3QgdHlwZXMuCgkqIHRyZWUuYyAoYnVpbGRfY29tbW9uX3RyZWVfbm9kZXNfMik6IEVsaW1pbmF0ZSBkdXBsaWF0ZSB0eXBlIHNldHMuCgoJKiBleHBtZWQuYyAoZXh0cmFjdF9iaXRfZmllbGQpOiBFbnN1cmUgQklUU19QRVJfV09SRCBpcyBzaWduZWQgaW4gTUFYLgoJKiBjb25maWcvYXJtL3BlLmMgKGFybV9wZV9yZXR1cm5faW5fbWVtb3J5KTogVXNlIGhvc3RfaW50ZWdlcnAgYW5kCglpbnRfYml0X3Bvc2l0aW9uLgoJKiBjb25maWcvbWlwcy9taXBzLmMgKGZ1bmN0aW9uX2FyZyk6IExpa2V3aXNlOyBhbHNvIHJlbW92ZSBjYXN0CglhbmQgbWFrZSB2YXJpYWJsZXMgdW5zaWduZWQgb3IgSE9TVF9XSURFX0lOVCBhbmQgdXNlIHRyZWVfbG93X2NzdC4KCShtaXBzX2Z1bmN0aW9uX3ZhbHVlKTogVXNlIGludF9ieXRlX3Bvc2l0aW9uIGFuZCBtYWtlIEhPU1RfV0lERV9JTlQuCgkqIGNvbmZpZy9taXBzL2FiaTY0LmggKFNFVFVQX0lOQ09NSU5HX1ZBUkFSR1MpOiBPZmZzZXRzIGFyZSB1bnNpZ25lZC4KCSogY29uZmlnL21pcHMvbWlwcy5oIChCSVRTX1BFUl9XT1JELCBVTklUU19QRVJfV09SRCk6IENhc3QgdG8gdW5zaWduZWQuCgkoVU5JVFNfUEVSX0ZQUkVHLCBJTlRfVFlQRV9TSVpFLCBMT05HX1RZUEVfU0laRSk6IExpa2V3aXNlLgoJKFBPSU5URVJfU0laRSwgUE9JTlRFUl9CT1VOREFSWSxQQVJNX0JPVU5EQVJZKTogTGlrZXdpc2UuCgkoR1BfUkVHX1AsIEZQX1JFR19QLCBNRF9SRUdfUCwgU1RfUkVHX1ApOiBFbnN1cmUgc3VidHJhY3Rpb24gc2lnbmVkLgoJKHN0cnVjdCBtaXBzX2FyZyk6IGFyZ19udW1iZXIsIGFyZ193b3JkcywgZnBfYXJnX3dvcmRzLCBhbmQKCW51bV9hZGp1c3RzIG5vdyB1bnNpZ25lZC4KCShGVU5DVElPTl9BUkdfQk9VTkRBUlkpOiBSZW1vdmUgdW5uZWVkZWQgY2FzdC4KCSogY29uZmlnL3NwYXJjL3NwYXJjLmMgKHN0cnVjdCBmdW5jdGlvbl9hcmdfcmVjb3JkX3ZhbHVlX3Bhcm1zKToKCU5SRUdTIG5vdyB1bnNpZ25lZC4KCShmdW5jdGlvbl9hcmdfcmVjb3JkX3ZhbHVlXzEpOiBTVEFSVEJJVFBPUyBhcmcgbm93IEhPU1RfV0lERV9JTlQKCWFzIGlzIEJJVFBPUyB2YXJpYWJsZTsgdXNlIGhvc3RfaW50ZWdlcnAgYW5kIGludF9iaXRfcG9zaXRpb24uCgkoZnVuY3Rpb25fYXJnX3JlY29yZF92YWx1ZV8yKTogTGlrZXdpc2UuCgkoZnVuY3Rpb25fYXJnX3JlY29yZF92YWx1ZV8zKTogQXJnIEJJVFBPUyBub3cgSE9TVF9XSURFX0lOVC4KCVZhcmlhYmxlIFJFR05PIG5vdyB1bnNpZ25lZC4KCShmdW5jdGlvbl9hcmdfcmVjb3JkX3ZhbHVlKTogTlJFR1Mgbm93IHVuc2lnbmVkLgoKMjAwMC0wMy0yNiAgQmVybmQgU2NobWlkdCAgPGJlcm5kc0BjeWdudXMuY28udWs+CgoJKiBqdW1wLmMgKG1hcmtfYWxsX2xhYmVscyk6IEhhbmRsZSBDQUxMX1BMQUNFSE9MREVScy4KClNhdCBNYXIgMjUgMDk6MTI6MTAgMjAwMCAgUmljaGFyZCBLZW5uZXIgIDxrZW5uZXJAdmxzaTEudWx0cmEubnl1LmVkdT4KCgkqIFJld29yayBmaWVsZHMgdXNlZCB0byBkZXNjcmliZSBwb3NpdGlvbnMgb2YgYml0ZmllbGRzIGFuZAoJbW9kaWZ5IHNpemVzIHRvIGJlIHVuc2lnbmVkIGFuZCB1c2UgSE9TVF9XSURFX0lOVC4KCSogYWxpYXMuYyAocmVnX2tub3duX3ZhbHVlX3NpemUpOiBOb3cgdW5zaWduZWQuCgkqIGMtdHlwZWNrLmMgKGJ1aWxkX3VuYXJ5X29wLCBjYXNlIEFERFJfRVhQUik6IFVzZSBieXRlX3Bvc2l0aW9uLgoJKHJlYWxseV9zdGFydF9pbmNyZW1lbnRhbF9pbml0KTogVXNlIGJpdHNpemVfemVyb19ub2RlLgoJKHB1c2hfaW5pdF9sZXZlbCwgcG9wX2luaXRfbGV2ZWwsIG91dHB1dF9pbml0X2VsZW1lbnQpOiBMaWtld2lzZS4KCVVzZSBiaXRzaXplX3VuaXRfbm9kZSBhbmQgYml0c2l6ZV9vbmVfbm9kZS4KCShvdXRwdXRfcGVuZGluZ19pbml0X2VsZW1lbnRzLCBwcm9jZXNzX2luaXRfZWxlbWVudCk6IExpa2V3aXNlLgoJKiBjb21iaW5lLmMgKGNvbWJpbmVfbWF4X3JlZ25vLCByZWdfc2lnbl9iaXRfY29waWVzKTogTm93IHVuc2lnbmVkLgoJKG1ha2VfZXh0cmFjdGlvbik6IFBvc2l0aW9uIGFuZCBsZW5ndGggSE9TVF9XSURFX0lOVCBhbmQgdW5zaWduZWQKCUhPU1RfV0lERV9JTlQsIHJlc3BlY3RpdmVseS4KCShnZXRfcG9zX2Zyb21fbWFzayk6IFBhc3NlZCBpbiB2YWx1ZSBpcyB1bnNpZ25lZCBIT1NUX1dJREVfSU5ULgoJKG51bV9zaWduX2JpdF9jb3BpZXMpOiBSZXR1cm5zIHVuc2lnbmVkLgoJQklUV0lEVEggbm93IHVuc2lnbmVkOyByZXdvcmsgYXJpdGhtZXRpYy4KCVJlbW92ZSByZWN1cnNpdmUgY2FsbCBmcm9tIGFyZyB0byBNQVguCgkoY29tYmluZV9pbnN0cnVjdGlvbnMsIGluaXRfcmVnX2xhc3RfYXJyYXlzKTogTlJFR1Mgbm93IHVuc2lnbmVkLgoJKHNldHVwX2luY29taW5nX3Byb21vdGlvbnMsIGNhbl9jb21iaW5lX3AsIHRyeV9jb21iaW5lLCBzaW1wbGlmeV9zZXQpOgoJUkVHTk8gbm93IHVuc2lnbmVkLgoJKHNldF9ub256ZXJvX2JpdF9hbmRfc2lnbl9jb3BpZXMpOiBOVU0gbm93IHVuc2lnbmVkLgoJKGZpbmRfc3BsaXRfcG9pbnQsIGV4cGFuZF9jb21wb3VuZF9vcGVyYXRpb24sIG1ha2VfZXh0cmFjdGlvbik6IExFTgoJbm93IHVuc2lnbmVkIEhPU1RfV0lERV9JTlQsIFBPUyBub3cgSE9TVF9XSURFX0lOVC4KCShtYWtlX2ZpZWxkX2Fzc2lnbm1lbnQpOiBMaWtld2lzZS4KCShjb21iaW5lX3NpbXBsaWZ5X3J0eCk6IEFkZCBjYXN0LgoJKGV4cGFuZF9jb21wb3VuZF9vcGVyYXRpb24pOiBNT0RFV0lEVEggbm93IHVuc2lnbmVkOyByZXdvcmsgYXJpdGhtZXRpYy4KCShmb3JjZV90b19tb2RlKTogV0lEVEggbm93IHVuc2lnbmVkOyBhZGQgY2FzdC4KCShpZl90aGVuX2Vsc2VfY29uZCk6IFNJWkUgbm93IHVuc2lnbmVkLgoJKG5vbnplcm9fYml0cyk6IE1PREVfV0lEVEgsIFJFU1VMVF9XSURUSCwgYW5kIFdJRFRIIG5vdyB1bnNpZ25lZC4KCShleHRlbmRlZF9jb3VudCk6IE5vdyByZXR1cm5zIHVuc2lnbmVkLgoJKHNpbXBsaWZ5X3NoaWZ0X2NvbnN0KTogQ09VTlQgdW5zaWduZWQ7IGFyZyBpcyBub3cgSU5QVVRfQ09VTlQuCglBZGQgU0lHTkVEX0NPVU5UIHZhcmlhYmxlOyBNT0RFX1dPUkRTIGFuZCBGSVJTVF9DT1VOVCBub3cgdW5zaWduZWQuCgkoc2ltcGxpZnlfY29tcGFyaXNvbik6IE1PREVfV0lEVEggbm93IHVuc2lnbmVkLgoJKHVwZGF0ZV90YWJsZV90aWNrKTogUkVHTk8gYW5kIEVORFJFR05PIG5vdyB1bnNpZ25lZDsgbmV3IHZhciBSLgoJKG1hcmtfdXNlZF9yZWdzX2NvbWJpbmUpOiBMaWtld2lzZTsgcmV3b3JrIGFyaXRobWV0aWMuCgkocmVjb3JkX3ZhbHVlX2Zvcl9yZWcpOiBSRUdOTywgRU5EUkVHTk8sIGFuZCBJIG5vdyB1bnNpZ25lZC4KCShyZWNvcmRfZGVhZF9hbmRfc2V0X3JlZ3MsIHJlZ19kZWFkX2F0X3AsIGRpc3RyaWJ1dGVfbm90ZXMpOiBMaWtld2lzZS4KCShyZWNvcmRfcHJvbW90ZWRfdmFsdWUpOiBSRUdOTyBub3cgdW5zaWduZWQuCgkoZ2V0X2xhc3RfdmFsdWVfdmFsaWRhdGUpOiBSRUdOTywgRU5EUkVHTk8sIGFuZCBKIG5vdyB1bnNpZ25lZC4KCShnZXRfbGFzdF92YWx1ZSk6IFJFR05PIG5vdyB1bnNpZ25lZC4KCSh1c2VfY3Jvc3Nlc19zZXRfcCk6IFJFR05PIGFuZCBFTkRSRUdOTyBub3cgdW5zaWduZWQuCgkocmVnX2RlYWRfcmVnbm8sIHJlZ19kZWFkX2VuZHJlZ25vKTogTm93IHVuc2lnbmVkLgoJKHJlbW92ZV9kZWF0aCk6IEFyZyBSRUdOTyBub3cgdW5zaWduZWQuCgkobW92ZV9kZWF0aHMpOiAgUkVHTk8sIERFQURSRUdOTywgREVBREVORCwgT1VSRU5ELCBhbmQgSSBub3cgdW5zaWduZWQuCgkocmVnX2JpdGZpZWxkX3RhcmdldF9wKTogUkVHTk8sIFJFR05PLCBFTkRSRUdOTywgYW5kIEVORFRSRUdOTwoJbm93IHVuc2lnbmVkLgoJKiBjb252ZXJ0LmMgKGNvbnZlcnRfdG9faW50ZWdlcik6IElOUFJFQyBhbmQgT1VUUFJFQyBub3cgdW5zaWduZWQuCgkqIGNzZS5jIChzdHJ1Y3QgcXR5X3RhYmxlX2VsZW0pOiBGSVJTVF9SRUcgYW5kIExBU1RfUkVHIG5vdyB1bnNpZ25lZC4KCShzdHJ1Y3QgY3NlX3JlZ19pbmZvKTogUkVHTk8gbm93IHVuc2lnbmVkLgoJKGNhY2hlZF9yZWdubyk6IE5vdyB1bnNpZ25lZC4KCShSRUdOT19RVFlfVkFMSURfUCk6IEFkZCBjYXN0LgoJKG1ha2VfbmV3X3F0eSwgbWFrZV9yZWdzX2VxdiwgZGVsZXRlX3JlZ19lcWl2KTogUmVnbm8gYXJncyB1bnNpZ25lZC4KCShyZW1vdmVfaW52YWxpZF9yZWdzKTogTGlrZXdpc2UuCgkocmVtb3ZlX2ludmFsaWRfc3VicmVnX3JlZnMpOiBMaWtld2lzZTsgYXJnIFdPUkQgYWxzbyB1bnNpZ25lZAoJYXMgYXJlIHZhcmlhYmxlcyBFTkQgYW5kIEkuCgkoZ2V0X2NzZV9yZWdfaW5mbywgaW5zZXJ0KTogTGlrZXdpc2UuCgkobWVudGlvbl9yZWdzLCBpbnZhbGlkYXRlX2Zvcl9jYWxsKTogUkVHTk8sIEVORFJFR05PLCBhbmQgSSB1bnNpZ25lZC4KCShjYW5vbl9oYXNoKTogTGlrZXdpc2UuCgkoaW5zZXJ0X3JlZ3MsIGxvb2t1cF9mb3JfcmVtb3ZlKTogUkVHTk8gbm93IHVuc2lnbmVkLgoJKGludmFsaWRhdGUpOiBSRUdOTywgRU5EUkVHTk8sIFRSRUdOTywgYW5kIFRFTkRSRUdOTyBub3cgdW5zaWduZWQuCglOZXcgdmFyaWFibGUgUk4uCgkqIGRieG91dC5jIChkYnhvdXRfcGFybXMsIGRieG91dF9yZWdfcGFybXMpOiBEb24ndCBjaGVjayBmb3IgUkVHTk8gPCAwLgoJKiBkd2FyZjJvdXQuYyAoZHdhcmYyb3VfZnJhbWVfZGVidWdfZXhwcik6IFJlbW92ZSBjYXN0LgoJKiBlbWl0LXJ0bC5jIChzdWJyZWdfcmVhbHBhcnRfcCk6IEFkZCBjYXN0LgoJKG9wZXJhbmRfc3Vid29yZCk6IEFyZyBJIGlzIG5vdyB1bnNpZ25lZCBhcyBpcyB2YXIgUEFSVFdPUkRTLgoJKG9wZXJhbmRfc3Vid29yZF9mb3JjZSk6IEFyZyBJIGlzIG5vdyB1bnNpZ25lZC4KCSogZXhjZXB0LmMgKGVoX3JlZ3MpOiBWYXJpYWJsZSBJIGlzIG5vdyB1bnNpZ25lZC4KCSogZXhwbG93LmMgKGhhcmRfZnVuY3Rpb25fdmFsdWUpOiBCWVRFUyBpcyB1bnNpZ25lZCBIT1NUX1dJREVfSU5ULgoJKiBleHBtZWQuYyAoc3RvcmVfZml4ZWRfYml0X2ZpZWxkKTogUG9zaXRpb24gaXMgSE9TVF9XSURFX0lOVDsKCWxlbmd0aCBpcyB1bnNpZ25lZCBIT1NUX1dJREVfSU5UOyBsaWtld2lzZSBmb3IgaW50ZXJuYWwgdmFyaWFibGVzLgoJKHN0b3JlX3NwbGl0X2JpdF9maWVsZCwgZXh0cmFjdF9maXhlZF9iaXRfZmllbGQpOiBMaWtld2lzZS4KCShleHRyYWN0X3NwbGl0X2JpdF9maWVsZCwgc3RvcmVfYml0X2ZpZWxkLCBleHRyYWN0X2JpdF9maWVsZCk6CglMaWtld2lzZS4KCSogZXhwci5jIChzdG9yZV9jb25zdHJ1Y3Rvcl9maWVsZHMsIHN0b3JlX2NvbnN0cnVjdG9yLCBzdG9yZV9maWVsZCk6CglQb3NpdGlvbnMgYXJlIEhPU1RfV0lERV9JTlQgYW5kIGxlbmd0aHMgYXJlIHVuc2lnbmVkIEhPU1RfV0lERV9JTlQuCgkoZXhwYW5kX2Fzc2lnbm1lbnQsIGV4cGFuZF9leHByLCBleHBhbmRfZXhwcl91bmFsaWduZWQpOiBMaWtld2lzZS4KCShkb19qdW1wKTogTGlrZXdpc2UuCgkobW92ZV9ieV9waWVjZXMsIG1vdmVfYnlfcGllY2VzX25pbnNucywgY2xlYXJfYnlfcGllY2VzKToKCU1BWF9TSVpFIGlzIG5vdyB1bnNpZ25lZC4KCShlbWl0X2dyb3VwX2xvYWQpOiBCWVRFUE9TIGlzIEhPU1RfV0lERV9JTlQ7IEJZVEVMRU4gaXMgdW5zaWduZWQuCgkoZW1pdF9ncm91cF9zdG9yZSk6IExpa2V3aXNlLgoJKGVtaXRfbW92ZV9pbnNuKTogSSBub3cgdW5zaWduZWQuCgkoc3RvcmVfY29uc3RydWN0b3IpOiBVc2UgaG9zdF9pbnRlZ2VycCwgdHJlZV9sb3dfY3N0LCBhbmQKCWJpdHNpemVfdW5pdF9ub2RlLgoJKGdldF9pbm5lcl9yZWZlcmVuY2UpOiBSZXR1cm4gYml0cG9zIGFuZCBiaXRzaXplIGFzIEhPU1RfV0lERV9JTlQuCglSZXdvcmsgYWxsIGNhbGN1bGF0aW9ucyB0byB1c2UgdHJlZXMgYW5kIG5ldyBmaWVsZHMuCgkqIGV4cHIuaCAocHJvbW90ZWRfaW5wdXRfYXJnKTogUmVnbm8gbm93IHVuc2lnbmVkLgoJKHN0b3JlX2JpdF9maWVsZCwgZXh0cmFjdF9iaXRfZmllbGQpOiBBZGp1c3QgdHlwZXMgb2YgcG9zIGFuZCBzaXplLgoJKG1hcmtfc2Vlbl9jYXNlcyk6IEFyZyBpcyBIT1NUX1dJREVfSU5ULgoJKiBmbG93LmMgKHZlcmlmeV93aWRlX3JlZ18xKTogUkVHTk8gbm93IHVuc2lnbmVkLgoJKiBmb2xkLWNvbnN0LmMgKGRlY29kZV9maWVsZF9yZWZlcmVuY2UpOiBTaXplIGFuZCBwb3MgSE9TVF9XSURFX0lOVDsKCXByZWNpc2lvbnMgYW5kIGFsaWdubWVudHMgYXJlIHVuc2lnbmVkLgoJKG9wdGltaXplX2JpdF9maWVsZF9jb21wYXJlLCBmb2xkX3RydXRob3ApOiBMaWtld2lzZS4KCShpbnRfY29uc3RfYmlub3ApOiBBZGp1c3QgdGhyZXNob2xkIGZvciBzaXplX2ludF90eXBlX3dpZGUgY2FsbC4KCShmb2xkX2NvbnZlcnQpOiBMaWtld2lzZS4KCShzaXplX2ludF90eXBlX3dpZGUpOiBNYWtlIHRhYmxlIGxhcmdlciBhbmQgZml4IHRoaW5rbyB0aGF0IG9ubHkKCWhhZCBoYWxmIG9mIHRhYmxlIHVzZWQuCgkoYWxsX29uZXNfbWFza19wLCBmb2xkKTogUHJlY2lzaW9ucyBhcmUgdW5zaWduZWQuCgkqIGZ1bmN0aW9uLmMgKHB1dF9yZWdfaW5mb19zdGFjayk6IFJFR05PIGlzIHVuc2lnbmVkLgoJKGluc3RhbnRpYXRlX2RlY2wpOiBTaXplIGlzIEhPU1RfV0lERV9JTlQuCgkoaW5zdGFudGlhdGVfdmlydHVhbF9yZWdzKTogSSBpcyB1bnNpZ25lZC4KCShhc3NpZ25fcGFybXMpOiBSRUdOTywgUkVHTk9JLCBhbmQgUkVHTk9SIGFyZSB1bnNpZ25lZC4KCShwcm9tb3RlZF9pbnB1dF9hcmcpOiBSRUdOTyBpcyB1bnNpZ25lZC4KCSogZnVuY3Rpb24uaCAoc3RydWN0IGZ1bmN0aW9uKTogeF9tYXhfcGFybV9yZWcgaXMgbm93IHVuc2lnbmVkLgoJKiBnY3NlLmMgKG1heF9nY3NlX3JlZ25vKTogTm93IHVuc2lnbmVkLgoJKHN0cnVjdCBudWxsX3BvaW50ZXJfaW5mbyk6IG1pbl9yZWcgYW5kIG1heF9yZWcgbm93IHVuc2lnbmVkLgoJKGxvb2t1cF9zZXQsIG5leHRfc2V0KTogUkVHTk8gYXJnIG5vdyB1bnNpZ25lZC4KCShjb21wdXRlX2hhc2hfdGFibGUpOiBSRUdOTyBhbmQgSSBub3cgdW5zaWduZWQuCgkoaGFuZGxlX2F2YWlsX2V4cHIpOiByZWdudW1fZm9yX3JlcGxhY2luZyBub3cgdW5zaWduZWQuCgkoY3Byb3BfaW5zbik6IFJFR05PIG5vdyB1bnNpZ25lZC4KCShkZWxldGVfbnVsbF9wb2ludGVyX2NoZWNrc18xKTogQkxPQ0tfUkVHIG5vdyBwb2ludGVyIHRvIHVuc2lnbmVkLgoJKiBnZ2MtY29tbW9uLmMgKGdnY19tYXJrX3RyZWVfY2hpbGRyZW4sIGNhc2UgRklFTERfREVDTCk6IE5ldyBjYXNlLgoJKiBnbG9iYWwuYyAoc2V0X3ByZWZlcmVuY2UpOiBTUkNfUkVHTk8sIERFU1RfUkVHTk8sIGFuZCBJIG5vdyB1bnNpZ25lZC4KCSogaGFyZC1yZWctc2V0LmggKHJlZ19jbGFzc19zaXplKTogTm93IHVuc2lnbmVkLgoJKiBpbnRlZ3JhdGUuYyAobWFya19zdG9yZXMpOiBMQVNUX1JFRyBhbmQgSSBub3cgdW5zaWduZWQ7IG5ldyBVUkVHTk8uCgkqIGp1bXAuYyAobWFya19tb2RpZmllZF9yZWcpOiBJIG5vdyB1bnNpZ25lZDsgYWRkIGNhc3QuCgkocnR4X2VxdWFsX2Zvcl90aHJlYWRfcCk6IEFkZCBjYXN0LgoJKiBsb29wLmMgKG1heF9yZWdfYmVmb3JlX2xvb3ApOiBOb3cgdW5zaWduZWQuCgkoc3RydWN0X21vdmFibGUpOiBSRUdOTyBub3cgdW5zaWduZWQuCgkodHJ5X2NvcHlfcHJvcCk6IFJFR05PIGFyZyB1bnNpZ25lZC4KCShyZWdzX21hdGNoX3ApOiBYTiBhbmQgWU4gbm93IHVuc2lnbmVkLgoJKGNvbnNlY19zZXRzX2ludmFyaWFudF9wLCBtYXliZV9lbGltaW5hdGVfYml2KTogUkVHTk8gbm93IHVuc2lnbmVkLgoJKHN0cmVuZ3RoX3JlZHVjZSk6IExpa2V3aXNlOyBOUkVHUyBhbHNvIHVuc2lnbmVkLgoJKGZpcnN0X2luY3JlbWVudF9naXYsIGxhc3RfaW5jcmVtZW50X2dpdiB1bnNpZ25lZCk6IE5vdyB1bnNpZ25lZC4KCSogbG9vcC5oIChzdHJ1Y3QgaXZfY2xhc3MpOiBSRUdOTyBub3cgdW5zaWduZWQuCgkobWF4X3JlZ19iZWZvcmVfbG9vcCwgZmlyc3RfaW5jcmVtZW50X2dpdiwgbGFzdF9pbmNyZW1lbnRfZ2l2KToKCU5vdyB1bnNpZ25lZC4KCSogbWFjaG1vZGUuaCAobW9kZV9zaXplLCBtb2RlX3VuaXRfc2l6ZSk6IE5vdyB1bnNpZ25lZC4KCShtb2RlX2Zvcl9zaXplLCBzbWFsbGVzdF9tb2RlX2Zvcl9zaXplKTogUGFzcyBzaXplIGFzIHVuc2lnbmVkLgoJKiBvcHRhYnMuYyAoZXhwYW5kX2Jpbm9wKTogSSBhbmQgTldPUkRTIG5vdyB1bnNpZ25lZC4KCShleHBhbmRfdW5vcCk6IEkgbm93IHVuc2lnbmVkLgoJKiBwcmludC10cmVlLmMgKHByaW50X25vZGUpOiBEb24ndCBwcmludCBERUNMX0ZJRUxEX0JJVFBPUywgYnV0IGRvCglwcmludCBERUNMX0ZJRUxEX09GRlNFVCBhbmQgREVDTF9GSUVMRF9CSVRfT0ZGU0VULgoJKiByZWFsLmMgKHNpZ25pZmljYW5kX3NpemUpOiBOb3cgcmV0dXJucyB1bnNpZ25lZC4KCSogcmVhbC5oIChzaWduaWZpY2FuZF9zaXplKTogTGlrZXdpc2UuCgkqIHJlZ2NsYXNzLmMgKHJlZ19jbGFzc19zaXplKTogTm93IHVuc2lnbmVkLgoJKGNob29zZV9oYXJkX3JlZ19tb2RlKTogQm90aCBvcGVyYW5kcyBub3cgdW5zaWduZWQuCgkocmVjb3JkX3JlZ19jbGFzc2VzKTogUkVHTk8gYW5kIE5SIG5vdyB1bnNpZ25lZC4KCShyZWdfc2Nhbik6IE5SRUdTIG5vdyB1bnNpZ25lZC4KCShyZWdfc2Nhbl91cGRhdGUpOiBvbGRfbWF4X3JlZ25vIG5vdyB1bnNpZ25lZC4KCShyZWdfc2Nhbl9tYXJrX3JlZnMpOiBBcmcgTUlOX1JFR05PIGFuZCB2YXIgUkVHTk8gbm93IHVuc2lnbmVkLgoJKiByZWxvYWQuYyAoZmluZF92YWxpZF9jbGFzcyk6IEJFU1RfU0laRSBub3cgdW5zaWduZWQuCgkoZmluZF9kdW1teV9yZWxvYWQpOiBSRUdOTywgTldPUkRTLCBhbmQJSSBub3cgdW5zaWduZWQuCgkoaGFyZF9yZWdfc2V0X2hlcmVfcCk6IEFyZ3MgQkVHX1JFR05PIGFuZCBFTkRfUkVHTk8gbm93IHVuc2lnbmVkLgoJTGlrZXdpc2UgZm9yIHZhcmlhYmxlIFIuCgkocmVmZXJzX3RvX3JlZ25vX2Zvcl9yZWxvYWRfcCk6IEFyZ3MgUkVHTk8gYW5kIEVORF9SRUdOTyBub3cgdW5zaWduZWQsCglhcyBhcmUgdmFyaWFibGVzIElOTkVSX1JFR05PIGFuZCBJTk5FUl9FTkRSRUdOTzsgYWRkIG5ldyB2YXJpYWJsZSBSLgoJKGZpbmRfZXF1aXZfcmVnKTogQWRkIGNhc3RzLgoJKHJlZ25vX2Nsb2JiZXJlZF9wKTogQXJnIFJFR05PIG5vdyB1bnNpZ25lZC4KCSogcmVsb2FkLmggKHN0cnVjdCByZWxvYWQpOiBOUkVHUyBub3cgdW5zaWduZWQuCgkocmVmZXJzX3RvX3JlZ25vX2Zvcl9yZWxvYWRfcCk6IFJlZ25vIGFyZ3MgYXJlIHVuc2lnbmVkLgoJKHJlZ25vX2Nsb2JiZXJlZF9wKTogTGlrZXdpc2UuCgkqIHJlbG9hZDEuYyAocmVnX21heF9yZWZfd2lkdGgsIHNwaWxsX3N0YWNrX3Nsb3Rfd2lkdGgpOiBOb3cgdW5zaWduZWQuCgkoY29tcHV0ZV91c2VfYnlfcHNldWRvcyk6IFJFR05PIG5vdyB1bnNpZ25lZC4KCShmaW5kX3JlZyk6IEkgYW5kIEogbm93IHVuc2lnbmVkLCBuZXcgdmFyaWFibGUgSywgYW5kIGNoYW5nZSBsb29wCgl2YXJpYWJsZXMgYWNjb3JkaW5nbHk7IFRISVNfTlJFR1Mgbm93IHVuc2lnbmVkLgoJKGFsdGVyX3JlZyk6IElOSEVSRU5UX1NJWkUgYW5kIFRPVEFMX1NJWkUgbm93IHVuc2lnbmVkLgoJKHNwaWxsX2hhcmRfcmVnKTogUkVHTk8gYXJnIG5vdyB1bnNpZ25lZDsgYWRkIGNhc3RzLgoJKGZvcmdldF9vbGRfcmVsb2Fkc18xKTogUkVHTk8sIE5SLCBhbmQgSSBub3cgdW5zaWduZWQuCgkobWFya19yZWxvYWRfcmVnX2luX3VzZSk6IEFyZyBSRUdOTyBhbmQgdmFycyBOUkVHUyBhbmQgSSBub3cgdW5zaWduZWQuCgkoY2xlYXJfcmVsb2FkX3JlZ19pbl91c2UpOiBBcmcgUkVHTk8gYW5kIHZhcnMgTlJFR1MsIFNUQVJUX1JFR05PLAoJRU5EX1JFR05PLCBDT05GTElDVF9TVEFSVCwgYW5kIENPTkZMSUNUX0VORCBub3cgdW5zaWduZWQuCgkocmVsb2FkX3JlZ19mcmVlX3AsIHJlbG9hZF9yZWdfcmVhY2hlc19lbmRfcCk6IEFyZyBSRUdOTyBub3cgdW5zaWduZWQuCgkoY2hvb3NlX3JlbG9hZF9yZWdzKTogTUFYX0dST1VQX1NJWkUgbm93IHVuc2lnbmVkLgoJKGVtaXRfcmVsb2FkX2luc25zKTogUkVHTk8gbm93IHVuc2lnbmVkLgoJKHJlbG9hZF9jc2VfbW92ZTJhZGQpOiBBZGQgY2FzdC4KCShtb3ZlMmFkZF9ub3RlX3N0b3JlKTogUkVHTk8gYW5kIEkgbm93IHVuc2lnbmVkOyBuZXcgdmFyaWFibGUgRU5EUkVHTk8KCWFuZCByZXdvcmsgbG9vcC4KCSogcmVzb3VyY2UuYyAobWFya19yZWZlcmVuY2VkX3Jlc291cmNlcywgbWFya19zZXRfcmVzb3VyY2VzKTogTmV3Cgl2YXJpYWJsZSBSOyBSRUdOTyBhbmQgTEFTVF9SRUdOTyBub3cgdW5zaWduZWQuCgkobWFya190YXJnZXRfbGl2ZV9yZWdzKTogSiBhbmQgUkVHTk8gbm93IHVuc2lnbmVkLgoJKiBydGwuYyAobW9kZV9zaXplLCBtb2RlX3VuaXRfc2l6ZSk6IE5vdyB1bnNpZ25lZC4KCSogcnRsLmggKHVuaW9uIHJ0dW5pb25fZGVmKTogTmV3IGZpZWxkIHJ0dWludC4KCShYQ1VJTlQpOiBOZXcgbWFjcm8uCgkoQUREUkVTU09GX1JFR05PLCBSRUdOTywgU1VCUkVHX1dPUkQpOiBOZXcgWENVSU5ULgoJKG9wZXJhbmRfc3Vid29yZCwgb3BlcmFuZF9zdWJ3b3JkX2ZvcmNlKTogV29yZCBudW1iZXIgaXMgdW5zaWduZWQuCgkoY2hvb3NlX2hhcmRfcmVnX21vZGUpOiBPcGVyYW5kcyBhcmUgdW5zaWduZWQuCgkocmVmZXJzX3RvLXJlZ25vX3AsIGRlYWRfb3Jfc2V0X3JlZ25vX3ApOiBSZWdubyBhcmcgaXMgdW5zaWduZWQuCgkoZmluZF9yZWdub19ub3RlLCBmaW5kX3JlZ25vX2Z1c2FnZSwgcmVwbGFjZV9yZWdzKTogTGlrZXdpc2UuCgkocmVnbm9fdXNlX2luLCBjb21iaW5lX2luc3RydWN0aW9ucywgcmVtb3ZlX2RlYXRoKTogTGlrZXdpc2UuCgkocmVnX3NjYW4sIHJlZ19zY2FuX3VwZGF0ZSk6IExpa2V3aXNlLgoJKGV4dGVuZGVkX2NvdW50KTogUmV0dXJuIGlzIHVuc2lnbmVkLgoJKiBydGxhbmFsLmMgKHJlZmVyc190b19yZWdub19wKTogQXJncyBSRUdOTyBhbmQgRU5EUkVHTk8gYW5kIHZhcnMgSSwKCUlOTkVSX1JFR05PLCBhbmQgSU5ORVJfRU5EUkVHTk8gbm93IHVuc2lnbmVkOyBuZXcgdmFyaWFibGUgWF9SRUdOTy4KCShyZWdfb3ZlcmxhcF9tZW50aW9uZWRfcCk6IFJFR05PIGFuZCBFTkRSRUdOTyBub3cgdW5zaWduZWQuCgkocmVnX3NldF9sYXN0X2ZpcnN0X3JlZ25vLCByZWdfc2V0X2xhc3RfbGFzdF9yZWdubyk6IE5vdyB1bnNpZ25lZC4KCShyZWdfcmVnX2xhc3RfMSk6IEZJUlMgYW5kIExBU1Qgbm93IHVuc2lnbmVkLgoJKGRlYWRfb3Jfc2V0X3ApOiBSRUdOTywgTEFTVF9SRUdOTywgYW5kIEkgbm93IHVuc2lnbmVkLgoJKGRlYWRfb3Jfc2V0X3JlZ25vX3ApOiBBcmcgVEVTVF9SRUdOTyBhbmQgdmFycyBSRUdOTyBhbmQgRU5EUkVHTk8KCW5vdyB1bnNpZ25lZC4KCShmaW5kX3JlZ25vX25vdGUsIHJlZ25vX3VzZV9pbik6IEFyZyBSRUdOTyBub3cgdW5zaWduZWQuCgkoZmluZF9yZWdub19mdXNhZ2UpOiBMaWtld2lzZTsgYWxzbyB2YXIgUkVHTk9URSBub3cgdW5zaWduZWQuCgkoZmluZF9yZWdfZnVzYWdlKTogVmFyaWFibGVzIFJFR05PLCBFTkRfUkVHTk8sIGFuZCBJIG5vdyB1bnNpZ25lZC4KCShyZXBsYWNlX3JlZ3MpOiBBcmcgTlJFR1Mgbm93IHVuc2lnbmVkLgoJKiBzZGJvdXQuYyAoc2Rib3V0X3Bhcm1zLCBzZGJvdXRfcmVnX3Bhcm1zKTogRG9uJ3QgY2hlY2sgUkVHTk8gPCAwLgoJKiBzaW1wbGlmeS1ydHguYyAoc2ltcGxpZnlfdW5hcnlfb3BlcmF0aW9uKTogV0lEVEggbm93IHVuc2lnbmVkLgoJKHNpbXBsaWZ5X2JpbmFyeV9vcGVyYXRpb24pOiBMaWtld2lzZS4KCShjc2VsaWJfaW52YWxpZGF0ZV9yZWdubyk6IEFyZyBSRUdOTyBhbmQgdmFyaWFibGVzIEVORFJFR05PLCBJLCBhbmQKCVRISVNfTEFTVCBub3cgdW5zaWduZWQuCgkoY3NlbGliX3JlY29yZF9zZXQpOiBBZGQgY2FzdC4KCSogc3NhLmMgKHNzYV9tYXhfcmVnX251bSk6IE5vdyB1bnNpZ25lZC4KCShyZW5hbWVfYmxvY2spOiBSRUdOTyBub3cgdW5zaWduZWQuCgkqIHN0bXQuYyAoZXhwYW5kX3JldHVybik6IEJpdCBwb3NpdGlvbnMgdW5zaWduZWQgSE9TVF9XSURFX0lOVDsKCXNpemVzIG5vdyB1bnNpZ25lZC4KCShhbGxfY2FzZXNfY291bnQpOiBKdXN0IHJldHVybiAtMSBub3QgLTIuCglDT1VOVCwgTUlOVkFMLCBhbmQgTEFTVFZBTCBub3cgSE9TVF9XSURFX0lOVC4KCVJld29yayB0ZXN0cyB0byB1c2UgdHJlZXMgd2hlbmV2ZXIgcG9zc2libGUuCglVc2UgaG9zdF9pbnRlZ2VycCBhbmQgdHJlZV9sb3dfY3N0LgoJKG1hcmtfc2Vlbl9jYXNlcyk6IENPVU5UIGFyZyBub3cgSE9TVF9XSURFX0lOVDsKCUxpa2V3aXNlIHZhcmlhYmxlIE5FWFRfTk9ERV9PRkZTRVQ7IFhMTyBub3cgdW5zaWduZWQuCgkoY2hlY2tfZm9yX2Z1bGxfZW51bWVyYXRpb25faGFuZGluZyk6IEJZVEVTX05FRURFRCwgSSB0byBIT1NUX1dJREVfSU5ULgoJKiBzdG9yLWxheW91dC5jIChtb2RlX2Zvcl9zaXplKTogU0laRSBhcmcgbm93IHVuc2lnbmVkLgoJKHNtYWxsZXN0X21vZGVfZm9yX3NpemUpOiBMaWtld2lzZS4KCShsYXlvdXRfZGVjbCk6IFNpbXBsaWZ5IGhhbmRpbmcgb2YgYSBzcGVjaWZpZWQgREVDTF9TSVpFX1VOSVQuCglLTk9XTl9BTElHTiBpcyBub3cgYW4gYWxpZ25tZW50LCBzbyBzaW1wbGlmeSBjb2RlLgoJRG9uJ3QgdHVybiBvZmYgREVDTF9CSVRfRklFTEQgaWYgZmllbGQgaXMgQkxLbW9kZSwgYnV0IG5vdCB0eXBlLgoJKHN0YXJ0X3JlY29yZF9sYXlvdXQpOiBSZW5hbWVkIGZyb20gbmV3X3JlY29yZF9sYXlvdXRfaW5mby4KCVVwZGF0ZSB0byBuZXcgZmllbGRzLgoJKGRlYnVnX3JsaSwgbm9ybWFsaXplX3JsaSwgcmxpX3NpemVfdW5pdF9zb19mYXIsIHJsaV9zaXplX3NvX2Zhcik6CglOZXcgZnVuY3Rpb25zLgoJKHBsYWNlX3VuaW9uX2ZpZWxkKTogUmVuYW1lZCBmcm9tIGxheW91dF91bmlvbl9maWVsZC4KCVVwZGF0ZSB0byB1c2UgbmV3IGZpZWxkcyBpbiBybGkuCgkocGxhY2VfZmllbGQpOiBSZW5hbWVkIGZyb20gbGF5b3V0X2ZpZWxkLgoJTWFqb3IgcmV3cml0ZSB0byB1c2UgbmV3IGZpZWxkcyBpbiBybGk7IHBhc3MgYWxpZ25tZW50IHRvIGxheW91dF9kZWNsLgoJKGZpbmFsaXplX3JlY29yZF9zaXplKTogUmV3b3JrIHRvIHVzZSBuZXcgZmllbGRzIGluIHJsaSBhbmQgaGFuZGxlCgl1bmlvbi4KCShjb21wdXRlX3JlY29yZF9tb2RlKTogUmV3b3JrIHRvIHNpbXBsaWZ5IGFuZCB0byB1c2UgbmV3IERFQ0wgZmllbGRzLgoJKGZpbmFsaXplX3R5cGVfc2l6ZSk6IE1ha2Ugcm91bmRpbmcgbW9yZSBjb25zaXN0ZW50LgoJKGZpbmlzaF91bmlvbl9sYXlvdXQpOiBEZWxldGVkLgoJKGxheW91dF90eXBlLCBjYXNlIFZPSURfVFlQRSk6IERvbid0IHNldCBUWVBFX1NJWkVfVU5JVCBlaXRoZXIuCgkobGF5b3V0X3R5cGUsIGNhc2UgUkVDT1JEX1RZUEUpOiBDYWxsIG5ldyBmdW5jdGlvbiBuYW1lcy4KCShpbml0aWFsaXplX3NpemV0eXBlcyk6IFNldCBUWVBFX0lTX1NJWkVUWVBFLgoJKHNldF9zaXpldHlwZSk6IFNldCBUWVBFX0lTX1NJWkVUWVBFIGVhcmxpZXIuCgkoZ2V0X2Jlc3RfbW9kZSk6IFVOSVQgaXMgbm93IHVuc2lnbmVkOyByZW1vdmUgY2FzdHMuCgkqIHRyZWUuYyAoYml0X3Bvc2l0aW9uKTogQ29tcHV0ZSBmcm9tIG5ldyBmaWVsZHMuCgkoYnl0ZV9wb3NpdGlvbiwgaW50X2J5dGVfcG9zaXRpb24pOiBOZXcgZnVuY3Rpb25zLgoJKHByaW50X3R5cGVfaGFzaF9zdGF0aXN0aWNzKTogQ2FzdCB0byByZW1vdmUgd2FybmluZy4KCShidWlsZF9yYW5nZV90eXBlKTogVXNlIGhvc3RfaW50ZWdlcnAgYW5kIHRyZWVfbG93X2NzdCB0byB0cnkgdG8gaGFzaC4KCShidWlsZF9pbmRleF90eXBlKTogTGlrZXdpc2U7IG1ha2Ugc3VidHlwZSBvZiBzaXpldHlwZS4KCShidWlsZF9pbmRleF8yX3R5cGUpOiBQYXNzIHNpemV0eXBlIHRvIGJ1aWxkX3JhbmdlX3R5cGUuCgkoYnVpbGRfY29tbW9uX3RyZWVfbm9kZXMpOiBVc2Ugc2l6ZV9pbnQgYW5kIGJpdHNpemVfaW50IHRvCglpbml0aWFsaXplIG5vZGVzOyBhZGQgYml0c2l6ZV97emVybyxvbmUsdW5pdH1fbm9kZS4KCSogdHJlZS5oIChERUNMX0ZJRUxEX0NPTlRFWFQpOiBVc2UgRklFTERfREVDTF9DSEVDSy4KCShERUNMX0JJVF9GSUVMRF9UWVBFLCBERUNMX1FVQUxJRklFUiwgREVDTF9GQ09OVEVYVCk6IExpa2V3aXNlLgoJKERFQ0xfUEFDS0VELCBERUNMX0JJVF9GSUVMRCk6IExpa2V3aXNlLgoJKERFQ0xfRklFTERfQklUUE9TKTogRGVsZXRlZC4KCShERUNMX0ZJRUxEX09GRlNFVCwgREVDTF9GSUVMRF9CSVRfT0ZGU0VUKTogTmV3IGZpZWxkcy4KCShERUNMX1JFU1VMVCwgREVDTF9TQVZFRF9JTlNOUyk6IFVzZSBGVU5DVElPTl9ERUNMX0NIRUNLLgoJKERFQ0xfRlJBTUVfU0laRSwgREVDTF9GVU5DVElPTl9DT0RFLCBERUNMX05PX1NUQVRJQ19DSEFJTik6IExpa2V3aXNlLgoJKERFQ0xfSU5MSU5FLCBERUNMX0JVSUxUX0lOX05PTkFOU0ksIERFQ0xfSVNfTUFMTE9DKTogTGlrZXdpc2UuCgkoREVDTF9CVUlMVF9JTl9DTEFTUywgREVDTF9TVEFUSUNfQ09OU1RSVUNUT1IpOiBMaWtld2lzZS4KCShERUNMX1NUQVRJQ19ERVNUUlVDVE9SLCBERUNMX05PX0NIRUNLX01FTU9SWV9VU0FHRSk6IExpa2V3aXNlLgoJKERFQ0xfTk9fSU5TVFJVTUVOVF9GVU5DVElPTl9FTlRSWV9FWElULCBERUNMX05PX0xJTUlUX1NUQUNLKSBMaWtld2lzZS4KCShERUNMX09SSUdJTkFMX1RZUEUsIFRZUEVfREVDTF9TVVBQUkVTU19ERUJVRyk6IFVzZSBUWVBFX0RFQ0xfQ0hFQ0suCgkoREVDTF9BUkdfVFlQRV9BU19XUklURU4sIERFQ0xfQVJHX1RZUEUpOiBVc2UgUEFSTV9ERUNMX0NIRUNLLgoJKERFQ0xfSU5DT01JTkdfUlRMLCBERUNMX1RSQU5TUEFSRU5UX1VOSU9OKTogTGlrZXdpc2UuCgkoREVDTF9BTElHTik6IEFkanVzdCB0byBuZXcgZmllbGQgaW4gdW5pb24uCgkoREVDTF9PRkZTRVRfQUxJR04pOiBOZXcgZmllbGQuCgkoREVDTF9FUlJPUl9JU1NVRUQsIERFQ0xfVE9PX0xBVEUpOiBVc2UgTEFCRUxfREVDTF9DSEVDSy4KCShERUNMX0lOX1RFWFRfU0VDVElPTik6IFVzZSBWQVJfREVDTF9DSEVDSy4KCSh1bmlvbiB0cmVlX2RlY2wpOiBBZGQgc3RydWN0IGZvciBib3RoIGFsaWducy4KCShlbnVtIHRyZWVfaW5kZXgpOiBBZGQgVElfQklUU0laRV97WkVSTyxPTkUsVU5JVH0uCgkoYml0c2l6ZV96ZXJvX25vZGUsIGJpdHNpemVfb25lX25vZGUsIGJpdHNpemVfdW5pdF9ub2RlKTogQWRkZWQuCgkoc3RydWN0IHJlY29yZF9sYXlvdXRfaW5mbyk6IFJld29yayBmaWVsZHMgdG8gaGF2ZSBvZmZzZXQKCWFsaWdubWVudCBhbmQgYnl0ZSBhbmQgYml0IHBvc2l0aW9uLgoJKHN0YXJ0X3JlY29yZF9sYXlvdXQsIHBsYWNlX2ZpZWxkKTogUmVuYW1lZCBmcm9tIG9sZCBuYW1lcy4KCShybGlfc2l6ZV9zb19mYXIsIHJsaV9zaXplX3VuaXRfc29fZmFyLCBub3JtYWxpemVfcmxpKTogTmV3IGRlY2xzLgoJKGJ5dGVfcG9zaXRpb24sIGludF9ieXRlX3Bvc2l0aW9uKTogTGlrZXdpc2UuCgkoZ2V0X2lubmVyX3JlZmVyZW5jZSk6IENoYW5nZSB0eXBlcyBvZiBwb3NpdGlvbiBhbmQgbGVuZ3RoLgoJKiB1bnJvbGwuYyAodW5yb2xsX2xvb3ApOiBOZXcgdmFyaWFibGUgUjsgdXNlIGZvciBzb21lIGxvb3BzLgoJTUFYX0xPQ0FMX1JFR05VTSBhbmQgTUFYUkVHTlVNIG5vdyB1bnNpZ25lZC4KCShjYWxjdWxhdGVfZ2l2X2luYyk6IEFyZyBSRUdOTyBub3cgdW5zaWduZWQuCgkoY29weV9sb29wX2JvZHkpOiBSRUdOTyBhbmQgU1JDX1JFR05PIG5vdyB1bnNpZ25lZC4KCSogdmFyYXNtLmMgKGFzc2VtYmxlX3ZhcmlhYmxlKTogQ2xlYW4gdXAgaGFuZGxpbmcgb2Ygc2l6ZSB1c2luZwoJaG9zdF9pbnRlZ2VycCBhbmQgdHJlZV9sb3dfY3N0LgoJKGRlY29kZV9hZGRyX2NvbnN0KTogVXNlIGJ5dGUsIG5vdCBiaXQsIHBvc2l0aW9uLgoJKG91dHB1dF9jb25zdHJ1Y3Rvcik6IGJpdHBvcyBhbmQgb2Zmc2V0cyBhcmUgSE9TVF9XSURFX0lOVDsKCXVzZSB0cmVlX2xvd19jc3QgYW5kIGludF9iaXRfcG9zaXRpb24uCgkqIG9iamMvb2JqYy1hY3QuYyAoYnVpbGRfaXZhcl9saXN0X2luaXRpYWxpemVyKTogVXNlIGJ5dGVfcG9zaXRpb24uCgpGcmkgTWFyIDI0IDIwOjEzOjQ5IDIwMDAgIEphc29uIEVja2hhcmR0ICA8amxlQGN5Z251cy5jb20+CgoJKiBiYi1yZW9yZGVyLmMgKFJFT1JERVJfTU9WRURfQkxPQ0tfRU5EKTogUmVtb3ZlZC4KCShyZW9yZGVyX2Jsb2NrX2RlZik6IE5ldyBtZW1iZXJzIGVmZl9oZWFkIGFuZCBlZmZfZW5kLgoJKFJFT1JERVJfQkxPQ0tfRUZGX0hFQUQsIFJFT1JERVJfQkxPQ0tfRUZGX0VORCk6IE5ldyBtYWNyb3MuCgkodmVyaWZ5X2luc25fY2hhaW4pOiBOZXcgZnVuY3Rpb24uCgkoc2tpcF9pbnNuc19iZXR3ZWVuX2Jsb2NrKTogQWRkIGNvZGUgdG8gc2tpcCBkZWxldGVkIGluc25zLgoJQ2hlY2sgZm9yIG5vdGUgYmVmb3JlIHVzaW5nLgoJKGNoYWluX3Jlb3JkZXJfYmxvY2tzKTogUmVwbGFjZSBjYWxscyB0byBza2lwX2luc25zX2JldHdlZW5fYmxvY2sKCXdpdGggcmVmZXJlbmNlcyB0byBSRU9SREVSX0JMT0NLX0VGRl9IRUFEIGFuZCBSRU9SREVSX0JMT0NLX0VGRl9FTkQuCglDaGVjayBmb3Igbm90ZSBiZWZvcmUgdXNpbmcuCgkobWFrZV9yZW9yZGVyX2NoYWluKTogVXNlIElOVFZBTCByYXRoZXIgdGhhbiBYSU5UIHRvIGdldCBSRUdfQlJfUFJPQi4KCShmaXh1cF9yZW9yZGVyX2NoYWluKTogUmVzdHJ1Y3R1cmUsIGNsZWFuIHVwLCBkZWZlY3QgcmVtb3ZhbC4KCShyZW9yZGVyX2Jhc2ljX2Jsb2Nrcyk6IFJlbW92ZSBsYXN0X2luc24gYW5kIHJlZmVyZW5jZXMgdG8gaXQuCglNb3ZlZCBpbnNuIGNoYWluIHZlcmlmaWNhdGlvbiBjb2RlIGludG8gYSBuZXcgZnVuY3Rpb24gKHNlZSBhYm92ZSkuCglEZWxldGUgZGVmZWN0aXZlIGNvZGUgdGhhdCBzZXRzIGxhc3QgaW5zbi4KCUluaXRpYWxpemUgUkVPUkRFUl9CTE9DS19FRkZfSEVBRCBhbmQgUkVPUkRFUl9CTE9DS19FRkZfRU5EIGZvcgoJYWxsIGJsb2Nrcy4KCjIwMDAtMDMtMjUgIE1pY2hhZWwgSGF5ZXMgIDxtLmhheWVzQGVsZWMuY2FudGVyYnVyeS5hYy5uej4KCgkqIGNvbmZpZy9jNHgvYzR4LmggKENQUF9TUEVDKTogUmVtb3ZlIGVycm9uZW91cyBzcGFjZS4KCjIwMDAtMDMtMjQgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgoJKiB0cmVlLmMgKGxhbmdfc2FmZV9mb3JfdW5zYXZlKTogUmVtb3ZlLgoJKHVuc2FmZV9mb3JfcmVldmFsKTogVHJhbnNtdXRlIGFuZCByZW5hbWUgZnJvbSBzYWZlX2Zvcl91bnNhdmUsCglhbGxvd2luZyBmb3IgdHdvIGxldmVscyBvZiB1bnNhZmVuZXNzLiAgUmVtb3ZlIGxhbmcgaG9vay4KCSogdHJlZS5oOiBVcGRhdGUgZGVjbGFyYXRpb25zLgoJKiBjYWxscy5jIChleHBhbmRfY2FsbCk6IFJlbmFtZSBzYWZlX2Zvcl9yZWV2YWwgdG8gdHJ5X3RhaWxfY2FsbC4KCUNyZWF0ZSB0ZW1wb3JhcnkgVkFSX0RFQ0xzIHRvIHByb3RlY3QgdmVyeSB1bnNhZmVfZm9yX3JlZXZhbCB0cmVlcy4KCUFsd2F5cyBmYWlsIHNpYmNhbGxzIHdoZW4gdGhlcmUgYXJlIHBlbmRpbmcgY2xlYW51cHMuCgoyMDAwLTAzLTI0ICBHZW9mZiBLZWF0aW5nICA8Z2VvZmZrQGN5Z251cy5jb20+CgoJKiBmbG93LmMgKHByb3BhZ2F0ZV9ibG9jayk6IFdoZW4gd2UgZGVsZXRlIGFuIEFERFJfVkVDLAoJYWxzbyBkZWxldGUgdGhlIEJBUlJJRVIgZm9sbG93aW5nIGl0IGlmIHRoZXJlIGlzIG9uZS4KCjIwMDAtMDMtMjQgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgoJKiBidWlsdGlucy5jIChleHBhbmRfYnVpbHRpbl9iemVybyk6IENvbnZlcnQgYGxlbmd0aCcgYXJndW1lbnQKCXRvIHNpemV0eXBlLgoKMjAwMC0wMy0yNCAgSmFrdWIgSmVsaW5layAgPGpha3ViQHJlZGhhdC5jb20+CgoJKiBzaWJjYWxsLmMgKHNraXBfY29weV90b19yZXR1cm5fdmFsdWUpOiBVc2UgT1VUR09JTkdfUkVHTk8gZm9yCgljb21wYXJpc29uIGlmIHJlZ25vJ3MgYXJlIGVxdWFsLgoJKiBjYWxscy5jIChpbml0aWFsaXplX2FyZ3VtZW50X2luZm9ybWF0KTogQWRkIGVjZl9mbGFncyBhcmd1bWVudC4KCVVzZSBGVU5DVElPTl9JTkNPTUlOR19BUkcgaWYgYXZhaWxhYmxlIGFuZCBFQ0ZfU0lCQ0FMTC4KCShleHBhbmRfY2FsbCk6IFVwZGF0ZSBjYWxsZXIuCglBdm9pZCBtYWtpbmcgYSBzaWJsaW5nIGNhbGwgaWYgYXJndW1lbnQgc2l6ZSBvZiB0aGUgY2FsbGVlIGlzIGxhcmdlcgoJdGhhbiBhcmd1bWVudCBzaXplIG9mIHRoZSBjYWxsZXIuCglDYWxsIGhhcmRfZnVuY3Rpb25fdmFsdWUgd2l0aCBvdXRnb2luZyBzZXQgaWYgaW4gc2liY2FsbCBwYXNzLgoJVXNlIEZVTkNUSU9OX0lOQ09NSU5HX0FSRyBpZiBhdmFpbGFibGUgYW5kIEVDRl9TSUJDQUxMLgoKCSogZmluYWwuYyAocGVybWl0dGVkX3JlZ19pbl9sZWFmX2Z1bmN0aW9ucywgb25seV9sZWFmX3JlZ3NfdXNlZCk6CglDaGFuZ2UgTEVBRl9SRUdJU1RFUlMgZnJvbSBhbiBhcnJheSBpbml0aWFsaXplciB0byBhY3R1YWwgYXJyYXkKCWlkZW50aWZpZXIuIE1vdmUgc3RhdGljIGdsb2JhbCB2YXJpYWJsZSBpbnRvIHRoZSBmdW5jdGlvbi4KCShsZWFmX2Z1bmN0aW9uX3ApOiBBbGxvdyBTSUJMSU5HX0NBTExfUCBjYWxscyBldmVuIG91dHNpZGUgb2YKCXNlcXVlbmNlcyBmb3IgbGVhZiBmdW5jdGlvbnMuCgkqIGdsb2JhbC5jIChnbG9iYWxfYWxsb2MpOiBMaWtld2lzZS4KCSogdG0udGV4aSAoTEVBRl9SRUdJU1RFUlMpOiBVcGRhdGUgZG9jdW1lbnRhdGlvbi4KCgkqIGNvbmZpZy9zcGFyYy9zcGFyYy5oIChDT05ESVRJT05BTF9SRUdJU1RFUl9VU0FHRSk6IFJlbW92ZSB0aGUgdWdseQoJVEFSR0VUX0ZMQVQgbGVhZiBkaXNhYmxpbmcgaGFjay4KCShMRUFGX1JFR0lTVEVSUyk6IENoYW5nZWQgZnJvbSBhbiBhcnJheSBpbml0aWFsaXplciB0byBhY3R1YWwgYXJyYXkKCWlkZW50aWZpZXIgdG8gYXZvaWQgZHVwbGljYXRpb24gYW5kIHJlbW92ZSB0aGUgYWJvdmUgaGFjay4KCShGVU5DVElPTl9PS19GT1JfU0lCQ0FMTCk6IERlZmluZS4KCSogY29uZmlnL3NwYXJjL3NwYXJjLm1kIChzaWJjYWxsKTogTmV3IGF0dHIgdHlwZS4gVXNlIGl0IGFsbW9zdAoJYWx3YXlzIGxpa2UgY2FsbCBhdHRyaWJ1dGUuCgkoZWxpZ2libGVfZm9yX3NpYmNhbGxfZGVsYXkpOiBOZXcgYXR0cmlidXRlLgoJKHNpYmNhbGwpOiBOZXcgZGVsYXkgdHlwZS4KCShzaWJjYWxsLCBzaWJjYWxsX3ZhbHVlLCBzaWJjYWxsX2VwaWxvZ3VlKTogTmV3IGV4cGFuZHMuCgkoc2liY2FsbF9zeW1ib2xpY19zcDMyLCBzaWJjYWxsX3N5bWJvbGljX3NwNjQsCglzaWJjYWxsX3ZhbHVlX3N5bWJvbGljX3NwMzIsIHNpYmNhbGxfdmFsdWVfc3ltYm9saWNfc3A2NCk6IE5ldyBpbnNucy4KCSogY29uZmlnL3NwYXJjL3NwYXJjLmMgKHNwYXJjX2xlYWZfcmVncyk6IE5ldyBhcnJheS4KCShlbGlnaWJsZV9mb3Jfc2liY2FsbF9kZWxheSwgb3V0cHV0X3Jlc3RvcmVfcmVncywgb3V0cHV0X3NpYmNhbGwpOgoJTmV3IGZ1bmN0aW9ucy4KCShvdXRwdXRfZnVuY3Rpb25fZXBpbG9ndWUpOiBNb3ZlIHBhcnQgb2YgdGhlIGNvZGUgaW50bwoJb3V0cHV0X3Jlc3RvcmVfcmVncy4KCSh1bHRyYV9jb2RlX2Zyb21fbWFzaywgdWx0cmFzcGFyY19zY2hlZF9yZW9yZGVyKTogSGFuZGxlCglUWVBFX1NJQkNBTEwuCgkqIHNwYXJjLXByb3Rvcy5oIChvdXRwdXRfc2liY2FsbCwgZWxpZ2libGVfZm9yX3NpYmNhbGxfZGVsYXkpOiBOZXcKCXByb3RvdHlwZXMuCgoJKiBjb25maWcvc3BhcmMvc3BhcmMuaCAoUkVWRVJTSUJMRV9DQ19NT0RFKTogUmV2ZXJ0IEphbiwgMjUgY2hhbmdlCgl1bnRpbCBpbmZyYXN0cnVjdHVyZSBpcyBmaW5pc2hlZC4KCkZyaSBNYXIgMjQgMTM6NDk6NDUgMjAwMCAgSmVmZnJleSBBIExhdyAgKGxhd0BjeWdudXMuY29tKQoKCSogaW50ZWdyYXRlLmMgKHNhdmVfZm9yX2lubGluZV9ub2NvcHkpOiBDbGVhciBpbl9ub25wYXJtX2luc25zIGhlcmUuCgkoc2F2ZV9wYXJtX2luc25zKTogTm90IGhlcmUuCgoyMDAwLTAzLTI0ICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBidWlsdGlucy5jIChleHBhbmRfYnVpbHRpbl9iemVybyk6IE5ldyBmdW5jdGlvbi4KCShleHBhbmRfYnVpbHRpbik6IEhhbmRsZSBiemVyby4KCgkqIGJ1aWx0aW5zLmRlZjogQWRkIEJVSUxUX0lOX0JaRVJPLgoKCSogYy1jb21tb24uYyAoY19jb21tb25fbm9kZXNfYW5kX2J1aWx0aW5zKTogUHJvdmlkZSBidWlsdGluCglwcm90b3R5cGUgJiBmdW5jdGlvbiBmb3IgYnplcm8uCgoyMDAwLTAzLTIzICBNaWNoYWVsIE1laXNzbmVyICA8bWVpc3NuZXJAcmVkaGF0LmNvbT4KCgkqIGNvbmZpZy9hbHBoYS9hbHBoYS5tZCAoVEYgZmxvYXRpbmcgcG9pbnQgaW5zbnMpOiBVbmRvIDIwMDAtMDMtMjEKCWNoYW5nZSBhZGRpbmcgVEFSR0VUX0ZQIHRvIHRoZSBURiBmbG9hdGluZyBwb2ludCBpbnNucywgZXhjZXB0IGZvcgoJdHJ1bmN0ZnNmMiwgd2hpY2ggZ2VuZXJhdGVzIGRpcmVjdCBjYWxscyB0byB0cnVuY2Rmc2YyLgoKMjAwMC0wMy0yMyAgR2VvZmYgS2VhdGluZyAgPGdlb2Zma0BjeWdudXMuY29tPgoKCSogY29uZmlnL3JzNjAwMC9yczYwMDAuaCAoQVJHX1BPSU5URVJfQ0ZBX09GRlNFVCk6IE5ldyBkZWZpbml0aW9uLAoJdHJ5IHRvIHByb3RlY3QgYWdhaW5zdCBtaWRkbGUtZW5kIGNoYW5nZXMgdGhhdCBicmVhayBiaW5hcnkKCWNvbXBhdGliaWxpdHkuCgkoRFdBUkZfRlJBTUVfUkVHSVNURVJTKTogTmV3IGRlZmluaXRpb24sIGxpa2V3aXNlIGZvciBiYWNrZW5kLgoKMjAwMC0wMy0yNCAgTWljaGFlbCBIYXllcyAgPG0uaGF5ZXNAZWxlYy5jYW50ZXJidXJ5LmFjLm56PgoKCSogY29uZmlnL2M0eC9jNHgubWQgKGxvYWRfaW1tZWRfYWRkcmVzcyk6ICBBZGQgRFAgcmVnIGNsb2JiZXIuCgpUaHUgTWFyIDIzIDE3OjEwOjQ4IDIwMDAgIFJpY2hhcmQgS2VubmVyICA8a2VubmVyQHZsc2kxLnVsdHJhLm55dS5lZHU+CgoJKiBjYWxscy5jIChleHBhbmRfY2FsbCk6IElmIFRBUkdFVCBpcyBwYXNzZWQgYnkgcmVmZXJlbmNlIGFuZAoJaXMgcmVhZG9ubHksIHdyaXRlIGEgQ0xPQkJFUi4KCjIwMDAtMDMtMjMgIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIGJ1aWx0aW5zLmMgKGV4cGFuZF9idWlsdGluKTogSGFuZGxlIGJjbXAuCgoJKiBidWlsdGlucy5kZWY6IEFkZCBCVUlMVF9JTl9CQ01QLgoKCSogYy1jb21tb24uYyAoY19jb21tb25fbm9kZXNfYW5kX2J1aWx0aW5zKTogUHJvdmlkZSBidWlsdGluCglwcm90b3R5cGUgJiBmdW5jdGlvbiBmb3IgYmNtcC4KClRodSBNYXIgMjMgMTE6MzQ6MzkgMjAwMCAgSmltIFdpbHNvbiAgPHdpbHNvbkBjeWdudXMuY29tPgoKCSogY29uZmlnL2lhNjQvaWE2NC5jIChydHhfbmVlZHNfYmFycmllciwgY2FzZSBVTlNQRUMpOiBNb3ZlIGNhc2UgNi4uLgoJKHJ0eF9uZWVkc19iYXJyaWVyLCBjYXNlIFVOU1BFQ19WT0xBVElMRSk6IHRvIGhlcmUuCgkqIGNvbmZpZy9pYTY0L2lhNjQubWQgKHByX3Jlc3RvcmUpOiBDaGFuZ2UgVU5TUEVDIHRvIFVOU1BFQ19WT0xBVElMRS4KClRodSBNYXIgMjMgMTY6MDQ6NDAgMjAwMCAgQW5kcmV3IEhhbGV5ICA8YXBoQGN5Z251cy5jb20+CgoJKiBjb25maWcvbWlwcy9taXBzLm1kIChtb3ZkZl9pbnRlcm5hbDFhKTogRGVsZXRlIChzZXQgJ2YnLCAnRicpCglhbHRlcm5hdGl2ZSB3aGVuIHVzaW5nIC1mcDY0IC1ncDMyLgoKMjAwMC0wMy0yMiAgSmFzb24gTWVycmlsbCAgPGphc29uQGNhc2V5LmN5Z251cy5jb20+CgoJKiBjb25maWcvcnM2MDAwL3JzNjAwMC5oIChEV0FSRl9GUkFNRV9SRVRVUk5fQ09MVU1OKTogRGVmaW5lLgoJKiBjb25maWcvYWxwaGEvYWxwaGEuaCAoRFdBUkZfRlJBTUVfUkVUVVJOX0NPTFVNTik6IERlZmluZS4KCSogY29uZmlnL3NwYXJjL3NwYXJjLmggKERXQVJGX0ZSQU1FX1JFVFVSTl9DT0xVTU4pOiBEZWZpbmUuCgoJKiBmcmFtZS5oIChmcmFtZV9zdGF0ZSk6IFJldmVydCBsYXN0IGNoYW5nZS4KCSogZnJhbWUuYyAoZXhlY3V0ZV9jZmFfaW5zbik6IEp1c3QgZG9uJ3QgcmVjb3JkIHRoZSBzYXZlIG9mIGEgQ0ZBIHJlZy4KCSogbGliZ2NjMi5jICh0aHJvd19oZWxwZXIpOiBSZXZlcnQgbGFzdCBjaGFuZ2UuCgoyMDAwLTAzLTIyICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEBjeWdudXMuY29tPgoKCSogc3RtdC5jIChleHBhbmRfYXNtX29wZXJhbmRzKTogRG9uJ3QgcHJvbW90ZSB0aGUgdGVtcG9yYXJ5LgoKMjAwMC0wMy0yMiAgVGhlb2RvcmUgUGFwYWRvcG91bG8gPFRoZW9kb3JlLlBhcGFkb3BvdWxvQHNvcGhpYS5pbnJpYS5mcj4KCgkqIGJ1aWx0aW4uYyAoZ2V0X3BvaW50ZXJfYWxpZ25tZW50KTogVXNlIERFQ0xfUCBhbmQgVFlQRV9QIG1hY3Jvcy4KCSogYy1jb21tb24uYyAoZGVjbF9hdHRyaWJ1dGVzLGNoZWNrX2Zvcm1hdF9pbmZvLHRydXRodmFsdWVfY29udmVyc2lvbiwKCSAgY19nZXRfYWxpYXNfc2V0KTogTGlrZXdpc2UuCgkqIGMtZGVjbC5jIChkdXBsaWNhdGVfZGVjbHMpOiBMaWtld2lzZS4KCSogYy10eXBlY2suYyAoZGVmYXVsdF9jb252ZXJzaW9uLGJ1aWxkX3VuYXJ5X29wKTogTGlrZXdpc2UuCgkqIGNhbGxzLmMgKGluaXRpYWxpemVfYXJndW1lbnRfaW5mb3JtYXRpb24pOiBMaWtld2lzZS4KCSogZHdhcmYyb3V0LmMgKGRlY2xfY2xhc3NfY29udGV4dCxhZGRfYWJzdHJhY3Rfb3JpZ2luX2F0dHJpYnV0ZSk6CglMaWtld2lzZS4KCSogZHdhcmZvdXQuYyAoZGVjbF9jbGFzc19jb250ZXh0LG91dHB1dF90eXBlKTogTGlrZXdpc2UuCgkqIGV4cHIuYyAoZ2V0X2lubmVyX3JlZmVyZW5jZSk6IExpa2V3aXNlLgoJKiBmb2xkLWNvbnN0LmMgKHNpbXBsZV9vcGVyYW5kX3AsZm9sZCk6IExpa2V3aXNlLgoJKiBmdW5jdGlvbi5jIChhZ2dyZWdhdGVfdmFsdWVfcCk6IExpa2V3aXNlLgoJKiBzdG10LmMgKGV4cGFuZF9hc21fb3BlcmFuZHMpOiBMaWtld2lzZS4KCSogdmFyYXNtLmMgKG5hbWVkX3NlY3Rpb24pOiBMaWtld2lzZS4KCjIwMDAtMDMtMjIgIEphc29uIE1lcnJpbGwgIDxqYXNvbkBjYXNleS5jeWdudXMuY29tPgoKCUltcGxlbWVudCBkd2FyZjIgZXhjZXB0aW9uIGhhbmRsaW5nIGZvciB0aGUgQVJNLgoJKiBjb25maWcvYXJtL2FybS5oIChJTkNPTUlOR19SRVRVUk5fQUREUl9SVFgpOiBEZWZpbmUuCgkoRFdBUkZfRlJBTUVfUkVUVVJOX0NPTFVNTik6IERlZmluZS4KCSogY29uZmlnL2FybS9hcm0uYyAoZW1pdF9tdWx0aV9yZWdfcHVzaCk6IFJldHVybiBydHguICBBdHRhY2gKCVJFR19GUkFNRV9SRUxBVEVEX0VYUFIgbm90ZS4KCShlbWl0X3NmbSk6IExpa2V3aXNlLgoJKGFybV9leHBhbmRfcHJvbG9ndWUpOiBTZXQgUlRYX0ZSQU1FX1JFTEFURURfUCBvbiBldmVyeXRoaW5nLgoJKiBkd2FyZjJvdXQuYyAocmVnX3NhdmUpOiBIYW5kbGUgc2F2aW5nIGEgcmVnaXN0ZXIgdG8gaXRzZWxmLgoJKGR3YXJmMm91dF9mcmFtZV9kZWJ1Z19leHByKTogSGFuZGxlIGFuIGludGVybWVkaWF0ZSBjZmEgcmVnLgoJKiBleGNlcHQuYyAoZWhfcmVncyk6IERvbid0IHVzZSB0aGUgc3RhdGljIGNoYWluIHJlZyBpZiBpdCdzCgljYWxsZWUtc2F2ZWQuCgkqIGZyYW1lLmggKGZyYW1lX3N0YXRlKTogQWRkIGNmYV9zYXZlZCBmaWVsZC4KCSogZnJhbWUuYyAoZXhlY3V0ZV9jZmFfaW5zbik6IFNldCBpdC4KCSogbGliZ2NjMi5jICh0aHJvd19oZWxwZXIpOiBEb24ndCBhZGp1c3Qgc3AgaWYgaXQncyByZXN0b3JlZCBpbgoJdGhlIGVwaWxvZ3VlLgoJKiBmdW5jdGlvbi5jIChBUkdfUE9JTlRFUl9DRkFfT0ZGU0VUKTogRGVmYXVsdCB0byBGSVJTVF9QQVJNX09GRlNFVC4KCU5vdyB0YWtlcyBhIHBhcm0uCgkoaW5zdGFudGlhdGVfdmlydHVhbF9yZWdzKTogQWRqdXN0LgoJKiB0bS50ZXhpOiBBZGp1c3QuCgkqIGNvbmZpZy9tNjhrL202OGsuaCAoQVJHX1BPSU5URVJfQ0ZBX09GRlNFVCk6IERvbid0IGRlZmluZS4KCSogY29uZmlnL25zMzJrL25zMzJrLmggKEFSR19QT0lOVEVSX0NGQV9PRkZTRVQpOiBEb24ndCBkZWZpbmUuCgkqIGNvbmZpZy9zcGFyYy9zcGFyYy5oIChBUkdfUE9JTlRFUl9DRkFfT0ZGU0VUKTogVGFrZSBhIHBhcm0uCgoJKiBkd2FyZjJvdXQuYyAocmVnX251bWJlcik6IFJlZmVyIHRvIEZJUlNUX1BTRVVET19SRUdJU1RFUi4KCShpbml0aWFsX3JldHVybl9zYXZlKTogVXNlIERXQVJGX0ZSQU1FX1JFR05VTSwgbm90IHJlZ19udW1iZXIuCgoyMDAwLTAzLTIyICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBidWlsdGlucy5kZWY6IE5ldyBmaWxlLgoKCSogTWFrZWZpbGUuaW4gKFRSRUVfSCk6IERlcGVuZCBvbiBidWlsdGlucy5kZWYuCgoJKiBidWlsdGlucy5jIChidWlsdF9pbl9uYW1lcyk6IFVzZSBidWlsdGlucy5kZWYuCgoJKiB0cmVlLmggKGJ1aWx0X2luX2Z1bmN0aW9uKTogTGlrZXdpc2UuCgoyMDAwLTAzLTIyICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogdHJlZS5jIChzaXplX2luX2J5dGVzKTogUmV0dXJuIHNpemVfemVyb19ub2RlLCBub3QKCWludGVnZXJfemVyb19ub2RlLgoKMjAwMC0wMy0yMiAgR2VvZmYgS2VhdGluZyAgPGdlb2Zma0BjeWdudXMuY29tPgoKCSogY29uZmlnL2ZwLWJpdC5jIChwYWNrX2QpOiBDb3JyZWN0IHRoZSBjYXNlIHdoZW4gYSBkZW5vcm1hbAoJaXMgcm91bmRlZCB1cCBhbmQgc3RvcHMgYmVpbmcgZGVub3JtYWwuCgoyMDAwLTAzLTIxICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEBjeWdudXMuY29tPgoKCSogY29uZmlnL2FscGhhL2FscGhhLmMgKGZ1bmN0aW9uX2FyZyk6IENoZWNrIGZvciB2b2lkX3R5cGVfbm9kZQoJYmVmb3JlIHVzaW5nIE1VU1RfUEFTU19JTl9TVEFDSy4KCjIwMDAtMDMtMjEgIFN0ZXBoYW5lIENhcnJleiAgPHN0Y2FycmV6QHdvcmxkbmV0LmZyPgoKCSogcmVnbW92ZS5jIChjb21iaW5lX3N0YWNrX2FkanVzdG1lbnRzX2Zvcl9ibG9jayk6IENoZWNrIHRoYXQKCXRoZSBzdGFjayBwb2ludGVyIGlzIGEgdmFsaWQgbWVtb3J5IGFkZHJlc3MuCgpXZWQgTWFyIDIyIDExOjQ0OjUwIE1FVCAyMDAwICBKYW4gSHViaWNrYSAgPGpoQHN1c2UuY3o+CgoJKiBjYWxscy5jOiByZS1pbnN0YWxsIE1hciAxNiBlbWl0X2xpYnJhcnlfY2FsbCBtZXJnZS4KCjIwMDAtMDMtMjEgIEpha3ViIEplbGluZWsgIDxqYWt1YkByZWRoYXQuY29tPgoKCSogY29uZmlnL3NwYXJjL3NwYXJjLmMgKG1lbV9taW5fYWxpZ25tZW50KTogSWYgbm90IG9wdGltaXppbmcsCgl3ZSBjYW5ub3QgYmUgc3VyZSB0aGF0IGlmIHJlbG9hZF9jb21wbGV0ZWQgYmFzZSByZWdpc3RlciB3aWxsCgliZSBwcm9wZXJseSBhbGlnbmVkLgoKMjAwMC0wMy0yMSAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAY3lnbnVzLmNvbT4KCgkqIGZsb3cuYyAoZGVsZXRlX2Jsb2NrKTogRml4IHR5cG8gbGFzdCBjaGFuZ2UuCgoyMDAwLTAzLTIxICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogYy1jb21tb24uYyAoY19leHBhbmRfZXhwcl9zdG10KTogVXNlIENPTVBMRVRFX1RZUEVfT1JfVk9JRF9QLAoJbm90IENPTVBMRVRFX1RZUEVfUCwgdG8gY2hlY2sgdGhlIHR5cGUgb2YgdGhlIGV4cHJlc3Npb24uCgoyMDAwLTAzLTIxICBNaWNoYWVsIE1laXNzbmVyICA8bWVpc3NuZXJAcmVkaGF0LmNvbT4KCgkqIGNvbmZpZy9hbHBoYS9hbHBoYS5tZCAoZmxvYXRpbmcgcG9pbnQgaW5zbnMpOiBBZGQgVEFSR0VUX0ZQIHRvCglhbGwgZmxvYXRpbmcgcG9pbnQgaW5zbnMgdGhhdCBqdXN0IHRlc3RlZCB0aGUgbWFjcm8KCVRBUkdFVF9IQVNfWEZMT0FUSU5HX0xJQlMuCgkobW92c2YvbW92ZGYgcmVjb2duaXplcnMpOiBBZGQgc2VwYXJhdGUgaW5zbnMgaWYgLW1uby1mcC1yZWdzIGlzCgl1c2VkIHRvIG9ubHkgdXNlIHRoZSBncHJzLgoKMjAwMC0wMy0yMSAgTmF0aGFuIFNpZHdlbGwgIDxuYXRoYW5AY29kZXNvdXJjZXJ5LmNvbT4KCgkqIHRyZWUuaCAoQ09NUExFVEVfVFlQRV9QKTogTmV3IG1hY3JvLgoJKENPTVBMRVRFX09SX1ZPSURfVFlQRV9QKTogTmV3IG1hY3JvLgoJKENPTVBMRVRFX09SX1VOQk9VTkRfQVJSQVlfVFlQRV9QKTogTmV3IG1hY3JvLgoJKiBzdG9yLWxheW91dC5jIChsYXlvdXRfdHlwZSwgY2FzZSBWT0lEX1RZUEUpOiBEb24ndCBzZXQgVFlQRV9TSVpFLgoJKiBjLWF1eC1pbmZvLmMgKGdlbl90eXBlKTogVXNlIHRoZW0uCgkqIGMtY29tbW9uLmMgKGNfZXhwYW5kX2V4cHJfc3RtdCk6IExpa2V3aXNlLgoJKiBjLWRlY2wuYyAocG9wbGV2ZWwsIHB1c2hkZWNsLCBzdGFydF9kZWNsLCBmaW5pc2hfZGVjbCwKCWdyb2tkZWNsYXJhdG9yLCBncm9rcGFybXMsIGZpbmlzaF9zdHJ1Y3QsIHN0YXJ0X2Z1bmN0aW9uLAoJc3RvcmVfcGFybV9kZWNscywgY29tYmluZV9wYXJtX2RlY2xzKTogTGlrZXdpc2UuCgkqIGMtcGFyc2UueSAoY2FzdF9leHByKTogTGlrZXdpc2UuCgkqIGMtdHlwZWNrLmMgKHJlcXVpcmVfY29tcGxldGVfdHlwZSwgY19zaXplb2YsIGNfc2l6ZW9mX25vd2FybiwKCWNfc2l6ZV9pbl9ieXRlcywgY19hbGlnbm9mLCBidWlsZF9jb21wb25lbnRfcmVmLAoJYnVpbGRfaW5kaXJlY3RfcmVmLCBidWlsZF9hcnJheV9yZWYsIGNvbnZlcnRfYXJndW1lbnRzLAoJYnVpbGRfYmluYXJ5X29wLCBwb2ludGVyX2RpZmYsIGJ1aWxkX3VuYXJ5X29wLCBkaWdlc3RfaW5pdDogTGlrZXdpc2UuCgkqIGNhbGxzLmMgKGluaXRpYWxpemVfYXJndW1lbnRfaW5mb3JtYXRpb24pOiBMaWtld2lzZS4KCSogY29udmVydC5jIChjb252ZXJ0X3RvX2ludGVnZXIpOiBMaWtld2lzZS4KCSogZGJ4b3V0LmMgKGRieG91dF90eXBlZGVmcywgZGJ4b3V0X3R5cGUsIGRieG91dF9zeW1ib2wpOiBMaWtld2lzZS4KCSogZHdhcmZvdXQuYyAobG9jYXRpb25fb3JfY29uc3RfdmFsdWVfYXR0cmlidXRlLAoJb3V0cHV0X2VudW1lcmF0aW9uX3R5cGVfZGllLCBvdXRwdXRfc3RydWN0dXJlX3R5cGVfZGllLAoJb3V0cHV0X3VuaW9uX3R5cGVfZGllLCBvdXRwdXRfdHlwZSk6IExpa2V3aXNlLgoJKiBleHByLmMgKHNhZmVfZnJvbV9wLCBleHBhbmRfZXhwcik6IExpa2V3aXNlLgoJKiBmdW5jdGlvbi5jIChhc3NpZ25fcGFybXMpOiBMaWtld2lzZS4KCSogc2Rib3V0LmMgKHNkYm91dF9zeW1ib2wsIHNkYm91dF9vbmVfdHlwZSk6IExpa2V3aXNlLgoJKiB0cmVlLmMgKGJ1aWxkX2FycmF5X3R5cGUsIGJ1aWxkX2Z1bmN0aW9uX3R5cGUsCglidWlsZF9tZXRob2RfdHlwZSwgYnVpbGRfb2Zmc2V0X3R5cGUsIGJ1aWxkX2NvbXBsZXhfdHlwZSk6IExpa2V3aXNlLgoJKiBjLXBhcnNlLmMsIGMtcGFyc2UuaDogUmVnZW5lcmF0ZWQuCgoyMDAwLTAzLTIxICBNaWNoYWVsIEhheWVzICA8bS5oYXllc0BlbGVjLmNhbnRlcmJ1cnkuYWMubno+CgoJKiBjb25maWcvYzR4L3J0ZW1zLmg6IEluY2x1ZGUgY29uZmlnL3J0ZW1zLmguCgpUdWUgTWFyIDIxIDA5OjI0OjAwIDIwMDAgIERlbmlzIENoZXJ0eWtvdiAgPGRlbmlzY0BvdmVydGEucnU+CgoJKiBjb25maWcvYXZyL2F2ci5jIChlbmNvZGVfc2VjdGlvbl9pbmZvKTogc2V0cyBTWU1CT0xfUkVGX0ZMQUcgaWYKCWRlY2wgaXMgYSBGVU5DVElPTl9ERUNMCgpNb24gTWFyIDIwIDE5OjUzOjUzIDIwMDAgIEppbSBXaWxzb24gIDx3aWxzb25AY3lnbnVzLmNvbT4KCgkqIGNvbmZpZy9pYTY0L2lhNjQuYyAoaWE2NF9leHBhbmRfcHJvbG9ndWUpOiBEb24ndCBhYm9ydCBpZiBsZWFmCglmdW5jdGlvbiB1c2VzIG91dHB1dCByZWdpc3RlcnMuICBEb24ndCBzYXZlIFJQIGZvciBsZWFmIGZ1bmN0aW9ucy4KCURvIHNhdmUgUlAgZXZlbiBpZiBubyBlcGlsb2d1ZS4KCSogY29uZmlnL2lhNjQvaWE2NC5oIChGSVhFRF9SRUdJU1RFUlMpOiBVbm1hcmsgaW4vb3V0IHJlZ2lzdGVycy4KCShDQUxMX1VTRURfUkVHSVNURVJTKTogVW5tYXJrIGluIHJlZ2lzdGVycy4KCShSRUdfQUxMT0NfT1JERVIpOiBNb3ZlIG91dCByZWdzIHVwLCB0byBuZWFyIHRoZSB0b3AuICBNb3ZlIGluIHJlZ3MgdXAsCgl0byBuZWFyIHRoZSBtaWRkbGUuCgoyMDAwLTAzLTIwICBHZW9mZiBLZWF0aW5nICA8Z2VvZmZrQGN5Z251cy5jb20+CgoJKiBjb25maWcvcnM2MDAwL3JzNjAwMC5tZCAoYnVub3JkZXJlZCk6IE5ldyBleHBhbmRlci4KCShib3JkZXJlZCk6IE5ldyBleHBhbmRlci4KCShidW5lcSk6IE5ldyBleHBhbmRlci4KCShidW5nZSk6IE5ldyBleHBhbmRlci4KCShidW5ndCk6IE5ldyBleHBhbmRlci4KCShidW5sZSk6IE5ldyBleHBhbmRlci4KCShidW5sdCk6IE5ldyBleHBhbmRlci4KCShibHRndCk6IE5ldyBleHBhbmRlci4KCgkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLmMgKGNjcl9iaXQpOiBIYW5kbGUgdW5vcmRlcmVkIGNvbXBhcmlzb25zLgoJKGNjcl9iaXRfbmVnYXRlZF9wKTogTmV3IGZ1bmN0aW9uLgoJKHByaW50X29wZXJhbmQpOiBGb3IgJUMsIGdlbmVyYXRlIGFwcHJvcHJpYXRlIGNyb3IgZm9yIFVORVEsCglVTkxULCBVTkdULCBhbmQgTFRHVC4gIEZvciAlVCBhbmQgJXQsIHVzZSBjY3JfYml0X25lZ2F0ZWRfcC4KCjIwMDAtMDMtMjAgIEFuZHJlYXMgSmFlZ2VyICA8YWpAc3VzZS5kZT4KCgkqIHNkYm91dC5jIChzZGJvdXRfb25lX3R5cGUpOiBBZGQgYnJhY2VzIHRvIGF2b2lkICJhbWJpZ291cyBlbHNlIgoJd2FybmluZy4KCgkqIHRyZWUuaCAoc2FmZV9mb3JfdW5zYXZlKTogUHJvdG90eXBlLgoKMjAwMC0wMy0yMCAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAY3lnbnVzLmNvbT4KCgkqIHJlZ21vdmUuYyAoc3RhY2tfbWVtcmVmX3ApOiBGaXggdHlwbywgcmVvcmcgZm9yIHJlYWRhYmlsaXR5LgoJKGNvbWJpbmVfc3RhY2tfYWRqdXN0bWVudHNfZm9yX2Jsb2NrKTogRG9uJ3QgYWxsb3cgc3AgcmVmZXJlbmNlcwoJaW4gdGhlIHNpZGUgb2YgYSBzZXQgd2UncmUgbm90IGZpeGluZyB1cC4KCSogdG9wbGV2LmMgKHJlc3Rfb2ZfY29tcGlsYXRpb24pOiBSdW4gY29tYmluZV9zdGFja19hZGp1c3RtZW50cwoJYWZ0ZXIgbGlmZV9hbmFseXNpcy4KCjIwMDAtMDMtMjAgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgoJKiBjYWxscy5jIChleHBhbmRfY2FsbCk6IERvbid0IGJvdGhlciBnZW5lcmF0aW5nIHRhaWwgY2FsbAoJc2VxdWVuY2VzIGlmIHRoZXJlIGFyZSBwZW5kaW5nIGNsZWFudXBzLiAgVXNlCglleHBhbmRfc3RhcnRfdGFyZ2V0X3RlbXBzL2V4cGFuZF9lbmRfdGFyZ2V0X3RlbXBzIHRvIGVsaWRlCgljbGVhbnVwcyBjcmVhdGVkIGR1cmluZyBzaWJjYWxsIGV4cGFuc2lvbi4KCjIwMDAtMDMtMjAgIEdlb2ZmIEtlYXRpbmcgIDxnZW9mZmtAY3lnbnVzLmNvbT4KCgkqIGNvbmZpZ3VyZS5pbjogU2V0ICRJRlMgdG8gYSB2YWx1ZSBpZiBpdCBkb2Vzbid0IGFscmVhZHkgaGF2ZSBvbmUKCWluIHRoZSAtLWVuYWJsZS1jaGVja2luZyBoYW5kbGluZy4KCSogY29uZmlndXJlOiBSZWdlbmVyYXRlLgoKMjAwMC0wMy0yMCAgTWFydGluIHYuIEz2d2lzICA8bG9ld2lzQGluZm9ybWF0aWsuaHUtYmVybGluLmRlPgoKCSogYy1wYXJzZS5pbiAoU0FWRV9XQVJOX0ZMQUdTKTogVXNlIHNpemVfaW50LgoJKiBjLXBhcnNlLnksIGMtcGFyc2UuYywgb2JqYy9vYmpjLXBhcnNlLnksIG9iamMvb2JqYy1wYXJzZS5jOgoJUmVnZW5lcmF0ZWQuCgpNb24gTWFyIDIwIDExOjQzOjE1IE1FVCAyMDAwICBKYW4gSHViaWNrYSAgPGpoQHN1c2UuY3o+CgoJKiBqdW1wLmMgKGRlbGV0ZV9ub29wX21vdmVzKTogUmVtb3ZlIGNvZGUgYXR0ZW1wdGluZyB0bwoJY29tYmluZSBzdGFjayBhZGp1c3RtZW50cy4KCjIwMDAtMDMtMTkgIE1hcnRpbiB2LiBM9ndpcyAgPGxvZXdpc0BpbmZvcm1hdGlrLmh1LWJlcmxpbi5kZT4KCgkqIGVtaXQtcnRsLmMgKHB1c2hfdG9fZnVsbF9zZXF1ZW5jZSwgZW5kX2Z1bGxfc2VxdWVuY2UpOiBOZXcgZnVuY3Rpb25zLgoJKiBleGNlcHQuYyAoZW1pdF9jbGVhbnVwX2hhbmRsZXIpOiBVc2UgdGhlbS4KCShleHBhbmRfZW5kX2FsbF9jYXRjaCk6IExpa2V3aXNlLgoJKiBmdW5jdGlvbi5jIChmaXh1cF92YXJfcmVmcyk6IExpa2V3aXNlLgoJKGV4cGFuZF9mdW5jdGlvbl9lbmQpOiBDbGVhciBjYXRjaF9jbGF1c2VzX2xhc3QuCgkqIHJ0bC5oIChwdXNoX3RvX2Z1bGxfc2VxdWVuY2UsIGVuZF9mdWxsX3NlcXVlbmNlKTogRGVjbGFyZS4KCSogZXhjZXB0LmggKHN0cnVjdCBlaF9zdGF0dXMpOiBOZXcgZmllbGQgeF9jYXRjaF9jbGF1c2VzX2xhc3QuCgkoY2F0Y2hfY2xhdXNlc19sYXN0KTogTmV3IGRlZmluZS4KCgkqIE1ha2VmaWxlLmluICh0cmVlLm8pOiBEZXBlbmQgb24gSEFTSFRBQl9ILgoJKiB0cmVlLmM6IEluY2x1ZGUgaGFzaHRhYi5oLgoJKHN0cnVjdCB0eXBlX2hhc2gpOiBSZW1vdmUgbmV4dCBmaWVsZC4KCShUWVBFX0hBU0hfU0laRSk6IFJlbW92ZS4KCShUWVBFX0hBU0hfSU5JVElBTF9TSVpFKTogTmV3IGRlZmluZS4KCSh0eXBlX2hhc2hfdGFibGUpOiBDaGFuZ2UgdHlwZSB0byBodGFiX3QuCgkodHlwZV9oYXNoX2VxLCB0eXBlX2hhc2hfaGFzaCwgcHJpbnRfdHlwZV9oYXNoX3N0YXRpc3RpY3MsCgltYXJrX2hhc2hfZW50cnkpOiBOZXcgZnVuY3Rpb25zLgoJKGluaXRfb2JzdGFja3MpOiBBbGxvY2F0ZSB0eXBlIGhhc2guCgkodHlwZV9oYXNoX2xvb2t1cCk6IFVzZSBodGFiIGZ1bmN0aW9ucy4KCSh0eXBlX2hhc2hfYWRkLCBtYXJrX3R5cGVfaGFzaCk6IExpa2V3aXNlLgoJKGR1bXBfdHJlZV9zdGF0aXN0aWNzKTogQ2FsbCBwcmludF90eXBlX2hhc2hfc3RhdGlzdGljcy4KCjIwMDAtMDMtMTkgIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIHJzNjAwMC90LWFpeDQxOiBOZXcgZmlsZS4KCgkqIGNvbmZpZ3VyZS5pbiAoe3JzNjAwMCxwb3dlcnBjfS1pYm0tYWl4NC5bMTJdKik6IFVzZSBpdC4KClN1biBNYXIgMTkgMTM6Mjc6MzAgMjAwMCAgSGFucy1QZXRlciBOaWxzc29uICA8aHBAYXhpcy5jb20+CgoJKiB0bS50ZXhpIChEcml2ZXIpOiBGaXggdHlwb3MgYW5kIHR3ZWFrIGVudHJ5IGZvcgoJSU5DTFVERV9ERUZBVUxUUy4KCU1vdmUgbWlzcGxhY2VkIFNUUlVDVF9GT1JDRV9CTEsgZW50cnkgLi4uCgkoU3RvcmFnZSBMYXlvdXQpOiAuLi4gdG8gaGVyZS4KCShSdW4tdGltZSBUYXJnZXQpOiBSZWNvbW1lbmQgaGF2aW5nIFRBUkdFVF9NQVNLXy4uLiBoZWxwZXIgbWFjcm9zLgoKMjAwMC0wMy0xOSAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAY3lnbnVzLmNvbT4KCgkqIGZsb3cuYyAoZGVsZXRlX2Jsb2NrKTogRGVsZXRlIHRoZSBhZGRyX3ZlYyBhbG9uZyB3aXRoIHRoZSBibG9jay4KCShmbG93X2RlbGV0ZV9pbnNuKTogRGVjcmVtZW50IExBQkVMX05VU0VTIHdoZW4gZGVsZXRpbmcgaW5zbnMgdGhhdAoJcmVmZXJlbmNlIGxhYmVscy4KCgkqIGZvbGQtY29uc3QuYyAoZXh0cmFjdF9tdWxkaXYpOiBBcHBseSB0eXBlIGNoZWNrIGZvciBkZWZpbmVkCglvdmVyZmxvdyB0byBtdWx0aXBseSBhcyB3ZWxsIGFzIGRpdmlkZS4KCgkqIHN0b3ItbGF5b3V0LmMgKGxheW91dF9kZWNsKTogRG9uJ3QgYWJvcnQgb24gYW55IHplcm8gc2l6ZWQgZGVjbC4KCjIwMDAtMDMtMTggIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBlbWl0LXJ0bC5jIChyZW1vdmVfdW5uZWNlc3Nhcnlfbm90ZXMpOiBDaGVjayB0aGF0IGFsbAoJTk9URV9JTlNOX0JMT0NLX0JFRyBhbmQgTk9URV9JTlNOX0JMT0NLX0VORCBub3RlcyBoYXZlIGFuCglhc3NvY2lhdGVkIE5PVEVfQkxPQ0suCgkqIGZ1bmN0aW9uLmggKGlkZW50aWZ5X2Jsb2Nrcyk6IFVwZGF0ZSBjb21tZW50cy4KCShyZW9yZGVyX2Jsb2Nrcyk6IERlY2xhcmUuCgkqIGZ1bmN0aW9uLmMgKGlkZW50aWZ5X2Jsb2Nrcyk6IERvbid0IHRha2UgcGFyYW10ZXJzLgoJKHJlb3JkZXJfYmxvY2tzKTogRG9uJ3QgdGFrZSBwYXJhbWV0ZXJzLgoJKiBsb29wLmggKGZpbmRfbG9vcF90cmVlX2Jsb2Nrcyk6IFJlbW92ZS4KCSh1bnJvbGxfYmxvY2tfdHJlZXMpOiBMaWtld2lzZS4KCSogbG9vcC5jIChsb29wX29wdGltaXplKTogRG9uJ3QgY2FsbCBmaW5kX2xvb3BfdHJlZV9ibG9ja3MuICBVc2UKCXJlb3JkZXJfYmxvY2tzIGluc3RlYWQgb2YgdW5yb2xsX2Jsb2NrX3RyZWVzLmgKCSogc2liY2FsbC5jIChvcHRpbWl6ZV9zaWJsaW5nX2FuZF90YWlsX3JlY3Vyc2l2ZV9jYWxscyk6IExpa2V3aXNlLgoJKiBzdG10LmMgKGZpbmRfbG9vcF90cmVlX2Jsb2Nrcyk6IFJlbW92ZS4KCSh1bnJvbGxfYmxvY2tfdHJlZXMpOiBMaWtld2lzZS4KCSogdG9wbGV2LmMgKHJlc3Rfb2ZfY29tcGlsYXRpb24pOiBEb24ndCBjYWxsIGZpbmRfbG9vcF90cmVlX2Jsb2NrcwoJaW4gd2hvbGUtZnVuY3Rpb24gbW9kZS4KCSogdHJlZS5oIChyZW9yZGVyX2Jsb2Nrcyk6IFJlbW92ZSBkZWNsYXJhdGlvbi4KCgkqIGV4cHIuYzogSW5jbHVkZSBpbnRsLmguCgkqIE1ha2VmaWxlLmluIChleHByLm8pOiBEZXBlbmQgb24gaW50bC5oLgoKMjAwMC0wMy0xOCAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAY3lnbnVzLmNvbT4KCgkqIGV4cHIuYyAoZW1pdF9tb3ZlX2luc25fMSk6IENsYXJpZnkgY2Fubm90X2lubGluZSBtZXNzYWdlLgoKMjAwMC0wMy0xOCAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIHRyZWUuaCAodHJlZV9pbmRleCk6IFJlbW92ZSBlbnVtZXJhbHMgZm9yIGludGVnZXIgdHlwZXMuCgkoaW50ZWdlcl90eXBlX2tpbmQpOiBOZXcgdHlwZS4KCShpbnRlZ2VyX3R5cGVzKTogTmV3IHZhcmlhYmxlLgoJKGNoYXJfdHlwZV9ub2RlKTogQWRqdXN0LgoJKHNpZ25lZF9jaGFyX3R5cGVfbm9kZSk6IExpa2V3aXNlLgoJKHVuc2lnbmVkX2NoYXJfdHlwZV9ub2RlKTogTGlrZXdpc2UuCgkoc2hvcnRfaW50ZWdlcl90eXBlX25vZGUpOiBMaWtld2lzZS4KCShzaG9ydF91bnNpZ25lZF90eXBlX25vZGUpOiBMaWtld2lzZS4KCShpbnRlZ2VyX3R5cGVfbm9kZSk6IExpa2V3aXNlLgoJKHVuc2lnbmVkX3R5cGVfbm9kZSk6IExpa2V3aXNlLgoJKGxvbmdfaW50ZWdlcl90eXBlX25vZGUpOiBMaWtld2lzZS4KCShsb25nX3Vuc2lnbmVkX3R5cGVfbm9kZSk6IExpa2V3aXNlLgoJKGxvbmdfbG9uZ19pbnRlZ2VyX3R5cGVfbm9kZSk6IExpa2V3aXNlLgoJKGxvbmdfbG9uZ191bnNpZ25lZF90eXBlX25vZGUpOiBMaWtld2lzZS4KCSogdHJlZS5jIChpbnRlZ2VyX3R5cGVzKTogTmV3IHZhcmlhYmxlLgoJKGluaXRfb2JzdGFja3MpOiBSZWdpc3RlciBpdCBhcyBhIHJvb3QuCgpTYXQgTWFyIDE4IDE0OjM4OjAwIDIwMDAgIEphc29uIEVja2hhcmR0ICA8amxlQGN5Z251cy5jb20+CgoJKiBiYi1yZW9yZGVyLmMgKHJlb3JkZXJfYmFzaWNfYmxvY2tzKTogVXBkYXRlIFBSRVZfSU5TTiBhcyB3ZWxsIGFzCglORVhUX0lOU04uIFVwZGF0ZSBsYXN0IGluc24gaW4gY2hhaW4uCgoyMDAwLTAzLTE3ICBKYXNvbiBNZXJyaWxsICA8amFzb25AY2FzZXkuY3lnbnVzLmNvbT4KCgkqIGR3YXJmMm91dC5jIChkd2FyZjJvdXRfZGVjbCk6IERvbid0IGVtaXQgYW55dGhpbmcgZm9yIHR5cGVzCgl3aXRoIFRZUEVfREVDTF9TVVBQUkVTU19ERUJVRyBzZXQuCgoyMDAwLTAzLTE4ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEBjeWdudXMuY29tPgoKCSogZmxvdy5jIChtYWtlX2VkZ2VzKTogVXNlIElOVFZBTCB0byBhY2Nlc3MgUkVHX0VIX1JFR0lPTiB2YWx1ZS4KCjIwMDAtMDMtMTggIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgoJKiBpMzg2LmMgKGNhbGxfaW5zbl9vcGVyYW5kKTogQWx3YXlzIGFsbG93IFNZTUJPTF9SRUYsCgljYXJlIGZvciBIQUxGX1BJQ19QLgoJKGV4cGFuZGVyX2NhbGxfaW5zbl9vcGVyYW5kKTogUmVtb3ZlLgoJKGl4ODZfZXhwYW5kX2VwaWxvZ3VlKTogTmV3IGFyZyBgZW1pdF9yZXR1cm4nIHRvIGNvbnRyb2wgcmV0dXJuIGluc24uCgkqIGkzODYuaCAoUFJFRElDQVRFX0NPREVTKTogVXBkYXRlLgoJKiBpMzg2Lm1kIChhbGwgY2FsbCBleHBhbmRlcnMpOiBSZW1vdmUgcHJlZGljYXRlcywgcmVtb3ZlIHNwZWNpYWwKCWhhbmRsaW5nIGZvciBoYWxmLXBpYy4KCSgqY2FsbF8xLCAqY2FsbF92YWx1ZV8xKTogSGFuZGxlIFNJQkxJTkdfQ0FMTF9QIGluc25zLgoJKCpjYWxsX3BvcF9waWMyLCAqY2FsbF9waWMyLCAqY2FsbF92YWx1ZV9wb3BfMiwgKmNhbGxfdmFsdWVfMik6IFJlbW92ZS4KCShzaWJjYWxsX2VwaWxvZ3VlKTogTmV3LgoKMjAwMC0wMy0xNyAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAY3lnbnVzLmNvbT4KCgkqIHJ0bGFuYWwuYyAoc2luZ2xlX3NldCk6IFJlamVjdCBpZiB0aGUgcGFyYWxsZWwgaGFzIGFueXRoaW5nCglleGNlcHQgU0VUIG9yIFVTRSBvciBDTE9CQkVSLgoKMjAwMC0wMy0xNyAgSmVmZiBMYXcgIDxsYXdAY3lnbnVzLmNvbT4KCSAgICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEBjeWdudXMuY29tPgoKCSogTWFrZWZpbGUuaW4gKE9CSlMpOiBBZGQgc2liY2FsbC5vLgoJKHNpYmNhbGwubyk6IE5ldy4KCSogc2liY2FsbC5jOiBOZXcgZmlsZS4KCSogY2FsbHMuYyAoRlVOQ1RJT05fT0tfRk9SX1NJQkNBTEwpOiBQcm92aWRlIGRlZmF1bHQuCgkoRUNGX0lTX0NPTlNULCBFQ0ZfTk9USFJPVywgRUNGX1NJQkNBTEwpOiBOZXcuCgkoZW1pdF9jYWxsXzEpOiBSZXBsYWNlIGBpc19jb25zdCcgYW5kIGBub3Rocm93JyB3aXRoIGBlY2ZfZmxhZ3MnLgoJRW1pdCBzaWJjYWxsIHBhdHRlcm5zIHdoZW4gcmVxdWVzdGVkLiAgVXBkYXRlIGFsbCBjYWxsZXJzLgoJKGV4cGFuZF9jYWxsKTogR2VuZXJhdGUgQ0FMTF9QTEFDRUhPTERFUiBpbnNucyB3aGVuIHRhaWwgY2FsbAoJZWxpbWluYXRpb24gc2VlbXMgZmVhc2FibGUuCgkqIGZpbmFsLmMgKGxlYWZfZnVuY3Rpb25fcCk6IFNpYmxpbmcgY2FsbHMgZG9uJ3QgZGlzY291bnQgYmVpbmcKCWEgbGVhZiBmdW5jdGlvbi4KCSogZmxvdy5jIChIQVZFX3NpYmNhbGxfZXBpbG9ndWUpOiBQcm92aWRlIGRlZmF1bHQuCgkoZmluZF9iYXNpY19ibG9ja3NfMSk6IFNpYmxpbmcgY2FsbHMgZG9uJ3QgdGhyb3cuCgkobWFrZV9lZGdlcyk6IE1ha2UgZWRnZSBmcm9tIHNpYmxpbmcgY2FsbCB0byBFWElULgoJKHByb3BhZ2F0ZV9ibG9jayk6IERvbid0IHJlbW92ZSBzaWJjYWxsX2VwaWxvZ3VlIGluc25zLgoJKiBmdW5jdGlvbi5jIChwcm9sb2d1ZSwgZXBpbG9ndWUpOiBUdXJuIGludG8gdmFycmF5cy4gIFVwZGF0ZSBhbGwgdXNlcy4KCShzaWJjYWxsX2VwaWxvZ3VlKTogTmV3LgoJKGZpeHVwX3Zhcl9yZWZzKTogU2NhbiBDQUxMX1BMQUNFSE9MREVSIHN1Yi1zZXF1ZW5jZXMuCgkoaWRlbnRpZnlfYmxvY2tzXzEpOiBMaWtld2lzZS4gIEJyZWFrIG91dCBmcm9tIC4uLgoJKGlkZW50aWZ5X2Jsb2Nrcyk6IC4uLiBoZXJlLgoJKHJlb3JkZXJfYmxvY2tzXzEpOiBTY2FuIENBTExfUExBQ0VIT0xERVIuICBCcmVhayBvdXQgZnJvbSAuLi4KCShyZW9yZGVyX2Jsb2Nrcyk6IC4uLiBoZXJlLgoJKGluaXRfZnVuY3Rpb25fZm9yX2NvbXBpbGF0aW9uKTogWmFwIHByb2xvZ3VlL2VwaWxvZ3VlIGFzIHZhcnJheXMuCgkocmVjb3JkX2luc25zKTogRXh0ZW5kIGEgdmFycmF5IGluc3RlYWQgb2YgbWFsbG9jaW5nIG5ldyBtZW1vcnkuCgkoY29udGFpbnMpOiBSZWFkIGEgdmFycmF5IG5vdCBhcnJheSBvZiBpbnRzLgoJKHNpYmNhbGxfZXBpbG9ndWVfY29udGFpbnMpOiBOZXcuCgkodGhyZWFkX3Byb2xvZ3VlX2FuZF9lcGlsb2d1ZV9pbnNucyk6IEVtaXQgYW5kIHJlY29yZAoJc2liY2FsbF9lcGlsb2d1ZSBwYXR0ZXJucy4KCShpbml0X2Z1bmN0aW9uX29uY2UpOiBBbGxvY2F0ZSBwcm9sb2d1ZS9lcGlsb2d1ZSB2YXJyYXlzLgoJKiBnZW5mbGFncy5jIChnZW5faW5zbik6IFRyZWF0IHNpYmNhbGwgcGF0dGVybnMgYXMgY2FsbHMuCgkqIGludGVncmF0ZS5jIChzYXZlX3Bhcm1faW5zbnMpOiBSZWN1cnNlIG9uIENBTExfUExBQ0VIT0xERVIgcGF0dGVybnMuCglCcm9rZW4gb3V0IGZyb20gLi4uCgkoc2F2ZV9mb3JfaW5saW5lX25vY29weSk6IC4uLiBoZXJlLgoJKGNvcHlfaW5zbl9saXN0KTogUmVjdXJzZSBvbiBDQUxMX1BMQUNFSE9MREVSIHBhdHRlcm5zLgoJQnJva2VuIG91dCBmcm9tIC4uLgoJKGV4cGFuZF9pbmxpbmVfZnVuY3Rpb24pOiAuLi4gaGVyZS4KCShjb3B5X3J0eF9hbmRfc3Vic3RpdHV0ZSk6IEhhbmRsZSBOT1RFX0lOU05fREVMRVRFRF9MQUJFTC4KCShzdWJzdF9jb25zdGFudHMpOiBIYW5kbGUgJ24nIGZvcm1hdHMuCgkqIGp1bXAuYyAoanVtcF9vcHRpbWl6ZV9taW5pbWFsKTogTmV3LgoJKGp1bXBfb3B0aW1pemVfMSk6IE5ldyBhcmcgYG1pbmltYWwnOyB1cGRhdGUgY2FsbGVycy4gIEVsaWRlIG1vc3QKCW9wdGltaXphdGlvbnMgaWYgaXQncyBzZXQuCgkqIHJ0bC5jIChjb3B5X3J0eCk6IERvIGNvcHkganVtcCAmIGNhbGwgZm9yIGluc25zLgoJKiBydGwuaCAoc3RydWN0IHJ0eF9kZWYpOiBEb2N1bWVudCB1c2Ugb2YganVtcCBhbmQgY2FsbCBmb3IgaW5zbnMuCgkoU0lCTElOR19DQUxMX1ApOiBOZXcuCgkoc2liY2FsbF91c2VfdCk6IE5ldy4KCSogdG9wbGV2LmMgKHJlc3Rfb2ZfY29tcGlsYXRpb24pOiBEbyBpbml0X0VYUFJfSU5TTl9MSVNUX2NhY2hlIGVhcmxpZXIuCglJbnZva2Ugb3B0aW1pemVfc2libGluZ19hbmRfdGFpbF9yZWN1cnNpdmVfY2FsbHMuCgkqIHRyZWUuYyAobGFuZ19zYWZlX2Zvcl91bnNhdmUpOiBOZXcuCgkoc2FmZV9mb3JfdW5zYXZlKTogTmV3LgoJKiB0cmVlLmggKGxhbmdfc2FmZV9mb3JfdW5zYXZlLCBzYWZlX2Zvcl91bnNhdmUpOiBEZWNsYXJlLgoKCSogYWxwaGEuaCAoRlVOQ1RJT05fT0tfRk9SX1NJQkNBTEwpOiBOZXcuCgkqIGFscGhhLm1kIChzaWJjYWxsLCBzaWJjYWxsX3ZhbHVlLCBzaWJjYWxsX2VwaWxvZ3VlKTogTmV3LgoJKCpzaWJjYWxsX29zZl8xLCAqc2liY2FsbF92YWx1ZV9vc2ZfMSk6IE5ldy4KCjIwMDAtMDMtMTcgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBvYmpjL29iamMtYWN0LmMgKGVuY29kZV9tZXRob2RfcHJvdG90eXBlKTogUGFzcyB0eXBlcywgbm90CglQQVJNX0RFQ0xzLCB0byBpbnRfc2l6ZV9pbl9ieXRlcy4KCkZyaSBNYXIgMTcgMTE6NTE6MzQgMjAwMCAgSmltIFdpbHNvbiAgPHdpbHNvbkBjeWdudXMuY29tPgoKCSogY29uZmlnL2lhNjQvaWE2NC5tZCAobWl4NHJpZ2h0XzNvcCk6IFN3YXAgJTEgYW5kICUyIGluIHRlbXBsYXRlLgoKCSogY29uZmlnL2lhNjQvaWE2NC1wcm90b3MuaCwgY29uZmlnL2lhNjQvaWE2NC5jLCBjb25maWcvaWE2NC9pYTY0LmgsCgljb25maWcvaWE2NC9pYTY0Lm1kLCBjb25maWcvaWE2NC94bS1pYTY0Lmg6IEZpeCBjb3B5cmlnaHRzIGFnYWluLgoKRnJpIE1hciAxNyAwODowOToxNCAyMDAwICBSaWNoYXJkIEtlbm5lciAgPGtlbm5lckB2bHNpMS51bHRyYS5ueXUuZWR1PgoKCSogQ2xlYW4gdXAgdXNhZ2VzIG9mIFRSRUVfSU5UX0NTVF9MT1cuCgkqIGMtcGFyc2UuaW4gKFJFU1RPUkVfV0FSTl9GTEFHUyk6IFVzZSB0cmVlX2xvd19jc3QuCgkqIGMtcGFyc2UueSwgYy1wYXJzZS5jLCBvYmpjL29iamMtcGFyc2UueSwgb2JqYy9vYmpjLXBhcnNlLmM6CglSZWdlbmVyYXRlZC4KCSogYy10cmVlLmggKG1pbl9wcmVjaXNpb24pOiBNb3ZlIGRlY2xhcmF0aW9uIHRvIGhlcmUuCgkqIGMtdHlwZWNrLmMgKGJ1aWxkX2JpbmFyeV9vcCk6IFVzZSBob3N0X2ludGVnZXJwIGFuZCB0cmVlX2xvd19jc3QuCgkoYnVpbGRfdW5hcnlfb3AsIGFkZF9wZW5kaW5nX2luaXQpOiBVc2UgYml0X3Bvc2l0aW9uLgoJKHBlbmRpbmdfaW5pdF9tZW1iZXIsIHByb2Nlc3NfaW5pdF9lbGVtZW50KTogTGlrZXdpc2UuCgkocmVhbGx5X3N0YXJ0X2luY3JlbWVudGFsX2luaXQsIHB1c2hfaW5pdF9sZXZlbCwgcG9wX2luaXRfbGV2ZWwpOgoJRG9uJ3QgbWFrZSBjb3BpZXMgb2Ygbm9kZXMgb3IgbW9kaWZ5IHRoZW0gaW4gcGxhY2UsIHVzZSBjb25zaXN0ZW50Cgl0eXBlcyB3aGVuIHRyYWNraW5nIHBvc2l0aW9ucywgYW5kIHVzZSB0cmVlIHJvdXRpbmVzIGNvbXB1dGF0aW9ucy4KCShzZXRfaW5pdF9pbmRleCwgb3V0cHV0X2luaXRfZWxlbWVudCk6IExpa2V3aXNlLgoJKG91dHB1dF9wZW5kaW5nX2luaXRfZWxlbWVudHMsIHByb2Nlc3NfaW5pdF9lbGVtZW50KTogTGlrZXdpc2UuCgkqIGRieG91dC5jIChkYnhvdXRfdHlwZV9maWVsZHMpOiBVc2UgYml0X3Bvc2l0aW9uLCBob3N0X2ludGVnZXJwLAoJdHJlZV9sb3dfY3N0IGFuZCBpbnRfYml0X3Bvc2l0aW9uOyBhbHNvIG1pbm9yIGNsZWFudXAuCgkoZGJ4b3V0X3R5cGVfbWV0aG9kXzEsIGRieG91dF9yYW5nZV90eXBlLCBkYnhvdXRfdHlwZSk6IExpa2V3aXNlLgoJKHByaW50X2NzdF9vY3RhbCk6IFByZWNpc2lvbiBpcyB1bnNpZ25lZC4KCShkYnhvdXRfc3ltYm9sKTogRW5zdXJlIERFQ0xfSU5JVElBTCBpcyBpbi1yYW5nZSBhbmQgdXNlIHRyZWVfbG93X2NzdC4KCSogZHdhcmYyb3V0LmMgKGNlaWxpbmcpOiBJbnB1dCBhbmQgb3V0cHV0IGFyZSB1bnNpZ25lZCBIT1NUX1dJREVfSU5ULgoJKHNpbXBsZV90eXBlX2FsaWduX2luX2JpdHMpOiBSZXN1bHQgaXMgdW5zaWduZWQgaW50LgoJVXNlIHRyZWVfaW50X2xvd19jc3QgYW5kIGhvc3RfaW50ZWdlcnAuCgkoc2ltcGxlX3R5cGVfc2l6ZV9pbl9iaXRzKTogUmVzdWx0IGlzIHVuc2lnbmVkIEhPU1RfV0lERV9JTlQuCgkoZmllbGRfYnl0ZV9vZmZzZXQpOiBSZXN1bHQgaXMgSE9TVF9XSURFX0lOVC4KCUNoYW5nZSB0eXBlcyBvZiBpbnRlcm5hbCB2YXJpYWJsZXMgc28gYWxpZ25tZW50cyBhcmUgdW5zaWduZWQgaW50LAoJb2Zmc2V0cyBhcmUgSE9TVF9XSURFX0lOVCBhbmQgc2l6ZXMgYXJlIHVuc2lnbmVkIEhPU1RfV0lERV9JTlQuCglVc2UgaG9zdF9pbnRlZ2VycCwgdHJlZV9sb3dfY3N0LCBhbmQgaW50X2JpdF9wb3NpdGlvbi4KCShhZGRfYml0X29mZnNldF9hdHRyaWJ1dGUpOiBMaWtld2lzZS4KCShhZGRfZGF0YV9tZW1iZXJfbG9jYXRpb25fYXR0cmlidXRlKTogVXNlIHRyZWVfY3N0X2xvdy4KCShhZGRfYm91bmRfaW5mbyk6IFVzZSBob3N0X2ludGVnZXJwLCBpbnRlZ2VyX3plcm9wLCBhbmQgaW50ZWdlcl9vbmVwLgoJKGFkZF9iaXRfc2l6ZV9hdHRyaWJ1dGUpOiBVc2UgdHJlZV9sb3dfY3N0LgoJKGFkZF9wdXJlX29yX3ZpcnR1YWxfYXR0cmlidXRlLCBnZW5fZW51bWVyYXRpb25fdHlwZV9kaWUpOiBMaWtld2lzZS4KCSogZHdhcmZvdXQuYzogU2ltaWxhciBjaGFuZ2VzIHRvIGR3YXJmMm91dC5jLgoJKiBleHByLmMgKGV4cGFuZF9leHByLCBjYXNlIEFSUkFZX1JFRik6IFJlbW92ZSByZWR1bmRhbnQgY29kZS4KCSogZ2Vub3V0cHV0LmMgKG5fb2NjdXJyZW5jZXMpOiBSZXR1cm4gLTEgZm9yIG51bGwgc3RyaW5nLgoJKHN0cmlwX3doaXRlc3BhY2UpOiBBY2NlcHQgbnVsbCBzdHJpbmcgYW5kIG1ha2UgaW50byBmdW5jdGlvbi4KCShzY2FuX29wZXJhbmRzKTogUmVmbGVjdCBhYm92ZSBjaGFuZ2VzLgoJKiBzZGJvdXQuYyAocGxhaW5fdHlwZV8xKTogVXNlIGhvc3RfaW50ZWdlcnAgYW5kIHRyZWVfbG93X2NzdC4KCShzZGJvdXRfZmllbGRfdHlwZXMsIHNkYm91dF9vbmVfdHlwZSk6IExpa2V3aXNlOyBhbHNvIHVzZSBiaXRfcG9zaXRpb24uCgkqIHNzYS5jIChyZW5hbWVfcmVnaXN0ZXJzKTogQWRkIG1pc3NpbmcgY2FzdCBvZiBhcmcgdG8gYnplcm8uCgkqIHRyZWUuYyAoaW50X3NpemVfaW5fYnl0ZXMpOiBDaGVjayBmb3IgdG9vIGJpZyB0byByZXByZXNlbnQuCgkoYml0X3Bvc2l0aW9uLCBpbnRfYml0X3Bvc2l0aW9uLCBob3N0X2ludGVnZXJwLCB0cmVlX2xvd19jc3QpOiBOZXcgZm5zLgoJKiB0cmVlLmggKGhvc3RfaW50ZWdlcnAsIHRyZWVfbG93X2NzdCwgYml0X3Bvc2l0aW9uLCBpbnRfYml0X3Bvc2l0aW9uKToKCU5ldyBkZWNsYXJhdGlvbnMuCgkobWluX3ByZWNpc2lvbik6IERlbGV0ZSBmcm9tIGhlcmUuCgkqIHZhcmFzbS5jIChkZWNvZGVfYWRkcl9jb25zdCk6IFVzZSBob3N0X2ludGVnZXJwLCBiaXRfcG9zaXRpb24sCglhbmQgaW50X2JpdF9wb3NpdGlvbi4KCSogb2JqYy9vYmpjLWFjdC5jIChlbmNvZGVfbWV0aG9kX3Byb3RvdHlwZSk6IFNpemVzIGFyZSBIT1NUX1dJREVfSU5ULgoJKGVuY29kZV9tZXRob2RfZGVmKTogTGlrZXdpc2UuCgkoYnVpbGRfaXZhcl9saXN0X2luaXRpYWxpemVyKTogVXNlIGludF9iaXRfcG9zaXRpb24uCgkoZ2VuZXJhdGVfc2hhcmVkX3N0cnVjdHVyZXMpOiBDb252ZXJ0IHNpemUuCgkoZW5jb2RlX3R5cGUsIGVuY29kZV9jb21wbGV0ZV9iaXRmaWVsZCk6IFVzZSBpbnRlZ2VyX3plcm9wLgoJKGVuY29kZV9iaXRmaWVsZCk6IFVzZSB0cmVlX2xvd19jc3QgYW5kIGludF9iaXRfcG9zaXRpb24uCgoyMDAwLTAzLTE3ICBNaWNoYWVsIEhheWVzICA8bS5oYXllc0BlbGVjLmNhbnRlcmJ1cnkuYWMubno+CgoJKiBjb25maWcvYzR4L2M0eC5oIChDUFBfU1BFQyk6IEZpeCB0eXBvLgoKMjAwMC0wMy0xNyAgTWFydGluIHYuIEz2d2lzICA8bG9ld2lzQGluZm9ybWF0aWsuaHUtYmVybGluLmRlPgoKCSogY2FsbC5jIChzcGVjaWFsX2Z1bmN0aW9uX3ApOiBJdCBpcyBvbmx5IG1hbGxvYyBpZiBpdCByZXR1cm5zCglQbW9kZS4KCjIwMDAtMDMtMTcgIE1pY2hhZWwgSGF5ZXMgIDxtLmhheWVzQGVsZWMuY2FudGVyYnVyeS5hYy5uej4KCgkqIGNvbmZpZy9jNHgvYzR4LmggKEFTTV9TUEVDLCBDUFBfU1BFQywgTElOS19TUEVDKTogU3VwcG9ydCBDMzMuCgkoQzMzX0ZMQUcsIFRBUkdFVF9DM1gpOiBBZGQgbWFjcm9zLgoJKFRBUkdFVF9TV0lUQ0hFUyk6IEFkZCAtbTMzIG9wdGlvbi4KCSogY29uZmlnL2M0eC9jNHguYyAoYzR4X292ZXJyaWRlX29wdGlvbnMpOiBUZXN0IGZvciBUQVJHRVRfQzMzLgoKMjAwMC0wMy0xNyAgTWljaGFlbCBIYXllcyAgPG0uaGF5ZXNAZWxlYy5jYW50ZXJidXJ5LmFjLm56PgoKCSogY29uZmlnL2M0eC9jNHguaCAoUEFSQUxMRUxfSU5TTl9GTEFHKTogQWRkLgoJKFBBUkFMTEVMX1BBQ0tfRkxBRyk6IERlbGV0ZS4KCShUQVJHRVRfU1dJVENIRVMpOiBVcGRhdGUuCgkoVEFSR0VUX1BBUkFMTEVMKTogVXNlIFBBUkFMTEVMX0lOU05fRkxBRy4KClRodSBNYXIgMTYgMTg6NTI6MzIgMjAwMCAgUmljaGFyZCBLZW5uZXIgIDxrZW5uZXJAdmxzaTEudWx0cmEubnl1LmVkdT4KCgkqIGZvbGQtY29uc3QuYyAoZm9sZCk6IEZpeCBhIGZldyBjYXNlcyB3aGVuIHRoZSByZXR1cm5lZCByZXN1bHQKCWlzIG5vdCBvZiB0aGUgc2FtZSB0eXBlIGFzIHRoZSBpbnB1dC4KCjIwMDAtMDMtMTYgIE5pY2sgQ2xpZnRvbiAgPG5pY2tjQGN5Z251cy5jb20+CgoJKiBjb25maWcvYXJtL2FybS5oIChBU01fT1VUUFVUX01JX1RIVU5LKTogRml4IGNvbXBpbGUgdGltZQoJd2FybmluZy4KCjIwMDAtMDMtMTYgIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIGxpYmdjYzIuaDogTW92ZSBwcm90b3R5cGVzIGFib3ZlIG1hY3JvcyB3aXRoIHRoZSBzYW1lIG5hbWUuCglXcmFwIHNvbWUgZnVuY3Rpb24gcHJvdG90eXBlcyBpbiB0aGUgY29uZGl0aW9uYWwgd2hpY2ggaW5kaWNhdGVzCgl3aGV0aGVyIHRoZXkgYXJlIHN1cHBvcnRlZCwgaS5lLiAiQklUU19QRVJfVU5JVCA9PSA4Ii4KCjIwMDAtMDMtMTYgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgoJKiBjYWxscy5jOiBSZXZlcnQgbGFzdCB0d28gY2hhbmdlcy4KCjIwMDAtMDMtMTYgIEJlcm5kIFNjaG1pZHQgIDxiZXJuZHNAY3lnbnVzLmNvLnVrPgoKCSogZnAtYml0LmMgKF91bnBhY2tfZCk6IElmIE5PX0RFTk9STUFMUyBpcyBkZWZpbmVkLCBhbnl0aGluZyB0aGF0CgloYXMgZXhwb25lbnQgMCBpcyBhIHplcm8uCgoJKiBzaW1wbGlmeS1ydHguYyAoaGFzaF9ydHgsIGNhc2UgTUVNL1JFRyk6IFRha2UgaW50byBhY2NvdW50IHRoYXQKCUhBU0ggbWF5IGFscmVhZHkgYmUgbm9uemVyby4gIEFkZCBjb2RlL21vZGUgaW50byBoYXNoIHZhbHVlCglpbW1lZGlhdGVseSBhZnRlciByZXBlYXQgbGFiZWwuCgkoY3NlbGliX2xvb2t1cCk6IERvbid0IGxlYXZlIHRoZSBoYXNoIHRhYmxlIGluIGFuIGluY29uc2lzdGVudAoJc3RhdGUgYmVmb3JlIGEgaGFzaCBsb29rdXAgb3BlcmF0aW9uLgoKVGh1IE1hciAxNiAxNzowMzoxMCBNRVQgMjAwMCAgSmFuIEh1Ymlja2EgIDxqaEBzdXNlLmN6PgoKCSogaTM4Ni5tZCAoYWxsIEhJIGFuZCBRSSBtb2RlIG5vbi1tb3ZlIHBhdHRlcm5zKTogIENvbmRpdGlvbml6ZQoJYnkgVEFSR0VUX1tIUV1JTU9ERV9NQVRILgoJKiBpMzg2LmggKHg4Nl9oaW1vZGVfbWF0aCwgeDg2X3FpbW9kZV9tYXRoLCB4ODZfcHJvbW90ZV9oaV9yZWdzLAoJeDg2X3Byb21vdGVfcWlfcmVncyk6IERlY2xhcmUuCgkoVEFSR0VUX0hJTU9ERV9NQVRILCBUQVJHRVRfUUlNT0RFX01BVEgsIFRBUkdFVF9QUk9NT1RFX0hJX1JFR1MsCglUQVJHRVRfUFJPTU9URV9RSV9SRUdTKTogTmV3IG1hY3Jvcy4KCShQUk9NT1RFX01PREUpOiBOZXcgbWFjcm8uCgkqIGkzODYuYyAoeDg2X2hpbW9kZV9tYXRoLCB4ODZfcWltb2RlX21hdGgsIHg4Nl9wcm9tb3RlX2hpX3JlZ3MsCgl4ODZfcHJvbW90ZV9xaV9yZWdzKTogTmV3IGdsb2JhbCB2YXJpYWJsZXMuCgpUaHUgTWFyIDE2IDE2OjUwOjQ0IE1FVCAyMDAwICBKYW4gSHViaWNrYSAgPGpoQHN1c2UuY3o+CgoJKiBjYWxscy5jIChlbWl0X2xpYnJhcnlfY2FsbF92YWx1ZV8xKTogQnJlYWsgb3V0IGZyb20gLi4uOyBoYW5kbGUKCVZPSURtb2RlIGZ1bmN0aW9uIGNhbGxzIHRvby4KCShlbWl0X2xpYnJhcnlfY2FsbF92YWx1ZSk6IC4uLiBoZXJlLgoJKGVtaXRfbGlicmFyeV9jYWxsKTogSW1wbGVtZW50IGJ5IGNhbGxpbmcgZW1pdF9saWJyYXJ5X2NhbGxfdmFsdWVfMS4KClRodSBNYXIgMTYgMTY6MDE6MzAgTUVUIDIwMDAgIEphbiBIdWJpY2thICA8amhAc3VzZS5jej4KCgkqIGNhbGxzLmMgKGV4cGFuZF9jYWxsKTogRG8gc2FuaXR5IGNoZWNraW5nIG9uIGFyZ19zcGFjZV9zb19mYXIuCglVcGRhdGUgYXJnX3NwYWNlX3NvX2ZhciBvbiBzdGFjayBhZGp1c3RtZW50cy4KCShlbWl0X2xpYnJhcnlfY2FsbCwgZW1pdF9saWJyYXJ5X2NhbGxfdmFsdWUpOiBMaWtld2lzZTsgdGFrZSBpbnRvCglhY2NvdW50IGFyZ19zcGFjZV9zb19mYXIgYW5kIHBlbmRpbmdfc3RhY2tfYWRqdXN0IHdoZW4gY2FsY3VsY2F0aW5nCgl0aGUgYm91bmRhcnkuCgpUaHUgTWFyIDE2IDA5OjAyOjE5IDIwMDAgIEphc29uIEVja2hhcmR0ICA8amxlQGN5Z251cy5jb20+CgoJKiBmbG93LmM6IE1vdmUgYWxsIGJhc2ljIGJsb2NrIHJlb3JkZXJpbmcgY29kZSBpbnRvIGl0cyBvd24gZmlsZS4KCShjcmVhdGVfYmFzaWNfYmxvY2spOiBFeHRlcm5hbGl6ZS4KCSogYmItcmVvcmRlci5jOiBOZXcgZmlsZS4gQ29weSBhbGwgYmFzaWMgYmxvY2sgcmVvcmRlcmluZyBjb2RlIGZyb20KCWZsb3cuYyB0byB0aGlzIGZpbGUuCgkocmVvcmRlcl9iYXNpY19ibG9ja3MpOiBGaXggZmVuY2Vwb3N0IGVycm9yIGluIGZvci1sb29wLgoJKHJlb3JkZXJfYmFzaWNfYmxvY2tzKTogUmVtb3ZlIGJyYWNlcyBmcm9tIHNpbmdsZSBzdGF0ZW1lbnQgZm9yLWxvb3BzLgoJKiBiYXNpYy1ibG9jay5oOiBBZGQgZGVjbGFyYXRpb24gZm9yIGNyZWF0ZV9iYXNpY19ibG9jay4KCSogTWFrZWZpbGUuaW46IEFkZCBydWxlcyBmb3IgYmItcmVvcmRlci5vLgoKMjAwMC0wMy0xNiAgTmVpbCBCb290aCAgPE5laWxCQGVhcnRobGluZy5uZXQ+CgoJKiBjcHBpbml0LmMgKGhhbmRsZV9vcHRpb24pOiAgSW1wbGVtZW50ICN1bmFzc2VydCBkaXJlY3RpdmUKCWFzIC1BLSBjb21tYW5kIGxpbmUgb3B0aW9uLgoJKHByaW50X2hlbHApOiAgVXBkYXRlLgoJKiBjcHB0ZXhpLmM6ICBVcGRhdGUuCgpUaHUgTWFyIDE2IDAyOjE0OjE2IDIwMDAgIEhhbnMtUGV0ZXIgTmlsc3NvbiAgPGhwQGJpdHJhbmdlLmNvbT4KCgkqIG1kLnRleGkgKFN0YW5kYXJkIE5hbWVzKTogRG9jdW1lbnQgYGp1bXAnLgoKMjAwMC0wMy0xNSAgSmFzb24gTWVycmlsbCAgPGphc29uQGNhc2V5LmN5Z251cy5jb20+CgoJKiBjYWxscy5jIChlbWl0X2NhbGxfMSk6IE5vdGhyb3cgZnVuY3Rpb25zIGNhbiBzdGlsbCBoYXZlIG5vbmxvY2FsCglnb3Rvcy4KCjIwMDAtMDMtMTUgIEdlb2ZmIEtlYXRpbmcgIDxnZW9mZmtAY3lnbnVzLmNvbT4KCglNZXJnZSBjaGFuZ2VzIGZyb20gbmV3cHBjLWJyYW5jaCBvbnRvIHRydW5rLgoKCTIwMDAtMDMtMTUgIEdlb2ZmIEtlYXRpbmcgIDxnZW9mZmtAY3lnbnVzLmNvbT4KCgkqIHJzNjAwMC5jICh0b2NfaGFzaF90YWJsZSk6IFVwZGF0ZSBmb3IgbmV3IGhhc2ggdGFibGUgZnVuY3Rpb25zLgoJKHRvY19oYXNoX2Z1bmN0aW9uKTogTGlrZXdpc2UuCgkodG9jX2hhc2hfZXEpOiBMaWtld2lzZS4KCSh0b2NfaGFzaF9tYXJrX2VudHJ5KTogTGlrZXdpc2UuCgkodG9jX2hhc2hfbWFya190YWJsZSk6IExpa2V3aXNlLgoJKG91dHB1dF90b2MpOiBMaWtld2lzZS4KCShyczYwMDBfYWRkX2djX3Jvb3RzKTogTGlrZXdpc2UuCgoJMjAwMC0wMy0xNSAgQWxleGFuZHJlIE9saXZhICA8b2xpdmFAbHNkLmljLnVuaWNhbXAuYnI+CgoJKiB0LWFpeDQzIChBUl9GT1JfVEFSR0VUKTogRGVsZXRlZC4gIE1vdmVkIGAtWDMyXzY0Jy4uLgoJKEFSX0ZMQUdTX0ZPUl9UQVJHRVQpOiBoZXJlLiAgTmV3IG1hY3JvLgoKCTIwMDAtMDMtMDUgIENsaW50b24gUG9wZXR6ICA8Y3BvcGV0ekBjeWdudXMuY29tPgoKCSogY29uZmlnL3JzNjAwMC9yczYwMDAuYyAocnM2MDAwX2ZwbWVtX29mZnNldCwgcnM2MDAwX2ZwbWVtX3NpemUsCglmcG1lbV9vcGVyYW5kKSBEZWxldGUuCgkoeGVyX29wZXJhbmQpIE5ldy4KCShyczYwMDBfcmVnX25hbWVzLCBhbHRfcmVnX25hbWVzKTogQ2hhbmdlIGZwbWVtIHRvIHhlci4KCShtYWNoaW5lX2Z1bmN0aW9uKTogUmVtb3ZlIGZwbWVtX3NpemUsIGZwbWVtX29mZnNldCwgc2F2ZV90b2NfcC4KCShyczYwMDBfc2F2ZV9tYWNoaW5lX3N0YXR1cywgcnM2MDAwX3Jlc3RvcmVfbWFjaGluZV9zdGF0dXMsCglyczYwMDBfaW5pdF9leHBhbmRlcnMsIHJzNjAwMF9zdGFja19pbmZvLCBkZWJ1Z19zdGFja19pbmZvKTogUmVtb3ZlCglyZWZlcmVuY2VzIHRvIGFib3ZlIHZhcmlhYmxlcy4KCShncGNfcmVnX29wZXJhbmQpOiBVc2UgWEVSX1JFR05PX1AgaW5zdGVhZCBvZiBGUE1FTV9SRUdOT19QLgoJKiBjb25maWcvcnM2MDAwL3JzNjAwMC5oIChSRUdfQUxMT0NfT1JERVIsIFJFR0lTVEVSX05BTUVTLAoJREVCVUdfUkVHSVNURVJfTkFNRVMpOiBDaGFnbmUgZnBtZW0gdG8geGVyLgoJKEZQTUVNX1JFR05PX1AsIEZQTUVNX1JFR05VTSk6IERlbGV0ZS4KCShYRVJfUkVHTk9fUCwgWEVSX1JFR05PKTogTmV3LgoJKHJzNjAwMF9zdGFjayk6IFJlbW92ZSBmcG1lbV9wLCBmcG1lbV9vZmZzZXQsIGZwbWVtX3NpemUuCgkoUFJFRElDQVRFX0NPREVTKTogQ2hhbmdlIGZwbWVtX29wZXJhbmQgdG8geGVyX29wZXJhbmQuCgkoSEFSRF9SRUdOT19OUkVHUywgSEFSRF9SRUdOT19NT0RFX09LKTogQ2hhbmdlIEZQTUVNX1JFR05PX1AgdG8KCVhFUl9SRUdOT19QLgoJKHJlZ19jbGFzcywgUkVHX0NMQVNTX05BTUVTLCBSRUdfQ0xBU1NfQ09OVEVOVFMsIFJFR05PX1JFR19DTEFTUywKCVJFR19DTEFTU19GUk9NX0xFVFRFUiwgQ0xBU1NfTUFYX05SRUdTKTogQ2hhbmdlIEZQTUVNX1JFR1MgdG8gWEVSX1JFR1MsCQlhbmQgcmVtb3ZlIEZMT0FUX09SX0ZQTUVNX1JFR1MuCgkoQ0xBU1NfQ0FOTk9UX0NIQU5HRV9TSVpFKTogQ2hhbmdlIHRvIEZMT0FUX1JFR1MuCgoJMjAwMC0wMi0yOSAgRnJhbnogU2lybCAgPEZyYW56LlNpcmwta2VybmVsQGxhdXRlcmJhY2guY29tPgoKCSogYWl4LmggKEZQX1NBVkVfSU5MSU5FLCBBU01fT1VUUFVUX0lOVEVSTkFMX0xBQkVMX1BSRUZJWCwKCVRFWFRfU0VDVElPTl9BU01fT1AsIERBVEFfU0VDVElPTl9BU01fT1ApOiBNb3ZlIGhlcmUuLi4KCSogcnM2MDAwLmg6IGZyb20gaGVyZS4KCgkqIHJzNjAwMC1wcm90b3MuaCAocnM2MDAwX3NlbGVjdF9zZWN0aW9uKTogUHJvdmlkZSBwcm90b3R5cGUuCgkocnM2MDAwX3NlbGVjdF9ydHhfc2VjdGlvbik6IExpa2V3aXNlLgoJKHJzNjAwMF9lbmNvZGVfc2VjdGlvbl9pbmZvKTogTGlrZXdpc2UuCgkoc2RhdGFfc2VjdGlvbik6IExpa2V3aXNlLgoJKHNkYXRhMl9zZWN0aW9uKTogTGlrZXdpc2UuCgkoc2Jzc19zZWN0aW9uKTogTGlrZXdpc2UuCgkqIHN5c3Y0LmggKHJzNjAwMF9zZWxlY3Rfc2VjdGlvbik6IERlbGV0ZSBwcm90b3R5cGUuCgkocnM2MDAwX3NlbGVjdF9ydHhfc2VjdGlvbik6IExpa2V3aXNlLgoJKHJzNjAwMF9lbmNvZGVfc2VjdGlvbl9pbmZvKTogTGlrZXdpc2UuCgkoc2RhdGFfc2VjdGlvbik6IExpa2V3aXNlLgoJKHNkYXRhMl9zZWN0aW9uKTogTGlrZXdpc2UuCgkoc2Jzc19zZWN0aW9uKTogTGlrZXdpc2UuCgkoUkVHX1NBVkVfQVJFQSk6IERlbGV0ZSBkZWZpbml0aW9uIGR1cGxpY2F0ZWQgaW4gcnM2MDAwLmguCgoJKiBzeXN2NC5oOiBEZWxldGUgdmFyaW91cyB1bm5lY2Vzc2FyeSAjdW5kZWYncyBhbmQgcHV0IGEgY29tbWVudAoJb24gdGhlIHJlbWFpbmluZyBvbmVzLgoJQ2hhbmdlIHZhcmlvdXMgY29tbWVudHMgYWNjb3JkaW5nIHRvIGNvZGluZyBzdGFuZGFyZC4KCgkyMDAwLTAyLTI5ICBDbGludG9uIFBvcGV0eiAgPGNwb3BldHpAY3lnbnVzLmNvbT4KCgkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLmggKE1RX1JFR05PLCBDUjBfUkVHTk8sIENSMV9SRUdOTywgQ1IyX1JFR05PLAoJQ1IzX1JFR05PLCBDUjRfUkVHTk8sIE1BWF9DUl9SRUdOTyk6IERlZmluZS4KCShDUjBfUkVHTk9fUCkgUmVtb3ZlLgoJKiBjb25maWcvcnM2MDAwL3JzNjAwMC5jIChncGNfcmVnX29wZXJhbmQsIGFuZDY0X29wZXJhbmQsIGFuZF9vcGVyYW5kLAoJc2V0dXBfaW5jb21pbmdfdmFyYXJncywgbXRjcmZfb3BlcmF0aW9uLCBwcmludF9vcGVyYW5kLAoJcnM2MDAwX3N0YWNrX2luZm8sIHJzNjAwMF9lbWl0X3Byb2xvZ3VlLCByczYwMDBfZW1pdF9lcGlsb2d1ZSk6CglVc2UgdGhlIGFib3ZlIG1hY3Jvcy4KCgkyMDAwLTAyLTI0ICBDbGludG9uIFBvcGV0eiAgPGNwb3BldHpAY3lnbnVzLmNvbT4KCgkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLm1kOiBBZGRlZCBhIG5ldyBhbHRlcm5hdGl2ZSBmb3IgZWFjaAoJcGF0dGVybiB0aGF0IGhhZCBhICd4JyBhbHRlcm5hdGl2ZSBidXQgbm8gJ3knIGFsdGVybmF0aXZlLgoJQWRkZWQgYSBuZXcgc3BsaXQgZm9yIGVhY2ggb2YgdGhlIGFib3ZlIHBhdHRlcm5zLgoKCTIwMDAtMDItMTggIEdlb2ZmIEtlYXRpbmcgIDxnZW9mZmtAY3lnbnVzLmNvbT4KCgkqIGFpeDQxLmggKEFTTV9DUFVfU1BFQyk6IERlbGV0ZS4KCShDUFBfQ1BVX1NQRUMpOiBEZWxldGUuCgoJKiBhaXguaCAoUlM2MDAwX09VVFBVVF9CQVNFTkFNRSk6IERlZmluZS4KCShBU01fT1VUUFVUX0xBQkVMKTogRGVmaW5lLgoJKEFTTV9HTE9CQUxJWkVfTEFCRUwpOiBEZWZpbmUuCgkoU1RSSVBfTkFNRV9FTkNPRElORyk6IERlZmluZS4KCSogcnM2MDAwLmggKFJTNjAwMF9PVVRQVVRfQkFTRU5BTUUpOiBEb24ndCBkZWZpbmUuCgkoU1RSSVBfTkFNRV9FTkNPRElORyk6IERvbid0IGRlZmluZS4KCShBU01fT1VUUFVUX0xBQkVMKTogRG9uJ3QgZGVmaW5lLgoJKEFTTV9HTE9CQUxJWkVfTEFCRUwpOiBEb24ndCBkZWZpbmUuCgkqIHN5c3Y0LmggKEFTTV9ERUNMQVJFX0ZVTkNUSU9OX05BTUUpOiBVc2UgYXNzZW1ibGVfbmFtZSB0byBvdXRwdXQKCW5hbWVzLCBhbmQgQVNNX09VVFBVVF9MQUJFTCB0byBvdXRwdXQgbGFiZWxzLCByYXRoZXIgdGhhbgoJYXNtX2ZwcmludGYuCgkoQVNNX09VVFBVVF9MQUJFTCk6IERlZmluZS4KCShBU01fT1VUUFVUX0lOVCk6IFVzZSBhc3NlbWJsZV9uYW1lLgoJKEFTTV9PVVRQVVRfRFdBUkZfQUREUik6IFVzZSBhc3NlbWJsZV9uYW1lLgoJKFNUUklQX05BTUVfRU5DT0RJTkcpOiBEb24ndCB1bmRlZmluZSBmaXJzdC4KCShSUzYwMDBfT1VUUFVUX0JBU0VOQU1FKTogTWFrZSBlcXVpdmFsZW50IHRvIGFzc2VtYmxlX25hbWUgZm9yCglFTEYuCgkoQVNNX09VVFBVVF9MQUJFTFJFRik6IERvbid0IHByZXBlbmQgdW5kZXJzY29yZXMgdG8gbGFiZWxzCglzcGVjaWZpZWQgd2l0aCAnYXNtJyBldmVuIHdpdGggLWZsZWFkaW5nLXVuZGVyc2NvcmUuCgkqIHJzNjAwMC5jIChwcmludF9vcGVyYW5kKTogVXNlIGFzc2VtYmxlX25hbWUgd2hlbiAhVEFSR0VUX0FJWC4KCShvdXRwdXRfZXBpbG9nKTogTGlrZXdpc2UuCgkob3V0cHV0X3RvYyk6IExpa2V3aXNlLgoJKiB0cmFtcC5hc206IEhhbmRsZSAtZmxlYWRpbmctdW5kZXJzY29yZSBjb3JyZWN0bHkuCgoJKiByczYwMDAubWQgKGJ1aWx0aW5fc2V0am1wX3JlY2VpdmVyKTogQWxzbyBydW4gZm9yIC1mUElDIGFuZAoJLW1taW5pbWFsLXRvYy4KCShub25sb2NhbF9nb3RvX3JlY2VpdmVyKTogRGVsZXRlLgoJKiByczYwMDAuaCAoRE9OVF9BQ0NFU1NfR0JMU19BRlRFUl9FUElMT0dVRSk6IERlbGV0ZS4KCgkqIHJzNjAwMC5oIChBU01fT1VUUFVUX0RFRik6IERvbid0IGRlZmluZS4KCShTRVRfQVNNX09QKTogRGVmaW5lLgoJKiBzeXN2NC5oIChBU01fT1VUUFVUX0RFRik6IERvbid0IHVuZGVmaW5lLgoKCSogcnM2MDAwLmggKEFTTV9PVVRQVVRfQUREUl9WRUNfRUxUKTogRG9uJ3QgZGVmaW5lLgoJKEFTTV9MT05HKTogRGVmaW5lLgoKCSogcnM2MDAwLmMgKHJzNjAwMF9kbGxfaW1wb3J0X3JlZik6IERlbGV0ZSwgbm90IHVzZWQuCgkqIHJzNjAwMC1wcm90b3MuaCAocnM2MDAwX2RsbF9pbXBvcnRfcmVmKTogRGVsZXRlLgoKCSogcnM2MDAwLmg6IEFkZCAndScgdG8gbW9yZSBjb25zdGFudHMuCgoJMjAwMC0wMi0xOCAgRGF2aWQgRWRlbHNvaG4gIDxlZGVsc29obkBnbnUub3JnPgoKCSogcnM2MDAwLm1kIChtZmNyK3NoaWZ0KTogRGVsZXRlIFBvd2VyUEM2NCB2ZXJzaW9uLgoKCTIwMDAtMDItMTUgIERhdmlkIEVkZWxzb2huICA8ZWRlbHNvaG5AZ251Lm9yZz4KCgkqIHJzNjAwMC5jIChyZWdfb3JfdV9jaW50X29wZXJhbmQpOiBOZXcgZnVuY3Rpb24uCgkobG9naWNhbF9vcGVyYW5kKTogSGFuZGxlIDY0LWJpdCBob3N0cy4KCShsb2dpY2FsX3Vfb3BlcmFuZCk6IE5ldyBmdW5jdGlvbi4KCShub25fbG9naWNhbF9jaW50X29wZXJhbmQpOiBIYW5kbGUgNjQtYml0IGhvc3RzLgoJKG5vbl9sb2dpY2FsX3VfY2ludF9vcGVyYW5kKTogTmV3IGZ1bmN0aW9uLgoJKiByczYwMDAuaCAoREFUQV9TRUNUSU9OX0FTTV9PUCk6IEFkZCB0YWIuCgkoUFJFRElDQVRFX0NPREVTKTogRGVmaW5lIG5ldyBmdW5jdGlvbnMuCgkqIHJzNjAwMC1wcm90b3MuaDogRGVjbGFyZSBuZXcgZnVuY3Rpb25zLgoJKiByczYwMDAubWQgKGlvcmRpMywgeG9yZGkzKTogQ29uc3RhbnQgaW50IG11c3QgYmUgdW5zaWduZWQgMzItYml0cy4KCShtb3ZkaV82NCk6IEJyYWNrZXQgY29kZSBpbnRlbmRlZCBmb3IgNjQtYml0IGhvc3RzLiAgQ3JlYXRlCglDT05TVF9ET1VCTEUgZm9yIDMyLWJpdCB2YWx1ZXMuCgkoc2NjIGluc25zKTogR2VuZXJhdGUgREltb2RlIGNvbXBhcmVzLgoJKG1mY3IgaW5zbnMpOiBDcmVhdGUgREltb2RlIHZlcnNpb25zLgoJKHNnZSBtYXRjaGVycyk6IE5ldyBwYXR0ZXJucy4KCgkyMDAwLTAyLTE1ICBHYWJyaWVsIFBhdWJlcnQgIDxwYXViZXJ0QGlyYW0uZXM+CgoJKiByczYwMDAubWQ6IENvcnJlY3QgaW5zdHJ1Y3Rpb25zIGxlbmd0aCBhdHRyaWJ1dGVzIGFuZAoJY29uc3RyYWludHMgb24gdW5zaWduZWQgY29tcGFyZSBpbnN0cnVjdGlvbnMuCgkoKm5lMCk6IERpc2FibGUgZm9yIFBvd2VyUEM2NC4KCgkyMDAwLTAyLTExICBHZW9mZiBLZWF0aW5nICA8Z2VvZmZrQGN5Z251cy5jb20+CgoJKiByczYwMDAuYyAob3V0cHV0X2Z1bmN0aW9uX3Byb2ZpbGVyKTogVXNlIC5sb25nIGZvciBhIDMyLWJpdAoJcXVhbnRpdHksIGZpeCBwcm9maWxlMS5DIHRlc3QgZmFpbHVyZSB1bmRlciAtZlBJQy4KCgkqIHJzNjAwMC5jOiBBZGQgJ3UnIHRvIG1hbnkgY29uc3RhbnRzIHRvIHN1cHByZXNzIHdhcm5pbmdzLgoJKGNvbnN0YW50X3Bvb2xfZXhwcl8xKTogTWFrZSBzdGF0aWMuCgkocnM2MDAwX2VtaXRfZWhfdG9jX3Jlc3RvcmUpOiBSZW1vdmUgdW51c2VkICdyMicuCgkqIHJzNjAwMC5oOiBBZGQgJ3UnIHRvIG1hbnkgY29uc3RhbnRzIHRvIHN1cHByZXNzIHdhcm5pbmdzLgoKCSogcnM2MDAwLmMgKHJzNjAwMF9lbWl0X2xvYWRfdG9jX3RhYmxlKTogVXNlIExDVE9DLi4xIHVuZGVyIEFJWAoJZm9yIHRoZSBzdGFydCBvZiB0aGUgVE9DLCBpbnN0ZWFkIG9mIExDVE9DLi4wLgoJKiBhaXguaCAodG9jX3NlY3Rpb24pOiBVc2UgTENUT0MuLjEgdW5kZXIgQUlYIGZvciB0aGUgc3RhcnQKCW9mIHRoZSBUT0MuCgkqIHJzNjAwMC5tZCAobG9hZF90b2NfYWl4X3NpKTogVXNlIExDVE9DLi4xLgoJKGxvYWRfdG9jX2FpeF9kaSk6IFVzZSBMQ1RPQy4uMS4KCgkqIHJzNjAwMC5oIChMRUdJVElNSVpFX0FERFJFU1MpOiBUdXJuIGludG8gYSBmdW5jdGlvbi4KCSogcnM2MDAwLmMgKHJzNjAwMF9sZWdpdGltaXplX2FkZHJlc3MpOiBOZXcgZnVuY3Rpb24gZnJvbQoJTEVHSVRJTUlaRV9BRERSRVNTLiAgT25seSB1c2UgY3JlYXRlX1RPQ19yZWZlcmVuY2Ugb24KCXN5bWJvbHMgaW4gdGhlIGNvbnN0YW50IHBvb2wgdGhhdCByZWFsbHkgYXJlIFRPQyByZWZlcmVuY2VzLgoJKHByaW50X29wZXJhbmRfYWRkcmVzcyk6IEZvciBFTEYsIHdyaXRlIFRPQyBvZmZzZXRzIHVuZGVyCgktZlBJQyBhcyBzdWJ0cmFjdGlvbnMgaW4gdGhlIGluc24uCgkob3V0cHV0X3RvYyk6IEZvciBFTEYsIGRlZmluZSBzeW1ib2xzIGluIFRPQyBhcyBub3JtYWwgbGFiZWxzLAoJdG8gbWF0Y2ggUlRMLgoJKGNyZWF0ZV9UT0NfcmVmZXJlbmNlKTogVXNlIGdlbl9ydHhfUExVUyByYXRoZXIgdGhhbiBnZW5fcnR4LgoJKiByczYwMDAtcHJvdG9zLmggKHJzNjAwMF9sZWdpdGltaXplX2FkZHJlc3MpOiBQcm90b3R5cGUuCgkoY3JlYXRlX1RPQ19yZWZlcmVuY2UpOiBQcm90b3R5cGUgb25seSB3aGVuIFJUWF9DT0RFIGlzIGRlZmluZWQuCgkqIHJzNjAwMC5tZCAobW92c2kpOiBPbmx5IHVzZSBjcmVhdGVfVE9DX3JlZmVyZW5jZSBvbgoJc3ltYm9scyBpbiB0aGUgY29uc3RhbnQgcG9vbCB0aGF0IHJlYWxseSBhcmUgVE9DIHJlZmVyZW5jZXMuCgoJKiByczYwMDAuaCAoTUFDSElORV9ERVBFTkRFTlRfUkVPUkcpOiBEb24ndCBkZWZpbmUuCgkqIHJzNjAwMC5jIChyczYwMDBfcmVvcmcpOiBEZWxldGUuCgkqIHJzNjAwMC1wcm90b3MuaCAocnM2MDAwX3Jlb3JnKTogRGVsZXRlLgoKCTIwMDAtMDItMDkgIEdlb2ZmIEtlYXRpbmcgIDxnZW9mZmtAY3lnbnVzLmNvbT4KCgkqIHJzNjAwMC5oIChJTkNPTUlOR19SRVRVUk5fQUREUl9SVFgpOiBOZXcgbWFjcm8uCgoJKiBhaXguaCAoU0VUVVBfRlJBTUVfQUREUkVTU0VTKTogRGVmaW5lLgoJKiByczYwMDAuYyBbVEFSR0VUX0FJWF0gKGluc25fYWZ0ZXJfdGhyb3cpOiBOZXcgc3RhdGljIHZhcmlhYmxlLgoJW1RBUkdFVF9BSVhdIChyczYwMDBfYWl4X2VtaXRfYnVpbHRpbl91bndpbmRfaW5pdCk6IE5ldyBmdW5jdGlvbi4KCVtUQVJHRVRfQUlYXSAocnM2MDAwX2VtaXRfZWhfdG9jX3Jlc3RvcmUpOiBOZXcgZnVuY3Rpb24uCgkqIHJzNjAwMC1wcm90b3MuaDogUHJvdG90eXBlIHJzNjAwMF9lbWl0X2VoX3RvY19yZXN0b3JlLAoJcnM2MDAwX2FpeF9lbWl0X2J1aWx0aW5fdW53aW5kX2luaXQuCgkqIHJzNjAwMC5tZCAoZWhfZXBpbG9ndWUpIFtUQVJHRVRfQUlYXTogQ2FsbAoJcnM2MDAwX2VtaXRfZWhfdG9jX3Jlc3RvcmUgb24gQUlYLgoJKHJldHVybl9laF9zaSk6IFVzZSByMi4KCShyZXR1cm5fZWhfZGkpOiBVc2UgcjIuCgoJKiBhaXg0My5oOiBUdXJuIG9uIEhBU19JTklUX1NFQ1RJT04gYW5kIExEX0lOSVRfU1dJVENILAoJc2luY2Ugd2UncmUgYnJlYWtpbmcgYmluYXJ5IGNvbXBhdGliaWxpdHkgYW55d2F5LgoKCTIwMDAtMDItMDkgIENsaW50b24gUG9wZXR6ICA8Y3BvcGV0ekBjeWdudXMuY29tPgoKCSogY29uZmlnL3JzNjAwMC9yczYwMDAtcHJvdG9zLmg6IChnZXRfVE9DX2FsaWFzX3NldCwgdXNlc19UT0MsCgljb25zdGFudF9wb29sX2V4cHJfcCk6IERlY2xhcmUgdGhlbS4KCShjb25zdGFudF9wb29sX2V4cHJfcCk6IERlY2xhcmUgaXQuCgkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLmMgKHRvY19sYWJlbF9uYW1lKTogRGVmaW5lLgoJKHJzNjAwMF9vdmVycmlkZV9vcHRpb25zKTogU2V0IHRvY19sYWJlbF9uYW1lLgoJKGlucHV0X29wZXJhbmQpOiBBbGxvdyBhbnkgVE9DX1JFTEFUSVZFX0VYUFJfUC4KCShnZXRfVE9DX2FsaWFzX3NldCwgY29uc3RhbnRfcG9vbF9leHByX3AsIGNvbnN0YW50X3Bvb2xfZXhwcl8xLAoJdXNlc19UT0MpOiBOZXcgZnVuY3Rpb25zLgoJKHByaW50X29wZXJhbmQpOiBEZWxldGUgb2xkICcqJyBjYXNlLgoJKHByaW50X29wZXJhbmRfYWRkcmVzcyk6IFVzZSBMRUdJVElNQVRFX0NPTlNUQU5UX1BPT0xfQUREUkVTU19QLAoJYW5kIHN0cmlwIG9mZiBydGwgZm9yIFRPQyBiZWZvcmUgY2FsbGluZyBvdXRwdXRfYWRkcl9jb25zdC4KCShyczYwMDBfZW1pdF9sb2FkX3RvY190YWJsZSk6IFVzZSB0b2NfbGFiZWxfbmFtZS4KCSogY29uZmlnL3JzNjAwMC9yczYwMDAuaCAoVEFSR0VUX1NXSVRDSEVTKTogTWFrZSBtc2NoZWQtcHJvbG9nCgl0aGUgZGVmYXVsdC4KCShMRUdJVElNQVRFX0NPTlNUQU5UX1BPT0xfQkFTRV9QKTogRGVsZXRlLgoJKENPTlNUQU5UX1BPT0xfRVhQUl9QLCBUT0NfUkVMQVRJVkVfRVhQUl9QKTogTmV3IG1hY3Jvcy4KCShMRUdJVElNQVRFX0NPTlNUQU5UX1BPT0xfQUREUkVTU19QKTogVXNlIENPTlNUQU5UX1BPT0xfRVhQUl9QLgoJKExFR0lUSU1JWkVfQUREUkVTUywgTEVHSVRJTUlaRV9SRUxPQURfQUREUkVTUyk6IFR1cm4gc3ltYm9sX3JlZnMKCWludG8gZXhwbGljaXQgVE9DX1JFR0lTVEVSIG9mZnNldHMuCgkoVE9DX1JFR0lTVEVSKTogTmV3IG1hY3JvLgoJKiBjb25maWcvcnM2MDAwL3JzNjAwMC5tZCAobW92c2ksIG1vdmRpKTogRW1pdCBydGwgdW5kZXIKCVRBUkdFVF9UT0MgdG8gcmVmZXJlbmNlIFRPQ19SRUdJU1RFUi4KCShsb2FkX3RvY192NF9QSUNfMWIpOiBBZGQgNCB0byBvZmZzZXQgZm9yIHRvYyByZWxvYWQuCgkqIGNvbmZpZy9yczYwMDAvc3lzdjQuaCAoQVNNX0RFQ0xBUkVfRlVOQ1RJT05fTkFNRSk6IENhbGwKCXVzZXNfVE9DIGJlZm9yZSBlbWl0dGluZyBsYWJlbCByZWZlcmVuY2VzLgoKCTIwMDAtMDItMDUgIEdlb2ZmIEtlYXRpbmcgIDxnZW9mZmtAY3lnbnVzLmNvbT4KCgkqIHJzNjAwMC5tZCAoc3RhY2tfdGllKTogRml4IHdhcm5pbmcuCgoJKiBlYWJpLWN0b3JzLmM6IFVzZSAnYXNtJyBuYW1lcyBmb3IgdGhlIHN0YXJ0L2VuZCB2YXJpYWJsZXMsCgl0byBoYW5kbGUgLWZsZWFkaW5nLXVuZGVyc2NvcmUuCgkqIHN5c3Y0LmggKEFTTV9ERUNMQVJFX0ZVTkNUSU9OX05BTUUpOiBVc2UgYXNtX2ZwcmludGYgYW5kICVVLgoJKFVTRVJfTEFCRUxfUFJFRklYKTogTmV3IG1hY3JvLgoJKEFTTV9PVVRQVVRfSU5URVJOQUxfTEFCRUxfUFJFRklYKTogVXNlIGFzbV9mcHJpbnRmIGFuZCAlTC4KCShBU01fT1VUUFVUX0xBQkVMUkVGKTogVXNlIGFzbV9mcHJpbnRmIGFuZCAlVS4KCSogdC1wcGNjb21tIChNVUxUSUxJQl9NQVRDSEVTX1NZU1YpOiBOb3RlIHRoYXQgY2FsbC1zeXN2IGFuZAoJY2FsbC1saW51eCBjYW4gdXNlIHRoZSBzYW1lIG11bHRpbGlicy4KCSogdC1wcGNnYXMgKE1VTFRJTElCX09QVElPTlMpOiBEb24ndCBuZWVkIHRvIGhhdmUgc2VwYXJhdGUgY2FsbC1zeXN2CglhbmQgY2FsbC1saW51eCBtdWx0aWxpYnMuICBEbyBtdWx0aWxpYiB3aXRoIC1mbGVhZGluZy11bmRlcnNjb3JlLgoJKE1VTFRJTElCX0RJUk5BTUVTKTogRm9sbG93IE1VTFRJTElCX09QVElPTlMgY2hhbmdlLgoJKE1VTFRJTElCX0VYQ0VQVElPTlMpOiBSZW1vdmUgY2FsbC1saW51eCBleGNlcHRpb25zLiAgQWRkIHJlc3RyaWN0aW9ucwoJdG8gY2FsbC1haXguCgoJKiBzeXN2NC5oIChDUFBfU1lTVl9TUEVDKTogRGVmaW5lIF9TT0ZUX0ZMT0FUIGZvciBhbGwgdGhvc2UgQ1BVcyB0aGF0CgloYXZlIE1BU0tfU09GVF9GTE9BVCBzZXQuCgkoQ1BQX0ZMT0FUX0RFRkFVTFRfU1BFQyk6IE5ldyBtYWNyby4KCShTVUJUQVJHRVRfRVhUUkFfU1BFQ1MpOiBTZXQgYGNwcF9mbG9hdF9kZWZhdWx0JyB0byB0aGUgdmFsdWUgb2YKCUNQUF9GTE9BVF9ERUZBVUxUX1NQRUMuCgoJKiByczYwMDAuYyAoY2NyX2JpdCk6IEFkZCBzb21lIGNvbnNpc3RlbmN5IGNoZWNrcyBhbmQgYSB2YXJpYWJsZSAncmVnJy4KCSogcnM2MDAwLm1kOiBXaGl0ZXNwYWNlIGNoYW5nZS4KCSogc3lzdjQuaCAoTElOS19UQVJHRVRfU1BFQyk6IFdoaXRlc3BhY2UgY2hhbmdlLgoJKiBzeXN2NGxlLmggKExJTktfVEFSR0VUX1NQRUMpOiBXaGl0ZXNwYWNlIGNoYW5nZS4KCgkyMDAwLTAyLTA1ICBHZW9mZiBLZWF0aW5nICA8Z2VvZmZrQGN5Z251cy5jb20+CgoJKiByczYwMDAubWQgKGVoX2VwaWxvZ3VlKTogTmV3IGV4cGFuZGVyLgoJKGVoX3JlZ19yZXN0b3JlKTogTmV3IGV4cGFuZC9zcGxpdC9pbnNuIGNvbWJpbmF0aW9uLgoJKHJldHVybl9laF9zaSk6IE5ldyBpbnNuLgoJKHJldHVybl9laF9kaSk6IE5ldyBpbnNuLgoKCSogZWFiaS1jaS5hc206IFB1dCBhIGxhYmVsIGF0IHRoZSBzdGFydCBvZiB0aGUgLmVoX2ZyYW1lIHNlY3Rpb24uCgkqIGVhYmktY24uYXNtOiBQdXQgYSB6ZXJvIGF0IHRoZSBlbmQgb2YgdGhlIC5laF9mcmFtZSBzZWN0aW9uLgoJKiBlYWJpLWN0b3JzLmMgKF9fZG9fZ2xvYmFsX2N0b3JzKTogUmVnaXN0ZXIgdGhpcyBvYmplY3QncwoJZnJhbWUuICBDbGVhbiB1cC4gIENhbGwgYXRleGl0KCkgYWZ0ZXIgdGhlIGNvbnN0cnVjdG9ycy4KCShfX2RvX2dsb2JhbF9kdG9ycyk6IERlcmVnaXN0ZXIgdGhpcyBvYmplY3QncyBmcmFtZS4gIENsZWFuIHVwLgoJQWxsb3cgZm9yIHJlY3Vyc2l2ZSBjYWxscyB0byBleGl0KCkuCgkqIHJzNjAwMC5jIChmaXh1cGxhYmVsbm8pOiBOZXcgdmFyaWFibGUuCgkqIHN5c3Y0LmggKEFTTV9PVVRQVVRfSU5UKTogRG9uJ3QgZG8gLmZpeHVwIGlmIG5vdAoJVEFSR0VUX1JFTE9DQVRBQkxFLCBpdCBzbG93cyBkb3duIGV4ZWMoKSB1bmRlciBsaW51eC4KCShBU01fT1VUUFVUX0RXQVJGX0FERFIpOiBEbyAuZml4dXAgaWYgVEFSR0VUX1JFTE9DQVRBQkxFLgoKCSogYWl4LmggKEFTTV9PVVRQVVRfRFdBUkZfQUREUl9WQVIpOiBOZXcgbWFjcm8uCgkoQVNNX09VVFBVVF9EV0FSRl9ERUxUQV9WQVIpOiBOZXcgbWFjcm8uCgkoQVNNX09VVFBVVF9EV0FSRl9ERUxUQTIpOiBOZXcgbWFjcm8uCgkoQVNNX09VVFBVVF9EV0FSRl9ERUxUQTQpOiBOZXcgbWFjcm8uCgkoQVNNX09VVFBVVF9EV0FSRl9BRERSX0RFTFRBKTogTmV3IG1hY3JvLgoJKEFTTV9PVVRQVVRfRFdBUkZfQUREUik6IE5ldyBtYWNyby4KCShBU01fT1VUUFVUX0RXQVJGX0RBVEE0KTogTmV3IG1hY3JvLgoJKEFTTV9PVVRQVVRfRFdBUkZfREFUQTIpOiBOZXcgbWFjcm8uCgkoQVNNX09VVFBVVF9EV0FSRl9PRkZTRVQ0KTogTmV3IG1hY3JvLgoJKEFTTV9PVVRQVVRfRFdBUkZfT0ZGU0VUKTogTmV3IG1hY3JvLgoJKFVOQUxJR05FRF9JTlRfQVNNX09QKTogTmV3IG1hY3JvLCBmYWtlIGRlZmluaXRpb24uCgoJMjAwMC0wMi0wMyAgR2VvZmYgS2VhdGluZyAgPGdlb2Zma0BjeWdudXMuY29tPgoKCSogcnM2MDAwLmMgKHJzNjAwMF9zcl9hbGlhc19zZXQpOiBOZXcgdmFyaWFibGUuCgkocnM2MDAwX292ZXJyaWRlX29wdGlvbnMpOiBJbml0aWFsaXplIHJzNjAwMF9zcl9hbGlhc19zZXQuCgkocnM2MDAwX2VtaXRfc3RhY2tfdGllKTogTmV3IGZ1bmN0aW9uLgoJKHJzNjAwMF9lbWl0X2FsbG9jYXRlX3N0YWNrKTogU3BlY2lmeSBSVFhfRlJBTUVfUkVMQVRFRF9QCglpbiBhIHdheSB0aGF0IGR3YXJmMm91dCBjYW4gdW5kZXJzdGFuZC4KCShyczYwMDBfZnJhbWVfcmVsYXRlZCk6IE5ldyBmdW5jdGlvbi4KCShyczYwMDBfZW1pdF9wcm9sb2d1ZSk6IFVzZSByczYwMDBfc3JfYWxpYXNfc2V0LiAgU3BlY2lmeQoJUlRYX0ZSQU1FX1JFTEFURURfUCBpbiBhIHdheSB0aGF0IGR3YXJmMm91dCBjYW4gdW5kZXJzdGFuZC4KCVVzZSByczYwMDBfZW1pdF9zdGFja190aWUgd2hlbiBuZWVkZWQuCgkocnM2MDAwX2VtaXRfZXBpbG9ndWUpOiBVc2UgcnM2MDAwX3NyX2FsaWFzX3NldC4gIERvbid0IHNldAoJUlRYX0ZSQU1FX1JFTEFURURfUC4gIFVzZSByczYwMDBfZW1pdF9zdGFja190aWUgd2hlbiBuZWVkZWQuCgkqIHJzNjAwMC5tZCAoc3RhY2tfdGllKTogTmV3IGluc24uCgkocmV0dXJuX2ludGVybmFsX3NpKTogQWxsb3cgcmV0dXJuIHZhbHVlIHRvIGJlIGluIHRoZSBjb3VudAoJcmVnaXN0ZXIuCgkocmV0dXJuX2ludGVybmFsX2RpKTogTGlrZXdpc2UuCgoJKiByczYwMDAuYyAob3V0cHV0X21pX3RodW5rKTogUmVtb3ZlIHVudXNlZCB2YXJpYWJsZSBgc3AnLgoKCTIwMDAtMDItMDMgIEdlb2ZmIEtlYXRpbmcgIDxnZW9mZmtAY3lnbnVzLmNvbT4KCgkqIHN5c3Y0LmggKExPQ0FMX0xBQkVMX1BSRUZJWCk6IERlZmluZSwgZm9yIHRoZSB1c2Ugb2YgZGJ4ZWxmLmguCgoJMjAwMC0wMS0zMSAgR2VvZmYgS2VhdGluZyAgPGdlb2Zma0BjeWdudXMuY29tPgoKCSogcnM2MDAwLmggKEFTTV9PVVRQVVRfREVGX0ZST01fREVDTFMpOiBOZXcgbWFjcm8uCgoJKiByczYwMDAubWQgKHN0bXcpOiBVc2UgdGhlIHJpZ2h0IFBPV0VSIG9wY29kZS4KCShsbXcpOiBMaWtld2lzZS4KCgkyMDAwLTAxLTMxICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiByczYwMDAtcHJvdG9zLmg6IE5ldyBmaWxlLgoKCSogcnM2MDAwLmM6IEluY2x1ZGUgdG1fcC5oLiAgRml4IGNvbXBpbGUgdGltZSB3YXJuaW5ncy4KCgkqIHJzNjAwMC5oOiBNb3ZlIHByb3RvdHlwZXMgdG8gcnM2MDAwLXByb3Rvcy5oLiAgRml4IGNvbXBpbGUgdGltZQoJd2FybmluZ3MuCgoJKiBzeXN2NC5oOiBMaWtld2lzZS4KCgkyMDAwLTAxLTI4ICBHZW9mZiBLZWF0aW5nICA8Z2VvZmZrQGN5Z251cy5jb20+CgoJKiAuLi8uLi9jb25maWd1cmUuaW46IERlbGV0ZSBwb3dlcnBjbGUtKi13aW5udCoKCWFuZCBwb3dlcnBjbGUtKi1wZXxwb3dlcnBjbGUtKi1jeWd3aW4qLgoJKiAuLi8uLi9jb25maWd1cmU6IFJlZ2VuZXJhdGVkLgoJKiBjeWd3aW4uaDogRGVsZXRlLgoJKiByczYwMDAuaCAoT0JKRUNUX1dJTkRPV1NfTlQpOiBEZWxldGUuCgkoVEFSR0VUX1dJTkRPV1NfTlQpOiBEZWxldGUuCgkoQUJJX05UKTogRGVsZXRlLgoJKENBTExfTlRfRExMSU1QT1JUKTogRGVsZXRlLgoJRGVsZXRlIE5ULXNwZWNpZmljIGNvZGUuCgkqIHJzNjAwMC5tZCwgcnM2MDAwLmMsIHN5c3Y0Lmg6IERlbGV0ZSBOVC1zcGVjaWZpYyBjb2RlLgoJKiB3aW4tbnQuaDogRGVsZXRlLgoJKiB0LXdpbm50OiBEZWxldGUuCgkqIG50LWNpLmFzbTogRGVsZXRlLgoJKiBudC1jbi5hc206IERlbGV0ZS4KCSogbnRzdGFjay5hc206IERlbGV0ZS4KCgkyMDAwLTAxLTI3ICBGcmFueiBTaXJsICA8RnJhbnouU2lybC1rZXJuZWxAbGF1dGVyYmFjaC5jb20+CgoJKiByczYwMDAuaCAoU0VMRUNUX1JUWF9TRUNUSU9OKTogTW92ZSB0byBhaXguaC4KCShBU01fRklMRV9TVEFSVCk6IExpa2V3aXNlLgoJKEFTTV9ERUNMQVJFX0ZVTkNUSU9OX05BTUUpOiBMaWtld2lzZS4KCShBU01fT1VUUFVUX0xBQkVMUkVGKTogTGlrZXdpc2UuCgkoQVNNX09VVFBVVF9TS0lQKTogTGlrZXdpc2UuCgkoQVNNX09VVFBVVF9JTlRFUk5BTF9MQUJFTCk6IExpa2V3aXNlLgoJKEFTTV9HRU5FUkFURV9JTlRFUk5BTF9MQUJFTCk6IExpa2V3aXNlLgoJKEFTTV9PVVRQVVRfQ0FTRV9MQUJFTCk6IExpa2V3aXNlLgoJKEFTTV9PVVRQVVRfQUxJR05FRF9DT01NT04pOiBMaWtld2lzZS4KCShBU01fT1VUUFVUX0FTQ0lJKTogTGlrZXdpc2UuCgoJMjAwMC0wMS0yNyAgQ2xpbnRvbiBQb3BldHogIDxjcG9wZXR6QGN5Z251cy5jb20+CgoJKiByczYwMDAuYyAocnM2MDAwX2VtaXRfbG9hZF90b2NfdGFibGUpOiBVc2UgIkxDRyIgYW5kCglyZWxvYWRfdG9jX2xhYmVsbm8gZm9yIG5vbi1wcm9sb2d1ZSBUT0MgcmVsb2Fkcy4gIEFsc28sIGRvbid0CglpbmNyZW1lbnQgcnM2MDAwX3BpY19sYWJlbG5vIGhlcmUuCgkocnM2MDAwX2VtaXRfcHJvbG9ndWUpOiBQYXNzIFRSVUUgdG8gcnM2MDAwX2VtaXRfbG9hZF90b2NfdGFibGUsCglhbmQgaW5jcmVtZW50IHJzNjAwMF9waWNfbGFiZWxubyBoZXJlLgoKCTIwMDAtMDEtMjQgIEdlb2ZmcmV5IEtlYXRpbmcgIDxnZW9mZmtAY3lnbnVzLmNvbT4KCgkqIHJzNjAwMC5tZCAoZmN0aXd6KTogVXNlIChzZXQgKHJlZykgKHVuc3BlYzpESSBbKGZpeDpTSSAuLi4pXSkpCglyYXRoZXIgdGhhbiAoc2V0IChzdWJyZWc6U0kgKHJlZykpIChmaXg6U0kgLi4uKSkgc28gdGhhdCByZWdpc3RlcgoJYWxsb2NhdGlvbiBrbm93cyAocmVnKSBpcyBkZWFkIGJlZm9yZSB0aGUgaW5zbi4KCgkyMDAwLTAxLTIxICBHZW9mZiBLZWF0aW5nICA8Z2VvZmZrQGN5Z251cy5jb20+CgoJKiByczYwMDAubWQgKG1vdnNpX3RvX2NyKTogQ29ycmVjdCB0eXBvIGluIG91dHB1dCB0ZW1wbGF0ZS4KCgkyMDAwLTAxLTE5ICBHZW9mZnJleSBLZWF0aW5nICA8Z2VvZmZrQGN5Z251cy5jb20+CgoJKiByczYwMDAuYyAocnM2MDAwX3BpY19sYWJlbG5vKTogQWx3YXlzIGRlZmluZS4KCShyczYwMDBfcGljX2Z1bmNfbGFiZWxubyk6IERlbGV0ZS4KCShsbXdfb3BlcmF0aW9uKTogQ2hlY2sgZm9yIGEgemVybyBiYXNlIHJlZ2lzdGVyLAoJd2hpY2ggZG9lc24ndCBtZWFuIHdoYXQgd2Ugd2FudC4KCShzdG13X29wZXJhdGlvbik6IE5ldyBmdW5jdGlvbi4KCShwcmludF9vcGVyYW5kKTogRGVmaW5lIG5ldyAnbCcgbW9kaWZpZXIuCgkocnM2MDAwX3N0YWNrX2luZm8pOiBXZSBtdXN0IHNhdmUgYWxsIDY0IGJpdHMgb2YgdGhlIHJlZ2lzdGVycwoJaWYgVEFSR0VUX1BPV0VSUEM2NC4KCShyczYwMDBfb3V0cHV0X2xvYWRfdG9jX3RhYmxlKTogRGVsZXRlLgoJKHJzNjAwMF9lbWl0X2xvYWRfdG9jX3RhYmxlKTogTmV3IGZ1bmN0aW9uLgoJKHJzNjAwMF9hbGxvY2F0ZV9zdGFja19zcGFjZSk6IERlbGV0ZS4KCShyczYwMDBfZW1pdF9hbGxvY2F0ZV9zdGFjayk6IE5ldyBmdW5jdGlvbi4KCShyczYwMDBfZW1pdF9wcm9sb2d1ZSk6IE5ldyBmdW5jdGlvbi4KCShvdXRwdXRfcHJvbG9nKTogVXNlIHJzNjAwMF9lbWl0X3Byb2xvZ3VlLgoJKHJzNjAwMF9lbWl0X2VwaWxvZ3VlKTogQ2hhbmdlIGEgZmV3IHZhcmlhYmxlIG5hbWVzIHRvIGJlCgltb3JlIGFjY3VyYXRlLiAgUmVzdG9yZSBhbGwgNjQgYml0cyBvZiB0aGUgcmVnaXN0ZXJzIGlmCglUQVJHRVRfUE9XRVJQQzY0LiAgT25seSByZXN0b3JlIHRoZSBGUCByZWdpc3RlcnMgd2hpY2ggd2VyZSB1c2VkCglpZiB0aGV5IGFyZSBiZWluZyBzYXZlZC9yZXN0b3JlZCBvbmUtYXQtYS10aW1lLgoJKG91dHB1dF9taV90aHVuayk6IERlbGV0ZSBpbmVmZmljaWVudCBjb2RlIGdlbmVyYXRpb24uCgkob3V0cHV0X2Z1bmN0aW9uX3Byb2ZpbGVyKTogRG9uJ3QgdXNlIHJzNjAwMF9vdXRwdXRfbG9hZF90b2NfdGFibGUuCgkqIHJzNjAwMC5oOiBEZWNsYXJlIHJzNjAwMF9lbWl0X2xvYWRfdG9jX3RhYmxlLAoJcnM2MDAwX2FsbG9jYXRlX3N0YWNrX3NwYWNlLCBzdG13X29wZXJhdGlvbi4gIERvbid0IGRlY2xhcmUKCXJzNjAwMF9vdXRwdXRfbG9hZF90b2NfdGFibGUuCgkqIHJzNjAwMC5tZCAoZWxmX2hpZ2gpOiBBbGxvdyByZWdpc3RlciAwLCBidXQgZGlzY291cmFnZSBpdAoJaGVhdmlseS4KCShlbGZfbG93KTogU3VwcG9ydCBsb2FkaW5nIGludG8gcmVnaXN0ZXIgMC4KCShsb2FkX3RvY19haXhfc2kpOiBOZXcgcGF0dGVybi4KCShsb2FkX3RvY19haXhfZGkpOiBOZXcgcGF0dGVybi4KCShsb2FkX3RvY192NF9waWNfc2kpOiBOZXcgcGF0dGVybi4KCShsb2FkX3RvY192NF9waWNfZGkpOiBOZXcgcGF0dGVybi4KCShsb2FkX3RvY192NF9QSUNfMSk6IE5ldyBwYXR0ZXJuLgoJKGxvYWRfdG9jX3Y0X1BJQ18xYik6IE5ldyBwYXR0ZXJuLgoJKGxvYWRfdG9jX3Y0X1BJQ18yKTogTmV3IHBhdHRlcm4uCgkoYnVpbHRpbl9zZXRqbXBfcmVjZWl2ZXIpOiBVc2UgcnM2MDAwX2VtaXRfbG9hZF90b2NfdGFibGUuCgkobm9ubG9jYWxfZ290b19yZWNlaXZlcik6IFVzZSByczYwMDBfZW1pdF9sb2FkX3RvY190YWJsZS4KCShwcm9sb2d1ZSk6IE5ldyBleHBhbmRlci4KCShtb3Zlc2lfZnJvbV9jcik6IE5ldyBwYXR0ZXJuLgoJKHN0bXcpOiBOZXcgcGF0dGVybi4KCShzYXZlX2ZwcmVnc19zaSk6IE5ldyBwYXR0ZXJuLgoJKHNhdmVfZnByZWdzX2RpKTogTmV3IHBhdHRlcm4uCgoJMjAwMC0wMS0xOSAgR2VvZmYgS2VhdGluZyAgPGdlb2Zma0BjeWdudXMuY29tPgoKCSogcnM2MDAwLm1kIChtb3ZzaSk6IERvbid0IHVzZSBmb3JjZV9yZWcgd2hlbiBub19uZXdfcHNldWRvcy4KCShtb3ZkaSk6IExpa2V3aXNlLgoJKG1vdmhpKTogTGlrZXdpc2UuCgkobW92cWkpOiBMaWtld2lzZS4KCgkyMDAwLTAxLTE5ICBHZW9mZiBLZWF0aW5nICA8Z2VvZmZrQGN5Z251cy5jb20+CgoJKiByczYwMDAubWQgKG1vdnNpX2dvdCk6ICd1bnNwZWMgOCcgcmV0dXJucyBhIFNJbW9kZSByZXN1bHQsCglhdCBwcmVzZW50LgoJKG1vdnNpX2dvdF9pbnRlcm5hbCk6IExpa2V3aXNlLgoJKG1vdnNpX2dvdF9pbnRlcm5hbCsxKTogTGlrZXdpc2UuCgkoc2V0X3NwKTogJ3Vuc3BlYyA3JyBkb2VzIGEgU0ltb2RlIGNsb2JiZXIuCgoJMjAwMC0wMS0xOSAgR2VvZmYgS2VhdGluZyAgPGdlb2Zma0BjeWdudXMuY29tPgoKCSogcnM2MDAwLm1kIChmbG9hdHNpZGYyKTogRG9uJ3QgdXNlIHRoZSBmcG1lbSAicmVnaXN0ZXIiLCBqdXN0CglhbGxvY2F0ZSBhIHN0YWNrIHRlbXBvcmFyeS4KCShmbG9hdHNpZGYyX2ludGVybmFsKTogTGlrZXdpc2UuCgkoZmxvYXRzaWRmMl9pbnRlcm5hbCsxKTogTGlrZXdpc2UuICBEb24ndCBkbyBiaXp6YXJlIGhhY2tzCgl3aXRoIHVuc3BlYy4KCShmbG9hdHVuc3NpZGYyKTogRG9uJ3QgdXNlIHRoZSBmcG1lbSAicmVnaXN0ZXIiLCBqdXN0CglhbGxvY2F0ZSBhIHN0YWNrIHRlbXBvcmFyeS4KCShmbG9hdHVuc3NpZGYyX2ludGVybmFsKTogTGlrZXdpc2UuCgkoZmxvYXR1bnNzaWRmMl9pbnRlcm5hbCsxKTogTGlrZXdpc2UuICBEb24ndCBkbyBiaXp6YXJlIGhhY2tzCgl3aXRoIHVuc3BlYy4KCShmbG9hdHNpZGYyX2xvYWRhZGRyKTogRGVsZXRlLgoJKGZsb2F0c2lkZjJfc3RvcmUxKTogRGVsZXRlLgoJKGZsb2F0c2lkZjJfc3RvcmUyKTogRGVsZXRlLgoJKGZsb2F0c2lkZjJfbG9hZCk6IERlbGV0ZS4KCShmaXhfdHJ1bmNkZnNpMik6IERvbid0IHVzZSB0aGUgZnBtZW0gInJlZ2lzdGVyIiwganVzdAoJYWxsb2NhdGUgYSBzdGFjayB0ZW1wb3JhcnkuCgkoZml4X3RydW5jZGZzaTJfaW50ZXJuYWxfc2kpOiBEZWxldGUuCgkoZml4X3RydW5jZGZzaTJfaW50ZXJuYWxfZGkpOiBEZWxldGUuCgkoZml4X3RydW5jZGZzaTJfaW50ZXJuYWwpOiBOZXcgaW5zbi4KCShmaXhfdHJ1bmNkZnNpMl9pbnRlcm5hbCsxKTogRG9uJ3QgdXNlIHRoZSBmcG1lbSAicmVnaXN0ZXIiLgoJKGZpeF90cnVuY2Rmc2kyX3N0b3JlKTogRGVsZXRlLgoJKGZpeF90cnVuY2Rmc2kyX2xvYWQpOiBEZWxldGUuCgkoZmN0aXd6KTogUHJvZHVjZSBnZW5fZmN0aXd6LgoKCTIwMDAtMDEtMTkgIEdlb2ZmcmV5IEtlYXRpbmcgIDxnZW9mZmtAY3lnbnVzLmNvbT4KCgkqIGVhYmkuaCAoSU5WT0tFX19tYWluKTogRGVmaW5lLgoJKiByczYwMDAuYyAocnM2MDAwX3N0YWNrX2luZm8pOiBEb24ndCBoYW5kbGUgY2FsbCB0byBOQU1FX19NQUlOCglzcGVjaWFsbHkuCgkocnM2MDAwX2VtaXRfcHJvbG9ndWUpOiBMaWtld2lzZS4KCSogcnM2MDAwLmggKHN0cnVjdCByczYwMDBfc3RhY2spOiBEb24ndCBrZWVwIHRyYWNrIG9mIHdoZXRoZXIKCXRoaXMgaXMgdGhlIG1haW4gcHJvZ3JhbS4KCgkyMDAwLTAxLTE5ICBHZW9mZiBLZWF0aW5nICA8Z2VvZmZrQGN5Z251cy5jb20+CgoJKiByczYwMDAuYyAocnM2MDAwX3ZhX2FyZyk6IERlbGV0ZSBzb21lIHVudXNlZCB2YXJpYWJsZXMuCgoJMjAwMC0wMS0xOSAgR2VvZmYgS2VhdGluZyAgPGdlb2Zma0BjeWdudXMuY29tPgoKCSogcnM2MDAwLmMgKHJzNjAwMF92YV9hcmcpOiBPbiBBSVgsIHBhZGRpbmcgZm9yIHNtYWxsIGFyZ3VtZW50cwoJZ29lcyBhZnRlciB0aGUgYXJndW1lbnQuCgoJMjAwMC0wMS0xMiAgR2VvZmYgS2VhdGluZyAgPGdlb2Zma0BjeWdudXMuY29tPgoKCSogcnM2MDAwLm1kOiBEb2N1bWVudCAndW5zcGVjJyB2YWx1ZXMgdXNlZC4KCShlcGlsb2d1ZSk6IE5ldyBleHBhbmRlci4KCShtb3Zlc2lfdG9fY3Jfb25lKTogTmV3IGV4cGFuZGVyLgoJKG1vdmVzaV90b19jciBhbmQgZm9sbG93aW5nKTogTmV3IHBhdHRlcm4uCgkobG13KTogTmV3IHBhdHRlcm4uCgkocmV0dXJuX2ludGVybmFsX3NpKTogTmV3IHBhdHRlcm4uCgkocmV0dXJuX2ludGVybmFsX2RpKTogTmV3IHBhdHRlcm4uCgkocmV0dXJuX2FuZF9yZXN0b3JlX2ZwcmVnc19zaSk6IE5ldyBwYXR0ZXJuLgoJKHJldHVybl9hbmRfcmVzdG9yZV9mcHJlZ3NfZGkpOiBOZXcgcGF0dGVybi4KCSogcnM2MDAwLmg6IERlY2xhcmUgbmV3IGZ1bmN0aW9ucy4KCSogcnM2MDAwLmMgKHJzNjAwMF9zdGFja19pbmZvKTogVXNlIGN1cnJlbnRfZnVuY3Rpb25faXNfbGVhZgoJcmF0aGVyIHRoYW4gcnM2MDAwX2NhbGxzX3AuCgkocnM2MDAwX21ha2VzX2NhbGxzKTogRGVsZXRlLgoJKGxtd19vcGVyYXRpb24pOiBOZXcgZnVuY3Rpb24uCgkobXRjcmZfb3BlcmF0aW9uKTogTmV3IGZ1bmN0aW9uLgoJKHJzNjAwMF9lbWl0X2VwaWxvZ3VlKTogTmV3IGZ1bmN0aW9uLgoJKG91dHB1dF9lcGlsb2cpOiBDYWxsIHJzNjAwMF9lbWl0X2VwaWxvZ3VlIGFuZCBmaW5hbCBpZgoJIVRBUkdFVF9TQ0hFRF9QUk9MT0csIGluc3RlYWQgb2Ygd3JpdGluZyB0ZXh0IHVuY29uZGl0aW9uYWxseS4KCgkyMDAwLTAxLTEyICBHZW9mZiBLZWF0aW5nICA8Z2VvZmZrQGN5Z251cy5jb20+CgoJKiBhaXg0My5oIChTVUJTVUJUQVJHRVRfU1dJVENIRVMpOiBEb2N1bWVudCBzd2l0Y2hlcy4KCSogYWl4NDEuaCAoU1VCU1VCVEFSR0VUX1NXSVRDSEVTKTogRG9jdW1lbnQgc3dpdGNoZXMuCgkqIGFpeC5oIChTVUJUQVJHRVRfU1dJVENIRVMpOiBEb2N1bWVudCBzd2l0Y2hlcy4KCSogcnM2MDAwLmg6IChUQVJHRVRfU1dJVENIRVMpOiBEb24ndCBwcmludCBvcHRpb25zIHR3aWNlLiAgTWFrZQoJc2NoZWQtcHJvbG9nIGFuZCBzY2hlZC1lcGlsb2cgdGhlIHNhbWUuICBEb2N1bWVudCBhbGwgdGhlCglzd2l0Y2hlcy4KCShUQVJHRVRfT1BUSU9OUyk6IE5vIGxvbmdlciBhbGxvdyAtbWRlYnVnLS4KCgkyMDAwLTAxLTEyICBHZW9mZiBLZWF0aW5nICA8Z2VvZmZrQGN5Z251cy5jb20+CgoJKiByczYwMDAuaCAoQVNNX0ZJTEVfRU5EKTogTW92ZSB0byBhaXguaC4KCShFWFRSQV9TRUNUSU9OUyk6IE1vdmUgdG8gYWl4LmguCgkoUkVBRE9OTFlfREFUQV9TRUNUSU9OKTogTW92ZSB0byBhaXguaC4KCShFWFRSQV9TRUNUSU9OX0ZVTkNUSU9OUyk6IE1vdmUgdG8gYWl4LmguCgkoU0VMRUNUX1NFQ1RJT04pOiBNb3ZlIHRvIGFpeC5oLgoJKEpVTVBfVEFCTEVTX0lOX1RFWFRfU0VDVElPTik6IE1vdmUgdG8gYWl4LmguCgkoSU5UX1JFR05PX1ApOiBVc2Ugc3ltYm9saWMgbmFtZSBmb3IgQVJHX1BPSU5URVJfUkVHTlVNLgoJKExJTktfUkVHSVNURVJfUkVHTlVNKTogTmV3IGRlZmluaXRpb24uCgkoUkVUVVJOX0FERFJfUlRYKTogVXNlIHN5bWJvbGljIG5hbWUgZm9yIExJTktfUkVHSVNURVJfUkVHTlVNLgoJKFNMT1dfVU5BTElHTkVEX0FDQ0VTUyk6IERlZmluZSBpbiBhIHdheSBzdWl0YWJsZSBmb3IgYm90aAoJQUlYIGFuZCBTVlI0LgoJKiBzeXN2NC5oOiBEZWxldGUgdGhlIGNvZGUgYmV0d2VlbiB0aGUgaW5jbHVzaW9uIG9mIHJzNjAwMC5oCglhbmQgc3ZyNC5oLgoJKERXQVJGX0RFQlVHR0lOR19JTkZPKTogRG9uJ3QgZGVmaW5lLCBpdCdzIGRlZmluZWQgaW4gZWxmb3MuaC4KCShGUF9BUkdfTUFYX1JFRyk6IE1vdmUgZ2VuZXJpYyBkZWZpbml0aW9uIHRvIHJzNjAwMC5oLgoJKFJTNjAwMF9SRUdfU0FWRSk6IE1vdmUgZ2VuZXJpYyBkZWZpbml0aW9uIHRvIHJzNjAwMC5oLgoJKFJTNjAwMF9TQVZFX0FSRUEpOiBNb3ZlIGdlbmVyaWMgZGVmaW5pdGlvbiB0byByczYwMDAuaC4KCSogcnM2MDAwLm1kIChmbG9hdHNpZGYyX2xvYWRhZGRyKTogVGhlIGZpcnN0IGFyZyBoZXJlIGlzIFBtb2RlLgoJKGZpeF90cnVuY2Rmc2kyX2ludGVybmFsKTogUmVuYW1lIHRvIGZpeF90cnVuY2Rmc2kyX2ludGVybmFsX3NpLgoJKGZpeF90cnVuY2Rmc2kyX2ludGVybmFsX2RpKTogTmV3IHBhdHRlcm4uCgkoZml4X3RydW5jZGZzaTJfc3RvcmUpOiBUaGUgc2Vjb25kIGFyZyBoZXJlIGlzIFBtb2RlIHRvby4KCShmaXhfdHJ1bmNkZnNpMl9sb2FkKTogVGhlIHNlY29uZCBhcmcgaGVyZSBpcyBQbW9kZSB0b28uCgkodGFibGVqdW1wZGkpOiBOb3cgdGhhdCBzd2l0Y2ggdGFibGVzIGhvbGQgb25seSBTSW1vZGUgdmFsdWVzLAoJZ2NjIG5lZWRzIHRvIGtub3cgaG93IHRvIGFkZCB0aGVtIHRvIHRoZSBwYyB3aGljaCBpcyBESW1vZGUuCgkqIHJzNjAwMC5jIChyczYwMDBfc3RhY2tfaW5mbyk6IFVzZSBzeW1ib2xpYyBuYW1lIGZvcgoJTElOS19SRUdJU1RFUl9SRUdOVU0uCgkob3V0cHV0X21pX3RodW5rKSBbIVRBUkdFVF9FTEZdOiBEb24ndCBkZWZpbmUgc3AsIGl0J3Mgbm90IHVzZWQuCgkob3V0cHV0X3RvYyk6IERlbGV0ZSB1bnVzZWQgdmFyaWFibGVzIHMxIGFuZCBzMi4KCShvdXRwdXRfYXNjaWkpOiBVc2UgZnB1dHMgbm90IGZwcmludGYgb24gYSB2YXJpYWJsZSBzdHJpbmcuCgoJMjAwMC0wMS0wNyAgRGF2aWQgRWRlbHNvaG4gIDxlZGVsc29obkBnbnUub3JnPgoKCSogcnM2MDAwLmMgKHByb2Nlc3Nvcl90YXJnZXRfdGFibGUpOiBBZGQgcG93ZXIzIGFzIGFsaWFzIGZvciA2MzAuCgkqIGFpeDQzLmg6IFJldmVydCBBdWcgMiBjaGFuZ2UuCgkoSEFTX0lOSVRfU0VDVElPTik6IERlZmluZSwgbm90IHZpc2libGUgeWV0LgoJKExEX0lOSVRfU1dJVENIKTogRGVmaW5lLCBub3QgdmlzaWJsZSB5ZXQuCgkqIHQtYWl4NDMgKE1VTFRJTElCX09QVElPTlMpOiBSZXZlcnQgQXVnIDIgY2hhbmdlLgoKCTIwMDAtMDEtMDQgIEpvZWwgU2hlcnJpbGwgKGpvZWxAT0FSY29ycC5jb20+CgoJKiBjb25maWcvcnM2MDAwL3J0ZW1zLmg6IEluY2x1ZGUgY29uZmlnL3J0ZW1zLmguCgoJMjAwMC0wMS0wNCAgRGF2aWQgRWRlbHNvaG4gIDxlZGVsc29obkBnbnUub3JnPgoKCSogcnM2MDAwLmggKEhBTkRMRV9QUkFHTUFfUEFDSyk6IERlZmluZS4KCShTTE9XX1VOQUxJR05FRF9BQ0NFU1MpOiBEZWZpbmUuCgkoQ0FTRV9WRUNUT1JfTU9ERSk6IEFsd2F5cyB1c2UgMzItYml0IG9mZnNldHMuCgkoQVNNX0ZJTEVfRU5EKTogR2VuZXJhdGUgNjQtYml0IHN5bWJvbCBpbiA2NC1iaXQgbW9kZS4KCShFWFRSQV9TRUNUT0lOX0ZVTkNUSU9OUyk6IEluZGVudCAuY3NlY3QgcHNldWRvLW9wLgoJKHRvY19zZWN0aW9uKTogTGlrZXdpc2UgYW5kIC50b2MgcHNldWRvLW9wLgoJKEFTTV9ERUNMQVJFX0ZVTkNUSU9OKTogTGlrZXdpc2UuICBBbGlnbiB0ZXh0IG1vcmUgc3RyaWN0bHkgaW4KCTY0LWJpdCBtb2RlLgoJKFRFWFRfU0VDVElPTl9BU01fT1ApOiBMaWtld2lzZS4KCShBU01fT1VUUFVUX0FERF9WRUNfRUxULCBBU01fT1VUUFVUX0FERFJfRElGRl9FTFQpOiBBbHdheXMgdXNlCgkzMi1iaXQgb2Zmc2V0cy4KCgkxOTk5LTEyLTE3ICBKYWt1YiBKZWxpbmVrICA8amFrdWJAcmVkaGF0LmNvbT4KCgkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLmggKFRBUkdFVF9QT1dFUlBDNjQpOiBNYWtlIHN1cmUKCVVOSVRTX1BFUl9XT1JEIGFuZCBCSVRTX1BFUl9XT1JEIGFyZSBjb21waWxlIHRpbWUgY29uc3RhbnRzIHdoZW4KCWNvbXBpbGluZyBsaWJnY2MyLgoKCTIwMDAtMDEtMDYgIEZyYW56IFNpcmwgPEZyYW56LlNpcmwta2VybmVsQGxhdXRlcmJhY2guY29tPgoKCSogcnM2MDAwLmg6IE1vdmUgbW9yZSBzdHVmZiBmcm9tIGhlcmUuLi4KCSogYWl4Lmg6IHRvIGhlcmUuCgkqIHN5c3Y0Lmg6IENsZWFudXAgYWNjb3JkaW5nbHkuCgkqIG5ldHdhcmUuaDogTGlrZXdpc2UKCgkyMDAwLTAxLTA1ICBGcmFueiBTaXJsIDxGcmFuei5TaXJsLWtlcm5lbEBsYXV0ZXJiYWNoLmNvbT4KCgkqIHJzNjAwMC5oOiBDb250aW51ZSBjbGVhbnVwLgoJKiBhaXguaDogTGlrZXdpc2UuCgkqIGx5bnguaDogTGlrZXdpc2UuCgkqIG5ldHdhcmUuaDogTGlrZXdpc2UuCgkqIHNvbDIuaDogTGlrZXdpc2UuCgkqIHN5c3Y0Lmg6IExpa2V3aXNlLgoJKiB3aW4tbnQuaDogTGlrZXdpc2UuCgoJKiByczYwMDAuaCAoVEFSR0VUX1NXSVRDSEVTKTogQWRkIGRlc2NyaXB0aW9ucy4KCShUQVJHRVRfT1BUSU9OUyk6IExpa2V3aXNlLgoKCSogc3lzdjQuaCAoU1VCVEFSR0VUX1NXSVRDSEVTKTogQWRkIGRlc2NyaXB0aW9ucy4KCShTVUJUQVJHRVRfT1BUSU9OUyk6IExpa2V3aXNlLgoKCSogcnM2MDAwLm1kOiBGaXggY29tcGlsZSB0aW1lIHdhcm5pbmdzLgoKCTIwMDAtMDEtMDQgIEdlb2ZmIEtlYXRpbmcgIDxnZW9mZmtAY3lnbnVzLmNvbT4KCgl2eHdvcmtzIHBhdGNoZXMgZnJvbSB0aGUgQ3lnbnVzIHRyZWUgb3JpZ2luYWxseSBieQoJTWljaGFlbCBNZWlzc25lciA8bWVpc3NuZXJAY3lnbnVzLmNvbT4gYW5kIFZsYWRpbWlyIE1ha2Fyb3YKCTx2bWFrYXJvdkBjeWdudXMuY29tPi4KCSogc3lzdjQuaCAoU1VCVEFSR0VUX1NXSVRDSEVTKTogQWRkIHZ4d29ya3MuCgkoRU5ERklMRV9TUEVDKTogTGlrZXdpc2UuCgkoTElCX1ZYV09SS1NfU1BFQyk6IE5ldyBtYWNyby4KCShTVEFSVEZJTEVfVlhXT1JLU19TUEVDKTogTmV3IG1hY3JvLgoJKEVOREZJTEVfVlhXT1JLU19TUEVDKTogTmV3IG1hY3JvLgoJKExJTktfU1RBUlRfVlhXT1JLU19TUEVDKTogTmV3IG1hY3JvLgoJKExJTktfT1NfVlhXT1JLU19TUEVDKTogTmV3IG1hY3JvLgoJKENQUF9PU19WWFdPUktTX1NQRUMpOiBOZXcgbWFjcm8uCgkoU1VCVEFSR0VUX0VYVFJBX1NQRUNTKTogQWRkIGFsbCB0aGUgdnh3b3JrcyBzcGVjcy4KCSogdnhwcGMuaDogUmV3cml0ZSB0byB1c2UgcHJvcGVyIGNvbmZpZ3VyYXRpb24gbWV0aG9kLgoJKiB2eHBwY2xlLmg6IE5ldyBmaWxlLgoJKiAuLi8uLi9jb25maWd1cmUuaW46IEFkZCBwb3dlcnBjbGUtd3JzLXZ4d29ya3MqLgoJKiAuLi8uLi9jb25maWd1cmU6IFJlYnVpbHQuCgoJMjAwMC0wMS0wNCAgR2VvZmYgS2VhdGluZyAgPGdlb2Zma0BjeWdudXMuY29tPgoKCUxvdHMgb2YgY2hhbmdlcyB0byByczYwMDAuaCwgc3lzdjQuaCwgYWl4LmgsCglhaXgzMS5oLCBhaXgzbmV3YXMuaCwgYWl4NDEuaCwgYWl4NDMuaCwgYmVvcy5oLAoJd2l0aCB0aGUgYWltIHRoYXQgcnM2MDAwLmggaXMgdGhlIGZpcnN0IGhlYWRlcgoJaW5jbHVkZWQgYW5kIHRoZSBvdGhlcnMgb3ZlcnJpZGUgaXQuCgkqIGFpeC5oOiBOZXcgZmlsZS4KCgkqIHgtYWl4NDEtZ2xkOiBSZW1vdmUuCgkqIHgtYWl4NDM6IFJlbW92ZS4KCSogeC1haXg0MTogUmVtb3ZlIHRhcmdldC1zcGVjaWZpYyBzd2l0Y2hlcywgYW5kIGRvbid0IHNwZWNpZnkKCS1XbCwtYmJpZ3RvYyBhcyB3ZSBkb24ndCBuZWVkIGl0IGFueSBtb3JlLgoJKiAuLi8uLi9jb25maWd1cmUuaW46IFVzZSB4LWFpeDQxIGZvciBwcGMgQUlYIDQuMSBhbmQgYWJvdmUuCglVc2UgdC1haXg0MyBmb3IgQUlYIDQuMyBhbmQgYWJvdmUuCgkqIC4uLy4uL2NvbmZpZ3VyZTogUmVnZW5lcmF0ZWQuCgoJKiByczYwMDAuaCAoVEFSR0VUX1NXSVRDSEVTKTogQWRkIHNvbWUgaW5pdGlhbCBwcm9sb2ctc2NoZWR1bGluZwoJb3B0aW9ucywgdGhhdCBkb24ndCBkbyBhbnl0aGluZyB5ZXQuCgkoTUFTS19TQ0hFRF9QUk9MT0cpOiBOZXcgbWFjcm8uCgkoTUFTS19TQ0hFRF9FUElMT0cpOiBOZXcgbWFjcm8uCgkoVEFSR0VUX1NDSEVEX1BST0xPRyk6IE5ldyBtYWNyby4KCShUQVJHRVRfU0NIRURfRVBJTE9HKTogTmV3IG1hY3JvLgoKCTIwMDAtMDEtMDQgIEdlb2ZmIEtlYXRpbmcgIDxnZW9mZmtAY3lnbnVzLmNvbT4KCgkqIHJzNjAwMC5jOiBDb3JyZWN0IGNvbW1lbnQsIHRoZSBgbWluaW1hbCcgVE9DcyBhcmUgYWN0dWFsbHkKCW9uZSBwZXIgdHJhbnNsYXRpb24gdW5pdCwgbm90IG9uZSBwZXIgZnVuY3Rpb24uCgkob3V0cHV0X3RvYyk6IEFsc28gZG8gZHVwbGljYXRlIGNvbnN0YW50IGVsaW1pbmF0aW9uCglmb3IgcGVyLXRyYW5zbGF0aW9uLXVuaXQgVE9Dcy4KCgkqIHJzNjAwMC5tZCAobm9ubG9jYWxfZ290b19yZWNlaXZlcik6IFB1dCBpdCBiYWNrIGFzIGJlZm9yZS4gIEFkZAoJYSBjb21tZW50IGV4cGxhaW5pbmcgX2V4YWN0bHlfIHdoZW4gdGhpcyBwYXR0ZXJuIGdldHMgdXNlZC4KCShidWlsdGluX3NldGptcF9yZWNlaXZlcik6IE5ldyBwYXR0ZXJuIGZvciBiZXR0ZXIgY2xhcml0eS4KCShpbml0X3Y0X3BpYyk6IE1vdmUgaXQgaW50byBhIHNlY3Rpb24gZGVhbGluZyB3aXRoIFRPQyByZWdpc3RlcnMuCgoJMTk5OS0xMi0zMCAgR2VvZmYgS2VhdGluZyAgPGdlb2Zma0BjeWdudXMuY29tPgoKCSogcnM2MDAwLmMgKHRvY19oYXNoX3RhYmxlKTogTmV3IHZhcmlhYmxlLgoJKHJzNjAwMF9oYXNoX2NvbnN0YW50KTogTmV3IGZ1bmN0aW9uLgoJKHRvY19oYXNoX2Z1bmN0aW9uKTogTmV3IGZ1bmN0aW9uLgoJKHRvY19oYXNoX2VxKTogTmV3IGZ1bmN0aW9uLgoJKHRvY19oYXNoX21hcmtfZW50cnkpOiBOZXcgZnVuY3Rpb24uCgkodG9jX2hhc2hfbWFya190YWJsZSk6IE5ldyBmdW5jdGlvbi4KCShvdXRwdXRfdG9jKTogRG9uJ3Qgb3V0cHV0IGR1cGxpY2F0ZSBUT0MgZW50cmllcyBpbgoJYSBzaW5nbGUgZmlsZS4KCShyczYwMDBfYWRkX2djX3Jvb3RzKTogQWRkIHRoZSBoYXNoIHRhYmxlIGFzIGEgR0Mgcm9vdC4KCSogdC1haXg0MzogTW92ZSBBUl9GT1JfVEFSR0VUIGFuZCBDTElCIGhlcmUgZnJvbSB4LWFpeDQzLAoJd2hlcmUgdGhleSBjbGVhcmx5IHNob3VsZG4ndCBiZS4gIFRoaXMgbWF5IG5lZWQgdG8gYmUgZml4ZWQKCWxhdGVyIHdoZW4gdGhlcmUgaXMgYSBHTlUgYXIgZm9yIEFJWC4KCSogeC1haXg0MzogRG9uJ3QgZGVmaW5lIENMSUIgb3IgQVJfRk9SX1RBUkdFVC4KCURvbid0IGRlZmluZSBCT09UX0xERkxBR1MgYXMgaXQgaXMgbm93IG5vdCBuZWNlc3NhcnkuCgoJMTk5OS0xMi0yOSAgR2VvZmYgS2VhdGluZyAgPGdlb2Zma0BjeWdudXMuY29tPgoKCSogcnM2MDAwLmMgKHJzNjAwMF9idWlsZF92YV9saXN0KTogVXNlICdjaGFyIConIHJhdGhlciB0aGFuICd2b2lkIConCglmb3IgdmFfbGlzdCBvbiBBSVguICBVc2UgdW5zaWduZWRfY2hhcl90eXBlX25vZGUgcmF0aGVyIHRoYW4KCWNvbnN0cnVjdGluZyBvdXIgb3duIHZlcnNpb24gb24gc3ZyNC4KCgkxOTk5LTEyLTE3ICBHZW9mZiBLZWF0aW5nICA8Z2VvZmZrQGN5Z251cy5jb20+CgoJKiB0cmFtcC5hc20gKF9fdHJhbXBvbGluZV9zaXplKTogRGVsZXRlIENZR05VUyBMT0NBTCBjb21tZW50LAoJc2luY2UgcGF0ZW50bHkgaXQncyBub3QuCgoJMTk5OS0xMi0wOCAgR2VvZmYgS2VhdGluZyAgPGdlb2Zma0BjeWdudXMuY29tPgoKCSogY29uZmlnL3JzNjAwMC9yczYwMDAubWQgKG5vbmxvY2FsX2dvdG9fcmVjZWl2ZXIpOiBUdXJuIGludG8KCWRlZmluZV9leHBhbmQvZGVmaW5lX2luc24gcGFpciwgYW5kIGhhbmRsZSByZXN0b3JlIG9mIHRoZQoJU1ZSNCAtZnBpYyByZWdpc3Rlci4KCldlZCBNYXIgMTUgMTU6NDM6MzggMjAwMCAgSmVmZnJleSBBIExhdyAgKGxhd0BjeWdudXMuY29tKQoKCSogYWNjb25maWcuaCAoSEFWRV9HQVNfV0VBSyk6IE5ldyBkZWZpbmUuCgkqIGNvbmZpZ3VyZS5pbiAoYXNzZW1ibGVyIHdlYWsgc3VwcG9ydCk6IENoZWNrIGZvciAud2VhayBzdXBwb3J0LgoJKiBjb25maWcuaW4sIGNvbmZpZ3VyZTogUmVidWlsdC4KCSogcGEvc29tLmggKE1BS0VfREVDTF9PTkVfT05MWSwgQVNNX1dFQUtFTl9MQUJFTCk6IE9ubHkgZGVmaW5lIGlmCglIQVZFX0dBU19XRUFLIGlzIGRlZmluZWQuCgoyMDAwLTAzLTE1ICBOaWNrIENsaWZ0b24gIDxuaWNrY0BjeWdudXMuY29tPgoKCSogY29uZmlnL2FybS9hcm0uYyAoYXJtX291dHB1dF9lcGlsb2d1ZSk6IERvIG5vdCBwYXNzICVjIHRvCglhc21fZnByaW50ZigpLgoKMjAwMC0wMy0xNSAgWmFjayBXZWluYmVyZyAgPHphY2tAd29sZXJ5LmN1bWIub3JnPgoKCSogY3BwZmlsZXMuYyAob3Blbl9pbmNsdWRlX2ZpbGUpOiBOZXcgZnVuY3Rpb24uCgkoZmluZF9pbmNsdWRlX2ZpbGUsIGNwcF9yZWFkX2ZpbGUpOiBVc2UgaXQuCgoyMDAwLTAzLTE1ICBKYXNvbiBNZXJyaWxsICA8amFzb25AY2FzZXkuY3lnbnVzLmNvbT4KCgkqIGNwcGhhc2guYyAoZHVtcF9oYXNoX2hlbHBlcik6IFRha2UgdGhlIHNsb3QsIG5vdCB0aGUgZWxlbWVudC4KCldlZCBNYXIgMTUgMTQ6Mjg6NTQgMjAwMCAgSmFzb24gRWNraGFyZHQgIDxqbGVAY3lnbnVzLmNvbT4KCgkqIGZsb3cuYyAodmVyaWZ5X2Zsb3dfaW5mbyk6IENoZWNrIGZvciB1bmNvbmRpdGlvbmFsIHJldHVybi4KCldlZCBNYXIgMTUgMTE6MzQ6MjcgMjAwMCAgSmltIFdpbHNvbiAgPHdpbHNvbkBjeWdudXMuY29tPgoKCSogY29uZmlnL2lhNjQvaWE2NC5tZCAocmVzdG9yZV9zdGFja19ub25sb2NhbCk6IE5ldy4KCSogY29uZmlnL2lhNjQvbGliMWZ1bmNzLmFzbSAoX19pYTY0X25vbmxvY2FsX2dvdG8pOiBEZWxldGUgcGFkZGluZyBub3AuCgkoX19pYTY0X3Jlc3RvcmVfc3RhY2tfbm9ubG9jYWwpOiBOZXcuCgkqIGNvbmZpZy9pYTY0L3QtaWE2NCAoTElCMUFTTUZVTkNTKTogQWRkIF9fcmVzdG9yZV9zdGFja19ub25sb2NhbC4KCjIwMDAtMDMtMTUgIEFsZXhhbmRyZSBPbGl2YSAgPG9saXZhQGxzZC5pYy51bmljYW1wLmJyPgoKCSogY3BwaGFzaC5jIChjb2xsZWN0X2Zvcm1hbF9wYXJhbWV0ZXJzKTogRG8gbm90IGNvbXBsYWluIGFib3V0CglwYXJhbWV0ZXIgbmFtZXMgdGhhdCBqdXN0IHN0YXJ0IHdpdGggYF9fVkFfQVJHU19fJy4KCldlZCBNYXIgMTUgMTM6MjY6NTggTUVUIDIwMDAgIEphbiBIdWJpY2thICA8amhAc3VzZS5jej4KCgkqIGkzODYubWQgKG1vdmhpXzEpOiBQcm9tb3RlIG1vdncgaW1tLCByZWcgdG8gbW92bCBpbW0sIHJlZyBhbmQKCW1vdncgcmVnLCByZWcgdG8gbW92endsIHJlZywgcmVnIG9uIFBBUlRJQUxfUkVHSVNURVJfU1RBTEwgbWFjaGluZXMuCgkqIGkzODYuYyAocGVudGl1bXByb19jb3N0KTogU2V0IG11bCBjb3N0IHRvIDQuCgkoeDg2X3VzZV9tb3Z4KTogU2V0IGZvciBQUHJvLgoKV2VkIE1hciAxNSAxMzowNzowNSBNRVQgMjAwMCAgSmFuIEh1Ymlja2EgIDxqaEBzdXNlLmN6PgoKCSogaTM4Ni5tZCAoaXg4Nl9jb21wdXRlX2ZyYW1lX3NpemUpOiBzdGFja19hbGlnbm1lbnRfbmVlZGVkIGlzCglTVEFDS19CT1VOREFSWSBmb3IgZW1wdHkgZnJhbWVzIG5vdy4KCjIwMDAtMDMtMTQgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBzdG9yLWxheW91dC5jIChsYXlvdXRfdW5pb24pOiBSZW1vdmUuCgkobGF5b3V0X3VuaW9uX2ZpZWxkKTogTmV3IGZ1bmN0aW9uLCBzcGxpdCBvdXQgZnJvbSBsYXlvdXRfdW5pb24uCgkoZmluaXNoX3VuaW9uX2xheW91dCk6IExpa2V3aXNlLgoJKGxheW91dF9maWVsZCk6IEhhbmRsZSB1bmlvbnMgYnkgY2FsbGluZyBsYXlvdXRfdW5pb25fZmllbGQuCgkoZmluaXNoX3JlY29yZF9sYXlvdXQpOiBIYW5kbGUgdW5pb25zLgoJKGxheW91dF90eXBlKTogQ29tYmluZSBSRUNPUkRfVFlQRSwgVU5JT05fVFlQRSwgYW5kCglRVUFMX1VOSU9OX1RZUEUgaGFuZGxpbmcuCgpXZWQgRmViIDIzIDEzOjAwOjA2IENFVCAyMDAwICBKYW4gSHViaWNrYSAgPGpoQHN1c2UuY3o+CgoJKiBmbG93LmMgKGZpeHVwX3Jlb3JkZXJfY2hhaW4pOiBBdm9pZCBkb3VibGUgbGFiZWxzIGluIHRoZSBiYXNpYyBibG9jazsKCWVuZCBvZiBiYXNpYyBibG9jayBpcyBqdW1wX2luc24sIG5vdCBiYXJyaWVyOyB1c2UgY3JlYXRlX2Jhc2ljX2Jsb2NrCglpbnN0ZWFkIG9mIGNyZWF0aW5nIGJhc2ljIGJsb2NrIGJ5IGhhbmQuCgoyMDAwLTAzLTE0ICBKYXNvbiBFY2toYXJkdCAgPGpsZUBjeWdudXMuY29tPgoKCSogZmxvdy5jIChyZW9yZGVyX2Jhc2ljX2Jsb2Nrcyk6IEFjY291bnQgZm9yIGJhcnJpZXJzIHdoZW4gd3JpdGluZwoJb3ZlciBORVhUX0lOU04gKGxhc3RfYmItPmVuZCkuCgkodmVyaWZ5X2Zsb3dfaW5mbyk6IEFkZCBjaGVjayBmb3IgbWlzc2luZyBiYXJyaWVycy4KCjIwMDAtMDMtMTQgIEdyZWcgTWNHYXJ5ICA8Z2ttQGdudS5vcmc+CgoJKiBjLWxleC5oIChlbnVtIHJpZCk6IEFkZCBSSURfQk9VTkRFRCAmIFJJRF9VTkJPVU5ERUQuCgkqIGMtbGV4LmMgKGluaXRfbGV4KTogSGFuZGxlIFJJRF9CT1VOREVEICYgUklEX1VOQk9VTkRFRC4KCSogYy1wYXJzZS5ncGVyZiAoX19ib3VuZGVkLCBfX2JvdW5kZWRfXywgX19wdHJiYXNlLCBfX3B0cmJhc2VfXywKCV9fcHRyZXh0ZW50LCBfX3B0cmV4dGVudF9fLCBfX3B0cnZhbHVlLCBfX3B0cnZhbHVlX18sCglfX3VuYm91bmRlZCwgX191bmJvdW5kZWRfXyk6IE5ldyBrZXl3b3Jkcy4KCSogYy1wYXJzZS5pbiAoUFRSX1ZBTFVFIFBUUl9CQVNFIFBUUl9FWFRFTlQpOiBOZXcgdG9rZW5zLgoJKiBjLXBhcnNlLnksIGMtcGFyc2UuYywgYy1wYXJzZS5oOiBSZWdlbmVyYXRlLgoJKiBvYmpjL29iamMtcGFyc2UueSwgb2JqYy9vYmpjLXBhcnNlLmM6IFJlZ2VuZXJhdGUuCgoyMDAwLTAzLTE0ICBCZXJuZCBTY2htaWR0ICA8YmVybmRzQGN5Z251cy5jby51az4KCgkqIGNzZWxpYi5oOiBOZXcgZmlsZS4KCSogYWxpYXMuYzogSW5jbHVkZSAiY3NlbGliLmgiLgoJKGZpeGVkX3NjYWxhcl9hbmRfdmFyeWluZ19zdHJ1Y3RfcCk6IEFjY2VwdCB0aGUgYWRkcmVzc2VzIG9mIHRoZQoJTUVNcyBhcyB0d28gbmV3IGFyZ3VtZW50cy4KCShnZXRfYWRkcik6IE5ldyBzdGF0aWMgZnVuY3Rpb24uCgkoZmluZF9iYXNlX3Rlcm0pOiBIYW5kbGUgVkFMVUVzLgoJKG1lbXJlZnNfY29uZmxpY3RfcCk6IExpa2V3aXNlLgoJKHRydWVfZGVwZW5kZW5jZSk6IENhbGwgZ2V0X2FkZHIgb24gdGhlIGFkZHJlc3Nlcy4KCUNhbGwgZml4ZWRfc2NhbGFyX2FuZF92YXJ5aW5nX3N0cnVjdF9wIHdpdGggYWRkcmVzc2VzIHRoYXQgaGF2ZSBiZWVuCglwYXNzZWQgdGhyb3VnaCBnZXRfYWRkciBhbmQgY2Fub25fcnR4LgoJKHdyaXRlX2RlcGVuZGVuY2VfcCk6IE1vdmUgRElGRkVSRU5UX0FMSUFTX1NFVFNfUCB0ZXN0IGZvciBjb25zaXN0ZW5jeQoJd2l0aCB0cnVlX2RlcGVuZGVuY2UuCglDYWxsIGdldF9hZGRyIG9uIHRoZSBhZGRyZXNzZXM7IGRvbid0IGNhbGwgY2Fub25fcnR4IG9uIHRoZSBNRU1zLgoJKiBsb29wLmM6IEluY2x1ZGUgImNzZWxpYi5oIi4KCShsb2FkX21lbXMpOiBQcm9jZXNzIGV4dGVuZGVkIGJhc2ljIGJsb2NrIHRoYXQgZW50ZXJzIHRoZSBsb29wIHdpdGgKCWNzZWxpYi4gIFVzZSB0aGF0IGluZm9ybWF0aW9uIHRvIGNoYW5nZSBpbml0aWFsaXphdGlvbiBvZiB0aGUgc2hhZG93CglyZWdpc3RlciBzbyB0aGF0IGEgY29uc3RhbnQgZXF1aXZhbGVuY2UgaXMgc2VlbiBieSBsYXRlciBwYXNzZXMuCgkqIHJlbG9hZDEuYzogSW5jbHVkZSAiY3NlbGliLmgiLgoJKHJlbG9hZF9jc2VfaW52YWxpZGF0ZV9yZWdubyk6IERlbGV0ZSBmdW5jdGlvbi4KCShyZWxvYWRfY3NlX21lbV9jb25mbGljdF9wKTogTGlrZXdpc2UuCgkocmVsb2FkX2NzZV9pbnZhbGlkYXRlX21lbSk6IExpa2V3aXNlLgoJKHJlbG9hZF9jc2VfaW52YWxpZGF0ZV9ydHgpOiBMaWtld2lzZS4KCShyZWxvYWRfY3NlX3JlZ25vX2VxdWFsX3ApOiBMaWtld2lzZS4KCShyZWxvYWRfY3NlX2NoZWNrX2Nsb2JiZXIpOiBMaWtld2lzZS4KCShyZWxvYWRfY3NlX3JlY29yZF9zZXQpOiBMaWtld2lzZS4KCShyZWdfdmFsdWVzKTogRGVsZXRlIHN0YXRpYyB2YXJpYWJsZS4KCShpbnZhbGlkYXRlX3JlZ25vX3J0eCk6IExpa2V3aXNlLgoJKHJlbG9hZF9jc2VfZGVsZXRlX25vb3Bfc2V0KTogTmV3IHN0YXRpYyBmdW5jdGlvbi4KCShyZWxvYWRfY3NlX3NpbXBsaWZ5KTogTmV3IHN0YXRpYyBmdW5jdGlvbiwgYnJva2VuIG91dCBvZgoJcmVsb2FkX2NzZV9yZWdzXzEuCgkocmVsb2FkX2NzZV9ub29wX3NldF9wKTogRGVsZXRlIHVudXNlZCBhcmd1bWVudCBJTlNOLgoJSnVzdCBjYWxsIHJ0eF9lcXVhbF9mb3JfY3NlbGliX3Agb24gc2V0IHNvdXJjZSBhbmQgZGVzdGluYXRpb24uCgkocmVsb2FkX2NzZV9yZWdzXzEpOiBCcmVhayBvdXQgc29tZSBjb2RlIGludG8gcmVsb2FkX2NzZV9zaW1wbGlmeSBhbmQKCXJlbG9hZF9jc2VfZGVsZXRlX25vb3Bfc2V0LiAgRGVsZXRlIGNvZGUgdG8ga2VlcCB0cmFjayBvZiB2YWx1ZXM7IHVzZQoJY3NlbGliIGZ1bmN0aW9ucyBpbnN0ZWFkLiAgRGVsZXRlIGNvZGUgdG8gcHVzaC9wb3Agb2JzdGFja3MuCgkocmVsb2FkX2NzZV9zaW1wbGlmeV9zZXQpOiBVc2UgY3NlbGliIHRvIGZpbmQgZXF1aXZhbGVudCB2YWx1ZXMuCglEZWxldGUgY29kZSB0byBwdXNoL3BvcCBvYnN0YWNrcy4KCShyZWxvYWRfY3NlX3NpbXBsaWZ5X29wZXJhbmRzKTogTGlrZXdpc2UuCgkqIHJ0bC5kZWYgKFZBTFVFKTogTmV3IHJ0eCBjb2RlLgoJKiBydGwuaCAodW5pb24gcnR1bmlvbl9kZWYpOiBOZXcgZWx0IHJ0X2NzZWxpYi4KCShYMENTRUxJQiwgQ1NFTElCX1ZBTF9QVFIpOiBOZXcgbWFjcm9zLgoJKiBzaW1wbGlmeV9ydHguYzogSW5jbHVkZSAiZ2djLmgiLCAib2JzdGFjay5oIiwgImNzZWxpYi5oIi4KCShuZXdfZWx0X2xpc3QsIG5ld19lbHRfbG9jX2xpc3QsIHVuY2hhaW5fb25lX3ZhbHVlLCBjbGVhcl90YWJsZSwKCXVuY2hhaW5fb25lX2VsdF9saXN0LCB1bmNoYWluX29uZV9lbHRfbG9jX2xpc3QsIGNoZWNrX3VzZWxlc3NfdmFsdWVzLAoJZGlzY2FyZF91c2VsZXNzX2xvY3MsIGRpc2NhcmRfdXNlbGVzc192YWx1ZXMsIGVudHJ5X2FuZF9ydHhfZXF1YWxfcCwKCWhhc2hfcnR4LCBuZXdfY3NlbGliX3ZhbCwgYWRkX21lbV9mb3JfYWRkciwgZ2V0X3ZhbHVlX2hhc2gsCgljc2VsaWJfbG9va3VwX21lbSwgY3NlbGliX3N1YnN0X3RvX3ZhbHVlcywgY3NlbGliX2ludmFsaWRhdGVfcmVnbm8sCgljc2VsaWJfbWVtX2NvbmZsaWN0X3AsIGNzZWxpYl9pbnZhbGlkYXRlX21lbSwgY3NlbGliX2ludmFsaWRhdGVfcnR4LAoJY3NlbGliX3JlY29yZF9zZXQsIGNzZWxpYl9yZWNvcmRfc2V0cyk6IE5ldyBzdGF0aWMgZnVuY3Rpb25zLgoJKGNzZWxpYl9sb29rdXAsIGNzZWxpYl91cGRhdGVfdmFycmF5X3NpemVzLCBjc2VsaWJfaW5pdCwKCWNzZWxpYl9maW5pc2gsIGNzZWxpYl9wcm9jZXNzX2luc24sIHJ0eF9lcXVhbF9mb3JfY3NlbGliX3AsCglyZWZlcmVuY2VzX3ZhbHVlX3ApOiBOZXcgZnVuY3Rpb25zLgoJKE1BWF9VU0VMRVNTX1ZBTFVFUywgUkVHX1ZBTFVFUyk6IE5ldyBtYWNyb3MuCgkodGFibGUsIGNzZWxpYl9jdXJyZW50X2luc24sIG5leHRfdW5rbm93bl92YWx1ZSwgY3NlbGliX25yZWdzLAoJbl91c2VsZXNzX3ZhbHVlcywgcmVnX3ZhbHVlcywgY2FsbG1lbSwgY3NlbGliX29ic3RhY2ssCgljc2VsaWJfc3RhcnRvYmosIGVtcHR5X3ZhbHMsIGVtcHR5X2VsdF9saXN0cywgZW1wdHlfZWx0X2xvY19saXN0cyk6CglOZXcgc3RhdGljIHZhcmlhYmxlcy4KCSogdmFycmF5LmggKHVuaW9uIHZhcnJheV9kYXRhX3RhZyk6IE5ldyBlbHQgdGUuCgkoVkFSUkFZX0VMVF9MSVNUX0lOSVQsIFZBUlJBWV9FTFRfTElTVCk6IE5ldyBtYWNyb3MuCgkqIE1ha2VmaWxlLmluIChyZWxvYWQxLm8sIGxvb3Aubywgc2ltcGxpZnktcnR4Lm8sIGFsaWFzLm8pOiBVcGRhdGUKCWRlcGVuZGVuY2llcy4KCjIwMDAtMDMtMTQgIE5pY2sgQ2xpZnRvbiAgPG5pY2tjQGN5Z251cy5jb20+CgoJKiBnY2MuYyAoZG9fc3BlY18xKTogQ2F0Y2ggdGhlIGNhc2Ugd2hlcmUgJSogaXMgdXNlZCBpbiBhCglzdWJzdGl0dXRpb24gcGF0dGVybiwgYnV0IGl0IGhhcyBub3QgYmVlbiBpbml0aWFsaXplZC4KCUlzc3VlIGEgbWVhbmluZ2Z1bCBlcnJvciBtZXNzYWdlIGlmIGFuIHVucmVjb2duaXplZCBvcGVyYXRvcgoJaXMgZW5jb3VudGVyZWQgaW4gYSBzcGVjIHN0cmluZy4KCjIwMDAtMDMtMTQgIFJpY2hhcmQgRWFybnNoYXcgPHJlYXJuc2hhQGFybS5jb20+CgoJKiBmdW5jdGlvbi5jIChwcmVwYXJlX2Z1bmN0aW9uX3N0YXJ0KTogQ29ycmVjdGx5IGluaXRpYWxpemUKCWNmdW4tPnN0YWNrX2FsaWdubWVudF9uZWVkZWQuCgoyMDAwLTAzLTE0ICBaYWNrIFdlaW5iZXJnICA8emFja0B3b2xlcnkuY3VtYi5vcmc+CgoJKiBjcHBmaWxlcy5jIChmaW5kX2luY2x1ZGVfZmlsZSk6IERvbid0IGFzc3VtZSBuc2hvcnQgaXMgYQoJc3Vic3RyaW5nIG9mIG5hbWUuCgpUdWUgTWFyIDE0IDA4OjQyOjIxIDIwMDAgIEplZmZyZXkgQSBMYXcgIChsYXdAY3lnbnVzLmNvbSkKCgkqIGNvbmZpZ3VyZS5pbiAoaHBwYSBjb25maWd1cmF0aW9ucyk6IEFkZCBwYTMyLXJlZ3MuaCB0byB0aGUKCWxpc3Qgb2YgdG0gZmlsZXMgYXMgYXBwcm9wcmlhdGUuCgkqIGNvbmZpZ3VyZTogUmVidWlsdC4KCSogcGEuYyAoY29tcHV0ZV9mcmFtZV9zaXplKTogUmVtb3ZlIGV4cGxpY2l0IGtub3dsZWRnZSBhYm91dCBGUAoJcmVnaXN0ZXIgbnVtYmVyaW5nLgoJKGhwcGFfZXhwYW5kX3Byb2xvZ3VlLCBocHBhX2V4cGFuZF9lcGlsb2d1ZSk6IExpa2V3aXNlLgoJKGZtcHlhZGRvcGVyYW5kcywgZm1weXN1Ym9wZXJhbmRzKTogTGlrZXdpc2UuCgkqIHBhLmg6IFJlbW92ZSB2YXJpb3VzIGRlZmluaXRpb25zIHdoaWNoIGRlcGVuZCBvbiBrbm93aW5nCglob3cgcmVnaXN0ZXJzIGFyZSBudW1iZXJlZC4KCSogcGEzMi1yZWdzLmg6IE5ldyBmaWxlIHdpdGggUEEzMiByZWdpc3RlciBudW1iZXJpbmcgc3BlY2lmaWMKCWRlZmluaXRpb25zLgoKMjAwMC0wMy0xNCAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAY3lnbnVzLmNvbT4KCgkqIHJlZ21vdmUuYyAoY29tYmluZV9zdGFja19hZGp1c3RtZW50cyk6IE5ldy4KCShzdGFja19tZW1yZWZfcCwgc2luZ2xlX3NldF9mb3JfY3NhKTogTmV3LgoJKGZyZWVfY3NhX21lbWxpc3QsIHJlY29yZF9vbmVfc3RhY2tfbWVtcmVmKTogTmV3LgoJKHRyeV9hcHBseV9zdGFja19hZGp1c3RtZW50KTogTmV3LgoJKGNvbWJpbmVfc3RhY2tfYWRqdXN0bWVudHNfZm9yX2Jsb2NrKTogTmV3LgoJKiBydGwuaCAoY29tYmluZV9zdGFja19hZGp1c3RtZW50cyk6IERlY2xhcmUuCgkqIHRvcGxldi5jIChyZXN0X29mX2NvbXBpbGF0aW9uKTogQ2FsbCBpdC4KCgkqIGkzODYubWQ6IFJldmVydCAyMDAwLTAxLTE2IGNoYW5nZS4KCjIwMDAtMDMtMTQgIE1hcnRpbiB2LiBM9ndpcyAgPGxvZXdpc0BpbmZvcm1hdGlrLmh1LWJlcmxpbi5kZT4KCgkqIGdjY2J1Zy5pbjogQWRkIHdlYiBjYXRlZ29yeSwgZ2NjIHNwZWNpZmljIGNsYXNzZXMuCgoyMDAwLTAzLTE0ICBOYXRoYW4gU2lkd2VsbCAgPG5hdGhhbkBjb2Rlc291cmNlcnkuY29tPgoKCSogc3Rvci1sYXlvdXQuYyAoZmluYWxpemVfcmVjb3JkX3NpemUpOiBGaXggdHlwby4KCjIwMDAtMDMtMTQgIFN0YW4gU2hlYnMgIDxzaGVic0BhcHBsZS5jb20+CgoJKiBjLXR5cGVjay5jIChjX2FsaWdub2YpOiBFcnJvciBvbiBpbmNvbXBsZXRlIHR5cGVzLgoJKiBleHRlbmQudGV4aSAoQWxpZ25tZW50KTogRG9jdW1lbnQgdGhpcy4KCjIwMDAtMDMtMTMgIFphY2sgV2VpbmJlcmcgIDx6YWNrQHdvbGVyeS5jdW1iLm9yZz4KCgkqIGNwcGZpbGVzLmM6IEluY2x1ZGUgbWtkZXBzLmguCgkoZmluZF9pbmNsdWRlX2ZpbGUsIHJlYWRfaW5jbHVkZV9maWxlKTogUmVtb3ZlIF9jcHBfIHByZWZpeAoJZnJvbSBuYW1lLCBtYWtlIHN0YXRpYy4KCShfY3BwX2V4ZWN1dGVfaW5jbHVkZSk6IE5ldyBmdW5jdGlvbiwgYnJva2VuIG91dCBvZgoJZG9faW5jbHVkZS4KCgkqIGNwcGxpYi5jOiBEb24ndCBpbmNsdWRlIG1rZGVwcy5oLgoJKHN0cnVjdCBkaXJlY3RpdmUpOiBSZW1vdmUgdHlwZSBmaWVsZC4gUmVvcmRlciBlbnRyaWVzLiAgVGhlCglmdW5jdGlvbiB0YWtlcyBvbmx5IG9uZSBhcmd1bWVudC4KCShzdHJ1Y3QgaWZfc3RhY2spOiBNYWtlIHR5cGUgZmllbGQgYW4gaW50LgoJKGRpcmVjdGl2ZV90YWJsZSk6IFJlbmFtZSB0byBkdGFibGUuICBHZW5lcmF0ZSBpdCwgdGhlCglwcm90b3R5cGVzIG9mIHRoZSBkaXJlY3RpdmUgaGFuZGxlcnMsIGFuZCB0aGUgZW51bSBmb3IgdGhlCglkaXJlY3RpdmUgbnVtYmVycywgZnJvbSBhIHRlbXBsYXRlIG1hY3JvLgoJKGRvX2lmbmRlZiwgZG9faW5jbHVkZV9uZXh0LCBkb19pbXBvcnQpOiBOZXcgZnVuY3Rpb25zLgoJKGRvX2RlZmluZSwgZG9faW5jbHVkZSwgZG9fZW5kaWYsIGRvX2lmZGVmLCBkb19pZiwgZG9fZWxzZSwKCWRvX3VuZGVmLCBkb19saW5lLCBkb19lbGlmLCBkb19lcnJvciwgZG9fcHJhZ21hLCBkb193YXJuaW5nLAoJZG9faWRlbnQsIGRvX2Fzc2VydCwgZG9fdW5hc3NlcnQsIGRvX3NjY3MpOiBUYWtlIG9ubHkgb25lCglhcmd1bWVudC4KCShkb19zY2NzKTogRGVmaW5lIGFsd2F5cywgYnV0IGFsdGVyIGJlaGF2aW9yIGJhc2VkIG9uCglTQ0NTX0RJUkVDVElWRS4KCShfY3BwX2hhbmRsZV9kaXJlY3RpdmUsIGNvbnNpZGVyX2RpcmVjdGl2ZV93aGlsZV9za2lwcGluZyk6CglSZXN0cnVjdHVyZSBmb3IgbmV3IGRpcmVjdGl2ZSB0YWJsZSBsYXlvdXQuCgoJKHBhc3NfdGhydV9kaXJlY3RpdmUpOiBUYWtlIGEgZGlyZWN0aXZlIG51bWJlciwgbm90IGEgcG9pbnRlcgoJdG8gYSBzdHJ1Y3QgZGlyZWN0aXZlLgoJKHBhcnNlX2luY2x1ZGUpOiBOZXcgZnVuY3Rpb24sIGJyb2tlbiBvdXQgb2YgZG9faW5jbHVkZS4KCShkb19pbmNsdWRlLCBkb19pbXBvcnQsIGRvX2luY2x1ZGVfbmV4dCk6IFVzZSBwYXJzZV9pbmNsdWRlCglhbmQgX2NwcF9leGVjdXRlX2luY2x1ZGUuCgkoZG9fZWxpZiwgZG9fZWxzZSk6IFRlc3QgZm9yIFRfRUxTRSBzcGVjaWZpY2FsbHkgd2hlbiBjaGVja2luZwoJZm9yICNlbGlmLyNlbHNlIGFmdGVyICNlbHNlLgoJKHBhcnNlX2lmZGVmKTogTmV3IGZ1bmN0aW9uLCBicm9rZW4gb3V0IG9mIGRvX2lmZGVmLgoJKHZhbGlkYXRlX2Vsc2UpOiBFeHBlY3QgYSBuYW1lIGFyZyB3aXRob3V0IGEgbGVhZGluZyAjLgoJKGlmX2RpcmVjdGl2ZV9uYW1lKTogRGVsZXRlLgoJKGNwcF9kZWZpbmUsIGNwcF9hc3NlcnQsIGNwcF91bmRlZiwgY3BwX3VuYXNzZXJ0KTogQ2FsbAoJZGlyZWN0aXZlIGhhbmRsZXJzIHdpdGggb25seSBvbmUgYXJndW1lbnQuCgoJKiBjcHBoYXNoLmg6IFVwZGF0ZSBwcm90b3R5cGVzLgoJKGVudW0gbm9kZV90eXBlKTogUmVtb3ZlIGVudHJpZXMgZm9yIGRpcmVjdGl2ZXMuCgkqIE1ha2VmaWxlLmluOiBVcGRhdGUgZGVwZW5kZW5jaWVzLgoKCSogY3BwaGFzaC5jIChkdW1wX2hhc2hfaGVscGVyKTogT25seSBkdW1wIG5vZGVzIG9mIHR5cGUKCVRfTUFDUk8uICBFbWl0IGEgbmV3bGluZSBhZnRlciBlYWNoIGRlZmluaXRpb24uCgoyMDAwLTAzLTE0ICBNYXJ0aW4gdi4gTPZ3aXMgIDxsb2V3aXNAaW5mb3JtYXRpay5odS1iZXJsaW4uZGU+CgoJKiBnY2NidWcuaW46IE5ldyBmaWxlLgoJKiBjb25maWd1cmUuaW4gKGFsbF9vdXRwdXRzKTogQWRkIGdjY2J1Zy4KCSogTWFrZWZpbGUuaW4gKGluc3RhbGwtY29tbW9uKTogSW5zdGFsbCBnY2NidWcuCgkoR0NDQlVHX0lOU1RBTExfTkFNRSk6IE5ldyB2YXJpYWJsZS4KCSogY29uZmlndXJlOiBSZWJ1aWx0LgoKMjAwMC0wMy0xMyAgSmFzb24gTWVycmlsbCAgPGphc29uQGNhc2V5LmN5Z251cy5jb20+CgoJKiBmdW5jdGlvbi5jIChwdXRfdmFyX2ludG9fc3RhY2spOiBVc2UgdHlwZV9mb3JfbW9kZSB0byBjYWxjdWxhdGUKCXBhcnRfdHlwZS4gIFVzZSBNRU1fU0VUX0lOX1NUUlVDVF9QLgoJKiBleHByLmMgKHN0b3JlX2ZpZWxkKTogSGFuZGxlIENPTkNBVC4KCShzdG9yZV9jb25zdHJ1Y3Rvcik6IFVzZSBmaWVsZHNfbGVuZ3RoLgoJKiB0cmVlLmMgKGZpZWxkc19sZW5ndGgpOiBOZXcgZm4uCgkqIHRyZWUuaDogRGVjbGFyZSBpdC4KCjIwMDAtMDMtMTMgIFphY2sgV2VpbmJlcmcgIDx6YWNrQHdvbGVyeS5jdW1iLm9yZz4KCgkqIE1ha2VmaWxlLmluIChMSUJDUFBfT0JKUyk6IEFkZCBjcHBsZXguby4KCShjcHBsZXgubyk6IE5ldyB0YXJnZXQuCgkqIHBvL1BPVEZJTEVTLmluOiBBZGQgY3BwbGV4LmMuCgoJKiBjcHBsZXguYyAoX2NwcF9ncm93X3Rva2VuX2J1ZmZlciwgbnVsbF9jbGVhbnVwLAoJY3BwX3B1c2hfYnVmZmVyLCBjcHBfcG9wX2J1ZmZlciwgY3BwX3NjYW5fYnVmZmVyLAoJY3BwX2V4cGFuZF90b19idWZmZXIsIGNwcF9idWZfbGluZV9hbmRfY29sLCBjcHBfZmlsZV9idWZmZXIsCglza2lwX2Jsb2NrX2NvbW1lbnQsIHNraXBfbGluZV9jb21tZW50LCBza2lwX2NvbW1lbnQsCgljb3B5X2NvbW1lbnQsIF9jcHBfc2tpcF9oc3BhY2UsIF9jcHBfc2tpcF9yZXN0X29mX2xpbmUsCglfY3BwX3BhcnNlX25hbWUsIHNraXBfc3RyaW5nLCBwYXJzZV9zdHJpbmcsCglfY3BwX3BhcnNlX2Fzc2VydGlvbiwgY3BwX2dldF90b2tlbiwgY3BwX2dldF9ub25fc3BhY2VfdG9rZW4sCglfY3BwX2dldF9kaXJlY3RpdmVfdG9rZW4sIGZpbmRfcG9zaXRpb24sCglfY3BwX3JlYWRfYW5kX3ByZXNjYW4sIF9jcHBfaW5pdF9pbnB1dF9idWZmZXIpOiBNb3ZlIGhlcmUuCgkobWF5YmVfbWFjcm9leHBhbmQsIF9jcHBfbGV4X3Rva2VuKTogTmV3IGZ1bmN0aW9ucy4KCgkqIGNwcGxpYi5jIChTS0lQX1dISVRFX1NQQUNFLCBldmFsX2lmX2V4cHIsIHBhcnNlX3NldF9tYXJrLAoJcGFyc2VfZ290b19tYXJrKTogRGVsZXRlLgoJKF9jcHBfaGFuZGxlX2VvZik6IE5ldyBmdW5jdGlvbi4KCShfY3BwX2hhbmRsZV9kaXJlY3RpdmUpOiBSZW5hbWUgZnJvbSBoYW5kbGVfZGlyZWN0aXZlLgoJKF9jcHBfb3V0cHV0X2xpbmVfY29tbWFuZCk6IFJlbmFtZSBmcm9tIG91dHB1dF9saW5lX2NvbW1hbmQuCgkoZG9faWYsIGRvX2VsaWYpOiBDYWxsIF9jcHBfcGFyc2VfZXhwciBkaXJlY3RseS4KCSogY3BwZmlsZXMuYyAoX2NwcF9yZWFkX2luY2x1ZGVfZmlsZSk6IERvbid0IGNhbGwKCWluaXRfaW5wdXRfYnVmZmVyIGhlcmUuCgkqIGNwcGhhc2guYyAocXVvdGVfc3RyaW5nKTogTW92ZSBoZXJlLCByZW5hbWUgX2NwcF9xdW90ZV9zdHJpbmcuCgkqIGNwcGV4cC5jIChfY3BwX3BhcnNlX2V4cHIpOiBEaWRkbGUgcGFyc2luZ19pZl9kaXJlY3RpdmUKCWhlcmU7IHBvcCB0aGUgdG9rZW5fYnVmZmVyIGFuZCBza2lwIHRoZSByZXN0IG9mIHRoZSBsaW5lIGhlcmUuCgkqIGNwcGluaXQuYyAoY3BwX3N0YXJ0X3JlYWQpOiBDYWxsIF9jcHBfaW5pdF9pbnB1dF9idWZmZXIKCWhlcmUuCgoJKiBjcHBoYXNoLmggKENQUF9SRVNFUlZFLCBDUFBfSVNfTUFDUk9fQlVGRkVSLCBBQ1RJVkVfTUFSS19QKToKCURlZmluZSBoZXJlLgoJKENQUF9TRVRfQlVGX01BUkssIENQUF9HT1RPX0JVRl9NQVJLLCBDUFBfU0VUX01BUkssCglDUFBfR09UT19NQVJLKTogTmV3IG1hY3Jvcy4KCShfY3BwX3F1b3RlX3N0cmluZywgX2NwcF9wYXJzZV9uYW1lLCBfY3BwX3NraXBfcmVzdF9vZl9saW5lLAoJX2NwcF9za2lwX2hzcGFjZSwgX2NwcF9wYXJzZV9hc3NlcnRpb24sIF9jcHBfbGV4X3Rva2VuLAoJX2NwcF9yZWFkX2FuZF9wcmVzY2FuLCBfY3BwX2luaXRfaW5wdXRfYnVmZmVyLAoJX2NwcF9ncm93X3Rva2VuX2J1ZmZlciwgX2NwcF9nZXRfZGlyZWN0aXZlX3Rva2VuLAoJX2NwcF9oYW5kbGVfZGlyZWN0aXZlLCBfY3BwX2hhbmRsZV9lb2YsCglfY3BwX291dHB1dF9saW5lX2NvbW1hbmQpOiBQcm90b3R5cGUgdGhlbSBoZXJlLgoJKiBjcHBsaWIuaCAoZW51bSBjcHBfdG9rZW4pOiBBZGQgQ1BQX01BQ1JPLgoJKENQUF9SRVNFUlZFLCBnZXRfZGlyZWN0aXZlX3Rva2VuLCBjcHBfZ3Jvd19idWZmZXIsCglxdW90ZV9zdHJpbmcsIG91dHB1dF9saW5lX2NvbW1hbmQpOiBSZW1vdmUuCgoyMDAwLTAzLTEzICBCZXJuZCBTY2htaWR0ICA8YmVybmRzQGN5Z251cy5jby51az4KCgkqIHN0bXQuYyAoZXhwYW5kX2VuZF9jYXNlKTogUkFOR0UgbWF5IGJlIHNpZ25lZCwgYW5kIHdoZW4gY2hlY2tpbmcKCXdoZXRoZXIgaXQgaXMgdG9vIGxhcmdlIHdlIG11c3QgYWxzbyB2ZXJpZnkgdGhhdCBpdCBpc24ndCBuZWdhdGl2ZS4KCjIwMDAtMDMtMTMgIEpha3ViIEplbGluZWsgIDxqYWt1YkByZWRoYXQuY29tPgoKCSogY29uZmlnL3NwYXJjL3NwYXJjLm1kOiBSZW1vdmUgYWxsIHRyYWNlcyBvZiBUQVJHRVRfTElWRV9HMC4KCShtb3ZzaV96ZXJvX2xpdmVnMCk6IFJlbW92ZS4KCShtb3ZzZl9pbnNuX25vdmlzX2xpdmVnMCk6IFJlbW92ZS4KCShuZWdzaTIpOiBSZW1vdmUuCgkobmVnc2kyX25vdF9saXZlZzApOiBSZW5hbWUgdG8gbmVnc2kyLgoJKG9uZV9jbXBsc2kyKTogUmVtb3ZlLgoJKG9uZV9jbXBsc2kyX25vdF9saXZlZzApOiBSZW5hbWUgdG8gb25lX2NtcGxzaTIuCgkob25lX2NtcGxzaTJfbGl2ZWcwKTogUmVtb3ZlLgoJKiBjb25maWcvc3BhcmMvc3BhcmMuaCAoVEFSR0VUX0xJVkVfRzAsIFRBUkdFVF9CUk9LRU5fU0FWRVJFU1RPUkUsCglNQVNLX0xJVkVfRzAsIE1BU0tfQlJPS0VOX1NBVkVSRVNUT1JFKTogUmVtb3ZlLgoJKENPTkRJVElPTkFMX1JFR0lTVEVSX1VTQUdFKTogUmVtb3ZlIFRBUkdFVF9MSVZFX0cwIGlmLgoJKFBSRURJQ0FURV9DT0RFUyk6IFJlbW92ZSB6ZXJvX29wZXJhbmQuCgkqIGNvbmZpZy9zcGFyYy9zcGFyYy5jOiBSZW1vdmUgYWxsIHRyYWNlcyBvZiBUQVJHRVRfTElWRV9HMCBhbmQKCVRBUkdFVF9CUk9LRU5fU0FWRVJFU1RPUkUuCgkoemVyb19vcGVyYW5kKTogUmVtb3ZlLgoJKiBjb25maWcvc3BhcmMvc3BsZXQuaCAoU1VCVEFSR0VUX1NXSVRDSEVTKTogUmVtb3ZlIC1tbGl2ZS1nMCwKCS1tbm8tbGl2ZS1nMCwgLW1icm9rZW4tc2F2ZXJlc3RvcmUgYW5kIC1tbm8tYnJva2VuLXNhdmVyZXN0b3JlCglvcHRpb25zLgoJKFNVQlRBUkdFVF9PVkVSUklERV9PUFRJT05TKTogUmVtb3ZlLgoJKiBjb25maWcvc3BhcmMvbGludXgtYW91dC5oIChUQVJHRVRfTElWRV9HMCwKCVRBUkdFVF9CUk9LRU5fU0FWRVJFU1RPUkUpOiBSZW1vdmUuCgkqIGNvbmZpZy9zcGFyYy9saW51eC5oIChUQVJHRVRfTElWRV9HMCwgVEFSR0VUX0JST0tFTl9TQVZFUkVTVE9SRSk6CglSZW1vdmUuCgkqIGNvbmZpZy9zcGFyYy9saW51eDY0LmggKFRBUkdFVF9MSVZFX0cwLCBUQVJHRVRfQlJPS0VOX1NBVkVSRVNUT1JFKToKCVJlbW92ZS4KCSogY29uZmlnL3NwYXJjL3NvbDIuaCAoVEFSR0VUX0xJVkVfRzAsIFRBUkdFVF9CUk9LRU5fU0FWRVJFU1RPUkUpOgoJUmVtb3ZlLgoKCSogY29uZmlnL3NwYXJjL3NwYXJjLm1kIChyZXR1cm5fZGZfbm9fZnB1KTogTmV3IHBhdHRlcm4uCgoyMDAwLTAzLTEzICBaYWNrIFdlaW5iZXJnICA8emFja0B3b2xlcnkuY3VtYi5vcmc+CgoJKiBjcHBsaWIuYyAoZG9fcHJhZ21hX2ltcGxlbWVudGF0aW9uKTogRml4IG9mZi1ieS1vbmUgZXJyb3IKCXRydW5jYXRpbmcgYSBzdHJpbmcuICBEb24ndCBhc3N1bWUgdG9rZW5zIGFyZSBudWwgdGVybWluYXRlZC4KCVByb2JsZW0gbm90ZWQgYnkgQW5kcmVhcyBKYWVnZXIgPGFqQHN1c2UuZGU+CgoyMDAwLTAzLTEzICBKYXNvbiBNZXJyaWxsICA8amFzb25AY2FzZXkuY3lnbnVzLmNvbT4KCgkqIGR3YXJmMm91dC5jIChhZGRfbmFtZV9hbmRfc3JjX2Nvb3Jkc19hdHRyaWJ1dGVzKTogT25seSBhZGQKCURXX0FUX01JUFNfbGlua2FnZV9uYW1lIGZvciBUUkVFX1BVQkxJQyBkZWNscy4KCShBU01fT1VUUFVUX0RXQVJGX0FERFJfQ09OU1QpOiBEb24ndCBvdXRwdXQgdHJhaWxpbmcgbmV3bGluZS4KCjIwMDAtMDMtMTMgIFJpY2hhcmQgRWFybnNoYXcgPHJlYXJuc2hhQGFybS5jb20+CgoJKiBzdG9yLWxheW91dC5jIChuZXdfcmVjb3JkX2xheW91dF9pbmZvKTogRml4IHR5cG8gaW5zaWRlIGlmZGVmCglTVFJVQ1RVUkVfU0laRV9CT1VOREFSWS4KCjIwMDAtMDMtMTMgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiB0cmVlLmggKHJlY29yZF9sYXlvdXRfaW5mb19zKTogTmV3IHN0cnVjdHVyZS4KCShyZWNvcmRfbGF5b3V0X2luZm8pOiBOZXcgdHlwZS4KCShuZXdfcmVjb3JkX2xheW91dF9pbmZvKTogTmV3IGZ1bmN0aW9uLgoJKGxheW91dF9maWVsZCk6IExpa2V3aXNlLgoJKGZpbmlzaF9yZWNvcmRfbGF5b3V0KTogTGlrZXdpc2UuCgkqIHN0b3ItbGF5b3V0LmMgKGxheW91dF9yZWNvcmQpOiBSZW1vdmUuCgkobmV3X3JlY29yZF9sYXlvdXRfaW5mbyk6IE5ldyBmdW5jdGlvbi4KCShsYXlvdXRfZmllbGQpOiBOZXcgZnVuY3Rpb24sIGJyb2tlbiBvdXQgZnJvbSBsYXlvdXRfcmVjb3JkLgoJKGZpbmFsaXplX3JlY29yZF9zaXplKTogTGlrZXdpc2UuCgkoY29tcHV0ZV9yZWNvcmRfbW9kZSk6IExpa2V3aXNlLgoJKGZpbmFsaXplX3R5cGVfc2l6ZSk6IE5ldyBmdW5jdGlvbiwgYnJva2VuIG91dCBmcm9tIGxheW91dF90eXBlLgoJKGZpbmlzaF9yZWNvcmRfbGF5b3V0KTogTGlrZXdpc2UuCgkobGF5b3V0X3R5cGUpOiBVc2UgdGhlbS4KCjIwMDAtMDMtMTIgIFphY2sgV2VpbmJlcmcgIDx6YWNrQHdvbGVyeS5jdW1iLm9yZz4KCgkqIGNwcGhhc2guYzogRG9uJ3QgaW5jbHVkZSB2ZXJzaW9uLmguCgkoc3BlY2lhbF9zeW1ib2wpIFtjYXNlIFRfVkVSU0lPTl06IExvb2sgZm9yIHRoZSBzdHJpbmcgaW4KCWhwLT52YWx1ZS5jcHZhbDsgZG9uJ3QgdXNlIHZlcnNpb25fc3RyaW5nLgoJKiBjcHBpbml0LmMgKGluaXRpYWxpemVfYnVpbHRpbnMpOiBTZXQgaHAtPnZhbHVlLmNwdmFsIGZvcgoJX19WRVJTSU9OX18gdG8gdmVyc2lvbl9zdHJpbmcuCgkqIE1ha2VmaWxlLmluIChjcHBoYXNoLm8pOiBVcGRhdGUgZGVwcy4KCjIwMDAtMDMtMTIgIFphY2sgV2VpbmJlcmcgIDx6YWNrQHdvbGVyeS5jdW1iLm9yZz4KCglDb252ZXJ0IGNwcGxpYiB0byB1c2UgbGliaWJlcnR5L2hhc2h0YWIuYy4KCgkqIGNwcGxpYi5oIChzdHJ1Y3QgY3BwX3JlYWRlcik6IE1ha2UgaGFzaHRhYiBhbmQKCWFsbF9pbmNsdWRlX2ZpbGVzIG9mIHR5cGUgJ3N0cnVjdCBodGFiIConLiAgRGVsZXRlIEhBU0hTSVpFCglhbmQgQUxMX0lOQ0xVREVfSEFTSFNJWkUgbWFjcm9zLgoKCSogY3BwaGFzaC5oOiBVcGRhdGUgcHJvdG90eXBlcy4KCShzdHJ1Y3QgaGFzaG5vZGUpOiBSZW1vdmUgbmV4dCwgcHJldiwgYW5kIGJ1Y2tldF9oZHIgbWVtYmVycy4KCU1ha2UgbGVuZ3RoIGEgc2l6ZV90LiAgQWRkIGhhc2ggbWVtYmVyLgoJKHN0cnVjdCBpaGFzaCk6IFJlbW92ZSBuZXh0IG1lbWJlci4gIEFkZCBoYXNoIG1lbWJlci4gIE1ha2UKCW5hbWUgYSBmbGV4aWJsZSBhcnJheSBtZW1iZXIuCgoJKiBjcHBmaWxlcy5jOiBJbmNsdWRlIGhhc2h0YWIuaC4KCShpbmNsdWRlX2hhc2gpOiBEZWxldGUuCgkoSUhBU0hTSVpFKTogTmV3IG1hY3JvLgoJKGhhc2hfSUhBU0gsIGVxX0lIQVNILCBfY3BwX2luaXRfaW5jbHVkZV9oYXNoKTogTmV3IGZ1bmN0aW9ucy4KCShjcHBfaW5jbHVkZWQpOiBEbyB0aGUgaGFzaCBsb29rdXAgaGVyZS4KCShfY3BwX2ZpbmRfaW5jbHVkZV9maWxlKTogUmV3cml0ZS4KCShjcHBfcmVhZF9maWxlKTogUHV0IHRoZSAiZmFrZSIgaGFzaCBlbnRyeSBpbnRvIHRoZSBoYXNoCgl0YWJsZS4gIEhvbm9yIHRoZSBjb250cm9sX21hY3JvLCBpZiBpdCB0dXJucyBvdXQgd2UndmUgc2VlbgoJdGhlIGZpbGUgYmVmb3JlLiAgRG9uJ3QgcHVzaCB0aGUgYnVmZmVyIGhlcmUuCgkoX2NwcF9yZWFkX2luY2x1ZGVfZmlsZSk6IFB1c2ggdGhlIGJ1ZmZlciBoZXJlLgoJKE9NT0RFUyk6IE5ldyBtYWNyby4gIFVzZSBpdCB3aGVuZXZlciB3ZSBjYWxsIG9wZW4oMikuCgoJKiBjcHBoYXNoLmM6IEluY2x1ZGUgaGFzaHRhYi5oLgoJKGhhc2hfSEFTSE5PREUsIGVxX0hBU0hOT0RFLCBkZWxfSEFTSE5PREUsIGR1bXBfaGFzaF9oZWxwZXIsCglfY3BwX2luaXRfbWFjcm9faGFzaCwgX2NwcF9kdW1wX21hY3JvX2hhc2gsIF9jcHBfbWFrZV9oYXNobm9kZSwKCV9jcHBfbG9va3VwX3Nsb3QpOiBOZXcgZnVuY3Rpb25zLgoJKEhBU0hTSVpFKTogbmV3IG1hY3JvLgoJKGhhc2hmLCBfY3BwX2luc3RhbGwsIF9jcHBfZGVsZXRlX21hY3JvKTogRGVsZXRlLgoJKF9jcHBfbG9va3VwKTogVXNlIGhhc2h0YWIuaCByb3V0aW5lcy4KCgkqIGNwcGluaXQuYzogSW5jbHVkZSBoYXNodGFiLmguCgkoY3BwX3JlYWRlcl9pbml0KTogQ2FsbCBfY3BwX2luaXRfbWFjcm9faGFzaCBhbmQKCV9jcHBfaW5pdF9pbmNsdWRlX2hhc2guICBEb24ndCBhbGxvY2F0ZSBoYXNodGFiIGRpcmVjdGx5LgoJKGNwcF9jbGVhbnVwKTogSnVzdCBjYWxsIGh0YWJfZGVsZXRlIG9uIHBmaWxlLT5oYXNodGFiIGFuZAoJcGZpbGUtPmFsbF9pbmNsdWRlX2ZpbGVzLgoJKGluaXRpYWxpemVfYnVpbHRpbnMpOiBVc2UgX2NwcF9tYWtlX2hhc2hub2RlIGFuZAoJaHRhYl9maW5kX3Nsb3QgdG8gYWRkIGhhc2ggZW50cmllcy4KCShjcHBfZmluaXNoKTogSnVzdCBjYWxsIF9jcHBfZHVtcF9tYWNyb19oYXNoLgoJKiBjcHBsaWIuYzogSW5jbHVkZSBoYXNodGFiLmguCgkoZG9fZGVmaW5lKTogVXNlIF9jcHBfbG9va3VwX3Nsb3QgYW5kIF9jcHBfbWFrZV9oYXNobm9kZSB0bwoJY3JlYXRlIGhhc2ggZW50cmllcy4KCShkb19wcmFnbWFfcG9pc29uLCBkb19hc3NlcnQpOiBMaWtld2lzZS4KCShkb19pbmNsdWRlKTogRG9uJ3QgcHVzaCB0aGUgYnVmZmVyIGhlcmUuICBEb24ndCBpbmNyZW1lbnQKCXN5c3RlbV9pbmNsdWRlX2RlcHRoIHVubGVzcyBfY3BwX3JlYWRfaW5jbHVkZV9maWxlIHN1Y2NlZWRzLgoJKGRvX3VuZGVmLCBkb191bmFzc2VydCk6IFVzZSBfY3BwX2xvb2t1cF9zbG90IGFuZCBodGFiX2NsZWFyX3Nsb3QKCW9yIGh0YWJfcmVtb3ZlX2VsdC4KCShkb19wcmFnbWFfaW1wbGVtZW50YXRpb24pOiBVc2UgYWxsb2NhIHRvIGNyZWF0ZSBjb3B5LgoKCSogTWFrZWZpbGUuaW46IFVwZGF0ZSBkZXBlbmRlbmNpZXMuCgoyMDAwLTAzLTEyICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBjcHBpbml0LmMgKGNsX2RpcmVjdGl2ZV9oYW5kbGVyKTogTW9yZSBLJlIgZml4aW5nLgoKU2F0IE1hciAxMSAyMzo1NDoyNiAyMDAwICBKaW0gV2lsc29uICA8d2lsc29uQGN5Z251cy5jb20+CgoJKiBjb25maWcvaWE2NC9pYTY0LmMgKGlhNjRfY29tcHV0ZV9mcmFtZV9zaXplKTogQWxpZ24gc2l6ZSB0bwoJU1RBQ0tfQk9VTkRBUlkuCgkqIGNvbmZpZy9pYTY0L2lhNjQuaCAoUkVHSVNURVJfTU9WRV9DT1NUKTogQWRkIG1pc3NpbmcgcGFyZW50aGVzZXMuCgoyMDAwLTAzLTExICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBjcHBpbml0LmMgKG5vX2FyZywgbm9fYXNzLCBub19kaXIsIG5vX2ZpbCwgbm9fbWFjLCBub19wdGgpOgoJQ2hhbmdlIGZyb20gY2hhcltdIHRvIG1hY3Jvcy4KCjIwMDAtMDMtMTIgIE5laWwgQm9vdGggIDxOZWlsQkBlYXJ0aGxpbmcubmV0PgoKCSogY3BwaW5pdC5jIChjcHBfc3RhcnRfcmVhZCk6IFVwZGF0ZSBpbmRpcmVjdCBmdW5jdGlvbgoJY2FsbCB0byBLJlIgQy4KClNhdCBNYXIgMTEgMTY6MTg6MTIgMjAwMCAgSmltIFdpbHNvbiAgPHdpbHNvbkBjeWdudXMuY29tPgoKCSogY29uZmlnL2lhNjQvaWE2NC5oIChBRERJVElPTkFMX1JFR0lTVEVSX05BTUVTKTogRml4IHR5cG8gaW4gbG9jNzkKCWVudHJ5LgoKCSogY29uZmlnL2lhNjQvaWE2NC1wcm90b3MuaCwgY29uZmlnL2lhNjQvaWE2NC5jLCBjb25maWcvaWE2NC9pYTY0LmgsCgljb25maWcvaWE2NC9pYTY0Lm1kLCBjb25maWcvaWE2NC94bS1pYTY0Lmg6IEZpeCBjb3B5cmlnaHQgbWVzc2FnZXMuCgoyMDAwLTAzLTExICBOZWlsIEJvb3RoICA8TmVpbEJAZWFydGhsaW5nLm5ldD4KCgkqIGNwcGluaXQuYyAoc3RydWN0IHBlbmRpbmcgb3B0aW9uKTogUmVwbGFjZSB1bmRlZiB3aXRoIGEKCXBvaW50ZXIgdG8gYSBkaXJlY3RpdmUgaGFuZGxpbmcgcm91dGluZS4KCShzdHJ1Y3QgY3BwX3BlbmRpbmcpOiBSZXBsYWNlIHNlcGFyYXRlIGFzc2VydF8gYW5kIGRlZmluZV8KCWxpc3RzIHdpdGggb25lIGRpcmVjdGl2ZV8gbGlzdC4KCShuZXdfcGVuZGluZ19kZWZpbmUpOiBSZW5hbWUgbmV3X3BlbmRpbmdfZGlyZWN0aXZlLiBFeHRyYQoJYXJndW1lbnQgaXMgdGhlIGRpcmVjdGl2ZSdzIGhhbmRsaW5nIHJvdXRpbmUuCgkoaGFuZGxlX29wdGlvbik6IFVwZGF0ZSB0byB1c2UgbmV3X3BlbmRpbmdfZGlyZWN0aXZlLgoKMjAwMC0wMy0xMSAgTmVpbCBCb290aCAgPE5laWxCQGVhcnRobGluZy5uZXQ+CgoJKiBjcHBmaWxlcy5jIChmaWxlX2NsZWFudXAsIF9jcHBfZmluZF9pbmNsdWRlX2ZpbGUsCglyZW1hcF9maWxlbmFtZSwgX2NwcF9yZWFkX2luY2x1ZGVfZmlsZSwgYWN0dWFsX2RpcmVjdG9yeSwKCWhhY2tfdm1zX2luY2x1ZGVfc3BlY2lmaWNhdGlvbik6IFJlcGxhY2UgYmNvcHkoKSwgaW5kZXgoKSBldGMKCWNhbGxzLiAgQWRkIGNhc3RzIHRvIHNvbWUgYWxsb2NhdGlvbnMuICBNYWtlIHNvbWUgdmFyaWFibGVzCglwb2ludGVycyB0byBjb25zdCBbdW5zaWduZWRdIGNoYXIuCgkqIGNwcGhhc2guYyAoX2NwcF9pbnN0YWxsLCBtYWNyb19jbGVhbnVwLCBjb2xsZWN0X2V4cGFuc2lvbiwKCWNvbGxlY3RfZm9ybWFsX3BhcmFtZXRlcnMpOiBTaW1pbGFybHkuCgkqIGNwcGluaXQuYyAoc3RydWN0IHBlbmRpbmdfb3B0aW9uLCBhcHBlbmRfaW5jbHVkZV9jaGFpbiwKCWNwcF9vcHRpb25zX2luaXQsIGNwcF9yZWFkZXJfaW5pdCwgaW5pdGlhbGl6ZV9zdGFuZGFyZF9pbmNsdWRlcywKCWNwcF9zdGFydF9yZWFkLCBuZXdfcGVuZGluZ19kZWZpbmUsIGhhbmRsZV9vcHRpb24pOiBTaW1pbGFybHkuCgkqIGNwcGxpYi5jIChjcHBfZGVmaW5lLCBjb3B5X2NvbW1lbnQsIGRvX2RlZmluZSwgZG9faW5jbHVkZSwKCWRvX3VuZGVmLCBkb19lcnJvciwgZG9fd2FybmluZywgZG9fcHJhZ21hLCBkb19wcmFnbWFfb25jZSwKCWRvX3ByYWdtYV9pbXBsZW1lbnRhdGlvbiwgZGV0ZWN0X2lmX25vdF9kZWZpbmVkLAoJZG9faWZkZWYsIHNraXBfaWZfZ3JvdXAsIGNwcF9nZXRfdG9rZW4sIHBhcnNlX3N0cmluZywKCWRvX2Fzc2VydCwgZG9fdW5hc3NlcnQpOiBTaW1pbGFybHkuCgkqIGNwcGxpYi5oIChjcHBfYnVmZmVyLCBjcHBfb3B0aW9ucyk6IFVwZGF0ZSB0eXBlcy4gIFVwZGF0ZQoJZnVuY3Rpb24gcHJvdG90eXBlcy4KCSogbWtkZXBzLmMgKGRlcHNfYWRkX3RhcmdldCwgZGVwc19hZGRfZGVwKTogY2FzdCBhbGxvY2F0aW9ucy4KCjIwMDAtMDMtMTAgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgoJKiBidWlsdGlucy5jIChleHBhbmRfYnVpbHRpbl9zdHJsZW4pOiBSZXZlcnQgbGFzdCBjaGFuZ2UuCglVc2UgZW1pdF9pbnNuX2JlZm9yZSBpZiB3ZSdyZSBhdCB0aGUgYmVnaW5uaW5nIG9mIGEgc2VxdWVuY2UuCgoyMDAwLTAzLTEwICBKYXNvbiBNZXJyaWxsICA8amFzb25AY2FzZXkuY3lnbnVzLmNvbT4KCgkqIGJ1aWx0aW5zLmMgKGV4cGFuZF9idWlsdGluX3N0cmxlbik6IE1ha2Ugc3VyZSB0aGF0IHdlIGhhdmUgc29tZXRoaW5nCglhdCB0aGUgYmVnaW5uaW5nIG9mIHRoZSBzZXF1ZW5jZS4KCgkqIHRvcGxldi5jIChyZXN0X29mX2NvbXBpbGF0aW9uKTogQWxzbyBzZXQgVFJFRV9OT1RIUk9XIGZvcgoJZGVmZXJyZWQgaW5saW5lcy4KCgkqIGludm9rZS50ZXhpIChDKysgRGlhbGVjdCBPcHRpb25zKTogRG9jdW1lbnQgLWZuby1lbmZvcmNlLWVoLXNwZWNzLgoKMjAwMC0wMy0xMCAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAY3lnbnVzLmNvbT4KCgkqIGV4Y2VwdC5jIChjYW5fdGhyb3cpOiBVc2UgSU5UVkFMIG9uIGEgQ09OU1RfSU5ULgoJKHJlYWNoYWJsZV9oYW5kbGVycyk6IExpa2V3aXNlLgoJKiBmbG93LmMgKGNvdW50X2Jhc2ljX2Jsb2NrcywgZmluZF9iYXNpY19ibG9ja3NfMSk6IExpa2V3aXNlLgoKMjAwMC0wMy0xMCAgQW5kcmVhcyBKYWVnZXIgIDxhakBzdXNlLmRlPgoKCSogY29uZmlnL21pcHMvbGludXguaDogVW5kZWZpbmUgTURfRVhFQ19QUkVGSVggYW5kCglNRF9TVEFSVEZJTEVfUFJFRklYIHNpbmNlIHRob3NlIGFyZSBub3QgbmVlZGVkIG9uIGxpbnV4LgoJKEFTTV9GSUxFX1NUQVJUKTogTmV3LCBmcm9tIG1pcHMvZ251LmguCgoyMDAwLTAzLTA5ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEBjeWdudXMuY29tPgoJICAgIEFsZXggU2FtdWVsICA8c2FtdWVsQGNvZGVzb3VyY2VyeS5jb20+IGFuZCBvdGhlcnMKCgkqIE1ha2VmaWxlLmluIChzc2Eubyk6IE5ldyBydWxlLgoJKE9CSlMpOiBBZGQgc3NhLm8uCgkoU1RBR0VTVFVGRik6IEFkZCAqLnNzYSBhbmQgKi51c3NhLgoJKG1vc3RseWNsZWFuKTogRGVsZXRlICouc3NhLCAqLnVzc2EsICovKi5zc2EsICovKi51c3NhLgoJKiBydGwuZGVmIChQSEkpOiBOZXcgUlRMIGV4cHJlc3Npb24uCgkqIHJ0bC5oIChjbGVhcl9sb2dfbGlua3MpOiBOZXcgZGVjbGFyYXRpb24uCgkoY29udmVydF90b19zc2EpOiBMaWtld2lzZS4KCShjb252ZXJ0X2Zyb21fc3NhKTogTGlrZXdpc2UuCgkqIGZsb3cuYyAoc3BsaXRfZWRnZSk6IElmIHRoZSBlbnRyeSBub2RlIGZhbGxzIHRocm91Z2ggdG8gdGhlCglzcGxpdCBlZGdlJ3Mgc291cmNlIGJsb2NrLCBzcGxpdCB0aGUgZW50cnkgZWRnZS4KCShjbGVhcl9sb2dfbGlua3MpOiBOZXcgZnVuY3Rpb24uCgkqIHRvcGxldi5jIChzc2FfZHVtcCk6IE5ldyB2YXJpYWJsZS4KCShmbGFnX3NzYSk6IExpa2V3aXNlLgoJKGZfb3B0aW9ucyk6IEFkZCAic3NhIi4KCShjb21waWxlX2ZpbGUpOiBDcmVhdGUgU1NBIGR1bXAgZmlsZXMuCgkocmVzdF9vZl9jb21waWxhdGlvbik6IEdvIHRvIGFuZCBmcm9tIFNTQSBpZiBlbmFibGVkLgoJKGRlY2lkZV9kX29wdGlvbik6IEhhbmRsZSAtZGUgZm9yIFNTQSBkdW1wIGZpbGVzLgoJKiBzc2EuYzogTmV3IGZpbGUuCgpUaHUgTWFyICA5IDIwOjAxOjM4IDIwMDAgIEppbSBXaWxzb24gIDx3aWxzb25AY3lnbnVzLmNvbT4KCgkqIGV4cHIuYyAoZXhwYW5kX2Fzc2lnbm1lbnQpOiBGb3IgYSBDQUxMX0VYUFIsIHNwZWNpYWwgY2FzZSBQQVJNX0RFQ0wKCXNhbWUgYXMgVkFSX0RFQ0wuCgoyMDAwLTAzLTA5ICBCZW5qYW1pbiBLb3NuaWsgIDxia296QGN5Z251cy5jb20+CgoJKiBjb25maWcvYWxwaGEvbGludXguaCAoV0NIQVJfVFlQRSk6IE1ha2UgY29uc2lzdGVudC4KClRodSBNYXIgIDkgMTg6MTA6MDIgMjAwMCAgSmVmZnJleSBBIExhdyAgKGxhd0BjeWdudXMuY29tKQoKCSogY29uZmlnL3BhL3BhLWhwdXgxMC5oIChMSUJfU1BFQyk6IENvcnJlY3QgdHlwbyBpbiAhcCBjYXNlLgoJKE1EX1NUQVJURklMRV9QUkVGSVhfMSk6IE5ldyBtYWNyby4KCjIwMDAtMDMtMDkgIFJvYmVydCBMaXBlICA8cm9iZXJ0bEBzY28uY29tPgoKCSogY29uZmlnL2lhNjQvaWE2NC5jOiBJbmNsdWRlIHN5c3RlbS5oLgoKMjAwMC0wMy0wOSAgSmFzb24gTWVycmlsbCAgPGphc29uQGNhc2V5LmN5Z251cy5jb20+CgoJKiBleGNlcHQuYyAobm90aHJvd19mdW5jdGlvbl9wKTogSWYgLWZuby1leGNlcHRpb25zLCBqdXN0IHJldHVybi4KCShpbml0X2VoX25lc3RpbmdfaW5mbyk6IExpa2V3aXNlLgoKCSogdHJlZS5oIChzdHJ1Y3QgdHJlZV9jb21tb24pOiBSZW5hbWUgcmFpc2VzX2ZsYWcgdG8gbm90aHJvd19mbGFnLgoJKFRSRUVfTk9USFJPVyk6IFJlbmFtZSBmcm9tIFRSRUVfUkFJU0VTLgoJKiB0b3BsZXYuYyAocmVzdF9vZl9jb21waWxhdGlvbik6IFNldCBpdC4KCSogcHJpbnQtdHJlZS5jIChwcmludF9ub2RlKTogQWRqdXN0LgoJKiB0cmVlLmMgKHN0YWJpbGl6ZV9yZWZlcmVuY2UsIGJ1aWxkLCBidWlsZDEpOiBEb24ndCBzZXQgVFJFRV9SQUlTRVMuCgkoc3RhYmlsaXplX3JlZmVyZW5jZV8xLCBnZXRfdW53aWRlbmVkLCBnZXRfbmFycm93ZXIpOiBMaWtld2lzZS4KCSogY2FsbHMuYyAoZW1pdF9jYWxsXzEpOiBBZGQgJ25vdGhyb3cnIHBhcm0uICBBZGQKCVJFR19FSF9SRUdJT04gbm90ZSBhcyBhcHByb3ByaWF0ZS4KCShsaWJmdW5jX25vdGhyb3cpOiBOZXcgZm4uCgkoZW1pdF9saWJyYXJ5X2NhbGwsIGVtaXRfbGlicmFyeV9jYWxsX3ZhbHVlKTogVXNlIGl0LgoJKGV4cGFuZF9jYWxsKTogQ2hlY2sgVFJFRV9OT1RIUk9XLgoKCSogdmFyYXNtLmMgKG1ha2VfZGVjbF9ydGwpOiBTa2lwIGluaXRpYWwgJyonIHdoZW4gc2V0dGluZwoJREVDTF9BU1NFTUJMRVJfTkFNRS4KCjIwMDAtMDMtMDkgIEFuZHJlYXMgSmFlZ2VyICA8YWpAc3VzZS5kZT4KCgkqIG1pcHMvbGludXguaCAoTk9fSU1QTElDSVRfRVhURVJOX0MpOiBEZWZpbmUuCgkoVEFSR0VUX01FTV9GVU5DVElPTlMpOiBEZWZpbmUuCgoyMDAwLTAzLTA5ICBKYXNvbiBNZXJyaWxsICA8amFzb25AY2FzZXkuY3lnbnVzLmNvbT4KCgkqIGkzODYuYyAoaXg4Nl92YWxpZF90eXBlX2F0dHJpYnV0ZV9wKTogVXNlIGNvbXBhcmVfdHJlZV9pbnQuCgoJKiBleGNlcHQuYyAoY2FuX3Rocm93KTogU2VlIHRocm91Z2ggYSBTRVFVRU5DRS4KCShub3Rocm93X2Z1bmN0aW9uX3ApOiBOZXcgZm4uCgkqIGV4Y2VwdC5oOiBEZWNsYXJlIGl0LgoJKiBmdW5jdGlvbi5jIChjdXJyZW50X2Z1bmN0aW9uX25vdGhyb3cpOiBOZXcgdmFyLgoJKHByZXBhcmVfZnVuY3Rpb25fc3RhcnQpOiBJbml0aWFsaXplIGl0LgoJKiBvdXRwdXQuaDogRGVjbGFyZSBpdC4KCSogdG9wbGV2LmMgKHJlc3Rfb2ZfY29tcGlsYXRpb24pOiBTZXQgaXQuCgkqIGR3YXJmMm91dC5jIChkd2FyZjJvdXRfYmVnaW5fcHJvbG9ndWUpOiBVc2UgaXQuCgoyMDAwLTAzLTA5ICBaYWNrIFdlaW5iZXJnICA8emFja0B3b2xlcnkuY3VtYi5vcmc+CgoJKiBjcHBoYXNoLmMgKGNvbGxlY3RfZm9ybWFsX3BhcmFtZXRlcnMpOiBzdHJuY21wIHJldHVybnMgMCBmb3IKCW1hdGNoLiAgKGNwcF9jb21wYXJlX2RlZnMpOiBDb3VudCB0aGUgbnVsIHNlcGFyYXRvciB3aGVuCglhZHZhbmNpbmcgb3ZlciBhcmd1bWVudCBuYW1lcy4KCjIwMDAtMDMtMDkgIEJlcm5kIFNjaG1pZHQgIDxiZXJuZHNAY3lnbnVzLmNvLnVrPgoKCSogcmVjb2cuYyAocHJlcHJvY2Vzc19jb25zdHJhaW50cyk6IE1hdGNoaW5nIGNvbnN0cmFpbnRzIGFmZmVjdAoJc2FtZSBhbHRlcm5hdGl2ZS9kaWZmZXJlbnQgb3BlcmFuZCwgbm90IHNhbWUgb3BlcmFuZC9kaWZmZXJlbnQKCWFsdGVybmF0aXZlLgoKCSogcmVsb2FkMS5jIChlbGltaW5hdGVfcmVnc19pbl9pbnNuKTogSGFuZGxlIGFkZGl0aW9ucyBvZiBlbGltaW5hYmxlCglyZWdpc3RlciBhbmQgYSBjb25zdGFudCBzcGVjaWFsbHkuCgoyMDAwLTAzLTA4ICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBsaWJnY2MyLmg6IE5ldyBmaWxlLgoJKiBsaWJnY2MyLmM6IE1vdmUgbWFjcm9zLCB0eXBlZGVmcyBhbmQgcHJvdG90eXBlcyB0byBsaWJnY2MyLmguCgpXZWQgTWFyICA4IDE2OjE5OjQyIDIwMDAgIEppbSBXaWxzb24gIDx3aWxzb25AY3lnbnVzLmNvbT4KCgkqIGNvbmZpZ3VyZS5pbiAoaWE2NCotKi1lbGYqLCBpYTY0Ki0qLWxpbnV4Kik6IE5ldy4KCSogY29uZmlndXJlOiBSZWdlbmVyYXRlLgoJKiBjb25maWcvaWE2NDogTmV3LgoKMjAwMC0wMy0wOCAgWmFjayBXZWluYmVyZyAgPHphY2tAd29sZXJ5LmN1bWIub3JnPgoKCSogTWFrZWZpbGUuaW4gKExJQkNQUF9ERVBTKTogTmV3IG1hY3JvLgoJKGNwcGxpYi5vLCBjcHBoYXNoLm8sIGNwcGVycm9yLm8sIGNwcGV4cC5vLCBjcHBmaWxlcy5vKTogVXNlCglpdCB0byBkZWNsYXJlIGRlcHMuCgkqIGNwcGVycm9yLmM6IEluY2x1ZGUgY3BwaGFzaC5oLgoJKiBjcHBleHAuYzogSW5jbHVkZSBjcHBoYXNoLmguICBSZW1vdmUgTVVMVElCWVRFX0NIQVJTCglkaW5nbGViZXJyeS4KCShsZXgpOiBEb24ndCB1c2UgQ1BQX1dBUk5fVU5ERUYuCgkoX2NwcF9wYXJzZV9leHByKTogUmV0dXJuIGFuIGludCwgdGhlIHRydXRoIHZhbHVlLgoJKiBjcHBmaWxlcy5jOiBJbmNsdWRlIGNwcGhhc2guaC4KCShfY3BwX21lcmdlX2luY2x1ZGVfY2hhaW5zKTogTW92ZSB0byBjcHBpbml0LmMgYW5kIG1ha2Ugc3RhdGljLgoJKiBjcHBpbml0LmMgKGluY2x1ZGVfZGVmYXVsdHNfYXJyYXkpOiBEaXNlbnRhbmdsZS4KCShjcHBfY2xlYW51cCk6IERvbid0IGZyZWUgdGhlIGlmIHN0YWNrIGhlcmUuCgkoY3BwX2ZpbmlzaCk6IFBvcCBvZmYgYWxsIGJ1ZmZlcnMsIG5vdCBqdXN0IG9uZS4KCSogY3BwbGliLmMgKGV2YWxfaWZfZXhwcik6IFJldHVybiBpbnQuCgkoZG9feGlmZGVmKTogUmVuYW1lIGRvX2lmZGVmLgoJKGhhbmRsZV9kaXJlY3RpdmUpOiBEb24ndCB1c2UgQ1BQX1BSRVBST0NFU1NFRC4KCShjcHBfZ2V0X3Rva2VuKTogRG9uJ3QgdXNlIENQUF9DODkuCgkqIGZpeC1oZWFkZXIuYzogRG9uJ3QgdXNlIENQUF9PUFRJT05TLgoKCSogY3BwbGliLmg6IE1vdmUgVV9DSEFSLCBlbnVtIG5vZGVfdHlwZSwgc3RydWN0CglmaWxlX25hbWVfbGlzdCwgc3RydWN0IGloYXNoLCBpc19pZGNoYXIsIGlzX2lkc3RhcnQsCglpc19udW1jaGFyLCBpc19udW1zdGFydCwgaXNfaHNwYWNlLCBpc19zcGFjZSwgQ1BQX0JVRl9QRUVLLAoJQ1BQX0JVRl9HRVQsIENQUF9GT1JXQVJELCBDUFBfUFVUUywgQ1BQX1BVVFNfUSwgQ1BQX1BVVEMsCglDUFBfUFVUQ19RLCBDUFBfTlVMX1RFUk1JTkFURSwgQ1BQX05VTF9URVJNSU5BVEVfUSwKCUNQUF9CVU1QX0JVRkZFUl9MSU5FLCBDUFBfQlVNUF9MSU5FLCBDUFBfUFJFVl9CVUZGRVIsCglDUFBfUFJJTlRfREVQUywgQ1BQX1RSQURJVElPTkFMLCBDUFBfUEVEQU5USUMsIGFuZCBwcm90b3R5cGVzCglvZiBfY3BwX3NpbXBsaWZ5X3BhdGhuYW1lLCBfY3BwX2ZpbmRfaW5jbHVkZV9maWxlLAoJX2NwcF9yZWFkX2luY2x1ZGVfZmlsZSwgYW5kIF9jcHBfcGFyc2VfZXhwciB0byBjcHBoYXNoLmguCglNb3ZlIHN0cnVjdCBpZl9zdGFjayB0byBjcHBsaWIuYy4gIE1vdmUgc3RydWN0IGNwcF9wZW5kaW5nIHRvCgljcHBpbml0LmMuCglDaGFuZ2UgYWxsIHVzZXMgb2YgVV9DSEFSIHRvIGJlIHVuc2lnbmVkIGNoYXIgaW5zdGVhZC4KCURlbGV0ZSBDUFBfV0FSTl9VTkRFRiwgQ1BQX0M4OSwgYW5kIENQUF9QUkVQUk9DRVNTRUQuCgoyMDAwLTAzLTA4ICBKYXNvbiBNZXJyaWxsICA8amFzb25AY2FzZXkuY3lnbnVzLmNvbT4KCgkqIGR3YXJmMm91dC5jIChkd19mZGVfc3RydWN0KTogQWRkICdub3Rocm93Jy4KCShkd2FyZjJvdXRfYmVnaW5fcHJvbG9ndWUpOiBTZXQgaXQuCgkob3V0cHV0X2NhbGxfZnJhbWVfaW5mbyk6IERvbid0IGVtaXQgRUggdW53aW5kIGluZm8gZm9yIGxlYXZlcy4KCgkqIGZsb3cuYyAoY291bnRfYmFzaWNfYmxvY2tzLCBmaW5kX2Jhc2ljX2Jsb2Nrc18xKTogQSByZXRocm93CgljYW4gb2NjdXIgb3V0c2lkZSBvZiBhbiBFSCByZWdpb24uCgkqIGV4Y2VwdC5jOiBDb3JyZWN0IGNvbW1lbnRzIGFib3V0IHJldGhyb3cgYmVoYXZpb3IuCgkocmV0aHJvd19zeW1ib2xfbWFwKTogRG8gbm90aGluZyBpZiAhZmxhZ19uZXdfZXhjZXB0aW9ucy4KCjIwMDAtMDMtMDggIEFuZHJldyBNYWNMZW9kICA8YW1hY2xlb2RAY3lnbnVzLmNvbT4KCgkqIGZsb3cuYyAobWFrZV9lZGdlcyk6IEFsd2F5cyBjYWxsIG1ha2VfZWhfZWRnZSBmb3IgY2FsbHMuCgoyMDAwLTAzLTA4ICBaYWNrIFdlaW5iZXJnICA8emFja0B3b2xlcnkuY3VtYi5vcmc+CgoJKiBjcHBsaWIuaCAocGFyc2VfdW5kZXJmbG93X3QsIENQUF9OVUxMX0JVRkZFUik6IERlbGV0ZS4KCShzdHJ1Y3QgY3BwX2J1ZmZlcik6IFJlbW92ZSBmbmFtZSBhbmQgdW5kZXJmbG93IGZpZWxkcy4KCShzdHJ1Y3QgY3BwX3JlYWRlcik6IFJlbW92ZSBnZXRfdG9rZW4gZmllbGQuCgkoc3RydWN0IGluY2x1ZGVfaGFzaCk6IFJlbmFtZSB0byBzdHJ1Y3QgaWhhc2guICBBZGQgdHlwZWRlZiB0bwoJSUhBU0guCgkoc3RydWN0IGlmX3N0YWNrKTogUmVtb3ZlIGZuYW1lIGZpZWxkLgoJKElGX1NUQUNLX0ZSQU1FKTogUmVuYW1lIHRvIElGX1NUQUNLLgoKCSogY3BwZXJyb3IuYyAocHJpbnRfY29udGFpbmluZ19maWxlcyk6IFRydXN0IHRoYXQgdGhlcmUgYXJlIG5vCgltYWNybyBidWZmZXJzIGJlbG93IHRoZSB0b3AgZmlsZSBidWZmZXIuCgkqIGNwcGZpbGVzLmM6IFJlcGxhY2UgYWxsIHJlZmVyZW5jZXMgdG8gJ3N0cnVjdCBpbmNsdWRlX2hhc2gnCgl3aXRoICdJSEFTSCcuICBSZW5hbWUgaW5pdGlhbGl6ZV9pbnB1dF9idWZmZXIgdG8KCWluaXRfaW5wdXRfYnVmZmVyLiAgRG9uJ3Qgc2V0IG9yIHJlZmVyZW5jZSBjcHBfYnVmZmVyLT5mbmFtZSwKCXVzZSBidWZmZXItPmloYXNoLT5uYW1lIGluc3RlYWQuCgkqIGNwcGhhc2guYyAoc3BlY2lhbF9zeW1ib2wpOiBVc2UgY3BwX2ZpbGVfYnVmZmVyLiAgVXNlIE5VTEwKCW5vdCBDUFBfTlVMTF9CVUZGRVIuCgkqIGNwcGluaXQuYzogVXNlIE5VTEwgbm90IENQUF9OVUxMX0JVRkZFUiwgSUZfU1RBQ0sgbm90CglJRl9TVEFDS19GUkFNRSwgSUhBU0ggbm90IHN0cnVjdCBpbmNsdWRlX2hhc2guCgkqIGNwcGxpYi5jOiBSZW5hbWUgZXZhbF9pZl9leHByZXNzaW9uIHRvIGV2YWxfaWZfZXhwci4gIFJlbW92ZQoJbnVsbF91bmRlcmZsb3cuICBVc2UgSUZfU1RBQ0sgbm90IElGX1NUQUNLX0ZSQU1FLCBJSEFTSCBub3QKCXN0cnVjdCBpbmNsdWRlX2hhc2gsIE5VTEwgbm90IENQUF9OVUxMX0JVRkZFUi4gIFJlbW92ZSBhbGwKCXJlZmVyZW5jZXMgdG8gY3BwX2J1ZmZlci0+Zm5hbWUgKGRlbGV0ZSBlbnRpcmVseSwgb3IgdXNlCgktPmloYXNoLT5uYW1lIGluc3RlYWQpIGFuZCBJRl9TVEFDSy0+Zm5hbWUuCgkoY3BwX3B1c2hfYnVmZmVyKTogRG9uJ3Qgc2V0IG5ldy0+dW5kZXJmbG93LgoJKGRvX2luY2x1ZGUpOiBVc2UgY3BwX2ZpbGVfYnVmZmVyLgoKCSogY3BwaGFzaC5jIChjb2xsZWN0X2Zvcm1hbF9wYXJhbWV0ZXJzKTogUmVtb3ZlIGR1cGxpY2F0ZQoJaW5jcmVtZW50IG9mIGFyZ3NsZW4uICBQZWR3YXJuIGluIEM5OSBtb2RlIGlmIF9fVkFfQVJHU19fIGlzCgl1c2VkIGFzIGEgbWFjcm8gYXJndW1lbnQgbmFtZS4gIERvbid0IGFwcGVuZCAiLi4uIiB0byBuYW1lYnVmCglmb3IgdmFyYXJncyBtYWNyb3MuICBBZnRlciB3ZSdyZSBkb25lIHNjYW5uaW5nLCBnbyB0aHJvdWdoCgluYW1lYnVmIGFuZCBtYWtlIGl0IE5VTCBzZXBhcmF0ZWQsIG5vdCBjb21tYSBzZXBhcmF0ZWQuCgkoX2NwcF9jb21wYXJlX2RlZnMpOiBSZW1vdmUgcmVnaXN0ZXIgdGFnIGZyb20gdmFyaWFibGVzLgoJRXhwZWN0IGRlZm4tPmFyZ25hbWVzIHRvIGJlIE5VTCBzZXBhcmF0ZWQuCgkoX2NwcF9kdW1wX2RlZmluaXRpb24pOiBFeHBlY3QgZGVmbi0+YXJnbmFtZXMgdG8gYmUgTlVMCglzZXBhcmF0ZWQgYW5kIGluIGZvcndhcmQgb3JkZXIuCgkqIGNwcGhhc2guaDogVXBkYXRlIGRvY3VtZW50YXRpb24gb2YgYXJnbmFtZXMgZmllbGQuCgoyMDAwLTAzLTA4ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEBjeWdudXMuY29tPgoKCSogYnVpbHRpbnMuYyAoZXhwYW5kX2J1aWx0aW5fc3RybGVuKTogQmUgcHJlcGFyZWQgZm9yIHN0cmxlbnNpCgl0byBmYWlsLiAgRG9uJ3QgcHJlLWV4cGFuZCB0aGUgc291cmNlIG9wZXJhbmQuCgoJKiBpMzg2Lm1kIChzdHJsZW5zaSk6IEluaXRpYWxpemUgZW9zY2hhciBhbmQgYWxpZ24gYmVmb3JlIHVzZS4KCjIwMDAtMDMtMDggIEphc29uIE1lcnJpbGwgIDxqYXNvbkBjYXNleS5jeWdudXMuY29tPgoKCSogZXhwci5jIChleHBhbmRfZXhwciwgY2FzZSBBUlJBWV9SRUYpOiBTdGlsbCBjaGVjayBmb3IgbWlzc2luZwoJQ09OU1RSVUNUT1IgZWxlbWVudC4KCjIwMDAtMDMtMDggIEdhdmluIFJvbWlnLUtvY2ggIDxnYXZpbkBjZXR1cy5jeWdudXMuY29tPgoKCSogbWlwcy5jIChtaXBzX2V4cGFuZF9wcm9sb2d1ZSk6IElmIHRoZSBsYXN0CgluYW1lZCBhcmd1bWVudCBpcyB0aGUgdmFyYXJnIG1hcmtlciAidmFfbGlzdCIsIHRyZWF0IGl0IGFzCglhbiB1bm5hbWVkIGFyZ3VtZW50LgoKMjAwMC0wMy0wOCAgQ2xpbnRvbiBQb3BldHogIDxjcG9wZXR6QGN5Z251cy5jb20+CgoJKiBkYnhvdXQuYyAoZGJ4b3V0X3Bhcm1zKTogV2hlbiBjb3JyZWN0aW5nIGZvciBwcm9tb3RlZAoJYmlnLWVuZGlhbiBwYXJhbWV0ZXJzLCB1c2UgdGhlIG1vZGUgb2YgdGhlIERFQ0xfUlRMIHJhdGhlcgoJdGhhbiBVTklUU19QRVJfV09SRC4KCjIwMDAtMDMtMDggIE5hdGhhbiBTaWR3ZWxsICA8bmF0aGFuQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjLWNvbW1vbi5oIChtYWtlX2ZuYW1lX2RlY2wpOiBEZWNsYXJlLgoJKiBjLWNvbW1vbi5jIChtYWtlX2ZuYW1lX2RlY2wpOiBEZWZpbmUuCgkoZGVjbGFyZV9oaWRkZW5fY2hhcl9hcnJheSk6IFJlbW92ZS4KCShkZWNsYXJlX2Z1bmN0aW9uX25hbWUpOiBVc2UgbWFrZV9mbmFtZV9kZWNsLgoJKiBjLWRlY2wuYyAoY19tYWtlX2ZuYW1lX2RlY2wpOiBOZXcgZnVuY3Rpb24uCgkoaW5pdF9kZWNsX3Byb2Nlc3NpbmcpOiBTZXQgbWFrZV9mbmFtZV9kZWNsLgoKVHVlIE1hciAgNyAyMzo1MDozMSAyMDAwICBKZWZmcmV5IEEgTGF3ICAobGF3QGN5Z251cy5jb20pCgoJKiBjY2NwLmMgKGhhbmRsZV9kaXJlY3RpdmUpOiBJbml0aWFsaXplIGJhY2tzbGFzaF9uZXdsaW5lc19wLgoKMjAwMC0wMy0wNyAgUGhpbGlwcCBUaG9tYXMgIDxwdGhvbWFzQHN1c2UuZGU+CgoJKiBwby9QT1RGSUxFUy5pbjogUmVtb3ZlIGNwcGFsbG9jLmMgZnJvbSBmaWxlIGxpc3QuCgoyMDAwLTAzLTA3ICBTdGV2ZSBDaGFtYmVybGFpbiAgPHNhY0Bwb2JveC5jb20+CgoJKiBwai5jIChwal9leHBhbmRfcHJvbG9ndWUpOiBjdXJyZW50X2Z1bmN0aW9uLT5hcmdzX2luZm8gaXMKCW5vdyBjdXJyZW50X2Z1bmN0aW9uX2FyZ3NfaW5mby4KCgkqIHBqLmggKFNUT1JFX0ZMQUdfVkFMVUUsIFVTRVJfTEFCRUxfUFJFRklYLAoJTE9DQUxfTEFCRUxfUFJFRklYLCBBU01fR0VORVJBVEVfSU5URVJOQUxfTEFCRUwsCglBU01fT1VUUFVUX0lOVEVSTkFMX0xBQkVMLCBBU01fT1VUUFVUX1NLSVApOiBEZWZpbmUuCgoyMDAwLTAzLTA4ICBNaWNoYWVsIEhheWVzICA8bS5oYXllc0BlbGVjLmNhbnRlcmJ1cnkuYWMubno+CgoJKiBjb25maWcvYzR4L2M0eC5oIChQVVRfU0RCX1RZUEUpOiBEZWZpbmUgc28gdGhhdCB0aGUgdHlwZSBpbmZvIGlzCglvdXRwdXQgYXMgaGV4YWRlY2ltYWwgcmF0aGVyIHRoYW4gdGhlIGRlZmF1bHQgb2N0YWwuCgoyMDAwLTAzLTA3ICBaYWNrIFdlaW5iZXJnICA8emFja0B3b2xlcnkuY3VtYi5vcmc+CgoJKiBjcHBoYXNoLmMgKHNwZWNpYWxfc3ltYm9sKTogRml4IHRoaW5rbyBpbiBwcmV2aW91cyBjb21taXQuCgoyMDAwLTAzLTA3ICBOZWlsIEJvb3RoICA8TmVpbEJAZWFydGhsaW5nLm5ldD4KCgkqIGNwcGV4cC5jIChzdHJ1Y3Qgb3BlcmF0aW9uLCBsZWZ0X3NoaWZ0LCByaWdodF9zaGlmdCwKCWNwcF9wYXJzZV9leHByKTogQ2hhbmdlIHNvbWUgImNoYXIicyB0byAiVV9DSEFSInMsIGFuZCBzb21lCgkiaW50InMgdG8gInVuc2lnbmVkIGludCJzLgoJKiBjcHBsaWIuYyAoZGV0ZWN0X2lmX25vdF9kZWZpbmVkLCBkb19hc3NlcnQsIGRvX3VuYXNzZXJ0KToKCVNpbWlsYXJseS4KCSogY3BwbGliLmg6IFVwZGF0ZSBmb3IgYWJvdmUuCgkqIG1rZGVwcy5jIChkZXBzX2luaXQsIGRlcHNfY2FsY190YXJnZXQpOiBDYXN0IHBvaW50ZXJzCglyZXR1cm5lZCBmcm9tIGFsbG9jYXRpb25zLgoKCSogY3BwaW5pdC5jIChvcHRfY29tcCwgcGFyc2Vfb3B0aW9ucyk6IE5ldyBmdW5jdGlvbnMuCgkoaGFuZGxlX29wdGlvbik6IFVzZSBwYXJzZV9vcHRpb24gdG8gcGFyc2UgYSBzaW5nbGUgY29tbWFuZAoJbGluZSBvcHRpb24sIHRoYXQgcG9zc2libHkgdGFrZXMgYW4gYXJndW1lbnQuCgkoY3BwX2hhbmRsZV9vcHRpb25zKTogU29ydCB0aGUgYXJyYXkgb2YgY29tbWFuZCBsaW5lIG9wdGlvbnMgb24KCWZpcnN0IGludm9jYXRpb24gKG5vbi1BU0NJSSBob3N0cyBvbmx5KS4KCShwcmludF9oZWxwKTogVXBkYXRlLgoKMjAwMC0wMy0wNyAgWmFjayBXZWluYmVyZyAgPHphY2tAd29sZXJ5LmN1bWIub3JnPgoKCSogbWtkZXBzLmMgKG11bmdlKTogRml4IG9mZi1ieS1vbmUgYnVnIGFuZCBpbmNvbnNpc3RlbmNpZXMgaW4KCWJhY2tzbGFzaCBjb3VudGluZyBsb29wcy4gIFByb2JsZW0gbm90ZWQgYnkgTWF0dCBLcmFhaSA8a3JhYWlAZ2hzLmNvbT4uCgoJKiBjcHBmaWxlcy5jIChfY3BwX2ZpbmRfaW5jbHVkZV9maWxlKTogTWFrZSBzdXJlIGloLT5uYW1lIGlzCglpbml0aWFsaXplZC4KCSogY3BwaW5pdC5jIChjcHBfY2xlYW51cCk6IEZyZWUgaW1wLT5uc2hvcnQgYWxzby4KCgkqIGNwcGVycm9yLmMgKGNwcF9wcmludF9jb250YWluaW5nX2ZpbGVzLAoJY3BwX3ByaW50X2ZpbGVfYW5kX2xpbmUsIHZfY3BwX21lc3NhZ2UpOiBSZW5hbWUgdG8KCXByaW50X2NvbnRhaW5pbmdfZmlsZXMsIHByaW50X2ZpbGVfYW5kX2xpbmUsIGFuZCB2X21lc3NhZ2UuCgkqIGNwcGV4cC5jIChjcHBfcGFyc2VfZXhwciwgY3BwX3BhcnNlX2VzY2FwZSwgY3BwX2xleCk6IFJlbmFtZQoJdG8gX2NwcF9wYXJzZV9leHByLCBwYXJzZV9lc2NhcGUsIGFuZCBsZXguCgkocGFyc2VfY2hhcmNvbnN0KTogUmVtb3ZlIGJyb2tlbiBtdWx0aWJ5dGUgc3VwcG9ydC4KCSogY3BwZmlsZXMuYyAoaW5jbHVkZV9oYXNoKTogTWFrZSBzdGF0aWMuCgkoY3BwX2luY2x1ZGVkKTogTmV3IGZ1bmN0aW9uLgoJKG1lcmdlX2luY2x1ZGVfY2hhaW5zLCBmaW5kX2luY2x1ZGVfZmlsZSwgZmluY2x1ZGUsCglzaW1wbGlmeV9wYXRobmFtZSk6IFJlbmFtZSB0byBfY3BwX21lcmdlX2luY2x1ZGVfY2hhaW5zLAoJX2NwcF9maW5kX2luY2x1ZGVfZmlsZSwgX2NwcF9yZWFkX2luY2x1ZGVfZmlsZSwgYW5kCglfY3BwX3NpbXBsaWZ5X3BhdGhuYW1lLgoJKiBjcHBoYXNoLmMgKGNwcF9sb29rdXAsIGZyZWVfZGVmaW5pdGlvbiwgZGVsZXRlX21hY3JvLAoJY3BwX2luc3RhbGwsIGNyZWF0ZV9kZWZpbml0aW9uLCBtYWNyb2V4cGFuZCwgY29tcGFyZV9kZWZzLAoJZHVtcF9kZWZpbml0aW9uKTogUmVuYW1lIHRvIF9jcHBfbG9va3VwLCBfY3BwX2ZyZWVfZGVmaW5pdGlvbiwKCV9jcHBfZGVsZXRlX21hY3JvLCBfY3BwX2luc3RhbGwsIF9jcHBfY3JlYXRlX2RlZmluaXRpb24sCglfY3BwX21hY3JvZXhwYW5kLCBfY3BwX2NvbXBhcmVfZGVmcywgYW5kIF9jcHBfZHVtcF9kZWZpbml0aW9uLgoJKiBjcHBpbml0LmMgKGNwcF9oYW5kbGVfb3B0aW9uKTogUmVuYW1lIHRvIGhhbmRsZV9vcHRpb24sIG1ha2UKCXN0YXRpYy4KCSogY3BwbGliLmM6IFJlbW92ZSBleHRlcm4gcHJvdG90eXBlIG9mIGNwcF9wYXJzZV9leHByLgoKCSogY3BwaGFzaC5oOiBVcGRhdGUgcHJvdG90eXBlcy4KCSogY3BwbGliLmg6IExpa2V3aXNlLiAgUHJvdG90eXBlIF9jcHBfcGFyc2VfZXhwciBoZXJlLgoKMjAwMC0wMy0wNyAgQW5kcmV3IEhhbGV5ICA8YXBoQGN5Z251cy5jb20+CgoJKiBjb25maWcvbWlwcy9taXBzLmggKFBUUkRJRkZfVFlQRSk6IFJldmVydCBicm9rZW4gY2hhbmdlOwoJUFRSRElGRl9UWVBFIHNob3VsZCBiZSBiYXNlZCBzb2xlbHkgb24gUG1vZGUuCgkoU0laRV9UWVBFKTogZGl0dG8uCgoyMDAwLTAzLTA3ICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBydGwuaCAocnR1bmlvbl9kZWYpOiBDb25zdGlmeSBtZW1iZXIgYHJ0c3RyJy4KCShlbWl0X2xpbmVfbm90ZV9hZnRlciwgZW1pdF9saW5lX25vdGUsIGVtaXRfbGluZV9ub3RlX2ZvcmNlLAoJZW1pdF9ub3RlLCBkZWNvZGVfYXNtX29wZXJhbmRzKTogQ29uc3RpZnkuCgoJKiBjc2UuYyAoY2Fub25faGFzaCk6IExpa2V3aXNlLgoKCSogZGJ4b3V0LmMgKGRieG91dF9ibG9jayk6IExpa2V3aXNlLgoKCSogZGlhZ25vc3RpYy5jIChmaWxlX2FuZF9saW5lX2Zvcl9hc20sIHZfZXJyb3JfZm9yX2FzbSwKCXZfd2FybmluZ19mb3JfYXNtKTogTGlrZXdpc2UuCgoJKiBkd2FyZm91dC5jIChmdW5jdGlvbl9zdGFydF9sYWJlbCk6IExpa2V3aXNlLgoKCSogZW1pdC1ydGwuYyAoZW1pdF9saW5lX25vdGVfYWZ0ZXIsIGVtaXRfbGluZV9ub3RlLCBlbWl0X25vdGUsCgllbWl0X2xpbmVfbm90ZV9mb3JjZSk6IExpa2V3aXNlLgoKCSogZmluYWwuYyAobGFzdF9maWxlbmFtZSwgYXNtX2luc25fY291bnQsIGZpbmFsX3NjYW5faW5zbiwKCW91dHB1dF9zb3VyY2VfbGluZSk6IExpa2V3aXNlLgoKCSogZnVuY3Rpb24uaCAoc3RydWN0IGVtaXRfc3RhdHVzKTogTGlrZXdpc2UuCgoJKiBnY3NlLmMgKGhhc2hfZXhwcl8xKTogTGlrZXdpc2UuCgoJKiBnZW5hdHRyLmMgKGdlbl9hdHRyLCBtYWluKTogTGlrZXdpc2UuCgoJKiBnZW5hdHRydGFiLmMgKHN0cnVjdCBmdW5jdGlvbl91bml0LCBjdXJyZW50X2FsdGVybmF0aXZlX3N0cmluZywKCXdyaXRlX2F0dHJfdmFsdWVxLCBuX2NvbW1hX2VsdHMsIG5leHRfY29tbWFfZWx0LCBhdHRyX2VxLAoJYXR0cl9udW1lcmFsLCBjaGVja19hdHRyX3Rlc3QsIGNoZWNrX2F0dHJfdmFsdWUsCgljb252ZXJ0X3NldF9hdHRyX2FsdGVybmF0aXZlLCBjb252ZXJ0X3NldF9hdHRyLAoJY29tcHV0ZV9hbHRlcm5hdGl2ZV9tYXNrLCBzaW1wbGlmeV9ieV9leHBsb2RpbmcsIGdlbl9hdHRyLAoJZ2VuX3VuaXQpOiBMaWtld2lzZS4KCgkqIGdlbmZsYWdzLmMgKGdlbl9pbnNuKTogTGlrZXdpc2UuCgoJKiBnZW5nZW5ydGwuYyAodHlwZV9mcm9tX2Zvcm1hdCk6IExpa2V3aXNlLgoKCSogZ2Vub3Bpbml0LmMgKGdlbl9pbnNuKTogTGlrZXdpc2UuCgoJKiBnZW5vdXRwdXQuYyAobl9vY2N1cnJlbmNlcywgcHJvY2Vzc190ZW1wbGF0ZSwgcHJvY2Vzc190ZW1wbGF0ZSk6CglMaWtld2lzZS4KCgkqIGdnYy1wYWdlLmMgKGdnY19zZXRfbWFyaywgZ2djX21hcmtfaWZfZ2NhYmxlLCBnZ2NfZ2V0X3NpemUpOgoJTGlrZXdpc2UuCgoJKiBnZ2Mtc2ltcGxlLmMgKGdnY19zZXRfbWFyaywgZ2djX21hcmtfaWZfZ2NhYmxlLCBnZ2NfZ2V0X3NpemUpOgoJTGlrZXdpc2UuCgoJKiBnZ2MuaCAoZ2djX21hcmtfc3RyaW5nLCBnZ2NfbWFyaywgZ2djX21hcmtfaWZfZ2NhYmxlLAoJZ2djX3NldF9tYXJrLCBnZ2NfZ2V0X3NpemUpOiBMaWtld2lzZS4KCgkqIG9iamMvb2JqYy1hY3QuYyAoYnVpbGRfbW9kdWxlX2Rlc2NyaXB0b3IsIGZpbmlzaF9vYmpjKTogTGlrZXdpc2UuCgoJKiBvcHRhYnMuYyAoaW5pdF9vbmVfbGliZnVuYyk6IExpa2V3aXNlLgoKCSogb3V0cHV0LmggKGFzc2VtYmxlX3N0YXJ0X2Z1bmN0aW9uKTogTGlrZXdpc2UuCgoJKiByZWNvZy5jIChkZWNvZGVfYXNtX29wZXJhbmRzKTogTGlrZXdpc2UuCgoJKiB0b3BsZXYuYyAocmVzdF9vZl9jb21waWxhdGlvbik6IExpa2V3aXNlLgoKCSogdHJlZS5oIChlbWl0X2xpbmVfbm90ZV9hZnRlciwgZW1pdF9saW5lX25vdGUsCgllbWl0X2xpbmVfbm90ZV9mb3JjZSk6IExpa2V3aXNlLgoKCSogdmFyYXNtLmMgKGFzbV9vdXRwdXRfYnNzLCBhc21fb3V0cHV0X2FsaWduZWRfYnNzLAoJYXNtX2VtaXRfdW5pbml0aWFsaXNlZCwgYXNzZW1ibGVfc3RhcnRfZnVuY3Rpb24sCglhc3NlbWJsZV92YXJpYWJsZSwgY29uc3RfaGFzaCwgY29tcGFyZV9jb25zdGFudF8xLAoJZmluZF9wb29sX2NvbnN0YW50LCBtYXJrX2NvbnN0YW50X3Bvb2wsIGFzc2VtYmxlX2FsaWFzKTogTGlrZXdpc2UuCgoJKiB4Y29mZm91dC5oIChEQlhfRklOSVNIX1NZTUJPTCk6IExpa2V3aXNlLgoKCSogYWxwaGEvYWxwaGEubWQgKGNhbGxfdm1zLCBjYWxsX3ZhbHVlX3Ztcyk6IExpa2V3aXNlLgoKCSogYXJtL2FvZi5oIChBU01fT1VUUFVUX0FTQ0lJKTogTGlrZXdpc2UuCgoJKiBhcm0vYW91dC5oIChBU01fT1VUUFVUX0FTQ0lJKTogTGlrZXdpc2UuCgoJKiBhcm0vYXJtLXByb3Rvcy5oIChvdXRwdXRfYXNjaWlfcHNldWRvX29wLCBhcm1fZGxsZXhwb3J0X25hbWVfcCwKCWFybV9kbGxpbXBvcnRfbmFtZV9wKTogTGlrZXdpc2UuCgoJKiBhcm0vYXJtLmMgKGFybV9lbmNvZGVfY2FsbF9hdHRyaWJ1dGUsIG91dHB1dF9hc2NpaV9wc2V1ZG9fb3ApOgoJTGlrZXdpc2UuCgoJKiBhcm0vYXJtLmggKEFTTV9PVVRQVVRfTUlfVEhVTkspOiBMaWtld2lzZS4KCgkqIGFybS9lbGYuaCAoQVNNX0ZJTklTSF9ERUNMQVJFX09CSkVDVCk6IExpa2V3aXNlLgoKCSogYXJtL3BlLmMgKGFybV9kbGxleHBvcnRfbmFtZV9wLCBhcm1fZGxsaW1wb3J0X25hbWVfcCwKCWFybV9tYXJrX2RsbGV4cG9ydCwgYXJtX21hcmtfZGxsaW1wb3J0LAoJYXJtX3BlX2VuY29kZV9zZWN0aW9uX2luZm8pOiBMaWtld2lzZS4KCgkqIGFybS90ZWxmLmggKEFTTV9PVVRQVVRfREVGX0ZST01fREVDTFMsCglBU01fRklOSVNIX0RFQ0xBUkVfT0JKRUNUKTogTGlrZXdpc2UuCgoJKiBhcm0vdGh1bWIuYyAodGh1bWJfZnVuY3Rpb25fcHJvbG9ndWUpOiBMaWtld2lzZS4KCgkqIGFybS90aHVtYi5oIChBU01fT1VUUFVUX0FTQ0lJKTogTGlrZXdpc2UuCgoJKiBhdnIvYXZyLmggKEFTTV9GSU5JU0hfREVDTEFSRV9PQkpFQ1QpOiBMaWtld2lzZS4KCgkqIGNsaXBwZXIvY2xpeC5oIChBU01fT1VUUFVUX0FTQ0lJKTogTGlrZXdpc2UuCgoJKiBmeDgwL2Z4ODAuaCAoQVNNX09VVFBVVF9BU0NJSSk6IExpa2V3aXNlLgoKCSogaTM4Ni9jeWd3aW4uaCAoQVNNX09VVFBVVF9TRUNUSU9OX05BTUUpOiBMaWtld2lzZS4KCgkqIGkzODYvZnJlZWJzZC5oIChBU01fRklOSVNIX0RFQ0xBUkVfT0JKRUNUKTogTGlrZXdpc2UuCgoJKiBpMzg2L2kzODYtaW50ZXJpeC5oIChBU01fT1VUUFVUX0xJTUlURURfU1RSSU5HLAoJQVNNX09VVFBVVF9BU0NJSSwgQVNNX09VVFBVVF9TRUNUSU9OX05BTUUpOiBMaWtld2lzZS4KCgkqIGkzODYvaTM4Ni1wcm90b3MuaCAoYXNtX291dHB1dF9mdW5jdGlvbl9wcmVmaXgpOiBMaWtld2lzZS4KCgkqIGkzODYvaTM4Ni5jIChhc21fb3V0cHV0X2Z1bmN0aW9uX3ByZWZpeCk6IExpa2V3aXNlLgoKCSogaTM4Ni9pMzg2ZWxmLmggKEFTTV9PVVRQVVRfQVNDSUkpOiBMaWtld2lzZS4KCgkqIGkzODYvb3Nmcm9zZS5oIChBU01fRklOSVNIX0RFQ0xBUkVfT0JKRUNUKTogTGlrZXdpc2UuCgoJKiBpMzg2L3B0eDQtaS5oIChBU01fT1VUUFVUX0FTQ0lJKTogTGlrZXdpc2UuCgoJKiBpMzg2L3NjbzUuaCAoQVNNX0ZJTklTSF9ERUNMQVJFX09CSkVDVCwKCUFTTV9PVVRQVVRfTElNSVRFRF9TVFJJTkcsIEFTTV9PVVRQVVRfQVNDSUksCglBU01fT1VUUFVUX1NFQ1RJT05fTkFNRSk6IExpa2V3aXNlLgoKCSogaTM4Ni9zeXN2NC5oIChBU01fT1VUUFVUX0FTQ0lJKTogTGlrZXdpc2UuCgoJKiBpODYwL3BhcmFnb24uaCAoQVNNX09VVFBVVF9BU0NJSSk6IExpa2V3aXNlLgoKCSogaTg2MC9zeXN2My5oIChBU01fT1VUUFVUX0FTQ0lJKTogTGlrZXdpc2UuCgoJKiBtMzJyL20zMnIuYyAobTMycl9lbmNvZGVfc2VjdGlvbl9pbmZvKTogTGlrZXdpc2UuCgoJKiBtY29yZS1lbGYuaCAoQVNNX0ZJTklTSF9ERUNMQVJFX09CSkVDVCk6IExpa2V3aXNlLgoKCSogbWNvcmUvbWNvcmUuYyAobWNvcmVfZW5jb2RlX3NlY3Rpb25faW5mbyk6IExpa2V3aXNlLgoKCSogbWlwcy9lbGYuaCAoQVNNX0ZJTklTSF9ERUNMQVJFX09CSkVDVCk6IExpa2V3aXNlLgoKCSogbWlwcy9lbGY2NC5oIChBU01fRklOSVNIX0RFQ0xBUkVfT0JKRUNUKTogTGlrZXdpc2UuCgoJKiBtaXBzL2lyaXM2LmggKEFTTV9GSU5JU0hfREVDTEFSRV9PQkpFQ1QpOiBMaWtld2lzZS4KCgkqIG1pcHMvbWlwcy5oIChBU01fT1VUUFVUX0lERU5UKTogTGlrZXdpc2UuCgoJKiBtaXBzL21pcHMubWQgKG1vdmRpLCBtb3ZzaSk6IExpa2V3aXNlLgoKCSogbWlwcy9uZXRic2QuaCAoQVNNX0ZJTklTSF9ERUNMQVJFX09CSkVDVCk6IExpa2V3aXNlLgoKCSogbmV0YnNkLmggKEFTTV9GSU5JU0hfREVDTEFSRV9PQkpFQ1QpOiBMaWtld2lzZS4KCgkqIG9wZW5ic2QuaCAoQVNNX0ZJTklTSF9ERUNMQVJFX09CSkVDVCk6IExpa2V3aXNlLgoKCSogcHR4NC5oIChBU01fRklOSVNIX0RFQ0xBUkVfT0JKRUNULCBBU01fT1VUUFVUX0xJTUlURURfU1RSSU5HLAoJQVNNX09VVFBVVF9BU0NJSSk6IExpa2V3aXNlLgoKCSogcnM2MDAwL3JzNjAwMC5jIChyczYwMDBfYWxsb2NhdGVfc3RhY2tfc3BhY2UsIG91dHB1dF9lcGlsb2csCglvdXRwdXRfbWlfdGh1bmssIG91dHB1dF90b2MpOiBMaWtld2lzZS4KCgkqIHJzNjAwMC9yczYwMDAubWQgKG1vdnNpKTogTGlrZXdpc2UuCgoJKiByczYwMDAvc3lzdjQuaCAoQVNNX09VVFBVVF9JTlQsIEFTTV9PVVRQVVRfU0VDVElPTl9OQU1FKTogTGlrZXdpc2UuCgoJKiB0YWhvZS9oYXJyaXMuaCAoQVNNX09VVFBVVF9BU0NJSSk6IExpa2V3aXNlLgoKCSogdjg1MC92ODUwLmMgKHByaW50X29wZXJhbmQsIHByaW50X29wZXJhbmRfYWRkcmVzcywKCXY4NTBfZW5jb2RlX2RhdGFfYXJlYSk6IExpa2V3aXNlLgoKMjAwMC0wMy0wNyAgQ2xpbnRvbiBQb3BldHogIDxjcG9wZXR6QGN5Z251cy5jb20+CgoJKiBjb25maWcvbWlwcy9taXBzLm1kICh6ZXJvX2V4dGVuZHNpZGkyKTogQWx3YXlzIGZvcmNlIG9wZXJhbmQKCW9uZSB0byBtZW1vcnkgZm9yIG1pcHMxNi4KCk1vbiBNYXIgIDYgMTU6MjI6MjkgMjAwMCAgUmljaGFyZCBLZW5uZXIgIDxrZW5uZXJAdmxzaTEudWx0cmEubnl1LmVkdT4KCgkqIHRyZWUuaCAoSU5UX0NTVF9MVCwgSU5UX0NTVF9MVF9VTlNJR05FRCk6IFJlbW92ZSB1bm5lZWRlZCBjYXN0cy4KCShzdHJ1Y3QgdHJlZV9pbnRfY3N0KTogaW50X2NzdF9sb3cgaXMgbm93IHVuc2lnbmVkIEhPU1RfV0lERV9JTlQuCgkoYXR0cmlidXRlX2hhc2hfbGlzdCwgdHlwZV9oYXNoX2Nhbm9uKTogaGFzaGNvZGUgaXMgbm93IHVuc2lnbmVkLgoJKHR5cGVfaGFzaF9sb29rdXAsIHR5cGVfaGFzaF9hZGQsIHR5cGVfaGFzaF9saXN0KTogTGlrZXdpc2UuCgkobWluX3ByZWNpc2lvbik6IFJlc3VsdCBpcyB1bnNpZ25lZC4KCShhZGRfZG91YmxlLCBuZWdfZG91YmxlLCBtdWxfZG91YmxlKTogTG93IHdvcmQgaXMgdW5zaWduZWQuCgkobHNoaWZ0X2RvdWJsZSwgcnNoaWZ0X2RvdWJsZSwgbHJvdGF0ZV9kb3VibGUpOiBMaWtld2lzZS4KCShycm90YXRlX2RvdWJsZSwgZGl2X2FuZF9yb3VuZF9kb3VibGUpOiBMaWtld2lzZS4KCSh0cmVlX2Zsb29yX2xvZzIsIGNvbXBhcmVfdHJlZV9pbnQpOiBOZXcgZnVuY3Rpb25zLgoJKHByZXNlcnZlX3J0bF9leHByX3RlbXBzKTogTmV3IGRlY2xhcmF0aW9uLgoJKiBjLWNvbW1vbi5jIChkZWNsYXJlX2hpZGRlbl9jaGFyX2FycmF5KTogVXNlIGNvbXBhcmVfdHJlZV9pbnQuCgkoZGVjbF9hdHRyaWJ1dGVzKTogVXNlIHRyZWVfbG9nMiB0byBmaW5kIGFsaWdubWVudC4KCUNoZWNrIGZvciBUUkVFX0lOVF9DU1RfSElHSCBmb3IgZm9ybWF0IGFyZ3MuCgkobWluX3ByZWNpc2lvbik6IE5vdyB1bnNpZ25lZC4KCVVzZSB0cmVlX2Zsb29yX2xvZzIuCgkodHJ1dGh2YWx1ZV9jb252ZXJzaW9uKTogRGVsZXRlIGxvbmctZGlzYWJsZWQgY29kZS4KCSogYy1kZWNsLmMgKGZpbmlzaF9zdHJ1Y3QpOiBDbGVhbiB1cCB0ZXN0cyBvbiBmaWVsZCB3aWR0aC4KCShmaW5pc2hfZnVuY3Rpb24pOiBVc2UgY29tcGFyZV90cmVlX2ludC4KCSogYy1wcmFnbWEuYyAoaGFuZGxlX3ByYWdtYV90b2tlbik6IFVzZSB0cmVlX2xvZzIgZm9yIGFsaWdubWVudC4KCSogYy10eXBlY2suYyAoY29tcHR5cGVzKTogVXNlIHRyZWVfaW50X2NzdF9lcXVhbC4KCShkZWZhdWx0X2NvbnZlcnNpb24sIGRpZ2VzdF9pbml0KTogVXNlIGNvbXBhcmVfdHJlZV9pbnQuCgkoYnVpbGRfYmluYXJ5X29wKTogVXNlIGludGVnZXJfYWxsX29uZXNwIGFuZCBjb21wYXJlX3RyZWVfaW50LgoJRml4IHR5cGUgZXJyb3JzIGluIGZvcm1pbmcgbWFza3MuCgkqIGNhbGxzLmMgKGluaXRpYWxpemVfYXJndW1lbnRfaW5mb3JtYXRpb24pOiBVc2UgY29tcGFyZV90cmVlX2ludC4KCSogZGJ4b3V0LmMgKGRieG91dF90eXBlKTogQ2FzdCBUUkVFX0lOVF9DU1RfTE9XIHRvIEhPU1RfV0lERV9JTlQuCgkqIGV4Y2VwdC5jIChleHBhbmRfZWhfcmVnaW9uX3N0YXJ0X3RyZWUpOiBVc2UgY29tcGFyZV90cmVlX2ludC4KCSogZXhwci5jIChpc196ZXJvc19wLCBjYXNlIElOVEVHRVJfQ1NUKTogVXNlIGludGVnZXJfemVyb3AuCgkoc3RvcmVfZmllbGQpOiBVc2UgY29tcGFyZV90cmVlX2ludC4KCShleHBhbmRfZXhwciwgY2FzZSBDT05TVFJVQ1RPUik6IFVzZSBUWVBFX1NJWkVfVU5JVC4KCShleHBhbmRfZXhwciwgY2FzZSBBUlJBWV9SRUYpOiBVc2UgY29tcGFyZV90cmVlX2ludC4KCShkb19qdW1wLCBjYXNlIEJJVF9BTkRfRVhQUik6IFVzZSB0cmVlX2Zsb29yX2xvZzIuCgkoZG9fc3RvcmVfZmxhZyk6IFVzZSBjb21wYXJlX3RyZWVfaW50LgoJKiBmb2xkLWNvbnN0LmMgKGVuY29kZSwgZGVjb2RlKTogTG93IHBhcnQgaXMgYWx3YXlzIHVuc2lnbmVkLgoJKGZvcmNlX2ZpdF90eXBlLCBhZGRfZG91YmxlLCBuZWdfZG91YmxlLCBtdWxfZG91YmxlKTogTGlrZXdpc2UuCgkobHNoaWZ0X2RvdWJsZSwgcnNoaWZ0X2RvdWJsZSwgbHJvdGF0ZV9kb3VibGUpOiBMaWtld2lzZS4KCShycm90YXRlX2RvdWJsZSwgZGl2X2FuZF9yb3VuZF9kb3VibGUsIGludF9jb25zdF9iaW5vcCk6IExpa2V3aXNlLgoJKGZvbGRfY29udmVydCk6IFVzZSBjb21wYXJlX3RyZWVfaW50LgoJKG9wZXJhbmRfZXF1YWxfcCwgY2FzZSBJTlRFR0VSX0NTVCk6IFVzZSB0cmVlX2ludF9jc3RfZXF1YWwuCgkoaW52ZXJ0X3RydXRodmFsdWUsIGNhc2UgSU5URUdFUl9DU1QpOiBMaWtld2lzZS4KCShmb2xkKTogVXNlIGNvbXBhcmVfdHJlZV9pbnQ7IGFkZCBjYXN0cyBmb3IgdW5zaWduZWQgVFJFRV9JTlRfQ1NUX0xPVy4KCSogbWtkZXBzLmMgKGRlcHNfZHVtbXlfdGFyZ2V0cyk6IE1ha2UgSSB1bnNpZ25lZC4KCSogcnRsLmggKGFkZF9kb3VibGUsIG5lZ19kb3VibGUsIG11bF9kb3VibGUpOiBMb3cgd29yZHMgYXJlIHVuc2lnbmVkLgoJKGxzaGlmdF9kb3VibGUsIHJzaGlmdF9kb3VibGUsIGxyb3RhdGVfZG91YmxlLCBycm90YXRlX2RvdWJsZSk6CglMaWtld2lzZS4KCSogc3RtdC5jIChleHBhbmRfZGVjbCk6IFVzZSBjb21wYXJlX3RyZWVfaW50IGFuZCBtb2RlX2Zvcl9zaXplX3RyZWUuCgkoZXhwYW5kX2VuZF9jYXNlKTogVXNlIGNvbXBhcmVfdHJlZV9pbnQuCgkoZXN0aW1hdGVfY2FzZV9jb3N0cyk6IENhc3QgVFJFRV9JTlRfQ1NUX0xPVyB0byBIT1NUX1dJREVfSU5ULgoJKiBzdG9yLWxheW91dC5jIChtb2RlX2Zvcl9zaXplX3RyZWUpOiBVc2UgY29tcGFyZV90cmVlX2ludC4KCShsYXlvdXRfZGVjbCk6IExpa2V3aXNlLgoJKGxheW91dF9yZWNvcmQsIGxheW91dF91bmlvbik6IE1ha2Ugc2l6ZXMgdW5zaWduZWQuCgkobGF5b3V0X3R5cGUsIGNhc2UgVk9JRF9UWVBFKTogVFlQRV9TSVpFIG11c3QgYmUgYml0c2l6ZXR5cGUuCgkobGF5b3V0X3R5cGUsIGNhc2UgUVVBTF9VTklPTl9UWVBFKTogVXNlIGNvbXBhcmVfdHJlZV9pbnQuCgkqIHRyZWUuYyAoc3RydWN0IHR5cGVfaGFzaCk6IGhhc2hjb2RlIGlzIHVuc2lnbmVkLgoJKGJ1aWxkX3R5cGVfYXR0cmlidXRlX3ZhcmlhbnQsIHR5cGVfaGFzaF9saXN0KTogTGlrZXdpc2UuCgkodHlwZV9oYXNoX2xvb2t1cCwgdHlwZV9oYXNoX2FkZCwgdHlwZV9oYXNoX2Nhbm9uKTogTGlrZXdpc2UuCgkoYXR0cmlidXRlX2hhc2hfbGlzdCwgYnVpbGRfYXJyYXlfdHlwZSwgYnVpbGRfbWV0aG9kX3R5cGUpOiBMaWtld2lzZS4KCShidWlsZF9jb21wbGV4X3R5cGUpOiBMaWtld2lzZS4KCShyZWFsX3ZhbHVlX2Zyb21faW50X2NzdCk6IFJlbW92ZSB1bm5lZWRlZCBjYXN0cy4KCShpbnRlZ2VyX2FsbF9vbmVzcCk6IEFkZCBjYXN0cy4KCSh0cmVlX2Zsb29yX2xvZzIsIGNvbXBhcmVfdHJlZV9pbnQpOiBOZXcgZnVuY3Rpb25zLgoJKGJ1aWxkX2luZGV4X3R5cGUpOiBVc2UgdHJlZV9pbnRfY3N0X3Nnbi4KCSogdmFyYXNtLmMgKGFzc2VtYmxlX3ZhcmlhYmxlKTogVXNlIGNvbXBhcmVfdHJlZV9pbnQuCgoyMDAwLTAzLTA2ICBKYXNvbiBNZXJyaWxsICA8amFzb25AY2FzZXkuY3lnbnVzLmNvbT4KCgkqIGNwcGhhc2guYyAoY29sbGVjdF9leHBhbnNpb24pOiBBbHNvIGNhdGNoICMjIGF0IHN0YXJ0IG9mIG1hY3JvLgoKCSogdmFyYXNtLmMgKG1ha2VfZGVjbF9ydGwpOiBEb24ndCBhZGQgYSBudW1iZXIgdG8gbWVtYmVycyBvZgoJbG9jYWwgY2xhc3Nlcy4KCShtYWtlX2Z1bmN0aW9uX3J0bCk6IExpa2V3aXNlLgoKMjAwMC0wMy0wNiAgQWxleGFuZHJlIE9saXZhICA8b2xpdmFAbHNkLmljLnVuaWNhbXAuYnI+CgoJKiBnY3NlLmMgKGNvbXB1dGVfY2FuX2NvcHkpOiBBZGp1c3QgaWYvZWxzZSBibG9ja3MgZnJvbSBydGgncwoJcGF0Y2ggZnJvbSAyMDAwLTAxLTI4LgoKMjAwMC0wMy0wNiAgQ2xpbnRvbiBQb3BldHogIDxjcG9wZXR6QGN5Z251cy5jb20+CgoJKiBjb25maWcvc2gvc2guYzogKGJhcnJpZXJfYWxpZ24pOiBIYW5kbGUgYSBkZWxheSBzbG90IHRoYXQgaXMKCWZpbGxlZCB3aXRoIGFuIGluc24gZnJvbSB0aGUganVtcCB0YXJnZXQuCgoyMDAwLTAzLTA3ICBNaWNoYWVsIEhheWVzICA8bS5oYXllc0BlbGVjLmNhbnRlcmJ1cnkuYWMubno+CgoJKiBjb25maWcvYzR4L2M0eC1wcm90b3MuaCAoYzR4X2dsb2JhbF9uYW1lKTogQ29uc3RpZnkgY2hhciAqLgoJKGM0eF9leHRlcm5hbF9yZWYpOiBMaWtld2lzZS4KCSogY29uZmlnL2M0eC9jNHguYyAoc3RydWN0IG5hbWVfbGlzdCk6IExpa2V3aXNlLgoKMTk5OS0xMi0xNiAgQmVuIENvbGxpbnMgIDxiY29sbGluc0BkZWJpYW4ub3JnPgoKCSogTWFrZWZpbGUuaW46IFBhc3MgYSBuZXcgTVVMVElMSUJfRVhDTFVTSU9OUyBvcHRpb24gYXMgdGhlIHNpeHRoCglhcmd1bWVudCB0byBnZW5tdWx0aWxpYi4KCSogZ2VubXVsdGlsaWI6IGFjY2VwdCBuZXcgTVVMVElMSUJfRVhDTFVTSU9OUyBvcHRpb24gYW5kIG91dHB1dAoJdGhlIGNvbnRlbnRzIGludG8gdGhlIG11bHRpbGliLmggaGVhZGVyLgoJKiBnY2MuYzogRGVjbGFyZSBtdWx0aWxpYl9leGNsdXNpb25zIGZvciB0aGUgc3BlY3MgZmlsZS4KCShzZXRfbXVsdGlsaWJfZGlyKTogVXNlIGl0LgoJKHByaW50X211bHRpbGliX2luZm8pOiBMaWtld2lzZS4KCSogdC1saW51eDY0OiBEZWNsYXJlIGFyZ3VtZW50cyBmb3IgbmV3IE1VTFRJTElCX0VYQ0xVU0lPTlMgb3B0aW9uCgl0byBwYXNzIHRvIGdlbm11bHRpbGliLgoKMjAwMC0wMy0wNiAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogYnVpbHRpbnMuYyAoYnVpbHRfaW5fY2xhc3NfbmFtZXMsIGJ1aWx0X2luX25hbWVzKTogQ29uc3RpZnkgYQoJY2hhciouCgoJKiBnbW9uLXNvbDIuYyAobW9uc3RhcnR1cCwgbW9uY29udHJvbCk6IENhc3QgcHRycyB0byBsb25nLCBub3QKCWludC4KCShfbWNsZWFudXApOiBFbnN1cmUgdmFsdWUgbWF0Y2hlcyBmb3JtYXQgc3BlY2lmaWVyIGluIHNwcmludGYuCgoJKiBjcHBoYXNoLmMgKHNwZWNpYWxfc3ltYm9sKTogRG9uJ3QgbmVlZGxlc3NseSBjYXN0IGF3YXkKCWNvbnN0LW5lc3MuCgoJKiBjcHBpbml0LmMgKGJhc2VfbmFtZSk6IERlbGV0ZSB1bnVzZWQgcHJvdG90eXBlLgoKCSogbWtkZXBzLmMgKGRlcHNfaW5pdCk6IE1ha2UgZGVmaW5pdGlvbiBLJlIgc2FmZS4KCgkqIHRyZWUuaCAoYnVpbHRfaW5fY2xhc3NfbmFtZXMsIGJ1aWx0X2luX25hbWVzKTogQ29uc3RpZnkgYQoJY2hhciouCgoyMDAwLTAzLTA2ICBKYWt1YiBKZWxpbmVrICA8amFrdWJAcmVkaGF0LmNvbT4KCgkqIGNvbmZpZy9zcGFyYy9zcGFyYy5jIChlbGlnaWJsZV9mb3JfZXBpbG9ndWVfZGVsYXkpOiBBY2NlcHQKCWZsb2F0aW5nIHBvaW50IGluc3RydWN0aW9ucyBmb3IgZXBpbG9ndWUgZGVsYXkuCgoJKiBjb25maWcvc3BhcmMvc3BhcmMuaCAoQVNNX0FSQ0g2NF9TUEVDKTogUGFzcyAtbm8tdW5kZWNsYXJlZC1yZWdzCgl0byBnYXMgaWYgaXQgc3VwcG9ydHMgLnJlZ2lzdGVyIHBzZXVkby4KCgkqIHJlYWwuaCAoTUFYX0xPTkdfRE9VQkxFX1RZUEVfU0laRSk6IERlZmluZSB0bwoJTE9OR19ET1VCTEVfVFlQRV9TSVpFIGlmIG5vdCBkZWZpbmVkLgoJVXNlIE1BWF9MT05HX0RPVUJMRV9UWVBFX1NJWkUgaW5zdGVhZCBvZgoJTE9OR19ET1VCTEVfVFlQRV9TSVpFIGluIHByZXByb2Nlc3NvciBpZiBjbGF1c2VzLgoJKiByZWFsLmM6IExpa2V3aXNlLgoJKiBnZW5nZW5ydGwuYzogTGlrZXdpc2UuCgkqIHByaW50LXJ0bC5jOiBMaWtld2lzZS4KCSogcnRsLmM6IExpa2V3aXNlLgoJKiBjb25maWcvc3BhcmMvc29sMi1zbGQtNjQuaCAoVEFSR0VUX0RFRkFVTFQpOiBTZXQKCU1BU0tfTE9OR19ET1VCTEVfMTI4LgoJKiBjb25maWcvc3BhcmMvc29sMi5oIChUQVJHRVRfREVGQVVMVCk6IExpa2V3aXNlLgoJKiBjb25maWcvc3BhcmMvc3A2NC1lbGYuaCAoVEFSR0VUX0RFRkFVTFQpOiBMaWtld2lzZS4KCSogY29uZmlnL3NwYXJjL2xpbnV4NjQgKFRBUkdFVF9ERUZBVUxUKTogTGlrZXdpc2UuCgkoU1VCVEFSR0VUX1NXSVRDSEVTKTogRGVmaW5lLgoJKENQUF9BUkNIMzJfU1BFQyk6IERlZmluZSBfX0xPTkdfRE9VQkxFXzEyOF9fIGlmIGNvbXBpbGluZwoJd2l0aCAtbWxvbmctZG91YmxlLTEyOC4KCShMT05HX0RPVUJMRV9UWVBFX1NJWkUpOiBEZWZpbmUgZGVwZW5kaW5nIG9uIHRhcmdldF9mbGFncy4KCShNQVhfTE9OR19ET1VCTEVfVFlQRV9TSVpFKTogRGVmaW5lLgoJKExJQkdDQzJfTE9OR19ET1VCTEVfVFlQRV9TSVpFKTogRGVmaW5lIGRlcGVuZGluZyBvbiBDUFAgbWFjcm9zLgoJKENDMV9TUEVDKTogSW5jbHVkZSAtbWxvbmctZG91YmxlLXs2NCwxMjh9IGFzIG5lZWRlZC4KCSogY29uZmlnL3NwYXJjL2xpbnV4LmggKFNVQlRBUkdFVF9TV0lUQ0hFUyk6IERlZmluZS4KCShDUFBfU1VCVEFSR0VUX1NQRUMpOiBEZWZpbmUgX19MT05HX0RPVUJMRV8xMjhfXyBpZiBjb21waWxpbmcKCXdpdGggLW1sb25nLWRvdWJsZS0xMjguCgkoTE9OR19ET1VCTEVfVFlQRV9TSVpFKTogRGVmaW5lIGRlcGVuZGluZyBvbiB0YXJnZXRfZmxhZ3MuCgkoTUFYX0xPTkdfRE9VQkxFX1RZUEVfU0laRSk6IERlZmluZS4KCShMSUJHQ0MyX0xPTkdfRE9VQkxFX1RZUEVfU0laRSk6IERlZmluZSBkZXBlbmRpbmcgb24gQ1BQIG1hY3Jvcy4KCSogY29uZmlnL3NwYXJjL3NwYXJjLmggKE1BU0tfTE9OR19ET1VCTEVfMTI4LAoJVEFSR0VUX0xPTkdfRE9VQkxFXzEyOCk6IERlZmluZS4KCSogY29uZmlnL3NwYXJjL2xpbnV4LWFvdXQuaCAoTE9OR19ET1VCTEVfVFlQRV9TSVpFKTogUmVtb3ZlLgoJKiBjb25maWcvc3BhcmMvc3BhcmMuYyAoc3BhcmNfb3ZlcnJpZGVfb3B0aW9ucyk6IERpc2FsbG93IDY0Yml0Cglsb25nIGRvdWJsZSBvbiBUQVJHRVRfQVJDSDY0LgoKMjAwMC0wMy0wNiAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGZ1bmN0aW9uLmMgKGZyZWVfdGVtcHNfZm9yX3J0bF9leHByKTogRG9uJ3QgZnJlZSBzbG90cwoJdGhhdCBoYXZlIGJlZW4gcHVzaGVkIGludG8gYSBoaWdoZXIgbGV2ZWwuCgoJUmV2ZXJ0IHRoaXMgcGF0Y2g6CgkyMDAwLTAzLTA1ICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKMjAwMC0wMy0wNSAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGJhc2ljLWJsb2NrLmggKEFMTE9DQV9SRUdfU0VUKTogUmVtb3ZlLgoJKElOSVRJQUxJWkVfUkVHX1NFVCk6IE5ldyBtYWNyby4KCSogZmxvdy5jICh1cGRhdGVfbGlmZV9pbmZvKTogVXNlIGl0LgoJKGNhbGN1bGF0ZV9nbG9iYWxfcmVnc19saXZlKTogTGlrZXdpc2UuCgkocHJvcGFnYXRlX2Jsb2NrKTogTGlrZXdpc2UuCgkqIGdsb2JhbC5jIChidWlsZF9pbnNuX2NoYWluKTogTGlrZXdpc2UuCgkqIGhhaWZhLXNjaGVkLmMgKHNjaGVkdWxlX3JlZ2lvbik6IExpa2V3aXNlLgoKMjAwMC0wMy0wNSAgU3RlcGhhbmUgQ2FycmV6ICA8c3RjYXJyZXpAd29ybGRuZXQuZnI+CgoJKiBkd2FyZjJvdXQuYyAoVU5BTElHTkVEX1dPUkRfQVNNX09QKTogU3VwcG9ydCAyIGJ5dGVzIHBvaW50ZXIuCgkoQVNNX09VVFBVVF9EV0FSRl9BRERSX0NPTlNUKTogVXNlIFVOQUxJR05FRF9XT1JEX0FTTV9PUC4KCShEV0FSRl9BUkFOR0VTX1BBRF9TSVpFKTogTmV3IGRlZmluZS4KCShvdXRwdXRfYXJhbmdlcyk6IFVzZSBpdCB0byBwYWQgdGhlIGFkZHJlc3MgcmFuZ2UgaGVhZGVyLgoJKERXQVJGX1JPVU5EKTogRml4IGZvciBub24gcG93ZXIgb2YgMiByb3VuZGluZy4KCjIwMDAtMDMtMDUgIEphc29uIE1lcnJpbGwgIDxqYXNvbkBjYXNleS5jeWdudXMuY29tPgoKCSogbWtkZXBzLmMgKGRlcHNfY2FsY190YXJnZXQpOiBSZW1vdmUgaW5jb3JyZWN0ICdjb25zdCcuCgoyMDAwLTAzLTA1ICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogdHJlZS5kZWYgKFJUTF9FWFBSKTogVXBkYXRlIGRvY3VtZW50YXRpb24uCgkqIHRyZWUuaCAoUlRMX0VYUFJfSEFTX05PX1NDT1BFKTogTmV3IG1hY3JvLgoJKiBleHByLmMgKGV4cGFuZF9leHByKTogSGFuZGxlIFJUTF9FWFBSX0hBU19OT19TQ09QRS4KCSogZnVuY3Rpb24uYyAocHJlc2VydmVfcnRsX2V4cHJfdGVtcCk6IE5ldyBmdW5jdGlvbi4KCShwcmVzZXJ2ZV9ydGxfZXhwcl90ZW1wcyk6IExpa2V3aXNlLgoJKHByZXNlcnZlX3J0bF9leHByX3Jlc3VsdCk6IFVzZSBpdC4KCglSZXZlcnQgdGhpcyBwYXRjaDoKCTIwMDAtMDMtMDQgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoyMDAwLTAzLTA0ICBUaG9tYXMgU2NodXN0ZXIgPFRob21hcy5TY2h1c3RlckBnbXgubmV0PgoKCSogcmVnbW92ZS5jIChjb3B5X3NyY190b19kZXN0KSAgRG8gbm90IGNyZWF0ZSBzcmMtPmRlc3QgbW92ZQoJZm9yIHVuY2hhbmdpbmcgZGVzdGluYXRpb24uCgoyMDAwLTAzLTA0ICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogZnVuY3Rpb24uaCAoc3RydWN0IHNlcXVlbmNlX3N0YWNrKTogUmVtb3ZlIHJ0bF9leHByLgoJKHN0cnVjdCBlbWl0X3N0YXVzKTogTGlrZXdpc2UuCgkoc2VxX3J0bF9leHByKTogUmVtb3ZlLgoJKiB0cmVlLmggKGZyZWVfdGVtcHNfZm9yX3J0bF9leHByKTogRG9uJ3QgZGVjbGFyZS4KCShzdGFydF9zZXF1ZW5jZV9mb3JfcnRsX2V4cHIpOiBMaWtld2lzZS4KCSogcnRsLmggKHByZXNlcnZlX3J0bF9leHByX3Jlc3VsdCk6IExpa2V3aXNlLgoJKiBlbWl0LXJ0bC5jIChzdGFydF9zZXF1ZW5jZSk6IERvbid0IHNldCBzZXF1ZW5jZV9ydGxfZXhwci4KCShzdGFydF9zZXF1ZW5jZV9mb3JfcnRsX2V4cHIpOiBSZW1vdmUuCgkocHVzaF90b3Btb3N0X3NlcXVlbmNlKTogRG9uJ3Qgc2F2ZSBzZXF1ZW5jZV9ydGxfZXhwci4KCShwb3BfdG9wbW9zdF9zZXF1ZW5jZSk6IFJlbW92ZSBjb21tZW50IGFib3V0IG5vdCByZXN0b3JpbmcgaXQuCgkoZW5kX3NlcXVlbmNlKTogRG9uJ3Qgc2V0IHNlcV9ydGxfZXhwci4KCShpbml0X2VtaXQpOiBEb24ndCBpbml0aWFsaXplIGl0LgoJKG1hcmtfc2VxdWVuY2Vfc3RhY2spOiBEb24ndCBtYXJrIGl0LgoJKG1hcmtfZW1pdF9zdGF0dXMpOiBMaWtld2lzZS4KCSogZXhjZXB0LmMgKHByb3RlY3Rfd2l0aF90ZXJtaW5hdGUpOiBVc2UKCXN0YXJ0X3NlcXVlbmNlX2Zvcl9ydGxfZXhwciwgbm90IHN0YXJ0X3NlcXVlbmNlLgoJKiBleHByLmMgKGV4cGFuZF9leHByLCBjYXNlIFJUTF9FWFBSKTogRG9uJ3QgY2FsbAoJcHJlc2VydmVfcnRsX2V4cHJfcmVzdWx0IG9yIGZyZWVfdGVtcHNfZm9yX3J0bF9leHByLgoJKiBmdW5jdGlvbi5jIChhc3NpZ25fc3RhY2tfdGVtcF9mb3JfdHlwZSk6IERvbid0IHNldCBydGxfZXhwci4KCShwcmVzZXJ2ZV9ydGxfZXhwcl9yZXN1bHQpOiBSZW1vdmUuCgkoZnJlZV90ZW1wc19mb3JfcnRsX2V4cHIpOiBMaWtld2lzZS4KCShwb3BfdGVtcF9zbG90cyk6IExpa2V3aXNlLgoJKG1hcmtfdGVtcF9zbG90KTogRG9uJ3QgbWFyayB0aGUgcnRsX2V4cHIuCgkqIHN0bXQuYyAoZXhwYW5kX3N0YXJ0X3N0bXRfZXhwcik6IFVzZSBzdGFydF9zZXF1ZW5jZSwgbm90CglzdGFydF9zZXF1ZW5jZV9mb3JfcnRsX2V4cHIuCgoyMDAwLTAzLTA0ICBaYWNrIFdlaW5iZXJnICA8emFja0B3b2xlcnkuY3VtYi5vcmc+CgoJKiBta2RlcHMuYywgbWtkZXBzLmg6IE5ldyBmaWxlcy4KCSogcG8vUE9URklMRVMuaW46IEFkZCB0aGVtLgoJKiBNYWtlZmlsZS5pbiAoTElCQ1BQX09CSlMpOiBBZGQgbWtkZXBzLm8uCgkoY3BwbGliLm8sIGNwcGluaXQubyk6IERlcGVuZCBvbiBta2RlcHMuaC4KCShta2RlcHMubyk6IE5ldyB0YXJnZXQuCgoJKiBjcHBmaWxlcy5jOiBEZWxldGUgZGVwc19vdXRwdXQuCgkqIGNwcGluaXQuYzogSW5jbHVkZSBta2RlcHMuaC4gIERlbGV0ZSBrbm93bl9zdWZmaXhlcywKCU9CSkVDVF9TVUZGSVgsIGFuZCBiYXNlX25hbWUuCgkoY3BwX2NsZWFudXApOiBVc2UgZGVwc19mcmVlLiAgRnJlZSBpaGFzaC0+bmFtZSB3aGVuIGNsZWFyaW5nCgl0aGUgaW5jbHVkZSBoYXNoLgoJKGluaXRpYWxpemVfZGVwZW5kZW5jeV9vdXRwdXQpOiBVc2UgZGVwc19pbml0LAoJZGVwc19hZGRfdGFyZ2V0LCBkZXBzX2NhbGNfdGFyZ2V0LCBhbmQgZGVwc19hZGRfZGVwLiAgUmVtb3ZlCglhbGwgdGhlIHVubmVjZXNzYXJ5IHN0cmluZyBiYXNoaW5nLgoJKGNwcF9maW5pc2gpOiBVc2UgZGVwc193cml0ZS4gIFJlbW92ZSBhbiB1bm5lY2Vzc2FyeSBuZXN0aW5nCglsZXZlbC4KCSogY3BwbGliLmMgKGRvX2luY2x1ZGUpOiBVc2UgZGVwc19hZGRfZGVwLgoJKiBjcHBsaWIuaCAoc3RydWN0IGNwcF9yZWFkZXIpOiBSZXBsYWNlIGRlcHNfYnVmZmVyLAoJZGVwc19hbGxvY2F0ZWRfc2l6ZSwgZGVwc19zaXplLCBkZXBzX2NvbHVtbiBtZW1iZXJzIHdpdGgKCXNpbmdsZSBwb2ludGVyIHRvIGEgc3RydWN0IGRlcHMuICBEZWxldGUgcHJvdG90eXBlIG9mCglkZXBzX291dHB1dC4KCgkqIGNwcGluaXQuYzogRml4IHRoaW5rbyBpbiBwcmV2aW91cyBwYXRjaC4KClNhdCBNYXIgIDQgMTE6MzI6MzAgMjAwMCAgUmljaGFyZCBLZW5uZXIgIDxrZW5uZXJAdmxzaTEudWx0cmEubnl1LmVkdT4KCgkqIG1hY2htb2RlLmggKG1vZGVfZm9yX3NpemUsIHNtYWxsZXN0X21vZGVfZm9yX3NpemUpOiBTSVpFIG5vdyBzaWduZWQuCgkqIHN0b3ItbGF5b3V0LmMgKG1vZGVfZm9yX3NpemUsIHNtYWxsZXN0X21vZGVfZm9yX3NpemUpOiBMaWtld2lzZS4KCShtb2RlX2Zvcl9zaXplX3RyZWUpOiBOZXcgZnVuY3Rpb24uCgkobGF5b3V0X2RlY2wsIGxheW91dF90eXBlKTogQ2FsbCBpdCBhbmQgY2xlYW4gdXAgQkxLbW9kZSBjaGVja3MuCgkqIHRyZWUuaCAobW9kZV9mb3Jfc2l6ZV90cmVlKTogTmV3IGRlY2xhcmF0aW9uLgoKCSogdG9wbGV2LmMgKGRlYnVnX2lnbm9yZV9ibG9jayk6IE1hcmsgYXJnIEJMT0NLIGFzIHBvc3NpYmx5IHVudXNlZC4KCjIwMDAtMDMtMDQgIEphc29uIE1lcnJpbGwgIDxqYXNvbkBjYXNleS5jeWdudXMuY29tPgoKCSogc3RtdC5jIChpc19ib2R5X2Jsb2NrKTogTW92ZS4uLgoJKiBkd2FyZm91dC5jLCBkd2FyZjJvdXQuYzogLi4uZnJvbSBoZXJlLgoJKiB0cmVlLmg6IERlY2xhcmUgaXQuCgkqIGVtaXQtcnRsLmMgKHJlbW92ZV91bm5lY2Vzc2FyeV9ub3Rlcyk6IERvbid0IHJlbW92ZSB0aGUgYm9keSBibG9jay4KCSogZmluYWwuYyAoZmluYWxfc3RhcnRfZnVuY3Rpb24pOiBEbyBjYWxsIHJlbW92ZV91bm5lY2Vzc2FyeV9ub3RlcwoJd2hlbiBzY2hlZHVsaW5nLgoKMjAwMC0wMy0wMyAgWmFjayBXZWluYmVyZyAgPHphY2tAd29sZXJ5LmN1bWIub3JnPgoKCSogY29uZmlnL3ZheC94bS12bXMuaDogRGVmaW5lIE9CSkVDVF9TVUZGSVggYW5kIEVYRUNVVEFCTEVfU1VGRklYLgoKCSogY3BwbGliLmggKF9kb2xsYXJfb2spOiBOZXcgbWFjcm8uCgkoaXNfaWRjaGFyLCBpc19pZHN0YXJ0KTogVXNlIGl0LgoJKElTdGFibGUpOiBSZW5hbWUgdG8gX2NwcF9JU3RhYmxlLiAgRGVjbGFyZSBpdCBjb25zdCBpZgoJZ2NjID49Mi43IG9yIEM5OS4gIERlbGV0ZSBhbGwgcmVmZXJlbmNlcyB0byBGQUtFX0NPTlNULgoJKGlzX2lkY2hhciwgaXNfaWRzdGFydCwgaXNfbnVtY2hhciwgaXNfbnVtc3RhcnQsIGlzX2hzcGFjZSwKCWlzX3NwYWNlKTogVXBkYXRlIGZvciByZW5hbWVkIElTdGFibGUuCgoJKiBjcHBpbml0LmM6IERlbGV0ZSBhbGwgcmVmZXJlbmNlcyB0byBGQUtFX0NPTlNUIGFuZCBDQVQKCW1hY3Jvcy4gRGVmaW5lIGluaXRfSVN0YWJsZSBhcyBlbXB0eSBtYWNybyBpZiBnY2MgPj0yLjcgb3IKCUM5OS4gQ2hhbmdlIFRBQkxFKCkgdG8gSVNUQUJMRSBhbmQgaGFyZGNvZGUgbmFtZSBvZiB0YWJsZS4KCShjcHBfc3RhcnRfcmVhZCk6IERvbid0IGNoYW5nZSB0aGUgSVN0YWJsZSBiYXNlZCBvbgoJZG9sbGFyc19pbl9pZGVudC4KCgkqIGNwcGhhc2guYyAodW5zYWZlX2NoYXJzKTogQWRkIHBmaWxlIGFyZ3VtZW50LiAgQWxsIGNhbGxlcnMKCWNoYW5nZWQuICBIYW5kbGUgJyQnIGZvciBjaGFyMSBjb3JyZWN0bHkuCgkqIGNwcGxpYi5jIChjcHBfZ2V0X3Rva2VuKTogVXNlIGlzX251bWNoYXIgd2hlbiBwYXJzaW5nIG51bWJlcnMuCgoJKiBjcHBleHAuYyAodG9rZW50YWIyKTogTWFrZSBjb25zdC4KCShjcHBfbGV4KTogTWFrZSB0b2t0YWIgY29uc3QuCgkqIGNwcGluaXQuYyAoaW5jbHVkZV9kZWZhdWx0c19hcnJheSk6IE1ha2UgY29uc3QuCgkoaW5pdGlhbGl6ZV9zdGFuZGFyZF9pbmNsdWRlcyk6IE1ha2UgZGVmYXVsdF9pbmNsdWRlIGNvbnN0LgoKMjAwMC0wMy0wMyAgSmFzb24gTWVycmlsbCAgPGphc29uQGNhc2V5LmN5Z251cy5jb20+CgoJKiBkd2FyZjJvdXQuYyAoZHdhcmYyb3V0X2ZyYW1lX2RlYnVnKTogQWRkIGNhc3QgdG8gc2lsZW5jZSB3YXJuaW5nLgoJKGR3YXJmMm91dF9kZWNsKTogRnVuY3Rpb25zIGNhbiBub3cgaGF2ZSBERUNMX0lHTk9SRURfUC4KCShnZW5fZGVjbF9kaWUpOiBMaWtld2lzZS4KCSogZHdhcmZvdXQuYyAoZHdhcmZvdXRfZmlsZV9zY29wZV9kZWNsKTogTGlrZXdpc2UuCgkob3V0cHV0X2RlY2wpOiBMaWtld2lzZS4KCgkqIHZhcmFzbS5jIChtYWtlX2Z1bmN0aW9uX3J0bCk6IElmIHdlIGNoYW5nZSB0aGUgbmFtZSB1c2VkIGluIHRoZQoJcnRsLCB1cGRhdGUgREVDTF9BU1NFTUJMRVJfTkFNRSBhY2NvcmRpbmdseS4KCShtYWtlX2RlY2xfcnRsKTogTGlrZXdpc2UuCgoJKiB0b3BsZXYuYyAocmVzdF9vZl9jb21waWxhdGlvbik6IFR3ZWFrIGZvcm1hdHRpbmcuCgoJKiB0b3BsZXYuYyAocmVzdF9vZl9jb21waWxhdGlvbik6IGZpbmRfbG9vcF90cmVlX2Jsb2NrcyBiZWZvcmUKCXJlbW92ZV91bm5lY2Vzc2FyeV9ub3Rlcy4KCShkZWJ1Z19pZ25vcmVfYmxvY2spOiBOZXcgZm4uCgkqIHRvcGxldi5oOiBEZWNsYXJlIGl0LgoJKiBlbWl0LXJ0bC5jIChyZW1vdmVfdW5uZWNlc3Nhcnlfbm90ZXMpOiBDYWxsIGl0LgoJKiBkd2FyZjJvdXQuYyAoZHdhcmYyb3V0X2lnbm9yZV9ibG9jayk6IE5ldyBmbi4KCSogZHdhcmYyb3V0Lmg6IERlY2xhcmUgaXQuCgkqIGZpbmFsLmMgKGZpbmFsX3N0YXJ0X2Z1bmN0aW9uKTogRG9uJ3QgY2FsbCByZW1vdmVfdW5uZWNlc3Nhcnlfbm90ZXMKCWlmIHdlIGRpZCBpbnNuIHNjaGVkdWxpbmcuCgoyMDAwLTAzLTAzICBaYWNrIFdlaW5iZXJnICA8emFja0B3b2xlcnkuY3VtYi5vcmc+CgoJKiBjcHBpbml0LmMgKGNwcF9oYW5kbGVfb3B0aW9uKTogU2V0IG9wdHMtPnBlZGFudGljIGRpcmVjdGx5LgoJKiBjcHBsaWIuaDogRGVsZXRlIFNFVF9DUFBfUEVEQU5USUMuCgpGcmkgTWFyICAzIDE0OjU2OjEyIDIwMDAgIFJpY2hhcmQgS2VubmVyICA8a2VubmVyQHZsc2kxLnVsdHJhLm55dS5lZHU+CgoJKiBleHByLmMgKGV4cGFuZF9leHByLCBjYXNlIENPTVBPTkVOVF9SRUYpOiBVc2UgYml0ZmllbGQgY2FzZSBpZgoJcmVzdWx0IGlzIGEgUkVDT1JEX1RZUEUuCgoyMDAwLTAzLTAzICBKb25hdGhhbiBMYXJtb3VyICA8amxhcm1vdXJAY3lnbnVzLmNvLnVrPgoKCSogbWlwcy9lbGYuaCAoQ1RPUl9MSVNUU19ERUZJTkVEX0VYVEVSTkFMTFkpOiBBZGRlZC4KCjIwMDAtMDMtMDMgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgoJKiBhbHBoYS5jIChhbHBoYV9lbWl0X3NldF9jb25zdF8xKTogUmUtb3JkZXIgY2FzZXMgdG8gcHJlZmVyCglhZGRpdGlvbiBvdmVyIGNvbXBsaW1lbnRzIG92ZXIgc2hpZnRzLgoKRnJpIE1hciAgMyAxMjo0OToyOCAyMDAwICBKIm9ybiBSZW5uZWNrZSA8YW15bGFhckBjeWdudXMuY28udWs+CgoJKiByZWxvYWQxLmMgKHJlbG9hZF9jb21iaW5lX25vdGVfdXNlKTogSGFuZGxlIHJldHVybiByZWdpc3RlciBVU0VzLgoJUkVHIGNhc2U6IEhhbmRsZSBtdWx0aS1oYXJkLXJlZ2lzdGVyIGhhcmQgcmVncy4KCkZyaSBNYXIgIDMgMDc6Mzg6MzQgMjAwMCAgUmljaGFyZCBLZW5uZXIgIDxrZW5uZXJAdmxzaTEudWx0cmEubnl1LmVkdT4KCgkqIG1kLnRleGk6IERvY3VtZW50IHVzZSBvZiAnKicgaW4gaW5zbiBwYXR0ZXJuIG5hbWUuCgoyMDAwLTAzLTAzICBKYXNvbiBNZXJyaWxsICA8amFzb25AY2FzZXkuY3lnbnVzLmNvbT4KCgkqIGNhbGxzLmMgKHNwZWNpYWxfZnVuY3Rpb25fcCk6IG9wZXJhdG9yIG5ldyBtYXkgbm90IGJlIG1hbGxvYy1saWtlLgoKCSogZ2NzZS5jIChkdW1wX2hhc2hfdGFibGUpOiBSZWFsbHkgZml4IGVycm9yIGluIGxhc3QgY2hhbmdlLgoKMjAwMC0wMy0wMiAgRGVuaXMgQ2hlcnR5a292ICA8ZGVuaXNjQG92ZXJ0YS5ydT4KCgkqIGF2ci5jIChwcmludF9vcGVyYW5kKTogVXNlIHByaW50X29wZXJhbmRfYWRkcmVzcyBpbnN0ZWFkIG9mCglvdXRwdXRfYWRkcl9jb25zdC4KCSogYXZyL2xpYmdjYy5TOiBDbGVhbnVwIGNvZGUuCgoyMDAwLTAzLTAyICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEBjeWdudXMuY29tPgoKCSogYWxwaGEuYyAoYWxwaGFfZW1pdF9zZXRfY29uc3RfMSk6IEFsc28gdHJ5IGMgKyBzbWFsbCBjb25zdGFudC4KCjIwMDAtMDMtMDIgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiB0cmVlLmggKFRZUEVfQUxJR05fVU5JVCk6IE5ldyBtYWNyby4KCjIwMDAtMDMtMDIgIENsaW50b24gUG9wZXR6ICA8Y3BvcGV0ekBjeWdudXMuY29tPgoKCSogaTM4Ni5jOiAoY29uc3RhbnRfY2FsbF9hZGRyZXNzX29wZXJhbmQpOiBSZWplY3QgQ09OU1RfSU5ULgoKMjAwMC0wMy0wMiAgSmFzb24gTWVycmlsbCAgPGphc29uQGNhc2V5LmN5Z251cy5jb20+CgoJKiBjcHBsaWIuaCAoQ1BQX1BFREFOVElDKTogT25seSB0cnVlIGlmIHN5c3RlbV9oZWFkZXJfcCBpcyBub3Qgc2V0Cglmb3IgdGhlIGJ1ZmZlci4KCShTRVRfQ1BQX1BFREFOVElDKTogTmV3IG1hY3JvLgoJKiBjcHBsaWIuYyAoZG9faW5jbHVkZSk6IERvbid0IGJvdGhlciBjaGVja2luZyBzeXN0ZW1faGVhZGVyX3AuCgkoZG9fd2FybmluZywgZG9faWRlbnQsIGRvX2Fzc2VydCwgZG9fdW5hc3NlcnQpOiBMaWtld2lzZS4KCSogY3BwaW5pdC5jIChjcHBfaGFuZGxlX29wdGlvbik6IFVzZSBTRVRfQ1BQX1BFREFOVElDLgoKCSogZnVuY3Rpb24uaCAoc3RydWN0IGV4cHJfc3RhdHVzKTogQWRkIHhfYXJnX3NwYWNlX3NvX2Zhci4KCShhcmdfc3BhY2Vfc29fZmFyKTogTmV3IG1hY3JvLgoJKiBleHByLmMgKGluaXRfZXhwcik6IEluaXRpYWxpemUgaXQuCgkqIGNhbGxzLmMgKGVtaXRfY2FsbF8xKTogUmVzZXQgaXQuCgkoY29tcHV0ZV9hcmd1bWVudF9ibG9ja19zaXplLCBleHBhbmRfY2FsbCk6IFVzZSBpdC4KCShleHBhbmRfY2FsbCwgc3RvcmVfb25lX2FyZyk6IEluY3JlbWVudCBpdC4KClRodSBNYXIgIDIgMTc6Mjc6MTMgMjAwMCAgUmljaGFyZCBLZW5uZXIgIDxrZW5uZXJAdmxzaTEudWx0cmEubnl1LmVkdT4KCgkqIHZhcmFzbS5jIChvdXRwdXRfY29uc3RhbnQpOiBTdHJpcCBvZmYgYSBDT05WRVJUX0VYUFIgdG8KCWEgVU5JT05fVFlQRS4KCjIwMDAtMDMtMDIgIFphY2sgV2VpbmJlcmcgIDx6YWNrQHdvbGVyeS5jdW1iLm9yZz4KCgkqIGNwcGZpbGVzLmMgKGNwcF9yZWFkX2ZpbGUpOiBOZXcgZnVuY3Rpb24uCgoJKiBjcHBoYXNoLmMgKGNvbGxlY3RfZXhwYW5zaW9uKTogTWFrZSBzdXJlIHRvIHJlc2V0IGxhc3RfdG9rZW4KCXRvIE5PUk0gd2hlbiB3ZSBoaXQgYSBzdHJpbmcuICBIYW5kbGUgdHJhaWxpbmcgd2hpdGVzcGFjZQoJcHJvcGVybHkgd2hlbiB0aGUgZXhwYW5zaW9uIGlzIGVtcHR5LgoJKGNyZWF0ZV9kZWZpbml0aW9uKTogRGlzYWJsZSBsaW5lIGNvbW1hbmRzIHdoaWxlIHBhcnNpbmcgdGhlCglkaXJlY3RpdmUgbGluZS4KCShkdW1wX2RlZmluaXRpb24pOiBJZiBwZmlsZS0+bGluZW5vID09IDAsIG91dHB1dCBhIGxpbmUKCWNvbW1hbmQgYWhlYWQgb2YgdGhlIGR1bXAsIGFuZCBhZGQgYSB0cmFpbGluZyBuZXdsaW5lLgoKCSogY3BwaW5pdC5jIChhcHBlbmRfaW5jbHVkZV9jaGFpbik6IEFkZCBmaWZ0aCBhcmd1bWVudCwgd2hpY2gKCWluZGljYXRlcyB3aGV0aGVyIG9yIG5vdCBzeXN0ZW0gaGVhZGVycyBhcmUgQysrIGF3YXJlLgoJKGluaXRpYWxpemVfc3RhbmRhcmRfaW5jbHVkZXMpOiBOZXcgZnVuY3Rpb24sCglicm9rZW4gb3V0IG9mIHJlYWRfYW5kX3ByZXNjYW4uICBQYXNzICdjeHhfYXdhcmUnIHZhbHVlIGZyb20KCXRoZSBpbmNsdWRlX2RlZmF1bHRzX2FycmF5IG9uIHRvIGFwcGVuZF9pbmNsdWRlX2NoYWluLgoJKGR1bXBfc3BlY2lhbF90b19idWZmZXIpOiBDb25zdC1pZnkgY2hhciBhcnJheS4KCShidWlsdGluX2FycmF5KTogRG9uJ3QgZHVtcCBfX0JBU0VfRklMRV9fLgoJKGNwcF9zdGFydF9yZWFkKTogVXNlIGNwcF9yZWFkX2ZpbGUuICBSZW9yZGVyIGNvZGUgZm9yCgljbGFyaXR5LiAgRG9uJ3Qgb3V0cHV0IGxpbmUgY29tbWFuZHMgaGVyZSBmb3IgLUQvLUEvLVUKCXN3aXRjaGVzLiAgRG9uJ3QgY2FsbCBkZXBzX291dHB1dCBmb3IgZmlsZXMgaW5jbHVkZWQgd2l0aAoJLWluY2x1ZGUgb3IgLWltYWNyb3MuCgoJKiBjcHBsaWIuYyAoZG9fZGVmaW5lKTogRG9uJ3QgcGF5IGFueSBhdHRlbnRpb24gdG8gdGhlIHNlY29uZAoJYXJndW1lbnQuCgkoY3BwX2V4cGFuZF90b19idWZmZXIpOiBEaXNhYmxlIGxpbmUgY29tbWFuZHMgd2hpbGUgc2Nhbm5pbmcuCgkob3V0cHV0X2xpbmVfY29tbWFuZCk6IFdvcmsgaW4gdGhlIGZpbGUgYnVmZmVyLgoJKiBjcHBsaWIuaDogUmVtb3ZlIG5vX3JlY29yZF9maWxlIGZsYWcgZnJvbSBzdHJ1Y3QgY3BwX3JlYWRlci4KCUZpeCBmb3JtYXR0aW5nIG9mIGNvbW1lbnRzLiAgUHJvdG90eXBlIGNwcF9yZWFkX2ZpbGUuCgpUaHUgTWFyICAyIDEzOjI5OjQ2IDIwMDAgIFJpY2hhcmQgS2VubmVyICA8a2VubmVyQHZsc2kxLnVsdHJhLm55dS5lZHU+CgoJKiBjLWNvbW1vbi5jIChjX2NvbW1vbl9ub2Rlc19hbmRfYnVpbHRpbnMpOiBNYWtlIHNpemV0eXBlX2VuZGxpbmsKCXJlZmVyZW5jZSB0aGUgbGFuZ3VhZ2UtZXF1aXZhbGVudCBvZiBzaXpldHlwZS4KCSogYy10eXBlY2suYyAoY29tcHR5cGVzKTogVHJlYXQgc2l6ZXR5cGUgbGlrZSBpdHMgbGFuZ3VhZ2UgZXF1aXZhbGVudC4KCSogZm9sZC1jb25zdC5jIChzaXplX2Jpbm9wLCBzaXplX2RpZmZvcCk6IFB1dCBiYWNrIGNoZWNrcy4KCSogZ2NzZS5jIChkdW1wX2hhc2hfdGFibGUpOiBGaXggbWlub3IgZXJyb3IgaW4gbGFzdCBjaGFuZ2UuCgkqIHN0b3ItbGF5b3V0LmMgKHNldF9zaXpldHlwZSk6IFNldCBUWVBFX0RPTUFJTiBvZiBzaXpldHlwZS4KCUNsZWFyIFRZUEVfe05FWFQsTUFJTn1fVkFSSUFOVCBhbmQgVFlQRV97UE9JTlRFUixSRUZFUkVOQ0V9X3RvIG9mCglhbGwgc2l6ZXR5cGVzLgoKVGh1IE1hciAgMiAxMjo0ODo0NSBNRVQgMjAwMCAgSmFuIEh1Ymlja2EgIDxqaEBzdXNlLmN6PgoKCSogY2FsbHMuYyAoZXhwYW5kX2NhbGwpICBEbyBub3QgYXR0ZW1wdCB0byBjb21iaW5lIHN0YWNrIGFkanVzdG1lbnRzCgl3aXRoIGluaGliaXRfZGVmZXJfcG9wIHNldC4KCjIwMDAtMDMtMDEgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBzdG9yLWxheW91dC5jIChsYXlvdXRfZGVjbCk6IEFsbG93IGZyb250LWVuZHMgdG8gZXhwbGljaXRseSBzZXQKCXRoZSBERUNMX1NJWkUgZm9yIGEgRklFTERfREVDTC4KCjIwMDAtMDMtMDEgIEJydWNlIEtvcmIgIDxia29yYkBnbnUub3JnPgoKCSogZml4aW5jL2luY2xoYWNrLnRwbDogcmVtb3ZlIHVudXNlZCBzeW1saW5rcwoJKiBmaXhpbmMvUkVBRE1FOiBHQ0MgTWFpbnRhaW5lciBpbmZvCgkqIGZpeGluYy9pbmNsaGFjay5zaDogcmVnZW4KCSogZml4aW5jL2ZpeGluY2wuc2g6IHJlZ2VuCgoyMDAwLTAzLTAxICBaYWNrIFdlaW5iZXJnICA8emFja0B3b2xlcnkuY3VtYi5vcmc+CgoJKiBjcHBoYXNoLmMgKGNvbGxlY3RfZXhwYW5zaW9uKTogVHJpbSB0cmFpbGluZyB3aGl0ZSBzcGFjZQoJZnJvbSBtYWNybyBkZWZpbml0aW9ucywgYnV0IGRvbid0IGdvIHBhc3QgdGhlIGxhc3QgaW5zZXJ0aW9uCglwb2ludC4KCldlZCBNYXIgIDEgMTI6MTQ6MzEgTUVUIDIwMDAgIEphbiBIdWJpY2thICA8amhAc3VzZS5jej4KCgkqIGkzODYubWQgKG11bHFpMyk6IE5ldyBwYXR0ZXJuLgoKMjAwMC0wMi0yOSAgWmFjayBXZWluYmVyZyAgPHphY2tAd29sZXJ5LmN1bWIub3JnPgoKCSogY3BwbGliLmggKENQUF9BU1NFUlRJT04sIENQUF9TVFJJTkdJWkUsIENQUF9UT0tQQVNURSk6IE5ldwoJdG9rZW4gdHlwZXMuCgkoc3RydWN0IGNwcF9yZWFkZXIpOiBBZGQgcGFyc2luZ19pZl9kaXJlY3RpdmUgYW5kCglwYXJzaW5nX2RlZmluZV9kaXJlY3RpdmUgZmxhZ3MuCgkoc3RydWN0IGNwcF9vcHRpb25zKTogUmVtb3ZlIG91dHB1dF9jb25kaXRpb25hbHMgZmxhZy4KCShjaGVja19tYWNyb19uYW1lKTogRGVsZXRlIHByb3RvdHlwZS4KCgkqIGNwcGhhc2guaCAoc3RydWN0IG1hY3JvZGVmKTogRGVsZXRlLgoJKHN0cnVjdCByZWZsaXN0KTogU2VwYXJhdGUgZnJvbSBzdHJ1Y3QgZGVmaW5pdGlvbi4KCShzdHJ1Y3QgZGVmaW5pdGlvbik6IFJlbW92ZSB1bnVzZWQgZmllbGRzLiAgQWRkIGNvbHVtbiBudW1iZXIuCgkoY3JlYXRlX2RlZmluaXRpb24pOiBSZXR1cm5zIGEgREVGSU5JVElPTiAqLiAgVGFrZXMgYQoJY3BwX3JlYWRlciAqIGFuZCBhbiBpbnQuCgoJKiBjcHBoYXNoLmMgKFNLSVBfV0hJVEVfU1BBQ0UpOiBEZWxldGUuCgkoUEVFS0MpOiBDb3B5IGRlZm4gZnJvbSBjcHBsaWIuYy4KCShyZXN0X2V4dGVuc2lvbiwgUkVTVF9FWFRFTlNJT05fTEVOR1RIKTogRGVsZXRlLgoJKHN0cnVjdCBhcmcpOiBOZXcuCgkoc3RydWN0IGFyZ2xpc3QpOiBTaW1wbGlmeS4KCShjb2xsZWN0X2V4cGFuc2lvbik6IFJld3JpdGUuICBHZXQgdG9rZW5zIGJ5IGNhbGxpbmcKCWNwcF9nZXRfdG9rZW4uICBBZGQgbW9yZSBlcnJvciBjaGVja2luZy4KCShjb2xsZWN0X2Zvcm1hbF9wYXJhbWV0ZXJzKTogTmV3IGZ1bmN0aW9uLCBicm9rZW4gb3V0IG9mCgljcmVhdGVfZGVmaW5pdGlvbiBhbmQgcmV3b3JrZWQgdG8gdXNlIGdldF9kaXJlY3RpdmVfdG9rZW4uCgkoY3JlYXRlX2RlZmluaXRpb24pOiBBbGwgcmVhbCB3b3JrIGlzIG5vdyBpbiBjb2xsZWN0X2V4cGFuc2lvbgoJYW5kIGNvbGxlY3RfZm9ybWFsX3BhcmFtZXRlcnMuICBkb19kZWZpbmUgaGFuZGxlcyBmaW5kaW5nIHRoZQoJbWFjcm8gbmFtZS4gIFJldHVybiBhIERFRklOSVRJT04sIG5vdCBhIE1BQ1JPREVGLgoJKG1hY3JvZXhwYW5kKTogUmVwbGFjZSBiY29weSB3aXRoIG1lbWNweSB0aHJvdWdob3V0LiAgUmVwbGFjZQoJY2hhcmFjdGVyLWF0LWEtdGltZSBjb3B5IGxvb3Agd2l0aCBtZW1jcHkgYW5kIHBvaW50ZXIgaW5jcmVtZW50cy4KCShjb21wYXJlLWRlZnMpOiBkMS0+YXJnbmFtZXMgLyBkMi0+YXJnbmFtZXMgbWlnaHQgYmUgbnVsbC4KCgkqIGNwcGxpYi5jIChjb3B5X3Jlc3Rfb2ZfbGluZSk6IERlbGV0ZSBmdW5jdGlvbi4KCShza2lwX3Jlc3Rfb2ZfbGluZSk6IERvIGFsbCB0aGUgd29yayBvdXJzZWx2ZXMuCgkoc2tpcF9zdHJpbmcpOiBOZXcgZnVuY3Rpb24uCgkocGFyc2Vfc3RyaW5nKTogVXNlIHNraXBfc3RyaW5nLgoJKGdldF9tYWNyb19uYW1lKTogTmV3IGZ1bmN0aW9uLgoJKGNoZWNrX21hY3JvX25hbWUpOiBEZWxldGUuCgkoY29weV9jb21tZW50KTogVXNlIENQUF9SRVNFUlZFIGFuZCBDUFBfUFVUQ19RLgoJKGNwcF9za2lwX2hzcGFjZSk6IFVzZSBDUFBfQlVNUF9MSU5FLgoJKGhhbmRsZV9kaXJlY3RpdmUpOiBJQ0UgaWYgd2UncmUgY2FsbGVkIG9uIGEgbWFjcm8gYnVmZmVyLgoJKGRvX2RlZmluZSk6IERldGVybWluZSBtYWNybyBuYW1lIGFuZCB0eXBlIChmdW5saWtlL29iamxpa2UpCgloZXJlLiAgRXhwdW5nZSBhbGwgdXNlcyBvZiBNQUNST0RFRi4KCShjcHBfcHVzaF9idWZmZXIpOiBTZXQgbGluZV9iYXNlIHRvIE5VTEwuCgkoZG9fdW5kZWYsIHJlYWRfbGluZV9udW1iZXIpOiBEb24ndCB3b3JyeSBhYm91dCBnZXR0aW5nIGEgUE9QIHRva2VuLgoJKGV2YWxfaWZfZXhwcmVzc2lvbik6IFNldC9yZXNldCBwYXJzaW5nX2lmX2RpcmVjdGl2ZSBhcm91bmQKCWNwcF9wYXJzZV9leHByLiBEb24ndCBjbGVhciBvbmx5X3NlZW5fd2hpdGUuCgkoc2tpcF9pZl9ncm91cCk6IFJlbW92ZSBvdXRwdXRfY29uZGl0aW9uYWxzIGxvZ2ljLiAgVXNlCglza2lwX3Jlc3Rfb2ZfbGluZS4KCShjcHBfZ2V0X3Rva2VuKTogUmV0dXJuIEFTU0VSVElPTiwgU1RSSU5HSVpFLCBhbmQgVE9LUEFTVEUKCXRva2VucyB1bmRlciBhcHByb3ByaWF0ZSBjb25kaXRpb25zLgoJKGNwcF91bmFzc2VydCk6IENhbGwgZG9fdW5hc3NlcnQgbm90IGRvX2Fzc2VydC4gIE9vcHMuCgoJKiBjcHBleHAuYyAocGFyc2VfZGVmaW5lZCk6IE5ldyBmdW5jdGlvbiwgYnJlYWsgb3V0IG9mCgljcHBfbGV4LgoJKGNwcF9sZXgpOiBXZSBub3cgZ2V0IENQUF9BU1NFUlRJT04gdG9rZW5zIGFuZCBjYW4gY2hlY2sgdGhlbQoJb3Vyc2VsdmVzLCB3aXRoIGNwcF9kZWZpbmVkLgoJKiBjcHBpbml0LmMgKGNwcF9oYW5kbGVfb3B0aW9uLCBwcmludF9oZWxwKTogRGVsZXRlIC1pZm91dHB1dC4KCgkqIGdjYy5kZy8yMDAwMDIwOS0yLmM6IFR1cm4gb2ZmIC1wZWRhbnRpYy1lcnJvcnMuCgkqIGdjYy5kZy9zdHJwYXN0ZS0yLmM6IE5ldy4KCjIwMDAtMDItMjkgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBmb2xkLWNvbnN0LmMgKHNpemVfYmlub3ApOiBEb24ndCBhc2VydCBpbnB1dHMgYXJlIHRoZSBzYW1lIGFuZAoJaGF2ZSBUWVBFX0lTX1NJWkVUWVBFIHNldC4KCShzaXplX2RpZmZvcCk6IExpa2V3aXNlLgoKMjAwMC0wMi0yOSAgSmFzb24gTWVycmlsbCAgPGphc29uQGNhc2V5LmN5Z251cy5jb20+CgoJKiBkd2FyZm91dC5jIChvdXRwdXRfYmxvY2spOiBPdXRwdXQgYWJzdHJhY3QgYmxvY2tzIGV2ZW4gaWYgdGhleQoJZG9uJ3QgaGF2ZSBUUkVFX0FTTV9XUklUVEVOIHNldC4KCgkqIGNhbGxzLmMgKGVtaXRfbGlicmFyeV9jYWxsKTogQ2hlY2sgZm9yIG51bGwgUkVHLgoKMjAwMC0wMy0wMSAgTWFydGluIHZvbiBMb2V3aXMgIDxsb2V3aXNAaW5mb3JtYXRpay5odS1iZXJsaW4uZGU+CgoJKiBjLWRlY2wuYyAoY3VycmVudF9mdW5jdGlvbl9kZWNsKTogTW92ZSB0byB0b3BsZXYuYy4KCShpbml0X2RlY2xfcHJvY2Vzc2luZyk6IERvbid0IGFkZCBjdXJyZW50X2Z1bmN0aW9uX2RlY2wgYXMgYSBnZ2MKCXJvb3QgaGVyZS4KCSogZGJ4b3V0LmMgKGRieG91dF9zeW1ib2wpOiBDaGFuZ2UgcmV0dXJuIHR5cGUgdG8gaW50LgoJKGRieG91dF9zeW1ib2xfbG9jYXRpb24sIGRieG91dF9zeW1zKTogTGlrZXdpc2UuCgkoZGJ4b3V0X2Jsb2NrKTogRG9uJ3QgZW1pdCBMQlJBQy9SQlJBQyBwYWlycyBmb3IgYmxvY2tzIHdpdGhvdXQKCWFueSBsb2NhbHMuIFVzZSBjdXJyZW50X2Z1bmN0aW9uX2Z1bmNfYmVnaW5fbGFiZWwgaWYgc2V0LgoJKiBkYnhvdXQuaCAoZGJ4b3V0X3N5bWJvbCwgZGJ4b3V0X3N5bXMpOiBDaGFuZ2UgcmV0dXJuIHR5cGUuCgkqIGR3YXJmMm91dC5jIChkd2FyZjJvdXRfYmVnaW5fcHJvbG9ndWUpOiBTZXQKCWN1cnJlbnRfZnVuY3Rpb25fZnVuY19iZWdpbl9sYWJlbC4KCSogZmluYWwuYyAoZmluYWxfc3RhcnRfZnVuY3Rpb24pOiBSZXNldCBpdC4KCSogdG9wbGV2LmMgKGN1cnJlbnRfZnVuY3Rpb25fZGVjbCk6IERlZmluZSBpdCBoZXJlLgoJKGN1cnJlbnRfZnVuY3Rpb25fZnVuY19iZWdpbl9sYWJlbCk6IE5ldyB2YXJpYWJsZS4KCShtYWluKTogQWRkIGJvdGggYXMgZ2djIHJvb3RzLgoJKiB0cmVlLmggKGN1cnJlbnRfZnVuY3Rpb25fZnVuY19iZWdpbl9sYWJlbCk6IERlY2xhcmUuCgpUdWUgRmViIDI5IDE0OjA3OjA0IDIwMDAgIFJpY2hhcmQgS2VubmVyICA8a2VubmVyQHZsc2kxLnVsdHJhLm55dS5lZHU+CgoJKiBnY3NlLmM6IENsZWFudXBzIHRocm91Z2hvdXQ6IG1vc3RseSB3aGl0ZS1zcGFjZSwgYnV0IGFsc28KCXNvbWUgbWlub3IgcmVhcnJhbmdlbWVudCBvZiBjb2RlLgoKVHVlIEZlYiAyOSAxMDo0NTo1OSAyMDAwICBKZWZmcmV5IEEgTGF3ICAobGF3QGN5Z251cy5jb20pCgoJKiBjYWxscy5jIChlbWl0X2xpYnJhcnlfY2FsbCk6IERvIG5vdCBhYm9ydCBpZiBGVU5DVElPTl9BUkcKCXJldHVybnMgYSBQQVJBTExFTC4gIFVzZSBlbWl0X2dyb3VwX2xvYWQgYW5kIHVzZV9ncm91cF9yZWdzCglhcyBuZWVkZWQuCgkoZW1pdF9saWJyYXJ5X2NhbGxfdmFsdWUpOiBTaW1pbGFybHkuCgoJKiBwYS90LXBhOiBVc2UgcXVhZGxpYi5jIGluc3RlYWQgb2YgcXVhZGxpYi5hc20uCgkqIHBhL3F1YWRsaWIuYXNtOiBSZW1vdmUuCgkqIHBhL3F1YWRsaWIuYzogTmV3IGZpbGUuCgoJKiBjb25maWd1cmUuaW4gKGhwdXgxMCwgaHB1eDExLCBQQTMyIG1vZGUpOiBVc2UgaTEyOCBmbG9hdCBmb3JtYXQuCgkqIGNvbmZpZ3VyZTogUmVidWlsdC4KCjIwMDAtMDItMjkgIFBoaWxpcCBCbHVuZGVsbCAgPHBiQGZ1dHVyZXR2LmNvbT4KCgkqIGNvbmZpZy9hcm0vY29uaXgtZWxmLmg6IE5ldyBmaWxlLgoJKiBjb25maWd1cmUuaW4gKGFybSotKi1jb25peCopOiBOZXcgY29uZmlndXJhdGlvbi4KCSogY29uZmlndXJlOiBSZWdlbmVyYXRlLgoKMjAwMC0wMi0yOCAgSmFzb24gTWVycmlsbCAgPGphc29uQGNhc2V5LmN5Z251cy5jb20+CgoJKiBkd2FyZjJvdXQuYyAoZ2VuX2Jsb2NrX2RpZSk6IE91dHB1dCBhYnN0cmFjdCBibG9ja3MgZXZlbiBpZiB0aGV5Cglkb24ndCBoYXZlIFRSRUVfQVNNX1dSSVRURU4gc2V0LgoKTW9uIEZlYiAyOCAyMTowNzo1OSAyMDAwICBSaWNoYXJkIEtlbm5lciAgPGtlbm5lckB2bHNpMS51bHRyYS5ueXUuZWR1PgoKCSogRWxpbWluYXRlIERFQ0xfRklFTERfU0laRS4KCSogYnVpbHRpbnMuYyAoYnVpbHRfaW5fY2xhc3NfbmFtZXMsIGJ1aWx0X2luX25hbWVzKTogTmV3IHZhcmlhYmxlcy4KCSogYy1kZWNsLmMgKGZpbmlzaF9zdHJ1Y3QpOiBTZXQgc3BlY2lmaWVkIHNpemUgaW4gREVDTF9TSVpFLgoJKiBleHByLmMgKGV4cGFuZF9leHByLCBjYXNlIENPTVBPTkVOVF9SRUYpOiBHZXQgZmllbGQgc2l6ZSBmcm9tCglERUNMX1NJWkUsIG5vdCBERUNMX0ZJRUxEX1NJWkUuCgkqIHByaW50LXRyZWUuYyAocHJpbnRfbm9kZSk6IFJlbW92ZSBjb2RlIHRoYXQgcHJpbnRzIGV4dHJhIGJsYW5rCglsaW5lcyBpbiBzb21lIGNhc2VzLgoJUHJvcGVybHkgaGFuZGxlIGlubGluZSBhbmQgYnVpbHRpbiBmdW5jdGlvbiBjYXNlcy4KCSogc3Rvci1sYXlvdXQuYyAobGF5b3V0X2RlY2wpOiBHZXQgc3BlY2lmaWVkIHNpemUgZnJvbSBERUNfU0laRS4KCSogdHJlZS5oIChidWlsdF9pbl9jbGFzc19uYW1lZCwgYnVpbHRfaW5fbmFtZXMpOiBOZXcgZGVjbGFyYXRpb25zLgoJKHVuaW9uIHRyZWVfZGVjbCk6IFJlbmFtZSBpbnRlcm5hbCB1bmlvbnMgdG8gdTEgYW5kIHUyIGFuZCBjaGFuZ2UKCXNvbWUgb2YgdGhlaXIgY29tcG9uZW50cy4KCUFkZCBuZXcgZmllbGQgYnVpbHRfaW5fY2xhc3MuCgkoREVDTF9BTElHTiwgREVDTF9JTkNPTUlOR19SVEwsIERFQ0xfU0FWRURfSU5TTlMsIERFQ0xfRlJBTUVfU0laRSk6CglSZWZsZWN0IGFib3ZlIGNoYW5nZXMuCgkoREVDTF9GVU5DVElPTl9DT0RFLCBERUNMX0JVSUxUX0lOX0NMQVNTKTogTGlrZXdpc2UuCgkoREVDTF9TRVRfRlVOQ1RJT05fQ09ERSwgREVDTF9GSUVMRF9TSVpFKTogRGVsZXRlZC4KCSogb2JqYy9vYmpjLWFjdC5jIChvYmpjX2NvcHlfbGlzdCk6IFVzZSBERUNMX1NJWkUsIG5vdCBERUNMX0ZJRUxEX1NJWkUuCgkoZW5jb2RlX2ZpZWxkX2RlY2wpOiBMaWtld2lzZTsgYWxzbyByZW1vdmUgb2Jzb2xldGUgdGVzdCBmb3IgYml0ZmllbGQuCgoyMDAwLTAyLTI4ICBEbWl0cmkgTWFrYXJvdiAgPGRpbUB3aW5kcml2ZXIuY29tPgoKCSogZXh0ZW5kLnRleGk6IERvY3VtZW50IEFSTSdzIHN1cHBvcnQgZm9yIGxvbmcvc2hvcnQgY2FsbHMuCgoJKiBpbnZva2UudGV4aTogRG9jdW1lbnQgQVJNJ3MgLW1sb25nLWNhbGxzIGNvbW1hbmQgbGluZSBzd2l0Y2guCgoJKiBjb25maWcvYXJtL2FybS1wcm90b3MuaCAoYXJtX2lzX2xvbmdjYWxsX3ApOiBBZGQgcHJvdG90eXBlLgoJKGFybV9lbmNvZGVfY2FsbF9hdHRyaWJ1dGUpOiBBZGQgcHJvdG90eXBlLgoJKGFybV9zZXRfZGVmYXVsdF90eXBlX2F0dHJpYnV0ZSk6IEFkZCBwcm90b3R5cGUuCgkoYXJtX3N0cmlwX25hbWVfZW5jb2RpbmcpOiBBZGQgcHJvdG90eXBlLgoKCSogY29uZmlnL2FybS9hcm0uYyAoYXJtX2luaXRfY3VtdWxhdGl2ZV9hcmdzKTogcmVwbGFjZQoJaW5pdGlhbGlzYXRpb24gb2cgJ2xvbmdfY2FsbHMnIGZpZWxkIHdpdGggaW5pdGlhbGlzYXRpb24gb2YKCSdjYWxsX2Nvb2tpZScgZmllbGQuCgkoZW51bSBhcm1fcHJhZ21hX2VudW0pOiBOZXcgZW51bS4KCShhcm1fcHJhZ21hX2xvbmdfY2FsbHMpOiBOZXcgc3RhdGljIHZhcmlhYmxlLgoJKGFybV9wcm9jZXNzX3ByYWdtYSk6IEFsc28gcHJvY2VzcyAiI3ByYWdtYSBsb25nX2NhbGxzX29mZiIuCgkoYXJtX3ZhbGlkX3R5cGVfYXR0cmlidXRlX3ApOiBBY2NlcHQgc2hvcnRfY2FsbCBhdHRyaWJ1dGUuCgkoYXJtX2NvbXBfdHlwZV9hdHRyaWJ1dGVzKTogQ2hlY2sgbG9uZy9zaG9ydCBjYWxsIGF0dHJpYnV0ZXMuCgkoYXJtX2VuY29kZV9jYWxsX2F0dHJpYnV0ZSk6ICBOZXcgZnVuY3Rpb246ICBFbmNvZGUgbG9uZ19jYWxsCglvciBzaG9ydF9jYWxsIGF0dHJpYnV0ZSBpbiBmdW5jdGlvbiBuYW1lLgoJKGFybV9zZXRfZGVmYXVsdF90eXBlX2F0dHJpYnV0ZXMpOiBOZXcgZnVuY3Rpb246IEFzc2lnbgoJZGVmYXVsdCBhdHRyaWJ1dGVzIHRvIG5ld2x5IGRlZmluZWQgdHlwZS4KCShjdXJyZW50X2ZpbGVfZnVuY3Rpb25fb3BlcmFuZCk6IE5ldyBmdW5jdGlvbjogUmV0dXJuIHRydWUgaWYKCXRoZSBzeW1ib2wgaXMgYSBmdW5jdGlvbiB3aGljaCBoYXMgYWxyZWFkeSBiZWVuIGNvbXBpbGVkLgoJKGFybV9pc19sb25nY2FsbF9wKTogTmV3IGZ1bmN0aW9uOiBSZXR1cm4gdHJ1ZSBpZiB0aGUKCWluZGljYXRlZCBmdW5jdGlvbiBzaG91bGQgYmUgY2FsbGVkIHZpYSBhIGxvbmcgY2FsbC4KCShhcm1fZ2V0X3N0cmlwX2xlbmd0aCk6IE5ldyBmdW5jdGlvbi4gIFJldHVybnMgbnVtYmVyIG9mCglwcmVmaXggY2hhcmFjdGVycyB0byBiZSBzdHJpcHBlZCBmcm9tIGEgZnVuY3Rpb24ncyBuYW1lLgoJKGFybV9zdHJpcF9uYW1lX2VuY29kaW5nKTogTmV3IGZ1bmN0aW9uLiAgU3RyaXAgcHJlZml4IGNoYXJhY3RlcnMKCWZyb20gYSBmdW5jdGlvbidzIG5hbWUuCgoJKiBjb25maWcvYXJtL2FybS5oIChDVU1VTEFUSVZFX0FSR1MpOiBSZXBsYWNlICdsb25nX2NhbGwnIGZpZWxkCgl3aXRoICdjYWxsX2Nvb2tpZScuCgkoU0hPUlRfQ0FMTF9GQUdfQ0hBUik6IERlZmluZS4KCShMT05HX0NBTExfRkFHX0NIQVIpOiBEZWZpbmUuCgkoRU5DT0RFRF9TSE9SVF9DQUxMX0FUVFJfUCk6IERlZmluZS4KCShFTkNPREVEX0xPTkdfQ0FMTF9BVFRSX1ApOiBEZWZpbmUuCgkoQVJNX05BTUVfRU5DT0RJTkdfTEVOR1RIUyk6IERlZmluZS4KCShTVFJJUF9OQU1FX0VOQ09ESU5HKTogRGVmaW5lLgoJKEFTTV9PVVRQVVRfTEFCRUxSRUYpOiBEZWZpbmUsIGFuZCB1c2UgdG8gc3RyaXAgbmFtZSBlbmNvZGluZy4KCShBUk1fRU5DT0RFX0NBTExfVFlQRSk6IERlZmluZS4KCShFTkNPREVfU0VDVElPTik6IEludm9rZSBBUk1fRU5DT0RFX0NBTExfVFlQRS4KCShBUk1fREVDTEFSRV9GVU5DVElPTl9TSVpFKTogRGVmaW5lLgoJKFNFVF9ERUZBVUxUX1RZUEVfQVRUUklCVVRFUyk6IERlZmluZS4KCgkqIGNvbmZpZy9hcm0vYXJtLm1kIChjYWxsKTogQ2FsbCBhcm1faXNfbG9uZ2NhbGxfcCB0byBkZWNpZGUKCWlmIGEgbG9uZyBjYWxsIGlzIG5lZWRlZC4KCShjYWxsX3ZhbHVlKTogRGl0dG8uCgkoY2FsbF9zeW1ib2wpOiBEaXR0by4KCgkqIGNvbmZpZy9hcm0vZWxmLmggKEFTTV9ERUNMQVJFX0ZVTkNUSU9OX1NJWkUpOiBBZGQgaW52b2NhdGlvbiBvZgoJQVJNX0RFQ0xBUkVfRlVOQ1RJT05fU0laRS4KCgkqIGNvbmZpZy9hcm0vcGUuaCAoQVJNX1BFX0ZMQUdfQ0hBUik6IERlZmluZS4KCShTVUJUQVJHRVRfTkFNRV9FTkNPRElOR19MRU5HVEhTKTogRGVmaW5lLgoJKEFSTV9TVFJJUF9OQU1FX0VOQ09ESU5HKTogVW5kZWZpbmUuCgkoU1RSSVBfTkFNRV9FTkNPRElORyk6IFVuZGVmaW5lLgoJKEFTTV9PVVRQVVRfTEFCRUxSRUYpOiBVc2UgYXJtX3N0cmlwX25hbWVfZW5jb2RpbmcuCgkoQVNNX0RFQ0xBUkVfRlVOQ1RJT05fTkFNRSk6IERpdHRvLgoJKEFTTV9PVVRQVVRfQ09NTU9OKTogRGl0dG8uCgkoQVNNX0RFQ0xBUkVfT0JKRUNUX05BTUUpOiBEaXR0by4KCgkqIGNvbmZpZy9hcm0vcGUuYyAoYXJtX2RsbGV4cG9ydF9uYW1lX3ApOiBDaGVjayBmb3IKCUFSTV9QRV9GTEFHX0NIQVIuCgkoYXJtX2RsbGltcG9ydF9uYW1lX3ApOiBEaXR0by4KCShhcm1fbWFya19kbGxleHBvcnQpOiBVc2UgQVJNX1BFX0ZMQUdfQ0hBUi4KCShhcm1fbWFya19kbGxpbXBvcnQpOiBEaXR0by4KCk1vbiBGZWIgMjggMjI6MTE6MTIgMjAwMCAgSiJvcm4gUmVubmVja2UgPGFteWxhYXJAY3lnbnVzLmNvLnVrPgoKCSogc2guaCAoRFdBUkZfTElORV9NSU5fSU5TVFJfTEVOR1RIKTogRGVmaW5lLgoKMjAwMC0wMi0yOCAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIHhjb2Zmb3V0LmMgKHhjb2Zmb3V0X2JlZ2luX2Z1bmN0aW9uKTogRml4IHR5cG8gaW4gcHJldmlvdXMgY2hhbmdlLgoKMjAwMC0wMi0yOCAgWmFjayBXZWluYmVyZyAgPHphY2tAd29sZXJ5LmN1bWIub3JnPgoKCSogdG0udGV4aTogRG9jdW1lbnQgbmV3IHRhcmdldCBzd2l0Y2gsIE5PX0JVSUxUSU5fV0NIQVJfVFlQRS4KCSogY3BwaW5pdC5jIChidWlsdGluX2FycmF5KTogRGVmaW5lIF9fV0NIQVJfVFlQRV9fIG9ubHkgaWYKCU5PX0JVSUxUSU5fV0NIQVJfVFlQRSBpcyBub3QgZGVmaW5lZC4KCShDUFBfV0NIQVJfVFlQRSk6IERlbGV0ZS4KCSogY2NjcC5jIChtYWluKTogRG9uJ3QgY2hhbmdlIHdjaGFyX3R5cGUgaWYgY3BsdXNwbHVzLgoJKHNwZWNpYWxfc3ltYm9sLCBpbml0aWFsaXplX2J1aWx0aW5zKTogSG9ub3IgTk9fQlVJTFRJTl9XQ0hBUl9UWVBFLgoKMjAwMC0wMi0yOCAgTmljayBDbGlmdG9uICA8bmlja2NAY3lnbnVzLmNvbT4KCgkqIGNvbmZpZy9hcm0vYXJtLXdpbmNlLXBlLmggKFNJWkVfVFlQRSk6IERlZmluZSB0byAidW5zaWduZWQgbG9uZyIuCgpNb24gRmViIDI4IDE0OjIxOjE1IDIwMDAgIENhdGhlcmluZSBNb29yZSAgPGNsbUBjeWdudXMuY29tPgoKCSogY29uZmlnL3BhL3NvbS5oIChNQUtFX0RFQ0xfT05FX09OTFkpOiBEZWZpbmUuCgkoQVNNX1dFQUtFTl9MQUJFTCk6IERlZmluZS4KCk1vbiBGZWIgMjggMTM6MDc6MTkgTUVUIDIwMDAgIEphbiBIdWJpY2thICA8amhAc3VzZS5jej4KCgkqIGV4cHIuYyAoc3RvcmVfY29uc3RydWN0b3IpOiBEbyBub3QgZW1pdCBVU0UuCgkqIHJ0bC5oIChzdHVwaWRfbGlmZV9hbmFseXNpcyk6IFJlbW92ZS4KCk1vbiBGZWIgMjggMDc6MDM6MjcgMjAwMCAgUmljaGFyZCBLZW5uZXIgIDxrZW5uZXJAdmxzaTEudWx0cmEubnl1LmVkdT4KCgkqIGZ1bmN0aW9uLmMgKG51bWJlcl9ibG9ja3MpOiBSZXNldCBuZXh0X2Jsb2NrX2luZGV4IGJhc2VkIG9uCgl3aGF0IGRlYnVnZ2luZyBmb3JtYXQgaXMgdXNlZCwgbm90IHdoYXQgaXMgZGVmaW5lZC4KCgkqIGxjbS5jOiBNaW5vciByZWZvcm1hdHRpbmcgdGhyb3VnaG91dC4KCShyZWdfZGllcywgcmVnX2JlY29tZXNfbGl2ZSk6IFByb3Blcmx5IGhhbmRsZSBtdWx0aXBsZSBoYXJkIHJlZ3MuCgoJKiB0b3BsZXYuYyAocmVzdF9vZl9jb21waWxhdGlvbik6IEFjY291bnQgZm9yIHRpbWUgaW4KCW9wdGltaXplX21vZGVfc3dpdGNoaW5nLgoKCSoganVtcC5jIChqdW1wX29wdGltaXplXzEpOiBEb24ndCBjYWxsIGRlbGV0ZV9iYXJyaWVyX3N1Y2Nlc3NvcnMKCWlmIG9ubHkgbWFya2luZyBsYWJlbHMuCgpNb24gRmViIDI4IDEyOjUzOjU3IE1FVCAyMDAwICBKYW4gSHViaWNrYSAgPGpoQHN1c2UuY3o+CgoJKiBjYWxscy5jIChleHBhbmRfY2FsbCk6IEF0dGVtcHQgdG8gY29tYmluZSBzdGFjayBhZGp1c3RtZW50cyB3aXRoCglwZW5kaW5nIHN0YWNrIGFkanVzdG1lbnRzLgoKTW9uIEZlYiAyOCAxMTozNDo0MyAyMDAwICBKIm9ybiBSZW5uZWNrZSA8YW15bGFhckBjeWdudXMuY28udWs+CgoJKiBsb29wLmMgKHJlZ19pbl9iYXNpY19ibG9ja19wKTogRG9uJ3QgYWJvcnQgd2hlbiBmYWxsaW5nIHRocm91Z2gKCXRvIHRoZSBlbmQgb2YgdGhlIGZ1bmN0aW9uLgoKMjAwMC0wMi0yNyAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGVtaXQtcnRsLmMgKHJlbW92ZV91bm5lY2Vzc2FyeV9ub3Rlcyk6IFJlbW92ZSBub3RlcyBmb3IgZW1wdHkKCWJsb2Nrcy4KCSogZmluYWwuYyAobmV4dF9ibG9ja19pbmRleCk6IFJlbW92ZS4KCShtYXhfYmxvY2tfZGVwdGgpOiBMaWtld2lzZS4KCShwZW5kaW5nX2Jsb2Nrcyk6IExpa2V3aXNlLgoJKGluaXRfZmluYWwpOiBEb24ndCBpbml0aWFsaXplIHRoZW0uCgkoZmluYWxfc3RhcnRfZnVuY3Rpb24pOiBEb24ndCBzZXQgbmV4dF9ibG9ja19pbmRleC4gIFNldCB1cAoJQkxPQ0tfTlVNQkVSLgoJKGZpbmFsX3NjYW5faW5zbik6IFVzZSBCTE9DS19OVU1CRVIsIG5vdCBuZXh0X2Jsb2NrX2luZGV4LgoJKiBmdW5jdGlvbi5oIChudW1iZXJfYmxvY2tzKTogTmV3IGZ1bmN0aW9uLgoJKiBmdW5jdGlvbi5jIChnZXRfYmxvY2tfdmVjdG9yKTogTmV3IGZ1bmN0aW9uLgoJKGlkZW50aWZ5X2Jsb2Nrcyk6IFVzZSBpdC4KCShyZW9yZGVyX2Jsb2Nrcyk6IFNldCBOT1RFX0JMT0NLLgoJKG51bWJlcl9ibG9ja3MpOiBOZXcgZnVuY3Rpb24uCgkqIHRyZWUuZGVmIChCTE9DSyk6IEFkZCBkb2N1bWVudGF0aW9uIGZvciBUUkVFX0FTTV9XUklUVEVOIGZsYWcuCgkqIHRyZWUuaCAoQkxPQ0tfTlVNQkVSKTogTmV3IG1hY3JvLgoJKHRyZWVfYmxvY2spOiBBZGQgYmxvY2tfbnVtIGZpZWxkLgoJKiBkYnhvdXQuYyAobmV4dF9ibG9ja19udW1iZXIpOiBSZW1vdmUuCgkoZGJ4b3V0X2luaXQpOiBEb24ndCBzZXQgaXQuCgkoZGJ4b3V0X2Jsb2NrKTogT25seSBvdXRwdXQgYmxvY2tzIHRoYXQgaGF2ZSBUUkVFX0FTTV9XUklUVEVOCglzZXQuICBVc2UgQkxPQ0tfTlVNQkVSLCByYXRoZXIgdGhhbiBuZXh0X2Jsb2NrX251bSwgdG8gZGV0ZXJtaW5lCglibG9jayBudW1iZXJzLgoJKiB0b3BsZXYuYyAocmVzdF9vZl9jb21waWxhdGlvbik6IEFsd2F5cyBjYWxsCglmaW5kX2xvb3BfdHJlZV9ibG9ja3MuICBGaXggaW5kZW50YXRpb24uCgkqIGR3YXJmMm91dC5jIChuZXh0X2Jsb2NrX251bWJlcik6IFJlbW92ZS4KCShnZW5fbGV4aWNhbF9ibG9ja19kaWUpOiBVc2UgQkxPQ0tfTlVNQkVSLCBub3QgbmV4dF9ibG9ja19udW1iZXIsCgl0byBkZXRlcm1pbmUgYmxvY2sgbnVtYmVycy4KCShnZW5faW5saW5lZF9zdWJyb3V0aW5lX2RpZSk6IExpa2V3aXNlLgoJKGdlbl9ibG9ja19kaWUpOiBPbmx5IG91dHB1dCBibG9ja3MgdGhhdCBoYXZlIFRSRUVfQVNNX1dSSVRURU4gc2V0LgoJKGRlY2xzX2Zvcl9zY29wZSk6IERvbid0IGluY3JlbWVudCBuZXh0X2Jsb2NrX251bWJlci4KCSogZHdhcmZvdXQuYyAobmV4dF9ibG9ja19udW1iZXIpOiBSZW1vdmUuCgkob3V0cHV0X2xleGljYWxfYmxvY2tfZGllKTogVXNlIEJMT0NLX05VTUJFUiwgbm90IG5leHRfYmxvY2tfbnVtYmVyLAoJdG8gZGV0ZXJtaW5lIGJsb2NrIG51bWJlcnMuCgkob3V0cHV0X2lubGluZWRfc3Vicm91dGluZV9kaWUpOiBMaWtld2lzZS4KCShvdXRwdXRfYmxvY2spOiBPbmx5IG91dHB1dCBibG9ja3MgdGhhdCBoYXZlIFRSRUVfQVNNX1dSSVRURU4gc2V0LgoJKG91dHB1dF9kZWNsc19mb3Jfc2NvcGUpOiBEb24ndCBpbmNyZW1lbnQgbmV4dF9ibG9ja19udW1iZXIuCgkqIHNkYm91dC5jIChuZXh0X2Jsb2NrX251bWJlcik6IFJlbW92ZS4KCShzZGJvdXRfYmxvY2spOiBVc2UgQkxPQ0tfTlVNQkVSLgoJKHNkYm91dF9iZWdpbl9ibG9jayk6IFNpbXBsaWZ5LgoJKiB4Y29mZm91dC5jIChuZXh0X2Jsb2NrX251bWJlcik6IFJlbW92ZS4KCSh4Y29mZm91dF9ibG9jayk6IFVzZSBCTE9DS19OVU1CRVIsIG5vdCBuZXh0X2Jsb2NrX251bWJlci4KCSh4Y29mZm91dF9iZWdpbl9ibG9jayk6IERvbid0IHNldCBuZXh0X2Jsb2NrX251bWJlci4KCSh4Y29mZm91dF9iZWdpbl9mdW5jdGlvbik6IExpa2V3aXNlLiBVc2UgQkxPQ0tfTlVNQkVSLCBub3QKCW5leHRfYmxvY2tfbnVtYmVyLgoKU3VuIEZlYiAyNyAxNjo0MDozMyAyMDAwICBSaWNoYXJkIEtlbm5lciAgPGtlbm5lckB2bHNpMS51bHRyYS5ueXUuZWR1PgoKCSogYnVpbHRpbnMuYyAoY19zdHJsZW4pOiBVc2Ugc2l6ZV9kaWZmb3AgYW5kIHJldHVybiBzc2l6ZXR5cGUgdmFsdWUuCgkoZXhwYW5kX2J1aWx0aW5fc3RyY3B5KTogUGFzcyBjb3JyZWN0IHR5cGUgdG8gc2l6ZV9iaW5vcC4KCShleHBhbmRfYnVpbHRpbl9zdHJjbXApOiBMaWtld2lzZS4KCUNsZWFuIHVwIGNvbmRpdGlvbmFsIHN0cnVjdHVyZS4KCSogYy1kZWNsLmMgKGluaXRfZGVjbF9wcm9jZXNzaW5nKTogRG9uJ3QgY2FsbCBzZXRfc2l6ZXR5cGUgdHdpY2UuCgkoY29tcGxldGVfYXJyYXlfdHlwZSk6IERvbid0IHVzZSBzaXplX2Jpbm9wIGZvciBNQVhJTkRFWC4KCSogYy10eXBlY2suYyAoY19zaXplb2YpOiBVc2Ugc2l6ZV9vbmVfbm9kZSBhbmQgVFlQRV9TSVpFX1VOSVQuCgkoY19zaXplb2Zfbm93YXJuLCBjX3NpemVfaW5fYnl0ZXMpOiBMaWtld2lzZS4KCShjX2FsaWdub2YpOiBVc2Ugc2l6ZV9vbmVfbm9kZS4KCShidWlsZF91bmFyeV9vcCk6IFBhc3MgYXJnIG9mIHByb3BlciB0eXBlIHRvIHNpemVfYmlub3AuCgkocmVhbGx5X3N0YXJ0X2luY3JlbWVudGFsX2luaXQsIHB1c2hfaW5pdF9sZXZlbCk6IFVzZSBzaXpldHlwZSBmb3IKCWNvbnN0cnVjdG9yeyxfYml0LF91bmZpbGxlZH1faW5kZXguCgkocG9wX2luaXRfbGFiZWwsIG91dHB1dF9pbml0X2VsZW1lbnQpOiBMaWtld2lzZS4KCShvdXRwdXRfcGVuZGluZ19pbml0X2VsZW1lbnRzLCBwcm9jZXNzX2luaXRfZWxlbWVudCk6IExpa2V3aXNlLgoJKiBjYWxscy5jIChjb21wdXRlX2FyZ3VtZW50X2Jsb2NrX3NpemUpOiBGaWVsZCBWQVIgaXMgc3NpemV0eXBlLgoJKiBleHByLmMgKHN0b3JlX2V4cHIpOiBVc2Ugc2l6ZV9pbnQuCgkoc3RvcmVfY29uc3RydWN0b3IpOiBVc2UgcHJvcGVyIHR5cGVzIGZvciBzaXplX2Jpbm9wIGFyZ3MuCgkoZ2V0X2lubmVyX3JlZmVyZW5jZSwgZXhwYW5kX2V4cHIsIGNhc2UgQVJSQVlfUkVGKTogTGlrZXdpc2UuCgkoZXhwYW5kX2V4cHJfdW5hbGlnbmVkKTogTGlrZXdpc2UuCgkoc3RyaW5nX2NvbnRhbnQpOiBSZXR1cm4gb2JqZWN0IG9mIHNpemV0eXBlLgoJKiBleHByLmggKFNVQl9QQVJNX1NJWkUpOiBDYWxsIHNpemVfZGlmZm9wIGFuZCBwYXNzIHByb3BlciB0eXBlcy4KCShBUkdTX1NJWkVfUlRYKTogQ2FsbCBBUkdTX1NJWkVfVFJFRS4KCShBUkdTX1NJWkVfVFJFRSk6IFBhc3MgcHJvcGVyIHR5cGVzIHRvIHNpemVfYmlub3AuCgkqIGZvbGQtY29uc3QuYyAoaW50X2NvbnN0X2Jpbm9wKTogUmVmaW5lIHdoZW4gc2l6ZV9pbnQgaXMgY2FsbGVkLgoJKGZvbGRfY29udmVydCk6IExpa2V3aXNlLgoJKHNpemVfaW50X3dpZGUpOiBSZXdvcmsgdG8gdGFrZSBLSU5EIGFzIGFyZywgb25seSB0YWtlIGxvdyBvcmRlcgoJYml0cywgaGFuZGxlIG5ldyBzaXpldHlwZV90YWIgZGF0YXR5cGUsIGFuZCBjaGFpbiBlbnRyaWVzIGluCglzaXplX3RhYmxlLgoJKHNpemVfaW50X3R5cGVfd2lkZSk6IE5ldyBmdW5jdGlvbi4KCShzaXplX2Jpbm9wKTogVmFsaWRhdGUgdHlwZXMgb2YgYXJndW1lbnRzLgoJKHNzaXplX2Jpbm9wKTogRGVsZXRlZC4KCShzaXplX2RpZmZvcCk6IE5ldyBmdW5jdGlvbi4KCShleHRyYWN0X211bGRpdik6IE9ubHkgZm9sZCBkaXZpc2lvbiBpbnRvIG11bHRpcGxpY2F0aW9uIGZvciBzaXpldHlwZXMuCgkqIGZ1bmN0aW9uLmMgKGFzc2lnbl9wYXJtcyk6IFVzZSBzaXplX2RpZmZvcCBhbmQgbWFrZSBzdXJlCglWQVIgZmllbGQgaXMgb2Ygc3NpemV0eXBlOyBhbHNvIHBhc3MgcHJvcGVyIHR5cGUgdG8gc2l6ZV9iaW5vcC4KCShsb2NhdGVfYW5kX3BhZF9wYXJtLCBwYWRfdG9fYXJnX2FsaWdubWVudCk6IExpa2V3aXNlLgoJKHJvdW5kX2Rvd24pOiBEZWxldGVkIGZyb20gaGVyZS4KCSogc3RvcmUtbGF5b3V0LmMgKHNpemV0eXBlX3RhYik6IE5vdyBhbiBhcnJheS4KCShzaXpldHlwZV9zZXQsIGVhcmx5X3Jvb3RfbGlzdCk6IE5ldyB2YXJpYWJsZXMuCgkodmFyaWFibGVfc2l6ZSk6IFVzZSBzaXplX29uZV9ub2RlLgoJKHJvdW5kX3VwKTogUGFzcyBwcm9wZXIgdHlwZSB0byBzaXplX2Jpbm9wLgoJKHJvdW5kX2Rvd24pOiBNb3ZlZCB0byBoZXJlIGFuZCBjb3JyZWN0ZWQgYXMgYWJvdmUuCgkobGF5b3V0X3JlY29yZCk6IFBhc3MgcHJvcGVyIGFyZyB0eXBlcyB0byBzaXplX2Jpbm9wLgoJKGxheW91dF90eXBlKTogTGlrZXdpc2UuCglJZiBzaXpldHlwZV9zZXQgaXMgemVybywgcmVjb3JkIHRoZSB0eXBlIGp1c3QgbGFpZCBvdXQuCgkobWFrZV91bnNpZ25lZF90eXBlKTogRG9uJ3QgY2FsbCBzZXRfc2l6ZXR5cGU7CgkobWFrZV9zaWduZWRfdHlwZSk6IExpa2V3aXNlOyBhbHNvLCBjYWxsIGZpeHVwX3NpZ25lZF90eXBlLgoJKGluaXRpYWxpemVfc2l6ZXR5cGVzKTogTmV3IGZ1bmN0aW9uLgoJKHNldF9zaXpldHlwZSk6IE1ha2UgY29weSBvZiB0eXBlcywgc2V0IFRZUEVfSVNfU0laRVRZUEUsIGFuZAoJc2V0IG5hbWUgb2YgYml0c2l6ZXR5cGUgdG8gImJpdF9zaXplX3R5cGUiLgoJRml4IHVwIHR5cGUgb2Ygc2l6ZXMgb2YgYWxsIHR5cGVzIG1hZGUgYmVmb3JlIGNhbGwuCgkqIHRtLnRleGkgKFJPVU5EX1RZUEVfU0laRV9VTklUKTogTmV3IG1hY3JvLgoJKiB0cmVlLmMgKGZpeF9zaXpldHlwZSk6IERlbGV0ZWQuCgkoYnVpbGRfY29tbW9uX3RyZWVfbm9kZXMpOiBDYWxsIGluaXRpYWxpemVfc2l6ZXR5cGVzLgoJKGJ1aWxkX2NvbW1vbl90cmVlX25vZGVzXzIpOiBEb24ndCBjYWxsIGZpeF9zaXpldHlwZS4KCSogdHJlZS5oIChUWVBFX0lTX1NJWkVUWVBFKTogTmV3IG1hY3JvLgoJKGluaXRpYWxpemVfc2l6ZXR5cGUpOiBOZXcgZGVjbGFyYXRpb24uCgkoZW51bSBzaXplX3R5cGVfa2luZCk6IE5ldyB0eXBlLgoJKHN0cnVjdCBzaXpldHlwZV90YWIpOiBEZWxldGVkLgoJKHNpemV0eXBlX3RhYik6IE5vdyBhcnJheTsgYWRqdXN0IHNpemV0eXBlIG1hY3Jvcy4KCShzaXplX2RpZmZvcCwgc2l6ZV9pbnRfdHlwZV93aWRlKTogTmV3IGZ1bmN0aW9ucy4KCShzaXplX2ludF93aWRlKTogQ2hhbmdlIG51bWJlciBvZiBhcmdzIGFuZCB0eXBlOyBhY2Nlc3MgbWFjcm9zIGNoYW5nZWQuCgkoc3NpemVfaW50LCBzYml0c2l6ZV9pbnQpOiBOZXcgbWFjcm9zLgoJKiBjb25maWcvaTk2MC9pOTYwLmggKFJPVU5EX1RZUEVfU0laRSk6IFVzZSBzaXplX2ludC4KCShST1VORF9UWVBFX1NJWkVfVU5JVCk6IE5ldyBtYWNyby4KCjIwMDAtMDItMjcgIFphY2sgV2VpbmJlcmcgIDx6YWNrQHdvbGVyeS5jdW1iLm9yZz4KCgkqIGMtbGV4LmMgKHB1dGJhY2tfYnVmZmVyKTogTWFrZSAnYnVmZmVyJyBhbiB1bnNpZ25lZCBjaGFyICouCgpTdW4gRmViIDI3IDA3OjQ0OjE3IDIwMDAgIFJpY2hhcmQgS2VubmVyICA8a2VubmVyQHZsc2kxLnVsdHJhLm55dS5lZHU+CgoJKiBnY292LWlvLmggKF9fZmV0Y2hfbG9uZywgX19zdG9yZV9sb25nLCBfX3JlYWRfbG9uZywgX193cml0ZV9sb25nKToKCU1hcmsgYXMgcG9zc2libHkgdW51c2VkLgoKCSogY3NlLmMgKGNzZV9pbnNuKTogRGVsZXRlIGRlYWQgY29kZSBpbnZvbHZpbmcgdGFibGVqdW1wLgoJUGFzcyBDT0RFX0xBQkVMLCBub3QgTEFCRUxfUkVGIHRvIGdlbl9qdW1wIGFuZCByZXNldCBJTlNOX0NPREUuCgoJKiBNYWtlZmlsZS5pbiAobGliY3BwLmEpOiBTdGFydCBieSBkZWxldGluZyBpdC4KCjIwMDAtMDItMjcgIEFsZXhhbmRyZSBPbGl2YSAgPG9saXZhQGxzZC5pYy51bmljYW1wLmJyPgoKCSogY3BwbGliLmggKGVudW0gZmlsZV9jaGFuZ2VfY29kZSk6IEFkZGVkIHJlbmFtZV9maWxlLgoJKiBjcHBsaWIuYyAoZG9fbGluZSk6IElmIGEgZmlsZW5hbWUgaXMgZ2l2ZW4sIHNldCBmaWxlX2NoYW5nZSB0bwoJcmVuYW1lX2ZpbGUuCgkob3V0cHV0X2xpbmVfY29tbWFuZCk6IElmIGZpbGVfY2hhbmdlIGlzIHJlbmFtZV9maWxlLCBhbHdheXMKCW91dHB1dCBhICMgZGlyZWN0aXZlIHdpdGggdGhlIGZpbGUgbmFtZS4KCgkqIGNwcGxpYi5jIChkb19wcmFnbWEpOiBBY2NlcHQgI3ByYWdtYSB3aXRob3V0IGNvbnNlY3V0aXZlIHRva2VuLgoKMjAwMC0wMi0yNiAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGludGVncmF0ZS5jIChjb3B5X2RlY2xfZm9yX2lubGluaW5nKTogUHJlc2VydmUgVFJFRV9BRERSRVNTQUJMRQoJd2hlbiBjb3B5aW5nIGEgUEFSTV9ERUNMIG9yIFJFU1VMVF9ERUNMLgoKMjAwMC0wMi0yNiAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogZml4LWhlYWRlci5jIChyZWNvZ25pemVkX2Z1bmN0aW9uKTogQWxzbyBmaXggcHJvdG90eXBlcyBmb3IKCWZ1bmN0aW9ucyB0YWtpbmcgInZvaWQiLgoKMjAwMC0wMi0yNiAgR2VvZmYgS2VhdGluZyAgPGdlb2Zma0BjeWdudXMuY29tPgoKCSogcmVsb2FkMS5jIChkb19vdXRwdXRfcmVsb2FkKTogQ2hlY2sgcmVnX3JlbG9hZGVkX3ZhbGlkIGJlZm9yZQoJbG9va2luZyBhdCByZWdfcmVsb2FkZWRfY29udGVudHMuCgoyMDAwLTAyLTI2ICBaYWNrIFdlaW5iZXJnICA8emFja0B3b2xlcnkuY3VtYi5vcmc+CgoJKiBNYWtlZmlsZS5pbiAoU1RNUF9GSVhJTkMpOiBOZXcgdG9nZ2xlLgoJKExJQkdDQzJfREVQUyk6IERlbGV0ZSBhbGwgcmVmZXJlbmNlcy4KCShzdG1wLWhlYWRlcnMpOiBEZWxldGUgdGFyZ2V0LiAgQWxsIHJlZmVyZW5jZXMgZWl0aGVyIGRlbGV0ZWQKCW9yIGNoYW5nZWQgdG8gc3RtcC1pbnQtaGVhZGVycy4KCShhbGwuY3Jvc3MpOiBEb24ndCBkZXBlbmQgb24gc3RtcC1oZWFkZXJzIG9yIFNUTVBfRklYUFJPVE8uCgkoTElCQ1BQX09CSlMpOiBUYWtlIG91dCBjcHBhbGxvYy5vLgoJKGNwcGFsbG9jLm8pOiBEZWxldGUgdGFyZ2V0LgoJKHN0bXAtaW50LWhkcnMpOiBEZXBlbmQgb24gJChTVE1QX0ZJWElOQykuCgkoZ2VuLXByb3RvcywgZml4LWhlYWRlcik6IExpbmsgd2l0aCBsaWJpYmVydHkuYS4KCSogYnVpbGQtbWFrZTogRG9uJ3QgY2hhbmdlIEZJWElOQ0xVREVTLiAgT3ZlcnJpZGUgU1RNUF9GSVhJTkMKCXRvIGVtcHR5LgoKCSogY29uZmlndXJlLmluOiBSZW1vdmUgcmVmcyB0byBzdHJlcnJvci4KCSogYWNjb25maWcuaDogVGFrZSBvdXQgTkVFRF9ERUNMQVJBVElPTl9TVFJFUlJPUi4KCSogc3lzdGVtLmg6IFRha2Ugb3V0IHN0cmVycm9yIHN0YW56YS4KCgkqIGNwcGVycm9yLmMgKG15X3N0cmVycm9yKTogRGVsZXRlIGZ1bmN0aW9uLgoJKGNwcF9lcnJvcl9mcm9tX2Vycm5vLCBjcHBfbm90aWNlX2Zyb21fZXJybm8pOiBVc2UgeHN0cmVycm9yLgoJKiBjcHBtYWluLmMgKG1haW4pOiBDYWxsIHhtYWxsb2Nfc2V0X3Byb2dyYW1fbmFtZSBmaXJzdCB0aGluZy4KCSogY3BwYWxsb2MuYzogRGVsZXRlIGZpbGUuCgkqIGdlbi1wcm90b3MuYzogRG9uJ3QgcHJvdmlkZSB4cmVhbGxvYy4KCgkqIGZpeGluYy9maXhpbmNsLmMsIGZpeGluYy9maXhsaWIuYywgZml4aW5jL3Byb2NvcGVuLmM6IFVzZQoJeHN0cmVycm9yIHRocm91Z2hvdXQuCgoyMDAwLTAyLTI2ICBCcnVjZSBLb3JiICA8YmtvcmJAZ251Lm9yZz4KCgkqIGZpeGluYy9pbmNsaGFjay5kZWYgKHVuZGVmaW5lX251bGwpOiB0aGUgYnlwYXNzIHBhdHRlcm4gbmVlZHMgdG8KCW1hdGNoIGZvciBET1MgaGVhZGVycywgdG9vLgoJKiBmaXhpbmMvaW5jbGhhY2suc2gsZml4aW5jbC54OiBSZWdlbmVyYXRlLgoKMjAwMC0wMi0yNiAgR2VvZmYgS2VhdGluZyAgPGdlb2Zma0BjeWdudXMuY29tPgoKCSogY29uZmlnL2VsZm9zLmggKEFTTV9PVVRQVVRfTEFCRUxSRUYpOiBEb24ndCBkZWZpbmUuICBUaGUgZGVmYXVsdAoJaXMgcmlnaHQgZm9yIG1vc3QgRUxGIHRhcmdldHMuCgkqIGNvbmZpZy9uczMyay9uczMyay5oIChBU01fT1VUUFVUX0xBQkVMUkVGKTogRG9uJ3QgZGVmaW5lLgoJTGV0IHRoZSBkZWZhdWx0IGZpbGUgdXNlICVVIHByb3Blcmx5LgoJKiBjb25maWcvc2gvZWxmLmggKEFTTV9PVVRQVVRfTEFCRUxSRUYpOiBEb24ndCBkZWZpbmUuICBVc2UgdGhlCglkZWZhdWx0LgoKCSogY29uZmlnL2ZwLWJpdC5jIChwYWNrX2QpOiBQcm9wZXJseSBoYW5kbGUgcm91bmRpbmcgb2YgZGVub3JtYWwKCW51bWJlcnMuCgpTYXQgRmViIDI2IDA5OjM5OjE2IDIwMDAgIFJpY2hhcmQgS2VubmVyICA8a2VubmVyQHZsc2kxLnVsdHJhLm55dS5lZHU+CgoJKiB0b3BsZXYuYyAoZG9jdW1lbnRlZF9sYW5nX29wdGlvbnMpOiBDb3JyZWN0IHNwZWxsaW5nIGVycm9yLgoJKGRlY29kZV9kX29wdGlvbiwgZGVjb2RlX2Zfb3B0aW9uLCBtYWluKTogTGlrZXdpc2UuCgoJKiB0b3BsZXYuYyAocHJpbnRfdGltZSk6IEF2b2lkIFNJR0ZQRSB3aGVuIGFsbF90aW1lIGlzIHplcm8uCgoJKiBjb25maWcvYWxwaGEvYWxwaGEuaCAoQVNNX09VVFBVVF9NSV9USFVOSyk6IFVzZSAuc2V0IGF0Cgl0byB0ZWxsIGFzc2VtYmxlciBpdCBpcyBwZXJtaXR0ZWQgdG8gZXhwYW5kIGxhcmdlIGNvbnN0YW50cy4KCjIwMDAtMDItMjUgIE11bWl0IEtoYW4gIDxraGFuQHhyYXlsaXRoLndpc2MuZWR1PgoKCSogcHJvdG9pemUuYzogKEFVWF9JTkZPX1NVRkZJWCk6IE5ldyBtYWNyby4KCShhdXhfaW5mb19zdWZmaXgpOiBVc2UuCgkoU0FWRV9TVUZGSVgpOiBOZXcgbWFjcm8uCgkoc2F2ZV9zdWZmaXgpOiBVc2UuCgkobXVuZ2VfY29tcGlsZV9wYXJtcyk6IEZpeCB0eXBvIGluIE5VTC4gREpHUFAgc3VwcG9ydHMgL2Rldi9udWxsLgoJKGdlbl9hdXhfaW5mb19maWxlKTogVXNlIGF1eF9pbmZvX3N1ZmZpeCBpbnN0ZWFkIG9mICIuWCIuCgkoZWRpdF9maWxlKTogSGFuZGxlIDguMyByZXN0cmljdGlvbiBmb3IgRE9TL0RKR1BQIGZpbGVuYW1lcy4KCgkqIGludm9rZS50ZXhpIChSdW5uaW5nIFByb3RvaXplKTogVXBkYXRlIGRvY3VtZW50YXRpb24uCgoyMDAwLTAyLTI1IE1hcmsgRWxicmVjaHQgPHNub3diYWxsM0BiaWdmb290LmNvbT4KCgkqIGkzODYvZGpncHAuaCAoQ1BQX1BSRURFRklORVMpOiBSZW1vdmUgVW5peCBkZWZpbmVzLgoKMjAwMC0wMi0yNSAgSm9obiBXZWhsZSAgKGpvaG5AZmVpdGguY29tKQoKCSogcnRsYW5hbC5jIChmaW5kX2xhc3RfdmFsdWUpOiBBbGxvdyBOVUxMX1JUWCBmb3IgdmFsaWRfdG8uCgoyMDAwLTAyLTI1ICBBbnRob255IEdyZWVuICA8Z3JlZW5AY3lnbnVzLmNvbT4KCgkqIHRvcGxldi5jIChyZXN0X29mX2NvbXBpbGF0aW9uKTogUmVidWlsZCBqdW1wIGxhYmVscyBpZgoJY29tYmluZV9pbnN0cnVjdGlvbnMgaGFzIGNyZWF0ZWQgYSBuZXcgZGlyZWN0IGp1bXAuCgkqIGNvbWJpbmUuYyAodHJ5X2NvbWJpbmUpOiBBZGQgbmV3X2RpcmVjdF9qdW1wX3AgYXJndW1lbnQuICBTZXQgaXQKCXdoZW4gYXBwcm9wcmlhdGUuCgkoY29tYmluZV9pbnN0cnVjdGlvbnMpOiBDYWxsIHRyeV9jb21iaW5lIHdpdGggbmV3IGFyZ3VtZW50LgoJUmV0dXJuIG5vbi1udWxsIHZhbHVlIHdoZW4gbmV3IGRpcmVjdCBqdW1wIGluc3RydWN0aW9uIGlzIGNyZWF0ZWQuCgkqIHJ0bC5oOiBjb21iaW5lX2luc3RydWN0aW9ucyByZXR1cm5zIGFuIGludC4KCkZyaSBGZWIgMjUgMTk6NDk6MDggMjAwMCAgSmVmZnJleSBBIExhdyAgKGxhd0BjeWdudXMuY29tKQoKCSogY3NlLmMgKGNzZV9pbnNuKTogUmVwbGFjZSB0aGUgUEFUVEVSTiBvZiB0aGUgaW5zbiB3aXRoIGFuIG5ldwoJanVtcCB3aGVuIGNoYW5naW5nIGEgY29tcHV0ZWQganVtcCBpbnRvIGEganVtcCB0byBhIGtub3duCgl0YXJnZXQuCgpGcmkgRmViIDI1IDE5OjIyOjQ0IDIwMDAgIEdyYWhhbSBTdG90dCA8Z3JhaGFtc0ByY3AuY28udWs+CgoJKiByZXNvdXJjZS5jIChtYXJrX3JlZmVyZW5jZWRfcmVzb3VyY2VzKTogQ2hhbmdlZCB1c2UgU0VUX0RFU1QgKC4uLikKCXRvIFhFWFAgKC4uLiwgMCkgb24gUlRMIG5vZGVzIHdoaWNoIGFyZSBub3QgU0VUIG9yIENMT0JCRVIuCgoJKiBpMzg2Lm1kIChkZWZpbmVfZXhwYW5kICJjbHJzdHJzaSIpOiBGaXggdHlwby4KCkZyaSBGZWIgMjUgMTg6NDk6MzkgMjAwMCAgIksuIFJpY2hhcmQgUGl4bGV5IiA8cmljaEBtaWNyb3VuaXR5LmNvbT4KCgkqIHJ0bC50ZXhpOiBGaXggdHlwby4KCkZyaSBGZWIgMjUgMjA6MDI6MzUgMjAwMCAgSiJvcm4gUmVubmVja2UgPGFteWxhYXJAY3lnbnVzLmNvLnVrPgoKCSogc2guYyAoY2FsY19saXZlX3JlZ3MpOiBNdWx0aXBseSB2YWx1ZSBhc3NpZ25lZCB0byAqQ09VTlRfUFRSIGJ5CglVTklUU19QRVJfV09SRC4gIENoYW5nZSBjYWxsZXIgaW5pdGlhbF9lbGltaW5hdGlvbl9vZmZzZXQuCgkocm91bmRlZF9mcmFtZV9zaXplKTogVGFrZSBpbnRvIGFjY291bnQgdGhhdCBhcmd1bWVudCBwdXNoZWQgaGFzCgljaGFuZ2VkLiAgRml4IFRBUkdFVF9BTElHTl9ET1VCTEUgcHJvYmxlbS4KCjIwMDAtMDItMjUgIEdlb2ZmIEtlYXRpbmcgIDxnZW9mZmtAY3lnbnVzLmNvbT4KCgkqIGhhaWZhLXNjaGVkLmMgKHNjaGVkdWxlX2Jsb2NrKTogRXhwbGFpbiB0aGUgcmVhbCByZWFzb24KCXdlIGRlbGV0ZSBSRUdfU0FWRV9OT1RFcyBvbiB0aGUgZmlyc3QgaW5zbiBvZiBhIGJsb2NrLgoJRG9uJ3QgZGVsZXRlIFJFR19TQVZFX05PVEVTIGZvciBOT1RFX0lOU05fU0VUSk1QLgoKMjAwMC0wMi0yNCAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGlucHV0LmggKHB1c2hfc3JjbG9jKTogTmV3IGZ1bmN0aW9uLgoJKHBvcF9zcmNsb2MpOiBMaWtld2lzZS4KCSogdG9wbGV2LmMgKHB1c2hfc3JjbG9jKTogRGVmaW5lIGl0LgoJKHBvcF9zcmNsb2MpOiBMaWtld2lzZS4KCjIwMDAtMDItMjQgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgoJKiBmbG93LmMgKGxpZmVfYW5hbHlzaXMpOiBXaGVuIGNvbGxlY3RpbmcgcmVnIGluZm8sIGNsZWFyCglyZWdzX2V2ZXJfbGl2ZS4KClRodSBGZWIgMjQgMjI6MDY6NTIgMjAwMCAgSiJvcm4gUmVubmVja2UgPGFteWxhYXJAY3lnbnVzLmNvLnVrPgoKCUZpeCBidWcgZXhwb3NlZCBieSByZWxvYWQuYyBubyBsb25nZXIgcm91bmRpbmcgdGhlIGZyYW1lCglzaXplIHRvIEJJR0dFU1RfQUxJR05NRU5UOgoJKiBzaC5jIChyb3VuZGVkX2ZyYW1lX3NpemUpOiBOZXcgZnVuY3Rpb24uCgkoc2hfZXhwYW5kX3Byb2xvZ3VlLCBzaF9leHBhbmRfZXBpbG9ndWUpOiBVc2UgaXQuCgkoaW5pdGlhbF9lbGltaW5hdGlvbl9vZmZzZXQpOiBMaWtld2lzZS4KClRodSBGZWIgMjQgMjA6MDQ6MTEgMjAwMCAgSiJvcm4gUmVubmVja2UgPGFteWxhYXJAY3lnbnVzLmNvLnVrPgoKCUZpeCBicmVha2FnZSBmcm9tIDZ0aCBGZWIgdGhyZWFkX3Byb2xvZ3VlX2FuZF9lcGlsb2d1ZV9pbnNucyBjaGFuZ2U6CgkqIHNoLXByb3Rvcy5oIChzaF9uZWVkX2VwaWxvZ3VlKTogRGVjbGFyZS4KCSogc2guYyAoc2hfbmVlZF9lcGlsb2d1ZV9rbm93bik6IE5ldyBzdGF0aWMgdmFyaWFibGUuCgkoc2hfbmVlZF9lcGlsb2d1ZSk6IE5ldyBmdW5jdGlvbi4KCShmdW5jdGlvbl9lcGlsb2d1ZSk6IENsZWFyIG5lZWRfZXBpbG9ndWVfa25vd24uCgkqIHNoLm1kIChyZXR1cm4pOiBTcGxpdCBpbnRvIGV4cGFuZGVyIC8gaW5zbiBwYXR0ZXJuLgoJTWFrZSB0aGUgZXhwYW5kZXIgY29uZGl0aW9uYWwgb24gISBzaF9uZWVkX2VwaWxvZ3VlICgpLgoKMjAwMC0wMi0yNCAgTmF0aGFuIFNpZHdlbGwgIDxuYXRoYW5AY29kZXNvdXJjZXJ5LmNvbT4KCgkqIG1hY2htb2RlLmggKGdldF9tb2RlX2FsaWdubWVudCk6IERlY2xhcmUuCgkoR0VUX01PREVfQUxJR05NRU5UKTogQ2FsbCBpdC4KCSogc3Rvci1sYXlvdXQuYyAoZ2V0X21vZGVfYWxpZ25tZW50KTogTmV3IGZ1bmN0aW9uLiBNYWtlCglzdXJlIGFsaWdubWVudCBpcyBhbHdheXMgcG93ZXIgb2YgMi4KCjIwMDAtMDItMjMgIFphY2sgV2VpbmJlcmcgIDx6YWNrQHdvbGVyeS5jdW1iLm9yZz4KCgkqIGkzODYuaDogUmVtb3ZlIHVzZWxlc3MgZGVmaW5pdGlvbiBvZiAiSTM4NiIgYW5kIG1pc2xlYWRpbmcKCWNvbW1lbnQgYWJvdmUgaXQuCgoyMDAwLTAyLTIzICBaYWNrIFdlaW5iZXJnICA8emFja0B3b2xlcnkuY3VtYi5vcmc+CgoJKiB0cmVlLmggKFRSRUVfU0VUX1BFUk1BTkVOVCk6IE5ldyBtYWNyby4gIERvY3VtZW50IGNvbmRpdGlvbnMKCXVuZGVyIHdoaWNoIFRSRUVfUEVSTUFORU5UIHdpbGwgYmUgc2V0LgoJKiB0cmVlLmMgKG1ha2Vfbm9kZSwgY29weV9ub2RlLCBtYWtlX3RyZWVfdmVjLCB0cmVlX2NvbnMsCglidWlsZDEpOiBVc2UgVFJFRV9TRVRfUEVSTUFORU5ULgoJKiBwcmludC10cmVlLmMgKHByaW50X25vZGUpOiBEb24ndCByZXBvcnQgdmFsdWUgb2YKCVRSRUVfUEVSTUFORU5UIGlmIGdnY19wIGlzIHRydWUuCgoJKiBjLWNvbW1vbi5jIChjX2dldF9hbGlhc19zZXQpOiBEb24ndCB1c2UgVFJFRV9QRVJNQU5FTlQgdG8KCWRlY2lkZSB3aGV0aGVyIHRvIGdpdmUgYSB0eXBlIGEgbmV3IGFsaWFzIHNldC4KCSogb2JqYy9vYmpjLWFjdC5jIChidWlsZF9vYmpjX3N0cmluZ19vYmplY3QpOiBOZXZlciBjb3B5IHRoZSBzdHJpbmcuCgkqIHRyZWUuYyAobWFrZV9ub2RlKTogU2V0IERFQ0xfSU5fU1lTVEVNX0hFQURFUiBpcnJlc3BlY3RpdmUKCW9mIHZhbHVlIG9mICdvYnN0YWNrJy4KCgoyMDAwLTAyLTI0ICBNaWNoYWVsIEhheWVzICA8bS5oYXllc0BlbGVjLmNhbnRlcmJ1cnkuYWMubno+CgoJKiBjb25maWcvYzR4L2M0eC5jIChjNHhfcHJvY2Vzc19hZnRlcl9yZWxvYWQpOiBTcGxpdCBhbGwgaW5zbnMuCgoyMDAwLTAyLTIzICBBbGV4YW5kcmUgT2xpdmEgIDxvbGl2YUBsc2QuaWMudW5pY2FtcC5icj4KCgkqIGNwcGxpYi5oIChlbnVtIGNwcF90b2tlbik6IEFkZGVkIENQUF9XQ0hBUiBhbmQgQ1BQX1dTVFJJTkcuCgkqIGNwcGxpYi5jIChjcHBfZ2V0X3Rva2VuKTogUHJvZHVjZSB0aGVtLgoJKiBjcHBleHAuYyAoY3BwX2xleCk6IEhhbmRsZSB0aGVtLgoKMjAwMC0wMi0yMyAgTmljayBDbGlmdG9uICA8bmlja2NAY3lnbnVzLmNvbT4KCgkqIGNvbmZpZy9hcm0vYXJtLmMgKGFybV9jb21wX3R5cGVfYXR0cmlidXRlcyk6IFNpbXBseSBhbmQKCWNvbW1lbnQgdGVzdHMgb24gdHlwZSBhdHRyaWJ1dGVzLgoKV2VkIEZlYiAyMyAxNjo0MjoyMSAyMDAwICBKIm9ybiBSZW5uZWNrZSA8YW15bGFhckBjeWdudXMuY28udWs+CgoJKiBmaW5hbC5jIChzaG9ydGVuX2JyYW5jaGVzKTogTWFrZSB2YWx1ZSBwYXNzZWQgdG8gTE9PUF9BTElHTgoJY29uZm9ybSB0byBkb2N1bWVudGF0aW9uLgoJKiBzaC5oIChMT09QX0FMSUdOKTogSWYgYWxpZ25pbmcgbG9vcHMsIGNhbGwgc2hfbG9vcF9hbGlnbgoJdG8gY2hlY2sgZm9yIHNwZWNpYWwgY2FzZXMuCgkqIHNoLXByb3Rvcy5oIChzaF9sb29wX2FsaWduKTogRGVjbGFyZS4KCSogc2guYyAoc2hfbG9vcF9hbGlnbik6IERlZmluZS4KCjIwMDAtMDItMjIgIEFuZHJldyBIYWxleSAgPGFwaEBjeWdudXMuY29tPgoKCSogY29uZmlnL21pcHMvbWlwcy5oIChHQVNfQVNNX1NQRUMpOiBQYXNzIC1tZ3AzMi8tbWdwNjQgdG8gZ2FzLgoJKFNJWkVfVFlQRSk6IElzIDMyIGJpdHMgd2hlbiB1c2luZyAtbWdwMzIuCgkoUFRSRElGRl9UWVBFKTogRGl0dG8uCgpXZWQgRmViIDIzIDA3OjI2OjI3IDIwMDAgIFJpY2hhcmQgS2VubmVyICA8a2VubmVyQHZsc2kxLnVsdHJhLm55dS5lZHU+CgoJKiBkaWFnbm9zdGljLmMgKGluaXRfb3V0cHV0X2J1ZmZlcik6IEhhbmRsZSBjYXNlIG9mIG51bGwgUFJFRklYLgoKMjAwMC0wMi0yMyAgWmFjayBXZWluYmVyZyAgPHphY2tAd29sZXJ5LmN1bWIub3JnPgoKCSogY29uZmlnL2kzODYvaTM4Ni5oOiBJZiBJTl9UQVJHRVRfTElCUyBpcyBkZWZpbmVkLCBtYWtlCglCSUdHRVNUX0ZJRUxEX0FMSUdOTUVOVCBhIGNvbnN0YW50LgoKMjAwMC0wMi0yMSAgSmFzb24gTWVycmlsbCAgPGphc29uQGNhc2V5LmN5Z251cy5jb20+CgoJKiBkd2FyZjJvdXQuYyAob3V0cHV0X2xpbmVfaW5mbyk6IFB1dCB0aGUgbWFya2VyIGZvciB0aGUgZW5kIG9mCgl0aGUgbGluZSBudW1iZXIgaW5mbyBhdCB0aGUgYWN0dWFsIGVuZC4KCShnZW5fc3RydWN0X29yX3VuaW9uX3R5cGVfZGllKTogVXNlIGRlY2xfZnVuY3Rpb25fY29udGV4dAoJdG8gY2hlY2sgZm9yIGxvY2FsIGNsYXNzZXMuCgkqIGR3YXJmb3V0LmMgKG91dHB1dF90eXBlKTogTGlrZXdpc2UuCgpUdWUgRmViIDIyIDAxOjM4OjU3IDIwMDAgIEplZmZyZXkgQSBMYXcgIChsYXdAY3lnbnVzLmNvbSkKCgkqIHBhLmggKEZVTkNUSU9OX0FSR19QQVNTX0JZX1JFRkVSRU5DRSk6IEhhbmRsZSBwYXNzLWJ5LXJlZmVyZW5jZQoJZm9yIGFyZ3VtZW50cyB3aXRoIGEgbW9kZSwgYnV0IG5vIHR5cGUuCgkoRlVOQ1RJT05fQVJHX0NBTExFRV9DT1BJRVMpOiBTaW1pbGFybHkuCgkqIHQtcGEgKExJQjJGVU5DU19FWFRSQSk6IEFkZCBxdWFkbGliLmFzbS4KCSogcGEvbG9uZ19kb3VibGUuaDogTmV3IGZpbGUuCgkqIGNvbmZpZ3VyZS5pbiAoaHB1eDEwLCBocHV4MTEgY29uZmlndXJhdGlvbnMpOiBocHV4MTAgYW5kIGhwdXgxMQoJYm90aCBoYXZlIDEyOGJpdCB3aWRlIGxvbmcgZG91Ymxlcy4KCSogY29uZmlndXJlOiBSZWJ1aWx0LgoKMjAwMC0wMi0yMSAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogZGVmYXVsdHMuaCAoQVNNX09VVFBVVF9BU0NJSSk6IENvbnN0aWZ5IGEgY2hhciouCgoJKiBmbG93LmMgKGdldF9jb21tb25fZGVzdCwgY2hhaW5fcmVvcmRlcl9ibG9ja3MsIG1ha2VfcmVvcmRlcl9jaGFpbiwKCWZpeHVwX3Jlb3JkZXJfY2hhaW4sIHNraXBfaW5zbnNfYmV0d2Vlbl9ibG9jayk6IEFkZCBzdGF0aWMgcHJvdG90eXBlcy4KCShsaWZlX2FuYWx5c2lzKTogV3JhcCB2YXJpYWJsZSBgaScgd2l0aCBtYWNybyBFTElNSU5BQkxFX1JFR1MuCgoJKiBoYWlmYS1zY2hlZC5jIChyYW5rX2Zvcl9zY2hlZHVsZSk6IERvbid0IGNhc3QgYXdheSBjb25zdC1uZXNzLgoKCSogaW50ZWdyYXRlLmMgKGNvbXBhcmVfYmxvY2tzLCBmaW5kX2Jsb2NrKTogTGlrZXdpc2UuCgoJKiBydGwuYyAoZmF0YWxfd2l0aF9maWxlX2FuZF9saW5lKTogQWRkIEFUVFJJQlVURV9QUklOVEZfMi4KCgkqIHJ0bC5oIChzZXRfZmlsZV9hbmRfbGluZV9mb3Jfc3RtdCk6IENvbnN0aWZ5IGEgY2hhciouCgoJKiBzdG10LmMgKHN0bXRfc3RhdHVzLCBzZXRfZmlsZV9hbmRfbGluZV9mb3Jfc3RtdCwKCWV4cGFuZF9hc21fb3BlcmFuZHMpOiBMaWtld2lzZS4KCk1vbiBGZWIgMjEgMTc6MDY6MjcgMjAwMCAgSmFzb24gRWNraGFyZHQgIDxqbGVAY3lnbnVzLmNvbT4KCgkqIHByZWRpY3QuYyAoZXN0aW1hdGVfcHJvYmFiaWxpdHkpOiBBZGRlZCB0aGUgcG9pbnRlciBoZXVyaXN0aWMgdG8KCXRoZSBjb2xsZWN0aW9uIG9mIHN0YXRpYyBicmFuY2ggcHJlZGljdG9ycy4KCjIwMDAtMDItMjEgIENhdGhlcmluZSBNb29yZSAgPGNsbUBjeWdudXMuY29tPgoKCSogY29uZmlnL21pcHMvbWlwcy5oIChBU01fU1BFQyk6IEFkZCAtbWZpeDcwMC4KCSogaW52b2tlLnRleGkgKC1tZml4NzAwMCk6IERvY3VtZW50LgoKMjAwMC0wMi0yMSAgR2FicmllbCBEb3MgUmVpcyAgPGdkckBjb2Rlc291cmNlcnkuY29tPgoKCSogZGlhZ25vc3RpYy5jIChpbml0X291dHB1dF9idWZmZXIpOiBNYWtlIGl0IHBvc3NpYmxlIHRvIG91dHB1dCBhdAoJbGVhc3QgMzIgY2hhcmFjdGVycyBpZiB3ZSdyZSBnaXZlbiBhIHRvbyBsb25nIHByZWZpeC4KCjIwMDAtMDItMjAgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiB2YXJhc20uYyAoaW5pdGlhbGl6ZXJfY29uc3RhbnRfdmFsaWRfcCk6IENhbGwKCWxhbmdfZXhwYW5kX2NvbnN0YW50IHRvCXNpbXBsaWZ5IHRoZSBjb25zdGFudC4KCjIwMDAtMDItMjAgIEJydWNlIEtvcmIgIDxia29yYkBnbnUub3JnPgoKCSogZml4aW5jL2luY2xoYWNrLmRlZihzdGRpb192YV9saXN0KToKCXR5cGVkZWYgbmVlZHMgdG8gYmUgZGlzYWJsZWQuCgkqIGZpeGluYy9pbmNsaGFjay5zaDogcmVnZW4KCSogZml4aW5jL2ZpeGluY2wueDogcmVnZW4KCjIwMDAtMDItMjAgIEdlb2ZmIEtlYXRpbmcgIDxnZW9mZmtAY3lnbnVzLmNvbT4KCgkqIHByaW50LXJ0bC5jIChwcmludF9ydHgpOiBEb24ndCBwcmludCBhZGRyZXNzZXMgd2hlbgoJZmxhZ19kdW1wX3VubnVtYmVyZWQuCgoyMDAwLTAyLTIwICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBzcGFyYy5jIChzcGFyY19vdXRwdXRfc2NyYXRjaF9yZWdpc3RlcnMpOiBNYXJrIHBhcmFtZXRlciB3aXRoCglBVFRSSUJVVEVfVU5VU0VELgoJKHNwYXJjX3ZhX2FyZywgc3BhcmNfZmxhdF9vdXRwdXRfZnVuY3Rpb25fcHJvbG9ndWUsCglzcGFyY19mbGF0X291dHB1dF9mdW5jdGlvbl9lcGlsb2d1ZSk6IENhc3QgdmFsdWUgdG8gdW5zaWduZWQgaW4KCWNvbXBhcmlzb24uCgkoc3BhcmNfZW1pdF9mbG9hdF9saWJfY21wKTogUmVtb3ZlIHVudXNlZCB2YXJpYWJsZSBgY21wJy4KCgkqIHNwYXJjLm1kOiBBZGQgZGVmYXVsdCBjYXNlIGluIHN3aXRjaC4KCjIwMDAtMDItMTkgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgoJKiBjLXR5cGVjay5jIChhZGRfcGVuZGluZ19pbml0KTogRG9uJ3QgYWJvcnQgZm9yIG11bHRpcGxlCglmaWVsZHMgYXQgdGhlIHNhbWUgb2Zmc2V0LgoJKHBlbmRpbmdfaW5pdF9tZW1iZXIpOiBUZXN0IHRoZSBjb3JyZWN0IG1lbWJlci4KCjIwMDAtMDItMTkgIEhlcm1hbiBBLkouIHRlbiBCcnVnZ2UgPEhhai5UZW4uQnJ1Z2dlQG5ldC5IQ0Mubmw+CgoJKiBleGNlcHQuYyAoc3RhcnRfZHluYW1pY19oYW5kbGVyKSA6IFVzZSBUWVBFX01PREUgKGludGVnZXJfdHlwZV9ub2RlKQoJaW5zdGVhZCBvZiBTSW1vZGUuCgkoc3RhcnRfY2F0Y2hfaGFuZGxlcikgOiBTYW1lLgoKMjAwMC0wMi0xOSAgQnJhZCBMdWNpZXIgIChsdWNpZXJAbWF0aC5wdXJkdWUuZWR1KQoKCSogTWFrZWZpbGUuaW46IEhhdmUgZmxvdy5vIGRlcGVuZCBvbiAkKEVYUFJfSCkKClNhdCBGZWIgMTkgMTg6NDM6MTMgMjAwMCAgUmljaGFyZCBLZW5uZXIgIDxrZW5uZXJAdmxzaTEudWx0cmEubnl1LmVkdT4KCgkqIGMtY29tbW9uLmMgKGRlY2xfYXR0cmlidXRlcyk6IFNldCBERUNMX1NJWkVfVU5JVC4KCSogYy1kZWNsLmMgKGR1cGxpY2F0ZV9kZWNscywgZmluaXNoX2VudW0pOiBMaWtld2lzZS4KCShmaW5pc2hfZGVjbCk6IFJlbW92ZSAtV2xhcmdlci10aGFuIGNvZGUgZnJvbSBoZXJlLgoJKiBmbGFncy5oIChpZF9jbGFzaF9sZW4pOiBOb3cgaW50LgoJKGxhcmdlcl90aGFuX3NpemUpOiBOb3cgSE9TVF9XSURFX0lOVC4KCSogZm9sZC1jb25zdC5jIChzaXplX2ludF93aWRlKTogTm8gbW9yZSBISUdIIHBhcm07IE5VTUJFUiBpcyBzaWduZWQuCglDbGVhbiB1cCBjaGVja2luZyB0byBzZWUgaWYgaW4gdGFibGUuCgkobWFrZV9iaXRfZmllbGRfcmVmKTogUmVtb3ZlIGV4dHJhIHBhcm0gdG8gYml0c2l6ZV9pbnQuCgkqIGdnYy1jb21tb24uYyAoZ2djX21hcmtfdHJlZV9jaGlsZHJlbik6IE1hcmsgREVDTF9TSVpFX1VOSVQuCgkqIHByaW50LXRyZWUuYyAocHJpbnRfbm9kZSk6IFByaW50IERFQ0xfU0laRV9VTklUIGFuZCBUWVBFX1NJWkVfVU5JVC4KCSogc3RtdC5jIChleHBhbmRfZGVjbCk6IFVzZSBERUNMX1NJWkVfVU5JVCBmb3Igc3RhY2sgY2hlY2tpbmcgc2l6ZQoJYW5kIGZvciBjb21wdXRpbmcgc2l6ZSBvZiBkZWNsLgoJKiBzdG9yLWxheW91dC5jIChsYXlvdXRfZGVjbCk6IFNldCBERUNMX1NJWkVfVU5JVC4KCU1vdmUgLVdsYXJnZXItdGhhbiBjb2RlIHRvIGhlcmUuCgkobGF5b3V0X3JlY29yZCk6IFJlbW92ZSBleHRyYSBhcmcgdG8gYml0c2l6ZV9pbnQuCglTZXQgVFlQRV9CSU5GT19TSVpFX1VOSVQuCgkobGF5b3V0X3VuaW9uKTogUmVtb3ZlIGV4dHJhIGFyZyB0byBiaXRzaXplX2ludC4KCVVzZSBwcm9wZXIgdHlwZSBmb3Igc2l6ZSBvZiBRVUFMX1VOSU9OLgoJKGxheW91dF90eXBlKTogUmVtb3ZlIGV4dHJhIGFyZyB0byBiaXRzaXplX2ludC4KCSogdG9wbGV2LmMgKGlkX2NsYXNoX2xlbik6IE5vdyBpbnQuCgkobGFyZ2VyX3RoYW5fc2l6ZSk6IE5vdyBIT1NUX1dJREVfSU5ULgoJKGRlY29kZV9XX29wdGlvbik6IENsZWFuIHVwIGlkLWNsYXNoIGFuZCBsYXJnZXItdGhhbi0gY2FzZXMuCgkqIHRyZWUuYyAoZ2V0X2lkZW50aWZpZXIsIG1heWJlX2dldF9pZGVudGlmaWVyKTogUmVtb3ZlIHVubmVlZGVkIGNhc3RzLgoJKGV4cHJfYWxpZ24sIGNhc2UgRlVOQ1RJT05fREVDTCk6IERFQ0xfQUxJR04gaXMgbm90IGRlZmluZWQuCgkqIHRyZWUuaCAoQklORk9fU0laRV9VTklULCBUWVBFX0JJTkZPX1NJWkVfVU5JVCwgREVDTF9TSVpFX1VOSVQpOiBOZXcuCgkoc3RydWN0IHRyZWVfZGVjbCk6IE5ldyBmaWVsZCBzaXplX3VuaXQuCgkoc2l6ZV9pbnRfd2lkZSk6IE5vIEhJR0ggb3BlcmFuZDsgTlVNQkVSIGlzIG5vdyBzaWduZWQuCgkoc2l6ZV9pbnRfMik6IERlbGV0ZWQuCgkoc2l6ZV9pbnQsIGJpdHNpemVfaW50KTogRG9uJ3QgdXNlIGl0IGFuZCByZXdvcmsgYXJncy4KCSogdmFyYXNtLmMgKGFzc2VtYmxlX3ZhcmlhYmxlLCBvdXRwdXRfY29uc3RydWN0b3IpOiBVc2UgREVDTF9TSVpFX1VOSVQuCgpGcmkgRmViIDE4IDIwOjAxOjU4IDIwMDAgIEplZmZyZXkgQSBMYXcgIChsYXdAY3lnbnVzLmNvbSkKCgkqIHBhL3F1YWRsaWIuYXNtIChfVV9RRmd0LCBfVV9RZmdlKTogRml4IGZsYWdzIGZvciBfVV9RZmNtcCBjYWxsLgoKMjAwMC0wMi0xOCAgR2VvZmYgS2VhdGluZyAgPGdlb2Zma0BjeWdudXMuY29tPgoKCSogaW52b2tlLnRleGkgKFdhcm5pbmcgT3B0aW9ucyk6IEFkZCBhbiBleHBsYW5hdGlvbiBvZiB3aHkKCXlvdSBtaWdodCB3YW50IHRoZSAtV2Zsb2F0LWVxdWFsIGZsYWcuCgpGcmkgRmViIDE4IDIwOjA4OjU3IDIwMDAgIFJpY2hhcmQgS2VubmVyICA8a2VubmVyQHZsc2kxLnVsdHJhLm55dS5lZHU+CgoJKiBiaXRtYXAuYyAoYml0bWFwX29wZXJhdGlvbik6IEF2b2lkIHVzaW5nIC0xIGZvciBpbmRleCBzaW5jZSB1bnNpZ25lZC4KCSogY3BwaW5pdC5jIChuZXdfcGVuZGluZ19kZWZpbmUpOiBBZGQgY2FzdCB0byBhdm9pZCB3YXJuaW5nLgoJKiBleHBtZWQuYyAoZXh0cmFjdF9iaXRfZmllbGQpOiBMaWtld2lzZS4KCSogZmxvdy5jIChlbnVtIHJlb3JkZXJfc2tpcF90eXBlKTogTmV3IHR5cGUuCgkoc2tpcF9pbnNuc19iZXR3ZWVuX2JsY29rKTogTmV3IGl0LgoJUmV3b3JrIHRvIGF2b2lkIHdhcm5pbmcgYWJvdXQgcG9zc2libHkgdW5kZWZpbmVkIHZhcmlhYmxlLgoJKiBmdW5jdGlvbi5jIChhc3NpZ25fcGFybXMpOiBNYWtlIHRoaXNwYXJtX2JvdW5kYXJ5IHVuc2lnbmVkLgoJKiBnZW5yZWNvZy5jICh3cml0ZV9zd2l0Y2gpOiBDYXN0IFhXSU5UIHJlc3VsdCB0byBpbnQuCgkqIGxjbS5jOiBNYW55IHN0YXRpYyBmY25zIGFuZCB2YXJzIG5vdyAjaWZkZWYgT1BUSU1JWkVfTU9ERV9TV0lUQ0hJTkcuCgkqIG1pcHMtdGZpbGUuYyAoaW5pdF9maWxlKTogTWFrZSB0d28gdmVyc2lvbnMgb2YgRkRSIGluaXRpYWxpemVyOgoJb25lIGZvciBNSVBTIGFuZCBvbmUgZm9yIEFscGhhLgoJKGdldF90YWcsIGNvcHlfb2JqZWN0KTogQWRkIGNhc3RzIHRvIGF2b2lkIHdhcm5pbmdzLgoJKiBvcHRhYnMuYyAoaW5pdF9vbmVfbGliZnVuYyk6IENhc3QgTkFNRSB0byAoY2hhciAqKS4KCSogcmVsb2FkLmMgKGZpbmRfcmVsb2Fkcyk6IE1ha2UgVFlQRSBlbnVtIHJlbG9hZF90eXBlLgoJKiBzYml0bWFwLmMgKGR1bXBfc2JpdG1hcCk6IEogaXMgdW5zaWduZWQ7IGRvbid0IHVzZSAiMUwiLgoJKiB1bnJvbGwuYyAodW5yb2xsX2xvb3ApOiBJbml0aWFsaXplIFVOUk9MTF9OVU1CRVIuCgkqIHZhcmFzbS5jIChjb21wYXJlX2NvbnN0YW50XzEpOiBBZGQgY2FzdCB0byBhdm9pZCB3YXJuaW5nLgoJKiBjb25maWcvYWxwaGEvYWxwaGEuYyAoYWxwaGFfZW1pdF94ZmxvYXRpbmdfbGliY2FsbCk6IENhc3QgRlVOQwoJdG8gKGNoYXIgKikuCgkoYWxwaGFfZXhwYW5kX3VuYWxpZ25lZF9sb2FkLCBhbHBoYV9leHBhbmRfdW5hbGlnbmVkX3N0b3JlKToKCUNhc3Qgc3dpdGNoIG9wZXJhbmQgb2Ygc2l6ZSB0byBpbnQuCgkoYWxwaGFfZXhwYW5kX2VwaWxvZ3VlKTogQWx3YXlzIGluaXRpYWxpemUgZnBfb2Zmc2V0IGFuZCBzYV9yZWcuCgkqIGNvbmZpZy9hbHBoYS9hbHBoYS5oIChJTklUSUFMX0VMSU1JTkFUSU9OX09GRlNFVCk6IEFkZCBhYm9ydAoJaW4gdW5oYW5kbGVkIGNhc2UuCgoyMDAwLTAyLTE4ICBOaWNrIENsaWZ0b24gIDxuaWNrY0BjeWdudXMuY29tPgoKCSogY29uZmlnL2FybS9lbGYuaCAoQVNNX09VVFBVVF9BTElHTik6IERvIG5vdCBnZW5lcmF0ZQoJYW55dGhpbmcgZm9yIGFuIGFsaWdubWVudCBvZiB6ZXJvLgoKCSogY29uZmlnL2FybS90aHVtYi5oIChBU01fT1VUUFVUX0FMSUdOKTogRG8gbm90IGdlbmVyYXRlCglhbnl0aGluZyBmb3IgYW4gYWxpZ25tZW50IG9mIHplcm8uCgoyMDAwLTAyLTE4ICBNYXJ0aW4gdm9uIExvZXdpcyAgPGxvZXdpc0BpbmZvcm1hdGlrLmh1LWJlcmxpbi5kZT4KCgkqIGdjYy50ZXhpIChCdWcgUmVwb3J0aW5nKTogUmVmZXIgdG8gYnVncy5odG1sLgoJKEJ1ZyBMaXN0cyk6IExpa2V3aXNlLgoJKiBzeXN0ZW0uaCAoR0NDQlVHVVJMKTogTmV3IHByZXByb2Nlc3NvciBkZWZpbmUuCgkqIHJ0bC5jIChmYW5jeV9hYm9ydCk6IFVzZSBpdC4KCSogZ2NjLmMgKG1haW4pOiBMaWtld2lzZS4KCjIwMDAtMDItMTggIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgoJKiBmbG93LmMgKElOU05fVk9MQVRJTEUsIFNFVF9JTlNOX1ZPTEFUSUxFLCB1aWRfdm9sYXRpbGUpOiBSZW1vdmUuCgkobGlmZV9hbmFseXNpc18xKTogU3Vic3VtZSBpbnRvIC4uLgoJKGxpZmVfYW5hbHlzaXMpOiAuLi4gaGVyZS4gIEZvcmNlIFBST1BfUkVHX0lORk8gb2ZmIGFmdGVyIHJlbG9hZC4KCVVzZSB1cGRhdGVfbGlmZV9pbmZvIGZvciB0aGUgcmVsYXhhdGlvbi4KCSh1cGRhdGVfbGlmZV9pbmZvKTogVXBkYXRlIFJFR19CQVNJQ19CTE9DSyBmb3IgcmVnaXN0ZXJzIGxpdmUgb24KCWVudHJ5IGFuZCByZWdzX2xpdmVfYXRfc2V0am1wLgoJKHNldF9ub29wX3ApOiBTaW1wbGlmeS4KCShub3RpY2Vfc3RhY2tfcG9pbnRlcl9tb2RpZmljYXRpb25fMSk6IFJlbmFtZWQgZnJvbSBzL18xLy8uCgkocmVjb3JkX3ZvbGF0aWxlX2luc25zKTogU3BsaXQgaW50byAuLi4KCShkZWxldGVfbm9vcF9tb3Zlcyk6IC4uLiBoZXJlLAoJKG5vdGljZV9zdGFja19wb2ludGVyX21vZGlmaWNhdGlvbik6IC4uLiBoZXJlLAoJKGluc25fZGVhZF9wKTogLi4uIGFuZCBoZXJlLgoJKHByb3BhZ2F0ZV9ibG9jayk6IERvbid0IHF1ZXJ5IElOU05fVk9MQVRJTEUuCgkobWFya191c2VkX3JlZ3MpOiBNaW5kICFQUk9QX1JFR19JTkZPLgoJKiB0b3BsZXYuYyAocmVzdF9vZl9jb21waWxhdGlvbik6IENhbGwgbWFya19jb25zdGFudF9mdW5jdGlvbiBoZXJlLAoJbm90IGluIGxpZmVfYW5hbHlzaXMuCgpGcmkgRmViIDE4IDAxOjI5OjIyIEVTVCAyMDAwICBKb2huIFdlaGxlICAoam9obkBmZWl0aC5jb20pCgoJKiBsb29wLmMgKGNhbm9uaWNhbGl6ZV9jb25kaXRpb24pOiBOZXcgZnVuY3Rpb24sCglicm9rZW4gb3V0IG9mIGdldF9jb25kaXRpb24uCgkoZ2V0X2NvbmRpdGlvbik6IFVzZSBpdC4KCSogZXhwci5oIChjYW5vbmljYWxpemVfY29uZGl0aW9uKTogUHJvdG90eXBlIGl0LgoKCSogdHJlZS5oICh0cmVlX2ludF9jc3RfbXNiKTogRGVjbGFyZS4KCSogdHJlZS5jICh0cmVlX2ludF9jc3RfbXNiKTogTmV3IGZ1bmN0aW9uLgoKMjAwMC0wMi0xNyAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIHN0bXQuYyAoc2V0X2ZpbGVfYW5kX2xpbmVfZm9yX3N0bXQpOiBEb24ndCBjcmFzaCBpZiBjZnVuLT5zdG10Cglpc24ndCBzZXQuCgoJKiBpbnZva2UudGV4aSAoLWZtZXNzYWdlLWxlbmd0aD1uKTogRG9jdW1lbnQuCgoyMDAwLTAyLTE3ICBKYXNvbiBNZXJyaWxsICA8amFzb25AY2FzZXkuY3lnbnVzLmNvbT4KCgkqIGJpdG1hcC5jIChiaXRtYXBfb3BlcmF0aW9uKTogRG9uJ3QgbGVhayBiaXRtYXAgZWxlbWVudHMuCgoyMDAwLTAyLTE3ICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogZnVuY3Rpb24uYyAodGhyZWFkX3Byb2xvZ3VlX2FuZF9lcGlsb2d1ZV9pbnNucyk6IFB1dCBhIGxpbmUgbm90ZQoJYWZ0ZXIgdGhlIHByb2xvZ3VlLgoKMjAwMC0wMi0xNyAgTmljayBDbGlmdG9uICA8bmlja2NAY3lnbnVzLmNvbT4KCgkqIGNvbmZpZy9hcm0vdGh1bWIuYzogUmVwbGFjZSBpbmNsdWRlcyBvZiBzeXN0ZW0gaGVhZGVycyB3aXRoCgkjaW5jbHVkZSAic3lzdGVtLmgiLgoKMjAwMC0wMi0xNiAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAY3lnbnVzLmNvbT4KCgkqIGNvbmZpZ3VyZS5pbiAoYWxwaGEtbGludXgqLCBhbHBoYS1uZXRic2QpIFtleHRyYV9wYXJ0c106CglBZGQgY3J0YmVnaW5TLm8gYW5kIGNydGVuZFMuby4KCSogYWxwaGEvZWxmLmggKFNUQVJURklMRV9TUEVDKTogVXNlIGNydGJlZ2luUy5vLgoJKEVOREZJTEVfU1BFQyk6IFVzZSBjcnRlbmRTLm8uCgkqIGFscGhhL3QtY3J0YmUgKGNydGJlZ2luUy5vLCBjcnRlbmRTLm8pOiBOZXcgdGFyZ2V0cy4KCgkqIGFscGhhL2NydGJlZ2luLmFzbSAoX19kb19mcmFtZV90YWtlZG93bik6IE1lcmdlIGludG8gLi4uCgkoX19kb19nbG9iYWxfZHRvcnNfYXV4KTogLi4uIGhlcmUuICBDYWxsIF9fY3hhX2ZpbmFsaXplIGlmCglzaGFyZWQgYW5kIHByZXNlbnQuCgkoX19kc29faGFuZGxlKTogTmV3IHZhcmlhYmxlLgoJKiBhbHBoYS9jcnRlbmQuYXNtIChfX2RvX2dsb2JhbF9jdG9yc19hdXgpOiBSZW1vdmUgcnVudGltZQoJYmlhcyB0byBfX0NUT1JfRU5EX18uCgoyMDAwLTAyLTE2ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEBjeWdudXMuY29tPgoKCSogTWFrZWZpbGUuaW4gKHMtY3J0UywgY3J0YmVnaW5TLCBjcnRlbmRTKTogUHJlZml4IHVzYWdlIHdpdGggJChUKS4KCldlZCBGZWIgMTYgMjE6NDA6MDQgMjAwMCAgSGFucy1QZXRlciBOaWxzc29uICA8aHBAYml0cmFuZ2UuY29tPgoKCSogbG9uZ2xvbmcuaCAoX19jbHpfdGFiKTogRGVjbGFyZSBhcyBzdGF0aWMgdG8gbWF0Y2ggZGVmaW5pdGlvbi4KCjIwMDAtMDItMTYgTWFyayBFbGJyZWNodCA8c25vd2JhbGwzQGJpZ2Zvb3QuY29tPgoKCSogaTM4Ni94bS1kamdwcC5oIChMSUJTVERDWFgpOiBEZWxldGUuIE1vdmVkIHRvIGNvbmZpZy9pMzg2L2RqZ3BwLmguCgkoWFJFRl9GSUxFX05BTUUpOiBEZWZpbmUuCgoJKiBpMzg2L2RqZ3BwLmggKERBVEFfU0VDVElPTl9BU01fT1ApOiBEZWZpbmUuCgkoRUhfRlJBTUVfU0VDVElPTl9BU01fT1ApOiBEZWZpbmUuCgkoSURFTlRfQVNNX09QKTogRGVmaW5lLgoJKFRFWFRfU0VDVElPTl9BU01fT1ApOiBEZWZpbmUuCgkoQ1BQX1NQRUMpOiBEZWZpbmUuCgkoQ1RPUlNfU0VDVElPTl9BU01fT1ApOiBEZWZpbmUuCgkoQ1RPUl9TRUNUSU9OX0ZVTkNUSU9OKTogVXNlIGl0LgoJKERUT1JTX1NFQ1RJT05fQVNNX09QKTogRGVmaW5lLgoJKERUT1JfU0VDVElPTl9GVU5DVElPTik6IFVzZSBpdC4KCjIwMDAtMDItMTYgIFphY2sgV2VpbmJlcmcgIDx6YWNrQHdvbGVyeS5jdW1iLm9yZz4KCgkqIHJlZy1zdGFjay5jIChlbWl0X3N3YXBfaW5zbik6IERvIG5vdCBwdXQgYSBuZXcgaW5zbiBiZWZvcmUgYQoJTk9URV9CQVNJQ19CTE9DSy4KCgkqIGZsb3cuYyAoZHVtcF9yZWdzZXQsIGRlYnVnX3JlZ3NldCwgZHVtcF9iYiwgZGVidWdfYmIsCglkZWJ1Z19iYl9uKTogTmV3IGZ1bmN0aW9ucy4KCShkdW1wX2Zsb3dfaW5mbywgcHJpbnRfcnRsX3dpdGhfYmIpOiBVc2UgZHVtcF9yZWdzZXQuCgkqIGJhc2ljLWJsb2NrLmg6IFByb3RvdHlwZSBuZXcgZnVuY3Rpb25zLgoKV2VkIEZlYiAxNiAyMTowNzo1MyAyMDAwICBEZW5pcyBDaGVydHlrb3YgIDxkZW5pc2NAb3ZlcnRhLnJ1PgoKCSogY29uZmlndXJlLmluOiBBZGQgc3VwcG9ydCBmb3IgYXZyIHRhcmdldC4KCSogY29uZmlndXJlOiBSZWJ1aWx0LgoKCSogaW52b2tlLnRleGk6IEFkZCBBVlIgaW52b2NhdGlvbiBkb2NzLgoJKiBpbnN0YWxsLnRleGk6IEFkZCBpbmZvcm1hdGlvbiBhYm91dCBBVlIuCgkqIG1kLnRleGk6IEFkZCBBVlIgY29uc3RyYWludCBsZXR0ZXJzIGRlc2NyaXB0aW9uLgoJKiBleHRlbmQudGV4aTogQWRkIGRlc2NyaXB0aW9uIGZvciBBVlIgc3BlY2lmaWMgYXR0cmlidXRlcy4KCjIwMDAtMDItMTYgIEphc29uIE1lcnJpbGwgIDxqYXNvbkBjYXNleS5jeWdudXMuY29tPgoKCSogZml4aW5jL2ZpeGluYy5zdnI0OiBXcmFwIGJ5dGVvcmRlci5oIHdpdGggZXh0ZXJuICJDIi4KCjIwMDAtMDItMTYgIE5pY2sgQ2xpZnRvbiAgPG5pY2tjQGN5Z251cy5jb20+CgoJKiBlbWl0LXJ0bC5jIChlbWl0X2luc24pOiBNb3ZlIFJUTCBjaGVjayBpbnRvIG1ha2VfaW5zbl9yYXcuCgkobWFrZV9pbnNuX3Jhdyk6IE1vdmUgUlRMIGNoZWNrIGhlcmUuCgoyMDAwLTAyLTE2ICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiB2ZXJzaW9uLmM6IEluY2x1ZGUgZ2Fuc2lkZWNsLmggYW5kIHZlcnNpb24uaC4KCgkqIHZlcnNpb24uaDogV3JhcCBlbnRpcmUgZmlsZSBpbiBtYWNybyBfX0dDQ19WRVJTSU9OX0hfXy4KCgkqIGNvbmZpZ3VyZS5pbiAoZ2NjX3ZlcnNpb24pOiBXaGVuIHNldHRpbmcsIG5hcnJvdyBzZWFyY2ggdG8KCWxpbmVzIGNvbnRhaW5pbmcgYHZlcnNpb25fc3RyaW5nJy4KCgkqIE1ha2VmaWxlLmluIChtYWludmVyc2lvbik6IExpa2V3aXNlLgoJKEdDQ19IKTogTmV3IHZhcmlhYmxlLgoJKGdjYy5oKTogRGVsZXRlIHRhcmdldC4KCShnY2MubywgZ2Njc3BlYy5vLCBjcHBzcGVjLm8pOiBEZXBlbmQgb24gJChHQ0NfSCksIG5vdCBnY2MuaC4KCSh2ZXJzaW9uLm8pOiBEZXBlbmQgb24gdmVyc2lvbi5oLgoJKGRieG91dC5vKTogRG9uJ3QgZGVwZW5kIG9uIGdjYy5oLgoKV2VkIEZlYiAxNiAxNTowNDo0OSAyMDAwICBIYW5zLVBldGVyIE5pbHNzb24gIDxocEBiaXRyYW5nZS5jb20+CgkJCSAgTWljaGFlbCBNZWlzc25lciAgPG1laXNzbmVyQGN5Z251cy5jb20+CgoJKiBtZC50ZXhpIChTaW1wbGUgQ29uc3RyYWludHMpOiBBZGQgaXRlbSBhYm91dCB3aGl0ZXNwYWNlLgoJKiBnZW5vdXRwdXQuYyAoc3RyaXBfd2hpdGVzcGFjZSk6IE5ldy4KCShzY2FuX29wZXJhbmRzKSBbTUFUQ0hfT1BFUkFORCwgTUFUQ0hfU0NSQVRDSF06IENhbGwKCXN0cmlwX3doaXRlc3BhY2UgZm9yIGNvbnN0cmFpbnRzLgoJVGVzdCBwb2ludGVyIHVzaW5nIE5VTEwsIG5vdCAwLgoKMjAwMC0wMi0xNiAgQWxleGFuZHJlIE9saXZhICA8b2xpdmFAbHNkLmljLnVuaWNhbXAuYnI+CgoJKiBjcHBsaWIuYyAoZG9fbGluZSk6IFBlZHdhcm4gZm9yICNsaW5lID4gMzI3NjcuCgoJKiBjLWxleC5jIChyZWFkZXNjYXBlKTogV2FybiBhYm91dCAnXHgnLCBidXQgZG8gbm90IHJlamVjdCBpdC4KCjIwMDAtMDItMTUgIEpvbmF0aGFuIExhcm1vdXIgIDxqbGFybW91ckByZWRoYXQuY28udWs+CgoJKiBnY2MuYyAoZGVmYXVsdF9jb21waWxlcnMpOiBBZGQgbmV3IF9fR05VQ19QQVRDSExFVkVMX18gZGVmaW5lCgl0byBkZWZhdWx0IGNwcCBzcGVjLgoJKGRvX3NwZWNfMSk6IEFkZCBzdXBwb3J0IGZvciAldjMgc3BlYyB1c2VkIGJ5IF9fR05VQ19QQVRDSExFVkVMX18uCgkqIGNwcC50ZXhpOiBEb2N1bWVudCBfX0dOVUNfUEFUQ0hMRVZFTF9fLgoJKiBjcHAuMTogTGlrZXdpc2UuCgoJKiBvYmpjL2xhbmctc3BlY3MuaDogQWRkIG5ldyBfX0dOVUNfUEFUQ0hMRVZFTF9fIGRlZmluZSB0bwoJZGVmYXVsdCBzcGVjLgoKMjAwMC0wMi0xNSAgRGVuaXMgQ2hlcnR5a292ICA8ZGVuaXNjQG92ZXJ0YS5ydT4KCgkqIGNvbmZpZ3VyZS5pbjogQWRkIHN1cHBvcnQgZm9yIGF2ciB0YXJnZXQuCgpXZWQgRmViIDE2IDAzOjIxOjQzIDIwMDAgIEoib3JuIFJlbm5lY2tlIDxhbXlsYWFyQGN5Z251cy5jby51az4KCgkqIHNoLmggKE9WRVJSSURFX09QVElPTlMpOiBEb24ndCBzZXQgc2hfYWRkcl9kaWZmX3ZlY19tb2RlLgoJKHNoX2FkZHJfZGlmZl92ZWNfbW9kZSk6IERvbid0IGRlY2xhcmUuCgkqIHNoLmMgKHNoX2FkZHJfZGlmZl92ZWNfbW9kZSk6IERlbGV0ZS4KCldlZCBGZWIgMTYgMDE6Mjc6NTIgMjAwMCAgSiJvcm4gUmVubmVja2UgPGFteWxhYXJAY3lnbnVzLmNvLnVrPgoKCSogc2gubWQgKG11bHNpM19oaWdocGFydCk6IEFkZCBSRUdfRVFVQUwgbm90ZSB0byBsYXN0IGluc24uCgpXZWQgRmViIDE2IDAwOjU4OjA2IDIwMDAgIEoib3JuIFJlbm5lY2tlIDxhbXlsYWFyQGN5Z251cy5jby51az4KCgkqIHNoLm1kICh1ZGl2c2kzX2kxLCBkaXZzaTNfaTEsIHVtdWxoaXNpM19pLCBtdWxoaXNpM19pKTogTmFtZS4KCShzbXVsc2kzX2hpZ2hwYXJ0X2kpOiBOYW1lLgoJKHVkaXZzaTMpOiBXcmFwIGVtaXR0ZWQgaW5zbnMgaW4gUkVHX0xJQkNBTEwgLyBSRUdfUkVUVkFMIG5vdGVzLgoJKGRpdnNpMywgbXVsaGlzaTMsIHVtdWxoaXNpMywgbXVsc2lkaTMsIHVtdWxzaWRpMyk6IExpa2V3aXNlLgoJKHNtdWxzaTNfaGlnaHBhcnQsIHVtdWxzaTNfaGlnaHBhcnQpOiBMaWtld2lzZS4KCgkobXVsc2lkaTNfaSwgdW11bHNpZGkzX2kpOiBNYWtlIHJ0bCBkZXNjcmliZSBvcGVyYXRpb24KCWNvcnJlY3RseSBpbmRlcGVuZGVudCBvZiBlbmRpYW5uZXNzLgoJKG11bHNpZGkzLCB1bXVsc2lkaTMpOiBOb3cgZGVmaW5lX2luc24uICBIaWRlIGRldGFpbHMgdGhhdAoJY29uZnVzZSB0aGUgb3B0aW1pemVycy4KCShtdWxzaWRpMysxLCB1bXVsc2lkaTMrMSk6IE5ldyBkZWZpbmVfc3BsaXQuCgpUdWUgRmViIDE1IDIzOjIyOjI2IDIwMDAgIEFuZHJldyBIYWxleSAgPGFwaEBjeWdudXMuY29tPgoKCSogY29uZmlnL3NoL3NoLm1kOiBHdWFyZCBpbnNuIHNwbGl0cyBhZ2FpbnN0IGlsbGVnYWwgcmVnaXN0ZXJzLgoJKiBjb25maWcvc2gvc2guaDogQ29ycmVjdCBjb21tZW50IGFib3V0IG1hY3Jvcy4KClR1ZSBGZWIgMTUgMjI6MzA6MzYgMjAwMCAgSiJvcm4gUmVubmVja2UgPGFteWxhYXJAY3lnbnVzLmNvLnVrPgoJCQkgIEFuZHJldyBNYWNMZW9kICA8YW1hY2xlb2RAY3lnbnVzLmNvbT4KCgkqIE1ha2VmaWxlLmluIChsY20ubyk6IERlcGVuZCBvbiBpbnNuLWF0dHIuaC4KCSogYmFzaWMtYmxvY2suaCAob3B0aW1pemVfbW9kZV9zd2l0Y2hpbmcpOiBEZWNsYXJlLgoJKiBsY20uYyAodG1fcC5oLCBpbnNuLWF0dHIuaCk6ICNpbmNsdWRlLgoJKHNlZ2luZm8sIGJiX2luZm8pOiBOZXcgc3RydWN0cy4KCShhbnRpYywgdHJhbnNwLCBjb21wLCBkZWxldGUsIGluc2VydCkgOiBOZXcgZmlsZS1zY29wZSBzdGF0aWMgdmFyaWFibGVzLgoJKG5ld19zZWdpbmZvLCBhZGRfc2VnaW5mbywgbWFrZV9wcmVkc19vcGFxdWUsIHJlZ19kaWVzKTogTmV3IGZ1bmN0aW9ucy4KCShyZWdfYmVjb21lc19saXZlLCBvcHRpbWl6ZV9tb2RlX3N3aXRjaGluZyk6IExpa2V3aXNlLgoJKiB0bS50ZXhpOiBBZGQgZGVzY3JpcHRpb24gb2YgbW9kZSBzd2l0Y2hpbmcgbWFjcm9zLgoJKiB0b3BsZXYuYyAocmVzdF9vZl9jb21waWxhdGlvbik6IENhbGwgb3B0aW1pemVfbW9kZV9zd2l0Y2hpbmcuCgoJKiBzaC1wcm90b3MuaCAocmVtb3ZlX2RlYWRfYmVmb3JlX2NzZSk6IFJlbW92ZSBwcm90b3R5cGUuCgkoZmxkaV9vaywgZnBzY3Jfc2V0X2Zyb21fbWVtKTogTmV3IHByb3RvdHlwZXMuCgkqIHNoLmggKE9QVElNSVpBVElPTl9PUFRJT04pOiBSZW1vdmUgc2hfZmxhZ19yZW1vdmVfZGVhZF9iZWZvcmVfY3NlIHNldC4KCShDT05TVF9ET1VCTEVfT0tfRk9SX0xFVFRFUl9QLCBTRUNPTkRBUllfSU5QVVRfUkVMT0FEX0NMQVNTKToKCURpc2FibGUgZmxkaSBmb3IgKFRBUkdFVF9TSDQgJiYgISBUQVJHRVRfRk1PVkQpLgoJKHNoX2ZsYWdfcmVtb3ZlX2RlYWRfYmVmb3JlX2NzZSk6IFJlbW92ZSBkZWNsYXJhdGlvbi4KCShOVU1fTU9ERVNfRk9SX01PREVfU1dJVENISU5HLCBPUFRJTUlaRV9NT0RFX1NXSVRDSElORyk6IE5ldyBtYWNyb3MuCgkoTU9ERV9VU0VTX0lOX0VYSVRfQkxPQ0ssIE1PREVfTkVFREVELCBNT0RFX0FUX0VOVFJZKTogTGlrZXdpc2UuCgkoTU9ERV9QUklPUklUWV9UT19NT0RFLCBFTUlUX01PREVfU0VUKTogTGlrZXdpc2UuCgkqIHNoLmMgKGJyb2tlbl9tb3ZlKTogRGlzYWJsZSBmbGRpIGZvciAoVEFSR0VUX1NINCAmJiAhIFRBUkdFVF9GTU9WRCkuCgkoYmFycmllcl9hbGlnbik6IEFsbG93IGZvciBKVU1QX0lOU05TIGNvbnRhaW5pbmcgYSBwYXJhbGxlbC4KCShtYWNoaW5lX2RlcGVuZGVudF9yZW9yZyk6IFJlbW92ZSBzaF9mbGFnX3JlbW92ZV9kZWFkX2JlZm9yZV9jc2Ugc2V0LgoJKGZsZGlfb2spOiBOZXcgZnVuY3Rpb24uCgkoZ2V0X2Zwc2NyX3J0eCk6IEFkZCBmcHNjcl9ydHggYXMgR0Mgcm9vdC4KCShlbWl0X3NmX2luc24pOiBPbmx5IGdlbmVyYXRlIGZwdSBzd2l0Y2hlcyB3aGVuIG9wdGltaXplIDwgMS4KCShlbWl0X2RmX2luc24pOiBMaWtld2lzZS4KCShleHBhbmRfZnBfYnJhbmNoLCBlbWl0X2Zwc2NyX3VzZSwgcmVtb3ZlX2RlYWRfYmVmb3JlX2NzZSk6IERlbGV0ZS4KCShzaF9mbGFnX3JlbW92ZV9kZWFkX2JlZm9yZV9jc2UpOiBEZWxldGUuCgkoZ2V0X2ZyZWVfcmVnLCBmcHNjcl9zZXRfZnJvbV9tZW0pOiBOZXcgZnVuY3Rpb25zLgoJKiBzaC5tZCAobW92ZGYsIG1vdnNmKTogUmVtb3ZlIG5vX25ld19wc2V1ZG9zIGNvZGUuCgkocmV0dXJuKTogUmVtb3ZlIGVtaXRfZnBzY3JfdXNlIC8gcmVtb3ZlX2RlYWRfYmVmb3JlX2NzZSBjYWxscy4KCjIwMDAtMDItMTUgIExvcmVuIFJpdHRsZSAgPGxqcml0dGxlQGFjbS5vcmc+CgoJKiBnaW5jbHVkZS9zdGRkZWYuaDogQ29ycmVjdCB1c2FnZSBvZiBfQlNEX1JVTkVfVF8gZm9yIEZyZWVCU0QuCgoyMDAwLTAyLTE1ICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBNYWtlZmlsZS5pbiAoVFJFRV9ILCBjb2xsZWN0Mi5vLCBnY2MuaCwgbWlwcy10ZmlsZS5vLCBjY2NwLm8sCgljcHBoYXNoLm8sIGNwcGluaXQubywgcHJvdG9pemUubywgdW5wcm90b2l6ZS5vKTogRGVwZW5kIG9uIHZlcnNpb24uaC4KCgkqIGNjY3AuYzogSW5jbHVkZSB2ZXJzaW9uLmggYW5kL29yIGRvbid0IGRlY2xhcmUgYHZlcnNpb25fc3RyaW5nJy4KCSogY29sbGVjdDIuYzogTGlrZXdpc2UuCgkqIGFscGhhLmM6IExpa2V3aXNlLgoJKiBhcm0vYW9mLmg6IExpa2V3aXNlLgoJKiBhcm0vY29mZi5oOiBMaWtld2lzZS4KCSogYXJtL2VsZi5oOiBMaWtld2lzZS4KCSogYXJtL3BlLmg6IExpa2V3aXNlLgoJKiBhcm0vdGNvZmYuaDogTGlrZXdpc2UuCgkqIGFybS90ZWxmLmg6IExpa2V3aXNlLgoJKiBhcm0vdHBlLmg6IExpa2V3aXNlLgoJKiBhcm0vdnhhcm0uaDogTGlrZXdpc2UuCgkqIGNvbnZleC9jb252ZXguYzogTGlrZXdpc2UuCgkqIGkzODYvZGd1eC5jOiBMaWtld2lzZS4KCSogaTM4Ni9zdW4zODYuaDogTGlrZXdpc2UuCgkqIG04OGsvbTg4ay5jOiBMaWtld2lzZS4KCSogbWNvcmUvbWNvcmUtcGUuaDogTGlrZXdpc2UuCgkqIG1pcHMvbWlwcy5oOiBMaWtld2lzZS4KCSogcm9tcC9yb21wLmg6IExpa2V3aXNlLgoJKiBzaC9zaC5jOiBMaWtld2lzZS4KCSogY3BwaGFzaC5jOiBMaWtld2lzZS4KCSogY3BwaW5pdC5jOiBMaWtld2lzZS4KCSogZHdhcmYyb3V0LmM6IExpa2V3aXNlLgoJKiBkd2FyZm91dC5jOiBMaWtld2lzZS4KCSogZ2NjLmM6IExpa2V3aXNlLgoJKiBnY2MuaDogTGlrZXdpc2UuCgkqIG1pcHMtdGZpbGUuYzogTGlrZXdpc2UuCgkqIHByb3RvaXplLmM6IExpa2V3aXNlLgoJKiB0b3BsZXYuYzogTGlrZXdpc2UuCgkqIHRyZWUuaDogTGlrZXdpc2UuCgoJKiB2ZXJzaW9uLmMgKHZlcnNpb25fc3RyaW5nKTogQ29uc3RpZnkgYSBjaGFyKi4KCgkqIHZlcnNpb24uaDogTmV3IGZpbGUuCgoyMDAwLTAyLTE0ICBOaWNrIENsaWZ0b24gIDxuaWNrY0BjeWdudXMuY29tPgoKCSogY29uZmlndXJlLmluOiBBZGQgbWNvcmUtZWxmIGFuZCBtY29yZS1wZSB0YXJnZXRzLgoJKiBjb25maWd1cmU6IFJlZ2VuZXJhdGUuCgoJKiBORVdTOiBBZGQgbm90ZSB0aGF0IE1Db3JlIHBvcnQgaGFzIGJlZW4gY29udHJpYnV0ZWQuCgoJKiBpbnZva2UudGV4aTogRG9jdW1lbnQgY29tbWFuZCBsaW5lIHN3aXRjaGVzIGZvciBNQ29yZSBwb3J0LgoJKiBpbnN0YWxsLnRleGk6IEFkZCBNQ29yZSB0byBsaXN0IG9mIHN1cHBvcnRlZCB0YXJnZXRzLgoKMjAwMC0wMi0xNCAgR2VvZmYgS2VhdGluZyAgPGdlb2Zma0BjeWdudXMuY29tPgoKCSogY29sbGVjdDIuYyAobWFpbikgW0NPTExFQ1RfRVhQT1JUX0xJU1RdOiBJZiB3ZSBoYXZlIGZyYW1lcywKCXRoZW4gd2Ugd2lsbCBuZWVkIHRvIGltcG9ydCB0aGUgZnJhbWUgaGFuZGxpbmcgZnVuY3Rpb25zLgoJKHNjYW5fcHJvZ19maWxlKSBbQ09MTEVDVF9FWFBPUlRfTElTVF06IFdlIHdpbGwgYWxzbyBuZWVkCgl0byBpbXBvcnQgdGhlIGZyYW1lcyB0aGVtc2VsdmVzLgoKTW9uIEZlYiAxNCAxMzozMTowMSAyMDAwICBTdGFuIENveCAgPHNjb3hAY3lnbnVzLmNvbT4KCQkJICBKYXNvbiBFY2toYXJkdCAgPGpsZUBjeWdudXMuY29tPgoKCSogYmFzaWNfYmxvY2suaDogQWRkZWQgcHJvdG90eXBlIGZvciByZW9yZGVyX2Jhc2ljX2Jsb2Nrcy4KCSogdG9wbGV2LmM6IENoYW5nZXMgdG8gYWRkIC1mcmVvcmRlci1ibG9ja3MgYW5kIGdyYXBoIGR1bXAgYWZ0ZXIKCWJsb2NrIHJlb3JkZXJpbmcgaXMgZG9uZS4KCSogZmxvdy5jIChyZW9yZGVyX2Jsb2NrX2RlZik6IE5ldyBzdHJ1Y3R1cmUgZm9yIHVzZSBkdXJpbmcgYmxvY2sKCXJlb3JkZXJpbmcuCgkoUkVPUkRFUl9CTE9DS18qKTogTmV3IG1hY3JvcyB0byBhY2Nlc3MgbWVtYmVycyBvZiBhYm92ZSBzdHJ1Y3R1cmUuCgkoc2tpcF9pbnNuc19iZXR3ZWVuX2Jsb2NrLCBnZXRfY29tbW9uX2Rlc3QsIGNoYWluX3Jlb3JkZXJfYmxvY2tzLAoJbWFrZV9yZW9yZGVyX2NoYWluLCBmaXh1cF9yZW9yZGVyX2NoYWluLCByZW9yZGVyX2Jhc2ljX2Jsb2Nrcyk6IE5ldwoJZnVuY3Rpb25zIGZvciBibG9jayByZW9yZGVyaW5nLgoKTW9uIEZlYiAxNCAxMToyNDo0NCAyMDAwICBIYW5zLVBldGVyIE5pbHNzb24gIDxocEBiaXRyYW5nZS5jb20+CgoJKiBnY2MudGV4aSAoUGFzc2VzKTogRml4IHR5cG8uCgkqIG1kLnRleGkgKFN0YW5kYXJkIE5hbWVzKTogRGl0dG8uCgkqIHRtLnRleGkgKFN0b3JhZ2UgTGF5b3V0KTogRGl0dG8uCgoyMDAwLTAyLTEzICBaYWNrIFdlaW5iZXJnICA8emFja0B3b2xlcnkuY3VtYi5vcmc+CgoJKiBjcHBsaWIuYyAoZG9fZGVmaW5lKTogT25seSBmcmVlIHRoZSBvbGQgZGVmaW5pdGlvbiBpZiBpdAoJYWN0dWFsbHkgaGFkIG9uZS4KCjIwMDAtMDItMTMgICBOZWlsIEJvb3RoICA8TmVpbEJAZWFydGhsaW5nLm5ldD4KCgkqIGNwcGZpbGVzLmMgKHJlYWRfYW5kX3ByZXNjYW4pOiBXaGVuIGVtaXR0aW5nIGRlZmVycmVkCgluZXdsaW5lcywgdGVzdCBzcGVjY2FzZVtdIGFnYWluIGluc3RlYWQJb2YgY2hlY2tpbmcgZWFjaAoJcG9zc2libGUgd2hpdGVzcGFjZSBjaGFyYWN0ZXIgaW4gdHVybi4gIFdoZW4gd2UgZW5jb3VudGVyIFxyLAoJbG9vayBiZWhpbmQgZm9yIFxuIGZpcnN0LCB0aGVuIGFoZWFkLgoKMjAwMC0wMi0xMyAgWmFjayBXZWluYmVyZyAgPHphY2tAd29sZXJ5LmN1bWIub3JnPgoKCSogY3NlLmMgKGNzZV9hbHRlcmVkKTogTmV3IGludGVybmFsIGZsYWcuCgkoY3NlX2luc24pOiBTZXQgaXQgaWYgd2UgY2hhbmdlZCBhbiBpbnNuLgoJKGNzZV9tYWluKTogQ2xlYXIgY3NlX2FsdGVyZWQgYmVmb3JlIGVhY2ggYmFzaWMgYmxvY2suCglPbmx5IGdhcmJhZ2UgY29sbGVjdCBpZiBjc2VfYWx0ZXJlZCBpcyB0cnVlIGFmdGVyd2FyZC4KClN1biBGZWIgMTMgMTQ6MTI6MjggMjAwMCAgUmFpbmVyIE9ydGggIDxyb0BUZWNoRmFrLlVuaS1CaWVsZWZlbGQuREU+CgoJKiBzcGFyYy9zb2wyLmggKExJQl9TUEVDKTogTGluayAtbGRsIGlmIHByb2ZpbGluZy4KClN1biBGZWIgMTMgMTM6MjE6NTUgMjAwMCAgSmVmZnJleSBBIExhdyAgKGxhd0BjeWdudXMuY29tKQoKCSogY29tYmluZS5jIChzaW1wbGlmeV9jb21wYXJpc29uKTogRml4IHR5cG8uCgpTdW4gRmViIDEzIDEyOjU3OjUyIDIwMDAgIE5laWwgQm9vdGggPE5laWxCQGVhcnRobGluZy5uZXQ+CgoJKiBwcmVmaXguYyAoY29uY2F0LCBsb29rdXBfa2V5KTogVXNlIHhtYWxsb2MgYW5kIHhyZWFsbG9jCgljb25zaXN0ZW50bHkuCgoyMDAwLTAyLTEzICBNaWNoYWVsIEhheWVzICA8bS5oYXllc0BlbGVjLmNhbnRlcmJ1cnkuYWMubno+CgoJKiBmbG93LmMgKGZsb3dfbG9vcF90cmVlX25vZGVfYWRkKTogVXNlIGJldHRlciBhbGdvcml0aG0gYnkgcGFzc2luZwoJcHJldmlvdXNseSBpbnNlcnRlZCBub2RlIGluc3RlYWQgb2Ygcm9vdCBub2RlLglDYWxsZXIgY2hhbmdlZC4KCjIwMDAtMDItMTMgIE1pY2hhZWwgSGF5ZXMgIDxtLmhheWVzQGVsZWMuY2FudGVyYnVyeS5hYy5uej4KCgkqIGJhc2ljLWJsb2NrLmggKEZMT1dfTE9PUF9GSVJTVF9CTE9DSywgRkxPV19MT09QX0xBU1RfQkxPQ0spOiBEZWxldGUuCgoyMDAwLTAyLTEyICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBjcnRzdHVmZi5jIChfX2RvX2dsb2JhbF9jdG9yc19hdXgsIF9fcmVnX2ZyYW1lX2N0b3IsCglfX2RlcmVnX2ZyYW1lX2R0b3IpOiBBZGQgcHJvdG90eXBlIGFyZ3VtZW50LgoKCSogZ3Roci1kY2UuaCAoX19ndGhyZWFkX2FjdGl2ZV9wLCBfX2d0aHJlYWRfb25jZSk6IExpa2V3aXNlLgoKCSogZ3Roci1wb3NpeC5oIChfX2d0aHJlYWRfYWN0aXZlX3AsIF9fZ3RocmVhZF9vbmNlKTogTGlrZXdpc2UuCgoJKiBndGhyLXNvbGFyaXMuaCAoX19ndGhyZWFkX2FjdGl2ZV9wLCBfX2d0aHJlYWRfb25jZSk6IExpa2V3aXNlLgoKCSogZ3Roci12eHdvcmtzLmggKF9fZ3RocmVhZF9vbmNlKTogTGlrZXdpc2UuCgoJKiBndGhyLXdpbjMyLmggKF9fZ3RocmVhZF9hY3RpdmVfcCwgX19ndGhyZWFkX29uY2UpOiBMaWtld2lzZS4KClNhdCBGZWIgMTIgMDE6NDQ6MjYgTUVUIDIwMDAgIEphbiBIdWJpY2thICA8amhAc3VzZS5jej4KCgkqIGkzODYuYyAoaXg4Nl9lbWl0X3Jlc3RvcmVfcmVnc191c2luZ19tb3YpOiBCcmVhayBvdXQgZnJvbSAuLi4KCShpeDg2X2V4cGFuZF9lcGlsb2d1ZSk6IC4uLiBoZXJlLiBVc2UgbW92IGluc3RlYWQgb2YgYWRkIHRvIHJlc3RvcmUKCXN0YWNrIHBvaW50ZXIgaW4gZnVuY3Rpb25zIHcvbyBzYXZlZCByZWdpc3RlcnMsIG91dHB1dCBMRUFWRSBtb3JlIG9mdGVuCglvbiBUQVJHRVRfVVNFX0xFQVZFIG1hY2hpbmVzLgoKMjAwMC0wMi0wNyAgRG1pdHJpIE1ha2Fyb3YgIDxkaW1Ad3JzLmNvbT4gJiBCZXJuZCBTY2htaWR0IDxiZXJuZHNAcmVkaGF0LmNvbT4KCgkqIGNvbmZpZy9hcm0vYXJtLmMgKGFybV9pbml0X2N1bXVsYXRpdmVfYXJncyk7IE5ldyBmdW5jdGlvbjoKCUluaXRsYWlzZSB0aGUgQ1VNVUxBVElFX0FSR1Mgc3RyY3V0dXJlIGZvciBhIGZ1bmN0aW9uCglkZWZpbml0aW9uLgoJKGFybV9mdW5jdGlvbl9hcmcpOiBOZXcgZnVuY3Rpb246IERldGVybWluZSB3aGVyZSB0byBwbGFjZSBhCglmdW5jdGlvbidzIGFyZ3VtZW50LiAgQWxzbyBoYW5kbGVzIGRlY2lkaW5nIHRoZSBmdW5jdGlvbidzCgljYWxsIGNvb2tpZS4KCShjdXJyZW50X2ZpbGVfZnVuY3Rpb25fb3BlcmFuZCk6IE5ldyBmdW5jdGlvbjogUmV0dXJuIHRydWUgaWYKCXRoZSBzeW1ib2wgaXMgYSBmdW5jdGlvbiB3aGljaCBoYXMgYWxyZWFkeSBiZWVuIGNvbXBpbGVkLgoJKGFybV9pc19sb25nX2NhbGxfcCk6IE5ldyBmdW5jdGlvbjogUmV0dXJuIHRydWUgaWYgdGhlCglpbmRpY2F0ZWQgZnVuY3Rpb24gc2hvdWxkIGJlIGNhbGxlZCB2aWEgYSBsb25nIGNhbGwuCgkoYXJtX3ZhbGlkX3R5cGVfYXR0cmlidXRlX3ApOiBOZXcgZnVuY3Rpb246IFJldHVybiB0cnVlIGlmIHRoZQoJYXR0cmlidXRlIGlzIGEgdmFsaWQsIGFybSBzcGVjaWZpYywgYXR0cmlidXRlLgoJKGFybV9jb21wX3R5cGVfYXR0cmlidXRlKTogTmV3IGZ1bmN0aW9uOiBSZXR1cm4gdHJ1ZSBpZiB0aGUKCXR3byB0eXBlcyBoYXZlIGNvbXBhdGlibGUsIGFybSBzcGVjaWZpYywgYXR0cmlidXRlcy4KCgkqIGNvbmZpZy9hcm0vYXJtLmggKENVTVVMQVRJVkVfQVJHUyk6IFJlZGVmaW5lIHRvIGJlIGEKCXN0cnVjdHVyZS4KCShGVU5DVElPTl9BUkcpOiBSZWRlZmluZSB0byBjYWxsIGFybV9mdW5jdGlvbl9hcmcuCgkoRlVOQ1RJT05fQVJHX1BBUlRJQUxfTlJFR1MpOiBSZWRlZmluZSB0byB1c2UgY29ycmVjdAoJc3RydWN0dXJlIGZpZWxkLgoJKElOSVRfQ1VNVUxBVElWRV9BUkdTKTogUmVkZWZpbmUgdG8gY2FsbAoJYXJtX2luaXRfY3VtdWxhdGl2ZV9hcmdzLgoJKEZVTkNUSU9OX0FSR19BRFZBTkNFKTogUmVkZWZpbmUgdG8gdXNlIGNvcnJlY3Qgc3RydWN0dXJlCglmaWVsZC4KCShTRVRVUF9JTkNPTUlOR19WQVJBUkdTKTogUmVkZWZpbmUgdG8gdXNlIGNvcnJlY3Qgc3RydWN0dXJlCglmaWVsZC4KCShBUk1fTUFSS19ORUFSQllfRlVOQ1RJT04pOiBOZXcgbWFjcm86IE1hcmsgYWxyZWFkeSBjb21waWxlZAoJZnVuY3Rpb25zLgoJKEVOQ09ERV9TRUNUSU9OKTogQWRkIGNhbGwgdG8gQVJNX01BUktfTkVBUkJZX0ZVTkNUSU9OLgoJKFZBTElEX01BQ0hJTkVfVFlQRV9BVFRSSUJVVEUpOiBEZWZpbmUuCgkoQ09NUF9UWVBFX0FUVFJJQlVURVMpOiBEZWZpbmUuCgoJKiBjb25maWcvYXJtL2FybS5tZCAoY2FsbCk6IENhbGwgYXJtX2lzX2xvbmdfY2FsbF9wIHRvIGRlY2lkZQoJaWYgYSBsb25nIGNhbGwgaXMgbmVlZGVkLgoJKGNhbGxfdmFsdWUpOiBDYWxsIGFybV9pc19sb25nX2NhbGxfcCB0byBkZWNpZGUgaWYgYSBsb25nIGNhbGwKCWlzIG5lZWRlZC4KCShjYWxsX3N5bWJvbCk6IENhbGwgYXJtX2lzX2xvbmdfY2FsbF9wIHRvIGRlY2lkZSBpZiBhIGxvbmcgY2FsbAoJaXMgbmVlZGVkLgoKCSogY29uZmlnL2FybS9hcm0tcHJvdG9zLmg6IEFkZCBwcm90b3R5cGUgZm9yIGFybV9pc19sb25nX2NhbGxfcC4KCjIwMDAtMDItMTEgIERlbmlzIENoZXJ0eWtvdiAgPGRlbmlzY0BvdmVydGEucnU+CgoJKiBSRUFETUUuQVZSOiBOZXcgZmlsZSB3aXRoIGluZm9ybWF0aW9uIGFib3V0IHRoZSBhdnIgcG9ydHMuCgkqIGNvbmZpZy9hdnI6IE5ldyBkaXJlY3Rvcnkgd2l0aCBhdnIgcG9ydCBmaWxlcy4KCjIwMDAtMDItMTEgIEFuZHJlYXMgSmFlZ2VyICA8YWpAc3VzZS5kZT4KCgkqIGZpeGluYy9NYWtlZmlsZS5pbiAoRklYSU5DX0RFRlMpOiBSZW1vdmUgdW5uZWVkZWQgQGZpeGluY19kZWZzQC4KCjIwMDAtMDItMTEgIFphY2sgV2VpbmJlcmcgIDx6YWNrQHdvbGVyeS5jdW1iLm9yZz4KCgkqIGNwcGhhc2guYzogRml4IGZvcm1hdHRpbmcsIHVwZGF0ZSBjb21tZW50YXJ5LgoJKGR1bXBfZGVmaW5pdGlvbik6IFRha2UgdGhyZWUgc2VwYXJhdGUgYXJndW1lbnRzIGluc3RlYWQgb2YgYQoJTUFDUk9ERUYgc3RydWN0dXJlIGFyZ3VtZW50LgoJKiBjcHBoYXNoLmg6IFVwZGF0ZSBwcm90b3R5cGUgb2YgZHVtcF9kZWZpbml0aW9uLgoJKiBjcHBpbml0LmMgKGNwcF9maW5pc2gpOiBVcGRhdGUgY2FsbCBvZiBkdW1wX2RlZmluaXRpb24uCgoJKiBjcHBsaWIuYyAoZG9fZGVmaW5lKTogQWx3YXlzIGNyZWF0ZSBuZXcgaGFzaCBlbnRyeSB3aXRoCglUX01BQ1JPIHR5cGUuICBSZW1vdmUgcmVkdW5kYW50IGNoZWNrIGZvciByZWRlZmluaXRpb24gb2YKCXBvaXNvbmVkIGlkZW50aWZpZXIuICBVcGRhdGUgY2FsbCBvZiBkdW1wX2RlZmluaXRpb24uCgkoZG9fdW5kZWYpOiBEb24ndCBjYWxsIGNoZWNrX21hY3JvX25hbWUuICBSZW5hbWUgc3ltX2xlbmd0aCB0bwoJbGVuLgoJKGRvX2Vycm9yLCBkb193YXJuaW5nKTogRG9uJ3QgdXNlIGNvcHlfcmVzdF9vZl9saW5lIG9yCglTS0lQX1dISVRFX1NQQUNFLgoJKGRvX3dhcm5pbmcpOiBEb24ndCB1c2UgcGVkd2FybiBmb3IgdGhlIGFjdHVhbCB3YXJuaW5nLAoJb25seSB0aGUgbm90aWNlIGFib3V0IGl0cyBub3QgYmVpbmcgaW4gdGhlIHN0YW5kYXJkLiAgKEZpeGVzCglidWcgd2l0aCAjd2FybmluZyBpbiBzeXN0ZW0gaGVhZGVycy4pCgkoZG9faWRlbnQpOiBTdHJpY3RlciBhcmd1bWVudCBjaGVja2luZyAtIGFjY2VwdCBvbmx5IGEgc2luZ2xlCglzdHJpbmcgYWZ0ZXIgI2lkZW50LiAgQWxzbywgbWFjcm8tZXhwYW5kIHRoZSBsaW5lLgoJKGRvX3hpZmRlZik6IFVzZSBjcHBfZGVmaW5lZC4gIERlLW9iZnVzY2F0ZS4KCgkoZG9fcHJhZ21hKTogU3BsaXQgb3V0IHNwZWNpZmljIHByYWdtYSBoYW5kbGluZyB0byBzZXBhcmF0ZQoJZnVuY3Rpb25zLiAgVXNlIGdldF9kaXJlY3RpdmVfdG9rZW4uICBVcGRhdGUgY29tbWVudGFyeS4gIERvCglub3QgcGFzcyBvbiAjcHJhZ21hIG9uY2Ugb3IgI3ByYWdtYSBwb2lzb24gdG8gdGhlIGZyb250IGVuZC4KCShkb19wcmFnbWFfb25jZSwgZG9fcHJhZ21hX2ltcGxlbWVudGF0aW9uLCBkb19wcmFnbWFfcG9pc29uLAoJZG9fcHJhZ21hX2RlZmF1bHQpOiBOZXcuCgpGZWIgMTEgMTI6MzA6NTMgMjAwMCAgSmVmZnJleSBBIExhdyAgKGxhd0BjeWdudXMuY29tKQoKCSoganVtcC5jIChqdW1wX29wdGltaXplXzEpOiBUaGUgZmlyc3Qgb3BlcmFuZCBpbiBhIHJlbGF0aW9uYWwKCWNhbiBiZSBhIENPTlNUX0lOVC4KCSogb3B0YWJzLmMgKGVtaXRfY29uZGl0aW9uYWxfbW92ZSk6IEhhbmRsZSByZWxhdGlvbmFscyB3aGljaAoJaGF2ZSBhIGtub3duIHRydWUvZmFsc2UgcmVzdWx0LgoKMjAwMC0wMi0xMSAgR2VvZmYgS2VhdGluZyAgPGdlb2Zma0BjeWdudXMuY29tPgoKCSogZnVuY3Rpb24uYyAodGhyZWFkX3Byb2xvZ3VlX2FuZF9lcGlsb2d1ZV9pbnNucyk6IERvbid0IGluc2VydAoJYSBSRVRVUk4gaW5zbiBpbnRvIGEgYmxvY2sgd2hpY2ggYWxyZWFkeSBlbmRzIHdpdGggYSBqdW1wLgoKMjAwMC0wMi0xMSAgR2VvZmYgS2VhdGluZyAgPGdlb2Zma0BjeWdudXMuY29tPgoKCSogaGFpZmEtc2NoZWQuYyAoQlVGX0xFTik6IEluY3JlYXNlIGEgbG90LgoKMjAwMC0wMi0xMSAgTmljayBDbGlmdG9uICA8bmlja2NAY3lnbnVzLmNvbT4KCgkqIGNvbmZpZ3VyZS5pbjogQWRkIHRtX3BfZmlsZSBzcGVjaWZpY2F0aW9uIGZvciB0aHVtYiB0YXJnZXRzLgoJKiBjb25maWd1cmU6IFJlZ2VuZXJhdGUuCgoJKiBjb25maWcvYXJtL3RodW1iLXByb3Rvcy5oOiBOZXcgZmlsZTogUHJvdG90eXBlcyBmb3IgZXhwb3J0ZWQKCWZ1bmN0aW9ucyBkZWZpbmVkIGluIHRodW1iLmMuCgoyMDAwLTAyLTExICBSb2JlcnQgTGlwZSAgPHJvYmVydGxAc2NvLmNvbT4KCgkqIE1ha2VmaWxlLmluIChib290c3RyYXAtbGVhbik6IFJlbW92ZSBhZGRpdGlvbmFsIGZpbGVzLgoJKGJvb3RzdHJhcDItbGVhbik6IExpa2V3aXNlLgoJKFZPTF9GSUxFUyk6IExpc3Qgb2YgZmlsZXMgZm9yIGFib3ZlLgoKMjAwMC0wMi0xMSAgTmF0aGFuIFNpZHdlbGwgIDxuYXRoYW5AYWNtLm9yZz4KCgkqIGNwcGhhc2guYyAoc3BlY2lhbF9zeW1ib2wpOiBSZW1vdmUgc3B1cmlvdXMgYXJndW1lbnQgdG8KCWNwcF9sb29rdXAuCgoyMDAwLTAyLTExICBKb2VsIFNoZXJyaWxsIChqb2VsQE9BUmNvcnAuY29tPgoKCSogY29uZmlndXJlLmluOiAoaSo4Ni0qLXJ0ZW1zKik6IFN3YXBwZWQgZWxmIGFuZCBjb2ZmCglzdGFuemFzLgoJKiBjb25maWd1cmU6IFJlYnVpbHQuCgoyMDAwLTAyLTExICBSb2RuZXkgQnJvd24gIDxSb2RuZXlCcm93bkBwbXNjLmNvbT4KCgkqIHBhLXByb3Rvcy5oOiBXcmFwIGZ1bmN0aW9uX2FyZ19wYWRkaW5nIGluIFRSRUVfQ09ERSAjaWZkZWYuCgpGcmkgRmViIDExIDAyOjU5OjA1IDIwMDAgIEplZmZyZXkgQSBMYXcgIChsYXdAY3lnbnVzLmNvbSkKCgkqIHBhLmMsIHBhLmg6IFJlbW92ZSB0cmlncmFwaCBzZXF1ZW5jZXMgd2l0aGluIGNvbW1lbnRzLgoKRnJpIEZlYiAxMSAwMjo1MTo1NiAyMDAwICBQYXZlbCBSb3NraW4gPHBhdmVsX3Jvc2tpbkBnZW9jaXRpZXMuY29tPgoKCSogaW52b2tlLnRleGkgKFBQQyBPcHRpb25zKTogLW1uby1uZXctbW5lbm9taWNzIC0+IC1tb2xkLW1uZW1vbmljcy4KCkZyaSBGZWIgMTEgMDI6NDg6MzAgMjAwMCAgQnJhZCBMdWNpZXIgIChsdWNpZXJAbWF0aC5wdXJkdWUuZWR1KQoKCSogc2JpdG1hcC5oOiBNYWtlIFNCSVRNQVBfRUxUX0JJVFMgdW5zaWduZWQuCgoyMDAwLTAyLTExICBNaWNoYWVsIEhheWVzICA8bS5oYXllc0BlbGVjLmNhbnRlcmJ1cnkuYWMubno+CgoJKiBjb25maWcvYzR4L2M0eC5jIChmcF96ZXJvX29wZXJhbmQpOiBDaGVjayBmb3IgQ09OU1RfRE9VQkxFLgoKMjAwMC0wMi0xMSAgTWljaGFlbCBIYXllcyAgPG0uaGF5ZXNAZWxlYy5jYW50ZXJidXJ5LmFjLm56PgoKCSogY29uZmlnL2M0eC9jNHguaCAoQVNNX0dMT0JBTElaRV9MQUJFTCk6IFVzZSBjNHhfZ2xvYmFsX2xhYmVsLgoJKEFTTV9PVVRQVVRfRVhURVJOQUwpOiBVc2UgYzR4X2V4dGVybmFsX3JlZi4KCShBU01fT1VUUFVUX0VYVEVSTkFMX0xJQkNBTEwpOiBMaWtld2lzZS4KCShBU01fRklMRV9FTkQpOiBVc2UgYzR4X2ZpbGVfZW5kLgoJKiBjb25maWcvYzR4L2M0eC5jIChjNHhfZ2xvYmFsX2xhYmVsKTogTmV3IGZ1bmN0aW9uLgoJKGM0eF9leHRlcm5hbF9yZWYsIGM0eF9maWxlX2VuZCk6IExpa2V3aXNlLgoKCSogY29uZmlnL2M0eC9jNHgtcHJvdG9zLmggKGM0eF9nbG9iYWxfbGFiZWwpOiBBZGQgcHJvdG90eXBlLgoJKGM0eF9leHRlcm5hbF9yZWYsIGM0eF9lbmRfZmlsZSk6IExpa2V3aXNlLgoKMjAwMC0wMi0xMCAgWmFjayBXZWluYmVyZyAgPHphY2tAd29sZXJ5LmN1bWIub3JnPgoKCSogY3BwZXhwLmM6IERvbid0IGluY2x1ZGUgY3BwaGFzaC5oLgoJKHBhcnNlX2NoYXJjb25zdCwgY3BwX2xleCk6IFVzZSBjcHBfZGVmaW5lZC4KCShjcHBfbGV4KTogVXNlIGdldF9kaXJlY3RpdmVfdG9rZW4gdGhyb3VnaG91dC4gIFJlbW92ZQoJdW5uZWNlc3NhcnkgY2FzZXMgZnJvbSBzd2l0Y2guICBNb3ZlIGFzc2VydGlvbi1oYW5kbGluZyBjb2RlCglkb3duIHRvIE9USEVSIGNhc2UuCgkoY3BwX3BhcnNlX2V4cHIpOiBJZiB3ZSBzZWUgJysnIG9yICctJywgY2hlY2sgdGhlIGNvbnRleHQgdG8KCWRldGVybWluZSBpZiB0aGV5IGFyZSB1bmFyeSBvciBiaW5hcnkgb3BlcmF0b3JzLiAgU3RyZWFtbGluZQoJdGhlIGp1bXBzIGEgYml0LiAgRG8gbm90IGNhbGwgc2tpcF9yZXN0X29mX2xpbmUuCgoJKiBjcHBsaWIuYzogTWFrZSBza2lwX3Jlc3Rfb2ZfbGluZSBhbmQgY3BwX3NraXBfaHNwYWNlCglzdGF0aWMuICBFeHBvcnQgZ2V0X2RpcmVjdGl2ZV90b2tlbi4gIFVwZGF0ZSBjb21tZW50YXJ5LgoJKGNwcF9kZWZpbmVkKTogTmV3IGZ1bmN0aW9uLgoJKGRvX2RlZmluZSk6IFJlbW92ZSByZWZlcmVuY2UgdG8gVF9QQ1NUUklORy4gIENhbGwKCWZyZWVfZGVmaW5pdGlvbiB0byByZWxlYXNlIG1lbW9yeSBmb3Igb2xkIGRlZmluaXRpb24sIHdoZW4KCXJlZGVmaW5pbmcgYSBtYWNyby4KCShldmFsX2lmX2V4cHJlc3Npb24pOiBTZXQgb25seV9zZWVuX3doaXRlIHRvIDAgYmVmb3JlIGNhbGxpbmcKCWNwcF9wYXJzZV9leHByLiAgQ2FsbCBza2lwX3Jlc3Rfb2ZfbGluZSBhZnRlciBpdCByZXR1cm5zLgoJKGNwcF9yZWFkX2NoZWNrX2Fzc2VydGlvbik6IERvbid0IHByZXNlcnZlIGEgcG9pbnRlciBpbnRvIHRoZQoJdG9rZW4gYnVmZmVyIGFjcm9zcyBhIGNhbGwgdG8gY3BwX2dldF90b2tlbi4KCgkqIE1ha2VmaWxlLmluIChjcHBleHAubyk6IERvbid0IGRlcGVuZCBvbiBjcHBoYXNoLmguCgkqIGNwcGZpbGVzLmMgKHJlZHVuZGFudF9pbmNsdWRlX3ApOiBVc2UgY3BwX2RlZmluZWQuCgkqIGNwcGhhc2guYyAoZnJlZV9kZWZpbml0aW9uKTogTmV3IGZ1bmN0aW9uLgoJKGRlbGV0ZV9tYWNybyk6IFVzZSBpdC4gIFVwZGF0ZSBjb21tZW50YXJ5LgoJKiBjcHBoYXNoLmg6IFR5cGVkZWYgSEFTSE5PREUgaGVyZS4gIFByb3RvdHlwZSBjcHBfbG9va3VwIGFuZAoJZnJlZV9kZWZpbml0aW9uLgoJKiBjcHBsaWIuaDogRG9uJ3QgdHlwZWRlZiBIQVNITk9ERSBoZXJlLiBEZWxldGUgVF9QQ1NUUklORwoJZnJvbSBlbnVtIG5vZGVfdHlwZS4gIFByb3RvdHlwZSBjcHBfZGVmaW5lZCBhbmQgZ2V0X2RpcmVjdGl2ZV90b2tlbi4KCURvbid0IHByb3RvdHlwZSBjcHBfbG9va3VwLCBza2lwX3Jlc3Rfb2ZfbGluZSwgb3IgY3BwX3NraXBfaHNwYWNlLgoKCSogZml4LWhlYWRlci5jIChjaGVja19tYWNyb19uYW1lcyk6IFVzZSBjcHBfZGVmaW5lZC4KCShyZWFkX3NjYW5fZmlsZSk6IFNldCBpbmhpYml0X3dhcm5pbmdzIGFuZCBpbmhpYml0X2Vycm9ycyBpbgoJdGhlIG9wdGlvbnMgc3RydWN0dXJlLgoKMjAwMC0wMi0xMCAgRnJhbnogU2lybCAgPEZyYW56LlNpcmwta2VybmVsQGxhdXRlcmJhY2guY29tPgoKCSogYy1wcmFnbWEuYyAobWF4aW11bV9maWVsZF9hbGlnbm1lbnQpOiBSZW1vdmUgZHVwbGljYXRlIGRlY2xhcmF0aW9uLgoKMjAwMC0wMi0xMCAgSmFzb24gTWVycmlsbCAgPGphc29uQGNhc2V5LmN5Z251cy5jb20+CgoJKiBkd2FyZjJvdXQuYyAoYWRkX2Fic3RyYWN0X29yaWdpbl9hdHRyaWJ1dGUpOiBDaGVjayBUUkVFX0NPREUgKG9yaWdpbikKCXJhdGhlciB0aGFuIGRpZS0+ZGllX3RhZy4KClRodSBGZWIgMTAgMTY6MjY6NDkgMjAwMCAgUmljaGFyZCBLZW5uZXIgIDxrZW5uZXJAdmxzaTEudWx0cmEubnl1LmVkdT4KCgkqIGNvbWJpbmUuYyAobWFrZV9leHRyYWN0aW9uLCBmb3JjZV90b19tb2RlKTogQXZvaWQgd2FybmluZyBvbgoJbWl4ZWQtc2lnbmVkbmVzcyBjb25kaXRpb25hbHMuCgkobWFrZV9maWVsZF9hc3NpZ25tZW50LCBub256ZXJvX2JpdHMpOiBMaWtld2lzZS4KCSogZXhwbWVkLmMgKHN0b3JlX2ZpeGVkX2JpdF9maWVsZCk6IEFMSUdOIGFyZyBub3cgdW5zaWduZWQuCgkoc3RvcmVfc3BsaXRfYml0X2ZpZWxkLCBleHRyYWN0X3NwbGl0X2JpdF9maWVsZCk6IExpa2V3aXNlLgoJKGV4dHJhY3RfZml4ZWRfYml0X2ZpZWxkLCBzdG9yZV9iaXRfZmllbGQsCgkqIGV4cHIuYzogQ2hhbmdlIGFsaWdubWVudCB0byBiZSB1bnNpZ25lZCBldmVyeXdoZXJlLgoJKG1vdmVfYnlfcGllY2VzLCBzdG9yZV9jb25zdHJ1Y3Rvcl9maWVsZCwgc3RvcmVfY29uc3RydWN0b3IpOgoJQWxpZ25tZW50IHBhcm0gaXMgdW5zaWduZWQuCgkoZW1pdF9ibG9ja19tb3ZlLCBlbWl0X2dyb3VwX2xvYWQsIGVtaXRfZ3JvdXBfc3RvcmUpOiBMaWtld2lzZS4KCShjbGVhcl9zdG9yYWdlLCBlbWl0X3B1c2hfaW5zbiwgY29tcGFyZV9mcm9tX3J0eCk6IExpa2V3aXNlLgoJKGRvX2NvbXBhcmVfcnR4X2FuZF9qdW1wKTogTGlrZXdpc2UuCgkobW92ZV9ieV9waWVjZXNfbmluc25zLCBjbGVhcl9ieV9waWVjZXMpOiBMaWtld2lzZS4KCUNvbXBhcmUgYWxpZ24gd2l0aCBHRVRfTU9ERV9BTElHTk1FTlQuCgkoZXhwYW5kX2V4cHJfdW5hbGlnbmVkKTogUG9pbnRlciB0byBhbGlnbm1lbnQgaXMgcG9pbnRlciB0byB1bnNpZ25lZC4KCShnZXRfaW5uZXJfcmVmZXJlbmNlKTogTGlrZXdpc2UuCgkoY29weV9ibGttb2RlX2Zyb21fcmVnLCBlbWl0X3B1c2hfaW5zbik6IFJlbW92ZSB1bm5lZWRlZCBjYXN0cy4KCShleHBhbmRfYXNzaWdubWVudCk6IExvY2FsIHZhcnMgZm9yIGFsaWdubWVudCBub3cgdW5zaWduZWQuCgkoc3RvcmVfY29uc3RydWN0b3IsIHN0b3JlX2ZpZWxkLCBleHBhbmRfZXhwciwgZG9fanVtcCk6IExpa2V3aXNlLgoJKGRvX2NvbXBhcmVfYW5kX2p1bXApOiBMaWtld2lzZS4KCShzdG9yZV9maWVsZCk6IENhbGwgbmV3IGZ1bmN0aW9uIGV4cHJfYWxpZ24uCgkqIGV4cHIuaCAoZW1pdF9ibG9ja19tb3ZlLCBlbWl0X2dyb3VwX2xvYWQsIGVtaXRfZ3JvdXBfc3RvcmUpOgoJQWxpZ25tZW50IGFyZyBub3cgdW5zaWduZWQuCgkoY2xlYXJfc3RvcmFnZSwgZW1pdF9wdXNoX2luc24sIGNvbXBhcmVfZnJvbV9ydHgpOiBMaWtld2lzZS4KCShkb19jb21wYXJlX3J0eF9hbmRfanVtcCwgc3RvcmVfYml0X2ZpZWxkKTogTGlrZXdpc2UuCgkoZXh0cmFjdF9iaXRfZmllbGQpOiBMaWtld2lzZS4KCSogZm9sZC1jb25zdC5jIChhZGRfZG91YmxlKTogQWRkIGNhc3QgdG8gZWxpbWluYXRlIHNpZ25lZG5lc3Mgd2FybmluZy4KCSogbWFjaG1vZGUuaCAoR0VUX01PREVfQUxJR05NRU5UKTogUmVzdWx0IGlzIHVuc2lnbmVkLgoJKGdldF9iZXN0X21vZGUpOiBBbGlnbm1lbnQgYXJnIGlzIHVuc2lnbmVkLgoJKiBydGwuaCAobW92ZV9ieV9waWVjZXMpOiBMaWtld2lzZS4KCSogc3RvcmUtbGF5b3V0LmMgKG1heGltdW1fZmllbGRfYWxpZ25tZW50LCBzZXRfYWxpZ25tZW50KToKCU5vdyB1bnNpZ25lZC4KCShsYXlvdXRfZGVjbCk6IEFsaWdubWVudCBhcmcgaXMgbm93IHVuc2lnbmVkLgoJUmVtb3ZlIHVubmVlZGVkIGNhc3RzLgoJKGxheW91dF9yZWNvcmQsIGxheW91dF91bmlvbiwgbGF5b3V0X3R5cGUpOiBSZW1vdmUgdW5uZWVkZWQgY2FzdHMuCglMb2NhbCBhbGlnbm1lbnQgdmFyaWFibGVzIG5vdyB1bnNpZ25lZC4KCShnZXRfYmVzdF9tb2RlKTogQWxpZ25tZW50IGFyZyBub3cgdW5zaWduZWQuCgkqIHRyZWUuYyAoZXhwcl9hbGlnbik6IE5ldyBmdW5jdGlvbi4KCSogdHJlZS5oIChleHByX2FsaWduKTogTGlrZXdpc2UuCgkobWF4aW11bV9maWVsZF9hbGlnbm1lbnQsIHNldF9hbGlnbm1lbnQpOiBOb3cgdW5zaWduZWQuCgkoZ2V0X2lubmVyX3JlZmVyZW5jZSk6IEFsaWdubWVudCBhcmd1bWVudCBpcyBub3cgcG9pbnRlciB0byB1bnNpZ25lZC4KCSogdmFyYXNtLmMgKGFzc2VtYmxlX3ZhcmlhYmxlKTogQWRkIGNhc3QgdG8gZWxpbWluYXRlIHdhcm5pbmcuCgpUaHUgRmViIDEwIDEyOjU2OjQ3IDIwMDAgIEppbSBXaWxzb24gIDx3aWxzb25AY3lnbnVzLmNvbT4KCgkqIGV4cG1lZC5jIChzdG9yZV9iaXRfZmllbGQpOiBJZiBvcDAgYW5kIGZpZWxkbW9kZSBhcmUgdGhlIHNhbWUgc2l6ZSwKCXRoZW4gc3RvcmUgZGlyZWN0bHkgaW50byBvcDAuCgoJKiBjYWxscy5jIChleHBhbmRfY2FsbCk6IFdoZW4gZW1pdHRpbmcgYSBOT1RFX0lOU05fU0VUSk1QLCBzZWFyY2ggZm9yCgl0aGUgQ0FMTF9JTlNOLCBhbmQgZW1pdCB0aGUgbm90ZSBpbW1lZGlhdGVseSBhZnRlciBpdC4KCjIwMDAtMDItMTAgIE5pY2sgQ2xpZnRvbiAgPG5pY2tjQGN5Z251cy5jb20+CgoJKiBjb25maWcvYXJtL3RodW1iLm1kIChlcGlsb2d1ZSk6IEluY2x1ZGUgYSAocmV0dXJuKSBpbiB0aGUKCWdlbmVyYXRlZCBpbnNuLCBhbmQgZW1pdCBpdCB1c2luZyBlbWl0X2p1bXBfaW5zbiBub3QKCWVtaXRfaW5zbi4KClRodSBGZWIgMTAgMTg6Mjg6NTkgTUVUIDIwMDAgIEphbiBIdWJpY2thICA8amhAc3VzZS5jej4KCgkqIGZ1bmN0aW9uLmMgKGFzc2lnbl90ZW1wKTogQ2hhbmdlIHplcm8tc2l6ZWQgYXJyYXlzIHRvIHNpemUgMS4KCSogaW50ZWdyYXRlLmMgKGV4cGFuZF9pbmxpbmVfZnVuY3Rpb24pOiBEbyBub3QgdXBkYXRlCglzdGFja19hbGlnbm1lbnRfbmVlZGVkCgkqIGkzODYuYyAoY29tcHV0ZV9mcmFtZV9zaXplKTogUmVtb3ZlICNpZmRlZiBQUkVGRVJSRURfRlJBTUVfQk9VTkRBUlksCglhZGQgc29tZSBzYW5pdHkgY2hlY2tpbmcsIHJlbW92ZSBvcHRpbWl6YXRpb24gZm9yIGZ1bmN0aW9uIHdpdGgKCXplcm8gZnJhbWUgc2l6ZS4KCjIwMDAtMDItMTAgIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIGZsb3cuYyAobWFya19yZWdzX2xpdmVfYXRfZW5kKTogRGVsZXRlIHVudXNlZCB2YXJpYWJsZXMuCgoJKiBnZ2MtcGFnZS5jIChnZ2NfcGFnZV9wcmludF9zdGF0aXN0aWNzKTogYnplcm8gLT4gbWVtc2V0LgoKCSogaW50ZWdyYXRlLmMgKGNvcHlfcnR4X2FuZF9zdWJzdGl0dXRlKTogV3JhcCB2YXJpYWJsZSBgYWxpZ25tZW50JwoJaW4gbWFjcm8gRlJBTUVfR1JPV1NfRE9XTldBUkQuCgoJKiBzdG10LmMgKGV4cGFuZF9lbmRfYmluZGluZ3MpOiBEZWxldGUgdW51c2VkIHZhcmlhYmxlLgoKCSogdW5yb2xsLmMgKGl0ZXJhdGlvbl9pbmZvKTogTWFyayBwYXJhbWV0ZXIgYGxvb3AnIHdpdGgKCUFUVFJJQlVURV9VTlVTRUQuCgoyMDAwLTAyLTEwICBBbGV4YW5kcmUgT2xpdmEgIDxvbGl2YUBsc2QuaWMudW5pY2FtcC5icj4KCgkqIGZpeGluYy9zZXJ2ZXIuYyAobG9hZF9kYXRhKTogUmV0dXJuIE5VTEwgaWYgdGhlIG1hcmtlciBsaW5lIGlzCglub3QgZm91bmQuCgkocnVuX3NoZWxsKTogSWYgbG9hZF9kYXRhIHJldHVybnMgTlVMTCwgcmV0cnkgdGhlIGNvbW1hbmQgb25jZSwgaW4KCWEgbmV3IHNoZWxsLgoKCSogY29uZmlndXJlOiBSZWJ1aWx0LgoKMjAwMC0wMi0wOSAgQnJ1Y2UgS29yYiAgPGJrb3JiQGdudS5vcmc+CgoJKiBnY2MvZml4aW5jbHVkZXM6ICAqKiBERUxFVEVEICoqCgkqIGdjYy9maXhjcHA6ICAqKiBERUxFVEVEICoqCgkqIGdjYy9maXhpbmMtbnQuc2VkOiAgKiogREVMRVRFRCAqKgoJKiBnY2MvanVzdC1maXhpbmM6ICAqKiBERUxFVEVEICoqCgkqIGdjYy9NYWtlZmlsZS5pbjogIFJlbW92ZWQgb3V0LWRhdGVkIGNvbW1lbnRhcnkKCSogZ2NjL2NvbmZpZ3VyZS5pbjogUmVtb3ZlZCBmYXN0LWZpeGluY2x1ZGVzIGRpc2FibGVtZW50LgoJKiBNQUlOVEFJTkVSUyhJYW4gVGF5bG9yKSBtb3ZlZCB0byAiV3JpdGUgYWZ0ZXIgYXBwcm92YWwiIGdyb3VwLgoKMjAwMC0wMi0wOSAgQ2xpbnRvbiBQb3BldHogIDxjcG9wZXR6QGN5Z251cy5jb20+CgkqIGZ1bmN0aW9uLmMgKHRocmVhZF9wcm9sb2d1ZV9hbmRfZXBpbG9ndWVfaW5zbnMpOiBVbmNvbW1lbnQKCWxhc3QgY2hhbmdlLgoKMjAwMC0wMi0wOSAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAY3lnbnVzLmNvbT4KCgkqIGp1bXAuYyAoZGVsZXRlX2luc24pOiBEb24ndCBkZWxldGUgdXNlciBsYWJlbHMgYXQgLU8wLgoKMjAwMC0wMi0wOSAgUm9iZXJ0IExpcGUgIDxyb2JlcnRsQHNjby5jb20+CgoJKiBNYWtlZmlsZS5pbiAoZ2VuLXByb3Rvcyk6IERvbid0IGRlcGVuZCBvbiBIT1NUX0xJQkRFUFMuCglEb24ndCBsaW5rIHdpdGggSE9TVF9MSUJTLgoKMjAwMC0wMi0wOSAgWmFjayBXZWluYmVyZyAgPHphY2tAd29sZXJ5LmN1bWIub3JnPgoKCSogY29uZmlndXJlLmluOiBDb3JyZWN0IC0taGVscCB0ZXh0IGZvciAtLXdpdGgtZHdhcmYyLgoJUHV0IHRtLWR3YXJmMi5oIGFmdGVyIG90aGVyIHRtIGZpbGVzLCBpZiBpdCdzIHJlcXVlc3RlZC4KCSogY29uZmlndXJlOiBSZWdlbmVyYXRlLgoJKiBjb25maWcvdG0tZHdhcmYyLmg6ICN1bmRlZiBQUkVGRVJSRURfREVCVUdHSU5HX1RZUEUgYmVmb3JlCglkZWZpbmluZyBpdC4KCjIwMDAtMDItMDkgIFphY2sgV2VpbmJlcmcgIDx6YWNrQHdvbGVyeS5jdW1iLm9yZz4KCgkqIGNwcGxpYi5oOiBQcm92aWRlIEhBU0hOT0RFIHR5cGVkZWYgYW5kIGZvcndhcmQgZGVjbCBvZgoJc3RydWN0IGhhc2hub2RlIG9ubHkuICBLaWxsIGNwcF9oYXNobm9kZSB0eXBlZGVmLiAgTUFDUk9ERUYsCglERUZJTklUSU9OLCBzdHJ1Y3QgaGFzaG5vZGUsIHN0cnVjdCBtYWNyb2RlZiwgc3RydWN0CglkZWZpbml0aW9uLCBzY2FuX2RlY2xzIHByb3RvdHlwZSwgZGVmYXVsdCBkZWZuIG9mCglJTkNMVURFX0xFTl9GVURHRSBtb3ZlZCBlbHNld2hlcmUuCgoJKiBjcHBoYXNoLmg6IE1BQ1JPREVGLCBERUZJTklUSU9OLCBzdHJ1Y3QgbWFjcm9kZWYsIHN0cnVjdAoJZGVmaW5pdGlvbiwgYW5kIHN0cnVjdCBoYXNobm9kZSBtb3ZlZCBoZXJlLiBSZW1vdmUgdGhlIHVudXNlZAoJJ3ByZWRlZmluZWQnIGZpZWxkIGZyb20gc3RydWN0IGRlZmluaXRpb24uICBSZXBsYWNlIHRoZSAnYXJncycKCXVuaW9uIHdpdGggaXRzIHNvbGUgbWVtYmVyLiAgQWxsIHVzZXJzIHVwZGF0ZWQgKGNwcGhhc2guYykuCglEZWxldGUgSEFTSFNURVAgYW5kIE1BS0VfUE9TIG1hY3JvcywgYW5kIGhhc2hmIHByb3RvdHlwZS4gIEFkZAoJbXVsdGlwbGUgaW5jbHVkZSBndWFyZC4KCgkqIGNwcGhhc2guYyAoaGFzaGYpOiBNYWtlIHN0YXRpYzsgdXNlIGJldHRlciBhbGdvcml0aG07IGRyb3AKCUhBU0hTSVpFIHBhcmFtZXRlcjsgcmV0dXJuIGFuIHVuc2lnbmVkIGludC4KCShjcHBfbG9va3VwKTogRHJvcCBIQVNIIHBhcmFtZXRlci4gIFBGSUxFIHBhcmFtZXRlciBpcwoJdXNlZC4gQ2FsY3VsYXRlIEhBU0hTSVpFIG1vZHVsdXMgaGVyZS4KCShjcHBfaW5zdGFsbCk6IERyb3AgSEFTSCBwYXJhbWV0ZXIuIENhbGN1bGF0ZSBIQVNIU0laRSBtb2R1bHVzCgloZXJlLgoJKGNyZWF0ZV9kZWZpbml0aW9uKTogRHJvcCBQUkVERUZJTklUSU9OIHBhcmFtZXRlci4KCSogY3BwbGliLmMgKGRvX2RlZmluZSk6IERvbid0IGNhbGN1bGF0ZSBhIGhhc2ggdmFsdWUgaGVyZS4KCURvbid0IHBhc3MgKGtleXdvcmQgPT0gTlVMTCkgdG8gY3JlYXRlX2RlZmluaXRpb24uCgoJKiBzY2FuLmg6IFByb3RvdHlwZSBzY2FuX2RlY2xzIGhlcmUuCgkqIGNwcGZpbGVzLmM6IE1vdmUgSU5DTFVERV9MRU5fRlVER0UgZGVmYXVsdCBkZWZuIGhlcmUuCgkqIGNwcGV4cC5jLCBjcHBmaWxlcy5jLCBjcHBpbml0LmMsIGNwcGxpYi5jLCBmaXgtaGVhZGVyLmM6IEFsbAoJY2FsbGVycyBvZiBjcHBfbG9va3VwIGFuZCBjcHBfaW5zdGFsbCB1cGRhdGVkLgoKCSogY3BwaGFzaC5jIChtYWNhcmcpOiBIb2lzdCBhbGwgdGhlIGZsYWcgZGlkZGxpbmcgb3V0IG9mIHRoZQoJZnVuY3Rpb24uLi4KCShtYWNyb2V4cGFuZCk6IC4uLiBhbmQgb3V0IG9mIHRoZSBsb29wIHRoYXQgY2FsbHMgbWFjYXJnLgoJU2tpcCBvdmVyIHRoZSBpbml0aWFsIHBhcmVuIGJlZm9yZSBtYWNybyBhcmd1bWVudHMgd2l0aAoJY3BwX2dldF9ub25fc3BhY2VfdG9rZW47IHBvaW50IG1heSBiZSBzb21lIGRpc3RhbmNlIGJlZm9yZQoJdGhhdCBwYXJlbi4gIEFib3J0IGlmIGl0J3Mgbm90IHRoZXJlLgoKCSogY3BwbGliLmMgKHBhcnNlX2NsZWFyX21hcmspOiBEZWxldGUgZnVuY3Rpb24uCgkocGFyc2Vfc2V0X21hcmssIHBhcnNlX2dvdG9fbWFyayk6IE1ha2Ugc3RhdGljLgoJKEFDVElWRV9NQVJLX1ApOiBOZXcgbWFjcm8uCgkoc2tpcF9ibG9ja19jb21tZW50LCBza2lwX2xpbmVfY29tbWVudCk6IERvIG5vdCBidW1wIHRoZSBsaW5lCglpZiBBQ1RJVkVfTUFSS19QIGlzIHRydWUuCgkoY3BwX3BvcF9idWZmZXIpOiBUaGUgYnVmZmVyIHRvIGJlIHBvcHBlZCBtYXkgbm90IGhhdmUgYW4KCWFjdGl2ZSBtYXJrLgoJKGNwcF9nZXRfdG9rZW4pOiBXaGVuIGxvb2tpbmcgZm9yIHRoZSBpbml0aWFsIHBhcmVuIGJlZm9yZQoJbWFjcm8gYXJndW1lbnRzLCBvbmx5IHNldCBhIG1hcmsgaW4gYSBmaWxlIGJ1ZmZlciwgQWx3YXlzCglyZXR1cm4gdG8gdGhhdCBtYXJrIGJlZm9yZSBwcm9jZWVkaW5nIHRvIGNhbGwgbWFjcm9leHBhbmQgb3IKCXJldHVybiBhIE5BTUUgdG9rZW4uCgoJKiBjcHBsaWIuaDogUmVtb3ZlIHByb3RvdHlwZXMgb2YgcGFyc2Vfc2V0X21hcmssCglwYXJzZV9jbGVhcl9tYXJrLCBwYXJzZV9nb3RvX21hcmsuCgkoc3RydWN0IGNwcF9vcHRpb25zKTogUmVuYW1lICdwdXRfb3V0X2NvbW1lbnRzJyB0bwoJJ2Rpc2NhcmRfY29tbWVudHMnIGFuZCBpbnZlcnQgaXRzIHNlbnNlLgoJKiBjcHBpbml0LmMsIGNwcGhhc2guYywgY3BwbGliLmM6IEFsbCB1c2VycyBvZgoJcHV0X291dF9jb21tZW50cyBjaGFuZ2VkIHRvIHVzZSBkaXNjYXJkX2NvbW1lbnRzLCB3aXRoCglvcHBvc2l0ZSBzZW5zZS4KCjIwMDAtMDItMDkgIENsaW50b24gUG9wZXR6ICA8Y3BvcGV0ekBjeWdudXMuY29tPgoKCSogZnVuY3Rpb24uYyAodGhyZWFkX3Byb2xvZ3VlX2FuZF9lcGlsb2d1ZV9pbnNucyk6IERvbid0IGRlbGV0ZQoJdGhlIGVkZ2UgZnJvbSBhIGJsb2NrIHRoYXQgYm90aCBqdW1wcyBhbmQgZmFsbHMgdGhyb3VnaCB0byB0aGUKCWZhbGx0aHJ1IGJsb2NrLgoKMjAwMC0wMi0wOSAgU2NvdHQgQmFtYnJvdWdoICA8c2NvdHRiQG5ldHdpbmRlci5vcmc+CgoJKiBjb25maWcvYXJtL2FybS5tZCAobW92c2kpOiBJbiBQSUMgbW9kZSwgbWFrZSBzdXJlIHRoYXQgYQoJY29uc3RhbnQgc291cmNlIGFkZHJlc3MgaXMgbGVnaXRpbWF0ZS4KCjIwMDAtMDItMDkgIFBoaWxpcCBCbHVuZGVsbCAgPHBiQGZ1dHVyZXR2LmNvbT4KCgkqIGNvbmZpZy9hcm0vYXJtLmMgKGxlZ2l0aW1pemVfcGljX2FkZHJlc3MpOiBIYW5kbGUgTEFCRUxfUkVGCgljb3JyZWN0bHkuCgoJKiBjb25maWcvYXJtL2FybS5oIChMRUdJVElNQVRFX0NPTlNUQU5UX1ApOiBBbGxvdyBhbnl0aGluZyB3aGVuCglnZW5lcmF0aW5nIFBJQy4KCShMRUdJVElNQVRFX1BJQ19PUEVSQU5EKTogRGlzYWxsb3cgcmVmZXJlbmNlcyB0byBsYWJlbHMuCgoyMDAwLTAyLTA5ICBaYWNrIFdlaW5iZXJnICA8emFja0B3b2xlcnkuY3VtYi5vcmc+CgoJKiBjcHBsaWIuYyAoY3BwX2RlZmluZSwgY3BwX3VuZGVmKTogTWFrZSBzdXJlIHRoZSBzdGFja2VkIGJ1ZmZlcgoJZW5kcyB3aXRoIGEgbmV3bGluZSBhbmQgYSBOVUwuICBEb24ndCBiZSBzbyBjbGV2ZXIgbWFuaXB1bGF0aW5nCglzdHJpbmdzLgoKV2VkIEZlYiAgOSAxNDoxODowOCBNRVQgMjAwMCAgSmFuIEh1Ymlja2EgIDxqaEBzdXNlLmN6PgoKCSogcmVsb2FkMS5jIChyZWxvYWQpIEFsaWduIHN0YWNrIGZyYW1lIHRvIGNmdW4tPnN0YWNrX2FsaWdubWVudF9uZWVkZWQsCglub3QgdG8gQklHR0VTVF9BTElHTk1FTlQuCgoyMDAwLTAyLTA4ICBHZW9mZiBLZWF0aW5nICA8Z2VvZmZrQGN5Z251cy5jb20+CgoJKiBkd2FyZjIuaCAoRFdfQ0ZBX0dOVV9uZWdhdGl2ZV9vZmZzZXRfZXh0ZW5kZWQpOiBOZXcgY29uc3RhbnQuCgkqIGR3YXJmMm91dC5jIChkd2FyZl9jZmlfbmFtZSk6IFByaW50IG5hbWUgb2YgbmV3IGNvbnN0YW50LgoJKHJlZ19zYXZlKTogVXNlIERXX0NGQV9HTlVfbmVnYXRpdmVfb2Zmc2V0X2V4dGVuZGVkIHdoZW4gbmVlZGVkLgoJKG91dHB1dF9jZmkpOiBIYW5kbGUgb3V0cHV0IG9mIERXX0NGQV9HTlVfbmVnYXRpdmVfb2Zmc2V0X2V4dGVuZGVkLgoJKiBmcmFtZS5jIChleGVjdXRlX2NmYV9pbnNuKTogSGFuZGxlCglEV19DRkFfR05VX25lZ2F0aXZlX29mZnNldF9leHRlbmRlZC4KCjIwMDAtMDItMDggIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgoJKiBmbG93LmMgKHRpZHlfZmFsbHRocnVfZWRnZXMpOiBTcGxpdCBvdXQgZnJvbSAuLi4KCShkZWxldGVfdW5yZWFjaGFibGVfYmxvY2tzKTogLi4uIGhlcmUuCgkoZmluZF9iYXNpY19ibG9ja3MpOiBVc2UgaXQuCgpUdWUgRmViICA4IDE1OjUxOjUwIDIwMDAgIFJpY2hhcmQgS2VubmVyICA8a2VubmVyQHZsc2kxLnVsdHJhLm55dS5lZHU+CgoJKiBzdG10LmMgKGV4cGFuZF9kZWNsKTogRG8gc2V0IFJUWF9VTkNIQU5HSU5HX1AgZm9yIFRSRUVfUkVBRE9OTFkuCgoyMDAwLTAyLTA4ICBaYWNrIFdlaW5iZXJnICA8emFja0B3b2xlcnkuY3VtYi5vcmc+CgoJKiBNYWtlZmlsZS5pbiAoR0VOX1BST1RPU19PQkpTKTogUmVtb3ZlIGxpYmNwcC5hLgoJKGdlbl9wcm90b3Mubyk6IERvbid0IGRlcGVuZCBvbiBjcHBsaWIuaCBvciBjcHBoYXNoLmguCgkoZml4LWhlYWRlci5vKTogRG9uJ3QgZGVwZW5kIG9uIGNwcGhhc2guaC4KCgkqIHNjYW4uYyAoaGFzaHN0cik6IE5ldyBmdW5jdGlvbi4KCSogc2Nhbi5oOiBQcm90b3R5cGUgaXQuCgkqIGZpeC1oZWFkZXIuYzogRG9uJ3QgaW5jbHVkZSBjcHBoYXNoLmguICBVc2UgaGFzaHN0ci4KCSogZ2VuLXByb3Rvcy5jOiBEb24ndCBpbmNsdWRlIGNwcGhhc2guaCBvciBjcHBsaWIuaC4gIFVzZQoJaGFzaHN0ci4gIFJlcG9ydCBoYXNoIHRhYmxlIHN0YXRpc3RpY3MuICBBZGQgcHJpdmF0ZQoJZGVmaW5pdGlvbiBvZiB4cmVhbGxvYy4KCjIwMDAtMDItMDggIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIGkzODYuaCAoVEFSR0VUX1NXSVRDSEVTKTogRml4IHR5cG8gaW4gb3B0aW9uIG5hbWUuCgoyMDAwLTAyLTA4ICBDbGludG9uIFBvcGV0eiAgPGNwb3BldHpAY3lnbnVzLmNvbT4KCgkqIGZ1bmN0aW9uLmMgKHRocmVhZF9wcm9sb2d1ZV9hbmRfZXBpbG9ndWVfaW5zbnMpOiBEb24ndCByZXBsYWNlCglqdW1wcyB3aXRoIHJldHVybnMgdW5sZXNzIHRoZXkgYXJlIGp1bXBzIHRvIHRoZSBmYWxsdGhydSBibG9jay4KClR1ZSBGZWIgIDggMDc6NTM6NTUgMjAwMCAgSmFuIEh1Ymlja2EgIDxqaEBzdXNlLmN6PgoKCSogaTM4Ni5tZCAoYWRkcWkzX2NjKTogRml4IGNvbnN0cmFpbnRzLgoKVHVlIEZlYiAgOCAwMTozOTo0NSAyMDAwICBIYW5zLVBldGVyIE5pbHNzb24gIDxocEBiaXRyYW5nZS5jb20+CgoJKiBmdW5jdGlvbi5jIChlbWl0X3JldHVybl9pbnRvX2Jsb2NrKTogV3JhcCBpbiAjaWZkZWYgSEFWRV9yZXR1cm4uCgoyMDAwLTAyLTA3ICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogY3BwbGliLmMgKGNwcF9nZXRfdG9rZW4pOiBDYWxsIENQUF9CVU1QX0xJTkUgYWZ0ZXIgcmVhZGluZyBhCgljYXJyaWFnZSByZXR1cm4gYWZ0ZXIgYSBtYWNybyBuYW1lLgoKMjAwMC0wMi0wNyAgRnJlZCBGaXNoICA8Zm5mQGJlLmNvbT4KCgkqIGkzODYvYmVvcy1lbGYuaDogKEFTTV9JREVOVElGWV9HQ0MpOiBEZWZpbmUgdG8gbm90aGluZwoJc28gdGhlIGdjYzJfY29tcGlsZWQgc3ltYm9sIGRvZXNuJ3QgY29uZnVzZSBCZU9TIGRlYnVnZ2Vycy4KCjIwMDAtMDItMDcgIFphY2sgV2VpbmJlcmcgIDx6YWNrQHdvbGVyeS5jdW1iLm9yZz4KCgkqIGNwcGZpbGVzLmMgKGRlcHNfb3V0cHV0KTogQ291bnQgc3BhY2VycyBpbiBkZXBzX2NvbHVtbi4KCjIwMDAtMDItMDcgIE5laWwgQm9vdGggIDxOZWlsQkBlYXJ0aGxpbmcubmV0PgoKCSogY3BwaW5pdC5jIChpbml0aWFsaXplX2RlcGVuZGVuY3lfb3V0cHV0KTogSWYgdGhlcmUgaXMgbm8KCXN1ZmZpeCwgZG9uJ3QgdHJ5IHRvIGxvb2sgZm9yIGtub3duIHN1ZmZpeGVzLiAgVXNlIHN0cnJjaHIuCgkoY3BwX3N0YXJ0X3JlYWQpOiBSZW1vdmUgZHVwbGljYXRlIGluaXRpYWxpemF0aW9uLgoKTW9uIEZlYiAgNyAxODozNjo0MSBNRVQgMjAwMCAgSmFuIEh1Ymlja2EgIDxqaEBzdXNlLmN6PgoKCSogY2FsbHMuYyAoY29tcHV0ZV9hcmd1bWVudF9ibG9ja19zaXplKTogTmV3IGFyZ3VtZW50CglwcmVmZXJyZWRfc3RhY2tfYm91bmRhcnkuCgkoZXhwYW5kX2NhbGwpOiB1cGRhdGUgY2Z1bi0+cHJlZmVycmVkX3N0YWNrX2JvdW5kYXJ5LCB1cGRhdGUgY2FsbCBvZgoJY29tcHV0ZV9hcmd1bWVudF9ibG9ja19zaXplCgkoZW1pdF9saWJyYXJ5X2NhbGwpOiBJbmNyZWF0ZSBjZnVuLT5wcmVmZXJyZWRfc3RhY2tfYm91bmRhcnkKCXRvIFBSRUZFUlJFRF9TVEFDS19CT1VOREFSWQoJKGVtaXRfbGlicmFyeV9jYWxsX3ZhbHVlKTogTGlrZXdpc2UuCgkqIGV4cGxvdy5jIChhbGxvY2F0ZV9keW5hbWljX3N0YWNrX3NwYXZlKTogTGlrZXdpc2UuCgkqIGZ1bmN0aW9uLmMgKHByZXBhcmVfZnVuY3Rpb25fc3RhcnQpOiBTZXQKCWNmdW4tPnByZWZlcnJlZF9zdGFja19ib3VuZGFyeQoJKiBmdW5jdGlvbi5oIChzdHJ1Y3QgZnVuY3Rpb24pOiBBZGQgcHJlZmVycmVkX3N0YWNrX2JvdW5kYXJ5IGZpZWxkLgoJKiBpbnRlZ3JhdGUuYyAoZXhwYW5kX2lubGluZV9mdW5jdGlvbik6IFVwZGF0ZQoJY2Z1bi0+cHJlZmVycmVkX3N0YWNrX2JvdW5kYXJ5IGFuZCBjZnVuLT5zdGFja19hbGlnbm1lbnRfbmVlZGVkLgoJKGNvcHlfcnR4X2FuZF9zdWJzdGl0dXRlKTogQWxpZ24gZnJhbWUgdG8gc3RhY2tfYWxpZ25tZW50X25lZWRlZCBvbmx5LgoJKiBpMzg2LmMgKGNvbXB1dGVfZnJhbWVfc2l6ZSk6IFVzZSBjZnVuLT5wcmVmZXJyZWRfc3RhY2tfYm91bmRhcnkuCgoyMDAwLTAyLTA2ICBaYWNrIFdlaW5iZXJnICA8emFja0B3b2xlcnkuY3VtYi5vcmc+CgoJKiBjcHBsaWIuYyAobXlfc3RyZXJyb3IsIGNwcF9lcnJvciwgY3BwX2Vycm9yX3dpdGhfbGluZSwKCWNwcF9lcnJvcl9mcm9tX2Vycm5vLCBjcHBfd2FybmluZywgY3BwX3dhcm5pbmdfd2l0aF9saW5lLAoJY3BwX3BlZHdhcm4sIGNwcF9wZWR3YXJuX3dpdGhfbGluZSwKCWNwcF9wZWR3YXJuX3dpdGhfZmlsZV9hbmRfbGluZSk6IE1vdmUgdG8gY3BwZXJyb3IuYy4KCShjcHBfcHJpbnRfZmlsZV9hbmRfbGluZSwgdl9jcHBfZXJyb3IsIHZfY3BwX3dhcm5pbmcsCgl2X2NwcF9lcnJvcl93aXRoX2xpbmUsIHZfY3BwX3dhcm5pbmdfd2l0aF9saW5lLAoJY3BwX21lc3NhZ2VfZnJvbV9lcnJubywgY3BwX3BlcnJvcl93aXRoX25hbWUpOiBEZWxldGUuCgoJKiBjcHBlcnJvci5jIChjcHBfcHJpbnRfY29udGFpbmluZ19maWxlcyk6IFRha2Ugc3RhcnRpbmcKCWJ1ZmZlciBhcyBhcmd1bWVudC4KCShjcHBfZmlsZV9saW5lX2Zvcl9tZXNzYWdlKTogUmVuYW1lIHRvIGNwcF9wcmludF9maWxlX2FuZF9saW5lLgoJKHZfY3BwX21lc3NhZ2UpOiBOb3cgY2FsbGVkIGRpcmVjdGx5IGJ5IGFsbCBlbnRyeSBwb2ludHMuCglSZW1vdmUgLTEgY2FzZS4KCShjcHBfcGZhdGFsX3dpdGhfbmFtZSwgY3BwX21lc3NhZ2UpOiBEZWxldGUuCgkoY3BwX25vdGljZV9mcm9tX2Vycm5vLCBjcHBfaWNlKTogTmV3IGZ1bmN0aW9ucy4KCShjcHBfbm90aWNlKTogSXMgbm93IGZvciByZXBvcnRpbmcgZXJyb3IgY29uZGl0aW9ucywganVzdAoJd2l0aG91dCBhbiBhc3NvY2lhdGVkIGZpbGUuCgkoY3BwX2Vycm9yLCBjcHBfZXJyb3Jfd2l0aF9saW5lKTogRG9uJ3QgZG8gYW55dGhpbmcgaWYKCW9wdHMtPmluaGliaXRfZXJyb3JzIGlzIG9uLgoJKGNwcF9wZWR3YXJuX3dpdGhfZmlsZV9hbmRfbGluZSk6IFRha2UgY29sdW1uIGFyZ3VtZW50IGFsc28uCgoJKiBjcHBsaWIuaDogVXBkYXRlIHByb3RvdHlwZXMgb2YgZXhwb3J0ZWQgZnVuY3Rpb25zLgoJKHN0cnVjdCBjcHBfb3B0aW9ucyk6IEFkZCBpbmhpYml0X2Vycm9ycy4KCgkqIGNwcGFsbG9jLmMsIGNwcGZpbGVzLmM6IFVzZSBmcHJpbnRmIG5vdCBjcHBfbm90aWNlIGZvcgoJbm9uLWVycm9yIG1lc3NhZ2VzLiAgSW5jbHVkZSBpbnRsLmguCgoJKiBjcHBpbml0LmMsIGNwcG1haW4uYzogTGlrZXdpc2UuICBBbHNvLCB1c2UKCWNwcF9ub3RpY2VfZnJvbV9lcnJubyBpbnN0ZWFkIG9mIGNwcF9wZXJyb3Jfd2l0aF9uYW1lIG9yCgljcHBfcGZhdGFsX3dpdGhfbmFtZSwgYW5kIGNwcF9ub3RpY2UgaW5zdGVhZCBvZiBjcHBfbWVzc2FnZS4KCgkqIGNwcGV4cC5jLCBjcHBoYXNoLmMsIGNwcGluaXQuYywgY3BwbGliLmM6IFVzZSBjcHBfaWNlIHRvCglyZXBvcnQgaW50ZXJuYWwgZXJyb3JzLgoKCSogY3BwbGliLmMgKGRvX2RlZmluZSk6IFN3aXRjaCBiY29weSB0byBtZW1jcHkuCglHaXZlIGNwcF9wZWR3YXJuX3dpdGhfZmlsZV9hbmRfbGluZSBhIGR1bW15IGNvbHVtbiBhcmd1bWVudC4KCgkqIGNwcGxpYi5jIChjb3B5X3Jlc3Rfb2ZfbGluZSk6IFJldmVydCBwcmV2aW91cyBjaGFuZ2U6IGRvbid0CgliYWlsIG91dCBlYXJseSBpZiB3ZSBoaXQgYSBsaW5lIGNvbW1lbnQuCgoyMDAwLTAyLTA2ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEBjeWdudXMuY29tPgoKCSogZmxvdy5jIChmbG93X2RlbGV0ZV9pbnNuLCBtYWtlX2VkZ2UsIHJlbW92ZV9lZGdlKTogRXhwb3J0LgoJKiBiYXNpYy1ibG9jay5oOiBEZWNsYXJlIHRoZW0uCgkqIGVtaXQtcnRsLmggKGFjdGl2ZV9pbnNuX3ApOiBOZXcuCgkobmV4dF9hY3RpdmVfaW5zbiwgcHJldl9hY3RpdmVfaW5zbik6IFVzZSBpdC4KCSogcnRsLmg6IERlY2xhcmUgaXQuCgkqIGZ1bmN0aW9uLmMgKGVtaXRfcmV0dXJuX2ludG9fYmxvY2spOiBOZXcuCgkodGhyZWFkX3Byb2xvZ3VlX2FuZF9lcGlsb2d1ZV9pbnNucyk6IEluc2VydCByZXR1cm4gaW5zbnMgaW5zdGVhZAoJb2YgZXBpbG9ndWVzIHdoZW4gcG9zc2libGUuCgkqIGp1bXAuYyAoanVtcF9vcHRpbWl6ZV8xKTogUmVtb3ZlIGNvZGUgdG8gaW5zZXJ0IGEgcmV0dXJuIGluc24KCW9uIHRoZSBmYWxsdGhydSB0byB0aGUgZXhpdCBibG9jay4KCgkqIGkzODYuYyAoaXg4Nl9jYW5fdXNlX3JldHVybl9pbnNuX3ApOiBGYWlsIGZvciBsYXJnZSBwb3BlZCBhcmdzCglhbmQgZm9yIG5vbi1lbXB0eSBzdGFjayBmcmFtZXMuCgkqIGkzODYubWQgKHJldHVybik6IEV4cGFuZCB0byByZXR1cm4tcG9wIGFzIG5lZWRlZC4KCjIwMDAtMDItMDYgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgoJKiBzaW1wbGlmeS1ydHguYyAoc2ltcGxpZnlfcmVsYXRpb25hbF9vcGVyYXRpb24pOiBDYW5vbmljYWxpemUKCWNvbnN0YW50IHRvIG9wMSBmb3IgdGVzdGluZy4KCjIwMDAtMDItMDYgIE1pY2hhZWwgSGF5ZXMgIDxtLmhheWVzQGVsZWMuY2FudGVyYnVyeS5hYy5uej4KCgkqIGNvbmZpZy9jNHgvYzR4Lm1kICgqbGRpX29uX292ZXJmbG93KTogTmV3IHBhdHRlcm4uCgkoZml4dW5zX3RydW5jcWZxaTIpOiBVc2UgaXQuCgoyMDAwLTAyLTA2ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEBjeWdudXMuY29tPgoKCSogaTM4Ni5jIChpeDg2X2FnaV9kZXBlbmRhbnQpOiBIYW5kbGUgcHJvX2VwaWxvZ3VlX2FkanVzdF9zdGFjawoJYXMgYSBUWVBFX0xFQSBpbnNuLgoKCSogaTM4Ni5tZCAod2lkZW5pbmcgYW5kIHBlZXBob2xlcyk6IE1hc2sgdGhlIGNvbnN0YW50IGluc3RlYWQgb2YKCXVzaW5nIGdlbl9sb3dwYXJ0LgoKMjAwMC0wMi0wNSAgWmFjayBXZWluYmVyZyAgPHphY2tAd29sZXJ5LmN1bWIub3JnPgoKCSogY3BwZmlsZXMuYyAocmVhZF9hbmRfcHJlc2NhbikgW2Nhc2UgU1BFQ0NBU0VfUVVFU1RJT05dOiBCdW1wCglpbnB1dCBwb2ludGVyIGJlZm9yZSBwb3NzaWJseSBicmFuY2hpbmcgb2ZmIHRvIHRoZSBiYWNrc2xhc2gKCWNvZGUuCgkqIGNwcGhhc2guYyAobWFjcm9leHBhbmQpOiBDb3JyZWN0bHkgZGVsZXRlIFxyIGVzY2FwZXMgd2hlbgoJc3RyaW5naWZ5aW5nIHBhcmFtZXRlcnMuCgkqIGNwcGxpYi5jIChjb3B5X3Jlc3Rfb2ZfbGluZSk6IEdvIGRpcmVjdGx5IHRvIHNraXBfYmxvY2tfY29tbWVudAoJaWYgd2UgY2FuOyBiYWlsIG91dCBlYXJseSBpZiB3ZSBoaXQgYSBsaW5lIGNvbW1lbnQuCgkoaGFuZGxlX2RpcmVjdGl2ZSk6IFRyZWF0ICcjIDEyMycgaW4gYW4gLlMgZmlsZSBqdXN0IGxpa2UKCScjIDxwdW5jdHVhdGlvbj4nLiAgRGlzY2FyZCB0aGUgc2hpZnRlZCAnIycgaWYgd2UgaGl0ICcjXG4nLgoJUmV0dXJuIDEgZm9yICcjIG5vdF9hX2RpcmVjdGl2ZScuCgkoZ2V0X2RpcmVjdGl2ZV90b2tlbik6IFBvcCBtYWNybyBidWZmZXJzIGhlcmUsIHNvIHRoYXQKCWNwcF9nZXRfdG9rZW4gY2FuJ3Qgc25lYWtpbHkgbW92ZSBwYXN0IGEgbmV3bGluZS4KCUFkZCBzYW5pdHkgY2hlY2tzLgoJKGNwcF9nZXRfdG9rZW4pOiBnb3RvIHJhbmRvbWNoYXIgaWYgaGFuZGxlX2RpcmVjdGl2ZSByZXR1cm5zIDAuCgoJKiBjcHBhbGxvYy5jOiBVcGRhdGUgY29weXJpZ2h0LgoJKiBjcHBsaWIuYzogTWVyZ2UgYWxsIHRoZSBzdGF0aWMgZnVuY3Rpb24gcHJvdG90eXBlcyBpbnRvIG9uZQoJYmxvY2suCgkqIGNwcGxpYi5oOiBSZW1vdmUgI2lmIDAgYmxvY2suCgoJKiBjcHBlcnJvci5jOiBSZW1vdmUgI2lmZGVmIEVNQUNTIGJsb2NrLgoJKiBjcHBtYWluLmM6IExpa2V3aXNlLgoJKiBjcHBoYXNoLmM6IFJlbW92ZSAjaWYgMCBibG9ja3MuCgkqIGNwcGluaXQuYzogUmVtb3ZlICNpZiAwIGJsb2NrcywgYW5kIHRoZSAtbGludCBvcHRpb24uCgkqIGNwcGxpYi5jOiBSZW1vdmUgI2lmIDAgYmxvY2tzIGFuZCBjb2RlIHJlZmVyZW5jaW5nCglwY3BfaW5zaWRlX2lmIG9yIGZvcl9saW50LiAgUmVtb3ZlIGR1cGxpY2F0ZSBlcnJvciBtZXNzYWdlLgoJRml4IGVycm9yIG1lc3NhZ2VzIGZvciAjZWxzZSBhZnRlciAjZWxzZSBvciAjZWxpZi4gIFJlZm9ybWF0LgoJUmVtb3ZlIGFyY2hhaWMgVE9ETyBsaXN0LgoJKiBjcHBsaWIuaDogUmVtb3ZlIHBjcF9pbnNpZGVfaWYgYW5kIGZvcl9saW50IGZsYWdzLgoKMjAwMC0wMi0wNSAgWmFjayBXZWluYmVyZyAgPHphY2tAd29sZXJ5LmN1bWIub3JnPgoKCSogaTM4Ni9vc2YxZWxmLmg6IEFkZCBtaXNzaW5nIGJhY2tzbGFzaCB0byBtdWx0aWxpbmUgc3RyaW5nLgoKMjAwMC0wMi0wNSAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogbG9uZ2xvbmcuaCBbc3BhcmNdICh1ZGl2X3Fybm5kKTogQXZvaWQgc3RyaW5naWZ5aW5nIG1hY3JvIGFyZy4KCjIwMDAtMDItMDUgIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIE1ha2VmaWxlLmluIChjLWNvbW1vbi5vKTogRGVwZW5kIG9uICQoRVhQUl9IKS4KCgkqIGMtY29tbW9uLmM6IEluY2x1ZGUgZXhwci5oLgoKCSogYy1wcmFnbWEuYyAobWFya19hbGlnbl9zdGFjayk6IEFkZCBwcm90b3R5cGUuCgoJKiBjYWxsZXItc2F2ZS5jIChhZGRfc3RvcmVkX3JlZ3MpOiBMaWtld2lzZS4KCgkqIGNvbWJpbmUuYyAocmVjb3JkX3Byb21vdGVkX3ZhbHVlKTogTGlrZXdpc2UuCgoJKiBpMzg2LmMgKGl4ODZfc2NoZWRfcmVvcmRlcl9wZW50aXVtLCBpeDg2X3NjaGVkX3Jlb3JkZXJfcHBybyk6CglMaWtld2lzZS4KCgkqIGNwcGluaXQuYyAobmV3X3BlbmRpbmdfZGVmaW5lKTogTGlrZXdpc2UuCgoJKiBjcHBsaWIuYyAoc2tpcF9ibG9ja19jb21tZW50LCBza2lwX2xpbmVfY29tbWVudCk6IExpa2V3aXNlLgoKCSogZHdhcmYyb3V0LmMgKHNhdmVfcnR4LCBzcGxpY2VfY2hpbGRfZGllLCByZXZlcnNlX2RpZV9saXN0cywKCUFUX2NsYXNzLCBBVF9mbGFnLCBBVF9pbnQsIEFUX3Vuc2lnbmVkLCBBVF9zdHJpbmcsIEFUX3JlZiwgQVRfbG9jLAoJQVRfYWRkciwgQVRfbGJsLCBnZXRfQVRfcmVmLCBmcmVlX0FULCBmcmVlX2RpZSwgbG9jYWxfc2NvcGVfcCwKCWNsYXNzX3Njb3BlX3ApOiBMaWtld2lzZS4KCgkqIGR3YXJmMm91dC5oIChkd2FyZjJvdXRfc2V0X2RlbWFuZ2xlX25hbWVfZnVuYywKCWR3YXJmMm91dF9hZGRfbGlicmFyeV91bml0X2luZm8pOiBMaWtld2lzZS4KCgkqIGdnYy5oIChnZ2NfcGFnZV9wcmludF9zdGF0aXN0aWNzKTogTGlrZXdpc2UuCgoJKiBoYWlmYS1zY2hlZC5jIChwcm9wYWdhdGVfZGVwcyk6IExpa2V3aXNlLgoKCSogcmVnLXN0YWNrLmMgKG5leHRfZmxhZ3NfdXNlciwgcmVjb3JkX2xhYmVsX3JlZmVyZW5jZXMpOiBMaWtld2lzZS4KCgkqIHJ0bC5oIChzZXRfc3RhY2tfY2hlY2tfbGliZnVuYyk6IExpa2V3aXNlLgoKCSogdG9wbGV2LmggKHNldF9mYXRhbF9mdW5jdGlvbik6IExpa2V3aXNlLgoKCSogdG9wbGV2LmMgKHNldF9mYXRhbF9mdW5jdGlvbik6IERlbGV0ZSBwcm90b3R5cGUuCgoJKiBkaWFnbm9zdGljLmM6IERlY29uc3RpZnkgZnVuY3Rpb25zIHJldHVybmluZyBtYWxsb2MnZWQgcHRycy4KCjIwMDAtMDItMDUgIEdlb2ZmIEtlYXRpbmcgIDxnZW9mZmtAY3lnbnVzLmNvbT4KCgkqIGdpbmNsdWRlL3BwYy1hc20uaCAoRlVOQ19TVEFSVCk6IFVzZSBVU0VSX0xBQkVMX1BSRUZJWC4KCShGVU5DX0VORCk6IExpa2V3aXNlLgoKMjAwMC0wMi0wNSAgTWljaGFlbCBIYXllcyAgPG0uaGF5ZXNAZWxlYy5jYW50ZXJidXJ5LmFjLm56PgoKCSogY2FsbGVyLXNhdmUuYzogSW5jbHVkZSB0bV9wLmguCgoyMDAwLTAyLTA1ICBNaWNoYWVsIEhheWVzICA8bS5oYXllc0BlbGVjLmNhbnRlcmJ1cnkuYWMubno+CgoJKiBNYWtlZmlsZS5pbiAobGliZ2NjLmEpOiBBZGQgJChMSUJHQ0MxKSB0byBsaWJnY2MuYSBhZnRlciAkKExJQkdDQzIpLgoKMjAwMC0wMi0wNCAgTmVpbCBCb290aCAgPE5laWxCQGVhcnRobGluZy5uZXQ+CgoJKiBjY2NwLmMgKG1haW4pOiBDaGVjayAnZGlyJyBmb3IgYSBOVUxMIHBvaW50ZXIgYmVmb3JlIHBhc3NpbmcKCWl0IHRvIHN0cmNtcC4KCjIwMDAtMDItMDQgIFphY2sgV2VpbmJlcmcgIDx6YWNrQHdvbGVyeS5jdW1iLm9yZz4KCgkqIHJlY29nLmg6IFJlbW92ZSBOT19NRF9QUk9UT1RZUEVTIGlmZGVmcy4KCSogZ2VuZmxhZ3MuYzogVXNlIHRoZSBtYXhfb3BlcmFuZF8xIGxvZ2ljIGZyb20gZ2VuZW1pdC5jIHRvCgljYWxjdWxhdGUgaG93IG1hbnkgYXJndW1lbnRzIGdlbl9pbnNuIHByb3RvdHlwZXMgaGF2ZS4gIFJlbW92ZQoJTk9fTURfUFJPVE9UWVBFUyBpZmRlZnMgZnJvbSB0aGUgZ2VuZXJhdGVkIGZpbGUuCgkqIGdlbm91dHB1dC5jOiBEb24ndCBkZWZpbmUgTk9fTURfUFJPVE9UWVBFUyBpbiB0aGUgZ2VuZXJhdGVkCglmaWxlLiAgQ2FzdCBnZW5faW5zbiBpbml0aWFsaXplcnMgdG8gaW5zbl9nZW5fZm4uCgkqIGNvbmZpZy9hbHBoYS92bXMuaDogRG9uJ3QgZGVmaW5lIE5PX01EX1BST1RPVFlQRVMuCgkqIGdjYy50ZXhpOiBSZW1vdmUgZG9jdW1lbnRhdGlvbiBvZiBOT19NRF9QUk9UT1RZUEVTLgoKMjAwMC0wMi0wNCAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogZml4aW5jL01ha2VmaWxlLmluIChIRFIpOiBBZGQgbWFjaG5hbWUuaC4KCShjbGVhbik6IExpa2V3aXNlLgoKMjAwMC0wMi0wNSAgTWljaGFlbCBIYXllcyAgPG0uaGF5ZXNAZWxlYy5jYW50ZXJidXJ5LmFjLm56PgoKCSogY29uZmlnL2M0eC9jNHguaCAoYzR4X2NvbXBhcmVfb3AwLCBjNHhfY29tcGFyZV9vcDEpOiBNb3ZlIC4uLgoJKGM0eF9yZWdjbGFzc19tYXAsIGM0eF9jYWxsZXJfc2F2ZV9tYXAsIGM0eF9ycHRzX2N5Y2xlcyk6IERpdHRvLgoJKGM0eF9jcHVfdmVyc2lvbik6IERpdHRvLgoJKiBjb25maWcvYzR4L2M0eC1wcm90b3MuaDogLi4uIGhlcmUuCgoyMDAwLTAyLTA0ICBKYXNvbiBNZXJyaWxsICA8amFzb25AY2FzZXkuY3lnbnVzLmNvbT4KCgkqIGR3YXJmMm91dC5jIChhZGRfYWJzdHJhY3Rfb3JpZ2luX2F0dHJpYnV0ZSk6IERvbid0IGNhbGwKCWdlbl9hYnN0cmFjdF9mdW5jdGlvbiBvbiBvdXIgY29udGV4dCBpZiB3ZSdyZSBhIG5lc3RlZCBmdW5jdGlvbi4KCjIwMDAtMDItMDUgIE1pY2hhZWwgSGF5ZXMgIDxtLmhheWVzQGVsZWMuY2FudGVyYnVyeS5hYy5uej4KCgkqIGNvbmZpZy9jNHgvYzR4Lm1kIChmaXh1bnNfdHJ1bmNxZnFpMik6IFJld3JpdGUuCgkqIGNvbmZpZy9jNHgvbGliZ2NjLlMgKHVmaXhfdHJ1bmNxZmhpMm4pOiBGaXguCgoyMDAwLTAyLTA0ICBCcnVjZSBLb3JiICA8YmtvcmJAZ251Lm9yZz4KCgkqIGZpeGluYy9nZW5maXhlcyhtYWNobmFtZS5oKToKCU1vdmUgdGhlIGZ1bmN0aW9uYWxpdHkgZnJvbSBnZW4tbWFjaGluZS5oIGludG8gdGhpcyBmaWxlLgoJVU5kZWYgTU5fTkFNRV9QQVQgaWYgdGhlcmUgYXJlIG5vIG5hbWVzIHRvIGNoYW5nZS4KCUFsc28sIGJlIGEgbGl0dGxlIGtpbmRlciB3aGVuIEF1dG9HZW4gaXMgbm90IHByZXNlbnQuCgoJKiBmaXhpbmMvTWFrZWZpbGUuaW4obWFjaG5hbWUuaCk6CglDaGFuZ2UgdGhlIGdlbmVyYXRpb24gcnVsZSB0byB1c2UgZ2VuZml4ZXMuCgoJKiBmaXhpbmMvZml4Zml4ZXMuYyhtYWNoaW5lX25hbWUpOgoJbWFjaGluZV9uYW1lX2ZpeCdzIGZ1bmN0aW9uYWxpdHkgbm93IGRlcGVuZGVudCB1cG9uIHdoZXRoZXIKCU1OX05BTUVfUEFUIGlzIGRlZmluZWQuCgoJKiBmaXhpbmMvZml4dGVzdHMuYyhtYWNoaW5lX25hbWUpOgoJZGl0dG8uCgoJKiBmaXhpbmMvZml4bGliLmMobW5fZ2V0X3JlZ2V4cHMpOiBjb25kaXRpb25hbCBvbiBkZWZpbml0aW9uCglvZiBNTl9OQU1FX1BBVC4KCgkqIGZpeGluYy9maXhsaWIuaChtbl9nZXRfcmVnZXhwcyk6CglkaXR0bwoKCSogZml4aW5jL2dlbi1tYWNoaW5lLmg6IERFTEVURUQKCjIwMDAtMDItMDQgIEphbiBIdWJpY2thICA8amhAc3VzZS5jej4KCSAgICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEBjeWdudXMuY29tPgoKCSogaTM4Ni5jIChTQVZFX1JFR1NfRklSU1QpOiBSZW1vdmUuCgkoaXg4Nl9pbml0aWFsX2VsaW1pbmF0aW9uX29mZnNldCk6IEhhbmRsZSBvbmx5IFNBVkVfUkVHU19GSVJTVCBtb2RlLgoJKGl4ODZfY29tcHV0ZV9mcmFtZV9zaXplKTogTGlrZXdpc2UuCgkoaXg4Nl9leHBhbmRfcHJvbG9ndWUpOiBMaWtld2lzZS4gIFVzZSBwcm9fZXBpbG9ndWVfYWRqdXN0X3N0YWNrLgoJKGl4ODZfZW1pdF9yZXN0b3JlX3JlZ3MpOiBSZW1vdmUuCgkoaXg4Nl9lbWl0X2VwaWxvZ3VlX2VzcF9hZGp1c3RtZW50KTogVXNlIHByb19lcGlsb2d1ZV9hZGp1c3Rfc3RhY2sKCXdoZW4gYSBmcmFtZSBwb2ludGVyIGlzIGluIHVzZS4KCShpeDg2X2V4cGFuZF9lcGlsb2d1ZSk6IEhhbmRsZSBvbmx5IFNBVkVfUkVHU19GSVJTVCBtb2RlLiAgVXNlIG1vdgoJaW5zdGVhZCBvZiBwb3AgdG8gcmVzdG9yZSBhIHJlZ2lzdGVyIHdoZW4gcHJvZml0YWJsZTsgZW1pdCBsZWF2ZQoJd2hlbiBwcm9maXRhYmxlLgoJKGl4ODZfYXR0cl9sZW5ndGhfZGVmYXVsdCk6IEhhbmRsZSBwcm9fZXBpbG9ndWVfYWRqdXN0X3N0YWNrCglhcyBhIFRZUEVfTEVBIGluc24uCgkoaXg4Nl9hZGp1c3RfY29zdCk6IEhhbmRsZSBwcm9fZXBpbG9ndWVfYWRqdXN0X3N0YWNrIGFzIFRZUEVfQUxVLgoJKiBpMzg2Lm1kIChwcm9sb2d1ZV9hbGxvY2F0ZV9zdGFjayk6IFJlbW92ZS4KCShlcGlsb2d1ZV9kZWFsbG9jYXRlX3N0YWNrKTogUmVtb3ZlLgoJKHByb19lcGlsb2d1ZV9hZGp1c3Rfc3RhY2spOiBOZXcuCgoyMDAwLTAyLTA0ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEBjeWdudXMuY29tPgoKCSogZnVuY3Rpb24uYyAoZGlkZGxlX3JldHVybl92YWx1ZSk6IFJld29yayB0byB1c2UgYSBjYWxsYmFjayBmdW5jdGlvbi4KCVVzZSBjdXJyZW50X2Z1bmN0aW9uX3JldHVybl9ydHggaWYgaXQncyBiZWVuIHNldCB1cC4KCShkb19jbG9iYmVyX3JldHVybl9yZWcsIGNsb2JiZXJfcmV0dXJuX3JlZ2lzdGVyKTogTmV3LgoJKGRvX3VzZV9yZXR1cm5fcmVnLCB1c2VfcmV0dXJuX3JlZ2lzdGVyKTogTmV3LgoJKGV4cGFuZF9mdW5jdGlvbl9lbmQpOiBVc2UgdGhlbS4KCSogc3RtdC5jIChleHBhbmRfbnVsbF9yZXR1cm4pOiBMaWtld2lzZS4KCSogZnVuY3Rpb24uaDogRGVjbGFyZSB0aGVtLgoJKiBmbG93LmMgKG1hcmtfcmVnc19saXZlX2F0X2VuZCk6IFVzZSBkaWRkbGVfcmV0dXJuX3ZhbHVlLgoJKG1hcmtfcmVnKTogQ2hhbmdlIGFyZ3VtZW50cyBhcyBhcHByb3ByaWF0ZSBmb3IgY2FsbGJhY2suCgkqIGludGVncmF0ZS5jIChleHBhbmRfaW5saW5lX2Z1bmN0aW9uKTogUmV2ZXJ0IDE5IEphbiBjaGFuZ2UuCgpGcmkgRmViICA0IDIwOjI1OjQyIDIwMDAgIEhhbnMtUGV0ZXIgTmlsc3NvbiAgPGhwQGJpdHJhbmdlLmNvbT4KCgkqIHRtLnRleGkgKFZhbHVlcyBpbiBSZWdpc3RlcnMpOiBGaXggdHlwbzogImZvIiAiZm9yIi4KCShNaXNjKTogU2F5IHRoZSBzY2hlZHVsZXIsIG5vdCB0aGUgSGFpZmEgc2NoZWR1bGVyLgoKMjAwMC0wMi0wNCAgQ2xpbnRvbiBQb3BldHogIDxjcG9wZXR6QGN5Z251cy5jb20+CgoJKiBqdW1wLmMgKG1hcmtfanVtcF9sYWJlbCk6IEFkZCBpbl9tZW0gcGFyYW0sIGNoZWNrIFNZTUJPTF9SRUZzCgl3aGVuIGluX21lbSBpcyBzZXQuICBVcGRhdGUgYWxsIGNhbGxlcnMuCgoyMDAwLTAyLTA0ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEBjeWdudXMuY29tPgoKCSogaTM4Ni9vcGVuYnNkLmggKElOVF9BU01fT1ApOiBEZWZpbmUuCgpGcmkgRmViICA0IDEwOjUxOjMwIDIwMDAgIEhhbnMtUGV0ZXIgTmlsc3NvbiAgPGhwQGJpdHJhbmdlLmNvbT4KCgkqIHRtLnRleGk6IEZpeCB2YXJpb3VzIHR5cG9zLgoKVGh1IEZlYiAgMyAxNzoxNzozMiAyMDAwICBTdGV2ZSBFbGxjZXkgPHNqZUBjdXAuaHAuY29tPgoKCSogY29uZmlnL3BhL3BhLWhwdXgxMS5oIChMSUJfU1BFQyk6IENvcnJlY3QgdHlwbyBpbiAhcCBjYXNlLgoJKE1EX1NUQVJURklMRV9QUkVGSVhfMSk6IE5ldyBtYWNyby4KClRodSBGZWIgIDMgMTU6MDg6MTMgTUVUIDIwMDAgIEphbiBIdWJpY2thICA8amhAc3VzZS5jej4KCgkqIGkzODYubWQgKG1vdnN0cnNpLCBjbHJzdHJzaSk6IFN1cHBvcnQgdmFyaWFibGUgc2l6ZWQgY29waWVzLCBhbGlnbgoJZGVzdGluYXRpb24gd2hlbiBuZWVkZWQuCgkoc3RybW92c2ksIHN0cnNldHNpKTogTmV3IGV4cGFuZGVyLgoJKHN0cm1vdnNpXzEsIHN0cnNldHNpXzEpOiBOZXcgcGF0dGVybi4KCSogaTM4Ni5oIChNQVNLX05PX0FMSUdOX1NUUk9QLCBNQVNLX0lOTElORV9BTExfU1RST1AsCglUQVJHRVRfQUxJR05fU1RSSU5HT1BTLCBUQVJHRVRfSU5MSU5FX0FMTF9TVFJJTkdPUFMpOiBOZXcgbWFjcm9zLgoJKFRBUkdFVF9TV0lUQ0hFUykgQWRkIGFsaWduLXN0cmluZ29wcyBhbmQgaW5saW5lLWFsbC1zdHJpbmdvcHMuCgkqIGludm9rZS50ZXhpIChhbGlnbi1zdHJpbmdvcHMsIGlubGluZS1hbGwtc3RyaW5nb3BzKTogRG9jdW1lbnQuCgpXZWQgRmViICAyIDIzOjA0OjQ3IDIwMDAgICBLcmlzdGVyIFdhbGZyaWRzc29uIDxjYXRvQGRmLmx0aC5zZT4KCgkqIGkzODYvbmV0YnNkLmggKElOVF9BU01fT1ApOiBEZWZpbmUuCgoyMDAwLTAyLTAyICBaYWNrIFdlaW5iZXJnICA8emFja0B3b2xlcnkuY3VtYi5vcmc+CgoJKiBjcHBsaWIuaCAoY3BwX3JlYWRlcik6IEFkZCBuZXcgZmxhZywgbm9fZGlyZWN0aXZlcy4KCSogY3BwaGFzaC5jIChtYWNhcmcpOiBTZXQgaXQuCgkqIGNwcGxpYi5jIChoYW5kbGVfZGlyZWN0aXZlKTogSWYgbm9fZGlyZWN0aXZlcyBpcyBvbiBhbmQgd2UKCWZpbmQgYSBkaXJlY3RpdmUsIGlzc3VlIGFuIGVycm9yIGFuZCBkaXNjYXJkIHRoZSBsaW5lLgoKV2VkIEZlYiAgMiAxMzowNzoxMCAyMDAwICBKaW0gV2lsc29uICA8d2lsc29uQGN5Z251cy5jb20+CgoJKiBjb25maWcvc3BhcmMvc3BhcmMuaCAoUFJFRkVSUkVEX1JFTE9BRF9DTEFTUyk6IERlbGV0ZSAnRScgY2hlY2sgZm9yCglGUCBjb25zdGFudHMuICBBZGQgISBUQVJHRVRfRlBVIGNoZWNrIGZvciBGUCBjb25zdGFudHMuCgoyMDAwLTAyLTAyICBDbGludG9uIFBvcGV0eiAgPGNwb3BldHpAY3lnbnVzLmNvbT4KCgkqIGZsb3cuYyAoZmluZF9iYXNpY19ibG9ja3MpOiBEb24ndCBraWxsIGxhYmVsX3ZhbHVlX2xpc3QKCWhlcmUuCgkoY2xlYW51cF9jZmcpOiBLaWxsIGl0IGhlcmUuCgpXZWQgRmViICAyIDA4OjEyOjMwIDIwMDAgIFJpY2hhcmQgS2VubmVyICA8a2VubmVyQHZsc2kxLnVsdHJhLm55dS5lZHU+CgoJKiBleHByLmMgKHN0b3JlX2ZpZWxkKTogRW5zdXJlIEFMSUdOIGlzIG5vIHN0cmljdGVyIHRoYW4gdGhlCglhbGlnbm1lbnQgb2YgRVhQLgoKMjAwMC0wMi0wMiAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAY3lnbnVzLmNvbT4KCgkqIGp1bXAuYyAoZGVsZXRlX2luc24pOiBQYXJ0aWFsbHkgcmV2ZXJ0IDE5IEphbiBjaGFuZ2U7Cglkb24ndCBjb252ZXJ0IHVudXNlZCBjb2RlIGxhYmVscyB0byBub3RlcyBhdCAtTzAuCgoyMDAwLTAyLTAyIEhlcm1hbiBBLkouIHRlbiBCcnVnZ2UgPEhhai5UZW4uQnJ1Z2dlQG5ldC5IQ0Mubmw+CgoJKiB0b3BsZXYuYyAocmVzdF9vZl9jb21waWxhdGlvbik6IFJ1biByZWJ1aWxkX2p1bXBfbGFiZWxzIGFmdGVyCglzcGxpdF9hbGxfaW5zbnMgdG8gcmVjcmVhdGUgUkVHX0xBQkVMIG5vdGVzIGZvciBmbG93MiBwYXNzLgoKMjAwMC0wMi0wMSAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAY3lnbnVzLmNvbT4KCgkqIGkzODYuYyAoZ2VuZXJhbF9ub19lbGltX29wZXJhbmQpOiBOZXcuCgkobm9ubWVtb3J5X25vX2VsaW1fb3BlcmFuZCk6IE5ldy4KCShpeDg2X2V4cGFuZF9tb3ZlKTogQ29weSBlbGltaW5hYmxlIG9wZXJhbmRzIGJlZm9yZSBhIHB1c2guCgkqIGkzODYtcHJvdG9zLmg6IERlY2xhcmUgbmV3IGZ1bmN0aW9ucy4KCSogaTM4Ni5oIChDQU5fRUxJTUlOQVRFKTogU2ltcGxpZnkuCgkoUFJFRElDQVRFX0NPREVTKTogVXBkYXRlLgoJKiBpMzg2Lm1kIChwdXNoIGluc25zKTogRG9uJ3QgYWxsb3cgZWxpbWluYWJsZSByZWdpc3RlciBvcGVyYW5kcy4KCjIwMDAtMDItMDEgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgoJKiBmbG93LmMgKG1hcmtfcmVnc19saXZlX2F0X2VuZCk6IEZvbGxvdyBleHBhbmRfZnVuY3Rpb25fZW5kIGFuZAoJcmVwbGFjZSBCTEttb2RlIHdpdGggREVDTF9SVEwncyBtb2RlLgoKMjAwMC0wMi0wMSAgWmFjayBXZWluYmVyZyAgPHphY2tAd29sZXJ5LmN1bWIub3JnPgoKCSogZnJhbWUuYyAoZmluZF9mZGUpOiBDb252ZXJ0IGZvciBsb29wIHRvIGRvLXdoaWxlIHNvIGNvbXBpbGVyCglzZWVzIGl0J3MgYWx3YXlzIGV4ZWN1dGVkIGF0IGxlYXN0IG9uY2UuCgkqIGxpYmdjYzIuYyAoQkJJTkJVRlNJWkUpOiBLaWxsLgoJKF9fYmJfaW5pdF9wcmcpOiBVc2UgZmdldHMuCgkoX19iYl9leGl0X3RyYWNlX2Z1bmMpOiBEb24ndCBwYXN0ZSBzdHJpbmdzLgoJKiB1bnJvbGwuYyAodW5yb2xsX2xvb3ApOiBJbml0aWFsaXplIHVucm9sbF90eXBlLCBub3QKCXVucm9sbF9udW1iZXIsIGFuZCB0d2VhayBsb2dpYyB0byBtYXRjaC4KCgkqIGkzODYuYyAoaXg4Nl9leHBhbmRfaW50X21vdmNjKTogQWRkIGV4cGxpY2l0ICdyZXR1cm4gMCcgaW4KCWFsbCBmYWlsdXJlIHBhdGhzLgoJKGl4ODZfZmxhZ3NfZGVwZW5kYW50KTogTGlrZXdpc2UuICBEaXNlbnRhbmdsZSBjb250cm9sIGZsb3cuCgkoaXg4Nl9zY2hlZF9yZW9yZGVyKTogQnJlYWsgZ3V0cyBvdXQgdG8KCWl4ODZfc2NoZWRfcmVvcmRlcl9wZW50aXVtIGFuZCBpeDg2X3NjaGVkX3Jlb3JkZXJfcHByby4KCShpeDg2X3NjaGVkX3Jlb3JkZXJfcHBybyk6IEluaXRpYWxpemUgcGFpcjIgYW5kIGluc25wIGJlZm9yZQoJYW55IHBvc3NpYmxlIHVzZS4KCgkqIGkzODYuaCAoTUFDSElORV9TVEFURV9TQVZFLCBNQUNISU5FX1NUQVRFX1JFU1RPUkUpOiBEb24ndAoJdXNlIHN0cmluZyBjb25jYXRlbmF0aW9uLiAgRG9uJ3Qgc2F2ZSBhbmQgcmVzdG9yZSBlc2kuCgoJKiBmaXhpbmMvTWFrZWZpbGUuaW4gKGZpeGluY2wuc2gpOiBEb24ndCBkZXBlbmQgb24gaW5jbGhhY2suZGVmLgoJKG1hY2huYW1lLmgpOiBSZW1vdmUgc2NyaXB0IHRvIHNlcGFyYXRlIGZpbGUuICBVc2UgdHdvLXN0ZXAKCXNlcXVlbmNlIHNvIHRhcmdldCBpcyBub3QgY3JlYXRlZCBpZiBzY3JpcHQgZmFpbHMuCgkqIGZpeGluYy9nZW4tbWFjaG5hbWUuaDogTmV3IGZpbGUuICBIYW5kbGUgY2FzZSB3aGVyZSBubyBub24tcmVzZXJ2ZWQKCWlkZW50aWZpZXJzIGFyZSBkZWZpbmVkLgoJKiBmaXhpbmMvZml4bGliLmMgKG1uX2dldF9yZWdleHBzKTogUmV0dXJuIGEgZmxhZzogaWYgTU5fTkFNRV9QQVQgaXMKCWFuIGVtcHR5IHN0cmluZywgbWFjaGluZV9uYW1lIGRvZXNuJ3QgbmVlZCB0byBkbyBhbnl0aGluZyBhdAoJYWxsLgoJKGlzX2N4eF9oZWFkZXIpOiBBZGQgbW9yZSBjYXNlcyB0byByZWdleHAuCgkqIGZpeGluYy9maXhsaWIuaDogVXBkYXRlIHByb3RvdHlwZS4KCSogZml4aW5jL2ZpeHRlc3RzLmMsIGZpeGluYy9maXhmaXhlcy5jOiBVcGRhdGUgY2FsbGVycyBvZgoJbW5fZ2V0X3JlZ2V4cHMuCgkqIGZpeGluYy9maXhpbmNsLmM6IERlZmluZSBOT19CT0dPU0lUWS4KCgkqIGZpeGluYy9pbmNsaGFjay5kZWYgKG5vX2RvdWJsZV9zbGFzaCwgZWxzZV9lbmRpZl9sYWJlbCk6IElmZGVmIG91dC4KCShocF9zeXNmaWxlKTogQWRkIG1pc3NpbmcgY29tbWEuCgkobWF0aF9leGNlcHRpb24pOiBQdXQgdGhlIHdyYXBwZXIgaWZkZWZzIGF0IHRoZSBiZWdpbm5pbmcgYW5kCgl0aGUgZW5kIG9mIHRoZSBmaWxlLgoJKiBmaXhpbmMvZml4aW5jbC54LCBmaXhpbmMvaW5jbGhhY2suc2g6IFJlZ2VuZXJhdGUuCgoyMDAwLTAyLTAxICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEBjeWdudXMuY29tPgoKCSogc3BhcmMuYyAoZnBfemVyb19vcGVyYW5kKTogVHVybiBpbnRvIGEgbm9ybWFsIHByZWRpY2F0ZS4KCVVzZSBDT05TVDBfUlRYLiAgVXBkYXRlIGFsbCBjYWxsZXJzLgoJKiBzcGFyYy5oLCBzcGFyYy1wcm90b3MuaDogVXBkYXRlIGFjY29yZGluZ2x5LgoJKiBzcGFyYy5tZCAoZnAgbW92IGluc25zKTogVXNlIGZwX3plcm9fb3BlcmFuZCBkaXJlY3RseQoJd2hlcmUgYXBwbGljYWJsZS4KCldlZCBGZWIgIDIgMDI6NTk6NDUgMjAwMCAgSGFucy1QZXRlciBOaWxzc29uICA8aHBAYml0cmFuZ2UuY29tPgoKCSogdG0udGV4aSAoVmFsdWVzIGluIFJlZ2lzdGVycyk6IEZpeCB0eXBvIGluIEhBUkRfUkVHTk9fTlJFR1MKCWV4YW1wbGUuCgoyMDAwLTAyLTAxICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBNYWtlZmlsZS5pbiAoc3BlY3MucmVhZHkpOiBOZXcgdGFyZ2V0LgoJKGZpeGluYy5zaCk6IERlcGVuZCBvbiBgc3BlY3MucmVhZHknIGluc3RlYWQgb2YgYHNwZWNzJy4KCjIwMDAtMDItMDEgIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIGZpeGluYy5pcml4OiBVc2UgdW5pcXVlIGZpbGVuYW1lcyBmb3Igd3JpdGluZyBpbnRvIC90bXAsCgkqIGZpeGluYy5wdHg6IExpa2V3aXNlLgoJKiBmaXhpbmMuc2NvOiBMaWtld2lzZS4KCSogZml4aW5jLnN2cjQ6IExpa2V3aXNlLgoJKiBmaXhpbmMud2lubnQ6IExpa2V3aXNlLgoKMjAwMC0wMi0wMSAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogdHN5c3RlbS5oOiBOZXcgZmlsZS4KCgkqIE1ha2VmaWxlLmluIChsaWJnY2MyLmEsIHN0bXAtbXVsdGlsaWIsIGNydGJlZ2luLm8sIGNydGVuZC5vLAoJcy1jcnRTKTogRGVwZW5kIG9uIHRzeXN0ZW0uaC4KCgkqIGNydHN0dWZmLmM6IEluY2x1ZGUgdHN5c3RlbS5oLgoJKiBmcmFtZS5jOiBMaWtld2lzZS4KCSogbGliZ2NjMi5jOiBMaWtld2lzZS4KClR1ZSBGZWIgIDEgMTk6NTM6MjcgQ0VUIDIwMDAgIEphbiBIdWJpY2thICA8amhAc3VzZS5jej4KCgkqIGJ1aWx0aW5zLmMgKGV4cGFuZF9idWlsdGluX21lbXNldCk6IEV4cGFuZCBmb3IgdmFyaWFibGUgc2l6ZWQKCWxlbmd0aHMgdG9vLgoKMjAwMC0wMi0wMSAgRGF2aWQgQmlsbGluZ2h1cnN0IDxEYXZpZC5CaWxsaW5naHVyc3RAcmlvdGludG8uY29tLmF1PgoKCSogY29uZmlnL21pcHMvaXJpczYuaCAoU1VCVEFSR0VUX0FTTV9TUEVDKSA6IERlZmF1bHQgSVNBIGJhc2VkCglvbiBBQkkuCgpUdWUgRmViICAxIDAwOjU3OjQwIDIwMDAgIEhhbnMtUGV0ZXIgTmlsc3NvbiAgPGhwQGJpdHJhbmdlLmNvbT4KCgkqIGR3YXJmb3V0LmMgKFNIT1JUX1RZUEVfU0laRSk6IENvcnJlY3QgZGVmYXVsdC4KCgkqIHRtLnRleGkgKFR5cGUgTGF5b3V0KTogQ29ycmVjdCBlbnRyeSBmb3IgQ0hBUl9UWVBFX1NJWkUuCgoyMDAwLTAxLTMxICBDaGFuZHJhIENoYXZ2YSA8Y2NoYXZ2YUBjeWdudXMuY29tPgoKCSogY29tYmluZS5jICh0cnlfY29tYmluZSkgW0hBVkVfY2MwXTogVHJ5aW5nIHRvIGNoZWNrIHRoZSBtaXNzZWQKCWNhc2UgMy0+MiBjb21iaW5pbmcgKGNvbWJpbmluZyB3aXRoIHNwbGl0dGluZykgaW4gd2hpY2ggMiBpcyBDQzAKCXNldHRlci91c2VyIGFuZCAzIGlzIHVzZXIuIFRoZSByZXN0IG9mIGNhc2VzIDItPjEgYW5kIDMtPjIgYXJlCgljaGVja2VkIGF0IHRoZSBiZWdpbmluZyBvZiB0aGUgZnVuY3Rpb24gd2l0aCB0aGUgYWlkIG9mIGNhbGxpbmcKCWZ1bmN0aW9uICdjYW5fY29tYmluZV9wJy4KCjIwMDAtMDEtMzEgIERhdmUgQnJvbGxleSAgPGJyb2xsZXlAcmVkaGF0LmNvbT4KCgkqIGNjY3AuYyAoc3RydWN0IGFyZ2RhdGEpOiBSZWRlY2xhcmUgJ25ld2xpbmVzJyBmaWVsZCBhcyAnaW50Jy4KCjIwMDAtMDEtMzEgIEphc29uIE1lcnJpbGwgIDxqYXNvbkBjYXNleS5jeWdudXMuY29tPgoKCSoganVtcC5jIChyZWRpcmVjdF9qdW1wKTogTW92ZSBhIE5PVEVfSU5TTl9GVU5DVElPTl9FTkQgdG8gdGhlCgluZXcgbGFiZWwuCgoyMDAwLTAxLTMxICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBnYW5zaWRlY2wuaCAoUFJPVE8sIFZQUk9UTywgUFZQUk9UTyk6IERlbGV0ZSBtYWNyb3MuCgoJKiBzYml0bWFwLmggKHNiaXRtYXBfZmlyc3Rfc2V0X2JpdCwgc2JpdG1hcF9sYXN0X3NldF9iaXQpOgoJUFJPVE8gLT4gUEFSQU1TLgoKMjAwMC0wMS0zMCAgWmFjayBXZWluYmVyZyAgPHphY2tAd29sZXJ5LmN1bWIub3JnPgoKCSogaTM4Ni8zODZic2QuaCwgaTM4Ni9iZW9zLXBlLmgsIGkzODYvYnNkMzg2LmgsIGkzODYvY3J0ZGxsLmgsCglpMzg2L2N5Z3dpbi5oLCBpMzg2L2RndXguaCwgaTM4Ni9kamdwcC1ydGVtcy5oLCBpMzg2L2RqZ3BwLmgsCglpMzg2L2ZyZWVic2QuaCwgaTM4Ni9nbnUuaCwgaTM4Ni9pMzg2LWFvdXQuaCwgaTM4Ni9pMzg2LWNvZmYuaCwKCWkzODYvaTM4Ni1pbnRlcml4LmgsIGkzODYvaTM4NmVsZi5oLCBpMzg2L2xpbnV4LmgsIGkzODYvbHlueC1uZy5oLAoJaTM4Ni9seW54LmgsIGkzODYvbWFjaC5oLCBpMzg2L21pbmd3MzIuaCwgaTM4Ni9tb3NzLmgsCglpMzg2L25ldGJzZC5oLCBpMzg2L25leHQuaCwgaTM4Ni9vcGVuYnNkLmgsIGkzODYvb3NmMWVsZi5oLAoJaTM4Ni9wdHg0LWkuaCwgaTM4Ni9ydGVtcy5oLCBpMzg2L3J0ZW1zZWxmLmgsIGkzODYvc2NvLmgsCglpMzg2L3NlcXVlbnQuaCwgaTM4Ni9zdW4uaCwgaTM4Ni9zeXN2NC5oLCBpMzg2L3V3aW4uaCwgaTM4Ni92c3RhLmgsCglpMzg2L3Z4aTM4Ni5oLCBpMzg2L3dpbi1udC5oLCBpMzg2L3dpbjMyLmg6CglSZW1vdmUgLURpMzg2IC1BY3B1KGkzODYpIC1BbWFjaGluZShpMzg2KSBmcm9tIENQUF9QUkVERUZJTkVTLgoKCSogaTM4Ni9vc2YxZWxmLmgsIGkzODYvc2NvZGJ4LmgsIGkzODYvc2VxLXN5c3YzLmgsIGkzODYvc3lzdjUuaDoKCUFkZCAlKGNwcF9jcHUpIHRvIENQUF9TUEVDLgoKCSogaTM4Ni9vc2YxZWxmLmgsIGkzODYvb3NmZWxmLmgsIGkzODYvb3Nmcm9zZS5oOgoJQWRkICUoY2MxX2NwdSkgdG8gQ0MxX1NQRUMuCgoyMDAwLTAxLTI4ICBVbHJpY2ggRHJlcHBlciAgPGRyZXBwZXJAcmVkaGF0LmNvbT4KCgkqIGMtZGVjbC5jIChjX2RlY29kZV9vcHRpb24pOiBBY2NlcHQgb3B0aW9uYWwgbnVtZXJpYyBhcmd1bWVudCB0bwoJLVdmb3JtYXQgYW5kIHNldCB3YXJuX2Zvcm1hdC4KCSogYy1jb21tb24uYzogRG9uJ3QgZW1pdCB3YXJuaW5nIGFib3V0IG5vbi1jb25zdGFudCBwcmludGYgZm9ybWF0CglzdHJpbmcgdW5sZXNzIHdhcm5fZm9ybWF0ID4gMS4KCjIwMDAtMDEtMzAgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgoJKiBhbHBoYS5tZCAocmV0dXJuX2ludGVybmFsKTogQWxsb3cgYWZ0ZXIgcmVsb2FkIG9ubHkuCgoyMDAwLTAxLTMwICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEBjeWdudXMuY29tPgoKCSogaTM4Ni5jIChpeDg2X2NvbXB1dGVfZnJhbWVfc2l6ZSk6IE9taXQgcGFkZGluZzEgaWYgdGhlCglsb2NhbCBmcmFtZSBzaXplIGlzIHplcm8uCgoyMDAwLTAxLTMwICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEBjeWdudXMuY29tPgoKCSogYWxwaGEuYyAoYWxwaGFfZXhwYW5kX2VwaWxvZ3VlKTogRG9uJ3QgZW1pdCB0aGUgcmV0dXJuIGluc24uCgkqIGFscGhhLmggKEVQSUxPR1VFX1VTRVMpOiBOZXcuICBNYXJrICQyNiBsaXZlLgoJKiBhbHBoYS5tZCAocmV0dXJuKTogVHVybiBpbnRvIGFuIGV4cGFuZGVyLgoJKHJldHVybl9pbnRlcm5hbCk6IERvbid0IHVzZSAkMjYuCgkoZXBpbG9ndWUpOiBFbWl0IHRoZSByZXR1cm4gaW5zbi4KCjIwMDAtMDEtMzAgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgoJKiBhbHBoYS5tZCAobmVndGYyLCBhYnN0ZjIpOiBGaXggd29yZCBvcmRlciB0aGlua28uCgkoZXh0ZW5kc2Z0ZjIpOiBOZXcuCgkodHJ1bmN0ZnNmMik6IEF2b2lkIGludGVybWVkaWF0ZSByb3VuZGluZyBlcnJvcnMuCgoyMDAwLTAxLTMwICBaYWNrIFdlaW5iZXJnICA8emFja0B3b2xlcnkuY3VtYi5vcmc+CgoJKiBjcHBmaWxlcy5jIChmaW5kX3Bvc2l0aW9uKTogRHJvcCAnY29scCcgYXJndW1lbnQsIHJldHVybiB0aGUKCW5ldyBsaW5lIGJhc2UuCgkocmVhZF9hbmRfcHJlc2Nhbik6IEFkanVzdCB0byBtYXRjaC4gIERvbid0IGV2ZXIgbWFuaXB1bGF0ZQoJbGluZSBvciBsaW5lX2Jhc2UgZXhjZXB0IHZpYSBmaW5kX3Bvc2l0aW9uLgoKMjAwMC0wMS0yOSAgWmFjayBXZWluYmVyZyAgPHphY2tAd29sZXJ5LmN1bWIub3JnPgoKCSogYy1wYXJzZS5pbjogQXBwbHkgVWxyaWNoJ3MgY2hhbmdlcyBmcm9tIGMtcGFyc2UueS4KCSogYy1wYXJzZS55LCBvYmpjL29iamMtcGFyc2UueSwgYy1wYXJzZS5jLCBvYmpjL29iamMtcGFyc2UuYzoKCVJlZ2VuZXJhdGUuCgoyMDAwLTAxLTI5ICBaYWNrIFdlaW5iZXJnICA8emFja0B3b2xlcnkuY3VtYi5vcmc+CgoJKiBjcHBlcnJvci5jIChjcHBfZmlsZV9saW5lX2Zvcl9tZXNzYWdlKTogSWYgJ2xpbmUnIGlzIHplcm8sCglqdXN0IHByaW50ICI8Y29tbWFuZCBsaW5lPiIuICBJZiAnZmlsZW5hbWUnIGlzIG51bGwgb3IgYW4KCWVtcHR5IHN0cmluZywgcHJpbnQgIjxzdGRpbj4iIGZvciB0aGUgZmlsZW5hbWUuCgkqIGNwcGxpYi5jIChkb19kZWZpbmUpOiBEb24ndCBwcmludCB0aGUgJ2xvY2F0aW9uIG9mIHRoZQoJcHJldmlvdXMgZGVmaW5pdGlvbicgbWVzc2FnZSBpZiB3ZSdyZSBzdGlsbCBwYXJzaW5nIHRoZQoJY29tbWFuZCBsaW5lLgoJKGNwcF9wZWR3YXJuX3dpdGhfZmlsZV9hbmRfbGluZSk6IEFsd2F5cyBjYWxsCgljcHBfZmlsZV9saW5lX2Zvcl9tZXNzYWdlLgoKMjAwMC0wMS0yOSAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGZsb3cuYyAobWFya19yZWdzX2xpdmVfYXRfZW5kKTogRml4IHR5cG8uCgoyMDAwLTAxLTI4ICBVbHJpY2ggRHJlcHBlciAgPGRyZXBwZXJAcmVkaGF0LmNvbT4KCgkqIGMtY29tbW9uLmM6IEFkanVzdCB2YXJpYWJsZSBuYW1lcywgY29tbWVudHMsIGhlbHAgc3RyaW5ncyB0byBjOTkuCgkqIGMtbGV4LmM6IExpa2V3aXNlLgoJKiBjLXBhcnNlLnk6IExpa2V3aXNlLgoJKiBjLXRyZWUuaDogTGlrZXdpc2UuCgkqIGNjY3AuYzogTGlrZXdpc2UuCgkqIGNwcGxpYi5oOiBMaWtld2lzZS4KCSogYy1kZWNsLmM6IExpa2V3aXNlLiAgUmVjb2duaXplIG9wdGlvbnMgd2l0aCBuYW1lcyAiKjk5IiBhcyB3ZWxsLgoJKiBjcHBpbml0LmM6IExpa2V3aXNlLgoKMjAwMC0wMS0yOSBIZXJtYW4gQS5KLiB0ZW4gQnJ1Z2dlIDxIYWouVGVuLkJydWdnZUBuZXQuSENDLm5sPgoKCSogYzR4LmggKElOSVRfVEFSR0VUX09QVEFCUyk6IEFkZCBhbGwgbWlzc2luZyBsb2NhbCBvcHRhYiBlbnRyaWVzLgoJKiBjNHguYzogRGVmaW5lIHRoZSBvcHRhYiBydHggdmFsdWVzLgoJKGM0eF9hZGRfZ2Nfcm9vdHMpOiBBZGQgdGhlIGdnYyByb290cyBmb3IgdGhlc2Ugb3B0YWIgcnR4IHZhbHVlcy4KCShjNHhfZW1pdF9saWJjYWxsKTogVXNlIG5ldyBvcHRhYiBydHggdmFsdWVzLgoJKGM0eF9lbWl0X2xpYmNhbGwzKTogTGlrZXdpc2UuCgkoYzR4X2VtaXRfbGliY2FsbF9tdWxoaSk6IExpa2V3aXNlLgoJKiBjNHgtcHJvdG9zLmg6IEFkZCBwcm90b3R5cGVzIGZvciBvcHRhYiBydHggdmFsdWVzIGFuZCBjaGFuZ2UKCXByb3RvdHlwZXMgZm9yIGFib3ZlIGM0eF9lbWl0X2xpYmNhbGwgZnVuY3Rpb25zLgoKMjAwMC0wMS0yOSBIZXJtYW4gQS5KLiB0ZW4gQnJ1Z2dlIDxIYWouVGVuLkJydWdnZUBuZXQuSENDLm5sPgoKCSogYzR4LmMgKGM0eF9vdXRwdXRfYXNjaWkpOiBSZXN0cmljdCBsaW5lIGxlbmd0aCBvZiBvdXRwdXQgd2hlbiBUSQoJc3ludGF4IGlzIHVzZWQuCgkoYzR4X2Z1bmN0aW9uX3Byb2xvZ3VlKTogVXNlIHJlZ25hbWVzIGludGVhZCBvZiBmbG9hdF9yZWdfbmFtZXMgd2hlbgoJVEkgc3ludGF4IGlzIHVzZWQuCgkoYzR4X2Z1bmN0aW9uX2VwaWxvZ3VlKTogTGlrZXdpc2UuCgkoYzR4X3ByaW50X29wZXJhbmQpOiBMaWtld2lzZS4KCSogYzR4LmggKEhPU1RfV0lERV9JTlRfUFJJTlRfSEVYKTogUmVkZWZpbmUuCgkqIGM0eC5tZCAoc2V0X2hpZ2gpOiBEaXNhYmxlIGZvciBUQVJHRVRfVEkuCgoyMDAwLTAxLTI5IEhlcm1hbiBBLkouIHRlbiBCcnVnZ2UgPEhhai5UZW4uQnJ1Z2dlQG5ldC5IQ0Mubmw+CgoJKiBjNHguaCAoUFJFRkVSUkVEX1JFTE9BRF9DTEFTUyk6IENoYW5nZSB0byByZXN0cmljdCB0aGUgcmVsb2FkaW5nCglvZiBmcmFtZXBvaW50ZXIgKyBjb25zdGFudCB0byBBRERSX1JFR1MgY2xhc3MuCgkqIGM0eC5tZCAoYWRkcWkzLCBhZGRxaTNfbm9jbG9iYmVyX3JlbG9hZCk6IFVwZGF0ZS4KCSogYzR4LmMgKHN0ZF9vcl9yZWdfb3BlcmFuZCk6IE5ldyBmdW5jdGlvbi4KCSogYzR4LXByb3Rvcy5oIChzdGRfb3JfcmVnX29wZXJhbmQpOiBQcm90b3R5cGUgaXQuCgoyMDAwLTAxLTI5IEhlcm1hbiBBLkouIHRlbiBCcnVnZ2UgPEhhai5UZW4uQnJ1Z2dlQG5ldC5IQ0Mubmw+CgoJKiB0LWM0eDogQ2hhbmdlIHFpLHFmLGRpLGRmIGludG8gc2ksc2YsaGksaGYgdG8gZ2VuZXJhdGUgc2FtZQoJCW9iamVjdCBuYW1lcyBhcyBsaWJnY2MyLmMuCgkqIGxpYmdjYy5TOiBVc2UgbmV3bHkgZGVmaW5lZCBuYW1lcy4KCkZyaSBKYW4gIDcgMTk6NDg6MDQgQ0VUIDIwMDAgIEphbiBIdWJpY2thICA8amhAc3VzZS5jej4KCSogc2JpdG1hcC5jIChzYml0bWFwX2ZpcnN0X3NldF9iaXQsIHNiaXRtYXBfbGFzdF9zZXRfYml0KTogTmV3CglmdW5jdGlvbi4KCSogc2JpdG1hcC5oIChzYml0bWFwX2ZpcnN0X3NldF9iaXQsIHNiaXRtYXBfbGFzdF9zZXRfYml0KTogRGVjbGFyZS4KCSogYmFzaWNfYmxvY2suaCAoRkxPV19MT09QX0ZJUlNUX0JMT0NLKTogTmV3IG1hY3JvLgoJKEZMT1dfTE9PUF9MQVNUX0JMT0NLKTogTGlrZXdpc2UuCgoyMDAwLTAxLTIxICBNaWNoYWVsIEhheWVzICA8bS5oYXllc0BlbGVjLmNhbnRlcmJ1cnkuYWMubno+CgoJKiBiYXNpYy1ibG9jay5oIChzdHJ1Y3QgbG9vcCk6IE5ldyBmaWVsZHMgJ2ZpcnN0JyBhbmQgJ2xhc3QnLgoJKiBmbG93LmMgKGZsb3dfbG9vcHNfZmluZCk6IENvbXB1dGUgbG9vcC0+Zmlyc3QgYW5kIGxvb3AtPmxhc3QuCgkoZmxvd19sb29wc19kdW1wKTogVXNlIGxvb3AtPmZpcnN0IHRvIGNoZWNrIGZvciBOT1RFX0lOU05fTE9PUF9CRUcKCWFuZCBsb29wLT5sYXN0IHRvIGNoZWNrIGZvciBOT1RFX0lOU05fTE9PUF9FTkQuCgpGcmkgSmFuIDI4IDEwOjU3OjU4IDIwMDAgIEphc29uIEVja2hhcmR0ICA8amxlQGN5Z251cy5jb20+CgoJKiBwcmVkaWN0LmMgKGVzdGltYXRlX3Byb2JhYmlsaXR5KTogVXNlIHRoZSBuZXcgRklSU1QgYW5kIExBU1QgZmllbGRzCglvZiB0aGUgbG9vcCBkZXNjcmlwdG9yIHJhdGhlciB0aGFuIEhFQURFUiBhbmQgTEFUQ0guIEFsc28gYWRkZWQKCW1pc3NpbmcgYnJlYWsgc3RhdGVtZW50cyBhcyB3ZWxsIG1ha2luZyBzb21lIGNvZGluZyBzdHlsZSBtb2RpZmljYXRpb25zCglhcyBzdWdnZXN0ZWQgYnkgTWljaGFlbCBIYXllcy4KCjIwMDAtMDEtMjggIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgoJKiBmbG93LmMgKGZpbmRfYmFzaWNfYmxvY2tzKTogUmVtb3ZlIGRvX2NsZWFudXAgYXJndW1lbnQuCglCcmVhayBvdXQgdGhhdCBjb2RlIC4uLgoJKGNsZWFudXBfY2ZnKTogLi4uIGhlcmUuCgkoY29tbWl0X29uZV9lZGdlX2luc2VydGlvbik6IERldGVjdCBhIHJldHVybiBpbnN0cnVjdGlvbiBiZWluZwoJZW1pdHRlZCB0byBhbiBlZGdlLiAgRW1pdCBhIGJhcnJpZXIgZm9sbG93aW5nOyBjbGVhciBmYWxsdGhydS4KCShjb21taXRfZWRnZV9pbnNlcnRpb25zKTogVmVyaWZ5IENGRyBjb25zaXN0ZW5jeS4KCSogZnVuY3Rpb24uYyAoZXhwYW5kX2Z1bmN0aW9uX3N0YXJ0KTogS2lsbCB1bnVzZWQgdmFyaWFibGUuCgkoZXhwYW5kX2Z1bmN0aW9uX2VuZCk6IExpa2V3aXNlLgoJKHRocmVhZF9wcm9sb2d1ZV9hbmRfZXBpbG9ndWVfaW5zbnMpOiBVc2UgaW5zZXJ0X2luc25fb25fZWRnZQoJdG8gaW5zZXJ0IHRoZSBlcGlsb2d1ZS4KCgkqIGdjc2UuYyAoZ2NzZV9tYWluKTogQWRqdXN0IGZvciBmaW5kX2Jhc2ljX2Jsb2NrcyBjaGFuZ2UuCgkoZGVsZXRlX251bGxfcG9pbnRlcl9jaGVja3MpOiBMaWtld2lzZS4KCSogb3V0cHV0Lmg6IExpa2V3aXNlLgoJKiByZWctc3RhY2suYyAocmVnX3RvX3N0YWNrKTogTGlrZXdpc2UuCgkqIHRvcGxldi5jIChyZXN0X29mX2NvbXBpbGF0aW9uKTogTGlrZXdpc2UuICBSdW4KCXRocmVhZF9wcm9sb2d1ZV9hbmRfZXBpbG9ndWVfaW5zbnMgYWZ0ZXIgcmVidWlsZGluZyB0aGUgQ0ZHLgoKMjAwMC0wMS0yOCAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAY3lnbnVzLmNvbT4KCgkqIE1ha2VmaWxlLmluIChmbG93Lm8pOiBSZXZlcnQgMjQgSmFuIGNoYW5nZS4KCSogZmxvdy5jIChtYXJrX3JlZ3NfbGl2ZV9hdF9lbmQpOiBMaWtld2lzZS4gIEZvcmNlIEJMS21vZGUKCUZVTkNUSU9OX1ZBTFVFIHJlc3VsdCB0byBERUNMX1JFU1VMVCdzIG1vZGUuCgoJKiBoYWlmYS1zY2hlZC5jIChzY2hlZHVsZV9pbnNucyk6IERvbid0IHJlY29tcHV0ZSByZWcgaW5mbwoJYWZ0ZXIgcmVsb2FkLgoKMjAwMC0wMS0yOCAgWmFjayBXZWluYmVyZyAgPHphY2tAd29sZXJ5LmN1bWIub3JnPgoKCSogY29uZmlndXJlLmluOiBNYWtlIC0tZW5hYmxlLWNwcGxpYiB0aGUgZGVmYXVsdC4KCSogY29uZmlndXJlOiBSZWdlbmVyYXRlLgoJKiBnY2MuZGcvOTkwMTE5LTEuYzogTm8gbG9uZ2VyIGV4cGVjdGVkIHRvIGZhaWwuCgoyMDAwLTAxLTI4ICBCZXJuZCBTY2htaWR0ICA8YmVybmRzQGN5Z251cy5jby51az4KCgkqIGp1bXAuYyAoanVtcF9vcHRpbWl6ZV8xKTogRGVsZXRlIGFuIG9wdGltaXphdGlvbiB0aGF0IGlzIGFsc28gZG9uZQoJYnkgbWVyZ2VfYmxvY2tzIGluIGZsb3cuCgoyMDAwLTAxLTI4ICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBkaWFnbm9zdGljLmMgKGJ1aWxkX21lc3NhZ2Vfc3RyaW5nLCBvdXRwdXRfcHJpbnRmLAoJbGluZV93cmFwcGVyX3ByaW50Zik6IEFkZCBBVFRSSUJVVEVfUFJJTlRGXyouCgkoYnVpbGRfbG9jYXRpb25fcHJlZml4KTogRml4IG5vbi1saXRlcmFsIGZvcm1hdCBzdHJpbmcuCgoyMDAwLTAxLTI3ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEBjeWdudXMuY29tPgoKCSogYWxwaGEubWQgKHRydW5jdGZzZjIpOiBOZXcuCgoyMDAwLTAxLTI3ICBBbmRyZXcgSG9ic29uICA8YWhvYnNvbkBlbmcubWluZHNwcmluZy5uZXQ+CgoJKiBjb25maWd1cmUuaW4gKGFscGhhLWRlYy1vc2Y1KTogRW5hYmxlIE1BU0tfU1VQUE9SVF9BUkNILgoKMjAwMC0wMS0yNyAgWmFjayBXZWluYmVyZyAgPHphY2tAd29sZXJ5LmN1bWIub3JnPgoKCSogY3BwaW5pdC5jIChjcHBfaGFuZGxlX29wdGlvbik6IFJlY29nbml6ZSBDKysgY29tbWVudHMgdW5kZXIKCS1zdGQ9Z251ODkuCgkqIGNwcGxpYi5jIChza2lwX2Jsb2NrX2NvbW1lbnQsIHNraXBfbGluZV9jb21tZW50KTogU3BsaXQgY29kZQoJb3V0IG9mLi4uCgkoc2tpcF9jb21tZW50KSAuLi4gaGVyZS4gIFBlcm1pdCBDKysgY29tbWVudHMgaW4gc3lzdGVtCgloZWFkZXJzIGFsd2F5cy4gIFdhcm4gYWJvdXQgQysrIGNvbW1lbnRzIGluIHVzZXIgY29kZSB1bmRlcgoJLXN0ZD1nbnU4OSAtcGVkYW50aWMuCgkoY29weV9jb21tZW50KTogVXNlIHNraXBfY29tbWVudC4KCShjcHBfc2tpcF9oc3BhY2UsIGNwcF9nZXRfdG9rZW4pOiBza2lwX2NvbW1lbnQgY2FuIG5vIGxvbmdlcgoJcmV0dXJuIEVPRi4KCShjb25zaWRlcl9kaXJlY3RpdmVfd2hpbGVfc2tpcHBpbmcsIGRvX2Vsc2UsIGRvX2VuZGlmKTogQ2FsbAoJdmFsaWRhdGVfZWxzZSB1bmNvbmRpdGlvbmFsbHkuCgkodmFsaWRhdGVfZWxzZSk6IENoZWNrIENQUF9QRURBTlRJQyBoZXJlLiAgQWNjZXB0IG5vbi1jb21tZW50Cgl0ZXh0IGFmdGVyIHRoZSBjb25kaXRpb25hbCBpbiBhIHN5c3RlbSBoZWFkZXIuCgkqIGNwcGxpYi5oIChzdHJ1Y3QgY3BwX2J1ZmZlcik6IEFkZCBmbGFnCgl3YXJuZWRfY3BsdXNwbHVzX2NvbW1lbnRzLgoKMjAwMC0wMS0yNyAgR2VvZmZyZXkgS2VhdGluZyAgPGdlb2Zma0BjeWdudXMuY29tPgoKCSogZW1pdC1ydGwuYyAodW5zaGFyZV9hbGxfcnRsKTogVW5zaGFyZSB2aXJ0dWFsIHBhcmFtZXRlcnMgdG9vLgoJVXNlIHVuc2hhcmVfYWxsX3J0bF8xLgoJKHVuc2hhcmVfYWxsX3J0bF9hZ2Fpbik6IE5ldyBmdW5jdGlvbi4KCSh1bnNoYXJlX2FsbF9ydGxfMSk6IE5ldyBmdW5jdGlvbiBzcGxpdCBvdXQgb2YgdW5zaGFyZV9hbGxfcnRsLgoKCSogZnVuY3Rpb24uYyAocHVyZ2VfYWRkcmVzc29mXzEpOiBVc2UgdW5zaGFyZV9hbGxfcnRsX2FnYWluCglyYXRoZXIgdGhhbiByZXNldHRpbmcgdGhlICd1c2VkJyBmbGFncyBvdXJzZWxmLgoKCSogdG9wbGV2LmMgKHJlc3Rfb2ZfY29tcGlsYXRpb24pOiBBZGQgY3VycmVudF9mdW5jdGlvbl9kZWNsCgl0byB0aGUgdW5zaGFyZV9hbGxfcnRsIGNhbGwuCgkqIHRyZWUuaDogUHJvdG90eXBlIHVuc2hhcmVfYWxsX3J0bC4KCSogcnRsLmg6IFByb3RvdHlwZSB1bnNoYXJlX2FsbF9ydGxfYWdhaW4gaGVyZS4KCjIwMDAtMDEtMjcgIEdlb2ZmcmV5IEtlYXRpbmcgIDxnZW9mZmtAY3lnbnVzLmNvbT4KCgkqIGdlbm91dHB1dC5jIChvdXRwdXRfcHJvbG9ndWUpOiBJbmNsdWRlIGdnYy5oIGluIGdlbmVyYXRlZAoJZmlsZXMuCgkqIE1ha2VmaWxlLmluIChpbnNuLW91dHB1dC5vKTogRGVwZW5kcyBvbiBnZ2MuaC4KCjIwMDAtMDEtMjcgIElhbiBEYWxsICA8aWFuQHNpYnlsLmJld2FyZS5kcm9wYmVhci5pZC5hdT4KCSAgICBIYW5zLVBldGVyIE5pbHNzb24gIDxocEBiaXRyYW5nZS5jb20+CgoJKiBuczMyay94bS1uczMyay5oIChtZW1jcHksIG1lbXNldCwgbWVtY21wKTogRGVsZXRlLgoJUmVtb3ZlIHJlZHVuZGFudCBpbmNsdWRlIG9mIHhtLW5zMzJrLmguCgkqIG5zMzJrL3htLWdlbml4LmggKG1lbWNweSwgbWVtc2V0LCBtZW1jbXApOiBBZGQgZGVmaW5pdGlvbnMuCglSZW1vdmUgcmVkdW5kYW50IGluY2x1ZGUgb2YgeG0tbnMzMmsuaC4KCSogbnMzMmsveG0tbmV0YnNkLmggKG1lbWNweSwgbWVtc2V0LCBtZW1jbXApOiBObyBsb25nZXIgdW5kZWZpbmUuCglSZW1vdmUgcmVkdW5kYW50IGluY2x1ZGUgb2YgeG0tbnMzMmsuaC4KCSogbnMzMmsvbmV0YnNkLmggKFRBUkdFVF9ERUZBVUxUKTogRW5hYmxlIG11bHRpcGx5LWFkZCBpbnN0cnVjdGlvbnMuCgoJKiBuczMyay9uczMyay5oOiBVcGRhdGUgY29tbWVudCBvbiBtdWx0aXBseS1hZGQgaW5zdHJ1Y3Rpb25zLgoJKFRBUkdFVF9TV0lUQ0hFUyk6IEFkZCBkb2N1bWVudGF0aW9uIHN0cmluZ3MuCgkoRFdBUkZfRlJBTUVfUkVHTlVNKTogT3ZlcnJpZGUgZGVmYXVsdCBkZWZpbml0aW9uLgoJKFJFR19DTEFTU19DT05URU5UUyk6IEFkZCBjb21tZW50cy4KCShTVUJTRVRfUCk6IEZvcm1hdCB0byByZWR1Y2UgbGluZSBsZW5ndGguCgkoU01BTExfUkVHSVNURVJfQ0xBU1NFUyk6IE1ha2UgYSBydW4gdGltZSBvcHRpb24uCgkoR09fSUZfTk9OSU5ERVhFRF9BRERSRVNTKTogUmVmb3JtYXQuCgkoR09fSUZfTEVHSVRJTUFURV9BRERSRVNTKTogRW5zdXJlIHRoYXQgY2Z1biBpcyBub24gTlVMTCBiZWZvcmUKCWRlcmVmZXJlbmNpbmcgaXQuICBCcmFjZXMgdG8gYXZvaWQgImFtYmlndW91cyBlbHNlIiB3ZXJlIG1pc3BsYWNlZC4KCShyZWdjbGFzc19tYXApOiBmaXggdHlwbyBpbiBjb21tZW50LgoJKiBuczMyay9uczMyay5jOiBBZGQgc3BhY2VzIGJlZm9yZSBwYXJlbnRoZXNlcyBmb3IgY29uc2lzdGFudCBzdHlsZS4KCVByZWZlciBnZW5fcnR4X0ZPTyguLi4pIHRvIGdlbl9ydHgoRk9PLC4uLikuCgkodHJhY2UsIHJlZ19vcl9tZW1fb3BlcmFuZCk6IERlbGV0ZSwgdW51c2VkIGZ1bmN0aW9uLgoJKGNhbGNfYWRkcmVzc19jb3N0KTogU21hbGwgb2Zmc2V0cyBhcmUgY2hlYXBlciB0aGFuIGxhcmdlIG9uZXMuCgkoZXhwYW5kX2Jsb2NrX21vdmUpOiBHZW5lcmF0ZSBtb3JlIGVmZmljaWVudCBjb2RlIHdoZW4gYnl0ZXMgaXMgYQoJa25vd24gYXQgY29tcGlsZSB0aW1lLgoJKiBuczMyay9uczMyay5tZDogQWx0ZXJuYXRlIGNvbnN0cmFpbnRzIGZvciBtdWx0aXBseS1hZGQgaW5zdHJ1Y3Rpb25zLgoJKHVkaXZtb2RzaTQsIHVkaXZtb2RoaTQsIHVkaXZtb2RxaTQpOiBVc2Ugbm9uaW1tZWRpYXRlX29wZXJhbmQKCWluc3RlYWQgb2YgcmVnX29yX21lbV9vcGVyYW5kLgoKCSogbnMzMmsvbnMzMmsubWQ6IFVzZSBub25pbW1lZGlhdGVfb3BlcmFuZCBvciBzdHJpY3RlciBmb3Igb3V0cHV0cywKCW5vdCBnZW5lcmFsX29wZXJhbmQuICBTaW1pbGFybHkgdXNlICI9cm0iIG9yIHN0cmljdGVyLCBub3QgIj1nIi4KCUZvciBpbnB1dCBvcGVyYW5kcywgdXNlIHN0cmljdGVyIGNvbnN0cmFpbnRzIHRoYW4gImciIGlmIG5vdAoJZ2VuZXJhbF9vcGVyYW5kLiAgU2ltaWxhcmx5IHVzZSBzdHJpY3RlciBwcmVkaWNhdGUgdGhhbgoJImdlbmVyYWxfb3BlcmFuZCIgd2hlbiBzdHJpY3RlciBjb25zdHJhaW50cyB0aGFuICJnIiBhcmUgcHJlc2VudCwKCWV4Y2VwdCBmb3IgbWF0Y2hpbmcgY29uc3RyYWludHMuCgkobW92c3Ryc2kpOiBVc2UgIm1lbW9yeV9vcGVyYW5kIiBmb3Igb3BlcmFuZHMgMCBhbmQgMS4KCSh0cnVuY3NpcWkyLCB0cnVuY3NpaGkyLCB0cnVuY2hpcWkyKTogUmVtb3ZlLgoJKHVkaXZtb2RkaXNpNF9pbnRlcm5hbCk6IFVzZSBub25pbW1lZGlhdGVfb3BlcmFuZCBmb3Igb3BlcmFuZCAwLAoJbm90IHJlZ19vcl9tZW1fb3BlcmFuZC4KCSh1ZGl2bW9kZGlzaTQpOiBEaXR0by4KCVVzZSBub25pbW1lZGlhdGVfb3BlcmFuZCBmb3Igb3BlcmFuZCAxLCBub3QgcmVnX29yX21lbV9vcGVyYW5kLgoJVXNlIG5vbmltbWVkaWF0ZV9vcGVyYW5kIGZvciBvcGVyYW5kIDMsIG5vdCByZWdpc3Rlcl9vcGVyYW5kLgoJKHVkaXZtb2RkaXFpNF9pbnRlcm5hbCk6IFVzZSByZWdpc3Rlcl9vcGVyYW5kIGZvciBvcGVyYW5kIDEsIG5vdAoJcmVnX29yX21lbV9vcGVyYW5kLgoKMjAwMC0wMS0yNyAgRnJlZCBGaXNoICA8Zm5mQGJlLmNvbT4KCgkqIGd0aHItcG9zaXguaDogRml4IHR5cG87IGNvbXBhdGliaWx5IC0+IGNvbXBhdGliaWxpdHkuCgkqIGd0aHItc2luZ2xlLmg6IExpa2V3aXNlLgoJKiBndGhyLXNvbGFyaXMuaDogTGlrZXdpc2UuCgkqIGd0aHItdnh3b3Jrcy5oOiBMaWtld2lzZS4KCSogZ3Roci13aW4zMi5oOiBMaWtld2lzZS4KCSogZ3Roci5oOiBMaWtld2lzZS4KCjIwMDAtMDEtMjcgIFphY2sgV2VpbmJlcmcgIDx6YWNrQHdvbGVyeS5jdW1iLm9yZz4KCgkqIGNwcGluaXQuYzogQWRkICIgKGNwcGxpYikiIHRvIGVuZCBvZiBzdHJpbmcgcHJpbnRlZCBieQoJLXYgLyAtLXZlcnNpb24uCgoyMDAwLTAxLTI3ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEBjeWdudXMuY29tPgoKCSogYWxwaGEuYyAoYWxwaGFfZW1pdF9jb25kaXRpb25hbF9tb3ZlKTogVXNlIFZPSURtb2RlIHdoZW4KCXRlc3RpbmcgZm9yIGEgc2lnbmVkIGNvbXBhcmlzb24uCgkoYWxwaGFfZW1pdF9mbG9hdHVucyk6IE5ldy4KCSogYWxwaGEtcHJvdG9zLmg6IERlY2xhcmUgaXQuCgkqIGFscGhhLm1kIChmbG9hdHVuc2Rpc2YyLCBmbG9hdHVuc2RpZGYyKTogTmV3LgoJKGV4dGVuZHNmZGYyKTogVGlkeS4KCjIwMDAtMDEtMjcgIEpha3ViIEplbGluZWsgIDxqYWt1YkByZWRoYXQuY29tPgoKCSogY29uZmlnL3NwYXJjL2xpbnV4NjQuaCAoQ0MxX1NQRUMpOiBJZiBjb21waWxpbmcgLW0zMiB3aXRoIC1nIGJ1dAoJbm8gLWcgb3B0aW9uIHNwZWNpZnlpbmcgZGVidWdnaW5nIGZvcm1hdCwgZGVmYXVsdCB0byAtZ3N0YWJzKy4KCldlZCBKYW4gMjYgMjI6MTk6MTQgMTk5OSAgSiJvcm4gUmVubmVja2UgIDxhbXlsYWFyQGN5Z251cy5jby51az4KCgkqIGNhbGxzLmMgKHNwZWNpYWxfZnVuY3Rpb25fcCk6IE5ldyBhcmd1bWVudCBmb3JrX29yX2V4ZWMuCgkoZXhwYW5kX2NhbGwpOiBXaGVuIHByb2ZpbGVfYXJjX2ZsYWcgaXMgc2V0IGFuZCB0aGUgZnVuY3Rpb24KCWlzIGluIHRoZSBmb3JrX29yX2V4ZWMgZ3JvdXAsIGNhbGwgX19iYl9mb3JrX2Z1bmMgZmlyc3QuCgkqIGxpYmdjYzIuYywgX2JiIG1vZHVsZSAoX19iYl9mb3JrX2Z1bmMpOiBOZXcgZnVuY3Rpb24uCgkoX19iYl9leGl0X2Z1bmMpOiBJZiBmY250bCBGX1NFVExLVyBpcyBhdmFpbGFibGUsIHVzZSBpdCB0byBsb2NrCglvdXRwdXQgZmlsZS4KCSogY29uZmlnL3N2cjQuaCAoVEFSR0VUX0hBU19GX1NFVExLVyk6IERlZmluZS4KCSogdHJlZS5oIChzcGVjaWFsX2Z1bmN0aW9uX3ApOiBVcGRhdGUgcHJvdG90eXBlLgoKMjAwMC0wMS0yNiAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAY3lnbnVzLmNvbT4KCgkqIGFscGhhLmMgKGFscGhhX3NwbGl0X3RmbW9kZV9wYWlyKTogTmV3LgoJKiBhbHBoYS1wcm90b3MuaDogRGVjbGFyZSBpdC4KCSogYWxwaGEubWQgKGFic3RmMiwgbmVndGYyKTogTmV3LgoJKG1vdnRmIGluc24pOiBBZGQgaW5wdXQgRyBjb25zdHJhaW50LgoJKG1vdnRmIHNwbGl0dGVyKTogVXNlIGFscGhhX3NwbGl0X3RmbW9kZV9wYWlyLgoKMjAwMC0wMS0yNiAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogaTM4Ni9jeWd3aW4uaDogUFJPVE8gLT4gUEFSQU1TLgoKMjAwMC0wMS0yNiAgSmFrdWIgSmVsaW5layAgPGpha3ViQHJlZGhhdC5jb20+CgoJKiBjb25maWcvc3BhcmMvc3BhcmMuYyAoc3BhcmNfZW1pdF9mbG9hdF9saWJfY21wKTogSGFuZGxlCglUQVJHRVRfQVJDSDMyIGFnYWluLiBIYW5kbGUgT1JERVJFRCwgVU4qIGFuZCBMVEdUIGNvbXBhcmlzb25zCgl1c2luZyBfUXBfY21wL19RX2NtcCBhbmQgdGVzdGluZyB0aGUgcmV0dXJuIHZhbHVlLgoJKHByaW50X29wZXJhbmQpOiBDYWxsIHJldmVyc2VfY29uZGl0aW9uX21heWJlX3Vub3JkZXJlZCBpZgoJd2UgYXJlIGhhbmRsaW5nIENDRlBtb2RlIG9yIENDRlBFbW9kZS4KCUhhbmRsZSBPUkRFUkVELCBVTiogYW5kIExUR1QgY29tcGFyaXNvbnMuCgkqIGNvbmZpZy9zcGFyYy9zcGFyYy5tZCAoY21wdGYpOiBVc2UgZXZlbiBvbiBUQVJHRVRfQVJDSDMyCglpZiBub3QgVEFSR0VUX0hBUkRfUVVBRC4KCShzZXEsIHNuZSwgc2d0LCBzbHQsIHNnZSwgc2xlLCBiZXEsIGJuZSwgYmd0LCBibHQsIGJnZSwgYmxlLAoJYnVub3JkZXJlZCwgYm9yZGVyZWQsIGJ1bmd0LCBidW5sdCwgYnVuZXEsIGJ1bmdlLCBidW5sZSwgYmx0Z3QpOgoJQ2FsbCBzcGFyY19lbWl0X2Zsb2F0X2xpYl9jbXAgZXZlbiBvbiBUQVJHRVRfQVJDSDMyLgoJQWRqdXN0IGdlbl9iKiBjYWxscyBzbyB0aGF0IHRoZXkgcmVmbGVjdCByZXR1cm4gY29tcGFyaXNvbiBvZgoJc3BhcmNfZW1pdF9mbG9hdF9saWJfY21wLgoKMjAwMC0wMS0yNiAgQWxleGFuZHJlIE9saXZhICA8b2xpdmFAbHNkLmljLnVuaWNhbXAuYnI+CgoJKiBjb25maWcvYWxwaGEvYWxwaGEuYyAoYWxwaGFfZW1pdF94ZmxvYXRpbmdfY3Z0KTogRG8gbm90IGFzc3VtZQoJaW5jb21pbmcgb3BlcmFuZHMgYXJyYXkgaXMgbGFyZ2UgZW5vdWdoIGZvciBvbmUgbW9yZSBvcGVyYW5kLgoJKGFscGhhX2VtaXRfeGZsb2F0aW5nX2FyaXRoKTogTGlrZXdpc2UuCgoyMDAwLTAxLTI1ICBaYWNrIFdlaW5iZXJnICA8emFja0B3b2xlcnkuY3VtYi5vcmc+CgoJKiBmaXhpbmMvTWFrZWZpbGUuaW4gKG1hY2huYW1lLmgpOiBTdW5PUyA0IHNlZCBjYW4ndCBoYW5kbGUgYQoJZmlsZSB3aXRoIG9uZSBsaW5lIGFuZCBubyB0cmFpbGluZyBuZXdsaW5lLgoJUGF0Y2ggYnkgS2F2ZWggR2hhemkgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+LgoJKiBmaXhpbmMvZml4dGVzdHMuYyAobWFjaGluZV9uYW1lX3Rlc3QpOiBGaXggZmVuY2Vwb3N0IGVycm9yCgljaGVja2luZyBpZiB0aGUgbWF0Y2ggaXMgb24gdGhlIGxpbmUuCgkqIGZpeGluYy9nbnUtcmVnZXguYzogUHJvdmlkZSByZWdlcnJvciBub3QgX19yZWdlcnJvci4KCjIwMDAtMDEtMjUgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgoJKiBzcGFyYy5jIChvdXRwdXRfY2JyYW5jaCk6IEZpeCBhY2NpZGVudGFsIHNxdWFzaGluZyBvZiB0aGUKCWZwIGJyYW5jaCBwcmUtZGVsYXkgbm9wLgoKMjAwMC0wMS0yNSAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAY3lnbnVzLmNvbT4KCgkqIHRyZWUuZGVmIChVTk5FX0VYUFIpOiBSZW1vdmUuCgkqIGMtdHlwZWNrLmMgKGJ1aWxkX2JpbmFyeV9vcCk6IERvbid0IGhhbmRsZSBpdC4KCSogZXhwci5jIChleHBhbmRfZXhwciwgZG9fanVtcCwgZG9fc3RvcmVfZmxhZyk6IExpa2V3aXNlLgoKCSogcnRsLmRlZiAoVU5ORSk6IFJlbW92ZS4KCShMVEdUKTogQWRkLgoJKiBqdW1wLmMgKHJldmVyc2VfY29uZGl0aW9uKTogVXBkYXRlIGFjY29yZGluZ2x5LgoJKHN3YXBfY29uZGl0aW9uKTogTGlrZXdpc2UuCgkoY29tcGFyaXNvbl9kb21pbmF0ZXNfcCk6IEhhbmRsZSB1bm9yZGVyZWQgY29tcGFyaXNvbnMuCgkocmV2ZXJzZV9jb25kaXRpb25fbWF5YmVfdW5vcmRlcmVkKTogTmV3LgoJKiBydGwuaCAocmV2ZXJzZV9jb25kaXRpb25fbWF5YmVfdW5vcmRlcmVkKTogRGVjbGFyZS4KCgkqIHNwYXJjLmMgKHNlbGVjdF9jY19tb2RlKTogVXBkYXRlIGZvciBVTk5FL0xUR1QuCgkob3V0cHV0X2NicmFuY2gpOiBVc2UgcmV2ZXJzZV9jb25kaXRpb25fbWF5YmVfdW5vcmRlcmVkIGFuZCBMVEdULgoJKiBzcGFyYy5oIChSRVZFUlNJQkxFX0NDX01PREUpOiBBbHdheXMgdHJ1ZS4gIFVwZGF0ZSBkb2NzLgoJKiBzcGFyYy5tZCAoYmx0Z3QpOiBOZXcuCgoyMDAwLTAxLTI1ICBOaWNrIENsaWZ0b24gIDxuaWNrY0ByZWRoYXQuY29tPgoKCSogZW1pdC1ydGwuYyAoZW1pdF9pbnNuKTogT25seSBjaGVjayBtYWNoaW5lIGNsYXNzIGluc25zIGZvcgoJaW1wcm9wZXIgZW1pc3Npb24gb2YgYSBSRVRVUk4uCgoyMDAwLTAxLTI1ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEBjeWdudXMuY29tPgoKCSogTWFrZWZpbGUuaW4gKGZsb3cubyk6IERlcGVuZCBvbiAkKEVYUFJfSCkuCgkqIGZsb3cuYyAobWFya19yZWdzX2xpdmVfYXRfZW5kKTogVXNlIGhhcmRfZnVuY3Rpb25fdmFsdWUsIGkuZS4KCWR1cGxpY2F0ZSB0aGUgc3RydWN0dXJlIG9mIGRpZGRsZV9yZXR1cm5fdmFsdWUgZm9yIGtlZXBpbmcgcmVncyBsaXZlLgoKMjAwMC0wMS0yNiAgTWljaGFlbCBIYXllcyAgPG0uaGF5ZXNAZWxlYy5jYW50ZXJidXJ5LmFjLm56PgoKCSogbG9vcC5jIChjdXJyZW50X2xvb3BfaW5mbyk6IERlbGV0ZS4KCShjb25zZWNfc2V0c19pbnZhcmlhbnRfcCk6IEFkZCBsb29wIGFyZ3VtZW50LCB1cGRhdGUgY2FsbGVycy4KCShnZXRfY29uZGl0aW9uX2Zvcl9sb29wKTogTGlrZXdpc2UuCgkoY291bnRfbm9uZml4ZWRfcmVhZHMsIHVwZGF0ZV9naXZfZGVyaXZlKTogTGlrZXdpc2UuCgkoc2ltcGxpZnlfZ2l2X2V4cHIsIGdlbmVyYWxfaW5kdWN0aW9uX3Zhcik6IExpa2V3aXNlLgoJKGNvbnNlY19zZXRzX2dpdiwgcmVjb21iaW5lX2dpdnMpOiBMaWtld2lzZS4KCShtb3ZlX21vdmFibGVzKTogRGVsZXRlIGxvb3Bfc3RhcnQgYW5kIGxvb3BfZW5kIGFyZ3VtZW50cywKCWFkZCBsb29wIGFyZ3VtZW50LCBhbmQgdXBkYXRlIGNhbGxlcnMuCgkoZmluZF9tZW1fZ2l2cywgY2hlY2tfZmluYWxfdmFsdWUpOiBMaWtld2lzZS4KCShyZWNvcmRfZ2l2LCBtYXliZV9lbGltaW5hdGVfYml2LCBtYXliZV9lbGltaW5hdGVfYml2XzEpOiBMaWtld2lzZS4KCShsb29wX2ludmFyaWFudF9wKTogUmVuYW1lIGZyb20gaW52YXJpYW50X3AsIGFkZCBsb29wIGFyZ3VtZW50LCBhbmQKCXVwZGF0ZSBjYWxsZXJzLgoJKGJhc2ljX2luZHVjdGlvbl92YXIpOiBBZGQgbG9vcCBhcmd1bWVudCwgZGVsZXRlIGxvb3BfbGV2ZWwgYXJndW1lbnQsCglhbmQgdXBkYXRlIGNhbGxlcnMuCgkqIHVucm9sbC5jIChpdGVyYXRpb25faW5mbyk6IERlbGV0ZSBsb29wX3N0YXJ0IGFuZCBsb29wX2VuZCBhcmd1bWVudHMsCglhZGQgbG9vcCBhcmd1bWVudCwgYW5kIHVwZGF0ZSBjYWxsZXJzLgoJKGZpbmRfc3BsaXR0YWJsZV9yZWdzLCBmaW5kX3NwbGl0dGFibGVfZ2l2cyk6IExpa2V3aXNlLgoJKHJlZ19kZWFkX2FmdGVyX2xvb3AsIGxvb3BfZmluZF9lcXVpdl92YWx1ZSk6IExpa2V3aXNlLgoJKGZpbmFsX2Jpdl92YWx1ZSwgZmluYWxfZ2l2X3ZhbHVlLCBiYWNrX2JyYW5jaF9pbl9yYW5nZV9wKTogTGlrZXdpc2UuCgkoYml2X3RvdGFsX2luY3JlbWVudCk6IERlbGV0ZSBsb29wX3N0YXJ0IGFuZCBsb29wX2VuZCBhcmd1bWVudHM7Cgl1cGRhdGUgY2FsbGVycy4KCShwcmVjb25kaXRpb25fbG9vcF9wKTogRGVsZXRlIGxvb3Bfc3RhcnQgYW5kIGxvb3BfaW5mbyBhcmd1bWVudHM7Cgl1cGRhdGUgY2FsbGVycy4KCSogbG9vcC5oIChnZXRfY29uZGl0aW9uX2Zvcl9sb29wKTogQWRkIGxvb3AgYXJndW1lbnQuCgkoYml2X3RvdGFsX2luY3JlbWVudCk6IERlbGV0ZSBsb29wX3N0YXJ0IGFuZCBsb29wX2VuZCBhcmd1bWVudHMuCgkocHJlY29uZGl0aW9uX2xvb3BfcCk6IERlbGV0ZSBsb29wX3N0YXJ0IGFuZCBsb29wX2luZm8gYXJndW1lbnRzOwoJYWRkIGxvb3AgYXJndW1lbnQuCgkoZmluYWxfYml2X3ZhbHVlKTogRGVsZXRlIGxvb3Bfc3RhcnQgYW5kIGxvb3BfZW5kIGFyZ3VtZW50czsKCWFkZCBsb29wIGFyZ3VtZW50LgoJKGZpbmFsX2dpdl92YWx1ZSwgYmFja19icmFuY2hfaW5fcmFuZ2VfcCk6IExpa2V3aXNlLgoKMjAwMC0wMS0yNSAgR2F2aW4gUm9taWctS29jaCAgPGdhdmluQGN5Z251cy5jb20+CgoJKiBjb25maWcvbWlwcy9taXBzLmggKExFR0lUSU1BVEVfQ09OU1RBTlRfUCk6IEZpeCBmb3IgbWlwczE2LgoKMjAwMC0wMS0yNSAgR2F2aW4gUm9taWctS29jaCAgPGdhdmluQGN5Z251cy5jb20+CgoJKiBNYWtlZmlsZS5pbiAoYy1ncGVyZi5oKSA6IENoYW5nZSB0aGUgIlNlZSIgcG9pbnRlciB0bwoJcG9pbnQgdG8gdGhlIG5ldyAiZ2VuZXJhdGVkX2ZpbGVzIiBkb2MuCgoyMDAwLTAxLTI1ICBDbGludG9uIFBvcGV0eiAgPGNwb3BldHpAY3lnbnVzLmNvbT4KCgkqIGNvbmZpZy9mcC1iaXQuYyAoX3Vub3JkX2YyKTogRml4IHR5cG8uCgoyMDAwLTAxLTI1ICBaYWNrIFdlaW5iZXJnICA8emFja0B3b2xlcnkuY3VtYi5vcmc+CgoJKiBjLWNvbW1vbi5jLCBjLWRlY2wuYywgYy1sYW5nLmMsIGMtbGV4LmMsIGMtcGFyc2UuaW4sIGMtcHJhZ21hLmMsCgljLXR5cGVjay5jLCBvYmpjL29iamMtYWN0LmM6IFJlbW92ZSBhbGwgcmVmZXJlbmNlcyB0byBvYnN0YWNrCglmdW5jdGlvbnMgb2Jzb2xldGVkIGJ5IEdDLCBzdWNoIGFzIHB1c2hfb2JzdGFja3Nfbm9jaGFuZ2UsCgllbmRfdGVtcG9yYXJ5X2FsbG9jYXRpb24sIHNhdmVhbGxvYywgc2F2ZWFibGVfdHJlZV9jb25zLCBldGMuCglhbmQgY29kZSB3aGljaCBleGlzdGVkIG9ubHkgdG8gZGVjaWRlIHdoZXRoZXIgb3Igbm90IHRvIGNhbGwKCXRoZW0uICBSZW1vdmUgbm93LXVudXNlZCBORVNURUQgYXJndW1lbnQgZnJvbSBzdGFydF9mdW5jdGlvbjsKCWFsbCBjYWxsZXJzIGNoYW5nZWQuICBEbyBub3QgY2hhbmdlIGJlaGF2aW9yIGJhc2VkIG9uIGdnY19wLgoJVGhlIHVzZSBvZiB0aGUgaXhwX29ic3RhY2sgaW4gYy1pdGVyYXRlLmMgYW5kIHRoZSB1dGlsX29ic3RhY2sKCWluIG9iamMvb2JqYy1hY3QuYyByZW1haW47IHRoZXNlIGFyZSBub3Qgb2Jzb2xldGVkIGJ5IGdhcmJhZ2UKCWNvbGxlY3Rpb24uCgkqIGMtdHJlZS5oOiBVcGRhdGUgcHJvdG90eXBlIGZvciBzdGFydF9mdW5jdGlvbi4KCgkqIGMtcGFyc2UueSwgYy1wYXJzZS5jLCBvYmpjL29iamMtcGFyc2UuYywgb2JqYy9vYmpjLXBhcnNlLnk6IFJlYnVpbGQuCgoyMDAwLTAxLTI1ICBDbGludG9uIFBvcGV0eiAgPGNwb3BldHpAY3lnbnVzLmNvbT4KCgkqIGNvbmZpZy9taXBzL21pcHMubWQgKHplcm9fZXh0ZW5kc2lkaTJfaW50ZXJuYWwpOiBEaXNhYmxlIGZvcgoJbWlwczE2LgoKMjAwMC0wMS0yNSAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAY3lnbnVzLmNvbT4KCgkqIHNwYXJjLXByb3Rvcy5oIChzZWxlY3RfY2NfbW9kZSk6IERlY2xhcmUuCgkqIHNwYXJjLmMgKHNlbGVjdF9jY19tb2RlKTogTmV3LiAgSGFuZGxlIHVub3JkZXJlZCBjb21wYXJlcy4KCShvdXRwdXRfY2JyYW5jaCk6IEFsd2F5cyByZXZlcnNlIHZpYSBjb2RlIGNoYW5nZS4gIEhhbmRsZQoJdW5vcmRlcmVkIGNvbXBhcmVzLiAgRmFjdG9yIHRlc3RzIGFuZCBzdHJpbmcgdXBkYXRlcy4KCSogc3BhcmMuaCAoU0VMRUNUX0NDX01PREUpOiBTcGxpdCBvdXQgdG8gc2VsZWN0X2NjX21vZGUuCgkoUkVWRVJTSUJMRV9DQ19NT0RFKTogQWxzbyBleGNsdWRlIENDRlBtb2RlLgoJKiBzcGFyYy5tZCAoYnVub3JkZXJlZCwgYm9yZGVyZWQpOiBOZXcuCgkoYnVuZ3QsIGJ1bmx0LCBidW5lcSwgYnVuZ2UsIGJ1bmxlKTogTmV3LgoKMjAwMC0wMS0yNSAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAY3lnbnVzLmNvbT4KCgkqIGR3YXJmMm91dC5jIChkd2FyZjJvdXRfaW5pdCk6IFVzZSBnZ2NfYWRkX3J0eF92YXJyYXlfcm9vdC4KCSogZ2djLWNvbW1vbi5jIChnZ2NfYWRkX3J0eF92YXJyYXlfcm9vdCk6IE5ldy4KCShnZ2NfbWFya19ydHhfdmFycmF5KTogTmV3LgoJKGdnY19tYXJrX3J0eF92YXJyYXlfcHRyKTogTmV3LiAgU2hpZnQgYWxsIGdnY19tYXJrX2Zvb19wdHIKCWZ1bmN0aW9ucyBkb3duIGJlbG93IGdnY19tYXJrX2Zvby4KCSogZ2djLmggKGdnY19hZGRfcnR4X3ZhcnJheV9yb290LCBnZ2NfbWFya19ydHhfdmFycmF5KTogRGVjbGFyZS4KCjIwMDAtMDEtMjUgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgoJKiBhbHBoYS5jIChzZWNvbmRhcnlfcmVsb2FkX2NsYXNzKTogRG9uJ3QgYWxsb2NhdGUgYSBzZWNvbmRhcnkKCWZvciBpbnRlZ3JhbCBtb2RlIG1lbW9yaWVzIGludG8gRkxPQVRfUkVHUy4gIFJlYXJyYW5nZSB0aGUgbW9yZQoJY29tcGxpY2F0ZWQgbWVtb3J5IGV4cHJlc3Npb24gaW53YXJkLgoKMjAwMC0wMS0yNSAgWmFjayBXZWluYmVyZyAgPHphY2tAd29sZXJ5LmN1bWIub3JnPgoKCSogaW5jbGhhY2suZGVmOiBGaXhlcyB0byBwbGF5IG5pY2VyIHdpdGggRnJlZUJTRCwgYW5kCgljb3JyZWN0aW9ucyB0byBjb21tZW50cy4KCShjeHhfdW5yZWFkeSk6IEFkZCBzZWxlY3QgZXhwcmVzc2lvbi4KCShpcml4X3NvY2thZGRyKTogQWRkIGJ5cGFzcyBleHByZXNzaW9uLgoJKG1hY2hpbmVfYW5zaV9oX3ZhX2xpc3QpOiBOZXcgZml4LgoJKHN0ZGlvX3ZhX2xpc3QpOiBObyBuZWVkIHRvIGVkaXQgX0JTRF9WQV9MSVNUXy4KCVNwbGl0IG91dCBhZGRpdGlvbiBvZiAiI2luY2x1ZGUgPHN0ZGFyZy5oPiIgdG8uLi4KCShzdGRpb19zdGRhcmdfaCk6IC4uLiBoZXJlLgoJKHN5c3R5cGVzX2Zvcl9haXgpOiBSZW5hbWUgdG8gc3lzdHlwZXNfc3RkbGliX3NpemVfdC4gIEFwcGx5Cgl0byBzdGRsaWIuaCBhbHNvLiAgRG8gbm90IG11bmdlIF9CU0RfU0laRV9UXy4KCShzeXN6X3N0ZGxpYl9mb3Jfc3VuKTogRGVsZXRlIGR1cGxpY2F0ZSBmaXggZm9yIHVucHJvdGVjdGVkCglzaXplX3QuCgkodWx0cml4X2lmZGVmKTogVGlnaHRlbiB1cCBzZWxlY3QgZXhwcmVzc2lvbi4KCgkqIGZpeGluY2wudHBsOiBFeG9yY2lzZSAnZXhlc2VsJy4gIFJld3JpdGUgY2FsY3VsYXRpb25zIG9mCglyZV9jdCBhbmQgbWF4X21hY2ggdG8gYXZvaWQgdXNlIG9mIHNoZWxsLiAgTWFrZSBwcmludGVkIG5hbWVzCgltYXRjaCBuYW1lcyBpbiBpbmNsaGFjay5kZWYuICBVc2Ugc3RhdGljIGNvcHlyaWdodCBkYXRlLgoJRG9uJ3QgY291bnQgY190ZXN0IGFuZCB0ZXN0IGV4cHJlc3Npb25zIGFzIHJlcXVpcmluZyByZWdleF90CglzbG90cy4gIEFkZCBzb21lIGNvbW1lbnRhcnkuCgkqIGluY2xoYWNrLnRwbDogRG8gbm90IGluY2x1ZGUgdGhlICdUaGlzIHNjcmlwdCBjb250YWlucyBOCglmaXh1cCBzY3JpcHRzJyBsaW5lIGlmIFBST0dSQU0gaXMgZGVmaW5lZC4gIFVzZSBzdGF0aWMKCWNvcHlyaWdodCBkYXRlLgoKMjAwMC0wMS0yNCAgSmFzb24gTWVycmlsbCAgPGphc29uQGNhc2V5LmN5Z251cy5jb20+CgoJKiBkd2FyZjJvdXQuYzogaW5jbHVkZSAidmFycmF5LmgiLCBub3QgZHluLXN0cmluZy5oLgoJKEFTTV9PVVRQVVRfRFdBUkYyX0FERFJfQ09OU1QsIEFTTV9OQU1FX1RPX1NUUklORyk6IExvc2UuCgkoYWRkcl9jb25zdF90b19zdHJpbmcsIGFkZHJfdG9fc3RyaW5nKTogTG9zZS4KCShBU01fT1VUUFVUX0RXQVJGX0FERFJfQ09OU1QpOiBDb3B5IGZyb20gZHdhcmZvdXQuYy4KCShzdHJ1Y3QgZHdfdmFsX3N0cnVjdCk6IHZhbF9hZGRyIGlzIG5vdyBhbiBydHguCgkoYWRkX0FUX2FkZHIsIEFUX2FkZHIsIGZyZWVfQVQsIG91dHB1dF9hcmFuZ2VzKTogQWRqdXN0LgoJKHVzZWRfcnR4X3ZhcnJheSk6IE5ldyB2YXJyYXkuCgkoZHdhcmYyb3V0X2luaXQpOiBJbml0aWFsaXplIGl0LgoJKHNhdmVfcnR4KTogTmV3IGZuLgoJKG1lbV9sb2NfZGVzY3JpcHRvciwgYWRkX2NvbnN0X3ZhbHVlX2F0dHJpYnV0ZSk6IENhbGwgaXQgaW5zdGVhZCBvZgoJYWRkcl90b19zdHJpbmcuCgkqIGFybS90ZWxmLmgsIGFybS91bmtub3duLWVsZi5oLCBtbjEwMjAwLmgsIG1uMTAzMDAuaCwKCXNwYXJjL3NwNjQtZWxmLmg6IFJlbW92ZSBkZWZpbml0aW9uIG9mIEFTTV9PVVRQVVRfRFdBUkYyX0FERFJfQ09OU1QuCgkqIE1ha2VmaWxlLmluIChkd2FyZjJvdXQubyk6IFVwZGF0ZSBkZXBlbmRlbmNpZXMuCgoyMDAwLTAxLTI0ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEBjeWdudXMuY29tPgoKCSogaTM4Ni5jIChpMzg2X2R3YXJmX291dHB1dF9hZGRyX2NvbnN0KTogTmV3LgoJKiBpMzg2LmggKEFTTV9PVVRQVVRfRFdBUkZfQUREUl9DT05TVCk6IE5ldy4KCgkqIGR3YXJmMm91dC5jIChtZW1fbG9jX2Rlc2NyaXB0b3IpOiBDYWxsIEFTTV9TSU1QTElGWV9EV0FSRl9BRERSCglpZiBkZWZpbmVkLgoJKiBkd2FyZm91dC5jIChvdXRwdXRfbWVtX2xvY19kZXNjcmlwdG9yKTogTGlrZXdpc2UuCgkqIGkzODYuYyAoaTM4Nl9zaW1wbGlmeV9kd2FyZl9hZGRyKTogTmV3LgoJKiBpMzg2LmggKEFTTV9TSU1QTElGWV9EV0FSRl9BRERSKTogTmV3LgoKTW9uIEphbiAyNCAxNjo1NjoxMCAyMDAwICBKaW0gV2lsc29uICA8d2lsc29uQGN5Z251cy5jb20+CgoJKiBkd2FyZjJvdXQuYyAoZ2VuX3N0cnVjdF9vcl91bmlvbl90eXBlX2RpZSk6IFNldCBjb21wbGV0ZSBpZgoJVFlQRV9TVFVCX0RFQ0wgaXMgTlVMTC4KCjIwMDAtMDEtMjQgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgoJKiBidWlsdGlucy5jIChleHBhbmRfdHJlZV9idWlsdGluKTogTW92ZSAuLi4KCSogYy1jb21tb24uYyAoZXhwYW5kX3RyZWVfYnVpbHRpbik6IC4uLiBoZXJlLgoKMjAwMC0wMS0yNSAgTWljaGFlbCBIYXllcyAgPG0uaGF5ZXNAZWxlYy5jYW50ZXJidXJ5LmFjLm56PgoKCSogbG9vcC5oIChMT09QX0lORk8pOiBOZXcgYWNjZXNzb3IgbWFjcm8uCgkqIGJhc2ljLWJsb2NrLmggKHN0cnVjdCBsb29wKTogUmVuYW1lIGZpZWxkIGBpbmZvJyB0byBgYXV4Jy4KCSogbG9vcC5jIChzY2FuX2xvb3ApOiBSZXBsYWNlIGxvb3AtPmluZm8gd2l0aCBMT09QX0lORk8gKGxvb3ApLgoJKHByZXNjYW5fbG9vcCwgc3RyZW5ndGhfcmVkdWNlLCBjaGVja19kYnJhX2xvb3AsIGluc2VydF9iY3QpOiBMaWtld2lzZS4KCSogdW5yb2xsLmMgKGxvb3BfaXRlcmF0aW9ucywgdW5yb2xsX2xvb3ApOiBMaWtld2lzZS4KCjIwMDAtMDEtMjQgIENocmlzdG9waGVyIEZheWxvciA8Y2dmQGN5Z251cy5jb20+CgoJKiBjb25maWcvaTM4Ni90LWN5Z3dpbjogQWNjb21tb2RhdGUgbmV3IHdpbnN1cCBkaXJlY3RvcnkgbGF5b3V0Cgl3aGVuIHNlYXJjaGluZyBmb3IgaW5jbHVkZSBmaWxlcy4KCjIwMDAtMDEtMjQgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgoJKiBydGwuZGVmOiBBZGQgdW5vcmRlcmVkIGZwIGNvbXBhcmlzb25zLgoJKiB0cmVlLmRlZjogTGlrZXdpc2UuCgkqIHRyZWUuaDogQWRkIElTTyBDIDl4IHVub3JkZXJlZCBmcCBjb21wYXJpc29uIGJ1aWx0aW5zLgoKCSogYnVpbHRpbnMuYyAoZXhwYW5kX3RyZWVfYnVpbHRpbik6IE5ldyBmdW5jdGlvbi4KCSogYy10eXBlY2suYyAoYnVpbGRfZnVuY3Rpb25fY2FsbCk6IFVzZSBpdC4KCShidWlsZF9iaW5hcnlfb3ApOiBTdXBwb3J0IHVub3JkZXJlZCBjb21wYXJlcy4KCSogYy1jb21tb24uYyAoY19jb21tb25fbm9kZXNfYW5kX2J1aWx0aW5zKTogQWRkIHVub3JkZXJlZCBjb21wYXJlcy4KCgkqIGNvbWJpbmUuYyAoa25vd25fY29uZCk6IEhhbmRsZSByZXZlcnNlX2NvbmRpdGlvbiByZXR1cm5pbmcgVU5LTk9XTi4KCShyZXZlcnNpYmxlX2NvbXBhcmlzb25fcCk6IEFsbG93IFVOT1JERVJFRC9PUkRFUkVEIHRvIGJlIHJldmVyc2VkLgoJKiBjc2UuYyAoZm9sZF9ydHgpOiBDaGVjayBGTE9BVF9NT0RFX1AgYmVmb3JlIHJldmVyc2luZy4KCShyZWNvcmRfanVtcF9lcXVpdik6IEhhbmRsZSByZXZlcnNlX2NvbmRpdGlvbiByZXR1cm5pbmcgVU5LTk9XTi4KCSoganVtcC5jIChyZXZlcnNlX2NvbmRpdGlvbik6IERvbid0IGFib3J0IGZvciBVTkxFIGV0YywgYnV0CglyZXR1cm4gVU5LTk9XTi4KCShzd2FwX2NvbmRpdGlvbik6IEhhbmRsZSB1bm9yZGVyZWQgY29tcGFyZXMuCgkodGhyZWFkX2p1bXBzKTogQ2hlY2sgY2FuX3JldmVyc2UgYmVmb3JlIHJldmVyc2luZy4KCSogbG9vcC5jIChnZXRfY29uZGl0aW9uKTogTGlrZXdpc2UuICBBbGxvdyBVTk9SRVJFRC9PUkRFUkVEIHRvIGJlCglyZXZlcnNlZCBmb3IgRlAuCgoJKiBvcHRhYnMuYyAoY2FuX2NvbXBhcmVfcCk6IE5ldyBhcmd1bWVudCBDT0RFLiAgVmVyaWZ5IGJyYW5jaCBvcgoJc2V0Y2MgaXMgcHJlc2VudCBiZWZvcmUgYWNraW5nIGZvciBjbXBfb3B0YWIuICBVcGRhdGUgYWxsIGNhbGxlcnMuCgkocHJlcGFyZV9mbG9hdF9saWJfY21wLCBpbml0X29wdGFicyk6IEhhbmRsZSBVTk9SREVSRUQuCgkqIGV4cG1lZC5jIChkb19jbXBfYW5kX2p1bXApOiBVcGRhdGUgZm9yIGNhbl9jb21wYXJlX3AuCgkqIGV4cHIuYyAoZXhwYW5kX2V4cHIpOiBMaWtld2lzZS4gIFN1cHBvcnQgdW5vcmRlcmVkIGNvbXBhcmVzLgoJKGRvX2p1bXAsIGRvX3N0b3JlX2ZsYWcpOiBMaWtld2lzZS4KCSogZXhwci5oIChlbnVtIGxpYmZ1bmNfaW5kZXgpOiBBZGQgdW5vcmRlcmVkIGNvbXBhcmVzLgoKCSogTWFrZWZpbGUuaW4gKEZQQklUX0ZVTkNTKTogQWRkIF91bm9yZF9zZi4KCShEUEJJVF9GVU5DUyk6IEFkZCBfdW5vcmRfZGYuCgkqIGNvbmZpZy9mcC1iaXQuYyAoX3Vub3JkX2YyKTogTmV3LgoJKiBmcC10ZXN0LmMgKG1haW4pOiBUcnkgdW5vcmRlcmVkIGNvbXBhcmUgYnVpbHRpbnMuCgoJKiBhbHBoYS1wcm90b3MuaCAoYWxwaGFfZnBfY29tcGFyaXNvbl9vcGVyYXRvcik6IERlY2xhcmUuCgkqIGFscGhhLmMgKGFscGhhX2NvbXBhcmlzb25fb3BlcmF0b3IpOiBDaGVjayBtb2RlIHByb3Blcmx5LgoJKGFscGhhX3N3YXBwZWRfY29tcGFyaXNvbl9vcGVyYXRvcik6IExpa2V3aXNlLgoJKHNpZ25lZF9jb21wYXJpc29uX29wZXJhdG9yKTogTGlrZXdpc2UuCgkoYWxwaGFfZnBfY29tcGFyaXNvbl9vcGVyYXRvcik6IE5ldy4KCShhbHBoYV9lbWl0X2NvbmRpdGlvbmFsX2JyYW5jaCk6IEhhbmRsZSB1bm9yZGVyZWQgY29tcGFyZXMuCgkqIGFscGhhLmggKFBSRURJQ0FURV9DT0RFUyk6IFVwZGF0ZS4KCSogYWxwaGEubWQgKGZwIGNvbXBhcmVzKTogVXNlIGFscGhhX2ZwX2NvbXBhcmlzb25fb3BlcmF0b3IuCgkoYnVub3JkZXJlZCwgYm9yZGVyZWQpOiBOZXcuCgoyMDAwLTAxLTI0ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEBjeWdudXMuY29tPgoKCSogYWxwaGEuYyAoYWxwaGFfZW1pdF94ZmxvYXRpbmdfY3Z0KTogVGhpbmtvIGluIG9wZXJhbmQgbWFuaXB1bGF0aW9uLgoJKiBhbHBoYS5tZCAobW92dGYpOiBOZXcgZXhwYW5kZXIsIGluc24sIGFuZCBzcGxpdHRlci4KCk1vbiBKYW4gMjQgMTk6NDk6NDcgTUVUIDIwMDAgIEphbiBIdWJpY2thICA8amhAc3VzZS5jej4KCgkqIHJlZy1zdGFjay5jIChzdWJzdF9zdGFja19yZWdzX3BhdCk6IEhhbmRsZSBjb3JyZWN0bHkgVVNFcyBvZgoJZGVhZCByZWdpc3RlcnMuCgpNb24gSmFuIDI0IDE3OjM3OjMxIE1FVCAyMDAwICBKYW4gSHViaWNrYSAgPGpoQHN1c2UuY3o+CgoJKiBpMzg2LmggKEZJUlNUX1BTRVVET19SRUdJU1RFUik6IFNldCB0byAyMS4KCShGSVhFRF9SRUdJU1RFUlMsIENBTExfVVNFRF9SRUdJU1RFUlMsCgkgUkVHX0FMTE9DX09SREVSKTogQWRkIGZyYW1lIHBvaW50ZXIKCShGUkFNRV9QT0lOVEVSX1JFR05VTSk6IFNldCB0byAyMAoJKEhBUkRfRlJBTUVfUE9JTlRFUl9SRUdOVU0pOiBOZXcgbWFjcm8uCgkoRUxJTUlOQUJMRV9SRUdTKTogRWxpbWluYXRlIEFSR19QT0lOVEVSIGFuZCBGUkFNRV9QT0lOVEVSCgl0byBIQVJEX0ZSQU1FX1BPSU5URVIuCgkoUkVHTk9fT0tfRk9SX0JBU0VfUCk6IEFjY2VwdCBGUkFNRV9QT0lOVEVSX1JFR05VTQoJKFJFR19PS19GT1JfSU5ERVhfTk9OU1RSSUNUX1ApOiBMaWtld2lzZS4KCShSRUdfT0tfRk9SX0JBU0VfTk9OU1RSSUNUX1ApOiBMaWtld2lzZS4KCShISV9SRUdJU1RFUl9OQU1FUyk6IEFkZCAiZnJhbWUiLgoJKENBTl9FTElNSU5BVEUpOiBIYW5kbGUgRlJBTUVfUE9JTlRFUl9SRUdOVU0gZWxpbWluYXRpb24uCgkoZGVidWdfcmVnKTogSGFuZGxlIEZSQU1FX1BPSU5URVJfUkVHTlVNLgoJKHJlZ19jbGFzcyk6IEFkZCBhcmcgcG9pbnRlciBhbmQgZnJhbWUgcG9pbnRlciB0byBOT05fUV9SRUdTLAoJR0VORVJBTF9SRUdTIGFuZCBJTkRFWF9SRUdTLgoJKiBpMzg2LmMgKFNBVkVEX1JFR1NfRklSU1QpOiBuZXcgbWFjcm8uCgkoQVRfQlApOiBVc2UgaGFyZF9mcmFtZV9wb2ludGVyX3J0eCBpbnN0ZWFkIG9mIGZyYW1lX3BvaW50ZXJfcnR4CgkoaXg4Nl9kZWNvbXBvc2VfYWRkcmVzcywgbWVtb3J5X2FkZHJlc3NfbGVuZ3RoKTogTGlrZXdpc2UuCgkocmVnY2xhc3NfbWFwKTogQWRkIGZyYW1lIHBvaW50ZXIuCgkoY2FsbF9pbnNuX29wZXJhbmQpOiBIYW5kbGUgZnJhbWVfcG9pbnRlcl9ydHguCgkocmVnX25vX3NwX29wZXJhbmQpOiBMaWtld2lzZS4KCShpeDg2X2RlY29tcG9zZV9hZGRyZXNzKTogSGFuZGxlIGZyYW1lX3BvaW50ZXJfcnR4IGFzIHN0YWNrX3BvaW50ZXJfcnR4LgoJKHByaW50X29wZXJhbmQsIGxlZ2l0aW1pemVfcGljX2FkZHJlc3MpOiBGaXggZm9ybWF0aW5nLgoJKGl4ODZfY29tcHV0ZV9mcmFtZV9zaXplKTogTWFrZSBzdGF0aWMsIHVwZGF0ZSBwcm90b3R5cGUsIG5ldwoJcGFyYW1ldGVycyBwYWRkaW5nMSwgcGFkZGluZzIsIHVzZSBpeDg2X25zYXZlZF9yZWdzLCB1c2UKCXN0YWNrX2FsaWdubWVudF9uZWVkZWQuCgkoaXg4Nl9pbml0aWFsX2VsaW1pbmF0aW9uX29mZnNldCk6IEhhbmRsZSBGUkFNRV9QT0lOVEVSX1JFR05VTQoJdG8gSEFSRF9GUkFNRV9QT0lOVEVSX1JFR05VTSBjb252ZXJzaW9ucy4KCShpeDg2X2V4cGFuZF9wcm9sb2d1ZSk6IEhhbmRsZSBTQVZFRF9SRUdTX0ZJUlNUIHByb2xvZ3Vlcy4KCShpeDg2X2V4cGFuZF9lcGlsb2d1ZSk6IEhhbmRsZSBTQVZFRF9SRUdTX0ZJUlNUIGVwaWxvZ3Vlcy4KCShwcmludF9yZWcpOiBBYm9ydCBvbiBGUkFNRV9QT0lOVEVSX1JFR05VTQoKTW9uIEphbiAyNCAxNjo1MDowOCBNRVQgMjAwMCAgSmFuIEh1Ymlja2EgIDxqaEBzdXNlLmN6PgoKCSogaTM4Ni5oIChQUkVESUNBVEVfQ09ERVMpOiBBZGQgYWxpZ25lZF9vcGVyYW5kLgoJKiBpMzg2LmMgKGFsaWduZWRfb3BlcmFuZCk6IE5ldyBmdW5jdGlvbi4KCShpeDg2X2FsaWduZWRfcCk6IEtpbGwuCgkqIGkzODYubWQgKG1vdmhpXzEpOiBFbWl0IG1vdiBmb3IgYWxpZ25lZCBvcGVyYW5kcy4KCShwcm9tb3RpbmcgcGVlcDJzKTogVXNlIGFsaWduZWRfb3BlcmFuZC4KCjIwMDAtMDEtMjMgIFphY2sgV2VpbmJlcmcgIDx6YWNrQHdvbGVyeS5jdW1iLm9yZz4KCgkqIGZpeGluYy9maXhmaXhlcy5jIChmaXhfY2hhcl9tYWNyb191c2VzKTogQ29ycmVjdCByZWd1bGFyCglleHByZXNzaW9uIHRvIGFsbG93IHVuZGVyc2NvcmVzIGluIG1hY3JvIG5hbWVzLgoJKGZpeF9jaGFyX21hY3JvX2RlZmluZXMpOiBJbmNyZW1lbnQgc2Nhbm5pbmcgcG9pbnRlci4KCjIwMDAtMDEtMjMgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgoJKiBhbHBoYS9vc2YuaCAoVEFSR0VUX0hBU19YRkxPQVRJTkdfTElCUyk6IERlZmluZS4KCSogYWxwaGEvb3NmNS5oOiBOZXcgZmlsZS4KCSogY29uZmlndXJlLmluIChhbHBoYS0qLW9zZjUpOiBBZGQgaXQgdG8gdG1fZmlsZS4KCgkqIGVtaXQtcnRsLmMgKG9wZXJhbmRfc3Vid29yZCk6IFN1cHBvcnQgVEZtb2RlIG9uIGEgNjQtYml0IHRhcmdldC4KCgkqIGFscGhhLXByb3Rvcy5oIChhbHBoYV9lbWl0X3hmbG9hdGluZ19hcml0aCk6IERlY2xhcmUuCgkoYWxwaGFfZW1pdF94ZmxvYXRpbmdfY3Z0LCBmdW5jdGlvbl9hcmcpOiBEZWNsYXJlLgoJKiBhbHBoYS5jIChhbHBoYV9lbWl0X2NvbmRpdGlvbmFsX2JyYW5jaCk6IENhbGwKCWFscGhhX2VtaXRfeGZsb2F0aW5nX2NvbXBhcmUgZm9yIFRGbW9kZSBjb21wYXJlcy4KCShhbHBoYV9sb29rdXBfeGZsb2F0aW5nX2xpYl9mdW5jKTogTmV3LgoJKGFscGhhX2NvbXB1dGVfeGZsb2F0aW5nX21vZGVfYXJnKTogTmV3LgoJKGFscGhhX2VtaXRfeGZsb2F0aW5nX2xpYmNhbGwpOiBOZXcuCgkoYWxwaGFfZW1pdF94ZmxvYXRpbmdfYXJpdGgpOiBOZXcuCgkoYWxwaGFfZW1pdF94ZmxvYXRpbmdfY29tcGFyZSk6IE5ldy4KCShhbHBoYV9lbWl0X3hmbG9hdGluZ19jdnQpOiBOZXcuCgkocHJpbnRfb3BlcmFuZCk6IEFkZCBkZWZhdWx0IGFib3J0IGNhc2UuCgkoZnVuY3Rpb25fYXJnKTogTWluZCBGVU5DVElPTl9BUkdfUEFTU19CWV9SRUZFUkVOQ0UuCgkqIGFscGhhLmggKFRBUkdFVF9IQVNfWEZMT0FUSU5HX0xJQlMpOiBOZXcuCgkoQklHR0VTVF9BTElHTk1FTlQpOiBJbmNyZWFzZSB0byAxMjggYml0cy4KCShSRVRVUk5fSU5fTUVNT1JZKTogVHJ1ZSBmb3IgVEYvVENtb2RlLgoJKEFMUEhBX0FSR19TSVpFKTogVEYvVENtb2RlIGlzIHBhc3NlZCBpbmRpcmVjdC4KCShGVU5DVElPTl9BUkcpOiBNb3ZlIHRvIGZ1bmN0aW9uX2FyZy4KCShGVU5DVElPTl9BUkdfUEFTU19CWV9SRUZFUkVOQ0UpOiBOZXcuCgkoQVNNX09VVFBVVF9MT05HX0RPVUJMRSk6IE5ldy4KCShBU01fT1VUUFVUX0RPVUJMRSk6IEFsd2F5cyBvdXRwdXQgYml0cy4KCSogYWxwaGEubWQgKGFkZHRmMywgZGl2dGYzLCBtdWx0ZjMsIHN1YnRmMywgY21wdGYpOiBOZXcuCgkoZml4X3RydW5jdGZkaTIsIGZsb2F0ZGl0ZjIsIGZsb2F0dW5zZGl0ZjIpOiBOZXcuCgkoZXh0ZW5kZGZ0ZjIsIHRydW5jdGZkZjIpOiBOZXcuCgoyMDAwLTAxLTIzICBBbGV4YW5kcmUgT2xpdmEgIDxvbGl2YUBsc2QuaWMudW5pY2FtcC5icj4KCgkqIGNvbmZpZy9zcGFyYy9zb2wyLXNsZC02NC5oIChUUkFOU0ZFUl9GUk9NX1RSQU1QT0xJTkUpOiBNb3ZlZC4uLgoJKiBjb25maWcvc3BhcmMvc29sMi5oOiAuLi4gaGVyZS4KCjIwMDAtMDEtMjQgIE1pY2hhZWwgSGF5ZXMgIDxtLmhheWVzQGVsZWMuY2FudGVyYnVyeS5hYy5uej4KCgkqIGJhc2ljLWJsb2NrLmggKHN0cnVjdCBsb29wcyk6IE5ldyBmaWVsZCBgbGV2ZWxzJy4KCSogZmxvdy5jIChmbG93X2xvb3BzX2xldmVsX2NvbXB1dGUpOiBUcmF2ZXJzZSBhbGwgb3V0ZXIgbG9vcHMuCgkoZmxvd19sb29wX2xldmVsX2NvbXB1dGUpOiBJbml0aWFsaXplIGxldmVsIHRvIDEuCgkoZmxvd19sb29wc19maW5kKTogU2V0IGxvb3BzLT5sZXZlbHMuCgkoZmxvd19sb29wc19kdW1wKTogUHJpbnQgbG9vcHMtPmxldmVscy4KCjIwMDAtMDEtMjMgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgoJKiBsaWJnY2MyLmMgKGR3YXJmX3JlZ19zaXplX3RhYmxlKTogU2l6ZSB3aXRoIERXQVJGX0ZSQU1FX1JFR0lTVEVSUy4KCSh0aHJvd19oZWxwZXIpOiBJdGVyYXRlIG92ZXIgRFdBUkZfRlJBTUVfUkVHSVNURVJTLgoKMjAwMC0wMS0yMyAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAY3lnbnVzLmNvbT4KCgkqIGkzODYuYyAoZGJ4X3JlZ2lzdGVyX21hcCwgc3ZyNF9kYnhfcmVnaXN0ZXJfbWFwKTogTmV3LgoJKiBpMzg2LmggKERCWF9SRUdJU1RFUl9OVU1CRVIpOiBVc2UgdGhlbS4KCSogaTM4Ni9iZW9zLWVsZi5oLCBpMzg2L2ZyZWVic2QtZWxmLmgsIGkzODYvaTM4NmVsZi5oOiBMaWtld2lzZS4KCSogaTM4Ni9saW51eC5oLCBpMzg2L29zZnJvc2UuaCwgaTM4Ni9wdHg0LWkuaDogTGlrZXdpc2UuCgkqIGkzODYvcnRlbXNlbGYuaCwgaTM4Ni9zY281LmgsIGkzODYvc3lzdjQuaDogTGlrZXdpc2UuCgkqIGkzODYvc2VxdWVudC5oOiBLaWxsIGluY29ycmVjdCBjb21tZW50LgoKMjAwMC0wMS0yMyAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGdnYy1wYWdlLmMgKHN0cnVjdCBwYWdlX2VudHJ5KTogTWFrZSBgY29udGV4dF9kZXB0aCcgYW4KCWB1bnNpZ25lZCBzaG9ydCcuCgkoc3RydWN0IGdsb2JhbHMpOiBMaWtld2lzZS4KCjIwMDAtMDEtMjMgIENsaW50b24gUG9wZXR6ICA8Y3BvcGV0ekBjeWdudXMuY29tPgoKCSogbG9vcC5jIChjaGVja19kYnJhX2xvb3ApOiBXaGVuIGNoZWNraW5nIGEgbG9vcCBmb3IKCXJldmVyc2FiaWxpdHksIGNoZWNrIHRoZSBzb3VyY2Ugb2YgYW55IHN0b3JlcyB0byBlbnN1cmUKCXRoZXkgZG9uJ3QgZGVwZW5kIG9uIGFuIGluaXRpYWwgdmFsdWUuCgoyMDAwLTAxLTIzICBNaWNoYWVsIEhheWVzICA8bS5oYXllc0BlbGVjLmNhbnRlcmJ1cnkuYWMubno+CgoJKiBjb25maWcvYzR4L2M0eC5oIChBU01fT1VUUFVUX0JTUyk6IFJlZGVmaW5lLgoKMjAwMC0wMS0yMiAgWmFjayBXZWluYmVyZyAgPHphY2tAd29sZXJ5LmN1bWIub3JnPgoKCSogZml4aW5jL2ZpeGluY2wuYzogTW92ZSBkZWNsYXJhdGlvbnMgb2YgJ3B6X2ZuYW1lJyBhbmQKCSdwel9zY2FuJyBpbnRvIHNjb3BlIG9mIGVudGlyZSBmdW5jdGlvbi4gIE9ubHkgYWZmZWN0cwoJY29tcGlsZXMgd2l0aCAtRERFQlVHLgoKMjAwMC0wMS0yMiAgQWxhbiBNb2RyYSA8YWxhbkBTUFJJLkxldmVscy5VbmlTQS5FZHUuQXU+CgoJKiBjb25maWcvZWxmb3MuaCAoVU5JUVVFX1NFQ1RJT04pOiBSZXN0b3JlIHVuaW5pdGlhbGl6ZWQgZGF0YQoJc2VjdGlvbiBuYW1pbmcgdG8gdGhhdCBwcmlvciB0byAyMDAwLTAxLTA3IHBhdGNoLgoJKiBjb25maWcvbWlwcy9lbGYuaCAoVU5JUVVFX1NFQ1RJT04pOiBEaXR0by4KCSogY29uZmlnL21pcHMvZWxmNjQuaCAoVU5JUVVFX1NFQ1RJT04pOiBEaXR0by4KCSogY29uZmlnL21pcHMvaXJpczZnbGQuaCAoVU5JUVVFX1NFQ1RJT04pOiBEaXR0by4KCSogY29uZmlnL2kzODYvaW50ZXJpeC5jIChVTklRVUVfU0VDVElPTik6IERpdHRvLgoJKiBjb25maWcvaTM4Ni93aW5udC5jIChVTklRVUVfU0VDVElPTik6IERpdHRvLgoKMjAwMC0wMS0yMiAgQmVybmQgU2NobWlkdCAgPGJlcm5kc0BjeWdudXMuY28udWs+CgoJKiBjb25maWcvYXJtL2FybS5jIChzb2Z0X2RmX29wZXJhbmQpOiBSZWplY3QgU1VCUkVHcyBjb250YWluaW5nIGEKCWNvbnN0YW50LgoKMjAwMC0wMS0yMSAgSmltIFdpbHNvbiAgPHdpbHNvbkBjeWdudXMuY29tPgoKCSogZml4aW5jL2luY2xoYWNrLnRwbDogVGVzdCBmb3IgZGlyZWN0b3J5IGJlZm9yZSB0cnlpbmcgdG8gY2QgaW50byBpdC4KCSogZml4aW5jL2ZpeGluY2wuc2gsIGZpeGluYy9pbmNsaGFjay5zaDogUmVnZW5lcmF0ZS4KCjIwMDAtMDEtMjEgIFphY2sgV2VpbmJlcmcgIDx6YWNrQHdvbGVyeS5jdW1iLm9yZz4KCgkqIGNwcGhhc2guYyAoY2hhbmdlX25ld2xpbmVzKTogRGVsZXRlIGZ1bmN0aW9uLgoJKHN0cnVjdCBhcmdkYXRhKTogRGVsZXRlICduZXdsaW5lcycgYW5kICd1c2VfY291bnQnIGZpZWxkcy4KCShtYWNyb2V4cGFuZCk6IFJlbW92ZSBjb2RlIHJlZmVyZW5jaW5nIHRob3NlIGZpZWxkcy4KCjIwMDAtMDEtMjIgIE1pY2hhZWwgSGF5ZXMgIDxtLmhheWVzQGVsZWMuY2FudGVyYnVyeS5hYy5uej4KCgkqIGxvb3AuYyAobG9vcHNfaW5mbyk6IE5ldyB2YXJpYWJsZS4KCShsb29wX29wdGltaXplKTogQWxsb2NhdGUgbG9vcHMtPmFycmF5IGFuZCBmcmVlIGl0IG9uIGV4aXQuCglBbGxvY2F0ZSBtZW1vcnkgZm9yIGxvb3BzX2luZm8gYW5kIGFzc2lnbiB0byBlYWNoIGxvb3AsCglyZXBsYWNpbmcgYWxsb2NhLgoJKGZpbmRfYW5kX3ZlcmlmeV9sb29wcyk6IERvIG5vdCBhbGxvY2F0ZSBsb29wcy0+YXJyYXkuCgoyMDAwLTAxLTIxICBaYWNrIFdlaW5iZXJnICA8emFja0B3b2xlcnkuY3VtYi5vcmc+CgoJKiBmaXhpbmMvZml4Zml4ZXMuYyAobWFjaGluZV9uYW1lX2ZpeCk6IERvbid0IGZyZWUgJ3NjcmF0Y2gnLgoKMjAwMC0wMS0yMSAgSmFrdWIgSmVsaW5layAgPGpha3ViQHJlZGhhdC5jb20+CgoJKiBjb25maWcvc3BhcmMvc3BhcmMubWQgKG1vdnNpX3BpY19sYWJlbF9yZWYpOiBBdm9pZCBjcmVhdGluZyBuZXcKCXBzZXVkb3MgaWYgZXhwYW5kZWQgYWZ0ZXIgZmlyc3QgZmxvdy4KCShtb3ZkaV9waWNfbGFiZWxfcmVmKTogTGlrZXdpc2UuCgoyMDAwLTAxLTIwICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEBjeWdudXMuY29tPgoKCSoganVtcC5jIChqdW1wX29wdGltaXplXzEpOiBEb24ndCBkbyBhZGRyX3ZlYyBvcHRpbWl6YXRpb25zIGF0IC1PMC4KCjIwMDAtMDEtMjAgIFphY2sgV2VpbmJlcmcgIDx6YWNrQHdvbGVyeS5jdW1iLm9yZz4KCgkqIE1ha2VmaWxlLmluIChmaXhpbmMuc2gpOiBEZXBlbmQgb24gc3BlY3MuCgkqIGZpeGluYy9NYWtlZmlsZS5pbjogQWRkIHJ1bGUgdG8gY3JlYXRlIG1hY2huYW1lLmguCgkoZml4bGliLm8pOiBEZXBlbmQgb24gbWFjaG5hbWUuaC4KCSogZml4aW5jL2ZpeHRlc3RzLmMgKG1hY2hpbmVfbmFtZSk6IE5ldyB0ZXN0LgoJKiBmaXhpbmMvZml4Zml4ZXMuYyAobWFjaGluZV9uYW1lKTogTmV3IGZpeC4KCSogZml4aW5jL2ZpeGxpYi5jIChtbl9nZXRfcmVnZXhwcyk6IE5ldyBoZWxwZXIgZnVuY3Rpb24gZm9yCgl0aGUgbWFjaGluZV9uYW1lIHRlc3QgYW5kIGZpeC4KCSogZml4aW5jL2ZpeGxpYi5oOiBQcm90b3R5cGUgaXQuCgkqIGZpeGluYy9pbmNsaGFjay5kZWYgKG1hY2hpbmVfbmFtZSk6IFVzZSB0aGUgQyB0ZXN0IGFuZCBmaXguCgkqIGZpeGluYy9maXhpbmNsLngsIGZpeGluYy9pbmNsaGFjay5zaDogUmVidWlsZC4KCgkqIGdjYy5jIChkb19zcGVjXzEpIFtjYXNlIFBdOiBUYWtlIGNhcmUgbm90IHRvIGNyZWF0ZQoJaWRlbnRpZmllcnMgd2l0aCB0aHJlZSBsZWFkaW5nIG9yIHRyYWlsaW5nIHVuZGVyc2NvcmVzLgoKCSogZml4aW5jL01ha2VmaWxlLmluIChGSVhJTkNfREVGUyk6IEFkZCAtRElOX0dDQy4KCShmaXhpbmNsKTogRG9uJ3Qgc3BlY2lmeSBsaWJyYXJpZXMgdHdpY2Ugb24gbGluayBsaW5lLgoJKGdudS1yZWdleC5vKTogUmVtb3ZlIHNwZWNpYWwgcnVsZS4KCSogZml4aW5jL2dudS1yZWdleC5jOiBEZWZpbmUgUkVHRVhfTUFMTE9DIGlmIENfQUxMT0NBIHdhcwoJZGVmaW5lZCBieSBjb25maWcuaC4gIERvIG5vdCBkZWZpbmUgX1JFR0VYX1JFX0NPTVAuCgkocmVnY29tcCk6IEFsbG9jYXRlIGFuZCBpbml0aWFsaXplIGEgZmFzdG1hcC4KCSogZml4aW5jL2dudS1yZWdleC5oOiBEbyBub3QgZGVmaW5lIF9SRUdFWF9SRV9DT01QLgoKMjAwMC0wMS0yMCAgQnJhZCBMdWNpZXIgIDxsdWNpZXJAbWF0aC5wdXJkdWUuZWR1PgoKCSogTWFrZWZpbGUuaW4gKHByZWRpY3Qubyk6IERlcGVuZCBvbiAkKEVYUFJfSCksIG5vdCBleHByLmguCgoyMDAwLTAxLTE5ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEBjeWdudXMuY29tPgoKCSogZmxvdy5jIChwcm9wYWdhdGVfYmxvY2spOiBSZXBsYWNlIEZJUlNULCBMQVNUIGFuZCBCTlVNCglhcmd1bWVudHMgd2l0aCBCQi4gIFVwZGF0ZSBhbGwgY2FsbGVycy4gIFRpZHkgbGluZSB3cmFwcGluZy4KCjIwMDAtMDEtMTkgIENsaW50b24gUG9wZXR6ICA8Y3BvcGV0ekBjeWdudXMuY29tPgoKCSogZW1pdC1ydGwuYyAodHJ5X3NwbGl0KTogUmV0dXJuIGxhc3RfaW5zbiBpZiB3ZSBzcGxpdCB0aGUKCWxhc3RfaW5zbi4KClRodSBKYW4gMjAgMDE6MDE6MjMgTUVUIDIwMDAgIEphbiBIdWJpY2thICA8amhAc3VzZS5jej4KCgkqIGkzODYtcHJvdG9zLmggKGl4ODZfY29tcHV0ZV9mcmFtZV9zaXplKTogUmVtb3ZlIHByb3RvdHlwZS4KCShpeDg2X2luaXRpYWxfZWxpbWluYXRpb25fb2Zmc2V0KTogRGVjbGFyZS4KCSogaTM4Ni5jIChpeDg2X25zYXZlZF9yZWdzKTogQnJlYWsgb3V0IGZyb20gLi4uCgkoaXg4Nl9jYW5fdXNlX3JldHVybl9pbnNuX3ApOiAuLi4gaGVyZS4KCShpeDg2X2VtaXRfc2F2ZV9yZWdzKTogQnJlYWsgb3V0IGZyb20gLi4uCgkoaXg4Nl9leHBhbmRfcHJvbG9ndWUpOiAuLi4gaGVyZS4KCShpeDg2X2VtaXRfZXBpbG9ndWVfZXNwX2FkanVzdG1lbnQsIGl4ODZfZW1pdF9yZXN0b3JlX3JlZ3MpOiBCcmVhawoJb3V0IGZyb20gLi4uCgkoaXg4Nl9leHBhbmRfZXBpbG9ndWUpOiAuLi4gaGVyZS4KCShpeDg2X2NvbXB1dGVfZnJhbWVfc2l6ZSk6IE1ha2Ugc3RhdGljLCBhZGQgcHJvdG90eXBlLgoJKGl4ODZfaW5pdGlhbF9lbGltaW5hdGlvbl9vZmZzZXQpOiBCcmVhayBvdXQgZnJvbSAuLi4KCSogaTM4Ni5oIChJTklUSUFMX0VMSU1JTkFUSU9OX09GRlNFVCk6IC4uLiBoZXJlLgoKMjAwMC0wMS0xOSAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogcmVjb2cuaCAoT1VUX0ZDTik6IERlbGV0ZS4KCgkqIHZheC5tZDogQ2FsbCBgZ2V0X2luc25fdGVtcGxhdGUnIGluc3RlYWQgb2YgT1VUX0ZDTi4KCjIwMDAtMDEtMTkgIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIGNwcGFsbG9jLmM6IFBST1RPIC0+IFBBUkFNUy4KCSogY3BwZXJyb3IuYzogTGlrZXdpc2UuCgkqIGNwcGZpbGVzLmM6IExpa2V3aXNlLgoJKiBjcHBsaWIuYzogTGlrZXdpc2UuCgkqIGNwcGxpYi5oOiBMaWtld2lzZS4KCgkqIGNvbmZpZy9hcm0vYXJtLXByb3Rvcy5oOiBQUk9UTyAtPiBQQVJBTVMuCgkqIGNvbmZpZy9hcm0vYXJtLmM6IExpa2V3aXNlLgoJKiBjb25maWcvYzR4L2M0eC5jOiBMaWtld2lzZS4KCSogY29uZmlnL2ZyMzAvZnIzMC1wcm90b3MuaDogTGlrZXdpc2UuCgkqIGNvbmZpZy9uZXh0c3RlcC5jOiBMaWtld2lzZS4KCSogY29uZmlnL3BhL3BhLmM6IExpa2V3aXNlLgoJKiBjb25maWcvcGovcGouYzogTGlrZXdpc2UuCgkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLmM6IExpa2V3aXNlLgoJKiBjb25maWcvdjg1MC92ODUwLXByb3Rvcy5oOiBMaWtld2lzZS4KCSogY29uZmlnL3Y4NTAvdjg1MC5jOiBMaWtld2lzZS4KCjIwMDAtMDEtMTkgIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIGkzNzAtcHJvdG9zLmg6IE5ldyBmaWxlLgoKCSogaTM3MC5jOiBJbmNsdWRlIHRtX3AuaC4gIEZpeCBjb21waWxlIHRpbWUgd2FybmluZ3MuCgoJKiBpMzcwLmg6IE1vdmUgcHJvdG90eXBlcyB0byBpMzcwLXByb3Rvcy5oLiAgRml4IGNvbXBpbGUgdGltZQoJd2FybmluZ3MuCgoJKiBpMzcwLm1kOiBMaWtld2lzZS4KCjIwMDAtMDEtMTkgIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIHJlYWwuYyAoZW5hbiwgZWluYW4sIGVpaXNuYW4sIGVpaXNuZWcsIG1ha2VfbmFuKTogV3JhcCBpbiBOQU5TLgoJKHRhcmdldF9pc2luZiwgdGFyZ2V0X2lzbmFuLCBlaXNuYW4pOiBNYXJrIHBhcmFtZXRlciB3aXRoCglBVFRSSUJVVEVfVU5VU0VELgoJKGVpaXNpbmYpOiBXcmFwIGluIElORklOSVRZLgoJKGV0b2UxMTMsIGV0b2U2NCwgZXRvZTUzLCBldG9lMjQpOiBXcmFwIGxhYmVsIGBub25vcm0nIGluIElORklOSVRZLgoJKGlibXRvZSk6IFJlbW92ZSB1bnVzZWQgdmFyaWFibGUgYHJuZHNhdicuCgpXZWQgSmFuIDE5IDIwOjIzOjA2IDIwMDAgIEoib3JuIFJlbm5lY2tlIDxhbXlsYWFyQGN5Z251cy5jby51az4KCgkqIHNoLmggKFBBU1NfSU5fUkVHX1ApOiBSZW1vdmUgZXh0cmFuZW91cyBwYXJhbnRoZXNpcy4KCShHT19JRl9MRUdJVElNQVRFX0FERFJFU1MpOiBBZGRlZCBtaXNzaW5nIHRhYi4KCjIwMDAtMDEtMTkgIFphY2sgV2VpbmJlcmcgIDx6YWNrQHdvbGVyeS5jdW1iLm9yZz4KCgkqIGZpeGluYy9NYWtlZmlsZS5pbjogQ29ycmVjdCBkZXBlbmRlbmNpZXMgb2YgZml4aW5jbCBhbmQgZml4aW5jbC5vLgoJKiBmaXhpbmMvZml4Zml4ZXMuYyAoSU9fdXNlLCBDVFJMX3VzZSwgSU9fZGVmbiwgQ1RSTF9kZWZuKTogTmV3IGZpeGVzLgoJKGZpeF9jaGFyX21hY3JvX2RlZmluZXMsIGZpeF9jaGFyX21hY3JvX3VzZXMpOiBOZXcgZnVuY3Rpb25zLgoKCSogZml4aW5jL2ZpeGxpYi5jIChpc19jeHhfaGVhZGVyKTogRG8gdGhlIHRleHQgc2NhbiB3aXRoIGEgcmVnZXhwLgoJUmVjb2duaXplIEVtYWNzIG1vZGUgbWFya2VycyBhbHNvLgoJKiBmaXhpbmMvZml4dGVzdHMuYyAoZWxzZV9lbmRpZl9sYWJlbCk6IEZpeCBidWcgaW4gcmVjb2duaXRpb24gb2YKCUMrKyBjb21tZW50cyBpbiBDKysgaGVhZGVycy4gIENhbGwgaXNfY3h4X2hlYWRlciBvbmx5IGlmCgluZWNlc3NhcnkuCgoJKiBmaXhpbmMvaW5jbGhhY2suZGVmIChhdm9pZF9ib29sKTogQWRkIHNlbGVjdCBmb3IgdGhlIHByb2JsZW0gYW5kCglieXBhc3MgZm9yIG5jdXJzZXMuCgkoYnNkNDNfaW9fbWFjcm9zLCBpb19kZWZfcXVvdGVzLCBpb2N0bF9maXhfY3RybCk6IFJlcGxhY2Ugd2l0aC4uLgoJKGlvX2RlZl9xdW90ZXMsIGlvX3VzZV9xdW90ZXMsIGN0cmxfZGVmX3F1b3RlcywgY3RybF91c2VfcXVvdGVzKToKCS4uLiB0aGVzZSwgd2hpY2ggdXNlIHRoZSBuZXcgQyBmaXhlcy4KCShtYXRoX2V4Y2VwdGlvbik6IEVzY2FwZSBsaXRlcmFsICcrJyBpbiBieXBhc3MgZXhwcmVzc2lvbi4KCgkqIGZpeGluYy9maXhpbmNsLngsIGZpeGluYy9maXhpbmNsLnNoLCBmaXhpbmMvaW5jbGhhY2suc2g6CglSZWdlbmVyYXRlLgoKMjAwMC0wMS0xOSAgR2VvZmYgS2VhdGluZyAgPGdlb2Zma0BjeWdudXMuY29tPgoKCSogcnRsYW5hbC5jIChyZWdfcmVmZXJlbmNlZF9wKTogQSBDTE9CQkVSIG9mIGEgTUVNIHVzZXMgYW55IFJFR3MKCWluc2lkZSB0aGUgTUVNLgoKMjAwMC0wMS0yMCAgTWljaGFlbCBIYXllcyAgPG0uaGF5ZXNAZWxlYy5jYW50ZXJidXJ5LmFjLm56PgoKCSogbG9vcC5jIChsb29wX29wdGltaXplKTogQWxsb2NhdGUgbG9vcF9pbmZvIHN0cnVjdHVyZSBmb3IgZWFjaCBsb29wCglwcmlvciB0byBjYWxsaW5nIHNjYW5fbG9vcC4KCldlZCBKYW4gMTkgMTk6NTQ6MzggMjAwMCAgSiJvcm4gUmVubmVja2UgPGFteWxhYXJAY3lnbnVzLmNvLnVrPgoKCSogc2guYyAoZmluZF9iYXJyaWVyLCBnZW5fYmxvY2tfcmVkaXJlY3QpOiBGaXggaW5kZW50YXRpb24uCgkoc3BsaXRfYnJhbmNoZXMsIGNhbGNfbGl2ZV9yZWdzKTogTGlrZXdpc2UuCgpXZWQgSmFuIDE5IDE5OjEyOjM2IDIwMDAgIEoib3JuIFJlbm5lY2tlIDxhbXlsYWFyQGN5Z251cy5jby51az4KCgkqIHNoLm1kIChmcHVfc2luZ2xlLCBmcF9tb2RlKTogTmV3IGF0dHJpYnV0ZXMuCgoyMDAwLTAxLTIwICBNaWNoYWVsIEhheWVzICA8bS5oYXllc0BlbGVjLmNhbnRlcmJ1cnkuYWMubno+CgoJKiBsb29wLmMgKGN1cnJlbnRfbG9vcF9pbmZvKTogUmVuYW1lZCBmcm9tIGxvb3BfaW5mb19kYXRhCglhbmQgY2hhbmdlZCB0byBhIHBvaW50ZXIuCgkobG9vcF9vcHRpbWl6ZSk6IEFsbG9jYXRlIGxvb3BfaW5mbyBzdHJ1Y3R1cmUgZm9yIGVhY2ggbG9vcAoJYW5kIGluaXRpYWxpemUgdG8gemVyby4KCShzY2FuX2xvb3ApOiBTZXQgY3VycmVudF9sb29wX2luZm8uCgoJKiB1bnJvbGwuYyAobG9vcF9pdGVyYXRpb25zKTogRG9uJ3QgYWJvcnQgaWYgUkVHX1VTRVJWQVJfUCBzZXQKCW9uIGl0ZXJhdGlvbl92YXIuCgoyMDAwLTAxLTE5ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEBjeWdudXMuY29tPgoKCSogc3R1cGlkLmM6IERpZSBkaWUgZGllLgoJKiBNYWtlZmlsZS5pbiAoT0JKUyk6IFJlbW92ZSBzdHVwaWQuby4KCShzdHVwaWQubyk6IExpa2V3aXNlLgoKCSogZXhjZXB0LmMgKGVtaXRfZWhfY29udGV4dCk6IERvbid0IGVtaXQgVVNFcyBmb3Igc3R1cGlkLgoJKiBleHBsb3cuYyAocHJvYmVfc3RhY2tfcmFuZ2UpOiBMaWtld2lzZS4KCSogZmxhZ3MuaCAob2JleV9yZWdkZWNscyk6IFJlbW92ZS4KCSogZmxvdy5jIChmaW5kX2Jhc2ljX2Jsb2Nrcyk6IERvbid0IHJ1biB0cnlfbWVyZ2VfYmxvY2tzCgl3aGVuIG5vdCBvcHRpbWl6aW5nLgoJKGxpZmVfYW5hbHlzaXMpOiBMaW1pdCBkYXRhIGNvbGxlY3Rpb24gd2hlbiBub3Qgb3B0aW1pemluZy4KCShtYXJrX3JlZ3NfbGl2ZV9hdF9lbmQpOiBBbHdheXMgbWFyayB0aGUgcmV0dXJuIHZhbHVlIHJlZ2lzdGVycy4KCShtYXJrX3VzZWRfcmVncyk6IFJlbW92ZSBkdW1teSBSRVRVUk4gY2FzZS4KCShwcmludF9ydGxfd2l0aF9iYik6IERvbid0IGNvbnN1bHQgb2JleV9yZWdkZWNscy4KCSogZnVuY3Rpb24uYyAodXNlX3ZhcmlhYmxlLCB1c2VfdmFyaWFibGVfYWZ0ZXIpOiBSZW1vdmUuCgkoYXNzaWduX3Bhcm1zKTogQ29uc3VsdCBvcHRpbWl6ZSBub3Qgb2JleV9yZWdkZWNscy4KCShleHBhbmRfZnVuY3Rpb25fc3RhcnQpOiBEb24ndCBlbWl0IFVTRXMgZm9yIHN0dXBpZC4KCShleHBhbmRfZnVuY3Rpb25fZW5kKTogTGlrZXdpc2UuCgkqIGdsb2JhbC5jIChidWlsZF9pbnNuX2NoYWluKTogRXhwb3J0LgoJKiBpbnRlZ3JhdGUuYyAoZXhwYW5kX2lubGluZV9mdW5jdGlvbik6IEtpbGwgcmV0dXJuLXZhbHVlIFVTRQoJaGFuZGxpbmcgY29kZS4KCSoganVtcC5jIChqdW1wX29wdGltaXplXzEpOiBEbyBzaW1wbGUganVtcCBvcHRpbWl6YXRpb25zIGFuZAoJZGVhZCBjb2RlIGVsaW1pbmF0aW9uLgoJKGNhbGN1bGF0ZV9jYW5fcmVhY2hfZW5kKTogUmVtb3ZlIGNoZWNrX2RlbGV0ZWQgYXJndW1lbnQuCgkoZGVsZXRlX2luc24pOiBQYXRjaCBvdXQgaW5zbnMgZXZlbiB3aGVuIG5vdCBvcHRpbWl6aW5nLgoJKiBsb2NhbC1hbGxvYy5jIChibG9ja19hbGxvYyk6IERvbid0IGRvIHR5aW5nIHdoZW4gbm90IG9wdGltaXppbmcuCgkqIHJ0bC5oICh1c2VfdmFyaWFibGUsIHVzZV92YXJpYWJsZV9hZnRlcik6IFJlbW92ZSBkZWNsYXJhdGlvbnMuCgkoYnVpbGRfaW5zbl9jaGFpbik6IERlY2xhcmUuCgkqIHN0bXQuYyAoZXhwYW5kX3ZhbHVlX3JldHVybik6IERvbid0IGVtaXQgVVNFcyBmb3Igc3R1cGlkLgoJKGV4cGFuZF9lbmRfYmluZGluZ3MpOiBMaWtld2lzZS4KCShleHBhbmRfZGVjbCk6IExpa2V3aXNlLiAgQ29uc3VsdCBvcHRpbWl6ZSBub3Qgb2JleV9yZWdkZWNscy4KCSogdG9wbGV2LmMgKG9iZXlfcmVnZGVjbHMpOiBSZW1vdmUuCgkocmVzdF9vZl9jb21waWxhdGlvbik6IERvbid0IHNldCBpdC4gIEtpbGwgc3R1cGlkIGluIGZhdm9yIG9mCglmbG93MSwgbG9jYWwtYWxsb2MsIGFuZCByZWxvYWQuCgkobWFpbik6IERvbid0IHNldCBvYmV5X3JlZ2RlY2xzLgoKCSogY29uZmlnL25leHRzdGVwLmMgKGhhbmRsZV9wcmFnbWEpOiBMaWtld2lzZS4KCgkqIGFscGhhL2FscGhhLm1kIChhbGxvY2F0ZV9zdGFjayk6IERvbid0IGVtaXQgVVNFcyBmb3Igc3R1cGlkLgoKCSogYXJtL2FybS5oIChDT05ESVRJT05BTF9SRUdJU1RFUl9VU0FHRSk6IERvbid0IGZpeCByZWcgMCBmb3Igc3R1cGlkLgoKMjAwMC0wMS0xOCAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogYWxwaGEtcHJvdG9zLmg6IFBST1RPIC0+IFBBUkFNUy4KCSogYWxwaGEuYzogTGlrZXdpc2UuCgkqIGVsZi5oOiBMaWtld2lzZS4KCSogaDgzMDAuYzogTGlrZXdpc2UuCgkqIGkzODYtcHJvdG9zLmg6IExpa2V3aXNlLgoJKiBpMzg2LmM6IExpa2V3aXNlLgoJKiBtMzJyLXByb3Rvcy5oOiBMaWtld2lzZS4KCSogbTMyci5jOiBMaWtld2lzZS4KCSogbWlwcy5jOiBMaWtld2lzZS4KCSogbWlwcy5tZDogTGlrZXdpc2UuCgkqIGdtb24tc29sMi5jOiBMaWtld2lzZS4KCSogc3BhcmMuYzogTGlrZXdpc2UuCgoyMDAwLTAxLTE4ICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBuczMyay1wcm90b3MuaDogTmV3IGZpbGUuCgoJKiBuczMyay5jOiBGaXggY29tcGlsZSB0aW1lIHdhcm5pbmdzLgoKCSogbnMzMmsuaDogTW92ZSBwcm90b3R5cGVzIHRvIG5zMzJrLXByb3Rvcy5oLiAgRml4IGNvbXBpbGUgdGltZQoJd2FybmluZ3MuCgoJKiBuczMyay5tZDogTGlrZXdpc2UuCgoyMDAwLTAxLTE4ICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiB2YXgtcHJvdG9zLmg6IE5ldyBmaWxlLgoKCSogdmF4LmM6IEZpeCBjb21waWxlIHRpbWUgd2FybmluZ3MuCgoJKiB2YXguaDogTW92ZSBwcm90b3R5cGVzIHRvIHZheC1wcm90b3MuaC4gIEZpeCBjb21waWxlIHRpbWUKCXdhcm5pbmdzLgoKCSogdmF4Lm1kOiBMaWtld2lzZS4KCgkqIHZheHYubWQ6IExpa2V3aXNlLgoKMjAwMC0wMS0xOCAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogcm9tcC1wcm90b3MuaDogTmV3IGZpbGUuCgoJKiByb21wLmM6IEZpeCBjb21waWxlIHRpbWUgd2FybmluZ3MuCgoJKiByb21wLmg6IE1vdmUgcHJvdG90eXBlcyB0byByb21wLXByb3Rvcy5oLiAgRml4IGNvbXBpbGUgdGltZQoJd2FybmluZ3MuCgoJKiByb21wLm1kOiBMaWtld2lzZS4KCjIwMDAtMDEtMTggIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIHdlMzJrLXByb3Rvcy5oOiBOZXcgZmlsZS4KCgkqIHdlMzJrLmM6IEZpeCBjb21waWxlIHRpbWUgd2FybmluZ3MuCgoJKiB3ZTMyay5oOiBNb3ZlIHByb3RvdHlwZXMgdG8gd2UzMmstcHJvdG9zLmguICBGaXggY29tcGlsZSB0aW1lCgl3YXJuaW5ncy4KCjIwMDAtMDEtMTggIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIGNhbGxzLmMgKGVtaXRfY2FsbF8xKTogTWFyayBwYXJhbWV0ZXIgd2l0aCBBVFRSSUJVVEVfVU5VU0VELgoKCSogZXhjZXB0LmMgKGVoX3JlZ3MpOiBMaWtld2lzZS4KCgkqIGZpbmFsLmMgKG91dHB1dF9vcGVyYW5kKTogTGlrZXdpc2UuCgoJKiBmb2xkLWNvbnN0LmMgKHRhcmdldF9pc2luZiwgdGFyZ2V0X2lzbmFuKTogTGlrZXdpc2UuCgpUdWUgSmFuIDE4IDE2OjE5OjU1IE1FVCAyMDAwICBKYW4gSHViaWNrYSAgPGh1Ymlja2FAZnJlZXNvZnQuY3o+CgoJKiBpMzg2LmggKEJJR0dFU1RfQUxJR05NRU5UKTogU2V0IHRvIDEyOC4KCShCSUdHRVNUX0ZJRUxEX0FMSUdOTUVOVCk6IFNldCB0byAoVEFSR0VUX0FMSUdOX0RPVUJMRSA/IDY0IDogMzIpCgoJKiBpMzg2Lm1kIChtZW1zdHIpOiBEbyBub3QgdXNlIHJlcCBzdG9zYiBmb3IgY291bnRzIGRpdmlzaWJsZSBieSA0Cgl3aGVuIG9wdGltaXplX3NpemUuCgkoY2xyc3Ryc2kpOiBSZXdyaXRlLgoJKHN0cnNldGhpLCBzdHJzZXRxaSk6IE5ldyBleHBhbmRlcnMuCgkoc3Ryc2V0aGlfMSwgc3Ryc2V0cWlfMSwgcmVwX3N0b3NzaSwgcmVwX3N0b3NxaSk6IE5ldyBpbnNuIHBhdHRlcm5zLgoJKGNtcHN0cnNpKTogRW1pdCBjb21wYXJlIGluc24gYmVmb3JlIGNtcHN0cnNpXzEKCShjbXBzdHJzaV9ueik6IHVzZSBmbGFncywgc2V0IHR5cGUgdG8gc3RyLCBwcmVmaXhfbGVuZ3RoIHRvIDEuCgkoc3RybGVuc2lfMSk6IExpa2V3aXNlLgoJKGNtcHN0cnNpXzEpOiBMaWtld2lzZTsgZG8gbm90IG91dHB1dCBjb21wYXJlLgoJKHN0cmxlbiBleHBhbmRlcik6IERvIG5vdCB1bnJvbGwgd2hlbiBvcHRpbWl6aW5nIGZvciBzaXplLgoJKCpzdWJzaTNfY2FycnkpOiBSZW5hbWUgdG8gc3Vic2kzX2NhcnJ5CgkoYWRkcWkzX2NjKTogTmV3IHBhdHRlcm4uCgkqIGkzODYuaCAocHJvY2Vzc29yX2Nvc3RzKTogQWRkIG1vdmVfcmF0aW8gZmllbGQuCgkoTU9WRV9SQVRJTyk6IFVzZSBtb3ZlX3JhdGlvIGZpZWxkLCBzZXQgdG8gMyBmb3IgT1BUSU1JWkVfU0laRQoJKiBpMzg2LmMgKCpfY29zdCk6IFNldCBtb3ZlX3JhdGlvLgoJKHg4Nl91bnJvbGxfc3RybGVuKTogRW5hYmxlIGZvciBBdGhsb24sIFBQcm8gYW5kIEs2IHRvby4KCSh4ODZfZXhwYW5kX3N0cmxlbnNpXzEpOiBSZXdyaXRlIHRoZSBtYWluIGxvb3AuCgoyMDAwLTAxLTE3ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEBjeWdudXMuY29tPgoKCSogY29tYmluZS5jIChjb21iaW5lX3NpbXBsaWZ5X3J0eCk6IEdpdmUgRkxPQVRfU1RPUkVfRkxBR19WQUxVRSBhIG1vZGUuCgkqIGNzZS5jIChmaW5kX2NvbXBhcmlzb25fYXJncywgZm9sZF9ydHgpOiBMaWtld2lzZS4KCSogaW50ZWdyYXRlLmMgKHN1YnN0X2NvbnN0YW50cyk6IExpa2V3aXNlLgoJKiBsb29wLmMgKGdldF9jb25kaXRpb24pOiBMaWtld2lzZS4KCgkqIHRtLnRleGkgKEZMT0FUX1NUT1JFX0ZMQUdfVkFMVUUpOiBVcGRhdGUgZG9jcy4KCgkqIGFscGhhLmggKEZMT0FUX1NUT1JFX0ZMQUdfVkFMVUUpOiBVc2UgUkVBTF9WQUxVRV9BVE9GLgoKMjAwMC0wMS0xOCAgTWFydGluIHYuIEz2d2lzICA8bG9ld2lzQGluZm9ybWF0aWsuaHUtYmVybGluLmRlPgoKCSogYy1wYXJzZS5pbiAoU0FWRV9XQVJOX0ZMQUdTKTogQ3JlYXRlIGFuIElOVEVHRVJfQ1NULgoJKFJFU1RPUkVfV0FSTl9GTEFHUyk6IFVucGFjayBpdC4KCUNoYW5nZSBzZW1hbnRpYyB0eXBlIG9mIGV4dGVuc2lvbiB0byB0dHlwZS4KCSogYy1jb21tb24uYyAoc3BsaXRfc3BlY3NfYXR0cnMpOiBFeHBlY3QgYW4gSU5URUdFUl9DU1QuCgkqIGMtcGFyc2UueSwgYy1wYXJzZS5jLCBvYmpjL29iamMtcGFyc2UueSwKCW9iamMvb2JqYy1wYXJzZS5jOiBSZWdlbmVyYXRlLgoKMjAwMC0wMS0xNyAgWmFjayBXZWluYmVyZyAgPHphY2tAd29sZXJ5LmN1bWIub3JnPgoKCSogZml4aW5jL2ZpeGxpYi5jOiBBZGQgY29weXJpZ2h0IG5vdGljZS4KCShjb21waWxlX3JlKTogTmV3IGZ1bmN0aW9uLgoJKiBmaXhpbmMvZml4bGliLmg6IFByb3RvdHlwZSBjb21waWxlX3JlLgoKCSogZml4aW5jL2ZpeGZpeGVzLmMsIGZpeGluYy9maXh0ZXN0cy5jLCBmaXhpbmMvZml4aW5jbC5jOgoJVXNlIGNvbXBpbGVfcmUgdG8gY29tcGlsZSByZWd1bGFyIGV4cHJlc3Npb25zLgoKCSogZml4aW5jL2ZpeGluY2wuYyAoZWdyZXBfdGVzdCk6IERvbid0IGJvdGhlciBhc2tpbmcgcmVnZXhlYwoJd2hlcmUgdGhlIHBhdHRlcm4gbWF0Y2hlZC4KCgkqIGZpeGluYy9pbmNsaGFjay5kZWYgKHN1bl9tZW1jcHkpOiBNb3ZlIHRvIEFBQl9zdW5fbWVtY3B5LAoJdXNlICdyZXBsYWNlJy4KCSh1bHRyaXhfYW5zaV9jb21wYXQpOiBMaWtld2lzZS4KCShpbnRlcmFjdHZfYWRkMSk6IFJlbmFtZSB0byAnaXNjX29taXRzX3dpdGhfc3RkYycsIHJlbW92ZSBzaGVsbCB0ZXN0LAoJYWRkIGVncmVwIHRlc3QuCgkoaW50ZXJhY3R2X2FkZDIsIGludGVyYWN0dl9hZGQzKTogRGVsZXRlLgoJKHgxMV9zcHJpbnRmKTogRG9uJ3QgdXNlIGZpbGVuYW1lIGdsb2IuCgkqIGZpeGluYy9maXhpbmNsLngsIGZpeGluYy9pbmNsaGFjay5zaCwgZml4aW5jL2ZpeGluY2wuc2g6CglSZWdlbmVyYXRlLgoKMjAwMC0wMS0xNyAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogcHJpbnQtcnRsLmM6IFBST1RPIC0+IFBBUkFNUy4KCSogcmVhbC5jOiBMaWtld2lzZS4KCSogcmVnLXN0YWNrLmM6IExpa2V3aXNlLgoJKiByZXNvdXJjZS5jOiBMaWtld2lzZS4KCSogc2Rib3V0Lmg6IExpa2V3aXNlLgoJKiBzaW1wbGlmeS1ydHguYzogTGlrZXdpc2UuCgkqIHN0b3ItbGF5b3V0LmM6IExpa2V3aXNlLgoJKiBzdHVwaWQuYzogTGlrZXdpc2UuCgkqIHhjb2Zmb3V0LmM6IExpa2V3aXNlLgoJKiB4Y29mZm91dC5oOiBMaWtld2lzZS4KCjIwMDAtMDEtMTcgIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIHRvcGxldi5jOiBQUk9UTyAtPiBQQVJBTVMuCgkqIHRvcGxldi5oOiBMaWtld2lzZS4KCSogdHJlZS5jOiBMaWtld2lzZS4KCSogdHJlZS5oOiBMaWtld2lzZS4KCSogdW5yb2xsLmM6IExpa2V3aXNlLgoJKiB2YXJhc20uYzogTGlrZXdpc2UuCgkqIHZhcnJheS5jOiBMaWtld2lzZS4KCSogdmFycmF5Lmg6IExpa2V3aXNlLgoKMjAwMC0wMS0xNyAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogcmVsb2FkLmM6IFBST1RPIC0+IFBBUkFNUy4KCSogcmVsb2FkLmg6IExpa2V3aXNlLgoJKiByZWxvYWQxLmM6IExpa2V3aXNlLgoJKiByZW9yZy5jOiBMaWtld2lzZS4KCSogcmVzb3VyY2UuaDogTGlrZXdpc2UuCgkqIHJ0bC5jOiBMaWtld2lzZS4KCSogcnRsLmg6IExpa2V3aXNlLgoJKiBydGxhbmFsLmM6IExpa2V3aXNlLgoJKiBzYml0bWFwLmg6IExpa2V3aXNlLgoJKiBzZGJvdXQuYzogTGlrZXdpc2UuCgkqIHN0YWNrLmg6IExpa2V3aXNlLgoJKiBzdG10LmM6IExpa2V3aXNlLgoJKiBzeXN0ZW0uaDogTGlrZXdpc2UuCgoyMDAwLTAxLTE3ICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBtYWNobW9kZS5oOiBQUk9UTyAtPiBQQVJBTVMuCgkqIG1iY2hhci5oOiBMaWtld2lzZS4KCSogbWlwcy10ZHVtcC5jOiBMaWtld2lzZS4KCSogbWlwcy10ZmlsZS5jOiBMaWtld2lzZS4KCSogb3B0YWJzLmM6IExpa2V3aXNlLgoJKiBvdXRwdXQuaDogTGlrZXdpc2UuCgkqIHByZWZpeC5jOiBMaWtld2lzZS4KCSogcHJvZmlsZS5jOiBMaWtld2lzZS4KCSogcHJvdG9pemUuYzogTGlrZXdpc2UuCgkqIHJlYWwuaDogTGlrZXdpc2UuCgkqIHJlY29nLmM6IExpa2V3aXNlLgoJKiByZWNvZy5oOiBMaWtld2lzZS4KCSogcmVnY2xhc3MuYzogTGlrZXdpc2UuCgkqIHJlZ21vdmUuYzogTGlrZXdpc2UuCgkqIHJlZ3MuaDogTGlrZXdpc2UuCgoyMDAwLTAxLTE3ICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBnZ2MtY29tbW9uLmM6IFBST1RPIC0+IFBBUkFNUy4KCSogZ2djLXBhZ2UuYzogTGlrZXdpc2UuCgkqIGdnYy1zaW1wbGUuYzogTGlrZXdpc2UuCgkqIGdnYy5oOiBMaWtld2lzZS4KCSogZ2xvYmFsLmM6IExpa2V3aXNlLgoJKiBncmFwaC5jOiBMaWtld2lzZS4KCSogZ3Roci13aW4zMi5oOiBMaWtld2lzZS4KCSogaGFpZmEtc2NoZWQuYzogTGlrZXdpc2UuCgkqIGhhbGZwaWMuaDogTGlrZXdpc2UuCgkqIGludGVncmF0ZS5jOiBMaWtld2lzZS4KCSogaW50ZWdyYXRlLmg6IExpa2V3aXNlLgoJKiBqdW1wLmM6IExpa2V3aXNlLgoJKiBsY20uYzogTGlrZXdpc2UuCgkqIGxvY2FsLWFsbG9jLmM6IExpa2V3aXNlLgoJKiBsb29wLmM6IExpa2V3aXNlLgoJKiBsb29wLmg6IExpa2V3aXNlLgoKMjAwMC0wMS0xNyAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogZ2VuYXR0ci5jOiBQUk9UTyAtPiBQQVJBTVMuCgkqIGdlbmF0dHJ0YWIuYzogTGlrZXdpc2UuCgkqIGdlbmNoZWNrLmM6IExpa2V3aXNlLgoJKiBnZW5jb2Rlcy5jOiBMaWtld2lzZS4KCSogZ2VuY29uZmlnLmM6IExpa2V3aXNlLgoJKiBnZW5lbWl0LmM6IExpa2V3aXNlLgoJKiBnZW5leHRyYWN0LmM6IExpa2V3aXNlLgoJKiBnZW5mbGFncy5jOiBMaWtld2lzZS4KCSogZ2VuZ2VucnRsLmM6IExpa2V3aXNlLgoJKiBnZW5vcGluaXQuYzogTGlrZXdpc2UuCgkqIGdlbm91dHB1dC5jOiBMaWtld2lzZS4KCSogZ2VucGVlcC5jOiBMaWtld2lzZS4KCSogZ2VucmVjb2cuYzogTGlrZXdpc2UuCgoyMDAwLTAxLTE2ICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogdHJlZS5oIChCSU5GT19WUFRSX0ZJRUxEKTogQXVnbWVudCBkb2N1bWVudGF0aW9uLgoKMjAwMC0wMS0xNiAgQWxleGFuZHJlIE9saXZhICA8b2xpdmFAbHNkLmljLnVuaWNhbXAuYnI+CgoJKiBhY2xvY2FsLm00IChBQ19GVU5DX01NQVBfWkVSTyk6IE5ldyBtYWNyby4KCSogY29uZmlndXJlLmluIChBQ19GVU5DX01NQVBfWkVSTyk6IFVzZSBpbnN0ZWFkIG9mIEFDX0ZVTkNfTU1BUC4KCSogZ2djLXBhZ2UuYzogUmVwbGFjZSBIQVZFX01NQVAgd2l0aCBIQVZFX01NQVBfWkVSTy4KCSogY29uZmlndXJlLCBjb25maWcuaW46IFJlYnVpbHQuCgoyMDAwLTAxLTE2ICBaYWNrIFdlaW5iZXJnICA8emFja0B3b2xlcnkuY3VtYi5vcmc+CgoJKiBjb25maWcvaTM4Ni9pMzg2Lm1kOiBBZGQgcGVlcGhvbGUgdG8gbWVyZ2Ugc3VjY2Vzc2l2ZSBzdGFjawoJYWRqdXN0cy4KClNhdCBKYW4gMTUgMTU6NDE6MTQgRVNUIDIwMDAgIEpvaG4gV2VobGUgIChqb2huQGZlaXRoLmNvbSkKCgkqIGdjc2UuYyAoaW5zZXJ0X2luc25fZW5kX2JiKTogVXNlIGVtaXRfYmxvY2tfaW5zbl9iZWZvcmUKCWluc3RlYWQgb2YgZW1pdF9pbnNuX2JlZm9yZS4gIEFsc28gaGFuZGxlIE5PVEVfSU5TTl9CQVNJQ19CTE9DSwoJd2hlbiB3YWxraW5nIGJhY2t3YXJkcyB0byBmaW5kIGFsbCB0aGUgcGFyYW1ldGVyIGxvYWRzIHdoZW4KCXRoZSBiYXNpYyBibG9jayBlbmRzIGluIGEgY2FsbC4KCjIwMDAtMDEtMTUgIE1pY2hhZWwgSGF5ZXMgIDxtLmhheWVzQGVsZWMuY2FudGVyYnVyeS5hYy5uej4KCgkqIGxvb3AuYyAodGhpc19sb29wX2luZm8pOiBEZWxldGUuCgkodWlkX2xvb3ApOiBBZGQgaW4gcGxhY2Ugb2YgdWlkX2xvb3BfbnVtLiAgQWxsIHVzZXMgdXBkYXRlZC4KCShsb29wX251bWJlcl9leGl0X2NvdW50KTogRGVsZXRlIGFuZCByZXBsYWNlIHdpdGggZW50cnkgaW4gbG9vcAoJc3RydWN0dXJlLiAgQWxsIHVzZXMgdXBkYXRlZC4KCShsb29wX251bWJlcl9sb29wX3N0YXJ0cywgbG9vcF9udW1iZXJfbG9vcF9lbmRzKTogTGlrZXdpc2UuCgkobG9vcF9udW1iZXJfbG9vcF9jb250LCBsb29wX251bWJlcl9jb250X2RvbWluYXRvcik6IExpa2V3aXNlLgoJKGxvb3Bfb3V0ZXJfbG9vcCk6IExpa2V3aXNlLgoJKGxvb3BfaW52YWxpZCwgbG9vcF9udW1iZXJfZXhpdF9sYWJlbHMpOiBMaWtld2lzZS4KCShsb29wX3VzZWRfY291bnRfcmVnaXN0ZXIpOiBEZWxldGUgYW5kIHJlcGxhY2Ugd2l0aCBlbnRyeSBpbgoJbG9vcF9pbmZvIHN0cnVjdHVyZS4KCShmaW5kX2FuZF92ZXJpZnlfbG9vcHMpOiBBZGQgbG9vcHMgYXJndW1lbnQuCgkodmVyaWZ5X2RvbWluYXRvciwgbWFya19sb29wX2p1bXAsIHByZXNjYW5fbG9vcCk6IFJlcGxhY2UgbG9vcF9zdGFydCwKCWxvb3BfZW5kLCBldGMuIGFyZ3VtZW50cyB3aXRoIGxvb3Agc3RydWN0dXJlIHBvaW50ZXIuICBBbGwgY2FsbGVycwoJY2hhbmdlZC4KCShsb29wX3JlZ191c2VkX2JlZm9yZV9wLCBzY2FuX2xvb3AsIHN0cmVuZ3RoX3JlZHVjZSk6IExpa2V3aXNlLgoJKGNoZWNrX2RicmFfbG9vcCwgbmV4dF9pbnNuX2luX2xvb3AsIHRyeV9jb3B5X3Byb3ApOiBMaWtld2lzZS4KCShsb2FkX21lbXNfYW5kX3JlY291bnRfbG9vcF9yZWdzX3NldCwgbG9hZF9tZW1zKTogTGlrZXdpc2UuCgkoaW5zZXJ0X2JjdCk6IExpa2V3aXNlLgoJKGJhc2ljX2luZHVjdGlvbl92YXIpOiBOZXcgYXJndW1lbnQgbGV2ZWwuCgkqIGxvb3AuaCAoc3RydWN0IGxvb3BfaW5mbyk6IERlbGV0ZSBmaWVsZHMgbnVtLCBsb29wc19lbmNsb3NlZCwKCXZ0b3AsIGFuZCBjb250LiAgQWRkIHVzZWRfY291bnRfcmVnaXN0ZXIuCgkodWlkX2xvb3ApOiBEZWxldGUgZGVjbGFyYXRpb24uCgkobG9vcF9udW1iZXJfZXhpdF9jb3VudCk6IExpa2V3aXNlLgoJKGxvb3BfbnVtYmVyX2xvb3Bfc3RhcnRzLCBsb29wX251bWJlcl9sb29wX2VuZHMpOiBMaWtld2lzZS4KCShsb29wX251bWJlcl9sb29wX2NvbnQsIGxvb3BfbnVtYmVyX2NvbnRfZG9taW5hdG9yKTogTGlrZXdpc2UuCgkobG9vcF9vdXRlcl9sb29wLCBsb29wX3VzZWRfY291bnRfcmVnaXN0ZXIpOiBMaWtld2lzZS4KCShsb29wX2ludmFsaWQsIGxvb3BfbnVtYmVyX2V4aXRfbGFiZWxzKTogTGlrZXdpc2UuCgkodW5yb2xsX2xvb3ApOiBSZXBsYWNlIGxvb3Bfc3RhcnQgYW5kIGxvb3BfZW5kIGFyZ3VtZW50cwoJd2l0aCBsb29wIHN0cnVjdHVyZSBwb2ludGVyLgoJKGxvb3BfcHJlY29uZGl0aW9uX3AsIGxvb3BfaXRlcmF0aW9ucyk6IExpa2V3aXNlLgoJSW5jbHVkZSBiYXNpYy1ibG9jay5oLgoJKiB1bnJvbGwuYzogKHVucm9sbF9sb29wKTogUmVwbGFjZSBsb29wX3N0YXJ0IGFuZCBsb29wX2VuZCBhcmd1bWVudHMKCXdpdGggbG9vcCBzdHJ1Y3R1cmUgcG9pbnRlci4KCShsb29wX3ByZWNvbmRpdGlvbl9wLCBsb29wX2l0ZXJhdGlvbnMpOiBMaWtld2lzZS4KCSogYmFzaWMtYmxvY2suaCAoc3RydWN0IGxvb3ApOiBOZXcgZW50cmllcyB2dG9wLCBjb250LAoJY29udF9kb21pbmF0b3IsIHN0YXJ0LCBlbmQsIHRvcCwgc2Nhbl9zdGFydCwgZXhpdF9sYWJlbHMsCglleGl0X2NvdW50LgoJKiBNYWtlZmlsZS5pbiAoTE9PUF9IKTogQWRkIGJhc2ljLWJsb2NrLmggdG8gZGVwZW5kZW5jaWVzLgoKMjAwMC0wMS0xNSAgR2VyYWxkIFBmZWlmZXIgIDxwZmVpZmVyQGRiYWkudHV3aWVuLmFjLmF0PgoKCSogZGVmYXVsdHMuaCAoQVNNX09VVFBVVF9BU0NJSSk6IFVzZSBJU0RJR0lULgoKMjAwMC0wMS0xNCAgTmF0aGFuIFNpZHdlbGwgIDxzaWR3ZWxsQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjb25maWcuaW46IFJlYnVpbHQgZm9yIDIwMDAtMDEtMTMgY2hhbmdlIHRvIGFjY29uZmlnLmguCgoyMDAwLTAxLTE0ICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBwZHAxMS1wcm90b3MuaDogTmV3IGZpbGUuCgoJKiBwZHAxMS5jOiBJbmNsdWRlIHRtX3AuaC4gIEFkZCBzdGF0aWMgcHJvdG90eXBlcy4gIEZpeCBjb21waWxlCgl0aW1lIHdhcm5pbmdzLgoKCSogcGRwMTEuaDogTW92ZSBwcm90b3R5cGVzIHRvIHBkcDExLXByb3Rvcy5oLiAgRml4IGNvbXBpbGUgdGltZQoJd2FybmluZ3MuCgoJKiBwZHAxMS5tZDogTGlrZXdpc2UuCgoJKiAyYnNkLmg6IExpa2V3aXNlLgoKMjAwMC0wMS0xNCAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogbW4xMDMwMC1wcm90b3MuaDogTmV3IGZpbGUuCgoJKiBtbjEwMzAwLmM6IEluY2x1ZGUgdG1fcC5oLiAgQWRkIHN0YXRpYyBwcm90b3R5cGVzLiAgRml4IGNvbXBpbGUKCXRpbWUgd2FybmluZ3MuCgoJKiBtbjEwMzAwLmg6IE1vdmUgcHJvdG90eXBlcyB0byBtbjEwMzAwLXByb3Rvcy5oLiAgRml4IGNvbXBpbGUgdGltZQoJd2FybmluZ3MuCgoJKiBtbjEwMzAwLm1kOiBMaWtld2lzZS4KCjIwMDAtMDEtMTQgIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIG1uMTAyMDAtcHJvdG9zLmg6IE5ldyBmaWxlLgoKCSogbW4xMDIwMC5jOiBJbmNsdWRlIHRtX3AuaC4gIEFkZCBzdGF0aWMgcHJvdG90eXBlcy4gIEZpeCBjb21waWxlCgl0aW1lIHdhcm5pbmdzLgoKCSogbW4xMDIwMC5oOiBNb3ZlIHByb3RvdHlwZXMgdG8gbW4xMDIwMC1wcm90b3MuaC4gIEZpeCBjb21waWxlIHRpbWUKCXdhcm5pbmdzLgoKCSogbW4xMDIwMC5tZDogTGlrZXdpc2UuCgoyMDAwLTAxLTE0ICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBoODMwMC1wcm90b3MuaDogTmV3IGZpbGUuCgoJKiBoODMwMC5jOiBJbmNsdWRlIHRtX3AuaC4gIEFkZCBzdGF0aWMgcHJvdG90eXBlcy4gIEZpeCBjb21waWxlCgl0aW1lIHdhcm5pbmdzLgoKCSogaDgzMDAuaDogTW92ZSBwcm90b3R5cGVzIHRvIGg4MzAwLXByb3Rvcy5oLiAgRml4IGNvbXBpbGUgdGltZQoJd2FybmluZ3MuCgoJKiBoODMwMC5tZDogTGlrZXdpc2UuCgoyMDAwLTAxLTE0ICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiB2YXJhc20uYyAoYXNtX291dHB1dF9ic3MpOiBNYXJrIHBhcmFtZXRlcnMgd2l0aCBBVFRSSUJVVEVfVU5VU0VELgoJKGFzbV9lbWl0X3VuaW5pdGlhbGlzZWQpOiBMaWtld2lzZS4KCjIwMDAtMDEtMTMgIEdhdmluIFJvbWlnLUtvY2ggIDxnYXZpbkBjeWdudXMuY29tPgoKCSogY29uZmlnL21pcHMvbWlwcy5oIChJU0FfSEFTX0lOVF9DT05ETU9WRSk6IE5ldy4KCSogY29uZmlnL21pcHMvbWlwcy5tZDogVXNlIElTQV9IQVNfSU5UX0NPTkRNT1ZFLgoKMjAwMC0wMS0xNCAgQ2xpbnRvbiBQb3BldHogIDxjcG9wZXR6QGN5Z251cy5jb20+CgoJKiBjb25maWcvbWlwcy9taXBzLmMgKG92ZXJyaWRlX29wdGlvbnMpOiBEb24ndCB0dXJuIG9uIGV4dHJhCglhbGlnbm1lbnQgZm9yIG1pcHMxNi4KCjIwMDAtMDEtMTQgIENsaW50b24gUG9wZXR6ICA8Y3BvcGV0ekBjeWdudXMuY29tPgoKCSogY29uZmlnL21pcHMvbWlwcy5jIChtaXBzX3ZhX2FyZyk6IEZpeCBmcHJ2IGZvciB0aGUgMzIgYml0CgllYWJpLCBhbmQgbWFrZSBzdXJlIHF1ZXVlZCBQT1NUSU5DUkVNRU5UIHJ0bCBpcyBlbWl0dGVkIGF0Cgl0aGUgcmlnaHQgcG9pbnQuCgoyMDAwLTAxLTE0ICBDbGludG9uIFBvcGV0eiAgPGNwb3BldHpAY3lnbnVzLmNvbT4KCgkqIGJ1aWx0aW5zLmMgKFBBRF9WQVJBUkdTX0RPV04pOiBEZWZpbmUuCgkoc3RkX2V4cGFuZF9idWlsdGluX3ZhX2FyZyk6IFVzZSB0aGUgYWJvdmUgbWFjcm8uCgkqIGNvbmZpZy9taXBzL21pcHMuaCAoUEFEX1ZBUkFSR1NfRE9XTik6IERlZmluZS4KCSogdG0udGV4aSAoUmVnaXN0ZXIgQXJndW1lbnRzKTogRG9jdW1lbnQgdGhlIGFib3ZlIG1hY3JvLgoKMjAwMC0wMS0xNCAgTmljayBDbGlmdG9uICA8bmlja2NAY3lnbnVzLmNvbT4KCgkqIGVtaXQtcnRsLmMgKGVtaXRfaW5zbik6IElmIGNoZWNraW5nIGlzIGVuYWJsZWQsIG1ha2Ugc3VyZQoJdGhhdCB0aGlzIGZ1bmN0aW9uIGhhcyBub3QgYmVlbiB1c2VkIHRvIGVtaXQgYSBqdW1wCglpbnN0cnVjdGlvbi4KCgkqIGp1bXAuYyAocmV0dXJuX2p1bXBfMSk6IENvcGUgd2l0aCBiZWluZyBwYXNzZWQgYSBudWxsIHJ0eC4KCjIwMDAtMDEtMTQgIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIGVoLWNvbW1vbi5oOiBQUk9UTyAtPiBQQVJBTVMuCgkqIGVtaXQtcnRsLmM6IExpa2V3aXNlLgoJKiBlcnJvcnMuYzogTGlrZXdpc2UuCgkqIGVycm9ycy5oOiBMaWtld2lzZS4KCSogZXhjZXB0LmM6IExpa2V3aXNlLgoJKiBleGNlcHQuaDogTGlrZXdpc2UuCgkqIGV4cGxvdy5jOiBMaWtld2lzZS4KCSogZXhwbWVkLmM6IExpa2V3aXNlLgoJKiBleHByLmM6IExpa2V3aXNlLgoJKiBleHByLmg6IExpa2V3aXNlLgoJKiBmaW5hbC5jOiBMaWtld2lzZS4KCSogZml4LWhlYWRlci5jOiBMaWtld2lzZS4KCSogZmxvdy5jOiBMaWtld2lzZS4KCSogZm9sZC1jb25zdC5jOiBMaWtld2lzZS4KCSogZnVuY3Rpb24uYzogTGlrZXdpc2UuCgkqIGZ1bmN0aW9uLmg6IExpa2V3aXNlLgoJKiBnY2MuYzogTGlrZXdpc2UuCgkqIGdjb3YtaW8uaDogTGlrZXdpc2UuCgkqIGdjb3YuYzogTGlrZXdpc2UuCgkqIGdjc2UuYzogTGlrZXdpc2UuCgoyMDAwLTAxLTE0ICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBzaC1wcm90b3MuaDogTmV3IGZpbGUuCgoJKiBzaC5jOiBJbmNsdWRlIGluc24tY29uZmlnLmgsIHRvcGxldi5oLCByZWNvZy5oIGFuZCB0bV9wLmguCglBZGQgc3RhdGljIHByb3RvdHlwZXMuICBGaXggY29tcGlsZSB0aW1lIHdhcm5pbmdzLgoKCSogc2guaDogTW92ZSBwcm90b3R5cGVzIHRvIHNoLXByb3Rvcy5oLiAgRml4IGNvbXBpbGUgdGltZSB3YXJuaW5ncy4KCSogc2gubWQ6IExpa2V3aXNlLgoJKiBlbGYuaDogTGlrZXdpc2UuCgoyMDAwLTAxLTE0ICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBhcmMtcHJvdG9zLmg6IE5ldyBmaWxlLgoKCSogYXJjLmM6IEluY2x1ZGUgdG1fcC5oLiAgQWRkIHN0YXRpYyBwcm90b3R5cGVzLiAgRml4IGNvbXBpbGUKCXRpbWUgd2FybmluZ3MuCgoJKiBhcmMuaDogTW92ZSBwcm90b3R5cGVzIHRvIGFyYy1wcm90b3MuaC4gIEZpeCBjb21waWxlIHRpbWUKCXdhcm5pbmdzLgoKCSogYXJjLm1kOiBMaWtld2lzZS4KCjIwMDAtMDEtMTQgIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIGRzcDE2eHgtcHJvdG9zLmg6IE5ldyBmaWxlLgoKCSogZHNwMTZ4eC5jOiBJbmNsdWRlIHRtX3AuaC4gIEFkZCBzdGF0aWMgcHJvdG90eXBlcy4gIEZpeCBjb21waWxlCgl0aW1lIHdhcm5pbmdzLgoKCSogZHNwMTZ4eC5oOiBNb3ZlIHByb3RvdHlwZXMgdG8gZHNwMTZ4eC1wcm90b3MuaC4gIEZpeCBjb21waWxlIHRpbWUKCXdhcm5pbmdzLgoKCSogZHNwMTZ4eC5tZDogTGlrZXdpc2UuCgoyMDAwLTAxLTE0ICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBjb252ZXgtcHJvdG9zLmg6IE5ldyBmaWxlLgoKCSogY29udmV4LmM6IEluY2x1ZGUgdG1fcC5oLiAgQWRkIHN0YXRpYyBwcm90b3R5cGVzLiAgRml4IGNvbXBpbGUKCXRpbWUgd2FybmluZ3MuCgoJKiBjb252ZXguaDogTW92ZSBwcm90b3R5cGVzIHRvIGNvbnZleC1wcm90b3MuaC4gIEZpeCBjb21waWxlIHRpbWUKCXdhcm5pbmdzLgoKMjAwMC0wMS0xNCAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogZWx4c2ktcHJvdG9zLmg6IE5ldyBmaWxlLgoKCSogZWx4c2kuYzogSW5jbHVkZSB0bV9wLmguICBBZGQgc3RhdGljIHByb3RvdHlwZXMuICBGaXggY29tcGlsZQoJdGltZSB3YXJuaW5ncy4KCgkqIGVseHNpLmg6IE1vdmUgcHJvdG90eXBlcyB0byBlbHhzaS1wcm90b3MuaC4gIEZpeCBjb21waWxlIHRpbWUKCXdhcm5pbmdzLgoKCSogZWx4c2kubWQ6IExpa2V3aXNlLgoKMjAwMC0wMS0xNCAgQ2xpbnRvbiBQb3BldHogIDxjcG9wZXR6QGN5Z251cy5jb20+CgoJKiBjb25maWcvbWlwcy9taXBzLmggKFJFR0lTVEVSX01PVkVfQ09TVCk6IFJlbW92ZSByZWR1bmRhbnQKCWNhc2UgZm9yIG1vdmluZyBmcm9tIEhJL0xPL0hJX0xPX1JFRy4gIFRoaXMgbWFrZXMgdGhlIGJlaGF2aW9yCgltYXRjaCB0aGUgY29tbWVudCBmb3IgTUlQUzE2LgoKRnJpIEphbiAxNCAwMDoyODowNiAyMDAwICBKZWZmcmV5IEEgTGF3ICAobGF3QGN5Z251cy5jb20pCgoJKiBmbG93LmMgKHNwbGl0X2VkZ2UpOiBEbyBub3QgY2FsbCBzZXRfYmxvY2tfZm9yX2luc24gaWYgd2UKCWRvIG5vdCBoYXZlIGEgYmFzaWNfYmxvY2tfZm9yX2luc24gc3RydWN0dXJlLgoKCSogZnIzMC5oIChUUkFNUE9MSU5FX1RFTVBMQVRFKTogVXNlIG5vcHMgdG8gZW5zdXJlIHRoZSBzdGF0aWMgY2hhaW4KCWFuZCBkZXN0aW5hdGlvbiBmdW5jdGlvbnMgYXJlIDMyYml0IGFsaWduZWQgd2l0aGluIHRoZSB0cmFtcG9saW5lLgoJKFRSQU1QT0xJTkVfU0laRSwgSU5JVElBTElaRV9UUkFNUE9MSU5FKTogQ29ycmVzcG9uZGluZyBjaGFuZ2VzLgoJKFRSQU1QT0xJTkVfQUxJR05NRU5UKTogRGVmaW5lLgoKCSogY3NlLmMgKGNzZV9pbnNuKTogV2hlbiBjaGFuZ2luZyAoc2V0IChwYykgKHJlZykpIHRvCgkoc2V0IChwYykgKGxhYmVsX3JlZikpLCB2ZXJpZnkgdGhlIGNoYW5nZSBjcmVhdGVzIGEgdmFsaWQgaW5zbi4KCgkqIGZyMzAuYyAoY2FsbF9vcGVyYW5kKTogVGlnaHRlbiBhbmQgcmV3b3JrIHRvIG1hdGNoIHJ1bGVzIGZvcgoJY2FsbCBSVEwgZXhwcmVzc2lvbnMuCgkqIGZyMzAuaCAoUFJFRElDQVRFX0NPREVTLCBjYXNlIGNhbGxfb3BlcmFuZCk6IE9ubHkgYWxsb3cgTUVNcy4KCSogZnIzMC5tZCAoY2FsbCBwYXR0ZXJucyk6IEltcHJvdmUgY29uc3RyYWludHMuCgpUaHUgSmFuIDEzIDIzOjQ0OjAzIDIwMDAgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgoJKiBmcjMwLmMgKGZyMzBfZXhwYW5kX2VwaWxvZ3VlKTogUmV2ZXJ0IGxhc3QgY2hhbmdlLgoJVXNlIGVtaXRfanVtcF9pbnNuIGZvciB0aGUgcmV0dXJuIGluc24uCgpUaHUgSmFuIDEzIDE0OjQ2OjAzIDIwMDAgIEphc29uIEVja2hhcmR0ICA8amxlQGN5Z251cy5jb20+CgkJCSAgU3RhbiBDb3ggIDxzY294QGN5Z251cy5jb20+CgoJKiBwcmVkaWN0LmM6IE5ldyBmaWxlLiBQcmVsaW1pbmFyeSBpbmZyYXN0cnVjdHVyZSB3b3JrIGZvciBzdGF0aWMKCWJyYW5jaCBwcmVkaWN0aW9uIGFuZCBiYXNpYyBibG9jayByZW9yZGVyaW5nLgoJKiBiYXNpYy1ibG9jay5oOiBBZGQgcHJvdG90eXBlIGZvciBlc3RpbWF0ZV9wcm9iYWJpbGl0eS4KCSogTWFrZWZpbGUuaW46IEFkZCBydWxlcyBmb3IgcHJlZGljdC5vLgoKMjAwMC0wMS0xMyAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogZml4aW5jbHVkZXMgKHZhX2xpc3QpOiBVc2UgX19ub3RfdmFfbGlzdF9fIGZvciB0aGUgZHVtbXkuCgkqIGZpeGluYy8qOiBMaWtld2lzZS4KCjIwMDAtMDEtMTMgIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIGNjY3AuYzogUFJPVE8gLT4gUEFSQU1TLgoJKiBjZXhwLnk6IExpa2V3aXNlLgoJKiBjb2xsZWN0Mi5jOiBMaWtld2lzZS4KCSogY29tYmluZS5jOiBMaWtld2lzZS4KCSogY29udmVydC5oOiBMaWtld2lzZS4KCSogY3NlLmM6IExpa2V3aXNlLgoJKiBkYnhvdXQuYzogTGlrZXdpc2UuCgkqIGRieG91dC5oOiBMaWtld2lzZS4KCSogZGlhZ25vc3RpYy5jOiBMaWtld2lzZS4KCSogZG9wcmludC5jOiBMaWtld2lzZS4KCSogZHdhcmYyb3V0LmM6IExpa2V3aXNlLgoJKiBkd2FyZjJvdXQuaDogTGlrZXdpc2UuCgkqIGR3YXJmb3V0LmM6IExpa2V3aXNlLgoJKiBkd2FyZm91dC5oOiBMaWtld2lzZS4KCSogZHluLXN0cmluZy5oOiBMaWtld2lzZS4KCjIwMDAtMDEtMTMgIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIGNhbGxzLmMgKGVtaXRfY2FsbF8xKTogV3JhcCB2YXJhaWJsZSBgc3RydWN0X3ZhbHVlX3NpemVfcnR4JyBpbgoJbWFjcm8gY29uZGl0aW9uYWxzIGd1YXJkaW5nIHVzZS4KCgkqIGR3YXJmMm91dC5jOiBJbmNsdWRlICJ0bV9wLmgiLgoKCSogZnVuY3Rpb24uYyAobG9jYXRlX2FuZF9wYWRfcGFybSk6IE1hcmsgcGFyYW1ldGVyIHdpdGgKCUFUVFJJQlVURV9VTlVTRUQuCgkoZXhwYW5kX2Z1bmN0aW9uX2VuZCk6IExpa2V3aXNlIGZvciB2YXJpYWJsZSBgY29udGV4dCcuCgoJKiByZW9yZy5jIChtYWtlX3JldHVybl9pbnNucyk6IFdyYXAgcHJvdG90eXBlIGluIG1hY3JvIEhBVkVfcmV0dXJuLgoKMjAwMC0wMS0xMyAgTmljayBDbGlmdG9uICA8bmlja2NAY3lnbnVzLmNvbT4KCgkqIGNvbmZpZy9mcjMwL2ZyMzAuYyAoZnIzMF9leHBhbmRfZXBpbG9ndWUpOiBFbWl0IFVTRXMgb2YgcG9wJ2VkCglyZWdpc3RlciB0byBwcmV2ZW50IGNvbXBpbGUgdGltZSB3YXJuaW5ncy4KCjIwMDAtMDEtMTMgIFphY2sgV2VpbmJlcmcgIDx6YWNrQHdvbGVyeS5jdW1iLm9yZz4KCgkqIGxvbmdsb25nLmggW2kzODZdICh1ZGl2X3Fybm5kKTogUmVuYW1lICdkJyBhcmd1bWVudCB0byAnZHYnCgl0byBhdm9pZCAtV3RyYWRpdGlvbmFsIHdhcm5pbmcuCgoyMDAwLTAxLTEzICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiAxNzUwYS1wcm90b3MuaDogTmV3IGZpbGUuCgoJKiAxNzUwYS5jOiBJbmNsdWRlIHRtX3AuaC4gIEFkZCBzdGF0aWMgcHJvdG90eXBlcy4gIEZpeCBjb21waWxlCgl0aW1lIHdhcm5pbmdzLgoKCSogMTc1MGEuaDogTW92ZSBwcm90b3R5cGVzIHRvIDE3NTBhLXByb3Rvcy5oLiAgRml4IGNvbXBpbGUgdGltZQoJd2FybmluZ3MuCgoJKiAxNzUwYS5tZDogTGlrZXdpc2UuCgoyMDAwLTAxLTEzICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBhMjlrLXByb3Rvcy5oOiBOZXcgZmlsZS4KCgkqIGEyOWsuYzogSW5jbHVkZSB0bV9wLmguICBBZGQgc3RhdGljIHByb3RvdHlwZXMuICBGaXggY29tcGlsZQoJdGltZSB3YXJuaW5ncy4KCgkqIGEyOWsuaDogTW92ZSBwcm90b3R5cGVzIHRvIGEyOWstcHJvdG9zLmguICBGaXggY29tcGlsZSB0aW1lCgl3YXJuaW5ncy4KCjIwMDAtMDEtMTMgIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIGNsaXBwZXItcHJvdG9zLmg6IE5ldyBmaWxlLgoKCSogY2xpcHBlci5jOiBJbmNsdWRlIHRtX3AuaC4gIEFkZCBzdGF0aWMgcHJvdG90eXBlcy4gIEZpeCBjb21waWxlCgl0aW1lIHdhcm5pbmdzLgoKCSogY2xpcHBlci5oOiBNb3ZlIHByb3RvdHlwZXMgdG8gY2xpcHBlci1wcm90b3MuaC4gIEZpeCBjb21waWxlIHRpbWUKCXdhcm5pbmdzLgoKVGh1IEphbiAxMyAxNjowMzowNiAyMDAwICBKIm9ybiBSZW5uZWNrZSA8YW15bGFhckBjeWdudXMuY28udWs+CgoJKiByZWxvYWQxLmMgKHJlbG9hZF9jb21iaW5lX25vdGVfc3RvcmUpOiBVc2UgSEFSRF9SRUdOT19OUkVHUy4KCjIwMDAtMDEtMTMgIE5hdGhhbiBTaWR3ZWxsICA8c2lkd2VsbEBjb2Rlc291cmNlcnkuY29tPgoKCSogY29uZmlndXJlLmluICgtLWVuYWJsZS1uZXctZ3h4LWFiaSk6IE5ldyBvcHRpb24uCgkqIGFjY29uZmlnLmggKEVOQUJMRV9ORVdfR1hYX0FCSSk6IE5ldyBkZWZpbmUuCgkqIE1ha2VmaWxlLmluIChHWFhfQUJJX0ZMQUcpOiBOZXcgdmFyaWFibGUuCgkqIGNvbmZpZ3VyZTogUmVnZW5lcmF0ZS4KCjIwMDAtMDEtMTMgIE1pY2hhZWwgSGF5ZXMgIDxtLmhheWVzQGVsZWMuY2FudGVyYnVyeS5hYy5uej4KCgkqIHN0b3ItbGF5b3V0LmMgKGxheW91dF90eXBlKTogVXNlIEZPUkNFX1NUUlVDVF9CTEsuCgkqIHRtLnRleGkgKEZPUkNFX1NUUlVDVF9CTEspOiBEb2N1bWVudC4KCSogY29uZmlnL2M0eC9jNHguaCAoRk9SQ0VfU1RSVUNUX0JMSyk6IE5ldyBtYWNyby4KCldlZCBKYW4gMTIgMjM6MTI6NDcgMjAwMCAgSGFucy1QZXRlciBOaWxzc29uICA8aHBAYXhpcy5jb20+CgoJKiBjb25maWcvbnMzMmsvbnMzMmsubWQ6IFJldmVydCBKYW4gOSBjaGFuZ2UuCgoJKiBnZW5yZWNvZy5jIChtYXliZV9ib3RoX3RydWVfMik6IERvIG5vdCBjb21wYXJlIGEgcHJlZGljYXRlLXRlc3QKCXRvIGEgbW9kZS10ZXN0LCBpZiB0aGUgcHJlZGljYXRlIGlzIGFkZHJlc3Nfb3BlcmFuZC4KCldlZCBKYW4gMTIgMjI6MzQ6MDAgMjAwMCAgSmVmZnJleSBBIExhdyAgKGxhd0BjeWdudXMuY29tKQoKCSogY29tYmluZS5jIChpZl90aGVuX2Vsc2VfY29uZCk6IEJlIGNhcmVmdWwgYWJvdXQgd2hhdCBraW5kcwoJb2YgUlRMIGV4cHJlc3Npb25zIGFyZSBwYXNzZWQgdG8gb3BlcmFuZF9zdWJ3b3JkLgoKCSogZmxvdy5jIChzcGxpdF9lZGdlKTogSWYgd2UgaGF2ZSB0byBpbnNlcnQgYSBuZXcganVtcCwgbWFrZQoJc3VyZSB0byBhc3NvY2lhdGUgaXQgd2l0aCBhIGJhc2ljIGJsb2NrLgoKCSogZmxvdy5jIChjb21taXRfb25lX2VkZ2VfaW5zZXJ0aW9uKTogQSBibG9jayB3aXRoIG9uZSBzdWNjZXNzb3IKCWNhbiBlbmQgaW4gYSBKVU1QX0lOU04gdGhhdCBpcyBub3QgYSBzaW1wbGVqdW1wLgoKMjAwMC0wMS0xMiAgUm9iZXJ0IExpcGUgIDxyb2JlcnRsQHNjby5jb20+CgoJKiBpMzg2L3NjbzUuaCAoSU5JVF9TRUNUSU9OX0FTTV9PUF9DT0ZGKTogUmVuYW1lIHNlY3Rpb24gdG8gImN0b3IiLgoJKEJVSUxEX1ZBX0xJU1RfVFlQRSk6IERlZmluZS4KCShFSF9GUkFNRV9TRUNUSU9OX0FTTV9PUCk6IEV4cGxpY3RseSBkZWZpbmUgdG8gYmV0dGVyIGludGVyYWN0Cgl3aXRoIGNydHN0dWZmLmMuCgoyMDAwLTAxLTEyICBKYXNvbiBNZXJyaWxsICA8amFzb25AY2FzZXkuY3lnbnVzLmNvbT4KCgkqIGNjY3AuYyAoZG9fcHJhZ21hKTogQWRkIGNhc3QgdG8gKGNoYXIgKikuCgoyMDAwLTAxLTEyICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEBjeWdudXMuY29tPgoJICAgIEZyZWQgRmlzaCAgPGZuZkBiZS5jb20+CgkgICAgSmFzb24gTWVycmlsbCAgPGphc29uQGN5Z251cy5jb20+CgoJKiBjb25maWd1cmUuaW4gKGk/ODYtKi1iZW9ze3BlLGVsZix9Kik6IFJlY29nbml6ZS4KCSogaTM4Ni90LWJlb3MsIGkzODYveC1iZW9zLCBpMzg2L3htLWJlb3MuaDogTmV3IGZpbGVzLgoJKiBpMzg2L2Jlb3MtZWxmLmgsIGkzODYvYmVvcy1wZS5oOiBOZXcgZmlsZXMuCgoJKiBNYWtlZmlsZS5pbiAoQ1JPU1NfU1lTVEVNX0hFQURFUl9ESVIpOiBOZXcuCgkqIGNyb3NzLW1ha2UgKFNZU1RFTV9IRUFERVJfRElSKTogRGVmaW5lIHVzaW5nCglDUk9TU19TWVNURU1fSEVBREVSX0RJUi4KCgkqIGdjYy5jIChMSUJSQVJZX1BBVEhfRU5WKTogUHJvdmlkZSBkZWZhdWx0LgoJKHByb2Nlc3NfY29tbWFuZCk6IFVzZSBpdC4KCShtYWluKTogTGlrZXdpc2UuICBLaWxsIHRyYWlsaW5nID0gZnJvbSBlbnYgdmFycy4KCShidWlsZF9zZWFyY2hfbGlzdCk6IFB1dCBpdCBiYWNrLgoJKiBjb2xsZWN0Mi5jIChtYWluKTogVXNlIExJQlJBUllfUEFUSF9FTlYuCgoJKiBjb25maWd1cmUuaW4gKEdDQ19ORUVEX0RFQ0xBUkFUSU9OUyk6IEFkZCBlbnZpcm9uLgoJKiB0b3BsZXYuYzogVXNlIE5FRURfREVDTEFSQVRJT05fRU5WSVJPTi4KCgkqIHRtLnRleGkgKEZyYW1lIExheW91dCk6IERvY3VtZW50IFNNQUxMX1NUQUNLLgoJKiBjLWNvbW1vbi5jIChjX2NvbW1vbl9ub2Rlc19hbmRfYnVpbHRpbnMpOiBDaGVjayBpdC4KCgkqIHN5c3RlbS5oOiBVbmRlZiBhbGxvY2EgYWZ0ZXIgaW5jbHVkaW5nIGdsaWJjJ3MgPHN0ZGxpYi5oPiwKCWlmIFVTRV9DX0FMTE9DQSBpcyBkZWZpbmVkLgoKCSogZ2NjLmMgKHNldF9pbnB1dCk6IE5ldyBmbi4KCShtYWluKTogQWZ0ZXIgYWxsIGlucHV0IGZpbGVzIGFyZSBjb21waWxlZCwgcmVzZXQgdGhlIGlucHV0IGZpbGUKCWluZm8gdG8gdGhlIGZpcnN0LgoKCSogYWNsb2NhbC5tNCAocmluZGV4LCBpbmRleCk6IElmIGFscmVhZHkgZGVmaW5lZCwgZG9uJ3QgYXR0ZW1wdAoJdG8gcmVkZWZpbmUuCgoJKiBnaW5jbHVkZS92YXJhcmdzLmg6IChfX3ZhX2xpc3RfXyk6IERlZmluZSBpZm5kZWYuCgkqIGdpbmNsdWRlL3N0ZGFyZy5oOiBMaWtld2lzZS4KCgkqIGdpbmNsdWRlL3N0ZGRlZi5oIChfX1dDSEFSX1RZUEVfXykgW0JFT1NdOiBVc2UgaW50CglpbnN0ZWFkIG9mIHVuc2lnbmVkIGNoYXIuCgoJKiBoYXNoLmggKHRydWUsIGZhbHNlLCBib29sZWFuKTogVW5kZWYgYmVmb3JlIGVudW0uCgoJKiBleHBtZWQuYyAoY2hvb3NlX211bHRpcGxpZXIpOiBDYXN0ICZtaGlnaF9sbyBhbmQgJm1oaWdoX2hpIHRvIGJlCglwcm9wZXIgdHlwZSBvZiAiSE9TVF9XSURFX0lOVCAqIiwgcmF0aGVyIHRoYW4gdGhlaXIgbmF0dXJhbCB0eXBlIG9mCgkidW5zaWduZWQgSE9TVF9XSURFX0lOVCAqIi4KCjIwMDAtMDEtMTIgIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIHN2cjMuaCAoQVNNX0ZJTEVfU1RBUlQpOiBXcmFwIGlmLWNsYXVzZSBpbiBzcXVpZ2x5IGJyYWNrZXRzLgoKCSogcmVjb2cuYyAobWVtb3J5X2FkZHJlc3NfcCk6IE1hcmsgcGFyYW1ldGVyIHdpdGggQVRUUklCVVRFX1VOVVNFRC4KCgkqIHJlZ2NsYXNzLmMgKGNob29zZV9oYXJkX3JlZ19tb2RlKTogTGlrZXdpc2UuCgoJKiByZWxvYWQuYyAoZmluZF92YWxpZF9jbGFzcywgc3RyaWN0X21lbW9yeV9hZGRyZXNzX3ApOiBMaWtld2lzZS4KCgkqIHJlb3JnLmMgKG9wdGltaXplX3NraXApOiBXcmFwIHByb3RvdHlwZSBpbiBtYWNybyBjb25kaXRpb25hbHMuCgoyMDAwLTAxLTEyICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBjLWNvbW1vbi5jOiBQUk9UTyAtPiBQQVJBTVMuCgkqIGMtY29tbW9uLmg6IExpa2V3aXNlLgoJKiBjLWRlY2wuYzogTGlrZXdpc2UuCgkqIGMtaXRlcmF0ZS5jOiBMaWtld2lzZS4KCSogYy1sYW5nLmM6IExpa2V3aXNlLgoJKiBjLWxleC5jOiBMaWtld2lzZS4KCSogYy1sZXguaDogTGlrZXdpc2UuCgkqIGMtcGFyc2UuaW46IExpa2V3aXNlLgoJKiBjLXByYWdtYS5jOiBMaWtld2lzZS4KCSogYy1wcmFnbWEuaDogTGlrZXdpc2UuCgkqIGMtdHJlZS5oOiBMaWtld2lzZS4KCSogYy10eXBlY2suYzogTGlrZXdpc2UuCgkqIG9iamMvb2JqYy1hY3QuYzogTGlrZXdpc2UuCgkqIG9iamMvb2JqYy1hY3QuaDogTGlrZXdpc2UuCgoyMDAwLTAxLTEyICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBtODhrLXByb3Rvcy5oOiBOZXcgZmlsZS4KCgkqIG04OGsuYzogSW5jbHVkZSB0bV9wLmguICBBZGQgc3RhdGljIHByb3RvdHlwZXMuICBGaXggY29tcGlsZQoJdGltZSB3YXJuaW5ncy4KCgkqIG04OGsuaDogTW92ZSBwcm90b3R5cGVzIHRvIG04OGstcHJvdG9zLmguICBGaXggY29tcGlsZSB0aW1lIHdhcm5pbmdzLgoKCSogbTg4ay5tZDogTGlrZXdpc2UuCgoJKiB0ZWtYRDg4Lmg6IExpa2V3aXNlLgoKMjAwMC0wMS0xMiAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogbTY4ay1wcm90b3MuaDogTmV3IGZpbGUuCgoJKiBtNjhrLmM6IEluY2x1ZGUgdG1fcC5oLiAgQWRkIHN0YXRpYyBwcm90b3R5cGVzLiAgRml4IGNvbXBpbGUKCXRpbWUgd2FybmluZ3MuCgoJKiBtNjhrLmg6IE1vdmUgcHJvdG90eXBlcyB0byBtNjhrLXByb3Rvcy5oLiAgRml4IGNvbXBpbGUgdGltZSB3YXJuaW5ncy4KCgkqIG1vdDMzMDAuaDogTGlrZXdpc2UuCgoyMDAwLTAxLTEyICBSaWNoYXJkIEVhcm5zaGF3IDxyZWFybnNoYUBhcm0uY29tPgoKCSogaGFpZmEtc2NoZWQuYyAoc3BsaXRfZWRnZXMpOiBQYXNzIGVkZ2VzZXRfc2l6ZSBhcyBzZWNvbmQgYXJnIHRvCglleHRyYWN0X2JpdGxzdC4KCShleHRyYWN0X2JpdGxpc3QpOiBEZWNsYXJlIGJpdGxlbi4KCjIwMDAtMDEtMTIgIFphY2sgV2VpbmJlcmcgIDx6YWNrQHdvbGVyeS5jdW1iLm9yZwoKCSogY2NjcC5jOiBBY2NlcHQgYW5kIGlnbm9yZSAtbGFuZy1mb3J0cmFuLgoKCSogYy10eXBlY2suYyAoYnVpbGRfY19jYXN0KTogSXNzdWUgLVdjYXN0LXF1YWwgd2FybmluZ3MgaWYgdGhlCglxdWFsaWZpZXJzIGRvbid0IG1hdGNoIGF0IGFueSBsZXZlbCBvZiBwb2ludGVybmVzcy4KCjIwMDAtMDEtMTIgIFJvYmVydCBMaXBlICA8cm9iZXJ0bEBzY28uY29tPgoKCSogaTM4Ni9zeXN2NS5oIChDUFBfU1BFQywgTElCU1BFQyk6IEFkZCAtcHRocmVhZFQuCgoyMDAwLTAxLTEyICBCZXJuZCBTY2htaWR0ICA8YmVybmRzQGN5Z251cy5jby51az4KCgkqIHJlbG9hZDEuYyAocmVsb2FkX3JlZ191bmF2YWlsYWJsZSk6IE5ldyBzdGF0aWMgdmFyaWFibGUuCgkocmVsb2FkX3JlZ19mcmVlX3ApOiBUZXN0IGl0LgoJKHJlbG9hZF9yZWdfZnJlZV9mb3JfdmFsdWVfcCk6IFRlc3QgaXQgaW5zdGVhZCBvZgoJcmVsb2FkX3JlZ191c2VkLgoJKGNob29zZV9yZWxvYWRfcmVnc19pbml0KTogQ29tcHV0ZSBpdC4KCldlZCBKYW4gMTIgMDM6MjQ6NDEgMjAwMCAgVG9zaGl5YXN1IE1vcml0YSAodG9zaGkubW9yaXRhQHNlZ2EuY29tKQoKCSogcmVvcmcuYyAoZmlsbF9zbG90c19mcm9tX3RocmVhZCk6IENoZWNrIG1vZGlmaWVkX2luX3AKCWJlZm9yZSByZXBsYWNpbmcuCgpXZWQgSmFuIDEyIDAzOjIwOjMxIDIwMDAgIEpvaG4gTWFyc2hhbGwgPGpvaG5fd19tYXJzaGFsbEBwYWxtLmNvbT4KCgkqIGdjYy50ZXhpIChGdW5kaW5nLCBHTlUvTGludXgsIENvcHlpbmcsIENvbnRyaWJ1dG9ycyk6IEZvcm1hdAoJdGhlc2Ugbm9kZXMgZXZlbiBpZiBJTlRFUk5BTFMgaXMgbm90IHNldC4KCldlZCBKYW4gMTIgMDk6Mzk6MjIgMjAwMCAgTmljayBCdXJyZXR0ICA8bmljay5idXJyZXR0QGJ0aW50ZXJuZXQuY29tPgoKCSogZ2NzZS5jIChkZWxldGVfbnVsbF9wb2ludGVyX2NoZWNrc18xKTogQ29wZSB3aGVuCglnZXRfY29uZGl0aW9uIGNhbm5vdCBkZXRlcm1pbmUgdGhlIGNvbmRpdGlvbi4KCjIwMDAtMDEtMTIgIEdhYnJpZWwgRG9zIFJlaXMgIDxnZHJAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIHRvcGxldi5oIChzZXRfbWVzc2FnZV9sZW5ndGgpOiBEZWNsYXJlLgoKCSogZGlhZ25vc3RpYy5jIChvYnN0YWNrX2NodW5rX2FsbG9jKTogRGVmaW5lIG1hY3JvLgoJKG9ic3RhY2tfY2h1bmtfZnJlZSk6IExpa2V3aXNlLgoJKHN0cnVjdCBvdXRwdXRfYnVmZmVyKTogTmV3IGRhdGEgc3RydWN0dXJlLgoJKHZtZXNzYWdlKTogUmVtb3ZlLgoJKG91dHB1dF9tYXhpbXVtX3dpZHRoKTogTmV3IHZhcmlhYmxlLgoJKGRvaW5nX2xpbmVfd3JhcHBpbmcsIHNldF9tZXNzYWdlX2xlbmd0aCwgaW5pdF9vdXRwdXRfYnVmZmVyLAoJZ2V0X291dHB1dF9wcmVmaXgsIG91dHB1dF9zcGFjZV9sZWZ0LCBlbWl0X291dHB1dF9wcmVmaXgsCglvdXRwdXRfbmV3bGluZSwgb3V0cHV0X2FwcGVuZCwgb3V0cHV0X3B1dHMsIGR1bXBfb3V0cHV0LAoJdmJ1aWxkX21lc3NhZ2Vfc3RyaW5nLCBidWlsZF9tZXNzYWdlX3N0cmluZywgYnVpbGRfbG9jYXRpb25fcHJlZml4LAoJdm91dHB1dF9ub3RpY2UsIG91dHB1dF9wcmludGYsIGxpbmVfd3JhcHBlcl9wcmludGYsCgl2bGluZV93cmFwcGVyX21lc3NhZ2Vfd2l0aF9sb2NhdGlvbik6ICBOZXcgZnVuY3Rpb25zLiBJbXBsZW1lbnQKCWF1dG9tYXRpYyBsaW5lIHdyYXBwaW5nLgoJKHZfbWVzc2FnZV93aXRoX2RlY2wpOiBNYWtlIGl0IGhhbmRsZSBhdXRvbWF0aWMgbGluZSB3cmFwcGluZy4KCSh2X2Vycm9yX3dpdGhfZmlsZV9hbmRfbGluZSk6IExpa2V3aXNlLgoJKHZfd2FybmluZ193aXRoX2ZpbGVfYW5kX2xpbmUpOiBMaWtld2lzZS4KCShhbm5vdW5jZV9mdW5jdGlvbik6IExpa2V3aXNlLgoJKGRlZmF1bHRfcHJpbnRfZXJyb3JfZnVuY3Rpb24pOiBMaWtld2lzZS4KCjIwMDAtMDEtMTEgMTY6MjQgLTA4MDAgIFphY2sgV2VpbmJlcmcgIDx6YWNrQHdvbGVyeS5jdW1iLm9yZz4KCgkqIGNwcGxpYi5oIChzdHJ1Y3QgY3BwX29wdGlvbnMpOiBDaGFuZ2UgbGFuZ19hc20gdG8gY2hhci4KCUFkZCBsYW5nX2ZvcnRyYW4uCgkqIGNwcGluaXQuYyAoYnVpbHRpbl9hcnJheSk6IFRha2Ugb3V0IF9fU1REQ19WRVJTSU9OX18sIGl0J3MKCWRvbmUgaW4gY3BwX2hhbmRsZV9vcHRpb24gbm93LgoJKGluaXRpYWxpemVfYnVpbHRpbnMpOiBUYWtlIG91dCBzcGVjaWFsIGNhc2UgY29kZSB1c2VkIG9ubHkgYnkKCV9fU1REQ19WRVJTSU9OX18uCgkoY3BwX2hhbmRsZV9vcHRpb24pOiBUdXJuIG9mZiB0cmlncmFwaHMgYW5kIHRyaWdyYXBoIHdhcm5pbmdzCglpZiAtdHJhZGl0aW9uYWwuICBSZWNvZ25pemUgLWxhbmctZm9ydHJhbiBhbmQgc2V0CglsYW5nX2ZvcnRyYW4sIGFsc28gdHVybiBvZmYgY3BsdXNwbHVzX2NvbW1lbnRzLgoJKHByaW50X2hlbHApOiBEb2N1bWVudCAtbGFuZy1mb3J0cmFuLgoJKiBjcHBsaWIuYyAoaGFuZGxlX2RpcmVjdGl2ZSk6IElnbm9yZSBgIyAxMjMgImZpbGUiJyBpZgoJbGFuZ19hc20uIElnbm9yZSBhbGwgZGlyZWN0aXZlcyBvdGhlciB0aGFuIGAjIDEyMyAiZmlsZSInIGlmCglDUFBfUFJFUFJPQ0VTU0VELgoJKGNwcF9nZXRfdG9rZW4pOiBJZiAtdHJhZGl0aW9uYWwsIGRvbid0IHJlY29nbml6ZSBkaXJlY3RpdmVzCgl1bmxlc3MgdGhlICMgaXMgaW4gY29sdW1uIDEuCgkocGFyc2Vfc3RyaW5nKTogSWYgbGFuZ19mb3J0cmFuIG9yIGxhbmdfYXNtLCBzaWxlbnRseQoJdGVybWluYXRlIHN0cmluZ3MgKCcnIG9yICIiKSBhdCBlbmQgb2YgbGluZS4KCVJlbW92ZSB1bm5lY2Vzc2FyeSBicmFjZXMuCgoyMDAwLTAxLTExICBBbGV4YW5kcmUgT2xpdmEgIDxvbGl2YUBsc2QuaWMudW5pY2FtcC5icj4KCSAgICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEBjeWdudXMuY29tPgoKCSogcmVzb3VyY2UuYyAobWFya19yZWZlcmVuY2VkX3Jlc291cmNlcyk6IE1hcmsgYSBzZXQgc3RyaWN0X2xvd19wYXJ0CglhcyB1c2VkLgoJKiBjb25maWcvaTM4Ni9pMzg2LmMgKGl4ODZfZXhwYW5kX3NldGNjKTogUmUtZW5hYmxlIGNsZWFyICsgc2V0CglzdHJpY3RfbG93X3BhcnQgd2hlbiBwb3NzaWJsZS4KCjIwMDAtMDEtMTEgIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIGFsaWFzLmM6IFBST1RPIC0+IFBBUkFNUy4KCSogYmFzaWMtYmxvY2suaDogTGlrZXdpc2UuCgkqIGJpdG1hcC5jOiBMaWtld2lzZS4KCSogYml0bWFwLmg6IExpa2V3aXNlLgoJKiBidWlsdGlucy5jOiBMaWtld2lzZS4KCSogYy1hdXgtaW5mby5jOiBMaWtld2lzZS4KCSogY2FsbGVyLXNhdmUuYzogTGlrZXdpc2UuCgkqIGNhbGxzLmM6IExpa2V3aXNlLgoKMjAwMC0wMS0xMSAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogTWFrZWZpbGUuaW4gKHRvcGxldi5vKTogRGVwZW5kIG9uIHJlZ3MuaC4KCgkqIG91dHB1dC5oICh0ZGVzY19zZWN0aW9uKTogUHJvdG90eXBlLgoKCSogcmVnY2xhc3MuYyAoY29weV9jb3N0KTogTWFyayBwYXJhbWV0ZXJzIHdpdGggQVRUUklCVVRFX1VOVVNFRC4KCgkqIHNkYm91dC5jOiBJbmNsdWRlICJ0bV9wLmgiLgoKCSogdG9wbGV2LmM6IEluY2x1ZGUgInJlZ3MuaCIuCgpUdWUgSmFuIDExIDExOjM3OjU4IDIwMDAgIE1pa2UgU3R1bXAgIDxtcnNAd3JzLmNvbT4KCgkqIHVucm9sbC5jICh1bnJvbGxfbG9vcCk6IEFkZCBFSCBzdXBwb3J0LgoKMjAwMC0wMS0xMSAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogcGEtcHJvdG9zLmg6IE5ldyBmaWxlLgoKCSogcGEuYzogSW5jbHVkZSByZWNvZy5oIGFuZCB0bV9wLmguCgkoY29tcHV0ZV96ZGVwd2lfb3BlcmFuZHMsIGNvbXB1dGVfbW92c3Ryc2lfbGVuZ3RoLAoJcmVtb3ZlX3VzZWxlc3NfYWRkdHJfaW5zbnMsIHN0b3JlX3JlZywgbG9hZF9yZWcsIHNldF9yZWdfcGx1c19kLAoJZmluZF9hZGRyX3JlZywgaW1wb3J0X21pbGxpKTogQWRkIHN0YXRpYyBwcm90b3R5cGVzLgoJKHBhX2NwdV9zdHJpbmcsIHBhX2FyY2hfc3RyaW5nKTogQ29uc3RpZnkgYSBjaGFyKi4KCShsZWdpdGltaXplX3BpY19hZGRyZXNzKTogUGFzcyBhcmd1bWVudCBgbW9kZScgdG8gcGljX2xhYmVsX29wZXJhbmQuCgkocmVhZF9vbmx5X29wZXJhbmQpOiBBZGQgYXJndW1lbnQgYG1vZGUnLgoJKHNpbmdsZW1vdmVfc3RyaW5nLCBvdXRwdXRfbW92ZV9kb3VibGUsIG91dHB1dF9mcF9tb3ZlX2RvdWJsZSwKCW91dHB1dF9ibG9ja19tb3ZlLCBvdXRwdXRfYW5kLCBvdXRwdXRfaW9yLCBvdXRwdXRfYXNjaWksCglyZW1vdmVfdXNlbGVzc19hZGR0cl9pbnNucywgbWlsbGlfbmFtZXMsIG91dHB1dF9tdWxfaW5zbiwKCW91dHB1dF9kaXZfaW5zbiwgb3V0cHV0X21vZF9pbnNuLCBvdXRwdXRfYXJnX2Rlc2NyaXB0b3IsCglvdXRwdXRfY2JyYW5jaCwgb3V0cHV0X2JiLCBvdXRwdXRfYnZiLCBvdXRwdXRfZGJyYSwgLAoJb3V0cHV0X21pbGxpY29kZV9jYWxsLCBvdXRwdXRfY2FsbCwgaHBwYV9lbmNvZGVfbGFiZWwsCglvdXRwdXRfcGFyYWxsZWxfbW92Yiwgb3V0cHV0X3BhcmFsbGVsX2FkZGIpOiBDb25zdGlmeSBhIGNoYXIqLgoJKGhwcGFfdmFfc3RhcnQpOiBNYXJrIHBhcmFtZXRlciBgc3RkYXJnX3AnIHdpdGggQVRUUklCVVRFX1VOVVNFRC4KCShvdXRwdXRfcGFyYWxsZWxfYWRkYik6IFJlbW92ZSBleHRyYSBhcmcgdG8gYGNvbnN0cmFpbl9vcGVyYW5kcycKCgkqIHBhLmg6ICBNb3ZlIGFsbCBwcm90b3R5cGVzIHRvIHBhLXByb3Rvcy5oLgoJKHBhX2NwdV9zdHJpbmcsIHBhX2FyY2hfc3RyaW5nKTogQ29uc3RpZnkgYSBjaGFyKi4KCShMRUdJVElNSVpFX0FERFJFU1MpOiBDYWxsIGBzeW1ib2xpY19vcGVyYW5kJyB3aXRoIG1vZGUgYXJndW1lbnQuCgoJKiBwYS5tZDogQ2FsbCBgZnVuY3Rpb25fbGFiZWxfb3BlcmFuZCcgd2l0aCBtb2RlIGFyZ3VtZW50LgoJTGlrZXdpc2UgZm9yIGByZWFkX29ubHlfb3BlcmFuZCcuCglGaXggbmVzdGluZyBvZiBwYXJlbnMgaW4gY2FsbCB0byBgc3ltYm9saWNfb3BlcmFuZCcuCgoyMDAwLTAxLTExICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBpODYwLXByb3Rvcy5oOiBOZXcgZmlsZS4KCgkqIGk4NjAuYzogSW5jbHVkZSB0bV9wLmguICBBZGQgc3RhdGljIHByb3RvdHlwZXMuICBGaXggY29tcGlsZQoJdGltZSB3YXJuaW5ncy4KCgkqIGk4NjAuaDogTW92ZSBwcm90b3R5cGVzIHRvIGk4NjAtcHJvdG9zLmguICBGaXggY29tcGlsZSB0aW1lIHdhcm5pbmdzLgoKCSogaTg2MC5tZDogTGlrZXdpc2UuCgpUdWUgSmFuIDExIDE4OjU5OjM1IE1FVCAyMDAwICBKYW4gSHViaWNrYSA8amhAc3VzZS5jej4KCgkqIGkzODYubWQgKG1vdnN0cnNpIGV4cGFuZGVyKTogUmV3cml0ZS4KCShtb3ZzdHJzaV8xIGluc24pOiBEZWxldGVkLgoJKHN0cm1vdmhpLCBzdHJtb3ZxaSBleHBhbmRlcik6IE5ldyBleHBhbmRlcnMuCgkobW92c2hpXzEsIG1vdnNxaV8xLCByZXBfbW92c2ksIHJlcF9tb3ZxaSk6IE5ldyBwYXR0ZXJucy4KCSogaTM4Ni5jICh4ODZfc2luZ2xlX3N0cmluZ29wKTogTmV3IGdsb2JhbCB2YXJpYWJsZS4KCSogaTM4Ni5oICh4ODZfc2luZ2xlX3N0cmluZ29wKTogRGVjbGFyZS4KCShUQVJHRVRfU0lOR0xFX1NUUklOR09QKTogTmV3IG1hY3JvLgoKMjAwMC0wMS0xMSAgQ2xpbnRvbiBQb3BldHogIDxjcG9wZXR6QGN5Z251cy5jb20+CgoJKiBjb25maWcvbWlwcy9taXBzLmMgKG1pcHNfdmFfYXJnKTogRm9yIEVBQkksIGVtaXQgdGhlIHF1ZXVlZAoJaW50ZWdlciB2YXJhcmcgUE9TVElOQ1JFTUVOVCBiZWZvcmUgdGhlIGRlc3RpbmF0aW9uIG9mIHRoZSBqdW1wCglmb3IgdGhlIGhhcmQgZnAgY2FzZS4KCShmdW5jdGlvbl9hcmdfcGFzc19ieV9yZWZlcmVuY2UpOiBQYXNzIGEgY29weSBvZiBDVU0gdG8KCUZVTkNUSU9OX0FSRy4KCgkqIGNvbmZpZy9taXBzL21pcHMuaCAoR09fSUZfTEVHSVRJTUFURV9BRERSRVNTKTogTW92ZSBjaGVjawoJZm9yIENPTlNUQU5UX0FERFJFU1NfUCBhYm92ZSB3aGlsZSBsb29wIGZvciBzdWJyZWcuCgoyMDAwLTAxLTExICBDbGludG9uIFBvcGV0eiAgPGNwb3BldHpAY3lnbnVzLmNvbT4KCgkqIGZsb3cuYyAocHJvcGFnYXRlX2Jsb2NrKTogV2hlbiBhIHByb2xvZ3VlL2VwaWxvZ3VlIGluc24KCWlzIG1hcmtlZCBkZWFkLCB1bmNvbmRpdGlvbmFsbHkgY2xlYXIgbGliY2FsbF9pc19kZWFkIGFuZAoJaW5zbl9pc19kZWFkLCBhbmQgb25seSBkdW1wIHJ0bCBpZiB3YXJuaW5ncyBhcmVuJ3QgYmVpbmcKCXN1cHByZXNzZWQuCgpUdWUgSmFuIDExIDE2OjI2OjQ3IE1FVCAyMDAwICBKYW4gSHViaWNrYSA8amhAc3VzZS5jej4KCgkqIGkzODYuYyAoaXg4Nl9hdHRyX2xlbmd0aF9kZWZhdWx0KTogSGFuZGxlIFRZUEVfU1RSIGFuZCBUWVBFX0NMRC4KCSogaTM4Ni5tZCAoRklSU1RfUFNFVURPX1JFR0lTVEVSKTogU2V0IHRvIDIwLgoJKEZJWEVEX1JFR0lTVEVSUyk6IFNldCBkaXJmbGFnIGFzIGZpeGVkLgoJKENBTExfVVNFRF9SRUdJU1RFUlMpOiBTZXQgZGlyZmxhZyBhcyB1c2VkLgoJKFJFR19BTExPQ19PUkRFUik6IFNldCBkaXJmbGFnIGFzIGxhc3Qgb25lLgoJKERJUkZMQUdfUkVHKTogTmV3IG1hY3JvLgoJKE1EX0FTTV9DTE9CQkVSUyk6IEFzbSBjbG9iYmVyIGRpcmZsYWcgZm9yIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkuCgkoSElfUkVHSVNURVJfTkFNRVMpOiBBZGQgZGlyZmxhZy4KCShERUJVRl9QUklOVF9SRUcpOiBIYW5kbGUgZGlyZmxhZy4KCSogaTM4Ni5tZCAodHlwZSBhdHRyaWJ1dGUpOiBOZXcgY2xkIGFuZCBzdHIgdHlwZXMuCgkobGVuZ3RoX29wY29kZSBhdHRyaWJ1dGUpOiBTZXQgY2xkIGFuZCBzdHIgdG8gMS4KCShtZW1vcnkgYXR0cmlidXRlKTogU2V0IHN0ciB0byB1bmtub3duIC0gaXQgaXMgbm90IGNsZWFyIGZyb20gdGhlCglwYXR0ZXJucy4KCShwZW50X25wIGZ1bmN0aW9uIHVuaXQpOiBQcmVmaXhlZCBzdHJpbmcgb3BlcmF0aW9ucyB0YWtlcyAxMiBjeWNsZXMKCW1pbmltYWxseTsgY2xkIHRha2VzIDIgY3ljbGVzLgoJKHBwcm9fdW9wcyBhdHRyaWJ1dGUpOiBTdHIgaXMgIm1hbnkiIGFuZCBjbGQgaXMgImZldyIuCgkocHByb19wMCB1bml0KTogSGFuZGxlIGNsZCBoZXJlLgoJKGs2X2FsdXggdW5pdCk6IEhhbmRsZSBjbGQgYW5kIHN0ciB0eXBlcy4KCShrNl9sb2FkIHVuaXQpOiBJdCBpcyBvY3VwaWVkIGJ5IHN0ciBvcGNvZGVzLgoJKGs2X3N0b3JlIHVuaXQpOiBJdCBpcyBvY3VwaWVkIGJ5IHN0ciBvcGNvZGVzLgoJKGF0aGxvbl9kZWNvZGUpOiBTdHIgaXMgdmVjdG9yIGRlY29kZWQuCgkoYXRobG9uX2lldSk6IEhhbmRsZSBzdHIgYW5kIGNsZC4KCShjbGQgcGF0dGVybik6IE5ldy4KCShtb3ZzdHJzaSwgY2xyc3RyLCBjbXBzdHIsIHN0cmxlbiBleHBhbmRlcik6IEVtaXQgY2xkIGluc3RydWN0aW9uCgkobW92c3Ryc2lfMSwgY2xyc3Ryc2lfMSwgY21wc3Ryc2lfMSwgc3RybGVuc2lfMSwKCWNtcHN0cnNpX256XzEgaW5zbik6IERvIG5vdCBvdXRwdXQgY2xkIGluc3RydWN0aW9uCgpUdWUgSmFuIDExIDA2OjE0OjM5IDIwMDAgIERhdmlkIFN0YXJuZXIgPGRzdGFybmVyOThAYWFzYWEub2ZlLm9yZz4KCgkqIGdjYy50ZXhpIChHKysgYW5kIEdDQyk6IEFkZCBKYXZhIGFuZCBDaGlsbC4KCShCdWcgQ3JpdGVyYSk6IERvbid0IGxpc3QgbGFuZ3VhZ2VzLgoKCSogZ2NjLnRleGkgKEluY29tcGF0aWJpbGl0aWVzKTogTm8gbG9uZ2VyIGNsYWltIG1vc3QgQyBjb21waWxlcnMKCWFyZSBLJlIuCgoJKiBnY2MudGV4aSAoRysrIGFuZCBHQ0MpOiBVcGRhdGUgb3RoZXIgZnJvbnQtZW5kcyBsaXN0LgoKVHVlIEphbiAxMSAwNTo0OTowMSAyMDAwICBKZWZmcmV5IEEgTGF3ICAobGF3QGN5Z251cy5jb20pCgoJKiBpMzg2LmMgKGl4ODZfZXhwYW5kX3NldGNjKTogRml4IHR5cG8uCgkoaXg4Nl9leHBhbmRfbW92Y2MpOiBTaW1pbGFybHkuCgoJKiBCYW5kLWFpZCB1bnRpbCBoYWlmYSdzIGJpdHNldCBpbXBsZW1lbnRhdGlvbiBpcyBudWtlZC4KCSogaGFpZmEtc2NoZWQuYyAoZXh0cmFjdF9iaXRsc3QpOiBOZXcgcGFyYW1ldGVyIGZvciBzaXplIG9mIHRoZQoJYml0c2V0IGluIGJpdHMuICBBbGwgY2FsbGVycyBjaGFuZ2VkLiAgQXZvaWQgbG9va2luZyBhdCB1bmRlZmluZWQKCWJpdHMgaW4gdGhlIGJpdHNldC4KCShlZGdlc2V0X2JpdHNpemUpOiBOZXcgdmFyaWFibGUuCgkoc2NoZWR1bGVfcmVnaW9uKTogSW5pdGlhbGl6ZSBlZGdlc2V0X2JpdHNpemUuCgoyMDAwLTAxLTEwICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBNYWtlZmlsZS5pbiAob3B0YWJzLm8pOiBEZXBlbmQgb24gcmVhbC5oCgkocmVzb3VyY2Uubyk6IERlcGVuZCBvbiBpbnNuLWF0dHIuaAoKCSogYnVpbHRpbnMuYyAocmVzdWx0X3ZlY3Rvcik6IFdyYXAgcHJvdG90eXBlIGluIG1hY3JvIGNvbmRpdGlvbnMKCWdvdmVybmluZyBkZWZpbml0aW9uIGFuZCB1c2UuCgoJKiBjLWNvbW1vbi5jOiBJbmNsdWRlIHRtX3AuaC4KCgkqIGMtbGV4LmM6IExpa2V3aXNlLgoKCSogZWxmb3MuaDogQ29uc3RpZnkgYSBjaGFyKi4KCgkqIGZpbmFsLmMgKGFsaWduX2Z1enopOiBXcmFwIHByb3RvdHlwZSBpbiBtYWNybyBIQVZFX0FUVFJfbGVuZ3RoLgoJKGdldF9hdHRyX2xlbmd0aCwgc2hvcnRlbl9icmFuY2hlcywgcHJvZmlsZV9hZnRlcl9wcm9sb2d1ZSk6IE1hcmsKCXBhcmFtZXRlciB3aXRoIEFUVFJJQlVURV9VTlVTRUQuCgoJKiBmb2xkLWNvbnN0LmMgKGV4YWN0X3JlYWxfaW52ZXJzZSk6IFdyYXAgdmFyaWFibGUgYGknIGluCglDSEVDS19GTE9BVF9WQUxVRS4KCgkqIGhhaWZhLXNjaGVkLmMgKHNjaGVkdWxlX2luc25zKTogTWFyayBwYXJhbWV0ZXIgd2l0aAoJQVRUUklCVVRFX1VOVVNFRC4KCgkqIG9wdGFicy5jOiBJbmNsdWRlIHJlYWwuaC4KCgkqIHJlYWwuaCAoZXJlYWxfYXRvZik6IEFkZCBwcm90b3R5cGUgYXJndW1lbnRzLgoKCSogcmVzb3VyY2UuYzogSW5jbHVkZSBpbnNuLWF0dHIuaC4KCgkqIHNkYm91dC5jIChzZGJvdXRfcXVldWVfYW5vbnltb3VzX3R5cGUsCglzZGJvdXRfZGVxdWV1ZV9hbm9ueW1vdXNfdHlwZXMpOiBXcmFwIGluIG1hY3JvCglTREJfQUxMT1dfRk9SV0FSRF9SRUZFUkVOQ0VTLgoJKHNkYm91dF9pbml0LCBzZGJvdXRfc3RhcnRfbmV3X3NvdXJjZV9maWxlKTogTWFyayBwYXJhbWV0ZXIgd2l0aAoJQVRUUklCVVRFX1VOVVNFRC4KCgkqIHN0bXQuYyAoZXhwYW5kX3JldHVybik6IFdyYXAgdmFyaWFibGUgYG9wMCcgaW4gbWFjcm8gSEFWRV9yZXR1cm4uCgoJKiBzdHVwaWQuYzogSW5jbHVkZSB0bV9wLmguCgoJKiB0cmVlLmMgKHJlYWxfdmFsdWVfZnJvbV9pbnRfY3N0KTogTWFyayBwYXJhbWV0ZXIgd2l0aAoJQVRUUklCVVRFX1VOVVNFRC4KCjIwMDAtMDEtMTAgIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIGk5NjAtcHJvdG9zLmg6IE5ldyBmaWxlLgoKCSogaTk2MC5jOiBJbmNsdWRlIHRtX3AuaC4gIEFkZCBzdGF0aWMgcHJvdG90eXBlcy4gIEZpeCBjb21waWxlCgl0aW1lIHdhcm5pbmdzLgoKCSogaTk2MC5oOiBNb3ZlIHByb3RvdHlwZXMgdG8gaTk2MC1wcm90b3MuaC4gIEZpeCBjb21waWxlIHRpbWUgd2FybmluZ3MuCgoyMDAwLTAxLTEwICBBbGV4YW5kcmUgT2xpdmEgIDxvbGl2YUBsc2QuaWMudW5pY2FtcC5icj4KCgkqIGNvbWJpbmUuYyAoZXhwYW5kX2ZpZWxkX2Fzc2lnbm1lbnQpOiBEbyBub3QgZGlzY2FyZCBTVUJSRUdzCgl3aGlsZSBjb21wdXRpbmcgbm9uemVyb19iaXRzLgoKMjAwMC0wMS0wOSAgTmljayBDbGlmdG9uICA8bmlja2NAY3lnbnVzLmNvbT4KCgkqIGNvbmZpZy9hcm0vYXJtLmM6IEZpeCBjb21waWxlIHRpbWUgd2FybmluZ3MgYWJvdXQgc2lnbmVkIHZzCgl1bnNpZ25lZCBjb25zdGFudHMuCgkqIGNvbmZpZy9hcm0vYXJtLmg6IEZpeCBjb21waWxlIHRpbWUgd2FybmluZ3MgYWJvdXQgc2lnbmVkIHZzCgl1bnNpZ25lZCBjb25zdGFudHMuCgoyMDAwLTAxLTA5ICBQaGlsaXAgQmx1bmRlbGwgIDxwaGlsYkBnbnUub3JnPgoKCSogY29uZmlnL2FybS9hcm0uYyAob3V0cHV0X3JldHVybl9pbnN0cnVjdGlvbik6IFVzZSBgbGRyJyByYXRoZXIKCXRoYW4gYGxkbScgd2l0aCBvbmx5IG9uZSByZWdpc3Rlci4KCSogY29uZmlnL2FybS9hcm0ubWQgKHB1c2hfbXVsdGkpOiBVc2UgYHN0cicgcmF0aGVyIHRoYW4gYHN0bScgd2l0aAoJb25seSBvbmUgcmVnaXN0ZXIuCgoJKiBjb25maWcvYXJtL2xpbnV4LWdhcy5oIChDTEVBUl9JTlNOX0NBQ0hFKTogU2F5IHRoYXQgUjAgaXMKCWNsb2JiZXJlZC4KClN1biBKYW4gIDkgMTc6NTA6MjMgMjAwMCAgSGFucy1QZXRlciBOaWxzc29uICA8aHBAYXhpcy5jb20+CgoJKiBjb25maWcvbnMzMmsvbnMzMmsubWQgKGxvYWQgb3IgcHVzaCBlZmZlY3RpdmUgYWRkcmVzcyk6IE9wZXJhbmQgMQoJbXVzdCBoYXZlIFNJbW9kZS4KCjIwMDAtMDEtMDkgIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIGVsZm9zLmggKEFTTV9PVVRQVVRfTElNSVRFRF9TVFJJTkcpOiBBZGQgcGFyZW50aGVzZXMgYXJvdW5kCglhc3NpZ25tZW50IHVzZWQgYXMgdHJ1dGggdmFsdWUuCgoJKiBmdW5jdGlvbi5jIChhc3NpZ25fdGVtcCk6IE1hcmsgcGFyYW1ldGVyIGBkb250X3Byb21vdGUnIHdpdGgKCUFUVFJJQlVURV9VTlVTRUQuICBXcmFwIHZhcmlhYmxlIGB1bnNpZ25lZHAnIHdpdGggbWFjcm8KCVBST01PVEVfRk9SX0NBTExfT05MWS4KCgkqIGdlbnJlY29nLmMgKHdyaXRlX3N1YnJvdXRpbmUpOiBNYXJrIHZhcmlhYmxlIGBvcGVyYW5kcycgd2l0aAoJQVRUUklCVVRFX1VOVVNFRC4KCgkqIG9wdGFicy5jIChwcmVwYXJlX2NtcF9pbnNuKTogTWFyayBwYXJhbWV0ZXIgYGFsaWduJyB3aXRoCglBVFRSSUJVVEVfVU5VU0VELgoKCSogc2Rib3V0LmMgKHNkYm91dF9pbml0KTogTGlrZXdpc2UgZm9yIHBhcmFtZXRlciBgYXNtX2ZpbGUnLgoJKHNkYm91dF9iZWdpbl9ibG9jaywgc2Rib3V0X2VuZF9ibG9jayk6IExpa2V3aXNlIGZvciBgZmlsZScuCgoJKiB0b3BsZXYuYyAobm90ZV9kZWZlcnJhbF9vZl9kZWZpbmVkX2lubGluZV9mdW5jdGlvbik6IExpa2V3aXNlCglmb3IgYGRlY2wnLgoKMjAwMC0wMS0wOSAgTWljaGFlbCBIYXllcyAgPG0uaGF5ZXNAZWxlYy5jYW50ZXJidXJ5LmFjLm56PgoKCSogY29uZmlnL2M0eC5oOiBUaWR5IHVwIGNvbW1lbnRzLgoJKiBjb25maWcvYzR4LmM6IExpa2V3aXNlLgoKU3VuIEphbiAgOSAwMTowMjo1NSBFU1QgMjAwMCAgSm9obiBXZWhsZSAgKGpvaG5AZmVpdGguY29tKQoKCSogZm9sZC1jb25zdC5jIChsc2hpZnRfZG91YmxlLCByc2hpZnRfZG91YmxlKTogSGFuZGxlCglzaGlmdGluZyBieSAyICogSE9TVF9CSVRTX1BFUl9XSURFX0lOVCBjb3JyZWN0bHkuCgoyMDAwLTAxLTA4ICBBbGV4YW5kcmUgT2xpdmEgIDxvbGl2YUBsc2QuaWMudW5pY2FtcC5icj4KCgkqIHRvcGxldi5jIChyZXN0X29mX2NvbXBpbGF0aW9uKTogSW5pdGlhbGl6ZSBjc2Vfbm90X2V4cGVjdGVkIGFzCglpbiBwcmVwYXJlX2Z1bmN0aW9uX3N0YXJ0KCkuCgpTYXQgSmFuICA4IDEyOjEyOjQ2IDIwMDAgIE5pY2sgQ2xpZnRvbiAgPG5pY2tjQGN5Z251cy5jb20+CgoJKiBjb25maWcvdjg1MC92ODUwLmMgKGV4cGFuZF9lcGlsb2d1ZSk6IEludGVycnVwdCBmdW5jdGlvbnMgbm8KCWxvbmdlciBhbGxvY2F0ZSBleHRyYSBzdGFjayBmb3IgZnVuY3Rpb24gY2FsbHMuCgoyMDAwLTAxLTA4ICBNaWNoYWVsIEhheWVzICA8bS5oYXllc0BlbGVjLmNhbnRlcmJ1cnkuYWMubno+CgoJKiBjb25maWcvYzR4L2M0eC5tZCAoKnN1YnFmM19zZXQpOiBGaXggdHlwby4KCjIwMDAtMDEtMDggIE1pY2hhZWwgSGF5ZXMgIDxtLmhheWVzQGVsZWMuY2FudGVyYnVyeS5hYy5uej4KCgkqIGNvbmZpZy9jNHgvYzR4LmggKENBTExFUl9TQVZFX1BST0ZJVEFCTEUpOiBEZWZpbmUgYXMgMC4KCjIwMDAtMDEtMDcgIERhdmlkIEVkZWxzb2huICA8ZWRlbHNvaG5AZ251Lm9yZz4KCgkqIHJzNjAwMC5jIChwcm9jZXNzb3JfdGFyZ2V0X3RhYmxlKTogQWRkIHBvd2VyMyBhcyBhbGlhcyBmb3IgNjMwLgoJKiBhaXg0My5oOiBSZXZlcnQgQXVnIDIgY2hhbmdlLgoJKEhBU19JTklUX1NFQ1RJT04pOiBEZWZpbmUsIG5vdCB2aXNpYmxlIHlldC4KCShMRF9JTklUX1NXSVRDSCk6IERlZmluZSwgbm90IHZpc2libGUgeWV0LgoJKiB0LWFpeDQzIChNVUxUSUxJQl9PUFRJT05TKTogUmV2ZXJ0IEF1ZyAyIGNoYW5nZS4KCgkqIGdsaW1pdHMuaCAoX19MT05HX01BWF9fKTogUmVjb2duaXplIDY0LWJpdCBBSVggdG9vLgoKCSogY29sbGVjdDIuYyAobWFpbik6IEV4cGFuZCBsZDIgc2l6ZSBmdXJ0aGVyLgoJKGV4cG9ydF9vYmplY3RfbHN0KTogQ2FzdCBhc3NpZ25tZW50IHRvIGF2b2lkIHdhcm5pbmcuCgkobWFpbiwgTERfSU5JVF9TV0lUQ0gpOiBBZGQgQUlYIDQuMisgLWJpbml0ZmluaSBzdXBwb3J0LgoJKHNjYW5fcHJvZ19maWxlLCBDT0ZGKTogRG8gbm90IGNvbGxlY3QgaW5pdGlhbGl6YXRpb24gb3IKCWZpbmFsaXphdGlvbiBmdW5jdGlvbnMgZ2VuZXJhdGVkIGZvciBlbnRpcmUgc2hhcmVkIG9iamVjdCBpZgoJaW5pdC9maW5pIHN1cHBvcnQgcHJlc2VudC4KCjIwMDAtMDEtMDcgIE5pY2sgQ2xpZnRvbiAgPG5pY2tjQGN5Z251cy5jb20+CgoJKiBjb25maWcvZWxmb3MuaDogVGlkeSB1cCBmb3JtYXR0aW5nIG9mIG1hcmNvcy4gIE1ha2Ugc3VyZQoJdGhhdCAuc2VjdGlvbiBkaXJlY3RpdmVzIGFyZSBhbHdheXMgcHJlZml4ZWQgYnkgYSB0YWIuCgoJKiBjb25maWcvc3ZyNC5oOiBBZGQgI2luY2x1ZGUgImVsZm9zLmgiIGFuZCByZW1vdmUgZHVwbGljYXRlCglkZWZpbml0aW9ucy4KCjIwMDAtMDEtMDcgIE1hdHQgQXVzdGVybiAgPGF1c3Rlcm5Ac2dpLmNvbT4KCgkqIGZvbGQtY29uc3QuYyAocmVhbF9oZXhfdG9fZik6IFJlbW92ZSBkdXBsaWNhdGUgZGVjbGFyYXRpb24gb2YKCWV4cG9uLgoKRnJpIEphbiAgNyAwMTo1NTozNCAyMDAwICBKZWZmcmV5IEEgTGF3ICAobGF3QGN5Z251cy5jb20pCgoJKiBNYWtlZmlsZS5pbiAoY3J0ZW5kLm8pOiBQYXNzIEBpbmhpYml0X2xpYmNAIHRvIGNvbXBpbGF0aW9uIG9mCgljcnRzdHVmZi5jLgoJKGNydGJlZ2luLm8sIHMtY3J0Uyk6IExpa2V3aXNlLgoKMjAwMC0wMS0wNiAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAY3lnbnVzLmNvbT4KCgkqIGFscGhhLm1kIChhZGRkaV8yKzEpOiBMaW1pdCBvZmZzZXQgc3VjaCB0aGF0IGl0IHdpbGwgYmUKCWxvYWRhYmxlIHdpdGggYSBzaW5nbGUgbGRhaCtsZGEgcGFpci4KCShhZGRkaV8yKzIpOiBFeHBsaWNpdGx5IGZhaWwgc3BsaXQgaWYgd2UgY2FuJ3QgbWFrZSBpdCB3b3JrLgoKMjAwMC0wMS0wNiAgTXVtaXQgS2hhbiAgPGtoYW5AeHJheWxpdGgud2lzYy5lZHU+CgoJKiBwcm90b2l6ZS5jOiBDb25kaXRpb25hbGx5IGluY2x1ZGUgdW5pc3RkLmguCgkoSVNfU0FNRV9QQVRIX0NIQVIpOiBOZXcgbWFjcm8uCgkoSVNfU0FNRV9QQVRIKTogTmV3IG1hY3JvLgoJKENQTFVTX0ZJTEVfU1VGRklYKTogTmV3IG1hY3JvLgoJKGNwbHVzX3N1ZmZpeCk6IE5ldyBzdGF0aWMgdmFyaWFibGUuCgkoaXNfYWJzcGF0aCk6IE5ldyBzdGF0aWMgZnVuY3Rpb24uCgkoaW5fc3lzdGVtX2luY2x1ZGVfZGlyKTogSGFuZGxlIERPUyBzdHlsZSBwYXRobmFtZXMuCgkoZmlsZV9jb3VsZF9iZV9jb252ZXJ0ZWQpOiBMaWtld2lzZS4KCShmaWxlX25vcm1hbGx5X2NvbnZlcnRpYmxlKTogTGlrZXdpc2UuCgkoZGlyZWN0b3J5X3NwZWNpZmllZF9wKTogTGlrZXdpc2UuCgkoZmlsZV9leGNsdWRlZF9wKTogTGlrZXdpc2UuCgkoYWJzcGF0aCk6IExpa2V3aXNlLgoJKHNob3J0cGF0aCk6IExpa2V3aXNlLgoJKHJlZmVyZW5jZWRfZmlsZV9pc19uZXdlcik6IExpa2V3aXNlLgoJKHNhdmVfZGVmX29yX2RlYyk6IExpa2V3aXNlLgoJKGRvX3Byb2Nlc3NpbmcpOiBMaWtld2lzZS4KCShtYWluKTogTGlrZXdpc2UuCgkoZWRpdF9maWxlKTogTGlrZXdpc2UuIFVzZSByZW5hbWUgaW5zdGVhZCBvZiBsaW5rLgoJKHJlbmFtZV9jX2ZpbGUpOiBMaWtld2lzZS4gRG9uJ3QgcmVuYW1lIHN5c2NhbGxzIGZpbGUuCgkobXVuZ2VfY29tcGlsZV9wYXJhbXMpOiBEZWZpbmUgbnVsbCBkZXZpY2UgZm9yIERPUyBiYXNlZCBzeXN0ZW1zLgoJKHByb2Nlc3NfYXV4X2luZm9fZmlsZSk6IFVzZSBiaW5hcnkgbW9kZSBpZiBhcHBsaWFibGUuCgkoZWRpdF9maWxlKTogTGlrZXdpc2UuCgkqIGludm9rZS50ZXhpIChSdW5uaW5nIFByb3RvaXplKTogRG9jdW1lbnQgQysrIHN1ZmZpeGVzIHVzZWQuCgoJKiBjY2NwLmM6IERlbGV0ZSBQQVRIX1NFUEFSQVRPUiwgRElSX1NFUEFSQVRPUiBhbmQKCUlTX0RJUl9TRVBBUkFUT1IgbWFjcm9zLgoJKiBjb2xsZWN0Mi5jOiBMaWtld2lzZS4KCSogY3BwaW5pdC5jOiBMaWtld2lzZS4KCSogZHdhcmYyb3V0LmM6IExpa2V3aXNlLgoJKiBnY2MuYzogTGlrZXdpc2UuCgkqIGdjb3YuYzogTGlrZXdpc2UuCgkqIHByZWZpeC5jOiBMaWtld2lzZS4KCSogcnRsLmM6IExpa2V3aXNlLgoJKiB0b3BsZXYuYzogTGlrZXdpc2UuCgkqIHN5c3RlbS5oOiBBbmQgbW92ZSB0byBoZXJlLgoKCSogcHJlZml4LmMgKHVwZGF0ZV9wYXRoKTogRml4IHR5cG8gaW4gdmFyaWFibGUgbmFtZS4KCjIwMDAtMDEtMDYgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgoJKiBmbG93LmMgKG1hcmtfc2V0XzEpOiBVc2UgbG9vcF9kZXB0aCsxIGFzIHJlZmVyZW5jZSB3ZWlnaHQuCgkoZmluZF9hdXRvX2luYywgbWFya191c2VkX3JlZ3MsIHRyeV9wcmVfaW5jcmVtZW50XzEpOiBMaWtld2lzZS4KCShjb3VudF9yZWdfc2V0c18xLCBjb3VudF9yZWdfcmVmZXJlbmNlcyk6IExpa2V3aXNlLgoJKGZsb3dfbG9vcHNfbGV2ZWxfY29tcHV0ZSk6IFN0YXJ0IGNvdW50aW5nIGFjdHVhbCBsb29wIGRlcHRoIGF0IDEuCgkoZmxvd19sb29wc19maW5kKTogTGlrZXdpc2UuCgkqIGxvY2FsLWFsbG9jLmMgKHVwZGF0ZV9lcXVpdl9yZWdzKTogTGlrZXdpc2UuCgkqIHJlZ2NsYXNzLmMgKHJlZ2NsYXNzKTogUmUtaW5zdGF0ZSBKYW4gNCAwLWJhc2VkIGxvb3BfZGVwdGggY2hhbmdlLgoKMjAwMC0wMS0wNiAgR2FicmllbCBEb3MgUmVpcyAgPGRvc3JlaXNAY21sYS5lbnMtY2FjaGFuLmZyPgoKCSogZGVmYXVsdHMuaCAoRFdBUkZfRlJBTUVfUkVHSVNURVJTKTogaWYgbm90IGRlZmluZWQsIGRlZmF1bHQgdG8KCUZJUlNUX1BTRVVET19SRUdJU1RFUgoJKiBkd2FyZjJvdXQuYzogRG9uJ3QgaW5jbHVkZSBmcmFtZS5oCgkqIGR3YXJmb3V0LmM6IExpa2V3aXNlCgkqIE1ha2VmaWxlLmluIChkd2FyZm91dC5vLCBkd2FyZjJvdXQubyk6IFJlbW92ZSBkZXBlbmRlbmNlIG9uCglmcmFtZS5oCgpUaHUgSmFuICA2IDEzOjQ0OjU5IENFVCAyMDAwICBKYW4gSHViaWNrYSAgPGpoQHN1c2UuY3o+CgoJKiByZWctc3RhY2suYyAoc3Vic3Rfc3RhY2tfcmVnc19wYXQpOiBIYW5kbGUgY29ycmVjdGx5IFVTRXMgb2YKCWRlYWQgcmVnaXN0ZXJzLgoKCSogaTM4Ni5jIChtb3ZzZiBzcGxpdHRlcik6IEZpeCB0eXBvIGluIG15IGxhc3QgY2hlY2tpbi4KCjIwMDAtMDEtMDUgIE5pY2sgQ2xpZnRvbiAgPG5pY2tjQGN5Z251cy5jb20+CgoJKiB2YXJhc20uYyAoSU5fTkFNRURfU0VDVElPTik6IEFsbG93IHRhcmdldHMgdG8gcHJvdmlkZSB0aGVpcgoJb3duIGRlZmluaXRpb24gb2YgdGhpcyBtYWNyby4KCShhc21fZW1pdF91bmluaXRpYWxpc2VkKTogSW52b2tlIFVOSVFVRV9TRUNUSU9OIGlmIGVpdGhlcgoJZmxhZ19kYXRhX3NlY3Rpb25zIG9yIFVOSVFVRV9TRUNUSU9OX1AgYXJlIHRydWUuCgoJKiB0bS50ZXhpIChVTklRVUVfU0VDVElPTik6IERvY3VtZW50IHRoYXQgaXQgY2FuIGJlIGNhbGxlZCBmb3IKCXVuaW5pdGlhbGl6ZWQgZGF0YSBkZWNscy4KCgkqIGNvbmZpZy9pMzg2L3dpbm50LmMgKGkzODZfcGVfdW5pcXVlX3NlY3Rpb24pOiBDb3BlIHdpdGgKCWJlaW5nIGNhbGxlZCBmb3IgdW5pbml0aWFsaXplZCBkYXRhLgoKCSogY29uZmlnL2kzODYvaW50ZXJpeC5jIChpMzg2X3BlX3VuaXF1ZV9zZWN0aW9uKTogQ29wZSB3aXRoCgliZWluZyBjYWxsZWQgZm9yIHVuaW5pdGlhbGl6ZWQgZGF0YS4KCgkqIGNvbmZpZy9taXBzL2VsZi5oIChVTklRVUVfU0VDVElPTik6IENvcGUgd2l0aCBiZWluZyBjYWxsZWQKCWZvciB1bmluaXRpYWxpemVkIGRhdGEuCgoJKiBjb25maWcvbWlwcy9lbGY2NC5oIChVTklRVUVfU0VDVElPTik6IENvcGUgd2l0aCBiZWluZyBjYWxsZWQKCWZvciB1bmluaXRpYWxpemVkIGRhdGEuCgoJKiBjb25maWcvbWlwcy9pcmk2Z2xkLmggKFVOSVFVRV9TRUNUSU9OKTogQ29wZSB3aXRoIGJlaW5nIGNhbGxlZAoJZm9yIHVuaW5pdGlhbGl6ZWQgZGF0YS4KCgkqIGNvbmZpZy9hcm0vdW5rbm93bi1lbGYuaCAoSU5fTkFNRURfU0VDVElPTik6IERlZmluZS4KCShVTklRVUVfU0VDVElPTl9QKTogQWx3YXlzIGdlbmVyYXRlIGEgdW5pcXVlIHNlY3Rpb24gaWYKCWZsYWdfZGF0YV9zZWN0aW9ucyBpcyB0cnVlLgoJKFVOSVFVRV9TRUNUSU9OKTogQWxzbyBnZW5lcmF0ZSB1bmlxdWUgc2VjdGlvbnMgZm9yCgl1bmluaXRpYWxpemVkIGRhdGEuCgkoQVNNX09VVFBVVF9BTElHTkVEX0JTUyk6IFJlZGVmaW5lIHRvIHVzZSBuYW1lZF9zZWN0aW9uKCkuCgkoQVNNX09VVFBVVF9BTElHTkVEX0RFQ0xfTE9DQUwpOiBSZWRlZmluZSB0byB1c2UKCW5hbWVkX3NlY3Rpb24oKS4KCjIwMDAtMDEtMDYgIE1pY2hhZWwgSGF5ZXMgIDxtLmhheWVzQGVsZWMuY2FudGVyYnVyeS5hYy5uej4KCgkqIGNvbmZpZy9jNHgvdC1jNHggKFRBUkdFVF9MSUJHQ0MyX0NGTEFHUyk6IERvbid0IHJlZGVmaW5lIFNGLCBERiwKCVNJLCBvciBESS4KCjIwMDAtMDEtMDYgIE1pY2hhZWwgSGF5ZXMgIDxtLmhheWVzQGVsZWMuY2FudGVyYnVyeS5hYy5uej4KCgkqIGNvbmZpZy9jNHgvYzR4Lm1kICh1ZGl2cWkzLCBkaXZxaTMpOiBEZWxldGUuCgkodW1vZHFpMywgbW9kcWkzLCB1ZGl2aGkzLCBkaXZoaTMsIHVtb2RoaTMsIG1vZGhpMywgZmZzcWkyKTogTGlrZXdpc2UuCgkoKnNtdWxxaTNfaGlnaHBhcnRfbm9jbG9iYmVyLCAqdW11bHFpM19oaWdocGFydF9ub2Nsb2JiZXIpOiBOZXcuCgkoKmxzaHJxaTNfY29uc3Rfbm9jbG9iYmVyLCAqbHNocnFpM19ub25jb25zdF9ub2Nsb2JiZXIpOiBMaWtld2lzZS4KCSgqYXNocnFpM19jb25zdF9ub2Nsb2JiZXIsICphc2hycWkzX25vbmNvbnN0X25vY2xvYmJlcik6IExpa2V3aXNlLgoKCSogYzR4LmggKElOSVRfVEFSR0VUX09QVEFCUyk6IERlZmluZSB0byBpbml0IGxpYmNhbGxzLgoKMjAwMC0wMS0wNSAxMToyNSAtMDgwMCAgWmFjayBXZWluYmVyZyAgPHphY2tAcmFiaS5jb2x1bWJpYS5lZHU+CgoJKiBjLWRlY2wuYyAoZmluaXNoX2VudW0pOiBTaW1wbGlmeSBjb2RlIHRvIGRldGVybWluZSBtaW5pbXVtIGFuZAoJbWF4aW11bSB2YWx1ZXMgb2YgdGhlIGVudW0sIGFuZCBjYWxjdWxhdGUgdGhlIHR5cGUuICBSZW1vdmUgY2hlY2sKCWZvciBGVU5DVElPTl9ERUNMcyBpbiB0aGUgdmFsdWVzIGxpc3QsIHdoaWNoIGNhbm5vdCBoYXBwZW4uICBSZXBsYWNlCgl0aGUgREVDTF9JTklUSUFMIG9mIGVhY2ggZW51bWVyYXRpb24gY29uc3RhbnQgd2l0aCBhIGNvcHkgY29udmVydGVkCgl0byB0aGUgZW51bWVyYXRpb24gdHlwZS4gIFdoZW4gdXBkYXRpbmcgdmFyaWFudCB0eXBlcywgZG9uJ3QgYm90aGVyCgl1cGRhdGluZyB0aGUgdHlwZSBpdHNlbGYuCgoJKiBjLXR5cGVjay5jIChidWlsZF9iaW5hcnlfb3ApOiBTaW1wbGlmeSBjb25kaXRpb25hbCBleHByZXNzaW9ucwoJd2hlbiB3ZWVkaW5nIG91dCBzcHVyaW91cyBzaWduZWQtdW5zaWduZWQgd2FybmluZ3MuICBBZGQgbmV3CglzcHVyaW91cyB3YXJuaW5nIGNhdGVnb3J5OiBpZiB0aGUgdW5zaWduZWQgcXVhbnRpdHkgaXMgYW4gZW51bQoJYW5kIGl0cyBtYXhpbXVtIHZhbHVlIGZpdHMgaW4gc2lnbmVkX3R5cGUocmVzdWx0X3R5cGUpLiAgVXBkYXRlCgljb21tZW50YXJ5LgoJKGJ1aWxkX2NvbmRpdGlvbmFsX2V4cHIpOiBXYXJuIGhlcmUgaWYgb25lIGFsdGVybmF0aXZlIGlzIHNpZ25lZAoJYW5kIHRoZSBvdGhlciBpcyB1bnNpZ25lZC4KCjIwMDAtMDEtMDUgIE5pY2sgQ2xpZnRvbiAgPG5pY2tjQGN5Z251cy5jb20+CgoJKiBjb25maWcvZnIzMC9mcjMwLmg6IFJlbW92ZSBleHRyYW5lb3VzIGNvbW1lbnRzLgoKMjAwMC0wMS0wNSAgQmVybmQgU2NobWlkdCAgPGJlcm5kc0BjeWdudXMuY28udWs+CgoJKiByZWxvYWQxLmMgKGNob29zZV9yZWxvYWRfcmVncyk6IFdoZW4gZGlzYWJsaW5nIGEgcmVsb2FkLCBhbHNvCglzZXQgcmVsb2FkX3NwaWxsX2luZGV4IHRvIC0xLgoKMjAwMC0wMS0wNCAgSm9lbCBTaGVycmlsbCAoam9lbEBPQVJjb3JwLmNvbT4KCgkqIGNvbmZpZ3VyZS5pbiAobTY4Ki0qLXJ0ZW1zY29mZiopOiBOZXcgdGFyZ2V0LCBmb3JtYWwgbmFtZSBmb3IKCW9sZCBtNjgqLSotcnRlbXMqLgoJKG02OCotKi1ydGVtc2VsZiopOiBOZXcgdGFyZ2V0LgoJKG1pcHM2NG9yaW9uLSotcnRlbXMqKTogUmVtb3ZlIGR1cGxpY2F0ZSBkZWZpbml0aW9uIG9mIHRtX2ZpbGUuCgkoc3BhcmMqLSotcnRlbXNhb3V0Kik6IE5ldyB0YXJnZXQsIGZvcm1hbCBuYW1lIGZvciBvbGQgc3BhcmMqLSotcnRlbXMqLgoJKHNwYXJjKi0qLXJ0ZW1zZWxmKik6IE5ldyB0YXJnZXQuCgkoc3BhcmMqLSotcnRlbXMqKTogTm93IGVsZiBub3QgYS5vdXQuCgkqIGNvbmZpZy9pMzg2L3J0ZW1zLmg6IEluY2x1ZGUgY29uZmlnL3J0ZW1zLmguCgkqIGNvbmZpZy9pMzg2L3J0ZW1zZWxmLmg6IEluY2x1ZGUgY29uZmlnL3J0ZW1zLmguCgkqIGNvbmZpZy9pOTYwL3J0ZW1zLmg6IEluY2x1ZGUgY29uZmlnL3J0ZW1zLmguCgkqIGNvbmZpZy9tNjhrL3J0ZW1zLmg6IEluY2x1ZGUgY29uZmlnL3J0ZW1zLmguCgkqIGNvbmZpZy9tNjhrL3J0ZW1zZWxmLmg6IEluY2x1ZGUgY29uZmlnL3J0ZW1zLmguCgkqIGNvbmZpZy9taXBzL3J0ZW1zNjQuaDogSW5jbHVkZSBjb25maWcvcnRlbXMuaC4KCSogY29uZmlnL3BhL3J0ZW1zLmg6IEluY2x1ZGUgY29uZmlnL3J0ZW1zLmguCgkqIGNvbmZpZy9yczYwMDAvcnRlbXMuaDogSW5jbHVkZSBjb25maWcvcnRlbXMuaC4KCSogY29uZmlnL3NoL3J0ZW1zLmg6IEluY2x1ZGUgY29uZmlnL3J0ZW1zLmguCgkqIGNvbmZpZy9zaC9ydGVtc2VsZi5oOiBJbmNsdWRlIGNvbmZpZy9ydGVtcy5oLgoJKiBjb25maWcvc3BhcmMvcnRlbXMuaDogSW5jbHVkZSBjb25maWcvcnRlbXMuaC4KCSogY29uZmlnL3NwYXJjL3J0ZW1zZWxmLmg6IEluY2x1ZGUgY29uZmlnL3J0ZW1zLmgKClR1ZSBKYW4gIDQgMjM6NTk6MjYgMjAwMCAgRGVuaXMgQ2hlcnR5a292IDxkZW5pc2NAb3ZlcnRhLnJ1PgoKCSogZmluYWwuYyAoc2hvcnRlbl9icmFuY2hlcyk6IENvcnJlY3RseSBjb21wdXRlIGxlbmd0aCBvZgoJYXNtcyB3aXRob3V0IG9wZXJhbmRzLgoKVHVlIEphbiAgNCAyMjo1NTo0MSAyMDAwICBTdGV2ZSBDaGFtYmVybGFpbiA8c2FjQHBvYm94LmNvbT4KCgkqIGNvbmZpZ3VyZS5pbjogQWRkIHBqIHRhcmdldC4KCSogY29uZmlndXJlOiBSZWdlbmVyYXRlLgoJKiBjb25maWcvcGo6IE5ldyBkaXJlY3RvcnkuCgkqIGNvbmZpZy9wai9saWIxZnVuY3MuUzogTmV3IGZpbGUuCgkqIGNvbmZpZy9wai9saW51eC5oOiBOZXcgZmlsZS4KCSogY29uZmlnL3BqL3BqLmM6IE5ldyBmaWxlLgoJKiBjb25maWcvcGovcGoubWQ6IE5ldyBmaWxlLgoJKiBjb25maWcvcGovcGpsLmg6IE5ldyBmaWxlLgoJKiBjb25maWcvcGovdC1wajogTmV3IGZpbGUuCgkqIGNvbmZpZy9wai94bS1wai5oOiBOZXcgZmlsZQoKVHVlIEphbiAgNCAyMjozMDoxNiAyMDAwICBKZWZmcmV5IEEgTGF3ICAobGF3QGN5Z251cy5jb20pCgoJKiB0b3BsZXYuYyAocmVzdF9vZl9jb21waWxhdGlvbik6IFJ1biBzaG9ydGVuLWJyYW5jaGVzIGJlZm9yZQoJcmVnLXN0YWNrIGZvciBub3cuCgoyMDAwLTAxLTA1ICBNaWNoYWVsIEhheWVzICA8bS5oYXllc0BlbGVjLmNhbnRlcmJ1cnkuYWMubno+CgoJKiBjb25maWcvYzR4L2M0eC5oIChJU19YWFhfUkVHLCBJU19YWFhfUkVHTk8pOiBTd2FwIGJlaGF2aW9yIG9mCgltYWNyb3Mgc28gdGhhdCB0aGV5J3JlIGNvbnNpc3RlbnQgd2l0aCB0aGVpciBuYW1lcy4KCSogY29uZmlnL2M0eC9jNHguYyAoSVNfWFhYX1JFRywgSVNfWFhYX1JFR05PKTogTGlrZXdpc2UuCgkqIGNvbmZpZy9jNHgvYzR4Lm1kIChJU19YWFhfUkVHLCBJU19YWFhfUkVHTk8pOiBMaWtld2lzZS4KCjIwMDAtMDEtMDUgIE1pY2hhZWwgSGF5ZXMgIDxtLmhheWVzQGVsZWMuY2FudGVyYnVyeS5hYy5uej4KCgkqIGNvbmZpZy9jNHgvYzR4Lm1kICgqYWRkcWkzX25vY2xvYmJlcl9yZWxvYWQpOiBFbnN1cmUgdGhhdCBDQyBuZXZlcgoJbW9kaWZpZWQgaW5hZHZlcnRlbnRseS4KCjIwMDAtMDEtMDQgIEpvZWwgU2hlcnJpbGwgPGpvZWxAT0FSY29ycC5jb20+CgoJKiBjb25maWd1cmUuaW4gKHY4NTAqLSotcnRlbXMqKTogTmV3IHRhcmdldC4KCSogY29uZmlndXJlOiBSZWdlbmVyYXRlLgoJKiBjb25maWcvdjg1MC9ydGVtcy5oOiBOZXcgZmlsZS4KCjIwMDAtMDEtMDQgIE11bWl0IEtoYW4gIDxraGFuQHhyYXlsaXRoLndpc2MuZWR1PgoKCSogZ3Roci13aW4zMi5oIChfX2d0aHJlYWRfYWN0aXZlX3ApOiBTdXBwb3J0IE1pbmd3IE1UIHJ1bnRpbWUuCgkoX19ndGhyZWFkX2tleV9jcmVhdGUpOiBMaWtld2lzZS4KCShfX2d0aHJlYWRfa2V5X2R0b3IpOiAgTGlrZXdpc2UuCgkoX19ndGhyZWFkX29uY2UpOiBGaXggbG9naWMuCgkoX19ndGhyZWFkX2tleV9kZWxldGUpOiBDYXN0IGF3YXkgY29uc3RuZXNzLgoKCSogaTM4Ni9jeWd3aW4uaCAoU1VCVEFSR0VUX1NXSVRDSEVTKTogQWRkIC1tdGhyZWFkcyBvcHRpb24uCgkqIGludm9rZS50ZXhpOiBEb2N1bWVudC4KCSogaTM4Ni9taW5ndzMyLmggKENQUF9TUEVDKTogVXNlLgoJKExJQkdDQ19TUEVDKTogTGlrZXdpc2UuCgkqIGkzODYvY3J0ZGxsLmggKExJQkdDQ19TUEVDKTogTGlrZXdpc2UuCgoyMDAwLTAxLTA0ICBEYXZpZCBFZGVsc29obiAgPGVkZWxzb2huQGdudS5vcmc+CgoJKiByczYwMDAvc3lzdjQuaCAoQVNNX09VVFBVVF9ERUYpOiBVbmRlZmluZS4KCShIQU5ETEVfUFJBR01BX1BBQ0spOiBVbmRlZmluZS4KCShTTE9XX1VOQUxJR05FRF9BQ0NFU1MpOiBEZWZpbmUuCgoyMDAwLTAxLTA0ICBEYXZpZCBFZGVsc29obiAgPGVkZWxzb2huQGdudS5vcmc+CgoJKiBleHBtZWQuYyAoU0xPV19VTkFMSUdORURfQUNDRVNTKTogQWRkIG1vZGUgYW5kIGFsaWduIHBhcmFtZXRlcnMKCXRvIGRlZmF1bHQgZGVmaW5pdGlvbi4KCShzdG9yZV9iaXRfZmllbGQpOiBDYWxsIFNMT1dfVU5BTElHTkVEX0FDQ0VTUyB3aXRoIG1vZGUgYW5kIGFsaWdubWVudC4KCShzdG9yZV9maXhlZF9iaXRfZmllbGQpOiBDYWxsIG1hY3JvIHdpdGggd29yZF9tb2RlIGFuZCBhbGlnbm1lbnQuCgkoZXh0cmFjdF9iaXRfZmllbGQpOiBDYWxsIG1hY3JvIHdpdGggcmVsZXZhbnQgbW9kZSBhbmQgYWxpZ25tZW50LgoJKiBleHByLmMgKFNMT1dfVU5BTElHTkVEX0FDQ0VTUyk6IEFkZCBtb2RlIGFuZCBhbGlnbiBwYXJhbWV0ZXJzCgl0byBkZWZhdWx0IGRlZmluaXRpb24uCgkobW92ZV9ieV9waWVjZXMpOiBDYWxsIFNMT1dfVU5BTElHTkVEX0FDQ0VTUyB3aXRoIHdvcmRfbW9kZQoJYW5kIGFsaWdubWVudC4KCShtb3ZlX2J5X3BpZWNlc19uaW5zbnMpOiBMaWtld2lzZS4KCShjbGVhcl9ieV9waWVjZXMpOiBMaWtld2lzZS4KCShlbWl0X3B1c2hfaW5zbik6IExpa2V3aXNlLgoJKHN0b3JlX2ZpZWxkKTogQ2FsbCBtYWNybyB3aXRoIHJlbGV2YW50IG1vZGUgYW5kIGFsaWdubWVudC4KCShleHBhbmRfZXhwcik6IExpa2V3aXNlLgoJKGV4cGFuZF9leHByX3VuYWxpZ25lZCk6IExpa2V3aXNlLgoKCSogcnM2MDAwLmggKEhBTkRMRV9QUkFHTUFfUEFDSyk6IERlZmluZS4KCShTTE9XX1VOQUxJR05FRF9BQ0NFU1MpOiBEZWZpbmUuCgkoQ0FTRV9WRUNUT1JfTU9ERSk6IEFsd2F5cyB1c2UgMzItYml0IG9mZnNldHMuCgkoQVNNX0ZJTEVfRU5EKTogR2VuZXJhdGUgNjQtYml0IHN5bWJvbCBpbiA2NC1iaXQgbW9kZS4KCShFWFRSQV9TRUNUSU9OX0ZVTkNUSU9OUyk6IEluZGVudCAuY3NlY3QgcHNldWRvLW9wLgoJKHRvY19zZWN0aW9uKTogTGlrZXdpc2UgYW5kIC50b2MgcHNldWRvLW9wLgoJKEFTTV9ERUNMQVJFX0ZVTkNUSU9OKTogTGlrZXdpc2UuICBBbGlnbiB0ZXh0IG1vcmUgc3RyaWN0bHkgaW4KCTY0LWJpdCBtb2RlLgoJKFRFWFRfU0VDVElPTl9BU01fT1ApOiBMaWtld2lzZS4KCShBU01fT1VUUFVUX0FERF9WRUNfRUxULCBBU01fT1VUUFVUX0FERFJfRElGRl9FTFQpOiBBbHdheXMgdXNlCgkzMi1iaXQgb2Zmc2V0cy4KCgkqIGEyOWsuaCAoU0xPV19VTkFMSUdORURfQUNDRVNTKTogQWRkIE1PREUgYW5kIEFMSUdOIHBhcmFtZXRlcnMuCgkqIGFscGhhLmggKFNMT1dfVU5BTElHTkVEX0FDQ0VTUyk6IExpa2V3aXNlLgoJKiBhcm0vdGh1bWIuaCAoU0xPV19VTkFMSUdORURfQUNDRVNTKTogTGlrZXdpc2UuCgkqIGdtaWNyby5oIChTTE9XX1VOQUxJR05FRF9BQ0NFU1MpOiBMaWtld2lzZS4KCSogZnIzMC5oIChTTE9XX1VOQUxJR05FRF9BQ0NFU1MpOiBMaWtld2lzZS4KClR1ZSBKYW4gIDQgMTE6NDQ6MTMgMjAwMCAgSmVmZnJleSBBIExhdyAgKGxhd0BjeWdudXMuY29tKQoKCSogcmVnY2xhc3MuYzogUmV2ZXJ0IG15IEphbiA0IGNoYW5nZSB0byBsb29wIGNvc3QgY29tcHV0YXRpb24uCgpUdWUgSmFuICA0IDE5OjIyOjM5IE1FVCAyMDAwICBKYW4gSHViaWNrYSAgPGh1Ymlja2FAZnJlZXNvZnQuY3o+CgoJKiByZWdjbGFzcy5jIChyZWdjbGFzcyk6IERvIG5vdCBvYmV5IFJFR19OX1JFRlMgaW4gbm9uLW9wdGltaXppbmcKCWNvbXBpbGF0aW9uLgoKMjAwMC0wMS0wNCAgU3RhbiBDb3ggIDxzY294QGN5Z251cy5jb20+CgoJKiBoYWlmYS1zY2hlZC5jIChidWlsZF9jb250cm9sX2Zsb3cpOiBDaGFuZ2UgdW5yZWFjaGFibGUgc2ltcGxlCglsb29wIHRlc3QgdG8gY2hlY2sgaWYgY3VycmVudCBibG9jayBoYXMgb25seSBvbmUgcHJlZGVjZXNzb3IuCgkoZmluZF9yZ25zKTogSW5pdGlhbGl6ZSBkZWdyZWUuICBVc2UgZGVzdCBhcyBkZWdyZWUgaW5kZXgsIG5vdCBzcmMuCgoyMDAwLTAxLTA0ICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBidWlsdGlucy5jIChleHBhbmRfYnVpbHRpbl9zdHJsZW4pOiBJbml0aWFsaXplIHZhcmlhYmxlIGBpY29kZScuCgoJKiBjYWxscy5jIChleHBhbmRfY2FsbCk6IExpa2V3aXNlIGZvcgoJYG9sZF9zdGFja19hcmdfdW5kZXJfY29uc3RydWN0aW9uJy4KCgkqIGNwcGhhc2guYyAobWFjcm9leHBhbmQpOiBMaWtld2lzZSBmb3IgYGFyZ3MnIGFuZCBgcmVzdF96ZXJvJy4KCgkqIGZ1bmN0aW9uLmMgKHBhZF90b19hcmdfYWxpZ25tZW50KTogTGlrZXdpc2UgZm9yIGBzYXZlX3ZhcicgYW5kCglgc2F2ZV9jb25zdGFudCcuCgoJKiBnY2MuYyAoZXhlY3V0ZSk6IExpa2V3aXNlIGZvciBgdXQnIGFuZCBgc3QnLgoKCSogZ2VuYXR0cnRhYi5jIChhdHRyX3J0eCk6IExpa2V3aXNlIGZvciBgcnRfdmFsJy4KCgkqIGdlbm9waW5pdC5jIChnZW5faW5zbik6IExpa2V3aXNlIGZvciBgbTEnLCBgbTInIGFuZCBgb3AnLgoKCSoganVtcC5jIChqdW1wX29wdGltaXplXzEpOiBMaWtld2lzZSBmb3IgYHRlbXAyJy4KCgkqIGxvY2FsLWFsbG9jLmMgKGJsb2NrX2FsbG9jKTogTGlrZXdpc2UgZm9yIGByMScuCgoJKiBsb29wLmMgKHJlY29tYmluZV9naXZzKTogTGlrZXdpc2UgZm9yIGBsaWZlX3N0YXJ0JyBhbmQgYGxpZmVfZW5kJy4KCgkqIHJlZy1zdGFjay5jIChjaGVja19hc21fc3RhY2tfb3BlcmFuZHMpOiBMaWtld2lzZSBmb3IgYGNsb2JiZXJfcmVnJy4KCShzdWJzdF9hc21fc3RhY2tfcmVncyk6IExpa2V3aXNlIGZvciBgY2xvYmJlcl9yZWcnIGFuZCBgY2xvYmJlcl9sb2MnLgoKCSogcmVnbW92ZS5jIChmaXh1cF9tYXRjaF8xKTogTGlrZXdpc2UgZm9yIGBpbnNuX2NvbnN0JywgYGRzdF9ub2RlJwoJYW5kIGBzZXQyJy4KCgkqIHJlbG9hZC5jIChmaW5kX3JlbG9hZHMpOiBMaWtld2lzZSBmb3IgYGdvYWxfYWx0ZXJuYXRpdmVfbnVtYmVyJwoJYW5kIGBnb2FsX2Vhcmx5Y2xvYmJlcicuCgoJKiBzY2FuLWRlY2xzLmMgKHNjYW5fZGVjbHMpOiBMaWtld2lzZSBmb3IgYHByZXZfaWRfZW5kJy4KCgkqIHNkYm91dC5jIChzZGJvdXRfb25lX3R5cGUpOiBMaWtld2lzZSBmb3IgYG1lbWJlcl9zY2wnLgoKCSogc3R1cGlkLmMgKHN0dXBpZF9saWZlX2FuYWx5c2lzKTogTGlrZXdpc2UgZm9yIGBjaGFpbicuCgoJKiB1bnJvbGwuYyAoY29weV9sb29wX2JvZHkpOiBMaWtld2lzZSBmb3IgYGNvcHknLgoKCSogdmFyYXNtLmMgKG91dHB1dF9jb25zdHJ1Y3Rvcik6IExpa2V3aXNlIGZvciBgYnl0ZScuCgpUdWUgSmFuICA0IDE1OjM0OjM0IE1FVCAyMDAwICBKYW4gSHViaWNrYSAgPGh1Ymlja2FAZnJlZXNvZnQuY3o+CgoJKiBpMzg2LmMgKGl4ODZfZXhwYW5kX21vdmUpOiBBbGxvdyBwdXNoZXMgb2YgbWVtb3J5LCBvZmZsb2FkIHRvIG1lbW9yeQoJYWxsIEZQIGNvbnN0YW50cyBmb3IgY29uc3RhbnQtPnJlZyBtb3Zlcy4KCShpeDg2X3NwbGl0X3RvX3BhcnRzKTogVHJ5IHRvIGNvbnZlcnQgbWVtb3J5IGFkZHJlc3MgaW50byBpbW1lZGlhdGUKCXdoZW4gYXZhaWxhYmxlIGluIHRoZSBjb25zdGFudCBwb29sLgoJKiBpMzg2LmggKFBSRUZFUlJFRF9SRUxPQURfQ0xBU1MpOiBBbGxvdyBDT05TVF9ET1VCTEUtPmludGVnZXIgcmVnCgltb3Zlcy4KCShMRUdJVElNQVRFX0NPTlNUQU5UX1ApOiBSZXR1cm4gMS4KCSogaTM4Ni5tZCAocHVzaHNmKTogTmV3IHNwbGl0dGVyIHRvIGNvbnZlcnQgY29uc3RhbnQgcG9vbCBtZW1vcnkKCXJlZmVyZW5jZSB0byBpbW1lZGlhdGUuCgkobW92P2YpOiBMaWtld2lzZTsgZG8gbm90IGFsbG93IENPTlNUX0RPVUJMRSBmb3IgcmVnIG1vdmVzIGJlZm9yZQoJcmVsb2FkLgoKMjAwMC0wMS0wNCAgQmVybmQgU2NobWlkdCAgPGJlcm5kc0BjeWdudXMuY28udWs+CgoJKiBpMzg2Lm1kIChhc2hsc2kzX2NtcG5vKTogRG9uJ3QgYWNjZXB0IHZhcmlhYmxlcyBzaGlmdHMuCgkoYXNobGhpM19jbXBubywgYXNobHFpM19jbXBubywgYXNocnNpM19jbXBubywgYXNocmhpM19jbXBubywKCWFzaHJxaTNfY21wbm8sIGxzaHJzaTNfY21wbm8sIGxzaHJoaTNfY21wbm8sIGxzaHJxaTNfY21wbm8pOiBMaWtld2lzZS4KCShyb3Rsc2kzX2NtcG5vLCByb3RsaGkzX2NtcG5vLCByb3RscWkzX2NtcG5vLCByb3Ryc2kzX2NtcG5vLAoJcm90cmhpM19jbXBubywgcm90cnFpM19jbXBubyk6IExpa2V3aXNlLgoKMjAwMC0wMS0wNCAgTWFydGluIHZvbiBM9ndpcyAgPGxvZXdpc0BpbmZvcm1hdGlrLmh1LWJlcmxpbi5kZT4KCgkqIGdpbmNsdWRlL3N0ZGJvb2wuaDogIFN1cHBvcnQgY29tcGlsYXRpb24gYXMgQysrLgoKVHVlIEphbiAgNCAwMTozNToxMyAyMDAwICBKIm9ybiBSZW5uZWNrZSA8YW15bGFhckBjeWdudXMuY28udWs+CgoJKiBmb2xkLWNvbnN0LmMgKG1ha2VfcmFuZ2UpOiBEb24ndCB0cnkgdG8gcmV2ZXJzZSBhbiB1bmJvdW5kZWQgcmFuZ2UuCgpUdWUgSmFuICA0IDAwOjE4OjQ2IDIwMDAgIEplZmZyZXkgQSBMYXcgIChsYXdAY3lnbnVzLmNvbSkKCgkqIHJlZ2NsYXNzLmMgKHJlZ2NsYXNzKTogUHJvcGVybHkgY29tcHV0ZSBsb29wX2Nvc3QuICBBZGp1c3QKCWNvbW1lbnRzLgoKCSogcmVnY2xhc3MuYzogRml4IG1pbm9yIHdoaXRlc3BhY2UgcHJvYmxlbXMuCgoyMDAwLTAxLTAzICBBbnRob255IEdyZWVuICA8Z3JlZW5AY3lnbnVzLmNvbT4KCgkqIGNvbmZpZy9pMzg2L2kzODYubWQgKGJ1aWx0aW5fc2V0am1wX3JlY2VpdmVyKTogTmV3IHBhdHRlcm4uCglSZXN0b3JlIHRoZSBwaWMgcmVnaXN0ZXIgaWYgcmVxdWlyZWQuCgoyMDAwLTAxLTAzICBVbHJpY2ggRHJlcHBlciAgPGRyZXBwZXJAY3lnbnVzLmNvbT4KCgkqIGMtY29tbW9uLmMgKGZvcm1hdF9jaGFyX2luZm8pOiBVcGRhdGUgY29tbWVudC4KCShjaGVja19mb3JtYXRfaW5mbyk6IFJlY29nbml6ZSAneicgbW9kaWZpZXIgaW4gdGhlIHNhbWUgd2F5ICdaJwoJd2FzIHJlY29nbml6ZWQuICBFbWl0IHdhcm5pbmcgZm9yIGZvcm1hdHMgbmV3IGluIElTTyBDOTkgb25seQoJaWYgZmxhZ19pc29jOXggaXMgbm90IHNldC4KCk1vbiBKYW4gIDMgMTI6NTk6NTQgMjAwMCAgTWFyayBQLiBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGNvbmZpZy9taXBzL2lyaXM2Z2xkLmg6IEZpeCB0eXBvIGluIC1tYWJpPW4zMiBzcGVjcy4KCk1vbiBKYW4gIDMgMTU6MzM6MzcgTUVUIDIwMDAgIEphbiBIdWJpY2thICA8aHViaWNrYUBmcmVlc29mdC5jej4KCgkqIGNvbWJpbmUuYyAoZXhwYW5kX2NvbXBvdW5kX29wZXJhdGlvbik6IERvIG5vdCBjb252ZXJ0IFpFUk9fRVhURU5EIHRvCglTSUdOX0VYVEVORCwgY29udmVydCBTSUdOX0VYVEVORCB0byBaRVJPX0VYVEVORC4KCShtYWtlX2NvbXBvdW5kX29wZXJhdGlvbik6IENob29zZSBjaGVhcGVyIGFsdGVybmF0aXZlIGJldHdlZW4KCVpFUk9fRVhURU5EIGFuZCBTSUdOX0VYVEVORCB3aGVuIHNpZ24gYml0IGlzIG5vdCBzZXQuCgoJKiByZWdjbGFzcy5jIChvcF9jb3N0cyk6IFJlbW92ZSBnbG9iYWwgdmFyaWFibGUuCgkocmVjb3JkX3JlZ19jbGFzc2VzKTogTmV3IHBhcmFtZXRlciAib3BfY29zdHMiIGFuZCAicmVnX3ByZWYiLgoJKHJlY29yZF9vcGVyYW5kX2Nvc3RzKTogQnJlYWsgb3V0IGZyb20gLi4uCgkoc2Nhbl9vbmVfaW5zbik6IC4uLiBoZXJlLgoJKGR1bXBfcmVnY2xhc3MpOiBNYWtlIGR1bXBzIG5pY2VyLgoJKHJlZ2NsYXNzKTogRHVtcCBwcmVmZXJyZW5jZXMgY2hvb3NlZCBhbmQgY2hhbmdlcyBkb25lIGR1cmluZyBwYXNzZXMuCgoyMDAwLTAxLTAzICBKYWt1YiBKZWxpbmVrICA8amFrdWJAcmVkaGF0LmNvbT4KCgkqIGNvbmZpZy9zcGFyYy9zcGFyYy5jIChnZW5fZGZfcmVnKTogRml4IGZvciAzMmJpdCBTUEFSQy4KCjIwMDAtMDEtMDMgIEpha3ViIEplbGluZWsgIDxqYWt1YkByZWRoYXQuY29tPgoKCSogY29uZmlnL3NwYXJjL3NwYXJjLmMgKGdlbl9kZl9yZWcpOiBOZXcgZnVuY3Rpb24uCgkqIGNvbmZpZy9zcGFyYy9zcGFyYy1wcm90b3MuaCAoZ2VuX2RmX3JlZyk6IEFkZCBwcm90b3R5cGUuCgkqIGNvbmZpZy9zcGFyYy9zcGFyYy5tZCAobW92dGZfbm9fZV9pbnNuX3NwNjQrMSwKCW1vdnRmX25vX2VfaW5zbl9zcDY0KzIsIG1vdnRmX25vX2VfaW5zbl9zcDY0KzMsIG1vdnRmX2NjX3NwNjQrMSwKCW1vdnRmX2NjX3JlZ19zcDY0KzEpOiBVc2UgaXQuCgoyMDAwLTAxLTAyICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogaW50ZWdyYXRlLmMgKGNvcHlfZGVjbF9mb3JfaW5saW5pbmcpOiBDbGVhciBUUkVFX0FERFJFU1NBQkxFIG9uCgljb3BpZWQgTEFCRUxfREVDTHMuCgpNb24gSmFuICAzIDAyOjU0OjQwIDIwMDAgIEhhbnMtUGV0ZXIgTmlsc3NvbiAgPGhwQGJpdHJhbmdlLmNvbT4KCgkqIGNvbmZpZy9pMzg2L2kzODYuYyAoaXg4Nl9leHBhbmRfdW5hcnlfb3BlcmF0b3IpOiBGdW5jdGlvbgoJZGVmaW5pdGlvbiBtYWRlIHZvaWQuCgkoaXg4Nl9leHBhbmRfYmluYXJ5X29wZXJhdG9yKTogVXBkYXRlIG91dGRhdGVkIHByZWNlZGluZyBjb21tZW50LgoJKiBjb25maWcvaTM4Ni9pMzg2LXByb3Rvcy5oIChpeDg2X2V4cGFuZF91bmFyeV9vcGVyYXRvcik6IFVwZGF0ZQoJcHJvdG90eXBlLgoKCSogY29uZmlnL2kzODYvaTM4Ni5jIChvdmVycmlkZV9vcHRpb25zKTogRml4IG9wdGlvbi1uYW1lIHR5cG8uCgoyMDAwLTAxLTAyICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogc3lzdGVtLmggKENFSUwpOiBEZWZpbmUuCgkqIGJ1aWx0aW5zLmMgKENFSUwpOiBSZW1vdmUuCgkqIGV4cG1lZC5jIChDRUlMKTogTGlrZXdpc2UuCgkqIGV4cHIuYyAoQ0VJTCk6IExpa2V3aXNlLgoJKiBzdG9yLWxheW91dC5jIChDRUlMKTogTGlrZXdpc2UuCgoyMDAwLTAxLTAyICBGcmFueiBTaXJsIDxGcmFuei5TaXJsLWtlcm5lbEBsYXV0ZXJiYWNoLmNvbT4KCgkqIGV4cHIuYyAoc3RvcmVfY29uc3RydWN0b3JfZmllbGQpOiBGaXggdHlwbyBpbnRyb2R1Y2VkIHdpdGggbGFzdAoJZ2NjMiBtZXJnZS4KCjIwMDAtMDEtMDEgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiB0cmVlLmggKEJJTkZPX05fQkFTRVRZUEVTKTogTmV3IG1hY3JvLgoKMjAwMC0wMS0wMSAgQmVybmQgU2NobWlkdCAgPGJlcm5kc0BjeWdudXMuY28udWs+CgoJKiBleHBtZWQuYyAoZW1pdF9zdG9yZV9mbGFnKTogUHJldmVudCBsb3NpbmcgYSBwZW5kaW5nIHN0YWNrCglhZGp1c3QgdGhlIHNhbWUgd2F5IHdlIHByZXZlbnQgbG9zaW5nIHF1ZXVlZCBpbmNyZW1lbnRzLgoKU2VlIENoYW5nZUxvZy4yIGZvciBlYXJsaWVyIGNoYW5nZXMuCg==