MjAwMC0xMi0zMSAgQWxleGFuZHJlIE9saXZhICA8YW9saXZhQHJlZGhhdC5jb20+CgoJKiByZXNvdXJjZS5jIChtYXJrX3JlZmVyZW5jZWRfcmVzb3VyY2VzKTogQWJvcnQoKSBiZWZvcmUKCWF0dGVtcHRpbmcgdG8gbWFyayBhIHBzZXVkbyByZWdpc3Rlci4KCShtYXJrX3NldF9yZXNvdXJjZXMpOiBMaWtld2lzZS4KCjIwMDAtMTItMzEgIFBoaWxpcCBCbHVuZGVsbCAgPHBoaWxiQGdudS5vcmc+CgoJKiBjb25maWcvYXJtL2xpbnV4LWdhcy5oIChDTEVBUl9JTlNOX0NBQ0hFKTogQWRkIG1pc3NpbmcgYXNtCglvcGVyYW5kcy4KCjIwMDAtMTItMzAgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CgoJKiBkYnhvdXQuYyAoZGJ4b3V0X2Jsb2NrKTogSW52ZXJ0IGxvZ2ljIG9uIGVsaWRpbmcgTEJSQUMvUkJSQUMuCglJbml0aWFsaXplIHZhcmlhYmxlcyBwcm9wZXJseSBmb3IgREJYX0xCUkFDX0ZJUlNULgoKMjAwMC0xMi0zMCAgUmljaGFyZCBLZW5uZXIgIDxrZW5uZXJAdmxzaTEudWx0cmEubnl1LmVkdT4KCgkqIGV4cHIuYyAoZXhwYW5kX2V4cHIsIGNhc2UgQ09NUE9ORU5UX1JFRik6IEZpeCB0eXBvIGluIGxhc3QgY2hhbmdlLgoKMjAwMC0xMi0zMCAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogYnVpbHRpbnMuYyAodmFsaWRhdGVfYXJnbGlzdCk6IE5ldyBmdW5jdGlvbiwgdXNlIGl0LgoKMjAwMC0xMi0zMCAgUGhpbGlwIEJsdW5kZWxsICA8cGhpbGJAZ251Lm9yZz4KCgkqIGNvbmZpZy9hcm0vYXJtLmMgKGFybV9leHBhbmRfcHJvbG9ndWUpOiBGaXggdHlwb3MgaW4gZXJyb3IKCW1lc3NhZ2UgYW5kIGNvbW1lbnQuICBOb3RlIGxvY2F0aW9uIG9mIHRlc3RjYXNlIGZvciBhbiB1bmhhbmRsZWQKCXNpdHVhdGlvbi4KCjIwMDAtMTItMzAgIEplZmZyZXkgT2xkaGFtICA8b2xkaGFtQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBkZWZhdWx0cy5oIChCVUlMRF9WQV9MSVNUX1RZUEUpOiBOZXcgZGVmaW5pdGlvbi4KCSogdHJlZS5jIChidWlsZF9jb21tb25fdHJlZV9ub2Rlc18yKTogRW5zdXJlIHRoZSB2YV9saXN0X3R5cGVfbm9kZQoJaXMgYSBjb3B5LCBub3QgYW4gYWxpYXMuCgoyMDAwLTEyLTMwICBSaWNoYXJkIEtlbm5lciAgPGtlbm5lckB2bHNpMS51bHRyYS5ueXUuZWR1PgoKCSogY2FsbHMuYyAoY2FsbHNfZnVuY3Rpb25fMSwgY2FzZSBDT05TVFJVQ1RPUik6IE5ldyBjYXNlLgoKCSogYWxpYXMuYyAoYWxpYXNfc2V0c19jb25mbGljdF9wKTogTmV3IGZ1bmN0aW9uLgoJKG1lbXNfaW5fZGlzam9pbnRfYWxpYXNfc2V0c19wKTogVXNlIGl0LgoJKHJlYWRvbmx5X2ZpZWxkc19wKTogTW92ZWQgZnJvbSBleHByLmM7IGNoZWNrIGZvciByZWNvcmQgdHlwZS4KCShvYmplY3RzX211c3RfY29uZmxpY3RfcCk6IE5ldyBmdW5jdGlvbi4KCSogY2FsbHMuYyAoZXhwYW5kX2NhbGwpOiBVc2UgYXNzaWduX3RlbXAgYXMgbXVjaCBhcyBwb3NzaWJsZSwgdXNlCglyZWFkb25seSB2YXJpYW50IGlmIGFzc2lnbmVkIG9uY2UsIGFuZCBkb24ndCBzZXQgbWVtb3J5IGF0dHJpYnV0ZXMuCgkoZW1pdF9saWJyYXJ5X2NhbGxfdmFsdWVfMSwgc3RvcmVfb25lX2FyZyk6IExpa2V3aXNlLgoJKiBpbnRlZ3JhdGUuYyAoZXhwYW5kX2lubGluZV9mdW5jdGlvbik6IExpa2V3aXNlLgoJKiBzdG10LmMgKGV4cGFuZF9hc21fb3BlcmFuZHMsIGV4cGFuZF9yZXR1cm4pOiBMaWtld2lzZS4KCSogZXhwci5jIChjb3B5X2Jsa21vZGVfZnJvbV9yZWcsIHN0b3JlX2NvbnN0cnVjdG9yKTogTGlrZXdpc2UuCgkoc3RvcmVfZmllbGQsIHNhdmVfbm9uY29waWVkX3BhcnRzLCBleHBhbmRfZXhwcik6IExpa2V3aXNlLgoJKGV4cGFuZF9leHByX3VuYWxpZ25lZCk6IExpa2V3aXNlLgoJKHJlYWRvbmx5X2ZpZWxkc19wKTogTW92ZWQgdG8gYWxpYXMuYy4KCShzYWZlX2Zyb21fcCk6IFJld29yayBoYW5kbGluZyBvZiBTQVZFX0VYUFIuCglNRU1zIG9ueSBjb25mbGljdCBpZiBhbGlhcyBzZXRzIGNvbmZsaWN0OyBsaWtld2lzZSBmb3IgSU5ESVJFQ1RfUkVGLgoJKiBmdW5jdGlvbi5jIChzdHJ1Y3QgdGVtcF9zbG90KTogRGVsZXRlIGZpZWxkIEFMSUFTX1NFVDsgYWRkIFRZUEUuCgkoYXNzaWduX3N0YWNrX2Zvcl90ZW1wKTogVXNlIG9iamVjdHNfbXVzdF9jb25maWN0X3AuCglTZXQgYWxsIG1lbW9yeSBhdHRyaWJ1dGVzIGZyb20gdHlwZSwgaWYgc3BlY2lmaWVkLgoJKG1hcmtfdGVtcF9zbG90KTogTWFyayBUWVBFIGZpZWxkLgoJKiB0cmVlLmggKGFsaWFzX3NldHNfY29uZmxpY3RfcCwgcmVhZG9ubHlfZmllbGRzX3ApOiBOZXcgZGVjbHMuCgkob2JqZWN0c19tdXN0X2NvbmZsaWN0X3ApOiBMaWtld2lzZS4KCgkqIHN0bXQuYyAoZXhwYW5kX2RlY2wpOiBEb24ndCB1c2UgYXNzaWduX3N0YWNrX3RlbXAgaW4gZXJyb3IgY2FzZS4KCShhZGRfY2FzZV9ub2RlKTogTm8gbmVlZCB0byBjb3B5IG5vZGVzIGFueW1vcmUuCgoyMDAwLTEyLTMwICBBbGV4YW5kcmUgT2xpdmEgIDxhb2xpdmFAcmVkaGF0LmNvbT4KCgkqIGNvbmZpZy9zaC9zaC5jIChzcGxpdF9icmFuY2hlcyk6IERvbid0IGRlcmVmZXJlbmNlIHJlLWNvbXB1dGVkCglgYmV5b25kJyBiZWZvcmUgY2hlY2tpbmcgaXQncyBub24tTlVMTC4KCjIwMDAtMTItMjkgIFJvYmVydCBMaXBlIDxyb2JlcnRsQHNjby5jb20+CgoJUmVtb3ZlIENPRkYgc3VwcG9ydCBmcm9tIGk/ODYtcGMtc2NvMy4ydjUuCgkqIGkzODYvc2NvNS5oIChQUkVGRVJSRURfREVCVUdHSU5HX1RZUEUpOiBDaGFuZ2UgdG8gRHdhcmYgSUkuCgkoVEFSR0VUX0VMRik6IE5vdyBhbHdheXMgdHJ1ZS4KCShTVUJUQVJHRVRfU1dUSUNIRVM6IClSZW1vdmUgLW1jb2ZmLgoKCSogaTM4Ni90LXNjbzUgKE1VTFRJTElCX09QVElPTlMsIE1VTFRJTElCX0RJUk5BTUVTLAoJTVVMVElMSUJfRVhDRVBUSU9OKTogTnVrZSBjb2ZmLgoJKENSVFNUVUZGX1RfQ0ZMQUdTX1MpOiAgRGVsZXRlZC4KCShUQVJHRVRfTElCR0NDMl9DRkxBR1MpOiBBZGRlZC4KCjIwMDAtMTItMjkgIEFsZXhhbmRyZSBPbGl2YSAgPGFvbGl2YUByZWRoYXQuY29tPgoKCSogdmFyYXNtLmMgKG91dHB1dF9jb25zdGFudF9kZWYpOiBEb24ndCBFTkNPREVfU0VDVElPTl9JTkZPCgl0d2ljZS4gIFVwZGF0ZSBkZXNjLT5ydGwgYW5kIC0+bGFiZWwsIGluIGNhc2UgRU5DT0RFX1NFQ1RJT05fSU5GTwoJbW9kaWZpZXMgdGhlbS4KCjIwMDAtMTItMjkgIEJlcm5kIFNjaG1pZHQgIDxiZXJuZHNAcmVkaGF0LmNvbT4KCgkqIGlhNjQuYyAoaWE2NF9leHBhbmRfbG9hZF9hZGRyZXNzKTogQWNjZXB0IGFkZGl0aW9uYWwgc2NyYXRjaAoJcmVnaXN0ZXIgYXJndW1lbnQuICBBbGwgY2FsbGVycyAmIHByb3RvdHlwZSBjaGFuZ2VkLgoJVXNlIHNjcmF0Y2ggcmVnaXN0ZXIgd2hlbiBnZW5lcmF0aW5nIGxvYWRfc3ltcHRyIGluc25zLgoJKiBpYTY0Lm1kIChtb3ZkaV9zeW1ib2xpYyk6IENsb2JiZXIgYSBzY3JhdGNoIHJlZ2lzdGVyLiAgVXNlIGl0Cgl3aGVuIGNhbGxpbmcgaWE2NF9leHBhbmRfbG9hZF9hZGRyZXNzLgoJKG1vdmRpKTogR2VuZXJhdGUgbW92ZGlfc3ltYm9saWMgd2l0aCBhZGRpdGlvbmFsIG9wZXJhbmQuCgkobG9hZF9ncHJlbDY0KTogVXNlIHBpY19vZmZzZXRfdGFibGVfcnR4IGluc3RlYWQgb2YgKHJlZzpESSAxKS4KCShsb2FkX3N5bXB0cik6IExpa2V3aXNlLiAgVXNlIGFkZGl0aW9uYWwgb3BlcmFuZCBhcyBhIHNjcmF0Y2gKCXJlZ2lzdGVyIGluc3RlYWQgb2YgZ2VuZXJhdGluZyBpdCBoZXJlLgoKCSogYmFzaWMtYmxvY2suaDogQWRkIGEgY29tbWVudC4KCSogZmxvdy5jIChQUk9QX1BPU1RSRUxPQUQpOiBOZXcgbWFjcm8uCgkodXBkYXRlX2xpZmVfaW5mbyk6IEFkZCBpdCB0byBwcm9wX2ZsYWdzLgoJKG1hcmtfc2V0XzEpOiBJZiBpdCBpcyBzZXQsIGNvbXB1dGUgUkVHX05fU0VUUyBmb3IgdGhlIG9yaWdpbmFsCglyZWdpc3RlciBudW1iZXIgb2YgYSBoYXJkIHJlZy4KCgkqIGVtaXQtcnRsLmMgKGdlbl9yYXdfUkVHKTogTmV3IGZ1bmN0aW9uLgoJKGdlbl9ydHhfUkVHLCBnZW5fcmVnX3J0eCwgaW5pdF9lbWl0X29uY2UpOiBVc2UgaXQgaW5zdGVhZCBvZgoJZ2VuX3J0eF9yYXdfUkVHLgoJKiBwcmludC1ydGwuYyAocHJpbnRfcnR4KTogUHJpbnQgT1JJR0lOQUxfUkVHTk8uCgkqIGZpbmFsLmMgKGFsdGVyX3N1YnJlZyk6IFVwZGF0ZSBpdC4KCSogcmVncmVuYW1lLmMgKGRvX3JlcGxhY2UpOiBMaWtld2lzZS4gIFVzZSBnZW5fcmF3X1JFRy4KCSogcnRsLmRlZiAoUkVHKTogVXBkYXRlIGNvbW1lbnQuCgkqIHJ0bC5oIChYMFVJTlQsIE9SSUdJTkFMX1JFR05PKTogTmV3IG1hY3Jvcy4KCShnZW5fcmF3X1JFRyk6IERlY2xhcmUuCgoyMDAwLTEyLTI5ICBSaWNoYXJkIEtlbm5lciAgPGtlbm5lckB2bHNpMS51bHRyYS5ueXUuZWR1PgoKCSogdHJlZS5jIChnZXRfc2V0X2NvbnN0cnVjdG9yX2JpdHMpOiBVc2UgaG9zdF9pbnRlZ2VycCBhbmQKCXRyZWVfbG93X2NzdC4KCgkqIGxvY2FsLWFsbG9jLmMgKHVwZGF0ZV9lcXVpdl9yZWdzKTogRG9uJ3QgdXNlIGNvcHlfcnR4IG9uIFBBVFRFUk4uCgoJKiB0b3BsZXYuYyAobWFpbik6IENhbGwgeG1hbGxvY19zZXRfcHJvZ3JhbV9uYW1lLgoJKiBnY2MuYyAobWFpbik6IExpa2V3aXNlLgoKMjAwMC0xMi0yOSAgUGhpbGlwIEJsdW5kZWxsICA8cGhpbGJAZ251Lm9yZz4KCgkqIGNvbmZpZy9hcm0vYXJtLmMgKGFybV9vdmVycmlkZV9vcHRpb25zKTogRml4IHR5cG8gaW4gd2FybmluZwoJbWVzc2FnZS4KCjIwMDAtMTItMjkgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CgoJKiBjb25maWcvYWxwaGEvYWxwaGEuYyAoYWxwaGFfZXhwYW5kX2Jsb2NrX21vdmUpOiBJbml0aWFsaXplCglzcmNfYWxpZ24gYW5kIGRzdF9hbGlnbiBpbiBiaXRzLiAgRG8gdW5hbGlnbmVkIHF1YWR3b3JkIGxvYWRzCglpZiBwb3NzaWJsZSBmb3IgQldYIHRvby4KCShhbHBoYV9leHBhbmRfYmxvY2tfY2xlYXIpOiBJbml0aWFsaXplIGFsaWduIGluIGJpdHMuICBUcmFjawoJc21hbGwgbGVhZGluZyBvZmZzZXRzIGludG8gYSBsYXJnZXIgYWxpZ25tZW50LiAgUGxheSBnYW1lcyB3aXRoCglzdHFfdSBmb3IgbGFyZ2UgNC1ieXRlIGFsaWduZWQgYmxvY2tzLiAgVXNlIGxvYWQvbWFzay9zdG9yZQoJZm9yIGFwcHJvcHJlYXRlbHkgYWxpZ25lZCBoZWFkcyBhbmQgdGFpbHMuCgoyMDAwLTEyLTI5ICBBbGV4YW5kcmUgT2xpdmEgIDxhb2xpdmFAcmVkaGF0LmNvbT4KCgkqIGZ1bmN0aW9uLmMgKGFzc2lnbl9wYXJtcyk6IENvbnZlcnQgYXJndW1lbnRzIHBhc3NlZCBieQoJcmVmZXJlbmNlIHRvIHRoZSByaWdodCBtb2RlLgoKMjAwMC0xMi0yOCAgR2VvZmZyZXkgS2VhdGluZyAgPGdlb2Zma0ByZWRoYXQuY29tPgoKCSogYy1wYXJzZS5pbiAoc2VsZWN0X29yX2l0ZXJfc3RtdCk6IFVzZSB0cnV0aHZhbHVlX2NvbnZlcnNpb24KCW9uIHRoZSBjb25kaXRpb24gb2YgYSBGT1Igc3RhdGVtZW50LCBzbyB0aGF0IGl0IGdldHMgdHlwZWNoZWNrZWQKCWFuZCBvcHRpbWl6ZWQuCgoyMDAwLTEyLTI5ICBBbGV4YW5kcmUgT2xpdmEgIDxhb2xpdmFAcmVkaGF0LmNvbT4KCgkqIGMtZGVjbC5jIChncm9rZGVjbGFyYXRvcik6IFByZXZlbnQgY3Jhc2ggaW4gY2FzZSBvZiBvdmVyZmxvdyBpbgoJYXJyYXkgc2l6ZS4KCgkqIGNhbGxzLmMgKGVtaXRfbGlicmFyeV9jYWxsX3ZhbHVlXzEpOiBBZGQgdG8gY2FsbF9mdXNhZ2UgdGhlCglzdGFjayBzbG90IGFzc2lnbmVkIHRvIGFyZ3VtZW50IHBhc3NlZCBieSByZWZlcmVuY2UuCgoyMDAwLTEyLTI4ICBKZWZmcmV5IE9sZGhhbSAgPG9sZGhhbUBjb2Rlc291cmNlcnkuY29tPgoKCSogdG9wbGV2LmggKGV4dGVybiByZWFsbHlfc29ycnkpOiBSZW1vdmUgZXh0ZXJuIGRlY2xhcmF0aW9uIGZvcgogICAgICAgIG5vbmV4aXN0ZW50IGZ1bmN0aW9uLgoKMjAwMC0xMi0yOCAgSmVmZnJleSBPbGRoYW0gIDxvbGRoYW1AY29kZXNvdXJjZXJ5LmNvbT4KCgkqIHZhcmFzbS5jIChpbml0aWFsaXplcl9jb25zdGFudF92YWxpZF9wKTogSW5kaWNhdGUgc3VidHJhY3Rpb24gb2YKCXBvaW50ZXJzIHRvIHRoZSBzYW1lIHN0cmluZyBjb25zdGFudCBpcyBhYnNvbHV0ZS4KCjIwMDAtMTItMjggIEpvc2VwaCBTLiBNeWVycyAgPGpzbTI4QGNhbS5hYy51az4KCgkqIGMtY29tbW9uLmMgKGVudW0gZm9ybWF0X3R5cGUpOiBBZGQgc3RyZm1vbl9mb3JtYXRfdHlwZS4KCShkZWNsX2F0dHJpYnV0ZXMpOiBIYW5kbGUgZm9ybWF0IGF0dHJpYnV0ZXMgc3RyZm1vbiBhbmQKCV9fc3RyZm1vbl9fLgoJKEZNVF9GTEFHX1VTRV9ET0xMQVIsIEZNVF9GTEFHX1pFUk9fV0lEVEhfQkFELAoJRk1UX0ZMQUdfRU1QVFlfUFJFQ19PSyk6IERlZmluZS4KCShmb3JtYXRfY2hhcl9pbmZvKTogVXBkYXRlIGNvbW1lbnQgZm9yIGZsYWdfY2hhcnMuCgkoZm9ybWF0X2ZsYWdfc3BlYyk6IEFkZCBza2lwX25leHRfY2hhci4KCShmb3JtYXRfa2luZF9pbmZvKTogQWRkIGxlZnRfcHJlY2lzaW9uX2NoYXIuCgkocHJpbnRmX2ZsYWdfc3BlY3MsIHNjYW5mX2ZsYWdfc3BlY3MsIHN0cmZ0aW1lX2ZsYWdfc3BlY3MsCglmb3JtYXRfdHlwZXMpOiBVcGRhdGUgZm9yIHRoZXNlIG5ldyBzdHJ1Y3R1cmUgbWVtYmVycyBhbmQgZmxhZ3MuCgkodGltZV9jaGFyX3RhYmxlKTogTWFrZSBjb25zdC4KCShzdHJmbW9uX2xlbmd0aF9zcGVjcywgc3RyZm1vbl9mbGFnX3NwZWNzLCBzdHJmbW9uX2ZsYWdfcGFpcnMsCgltb25ldGFyeV9jaGFyX3RhYmxlKTogTmV3LgoJKGZvcm1hdF90eXBlcyk6IEFkZCBkZXRhaWxzIG9mIHN0cmZtb24gZm9ybWF0cy4KCShpbml0X2Z1bmN0aW9uX2Zvcm1hdF9pbmZvKTogQ3JlYXRlIGRlZmF1bHQgYXR0cmlidXRlIGZvciBzdHJmbW9uLgoJKGNoZWNrX2Zvcm1hdF9pbmZvX21haW4pOiBDaGVjayB0aGUgbmV3IGZsYWdzLiAgSGFuZGxlCglza2lwX25leHRfY2hhciBhbmQgbGVmdCBwcmVjaXNpb24uCgkqIHRvcGxldi5jIChkb2N1bWVudGVkX2xhbmdfb3B0aW9ucyk6IFVwZGF0ZSBkZXNjcmlwdGlvbiBvZgoJLVdmb3JtYXQuCgkqIGV4dGVuZC50ZXhpOiBEb2N1bWVudCBzdHJmbW9uIGZvcm1hdCBhdHRyaWJ1dGVzLiAgRG9jdW1lbnQKCWF0dHJpYnV0ZSBmb3JtcyBzdWNoIGFzIF9fcHJpbnRmX18uICBDbGFyaWZ5IGZvcm1hdF9hcmcgYXR0cmlidXRlCglkb2N1bWVudGF0aW9uLgoJKiBpbnZva2UudGV4aSAoLVdmb3JtYXQpOiBVcGRhdGUgZm9yIHN0cmZtb24gZm9ybWF0cy4KCjIwMDAtMTItMjggIEFuZHJlYXMgSmFlZ2VyICA8YWpAc3VzZS5kZT4KCgkqIGV4cG1lZC5jIChzdG9yZV9iaXRfZmllbGQpOiBGaXggbGFzdCBwYXRjaC4KCjIwMDAtMTItMjggIEFsZXhhbmRyZSBPbGl2YSAgPGFvbGl2YUByZWRoYXQuY29tPgoKCSogY29uZmlnL3NoL2NydDEuYXNtIChzdGFydF9sKTogYF9fU0g0X1NJTkdMRV9PTkxZX18nIHdhcyBtaXNzaW5nCgl0aGUgdHJhaWxpbmcgYF9fJy4KCjIwMDAtMTItMjggIEFsYW4gTGVob3Rza3kgIDxsZWhvdHNreUB0aWFjLm5ldD4KCgkqIGV4cG1lZC5jIChzdG9yZV9iaXRfZmllbGQpOiBDb3JyZWN0bHkgY29tcHV0ZSBzbWFsbGVzdCBtb2RlIHRoYXQKCWlzIHN1ZmZpY2llbnQgdG8gY29udGFpbiBhbGwgYml0cyB3ZSBhcmUgc3RvcmluZy4KCjIwMDAtMTItMjcgIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIGJ1aWx0aW5zLmMgKGJ1aWxkX2Z1bmN0aW9uX2NhbGxfZXhwcik6IE5ldyBmdW5jdGlvbi4gIFVzZSBpdAoJZXZlcnl3aGVyZSBpbiBsaWV1IG9mIG1hbnVhbGx5IGNvbnN0cnVjdGluZyBhIENBTExfRVhQUi4KCjIwMDAtMTItMjcgIENoYW5kcmFrYWxhIENoYXZ2YSAgPGNjaGF2dmFAcmVkaGF0LmNvbT4KCgkqIGNhbGxzLmMgKHN0b3JlX29uZV9hcmcpOiAgSWYgcGFybSBpcyBwYXNzZWQgYm90aCBpbiBzdGFjayBhbmQgaW4KCXJlZ2lzdGVyIGFuZCBvZmZzZXQgaXMgZ3JlYXRlciB0aGFuIHJlZ19wYXJtX3N0YWNrX3NwYWNlLCBzcGxpdAoJdGhlIG9mZnNldCBhbmQgY2FsbCBlbWl0X3B1c2hfaW5zbigpLgoKMjAwMC0xMi0yNyAgTmljayBDbGlmdG9uICA8bmlja2NAcmVkaGF0LmNvbT4KCgkqIGlmY3Z0LmMgKG5vY2VfZW1pdF9zdG9yZV9mbGFnKTogSGFuZGxlIGp1bXAgaW5zbnMgdGhhdCBhcmUKCVBBUkFMTEVMLgoKMjAwMC0xMi0yNyAgQWxleGFuZHJlIE9saXZhICA8YW9saXZhQHJlZGhhdC5jb20+CgoJKiBydGwuYyAoY29weV9tb3N0X3J0eCwgc2hhbGxvd19jb3B5X3J0eCk6IENvcHkgZnJhbWVfcmVsYXRlZAoJZmxhZy4KCjIwMDAtMTItMjcgIEJydWNlIEtvcmIgIDxia29yYkBnbnUub3JnPgoKCSogZml4aW5jL01ha2VmaWxlLmluOiBmaXggZm9yIGFuY2llbnQgQm91cm5lIHNoZWxsCgkqIGZpeGluYy9NYWtlZmlsZS5CRU9TOiBvYnNvbGV0ZQoJKiBmaXhpbmMvTWFrZWZpbGUuRE9TOiBvYnNvbGV0ZQoJKiBmaXhpbmMvZml4aW5jbC5zaChMSU5LUyk6IHVzZSBgdGVzdCAtZCcgcmF0aGVyIHRoYW4gYGxzJyBmb3IgdGVzdGluZwoKMjAwMC0xMi0yNyAgQmVybmQgU2NobWlkdCAgPGJlcm5kc0ByZWRoYXQuY29tPgoKCSogc2NoZWQtZGVwcy5jIChnZXRfY29uZGl0aW9uLCBjb25kaXRpb25zX211dGV4X3ApOiBOZXcgZnVuY3Rpb25zLgoJKGFkZF9kZXBlbmRlbmNlKTogVXNlIHRoZW0gdG8gYXZvaWQgYWRkaW5nIHVubmVjZXNzYXJ5IGRlcGVuZGVuY2llcwoJYmV0d2VlbiBjb25kaXRpb25hbGx5IGV4ZWN1dGVkIGluc25zLgoJKHNjaGVkX2FuYWx5emVfMSwgc2NoZWRfYW5hbHl6ZV8yLCBzY2hlZF9hbmFseXplX2luc24pOiBEb24ndCBmcmVlCglkZXBlbmRlbmN5IGxpc3RzIGlmIGN1cnJlbnQgaW5zbiBpcyBhIENPTkRfRVhFQy4KCjIwMDAtMTItMjcgIEdlb2ZmcmV5IEtlYXRpbmcgIDxnZW9mZmtAcmVkaGF0LmNvbT4KCgkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLm1kIChkZWZpbmVfYXR0ciAibGVuZ3RoIik6IENvcnJlY3QKCWNhbGN1bGF0aW9uLgoKMjAwMC0xMi0yNiAgS2F6dSBIaXJhdGEgIDxrYXp1QGh4aS5jb20+CgoJKiBjb25maWcvaDgzMDAvaDgzMDAuYzogRml4IGEgY29tbWVudCB0eXBvLgoJKGdldF9zaGlmdF9hbGcpOiBGaXggYSB0eXBvIGluIHRoZSBhc3NlbWJseSBjb2RlIGZvciAxMi1iaXQKCUFTSElGVFJUIGluIEhJbW9kZS4gIERvIG5vdCBvdXRwdXQgZXh0cmEgd2hpdGVzcGFjZSBhZnRlciBvbmUgbGluZQoJb2YgYXNzZW1ibHkgY29kZS4gIE91dHB1dCBhIHRhYiBhZnRlciBhbiBvcGNvZGUgaW5zdGVhZCBvZiBhCglzcGFjZS4KCShlbWl0X2Ffc2hpZnQpOiBPdXRwdXQgYSB0YWIgYWZ0ZXIgYW4gb3Bjb2RlIGluc3RlYWQgb2YgYSBzcGFjZS4KCjIwMDAtMTItMjMgIE1hcmVrIE1pY2hhbGtpZXdpY3ogIDxtYXJla21AbGludXgub3JnLnBsPgoKCSogY29uZmlnL2F2ci9hdnIuYyAob3V0X21vdnFpX3JfbXIsIG91dF9tb3ZoaV9yX21yLCBvdXRfbW92c2lfcl9tciwKCW91dF9tb3ZzaV9tcl9yLCBvdXRfbW92cWlfbXJfciwgb3V0X21vdmhpX21yX3IpOiBVc2UgJW8gaW5zdGVhZCBvZgoJJTQgaW4gb3V0cHV0IHRlbXBsYXRlcywgZG8gbm90IG1vZGlmeSBvcGVyYW5kcyBwYXNzZWQgYnkgdGhlIGNhbGxlci4KCjIwMDAtMTItMjMgIEpvc2VwaCBTLiBNeWVycyAgPGpzbTI4QGNhbS5hYy51az4KCgkqIGJ1aWx0aW5zLmRlZiAoQlVJTFRfSU5fTEFCUywgQlVJTFRfSU5fTExBQlMsIEJVSUxUX0lOX0lNQVhBQlMpOgoJRG9uJ3QgZGVmaW5lLgoJKiBidWlsdGlucy5jIChleHBhbmRfYnVpbHRpbik6IERvbid0IGhhbmRsZSBCVUlMVF9JTl9MQUJTLAoJQlVJTFRfSU5fTExBQlMgYW5kIEJVSUxUX0lOX0lNQVhBQlMuCgkqIGMtY29tbW9uLmMgKGNfY29tbW9uX25vZGVzX2FuZF9idWlsdGlucyk6IFVzZSBCVUlMVF9JTl9BQlMgZm9yCglidWlsdGluIGxhYnMsIGxsYWJzIGFuZCBpbWF4YWJzLgoJKGV4cGFuZF90cmVlX2J1aWx0aW4pOiBEb24ndCBoYW5kbGUgQlVJTFRfSU5fTEFCUywgQlVJTFRfSU5fTExBQlMKCWFuZCBCVUlMVF9JTl9JTUFYQUJTLgoKMjAwMC0xMi0yMyAgSm9zZXBoIFMuIE15ZXJzICA8anNtMjhAY2FtLmFjLnVrPgoKCSogYy1jb21tb24uYyAoYnVpbHRpbl9mdW5jdGlvbl8yKTogTmV3IGZ1bmN0aW9uLgoJKGNfY29tbW9uX25vZGVzX2FuZF9idWlsdGlucyk6IFVzZSBpdCB0byBkZWZpbmUgZWFjaCBwYWlyIChmb28sCglfX2J1aWx0aW5fZm9vKSBvZiBidWlsdGlucyBpbiBvbmUgcGxhY2UuCgoyMDAwLTEyLTIyICBKb3NlcGggUy4gTXllcnMgIDxqc20yOEBjYW0uYWMudWs+CgoJKiBnY2NidWcuaW46IEFkZCBsaWJnY2ogYW5kIHByZXByb2Nlc3NvciBjYXRlZ29yaWVzLgoKMjAwMC0xMi0yMiAgQmVybmQgU2NobWlkdCAgPGJlcm5kc0ByZWRoYXQuY29tPgoKCSogY29uZmlnL2lhNjQvaWE2NC5jIChpdGFuaXVtX3Jlb3JkZXIpOiBPbmx5IHNjaGVkdWxlIHN0b3BzIGluCgl0aGUgZmluYWwgc2NoZWR1bGluZyBwYXNzLgoKMjAwMC0xMi0yMiAgTmljayBDbGlmdG9uICA8bmlja2NAcmVkaGF0LmNvbT4KCgkqIGNvbmZpZy9hcm0vYXJtLmggKHN0cnVjdCBtYWNoaW5lX2Z1bmN0aW9uKTogQWRkIG5ldyBmaWVsZAoJJ2xyX3NhdmVfZWxpbWluYXRlZCcuCgkqIGNvbmZpZy9hcm0vYXJtLmMgKGFybV9jb21wdXRlX3NhdmVfcmVnX21hc2spOiBEbyBub3QgaW5jbHVkZSB0aGUKCWxpbmsgcmVnaXN0ZXIgaWYgaXRzIHNhdmUgaGFzIGJlZW4gZWxpbWluYXRlZC4KCShvdXRwdXRfYXJtX3Byb2xvZ3VlKTogTWVudGlvbiBpZiB0aGUgc2F2ZSBvZiB0aGUgbGluayByZWdpc3RlcgoJaGFzIGJlZW4gZWxpbWluYXRlZC4KCShvdXRwdXRfYXJtX2VwaWxvZ3VlKTogUmVuYW1lICdsaXZlX3JlZ3NfbWFzaycgdG8KCSdzYXZlZF9yZWdzX21hc2snLgoJVGVzdCAnc2F2ZWRfcmVnc19tYXNrJyBmb3IgdGhlIGxpbmsgcmVnaXN0ZXIsIG5vdCByZWdzX2V2ZXJfbGl2ZS4KCShhcm1fZXhwYW5kX3Byb2xvZ3VlKTogSWYgdGhlIGxpbmsgcmVnaXN0ZXIgaGFzIG5vdCBiZWVuIHNhdmVkIHNldAoJbHJfc2F2ZV9lbGltaW5hdGVkIGFuZCBlbWl0IGEgVVNFIHRvIHByZXZlbnQgbGF0ZXIgcGFzc2VzIGZyb20KCXNjYXZlbmdpbmcgaXQuCgoJKiBkd2FyZjJvdXRfZnJhbWVfZGVidWdfZXhwcjogQWxsb3cgdGhlIChzY3JhdGNoKSBmcmFtZQoJcG9pbnRlciB0byBiZSBpbml0aWFsaXplZCBmcm9tIHRoZSBzdGFjayBwb2ludGVyIHBsdXMgYQoJY29uc3RhbnQuCgoyMDAwLTEyLTIyICBCZXJuZCBTY2htaWR0ICA8YmVybmRzQHJlZGhhdC5jb20+CgoJKiByZWdyZW5hbWUuYyAoc3RydWN0IGR1X2NoYWluKTogTmV3IGZpZWxkICJlYXJseWNsb2JiZXIiLgoJKGVudW0gc2Nhbl9hY3Rpb25zKTogUmVtb3ZlIHVudXNlZCBlbnRyeSAibm90ZV9yZWZlcmVuY2UiLgoJKGVudW0gc2Nhbl9hY3Rpb25zX25hbWUpOiBMaWtld2lzZS4KCShub3RlX3NldHMsIGNsZWFyX2RlYWRfcmVncywgbWVyZ2Vfb3ZlcmxhcHBpbmdfcmVncyk6IE5ldyBzdGF0aWMKCWZ1bmN0aW9ucy4KCShyZWdyZW5hbWVfb3B0aW1pemUpOiBVc2UgdGhlbSB0byBjb21wdXRlIHVuYXZhaWxhYmxlIHJlZ3M7IGdldAoJcmlkIG9mIHRoZSBtb3JlIHNpbXBsZW1pbmRlZCBjb2RlIHdlIHVzZWQgdG8gaGF2ZSBoZXJlLgoJVXNlIGEgdGljayBhcnJheSB0byBlbnN1cmUgcmVnaXN0ZXJzIGFyZSBhbGxvY2F0ZWQgaW4gYSBtb3JlCglyb3VuZC1yb2JpbiB3YXkuICBEaXNhYmxlIGNvZGUgdGhhdCBvbmx5IG9wdGltaXplcyByZWdpc3RlcnMKCXRoYXQgd2VyZSBzZWVuIG1vcmUgdGhhbiBvbmNlLgoJKHJlZmVyZW5jZWRfcmVncyk6IFJlbW92ZSB2YXJpYWJsZS4KCShzY2FuX3J0eF9yZWcpOiBOZXcgYXJnICJlYXJseWNsb2JiZXIiLiAgQWxsIGNhbGxlcnMgY2hhbmdlZC4KCVN0b3JlIGl0cyB2YWx1ZSBpbiBuZXdseSBnZW5lcmF0ZWQgZHVfY2hhaW4gc3RydWN0dXJlcy4KCUFkZCBuZXcgZHVfY2hhaW5zIGF0IHRoZSBlbmQsIG5vdCB0aGUgc3RhcnQsIG9mIHRoZSBsaXN0LgoJRG9uJ3QgaGFuZGxlIHRoZSAibm90ZV9yZWZlcmVuY2UiIGFjdGlvbi4KCShzY2FuX3J0eCk6IE5ldyBhcmcgImVhcmx5Y2xvYmJlciIuICBBbGwgY2FsbGVycyBjaGFuZ2VkLgoJKGJ1aWxkX2RlZl91c2UpOiBMb3NlIGNvZGUgdG8ga2VlcCB0cmFjayBvZiByZWZlcmVuY2VkIHJlZ3MuCgoyMDAwLTEyLTIyICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBNYWtlZmlsZS5pbiAoc2NoZWQtZGVwcy5vLCBzY2hlZC1yZ24ubyk6IEZpeCBkZXBlbmRlbmN5IHR5cG8uCgoJKiBmcC1iaXQuaCAodXNpX3RvX2Zsb2F0KTogQWRkIHByb3RvdHlwZS4KCgkqIGkzODYuYyAoaXg4Nl9leHBhbmRfYnVpbHRpbik6IERlbGV0ZSB1bnVzZWQgbGFiZWwuCgoJKiBkd2FyZjJvdXQuYyAoZmlsZV9pbmZvX2NtcCk6IFByb3RvdHlwZS4KCShkd2FyZjJvdXRfbGluZSk6IEhpZGUgdmFyaWFibGUgYG9sZF9pbl91c2UnLgoKCSogb2JqYy1hY3QuYyAob2JqY19mYXRhbCk6IERlbGV0ZS4KCgkqIHNjaGVkLXZpcy5jICh2aXN1YWxpemVfc3RhbGxfY3ljbGVzKTogUmVtb3ZlIHVudXNlZCB2YXJpYWJsZS4KCgkqIHN5c3RlbS5oIChnZXRvcHQpOiBGaXggZXJyb3IgaW4gbGFzdCBjaGFuZ2UuCgoJKiB2YXJhc20uYyAoYXNzZW1ibGVfdHJhbXBvbGluZV90ZW1wbGF0ZSk6IENvbnN0aWZ5LgoKMjAwMC0xMi0yMiAgSmFzb24gTWVycmlsbCAgPGphc29uQHJlZGhhdC5jb20+CgoJKiBjb2xsZWN0Mi5jIChtYWluKTogVXNlIGF1dG9fZGVtYW5nbGluZy4KCjIwMDAtMTItMjIgIEFsZXhhbmRyZSBPbGl2YSAgPGFvbGl2YUByZWRoYXQuY29tPgoKCSogZnVuY3Rpb24uYyAoYXNzaWduX3Bhcm1zKTogVXBkYXRlIHBhcm0ncyBERUNMX0lOQ09NSU5HX1JUTAoJd2hlbiBvcHRpbWl6aW5nIFBBUkFMTEVMIHRvIFJFRy4KCjIwMDAtMTItMjIgIEdyYWhhbSBTdG90dCAgPGdyYWhhbXNAcmVkaGF0LmNvbT4KCgkqIHJlbG9hZC5jICh1cGRhdGVfYXV0b19pbmNfbm90ZXMpOiBOZXcsIGJyb2tlbiBvdXQgZnJvbSAuLi4KCShmaW5kX3JlbG9hZHNfYWRkcmVzc18xKTogLi4uIHVzZSBoZXJlLCBhbHNvIGNvcnJlY3QgcG9zc2libGUKCXVzZSBvZiB1bmluaXRpYWxpemVkIHJlbG9hZG51bS4KCjIwMDAtMTItMjEgIERhdmlkIE8nQnJpZW4gIDxvYnJpZW5ARnJlZUJTRC5vcmc+CgoJKiBjb25maWcvZnJlZWJzZC5oIChMSUJfU1BFQyk6IHJlbW92ZSAta3RocmVhZCBvcHRpb24uCgoyMDAwLTEyLTIyICBNaWNoYWVsIEhheWVzICA8bS5oYXllc0BlbGVjLmNhbnRlcmJ1cnkuYWMubno+CgoJKiByZXNvdXJjZS5jIChtYXJrX3NldF9yZXNvdXJjZXMpOiBVc2UgTUFSS19TUkNfREVTVCBmb3IKCVBSRV9NT0RJRlkgYW5kIFBPU1RfTU9ESUZZIGNhc2VzLgoKCSogcnRsYW5hbC5jIChzaWRlX2VmZmVjdHNfcCk6IEhhbmRsZSBQUkVfTU9ESUZZIGFuZCBQT1NUX01PRElGWS4KCjIwMDAtMTItMjIgIE1pY2hhZWwgSGF5ZXMgIDxtLmhheWVzQGVsZWMuY2FudGVyYnVyeS5hYy5uej4KCgkqIG1kLnRleGkgKExvb3BpbmcgUGF0dGVybnMpOiBOZXcgbm9kZS4KCjIwMDAtMTItMjEgIEpvc2VwaCBTLiBNeWVycyAgPGpzbTI4QGNhbS5hYy51az4KCgkqIGdjYy50ZXhpLCBjcHAudGV4aTogVXBkYXRlIGxhc3QtdXBkYXRlZCBkYXRlcy4KCjIwMDAtMTItMjEgIENoYW5kcmFrYWxhIENoYXZ2YSAgPGNjaGF2dmFAcmVkaGF0LmNvbT4KCgkqIHZhcmFzbS5jIChvdXRwdXRfYWRkcmVzc2VkX2NvbnN0YW50cyk6IFVzZSBsYW5ndWFnZSBzcGVjaWZpYwoJZXhwYW5kZXIgb24gdW5rbm93biBub2Rlcy4KCjIwMDAtMTItMjEgIEdyYWhhbSBTdG90dCAgPGdyYWhhbXNAcmVkaGF0LmNvbT4KCgkqIGNvbWJpbmUuYyAoZGlzdHJpYnV0ZV9ub3Rlcyk6IEhhbmRsZSBSRUdfTk9OX0xPQ0FMX0dPVE8gbm90ZXMuCgoyMDAwLTEyLTIxICBCZXJuZCBTY2htaWR0ICA8YmVybmRzQHJlZGhhdC5jb20+CgoJKiBNYWtlZmlsZS5pbiAob3V0X29iamVjdF9maWxlKTogRGVwZW5kIG9uIHNjaGVkLWludC5oLgoJKiBydGwuaCAoc2luZ2xlX3NldF8xKTogTmV3IG1hY3JvLgoJKHNpbmdsZV9zZXRfMik6IFJlbmFtZWQgZnJvbSBzaW5nbGVfc2V0XzEgYW5kIGV4dHJhIGFyZ3VtZW50IGFkZGVkLgoJKiBydGxhbmFsLmMgKHNpbmdsZV9zZXRfMik6IExpa2V3aXNlLgoKCSogY29uZmlnL2lhNjQvaWE2NC1wcm90b3MuaCAoZ2V0X2J1bmRsZV9uYW1lLCBpYTY0X2lzc3VlX3JhdGUsCglpYTY0X2FkanVzdF9jb3N0LCBpYTY0X3NjaGVkX2luaXQsIGlhNjRfc2NoZWRfZmluaXNoLAoJaWE2NF9zY2hlZF9yZW9yZGVyLCBpYTY0X3NjaGVkX3Jlb3JkZXIyLCBpYTY0X3ZhcmlhYmxlX2lzc3VlKToKCURlY2xhcmUuCgkqIGNvbmZpZy9pYTY0L2lhNjQuYzogSW5jbHVkZSAic2NoZWQtaW50LmgiLgoJKGhhcmRfcmVnbm9fcmVuYW1lX29rKTogQWxzbyBkaXNhbGxvdyByZW5hbWluZyBmcm9tIHRoZSB2YXJpb3VzCglyZWdfc2F2ZV8qIHJlZ3MuCgkoaWE2NF9zYWZlX2l0YW5pdW1fcmVxdWllcnNfdW5pdDAsIGlhNjRfc2FmZV9pdGFuaXVtX2NsYXNzLAoJaWE2NF9zYWZlX3R5cGUsIGluaXRfaW5zbl9ncm91cF9iYXJyaWVycywgZ3JvdXBfYmFycmllcl9uZWVkZWRfcCwKCXNhZmVfZ3JvdXBfYmFycmllcl9uZWVkZWRfcCwgZml4dXBfZXJyYXRhKTogTmV3IHN0YXRpYyBmdW5jdGlvbnMuCgkocnR4X25lZWRzX2JhcnJpZXIpOiAgSGFuZGxlIGJ1bmRsZSBzZWxlY3RvciBhbmQgY3ljbGUgZGlzcGxheQoJaW5zbnMuCgkoZW1pdF9pbnNuX2dyb3VwX2JhcnJpZXJzKTogQWNjZXB0IGFkZGl0aW9uYWwgRklMRSAqIGFyZy4gIEFsbAoJY2FsbGVycyBjaGFuZ2VkLiAgUmV3b3JrIHRvIG9ubHkgZ2VuZXJhdGUgc3RvcCBiaXRzIGJldHdlZW4KCWJhc2ljIGJsb2NrcyB0aGF0IGhhdmVuJ3QgYmVlbiBpbnNlcnRlZCBieSBzY2hlZHVsaW5nLgoJKHN0cnVjdCBidW5kbGUsIHN0cnVjdCBpYTY0X3BhY2tldCk6IE5ldyBzdHJ1Y3R1cmVzLgoJKE5SX0JVTkRMRVMsIE5SX1BBQ0tFVFMpOiBOZXcgbWFjcm9zLgoJKGJ1bmRsZSwgcGFja2V0cywgdHlwZV9uYW1lcyk6IE5ldyBzdGF0aWMgYXJyYXlzLgoJKGlhNjRfZmluYWxfc2NoZWR1bGUpOiBOZXcgdmFyaWFibGUuCgkoaWE2NF9zaW5nbGVfc2V0LCBpbnNuX21hdGNoZXNfc2xvdCwgaWE2NF9lbWl0X2luc25fYmVmb3JlLAoJZ2VuX25vcF90eXBlLCBmaW5pc2hfbGFzdF9oZWFkLCByb3RhdGVfb25lX2J1bmRsZSwgcm90YXRlX3R3b19idW5kbGVzLAoJY3ljbGVfZW5kX2ZpbGxfc2xvdHMsIHBhY2tldF9tYXRjaGVzX3AsIGdldF9zcGxpdCwgZmluZF9iZXN0X2luc24sCglmaW5kX2Jlc3RfcGFja2V0LCBpdGFuaXVtX3Jlb3JkZXIsIGR1bXBfY3VycmVudF9wYWNrZXQsIHNjaGVkdWxlX3N0b3ApOgoJTmV3IHN0YXRpYyBmdW5jdGlvbnMuCgkoaWE2NF9pc3N1ZV9yYXRlLCBpYTY0X3NjaGVkX2luaXQsIGlhNjRfc2NoZWRfcmVvcmRlciwKCWlhNjRfc2NoZWRfZmluaXNoLCBpYTY0X3NjaGVkX3Jlb3JkZXIyLCBpYTY0X3ZhcmlhYmxlX2lzc3VlKTogTmV3CglmdW5jdGlvbnMuCgkoaWE2NF9yZW9yZyk6IFBlcmZvcm0gYSBmaW5hbCBzY2hlZHVsaW5nIHBhc3MuCgkqIGNvbmZpZy9pYTY0L2lhNjQuaCAoQ09OU1RfQ09TVFMpOiBTbGlnaHRseSBpbmNyZWFzZSBTWU1CT0xfUkVGIGNvc3RzLgoJKE1BWF9DT05ESVRJT05BTF9FWEVDVVRFLCBBREpVU1RfQ09TVCwgSVNTVUVfUkFURSwgTURfU0NIRURfSU5JVCwKCU1EX1NDSEVEX1JFT1JERVIsIE1EX1NDSEVEX1JFT1JERVIyLCBNRF9TQ0hFRF9GSU5JU0gsCglNRF9TQ0hFRF9WQVJJQUJMRV9JU1NVRSk6IERlZmluZSBtYWNyb3MuCgkoaWE2NF9maW5hbF9zY2hlZHVsZSk6IERlY2xhcmUgdmFyaWFibGUuCgkqIGNvbmZpZy9pYTY0L2lhNjQubWQgKGF0dHIgaXRhbml1bV9jbGFzcyk6IEFkZCBzb21lIG1vcmUgY2xhc3Nlcy4KCShhdHRyIHR5cGUpOiBBY2NvdW50IGZvciB0aGVtLgoJKGl0YW5pdW1fcmVxdWlyZXNfdW5pdDApOiBOZXcgYXR0cmlidXRlLgoJKGZ1bmN0aW9uIHVuaXRzKTogUmV3cml0ZS4KCShzb21lIHNwbGl0dGVycyk6IERvbid0IGNyZWF0ZSBzY2hlZHVsaW5nIGJhcnJpZXJzIGhlcmUuCgkoZ3Jfc3BpbGxfaW50ZXJuYWwsIGdyX3Jlc3RvcmVfaW50ZXJuYWwpOiBEb24ndCBwcmVkaWNhdGUgdGhlCglwc2V1ZG8tb3AuCgkobm9wX20sIG5vcF9pLCBub3BfZiwgbm9wX2IsIG5vcF94LCBjeWNsZV9kaXNwbGF5LCBjeWNsZV9kaXNwbGF5XzEsCglidW5kbGVfc2VsZWN0b3IpOiBOZXcgcGF0dGVybnMuCgkoaW5zbl9ncm91cF9iYXJyaWVyKTogTm93IGhhcyBhbiBvcGVyYW5kLgoKMjAwMC0xMi0yMSAgREogRGVsb3JpZSAgPGRqQHJlZGhhdC5jb20+CgoJKiBkd2FyZjJvdXQuYyAoc2ltcGxlX2RlY2xfYWxpZ25faW5fYml0cyk6IG5ldwoJKGZpZWxkX2J5dGVfb2Zmc2V0KTogVHJ5IGJvdGggdGhlIHR5cGUgYWxpZ24gYW5kIHRoZQoJZGVjbCBhbGlnbiwgdXNlIHdoaWNoZXZlciB3b3JrcywgcHJlZmVycmluZyB0aGUgdHlwZSBhbGlnbi4KCjIwMDAtMTItMjEgIEpvc2VwaCBTLiBNeWVycyAgPGpzbTI4QGNhbS5hYy51az4KCgkqIGdjY2J1Zy5pbjogRml4IHR5cG8uCgoyMDAwLTEyLTIwICBCZW5qYW1pbiBLb3NuaWsgIDxia296QHJlZGhhdC5jb20+CgoJKiBNYWtlZmlsZS5pbiAoZ2NjX2d4eF90YXJnZXRfaW5jbHVkZV9kaXIpOiBVc2UgaW5zdGVhZCBvZgoJYnVpbGRfdG9vbGRpciBhbmQgbGlic3RkY3h4X2luY2Rpci4KCjIwMDAtMTItMjAgIFJvYmVydCBMaXBlIDxyb2JlcnRsaXBlQHVzYS5uZXQ+CgoJKiBoYWlmYS1zY2hlZC5jIChzY2hlZHVsZV9ibG9jayk6IFByb3ZpZGUgZW1wdHkgc291cmNlIHN0YXRlbWVudAoJaWYgbm90IE1EX1NDSEVEX1JFT1JERVIyLgoKMjAwMC0xMi0yMCAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCgkqIHJ0bC5oIChSRUdfTk9OX0xPQ0FMX0dPVE8pOiBOZXcuCgkqIHJ0bC5jIChyZWdfbm90ZV9uYW1lKTogVXBkYXRlLgoJKiBzdG10LmMgKGV4cGFuZF9nb3RvKTogRW1pdCBhIFJFR19OT05fTE9DQUxfR09UTyBub3RlLgoJKiBidWlsdGlucy5jIChleHBhbmRfYnVpbHRpbl9sb25nam1wKTogTGlrZXdpc2UuCgkqIGZsb3cuYyAobWFrZV9lZGdlcyk6IENoZWNrIGZvciBSRUdfTk9OX0xPQ0FMX0dPVE8gYW5kIGRvCglub3QgZW1pdCBhbiBlZGdlLgoKMjAwMC0xMi0yMCAgTWFyZWsgTWljaGFsa2lld2ljeiAgPG1hcmVrbUBsaW51eC5vcmcucGw+CgoJKiBjb25maWcvYXZyL2F2ci5jIChvdXRfbW92c2lfcl9tciwgb3V0X21vdnNpX21yX3IsIG91dF9tb3ZoaV9tcl9yKToKCURvIG5vdCBvdXRwdXQgdW5kZWZpbmVkIG9wY29kZXMgd2hlcmUgc291cmNlIG9yIGRlc3RpbmF0aW9uIHJlZ2lzdGVyCglvdmVybGFwcyB3aXRoIG1vZGlmaWVkIHBvaW50ZXIgcmVnaXN0ZXIuICBIYW5kbGUgKFggKyBkKSBhZGRyZXNzZXMuCgkqIGNvbmZpZy9hdnIvYXZyLm1kICgqbW92aGksICptb3ZzaSwgKm1vdnNmKTogQ29ycmVjdCBpbnNuIGxlbmd0aAoJaW4gYWx0ZXJuYXRpdmVzIHdpdGggbWVtb3J5IG9wZXJhbmQuCgoyMDAwLTEyLTIwICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEByZWRoYXQuY29tPgoKCSogYy10eXBlY2suYyAoYnVpbGRfYXNtX3N0bXQpOiBOZXcsIGJyb2tlbiBvdXQgZnJvbSAuLi4KCShjX2V4cGFuZF9hc21fb3BlcmFuZHMpOiAuLi4gaGVyZS4gIEp1c3QgZG8gcnRsIGV4cGFuc2lvbi4KCShjX2V4cGFuZF9yZXR1cm4pOiBSZXR1cm4gdGhlIG5ldyBzdG10IG5vZGUuCgkoY19zdGFydF9jYXNlLCBkb19jYXNlKTogTGlrZXdpc2UuCgkqIGMtY29tbW9uLmMgKGNfZXhwYW5kX2V4cHJfc3RtdCk6IExpa2V3aXNlLgoJKiBjLWNvbW1vbi5oOiBVcGRhdGUgZGVjbGFyYXRpb25zLgoJKiBjLXRyZWUuaDogTGlrZXdpc2UuCgkqIGMtc2VtYW50aWNzLmMgKGJ1aWxkX3N0bXQpOiBVc2UgU1RNVF9MSU5FTk8gbm90IFRSRUVfQ09NUExFWElUWS4KCSogYy1wYXJzZS5pbiAoZm5kZWYpOiBTZXQgREVDTF9TT1VSQ0VfTElORSB0byB0aGUgb3BlbiBicmFjZS4KCShuZXN0ZWRfZnVuY3Rpb24sIG5vdHlwZV9uZXN0ZWRfZnVuY3Rpb24pOiBMaWtld2lzZS4KCShjb21wc3RtdCk6IFJldHVybiB0aGUgY29tcG91bmQgc3RhdGVtZW50IG5vdCB0aGUgYmluZGluZyBsZXZlbC4KCShsaW5lbm9fbGFiZWxlZF9zdG10KTogU2ltcGxpZnkuCgkobGluZW5vX3N0bXQsIGxpbmVub19sYWJlbCk6IFNldCBTVE1UX0xJTkVOTy4KCShzdG10LCBsYWJlbCk6IFJldHVybiB0aGUgbmV3IHN0bXQgbm9kZS4KCjIwMDAtMTItMjAgIEJlcm5kIFNjaG1pZHQgIDxiZXJuZHNAcmVkaGF0LmNvbT4KCgkqIE1ha2VmaWxlLmluIChPQkpTKTogQWRkIHNjaGVkLWViYi5vLgoJKHNjaGVkLWViYi5vKTogTmV3IHJ1bGUuCgkoc2NoZWQtdmlzLm8pOiBEZXBlbmQgb24gaGFyZC1yZWctc2V0LmggYW5kICQoQkFTSUNfQkxPQ0tfSCkuCgkoaGFpZmEtc2NoZWQubyk6IERlcGVuZCBvbiBpbnNuLWZsYWdzLmguCgkqIGhhaWZhLXNjaGVkLmM6IEluY2x1ZGUgImluc24tZmxhZ3MuaCIuCgkocHJpb3JpdHkpOiBEb24ndCBhY2Nlc3MgQkxPQ0tfTlVNLCB1c2UgdGhlIG5ldyBjb250cmlidXRlc190b19wcmlvcml0eQoJY2FsbGJhY2suCgkqIHJ0bC5oIChzY2hlZHVsZV9lYmJzKTogRGVjbGFyZS4KCSogc2NoZWQtaW50LmggKHN0cnVjdCBzY2hlZF9pbmZvKTogQWRkIG5ldyBtZW1iZXJzCgljb250cmlidXRlc190b19wcmlvcml0eSBhbmQgY29tcHV0ZV9qdW1wX3JlZ19kZXBlbmRlbmNpZXMuCgkqIHNjaGVkLXJnbi5jIChjb250cmlidXRlc190b19wcmlvcml0eSwgY29tcHV0ZV9qdW1wX3JlZ19kZXBlbmRlbmNpZXMpOgoJTmV3IGZ1bmN0aW9ucy4KCShyZWdpb25fc2NoZWRfaW5mbyk6IEFkZCB0aGVtLgoJKiBzY2hlZC12aXMuYzogSW5jbHVkZSAiaGFyZC1yZWctc2V0LmgiIGFuZCAiYmFzaWMtYmxvY2suaCIuCgkqIHNjaGVkLWViYi5jOiBOZXcgZmlsZS4KCSogc2NoZWQtZGVwcy5jIChzY2hlZF9hbmFseXplX2luc24pOiBBZGQgY29kZSB0byBoYW5kbGUgSlVNUF9JTlNOcy4KCgkqIGZsb3cuYyAoaW9yX3JlZ19jb25kLCBhbmRfcmVnX2NvbmQsIGVsaW1fcmVnX2NvbmQpOiBQcm9wZXJseQoJaGFuZGxlIGFsbCByZWxhdGlvbmFsIG9wZXJhdG9ycy4KCjIwMDAtMTItMjAgIEFsZXhhbmRyZSBPbGl2YSAgPGFvbGl2YUByZWRoYXQuY29tPgoKCSogZmluYWwuYyAob3V0cHV0X2FkZHJfY29uc3QpOiBVc2UgQVNNX09VVFBVVF9TWU1CT0xfUkVGLgoJKiB0bS50ZXhpOiBEb2N1bWVudCBpdC4KCjIwMDAtMTItMTkgIEJlbmphbWluIEtvc25payAgPGJrb3pAcmVkaGF0LmNvbT4KCgkqIE1ha2VmaWxlLmluICgtREdQTFVTUExVU19UT09MX0lOQ0xVREVfRElSKTogVXNlIGJ1aWxkX3Rvb2xkaXIKCWluc3RlYWQgb2YgZ2NjX3Rvb2xkaXIuCgoyMDAwLTEyLTE5ICBKb2huIERhdmlkIEFuZ2xpbiAgPGRhdmVAaGlhdWx5MS5oaWEubnJjLmNhPgoKCSogc3lzdGVtLmggKGdldG9wdCk6IFVwZGF0ZSBwcm90b3R5cGUgdG8gbWF0Y2ggaW5jbHVkZS9nZXRvcHQuaC4KCjIwMDAtMTItMTkgIEpvaG4gRGF2aWQgQW5nbGluICA8ZGF2ZUBoaWF1bHkxLmhpYS5ucmMuY2E+CgoJRnJvbSBKZWZmIExhdy4KCSogcGEuYyAoYmFzZXJlZ19vcGVyYW5kKTogU2ltcGxpZnkuCgoyMDAwLTEyLTE5ICBCZXJuZCBTY2htaWR0ICA8YmVybmRzQHJlZGhhdC5jby51az4KCgkqIGhhaWZhLXNjaGVkLmMgKHJtX2xpbmVfbm90ZXMpOiBBcmd1bWVudHMgYXJlIG5vdyBoZWFkIGFuZCB0YWlsLAoJbm90IGJsb2NrIG51bWJlci4gIEFsbCBjYWxsZXJzIGFuZCBwcm90b3R5cGUgY2hhbmdlZC4KCShzZXRfcHJpb3JpdGllcyk6IExpa2V3aXNlLgoJKHNhdmVfbGluZV9ub3Rlcyk6IEFkZCBoZWFkIGFuZCB0YWlsIGFyZ3VtZW50czsgYWxsIGNhbGxlcnMgYW5kCglwcm90b3R5cGUgY2hhbmdlZC4KCShyZXN0b3JlX2xpbmVfbm90ZXMpOiBMaWtld2lzZS4gIERvbid0IGNyYXNoIG9uIGluc25zIGdlbmVyYXRlZAoJZHVyaW5nIHNjaGVkdWxpbmcuCgkoc2NoZWR1bGVfYmxvY2spOiBEb24ndCB1c2UgQkxPQ0tfSEVBRC9CTE9DS19FTkQgbWFjcm9zLgoJQ2FsbCBNRF9TQ0hFRF9JTklUIHdpdGggYWRkaXRpb25hbCBhcmd1bWVudC4KCVdoZW4gc3RhcnRpbmcgYSBuZXcgY3ljbGUsIGVtaXQgY3ljbGVfZGlzcGxheSBpbnNucyBpZiBhdmFpbGFibGUuCglEb24ndCBzdG9wIHNjaGVkdWxpbmcgd2hlbiBlbmNvdW50ZXJpbmcgYSBKVU1QX0lOU04sIGJ1dCBhZGQgYW5vdGhlcgoJY2FsbCB0byBzY2hlZHVsZV9tb3JlX3AgaW4gdGhlIGlubmVyIGxvb3AuCglDYWxsIE1EX1NDSEVEX1JFT1JERVIyIGFmdGVyIHNjaGVkdWxpbmcgYW4gaW5zbi4KCUNhbGwgTURfU0NIRURfRklOSVNIIG9uY2UgYWxsIGluc25zIGFyZSBzY2hlZHVsZWQuCgkoc2NoZWRfaW5pdCk6IENvbXBlbnNhdGUgZm9yIHRoZSBmYWN0IHRoYXQgZ2V0X2Jsb2NrX2hlYWRfdGFpbAoJZG9lc24ndCBpbmNsdWRlIGxlYWRpbmcgbm90ZXMuCgkqIHNjaGVkLWRlcHMuYyAoZnJlZV9kZXBzKTogRnJlZSB2ZWN0b3JzIGhlcmUuCgkqIHNjaGVkLXJnbi5jIChjb21wdXRlX2Jsb2NrX2JhY2t3YXJkX2RlcGVuZGVuY2llcyk6IE5vdCBoZXJlLgoJKGxhc3Rfd2FzX2p1bXApOiBOZXcgc3RhdGljIHZhcmlhYmxlLgoJKHNjaGVkdWxlX21vcmVfcCk6IFRlc3QgaXQuCgkoaW5pdF9yZWFkeV9saXN0KTogSW5pdGlhbGl6ZSBpdC4KCShjYW5fc2NoZWR1bGVfcmVhZHlfcCk6IFNldCBpdCBpZiB3ZSBoYXZlIGEgSlVNUF9JTlNOLgoKCSogY29uZmlnL2kzODYvaTM4Ni5oIChNRF9TQ0hFRF9JTklUKTogQWRkIG5ldyBhcmcuCgkqIGNvbmZpZy9tMzJyL20zMnIuaCAoTURfU0NIRURfSU5JVCk6IEFkZCBuZXcgYXJnLgoJKiBjb25maWcvc3BhcmMvc3BhcmMuaCAoTURfU0NIRURfSU5JVCk6IEFkZCBuZXcgYXJnLgoKCSogbWQudGV4aSAoY3ljbGVfZGlzcGxheSk6IERvY3VtZW50LgoJKiB0bS50ZXhpIChNRF9TQ0hFRF9JTklUKTogRG9jdW1lbnQgbmV3IGFyZy4KCShNRF9TQ0hFRF9GSU5JU0gsIE1EX1NDSEVEX1JFT1JERVIyKTogRG9jdW1lbnQuCgoJKiBmbG93LmMgKGlvcl9yZWdfY29uZCwgbmFuZF9yZWdfY29uZCwgbm90X3JlZ19jb25kKTogUmV3cml0ZQoJdG8gdXNlIGRpZmZlcmVudCByZXByZXNlbnRhdGlvbi4gIEFsbCBjYWxsZXJzIGNoYW5nZWQuCgkoYW5kX3JlZ19jb25kKTogUmVuYW1lZCBmcm9tIG5hbmRfcmVnX2NvbmQ7IGNhbGxlciBjaGFuZ2VkLgoJKGluaXRfcHJvcGFnYXRlX2Jsb2NrX2luZm8pOiBEb24ndCB0ZXN0IGZsYWdzIHRvIGRldGVybWluZQoJd2hldGhlciB0byBjb21wdXRlIGNvbmRpdGlvbmFsIGxpZmV0aW1lcy4KCUFkanVzdCBjb2RlIGZvciBuZXcgcmVwcmVzZW50YXRpb24gb2YgY29uZGl0aW9uYWwgbGlmZXRpbWVzLgoJKG1hcmtfcmVnbm9fY29uZF9kZWFkKTogU2ltaWxhciBhZGp1c3RtZW50LgoJKGZyZWVfcmVnX2NvbmRfbGlmZV9pbmZvKTogU2ltaWxhciBhZGp1c3RtZW50LgoJKGVsaW1fcmVnX2NvbmQpOiBOZXcgZnVuY3Rpb24uCgkoZmx1c2hfcmVnX2NvbmRfMSk6IFVzZSBpdC4KCjIwMDAtMTItMTkgIENhdGhlcmluZSBNb29yZSAgPGNsbUByZWRoYXQuY29tPgoKCSogcmVsb2FkMS5jIChyZWxvYWRfY29tYmluZSk6IFRha2UgbXVsdGktaGFyZC1yZWdzIGludG8gYWNjb3VudAoJd2hlbiBwcm9jZXNzaW5nIENBTExfSU5TTl9GVU5DVElPTl9VU0FHRS4KCjIwMDAtMTItMTkgIEpvc2VwaCBTLiBNeWVycyAgPGpzbTI4QGNhbS5hYy51az4KCgkqIGludm9rZS50ZXhpICgtcHJpbnQtc2VhcmNoLWRpcnMpOiBNYWtlIHJlZmVyZW5jZXMgdG8gY3BwIHJlZmVyCgl0byBjcHAwIGluc3RlYWQuCgoyMDAwLTEyLTE4ICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBmb2xkLWNvbnN0LmMgKHRyZWVfZXhwcl9ub25uZWdhdGl2ZV9wKTogVHJlYXQgdHJ1dGggdmFsdWVzIGFzCglub24tbmVnYXRpdmUuCgpUdWUgRGVjIDE5IDAwOjM3OjA4IDIwMDAgIEoib3JuIFJlbm5lY2tlIDxhbXlsYWFyQHJlZGhhdC5jb20+CgoJKiByZWxvYWQuYyAocHVzaF9yZWxvYWQpOiBXaGVuIHVzaW5nIGEgZHlpbmcgcmVnaXN0ZXIgZm9yIHRoZSByZWxvYWQKCXJlZ2lzdGVyIGluIGFuIGluLW91dCByZWxvYWQsIHVzZSBvdXRtb2RlIGlmIHdpZGVyIHRoYW4gaW5tb2RlLgoKMjAwMC0xMi0xOSAgSm9zZXBoIFMuIE15ZXJzICA8anNtMjhAY2FtLmFjLnVrPgoKCSogY29uZmlnL2QzMHYvZDMwdi5oIChFWElUX0JPRFkpOiBVcGRhdGUgY29tbWVudC4KCjIwMDAtMTItMTggIEpvc2VwaCBTLiBNeWVycyAgPGpzbTI4QGNhbS5hYy51az4KCgkqIGNvbmZpZy5nY2MgKCotKi1saW51eCopOiBEb24ndCBkZWZpbmUgSEFWRV9BVEVYSVQgb3IgQlNUUklORy4KCSogdG0udGV4aSAoRVhJVF9CT0RZKTogVXBkYXRlIGRvY3VtZW50YXRpb24uCgkqIGNvbmZpZy9mcmVlYnNkLmgsIGNvbmZpZy9uZXR3YXJlLmgsIGNvbmZpZy9hcm0vY29mZi5oLAoJY29uZmlnL2FybS9jb25peC1lbGYuaCwgY29uZmlnL2FybS91bmtub3duLWVsZi5oLAoJY29uZmlnL2QzMHYvZDMwdi5oLCBjb25maWcvbWNvcmUvbWNvcmUuaCwgY29uZmlnL3BqL3BqLmgsCglzcGFyYy9zcDg2eC1hb3V0Lmg6IFJlbW92ZSBkZWZpbml0aW9ucyBvZiBIQVZFX0FURVhJVCAoc29tZQoJY29tbWVudGVkIG91dCkgYW5kIGFzc29jaWF0ZWQgY29tbWVudHMuCgoyMDAwLTEyLTE4ICBKb3NlcGggUy4gTXllcnMgIDxqc20yOEBjYW0uYWMudWs+CgoJKiBjLWNvbW1vbi5jIChTVERfQzlMLCBBREpfU1REKTogRGVmaW5lLgoJKHByaW50Zl9sZW5ndGhfc3BlY3MsIHNjYW5mX2xlbmd0aF9zcGVjcyk6IE1hcmsgImxsIiBhcyBzdGFuZGFyZAoJU1REX0M5TC4KCShUOTlfTEwpOiBSZW5hbWUgdG8gVDlMX0xMLgoJKFQ5OV9VTEwpOiBSZW5hbWUgdG8gVDlMX1VMTC4KCShwcmludF9jaGFyX3RhYmxlLCBzY2FuX2NoYXJfdGFibGUpOiBVc2UgVDlMX0xMIGFuZCBUOUxfVUxMCglpbnN0ZWFkIG9mIFQ5OV9MTCBhbmQgVDk5X1VMTC4KCShjaGVja19mb3JtYXRfaW5mb19tYWluKTogVXNlIEFESl9TVEQgb24gYWxsIGZvcm1hdCBzdGFuZGFyZAoJdmVyc2lvbnMgYmVpbmcgY29tcGFyZWQuCgkqIGMtY29tbW9uLmg6IERlY2xhcmUgd2Fybl9sb25nX2xvbmcuCgkqIGMtdHJlZS5oOiBEb24ndCBkZWNsYXJlIHdhcm5fbG9uZ19sb25nLgoKMjAwMC0xMi0xOCAgSm9zZXBoIFMuIE15ZXJzICA8anNtMjhAY2FtLmFjLnVrPgoKCSogQ09QWUlORzogVXBkYXRlIHRvIGN1cnJlbnQKCWZ0cDovL2Z0cC5nbnUub3JnL3B1Yi9nbnUvTGljZW5zZXMvQ09QWUlORy0yLjAgKGZpeGVzIHJlZmVyZW5jZXMKCXRvIDE5eXkgYXMgZXhhbXBsZSB5ZWFyIGluIGNvcHlyaWdodCBub3RpY2UpLgoKMjAwMC0xMi0xOCAgTmVpbCBCb290aCAgPG5laWxAZGFpa29rdXlhLmRlbW9uLmNvLnVrPgoKCSogYy1sZXguYyAoY2JfZmlsZV9jaGFuZ2UpOiBUcmVhdCBpbl9zeXN0ZW1faGVhZGVyIGFzIHN0cmljdGx5Cglib29sZWFuICgwIG9yIDEpLgoKMjAwMC0xMi0xOCAgTmVpbCBCb290aCAgPG5laWxAZGFpa29rdXlhLmRlbW9uLmNvLnVrPgoKCSogY3BwbWFpbi5jOiBVcGRhdGUgcHJpbnQubGluZW5vIHdpdGggLVAuCgoyMDAwLTEyLTE4ICBOZWlsIEJvb3RoICA8bmVpbEBkYWlrb2t1eWEuZGVtb24uY28udWs+CgoJKiBjLWxleC5jOiBzL2NoYW5nZV9maWxlL2ZpbGVfY2hhbmdlLgoJKiBjcHBsaWIuaDogU2ltaWxhcmx5LgoJKiBjcHBtYWluLmM6IFNpbWlsYXJseS4KCSogZml4LWhlYWRlci5jOiBTaW1pbGFybHkuCgkqIGNwcGZpbGVzLmMgKHN0YWNrX2luY2x1ZGVfZmlsZSk6IFBhc3MgdGhlIGJ1ZmZlciBsb2NhdGlvbiBhbmQKCXNpemUgdG8gY3BwX3B1c2hfYnVmZmVyLiAgR2VuZXJhdGUgdGhlIGZpbGVfY2hhbmdlIGNhbGxiYWNrLAoJc28gdGhhdCBzeXNwIGlzIGFscmVhZHkgc2V0LgoJKiBjcHBoYXNoLmg6IEFkZCBfY3BwX2RvX2ZpbGVfY2hhbmdlLgoJKiBjcHBsaWIuYyAoZG9fbGluZSk6IFNldCBidWZmZXItPnN5c3AgZGlyZWN0bHkuIEdlbmVyYXRlIHRoZQoJZmlsZV9jaGFuZ2UgY2FsbGJhY2sgYWZ0ZXIgc2V0dGluZyBzeXNwLgoJKF9jcHBfZG9fZmlsZV9jaGFuZ2UpOiBIYW5kbGUgRkNfRU5URVIgYW5kIHRoZSBGQ19SRU5BTUUgZXhjZXB0aW9uCgloZXJlLgoJKGNwcF9wdXNoX2J1ZmZlcik6IERvbid0IGdlbmVyYXRlIGEgY2FsbGJhY2suICBDbGVhciBzeXNwLgoJKGNwcF9wb3BfYnVmZmVyKTogQ2xlYW4gdXAgbG9naWMuCgoyMDAwLTEyLTE4ICBCZW5qYW1pbiBLb3NuaWsgIDxia296QHJlZGhhdC5jb20+CgoJKiBjb25maWd1cmUuaW4gKGdjY19neHhfaW5jbHVkZV9kaXIpOiBTaW1wbGlmeS4KCShsaWJzdGRjeHhfaW5jZGlyKTogRXhwb3J0LgoJKiBjb25maWd1cmU6IFJlZ2VuZXJhdGUuCgkqIE1ha2VmaWxlLmluIChQUkVQUk9DRVNTT1JfREVGSU5FUyk6IEFkZCBpbgoJR1BMVVNQTFVTX1RPT0xfSU5DTFVERV9ESVIgYml0cyBoZXJlLi4KCShsaWJzdGRjeHhfaW5jZGlyKTogQWRkLgoJKiBjcHBkZWZhdWx0LmMgKEdQTFVTUExVU19UT09MX0lOQ0xVREVfRElSKTogQWRkIHNlYXJjaCBwYXRoLgoKMjAwMC0xMi0xOCAgTmVpbCBCb290aCAgPG5laWxAZGFpa29rdXlhLmRlbW9uLmNvLnVrPgoKCSogYy1sZXguYyAobGV4X2xpbmVubyk6IFJlbW92ZS4KCShpbml0X2NfbGV4LCBjX2xleCk6IFJlbW92ZSBsZXhfbGluZW5vLgoJKGNiX2NoYW5nZV9maWxlKTogVXBkYXRlIGxpbmVubyBjb3JyZWN0bHksIGJvdGggYmVmb3JlIGNhbGxpbmcKCXB1c2hfc3JjbG9jIGFuZCBiZWZvcmUgbGVhdmluZyB0aGUgZnVuY3Rpb24uCgkoY2JfZGVmX3ByYWdtYSk6IFNldCBsaW5lbm8gYmVmb3JlIG91dHB1dHRpbmcgZGlhZ25vc3RpY3MuCgpTdW4gRGVjIDE3IDE4OjQ1OjQxIDIwMDAgIFJpY2hhcmQgS2VubmVyICA8a2VubmVyQHZsc2kxLnVsdHJhLm55dS5lZHU+CgoJKiBwcmludC10cmVlLmMgKHByaW50X25vZGUpOiBQcmludCBERUNMX1VTRVJfQUxJR04gYW5kIFRZUEVfVVNFUl9BTElHTi4KCVByaW50IFRZUEVfTUlOX1ZBTFVFIGFuZCBUWVBFX01BWF9WQUxVRSBmb3IgUkVBTF9UWVBFLgoJVXNlIHByaW50X25vZGVfYnJpZWYgdG8gcHJpbnQgYm91bmRzLgoKMjAwMC0xMi0xNyAgTmVpbCBCb290aCAgPG5laWxAZGFpa29rdXlhLmRlbW9uLmNvLnVrPgoKCSogY3BwbGliLmggKHN0cnVjdCBjcHBfcmVhZGVyKTogUmVtb3ZlIHJlZmVyZW5jZXMgdG8gc3RyaW5nX3Bvb2wKCWFuZCB0ZW1wX3N0cmluZ19wb29sLgoJKiBjcHBpbml0LmMgKGNwcF9jcmVhdGVfcmVhZGVyLCBjcHBfY2xlYW51cCk6IFNpbWlsYXJseTsgdXNpbmcKCWlkZW50X3Bvb2wgaW4gcGxhY2UuCgkqIGNwcGxleC5jIChwYXJzZV9udW1iZXIsIHVuZXNjYXBlZF90ZXJtaW5hdG9yX3AsIHBhcnNlX3N0cmluZywKCXNhdmVfY29tbWVudCwgY3BwX3Rva2VuX2FzX3RleHQpOiBTaW1pbGFybHkuCgkqIGNwcGxpYi5jIChkb19kZWZpbmUsIGdsdWVfaGVhZGVyX25hbWUsIHBhcnNlX2Fzc2VydGlvbik6IFNpbWlsYXJseS4KCSogY3BwbWFjcm8uYyAobWFrZV9udW1iZXJfdG9rZW4sIGJ1aWx0aW5fbWFjcm8sIGxvY2tfcG9vbHMsCgl1bmxvY2tfcG9vbHMsIHN0cmluZ2lmeV9hcmcsIHBhc3RlX3Rva2Vucyk6IFNpbWlsYXJseS4KClN1biBEZWMgMTcgMTI6NDE6NDggMjAwMCAgUmljaGFyZCBLZW5uZXIgIDxrZW5uZXJAdmxzaTEudWx0cmEubnl1LmVkdT4KCgkqIGR3YXJmMm91dC5jIChsb2NfZGVzY3JpcHRvcl9mcm9tX3RyZWUsIGNhc2UgTk9QX0VYUFIpOiBOZXcgY2FzZS4KCShsb2NfZGVzY3JpcHRvcl9mcm9tX3RyZWUsIGNhc2UgQ09OVkVSVF9FWFBSKTogTGlrZXdpc2UuCgkobG9jX2Rlc2NyaXB0b3JfZnJvbV90cmVlLCBjYXNlIE5PTl9MVkFMVUVfRVhQUik6IExpa2V3aXNlLgoKMjAwMC0xMi0xNyAgUmljaGFyZCBFYXJuc2hhdyAgPHJlYXJuc2hhQGFybS5jb20+CgoJKiBNYWtlZmlsZS5pbiAoY2hlY2stcG8pOiBVc2UgJChNQUtFKS4KCShyaXNreS1zdGFnZTEsIHJpc2t5LXN0YWdlMiwgcmlza3ktc3RhZ2UzLCByaXNreS1zdGFnZTQpOiBMaWtld2lzZS4KCjIwMDAtMTItMTcgIE5laWwgQm9vdGggIDxuZWlsQGRhaWtva3V5YS5kZW1vbi5jby51az4KCgkqIGNwcG1haW4uYyAoY2hlY2tfbXVsdGlsaW5lX3Rva2VuKTogTmV3IGZ1bmN0aW9uLgoJKHNjYW5fYnVmZmVyKTogVXNlIGl0LgoJKGNiX2NoYW5nZV9maWxlKTogUmVzdHJ1Y3R1cmUgdG8gYXZvaWQgd2FybmluZy4KCSogY3BwZXJyb3IuYyAocHJpbnRfbG9jYXRpb24pOiBJbml0aWFsaXplIGNvbC4KCjIwMDAtMTItMTQgIFBoaWxpcHAgVGhvbWFzICA8cHRob21hc0BzdXNlLmRlPgoKCSogcHJvdG9pemUuYyAobWFpbik6IENvcnJlY3RseSBzZXQgbG9jYWxlIGNhdGVnb3JpZXMuCgkqIGdjYy5jIChtYWluKTogTGlrZXdpc2UuCgkqIGNwcG1haW4uYyAoZ2VuZXJhbF9pbml0KTogTGlrZXdpc2UuCgkqIHRvcGxldi5jIChtYWluKTogTGlrZXdpc2UuCgkqIGdjb3YuYyAobWFpbik6IExpa2V3aXNlLgoJKiBjb2xsZWN0Mi5jIChtYWluKTogTGlrZXdpc2UuCgoyMDAwLTEyLTE3ICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBjLWNvbW1vbi5jIChjX2NvbW1vbl9ub2Rlc19hbmRfYnVpbHRpbnMpOiBDcmVhdGUgYQoJY3N0cmluZ19lbmRsaW5rLCB1c2UgaXQuICBSZW5hbWUgaW50X2Z0eXBlX3N0cmluZ19zdHJpbmcgdG8KCWludF9mdHlwZV9jc3RyaW5nX2NzdHJpbmcsIHN0cmluZ19mdHlwZV9zdHJpbmdfaW50IHRvCglzdHJpbmdfZnR5cGVfY3N0cmluZ19pbnQsIGFuZCBzdHJpbmdfZnR5cGVfc3RyaW5nX3N0cmluZyB0bwoJc3RyaW5nX2Z0eXBlX2NzdHJpbmdfY3N0cmluZy4gIFByZWZlciBzaXpldHlwZV9lbmRsaW5rIGFuZAoJaW50X2VuZGxpbmsgdG8gbWFudWFsbHkgcmVjcmVhdGluZyB0aGVtLiAgRml4IHRoZSBwcm90b3R5cGUKCXNldCBmb3IgX19idWlsdGluX3N0cnNwbi9fX2J1aWx0aW5fc3RyY3Nwbi4KCjIwMDAtMTItMTIgIE1hcmVrIE1pY2hhbGtpZXdpY3ogIDxtYXJla21AbGludXgub3JnLnBsPgoKCSogY29uZmlnL2F2ci9hdnIuYyAob3V0X3NldF9zdGFja19wdHIpOiBVcGRhdGUgY29tbWVudC4KCShwcmludF9vcGVyYW5kKTogQWRkIHN1cHBvcnQgZm9yICV+IGFuZCAlby4KCjIwMDAtMTItMTcgSGVybWFuIEEuSi4gdGVuIEJydWdnZSA8SGFqLlRlbi5CcnVnZ2VAbmV0LkhDQy5ubD4KCgkqIGM0eC5oOiBBZGQgQVNNX09VVFBVVF9ERUYgZGVmaW5pdGlvbiBmb3IgYm91bmRlZCBwb2ludGVyIGNvZGUuCgoyMDAwLTEyLTE3ICBOZWlsIEJvb3RoICA8bmVpbEBkYWlrb2t1eWEuZGVtb24uY28udWs+CgoJKiBjLWxleC5jOiBNb3ZlIG1haW5faW5wdXRfZmlsZW5hbWUgaGFuZGxpbmcgdG8gRkNfRU5URVIuIENsZWFuIHVwLgoJKiBjcHBlcnJvci5jIChwcmludF9jb250YWluaW5nX2ZpbGVzKTogR2V0IHJpZ2h0IGxpbmUgbnVtYmVyLgoJKHByaW50X2xvY2F0aW9uKTogT3V0cHV0IGNvbHVtbiBvZiAxIGlmIDAuCgkqIGNwcGZpbGVzLmMgKHN0YWNrX2luY2x1ZGVfZmlsZSk6IGNwcF9wdXNoX2J1ZmZlciBoYW5kbGVzCgl0aGUgY2FsbGJhY2suCgkqIGNwcGhhc2guaCAoX2NwcF9kb19maWxlX2NoYW5nZSk6IE5vIGxvbmdlciBleHRlcm5hbC4KCSogY3BwbGliLmMgKGRvX2ZpbGVfY2hhbmdlKTogTm93IGxvY2FsIHRvIGNwcGxpYi5jLgoJKGRvX2xpbmUpOiBGYWtlIGEgYnVmZmVyIHN0YWNrIGZvciBwcmVwcm9jZXNzZWQgZmlsZXMuCgkoY3BwX3B1c2hfYnVmZmVyKTogQ3JlYXRlIGEgZmlsZV9jaGFuZ2UgY2FsbGJhY2suICBIYW5kbGUgZmFrZWQKCWJ1ZmZlcnMuCgkoY3BwX3BvcF9idWZmZXIpOiBTaW1pbGFybHkuCgkqIGNwcGxpYi5oOiBCVUZfRkFLRTogTmV3IGJ1ZmZlciB0eXBlLgoJKiBjcHBtYWluLmM6IFVwZGF0ZSB0byBoYW5kbGUgY29ycmVjdCBmaWxlIHJlbmFtaW5nIHdoZXJlIGEKCSNsaW5lIGlzIHRoZSBmaXJzdCBsaW5lIG9mIHRoZSBtYWluIGZpbGUsIGFuZCBwcm9kdWNlIG9ubHkKCXRoZSByZW5hbWVkIGZpbGUsIG5vdCB0aGUgb3JpZ2luYWwgZmlsZSwgYXMgb3V0cHV0LgoKMjAwMC0xMi0xNyAgTWljaGFlbCBIYXllcyAgPG0uaGF5ZXNAZWxlYy5jYW50ZXJidXJ5LmFjLm56PgoKCSogY29uZmlnL2M0eC9jNHgubWQ6IFJlbW92ZSByZWR1bmRhbnQgQHMgZnJvbSBvdXRwdXQgcGF0dGVybnMuCgoyMDAwLTEyLTE3ICBNaWNoYWVsIEhheWVzICA8bS5oYXllc0BlbGVjLmNhbnRlcmJ1cnkuYWMubno+CiAgICAgICAgICAgIEhlcm1hbiBBLkouIHRlbiBCcnVnZ2UgPEhhai5UZW4uQnJ1Z2dlQG5ldC5IQ0Mubmw+CgoJKiBjb25maWcvYzR4L2M0eC5oIChSRUdJU1RFUl9UQVJHRVRfUFJBR01BUyk6IENhbGwgYzR4X2luaXRfcHJhZ21hLgoKCSogY29uZmlnL2M0eC9jNHgtcHJvdG9zLmggKGM0eF9pbml0X3ByYWdtYSk6IE5ldyBwcm90b3R5cGUuCgoJKiBjb25maWcvYzR4L2M0eC5jIChjNHhfaW5pdF9wcmFnbWEpOiBOZXcgZnVuY3Rpb24uCgkoY19sZXhfZnVuYyk6IE5ldyB2YXJpYWJsZS4KCShjNHhfcGFyc2VfcHJhZ21hKTogVXNlIGNfbGV4X2Z1bmMuCgoyMDAwLTEyLTE3ICBNaWNoYWVsIEhheWVzICA8bS5oYXllc0BlbGVjLmNhbnRlcmJ1cnkuYWMubno+CiAgICAgICAgICAgIEhlcm1hbiBBLkouIHRlbiBCcnVnZ2UgPEhhai5UZW4uQnJ1Z2dlQG5ldC5IQ0Mubmw+CgoJKiBjb25maWcvYzR4L2M0eC5oIChNRF9JTklUX0JVSUxUSU5TKTogQWRkIHZvaWRfbGlzdF9ub2RlIGFyZ3VtZW50Cgl0byBjNHhfaW5pdF9idWlsdGlucy4KCgkqIGNvbmZpZy9jNHgvYzR4LXByb3Rvcy5oIChjNHhfaW5pdF9idWlsdGlucyk6IEFkZCB0cmVlIGFyZ3VtZW50LgoKCSogY29uZmlnL2M0eC9jNHguYyAoYzR4X2luaXRfYnVpbHRpbnMpOiBBZGQgdHJlZSBhcmd1bWVudC4KCShjNHhfb3V0cHV0X2FzY2lpKTogIEZpeC4KCjIwMDAtMTItMTcgIE1pY2hhZWwgSGF5ZXMgIDxtLmhheWVzQGVsZWMuY2FudGVyYnVyeS5hYy5uej4KICAgICAgICAgICAgSGVybWFuIEEuSi4gdGVuIEJydWdnZSA8SGFqLlRlbi5CcnVnZ2VAbmV0LkhDQy5ubD4KCgkqIGNvbmZpZy9jNHgvYzR4LmggKE1EX0lOSVRfQlVJTFRJTlMsIE1EX0VYUEFORF9CVUlMVElOKTogRGVmaW5lLgoKCSogY29uZmlnL2M0eC9jNHgtcHJvdG9zLmggKGM0eF9pbml0X2J1aWx0aW5zKTogTmV3IHByb3RvdHlwZS4KCShjNHhfZXhwYW5kX2J1aWx0aW4pOiBMaWtld2lzZS4KCgkqIGNvbmZpZy9jNHgvYzR4LmMgKGM0eF9pbml0X2J1aWx0aW5zKTogTmV3IGZ1bmN0aW9uLgoJKGM0eF9leHBhbmRfYnVpbHRpbik6IExpa2V3aXNlLgoKCSogY29uZmlnL2M0eC9jNHgubWQgKGZsb2F0dW5zcWloZjIpOiBOZXcgcGF0dGVybi4KCSgqZmxvYXRxaWhmMl9zZXQsICpmaXhoZnFpX3NldCwgZml4X3RydW5jaGZxaTIpOiBMaWtld2lzZS4KCShmaXh1bnNfdHJ1bmNoZnFpMiwgdG9pZWVlLCBmcmllZWUsICpsZGhmX2NvbmRpdGlvbmFsKTogTGlrZXdpc2UuCgkoKmxkaGZfY29uZGl0aW9uYWxfbm9vdiwgbW92aGZjYywgdHJhcCwgY29uZF90cmFwX2NjKTogTGlrZXdpc2UuCgkoKnRvaWVlZV9tb3ZxZl9jbG9iYmVyLCAqZnJpZWVlX21vdnFmX2Nsb2JiZXIpOiBMaWtld2lzZS4KCjIwMDAtMTItMTcgIE1pY2hhZWwgSGF5ZXMgIDxtLmhheWVzQGVsZWMuY2FudGVyYnVyeS5hYy5uej4KCgkqIGxpYmdjYzIuaDogVXNlIFd0eXBlIGZvciBTSXR5cGUgYW5kIERXdHlwZSBmb3IgREl0eXBlIGluIHByb3RvdHlwZXMuCgkqIGxpYmdjYzIuYyAoX19hYnN2c2kyKTogVXNlIFd0eXBlIGFuZCBEV3R5cGUuCgkoX19hYnN2ZGkyLCBfX2FkZHZzaTMsIF9fYWRkdmRpMywgX19zdWJ2c2kzKTogTGlrZXdpc2UuCgkoX19zdWJ2ZGkzLCBfX211bHZzaTMsIF9fbXVsdmRpMywgX19uZWd2c2kyLCBfX25lZ3ZkaTIpOiBMaWtld2lzZS4KCjIwMDAtMTItMTYgIEFsZXhhbmRyZSBPbGl2YSAgPGFvbGl2YUByZWRoYXQuY29tPgoKCSogY29uZmlnL3NoL3NoLmggKElOSVRJQUxJWkVfVFJBTVBPTElORSk6IEVuY2xvc2UgdGhlIGJsb2NrCglzdGF0ZW1lbnQgaW4gZG8vd2hpbGUoMCkuCgpTYXQgRGVjIDE2IDE5OjU2OjI0IE1FVCAyMDAwICBKYW4gSHViaWNrYSAgPGpoQHN1c2UuY3o+CgoJKiBpMzg2Lm1kIChhc2hyc2kzX2NtcG5vLCBhc2hyaGkzX2NtcG5vLCBhc2hycWkzX2NtcG5vLCBsc2hyc2kzX2NtcG5vLAoJbHNocmhpM19jbXBubyk6IFJlbW92ZSByZWR1bmRhbnQgJ0AnIGZyb20gdGhlIHRlbXBsYXRlLgoKCSogaTM4Ni5tZCAoY21wc3Ryc2lfMSk6IEZpeCB0eXBlIG9mIHRoZSBjb21wYXJlLgoKCSogZ2VuYXR0cnRhYi5jIChhdHRyX3J0eF9jb3N0KTogTmV3IGZ1bmN0aW9uLgoJKHNpbXBsaWZ5X3Rlc3RfZXhwKTogQXZvaWQgb3ZlcmFjdGl2ZSBpbmxpbmluZzsgdXNlIHRlbXBvcmFyeQoJb2JzdGFja3MgZm9yIHRlc3RzLgoKU2F0IERlYyAxNiAxMDo0MToxMSAyMDAwICBSaWNoYXJkIEtlbm5lciAgPGtlbm5lckB2bHNpMS51bHRyYS5ueXUuZWR1PgoKCSogZGlhZ25vc3RpYy5jIChmaW5pc2hfYWJvcnQpOiBEZWxldGVkLgoJKGZhdGFsKTogQWRkIGNvZGUgZnJvbSBmaW5pc2hfYWJvcnQuCgkoZXJyb3JfcmVjdXJzaW9uLCBmYW5jeV9hYm9ydCk6IENhbGwgZmF0YWwsIG5vdCBmaW5pc2hfYWJvcnQuCgkodHJpbV9maWxlbmFtZSk6IFJlbW92ZSBsZWFkaW5nICIuLi8iLgoJKiBkaWFnbm9zdGljLmggKGZpbmlzaF9hYm9ydCk6IERlbGV0ZWQuCgkqIHRvcGxldi5jIChjcmFzaF9zaWduYWwpOiBDYWxsIGZhdGFsLCBub3QgZmluaXNoX2Fib3J0LgoKCSogc3Rvci1sYXlvdXQuYyAocGxhY2VfZmllbGQpOiBUcmVhdCBvdmVyZmxvd2luZyBERUNMX1NJWkVfVU5JVAoJYXMgaWYgc2l6ZSB3ZXJlIHZhcmlhYmxlLgoKCSogZXhwbWVkLmMgKGV4cGFuZF9tdWx0KTogV3JpdGUgUkVHX0VRVUFMIG5vdGUgd2l0aCBwcm9wZXIgbW9kZS4KCjIwMDAtMTItMTYgIE5laWwgQm9vdGggIDxuZWlsQGRhaWtva3V5YS5kZW1vbi5jby51az4KCgkqIHRyYWRjcHAuYzogVF9XQVJOSU5HOiBOZXcuCgkoZG9fd2FybmluZyk6IE5ldyBmdW5jdGlvbi4KCShmaW5jbHVkZSk6IFNraXAgcGFzdCB0aGUgbmV3bGluZSBhbmQgaW5jcmVhc2UgdGhlIGxpbmUgbnVtYmVyCgliZWZvcmUgY2FsbGluZyBvdXRwdXRfbGluZV9jb21tYW5kLgoJKGRvX2xpbmUpOiBTa2lwIHRoZSBuZXcgbGluZSBhZnRlciBvdXRwdXRfbGluZV9jb21tYW5kLiAgRG9uJ3QKCXByZS1kZWNyZW1lbnQgdGhlIGxpbmUgbnVtYmVyLgoKMjAwMC0xMi0xNSAgRGllZ28gTm92aWxsbyAgPGRub3ZpbGxvQHJlZGhhdC5jb20+CgoJKiBpMzg2L3VuaXguaCAoQVNNX09VVFBVVF9NSV9USFVOSyk6IEZpeCByZWZlcmVuY2VzIHRvCglfR0xPQkFMX09GRlNFVF9UQUJMRV8gd2hlbiB1c2luZyBJbnRlbCBzeW50YXguCgoyMDAwLTEyLTE1ICBKYWt1YiBKZWxpbmVrICA8amFrdWJAcmVkaGF0LmNvbT4KCgkqIGdjYy5jIChjcHBfb3B0aW9ucyk6IFBhc3MgLWZuby1vcGVyYXRvci1uYW1lcy4KCSogY3BwbGliLmggKHN0cnVjdCBjcHBfb3B0aW9ucyk6IEFkZCBvcGVyYXRvcl9uYW1lcy4KCSogY3BwaW5pdC5jIChjcHBfY3JlYXRlX3JlYWRlcik6IEluaXRpYWxpemUgaXQuCgkoaW5pdGlhbGl6ZV9idWlsdGlucyk6IElmIC1mbm8tb3BlcmF0b3ItbmFtZXMsIGRvbid0IGFkZAoJQysrIGFsdGVybmF0ZSBvcGVyYXRvciBuYW1lcy4KCShDT01NQU5EX0xJTkVfT1BUSU9OUyk6IEFkZCAtZm5vLW9wZXJhdG9yLW5hbWVzLgoJKGNwcF9oYW5kbGVfb3B0aW9uKTogQ2xlYXIgb3BlcmF0b3JfbmFtZXMuCgoyMDAwLTEyLTE1ICBKYXNvbiBNZXJyaWxsICA8amFzb25AcmVkaGF0LmNvbT4KCgkqIGp1bXAuYyAoanVtcF9vcHRpbWl6ZV8xKTogRG9uJ3QgZGVsZXRlIHRoZSBsaW5lIG5vdGUgYWZ0ZXIgdGhlCglwcm9sb2d1ZSBldmVuIGlmIGl0IHNlZW1zIHJlZHVuZGFudC4KCgkqIGNvbmZpZy9hcm0vYXJtLmMgKGFybV9leHBhbmRfcHJvbG9ndWUpOiBTZXQgUlRYX0ZSQU1FX1JFTEFURURfUAoJb24gYWxsIGluc25zIHVzZWQgdG8gYWRqdXN0IHRoZSBzdGFjay4KCkZyaSBEZWMgMTUgMTU6MzI6MTYgTUVUIDIwMDAgIEphbiBIdWJpY2thICA8amhAc3VzZS5jej4KCgkqIGNvbWJpbmUuYyAoY2FudF9jb21iaW5lX2luc25fcCk6IEdldCBhcm91bmQgU1VCUkVHcyB3aGVuIGRldGVybWluaW5nCgloYXJkcmVnPC0+cmVnIG1vdmVzLgoKRnJpIERlYyAxNSAxNDo0ODozNyBNRVQgMjAwMCAgSmFuIEh1Ymlja2EgIDxqaEBzdXNlLmN6PgoKCSogZ2VucmVjb2cuYyAoYWRkX3RvX3NlcXVlbmNlKTogUmVtb3ZlIHNwZWNpYWwgY2FzZSBmb3IKCWNvbnN0X2ludF9vcGVyYW5kLgoJKG1heWJlX2JvdGhfdHJ1ZSk6IFJldHVybiAxIHdoZW4gZmFsbGluZyBvdXQgb2Ygc2VxdWVuY2Ugd2hlbgoJdHJ5aW5nIHRvIGZpbmQgY29tbW9uIHBvc2l0aW9uIGluIHRoZSBwYXR0ZXJuLgoKRnJpIERlYyAxNSAxNDo0NDo1MSBNRVQgMjAwMCAgSmFuIEh1Ymlja2EgIDxqaEBzdXNlLmN6PgoKCSogaW50ZWdyYXRlLmMgKGNvcHlfcnR4X2FuZF9zdWJzdGl0dXRlKTogQ29weSBtb2RlIHRvby4KCkZyaSBEZWMgMTUgMTQ6MTE6NTcgTUVUIDIwMDAgIEphbiBIdWJpY2thICA8amhAc3VzZS5jej4KCgkqIGZsb3cuYyAobm90aWNlX3N0YWNrX3BvaW50ZXJfbW9kaWZpY2F0aW9uXzEpOiBDbGVhbnVwLgoKMjAwMC0xMi0xNSAgQWxleGFuZHJlIE9saXZhICA8YW9saXZhQHJlZGhhdC5jb20+CgoJKiBmdW5jdGlvbi5jIChhZGp1c3RfdHJhbXBvbGluZV9hZGRyKTogTmV3IGZ1bmN0aW9uLgoJKHRyYW1wb2xpbmVfYWRkcmVzcyk6IENhbGwgaXQgaW5zdGVhZCBvZiByb3VuZF90cmFtcG9saW5lX2FkZHIoKS4KCSogdG0udGV4aSAoVFJBTVBPTElORV9BREpVU1RfQUREUkVTUyk6IERvY3VtZW50IGl0LgoKMjAwMC0xMi0xNCAgWmFjayBXZWluYmVyZyAgPHphY2tAd29sZXJ5LnN0YW5mb3JkLmVkdT4KCgkqIGNwcGZpbGVzLmMgKGhhY2tfdm1zX2luY2x1ZGVfc3BlY2lmaWNhdGlvbik6IERlbGV0ZSBmdW5jdGlvbgoJKG5vdCB1c2VkIHNpbmNlIDE5OTgpLgoKRnJpIERlYyAxNSAwMzozNzo1MSAyMDAwICBKIm9ybiBSZW5uZWNrZSA8YW15bGFhckByZWRoYXQuY29tPgoKCSogaGFpZmEtc2NoZWQuYyAoc2NoZWRfaW5pdCk6IERvbid0IHB1dCBhIG5vdGUgaW4gZnJvbnQgb2YgYW55IEJBUlJJRVIuCgoyMDAwLTEyLTE0ICBKaW0gV2lsc29uICA8d2lsc29uQHJlZGhhdC5jb20+CgoJKiBhbGlhcy5jIChnZXRfYWxpYXNfc2V0KTogQ2FsbCByZWNvcmRfY29tcG9uZW50X2FsaWFzZXMgZm9yCglDT01QTEVYX1RZUEUuCgkocmVjb3JkX2NvbXBvbmVudF9hbGlhc2VzKTogSGFuZGxlIENPTVBMRVhfVFlQRS4KCjIwMDAtMTItMTQgIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIGZpeGluYy9nbnUtcmVnZXguYzogRGlzYWJsZSBOTFMuCgoyMDAwLTEyLTE0ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEByZWRoYXQuY29tPgoKCSogY29uZmlnL2FscGhhL2FscGhhLmMgKGFscGhhX2VtaXRfY29uZGl0aW9uYWxfbW92ZSk6IERvIG5vdCBzd2FwCgljb21wYXJpc29uIG9wZXJhbmRzIHdoZW4gdGhhdCB3b3VsZCBjcmVhdGUgbm9uLWNhbm9uaWNhbCBydGwuCgoJKiBjb25maWcvaTM4Ni9pMzg2Lm1kICh1bXVsc2kzX2hpZ2hwYXJ0KTogUmVtb3ZlICogZnJvbSBuYW1lLgoJKHNtdWxzaTNfaGlnaHBhcnQpOiBMaWtld2lzZS4KCjIwMDAtMTItMTQgIE5laWwgQm9vdGggIDxuZWlsQGRhaWtva3V5YS5kZW1vbi5jby51az4KCgkqIGdjYy5jIChjcHBfb3B0aW9ucyk6IEFkZCAtcmVtYXAuCgoyMDAwLTEyLTE0ICBOZWlsIEJvb3RoICA8bmVpbEBkYWlrb2t1eWEuZGVtb24uY28udWs+CgoJKiBnY2MuYyAoY3BwX29wdGlvbnMpOiBVcGRhdGUgdG8gdXNlICcmJy4KCShzdHJ1Y3Qgc3dpdGNoc3RyKTogQ2hhbmdlIHR5cGUgb2YgdmFsaWRhdGVkIHRvIHNhdmUgc3BhY2UuCglOZXcgbWVtYmVyICdvcmRlcmluZycuCgkoaGFuZGxlX2JyYWNlcywgdmFsaWRhdGVfc3dpdGNoZXMpOiBVcGRhdGUgdG8gaGFuZGxlICcmJy4KCjIwMDAtMTItMTMgIExhdXJ5bmFzIEJpdmVpbmlzICA8bGF1cmFzQHNvZnRob21lLm5ldD4KCgkqIGZpeGluYy9pbmNsaGFjay5kZWY6IHNraXAgc3RkaW9fdmFfbGlzdCBmaXggaWYgX19ESl92YV9saXN0Cglmb3VuZCBpbiBhIGhlYWRlci4KCSogZml4aW5jL2ZpeGluY2wueDogcmVnZW5lcmF0ZWQuCgoyMDAwLTEyLTEzICBESiBEZWxvcmllICA8ZGpAcmVkaGF0LmNvbT4KCgkqIGNvbmZpZy5nY2MgKGN5Z3dpbiwgd2luMzIsIG1pbmd3MzIpOiBVc2UgZmxvYXQtaTM4Ni5oLgoKMjAwMC0xMi0xMyAgVG9tIFRyb21leSAgPHRyb21leUByZWRoYXQuY29tPgoKCSogZ2NjLmMgKGhhbmRsZV9icmFjZXMpOiBIYW5kbGUgJXs8Uyp9IHNwZWMgY29ycmVjdGx5LgoKMjAwMC0xMi0xMyAgQWxleGFuZHJlIE9saXZhICA8YW9saXZhQHJlZGhhdC5jb20+CgoJKiBmdW5jdGlvbi5jIChhc3NpZ25fcGFybXMpOiBPcHRpbWl6ZSBpbmNvbWluZyBQQVJBTExFTHMgaW50bwoJUkVHcyBpZiBwb3NzaWJsZS4KCjIwMDAtMTItMTMgIEJydWNlIEtvcmIgIDxia29yYkBnbnUub3JnPgoKCSogZml4aW5jL01ha2VmaWxlLmluKCopOiBzdWJzdGFudGlhbCByZXdyaXRlIHRvIGFjY29tbW9kYXRlIHN5c3RlbXMKCXRoYXQgY2Fubm90IGhhbmRsZSBiaS1kaXJlY3Rpb25hbCBwaXBlcywgdml6LiBCZU9TIGFuZCBET1MuCgkqIGZpeGluYy9maXhsaWIuaChJR05PUkVfQVJHKTogbmV3IG1hY3JvCgkoU1RBVElDKTogZGVmaW5lIGZvciBhbGwgb2YgZml4aW5jIHRvIHVzZQoJKiBmaXhpbmMvZml4Zml4ZXMuYygqKTogZWxpbWluYXRlIHVudXNlZCBhcmcgd2FybmluZ3MKCSogZml4aW5jL2ZpeHRlc3RzLmMoKik6IGRpdHRvCgkqIGZpeGluYy9maXhpbmNsLmMoc3RhcnRfZml4ZXIpOiBjaGFpbl9vcGVuIG5vdyB1c2VzIGNvbnN0IGFyZyBsaXN0CgkqIGZpeGluYy9nbnUtcmVnZXguYzogcmVvcmRlciBzb21lIGluY2x1ZGVzIHRvIGF2b2lkIF9HTlVfU09VUkNFCgl3YXJuaW5nLiAgQWxzbywgZWxpbWluYXRlIHRoZSBgYCNpZmRlZiBlbWFjcycnIHN0dWZmLgoJKHJlX3N5bnRheF9vcHRpb25zKTogbWFrZSBnbG9iYWwgYXMgaXQgaXMgZGVjbGFyZWQgc28uCgkqIGZpeGluYy9ta2ZpeGluYy5zaDogcHJvY2VzcyB0aGUgYXJndW1lbnQgbGlzdCBtb3JlIGNvbnNpc3RlbnRseQoJKGJlb3MvbXNkb3NkamdwcCk6IHNldCBUQVJHRVRTIHRvIHR3b3Byb2Nlc3MgdnMuIG9uZXByb2Nlc3MKCSogZml4aW5jL3Byb2NvcGVuLmMoZ2xvYmFscyk6IGluY2x1ZGUgImZpeGxpYi5oIiBmb3Igc3RkIGRlZnMKCSogZml4aW5jL3NlcnZlci5jKGdsb2JhbHMpOiBkaXR0bwoJKiBmaXhpbmMvc2VydmVyLmgoZGVmaW5lcyk6IGRpdHRvCgoyMDAwLTEyLTEzICBOZWlsIEJvb3RoICA8bmVpbEBkYWlrb2t1eWEuZGVtb24uY28udWs+CgoJKiB0cmFkY3BwLmMgKHNwZWNpYWxfc3ltYm9sKTogSW1wcm92ZSB0ZXN0IGZvciBkZWZpbmVkbmVzcywKCXRob3VnaCBpdCBpcyBzdGlsbCBub3QgcGVyZmVjdC4KCShkb19kZWZpbmUpOiBEb24ndCBkZWZpbmUgaWxsZWdhbCBtYWNybyBuYW1lcy4KCjIwMDAtMTItMDcgIEFsZHkgSGVybmFuZGV6ICA8YWxkeWhAcmVkaGF0LmNvbT4KCgkqIGNvbmZpZy9taXBzL2VsZi5oIChBU01fT1VUUFVUX1NFQ1RJT05fTkFNRSk6IGVtaXQgQG5vYml0cwoJaWYgY2hhbmdpbmcgaW50byAuYnNzIHNlY3Rpb24uCgkqIGNvbmZpZy9taXBzL2VsZjY0Lmg6IHNhbWUuCgkqIGNvbmZpZy9taXBzL2lyaXM2Lmg6IHNhbWUuCgkqIGNvbmZpZy9taXBzL25ldGJzZC5oOiBzYW1lLgoJKiBjb25maWcvbWlwcy9vcGVuYnNkLmg6IHNhbWUuCgoyMDAwLTEyLTEzICBOZWlsIEJvb3RoICA8bmVpbEBkYWlrb2t1eWEuZGVtb24uY28udWs+CgoJKiBjcHBmaWxlcy5jIChyZWFkX25hbWVfbWFwKTogUmV0dXJuIG51bGwgaWYgb3BlbiAoKSBmYWlscy4KCShyZW1hcF9maWxlbmFtZSk6IFNpbXBsaWZ5IGxvZ2ljLiAgQWRkIElDRSBpZiBpdCBkb2Vzbid0IHdvcmsKCWFzIGV4cGVjdGVkLiBQZXJmb3JtIHNlY29uZGFyeSBsb29rdXAgYXR0ZW1wdCBvbiBiYXNlIGZpbGVuYW1lCglvbmx5LgoKV2VkIERlYyAxMyAxOTo0ODowNCBNRVQgMjAwMCAgSmFuIGh1Ymlja2EgIDxqaEBzdXNlLmN6PgoKCSogZmxvdy5jIChub3RpY2Vfc3RhY2tfcG9pbnRlcl9tb2RpZmljYXRpb25fMSk6IE5vdGljZSBtaWRpZmljYXRpb25zCgl1c2luZyBQUkVfTU9ESUZZIGFuZCBQT1NUX01PRElGWS4KCldlZCBEZWMgMTMgMTc6MjU6MzIgTUVUIDIwMDAgIEphbiBIdWJpY2thICA8amhAc3VzZS5jej4KCgkqIGdlbm91dHB1dC5jIChwcm9jZXNzX3RlbXBsYXRlKTogQWRkIHNhbml0eSBjaGVja2luZyBmb3IgJ0AnIHRlbXBsYXRlcy4KCjIwMDAtMTItMTMgIEJlcm5kIFNjaG1pZHQgIDxiZXJuZHNAcmVkaGF0LmNvLnVrPgoKCSogc2ltcGxpZnktcnR4LmMgKGNzZWxpYl9maW5pc2gpOiBGcmVlIHJlZ192YWx1ZXMgYW5kIHVzZWRfcmVncwoJdmFycmF5cy4KCjIwMDAtMTItMTIgIE1pa2UgU3R1bXAgIDxtcnNAd3JzLmNvbT4KCgkqIE1ha2VmaWxlLmluIChkaXN0Y2xlYW4pOiBSZW1vdmUgc2FmZS1jdHlwZS5jIGFzIHdlbGwuCgoyMDAwLTEyLTEyICBCcmFkIEx1Y2llciA8bHVjaWVyQG1hdGgucHVyZHVlLmVkdT4KCgkqIHRyYWRjcHAuYyAoZG9fZXJyb3IpOiBDYXN0IGRpZmZlcmVuY2Ugb2YgcG9pbnRlcnMgdG8gaW50Cglmb3IgZXJyb3IgbWVzc2FnZS4KCjIwMDAtMTItMTIgIEZyYW56IFNpcmwgIDxGcmFuei5TaXJsLWtlcm5lbEBsYXV0ZXJiYWNoLmNvbT4KCgkqIGNvbmZpZy9yczYwMDAvbGludXguaCAoSEFORExFX1BSQUdNQV9QQUNLX1BVU0hfUE9QKTogTW92ZSBmcm9tIGhlcmUuLi4KCSogY29uZmlnL3JzNjAwMC9zeXN2NC5oIChIQU5ETEVfUFJBR01BX1BBQ0tfUFVTSF9QT1ApOiAuLi50byBoZXJlLgoKMjAwMC0xMi0xMiAgSmltIFdpbHNvbiAgPHdpbHNvbkByZWRoYXQuY29tPgoKCSogcnRsYW5hbC5jIChtYXlfdHJhcF9wKTogQ2hlY2sgb3BlcmFuZCBtb2RlcyBvZiBMRSwgTFQsIEdFLCBhbmQgR1QuCgoyMDAwLTEyLTEyICBBbGV4YW5kcmUgT2xpdmEgIDxhb2xpdmFAcmVkaGF0LmNvbT4KCgkqIGNvbmZpZ3VyZS5pbjogU2ltcGxpZnkgbGFuZ3VhZ2UgZW5hYmxpbmcvZGlzYWJsaW5nIGNvZGUuCgkqIGNvbmZpZ3VyZTogUmVidWlsdC4KCSogY2gvY29uZmlnLWxhbmcuaW4gKHRhcmdldF9saWJzKTogU2V0LgoJKGJ1aWxkX2J5X2RlZmF1bHQpOiBTZXQgdG8gbm8uCgkqIGNwL2NvbmZpZy1sYW5nLmluICh0YXJnZXRfbGlicyk6IFNldC4KCSogZi9jb25maWctbGFuZy5pbiAodGFyZ2V0X2xpYnMpOiBTZXQuCgkqIGphdmEvY29uZmlnLWxhbmcuaW4gKHRhcmdldF9saWJzKTogU2V0LgoJKiBvYmpjL2NvbmZpZy1sYW5nLmluICh0YXJnZXRfbGlicyk6IFNldC4KCjIwMDAtMTItMTIgIE5laWwgQm9vdGggIDxuZWlsQGRhaWtva3V5YS5kZW1vbi5jby51az4KCgkqIHRyYWRjcHAuYyAoZW51bSBub2RlX3R5cGUpOiBBZGQgVF9FUlJPUi4KCShkb19lcnJvcik6IE5ldyBmdW5jdGlvbi4KCShkaXJlY3RpdmVfdGFibGUpOiBBZGQgI2Vycm9yIGhhbmRsZXIuCgoyMDAwLTEyLTEyICBGcmFueiBTaXJsICA8RnJhbnouU2lybC1rZXJuZWxAbGF1dGVyYmFjaC5jb20+CgoJKiBjb25maWd1cmUuaW4gKEhBVkVfQVNfRFdBUkYyX0RFQlVHX0xJTkUpOiBFbmFibGUgLmZpbGUvLmxvYyBjaGVjawoJZm9yIHBvd2VycGMqLSotKi4KCSogY29uZmlndXJlOiBSZWdlbmVyYXRlZC4KCSogY29uZmlnL3JzNjAwMC9saW51eC5oIChIQU5ETEVfUFJBR01BX1BBQ0tfUFVTSF9QT1ApOiBEZWZpbmUuCgkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLmMgKHJzNjAwMF91bmlxdWVfc2VjdGlvbik6IFVzZQoJU1RSSVBfTkFNRV9FTkNPRElORy4KCk1vbiBEZWMgMTEgMTM6NTE6MDkgMjAwMCAgSmVmZnJleSBBIExhdyAgKGxhd0BjeWdudXMuY29tKQoKCSogcGEuYyAoY21waWJfY29tcGFyaXNvbl9vcGVyYXRvcik6IFJlbW92ZSBHRVUgYW5kIExUVS4KCSogcGEuaCAoUFJFRElDQVRFX0NPREVTLCBjbXBpYl9jb21wYXJpc29uX29wZXJhdG9yKTogQ29ycmVzcG9uZGluZwoJY2hhbmdlcy4KCjIwMDAtMTItMTEgIEJydWNlIEtvcmIgIDxia29yYkBnbnUub3JnPgoKCSogZml4aW5jL2ZpeGluY2wudHBsOiBpbml0aWFsaXplIGFsbCBmaWVsZHMgZm9yIHdhcm5pbmdzCgkqIGZpeGluYy9maXhpbmNsLng6IHJlZ2VuZXJhdGUKCjIwMDAtMTItMTEgIE5laWwgQm9vdGggIDxuZWlsYkBlYXJ0aGxpbmcubmV0PgoKCSogdHJhZGNwcC5oOiBGb3IgdHJhZGNwcCwgTlVMIGlzIG5vdCB3aGl0ZXNwYWNlLgoKMjAwMC0xMi0xMSAgTmVpbCBCb290aCAgPG5laWxiQGVhcnRobGluZy5uZXQ+CgoJKiBmaXgtaGVhZGVyLmMgKHJlYWRfc2Nhbl9maWxlKTogTWFjcm8gZXhwYW5zaW9uIGlzIG5vdCBhIGZpbGUgYnVmZmVyLgoKMjAwMC0xMi0wNSAgTWFyZWsgTWljaGFsa2lld2ljeiAgPG1hcmVrbUBsaW51eC5vcmcucGw+CgoJKiBjb25maWcvYXZyL2F2ci5jIChjb21wYXJlX2NvbmRpdGlvbiwgY29tcGFyZV9zaWduX3ApOiBOZXcgZnVuY3Rpb25zLgoJKGNvbXBhcmVfZGlmZl9wLCBjb21wYXJlX2VxX3ApOiBDYWxsIGNvbXBhcmVfY29uZGl0aW9uLgoJKG91dF90c3RoaSwgb3V0X3RzdHNpKTogQ2FsbCBjb21wYXJlX3NpZ25fcC4KCShhdnJfcHJvZ21lbV9wKTogQ2hlY2sgZm9yIGVycm9yX21hcmtfbm9kZS4KCjIwMDAtMTItMTEgIE5laWwgQm9vdGggIDxuZWlsYkBlYXJ0aGxpbmcubmV0PgoKCSogY3BwZXJyb3IuYyAocHJpbnRfbG9jYXRpb24pOiBOZXcgZnVuY3Rpb24uCgkocHJpbnRfY29udGFpbmluZ19maWxlcyk6IFNpbXBsaWZ5LgoJKF9jcHBfYmVnaW5fbWVzc2FnZSk6IFNpbXBsaWZ5IGFuZCB1c2UgcHJpbnRfbG9jYXRpb24uCgkqIGNwcGZpbGVzLmMgKHN0YWNrX2luY2x1ZGVfZmlsZSk6IFVwZGF0ZS4KCShfY3BwX3BvcF9maWxlX2J1ZmZlcik6IFVwZGF0ZS4KCSogY3BwaGFzaC5oIChzdHJ1Y3QgY3BwX2J1ZmZlcik6IE5ldyBtZW1iZXJzCglpbmNsdWRlX3N0YWNrX2xpc3RlZCBhbmQgdHlwZS4KCSogY3BwbGliLmMgKF9jcHBfaGFuZGxlX2RpcmVjdGl2ZSk6IEJ1ZmZlci0+aW5jIGlzIG5vdCBudWxsLgoJKHJ1bl9kaXJlY3RpdmUpOiBUYWtlIGJ1ZmZlciB0eXBlLiAgY3BwX3B1c2hfYnVmZmVyIGNhbm5vdCBmYWlsLgoJKF9jcHBfZG9fX1ByYWdtYSwgY3BwX2RlZmluZSwgX2NwcF9kZWZpbmVfYnVpbHRpbiwgY3BwX3VuZGVmLAoJaGFuZGxlX2Fzc2VydGlvbik6IFVwZGF0ZS4KCShjcHBfcHVzaF9idWZmZXIpOiBUYWtlIGEgYnVmZmVyIHR5cGUgYW5kIGZpbGUgbmFtZS4KCShjcHBfcG9wX2J1ZmZlcik6IFVwZGF0ZS4gIENsZWFyIGluY2x1ZGVfc3RhY2tfbGlzdGVkLgoJKiBjcHBsaWIuaCAoaW5wdXRfc3RhY2tfbGlzdGluZ19jdXJyZW50KTogUmVtb3ZlLgoJKGVudW0gY3BwX2J1ZmZlcl90eXBlKTogTmV3LgoJKGNwcF9wdXNoX2J1ZmZlcik6IE5ldyBwcm90b3R5cGUuCgkqIGNwcG1hY3JvLmMgKGJ1aWx0aW5fbWFjcm8pOiBTaW1wbGlmeTsgYnVmZmVyIGNhbm5vdCBiZSBudWxsLgoJKiBmaXgtaGVhZGVyLmMgKHJlYWRfc2Nhbl9maWxlKTogVXBkYXRlLgoKMjAwMC0xMi0xMCAgUm9iZXJ0IExpcGUgPHJvYmVydGxpcGVAdXNhLm5ldD4KCgkqIGluc3RhbGwudGV4aSAoaSo4Ni0qLXNjbzMuMnY1Kik6IFJlbW92ZSBpbmZvcm1hdGlvbiBkdXBsaWNhdGVkCglpbiBodG1sIHZlcnNpb24uCgoyMDAwLTEyLTEwICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEByZWRoYXQuY29tPgoKCSogZ2VucmVjb2cuYyAoZmluZF9vcGVyYW5kKTogSGFuZGxlICdWJyBmb3JtYXQgY29kZS4KCShmaW5kX21hdGNoaW5nX29wZXJhbmQpOiBOZXcuCgkodmFsaWRhdGVfcGF0dGVybik6IEFjY2VwdCAnPScgZm9yIGFuIGluLW91dCBvcGVyYW5kIGlmIHRoZXJlCglpcyBhbm90aGVyIG9wZXJhbmQgd2l0aCBhIG1hdGNoaW5nIGNvbnN0cmFpbnQuCgoJKiBjb25maWcvaTM4Ni9pMzg2Lm1kIChhbmRxaV9leHRfMF9jYyk6IFVzZSBtYXRjaGluZyBjb25zdHJhaW50Cglmb3Igb3AxIHRvIG9wMC4KCjIwMDAtMTItMTAgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CgoJKiBnZW5yZWNvZy5jICh2YWxpZGF0ZV9wYXR0ZXJuKSBbU1RSSUNUX0xPV19QQVJUXTogRml4IHRoaW5rby4KCjIwMDAtMTItMDkgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CgoJKiBnZW5yZWNvZy5jICh2YWxpZGF0ZV9wYXR0ZXJuKTogVmVyaWZ5IHRoYXQgWkVST19FWFRSQUNUIGFuZAoJU1RSSUNUX0xPV19QQVJUIGFzIFNFVF9ERVNUIGhhdmUgaW4tb3V0IGNvbnN0cmFpbnRzLgoKMjAwMC0xMi0wOSAgSm9zZXBoIFMuIE15ZXJzICA8anNtMjhAY2FtLmFjLnVrPgoKCSogYy1jb21tb24uYyAoY2hlY2tfZnVuY3Rpb25fZm9ybWF0KTogRG9uJ3Qgc3VnZ2VzdCBhZGRpbmcgZm9ybWF0CglhdHRyaWJ1dGVzIHRvIGZ1bmN0aW9ucyB3aXRoIG5vIHBhcmFtZXRlciB0byB3aGljaCB0byBhZGQgdGhlbS4KCjIwMDAtMTItMDkgIE5pY2sgQ2xpZnRvbiAgPG5pY2tjQHJlZGhhdC5jb20+CgoJKiBjb25maWcvYXJtL2FybS5jIChhcm1fZXhwYW5kX3Byb2xvZ3VlKTogTWFyayB0aGUgZ2VuZXJhdGVkCglpbnNuIG5vdCB0aGUgc2V0IGFzIGJlaW5nIERXQVJGMl9GUkFNRV9SRUxBVEVEX1AuCgoyMDAwLTEyLTA5ICBMYXVyeW5hcyBCaXZlaW5pcyAgPGxhdXJhc0Bzb2Z0aG9tZS5uZXQ+CgoJKiBNYWtlZmlsZS5pbjogdXNlICQoYnVpbGRfZXhlZXh0KSBmb3IgYWxsIGJ1aWxkCglzeXN0ZW0gZXhlY3V0YWJsZSB0YXJnZXRzLgoKMjAwMC0xMi0wOSAgTGF1cnluYXMgQml2ZWluaXMgIDxsYXVyYXNAc29mdGhvbWUubmV0PgoKCSogaW5zdGFsbC50ZXhpOiByZW1vdmUgaVszNDVdODYtKi13aW5udDMuNSBzZWN0aW9uLgoJKiBjb25maWd1ci5iYXQ6IHJlbW92ZWQuCgkqIGNvbmZpZy9tc2RvczogZGlyZWN0b3J5IHJlbW92ZWQuCgoyMDAwLTEyLTA5ICBOZWlsIEJvb3RoICA8bmVpbGJAZWFydGhsaW5nLm5ldD4KCgkqIGNwcGZpbGVzLmMgKE5FVkVSX1JFUkVBRCwgRE9fTk9UX1JFUkVBRCk6IE1vdmUgZnJvbSBjcHBoYXNoLmguCgkqIGNwcGhhc2guaCAoTkVWRVJfUkVSRUFELCBET19OT1RfUkVSRUFELCBBQlNPTFVURV9QQVRIKTogRGVsZXRlLgoJKiBjcHBsZXguYyAocGFyc2VfaWRlbnRpZmllcik6IEltcHJvdmUgZGlhZ25vc3RpYy4KCShfY3BwX2xleF90b2tlbik6IFJldHVybiB1bmNvbmRpdGlvbmFsbHkgYXQgdGhlIGVuZCBvZiBhIGRpcmVjdGl2ZS4KCSogY3BwbGliLmMgKHJlYWRfZmxhZyk6IFZlcmlmeSBsZWdhbGl0eSBvZiBlYWNoIGZsYWcuCgkoZW5kX2RpcmVjdGl2ZSk6IFJlc290cmUgcGZpbGUtPnNraXBwaW5nIGJlZm9yZSBza2lwX3Jlc3Rfb2ZfbGluZS4KCShkb19saW5lKTogVXNlIHRoZSBuZXcgcmVhZF9mbGFnLgoJKiBjcHBtYWNyby5jIChzdHJ1Y3QgY3BwX21hY3JvLCBwYXJzZV9hcmcsIHJlcGxhY2VfYXJncywKCWNoZWNrX21hY3JvX3JlZGVmaW5pdGlvbiwgcGFyc2VfcGFyYW1zKTogUmVuYW1lIHZhcl9hcmdzIHRvCgl2YXJpYWRpYy4KCjIwMDAtMTItMDkgIEpvc2VwaCBTLiBNeWVycyAgPGpzbTI4QGNhbS5hYy51az4KCgkqIC5jdnNpZ25vcmU6IEFkZCBpbmZvIGZpbGVzLgoKMjAwMC0xMi0wOCBMYXVyeW5hcyBCaXZlaW5pcyA8bGF1cmFzQHNvZnRob21lLm5ldD4KCgkqIGNvbmZpZy93aW5udDogUmVtb3ZlIG9ic29sZXRlIGRpcmVjdG9yeS4KCSogaW5zdGFsbC50ZXhpIChDb25maWd1cmF0aW9ucyk6IFJlbW92ZSBvYnNvbGV0ZSBkb2N1bWVudGF0aW9uIGZvcgoJV2luZG93cyBOVC4KCjIwMDAtMTItMDggIEpvc2VwaCBTLiBNeWVycyAgPGpzbTI4QGNhbS5hYy51az4KCgkqIGNvbmZpZ3VyZS5pbjogRG9uJ3QgZGVmaW5lIElOU1RBTExfSU5GTy4KCSogY29uZmlndXJlOiBSZWdlbmVyYXRlLgoJKiBNYWtlZmlsZS5pbiAoSU5TVEFMTF9JTkZPKTogUmVtb3ZlLgoJKGluZm8pOiBEZXBlbmQgb24gaW5mbyBmaWxlcyBpbiBzb3VyY2UgZGlyZWN0b3J5LgoJKGNwcC5pbmZvLCBnY2MuaW5mbywgYy10cmVlLmluZm8pOiBCdWlsZCBpbmZvIGZpbGVzIGluIHNvdXJjZQoJZGlyZWN0b3J5LgoJKGRpc3RjbGVhbik6IERvbid0IHJlbW92ZSBpbmZvIGZpbGVzLgoJKG1haW50YWluZXItY2xlYW4pOiBSZW1vdmUgaW5mbyBmaWxlcyBmcm9tIHNvdXJjZSBkaXJlY3RvcnkuCgkoaW5zdGFsbC1ub3JtYWwpOiBEZXBlbmQgb24gaW5zdGFsbC1pbmZvLgoJKGluc3RhbGwtaW5mbyk6IEluc3RhbGwgaW5mbyBmaWxlcyBmcm9tIHNvdXJjZSBkaXJlY3RvcnksIGlmIHRoZXkKCWV4aXN0LgoJKiB0ZXhpbmZvLnRleDogVXBkYXRlIHRvIHZlcnNpb24gMjAwMC0xMS0wOS4wOCBmcm9tIGZ0cC5nbnUub3JnLgoKMjAwMC0xMi0wOCAgQWxleGFuZHJlIE9saXZhICA8YW9saXZhQHJlZGhhdC5jb20+CgoJKiBsY20uYyAob3B0aW1pemVfbW9kZV9zd2l0Y2hpbmcpOiBDaGVjayB3aGV0aGVyIGFuIGluc24gaXMgYSBOT1RFCgliZWZvcmUgdGFraW5nIGl0cyBOT1RFX0xJTkVfTlVNQkVSLgoKMjAwMC0xMi0wOCAgTmljayBDbGlmdG9uICA8bmlja2NAcmVkaGF0LmNvbT4KCgkqIGNvbmZpZy9hcm0vYXJtLm1kIChsb2FkX2luZGlyZWN0X2p1bXApOiBBZGQgcG9vbCByYW5nZXMuCgoJKiBleHRlbmQudGV4aTogRG9jdW1lbnQgQVJNICJpbnRlcnJ1cHQiIGZ1bmN0aW9uIGF0dHJpYnV0ZS4KCU1lbnRpb24gdGhhdCB0aGUgQVJNIGFsc28gc3VwcG9ydCB0aGUgIm5ha2VkIiBmdW5jdGlvbgoJYXR0cmlidXRlLgoKCSogY29uZmlnL2FybS9hcm0tcHJvdG9zLmggKGFybV9jdXJyZW50X2Z1bmNfdHlwZSk6IEFkZAoJcHJvdG90eXBlLgoKCSogY29uZmlnL2FybS9hcm0uaCAoRVhDRVBUSU9OX0xSX1JFR05VTSk6IERlZmluZS4KCShzdHJ1Y3QgbWFjaGluZV9mdW5jdGlvbik6IEFkZCAnZnVuY190eXBlJyBmaWVsZC4KCURlZmluZSBiaXQgdmFsdWVzIGZvciAnZnVuY190eXBlJyBmaWVsZC4KCShBUk1fRlVOQ19UWVBFKTogTmV3IG1hY3JvLgoJKElTX0lOVEVSUlVQVCk6IE5ldyBtYWNyby4KCShJU19WT0xBVElMRSk6IE5ldyBtYWNyby4KCShJU19OQUtFRCk6IE5ldyBtYWNyby4KCShJU19ORVNURUQpOiBOZXcgbWFjcm8uCgkoQVJNX0lOSVRJQUxfRUxJTUlOQVRJT05fT0ZGU0VUKTogVXNlIElTX1ZPTEFUSUxFLgoKCSogY29uZmlnL2FybS9hcm0uYyAoaXNyX2F0dHJpYnV0ZV9hcmdzKTogTmV3IFN0cnVjdHVyZS4gIEEKCWxpc3Qgb2YgImludGVycnVwdCIgZnVuY3Rpb24gYXR0cmlidXRlIG1vZGlmaWVycy4KCShhcm1faXNyX3ZhbHVlKTogTmV3IEZ1bmN0aW9uOiBSZXR1cm5zIHRoZSB0eXBlIG9mIHRoZSBjdXJyZW50CglpbnRlcnJ1cHQgZnVuY3Rpb24uCgkoYXJtX2NvbXB1dGVfZnVuY190eXBlKTogTmV3IEZ1bmN0aW9uOiBDb21wdXRlcyB0aGUgdHlwZSBvZgoJdGhlIGN1cnJlbnQgZnVuY3Rpb24uCgkoYXJtX2N1cnJlbnRfZnVuY190eXBlKTogTmV3IEZ1bmN0aW9uOiBSZXR1cm5zIHRoZSB0eXBlIG9mIHRoZQoJY3VycmVudCBmdW5jdGlvbi4KCSh1c2VfcmV0dXJuX2luc24pOiBVc2UgYXJtX2N1cnJlbnRfZnVuY190eXBlLgoJKGFybV92YWxpZF90eXBlX2F0dHJpYnV0ZV9wKTogQWNjZXB0ICJpbnRlcnJ1cHQiIGZ1bmN0aW9uCglhdHRyaWJ1dGUuCgkoYXJtX2NvbXBfdHlwZV9hdHRyaWJ1dGVzKTogQ2hlY2sgImludGVycnVwdCIgYXR0cmlidXRlcy4KCShhcm1fdmFsaWRfbWFjaGluZV9kZWNsKTogQWNjZXB0ICJpbnRlcnJ1cHQiIGZ1bmN0aW9uCglhdHRyaWJ1dGUuCgkoYXJtX2Z1bmN0aW9uX29rX2Zvcl9zaWJjYWxsKTogRG8gbm90IGFsbG93IGludGVycnVwdAoJZnVuY3Rpb25zIHRvIHVzZSBzaWJjYWxscy4KCShhcm1fbmFrZWRfZnVuY3Rpb25fcCk6IERlbGV0ZS4KCShwcmludF9tdWx0aV9yZWcpOiBSZW1vdmUgcmVkdW5kYW50IHBhcmFtZXRlciAnaGF0Jy4KCShhcm1fY29tcHV0ZV9zYXZlX3JlZ19tYXNrKTogTmV3IEZ1bmN0aW9uOiBDb21wdXRlIGEgYml0IG1hc2sKCW9mIHJlZ2lzdGVycyBzYXZlZCBkdXJpbmcgdGhlIGN1cnJlbnQgZnVuY3Rpb24ncyBwcm9sb2d1ZS4KCShvdXRwdXRfYXJtX3JldHVybl9pbnN0cnVjdGlvbik6IFVzZSBhcm1fY3VycmVudF9mdW5jX3R5cGUuCglHZW5lcmF0ZSByZXR1cm4gaW5zdHJ1Y3Rpb24gd2hlbiBMUiBpcyBub3QgcG9wcHNlZCBvZmYgdGhlCglzdGFjay4KCShhcm1fdm9sYXRpbGVfZnVuYyk6IERlbGV0ZS4KCShvdXRwdXRfYXJtX3Byb2xvZ3VlKTogVXNlIGFybV9jdXJyZW50X2Z1bmNfdHlwZSBhbmQKCWFybV9jb21wdXRlX3NhdmVfcmVnX21hc2suCglOb3RlIHByZXNlcm5jZSBvZiBpbnRlcnJ1cHQgZnVuY3Rpb25zLgoJKGFybV9vdXRwdXRfZXBpbG9ndWUpOiBVc2UgYXJtX2N1cnJlbnRfZnVuY190eXBlIGFuZAoJYXJtX2NvbXB1dGVfc2F2ZV9yZWdfbWFzay4KCShhcm1fZXhwYW5kX3Byb2xvZ3VlKTogVXNlIGFybV9jdXJyZW50X2Z1bmNfdHlwZSBhbmQKCWFybV9jb21wdXRlX3NhdmVfcmVnX21hc2suCgkoYXJtX2luaXRfbWFjaGluZV9zdGF0dXMpOiBJbml0aWFsaXplIGZ1bmNfdHlwZSBmaWVsZCwgaWYKCW5lY2Vzc2FyeS4KCSh0aHVtYl9leHBhbmRfcHJvbG9ndWUpOiBVc2UgYXJtX2N1cnJlbnRfZnVuY190eXBlLgoJKG91dHB1dF90aHVtYl9wcm9sb2d1ZSk6IFVzZSBhcm1fY3VycmVudF9mdW5jX3R5cGUuCgoyMDAwLTEyLTA4ICBCcmFkIEx1Y2llciA8bHVjaWVyQG1hdGgucHVyZHVlLmVkdT4KCgkqIHRyYWRjcHAuYyAoZG9faW5jbHVkZSk6IE1ha2UgcG9pbnRlciBkaWZmZXJlbmNlcyA2NC1iaXQgY2xlYW4uCgpGcmkgRGVjICA4IDA4OjIzOjI5IDIwMDAgIEoib3JuIFJlbm5lY2tlIDxhbXlsYWFyQHJlZGhhdC5jb20+CgoJKiBmcC1iaXQuYyAoX2ZwbXVsX3BhcnRzKTogVXNlIFVTSXR5cGUgdmFyaWFibGVzIGFzIGlucHV0cwoJZm9yIG11bHRpcGxpZXMuCgoyMDAwLTEyLTA3ICBNaWtlIFN0dW1wICA8bXJzQHdycy5jb20+CgoJKiBNYWtlZmlsZS5pbiAoZGlzdGNsZWFuKTogUmVtb3ZlIGFsbG9jYS5jIGhhc2h0YWIuYy4KCjIwMDAtMTItMDcgIFphY2sgV2VpbmJlcmcgIDx6YWNrQHdvbGVyeS5zdGFuZm9yZC5lZHU+CgoJKiBNYWtlZmlsZS5pbiAoSE9TVF9SVEwpOiBBZGQgc2FmZS1jdHlwZS5vLgoJKHNhZmUtY3R5cGUubyk6IE5ldyBydWxlLgoJKiBzeXN0ZW0uaDogSW5jbHVkZSBzYWZlLWN0eXBlLmgsIG5vdCBjdHlwZS5oLiAgTm8gbmVlZCB0bwoJd3JhcCBjdHlwZSBtYWNyb3MuCgoJKiBjcHBoYXNoLmg6IFphcCBJU3RhYmxlIGFuZCByZWxhdGVkIG1hY3Jvcy4gIERlZmluZSBpc18qIGluCgl0ZXJtcyBvZiBzYWZlLWN0eXBlLmggbWFjcm9zLgoJKiBjcHBpbml0LmM6IERlbGV0ZSB0aGUgSVN0YWJsZSBhbmQgYWxsIHJlbGF0ZWQgY29kZS4KCgkqIHRyYWRjcHAuYzogRGVsZXRlIGlzX2lkY2hhciwgaXNfaWRzdGFydCwgaXNfaG9yX3NwYWNlLCBhbmQKCWlzX3NwYWNlIGFycmF5cy4gIERlbGV0ZSBpbml0aWFsaXplX2NoYXJfc3ludGF4LiAgQ2hhbmdlIGFsbAoJcmVmZXJlbmNlcyB0byB0aGUgYWJvdmUgYXJyYXlzIHRvIHVzZSBtYWNyb3MgaW5zdGVhZC4KCSogdHJhZGNwcC5oOiBEZWZpbmUgaXNfaWRjaGFyLCBpc19pZHN0YXJ0LCBpc19zcGFjZSwgYW5kCglpc19udnNwYWNlIGluIHRlcm1zIG9mIHNhZmVfY3R5cGUuaCdzIG1hY3Jvcy4KCSogdHJhZGNpZi55OiBpc19pZGNoYXIsIGlzX2lkc3RhcnQgYXJlIG1hY3JvcyBub3QgYXJyYXlzLgoKCSogY29uZmlnL2kzNzAvaTM3MC5jLCBjb25maWcvd2lubnQvZGlyZW50LmMsCgljb25maWcvd2lubnQvZml4aW5jLW50LmMsIGNvbmZpZy93aW5udC9sZC5jOgoJVXNlIHVwcGVyY2FzZSBjdHlwZSBtYWNyb3MuICBJZiB3ZSBpbmNsdWRlZCBjdHlwZS5oLAoJaW5jbHVkZSBzYWZlLWN0eXBlLmggaW5zdGVhZC4KCgkqIGZpeGluYy9maXhmaXhlcy5jOiBVc2UgdXBwZXJjYXNlIGN0eXBlIG1hY3Jvcy4gIERvbid0IHRlc3QKCUlTTE9XRVIoYykgYmVmb3JlIGNhbGxpbmcgVE9VUFBFUihjKS4KCSogZml4aW5jL2ZpeGluY2wuYyAoZXh0cmFjdF9xdW90ZWRfZmlsZXMpOiBTaW1wbGlmeSBvdXQgc29tZSBndW5rLgoJKiBmaXhpbmMvZ251LXJlZ2V4LmM6IEluY2x1ZGUgc2FmZS1jdHlwZS5oLCBub3QgY3R5cGUuaC4gIE5vIG5lZWQgdG8KCXdyYXAgY3R5cGUgbWFjcm9zLiAgRG9uJ3QgdGVzdCBJU1VQUEVSKHgpIGJlZm9yZSBjYWxsaW5nIFRPTE9XRVIoeCkuCgoyMDAwLTEyLTA3ICBESiBEZWxvcmllICA8ZGpAcmVkaGF0LmNvbT4KCgkqIGMtZGVjbC5jIChncm9rZGVjbGFyYXRvcik6IHByZXNlcnZlIHByZXZpb3VzIGFsaWdubWVudHMgd2hlbgoJcmVidWlsZGluZyBhcnJheSB0eXBlcy4KCjIwMDAtMTItMDcgIE5laWwgQm9vdGggIDxuZWlsYkBlYXJ0aGxpbmcubmV0PgoKCSogY3BwZmlsZXMuYyAoc3RydWN0IGluY2x1ZGVfZmlsZSk6IE1vdmUgZnJvbSBjcHBoYXNoLmguCgkoX2NwcF9uZXZlcl9yZXJlYWQpOiBOZXcgZnVuY3Rpb24uCgkob3Blbl9maWxlLCByZWFkX2luY2x1ZGVfZmlsZSk6IFVzZSBpdC4KCShzdGFja19pbmNsdWRlX2ZpbGUpOiBTZXQgdGhlIGJ1ZmZlcidzIHN5c3AgYWNjb3JkaW5nIHRvIHRoZQoJcGF0aCBpbiB3aGljaCB0aGUgZmlsZSB3YXMgZm91bmQuCgkoZmluZF9pbmNsdWRlX2ZpbGUpOiBEb24ndCBzZXQgc3lzcC4KCShjcHBfbWFrZV9zeXN0ZW1faGVhZGVyLCBhY3R1YWxfZGlyZWN0b3J5KTogVXBkYXRlLgoJKF9jcHBfZXhlY3V0ZV9pbmNsdWRlKTogRG8gI2luY2x1ZGVfbmV4dCBsb29rdXAgaGFuZGxpbmcgaGVyZSwKCW5vdCBpbiBjcHBsaWIuYy4gIFVzZSBfY3BwX25ldmVyX3JlcmVhZC4KCSogY3BwaGFzaC5oIChzdHJ1Y3RfaW5jbHVkZV9maWxlKTogUmVtb3ZlLgoJKHN0cnVjdCBjcHBfYnVmZmVyKTogTmV3IG1lbWJlciBzeXNwLgoJKENQUF9JTl9TWVNURU1fSEVBREVSLCBfY3BwX2V4ZWN1dGVfaW5jbHVkZSk6IFVwZGF0ZS4KCShfY3BwX25ldmVyX3JlcmVhZCk6IE5ldy4KCSogY3BwbGliLmMgKHJlYWRfbGluZV9udW1iZXIpOiBSZW5hbWUgcmVhZF9mbGFnLiAgUmV3b3JrIHNsaWdodGx5LgoJKGVuZF9kaXJlY3RpdmUpOiBDbGVhciBsaW5lX2V4dGVuc2lvbiBmbGFnLgoJKF9jcHBfaGFuZGxlX2RpcmVjdGl2ZSk6IFNldCBsaW5lX2V4dGVuc2lvbiBmbGFnIGZvciAjbnVtYmVyLgoJKGRvX2luY2x1ZGVfbmV4dCk6IEhhbmRsZSBwYXRoIGxvb2t1cCBpbiBfY3BwX2V4ZWN1dGVfaW5jbHVkZS4KCShkb19saW5lKTogQ2xlYW51cCB0byB1c2UgcmVhZF9mbGFnLiAgRG9uJ3QgYWxsb3cgZmxhZ3MgaW4gI2xpbmUuCgkoX2NwcF9kb19maWxlX2NoYW5nZSk6IFVwZGF0ZS4KCShkb19wcmFnbWFfb25jZSk6IFVzZSBjcHBfbmV2ZXJfcmVyZWFkLiAgQ2xlYW4gdXAuCgkqIGNwcGxpYi5oIChzdHJ1Y3QgbGV4ZXJfc3RhdGUpOiBOZXcgbWVtYmVyIGxpbmVfZXh0ZW5zaW9uLgoKMjAwMC0xMi0wNyAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCgkqIGZsb3cuYyAoY2FsY3VsYXRlX2dsb2JhbF9yZWdzX2xpdmUpOiBGb3JjZSB0aGUgc3RhY2sgcG9pbnRlciBsaXZlCglhZnRlciByZWxvYWQgYXMgd2VsbC4KCjIwMDAtMTItMDcgIEJydWNlIEtvcmIgIDxia29yYkBnbnUub3JnPgoKCSogZml4aW5jL01ha2VmaWxlLiooZXhlZXh0KTogdGhlIHZhcmlhYmxlcyBhcmUgZXhlZXh0LCB0aGUKCXN1YnN0aXR1dGlvbiBleHByZXNzaW9uIGlzIGJ1aWxkX2V4ZWV4dC4KCjIwMDAtMTItMDcgIE5laWwgQm9vdGggIDxuZWlsYkBlYXJ0aGxpbmcubmV0PgoKCSogYy1jb21tb24uYyAocGFyc2VfaW4pOiBNYWtlIGEgY3BwX3JlYWRlciAqLgoJKiBjcHBmaWxlcy5jIChfY3BwX2Zha2VfaW5jbHVkZSk6IFJlbW92ZS4KCSogY3BwaGFzaC5oOiBTaW1pbGFybHkuCgkqIGNwcGxpYi5jIChkb19saW5lKTogRG9uJ3QgY2FsbCBfY3BwX2Zha2VfaW5jbHVkZS4gIEEgdmFsaWQKCSNsaW5lIGFsd2F5cyBjcmVhdGVzIGEgY2FsbGJhY2s7IEZDX1JFTkFNRSBpZiB0aGVyZSBhcmUgbm8KCSNsaW5lIGZsYWdzLgoJKiBmaXgtaGVhZGVyLmMgKHJlYWRfc2Nhbl9maWxlKTogY3BwX3B1c2hfYnVmZmVyIGNhbm5vdCBmYWlsLgoJVGhlIGZpcnN0IEVPRiBtdXN0IGJlIG91ciBnZXRfY2hhciBidWZmZXIuCgoyMDAwLTEyLTA3ICBKb3NlcGggUy4gTXllcnMgIDxqc20yOEBjYW0uYWMudWs+CgoJKiBjLWNvbW1vbi5jICh3YXJuX2Zvcm1hdF9zZWN1cml0eSk6IE5ldyB2YXJpYWJsZS4KCShjaGVja19mb3JtYXRfaW5mbyk6IFdhcm4gYWJvdXQgbm9uLWxpdGVyYWwgZm9ybWF0cyB3aXRoIG5vIGZvcm1hdAoJYXJndW1lbnRzIGlmIGVpdGhlciAtV2Zvcm1hdC1ub25saXRlcmFsIG9yIC1XZm9ybWF0LXNlY3VyaXR5IGlzCglzcGVjaWZpZWQuCgkoc2V0X1dmb3JtYXQpOiBTZXQgd2Fybl9mb3JtYXRfc2VjdXJpdHkgZm9yIHNldHRpbmdzIG90aGVyIHRoYW4gMS4KCSogYy1jb21tb24uaCAod2Fybl9mb3JtYXRfc2VjdXJpdHkpOiBEZWNsYXJlLgoJKiBjLWRlY2wuYyAoY19kZWNvZGVfb3B0aW9uKTogRGVjb2RlIC1XZm9ybWF0LXNlY3VyaXR5IGFuZAoJLVduby1mb3JtYXQtc2VjdXJpdHkuCgkqIGludm9rZS50ZXhpOiBEb2N1bWVudCAtV2Zvcm1hdC1zZWN1cml0eS4KCSogdG9wbGV2LmMgKGRvY3VtZW50ZWRfbGFuZ19vcHRpb25zKTogSW5jbHVkZSAtV2Zvcm1hdC1zZWN1cml0eQoJYW5kIC1Xbm8tZm9ybWF0LXNlY3VyaXR5LgoKMjAwMC0xMi0wNyAgSm9zZXBoIFMuIE15ZXJzICA8anNtMjhAY2FtLmFjLnVrPgoKCSogYy1jb21tb24uYyAoY2hlY2tfZm9ybWF0X2luZm8pOiBXYXJuIGZvciBub24tY29uc3RhbnQgZm9ybWF0CglzdHJpbmdzIHdpdGggc3RyZnRpbWUgZm9ybWF0cyBpZiAtV2Zvcm1hdC1ub25saXRlcmFsLiAgV2hlcmUgdGhlCglmb3JtYXQgY2FuIGNvbnZlcnQgYXJndW1lbnRzLCBpZiB0aGUgZm9ybWF0IGlzIG5vdCBhIHN0cmluZwoJbGl0ZXJhbCBhbmQgdGhlcmUgYXJlIG5vIGFyZ3VtZW50cyB0byB0aGUgZm9ybWF0LCBnaXZlIGEgZGlmZmVyZW50Cgl3YXJuaW5nIG1lc3NhZ2UgZnJvbSB0aGUgZ2VuZXJhbCBub24tc3RyaW5nLWxpdGVyYWwgY2FzZS4KCjIwMDAtMTItMDcgIEpvc2VwaCBTLiBNeWVycyAgPGpzbTI4QGNhbS5hYy51az4KCgkqIGMtY29tbW9uLmMgKGZvcm1hdF93YW50ZWRfdHlwZSk6IEFkZCByZWFkaW5nX2Zyb21fZmxhZy4KCShwcmludF9jaGFyX3RhYmxlKTogTWFyayAlcyBhbmQgJVMgZm9ybWF0cyB3aXRoIGZsYWcgIlIiLgoJKGNoZWNrX2Zvcm1hdF9pbmZvX21haW4pOiBTZXQgdXAgcmVhZGluZ19mcm9tX2ZsYWcgYXBwcm9wcmlhdGVseS4KCUlmIGFmbGFnLCBhbHdheXMgc2V0IHdyaXRpbmdfaW5fZmxhZyByYXRoZXIgdGhhbiByZWx5aW5nIG9uIHRoZQoJZm9ybWF0IHVzZWQgYmVpbmcgYSBzY2FuZiBmb3JtYXQgYW5kIHNvIGhhdmluZyBpdCBzZXQuCgkoY2hlY2tfZm9ybWF0X3R5cGVzKTogQ2hlY2sgZm9yIGZvcm1hdHMgcmVhZGluZyB0aHJvdWdoIG51bGwKCXBvaW50ZXJzLgoKMjAwMC0xMi0wNyAgSm9zZXBoIFMuIE15ZXJzICA8anNtMjhAY2FtLmFjLnVrPgoKCSogaW52b2tlLnRleGkgKC1XZm9ybWF0KTogRG9jdW1lbnQgd2hhdCBmb3JtYXQgZmVhdHVyZXMgYXJlCgljaGVja2VkLgoKMjAwMC0xMi0wNiAgS2F6dSBIaXJhdGEgIDxrYXp1QGh4aS5jb20+CgoJKiBjb25maWcvaDgzMDAvaDgzMDAuaDogRml4IGZvcm1hdHRpbmcuCgoyMDAwLTEyLTA2ICAgICAgSm9lbCBTaGVycmlsbCA8am9lbEBPQVJjb3JwLmNvbT4KCgkqIGNvbmZpZy5nY2MgKGEyOWsqLSotcnRlbXMqLCBhcm0qLSotcnRlbXMqLCBjNHgtKi1ydGVtcyosCgloODMwMC0qLXJ0ZW1zKiwgaHBwYTEuMS0qLXJ0ZW1zLCAqbWlwcyotKi1ydGVtcyopOiBOZXcgdGFyZ2V0cy4KCSogY29uZmlnLmdjYyAoKi1ydGVtcyopOiBBZGQgc3VwcG9ydCBmb3IgZ3Roci1ydGVtcy5oLgoJKiBndGhyLXJ0ZW1zLmgsIGNvbmZpZy9hMjlrL3J0ZW1zLmgsIGNvbmZpZy9hcm0vcnRlbXMtZWxmLmgsCgljb25maWcvaDgzMDAvcnRlbXMuaCwgY29uZmlnL21pcHMvcnRlbXMuaDogTmV3IGZpbGVzLgoKMjAwMC0xMi0wNiAgTWFyayBLZXR0ZW5pcyAgPGtldHRlbmlzQGdudS5vcmc+CgoJKiBjb25maWcuZ2NjOiBSZW9yZ2FuaXplIGhhbmRsaW5nIG9mICotKi1nbnUqLCB0byBzaGFyZSB0YXJnZXQKCXNwZWNpZmljIG1ha2UgZGV0YWlscyB3aXRoIExpbnV4LiAgVXBkYXRlIGNvbW1lbnRzIHRvIGNsYXJpZnkKCXRoZSBkaXN0aW5jdGlvbiBiZXR3ZWVuIEdOVS9MaW51eCBhbmQgR05VL0h1cmQuCgpXZWQgRGVjICA2IDE5OjIyOjAyIDIwMDAgIEplZmZyZXkgQSBMYXcgIChsYXdAY3lnbnVzLmNvbSkKCgkqIGNvbnRyaWIudGV4aTogRml4IG15IGVtYWlsIGFkZHJlc3MuICBVcGRhdGUgUGVyJ3MKCWxpc3Qgb2YgY29udHJpYnV0aW9ucy4KCjIwMDAtMTItMDYgIFJvZG5leSBCcm93biAgPFJvZG5leUJyb3duQG15bmQuY29tPgoKCSogYy1sZXguYyAoY2JfaW5kZW50KTogRGVjb3JhdGUgYHN0cicgYXJndW1lbnQsIHVudXNlZCBvbiBIUC1VWC4KCSogY29sbGVjdDIuYyAoc2Nhbl9saWJyYXJpZXMpOiBSZW1vdmUgdW51c2VkIGBjaCcuCgkoQ09GRiBzcGVjaWZpYyBzdHVmZik6IFByb3RvdHlwZSBsZGdldG5hbWUuICBEZWNsYXJlIGFuZCBwcm90b3R5cGUKCWxkYnRyZWFkIGFuZCBsZGNsb3NlLgoKCSogY29uZmlnL2FscGhhL29zZi5oOiBTdGFuZGFyaXplIGNvcHlyaWdodCBzdGF0ZW1lbnQuCgkqIGNvbmZpZy9hcmMvYXJjLmg6IExpa2V3aXNlLgoJKiBjb25maWcvYXJtL2VsZi5oIGNvbmZpZy9hcm0vY29mZi5oIGNvbmZpZy9hcm0vYW91dC5oOiBMaWtld2lzZS4KCSogY29uZmlnL2FybS9hcm0uYyBjb25maWcvYXJtL2FybS5oOiBMaWtld2lzZS4KCSogY29uZmlnL2VseHNpL2VseHNpLmg6IExpa2V3aXNlLgoJKiBjb25maWcvaTM4Ni9zY28uaDogTGlrZXdpc2UuCgkqIGNvbmZpZy9tNjhrL2NyZHMuaCBjb25maWcvbTY4ay9ocDMyMC5oIGNvbmZpZy9tNjhrL2x5bnguaDogTGlrZXdpc2UuCgkqIGNvbmZpZy9tNjhrL202OGt2NC5oIGNvbmZpZy9tNjhrL25leHQyMS5oOiBMaWtld2lzZS4KCSogY29uZmlnL202OGsvc3VuMy5oOiBMaWtld2lzZS4KCSogY29uZmlnL204OGsvZGd1eC5oIGNvbmZpZy9tODhrL2RndXhiY3MuaDogTGlrZXdpc2UuCgkqIGNvbmZpZy9wZHAxMS8yYnNkLmggY29uZmlnL3BkcDExL3BkcDExLmg6IExpa2V3aXNlLgoJKiBjb25maWcvcm9tcC9yb21wLmg6IExpa2V3aXNlLgoJKiBjb25maWcvcnM2MDAwL2FpeDQxLmg6IExpa2V3aXNlLgoJKiBjb25maWcvc3BhcmMvc3lzdjQuaDogTGlrZXdpc2UuCgkqIGNvbmZpZy93ZTMyay93ZTMyay5jIGNvbmZpZy93ZTMyay93ZTMyay5oOiBMaWtld2lzZS4KCSogZml4aW5jL2dudS1yZWdleC5jIGZpeGluYy9nbnUtcmVnZXguaDogTGlrZXdpc2UuCgkqIGNwcGxpYi5oIGNwcGV4cC5jIGNzZWxpYi5oIHByb2ZpbGUuYzogTGlrZXdpc2UuCgkqIGxvbmdsb25nLmg6IExpa2V3aXNlLgoJKiBsaWJnY2MyLmM6IExpa2V3aXNlLgoKMjAwMC0xMi0wNiBIZXJtYW4gQS5KLiB0ZW4gQnJ1Z2dlIDxIYWouVGVuLkJydWdnZUBuZXQuSENDLm5sPgoKCSogbWFjaG1vZGUuZGVmOiBVc2UgY29ycmVjdCBkZWZpbml0aW9uIGZvciBCSVRTSVpFIG9uIHRhcmdldHMgd2hlcmUKCUJJVFNfUEVSX1VOSVQgIT0gOC4KCjIwMDAtMTItMDYgIEJydWNlIEtvcmIgIDxia29yYkBnbnUub3JnPgoKCSogZml4aW5jL01ha2VmaWxlLio6IFJlZHVjZSBkaWZmZXJlbmNlcyB0byAodWx0aW1hdGVseSkgcmVkdWNlCgl0aGUgbnVtYmVyIG9mIHRoZW0uCgoyMDAwLTEyLTA2ICBKLiBEYXZpZCBBbmdsaW4gIDxkYXZlQGhpYXVseTEuaGlhLm5yYy5jYT4KCgkqIHBhLmM6IEluY2x1ZGUgZXhwci5oIGJlZm9yZSBjLXRyZWUuaC4KCShyZW1vdmVfdXNlbGVzc19hZGR0cl9pbnNucyk6IFVzZSByZXZlcnNlX2NvbmRpdGlvbl9tYXliZV91bm9yZGVyZWQKCWluc3RlYWQgb2YgcmV2ZXJzZV9jb25kaXRpb24uCgkocHJpbnRfb3BlcmFuZCk6IENvcnJlY3QgcHJlZGljYXRlcyBmb3IgR1QsIEdFLCBMVCBhbmQgTEUuICBBZGQKCXByZWRpY2F0ZXMgZm9yIExUR1QsIFVOTEUsIFVOTFQsIFVOR0UsIFVOR1QsIFVORVEsIFVOT1JERVJFRCBhbmQKCU9SREVSRUQuCgkoY21waWJfY29tcGFyaXNvbl9vcGVyYXRvcik6IEFkZCBHRVUgYW5kIExUVSBjb2Rlcy4KCSogcGEuaCAoUFJFRElDQVRFX0NPREVTKTogQWRkIGNvZGVzIGZvciBjbXBpYl9jb21wYXJpc29uX29wZXJhdG9yLgoJKiBwYS5tZCAoYmx0Z3QsIGJ1bmxlLCBidW5sdCwgYnVuZ2UsIGJ1bmd0LCBidW5lcSwgYnVub3JkZXJlZCwKCWJvcmRlcmVkKTogTmV3IGZsb2F0IGNvbmRpdGlvbmFsIGJyYW5jaCBwYXR0ZXJucy4KCldlZCBEZWMgIDYgMjE6MDM6NDEgMjAwMCAgSiJvcm4gUmVubmVja2UgPGFteWxhYXJAcmVkaGF0LmNvbT4KCgkqIGZpbmFsLmMgKGZpbmFsX2FkZHJfdmVjX2FsaWduKTogRml4IGNsaXBwaW5nIHRvIEJJR0dFU1RfQUxJR05NRU5ULgoKMjAwMC0xMi0wNiAgU3lsdmFpbiBQaW9uICA8U3lsdmFpbi5QaW9uQHNvcGhpYS5pbnJpYS5mcj4KCgkqIGNwcGxleC5jIChza2lwX2VzY2FwZWRfbmV3bGluZXMpOiBEb24ndCB3YXJuIGZvciBzcGFjZXMgYmV0d2VlbgoJYmFja3NsYXNoIGFuZCBuZXdsaW5lLCB3aGVuIGluc2lkZSBhIGNvbW1lbnQuCgoyMDAwLTEyLTA2ICBKb3NlcGggUy4gTXllcnMgIDxqc20yOEBjYW0uYWMudWs+CgoJKiBpbnZva2UudGV4aTogVXNlIEB0YWJsZSBAc2FtcCBpbnN0ZWFkIG9mIEBpdGVtaXplIEBtaW51cyBmb3IKCXRhYmxlIG9mIGxhbmd1YWdlIHN0YW5kYXJkcy4gIEZpeCB1c2Ugb2YgQHB4cmVmLiAgRnJvbSBaYWNrCglXZWluYmVyZy4gIEFsc28gZXhjbHVkZSBzcGVjcyBkb2N1bWVudGF0aW9uIGZyb20gZ2VuZXJhdGVkCgltYW5wYWdlLCBhbmQgY3JlYXRlIHNlcGFyYXRlIEVOVklST05NRU5UIHNlY3Rpb24uCgoyMDAwLTEyLTA2ICBNaWNoYWVsIE1hdHogIDxtYXR6bWljaEBjcy50dS1iZXJsaW4uZGU+CgoJKiBnY3NlLmMgKGNvbXB1dGVfcHJlX2RhdGEpOiBLaWxsIHRyYXBwaW5nIGV4cHJlc3Npb25zIGluCglkZXN0aW5hdGlvbiBibG9ja3Mgb2YgYWJub3JtYWwgZWRnZXMuCgoyMDAwLTEyLTA1ICBSaWNoYXJkIFNhbmRpZm9yZCAgPHIuc2FuZGlmb3JkQHJlZGhhdC5jb20+CgoJKiBjb25maWcvbW4xMDMwMC9tbjEwMzAwLmMgKG1uMTAzMDBfcHJpbnRfcmVnX2xpc3QpOiBBZGRlZC4KCShtbjEwMzAwX2dldF9saXZlX2NhbGxlZV9zYXZlZF9yZWdzKTogTGlrZXdpc2UuCgkobW4xMDMwMF9nZW5fbXVsdGlwbGVfc3RvcmUpOiBMaWtld2lzZS4KCShzdG9yZV9tdWx0aXBsZV9vcGVyYXRpb24pOiBMaWtld2lzZS4KCShleHBhbmRfcHJvbG9ndWUpOiBVc2UgbW4xMDMwMF9nZW5fbXVsdGlwbGVfc3RvcmUoKS4KCSogY29uZmlnL21uMTAzMDAvbW4xMDMwMC1wcm90b3MuaCAobW4xMDMwMF9wcmludF9yZWdfbGlzdCk6IEFkZGVkLgoJKG1uMTAzMDBfZ2V0X2xpdmVfY2FsbGVlX3NhdmVkX3JlZ3MpOiBMaWtld2lzZS4KCShtbjEwMzAwX2dlbl9tdWx0aXBsZV9zdG9yZSk6IExpa2V3aXNlLgoJKHN0b3JlX211bHRpcGxlX29wZXJhdGlvbik6IExpa2V3aXNlLgoJKiBjb25maWcvbW4xMDMwMC9tbjEwMzAwLm1kIChzdG9yZV9tb3ZtKTogVXNlIGEgTUFUQ0hfUEFSQUxMRUwKCXRpZWQgdG8gc3RvcmVfbXVsdGlwbGVfb3BlcmF0aW9uKCkuCgpUdWUgRGVjICA1IDIwOjA5OjE0IDIwMDAgIEplZmZyZXkgQSBMYXcgIChsYXdAY3lnbnVzLmNvbSkKCgkqIGJ1aWx0aW5zLmMgKGV4cGFuZF9idWlsdGluX3NldGptcF9zZXR1cCk6IFNldAoJY3VycmVudF9mdW5jdGlvbl9oYXNfbm9ubG9jYWxfbGFiZWwuCgoyMDAwLTEyLTA1ICBOZWlsIEJvb3RoICA8bmVpbGJAZWFydGhsaW5nLm5ldD4KCgkqIGNwcGZpbGVzLmMgKHN0YWNrX2luY2x1ZGVfZmlsZSk6IFB1c2ggemVyby1sZW5ndGggYnVmZmVycwoJaW4gY2FzZSBvZiBmYWlsdXJlLiAgUmV0dXJuIHZvaWQsIGFzIHdlIGRvbid0IGZhaWwgYW55IG1vcmUuCgkocmVhZF9pbmNsdWRlX2ZpbGUpOiBDaGVjayBmb3IgZmlsZXMgd2Ugc2hvdWxkbid0IHJlLXJlYWQuCglEb24ndCByZXR1cm4gYW4gZXJyb3IgY29kZTsgZXJyb3JzIGFyZSBpbXBsaWVkIGJ5IG1hcmtpbmcgdGhlCglmaWxlIE5FVkVSX1JFUkVBRC4KCShfY3BwX2V4ZWN1dGVfaW5jbHVkZSk6IE1vdmUgdGhlIHJlY3Vyc2lvbiBhbmQgaW4tbWFjcm8gY2hlY2tzCgloZXJlLiAgVXBkYXRlIGZvciBzdGFja19pbmNsdWRlX2ZpbGUgbm90IGZhaWxpbmcuCgkqIGNwcGxpYi5jIChjcHBfcHVzaF9idWZmZXIpOiBBbHdheXMgc3VjY2VlZCwgc2luY2UKCV9jcHBfZXhlY3V0ZV9pbmNsdWRlIHBlcmZvcm1zIHRoZSByZWN1cnNpb24gY2hlY2suICBUaWR5IHVwLgoJKiBjcHBsaWIuaCAoY3BwX3B1c2hfYnVmZmVyKTogVXBkYXRlIHByb3RvdHlwZS4KCjIwMDAtMTItMDUgIEFsZXhhbmRyZSBPbGl2YSAgPGFvbGl2YUByZWRoYXQuY29tPgoKCSogc2NoZWQtdmlzLmMgKHZpc3VhbF90YmxfbGluZV9sZW5ndGgpOiBOZXcgdmFyaWFibGUuCgkoZ2V0X3Zpc3VhbF90YmxfbGVuZ3RoKTogU2V0IGl0LgoJKHZpc3VhbGl6ZV9zdGFsbF9jeWNsZXMpOiBEb24ndCBsZXQgc3RhbGxzIG92ZXJydW4KCXZpc3VhbF90YmxfbGluZV9sZW5ndGguCgoyMDAwLTEyLTA1ICBHZW9mZnJleSBLZWF0aW5nICA8Z2VvZmZrQHJlZGhhdC5jb20+CgoJKiBnbG9iYWwuYyAoZ2xvYmFsX2NvbmZsaWN0cyk6IEFsbG93IGZvciBhIFJFR19VTlVTRUQgbm90ZQoJd2l0aCBhIGRpZmZlcmVudCBtb2RlIHRvIHRoZSBSRUcgc2V0IGluIHRoZSBpbnNuLgoKMjAwMC0xMi0wNSAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogTWFrZWZpbGUuaW4gKGZpeGluYy5zaCk6IFBhc3MgJFdBUk5fQ0ZMQUdTIGludG8gZml4aW5jIGRpci4KCgkqIGZpeGluYy9NYWtlZmlsZS5pbiAoRklYSU5DX0RFRlMpOiBBZGQgJChXQVJOX0NGTEFHUykuCgoyMDAwLTEyLTA1ICBCcnVjZSBLb3JiICA8YmtvcmJAZ251Lm9yZz4KCgkqIGZpeGluYy9ta2ZpeGluYy5zaCgqLWdudSopOiBhY3RpdmF0ZSBmaXhpbmMgZm9yIEdOVS9IdXJkIGFuZAoJR05VL0xpbnV4LgoKMjAwMC0xMi0wNSAgUmljaGFyZCBFYXJuc2hhdyAgPHJlYXJuc2hhQGFybS5jb20+CgoJKiBmaXhpbmMvbWtmaXhpbmMuc2g6IFJ1biBmaXhpbmMgb24gbmV0YnNkLgoJKiBmaXhpbmMvaW5jbGhhY2suZGVmIChtYWNoaW5lL2Fuc2kuaCk6IFJ1biB0aGlzIHJ1bGUgb24gYWxsIGZpbGVzLAoJdG8gY29wZSB3aXRoIGFsaWFzZWQgY29waWVzLgoJKiBmaXhpbmMvZml4aW5jbC54OiBSZWdlbmVyYXRlLgoKMjAwMC0xMi0wNSAgQmVybmQgU2NobWlkdCAgPGJlcm5kc0ByZWRoYXQuY28udWs+CgoJKiBzY2hlZC12aXMuYzogR3VhcmQgd2l0aCAjaWZkZWYgSU5TTl9TQ0hFRFVMSU5HLgoJKiBzY2hlZC1yZ24uYzogTGlrZXdpc2UuCgkocmduX3ByaW50X2luc24pOiBGaXggb3V0cHV0LgoKMjAwMC0xMi0wNSAgQnJ1Y2UgS29yYiAgPGJrb3JiQGdudS5vcmc+CgoJKiBmaXhpbmMvTWFrZWZpbGUuKjogbWFrZSB0aGVzZSBtb3JlIGNvbnNpc3RlbnQKCSogZml4aW5jL21rZml4aW5jbC5zaDogZW5hYmxlIEJlT1MgZml4aW5jbHVkZXMKCjIwMDAtMTItMDUgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CgoJKiBzdG10LmMgKHdhcm5faWZfdW51c2VkX3ZhbHVlKTogTW92ZSBzaWRlIGVmZmVjdHMgdGVzdCBlYXJsaWVyLgoKMjAwMC0xMi0wNSAgQWxhbiBNb2RyYSA8YWxhbkBsaW51eGNhcmUuY29tLmF1PgoKCSogYmItcmVvcmRlci5jIChyZW9yZGVyX2Jhc2ljX2Jsb2Nrcyk6IERvIGNoZWNrIGZvciBFSCBlZGdlcyBldmVuCgl3aGVuIHVzaW5nIHNqbGouCgoyMDAwLTEyLTA1ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEByZWRoYXQuY29tPgoKCSogZmxvdy5jIChjYWxjdWxhdGVfZ2xvYmFsX3JlZ3NfbGl2ZSk6IE9ubHkgZm9yY2Ugc3RhY2sgcG9pbnRlcgoJbGl2ZSBiZWZvcmUgcmVsb2FkLiAgRm9yY2UgcGljIHJlZ2lzdGVyIGxpdmUgYmVmb3JlIHJlbG9hZC4KCShpbnNuX2RlYWRfcCk6IERvbid0IHByb3RlY3QgcGljIHJlZmVyZW5jZXMgZnJvbSBkZWxldGlvbi4KCjIwMDAtMTItMDUgIEpvc2VwaCBTLiBNeWVycyAgPGpzbTI4QGNhbS5hYy51az4KCgkqIGludm9rZS50ZXhpOiBBZGQgc3VwcG9ydCBmb3IgdXNpbmcgdGV4aTJwb2QucGwuICBEb24ndCB1c2UKCUBtdWx0aXRhYmxlLgoKMjAwMC0xMi0wNCAgTmljayBDbGlmdG9uICA8bmlja2NAcmVkaGF0LmNvbT4KCgkqIGNvbmZpZy9hcm0vYXJtLmMgKGFybV9vdmVycmlkZV9vcHRpb25zKTogVGVzdCAnaW5zbl9mbGFncycgbm90CgkndHVuZV9mbGFncycgZm9yIFhTY2FsZSBuYXR1cmUuCglSZW1vdmUgc3B1cmlvdXMgdGVzdCBvZiBIQVJEX0ZMT0FUIGFuZCBYU2NhbGUgZmxhZ3MuCgoJKiBjb25maWcvYXJtL2FybS5tZCAodW11bHNpZGkzYWRkZGkpOiBSZXN0b3JlICI9JnIiIHJlZ2lzdGVyCgljb250cmFpbnQsIGFjY2lkZW50YWxseSBjaGFuZ2VkIGR1cmluZyBYU2NhbGUgY29udHJpYnV0aW9uLgoKCSogY29uZmlnL2FybS9saWIxZnVuY3MuYXNtIChpbnRlcndvcmtfY2FsbF92aWFfLCBjYWxsX3ZpYV8pOiBEbwoJbm90IGNyZWF0ZSB0aGVzZSBmdW5jdGlvbnMgaWYgdGhlIHRhcmdldCBhcmNoaXRlY3R1cmUgZG9lcyBub3QKCXN1cHBvcnQgVGh1bWIgaW5zdHJ1Y3Rpb25zLgoKMjAwMC0xMi0wNCAgSm9zZXBoIFMuIE15ZXJzICA8anNtMjhAY2FtLmFjLnVrPgoKCSogT05FV1M6IE5ldyBmaWxlIHdpdGggdGhlIGN1cnJlbnQgY29udGVudHMgb2YgTkVXUyB1cCB0byBFR0NTCgkxLjEuCgkqIE5FV1M6IEdlbmVyYXRlIGF1dG9tYXRpY2FsbHkgZnJvbSBvbmxpbmUgcmVsZWFzZSBub3RlcyBmcm9tIEVHQ1MKCTEuMCB0byBHQ0MgMi45NS4yLCB1c2luZyAuLi9jb250cmliL2dlbm5ld3MuCgoyMDAwLTEyLTA0ICBOZWlsIEJvb3RoICA8bmVpbGJAZWFydGhsaW5nLm5ldD4KCgkqIHRyYWRjaWYueTogTW92ZSBsZXhwdHIgdG8gdG9wIG9mIGZpbGUuICBBZGQgcnVsZSB0byBoYW5kbGUKCWFzc2VydGlvbnMgaW4gY29uZGl0aW9uYWwgZXhwcmVzc2lvbnMuCgkqIHRyYWRjcHAuYyAocGFyc2VfYW5zd2VyKTogQXNzZXJ0aW9ucyBkbyBub3QgbmVlZCB0byBnbyB0bwoJZW5kIG9mIGxpbmUgaW4gY29uZGl0aW9uYWwgZGlyZWN0aXZlcy4KCShwYXJzZV9hc3NlcnRpb24pOiBHZXQgZmlyc3QgY2hhcmFjdGVyIG9mIGlkZW50aWZpZXJzIGNvcnJlY3QuCgkodGVzdF9hc3NlcnRpb24pOiBOZXcgZnVuY3Rpb24uCgkqIHRyYWRjcHAuaCAodGVzdF9hc3NlcnRpb24pOiBOZXcgcHJvdG90eXBlLgoKMjAwMC0xMi0wMSAgUm9kbmV5IEJyb3duICA8Um9kbmV5QnJvd25AbXluZC5jb20+CgoJKiBjb25maWcuZ2NjOiBGaXggdHlwbyBmb3IgVW5peFdhcmUgNy4KCjIwMDAtMTItMDMgIFBoaWwgRWR3YXJkcyAgPHBtZUBzb3VyY2VzLnJlZGhhdC5jb20+CgoJKiBpbnZva2UudGV4aTogIFJlcGxhY2UgYHBlZHdhcm5zJyB3aXRoIGNsZWFyZXIgdGV4dC4KCjIwMDAtMTItMDQgIEJydWNlIEtvcmIgIDxia29yYkBnbnUub3JnPgoKCSogZml4aW5jL01ha2VmaWxlLiooY2xlYW4pOiAgZG9uJ3QgY2xlYW4gYXV0b2dlbmVyYXRlZCBmaWxlcy4KCShtYWluYWluZXItY2xlYW4pOiBjbGVhbiBhdXRvZ2VuZXJhdGVkIGZpbGVzCgoyMDAwLTEyLTA0ICBESiBEZWxvcmllICA8ZGpAcmVkaGF0LmNvbT4KCgkqIG1kLnRleGk6IEFkZCBvdmVydmlldywgY2xhcmlmeSBtYXRjaF9kdXAgYW5kIGRlZmluZV9leHBhbmQuCgoyMDAwLTEyLTA0ICBESiBEZWxvcmllICA8ZGpAcmVkaGF0LmNvbT4KCgkqIHByaW50LXRyZWUuYyAocHJpbnRfbm9kZSk6IFRhcmdldC1zcGVjaWZpYyBidWlsdGlucyBwcmludAoJbnVtYmVycywgbm90IG5hbWVzLgoKMjAwMC0xMi0wNCAgSmFzb24gTWVycmlsbCAgPGphc29uQHJlZGhhdC5jb20+CgoJKiBzdG9yLWxheW91dC5jIChpbnRfbW9kZV9mb3JfbW9kZSk6IEhhbmRsZSBNT0RFX1ZFQ1RPUl9JTlQsCglNT0RFX1ZFQ1RPUl9GTE9BVC4KCgkqIGRpYWdub3N0aWMuYyAocmVwb3J0X3Byb2JsZW1hdGljX21vZHVsZSk6IHMvZnVuY3Rpb24vbW9kdWxlLy4KCgkqIGMtbGV4Lmg6IFJlbW92ZSBkZWNsIGZvciBjaGVja19uZXdsaW5lLgoKMjAwMC0xMi0wNCAgR2VyYWxkIFBmZWlmZXIgIDxwZmVpZmVyQGRiYWkudHV3aWVuLmFjLmF0PgoKCSogUkVBRE1FLkFQT0xMTzogUmVtb3ZlIG9ic29sZXRlIGZpbGUuCgoyMDAwLTEyLTA0ICBOZWlsIEJvb3RoICA8bmVpbGJAZWFydGhsaW5nLm5ldD4KCgkqIGNwcGludGVybmFscy50ZXhpOiBOZXcgZmlsZS4KCjIwMDAtMTItMDQgIE5laWwgQm9vdGggIDxuZWlsYkBlYXJ0aGxpbmcubmV0PgoKCSogY3BwZmlsZXMuYyAoY3BwX21ha2Vfc3lzdGVtX2hlYWRlcik6IFRha2UgMiBib29sZWFucywKCWFuZCBvcGVyYXRlIG9uIGN1cnJlbnQgYnVmZmVyLgoJKGNwcF9yZWFkX2ZpbGUpOiBSZW5hbWUgX2NwcF9yZWFkX2ZpbGUuCgkqIGNwcGxpYi5jIChkb19saW5lLCBkb19wcmFnbWFfc3lzdGVtX2hlYWRlcik6IFVwZGF0ZSBjYWxscyB0bwoJY3BwX21ha2Vfc3lzdGVtX2hlYWRlci4KCSogZml4LWhlYWRlci5jOiBTaW1pbGFybHkuCgkqIGNwcGhhc2guaCAoX2NwcF9yZWFkX2ZpbGUpOiBNb3ZlIGZyb20uLi4KCSogY3BwbGliLmg6IC4uLiBoZXJlLgoJKiBjcHBpbml0LmMgKGRvX2luY2x1ZGVzLCBjcHBfc3RhcnRfcmVhZCk6IFVwZGF0ZSBhcHByb3ByaWF0ZWx5LgoKMjAwMC0xMi0wMyAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogYnVpbHRpbnMuYyAoZXhwYW5kX2J1aWx0aW5fc3Ryc3BuLCBleHBhbmRfYnVpbHRpbl9zdHJjc3BuKToKCUhhbmRsZSBhbm90aGVyIHRyYW5zZm9ybWF0aW9uLgoKMjAwMC0xMi0wMyAgTmljayBDbGlmdG9uICA8bmlja2NAcmVkaGF0LmNvbT4KCgkqIGNvbmZpZy5nY2M6IEFkZCBzdXBwb3J0IGZvciBTdHJvbmdBUk0gdGFyZ2V0cy4KCSogY29uZmlnL2FybS90LXN0cm9uZ2FybS1lbGY6IE5ldyBmaWxlLgoJKiBjb25maWcvYXJtL3Qtc3Ryb25nYXJtLWNvZmY6IE5ldyBmaWxlLgoJKiBjb25maWcvYXJtL3Qtc3Ryb25nYXJtLXBlOiBOZXcgZmlsZS4KCSogY29uZmlnL2FybS9zdHJvbmdhcm0tcGUuaDogTmV3IGZpbGUuCgoyMDAwLTEyLTAzICBOaWNrIENsaWZ0b24gIDxuaWNrY0ByZWRoYXQuY29tPgoKCSogTkVXUzogTWVudGlvbiBYU2NhbGUgaGFzIGJlZW4gYWRkZWQuCgkqIGNvbmZpZy5nY2M6IEFkZCBzdXBwb3J0IGZvciBYU2NhbGUgdGFyZ2V0cy4KCSogY29uZmlnL2FybS9hcm0uaDogQWRkIHN1cHBvcnQgZm9yIFhTY2FsZSBwcm9jZXNzb3IuCgkqIGNvbmZpZy9hcm0vYXJtLmM6IEFkZCBzdXBwb3J0IGZvciBYU2NhbGUgcHJvY2Vzc29yLgoJKiBjb25maWcvYXJtL2FybS5tZDogQWRkIHN1cHBvcnQgZm9yIFhTY2FsZSBwcm9jZXNzb3IuCgkqIGNvbmZpZy9hcm0vdC14c2NhbGUtZWxmOiBOZXcgZmlsZS4KCSogY29uZmlnL2FybS90LXhzY2FsZS1jb2ZmOiBOZXcgZmlsZS4KCSogY29uZmlnL2FybS94c2NhbGUtZWxmLmg6IE5ldyBmaWxlLgoJKiBjb25maWcvYXJtL3hzY2FsZS1jb2ZmLmg6IE5ldyBmaWxlLgoKMjAwMC0xMi0wMyAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCgkqIGJiLXJlb3JkZXIuYyAocmVvcmRlcl9iYXNpY19ibG9ja3MpOiBEb24ndCBjaGVjayBmb3IgRUggZWRnZXMKCXVubGVzcyBleGNlcHRpb24gaGFuZGxpbmcgaXMgZW5hYmxlZCwgYW5kIGlmIG5vdCB1c2luZyBzamxqLgoKCSogYnVpbHRpbnMuYyAoZXhwYW5kX2J1aWx0aW5fc2V0am1wX3NldHVwKTogTmV3LgoJKGV4cGFuZF9idWlsdGluX3NldGptcF9yZWNlaXZlcik6IE5ldy4KCShleHBhbmRfYnVpbHRpbl9zZXRqbXApOiBTcGxpdCBvdXQgX3NldHVwIGFuZCBfcmVjZWl2ZXIgZnVuY3Rpb25zLgoJTW92ZSBhcmd1bWVudCBwYXJzaW5nIGluIGZyb20gLi4uCgkoZXhwYW5kX2J1aWx0aW4pOiAuLi4gaGVyZS4KCSogZXhjZXB0LmMgKHJlY2VpdmVfZXhjZXB0aW9uX2xhYmVsKTogQnJhbmNoIGFyb3VuZCByZWNlaXZlcgoJdW5sZXNzIG5ldy1zdHlsZSBleGNlcHRpb25zLiAgQ2FsbCBleHBhbmRfYnVpbHRpbl9zZXRqbXBfcmVjZWl2ZXIuCgkoc3RhcnRfZHluYW1pY19oYW5kbGVyKTogQ2FsbCBleHBhbmRfYnVpbHRpbl9zZXRqbXBfc2V0dXAuCgkqIGV4cHIuaDogVXBkYXRlIGJ1aWx0aW4gc2V0am1wIGRlY2xzLgoKMjAwMC0xMi0wMyAgQnJ1Y2UgS29yYiAgPGJrb3JiQGdjYy5vcmc+CgoJKiBmaXhpbmMvbWtmaXhpbmMuc2goYnVpbGQgbWFjaGluZSk6IFNvbWV0aW1lcywgdGhlcmUgaXMgbm8gY2Fub25pY2FsCglidWlsZCBtYWNoaW5lIG5hbWUuICBEZWZhdWx0IHRvIHRoZSB0YXJnZXQuCgoyMDAwLTEyLTAzICBMYXVyeW5hcyBCaXZlaW5pcyAgPGxhdXJhc0Bzb2Z0aG9tZS5uZXQ+CgoJKiBNYWtlZmlsZS5pbjogdXNlICQoYnVpbGRfY2Fub25pY2FsKSwgbm90ICQoY2Fub25pY2FsX2J1aWxkKS4KCjIwMDAtMTItMDMgIEJlcm5kIFNjaG1pZHQgIDxiZXJuZHNAcmVkaGF0LmNvLnVrPgoKCSogTWFrZWZpbGUuaW4gKE9CSlMpOiBBZGQgc2NoZWQtcmduLm8uCgkoc2NoZWQtcmduLm8pOiBOZXcgcnVsZS4gICogaGFpZmEtc2NoZWQuYyAoc2NoZWRfdmVyYm9zZSk6IE5vCglsb25nZXIgc3RhdGljLgoJKElOU05fUFJJT1JJVFksIElOU05fQ09TVCwgSU5TTl9VTklULCBJTlNOX1JFR19XRUlHSFQsCglJTlNOX0JMT0NLQUdFLCBVTklUX0JJVFMsIEJMT0NLQUdFX01BU0ssIEVOQ09ERV9CTE9DS0FHRSwKCVVOSVRfQkxPQ0tFRCwgQkxPQ0tBR0VfUkFOR0UsIE1JTl9CTE9DS0FHRV9DT1NULAoJTUFYX0JMT0NLQUdFX0NPU1QpOiBNb3ZlIHRvIHNjaGVkLWludC5oLgoJKE1BWF9SR05fQkxPQ0tTLCBNQVhfUkdOX0lOU05TLCBJTlNOX1JFRl9DT1VOVCwgRkVEX0JZX1NQRUNfTE9BRCwKCUlTX0xPQURfSU5TTiwgc3RydWN0IGhhaWZhX2VkZ2UsIGVkZ2VfdGFibGUsIE5FWFRfSU4sIE5FWFRfT1VULAoJRlJPTV9CTE9DSywgVE9fQkxPQ0ssIG5yX2VkZ2VzLCBpbl9lZGdlcywgb3V0X2VkZ2VzLCBJTl9FREdFUywKCU9VVF9FREdFUywgZWRnZWxzdCwgc3RydWN0IHJlZ2lvbiwgbnJfcmVnaW9ucywgcmduX3RhYmxlLAoJcmduX2JiX3RhYmxlLCBibG9ja190b19iYiwgY29udGFpbmluZ19yZ24sIFJHTl9OUl9CTE9DS1MsCglSR05fQkxPQ0tTLCBCTE9DS19UT19CQiwgQkJfVE9fQkxPQ0ssIENPTlRBSU5JTkdfUkdOLAoJZGVidWdfcmVnaW9ucywgZmluZF9zaW5nbGVfYmxvY2tfcmVnaW9uLCBmaW5kX3JnbnMsIHRvb19sYXJnZSwKCWluaXRfcmVnaW9ucywgY3VycmVudF9ucl9ibG9ja3MsIGN1cnJlbnRfYmxvY2tzLCBiaXRzZXQsIGJpdGxzdCwKCWJpdGxzdF90YWJsZV9sYXN0LCBiaXRsc3RfdGFibGVfc2l6ZSwgYml0bHN0X3RhYmxlLCBiaXRzZXRfbWVtYmVyLAoJZXh0cmFjdF9iaXRsc3QsIGJibHN0LCBzdHJ1Y3QgY2FuZGlkYXRlLCBjYW5kaWRhdGVfdGFibGUsCgliYmxzdF90YWJsZSwgYmJsc3Rfc2l6ZSwgYmJsc3RfbGFzdCwgSVNfVkFMSUQsIElTX1NQRUNVTEFUSVZFLAoJU1JDX1BST0IsIHRhcmdldF9iYiwgc3BsaXRfZWRnZXMsIGNvbXB1dGVfdHJnX2luZm8sCglkZWJ1Z19jYW5kaWRhdGUsIGRlYnVnX2NhbmRpZGF0ZXMsIGJic2V0LCBiYnNldF9zaXplLCBkb20sCglJU19SR05fRU5UUlksIElTX0RPTUlOQVRFRCwgcHJvYiwgR0VUX1NSQ19QUk9CLCBlZGdlc2V0LAoJcmduX25yX2VkZ2VzLCByZ25fZWRnZXMsIGVkZ2VzZXRfc2l6ZSwgZWRnZXNldF9iaXRzaXplLAoJRURHRV9UT19CSVQsIGVkZ2VfdG9fYml0LCBwb3Rfc3BsaXQsIGFuY2VzdG9yX2VkZ2VzLAoJY29tcHV0ZV9kb21fcHJvYl9wcywgQUJTX1ZBTFVFLCBJTlNOX1BST0JBQklMSVRZLAoJSVNfU1BFQ1VMQVRJVkVfSU5TTiwgSU5TTl9CQiwgTUlOX0RJRkZfUFJJT1JJVFksIE1JTl9QUk9CQUJJTElUWSwKCU1JTl9QUk9CX0RJRkYsIGNoZWNrX2xpdmVfMSwgdXBkYXRlX2xpdmVfMSwgY2hlY2tfbGl2ZSwKCXVwZGF0ZV9saXZlLCBzZXRfc3BlY19mZWQsIGlzX3BmcmVlLCBmaW5kX2NvbmRpdGlvbmFsX3Byb3RlY3Rpb24sCglpc19jb25kaXRpb25hbGx5X3Byb3RlY3RlZCwgbWF5X3RyYXBfZXhwLCBoYWlmYV9jbGFzc2lmeV9pbnNuLAoJaXNfcHJpc2t5LCBpc19leGNlcHRpb25fZnJlZSwgYWRkX2JyYW5jaF9kZXBlbmRlbmNlcywKCXByb3BhZ2F0ZV9kZXBzLCBjb21wdXRlX2Jsb2NrX2JhY2t3YXJkX2RlcGVuZGVuY2VzLAoJZGVidWdfZGVwZW5kZW5jaWVzLCBpc19jZmdfbm9ucmVndWxhciwgYnVpbGRfY29udHJvbF9mbG93LAoJbmV3X2VkZ2UsIGJiX2RlcHMsIEJJVFNFVF9VTklPTiwgQklUU0VUX0lOVEVSLCBCSVRTRVRfRElGRkVSLAoJQklUU0VUX0lOVkVSVCwgQklUU0VUX0FERCwgQklUU0VUX1JFTU9WRSwgZGVidWdfcmVnaW9ucywKCVVQREFURV9MT09QX1JFTEFUSU9OUywgSU5TTl9UUkFQX0NMQVNTLCBXT1JTVF9DTEFTUywgSVNfUkVBQ0hBQkxFLAoJQ09OU1RfQkFTRURfQUREUkVTU19QLCBmcmVlX3BlbmRpbmdfbGlzdHMsIHNjaGVkX3RhcmdldF9uX2luc25zLAoJdGFyZ2V0X25faW5zbnMsIHNjaGVkX25faW5zbnMsIGluaXRfcmVhZHlfbGlzdCwgZGVhdGhzX2luX3JlZ2lvbiwKCWNhbl9zY2hlZHVsZV9yZWFkeV9wLCBuZXdfcmVhZHksIHNjaGVkdWxlX21vcmVfcCwgcmduX3ByaW50X2luc24sCglyZ25fcmFuaywgcmVnaW9uX3NjaGVkX2luZm8pOiBNb3ZlIHRvIHNjaGVkLXJnbi5jLgoJKGRlYnVnX3JlZ192ZWN0b3IpOiBEZWxldGUgdXNlbGVzcyBmdW5jdGlvbi4KCShnZXRfYmJfaGVhZF90YWlsKTogTGlrZXdpc2UuCgkoaW5zbl9pc3N1ZV9kZWxheSwgaW5zbl9jb3N0LCByZWFkeV9hZGQsIGdldF9ibG9ja19oZWFkX3RhaWwsCglub19yZWFsX2luc25zX3AsIHJtX2xpbmVfbm90ZXMsIHNhdmVfbGluZV9ub3RlcywKCXJlc3RvcmVfbGluZV9ub3Rlcywgcm1fcmVkdW5kYW50X2xpbmVfbm90ZXMsIHNjaGVkX2luaXQpOiBObwoJbG9uZ2VyIHN0YXRpYy4KCShybV9saW5lX25vdGVzLCBzYXZlX2xpbmVfbm90ZXMsIHJlc3RvcmVfbGluZV9ub3RlcywKCXNjaGVkdWxlX2Jsb2NrLCBzZXRfcHJpb3JpdGllcyk6IENoYW5nZSBhcmd1bWVudCB0byBiZSBhIHJlYWwKCWJhc2ljIGJsb2NrLCBub3Qgb25lIG9mIGhhaWZhJ3MgImJiInMuICBBbGwgY2FsbGVycyBjaGFuZ2VkCgkocm1fb3RoZXJfbm90ZXMpOiBJbml0aWFsaXplIG5vdGVfbGlzdCBoZXJlLCBub3QgaW4KCXNjaGVkdWxlX3JlZ2lvbi4KCShzY2hlZF9maW5pc2gpOiBOZXcgZnVuY3Rpb24sIGNhbGxlZCBmcm9tIHNjaGVkdWxlX2luc24uICAqICoKCXNjaGVkLWludC5oIChJTlNOX1BSSU9SSVRZLCBJTlNOX0NPU1QsIElOU05fVU5JVCwgSU5TTl9SRUdfV0VJR0hULAoJSU5TTl9CTE9DS0FHRSwgVU5JVF9CSVRTLCBCTE9DS0FHRV9NQVNLLCBFTkNPREVfQkxPQ0tBR0UsCglVTklUX0JMT0NLRUQsIEJMT0NLQUdFX1JBTkdFLCBNSU5fQkxPQ0tBR0VfQ09TVCwKCU1BWF9CTE9DS0FHRV9DT1NUKTogTW92ZWQgaGVyZSBmcm9tIGhhaWZhLXNjaGVkLmMuCgkoZ2V0X2Jsb2NrX2hlYWRfdGFpbCwgbm9fcmVhbF9pbnNuc19wLCBybV9saW5lX25vdGVzLAoJc2F2ZV9saW5lX25vdGVzLCByZXN0b3JlX2xpbmVfbm90ZXMsIHJtX3JlZHVuZGFudF9saW5lX25vdGVzLAoJcm1fb3RoZXJfbm90ZXMsIGluc25faXNzdWVfZGVsYXksIHNldF9wcmlvcml0aWVzLCBzY2hlZHVsZV9ibG9jaywKCXNjaGVkX2luaXQsIHNjaGVkX2ZpbmlzaCwgcmVhZHlfYWRkLCBpbnNuX2Nvc3QpOiBEZWNsYXJlLgoKMjAwMC0xMi0wMyAgTGF1cnluYXMgQml2ZWluaXMgIDxsYXVyYXNAc29mdGhvbWUubmV0PgoJICAgIEJydWNlIEtvcmIgIDxia29yYkBnbnUub3JnPgoKCSogTWFrZWZpbGUuaW46IHBhc3MgJChidWlsZF9jYW5vbmljYWwpIHRvIG1rZml4aW5jLnNoLgoJKiBmaXhpbmMvbWtmaXhpbmMuc2g6IGFjY2VwdCBidWlsZCBzeXN0ZW0gbmFtZSBhcyBhbiBhcmd1bWVudC4KCVVzZSBpdCBmb3IgY2hvb3NpbmcgdGhlIGZpeCBidWlsZCBtZXRob2QuICBVc2UgdGhlIHRhcmdldCBmb3IKCXNlbGVjdGluZyBzcGVjaWFsIGZpeCBydWxlcy4KCjIwMDAtMTItMDMgIEJlcm5kIFNjaG1pZHQgIDxiZXJuZHNAcmVkaGF0LmNvLnVrPgoKCSogTWFrZWZpbGUuaW4gKE9CSlMpOiBBZGQgc2NoZWQtZGVwcy5vLgoJKHNjaGVkLWRlcHMubyk6IE5ldyBydWxlLgoJKiBoYWlmYS1zY2hlZC5jIChzdHJ1Y3QgZGVwcywgc3RydWN0IGhhaWZhX2luc25fZGF0YSk6IE1vdmVkIHRvCglzY2hlZC1pbnQuaC4KCShJTlNOX0RFUEVORCwgSU5TTl9MVUlELCBDQU5UX01PVkUsIElOU05fREVQX0NPVU5UKTogTWFjcm9zIG1vdmVkIHRvCglzY2hlZC1pbnQuaC4KCShTSVpFX0ZPUl9NT0RFKTogRGVsZXRlIHVudXNlZCBtYWNyby4KCShyZWdfa25vd25fZXF1aXZfcCwgcmVnX2tub3duX3ZhbHVlLCByZWdfcGVuZGluZ19jbG9iYmVycywKCXJlZ19wZW5kaW5nX3NldHMsIHJlZ19wZW5kaW5nX3NldHNfYWxsLCB0cnVlX2RlcGVuZGVuY3lfY2FjaGUsCglhbnRpX2RlcGVuZGVuY3lfY2FjaGUsIG91dHB1dF9kZXBlbmRlbmN5X2NhY2hlLAoJZm9yd2FyZF9kZXBlbmRlbmN5X2NhY2hlKTogVmFyaWFibGVzIG1vdmVkIHRvIHNjaGVkLWRlcHMuYy4KCShhZGRfZGVwZW5kZW5jZSwgcmVtb3ZlX2RlcGVuZGVuY2UsIGZpbmRfaW5zbl9saXN0LAoJZmluZF9pbnNuX21lbV9saXN0LCBhZGRfaW5zbl9tZW1fZGVwZW5kZW5jZSwgZmx1c2hfcGVuZGluZ19saXN0cywKCXNjaGVkX2FuYWx5emVfaW5zbiwgc2NoZWRfYW5hbHl6ZV8xLCBzY2hlZF9hbmFseXplXzIsCglzY2hlZF9hbmFseXplLCBncm91cF9sZWFkZXIsIGNvbXB1dGVfZm9yd2FyZF9kZXBlbmRlbmNlcywKCWluaXRfZGVwcywgZnJlZV9kZXBzLCBpbml0X2RlcGVuZGVuY3lfY2FjaGVzLCBmcmVlX2RlcGVuZGVuY3lfY2FjaGVzKToKCUZ1bmN0aW9ucyBtb3ZlZCB0byBzY2hlZC1kZXBzLmMuCgkoc2NoZWR1bGVfcmVnaW9uKTogQ2FsbCBpbml0X2RlcHNfZ2xvYmFsIGFuZCBmaW5pc2hfZGVwc19nbG9iYWwKCWluc3RlYWQgb2YgZGlyZWN0bHkgbWFuaXB1bGF0aW5nIGRlcGVuZGVuY3kgZGF0YSBzdHJ1Y3R1cmVzLgoJKiBzY2hlZC1kZXBzLmM6IE5ldyBmaWxlLgoJKGluaXRfZGVwc19nbG9iYWwsIGZpbmlzaF9kZXBzX2dsb2JhbCk6IE5ldyBmdW5jdGlvbnMuCgkqIHNjaGVkLWludC5oIChzdHJ1Y3QgaGFpZmFfaW5zbl9kYXRhLCBzdHJ1Y3QgZGVwcyk6IE1vdmVkIGhlcmUgZnJvbQoJaGFpZmEtc2NoZWQuYy4KCShoX2lfZCk6IERlY2xhcmUuCgkoSU5TTl9ERVBFTkQsIElOU05fTFVJRCwgQ0FOVF9NT1ZFLCBJTlNOX0RFUF9DT1VOVCk6IE1hY3JvcyBtb3ZlZCBoZXJlCglmcm9tIGhhaWZhLXNjaGVkLmMuCgoJKiBNYWtlZmlsZS5pbiAoT0JKUyk6IEFkZCBzY2hlZC12aXMuby4KCShzY2hlZC12aXMubyk6IE5ldyBydWxlLgoJKiBoYWlmYS1zY2hlZC5jIChnZXRfdW5pdF9sYXN0X2luc24pOiBOZXcgZnVuY3Rpb24uCgkoc2NoZWRfZHVtcCwgaW5zbl91bml0LCBhY3R1YWxfaGF6YXJkX3RoaXNfaW5zdGFuY2UpOiBObyBsb25nZXIKCXN0YXRpYy4KCShzY2hlZHVsZV9ibG9jayk6IENhbGwgdmlzdWFsaXplX2FsbG9jIGFuZCB2aXN1YWxpemVfZnJlZS4gIERlbGV0ZQoJc3B1cmlvdXMgcmV0dXJuIHN0YXRlbWVudC4KCShpbml0X3RhcmdldF91bml0cywgaW5zbl9wcmludF91bml0cywgZ2V0X3Zpc3VhbF90YmxfbGVuZ3RoLAoJaW5pdF9ibG9ja192aXN1YWxpemF0aW9uLCBwcmludF9ibG9ja192aXN1YWxpemF0aW9uLCBzYWZlX2NvbmNhdCwKCXZpc3VhbGl6ZV9zY2hlZHVsZWRfaW5ucywgdmlzdWFsaXplX25vX3VuaXQsIHZpc3VhbGl6ZV9zdGFsbF9jeWNsZXMsCglwcmludF9leHAsIHByaW50X3ZhbHVlLCBwcmludF9wYXR0ZXJuLCBwcmludF9pbnNuLCB0YXJnZXRfdW5pdHMsCglNQVhfVklTVUFMX0xJTkVTLCBJTlNOX0xFTiwgbl92aXN1YWxfbGluZXMsIHZpc3VhbF90YmwsCgluX3Zpc19ub191bml0LCB2aXNfbm9fdW5pdCk6IE1vdmUgc2NoZWR1bGluZyB2aXN1YWxpemF0aW9uCglmdW5jdGlvbnMvdmFyaWFibGVzLi4uCgkqIHNjaGVkLXZpcy5jOiAuLi5oZXJlLiAgTmV3IGZpbGUuCgkodmlzdWFsaXplX2FsbG9jLCB2aXN1YWxpemVfZnJlZSk6IE5ldyBmdW5jdGlvbnMuCgkodmlzdWFsaXplX3NjaGVkdWxlZF9pbnNucywgdmlzdWFsaXplX3N0YWxsX2N5Y2xlcywKCXByaW50X2Jsb2NrX3Zpc3VhbGl6YXRpb24pOiBMb3NlIGJhc2ljIGJsb2NrIGFyZ3VtZW50LiAgQWxsIGNhbGxlcnMKCWNoYW5nZWQuCgkodmlzdWFsaXplX3NjaGVkdWxlZF9pbnNucyk6IFVzZSBuZXcgZnVuY3Rpb24gZ2V0X3VuaXRfbGFzdF9pbnNuLgoJKiBzY2hlZC1pbnQuaCAoY3VycmVudF9zY2hlZF9pbmZvLCBzY2hlZF9kdW1wKTogRGVjbGFyZS4KCShpbml0X3RhcmdldF91bml0cywgaW5zbl9wcmludF91bml0cywgaW5pdF9ibG9ja192aXN1YWxpemF0aW9uLAoJcHJpbnRfYmxvY2tfdmlzdWFsaXphdGlvbiwgdmlzdWFsaXplX3NjaGVkdWxlZF9pbm5zLAoJdmlzdWFsaXplX25vX3VuaXQsIHZpc3VhbGl6ZV9zdGFsbF9jeWNsZXMsIHZpc3VhbGl6ZV9hbGxvYywKCXZpc3VhbGl6ZV9mcmVlKTogRGVjbGFyZSBmdW5jdGlvbnMuCgoJKiBzY2hlZC1pbnQuaDogTmV3IGZpbGUuCgkqIE1ha2VmaWxlLmluIChoYWlmYS1zY2hlZC5vKTogRGVwZW5kIG9uIGl0LgoJKiBoYWlmYS1zY2hlZC5jOiBJbmNsdWRlIGl0LgoJKG5vX3JlYWxfaW5zbnNfcCk6IE5ldyBmdW5jdGlvbi4KCShjdXJyZW50X3NjaGVkX2luZm8pOiBOZXcgc3RhdGljIHZhcmlhYmxlLgoJKF9faW5saW5lLCBIQUlGQV9JTkxJTkUpOiBNb3ZlZCB0byBzY2hlZC1pbnQuaC4KCShnZXRfYmxvY2tfaGVhZF90YWlsKTogTWlub3IgY2xlYW51cC4KCShpbml0X3JlYWR5X2xpc3QsIGNhbl9zY2hlZHVsZV9yZWFkeV9wLCBuZXdfcmVhZHksIHNjaGVkdWxlX21vcmVfcCwKCXJnbl9wcmludF9pbnNuLCByZ25fcmFuayk6IE5ldyBmdW5jdGlvbnMsIGJyb2tlbiBvdXQgb2YKCXJhbmtfZm9yX3NjaGVkdWxlLCBzY2hlZHVsZV9pbnNuIGFuZCBzY2hlZHVsZV9ibG9jaywgd2hlcmUgdGhleQoJYXJlIG5vdyBjYWxsZWQgdGhyb3VnaCBmdW5jdGlvbiBwb2ludGVycyBpbiBjdXJyZW50X3NjaGVkX2luZm8uCgkocXVldWVfaW5zbiwgc2NoZWR1bGVfaW5zbiwgcXVldWVfdG9fcmVhZHksIGRlYnVnX3JlYWR5X2xpc3QsCglwcmludF9pbnNuKTogVG8gZGlzcGxheSB1aWQgYW5kIGJsb2NrIG51bWJlciwgY2FsbCB0aGUgcHJpbnRfaW5zbgoJZnVuY3Rpb24gcG9pbnRlciBpbiBjdXJyZW50X3NjaGVkdWxlX2luZm8uCgkocmVnaW9uX3NjaGVkX2luZm8pOiBOZXcgc3RhdGljIHZhcmlhYmxlLgoJKHNjaGVkX3RhcmdldF9uX2luc25zLCBzY2hlZF9uX2luc25zLCB0YXJnZXRfbl9pbnNucyk6IE5ldyBnbG9iYWwKCXZhcmlhYmxlcywgbW92ZWQgb3V0IG9mIHNjaGVkdWxlX2Jsb2NrLgoJKHNjaGVkdWxlX2Jsb2NrKTogUmV0dXJuIHZvaWQuICBBbGwgY2FsbGVycyBjaGFuZ2VkLgoJTW92ZSBzb21lIG9mIHRoZSBzZXR1cCBjb2RlIGludG8gc2NoZWR1bGVfcmVnaW9uLiAgR2V0IGhlYWQvdGFpbAoJZnJvbSBjdXJyZW50X3NjaGVkX2luZm8sIGFuZCB1cGRhdGUgaXQgd2hlbiBkb25lLgoJKHNjaGVkdWxlX3JlZ2lvbik6IFNsaWdodGx5IHJlYXJyYW5nZWQsIHNvbWUgY29kZSBtb3ZlZCBoZXJlIGZyb20KCXNjaGVkdWxlX2Jsb2NrLiAgQ2FsbCBub19yZWFsX2luc25zX3AgdG8gYXZvaWQgZG9pbmcgd29yayBmb3IgYQoJYmxvY2sgdGhhdCBjb25zaXN0cyBvbmx5IG9mIG5vdGVzIGFuZCBsYWJlbHMuCgkoc2NoZWR1bGVfaW5zbnMpOiBJbml0aWFsaXplIGN1cnJlbnRfc2NoZWRfaW5mby4KCjIwMDAtMTItMDMgIE5laWwgQm9vdGggIDxuZWlsYkBlYXJ0aGxpbmcubmV0PgoKCSogY3BwbWFjcm8uYyAoZnVubGlrZV9pbnZvY2F0aW9uX3ApOiBSZS1kaXNhYmxlIG1hY3JvcyBlbmFibGVkCglieSBjb250ZXh0cyBkcm9wcyBBRlRFUiBhcmd1bWVudCBwcmUtZXhwYW5zaW9uLCBzbyB0aGF0IHRoZXkKCXJlbWFpbiBlbmFibGVkIGR1cmluZyBhcmd1bWVudCBwcmUtZXhwYW5zaW9uLgoJKF9jcHBfcG9wX2NvbnRleHQpOiBVbmNvbmRpdGlvbmFsbHkgcmUtZW5hYmxlIGEgbWFjcm8gd2hlbgoJZHJvcHBpbmcgYSBjb250ZXh0IGxldmVsLgoKMjAwMC0xMi0wMyAgTWFuZnJlZCBIb2xsc3RlaW4gIDxtYW5mcmVkaEByZWRoYXQuY29tPgoKCSogYXJtL3QtbGludXggKE1VTFRJTElCX09QVElPTlMpOiBDb21tZW50LgoJKE1VTFRJTElCX0RJUk5BTUVTKTogTGlrZXdpc2UuCgkoRVhUUkFfTVVMVElMSUJfUEFSVFMpOiBMaWtld2lzZS4KCShMSUJHQ0MpOiBMaWtld2lzZS4KCShJTlNUQUxMX0xJQkdDQyk6IExpa2V3aXNlLgoKMjAwMC0xMi0wMiAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogYnVpbHRpbnMuYyAoZXhwYW5kX2J1aWx0aW5fc3RyY2F0LCBleHBhbmRfYnVpbHRpbl9zdHJuY2F0LAoJZXhwYW5kX2J1aWx0aW5fc3Ryc3BuLCBleHBhbmRfYnVpbHRpbl9zdHJjc3BuKTogTmV3IGZ1bmN0aW9ucy4KCShleHBhbmRfYnVpbHRpbik6IEhhbmRsZSBCVUlMVF9JTl9TVFJDQVQsIEJVSUxUX0lOX1NUUk5DQVQsCglCVUlMVF9JTl9TVFJTUE4gYW5kIEJVSUxUX0lOX1NUUkNTUE4uCgoJKiBidWlsdGlucy5kZWYgKEJVSUxUX0lOX1NUUkNBVCwgQlVJTFRfSU5fU1RSTkNBVCwKCUJVSUxUX0lOX1NUUlNQTiwgQlVJTFRfSU5fU1RSQ1NQTik6IE5ldyBlbnRyaWVzLgoKCSogYy1jb21tb24uYyAoY19jb21tb25fbm9kZXNfYW5kX2J1aWx0aW5zKTogRGVjbGFyZSBidWlsdGluCglzdHJjYXQsIHN0cm5jYXQsIHN0cnNwbiBhbmQgc3RyY3Nwbi4KCShzdHJpbmdfZnR5cGVfc3RyaW5nX2NzdHJpbmcpOiBSZW5hbWVkIGZyb20gYHN0cmluZ19mdHlwZV9wdHJfcHRyJy4KCgkqIGV4dGVuZC50ZXhpIChzdHJjYXQsIHN0cmNzcG4sIHN0cm5jYXQsIHN0cnNwbik6IERvY3VtZW50IG5ldwoJYnVpbHRpbnMuCgoyMDAwLTEyLTAyICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBidWlsdGlucy5jIChleHBhbmRfYnVpbHRpbl9zdHJjbXApOiBVc2UgY29uc3QqX3J0eCB3aGVuCglleHBhbmRpbmcgc3RyY21wIGF0IGNvbXBpbGUtdGltZS4gIEFkZCBhbm90aGVyIHRyYW5zZm9ybWF0aW9uLgoJKGV4cGFuZF9idWlsdGluX3N0cm5jbXApOiBBZGQgbW9yZSB0cmFuc2Zvcm1hdGlvbnMuICBDYWxsCglleHBhbmRfYnVpbHRpbl9tZW1jbXAsIG5vdCBleHBhbmRfYnVpbHRpbl9zdHJjbXAsIHVuZGVyCglhcHByb3ByaWF0ZSBjb25kaXRpb25zIGlmIEhBVkVfY21wc3Ryc2kuCgoyMDAwLTEyLTAyICBEYXZpZCBFZGVsc29obiAgPGVkZWxzb2huQGdudS5vcmc+CgoJKiByczYwMDAubWQgKGFuZGRpM19pbnRlcm5hbFsyM10pOiBQcmVmZXIgcmxkaWM/IG92ZXIgYW5kaXMKCWluc3RydWN0aW9uLgoJKGNyIGxvZ2ljKTogUmVhbGx5IG1ha2Ugb3BlcmFuZHMgc2VxdWVudGlhbC4KCjIwMDAtMTItMDIgIEdlb2ZmcmV5IEtlYXRpbmcgIDxnZW9mZmtAcmVkaGF0LmNvbT4KCgkqIGMtY29tbW9uLmMgKGNvbWJpbmVfc3RyaW5ncyk6IFdoZW4gdGhlIElTTyBDIHN0YW5kYXJkIHNwZWNpZmllcwoJdGhlIG1heGltdW0gbGVuZ3RoIG9mIGEgc3RyaW5nLCBpdCBkb2Vzbid0IGluY2x1ZGUgdGhlIHRyYWlsaW5nCgl6ZXJvIGJ5dGUuCgoJKiBjcHBsaWIuYyAoZG9faWZkZWYpOiBBZGQgY2hlY2tfZW9sKCkgY2FsbC4KCShkb19pZm5kZWYpOiBMaWtld2lzZS4KCjIwMDAtMTItMDIgIERhbmllbCBCZXJsaW4gIDxkYmVybGluQHJlZGhhdC5jb20+CgkgICAgQnJ1Y2UgS29yYiAgPGJrb3JiQGdudS5vcmc+CgoJKiBmaXhpbmMvKjogZ2xvYmFsIHN1YnN0aXR1dGUgL19fTVNET1NfXy9TRVBBUkFURV9GSVhfUFJPQy8KCSogZml4aW5jL21rZml4aW5jLnNoOiBwcmVwYXJlIHRvIHVzZSBNYWtlZmlsZS5CRU9TIGZvciAqLSotYmVvcyoKCSogZml4aW5jL01ha2VmaWxlLkRPUzogZGVmaW5lIFNFUEFSQVRFX0ZJWF9QUk9DIGZvciBidWlsZAoJKiBmaXhpbmMvZml4Zml4LmMod3JhcF9maXgpOiBhdm9pZCB3cmFwcGluZyBmaWxlcyB0aGF0Cgl1c2UgdGhlICJfX25lZWRfIiBoYWNrZXJ5LiAgSXQgYnJlYWtzIHRoZW0uCgkqIGZpeGluYy9maXhpbmNsLmMocHJvY2VzcyAtIFNFUEFSQVRFX0ZJWF9QUk9DKToKCVNvbWV0aW1lcyBvbiBET1MgYW5kIEJlT1MgdGhlIHRlbXAgb3V0cHV0IGZpbGUgY2Fubm90IGJlIG9wZW5lZC4KCVNraXAgdGhlIGZpbGUgbm9pc2lseS4gIE91Z2h0IHRvIGJlIGZpeGVkIGluc3RlYWQuCgoyMDAwLTEyLTAyICBCcnVjZSBLb3JiICA8YmtvcmJAZ251Lm9yZz4KCglGcm9tOiAyMDAwLTExLTE5ICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBmaXhmaXhlcy5jIChlbWl0X2dudV90eXBlLCBmb3JtYXRfd3JpdGUpOiBQcm90b3R5cGUuCgkoZm9ybWF0X3dyaXRlLCBjaGFyX21hY3JvX3VzZV9maXgsIGNoYXJfbWFjcm9fZGVmX2ZpeCk6IFVzZSBnY2MncwoJY3VzdG9tIHVwcGVyY2FzZSBjdHlwZSBtYWNyb3MuCgkqIGZpeGluY2wuYyAoZG9fdmVyc2lvbik6IE1ha2Ugc3RhdGljIGFuZCBhZGQgQVRUUklCVVRFX05PUkVUVVJOLgoJVXNlIGdjYydzIGN1c3RvbSB1cHBlcmNhc2UgY3R5cGUgbWFjcm9zLgoJKG1haW4pOiBQcm90b3R5cGUuCgkobWFjaGluZV9tYXRjaGVzKTogQWRkIHN0YXRpYyBwcm90b3R5cGUgYW5kIGNvbnN0aWZ5IHZhcmlhYmxlLgoJKGNyZWF0ZV9maWxlLCB0ZXN0X3Rlc3QsIGVncmVwX3Rlc3QpOiBBZGQgc3RhdGljIHByb3RvdHlwZS4KCShxdW90ZWRfZmlsZV9leGlzdHMpOiBMaWtld2lzZSwgYW5kIGNvbnN0aWZ5IHBhcmFtZXRlcnMuCgkoZXh0cmFjdF9xdW90ZWRfZmlsZXMsIGludGVybmFsX2ZpeCwgc3RhcnRfZml4ZXIsIGZpeF9hcHBsaWVzLAoJd3JpdGVfcmVwbGFjZW1lbnQsIHRlc3RfZm9yX2NoYW5nZXMpOiBBZGQgc3RhdGljIHByb3RvdHlwZS4KCSh3cml0ZV9yZXBsYWNlbWVudCwgdGVzdF9mb3JfY2hhbmdlcyk6IERlbGV0ZSBleGNlc3MgYXJndW1lbnQgdG8KCWBjcmVhdGVfZmlsZScuCgkqIGZpeHRlc3RzLmMgKHRlc3QpOiBNYWtlIHN0YXRpYy4KCSogc2VydmVyLmMgKGxvYWRfZGF0YSwgc2lnX2hhbmRsZXIsIHNlcnZlcl9zZXR1cCwgZmluZF9zaGVsbCk6IEFkZAoJc3RhdGljIHByb3RvdHlwZS4KCShzaWdfaGFuZGxlcik6IE1hcmsgcGFyYW1ldGVyIHdpdGggQVRUUklCVVRFX1VOVVNFRC4KCjIwMDAtMTItMDIgIEJydWNlIEtvcmIgIDxia29yYkBnbnUub3JnPgoKCSogZml4bmMvbWtmaXhpbmMuc2gobXNkb3NkamdwcCk6IHJlbW92ZSBmcm9tIGZpeGluY2x1ZGVzIGV4Y2VwdGlvbiBsaXN0CgkocGVyIExhdXJ5bmFzIEJpdmVpbmlzICA8bGF1cmFzQHNvZnRob21lLm5ldD4pCgoyMDAwLTEyLTAyICBSaWNoYXJkIEVhcm5zaGF3ICA8cmVhcm5zaGFAYXJtLmNvbT4KCgkqIGFybS5oIChBUk1fUkVHTk9fT0tfRk9SX0JBU0VfUCwgVEhVTUJfUkVHTk9fTU9ERV9PS19GT1JfQkFTRV9QKTogTmV3CgltYWNyb3MuCgkoUkVHTk9fTU9ERV9PS19GT1JfQkFTRV9QKTogRGVmaW5lIGluIHRlcm1zIG9mIGFib3ZlLgoJKFJFR05PX09LX0ZPUl9GT1JfQkFTRV9QKTogRGVsZXRlLgoJKEFSTV9SRUdfT0tfRk9SX0JBU0VfUCwgVEhVTUJfUkVHX01PREVfT0tfRk9SX0JBU0VfUCk6IE5ldyBtYWNyb3MgZm9yCglib3RoIHN0cmljdCBhbmQgbm9uLXN0cmljdCB1c2VzLgoJKFJFR19NT0RFX09LX0ZPUl9CQVNFX1ApOiBEZWZpbmUgaW4gdGVybXMgb2YgYWJvdmUuCgkoQVJNX1JFR19PS19GT1JfSU5ERVhfUCwgVEhVTUJfUkVHX09LX0ZPUl9JTkRFWF9QKTogTmV3IG1hY3Jvcy4KCShSRUdfT0tfRk9SX0lOREVYX1ApOiBEZWZpbmUgaW4gdGVybXMgb2YgYWJvdmUuCgkoUkVHX09LX0ZPUl9CQVNFX1ApOiBEZWxldGUuCgkoUkVHX09LX0ZPUl9QUkVfUE9TVF9QKTogRGVsZXRlLgoJKEFSTV9CQVNFX1JFR0lTVEVSX1JUWF9QKTogUmVuYW1lZCBmcm9tIEJBU0VfUkVHSVNURVJfUlRYX1AuCgkoQVJNX0lOREVYX1JFR0lTVEVSX1JUWF9QKTogUmVuYW1lZCBmcm9tIElOREVYX1JFR0lTVEVSX1JUWF9QLgoJKEFSTV9HT19JRl9MRUdJVElNQVRFX0lOREVYKTogUmVuYW1lZCBmcm9tIEdPX0lGX0xFR0lUSU1BVEVfSU5ERVguCgkoVEhVTUJfTEVHSVRJTUFURV9PRkZTRVQpOiBSZW5hbWVkIGZyb20gTEVHSVRJTUFURV9PRkZTRVQuCgkoQVJNX0dPX0lGX0xFR0lUSU1BVEVfQUREUkVTUyk6IEFkanVzdCBmb3IgbmFtZSBjaGFuZ2VzLiAgVXNlIEFSTQoJc3BlY2lmaWMgdmFyaWFudHMgcmF0aGVyIHRoYW4gZ2VuZXJhbCBvbmVzLiAgVXNlIEFSTV9SRUdfT0tfRk9SX0JBU0VfUAoJaW4gcHJlL3Bvc3QgaW5jcmVtZW50IGNhc2VzLgoJKFRIVU1CX0dPX0lGX0xFR0lUSU1BVEVfQUREUkVTUyk6IFNpbWlsYXJseSBmb3IgVGh1bWIuCgkoQVJNX0xFR0lUSU1JWkVfQUREUkVTUyk6IFNpbWlsYXJseS4KCShUSFVNQl9MRUdJVElNSVpFX1JFTE9BRF9BRERSRVNTKTogU2ltaWxhcmx5LgoJKiBhcm0uYyAobGVnaXRpbWF0ZV9waWNfYWRkcmVzcyk6IFNpbWlsYXJseS4KCjIwMDAtMTItMDIgIE5laWwgQm9vdGggIDxuZWlsYkBlYXJ0aGxpbmcubmV0PgoKCSogdHJhZGNwcC5jIChzdHJ1Y3QgYW5zd2VyLCBwYXJzZV9hc3NlcnRpb24sIHBhcnNlX2Fuc3dlciwKCWNhbm9uaWNhbGl6ZV90ZXh0LCBmaW5kX2Fuc3dlcik6IE5ldy4KCShkb19hc3NlcnQsIGRvX3VuYXNzZXJ0KTogUHJvdmlkZSBhcHByb3ByaWF0ZSBmdW5jdGlvbiBib2RpZXMuCgkodW5pb24gaGFzaHZhbCk6IE5ldyBtZW1iZXIgYW5zd2Vycy4KCjIwMDAtMTEtMjMgIE1hcmVrIE1pY2hhbGtpZXdpY3ogIDxtYXJla21AbGludXgub3JnLnBsPgoKCSogY29uZmlnL2F2ci9hdnIubWQ6IERvY3VtZW50IFVOU1BFQyB1c2FnZS4KCSgqdGFibGVqdW1wX3JqbXAsICp0YWJsZWp1bXBfbGliLCAqdGFibGVqdW1wX2VuaCwgKnRhYmxlanVtcCk6CglNYWtlIG9wZXJhbmQgMCBpbnB1dCBvbmx5LCBjbG9iYmVyIGl0LiAgVXNlIFVOU1BFQywgbm90IGEgYm9ndXMKCU1FTSBmb3IgcHJvZ3JhbSBtZW1vcnkgd29yZCByZWZlcmVuY2UuICBEbyBub3QgYWRkIHRoZSBsYWJlbCB0bwoJdGhlIHRhYmxlIGluZGV4IGluIGVhY2ggb2YgdGhlIGFzbSBvdXRwdXQgdGVtcGxhdGVzLCBpbnN0ZWFkIC4uLgoJKGNhc2VzaSk6IC4uLiBkbyBpdCBpbiBSVEwuICBBZGp1c3QgdG8gbWF0Y2ggdGhlIGFib3ZlIGNoYW5nZS4KCjIwMDAtMTItMDIgIEJlcm5kIFNjaG1pZHQgIDxiZXJuZHNAcmVkaGF0LmNvLnVrPgoKCSogYy1jb21tb24uYyAoUFRSRElGRl9UWVBFKTogUHJvdmlkZSBkZWZhdWx0IGhlcmUsIC4uLgoJKiBjLWRlY2wuYzogLi4uIG5vdCBoZXJlLgoKCSogaGFpZmEtc2NoZWQuYyAoc2NoZWRfZHVtcCk6IFJlbmFtZWQgZnJvbSBkdW1wLiAgQWxsIHVzZXJzIGNoYW5nZWQuCgkob2xkX21heF91aWQpOiBOZXcgdmFyaWFibGUuCgkoY29tcHV0ZV9mb3J3YXJkX2RlcGVuZGVuY2VzKTogUmVuYW1lZCBmcm9tCgljb21wdXRlX2Jsb2NrX2ZvcndhcmRfZGVwZW5kZW5jZXM7IGNoYW5nZWQgdG8gYWNjZXB0IGJsb2NrIGhlYWQgYW5kCgl0YWlsIGluc3RlYWQgb2YgYmxvY2sgbnVtYmVyLiAgQ2FsbGVyIGNoYW5nZWQuCgkoZnJlZV9kZXBzLCBpbml0X2RlcGVuZGVuY3lfY2FjaGVzLCBmcmVlX2RlcGVuZGVuY3lfY2FjaGVzLAoJaW5pdF9yZWdpb25zLCBzY2hlZF9pbml0KTogTmV3IGZ1bmN0aW9ucywgc3BsaXQgb3V0IGZyb20KCXNjaGVkdWxlX2luc25zIGFuZCBjb21wdXRlX2Jsb2NrX2JhY2t3YXJkX2RlcGVuZGVuY2VzLgoKMjAwMC0xMi0wMiAgTmVpbCBCb290aCAgPG5laWxiQGVhcnRobGluZy5uZXQ+CgoJKiBjcHBleHAuYyAocGFyc2VfbnVtYmVyKTogVXBkYXRlIGRpYWdub3N0aWMgdGVzdC4KCjIwMDAtMTItMDIgIEJlcm5kIFNjaG1pZHQgIDxiZXJuZHNAcmVkaGF0LmNvLnVrPgoKCSogcmVsb2FkMS5jIChmcmVlX2Zvcl92YWx1ZV9wKTogTmV3IGZ1bmN0aW9uLCBmcm9udGVuZCB0bwoJcmVsb2FkX3JlZ19mcmVlX2Zvcl92YWx1ZV9wLiAgQWxsIGNhbGxlcnMgb2YgdGhlIGxhdHRlciBub3cgY2FsbAoJdGhpcyBmdW5jdGlvbiB3aXRoIGFuIGFkZGl0aW9uYWwgbW9kZSBhcmd1bWVudC4KCjIwMDAtMTItMDIgIEdlcmFsZCBQZmVpZmVyICA8cGZlaWZlckBkYmFpLnR1d2llbi5hYy5hdD4KCgkqIGluc3RhbGwudGV4aSAoQ29uZmlndXJhdGlvbnMpOiBSZW1vdmUgb2Jzb2xldGUgZG9jdW1lbnRhdGlvbiBmb3IKCWhwcGEqLSotKi4KCjIwMDAtMTItMDIgIEdlcmFsZCBQZmVpZmVyICA8cGZlaWZlckBkYmFpLnR1d2llbi5hYy5hdD4KCgkqIGluc3RhbGwudGV4aSAoSW5zdGFsbGF0aW9uKTogUmVtb3ZlIG9ic29sZXRlIGRlc2NyaXB0aW9uIGZvcgoJbGlic3RkYysrIHdoaWNoIGlzIG5vdyBhbiBpbnRlZ3JhbCBwYXJ0IG9mIEdDQy4KCjIwMDAtMTItMDEgIEppbSBCbGFuZHkgIDxqaW1iQHJlZGhhdC5jb20+CgoJKiBkYnhvdXQuYyAoZGJ4b3V0X3Bhcm1zKTogQ29ycmVjdGx5IGRlc2NyaWJlIHBhcmFtZXRlcnMgcGFzc2VkIGJ5CglpbnZpc2libGUgcmVmZXJlbmNlIGluIHJlZ2lzdGVycywgYnV0IHRoZW4gc3BpbGxlZCB0byB0aGUgc3RhY2suCglSZW1vdmUgY29kZSB0byBlbWl0IGEgc2Vjb25kIHN0YWIgZm9yIHN1Y2ggcGFyYW1ldGVyczsgaXQgYXR0ZW1wdHMKCXRvIGRlc2NyaWJlIHRoZSB2YWx1ZSdzIGxvY2F0aW9uIGJ5IGludHJvZHVjaW5nIGEgc3ludGhldGljIEMrKwoJYHJlZmVyZW5jZScgdHlwZSwgYW5kIHRoZW4gc2F5aW5nIHRoZSBzdGFjayBzbG90IGhhcyB0aGF0CglyZWZlcmVuY2UgdHlwZS4gIFRoaXMgbG9zZXMgdHlwZSBpbmZvcm1hdGlvbiAoYnJlYWtpbmcgR0RCJ3MKCWBwdHlwZScgY29tbWFuZCwgYW1vbmcgb3RoZXIgdGhpbmdzKSBqdXN0IHRvIGRlc2NyaWJlIGEgbG9jYXRpb24KCXdoaWNoIHN0YWJzIGNhbiByZXByZXNlbnQgY29ycmVjdGx5IGluIG90aGVyIHdheXMuCgoyMDAwLTEyLTAxICBBbGV4YW5kcmUgT2xpdmEgIDxhb2xpdmFAcmVkaGF0LmNvbT4KCgkqIGZpbmFsLmMgKG91dHB1dF9hZGRyX2NvbnN0KSA8UExVUz46IERvbid0IGFzc3VtZSBhdCBsZWFzdCBvbmUKCW9wZXJhbmQgaXMgYSBDT05TVF9JTlQuCgoJKiBjb25maWcvc2gvc2guYyAocmVnX2NsYXNzX2Zyb21fbGV0dGVyKTogQXNzaWduIGBrJyB0byBTSUJDQUxMX1JFR1MuCgkobWFjaGluZV9kZXBlbmRlbnRfcmVvcmcpOiBTcGxpdCBhbGwgaW5zbnMuCgkqIGNvbmZpZy9zaC9zaC5oIChDT05ESVRJT05BTF9SRUdJU1RFUl9VU0FHRSk6IENvbXB1dGUKCXJlZ19jbGFzc19jb250ZW50c1tTSUJDQUxMX1JFR1NdLgoJKHJlZ19jbGFzcywgUkVHX0NMQVNTX05BTUVTLCBSRUdfQ0xBU1NfQ09OVEVOVFMpOiBBZGQgU0lCQ0FMTF9SRUdTLgoJKiBjb25maWcvc2gvc2gubWQgKGNhbGxpX3BjcmVsLCBjYWxsX3BjcmVsLCBjYWxsX3ZhbHVlaV9wY3JlbCwKCWNhbGxfdmFsdWVfcGNyZWwsIGNhbGwsIGNhbGxfdmFsdWUsIHNpYmNhbGwpOiBNYXRjaCBldmVuIHdoZW4KCW5vdCBvcHRpbWl6aW5nLgoJKHNpYmNhbGxpX3BjcmVsLCBzaWJjYWxsX3BjcmVsKTogTGlrZXdpc2UuICBVc2UgY29uc3RyYWludCBgaycKCWZvciBjYWxsIGFkZHJlc3MuCgkoc2liY2FsbGkpOiBMaWtld2lzZS4KCjIwMDAtMTItMDEgIEpvc2VwaCBTLiBNeWVycyAgPGpzbTI4QGNhbS5hYy51az4KCgkqIGMtY29tbW9uLmMgKHdhcm5fZm9ybWF0LCB3YXJuX2Zvcm1hdF95MmssCgl3YXJuX2Zvcm1hdF9leHRyYV9hcmdzLCB3YXJuX2Zvcm1hdF9ub25saXRlcmFsKTogRGVmaW5lLgoJKGNoZWNrX2Zvcm1hdF9pbmZvKTogQ2hlY2sgd2Fybl9mb3JtYXRfbm9ubGl0ZXJhbCBhbmQKCXdhcm5fZm9ybWF0X2V4dHJhX2FyZ3MuCgkoY2hlY2tfZm9ybWF0X2luZm9fbWFpbik6IENoZWNrIHdhcm5fZm9ybWF0X3kyay4KCShzZXRfV2Zvcm1hdCk6IE5ldyBmdW5jdGlvbi4KCSogYy1jb21tb24uaCAod2Fybl9mb3JtYXRfeTJrLCB3YXJuX2Zvcm1hdF9leHRyYV9hcmdzLAoJd2Fybl9mb3JtYXRfbm9ubGl0ZXJhbCwgc2V0X1dmb3JtYXQpOiBEZWNsYXJlLgoJKiBjLWRlY2wuYyAod2Fybl9mb3JtYXQpOiBSZW1vdmUgZGVmaW5pdGlvbi4KCShjX2RlY29kZV9vcHRpb24pOiBIYW5kbGUgLVdmb3JtYXQtbm9ubGl0ZXJhbCwKCS1Xbm8tZm9ybWF0LWV4dHJhLWFyZ3MgYW5kIC1Xbm8tZm9ybWF0LXkyaywgYW5kIG5lZ2F0ZWQgdmVyc2lvbnMuCglVc2Ugc2V0X1dmb3JtYXQuCgkqIGludm9rZS50ZXhpOiBEb2N1bWVudCB0aGVzZSBuZXcgb3B0aW9ucyBhbmQgLVdmb3JtYXQ9Mi4KCSogdG9wbGV2LmMgKGRvY3VtZW50ZWRfbGFuZ19vcHRpb25zKTogQWRkIHRoZXNlIG5ldyBvcHRpb25zLgoKMjAwMC0xMi0wMSAgSm9zZXBoIFMuIE15ZXJzICA8anNtMjhAY2FtLmFjLnVrPgoKCSogYnVpbHRpbnMuZGVmIChCVUlMVF9JTl9JTUFYQUJTKTogQWRkLgoJKiBidWlsdGlucy5jIChleHBhbmRfYnVpbHRpbik6IEFsc28gYWJvcnQgb24gQlVJTFRfSU5fSU1BWEFCUy4KCSogYy1jb21tb24uYyAoY19jb21tb25fbm9kZXNfYW5kX2J1aWx0aW5zKTogQ3JlYXRlIGJ1aWx0aW4KCWZ1bmN0aW9ucyBfX2J1aWx0aW5faW1heGFicywgYW5kIHBsYWluIGltYXhhYnMgdW5sZXNzCglmbGFnX25vX25vbmFuc2lfYnVpbHRpbiBvdXRzaWRlIEM5OSBtb2RlLgoJKGV4cGFuZF90cmVlX2J1aWx0aW4pOiBIYW5kbGUgQlVJTFRfSU5fSU1BWEFCUy4KCSogZXh0ZW5kLnRleGk6IERvY3VtZW50IGJ1aWx0aW4gaW1heGFicy4KCjIwMDAtMTItMDEgIEpvc2VwaCBTLiBNeWVycyAgPGpzbTI4QGNhbS5hYy51az4KCgkqIGMtY29tbW9uLmM6IEluY2x1ZGUgImRlZmF1bHRzLmgiLgoJKFdJTlRfVFlQRSwgSU5UTUFYX1RZUEUsIFVJTlRNQVhfVFlQRSk6IERlZmluZS4KCShjX2NvbW1vbl9ub2Rlc19hbmRfYnVpbHRpbnMpOiBDcmVhdGUgc3RyaW5nX3R5cGVfbm9kZSwKCWNvbnN0X3N0cmluZ190eXBlX25vZGUsIHdpbnRfdHlwZV9ub2RlLCBpbnRtYXhfdHlwZV9ub2RlLAoJdWludG1heF90eXBlX25vZGUsIGRlZmF1bHRfZnVuY3Rpb25fdHlwZSwgcHRyZGlmZl90eXBlX25vZGUgYW5kCgl1bnNpZ25lZF9wdHJkaWZmX3R5cGVfbm9kZS4KCSogYy1jb21tb24uaCAoaWRlbnRpZmllcl9nbG9iYWxfdmFsdWUpOiBEZWNsYXJlLgoJKiBjLWRlY2wuYyAoV0lOVF9UWVBFLCBJTlRNQVhfVFlQRSwgVUlOVE1BWF9UWVBFKTogRG9uJ3QgZGVmaW5lLgoJKGluaXRfZGVjbF9wcm9jZXNzaW5nKTogRG9uJ3QgY3JlYXRlIHN0cmluZ190eXBlX25vZGUsCgljb25zdF9zdHJpbmdfdHlwZV9ub2RlLCB3aW50X3R5cGVfbm9kZSwgaW50bWF4X3R5cGVfbm9kZSwKCXVpbnRtYXhfdHlwZV9ub2RlLCBkZWZhdWx0X2Z1bmN0aW9uX3R5cGUsIHB0cmRpZmZfdHlwZV9ub2RlIGFuZAoJdW5zaWduZWRfcHRyZGlmZl90eXBlX25vZGUuCgkoaWRlbnRpZmllcl9nbG9iYWxfdmFsdWUpOiBOZXcgZnVuY3Rpb24uCgoyMDAwLTEyLTAxICBOZWlsIEJvb3RoICA8bmVpbGJAZWFydGhsaW5nLm5ldD4KCgkqIGNwcGluaXQuYyAoaW5pdGlhbGl6ZSk6IEZvcmdvdHRlbiBwcm90b3R5cGUuCgkqIGNwcGxleC5jIChfY3BwX2xleF90b2tlbik6IExvb3AgdW50aWwgbm90IHNraXBwaW5nLgoJQWx3YXlzIGNsZWFyIFBSRVZfV0hJVEUgdXBvbiBtZWV0aW5nIGEgbmV3IGxpbmUuCgkqIGNwcGxpYi5jIChlbmRfZGlyZWN0aXZlKTogU2V0IHBmaWxlLT5za2lwcGluZyBhZnRlcgoJc2tpcF9yZXN0X29mX2xpbmUuCgkqIGNwcGxpYi5oIChjcHBfcmVhZGVyKTogUmVtb3ZlIG1hY3JvX3Bvcy4KCSogY3BwbWFjcm8uYyAoY3BwX2dldF9saW5lKTogRG9uJ3QgZG8gYW55dGhpbmcgc3BlY2lhbCBpbnNpZGUKCW1hY3Jvcy4KCShwYXJzZV9hcmcpOiBBZGQgUFJFVl9XSElURSBpZiBhIHRva2VuIGFwcGVhcnMgYWZ0ZXIgbmV3IGxpbmVzLgoJKGZ1bmxpa2VfaW52b2NhdGlvbl9wKTogU2F2ZSBhbmQgcmVzdG9yZSB0aGUgb3V0cHV0IHBvc2l0aW9uCglvdmVyIGEgc3VjY2Vzc2Z1bCBjaGVjayBmb3IgYSAnKCcuCgkoZW50ZXJfbWFjcm9fY29udGV4dCk6IERlbGV0ZSB1c2VzIG9mIG1hY3JvX3Bvcy4KCShjcHBfZ2V0X3Rva2VuKTogRG9uJ3QgdXNlIHBmaWxlLT5za2lwcGluZy4KCjIwMDAtMTItMDEgIFBoaWwgRWR3YXJkcyAgPHBtZUBzb3VyY2VzLnJlZGhhdC5jb20+CgoJKiBkaWFnbm9zdGljLmM6ICBGaXggdHlwb3MgaW4gY29tbWVudHMuCgkqIGRpYWdub3N0aWMuaDogIExpa2V3aXNlLgoKMjAwMC0xMS0zMCAgUGhpbCBFZHdhcmRzICA8cG1lQHNvdXJjZXMucmVkaGF0LmNvbT4KCgkqIHJ0bC50ZXhpIChNYWNoaW5lIE1vZGVzKTogIERvY3VtZW50IEJJbW9kZSBhbmQgT0ltb2RlLgoKMjAwMC0xMi0wMSAgSm9zZXBoIFMuIE15ZXJzICA8anNtMjhAY2FtLmFjLnVrPgoKCSogZ2NjLmMgKGRlZmF1bHRfY29tcGlsZXJzKTogQWRkIHN1ZmZpeGVzIC5taSwgLmNwLCAuaWksIC5GT1IgYW5kCgkuRlBQLgoKMjAwMC0xMi0wMSAgSm9zZXBoIFMuIE15ZXJzICA8anNtMjhAY2FtLmFjLnVrPgoKCSogYy1kZWNsLmMgKGdyb2tkZWNsYXJhdG9yKTogSWYgcGVkYW50aWMsIHdhcm4gYWJvdXQgYXJyYXlzIHdpdGgKCWluY29tcGxldGUgZWxlbWVudCB0eXBlLgoJKGdyb2twYXJtcyk6IEJlZm9yZSBjaGVja2luZyBmb3IgaW5jb21wbGV0ZSBwYXJhbWV0ZXIgdHlwZSwgY2hlY2sKCXRoZSB0eXBlIGlzbid0IGVycm9yX21hcmtfbm9kZS4KCjIwMDAtMTItMDEgIEpha3ViIEplbGluZWsgIDxqYWt1YkByZWRoYXQuY29tPgoKCSogYnVpbHRpbnMuYyAodGFyZ2V0X2NoYXJfY2FzdCk6IE5ldyBmdW5jdGlvbi4KCShleHBhbmRfYnVpbHRpbl9zdHJjaHIpOiBVc2UgaXQuCgkoZXhwYW5kX2J1aWx0aW5fc3RycmNocik6IFVzZSBpdC4KCShidWlsdGluX21lbXNldF9yZWFkX3N0cik6IE5ldyBmdW5jdGlvbi4KCShleHBhbmRfYnVpbHRpbl9tZW1zZXQpOiBVc2UgdGFyZ2V0X2NoYXJfY2FzdC4KCVRyeSB0byBvcHRpbWl6ZSBtZW1zZXQgd2l0aCBzZWNvbmQgYXJndW1lbnQgbm9uemVybyB1c2luZwoJc3RvcmVfYnlfcGllY2VzLgoKMjAwMC0xMS0zMCAgTWFyZWsgTWljaGFsa2lld2ljeiAgPG1hcmVrbUBsaW51eC5vcmcucGw+CgoJKiBpbnN0YWxsLnRleGkgKGF2cik6IFJlcGxhY2UgaW5jb21wbGV0ZSBsaXN0IG9mIHN1cHBvcnRlZCBNQ1UKCXR5cGVzIHdpdGggYSBsaW5rIHRvIHRoZSBjdXJyZW50IG9uZSAuLi4KCSogaW52b2tlLnRleGkgKEFWUiBPcHRpb25zKTogLi4uIGhlcmUuICBVcGRhdGUgLW1tY3U9IHRvIGxpc3QKCWFsbCBzdXBwb3J0ZWQgTUNVIHR5cGVzLiAgRG9jdW1lbnQgLW1pbml0LXN0YWNrPSBkZWZhdWx0LgoJRG9jdW1lbnQgbmV3IG9wdGlvbnMgLW1uby10YWJsZWp1bXAsIC1tdGlueS1zdGFjay4KCSogbWQudGV4aSAoQVZSIGZhbWlseSk6ICBGaXggdHlwbyBpbiAndycgY29uc3RyYWludCBsZXR0ZXIKCWRlc2NyaXB0aW9uLiAgRG9jdW1lbnQgJ3EnLiAgVXBkYXRlICdPJy4KCjIwMDAtMTItMDEgIEJlcm5kIFNjaG1pZHQgIDxiZXJuZHNAcmVkaGF0LmNvLnVrPgoKCSogY29tYmluZS5jIChjYW50X2NvbWJpbmVfaW5zbl9wKTogT25seSBkaXNhbGxvdyBpbnNucyBpbnZvbHZpbmcKCWhhcmQgcmVncyBpZiB0aGV5IGFyZSByZWctcmVnIG1vdmVzLgoJKHRyeV9jb21iaW5lLCBjYW5fY29tYmluZV9wLCBjb21iaW5hYmxlX2kzcGF0KTogRGVsZXRlIG9sZAoJU01BTExfUkVHSVNURVJfQ0xBU1NFUyB0ZXN0cy4KCjIwMDAtMTItMDEgIEFsZXhhbmRyZSBPbGl2YSAgPGFvbGl2YUByZWRoYXQuY29tPgoKCSogY29uZmlnL3NoL3NoLmMgKHNoaWZ0Y29zdHMpOiBEb24ndCBnZXQgSU5UVkFMIGJlZm9yZSB0ZXN0aW5nCgl3aGV0aGVyIFggaXMgYSBDT05TVF9JTlQuCgkoYWRkc3ViY29zdHMpOiBMaWtld2lzZS4KCgkqIGNvbmZpZy9zaC9zaC5oIChPVVRQVVRfQUREUl9DT05TVF9FWFRSQSk6IFVzZSBJTlRWQUwgaW5zdGVhZCBvZgoJbWlzLXVzZWQgWElOVC4KCShBUkdfUE9JTlRFUl9SRUdOVU0pOiBTZXQgdG8gQVBfUkVHLgoKMjAwMC0xMS0zMCAgQWxleGFuZHJlIE9saXZhICA8YW9saXZhQHJlZGhhdC5jb20+CgoJKiBjb25maWcvc2gvc2gubWQgKGZwdV9zd2l0Y2gwLCBmcHVfc3dpdGNoMSwgbW92cHNpLCBmcHVfc3dpdGNoLAoJc3BsaXRzKTogT25seSBtYXRjaCBvbiBUQVJHRVRfU0g0LgoKCSogY29tYmluZS5jICh0cnlfY29tYmluZSk6IERpc3JlZ2FyZCBVU0VzIHdoZW4gdXBkYXRpbmcgTE9HX0xJTktTCglvZiBzdWJzZXF1ZW50IGluc25zLgoKMjAwMC0xMS0zMCAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCgkqIGNvbmZpZy9hbHBoYS9hbHBoYS5oIChBU01fT1VUUFVUX01JX1RIVU5LKTogRGlzYWJsZS4KCSogY29uZmlnL2FscGhhL2FscGhhMzIuaCAoQVNNX09VVFBVVF9NSV9USFVOSyk6IExpa2V3aXNlLgoKMjAwMC0xMS0zMCAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCgkqIGNvbmZpZy9hbHBoYS9lbGYuaCAoQVNNX09VVFBVVF9TRUNUSU9OX05BTUUpOiBDb3B5IGVsZm9zLmggZGVmbi4KCShET19TRUxFQ1RfU0VDVElPTik6IE5ldy4KCShTRUxFQ1RfU0VDVElPTik6IFVzZSBpdC4KCShVTklRVUVfU0VDVElPTl9QKTogTmV3LgoJKFVOSVFVRV9TRUNUSU9OKTogTmV3LgoKMjAwMC0xMS0zMCAgQWxleGFuZHJlIE9saXZhICA8YW9saXZhQHJlZGhhdC5jb20+CgoJKiBjLWNvbW1vbi5jIChzdGF0dXNfd2FybmluZykgWyEgQU5TSV9QUk9UT1RZUEVTXTogTG9hZCBzdGF0dXMKCWZyb20gdmFfbGlzdCBiZWZvcmUgdXNpbmcgaXQuCgoyMDAwLTExLTMwICBNaWNoYWVsIE1hdHogIDxtYXR6bWljaEBjcy50dS1iZXJsaW4uZGU+CgoJKiBmbG93LmMgKG1ha2VfZWRnZSk6IEVhcmx5IG91dCwgaWYgbm8gZmxhZ3MgdG8gc2V0LgoJKGNhbGN1bGF0ZV9nbG9iYWxfcmVnc19saXZlKTogQ2xlYXIgb3V0IGdhcmJhZ2Ugb25seSB3aGVuIG5lY2Vzc2FyeS4KCgkqIHNpbXBsaWZ5LXJ0eC5jICh2YXJyYXlfdHlwZSB1c2VkX3JlZ3MpOiBOZXcuCgkoY2xlYXJfdGFibGUpOiBVc2UgaXQgdG8gb25seSBjbGVhciBuZWNlc3NhcnkgaXRlbXMuCgkoY3NlbGliX2xvb2t1cCwgY3NlbGliX3JlY29yZF9zZXQpOiBSZW1lbWJlciBuZXdseSBzZXQgaXRlbXMuCgkoY3NlbGliX3VwZGF0ZV92YXJyYXlfc2l6ZXMsIGNzZWxpYl9pbml0KTogSW5pdGlhbGl6ZSBhbmQgZ3JvdwoJdXNlZF9yZWdzLgoKCSogbG9jYWwtYWxsb2MuYyAodXBkYXRlX2VxdWl2X3JlZ3MpOiBOZXcgbG9jYWwgYGNsZWFyZWRfcmVncycuCglNb3ZlIGNsZWFyaW5nIG9mIGRlYWQgcmVncyBvdXQgb2YgaW5zbi1sb29wLgoKMjAwMC0xMS0zMCAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCgkqIGNhbGxzLmMgKGV4cGFuZF9jYWxsKTogRW1pdCBxdWV1ZWQgaW5zbnMgYmVmb3JlIGNyZWF0aW5nCgl0aGUgdGFpbCByZWN1cnNpb24gc2VxdWVuY2UuCgoyMDAwLTExLTMwICBKLiBEYXZpZCBBbmdsaW4gIDxkYXZlLmFuZ2xpbkBucmMuY2E+CgkgICAgQnJ1Y2UgS29yYiAgPGJrb3JiQGdudS5vcmc+CgoJKiBmaXhpbmMvaW5jbGhhY2suZGVmKCk6IHByZXZlbnQgZHVhbCBkb3VibGUgZGVmaW5pdGlvbiBwcm90ZWN0aW9uCgkqIGZpeGluYy9maXhpbmNsLng6IHJlZ2VuZXJhdGUKCjIwMDAtMTEtMjkgIExvcmVuIEouIFJpdHRsZSAgPGxqcml0dGxlQGFjbS5vcmc+CgoJKiBmaXhpbmMvTWFrZWZpbGUuaW4gKGZpeGluY2wueCk6IEV4cGxpY2l0bHkgc3RhdGUgdGhlCglsb2NhdGlvbiBvZiB0aGUgZ2VuZXJhdGVkIGZpbGUuCgoyMDAwLTExLTMwICBHZXJhbGQgUGZlaWZlciAgPHBmZWlmZXJAZGJhaS50dXdpZW4uYWMuYXQ+CgoJKiBSRUFETUUuRlJFU0NPOiBSZW1vdmUgb2Jzb2xldGUgZmlsZS4KCjIwMDAtMTEtMzAgIE1hcmsgS2V0dGVuaXMgIDxrZXR0ZW5pc0BnbnUub3JnPgoKCSogY29uZmlnL3QtZ251IChMSUJHQ0MxLCBDUk9TU19MSUJHQ0MxLCBDUlRTVFVGRl9UX0NGTEFHUywKCVRBUkdFVF9MSUJHQ0MyX0NGTEFHUyk6IFJlbW92ZS4gIFdlIG5vdyB1c2UgdGhlIHNldHRpbmdzIGZyb20KCWNvbmZpZy90LWxpbnV4IGZvciB0aGUgSHVyZC4KCjIwMDAtMTEtMzAgIFN0ZXBoYW5lIENhcnJleiAgPFN0ZXBoYW5lLkNhcnJlekB3b3JsZG5ldC5mcj4KCgkqIGNvbmZpZy9tbjEwMjAwL3VkaXZtb2QuYywgY29uZmlnL21uMTAyMDAvZGl2bW9kLmMsCgljb25maWcvbW4xMDIwMC91ZGl2bW9kc2k0LmM6IE1vdmVkIGZyb20gaGVyZS4KCSogY29uZmlnL3VkaXZtb2QuYywgY29uZmlnL2Rpdm1vZC5jLCBjb25maWcvdWRpdm1vZHNpNC5jOiBUbyBoZXJlLgoJKiBjb25maWcvbW4xMDIwMC90LW1uMTAyMDAgKExJQjJGVU5DU19FWFRSQSk6IFVzZSB0aGUgZ2VuZXJpYwoJQyBkaXZpc2lvbiBmdW5jdGlvbnMuCgkqIGNvbmZpZy9tNjhoYzExL3QtbTY4aGMxMS1nYXMgKExJQjJGVU5DU19FWFRSQSk6IExpa2V3aXNlLgoKVGh1IE5vdiAzMCAwMToxMjo1MiAyMDAwICBKZWZmcmV5IEEgTGF3ICAobGF3QGN5Z251cy5jb20pCgoJKiBwYS5tZCAoY29uZGl0aW9uYWwgbW92ZXMpOiBBdm9pZCBob2xlcyBpbiBvcGVyYW5kIGxpc3QuCgkobW9kLCB1bW9kIHBhdHRlcm5zKTogU2ltaWxhcmx5LgoJKHZhcmlhYmxlIGV4dHJhY3Qvc2hpZnQgcGF0dGVybnMpOiBTaW1pbGFybHkuCgoyMDAwLTExLTMwICBOZWlsIEJvb3RoICA8bmVpbGJAZWFydGhsaW5nLm5ldD4KCgkqIG9iamMvb2JqYy1hY3QuYyAobGFuZ19pbml0LCBmaW5pc2hfZmlsZSwgbWF5YmVfb2JqY19jb21wdHlwZXMsCgltYXliZV9vYmpjX2NoZWNrX2RlY2wsIGJ1aWxkX29iamNfc3RyaW5nX29iamVjdCwKCW9iamNfZGVjbGFyZV9hbGlhcywgb2JqY19kZWNsYXJlX2NsYXNzLCBidWlsZF9tZXNzYWdlX2V4cHIsCglidWlsZF9wcm90b2NvbF9leHByLCBidWlsZF9zZWxlY3Rvcl9leHByLCBidWlsZF9lbmNvZGVfZXhwciwKCWdldF9jbGFzc19pdmFycywgc3RhcnRfY2xhc3MsIHN0YXJ0X3Byb3RvY29sKTogUmVtb3ZlCglyZWR1bmRhbnQgY29kZSwgYXNzdW1pbmcgZG9pbmdfb2JqY190aGFuZyBpcyB0cnVlLgoKMjAwMC0xMS0yOSAgSm9obiBEYXZpZCBBbmdsaW4gIDxkYXZlQGhpYXVseTEuaGlhLm5yYy5jYT4KCgkqIHBhLmMgKHJlc3RvcmVfdW5zY2FsZWRfaW5kZXhfaW5zbl9jb2Rlcyk6IERlbGV0ZSBwcm9jZWR1cmUuCgkocmVjb3JkX3Vuc2NhbGVkX2luZGV4X2luc25fY29kZXMpOiBMaWtld2lzZS4KCSh1bnNjYWxlZF9pbmRleF9pbnNuX2NvZGVzKTogRGVsZXRlLgoJKG1heF91bnNjYWxlZF9pbmRleF9pbnNuX2NvZGVzX3VpZCk6IERlbGV0ZS4KCShvdXRwdXRfZnVuY3Rpb25fcHJvbG9ndWUsIG91dHB1dF9mdW5jdGlvbl9lcGlsb2d1ZSwgcGFfcmVvcmcpOgoJRG9uJ3QgdXNlIHRoZSB1bnNjYWxlZCBpbmRleCBpbnNuIGhhY2suCgoJKiBwYS5tZDogUmVtb3ZlIGhhY2sgZnJvbSBhbGwgaW5kZXggaW5zbnMgdG8gcmV2ZXJzZSB0aGUgb3BlcmFuZAoJb3JkZXIgb2YgZnJhbWUgYW5kIHN0YWNrIHBvaW50ZXIgcmVmZXJlbmNlcyBpbmNvcnJlY3RseSBjcmVhdGVkCglpbiB0aGUgcmVsb2FkIHBhc3MuCgoJKiBmdW5jdGlvbi5oIChlbWl0X3N0YXR1cyk6IERlbGV0ZSBtZW1iZXIgcmVnbm9fcG9pbnRlcl9mbGFnIGFuZAoJcmVuYW1lIHJlZ25vX3BvaW50ZXJfZmxhZ19sZW5ndGggdG8gcmVnbm9fcG9pbnRlcl9hbGlnbl9sZW5ndGguCglEZWxldGUgZGVmaW5lIGZvciBSRUdOT19QT0lOVEVSX0ZMQUcuCgkqIGludGVncmF0ZS5oIChpbmxpbmVfcmVtYXApOiBEZWxldGUgbWVtYmVyIHJlZ25vX3BvaW50ZXJfZmxhZy4KCUFkZCBtZW1iZXIgeF9yZWdub19yZWdfcnR4LgoJKiBydGwuaCAocnR4X2RlZik6IFVzZSBmcmFtZV9yZWxhdGVkIGJpdCB0byBpbmRpY2F0ZSByZWdpc3RlciBpcwoJYSBwb2ludGVyIGluIFJFRyBleHByZXNzaW9ucy4gIERlZmluZSBSRUdfUE9JTlRFUiBtYWNyby4KCSogYWxpYXMuYyAoZmluZF9iYXNlX3ZhbHVlLCBmaW5kX2Jhc2VfdGVybSk6IFVzZSBSRUdfUE9JTlRFUgoJaW5zdGVhZCBvZiBSRUdOT19QT0lOVEVSX0ZMQUcuCgkqIGNvbWJpbmUuYyAobm9uemVyb19iaXRzLCBudW1fc2lnbl9iaXRfY29waWVzKTogTGlrZXdpc2UuCgkqIGVtaXQtcnRsLmMgKGdlbl9yZWdfcnR4KTogVXNlIHJlZ25vX3BvaW50ZXJfYWxpZ25fbGVuZ3RoIGluc3RlYWQKCW9mIHJlZ25vX3BvaW50ZXJfZmxhZ19sZW5ndGguICBSZW1vdmUgY29kZSB3aGljaCByZWZlcnMgdG8KCXJlZ25vX3BvaW50ZXJfZmxhZy4KCShtYXJrX3JlZ19wb2ludGVyKTogVXNlIFJFR19QT0lOVEVSLgoJKGZyZWVfZW1pdF9zdGF0dXMpOiBSZW1vdmUgY29kZSB3aGljaCByZWZlcnMgdG8gcmVnbm9fcG9pbnRlcl9mbGFnLgoJKGluaXRfZW1pdCwgbWFya19lbWl0X3N0YXR1cyk6IExpa2V3aXNlLgoJKiBmbG93LmMgKGR1bXBfZmxvd19pbmZvKTogTGlrZXdpc2UuCgkqIGZ1bmN0aW9uLmMgKHByZXNlcnZlX3RlbXBfc2xvdHMpOiBMaWtld2lzZS4KCSogaW50ZWdyYXRlLmMgKGV4cGFuZF9pbmxpbmVfZnVuY3Rpb24sIGNvcHlfcnR4X2FuZF9zdWJzdGl0dXRlKToKCVVzZSB4X3JlZ25vX3JlZ19ydHggaW5zdGVhZCBvZiByZWdub19wb2ludGVyX2ZsYWcgZm9yIGZ1bmN0aW9uCglwb2ludGVyIGRldGVybWluYXRpb24gaW4gbWFwLgoJKiBsb29wLmMgKHN0cmVuZ3RoX3JlZHVjZSwgbWF5YmVfZWxpbWluYXRlX2Jpdl8xKTogVXNlIFJFR19QT0lOVEVSLgoJKiBwcmVkaWN0LmMgKGVzdGltYXRlX3Byb2JhYmlsaXR5KTogTGlrZXdpc2UuCgkqIHJlZ2NsYXNzLmMgKHJlY29yZF9hZGRyZXNzX3JlZ3MsIHJlZ19zY2FuX21hcmtfcmVmcyk6IExpa2V3aXNlLgoJKiB1bnJvbGwuYyAodW5yb2xsX2xvb3ApOiBVc2UgeF9yZWdub19yZWdfcnR4IGluc3RlYWQgb2YKCXJlZ25vX3BvaW50ZXJfZmxhZyBmb3IgZnVuY3Rpb24gcG9pbnRlciBkZXRlcm1pbmF0aW9uIGluIG1hcC4KCSogY29udmV4LmggKFJUWF9DT1NUUyk6IERvbid0IHRlc3QgcmVnbm9fcG9pbnRlcl9mbGFnIGFuZCB1c2UKCVJFR19QT0lOVEVSLgoJKiBwYS5jIChocHBhX2xlZ2l0aW1pemVfYWRkcmVzcywgZW1pdF9tb3ZlX3NlcXVlbmNlLCBiYXNlcmVnX29wZXJhbmQpOgoJVXNlIFJFR19QT0lOVEVSLgoJKHJlc3RvcmVfdW5zY2FsZWRfaW5kZXhfaW5zbl9jb2Rlcyk6IFJldmlzZSBjb21tZW50LgoKCSogZXhwci5jIChkb19jb21wYXJlX2FuZF9qdW1wKTogQWRkIG1pc3NpbmcgVFlQRV9NT0RFIGluIHN0YXRlbWVudC4KCjIwMDAtMTEtMzAgIEpvc2VwaCBTLiBNeWVycyAgPGpzbTI4QGNhbS5hYy51az4KCgkqIGV4dGVuZC50ZXhpOiBVcGRhdGUgZG9jdW1lbnRhdGlvbiBmb3IgYXR0cmlidXRlcy4KCjIwMDAtMTEtMjkgIERhdmlkIE8nQnJpZW4gIDxvYnJpZW5ARnJlZUJTRC5vcmc+CgoJKiBjb25maWcvYWxwaGEvZWxmLmggKElERU5UX0FTTV9PUCk6IFByb3RlY3QgdGhlICNkZWZpbmUuCgkoQVNNX0RFQ0xBUkVfT0JKRUNUX05BTUUpOiBTYW1lLgoJKEFTTV9GSUxFX0VORCk6IFNhbWUuCgkoQVNNX0ZJTklTSF9ERUNMQVJFX09CSkVDVCk6IFNhbWUuCgkoQVNNX0lERU5USUZZX0dDQyk6IFNhbWUuCgkoQVNNX0lERU5USUZZX0xBTkdVQUdFKTogU2FtZS4KCShBU01fT1VUUFVUX0NPTlNUUlVDVE9SKTogU2FtZS4KCShBU01fT1VUUFVUX0RFRik6IFNhbWUuCgkoQVNNX09VVFBVVF9ERVNUUlVDVE9SKTogU2FtZS4KCShBU01fT1VUUFVUX0VYVEVSTkFMX0xJQkNBTEwpOiBTYW1lLgoJKEFTTV9PVVRQVVRfU0VDVElPTl9OQU1FKTogU2FtZS4KCShBU01fV0VBS0VOX0xBQkVMKTogU2FtZS4KCShCU1NfU0VDVElPTl9BU01fT1ApOiBTYW1lLgoJKENPTU1PTl9BU01fT1ApOiBTYW1lLgoJKENPTlNUX1NFQ1RJT05fQVNNX09QKTogU2FtZS4KCShDT05TVF9TRUNUSU9OX0ZVTkNUSU9OKTogU2FtZS4KCShDVE9SU19TRUNUSU9OX0FTTV9PUCk6IFNhbWUuCgkoRFRPUlNfU0VDVElPTl9BU01fT1ApOiBTYW1lLgoJKEVTQ0FQRVMpOiBTYW1lLgoJKEZJTklfU0VDVElPTl9BU01fT1ApOiBTYW1lLgoJKElERU5UX0FTTV9PUCk6IFNhbWUuCgkoSURFTlRfQVNNX09QKTogU2FtZS4KCShJTklUX1NFQ1RJT05fQVNNX09QKTogU2FtZS4KCShJTlRfQVNNX09QKTogU2FtZS4KCShNQVhfT0ZJTEVfQUxJR05NRU5UKTogU2FtZS4KCShTQlNTX1NFQ1RJT05fQVNNX09QKTogU2FtZS4KCShTREFUQV9TRUNUSU9OX0FTTV9PUCk6IFNhbWUuCgkoU0VDVElPTl9GVU5DVElPTl9URU1QTEFURSk6IFNhbWUuCgkoU0VMRUNUX1NFQ1RJT04pOiBTYW1lLgoJKFNFX0NPTlNUX1NFQ1RJT04pOiBTYW1lLgoJKFNJWkVfQVNNX09QKTogU2FtZS4KCShTS0lQX0FTTV9PUCk6IFNhbWUuCgkoU1RSSU5HX0FTTV9PUCk6IFNhbWUuCgkoU1RSSU5HX0xJTUlUKTogU2FtZS4KCShUWVBFX0FTTV9PUCk6IFNhbWUuCgkoVFlQRV9PUEVSQU5EX0ZNVCk6IFNhbWUuCgoyMDAwLTExLTI5ICBOZWlsIEJvb3RoICA8bmVpbGJAZWFydGhsaW5nLm5ldD4KCgkqIGMtZGVjbC5jIChjX2RlY29kZV9vcHRpb24pOiBEb24ndCBoYW5kbGUgLWxhbmctb2JqYy4KCSogb2JqYy9sYW5nLW9wdGlvbnMuaDogUmVtb3ZlIC1sYW5nLW9iamMuCgkqIG9iamMvbGFuZy1zcGVjcy5oOiBEb24ndCBwYXNzIC1sYW5nLW9iamMgdG8gY2Mxb2JqLgoJKiBvYmpjL29iamMtYWN0LmMgKGxhbmdfaW5pdF9vcHRpb25zKTogU2V0IGNfbGFuZ3VhZ2UuCgoyMDAwLTExLTI5ICBKYWt1YiBKZWxpbmVrICA8amFrdWJAcmVkaGF0LmNvbT4KCgkqIGV4cHIuYyAoY2FuX3N0b3JlX2J5X3BpZWNlcyk6IFJlaW5pdGlhbGl6ZSBtYXhfc2l6ZSBmb3IgcmV2ZXJzZQoJdGVzdHMuCgoyMDAwLTExLTI5ICBOZWlsIEJvb3RoICA8bmVpbGJAZWFydGhsaW5nLm5ldD4KCgkqIGMtcHJhZ21hLmMgKGluaXRfcHJhZ21hKTogVXBkYXRlIGZvciBwYXJzZV9pbiB0eXBlIGNoYW5nZS4KCjIwMDAtMTEtMjkgIExhdXJ5bmFzIEJpdmVpbmlzICA8bGF1cmFzQHNvZnRob21lLm5ldD4KCgkqIGNvbmZpZ3VyZS5pbjogcmVjb2duaXplIERPUy1zdHlsZSBhYnNvbHV0ZSBwYXRocy4KCjIwMDAtMTEtMjkgIEpha3ViIEplbGluZWsgIDxqYWt1YkByZWRoYXQuY29tPgoKCSogZXhwci5oIChzdG9yZV9ieV9waWVjZXMpOiBBZGQgcHJvdG90eXBlLgoJKGNhbl9zdG9yZV9ieV9waWVjZXMpOiBMaWtld2lzZS4KCSogZXhwci5jIChzdHJ1Y3Qgc3RvcmVfYnlfcGllY2VzKTogUmVuYW1lZCBmcm9tIGNsZWFyX2J5X3BpZWNlcy4KCShjYW5fc3RvcmVfYnlfcGllY2VzKTogTmV3LgoJKHN0b3JlX2J5X3BpZWNlcyk6IE5ldy4KCShjbGVhcl9ieV9waWVjZXMpOiBOZXcuCgkoY2xlYXJfYnlfcGllY2VzXzEpOiBOZXcuCgkoc3RvcmVfYnlfcGllY2VzXzEpOiBSZW5hbWVkIGZyb20gY2xlYXJfYnlfcGllY2VzLCBoYW5kbGUgc3RvcmluZwoJYXJiaXRyYXJ5IGNvbXBpbGVyIGdlbmVyYXRlZCBjb25zdGFudHMgaW50byBtZW1vcnkgYmxvY2suCgkoc3RvcmVfYnlfcGllY2VzXzIpOiBSZW5hbWVkIGZyb20gY2xlYXJfYnlfcGllY2VzXzEsIGxpa2V3aXNlLgoJKiBidWlsdGlucy5jIChjX3JlYWRzdHIpOiBOZXcuCgkoYnVpbHRpbl9tZW1jcHlfcmVhZF9zdHIpOiBOZXcuCgkoZXhwYW5kX2J1aWx0aW5fbWVtY3B5KTogSWYgc3JjIGlzIHN0cmluZyBjb25zdGFudCBhbmQKCWVtaXRfYmxvY2tfbW92ZSB3b3VsZCBtb3ZlIGl0IGJ5IHBpZWNlcywgY29tcHV0ZSBpbnRlZ2VyIGNvbnN0YW50cwoJZnJvbSB0aGUgc3RyaW5nIGFuZCBzdG9yZSBpdCBpbnRvIG1lbW9yeSBibG9jayBpbnN0ZWFkLgoJKGJ1aWx0aW5fc3RybmNweV9yZWFkX3N0cik6IE5ldy4KCShleHBhbmRfYnVpbHRpbl9zdHJuY3B5KTogSWYgTiBpcyBub3QgY29uc3RhbnQgemVybyBhbmQgY19zdHJsZW4gZG9lcwoJbm90IHJldHVybiBJTlRFR0VSX0NTVCwgZG9uJ3Qgb3B0aW1pemUuCglJZiBOIGlzIGxhcmdlciB0aGFuIHN0cmxlbihzcmMpICsgMSwgdHJ5IHRvIGNvcHkgdGhlIHN0cmluZwoJaW5jbHVkaW5nIHBhZGRpbmcgd2l0aCBzdG9yZV9ieV9waWVjZXMuCgkoZXhwYW5kX2J1aWx0aW5fc3RyY21wKTogSWYgYm90aCBhcmd1bWVudHMgaGF2ZSBzaWRlIGVmZmVjdHMsIGRvbid0CglvcHRpbWl6ZS4KCShleHBhbmRfYnVpbHRpbl9mcHV0cyk6IElmIFNUUiBoYXMgc2lkZSBlZmZlY3RzLCBkb24ndCBvcHRpbWl6ZS4KCjIwMDAtMTEtMjkgIFJpY2hhcmQgRWFybnNoYXcgIDxyZWFybnNoYUBhcm0uY29tPgoKCSogYXJtLm1kIChzaWJjYWxsLCBzaWJjYWxsX3ZhbHVlLCBzaWJjYWxsX2luc24sIHNpYmNhbGxfdmFsdWVfaW5zbik6CglBZGQgdXNlIG9mIGxpbmsgcmVnaXN0ZXIuCgoyMDAwLTExLTI5ICBKb3NlcGggUy4gTXllcnMgIDxqc20yOEBjYW0uYWMudWs+CgoJKiBleHRlbmQudGV4aTogVXBkYXRlIGRvY3VtZW50YXRpb24gZm9yIGRlZmF1bHQgZm9ybWF0IGF0dHJpYnV0ZXMuCgpUdWUgTm92IDI4IDIxOjU2OjQ1IDIwMDAgIEplZmZyZXkgQSBMYXcgIChsYXdAY3lnbnVzLmNvbSkKCgkqIHBhL3BhLTY0LmggKEFTTV9PVVRQVVRfU0VDVElPTl9OQU1FKTogVXNlIGEgaGFzaCB0YWJsZSwgbm90CglhIGxpc3QsIHRvIGtlZXAgdHJhY2sgb2YgdGhlIHNlY3Rpb25zLgoKMjAwMC0xMS0yOCAgTmljayBDbGlmdG9uICA8bmlja2NAcmVkaGF0LmNvbT4KCgkqIGNvbmZpZy9hcm0vYXJtLm1kIChwaWNfbG9hZF9hZGRyKTogU3BsaXQgaW50bwoJcGljX2xvYWRfYWRkcl9hcm0gYW5kIHBpY19sb2FkX2FkZHJfdGh1bWIuCgoJKiBjb25maWcvYXJtL2FybS5jIChsZWdpdGltaXplX3BpY19hZGRyZXNzKTogR2VuZXJhdGUgZWl0aGVyCglBUk0gb3IgVGh1bWIgdmVyc2lvbnMgb2YgcGljX2xvYWRfYWRkci4KCShhcm1fZmluYWxpemVfcGljKTogR2VuZXJhdGUgZWl0aGVyIEFSTSBvciBUaHVtYiB2ZXJzaW9ucyBvZgoJcGljX2xvYWRfYWRkci4KCjIwMDAtMTEtMjggIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CgoJKiBjYWxscy5jIChleHBhbmRfY2FsbCk6IERlZmVyIGNvbnN0L3B1cmUgTk9fREVGRVJfUE9QIHVudGlsCglhZnRlciBzaWJjYWxsIGRvX3BlbmRpbmdfc3RhY2tfYWRqdXN0LgoKV2VkIE5vdiAyOSAwMDowODoyMyAyMDAwICBKIm9ybiBSZW5uZWNrZSA8YW15bGFhckByZWRoYXQuY29tPgoKCSoganVtcC5jIChkZWxldGVfaW5zbik6IENoZWNrIHRoYXQgUkVHX0xBQkVMIG5vdGUgYWN0dWFsbHkgY29udGFpbnMKCWEgQ09ERV9MQUJFTC4KCjIwMDAtMTEtMjggIE5laWwgQm9vdGggIDxuZWlsYkBlYXJ0aGxpbmcubmV0PgoKCSogYy1jb21tb24uaDogUmVtb3ZlIGZsYWdfZGlncmFwaHMuCgkqIGMtZGVjbC5jOiBSZW1vdmUgZmxhZ19kaWdyYXBocy4KCShjX2RlY29kZV9vcHRpb24pOiBEb24ndCBzZXQgaXQuCgkqIGMtbGV4LmMgKGluaXRfY19sZXgpOiBEb24ndCBkbyBhbnl0aGluZyBmb3IgZGlncmFwaHMuCgoyMDAwLTExLTI4ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEByZWRoYXQuY29tPgoKCSogYy1wYXJzZS5pbiAoZmluaXNoX3BhcnNlKTogVXBkYXRlIGZvciBwYXJzZV9pbiB0eXBlIGNoYW5nZS4KCShfeXlsZXgpOiBMaWtld2lzZS4KCjIwMDAtMTEtMjggIE5laWwgQm9vdGggIDxuZWlsYkBlYXJ0aGxpbmcubmV0PgoKCSogY3BwbWFjcm8uYyAoY3BwX3NjYW5fYnVmZmVyX25vb3V0cHV0KTogVGFrZSBhIGJvb2xlYW4KCWluZGljYXRpbmcgd2hldGhlciB0byBzY2FuIGFsbCBidWZmZXJzIG9uIHRoZSBzdGFjayBvcgoJanVzdCBvbmUuCgkqIGNwcGluaXQuYyAoZG9faW5jbHVkZXMpOiBVcGRhdGUuCgkqIGNwcG1haW4uYyAobWFpbik6IFVwZGF0ZS4KCSogY3BwbGliLmg6IFVwZGF0ZSBwcm90b3R5cGUuCgoyMDAwLTExLTI4ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEByZWRoYXQuY29tPgoKCSogZ2Vub3V0cHV0LmMgKHZhbGlkYXRlX2luc25fb3BlcmFuZHMpOiBOZXcuCgkoZ2VuX2luc24pOiBDYWxsIGl0LgoKCSogY29uZmlnL2FscGhhL2FscGhhLm1kIChkaXZtb2RzaV9pbnRlcm5hbCk6IFJlbnVtYmVyIG9wZXJhbmRzLgoJKGRpdm1vZGRpX2ludGVybmFsKTogTGlrZXdpc2UuCgkqIGNvbmZpZy9hcm0vYXJtLm1kIChhbmRzaTNfY29tcGFyZTBfc2NyYXRjaCk6IExpa2V3aXNlLgoJKiBjb25maWcvaTk2MC9pOTYwLm1kIChicmFuY2ggcGF0dGVybnMpOiBMaWtld2lzZS4KCSogY29uZmlnL2lhNjQvaWE2NC5tZCAodGJpdF9hbmRfMCk6IExpa2V3aXNlLgoJKHRiaXRfYW5kXzEsIHRiaXRfb3JfMCwgdGJpdF9vcl8xKTogTGlrZXdpc2UuCgkqIGNvbmZpZy9tNjhrL202OGsubWQgKHplcm9fZXh0cmFjdCBtZW1vcnkgcGF0dGVybnMpOiBMaWtld2lzZS4KCSogY29uZmlnL21pcHMvbWlwcy5tZCAoZGl2bW9kc2k0X2ludGVybmFsKTogTGlrZXdpc2UuCgkoZGl2bW9kZGk0X2ludGVybmFsKTogTGlrZXdpc2UuCgkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLm1kIChjYWxsIHBhdHRlcm5zKTogTGlrZXdpc2UuCgkqIGNvbmZpZy9zaC9zaC5tZCAobW92c2lfeSk6IExpa2V3aXNlLgoJKiBjb25maWcvc3BhcmMvc3BhcmMubWQ6IENvbW1lbnQgb3V0IGlmIDAgdjhwIHNoaWZ0IHBhdHRlcm4uCgoyMDAwLTExLTI4ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEByZWRoYXQuY29tPgoKCSogY29uZmlnLmdjYzogS2lsbCByZXNpZHVhbCBweXJhbWlkIHN1cHBvcnQuCgoyMDAwLTExLTI4ICBOZWlsIEJvb3RoICA8bmVpbGJAZWFydGhsaW5nLm5ldD4KCgkqIGMtbGV4LmggKHBhcnNlX2luKTogQ2hhbmdlIHBhcnNlX2luIHRvIGEgY3BwX3JlYWRlciAqLgoJKiBjLWRlY2wuYyAoY19kZWNvZGVfb3B0aW9uKTogVXBkYXRlIHRvIG1hdGNoLgoJKiBjLWxleC5jIChpbml0X2NfbGV4LCB5eXBhcnNlKTogVXBkYXRlIHRvIG1hdGNoLgoJKiBjLWxhbmcuYyAobGFuZ19pbml0X29wdGlvbnMpOiBVc2UgY3BwX2NyZWF0ZV9yZWFkZXIuCgkqIGNwcGluaXQuYyAoY3BwX2luaXQpOiBSZW5hbWUgaW5pdGlhbGl6ZS4KCShjcHBfcmVhZGVyX2luaXQpOiBSZW5hbWUgY3BwX2NyZWF0ZV9yZWFkZXIuICBDcmVhdGUgdGhlCglyZWFkZXIuICBJbml0aWFsaXplIGNwcGxpYiBpZiBhcHByb3ByaWF0ZS4KCSogY3BwbGliLmggKGNwcF9jcmVhdGVfcmVhZGVyKSBOZXcgcHJvdG90eXBlLgoJKGNwcF9pbml0LCBjcHBfcmVhZGVyX2luaXQpOiBEZWxldGUgcHJvdG90eXBlcy4KCSogY3BwbWFpbi5jIChnZW5lcmFsX2luaXQsIHNldHVwX2NhbGxiYWNrcyk6IE5ldyBmdW5jdGlvbnMuCgkobWFpbik6IFVzZSB0aGVtLgoJKiBmaXgtaGVhZGVyLmMgKHNjYW5faW4pOiBDaGFuZ2UgdHlwZSB0byBjcHBfcmVhZGVyICouCgkocmVhZF9zY2FuX2ZpbGUpOiBVcGRhdGUgZm9yIG5ldyBjcHBsaWIgaW50ZXJmYWNlIGFuZCBzY2FuX2luIHR5cGUuCgoJKiBjcC9kZWNsLmMgKHBhcnNlX2luKTogQ2hhbmdlIHRvIGNwcF9yZWFkZXIgKi4KCShsYW5nX2RlY29kZV9vcHRpb24pOiBVcGRhdGUuCgkqIGNwL2xleC5jIChsYW5nX2luaXRfb3B0aW9ucyk6IFVzZSBuZXcgY3BwbGliIGludGVyZmFjZS4KCShpbml0X2NwX3ByYWdtYSwgZmluaXNoX3BhcnNlLCBoYW5kbGVfcHJhZ21hX2ltcGxlbWVudGF0aW9uKTogVXBkYXRlLgoJKiBjcC9zcGV3LmMgKHJlYWRfdG9rZW4pOiBVcGRhdGUuCgkqIG9iamMvb2JqYy1hY3QuYyAobGFuZ19pbml0X29wdGlvbnMpOiBVcGRhdGUgbmV3IGNwcGxpYiBpbnRlcmZhY2UuCgoyMDAwLTExLTI4ICBKYWt1YiBKZWxpbmVrICA8amFrdWJAcmVkaGF0LmNvbT4KCgkqIGxvb3AuYyAobG9hZF9tZW1zKTogQXZvaWQgdXNpbmcgbmV4dF9sYWJlbCB0byBmaW5kIGVuZF9sYWJlbC4gSWYKCWp1bXBpbmcgb3V0c2lkZSBvZiB0aGUgbG9vcCAob3RoZXIgdGhhbiBsb29wIGVuZCksIGRvbid0IGhvaXN0IE1FTXMKCW91dCBvZiBsb29wLgoKMjAwMC0xMS0yOCAgSmFuIEh1Ymlja2EgIDxqaEBzdXNlLmN6PgoKCSogY2FsbHMuYyAoZXhwYW5kX2NhbGwpOiBEb24ndCBkaXNhYmxlIHRhaWwgcmVjdXJzaW9uIGJhc2VkCglvbiB0aGUgbG9vcCBuZXN0LgoKMjAwMC0xMS0yOCAgTmVpbCBCb290aCAgPG5laWxiQGVhcnRobGluZy5uZXQ+CgoJKiB0cmFkY3BwLmMgKGVudW0gbm9kZV90eXBlKTogTmV3IGhhc2ggdHlwZXMgVF9BU1NFUlQsIFRfVU5BU1NFUlQuCgkoc3RydWN0IGRpcmVjdGl2ZSk6IERyb3AgNHRoIGFyZ3VtZW50IGZyb20gaGFuZGxlcnMuCgkoZG9fZGVmaW5lLCBkb19saW5lLCBkb19pbmNsdWRlLCBkb191bmRlZiwgZG9fZWxzZSwgZG9fZWxpZiwKCWRvX2VuZGlmKTogU2ltaWxhcmx5LgoJKGRvX2Fzc2VydCwgZG9fdW5hc3NlcnQsIGRvX2lmZGVmLCBkb19pZm5kZWYpOiBOZXcgaGFuZGxlcnMuCgkoZG9faWZ4ZGVmKTogVXBkYXRlIGFzIGNvbW1vbiBoYW5kbGVyIG9mIGRvX2lmZGVmIGFuZCBkb19pZm5kZWYuCgkobWFrZV9kZWZpbml0aW9uLCBtYWtlX3VuZGVmKTogVGFrZSBhIGNvbnN0IGNoYXIqLgoJKG1ha2VfYXNzZXJ0aW9uKTogTmV3IGZ1bmN0aW9uLgoJKHN0cnVjdCBkaXJlY3RpdmVfdGFibGUpOiBVcGRhdGUuCgkobWFpbik6IEhhbmRsZSAtQSBjb21tYW5kIGxpbmUgYXJndW1lbnQuCgkoaGFuZGxlX2RpcmVjdGl2ZSk6IERyb3AgZm91cnRoIGhhbmRsZXIgYXJndW1lbnQuCgoyMDAwLTExLTI4ICBCZXJuZCBTY2htaWR0ICA8YmVybmRzQHJlZGhhdC5jby51az4KCgkqIHNpbXBsaWZ5LXJ0eC5jIChjc2VsaWJfcmVjb3JkX3NldHMpOiBJZ25vcmUgc2V0cyB3aG9zZSBkZXN0aW5hdGlvbgoJaXMgYW55dGhpbmcgYnV0IFJFRyBvciBNRU0sIGJ1dCBsb29rIGluc2lkZSBTVFJJQ1RfTE9XX1BBUlQuCgpUdWUgTm92IDI4IDA5OjUzOjUwIDIwMDAgIFJpY2hhcmQgS2VubmVyICA8a2VubmVyQHZsc2kxLnVsdHJhLm55dS5lZHU+CgoJKiBzeXN0ZW0uaCAoSVNfRElSX1NFUEFSQVRPUik6IFVzZSB1cHBlcmNhc2UgbWFjcm8gbmFtZS4KCShJU19BQlNPTFVURV9QQVRITkFNRSk6IE5ldyBtYWNyby4KCSogZ2NjLmMgKGZpbmRfYV9maWxlLCBwcm9jZXNzX2NvbW1hbmQsIGRvX3NwZWNfMSwgbWFpbik6IFVzZSBpdC4KCjIwMDAtMTEtMjggIEpha3ViIEplbGluZWsgIDxqYWt1YkByZWRoYXQuY29tPgoKCSogY29uZmlnL2kzODYvaTM4Ni5tZCAodHJ1bmN4ZnNmMl8yKTogRml4IHByZWRpY2F0ZS4KCjIwMDAtMTEtMjcgIEppbSBXaWxzb24gIDx3aWxzb25AcmVkaGF0LmNvbT4KCgkqIHJlbG9hZDEuYyAocmVsb2FkKTogVXNlIEhPU1RfV0lERV9JTlQgZm9yIG9sZF9mcmFtZV9zaXplLgoKMjAwMC0xMS0yNyAgTWF0dGhpYXMgS2xvc2UgIDxkb2tvQGNzLnR1LWJlcmxpbi5kZT4KCgkqIGV4dGVuZC50ZXhpIChOZXN0ZWQgRnVuY3Rpb25zKTogVXBkYXRlIFVSTCBvZiBVc2VuaXggcGFwZXIuCgoyMDAwLTExLTI3ICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogZnVuY3Rpb24uYyAoZnJlZV9hZnRlcl9jb21waWxhdGlvbik6IENsZWFyIHhfY2xvYmJlcl9yZXR1cm5faW5zbi4KCjIwMDAtMTEtMjcgIE5laWwgQm9vdGggIDxuZWlsYkBlYXJ0aGxpbmcubmV0PgoKCSogY3BwaW5pdC5jIChjcHBfcmVhZGVyX2luaXQpOiBSZW1vdmUgaGFuZGxpbmcgb2Ygd2Fybl9wYXN0ZQoJY29tbWFuZCBsaW5lIG9wdGlvbnMuCgkoY3BwX2hhbmRsZV9vcHRpb24pOiBTaW1pbGFybHkuCgkqIGNwcGxpYi5oIChzdHJ1Y3QgY3BwX29wdGlvbnMpOiBSZW1vdmUgd2Fybl9wYXN0ZS4KCSogY3BwbWFjcm8uYyAocGFzdGVfdG9rZW5zKTogQXBhcnQgZnJvbSBhc3NlbWJsZXIsIG1ha2UKCXVucGFzdGVhYmxlIHRva2VuIHdhcm5pbmcgbWFuZGF0b3J5LgoKMjAwMC0xMS0yNyAgTmVpbCBCb290aCAgPG5laWxiQGVhcnRobGluZy5uZXQ+CgoJKiB0cmFkY3BwLmMgKGVudW0gcGVuZGluZ19kaXJfdCwgc3RydWN0IHBlbmRpbmdfZGlyKTogTmV3LgoJKG1haW4pOiBBbGxvY2F0ZSBhIHBlbmRpbmcgZGlyZWN0aXZlIHNldCBvZiB0aGVzZS4gIFVzZSBpdC4KCU1lcmdlIGhhbmRsaW5nIG9mIC1EIGFuZCAtVS4gIFVwZGF0ZSBoYW5kbGluZyBvZiBwZW5kaW5nCglkaXJlY3RpdmVzLiAgRnJlZSB0aGUgbWVtb3J5IGFmdGVyIHVzZS4KCjIwMDAtMTEtMjcgIEJlcm5kIFNjaG1pZHQgIDxiZXJuZHNAcmVkaGF0LmNvLnVrPgoKCSogZmxvdy5jIChlbnRyeV9leGl0X2Jsb2Nrcyk6IEFkZCBlbnRyeSBmb3IgY29uZF9sb2NhbF9zZXQuCgkoc3RydWN0IHByb3BhZ2F0ZV9ibG9ja19pbmZvKTogQWRkIG5ldyBtZW1iZXIgY29uZF9sb2NhbF9zZXQuCgkocHJvcGFnYXRlX2Jsb2NrKTogQWNjZXB0IG5ldyBhcmcgY29uZF9sb2NhbF9zZXQuICBBbGwgY2FsbGVycwoJY2hhbmdlZC4KCShpbml0X3Byb3BhZ2F0ZV9ibG9ja19pbmZvKTogTGlrZXdpc2UuCgkoY2FsY3VsYXRlX2dsb2JhbF9yZWdzX2xpdmUpOiBBbGxvY2F0ZSAmIGZyZWUgY29uZF9sb2NhbF9zZXQuICBBbHdheXMKCXJlc2NhbiBpZiB0aGVyZSdzIG92ZXJsYXAgYmV0d2VlbiBjb25kX2xvY2FsX3NldCBhbmQgbmV3X2xpdmVfYXRfZW5kLgoJKG1hcmtfc2V0XzEpOiBTZXQgYml0cyBlaXRoZXIgaW4gY29uZF9sb2NhbF9zZXQgb3IgbG9jYWxfc2V0LCBhcwoJYXBwcm9wcmlhdGUuCgkqIGJhc2ljLWJsb2NrLmggKHN0cnVjdCBiYXNpY19ibG9ja19kZWYpOiBOZXcgZmllbGQgY29uZF9sb2NhbF9zZXQuCgkocHJvcGFnYXRlX2Jsb2NrLCBpbml0X3Byb3BhZ2F0ZV9ibG9ja19pbmZvKTogVXBkYXRlIHByb3RvdHlwZXMuCgpNb24gTm92IDI3IDE3OjI5OjQ0IDIwMDAgIGtheiBLb2ppbWEgPGtrb2ppbWFAcnIuaWlqNHUub3IuanA+CgoJKiBnY2MvY29uZmlnL3NoL3NoLm1kICh1ZGl2c2kzX2k0LCB1ZGl2c2kzX2k0X3NpbmdsZSk6IENsb2JiZXIKCVQgcmVnaXN0ZXIuCgoyMDAwLTExLTI3ICBSaWNoYXJkIEVhcm5zaGF3ICA8cmVhcm5zaGFAYXJtLmNvbT4KCgkqIGFybS5jIChzZWxlY3RfZG9taW5hbmNlX2NjX21vZGUpOiBIYW5kbGUgbmV3IHdheSB0aGF0IGNvbWJpbmUKCWNhbm9uaWNhbGl6ZXMgY29uZGl0aW9uYWwgY29tcGFyZXMuCgkoYXJtX3NlbGVjdF9jY19tb2RlKTogTGlrZXdpc2UuCgkqIGFybS5tZDogR2FyYmFnZSBjb2xsZWN0IHNvbWUgZGVhZCBjb2RlLgoJKGNtcF9hbmQsIGNtcF9pb3IpOiBOZXcgcGF0dGVybnMuCgkoc3BsaXR0ZXIgZm9yIGNvbmRpdGlvbmFsIG1vdmUgd2l0aCBpbnZlcnRlZCBmYWxzZSk6IFVzZSBjb25kX2V4ZWMKCWFuZCBoYW5kbGUgdW5vcmRlcmVkIGNvbXBhcmlzb25zLgoKTW9uIE5vdiAyNyAxNzoyMjo1NiBNRVQgMjAwMCAgSmFuIEh1Ymlja2EgIDxqaEBzdXNlLmN6PgoKCSogaTM4Ni5jIChpeDg2X2ZvcmNlX3RvX21lbW9yeSwgaXg4Nl9mcmVlX2Zyb21fbWVtb3J5KTogTmV3LgoJKiBpMzg2LXByb3Rvcy5oIChpeDg2X2ZvcmNlX3RvX21lbW9yeSwgaXg4Nl9mcmVlX2Zyb21fbWVtb3J5KTogRGVjbGFyZQoJKiBpMzg2Lm1kIChmbG9hdD9pP2YsIGludC9mcCBvcGVyYXRpb25zKTogUmV3cml0ZSBzcGxpdGVycyB0byB1c2UKCWl4ODZfZm9yY2VfdG9fbWVtb3J5IGFuZCBpeDg2X2ZyZWVfZnJvbV9tZW1vcnkuCgoyMDAwLTExLTI3ICBSaWNoYXJkIEVhcm5zaGF3ICA8cmVhcm5zaGFAYXJtLmNvbT4KCgkqIGFybS5tZCAoYXJtX2FkZGRpMywgYWRkZGlfc2VzaWRpX2RpLCBhZGRkaV96ZXNpZGlfZGksIGFybV9hZGRzaTMsCglhcm1fc3Vic2kzX2luc24sIGFuZGRpX3plc2lkaV9kaSwgYXJtX2FuZHNpM19pbnNuLCBhbmRkaV9ub3RkaV9kaSwKCWFuZGRpX25vdHplc2lkaV9kaSwgYW5kZGlfbm90c2VzaWRpX2RpLCBhcm1faW9yc2kzLAoJb25lX2NtcGxkaTIpOiBNZXJnZSB3aXRoIHNwbGl0dGVycyB0byBjcmVhdGUgZGVmaW5lX2luc25fYW5kX3NwbGl0CglwYXR0ZXJucy4gIFJlbW92ZSByZWR1bmRhbnQgc3BsaXRzLgoJKHBlZXBob2xlMiBmb3IgYWRkOlNJIG9mIGludmFsaWQgaW1tZWRpYXRlKTogTmV3LgoJKHBlZXBob2xlMiBmb3IgbWludXM6U0kgb2YgaW52YWxpZCBpbW1lZGlhdGUpOiBOZXcuCgkocGVlcGhvbGUyIGZvciBpb3I6U0kgb2YgaW52YWxpZCBpbW1lZGlhdGUpOiBOZXcuCgkocGVlcGhvbGUgZm9yIG1lcmdlIG9mIG1vdmUgYW5kIGNvbXBhcmUpOiBDb252ZXJ0IG90IHBlZXBob2xlMi4KCShhZGRzZjMsIGFkZGRmMyk6IE1hcmsgYXMgY29tbXV0YXRpdmUuCgoJKiBhcm0ubWQgKHRodW1iIHBlZXBob2xlIGZvciBtZXJnaW5nIHN0YWNrIGFkanVzdG1lbnRzKTogQ29udmVydCB0bwoJcGVlcGhvbGUyLgoKMjAwMC0xMS0yNyAgQmVybmQgU2NobWlkdCAgPGJlcm5kc0ByZWRoYXQuY28udWs+CgoJKiBoYWlmYS1zY2hlZC5jIChwcmludF9wYXR0ZXJuKTogUHJldHRpZXIgb3V0cHV0IGZvciBDT05EX0VYRUMuCgoJKiByZWxvYWQxLmMgKHJlbG9hZF9jc2Vfc2ltcGxpZnlfc2V0KTogUGFzcyBkb3duIG1vZGUgdG8gY3NlbGliX2xvb2t1cC4KCShyZWxvYWRfY3NlX3NpbXBsaWZ5X29wZXJhbmRzKTogRG8gbm90aGluZyBhYm91dCBvcGVyYW5kcyB3aGVyZSBib3RoCgl0aGUgb3BlcmFuZCBhbmQgdGhlIG1hdGNoX29wZXJhbmQgZmFpbCB0byBnaXZlIHVzIGEgbW9kZS4KCSogc2ltcGxpZnktcnR4LmMgKHdyYXBfY29uc3RhbnQpOiBOZXcgZnVuY3Rpb24uCgkoZW50cnlfYW5kX3J0eF9lcXVhbF9wKTogRXhjZXB0IGludGVnZXIgY29uc3RhbnRzIHRvIGNvbWUgd3JhcHBlZCBpbiBhCglDT05TVCBkZXNjcmliaW5nIHRoZSBwcm9wZXIgbW9kZS4KCShydHhfZXF1YWxfZm9yX2NzZWxpYl9wKTogUGFzcyBkb3duIG1vZGVzIHRvIHJlY3Vyc2l2ZSBjYWxscyBvZgoJY3NlbGliX2xvb2t1cC4KCShjc2VsaWJfbG9va3VwX21lbSk6IENhbGwgd3JhcF9jb25zdGFudCBvbiB0aGUgcnR4IHRoYXQgaXMgcGFzc2VkIHRvCglodGFiX2ZpbmRfc2xvdF93aXRoX2hhc2guCgkoY3NlbGliX2xvb2t1cCk6IExpa2V3aXNlLgoKCUJhc2VkIG9uIGEgcGF0Y2ggZnJvbSBHZW9mZiBLZWF0aW5nIDxnZW9mZmtAcmVkaGF0LmNvbT46CgkqIGxvb3AuYyAoYmFzaWNfaW5kdWN0aW9uX3Zhcik6IElmIGEgUkVHIGlzIHNldCBmcm9tIHNvbWV0aGluZwoJdGhhdCBpcyBub3QgYSBiaXYsIHRoZW4gdGhlIFJFRyBpcyBub3QgYSBiaXYuICBFdmVuIGlmIGl0IGlzCgllYXJsaWVyIHNldCBmcm9tIHNvbWV0aGluZyB0aGF0IGlzIGEgYml2LgoKMjAwMC0xMS0yNyAgQWxleGFuZHJlIE9saXZhICA8YW9saXZhQHJlZGhhdC5jb20+CgoJKiBjb25maWd1cmUuaW4gKGV4dHJhX29ianMpOiBFbmNsb3NlIGV4dHJhX2hlYWRlcnMgaW4gcXVvdGVzLgoJKiBjb25maWd1cmU6IFJlYnVpbHQuCgoyMDAwLTExLTI3ICBOZWlsIEJvb3RoICA8bmVpbGJAZWFydGhsaW5nLm5ldD4KCgkqIGMtbGV4LmMgKGNiX2VudGVyX2ZpbGUsIGNiX2xlYXZlX2ZpbGUsIGNiX3JlbmFtZV9maWxlKToKCUNvbWJpbmUgaW50byB0aGUgbmV3IGZ1bmN0aW9uIGNiX2NoYW5nZV9maWxlLgoJKGluaXRfY19sZXgpOiBVcGRhdGUuCgkqIGNwcGZpbGVzLmMgKHN0YWNrX2luY2x1ZGVfZmlsZSk6IFVzZSBfY3BwX2RvX2ZpbGVfY2hhbmdlLgoJKGNwcF9zeXNoZHJfZmxhZ3MpOiBEZWxldGUuCgkqIGNwcGhhc2guaCAoX2NwcF9kb19maWxlX2NoYW5nZSk6IE5ldyBwcm90b3R5cGUuCglNb3ZlIHN0cnVjdCBjcHBfYnVmZmVyIGhlcmUgZnJvbS4uLgoJKiBjcHBsaWIuaCAoc3RydWN0IGNwcF9idWZmZXIpOiAuLi4gaGVyZS4KCShlbnVtIGNwcF9mY19yZWFzb24sIHN0cnVjdCBjcHBfZmlsZV9sb2MsCglzdHJ1Y3RfY3BwX2ZpbGVfY2hhbmdlLCBjaGFuZ2VfZmlsZSk6IE5ldy4KCShlbnRlcl9maWxlLCBsZWF2ZV9maWxlLCByZW5hbWVfZmlsZSwgY3BwX3N5c2hkcl9mbGFncyk6IERlbGV0ZS4KCSogY3BwbGliLmMgKGRvX2xpbmUpOiBVcGRhdGUgZm9yIG5ldyBjYl9jaGFuZ2VfZmlsZSBjYWxsYmFjay4KCShfY3BwX2RvX2ZpbGVfY2hhbmdlKTogTmV3IGZ1bmN0aW9uLgoJKF9jcHBfcG9wX2J1ZmZlcik6IFVwZGF0ZSB0byB1c2UgaXQuCgkqIGNwcG1haW4uYyAobW92ZV9wcmludGVyKTogRGVsZXRlLgoJKG1haW4pOiBTZXQgdXAgc2luZ2xlIGNhbGxiYWNrIGNiX2NoYW5nZV9maWxlLgoJKGNiX2VudGVyX2ZpbGUsIGNiX2xlYXZlX2ZpbGUsIGNiX3JlbmFtZV9maWxlKTogRGVsZXRlLgoJKGNiX2NoYW5nZV9maWxlKTogTmV3LgoJKiBmaXgtaGVhZGVyLmMgKGN1cl9maWxlLCBjYl9jaGFuZ2VfZmlsZSk6IE5ldy4KCShyZWNvZ25pemVkX2Z1bmN0aW9uLCByZWFkX3NjYW5fZmlsZSk6IFVwZGF0ZS4KCSogc2Nhbi1kZWNscy5jIChzY2FuX2RlY2xzKTogVXBkYXRlLgoJKiBzY2FuLmggKHJlY29nbml6ZWRfZnVuY3Rpb24pOiBVcGRhdGUgcHJvdG90eXBlLgoKMjAwMC0xMS0yNiAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIHRyZWUuaCAobWFya190cmVlX2hhc2h0YWJsZSk6IE5ldyBmdW5jdGlvbi4KCSogdHJlZS5jIChtYXJrX3RyZWVfaGFzaHRhYmxlX2VudHJ5KTogTmV3IGZ1bmN0aW9uLgoJKG1hcmtfdHJlZV9oYXNodGFibGUpOiBMaWtld2lzZS4KCjIwMDAtMTEtMjcgIE1pY2hhZWwgTWVpc3NuZXIgIDxtZWlzc25lckByZWRoYXQuY29tPgoKCSogZDMwdi1wcm90b3MuaCAoc3JlbGF0aW9uYWxfc2lfb3BlcmF0b3IpOiBDb3JyZWN0bHkgc3BlbGwKCWZ1bmN0aW9uLgoJKHVyZWxhdGlvbmFsX3NpX29wZXJhdG9yKTogRGl0dG8uCgkocmVsYXRpb25hbF9zaV9vcGVyYXRvcik6IERpdHRvLgoJKGQzMHZfZXhwYW5kX3Byb2xvZ3VlKTogQWRkIHByb3RvdHlwZS4KCShkMzB2X2V4cGFuZF9lcGlsb2d1ZSk6IERpdHRvLgoKCSogZDMwdi5oIChPUFRJTUlaQVRJT05fT1BUSU9OUyk6IFVuZG8gTm92ZW1iZXIgMjJuZCBjaGFuZ2UuCgoJKiBkMzB2Lm1kIChtb3ZjY2NjXyopOiBEZWxldGUgbm93IHVudXNlZCBwYXR0ZXJucy4KCSg2NCBiaXQgY29tcGFyaXNvbiBzcGxpdHRlcnMpOiBSZXdyaXRlIHRvIHVzZSBDT05EX0VYRUMgaW5zdGVhZCBvZgoJSUZfVEhFTl9FTFNFLgoJKGRlZmluZV9jb25kX2V4ZWMpOiBVc2UgJ2InIHRvIHNlbGVjdCBicmFuY2ggZmxhZ3MuCgoyMDAwLTExLTI2ICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBidWlsdGlucy5jIChleHBhbmRfYnVpbHRpbl9zdHJuY21wLCBleHBhbmRfYnVpbHRpbl9zdHJuY3B5KTogTmV3CglmdW5jdGlvbnMuCgkoZXhwYW5kX2J1aWx0aW4pOiBIYW5kbGUgQlVJTFRfSU5fU1RSTkNQWSBhbmQgQlVJTFRfSU5fU1RSTkNNUC4KCgkqIGJ1aWx0aW5zLmRlZiAoQlVJTFRfSU5fU1RSTkNQWSwgQlVJTFRfSU5fU1RSTkNNUCk6IE5ldyBlbnRyaWVzLgoKCSogYy1jb21tb24uYyAoY19jb21tb25fbm9kZXNfYW5kX2J1aWx0aW5zKTogRGVjbGFyZSBidWlsdGluCglzdHJuY3B5IGFuZCBzdHJuY21wLgoKCSogZXh0ZW5kLnRleGkgKHN0cm5jbXAsIHN0cm5jcHkpOiBEb2N1bWVudCBuZXcgYnVpbHRpbnMuCgoyMDAwLTExLTI2ICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogY29uZmlnL2VsZm9zLmggKEFTTV9PVVRQVVRfU0VDVElPTl9OQU1FKTogVXNlIGEgaGFzaCB0YWJsZSwgbm90CglhIGxpc3QsIHRvIGtlZXAgdHJhY2sgb2YgdGhlIHNlY3Rpb25zLgoJKiB0bS50ZXhpIChBU01fT1VUUFVUX1NFQ1RJT05fTkFNRSk6IERvY3VtZW50IHRoZSBmYWN0IHRoYXQgdGhlCglwYXJhbWV0ZXIgcHJvdmlkZWQgd2lsbCBhbHdheXMgYmUgYSBjYW5vbmljYWwgc3RyaW5nLgoKMjAwMC0xMS0yNiAgTmVpbCBCb290aCAgPG5laWxiQGVhcnRobGluZy5uZXQ+CgoJKiBjcHBtYWNyby5jIChjcHBfc2Nhbl9idWZmZXJfbm9vdXRwdXQpOiBPbmx5IHNjYW4gdGhlCgljdXJyZW50IGJ1ZmZlci4KCjIwMDAtMTEtMjYgIEpvc2VwaCBTLiBNeWVycyAgPGpzbTI4QGNhbS5hYy51az4KCgkqIG1ha2VmaWxlLnZtczogUmVtb3ZlIEVHQ1MgcmVmZXJlbmNlcy4KCjIwMDAtMTEtMjYgIFVscmljaCBEcmVwcGVyICA8ZHJlcHBlckByZWRoYXQuY29tPgoKCSogZHdhcmYyb3V0LmMgKG91dHB1dF9maWxlX25hbWVzKTogTmV3IGZ1bmN0aW9uLiAgQ29tcHV0ZSBtaW5pbWFsCgljb21iaW5hdGlvbiBvZiBkaXJlY3RvcnkgYW5kIGZpbGUgbmFtZSB0YWJsZSBhbmQgZW1pdCB0aGVtLgoJKG91dHB1dF9saW5lX2luZm8pOiBSZW1vdmUgY29kZSB0byBlbWl0IGRpcmVjdG9yeSBhbmQgZmlsZSBuYW1lCgl0YWJsZSBhbmQgY2FsbCBvdXRwdXRfZmlsZV9uYW1lcyBpbnN0ZWFkLgoJKGZpbGVfaW5mb19jbXApOiBIZWxwZXIgZnVuY3Rpb24gdG8gc29ydCBkaXJlY3RvcnkgbmFtZXMuCgoyMDAwLTExLTI2ICBOZWlsIEJvb3RoCTxuZWlsYkBlYXJ0aGxpbmcubmV0PgoKCSogY3BwbGliLmggKHN0cnVjdCBjcHBfcmVhZGVyKTogUmVtb3ZlIGxhbmdfYXNtLgoJKHN0cnVjdCBjcHBfb3B0aW9ucyk6IFJlbW92ZSBjODkuIE5ldyBtZW1iZXJzIGxhbmcsCglleHRlbmRlZF9udW1iZXJzLgoJKiBjcHBleHAuYyAocGFyc2VfbnVtYmVyKTogVXNlIHRoZW0uCgkqIGNwcGhhc2guaCAoVkFMSURfU0lHTik6IFVzZSB0aGVtLgoJKiBjcHBpbml0LmMgKHNldF9sYW5nLCBjcHBfc3RhcnRfcmVhZCk6IFVwZGF0ZS4KCSogY3BwbGV4LmMgKHBhcnNlX3N0cmluZywgX2NwcF9sZXhfdG9rZW4pOiBVcGRhdGUuCgkqIGNwcGxpYi5jIChfY3BwX2hhbmRsZV9kaXJlY3RpdmUpOiBVcGRhdGUuCgkqIGNwcG1hY3JvLmMgKHBhcnNlX2FyZ3MpOiBVcGRhdGUuCgkqIGNwcG1haW4uYyAoc2Nhbl9idWZmZXIpOiBVcGRhdGUuCgpTdW4gTm92IDI2IDEwOjAyOjM3IDIwMDAgIFJpY2hhcmQgS2VubmVyICA8a2VubmVyQHZsc2kxLnVsdHJhLm55dS5lZHU+CgoJKiBmb2xkLWNvbnN0LmMgKGZvbGQsIGNhc2UgQ09OVkVSVF9FWFBSKTogQWx3YXlzIHJldHVybiB0cmVlIG9mCglwcm9wZXIgdHlwZS4KCjIwMDAtMTEtMjYgIE5laWwgQm9vdGgJPG5laWxiQGVhcnRobGluZy5uZXQ+CgoJKiBNYWtlZmlsZS5pbjogUmVtb3ZlIE1BWUJFX0NQUExJQiBhbmQgbWF5YmVfY3BwbGliLgoJKiBjLWRlY2wuYzogUmVtb3ZlIHBhcnNlX2luIGRlY2xhcmF0aW9uLgoJKiBjLWxhbmcuYzogU2ltaWxhcmx5LgoJKiBjLWxleC5jOiBTaW1pbGFybHkuCgkqIGMtcGFyc2UuaW46IFNpbWlsYXJseS4KCSogYy1wcmFnbWEuYzogU2ltaWxhcmx5LgoJKiBjb25maWd1cmUuaW46IFNpbWlsYXJseS4KCSogY3AvTWFrZS1sYW5nLmluOiBTaW1pbGFybHkuCgkqIGNwL3NwZXcuYzogU2ltaWxhcmx5LgoJKiBjcC9kZWNsMi5jOiBSZW1vdmUgY2hlY2sgZm9yIGxhbmctYysrIG9wdGlvbi4KCSogY3AvbGFuZy1zcGVjcy5oOiBSZW1vdmUgLWxhbmctYysrIGZyb20gY2MxcGx1cyBjb21tYW5kIGxpbmUuCgkqIGNwL2xleC5jIChsYW5nX2luaXRfb3B0aW9ucyk6IFdpdGggY3BwX3JlYWRlcl9pbml0LCBkZWZhdWx0IHRvIEMrKy4KCSogYy1sZXguaDogQWRkIGRlY2xhcmF0aW9uIG9mIHBhcnNlX2luLgoJKiBjcHBpbml0LmM6IENhbGwgc2V0X2xhbmcgYWZ0ZXIgYWxsb2NhdGluZyBwZmlsZS0+cGVuZGluZy4KCSogY29uZmlndXJlOiBSZWdlbmVyYXRlLgoKMjAwMC0xMS0yNSAgWmFjayBXZWluYmVyZyAgPHphY2tAd29sZXJ5LnN0YW5mb3JkLmVkdT4KCgkqIGNvbWJpbmUuYyAodHJ5X2NvbWJpbmUpOiBSZW1vdmUgcmVkdW5kYW50IHRlc3QuCgoyMDAwLTExLTI1ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEByZWRoYXQuY29tPgoKCSogYy1jb21tb24uaCAoREVDTF9DX0hBUkRfUkVHSVNURVIpOiBOZXcuCgkqIGMtZGVjbC5jIChmaW5pc2hfZGVjbCk6IFNldCBpdCBmb3IgYXNtIHJlZ2lzdGVyIHZhcmlhYmxlcy4KCSogYy1zZW1hbnRpY3MuYyAoZW1pdF9sb2NhbF92YXIpOiBUZXN0IGl0IHdoZW4gaW5zdGFudGlhdGluZyBvbmUuCgoyMDAwLTExLTI1ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEByZWRoYXQuY29tPgoKCSogYy1kZWNsLmMgKGNfZXhwYW5kX2JvZHkpOiBVc2UgREVDTF9TT1VSQ0VfTElORSByYXRoZXIgdGhhbgoJbGluZW5vIGZvciB0aGUgc3RhcnQgb2YgdGhlIGZ1bmN0aW9uLgoKMjAwMC0xMS0yNSAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCgkqIGR3YXJmMm91dC5jIChmaWxlX3RhYmxlLCBmaWxlX3RhYmxlX2FsbG9jYXRlZCk6IFJlbW92ZS4KCShmaWxlX3RhYmxlX2FsbG9jYXRlZCk6IFJlbW92ZS4KCShzdHJ1Y3QgZmlsZV90YWJsZSk6IE5ldy4KCShkZWNsX2ZpbGVfdGFibGUsIGxpbmVfZmlsZV90YWJsZSk6IE5ldy4KCShwcmludF9kd2FyZl9saW5lX3RhYmxlKTogVXNlIHRoZW0uCgkoc2l6ZV9vZl9saW5lX3Byb2xvZyk6IExpa2V3aXNlLgoJKG91dHB1dF9saW5lX2luZm8pOiBMaWtld2lzZS4KCShhZGRfc3JjX2Nvb3Jkc19hdHRyaWJ1dGVzKTogTGlrZXdpc2UuCgkoZ2VuX3N1YnByb2dyYW1fZGllKTogTGlrZXdpc2UuCgkoZ2VuX3ZhcmlhYmxlX2RpZSk6IExpa2V3aXNlLgoJKGR3YXJmMm91dF9hZGRfbGlicmFyeV91bml0X2luZm8pOiBMaWtld2lzZS4KCShkd2FyZjJvdXRfbGluZSk6IExpa2V3aXNlLgoJKGxvb2t1cF9maWxlbmFtZSk6IFRha2UgYSBzdHJ1Y3QgZmlsZV90YWJsZSBhcmd1bWVudC4KCShpbml0X2ZpbGVfdGFibGUpOiBOZXcuCgkoZHdhcmYyb3V0X2luaXQpOiBVc2UgaXQuCgoyMDAwLTExLTI1ICBKb3NlcGggUy4gTXllcnMgIDxqc20yOEBjYW0uYWMudWs+CgoJKiBpbnZva2UudGV4aTogVXBkYXRlIHNlcXVlbmNlIHBvaW50cyByZWZlcmVuY2VzLgoKMjAwMC0xMS0yNSAgTmVpbCBCb290aCAgPG5laWxiQGVhcnRobGluZy5uZXQ+CgoJKiBjLWNvbW1vbi5jOiBSZW1vdmUgVVNFX0NQUExJQiBjb25kaXRpb25hbCBpbmNsdXNpb25zLgoJKiBjLWNvbW1vbi5oOiBTaW1pbGFybHkuCgkqIGMtZGVjbC5jOiBTaW1pbGFybHkuCgkqIGMtbGFuZy5jOiBTaW1pbGFybHkuCgkqIGMtbGV4LmM6IFNpbWlsYXJseS4KCSogYy1wYXJzZS5pbjogU2ltaWxhcmx5LgoJKiBjLXByYWdtYS5jOiBTaW1pbGFybHkuCgkqIGMtcHJhZ21hLmg6IFNpbWlsYXJseS4KCSogZ2NjLmM6IFNpbWlsYXJseS4KCSogdG9wbGV2LmM6IFNpbWlsYXJseS4KCSogY3AvY3AtdHJlZS5oOiBTaW1pbGFybHkuCgkqIGNwL2RlY2wyLmM6IFNpbWlsYXJseS4KCSogY3AvbGFuZy1zcGVjcy5oOiBTaW1pbGFybHkuCgkqIGNwL2xleC5jOiBTaW1pbGFybHkuCgkqIGNwL2xleC5oOiBTaW1pbGFybHkuCgkqIGNwL3NwZXcuYzogU2ltaWxhcmx5LgoJKiBqYXZhL2xhbmctb3B0aW9ucy5oOiBTaW1pbGFybHkuCgkqIG9iamMvbGFuZy1zcGVjcy5oOiBTaW1pbGFybHkuCgkqIG9iamMvb2JqYy1hY3QuYzogU2ltaWxhcmx5LgoKCSogY29uZmlndXJlLmluOiBSZW1vdmUgY29uZmlndXJlIG9wdGlvbi4KCSogY29uZmlnLmluOiBSZWdlbmVyYXRlLgoJKiBjb25maWd1cmU6IFJlZ2VuZXJhdGUuCgoyMDAwLTExLTI1ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEByZWRoYXQuY29tPgoKCSogaGFpZmEtc2NoZWQuYyAoc2NoZWRfYW5hbHl6ZV8xLCBzY2hlZF9hbmFseXplXzIsIHNjaGVkX2FuYWx5emUpOgoJUmV2ZXJ0IDIwMDAtMTEtMjIgY2hhbmdlLgoKMjAwMC0xMS0yNSAgQmVybmQgU2NobWlkdCAgPGJlcm5kc0ByZWRoYXQuY28udWs+CgoJKiBjb25maWcvaTM4Ni9pMzg2LmggKEZJWEVEX1JFR1MpOiBNYWtlIHRoZSB0aHJlZSBmbGFncyByZWdpc3RlcnMKCWZpeGVkLgoKMjAwMC0xMS0yNSAgUGhpbGlwcCBUaG9tYXMgIDxwdGhvbWFzQHN1c2UuZGU+CgkqIGNvbmZpZ3VyZS5pbiAoQUxMX0xJTkdVQVMpOiBSZW1vdmUgZW5fR0IgYW5kIGFkZCBzdi4KCSogY29uZmlndXJlOiBSZWJ1aWx0LgoKMjAwMC0xMS0yNSAgSmFrdWIgSmVsaW5layAgPGpha3ViQHJlZGhhdC5jb20+CgoJKiBjb25maWcvc3BhcmMvc3BhcmMubWQgKG11bGRpM192OHBsdXMpOiBSZW1vdmUgSCBjb25zdHJhaW50LgoJSGFuZGxlIENPTlNUX0lOVCBhcyBzZWNvbmQgYXJndW1lbnQuCgkqIGNvbmZpZy9zcGFyYy9zcGFyYy5jIChzZXRfZXh0ZW5kcyk6IFJlbW92ZSBmaXJzdCBhcmd1bWVudC4KCVByb3Blcmx5IGhhbmRsZSBBTkQsIENPTlNUX0lOVCBhbmQgQ09OU1RfRE9VQkxFLCBoYW5kbGUgSU9SLCBYT1IgYW5kCglNT1YuCgkoc3BhcmNfY2hlY2tfNjQpOiBBYm9ydCBpZiBmaXJzdCBhcmd1bWVudCBpcyBub3QgUkVHLgoJSWYgaXQgaXMgREltb2RlIFJFRywgbG9vayBhdCB0aGUgbG93ZXIgcmVnaXN0ZXIgb2YgdGhlIHJlZ2lzdGVyCglwYWlyLgoKCSogY29uZmlnL3NwYXJjL3NwYXJjLmMgKGxvYWRfcGljX3JlZ2lzdGVyLCByZXN0b3JlX3JlZ3MsCglvdXRwdXRfcmV0dXJuLCBzcGFyY192OHBsdXNfc2hpZnQsIHNwYXJjX2Z1bmN0aW9uX3Byb2ZpbGVyLAoJc3BhcmNfZnVuY3Rpb25fYmxvY2tfcHJvZmlsZXIsIHNwYXJjX2Jsb2NrX3Byb2ZpbGVyKTogRml4IG91dHB1dAoJZm9ybWF0dGluZy4KCjIwMDAtMTEtMjUgIEFsZXhhbmRyZSBPbGl2YSAgPGFvbGl2YUByZWRoYXQuY29tPgoKCSogY29uZmlnL3NoL3NoLmggKFRBUkdFVF9OT05FKTogTmV3LgoJKFRBUkdFVF9TV0lUQ0hFUyk6IEZvciBhbGwgdmFyaWFudC1zZWxlY3Rpbmcgc3dpdGNoLCB1c2UKCVRBUkdFVF9OT05FIHRvIHJlc2V0IGFsbCBvdGhlciB2YXJpYW50LXNlbGVjdGluZyBzd2l0Y2guICBBZGRlZAoJZW1wdHkgc3RyaW5ncyB0byBhdm9pZCB3YXJuaW5ncy4KCShUQVJHRVRfREVGQVVMVCk6IFNldCB0byBTSDFfQklULgoKCSogTWFrZWZpbGUuaW4gKCQoSU5UTF9UQVJHRVRTKSk6IEFkZGVkICQoQ09ORklHX0gpIGZvcgoJaW5zbi1jb2Rlcy5oLgoKCSogZ2NjL2NvbmZpZy9zaC9zaC5tZCAoc2liY2FsbGksIHNpYmNhbGxpX3BjcmVsKTogTmV3IGluc25zLgoJKHNpYmNhbGxfcGNyZWwpOiBOZXcgaW5zbl9hbmRfc3BsaXQuCgkoc2liY2FsbCwgc2liY2FsbF92YWx1ZSwgc2liY2FsbF9lcGlsb2d1ZSk6IE5ldyBleHBhbmRzLgoKCSogY29uZmlnL3NoL3NoLm1kIChHT1RhZGRyMnBpY3JlZywgc3ltR09UMnJlZywgc3ltR09UT0ZGMnJlZywKCXN5bVBMVF9sYWJlbDJyZWcsIGNhbGwsIGNhbGxfdmFsdWUpOiBEb24ndCBzZXQKCWN1cnJlbnRfZnVuY3Rpb25fdXNlc19waWNfb2Zmc2V0X3RhYmxlLgoJKiBjb25maWcvc2gvc2guaCAoQ09ORElUSU9OQUxfUkVHSVNURVJfVVNBR0UpOiBEb24ndCBtYXJrCglQSUNfT0ZGU0VUX1RBQkxFX1JFR05VTSBhcyBjYWxsX3VzZWQsIHNvIHRoYXQgY2FsY19saXZlX3JlZ3MKCXRha2VzIGl0IGludG8gYWNjb3VudC4KCShGSU5BTElaRV9QSUMpOiBEZWxldGUsIHVzZWxlc3MuCgkoTEVHSVRJTUFURV9DT05TVEFOVF9QKTogRGVsZXRlLCB1bnVzZWQuCgkqIGNvbmZpZy9zaC9zaC5jIChzaF9leHBhbmRfcHJvbG9ndWUpOiBEb24ndCB1c2UKCWN1cnJlbnRfZnVuY3Rpb25fdXNlc19waWNfb2Zmc2V0X3RhYmxlLiAgRG9uJ3Qgc3BlY2lhbC1jYXNlCglQSUNfT0ZGU0VUX1RBQkxFX1JFR05VTS4gIEluaXRpYWxpemUgaXQgaWYgaXQncyBldmVyIGxpdmUgYW5kCglQSUMgaXMgZW5hYmxlZC4KCShzaF9leHBhbmRfZXBpbG9ndWUsIGluaXRpYWxfZWxpbWluYXRpb25fb2Zmc2V0KTogRG9uJ3QKCXNwZWNpYWwgY2FzZSBQSUNfT0ZGU0VUX1RBQkxFX1JFR05VTS4KCjIwMDAtMTEtMjUgIEFsZXhhbmRyZSBPbGl2YSAgPGFvbGl2YUByZWRoYXQuY29tPiwgTklJQkUgWXV0YWthICA8Z25paWJlQG0xN24ub3JnPgoKCSogY29uZmlnL3NoL3NoLXByb3Rvcy5oIChzeW1ib2xfcmVmX29wZXJhbmQpOiBEZWNsYXJlLgoJKiBjb25maWcvc2gvc2gubWQgKFVOU1BFQ19DQUxMRVIpOiBOZXcgY29uc3RhbnQuCgkoY2FsbGlfcGNyZWwsIGNhbGxfdmFsdWVpX3BjcmVsKTogVXNlIFBJQ19SRUcuCgkoY2FsbF9wY3JlbCwgY2FsbF92YWx1ZV9wY3JlbCk6IE5ldyBpbnNuX2FuZF9zcGxpdHMuCgkoY2FsbCwgY2FsbF92YWx1ZSk6IFVzZSB0aGVtLgoJKGNhbGxfc2l0ZSk6IE5ldyBleHBhbmQuCgkoc3ltX2xhYmVsMnJlZywgc3ltUExUX2xhYmVsMnJlZyk6IEFkanVzdCB0byBob2xkIGNhbGxfc2l0ZXMuCgkqIGNvbmZpZy9zaC9zaC5oIChPVVRQVVRfQUREUl9DT05TVF9FWFRSQSkgW1VOU1BFQ19DQUxMRVJdOgoJT3V0cHV0IGNhbGxfc2l0ZSBsYWJlbC4KCShQUkVESUNBVEVfQ09ERVMpOiBBZGRlZCBzeW1ib2xfcmVmX29wZXJhbmQuCgkqIGNvbmZpZy9zaC9zaC5jIChzeW1ib2xfcmVmX29wZXJhbmQpOiBEZWZpbmUuCgkqIGVtaXQtcnRsLmMgKHRyeV9zcGxpdCk6IFByb3BhZ2F0ZSBDQUxMX0lOU05fRlVOQ1RJT05fVVNBR0UKCXRvIENBTExfSU5TTnMgaW4gdGhlIHNwbGl0IHNlcXVlbmNlLgoKMjAwMC0xMS0yNCAgTmljayBDbGlmdG9uICA8bmlja2NAcmVkaGF0LmNvbT4KCgkqIGNvbmZpZy5nY2MgKHY4NTAtKi0qKTogRGVmaW5lIGNfdGFyZ2V0X29ianMgYW5kCgljeHhfdGFyZ2V0X29ianMuCgoJKiBjb25maWcvdjg1MC90LXY4NTA6IERlZmluZSBob3cgdG8gYnVpbGQgdjg1MC1jLm8KCgkqIGNvbmZpZy92ODUwL3Y4NTAuaCAoc3RydWN0IGRhdGFfYXJlYV9zdGFja19lbGVtZW50KTogTW92ZQoJZGVmaW5pdGlvbiBoZXJlIGZyb20gdjg1MC5jLgoKCSogY29uZmlnL3Y4NTB2ODUwLmM6IEluY2x1ZGUgZ2NjLmggdG8gYXZvaWQgY29tcGlsZSB0aW1lCgl3YXJuaW5nLgoJKHB1c2hfZGF0YV9hcmVhKTogTW92ZSB0byB2ODUwLWMuYy4KCShwb3BfZGF0YV9hcmVhKTogTW92ZSB0byB2ODUwLWMuYy4KCShtYXJrX2N1cnJlbnRfZnVuY3Rpb25fYXNfaW50ZXJydXB0KTogTW92ZSB0byB2ODUwLWMuYy4KCShHSFNfZGVmYXVsdF9zZWN0aW9uX25hbWVzKTogQWxsb3cgdG8gYmUgZXhwb3J0ZWQuCgkoR0hTX2N1cnJlbnRfc2VjdGlvbl9uYW1lcyk6IEFsbG93IHRvIGJlIGV4cG9ydGVkLgoJKGRhdGFfYXJlYV9zdGFja19lbGVtZW50cyk6IEFsbG93IHRvIGJlIGV4cG9ydGVkLgoJKGdoc19wcmFnbWFfc2VjdGlvbik6IE1vdmUgdG8gdjg1MC1jLmMuCgkoZ2hzX3ByYWdtYV9pbnRlcnJ1cHQpOiBNb3ZlIHRvIHY4NTAtYy5jLgoJKGdoc19wcmFnbWFfc3RhcnR0ZGEpOiBNb3ZlIHRvIHY4NTAtYy5jLgoJKGdoc19wcmFnbWFfc3RhcnRzZGEpOiBNb3ZlIHRvIHY4NTAtYy5jLgoJKGdoc19wcmFnbWFfc3RhcnR6ZGEpOiBNb3ZlIHRvIHY4NTAtYy5jLgoJKGdoc19wcmFnbWFfZW5kdGRhKTogTW92ZSB0byB2ODUwLWMuYy4KCShnaHNfcHJhZ21hX2VuZHNkYSk6IE1vdmUgdG8gdjg1MC1jLmMuCgkoZ2hzX3ByYWdtYV9lbmR6ZGEpOiBNb3ZlIHRvIHY4NTAtYy5jLgoKCSogY29uZmlnL3Y4NTAvdjg1MC1jLmM6IE5ldyBmaWxlOiBDb250YWlucyB2ODUwIHNwZWNpZmljCglwcmFnbWEgcGFyc2luZyBmdW5jdGlvbnMuCgoyMDAwLTExLTI0ICBOaWNrIENsaWZ0b24gIDxuaWNrY0ByZWRoYXQuY29tPgoKCSogY29uZmlnLmdjYyAoZXh0cmFfb2Jqcyk6IFJlbW92ZSBkdXBsaWNhdGUgZGVzY3JpcHRpb24uCgkoY190YXJnZXRfb2Jqcyk6IE5ldyB2YXJpYWJsZS4gIENvbnRhaW5zIHRhcmdldCBzcGVjaWZpYwoJb2JqZWN0IGZpbGVzIGZvciB0aGUgZ2NjIEMgY29tcGlsZXIgb25seS4KCShjeHhfdGFyZ2V0X29ianMpOiBOZXcgdmFyaWFibGUuICBDb250YWlucyB0YXJnZXQgc3BlY2lmaWMKCW9iamVjdCBmaWxlcyBmb3IgdGhlIGd4eCBDKysgY29tcGlsZXIgb25seS4KCgkqIGNvbmZpZ3VyZS5pbiAoY190YXJnZXRfb2Jqcyk6IFN1YnN0aXR1dGUgaW4gdGhlIG1ha2VmaWxlLgoJKGN4eF90YXJnZXRfb2Jqcyk6IFN1YnN0aXR1dGUgaW4gdGhlIG1ha2VmaWxlLgoJKiBjb25maWd1cmU6IFJlZ2VuZXJhdGUuCgoJKiBNYWtlZmlsZS5pbiAoQ19UQVJHRVRfT0JKUyk6IERlZmluZSBhbmQgaW5pdGlhbGl6ZSBmcm9tCgljX3RhcmdldF9vYmpzLgoJKENYWF9UQVJHRVRfT0JKUyk6IERlZmluZSBhbmQgaW5pdGlhbGl6ZSBmcm9tCgljeHhfdGFyZ2V0X29ianMuCgkoQ19BTkRfT0JKQ19PQkpTKTogSW5jbHVkZSBDX1RBUkdFVF9PQkpTLgoKCSogY3AvTWFrZS1sYW5nLmluIChDWFhfQ19PQkpTKTogSW5jbHVkZSBDWFhfVEFSR0VUX09CSlMpLgoKCSogdG0udGV4aSAoUkVHSVNURVJfVEFSR0VUX1BSQUdNQVMpOiBBZGQgcGFyYWdyYXBoIGV4cGxhaW5pbmcKCWFib3V0IGhvdyB0aGUgdXNlIG9mIHRoZSAnY19sZXgnIGZ1bmN0aW9uIHJlcXVpcmVzIHRoZSB1c2Ugb2YKCXRoZSB0YXJnZXQgc3BlY2lmaWMsIGxhbmd1YWdlIHNwZWNpZmljIG9iamVjdCBmaWxlcyBmZWF0dXJlIG9mCgl0aGUgY29uZmlndXJhdGlvbiBtZWNoYW5pc20uCgpGcmkgTm92IDI0IDE4OjUwOjU4IDIwMDAgIFJpY2hhcmQgS2VubmVyICA8a2VubmVyQHZsc2kxLnVsdHJhLm55dS5lZHU+CgoJKiBnY2MuYyAocHJvY2Vzc19jb21tYW5kKTogVXNlIEZfT0ssIG5vdCBSX09LLgoKMjAwMC0xMS0yNCAgQXJubyBKLiBLbGFhc3NlbiAgPGFybm9AaGVoby5zbnYuanVzc2lldS5mcj4KCgkqIGZsb3cuYyAocHJpbnRfcnRsX2FuZF9hYm9ydCk6IFJlbW92ZSBBTlNJaXNtLgoKRnJpIE5vdiAyNCAxOTo1NDozNiAyMDAwICBBbGV4YW5kcmUgT2xpdmEgIDxhb2xpdmFAcmVkaGF0LmNvbT4KCgkqIGNvbmZpZy9zaC9zaC5oIChHRU5FUkFMX1JFR0lTVEVSX1AsCglHRU5FUkFMX09SX0FQX1JFR0lTVEVSX1AsIEZQX1JFR0lTVEVSX1AsIFhEX1JFR0lTVEVSX1AsCglGUF9PUl9YRF9SRUdJU1RFUl9QLCBGUF9BTllfUkVHSVNURVJfUCk6IE5ldyBtYWNyb3MuICBVc2UgdGhlbQoJYWxsIG92ZXIuCgkoU1BFQ0lBTF9SRUcpOiBSZW5hbWVkIHRvIFNQRUNJQUxfUkVHSVNURVJfUC4KCSogY29uZmlnL3NoL3NoLmM6IFVzZSBuZXcgbWFjcm9zLgoJKiBjb25maWcvc2gvc2gubWQ6IExpa2V3aXNlLgoKRnJpIE5vdiAyNCAxOTo0NjoxNiAyMDAwICBBbGV4YW5kcmUgT2xpdmEgIDxhb2xpdmFAcmVkaGF0LmNvbT4KCgkqIGNvbmZpZy9zaC9zaC5tZDogQ2xvYmJlciBNQUNIX1JFRyBhbmQgTUFDTF9SRUcgaW4gU0ltb2RlLAoJaW5zdGVhZCBvZiBqdXN0IE1BQ0hfUkVHIGluIERJbW9kZS4gIEFsd2F5cyByZWZlciB0byBGUFNDUl9SRUcKCWluIFBTSW1vZGUuCgpGcmkgTm92IDI0IDIyOjM3OjQxIDIwMDAgIERlbmlzIENoZXJ0eWtvdiAgPGRlbmlzY0BvdmVydGEucnU+CgoJKiBjb25maWcvYXZyL2F2ci5jIChvdXRfdHN0aGksb3V0X3RzdHNpKTogVGVzdCBzaW1wbGlmaWNhdGlvbiBidWcKCWZpeGVkLgoJKG1hY2hpbmVfZGVwZW5kZW50X3Jlb3JnKTogV3Jvbmcgb3B0aW1pemF0aW9uIGJhc2VkIG9uCglOT1RJQ0VfVVBEQVRFX0NDIHJlbW92ZWQuCgpGcmkgTm92IDI0IDE5OjQ4OjA5IDIwMDAgIEoib3JuIFJlbm5lY2tlIDxhbXlsYWFyQHJlZGhhdC5jb20+CgoJKiBqdW1wLmMgKGRlbGV0ZV9jb21wdXRhdGlvbik6IFJlLWluc3RhdGUgZGVsZXRpb24gb2YgZmVlZGluZyBpbnNuLgoJKGRlbGV0ZV9pbnNuKTogTG9vayBmb3IgUkVHX0xBQkVMIG5vdGVzLgoJKHJlZGlyZWN0X3RhYmxlanVtcCk6IERlbGV0ZSBmZWVkaW5nIGluc25zLgoKMjAwMC0xMS0yNCAgQmVybmQgU2NobWlkdCAgPGJlcm5kc0ByZWRoYXQuY28udWs+CgoJKiBjb25maWcvaTM4Ni9pMzg2Lm1kIChjYWxsX3BvcF8wLCBjYWxsX3BvcF8xLCBjYWxsX3ZhbHVlX3BvcF8wLAoJY2FsbF92YWx1ZV9wb3BfMSk6IE1ha2Ugc3VyZSBvcGVyYW5kIG51bWJlcnMgYXJlIGNvbnRpZ3VvdXMuCgoJKiBmb2xkLWNvbnN0LmMgKGZvbGRfcmFuZ2VfdGVzdCk6IEF2b2lkIGNyYXNoIGlmIExIUyBvciBSSFMgaXMgbnVsbC4KCgkqIHJlbG9hZDEuYyAoY29uZmxpY3RzX3dpdGhfb3ZlcnJpZGUpOiBOZXcgZnVuY3Rpb24uCgkoZW1pdF9pbnB1dF9yZWxvYWRfaW5zbnMpOiBVc2UgaXQgdG8gdGlnaHRlbiB0ZXN0IGZvciB2YWxpZGl0eQoJb2Ygc3Vic3RpdHV0aW5nIGludG8gb3V0cHV0IG9mIHByZXZpb3VzIGluc24uCgoJKiBoYWlmYS1zY2hlZC5jIChzdHJ1Y3QgcmVhZHlfbGlzdCk6IE5ldy4KCShyZWFkeV9sYXN0cG9zLCByZWFkeV9hZGQsIHJlYWR5X3JlbW92ZV9maXJzdCwgcmVhZHlfc29ydCk6IE5ldyBzdGF0aWMKCWZ1bmN0aW9ucy4KCShzY2hlZHVsZV9pbnNuKTogUmVwbGFjZSBhcmdzIFJFQURZIGFuZCBOX1JFQURZIHdpdGggYSBwb2ludGVyIHRvIGEKCXJlYWR5X2xpc3Q7IHJldHVybiB2b2lkLiAgVXNlIHRoZSBuZXcgZnVuY3Rpb25zIHRvIGFjY2VzcyB0aGUgcmVhZHkKCWxpc3QuICBBbGwgY2FsbGVycyBjaGFuZ2VkLgoJKHF1ZXVlX3RvX3JlYWR5LCBkZWJ1Z19yZWFkeV9saXN0KTogTGlrZXdpc2UuCgkoc2NoZWR1bGVfYmxvY2spOiBJbml0aWFsaXplIGEgcmVhZHlfbGlzdCBzdHJ1Y3R1cmUuICBVc2UgbmV3CglmdW5jdGlvbnMgdG8gYWNjZXNzIGl0LgoJKG1heF9wcmlvcml0eSk6IFJlbW92ZSB1bnVzZWQgdmFyaWFibGUuCgkoc2NoZWR1bGVfaW5zbik6IERvbid0IHNldCBpdC4KCgkqIGMtY29tbW9uLmMgKHZlcmlmeV90cmVlKTogRG9uJ3QgcmVjdXJzZSBpbnRvIENPTlNUUlVDVE9Scy4KCgkqIGNvbWJpbmUuYyAoY2FudF9jb21iaW5lX2luc25fcCk6IE5ldyBmdW5jdGlvbi4KCSh0cnlfY29tYmluZSk6IFVzZSBpdC4KCgkqIE1ha2VmaWxlLmluIChjLWNvbW1vbi5vKTogRGVwZW5kIG9uICQoT0JTVEFDS19IKS4KCSogYy1jb21tb24uYyAoYy1vYnN0YWNrLmMpOiBJbmNsdWRlICJvYnN0YWNrLmgiLgoJKHN0cnVjdCByZXZlcnNlX3RyZWUpOiBEZWxldGUuCgkocmV2ZXJzZV9saXN0LCByZXZlcnNlX21heF9kZXB0aCk6IERlbGV0ZS4KCShidWlsZF9yZXZlcnNlX3RyZWUsIGNvbW1vbl9hbmNlc3RvciwgbW9kaWZ5X29rKTogRGVsZXRlIGZ1bmN0aW9ucy4KCShzdHJ1Y3QgdGxpc3QsIHN0cnVjdCB0bGlzdF9jYWNoZSk6IE5ldy4KCSh0bGlzdF9vYnN0YWNrLCB0bGlzdF9maXJzdG9iaiwgd2FybmVkX2lkcywgc2F2ZV9leHByX2NhY2hlKTogTmV3LgoJKGFkZF90bGlzdCwgbWVyZ2VfdGxpc3QsIHZlcmlmeV90cmVlLCB3YXJuaW5nX2NhbmRpZGF0ZV9wLAoJd2Fybl9mb3JfY29sbGlzaW9ucywgd2Fybl9mb3JfY29sbGlzaW9uc18xLCBuZXdfdGxpc3QpOiBOZXcKCXN0YXRpYyBmdW5jdGlvbnMuCgkodmVyaWZ5X3NlcXVlbmNlX3BvaW50cyk6IFJld3JpdHRlbi4KCSogZm9sZC1jb25zdC5jIChmb2xkKTogRG9uJ3QgbG9zZSBwb3NzaWJseSBpbXBvcnRhbnQgc2VxdWVuY2UKCXBvaW50cyB3aGVuIHJlbW92aW5nIG9uZSBhcm0gb2YgVFJVVEhfT1JJRl9FWFBScyBvciBUUlVUSF9BTkRJRl9FWFBScy4KCjIwMDAtMTEtMjQgIFJpY2hhcmQgU2FuZGlmb3JkICA8cnNhbmRpZm9AcmVkaGF0LmNvbT4KCgkqIGdjYy9jc2UuYyAoY3NlX2luc24pOiBSZW1vdmVkIGNvbnZlcnNpb24gb2YgUkVHX0VRVUlWIHRvIFJFR19FUVVBTAoJd2hlbiByZXZlcnNpbmcgYSByZWdpc3Rlci10by1yZWdpc3RlciBjb3B5LiAgUmV2ZXJzYWwgbm93IGRpc2FibGVkCgl3aGVuIHRoZSBwcmV2aW91cyBpbnN0cnVjdGlvbiBoYXMgYSBSRUdfRVFVSVYuCgoyMDAwLTExLTI0ICBOYXRoYW4gU2lkd2VsbCAgPG5hdGhhbkBjb2Rlc291cmNlcnkuY29tPgoKCSogYy1wYXJzZS5pbiAodW5hcnlfZXhwcik6IE1vdmUgVkFfQVJHIGZyb20gaGVyZSAuLi4KCShwcmltYXJ5KTogLi4uIHRvIGhlcmUuCgoyMDAwLTExLTIzICBHcmFoYW0gU3RvdHQgIDxncmFoYW1zQHJlZGhhdC5jb20+CgoJKiBleHByLmMgKHN0b3JlX2NvbnN0cnVjdG9yKTogSWYgYSBmaWVsZCBpcyBub24gYWRkcmVzc2FibGUgYW5kCgl0aGUgdGFyZ2V0IGlzIGEgTUVNIHVzZSBNRU1fQUxJQVNfU0VUIG90aGVyd2lzZSB1c2UgZ2V0X2FsaWFzX3NldC4KCjIwMDAtMTEtMjMgIEJlcm5kIFNjaG1pZHQgIDxiZXJuZHNAcmVkaGF0LmNvLnVrPgoKCSogZmxvdy5jIChwcmludF9ydGxfYW5kX2Fib3J0KTogTmV3IGZ1bmN0aW9uLgoJKHZlcmlmeV93aWRlX3JlZywgdmVyaWZ5X2xvY2FsX2xpdmVfYXRfc3RhcnQpOiBUcnkgdG8gZHVtcCBtb3JlCglpbmZvcm1hdGlvbiBiZWZvcmUgYWJvcnRpbmcuCgoyMDAwLTExLTIzICBBbGV4YW5kcmUgT2xpdmEgIDxhb2xpdmFAcmVkaGF0LmNvbT4KCgkqIGVtaXQtcnRsLmMgKGdlbl9sb3dwYXJ0X2NvbW1vbik6IFVzZSB3b3JkIDAgaWYgcmVnaXN0ZXIgbW9kZQoJaXMgbmFycm93ZXIgdGhhbiByZXF1ZXN0ZWQgbW9kZS4KCShnZW5faGlnaHBhcnQpOiBBYm9ydCBpZiByZWdpc3RlciBtb2RlIGlzIG5hcnJvd2VyIHRoYW4KCXJlcXVlc3RlZCBtb2RlLgoKMjAwMC0xMS0yMyAgR3JhaGFtIFN0b3R0ICA8Z3JhaGFtc0ByZWRoYXQuY29tPgoKCSogY3NlLmMgKGNzZV9pbnNuKTogSW5pdGlhbGl6ZSBhbGwgcmVnY29zdCB2YXJpYWJsZXMuCglGaXggYSB0eXBvIGFkZCBtaXNzaW5nICc9Jy4KCU9ubHkgY29tcGFyZSBjb3N0cyBpZiB0aGVyZSBpcyBhIHJlcGxhY2VtZW50IGluc24uCgpUaHUgTm92IDIzIDA0OjMzOjMzIDIwMDAgIEFsZXhhbmRyZSBPbGl2YSAgPGFvbGl2YUByZWRoYXQuY29tPgoKCSogZmluYWwuYyAob3V0cHV0X2FkZHJfY29uc3QpIFtMQUJFTF9SRUZdOiBTaW1wbGlmeS4KCVtNSU5VU106IEVuY2xvc2Ugbm9uLUNPTlNUX0lOVHMgaW4gcGFyZW50aGVzZXMuCglbZGVmYXVsdF06IFRyeSBPVVRQVVRfQUREUl9DT05TVF9FWFRSQS4KCSogdG0udGV4aSAoT1VUUFVUX0FERFJfQ09OU1RfRVhUUkEpOiBEb2N1bWVudCBpdC4KCSogdmFyYXNtLmMgKGRlY29kZV9ydHhfY29uc3QpIFtDT05TVF06IElmIGl0J3Mgbm90IHNvbWV0aGluZwoJUExVUyBvciBNSU5VUyBhIENPTlNUX0lOVCwgdXNlIHRoZSB3aG9sZSBDT05TVCB3aXRoIG9mZnNldCAwCglpbnN0ZWFkIG9mIGFib3J0KClpbmcuCgkqIHNoLmMgKG91dHB1dF9waWNfYWRkcl9jb25zdCk6IFJlbW92ZWQuICBGaXhlZCBhbGwgY2FsbGVycy4KCSogc2guaCAoT1VUUFVUX0FERFJfQ09OU1RfRVhUUkEpOiBOZXcuICBIYW5kbGUgdGhlIFVOU1BFQ3MKCWZvcm1lcmx5IGhhbmRsZWQgaW4gb3V0cHV0X3BpY19hZGRyX2NvbnN0LgoJKiBzaC5tZCAoc3ltX2xhYmVsMnJlZywgc3ltUExUX2xhYmVsMnJlZyk6IEVuY2xvc2UgVU5TUEVDCglvcGVyYW5kcyBvZiBNSU5VUyBpbiBDT05TVHMgc28gdGhhdCBkZWNvZGVfcnR4X2NvbnN0KCkgd2lsbAoJYWNjZXB0IHRoZW0uCgpUaHUgTm92IDIzIDA0OjEwOjMwIDIwMDAgIEFsZXhhbmRyZSBPbGl2YSAgPGFvbGl2YUByZWRoYXQuY29tPgoKCSogY29uZmlnL3NoL3NoLm1kIChtb3ZhX2NvbnN0KTogTmV3IHBhdHRlcm4uCgkoR09UYWRkcjJwaWNyZWcpOiBVc2UgaXQuCgkqIGNvbmZpZy9zaC9zaC5jIChicm9rZW5fbW92ZSk6IE1hdGNoIGl0LgoJKG1vdmFfcCk6IERvbid0IG1hdGNoIGl0LgoJKG1hY2hpbmVfZGVwZW5kZW50X3Jlb3JnKTogQWRqdXN0IGl0LgoKVGh1IE5vdiAyMyAwMjowOTowOSAyMDAwICBBbGV4YW5kcmUgT2xpdmEgIDxhb2xpdmFAcmVkaGF0LmNvbT4KCgkqIGNvbmZpZy9zaC9zaC5oIChGSVJTVF9HRU5FUkFMX1JFRywgTEFTVF9HRU5FUkFMX1JFRyk6IE5ldy4KCU1vdmVkIG1vc3QgcmVnaXN0ZXItbnVtYmVyICNkZWZpbmVzLi4uCgkqIGNvbmZpZy9zaC9zaC5tZCAoZGVmaW5lX2NvbnN0YW50cyk6IC4uLiBoZXJlLiAgVXNlIG1hY3JvcyB0bwoJcmVmZXIgdG8gcmVnaXN0ZXJzIGFuZCB1bnNwZWNzLgoJKiBjb25maWcvc2gvc2guYzogTGlrZXdpc2UuCgpUaHUgTm92IDIzIDAxOjAxOjMyIDIwMDAgIEoib3JuIFJlbm5lY2tlIDxhbXlsYWFyQHJlZGhhdC5jb20+CgoJKiBNYWtlZmlsZS5pbiAoSE9TVF9DRkxBR1MpOiBBZGQgLURHRU5FUkFUT1JfRklMRS4KCShydGwubywgcHJpbnQtcnRsLm8sIGJpdG1hcC5vLCBvYnN0YWNrLm8pOiBCdWlsZCB3aXRoIC1ER0VORVJBVE9SX0ZJTEUuCgkoYWxsb2NhLm8sIHZmcHJpbnRmLm8sIGdnYy1ub25lLm8sIGVycm9ycy5vKTogTGlrZXdpc2UuCgkoc3BsYXktdHJlZS5vLCBoYXNoLm8pOiBMaWtld2lzZS4KCUdDT05GSUdfSDogTmV3LgoJKHJ0bC5vLCBwcmludC1ydGwubyk6IERlcGVuZCBvbiAkKEdDT05GSUdfSCkgaW5zdGVhZCBvZiAkKENPTkZJR19IKS4KCShiaXRtYXAubywgb2JzdGFjay5vLCB2ZnByaW50Zi5vLCBnZ2Mtbm9uZS5vLCBlcnJvcnMubyk6IExpa2V3aXNlLgoJKGhhc2h0YWIubyk6IExpa2V3aXNlLgoJKGdjb3Yubyk6IERlcGVuZCBvbiAkKENPTkZJR19IKS4KCSogY29uZmlndXJlLmluOiAjaW5jbHVkZSBpbnNuLWNvZGVzLmggaW4gdG0uaC4KCjIwMDAtMTEtMjIgIE5pY2sgQ2xpZnRvbiAgPG5pY2tjQHJlZGhhdC5jb20+CgoJKiBjb25maWcvYXJtL2FybS5jIChhcm1fZW5jb2RlX2NhbGxfYXR0cmlidXRlKTogTWFrZSAnbmV3c3RyJyBhCgljb25zdCBjaGFyICogdG8gYXZvaWQgYSBjb21waWxlIHRpbWUgd2FybmluZy4KCgkqIGNvbmZpZy9hcm0vYXJtLm1kIChkZWZpbmVfY29uc3RhbnRzKTogRGVmaW5lIHN5bWJvbGljIG5hbWVzIGZvcgoJdGhlIGxpbmsgcmVnaXN0ZXIsIGxhc3QgaW50ZWdlciByZWdpc3RlciBhbmQgdGhlIGZha2UgQ0MgcmVnaXN0ZXIuCglVcGRhdGUgcGF0dGVybnMgdG8gdXNlIHRoZXNlIHN5bWJvbGljIG5hbWVzLgoKMjAwMC0xMS0yMiAgTmVpbCBCb290aCAgPG5laWxiQGVhcnRobGluZy5uZXQ+CgoJKiBjcHBsZXguYyAodHJpZ3JhcGhfb2spOiBFbnN1cmUgd2UgZG9uJ3Qgd2FybiB0d2ljZS4KCSogY3BwbGliLmggKHN0cnVjdCBjcHBfYnVmZmVyKTogTmV3IG1lbWJlciBsYXN0X1d0cmlncmFwaHMuCgoyMDAwLTExLTIyICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEByZWRoYXQuY29tPgoKCSogaGFpZmEtc2NoZWQuYyAoc2NoZWRfYW5hbHl6ZV8xKTogRG9uJ3Qgc3BlY2lhbC1jYXNlIGNhbGxzCglmb3IgY2xvYmJlcmluZyByZWdpc3RlcnMuCgkoc2NoZWRfYW5hbHl6ZV8yKTogTGlrZXdpc2UuCgkoc2NoZWRfYW5hbHl6ZSk6IFphcCByZWdfbGFzdF91c2VzIGFuZCByZWdfbGFzdF9zZXRzIGFmdGVyIGNhbGxzLgoKMjAwMC0xMS0yMiAgQ2hyaXMgRGVtZXRyaW91ICA8Y2dkQHNpYnl0ZS5jb20+CgkgICAgTmVpbCBCb290aCAgPG5laWxiQGVhcnRobGluZy5uZXQ+CgoJKiBnY2MuYyAodmFsaWRhdGVfc3dpdGNoZXMpOiBWYWxpZGF0ZSBtdWx0aXBsZSBzd2l0Y2hlcyBuYW1lZAoJaW4gJ3wnIChvcikgZXhwcmVzc2lvbnMgaW4gc3BlY3MuCgkoaGFuZGxlX2JyYWNlcyk6IElmIG1vcmUgdGhhbiAxIGFsdGVybmF0aXZlIGluIGEgJ3wnIHNwZWMKCW1hdGNoZXMsIGNhbGwgZG9fc3BlYzEganVzdCBvbmNlLgoKMjAwMC0xMS0yMiAgTWljaGFlbCBNZWlzc25lciAgPG1laXNzbmVyQHJlZGhhdC5jb20+CgoJKiBkMzB2LmggKFRBUkdFVF9TV0lUQ0hFUyk6IEFkZCBkb2N1bWVudGF0aW9uIHN0cmluZ3MuCgkoVEFSR0VUX09QVElPTlMpOiBEaXR0by4KCShPUFRJTUlaQVRJT05fT1BUSU9OUyk6IFRlbXBvcmFyaWx5IHR1cm4gb2ZmIC1mcmVuYW1lLXJlZ2lzdGVycyBpZgoJLU8zLgoKV2VkIE5vdiAyMiAwNjo0MDo1NiAyMDAwICBKZWZmcmV5IEEgTGF3ICAobGF3QGN5Z251cy5jb20pCgoJKiBwYS5jIChocHBhX2VuY29kZV9sYWJlbCk6IEFjY291bnQgZm9yIGFkZGl0aW9uIG9mIGVuY29kaW5nCgljaGFyYWN0ZXIgd2hlbiBhbGxvY2F0aW5nIHBlcnNpc3RlbnQgc3BhY2UgZm9yIHRoZSBuZXcgbGFiZWwKCW5hbWUuCgoyMDAwLTExLTIyICBaYWNrIFdlaW5iZXJnICA8emFja0B3b2xlcnkuc3RhbmZvcmQuZWR1PgoKCSogTWFrZWZpbGUuaW4sIGNvbmZpZy5nY2MsIGNvbmZpZ3VyZS5pbjogRXhwdW5nZSByZW1haW5pbmcKCXRyYWNlcyBvZiBmYWNpbGl0eSBmb3IgcnVubmluZyBNRCBmaWxlcyB0aHJvdWdoIEMgcHJlcHJvY2Vzc29yLgoKMjAwMC0xMS0yMiAgSm9zZXBoIFMuIE15ZXJzICA8anNtMjhAY2FtLmFjLnVrPgoKCSogZ2Nvdi50ZXhpOiBBZGQgbWFnaWMgY29tbWVudHMgZm9yIHRleGkycG9kLnBsLgoJKiBNYWtlZmlsZS5pbjogQWRkIHJ1bGVzIHRvIGdlbmVyYXRlIGFuZCBpbnN0YWxsIGdjb3YuMS4KCSogZ2Nvdi4xOiBOZXcgKGdlbmVyYXRlZCkgZmlsZS4KCjIwMDAtMTEtMjEgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CgoJKiByZWdyZW5hbWUuYyAoc2Nhbl9ydHhfcmVnKTogVGVybWluYXRlIHRoZSBjaGFpbiByYXRoZXIgdGhhbgoJYWJvcnQgb24gbWFya19yZWFkIHdpdGggTk9fUkVHUy4KCjIwMDAtMTEtMjEgIE1pa2UgU3R1bXAgIDxtcnNAd3JzLmNvbT4KCgkqIGZpeGluYy9maXh0ZXN0cy5jIChURVNUX0ZPUl9GSVhfUFJPQ19IRUFEKTogRml4IHRvIGFsbG93Cgljb21waWxhdGlvbiB3aXRoIG9sZGVyIGNvbXBpbGVycywgc3VjaCBhcyAvYmluL2NjIG9uIFN1bk9TLgoJKiBmaXhpbmMvZml4Zml4ZXMuYyAoRklYX1BST0NfSEVBRCk6IERpdHRvLgoKMjAwMC0xMS0yMSAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCgkqIHZhcmFzbS5jIChyZWNvcmRfY29uc3RhbnQpOiBQYWQgdGhlIGNvbnN0cnVjdGVkCgljb25zdGFudF9kZXNjcmlwdG9yIGFwcHJvcHJpYXRlbHkuCgpXZWQgTm92IDIyIDAwOjUyOjU1IDIwMDAgIEoib3JuIFJlbm5lY2tlIDxhbXlsYWFyQHJlZGhhdC5jb20+CgoJKiBydGwuaCAodHJhdmVyc2VfbWRfY29uc3RhbnRzKTogRGVjbGFyZS4KCShzdHJ1Y3QgbWRfY29uc3RhbnQpOiBEZWZpbmUuCgkqIE1ha2VmaWxlLmluIChIT1NUX1JUTCk6IEFkZCBoYXNodGFiLm8gLgoJKE9CSlMpOiBBZGQgaGFzaHRhYi5vIC4KCShoYXNodGFiLm8pOiBOZXcgcnVsZS4KCShydGwubyk6IERlcGVuZHMgb24gSEFTSFRBQl9ILgoJKiBydGwuYyAoaGFzaHRhYi5oKTogI2luY2x1ZGUuCgkobWRfY29uc3RhbnRzKTogTmV3IHN0YXRpYyB2YXJpYWJsZS4KCShkZWZfaGFzaCwgZGVmX25hbWVfZXFfcCwgcmVhZF9jb25zdGFudHMpOiBOZXcgc3RhdGljIGZ1bmN0aW9ucy4KCSh0cmF2ZXJzZV9tZF9jb25zdGFudHMpOiBOZXcgZnVuY3Rpb24uCgkocmVhZF9uYW1lKTogRG8gY29uc3RhbnQgZXhwYW5zaW9uLgoJKHJlYWRfcnR4KTogUmVjb2duaXplIGRlZmluZV9jb25zdGFudHMuCgkqIGdlbmNvZGVzLmMgKHByaW50X21kX2NvbnN0YW50KTogTmV3IGZ1bmN0aW9uLgoJKG1haW4pOiBFbWl0ICNkZWZpbmVzIGZvciBhbGwgY29uc3RhbnQgZGVmaW5pdGlvbnMgZW5jb3VudGVyZWQuCgkqIG1kLnRleGkgKENvbnN0YW50IERlZmluaXRpb25zKTogTmV3IG5vZGUuCgkqIGdlbnN1cHBvcnQuYyAoeGNhbGxvYyk6IE5ldyBmdW5jdGlvbi4KCjIwMDAtMTEtMjEgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CgoJKiBjb25maWcvYWxwaGEvYWxwaGEuYyAoYWxwaGFfc3BsaXRfdGZtb2RlX2Zyb2JzaWduKTogTmV3LgoJKiBjb25maWcvYWxwaGEvYWxwaGEtcHJvdG9zLmg6IERlY2xhcmUgaXQuCgkqIGNvbmZpZy9hbHBoYS9hbHBoYS5tZCAoYWJzdGZfaW50ZXJuYWwpOiBVc2UgaXQuCgkobmVndGZfaW50ZXJuYWwpOiBMaWtld2lzZS4KCShhbmRub3RkaTMpOiBVbnN0YXIgdGhlIG5hbWUuCgkobW92dGZfaW50ZXJuYWwpOiBBZGQgby9HIGFsdGVybmF0aXZlLgoKMjAwMC0xMS0yMSAgWmFjayBXZWluYmVyZyAgPHphY2tAd29sZXJ5LnN0YW5mb3JkLmVkdT4KCgkqIHN0cmluZ3Bvb2wuYyAoc3RyaW5ncG9vbF9zdGF0aXN0aWNzKTogQWxzbyByZXBvcnQgbnVtYmVyIGFuZAoJcGVyY2VudGFnZSBvZiBlbnRyaWVzIHdoaWNoIGFyZSBpZGVudGlmaWVycy4KCjIwMDAtMTEtMjEgIERpZWdvIE5vdmlsbG8gIDxkbm92aWxsb0ByZWRoYXQuY29tPgoKCSogZ2NzZS5jIChob2lzdF9leHByX3JlYWNoZXNfaGVyZV9wKTogRG8gbm90IG1hcmsgZXhwcl9iYiBhcwoJdmlzaXRlZCBiZWZvcmUgdmlzaXRpbmcgaXQuCgoyMDAwLTExLTIxICBOaWNrIENsaWZ0b24gIDxuaWNrY0ByZWRoYXQuY29tPgoKCSogY29uZmlnL2FybS9hcm0uaDogQWNjZXB0IFRBUkdFVF9DUFVfYXJtOXRkbWksCglUQVJHRVRfQ1BVX3N0cm9uZ2FybTExMCBhbmQgVEFSR0VUX1NQVV9zdHJvbmdhcm0xMTAwLgoKCSogY29uZmlnLmdjYzogQWNjZXB0IC0td2l0aC1jcHU9YXJtOSBhbmQgLS13aXRoLWNwdT1hcm05dGRtaS4KCjIwMDAtMTEtMjEgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CgoJKiBjLWNvbW1vbi5jIChjX3Vuc2FmZV9mb3JfcmVldmFsKTogTmV3IGZ1bmN0aW9uLgoJKGFkZF9jX3RyZWVfY29kZXMpOiBSZWdpc3RlciBpdC4KCSogYy1jb21tb24uaDogRGVjbGFyZSBpdC4KCSogdHJlZS5jIChsYW5nX3Vuc2FmZV9mb3JfcmVldmFsKTogTmV3IGhvb2suCgkodW5zYWZlX2Zvcl9yZWV2YWwpOiBDYWxsIGl0LgoJKiB0cmVlLmg6IERlY2xhcmUgaXQuCgoyMDAwLTExLTIxICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEByZWRoYXQuY29tPgoKCSogY29uZmlnL2kzODYvaTM4Ni5jIChpMzg2X3NpbXBsaWZ5X2R3YXJmX2FkZHIpOiBTaW1wbGlmeSBAR09UCglyZWZlcmVuY2VzIGFzIHdlbGwuCgoyMDAwLTExLTIxICBOZWlsIEJvb3RoICA8bmVpbGJAZWFydGhsaW5nLm5ldD4KCgkqIGRvX2luY2x1ZGVzOiBSZXZlcnQgdG8gdXNpbmcgY3BwX3JlYWRfZmlsZS4KCjIwMDAtMTEtMjEgIEJlcm5kIFNjaG1pZHQgIDxiZXJuZHNAcmVkaGF0LmNvLnVrPgoKCSogbG9vcC5jIChjb25zZWNfc2V0c19naXYpOiBJZiB0aGUgcmVnIHdlJ3JlIGV4YW1pbmluZyBpcyBhbnl0aGluZwoJYnV0IFVOS05PV05fSU5EVUNULCBkbyBub3RoaW5nLgoJUmVzZXQgdGhlIHJlZydzIHR5cGUgdG8gVU5LTk9XTl9JTkRVQ1QgYmVmb3JlIHJldHVybmluZy4KCglNb3N0bHkgZnJvbSBWbGFkaW1pciBNYWthcm92ICh2bWFrYXJvdkByZWRoYXQuY29tKQoJKiBpYTY0Lm1kIChhdHRyIGl0YW5pdW1fY2xhc3MpOiBEZWZpbmUgaW5zbiB0eXBlcyBhcyBkZXNjcmliZWQgaW4KCUl0YW5pdW0gZG9jcy4KCShhbGwgaW5zbiBwYXR0ZXJucyk6IFVzZSBpdGFuaXVtX2NsYXNzLCBub3QgdHlwZSBhdHRyaWJ1dGVzLgoJT2NjYXNpb25hbGx5IHNwbGl0IGFsdGVybmF0aXZlcyBhcyBuZWNlc3NhcnkuCgkoYXR0ciB0eXBlKTogQ29tcHV0ZSBmcm9tIG5ldyBhdHRyIGl0YW5pdW1fY2xhc3MuCgoyMDAwLTExLTIxICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiB0cmFkY3BwLmMgKG91dHB1dF9saW5lX2NvbW1hbmQpOiBNYXJrIHN5c3RlbSBoZWFkZXJzIGFzIHN1Y2ggaW4KCWBsaW5lJyBjb21tYW5kcy4KCjIwMDAtMTEtMjEgIEpha3ViIEplbGluZWsgIDxqYWt1YkByZWRoYXQuY29tPgoKCSogY29uZmlndXJlLmluIChIQVZFX0FTX0RXQVJGMl9ERUJVR19MSU5FKTogU1BBUkMgaGFzIC5maWxlLy5sb2MKCXN1cHBvcnQgaW4gYXMgYXMgd2VsbC4KCSogY29uZmlndXJlOiBSZWdlbmVyYXRlLgoKMjAwMC0xMS0yMCAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCgkqIGMtbGV4LmMgKG9yaWdfZmlsZW5hbWUpOiBOZXcgdmFyaWFibGUuCgkoaW5pdF9jX2xleCk6IFNldCBpdC4gIE1vdmUgY2FsbCB0byBjcHBfc3RhcnRfcmVhZCAuLi4KCSh5eXBhcnNlKTogLi4uIGhlcmUuICBOZXcgZnVuY3Rpb24uCgkqIGMtcGFyc2UuaW4gKHl5cGFyc2VfMSk6IFJlbmFtZSB0aGUgcGFyc2VyIGVudHJ5IHBvaW50LgoJKiBjLXRyZWUuaDogRGVjbGFyZSBpdC4KCjIwMDAtMTEtMjEgIEpha3ViIEplbGluZWsgIDxqYWt1YkByZWRoYXQuY29tPgoKCSogZXhwci5jIChkb19jb21wYXJlX2FuZF9qdW1wKTogSWYgb3AwIHdhcyByZXBsYWNlZCBieSBwcm9tb3RlZAoJaW50ZWdlciBjb25zdGFudCwgdXNlIHR5cGUgb2Ygb3AxIGZvciBjb21wYXJpc29uLgoKMjAwMC0xMS0yMCAgU3RhbiBTaGVicyAgPHNoZWJzQGFwcGxlLmNvbT4KCgkqIGNvbmZpZy9yczYwMDAveG0tZGFyd2luLmg6IE5ldyBmaWxlLCBEYXJ3aW4gaG9zdCBkZWZpbml0aW9ucy4KCSogY29uZmlnL3JzNjAwMC94LWRhcndpbjogTmV3IGZpbGUsIERhcndpbiBob3N0IGZyYWdtZW50LgoJKiBjb25maWcuZ2NjIChwb3dlcnBjLSotZGFyd2luKik6IE5ldyBob3N0LgoJKiBzeXN0ZW0uaCAoSEFWRV9ERVNJR05BVEVEX0lOSVRJQUxJWkVSUyk6ICBBbGxvdyB0aGlzIHRvIGJlCglvdmVycmlkZGVuIGJ5IGEgY29uZmlnIGZpbGUuCgoyMDAwLTExLTIwICBOZWlsIEJvb3RoICA8bmVpbGJAZWFydGhsaW5nLm5ldD4KCgkqIGNwcG1hY3JvLmMgKHBhc3RlX3Rva2Vucyk6IFJlbmFtZSBmcm9tIHBhc3RlX3BheWxvYWRzLgoJQ2hhbmdlIHRva2VuIHR5cGUgYWZ0ZXIgcGFzdGluZyBzcGVsbGluZ3MuCgkocGFzdGVfYWxsX3Rva2Vucyk6IFVzZSBpdC4KCSogZ2NjLmRnL2NwcC9wYXN0ZTIuYzogVXBkYXRlIHRlc3QuCgkqIG9iamMvZXhlY3V0ZS9wYXN0ZS5tOiBOZXcgdGVzdC4KCjIwMDAtMTEtMjAgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CgoJKiBkd2FyZi5oIChGTVRfQ09ERSk6IEFkanVzdCBhcmd1bWVudCBvcmRlcjsgZml4IG1hcHBpbmcgdG8KCWR3YXJmX3N1YnNjcl9kYXRhX2Zvcm1hdHMgYml0cy4KCSogZHdhcmZvdXQuYyAoc2ltcGxlX3R5cGVfc2l6ZV9pbl9iaXRzKTogSGFuZGxlIGEgdHlwZSB3aXRoCglubyBjb21wdXRlZCBzaXplIGFzIHNpemUgemVyby4KCShmaWVsZF9ieXRlX29mZnNldCk6IExpa2V3aXNlLgoJKHN1YnNjcmlwdF9kYXRhX2F0dHJpYnV0ZSk6IEhhbmRsZSBhIHJhbmdlIHdpdGggbm8gdXBwZXIgYm91bmQuCgoyMDAwLTExLTIwICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBnYW5zaWRlY2wuaCAoY29uc3QpOiBDaGVjayBfX1NURENfXyBiZWZvcmUgdW5kZWYnaW5nIGBjb25zdCcuCgoyMDAwLTExLTIwICBKb3NlcGggUy4gTXllcnMgIDxqc20yOEBjYW0uYWMudWs+CgoJKiBjLXR5cGVjay5jIChidWlsZF9jb25kaXRpb25hbF9leHByKTogV2hlbiBtZXJnaW5nIHR5cGUKCXF1YWxpZmllcnMgZm9yIGNvbmRpdGlvbmFsIGV4cHJlc3Npb25zIGJldHdlZW4gYSBwb2ludGVyIGFuZCBhCglwb2ludGVyIHRvIGEgdm9pZCB0eXBlLCBtZXJnZSB0aGUgcXVhbGlmaWVycyBvbiB0aGUgdGFyZ2V0IHR5cGVzCglyYXRoZXIgdGhhbiB0aGUgcG9pbnRlciB0eXBlLiAgUmVtb3ZlIG9ic29sZXRlIGNvbmRpdGlvbmVkIG91dAoJY29kZS4KCjIwMDAtMTEtMjAgIE5laWwgQm9vdGggIDxuZWlsYkBlYXJ0aGxpbmcubmV0PgoKCSogYy1sYW5nLmMgKGxhbmdfaW5pdF9vcHRpb25zKTogVXBkYXRlIGNhbGwgdG8KCWNwcF9yZWFkZXJfaW5pdC4KCSogY3BwbWFpbi5jIChtYWluKTogU2ltaWxhcmx5LgoJKiBmaXgtaGVhZGVyLmMgKHJlYWRfc2Nhbl9maWxlKTogU2ltaWxhcmx5LgoJKiBjcC9sZXguYyAobGFuZ19pbml0X29wdGlvbnMpOiBTaW1pbGFybHkuCgkqIG9iamMvb2JqYy1hY3QuYyAobGFuZ19pbml0X29wdGlvbnMpOiBTaW1pbGFybHkuCgkqIGNwcGV4cC5jIChwYXJzZV9udW1iZXIpOiBPbmx5IHdhcm4gZm9yIHVuZXh0ZW5kZWQgQzg5LgoJKiBjcHBpbml0LmMgKHNldF9sYW5nKTogTmV3IGZ1bmN0aW9uLgoJKGNwcF9yZWFkZXJfaW5pdCk6IFRha2UgYSBMQU5HIGFyZ3VtZW50IGFuZCBwYXNzIGl0IHRvIHNldF9sYW5nLgoJKENPTU1BTkRfTElORV9PUFRJT05TKTogTmV3IG9wdGlvbiBzdGQ9YysrOTguCgkoY3BwX2hhbmRsZV9vcHRpb24pOiBVc2Ugc2V0X2xhbmcuCgkqIGNwcGxleC5jIChfY3BwX2xleF90b2tlbik6IFdhcm4gcGVkYW50aWNhbGx5IGlmIG5vdCBDOTkuCgkqIGNwcGliLmggKGVudW1fY19sYW5nKTogTmV3IGVudW1lcmF0aW9uLiAgVXBkYXRlIGNvbW1lbnRzLgoKMjAwMC0xMS0yMCAgV2lsbCBDb2hlbiAgPHdjb2hlbkByZWRoYXQuY29tPgoKCSogY2FsbHMuYyAoZXhwYW5kX2NhbGwpOiBDbGVhciB0YXJnZXQgb25seSB3aGVuIHRhcmdldCBpcyBpbgoJaGFyZCByZWdpc3RlciBhbmQgY3VycmVudF9mdW5jdGlvbl9jaGVja19tZW1vcnlfdXNhZ2UgaXMgc2V0LgoKMjAwMC0xMS0yMCAgQmVybmQgU2NobWlkdCAgPGJlcm5kc0ByZWRoYXQuY28udWs+CgoJKiB0b3BsZXYuYyAocmVzdF9vZl9jb21waWxhdGlvbik6IFJ1biBvcHRpbWl6ZV9tb2RlX3N3aXRjaGluZyBldmVuCglpZiBub3Qgb3B0aW1pemluZy4KCSogc2guYyAoZW1pdF9zZl9pbnNuLCBlbWl0X2RmX2luc24pOiBKdXN0IGNhbGwgZW1pdF9pbnNuLgoKMjAwMC0xMS0xOSAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCgkqIGNydHN0dWZmLmMgKGZvcmNlX3RvX2RhdGEpOiBVc2UgYXJyYXkgc2l6ZSAxIG5vdCAwLgoKCSogZHdhcmYyb3V0LmMgKHNpbXBsZV90eXBlX3NpemVfaW5fYml0cyk6IEhhbmRsZSBhIHR5cGUgd2l0aAoJbm8gY29tcHV0ZWQgc2l6ZSBhcyBzaXplIHplcm8uCgkoZmllbGRfYnl0ZV9vZmZzZXQpOiBMaWtld2lzZS4KCjIwMDAtMTEtMjAgIEpvc2VwaCBTLiBNeWVycyAgPGpzbTI4QGNhbS5hYy51az4KCgkqIGNvbmZpZy5nY2M6IEZpeCBhbm90aGVyIHR5cG8uCgoyMDAwLTExLTE5ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEByZWRoYXQuY29tPgoKCSogYy1kZWNsLmMgKGdyb2tkZWNsYXJhdG9yKTogU3VwcG9ydCBmbGV4aWJsZSBhcnJheSBtZW1iZXJzLgoJVXNlIG9wZW4tZW5kZWQgcmFuZ2VzIGZvciB0aGVzZSBhbmQgemVyby1sZW5ndGggYXJyYXlzLgoJKiBjLXR5cGVjay5jIChwdXNoX2luaXRfbGV2ZWwpOiBWYWxpZGF0ZSB0aGUgY29udGV4dCBvZgoJaW5pdGlhbGl6YXRpb24gb2YgYSB6ZXJvLWxlbmd0aCBhcnJheS4KCSogdHJlZS5jIChpbnRfZml0c190eXBlX3ApOiBCZSBwcmVwYXJlZCBmb3IgbWlzc2luZyBib3VuZHMuCgkqIHZhcmFzbS5jIChhcnJheV9zaXplX2Zvcl9jb25zdHJ1Y3Rvcik6IE5ldy4KCShvdXRwdXRfY29uc3RydWN0b3IpOiBVc2UgaXQgZm9yIGFycmF5cyBvZiB1bnNwZWNpZmllZCBsZW5ndGguCgkqIGV4dGVuZC50ZXhpIChaZXJvIExlbmd0aCk6IE1lbnRpb24gQzk5IGZsZXhpYmxlIGFycmF5IG1lbWJlcnMuCglEb2N1bWVudCBpbml0aWFsaXphdGlvbiBpbiBhIHRvcC1sZXZlbCBzdHJ1Y3QgYXMgdmFsaWQuCgoyMDAwLTExLTE5ICBKb3NlcGggUy4gTXllcnMgIDxqc20yOEBjYW0uYWMudWs+CgoJKiBjb25maWcuZ2NjLCBpbnZva2UudGV4aTogRml4IGVycm9ycyBpbiBzcGVsbGluZyBvZiAiZGVwcmVjYXRlZCIuCgoJKiBhbGlhcy5jIChtZW1zX2luX2Rpc2pvaW50X2FsaWFzX3NldHNfcCk6IERvIHVzZSBhbGlhcyBzZXRzIGluCglzdGRhcmcgYW5kIHZhcmFyZ3MgZnVuY3Rpb25zLgoKMjAwMC0xMS0xOSAgWmFjayBXZWluYmVyZyAgPHphY2tAd29sZXJ5LnN0YW5mb3JkLmVkdT4KCgkqIGdjYy5jIChwcm9jZXNzX2NvbW1hbmQpOiBEZWZpbmUgJ2onIHZhcmlhYmxlIHdoZW4KCU1PRElGWV9UQVJHRVRfTkFNRSBpcyBkZWZpbmVkLgoKMjAwMC0xMS0xOSAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCgkqIHN0b3ItbGF5b3V0LmMgKHZhcmlhYmxlX3NpemUpOiBPbmx5IHB1dCBTQVZFX0VYUFJzIG9uIHBlbmRpbmdfc2l6ZXMuCgoyMDAwLTExLTE5ICBGcmFueiBTaXJsICA8RnJhbnouU2lybC1rZXJuZWxAbGF1dGVyYmFjaC5jb20+CgoJKiByczYwMDAvcnM2MDAwLmMgKHJzNjAwMF9lbmNvZGVfc2VjdGlvbl9pbmZvKTogRml4IHN0cmluZyBsZW5ndGgKCWNhbGN1bGF0aW9uIGFuZCBhbGxvY2F0aW9uLgoKMjAwMC0xMS0xOSAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogYnVpbHRpbnMuYyAoY19nZXRzdHIpOiBDb25zdGlmeSB2YXJpYWJsZS4KCSogZ21vbi1zb2wyLmMgKF9tY2xlYW51cCk6IENvbW1lbnQgb3V0ICNlbmRpZiBsYWJlbHMuCgkqIGNvbmZsaWN0LmMgKGNvbnN0X2NvbmZsaWN0X2dyYXBoX2FyYyk6IE5ldyB0eXBlZGVmLgoJKGFyY19oYXNoLCBhcmNfZXEpOiBBdm9pZCBuZWVkbGVzc2x5IGNhc3RpbmcgYXdheSBjb25zdC1uZXNzLgoJKiBjcHBtYWNyby5jIChidWlsdGluX21hY3JvKTogTGlrZXdpc2UuCgkqIGR3YXJmMm91dC5jIChvdXRwdXRfY29tcF91bml0KTogQ29uc3RpZnkgdmFyaWFibGUuCgkqIGZpeC1oZWFkZXIuYyAodl9mYXRhbCk6IEFkZCBBVFRSSUJVVEVfUFJJTlRGLgoJKiBwcm90b2l6ZS5jIChJU19TQU1FX1BBVEhfQ0hBUik6IFVzZSBUT1VQUEVSLCBub3QgdG91cHBlci4KCSogc3NhLmMgKHNzYV9yZW5hbWVfZnJvbV9oYXNoX2Z1bmN0aW9uKTogQXZvaWQgbmVlZGxlc3NseSBjYXN0aW5nCglhd2F5IGNvbnN0LW5lc3MuCgkqIHRyYWRjcHAuYyAocmVzY2FuLCBkb19saW5lLCBtYWNyb2V4cGFuZCwgbWFjYXJnKTogVXNlCglJU0FMTlVNL0lTRElHSVQvSVNQUklOVCwgbm90IGlzYWxudW0vaXNkaWdpdC9pc3ByaW50LgoJKiB2YXJhc20uYyAoY29uc3Rfc3RyX2h0YWJfaGFzaCwgY29uc3Rfc3RyX2h0YWJfZXEsCgljb21wYXJlX2NvbnN0YW50XzEsIHJlY29yZF9jb25zdGFudF8xKTogQ29uc3RpZnkuCgoyMDAwLTExLTE4ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEByZWRoYXQuY29tPgoKCSogYy1kZWNsLmMgKGdyb2tkZWNsYXJhdG9yKTogU3BlY2lhbCBjYXNlIHRoZSBjcmVhdGlvbiBvZiBhbgoJaW5kZXggZm9yIGEgemVyby1sZW5ndGggYXJyYXkuCgkqIHRyZWUuYyAoYnVpbGRfaW5kZXhfdHlwZSk6IFJldmVydCBPY3QgMjAgY2hhbmdlLgoKMjAwMC0xMS0xOCAgTWFyZWsgTWljaGFsa2lld2ljeiAgPG1hcmVrbUBsaW51eC5vcmcucGw+CgoJKiBjb25maWcvYXZyL2F2ci1wcm90b3MuaCAoYXZyX291dHB1dF9hZGRyX3ZlY19lbHQpOiBQcm90b3R5cGUuCgkqIGNvbmZpZy9hdnIvYXZyLmMgKGp1bXBfdGFibGVzX3NpemUpOiBOZXcgdmFyaWFibGUuCgkoZnVuY3Rpb25fcHJvbG9ndWUpOiBJbml0aWFsaXplIGl0IGFzIDAuCgkoZnVuY3Rpb25fZXBpbG9ndWUpOiBBZGQgaXQgdG8gZnVuY3Rpb25fc2l6ZS4KCShhdnJfb3V0cHV0X2FkZHJfdmVjX2VsdCk6IE5ldyBmdW5jdGlvbi4gIENvdW50IHdvcmRzIGluIGp1bXAKCXRhYmxlcyBpbiBqdW1wX3RhYmxlc19zaXplLiAgTW92ZSBjb2RlIC4uLgoJKiBjb25maWcvYXZyL2F2ci5oIChBU01fT1VUUFVUX0FERFJfVkVDX0VMVCk6IC4uLiBmcm9tIGhlcmUuCglDYWxsIGF2cl9vdXRwdXRfYWRkcl92ZWNfZWx0IGluc3RlYWQuCgkqIGNvbmZpZy9hdnIvYXZyLm1kICh0YWJsZWp1bXApOiBSZW1vdmUgZGlzYWJsZWQgZGVmaW5lX2V4cGFuZC4KCjIwMDAtMTEtMTggIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjb25maWd1cmUuaW46IE1ha2UgLS1lbmFibGUtbmV3LWd4eC1hYmkgdGhlIGRlZmF1bHQuCgkqIGNvbmZpZ3VyZTogTGlrZXdpc2UuCgoyMDAwLTExLTE4ICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBNYWtlZmlsZS5pbiAodHJhZGNwcC5vLCB0cmFkY2lmLm8pOiBEZXBlbmQgb24gdHJhZGNwcC5oLgoKCSogdHJhZGNpZi55OiBJbmNsdWRlIHRyYWRjcHAuaC4gIENvbnN0aWZ5LiAgTWFrZSBmdW5jdGlvbnMgc3RhdGljLgoJTW92ZSBleHRlcm4gZnVuY3Rpb24gZGVjbGFyYXRpb25zIHRvIHRyYWRjcHAuaC4KCgkqIHRyYWRjcHAuYzogTGlrZXdpc2UuCgoJKiB0cmFkY3BwLmg6IE5ldyBmaWxlLgoKMjAwMC0xMS0xOCAgSm9zZXBoIFMuIE15ZXJzICA8anNtMjhAY2FtLmFjLnVrPgoKCSogYy1kZWNsLmMgKGNoZWNrX2Zvcl9sb29wX2RlY2xzKTogTmV3IGZ1bmN0aW9uLgoJKiBjLXBhcnNlLmluIChmb3JfaW5pdF9zdG10KTogTmV3LgoJKHNlbGVjdF9vcl9pdGVyX3N0bXQpOiBVc2UgZm9yX2luaXRfc3RtdC4KCSogYy10cmVlLmggKGNoZWNrX2Zvcl9sb29wX2RlY2xzKTogTmV3IGRlY2xhcmF0aW9uLgoKMjAwMC0xMS0xOCAgTmVpbCBCb290aCAgPG5laWxiQGVhcnRobGluZy5uZXQ+CgoJKiBjcHBpbml0LmM6IFVwZGF0ZSBjb21tZW50cy4KCShjcHBfcmVhZGVyX2luaXQpOiBNYWtlIC1pbWFjcm8gYW5kIC1pbmNsdWRlIHVzZSB0aGUgc3RhbmRhcmQKCSNpbmNsdWRlICIiIHNlYXJjaCBwYXRoLgoJKGRvX2luY2x1ZGVzKTogTmV3IGZ1bmN0aW9uLgoKMjAwMC0xMS0xOCAgQmVuIEVsbGlzdG9uICA8YmplQHJlZGhhdC5jb20+CgoJKiBjb25maWcvc2gvY3J0MS5hc20gKHN0YXJ0X2wpOiBNb3ZlIFBDLXJlbGF0aXZlIG1vdmUgaW5zdHJ1Y3Rpb24KCW91dCBvZiBhIGJyYW5jaCBkZWxheSBzbG90LgoKMjAwMC0xMS0xNyAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCgkqIGNvbmZpZy9hbHBoYS9lbGYuaCAoUFJFRkVSUkVEX0RFQlVHR0lOR19UWVBFKTogU2V0IHRvIERXQVJGMl9ERUJVRy4KCShBU01fU1BFQyk6IERpc2FibGUgYW5kIGVuYWJsZSAubWRlYnVnIGJhc2VkIG9uIC1nc3RhYnMuCgkoQVNNX0ZJTEVfU1RBUlQpOiBPbmx5IHdyaXRlIG91dCBlY29mZiAuZmlsZSBkaXJlY3RpdmUgaWYKCWVtaXR0aW5nIG1kZWJ1ZyBkZWJ1Z2dpbmcuCgoyMDAwLTExLTE3ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEByZWRoYXQuY29tPgoKCSogY29uZmlndXJlLmluIChIQVZFX0FTX0RXQVJGMl9ERUJVR19MSU5FKTogTmV3LiAgRGV0ZWN0Cgl3aGV0aGVyIGFzIGFjY2VwdHMgLmZpbGUvLmxvYyBhbmQgcHJvZHVjZXMgZHdhcmYyIGxpbmUgaW5mby4KCSogZHdhcmYyb3V0LmMgKERXQVJGMl9BU01fTElORV9ERUJVR19JTkZPKTogRGVmYXVsdCBvbiBpZgoJdGhlIGFzc2VtYmxlciBzdXBwb3J0cyBpdC4KCSogY29uZmlnLmluLCBjb25maWd1cmU6IFJlZ2VuZXJhdGUuCgoyMDAwLTExLTE3ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEByZWRoYXQuY29tPgoKCSogZml4aW5jL21rZml4aW5jLnNoOiBEb24ndCBkaXNhYmxlIGZpeGluY2x1ZGVzIGZvciBhbnkgbGludXgqLgoKMjAwMC0xMS0xNyAgSmltIFdpbHNvbiAgPHdpbHNvbkByZWRoYXQuY29tPgoKCSogY29uZmlnL2lhNjQvaWE2NC5jIChlbWl0X2luc25fZ3JvdXBfYmFycmllcnMsIGNhc2UgQ0FMTF9JTlNOKToKCURvbid0IGNsZWFyIG5lZWRfYmFycmllciBpcyBuZXh0X2luc24gaXMgYSBDQUxMX0lOU04sIG9yIGhhcwoJaW5zdHJ1Y3Rpb24gdHlwZSBCIG9yIFVOS05PV04uCgoyMDAwLTExLTE3ICBOZWlsIEJvb3RoICA8bmVpbGJAZWFydGhsaW5nLm5ldD4KCgkqIGNwcGVycm9yLmMgKHByaW50X2ZpbGVfYW5kX2xpbmUpOiBEb24ndCBkaXNwbGF5IGxpbmUgbnVtYmVyIGlmIDAuCgoyMDAwLTExLTE3ICBaYWNrIFdlaW5iZXJnICA8emFja0B3b2xlcnkuc3RhbmZvcmQuZWR1PgoKCSogZ2djLmg6IERlbGV0ZSBnZ2NfYWRkX3N0cmluZ19yb290IGFuZCBnZ2NfbWFya19zdHJpbmcuICBBZGQKCWRpZ2l0X3ZlY3RvciBhbmQgZGlnaXRfc3RyaW5nLgoJKiBzdHJpbmdwb29sLmMgKGRpZ2l0X3ZlY3Rvcik6IE5ldy4KCShnZ2NfYWxsb2Nfc3RyaW5nKTogVXNlIGRpZ2l0X3N0cmluZy4KCgkqIHN0bXQuYyAoZGlnaXRfc3RyaW5ncyk6IERlbGV0ZS4KCShpbml0X3N0bXQpOiBEbyBub3QgaW5pdGlhbGl6ZSBkaWdpdF9zdHJpbmdzLgoJKGV4cGFuZF9hc21fb3BlcmFuZHMpOiBVc2UgZ2djLmgncyBkaWdpdF9zdHJpbmcgbWFjcm8uCgkqIHRvcGxldi5jIChtYXJrX2ZpbGVfc3RhY2spOiBEZWxldGUuCgkoY29tcGlsZV9maWxlKTogRG9uJ3QgY2FsbCBpbml0X3RyZWVfY29kZXMuCgkobWFpbik6IE5vIG5lZWQgdG8gbWFrZSB0aGUgZmlsZSBzdGFjayBhIEdDIHJvb3QuCgkqIHRyZWUuYyAoaW5pdF90cmVlX2NvZGVzKTogRGVsZXRlLgoJKiB0cmVlLmggKGluaXRfdHJlZV9jb2Rlcyk6IERlbGV0ZS4KCgkqIGMtbGV4LmM6IERvbid0IGluY2x1ZGUgZ2djLmguCgkobWFya19zcGxheV90cmVlX25vZGUsIG1hcmtfc3BsYXlfdHJlZSk6IERlbGV0ZS4KCShpbml0X2NfbGV4KTogTm8gbmVlZCB0byBnZ2Nfc3RyZHVwIHN0cmluZyBjb25zdGFudC4gIERvbid0IGFkZAoJZmlsZV9pbmZvX3RyZWUgdG8gR0dDIHJvb3RzLgoJKGNiX2VudGVyX2ZpbGUsIGNiX3JlbmFtZV9maWxlKTogTm8gbmVlZCB0byBnZ2Nfc3RyZHVwCglpcC0+bm9taW5hbF9mbmFtZS4KCgkqIE1ha2VmaWxlLmluIChjLWxleC5vKTogTm8gbG9uZ2VyIGRlcGVuZHMgb24gJChHR0NfSCkuCgoJKiBkYnhvdXQuYyAoZGJ4b3V0X2luaXQpLAoJZHdhcmYyb3V0LmMgKGR3YXJmMm91dF9saW5lKSwKCWdnYy1jb21tb24uYyAoZ2djX21hcmtfcnR4X2NoaWxkcmVuLCBnZ2NfbWFya190cmVlcyksCgl2YXJhc20uYyAobWFya19jb25zdF9oYXNoX2VudHJ5LCBtYXJrX3Bvb2xfY29uc3RhbnQsIGluaXRfdmFyYXNtX29uY2UpLAoJeGNvZmZvdXQuYyAoeGNvZmZvdXRfc291cmNlX2ZpbGUpLAoJaTM4Ni5jIChsb2FkX3BpY19yZWdpc3Rlcik6CglEZWxldGUgY2FsbChzKSB0byBnZ2NfYWRkX3N0cmluZ19yb290IGFuZC9vciBnZ2NfbWFya19zdHJpbmcuCgoJKiBleGNlcHQuYyAoY3JlYXRlX3JldGhyb3dfcmVmKSwKCXByb2ZpbGUuYyAoaW5pdF9lZGdlX3Byb2ZpbGVyKSwKCXRvcGxldi5jIChjb21waWxlX2ZpbGUpLAoJdmFyYXNtLmMgKG5hbWVkX3NlY3Rpb24sIGFzc2VtYmxlX3N0YXRpY19zcGFjZSwKCWFzc2VtYmxlX3RyYW1wb2xpbmVfdGVtcGxhdGUsIG91dHB1dF9jb25zdGFudF9kZWYsIGZvcmNlX2NvbnN0X21lbSksCglpMzg2LmMgKGxvYWRfcGljX3JlZ2lzdGVyKSwKCWlhNjQuYyAoaWE2NF9lbmNvZGVfc2VjdGlvbl9pbmZvKSwKCXJzNjAwMC5jIChyczYwMDBfZW1pdF9sb2FkX3RvY190YWJsZSwgY3JlYXRlX1RPQ19yZWZlcmVuY2UsCglyczYwMDBfZW1pdF9wcm9sb2d1ZSwgcnM2MDAwX2VtaXRfZXBpbG9ndWUpLAoJcnM2MDAwLm1kIChsb2FkX3RvY19haXhfc2ksIGxvYWRfdG9jX2FpeF9kaSk6CglDaGFuZ2UgZ2djX2FsbG9jX3N0cmluZyAodmFyLCAtMSkgdG8gZ2djX3N0cmR1cCAodmFyKS4KCgkqIHByb2ZpbGUuYyAob3V0cHV0X2Z1bmNfc3RhcnRfcHJvZmlsZXIpLAoJdHJlZS5jIChtYWtlX25vZGUpLAoJaTM4Ni5jIChsb2FkX3BpY19yZWdpc3Rlcik6IE5vIG5lZWQgdG8gZ2djX3N0cmR1cCBzdHJpbmcgY29uc3RhbnQuCgoyMDAwLTExLTE3ICBIYW5zLVBldGVyIE5pbHNzb24gIDxocEBheGlzLmNvbT4KCgkqIE1ha2VmaWxlLmluIChjb25maWcuc3RhdHVzKTogRGVwZW5kIG9uIGNvbmZpZy5nY2MuCgkqIGNvbmZpZ3VyZS5pbiA8Zm9yIG1hY2hpbmUgaW4gJGJ1aWxkICRob3N0ICR0YXJnZXQ+OiBNb3ZlCgljb250ZW50cyBvZiBsb29wIGludG8gY29uZmlnLmdjYywgcmVtb3ZpbmcgYXV0b2NvbmYgcXVvdGluZy4KCUZpeCBjaGFuZ2VxdW90ZSBidWcgZm9yIGFscGhhKi0qLXZ4d29ya3MqLgoJKiBjb25maWd1cmU6IFJlZ2VuZXJhdGUuCgkqIGNvbmZpZy5nY2M6IE5ldy4KCjIwMDAtMTEtMTYgIFphY2sgV2VpbmJlcmcgIDx6YWNrQHdvbGVyeS5zdGFuZm9yZC5lZHU+CgoJKiBjLXBhcnNlLmluIChpZl9wcmVmaXgpOiBGaW5kIHRoZSBmaWxlbmFtZSBhbmQgbGluZSBudW1iZXIgYXQKCSQtMiBhbmQgJC0xIHJlc3BlY3RpdmVseS4KCSogZGlhZ25vc3RpYy5jIChlcnJvcl9yZWN1cnNpb24pOiBBZGQgbWlzc2luZyBuZXdsaW5lLCB1c2UKCWZwdXRzLCB0cmFuc2xhdGUgc3RyaW5nLgoKMjAwMC0xMS0xNiAgWmFjayBXZWluYmVyZyAgPHphY2tAd29sZXJ5LnN0YW5mb3JkLmVkdT4KCgkqIHN0cmluZ3Bvb2wuYzogTmV3IGZpbGUuCgkqIGdnYy1jb21tb24uYyAoZ2djX21hcmtfc3RyaW5nX3B0ciwgZ2djX2FkZF9zdHJpbmdfcm9vdCk6IERlbGV0ZS4KCShnZ2NfYWxsb2Nfc3RyaW5nKTogTm93IGluIHN0cmluZ3Bvb2wuby4KCSogZ2djLXBhZ2UuYywgZ2djLXNpbXBsZS5jOiBEbyBub3QgZGVmaW5lIG9yIGFsbG9jYXRlIGVtcHR5X3N0cmluZy4KCSogZ2djLmg6IERlbGV0ZSBwcm90b3R5cGUgb2YgZ2djX2FkZF9zdHJpbmdfcm9vdC4gICNkZWZpbmUKCWdnY19hZGRfc3RyaW5nX3Jvb3QgYW5kIGdnY19tYXJrX3N0cmluZyB0byBub3RoaW5nLiAgUHJvdG90eXBlCglpbml0X3N0cmluZ3Bvb2wgYW5kIHN0cmluZ3Bvb2xfc3RhdGlzdGljcy4KCShnZ2NfYWxsb2Nfc3RyaW5nKTogUmV0dXJucyBhIGNvbnN0IGNoYXIgKi4KCSogdHJlZS5jIChoYXNoX3RhYmxlLCBkb19pZGVudGlmaWVyX3dhcm5pbmdzKTogRGVsZXRlLgoJKGluaXRfb2JzdGFja3MpOiBEb24ndCBpbml0aWFsaXplIHRoZSBpZGVudGlmaWVyIGhhc2ggdGFibGUuCgkoZ2V0X2lkZW50aWZpZXIsIG1heWJlX2dldF9pZGVudGlmaWVyLCBzdGFydF9pZGVudGlmaWVyX3dhcm5pbmdzLAoJc2V0X2lkZW50aWZpZXJfc2l6ZSk6IE5vdyBpbiBzdHJpbmdwb29sLmMuCgkqIHRyZWUuaCAoc3RydWN0IHRyZWVfc3RyaW5nKTogQ29uc3RpZnkgcG9pbnRlciBmaWVsZC4KCShhcHByb3hfc3FydCk6IFByb3RvdHlwZS4KCgkqIE1ha2VmaWxlLmluIChzdHJpbmdwb29sLm8pOiBBZGQgcnVsZSwgbWVudGlvbiBpbiBPQkpTLgoKCSogdG9wbGV2LmMgKGFwcHJveF9zcXJ0KTogTmV3IGZ1bmN0aW9uLgoJKGNvbXBpbGVfZmlsZSk6IENhbGwgc3RyaW5ncG9vbF9zdGF0aXN0aWNzIGlmIG1lbV9yZXBvcnQgaXMgb24uCgkobWFpbik6IENhbGwgaW5pdF9zdHJpbmdwb29sLgoKCSogYnVpbHRpbnMuYyAoY19zdHJsZW4pLCBjLWRlY2wuYyAoZmluaXNoX2RlY2wpLCBjLWxleC5jCgkocHJvY2Vzc19kaXJlY3RpdmUpLCBjLXR5cGVjay5jIChjb25zdHJ1Y3Rvcl9hc21zcGVjLCBzdHJ1Y3QKCWluaXRpYWxpemVyX3N0YWNrLCBzdGFydF9pbml0KSwgZXhjZXB0LmMgKGNyZWF0ZV9yZXRocm93X3JlZiksCglzdG10LmMgKGRpZ2l0X3N0cmluZ3MpLCB0b3BsZXYuYyAoZGVjb2RlX2Zfb3B0aW9uKSwgdHJlZS5jCgkoYnVpbHRfaW5fZmlsZW5hbWUpLCB2YXJhc20sYyAoaW5fbmFtZWRfbmFtZSwKCWFzc2VtYmxlX3N0YXRpY19zcGFjZSwgc3RydWN0IGNvbnN0YW50X2Rlc2NyaXB0b3IsIHN0cnVjdAoJZGVmZXJyZWRfc3RyaW5nLCBzdHJ1Y3QgcG9vbF9jb25zdGFudCwgZm9yY2VfY29uc3RfbWVtKSwKCWkzODYuYyAocGljX2xhYmVsX25hbWUsIGdsb2JhbF9vZmZzZXRfdGFibGVfbmFtZSksIHJzNjAwMC5jCgkocnM2MDAwX2VtaXRfcHJvbG9ndWUsIHJzNjAwMF9lbWl0X2VwaWxvZ3VlKSA6IENvbnN0aWZ5IGEgY2hhciAqLgoKCSogYy1jb21tb24uYyAoY29tYmluZV9zdHJpbmdzKTogQ29tYmluZSBzdHJpbmdzIGluIHNjcmF0Y2gKCWJ1ZmZlciwgdGhlbiBwYXNzIHRvIGJ1aWxkX3N0cmluZy4KCSogb3B0YWJzLmMgKGluaXRfbGliZnVuY3MpLCBwcm9maWxlLmMgKGluaXRfZWRnZV9wcm9maWxlciwKCW91dHB1dF9mdW5jX3N0YXJ0X3Byb2ZpbGVyKSwgc3RtdC5jIChpbml0X3N0bXQpLCBhbHBoYS5jCgkoYWxwaGFfbmVlZF9saW5rYWdlKSwgYXJtLmMgKGFybV9lbmNvZGVfY2FsbF9hdHRyaWJ1dGUpLAoJaTM4Ni5jIChsb2FkX3BpY19yZWdpc3RlciksIGlhNjQuYyAoaWE2NF9lbmNvZGVfc2VjdGlvbl9pbmZvKSwKCXJzNjAwMC5jIChyczYwMDBfZW5jb2RlX3NlY3Rpb25faW5mbyk6IENyZWF0ZSBzdHJpbmcgaW4KCXNjcmF0Y2ggYnVmZmVyLCB0aGVuIHBhc3MgdG8gZ2djX2FsbG9jX3N0cmluZy4KCgkqIHN0bXQuYyAoZXhwYW5kX2FzbV9vcGVyYW5kcyk6IElmIHdlIG11c3QgYWRqdXN0IHRoZQoJY29uc3RyYWludCBzdHJpbmdzLCBkbyBzbyBieSBjcmVhdGluZyBhIG5ldyBvbmUsIG5vdCBieQoJbW9kaWZ5aW5nIHRoZSBvbGQgb25lIGluIHBsYWNlLiAgQ29uc3RpZnkgc29tZSBjaGFyICpzLgoJKiBjb25maWcvcGEvcGEuYyAoaHBwYV9lbmNvZGVfbGFiZWwpOiBEcm9wIHVubmVjZXNzYXJ5IHNlY29uZAoJYXJndW1lbnQuICBDcmVhdGUgc3RyaW5nIGluIHNjcmF0Y2ggYnVmZmVyLCB0aGVuIHBhc3MgdG8KCWdnY19hbGxvY19zdHJpbmcuCgkqIGNvbmZpZy9wYS9wYS1wcm90b3MuaDogVXBkYXRlIHByb3RvdHlwZS4KCSogY29uZmlnL3BhL2VsZi5oLCBjb25maWcvcGEvcGEuaCwgY29uZmlnL3BhL3NvbS5oOgoJaHBwYV9lbmNvZGVfbGFiZWwgdGFrZXMgb25seSBvbmUgYXJndW1lbnQuCgoyMDAwLTExLTE2ICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBtY29yZS5jIChtY29yZV9leHBhbmRfcHJvbG9nKTogQ2FsbCB4bWFsbG9jL3hyZWFsbG9jLCBub3QKCW1hbGxvYy9yZWFsbG9jLgoKCSogY3BwbGliLmMgKGdsdWVfaGVhZGVyX25hbWUpOiBMaWtld2lzZS4KCgkqIGZpeGluY2wuYyAocnVuX2NvbXBpbGVzLCBzdGFydF9maXhlcik6IExpa2V3aXNlLgoKCSogZml4bGliLmMgKGxvYWRfZmlsZV9kYXRhKTogTGlrZXdpc2UuCgoJKiBta2RlcHMuYyAobXVuZ2UpOiBMaWtld2lzZS4KCjIwMDAtMTEtMTcgIEhhbnMtUGV0ZXIgTmlsc3NvbiAgPGhwQGF4aXMuY29tPgoKCSogZGVmYXVsdHMuaCBbRUhfRlJBTUVfU0VDVElPTl9BU01fT1BdIChFSF9GUkFNRV9TRUNUSU9OKTogUmVtb3ZlCgl0cmFpbGluZyAnOycuICBGaXggZm9ybWF0dGluZy4KCjIwMDAtMTEtMTYgIEppbSBXaWxzb24gIDx3aWxzb25AcmVkaGF0LmNvbT4KCgkqIGNvbmZpZy9pYTY0L2lhNjQuaCAoTUFTS19JTkxJTkVfRElWX0xBVCwgTUFTS19JTkxJTkVfRElWX1RIUik6CglTaGlmdCBtYXNrcyBsZWZ0IGJ5IG9uZSB0byBhdm9pZCBjb25mbGljdC4KCgkqIGNvbmZpZy9pYTY0L2lhNjQuYyAoaWE2NF9lbmNvZGVfc2VjdGlvbl9pbmZvKTogRGlzYWxsb3cgZGVjbHMgd2l0aAoJREVDTF9FWFRFUk5BTCBzZXQuCgoyMDAwLTExLTE2ICBOaWNrIENsaWZ0b24gIDxuaWNrY0ByZWRoYXQuY29tPgoKCSogY29uZmlnL2FybS9hcm0uYyAob3V0cHV0X2FybV9wcm9sb2d1ZSk6IE5vdGUgbmVzdGVkIGZ1bmN0aW9ucy4KCShhcm1fZXhwYW5kX3Byb2xvZ3VlKTogRm9yIG5lc3RlZCBmdW5jdGlvbnMgcHJlc2VydmUgdGhlCglzdGF0aWMgY2hhaW4gcmVnaXN0ZXIgZHVyaW5nIHN0YWNrIGZyYW1lIGNyZWF0aW9uLgoKCSogY29uZmlnL2FybS9hcm0uaCAoU1RBVElDX0NIQUlOX1JFR05VTSk6IENoYW5nZSB0byAxMi4KCShBUk1fSU5JVElBTF9GUkFNRV9FTElNSU5BVElPTl9PRkZTRVQpOiBGb3IgYSBuZXN0ZWQgZnVuY3Rpb24KCXdpdGggYSBzdGFjayBmcmFtZSB0aGVyZSBpcyBhIDQgYnl0ZSBnYXAgYmV0d2VlbiB0aGUgYXJnCglwb2ludGVyIGFuZCB0aGUgaGFyZCBmcmFtZSBwb2ludGVyICh1c2VkIHRvIHByZXNlcnZlIHRoZQoJc3RhdGljIGNoYWluIHJlZ2lzdGVyIGR1cmluZyBzdGFjayBmcmFtZSBjcmVhdGlvbikuCgoyMDAwLTExLTE2ICBESiBEZWxvcmllICA8ZGpAcmVkaGF0LmNvbT4KCgkqIHJ0bC5jIChyZWFkX3J0eCk6IFByb3ZpZGUgc3VpdGFibGUgbmFtZXMgZm9yIHVubmFtZWQKCWRlZmluZV9pbnNuIGFuZCBkZWZpbmVfaW5zbl9hbmRfc3BsaXQgcGF0dGVybnMsIGJhc2VkIG9uIGZpbGUKCWFuZCBsaW5lIG51bWJlcnMuCgoyMDAwLTExLTE1ICBOZWlsIEJvb3RoICA8bmVpbGJAZWFydGhsaW5nLm5ldD4KCgkqIGNwcGxpYi5jIChzdGFydF9kaXJlY3RpdmUsIGVuZF9kaXJlY3RpdmUpOiBOZXcgZnVuY3Rpb25zLgoJKF9jcHBfaGFuZGxlX2RpcmVjdGl2ZSwgcnVuX2RpcmVjdGl2ZSk6IFVzZSB0aGVtLgoJKF9jcHBfaGFuZGxlX2RpcmVjdGl2ZSk6IERvbid0IC1XdHJhZGl0aW9uYWwgb24gaW5kZW50ZWQKCW51bGwgZGlyZWN0aXZlcy4KCShfY3BwX3B1c2hfYnVmZmVyKTogRG9uJ3QgcmUtY2xlYXIgd2FzX3NraXBwaW5nLgoJKiBjcHBsaWIuaCAoc3RydWN0IGNwcF9yZWFkZXIpOiBOZXcgbWVtYmVyIGxhX3NhdmVkLgoJKiBjcHBtYWNyby5jIChjcHBfZ2V0X3Rva2VuKTogRG9uJ3QgaW50ZXJwcmV0IF9QcmFnbWEgaW4KCWRpcmVjdGl2ZXMuCgoJZ2NjLmRnL2NwcC9fUHJhZ21hMS5jOiBVcGRhdGUuCglnY2MuZGcvY3BwL19QcmFnbWEyLmM6IE5ldyB0ZXN0LgoKMjAwMC0xMS0xNSAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIHRvcGxldi5jICh3cmFwdXBfZ2xvYmFsX2RlY2xhcmF0aW9ucyk6IERvbid0IHdyaXRlIG91dAoJYXJ0aWZpY2lhbCBzdGF0aWMgdmFyaWFibGVzIHRoYXQgYXJlbid0IG5lZWRlZC4KCjIwMDAtMTEtMTUgIEJlcm5kIFNjaG1pZHQgIDxiZXJuZHNAcmVkaGF0LmNvLnVrPgoKCSogaWE2NC5jIChzdHJ1Y3QgZ3JvdXApOiBOZXcgc3RydWN0dXJlLgoJKGxhc3RfZ3JvdXApOiBOZXcgc3RhdGljIGFycmF5LgoJKGdyb3VwX2lkeCk6IE5ldyBzdGF0aWMgdmFyaWFibGUuCgkoZW1pdF9ncm91cF9iYXJyaWVyX2FmdGVyLCBlcnJhdGFfZmluZF9hZGRyZXNzX3JlZ3MsIGVycmF0YV9lbWl0X25vcHMpOgoJTmV3IHN0YXRpYyBmdW5jdGlvbnMuCgkoZW1pdF9pbnNuX2dyb3VwX2JhcnJpZXJzKTogSW5pdGlhbGl6ZSBhbmQga2VlcCB0cmFjayBvZiBncm91cF9pZHgKCWFuZCBsYXN0X2dyb3VwLgoJQ2FsbCBlcnJhdGFfZW1pdF9ub3BzIGlmIFRBUkdFVF9CX1NURVAgb3IgVEFSR0VUX0FfU1RFUC4KCVJlcGxhY2UgYWxsIGNhbGxzIHRvIGVtaXRfaW5zbl9hZnRlciB0aGF0IGVtaXQgYSBncm91cCBiYXJyaWVyIHRvIHVzZQoJZW1pdF9ncm91cF9iYXJyaWVyX2FmdGVyLgoJKiBpYTY0LmggKE1BU0tfQl9TVEVQKTogTmV3LgoJKG90aGVyIE1BU0tfWFhYIG1hY3Jvcyk6IFJlbnVtYmVyZWQuCgkoVEFSR0VUX0JfU1RFUCk6IE5ldy4KCShUQVJHRVRfU1dJVENIRVMpOiBBZGQgLW1iLXN0ZXAuCgoyMDAwLTExLTE1ICBGcmVkIEZpc2ggIDxmbmZAYmUuY29tPgoKCSogZml4aW5jL21rZml4aW5jLnNoIChmaXhpbmNsdWRlcyk6IEFkZCAqLSotYmVvcyogdG8gbGlzdCBvZgoJbWFjaGluZXMgZm9yIHdoaWNoIGZpeGluY2x1ZGVzIGlzIG5vdCBuZWVkZWQuCgkqIGNvbmZpZy9pMzg2L3gtYmVvcyAoU1RNUF9GSVhQUk9UTyk6IERvbid0IHJ1biBmaXhwcm90by4KCjIwMDAtMTEtMTUgIEphc29uIE1lcnJpbGwgIDxqYXNvbkByZWRoYXQuY29tPgoKCSogZGlhZ25vc3RpYy5jIChmaW5pc2hfYWJvcnQpOiBOZXcgZm4uCgkoZmFuY3lfYWJvcnQsIGVycm9yX3JlY3Vyc2lvbik6IFVzZSBpdC4KCSogdG9wbGV2LmMgKGNyYXNoX3NpZ25hbCk6IExpa2V3aXNlLgoJKiBkaWFnbm9zdGljLmg6IERlY2xhcmUgaXQuCgoyMDAwLTExLTEzICBBbmRyZXcgSGFsZXkgIDxhcGhAcmVkaGF0LmNvbT4KCgkqIHRyZWUuYyAoYnVpbGRfdHlwZV9ub19xdWFscyk6IE5ldyBmdW5jdGlvbi4KCSogdHJlZS5oIChidWlsZF90eXBlX25vX3F1YWxzKTogRGVjbGFyZS4KCSogYy1jb21tb24uYyAoY19nZXRfYWxpYXNfc2V0KTogV2hlbiBjb25zaWRlcmluZyB0eXBlCgljb21wYXRpYmlsaXR5IGZvciBwb2ludGVyIHR5cGVzLCBpZ25vcmUgY3YtcXVhbGlmaWVycyBhbnl3aGVyZSBpbgoJYSBwb2ludGVyIGNoYWluLgoKMjAwMC0xMS0xNSAgR3JhaGFtIFN0b3R0ICA8Z3JhaGFtc0ByZWRoYXQuY29tPgoKCSogcmVncmVuYW1lLmMgKHNjYW5fcnR4X3J0eCk6IFNraXAgdG8gdGhlIG5leHQgY2hhaW4gb24KCWVuY291bnRlcmluZyBhIHRlcm1pbmF0ZWQgY2hhaW4uCgoyMDAwLTExLTE0ICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogY29uZmlndXJlLmluOiBNb3ZlIGNoZWNrIGZvciBWMyBhYm92ZSBjaGVjayBmb3IgQysrIGhlYWRlci1maWxlCglkaXJlY3RvcnkuCgkqIGNvbmZpZ3VyZTogUmVnZW5lcmF0ZWQuCgoyMDAwLTExLTE0ICBESiBEZWxvcmllICA8ZGpAcmVkaGF0LmNvbT4KCgkqIGNvbmZpZy92ODUwL3Y4NTAuYzogUmVtb3ZlIG9ic3RhY2tzLgoKVHVlIE5vdiAxNCAyMTo1NDozMSAyMDAwICBNYXJlayBNaWNoYWxraWV3aWN6ICA8bWFyZWttQGxpbnV4Lm9yZy5wbD4gJiBEZW5pcyBDaGVydHlrb3YgIDxkZW5pc2NAb3ZlcnRhLnJ1PgoKCSogY29uZmlnL2F2ci9hdnIuYyAoYXZyX2Nhc2VfdmFsdWVzX3RocmVzaG9sZCk6IE5ldy4KCShhdnJfb3ZlcnJpZGVfb3B0aW9ucyk6IFNldCBpdCBkZXBlbmRpbmcgb24gb3B0aW9ucywgbWFrZSBpdCBsYXJnZQoJd2hlbiBub3Qgb3B0aW1pemluZyB0byB3b3JrIGFyb3VuZCAidW5hYmxlIHRvIGdlbmVyYXRlIHJlbG9hZHMiLgoKCSogY29uZmlnL2F2ci9hdnIuaCAoVEFSR0VUX1NXSVRDSEVTKTogQWRkIC1tbm8tdGFibGVqdW1wIG9wdGlvbi4KCShFWFRSQV9TRUNUSU9OX0ZVTkNUSU9OUyk6IE1ha2UgdGhlIC5wcm9nbWVtLmdjY19zd190YWJsZSBzZWN0aW9uCglleGVjdXRhYmxlIGlmIG5vdCBBVlJfTUVHQS4gIE1ha2Ugc3VyZSBqdW1wIHRhYmxlcyBhcmUgd29yZC1hbGlnbmVkLgoJKEpVTVBfVEFCTEVTX0lOX1RFWFRfU0VDVElPTik6IERlZmluZSBhcyAwLCBub3QgMS4KCShBU01fT1VUUFVUX0FERFJfVkVDX0VMVCk6IE9wdGltaXplLCB1c2UgInJqbXAiIGlmIG5vdCBBVlJfTUVHQS4KCShhdnJfY2FzZV92YWx1ZXNfdGhyZXNob2xkKTogRGVjbGFyZSBhcyBleHRlcm4gaW50LgoJKENBU0VfVkFMVUVTX1RIUkVTSE9MRCk6IERlZmluZSBhcyBhdnJfY2FzZV92YWx1ZXNfdGhyZXNob2xkLgoKCSogY29uZmlnL2F2ci9hdnIubWQgKHRhYmxlanVtcCk6IFJlbW92ZWQuCgkoKnRhYmxlanVtcF9yam1wKTogTmV3IGZvciBqdW1wIHRhYmxlcyBtYWRlIGZyb20gInJqbXAiIGluc3RydWN0aW9ucy4KCSgqdGFibGVqdW1wX2xpYiwgKnRhYmxlanVtcF9lbmgsICp0YWJsZWp1bXApOiBDaGFuZ2UgdG8gZXhwZWN0IHRoZQoJaW5kZXggaW4gdGhlIHRhYmxlLCBub3QgbXVsdGlwbGllZCBieSAyLgoJKGNhc2VzaSk6IENoYW5nZSB0byBtYXRjaCB0aGUgYWJvdmUgaW5zbnMuICBBbHdheXMgZW5hYmxlLgoKCSogY29uZmlnL2F2ci9saWJnY2MuUyAoX190YWJsZWp1bXBfXyk6IFJlbmFtZSB0byBfX3RhYmxlanVtcDJfXy4KCUNoYW5nZSB0byBleHBlY3QgdGhlIHdvcmQgYWRkcmVzcyBvZiB0aGUgdGFibGUsIG11bHRpcGx5IGl0IGJ5IDIKCWhlcmUgYW5kIG5vdCBpbiB0aGUgY2FsbGVyLiAgQ2hhbmdlICJhZGl3IiB0byBmYXN0ZXIgImluYyIuCgoyMDAwLTExLTE0ICBOZWlsIEJvb3RoICA8bmVpbGJAZWFydGhsaW5nLm5ldD4KCgkqIGNwcGV4cC5jIChwYXJzZV9kZWZpbmVkKTogQ2FsbCBjcHBfZ2V0X3Rva2VuIG5vdAoJX2NwcF9nZXRfdG9rZW4uCgkobGV4KTogU2ltaWxhcmx5LgoJKiBjcHBsZXguYyAoY3BwX291dHB1dF9saW5lKTogU2ltaWxhcmx5LgoJKiBjcHBsaWIuYyAoZ2x1ZV9oZWFkZXJfbmFtZSwgZG9fbGluZSwgZG9faWRlbnQsCglwYXJzZV9hbnN3ZXIsIHBhcnNlX2Fzc2VydGlvbik6IFNpbWlsYXJseS4KCShfY3BwX2hhbmRsZV9kaXJldGl2ZSk6IERvbid0IHNhdmUgdG8gbG9va2FoZWFkcwoJd2hlbiBwcm9jZXNzaW5nIGRpcmVjdGl2ZXMuCgkqIGNwcG1hY3JvLmMgKHBhcnNlX2FyZywgZXhwYW5kX2FyZyk6IENhbGwgY3BwX2dldF90b2tlbiBub3QKCV9jcHBfZ2V0X3Rva2VuLgoJKGZ1bmxpa2VfaW52b2NhdGlvbl9wKTogRG9uJ3Qgc2F2ZSB0byBsb29rYWhlYWRzCgl3aGVuIHByZS1leHBhbmRpbmcgYXJndW1lbnRzLgoJKF9jcHBfZ2V0X3Rva2VuKTogRGVsZXRlLgoJKGNwcF9nZXRfdG9rZW4pOiBNZXJnZSBjb250ZW50cyBvZiBfY3BwX2dldF90b2tlbi4KCjIwMDAtMTEtMTQgIEpha3ViIEplbGluZWsgIDxqYWt1YkByZWRoYXQuY29tPgoKCSogYnVpbHRpbnMuYyAoZXhwYW5kX2J1aWx0aW5fc2V0am1wKTogU2V0CgljdXJyZW50X2Z1bmN0aW9uX2NhbGxzX3NldGptcC4KCShleHBhbmRfYnVpbHRpbl9sb25nam1wKTogU2V0IGN1cnJlbnRfZnVuY3Rpb25fY2FsbHNfbG9uZ2ptcC4KCgkqIGNvbmZpZy9zcGFyYy9zcGFyYy5tZCAoYnVpbHRpbl9zZXRqbXBfc2V0dXApOiBOZXcgZXhwYW5kLgoJKGRvX2J1aWx0aW5fc2V0am1wX3NldHVwKTogTmV3IGluc24uCgpUdWUgTm92IDE0IDEyOjM0OjU2IDIwMDAgIFJpY2hhcmQgS2VubmVyICA8a2VubmVyQHZsc2kxLnVsdHJhLm55dS5lZHU+CgoJKiB0cmVlLmMgKGdldF91bndpZGVuZWQpOiBVc2UgaG9zdF9pbnRlZ2VycCBhbmQgdHJlZV9sb3dfY3N0LgoJKGludF9maXRzX3R5cGVfcCk6IEZvciB2YXJpYWJsZSBib3VuZHMsIGNhbGwgZm9yY2VfZml0X3R5cGUuCgoyMDAwLTExLTE0ICBKYWt1YiBKZWxpbmVrICA8amFrdWJAcmVkaGF0LmNvbT4KCgkqIHZhcmFzbS5jIChzdHJ1Y3QgZGVmZXJyZWRfc3RyaW5nKTogTmV3IHN0cnVjdHVyZS4KCShjb25zdF9zdHJfaHRhYik6IE5ldyB2YXJpYWJsZS4KCShTVFJIQVNIKTogTmV3IG1hY3JvLgoJKG1hcmtfY29uc3Rfc3RyX2h0YWJfMSwgbWFya19jb25zdF9zdHJfaHRhYiwgY29uc3Rfc3RyX2h0YWJfaGFzaCwKCWNvbnN0cl9zdHJfaHRhYl9lcSwgY29uc3Rfc3RyX2h0YWJfZGVsKTogTmV3IGZ1bmN0aW9ucy4KCShvdXRwdXRfY29uc3RhbnRfZGVmKTogQWRkIERFRkVSIGFyZ3VtZW50LCBkZWZlciBzdHJpbmcKCWNvbnN0YW50cyB1bnRpbCBtYXJrX2NvbnN0YW50X3Bvb2wgdGltZSBpZiByZXF1ZXN0ZWQuCgkobWFya19jb25zdGFudF9wb29sKTogV2FsayB0aGUgaW5zbiBjaGFpbiBldmVuIGlmIGNvbnN0X3N0cl9odGFiIGlzCglub3QgZW1wdHkuCgkobWFya19jb25zdGFudHMpOiBJZiBhIFNZTUJPTF9SRUYgZm9yIGRlZmVycmVkIHN0cmluZyBpcyBmb3VuZCwKCW91dHB1dCBpdCBhbmQgcmVtb3ZlIGZyb20gaGFzaCB0YWJsZS4KCShvdXRwdXRfYWRkcmVzc2VkX2NvbnN0YW50cyk6IFNldCBERUZFUiB0byAwIGluIGNhbGwgdG8KCW91dHB1dF9jb25zdGFudF9kZWYuCgkqIHJ0bC5oIChTVFJJTkdfUE9PTF9BRERSRVNTX1ApOiBEZWZpbmUuCgkob3V0cHV0X2NvbnN0YW50X2RlZik6IEFkanVzdCBwcm90b3R5cGUuCgkqIGV4cHIuYyAoZXhwYW5kX2V4cHIpOiBTZXQgREVGRVIgdG8gMSBpbiBjYWxsIHRvIG91dHB1dF9jb25zdGFudF9kZWYuCgoyMDAwLTExLTE0ICBDaGFuZHJha2FsYSBDaGF2dmEgIDxjY2hhdnZhQHJlZGhhdC5jb20+CgoJKiBvcHRhYnMuYyAoZXhwYW5kX2NvbXBsZXhfYWIpOjogVXNlIG92ZXJmbG93LXRyYXBwaW5nIG9wdGFicyBmb3IKCXNpZ25lZCB0eXBlcyBpZiBmbGFnX3RyYXB2LgoKMjAwMC0xMS0xNCAgWmFjayBXZWluYmVyZyAgPHphY2tAd29sZXJ5LnN0YW5mb3JkLmVkdT4KCgkqIHRyYWRjcHAuYywgdHJhZGNpZi55OiBVcGRhdGUgRlNGIG1haWxpbmcgYWRkcmVzcywgZGVsZXRlCglyZWZlcmVuY2UgdG8gR1BMdjEuCgoyMDAwLTExLTE0ICBKb3NlcGggUy4gTXllcnMgIDxqc20yOEBjYW0uYWMudWs+CgoJKiBjLWNvbW1vbi5oIChDVElfQ19TSVpFX1RZUEUpOiBVcGRhdGUgY29tbWVudC4KCjIwMDAtMTEtMTQgIEpha3ViIEplbGluZWsgIDxqYWt1YkByZWRoYXQuY29tPgoKCSogdmFyYXNtLmMgKHN0cnVjdCB2YXJhc21fc3RhdHVzKTogQ2hhbmdlIHhfY29uc3RfcnR4X3N5bV9oYXNoX3RhYmxlCgl0byBhcnJheSBvZiBwb29sX2NvbnN0bmF0IHBvaW50ZXJzLgoJKHN0cnVjdCBwb29sX2NvbnN0YW50KTogQWRkIG5leHRfc3ltIGFuZCBsYWJlbCBtZW1iZXJzLgoJKHN0cnVjdCBwb29sX3N5bSk6IFJlbW92ZS4KCShpbml0X3ZhcmFzbV9zdGF0dXMpOiBDaGFuZ2UgcG9vbF9zeW0gaW50byBwb29sX2NvbnN0YW50LgoJKG1hcmtfcG9vbF9jb25zdGFudCk6IE1hcmsgcGMtPmxhYmVsIHN0cmluZyBhcyB3ZWxsLgoJKG1hcmtfcG9vbF9zeW1faGFzaF90YWJsZSk6IFJlbW92ZS4KCShtYXJrX3ZhcmFzbV9zdGF0dXMpOiBSZW1vdmUgaXQgZnJvbSBjYWxsZXIgYXMgd2VsbC4KCShmcmVlX3ZhcmFzbV9zdGF0dXMpOiBEb24ndCBmcmVlIHBvb2xfc3ltIHN0cnVjdHVyZXMuCgkoZm9yY2VfY29uc3RfbWVtKTogRG9uJ3QgYWxsb2NhdGUgcG9vbF9zeW0gc3RydWN0dXJlLCBpbnN0ZWFkCglmaWxsIHBvb2wtPmxhYmVsIGFuZCBjaGFpbiBpdCBpbnRvIHJ0eF9zeW0gaGFzaCB0YWJsZS4KCShmaW5kX3Bvb2xfY29uc3RhbnQsIG1hcmtfY29uc3RhbnRfcG9vbCk6IFVzZSBwb29sX2NvbnN0YW50IGluc3RlYWQKCW9mIHBvb2xfc3ltLgoKMjAwMC0xMS0xNCAgSmFrdWIgSmVsaW5layAgPGpha3ViQHJlZGhhdC5jb20+CgoJKiByZWxvYWQxLmMgKGVtaXRfaW5wdXRfcmVsb2FkX2luc25zKTogSG9ub3IgZm9yY2luZyBvZiBjb25zdGFudHMKCWludG8gbWVtb3J5IGJ5IFBSRUZFUlJFRF9SRUxPQURfQ0xBU1MgTk9fUkVHUy4KCjIwMDAtMTEtMTQgIE1pY2hhZWwgTWF0eiAgPG1hdHptaWNoQGNzLnR1LWJlcmxpbi5kZT4KCgkqIGRvbWluYW5jZS5jOiBOZXcgZmlsZS4KCSogTWFrZWZpbGUuaW4gKE9CSlMpOiBBZGQgZG9taW5hbmNlLm8uCgoJKiBmbG93LmMgKGNvbXB1dGVfZmxvd19kb21pbmF0b3JzKTogUmVtb3ZlLgoJKGNvbXB1dGVfaW1tZWRpYXRlX2RvbWluYXRvcnMpOiBSZW1vdmUuCgkoY29tcHV0ZV9pbW1lZGlhdGVfcG9zdGRvbWluYXRvcnMpOiBSZW1vdmUuCgkqIGJhc2ljLWJsb2NrLmg6IFJlbW92ZSB0aGVpciBwcm90b3R5cGVzLgoJKGNhbGN1bGF0ZV9kb21pbmFuY2VfaW5mbyk6IEFkZCBwcm90b3R5cGUuCgoJKiBkY2UuYyAoZWxpbWluYXRlX2RlYWRfY29kZSk6IENoYW5nZSBjYWxscyB0byBhYm92ZSBmdW5jdGlvbnMuCglEb24ndCBjb21wdXRlIGRvbWluYXRvcnMgYnV0IG9ubHkgaW1tZWRpYXRlIGRvbWluYXRvcnMuCgkqIGZsb3cuYyAoZmxvd19sb29wc19maW5kKTogQ2hhbmdlIGNhbGxlcnMuCgkqIGdjc2UuYyAoY29tcHV0ZV9jb2RlX2hvaXN0X2RhdGEpOiBMaWtld2lzZS4KCSogaGFpZmEtc2NoZWQuYyAoc2NoZWR1bGVfaW5zbnMpOiBMaWtld2lzZS4KCSogaWZjdnQuYyAoaWZfY29udmVydCk6IExpa2V3aXNlLgoJKiBzc2EuYyAoY29udmVydF90b19zc2EpOiBMaWtld2lzZSwgYW5kIG9ubHkgY29tcHV0ZSBpbW1lZGlhdGUKCWRvbWluYXRvcnMuCgoyMDAwLTExLTE0ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEByZWRoYXQuY29tPgoKCSogc3RtdC5jICh3YXJuX2lmX3VudXNlZF92YWx1ZSk6IERvbid0IHdhcm4gaWYgdGhlIGV4cHJlc3Npb24KCWhhcyBzaWRlIGVmZmVjdHMuCgoJKiBjLXR5cGVjay5jIChjX3NpemVvZik6IEZvbGQgcmVzdWx0IHRvIGNfc2l6ZV90eXBlX25vZGUuCgkoY19zaXplb2Zfbm93YXJuLCBjX2FsaWdub2YsIGNfYWxpZ25vZl9leHByKTogTGlrZXdpc2UuCgoyMDAwLTExLTEzICBGcmFueiBTaXJsICA8RnJhbnouU2lybC1rZXJuZWxAbGF1dGVyYmFjaC5jb20+CgoJKiBsb29wLmMgKGJhc2ljX2luZHVjdGlvbl92YXIpOiBSZXZlcnQgYWNjaWRlbnRhbCBjaGVja2luLgoKMjAwMC0xMS0xMyAgSGFucy1QZXRlciBOaWxzc29uICA8aHBAYXhpcy5jb20+CgoJKiBjLWxleC5jIChjYl9sZWF2ZV9maWxlKTogSGFybW9uaXplIGNvbmRpdGlvbnMgYW5kIG9yZGVyIG9mCglzdGF0ZW1lbnRzIHRvIHRob3NlIG9mIHByb2Nlc3NfZGlyZWN0aXZlIGZvciAoYWN0aW9uID09IGFjdF9wb3ApLgoKCSogY29sbGVjdDIuYyAobWFpbik6IFBhc3Mgb24gLUIgb3B0aW9ucyBmcm9tIENPTExFQ1RfR0NDX09QVElPTlMuCgoJKiBsb2NhbC1hbGxvYy5jIChlcXVpdl9pbml0X21vdmFibGVfcCk6IFJlZmVyZW5jZXMgdG8gQ0MwIGFyZSBub3QKCW1vdmFibGUuCgoyMDAwLTExLTEzICBKb3NlcGggUy4gTXllcnMgIDxqc20yOEBjYW0uYWMudWs+CgoJKiBjLXBhcnNlLmluIChzdG10c19hbmRfZGVjbHMpOiBEZXByZWNhdGUgdXNlIG9mIGxhYmVsIGF0IGVuZCBvZgoJY29tcG91bmQgc3RhdGVtZW50LgoKMjAwMC0xMS0xMyAgTmVpbCBCb290aCAgPG5laWxiQGVhcnRobGluZy5uZXQ+CgoJKiBjcHBsZXguYyAoX2NwcF9sZXhfdG9rZW4pOiBDUFBfQ09NTUVOVCBhbmQgdHJ1ZSBDUFBfRU9GCgljYXNlcyByZXR1cm4gd2l0aG91dCBNSSBjaGVjay4KCSogY3BwbGliLmMgKGRvX2RpYWdub3N0aWMpOiBUYWtlIGJvb2xlYW4gb2Ygd2hldGhlciB0bwoJcHJpbnQgdGhlIGRpcmVjdGl2ZSBuYW1lLgoJKGRvX2Vycm9yLCBkb193YXJuaW5nKTogVXBkYXRlLgoJKGRvX3ByYWdtYV9kZXBlbmRlbmN5KTogVXNlIGl0LgoJKiBjcHBsaWIuaCAoVkFSQVJHU19GSVJTVCk6IERlbGV0ZS4KCShzdHJ1Y3QgY3BwX3Rva2VuKTogRGVsZXRlIGludGVnZXIuCgkqIGNwcG1hY3JvLmMgKGVudGVyX21hY3JvX2NvbnRleHQpOiBNb3ZlIGRpc2FibGVkIGNoZWNrCgl0byBfY3BwX2dldF90b2tlbi4KCShfY3BwX2dldF90b2tlbik6IFNpbXBsaWZ5IGludG8gYSBzaW5nbGUgbG9vcC4KCjIwMDAtMTEtMTMgIFJpY2hhcmQgRWFybnNoYXcgIDxyZWFybnNoYUBhcm0uY29tPgoKCSogY29uZmlndXJlLmluOiAgVXNlICd0ZXN0IC1mJyBub3QgJ1sgLWUnLgoJKiBjb25maWd1cmU6IFJlZ2VuZXJhdGVkLgoKMjAwMC0xMS0xMyAgREogRGVsb3JpZSAgPGRqQHJlZGhhdC5jb20+CgoJKiBjb25maWcvbW4xMDMwMC9tbjEwMzAwLm1kIChzdG9yZV9tb3ZtKTogTm90ZSB3aGljaCByZWdpc3RlcnMgYXJlCglyZWFsbHkgdXNlZCBvciBjbG9iYmVyZWQuCgoyMDAwLTExLTEzICBKb3NlcGggUy4gTXllcnMgIDxqc20yOEBjYW0uYWMudWs+CgoJKiBjLXBhcnNlLmluIChlbmRzX2luX2xhYmVsKTogUmVtb3ZlIGZyb20gJXVuaW9uIGFuZCAldHlwZS4KCShkZWNscywgc3RtdHMsIGxpbmVub19zdG10X29yX2xhYmVscywgeHN0bXRzLAoJbGluZW5vX3N0bXRfb3JfbGFiZWwsIHN0bXRfb3JfbGFiZWwpOiBSZW1vdmUuCgkoc3RtdHNfYW5kX2RlY2xzLCBsaW5lbm9fc3RtdF9kZWNsX29yX2xhYmVsc19lbmRpbmdfc3RtdCwKCWxpbmVub19zdG10X2RlY2xfb3JfbGFiZWxzX2VuZGluZ19kZWNsLAoJbGluZW5vX3N0bXRfZGVjbF9vcl9sYWJlbHNfZW5kaW5nX2xhYmVsLAoJbGluZW5vX3N0bXRfZGVjbF9vcl9sYWJlbHNfZW5kaW5nX2Vycm9yLAoJbGluZW5vX3N0bXRfZGVjbF9vcl9sYWJlbHMsIGNvbXBzdG10X2NvbnRlbnRzX25vbmVtcHR5LAoJbGluZW5vX3N0bXQsIGxpbmVub19sYWJlbCk6IE5ldy4KCShjb21wc3RtdF9ub3N0YXJ0KTogVXNlIGNvbXBzdG10X2NvbnRlbnRzX25vbmVtcHR5LgoKMjAwMC0xMS0xMyAgSm9zZXBoIFMuIE15ZXJzICA8anNtMjhAY2FtLmFjLnVrPgoKCSogYy1jb21tb24uYyAoYm9vbGVhbl9pbmNyZW1lbnQpOiBOZXcgZnVuY3Rpb24uCgkqIGMtY29tbW9uLmggKGVudW0gY190cmVlX2luZGV4KTogQWRkIENUSV9DX0JPT0xfVFlQRSwKCUNUSV9DX0JPT0xfVFJVRSBhbmQgQ1RJX0NfQk9PTF9GQUxTRS4KCShjX2Jvb2xfdHlwZV9ub2RlLCBjX2Jvb2xfdHJ1ZV9ub2RlLCBjX2Jvb2xfZmFsc2Vfbm9kZSk6IERlZmluZS4KCShib29sZWFuX2luY3JlbWVudCk6IERlY2xhcmUuCgkqIGMtY29udmVydC5jIChjb252ZXJ0KTogQWxsb3cgZm9yIEJPT0xFQU5fVFlQRS4KCSogYy1kZWNsLmMgKGluaXRfZGVjbF9wcm9jZXNzaW5nKTogQ3JlYXRlIGJvb2xlYW4gbm9kZXMuCgkoZmluaXNoX3N0cnVjdCk6IEFsbG93IGZvciBfQm9vbCBiaXRmaWVsZHMuCgkqIGMtcGFyc2UuaW4gKHJlc3dvcmRzKTogQWRkIF9Cb29sLgoJKHJpZF90b195eSk6IEFsbG93IGZvciBSSURfQk9PTC4KCSogYy10eXBlY2suYyAoZGVmYXVsdF9jb252ZXJzaW9uKTogTWFrZSBib29sZWFucyBwcm9tb3RlIHRvIGludC4KCShjb252ZXJ0X2FyZ3VtZW50cywgYnVpbGRfdW5hcnlfb3AsIGJ1aWxkX21vZGlmeV9leHByLAoJY29udmVydF9mb3JfYXNzaWdubWVudCk6IEFsbG93IGZvciBib29sZWFucy4KCSogZ2luY2x1ZGUvc3RkYm9vbC5oOiBNYWtlIGNvbmZvcm1pbmcgdG8gQzk5LgoKMjAwMC0xMS0xMyAgSm9zZXBoIFMuIE15ZXJzICA8anNtMjhAY2FtLmFjLnVrPgoKCSogYy1wYXJzZS5pbiAoYzk5X2Jsb2NrX3N0YXJ0LCBjOTlfYmxvY2tfZW5kLAoJYzk5X2Jsb2NrX2xpbmVub19sYWJlbGVkX3N0bXQpOiBOZXcuCgkoc2ltcGxlX2lmLCBkb19zdG10X3N0YXJ0KTogVXNlIGM5OV9ibG9ja19saW5lbm9fbGFiZWxlZF9zdG10LgoJKHN0bXQpOiBTcGxpdCBvZmYgc2VsZWN0aW9uIGFuZCBpdGVyYXRpb24gc3RhdGVtZW50cyBpbnRvLi4uCgkoc2VsZWN0X29yX2l0ZXJfc3RtdCk6IE5ldy4gIFVzZSBjOTlfYmxvY2tfbGluZW5vX2xhYmVsZWRfc3RtdC4KCjIwMDAtMTEtMTMgIEpvc2VwaCBTLiBNeWVycyAgPGpzbTI4QGNhbS5hYy51az4KCgkqIGludm9rZS50ZXhpICgtV3RyaWdyYXBocywgLWZkdW1wLXRyYW5zbGF0aW9uLXVuaXQsIC1zYXZlLXRlbXBzLAoJLXRpbWUpOiBVcGRhdGUuCgoyMDAwLTExLTEzICBSaWNoYXJkIEVhcm5zaGF3ICA8cmVhcm5zaGFAYXJtLmNvbT4KCgkqIGFybS5tZCAobXVsc2lkaTNhZGRkaSwgdW11bHNpZGkzYWRkZGkpOiBSZXZlcnQgcHJldmlvdXMgY2hhbmdlLgoJUmV3cml0ZSB0byBhdm9pZCB1c2Ugb2YgbWF0Y2hfZHVwLiAgRG9uJ3QgdHJ5IHRvIHRpZSByZWdpc3RlcnMgdGhhdAoJYXJlIG5vdCBpbiB0aGUgc2FtZSBtb2RlLgoKMjAwMC0xMS0xMyAgSm9zZXBoIFMuIE15ZXJzICA8anNtMjhAY2FtLmFjLnVrPgoKCSogaW52b2tlLnRleGk6IFVwZGF0ZSBsaXN0cyBvZiBsYW5ndWFnZXMgYW5kIHN1ZmZpeGVzIHN1cHBvcnRlZC4KCjIwMDAtMTEtMTMgIEpvc2VwaCBTLiBNeWVycyAgPGpzbTI4QGNhbS5hYy51az4KCgkqIGNvbmZpZ3VyZS5pbjogVGFrZSB0b3BsZXZlbCBjb25maWd1cmUgYXJndW1lbnRzIGZyb20gdGhlCgllbnZpcm9ubWVudCB0byBjcmVhdGUgY29uZmlnYXJncy5oIGFuZCBzdWJzdGl0dXRlCglnY2NfY29uZmlnX2FyZ3VtZW50cywgdGFraW5nIGFjY291bnQgb2YgYW55IGV4aXN0aW5nIGNvbmZpZ2FyZ3MuaAoJaWYgcmVjb25maWd1cmluZy4KCSogY29uZmlndXJlOiBSZWdlbmVyYXRlLgoJKiBnY2NidWcuaW46IEluY2x1ZGUgdG9wbGV2ZWwgY29uZmlndXJlIGFyZ3VtZW50cyBpbiBnY2NidWcuCgoyMDAwLTExLTEzICBSaWNoYXJkIEVhcm5zaGF3ICA8cmVhcm5zaGFAYXJtLmNvbT4KCgkqIHZhcmFzbS5jIChzdHJ1Y3QgY29uc3RhbnRfZGVzY3JpcHRvcik6IFB1dCBDT05URU5UUyBpbnNpZGUgYQoJdW5pb24gdG8gbWFrZSBpdCB3ZWxsLWFsaWduZWQuICBVcGRhdGUgYWxsIHVzZXMuCgoyMDAwLTExLTEzICBKb3NlcGggUy4gTXllcnMgIDxqc20yOEBjYW0uYWMudWs+CgoJKiBjLXBhcnNlLmluIChpbml0ZWx0KTogR2l2ZSBhcHByb3ByaWF0ZSBwZWRhbnRpYyB3YXJuaW5ncywKCWRlcGVuZGluZyBvbiBmbGFnX2lzb2M5OSwgZm9yIG5vbi1JU08gc3ludGF4IGFuZCBmb3IgQzk5IHN5bnRheAoJb3V0c2lkZSBDOTkgbW9kZS4KCShkZXNpZ25hdG9yKTogSWYgcGVkYW50aWMsIHBlZHdhcm4gZm9yIGEgZGVzaWduYXRvciBzcGVjaWZ5aW5nIGEKCXJhbmdlIG9mIGVsZW1lbnRzLgoJKiBjLXR5cGVjay5jIChzZXRfaW5pdF9pbmRleCwgc2V0X2luaXRfbGFiZWwpOiBEb24ndCBwZWR3YXJuIGZvcgoJdGhlc2UgY2FzZXMuCgkqIGV4dGVuZC50ZXhpOiBEb2N1bWVudCB0aGUgQzk5IHN5bnRheCBhcyB0aGUgcHJlZmVycmVkIHN5bnRheCwKCWFuZCB0aGUgcHJlLTIuNSBzeW50YXggYXMgb2Jzb2xldGUuICBNZW50aW9uIHVzZSBvZiBkZXNpZ25hdG9yCglsaXN0cyBmb3IgbmVzdGVkIHN1Ym9iamVjdHMuCgoyMDAwLTExLTEzICBKb3NlcGggUy4gTXllcnMgIDxqc20yOEBjYW0uYWMudWs+CgoJKiBkaWFnbm9zdGljLmMgKHZidWlsZF9tZXNzYWdlX3N0cmluZywgb3V0cHV0X2RvX3ByaW50Ziwgdm5vdGljZSk6CglBZGQgQVRUUklCVVRFX1BSSU5URi4KCSogdHJhZGNwcC5jICh2X21lc3NhZ2UsIHdhcm5pbmcsIGVycm9yLCBmYXRhbCwgZXJyb3Jfd2l0aF9saW5lKToKCUFkZCBBVFRSSUJVVEVfUFJJTlRGKi4KCjIwMDAtMTEtMTIgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBmdW5jdGlvbi5jIChhc3NpZ25fcGFybXMpOiBXaGVuIGNhbGxpbmcgcHV0X3Zhcl9pbnRvX3N0YWNrLCBtYWtlCglzdXJlIHRoYXQgdGhlcmUgYXJlIG5vIGhpZGRlbiBwZW5kaW5nIHNlcXVlbmNlcy4KCjIwMDAtMTEtMTIgIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIGJ1aWx0aW5zLmMgKGV4cGFuZF9idWlsdGluKTogSGFuZGxlIEJVSUxUX0lOX0lOREVYIGFuZAoJQlVJTFRfSU5fUklOREVYLiAgQWRkIG1pc3NpbmcgY2hlY2tzIGZvciBCVUlMVF9JTl9TVFJDSFIgYW5kCglCVUlMVF9JTl9TVFJSQ0hSLgoKCSogYnVpbHRpbnMuZGVmIChCVUlMVF9JTl9JTkRFWCwgQlVJTFRfSU5fUklOREVYKTogTmV3IGVudHJpZXMuCgoJKiBjLWNvbW1vbi5jIChjX2NvbW1vbl9ub2Rlc19hbmRfYnVpbHRpbnMpOiBEZWNsYXJlIGluZGV4IGFuZAoJcmluZGV4IHdoZW4gbm9uYW5zaSBidWlsdGlucyBhcmUgYWxsb3dlZC4KCgkqIGV4dGVuZC50ZXhpIChpbmRleCwgcmluZGV4KTogRG9jdW1lbnQgbmV3IGJ1aWx0aW5zLgoKMjAwMC0xMS0xMiAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGNvbmZpZ3VyZS5pbjogVHVybiBvbiBsaWJzdGRjKysgVjMgYnkgZGVmYXVsdC4KCSogY29uZmlndXJlOiBSZWdlbmVyYXRlZC4KCgkqIGZpeGluYy9ta2ZpeGluYy5zaDogVXNlIHRoZSBvcmRpbmFyeSBmaXhpbmNsdWRlcyBvbiBTb2xhcmlzLgoKMjAwMC0xMS0xMiAgSmFrdWIgSmVsaW5layAgPGpha3ViQHJlZGhhdC5jb20+CgoJKiByZWxvYWQxLmMgKHNldF9sYWJlbF9vZmZzZXRzKTogR28gaW5zaWRlIG9mIFBBUkFMTEVMcy4KCjIwMDAtMTEtMTIgIEpvc2VwaCBTLiBNeWVycyAgPGpzbTI4QGNhbS5hYy51az4KCgkqIGludm9rZS50ZXhpOiBDbGVhbiB1cCBvcHRpb24gc3VtbWFyeS4KCjIwMDAtMTEtMTIgIE5pY2sgQ2xpZnRvbiAgPG5pY2tjQHJlZGhhdC5jb20+CgoJKiBjb25maWcvbWNvcmUvbWNvcmUuYzogRml4IGNvbW1lbnQgZm9ybWF0aW5nLCBhbmQgYWRqdXN0IHNlcXVlbmNlCglvZiAjaW5jbHVkZSBoZWFkZXJzLgoKMjAwMC0xMS0xMiAgTWFyYyBFc3BpZSA8ZXNwaWVAb3BlbmJzZC5vcmc+CgoJKiBjb25maWd1cmUuaW46IEZpeCBmaWxkcyB0ZXN0LgoJKiBjb25maWd1cmU6IFJlZ2VuLgoKMjAwMC0xMS0xMiAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGp1bXAuYyAoZGVsZXRlX2NvbXB1dGF0aW9uKTogRG9uJ3QgYXNzdW1lIHRoYXQganVzdCBiZWNhdXNlIGFuCglpbnN0cnVjdGlvbiBzZXRzIGEgcmVnaXN0ZXIsIHRoYXQgcmVnaXN0ZXIgaXMgZGVhZC4KCjIwMDAtMTEtMTIgIE5laWwgQm9vdGggIDxuZWlsYkBlYXJ0aGxpbmcubmV0PgoKCSogY3BwZXhwLmM6IERvbid0IHdvcnJ5IGFib3V0IHBmaWxlLT5za2lwcGluZy4KCSogY3BwbGliLmMgKHN0cnVjdCBpZl9zdGFjayk6IE1ha2Ugd2FzX3NraXBwaW5nIHVuc2lnbmVkIGNoYXIuCgkoY3BwX2hhbmRsZV9kaXJlY3RpdmUpOiBTYXZlIHBmaWxlLT5za2lwcGluZyBpbiBzdHJ1Y3QgY3BwX2J1ZmZlcgoJZm9yIGhhbmRsZWQgZGlyZWN0aXZlcy4KCShza2lwX3Jlc3Rfb2ZfbGluZSk6IFVzZSBfY3BwX2xleF90b2tlbiBhZnRlciBwb3BwaW5nIGNvbnRleHRzCglhbmQgcmVsZWFzaW5nIGxvb2thaGVhZHMuCgkoZG9faWZkZWYsIGRvX2lmbmRlZiwgZG9faWYpOiBVc2UgYnVmZmVyLT53YXNfc2tpcHBpbmcuCgkoZG9fZWxzZSwgZG9fZWxpZiwgcHVzaF9jb25kaXRpb25hbCk6IFVwZGF0ZSBsb2dpYy4KCShkb19lbmRpZik6IFNldCBidWZmZXItPndhc19za2lwcGluZyByYXRoZXIgdGhhbiBwZmlsZS0+c2tpcHBpbmcuCgkodW53aW5kX2lmX3N0YWNrKTogSW5saW5lIGludG8gY3BwX3BvcF9idWZmZXIuCgkoY3BwX3B1c2hfYnVmZmVyKTogQ2xlYXIgaWZzLT53YXNfc2tpcHBpbmcgZm9yIGNwcF9oYW5kbGVfZGlyZWN0aXZlLgoJKiBjcHBsZXguYyAoX2NwcF9sZXhfdG9rZW4pOiBDbGVhciBza2lwcGluZyBvbiBFT0YuICBIYW5kbGUKCW11bHRpcGxlLWluY2x1ZGUgb3B0aW1pc2F0aW9uLgoJKiBjcHBsaWIuaCAoc3RydWN0IGNwcF9idWZmZXIpOiBOZXcgbWVtYmVyIHdhc19za2lwcGluZy4KCSogY3BwbWFjcm8uYyAoX2NwcF9nZXRfdG9rZW4pOiBMb29wIHdoaWxzdCBwZmlsZS0+c2tpcHBpbmcuICBUaGlzCgl3b3JrcyBiZWNhdXNlIHNraXBwaW5nID09IDAgaW4gZGlyZWN0aXZlcy4KCShfY3BwX3JlbGVhc2VfbG9va2FoZWFkKTogUmVuYW1lZCBmcm9tIHJlbGVhc2VfbG9va2FoZWFkLgoJKGNwcF9nZXRfdG9rZW4pOiBObyBuZWVkIHRvIGNoZWNrIHNraXBwaW5nIGFzIF9jcHBfZ2V0X3Rva2VuIGRvZXMKCXRoaXMgZm9yIHVzLiAgTm8gbmVlZCB0byBoYW5kbGUgTUkgb3B0aW1pc2F0aW9uLgoKU2F0IE5vdiAxMSAyMToxNDowMiAyMDAwICBNYXJrIFAgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBmaXhpbmMvaW5jbGhhY2suZGVmIChzdW5vc19tYXRoZXJyX2RlY2wpOiBCeXBhc3MgbWF0aGVycgoJZGVjbGFyYXRpb25zIHRoYXQgdXNlIGBfX01BVEhfRVhDRVBUSU9OJyBpbiB0aGVpciBwcm90b3R5cGVzLCB0b28uCgkqIGZpeGluYy9maXhpbmNsLng6IFJlZ2VuZXJhdGVkLgoKMjAwMC0xMS0xMSAgQnJ1Y2UgS29yYiAgPGJrb3JiQGdudS5vcmc+CgoJKiBmaXhpbmMvaW5jbGhhY2suZGVmIChhdm9pZF9ib29sX3R5cGUpOiBhdm9pZCBjb21tZW50aW5nIG91dCAjZW5kaWYKCShhdm9pZF93Y2hhcl90X3R5cGUpOiBkaXR0bwoJKiBmaXhpbmMvZml4aW5jLmlyaXg6IG9ic29sZXRlZAoKMjAwMC0xMS0xMSAgWmFjayBXZWluYmVyZyAgPHphY2tAd29sZXJ5LnN0YW5mb3JkLmVkdT4KCgkqIGNvbmZpZ3VyZS5pbjogRG9uJ3QgYWRkICRvdXRwdXRzIHRvIGFsbF9sYW5nX21ha2VmaWxlcy4gIEFkZAoJJHNyY2Rpci8kcy9NYWtlZmlsZS5pbiBpZiBpdCBleGlzdHMuCgkqIGNvbmZpZ3VyZTogUmVnZW5lcmF0ZS4KClNhdCBOb3YgMTEgMTg6NDE6MjAgMjAwMCAgTWFyayBQIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogZml4aW5jL21rZml4aW5jLnNoOiBVc2UgdGhlIG9yZGluYXJ5IGZpeGluY2x1ZGVzIG9uIElSSVguCgoyMDAwLTExLTExICBKYXNvbiBNZXJyaWxsICA8amFzb25AcmVkaGF0LmNvbT4KCgkqIGZ1bmN0aW9uLmMgKGFzc2lnbl9wYXJtcyk6IElmIFRSRUVfQUREUkVTU0FCTEUgaXMgc2V0LCB0cnkgdG8KCWdpdmUgdGhlIHBhcm0gYSByZWdpc3RlciBhbmQgdGhlbiBjYWxsIHB1dF92YXJfaW50b19zdGFjay4KCSogc3RtdC5jIChleHBhbmRfZGVjbCk6IExpa2V3aXNlLgoKMjAwMC0xMS0xMSAgSm9zZXBoIFMuIE15ZXJzICA8anNtMjhAY2FtLmFjLnVrPgoKCSogZ2NjLnRleGk6IEFkanVzdCB3b3JkaW5nLgoKMjAwMC0xMS0xMSAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGZpeGluYy9pbmNsaGFjay5kZWYgKGF2b2lkX3djaGFyX3RfdHlwZSk6IE5ldyBmaXguCgkqIGZpbmluYy9maXhpbmNsLng6IFJlZ2VuZXJhdGVkLgoKMjAwMC0xMS0xMSAgSm9zZXBoIFMuIE15ZXJzICA8anNtMjhAY2FtLmFjLnVrPgoKCSogaW52b2tlLnRleGk6IENvcnJlY3Qgc3BlbGxpbmcgb2YgLWZvcHRpbWl6ZS1yZWdpc3Rlci1tb3ZlLgoKMjAwMC0xMS0xMSAgTmVpbCBCb290aCAgPG5laWxiQGVhcnRobGluZy5uZXQ+CgoJUmVtb3ZlIENQUF9QTEFDRU1BUktFUnMuCgoJKiBjcHBleHAuYyAobGV4KTogRG9uJ3QgaGFuZGxlIENQUF9QTEFDRU1BUktFUi4KCSogY3BwbGV4LmMgKF9jcHBfbGV4X3Rva2VuKTogUmVuYW1lIHNraXBfbmV3bGluZXMgdG8gbmV4dF9ib2wKCSogY3BwbGliLmMgKHNraXBfcmVzdF9vZl9saW5lLCBjaGVja19lb2wsIGNwcF9wdXNoX2J1ZmZlcik6CgkJICAgU2ltaWxhcmx5LgoJKiBjcHBsaWIuaDogUmVtb3ZlIENQUF9QTEFDRU1BUktFUi4KCShzdHJ1Y3QgbGV4ZXJfc3RhdGUpOiBSZW5hbWUgc2tpcF9uZXdsaW5lcyB0byBuZXh0X2JvbC4KCSogY3BwbWFjcm8uYyAoc3RyaW5naWZ5X2FyZyk6IERvbid0IGhhbmRsZSBDUFBfUExBQ0VNQVJLRVIuCglTaW1wbGlmeSBwcmV2X3doaXRlIGhhbmRsaW5nIGFzIGEgcmVzdWx0LgoJKHBhc3RlX2FsbF90b2tlbnMpOiBEb24ndCB3b3JyeSBhYm91dCBDUFBfUExBQ0VNQVJLRVJzLgoJKHBhcnNlX2FyZyk6IEVtcHR5IGFyZ3VtZW50cyBhcmUgbm93IGVtcHR5LCBub3QgQ1BQX1BMQUNFTUFSS0VScy4KCShwYXJzZV9hcmdzKTogU2ltaWxhcmx5LiAgVXBkYXRlIGFyZ3VtZW50IGNvdW50IHRlc3RzLgoJKGVudGVyX21hY3JvX2NvbnRleHQpOiBSZXR1cm4gMiB0byBpbmRpY2F0ZSBhbiBlbXB0eSBtYWNyby4KCShyZXBsYWNlX2FyZ3MpOiBEb24ndCBib3RoZXIgcHJlLWV4cGFuZGluZyBhbiBlbXB0eSBhcmd1bWVudC4KCUhhbmRsZSBwbGFjZW1hcmtlcnMgYW5kICMjIGV4dGVuc2lvbiBkdXJpbmcgcHJlLWV4cGFuc2lvbi4KCShjcHBfZ2V0X3Rva2VuKTogSGFuZGxlIGVtcHR5IG1hY3JvIGV4cGFuc2lvbnMuICBEb24ndCB3b3JyeQoJYWJvdXQgQ1BQX1BMQUNFTUFSS0VScy4KCShfY3BwX2NyZWF0ZV9kZWZpbml0aW9uKTogRW1wdHkgbWFjcm9zIGFyZSBub3cgZW1wdHkuCgkoY3BwX21hY3JvX2RlZmluaXRpb24pOiBEb24ndCBzcGVjaWFsIGNhc2UgZW1wdHkgbWFjcm9zLgoJKiBzY2FuLWRlY2xzLmM6IERvbid0IGJvdGhlciB3aXRoIENQUF9QTEFDRU1BUktFUnMuCgkqIGMtbGV4LmM6IFNpbWlsYXJseS4KCjIwMDAtMTEtMTEgIEpvc2VwaCBTLiBNeWVycyAgPGpzbTI4QGNhbS5hYy51az4KCgkqIGdjYy50ZXhpLCBpbnZva2UudGV4aTogQWRkIG5ldyBzZWN0aW9uIGRpc2N1c3NpbmcgbGFuZ3VhZ2UKCXN0YW5kYXJkczsgbGluayB0byBpdCB3aGVyZSBhcHByb3ByaWF0ZTsgcmVmZXIgdG8gSVNPIEMgaW5zdGVhZCBvZgoJQU5TSSBDLgoKMjAwMC0xMS0xMSAgQWxleGFuZHJlIE9saXZhICA8YW9saXZhQHJlZGhhdC5jb20+CgoJKiBidWlsdGlucy5jIChzdGRfZXhwYW5kX2J1aWx0aW5fdmFfc3RhcnQpOiBUYWtlIFBBUk1fQk9VTkRBUlkKCWludG8gYWNjb3VudC4KCgkqIGNvbmZpZy9zaC9zaC5oIChNT0RFU19USUVBQkxFX1ApOiBEb24ndCB0aWUgU0Ztb2RlIHRvIG90aGVyIEZQCgltb2Rlcy4KCjIwMDAtMTEtMTAgIEpvc2VwaCBTLiBNeWVycyAgPGpzbTI4QGNhbS5hYy51az4KCgkqIGdjYy50ZXhpLCBnY292LnRleGk6IFVwZGF0ZSBkYXRlcyBhbmQgdmVyc2lvbiBudW1iZXJzLgoKMjAwMC0xMS0xMCAgWmFjayBXZWluYmVyZyAgPHphY2tAd29sZXJ5LnN0YW5mb3JkLmVkdT4KCgkqIGNvbmZpZ3VyZS5pbjogUmVtb3ZlIEFDX1BST0dfTEVYIGFuZCBBQ19QUk9HX1lBQ0MuICBMb29rIGZvcgoJZmxleCBhbmQgYmlzb24sIHNwZWNpZmljYWxseSwgZmlyc3QgaW4gYSB1bmlmaWVkIGJ1aWxkIGFuZAoJdGhlbiBpbnN0YWxsZWQgb24gdGhlIHN5c3RlbS4KCSogTWFrZWZpbGUuaW46IFNldCBCSVNPTiB0byBAQklTT05ALCBGTEVYIHRvIEBGTEVYQC4gIFJlbmFtZQoJTEVYRkxBR1MgdG8gRkxFWEZMQUdTLiAgQWRqdXN0IE9SRElOQVJZX0ZMQUdTX1RPX1BBU1MgdG8KCW1hdGNoLgoKCShjb2xsZWN0Mi5vLCBnY2MubywgcHJlZml4Lm8sIHRvcGxldi5vLCBhbGxvY2EubywgaW50bC5vLAoJY3BwZGVmYXVsdC5vKTogUmVtb3ZlIHBvaW50bGVzcyBzZWQgbXVuZ2luZyBvZiBzb3VyY2UgZmlsZQoJbmFtZS4KCjIwMDAtMTEtMTAgIEJlcm5kIFNjaG1pZHQgIDxiZXJuZHNAcmVkaGF0LmNvLnVrPgoKCSogcmVsb2FkLmMgKGZpbmRfcmVsb2Fkc19hZGRyZXNzXzEsIGNhc2UgUE9TVF9NT0RJRlkpOiBVc2UgUkVMT0FEX09USEVSCglmb3IgYWRkcmVzcyByZWxvYWRzLiAgUHVzaCByZXBsYWNlbWVudHMgZm9yIFJFR19JTkMgbm90ZXMuCgkocmVnbm9fY2xvYmJlcmVkX3ApOiBOZXcgYXJnIFNFVFMuICBFeGFtaW5lIFNFVHMgaWYgaXQncyBub256ZXJvLiAgQWxsCgljYWxsZXJzIGNoYW5nZWQuCgkqIHJlbG9hZDEuYyAoY2hvb3NlX3JlbG9hZF9yZWdzKTogUmVnaXN0ZXJzIHNldCBpbiB0aGUgaW5zbiBjYW4ndCBiZQoJdXNlZCBmb3IgUkVMT0FEX09USEVSIHJlbG9hZHMuCgoyMDAwLTExLTEwICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogYy1kdW1wLmg6IE5ldyBmaWxlLgoKMjAwMC0xMS0xMCAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogYWxwaGEuYyAoY2hlY2tfZmxvYXRfdmFsdWUpOiBVc2UgbWVtY3B5LCBub3QgYmNvcHkuCgkqIGFybS5jIChvdXRwdXRfbW92ZV9kb3VibGUpOiBMaWtld2lzZS4KCSogYXJtLm1kOiBMaWtld2lzZS4KCSogbTg4ay5jIChsZWdpdGltaXplX29wZXJhbmQpOiBMaWtld2lzZS4KCSogbTg4ay5oIChPUkRFUl9SRUdTX0ZPUl9MT0NBTF9BTExPQyk6IExpa2V3aXNlLgoJKiBtODhrLm1kOiBMaWtld2lzZS4KCSogbWlwcy5jIChvdmVycmlkZV9vcHRpb25zKTogTGlrZXdpc2UuCgkqIG1pcHMubWQ6IExpa2V3aXNlLgoJKiByb21wLmMgKG91dHB1dF9mcG9wcyk6IExpa2V3aXNlLgoJKiByczYwMDAuYyAocnM2MDAwX292ZXJyaWRlX29wdGlvbnMpOiBMaWtld2lzZS4KCSogc2gubWQ6IExpa2V3aXNlLgoJKiB2YXguYyAoY2hlY2tfZmxvYXRfdmFsdWUpOiBMaWtld2lzZS4KCgkqIGVtaXQtcnRsLmMgKGNvcHlfcnR4X2lmX3NoYXJlZCwgaW5pdF9lbWl0X29uY2UpOiBMaWtld2lzZS4KCSogZXhwbWVkLmMgKHN5bnRoX211bHQpOiBMaWtld2lzZS4KCSogZmluYWwuYyAoYWRkX2JiX3N0cmluZyk6IExpa2V3aXNlLgoJKiBnZW5hdHRyLmMgKG1haW4pOiBMaWtld2lzZS4KCSogZ2VuYXR0cnRhYi5jIChhdHRyX3N0cmluZywgc2ltcGxpZnlfY29uZCwgY29weV9ydHhfdW5jaGFuZ2luZyk6CglMaWtld2lzZS4KCSoganVtcC5jICh0aHJlYWRfanVtcHMpOiBMaWtld2lzZS4KCSogcHJlZml4LmMgKHNhdmVfc3RyaW5nKTogTGlrZXdpc2UuCgkqIHJlYWwuaCAoUkVBTF9WQUxVRV9GUk9NX0NPTlNUX0RPVUJMRSk6IExpa2V3aXNlLgoJKiByZWdjbGFzcy5jIChpbml0X3JlZ19zZXRzLCBpbml0X3JlZ19zZXRzXzEpOiBMaWtld2lzZS4KCSogcmVsb2FkMS5jIChyZWxvYWQsIGVsaW1pbmF0ZV9yZWdzKTogTGlrZXdpc2UuCgoyMDAwLTExLTEwICBKb3NlcGggUy4gTXllcnMgIDxqc20yOEBjYW0uYWMudWs+CgoJKiBnY2MudGV4aSAoU2VydmljZSk6IFVwZGF0ZSB0byByZWZsZWN0IGN1cnJlbnQgcHJhY3RpY2UgYW5kCglsb2NhdGlvbiBvZiB0aGUgR05VIHNlcnZpY2UgZGlyZWN0b3J5LgoKMjAwMC0xMS0wOSAgQmVybmQgU2NobWlkdCAgPGJlcm5kc0ByZWRoYXQuY28udWs+CgoJKiByZWdyZW5hbWUuYyAoYnVpbGRfZGVmX3VzZSk6IE1hcmsgY29udGVudHMgb2YgUkVHX0lOQyBub3RlcyBhcwoJbmVlZGluZyByZXBsYWNlbWVudC4KCgkqIGNvbmZpZy9pYTY0L2lhNjQubWQgKGV4dGVuZHNmZGYyLCBleHRlbmRzZnRmMiwgZXh0ZW5kZGZ0ZjIpOiBFbWl0CglhIG5vLW9wIG1vdmUgaWYgcmVncyBhcmUgZXF1YWwuCgkqIHRvcGxldi5jIChyZXN0X29mX2NvbXBpbGF0aW9uKTogRG8gdGhlIG5vb3AgbW92ZXMgZWxpbWluYXRpb24gcGFzcwoJd2hlbiBjYWxsaW5nIGp1bXAgYWZ0ZXIgcG9zdC1yZWxvYWQgc3BsaXR0aW5nLgoKMjAwMC0xMS0wOSAgSmFuIHZhbiBNYWxlICA8amFuLnZhbm1hbGVAZmVuay53YXUubmw+CgoJKiBjLXRyZWUudGV4aTogRml4IHR5cG9zLgoJKiBleHRlbmQudGV4aTogTGlrZXdpc2UKCSogZ2Nvdi50ZXhpOiBMaWtld2lzZQoJKiBydGwudGV4aTogTGlrZXdpc2UKCSogdG0udGV4aTogTGlrZXdpc2UKCjIwMDAtMTEtMDkgIEhhbnMtUGV0ZXIgTmlsc3NvbiAgPGhwQGF4aXMuY29tPgoKCSogYy1sZXguYyBbISBOT19JTVBMSUNJVF9FWFRFUk5fQ10gKGNiX2VudGVyX2ZpbGUpOiBDaGVjawoJaW5fc3lzdGVtX2hlYWRlciBhbmQgZmxhZ3NbMV0gYmVmb3JlIGRlcmVmZXJlbmNpbmcgZmxhZ3NbMl0uCgoyMDAwLTExLTA5ICBNYXR0aGV3IEhpbGxlciA8aGlsbGVyQHJlZGhhdC5jb20+CgoJKiByZWxvYWQxLmMgKHJlbG9hZF9jb21iaW5lKTogRml4ZWQgY2FsY3VsYXRpb24gb2YKCWZpcnN0X2luZGV4X3JlZywgbGFzdF9pbmRleF9yZWcuCgoyMDAwLTExLTA5ICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogYy1kdW1wLmMgKGRlcXVldWVfYW5kX2R1bXApOiBEdW1wIGZ1bmN0aW9uIGJvZGllcy4KCgkqIE1ha2VmaWxlLmluIChDX0FORF9PQkpDX09CSlMpOiBBZGQgYy1kdW1wLm8uCgkoYy1kdW1wLm8pOiBOZXcgdGFyZ2V0LgoJKiBjLWNvbW1vbi5oIChmbGFnX2R1bXBfdHJhbnNsYXRpb25fdW5pdCk6IE5ldyB2YXJpYWJsZS4KCShDX1RZUEVfUVVBTFMpOiBOZXcgbWFjcm8uCgkoc3RyaXBfYXJyYXlfdHlwZXMpOiBOZXcgZnVuY3Rpb24uCgkoREVDTF9DX0JJVF9GSUVMRCk6IE5ldyBtYWNyby4KCShTRVRfREVDTF9DX0JJVF9GSUVMRCk6IExpa2V3aXNlLgoJKENMRUFSX0RFQ0xfQ19CSVRfRklFTEQpOiBMaWtld2lzZS4KCShkdW1wX2luZm9fcCk6IE5ldyB0eXBlZGVmLgoJKGR1bXBfdHJlZV9mbik6IExpa2V3aXNlLgoJKGxhbmdfZHVtcF90cmVlKTogTmV3IHZhcmlhYmxlLgoJKGR1bXBfbm9kZV90b19maWxlKTogTmV3IGZ1bmN0aW9uLgoJKiBjLWNvbW1vbi5jIChmbGFnX2R1bXBfdHJhbnNsYXRpb25fdW5pdCk6IERlZmluZSBpdC4KCShzdHJpcF9hcnJheV90eXBlcyk6IE5ldyBmdW5jdGlvbi4KCSogYy1kZWNsLmMgKGNfZGVjb2RlX29wdGlvbik6IEhhbmRsZSAtZmR1bXAtdHJhbnNsYXRpb24tdW5pdC4KCSogYy1sYW5nLmMgKGZpbmlzaF9maWxlKTogQ2FsbCBkdW1wX25vZGVfdG9fZmlsZSBpZgoJZmxhZ19kdW1wX3RyYW5zbGF0aW9uX3VuaXQuCgkqIGMtc2VtYW50aWNzLmMgKG1hcmtfcnRsX2Zvcl9sb2NhbF9zdGF0aWMpOiBGaXggdHlwbyBpbiBjb21tZW50LgoJKiBjLXRyZWUuaCAoREVDTF9DX0JJVF9GSUVMRCk6IFJlbW92ZSBkZWNsYXJhdGlvbi4KCSogYy1kdW1wLmM6IE5ldyBmaWxlLgoKMjAwMC0xMS0wOSAgQ2hyaXN0b3BoZXIgRmF5bG9yIDxjZ2ZAY3lnbnVzLmNvbT4KCgkqIGNvbmZpZy9pMzg2L2N5Z3dpbi5oOiBBZGQgbWluZ3cgc3RhcnRmaWxlIHByZWZpeC4KCjIwMDAtMTEtMDkgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CgoJKiBmbG93LmMgKGludmFsaWRhdGVfbWVtc19mcm9tX3NldCk6IFNwbGl0IG91dCBmcm9tIC4uLgoJKG1hcmtfc2V0XzEpOiAuLi4gaGVyZS4KCSh0cnlfcHJlX2luY3JlbWVudF8xKTogVXNlIGl0LiAgVXNlIHByb3BhZ2F0ZV9ibG9ja19kZWxldGVfaW5zbgoJaW5zdGVhZCBvZiB0dXJuaW5nIGluc24gaW50byBhIE5PVEVfSU5TTl9ERUxFVEVELgoKMjAwMC0xMS0xMCAgSm9zZXBoIFMuIE15ZXJzICA8anNtMjhAY2FtLmFjLnVrPgoKCSogZXh0ZW5kLnRleGksIGludm9rZS50ZXhpOiBNb3ZlIGRvY3VtZW50YXRpb24gb2YgYnVpbHRpbiB2ZXJzaW9ucwoJb2YgQyBsaWJyYXJ5IGZ1bmN0aW9ucyB0byBvbmUgcGxhY2UgYW5kIHVwZGF0ZS4KCjIwMDAtMTEtMDkgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CgoJKiBmb2xkLWNvbnN0LmMgKGZvbGQpOiBDb21wYXJlIFRZUEVfTUFJTl9WQVJJQU5UIHJhdGhlciB0aGFuCgl0aGUgdHlwZXMgdGhlbXNlbHZlcyB0byBkaXNjb3ZlciB0eXBlIGVxdWl2YWxlbmNlLgoKMjAwMC0xMS0wOSAgTWlrZSBTdHVtcCAgPG1yc0B3cnMuY29tPgoKCSogTWFrZWZpbGUuaW4gKGRpc3RjbGVhbik6IFJlbW92ZSBhIGZldyBleHRyYSBsZWZ0b3ZlcnMuCgoyMDAwLTExLTA5ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEByZWRoYXQuY29tPgoKCSogcmVjb2cuYyAodmFsaWRhdGVfcmVwbGFjZV9ydHhfMSk6IENvbnNpZGVyIHN1YnJlZ3Mgd2hlbgoJcmVwbGFjaW5nIGEgcmVnaXN0ZXIgd2l0aCBhIGNvbnN0YW50IGluc2lkZSBhIHNpZ24vemVyb19leHRlbmQuCgoJKiBjb25maWcvYWxwaGEvbGludXguaCAoSEFORExFX1BSQUdNQV9QQUNLX1BVU0hfUE9QKTogRGVmaW5lLgoKMjAwMC0xMS0wOSAgR2VvZmZyZXkgS2VhdGluZyAgPGdlb2Zma0ByZWRoYXQuY29tPgoKCSogYy1kZWNsLmMgKGZpbmlzaF9zdHJ1Y3QpOiBXaGVuIGEgc3RydWN0dXJlIGlzIGNvbXBsZXRlZCwKCWNoZWNrIGFsbCBpdHMgdmFyaWFudCB0eXBlcyBmb3IgY29tcGxldGVuZXNzLgoKMjAwMC0xMS0wOSAgTmVpbCBCb290aCAgPG5laWxiQGVhcnRobGluZy5uZXQ+CgoJKiBjcHBoYXNoLmM6IE1vdmUgY3BwX2RlZmluZWQgaGVyZSBmcm9tIGNwcGxpYi5jLgoJKiBjcHBsaWIuYzogVXBkYXRlIGNvbW1lbnRzLCBtb3ZlIGNwcF9kZWZpbmVkIHRvIGNwcGhhc2guYy4KCSogY3BwbGV4LmMgKF9jcHBfbGV4X3Rva2VuKTogRG9uJ3QgbGVhdmUgdGhlIGxleGVyIGF0IEVPTC4KCSogY3BwbWFjcm8uYyAoY3BwX2dldF90b2tlbik6IFVwZGF0ZSBjb21tZW50cywgbm8gbmVlZCBub3cKCXRvIGNhdGNoIHRoZSBDUFBfRU9GIG1lYW5pbmcgRU9MIGNhc2UuCgoyMDAwLTExLTA4ICBHZW9mZnJleSBLZWF0aW5nICA8Z2VvZmZrQHJlZGhhdC5jb20+CgoJKiBjb25maWcvc3BhcmMvc3BhcmMuYyAoc3BhcmNfdmFfYXJnKTogV2hlbiB0aGUgcmVxdWlyZWQgYWxpZ25tZW50CglpcyBtb3JlIHRoYW4gdGhhdCBwcm92aWRlZCwgY29weSB0byBhIHRlbXBvcmFyeS4KCjIwMDAtMTEtMDkgIEFsZXhhbmRyZSBPbGl2YSAgPGFvbGl2YUByZWRoYXQuY29tPgoKCSogbWtsaWJnY2MuaW4gKEVYVFJBX01VTFRJTElCX1BBUlRTKTogUHJldmVudCBgbWFrZScgZnJvbQoJaW50ZXJwcmV0aW5nICRvdXQgYXMgYSBtYWNybyBhc3NpZ25tZW50LgoJKiBNYWtlZmlsZS5pbiAoVF9UQVJHRVQpOiBOZXcgYXV4aWxpYXJ5IG1hY3JvIGFuZCB0YXJnZXQuCgkoYWxsKTogQWRkIGEgdGFyZ2V0IHJpZ2h0IGluIHRoZSBiZWdpbm5pbmcsIHNvIHRoYXQgd2UgZG9uJ3QgYnVpbGQKCVRfVEFSR0VUIGJ5IGRlZmF1bHQuCgoyMDAwLTExLTA5ICBHcmFoYW0gU3RvdHQgIDxncmFoYW1zQHJlZGhhdC5jb20+CgoJKiBjb25maWcvaTM4Ni9pMzg2Lm1kIChtbXhfcGluc3J3KTogT3V0cHV0IG9wZXJhbmRzIGluIGNvcnJlY3QKCW9yZGVyIGZvciAtbWludGVsLXN5bnRheC4gIFJlbW92ZSBjb21tZW50IG5vdyB0aGF0IHRoZSBvcGVyYW5kCglvcmRlciBoYXMgYmVlbiBjaGVja2VkLgoJKG1teF9wZXh0cncpOiBMaWtld2lzZS4KCShtbXhfcHNodWZ3KTogTGlrZXdpc2UuCgoyMDAwLTExLTA5ICBKYWt1YiBKZWxpbmVrICA8amFrdWJAcmVkaGF0LmNvbT4KCgkqIGJ1aWx0aW5zLmMgKGNfc3RybGVuKTogVXNlIFRSRUVfU1RSSU5HX0xFTkdUSCAtIDEgZm9yIG1heC4KCShjX2dldHN0cik6IE5ldyBmdW5jdGlvbi4KCShleHBhbmRfYnVpbHRpbl9zdHJzdHIpOiBEbyBub3RoaW5nIGlmIC1mY2hlY2stbWVtb3J5LXVzYWdlLgoJSWYgYm90aCBhcmd1bWVudHMgYXJlIGNvbnN0YW50IHN0cmluZywgb3B0aW1pemUgb3V0LgoJKGV4cGFuZF9idWlsdGluX3N0cmNociwgZXhwYW5kX2J1aWx0aW5fc3RycmNocik6IE5ldyBmdW5jdGlvbnMuCgkoZXhwYW5kX2J1aWx0aW5fc3RycGJyayk6IFVzZSBjX2dldHN0ciwgZG8gbm90aGluZyBpZgoJLWZjaGVjay1tZW1vcnktdXNhZ2UuCgkoZXhwYW5kX2J1aWx0aW5fZnB1dHMpOiBMaWtld2lzZS4KCShleHBhbmRfYnVpbHRpbl9zdHJjbXApOiBBZGQgTU9ERSBhcmd1bWVudC4KCVVzZSBldmVuIGlmICFIQVZFX2NtcHN0cnNpLgoJT3B0aW1pemUgdGhlIGNhc2Ugd2hlbiBib3RoIGFyZ3VtZW50cyBhcmUgY29uc3RhbnQgc3RyaW5ncy4KCShleHBhbmRfYnVpbHRpbik6IEFkanVzdCBleHBhbmRfYnVpbHRpbl9zdHJjbXAgY2FsbGVyLgoJQ2FsbCBleHBhbmRfYnVpbHRpbl9zdHJjaHIgYW5kIGV4cGFuZF9idWlsdGluX3N0cnJjaHIuCgkqIGMtY29tbW9uLmMgKGNfY29tbW9uX25vZGVzX2FuZF9idWlsdGlucyk6IEFkZCBzdHJjaHIgYW5kIHN0cnJjaHIKCWJ1aWx0aW5zLgoJKiBidWlsdGlucy5kZWYgKEJVSUxUX0lOX1NUUlJDSFIpOiBBZGQuCgoyMDAwLTExLTA4ICBHZXJhbGQgUGZlaWZlciAgPHBmZWlmZXJAZGJhaS50dXdpZW4uYWMuYXQ+CgoJKiBmaXhpbmMvZ251LXJlZ2V4LmM6IFJlbmFtZSBFR0NTIExPQ0FMIG1hcmtlcnMgdG8gR0NDIExPQ0FMLgoKMjAwMC0xMS0wOSAgSm9zZXBoIFMuIE15ZXJzICA8anNtMjhAY2FtLmFjLnVrPgoKCSogY2FsbHMuYyAoZXhwYW5kX2NhbGwsIGVtaXRfbGlicmFyeV9jYWxsX3ZhbHVlXzEpLCBjb2xsZWN0Mi5jCgkoc2Nhbl9wcm9nX2ZpbGUpLCBjb25maWcvYTI5ay9hMjlrLmMgKHByaW50X29wZXJhbmQpLAoJY29uZmlnL3NwYXJjL3NwYXJjLmMgKG9yZGVyX3JlZ3NfZm9yX2xvY2FsX2FsbG9jKTogVXNlIG1lbWNweSAoKQoJaW5zdGVhZCBvZiBiY29weSAoKS4KCSogcmVhbC5oOiBVc2UgbWVtY21wICgpIGluc3RlYWQgb2YgYmNtcCAoKS4KCSogY29uZmlnL204OGsvbTg4ay5jIChtODhrX2xheW91dF9mcmFtZSksIGNvbmZpZy9zaC9zaC5jCgkoc3BsaXRfYnJhbmNoZXMpLCBjb25maWcvc3BhcmMvc3BhcmMuYyAodWx0cmFfZmx1c2hfcGlwZWxpbmUsCgl1bHRyYXNwYXJjX3NjaGVkX2luaXQsIHVsdHJhc3BhcmNfc2NoZWRfcmVvcmRlciksCgljb25maWcvc3BhcmMvc3BhcmMuaCAoQ09ORElUSU9OQUxfUkVHSVNURVJfVVNBR0UpOiBVc2UgbWVtc2V0ICgpCglpbnN0ZWFkIG9mIGJ6ZXJvICgpLgoJKiBjb25maWcvdmF4L3htLXhtcy5oIChGSUxFX05BTUVfTk9ORElSRUNUT1JZKTogVXNlIHN0cnJjaHIgKCkKCWluc3RlYWQgb2YgcmluZGV4ICgpLgoJKiBjb25maWd1cmUuaW46IERvbid0IGNoZWNrIGZvciBiemVybywgYmNtcCwgaW5kZXggb3IgcmluZGV4LgoJKiBjb25maWd1cmUsIGNvbmZpZy5pbjogUmVnZW5lcmF0ZS4KCSogc3lzdGVtLmg6IERvbid0IGluY2x1ZGUgZGVjbGFyYXRpb25zIGZvciBiemVybywgYmNtcCwgaW5kZXggb3IKCXJpbmRleC4KCSogY29uZmlnL2kzODYveG0tYmVvcy5oLCBjb25maWcvcnM2MDAwL3htLWJlb3MuaDogRG9uJ3QgZGVmaW5lCgliemVybywgYmNtcCwgaW5kZXggb3IgcmluZGV4LgoKV2VkIE5vdiAgOCAyMTo1ODoyMCAyMDAwICBDaHJpc3RvcGhlciBGYXlsb3IgPGNnZkBjeWdudXMuY29tPgoKCSogY29uZmlnL2kzODYvY3lnd2luLmg6IEFkZCAtbm8td2luMzIgc3dpdGNoLiAgU2VwYXJhdGUgLW1uby1jeWd3aW4KCWluY2x1ZGUgYW5kIGxpYnJhcnkgcGF0aHMgZnJvbSAtbWN5Z3dpbiBjYXNlLiAgUGFyYW1ldGVyaXplIHNvbWUKCWRlY2xhcmF0aW9ucyB0byBhdm9pZCB3YXJuaW5ncy4gIFVzZSBzdGFuZGFyZCBsb2NhdGlvbnMgZm9yIGluY2x1ZGUgYW5kCglsaWIgZGlycy4KCjIwMDAtMTEtMDggIE5pY2sgQ2xpZnRvbiAgPG5pY2tjQHJlZGhhdC5jb20+CgoJKiBjb25maWcvYXJtL2FybS5tZCAobXVsc2lkaTNhZGRkaSk6IENoYW5nZSBvdXRwdXQgb3BlcmFuZAoJY29uc3RyYWludCBmcm9tICI9JiIgdG8gIismIi4KCSh1bXVsc2lkaTNhZGRkaSk6IENoYW5nZSBvdXRwdXQgb3BlcmFuZAljb25zdHJhaW50IGZyb20gIj0mIiB0bwoJIismIi4KCjIwMDAtMTEtMDggIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CgoJKiBmbG93LmMgKGluaXRfcHJvcGFnYXRlX2Jsb2NrX2luZm8pOiBQcm90ZWN0IHRoZSBydHggc3RvcmVkIGluCgltZW1fc2V0X2xpc3QgZnJvbSBtb2RpZmljYXRpb24gYnkgZmluZF9hdXRvX2luYy4KCShtYXJrX3NldF8xKTogTGlrZXdpc2UuCgoyMDAwLTExLTA4ICBOZWlsIEJvb3RoICA8bmVpbGJAZWFydGhsaW5nLm5ldD4KCglNb3ZlIGRpcmVjdGl2ZSBoYW5kbGluZyBpbnRvIHRoZSBsZXhlciBpdHNlbGYuCgoJKiBjcHBsZXguYyAoX2NwcF9sZXhfdG9rZW4pOiBIYW5kbGUgZGlyZWN0aXZlcyBkaXJlY3RseS4KCUluIHRoZSBjYXNlIG9mIGEgZGlyZWN0aXZlIGludGVycnVwdGluZyBhIGZ1bmN0aW9uLWxpa2UKCW1hY3JvIGludm9jYXRpb24sIHVzZSBleHRyYV9jaGFyIHNpbmNlIHJlYWRfYWhlYWQgaXMKCXVzZWQgdG8gc3RvcmUgdGhlICcjJy4gIFJldHVybiBhIENQUF9FT0YgaW4gdGhpcyBjYXNlLgoJKiBjcHBtYWNyby5jIChwYXJzZV9hcmcpOiBObyBuZWVkIHRvIGhhbmRsZSBDUFBfREhBU0ggYW55IG1vcmUuCgkoY3BwX2dldF90b2tlbik6IERvbid0IGhhbmRsZSBkaXJlY3RpdmVzIGhlcmUuCgkqIGNwcGxpYi5oOiBSZW1vdmUgQ1BQX0RIQVNIIHRva2VuIHR5cGUuCgpXZWQgTm92ICA4IDIxOjUzOjQxIE1FVCAyMDAwICBKYW4gSHViaWNrYSAgPGpoQHN1c2UuY3o+CgoJKiByZWdtb3ZlLmMgKGNvbWJpbmVfc3RhY2tfYWRqdXN0bWVudHNfZm9yX2Jsb2Nrcyk6IFJlY29nbml6ZSBwdXNoZXMKCWZvcm1lZCB1c2luZyBQUkVfTU9ESUZZIHRvby4KCjIwMDAtMTEtMDggIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjLXRyZWUudGV4aSAoVkFSX0RFQ0wpOiBEZXNjcmliZSByZXByZXNlbnRhdGlvbiBvZiBHQ0MncwoJZXh0ZW5zaW9uIGZvciBwbGFjaW5nIHZhcmlhYmxlcyBpbiBwYXJ0aWN1bGFyIHJlZ2lzdGVycy4KCgkqIGMtdHJlZS50ZXhpIChGVU5DVElPTl9UWVBFKTogQ2xhcmlmeSBUWVBFX0FSR19UWVBFUyBmb3IKCXVucHJvdG90eXBlZCBDIGZ1bmN0aW9ucyB3aXRoIG5vIHBhcmFtZXRlcnMuCgoyMDAwLTExLTA4ICBKYWt1YiBKZWxpbmVrICA8amFrdWJAcmVkaGF0LmNvbT4KCgkqIGNvbmZpZy9zcGFyYy9zcGFyYy5oIChBU01fT1VUUFVUX01JX1RIVU5LKTogQ2FzdCBERUxUQSB0byBpbnQKCWJlZm9yZSBwYXNzaW5nIHRvIGZwcmludGYuCgoyMDAwLTExLTA4ICBKYWt1YiBKZWxpbmVrICA8amFrdWJAcmVkaGF0LmNvbT4KCgkqIGZ1bmN0aW9uLmMgKGV4cGFuZF9mdW5jdGlvbl9zdGFydCk6IENhc3QgR0VUX01PREVfU0laRSB0bwoJSE9TVF9XSURFX0lOVCBiZWZvcmUgbmVnYXRpbmcgaXQuCgoyMDAwLTExLTA4ICBKYWt1YiBKZWxpbmVrICA8amFrdWJAcmVkaGF0LmNvbT4KCgkqIGV4cHIuYyAoZXhwYW5kX2V4cHIpIFtBRERSX0VYUFJdOiBIYW5kbGUgd2hlbiBvcDAgaXMgUkVUVVJOX0RFQ0wKCXBhc3NlZCBpbiBtdWx0aXBsZSBub24tY29udGlndW91cyBsb2NhdGlvbnMuCgoyMDAwLTExLTA4ICBHZXJhbGQgUGZlaWZlciAgPHBmZWlmZXJAZGJhaS50dXdpZW4uYWMuYXQ+CgoJKiBSRUFETUUuZ25hdDogUmVtb3ZlIGZpbGUuCgoyMDAwLTExLTA4ICBBbGV4YW5kcmUgT2xpdmEgIDxhb2xpdmFAcmVkaGF0LmNvbT4KCgkqIG1rbGliZ2NjLmluIChFWFRSQV9NVUxUSUxJQl9QQVJUUyk6IEdlbmVyYXRlIG11bHRpbGliIHBhcnRzCglpbi1wbGFjZS4KCjIwMDAtMTEtMDcgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CgoJKiBkd2FyZm91dC5jIChJTlNOX0xBQkVMX0ZNVCk6IFJlbW92ZS4KCShvdXRwdXRfbGFiZWxfZGllKTogVXNlIEFTTV9HRU5FUkFURV9JTlRFUk5BTF9MQUJFTC4KCShkd2FyZm91dF9sYWJlbCk6IFJlbW92ZS4KCSogZHdhcmZvdXQuaDogUmVtb3ZlIGl0J3MgcHJvdG90eXBlLgoJKiBkd2FyZjJvdXQuYyAoSU5TTl9MQUJFTF9GTVQpOiBSZW1vdmUuCgkoZ2VuX2xhYmVsX2RpZSk6IFVzZSBBU01fR0VORVJBVEVfSU5URVJOQUxfTEFCRUwuCgkoZHdhcmYyb3V0X2xhYmVsKTogUmVtb3ZlLgoJKiBkd2FyZjJvdXQuaDogUmVtb3ZlIGl0J3MgcHJvdG90eXBlLgoJKiBmaW5hbC5jIChmaW5hbF9zY2FuX2luc24pOiBEb24ndCBjYWxsIGR3YXJmWzJdb3V0X2xhYmVsLgoKMjAwMC0xMS0wNyAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCgkqIGNvbmZpZy9pYTY0L2ZkZS1nbGliYy5jIChmaW5kX2ZkZV9mb3JfZHNvKTogRG8gYSBiaW5hcnkKCXNlYXJjaCBvbiB0aGUgdW53aW5kIHJlZ2lvbiBzZWN0aW9uLgoKCSogY29uZmlnL2lhNjQvaWE2NC5tZCAobW92YmkpOiBBZGQgci9yIGFsdGVybmF0aXZlLgoJKGNtb3ZkaV9pbnRlcm5hbF9hc3RlcCk6IERlc2NyaWJlIGFsbCBjb21iaW5hdGlvbnMgb2YgcmVnaXN0ZXIKCWNsYXNzZXMgZm9yIHNvdXJjZXMgJiBkZXN0aW5hdGlvbnM7IHJlbW92ZSBtYXRjaGluZyBjb25zdHJhaW50cy4KCShjbW92ZGlfaW50ZXJuYWwpOiBMaWtld2lzZS4KCgkqIGdjYy5jIChkZWZhdWx0X2NvbXBpbGVycykgW0BjcHAtb3V0cHV0XTogQWRkIC1mcHJlcHJvY2Vzc2VkLgoKMjAwMC0xMS0wNyAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCgkqIGMtbGFuZy5jIChzdGFydF9jZHRvciwgZmluaXNoX2NkdG9yKTogTmV3IGZ1bmN0aW9ucy4KCShmaW5pc2hfZmlsZSk6IFVzZSB0aGVtIGluIGJ1aWxkaW5nIGNvbnN0cnVjdG9yL2Rlc3RydWN0b3IgZnVuY3Rpb25zLgoKCSogY29uZmlnL2FscGhhL2FscGhhLmggKEhBU19JTklUX1NFQ1RJT04sIExEX0lOSVRfU1dJVENILAoJTERfRklOSV9TV0lUQ0gpOiBNb3ZlIC4uLgoJKiBjb25maWcvYWxwaGEvb3NmLmg6IC4uLiBoZXJlLgoJKiBjb25maWcvYWxwaGEvYWxwaGEtaW50ZXJpeC5oOiBEb24ndCB1bmRlZiB0aGVtLgoKMjAwMC0xMS0wNyAgSmVmZnJleSBPbGRoYW0gIDxvbGRoYW1Ab3ouY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGNvbmZpZy9taXBzL3QtaXJpczYgKEZQQklUKTogTmV3LiAgQWRkZWQgc28gdGhhdCBfX3Vub3JkZGYyIGlzCglpbmNsdWRlZCBpbiBsaWJnY2MuYS4KCShEUEJJVCk6IExpa2V3aXNlLgoJKGRwLWJpdC5jKTogTGlrZXdpc2UuCgkoZnAtYml0LmMpOiBMaWtld2lzZS4KCjIwMDAtMTEtMDcgIE5pY2sgQ2xpZnRvbiAgPG5pY2tjQHJlZGhhdC5jb20+CgoJKiBjb25maWcvbTg4ay9tODhrLmggKEdMT0JBTF9BU01fT1ApOiBBZGQgbWlzc2luZyB0YWIuCgkoSU5URVJOQUxfQVNNX09QKTogQWRkIG1pc3NpbmcgdGFiLgoKMjAwMC0xMS0wNyAgSm9zZXBoIFMuIE15ZXJzICA8anNtMjhAY2FtLmFjLnVrPgoKCSogYWxpYXMuYyAoaW5pdF9hbGlhc19hbmFseXNpcyksIGNhbGxzLmMgKGV4cGFuZF9jYWxsLAoJZW1pdF9saWJyYXJ5X2NhbGxfdmFsdWVfMSksIGNvbWJpbmUuYyAoaW5pdF9yZWdfbGFzdF9hcnJheXMpLAoJY3NlLmMgKG5ld19iYXNpY19ibG9jayksIGRieG91dC5jIChkYnhvdXRfdHlwZSksIGRpYWdub3N0aWMuYwoJKGluaXRfb3V0cHV0X2J1ZmZlciwgc2V0X2RpYWdub3N0aWNfY29udGV4dCksIGR3YXJmMm91dC5jCgkoZXF1YXRlX2RlY2xfbnVtYmVyX3RvX2RpZSwgYnVpbGRfYWJicmV2X3RhYmxlKSwgZW1pdC1ydGwuYwoJKGluaXRfZW1pdF9vbmNlKSwgZm9sZC1jb25zdC5jIChtdWxfZG91YmxlLCBkaXZfYW5kX3JvdW5kX2RvdWJsZSksCglmdW5jdGlvbi5jIChhc3NpZ25fcGFybXMpLCBnY3NlLmMgKGNvbXB1dGVfY2FuX2NvcHksCglhbGxvY19nY3NlX21lbSwgYWxsb2NfcmVnX3NldF9tZW0sIHJlY29yZF9vbmVfc2V0LAoJY29tcHV0ZV9oYXNoX3RhYmxlLCBjb21wdXRlX3NldF9oYXNoX3RhYmxlLAoJY29tcHV0ZV9leHByX2hhc2hfdGFibGUpLCBnZW5hdHRydGFiLmMgKG9wdGltaXplX2F0dHJzKSwgZ2xvYmFsLmMKCShnbG9iYWxfYWxsb2MsIGdsb2JhbF9jb25mbGljdHMpLCBoYWlmYS1zY2hlZC5jIChjb21wdXRlX3RyZ19pbmZvLAoJY2xlYXJfdW5pdHMsIHNjaGVkdWxlX2Jsb2NrKSwgaW50ZWdyYXRlLmMgKGluaXRpYWxpemVfZm9yX2lubGluZSwKCWV4cGFuZF9pbmxpbmVfZnVuY3Rpb24pLCBqdW1wLmMgKHRocmVhZF9qdW1wcyksIGxvY2FsLWFsbG9jLmMKCShsb2NhbF9hbGxvYyksIGxvb3AuYyAoY29tYmluZV9tb3ZhYmxlcywgY291bnRfbG9vcF9yZWdzX3NldCwKCWxvYWRfbWVtc19hbmRfcmVjb3VudF9sb29wX3JlZ3Nfc2V0KSwgcHJpbnQtdHJlZS5jIChkZWJ1Z190cmVlKSwKCXJlZ2NsYXNzLmMgKGluaXRfcmVnX3NldHMsIGluaXRfcmVnX3NldHNfMSwgcmVnY2xhc3MsCglyZWNvcmRfcmVnX2NsYXNzZXMsIGFsbG9jYXRlX3JlZ19pbmZvKSwgcmVsb2FkLmMKCShnZXRfc2Vjb25kYXJ5X21lbSwgcmVtb3ZlX2FkZHJlc3NfcmVwbGFjZW1lbnRzLCBmaW5kX3JlbG9hZHMpLAoJcmVsb2FkMS5jIChyZWxvYWQsIHNldF9pbml0aWFsX2xhYmVsX29mZnNldHMsIGZpbmlzaF9zcGlsbHMsCglyZWxvYWRfYXNfbmVlZGVkLCBjaG9vc2VfcmVsb2FkX3JlZ3NfaW5pdCwKCXJlbG9hZF9jc2Vfc2ltcGxpZnlfb3BlcmFuZHMpLCByZW9yZy5jIChkYnJfc2NoZWR1bGUpLCBzYml0bWFwLmMKCShzYml0bWFwX3plcm8pLCBzaW1wbGlmeS1ydHguYyAoc2ltcGxpZnlfcGx1c19taW51cyksIHNzYS5jCgkocmVuYW1lX3JlZ2lzdGVycyksIHN0bXQuYyAoZXhwYW5kX2VuZF9jYXNlKSwgdW5yb2xsLmMKCSh1bnJvbGxfbG9vcCksIHZhcnJheS5jICh2YXJyYXlfZ3JvdyksIG9iamMvb2JqYy1hY3QuYzogVXNlIG1lbXNldAoJKCkgaW5zdGVhZCBvZiBiemVybyAoKS4KCjIwMDAtMTEtMDcgIE5laWwgQm9vdGggIDxuZWlsYkBlYXJ0aGxpbmcubmV0PgoKCSogY3AvbGFuZy1zcGVjcy5oOiBGaXggLXNhdmUtdGVtcHMgc3BlY3MgdW5kZXIgVVNFX0NQUExJQi4KCjIwMDAtMTEtMDcgIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIGMtY29tbW9uLmMgKGNvbWJpbmVfc3RyaW5ncyk6IE9ubHkgd2FybiBhYm91dCBsb25nIHN0cmluZ3MgZm9yIEMuCgpUdWUgTm92ICA3IDE5OjQ0OjMwIDIwMDAgIEoib3JuIFJlbm5lY2tlIDxhbXlsYWFyQHJlZGhhdC5jb20+CgoJKiBjb21iaW5lLmMgKGRpc3RyaWJ1dGVfbm90ZXMpOiBGaXggdHlwbyBpbiBsYXN0IGNoYW5nZS4KCjIwMDAtMTEtMDcgIEdlb2ZmIEtlYXRpbmcgIDxnZW9mZmtAcmVkaGF0LmNvbT4KCgkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLm1kIChtb3ZkaV9pbnRlcm5hbDMyKzEpOiBVc2UKCW9wZXJhbmRfc3VicmVnX2ZvcmNlIHJhdGhlciB0aGFuIGdlbl9ydHhfU1VCUkVHLgoJKG1vdmRpX2ludGVybmFsMzIrMik6IExpa2V3aXNlLgoKMjAwMC0xMS0wNyAgUGhpbGlwIEJsdW5kZWxsICA8cGhpbGJAZ251Lm9yZz4KCgkqIGNvbmZpZ3VyZS5pbiAoYXJtKi0qLWxpbnV4YW91dCopOiBPYnNvbGV0ZSwgZGVsZXRlZC4KCSogY29uZmlnL2FybS9saW51eC1hb3V0Lmg6IExpa2V3aXNlLgoJKiBjb25maWd1cmU6IFJlZ2VuZXJhdGUuCgoyMDAwLTExLTA3ICBQaGlsaXBwIFRob21hcyAgPHB0aG9tYXNAc3VzZS5kZT4KCgkqIEFCT1VULUdDQy1OTFM6IFJlbW92ZSB0aGUgcGF0Y2ggZm9yIGdldHRleHQgYXMgaXQgaGFzIGJlZW4KCWFjY2VwdGVkIG15IHRoZSBnZXR0ZXh0IG1haW50YWluZXIuCgoyMDAwLTExLTA3ICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBidWlsdGlucy5jIChleHBhbmRfYnVpbHRpbl9zdHJwYnJrKTogTmV3IGZ1bmN0aW9uLgoJKGV4cGFuZF9idWlsdGluKTogSGFuZGxlIEJVSUxUX0lOX1NUUlBCUksuCgoJKiBidWlsdGlucy5kZWYgKEJVSUxUX0lOX1NUUlBCUkspOiBOZXcgZW50cnkuCgoJKiBjLWNvbW1vbi5jIChjX2NvbW1vbl9ub2Rlc19hbmRfYnVpbHRpbnMpOiBEZWNsYXJlIGJ1aWx0aW4KCXN0cnBicmsuCgoyMDAwLTExLTA3ICBEYXZpZCBPJ0JyaWVuICA8b2JyaWVuQGRyYWdvbi5udXhpLmNvbT4KCgkqIGNvbmZpZy9hbHBoYS9mcmVlYnNkLmg6IE5ldyBmaWxlIC0tIEZyZWVCU0QvYWxwaGEgYXJjaGl0ZWN0dXJlIGZpbGUuCgkqIFBPVEZJTEVTLmluOiBBZGQgY29uZmlnL2FscGhhL2ZyZWVic2QuaAoJKiBjb25maWd1cmUuaW46IEFkZCBhbHBoYSotZnJlZWJzZCBzdXBwb3J0LgoJKiBjb25maWd1cmU6IFJlZ2VuZXJhdGUuCgoyMDAwLTExLTA3ICBKb3NlcGggUy4gTXllcnMgIDxqc20yOEBjYW0uYWMudWs+CgoJKiB0cmVlLmMgKGJ1aWxkX2NvbW1vbl90cmVlX25vZGVzXzIpOiBNYWtlIHZhX2xpc3RfdHlwZV9ub2RlIGJlIGEKCWNvcHkgb2YgcHRyX3R5cGVfbm9kZSByYXRoZXIgdGhhbiBwdHJfdHlwZV9ub2RlIGl0c2VsZi4KClR1ZSBOb3YgIDcgMDY6Mjk6MjQgMjAwMCAgSiJvcm4gUmVubmVja2UgPGFteWxhYXJAcmVkaGF0LmNvbT4KCgkqIGNvbWJpbmUuYyAocmVjb2dfZm9yX2NvbWJpbmUpOiBBbGxvY2F0ZSB1bmluaXRpYWxpemVkIHZlY3RvciB3aXRoCglydHZlY19hbGxvYy4KCSogcmVjb2cuYyAoYXBwbHlfY2hhbmdlX2dyb3VwKTogTGlrZXdpc2UuCgpUdWUgTm92ICA3IDA2OjI0OjAyIDIwMDAgIEoib3JuIFJlbm5lY2tlIDxhbXlsYWFyQHJlZGhhdC5jb20+CgoJKiBmbG93LmMgKHZlcmlmeV9sb2NhbF9saXZlX2F0X3N0YXJ0KTogQmFjayBvdXQgbGFzdCBjaGFuZ2UuCgkqIGNvbWJpbmUuYyAoZGlzdHJpYnV0ZV9ub3Rlcyk6IFdoZW4gcGFydHMgb2YgYSBoYXJkIHJlZyBhcmUKCW5laXRoZXIgc2V0IG5vciByZWZlcmVuY2VkIGluIFBMQUNFLCBzZWFyY2ggYmFja3dhcmRzIGZvciBhCglwbGFjZSB0byBwdXQgYSBSRUdfVU5VU0VEIG5vdGU7IGlmIG5vbmUgZm91bmQsIGFzayBmb3IgZmxvdwoJaW5mbyByZWZyZXNoLgoKTW9uIE5vdiAgNiAyMDowODoxMyAyMDAwICBKIm9ybiBSZW5uZWNrZSA8YW15bGFhckByZWRoYXQuY29tPgoKCSogcmVsb2FkMS5jIChlbGltaW5hdGVfcmVnc19pbl9pbnNuKTogQWxsb3cgYSBzZXQgdG8gYmUgYSBQQVJBTExFTAoJd2l0aCAoY2xvYmJlciAobWF0Y2hfc2NyYXRjaC4uLikpLgoKMjAwMC0xMS0wNiAgTmVpbCBCb290aCAgPG5laWxiQGVhcnRobGluZy5uZXQ+CgoJKiBjLWxleC5jIChpbml0X2NfbGV4KTogSWYgY3BwX3N0YXJ0X3JlYWQgZmFpbHMsIGV4aXQgd2l0aAoJZXJyb3Igc3RhdHVzLgoKMjAwMC0xMS0wNiAgTmVpbCBCb290aCAgPG5laWxiQGVhcnRobGluZy5uZXQ+CgoJKiB0cmFkY3BwLmMgKHNwZWNpYWxfc3ltYm9sKTogQXNzaWduIGFuIG51bGwgc3RyaW5nIHJhdGhlcgoJdGhhbiB3cml0aW5nIHRvIGFuIHVuYWxsb2NhdGVkIGJ1ZmZlci4KCjIwMDAtMTEtMDYgIE5laWwgQm9vdGggIDxuZWlsYkBlYXJ0aGxpbmcubmV0PgoKCSogY3BwbGV4LmMgKF9jcHBfZXF1aXZfdG9rZW5zKTogQ2hlY2sgYXJnX25vIGluIHRoZQoJQ1BQX01BQ1JPX0FSRyBjYXNlLgoKMjAwMC0xMS0wNiAgTmVpbCBCb290aCAgPG5laWxiQGVhcnRobGluZy5uZXQ+CgoJKiBjLWxleC5jIChjX2xleCk6IFJlcGxhY2UgdG9rLnZhbC5hdXggd2l0aCB0b2sudmFsLmMgb3IKCXRvay52YWwuYXJnX25vIGFzIGFwcHJvcHJpYXRlLgoJKiBjcHBleHAuYyAobGV4KTogU2ltaWxhcmx5LgoJKiBjcHBsZXguYyAoX2NwcF9sZXhfdG9rZW4sIGNwcF9zcGVsbF90b2tlbiwgY3BwX291dHB1dF90b2tlbiwKCWNwcF9lcXVpdl90b2tlbnMsIGNwcF9jYW5fcGFzdGUsIGNwcF9hdm9pZF9wYXN0ZSk6IFNpbWlsYXJseS4KCSogY3BwbWFjcm8uYyAoc3RyaW5naWZ5X2FyZywgcmVwbGFjZV9hcmdzLCBsZXhfZXhwYW5zaW9uX3Rva2VuLAoJY3BwX21hY3JvX2RlZmluaXRpb24pOiBTaW1pbGFybHkuCgkqIGNwcGxpYi5oIChzdHJ1Y3QgY3BwX3Rva2VuKTogUmVwbGFjZSBhdXggd2l0aCBjIGFuZCBhcmdfbm8uCgoyMDAwLTExLTA2ICBKYWt1YiBKZWxpbmVrICA8amFrdWJAcmVkaGF0LmNvbT4KCgkqIGNvbmZpZy9zcGFyYy9zcGFyYy5tZCAoYWRkZGkzKTogSWYgb3BlcmFuZHNbMl0gaXMgNDA5NiBhbmQKCW9wZXJhbmRzWzFdIGlzIGNvbnN0YW50LCBjYWxjdWxhdGUgdGhlIHN1bSBhbmQgZ2VuZXJhdGUgbW92ZGkuCgkoYWRkc2kzKTogU2ltaWxhcmx5LiAgVXNlIFNJbW9kZSBpbiBjYWxsIHRvIGFyaXRoXzQwOTZfb3BlcmFuZC4KCShzdWJzaTMpOiBVc2UgU0ltb2RlIGluIGNhbGwgdG8gYXJpdGhfNDA5Nl9vcGVyYW5kLgoKMjAwMC0xMS0wNiAgSmFrdWIgSmVsaW5layAgPGpha3ViQHJlZGhhdC5jb20+CgoJKiBjb25maWcvc3BhcmMvc3BhcmMuaCAoQVNNX09VVFBVVF9NSV9USFVOSyk6IE9uIHNwYXJjNjQgd2UgbmVlZCB0bwoJYWRqdXN0ICVvMSwgbm90ICVvMCBpZiB0aGUgcmV0dXJuIHR5cGUgaXMgbGFyZ2Ugc3RydWN0dXJlLgoKMjAwMC0xMS0wNiAgSmFrdWIgSmVsaW5layAgPGpha3ViQHJlZGhhdC5jb20+CgoJKiBjb25maWcvc3BhcmMvc3BhcmMubWQgKHNtdWxzaTNfaGlnaHBhcnRfdjhwbHVzLCBhc2hsZGkzX3Y4cGx1cysxLAoJdXBkYXRlX3JldHVybiwgZmx1c2gsIGZsdXNoZGksIGZmc3NpMiwgZmZzZGkyKTogRml4IG91dHB1dCBmb3JtYXR0aW5nLgoKU2F0IFNlcCAyMyAxOToxMDoyMCAyMDAwICBEZW5pcyBDaGVydHlrb3YgIDxkZW5pc2NAb3ZlcnRhLnJ1PiAmIE1hcmVrIE1pY2hhbGtpZXdpY3ogIDxtYXJla21AbGludXgub3JnLnBsPgoKCSogZXhwbWVkLmMgKGV4cGFuZF9kaXZtb2QpOiBGb3Igc2lnbmVkIGRpdmlkZSBieSAyLCBwcmVmZXIKCWEgYnJhbmNoIGFuZCBmZXdlciBzaGlmdHMgaWYgYnJhbmNoZXMgYXJlIHZlcnkgY2hlYXAuCgoyMDAwLTExLTA1ICBKb3NlcGggUy4gTXllcnMgIDxqc20yOEBjYW0uYWMudWs+CgoJKiBNYWtlZmlsZS5pbjogUmVtb3ZlIGFsbCB0YXJnZXRzIHJlbGF0ZWQgdG8gYnVpbGRpbmcKCWRpc3RyaWJ1dGlvbnMgYW5kIGRpZmZzLCBvciBJTlNUQUxMLgoJKiBJTlNUQUxMLCBpbnN0YWxsMS50ZXhpOiBSZW1vdmUuCgkqIGNvbmZpZ3VyZS5pbjogUmVtb3ZlIG1lbnRpb24gb2YgZGlzdGRpci4KCSogY29uZmlndXJlOiBSZWdlbmVyYXRlLgoJKiBvYmpjL01ha2UtbGFuZy5pbjogUmVtb3ZlIG1lbnRpb24gb2YgZGlzdGRpci4KCjIwMDAtMTEtMDQgIE5laWwgQm9vdGggIDxuZWlsYkBlYXJ0aGxpbmcubmV0PgoKCSogY3BwLnRleGk6IFVwZGF0ZSBmb3IgX1ByYWdtYS4KCjIwMDAtMTEtMDQgIEpvc2VwaCBTLiBNeWVycyAgPGpzbTI4QGNhbS5hYy51az4KCgkqIGdjYy50ZXhpIChDb250cmlidXRpbmcpOiBVcGRhdGUgVVJMIGZvciBwcm9qZWN0cyB3ZWIgcGFnZS4KCjIwMDAtMTEtMDQgIE5laWwgQm9vdGggIDxuZWlsYkBlYXJ0aGxpbmcubmV0PgoKCSogY3BwbGV4LmMgKHBhcnNlX3N0cmluZyk6IERvbid0IGFsbG93IG11bHRpbGluZSBzdHJpbmdzIGluCgkjaW5jbHVkZSBmYW1pbHkgZGlyZWN0aXZlcy4KCjIwMDAtMTEtMDQgIE5laWwgQm9vdGggIDxuZWlsYkBlYXJ0aGxpbmcubmV0PgoKCSogY3BwbGliLmMgKGRvX2xpbmUpOiBPbmx5IHdhcm4gcGVkYW50aWNhbGx5IGlmIG5vdCByZWFkaW5nCglwcmVwcm9jZXNzZWQgaW5wdXQuCgoyMDAwLTExLTA0ICBBbGV4YW5kcmUgT2xpdmEgIDxhb2xpdmFAcmVkaGF0LmNvbT4KCgkqIGNhbGxzLmMgKGVtaXRfY2FsbF8xKSBbc2liY2FsbF9wb3BdOiBVc2Ugbl9wb3BwZWQgaW5zdGVhZCBvZgoJUkVUVVJOX1BPUFNfQVJHUygpLgoKMjAwMC0xMS0wMyAgWmFjayBXZWluYmVyZyAgPHphY2tAd29sZXJ5LnN0YW5mb3JkLmVkdT4KCgkqIGJ1aWx0aW5zLmMgKGV4cGFuZF9idWlsdGluX3N0cmxlbik6IFJlbW92ZSB1bnVzZWQgbW9kZQoJYXJndW1lbnQuCgkqIGdjYy5jIChwcm9jZXNzX2NvbW1hbmQpOiBSZW1vdmUgdW51c2VkIHZhcmlhYmxlLgoJKiBmb2xkLWNvbnN0LmM6IEluY2x1ZGUgZXhwci5oLgoJKiByZWNvZy5jOiBJbmNsdWRlIHJlbG9hZC5oLgoJKiBNYWtlZmlsZS5pbiAocmVjb2cubywgZm9sZC1jb25zdC5vKTogVXBkYXRlIGRlcHMuCgoyMDAwLTExLTAyICBHZW9mZnJleSBLZWF0aW5nICA8Z2VvZmZrQGN5Z251cy5jb20+CgoJKiBmaXhpbmMvZ251LXJlZ2V4LmM6IENoYW5nZSAnQ1lHTlVTIExPQ0FMJyB0byAnRUdDUyBMT0NBTCcuCgpGcmkgTm92ICAzIDEzOjQxOjA0IDIwMDAgIE1hcmsgUCBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGNvbmZpZy9taXBzL2lyaXM2LmggKFNVQlRBUkdFVF9DQzFfU1BFQyk6IFJlbW92ZSAtc3RhdGljCgloYW5kbGluZy4KCShTVEFSVEZJTEVfU1BFQyk6IExpa2V3aXNlLgoJKExJTktfU1BFQyk6IExpa2V3aXNlLgoKMjAwMC0xMS0wMyAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogTWFrZWZpbGUuaW4gKGZvbGQtY29uc3Qubyk6IERlcGVuZCBvbiAkKEdHQ19IKSwgbm90IGdnYy5oLgoJKHRvcGxldi5vKTogTGlrZXdpc2UgZm9yICQoTE9PUF9IKS9sb29wLmggYW5kICQoUkVHU19IKS9yZWdzLmguCgkoc2ltcGxpZnktcnR4Lm8pOiBMaWtld2lzZSBmb3IgJChHR0NfSCkvZ2djLmguCgoyMDAwLTExLTAzICBKb3NlcGggUy4gTXllcnMgIDxqc20yOEBjYW0uYWMudWs+CgoJKiBjLWRlY2wuYyAoZHVwbGljYXRlX2RlY2xzLCBjb3B5X2xhbmdfZGVjbCksIGR3YXJmb3V0LmMKCShkd2FyZm91dF9saW5lKSwgZ2NjLmMgKG1haW4sIHNhdmVfc3RyaW5nKSwgdHJlZS5jIChpbml0X29ic3RhY2tzLAoJcGVybV9jYWxsb2MsIGdldF9pZGVudGlmaWVyLCBtYXliZV9nZXRfaWRlbnRpZmllciwKCXJlYWxfdmFsdWVfZnJvbV9pbnRfY3N0LCBzaW1wbGVfY3N0X2VxdWFsKSwgdmFyYXNtLmMKCShhc3NlbWJsZV9uYW1lLCBhc3NlbWJsZV9yZWFsLCBpbW1lZF9yZWFsX2NvbnN0XzEsCgljb21wYXJlX2NvbnN0YW50XzEsIGRlY29kZV9ydHhfY29uc3QsIG91dHB1dF9jb25zdGFudF9wb29sKTogVXNlCglzdHJyY2hyICgpIGluc3RlYWQgb2YgcmluZGV4ICgpLiAgVXNlIG1lbWNtcCAoKSBpbnN0ZWFkIG9mIGJjbXAKCSgpLiAgVXNlIG1lbWNweSAoKSBpbnN0ZWFkIG9mIGJjb3B5ICgpLiAgVXNlIG1lbXNldCAoKSBpbnN0ZWFkIG9mCgliemVybyAoKS4KCjIwMDAtMTEtMDMgIE5hdGhhbiBTaWR3ZWxsICA8bmF0aGFuQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjcHBmaWxlcy5jIChvcGVuX2ZpbGUpOiBJZiBhbHJlYWR5IHJlYWQsIHRoZW4gZG9uJ3QgcmVvcGVuLgoJSW1tZWRpYXRlbHkgY2xvc2UgYW4gZW1wdHkgZmlsZS4KCjIwMDAtMTEtMDEgIEJlcm5kIFNjaG1pZHQgIDxiZXJuZHNAcmVkaGF0LmNvLnVrPgoKCSogZXhwci5oIChmb2xkX2J1aWx0aW4pOiBNb3ZlIGRlY2xhcmF0aW9uLi4uCgkqIHRyZWUuaCAoZm9sZF9idWlsdGluKTogLi4uIGhlcmUuCgpGcmkgTm92ICAzIDA1OjQxOjA3IDIwMDAgIEoib3JuIFJlbm5lY2tlIDxhbXlsYWFyQHJlZGhhdC5jb20+CgoJKiBmbG93LmMgKHZlcmlmeV9sb2NhbF9saXZlX2F0X3N0YXJ0KTogQWxsb3cgaGFyZCByZWdzIHRvIGRpZS4KCjIwMDAtMTEtMDIgIE5laWwgQm9vdGggIDxuZWlsYkBlYXJ0aGxpbmcubmV0PgoKY29uZmlnOgoJKiBhMjlrL2EyOWsuaCwgYTI5ay91bml4LmgsIGEyOWsvdngyOWsuaCwKCWFscGhhL2FscGhhLWludGVyaXguaCwgYWxwaGEvYWxwaGEuaCwgYWxwaGEvbGludXguaCwKCWFscGhhL29wZW5ic2QuaCwgYWxwaGEvb3NmLmgsIGFscGhhL3Ztcy5oLCBhbHBoYS92eHdvcmtzLmgsCglhbHBoYS93aW4tbnQuaCwgYXJjL2FyYy5oLCBhcm0vYXJtLmgsIGFybS9jb25peC1lbGYuaCwKCWFybS9saW51eC1hb3V0LmgsIGFybS9saW51eC1lbGYuaCwgYXJtL25ldGJzZC5oLCBhcm0vcmlzY2l4LmgsCglhcm0vcmlzY2l4MS0xLmgsIGFybS9zZW1pYW9mLmgsIGFybS91bmtub3duLWVsZi1vYWJpLmgsIGFybS92eGFybS5oLAoJYzR4L3J0ZW1zLmgsIGNsaXBwZXIvY2xpeC5oLCBjb252ZXgvY29udmV4LmgsIGQzMHYvZDMwdi5oLAoJZWx4c2kvZWx4c2kuaCwgZnIzMC9mcjMwLmgsIGg4MzAwL2g4MzAwLmgsIGkzNzAvbGludXguaCwgaTM3MC9tdnMuaCwKCWkzNzAvb2UuaCwgaTM4Ni8zODZic2QuaCwgaTM4Ni9haXgzODZuZy5oLCBpMzg2L2Jlb3MtZWxmLmgsCglpMzg2L2JzZDM4Ni5oLCBpMzg2L2NydGRsbC5oLCBpMzg2L2N5Z3dpbi5oLCBpMzg2L2RndXguaCwKCWkzODYvZGpncHAtcnRlbXMuaCwgaTM4Ni9kamdwcC5oLCBpMzg2L2ZyZWVic2QtYW91dC5oLCBpMzg2L2ZyZWVic2QuaCwKCWkzODYvZ251LmgsIGkzODYvaTM4Ni1pbnRlcml4LmgsIGkzODYvaTM4Ni5oLCBpMzg2L2xpbnV4LWFvdXQuaCwKCWkzODYvbGludXgtb2xkbGQuaCwgaTM4Ni9saW51eC5oLCBpMzg2L2x5bngtbmcuaCwgaTM4Ni9seW54LmgsCglpMzg2L21hY2guaCwgaTM4Ni9taW5ndzMyLmgsIGkzODYvbW9zcy5oLCBpMzg2L25ldGJzZC5oLAoJaTM4Ni9uZXR3YXJlLmgsIGkzODYvbmV4dC5oLCBpMzg2L29wZW5ic2QuaCwgaTM4Ni9vc2YxZWxmLmgsCglpMzg2L29zZmVsZi5oLCBpMzg2L29zZnJvc2UuaCwgaTM4Ni9wdHg0LWkuaCwgaTM4Ni9ydGVtcy5oLAoJaTM4Ni9ydGVtc2VsZi5oLCBpMzg2L3Njby5oLCBpMzg2L3NjbzQuaCwgaTM4Ni9zY280ZGJ4LmgsIGkzODYvc2NvNS5oLAoJaTM4Ni9zY29kYnguaCwgaTM4Ni9zZXF1ZW50LmgsIGkzODYvc29sMi5oLCBpMzg2L3N1bi5oLCBpMzg2L3N5c3YzLmgsCglpMzg2L3N5c3Y0LmgsIGkzODYvdXdpbi5oLCBpMzg2L3ZzdGEuaCwgaTM4Ni92eGkzODYuaCwgaTM4Ni93aW4tbnQuaCwKCWkzODYvd2luMzIuaCwgaTg2MC9meDI4MDAuaCwgaTg2MC9pODYwLmgsIGk4NjAvbWFjaC5oLCBpODYwL3N5c3YzLmgsCglpODYwL3N5c3Y0LmgsIGk5NjAvaTk2MC5oLCBpOTYwL3J0ZW1zLmgsIGk5NjAvdng5NjAtY29mZi5oLAoJaWE2NC9pYTY0LmgsIGlhNjQvbGludXguaCwgbTMyci9tMzJyLmgsIG02OGsvM2IxLmgsIG02OGsvM2IxZy5oLAoJbTY4ay9hLXV4LmgsIG02OGsvYWx0b3MzMDY4LmgsIG02OGsvYW1peC5oLCBtNjhrL2Fwb2xsbzY4LmgsCgltNjhrL2NyZHMuaCwgbTY4ay9jdGl4LmgsIG02OGsvZHB4Mi5oLCBtNjhrL2hwMmJzZC5oLCBtNjhrL2hwMzIwLmgsCgltNjhrL2hwM2JzZC5oLCBtNjhrL2hwM2JzZDQ0LmgsIG02OGsvaXNpLmgsIG02OGsvbGludXgtYW91dC5oLAoJbTY4ay9saW51eC5oLCBtNjhrL2x5bngtbmcuaCwgbTY4ay9seW54LmgsIG02OGsvbTY4a2VtYi5oLAoJbTY4ay9tNjhrdjQuaCwgbTY4ay9tb3QzMzAwLmgsIG02OGsvbmV0YnNkLmgsIG02OGsvbmV3cy5oLAoJbTY4ay9uZXh0LmgsIG02OGsvb3BlbmJzZC5oLCBtNjhrL3BiYi5oLCBtNjhrL3BsZXh1cy5oLCBtNjhrL3J0ZW1zLmgsCgltNjhrL3J0ZW1zZWxmLmgsIG02OGsvc3VuMi5oLCBtNjhrL3N1bjMuaCwgbTY4ay9zdW4zbWFjaC5oLAoJbTY4ay90b3dlci1hcy5oLCBtNjhrL3Rvd2VyLmgsIG02OGsvdnhtNjhrLmgsIG04OGsvZGd1eC5oLAoJbTg4ay9kb2xwaC5oLCBtODhrL2x1bmEuaCwgbTg4ay9tODhrLWFvdXQuaCwgbTg4ay9tODhrLWNvZmYuaCwKCW04OGsvb3BlbmJzZC5oLCBtODhrL3N5c3YzLmgsIG04OGsvc3lzdjQuaCwgbWlwcy9ic2QtNC5oLAoJbWlwcy9ic2QtNS5oLCBtaXBzL2RlYy1ic2QuaCwgbWlwcy9kZWMtb3NmMS5oLCBtaXBzL2dudS5oLAoJbWlwcy9pcmlzMy5oLCBtaXBzL2lyaXM1LmgsIG1pcHMvaXJpczYuaCwgbWlwcy9saW51eC5oLCBtaXBzL21pcHMuaCwKCW1pcHMvbmV0YnNkLmgsIG1pcHMvbmV3czQuaCwgbWlwcy9uZXdzNS5oLCBtaXBzL253czMyNTB2NC5oLAoJbWlwcy9vcGVuYnNkLmgsIG1pcHMvb3Nmcm9zZS5oLCBtaXBzL3J0ZW1zNjQuaCwgbWlwcy9zbmktc3ZyNC5oLAoJbWlwcy9zdnIzLTQuaCwgbWlwcy9zdnIzLTUuaCwgbWlwcy9zdnI0LTQuaCwgbWlwcy9zdnI0LTUuaCwKCW1pcHMvdWx0cml4LmgsIG5zMzJrL2VuY29yZS5oLCBuczMyay9tZXJsaW4uaCwgbnMzMmsvbmV0YnNkLmgsCgluczMyay9uczMyay5oLCBuczMyay9wYzUzMi1tYWNoLmgsIG5zMzJrL3BjNTMyLmgsIG5zMzJrL3NlcXVlbnQuaCwKCW5zMzJrL3RlazYwMDAuaCwgbnMzMmsvdGVrNjEwMC5oLCBuczMyay90ZWs2MjAwLmgsIHBhL3BhLWhpdXguaCwKCXBhL3BhLWhwdXguaCwgcGEvcGEtaHB1eDcuaCwgcGEvcGEtbGludXguaCwgcGEvcGEtb3NmLmgsCglwYS9wYS1wcm8tZW5kLmgsIHBhL3BhLmgsIHBhL3J0ZW1zLmgsIHBqL2xpbnV4LmgsIHBqL3BqLmgsCglyb21wL3JvbXAuaCwgcnM2MDAwL2FpeC5oLCByczYwMDAvYWl4MzEuaCwgcnM2MDAwL2FpeDQxLmgsCglyczYwMDAvYWl4NDMuaCwgcnM2MDAwL2Jlb3MuaCwgcnM2MDAwL2VhYmkuaCwgcnM2MDAwL2VhYmlzaW0uaCwKCXJzNjAwMC9saW51eC5oLCByczYwMDAvbHlueC5oLCByczYwMDAvbWFjaC5oLCByczYwMDAvcnRlbXMuaCwKCXJzNjAwMC9zeXN2NC5oLCByczYwMDAvdnhwcGMuaCwgc2gvZWxmLmgsIHNoL2xpbnV4LmgsIHNoL3J0ZW1zLmgsCglzaC9ydGVtc2VsZi5oLCBzaC9zaC5oLCBzcGFyYy9hb3V0LmgsIHNwYXJjL2VsZi5oLCBzcGFyYy9saW51eC1hb3V0LmgsCglzcGFyYy9saW51eC5oLCBzcGFyYy9saW51eDY0LmgsIHNwYXJjL2xpdGUuaCwgc3BhcmMvbGl0ZWNvZmYuaCwKCXNwYXJjL2xpdGVlbGYuaCwgc3BhcmMvbHlueC1uZy5oLCBzcGFyYy9seW54LmgsIHNwYXJjL25ldGJzZC5oLAoJc3BhcmMvb3BlbmJzZC5oLCBzcGFyYy9wYmQuaCwgc3BhcmMvcnRlbXMuaCwgc3BhcmMvcnRlbXNlbGYuaCwKCXNwYXJjL3NvbDItc2xkLTY0LmgsIHNwYXJjL3NvbDIuaCwgc3BhcmMvc3A2NC1hb3V0LmgsCglzcGFyYy9zcDY0LWVsZi5oLCBzcGFyYy9zcDg2eC1hb3V0LmgsIHNwYXJjL3NwODZ4LWVsZi5oLAoJc3BhcmMvc3BhcmMuaCwgc3BhcmMvc3lzdjQuaCwgc3BhcmMvdnhzaW0uaCwgc3BhcmMvdnhzcGFyYy5oLAoJdjg1MC9ydGVtcy5oLCB2YXgvbmV0YnNkLmgsIHZheC9vcGVuYnNkLmgsIHZheC91bHRyaXguaCwgdmF4L3ZheC5oLAoJdmF4L3ZheHYuaCwgdmF4L3Ztcy5oLCB3ZTMyay93ZTMyay5oCgoJUmVwbGFjZSAtQSgpIHdpdGggLUE9LCB0aGUgbmV3IGFzc2VydGlvbiBzeW50YXguCgpUaHUgTm92ICAyIDIxOjUyOjM1IDIwMDAgIEoib3JuIFJlbm5lY2tlIDxhbXlsYWFyQHJlZGhhdC5jb20+CgoJKiBjb21iaW5lLmMgKGRpc3RyaWJ1dGVfbm90ZXMpOiBVc2UgcnR4X2VxdWFsX3AgdG8gY2hlY2sgZWxpbV9pMiAvCgllbGltX2kxLgoJSW4gUkVHX0RFQUQgaGFuZGxpbmc6IFdoZW4gaGFuZGxpbmcgcGFydHMgb2YgbXVsdGktaGFyZC1yZWcgaGFyZAoJcmVnaXN0ZXJzLCBpbmNyZW1lbnQgdGhlIGxvb3AgY291bnRlciBieSB0aGUgc2l6ZSBvZiB0aGUgcGFydHM7Cgl1c2UgcmVjdXJzaW9uIHRvIGhhbmRsZSBpbmRpdmlkdWFsIHBhcnRzLgoKMjAwMC0xMS0wMiAgTmVpbCBCb290aCAgPG5laWxiQGVhcnRobGluZy5uZXQ+CgoJKiBjb25maWd1cmUuaW46IE1ha2UgaW50ZWdyYXRlZCBDUFAgdGhlIGRlZmF1bHQuCgkqIGNvbmZpZ3VyZTogUmVnZW5lcmF0ZS4KClRodSBOb3YgIDIgMTk6MjA6MTIgMjAwMCAgSiJvcm4gUmVubmVja2UgPGFteWxhYXJAcmVkaGF0LmNvbT4KCgkqIHJlbG9hZC5jIChmaW5kX2VxdWl2X3JlZyk6IFRlc3QgYWxsIGhhcmQgcmVnaXN0ZXJzIGZvciBtZW1iZXJzaGlwCglpbiB0aGUgcmVxdWVzdGVkIGNsYXNzLgoKMjAwMC0xMS0wMiAgSm9zZXBoIFMuIE15ZXJzICA8anNtMjhAY2FtLmFjLnVrPgoKCSogY29sbGVjdDIuYyAobWFpbiwgd3JpdGVfY19maWxlX3N0YXQpLCBnY2MuYyAodHJhbnNsYXRlX29wdGlvbnMsCglwcm9jZXNzX2NvbW1hbmQsIG1haW4pLCBnY292LmMgKG9wZW5fZmlsZXMsIG91dHB1dF9kYXRhKSwgdGxpbmsuYwoJKGZyb2JfZXh0ZW5zaW9uLCBzY2FuX2xpbmtlcl9vdXRwdXQpLCB0b3BsZXYuYwoJKGZpbGVfbmFtZV9ub25kaXJlY3RvcnkpOiBVc2Ugc3RyY2hyICgpIGFuZCBzdHJyY2hyICgpIGluc3RlYWQgb2YKCWluZGV4ICgpIGFuZCByaW5kZXggKCkuCgoyMDAwLTExLTAyICBKb3NlcGggUy4gTXllcnMgIDxqc20yOEBjYW0uYWMudWs+CgoJKiBjLWNvbW1vbi5jIChnZXRfZmxhZ19zcGVjLCBjaGVja19mb3JtYXRfaW5mb19tYWluLAoJY2hlY2tfZm9ybWF0X3R5cGVzKTogVXNlIHN0cmNociAoKSBpbnN0ZWFkIG9mIGluZGV4ICgpLiAgQ29tcGFyZQoJYWdhaW5zdCBlcnJvcl9tYXJrX25vZGUgaW5zdGVhZCBvZiBjb21wYXJpbmcgdGhlIFRSRUVfQ09ERSBhZ2FpbnN0CglFUlJPUl9NQVJLLgoKMjAwMC0xMS0wMiAgWmFjayBXZWluYmVyZyA8emFja3dAU3RhbmZvcmQuRURVPgoKCUludGVncmF0ZWQgQ1BQLgoKCSogYy1sZXguYyAoaW5pdF9jX2xleCk6IFVwZGF0ZSBjcHBfc3RhcnRfcmVhZCBjYWxsLgoJKGNiX2lkZW50KTogVXBkYXRlIGZvciBuZXcgY2FsbGJhY2sgcHJvdG90eXBlLgoJKGNiX2RlZl9wcmFnbWEpOiBVcGRhdGUgZm9yIG5ldyBjcHBfZ2V0X3Rva2VuIHByb3RvdHlwZS4KCShjX2xleCk6IFNpbWlsYXJseS4gIFVzZSBjcHBfZ2V0X2xpbmUuCgoJKiBjLXBhcnNlLmluIChmaW5pc2hfcGFyc2UpOiBVcGRhdGUgZm9yIG5ldyBjcHBfZmluaXNoCglwcm90b3R5cGUuCgoJKiBjcC9sZXguYyAoZmluaXNoX3BhcnNlKTogU2ltaWxhcmx5LgoKMjAwMC0xMS0wMSAgR2VvZmYgS2VhdGluZyAgPGdlb2Zma0BjeWdudXMuY29tPgoKCSogbWFjaG1vZGUuZGVmOiBBZGQgVjE2UUltb2RlLgoKMjAwMC0xMS0wMSAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCgkqIGR3YXJmMm91dC5jIChsb2NfZGVzY3JpcHRvcl9mcm9tX3RyZWUpOiBDaGVjayBmb3IgbnVsbCByZXN1bHQKCWZyb20gcnRsX2Zvcl9kZWNsX2xvY2F0aW9uLgoJKGFkZF9sb2NhdGlvbl9vcl9jb25zdF92YWx1ZV9hdHRyaWJ1dGUpOiBMaWtld2lzZS4KCjIwMDAtMTEtMDEgIE5laWwgQm9vdGggIDxuZWlsYkBlYXJ0aGxpbmcubmV0PgoKCSogY3BwbGliLmMgKHJ1bl9kaXJlY3RpdmUpOiBVc2UgY29ycmVjdCBsaW5lIG51bWJlciBmb3Igb3V0cHV0CglvZiBfUHJhZ21hLiAgUmVtZW1iZXIgYW55IGluLXByb2dyZXNzIGRpcmVjdGl2ZS4KCgkqIGdjYy5kZy9jcHAvdmFyYXJnMi5jLCBnY2MuZGcvY3BwL19QcmFnbTEuYzogTmV3IHRlc3RzLgoKMjAwMC0xMS0wMSAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCgkqIHN0bXQuYyAoZXhwYW5kX3N0YXJ0X251bGxfbG9vcCk6IFNldCBjb250aW51ZV9sYWJlbC4KCjIwMDAtMTEtMDEgIEJlcm5kIFNjaG1pZHQgIDxiZXJuZHNAcmVkaGF0LmNvLnVrPgoKCSogYnVpbHRpbnMuYyAoZm9sZF9idWlsdGluX2NvbnN0YW50X3AsIGZvbGRfYnVpbHRpbik6IE5ldyBmdW5jdGlvbnMuCgkoZXhwYW5kX2J1aWx0aW5fY29uc3RhbnRfcCk6IE1vdmUgcGFydHMgb2YgdGhlIGNvZGUgaW50bwoJZm9sZF9idWlsdGluX2NvbnN0YW50X3AuCgkoZXhwYW5kX2J1aWx0aW5fc3RybGVuKTogTW92ZSBwYXJ0cyBvZiB0aGUgY29kZSBpbnRvIGZvbGRfYnVpbHRpbi4KCSogZXhwci5oIChmb2xkX2J1aWx0aW4pOiBEZWNsYXJlLgoJKiBmb2xkLWNvbnN0LmMgKGZvbGQpOiBIYW5kbGUgYnVpbHRpbiBjYWxscy4KCgkqIGMtdHlwZWNrLmMgKGJ1aWxkX2Z1bmN0aW9uX2NhbGwpOiBDYWxsIGZvbGQgb24gdGhlIENBTExfRVhQUi4KCjIwMDAtMTEtMDEgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CgoJKiBzdG10LmMgKGV4cGFuZF9zdGFydF9udWxsX2xvb3ApOiBOZXcuCgkoZXhwYW5kX2VuZF9udWxsX2xvb3ApOiBOZXcuCgkqIGMtc2VtYW50aWNzLmMgKGdlbnJ0bF9kb19zdG10KTogVXNlIHRoZW0uCgkqIHRyZWUuaDogRGVjbGFyZSB0aGVtLgoKMjAwMC0xMS0wMSAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCgkqIGNwcG1haW4uYyAoc2Nhbl9idWZmZXIpOiBEb24ndCBhdm9pZCBwYXN0ZSBmb3IgYXNzZW1ibHkuCgoyMDAwLTExLTAxICBOZWlsIEJvb3RoICA8bmVpbGJAZWFydGhsaW5nLm5ldD4KCgkqIGMtcGFyc2UuaW4gKF95eWxleCk6IFJlbW92ZSBDUFBfQkFDS1NMQVNIIGNhc2UuCgkqIGNwL3NwZXcuYzogU2ltaWxhcmx5LgoJKiBjcHBsZXguYyAoX2NwcF9sZXhfdG9rZW4pOiBCYWNrc2xhc2hlcyBhcmUgbm93IENQUF9PVEhFUi4KCSogY3BwbWFjcm8uYyAoc3RyaW5naWZ5X2FyZyk6IFNpbWlsYXJseS4KCSogY3BwbGliLmggKENQUF9CQUNLU0xBU0gpOiBEZWxldGUuCgoyMDAwLTEwLTMxICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBidWlsdGlucy5jIChleHBhbmRfYnVpbHRpbl9zdHJzdHIpOiBOZXcgZnVuY3Rpb24uCgkoZXhwYW5kX2J1aWx0aW4pOiBIYW5kbGUgQlVJTFRfSU5fU1RSU1RSIGFuZCBCVUlMVF9JTl9TVFJDSFIuCgoJKiBidWlsdGlucy5kZWYgKEJVSUxUX0lOX1NUUlNUUiwgQlVJTFRfSU5fU1RSQ0hSKTogTmV3IGVudHJpZXMuCgoJKiBjLWNvbW1vbi5jIChjX2NvbW1vbl9ub2Rlc19hbmRfYnVpbHRpbnMpOiBEZWNsYXJlIGJ1aWx0aW4gc3Ryc3RyCglhbmQgYnVpbHRpbiBzdHJjaHIuCgoyMDAwLTEwLTMxICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEByZWRoYXQuY29tPgoKCSogY29uZmlnL2kzODYvaTM4Ni5jIChmY21vdl9jb21wYXJpc29uX29wZXJhdG9yKTogQ2hlY2sgZm9yCglDQ0ZQbW9kZSBvciBDQ0ZQVW1vZGUgaW5zdGVhZCBvZiBDQ21vZGUuCgkoaXg4Nl9leHBhbmRfZnBfbW92Y2MpOiBDYWxsIGl4ODZfZXhwYW5kX3NldGNjIGZvciBtb3N0Cgl1bm9yZGVyZWQgb3BlcmF0aW9ucyBhcyB3ZWxsLgoKMjAwMC0xMC0zMSAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCgkqIGMtc2VtYW50aWNzLmMgKGdlbnJ0bF9kb19zdG10KTogVXNlIGludGVnZXJfemVyb3AgaW5zdGVhZAoJb2YgaW50ZWdlcl96ZXJvX25vZGUuCgoyMDAwLTEwLTMxICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEByZWRoYXQuY29tPgoKCSogYy1zZW1hbnRpY3MuYyAoZ2VucnRsX2RvX3N0bXQpOiBTcGVjaWFsIGNhc2UgZG8vd2hpbGUoMCkuCgoyMDAwLTEwLTMxICBOaWNrIENsaWZ0b24gIDxuaWNrY0ByZWRoYXQuY29tPgoKCSogY29uZmlnL2FybS91bmtub3duLWVsZi5oIChVTklRVUVfU0VDVElPTl9QKTogRG8gbm90IGFsbG93CgktZmRhdGEtc2VjdGlvbnMgdG8gb3ZlcnJpZGUgdGhlIHNlY3Rpb24gYXR0cmlidXRlIG9mIGEgREVDTC4KCjIwMDAtMTAtMzEgIENocmlzIERlbWV0cmlvdSAgPGNnZEBzaWJ5dGUuY29tPgoKCSogbGliZ2NjMi5jIChfX3NodGFiKTogUmVtb3ZlIF9fc2h0YWIgdmFyaWFibGUuCgkqIGxpYmdjYy1zdGQudmVyIChHQ0NfMy4wKTogUmVtb3ZlIF9fc2h0YWIgZnJvbSBzeW1ib2wgbGlzdC4KCSogTWFrZWZpbGUuaW4gKExJQjJGVU5DUyk6IFJlbW92ZSBfc2h0YWIgZnJvbSBsaXN0IG9mIGxpYnJhcnkKCW1lbWJlcnMuCgoyMDAwLTEwLTMxICBKaW0gV2lsc29uICA8d2lsc29uQHJlZGhhdC5jb20+CgoJKiBkZWZhdWx0cy5oIChBU01fT1VUUFVUX0RFQlVHX0xBQkVMKTogTmV3LgoJKiB0bS50ZXhpIChBU01fT1VUUFVUX0RFQlVHX0xBQkVMKTogRG9jdW1lbnQuCgkqIGR3YXJmMm91dC5jIChkd2FyZjJvdXRfYmVnaW5fYmxvY2spOiBVc2UgQVNNX09VVFBVVF9ERUJVR19MQUJFTAoJaW5zdGVhZCBvZiBBU01fT1VUUFVUX0lOVEVSTkFMX0xBQkVMLgoJKGR3YXJmMm91dF9lbmRfYmxvY2ssIGR3YXJmMm91dF9sYWJlbCk6IExpa2V3aXNlLgoJKiBmaW5hbC5jIChmaW5hbF9zY2FuX2luc24sIGNhc2UgTk9URV9JTlNOX0RFTEVURURfTEFCRUwpOiBMaWtld2lzZQoJKiBjb25maWcvaWE2NC9pYTY0LmggKEFTTV9PVVRQVVRfREVCVUdfTEFCRUwpOiBEZWZpbmUuCgoyMDAwLTEwLTMxICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEByZWRoYXQuY29tPgoKCSogZHdhcmYyb3V0LmMgKHN0cnVjdCBkd19sb2NfZGVzY3Jfc3RydWN0KTogQWRkIGR3X2xvY19hZGRyLgoJKHNpemVfb2ZfbG9jcyk6IFNldCBpdC4KCShvdXRwdXRfbG9jX29wZXJhbmRzKTogVXNlIGl0IHRvIGNvbXB1dGUgYnJhbmNoIGRpc3BsYWNlbWVudC4KCShpbnRfbG9jX2Rlc2NyaXB0b3IpOiBOZXcuCgkobWVtX2xvY19kZXNjcmlwdG9yKTogRGVyZWZlcmVuY2UgbWVtb3J5IGluIHRoZSBwcm9wZXIgc2l6ZS4KCVVzZSBEV19PUF9wbHVzX3Vjb25zdCB3aGVuIHBvc3NpYmxlLiAgVXNlIGludF9sb2NfZGVzY3JpcHRvci4KCShsb2NfZGVzY3JpcHRvcl9mcm9tX3RyZWUpOiBOZXcuCgkocnRsX2Zvcl9kZWNsX2xvY2F0aW9uKTogQnJlYWsgb3V0IGZyb20gLi4uCgkoYWRkX2xvY2F0aW9uX29yX2NvbnN0X3ZhbHVlX2F0dHJpYnV0ZSk6IC4uLiBoZXJlLgoJKGFkZF9ib3VuZF9pbmZvKTogVXNlIGxvY19kZXNjcmlwdG9yX2Zyb21fdHJlZS4KCjIwMDAtMTAtMzEgIE5laWwgQm9vdGggIDxuZWlsYkBlYXJ0aGxpbmcubmV0PgoKCSogY3BwLnRleGk6IFVwZGF0ZSBmb3IgbmV3IGNvbW1hbmQgbGluZSBhc3NlcnRpb24gc3ludGF4LgoJKiBjcHBsaWIuYyAoY3BwX2RlZmluZSk6IFNpbXBsaWZ5IGEgYml0LgoJKGNwcF9hc3NlcnQsIGNwcF91bmFzc2VydCk6IFVzZSBoYW5kbGVfYXNzZXJ0aW9uLgoJKGhhbmRsZV9hc3NlcnRpb24pOiBOZXcgZnVuY3Rpb247IGFjY2VwdCBuZXcgY29tbWFuZCBsaW5lCglzeW50YXggd2l0aCAnPScuCgkqIHRlc3RzdWl0ZS9nY2MuZGcvY3BwL2Fzc2VydDMuYzogTmV3IHRlc3RzLgoKMjAwMC0xMC0zMSAgTmVpbCBCb290aCAgPG5laWxiQGVhcnRobGluZy5uZXQ+CgoJKiBjcHBtYWNyby5jIChTVERDXzBfSU5fU1lTVEVNX0hFQURFUlMpOiBEZWZpbmUgdG8gMCBpZgoJdW5kZWZpbmVkLiAgUmVtb3ZlICNpZmRlZiBjaGVjay4KCSogY29uZmlnL2kzODYvc29sMi5oLCBjb25maWcvcnM2MDAwL3NvbDIuaCwgY29uZmlnL3NwYXJjL3NvbDIuaDoKCURlZmluZSBTVERDXzBfSU5fU1lTVEVNX0hFQURFUlMgdG8gMS4KCjIwMDAtMTAtMzEgIEphbiBIdWJpY2thICA8amhAc3VzZS5jej4KCSAgICBKYWt1YiBKZWxpbmVrICA8amFrdWJAcmVkaGF0LmNvbT4KCgkqIGNvbmZpZy9pMzg2L2kzODYuaDogQ2xhcmlmeSBDQ05PbW9kZSBkZXNjcmlwdGlvbiBpbiBjb21tZW50LgoJKEVYVFJBX0NDX01PREVTKTogUmVtb3ZlIENDUkNtb2RlLgoJKiBjb25maWcvaTM4Ni9pMzg2LmMgKGl4ODZfY29tcGFyaXNvbl9vcGVyYXRvcik6IFJlbW92ZSBDQ1JDbW9kZS4KCShwdXRfY29uZGl0aW9uX2NvZGUsIGl4ODZfbWF0Y2hfY2Ntb2RlKTogTGlrZXdpc2UuCgkoaXg4Nl9jY19tb2RlKTogTGlrZXdpc2UuICBGaXggY29tbWVudC4KCShpeDg2X2V4cGFuZF9zdHJsZW5zaV91bnJvbGxfMSk6ICpyYyBwYXR0ZXJucyBhcmUgZ29uZS4KCSogY29uZmlnL2kzODYvaTM4Ni5tZDogQWRkIHVuc3BlYyAxMiBkZXNjcmlwdGlvbi4KCShhZGRkaTMgc3BsaXQpOiBVc2UgdW5zcGVjIDEyIGluc3RlYWQgb2YgQ0NSQ21vZGUuCgkoYWRkc2kzX2NhcnJ5X3JjKTogUmVtb3ZlLgoJKGFkZHNpM19jYywgYWRkcWkzX2NjKTogTmV3IHBhdHRlcm5zLgoJKGFkZHNpXzMpOiBTd2FwIG9wZXJhbmRzLCBtYXRjaCBDQ1ptb2RlLgoJKGFkZHNpXzQpOiBSZXdyaXR0ZW4uCgkoYWRkc2lfNSk6IFJlbmFtZWQgZnJvbSBhZGRzaV82LgoJKGFkZHNpXzYpOiBSZW1vdmVkLgoJKGFkZGhpXzMpOiBTd2FwIG9wZXJhbmRzLCBtYXRjaCBDQ1ptb2RlLgoJKGFkZGhpXzQpOiBSZXdyaXR0ZW4uCgkoYWRkaGlfNSk6IFJlbmFtZWQgZnJvbSBhZGRoaV82LgoJKGFkZGhpXzYpOiBSZW1vdmVkLgoJKGFkZHFpXzMpOiBTd2FwIG9wZXJhbmRzLCBtYXRjaCBDQ1ptb2RlLgoJKGFkZHFpXzQpOiBSZXdyaXR0ZW4uCgkoYWRkcWlfNSk6IFJlbmFtZWQgZnJvbSBhZGRxaV82LiAgVXNlID1xIGNvbnN0cmFpbnQgZm9yIGNsb2JiZXIuCgkoc3Vic2kzX2NhcnJ5X3JjKTogUmVtb3ZlZC4KCShpb3JxaV8zKTogVXNlID1xIGNvbnN0cmFpbnQgZm9yIGNsb2JiZXIuCgkoeG9ycWlfY2NfMik6IExpa2V3aXNlLgoJKG5lZ2RpMl8xIHNwbGl0KTogRG9uJ3QgdXNlIENDUkNtb2RlLCB1c2UgbHR1IGluc3RlYWQgb2YgZ3R1LgoJKHg4Nl9tb3ZzaWNjXzBfbTFfcmMpOiBSZW1vdmVkLgoJKGNtcD9pIHBlZXBob2xlcyk6IFJlbW92ZSBuZWcuICBVc2UgQ0NHQ21vZGUgaW5zdGVhZCBvZiBDQ1JDbW9kZS4KCjIwMDAtMTAtMzEgIEpvc2VwaCBTLiBNeWVycyAgPGpzbTI4QGNhbS5hYy51az4KCgkqIGMtdHlwZWNrLmMgKGJ1aWxkX3VuYXJ5X29wKTogSWYgcGVkYW50aWMsIHBlZHdhcm4gZm9yIGluY3JlbWVudAoJYW5kIGRlY3JlbWVudCBvZiBjb21wbGV4IHR5cGVzLgoKMjAwMC0xMC0zMSAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogYnVpbHRpbnMuYyAoZXhwYW5kX2J1aWx0aW5fZnB1dHMpOiBXaGVuIGRlbGV0aW5nIE5PUCBjYWxscyB0bwoJYnVpbHRpbiBmcHV0cywgZW5zdXJlIHdlIHN0aWxsIGV2YWx1YXRlIHRoZSBzdHJlYW0gaW4gY2FzZSBpdAoJaGFzIHNpZGUtZWZmZWN0cy4KCjIwMDAtMTAtMzEgIEpha3ViIEplbGluZWsgIDxqYWt1YkByZWRoYXQuY29tPgoKCSogZXhwci5jIChkb19zdG9yZV9mbGFnKTogUGFzcyBvcGVyYW5kX21vZGUgaW5zdGVhZCBvZiBHRVRfTU9ERSAob3AwKQoJdG8gZXhwYW5kX3NoaWZ0LgoKVHVlIE9jdCAzMSAxNTozMzoyNyAyMDAwICBKIm9ybiBSZW5uZWNrZSA8YW15bGFhckByZWRoYXQuY29tPgoKCSogc2gtcHJvdG9zLmggKHJlZ19ub19zdWJyZWdfb3BlcmFuZCwgZW1pdF9mcHNjcl91c2UpOiBEb24ndCBkZWNsYXJlLgoJKGZwX2V4dGVuZGVkX29wZXJhbmQsIGVtaXRfZnBzY3JfdXNlKTogTGlrZXdpc2UuCgkqIHNoLmMgKHJlZ19ub19zdWJyZWdfb3BlcmFuZCwgZnBfZXh0ZW5kZWRfb3BlcmFuZCk6IERlbGV0ZSBmdW5jdGlvbnMuCgkoZnB1bF9vcGVyYW5kKTogTmV3IGZ1bmN0aW9uLgoJKiBzaC5oIChQUkVESUNBVEVfQ09ERVMpOiBSZW1vdmUgcmVnX25vX3N1YnJlZ19vcGVyYW5kIGFuZAoJZnBfZXh0ZW5kZWRfb3BlcmFuZC4gIEFkZCBmcHVsX29wZXJhbmQuCgkqIHNoLm1kIChtdWxzZjMsIG11bHNmM19pNCk6IFVzZSBmcF9hcml0aF9yZWdfb3BlcmFuZCBmb3IgImYiIG9wZXJhbmRzLgoJKG11bHNmM19pZSwgbWFjc2YzLCBjbXBndHNmX3QsIGNtcGVxc2ZfdCwgaWVlZV9jY21wZXFzZl90KTogTGlrZXdpc2UuCgkoY21wZ3RzZl90X2k0LCBjbXBlcXNmX3RfaTQsIGllZWVfY2NtcGVxc2ZfdF80LCBuZWdzZjIpOiBMaWtld2lzZS4KCShuZWdzZjJfaSwgc3FydHNmMiwgc3FydHNmMl9pLCBhYnNzZjIsIGFic3NmMl9pLCBhZGRkZjMpOiBMaWtld2lzZS4KCShhZGRkZjNfaSwgc3ViZGYzLCBzdWJkZjNfaSwgbXVsZGYzLCBtdWxkZjNfaSwgZGl2ZGYzKTogTGlrZXdpc2UuCgkoZGl2ZGYzX2kpOiBMaWtld2lzZS4KCShmbG9hdHNpc2YyKTogTGlrZXdpc2UuICBVc2UgZnB1bF9vcGVyYW5kIGZvciAneScgb3BlcmFuZC4KCShmbG9hdHNpc2YyX2k0LCBmbG9hdHNpc2YyX2llLCBmaXhfdHJ1bmNzZnNpMik6IExpa2V3aXNlLgoJKGZpeF90cnVuY3Nmc2kyX2k0LCBmaXhzZnNpLCBmbG9hdHNpZGYyLCBmbG9hdHNpZGYyX2kpOiBMaWtld2lzZS4KCShmaXhfdHJ1bmNkZnNpMiwgZml4X3RydW5jZGZzaTJfaSwgZXh0ZW5kc2ZkZjIpOiBMaWtld2lzZS4KCShleHRlbmRzZmRmMl9pNCwgdHJ1bmNkZnNmMiwgdHJ1bmNkZnNmMl9pNCk6IExpa2V3aXNlLgoKMjAwMC0xMC0zMSAgQmVybmQgU2NobWlkdCAgPGJlcm5kc0ByZWRoYXQuY28udWs+CgoJKiBjb25maWcvaTM4Ni9pMzg2LmMgKGl4ODZfaW5pdF9idWlsdGlucyk6IENvcnJlY3QgcmV0dXJuIHR5cGUKCWJ1aWxkaW5nIHY0aGlfZnR5cGVfdjRoaV9pbnRfaW50IHRyZWUgbm9kZS4KCShpeDg2X2V4cGFuZF9idWlsdGluKTogVXNlIGNvcnJlY3Qgb3BlcmFuZCBudW1iZXJzIDAgYW5kIDEuCglDb3B5IG9wZXJhbmQgMCBpbnRvIGEgUG1vZGUgcmVnaXN0ZXIsIGRvbid0IGdlbmVyYXRlIGEgTUVNIHJ0eC4KCgkqIGNvbmZpZy9pMzg2L2kzODYubWQgKHNzZV9tb3ZudGRpKTogVXNlIG1teCByZWdpc3RlciBjb25zdHJhaW50Cglmb3Igb3BlcmFuZCAxLgoJKG1teF9fdWF2Z3Y4cWkzKTogQ29ycmVjdCBpbnNuIG1uZW1vbmljLgoJKG1teF9wc2FkYncpOiBDb3JyZWN0IGluc24gbW5lbW9uaWMuICBVc2UgVjhRSSBtb2RlIGZvciBvcGVyYW5kcyAxIGFuZCAyLgoJKG1teF9wdW5wY2tod2QpOiBDb3JyZWN0IGluc24gbW5lbW9uaWMuCgkobW14X3B1bnBja2hkcSk6IExpa2V3aXNlLgoJKG1teF9wdW5wY2tsd2QpOiBMaWtld2lzZS4KCShtbXhfcHVucGNrbGRxKTogTGlrZXdpc2UuCgkocHJlZmV0Y2gpOiBVc2UgaW1tZWRpYXJlX29wZXJhbmQgYW5kICduJyBjb25zdHJhaW50IGZvciBvcGVyYW5kIDEuCglSZW51bWJlciBjYXNlIGxhYmVscyB0byBtYXRjaCB0aGUgX21tX3ByZWZldGNoIGNvbnN0YW50cyBkZWZpbmVkIGluCgl4bW1pbnRyaW4uaC4KCgkqIHJlY29nLmMgKHNwbGl0X2FsbF9pbnNucyk6IERvbid0IHRyeSB0byBjYWxsIGNsZWFudXBfc3VicmVnX29wZXJhbmRzCglpZiB0aGUgc3BsaXR0ZXIgZGlkbid0IGVtaXQgbmV3IGluc25zLgoJTWFrZSBzdXJlIHdlIGNhbGwgY2xlYW51cF9zdWJyZWdfb3BlcmFuZHMgZXZlbiB3aGVuIHNwbGl0dGluZyB0aGUgbGFzdAoJaW5zbiBpbiBhIGJhc2ljIGJsb2NrLgoKCSogaW52b2tlLnRleGkgKERlYnVnZ2luZyBPcHRpb25zKTogRGVzY3JpYmUgLWRvLgoJKiB0b3BsZXYuYyAoZW51bV9kdW1wX2ZpbGVfaW5kZXgpOiBOZXcgZW50cnkgREZJX3Bvc3RyZWxvYWQuCgkoZHVtcF9maWxlKTogTGlrZXdpc2UuCgkocmVzdF9vZl9jb21waWxhdGlvbik6IFNwbGl0IC5ncmVnIGR1bXAgaW50byAuZ3JlZyBhbmQgLnBvc3RyZWxvYWQuCgoyMDAwLTEwLTMwICBOZWlsIEJvb3RoICA8bmVpbGJAZWFydGhsaW5nLm5ldD4KCgkqIGNwcGZpbGVzLmMgKHN0YWNrX2luY2x1ZGVfZmlsZSk6IENoZWNrIGZvciBzdGFja2VkIGNvbnRleHRzCgloZXJlLgoJKiBjcHBoYXNoLmggKF9jcHBfZG9fX1ByYWdtYSk6IE5ldyBwcm90b3R5cGUuCgkqIGNwcGluaXQuYyAoY3BwX3JlYWRlcl9pbml0KTogQWRkIF9QcmFnbWEga2V5d29yZCB0byBoYXNoIHRhYmxlLgoKCSogY3BwbGV4LmMgKHNraXBfZXNjYXBlZF9uZXdsaW5lcyk6IE9ubHkgcHJvY2VzcyB0cmlncmFwaHMgYW5kCgllc2NhcGVkIG5ld2xpbmVzIGlmICEoYnVmZmVyLT5mcm9tX3N0YWdlMykuCgkoX2NwcF9sZXhfdG9rZW4pOiBXYXJuIGFib3V0IG1pc3NpbmcgbmV3bGluZXMgaWZmCgkhYnVmZmVyLT5mcm9tX3N0YWdlMy4KCgkqIGNwcGxpYi5jIChnZXRfX1ByYWdtYV9zdHJpbmcsIGRlc3RyaW5naXplLAoJX2NwcF9kb19fUHJhZ21hKTogTmV3IGZ1bmN0aW9ucy4KCShydW5fZGlyZWN0aXZlKTogU2V0IG91dHB1dF9saW5lIGZvciBfUHJhZ21hIHRvIGF2b2lkIGxpbmUKCW1hcmtlcnMgaW4gb3V0cHV0LiAgU2V0IGZyb21fc3RhZ2UzIGFuZCBwcmV2ZW50IG1hY3JvIGV4cGFuc2lvbgoJZm9yIF9QcmFnbWEgYW5kIGNvbW1hbmQtbGluZSBvcHRpb25zLiAgQ2hlY2sgYnVmZmVyIGV4aGF1c3Rpb24uCgkoY3BwX3B1c2hfYnVmZmVyKTogRG9uJ3QgY2hlY2sgZm9yIHN0YWNrZWQgbWFjcm8gY29udGV4dHMsIGFzCgl0aGlzIGlzIHBlcmZlY3RseSBsZWdpdGltYXRlIGZvciBfUHJhZ21hLiAgTW92ZSB0aGUgY2hlY2sgdG8KCXN0YWNrX2luY2x1ZGVfZmlsZSBpbnN0ZWFkLiBTZXQgZnJvbV9zdGFnZTMgaWZmIGJ1ZmZlciBpcwoJcHJlcHJvY2Vzc2VkIGlucHV0LgoKCSogY3BwbGliLmggKHN0cnVjdCBjcHBfYnVmZmVyKTogTWFrZSB3YXJuZWRfY3BsdXNwbHVzX2NvbW1lbnRzCgl1bnNpZ25lZC4gTmV3IGJvb2xlYW4gZnJvbV9zdGFnZTMuCgkoc3RydWN0IHNwZWNfbm9kZXMpOiBBZGQgbl9fUHJhZ21hLgoKCSogY3BwbWFjcm8uYyAoZW50ZXJfbWFjcm9fY29udGV4dCk6IEZsaXAgc2Vuc2Ugb2YgcmV0dXJuIHZhbHVlLgoJKF9jcHBfZ2V0X3Rva2VuKTogSGFuZGxlIF9QcmFnbWEgb3BlcmF0b3IuCgoyMDAwLTEwLTMwICBQaGlsIEVkd2FyZHMgIDxwbWVAc291cmNlcy5yZWRoYXQuY29tPgoKCSogZ2NjLnRleGk6ICBUaGUgQysrIHN0YW5kYXJkIGlzbid0ICJkcmFmdCIgYW55bW9yZS4KCjIwMDAtMTAtMzAgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjcHBtYWNyby5jIChidWlsdGluX21hY3JvKTogVXNlIE5UX1ZPSUQsIG5vdCBUX1ZPSUQuCgoyMDAwLTEwLTI5ICBOZWlsIEJvb3RoICA8bmVpbGJAZWFydGhsaW5nLm5ldD4KCgkqIGNwcGxpYi5jIChza2lwX3Jlc3Rfb2ZfbGluZSk6ICBVc2UgX2NwcF9nZXRfdG9rZW4uCgoyMDAwLTEwLTI5ICBKb3NlcGggUy4gTXllcnMgIDxqc20yOEBjYW0uYWMudWs+CgoJKiB0b3BsZXYuYywgZmxhZ3MuaCwgZm9sZC1jb25zdC5jLCByZWFsLmMsIHJ0bC5jLAoJZml4aW5jL2luY2xoYWNrLmRlZjogQ2hhbmdlIGNvbW1lbnRzIG1lbnRpb25pbmcgQzlYIHRvIHJlZmVyIHRvCglDOTkgaW5zdGVhZC4KCgkqIGludm9rZS50ZXhpOiBEb2N1bWVudCB0aGF0IC1WIHdpbGwgb25seSB3b3JrIGZvciB2ZXJ5IHNpbWlsYXIKCXZlcnNpb25zIG9mIGRyaXZlciBhbmQgY29tcGlsZXIuCgoyMDAwLTEwLTI5ICBOZWlsIEJvb3RoICA8bmVpbGJAZWFydGhsaW5nLm5ldD4KCgkqIGNwcG1hY3JvLmMgKF9jcHBfY3JlYXRlX2RlZmluaXRpb24pOiBPcHRpbWl6ZSB0aGUgY2FzZSBvZgoJYSBtYWNybyBkZWZpbmVkIHRvIGl0c2VsZi4KCjIwMDAtMTAtMjkgIE5laWwgQm9vdGggIDxuZWlsYkBlYXJ0aGxpbmcubmV0PgoKCSogY3BwbGV4LmMgKHNhdmVfY29tbWVudCk6IERvbid0IHN0b3JlIG5ldyBsaW5lcyBpbiBDKysgY29tbWVudHMuCgoyMDAwLTEwLTI5ICBNaWNoYWVsIEhheWVzICA8bWhheWVzQHJlZGhhdC5jb20+CgoJKiBpbnRlZ3JhdGUuYyAoY29weV9pbnNuX2xpc3QpOiBDb3B5IHRoZSB1bmNoYW5naW5nIGZsYWcgZm9yIGNhbGxzLgoKMjAwMC0xMC0yOCAgR2VvZmZyZXkgS2VhdGluZyAgPGdlb2Zma0BjeWdudXMuY29tPgoKCSogY3BwaGFzaC5jIChjcHBfZm9yYWxsX2lkZW50aWZpZXJzKTogQWRkIGNvbnRleHQgdmFyaWFibGUKCWZvciBjYWxsYmFjayByb3V0aW5lLgoJKiBjcHBtYWluLmMgKGR1bXBfbWFjcm8pOiBVcGRhdGUgdG8gbWF0Y2ggY3BwX2ZvcmFsbF9pZGVudGlmaWVycwoJY2hhbmdlLgoJKG1haW4pOiBDYWxsIGNwcF9mb3JhbGxfaWRlbnRpZmllcnMgd2l0aCBudWxsIGNvbnRleHQuCgkqIGNwcGxpYi5oIChjcHBfZm9yYWxsX2lkZW50aWZpZXJzKTogVXBkYXRlIHByb3RvdHlwZS4KCgkqIGNwcG1haW4uYzogTWFrZSBgcGFyc2VfaW4nIGFuZCBgcHJpbnQnIHN0YXRpYy4KCjIwMDAtMTAtMjggIEFsYW4gTW9kcmEgPGFsYW5AbGludXhjYXJlLmNvbS5hdT4KCgkqIGMtZGVjbC5jIChmaW5pc2hfZnVuY3Rpb24pOiBDbGVhciBjX2Z1bmN0aW9uX25hbWVfZGVjbGFyZWRfcC4KCjIwMDAtMTAtMjggIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CgoJKiByZWdyZW5hbWUuYyAoc2Nhbl9ydHhfYWRkcmVzcyk6IEZyb2IgYWN0aW9uLCBub3QgY2xhc3MsCgl3aGVuIHRyeWluZyB0byBkaXNhYmxlIG9wdGltaXphdGlvbi4KCjIwMDAtMTAtMjggIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjLXNlbWFudGljcy5jIChtYWtlX3J0bF9mb3JfbG9jYWxfc3RhdGljKTogRG9uJ3QgY2xvYmJlcgoJREVDTF9BU1NFTUJMRVJfTkFNRS4KCjIwMDAtMTAtMjggIEpvc2VwaCBTLiBNeWVycyAgPGpzbTI4QGNhbS5hYy51az4KCgkqIGNvbmZpZ3VyZS5pbjogRGV0ZXJtaW5lIGFuZCBzdWJzdGl0dXRlIGdjY192ZXJzaW9uX2Z1bGwuCgkqIGNvbmZpZ3VyZTogUmVnZW5lcmF0ZS4KCSogZ2NjYnVnLmluOiBVc2UgaXQgdG8gZ2l2ZSBmdWxsIHZlcnNpb24uICBEb24ndCBhbGxvdwoJY29uZmlkZW50aWFsIFBScy4KCjIwMDAtMTAtMjggIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CgoJKiByZWNvZy5jIChzcGxpdF9hbGxfaW5zbnMpOiBSdW4gY2xlYW51cF9zdWJyZWdfb3BlcmFuZHMKCWFmdGVyIHJlbG9hZC4KCgkqIHJlZ3JlbmFtZS5jIChyZWdyZW5hbWVfb3B0aW1pemUpOiBWZXJpZnkgdGhhdCBhbGwgcmVnaXN0ZXJzIG9mCglhIG11bHRpcGxlIHJlZ2lzdGVyIG1vZGUgYXJlIGF2YWlsYWJsZS4KCShzY2FuX3J0eF9hZGRyZXNzKTogQWNjZXB0IHRoZSBtb2RlIG9mIHRoZSBhZGRyZXNzOyBhbGwgY2FsbGVycwoJY2hhbmdlZC4KCgkqIGNwcGxpYi5jIChydW5fZGlyZWN0aXZlKTogRml4IHByb3RvdHlwZS4KCjIwMDAtMTAtMjggIEJlcm5kIFNjaG1pZHQgIDxiZXJuZHNAcmVkaGF0LmNvLnVrPgoKCSogcmVsb2FkLmMgKGZpbmRfcmVsb2Fkcyk6IERpc3Rpbmd1aXNoICJ3aW5zIiBzbyB0aGF0IHdlIGtub3cgd2hldGhlcgoJYSBnaXZlbiBvcGVyYW5kIHdvbiBiZWNhdXNlIG9mIGEgbWF0Y2hpbmcgY29uc3RyYWludCBvciBub3Q7IHRoZW4gdXNlCgl0aGF0IGluZm9ybWF0aW9uIHRvIGNvbXB1dGUgZ29hbF9hbHRlcm5hdGl2ZV9tYXRjaGVkIHByb3Blcmx5LgoJKiByZWxvYWQxLmMgKGNob29zZV9yZWxvYWRfcmVncyk6IE5ldmVyIHNldCByZWxvYWRfb3ZlcnJpZGVfaW4gZm9yIGFuCglvcHRpb25hbCByZWxvYWQuCgoJKiBjb25maWcvaWE2NC9pYTY0LmggKFJUWF9DT1NUUyk6IEEgZmV3IG1vcmUgZW50cmllcywgYW5kIGEgbW9yZQoJYWNjdXJhdGUgdmFsdWUgZm9yIE1VTFQuCgkqIGNvbmZpZy9pYTY0L2lhNjQuYyAoaWE2NF9wcmludF9vcGVyYW5kKTogUmVxdWlyZSBwcm9iYWJpbGl0eSB0byBiZQoJMiUgb3IgPiA5OCUgYmVmb3JlIHVzaW5nIHN0YXRpYyBicmFuY2ggcHJlZGljdGlvbiBiaXRzLgoKMjAwMC0xMC0yOCAgTmVpbCBCb290aCAgPG5laWxiQGVhcnRobGluZy5uZXQ+CgoJTmV3IG1hY3JvIGV4cGFuZGVyLgoKCSogY3BwbGliLmMgKHN0cnVjdCBhbnN3ZXIpOiBOZXcuCgkoc3RydWN0IGlmX3N0YWNrKTogVXNlIGNwcF9sZXhlcl9wb3MgcmF0aGVyIHRoYW4gbGluZSBhbmQgY29sLgoJUmVuYW1lIGNtYWNybyBtaV9jbWFjcm8uCgkoc3RydWN0IGRpcmVjdGl2ZSwgS0FORFIsIFNUREM4OSwgRVhURU5TSU9OLCBDT05ELCBJRl9DT05ELCBJTkNMLAoJSU5fSSk6IE5ldyBkaXJlY3RpdmUgYW5kIGZsYWdzLgoJKHNraXBfcmVzdF9vZl9saW5lLCBjaGVja19lb2wsIHJ1bl9kaXJlY3RpdmUsIGdsdWVfaGVhZGVyX25hbWUsCglwYXJzZV9hbnN3ZXIsIHBhcnNlX2Fzc2VydGlvbiwgZmluZF9hbnN3ZXIpOiBOZXcgZnVuY3Rpb25zLgoJKHBhcnNlX2lmZGVmLCBkZXRlY3RfaWZfbm90X2RlZmluZWQsIHZhbGlkYXRlX2Vsc2UpOiBSZW1vdmUuCgkobGV4X21hY3JvX25vZGUpOiBOZXcgZnVuY3Rpb24gdG8gcmVwbGFjZSBwYXJzZV9pZmRlZiBhbmQKCWdldF9kZWZpbmVfbm9kZS4KCgkoX2NwcF9oYW5kbGVfZGlyZWN0aXZlKTogTmV3IGZ1bmN0aW9uLCBjb21iaW5lcyBfY3BwX2NoZWNrX2RpcmVjdGl2ZQoJYW5kIF9jcHBfY2hlY2tfbGluZW1hcmtlci4KCgkoZG9fZGVmaW5lLCBkb191bmRlZiwgcGFyc2VfaW5jbHVkZSwgZG9faW5jbHVkZSwgZG9faW1wb3J0LAoJZG9faW5jbHVkZV9uZXh0LCByZWFkX2xpbmVfbnVtYmVyLCBkb19saW5lLCBkb19pZGVudCwgZG9fcHJhZ21hLAoJZG9fcHJhZ21hX29uY2UsIGRvX3ByYWdtYV9wb2lzb24sIGRvX3ByYWdtYV9kZXBlbmRlbmN5KToKCVVwZGF0ZSBmb3IgbmV3IHRva2VuIGdldHRpbmcgaW50ZXJmYWNlLgoKCShkb19pZmRlZiwgZG9faWZuZGVmLCBkb19pZiwgZG9fZWxzZSwgZG9fZW5kaWYsIHB1c2hfY29uZGl0aW9uYWwpCgk6IFVwZGF0ZSBmb3IgbmV3IG11bHRpcGxlLWluY2x1ZGUgb3B0aW1pc2F0aW9uIHRlY2huaXF1ZS4KCShkb19lbGlmKTogRG9uJ3QgZm9yZ2V0IHRvIGludmFsaWRhdGUgY29udHJvbGxpbmcgbWFjcm9zLgoKCSh1bndpbmRfaWZfc3RhY2ssIGNwcF9kZWZpbmVkLCBjcHBfcHVzaF9idWZmZXIsIGNwcF9wb3BfYnVmZmVyKTogVXBkYXRlLgoJKHBhcnNlX2Fzc2VydGlvbiwgcGFyc2VfYW5zd2VyLCBmaW5kX2Fuc3dlciwgX2NwcF90ZXN0X2Fzc2VydGlvbik6CglGdW5jdGlvbnMgdG8gaGFuZGxlIGFzc2VydGlvbnMgd2l0aCB0aGUgbmV3IHRva2VuIGludGVyZmFjZS4KCShkb19hc3NlcnQsIGRvX3VuYXNzZXJ0KTogVXNlIHRoZW0uCgoJKGNwcF9kZWZpbmUsIF9jcHBfZGVmaW5lX2J1aWx0aW4sIGNwcF91bmRlZiwgY3BwX2Fzc2VydCwgY3BwX3VuYXNzZXJ0KToKCVVzZSBydW5fZGlyZWN0aXZlLgoKCShfY3BwX2luaXRfc3RhY2tzKTogUmVnaXN0ZXIgZGlyZWN0aXZlIG5hbWVzLiAgRG9uJ3QgcmVnaXN0ZXIgc3BlY2lhbAoJbm9kZXMuCgoJKiBjcHBlcnJvci5jIChwcmludF9jb250YWluaW5nX2ZpbGVzLCBfY3BwX2JlZ2luX21lc3NhZ2UpOiBVcGRhdGUgdG8KCW5ldyBwb3NpdGlvbiByZWNvcmRpbmcgcmVnaW1lLgoJKGNwcF9pY2UsIGNwcF9mYXRhbCwgY3BwX2Vycm9yLCBjcHBfZXJyb3Jfd2l0aF9saW5lLCBjcHBfd2FybmluZywKCWNwcF93YXJuaW5nX3dpdGhfbGluZSwgY3BwX3BlZHdhcm4sIGNwcF9wZWR3YXJuX3dpdGhfbGluZSwKCWNwcF9wZWR3YXJuX3dpdGhfZmlsZV9hbmRfbGluZSk6IFVwZGF0ZSBmb3IgX2NwcF9iZWdpbl9tZXNzYWdlIGNoYW5nZXMuCgkoY3BwX3R5cGUybmFtZSk6IE1vdmUgdG8gY3BwbGV4LmMuCgoJKiBjcHBleHAuYyAocGFyc2VfY2hhcmNvbnN0KTogc3BlY19ub2RlcyBpcyBubyBsb25nZXIgYSBwb2ludGVyLgoJKHBhcnNlX2RlZmluZWQpOiBVcGRhdGUgdG8gaGFuZGxlIG5ldyBtdWx0aXBsZSBpbmNsdWRlIG9wdGltaXNhdGlvbgoJbWV0aG9kLiAgUmVtb3ZlIHBvaXNvbmVkIGlkZW50aWZpZXIgd2FybmluZy4KCShwYXJzZV9hc3NlcnRpb24sIFRZUEVfTkFNRSk6IERlbGV0ZS4KCShsZXgpOiBVcGRhdGUgZm9yIG11bHRpcGxlIGluY2x1ZGUgb3B0aW1pc2F0aW9uLCByZW1vdmFsIG9mCglDUFBfREVGSU5FRCwgdG8gdXNlIF9jcHBfdGVzdF9hc3NlcnRpb24gZm9yIGFzc2VydGlvbnMgYW5kCgljcHBfdG9rZW5fYXNfdGV4dC4KCShfY3BwX3BhcnNlX2V4cHIpOiBVcGRhdGUgZm9yIE1JIG9wdGltaXNhdGlvbiwgYW5kIHRvIHVzZSBvcF9hc190ZXh0LgoJKG9wX2FzX3RleHQpOiBOZXcgZnVuY3Rpb24sIHRvIHdyYXAgY3BwX3Rva2VuX2FzX3RleHQuCgoJKiBjcHBmaWxlcy5jIChzdGFja19pbmNsdWRlX2ZpbGUsIF9jcHBfcG9wX2ZpbGVfYnVmZmVyKToKCVVwZGF0ZSBmb3IgTUkgb3B0aW1pc2F0aW9uLgoJKF9jcHBfZXhlY3V0ZV9pbmNsdWRlKTogVGFrZSBhIHRva2VuIHJhdGhlciB0aGFuIDMgYXJndW1lbnRzLiAgRml4CglzZWdmYXVsdCBvbiBkaWFnbm9zdGljLgoJKF9jcHBfY29tcGFyZV9maWxlX2RhdGUpOiBUYWtlIGEgdG9rZW4gcmF0aGVyIHRoYW4gMyBhcmdzLgoJKGNwcF9yZWFkX2ZpbGUpOiBXb3JrIGNvcnJlY3RseSBmb3IgemVyby1sZW5ndGggZmlsZXMuCgoJKiBjcHBoYXNoLmMgKF9jcHBfaW5pdF9tYWNyb3MsIF9jcHBfY2xlYW51cF9tYWNyb3MpOiBSZW5hbWUKCV9jcHBfaW5pdF9oYXNodGFibGUgYW5kIF9jcHBfY2xlYW51cF9oYXNodGFibGUuCgkoY3BwX2xvb2t1cCk6IFBsYWNlIGlkZW50aWZpZXJzIGF0IGZyb250IG9mIGlkZW50aWZpZXIgcG9vbAoJZm9yIF9jcHBfbG9va3VwX3dpdGhfaGFzaC4KCShfY3BwX2xvb2t1cF93aXRoX2hhc2gpOiBSZXF1aXJlIGlkZW50aWZpZXJzIHRvIGJlIGF0IHRoZSBmcm9udCBvZgoJdGhlIGlkZW50aWZpZXIgcG9vbC4gIENvbW1pdCB0aGUgbWVtb3J5IGlmIG5vdCBhbHJlYWR5IGluIHRoZQoJaGFzaCB0YWJsZS4KCgkqIGNwcGluaXQuYyAoY3BwX3JlYWRlcl9pbml0KTogTW92ZSBjcHBfaW5pdF9jb21wbGV0ZWQgdGVzdCB0byB0b3AuCglJbml0aWFsaXplIHZhcmlvdXMgbWVtYmVycyBvZiBjcHBfcmVhZGVyLCBtZW1vcnkgcG9vbHMsIGFuZCB0aGUKCXNwZWNpYWwgbm9kZXMuCgkoY3BwX3ByaW50ZXJfaW5pdCk6IERlbGV0ZS4KCShjcHBfY2xlYW51cCk6IFVwZGF0ZS4KCShzdHJ1Y3QgYnVpbHRpbiwgYnVpbHRpbl9hcnJheSwgaW5pdGlhbGl6ZV9idWlsdGlucyk6IFVwZGF0ZSBmb3IgbmV3CgloYXNobm9kZSBkZWZpbml0aW9uIGFuZCBidWlsdGluIGhhbmRsaW5nLgoJKGNwcF9zdGFydF9yZWFkLCBjcHBfZmluaXNoKTogRG9uJ3QgdGFrZSBvciBpbml0aWFsaXplIGEKCXByaW50ZXIuICBVcGRhdGUuCgoJKiBjcHBsaWIuaCAoY3BwX3ByaW50ZXIsIGNwcF90b2tsaXN0LCBDUFBfREVGSU5FRCwgQk9MLAoJUEFTVEVELCBWQVJfQVJHUywgQkVHX09GX0ZJTEUsIElOX0RJUkVDVElWRSwgS05PV05fRElSRUNUSVZFLAoJVF9WT0lELCBUX1NQRUNMSU5FLCBUX0RBVEUsIFRfRklMRSwgVF9CQVNFX0ZJTEUsIFRfSU5DTFVERV9MRVZFTCwKCVRfVElNRSwgVF9TVERDLCBUX09QRVJBVE9SLCBUX1BPSVNPTiwgVF9NQUNSTywgVF9BU1NFUlRJT04pOiBEZWxldGUuCgkoc3RydWN0IGNwcF9wb29sLCBzdHJ1Y3QgY3BwX21hY3JvLCBzdHJ1Y3QgY3BwX2xleGVyX3BvcywKCXN0cnVjdCBjcHBfbG9va2FoZWFkLCBDUFBfREhBU0gsIGVudW0gbWlfc3RhdGUsIGVudW0gbWlfaW5kLAoJTk9fRVhQQU5ELCBWQVJBUkdTX0ZJUlNULCBzdHJ1Y3QgY3BwX3Rva2VuX3dpdGhfcG9zLAoJc3RydWN0IHRva2xpc3QsIHN0cnVjdCBjcHBfY29udGV4dCwgc3RydWN0IHNwZWNub2RlcywKCVRPS0VOX0xPT0tBSEVBRCwgVE9LRU5fQlVGRlNJWkUsIE5PREVfT1BFUkFUT1IsIE5PREVfUE9JU09ORUQsCglOT0RFX0JVSUxUSU4sIE5PREVfRElBR05PU1RJQywgTlRfVk9JRCwgTlRfTUFDUk8sIE5UX0FTU0VSVElPTiwKCWVudW0gYnVpbHRpbl90eXBlLCBjcHBfY2FuX3Bhc3RlKTogTmV3LgoJKHN0cnVjdCBjcHBfdG9rZW4pOiBEZWxldGUgbGluZSBhbmQgY29sIG1lbWJlcnMuCgkoc3RydWN0IGNwcF9idWZmZXIpOiBOZXcgbWVtYmVyIG91dHB1dF9saW5lbm8uCgkoc3RydWN0IGxleGVyX3N0YXRlKTogRGVsZXRlIGluZGVudGVkLCBpbl9sZXhfbGluZSwgc2Vlbl9kb3QuCglBZGQgdmFfYXJnc19vaywgcG9pc29uZWRfb2ssIHByZXZlbnRfZXhwYW5zaW9uLCBwYXJzaW5nX2FyZ3MuCgkoc3RydWN0IGNwcF9yZWFkZXIpOiBOZXcgbWVtYmVycyBsZXhlcl9wb3MsIG1hY3JvX3BvcywgZGlyZWN0aXZlX3BvcywKCWlkZW50X3Bvb2wsIHRlbXBfc3RyaW5nX3Bvb2wsIG1hY3JvX3Bvb2wsIGFyZ3VtZW50X3Bvb2wsIHN0cmluZ19wb29sLAoJYmFzZV9jb250ZXh0LCBjb250ZXh0LCBkaXJlY3RpdmUsIG1pX3N0YXRlLCBtaV9pZl9ub3RfZGVmaW5lZCwKCW1pX2xleGVkLCBtaV9jbWFjcm8sIG1pX2luZF9jbWFjcm8sIGxhX3JlYWQsIGxhX3dyaXRlLCBsYV91bnVzZWQsCgltbHN0cmluZ19wb3MsIG1hY3JvX2J1ZmZlciwgbWFjcm9fYnVmZmVyX2xlbi4KCURlbGV0ZSBtZW1iZXJzIG1sc19saW5lLCBtbHNfY29sdW1uLCB0b2tlbl9saXN0LCBwb3RlbnRpYWxfY29udHJvbF9tYWNybywKCXRlbXBfdG9rZW5zLCB0ZW1wX2NhcCwgdGVtcF9hbGxvY2VkLCB0ZW1wX3VzZWQsIGZpcnN0X2RpcmVjdGl2ZV90b2tlbiwKCWNvbnRleHRfY2FwLCBjdXJfY29udGV4dCwgbm9fZXhwYW5kX2xldmVsLCBwYXN0ZV9sZXZlbCwgY29udGV4dHMsIGFyZ3MsCglzYXZlX3BhcmFtZXRlcl9zcGVsbGluZ3MsIG5lZWRfbmV3bGluZSwgLgoJQ2hhbmdlIHR5cGUgb2YgZGF0ZSwgdGltZSBhbmQgc3BlY19ub2RlcyBtZW1iZXJzLgoJQ2hhbmdlIHByb3RvdHlwZXMgZm9yIGluY2x1ZGUgYW5kIGlkZW50IGNhbGxiYWNrcy4KCShzdHJ1Y3QgY3BwX2hhc2hub2RlKTogQ2hhbmdlIHR5cGUgb2YgbmFtZS4gIFJlbW92ZSB1bmlvbiBtZW1iZXJzCglleHBhbnNpb24gYW5kIGNvZGUuICBBZGQgbWVtYmVycyBtYWNybywgb3BlcmF0b3IgYW5kIGJ1aWx0aW4uCgoJKGNwcF90b2tlbl9sZW4sIGNwcF90b2tlbl9hc190ZXh0LCBjcHBfc3BlbGxfdG9rZW4sIGNwcF9zdGFydF9yZWFkLAoJY3BwX2ZpbmlzaCwgY3BwX2F2b2lkX3Bhc3RlLCBjcHBfZ2V0X3Rva2VuLCBjcHBfZ2V0X2xpbmUsCgljcHBfZ2V0X291dHB1dF9saW5lLCBjcHBfbWFjcm9fZGVmaW5pdGlvbiwgY3BwX3N0YXJ0X2xvb2thaGVhZCwKCWNwcF9zdG9wX2xvb2thaGVhZCk6IE5ldyBwcm90b3R5cGVzLgoJKGNwcF9wcmludGVyX2luaXQsIGNwcF9kdW1wX2RlZmluaXRpb24pOiBEZWxldGUgcHJvdG90eXBlcy4KCgkoVV9DSEFSLCBVLCB1c3RyY21wLCB1c3RybmNtcCwgdXN0cmxlbiwgdXhzdHJkdXAsIHVzdHJjaHIsIHVmcHV0cyk6CglNb3ZlIGZyb20gY3BwaGFzaC5oLgoKCSogY3BwaGFzaC5oIChVX0NIQVIsIFUsIHVzdHJjbXAsIHVzdHJuY21wLCB1c3RybGVuLCB1eHN0cmR1cCwgdXN0cmNociwKCXVmcHV0cyk6IE1vdmUgdG8gY3BwbGliLmguCgkoZW51bSBzcGVsbF90eXBlLCBzdHJ1Y3QgdG9rZW5fc3BlbGxpbmcsIF9jcHBfdG9rZW5fc3BlbGxpbmdzLCBUT0tFTl9TUEVMTCwKCVRPS0VOX05BTUUsIHN0cnVjdCBhbnN3ZXIsIEZSRUVfQU5TV0VSLCBLQU5EUiwgU1REQzg5LCBFWFRFTlNJT04sCglDT05ELCBFWFBBTkQsIElOQ0wsIENPTU1FTlRTLCBJTl9JLCBzdHJ1Y3QgZGlyZWN0aXZlLCBkaXJlY3RpdmVfaGFuZGxlciwKCXN0cnVjdCBzcGVjX25vZGVzLCBfY3BwX2RpZ3JhcGhfc3BlbGxpbmdzLCBfY3BwX2ZyZWVfdGVtcF90b2tlbnMsCglfY3BwX2luaXRfaW5wdXRfYnVmZmVyLCBfY3BwX2dyb3dfdG9rZW5fYnVmZmVyLCBfY3BwX2luaXRfdG9rbGlzdCwKCV9jcHBfY2xlYXJfdG9rbGlzdCwgX2NwcF9leHBhbmRfdG9rZW5fc3BhY2UsIF9jcHBfZXhwYW5kX25hbWVfc3BhY2UsCglfY3BwX2VxdWl2X3Rva2VucywgX2NwcF9lcXVpdl90b2tsaXN0cywgX2NwcF9wcm9jZXNzX2RpcmVjdGl2ZSwKCV9jcHBfcnVuX2RpcmVjdGl2ZSwgX2NwcF9nZXRfbGluZSwgX2NwcF9nZXRfcmF3X3Rva2VuLCBfY3BwX2dsdWVfaGVhZGVyX25hbWUsCglfY3BwX2Nhbl9wYXN0ZSwgX2NwcF9jaGVja19kaXJlY3RpdmUsIF9jcHBfY2hlY2tfbGluZW1hcmtlciwKCV9jcHBfcGFyc2VfYXNzZXJ0aW9uLCBfY3BwX2ZpbmRfYW5zd2VyKTogRGVsZXRlLgoJKFZBTElEX1NJR04sIEFMSUdOLCBQT09MX0ZST05ULCBQT09MX0xJTUlULCBQT09MX0JBU0UsIFBPT0xfU0laRSwKCVBPT0xfVVNFRCwgUE9PTF9DT01NSVQsIHN0cnVjdCBjcHBfY2h1bmssIF9jcHBfbGV4X3Rva2VuLCBfY3BwX2luaXRfcG9vbCwKCV9jcHBfZnJlZV9wb29sLCBfY3BwX3Bvb2xfcmVzZXJ2ZSwgX2NwcF9wb29sX2FsbG9jLCBfY3BwX25leHRfY2h1bmssCglfY3BwX2xvY2tfcG9vbCwgX2NwcF91bmxvY2tfcG9vbCwgX2NwcF90ZXN0X2Fzc2VydGlvbiwKCV9jcHBfaGFuZGxlX2RpcmVjdGl2ZSwgRFNDKTogTmV3LgoJKHN0cnVjdCBpbmNsdWRlX2ZpbGUpOiBOZXcgbWVtYmVyIGRlZmluZWQuCgoJKERPX05PVF9SRVJFQUQsIF9jcHBfYmVnaW5fbWVzc2FnZSwgX2NwcF9leGVjdXRlX2luY2x1ZGUsCglfY3BwX2NvbXBhcmVfZmlsZV9kYXRlKTogVXBkYXRlLgoJKF9jcHBfcG9wX2NvbnRleHQsIF9jcHBfZ2V0X3Rva2VuLCBfY3BwX2ZyZWVfbG9va2FoZWFkcywgX2NwcF9wdXNoX3Rva2VuKTogTmV3LgoJKF9jcHBfaW5pdF9tYWNyb3MsIF9jcHBfY2xlYW51cF9tYWNyb3MpOiBSZW5hbWUgdG8gX2NwcF9pbml0X2hhc2h0YWJsZSwKCV9jcHBfY2xlYW51cF9oYXNodGFibGUuCgoJKiBNYWtlZmlsZS5pbjogUmVtb3ZlIGNwcG91dHB1dC5jLgoKCSogY3Bwb3V0cHV0LmM6IERlbGV0ZQoKCSogZml4aGVhZGVyLmMgKHJlYWRfc2Nhbl9maWxlKTogVXBkYXRlIGZvciBuZXcgY3BwX2dldF90b2tlbgoJcHJvdG90eXBlLgoJKHJlY29nbml6ZWRfZnVuY3Rpb24pOiBOZXcgYXJndW1lbnQgTElORS4KCgkqIHNjYW4tZGVjbHMuYyAoc2tpcF90b19jbG9zaW5nX2JyYWNlLCBzY2FuX2RlY2xzKTogVXBkYXRlIGZvcgoJbmV3IGNwcF9nZXRfdG9rZW4gcHJvdG90eXBlLgoKCSogc2Nhbi5oIChyZWNvZ25pemVkX2Z1bmN0aW9uKTogVXBkYXRlIHByb3RvdHlwZS4KCgkqIHBvL1BPVEZJTEVTLmluOiBSZW1vdmUgY3Bwb3V0cHV0LmMuCgoyMDAwLTEwLTI3ICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogYy10eXBlY2suYyAoY2hlY2tfaW5pdF90eXBlX2JpdGZpZWxkcyk6IFJlbW92ZS4KCShjb25zdHJ1Y3Rvcl9pbmNyZW1lbnRhbCk6IExpa2V3aXNlLgoJKHN0cnVjdCBjb25zdHJ1Y3Rvcl9zdGFjayk6IFJlbW92ZSBpbmNyZW1lbnRhbCBiaXQuCgkoc3RydWN0IGluaXRpYWxpemVyX3N0YWNrKTogTGlrZXdpc2UuCgkoc3RhcnRfaW5pdCk6IERvbid0IHBsYXkgd2l0aCBjb25zdHJ1Y3Rvcl9pbmNyZW1lbnRhbC4KCShmaW5pc2hfaW5pdCk6IExpa2V3aXNlLgoJKHJlYWxseV9zdGFydF9pbmNyZW1lbnRhbF9pbml0KTogTGlrZXdpc2UuCgkocHVzaF9pbml0X2xldmVsKTogTGlrZXdpc2UuCgkocG9wX2luaXRfbGV2ZWwpOiBMaWtld2lzZS4KCShvdXRwdXRfaW5pdF9sZXZlbCk6IExpa2V3aXNlLgoJKG91dHB1dF9wZW5kaW5nX2luaXRfZWxlbWVudHMpOiBMaWtld2lzZS4KCjIwMDAtMTAtMjEgIE1pa2UgQ29sZW1hbiAgPG1jb2xlbWFuMkBrYy5yci5jb20+CgoJKiBjLXByYWdtYS5jIChoYW5kbGVfcHJhZ21hX3BhY2spOiBJbml0aWFsaXplIGFsaWduIHRvIC0xLgoJSW1wcm92ZSBlcnJvciBtZXNzYWdlcy4gIENvcnJlY3QgcGFyc2luZyBvZgoJI3ByYWdtYSBwYWNrKHBvcCBbLGlkXSkuICBEbyBub3QgY2hlY2sgdGhlIHVzZXItc3VwcGxpZWQKCWFsaWdubWVudCBpZiB3ZSdyZSBwb3BwaW5nLgoKCSogZ2NjLmRnL3BhY2stdGVzdC0xLmM6IE5ldyB0ZXN0IGNhc2UuCgkqIGdjYy5kZy9wYWNrLXRlc3QtMi5jOiBOZXcgdGVzdCBjYXNlLgoJKiBnY2MuZGcvcGFjay10ZXN0LTEuaDogTmV3IGZpbGUuCgoyMDAwLTEwLTI3ICBOZWlsIEJvb3RoICA8bmVpbGJAZWFydGhsaW5nLm5ldD4KCgkqIGNwcC50ZXhpOiBVcGRhdGUuCgoyMDAwLTEwLTI3ICBLZWxsZXkgQ29vayA8a2VsbGV5LmNvb2tAaG9tZS5jb20+CgoJKiBpbnZva2UudGV4aTogRG9jdW1lbnQgLW1pbnRlbC1zeW50YXgKCjIwMDAtMTAtMjcgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CgoJKiBpbnZva2UudGV4aTogRG9jdW1lbnQgLWZyZW5hbWUtcmVnaXN0ZXJzLiAgQWRkIGl0IHRvIC1PMy4KCSogdG9wbGV2LmMgKHJlc3Rfb2ZfY29tcGlsYXRpb24pOiBSdW4gcmVncmVuYW1lIGJlZm9yZSBpZmN2dDIuCgkoZW51bSBkdW1wX2ZpbGVfaW5kZXgsIGR1bXBfZmlsZSk6IFVwZGF0ZSBvcmRlci4KCShtYWluKTogU2V0IGZsYWdfcmVuYW1lX3JlZ2lzdGVycyBhdCAtTzMuCgoyMDAwLTEwLTI3ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEByZWRoYXQuY29tPgoKCSogY29uZmlnL2FscGhhL2FscGhhLmggKGVudW0gcmVnX2NsYXNzKTogQWRkIFBWX1JFRy4KCShSRUdfQ0xBU1NfTkFNRVMsIFJFR19DTEFTU19DT05URU5UUywgUkVHTk9fUkVHX0NMQVNTKTogVXBkYXRlLgoJKFJFR19DTEFTU19GUk9NX0xFVFRFUik6IEFzc2lnbiBpdCB0byAnYycuCgkqIGNvbmZpZy9hbHBoYS9hbHBoYS5tZCAoY2FsbF9vc2ZfMSk6IFVzZSBpdC4KCShjYWxsX3ZhbHVlX29zZl8xKTogTGlrZXdpc2UuCgoJKiBjb25maWcvaWE2NC9pYTY0LmM6IFJldmVydCAxMC0yMyBwYXRjaC4KCShpYTY0X2hhcmRfcmVnbm9fcmVuYW1lX29rKTogTmV3LgoJKiBjb25maWcvaWE2NC9pYTY0LXByb3Rvcy5oOiBEZWNsYXJlIGl0LgoJKiBjb25maWcvaWE2NC9pYTY0LmggKEhBUkRfUkVHTk9fUkVOQU1FX09LKTogVXNlIGl0LgoKMjAwMC0xMC0yNyAgQmVybmQgU2NobWlkdCAgPGJlcm5kc0ByZWRoYXQuY28udWs+CgkgICAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCgkqIHJlZ3JlbmFtZS5jOiBSZXdyaXRlIHRvIGhhbmRsZSBtdWx0aS1yZWdpc3RlciBtb2RlcyBhbmQKCWNvbmRfZXhlYyBpbnN0cnVjdGlvbnMuCgkqIE1ha2VmaWxlLmluIChyZWdyZW5hbWUubyk6IFVwZGF0ZSBkZXBlbmRlbmNpZXMuCgkqIHJlY29nLmggKHN0cnVjdCBvcGVyYW5kX2FsdGVybmF0aXZlKTogQWRkIGlzX2FkZHJlc3MuCgkqIHJlY29nLmMgKHByZXByb2Nlc3NfY29uc3RyYWludHMpIFtjYXNlICdwJ106IFNldCBpdC4KCjIwMDAtMTAtMjcgIFphY2sgV2VpbmJlcmcgIDx6YWNrQHdvbGVyeS5zdGFuZm9yZC5lZHU+CgoJKiBjb25maWd1cmUuaW46IElmIG5vdCBOT19NSU5VU19DX01JTlVTX08sIHN1YnN0aXR1dGUKCU9VVFBVVF9PUFRJT04gd2l0aCAnLW8gJEAnLiAgTWFrZSB6bGliZGlyLCB6bGliaW5jIHJlbGF0aXZlIHRvCgl0b3AgbGV2ZWwuICBLaWxsIG9sZHN0eWxlX3N1YmRpcnMuICBEbyBub3QgaW5jbHVkZQoJJHNyY2Rpci8kcy9NYWtlZmlsZS5pbiBpbiBhbGxfbGFuZ19tYWtlZmlsZXMsIGJ1dCBkbyBpbmNsdWRlCgkkb3V0cHV0cy4gIERvIG5vdCBydW4gY29uZmlndXJlLmxhbmcgZnJvbSBjb25maWcuc3RhdHVzLgoJUmVhcnJhbmdlIHdhcm5pbmctZmxhZyBsb2dpYyB0byBjb3JyZXNwb25kIHRvIHdoYXQgdGhlCgltYWtlZmlsZSB3YW50cy4gIFB1dCBzcGVjaWFsIHZheCBzdGFnZTEgb3B0aW9ucyBpbgoJQHN0YWdlMV9mbGFnc0Agbm90IEBzdGFnZTFfd2Fybl9jZmxhZ3NALiAgRG9uJ3QgZG8gYW55dGhpbmcKCXdpdGggZXh0cmFfY19vYmpzLCBleHRyYV9jeHhfb2Jqcywgb3IgZXh0cmFfY3BwX29ianMuCgkoLS1lbmFibGUtYy1jcHBsaWIpOiBBQ19TVUJTVChtYXliZV9jcHBsaWIpIHdpdGggImxpYmNwcC5hIiBpZgoJc3dpdGNoIGlzIGdpdmVuLCBub3RoaW5nIG90aGVyd2lzZS4KCSogY29uZmlndXJlLmxhbmc6IERlbGV0ZS4KCgkqIE1ha2VmaWxlLmluOiBFeHB1bmdlIGFsbCB0cmFjZXMgb2YgZXh0cmFfY19vYmpzLAoJZXh0cmFfY3h4X29ianMsIGFuZCBleHRyYV9jcHBfb2Jqcy4gIFNldCBNQVlCRV9DUFBMSUIgZnJvbQoJQG1heWJlX2NwcGxpYkAuIEFkZCAkKE1BWUJFX0NQUExJQikgdG8gQ19BTkRfT0JKQ19PQkpTLiAgU2V0Cgl3YXJuaW5nIG9wdGlvbnMgdmlhIGEgdGhyZWUgbGV2ZWwgc2NoZW1lIHNvIHRoYXQgLXBlZGFudGljIGFuZAoJLVd0cmFkaXRpb25hbCBhcmUgbm90IHVzZWQgZm9yIG5vbi1DIGZyb250IGVuZHM6IExPT1NFX1dBUk4sCglTVFJJQ1QxX1dBUk4sIFNUUklDVDJfV0FSTiAtPiAkKEBEKS13YXJuLCBHQ0NfV0FSTl9DRkxBR1MgLT4KCVdBUk5fQ0ZMQUdTLiAgRGlzdGluZ3Vpc2ggU1RBR0UxX0NGTEFHUyBmcm9tIEJPT1RfQ0ZMQUdTLgoJQWRkIC1JJChARCkgYW5kIC1JJChzcmNkaXIpLyQoQEQpIHRvIElOQ0xVREVTLgoJU2V0IE9VVFBVVF9PUFRJT04sIFpMSUIsIFpMSUJJTkMuICBEbyBub3Qgc2V0IFAsCglMQU5HX0ZMQUdTX1RPX1BBU1MuICBBZGQgT1VUUFVUX09QVElPTiB0byBhbGwgb2JqZWN0LWZpbGUKCWdlbmVyYXRpb24gcnVsZXMuICBXcmFwIGFsbCBydWxlcyB0aGF0IGNoYW5nZSB0aGUgY3VycmVudAoJZGlyZWN0b3J5IGluIHBhcmVudGhlc2VzOyBwbWFrZSBkb2Vzbid0IHNwYXduIGEgbmV3IHNoZWxsIGZvcgoJZWFjaCBjb21tYW5kLiAgRXhwdW5nZSBhbGwgcmVmZXJlbmNlcyB0byAkKFApLiAgV2hlbiBvbmUKCWNvbW1hbmQgZGVwZW5kcyBvbiBhbm90aGVyIGFuZCB0aGV5J3JlIHJ1biBhbGwgYXQgb25jZSwgdXNlICYmCgl0byBzZXBhcmF0ZSB0aGVtLCBub3QgOy4gIEFkZCBsaWJnY2NfcyQoU0hMSUJfRVhUKSB0byBmaWxlcwoJZGVsZXRlZCBvbiBtYWtlIGNsZWFuLiAgRm9yY2UgT1VUUFVUX09QVElPTj0nLW8gJEAnIGluIHN0YWdlMgoJYW5kIGJleW9uZC4KCgkqIG9iamMvTWFrZS1sYW5nLmluOiBXcmFwIGFsbCBydWxlcyB0aGF0IGNoYW5nZSB0aGUgY3VycmVudAoJZGlyZWN0b3J5IGluIHBhcmVudGhlc2VzLiAgRXhwdW5nZSBhbGwgcmVmZXJlbmNlcyB0byAkKFApLgoJV2hlbiBvbmUgY29tbWFuZCBkZXBlbmRzIG9uIGFub3RoZXIgYW5kIHRoZXkncmUgcnVuIGFsbCBhdAoJb25jZSwgdXNlICYmIHRvIHNlcGFyYXRlIHRoZW0sIG5vdCA7LiAgQWRkIE9VVFBVVF9PUFRJT04gdG8KCWFsbCBvYmplY3QtZmlsZSBnZW5lcmF0aW9uIHJ1bGVzLiAgRGVsZXRlIG9ic29sZXRlIHZhcmlhYmxlcy4KCSogb2JqYy9NYWtlZmlsZS5pbjogRGVsZXRlLgoKMjAwMC0xMC0yNyAgSmFrdWIgSmVsaW5layAgPGpha3ViQHJlZGhhdC5jb20+CgoJKiBjYWxscy5jIChleHBhbmRfY2FsbCk6IElmIHNpYmNhbGxfZmFpbHVyZSBpcyBzZXQgZHVyaW5nIHBhc3MgMSwKCWNsZWFyIHRhaWxfY2FsbF9pbnNucyBhcyB3ZWxsLgoKMjAwMC0xMC0yNyAgTmljayBDbGlmdG9uICA8bmlja2NAcmVkaGF0LmNvbT4KCgkqIGNvbmZpZy9hcm0vYXJtLXByb3Rvcy5oIChhcm1fZnVuY3Rpb25fb2tfZm9yX3NpYmNhbGwpOiBBZGQKCXByb3RvdHlwZS4KCjIwMDAtMTAtMjYgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CgoJKiBjYWxscy5jIChleHBhbmRfY2FsbCk6IFN1cHJlc3Mgc2liY2FsbCBpZiB3ZSBoYXZlIGEKCUJMS21vZGUgcmV0dXJuIGluIHJlZ2lzdGVycy4KCjIwMDAtMTAtMjYgIEJlcm5kIFNjaG1pZHQgIDxiZXJuZHNAcmVkaGF0LmNvLnVrPgoKCSogaWE2NC5oIChQUkVGRVJSRURfUkVMT0FEX0NMQVNTKTogRm9yY2UgZmxvYXRpbmcgcG9pbnQgY29uc3RhbnRzCglpbnRvIG1lbW9yeS4KCjIwMDAtMTAtMjYgIE5hdGhhbiBTaWR3ZWxsICA8bmF0aGFuQGNvZGVzb3VyY2VyeS5jb20+CgoJKiB0cmVlLmMgKG1ha2Vfbm9kZSwgY2FzZSAndCcpOiBTZXQgYWxpZ25tZW50IHRvIHRoYXQgb2YKCWNoYXJfdHlwZV9ub2RlLgoJKiBleHByLmMgKG1vdmVfYnlfcGllY2VzX25pbnNucyk6IEFib3J0IGlmIHNvbWUgbGVuZ3RoIHJlbWFpbnMuCgoyMDAwLTEwLTI1ICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogTWFrZWZpbGUuaW4gKHNpdGUuZXhwKTogRGVmaW5lIEhBVkVfTElCU1REQ1hYX1YzLgoJKiBjb25maWd1cmUuaW4gKGVuYWJsZS1saWJzdGRjeHgtdjMpOiBBcnJhbmdlIHRvIGhhdmUKCUhBVkVfTElCU1REQ1hYX1YzIHN1YnN0aXR1dGVkIGludG8gdGhlIG91dHB1dCBmaWxlcy4KCjIwMDAtMTAtMjUgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CgoJKiByZWNvZy5jIChjb25zdHJhaW5fb3BlcmFuZHMpOiBJbml0aWFsaXplIHdoaWNoX2FsdGVybmF0aXZlCgliZWZvcmUgbm8gYWx0ZXJuYXRpdmVzIGVhcmx5IGV4aXQuCgoJKiBjc2UuYyAoZmluZF9jb21wYXJpc29uX2FyZ3MpOiBDaGVjayB0aGF0IHdlIGNhbiByZXZlcnNlIGEKCWNvbXBhcmlzb24gaWYgbmVlZGVkIGJlZm9yZSBhY2NlcHRpbmcgdGhlIHN1YnN0aXR1dGlvbi4KCgkqIHJlbG9hZC5jIChmaW5kX3JlbG9hZHNfYWRkcmVzc19wYXJ0KTogS2lsbCBydHggb2JzdGFjayBoYWNrZXJ5LgoKCSogc2ltcGxpZnktcnR4LmMgKHNpbXBsaWZ5X3JlbGF0aW9uYWxfb3BlcmF0aW9uKTogU2lnbiBleHRlbmQKCWxvdyB3b3JkcyBiZWZvcmUgc2lnbiBleHRlbmRpbmcgdG8gaGlnaCB3b3Jkcy4KCjIwMDAtMTAtMjUgIE5pY2sgQ2xpZnRvbiAgPG5pY2tjQHJlZGhhdC5jb20+CgoJKiBjb25maWcvbWNvcmUvbWNvcmUuYzogSW5jbHVkZSBjb25maWcuaCBiZWZvcmUgc3lzdGVtLmguCgoyMDAwLTEwLTI1ICBSYXkgRXNzaWNrICA8ZXNzaWNrQGRkbmEubGFicy5tb3QuY29tPgoKCSogY29uZmlnL21jb3JlL21jb3JlLm1kIChyZXR1cm4pOiBGb3JjZSBmdW5jdGlvbiBlcGlsb2d1ZSB0bwoJYWx3YXlzIGJlIGdlbmVyYXRlZCB0byB3b3JrIGFyb3VuZCBlcGlsb2d1ZSBzdXBwcmVzc2lvbiBidWcgaW4KCU0qQ29yZSBiYWNrZW5kLgoKMjAwMC0xMC0yNSAgSm9zZXBoIFMuIE15ZXJzICA8anNtMjhAY2FtLmFjLnVrPgoKCSogYy1kZWNsLmMgKGdyb2tkZWNsYXJhdG9yKTogTW92ZSB3YXJuaW5nIGZvciBxdWFsaWZpZWQgdm9pZAoJcmV0dXJuIHR5cGVzIHdpdGggLXBlZGFudGljIHRvIHdoZW4gdGhlIGZ1bmN0aW9uIHR5cGUgaXMKCWNvbnN0cnVjdGVkLiAgQXQgLVcsIHdhcm4gaW4gZ2VuZXJhbCBmb3IgcXVhbGlmaWVkIGZ1bmN0aW9uIHJldHVybgoJdHlwZXMsIGV4Y2VwdCBmb3Igdm9sYXRpbGUgdm9pZC4KCSogaW52b2tlLnRleGk6IERvY3VtZW50IHRoaXMgbmV3IHdhcm5pbmcgYXQgLVcuCgoyMDAwLTEwLTI1ICBOZWlsIEJvb3RoICA8bmVpbGJAZWFydGhsaW5nLm5ldD4KCgkqIGNwcC50ZXhpOiBVcGRhdGUgd2l0aCBpbXBsZW1lbnRhdGlvbi1kZWZpbmVkIGJlaGF2aW9yIGFuZAoJaW50ZXJuYWwgbGltaXRzLgoKMjAwMC0xMC0yNSAgSmFrdWIgSmVsaW5layAgPGpha3ViQHJlZGhhdC5jb20+CgoJKiBzdG9yLWxheW91dC5jIChsYXlvdXRfdHlwZSk6IElmIFRZUEVfQUxJQVNfU0VUIHdhcyBhbHJlYWR5IHNldCBvbiB0aGUKCWluY29tcGxldGUgdHlwZSBmb3JjZSBpdCBpbnRvIGFsaWFzIHNldCAwLgoKV2VkIE9jdCAyNSAwMTowMjo0NCBFRFQgMjAwMCAgSm9obiBXZWhsZSAgKGpvaG5AZmVpdGguY29tKQoKCSogYWxpYXMuYzogSW5jbHVkZSBiYXNpYy1ibG9jay5oLgoJKGxvb3BfcCk6IE5ldyBmdW5jdGlvbi4KCShtYXJrX2NvbnN0YW50X2Z1bmN0aW9uKTogVXNlIGl0LgoJKiBNYWtlZmlsZS5pbiAoYWxpYXMubyk6IFVwZGF0ZSBkZXBlbmRlbmNpZXMuCgoyMDAwLTEwLTI0ICBBbGR5IEhlcm5hbmRleiAgPGFsZHloQHJlZGhhdC5jb20+CgoJKiBjb25maWcvbW4xMDMwMC9tbjEwMzAwLmMgKHNlY29uZGFyeV9yZWxvYWRfY2xhc3MpOiBUcmVhdCBwc2V1ZG9zCglsaWtlIG1lbW9yeS4KCjIwMDAtMTAtMjQgIEppbSBXaWxzb24gIDx3aWxzb25AY3lnbnVzLmNvbT4KCgkqIGV4cG1lZC5jIChzdG9yZV9iaXRfZmllbGQpOiBNb3ZlIGludGVnZXIgcHVuIGNvZGUgZG93biBhZnRlcgoJY29kZSB0aGF0IGNhbGxzIGVtaXRfbW92ZV9pbnNuIGZvciBlbnRpcmUgcmVnaXN0ZXIgbW92ZS4KCSogc3Rvci1sYXlvdXQuYyAoY29tcHV0ZV9yZWNvcmRfbW9kZSk6IFJldmVydCBNYXIgMjUsIEF1ZyAxOCwgYW5kCglPY3QgMjAgY2hhbmdlcy4gIE9ubHkgc3RvcmUgbW9kZSBpbiBUWVBFX01PREUgaWYgUkVDT1JEX1RZUEUuCgoyMDAwLTEwLTI0ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEBjeWdudXMuY29tPgoKCSogcnRsYW5hbC5jIChydHhfdW5zdGFibGVfcCwgcnR4X3Zhcmllc19wKTogRG9uJ3QgY29uc2lkZXIgcGljCglyZWdpc3RlciBzdGFibGUgaWYgUElDX09GRlNFVF9UQUJMRV9SRUdfQ0FMTF9DTE9CQkVSRUQuCgoyMDAwLTEwLTI0ICBBbGR5IEhlcm5hbmRleiAgPGFsZHloQHJlZGhhdC5jb20+CgoJKiBnY3NlLmMgKGNwcm9wX2luc24pOiBkbyBub3QgcHJvcGFnYXRlIGNvbnN0YW50cyBpbnRvIGp1bXBfaW5zbgoJZm9yIG1hY2hpbmVzIHdpdGggQ0MwIG1vcmUgdGhhbiBvbmNlLgoKMjAwMC0xMC0yNCAgUmljaGFyZCBIZW5kZXJzb24gPHJ0aEBjeWdudXMuY29tPiwgQWxkeSA8YWxkeWhAY3lnbnVzLmNvbT4KCgkqIGNvbmZpZy9tbjEwMzAwL21uMTAzMDAuaCAoUFJFRkVSUkVEX1JFTE9BRF9DTEFTUyk6IFRyZWF0Cglwc2V1ZG9zIGp1c3QgbGlrZSBtZW1vcnkuCgoyMDAwLTEwLTI0ICBBbGV4YW5kcmUgT2xpdmEgIDxhb2xpdmFAcmVkaGF0LmNvbT4KCgkqIGNvbWJpbmUuYyAoZGlzdHJpYnV0ZV9ub3Rlcyk6IERpc2NhcmQgUkVHX0xJQkNBTEwgYW5kIFJFR19SRVRWQUwKCXdoZW4gZGVsZXRpbmcgbGliY2FsbCBzZXF1ZW5jZSBjb2xsYXBzZWQgdG8gYSBzaW5nbGUgaW5zdHJ1Y3Rpb24uCgoyMDAwLTEwLTI0ICBBbmRyZXcgSGFsZXkgIDxhcGhAY3lnbnVzLmNvLnVrPgoKCSogZXhwci5jIChkb19zdG9yZV9mbGFnKTogRG9uJ3QgY3Jhc2ggaWYgZWl0aGVyIHNpZGUgb2YgYQoJY29tcGFyaXNvbiBpcyBlcnJvcl9tYXJrX25vZGUuCgoyMDAwLTEwLTI0ICBKYWt1YiBKZWxpbmVrICA8amFrdWJAcmVkaGF0LmNvbT4KCgkqIHNpYmNhbGwuYyAocHVyZ2VfbWVtX3VuY2hhbmdpbmdfZmxhZyk6IE5ldyBmdW5jdGlvbi4KCShvcHRpbWl6ZV9zaWJsaW5nX2FuZF90YWlsX3JlY3Vyc2l2ZV9jYWxscyk6IENhbGwgaXQuCgoyMDAwLTEwLTI0ICBQaGlsaXBwIFRob21hcyAgPHB0aG9tYXNAc3VzZS5kZT4KCgkqIE1ha2VmaWxlLmluIChjaGVjay1wbyk6IE5ldyB0YXJnZXQgZm9yIGRvaW5nIGNoZWNrcyBpbiB0aGUgcG8KCXN1YmRpciBpZiBhbGwgbGFuZ3VhZ2VzIGNvbmZpZ3VyZWQuCgkoQ0hFQ0tfVEFSR0VUUyk6IEFkZCBAQ0hFQ0tfUE9ALCByZXBsYWNlZCB3aXRoIGNoZWNrLXBvIHZpYQoJY29uZmlndXJlIGlmIE5MUyBpcyBlbmFibGVkLgoJKiBjb25maWd1cmUuaW46IElmIE5MUyBpcyBlbmFibGVkLCBzdWJzdGl0dXRlIENIRUNLX1BPIGJ5IGNoZWNrLXBvLAoJb3RoZXJ3aXNlIGxlYXZlIGVtcHR5LgoJKiBjb25maWd1cmU6IFJlZ2VuZXJhdGUuCgoyMDAwLTEwLTIzICBEaWVnbyBOb3ZpbGxvICA8ZG5vdmlsbG9AY3lnbnVzLmNvbT4KCgkqIGkzODYuYyAocHJpbnRfb3BlcmFuZCk6IEhhbmRsZSBuZXcgJ0EnIGZvcm1hdHRpbmcgY29kZS4KCTM4NyBvcGNvZGVzIG5lZWQgc3VmZml4ZXMgZXZlbiB3aXRoIC1taW50ZWwtc3ludGF4LgoJQ2hlY2sgZm9yIGV4cGxpY2l0IHNpemUgb3ZlcnJpZGUgKGNvZGVzICdiJywgJ3cnIGFuZCAnaycpLgoJKHByaW50X29wZXJhbmRfYWRkcmVzcyk6IENoZWNrIGlmIHJlZ2lzdGVyIHByZWZpeCBpcyBuZWVkZWQgd2hlbgoJZW1pdHRpbmcgYGRzJyBzZWdtZW50IG92ZXJyaWRlLgoJKiBpMzg2Lmg6IEFkZCBjb21tZW50IGFib3V0IG5ldyAnQScgZm9ybWF0dGluZyBjb2RlLgoJKiBpMzg2Lm1kIChqdW1wIGFuZCBjYWxsIHBhdHRlcm5zKTogRW1pdCBhYnNvbHV0ZSByZWZlcmVuY2VzIHVzaW5nICVBLgoKMjAwMC0xMC0yMyAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAY3lnbnVzLmNvbT4KCgkqIGNvbmZpZy9pYTY0L2lhNjQuYyAoaWE2NF9leHBhbmRfcHJvbG9ndWUpOiBNYXJrIGV4dHJhCglvdXRwdXQgcmVnaXN0ZXJzIGFzIGZpeGVkLgoJKGlhNjRfZnVuY3Rpb25fZXBpbG9ndWUpOiBVbmRvIG91dHB1dCBmaXhhdGlvbi4KCjIwMDAtMTAtMjMgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgoJKiBjb25maWcvYWxwaGEvYWxwaGEubWQ6IEFkZCBuYW1lcyBmb3IgYWxsIHVubmFtZWQgaW5zbnM7IHVzZQoJZGVmaW5lX2luc25fYW5kX3NwbGl0IGluIHNvbWUgb2J2aW91cyBwbGFjZXMuCgkobGRhKTogUmVtb3ZlLgoJKHplcm9fZXh0ZW5kcWloaTIpOiBVc2UgYW4gZXhwYW5kZXIgdy8gbm9uaW1tZWRpYXRlX29wZXJhbmQgZm9yIEJXWC4KCSh6ZXJvX2V4dGVuZHFpc2kyLCB6ZXJvX2V4dGVuZHFpZGkyKTogTGlrZXdpc2UuCgkoemVyb19leHRlbmRoaXNpMiwgemVyb19leHRlbmRoaWRpMik6IExpa2V3aXNlLgoJKGFicyBzcGxpdHRlcnMpOiBGaXggbWF0Y2hfc2NyYXRjaCBvcGVyYW5kIG51bWJlci4KCShiY2NfcmV2ZXJzZSk6IFN3YXAgcGMgJiBsYWJlbCBpbnN0ZWFkIG9mIG5vbi1jYW5vbmljYWwgY29tcGFyZS4KCjIwMDAtMTAtMjMgIEppbSBXaWxzb24gIDx3aWxzb25AY3lnbnVzLmNvbT4KCgkqIGlhNjQuYyAoaWE2NF9wcmludF9vcGVyYW5kLCBjYXNlICdyJyk6IENvcnJlY3QgY29tbWVudC4gIEhhbmRsZQoJQ09OU1RfSU5ULgoJKiBpYTY0Lm1kIChjbXBzaV9hZGp1c3RlZCk6IFVzZSAlcjMuCgkoY21wZGlfYWRqdXN0ZWQpOiBMaWtld2lzZS4KCjIwMDAtMTAtMjMgIERpZWdvIE5vdmlsbG8gIDxkbm92aWxsb0BjeWdudXMuY29tPgoKCSogY29uZmlnL2kzODYvYXR0LmggKEFTTV9GSUxFX1NUQVJUKTogRGVmaW5lLgoKMjAwMC0xMC0yMyAgRGllZ28gTm92aWxsbyAgPGRub3ZpbGxvQGN5Z251cy5jb20+CgoJKiBjb25maWcvaTM4Ni9saW51eC5oIChBU01fRklMRV9TVEFSVCk6IERlZmluZS4KCldlZCBPY3QgMTggMTE6MTY6NDAgMjAwMCAgRG9uYWxkIExpbmRzYXkgIDxkbGluZHNheUBjeWdudXMuY29tPgoKCSogZ2NjL2NvbmZpZ3VyZS5pbjogbTY4ay1jb2ZmIHRtX2ZpbGUgc2hvdWxkIG5vdCBoYXZlIGxpYmdsb3NzLmgsCglzaW5jZSB0aGlzIChvbmx5KSBkcmFncyBpbiBhIGNydDAubyByZWZlcmVuY2UgdGhhdCB0aGUgLmxkIGZpbGVzCglhbHNvIGludHJvZHVjZS4KCjIwMDAtMTAtMjMgIEdlb2ZmIEtlYXRpbmcgIDxnZW9mZmtAY3lnbnVzLmNvbT4KCgkqIHJlbG9hZDEuYyAocmVsb2FkX3JlZ19yZWFjaGVzX2VuZF9wKTogQSBSRUxPQURfT1RIRVIgY2FuCglvdmVyd3JpdGUgdGhlIHZhbHVlIGluIGEgUkVMT0FEX0ZPUl9JTlBVVCBhbmQgb3RoZXIga2luZHMgb2YKCXJlbG9hZHMganVzdCBsaWtlIGFuIFJFTE9BRF9GT1JfT1VUUFVUIHdvdWxkLgoKCSogbG9jYWwtYWxsb2MuYyAodXBkYXRlX2VxdWl2X3JlZ3MpOiBBZGQgYW4gYWJvcnQoKS4gIFdoZW4KCWRlbGV0aW5nIG9yIG1vdmluZyBpbnNucywgdXBkYXRlIHJlZ19lcXVpdltyZWdub10uaW5pdF9pbnNucy4KCjIwMDAtMTAtMjMgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjLXRyZWUudGV4aTogSW1wcm92ZSBkb2N1bWVudGF0aW9uIGZvciBJRl9TVE1UcyBhbmQgcmVsYXRlZAoJY29uZGl0aW9uYWwgc3RhdGVtZW50cy4KCjIwMDAtMTAtMjIgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBleHByLmMgKGRvX3ByZWV4cGFuZF9jYWxscyk6IFJlbW92ZS4KCShzYW1lX2Zyb21fcCk6IERvbid0IHVzZSBDQUxMX0VYUFJfUlRMLgoJKGV4cGFuZF9leHByKTogRG9uJ3QgY2FsbCBwcmVleHBhbmRfY2FsbHMsIG9yIHVzZSBDQUxMX0VYUFJfUlRMLgoJKHByZWV4cGFuZF9jYWxscyk6IFJlbW92ZS4KCSogdHJlZS5jIChmaXJzdF9ydGxfb3ApOiBSZW1vdmUgQ0FMTF9FWFBSIGNhc2UuCgkodW5zYXZlX2V4cHJfMSk6IExpa2V3aXNlLgoJKiB0cmVlLmRlZiAoQ0FMTF9FWFBSKTogR2l2ZSBpdCBvbmx5IHR3byBzbG90cy4KCSogdHJlZS5oIChDQUxMX0VYUFJfUlRMKTogUmVtb3ZlLgoKMjAwMC0xMC0yMSAgQ2hhbmRyYWthbGEgQ2hhdnZhICAgPGNjaGF2dmFAcmVkaGF0LmNvbT4KCgkqIGxpYmdjYy1zdGQudmVyIChfX2FkZHZzaTMsIF9fYWRkdmRpMywgIF9fc3VidnNpMywgX19zdWJ2ZGkzLAoJX19tdWx2c2kzLCBfX25lZ3ZzaTIsIF9fbmVndmRpMiwgX19hYnN2c2kyLCBfX2Fic3ZkaTIsIF9fbXVsdmRpMyk6CglOZXcgZnVuY3Rpb25zLgoKMjAwMC0xMC0yMiAgQWxleGFuZHJlIE9saXZhICA8YW9saXZhQHJlZGhhdC5jb20+CgoJKiBjYWxscy5jIChjb21iaW5lX3BlbmRpbmdfc3RhY2tfYWRqdXN0bWVudF9hbmRfY2FsbCk6IERvbid0CglhZGp1c3Qgc3RhY2sgd2hlbiB1bmFkanVzdGVkX2FsaWdubWVudCBlbmRzIHVwIGFzIHplcm8uCgoyMDAwLTEwLTIyICBKb3NlcGggUy4gTXllcnMgIDxqc20yOEBjYW0uYWMudWs+CgoJKiBmaXhpbmMvZ2VuZml4ZXM6IFJlbW92ZSBFR0NTIHJlZmVyZW5jZS4KCSogaW5zdGFsbC50ZXhpOiBSZW1vdmUgRUdDUyByZWZlcmVuY2UuCgkqIElOU1RBTEw6IFJlZ2VuZXJhdGUuCgoyMDAwLTEwLTIyICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogdHJlZS5oIChUWVBFX0lTX1NJWkVUWVBFKTogQWRkIG1vcmUgZG9jdW1lbnRhdGlvbi4KCjIwMDAtMTAtMjEgIEpvc2VwaCBTLiBNeWVycyAgPGpzbTI4QGNhbS5hYy51az4KCgkqIGRpYWdub3N0aWMuYzogUmVtb3ZlIEVHQ1MgcmVmZXJlbmNlIGluIGNvbW1lbnQuCgpTYXQgT2N0IDIxIDA4OjI0OjI1IDIwMDAgIFJpY2hhcmQgS2VubmVyICA8a2VubmVyQHZsc2kxLnVsdHJhLm55dS5lZHU+CgoJKiBsb29wLmMgKHN0cmVuZ3RoX3JlZHVjZSk6IEZpeCBlcnJvciBpbiBsYXN0IGNoYW5nZS4KCjIwMDAtMTAtMjAgIERhdmlkIEVkZWxzb2huICA8ZWRlbHNvaG5AZ251Lm9yZz4KCgkqIE1ha2VmaWxlLmluIChTSExJQl9OTV9GTEFHUyk6IE5ldy4KCShsaWJnY2MubWspOiBQYXNzIGl0LgoJKiBta2xpYmdjYy5pbiAobGliZ2NjLm1hcCk6IFVzZSBpdC4KCgkqIHJzNjAwMC90LWFpeDQzIChTSExJQl9FWFQsIFNITElCX0xJTkssIFNITElCX0xJQlMsCglTSExJQl9NS01BUCwgU0hMSUJfTUFQRklMRVMsIFNITElCX05NX0ZMQUdTKTogTmV3LgoKMjAwMC0xMC0yMCAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogbWlwcy5oIChSRUdfQ0xBU1NfRlJPTV9MRVRURVIpOiBDYXN0IGFycmF5IGFyZyB0byB1bnNpZ25lZCBjaGFyLgoKCSogc3BhcmMuYyAobG9hZF9waWNfcmVnaXN0ZXIpOiBEZWxldGUgdW51c2VkIHZhcmFpYmxlLgoKCSogbGliZ2NjMi5jIChfX2FkZHZzaTMpOiBEZWxldGUgdW51c2VkIHZhcmlhYmxlLgoKCSogbGliZ2NjMi5oIChfX2Fic3ZzaTIsIF9fYWJzdmRpMiwgX19hZGR2c2kzLCBfX2FkZHZkaTMsCglfX3N1YnZzaTMsIF9fc3VidmRpMywgX19tdWx2c2kzLCBfX211bHZkaTMsIF9fbmVndnNpMiwKCV9fbmVndmRpMik6IFByb3RvdHlwZS4KCgkqIHNzYS5jIChhcHBseV9kZWxheWVkX3JlbmFtZXMpOiBBdm9pZCB1bmRlZmluZWQgb3BlcmF0aW9uLgoKCSogdG9wbGV2LmMgKGRpc3BsYXlfdGFyZ2V0X29wdGlvbnMpOiBNYWtlIHN0YXRpYyB0byBtYXRjaAoJcHJvdG90eXBlLiAgRGVsZXRlIGVtcHR5IGRlY2xhcmF0aW9uLgoKMjAwMC0xMC0yMCAgVG9tIFRyb21leSAgPHRyb21leUBjeWdudXMuY29tPgoKCSogY3Bwc3BlYy5jIChERUZBVUxUX1dPUkRfU1dJVENIX1RBS0VTX0FSRyk6IEFkZGVkIC1NRiBhbmQgLU1ULgoJKiBnY2MuYyAoREVGQVVMVF9XT1JEX1NXSVRDSF9UQUtFU19BUkcpOiBBZGRlZCAtTUYgYW5kIC1NVC4KCkZyaSBPY3QgMjAgMTc6MDU6NDkgMjAwMCAgUmljaGFyZCBLZW5uZXIgIDxrZW5uZXJAdmxzaTEudWx0cmEubnl1LmVkdT4KCgkqIGV4cHIuYyAoZXhwYW5kX2V4cHIsIGNhc2UgU0FWRV9FWFBSKTogU2V0IFJUWF9VTkNIQU5HSU5HX1Agb24KCXJldHVybmVkIE1FTS4KCShleHBhbmRfZXhwcl91bmFsaWduZWQsIGNhc2UgQVJSQVlfUkVGKTogQ2hlY2sgdGhhdCBpbmRleCBpcwoJYSBjb25zdGFudCBiZWZvcmUgY29tcGFyaW5nIGl0OyB1c2UgdHJlZV9sb3dfY3N0LgoJKiB0cmVlLmMgKHNhdmVfZXhwcik6IFNldCBUUkVFX1JFQURPTkxZLgoJKHN1YnN0aXR1dGVfZXhwcik6IFJldHVybiBpbnNpZGUgb2YgTk9OX0xWQUxVRV9FWFBSLgoJKGJ1aWxkLCBidWlsZDEpOiBTZXQgVFJFRV9SRUFET05MWSBpZiBhbGwgb3BlcmFuZHMgYXJlLgoJKGJ1aWxkX2luZGV4X3R5cGUpOiBJZiB1cHBlciBib3VuZCBpcyBhIG5lZ2F0aXZlIG51bWJlciwgbG93ZXIKCWJvdW5kIGlzIHplcm8gYW5kIHNpemV0eXBlIGlzIHVuc2lnbmVkLCB1c2UgdXBwZXIgYm91bmQgb2Ygb25lIGFuZAoJbG93ZXIgb2YgemVyby4KCjIwMDAtMTAtMjAgIERhdmlkIEVkZWxzb2huICA8ZWRlbHNvaG5AZ251Lm9yZz4KCgkqIGdjYy5jIChwcm9jZXNzX2NvbW1hbmQsIG1haW4pOiBVc2UgImJlY2F1c2UiIGluc3RlYWQgb2YKCSJzaW5jZSIgaW4gZXJyb3IgbWVzc2FnZXMuCgpGcmkgT2N0IDIwIDEzOjMzOjE2IDIwMDAgIFJpY2hhcmQgS2VubmVyICA8a2VubmVyQHZsc2kxLnVsdHJhLm55dS5lZHU+CgoJKiBzdG9yLWxheW91dC5jIChjb21wdXRlX3JlY29yZF9tb2RlKTogVXNlIHRyZWVfbG93X2NzdC4KCURvbid0IHVzZSBtb2RlIG9mIGZpZWxkIGZvciByZWNvcmQgdW5sZXNzIHNpemVzIGFyZSB0aGUgc2FtZS4KCShsYXlvdXRfdHlwZSwgY2FzZSBBUlJBWV9UWVBFKTogUmVtb3ZlIHNwZWNpYWwgYm91bmRzIGhhbmRsaW5nCglwcmV2aW91c2x5IGFkZGVkIGZvciBBZGE7IGFsc28gY2hhbmdlIHRvIHVzaW5nIGhvc3RfaW50ZWdlcnAKCWFuZCB0cmVlX2xvd19jc3QuCgoJKiBsb29wLmMgKHN0cmVuZ3RoX3JlZHVjZSk6IFNob3cgd2hlbiBuZXcgcmVnaXN0ZXIgbWFkZSBmb3IKCWdpdiBpcyBrbm93biB0byBiZSBhIHBvaW50ZXIgYW5kIGl0cyBhbGlnbWVudCBpZiBzbyBhbmQga25vd24uCgkobG9vcF9kdW1wX2F1eCk6IFNob3cgVkVSQk9TRSBwYXJhbWV0ZXIgdW51c2VkLgoKCSogZ2NzZS5jIChzZXRfaGFzaF90YWJsZV9zaXplKTogTm93IHVuc2lnbmVkLgoJKiBzZGJvdXQuYyAodGVtcGxhdGVfbmFtZV9wKTogQWRkICJjb25zdCIgdG8gYXZvaWQgd2FybmluZ3MuCgkoc2Rib3V0X3JlY29yZF90eXBlX25hbWUsIHBsYWluX3R5cGVfMSwgc2Rib3V0X3N5bWJvbCk6IExpa2V3aXNlLgoJKHNkYm91dF9vbmVfdHlwZSwgc2Rib3V0X3Bhcm1zLCBzZGJvdXRfcmVnX3Bhcm1zKTogTGlrZXdpc2UuCgkoc2Rib3V0X2VuZF9lcGlsb2d1ZSk6IFJlbW92ZSB2YXJpYWJsZSBOQU1FLgoJKiBzeXN0ZW0uaCAoZ2V0b3B0KTogQWRkIGRlZmF1bHQgZGVmaW5pdGlvbi4KCSogY29uZmlnL2FscGhhL2FscGhhLmMgKHByaW50X29wZXJhbmQpOiBEb24ndCBjb250aW51ZSBwcm9jZXNzaW5nCglhZnRlciBpc3N1aW5nIGVycm9yLgoJKHN1bW1hcml6ZV9pbnNuKTogQXZvaWQgdXNlIG9mIFVMIGluIGNvbnN0YW50LgoKCSogZnVuY3Rpb24uYyAobG9jYXRlX2FuZF9wYWRfcGFybSk6IFVzZSBob3N0X2ludGVnZXJwIGFuZCB0cmVlX2xvd19jc3QuCgoJKiBmb2xkLWNvbnN0LmMgKGZvcmNlX2ZpdF90eXBlKTogVW5zaWduZWQgdmFsdWVzIGNhbiBvdmVyZmxvdwoJaWYgdGhleSBhcmUgc2l6ZXR5cGUuCgkoaW50X2NvbnN0X2Jpbm9wKTogRG9uJ3QgdXNlIGNhY2hlIGlmIG92ZXJmbG93cy4KCjIwMDAtMTAtMjAgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgoJKiBmdW5jdGlvbi5jIChsb2NhdGVfYW5kX3BhZF9wYXJtKTogWmVybyBhbGlnbm1lbnRfcGFkLgoKCSogcmVncmVuYW1lLmMgKHJyX3JlcGxhY2VfcmVnKTogUmV3cml0ZSB0byB1c2UgcmVjb2dfZGF0YSB0bwoJcGVyZm9ybSBzdWJzdGl0dXRpb25zLCBhbmQgYXBwbHlfY2hhbmdlX2dyb3VwIHRvIHNlZSBpZiBpdCB3b3JrZWQuCgpGcmkgT2N0IDIwIDEzOjMzOjE2IDIwMDAgIFJpY2hhcmQgS2VubmVyICA8a2VubmVyQHZsc2kxLnVsdHJhLm55dS5lZHU+CgoJKiBkd2FyZjJvdXQuYyAoYWRkX2JvdW5kX2luZm8pOiBBbHNvIGlnbm9yZSBDT05EX0VYUFIuCgoJKiBjb21iaW5lLmMgKHN0cnVjdCB1bmRvKTogQ2hhbmdlIGludCB0byB1bnNpZ25lZCBpbnQuCgkoZG9fU1VCU1RfSU5UKTogQXJncyBhcmUgdW5zaWduZWQgaW50LgoJKG1ha2VfZXh0cmFjdGlvbiwgZm9yY2VfdG9fbW9kZSk6IFVzZSBwcm9wZXIgdHlwZSB3aGVuIGZvcm1pbmcgbWFzay4KCShtYWtlX2ZpZWxkX2Fzc2lnbm1lbnQpOiBMaWtld2lzZS4KCjIwMDAtMTAtMjAgIEpvc2VwaCBTLiBNeWVycyAgPGpzbTI4QGNhbS5hYy51az4KCgkqIGMtY29tbW9uLmMgKGNoZWNrX2Zvcm1hdF9pbmZvX3JlY3Vyc2UpOiBFeHRyYWN0IHN0cmluZyBjb25zdGFudAoJaW5pdGlhbGl6ZXJzIGZyb20gbm9uLXZvbGF0aWxlIGNvbnN0YW50IGFycmF5cyBhbmQgY2hlY2sgdGhlbSBhcwoJZm9ybWF0cy4KCSogYy10eXBlY2suYyAoZGVjbF9jb25zdGFudF92YWx1ZSk6IERvbid0IGNoZWNrIHBlZGFudGljIG9yIGNoZWNrCglmb3IgREVDTF9NT0RFIChkZWNsKSAhPSBCTEttb2RlLgoJKGRlY2xfY29uc3RhbnRfdmFsdWVfZm9yX2Jyb2tlbl9vcHRpbWl6YXRpb24pOiBOZXcgZnVuY3Rpb24gd2hpY2gKCWluY2x1ZGVzIHRoZXNlIGNoZWNrcy4KCShkZWZhdWx0X2NvbnZlcnNpb24sIGNvbnZlcnRfZm9yX2Fzc2lnbm1lbnQsIGRpZ2VzdF9pbml0KTogVXNlCglkZWNsX2NvbnN0YW50X3ZhbHVlX2Zvcl9icm9rZW5fb3B0aW1pemF0aW9uIGluc3RlYWQgb2YKCWRlY2xfY29uc3RhbnRfdmFsdWUuCgoyMDAwLTEwLTIwICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogdHJlZS5oIChERUNMX0FMSUdOX1VOSVQpOiBOZXcgbWFjcm8uCgoyMDAwLTEwLTE0ICBNYXJlayBNaWNoYWxraWV3aWN6ICA8bWFyZWttQGxpbnV4Lm9yZy5wbD4KCgkqIGNvbmZpZy9hdnIvYXZyLXByb3Rvcy5oIChhdnJfb3V0cHV0X2JsZCk6IE5ldy4KCShvdXRfc2hpZnRfd2l0aF9jbnQpOiBBZGQgdF9sZW4gYXJndW1lbnQuCgkqIGNvbmZpZy9hdnIvYXZyLmMgKGF2cl9udW1fYXJnX3JlZ3MpOiBSZW1vdmUgLW1wYWNrLWFyZ3MuCgkob3V0cHV0X21vdnFpLCBvdXRwdXRfbW92aGksIG91dHB1dF9tb3ZzaXNmKTogT3B0aW1pemUgbG9hZGluZwoJYW55IGNvbnN0YW50IHdpdGggZXhhY3RseSBvbmUgYml0IHNldCB0byBOT19MRF9SRUdTLgoJKG91dF9zaGlmdF93aXRoX2NudCk6IE9wdGltaXplIG91dHB1dCBjb2RlIGZvciBzaXplIG9yIHNwZWVkLAoJZGVwZW5kaW5nIG9uIG9wdGltaXplX3NpemUuICBIYW5kbGUgc21hbGwgc2hpZnQgY291bnRzIGFzIHdlbGwKCShpZiBub3QgaGFuZC1vcHRpbWl6ZWQgaW4gP3NoPz9pM19vdXQpLiAgU2hpZnRzIGNhbiBiZSBkb25lCgl3aXRoIG9yIHdpdGhvdXQgYSBzY3JhdGNoIHJlZ2lzdGVyLCB3aXRoIGhlbHAgb2YgX190bXBfcmVnX18KCW9yIF9femVyb19yZWdfXyBpZiBuZWNlc3NhcnkuICBBZGQgVF9MRU4gYXJndW1lbnQgdG8gcGFzcyB0aGUKCWxlbmd0aCBvZiBURU1QTEFURSBpbiB3b3JkcywgcmV0dXJuIHRvdGFsIGluc24gbGVuZ3RoIGluICpMRU4uCgkoYXNobHFpM19vdXQsIGFzaHJxaTNfb3V0LCBsc2hycWkzX291dCk6IENoYW5nZSBhbGwgY2FsbHMgdG8KCW91dF9zaGlmdF93aXRoX2NudCB0byB3b3JrIHdpdGggdGhlIGFib3ZlIGNoYW5nZS4KCShhc2hsaGkzX291dCwgYXNobHNpM19vdXQsIGFzaHJoaTNfb3V0LCBhc2hyc2kzX291dCwgbHNocmhpM19vdXQsCglsc2hyc2kzX291dCk6IExpa2V3aXNlLiAgT3B0aW1pemUgbW9yZSBrbm93biBzaGlmdCBjb3VudCBjYXNlcy4KCVJlbW92ZSBjYXNlcyBhbHJlYWR5IHdlbGwgb3B0aW1pemVkIGluIG91dF9zaGlmdF93aXRoX2NudC4KCShhdnJfb3V0cHV0X2JsZCk6IE5ldyBmdW5jdGlvbi4KCSogY29uZmlnL2F2ci9hdnIuaCAoTUFTS19QQUNLX0FSR1MsIFRBUkdFVF9QQUNLX0FSR1MpOiBSZW1vdmUuCgkoVEFSR0VUX1NXSVRDSEVTKTogUmVtb3ZlIC1tcGFjay1hcmdzIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkuCgkqIGNvbmZpZy9hdnIvYXZyLm1kICgqcmVsb2FkX2lucWksICpyZWxvYWRfaW5oaSwgKnJlbG9hZF9pbnNpKToKCUFkZCByZWxvYWRfY29tcGxldGVkIHRvIGluc24gY29uZGl0aW9uIC0gb25seSBmb3IgcGVlcGhvbGVzLgoJKGFzaGxxaTMsIGFzaHJxaTMsIGxzaHJxaTMpOiBDb3JyZWN0IGluc24gbGVuZ3RoIGZvciBzaGlmdCBjb3VudHMKCWluIGEgcmVnaXN0ZXIgb3IgbWVtb3J5LgoJKGFzaGxoaTMsIGFzaGxzaTMsIGFzaHJoaTMsIGFzaHJzaTMsIGxzaHJoaTMsIGxzaHJzaTMpOiBMaWtld2lzZS4KCURvIG5vdCByZXF1aXJlIGEgc2NyYXRjaCByZWdpc3Rlci4KCSgqYXNobGhpM19jb25zdCwgKmFzaGxzaTNfY29uc3QsICphc2hyaGkzX2NvbnN0LCAqYXNocnNpM19jb25zdCwKCSpsc2hyaGkzX2NvbnN0LCAqbHNocnNpM19jb25zdCk6IE5ldyBpbnNucyBhbmQgbWF0Y2hpbmcgcGVlcGhvbGVzLgoJT3B0aW1pemUgc2hpZnRzIGJ5IGtub3duIGNvdW50IHVzaW5nIGEgc2NyYXRjaCByZWdpc3RlciwgYnV0IG9ubHkKCWlmIG9uZSBpcyBzdGlsbCBhdmFpbGFibGUgYWZ0ZXIgcmVnaXN0ZXIgYWxsb2NhdGlvbi4KCjIwMDAtMTAtMjAgIEouIERhdmlkIEFuZ2xpbiAgPGRhdmVAaGlhdWx5MS5oaWEubnJjLmNhPgoKCSogdC12YXg6IE5ldyBmaWxlLiAgRG9uJ3QgYnVpbGQgbW9kdWxlcyBmcm9tIGxpYmdjYzEuYy4KCkZyaSBPY3QgMjAgMDA6NTc6MDAgRURUIDIwMDAgIEpvaG4gV2VobGUgIChqb2huQGZlaXRoLmNvbSkKCgkqIGFsaWFzLmM6IChtYXJrX2NvbnN0YW50X2Z1bmN0aW9uKTogRG9uJ3QgY2hlY2sgcHVyZSBmdW5jdGlvbnMuCglJbml0aWFsaXplIGFuZCBlbmQgYWxpYXMgYW5hbHlzaXMuCgkobm9ubG9jYWxfbWVudGlvbmVkX3ApOiBSZW5hbWUgZnJvbSBub25sb2NhbF9yZWZlcmVuY2VfcC4KCURvbid0IG1ha2UgYSBzcGVjaWFsIGV4Y2VwdGlvbiBmb3IgcmVjdXJzaW9uLiAgSGFuZGxlCglVTlNQRUNfVk9MQVRJTEUuICBEb24ndCBhc3N1bWUgQVNNX09QRVJBTkRTIGlzIG5vbi1sb2NhbAoJdW5sZXNzIGl0J3Mgdm9sYXRpbGUuCgoJKiBsb2NhbC1hbGxvYy5jIChlcXVpdmFsZW5jZSk6IE5ldyBzdHJ1Y3R1cmUuCgkocmVnX2VxdWl2KTogRGVmaW5lLgoJKGNvbnRhaW5zX3JlcGxhY2VfcmVncyk6IFJlbW92ZSBhcnJheSBhbmQgdXNlCglmaWVsZCBpbiByZWdfZXF1aXYuCgkobWVtcmVmX3JlZmVyZW5jZWRfcCk6IExpa2V3aXNlLgoJKG5vX2VxdWl2KTogTGlrZXdpc2UuCgkodXBkYXRlX2VxdWl2X3JlZ3MpOiBMaWtld2lzZS4KCgkoZXF1aXZfaW5pdF92YXJpZXNfcCwKCWVxdWl2X2luaXRfbW92YWJsZV9wKTogTmV3IGZ1bmN0aW9ucy4KCSh1cGRhdGVfZXF1aXZfcmVncyk6IFVzZSB0aGVtLiAgVXNlIHJ0eF92YXJpZXNfcAoJaW5zdGVhZCBvZiBmdW5jdGlvbl9pbnZhcmlhbnRfcC4gIFByb2Nlc3MgaW5zbnMKCWZyb20gZW5kIHRvIGJlZ2lubmluZy4gIEFsbG93IGEgUkVHX0VRVUlWIGluc24KCXdpdGhpbiB0aGUgc2FtZSBsb29wIGFzIGEgdXNlIHRvIGJlIG1vdmVkLCBhbHNvCglhbGxvdyBpdCB0byBiZSBtb3ZlZCBvdXQgb2YgYSBsb29wLiAgVXBkYXRlCglSRUdfREVBRCBub3RlcyB3aGVuIHN1YnN0aXR1dGluZyBpbnRvIGFuIGluc24uCgoyMDAwLTEwLTE5ICBKaW0gV2lsc29uICA8d2lsc29uQGN5Z251cy5jb20+CgoJKiBjLWRlY2wuYyAoc3RhcnRfZGVjbCk6IENoZWNrIGZvciBlcnJvcl9tYXJrX25vZGUgdHlwZSBiZWZvcmUgdXNpbmcKCUNPTVBMRVRFX1RZUEVfUC4KCShmaW5pc2hfZGVjbCk6IExpa2V3aXNlLiAgRG9uJ3QgZ2l2ZSBhbiBlcnJvciBpZiBkZWNsIHR5cGUgaXMKCWFscmVhZHkgZXJyb3JfbWFya19ub2RlLgoKCSogaGFpZmEtc2NoZWQuYyAoY29tcHV0ZV90cmdfaW5mbyk6IEFkZCBleHBsYW5hdG9yeSBjb21tZW50cy4KCU5ldyBsb2NhbCB1cGRhdGVfYmxvY2tzLiAgVXNlIHVwZGF0ZV9ibG9ja3MgdG8gcmVtb3ZlIGR1cGxpY2F0ZXMKCXdoZW4gY29tcHV0aW5nIHVwZGF0ZSBibG9ja3MuICBDaGVjayBmb3IgYmJsc3RfdGFibGUgb3ZlcmZsb3cuCgkoc2NoZWR1bGVfYmxvY2spOiBBZGQgZXhwbGFuYXRvcnkgY29tbWVudC4gIFJlZHVjZSBiYmxzdF9zaXplIGJ5CglmYWN0b3Igb2YgMi4KCSogY29uZmlnL2lhNjQvaWE2NC5tZCAobW92ZGlfc3ltYm9saWMpOiBEb2N1bWVudCBsb3NzIG9mIFJFR19MQUJFTAoJbm90ZXMuCgoyMDAwLTEwLTE5ICBDaGFuZHJha2FsYSBDaGF2dmEgICA8Y2NoYXZ2YUByZWRoYXQuY29tPgoKCSogbGliZ2NjMi5jIChfbXVsdnNpMyk6IENoYW5nZSB2YXJpYWJsZXMgdSBhbmQgdiB0byBhIGFuZCBiLgoKMjAwMC0xMC0xOSAgQ2hhbmRyYWthbGEgQ2hhdnZhICAgPGNjaGF2dmFAcmVkaGF0LmNvbT4KCgkqIGV4cG1lZC5jOiBNaW5vciBjb3JyZWN0aW9ucyBpbiBjb21tZW50cy4KCSogaW52b2tlLnRleGk6IEFkZGVkIGRlc2NpcHRpb24gZm9yIHRoZSBuZXcgb3B0aW9uIC1mdHJhcHYuCgoyMDAwLTEwLTE5ICBDaGFuZHJha2FsYSBDaGF2dmEgICA8Y2NoYXZ2YUByZWRoYXQuY29tPgoKCSogbGliZ2NjMi5jOiBBZGRlZCB0aGUgbWlzc2luZyAjZW5kaWYuCgpUaHUgT2N0IDE5IDE0OjI1OjExIE1FVCBEU1QgMjAwMCAgSmFuIEh1Ymlja2EgIDxqaEBzdXNlLmN6PgoKCSogaTM4Ni5oIChDT05TVF9PS19GT1JfTEVUVEVSKTogUmUtYWRkICdOJzsgZG9jdW1lbnQuCgoyMDAwLTEwLTE4ICBDaGFuZHJha2FsYSBDaGF2dmEgIDxjY2hhdnZhQHJlZGhhdC5jb20+CgoJKiBleHBtZWQuYyAoZXhwYW5kX211bHQpOiBEb24ndCBkbyBzeW50aF9tdWx0IG9wdGltaXphdGlvbiBmb3IgLWZ0cmFwdi4KCVVzZSBzbXVsdl9vcHRhYiBmb3IgLWZ0cmFwdi4KCShleHBhbmRfbXVsdF9oaWdocGFydCk6IFVzZSB1bnNpZ25lZCBtdWx0aXBseS4KCShleHBhbmRfZGl2bW9kKTogU3BlY2lhbC1jYXNlIGRpdmlzaW9uIGJ5IC0xLgoJRm9yIEVYQUNUX0RJVl9FWFBSLCBkbyByaWdodCBzaGlmdCBmaXJzdCwgdGhlbiB0aGUgbXVsdGlwbHkuCglGb3IgY29tcGxleCBkaXZpZGUsIHVzZSBhYnMgd2l0aCB1bnNpZ25lZCByZXN1bHQuCgkqIGV4cHIuYyAoZm9yY2Vfb3BlcmFuZCk6IFVzZSB1bnNpZ25lZCBtdWx0aXBseS4KCShleHBhbmRfZXhwcik6IFVzZSBvdmVyZmxvdy10cmFwcGluZyBvcHRhYnMgZm9yIHNpZ25lZCB0eXBlcyBpZgoJZmxhZ190cmFwdi4KCUlmIGZsYWdfdHJhcHYsIGRvbid0IGdlbmVyYXRlIGEgcmVjdXJzaXZlIGNhbGwgd2l0aCBFWFBBTkRfU1VNCglpZiB0aGUgdHlwZSBpcyBzaWduZWQgYW5kIHRoZSBvcmlnaW5hbCBjYWxsIHdhc24ndCBFWFBBTkRfU1VNIG9yCglFWFBBTkRfSU5JVElBTElaRVIuCgkqIGV4cHIuaCAoYWRkdl9vcHRhYiwgc3Vidl9vcHRhYiwgc211bHZfb3B0YWIsIHNkaXZ2X29wdGFiKTogRGVjbGFyZS4KCShuZWd2X29wdGFiLCBhYnN2X29wdGFiKTogRGVjbGFyZS4KCSogZmxhZ3MuaCAoZmxhZ190cmFwdik6IERlY2xhcmUuCgkqIGdlbm9waW5pdC5jIChvcHRhYnMpOiBBZGQgZW50cmllcyBmb3IgYWRkdl9vcHRhYiwgc3Vidl9vcHRhYiwKCXNtdWx2X29wdGFiLCBzZGl2dl9vcHRhYiwgbmVndl9vcHRhYiBhbmQgYWJzdl9vcHRhYi4KCShnZW5faW5zbik6IEludGVycHJldCAnJFAnIGFzIHJlcXVpcmluZyBhbiBpbnRlZ2VyIG1vZGUsCglpbmNsdWRpbmcgcGFydGlhbCBpbnRlZ2VyIG1vZGVzLgoJKiBsb29wLmMgKGVtaXRfaXZfYWRkX211bHQpOiBVc2UgdW5zaWduZWQgZXhwYW5kX211bHRfYWRkLgoJKHByb2R1Y3RfY2hlYXBfcCk6IFVzZSB1bnNpZ25lZCBleHBhbmRfbXVsdC4KCSogb3B0YWJzLmMgKGFkZHZfb3B0YWIsIHN1YnZfb3B0YWIsIHNtdWx2X29wdGFiLCBzZGl2dl9vcHRhYik6IERlZmluZS4KCShuZWd2X29wdGFiLCBhYnN2X29wdGFiKTogRGVmaW5lLgoJKGV4cGFuZF9iaW5vcCk6IFVzZSBvdmVyZmxvdy10cmFwcGluZyBvcHRhYnMgZm9yIHNpZ25lZCB0eXBlcyBpZgoJZmxhZ190cmFwdi4KCUhhbmRsZSBuZWd2X29wdGFiIGxpYmUgbmVnX29wdGFiLgoJKGV4cGFuZF9hYnMpOiBUYWtlIHJlc3VsdF91bnNpZ25lZHAgYXJndW1lbnQgaW5zdGVhZCBvZiB1bnNpZ25lZHAgb25lLgoJVXNlIG92ZXJmbG93LXRyYXBwaW5nIG9wdGFicyBmb3Igc2lnbmVkIHJlc3VsdCBpZiBmbGFnX3RyYXB2LgoJKGV4cGFuZF9jb21wbGV4X2Ficyk6IFVzZSBvdmVyZmxvdy10cmFwcGluZyBvcHRhYnMgZm9yIHNpZ25lZCB0eXBlcyBpZgoJZmxhZ190cmFwdi4KCURvbid0IG9wZW4tY29kZSBjb21wbGV4IGFic29sdXRlLXZhbHVlIG9wZXJhdGlvbiBmb3IgZmxhZ190cmFwdi4KCShpbml0X29wdGFicyk6IEluaXRpYWxpemUgYWRkdl9vcHRhYiwgc3Vidl9vcHRhYiwgc211bHZfb3B0YWIsCglzZGl2dl9vcHRhYiwgbmVndl9vcHRhYiBhbmQgYWJzdl9vcHRhYi4KCSogdG9wbGV2LmMgKGZsYWdfdHJhcHYpOiBEZWZpbmUuCgkobGFuZ19pbmRlcGVuZGVudF9vcHRpb25zIGZfb3B0aW9ucyk6IEluY2x1ZGUgZmxhZ190cmFwdi4KCSogdHJlZS5oIChUWVBFX1RSQVBfU0lHTkVEKTogRGVmaW5lLgoJKiBsaWJnY2MyLmMgKF9fYWRkdnNpMywgX19hZGR2ZGkzLCBfX3N1YnZzaTMsX19zdWJ2c2kzLCBfX3N1YnZkaTMsCglfX211bHZzaTMsIF9fbmVndnNpMiwgX19uZWd2ZGkyLCBfX2Fic3ZzaTIsIF9fYWJzdmRpMiwgX19tdWx2ZGkzKToKCU5ldyBmdW5jdGlvbnMuCgkqIE1ha2VmaWxlLmluOiBhZGQgX2Fic3ZzaTIgX2Fic3ZkaTIgX2FkZHZzaTMgX2FkZHZkaTMgX3N1YnZzaTMKCV9zdWJ2ZGkzIF9tdWx2c2kzIF9tdWx2ZGkzIF9uZWd2c2kyIF9uZWd2ZGkyLgoKMjAwMC0xMC0xOCAgR2VvZmZyZXkgS2VhdGluZyAgPGdlb2Zma0BjeWdudXMuY29tPgoJICAgIERhdmlkIFYuIEhlbmtlbC1XYWxsYWNlICA8Z3VtYnlAY3lnbnVzLmNvbT4KCgkqIGNvbmZpZy9pMzg2L3QtbmV0d2FyZTogQnJpbmcgaW4gZnJvbSB0aGUgUmVkIEhhdCB0cmVlLgoJKiBjb25maWcvaTM4Ni9uZXR3YXJlLmg6IExpa2V3aXNlLgoJKiBjb25maWcvbmV0d2FyZS5oOiBMaWtld2lzZS4KCSogY29uZmlnL3JzNjAwMC9uZXR3YXJlLmg6IERlbGV0ZS4KCSogY29uZmlndXJlLmluOiBBZGQgaVszNDU2N104Ni0qLW5ldHdhcmUuCgkqIGNvbmZpZ3VyZTogSGFuZC1lZGl0IHRvIG1hdGNoIGNvbmZpZ3VyZS5pbiBjaGFuZ2UuCgoyMDAwLTEwLTE4ICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogYy1jb21tb24uaCAoZmxhZ19ub19idWlsdGluKTogRGVjbGFyZS4KCShmbGFnX25vX25vbmFuc2lfYnVpbHRpbik6IExpa2V3aXNlLgoJKGNfY29tbW9uX25vZGVzX2FuZF9idWlsdGlucyk6IENoYW5nZSBwcm90b3R5cGUuCgkqIGMtY29tbW9uLmMgKGZsYWdfbm9fYnVpbHRpbik6IE5ldyB2YXJpYWJsZS4KCShmbGFnX25vX25vbmFuc2lfYnVpbHRpbik6IExpa2V3aXNlLgoJKGNfY29tbW9uX25vZGVzX2FuZF9idWlsdGlucyk6IFJlbW92ZSBwYXJhbWV0ZXJzLiAgQWRqdXN0CglhY2NvcmRpbmdseS4KCSogYy1kZWNsLmMgKGZsYWdfbm9fYnVpbHRpbik6IFJlbW92ZS4KCShmbGFnX25vX25vbmFuc2lfYnVpbHRpbik6IExpa2V3aXNlLgoJKGluaXRfZGVjbF9wcm9jZXNzaW5nKTogQWRqdXN0IGNhbGwgdG8KCWNfY29tbW9uX25vZGVzX2FuZF9idWlsdGlucy4KCjIwMDAtMTAtMTggIE1hcmMgRXNwaWUgPGVzcGllQG9wZW5ic2Qub3JnPgoKCSogdG0udGV4aSAoTElCR0NDX1NQRUMpOiBTeW5jaCB3aXRoIHJlYWxpdHkuCgoyMDAwLTEwLTE4ICBKb3NlcGggUy4gTXllcnMgIDxqc20yOEBjYW0uYWMudWs+CgoJKiBjLWNvbW1vbi5jIChjaGVja19mb3JtYXRfdHlwZXMpOiBDaGVjayBmb3Igd3JpdGluZyB0aHJvdWdoIGEKCU5VTEwgcG9pbnRlciBhcmd1bWVudC4KCjIwMDAtMTAtMTggIEhhbnMtUGV0ZXIgTmlsc3NvbiAgPGhwQGF4aXMuY29tPgoKCSogdG0udGV4aSAoRXhjZXB0aW9uIFJlZ2lvbiBPdXRwdXQpOiBEb2N1bWVudAoJRFdBUkZfQ0lFX0RBVEFfQUxJR05NRU5ULgoJKiBkd2FyZjJvdXQuYyAoRFdBUkZfQ0lFX0RBVEFfQUxJR05NRU5UKTogV3JhcCBkZWZpbml0aW9uIGluCgkjaWZuZGVmLgoJW0VOQUJMRV9DSEVDS0lOR10gKHJlZ19zYXZlKTogQWJvcnQgaWYgb2Zmc2V0IGlzIG5vdCBhIG11bHRpcGxlIG9mCglEV0FSRl9DSUVfREFUQV9BTElHTk1FTlQuCgoyMDAwLTEwLTE4ICBNaWNoYWVsIEhheWVzICA8bWhheWVzQGN5Z251cy5jb20+CgoJKiBiYXNpYy1ibG9jay5oIChzdHJ1Y3QgbG9vcCk6IERlbGV0ZSBmaWVsZHMgcHJlX2hlYWRlcl9yb290CglhbmQgcHJlX2hlYWRlcl90cmFjZSBhbmQgcmVwbGFjZSB3aXRoIHByZV9oZWFkZXJfZWRnZXMKCWFuZCBudW1fcHJlX2hlYWRlcl9lZGdlcy4KCSogZmxvdy5jIChmbG93X2xvb3BfZHVtcCk6IER1bXAgcHJlX2hlYWRlcl9lZGdlcy4KCShmbG93X2xvb3BzX2ZyZWUpOiBGcmVlIHByZV9oZWFkZXJfZWRnZXMuCgkoZmxvd19sb29wX3ByZV9oZWFkZXJfc2Nhbik6IENhbGN1bGF0ZSBwcmVfaGVhZGVyX2VkZ2VzLgoKMjAwMC0xMC0xOCAgR2VyYWxkIFBmZWlmZXIgIDxwZmVpZmVyQGRiYWkudHV3aWVuLmFjLmF0PgoKCSogY29udHJpYi50ZXhpOiBVcGRhdGUgcmVmZXJlbmNlcyB0byBzdGVlcmluZyBjb21taXR0ZWUgbWVtYmVycwoJYW5kIEplZmYgTGF3J3MgZW50cnkuCgoyMDAwLTEwLTE4ICBKb3NlcGggUy4gTXllcnMgIDxqc20yOEBjYW0uYWMudWs+CgoJKiBjLWNvbW1vbi5jIChDUExVU1BMVVNfU1REX1ZFUiwgQ19TVERfVkVSLCBDX1NURF9OQU1FKTogRGVmaW5lLgoJKG1heWJlX3JlYWRfZG9sbGFyX251bWJlciwgY2hlY2tfZm9ybWF0X2luZm9fbWFpbik6IFVzZSB0aGVtIGZvcgoJcGVkYW50aWMgd2FybmluZyBtZXNzYWdlcy4KCjIwMDAtMTAtMTggIEpvc2VwaCBTLiBNeWVycyAgPGpzbTI4QGNhbS5hYy51az4KCgkqIGMtY29tbW9uLmMgKGNoZWNrX2Zvcm1hdF9pbmZvX21haW4pOiBNaW5vciBjbGVhbnVwOiBtb3ZlCgl2YXJpYWJsZXMgaW50byBpbm5lciBzY29wZXM7IGluaXRpYWxpemUgZGVjbGFyYXRpb25zIHdoZXJlCglhcHByb3ByaWF0ZTsgZG9uJ3QgaGFyZGNvZGUgInNjYW5mIiBuYW1lIG9uIHdhcm5pbmcgZm9yIHplcm8KCXdpZHRoLgoKMjAwMC0xMC0xNyAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGMtY29tbW9uLmMgKGJhY2tfZW5kX2hvb2spOiBOZXcgdmFyaWFibGUuCgkqIGMtY29tbW9uLmggKGJhY2tfZW5kX2hvb2spOiBEZWNsYXJlIGl0LgoJKiBjLWxhbmcuYyAoZmluaXNoX2ZpbGUpOiBVc2UgaXQuCgoJKiBlbWl0LXJ0bC5jIChpbml0X2VtaXRfb25jZSk6IEluaXRpYWxpemUgdGhlIGNvbnN0X2ludF9odGFiCgllYXJsaWVyLgoKMjAwMC0xMC0xOCAgSmFuIEh1Ymlja2EgIDxqaEBzdXNlLmN6PgoKCSogaTM4Ni5jIChpeDg2X2NvbXBhcmlzb25fb3BlcmF0b3IsIHB1dF9jb25kaXRpb25fY29kZSwKCWl4ODZfbWF0Y2hfY2Ntb2RlLCBpeDg2X2NjX21vZGUpOiBIYW5kbGUgQ0NSQ21vZGUuCgkoaXg4Nl9leHBhbmRfc3RybGVuc2lfdW5yb2xsXzEpOiBVc2UgQ0NSQ21vZGUuCgkqIGkzODYuaCAoRVhUUkFfQ0NfTU9ERVMpOiBBZGQgQ0NSQ21vZGUuCgkqIGkzODYubWQgKGFkZGRpIGFuZCBuZWdkaSBzcGxpdHRlcik6IFVzZSBDQ1JDbW9kZS4KCShhZGQ/aV8zLCBhZGQ/aV80LCBhZGQ/aV81KTogVXNlIENDUkNtb2RlOyBzd2FwIG9wZXJhbmRzCgkoc3Vic2kzX2NhcnJ5KTogYWRkICcqJwoJKGFkZHNpM19jYXJyeV9yYywgc3Vic2kzX2NhcnJ5X3JjLCB4ODZfbW92c2ljY18wX20xX3JjKTogTmV3LgoJKGNtcCB0byBhZGQgcGVlcDIpOiBVc2UgQ0NSQ21vZGU7IHN3YXAgb3BlcmFuZHMuCgoyMDAwLTEwLTE4ICBLYXp1IEhpcmF0YSAgPGthenVAaHhpLmNvbT4KCgkqIGg4MzAwLmM6IEZpeCBhIGNvbW1lbnQgdHlwby4KCShyb3VuZF9mcmFtZV9zaXplKTogTmV3LgoJKGNvbXB1dGVfc2F2ZWRfcmVncyk6IExpa2V3aXNlLgoJKHB1c2gpOiBMaWtld2lzZS4KCShwb3ApOiBMaWtld2lzZS4KCShwdXNoX29yZGVyKTogUmVtb3ZlLgoJKHBvcF9vcmRlcik6IExpa2V3aXNlLgoJKGZ1bmN0aW9uX3Byb2xvZ3VlKTogUmVhcnJhbmdlIGNvZGUgZm9yIHJlYWRhYmlsaXR5LgoJKGZ1bmN0aW9uX2VwaWxvZ3VlKTogTGlrZXdpc2UuCgoJKiBjb25maWcvaDgzMDAvaDgzMDAubWQ6IFJlbW92ZSBhbiB1bm5lY2Vzc2FyeSBzaWduX2V4dGVuZAoJZXhwYW5kZXIgdGhhdCBpcyB1c2VkIHdoZW4gbm90IG9wdGltaXppbmcuICBPdXRwdXQgYSB0YWIgYWZ0ZXIKCWVhY2ggYXNzZW1ibHkgaW5zbnMuCgoJKiByZW9yZy5jOiBGaXggZm9ybWF0dGluZy4KCjIwMDAtMTAtMTcgIEpvZXJuIFJlbm5lY2tlIDxhbXlsYWFyQHJlZGhhdC5jby51az4KCgkqIHJlbG9hZDEuYyAobW92ZTJhZGRfbm90ZV9zdG9yZSk6IENoZWNrIGZvciBzaW1wbGUKCWF1dG8taW5jIGluIGRlc3RpbmF0aW9uLgoKMjAwMC0xMC0xNyAgTWljaGFlbCBDaGFzdGFpbiAgPGNoYXN0YWluQHJlZGhhdC5jb20+CgoJKiBjb25maWcvaTM4Ni9pMzg2LWFvdXQuaDogZGVmaW5lIElOVF9BU01fT1AuCgpUdWUgT2N0IDE3IDIwOjExOjA4IDIwMDAgIEFsYW4gTW9kcmEgPGFsYW5AbGludXhjYXJlLmNvbS5hdT4KCgkqIHBhLmMgKHByaW50X29wZXJhbmQpOiBIYW5kbGUgY2FzZSAnYycgZm9yIC52dGFibGVfaW5oZXJpdAoKVHVlIE9jdCAxNyAyMDowNTo1MSAyMDAwICBNYXJ0aW4gQnVjaGhvbHogPG1hcnRpbkB4ZW1hY3Mub3JnPgoKCSogaTM3MC5tZDogRml4IHNwZWxsaW5nIHR5cG8uCgoyMDAwLTEwLTE3ICBGcmFueiBTaXJsICA8RnJhbnouU2lybC1rZXJuZWxAbGF1dGVyYmFjaC5jb20+CgoJKiBmdW5jdGlvbi5jIChsb2NhdGVfYW5kX3BhZF9wYXJtKTogRG9uJ3QgYWxpZ24gc3RhY2sgdW5jb25kaXRpb25hbGx5LgoJRml4ZXMgZXhlY3V0ZS8yMDAwMTAxNy0xLmMgb24gcG93ZXJwYy1saW51eC1nbnUuCgoJKiBleHByLmMgKHN0b3JlX2NvbnN0cnVjdG9yKTogQXBwbHkgTUVNX0FMSUFTX1NFVCB0byBNRU1zIG9ubHkuCgkqIHJzNjAwMC9yczYwMDAuYyAocnM2MDAwX2hhc2hfY29uc3RhbnQpOiBVc2UgWDBJTlQgdG8gYWNjZXNzIGEKCUxBQkVMX1JFRi4KCgkqIHJzNjAwMC9yczYwMDAuaCAoTk9fRE9MTEFSX0lOX0xBQkVMLCBET0xMQVJTX0lOX0lERU5USUZJRVJTLAoJRU5DT0RFX1NFQ1RJT05fSU5GTywgQVNNX09VVFBVVF9TUEVDSUFMX1BPT0xfRU5UUllfUCk6IE1vdmUgZnJvbQoJaGVyZS4uLgoJKiByczYwMDAvYWl4Lmg6IC4uLnRvIGhlcmUuCgkqIHJzNjAwMC9saW51eC5oIChBU01fQVBQX09OLCBBU01fQVBQX09GRik6IERlZmluZSB0byBMaW51eC1zdHlsZS4KCjIwMDAtMTAtMTcgIEpha3ViIEplbGluZWsgIDxqYWt1YkByZWRoYXQuY29tPgoKCSogY29uZmlnL2FscGhhL2FscGhhLmggKEFTTV9PVVRQVVRfTUlfVEhVTkspOiBSZWxvYWQgZ3AgaWYgbmVlZGVkLgoKCSogY29uZmlnL3NwYXJjL3NwYXJjLmggKEFTTV9PVVRQVVRfTUlfVEhVTkspOiBBbHdheXMgdXNlIGNhbGwsIG1ha2UKCXN1cmUgbGlua2VyIGNhbiByZWxheCBldmVuIHRoZSBkZWxheSBzbG90IG1vdiAlZzEsJW83LCBmaXggb3V0cHV0Cglmb3JtYXRpbmcuCgoyMDAwLTEwLTE3ICBLYXp1IEhpcmF0YSAgPGthenVAaHhpLmNvbT4KCgkqIGNvbmZpZy9oODMwMC9oODMwMC5tZDogUmVtb3ZlIGFuIHVubmVjZXNzYXJ5IHplcm9fZXh0ZW5kCglleHBhbmRlciB0aGF0IGlzIHVzZWQgd2hlbiBub3Qgb3B0aW1pemluZy4gIE91dHB1dCBhIHRhYiBhZnRlcgoJZWFjaCBhc3NlbWJseSBpbnNucy4KCjIwMDAtMTAtMTcgIENoYW5kcmFrYWxhIENoYXZ2YSAgPGNjaGF2dmFAcmVkaGF0LmNvbT4KCgkqIGdjYy5jOiBOZXcgb3B0aW9ucyAtLXRhcmdldC1oZWxwLgoJKHByb2Nlc3NfY29tbWFuZCk6IEFkZGVkIGNvZGUgdG8gcGFyc2UgdGhpcyBuZXcgb3B0aW9uLgoJKiB0b3BsZXYuYyAoZGlzcGxheV90YXJnZXRfb3B0aW9ucyk6IE5ldyBmdW5jdGlvbiB0byBzdXBwb3J0IHRoZQoJYWJvdmUgbmV3IG9wdGlvbi4KCSogY3BwaW5pdC5jIChuZXdfcGVuZGluZ19kaXJlY3RpdmUpIDogTmV3IG9wdGlvbiBPUFRfdGFyZ2V0X19oZWxwLgoJKGNwcF9oYW5kbGVfb3B0aW9uKTogU3VwcG9ydCB0aGlzIG5ldyBvcHRpb24uCgkqIGludm9rZS50ZXhpOiBBZGRlZCBub3RlcyBhYm91dCAtLXRhcmdldC1oZWxwIG9wdGlvbi4KCjIwMDAtMTAtMTcgIEdyYWhhbSBTdG90dCAgPGdyYWhhbXNAcmVkaGF0LmNvbT4KCgkqIGNvbmZpZy9pMzg2L2kzODYubWQgKHRlc3RxaV8xKTogQWRkIG1pc3Npbmcgb3BlcmFuZCBwcmVmaXgKCWZvciBvcGVyYW5kIDAuCgkqIGNvbmZpZy9pMzg2L2kzODYtcHJvdG9zLmg6IEFkZCBtaXNzaW5nIHByb3RvdHlwZS4KCjIwMDAtMTAtMTcgIERpZWdvIE5vdmlsbG8gIDxkbm92aWxsb0BjeWdudXMuY29tPgoKCSogY29uZmlnL2kzODYvdW5peC5oIChBU01fT1VUUFVUX01JX1RIVU5LKTogU3ltYm9sCglfR0xPQkFMX09GRlNFVF9UQUJMRSBzaG91bGQgbm90IGhhdmUgYSAkIHByZWZpeCB3aGVuCgl1c2luZyAtbWludGVsLXN5bnRheC4KCjIwMDAtMTAtMTcgIEpvc2VwaCBTLiBNeWVycyAgPGpzbTI4QGNhbS5hYy51az4KCgkqIGMtY29tbW9uLmMgKEZNVF9GTEFHX0RPTExBUl9NVUxUSVBMRSk6IERlZmluZS4KCShmb3JtYXRfdHlwZXMpOiBVc2UgaXQgZm9yIHByaW50Zi4KCShtYXliZV9yZWFkX2RvbGxhcl9udW1iZXIpOiBBZGQgcGFyYW1ldGVyIGZvciB0aGUga2luZCBvZiBmb3JtYXQKCWludm9sdmVkLiAgV2FybiBmb3IgbXVsdGlwbGUgdXNlIGZvciBhcmd1bWVudHMgaWYgdGhpcyBpcwoJaW5hcHByb3ByaWF0ZSBmb3IgdGhlIGtpbmQgb2YgZm9ybWF0IGludm9sdmVkLgoJKGNoZWNrX2Zvcm1hdF9pbmZvX21haW4pOiBVcGRhdGUgY2FsbHMgdG8gbWF5YmVfcmVhZF9kb2xsYXJfbnVtYmVyLgoKMjAwMC0xMC0xNyAgSi4gRGF2aWQgQW5nbGluICA8ZGF2ZUBoaWF1bHkxLmhpYS5ucmMuY2E+CgoJKiBpbmNsaGFjay5kZWYgKGhwdXhfbWF4aW50KTogQWxzbyBhcHBseSBmaXggdG8gdmFsdWVzLmguCgkqIGZpeGluY2wueDogUmVidWlsdC4KCjIwMDAtMTAtMTcgIEFsZXhhbmRyZSBPbGl2YSAgPGFvbGl2YUByZWRoYXQuY29tPgoKCSogZ2VucmVjb2cuYyAod3JpdGVfc3dpdGNoKTogUmV0dXJuIHRoZSBmaXJzdCBjb25kaXRpb24gdGhhdCBuZWVkcyBhCglsYWJlbC4KCjIwMDAtMTAtMTcgIEJlcm5kIFNjaG1pZHQgIDxiZXJuZHNAcmVkaGF0LmNvLnVrPgoKCSogYy10cmVlLmggKHdhcm5fc2VxdWVuY2VfcG9pbnQpOiBNb3ZlIGRlY2xhcmF0aW9uIHRvLi4uCgkqIGMtY29tbW9uLmggKHdhcm5fc2VxdWVuY2VfcG9pbnQpOiAuLi4gaGVyZS4KCSogYy1kZWNsLmMgKHdhcm5fc2VxdWVuY2VfcG9pbnQpOiBNb3ZlIGRlZmluaXRpb24gdG8uLi4KCSogYy1jb21tb24uYyAod2Fybl9zZXF1ZW5jZV9wb2ludCk6IC4uLiBoZXJlLgoJKHN0cnVjdCByZXZlcnNlX3RyZWUpOiBOZXcuCgkocmV2ZXJzZV9saXN0LCByZXZlcnNlX21heF9kZXB0aCk6IE5ldyBzdGF0aWMgdmFyaWFibGVzLgoJKGJ1aWxkX3JldmVyc2VfdHJlZSwgY29tbW9uX2FuY2VzdG9yLCBtb2RpZnlfb2sKCXZlcmlmeV9zZXF1ZW5jZV9wb2ludHMpOiBOZXcgZnVuY3Rpb25zLgoJKGNfZXhwYW5kX2V4cHJfc3RtdCk6IENhbGwgdmVyaWZ5X3NlcXVlbmNlX3BvaW50cyBpZiAtV3NlcXVlbmNlLXBvaW50LgoJKiBjLXR5cGVjay5jIChjaGVja19tb2RpZnlfZXhwcik6IERlbGV0ZS4KCShidWlsZF9tb2RpZnlfZXhwcik6IERvbid0IGNhbGwgaXQuCgoyMDAwLTEwLTE3ICBKb3NlcGggUy4gTXllcnMgIDxqc20yOEBjYW0uYWMudWs+CgoJKiBjLWNvbW1vbi5oICh3YXJuX21pc3NpbmdfZm9ybWF0X2F0dHJpYnV0ZSk6IE5ldyB2YXJpYWJsZS4KCSogYy1kZWNsLmMgKHdhcm5fbWlzc2luZ19mb3JtYXRfYXR0cmlidXRlKTogTmV3IHZhcmlhYmxlLgoJKGNfZGVjb2RlX29wdGlvbik6IERlY29kZSAtV21pc3NpbmctZm9ybWF0LWF0dHJpYnV0ZSBhbmQKCS1Xbm8tbWlzc2luZy1mb3JtYXQtYXR0cmlidXRlLgoJKiBjLWNvbW1vbi5jIChjaGVja19mdW5jdGlvbl9mb3JtYXQpOiBJZgoJLVdtaXNzaW5nLWZvcm1hdC1hdHRyaWJ1dGUsIGdpdmUgYSB3YXJuaW5nIHdoZXJlIGEgdnByaW50ZiBvcgoJdnNjYW5mIGZ1bmN0aW9uIGlzIGNhbGxlZCBieSBhIGZ1bmN0aW9uIHdpdGhvdXQgaXRzIG93biBwcmludGYgb3IKCXNjYW5mIGF0dHJpYnV0ZS4KCSogdG9wbGV2LmMgKGRvY3VtZW50ZWRfbGFuZ19vcHRpb25zKTogQWRkCgktV21pc3NpbmctZm9ybWF0LWF0dHJpYnV0ZS4KCSogaW52b2tlLnRleGk6IERvY3VtZW50IC1XbWlzc2luZy1mb3JtYXQtYXR0cmlidXRlLgoKMjAwMC0xMC0xNyAgTWFyYyBFc3BpZSA8ZXNwaWVAb3BlbmJzZC5vcmc+CgoJKiBpbnZva2UudGV4aSAoLXNoYXJlZCk6IEluc2lzdCBvbiByZXF1aXJpbmcgY29kZSBnZW5lcmF0aW9uIGZsYWdzCgl0byBiZSB1c2VkIGFsb25nIHdpdGggLXNoYXJlZCwgYW5kIGRvY3VtZW50IHRoZSBzdWJ0bGUgZmFpbHVyZSB0aGF0CgltYXkgb2NjdXIgb3RoZXJ3aXNlLgoKMjAwMC0xMC0xNiAgSi4gRGF2aWQgQW5nbGluICA8ZGF2ZUBoaWF1bHkxLmhpYS5ucmMuY2E+CgoJKiBwYS5tZCAocmV0dXJuX2ludGVybmFsKTogTW92ZSBgdXNlJyBhZnRlciBgcmV0dXJuJy4KCjIwMDAtMTAtMTYgVGhlb2RvcmUgUGFwYWRvcG91bG8gPFRoZW9kb3JlLlBhcGFkb3BvdWxvQHNvcGhpYS5pbnJpYS5mcj4KCgkqIG1hY2htb2RlLmRlZjogQ29ycmVjdCBjb21tZW50LgoKMjAwMC0xMC0xNiAgUm9kbmV5IEJyb3duICA8Um9kbmV5QnJvd25AbXluZC5jb20+CgoJKiBwcmludC1ydGwuYyAocHJpbnRfcnR4X2hlYWQpOiBDb25zdGlmeS4KCSogcnRsLmggKHByaW50X3J0eF9oZWFkKTogU2ltaWxhcmx5LgoKCSogY29uZmlnL3BhL3BhL3BhLXByb3Rvcy5oIChvdXRwdXRfNjRiaXRfYW5kLCBvdXRwdXRfNjRiaXRfaW9yKToKCUNvbnN0aWZ5IGNoYXIgKiByZXR1cm4gdmFsdWUuCgkqIGNvbmZpZy9wYS9wYS9wYS5jCgkob3V0cHV0XzY0Yml0X2FuZCwgb3V0cHV0XzY0Yml0X2lvcik6IENvbnN0aWZ5IGNoYXIgKiByZXR1cm4gdmFsdWUuCgkocGFfY2FuX2NvbWJpbmVfcCk6IE1ha2Ugc3RhdGljLgoJKGZ1bmN0aW9uX2FyZyk6IERlY29yYXRlIHVudXNlZCBgbmFtZWQnIGFyZ3VtZW50LiBGaXggY29tbWVudCB0eXBvLgoJKGZ1bmN0aW9uX2FyZ19wYXJ0aWFsX25yZWdzKTogRGVjb3JhdGUgdW51c2VkIGBuYW1lZCcgYXJndW1lbnQuCgoyMDAwLTEwLTE2ICBKb3NlcGggUy4gTXllcnMgIDxqc20yOEBjYW0uYWMudWs+CgoJKiBjLWNvbW1vbi5jIChmb3JtYXRfY2hlY2tfcmVzdWx0cyk6IE5ldyBzdHJ1Y3R1cmUuCgkoZmluaXNoX2RvbGxhcl9mb3JtYXRfY2hlY2tpbmcpOiBBZGp1c3QgdG8gdGFrZSBhCglmb3JtYXRfY2hlY2tfcmVzdWx0cyAqIHBhcmFtZXRlci4KCShjaGVja19mb3JtYXRfaW5mbywgY2hlY2tfZm9ybWF0X2luZm9fcmVjdXJzZSwKCWNoZWNrX2Zvcm1hdF9pbmZvX21haW4pOiBTcGxpdCBjaGVja19mb3JtYXRfaW5mbyBpbnRvIHRocmVlCglmdW5jdGlvbnMsIHRoZSBtYWluIGNoZWNraW5nIGdvaW5nIGluIGNoZWNrX2Zvcm1hdF9pbmZvX21haW4uCglSZWN1cnNlIHdoZW4gYW55IHJlZHVjdGlvbiBvZiB0aGUgZm9ybWF0IHN0cmluZyBhcmd1bWVudCB0b3dhcmRzIGEKCXN0cmluZyBsaXRlcmFsIGlzIGRvbmU7IGdvIGRvd24gYm90aCBicmFuY2hlcyBvZiBhIGNvbmRpdGlvbmFsCglleHByZXNzaW9uLiAgRG9uJ3Qgd2FybiBmb3IgZXh0cmEgZm9ybWF0IGFyZ3VtZW50cyBvciBlbXB0eSBmb3JtYXQKCXN0cmluZ3MgaWYgdGhleSBvbmx5IG9jY3VyIGluIHNvbWUgYnJhbmNoZXMgb2YgYSBjb25kaXRpb25hbAoJZXhwcmVzc2lvbi4KCjIwMDAtMTAtMTYgIEthenUgSGlyYXRhICA8a2F6dUBoeGkuY29tPgoKCSogY29uZmlnL2g4MzAwL2g4MzAwLmM6IFJlbW92ZSBvYnN0YWNrLiAgSW5jbHVkZSBnZ2MuaC4KCjIwMDAtMTAtMTYgIEpha3ViIEplbGluZWsgIDxqYWt1YkByZWRoYXQuY29tPgoKCSogcnRsYW5hbC5jIChtYXlfdHJhcF9wKTogQ2hlY2sgb3BlcmFuZCBtb2RlcyBvZiBDT01QQVJFLgoKMjAwMC0xMC0xNSAgRGllZ28gTm92aWxsbyAgPGRub3ZpbGxvQGN5Z251cy5jb20+CgoJKiBpMzg2Lm1kICgqbW92c2lfb3IpOiBTd2l0Y2ggb3BlcmFuZCBvcmRlciBmb3IgaW50ZWwgc3ludGF4LgoKMjAwMC0xMC0xNCAgSm9zZXBoIFMuIE15ZXJzICA8anNtMjhAY2FtLmFjLnVrPgoKCSogUFJPQkxFTVM6IFJlbW92ZS4KCgkqIGdjYy50ZXhpIChDb250cmlidXRpbmcpOiBVcGRhdGUuCgoyMDAwLTEwLTEzICBEaWVnbyBOb3ZpbGxvICA8ZG5vdmlsbG9AY3lnbnVzLmNvbT4KCgkqIGNvbmZpZy9pMzg2L3VuaXguaCAoQVNNX09VVFBVVF9NSV9USFVOSyk6IE91dHB1dCBmaW5hbCBqdW1wIHVzaW5nCglhcHByb3ByaWF0ZSBhc3NlbWJsZXIgZGlhbGVjdC4KCjIwMDAtMTAtMTMgIEFsZXhhbmRyZSBPbGl2YSAgPGFvbGl2YUByZWRoYXQuY29tPgoKCSogYy1jb21tb24uYyAoY19leHBhbmRfYnVpbHRpbik6IFBBUkFNUy1pemUgcHJvdG90eXBlLgoKMjAwMC0xMC0xMiAgTWFyZWsgTWljaGFsa2lld2ljeiAgPG1hcmVrbUBsaW51eC5vcmcucGw+CgoJKiBjb25maWcvYXZyL2F2ci5jIChvdXRwdXRfbW92aGksIG91dHB1dF9tb3ZzaXNmKTogRml4IGxvYWRpbmcKCWNvbnN0YW50cyAxIGFuZCAyIHRvIE5PX0xEX1JFR1MuCgoyMDAwLTEwLTEzICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBNYWtlZmlsZS5pbiAoYy1wYXJzZS5jLCB0cmFkY2lmLmMpOiBDcmVhdGUgYXRvbWljYWxseS4KCgkqIG9iamMvTWFrZS1sYW5nLmluIChvYmpjLXBhcnNlLmMpOiBMaWtld2lzZS4KCjIwMDAtMTAtMTMgIFJpY2hhcmQgRWFybnNoYXcgPHJlYXJuc2hhQGFybS5jb20+CgoJKiBhcm0uYzogSW5jbHVkZSBvYnN0YWNrLmgKCShtaW5pcG9vbF9vYnN0YWNrLCBtaW5pcG9vbF9zdGFydG9iaik6IERlZmluZS4KCShhcm1fYWRkX2djX3Jvb3RzKTogSW5pdGlhbGl6ZSB0aGVtLgoJKGNyZWF0ZV9maXhfYmFycmllcik6IFVzZSBvdXIgbmV3IG9ic3RhY2suCgkocHVzaF9taW5pcG9vbF9iYXJyaWVyLCBwdXNoX21pbmlwb29sX2ZpeCk6IExpa2V3aXNlLgoJKGFybV9yZW9yZyk6IFJlbGVhc2Ugb2JzdGFjayBtZW1vcnkuCgoyMDAwLTEwLTEzICBKYWt1YiBKZWxpbmVrICA8amFrdWJAcmVkaGF0LmNvbT4KCgkqIGNvbmZpZy9zcGFyYy9zcGFyYy5tZCAobm9ubG9jYWxfZ290b19yZWNlaXZlcik6IFJlbW92ZS4KCShwcm9sb2d1ZSwgZXhjZXB0aW9uX3JlY2VpdmVyLCBidWlsdGluX3NldGptcF9yZWNlaXZlcik6IE5ldwoJcGF0dGVybnMuCgkqIGNvbmZpZy9zcGFyYy9zcGFyYy5oIChGSU5BTElaRV9QSUMpOiBSZW1vdmUuCgkqIGNvbmZpZy9zcGFyYy9zcGFyYy1wcm90b3MuaCAoZmluYWxpemVfcGljKTogUmVtb3ZlLgoJKGxvYWRfcGljX3JlZ2lzdGVyKTogTmV3IHByb3RvdHlwZS4KCSogY29uZmlnL3NwYXJjL3NwYXJjLmMgKHBpY19zZXR1cF9jb2RlKTogUmVtb3ZlLgoJKGZpbmFsaXplX3BpYyk6IFJlbmFtZSB0by4uLgoJKGxvYWRfcGljX3JlZ2lzdGVyKTogLi4udGhpcyBmdW5jdGlvbi4KCURvbid0IGxvb2sgZm9yIG5vbmxvY2FsX2dvdG9fcmVjZWl2ZXJzIGFuZCBlbWl0IHBpYyBzZXR1cCBjb2RlCglkaXJlY3RseS4gIERvbid0IGNoZWNrIGN1cnJlbnRfZnVuY3Rpb25fdXNlc19waWNfb2Zmc2V0X3RhYmxlLgoKMjAwMC0xMC0xMyAgUmljaGFyZCBFYXJuc2hhdyA8cmVhcm5zaGFAYXJtLmNvbT4KCgkqIHRyZWUuaCAoc3RydWN0IG9ic3RhY2spOiBEZWNsYXJlLgoKMjAwMC0xMC0xMiAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCglSZW1vdmUgb2JzdGFja3MuCgkqIE1ha2VmaWxlLmluIChnZ2MtY2FsbGJhY2tzLm8pOiBSZW1vdmUgdGFyZ2V0LgoJKGZsb3cubyk6IERlcGVuZCBvbiBHR0NfSC4KCSogYWxpYXMuYyAoaW5pdF9hbGlhc19hbmFseXNpcyk6CglSZW1vdmUgZ2djX3AgY29uZGl0aW9uYWxzLgoJKGVuZF9hbGlhc19hbmFseXNpcyk6IExpa2V3aXNlLgoJKiBiYXNpYy1ibG9jay5oIChpbml0X2Zsb3cpOiBOZXcgZnVuY3Rpb24uCgkoYWxsb2NhdGVfcmVnX2xpZmVfZGF0YSk6IERlY2xhcmUuCgkqIGJiLXJlb3JkZXIuYwkoZnVuY3Rpb25fb2JzdGFjayk6IFJlcGxhY2Ugd2l0aCAuLi4KCShmbG93X29ic3RhY2spOiAuLi4gbmV3IHZhcmlhYmxlLgoJKGZpeHVwX3Jlb3JkZXJfY2hhaW4pOiBVc2UgaXQuCgkqIGMtZGVjbC5jIChnZ2NfcCk6IFJlbW92ZS4KCShjYWxsZXItc2F2ZS5jKTogRG9uJ3QgY2FsbCBvYmFsbG9jL29iZnJlZS4KCSogY29tYmluZS5jIChzdHJ1Y3QKCXVuZG9idWYpOiBSZW1vdmUgc3RvcmFnZS4KCSh0cnlfY29tYmluZSk6IERvbid0IGNhbGwgb2JhbGxvYy4KCSh1bmRvX2FsbCk6IERvbid0IGNhbGwgb2JmcmVlLgoJKiBjc2UuYyAoaW5zZXJ0KTogVXNlIHhtYWxsb2MsIG5vdAoJb2JhbGxvYy4KCShjc2VfbWFpbik6IEFkanVzdCBhY2NvcmRpbmdseS4KCSogZHdhcmYyb3V0LmMgKHNhdmVfcnR4KTogUmVtb3ZlCglvYnN0YWNrIGNvZGUuCgkoZHdhcmYyb3V0X2luaXQpOiBSZW1vdmUgZ2djX3AgY29uZGl0aW9uYWxzLgoJKiBlbWl0LXJ0bC5jIChydGxfb2JzdGFjayk6IFJlbW92ZS4KCShnZW5fcnR4X0NPTlNUX0lOVCk6IFJlbW92ZSBnZ2NfcCBjb25kaXRpb25hbHMuCgkobWFrZV9pbnNuX3Jhdyk6IExpa2V3aXNlLgoJKGVtaXRfaW5zbl9iZWZvcmUpOiBMaWtld2lzZS4KCShlbWl0X2luc25fYWZ0ZXIpOiBMaWtld2lzZS4KCShlbWl0X2luc24pOiBMaWtld2lzZS4KCShnZW5fc2VxdWVuY2UpOiBMaWtld2lzZS4KCShjb3B5X2luc25fMSk6IFJlbW92ZSBoYW5kbGluZyBvZiBgYicgUlRMIGNvbXBvbmVudHMuCgkoaW5pdF9lbWl0X29uY2UpOiBSZW1vdmUgZ2djX3AgY29uZGl0aW9uYWxzLgoJKiBleGNlcHQuYyAoY3JlYXRlX3JldGhyb3dfcmVmKTogRG9uJ3QgZm9vbCB3aXRoIG9ic3RhY2tzLgoJKGFkZF9wYXJ0aWFsX2VudHJ5KTogTGlrZXdpc2UuCgkoY2FsbF9nZXRfZWhfY29udGV4dCk6IExpa2V3aXNlLgoJKGJlZ2luX3Byb3RlY3RfcGFydGlhbHMpOiBMaWtld2lzZS4KCShwcm90ZWN0X3dpdGhfdGVybWluYXRlKTogTGlrZXdpc2UuCgkqIGV4cGxvdy5jCgkocGx1c19jb25zdGFudF93aWRlKTogTGlrZXdpc2UuCgkqIGV4cHIuYyAoaW5pdF9leHByX29uY2UpOgoJTGlrZXdpc2UuCgkoZW1pdF9ibG9ja19tb3ZlKTogTGlrZXdpc2UuCgkoY2xlYXJfc3RvcmFnZSk6IExpa2V3aXNlLgoJKGV4cGFuZF9leHByKTogTGlrZXdpc2UuCgkqIGZsb3cuYyAoZnVuY3Rpb25fb2JzdGFjayk6IFJlbW92ZS4KCShmbG93X29ic3RhY2spOiBOZXcgdmFyaWFibGUuCgkoZmxvd19maXJzdG9iaik6IExpa2V3aXNlLgoJKGNyZWF0ZV9iYXNlX2Jsb2NrKTogVXNlIHRoZSBmbG93X29ic3RhY2suCgkoc3BsaXRfYmxvY2spOiBMaWtld2lzZS4KCShzcGxpdF9lZGdlKTogTGlrZXdpc2UuCgkoY2FsY3VsYXRlX2dsb2JhbF9yZWdzX2xpdmUpOiBMaWtld2lzZS4KCShhbGxvY2F0ZV9iYl9saWZlX2RhdGEpOiBNYWtlIGl0IHN0YXRpYy4gIExpa2V3aXdzZS4KCShpbml0X2Zsb3cpOiBOZXcgZnVuY3Rpb24uCgkoc2l6ZV9pbnRfdHlwZV93aWRlKTogUmVtb3ZlIGdnY19wIGNvbmRpdGlvbmFscy4KCSogZnVuY3Rpb24uYwoJKHB1c2hfZnVuY3Rpb25fY29udGV4dF90byk6IERvbid0IGNhbGwgc2F2ZV90cmVlX3N0YXR1cy4KCShwb3BfZnVuY3Rpb25fY29udGV4dF9mcm9tKTogT3IgcmVzdG9yZV90cmVlX3N0YXR1cy4KCShhc3NpZ25fc3RhY2tfbG9jYWxfMSk6IERvbid0IGNhbGwgcHVzaF9vYnN0YWNrcy4KCShmaW5kX2ZpeHVwX3JlcGxhY2VtZW50KTogVXNlIHhtYWxsb2MuCgkoZml4dXBfdmFyX3JlZnNfaW5zbnMpOiBGcmVlIHRoZSBzdG9yYWdlLgoJKGluc25zX2Zvcl9tZW1fd2Fsayk6IERvbid0IG1lc3Mgd2l0aCBvYnN0YWNrcy4KCShpbnN0YW50aWF0ZV9kZWNscyk6IExpa2V3aXNlLgoJKHRyYW1wb2xpbmVfYWRkcmVzcyk6IExpa2V3aXNlLgoJKGV4cGFuZF9mdW5jdGlvbl9lbmQpOiBMaWtld2lzZS4KCSogZnVuY3Rpb24uaCAoc3R1cmN0IGZ1bmN0aW9uKToKCVJlbW92ZSBvYnN0YWNrLXJlbGF0ZWQgdmFyaWFibGVzLgoJKHNhdmVfdHJlZV9zdGF0dXMpOiBEb24ndCBkZWNsYXJlLgoJKHJlc3RvcmVfdHJlZV9zdGF0dXMpOiBMaWtld2lzZS4KCSogZ2NzZS5jIChjb21wdXRlX2Nhbl9jb3B5KToKCURvbid0IGNhbGwgb2JhbGxvYy9vYmZyZWUuCgkqIGdlbmF0dHJ0YWIuYyAob3BlcmF0ZV9leHApOiBSZW1vdmUKCWdnY19wIGNvbmRpdGlvbmFscy4KCShzaW1wbGlmeV9jb25kKTogTGlrZXdpc2UuCgkoc2ltcGxpZnlfdGVzdF9leHApOiBEb24ndCBtZXNzIHdpdGggb2JzdGFja3MuCgkob3B0aW1pemVfYXR0cnMpOiBMaWtld2lzZS4KCSogZ2VuZ2VucnRsLmMgKGdlbmRlZik6IERvbid0IGluY2x1ZGUKCWdnY19wIGNvbmRpdGlvbmFscy4KCSogZ2djLWNhbGxiYWNrcy5jIChnZ2NfcCk6IFJlbW92ZS4KCSogZ2djLW5vbmUuYyAoZ2djX3ApOiBSZW1vdmUuCgkqIGdnYy5oIChnZ2NfcCk6IERvbid0IGRlY2xhcmUuCgkqIGludGVncmF0ZS5jIChzYXZlX2Zvcl9pbmxpbmUpOiBEb24ndCBtZXNzIHdpdGggb2JzdGFja3MuCgkoaW50ZWdyYXRlX2RlY2xfdHJlZSk6IExpa2V3aXNlLgoJKG91dHB1dF9pbmxpbmVfZnVuY3Rpb24pOiBMaWtld2lzZS4KCSogbGlzdHMuYwoJKGluaXRfRVhQUl9JTlNOX0xJU1RfY2FjaGUpOiBMaWtld2lzZS4KCSogbG9vcC5jICh0ZW1wX29ic3RhY2spOgoJUmVtb3ZlLgoJKHJ0bF9vYnN0YWNrKTogTGlrZXdpc2UuCgkoaW5pdF9sb29wKTogRG9uJ3QgbWVzcyB3aXRoIG9ic3RhY2tzLgoJKHJlZ19hZGRyZXNzX2Nvc3QpOiBGcmVlIEJJVnMgYW5kIEdJVnMuCgkoY2hlY2tfaW5zbnNfZm9yX2JpdnMpOiBVc2UgeG1hbGxvYywgbm90IG9iYWxsb2MuCgkoZmluZF9tZW1fZ2l2cyk6IExpa2V3aXNlLgoJKHJlY29yZF9iaXYpOiBMaWtld2lzZS4KCShnZW5lcmFsX2luZHVjdGlvbl92YXIpOiBMaWtld2lzZS4KCShwcm9kdWN0X2NoZWFwX3ApOiBMaWtld3NlLgoJKiBvcHRhYnMuYyAoaW5pdF9vbmVfbGliZnVuYyk6IFJlbW92ZQoJZ2djX3AgY29uZGl0aW9uYWwuCgkqIHByaW50LXRyZWUuYyAoZGVidWdfdHJlZSk6IERvbid0IHVzZQoJb2JhbGxvYy9vYmZyZWUuCgkocHJpbnRfbm9kZSk6IExpa2V3aXNlLgoJKiBwcm9maWxlLmMgKG91dHB1dF9mdW5jX3N0YXJ0X3Byb2ZpbGVyKToKCVJlbW92ZSBjYWxsIHRvIHRlbXBvcmFyeV9hbGxvY2F0aW9uLgoJKiByZWxvYWQxLmMKCShlbGltaW5hdGVfcmVnc19pbl9pbnNuKTogRG9uJ3QgbWVzcyB3aXRoIG9ic3RhY2tzLgoJKiByZXNvdXJjZS5jCgkobWFya190YXJnZXRfbGl2ZV9yZWdzKTogVXNlIHhtYWxsb2MuCgkoZnJlZV9yZXNvdXJjZV9pbmZvKTogRnJlZSB0aGUgbWVtb3J5LgoJKiBydGwuYyAocnRsX29ic3RhY2spOgoJUmVtb3ZlLgoJKHJ0dmVjX2FsbG9jKTogRG9uJ3QgbWVzcyB3aXRoIG9ic3RhY2tzLgoJKHJ0eF9hbGxvYyk6IExpa2V3aXNlLgoJKHJ0eF9mcmVlKTogUmVtb3ZlLgoJKGNvcHlfcnR4KTogRG9uJ3QgaGFuZGxlIGBiJyBjYXNlcy4KCShyZWFkX3J0eCk6IFVzZSBhIGxvY2FsIHJ0bF9vYnN0YWNrLgoJKiBydGwuaCAob2JhbGxvYyk6IFJlbW92ZS4KCShvYmZyZWUpOiBMaWtld2lzZS4KCShwb3Bfb2JzdGFja3MpOiBMaWtld2lzZS4KCShwdXNoX29ic3RhY2tzKTogTGlrZXdpc2UuCgkoYWxsb2NhdGVfYmJfbGlmZV9kYXRhKTogTGlrZXdpc2UuCgkoYWxsb2NhdGVfcmVnX2xpZmVfZGF0YSk6IExpa2V3aXNlLgoJKHJ0eF9mcmVlKTogTGlrZXdpc2UuCgkqIHNkYm91dC5jIChzZGJvdXRfcXVldWVfYW5vbnltb3VzX3R5cGUpOgoJVXNlIHRyZWVfY29ucywgbm90IHNhdmVhYmxlX3RyZWVfY29ucy4KCSogc2ltcGxpZnktcnR4LmMKCShjc2VsaWJfaW5pdCk6IERvbid0IG1lc3Mgd2l0aCBvYnN0YWNrcy4KCSogc3RtdC5jCgkobWFya19ibG9ja19uZXN0aW5nKTogTWFyayB0aGUgbGFiZWxfY2hhaW4uCgkoZXB4YW5kX2xhYmVsKTogVXNlIGdnY19hbGxvYywgbm90IG9iYWxsb2MuCgkoY2xlYXJfbGFzdF9leHByKTogRG9uJ3QgbWVzcyB3aXRoIG9ic3RhY2tzLgoJKGV4cGFuZF9kZWNsX2NsZWFudXApOiBMaWtld2lzZS4KCShleHBhbmRfZGNjX2NsZWFudXApOiBMaWtld2lzZS4KCShleHBhbmRfZGhjX2NsZWFudXApOiBMaWtld2lzZS4KCShleHBhbmRfYW5vbl91bmlvbl9kZWNsKTogTGlrZXdpc2UuCgkoYWRkX2Nhc2Vfbm9kZSk6IFVzZSB4bWFsbG9jLCBub3Qgb2JhbGxvYy4KCShmcmVlX2Nhc2Vfbm9kZXMpOiBOZXcgZnVuY3Rpb24uCgkoZXhwYW5kX2VuZF9jYXNlKTogQ2FsbCBpdC4KCSogc3Rvci1sYXlvdXQuYyAobGF5b3V0X3R5cGUpOiBEb24ndAoJbWVzcyB3aXRoIG9ic3RhY2tzLgoJKGxheW91dF90eXBlKTogTGlrZXdpc2UuCgkqIHRvcGxldi5jICh3cmFwdXBfZ2xvYmFsX2RlY2xhcmF0aW9ucyk6CglMaWtld2lzZS4KCShjb21waWxlX2ZpbGUpOiBSZW1vdmUgZ2djX3AgY29uZGl0aW9uYWxzLgoJKHJlc3Rfb2ZfY29tcGlsYXRpb24pOiBDYWxsIGluaXRfZmxvdy4gIFJlbW92ZSBnZ2NfcCBjb25kaXRpb25hbHMuCgkoZGVjb2RlX2Zfb3B0aW9uKTogUmVtb3ZlIGdnY19wIGNvbmRpdGlvbmFscy4KCSogdHJlZS5jCgkoZnVuY3Rpb25fbWF5YmVwZXJtYW5lbnRfb2JzdGFjayk6IFJlbW92ZS4KCShtYXliZXBlcm1hbmVudF9vYnN0YWNrKTogTGlrZXdpc2UuCgkoZnVuY3Rpb25fb2JzdGFjayk6IExpa2V3aXNlLgoJKHRtZXBvcmFyeV9vYnN0YWNrKTogTGlrZXdpc2UuCgkobW9tZW50YXJ5X29ic3RhY2spOiBMaWtld2lzZS4KCSh0ZW1wX2RlY2xfb2JzdGFjayk6IExpa2V3aXNlLgoJKHNhdmVhYmxlX29ic3RhY2spOiBMaWtld2lzZS4KCShydGxfb2JzdGFjayk6IExpa2V3aXNlLgoJKGN1cnJlbnRfb2JzdGFjayk6IExpa2V3aXNlLgoJKGV4cHJlc3Npb25fb2JzdGFjayk6IExpa2V3aXNlLgoJKHN0cnVjdCBvYnN0YWNrX3N0YWNrKTogTGlrZXdpc2UuCgkob2JzdGFja19zdGFjayk6IExpa2V3aXNlLgoJKG9ic3RhY2tfc3RhY2tfb2JzdGFjayk6IExpa2V3aXNlLgoJKG1heWJlcGVybWFuZW50X2ZpcnN0b2JqKTogTGlrZXdpc2UuCgkodGVtcG9yYXJ5X2ZpcnN0b2JqKTogTGlrZXdpc2UuCgkobW9tZW50YXJ5X2ZpcnN0b2JqKTogTGlrZXdpc2UuCgkodGVtcF9kZWNsX2ZpcnN0b2JqKTogTGlrZXdpc2UuCgkobW9tZW50YXJ5X2Z1bmN0aW9uX2ZpcnN0b2JqKTogTGlrZXdpc2UuCgkoYWxsX3R5cGVzX3Blcm1hbmVudCk6IExpa2V3aXNlLgoJKHN0cnVjdCBtb21lbnRhcnlfbGV2ZWwpOiBMaWtld2lzZS4KCShtb21lbnRhcnlfc3RhY2spOiBMaWtld2lzZS4KCShpbml0X29ic3RhY2tzKTogUmVtb3ZlIGluaXRpYWxpemF0aW9uIG9mIHJlbW92ZWQgb2JzdGFja3MuCgkoc2F2ZV90cmVlX3N0YXR1cyk6IFJlbW92ZS4KCShyZXN0b3JlX3RyZWVfc3RhdHVzKTogTGlrZXdpc2UuCgkodGVtcG9yYXJ5X2FsbG9jYXRpb24pOiBMaWVrd2lzZS4KCShlbmRfdGVtcG9yYXJ5X2FsbG9jYXRpb24pOiBMaWVrd2lzZS4KCShyZXN1bWVfdGVtcG9yYXJ5X2FsbG9jYXRpb24pOiBMaWtld2lzZS4KCShzYXZlYWJsZV9hbGxvY2F0aW9uKTogTGlrZXdpc2UuCgkocHVzaF9vYnN0YWNrcyk6IExpa2V3aXNlLgoJKHB1c2hfb2JzdGFja3Nfbm9jaGFuZ2UpOiBMaWtld2lzZS4KCShwb3Bfb2JzdGFja3MpOiBMaWtld2lzZS4KCShhbGxvY2F0aW9uX3RlbXBvcmFyeV9wKTogTGlrZXdpc2UuCgkocGVybWFuZW50X2FsbG9jYXRpb24pOiBMaWtld2lzZS4KCShwcmVzZXJ2ZV9kYXRhKTogTGlrZXdpc2UuCgkocHJlc2VydmVfaW5pdGlhbGl6ZXIpOiBMaWtld2lzZS4KCShydGxfaW5fY3VycmVudF9vYnN0YWNrKTogTGlrZXdpc2UuCgkocnRsX2luX3NhdmVhYmxlX29ic3RhY2spOiBMaWtld2lzZS4KCShvYmFsbG9jKTogTGlrZXdpc2UuCgkob2JmcmVlKTogTGlrZXdpc2UuCgkoc2F2ZWFsbG9jKTogTGlrZXdpc2UuCgkoZXhwcmFsbG9jKTogTGlrZXdpc2UuCgkocHJpbnRfb2JzdGFja19uYW1lKTogTGlrZXdpc2UuCgkoZGVidWdfb2JzdGFjayk6IExpa2V3aXNlLgoJKG9iamVjdF9wZXJtYW5lbnRfcCk6IExpa2V3aXNlLgoJKHB1c2hfbW9tZW50YXJ5KTogTGlrZXdpc2UuCgkocGVyc2VydmVfbW9tZW50YXJ5KTogTGlrZXdpc2UuCgkoY2xlYXJfbW9tZW50YXJ5KTogTGlrZXdpc2UuCgkocG9wX21vbWVudGFyeSk6IExpa2V3aXNlLgoJKHBvcF9tb21lbnRhcnlfbm9mcmVlKTogTGlrZXdpc2UuCgkoc3VzcGVuZF9tb21lbnRhcnkpOiBMaWtld2lzZS4KCShyZXN1bWVfbW9tZW50YXJ5KTogTGlrZXdpc2UuCgkobWFrZV9ub2RlKTogRG9uJ3Qgc2V0IFRSRUVfUEVSTUFORU5ULgoJKGNvcHlfbm9kZSk6IFJlbW92ZSBnZ2NfcCBjb25kaXRpb25hbHMuICBEb24ndCBzZXQgVFlQRV9PQlNUQUNLLgoJRG9uJ3Qgc2V0IFRSRUVfUEVSTUFORU5ULgoJKGdldF9pZGVudGlmaWVyKTogUmVtb3ZlIGdnY19wIGNvbmRpdGlvbmFscy4KCShidWlsZF9zdHJpbmcpOiBMaWtld2lzZS4KCShtYWtlX3RyZWVfdmVjKTogTGlrZXdpc2UuCgkoYnVpbGRfZGVjbF9saXN0KTogUmVtb3ZlLgoJKGJ1aWxkX2V4cHJfbGlzdCk6IExpa2V3aXNlLgoJKHRyZWVfY29ucyk6IFJlbW92ZSBnZ2NfcCBjb25kaXRpb25hbHMuCgkoZGVjbF90cmVlX2NvbnMpOiBSZW1vdmUuCgkoZXhwcl90cmVlX2NvbnMpOiBMaWtld2lzZS4KCShwZXJtX3RyZWVfY29ucyk6IExpa2V3aXNlLgoJKHRlbXBfdHJlZV9jb25zKTogTGlrZXdpc2UuCgkoc2F2ZWFibGVfdHJlZV9jb25zKTogTGlrZXdpc2UuCgkoYnVpbGQxKTogUmVtb3ZlIGdnY19wIGNvbmRpdGlvbmFscy4KCShidWlsZF9wYXJzZV9ub2RlKTogTGlrZXdpc2UuCgkoYnVpbGRfdHlwZV9hdHRyaWJ1dGVfdmFyaWFudCk6IERvbid0IG1lc3Mgd2l0aCBvYnN0YWNrcy4KCShidWlsZF90eXBlX2NvcHkpOiBMaWtld2lzZS4KCSh0eXBlX2hhc2hfY2Fub24pOiBMaWtld2lzZS4KCShidWlsZF9wb2ludGVyX3R5cGUpOiBMaWtld2lzZS4KCShidWlsZF9yZWZlcmVuY2VfdHlwZSk6IExpa2V3aXNlLgoJKGJ1aWxkX2luZGV4X3R5cGUpOiBMaWtld2lzZS4KCShidWlsZF9yYW5nZV90eXBlKTogTGlrZXdpc2UuCgkoZHVtcF90cmVlX3N0YXRpc3RpY3MpOiBEb24ndCBwcmludCBvYnN0YWNrIGluZm9ybWF0aW9uLgoJKiB0cmVlLmgKCShzdHJ1Y3QgdHJlZV9jb21tb24pOiBSZW1vdmUgcGVybWFuZW50X2ZsYWcuCgkoVFJFRV9QRVJNQU5FTlQpOiBSZW1vdmUuCgkoVFJFRV9TRVRfUEVSTUFORU5UKTogTGlrZXdpc2UuCgkoVFlQRV9PQlNUQUNLKTogTGlrZXdpc2UuCgkoc3RydWN0IHRyZWVfdHlwZSk6IFJlbW92ZSBvYnN0YWNrLgoJKG9iYWxsb2MpOiBSZW1vdmUuCgkoc2F2ZWFsbG9jKTogTGlrZXdpc2UuCgkoYnVpbGRfZGVjbF9saXN0KTogTGlrZXdpc2UuCgkoYnVpbGRfZXhwcl9saXN0KTogTGlrZXdpc2UuCgkocGVybV90cmVlX2NvbnMpOiBMaWtld2lzZS4KCSh0ZW1wX3RyZWVfY29ucyk6IExpa2V3aXNlLgoJKHNhdmVhYmxlX3RyZWVfY29ucyk6IExpa2V3aXNlLgoJKGRlY2xfdHJlZV9jb25zKTogTGlrZXdpc2UuCgkoZXhwcl90cmVlX2NvbnMpOiBMaWtld2lzZS4KCShzdXNwZW5kX21vbWVudGFyeSk6IExpa2V3aXNlLgoJKGFsbG9jYXRpb25fdGVtcG9yYXJ5X3ApOiBMaWtld2lzZS4KCShyZXN1bWVfbW9tZW50YXJ5KTogTGlrZXdpc2UuCgkocHVzaF9vYnN0YWNrc19ub2NoYW5nZSk6IExpa2V3aXNlLgoJKHBlcm1hbmVudF9hbGxvY2F0aW9uKTogTGlrZXdpc2UuCgkocHVzaF9tb21lbnRhcnkpOiBMaWtld2lzZS4KCShjbGVhcl9tb21lbnRhcnkpOiBMaWtld2lzZS4KCShwb3BfbW9tZW50YXJ5KTogTGlrZXdpc2UuCgkoZW5kX3RlbXBvcmFyeV9hbGxvY2F0aW9uKTogTGlrZXdpc2UuCgkocG9wX29ic3RhY2tzKTogTGlrZXdpc2UuCgkocHVzaF9vYnN0YWNrcyk6IExpa2V3aXNlLgoJKHBvcF9tb21lbnRhcnlfbm9mcmVlKTogTElrZXdpc2UuCgkocHJlc2VydmVfbW9tZW50YXJ5KTogTGlrZXdpc2UuCgkoc2F2ZWFibGVfYWxsb2NhdGlvbik6IExpa2V3aXNlLgoJKHRlbXBvcmFyeV9hbGxvY2F0aW9uKTogTGlrZXdpc2UuCgkocmVzdW1lX3RlbXBvcmFyeV9hbGxvY2F0aW9uKTogTGlrZXdpc2UuCgkocGVyc2VydmVfaW5pdGlhbGl6ZXIpOiBMaWtld2lzZS4KCShkZWJ1Z19vYnN0YWNrKTogTGlrZXdpc2UuCgkocnRsX2luX2N1cnJlbnRfb2JzdGFjayk6IExpa2V3aXNlLgoJKHJ0bF9pbl9zYXZlYWJsZV9vYnN0YWNrKTogTGlrZXdpc2UuCgkob2JmcmVlKTogTGlrZXdpc2UuCgkqIHZhcmFzbS5jIChjdXJyZW50X29ic3RhY2spOiBSZW1vdmUuCgkoc2F2ZWFibGVfb2JzdGFjayk6IFJlbW92ZS4KCShydGxfb2JzdGFjayk6IFJlbW92ZS4KCShpbW1lZF9kb3VibGVfY29uc3QpOiBEb24ndCBtZXNzIHdpdGggb2JzdGFja3MuCgkoaW1tZWRfcmVhbF9jb25zKTogTGlrZXdpc2UuCgkob3V0cHV0X2NvbnN0YW50X2RlZik6IExpa2V3aXNlLgoJKGluaXRfdmFyYXNtX3N0YXR1cyk6IFVzZSB4Y2FsbG9jLgoJKG1hcmtfcG9vbF9jb25zdGFudCk6IE1hcmsgdGhlIHBvb2wgY29uc3RhbnQgaXRzZWxmLgoJKGZyZWVfdmFyYXNtX3N0YXR1cyk6IEZyZWUgbWVtb3J5LgoJKGRlY29kZV9ydHhfY29uc3QpOiBDYWxsIGJ6ZXJvIGRpcmVjdGx5LCByYXRoZXIgdGhhbiBleHBhbmRpbmcgaXQKCWlubGluZS4KCShyZWNvcmRfcnR4X2NvbnN0KTogRG9uJ3QgbWVzcyB3aXRoIG9ic3RhY2tzLgoJKGZvcmNlX2NvbnN0X21lbSk6IExpa2V3aXNlLgoJKiBjb25maWcvYXJtL2FybS5jIChhcm1fZW5jb2RlX2NhbGxfYXR0cmlidXRlKTogUmVtb3ZlIGdnY19wCgljb25kaXRpb25hbHMuCgkoYW9mX3BpY19lbnRyeSk6IExpa2V3aXNlLgoJKiBjb25maWcvaWE2NC9pYTY0LmMgKGlhNjRfZW5jb2RlX3NlY3Rpb25faW5mbyk6IExpa2V3aXNlLgoJKiBjb25maWcvbTMyci9tMzJyLmMgKG0zMnJfZW5jb2RlX3NlY3Rpb25faW5mbyk6IExpa2V3aXNlLgoJKiBjb25maWcvcGEvcGEuYyAoc2F2ZWFibGVfb2JzdGFjayk6IFJlbW92ZS4KCShydGxfb2JzdGFjayk6IExpa2V3aXNlLgoJKGN1cnJlbnRfb2JzdGFjayk6IExpa2V3aXNlLgoJKG91dHB1dF9jYWxsKTogRG9uJ3QgbWVzcyB3aXRoIG9ic3RhY2tzLgoJKGhwcGFfZW5jb2RlX2xhYmVsKTogUmVtb3ZlIGdnY19wIGNvbmRpdGlvbmFscy4KCSogY29uZmlnL3JvbXAvcm9tcC5jIChnZXRfc3ltcmVmKTogRG9uJ3QgbWVzcyB3aXRoIG9ic3RhY2tzLgoJKiBjb25maWcvcnM2MDAwL3JzNjAwMC5jIChvdXRwdXRfdG9jKTogUmVtb3ZlIGdnY19wIGNvbmRpdGlvbmFsLgoJKHJzNjAwMF9lbmNvZGVfc2VjdGlvbl9pbmZvKTogTGlrZXdpc2UuCgkqIGNvbmZpZy9zaC9zaC5jIChnZXRfZnBzY3JfcnR4KTogTGlrZXdpc2UuCgpUaHUgT2N0IDEyIDE2OjAyOjMxIE1FVCBEU1QgMjAwMCBKYW4gSHViaWNrYSAgPGpoQHN1c2UuY3o+CgoJKiBpMzg2Lm1kIChhZGRkaTMsIHN1YmRpMyBzcGxpdHRlcnMpOiBVcGRhdGUgZm9yIG5ldyBwYXR0ZXJuLgoJKGFkZHNpM19jYywgYWRkcWkzX2NjLCBzdWJzaTNfY2MpOiBSZW1vdmUKCShhZGRzaTNfY2FycnkpOiBDYW5vbmljYWxpemUuCgkoYWRkcWlfNSk6IFJlbW92ZSAnKicuCgkoc2JiIHBhdHRlcm4pOiBDYW5vbmljYWxpemUuCgoJKiBpMzg2Lm1kIChjbXAgdG8gaW5jL2FkZCBwZWVwMik6IE5ldy4KCjIwMDAtMTAtMTIgIFJpY2hhcmQgRWFybnNoYXcgIDxyZWFybnNoYUBhcm0uY29tPgoKCSogYmItcmVvcmRlci5jIChyZW9yZGVyX2Jhc2ljX2Jsb2Nrcyk6IEFsbG9jYXRlIGFuIGF1eCBibG9jayBmb3IKCXRoZSBleGl0IGJsb2NrLgoKMjAwMC0xMC0xMiAgSm9zZXBoIFMuIE15ZXJzICA8anNtMjhAY2FtLmFjLnVrPgoKCSogZ2NjLnRleGk6IE1lcmdlIGluIGNvbnRlbnRzIG9mIFJFQURNRS5UUkFEIGFuZCBURVNUUy5GTFVOSy4KCSogUkVBRE1FLlRSQUQsIFRFU1RTLkZMVU5LOiBSZW1vdmUuCgoyMDAwLTEwLTEyICBKb3NlcGggUy4gTXllcnMgIDxqc20yOEBjYW0uYWMudWs+CgoJKiBjLWNvbW1vbi5jIChkZWNsX2F0dHJpYnV0ZXMpOiBEb24ndCBhbGxvdyBzdHJmdGltZSBmb3JtYXRzIHdpdGgKCWZpcnN0X2FyZ19udW0gbm9uemVyby4KCShjaGVja19mb3JtYXRfaW5mbyk6IFNldCB3YW50ZWRfdHlwZSBhbmQgd2FudGVkX3R5cGVfbmFtZSB0byB6ZXJvCgliZWZvcmUgdGhleSBhcmUgcG9zc2libHkgYXNzaWduZWQgYW5kIHVzZWQuCgoyMDAwLTEwLTEyICBKb3NlcGggUy4gTXllcnMgIDxqc20yOEBjYW0uYWMudWs+CgoJKiBjLWNvbW1vbi5jIChzY2FuZl9mbGFnX3NwZWNzKTogQWRkIGZsYWdzICcgYW5kIEkuCgkoc3RyZnRpbWVfZmxhZ19wYWlycyk6IERpc2FsbG93IGFueSBwYWlyIG9mIHRoZSBfLCAtIGFuZCAwIGZsYWdzLAoJb3IgdGhlIF4gYW5kICMgZmxhZ3MgdG9nZXRoZXIuCgkoc2Nhbl9jaGFyX3RhYmxlKTogSGFuZGxlIHRoZSAnIGFuZCBJIGZsYWdzLgoJKGZvcm1hdF90eXBlcyk6IEFkZCAnIGFuZCBJIGZsYWdzIGZvciBzY2FuZi4KCjIwMDAtMTAtMTIgIEpvc2VwaCBTLiBNeWVycyAgPGpzbTI4QGNhbS5hYy51az4KCgkqIGMtY29tbW9uLmMgKHByaW50X2NoYXJfdGFibGUpOiBVc2UgdGhlIHVucHJvbW90ZWQgdHlwZSBmb3IKCWxlbmd0aHMgImgiIGFuZCAiaGgiIHdpdGggY29udmVyc2lvbnMgZGlveFh1LgoJKGNoZWNrX2Zvcm1hdF90eXBlcyk6IEFwcGx5IHRoZSBkZWZhdWx0IGFyZ3VtZW50IHByb21vdGlvbnMgd2hlcmUKCXRoZSB3YW50ZWQgdHlwZSBpcyBub3QgYSBwb2ludGVyIHRhcmdldC4KCjIwMDAtMTAtMTEgIE1pY2hhZWwgTWVla3MgIDxtbWVla3NAZ251Lm9yZz4KCSAgICBKb3NlcGggUy4gTXllcnMgIDxqc20yOEBjYW0uYWMudWs+CgoJKiBjLXR5cGVjay5jIChjaGVja19tb2RpZnlfZXhwcik6IE5ldyBmdW5jdGlvbi4KCShidWlsZF9tb2RpZnlfZXhwcik6IENhbGwgaXQgaWYgd2Fybl9zZXF1ZW5jZV9wb2ludC4KCSogYy1kZWNsLmMgKHdhcm5fc2VxdWVuY2VfcG9pbnQpOiBOZXcgdmFyaWFibGUuCgkoY19kZWNvZGVfb3B0aW9uKTogSGFuZGxlIC1Xc2VxdWVuY2UtcG9pbnQgYW5kCgktV25vLXNlcXVlbmNlLXBvaW50LiAgRW5hYmxlIC1Xc2VxdWVuY2UtcG9pbnQgYXMgcGFydCBvZiAtV2FsbC4KCSogYy10cmVlLmggKHdhcm5fc2VxdWVuY2VfcG9pbnQpOiBEZWNsYXJlLgoJKiBpbnZva2UudGV4aSAoLVdzZXF1ZW5jZS1wb2ludCk6IERvY3VtZW50LgoJKiB0b3BsZXYuYyAoZG9jdW1lbnRlZF9sYW5nX29wdGlvbnMpOiBBZGQgLVdzZXF1ZW5jZS1wb2ludCBhbmQKCS1Xbm8tc2VxdWVuY2UtcG9pbnQuCglPcmlnaW5hbCB3b3JrIGJ5IE1pY2hhZWwgTWVla3MsIDE2IEp1biAxOTk4LgoKV2VkIE9jdCAxMSAwNjoxNTo0MSAyMDAwICBSaWNoYXJkIEtlbm5lciAgPGtlbm5lckB2bHNpMS51bHRyYS5ueXUuZWR1PgoKCSogdHJlZS5jIChnZXRfbmFycm93ZXIpOiBEb24ndCBsb29rIGF0IHByZWNpc2lvbiBvZiBmaWVsZCBpZgoJbm90IGxhaWQgb3V0IHlldC4KClR1ZSBPY3QgMTAgMjM6MTQ6MzMgMjAwMCAgRGVuaXMgQ2hlcnR5a292ICA8ZGVuaXNjQG92ZXJ0YS5ydT4KCgkqIGNvbmZpZy9hdnIvYXZyLmMgKHZhbGlkX21hY2hpbmVfZGVjbF9hdHRyaWJ1dGUpOiBBbGxvdyBgZXh0ZXJuJwoJZGVjbGFyYXRpb24gZm9yIGRhdGEgd2l0aCAicHJvZ21lbSIgYXR0cmlidXRlLgoKMjAwMC0xMC0wOSAgTWFyZWsgTWljaGFsa2lld2ljeiAgPG1hcmVrbUBsaW51eC5vcmcucGw+CgoJKiBjb25maWcvYXZyL2F2ci5jIChvdXRfc2hpZnRfd2l0aF9jbnQpOiBVc2UgQVMyIG1hY3JvLgoJQ29ycmVjdCBpbnNuIGxlbmd0aCBpZiBzaGlmdCBjb3VudCBpcyBhIG1lbW9yeSBvcGVyYW5kLgoJKiBjb25maWcvYXZyL2F2ci5tZDogTmV3IGRlZmluZV9wZWVwaG9sZTIgdG8gdXNlICpyZWxvYWRfaW5xaS4KCSgqaW9yaGkzX2Nsb2JiZXIpOiBDaGFuZ2UgbG84IHRvIGhpOC4KCSh6ZXJvX2V4dGVuZGhpc2kyKTogQ2hhbmdlICVCMCB0byAlQTEuCgkoYXNobGhpMywgYXNocmhpMyk6IENvcnJlY3QgaW5zbiBsZW5ndGguCgkoYW5kaGkzLCBhYnNzZjIsIGV4dGVuZHFpc2kyLCBleHRlbmRoaXNpMik6IENoYW5nZSAiY2MiCglmcm9tICJjbG9iYmVyIiB0byAic2V0X24iIGluIHNvbWUgYWx0ZXJuYXRpdmVzLgoKMjAwMC0xMC0xMCAgSmFrdWIgSmVsaW5layAgPGpha3ViQHJlZGhhdC5jb20+CgoJKiByZWxvYWQxLmMgKGNhbGN1bGF0ZV9uZWVkc19hbGxfaW5zbnMpOiBJZiBkZWxldGluZyBhbiBpbnN0cnVjdGlvbiwKCXJlbW92ZSBpdHMgaW5zbl9jaGFpbiBzdHJ1Y3R1cmUgYXMgd2VsbC4KCjIwMDAtMTAtMDkgIEouIERhdmlkIEFuZ2xpbiAgPGRhdmVAaGlhdWx5MS5oaWEubnJjLmNhPgoKCSogZGJ4b3V0LmMgKGRieG91dF9zb3VyY2VfbGluZSk6IFJlbW92ZSBleHRyYSB0YWIuCgoyMDAwLTEwLTA5ICBIYW5zLVBldGVyIE5pbHNzb24gIDxocEBiaXRyYW5nZS5jb20+CgoJKiBjb25maWcvZWxmb3MuaCAoVU5JUVVFX1NFQ1RJT04pOiBBcHBseSBTVFJJUF9OQU1FX0VOQ09ESU5HIG9uIG5hbWUuCgoyMDAwLTEwLTA5ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEBjeWdudXMuY29tPgoKCSogTWFrZWZpbGUuaW4gKExBTkdfTElCMkZVTkNTKTogUmVtb3ZlLgoJKExJQjJGVU5DUyk6IFJlbW92ZSBfcHVyZS4KCShMSUIyQUREKTogUmVtb3ZlIExBTkdfTElCMkZVTkNTLgoJKHN0YWdlX2EpOiBEb24ndCBzZXQgTEFOR19MSUIyRlVOQ1MuCgkqIGxpYmdjYzIuYyAoX190ZXJtaW5hdGUpOiBNYXJrIG5vcmV0dXJuLgoJKF9fcHVyZV92aXJ0dWFsKTogUmVtb3ZlLgoJKiBta2xpYmdjYy5pbjogUmVtb3ZlIExJQjJBREQgLnR4dCBwcm9jZXNzaW5nLgoKMjAwMC0xMC0wOSAgUmljaGFyZCBFYXJuc2hhdyAgPHJlYXJuc2hhQGFybS5jb20+CgoJKiBhcm0ubWQgKHB1c2hfbXVsdGkpOiBSZXZlcnQgdW5pbnRlbmRlZCBjaGFuZ2UuCgoyMDAwLTEwLTA5ICBSaWNoYXJkIEVhcm5zaGF3ICA8cmVhcm5zaGFAYXJtLmNvbT4KCgkqIGFybS5jOiBNaXNjZWxsYW5lb3VzIHdoaXRlIHNwYWNlIGFuZCBjb21tZW50IGNsZWFuLXVwcy4gIE5vCglmdW5jdGlvbmFsIGNoYW5nZS4KCSogYXJtLm1kOiBMaWtld2lzZS4KCjIwMDAtMTAtMDkgIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIGMtY29tbW9uLmMgKGNfZXhwYW5kX2J1aWx0aW5fcHJpbnRmKTogU2V0IHRoZSBUUkVFX1RZUEUgb2YgYSBuZXcKCVNUUklOR19DU1QgYnkgY2FsbGluZyBjb21iaW5lX3N0cmluZ3MuCgoyMDAwLTEwLTA5ICBSaWNoYXJkIEVhcm5zaGF3ICA8cmVhcm5zaGFAYXJtLmNvbT4KCgkqIGFybS5jICh0aHVtYl9leHBhbmRfbW92c3RycWkpOiBSZXdyaXRlIHRvIHN1cHBvcnQgU1NBIGZvcm0uCgkodGh1bWJfb3V0cHV0X21vdmVfbWVtX211bHRpcGxlKTogU3VwcG9ydCBuZXcgaW5zbiBmb3JtYXQuCgkqIGFybS5tZCAobW92bWVtMTJiKTogVXNlIFNTQSBjb21wYXRpYmxlIGZvcm1hdC4KCShtb3ZtZW04Yik6IExpa2V3aXNlLgoKMjAwMC0xMC0wOSAgUmljaGFyZCBFYXJuc2hhdyAgPHJlYXJuc2hhQGFybS5jb20+CgoJKiBhcm0ubWQgKHByZWRpY2FibGUpOiBOZXcgYXR0cmlidXRlLCBkZWZhdWx0IHRvICJubyIuCgkoYWxsIHBhdHRlcm5zKTogTWFyayBhcyBwcmVkaWNhYmxlIGlmIGFwcHJvcHJpYXRlLgoJKGNvbmRpdGlvbmFsIGV4ZWN1dGlvbiBzcGxpdHMpOiBTcGxpdCB1c2luZyBwcmVkaWNhdGlvbiBmb3JtYXQuCgkoZGVmaW5lX2NvbmRfZXhlYyk6IERlZmluZS4KCSogYXJtLmMgKGFybV9wcmludF9vcGVyYW5kKTogaGFuZGxlIGluc24gcHJlZGljYXRlLgoKMjAwMC0xMC0wOSAgR2VyYWxkIFBmZWlmZXIgIDxwZmVpZmVyQGRiYWkudHV3aWVuLmFjLmF0PgoKCSogUkVBRE1FLk5TMzJLOiBSZW1vdmUgZmlsZS4KCjIwMDAtMTAtMDkgIEdlcmFsZCBQZmVpZmVyICA8cGZlaWZlckBkYmFpLnR1d2llbi5hYy5hdD4KCgkqIFJFQURNRS1idWdzOiBSZW1vdmUgZmlsZS4KCjIwMDAtMTAtMDggIFBoaWxpcHAgVGhvbWFzICA8cHRob21hc0BzdXNlLmRlPgoJKiBhY2xvY2FsLm00IChBTV9HTlVfR0VUVEVYVCk6IEZpeCBub24gcG9ydGFibGUgdXNlIG9mID09IG9wZXJhdG9yCglmb3IgdGVzdC4KCSogY29uZmlndXJlOiBSZWJ1aWx0LgoKMjAwMC0xMC0wOCAgUGhpbGlwcCBUaG9tYXMgIDxwdGhvbWFzQHN1c2UuZGU+CgkqIGFjbG9jYWwubTQgKEFNX1dJVEhfTkxTKTogV2hlbiBub3QgdXNpbmcgaW5jbHVkZWQgZ2V0dGV4dCwKCWRpc2FibGUgY2F0YWxvZyBidWlsZGluZyBpZiBubyBzdWl0YWJsZSBwcm9ncmFtIHdhcyBmb3VuZC4KCU1vdmUgd2FybmluZyBtZXNzYWdlIGZyb20gaGVyZQoJKEFNX0dOVV9HRVRURVhUKTogVG8gaGVyZS4KCSogY29uZmlndXJlOiBSZWJ1aWx0LgoKMjAwMC0xMC0wOCAgUGhpbGlwcCBUaG9tYXMgIDxwdGhvbWFzQHN1c2UuZGU+CgkqIGFjbG9jYWwubTQgKEdDQ19QQVRIX1BST0cpOiBOZXcuIExpa2UgQUNfUEFUSF9QUk9HIGJ1dCB1c2VzCglkaWZmZXJlbnQgY2FjaGUgdmFyaWFibGVzLgoJKEdDQ19QQVRIX1BST0dfV0lUSF9URVNUKTogTmV3LiBMaWtlIEFNX1BBVEhfUFJPR19XSVRIX1RFU1QgYnV0Cgl1c2VzIGRpZmZlcmVudCBjYWNoZSB2YXJpYWJsZXMuCgkoQU1fV0lUSF9OTFMpOiBVc2UgR0NDX1BBVEhfUFJPRyBhbmQgR0NDX1BBVEhfUFJPR19XSVRIX1RFU1QuCgkqIGNvbmZpZ3VyZTogUmVnZW5lcmF0ZWQuCgoyMDAwLTEwLTA4ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEBjeWdudXMuY29tPgoKCSogTWFrZWZpbGUuaW4gKGxpYmdjYy5tayk6IFBhc3MgU0hMSUJfRVhULCBub3QgU0hMSUJfTElCUy4KCSogY29uZmlndXJlLmluIChzcGFyYyotKi1zb2xhcmlzKik6IFVzZSB0LXNsaWJnY2N7LC1zbGR9LgoJKiBta2xpYmdjYy5pbjogQ29uc2lkZXIgU0hMSUJfTElOSyB0aGUgZW50aXJlIHNobGliIGJ1aWxkIGNvbW1hbmQuCglVc2UgU0hMSUJfRVhULgoKCSogY29uZmlnL3QtbGludXggKFNITElCX0VYVCk6IE5ldy4KCShTSExJQl9MSU5LKTogVXNlIHRoZSBlbnRpcmUgYnVpbGQgY29tbWFuZCwgd2l0aCBzdWJzdGl0dXRpb25zLgoJKFNITElCX0xJQlMpOiBSZW1vdmUuCgkqIGNvbmZpZy9hbHBoYS90LW9zZjQ6IExpa2V3aXNlLgoJKiBjb25maWcvbWlwcy90LWlyaXM2OiBMaWtld2lzZS4KCSogY29uZmlnL3NwYXJjL3Qtc29sMjogTGlrZXdpc2UsIGJ1dCBtb3ZlIHNobGliIHN0dWZmLi4uCgkqIGNvbmZpZy9zcGFyYy90LXNsaWJnY2Mtc2xkOiAuLi5oZXJlLgoJKiBjb25maWcvc3BhcmMvdC1zbGliZ2NjOiBOZXcgZmlsZS4KCjIwMDAtMTAtMDggIEpvc2VwaCBTLiBNeWVycyAgPGpzbTI4QGNhbS5hYy51az4KCgkqIHRtLnRleGkgKElOVE1BWF9UWVBFLCBVSU5UTUFYX1RZUEUpOiBEZWZpbmUuCgkqIGMtY29tbW9uLmggKGVudW0gY190cmVlX2luZGV4KTogQWRkIENUSV9JTlRNQVhfVFlQRSBhbmQKCUNUSV9VSU5UTUFYX1RZUEUuCgkoaW50bWF4X3R5cGVfbm9kZSwgdWludG1heF90eXBlX25vZGUpOiBEZWZpbmUuCgkqIGMtY29tbW9uLmMgKGRlY2xfYXR0cmlidXRlcyk6IElmIHBlZGFudGljLCB3YXJuIGlmIGBtb2RlJwoJYXR0cmlidXRlcyBjcmVhdGUgYSB0eXBlIHdpZGVyIHRoYW4gaW50bWF4X3QuCgkoVF9JTSwgVF9VSU0pOiBEZWZpbmUgcHJvcGVybHkuCgkqIGMtZGVjbC5jIChJTlRNQVhfVFlQRSwgVUlOVE1BWF9UWVBFKTogRGVmaW5lIGlmIG5vdCBhbHJlYWR5CglkZWZpbmVkLgoJKGluaXRfZGVjbF9wcm9jZXNzaW5nKTogSW5pdGlhbGl6ZSBpbnRtYXhfdHlwZV9ub2RlIGFuZAoJdWludG1heF90eXBlX25vZGUuCgkqIGMtbGV4LmMgKGxleF9udW1iZXIpOiBXaGVuIHBlZGFudGljIGFuZCB3YXJuaW5nIGZvciBpbnRlZ2VyCgljb25zdGFudHMgdGhhdCBhcmUgdG9vIGxhcmdlLCBpbiBDOTkgbW9kZSB3YXJuIGZvciB0aG9zZSB0aGF0IGhhdmUKCWEgdHlwZSB3aWRlciB0aGFuIGxvbmcgbG9uZy4KCjIwMDAtMTAtMDggIEpvc2VwaCBTLiBNeWVycyAgPGpzbTI4QGNhbS5hYy51az4KCgkqIGMtY29tbW9uLmMgKEZNVF9GTEFHX0FSR19DT05WRVJULCBGTVRfRkxBR19TQ0FORl9BX0tMVURHRSwKCUZNVF9GTEFHX0ZBTkNZX1BFUkNFTlRfT0spOiBEZWZpbmUuCgkoZm9ybWF0X2NoYXJfaW5mbyk6IEFkZCBmbGFnICI0IiB0byBjb21tZW50LgoJKGZvcm1hdF9mbGFnX3NwZWMsIGZvcm1hdF9mbGFnX3BhaXIpOiBOZXcgc3RydWN0dXJlcy4KCShmb3JtYXRfa2luZF9pbmZvKTogQWRkIGFkZGl0aW9uYWwgZmllbGRzIHRvIGNvbnRyb2wgZm9ybWF0CgljaGVja2luZy4KCShwcmludGZfZmxhZ19zcGVjcywgcHJpbnRmX2ZsYWdfcGFpcnMsIHNjYW5mX2ZsYWdfc3BlY3MsCglzY2FuZl9mbGFnX3BhaXJzLCBzdHJmdGltZV9mbGFnX3NwZWNzLCBzdHJmdGltZV9mbGFnX3BhaXJzKTogTmV3CglhcnJheXMuCgkodGltZV9jaGFyX3RhYmxlKTogVXNlICI0IiBmbGFnIHRvIGhhbmRsZSAlRXkuCgkoZm9ybWF0X3R5cGVzKTogQWRkIGVudHJpZXMgZm9yIG5ldyBmaWVsZHMuCgkoZ2V0X2ZsYWdfc3BlYyk6IE5ldyBmdW5jdGlvbi4KCShjaGVja19mb3JtYXRfaW5mbyk6IEluY3JlYXNlIHNpemUgb2YgZmxhZ19jaGFyc1tdIHRvIDI1Ni4KCUNvbnRyb2wgZm9ybWF0IGNoZWNraW5nIHVzaW5nIHRoZSBuZXcgZmllbGRzIG9mIGEgZm9ybWF0X2tpbmRfaW5mbwoJYW5kIHRoZSBuZXcgdGFibGVzOyByZW1vdmUgYWxsIGNvbmRpdGlvbmFscyBvbiBwcmludGZfZm9ybWF0X3R5cGUsCglzY2FuZl9mb3JtYXRfdHlwZSBvciBzdHJmdGltZV9mb3JtYXRfdHlwZS4gIEhhbmRsZSBhbGwgZGV0YWlscyBvZgoJYmFkIGNvbWJpbmF0aW9ucyBvZiBmbGFncyAoaW5jbHVkaW5nIHdpZHRoLCBwcmVjaXNpb24gYW5kIHN0cmZ0aW1lCgltb2RpZmllcnMpIHRocm91Z2ggZGF0YSByYXRoZXIgdGhhbiBhZCBob2MgY29kZS4gIEhhbmRsZSBhbGwKCWRldGFpbHMgb2Ygc3RhbmRhcmQgdmVyc2lvbnMgaW4gd2hpY2ggZmxhZ3MgYXBwZWFyZWQgdGhyb3VnaAoJZGF0YS4gIFVzZSB0aGUgIjQiIGZsYWcuCgoyMDAwLTEwLTA3ICBXaWxsIENvaGVuICA8d2NvaGVuQHJlZGhhdC5jb20+LCBLYXp1IEhpcmF0YSAgPGthenVAaHhpLmNvbT4KCgkqIGNvbmZpZy9oODMwMC9oODMwMC5tZDogUmVtb3ZlIHRoZSBtZW1vcnkgYWx0ZXJuYXRpdmUgYW5kIGNvcnJlY3QKCXRoZSBpbnNuIGxlbmd0aHMgaW4gdGhlIHRlbXBsYXRlcyBmb3Igc2lnbiBleHRlbnNpb24gYW5kIHplcm8KCWV4dGVuc2lvbi4KCjIwMDAtMTAtMDcgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgoJKiBjYWxscy5jIChleHBhbmRfY2FsbCk6IERpc2FsbG93IHNpYmNhbGxzIHRvIG5vcmV0dXJuIGZ1bmN0aW9ucy4KCSogZmxvdy5jIChtYWtlX2VkZ2VzKTogUmV2ZXJ0IGxhc3QgY2hhbmdlLgoKCSogY29uZmlnL2FscGhhL2FscGhhLmggKEZVTkNUSU9OX09LX0ZPUl9TSUJDQUxMKTogRG9uJ3QgdGVzdAoJVFJFRV9USElTX1ZPTEFUSUxFLgoJKiBjb25maWcvcGEvcGEuaCAoRlVOQ1RJT05fT0tfRk9SX1NJQkNBTEwpOiBMaWtld2lzZS4KCjIwMDAtMTAtMDYgIERhdmlkIE8nQnJpZW4gIDxvYnJpZW5AZHJhZ29uLm51eGkuY29tPgoKCSogY29uZmlnL2FscGhhL2VsZi5oOiBTdGFuZGFyZGl6ZSB0aGUgZm9ybWF0dGluZy4KCjIwMDAtMTAtMDYgIERhdmlkIE8nQnJpZW4gIDxvYnJpZW5ARnJlZUJTRC5vcmc+CgoJKiBjb25maWcvYWxwaGEvZWxmLmg6IFByb3RlY3QgdGhlIEFTTV9PVVRQVVRfSURFTlQgZGVmaW5pdGlvbiB3aXRoIGFuCgkjdW5kZWYuCgoyMDAwLTEwLTA2ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEBjeWdudXMuY29tPgoKCSogZnVuY3Rpb24uYyAoZGlkZGxlX3JldHVybl92YWx1ZSk6IEV4YW1pbmUKCWN1cnJlbnRfZnVuY3Rpb25fcmV0dXJuX3J0eCBpbnN0ZWFkIG9mIHRoZSBERUNMX1JFU1VMVC4KCShleHBhbmRfZnVuY3Rpb25fZW5kKTogSGFuZGxlIHJlbG9hZGluZyBERUNMX1JFU1VMVCBmcm9tIG1lbW9yeQoJaW50byBhIGhhcmQgcmVnaXN0ZXIuICBRdWVyeSBwcm9tb3RlX21vZGUgZm9yIHNpZ24gb2YgbWlzbWF0Y2hlZAoJbW9kZXMuCgoyMDAwLTEwLTA2ICBWbGFkaW1pciBNYWthcm92ICA8dm1ha2Fyb3ZAdG91Y2htZS50b3JvbnRvLnJlZGhhdC5jb20+CgoJKiBoYWlmYS1zY2hlZC5jIChzY2hlZHVsZV9pbnNucyk6IEZpeCB0eXBvIGluIGZyZWVpbmcKCWZvcndhcmRfZGVwZW5kZW5jeV9jYWNoZS4KCjIwMDAtMTAtMDYgIEFsZXhhbmRyZSBPbGl2YSAgPGFvbGl2YUByZWRoYXQuY29tPgoKCSogY29uZmlnL3NoL3NoLm1kIChjYWxsaV9wY3JlbCwgY2FsbF92YWx1ZWlfcGNyZWwpOiBBZGQKCWBUQVJHRVRfU0gyJyBhcyBhIGNvbmRpdGlvbi4KCjIwMDAtMTAtMDYgIFZsYWRpbWlyIE1ha2Fyb3YgIDx2bWFrYXJvdkB0b3VjaG1lLnRvcm9udG8ucmVkaGF0LmNvbT4KCgkqIGhhaWZhLXNjaGVkLmMgKGFudGlfZGVwZW5kZW5jeV9jYWNoZSwgb3V0cHV0X2RlcGVuZGVuY3lfY2FjaGUsCglmb3J3YXJkX2RlcGVuZGVuY3lfY2FjaGUpOiBOZXcgdmFyaWFibGVzLgoJKGFkZF9kZXBlbmRlbmNlLCByZW1vdmVfZGVwZW5kZW5jZSk6IFVzZSBhbnRpX2RlcGVuZGVuY3lfY2FjaGUgYW5kCglvdXRwdXRfZGVwZW5kZW5jeV9jYWNoZS4KCShjb21wdXRlX2Jsb2NrX2ZvcndhcmRfZGVwZW5kZW5jZXMpOiBVc2UgZm9yd2FyZF9kZXBlbmRlbmN5X2NhY2hlLgoJKHNjaGVkdWxlX2luc25zKTogQWxsb2NhdGUgYW5kIGZyZWUgbWVtb3J5IGZvciBhbnRpL291dHB1dC9mb3J3YXJkCglkZXBlbmRlbmNpZXMgY2FjaGVzLgoKMjAwMC0xMC0wNiAgQWxleGFuZHJlIE9saXZhICA8YW9saXZhQHJlZGhhdC5jb20+CgoJKiBjb25maWcvc2gvc2gubWQgKGNhbGwsIGNhbGxfdmFsdWUpOiBVc2UgYFRBUkdFVF9TSDInIGluc3RlYWQgb2YKCWAhIFRBUkdFVF9TSDEnLiAgUmVpbmRlbnQuCgoyMDAwLTEwLTA2ICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBidWlsdGlucy5jIChpc192YWxpZF9wcmludGZfYXJnbGlzdCwgZXhwYW5kX2J1aWx0aW5fcHJpbnRmKToKCU1vdmUgZnVuY3Rpb25zIGZyb20gaGVyZSAuLi4KCgkqIGMtY29tbW9uLmMgKGlzX3ZhbGlkX3ByaW50Zl9hcmdsaXN0LCBjX2V4cGFuZF9idWlsdGluX3ByaW50Zik6CgkuLi4gdG8gaGVyZS4KCShjX2V4cGFuZF9idWlsdGluKTogTmV3IGZ1bmN0aW9uLgoJKGluaXRfZnVuY3Rpb25fZm9ybWF0X2luZm8pOiBEb24ndCBzZXQgYGNoZWNrX2Z1bmN0aW9uX2Zvcm1hdF9wdHInLgoJKGNfY29tbW9uX25vZGVzX2FuZF9idWlsdGlucyk6IFNldCBidWlsdF9pbl9jbGFzcyB0eXBlIGZvcgoJcHJpbnRmL19fYnVpbHRpbl9wcmludGYgdG8gQlVJTFRfSU5fRlJPTlRFTkQuCgkoY19leHBhbmRfZXhwcik6IEhhbmRsZSBDQUxMX0VYUFJzIHRoYXQgYXJlIGZyb250LWVuZCBidWlsdGlucy4KCgkqIGMtY29tbW9uLmggKGJ1aWxkX2Z1bmN0aW9uX2NhbGwpOiBEZWNsYXJlLgoKCSogZXhwci5jIChleHBhbmRfZXhwcik6IFBhc3MgYnVpbHRpbnMgd2l0aCBjbGFzcyBCVUlMVF9JTl9GUk9OVEVORAoJdG8gYGxhbmdfZXhwYW5kX2V4cHInIHJhdGhlciB0aGFuIGBleHBhbmRfYnVpbHRpbicuCgoJKiB0cmVlLmMgKGNoZWNrX2Z1bmN0aW9uX2Zvcm1hdF9wdHIpOiBEZWxldGUuCgoJKiB0cmVlLmggKGNoZWNrX2Z1bmN0aW9uX2Zvcm1hdF9wdHIpOiBMaWtld2lzZS4KCjIwMDAtMTAtMDYgIEhhbnMtUGV0ZXIgTmlsc3NvbiAgPGhwQGJpdHJhbmdlLmNvbT4KCgkqIGR3YXJmMm91dC5jIChidWlsZF9jZmFfbG9jKTogQ29ycmVjdCB0byB1c2UgRFdfT1BfcmVneCBvcgoJRFdfT1BfYnJlZ3ggd2hlbiBjZmEtPnJlZyA+IDMxLgoKCSogZnJhbWUtZHdhcmYyLmMgKGRlY29kZV9zdGFja19vcCkgW2Nhc2UgRFdfT1BfcmVneF06IEFkZCBtaXNzaW5nCglicmVhay4KCjIwMDAtMTAtMDUgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgoJKiBjLWRlY2wuYyAod2Fybl9taXNzaW5nX25vcmV0dXJuKTogUmVtb3ZlLgoJKGNfZXhwYW5kX2JvZHkpOiBEb24ndCBzZXQgb3IgY2hlY2sgY2FuX3JlYWNoX2VuZC4KCSogYy10cmVlLmggKHdhcm5fbWlzc2luZ19ub3JldHVybik6IE1vdmUgLi4uCgkqIGZsYWdzLmg6IC4uLiBoZXJlLgoJKGNhbl9yZWFjaF9lbmQpOiBSZW1vdmUuCgkqIGZsb3cuYyAoY2hlY2tfZnVuY3Rpb25fcmV0dXJuX3dhcm5pbmdzKTogTmV3LgoJKG1ha2VfZWRnZXMpOiBObyBlZGdlIHRvIGV4aXQgZm9yIG5vcmV0dXJuIHNpYmNhbGxzLgoJKiBmdW5jdGlvbi5jIChleHBhbmRfZnVuY3Rpb25fZW5kKTogU2F2ZSB0aGUgcmV0dXJuIHZhbHVlCgljbG9iYmVyIGluc3RydWN0aW9uLgoJKG1hcmtfZnVuY3Rpb25fc3RhdHVzKTogTWFyayBpdC4KCSogZnVuY3Rpb24uaCAoc3RydWN0IGZ1bmN0aW9uKTogQWRkIHhfY2xvYmJlcl9yZXR1cm5faW5zbi4KCSoganVtcC5jIChjYW5fcmVhY2hfZW5kKTogUmVtb3ZlLgoJKGNhbGN1bGF0ZV9jYW5fcmVhY2hfZW5kKTogUmVtb3ZlLgoJKGp1bXBfb3B0aW1pemVfMSk6IERvbid0IGNhbGwgaXQuCgkqIG91dHB1dC5oIChjaGVja19mdW5jdGlvbl9yZXR1cm5fd2FybmluZ3MpOiBEZWNsYXJlLgoJKiB0b3BsZXYuYyAod2Fybl9taXNzaW5nX25vcmV0dXJuKTogTW92ZSBmcm9tIGMtZGVjbC5jCgkocmVzdF9vZl9jb21waWxhdGlvbik6IENhbGwgY2hlY2tfZnVuY3Rpb25fcmV0dXJuX3dhcm5pbmdzLgoKMjAwMC0xMC0wNSAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAY3lnbnVzLmNvbT4KCgkqIE1ha2VmaWxlLmluIChOTV9GT1JfVEFSR0VUKTogTmV3LgoJKGxpYmdjYy5tayk6IFBhc3MgU0hMSUJfTUtNQVAsIFNITElCX01BUEZJTEVTLgoJKGxpYmdjYy5hLCBzdG1wLW11bHRpbGliKTogUGFzcyBOTV9GT1JfVEFSR0VULgoJKiBta2xpYmdjYy5pbjogSWYgU0hMSUJfTUtNQVAsIGJ1aWxkIGxpYmdjYy5tYXAuICBEZXBlbmQgdGhlCglzaGFyZWQgbGlicmFyeSBidWlsZCBvbiB0aGF0IGFuZCBFWFRSQV9NVUxUSUxJQl9QQVJUUy4KCSogbWttYXAtZmxhdC5hd2s6IE5ldyBmaWxlLgoJKiBta21hcC1zeW12ZXIuYXdrOiBOZXcgZmlsZS4KCSogbGliZ2NjLXN0ZC52ZXI6IE5ldyBmaWxlLgoJKiBjb25maWcvbGliZ2NjLWdsaWJjLnZlcjogTmV3IGZpbGUuCgkqIGNvbmZpZy9pYTY0L2xpYmdjYy1pYTY0LnZlcjogTmV3IGZpbGUuCgkqIGNvbmZpZy90LWxpbnV4IChTSExJQl9NS01BUCwgU0hMSUJfTUFQRklMRVMpOiBOZXcuCgkoU0hMSUJfTElOSyk6IEFkZCAtLXZlcnNpb24tc2NyaXB0LgoJKiBjb25maWcvaWE2NC90LWlhNjQgKFNITElCX01BUEZJTEVTKTogQWRkIGxpYmdjYy1pYTY0LnZlci4KCSogY29uZmlnL21pcHMvdC1pcmlzNiAoU0hMSUJfTUtNQVAsIFNITElCX01BUEZJTEVTKTogTmV3LgoJKiBjb25maWcvc3BhcmMvdC1zb2wyIChTSExJQl9NS01BUCwgU0hMSUJfTUFQRklMRVMpOiBOZXcuCgkoU0hMSUJfTElOSyk6IEFkZCAtTS4KCjIwMDAtMTAtMDUgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgoJKiBNYWtlZmlsZS5pbiAoTElCMkZVTkNTKTogQWRkIF9jbHouCgkqIGxpYmdjYzIuYyAoX19mZnNkaTIpOiBVc2UgY291bnRfdHJhaWxpbmdfemVyb3MuCgkoX19jbHpfdGFiKTogUHV0IGluIGl0cyBvd24gdW5pdCwgbm9uLXN0YXRpYy4KCSogbGliZ2NjMi5oOiBBbHdheXMgaW5jbHVkZSBsb25nbG9uZy5oLgoKCSogbG9uZ2xvbmcuaCBbYWxwaGFdIChjb3VudF9sZWFkaW5nX3plcm9zKTogVXNlIGNtcGJnZSB3aXRoCglhIHplcm8gaW5zdGVhZCBvZiAtMS4KCShjb3VudF90cmFpbGluZ196ZXJvcyk6IExpa2V3aXNlLgoKMjAwMC0xMC0wNSAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAY3lnbnVzLmNvbT4KCgkqIGNvbmZpZy9hbHBoYS9hbHBoYS5jIChhbHBoYV9lbWl0X3NldGNjKTogRG9uJ3Qgc3dhcCBHVCB0ZXN0cwoJd2hlbiBzZWNvbmQgb3AxIGlzIGNvbnN0MF9ydHguICBWYWxpZGF0ZSBvcDAgYXMgYSByZWdpc3Rlci4KCSogY29uZmlnL2FscGhhL2FscGhhLm1kIChzZXRjY19pbnRlcm5hbCk6IERvbid0IGFsbG93IGNvbnN0YW50cwoJaW4gdGhlIGZpcnN0IGFyZ3VtZW50IG9mIHRoZSBjb21wYXJlLgoJKHNldGNjX3N3YXBwZWRfaW50ZXJuYWwpOiBMaWtld2lzZS4KCShzZXRuZV9pbnRlcm5hbCk6IExpa2V3aXNlLgoKMjAwMC0xMC0wNSAgR2VvZmYgS2VhdGluZyAgPGdlb2Zma0BjeWdudXMuY29tPgoKCSogdHJlZS5jICh0cmVlX3NpemUpOiBOZXcgZnVuY3Rpb24gc3BsaXQgb3V0IG9mIGNvcHlfbm9kZS4KCShtYWtlX25vZGUpOiBSZW1vdmUgb2JzdGFjayBoYW5kbGluZy4gIFVzZSB0cmVlX3NpemUuCgkoY29weV9ub2RlKTogVXNlIHRyZWVfc2l6ZS4KCSogdHJlZS5oOiBQcm90b3R5cGUgdHJlZV9zaXplLgoKMjAwMC0xMC0wNSAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAY3lnbnVzLmNvbT4KCgkqIGRpYWdub3N0aWMuYyAob3V0cHV0X2Zvcm1hdCk6IEFkZCBtaXNzaW5nIGJyZWFrLgoKMjAwMC0xMC0wNSAgSmltIFdpbHNvbiAgPHdpbHNvbkBjeWdudXMuY29tPgoKCSogZnVuY3Rpb24uYyAoZml4dXBfdmFyX3JlZnNfMSwgY2FzZSBTRVQpOiBXaGVuIGdlbl9tb3ZlX2luc24gcmV0dXJucyBhCglTRVFVRU5DRSwgY2FsbCBlbWl0X2luc25fYmVmb3JlLCBjb3B5IFBBVFRFUk4gYW5kIFJFR19OT1RFUyBvZiBsYXN0CglzZXF1ZW5jZSBpbnNuIHRvIElOU04sIGFuZCBkZWxldGUgbGFzdCBzZXF1ZW5jZSBpbnNuLgoKMjAwMC0xMC0wNSAgUGhpbCBFZHdhcmRzICA8cG1lQGdjYy5nbnUub3JnPgoKCSogZ2NjLmMgKG1haW4pOiBJbmNsdWRlIGdlbmVyYXRlZCBjb25maWdhcmdzLmggaGVhZGVyCglhbmQgdXNlIGFyZ3VtZW50cyBpbiAnLXYnIG91dHB1dC4KClRodSBPY3QgIDUgMTY6MTY6NTcgMjAwMCAgUmljaGFyZCBLZW5uZXIgIDxrZW5uZXJAdmxzaTEudWx0cmEubnl1LmVkdT4KCgkqIGdjYy5jOiBNb3ZlIGRhdGEgb24gcHJlZml4ZXMgZm9yd2FyZCBpbiBmaWxlIGFuZCByZW9yZ2FuaXplLgoJKG1kX2V4ZWNfcHJlZml4LCBtZF9zdGFydGZpbGVfcHJlZml4LCBtZF9zdGFydGZpbGVfcHJlZml4XzEpOgoJQWx3YXlzIGRlZmluZSwgYnV0IG1ha2UgbnVsbCBpZiBubyB2YWx1ZS4KCShzdGF0aWNfc3BlY3MpOiBBZGQgIm1kX2V4ZWNfcHJlZml4IiwgIm1kX3N0YXJ0ZmlsZV9wcmVmaXgiLAoJYW5kICJtZF9zdGFydGZpbGVfcHJlZml4XzEiLgoJKG1haW4pOiBDaGVjayB3aGV0aGVyIG1kX2V4ZWNfcHJlZml4IGFuZCB0aGUgb3RoZXJzIGFyZSB0aGUKCW51bGwgc3RyaW5nIHJhdGhlciB0aGFuIHdoZXRoZXIgdGhlIG1hY3JvIGlzIGRlZmluZWQuCgpUaHUgT2N0ICA1IDE5OjA0OjE4IDIwMDAgIEoib3JuIFJlbm5lY2tlIDxhbXlsYWFyQHJlZGhhdC5jby51az4KCgkqIChjb252ZXJ0X21vdmUpOiBVc2UgemVyb19leHRlbmRwc2lzaTIgdG8gZG8gYW4gdW5zaWduZWQgZXh0ZW5zaW9uCglmcm9tIFBTSW1vZGUgdG8gU0ltb2RlLgoKMjAwMC0xMC0wNSAgSmFrdWIgSmVsaW5layAgPGpha3ViQHJlZGhhdC5jb20+CgoJKiBlbWl0LXJ0bC5jIChnZW5fbG93cGFydF9jb21tb24pIFtSRUFMX0FSSVRITUVUSUNTXTogRml4IGNvbnZlcnNpb24KCWZyb20gZmxvYXQgdG8gaW50ZWdyYWwgbW9kZSB3aXRoIEhPU1RfQklUU19QRVJfV0lERV9JTlQgNjQuCgkqIGR3YXJmMm91dC5jIChhZGRfY29uc3RfdmFsdWVfYXR0cmlidXRlKTogRGl2aWRlIGJ5IDQsIG5vdAoJc2l6ZW9mKGxvbmcpLgoKVGh1IE9jdCAgNSAwOTozMTozMSAyMDAwICBSaWNoYXJkIEtlbm5lciAgPGtlbm5lckB2bHNpMS51bHRyYS5ueXUuZWR1PgoKCSogZm9sZC1jb25zdC5jIChmb2xkLCBjYXNlIE1JTlVTX0VYUFIsIGNhc2UgRVFfRVhQUik6IFBlcmZvcm0KCW5lZ2F0aW9uIGluIHByb3BlciB0eXBlLmEKCjIwMDAtMTAtMDQgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgoJKiBjb25maWd1cmUuaW4gKGVuYWJsZS1zaGFyZWQpOiBOZXcuCgkqIE1ha2VmaWxlLmluIChMSUJHQ0NfREVQUyk6IERlcGVuZCBvbiBFWFRSQV9QQVJUUyBhcyB3ZWxsLgoJKGxpYmdjYy5tayk6IFBhc3MgU0hMSUJfTElOSywgU0hMSUJfTElCUywgU0hMSUJfTVVMVElMSUIgdG8gbWtsaWJnY2MuCgkqIG1rbGliZ2NjLmluOiBVc2UgdGhlbSB0byBsaW5rIHNoYXJlZCBhIGxpYmdjYy4KCSogY29uZmlnL3QtbGludXggKFNITElCX0xJTkssIFNITElCX0xJQlMpOiBOZXcuCgkqIGNvbmZpZy9hbHBoYS90LWllZWUgKFNITElCX01VTFRJTElCKTogTmV3LgoJKiBjb25maWcvbWlwcy90LWlyaXM2IChTSExJQl9MSU5LLCBTSExJQl9MSUJTKTogTmV3LgoJKiBjb25maWcvc3BhcmMvdC1zb2wyIChTSExJQl9MSU5LLCBTSExJQl9MSUJTKTogTmV3LgoKCSogY29uZmlndXJlLmluIChhbHBoYS1vc2YqKTogVXNlIHQtb3NmIGFuZCB4LW9zZi4KCSogY29uZmlnL2FscGhhL3Qtb3NmOiBOZXcgZmlsZS4KCSogY29uZmlnL2FscGhhL3Qtb3NmNDogTmV3IGZpbGUuCgkqIGNvbmZpZy9hbHBoYS94LW9zZjogTmV3IGZpbGUuCgkqIGNvbmZpZy9hbHBoYS94LWFscGhhOiBSZW1vdmUgZmlsZS4KCjIwMDAtMTAtMDQgIFdpbGwgQ29oZW4gIDx3Y29oZW5AcmVkaGF0LmNvbT4KCgkqIGMtdHlwZWNrLmMgKHByb2Nlc3NfaW5pdF9lbGVtZW50KTogQWRkZWQgd2FybmluZyBmb3IgemVyby1sZW5ndGgKCWFycmF5LgoKCSogZXh0ZW5kLnRleGkgKFplcm8gTGVuZ3RoKTogU3RhdGUgdGhhdCBzdGF0aWMgaW5pdGlhbGl6ZXJzIGZvcgoJemVyby1sZW5ndGggYXJyYXlzIGFyZSBub3QgYWxsb3dlZC4KCk1vbiBPY3QgIDIgMTQ6NTA6MTQgTUVUIERTVCAyMDAwICBKYW4gSHViaWNrYSAgPGpoQHN1c2UuY3o+CgoJKiBydGxhbmFsLmMgKHNpbmdsZV9zZXRfMSk6IERvIG5vdCByZXF1aXJlIFVTRSBhbmQgQ0xPQkJFUnMKCXRvIGNvbWUgbGFzdC4KCjIwMDAtMTAtMDMgIE1pY2hhZWwgSGF5ZXMgIDxtLmhheWVzQGVsZWMuY2FudGVyYnVyeS5hYy5uej4KCgkqIGNvbmZpZy9mbG9hdC1jNHguaDogTmV3LgoJKiBjb25maWd1cmUuaW4gKGM0eC0qKTogU2V0IGZsb2F0X2Zvcm1hdCB0byBjNHguCgkqIGNvbmZpZ3VyZTogUmVnZW5lcmF0ZS4KCjIwMDAtMTAtMDIgIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIGNvbmZpZ3VyZS5pbiAoc3BhcmMtKi1zb2xhcmlzMiopOiBEaXNhYmxlIDMyLXRvLTY0IGNyb3NzCgljb21waWxhdGlvbiBmb3Igc29sYXJpcyB2ZXJzaW9ucyAyLjcgYW5kIGdyZWF0ZXIuCgoyMDAwLTEwLTAyICBNYXJjIEVzcGllIDxlc3BpZUBvcGVuYnNkLm9yZz4KCgkqIGNvbmZpZy9hbHBoYS5oIChXT1JEX1NXSVRDSF9UQUtFU19BUkcpOiBhZGQgLXJwYXRoIHRvIGRlZmF1bHQsCglpbnN0ZWFkIG9mIHJlZGVmaW5pbmcgZnJvbSBzY3JhdGNoLgoKMjAwMC0xMC0wMiAgRGF2aWQgTydCcmllbiAgPG9icmllbkBkcmFnb24ubnV4aS5jb20+CgoJKiBjb25maWcvaTM4Ni9mcmVlYnNkLmggKE5PX1BST0ZJTEVfQ09VTlRFUlMpOiBEZWZpbmUuCgoyMDAwLTEwLTAxICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogY29uZmlnL25zMzJrL2dlbml4Lmg6IFJlbW92ZS4KCSogY29uZmlnL25zMzJrL3gtZ2VuaXg6IExpa2V3aXNlLgoJKiBjb25maWcvbnMzMmsveG0tZ2VuaXguaDogTGlrZXdpc2UuCgkqIGNvbmZpZy9meDgwOiBSZW1vdmUgYWxsIGZpbGVlIGluIGRpcmVjdG9yeS4KCSogY29uZmlnL3B5cjogTGlrZXdpc2UuCgkqIGNvbmZpZy90YWhvZTogTGlrZXdpc2UuCgkqIGNvbmZpZy9nbWljcm86IExpa2V3aXNlLgoJKiBjb25maWcvc3B1cjogTGlrZXdpc2UuCgkqIGNvbmZpZ3VyZS5pbjogUmVtb3ZlIGNvbmZpZ3VyeSBiaXRzIGZvciBhYm92ZSB0YXJnZXRzLgoJKiBjb25maWd1cmU6IFJlZ2VuZXJhdGVkLgoKCSogY29uZmlndXJlLmluOiBEb24ndCBjb25maWd1cmUgY2hpbGwgYnkgZGVmYXVsdC4KCSogY29uZmlndXJlOiBSZWdlbmVyYXRlZC4KCgkqIGMtZGVjbC5jIChjX2V4cGFuZF9ib2R5KTogRG9uJ3QgZ2VuZXJhdGUgUlRMIGlmIGZsYWdfc3ludGF4X29ubHkuCgkobGFuZ19tYXJrX2ZhbHNlX2xhYmVsX3N0YWNrKTogUmVtb3ZlLgoJKiBjLWxleC5jIChpbml0X2NfbGV4KTogQWRkIGZpbGVfaW5mb190cmVlIGFzIEdDIHJvb3QuICBBbGxvY2F0ZQoJPHRvcCBsZXZlbD4gc3RyaW5nIGluIEdDIGFyZWEuCgkobWFya19zcGxheV90cmVlX25vZGUpOiBOZXcgZnVuY3Rpb24uCgkobWFya19zcGxheV90cmVlKTogTGlrZXdpc2UuCgkqIGV4Y2VwdC5jIChtYXJrX2VoX3N0YXR1cyk6IE9ubHkgY2FsbCBsYW5nX21hcmtfZmFsc2VfbGFiZWxfc3RhY2sKCWlmIGl0IGV4aXN0cy4KCSogZ2djLWNhbGxiYWNrcy5jIChsYW5nX21hcmtfZmFsc2VfbGFiZWxfc3RhY2spOiBSZW1vdmUuCgkqIGdnYy1jb21tb24uYyAobGFuZ19tYXJrX2ZhbHNlX2xhYmVsX3N0YWNrKTogQ2hhbmdlIHR5cGUuCgkqIGdnYy5oIChnZ2NfYWxsb2Nfc3RyaW5nKTogQWRkIGNvbW1lbnQuCgkoZ2djX3N0cmR1cCk6IE5ldyBmdW5jdGlvbi4KClNhdCBTZXAgMjMgMTk6MTA6MjAgMjAwMCAgRGVuaXMgQ2hlcnR5a292ICA8ZGVuaXNjQG92ZXJ0YS5ydT4KCgkqIGNvbmZpZy9hdnIvYXZyLmggKEJSQU5DSF9DT1NUKTogRGVmaW5lIGFzIDAuCgoJKiBjb25maWcvcGRwMTEvcGRwMTEuYzogI2luY2x1ZGUgInRyZWUuaCIgYWRkZWQuCgoyMDAwLTA5LTMwICBNYXJlayBNaWNoYWxraWV3aWN6ICA8bWFyZWttQGxpbnV4Lm9yZy5wbD4KCgkqIGNvbmZpZy9hdnIvYXZyLmMgKGFzaGxoaTNfb3V0LCBhc2hsc2kzX291dCwgYXNocmhpM19vdXQsCglhc2hyc2kzX291dCwgbHNocmhpM19vdXQsIGxzaHJzaTNfb3V0KTogT3B0aW1pemUgbW9yZSBjYXNlcwoJd2l0aCBrbm93biBzaGlmdCBjb3VudC4KCSogY29uZmlnL2F2ci9hdnIubWQgKGFzaGxzaTMsIGFzaHJzaTMsIGxzaHJzaTMpOgoJTmV3IGFsdGVybmF0aXZlIGZvciBzaGlmdCBjb3VudCAyIHdpdGggbm8gc2NyYXRjaCByZWdpc3Rlci4KCShhc2hsaGkzLCBhc2hsc2kzKTogQ2hhbmdlICJjYyIgYXR0cmlidXRlIGZyb20gImNsb2JiZXIiIHRvCgkic2V0X24iIGZvciBzaGlmdCBjb3VudHMgMSBhbmQgMi4KCjIwMDAtMDktMzAgIEdlb2ZmIEtlYXRpbmcgIDxnZW9mZmtAY3lnbnVzLmNvbT4KCgkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLm1kIChtb3ZzaV90b19jcik6IFJlbW92ZSB0aGUgVVNFLiAgQ2FsY3VsYXRlCgl0aGUgbWFzayB2YWx1ZSBmcm9tIHRoZSBpbmRpdmlkdWFsIFNFVCBvcGVyYXRpb25zLgoJKHJldHVybl9pbnRlcm5hbF9zaSk6IE1vdmUgdGhlIFVTRSBhZnRlciB0aGUgUkVUVVJOLgoJKHJldHVybl9pbnRlcm5hbF9kaSk6IExpa2V3aXNlLgoJKHJldHVybl9hbmRfcmVzdG9yZV9mcHJlZ3Nfc2kpOiBMaWtld2lzZS4KCShyZXR1cm5fYW5kX3Jlc3RvcmVfZnByZWdzX2RpKTogTGlrZXdpc2UuCgkocmV0dXJuX2VoX3NpKTogTGlrZXdpc2UuCgkocmV0dXJuX2VoX2RpKTogTGlrZXdpc2UuCgkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLmMgKG10Y3JmX29wZXJhdGlvbik6IERvbid0IGxvb2sgZm9yLAoJb3IgY2hlY2ssIHRoZSBVU0UuCgkocnM2MDAwX2VtaXRfcHJvbG9ndWUpOiBEb24ndCBlbWl0IHRoZSBVU0UgZm9yIG1vdnNpX3RvX2NyLgoJRG9uJ3QgZ2VuZXJhdGUgYSBQQVJBTExFTCBhcm91bmQgYSBzaW5nbGUgb3BlcmF0aW9uIG1vdnNpX3RvX2NyLgoJR2VuZXJhdGUgdGhlIFJFVFVSTiBmaXJzdCBpbiBhbnkgUEFSQUxMRUxzLgoKCSogcnRsYW5hbC5jIChzaW5nbGVfc2V0XzEpOiBVc2UgZmF0YWxfaW5zbiB0byBkaXNwbGF5IHRoZQoJaW52YWxpZCBpbnNuLiAgQ2hlY2sgZm9yIG1vcmUgY2FzZXMgd2hlbiBhIFVTRSBvciBDTE9CQkVSIG9jY3VycwoJYmVmb3JlIGEgU0VULgoJKiBNYWtlZmlsZS5pbjogVXBkYXRlIGRlcGVuZGVuY2llcyBmb3IgcnRsYW5hbC5vLgoKMjAwMC0wOS0zMCAgSm9zZXBoIFMuIE15ZXJzICA8anNtMjhAY2FtLmFjLnVrPgoKCSogaTM4Ni5jOiBNb3ZlIGluY2x1ZGUgb2YgImNvbmZpZy5oIiB0byBiZWZvcmUgdGhhdCBvZiA8c2V0am1wLmg+LgoKMjAwMC0wOS0zMCAgSm9zZXBoIFMuIE15ZXJzICA8anNtMjhAY2FtLmFjLnVrPgoKCSogYy10cmVlLnRleGksIGNvbnRyaWIudGV4aSwgZ2NjLnRleGksIGluc3RhbGwudGV4aSwgaW52b2tlLnRleGk6CglDb25zaXN0ZW50bHkgdXNlIEBlbWFpbCBmb3IgZm9ybWF0dGluZyBlbWFpbCBhZGRyZXNzZXMuCgoyMDAwLTA5LTI5ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEBjeWdudXMuY29tPgoKCSogY3NlLmMgKG5vdHJlZ19jb3N0KTogTmV3IGFyZ3VtZW50IG91dGVyLgoJKENPU1QpOiBQYXNzIGluIFNFVCB0byBub3RyZWdfY29zdAoJKENPU1RfSU4pOiBOZXcuCgkoZm9sZF9ydHgpOiBVc2UgQ09TVF9JTi4gIFByZWZlciBjb25zdGFudHMgd2hlbiBjb3N0cwoJYXJlIHRoZSBzYW1lLgoKMjAwMC0wOS0yOSAgRGF2aWQgRWRlbHNvaG4gIDxlZGVsc29obkBnbnUub3JnPgoKCSogZml4aW5jL2luY2xoYWNrLmRlZiAoYnJva2VuX2NhYnMpOiBHZW5lcmFsaXplIHJlZ2V4LgoJKiBmaXhpbmMvZml4aW5jbC54OiBSZWdlbmVyYXRlLgoKMjAwMC0wOS0yOSAgRnJhbnogU2lybCAgPEZyYW56LlNpcmwta2VybmVsQGxhdXRlcmJhY2guY29tPgoKCSogbG9vcC5jIChjaGVja19maW5hbF92YWx1ZSk6IEEgR0lWIGlzIG5vdCByZXBsYWNlYWJsZSBpZiB1c2VkCgliZWZvcmUgc2V0LgoKRnJpIFNlcCAyOSAxMDowNDoxMiAyMDAwICBKZWZmcmV5IEEgTGF3ICAobGF3QGN5Z251cy5jb20pCgoJKiB2ZXJzaW9uLmM6IEJ1bXAgdG8gZ2NjLTIuOTcuCgpGcnMgU2VwIDI5IDEzOjM3OjU5IE1FVCBEU1QgMjAwMCAgSmFuIEh1Ymlja2EgIDxqaEBzdXNlLmN6PgoKCSogZmluYWwuYyAoZmluYWxfc2Nhbl9pbnNuKTogUmVtb3ZlIGV4dHJhIGV4dHJhY3RfaW5zbiBjYWxsOwoJVXNlIGNhY2hpbmcgZm9yIGNvbnN0cmFpbl9vcGVyYW5kcy4KCShjbGVhbnVwX3N1YnJlZ19vcGVyYW5kcyk6IFVzZSBjYWNoaW5nIGZvciBleHRyYWN0X2luc24uCgkqIHJlY29nLmMgKGNvbnN0cmFpbl9vcGVyYW5kc19jYWNoZWQpOiBOZXcuCgkqIHJlY29nLmggKGNvbnN0cmFpbl9vcGVyYW5kc19jYWNoZWQpOiBEZWNsYXJlLgoJKiBpMzg2LmMgKGl4ODZfYXR0cl9sZW5ndGhfaW1tZWRpYXRlX2RlZmF1bHQsCglpeDg2X2F0dHJfbGVuZ3RoX2FkZHJlc3NfZGVmYXVsdCwgaXg4Nl9hZ2lfZGVwZW5kYW50KTogQ2FjaGUKCWV4dHJhY3RfaW5zbiBjYWxsLgoKCSogcmVjb2cuYyAoYXNtX25vcGVyYW5kcyk6IFR3ZWFrLgoJKGV4dHJhY3RfaW5zbik6IERvIG5vdCBjYWxsIGFzbV9ub3BlcmFkcyBmb3Igbm9uLWFzbSBpbnN0cnVjdGlvbnMuCgpGcmkgU2VwIDI5IDEzOjIwOjQyIE1FVCBEU1QgMjAwMCAgSmFuIEh1Ymlja2EgIDxqaEBzdXNlLmN6PgoKCSogcmVjb2cuYyAocmVjb2dfbWVtb2l6ZWQpOiBSZW5hbWUgdG8gcmVjb2dfbWVtb2l6ZWRfMS4KCSogcmVjb2cuaCAocmVjb2dfbWVtb2l6ZWQpOiBSZW5hbWUgdG8gcmVjb2dfbWVtb2l6ZWRfMS4KCShyZWNvZ19tZW1vaXplZCk6IE5ldyBtYWNyby4KCSogcnRsLmggKHNpbmdsZV9zZXQpOiBSZW5hbWUgdG8gc2luZ2xlX3NldF8xCgkoc2luZ2xlX3NldCk6IE5ldyBtYWNyby4KCSogcnRsYW5hbC5jIChzaW5nbGVfc2V0KTogUmVuYW1lIHRvIHNpbmdsZV9zZXRfMTsgIGV4cGVjdCBjbG9iYmVycwoJdG8gYmUgbGFzdC4KCgkqIGkzODYubWQgKHN0cm1vdnNpXzEsIHN0cm1vdmhpXzEgc3RybW92cWlfMSk6CglEbyBub3QgdXNlIG1hdGNoX2R1cCBvZiBpbnB1dCBvcGVyYW5kcyBhdCBvdXRwdXRzLgoJVXNlIHJlZ2lzdGVyX29wZXJhbmQgZm9yIG1lbW9yeSBleHByZXNzaW9uLgoJKHJlcF9tb3ZzaSk6IFB1dCB1c2UgbGFzdCwgY2Fub25pY2FsaXplLgoJVXNlIHJlZ2lzdGVyX29wZXJhbmQgZm9yIG1lbW9yeSBleHByZXNzaW9uLgoJKHJlcF9tb3ZxaSk6IFB1dCB1c2UgbGFzdC4KCVVzZSByZWdpc3Rlcl9vcGVyYW5kIGZvciBtZW1vcnkgZXhwcmVzc2lvbi4KCShzdHJzZXRzaV8xLCBzdHJzZXRfaGlfMSwgc3Ryc2V0cWlfMSk6IERvIG5vdCB1c2UgbWF0Y2hfZHVwCglvZiBpbnB1dCBvcGVyYW5kcyBhdCBvdXRwdXRzLiAgVXNlIHJlZ2lzdGVyX29wZXJhbmQgZm9yIG1lbW9yeQoJZXhwcmVzc2lvbi4KCShyZXBfc3Rvc3NpKTogUHV0IHVzZSBsYXN0OyBjYW5vbmljYWxpemU7IGZpeCBtYXRjaF9kdXAgaW4KCXRoZSBhZGRyZXNzIGV4cHJlc3Npb24KCShyZXBfc3Rvc3FpKTogTGlrZXdpc2UuCgkobWVtY21wIGV4cGFuZGVyKTogVXBkYXRlIGNhbGxzLgoJKGNtcHN0cnNpX256XzEsIGNtcHN0cnNpXzEsIHN0cmxlbnNpXzEpOiBBdm9pZCBtYXRjaF9kdXBzIGluCgl0aGUgY2xvYmJlcnMuCgoJKiBpMzg2Lm1kIChmcF9qY2NfMywgZnBfamNjXzQsIGpwX2ZjY181KTogaWZfdGhlbl9lbHNlIG9wZXJhbmQgaXMKCVZPSURtb2RlLgoJKGZwX2pjY180LCBmcF9qY2NfMyk6IFJlZnVzZSB1bm9yZGVyZWQgY29tcGFyaXNvbnMuCgoyMDAwLTA5LTI4ICBEYXZpZCBPJ0JyaWVuICA8b2JyaWVuQEZyZWVCU0Qub3JnPgoKCSogY29uZmlnL2kzODYvZnJlZWJzZC1hb3V0Lmg6IE5ldywgRnJlZUJTRCBhLm91dCBjb25maWcgZmlsZS4KCUNvbnRhaW5zIHRoZSBvbGQgY29udGVudHMgb2YgY29uZmlnL2kzODYvZnJlZWJzZC5oCgkqIGNvbmZpZy9pMzg2L2ZyZWVic2QuaDogTm93IHRoZSBFTEYgcmF0aGVyIHRoYW4gYS5vdXQgY29uZmlnIGZpbGUuCglDb250YWlucyB0aGUgb2xkIGNvbnRlbnRzIG9mIGNvbmZpZy9pMzg2L2ZyZWVic2QtZWxmLmgKCSogY29uZmlnL2kzODYvZnJlZWJzZC1lbGYuaDogUmV0aXJlIHRoaXMgZmlsZSAtLSBjb250ZW50cyBtb3ZlZCB0bwoJY29uZmlnL2kzODYvZnJlZWJzZC5oLgoJKiBjb25maWd1cmUuaW46IEFkanVzdCBmb3IgYWJvdmUgY2hhbmdlcy4KCSogcG8vUE9URklMRVMuaW46IExpa2V3aXNlLgoJKiBwby9lbl9HQi5wbzogTGlrZXdpc2UuCgkqIHBvL2djYy5wb3Q6IExpa2V3aXNlLgoJKiBjb25maWd1cmU6IFJlYnVpbHQuCgoyMDAwLTA5LTI4ICBGcmFueiBTaXJsICA8RnJhbnouU2lybC1rZXJuZWxAbGF1dGVyYmFjaC5jb20+CgoJKiBkb2xvb3AuYyAoZG9sb29wX21vZGlmeSk6IFByZXZlbnQgZGVsZXRlX2luc24oKSBmcm9tCglkZWxldGluZyB0b28gbXVjaC4gIFByZWZlciBsb29wLT50b3Agb3ZlciBsb29wLT5zdGFydCBhcwoJdGFyZ2V0IGZvciB0aGUgbmV3IEpVTVAgaW5zbi4KCShkb2xvb3BfdmFsaWRfcCk6IElnbm9yZSBsb29wIHdpdGggZXhpdF9jb3VudCAhPSAwLgoKMjAwMC0wOS0yOCAgUGhpbGlwcCBUaG9tYXMgIDxwdGhvbWFzQHN1c2UuZGU+CgoJKiBpbnZva2UudGV4aSAoaTM4NiBPcHRpb25zKTogQWRkIGF0aGxvbiB0byB0YWJsZSBvZiBwb3NzaWJsZQoJY2hvaWNlcyBmb3IgLW1jcHU9LgoKMjAwMC0wOS0yOCAgR2FicmllbCBEb3MgUmVpcyAgPGdkckBjb2Rlc291cmNlcnkuY29tPgoKCSogZGlhZ25vc3RpYy5oIChvdXRwdXRfY2xlYXJfbWVzc2FnZV90ZXh0KTogTmV3IGZ1bmN0aW9uLgoJKG91dHB1dF9tZXNzYWdlX3RleHQpOiBOZXcgbWFjcm8uCgoJKiBkaWFnbm9zdGljLmMgKGNsZWFyX3RleHRfaW5mbyk6IFJlbmFtZSB0bwoJb3V0cHV0X2NsZWFyX21lc3NhZ2VfdGV4dC4KCShvdXRwdXRfY2xlYXIpOiBBZGp1c3QuCgkob3V0cHV0X2ZpbmlzaCk6IFJlbmFtZSB0byBvdXRwdXRfZmluYWxpemVfbWVzc2FnZS4gIFR3ZWVrLgoJKG91dHB1dF90b19zdHJlYW0pOiBBZGp1c3QuCgoyMDAwLTA5LTI4ICBOZWlsIEJvb3RoICA8bmVpbGJAZWFydGhsaW5nLm5ldD4KCgkqIGNwcGVycm9yLmMgKF9jcHBfYmVnaW5fbWVzc2FnZSk6ICBEbyB0aGUgdGVzdCBmb3Igc3VwcHJlc3Npb24KCW9mIHdhcm5pbmdzIGFuZCBwZWRhbnRpYyB3YXJuaW5ncyBiZWZvcmUgdGhlICJpcyBhIHdhcm5pbmcgYW4KCWVycm9yIiB0ZXN0cy4KCSogY3BwaW5pdC5jIChjcHBfaGFuZGxlX29wdGlvbik6IFJlbW92ZSBzdXJwbHVzIFxuLgoJKiBjcHBsZXguYyAoT05fUkVTVF9BUkcpOiBEZWxldGUuCgkoc2tpcF9ibG9ja19jb21tZW50KTogSW5pdGlhbGl6ZSBwcmV2Yy4KCShwYXJzZV9hcmdzKTogSW1wcm92ZSBlcnJvciBtZXNzYWdlcy4KCShtYXliZV9wYXN0ZV93aXRoX25leHQpOiBVc2UgQ09OVEVYVF9WQVJBUkdTIHJhdGhlcgoJdGhhbiBPTl9SRVNUX0FSRy4KCSogY3BwbGliLmMgKGNwcF9wdXNoX2J1ZmZlcik6IEZpeCBncmFtbWFyIGluIG1lc3NhZ2UuCgkqIGNwcG1haW4uYyAobWFpbik6IFNldCBjYWxsYmFja3MgZm9yICNpZGVudCBhbmQgI3ByYWdtYQoJb25seSBpZiBub19vdXRwdXQgb3B0aW9uIGlzIGZhbHNlLgoJKGRvX3ByYWdtYV9pbXBsZW1lbnRhdGlvbik6IE9ubHkgY2FsbCB0aGUgI3ByYWdtYSBoYW5kbGVyCglpZiBpdCBpcyBzZXQgaW4gdGhlIGNwcF9yZWFkZXIgc3RydWN0dXJlLgoKV2VkIFNlcCAyNyAxNDowMDowNyAyMDAwICBEb25hbGQgTGluZHNheSAgPGRsaW5kc2F5QGN5Z251cy5jb20+CgoJKiBpbnRlZ3JhdGUuYyAoY29weV9pbnNuX2xpc3QpOiBpZiBhbiBpZ25vcmVkIHJldHVybiB2YWx1ZQoJaXMgYmVpbmcgY2xvYmJlcmVkLCBza2lwIGNsb25pbmcgdGhhdCBpbnRvIHRoZSBpbmxpbmUgY29weS4KCjIwMDAtMDktMjcgIEpvc2VwaCBTLiBNeWVycyAgPGpzbTI4QGNhbS5hYy51az4KCgkqIGV4dGVuZC50ZXhpLCBpbnZva2UudGV4aSwgZ2NjLnRleGksIGluc3RhbGwudGV4aTogQ29uc2lzdGVudGx5Cgl1c2UgQHVyZWYgZm9yIGZvcm1hdHRpbmcgVVJMcy4KCjIwMDAtMDktMjcgIE1hcmsgRWxicmVjaHQgIDxzbm93YmFsbDNAYmlnZm9vdC5jb20+CgoJKiBjb25maWcvaTM4Ni9kamdwcC5oIChVTklRVUVfU0VDVElPTik6IENvbnN0aWZ5IHRoZSB2YXJpYWJsZXMKCW5hbWUgYW5kIHByZWZpeC4KClR1ZSAyNi1TZXAtMjAwMCAxODoyNTozOCBCU1QgIE5laWwgQm9vdGggIDxuZWlsYkBlYXJ0aGxpbmcubmV0PgoKCSogZ2NjLmMgKGNwcF9vcHRpb25zKTogQWRkIHNwZWMgZm9yIC1mdGFic3RvcD0uCgkoaW52b2tlX2FzKTogTmV3IHNwZWMgdGhhdCBoYW5kbGVzIGludm9raW5nIGFzLgoJVXBkYXRlIHNwZWNzIHRvIGhhbmRsZSAtc2F2ZS10ZW1wcyBhbmQgLXRyYWRpdGlvbmFsLgoJKiBjaC9sYW5nLXNwZWNzLmgsIGYvbGFuZy1zcGVjcy5oLCBqYXZhL2xhbmctc3BlY3MuaDoKCVVzZSBpbnZva2VfYXMuCgkqIGNwL2xhbmctc3BlY3MuaCwgb2JqYy9sYW5nLXNwZWNzLmg6IFVwZGF0ZSB0byB1c2UKCWludm9rZV9hcywgYW5kIGhhbmRsZSAtc2F2ZS10ZW1wcyBhbmQgLXRyYWRpdGlvbmFsIChpZgoJYXBwcm9wcmlhdGUpLgoKMjAwMC0wOS0yNiAgSmFrdWIgSmVsaW5layAgPGpha3ViQHJlZGhhdC5jb20+CgoJKiBjb25maWcvc3BhcmMvc3BhcmMuYyAoc3BhcmNfZW1pdF9zZXRfY29uc3Q2NCk6IERvbid0IGFib3J0IHdoZW4KCW9wMCBpcyBhIFNVQlJFRy4KCShmdW5jdGlvbl9hcmdfc2xvdG5vKTogQWNjZXB0IFRJbW9kZS9DVEltb2RlLgoJKiBjb25maWcvc3BhcmMvc3BhcmMuaCAoTUlOX1VOSVRTX1BFUl9XT1JEKTogSWYgSU5fTElCR0NDMiBkZWZpbmUKCXRvIFVOSVRTX1BFUl9XT1JELgoKMjAwMC0wOS0yNiAgTWljaGFlbCBIYXllcyAgPG1oYXllc0BjeWdudXMuY29tPgoKCSogZmxvdy5jIChmbG93X2xvb3BfcHJlX2hlYWRlcl9zY2FuKTogUHVudCBpZiBsb29wIGVudGVycwoJZnJvbSBlbnRyeSBibG9jay4KCjIwMDAtMDktMjUgIEppbSBXaWxzb24gIDx3aWxzb25AY3lnbnVzLmNvbT4KCgkqIGNvbmZpZy9pYTY0L2lhNjQuaCAoSU5ERVhfUkVHX0NMQVNTKTogRGVmaW5lIHRvIEdFTkVSQUxfUkVHUy4KCShSRUdOT19PS19GT1JfSU5ERVhfUCk6IERlZmluZSB0byBSRUdOT19PS19GT1JfQkFTRV9QLgoJKExFR0lUSU1BVEVfQUREUkVTU19ESVNQKTogVXNlIExFR0lUSU1BVEVfQUREUkVTU19SRUcuCgkoUkVHX09LX0ZPUl9JTkRFWCk6IERlZmluZSB0byBSRUdfT0tfRk9SX0JBU0VfUC4KClR1ZSAyNi1TZXAtMjAwMCAwMDoxNjoyMiBCU1QgIE5laWwgQm9vdGggIDxuZWlsYkBlYXJ0aGxpbmcubmV0PgoKCSogY3BwbGV4LmMgKHBhcnNlX2FyZ3MpOiBEb24ndCBzZXQgVk9JRF9SRVNUIGZsYWcuCgkoQ09OVEVYVF9WQVJBUkdTKTogTmV3IGZsYWcuCgkobWF5YmVfcGFzdGVfd2l0aF9uZXh0KTogU2V0IGNvbnRleHQgZWFybGllciBpbiBsb29wLiAgVXNlCglpdC4gIERvIHZhcmFyZ3MgdGVzdCB3aXRoIENPTlRFWFRfVkFSQVJHUyBmbGFnLgoJKHB1c2hfYXJnX2NvbnRleHQpOiBTZXQgQ09OVEVYVF9WQVJBUkdTIGZsYWcgaWYgd2UncmUKCXB1c2hpbmcgYW4gYXJndW1lbnQgY29udGV4dCBmb3IgYSB2YXJhcmdzIGFyZ3VtZW50LgoJKiBjcHBsaWIuaCAoVk9JRF9SRVNUKTogRGVsZXRlLgoJKiBnY2MuZGcvY3BwL3ZhcmFyZzEuYzogQWRkIHRlc3QgY2FzZS4KCjIwMDAtMDktMjUgIEJyYW5rbyBDaWJlaiAgPGJyYW5rby5jaWJlakBoZXJtZXMuc2k+CgoJKiBmbGFncy5oOiAgRGVjbGFyZSB3YXJuaW5nIGZsYWcgd2Fybl9zeXN0ZW1faGVhZGVycy4KCSogdG9wbGV2LmM6ICBEZWZpbmUgaXQuCgkoV19vcHRpb25zKTogQWRkIG9wdGlvbiAtV3N5c3RlbS1oZWFkZXJzLgoJKiBkaWFnbm9zdGljLmMgKGNvdW50X2Vycm9yKTogVGVzdCB3YXJuX3N5c3RlbV9oZWFkZXJzLgoJKiBpbnZva2UudGV4aTogIEFkZCBkZXNjcmlwdGlvbiBmb3IgLVdzeXN0ZW0taGVhZGVycy4KCSogY3BwbGliLmggKGNwcF9vcHRpb25zKTogTmV3IG1lbWJlciB3YXJuX3N5c3RlbV9oZWFkZXJzLgoJKiBjcHBoYXNoLmggKENQUF9QRURBTlRJQywgQ1BQX1dUUkFESVRJT05BTCk6IERvbid0IHRlc3QKCUNQUF9JTl9TWVNURU1fSEVBREVSLgoJKiBjcHBsaWIuYyAoZG9faW1wb3J0LCBkb19wcmFnbWFfb25jZSk6IExpa2V3aXNlLgoJKiBjcHBlcnJvci5jIChfY3BwX2JlZ2luX21lc3NhZ2UpOiBUZXN0IHdhcm5fc3lzdGVtX2hlYWRlcnMKCWFuZCBDUFBfSU5fU1lTVEVNX0hFQURFUi4KCSogY3BwaW5pdC5jIChoYW5kbGVfb3B0aW9uKTogUmVjb2duaXplIC1Xc3lzdGVtX2hlYWRlcnMuCgkocHJpbnRfaGVscCk6IERlc2NyaWJlIC1Xc3lzdGVtX2hlYWRlcnMuCgkqIGNwcGxleC5jIChsZXhfbGluZSk6IFJlb3JnYW5pemUgY29uZGl0aW9uIHNvIHRoYXQgd2FybmluZ3MKCWFib3V0IEMrKyBjb21tZW50cyBpbiBzeXN0ZW0gaGVhZGVycyBjYW4gYmUgZW5hYmxlZC4gUmVtb3ZlCglsYWJlbCBkb19saW5lX2NvbW1lbnQuCgpNb24gMjUtU2VwLTIwMDAgMjM6Mzg6MjcgQlNUICBOZWlsIEJvb3RoICA8bmVpbGJAZWFydGhsaW5nLm5ldD4KCgkqIGNwcGxleC5jIChzYXZlX2NvbW1lbnQpOiBPbmx5IHN0b3JlIHRoZSBpbml0aWFsICcvJwoJbm93LgoJKGxleF90b2tlbik6IENvbWJpbmUgaGFuZGxpbmcgb2YgdGhlIHR3byBjb21tZW50IHR5cGVzLgoJUGFzcyBldmVyeXRoaW5nIGJ1dCB0aGUgaW5pdGlhbCAnLycgdG8gc2F2ZV9jb21tZW50LgoKTW9uIDI1LVNlcC0yMDAwIDIzOjMxOjQ1IEJTVCAgTmVpbCBCb290aCAgPG5laWxiQGVhcnRobGluZy5uZXQ+CgoJKiBjcHBoYXNoLmggKF9jcHBfZGlncmFwaF9zcGVsbGluZ3MsIF9jcHBfcHJvY2Vzc19kaXJlY3RpdmUsCglfY3BwX2Nhbl9wYXN0ZSk6IE5ldyBsaWJyYXJ5LWludGVybmFsIHByb3RvdHlwZXMuCgkqIGNwcGxleC5jIChkdW1wX3BhcmFtX3NwZWxsaW5nLCBvdXRwdXRfbGluZV9jb21tYW5kLAoJb3V0cHV0X3Rva2VuLCBjcHBfc2Nhbl9idWZmZXIsIGNwcF9zY2FuX2J1ZmZlcl9ub291dHB1dCwKCWNwcF9wcmludGYsIGNwcF9vdXRwdXRfbGlzdCk6IE1vdmUgdG8gY3Bwb3V0cHV0LmMuCgkocHJvY2Vzc19kaXJlY3RpdmUsIGNhbl9wYXN0ZSwgZGlncmFwaF9zcGVsbGluZ3MpOiBBZGQgX2NwcF8gcHJlZml4LgoJKiBjcHBtYWNyby5jIChkdW1wX21hY3JvX2FyZ3MsIGNwcF9kdW1wX2RlZmluaXRpb24pIE1vdmUgdG8KCWNwcG91dHB1dC5jLgoJKiBjcHBvdXRwdXQuYyAoZHVtcF9tYWNyb19hcmdzLCBjcHBfZHVtcF9kZWZpbml0aW9uLCBvdXRwdXRfdG9rZW4sCglkdW1wX3BhcmFtX3NwZWxsaW5nLCBvdXRwdXRfbGluZV9jb21tYW5kLCBjcHBfc2Nhbl9idWZmZXIsCgljcHBfc2Nhbl9idWZmZXJfbm9vdXRwdXQsIGNwcF9wcmludGYsIGNwcF9vdXRwdXRfbGlzdCk6IE1vdmVkCglmcm9tIGVsc2V3aGVyZS4KCSogTWFrZWZpbGUuaW46IEFkZCBjcHBvdXRwdXQuYy4KCSogcG8vUE9URklMRVMuaW46IEFkZCBjcHBvdXRwdXQuYy4KCjIwMDAtMDktMjUgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgoJKiBjb25maWcvaWE2NC9pYTY0LmMgKGlhNjRfcHJpbnRfb3BlcmFuZCk6IERlZmluZSAnZScgYXMgNjQtbi4KCSogY29uZmlnL2lhNjQvaWE2NC5tZCAocm90cnNpMyk6IEFsbG93IHZhcmlhYmxlIHJvdGF0ZXM7IGRvbid0CglzcGxpdCB1bnRpbCBhZnRlciByZWxvYWQuCgkocm90bHNpMywgcm90bGRpMyk6IE5ldy4KCjIwMDAtMDktMjUgIEdhYnJpZWwgRG9zIFJlaXMgIDxnZHJAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGRpYWdub3N0aWMuYyAob3V0cHV0X2xhc3RfcG9zaXRpb24pOiBEZWZpbmUuCgkoc2V0X3JlYWxfbWF4aW11bV9sZW5ndGgpOiBUd2Vlay4KCSogZGlhZ25vc3RpYy5oIChvdXRwdXRfbGFzdF9wb3NpdGlvbik6IERlY2xhcmUuCgoyMDAwLTA5LTI1ICBLYXp1IEhpcmF0YSAgPGthenVAaHhpLmNvbT4KCgkqIGNvbmZpZy9pMzg2L2kzODYuYzogRml4IGZvcm1hdHRpbmcuCgoyMDAwLTA5LTI0ICBBbGFuIExlaG90c2t5ICA8YWxlaG90c2t5QGN5Z251cy5jb20+CgoJKiBlbWl0LXJ0bC1jIChnZW5fbG93cGFydF9jb21tb24pOiBBY2NlcHQgbm9uLXBhcmFkb3hpY2FsIFNVQlJFRyB3aGVuCglVTklUU19QRVJfV09SRCBpcyBzbWFsbC4KCjIwMDAtMDktMjUgIEpvc2VwaCBTLiBNeWVycyAgPGpzbTI4QGNhbS5hYy51az4KCgkqIGMtY29tbW9uLmMgKGZvcm1hdF9jaGFyX2luZm8pOiBBZGQgZmxhZ3MyOyB1cGRhdGUgY29tbWVudHMuCgkocHJpbnRfY2hhcl90YWJsZSwgc2Nhbl9jaGFyX3RhYmxlLCB0aW1lX2NoYXJfdGFibGUpOiBTcGxpdCBzb21lCglmbGFncyBvdXQgaW50byBmbGFnczIuCgkoY2hlY2tfZm9ybWF0X2luZm8pOiBVc2UgZmxhZ3MyIGZvciB0aG9zZSBmbGFncywgZm9yIGlkZW50aWZ5aW5nCgl0aGUgaW5pdGlhbCBjaGFyYWN0ZXIgb2YgYSBzY2FuZiBzY2Fuc2V0LCBhbmQgZm9yIGlkZW50aWZ5aW5nCglwcmludGYgZm9ybWF0cyB3aGVyZSB0aGUgJzAnIGZsYWcgaXMgaWdub3JlZCB3aXRoIHByZWNpc2lvbi4KCjIwMDAtMDktMjUgIEhhbnMtUGV0ZXIgTmlsc3NvbiAgPGhwQGF4aXMuY29tPgoKCUNoYW5nZXMgYmVsb3cgbWFya2VkICJoZXJlIiBhZGQgVEFCcyBvbiBlaXRoZXIgb3IgYm90aCBzaWRlcywKCWNvdmVyaW5nIHN0YXJ0IG9mIGxpbmUsIHVwIHRvIGFueSBvcGVyYW5kIGZvciBhbGwgbm90ZWQgLipBU00uKl9PUAoJZGVmaW5pdGlvbnMuICBBbGwgY2FsbGVycyBjaGFuZ2VkLgoJKiB0bS50ZXhpOiBNYWtlIGRvY3VtZW50ZWQgKl9BU00uKl9PUDpzIGluY2x1ZGUgc3BhY2luZwoJKFRFWFRfU0VDVElPTl9BU01fT1AsIERBVEFfU0VDVElPTl9BU01fT1AsIFNIQVJFRF9TRUNUSU9OX0FTTV9PUCwKCUJTU19TRUNUSU9OX0FTTV9PUCwgU0hBUkVEX0JTU19TRUNUSU9OX0FTTV9PUCwgSU5JVF9TRUNUSU9OX0FTTV9PUCwKCUFTTV9CWVRFX09QLCBGSU5JX1NFQ1RJT05fQVNNX09QLCBFSF9GUkFNRV9TRUNUSU9OX0FTTV9PUCwKCUFTTV9TVEFCU19PUCwgQVNNX1NUQUJEX09QLCBBU01fU1RBQk5fT1ApLgoJRml4IHR5cG9zIGluIGRlc2NyaXB0aW9uIGZvciBMT05HX0xPTkdfVFlQRV9TSVpFIGFuZAoJRklOSV9TRUNUSU9OX0FTTV9PUC4KCSogY3J0c3R1ZmYuYyAoQ1RPUlNfU0VDVElPTl9BU01fT1AsIERUT1JTX1NFQ1RJT05fQVNNX09QKTogRXhwbGFpbgoJd2h5IHRoZXNlIGRlZmF1bHRzIGRvbid0IGhhdmUgbGVhZGluZyBzcGFjaW5nLgoJKiBkYnhvdXQuYyAoQVNNX1NUQUJTX09QLCBBU01fU1RBQk5fT1ApOiBIZXJlLgoJKiBkd2FyZjJvdXQuYyAoVU5BTElHTkVEX1NIT1JUX0FTTV9PUCwgVU5BTElHTkVEX0lOVF9BU01fT1AsCglVTkFMSUdORURfRE9VQkxFX0lOVF9BU01fT1AsIFNFQ1RJT05fQVNNX09QLCBBU01fQllURV9PUCk6IEhlcmUuCgkqIGR3YXJmb3V0LmMgKEZJTEVfQVNNX09QLCBWRVJTSU9OX0FTTV9PUCwKCVVOQUxJR05FRF9TSE9SVF9BU01fT1AsIFVOQUxJR05FRF9JTlRfQVNNX09QLCBBU01fQllURV9PUCwKCVBVU0hTRUNUSU9OX0FTTV9PUCwgUE9QU0VDVElPTl9BU01fT1ApOiBIZXJlLgoJKiBkZWZhdWx0cy5oIChBU01fU1RBQkRfT1AsIEVIX0ZSQU1FX1NFQ1RJT05fQVNNX09QKTogSGVyZS4KCSogdmFyYXNtLmMgKEFTTV9TVEFCU19PUCk6IEhlcmUuCgkqIHhjb2Zmb3V0LmggKEFTTV9TVEFCU19PUCk6IEhlcmUuCgkqIGNvbmZpZy9lbGZvcy5oIChJREVOVF9BU01fT1AsIEFTTV9CWVRFX09QLCBTRVRfQVNNX09QLAoJU0tJUF9BU01fT1AsIEFMSUdOX0FTTV9PUCwgQ09NTU9OX0FTTV9PUCwgTE9DQUxfQVNNX09QLAoJSU5UX0FTTV9PUCwgQVNDSUlfREFUQV9BU01fT1AsIFRZUEVfQVNNX09QLCBTSVpFX0FTTV9PUCwKCVNUUklOR19BU01fT1ApOiBIZXJlLgoJKiBjb25maWcvZnJlZWJzZC5oIChJREVOVF9BU01fT1ApOiBIZXJlLgoJKiBjb25maWcvbGludXgtYW91dC5oIChTRVRfQVNNX09QKTogSGVyZS4KCSogY29uZmlnL2xpbnV4LmggKFNFVF9BU01fT1ApOiBIZXJlLgoJKiBjb25maWcvbHlueC5oIChDVE9SU19TRUNUSU9OX0FTTV9PUCwgRFRPUlNfU0VDVElPTl9BU01fT1AsCglJTlRfQVNNX09QKTogSGVyZS4KCSogY29uZmlnL25ldGJzZC5oIChUWVBFX0FTTV9PUCwgU0laRV9BU01fT1AsIFNFVF9BU01fT1ApOiBIZXJlLgoJKiBjb25maWcvbmV4dHN0ZXAuaCAoRUhfRlJBTUVfU0VDVElPTl9BU01fT1AsIEFMSUdOX0FTTV9PUCk6IEhlcmUuCgkqIGNvbmZpZy9vcGVuYnNkLmggKFRZUEVfQVNNX09QLCBTSVpFX0FTTV9PUCwgU0VUX0FTTV9PUCk6IEhlcmUuCgkqIGNvbmZpZy9wc29zLmggKENUT1JTX1NFQ1RJT05fQVNNX09QLCBEVE9SU19TRUNUSU9OX0FTTV9PUCwKCUlOVF9BU01fT1ApOiBIZXJlLgoJKiBjb25maWcvcHR4NC5oIChJREVOVF9BU01fT1AsIEFTTV9CWVRFX09QLCBTRVRfQVNNX09QLAoJU0tJUF9BU01fT1AsIEFMSUdOX0FTTV9PUCwgQ09NTU9OX0FTTV9PUCwgTE9DQUxfQVNNX09QLAoJSU5UX0FTTV9PUCwgQVNDSUlfREFUQV9BU01fT1AsIENPTlNUX1NFQ1RJT05fQVNNX09QLAoJQ1RPUlNfU0VDVElPTl9BU01fT1AsIERUT1JTX1NFQ1RJT05fQVNNX09QLCBJTklUX1NFQ1RJT05fQVNNX09QLAoJRklOSV9TRUNUSU9OX0FTTV9PUCwgVFlQRV9BU01fT1AsIFNJWkVfQVNNX09QIFNUUklOR19BU01fT1ApOiBIZXJlLgoJKiBjb25maWcvc3ZyMy5oIChJTklUX1NFQ1RJT05fQVNNX09QLCBGSU5JX1NFQ1RJT05fQVNNX09QLAoJQ09OU1RfU0VDVElPTl9BU01fT1AsIEFTTV9CWVRFX09QKTogSGVyZS4KCSogY29uZmlnL2EyOWsvdWRpLmggKElOVF9BU01fT1ApOiBIZXJlLgoJKiBjb25maWcvYWxwaGEvYWxwaGEtaW50ZXJpeC5oIChDT05TVF9TRUNUSU9OX0FTTV9PUCwKCUNUT1JTX1NFQ1RJT05fQVNNX09QLCBEVE9SU19TRUNUSU9OX0FTTV9PUCwgSU5UX0FTTV9PUCwKCVNFVF9BU01fT1ApOiBIZXJlLgoJKiBjb25maWcvYWxwaGEvYWxwaGEuaCAoVEVYVF9TRUNUSU9OX0FTTV9PUCwKCVJFQURPTkxZX0RBVEFfU0VDVElPTl9BU01fT1AsIERBVEFfU0VDVElPTl9BU01fT1AsCglVTkFMSUdORURfU0hPUlRfQVNNX09QLCBVTkFMSUdORURfSU5UX0FTTV9PUCwKCVVOQUxJR05FRF9ET1VCTEVfSU5UX0FTTV9PUCwgQVNNX1NUQUJTX09QLCBBU01fU1RBQk5fT1AsCglBU01fU1RBQkRfT1ApOiBIZXJlLgoJKiBjb25maWcvYWxwaGEvZWxmLmggKElERU5UX0FTTV9PUCwgU0tJUF9BU01fT1AsIEFMSUdOX0FTTV9PUCwKCUNPTU1PTl9BU01fT1AsIElOVF9BU01fT1AsIEFTQ0lJX0RBVEFfQVNNX09QLAoJQ09OU1RfU0VDVElPTl9BU01fT1AsIENUT1JTX1NFQ1RJT05fQVNNX09QLCBEVE9SU19TRUNUSU9OX0FTTV9PUCwKCUJTU19TRUNUSU9OX0FTTV9PUCwgU0JTU19TRUNUSU9OX0FTTV9PUCwgU0RBVEFfU0VDVElPTl9BU01fT1AsCglJTklUX1NFQ1RJT05fQVNNX09QLCBGSU5JX1NFQ1RJT05fQVNNX09QLCBUWVBFX0FTTV9PUCwKCVNJWkVfQVNNX09QLCBTVFJJTkdfQVNNX09QKTogSGVyZS4KCSogY29uZmlnL2FscGhhL3Ztcy5oIChMSU5LX1NFQ1RJT05fQVNNX09QLAoJUkVBRE9OTFlfU0VDVElPTl9BU01fT1AsIExJVEVSQUxTX1NFQ1RJT05fQVNNX09QLAoJQ1RPUlNfU0VDVElPTl9BU01fT1AsIERUT1JTX1NFQ1RJT05fQVNNX09QLCBDT01NT05fQVNNX09QKTogSGVyZS4KCSogY29uZmlnL2FyYy9hcmMuaCAoQVNNX0JZVEVfT1AsIFNFVF9BU01fT1ApOiBIZXJlLgoJKFBVU0hTRUNUSU9OX0FTTV9PUCk6IERlZmluZSB0aGlzLCBub3QgUFVTSFNFQ1RJT05fRk9STUFULgoJKiBjb25maWcvYXJtL2FvZi5oIChDVE9SU19TRUNUSU9OX0FTTV9PUCwgRFRPUlNfU0VDVElPTl9BU01fT1ApOgoJSGVyZS4KCSogY29uZmlnL2FybS9hb3V0LmggKFRFWFRfU0VDVElPTl9BU01fT1AsIERBVEFfU0VDVElPTl9BU01fT1AsCglCU1NfU0VDVElPTl9BU01fT1AsIFNFVF9BU01fT1ApOiBIZXJlLgoJKiBjb25maWcvYXJtL2NvZmYuaCAoSU5UX0FTTV9PUCk6IEhlcmUuCgkqIGNvbmZpZy9hcm0vY29uaXgtZWxmLmggKFVOQUxJR05FRF9XT1JEX0FTTV9PUCk6IEhlcmUuCgkqIGNvbmZpZy9hcm0vZWxmLmggKFRZUEVfQVNNX09QLCBTSVpFX0FTTV9PUCwgSU5UX0FTTV9PUCk6IEhlcmUuCgkqIGNvbmZpZy9hcm0vbGludXgtZWxmLmggKElERU5UX0FTTV9PUCwgQ09OU1RfU0VDVElPTl9BU01fT1AsCglJTklUX1NFQ1RJT05fQVNNX09QLCBGSU5JX1NFQ1RJT05fQVNNX09QKTogSGVyZS4KCSogY29uZmlnL2FybS91bmtub3duLWVsZi5oIChVTkFMSUdORURfV09SRF9BU01fT1ApOiBIZXJlLgoJKiBjb25maWcvYXZyL2F2ci5oIChURVhUX1NFQ1RJT05fQVNNX09QLCBEQVRBX1NFQ1RJT05fQVNNX09QLAoJQVNNX0JZVEVfT1AsIFRZUEVfQVNNX09QLCBTSVpFX0FTTV9PUCwgV0VBS19BU01fT1AsCglTVFJJTkdfQVNNX09QKTogSGVyZS4gIFVwZGF0ZSBkb2N1bWVudGF0aW9uIGNvcHkgaW4gY29tbWVudHMuCgkqIGNvbmZpZy9jNHgvYzR4LmggKEFTTV9TVEFCU19PUCwgQlNTX1NFQ1RJT05fQVNNX09QKTogSGVyZS4KCSogY29uZmlnL2NsaXBwZXIvY2xpcHBlci5oIChURVhUX1NFQ1RJT05fQVNNX09QLAoJREFUQV9TRUNUSU9OX0FTTV9PUCk6IEhlcmUuCgkqIGNvbmZpZy9jbGlwcGVyL2NsaXguaCAoQlNTX1NFQ1RJT05fQVNNX09QLCBJTklUX1NFQ1RJT05fQVNNX09QKToKCUhlcmUuCgkqIGNvbmZpZy9jb252ZXgvY29udmV4LmggKFRFWFRfU0VDVElPTl9BU01fT1AsCglEQVRBX1NFQ1RJT05fQVNNX09QLCBCU1NfU0VDVElPTl9BU01fT1ApOiBIZXJlLgoJKiBjb25maWcvZDMwdi9kMzB2LmggKFRFWFRfU0VDVElPTl9BU01fT1AsIERBVEFfU0VDVElPTl9BU01fT1AsCglCU1NfU0VDVElPTl9BU01fT1ApOiBIZXJlLgoJKiBjb25maWcvZnIzMC9mcjMwLmggKFRFWFRfU0VDVElPTl9BU01fT1AsIERBVEFfU0VDVElPTl9BU01fT1AsCglCU1NfU0VDVElPTl9BU01fT1ApOiBIZXJlLgoJKiBjb25maWcvZng4MC9meDgwLmggKFRFWFRfU0VDVElPTl9BU01fT1AsIERBVEFfU0VDVElPTl9BU01fT1ApOgoJSGVyZS4KCSogY29uZmlnL2dtaWNyby9nbWljcm8uaCAoVEVYVF9TRUNUSU9OX0FTTV9PUCwKCURBVEFfU0VDVElPTl9BU01fT1AsIEJTU19TRUNUSU9OX0FTTV9PUCk6IEhlcmUuCgkqIGNvbmZpZy9oODMwMC9oODMwMC5oIChBU01fV09SRF9PUCk6IEhlcmUuCgkqIGNvbmZpZy9pMzcwL2kzNzAuaCAoVEVYVF9TRUNUSU9OX0FTTV9PUCwgREFUQV9TRUNUSU9OX0FTTV9PUCwKCUJTU19TRUNUSU9OX0FTTV9PUCk6IEhlcmUuCgkqIGNvbmZpZy9pMzg2L2FpeDM4Ni5oIChJTklUX1NFQ1RJT05fQVNNX09QKTogSGVyZS4KCSogY29uZmlnL2kzODYvYnNkLmggKEFTTV9CWVRFX09QKTogSGVyZS4KCSogY29uZmlnL2kzODYvY3lnd2luLmggKFNFVF9BU01fT1AsIElOVF9BU01fT1ApOiBIZXJlLgoJKiBjb25maWcvaTM4Ni9kZ3V4LmggKENPTlNUX1NFQ1RJT05fQVNNX09QKTogSGVyZS4KCSogY29uZmlnL2kzODYvZGpncHAuaCAoSURFTlRfQVNNX09QLCBJTlRfQVNNX09QLCBTRVRfQVNNX09QKToKCUhlcmUuCgkqIGNvbmZpZy9pMzg2L2ZyZWVic2QtZWxmLmggKFNFVF9BU01fT1ApOiBIZXJlLgoJKiBjb25maWcvaTM4Ni9mcmVlYnNkLmggKFRZUEVfQVNNX09QLCBTSVpFX0FTTV9PUCwgSU5UX0FTTV9PUCk6CglIZXJlLgoJKiBjb25maWcvaTM4Ni9pMzg2LWNvZmYuaCAoQ1RPUlNfU0VDVElPTl9BU01fT1AsCglEVE9SU19TRUNUSU9OX0FTTV9PUCwgSU5UX0FTTV9PUCk6IEhlcmUuCgkqIGNvbmZpZy9pMzg2L2kzODYtaW50ZXJpeC5oIChTVFJJTkdfQVNNX09QLCBDT05TVF9TRUNUSU9OX0FTTV9PUCwKCUNUT1JTX1NFQ1RJT05fQVNNX09QLCBEVE9SU19TRUNUSU9OX0FTTV9PUCwgSU5UX0FTTV9PUCwKCVNFVF9BU01fT1ApOiBIZXJlLgoJKiBjb25maWcvaTM4Ni9pMzg2ZWxmLmggKEJTU19TRUNUSU9OX0FTTV9PUCk6IEhlcmUuCgkqIGNvbmZpZy9pMzg2L25ldGJzZC5oIChJTlRfQVNNX09QKTogSGVyZS4KCSogY29uZmlnL2kzODYvb3BlbmJzZC5oIChJTlRfQVNNX09QKTogSGVyZS4KCSogY29uZmlnL2kzODYvb3Nmcm9zZS5oIChUWVBFX0FTTV9PUCwgU0laRV9BU01fT1AsIFNFVF9BU01fT1AsCglJREVOVF9BU01fT1ApOiBIZXJlLgoJKiBjb25maWcvaTM4Ni9zY281LmggKEFMSUdOX0FTTV9PUCwgQVNDSUlfREFUQV9BU01fT1AsCglBU01fQllURV9PUCwgSURFTlRfQVNNX09QLCBDT01NT05fQVNNX09QLCBTRVRfQVNNX09QLAoJTE9DQUxfQVNNX09QLCBJTlRfQVNNX09QLCBUWVBFX0FTTV9PUCwgU0laRV9BU01fT1AsIFNUUklOR19BU01fT1AsCglTS0lQX0FTTV9PUCwgR0xPQkFMX0FTTV9PUCk6IEhlcmUuCgkqIGNvbmZpZy9pMzg2L3NlcS1zeXN2My5oIChTSEFSRURfU0VDVElPTl9BU01fT1AsCglTSEFSRURfQlNTX1NFQ1RJT05fQVNNX09QKTogSGVyZS4KCSogY29uZmlnL2kzODYvc2VxdWVudC5oIChTSEFSRURfU0VDVElPTl9BU01fT1ApOiBIZXJlLgoJKiBjb25maWcvaTM4Ni9zdW4zODYuaCAoQVNNX0JZVEVfT1AsIFRFWFRfU0VDVElPTl9BU01fT1AsCglEQVRBX1NFQ1RJT05fQVNNX09QKTogSGVyZS4KCSogY29uZmlnL2kzODYvc3ZyM2dhcy5oIChJTklUX1NFQ1RJT05fQVNNX09QLCBGSU5JX1NFQ1RJT05fQVNNX09QLAoJQ09OU1RfU0VDVElPTl9BU01fT1ApOiBIZXJlLgoJKiBjb25maWcvaTM4Ni9zeXN2My5oIChJTklUX1NFQ1RJT05fQVNNX09QKTogSGVyZS4KCSogY29uZmlnL2kzODYvdW5peC5oIChURVhUX1NFQ1RJT05fQVNNX09QLCBEQVRBX1NFQ1RJT05fQVNNX09QLAoJQlNTX1NFQ1RJT05fQVNNX09QKTogSGVyZS4KCSogY29uZmlnL2k4NjAvYnNkLWdhcy5oIChBU0NJSV9EQVRBX0FTTV9PUCk6IEhlcmUuCgkqIGNvbmZpZy9pODYwL2JzZC5oIChBU0NJSV9EQVRBX0FTTV9PUCk6IEhlcmUuCgkqIGNvbmZpZy9pODYwL2Z4MjgwMC5oIChBU01fU1RBQlNfT1AsIEFTTV9TVEFCTl9PUCwgQVNNX1NUQUJEX09QLAoJQlNTX0FTTV9PUCk6IEhlcmUsIGJ1dCB1c2UgdHJhaWxpbmcgc3BhY2VzLgoJKiBjb25maWcvaTg2MC9pODYwLmggKEFTTV9CWVRFX09QLCBURVhUX1NFQ1RJT05fQVNNX09QLAoJREFUQV9TRUNUSU9OX0FTTV9PUCk6IEhlcmUuCgkqIGNvbmZpZy9pODYwL3BhcmFnb24uaCAoQVNDSUlfREFUQV9BU01fT1AsIEJTU19TRUNUSU9OX0FTTV9PUCk6CglIZXJlLgoJKiBjb25maWcvaTg2MC9zeXN2My5oIChBU0NJSV9EQVRBX0FTTV9PUCwgQ1RPUlNfU0VDVElPTl9BU01fT1AsCglEVE9SU19TRUNUSU9OX0FTTV9PUCwgVERFU0NfU0VDVElPTl9BU01fT1ApOiBIZXJlLgoJKiBjb25maWcvaTg2MC9zeXN2NC5oIChDVE9SU19TRUNUSU9OX0FTTV9PUCwgRFRPUlNfU0VDVElPTl9BU01fT1AsCglUREVTQ19TRUNUSU9OX0FTTV9PUCk6IEhlcmUuCgkqIGNvbmZpZy9pOTYwL2k5NjAtY29mZi5oIChDVE9SU19TRUNUSU9OX0FTTV9PUCwKCURUT1JTX1NFQ1RJT05fQVNNX09QLCBJTlRfQVNNX09QKTogSGVyZS4KCSogY29uZmlnL2k5NjAvaTk2MC5oIChURVhUX1NFQ1RJT05fQVNNX09QLCBEQVRBX1NFQ1RJT05fQVNNX09QKToKCUhlcmUuCgkqIGNvbmZpZy9pYTY0L2lhNjQuaCAoVEVYVF9TRUNUSU9OX0FTTV9PUCwgREFUQV9TRUNUSU9OX0FTTV9PUCwKCUJTU19TRUNUSU9OX0FTTV9PUCwgRUhfRlJBTUVfU0VDVElPTl9BU01fT1AsCglVTkFMSUdORURfU0hPUlRfQVNNX09QLCBVTkFMSUdORURfSU5UX0FTTV9PUCwKCVVOQUxJR05FRF9ET1VCTEVfSU5UX0FTTV9PUCk6IEhlcmUuCgkqIGNvbmZpZy9pYTY0L3N5c3Y0LmggKEFTTV9CWVRFX09QLCBTVFJJTkdfQVNNX09QLCBTS0lQX0FTTV9PUCwKCUNPTU1PTl9BU01fT1AsIEFTQ0lJX0RBVEFfQVNNX09QLCBJTklUX1NFQ1RJT05fQVNNX09QLAoJRklOSV9TRUNUSU9OX0FTTV9PUCwgQ1RPUlNfU0VDVElPTl9BU01fT1AsIERUT1JTX1NFQ1RJT05fQVNNX09QLAoJU0RBVEFfU0VDVElPTl9BU01fT1AsIFNCU1NfU0VDVElPTl9BU01fT1ApOiBIZXJlLgoJKiBjb25maWcvbTMyci9tMzJyLmggKFNDT01NT05fQVNNX09QKTogSGVyZS4KCSogY29uZmlnL202OGhjMTEvbTY4aGMxMS5oIChHTE9CQUxfQVNNX09QKTogSGVyZS4KCSogY29uZmlnL202OGsvYXV4YXMuaCAoQllURV9BU01fT1AsIFdPUkRfQVNNX09QLCBMT05HX0FTTV9PUCwKCVNQQUNFX0FTTV9PUCwgQUxJR05fQVNNX09QLCBHTE9CQUxfQVNNX09QLCBTV0JFR19BU01fT1AsCglTRVRfQVNNX09QKTogSGVyZS4KCSogY29uZmlnL202OGsvY29mZi5oIChCU1NfU0VDVElPTl9BU01fT1AsIENUT1JTX1NFQ1RJT05fQVNNX09QLAoJRFRPUlNfU0VDVElPTl9BU01fT1AsIElOVF9BU01fT1ApOiBIZXJlLgoJKiBjb25maWcvbTY4ay9jcmRzLmggKEJTU19TRUNUSU9OX0FTTV9PUCk6IEhlcmUuCgkqIGNvbmZpZy9tNjhrL2RweDIuaCAoQVNNX0JZVEVfT1AsIEdMT0JBTF9BU01fT1ApOiBIZXJlLgoJKiBjb25maWcvbTY4ay9ocDMyMC5oIChBU0NJSV9EQVRBX0FTTV9PUCwgR0xPQkFMX0FTTV9PUCk6IEhlcmUuCgkqIGNvbmZpZy9tNjhrL2xpbnV4LmggKEJTU19TRUNUSU9OX0FTTV9PUCk6IEhlcmUuCgkqIGNvbmZpZy9tNjhrL2x5bnguaCAoQlNTX1NFQ1RJT05fQVNNX09QKTogSGVyZS4KCSogY29uZmlnL202OGsvbTY4ay5oIChURVhUX1NFQ1RJT05fQVNNX09QLCBEQVRBX1NFQ1RJT05fQVNNX09QLAoJR0xPQkFMX0FTTV9PUCk6IEhlcmUuCgkqIGNvbmZpZy9tNjhrL202OGtlbGYuaCAoU1dCRUdfQVNNX09QLCBCU1NfQVNNX09QLAoJQlNTX1NFQ1RJT05fQVNNX09QKTogSGVyZS4KCSogY29uZmlnL202OGsvbTY4a3Y0LmggKEJTU19BU01fT1ApOiBIZXJlLgoJKiBjb25maWcvbTY4ay9tb3QzMzAwLmggKFRFWFRfU0VDVElPTl9BU01fT1AsIERBVEFfU0VDVElPTl9BU01fT1AsCglBU0NJSV9EQVRBX0FTTV9PUCwgU0VUX0FTTV9PUCwgQ1RPUlNfU0VDVElPTl9BU01fT1AsCglEVE9SU19TRUNUSU9OX0FTTV9PUCwgR0xPQkFMX0FTTV9PUCwgQVNNX0JZVEVfT1AsIEFMSUdOX0FTTV9PUCwKCVNLSVBfQVNNX09QKTogSGVyZS4KCSogY29uZmlnL202OGsvbmV3c2dhcy5oIChTRVRfQVNNX09QKTogSGVyZS4KCSogY29uZmlnL202OGsvcnRlbXNlbGYuaCAoSU5JVF9TRUNUSU9OX0FTTV9PUCwKCUZJTklfU0VDVElPTl9BU01fT1AsIEVIX0ZSQU1FX1NFQ1RJT05fQVNNX09QKTogSGVyZS4KCSogY29uZmlnL202OGsvc2dzLmggKEJZVEVfQVNNX09QLCBXT1JEX0FTTV9PUCwgTE9OR19BU01fT1AsCglTUEFDRV9BU01fT1AsIEFMSUdOX0FTTV9PUCwgR0xPQkFMX0FTTV9PUCwgU1dCRUdfQVNNX09QLAoJU0VUX0FTTV9PUCwgVU5BTElHTkVEX1NIT1JUX0FTTV9PUCwgVU5BTElHTkVEX0lOVF9BU01fT1ApOiBIZXJlLAoJYnV0IHVzZSB0cmFpbGluZyBzcGFjZXMuCgkqIGNvbmZpZy9tNjhrL3Rvd2VyLWFzLmggKFRFWFRfU0VDVElPTl9BU01fT1AsCglEQVRBX1NFQ1RJT05fQVNNX09QLCBHTE9CQUxfQVNNX09QLCBJTklUX1NFQ1RJT05fQVNNX09QLAoJRklOSV9TRUNUSU9OX0FTTV9PUCwgQ09OU1RfU0VDVElPTl9BU01fT1AsIEJTU19TRUNUSU9OX0FTTV9PUCk6CglIZXJlLgoJKiBjb25maWcvbTg4ay9kZ3V4LmggKEZJTklfU0VDVElPTl9BU01fT1AsIElOSVRfU0VDVElPTl9BU01fT1AsCglDVE9SU19TRUNUSU9OX0FTTV9PUCwgRFRPUlNfU0VDVElPTl9BU01fT1ApOiBIZXJlLgoJKiBjb25maWcvbTg4ay9tODhrLmggKFRFWFRfU0VDVElPTl9BU01fT1AsIERBVEFfU0VDVElPTl9BU01fT1AsCglDT05TVF9TRUNUSU9OX0FTTV9PUCwgVERFU0NfU0VDVElPTl9BU01fT1AsIENUT1JTX1NFQ1RJT05fQVNNX09QLAoJRFRPUlNfU0VDVElPTl9BU01fT1AsIElOSVRfU0VDVElPTl9BU01fT1AsIEZJTklfU0VDVElPTl9BU01fT1AsCglJREVOVF9BU01fT1AsIEZJTEVfQVNNX09QLCBTRUNUSU9OX0FTTV9PUCwgU0VUX0FTTV9PUCwKCUdMT0JBTF9BU01fT1AsIEFMSUdOX0FTTV9PUCwgU0tJUF9BU01fT1AsIENPTU1PTl9BU01fT1AsCglCU1NfQVNNX09QLCBGTE9BVF9BU01fT1AsIERPVUJMRV9BU01fT1AsIElOVF9BU01fT1AsIFNIT1JUX0FTTV9PUCwKCUNIQVJfQVNNX09QLCBBU0NJSV9EQVRBX0FTTV9PUCwgU0JTU19BU01fT1AsIFNDT01NX0FTTV9PUCwKCVNEQVRBX1NFQ1RJT05fQVNNX09QLCBUWVBFX0FTTV9PUCwgU0laRV9BU01fT1AsIElOVEVSTkFMX0FTTV9PUCwKCVZFUlNJT05fQVNNX09QLCBVTkFMSUdORURfU0hPUlRfQVNNX09QLCBVTkFMSUdORURfSU5UX0FTTV9PUCwKCVBVU0hTRUNUSU9OX0FTTV9PUCwgUE9QU0VDVElPTl9BU01fT1AsIFJFUVVJUkVTXzg4MTEwX0FTTV9PUCwKCUFTTV9CWVRFX09QKTogSGVyZS4KCSogY29uZmlnL204OGsvb3BlbmJzZC5oIChTRVRfQVNNX09QKTogSGVyZS4KCSogY29uZmlnL204OGsvc3lzdjQuaCAoSU5JVF9TRUNUSU9OX0FTTV9PUCwgRklOSV9TRUNUSU9OX0FTTV9PUCwKCUNUT1JTX1NFQ1RJT05fQVNNX09QLCBEVE9SU19TRUNUSU9OX0FTTV9PUCk6IEhlcmUuCgkqIGNvbmZpZy9tY29yZS9tY29yZS1lbGYuaCAoVU5BTElHTkVEX0lOVF9BU01fT1AsCglVTkFMSUdORURfU0hPUlRfQVNNX09QLCBDVE9SU19TRUNUSU9OX0FTTV9PUCwKCURUT1JTX1NFQ1RJT05fQVNNX09QKTogSGVyZS4KCSogY29uZmlnL21jb3JlL21jb3JlLXBlLmggKENUT1JTX1NFQ1RJT05fQVNNX09QLAoJRFRPUlNfU0VDVElPTl9BU01fT1AsIElOVF9BU01fT1ApOiBIZXJlLgoJKiBjb25maWcvbWlwcy9lbGYuaCAoVFlQRV9BU01fT1AsIFNJWkVfQVNNX09QLAoJQlNTX1NFQ1RJT05fQVNNX09QKTogSGVyZS4KCSogY29uZmlnL21pcHMvZWxmNjQuaCAoVFlQRV9BU01fT1AsIFNJWkVfQVNNX09QKTogSGVyZS4KCSogY29uZmlnL21pcHMvaXJpczUuaCAoQUJJQ0FMTFNfQVNNX09QKTogSGVyZS4KCSogY29uZmlnL21pcHMvaXJpczYuaCAoVFlQRV9BU01fT1AsIFNJWkVfQVNNX09QLAoJUE9QU0VDVElPTl9BU01fT1AsIEJTU19TRUNUSU9OX0FTTV9PUCwgQ09OU1RfU0VDVElPTl9BU01fT1BfMzIsCglDT05TVF9TRUNUSU9OX0FTTV9PUF82NCwgQ1RPUlNfU0VDVElPTl9BU01fT1AsCglEVE9SU19TRUNUSU9OX0FTTV9PUCwgRUhfRlJBTUVfU0VDVElPTl9BU01fT1ApOiBIZXJlLgoJKiBjb25maWcvbWlwcy9taXBzLmMgKEFCSUNBTExTX0FTTV9PUCk6IEhlcmUuCgkqIGNvbmZpZy9taXBzL21pcHMuaCAoQVNNX1NUQUJTX09QLCBBU01fU1RBQk5fT1AsIEFTTV9TVEFCRF9PUCk6CglIZXJlLgoJKiBjb25maWcvbWlwcy9uZXRic2QuaCAoVFlQRV9BU01fT1AsIFNJWkVfQVNNX09QLCBXRUFLX0FTTV9PUCk6CglIZXJlLgoJKiBjb25maWcvbWlwcy9vc2Zyb3NlLmggKFNFVF9BU01fT1ApOiBIZXJlLgoJKiBjb25maWcvbWlwcy9zbmktc3ZyNC5oIChBQklDQUxMU19BU01fT1ApOiBIZXJlLgoJKiBjb25maWcvbnMzMmsvZW5jb3JlLmggKFNIQVJFRF9TRUNUSU9OX0FTTV9PUCk6IEhlcmUuCgkqIGNvbmZpZy9uczMyay9tZXJsaW4uaCAoU0hBUkVEX1NFQ1RJT05fQVNNX09QKTogSGVyZS4KCSogY29uZmlnL25zMzJrL25zMzJrLmggKFRFWFRfU0VDVElPTl9BU01fT1AsIERBVEFfU0VDVElPTl9BU01fT1ApOgoJSGVyZS4KCSogY29uZmlnL25zMzJrL3NlcXVlbnQuaCAoU0hBUkVEX1NFQ1RJT05fQVNNX09QKTogSGVyZS4KCSogY29uZmlnL25zMzJrL3RlazYwMDAuaCAoU0hBUkVEX1NFQ1RJT05fQVNNX09QKTogSGVyZS4KCSogY29uZmlnL3BhL3BhLTY0LmggKElOVF9BU01fT1AsIFRZUEVfQVNNX09QLCBTSVpFX0FTTV9PUCk6IEhlcmUuCgkqIGNvbmZpZy9wYS9wYS5oIChBU01fU1RBQlNfT1AsIEFTTV9TVEFCTl9PUCk6IEhlcmUuCgkqIGNvbmZpZy9wai9wai5oIChTRVRfQVNNX09QLCBCU1NfU0VDVElPTl9BU01fT1ApOiBIZXJlLgoJKiBjb25maWcvcHlyL3B5ci5oIChURVhUX1NFQ1RJT05fQVNNX09QLCBEQVRBX1NFQ1RJT05fQVNNX09QKToKCUhlcmUuCgkqIGNvbmZpZy9yb21wL3JvbXAuaCAoVEVYVF9TRUNUSU9OX0FTTV9PUCwgREFUQV9TRUNUSU9OX0FTTV9PUCk6CglIZXJlLgoJKiBjb25maWcvcnM2MDAwL3JzNjAwMC5oIChTRVRfQVNNX09QKTogSGVyZS4KCSogY29uZmlnL3JzNjAwMC9zb2wyLmggKEFTTV9TVEFCTl9PUCk6IEhlcmUuCgkqIGNvbmZpZy9yczYwMDAvc3lzdjQuaCAoU0tJUF9BU01fT1AsIExPQ0FMX0FTTV9PUCwgTENPTU1fQVNNX09QKToKCUhlcmUuCgkqIGNvbmZpZy9zaC9zaC5oIChTRVRfQVNNX09QLCBCU1NfU0VDVElPTl9BU01fT1AsCglVTkFMSUdORURfU0hPUlRfQVNNX09QLCBVTkFMSUdORURfSU5UX0FTTV9PUCk6IEhlcmUuCgkqIGNvbmZpZy9zcGFyYy9saW51eC5oIChDT01NT05fQVNNX09QKTogSGVyZS4KCSogY29uZmlnL3NwYXJjL2xpbnV4NjQuaCAoQ09NTU9OX0FTTV9PUCwKCVVOQUxJR05FRF9ET1VCTEVfSU5UX0FTTV9PUCk6IEhlcmUuCgkqIGNvbmZpZy9zcGFyYy9saXRlY29mZi5oIChCU1NfU0VDVElPTl9BU01fT1AsCglDVE9SU19TRUNUSU9OX0FTTV9PUCwgRFRPUlNfU0VDVElPTl9BU01fT1AsIElOVF9BU01fT1ApOiBIZXJlLgoJKiBjb25maWcvc3BhcmMvbHlueC5oIChCU1NfU0VDVElPTl9BU01fT1ApOiBIZXJlLgoJKiBjb25maWcvc3BhcmMvcGJkLmggKEFTTV9JTlRfT1ApOiBIZXJlLgoJKiBjb25maWcvc3BhcmMvc3A2NC1lbGYuaCAoVU5BTElHTkVEX0xPTkdMT05HX0FTTV9PUCk6IEhlcmUuCgkqIGNvbmZpZy9zcGFyYy9zcGFyYy5oIChBU01fQllURV9PUCwgVEVYVF9TRUNUSU9OX0FTTV9PUCwKCURBVEFfU0VDVElPTl9BU01fT1AsIElERU5UX0FTTV9PUCk6IEhlcmUuCgkqIGNvbmZpZy9zcGFyYy9zdW40Z2FzLmggKFVOQUxJR05FRF9ET1VCTEVfSU5UX0FTTV9PUCwKCVVOQUxJR05FRF9JTlRfQVNNX09QLCBVTkFMSUdORURfU0hPUlRfQVNNX09QKTogSGVyZS4KCSogY29uZmlnL3NwYXJjL3N5c3Y0LmggKFNUUklOR19BU01fT1AsIENPTU1PTl9BU01fT1AsIFNLSVBfQVNNX09QLAoJVU5BTElHTkVEX0RPVUJMRV9JTlRfQVNNX09QLCBVTkFMSUdORURfSU5UX0FTTV9PUCwKCVVOQUxJR05FRF9TSE9SVF9BU01fT1AsIFBVU0hTRUNUSU9OX0FTTV9PUCwgUE9QU0VDVElPTl9BU01fT1AsCglURVhUX1NFQ1RJT05fQVNNX09QLCBEQVRBX1NFQ1RJT05fQVNNX09QLCBCU1NfU0VDVElPTl9BU01fT1AsCglDT05TVF9TRUNUSU9OX0FTTV9PUCwgSU5JVF9TRUNUSU9OX0FTTV9PUCwgRklOSV9TRUNUSU9OX0FTTV9PUCwKCUNUT1JTX1NFQ1RJT05fQVNNX09QLCBEVE9SU19TRUNUSU9OX0FTTV9PUCwKCUVIX0ZSQU1FX1NFQ1RJT05fQVNNX09QKTogSGVyZS4KCSogY29uZmlnL3NwYXJjL3Z4c2ltLmggKENPTU1PTl9BU01fT1ApOiBIZXJlLgoJKiBjb25maWcvc3B1ci9zcHVyLmggKFRFWFRfU0VDVElPTl9BU01fT1AsIERBVEFfU0VDVElPTl9BU01fT1ApOgoJSGVyZS4KCSogY29uZmlnL3RhaG9lL3RhaG9lLmggKFRFWFRfU0VDVElPTl9BU01fT1AsIERBVEFfU0VDVElPTl9BU01fT1ApOgoJSGVyZS4KCSogY29uZmlnL3Y4NTAvdjg1MC5oIChTQ09NTU9OX0FTTV9PUCwgWkNPTU1PTl9BU01fT1AsCglUQ09NTU9OX0FTTV9PUCk6IEhlcmUuCgkqIGNvbmZpZy92YXgvdmF4LmggKFRFWFRfU0VDVElPTl9BU01fT1AsIERBVEFfU0VDVElPTl9BU01fT1ApOgoJSGVyZS4KCSogY29uZmlnL3dlMzJrL3dlMzJrLmggKFRFWFRfU0VDVElPTl9BU01fT1AsIERBVEFfU0VDVElPTl9BU01fT1AsCglBU01fQllURV9PUCk6IEhlcmUuCgoyMDAwLTA5LTI1ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEBjeWdudXMuY29tPgoKCSogZXhwbWVkLmMgKHN0b3JlX2JpdF9maWVsZCk6IEFkanVzdCBsYXN0IGNoYW5nZSB0byBub3QgY29uc2lkZXIKCWFueSB3b3JkLXNpemVkIGZpZWxkIG5hdHVyYWxseSBhbGlnbmVkLgoKMjAwMC0wOS0yNCAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAY3lnbnVzLmNvbT4KCgkqIGNvbmZpZy9hbHBoYS9hbHBoYS5jIChhbHBoYV9lbWl0X2NvbmRpdGlvbmFsX2JyYW5jaCk6IEhhbmRsZQoJVEZtb2RlIHVub3JkZXJlZCBjb21wYXJlcyBwcm9wZXJseS4gIFJldmFsaWRhdGUgaW50ZWdlciBjb21wYXJlCglvcGVyYW5kcy4KCShhbHBoYV9lbWl0X3NldGNjKTogTmV3LgoJKGFscGhhX2VtaXRfY29uZGl0aW9uYWxfbW92ZSk6IFJldmFsaWRhdGUgaW50ZWdlciBjb21wYXJlIG9wZXJhbmRzLgoJKiBjb25maWcvYWxwaGEvYWxwaGEtcHJvdG9zLmg6IFVwZGF0ZS4KCSogY29uZmlnL2FscGhhL2FscGhhLm1kIChjbXBkaSk6IEFsbG93IGdlbmVyYWwgb3BlcmFuZHMuCgkoc25lKTogVXNlIGFscGhhX2VtaXRfc2V0Y2MuCgkoc2VxLCBzbHQsIHNsZSwgc2d0LCBzZ2UsIHNsdHUsIHNsZXUsIHNndHUsIHNnZXUpOiBMaWtld2lzZS4KCShzdW5vcmRlcmVkLCBzb3JkZXJlZCk6IE5ldy4KCjIwMDAtMDktMjQgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgoJKiBjb25maWcvaWE2NC9pYTY0LXByb3Rvcy5oOiBVcGRhdGUuCgkqIGNvbmZpZy9pYTY0L2lhNjQuYyAoY2FsbF9tdWx0aXBsZV92YWx1ZXNfb3BlcmF0aW9uKTogUmVtb3ZlLgoJKGlhNjRfZXhwYW5kX2NhbGwpOiBOZXcuCgkoaWE2NF9leHBhbmRfcHJvbG9ndWUpOiBFbWl0IGFuIGFsbG9jIGlmIHdlIG5lZWQgZXh0cmEgaW5wdXQKCXJlZ2lzdGVycy4KCShpYTY0X2V4cGFuZF9lcGlsb2d1ZSk6IE5ldyBhcmcgc2liY2FsbF9wOyBkb24ndCBlbWl0IHRoZSByZXR1cm4KCWluc3RydWN0aW9uIGlmIHRydWUuCgkoc3RydWN0IHJlZ19mbGFncyk6IEFkZCBpc19zaWJjYWxsLgoJKHJ0eF9uZWVkc19iYXJyaWVyKTogQSBzaWJjYWxsIGRvZXMgbm90IHVzZSBDRk0gZXQgYWwuICBJZ25vcmUgVVNFcy4KCShlbWl0X2luc25fZ3JvdXBfYmFycmllcnMpOiBTZXQgZmxhZ3MuaXNfc2liY2FsbC4gIFJlbW92ZSBoYWNrcwoJZm9yIENPREVfRk9SX2dyX3NwaWxsX2ludGVybmFsL0NPREVfRk9SX2dyX3Jlc3RvcmVfaW50ZXJuYWwuCgkqIGNvbmZpZy9pYTY0L2lhNjQuaCAoUFJFRElDQVRFX0NPREVTKTogVXBkYXRlLgoJKiBjb25maWcvaWE2NC9pYTY0Lm1kIChjYWxsKTogVXNlIGlhNjRfZXhwYW5kX2NhbGwuCgkoY2FsbF92YWx1ZSk6IExpa2V3aXNlLgoJKHNpYmNhbGwsIHNpYmNhbGxfdmFsdWUpOiBOZXcuCgkoY2FsbCBwYXR0ZXJucyk6IFJlbW92ZSBleHRyYSBleHBhbmRlcnM7IHRpZHkuCgkoc2liY2FsbF9lcGlsb2d1ZSk6IE5ldy4KCShzZXRfYnNwKTogUmVtb3ZlIHRoZSBleHRyYSBVU0UuICBQdXQgdGhlIG9wZXJhbmQgaW5zaWRlIHRoZSBVTlNQRUMuCgoyMDAwLTA5LTI0ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEBjeWdudXMuY29tPgoKCSogZW1pdC1ydGwuYyAoZ2VuX2xvd3BhcnRfY29tbW9uKTogVXNlIHRydW5jX2ludF9mb3JfbW9kZS4KCgkqIHNpYmNhbGwuYyAoc2tpcF9waWNfcmVzdG9yZSk6IE5ldy4KCShpZGVudGlmeV9jYWxsX3JldHVybl92YWx1ZSk6IFVzZSBpdC4KCjIwMDAtMDktMjQgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjLXRyZWUudGV4aTogTW92ZWQgaGVyZSBmcm9tIGNwL2lyLnRleGkuICBEb2N1bWVudGVkIG5lc3RlZAoJZnVuY3Rpb25zLiAgR2VuZXJhbGl6ZSB0byBoYW5kbGUgYm90aCBDIGFuZCBDKysuCgkqIE1ha2VmaWxlLmluIChjLXRyZWUuaW5mbyk6IE5ldyB0YXJnZXQuCgkoaW5mbyk6IEFkZCBjLXRyZWUuaW5mby4KClN1biBTZXAgMjQgMDk6MTU6NDggMjAwMCAgUmljaGFyZCBLZW5uZXIgIDxrZW5uZXJAdmxzaTEudWx0cmEubnl1LmVkdT4KCgkqIGV4cHIuYyAoc3RvcmVfZmllbGQpOiBJZiBCSVRTSVpFIGlzIG5lZ2F0aXZlLCB1c2Ugc2l6ZSBvZiB0eXBlLgoJKGV4cGFuZF9leHByLCBjYXNlIENPTVBPTkVOVF9FWFBSKTogTGlrZXdpc2UuCgpTdW4gMjQtU2VwLTIwMDAgMTE6NDA6MjMgQlNUICBOZWlsIEJvb3RoICA8TmVpbEJAZWFydGhsaW5nLm5ldD4KCgkqIGNwcGxleC5jOiBVcGRhdGUgVE9ETyBjb21tZW50LgoJKiBjcHBsaWIuYyAoZG9fZXJyb3IsIGRvX3dhcm5pbmcpOiBNZXJnZSBjb21tb24gY29kZSBvZgoJZG9fZXJyb3IgYW5kIGRvX3dhcm5pbmcJaW50byBkb19kaWFnbm9zdGljLiAgVXNlIGl0LgoJKGRvX2RpYWdub3N0aWMpOiBOZXcgZnVuY3Rpb24uCgkqIGNwcGxpYi5oOiBGaXggY29tbWVudCB0eXBvLgoKMjAwMC0wOS0yNCAgSm9zZXBoIFMuIE15ZXJzICA8anNtMjhAY2FtLmFjLnVrPgoKCSogYy1jb21tb24uYyAoY2hlY2tfZm9ybWF0X2luZm8pOiBXYXJuIGZvciBhIHdpZGUgY2hhcmFjdGVyIHN0cmluZwoJdXNlZCBhcyBhIG5vbi13aWRlIGZvcm1hdCBhcmd1bWVudC4KCjIwMDAtMDktMjQgIEpvc2VwaCBTLiBNeWVycyAgPGpzbTI4QGNhbS5hYy51az4KCgkqIGJ1aWx0aW5zLmRlZiAoQlVJTFRfSU5fTExBQlMpOiBBZGQuCgkqIGJ1aWx0aW5zLmMgKGV4cGFuZF9idWlsdGluKTogQWxzbyBhYm9ydCBvbiBCVUlMVF9JTl9MTEFCUy4KCSogYy1jb21tb24uYyAoY19jb21tb25fbm9kZXNfYnVpbHRpbnMpOiBDcmVhdGUgYnVpbHRpbiBmdW5jdGlvbnMKCV9fYnVpbHRpbl9sbGFicywgYW5kIHBsYWluIGxsYWJzIHVubGVzcyBub19ub25hbnNpX2J1aWx0aW5zCglvdXRzaWRlIG9mIEM5OSBtb2RlLgoJKGV4cGFuZF90cmVlX2J1aWx0aW4pOiBIYW5kbGUgQlVJTFRfSU5fTExBQlMuCgpTYXQgMjMtU2VwLTIwMDAgMjI6Mzk6MTggQlNUICBOZWlsIEJvb3RoICA8TmVpbEJAZWFydGhsaW5nLm5ldD4KCgkqIGNwcGhhc2guaCAoQ1BQX1JFU0VSVkUsIENQUF9QVVRTX1EsIENQUF9QVVRTLCBDUFBfUFVUQ19RLAoJQ1BQX1BVVEMsIERVTU1ZX1RPS0VOLCBOT19EVU1NWV9UT0tFTik6IERlbGV0ZS4KCSogY3BwbGV4LmMgKF9jcHBfZXhwYW5kX3Rva2VuX3NwYWNlLCBfY3BwX2luaXRfdG9rbGlzdCwKCV9jcHBfZnJlZV90b2tsaXN0KTogTm8gbmVlZCB0byB3b3JyeSBhYm91dCBleHRyYSBkdW1teSB0b2tlbgoJYXQgdGhlIHN0YXJ0IG9mIHRva2VuIGxpc3RzIGFueSBtb3JlLgoJKHRyaWdyYXBoX29rKTogT25seSB3YXJuIG91dHNpZGUgY29tbWVudHMuCgkoc2tpcF9ibG9ja19jb21tZW50KTogU2V0IGFuZCBjbGVhciBsZXhpbmdfY29tbWVudC4KCShza2lwX2xpbmVfY29tbWVudCk6IFRha2UgYSBjcHBfcmVhZGVyIG5vdCBjcHBfYnVmZmVyLgoJU2V0IGFuZCBjbGVhciBsZXhpbmdfY29tbWVudC4KCShwYXJzZV9udW1iZXIpOiBIYW5kbGUgbGVhZGluZyAnLicgaW5kaWNhdGVkIGJ5IHBmaWxlLT5zZWVuX2RvdC4KCShjaGVja19sb25nX3Rva2VuKTogRGVsZXRlLgoJKGxleF9wZXJjZW50LCBsZXhfZG90KTogTmV3IHN1YnJvdXRpbmVzIG9mIGxleF90b2tlbiB0bwoJaGFuZGxlIGxleGluZyBvZiAnLicgYW5kICclJyB3aXRob3V0IGxvb2tiYWNrLgoJKGxleF90b2tlbik6IFVzZSBsZXhfZG90IGFuZCBsZXhfcGVyY2VudC4KCShsZXhfbGluZSk6IERvbid0IGNoZWNrIGZvciBMSVNUX09GRlNFVC4KCShfY3BwX2luaXRfaW5wdXRfYnVmZmVyKTogVXBkYXRlIGZvciBuZXcgX2NwcF9pbml0X3Rva2xpc3QuCgkqIGNwcGxpYi5jIChfY3BwX3BhcnNlX2Fzc2VydGlvbik6IFNpbWlsYXJseS4KCShjcHBfcHVzaF9idWZmZXIpOiBJbml0aWFsaXplIGV4dHJhX2NoYXIuCgkqIGNwcGxpYi5oIChMSVNUX09GRlNFVCk6IERlbGV0ZS4KCShzdHJ1Y3QgY3BwX2J1ZmZlcik6IE5ldyBtZW1iZXIgZXh0cmFfY2hhci4KCShzdHJ1Y3QgbGV4ZXJfc3RhdGUpOiBOZXcgbWVtYmVycyBsZXhpbmdfY29tbWVudCBhbmQgc2Vlbl9kb3QuCgoyMDAwLTA5LTIzICBKYXNvbiBNZXJyaWxsICA8amFzb25AcmVkaGF0LmNvbT4KCgkqIGNvbmZpZy9yczYwMDAveC1haXg0MSAoQ0xJQik6IERlZmluZSBoZXJlLgoJKiBjb25maWcvcnM2MDAwL3QtYWl4NDM6IE5vdCBoZXJlLgoJKiBjb25maWcvcnM2MDAwL3QtYWl4NDE6IE9yIGhlcmUuICBSZW1vdmUuCgkqIGNvbmZpZ3VyZS5pbjogRG9uJ3QgdXNlIGl0LgoKMjAwMC0wOS0yMiAgSmFzb24gTWVycmlsbCAgPGphc29uQHJlZGhhdC5jb20+CgoJKiBjb25maWd1cmUuaW46IEFkZCB0ZXN0IGZvciBIQVZFX0xEX0RXQVJGX0xJTktPTkNFLgoJKiB0b3BsZXYuYzogVXNlIGl0IHRvIGluaXRpYWxpemUgZmxhZ19lbGltaW5hdGVfZHdhcmYyZHVwcy4KCSogY29uZmlnLmluOiBSZWdlbmVyYXRlLgoKCSogY29uZmlndXJlLmluOiBGaXggY2hlY2tzIGZvciBhc3NlbWJsZXIgZmVhdHVyZXMgd2hlbiB1c2luZyBhCglvbmUtdHJlZSBhc3NlbWJsZXIgdGhhdCBoYXMgbm90IHlldCBiZWVuIGJ1aWx0LgoJRml4IC0tZGlzYWJsZS10aHJlYWRzLgoKMjAwMC0wOS0xOSAgR2VvZmYgS2VhdGluZyAgPGdlb2Zma0BjeWdudXMuY29tPgoKCSogc3RtdC5jIChleHBhbmRfYXNtX29wZXJhbmRzKTogQWxsb3cgIyBpbiBjb25zdHJhaW50cy4KCjIwMDAtMDktMjIgIEphc29uIE1lcnJpbGwgIDxqYXNvbkByZWRoYXQuY29tPgoKCSogYy1sZXguYyAoc2tpcF93aGl0ZV9zcGFjZSk6IEp1c3QgdHJlYXQgQ1JzIGFzIGhvcml6b250YWwgd2hpdGVzcGFjZS4KCgkqIGRieG91dC5jIChkYnhvdXRfc3ltYm9sX25hbWUpOiBKdXN0IHVzZSBERUNMX05BTUUgZm9yCglmdW5jdGlvbi1sb2NhbCBuYW1lcy4KCjIwMDAtMDktMjIgIEJyYWQgTHVjaWVyIDxsdWNpZXJAbWF0aC5wdXJkdWUuZWR1PgoJICAgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiB0b3BsZXYuYyAod2Fybl9kaXNhYmxlZF9vcHRpbWl6YXRpb24pOiBEZWNsYXJlIG5ldyB3YXJuaW5nIGZsYWcuCgkqIGZsYWdzLmggKHdhcm5fZGlzYWJsZWRfb3B0aW1pemF0aW9uKTogQWRkIGl0IGhlcmUuCgkqIGdjc2UuYyAoZ2NzZV9tYWluKTogQWRkIHdhcm5pbmcgd2hlbiBkaXNhYmxlZC4KCSogaW52b2tlLnRleGk6IERvY3VtZW50IC1XZGlzYWJsZWQtb3B0aW1pemF0aW9uLgoKMjAwMC0wOS0yMSAgSmFzb24gTWVycmlsbCAgPGphc29uQHJlZGhhdC5jb20+CgoJKiBkd2FyZjJvdXQuYyAoYWRkX2NvbnN0X3ZhbHVlX2F0dHJpYnV0ZSk6IE11bHRpcGx5IGJ5IGxlbmd0aCwgbm90IDQuCgoJKiBkd2FyZjJvdXQuYyAodHJlZV9hZGRfY29uc3RfdmFsdWVfYXR0cmlidXRlKTogTmV3IGZuLgoJKGdlbl92YXJpYWJsZV9kaWUpOiBDYWxsIGl0IGZvciBub24tZGVmaW5pdGlvbnMuCgoJKiBkd2FyZjJvdXQuYyAoZGllX3N0cnVjdCk6IEFkZCBkaWVfbWFyayBmaWVsZC4KCShtYXJrX2RpZXMsIHVubWFya19kaWVzKTogTmV3IGZucy4KCShjbGVhcl9kaWVfc2l6ZXMpOiBSZW1vdmUuCgkocHJpbnRfZGllKTogQ2hlY2sgZGllX3N5bWJvbCByYXRoZXIgdGhhbiBkaWVfb2Zmc2V0LgoJKGJ1aWxkX2FiYnJldl90YWJsZSwgb3V0cHV0X3B1Ym5hbWVzLCBvdXRwdXRfYXJhbmdlcyk6IENoZWNrCglkaWVfbWFyayByYXRoZXIgdGhhbiBkaWVfb2Zmc2V0LgoJKG91dHB1dF9jb21wX3VuaXQpOiBNb3ZlIGNhbGNfZGllX3NpemVzIGFmdGVyIGJ1aWxkX2FiYnJldl90YWJsZS4KCUNhbGwgbWFya19kaWVzLgoKVGh1IDIxLVNlcC0yMDAwIDE4OjE5OjA1IEJTVCAgTmVpbCBCb290aCAgPE5laWxCQGVhcnRobGluZy5uZXQ+CgoJKiBjcHBmaWxlcy5jIChsb29rdXBfaW5jbHVkZV9maWxlKTogUmVuYW1lIHRvIG9wZW5fZmlsZS4KCUFsd2F5cyBjcmVhdGUgYSBzcGxheSB0cmVlIHZhbHVlLCBldmVuIG9uIHN5c2NhbGwgZmFpbHVyZXMuCglOZWdhdGl2ZSBlbnRyaWVzIGluZGljYXRlZCBieSBmZCA9PSAtMi4KCVJlLW9wZW4gZmlsZXMgY2xvc2VkIGluIHRoZSBtZWFudGltZS4KCShfY3BwX2Zha2VfaW5jbHVkZSk6IENyZWF0ZSBhIG5lZ2F0aXZlIHNwbGF5IHRyZWUgZW50cnkuCgkoZmluZF9pbmNsdWRlX2ZpbGUsIGNwcF9yZWFkX2ZpbGUpOiBVcGRhdGUgZm9yIGZ1bmN0aW9uIG5hbWUKCWNoYW5nZS4KCSogZ2NjLmdkL2NwcC9taTQuYzogVGVzdGNhc2UuCgoyMDAwLTA5LTIxICBOaWNrIENsaWZ0b24gIDxuaWNrY0ByZWRoYXQuY29tPgoKCSogY29uZmlnL2FybS90LWFybS1lbGYgKE1VTFRJTElCX0RJUk5BTUVTKTogRW5hYmxlIG11bHRpbGlicyBmb3IKCUFSTSBhbmQgVEhVTUIgbW9kZXMuCgoJKiBjb25maWcvbWNvcmUvbWNvcmUuYzogRml4IGNvbXBpbGUgdGltZSB3YXJuaW5ncy4KCSogY29uZmlnL21jb3JlL21jb3JlLXByb3Rvcy5oOiBGaXggY29tcGlsZSB0aW1lIHdhcm5pbmdzLgoKMjAwMC0wOS0yMCAgSi4gRGF2aWQgQW5nbGluICA8ZGF2ZUBoaWF1bHkxLmhpYS5ucmMuY2E+CgoJKiBjb25maWd1cmUuaW46IENvcnJlY3QgdGVzdCBvZiBnY2NfY3ZfZ2xpYmMuCgkqIGNvbmZpZ3VyZTogUmVidWlsdC4KCSogY29uZmlnLmluOiBSZWJ1aWx0LgoKMjAwMC0wOS0yMCAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogYnVpbHRpbnMuYyAoZXhwYW5kX2J1aWx0aW5fZnB1dHMpOiBBbHNvIGV4cGFuZCB3aGVuIGxlbmd0aCE9MS4KCShleHBhbmRfYnVpbHRpbik6IEhhbmRsZSBCVUlMVF9JTl9GV1JJVEUuCgoJKiBidWlsdGlucy5kZWYgKEJVSUxUX0lOX0ZXUklURSk6IE5ldyBlbnRyeS4KCgkqIGMtY29tbW9uLmMgKGNfY29tbW9uX25vZGVzX2FuZF9idWlsdGlucyk6IERlY2xhcmUgX19idWlsdGluX2Z3cml0ZS4KCldlZCBTZXAgMjAgMTU6Mzk6MTQgMjAwMCAgUmljaGFyZCBLZW5uZXIgIDxrZW5uZXJAdmxzaTEudWx0cmEubnl1LmVkdT4KCgkqIGdjYy5jIChtb2RpZnlfdGFyZ2V0KTogTmV3IHZhcmlhYmxlIGFuZCBzdHJ1Y3QuCgkocHJvY2Vzc19jb21tYW5kKTogSGFuZGxlIE1PRElGWV9UQVJHRVRfTkFNRS4KCSogdG0udGV4aSAoTU9ESUZZX1RBUkdFVF9OQU1FKTogQWRkIGRvY3VtZW50YXRpb24gZm9yIG5ldyBtYWNyby4KCSogY29uZmlnL3BhL3BhLmggKE1PRElGWV9UQVJHRVRfTkFNRSk6IE5ldyBtYWNyby4KCgkqIGMtZGVjbC5jIChmaW5pc2hfZGVjbCk6IEFkZCBlbHNlJ3MgdG8gYXZvaWQgcmVmZXJlbmNpbmcKCVRZUEVfRE9NQUlOIG9mIGFuIEVSUk9SX01BUksuCgpXZWQgU2VwIDIwIDIxOjQ0OjMxIDIwMDAgIERlbmlzIENoZXJ0eWtvdiAgPGRlbmlzY0BvdmVydGEucnU+CgoJKiBjb25maWcvYXZyL2F2ci5jIChhZGp1c3RfaW5zbl9sZW5ndGgpOiBBZGp1c3QgbGVuZ3RocyBvZgoJYHJlbG9hZF9pbionIGluc25zLgoKMjAwMC0wOS0xOSAgTWFyZWsgTWljaGFsa2lld2ljeiAgPG1hcmVrbUBsaW51eC5vcmcucGw+CgoJKiBjb25maWcvYXZyL2F2ci5tZCAobmVnaGkyKTogQWRkIGFsdGVybmF0aXZlIGZvciBpbnB1dCBhbmQgb3V0cHV0CglvcGVyYW5kcyBpbiBkaWZmZXJlbnQgcmVnaXN0ZXJzLCBhcyBpbiBuZWdzaTIuCgkoKm5lZ3NpMik6IFJlbW92ZSAnKicgZnJvbSB0aGUgbmFtZS4gIFVzZSAibW92dyIgaWYgYXZhaWxhYmxlLgoKMjAwMC0wOS0xOSAgSmltIFdpbHNvbiAgPHdpbHNvbkBjeWdudXMuY29tPgoKCSogY29uZmlnL2lhNjQvY3J0YmVnaW4uYXNtIChfX2Rzb19oYW5kbGUpOiBEZWxldGUgdXNlIG9mCglIQVZFX0dBU19ISURERU4gbWFjcm8uCgpUdWUgMTktU2VwLTIwMDAgMjI6Mzg6NTcgQlNUICBOZWlsIEJvb3RoICA8TmVpbEJAZWFydGhsaW5nLm5ldD4KCgkqIGNwcGxleC5jIChsZXhfbGluZSk6IERyb3AgdGhlIEVPRiB0b2tlbiBmb3IgdW5rbm93bgoJZGlyZWN0aXZlcyBpbiBhc3NlbWJsZXIuCgoyMDAwLTA5LTE5ICBEYXZpZCBFZGVsc29obiAgPGVkZWxzb2huQGdudS5vcmc+CgoJKiBjb25maWd1cmUuaW46IEFsbG93IGVuYWJsZV90aHJlYWRzX2ZsYWcgdmFsdWUgb2YgImFpeCIuICBEZWZpbmUKCXRocmVhZF9maWxlIGFzICJhaXgiIGZvciBBSVggNC4zIGFuZCBhYm92ZS4KCSogY29uZmlndXJlOiBSZWdlbmVyYXRlZC4KCgkqIGd0aHItYWl4Lmg6IE5ldyBmaWxlLgoKCSogcnM2MDAwL3QtYWl4NDM6IFJlcGxhY2Ugc29mdC1mbG9hdCBtdWx0aWxpYiB3aXRoIHB0aHJlYWQuCglSZW1vdmUgNDAzIHByb2Nlc3NvciBtdWx0aWxpYiBtYXRjaC4gIEZpeCByaW9zMiBwcm9jZXNzb3IgbXVsdGlsaWIKCW1hdGNoLgoKCSogcnM2MDAwL2FpeC5oIChBU01fREVDTEFSRV9GVU5DVElPTl9OQU1FKTogVXNlIGZ1bmN0aW9uX3NlY3Rpb24KCXRvIHJldHVybiB0byBhcHByb3ByaWF0ZSBjc2VjdC4KCjIwMDAtMDktMTkgIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIGJ1aWx0aW5zLmMgKGlzX3ZhbGlkX3ByaW50Zl9hcmdsaXN0LCBleHBhbmRfYnVpbHRpbl9wcmludGYpOiBOZXcKCWZ1bmN0aW9ucy4KCShleHBhbmRfYnVpbHRpbl9mcHV0cyk6IFNldCBgdGFyZ2V0JyBwYXJhbWV0ZXIgZm9yIGBleHBhbmRfZXhwcicuCgkoZXhwYW5kX2J1aWx0aW4pOiBIYW5kbGUgQlVJTFRfSU5fUFVUQ0hBUiwgQlVJTFRfSU5fUFVUUyBhbmQKCUJVSUxUX0lOX1BSSU5URi4KCgkqIGJ1aWx0aW5zLmRlZiAoQlVJTFRfSU5fUFVUQ0hBUiwgQlVJTFRfSU5fUFVUUywgQlVJTFRfSU5fUFJJTlRGKToKCU5ldyBlbnRyaWVzLgoKCSogYy1jb21tb24uYyAoaW5pdF9mdW5jdGlvbl9mb3JtYXRfaW5mbyk6IEhhbmRsZSBfX2J1aWx0aW5fcHJpbnRmLgoJU2V0IGBjaGVja19mdW5jdGlvbl9mb3JtYXRfcHRyJy4KCShjX2NvbW1vbl9ub2Rlc19hbmRfYnVpbHRpbnMpOiBTZXQgYHB1dHNfZnR5cGUnIGFuZAoJYHByaW50Zl9mdHlwZScuICBEZWNsYXJlIF9fYnVpbHRpbl9wdXRjaGFyLCBfX2J1aWx0aW5fcHV0cywKCV9fYnVpbHRpbl9wcmludGYgYW5kIHByaW50Zi4KCgkqIHRyZWUuYywgdHJlZS5oIChjaGVja19mdW5jdGlvbl9mb3JtYXRfcHRyKTogRGVjbGFyZS4KClR1ZSAxOS1TZXAtMjAwMCAxODoyNjo1NyBCU1QgIE5laWwgQm9vdGggIDxOZWlsQkBlYXJ0aGxpbmcubmV0PgoKCSogY3BwZmlsZXMuYyAocmVhZF9pbmNsdWRlX2ZpbGUpOiBUYWtlIG5vIHNwZWNpYWwgYWN0aW9uIGZvcgoJemVyby1sZW5ndGggZmlsZXMuCgoyMDAwLTA5LTE5ICBCZXJuZCBTY2htaWR0ICA8YmVybmRzQHJlZGhhdC5jby51az4KCgkqIGZpbmFsLmMgKGluc25fY3VycmVudF9yZWZlcmVuY2VfYWRkcmVzcyk6IFVzZSBJTlNOX1NIVUlEIG9mIHNlcQoJcmF0aGVyIHRoYW4gdGhhdCBvZiBicmFuY2guCgkoc2hvcnRlbl9icmFuY2hlcyk6IERvbid0IGluY3JlbWVudCBpbnNuX2N1cnJlbnRfYWRkcmVzcyB0d2ljZS4KCglVbmRvIG1vc3Qgb2YgdGhlIFdlZCBKYW4gMjcgMjM6Mzk6NTMgMTk5OSBwYXRjaDoKCSogbG9vcC5oIChzdHJ1Y3QgaW5kdWN0aW9uKTogRGVsZXRlIG1lbWJlcnMgZGVyaXZlZCwgaXggYW5kIGxhc3RfdXNlLgoJKHN0cnVjdCBsb29wX2l2cyk6IERlbGV0ZSBtZW1iZXJzIGZpcnN0X2luY3JlbWVudF9naXYgYW5kCglsYXN0X2luY3JlbWVudF9naXYuCgkqIGxvb3AuYyAodmVyaWZ5X2RvbWluYXRvciwgZmluZF9saWZlX2VuZCwgY21wX3JlY29tYmluZV9naXZzX3N0YXRzLAoJcmVjb21iaW5lX2dpdnMpOiBEZWxldGUgZnVuY3Rpb25zLgoJKGZpbmRfYW5kX3ZlcmlmeV9sb29wcyk6IERvbid0IGluaXRpYWxpemUgY29udF9kb21pbmF0b3IuCgkoc3RyZW5ndGhfcmVkdWNlKTogTG9zZSBjb2RlIHRvIHRyeSB0byBmaW5kIGJpdnMgdGhhdCBjYW4gYmUKCWV4cHJlc3NlZCBhcyBnaXZzIG9mIGFub3RoZXIgYml2LCBhbmQgdG8gY29udmVydCBiaXYgaW5jcmVtZW50cwoJaW50byBnaXZzLgoJTG9zZSBsb29wX3NjYW5fc3RhcnQgdmFyaWFibGUsIGFsd2F5cyB1c2UgbG9vcC0+c2Nhbl9zdGFydC4KCURvbid0IGNhbGwgcmVjb21iaW5lX2dpdnMuICBEb24ndCBoYW5kbGUgZGVyaXZlZCBnaXZzLgoJKHJlY29yZF9naXYpOiBEb24ndCBpbml0aWFsaXplIGRlcml2ZWQgYW5kIGxhc3RfdXNlIGZpZWxkcy4KCShiaXZfZWxpbWluaWF0aW9uX2dpdl9oYXNfMF9vZmZzZXQpOiBMb3NlIGNvZGUgdG8gaGFuZGxlIGRlcml2ZWQKCWdpdnMuCgkqIHVucm9sbC5jIChkZXJpdmVkX3JlZ3MpOiBEZWxldGUgc3RhdGljIHZhcmlhYmxlLgoJKHVucm9sbF9sb29wKTogRG9uJ3QgaW5pdGlhbGl6ZSBpdC4KCShjb3B5X2xvb3BfYm9keSk6IExvc2UgY29kZSB0byBoYW5kbGUgZGVyaXZlZCBnaXZzLgoJKGZpbmRfc3BsaXR0YWJsZV9naXZzKTogRG9uJ3QgY2hlY2sgZm9yIGdpdnMgbWFkZSBmcm9tIGJpdgoJaW5jcmVtZW50cy4KCURvbid0IHNldCBkZXJpdmVkX3JlZ3MuCgoJRml4IG1pc2FwcGxpZWQgZWFybGllciBwYXRjaDoKCSogY29uZmlnL3NoL3NoLm1kIChmbG9hdHNpc2ZfaWUpOiBSZWVuYWJsZS4gIFJlbW92ZSBleHBsaWNpdCByZWZlcmVuY2UKCXRvIGZwdWwuCgkoZmxvYXRzaXNmMik6IEdlbmVyYXRlIGZsb2F0c2lzZl9pZSBieSBkZWZhdWx0LgoJKGZsb2F0c2lzZl9pNCk6IENvbmRpdGlvbmFsIG9uIFRBUkdFVF9TSDQuCgoJKGZsb2F0c2lzZjIsIGZsb2F0c2lkZjIsIGV4dGVuZHNmZGYyKTogQWxzbyB1c2UgcmVnX25vX3N1YnJlZ19vcGVyYW5kCglwcmVkaWNhdGUgZm9yIHRoZSBleHBhbmRlcnMuCgoyMDAwLTA5LTE5ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEBjeWdudXMuY29tPgoKCSogY29uZmlnL2kzODYvaTM4Ni5oIChDUFBfQ1BVX1NQRUMpOiBEZWZpbmUgaTU4NiBhbmQgaTY4NiBzeW1ib2xzCglpbiBhZGRpdGlvbiB0byBwZW50aXVtIGFuZCBwZW50aXVtcHJvIHN5bWJvbHMuCgkoQ1BQX0NQVV9ERUZBVUxUX1NQRUMpOiBMaWtld2lzZS4KCgkqIGMtdHlwZWNrLmMgKGNfZXhwYW5kX2FzbV9vcGVyYW5kcyk6IFJlc3RvcmUgdGhlIG91dHB1dCB0cmVlCglhZnRlciBleHBhbmRpbmcuCgoJKiBzdG10LmMgKGV4cGFuZF9leHByX3N0bXQpOiBPbmx5IGNhbGwgd2Fybl9pZl91bnVzZWRfdmFsdWUKCWlmIHRoZSB0cmVlIGhhcyBzaWRlIGVmZmVjdHMuCgkod2Fybl9pZl91bnVzZWRfdmFsdWUpOiBEbyBub3Qgd2FybiBhYm91dCB2b2lkIGNvbnN0cnVjdHMuCgoJKiBjLWRlY2wuYyAocG9wbGV2ZWwpOiBJbnZva2Ugd2Fybl9hYm91dF91bnVzZWRfdmFyaWFibGVzLgoKCSogdW5yb2xsLmMgKGNvcHlfbG9vcF9ib2R5KTogVXBkYXRlIExBQkVMX05VU0VTIGJlZm9yZQoJY2FsbGluZyBpbnZlcnRfanVtcC4KCjIwMDAtMDktMTggIEdlb2ZmIEtlYXRpbmcgIDxnZW9mZmtAY3lnbnVzLmNvbT4KCgkqIGNvbWJpbmUuYyAoY2FuX2NvbWJpbmVfcCk6IERvbid0IHN1YnN0aXR1dGUgYW4gQVNNX09QRVJBTkRTCglpbnRvIGFueXRoaW5nLgoKMjAwMC0wOS0xOCAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogTWFrZWZpbGUuaW4gKGMtY29tbW9uLm8pOiBEZXBlbmQgb24gZGlhZ25vc3RpYy5oLgoKCSogYy1jb21tb24uYzogSW5jbHVkZSBkaWFnbm9zdGljLmguCgkodGZhZmYpOiBEZWxldGUuCgkoc3RhdHVzX3dhcm5pbmcpOiBOZXcgZnVuY3Rpb24uCgkoY2hlY2tfZm9ybWF0X2luZm8sIG1heWJlX3JlYWRfZG9sbGFyX251bWJlciwgY2hlY2tfZm9ybWF0X3R5cGVzLAoJZmluaXNoX2RvbGxhcl9mb3JtYXRfY2hlY2tpbmcsIGNoZWNrX2Z1bmN0aW9uX2Zvcm1hdCk6IEFjY2VwdCBhCglgc3RhdHVzJyBwYXJhbWV0ZXIuICBBbGwgY2FsbGVycyBjaGFuZ2VkLgoKCSogYy1jb21tb24uaCAoY2hlY2tfZnVuY3Rpb25fZm9ybWF0KTogQWNjZXB0IGEgYHN0YXR1cycgcGFyYW1ldGVyLgoKCSogYy10eXBlY2suYzogVXBkYXRlIGNhbGwgdG8gYGNoZWNrX2Z1bmN0aW9uX2Zvcm1hdCcuCgoyMDAwLTA5LTE4ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEBjeWdudXMuY29tPgoKCSogYy1kZWNsLmMgKGNfZXhwYW5kX2JvZHkpOiBDYWxsIG1hcmtfdmFyYXJncyBiZWZvcmUKCWV4cGFuZF9mdW5jdGlvbl9zdGFydC4KCjIwMDAtMDktMTggIEdlb2ZmIEtlYXRpbmcgIDxnZW9mZmtAY3lnbnVzLmNvbT4KCgkqIGNvbmZpZy9yczYwMDAvZWFiaS1jbi5hc206IFVzZSAvKiovIHRvIGRlbGltaXQgY29tbWVudHMsIG5vdCAjLgoJKiBjb25maWcvcnM2MDAwL2VhYmktY2kuYXNtOiBMaWtld2lzZS4KCjIwMDAtMDktMTggIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgoJKiBlbWl0LXJ0bC5jIChpbml0X2VtaXRfb25jZSk6IEluaXRpYWxpemUgY29uc3RfdGlueV9ydHgKCWZvciBCSW1vZGUuCgoyMDAwLTA5LTE4ICBKaW0gV2lsc29uICA8d2lsc29uQGN5Z251cy5jb20+CgoJKiB1bnJvbGwuYyAobG9vcF9pdGVyYXRpb25zKTogUGFzcyBpbmNyZW1lbnQgdG8gZXh0ZW5kX2Zvcl9naXZfdmFsdWUKCWJlZm9yZSBwYXNzaW5nIGl0IHRvIGZvbGRfcnR4X211bHRfYWRkLgoKCSogdW5yb2xsLmMgKGZpbmFsX2dpdl92YWx1ZSk6IFBhc3MgaW5jcmVtZW50IHRocm91Z2gKCWV4dGVuZF92YWx1ZV9mb3JfZ2l2IGJlZm9yZSBwYXNzaW5nIGl0IHRvIGVtaXRfaXZfYWRkX211bHQuCgoJKiBmdW5jdGlvbi5jIChmaXh1cF92YXJfcmVmc18xLCBjYXNlIFpFUk9fRVhUUkFDVCk6IElmIHdlIGhhdmUgYQoJcGFyYWRveGljYWwgc3VicmVnLCB0aGVuIGRpcmVjdGx5IHN1YnN0aXR1dGUgdGhlIHJlcGxhY2VtZW50IGFuZAoJcmV0dXJuLgoKTW9uIDE4LVNlcC0yMDAwIDIyOjEyOjQ0IEJTVCAgTmVpbCBCb290aCAgPE5laWxCQGVhcnRobGluZy5uZXQ+CgoJKiBjcHAudGV4aTogVXBkYXRlIGRvY3VtZW50YXRpb24sIGluY2x1ZGluZyBzb21lIGNsYXJpZmljYXRpb25zLAoJdGhlIHRyZWF0bWVudCBvZiB2YXJpb3VzIG5ld2xpbmUgY29tYmluYXRpb25zLCBhbmQgc3BhY2UgYmV0d2VlbgoJYmFja3NsYXNoIGFuZCBuZXdsaW5lLgoKTW9uIFNlcCAxOCAyMTowMDo0NyAyMDAwICBKIm9ybiBSZW5uZWNrZSA8YW15bGFhckByZWRoYXQuY28udWs+CgoJKiBzZGJvdXQuYyAoUFVUX1NEQl9ERUYsIFBVVF9TREJfVEFHLCBQVVRfU0RCX0VQSUxPR1VFX0VORCk6CglSZXBsYWNlIEFTTV9PVVRQVVRfTEFCRUxSRUYgd2l0aCBhc3NlbWJsZV9uYW1lLgoKTW9uIFNlcCAxOCAyMDoyNjo1MCAyMDAwICBKIm9ybiBSZW5uZWNrZSA8YW15bGFhckByZWRoYXQuY28udWs+CgoJKiBzaC5jIChhZGRzdWJjb3N0cyk6IENPTlNUIGlzIG5vdCBjaGVhcC4KCShmaW5kX2JhcnJpZXIpOiBGb3IgU2gxLCB0YWtlIGFsaWdubWVudCBhZnRlciBqdW1wcyBpbnRvIGFjY291bnQuCgoyMDAwLTA5LTE1ICBBbmRyZXcgSGFsZXkgIDxhcGhAcmVkaGF0LmNvbT4KCgkqIHRvcGxldi5jIChyZXN0X29mX2NvbXBpbGF0aW9uKTogQ2FsbCBwdXJnZV9oYXJkX3N1YnJlZ19zZXRzIHRvCglyZW1vdmUgYWxsIFNFVHMgb2YgU1VCUkVHcyBvZiBoYXJkIHJlZ2lzdGVycy4KCSogZnVuY3Rpb24uYyAocHVyZ2VfaGFyZF9zdWJyZWdfc2V0cyk6IE5ldyBmdW5jdGlvbi4KCShwdXJnZV9zaW5nbGVfaGFyZF9zdWJyZWdfc2V0KTogTmV3IGZ1bmN0aW9uLgoJKiBydGwuaDogKHB1cmdlX2hhcmRfc3VicmVnX3NldHMpOiBOZXcgZnVuY3Rpb24uCgoyMDAwLTA5LTE4ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEBjeWdudXMuY29tPgoKCSogY29uZmlnL2lhNjQvaWE2NC1wcm90b3MuaDogVXBkYXRlLgoJKiBjb25maWcvaWE2NC9pYTY0LmMgKHNpZ25lZF9pbmVxdWFsaXR5X29wZXJhdG9yKTogTmV3LgoJKGlhNjRfZXhwYW5kX2NvbXBhcmUpOiBOZXcuCgkoaWE2NF9yZWdpc3Rlcl9tb3ZlX2Nvc3QpOiBIYW5kbGUgUFJfUkVHUyBtb3Zlcy4KCShpYTY0X3NlY29uZGFyeV9yZWxvYWRfY2xhc3MpOiBSZXF1aXJlIGEgR1Igd2hlbiBtb3ZpbmcgdG8gYSBQUi4KCShzdHJ1Y3QgcmVnX3dyaXRlX3N0YXRlKTogQWRkIHdyaXR0ZW5fYnlfYW5kL29yLgoJKHN0cnVjdCByZWdfZmxhZ3MpOiBBZGQgaXNfYW5kL29yLgoJKHJ3c191cGRhdGUpOiBTZXQgdGhlbS4KCShyd3NfYWNjZXNzX3JlZ25vKTogVGVzdCB0aGVtIHRvIGFsbG93IHBhcmFsbGVsIGNvbXBhcmlzb25zLgoJKHJ0eF9uZWVkc19iYXJyaWVyKTogUmVjb2duaXplIHBhcmFsbGVsIGNvbXBhcmlzb25zLgoJKGVtaXRfaW5zbl9ncm91cF9iYXJyaWVycyk6IFNldCBwcmV2X2luc24gYWZ0ZXIgYSBjYWxsIHN0b3AgYml0LgoJQ2FsbCByZWNvZ19tZW1vaXplZDsgaWdub3JlIHByZWRfcmVsX211dGV4LgoJKGVtaXRfcHJlZGljYXRlX3JlbGF0aW9uX2luZm8pOiBEb24ndCBjYWxsIGZpbmRfYmFzaWNfYmxvY2tzIGhlcmUuCgkoaWE2NF9yZW9yZyk6IERvIGl0IGhlcmUgaW5zdGVhZC4KCSogY29uZmlnL2lhNjQvaWE2NC5oOiBzL0NDbW9kZS9CSW1vZGUvZwoJKE1PREVTX1RJRUFCTEVfUCk6IERvbid0IHRpZSBCSW1vZGUuCgkoUFJFRkVSUkVEX1JFTE9BRF9DTEFTUyk6IERvIG5vdCByZWxvYWQgb3BlcmF0aW9ucyBpbnRvIEFSIHJlZ3MuCgkoQ09OU1RfQ09TVFMpOiBQaWNrIHNlbnNpYmxlIHZhbHVlcyBmb3IgQ09OU1RfSU5UIGJhc2VkIG9uIGNvbnRleHQuCgkoUlRYX0NPU1RTKTogTWFrZSBtdWx0aXBseSA0IGluc25zLgoJKE1FTU9SWV9NT1ZFX0NPU1QpOiBOZXcuCgkoUFJFRElDQVRFX0NPREVTKTogVXBkYXRlLgoJKiBjb25maWcvaWE2NC9pYTY0Lm1kOiBzL0NDbW9kZS9CSW1vZGUvZwoJKG1vdmNjaSwgbW92YmkpOiBOZXcuCgkoYW5kYmkzLCBhbmRjbWJpMywgaW9yYmkzLCBpb3JjbWJpMywgb25lX2NtcGxiaTIpOiBOZXcuCgkoY21wc2lfYW5kXzAsIGNtcHNpX2FuZF8xLCBjbXBzaV9hbmRub3RfMCwgY21wc2lfYW5kbm90XzEpOiBOZXcuCgkoY21wZGlfYW5kXzAsIGNtcGRpX2FuZF8xLCBjbXBkaV9hbmRub3RfMCwgY21wZGlfYW5kbm90XzEpOiBOZXcuCgkodGJpdF9hbmRfMCwgdGJpdF9hbmRfMSwgdGJpdF9hbmRfMiwgdGJpdF9hbmRfMyk6IE5ldy4KCShjbXBzaV9vcl8wLCBjbXBzaV9vcl8xLCBjbXBzaV9vcmNtXzAsIGNtcHNpX29yY21fMSk6IE5ldy4KCShjbXBkaV9vcl8wLCBjbXBkaV9vcl8xLCBjbXBkaV9vcmNtXzAsIGNtcGRpX29yY21fMSk6IE5ldy4KCSh0Yml0X29yXzAsIHRiaXRfb3JfMSwgdGJpdF9vcl8yLCB0Yml0X29yXzMpOiBOZXcuCgkobXVsc2ksIG11bGRpKTogVXNlIHhtcHkgbm90IHhtYS4KCShjbXBiaSk6IE5ldy4KCShtb3ZjYywgbW92Y2NfaW50ZXJuYWwpOiBSZW1vdmUuCgkoYnJhbmNoIGV4cGFuZGVycyk6IFVzZSBpYTY0X2V4cGFuZF9jb21wYXJlLgoJKHNldGNjIGV4cGFuZGVycyk6IExpa2V3aXNlLgoJKGNtb3YgaW5zbnMpOiBVc2UgbW92ZV9vcGVyYW5kIGFuZCBpYTY0X21vdmVfb2suCgkocHJlZF9yZWxfbXV0ZXgpOiBVc2UgdW5zcGVjIG5vdCB1bnNwZWNfdm9sYXRpbGUuICBQcmV2ZW50IHRoZQoJc2NoZWR1bGVyIGZyb20gbW92aW5nIGl0IHBhc3QgYSB1c2UuCgkqIGNvbmZpZy9pYTY0L2J1aWxkLmhhY2tzOiBSZW1vdmUuCgpNb24gMTgtU2VwLTIwMDAgMTk6MjE6MzUgQlNUICBOZWlsIEJvb3RoICA8TmVpbEJAZWFydGhsaW5nLm5ldD4KCgkqIGNwcGhhc2guaCAoSEFTSFNURVApOiBUYWtlIGNoYXJhY3RlciByYXRoZXIgdGhhbiBwb2ludGVyCgl0byBjaGFyYWN0ZXIuCgkoX2NwcF9jaGVja19kaXJlY3RpdmUsIF9jcHBfY2hlY2tfbGluZW1hcmtlcik6IFVwZGF0ZSBwcm90b3R5cGVzLgoKCSogY3BwaGFzaC5jIChjcHBfbG9vb2t1cCk6IFVwZGF0ZSBmb3IgbmV3IEhBU0hTVEVQLgoKCSogY3BwbGV4LmMgKGF1dG9fZXhwYW5kX25hbWVfc3BhY2UsIHRyaWdyYXBoX3JlcGxhY2UsCgliYWNrc2xhc2hfc3RhcnQsIGhhbmRsZV9uZXdsaW5lLCBwYXJzZV9uYW1lLCBJTklUX1RPS0VOX1NUUiwKCUlNTUVEX1RPS0VOLCBQUkVWX1RPS0VOX1RZUEUsIFBVU0hfVE9LRU4sIFJFVklTRV9UT0tFTiwKCUJBQ0tVUF9UT0tFTiwgQkFDS1VQX1RSSUdSQVBILCBNSUdIVF9CRV9ESVJFQ1RJVkUsCglLTk9XTl9ESVJFQ1RJVkUpOiBEZWxldGUuCgoJKGhhbmRsZV9uZXdsaW5lLCBjaGVja19sb25nX3Rva2VuLCBza2lwX2VzY2FwZWRfbmV3bGluZXMsCgl1bnRlcm1pbmF0ZWQpOiBOZXcgZnVuY3Rpb25zLgoJKEFDQ0VQVF9DSEFSLCBTQVZFX1NUQVRFLCBSRVNUT1JFX1NUQVRFKTogTmV3IG1hY3Jvcy4KCgkocGFyc2VfaWRlbnRpZmllcik6IFdhcyBwYXJzZV9uYW1lLCBuZXcgaW1wbGVtZW50YXRpb24uCgkoc2tpcF9saW5lX2NvbW1lbnQsIHNraXBfYmxvY2tfY29tbWVudCwgc2tpcF93aGl0ZXNwYWNlLAoJcGFyc2VfbnVtYmVyLCBwYXJzZV9zdHJpbmcsIHRyaWdyYXBoX29rLCBzYXZlX2NvbW1lbnQsCglhZGp1c3RfY29sdW1uLCBfY3BwX2dldF9saW5lKTogTmV3IGltcGxlbWVudGF0aW9ucy4KCgkobGV4X3Rva2VuKTogTmV3IGZ1bmN0aW9uLiAgTGV4ZXMgYSB0b2tlbiBhdCBhIHRpbWUsIGxvb2tpbmcKCWZvcndhcmRzLiAgQ29udGFpbnMgbW9zdCBvZiB0aGUgZ3V0cyBvZiB0aGUgb2xkIGxleF9saW5lLgoJKGxleF9saW5lKTogTmV3IGltcGxlbWVudGF0aW9uLCB1c2luZyBsZXhfdG9rZW4gdG8gb2J0YWluCglpbmRpdmlkdWFsIHRva2Vucy4KCShjcHBfc2Nhbl9idWZmZXIpOiBVc2UgdGhlIHRva2VuJ3MgbGluZSwgbm90IHRoZSBsaXN0J3MgbGluZS4KCgkqIGNwcGxpYi5jIChfY3BwX2NoZWNrX2RpcmVjdGl2ZSwgX2NwcF9jaGVja19saW5lbWFya2VyKToKCSBOZXcgaW1wbGVtZW50YXRpb25zLgoJKGRvX2Fzc2VydCk6IERvbid0IGJvdGhlciBzZXR0aW5nIHRoZSBhbnN3ZXIncyBsaXN0J3MgbGluZS4KCShjcHBfcHVzaF9idWZmZXIpOiBJbml0aWFsaXplIG5ldyBwZmlsZSBhbmQgcmVhZF9haGVhZCBtZW1iZXJzCglvZiBzdHJ1Y3QgY3BwX2J1ZmZlci4KCgkqIGNwcGxpYi5oIChjcHBjaGFyX3QpOiBOZXcgdHlwZWRlZi4KCShzdHJ1Y3QgY3BwX2J1ZmZlcik6IHJlYWRfYWhlYWQsIHBmaWxlIGFuZCBjb2xfYWRqdXN0IGFyZQoJbmV3IG1lbWJlcnMuCgkoc3RydWN0IGxleGVyX3N0YXRlKTogTmV3IHN0cnVjdHVyZSB0aGF0IGRldGVybWluZXMgdGhlIHN0YXRlCglhbmQgYmVoYXZpb3Igb2YgdGhlIGxleGVyLgoJKElOX0RJUkVDVElWRSwgS05PV05fRElSRUNUSVZFKTogTmV3IG1hY3Jvcy4KCShzdHJ1Y3QgY3BwX3JlYWRlcik6IE5ldyBtZW1iZXIgInN0YXRlIi4gUmVuYW1lCgltdWx0aWxpbmVfc3RyaW5nX2xpbmUgYW5kIG11bHRpbGluZV9zdHJpbmdfY29sdW1uLiBEZWxldGUKCWNvbF9hZGp1c3QsIGluX2xleF9saW5lIG1lbWJlcnMuCgkoQ1BQX0JVRl9DT0xVTU4pOiBVcGRhdGUuCgoyMDAwLTA5LTE4ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEBjeWdudXMuY29tPgoKCSogY29tYmluZS5jIChzaW1wbGlmeV9jb21wYXJpc29uKTogU2hpZnQgYSBOT1Qgb3V0IG9mIGEgc2luZ2xlCgliaXQgdGVzdC4KCgkqIGNvbWJpbmUuYyAoaWZfdGhlbl9lbHNlX2NvbmQpOiBDYW5vbmljYWxpemUgQkltb2RlIHRydWUgdG8KCVNUT1JFX0ZMQUdfVkFMVUUuCgkqIGV4cGxvdy5jICh0cnVuY19pbnRfZm9yX21vZGUpOiBMaWtld2lzZS4KCgkqIGNvbWJpbmUuYyAoY29tYmluZV9zaW1wbGlmeV9ydHgpOiBVc2UgZ2VuX3VuYXJ5IHRvIGRpc3RyaWJ1dGUKCXRoZSBOT1QgZm9yIERlIE1vcmdhbidzIHJ1bGUuCgkqIHNpbXBsaWZ5LXJ0eC5jIChzaW1wbGlmeV91bmFyeV9vcGVyYXRpb24pOiBTaW1wbGlmeSBhIEJJbW9kZSBOT1QKCW9mIGEgY29tcGFyaXNvbiB0byB0aGUgcmV2ZXJzZSBjb21wYXJpc29uLgoKCSogY29tYmluZS5jICh0cnlfY29tYmluZSk6IEFsbG93IHNwbGl0IHRvIGNyZWF0ZSBhIHNpbmdsZSBpbnNuLgoKCSogbWFjaG1vZGUuZGVmOiBBZGQgQkltb2RlLiAgQWRkIGEgY29sdW1uIGZvciBiaXRzaXplLgoJKiBtYWNobW9kZS5oIChERUZfTUFDSE1PREUpOiBBZGp1c3QgZm9yIGV4dHJhIGNvbHVtbi4KCShHRVRfTU9ERV9CSVRTSVpFKTogVXNlIGl0LgoJKiBydGwuYyAoREVGX01BQ0hNT0RFKTogQWRqdXN0IGZvciBleHRyYSBjb2x1bW4uCgkobW9kZV9iaXRzaXplKTogTmV3LgoJKG1vZGVfbWFza19hcnJheSk6IFVzZSBiaXRzaXplLgoJKiBjb21iaW5lLmMgKGNvbWJpbmVfc2ltcGxpZnlfcnR4KTogUmVxdWlyZSBpbm5lciBhbmQgb3V0ZXIKCW1vZGVzIHRvIG1hdGNoIG9uIG5vbnplcm9fYml0cyBvcHRpbWl6YXRpb25zLgoKMjAwMC0wOS0xOCAgQmVybmQgU2NobWlkdCAgPGJlcm5kc0ByZWRoYXQuY28udWs+CgoJKiByZWxvYWQxLmMgKGZvcmdldF9vbGRfcmVsb2Fkc18xKTogSWYgYSBoYXJkIHJlZyBpcyBzdG9yZWQsIGNsZWFyCglpdHMgZW50cnkgaW4gc3BpbGxfcmVnX3N0b3JlLgoJKiBjb25maWcvc2gvbGliMWZ1bmNzLmFtcyAobW92c3RyX2k0IGZ1bmN0aW9ucyk6IEFsd2F5cyBjb21waWxlIGluLgoJKiBzaC5jIChyZWdfbm9fc3VicmVnX29wZXJhbmQpOiBOZXcgZnVuY3Rpb24uCgkqIHNoLXByb3Rvcy5oIChyZWdfbm9fc3VicmVnX29wZXJhbmQpOiBEZWNsYXJlIGl0LgoJKiBzaC5oIChQUkVESUNBVEVfQ09ERVMpOiBBZGQgaXQuCgkqIHNoLm1kIChmbG9hdHNpc2YyX2k0LCBmbG9hdHNpZGYyX2ksIGV4dGVuZHNmZGYyX2k0KTogVXNlIGl0IGZvcgoJaW5wdXQgb3BlcmFuZCB0aGF0IG5lZWRzIHRvIGJlIGluIGZwdWwuCgkoZml4X3RydW5jc2ZzaTIsIGZpeF90cnVuY3Nmc2kyX2k0KTogVXNlIHJlZ2lzdGVyX29wZXJhbmQgZm9yIG91dHB1dC4KCSogc2guYyAoZmluZF9iYXJyaWVyKTogVGFrZSBpbnRvIGFjY291bnQgdGhhdCBtYWNoaW5lX2RlcGVuZGVudF9yZW9yZwoJbWlnaHQgYWRkIG5ldyBpbnNucy4KCjIwMDAtMDktMTggIEFsZXhhbmRyZSBPbGl2YSAgPGFvbGl2YUByZWRoYXQuY29tPgoKCSogY29uZmlnL3NoL3NoLmMgKHNoX2V4cGFuZF9wcm9sb2d1ZSk6IE1hcmsgR09UYWRkcjJwaWNyZWcgYXMKCU1BWUJFX0RFQUQuCgkoc2hfZXhwYW5kX2VwaWxvZ3VlKTogVGFrZSB0aGUgUElDIHJlZ2lzdGVyIGludG8gYWNjb3VudCB3aGVuCgljb21wdXRpbmcgdGhlIGZyYW1lIHNpemUuCgoJKiBjb25maWcvc2gvc2guYyAobm9ucGljX3N5bWJvbF9tZW50aW9uZWRfcCk6IENoZWNrIExBQkVMX1JFRnMuCgkqIGNvbmZpZy9zaC9zaC5tZCAoc3ltX2xhYmVsMnJlZywgc3ltUExUX2xhYmVsMnJlZyk6IFByb3RlY3QKCUxBQkVMX1JFRnMgd2l0aCBhIFBJQy1zYWZlIHVuc3BlYy4KCjIwMDAtMDktMTggIEpvc2VwaCBTLiBNeWVycyAgPGpzbTI4QGNhbS5hYy51az4KCgkqIGMtY29tbW9uLmMgKGNoZWNrX2Zvcm1hdF9pbmZvKTogUHJvcGVybHkgc2F2ZSB0aGUgYXJndW1lbnQKCW51bWJlciBhbmQgcGFyYW1ldGVyIGZvciAkIG9wZXJhbmQgbnVtYmVyIGZvcm1hdHMgaW4gY2FzZSB3aWR0aAoJYW5kIHByZWNpc2lvbiBhcmd1bWVudHMgYXJlIGFsc28gdXNlZC4gIEFsbG93IHByaW50ZiB3aWR0aCBhbmQKCXByZWNpc2lvbiBhcmd1bWVudHMgdG8gaGF2ZSBvcGVyYW5kIG51bWJlcnMgZXZlbiBpZiBub25lIHdhcwoJc3BlY2lmaWVkIGZvciB0aGUgbWFpbiBmb3JtYXQsIHNpbmNlIHRoaXMgaXMgT0sgZm9yICUqLiptLiAgT25seQoJb2JqZWN0IHRvIG1pc3NpbmcgJCBvcGVyYW5kIG51bWJlciBpZiB0aGUgZm9ybWF0IHVzZWQgcmVxdWlyZXMgYW4KCWFyZ3VtZW50LgoKMjAwMC0wOS0xOCAgSm9zZXBoIFMuIE15ZXJzICA8anNtMjhAY2FtLmFjLnVrPgoKCSogYy1jb21tb24uYyAoZm9ybWF0X2NoYXJfaW5mbyk6IEFkZCAnVycgZmxhZyB0byBjb21tZW50LgoJKHByaW50X2NoYXJfdGFibGUsIHNjYW5fY2hhcl90YWJsZSk6IFVzZSBpdC4KCShjaGVja19mb3JtYXRfaW5mbyk6IFVzZSB0aGUgJ1cnIGZsYWcgdG8gZGV0ZXJtaW5lIHdoZXRoZXIgYQoJZm9ybWF0IGFyZ3VtZW50IGlzIHdyaXR0ZW4gaW50by4KCjIwMDAtMDktMTggIEpvc2VwaCBTLiBNeWVycyAgPGpzbTI4QGNhbS5hYy51az4KCgkqIGMtY29tbW9uLmMgKGNoZWNrX2Zvcm1hdF90eXBlcyk6IFJlb3JnYW5pemUgYW5kIGNsZWFuIHVwLAoJY2hlY2tpbmcgZWFybGllciBmb3IgRVJST1JfTUFSS3MgYW5kIG1ha2luZyBjdXJfdHlwZSBpbnRvIGl0cwoJVFlQRV9NQUlOX1ZBUklBTlQgd2hlcmUgY29udmVuaWVudC4KCjIwMDAtMDktMTggIEpvc2VwaCBTLiBNeWVycyAgPGpzbTI4QGNhbS5hYy51az4KCgkqIGdjYy5jIChjcHBfb3B0aW9ucyk6IEFkZCBzcGVjcyBmb3IgX19TVERDX0hPU1RFRF9fLgoKMjAwMC0wOS0xOCAgQmVybmQgU2NobWlkdCAgPGJlcm5kc0ByZWRoYXQuY28udWs+CgoJKiBvcHRhYnMuYyAoZW1pdF9saWJjYWxsX2Jsb2NrKTogU2V0IENPTlNUX0NBTExfUCBmb3IgdGhlIGNhbGwuCgoJKiBpMzg2LXByb3Rvcy5oIChpeDg2X2luaXRfYnVpbHRpbnMsIGl4ODZfZXhwYW5kX2J1aWx0aW4pOiBEZWNsYXJlLgoJKiBpMzg2LmMgKHN0cnVjdCBidWlsdGluX2Rlc2NyaXB0aW9uKTogTmV3LgoJKGJkZXNjX2NvbWksIGJkZXNjXzJhcmcsIGJkZXNjXzFhcmcpOiBOZXcgYXJyYXlzLgoJKG1teF9yZWdfb3BlcmFuZCk6IERlY2xhcmUgTU9ERSBhcmcgYXMgdW51c2VkLgoJKGl4ODZfZXhwYW5kX3NzZV9jb21pLCBpeDg2X2V4cGFuZF9zc2VfY29tcGFyZSwgc2FmZV92ZWN0b3Jfb3BlcmFuZCwKCWl4ODZfZXhwYW5kX3Vub3AxX2J1aWx0aW4sIGl4ODZfZXhwYW5kX3Vub3BfYnVpbHRpbiwKCWl4ODZfZXhwYW5kX2Jpbm9wX2J1aWx0aW4sIGl4ODZfZXhwYW5kX3N0b3JlX2J1aWx0aW4sCglpeDg2X2luaXRfYnVpbHRpbnMsIGl4ODZfZXhwYW5kX2J1aWx0aW4pOiBOZXcgZnVuY3Rpb25zLgoJKiBpMzg2LmggKGl4ODZfYnVpbHRpbnMpOiBOZXcgZW51bWVyYXRpb24uCgkoTURfSU5JVF9CVUlMVElOUywgTURfRVhQQU5EX0JVSUxUSU4pOiBOZXcgbWFjcm9zLgoJKiBpMzg2Lm1kIChhdHRyIGxlbmd0aF9pbW1lZGlhdGUpOiAwIGZvciBtbXgvc3NlIHR5cGVzLgoJKGF0dHIgcHJlZml4XzBmKTogMSBmb3IgbW14L3NzZSB0eXBlcy4KCShzZXRjY18yKTogUmVtb3ZlICIqIiBzbyB3ZSBnZXQgZ2VuX3NldGNjXzIuCgkoZW1tcyk6IEFjY291bnQgZm9yIGNoYW5nZWQgcmVnaXN0ZXIgbnVtYmVyaW5nLiAgU2V0ICJtZW1vcnkiIGF0dHIKCXRvIHVua25vd24uCgkoc2ZlbmNlKTogU2V0ICJtZW1vcnkiIGF0dHIgdG8gdW5rbm93bi4KCjIwMDAtMDktMTggIEFuZHJlYXMgSmFlZ2VyICA8YWpAc3VzZS5kZT4KCgkqIGNvbmZpZ3VyZS5pbjogRGVmaW5lIF9HTlVfU09VUkNFIG9ubHkgd2hlbiB1c2luZyB0aGUgR05VIEMKCUxpYnJhcnkuCgkqIGNvbmZpZ3VyZTogUmVnZW5lcmF0ZWQuCgkqIGNvbmZpZy5pbjogUmVnZW5lcmF0ZWQuCgoyMDAwLTA5LTE3ICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogY3BwaW5pdC5jIChjcHBfaW5pdCk6IERvbid0IHVzZSBBTlNJIHByb3RvdHlwZXMuCgkqIGZsb3cuYyAoZmxvd19kdW1wX2xvb3ApOiBMaWtld2lzZS4KCShmbG93X2xvb3BzX2R1bXApOiBMaWtld2lzZS4KCgkqIGMtdHlwZWNrLmMgKGNfc3RhcnRfY2FzZSk6IEZpeCB0eXBvLgoKMjAwMC0wOS0xNyAgSm9zZXBoIFMuIE15ZXJzICA8anNtMjhAY2FtLmFjLnVrPgoKCSogYy1kZWNsLmMgKGdyb2tkZWNsYXJhdG9yKTogRG9uJ3QgZ2l2ZSBhIHdhcm5pbmcgYWJvdXQgZGVmYXVsdGluZwoJdG8gaW50IGZvciBwbGFpbiBjb21wbGV4IHdoaWNoIGRlZmF1bHRzIHRvIGNvbXBsZXggZG91YmxlLiAgRG8KCXdhcm4gYWJvdXQgZGVmYXVsdGluZyB0byBjb21wbGV4IGRvdWJsZSBpZiBwZWRhbnRpYy4gIFdhcm4gYWJvdXQKCWNvbXBsZXggaW50ZWdlciB0eXBlcyBpZiBwZWRhbnRpYy4gIFdhcm4gYWJvdXQgY29tcGxleCB0eXBlcyBpZgoJcGVkYW50aWMgYW5kIG5vdCBpbiBDOTkgbW9kZS4KCSogYy10eXBlY2suYyAoYnVpbGRfdW5hcnlfb3ApOiBJZiBwZWRhbnRpYywgd2FybiBhYm91dCB1c2Ugb2YgfgoJZm9yIGNvbXBsZXggY29uanVnYXRpb24uCgoyMDAwLTA5LTE3ICBKb3NlcGggUy4gTXllcnMgIDxqc20yOEBjYW0uYWMudWs+CgoJKiBjb250cmliLnRleGk6IFVwZGF0ZSBteSBlbnRyeS4KClN1biBTZXAgMTcgMTg6NDg6MzIgMjAwMCAgRGVuaXMgQ2hlcnR5a292ICA8ZGVuaXNjQG92ZXJ0YS5ydT4KCgkqIGNvbmZpZy9hdnIvYXZyLm1kIChtY3VfZW5oYW5jZWQpOiBOZXcgYXR0cmlidXRlLgoJKG1jdV9tZWdhKTogTGlrZXdpc2UuCgkoZXh0ZW5kaGlzaTIpOiBVc2UgbWN1X2VuaGFuY2VkLgoJKHplcm9fZXh0ZW5kaGlzaTIpOiBMaWtld2lzZS4KCShjYWxsX2luc24pOiBVc2UgbWN1X2VuaGFuY2VkIGFuZCBtY3VfbWVnYS4KCShjYWxsX3ZhbHVlX2luc24pOiBMaWtld2lzZS4KCSgqc2JyeF9icmFuY2gpOiBVc2UgbWN1X21lZ2EuCgkoKnNicnhfYW5kX2JyYW5jaHNpKTogTGlrZXdpc2UuCgkoKnNicnhfYW5kX2JyYW5jaGhpKTogTGlrZXdpc2UuCgkoKnRhYmxlanVtcF9saWIpOiBMaWtld2lzZS4KClN1biBTZXAgMTcgMTA6NDY6MTcgMjAwMCAgUmljaGFyZCBLZW5uZXIgIDxrZW5uZXJAdmxzaTEudWx0cmEubnl1LmVkdT4KCgkqIGFsaWFzLmMgKHRydWVfZGVwZW5kZW5jZSk6IEFsbG93IG5vbi11bmNoYW5naW5nIHJlYWQgdG8gY29uZmxpY3QKCXdpdGggdW5jaGFuZ2luZyB3cml0ZS4KCgkqIGV4cHIuYyAoc3RvcmVfY29uc3RydWN0b3JfZmllbGQpOiBBY2NlcHQgQUxJQVNfU0VUIGFyZy4KCShzdG9yZV9jb25zdHJ1Y3Rvcik6IFBhc3MgYWxpYXNfc2V0IHRvIGl0LgoKCSogYy1kZWNsLmMgKGdyb2tkZWNsYXJhdG9yKTogUmVvcmRlciB0ZXN0cyB0byBhdm9pZCBsb29raW5nIGF0CglUWVBFX01BSU5fVkFSSUFOVCBvZiBFUlJPUl9NQVJLLgoJKiBjLWxleC5jIChyZWFkZXNjYXBlKTogQXZvaWQgdXNpbmcgcHJpbnRmIHN5bnRheCB3ZSBkb24ndCByZWNvZ25pemUuCgoJKiBzaW1wbGlmeS1ydHguYyAoc2ltcGxpZnlfdW5hcnlfb3BlcmF0aW9uKTogQWRkIGNhc2VzCglGTE9BVF9FWFRFTkQgYW5kIEZMT0FUX1RSVU5DQVRFIHRvIG9uZXMgdGhhdCByZXR1cm4gMC4KCjIwMDAtMDktMTcgIEJlcm5kIFNjaG1pZHQgIDxiZXJuZHNAcmVkaGF0LmNvLnVrPgoKCSogZXhwci5oIChlbWl0X2xpYnJhcnlfY2FsbCwgZW1pdF9saWJyYXJ5X2NhbGxfdmFsdWUpOiBEZWxldGUKCWRlY2xhcmF0aW9ucy4KCSogcnRsLmggKGVudW0gbGliY2FsbF90eXBlKTogTmV3LgoJKGVtaXRfbGlicmFyeV9jYWxsLCBlbWl0X2xpYnJhcnlfY2FsbF92YWx1ZSk6IENoYW5nZSBmbl90eXBlIGFyZyB0bwoJYmUgb2YgdHlwZSBlbnVtIGxpYmNhbGxfdHlwZS4KCSogY2FsbHMuYzogTGlrZXdpc2UgZm9yIHRoZSBmdW5jdGlvbiBkZWZpbml0aW9ucy4gIFNldmVyYWwgY2FsbGVycwoJdGhyb3VnaG91dCBjaGFuZ2VkIHRvIHVzZSB0aGUgbmV3IGVudW1lcmF0aW9uIGFwcHJvcHJpYXRlbHkuCgkoZW1pdF9saWJyYXJ5X2NhbGxfdmFsdWVfMSk6IExpa2V3aXNlLiAgUHV0IGJhY2sgY29kZSB0byBtYWtlIGxpYmNhbGwKCWJsb2NrcyBvZiBlcXVhbCBmb3JtLCBidXQgb25seSB1c2UgaXQgZm9yIHRoZSB0d28gbmV3IGhpZ2hlcgoJZW51bWVyYXRpb24gdmFsdWVzLgoKMjAwMC0wOS0xNiAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCglDb252ZXJ0IHRoZSBDIGZyb250LWVuZCB0byB1c2UgZnVuY3Rpb24tYXQtYS10aW1lIG1vZGUuCgkqIGMtY29tbW9uLmg6IEluY2x1ZGUgc3BsYXktdHJlZS5oLgoJKENfREVDTEFSRURfTEFCRUxfRkxBRyk6IE5ldyBtYWNyby4KCShzdHJ1Y3QgbGFuZ3VhZ2VfZnVuY3Rpb24pOiBBZGQgeF9zY29wZV9zdG10X3N0YWNrIGFuZAoJeF9mdW5jdGlvbl9uYW1lX2RlY2xhcmVkX3AuCgkoUkVDSEFJTl9TVE1UUyk6IE1vdmUgZGVmaW5pdGlvbi4KCShsYW5nX3N0YXRlbWVudF9jb2RlX3ApOiBMaWtld2lzZS4KCShsYW5nX2V4cGFuZF9zdG10KTogTGlrZXdpc2UuCgkobGFuZ19leHBhbmRfZGVjbF9zdG10KTogTmV3IHZhcmlhYmxlLgoJKGxhbmdfZXhwYW5kX2Z1bmN0aW9uX2VuZCk6IExpa2V3aXNlLgoJKGN1cnJlbnRfc2NvcGVfc3RtdF9zdGFjayk6IE5ldyBmdW5jdGlvbi4KCShhZGRfZGVjbF9zdG10KTogTGlrZXdpc2UuCgkoYWRkX3Njb3BlX3N0bXQpOiBMaWtld2lzZS4KCShtYXJrX3N0bXRfdHJlZSk6IExpa2V3aXNlLgoJKHN0cnVjdCBjX2xhbmdfZGVjbCk6IE5ldyBzdHJ1Y3R1cmUuCgkoREVDTF9TQVZFRF9UUkVFKTogRGVmaW5lLgoJKGNfbWFya19sYW5nX2RlY2wpOiBOZXcgZnVuY3Rpb24uCgkoY19leHBhbmRfc3RhcnRfY29uZCk6IENoYW5nZSBwcm90b3R5cGUuCgkoY19maW5pc2hfdGhlbik6IE5ldyBmdW5jdGlvbi4KCShjX2ZpbmlzaF9lbHNlKTogTGlrZXdpc2UuCgkoY3VycmVudF9mdW5jdGlvbl9uYW1lX2RlY2xhcmVkKTogUmVtb3ZlLgoJKHNldF9jdXJyZW50X2Z1bmN0aW9uX25hbWVfZGVjbGFyZWQpOiBMaWtld2lzZS4KCShtYXJrX2NfbGFuZ3VhZ2VfZnVuY3Rpb24pOiBEZWNsYXJlLgoJKGNhc2VfY29tcGFyZSk6IExpa2V3aXNlLgoJKGNfYWRkX2Nhc2VfbGFiZWwpOiBMaWtld2lzZS4KCShjX2V4cGFuZF9leHByKTogTGlrZXdpc2UuCgkoY19zYWZlX2Zyb21fcCk6IExpa2V3aXNlLgoJKiBjLWNvbW1vbi5jIChsYW5nX2V4cGFuZF9mdW5jdGlvbl9lbmQpOiBOZXcgdmFyaWFibGUuCgkoc3RydWN0IGlmX2VsdCk6IEFkZCBpZl9zdG10LgoJKGNfZXhwYW5kX3N0YXJ0X2NvbmQpOiBBZGQgdGhlIGlmLXN0YXRlbWVudCB0byB0aGUgc3RhdGVtZW50LXRyZWUsCglyYXRoZXIgdGhhbiBnZW5lcmF0aW5nIFJUTC4KCShjX2ZpbmlzaF90aGVuKTogTmV3IGZ1bmN0aW9uLgoJKGNfZXhwYW5kX3N0YXJ0X2Vsc2UpOiBEb24ndCBnZW5lcmF0ZSBSVEwuCgkoY19maW5pc2hfZWxzZSk6IE5ldyBmdW5jdGlvbi4KCShjX2V4cGFuZF9leHByX3N0bXQpOiBEb24ndCBnZW5lcmF0ZSBSVEwuCgkoc3RhdGVtZW50X2NvZGVfcCk6IEFkZCBTQ09QRV9TVE1ULgoJKGNhc2VfY29tcGFyZSk6IE5ldyBmdW5jdGlvbi4KCShjX2FkZF9jYXNlX2xhYmVsKTogTGlrZXdpc2UuCgkobWFya19zdG10X3RyZWUpOiBMaWtld2lzZS4KCShjX21hcmtfbGFuZ19kZWNsKTogTGlrZXdpc2UuCgkobWFya19jX2xhbmd1YWdlX2Z1bmN0aW9uKTogTGlrZXdpc2UuCgkoY19leHBhbmRfZXhwcik6IExpa2V3aXNlLgoJKGNfc2FmZV9mcm9tX3ApOiBMaWtld2lzZS4KCSogYy1kZWNsLmMgKGNfc3RtdF90cmVlKTogTmV3IHZhcmlhYmxlCgkoY19zY29wZV9zdG10X3N0YWNrKTogTGlrZXdpc2UuCgkoY19mdW5jdGlvbl9uYW1lX2RlY2xhcmVkX3ApOiBMaWtld2lzZS4KCShsYW5nX2V4cGFuZF9leHByX3N0bXQpOiBSZW1vdmUuCgkocG9wbGV2ZWwpOiBEb24ndCBjYWxsIG91dHB1dF9pbmxpbmVfZnVuY3Rpb24gZm9yIG5lc3RlZAoJZnVuY3Rpb25zLgoJKHB1c2hkZWNsKTogRG9uJ3Qgc2V0IERFQ0xfQ09OVEVYVCBmb3IgYSBsb2NhbCBkZWNsYXJhdGlvbiBvZiBhbgoJYGV4dGVybicgZnVuY3Rpb24uCgkocmVkZWNsYXJhdGlvbl9lcnJvcl9tZXNzYWdlKTogQ2hhbmdlIG1lYW5zIG9mIGNvbXB1dGluZyB3aGV0aGVyCglvciBub3QgYSBmdW5jdGlvbiBpcyBuZXN0ZWQuCgkobG9va3VwX2xhYmVsKTogRG9uJ3QgY2FsbCBsYWJlbF9ydHguCgkoaW5pdF9kZWNsX3Byb2Nlc3NpbmcpOiBBZGQgbW9yZSBHQyByb290cy4KCShzdGFydF9kZWNsKTogQWRkIERFQ0xfU1RNVHMgdG8gdGhlIHN0YXRlbWVudC10cmVlLCByYXRoZXIgdGhhbgoJY2FsbGluZyByZXN0X29mX2RlY2xfY29tcGlsYXRpb24uCgkoZmluaXNoX2RlY2wpOiBEb24ndCBjYWxsIGV4cGFuZF9kZWNsLgoJKHN0b3JlX3Bhcm1fZGVjbHMpOiBCZWdpbiB0aGUgc3RhdGVtZW50LXRyZWUsIGJ1dCBkb24ndCBnZW5lcmF0ZQoJUlRMLgoJKGZpbmlzaF9mdW5jdGlvbik6IFRpZSBvZmYgdGhlIHN0YXRlbWVudC10cmVlLiAgQ2FsbCBjX2V4cGFuZF9ib2R5CglpZiBhcHByb3ByaWF0ZS4KCShjX2V4cGFuZF9ib2R5KTogTmV3IGZ1bmN0aW9uLgoJKHB1c2hfY19mdW5jdGlvbl9jb250ZXh0KTogU2F2ZSBtb3JlIGluZm9ybWF0aW9uLgoJKHBvcF9jX2Z1bmN0aW9uX2NvbnR4dCk6IExpa2V3aXNlLgoJKGNvcHlfbGFuZ19kZWNsKTogTm93IHRoYXQgd2UgdXNlIERFQ0xfTEFOR19TUEVDSUZJQywgY29weSBpdC4KCShsYW5nX21hcmtfdHJlZSk6IE1hcmsgaXQuCgkoY3VycmVudF9zdG10X3RyZWUpOiBBZGp1c3QuCgkoY3VycmVudF9zY29wZV9zdG10X3N0YWNrKTogTmV3IGZ1bmN0aW9uLgoJKGRvX2Nhc2UpOiBSZW1vdmUuCgkoc2V0X2N1cnJlbnRfbmFtZV9kZWNsYXJlZCk6IExpa2V3aXNlLgoJKGNfYmVnaW5fY29tcG91bmRfc3RtdCk6IERlZmluZS4KCShjX2V4cGFuZF9kZWNsX3N0bXQpOiBMaWtld2lzZS4KCSogYy1sYW5nLmM6IEluY2x1ZGUgcnRsLmggYW5kIGV4cHIuaC4KCShsYW5nX2luaXQpOiBTZXQgbW9yZSBsYW5ndWFnZS1zcGVjaWZpYyBob29rcy4KCSogYy1sZXguYzogSW5jbHVkZSBleHByLmguCgkqIGMtcGFyc2UuaW46IENoYW5nZXMgdGhyb3VnaG91dCB0byBhZGQgc3RhdGVtZW50cyB0byB0aGUKCXN0YXRlbWVudC10cmVlLCByYXRoZXIgdGhhbiBnZW5lcmF0aW5nIFJUTCBhZnRlciBldmVyeSBzdGF0ZW1lbnQuCgkqIGMtc2VtYW50aWNzLmMgKGxhbmdfZXhwYW5kX2RlY2xfc3RtdCk6IERlZmluZS4KCShhZGRfZGVjbF9zdG10KTogTmV3IGZ1bmN0aW9uLgoJKGFkZF9zY29wZV9zdG10KTogTGlrZXdpc2UuCgkoZmluaXNoX3N0bXRfdHJlZSk6IFR3ZWFrLgoJKGdlbnJ0bF9leHByX3N0bXQpOiBMaWtld2lzZS4KCShnZW5ydGxfZGVjbF9zdG10KTogSGFuZGxlIGxvY2FsIGxhYmVscywgYW5kIGNhbGwKCWxhbmdfZXhwYW5kX2RlY2xfc3RtdCBpZiByZXF1aXJlZC4KCShnZW5ydGxfZm9yX3N0bXQpOiBGaXggbGluZS1udW1iZXIgaGFuZGxpbmcuCgkoZ2VucnRsX2Nhc2VfbGFiZWwpOiBIYW5kbGUgY2xlYW51cHMuCgkoZ2VucnRsX2FzbV9zdG10KTogRG9uJ3QgY2FsbCBjb21iaW5lX3N0cmluZ3MuCgkoZ2VucnRsX2NvbXBvdW5kX3N0bXQpOiBTaW1wbGlmeS4KCShleHBhbmRfc3RtdCk6IEhhbmRsZSBTQ09QRV9TVE1Ucy4KCSogYy10cmVlLmggKHN0cnVjdCBsYW5nX2RlY2wpOiBOZXcgc3RydWN0dXJlLgoJKENfREVDTEFSRURfTEFCRUxfRkxBRyk6IFJlbW92ZS4KCShjX2JlZ2luX2NvbXBvdW5kX3N0bXQpOiBEZWNsYXJlLgoJKGNfZXhwYW5kX2RlY2xfc3RtdCk6IExpa2V3aXNlLgoJKGNfZXhwYW5kX3N0YXJ0X2Nhc2UpOiBSZW5hbWUgdG8gY19zdGFydF9jYXNlLgoJKGNfZmluaXNoX2Nhc2UpOiBOZXcgZnVuY3Rpb24uCgkqIGMtdHlwZWNrLmMgKHN0YXJ0X2luaXQpOiBUd2VhayBzZXR0aW5nIG9mCgljb25zdHJ1Y3Rvcl9pbmNyZW1lbnRhbC4KCShjX2V4cGFuZF9hc21fb3BlcmFuZHMpOiBUd2VhayBlcnJvci1oYW5kbGluZy4gIEFkZCB0byB0aGUKCXN0YXRlbWVudC10cmVlLgoJKGNfZXhwYW5kX3JldHVybik6IEFkZCB0byB0aGUgc3RhdGVtZW50LXRyZWUuCgkoY19leHBhbmRfc3RhcnRfY2FzZSk6IFJlbmFtZSB0byAuLi4KCShjX3N0YXJ0X2Nhc2UpOiAuLi4gdGhpcy4KCShzdHJ1Y3QgY19zd2l0Y2gpOiBOZXcgdHlwZS4KCShzd2l0Y2hfc3RhY2spOiBOZXcgdmFyaWFibGUuCgkoZG9fY2FzZSk6IFNpbXBsaWZ5LgoJKGNfZmluaXNoX2Nhc2UpOiBOZXcgZnVuY3Rpb24uCgkqIGRlcGVuZGVuY2UuYzogSW5jbHVkZSBleHByLmguCgkoZW51bSBkZXBlbmRlbmNlX3R5cGUpOiBDaGFuZ2Ugc3BlbGxpbmcgb2YgZW51bWVyYWxzLgoJKGNoZWNrX25vZGVfZGVwZW5kZW5jZSk6IEFkanVzdC4KCSogZXhwci5oIChsYW5nX3NhZmVfZnJvbV9wKTogRGVjbGFyZS4KCShzYWZlX2Zyb21fcCk6IExpa2V3aXNlLgoJKiBleHByLmMgKGxhbmdfc2FmZV9mcm9tX3ApOiBOZXcgdmFyaWFibGUuCgkoc2FmZV9mcm9tX3ApOiBHaXZlIGl0IGV4dGVybmFsIGxpbmthZ2UuICBVc2UgbGFuZ19zYWZlX2Zyb21fcC4KCSogc3RtdC5jIChleHBhbmRfZXhwcl9zdG10KTogQXZvaWQgY2xvYmJlcnJpbmcgb2YgbGFzdF9leHByX3R5cGUuCgkqIHRvcGxldi5jIChyZXN0X29mX2RlY2xfY29tcGlsYXRpb24pOiBSb2J1c3RpZnkuCgkqIHRyZWUuYyAoY29udGFpbnNfcGxhY2Vob2xkZXJfcCk6IExpa2V3aXNlLgoJKiBNYWtlZmlsZS5pbjogVXBkYXRlIGRlcGVuZGVuY2llcy4KCSogb2JqYy9vYmpjLWFjdC5oOiBBZGp1c3QgY2FsY3VsYXRpb24gb2YgdmFsdWUgZm9yIGR1bW15X3RyZWVfY29kZS4KCSogb2JqYy9vYmpjLWFjdC5jOiBJbmNsdWRlIHJ0bC5oLCBleHByLmgsIGFuZCBjLWNvbW1vbi5oLgoJKG9iamNfZXhwYW5kX2Z1bmN0aW9uX2VuZCk6IE5ldyBmdW5jdGlvbi4KCShmaW5pc2hfbWV0aG9kX2RlZik6IFVzZSBpdC4KCShpbml0X29iamMpOiBJbml0aWFsaXplIG1vcmUgbGFuZ3VhZ2Utc3BlY2lmaWMgaG9va3MuCgkqIG9iamMvTWFrZS1sYW5nLmluOiBVcGRhdGUgZGVwZW5kZW5jaWVzLgoKMjAwMC0wOS0xNiAgR2VvZmZyZXkgS2VhdGluZyAgPGdlb2Zma0BjeWdudXMuY29tPgoKCSogY29uZmlndXJlLmluOiBEZWZpbmUgbWFjcm9zIHRoYXQgYWZmZWN0IGZlYXR1cmVzIGJlZm9yZQoJdGVzdGluZyBmb3IgZmVhdHVyZXMuICBEb24ndCBkZWZpbmUgX1hPUEVOX1NPVVJDRS4KCSogY29uZmlndXJlOiBSZWdlbmVyYXRlZC4KCSogY29uZmlnLmluOiBSZWdlbmVyYXRlZC4KClNhdCBTZXAgMTYgMTk6NDI6NTAgRURUIDIwMDAgIEpvaG4gV2VobGUgIChqb2huQGZlaXRoLmNvbSkKCgkqIHJ0bGFuYWwuYyAocnR4X3Zhcmllc19wKTogVm9sYXRpbGUgYXNtcyB2YXJ5LgoJKHJ0eF91bnN0YWJsZV9wKTogUmVzdHJ1Y3R1cmUgY29kZS4gIFZvbGF0aWxlIGFzbXMKCWFyZSB1bnN0YWJsZS4KClNhdCBTZXAgMTYgMTQ6MzU6NTUgMjAwMCAgUmljaGFyZCBLZW5uZXIgIDxrZW5uZXJAdmxzaTEudWx0cmEubnl1LmVkdT4KCgkqIGZ1bmN0aW9uLmggKG5vX2RlYnVnZ2luZ19zeW1ib2xzKTogTmV3IGZpZWxkLgoJKiBpbnRlZ3JhdGUuYyAoc2F2ZV9mb3JfaW5saW5lKTogUmVuYW1lZCBmcm9tIHNhdmVfZm9yX2lubGluZV9ub2NvcHkuCglJbml0aWFsaXplIG5vX2RlYnVnZ2luZ19zeW1ib2xzLgoJKG91dHB1dF9pbmxpbmVfZnVuY3Rpb24pOiBTYXZlIGFuZCByZXN0b3JlIHdyaXRlX3N5bWJvbHMgYW5kIHNldCBmcm9tCglub19kZWJ1Z2dpbmdfc3ltYm9scy4KCSogdG9wbGV2LmMgKHJlc3Rfb2ZfY29tcGlsYXRpb24pOiBDYWxsIHNhdmVfZm9yX2lubGluZS4KCSogdHJlZS5oOiBVcGRhdGUgY29tbWVudC4KCgkqIHN0b3ItbGF5b3V0LmMgKHBsYWNlX2ZpZWxkKTogRG9uJ3QgZG8gYW55dGhpbmcgaWYgZmllbGQgb3IKCWl0cyB0eXBlIGFyZSBFUlJPUl9NQVJLLgoKU2F0IFNlcCAxNiAxOToxNDowMCAyMDAwICBMYXVyeW5hcyBCaXZlaW5pcyA8bGF1cmFzQHNvZnRob21lLm5ldD4KCgkqIGNwcGZpbGVzLmMgKHB1cmdlX2NhY2hlKTogVXNlIG11bm1hcCBvbmx5IGlmIE1NQVBfVEhSRVNIT0xEIGRlZmluZWQuCgkocmVhZF9pbmNsdWRlX2ZpbGUpOiBFbnN1cmUgaW5jLT5tbWFwZWQgaXMgaW5pdGlhbGl6ZWQuCgoyMDAwLTA5LTE2ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEBjeWdudXMuY29tPgoKCSogY3BwaWxlcy5jIChwdXJnZV9jYWNoZSk6IFVzZSBQVFIgbm90IGNhZGRyX3QuCgoyMDAwLTA5LTE2ICBIYW5zLVBldGVyIE5pbHNzb24gIDxocEBheGlzLmNvbT4KCgkqIGdjYy5jOiBJbiBkZXNjcmlwdGlvbiBmb3IgJXs8U30sIHNheSB0aGUgb3B0aW9uIHJlbW92ZWQgaXMgLVMuCgkqIGludm9rZS50ZXhpIChTcGVjIEZpbGVzKTogRGl0dG8uCgoyMDAwLTA5LTE2ICBBbmRyZWFzIEphZWdlciAgPGFqQHN1c2UuZGU+CgoJKiBjb25maWd1cmUuaW46IEFsd2F5cyBkZWZpbmUgX0dOVV9TT1VSQ0UgdG8gbWFrZSBpbnRlcmZhY2VzCgl2aXNpYmxlIHRoYXQgd2VyZSBoaWRkZW4gYnkgb25seSBkZWZpbmluZyBfR05VX1NPVVJDRS4KCSogY29uZmlndXJlOiBSZWdlbmVyYXRlZC4KClNhdCAxNi1TZXAtMjAwMCAwODoxMzo0NSBCU1QgIE5laWwgQm9vdGggIDxOZWlsQkBlYXJ0aGxpbmcubmV0PgoKCSogY3BwbGV4LmMgKHB1c2hfbWFjcm9fY29udGV4dCk6IFNldCBhbiBhcmd1bWVudCdzIGxldmVsIGFmdGVyCgljYWxsaW5nIHBhcnNlX2FyZ3MuICBXZSBjb3VsZCBsb29wIGluZmluaXRlbHkgb3RoZXJ3aXNlLgoKMjAwMC0wOS0xNSAgVG9tIFRyb21leSAgPHRyb21leUBjeWdudXMuY29tPgoKCSogY29uZmlndXJlLCBjb25maWcuaW46IFJlYnVpbHQuCgkqIGNvbmZpZ3VyZS5pbjogQ2hlY2sgZm9yIGljb252LmguICBEZWZpbmUgX1hPUEVOX1NPVVJDRS4KCjIwMDAtMDktMTUgIEdyZWcgTWNHYXJ5ICA8Z3JlZ0BtY2dhcnkub3JnPgoKCSogY3BwbWFjcm8uYyAoY2hlY2tfdHJhZF9zdHJpbmdpZmljYXRpb24pOiBDaGVjayB0b2tlbgoJdGV4dCBwb2ludGVycyBhZ2FpbnN0IGxpbWl0IGJlZm9yZSBkZXJlZmVyZW5jaW5nLgoKMjAwMC0wOS0xNSAgSm9zZXBoIFMuIE15ZXJzICA8anNtMjhAY2FtLmFjLnVrPgoKCSogYy1jb21tb24uYyAoZm9ybWF0X3dhbnRlZF90eXBlKTogTmV3IHN0cnVjdHVyZS4KCShjaGVja19mb3JtYXRfdHlwZXMpOiBOZXcgZnVuY3Rpb24uCgkoY2hlY2tfZm9ybWF0X2luZm8pOiBQYXNzIGFsbCBjaGVja2luZyBvZiB0eXBlcyBvZiBmb3JtYXQKCWFyZ3VtZW50cywgaW5jbHVkaW5nIHdpZHRoIGFuZCBwcmVjaXNpb24gYXJndW1lbnRzLCB0byB0aGlzIG5ldwoJZnVuY3Rpb24uCgoyMDAwLTA5LTE1ICBHZXJhbGQgUGZlaWZlciAgPHBmZWlmZXJAZGJhaS50dXdpZW4uYWMuYXQ+CgoJKiBCVUdTOiBSZW1vdmUgZmlsZS4KCjIwMDAtMDktMTUgIEpha3ViIEplbGluZWsgIDxqYWt1YkByZWRoYXQuY29tPgoKCSogY29uZmlnL2FscGhhL2FscGhhLmMgKG92ZXJyaWRlX29wdGlvbnMpOiBldjYgY2FjaGUgbGF0ZW5jaWVzCglmcm9tIFJpY2hhcmQgSGVuZGVyc29uLiAgRG9uJ3QgYWxsb3cgLW1tZW1vcnktbGF0ZW5jeT1MMC4KCgkqIGNvbmZpZy9hbHBoYS9hbHBoYS5oIChUQVJHRVRfQ1BVX0VWNSwgVEFSR0VUX0NQVV9FVjYpOiBEZWZpbmUuCgkoVEFSR0VUX09QVElPTlMpOiBBZGQgdHVuZT0uCgkoYWxwaGFfdHVuZV9zdHJpbmcpOiBEZWNsYXJlLgoJKiBjb25maWcvYWxwaGEvYWxwaGEuYyAob3ZlcnJpZGVfb3B0aW9ucyk6IEFkZCBjcHVfdGFibGUuCglVc2UgYWxwaGFfY3B1X3N0cmluZyBmaXJzdCB0byBzZXQgYm90aCBhbHBoYV9jcHUgYW5kIHRhcmdldF9mbGFncwoJYW5kIHRoZW4gYWxwaGFfdHVuZV9zdHJpbmcgdG8gc2V0IGFscGhhX2NwdSBvbmx5LgoJUmVwbGFjZSB0ZXN0cyBmb3IgUFJPQ0VTU09SX0VWKiB3aXRoIFRBUkdFVF9DUFVfRVYqIHRlc3RzLgoJKiBjb25maWcvYWxwaGEvZWxmLmggKEFTTV9GSUxFX1NUQVJUKTogTGlrZXdpc2UuCgkqIGNvbmZpZy9hbHBoYS9vc2YuaCAoQVNNX0ZJTEVfU1RBUlQpOiBMaWtld2lzZS4KCSogY29uZmlnL2FscGhhL29wZW5ic2QuaCAoQVNNX0ZJTEVfU1RBUlQpOiBMaWtld2lzZS4KCkZyaSBTZXAgMTUgMTk6NDU6NTUgTUVUIERTVCAyMDAwICBKYW4gSHViaWNrYSAgPGpoQHN1c2UuY3o+CgoJKiBpMzg2LXByb3Rvcy5oIChub19jb21wYXJpc29uX29wZXJhdG9yLCB1bm9fY29tcGFyaXNvbl9vcGVyYXRvcik6CglSZW1vdmUuCgkoaXg4Nl9jb21wYXJpc29uX29wZXJhdG9yLCBpeDg2X2NjX21vZGUpOiBEZWNsYXJlCgkqIGkzODYuaCAoQ0NHQywgQ0NHQ08pOiBOZXcgbW9kZXMuCgkoU0VMRUNUX0NDX01PREUpOiBNb3ZlIG9mZmxpbmUgdG8gLi4uLgoJKiBpMzg2LmMgKGl4ODZfY2NfbW9kZSk6IC4uLi4gaGVyZTsgdXNlIG5ldyBtb2Rlcy4KCShpeDg2X2NvbXBhcmlzb25fb3BlcmF0b3IpOiBOZXcuCgkoZmNtb3ZfY29tcGFyaXNvbl9vcGVyYXRvcik6IEVuc3VyZSBwcm9wZXIgbW9kZS4KCShwdXRfY29uZGl0aW9uX21vZGUpOiBNb3JlIHNhbml0eSBjaGVja2luZy4KCShpeDg2X21hdGNoX2NjbW9kZSk6IEhhbmRsZSBuZXcgbW9kZXMuCgkoaXg4Nl9leHBhbmRfZnBfY29tcGFyZSk6IEdFVSByZXF1aXJlcyBDQ21vZGUuCgkoaXg4Nl9leHBhbmRfc3RybGVuc2lfdW5yb2xsXzEpOiBVc2UgZW1pdF9jbXBfYW5kX2p1bXBfaW5zbiBpbnN0ZWFkIG9mCglkb2luZyBpdCBieSBoYW5kLgoJKiBpMzg2Lm1kIChjbXA/aV9jY3pfMSk6IFJlbW92ZQoJKGNtcD9pX2Njbm9fMSk6IFVzZSBpeDg2X21hdGNoX2NjbW9kZS4KCShjbXA/aV9taW51c18xKTogTmV3LgoJKGNtcHNpXzEpOiBOZXcgZXhwYW5kZXIuCgkoY21wcWlfZXh0XzEpOiBVc2UgbWF0Y2hfY2Ntb2RlCgkoY21wcWlfZXh0XzMpOiBOZXcgZXhwYW5kZXIuCgkoY21wcWlfZXh0XzNfaW5zbik6IFJlbmFtZSBmcm9tIGNtcHFpX2V4dF8zLgoJKGNtcHFpX2V4dF80KTogVXNlIG1hdGNoX2NjbW9kZS4KCShhZGQ/aV8/KTogVXNlIG1hdGNoX2NjbW9kZS4KCShhZGQ/aV82KTogTmV3LgoJKHRlc3Q/aV9jY3pfMSk6IFJlbW92ZQoJKHRlc3Q/aV8xKTogTmV3LgoJKHRlc3RzaV9jY25vXzEsIHRlc3RxaV9jY3pfMSwgdGVzdHFpX2V4dF9jY25vXzApOiBOZXcgZXhwYW5kZXIuCgkodGVzdHFpX2V4dF8wKTogVXNlIGl4ODZfbWF0Y2hfY2Ntb2RlLgoJKCp4b3JxaV9jY19leHRfMSk6IFVzZSBpeDg2X21hdGNoX2NjbW9kZS4KCSh4b3JxaV9jY19leHRfMSk6IE5ldyBleHBhbmRlci4KCShzaGlmdCBwYXR0ZXJucyk6IFVzZSBDQ0dPQ21vZGUgZm9yIGFsbCBzaGlmdHMgZXhjZXB0IGZvciBzYXIuCgkoc2V0Y2NfPywgamNjXz8sIG1pdj9pY2NfbmljKTogVXNlIGl4ODZfY29tcGFyaXNvbl9vcGVyYXRvci4KCShzZXRjY18zLCBqY2NfMywgbWl2P2ljY19jKTogUmVtb3ZlLgoKMjAwMC0wOS0xNSAgV2lsbCBDb2hlbiAgPHdjb2hlbkByZWRoYXQuY29tPgoKCSogZHdhcmYyb3V0LmMgKGFkZF9jb25zdF92YWx1ZV9hdHRyaWJ1dGUpOiBDaGFuZ2VkIGFycmF5IGludG8gYQoJeG1hbGxvY2VkIG9iamVjdCwgc28gaXQgZXhpc3RzIGFmdGVyIGZ1bmN0aW9uIGV4aXQuCgkoZnJlZV9BVCk6IEFkZGVkIGNhc2UgZm9yIGR3X3ZhbF9jbGFzc19mbG9hdCB0byBmcmVlIGFsbG9jYXRlZAoJbWVtb3J5LgoKMjAwMC0wOS0xNSAgS2F6dSBIaXJhdGEgIDxrYXp1QGh4aS5jb20+CgoJKiBjb25maWcvaTM4Ni9pMzg2Lm1kOiBGaXggYSBjb21tZW50IHR5cG8uCgkqIGdjYy5jOiBGaXggZm9ybWF0dGluZy4KCjIwMDAtMDktMTUgIEJlcm5kIFNjaG1pZHQgIDxiZXJuZHNAcmVkaGF0LmNvLnVrPgoKCSogb3B0YWJzLmMgKGVtaXRfbGliY2FsbF9ibG9jayk6IElmIHRhcmdldCBpcyBhIHVzZXIgdmFyaWFibGUsCgljb3B5IHRvIGEgdGVtcG9yYXJ5IGZpcnN0LgoJKiBleHByLmMgKGNvbnZlcnRfbW92ZSk6IFdoZW4gZ2VuZXJhdGluZyBhIGxpYmNhbGwsIG1ha2UgYSBsaWJjYWxsCglibG9jay4KCSogY2FsbHMuYyAoZW1pdF9saWJyYXJ5X2NhbGxfdmFsdWVfMSk6IERvbid0IGNyZWF0ZSBhIGxpYmNhbGwKCXNlcXVlbmNlIGhlcmU7IG91ciBjYWxsZXIgd2lsbCBpbiBtb3N0IGNhc2VzIGRvIGl0LgoKCSogc2guaCAoU0VDT05EQVJZX0lOUFVUX1JFTE9BRF9DTEFTUyk6IEhhbmRsZSBtb3ZpbmcgVCwgTUFDTCBvcgoJTUFDSCBpbnRvIEZQVUwuCgkoU0VDT05EQVJZX09VVFBVVF9SRUxPQURfQ0xBU1MpOiBTaW1pbGFyIGNhc2UuCgkqIHNoLm1kIChyZWxvYWRfb3V0c2YpOiBHZW5lcmF0ZSByZWNvZ25pemFibGUgcGF0dGVybnMgZm9yCglUQVJHRVRfU0gzRS4KCShmbG9hdHNpc2YyLCBmbG9hdHNpc2YyX2llLCBmbG9hdHNpc2YyX2k0LCBmaXhfdHJ1bmNzZnNpMiwKCWZpeF90cnVuY3Nmc2kyX2k0LCBmaXhzZnNpLCBmbG9hdHNpZGYyLCBmbG9hdHNpZGYyX2ksIGZpeF90cnVuY2Rmc2kyLAoJZml4X3RydW5jZGZzaTJfaSwgZXh0ZW5kc2ZkZjIsIGV4dGVuZHNmZGYyX2k0LCB0cnVuY2Rmc2YyLAoJdHJ1bmNkZnNmMl9pNCk6IENoYW5nZSBub3QgdG8gdXNlIGV4cGxpY2l0IHJlZmVyZW5jZXMgdG8gZnB1bC4KCShmbG9hdHNpc2YyX2llKTogUmVtb3ZlIFVTRSBvZiBmcHNjci4KCShmbG9hdHNpc2YyKTogQ2hhbmdlIGRlZmF1bHQgZXhwYW5zaW9uIHRvIG1hdGNoIHRoaXMuCgkoZml4X3RydW5jc2ZzaTJfaTRfMiwgZml4X3RydW5jZGZzaTJfaTQgJiBzcGxpdHRlcnMpOiBDb21tZW50IG91dAoJdW51c2VkIHBhdHRlcm5zLgoKMjAwMC0wOS0xNSAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAY3lnbnVzLmNvbT4KCgkqIGV4cG1lZC5jIChzdG9yZV9iaXRfZmllbGQpOiBDb25zaWRlciBuYXR1cmFsbHkgYWxpZ25lZAoJbWVtb3J5IGZvciBkaXJlY3QgcmVmZXJlbmNlLgoKMjAwMC0wOS0xNSAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAY3lnbnVzLmNvbT4KCgkqIGNvbmZpZy9hbHBoYS9hbHBoYS5jIChhbHBoYV9leHBhbmRfdW5hbGlnbmVkX2xvYWQpOiBGb3JjZSBhbGwKCUFORCBhZGRyZXNzZXMgaW50byBhbGlhcyBzZXQgMC4KCShhbHBoYV9leHBhbmRfdW5hbGlnbmVkX3N0b3JlKTogTGlrZXdpc2UuCgkoYWxwaGFfZXhwYW5kX3VuYWxpZ25lZF9sb2FkX3dvcmRzKTogTGlrZXdpc2UuCgkoYWxwaGFfZXhwYW5kX3VuYWxpZ25lZF9zdG9yZV93b3Jkcyk6IExpa2V3aXNlLgoKMjAwMC0wOS0xNSAgQmVybmQgU2NobWlkdCAgPGJlcm5kc0ByZWRoYXQuY28udWs+CgoJKiBjb25maWcvc2gvc2guaCAoQ1BQX1NQRUMpOiBGb3IgLW00LW5vZnB1LCBkZWZpbmUgX19TSDRfTk9GUFVfXy4KCSogY29uZmlnL3NoL2xpYjFmdW5jcy5hc20gKG1vdnN0cl9pNCk6IEFsc28gY29tcGlsZSBpZiBfX1NINF9OT0ZQVV9fCglpcyBkZWZpbmVkLgoJKiBjb25maWcvbWlwcy9taXBzLmMgKG1pcHNfdmFfYXJnKTogQXJncyBwYXNzZWQgYnkgcmVmZXJlbmNlIGhhdmUgYQoJcnNpemUgb2YgVU5JVFNfUEVSX1dPUkQuCgpGcmkgMTUtU2VwLTIwMDAgMDY6NDk6MDcgQlNUICBOZWlsIEJvb3RoICA8TmVpbEJAZWFydGhsaW5nLm5ldD4KCgkqIGNwcGxleC5jIChPTl9SRVNUX0FSRyk6IENvcnJlY3QgdGhlIHRlc3QuCgkobWF5YmVfcGFzdGVfd2l0aF9uZXh0KTogRHVwbGljYXRlIGEgdG9rZW4gdGhhdCBmYWlsIHBhc3RpbmcsCglhbmQgY2xlYXIgaXRzIFBBU1RFX0xFRlQgZmxhZywgc28gdGhhdCBuZXN0ZWQgcGFzdGluZyBhdHRlbXB0cwoJZG8gbm90IG9jY3VyLgoKMjAwMC0wOS0xNCAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAY3lnbnVzLmNvbT4KCgkqIGNhbGxzLmMgKHByZWNvbXB1dGVfcmVnaXN0ZXJfcGFyYW1ldGVycyk6IFVzZSBDT1NUU19OX0lOU05TLCBub3QgMi4KCSogY3NlLmMgKHJ0eF9jb3N0KTogTGlrZXdpc2UuCgkqIG9wdGFibHMuYyAoZXhwYW5kX2Jpbm9wKTogTGlrZXdpc2UuCgkoZXhwYW5kX3R3b3ZhbF9iaW5vcCwgcHJlcGFyZV9jbXBfaW5zbik6IExpa2V3aXNlLgoJKiByZWdjbGFzcy5jIChjb3B5X2Nvc3QpOiBMaWtld2lzZS4KCSogcmVsb2FkMS5jIChyZWxvYWRfY3NlX21vdmUyYWRkKTogTGlrZXdpc2UuCgoyMDAwLTA5LTE0ICBKb3NlcGggUy4gTXllcnMgIDxqc20yOEBjYW0uYWMudWs+CgoJKiBjLXBhcnNlLmluIChyZXN3b3Jkcyk6IEFkZCBfQ29tcGxleC4KCjIwMDAtMDktMTQgIEouIERhdmlkIEFuZ2xpbiAgPGRhdmVAaGlhdWx5MS5oaWEubnJjLmNhPgoKCSogZ2NjLjE6IERlbGV0ZSBkb2N1bWVudGF0aW9uIGZvciAtdW5kZWYgcHJlcHJvY2Vzc29yIG9wdGlvbi4KCjIwMDAtMDktMTQgIEFsZXhhbmRyZSBPbGl2YSAgPGFvbGl2YUByZWRoYXQuY29tPgoKCSogY29uZmlnL3NoL3NoLmggKElOSVRfU0VDVElPTl9BU01fT1AsIEZJTklfU0VDVElPTl9BU01fT1AsCglTVEFSVEZJTEVfU1BFQywgRU5ERklMRV9TUEVDKTogUmVtb3ZlIGRlZmluZS4KCSogY29uZmlnL3NoL2VsZi5oIChJTklUX1NFQ1RJT05fQVNNX09QLCBGSU5JX1NFQ1RJT05fQVNNX09QKToKCVJlbW92ZSB1bmRlZmluZSBiZWZvcmUgY29uZmlnL2VsZm9zLmguCgkqIGNvbmZpZy9zaC90LXNoIChFWFRSQV9NVUxUSUxJQl9QQVJUUyk6IENvbW1lbnQgb3V0LgoKMjAwMC0wOS0xNCAgS2F6dSBIaXJhdGEgIDxrYXp1QGh4aS5jb20+CgoJKiBpbnZva2UudGV4aSAoSDgvMzAwIE9wdGlvbnMpOiBBZGQgLW1zMjYwMC4KCSogY29uZmlnL2g4MzAwLmMgKGg4MzAwX2luaXRfb25jZSk6IE91dHB1dCBhbiBlcnJvciB3aGVuIC1tczI2MDAKCWlzIHVzZWQgd2l0aG91dCAtbXMuCgkqIGNvbmZpZy9oODMwMC5oIChUQVJHRVRfTUFDKTogTmV3LgoJKFRBUkdFVF9TV0lUQ0hFUyk6IEFkZCAtbXMyNjAwIGFuZCAtbW5vLXMyNjAwLgoJKENPTkRJVElPTkFfUkVHSVNURVJfVVNBR0UpOiBEaXNhYmxlIHRoZSBtYWMgcmVnaXN0ZXIgb24gYW55CgltYWNoaW5lIG90aGVyIHRoYW4gSDhTLzI2MDAuCgkqIGNvbmZpZy9oODMwMC5tZDogQWNjZXB0IG1hYyBpbnN0cnVjdGlvbnMgb24gdGhlIEg4Uy8yNjAwIGluc3RlYWQKCW9mIHRoZSBIOFMvMjAwMC4KCjIwMDAtMDktMTQgIEFsZXhhbmRyZSBPbGl2YSAgPGFvbGl2YUByZWRoYXQuY29tPiwgQmVybmQgU2NobWlkdCAgPGJlcm5kc0ByZWRoYXQuY28udWs+CgoJKiByZWxvYWQuYyAoZmluZF9yZWxvYWRzX2FkZHJlc3NfMSk6IEdlbmVyYXRlIHJlbG9hZHMgZm9yIGF1dG9faW5jCglwc2V1ZG9zIHRoYXQgcmVmZXIgdG8gdGhlIG9yaWdpbmFsIHBzZXVkb3MsIG5vdCBvbmx5IHRvIHRoZWlyCgllcXVpdmFsZW50IG1lbW9yeSBsb2NhdGlvbnMuCgpUaHUgU2VwIDE0IDEyOjEwOjE2IDIwMDAgIFJpY2hhcmQgS2VubmVyICA8a2VubmVyQHZsc2kxLnVsdHJhLm55dS5lZHU+CgoJKiBleHByLmMgKGV4cGFuZF9leHByLCBjYXNlIENPTVBPTkVOVF9FWFBSKTogQ29weSBtZW1vcnkgYXR0cmlidXRlcwoJd2hlbiBtYWtpbmcgbmV3IE1FTS4KCgkqIE1ha2VmaWxlLmluIChMTik6IFJlbW92ZSBkdXBsaWNhdGUgZGVmaW5pdGlvbi4KCjIwMDAtMDktMTIgIEJlcm5kIFNjaG1pZHQgIDxiZXJuZHNAcmVkaGF0LmNvLnVrPgoKCUZyb20gSm9lcm4gUmVubmVja2U6CgkqIGxvY2FsLWFsbG9jLmMgKHVwZGF0ZV9lcXVpdl9yZWdzKTogSWYgdGhlcmUgaXMgbm8gUkVHX0VRVUFMIG5vdGUKCW9uIGFuIGluc24gYW5kIGZ1bmN0aW9uX2ludmFyaWFudF9wIHJldHVybnMgbm9uemVybyBmb3IgdGhlIHNvdXJjZSwKCWFkZCBhIFJFR19FUVVBTCBub3RlLgoKVGh1IFNlcCAxNCAwMDo1MTo1NyBFRFQgMjAwMCAgSm9obiBXZWhsZSAgKGpvaG5AZmVpdGguY29tKQoKCSogYWxpYXMuYyAobWVtcmVmc19jb25mbGljdF9wKTogQW4gQUREUkVTU09GIGRvZXNuJ3QKCWNvbmZsaWN0IHdpdGggZnJhbWVfcG9pbnRlcl9ydHguCgoyMDAwLTA5LTEzICBLYXp1IEhpcmF0YSAgPGthenVAaHhpLmNvbT4KCgkqIGxvb3AuYzogRml4IGZvcm1hdHRpbmcuCgkqIGxvb3AuaDogTGlrZXdpc2UuCgoyMDAwLTA5LTEzICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEBjeWdudXMuY29tPgoKCSogY29uZmlnL2lhNjQvaWE2NC5tZCAoZGl2c2YzKTogTmV3LgoJKGRpdnNmM19pbnRlcm5hbF9sYXQsIGRpdnNmM19pbnRlcm5hbF90aHIpOiBOZXcuCgkoZGl2ZGYzLCBkaXZkZjNfaW50ZXJuYWxfbGF0LCBkaXZkZjNfaW50ZXJuYWxfdGhyKTogTmV3LgoJKGRpdnRmMywgZGl2dGYzX2ludGVybmFsX2xhdCwgZGl2dGYzX2ludGVybmFsX3Rocik6IE5ldy4KCShhZGRkZjNfdHJ1bmMsIHN1YmRmM190cnVuYywgbXVsZGYzX3RydW5jKTogTmV3LgoJKG1hZGRkZjRfdHJ1bmMsIG1zdWJkZjRfdHJ1bmMsIG5tdWxkZjNfdHJ1bmMpOiBOZXcuCgkobm1hZGRkZjRfYWx0cywgbm1hZGRkZjRfdHJ1bmMpOiBOZXcuCgkoYWRkdGYzX3RydW5jc2YsIGFkZHRmM190cnVuY2RmLCBzdWJ0ZjNfdHJ1bmNzZik6IE5ldy4KCShzdWJ0ZjNfdHJ1bmNkZiwgbXVsdGYzX3RydW5jc2YsIG11bHRmM190cnVuY2RmKTogTmV3LgoJKG11bHRmM190cnVuY3NmX2FsdHMsIG11bHRmM190cnVuY2RmX2FsdHMpOiBOZXcuCgkobWFkZHRmNF90cnVuY3NmLCBtYWRkdGY0X3RydW5jZGYsIG1hZGR0ZjRfYWx0c190cnVuY2RmKTogTmV3LgoJKG1zdWJ0ZjRfdHJ1bmNzZiwgbXN1YnRmNF90cnVuY2RmLCBubXVsdGYzX3RydW5jc2YpOiBOZXcuCgkobm11bHRmM190cnVuY2RmLCBubWFkZHRmNF90cnVuY3NmLCBubWFkZHRmNF90cnVuY2RmKTogTmV3LgoJKG5tYWRkdGY0X3RydW5jZGZfYWx0cyk6IE5ldy4KCShyZWNpcF9hcHByb3gpOiBEb24ndCBwcmVkaWNhdGUuCgoyMDAwLTA5LTEzICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEBjeWdudXMuY29tPgoKCSogY29uZmlnL2lhNjQvbGliMWZ1bmNzLmFzbSAoX19kaXZzZjMpOiBQcm90ZWN0IGZub3JtLnMgd2l0aCBwNi4KCjIwMDAtMDktMTMgIFN0ZXBoYW5lIENhcnJleiAgPFN0ZXBoYW5lLkNhcnJlekB3b3JsZG5ldC5mcj4KCgkqIGZsYWdzLmggKGZsYWdfZHVtcF9ydGxfaW5fYXNtKTogRGVjbGFyZS4KCSogdG9wbGV2LmMgKGZsYWdfZHVtcF9ydGxfaW5fYXNtKTogRGVmaW5lLgoJKGRlY29kZV9kX29wdGlvbik6IFNldCBmbGFnX2R1bXBfcnRsX2luX2FzbSBhbmQgZmxhZ19wcmludF9hc21fbmFtZQoJaWYgLWRQIGlzIHNwZWNpZmllZC4KCSogcnRsLmggKHByaW50X3J0eF9oZWFkKTogRGVjbGFyZS4KCSogcHJpbnQtcnRsLmMgKHByaW50X3J0eF9oZWFkKTogRGVmaW5lLgoJKHByaW50X3J0eCk6IFByaW50IHRoZSBzdHJpbmcgcG9pbnRlZCB0byBieSBwcmludF9ydHhfaGVhZAoJYXQgYmVnaW5uaW5nIG9mIGVhY2ggZHVtcCBsaW5lLgoJKHByaW50X3J0bCk6IExpa2V3aXNlLgoJKHByaW50X3J0bF9zaW5nbGUpOiBMaWtld2lzZS4KCSogZmluYWwuYyAoZmluYWxfc2Nhbl9pbnNuKTogRHVtcCB0aGUgaW5zbiBpbiB0aGUgYXNzZW1ibHkKCWZpbGUgZm9yIGRlYnVnZ2luZy4KCSogZ2NjLjE6IERvY3VtZW50IC1kUCBvcHRpb24uCgkqIGludm9rZS50ZXhpIChEZWJ1Z2dpbmcgT3B0aW9ucyk6IExpa2V3aXNlLgoKMjAwMC0wOS0xMyAgU3RlcGhhbmUgQ2FycmV6ICA8U3RlcGhhbmUuQ2FycmV6QHdvcmxkbmV0LmZyPgoKCSogbWQudGV4aSAoTWFjaGluZSBDb25zdHJhaW50cyk6IERvY3VtZW50IHRoZSA2OEhDMTEgY29uc3RyYWludHMuCgkqIGluc3RhbGwudGV4aSAoQ29uZmlndXJhdGlvbnMpOiBEb2N1bWVudCB0aGUgNjhIQzExJjY4SEMxMiBwb3J0LgoJKiBpbnZva2UudGV4aSAoT3B0aW9uIFN1bW1hcnksIE02OGhjMXggT3B0aW9ucyk6IERvY3VtZW50IHRoZSBvcHRpb25zLgoKVHVlIFNlcCAxMiAxMzo1MToxMyAyMDAwICBEZW5pcyBDaGVydHlrb3YgIDxkZW5pc2NAb3ZlcnRhLnJ1PgoKCSogY29uZmlnL2F2ci9hdnIuaCAoQVNTRU1CTEVSX0RJQUxFQ1QpOiBOZXcgbWFjcm8gZGVjbGFyZWQuCgkqIGNvbmZpZy9hdnIvYXZyLm1kICgqbW92c3RycWlfaW5zbik6IENsZWFudXAgb3V0cHV0IHRlbXBsYXRlLgoJKCpjbHJzdHJxaSk6IExpa2V3aXNlLgoJKHhvcmhpMyx4b3JzaTMsYWJzcWkyKTogTGlrZXdpc2UuCgkob25lX2NtcGxoaTIsb25lX2NtcGxzaTIpOiBMaWtld2lzZS4KCShhZGRzaTMpOiBUd28gc3R1cGlkIGNvbnN0cmFpbnQgYWx0ZXJuYXRpdmVzIHJlbW92ZWQuCgkoZXh0ZW5kaGlzaTIpOiBVc2UgYG1vdncnIGZvciBlbmhhbmNlZCBhdnIgY29yZXMuCgkoemVyb19leHRlbmRoaXNpMik6IExpa2V3aXNlLgoKV2VkIFNlcCAxMyAwMjozMToyMyBFRFQgMjAwMCAgSm9obiBXZWhsZSAgKGpvaG5AZmVpdGguY29tKQoKCSogYWxpYXMuYyAoZmluZF9iYXNlX3Rlcm0pOiBVc2UgZnJhbWVfcG9pbnRlcl9ydHgKCXdoZW4gaGFuZGxpbmcgYW4gQUREUkVTU09GLgoKCSogY3NlLmMgKGNhbm9uX2hhc2gpOiBIYW5kbGUgVVNFIG9mIEJMS21vZGUgbWVtb3J5LgoJKGNzZV9pbnNuKTogT3V0Z29pbmcgYXJndW1lbnRzIGZvciBhIGxpYmNhbGwgZG9uJ3QKCWFmZmVjdCBhbnkgcmVjb3JkZWQgZXhwcmVzc2lvbnMuCgoyMDAwLTA5LTEyICBUb20gVHJvbWV5ICA8dHJvbWV5QGN5Z251cy5jb20+CgoJKiBjb25maWd1cmUsIGNvbmZpZy5pbjogUmVidWlsdC4KCSogY29uZmlndXJlLmluOiBDaGVjayBmb3IgaWNvbnYsIG5sX2xhbmdpbmZvLCBsYW5naW5mby5oLgoKMjAwMC0wOS0xMiAgSmFrdWIgSmVsaW5layAgPGpha3ViQHJlZGhhdC5jb20+CgoJKiBjLWxleC5jIChsZXhfc3RyaW5nKTogVXNlIGNoYXJ3aWR0aCB0byBjb21wdXRlIGJ5dGVtYXNrLgoJKiBleHByLmMgKGV4cGFuZF9leHByKTogRG9uJ3Qgb3B0aW1pemUgY29uc3RhbnQgYXJyYXkgcmVmZXJlbmNlcwoJaW5pdGlhbGl6ZWQgd2l0aCB3aWRlIHN0cmluZyBjb25zdGFudHMuCgoyMDAwLTA5LTEzICBNaWNoYWVsIEhheWVzICA8bWhheWVzQGN5Z251cy5jb20+CgoJKiBsb29wLmMgKG5vdGVfc2V0X3BzZXVkb19tdWx0aXBsZV91c2VzKTogQ29ycmVjdC4KCjIwMDAtMDktMTIgIEppbSBXaWxzb24gIDx3aWxzb25AY3lnbnVzLmNvbT4KCgkqIGlmY3Z0LmMgKG5vY2VfcHJvY2Vzc19pZl9ibG9jayk6IElmIEEgYW5kIEIgYXJlIHRoZSBzYW1lLCBhbmQgbm8KCWVsc2UgYmxvY2ssIGFuZCBYIGhhcyBzaWRlLWVmZmVjdHMsIHRoZW4gZmFpbC4KCjIwMDAtMDktMTIgIEdyZWcgTWNHYXJ5ICA8Z3JlZ0BtY2dhcnkub3JnPgoKCSogY29uZmlnL21pcHMvbWlwcy1wcm90b3MuaAoJKHRyYXBfY21wX29wLCBtaXBzX2dlbl9jb25kaXRpb25hbF90cmFwKTogTmV3IGZ1bmMgZGVjbHMuCgkqIGNvbmZpZy9taXBzL21pcHMuaCAoSVNBX0hBU19DT05EX1RSQVApOiBOZXcgbWFjcm8uCgkoUFJFRElDQVRFX0NPREVTKTogQWRkICJ0cmFwX2NtcF9vcCIuCgkqIGNvbmZpZy9taXBzL21pcHMuYwoJKHRyYXBfY21wX29wLCBtaXBzX2dlbl9jb25kaXRpb25hbF90cmFwKTogTmV3IGZ1bmN0aW9ucy4KCSogY29uZmlnL21pcHMvbWlwcy5tZCAodHJhcCwgY29uZGl0aW9uYWxfdHJhcCk6IE5ldyBwYXR0ZXJucy4KCjIwMDAtMDktMTIgIEJlcm5kIFNjaG1pZHQgIDxiZXJuZHNAcmVkaGF0LmNvLnVrPgoKCSogZmxvdy5jICh0cnlfcHJlX2luY3JlbWVudF8xKTogRG9uJ3QgZG8gYW55dGhpbmcgdG8gc2V0cyBvZiB0aGUgc3RhY2sKCXBvaW50ZXIuCgoyMDAwLTA5LTEyICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBidWlsdGlucy5jIChidWlsdF9pbl9kZWNscyk6IE5ldyBhcnJheS4KCShleHBhbmRfYnVpbHRpbl9mcHV0cyk6IE5ldyBmdW5jdGlvbi4KCShleHBhbmRfYnVpbHRpbik6IEhhbmRsZSBCVUlMVF9JTl9GUFVUQyBhbmQgQlVJTFRfSU5fRlBVVFMuCgoJKiBidWlsdGlucy5kZWYgKEJVSUxUX0lOX0ZQVVRDLCBCVUlMVF9JTl9GUFVUUyk6IE5ldyBtZW1iZXJzLgoKCSogYy1jb21tb24uYyAoY19jb21tb25fbm9kZXNfYW5kX2J1aWx0aW5zKTogSGFuZGxlIGZwdXRjL2ZwdXRzLgoKCSogdHJlZS5oIChidWlsdF9pbl9kZWNscyk6IE5ldyBhcnJheS4KClR1ZSBTZXAgMTIgMDg6NTM6NTcgMjAwMCAgSmVmZnJleSBBIExhdyAgKGxhd0BjeWdudXMuY29tKQoKCSogY29udmV4Lm1kOiBVc2UgIisiIGluc3RlYWQgb2YgIj0iIGZvciBvdXRwdXRzIHdyYXBwZWQgaW4gYQoJU1RSSUNUX0xPV19QQVJULgoJKiBpMzcwLm1kLCBpMzg2Lm1kLCBuczMyay5tZCwgc2gubWQsIHZheC5tZDogTGlrZXdpc2UuCgoyMDAwLTA5LTEyICBLYXp1IEhpcmF0YSAgPGthenVAaHhpLmNvbT4KCgkqIGhhaWZhLXNjaGVkLmM6IEZpeCBmb3JtYXR0aW5nLgoKCSogZ2VuYXR0cnRhYi5jOiBGaXggZm9ybWF0dGluZy4KCgkqIHVucm9sbC5jOiBGaXggZm9ybWF0dGluZy4KCjIwMDAtMDktMTIgIEJydWNlIEtvcmIgIDxia29yYkBnbnUub3JnPgoKCSogZml4aW5jL2ZpeGZpeGVzLmM6IG1ha2UgYSB0eXBlIGZvciB0aGUgZml4IHByb2NlZHVyZSAmIHVzZSBpdCwKCXJlbW92ZSBvYnNvbGV0ZSBjb2RlCgkqIGZpeGluYy9maXhpbmNsLmM6IFVzZSBQQVJBTVMsIG5vdCBfUF8uICBBZGQgbm8tb3AgZGVmYXVsdCB0byBzd2l0Y2guCgkqIGZpeGluYy9maXhpbmNsLnRwbDogbWFrZSBub24tZXhwb3J0ZWQgYXJyYXlzIHN0YXRpYyBzY29wZQoJKiBmaXhpbmMvZml4aW5jbC54OiByZWdlbmVyYXRlCgkqIGZpeGluYy9maXhsaWIuaDogVXNlIFBBUkFNUywgbm90IF9QXwoJKiBmaXhpbmMvZml4dGVzdHMuYzogbWFrZSBhIHR5cGUgZm9yIHRoZSB0ZXN0IHByb2MgJiB1c2UgaXQKCSogZml4aW5jL3NlcnZlci5oOiBVc2UgUEFSQU1TLCBub3QgX1BfCgoyMDAwLTA5LTEyICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBjLXR5cGVjay5jIChwcm9jZXNzX2luaXRfZWxlbWVudCk6IEF2b2lkIHVuaW9uIGluaXQgd2FybmluZ3Mgb24KCWZsb2F0aW5nIHBvaW50IHplcm8uICBEb24ndCBjcmFzaCBvbiB1bmlvbnMgY29udGFpbmluZyBzdHJ1Y3RzLgoKMjAwMC0wOS0xMiAgQWxleGFuZHJlIE9saXZhICA8YW9saXZhQHJlZGhhdC5jb20+CgoJKiBjb25maWcvc2gvc2guaCAoUFJFRElDQVRFX0NPREVTKTogQWRkIENPTlNUX0RPVUJMRSB0bwoJZ2VuZXJhbF9tb3ZzcmNfb3BlcmFuZCwgYW5kIHJlbW92ZSBDT05TVF9JTlQgZnJvbQoJZ2VuZXJhbF9tb3Zkc3Rfb3BlcmFuZC4KCjIwMDAtMDktMTIgIEJlcm5kIFNjaG1pZHQgIDxiZXJuZHNAcmVkaGF0LmNvLnVrPgoKCSogY3NlLmMgKGFwcHJveF9yZWdfY29zdCk6IElmIFNNQUxMX1JFR0lTVEVSX0NMQVNTRVMsIHJldHVybiBJTlRfTUFYCglpZiBhIHJlZmVyZW5jZSB0byBub24tZml4ZWQgaGFyZHJlZyBpcyBzZWVuLiAgT3RoZXJ3aXNlLCBjb3VudCBoYXJkCglyZWdzIHdpdGggYSBoaWdoZXIgY29zdC4KCShwcmVmZXJyYWJsZSk6IERlYWwgd2l0aCBjYXNlcyB3aGVyZSBlaXRoZXIgY29zdCBvciByZWdjb3N0IGlzCglNQVhfQ09TVC4KCShjc2VfaW5zbik6IFVzZSBNQVhfQ09TVCByYXRoZXIgdGhhbiAxMDAwMC4gIEFsd2F5cyBpbml0aWFsaXplCglyZWdjb3N0IHZhbHVlcy4KCShDT1NUU19OX0lOU05TKTogTW92ZSBkZWZpbml0aW9uLi4uCgkqIHJ0bC5oOiAuLi5oZXJlLgoJKE1BWF9DT1NUKTogTmV3IG1hY3JvLgoJKiBsb29wLmMgKGluaXRfbG9vcCk6IFVzZSBDT1NUU19OX0lOU05TIG1hY3JvIGluc3RlYWQgb2YgaGFyZGNvZGVkCgljb25zdGFudC4KCjIwMDAtMDktMTEgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjLWNvbW1vbi5oIChnZW5ydGxfY2xlYXJfb3V0X2Jsb2NrKTogUmVtb3ZlLgoJKiBjLXNlbWFudGljcy5jIChnZW5ydGxfY2xlYXJfb3V0X2Jsb2NrKTogUmVtb3ZlLgoJKGdlbnJ0bF93aGlsZV9zdG10KTogRG9uJ3QgY2FsbCBpdC4KCShnZW5ydGxfZm9yX3N0bXQpOiBMaWtld2lzZS4KCjIwMDAtMDktMTEgIFphY2sgV2VpbmJlcmcgIDx6YWNrQHdvbGVyeS5jdW1iLm9yZz4KCgkqIGNwcGZpbGVzLmM6IE1vdmUgYWxsIGRlZmF1bHQtI2RlZmluZXMgdG8gdG9wIG9mIGZpbGUuCgkob3Blbl9pbmNsdWRlX2ZpbGUpOiBSZXBsYWNlIGJ5IGxvb2t1cF9pbmNsdWRlX2ZpbGUuCgkocmVhZF93aXRoX3JlYWQsIHJlYWRfZmlsZSk6IE1lcmdlZCBpbnRvIHJlYWRfaW5jbHVkZV9maWxlLgoJKHN0YWNrX2luY2x1ZGVfZmlsZSwgcHVyZ2VfY2FjaGUpOiBOZXcgZnVuY3Rpb25zLgoJKGNsb3NlX2NhY2hlZF9mZCk6IERlbGV0ZS4KCShsb29rdXBfaW5jbHVkZV9maWxlLCByZWFkX2luY2x1ZGVfZmlsZSwgX2NwcF9wb3BfZmlsZV9idWZmZXIpOgoJQ2FjaGUgdGhlIGluLW1lbW9yeSBidWZmZXIsIG5vdCB0aGUgZmlsZSBkZXNjcmlwdG9yLgoKCSogY3BwaGFzaC5oIChzdHJ1Y3QgaW5jbHVkZV9maWxlKTogQWRkIGJ1ZmZlciwgc3QsIHJlZmNudCwKCW1hcHBlZCBmaWVsZHMuCgkoeGNuZXcpOiBOZXcgdXRpbGl0eSBtYWNyby4KCShET19OT1RfUkVSRUFELCBORVZFUl9SRVJFQUQpOiBNb3ZlIHVwIGJ5IHN0cnVjdCBpbmNsdWRlX2ZpbGUuCgkqIGNwcGxpYi5oIChzdHJ1Y3QgY3BwX2J1ZmZlcik6IFJlbW92ZSBtYXBwZWQgZmllbGQuCgoyMDAwLTA5LTExICBaYWNrIFdlaW5iZXJnICA8emFja0B3b2xlcnkuY3VtYi5vcmc+CgoJKiBjcHBsZXguYyAocGFyc2Vfc3RyaW5nKTogQWNjZXB0IGJhY2tzbGFzaCBzcGFjZSBuZXdsaW5lIGFzIGEKCWxpbmUgY29udGludWF0aW9uLgoJKGxleF9saW5lKTogTGlrZXdpc2UuCgkoX2NwcF9nZXRfdG9rZW4pOiBSZW1vdmUgaGFyZCBsaW1pdCBvbiBtYWNybyBuZXN0aW5nLgoKMjAwMC0wOS0xMiAgUGhpbGlwcCBUaG9tYXMgIDxwdGhvbWFzQHN1c2UuZGU+CgoJKiBhY2xvY2FsLm00IChBTV9XSVRIX05MUyk6IERvbid0IGZvcmNlIHVzZSBvZiBpbmNsdWRlZCBnZXR0ZXh0LgoJKiBjb25maWd1cmU6IFJlYnVpbHQuCgoyMDAwLTA5LTEzICBNaWNoYWVsIEhheWVzICA8bWhheWVzQGN5Z251cy5jb20+CgoJKiBmbG93LmMgKHNwbGl0X2Jsb2NrKTogRml4IHVwZGF0ZSBvZiByZWdpc3RlcnMgbGl2ZSBhdAoJZW5kIG9mIHNwbGl0IGJsb2NrLgoKVHVlIFNlcCAxMiAwMTo1MTozOCBNRVQgRFNUIDIwMDAgIEphbiBIdWJpY2thICA8amhAc3VzZS5jej4KCgkqIGkzODYubWQgKGFkZD9pXzMsIGFkZD9pXzUpOiBOZXcuCgkoYWRkP2lfNCk6IFJlbmFtZSBmcm9tIGFkZD9pXzM7ICBGaXggY29tcGFyZSBwYXR0ZXJuLgoJKHN1Yj9pXzMsIHhvcj9pXzMsIGlvcj9pXzMpOiBOZXcuCgoJKiBnZW5yZWNvZy5jICh3cml0ZV90cmVlKTogT3V0cHV0IGNvZGUgdG8gY2xlYXIgaW5zbl9leHRyYWN0IGNhY2hlLgoJKiBnZW5hdHRydGFiLmMgKHdyaXRlX2F0dHJfY2FzZSk6IEdlbiBjYWxsIHRvIGV4dHJhY3RfaW5zbl9jYWNoZQoJaW5zdGVhZCBvZiBleHRyYWN0X2luc24gYW5kIGV4dHJhY3RfY29uc3RyYWluX2luc25fY2FjaGUgaW5zdGVhZCBvZgoJZXh0cmFjdF9pbnNuIGFuZCBjb25zdHJhaW5fb3BlcmFuZHMuCgkqIHJlY29nLmMgKGV4dHJhY3RfaW5zbl9jYWNoZWQsIGV4dHJhY3RfY29uc3RyYWluX2luc25fY2FjaGVkKToKCU5ldyBmdW5jdGlvbnMuCgkoZXh0cmFjdF9pbnNuKTogQ2xlYXIgd2hpY2hfYWx0ZXJuYXRpdmUuCgkoY29uc3RyYWluX29wZXJhbmRzKTogU2V0IHdoaWNoX2FsdGVybmF0aXZlIHRvIC0xIHdoZW4gZmFpbGVkLgoJKiByZWNvZy5oIChleHRyYWN0X2NvbnN0cmFpbl9pbnNuX2NhY2hlZCwgZXh0cmFjdF9pbnNuX2NhY2hlZCk6CglEZWNsYXJlLgoKMjAwMC0wOS0xMSAgTWF0dGhldyBIaWxsZXIgIDxoaWxsZXJAcmVkaGF0LmNvbT4KCgkqIGNvbmZpZy9oODMwMC9oODMwMC5tZCAobW92c3RyaWN0cWkpOiBDaGFuZ2VkIGNvbnN0cmFpbnQgbW9kaWZpZXIKCW9uIG9wZXJhbmQgMCB0byAnKycuCgkobW92c3RyaWN0aGkpOiBMaWtld2lzZS4KCjIwMDAtMDktMTIgIE1pY2hhZWwgSGF5ZXMgIDxtaGF5ZXNAY3lnbnVzLmNvbT4KCgkqIGxvb3AuaCAoTE9PUF9JVlMpOiBOZXcgbWFjcm8uCgkoUkVHX0lWX1RZUEUsIFJFR19JVl9JTkZPKTogQWRkIGl2cyBhcmd1bWVudC4KCShzdHJ1Y3QgbG9vcF9pdnMpOiBOZXcuCgkoc3RydWN0IGxvb3BfaW5mbyk6IEFkZCBpdnMgZmllbGQuCgkocmVnX2l2X3R5cGUsIHJlZ19pdl9pbmZvKTogRGVsZXRlIHByb3RvdHlwZS4KCShyZWdfYml2X2NsYXNzLCBsb29wX2l2X2xpc3QpOiBMaWtld2lzZS4KCSogbG9vcC5jIChyZWNvcmRfYml2LCBmaW5kX2xpZmVfZW5kKTogUGFzcyBsb29wIGFyZ3VtZW50LgoJKHJlZ19pdl90eXBlKTogUmVtb3ZlIGdsb2JhbCBhcnJheSBhbmQgdXNlCglmaWVsZCBpbiBsb29wX3JlZ3Mgc3RydWN0dXJlIHdpdGhpbiBsb29wX2l2cyBzdHJ1Y3R1cmUuCgkocmVnX2l2X2luZm8sIHJlZ19iaXZfY2xhc3MsIGxvb3BfaXZfbGlzdCk6IExpa2V3aXNlLgoJKGZpcnN0X2luY3JlbWVudF9naXYsIGxhc3RfaW5jcmVtZW50X2dpdik6IFVzZSBlbnRyeSBpbgoJbG9vcF9pdnMgc3RydWN0dXJlLgoJKHJlY29yZF9pbml0aWFsKTogUGFzcyBpdnMgcG9pbnRlci4KCSogdW5yb2xsLmMgKGNvcHlfbG9vcF9ib2R5LCByZW1hcF9zcGxpdF9iaXZzKTogQWRkIGxvb3AgYXJndW1lbnQuCgoyMDAwLTA5LTEyICBNaWNoYWVsIEhheWVzICA8bWhheWVzQGN5Z251cy5jb20+CgoJKiBsb29wLmggKExPT1BfUkVHUyk6IE5ldyBtYWNyby4KCShzdHJ1Y3QgbG9vcF9yZWdzKTogTmV3LgoJKHN0cnVjdCBsb29wX2luZm8pOiBBZGQgcmVncyBmaWVsZC4KCSogbG9vcC5jIChzZXRfaW5fbG9vcCk6IFJlbW92ZSBnbG9iYWwgYXJyYXkgYW5kIHN0b3JlCglpbiBsb29wX3JlZ3Mgc3RydWN0dXJlIGFzIHBhcnQgb2YgbG9vcF9pbmZvIHN0cnVjdHVyZS4KCShuX3RpbWVzX3NldCwgbWF5X25vdF9vcHRpbWl6ZSk6IExpa2V3aXNlLgoJKHJlZ19zaW5nbGVfdXNhZ2UsIG1vdmVkX29uY2UpOiBMaWtld2lzZS4KCShjb3VudF9vbmVfc2V0KTogQWRkIHJlZ3MgYXJndW1lbnQuCgkoY29tYmluZV9tb3ZhYmxlcywgcnR4X2VxdWFsX2Zvcl9sb29wX3AsIGNvbWJpbmVfZ2l2cyk6IExpa2V3aXNlLgoJKHNldF9wc2V1ZG9fbXVsdGlwbGVfdXNlcyk6IFBhc3MgcmVncyBwb2ludGVyLgoKMjAwMC0wOS0xMiAgTWljaGFlbCBIYXllcyAgPG1oYXllc0BjeWdudXMuY29tPgoKCSogdW5yb2xsLmMgKGl0ZXJhdGlvbl9pbmZvKTogU3Vic3VtZSBpbnRvIGxvb3BfaXRlcmF0aW9ucy4KCSogbG9vcC5oIChsb29wX2luZm8pOiBOZXcgZmllbGQgaXYuCgoyMDAwLTA5LTEyICBNaWNoYWVsIEhheWVzICA8bWhheWVzQGN5Z251cy5jb20+CgoJKiBiYXNpYy1ibG9jay5oIChMT09QX1RSRUUsIExPT1BfUFJFX0hFQURFUiwgTE9PUF9FREdFUyk6IE5ldy4KCShMT09QX0VYSVRTX0RPTVMsIExPT1BfQUxMKTogTGlrZXdpc2UuCgkoZmxvd19sb29wc191cGRhdGUpOiBOZXcgcHJvdG90eXBlLgoJKGZsb3dfbG9vcHNfZmluZCk6IEFkZCBmbGFncyB0byBwcm90b3R5cGUuCgkoc3RydWN0IGxvb3ApOiBBZGQgYHByZV9oZWFkZXJfcm9vdCcgYW5kIGBwcmVfaGVhZGVyX3RyYWNlJyBmaWVsZHMuCgkqIGZsb3cuYyAoZmxvd19sb29wX3ByZV9oZWFkZXJfc2Nhbik6IE5ldy4KCShmbG93X2xvb3BfZHVtcCk6IER1bXAgcHJlLWhlYWRlciByb290IGFuZCB0cmFjZSBhbmQgZXhpdCBkb21pbmF0b3JzLgoJKGZsb3dfbG9vcF9mcmVlKTogRnJlZSBwcmUtaGVhZGVyIHJvb3QgYW5kIHRyYWNlIGFuZCBleGl0IGRvbWluYXRvcnMuCgkoZmxvd19sb29wc19maW5kKTogTmV3IGFyZ3VtZW50IGZsYWdzLgoJKGZsb3dfbG9vcHNfdXBkYXRlKTogTmV3IGZ1bmN0aW9uLgoJKiB0b3BsZXYuYyAocmVzdF9vZl9jb21waWxhdGlvbik6IEFkZCBmbGFnIGFyZ3VtZW50IHRvIGZsb3dfbG9vcHNfZmluZC4KCjIwMDAtMDktMTIgIE1pY2hhZWwgSGF5ZXMgIDxtaGF5ZXNAY3lnbnVzLmNvbT4KCgkqIGJhc2ljLWJsb2NrLmggKHNwbGl0X2Jsb2NrLCB1cGRhdGVfYmJfZm9yX2luc24pOiBOZXcgcHJvdG90eXBlcy4KCSogZmxvdy5jIChzcGxpdF9ibG9jaywgdXBkYXRlX2JiX2Zvcl9pbnNuKTogTmV3IGZ1bmN0aW9ucy4KCjIwMDAtMDktMTEgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgoJKiBjc2UuYyAoZm9sZF9ydHgpOiBIb25vciBOT19GVU5DVElPTl9DU0UuCgoyMDAwLTA5LTExICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEBjeWdudXMuY29tPgoKCSogY29uZmlnL2lhNjQvaWE2NC1wcm90b3MuaCAoZnJfbm9uaW1tZWRpYXRlX29wZXJhbmQpOiBEZWNsYXJlLgoJKiBjb25maWcvaWE2NC9pYTY0LmMgKGZyX25vbmltbWVkaWF0ZV9vcGVyYW5kKTogTmV3LgoJKGlhNjRfb3ZlcnJpZGVfb3B0aW9ucyk6IFByZXZlbnQgb3B0aW1pemluZyBkaXZpc2lvbiBmb3IgYm90aAoJbGF0ZW5jeSBhbmQgdGhyb3VnaHB1dC4KCShydHhfbmVlZHNfYmFycmllcik6IEhhbmRsZSBmcmNwYS4KCSogY29uZmlnL2lhNjQvaWE2NC5oIChNQVNLX0lOTElORV9ESVZfTEFUKTogTmV3LgoJKE1BU0tfSU5MSU5FX0RJVl9USFIsIFRBUkdFVF9JTkxJTkVfRElWX0xBVCk6IE5ldy4KCShUQVJHRVRfSU5MSU5FX0RJVl9USFIsIFRBUkdFVF9JTkxJTkVfRElWKTogTmV3LgoJKFRBUkdFVF9TV0lUQ0hFUyk6IEFkZCAtbWlubGluZS1kaXZpZGUtbWluLWxhdGVuY3kgYW5kCgktbWlubGluZS1kaXZpZGUtbWF4LXRocm91Z2hwdXQuCgkoUFJFRElDQVRFX0NPREVTKTogVXBkYXRlLgoJKiBjb25maWcvaWE2NC9pYTY0Lm1kIChleHRlbmRzaWRpMik6IFJlbW92ZSAqIGZyb20gZiBjYXNlLgoJKHplcm9fZXh0ZW5kc2lkaTIpOiBMaWtld2lzZS4gIEZpeCB0eXBvIGluIGYgY2FzZSBpbnNuLgoJKGV4dGVuZHNmZGYyKTogQWRkIGNhc2VzIGZvciBncjwtPmZyIGFuZCBmcjwtPm1lbS4KCShleHRlbmRzZnRmMik6IExpa2V3aXNlLgoJKGV4dGVuZGRmdGYyKTogTGlrZXdpc2UuCgkoZml4X3RydW5jdGZkaTJfYWx0cyk6IE5ldy4KCShmaXh1bnNfdHJ1bmN0ZmRpMl9hbHRzKTogTmV3LgoJKG1hZGQqNCk6IFJlbmFtZSBmcm9tIG1hZGQqMy4KCShkaXZzaTMsIG1vZHNpMywgdWRpdnNpMywgdW1vZHNpMyk6IE5ldy4KCShkaXZzaTNfaW50ZXJuYWwpOiBOZXcuCgkoZGl2ZGkzLCBtb2RkaTMsIHVkaXZkaTMsIHVtb2RkaTMpOiBOZXcuCgkoZGl2ZGkzX2ludGVybmFsX2xhdCwgZGl2ZGkzX2ludGVybmFsX3Rocik6IE5ldy4KCShtdWx0ZjNfYWx0cywgbWFkZHRmNF9hbHRzLCBubWFkZHRmNF9hbHRzKTogTmV3LgoJKHJlY2lwX2FwcHJveCk6IE5ldy4KCjIwMDAtMDktMTEgIEFsZXhhbmRyZSBPbGl2YSAgPGFvbGl2YUByZWRoYXQuY29tPgoKCSogcHJpbnQtcnRsLmMgKGRlYnVnX2NhbGxfcGxhY2Vob2xkZXJfdmVyYm9zZSk6IE5ldyB2YXJpYWJsZS4KCShwcmludF9ydHgpIFtDQUxMX1BMQUNFSE9MREVSXTogRHVtcCBhbGwgY2FsbCBzZXF1ZW5jZXMgaWYgaXQgaXMKCXNldC4KCSogaW50ZWdyYXRlLmMgKGNvcHlfcnR4X2FuZF9zdWJzdGl0dXRlKTogRG9uJ3Qgc2hhcmUKCUxFQUZfUkVHX1JFTUFQcGFibGUgcmVnaXN0ZXJzIHdpdGggdGhlIGlubGluZWQgZnVuY3Rpb24uICBEb24ndAoJc2hhcmUgdGhlIGZ1bmN0aW9uIHZhbHVlIHdpdGggY2FsbGluZyBzZXF1ZW5jZXMuCgoyMDAwLTA5LTExICBKYWt1YiBKZWxpbmVrICA8amFrdWJAcmVkaGF0LmNvbT4KCgkqIGMtZGVjbC5jIChkb19jYXNlKTogRml4IGEgdHlwby4KCgkqIGNvbWJpbmUuYyAoc2ltcGxpZnlfaWZfdGhlbl9lbHNlKTogRG9uJ3QgY29udmVydCBhID09IGIgPyBiIDogYQoJdG8gYSBpZiB0aGUgY29tcGFyaXNvbiBpcyBmbG9hdGluZyBtb2RlIGFuZCBub3QgLWZmYXN0LW1hdGguCgkqIHNpbXBsaWZ5LXJ0eC5jIChzaW1wbGlmeV90ZXJuYXJ5X29wZXJhdGlvbik6IExpa2V3aXNlLgoKTW9uIFNlcCAxMSAyMDowNzo0OCAyMDAwICBKIm9ybiBSZW5uZWNrZSA8YW15bGFhckByZWRoYXQuY28udWs+CgoJKiBzaC5oIChJTklUSUFMSVpFX1RSQU1QT0xJTkUpOiBSZW1vdmUgc3RyYXkgY2FsbCB0bwoJZ2VuX2ljX2ludmFsaWRhdGVfbGluZS4KCjIwMDAtMDktMTEgIFBoaWxpcCBCbHVuZGVsbCAgPHBiQGZ1dHVyZXR2LmNvbT4KCgkqIGNvbmZpZy9hcm0vZWxmLmggKFNVQlRBUkdFVF9DUFBfU1BFQyk6IERvbid0IGRlZmluZSBgYXJtX2VsZicuCgpNb24gU2VwIDExIDEwOjQ4OjQxIDIwMDAgIFVscmljaCBEcmVwcGVyIDxkcmVwcGVyQHJlZGhhdC5jb20+CgoJKiBpbnN0YWxsLnRleGkgKExBTkdVQUdFUyk6IFVwZGF0ZSB0byBpbmNsdWRlIG5ldyBsYW5ndWFnZXMuCgkqIElOU1RBTEw6IFJlYnVpbHQuCgoyMDAwLTA5LTExICBESiBEZWxvcmllICA8ZGpAcmVkaGF0LmNvbT4KCgkqIGdjYy5jIChtYWluKTogRG9uJ3Qgd2FybiBhYm91dCB1bnVzZWQgLUIgcHJlZml4ZXMKCSh1bnVzZWRfcHJlZml4X3dhcm5pbmdzKTogcmVtb3ZlCgoyMDAwLTA5LTExICBLYXp1IEhpcmF0YSAgPGthenVAaHhpLmNvbT4KCgkqIGZpbmFsLmM6IEZpeCBmb3JtYXR0aW5nLgoKCSogaW50ZWdyYXRlLmM6IEZpeCBmb3JtYXR0aW5nLgoKMjAwMC0wOS0xMSAgR2VvZmYgS2VhdGluZyAgPGdlb2Zma0BjeWdudXMuY29tPgoKCSogYWxpYXMuYyAobWVtcmVmc19jb25mbGljdF9wKTogQW4gQUREUkVTU09GIGRvZXMgY29uZmxpY3QsIHNvcnJ5LgoKMjAwMC0wOS0xMSAgQmVybmQgU2NobWlkdCAgPGJlcm5kc0ByZWRoYXQuY28udWs+CgoJKiByZWxvYWQuYyAocmVnbm9fY2xvYmJlcmVkX3ApOiBGaXggdGhpbmtvIGluIHByZXZpb3VzIGNoYW5nZS4KCjIwMDAtMDktMTAgIFN0ZXBoYW5lIENhcnJleiAgPFN0ZXBoYW5lLkNhcnJlekB3b3JsZG5ldC5mcj4KCgkqIGdjYy4xOiBEb2N1bWVudCA2OGhjMTEgc3BlY2lmaWMgb3B0aW9ucy4KCjIwMDAtMDktMTAgIEdlb2ZmIEtlYXRpbmcgIDxnZW9mZmtAY3lnbnVzLmNvbT4KCgkqIGNvbmZpZy9yczYwMDAvc3lzdjQuaCAoTUFTS19MT05HX0RPVUJMRV8xMjgpOiBEZWZpbmUuCgkoVEFSR0VUX0xPTkdfRE9VQkxFXzEyOCk6IERlZmluZS4KCShTVUJUQVJHRVRfU1dJVENIRVMpOiBBZGQgLW1sb25nLWRvdWJsZS02NCBhbmQgLW1sb25nLWRvdWJsZS0xMjguCgkoTE9OR19ET1VCTEVfVFlQRV9TSVpFKTogUmVkZWZpbmUuCgkoTUFYX0xPTkdfRE9VQkxFX1RZUEVfU0laRSk6IERlZmluZS4KCShMSUJHQ0MyX0xPTkdfRE9VQkxFX1RZUEVfU0laRSk6IERlZmluZSBkZXBlbmRpbmcgb24gZGVmaW5pdGlvbgoJb2YgX19MT05HX0RPVUJMRV8xMjhfXy4KCShDUFBfU1lTVl9TUEVDKTogRGVmaW5lIF9fTE9OR19ET1VCTEVfMTI4X18gaWYgLW1sb25nLWRvdWJsZS0xMjgKCXBhc3NlZC4KCShDUFBfTE9OR0RPVUJMRV9ERUZBVUxUX1NQRUMpOiBEZWZpbmUuCgkoQ1BQX1NZU1ZfREVGQVVMVF9TUEVDKTogRGVmaW5lLgoJKFNVQlRBUkdFVF9FWFRSQV9TUEVDUyk6IEFkZCBjcHBfbG9uZ2RvdWJsZV9kZWZhdWx0LgoJKElOSVRfVEFSR0VUX09QVEFCUyk6IERlZmluZS4KCgkqIGNvbmZpZy9yczYwMDAvYWl4LmggKFJTNjAwMF9JVFJVTkMpOiBNb3ZlZCBmcm9tIHJzNjAwMC5oLgoJKFJTNjAwMF9VSVRSVU5DKTogTGlrZXdpc2UuCgkoSU5JVF9UQVJHRVRfT1BUQUJTKTogTmV3IG1hY3JvLgoJKiBjb25maWcvcnM2MDAwL3JzNjAwMC5jIChyczYwMDBfdHJ1bmNfdXNlZCk6IERlbGV0ZS4KCSh0cnVuY19kZWZpbmVkKTogRGVsZXRlLgoJKG91dHB1dF9wcm9sb2cpOiBEb24ndCBvdXRwdXQgLmV4dGVybiBkZWZpbml0aW9ucyBmb3IgZnAtPmludAoJY29udmVyc2lvbiByb3V0aW5lcywgQVNNX09VVFBVVF9FWFRFUk5BTF9MSUJDQUxMIHdpbGwgZG8gaXQuCgkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLmggKHJzNjAwMF90cnVuY191c2VkKTogRGVsZXRlLgoJKHRydW5jX2RlZmluZWQpOiBEZWxldGUuCgkoUlM2MDAwX0lUUlVOQyk6IE1vdmVkIHRvIGFpeC5oLgoJKFJTNjAwMF9VSVRSVU5DKTogTGlrZXdpc2UuCgkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLm1kIChmaXhfdHJ1bmNkZnNpMik6IEZhaWwgaWYgaXQgd291bGQKCW9ubHkgZW1pdCBhIGxpYmNhbGwuCgkoZml4dW5zX3RydW5jZGZzaTIpOiBEZWxldGUuCgkodHJ1bmNfY2FsbCk6IERlbGV0ZS4KCSh0cnVuY19jYWxsX3J0bCk6IERlbGV0ZS4KCjIwMDAtMDktMTAgIFphY2sgV2VpbmJlcmcgIDx6YWNrQHdvbGVyeS5jdW1iLm9yZz4KCgkqIHZhcmFzbS5jIChtYWtlX2RlY2xfcnRsKTogUmVzdG9yZSBsZWFkaW5nIHN0YXIgb24KCURFQ0xfQVNTRU1CTEVSX05BTUUgc2V0IGZvciBkZWNscyB3aXRoIGFuIGFzbXNwZWMuCgoyMDAwLTA5LTEwICBaYWNrIFdlaW5iZXJnICA8emFja0B3b2xlcnkuY3VtYi5vcmc+CgoJKiBjLXByYWdtYS5jIChoYW5kbGVfcHJhZ21hX3BhY2spOiBDb3JyZWN0IHBhcnNpbmcgbG9naWMgc28gaXQKCXdvbid0IGdpdmUgYSBzcHVyaW91cyBlcnJvciBmb3IgJyNwcmFnbWEgcGFjaygpJy4gIFNpbXBsaWZ5Cgljb250cm9sIGZsb3cgZm9yIHJlYWRhYmlsaXR5LiAgJ3Jlc2V0JyBhY3Rpb24gaXMgbm90IG5lY2Vzc2FyeS4KCjIwMDAtMDktMTAgIFphY2sgV2VpbmJlcmcgIDx6YWNrQHdvbGVyeS5jdW1iLm9yZz4KCgkqIGRlZmF1bHRzLmg6IFByb3ZpZGUgZGVmYXVsdCBkZWZpbml0aW9ucyBmb3I6IENIQVJfVFlQRV9TSVpFLAoJU0hPUlRfVFlQRV9TSVpFLCBJTlRfVFlQRV9TSVpFLCBMT05HX1RZUEVfU0laRSwKCUxPTkdfTE9OR19UWVBFX1NJWkUsIFdDSEFSX1RZUEVfU0laRSwgRkxPQVRfVFlQRV9TSVpFLAoJRE9VQkxFX1RZUEVfU0laRSwgTE9OR19ET1VCTEVfVFlQRV9TSVpFLCBhbmQgV0NIQVJfVU5TSUdORUQuCgoJKiBjcHBleHAuYywgZHdhcmZvdXQuYywgZHdhcmYyb3V0LmMsIGVtaXQtcnRsLmMsIGZpbmFsLmMsIG9wdGFicy5jLAoJcHJvZmlsZS5jLCBzZGJvdXQuYywgdHJhZGNpZi55LCB0cmVlLmM6CglJbmNsdWRlIGRlZmF1bHRzLmggaWYgbm90IGFscmVhZHkgaW5jbHVkZWQuCglEb24ndCBkZWZpbmUgdGhlIGFib3ZlIG1hY3Jvcy4KCgkqIE1ha2VmaWxlLmluOiBVcGRhdGUgZGVwZW5kZW5jaWVzLgoKMjAwMC0wOS0xMCAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGMtY29tbW9uLmggKGFkZF9zdG10KTogQ2hhbmdlIHByb3RvdHlwZS4KCShSRUNIQUlOX1NUTVRTKTogTmV3IG1hY3JvLgoJKENBU0VfTEFCRUxfREVDTCk6IExpa2V3aXNlLgoJKGdlbnJ0bF9jYXNlX2xhYmVsKTogQ2hhbmdlIHByb3RvdHlwZS4KCShjX2V4cGFuZF9zdGFydF9jYXNlKTogUmVtb3ZlIHByb3RvdHlwZS4KCShidWlsZF9jYXNlX2xhYmVsKTogQ2hhbmdlIHByb3RvdHlwZS4KCShkZWNsX2NvbnN0YW50X3ZhbHVlKTogRGVjbGFyZS4KCSogYy1jb21tb24uYyAoY2hlY2tfY2FzZV92YWx1ZSk6IEhhbmRsZSBDKysncyBleHRlbnNpb25zIHRvIEMKCXNlbWFudGljcy4KCSogYy1jb21tbm9uLmRlZiAoQ0FTRV9MQUJFTCk6IEFkZCByb29tIGZvciB0aGUgQ0FTRV9MQUJFTF9ERUNMCglmaWVsZC4KCSogYy1wYXJzZS5pbiAoc3RtdCk6IEFkanVzdCBoYW5kbGluZyBvZiByZXR1cm4gc3RhdGVtZW50cyBhbmQgY2FzZQoJbGFlbHMuCgkqIGMtc2VtYW50aWNzLmMgKGFkZF9zdG10KTogUmV0dXJuIHRoZSBuZXcgc3RhdGVtZW50LgoJKGdlbnJ0bF9yZXR1cm5fc3RtdCk6IFRha2UgdGhlIFJFVFVSTl9TVE1UIGFzIGlucHV0LCBub3QgdGhlCglyZXR1cm5lZCBleHByZXNzaW9uLiAgRGlyZWN0bHkgZ2VuZXJhdGUgUlRMLCByYXRoZXIgdGhhbiBjYWxsaW5nCgljX2V4cGFuZF9yZXR1cm4uCgkoZ2VucnRsX3N3aXRjaF9zdG10KTogRG9uJ3QgY2FsbCBjX2V4cGFuZF9zdGFydF9jYXNlLgoJKGJ1aWxkX2Nhc2VfbGFiZWwpOiBUYWtlIHRoZSBMQUJFTF9ERUNMIGFzIGlucHV0LCB0b28uCgkoZ2VucnRsX2Nhc2VfbGFiZWwpOiBKdXN0IGNhbGwgYWRkX2Nhc2Vfbm9kZS4KCShleHBhbmRfc3RtdCk6IEFkanVzdCBjYWxscyB0byBnZW5ydGxfcmV0dXJuX3N0bXQgYW5kCglnZW5ydGxfY2FzZV9sYWJlbC4KCSogYy10cmVlLmggKGNfZXhwYW5kX3N0YXJ0X2Nhc2UpOiBEZWNsYXJlLgoJKiBjLXR5cGVjay5jIChkZWNsX2NvbnN0YW50X3ZhbHVlKTogR2l2ZSBpdCBleHRlcm5hbCBsaW5rYWdlLgoJKGNfZXhwYW5kX3JldHVybik6IERvbid0IGNhbGwgZXhwYW5kX3JldHVybiBvciBleHBhbmRfbnVsbF9yZXR1cm47Cgl1c2UgZ2VucnRsX3JldHVybl9zdG10IGluc3RlYWQuCgkqIHN0bXQuYyAoc3RydWN0IG5lc3RpbmcpOiBSZW1vdmUgbnVtX3JhbmdlcyBmaWVsZC4KCShhZGRfY2FzZV9ub2RlKTogR2l2ZSBpdCBleHRlcm5hbCBsaW5rYWdlLgoJKGV4cGFuZF9zdGFydF9jYXNlKTogRG9uJ3Qgc2V0IG51bV9yYW5nZXMuCgkoZXhwYW5kX3N0YXJ0X2Nhc2VfZHVtbXkpOiBEb24ndCBjbGVhciBpdC4KCShwdXNoY2FzZSk6IFJlbHkgb24gYWRkX2Nhc2Vfbm9kZSB0byBoYW5kbGUgYGRlZmF1bHQnIGxhYmVscy4KCShhZGRfY2FzZV9ub2RlKTogSGFuZGxlIGBkZWZhdWx0JyBsYWJlbHMuCgkqIHRyZWUuYyAodHJlZV9pbnRfY3N0X2NvbXBhcmUpOiBOZXcgZnVuY3Rpb24uCgkqIHRyZWUuaCAodHJlZV9pbnRfY3N0X2NvbXBhcmUpOiBEZWNsYXJlLgoJKGFkZF9jYXNlX25vZGUpOiBMaWtld2lzZS4KCjIwMDAtMDktMTAgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgoJKiBjLXBhcnNlLmluOiBSZXZlcnQgbGFzdCBjaGFuZ2UuCgkoaW5pdF9yZXN3b3Jkcyk6IERvIG5vdCBlbnRlciBkaXNhYmxlZCBrZXl3b3JkcyBpbnRvIHRoZSByaWRwb2ludGVycwoJdGFibGUsIG1vZHVsbyBvYmpjIHdlaXJkbmVzcy4KCShfeXlsZXgpOiBSZXR1cm4gdGhlIGNhbm9uaWNhbCBzcGVsbGluZyBmb3IgYSBrZXl3b3JkLgoKMjAwMC0wOS0xMCAgUGhpbGlwIEJsdW5kZWxsICA8cGhpbGJAZ251Lm9yZz4KCgkqIGNvbmZpZy9hcm0vYXJtLmggKENQUF9JU0FfU1BFQyk6IERvbid0IGRlZmluZSBgYXJtJyBvciBgdGh1bWInLgoJKiBjb25maWcvYXJtL2xpbnV4LWVsZi5oIChDUFBfUFJFREVGSU5FUyk6IERvbid0IGRlZmluZSBgX19hcm1fXycuCgpTdW4gU2VwIDEwIDE0OjMwOjI4IEVEVCAyMDAwICBKb2huIFdlaGxlICAoam9obkBmZWl0aC5jb20pCgoJKiBhbGlhcy5jIChmaW5kX2Jhc2VfdGVybSk6IEhhbmRsZSBBRERSRVNTT0YuCgkobWVtcmVmc19jb25mbGljdF9wKTogQW4gQUREUkVTU09GIGRvZXNuJ3QgY29uZmxpY3QuCgoyMDAwLTA5LTEwICBEZW5pcyBDaGVydHlrb3YgIDxkZW5pc2NAb3ZlcnRhLnJ1PgoKCSogZ2Vub3V0cHV0LmMgKG91dHB1dF9pbnNuX2RhdGEpOiBUcmFuc2xhdGUgPE5FV0xJTkU+IHRvIFxuXCB3aGlsZQoJb3V0cHV0dGluZyB0ZW1wbGF0ZXMgd2l0aCBtYW55IGxpbmVzLgoKMjAwMC0wOS0xMCAgU3RlcGhhbmUgQ2FycmV6ICA8U3RlcGhhbmUuQ2FycmV6QHdvcmxkbmV0LmZyPgoKCSogbGliZ2NjMi5oOiBVc2UgTE9OR19MT05HX1RZUEVfU0laRSBpbnN0ZWFkIG9mIE1JTl9VTklUU19QRVJfV09SRAoJdG8gZGVjaWRlIHdoZXRoZXIgNjQtYml0IHN1cHBvcnQgbXVzdCBiZSBnZW5lcmF0ZWQuCgoyMDAwLTA5LTEwICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEBjeWdudXMuY29tPgoKCSogYy1wYXJzZS5pbiAoYXNtIHBhdHRlcm5zKTogRml4IHZvbGF0aWxlIGNoZWNrLgoKMjAwMC0wOS0wOSAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogY3BwbWFjcm8uYyAoY2hlY2tfdHJhZF9zdHJpbmdpZmljYXRpb24pOiBOZXcgZnVuY3Rpb24uCgkoc2F2ZV9leHBhbnNpb24pOiBJZiAtV3RyYWRpdGlvbmFsLCB3YXJuIGFib3V0IHN0cmluZ2lmaWNhdGlvbiBvZgoJbWFjcm8gYXJndW1lbnRzLgoKMjAwMC0wOS0xMSAgTWljaGFlbCBIYXllcyAgPG1oYXllc0BjeWdudXMuY29tPgoKCSogbG9vcC5oIChzdHJ1Y3QgbG9vcF9tZW1faW5mbyk6IE1vdmUgZnJvbSBsb29wLmMKCShzdHJ1Y3QgbG9vcF9pbmZvKTogQWRkIGZpZWxkcyBzdG9yZV9tZW1zLCBtZW1zLCBtZW1zX2lkeCwKCW1lbXNfYWxsb2NhdGVkLCB1bmtub3duX2FkZHJlc3NfYWx0ZXJlZCwKCXVua25vd25fY29uc3RhbnRfYWRkcmVzc19hbHRlcmVkLCBudW1fbWVtX3NldHMsIGFuZAoJZmlyc3RfbG9vcF9zdG9yZV9pbnNuLgoKCSogbG9vcC5jIChsb29wX3N0b3JlX21lbXMpOiBSZXBsYWNlIHdpdGggZmllbGQgaW4gbG9vcF9pbmZvIHN0cnVjdC4KCShsb29wX21lbXMsIGxvb3BfbWVtc19pZHgsIGxvb3BfbWVtc19hbGxvY2F0ZWQpOiBMaWtld2lzZS4KCSh1bmtub3duX2FkZHJlc3NfYWx0ZXJlZCwgdW5rbm93bl9jb25zdGFudF9hZGRyZXNzX2FsdGVyZWQpOiBMaWtld2lzZS4KCShudW1fbWVtX3NldHMpOiBMaWtld2lzZS4KCShyZXBsYWNlX2xvb3BfbWVtcywgcmVwbGFjZV9sb29wX3JlZ3MpOiBOZXcuCgkoc3RydWN0IGxvb3BfcmVwbGFjZV9hcmdzKTogTmV3LgoJKGxvYWRfbWVtcyk6IFVzZSByZXBsYWNlX2xvb3BfbWVtcy4KCSh0cnlfY29weV9wcm9wKTogVXNlIHJlcGxhY2VfbG9vcF9yZWdzLgoJKHJlcGxhY2VfbG9vcF9yZWcsIHJlcGxhY2VfbG9vcF9tZW0pOiBVc2UgbG9vcF9yZXBsYWNlX2FyZ3Mgc3RydWN0dXJlLgoKMjAwMC0wOS0wOSAgU3RlcGhhbmUgQ2FycmV6ICA8U3RlcGhhbmUuQ2FycmV6QHdvcmxkbmV0LmZyPgoKCSogY29uZmlndXJlLmluOiBSZWNvZ25pemUgbTY4MTEtZWxmIGFuZCBtNjgxMi1lbGYuCgkqIGNvbmZpZ3VyZTogUmVnZW5lcmF0ZS4KCjIwMDAtMDktMDkgIEdlb2ZmIEtlYXRpbmcgIDxnZW9mZmtAY3lnbnVzLmNvbT4KCgkqIHJlY29nLmMgKHZhbGlkYXRlX3JlcGxhY2VfcnR4XzEpOiBDb3JyZWN0IE1PREUgcGFyYW1ldGVyIGluIGNhbGwKCXRvIG9wZXJhbmRfc3Vid29yZC4KCjIwMDAtMDktMTAgIE1pY2hhZWwgSGF5ZXMgIDxtaGF5ZXNAY3lnbnVzLmNvbT4KCgkqIGxvb3AuYyAoc3RydWN0IG1vdmFibGVzKTogTmV3LgoJKG51bV9tb3ZhYmxlcyk6IE1vdmUgaW50byBzdHJ1Y3QgbW92YWJsZXMuCgkodGhlX21vdmFibGVzKTogQ2hhbmdlIHR5cGUgdG8gc3RydWN0IG1vdmFibGVzLgoJKGlnbm9yZV9zb21lX21vdmFibGVzKTogQ2hhbmdlIHN0cnVjdCBtb3ZhYmxlIGFyZyB0byBzdHJ1Y3QgbW92YWJsZXMuCgkoZm9yY2VfbW92YWJsZXMsIGNvbWJpbmVfbW92YWJsZXMsIHJlZ3NfbWF0Y2hfcCk6IExpa2V3aXNlLgoJKHJ0eF9lcXVhbF9mb3JfbG9vcF9wLCBtb3ZlX21vdmFibGVzKTogTGlrZXdpc2UuCgkoc2Nhbl9sb29wKTogQ2hhbmdlIG1vdmFibGVzIHRvIGJlIG9mIHR5cGUgc3RydWN0IG1vdmFibGVzLgoJUmVwbGFjZSBsYXN0X21vdmFibGUgd2l0aCBmaWVsZCBpbiBtb3ZhYmxlcyBzdHJ1Y3R1cmUuCgoyMDAwLTA5LTA4ICBaYWNrIFdlaW5iZXJnICA8emFja0B3b2xlcnkuY3VtYi5vcmc+CgoJKiBjLXByYWdtYS5jOiBEb24ndCBlbGlkZSBlbnRpcmUgZmlsZSBpZiAhSEFORExFX0dFTkVSSUNfUFJBR01BUy4KCShpbml0X3ByYWdtYSk6IEF2b2lkIHdhcm5pbmcgaWYgcGZpbGUgaGFwcGVucyB0byBiZSB1bnVzZWQuCgkqIGMtcHJhZ21hLmg6IE5ldmVyIGRlZmluZSBIQU5ETEVfR0VORVJJQ19QUkFHTUFTLiAgTmV2ZXIKCWRlZmluZSBpbml0X3ByYWdtYSB0byBub3RoaW5nLiAgQWx3YXlzIHByb3RvdHlwZQoJaW5pdF9wcmFnbWEuICBQcm90b3R5cGUgZGlzcGF0Y2hfcHJhZ21hIGlmICFVU0VfQ1BQTElCLgoKCSogYy1sZXguYyAocHJvY2Vzc19kaXJlY3RpdmUpOiBBbHdheXMgY2FsbCBkaXNwYXRjaF9wcmFnbWEuCglJbml0aWFsaXplIGVudGVyaW5nX2NfaGVhZGVyIHRvIDAuCgoyMDAwLTA5LTA4ICBTdGVwaGFuZSBDYXJyZXogIDxTdGVwaGFuZS5DYXJyZXpAd29ybGRuZXQuZnI+CgoJKiBjb25maWcvbTY4aGMxMS9tNjhoYzExLm1kOiBOZXcgZmlsZSwgbWFjaGluZSBkZXNjcmlwdGlvbiBmb3IKCTY4SEMxMSAmIDY4SEMxMi4KCSogY29uZmlnL202OGhjMTEvbTY4aGMxMS5oOiBOZXcgZmlsZSwgZGVmaW5pdGlvbnMgZm9yIDY4SEMxMSAmIDY4SEMxMi4KCSogY29uZmlnL202OGhjMTEvbTY4aGMxMS5jOiBOZXcgZmlsZSwgZnVuY3Rpb25zIGZvciA2OEhDMTEgJiA2OEhDMTIuCgkqIGNvbmZpZy9tNjhoYzExL202OGhjMTIuaDogTmV3IGZpbGUsIGRlZmluaXRpb25zIGZvciA2OEhDMTIuCgkqIGNvbmZpZy9tNjhoYzExL202OGhjMTEtcHJvdG9zLmg6IE5ldyBmaWxlLgoJKiBjb25maWcvbTY4aGMxMS9tNjhoYzExLWNydDAuUzogTmV3IGZpbGUsIHN0YXJ0dXAgY29kZS4KCSogY29uZmlnL202OGhjMTEvdC1tNjhoYzExLWdhczogTmV3IGZpbGUsIG1ha2VmaWxlIGZyYWdtZW50LgoJKiBjb25maWcvbTY4aGMxMS94bS1tNjhoYzExLmg6IE5ldyBmaWxlLCB0YXJnZXQgZGVmcy4KCSogY29uZmlnL202OGhjMTEvbGFyaXRoLmFzbTogTmV3IGZpbGUsIGxpYmdjYyByb3V0aW5lcy4KCjIwMDAtMDktMDggIFN0ZXBoYW5lIENhcnJleiAgPFN0ZXBoYW5lLkNhcnJlekB3b3JsZG5ldC5mcj4KCgkqIE1ha2VmaWxlLmluIChEUEJJVF9GVU5DUyk6IEFkZCBfdXNpX3RvX2RmLgoJKEZQQklUX0ZVTkNTKTogQWRkIF91c2lfdG9fc2YuCgkqIGNvbmZpZy9mcC1iaXQuYyAodXNpX3RvX2Zsb2F0KTogTmV3IGZ1bmN0aW9uLgoJKiBjb25maWcvZnAtYml0LmggKExfdXNpX3RvX3NmLCBMX3VzaV90b19kZik6IERlZmluZS4KCSh1c2lfdG9fZmxvYXQpOiBBZGQgYXBwcm9wcmlhdGUgI2RlZmluZS4KCjIwMDAtMDktMDggIEJlcm5kIFNjaG1pZHQgIDxiZXJuZHNAcmVkaGF0LmNvLnVrPgoKCSogaTM4Ni1wcm90b3MuaCAoc3NlX2NvbXBhcmlzb25fb3BlcmF0b3IsIG1teF9yZWdfb3BlcmFuZCk6IERlY2xhcmUKCW5ldyBmdW5jdGlvbnMuCgkqIGkzODYuYyAoc3NlX2NvbXBhcmlzb25fb3BlcmF0b3IsIG1teF9yZWdfb3BlcmFuZCk6IE5ldyBmdW5jdGlvbnMuCgkqIGkzODYubWQgKGF0dHIgInR5cGUiKTogQWRkIHNzZSBhbmQgbW14IHR5cGVzLgoJKGF0dHIgIm1lbW9yeSIpOiBIYW5kbGUgdGhlbSB3aXRob3V0IGEgY3Jhc2guCgkobW92c2lfMSwgbW92ZGlfMik6IEFsbG93IE1NWCByZWdzLgoJKG1vdmRpIHNwbGl0cyk6IERvbid0IHNwbGl0IG1vdmVzIGludm9sdmluZyBNTVggcmVncy4KCShzZXRjY180KTogUmVtb3ZlICcqJyBmcm9tIHBhdHRlcm4gbmFtZSBzbyB3ZSBnZXQgYSBnZW5fc2V0Y2M0LgoJKG1vdnY0c2ZfaW50ZXJuYWwsIG1vdnY0c2lfaW50ZXJuYWwsIG1vdnY4cWlfaW50ZXJuYWwsCgltb3Z2NGhpX2ludGVybmFsLCBtb3Z2MnNpX2ludGVybmFsLCBtb3Z2OHFpLCBtb3Z2NGhpLCBtb3Z2MnNpLAoJbW92djRzZiwgbW92djRzaSwgcHVzaHY0c2YsIHB1c2h2NHNpLCBwdXNodjhxaSwgcHVzaHY0aGksIHB1c2h2MnNpLAoJc3NlX21vdmFwcywgc3NlX21vdnVwcywgc3NlX21vdm1za3BzLCBtbXhfcG1vdm1za2IsIG1teF9tYXNrbW92cSwKCXNzZV9tb3ZudHY0c2YsIHNzZV9tb3ZudGRpLCBzc2VfbW92aGxwcywgc3NlX21vdmxocHMsIHNzZV9tb3ZocHMsCglzc2VfbW92bHBzLCBzc2VfbG9hZHNzLCBzc2VfbW92c3MsIHNzZV9zdG9yZXNzLCBzc2Vfc2h1ZnBzLAoJYWRkdjRzZjMsIHZtYWRkdjRzZjMsIHN1YnY0c2YzLCB2bXN1YnY0c2YzLCBtdWx2NHNmMywgdm1tdWx2NHNmMywKCWRpdnY0c2YzLCB2bWRpdnY0c2YzLCByY3B2NHNmMiwgdm1yY3B2NHNmMiwgcnNxcnR2NHNmMiwgdm1yc3FydHY0c2YyLAoJc3FydHY0c2YyLCB2bXNxcnR2NHNmMiwgc3NlX2FuZHRpMywgc3NlX25hbmR0aTMsIHNzZV9pb3J0aTMsCglzc2VfeG9ydGkzLCBtYXNrY21wdjRzZjMsIG1hc2tuY21wdjRzZjMsIHZtbWFza2NtcHY0c2YzLAoJdm1tYXNrbmNtcHY0c2YzLCBzc2VfY29taSwgc3NlX3Vjb21pLCBzc2VfdW5wY2tocHMsIHNzZV91bnBja2xwcywKCXNtYXh2NHNmMywgdm1zbWF4djRzZjMsIHNtaW52NHNmMywgdm1zbWludjRzZjMsIGN2dHBpMnBzLCBjdnRwczJwaSwKCWN2dHRwczJwaSwgY3Z0c2kyc3MsIGN2dHNzMnNpLCBjdnR0c3Myc2ksIGFkZHY4cWkzLCBhZGR2NGhpMywKCWFkZHYyc2kzLCBzc2FkZHY4cWkzLCBzc2FkZHY0aGkzLCB1c2FkZHY4cWkzLCB1c2FkZHY0aGkzLCBzdWJ2OHFpMywKCXN1YnY0aGkzLCBzdWJ2MnNpMywgc3NzdWJ2OHFpMywgc3NzdWJ2NGhpMywgdXNzdWJ2OHFpMywgdXNzdWJ2NGhpMywKCW11bHY0aGkzLCBzbXVsdjRoaTNfaGlnaHBhcnQsIHVtdWx2NGhpM19oaWdocGFydCwgbW14X3BtYWRkd2QsCgltbXhfaW9yZGkzLCBtbXhfeG9yZGkzLCBtbXhfYW5kZGkzLCBtbXhfbmFuZGRpMywgbW14X3Vhdmd2OHFpMywKCW1teF91YXZndjRoaTMsIG1teF9wc2FkYncsIG1teF9waW5zcncsIG1teF9wZXh0cncsIG1teF9wc2h1ZncsCgllcXY4cWkzLCBlcXY0aGkzLCBlcXYyc2kzLCBndHY4cWkzLCBndHY0aGkzLCBndHYyc2kzLCB1bWF4djhxaTMsCglzbWF4djRoaTMsIHVtaW52OHFpMywgc21pbnY0aGkzLCBhc2hydjRoaTMsIGFzaHJ2MnNpMywgbHNocnY0aGkzLAoJbHNocnYyc2kzLCBtbXhfbHNocmRpMywgYXNobHY0aGkzLCBhc2hsdjJzaTMsIG1teF9hc2hsZGkzLAoJbW14X3BhY2tzc3diLCBtbXhfcGFja3NzZHcsIG1teF9wYWNrdXN3YiwgbW14X3B1bnBja2hidywKCW1teF9wdW5wY2tod2QsIG1teF9wdW5wY2toZHEsIG1teF9wdW5wY2tsYncsIG1teF9wdW5wY2tsd2QsCgltbXhfcHVucGNrbGRxLCBlbW1zLCBzZmVuY2UsIGxkbXhjc3IsIHByZWZldGNoLCBzdG14Y3NyLCBzc2VfY2xydGksCgltbXhfY2xyZGkpOiBOZXcgcGF0dGVybnMuCgoyMDAwLTA5LTA4ICBSaWNoYXJkIEVhcm5zaGF3ICA8cmVhcm5zaGFAYXJtLmNvbT4KCgkqIGFybS5jOiBEb24ndCBpbmNsdWRlIHRtLmggZGlyZWN0bHkuCgpGcmkgU2VwICA4IDE0OjM0OjU2IE1FVCBEU1QgMjAwMCAgSmFuIEh1Ymlja2EgIDxqaEBzdXNlLmN6PgoKCSogcmVjb2cuYyAodmFsaWRhdGVfcmVwbGFjZV9ydHhfMSk6IEZpeCBjb25mdXNpb24gYWJvdXQgZXF1YWxpdHkKCXRlc3Rpbmc7IHNpbXBsaWZ5IHN1YnJlZ3Mgb2YgY29uc3RhbnRzIGFuZCBuZXN0ZWQgc3VicmVncy4KCjIwMDAtMDktMDggIEFsZXhhbmRyZSBPbGl2YSAgPGFvbGl2YUByZWRoYXQuY29tPgoKCSogY29uZmlnL3NoL3NoLm1kIChzeW1QTFRfbGFiZWwycmVnKTogVXNlIG9wZXJhbmQzIGZvciBQSUMgcmVnLgoKMjAwMC0wOS0wOCAgQmVybmQgU2NobWlkdCAgPGJlcm5kc0ByZWRoYXQuY28udWs+CgoJKiBjb21iaW5lLmMgKGNvbWJpbmVfc2ltcGxpZnlfcnR4KTogVHJ5IHRvIHNpbXBsaWZ5IFZFQ19TRUxFQ1Qgb2YgYQoJVkVDX0NPTkNBVC4KCSogcnRsLnRleGkgKGRlc2NyaXB0aW9uIG9mIFVTRSk6IEFkZCBub3RlIGFib3V0IHBvc3NpYmxlIHBpdGZhbGxzCgl3aXRoIHRoaXMgcnR4LgoJRnJvbSBSaWNoYXJkIEhlbmRlcnNvbjoKCSogcmVsb2FkMS5jIChjaG9vc2VfcmVsb2FkX3JlZ3MpOiBDb21wdXRlIG5lZWRfbW9kZSBwcm9wZXJseS4KCjIwMDAtMDktMDcgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgoJKiBjb25maWcvaWE2NC9saWIxZnVuY3MuYXNtIChfX2RpdnNpMyk6IFVzZSAuczEgZm9yIGZyY3BhLgoJKF9fbW9kc2kzLCBfX3Vtb2RzaTMpOiBMaWtld2lzZS4KCShfX3VkaXZzaTMpOiBMaWtld2lzZS4gIE5vcm1hbGl6ZSB0aGUgVEZtb2RlIHZhbHVlcy4KCjIwMDAtMDktMDcgIEdlb2ZmIEtlYXRpbmcgIDxnZW9mZmtAY3lnbnVzLmNvbT4KCgkqIGNvbmZpZy9yczYwMDAvc29sLWMwLmMgKF9zdGFydCk6IERlY2xhcmUgYHRlcm1mdW5jJyBwYXJhbWV0ZXIKCXdpdGggYSBwcm90b3R5cGUuCgkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLmggKFJTNjAwMF9BUkdfU0laRSk6IFVzZSBjYXN0IHRvIHN1cHByZXNzCgl3YXJuaW5nLgoKRnJpIFNlcCAgOCAwMzoyNjozOCAyMDAwICBKIm9ybiBSZW5uZWNrZSA8YW15bGFhckByZWRoYXQuY28udWs+CgoJKiBzaC5tZCAoY21wZXFzaV9pb3JfdCwgY21wZXFzaV9hbmRfdCk6IFJlbW92ZS4KCShjbXBlcWRpX3QpOiBBZGQgb3V0cHV0IHBhdHRlcm4uCgkoY21wZXFkaV90KzEpOiBEb24ndCBzcGxpdCB3aGVuIG5vdCBvcHRpbWl6aW5nLgoJUmVzdG9yZSBwcm9wZXIgc3BsaXR0aW5nIG9wZXJhdGlvbi4KCjIwMDAtMDktMDcgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgoJKiBjLWxleC5jIChwcm9jZXNzX2RpcmVjdGl2ZSk6IElmIG5vdCBIQU5ETEVfR0VORVJJQ19QUkFHTUFTLAoJZG8gbm90IGNhbGwgZGlzcGF0Y2hfcHJhZ21hLgoKMjAwMC0wOS0wNyAgSmltIFdpbHNvbiAgPHdpbHNvbkBjeWdudXMuY29tPgoKCSogcmVsb2FkLmMgKHB1c2hfcmVsb2FkKTogVXNlIENMQVNTX0NBTk5PVF9DSEFOR0VfTU9ERV9QIGluIGFkZGl0aW9uCgl0byBDTEFTU19DQU5OT1RfQ0hBTkdFX01PREUuCgkqIGNvbmZpZy9pYTY0L2lhNjQuaCAoQ0xBU1NfQ0FOTk9UX0NIQU5HRV9NT0RFX1ApOiBUcnVlIG9ubHkgaWYgdGhlCgltb2RlIGNsYXNzZXMgYXJlIGRpZmZlcmVudC4KCjIwMDAtMDktMDcgIFphY2sgV2VpbmJlcmcgIDx6YWNrQHdvbGVyeS5jdW1iLm9yZz4KCgkqIGNwcGxpYi5oIChzdHJ1Y3QgY3BwX29wdGlvbnMpOiBBZGQgdXNlcl9sYWJlbF9wcmVmaXggbWVtYmVyLAoJbGVmdCBvdXQgb2YgY29tbWl0IHdoaWNoIHJlbW92ZWQgY3BwdWxwLmMuCgoyMDAwLTA5LTA3ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEBjeWdudXMuY29tPgoKCSogYmItcmVvcmRlci5jIChmaXh1cF9yZW9yZGVyX2NoYWluKTogQWRkIGp1bXAgaW4gbmV3IGJsb2NrCglhZnRlciBzd2l0Y2ggZm9yIENBU0VfRFJPUFNfVEhST1VHSC4KCjIwMDAtMDktMDcgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgoJKiBsb29wLmMgKHN0cmVuZ3RoX3JlZHVjZSk6IENhbGwgY2hlY2tfZXh0X2RlcGVuZGFudF9naXZzLgoJUHJvcGVybHkgZXh0ZW5kIHRoZSBiaXYgaW5pdGlhbCB2YWx1ZSBmb3IgdGhlIGdpdi4KCShyZWNvcmRfYml2KTogWmVybyBleHRfZGVwZW5kYW50LgoJKHJlY29yZF9naXYpOiBOZXcgYXJndW1lbnQgZXh0X3ZhbC4gIFVwZGF0ZSBhbGwgY2FsbGVycy4KCShnZW5lcmFsX2luZHVjdGlvbl92YXIpOiBMaWtld2lzZS4KCShjb25zZWNfc2V0c19naXYpOiBMaWtld2lzZS4KCShzaW1wbGlmeV9naXZfZXhwcik6IExpa2V3aXNlLiAgRmlsbCBpbiBleHRfdmFsIGlmIHdlIGZpbmQKCWEgc2lnbi1leHRlbmQsIHplcm8tZXh0ZW5kLCBvciB0cnVuY2F0ZS4KCShjb21iaW5lX2dpdnNfcCk6IE1ha2Ugc3VyZSBtb2RlcyBhcmUgY29tcGF0aWJsZS4KCShjaGVja19leHRfZGVwZW5kYW50X2dpdnMpOiBOZXcuCgkoZXh0ZW5kX3ZhbHVlX2Zvcl9naXYpOiBOZXcuCgkqIGxvb3AuaCAoc3RydWN0IGluZHVjdGlvbik6IEFkZCBleHRfZGVwZW5kYW50LgoJKiB1bnJvbGwuYyAoaXRlcmF0aW9uX2luZm8pOiBFeHRlbmQgdGhlIGJpdiBpbml0aWFsIHZhbHVlIGZvciB0aGUgZ2l2LgoJKGZpbmRfc3BsaXR0YWJsZV9naXZzKTogTGlrZXdpc2UuCgkoZmluYWxfZ2l2X3ZhbHVlKTogTGlrZXdpc2UuCgoyMDAwLTA5LTA3ICBaYWNrIFdlaW5iZXJnICA8emFja0B3b2xlcnkuY3VtYi5vcmc+CgoJKiBjLXByYWdtYS5oOiBEZWZpbmUgSEFORExFX0dFTkVSSUNfUFJBR01BUyBpZgoJUkVHSVNURVJfVEFSR0VUX1BSQUdNQVMgaXMgZGVmaW5lZC4gIER1cGxpY2F0ZSBzb21lCglkZWZpbml0aW9ucyBmcm9tIGNwcGxpYi5oLgoJKiBjcHBsaWIuaDogRG9uJ3QgdHlwZWRlZiBzdHJ1Y3QgY3BwX3JlYWRlciBpZiBjLXByYWdtYS5oIGhhcwoJYWxyZWFkeSBkb25lIGl0LgoJKiB0bS50ZXhpOiBEb2N1bWVudCBIQU5ETEVfUFJBR01BIGFzIG5vIGxvbmdlciBzdXBwb3J0ZWQuICBBZGQKCWRvY3VtZW50YXRpb24gZm9yIFJFR0lTVEVSX1RBUkdFVF9QUkFHTUFTLgoKCSogYy1sZXguYzogSW5jbHVkZSBjcHBsaWIuaCBiZWZvcmUgYy1wcmFnbWEuaC4gIERlZmluZSBhCglkZWZhdWx0LXByYWdtYSBjYWxsYmFjayB0byBpbXBsZW1lbnQgLVd1bmtub3duLXByYWdtYXMgaWYKCVVTRV9DUFBMSUIuCgkqIGMtcGFyc2UuaW46IE1vdmUgYWxsIGluY2x1ZGVzIHRvIHRvcCBvZiBmaWxlLgoJKiBjLXByYWdtYS5jOiBJbmNsdWRlIGNwcGxpYi5oIGJlZm9yZSBjLXByYWdtYS5oLiAgSW5jbHVkZQoJdG1fcC5oLgoJKGRpc3BhdGNoX3ByYWdtYSk6IFB1dCB0aGUgbmFtZXNwYWNlIGluIHRoZSAtV3Vua25vd24tcHJhZ21hcwoJd2FybmluZy4KCShpbml0X3ByYWdtYSk6IElmIFJFR0lTVEVSX1RBUkdFVF9QUkFHTUFTIGlzIGRlZmluZWQsIGNhbGwgaXQuCgoJKiBhcm0uaCwgYXJtLXByb3Rvcy5oLCBhcm0uYywKCSAgYzR4LmgsIGM0eC1wcm90b3MuaCwgYzR4LmMsCgkgIGg4MzAwLmgsIGg4MzAwLXByb3Rvcy5oLCBoODMwMC5jLAoJICBpMzcwLmgsIGkzNzAtcHJvdG9zLmgsIGkzNzAuYywKCSAgaTk2MC5oLCBpOTYwLXByb3Rvcy5oLCBpOTYwLmMsCgkgIHNoLmgsIHNoLXByb3Rvcy5oLCBzaC5jLAoJICB2ODUwLmgsIHY4NTAtcHJvdG9zLmgsIHY4NTAuYzogQ29udmVydCBIQU5ETEVfUFJBR01BLWJhc2VkCglwcmFnbWF0YSBzY2hlbWUgdG8gdXNlIFJFR0lTVEVSX1RBUkdFVF9QUkFHTUFTIGluc3RlYWQuCgoJKiBkMzB2Lmg6IERvbid0IG1lbnRpb24gSEFORExFX1BSQUdNQSBpbiBjb21tZW50LiAgQWRkCgltdWx0aXBsZSBpbmNsdWRlIGd1YXJkLgoJKiBpMzcwLm1kICh1bnR5cGVkX2NhbGwpOiBVc2UgR0VOX0NBTEwuCgkodW1vZHNpMyk6IFJlbW92ZSB1bnVzZWQgdmFyaWFibGUuCgkqIHNoL2VsZi5oOiBEb24ndCB1bmRlZiBIQU5ETEVfU1lTVl9QUkFHTUEuCgkqIHY4NTAuYyAob3V0cHV0X21vdmVfc2luZ2xlLCBvdXRwdXRfbW92ZV9kb3VibGUpOiBDb25zdGlmeQoJcmV0dXJuIHZhbHVlLgoJKHByaW50X29wZXJhbmQpOiBDb25zdGlmeSBhIGNoYXIgKi4KCSogdjg1MC5oIChzdHJ1Y3Qgc21hbGxfbWVtb3J5X2luZm8pOiBDb25zdGlmeSBuYW1lIG1lbWJlci4KCjIwMDAtMDktMDcgIEthenUgSGlyYXRhICA8a2F6dUBoeGkuY29tPgoKCSogY29uZmlnL2g4MzAwLmg6IEZpeCBjb21tZW50IHR5cG9zLgoJKiBjb25maWcvaDgzMDAvaDgzMDAubWQ6IExpa2V3aXNlLgoJKiBjb25maWcvaDgzMDAvbGliMWZ1bmNzLmFzbTogTGlrZXdpc2UuCgpUaHUgMDctU2VwLTIwMDAgMjE6Mjk6MDAgQlNUICBOZWlsIEJvb3RoICA8TmVpbEJAZWFydGhsaW5nLm5ldD4KCgkqIE1ha2VmaWxlLmluOiBSZW1vdmUgcmVmZXJlbmNlcyB0byBjcHB1bHAue2Msb30uCgkqIGNwcGluaXQuYyAoaW5pdGlhbGl6ZV9idWlsdGlucywgY3BwX3N0YXJ0X3JlYWQsCgljcHBfaGFuZGxlX29wdGlvbik6IFVwZGF0ZSB0byB1c2UgY3BwX29wdGlvbnMgc3RydWN0dXJlLgoJKiBjcHB1bHAuYzogUmVtb3ZlLgoKMjAwMC0wOS0wNyAgSm9zZXBoIFMuIE15ZXJzICA8anNtMjhAY2FtLmFjLnVrPgoKCSogYy1jb21tb24uYyAodGltZV9jaGFyX3RhYmxlKTogQWxsb3cgJSNiIGFuZCAlI2guCgoyMDAwLTA5LTA3IEhlcm1hbiBBLkouIHRlbiBCcnVnZ2UgPEhhai5UZW4uQnJ1Z2dlQG5ldC5IQ0Mubmw+CgoJKiByZW9yZy5jIChmaW5kX2VuZF9sYWJlbCk6IElmIHRoZSBiYXNpYyBibG9jayByZW9yZGVyIHBhc3MgbW92ZXMgdGhlCglyZXR1cm4gaW5zbiB0byBzb21lIG90aGVyIHBsYWNlIHRyeSB0byBsb2NhdGUgaXQgYWdhaW4gYW5kIHB1dCBvdXIKCWVuZF9vZl9mdW5jdGlvbl9sYWJlbCB0aGVyZS4KCSogcmVvcmcuYyAocmVsYXhfZGVsYXlfc2xvdHMpOiBDaGVjayBpZiBmaW5kX2VuZF9sYWJlbCBjcmVhdGVkIGEKCW5ldyBsYWJlbCB0aGF0IGludmFsaWRhdGVzIHRoZSBjdXJyZW50IG9wdGltYXphdGlvbi4KCjIwMDAtMDktMDcgIENhdGhlcmluZSBNb29yZSAgPGNsbUByZWRoYXQuY29tPgoKCSogdW5yb2xsLmMgKHVucm9sbF9sb29wKTogQ2hlY2sgZm9yIHVuY29uZGl0aW9uYWwganVtcHMKCXRvIGxvb3AgY29udGludWF0aW9uLiAgRGVsZXRlIGlmIG5faXRlcmF0aW9ucyBpcyAxLgoJKHVqdW1wX3RvX2xvb3BfY29udCk6IE5ldyByb3V0aW5lLgoKMjAwMC0wOS0wNyAgQmVybmQgU2NobWlkdCAgPGJlcm5kc0ByZWRoYXQuY28udWs+CgoJKiBydGwuYyAoY2xhc3NfbmFycm93ZXN0X21vZGUpOiBBZGQgZW50cmllcyBmb3IgTU9ERV9WRUNUT1JfSU5UIGFuZAoJTU9ERV9WRUNUT1JfRkxPQVQuCgkqIHJlbG9hZC5jIChyZWdub19jbG9iYmVyZWRfcCk6IEFjY2VwdCBuZXcgYXJnLCBNT0RFLCBhbmQgdXNlIGl0Cgl0byBoYW5kbGUgbXVsdGl3b3JkIG1vZGVzIGNvcnJlY3RseS4gIEFsbCBjYWxsZXJzIGFuZCB0aGUgZGVjbGFyYXRpb24KCWNoYW5nZWQuCgoyMDAwLTA5LTA2ICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogYy1jb21tb24uaCAocHJlcF9zdG10KTogRGVjbGFyZS4KCShsYW5nX2V4cGFuZF9zdG10KTogTGlrZXdpc2UuCgkqIGMtZGVjbC5jIChsYW5nX2V4cGFuZF9zdG10KTogUmVtb3ZlLgoJKiBjLXNlbWFudGljcy5jIChsYW5nX2V4cGFuZF9zdG10KTogRGVmaW5lLgoJKHByZXBfc3RtdCk6IE5ldyBmdW5jdGlvbi4KCShleHBhbmRfc3RtdCk6IEhhbmRsZSBjb21tb24gc3RhdGVtZW50IHR5cGVzIGhlcmUuCgoyMDAwLTA5LTA3ICBOaWliZSBZdXRha2EgIDxnbmlpYmVAbTE3bi5vcmc+LCBLYXogS29qaW1hICA8a2tvamltYUByci5paWo0dS5vci5qcD4sIEFsZXhhbmRyZSBPbGl2YSAgPGFvbGl2YUByZWRoYXQuY29tPgoKCSogY29uZmlndXJlLmluIChzaC0qLWxpbnV4Kik6IEFkZGVkLgoJKiBjb25maWd1cmU6IFJlYnVpbHQuCgkqIGNvbmZpZy9zaC90LWxpbnV4OiBOZXcgZmlsZS4KCSogY29uZmlnL3NoL3NoLmggKFVTRVJNT0RFX0JJVCk6IERlZmluZS4KCShUQVJHRVRfVVNFUk1PREUpOiBMaWtld2lzZS4KCShUQVJHRVRfU1dJVENIRVMpOiBOZXcgc3dpdGNoZXMgZm9yIHRoZSBiaXRzIGFib3ZlLgoJKElOSVRJQUxJWkVfVFJBTVBPTElORSk6IENhbGwgX19pY19pbnZhbGlkYXRlIGluIFVTRVJNT0RFLgoJKiBjb25maWcvc2gvbGludXguaDogTmV3IGZpbGUuCgkqIGNvbmZpZy9zaC9saWIxZnVuY3MuYXNtIChHTE9CQUwpOiBEb24ndCBwcmVmaXggc3ltYm9scyB3aXRoCgl1bmRlcnNjb3JlIG9uIGxpbnV4LgoJKExfc2RpdnNpMywgTF91ZGl2c2kzKTogRGVmaW5lIGZvciBsaW51eC4KCShMX2ljX2ludmFsaWRhdGUpOiBEZWZpbmUuCgkqIGludm9rZS50ZXhpIChTSCBPcHRpb25zKTogRG9jdW1lbnQgLW11c2VybW9kZS4KCjIwMDAtMDktMDcgIEFsZXhhbmRyZSBPbGl2YSAgPGFvbGl2YUByZWRoYXQuY29tPgoKCSogY29uZmlnL3NoL3NoLmggKE9WRVJSSURFX09QVElPTlMpOiBEb24ndCBkaXNhYmxlIGZ1bmN0aW9uCglDU0UgdW5sZXNzIGdlbmVyYXRpbmcgUElDLgoKCSogY29uZmlnL3NoL3NoLm1kIChzeW1QTFRfbGFiZWwycmVnKTogRm9yY2UgdGhlIGluaXRpYWxpemF0aW9uIG9mCgl0aGUgUElDIHJlZ2lzdGVyLgoKMjAwMC0wOS0wNiAgSC5KLiBMdSAgKGhqbEBnbnUub3JnKQoKCSogTWFrZWZpbGUuaW4gKGNsZWFuX3MxKTogRGVwZW5kIG9uIHN0YWdlX2IuCgkoY2xlYW5fczIpOiBEZXBlbmQgb24gc3RhZ2VfZC4gRG9uJ3QgcmVtb3ZlICQoVk9MX0ZJTEVTKSBpbgoJc3RhZ2UyLiBUaGV5IGFyZSB1c2VkIGZvciAibWFrZSBjb21wYXJlIi4KCjIwMDAtMDktMDYgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJTW92ZSBzdGF0ZW1lbnQtdHJlZSBmYWNpbGl0aWVzIGZyb20gQysrIHRvIEMgZnJvbnQtZW5kLgoJKiBjLWNvbW1vbi5oIChjX3RyZWVfaW5kZXgpOiBBZGQgQ1RJX1ZPSURfWkVSTy4KCSh2b2lkX3plcm9fbm9kZSk6IE5ldyBtYWNyby4KCShzdHJ1Y3Qgc3RtdF90cmVlX3MpOiBOZXcgdHlwZS4KCShzdG10X3RyZWUpOiBOZXcgdHlwZWRlZi4KCShzdHJ1Y3QgbGFuZ3VhZ2VfZnVuY3Rpb24pOiBOZXcgdHlwZS4KCShsYXN0X3RyZWUpOiBOZXcgbWFjcm8uCgkobGFzdF9leHByX3R5cGUpOiBMaWtld2lzZS4KCSh3YWxrX3RyZWVfZm4pOiBOZXcgdHlwZWRlZi4KCShjdXJyZW50X3N0bXRfdHJlZSk6IE5ldyBmdW5jdGlvbi4KCShiZWdpbl9zdG10X3RyZWUpOiBMaWtld2lzZS4KCShhZGRfc3RtdCk6IExpa2V3aXNlLgoJKGZpbmlzaF9zdG10X3RyZWUpOiBMaWtld2lzZS4KCShzdGF0ZW1lbnRfY29kZV9wKTogTGlrZXdpc2UuCgkobGFuZ19zdGF0ZW1lbnRfY29kZV9wKTogTmV3IHZhcmlhYmxlLgoJKHdhbGtfc3RtdF90cmVlKTogTmV3IGZ1bmN0aW9uLgoJKFNUTVRfSVNfRlVMTF9FWFBSX1ApOiBOZXcgbWFjcm8uCgkqIGMtY29tbW9uLmMgKGxhbmdfc3RhdGVtZW50X2NvZGVfcCk6IE5ldyB2YXJpYWJsZS4KCShjX2NvbW1vbl9ub2Rlc19hbmRfYnVpbHRpbnMpOiBJbml0aWFsaXplIHZvaWRfemVyb19ub2RlLgoJKHN0YXRlbWVudF9jb2RlX3ApOiBOZXcgZnVuY3Rpb24uCgkod2Fsa19zdG10X3RyZWUpOiBMaWtld2lzZS4KCSogYy1kZWNsLmMgKGxhbmd1YWdlX2Z1bmN0aW9uKTogUmVuYW1lIHRvIC4uLgoJKGNfbGFuZ3VhZ2VfZnVuY3Rpb24pOiAuLi4gdGhpcy4gIEluY2x1ZGUgbGFuZ3VhZ2VfZnVuY3Rpb24uCgkocHVzaF9jX2Z1bmN0aW9uX2NvbnRleHQpOiBBZGp1c3QgYWNjb3JkaW5nbHkuCgkocG9wX2NfZnVuY3Rpb25fY29udGV4dCk6IExpa2V3aXNlLgoJKG1hcmtfY19mdW5jdGlvbl9jb250ZXh0KTogTGlrZXdpc2UuCgkoY3VycmVudF9zdG10X3RyZWUpOiBEZWZpbmUuCgkqIGMtc2VtYW50aWNzLmMgKGJlZ2luX3N0bXRfdHJlZSk6IE5ldyBmdW5jdGlvbi4KCShhZGRfc3RtdCk6IExpa2V3aXNlLgoJKHBydW5lX3VudXNlZF9kZWNscyk6IExpa2V3aXNlLgoJKGZpbmlzaF9zdG10X3RyZWUpOiBMaWtld2lzZS4KCjIwMDAtMDktMDYgSGVybWFuIEEuSi4gdGVuIEJydWdnZSA8SGFqLlRlbi5CcnVnZ2VAbmV0LkhDQy5ubD4KCgkqIGZsb3cuYyAoaW5zbl9kZWFkX3ApOiBEZXRlY3QgZGVhZCBtZW1vcnkgc3RvcmVzIHdpdGggYXV0byBpbmNyZW1lbnRzLgoKMjAwMC0wOS0wNiAgS2F6dSBIaXJhdGEgIDxrYXp1QGh4aS5jb20+CgoJKiBjYWxscy5jOiBGaXggZm9ybWF0dGluZy4KCjIwMDAtMDktMDYgIEdyYWhhbSBTdG90dCAgPGdyYWhhbXNAY3lnbnVzLmNvLnVrPgoKCSogY29uZmlnL2kzODYvaTM4Ni5oIChBRERSRVNTX0NPU1QpOiBGaXggdHlwby4KCjIwMDAtMDktMDYgIFphY2sgV2VpbmJlcmcgIDx6YWNrQHdvbGVyeS5jdW1iLm9yZz4KCglJbnRlZ3JhdGVkIHByZXByb2Nlc3Nvci4KCgkqIE1ha2VmaWxlLmluOiBSZW1vdmUgYWxsIHJlZmVyZW5jZXMgdG8gYy1wYXJzZS5ncGVyZiwKCWMtZ3BlcmYuaCwgYW5kIGMtcGFyc2UuaC4gIFJlbW92ZSAtZCBmcm9tIHlhY2MgY29tbWFuZCBsaW5lCglnZW5lcmF0aW5nIGMtcGFyc2UuYy4gIFVwZGF0ZSBkZXBlbmRlbmNpZXMuCgkqIGMtcGFyc2UuZ3BlcmYsIGMtZ3BlcmYuaDogRGVsZXRlLgoKCSogYy1jb21tb24uYzogRG9uJ3QgZGVmaW5lIHBhcnNlX29wdGlvbnMsIGNwcF90b2tlbiwgeXlfY3VyLAoJeXlfbGltLCBvciB5eV9nZXRfdG9rZW4uICBEb24ndCBkZWZpbmUgZ2V0X2RpcmVjdGl2ZV9saW5lIGlmCglVU0VfQ1BQTElCLgoJKiBjLWNvbW1vbi5oOiBBZGQgbXVsdGlwbGUgaW5jbHVkZSBndWFyZC4gIERlZmluZSBSSUQgdmFsdWVzCglmb3IgZXZlcnkga2V5d29yZCBpbiBDLCBDKyssIGFuZCBPYmplY3RpdmUtQy4gIFB1dCBhbGwgdGhlCgltb2RpZmllcnMgZmlyc3QuCgkoc3RydWN0IGNfZmlsZWluZm8sIGdldF9maWxlaW5mbywgZHVtcF90aW1lX3N0YXRpc3RpY3MpOiBOZXcuCgkqIGMtZGVjbC5jIChjX2RlY29kZV9vcHRpb24pOiBIYW5kbGUgLWxhbmctb2JqYyBoZXJlLgoJKHByaW50X2xhbmdfaWRlbnRpZmllcik6IEhhbmRsZSBDX0lTX1JFU0VSVkVEX1dPUkQgY2FzZS4KCShncm9rZGVjbGFyYXRvcik6IEFkanVzdCBmb3IgbmV3IFJJRCBzY2hlbWUuCgkoZXh0cmFjdF9pbnRlcmZhY2VfaW5mbyk6IE5ldyBzdHViLgoJKiBjLWxhbmcuYzogRG9uJ3QgZGVjbGFyZSB5eV9jdXIgb3IgcGFyc2Vfb3B0aW9ucy4KCShsYW5nX2luaXRfb3B0aW9ucyk6IENhbGwgY3BwX2luaXQuICBEb24ndCBjYWxsCgljcHBfb3B0aW9uc19pbml0LgoJKGxhbmdfaW5pdCk6IERvbid0IGNhbGwgY2hlY2tfbmV3bGluZSBpZiBVU0VfQ1BQTElCLgoKCSogYy1sZXguYzogRG9uJ3QgaW5jbHVkZSBjLXBhcnNlLmguICBEbyBpbmNsdWRlIHRpbWV2YXIuaC4KCUVsaWRlIGxvdHMgb2YgdW5uZWNlc3NhcnkgY29kZSBpZiBVU0VfQ1BQTElCLiAgRGVsZXRlIGNvZGUKCXJlbmRlcmVkIHVubmVjZXNzYXJ5IGJ5IG5ldyBhcmNoaXRlY3R1cmUuICBNb3ZlIHJvdXRpbmVzIG5vdAoJc2hhcmVkIHdpdGggQysrIHRvIGMtcGFyc2UuaW4uICBNYWludGFpbiBhIGxvY2FsIGlkZWEgb2YgdGhlCglsaW5lIG51bWJlci4gICAgSGFuZGxlIEMrKyBhcyB3ZWxsIGFzIEMuCglbVVNFX0NQUExJQl06IERlY2xhcmUgYW5kIHJlZ2lzdGVyIGNhbGxiYWNrcyBmb3IgI2lkZW50IGFuZAoJZm9yIGVudGVyaW5nL2xlYXZpbmcgZmlsZXMuCgkoaW5pdF9jX2xleCwgY19sZXgpOiBBcmUgbm93IHRoZSBlbnRyeSBwb2ludHMgdG8gdGhpcyBmaWxlLgoJKGNoZWNrX25ld2xpbmUpOiBCcmVhayBvdXQgZGlyZWN0aXZlIGhhbmRsaW5nIHRvCglwcm9jZXNzX2RpcmVjdGl2ZS4KCShyZWFkX3VjcywgaXNfZXh0ZW5kZWRfY2hhciwgdXRmOF9leHRlbmRfdG9rZW4pOiBNb3ZlZCBoZXJlCglmcm9tIEMrKyBmcm9udCBlbmQuCgkocmVhZGVzY2FwZSwgcGFyc2VfZmxvYXQpOiBPdmVyaGF1bC4KCShsZXhfbnVtYmVyLCBsZXhfc3RyaW5nLCBsZXhfY2hhcmNvbnN0KTogQnJlYWsgb3V0IG9mIGNfbGV4CgkobidlZSB5eWxleCkuCgkoZ2V0X2ZpbGVpbmZvLCB1cGRhdGVfaGVhZGVyX3RpbWVzLCBkdW1wX29uZV9oZWFkZXIsCglkdW1wX3RpbWVfc3RhdGlzdGljcyk6IE5ldyBhbmQvb3IgbW92ZWQgaGVyZSBmcm9tIEMrKy4KCVN1cHBvcnQgcGVyLWZpbGUgZGF0YSBuZWVkZWQgYnkgQysrIGFuZCBwZXItaGVhZGVyIHRpbWluZwoJc3RhdGlzdGljcyAoQysrIG9ubHksIGF0IHRoZSBtb21lbnQpLgoJKiBjLWxleC5oOiBVcGRhdGUgcHJvdG90eXBlcy4gIEFkZCBtdWx0aXBsZSBpbmNsdWRlIGd1YXJkLgoJKiBjLXRyZWUuaCAoc3RydWN0IGxhbmdfaWRlbnRpZmllcik6IEFkZCByaWRfY29kZSBmaWVsZC4KCShDX0lTX1JFU0VSVkVEX1dPUkQsIENfUklEX0NPREUpOiBOZXcuCgoJKiBjLXBhcnNlLmluOiBJbmNsdWRlIGMtcHJhZ21hLmguIFJlbW92ZSB1bm5lY2VzYXJ5IGNhbGxzIHRvCglyZWluaXRfcGFyc2VfZm9yX2Z1bmN0aW9uIGFuZC9vciBwb3NpdGlvbl9hZnRlcl93aGl0ZV9zcGFjZS4KCShzYXZlX2ZpbGVuYW1lLCBzYXZlX2xpbmVubyk6IExvb2sgYWhlYWQgYmVmb3JlIHNhdmluZy4KCShsYWJlbCAtPiBpZGVudGlmaWVyICc6Jyk6IFNhdmUgZmlsZSBhbmQgbGluZSBiZWZvcmUgc2hpZnRpbmcgJzonLgoJKHJlc2VydmVkd29yZHMpOiBObyBuZWVkIHRvIGNhbGwgZ2V0X2lkZW50aWZpZXIuCgkoaW5pdF9wYXJzZSwgZmluaXNoX3BhcnNlLCB5eWVycm9yLCB5eWxleCwgeXlwcmludCwKCW1ha2VfcG9pbnRlcl9kZWNsYXJhdG9yKTogQXJlIG5vdyBoZXJlIGZvciBDL09iakMuCgkocmlkX3RvX3l5KTogQ29udmVyc2lvbiB0YWJsZSBmcm9tIFJJRCBjb25zdGFudHMgdG8gWWFjYyBjb2Rlcy4KCgkqIGMtcHJhZ21hLmM6IFJld3JpdGUgcGFyc2luZyBsb2dpYyB0byBmaXQgd2l0aCBjcHBsaWIncwoJI3ByYWdtYSByZWdpc3RyeS4gIFByb3ZpZGUgZHVtbXkgaW1wbGVtZW50YXRpb24gb2YgdGhhdAoJaW50ZXJmYWNlIGlmICFVU0VfQ1BQTElCLgoJKiBjLXByYWdtYS5oOiBVcGRhdGUgdG8gbWF0Y2guCgoJKiBmbGFncy5oOiBBZGQgbXVsdGlwbGUgaW5jbHVkZSBndWFyZC4KCShmbGFnX2RldGFpbGVkX3N0YXRpc3RpY3MpOiBNb3ZlZCBoZXJlIGZyb20gQysrLgoJKiB0b3BsZXYuYzogRGVmaW5lIGZsYWdfZGV0YWlsZWRfc3RhdGlzdGljcy4KCgkqIGdjYy5jIChDIHNwZWNzKTogVXNlICUodHJhZF9jYXBhYmxlX2NwcCkgZm9yIC1FfC1NfC1NTSBjYXNlCgkjaWYgVVNFX0NQUExJQi4KCSogdGltZXZhci5kZWYgKFRWX0NQUCwgVFZfTEVYKTogTmV3LgoJKiB0aW1ldmFyLmg6IEFkZCBtdWx0aXBsZSBpbmNsdWRlIGd1YXJkLgoKCSogb2JqYy9sYW5nLXNwZWNzLmg6IFVzZSAlKHRyYWRfY2FwYWJsZV9jcHApIGZvciAtRXwtTXwtTU0gY2FzZQoJI2lmIFVTRV9DUFBMSUIuCgkqIG9iamMvb2JqYy1hY3QuYzogRG9uJ3QgbWVudGlvbiB5eV9jdXIgb3IgcGFyc2Vfb3B0aW9ucy4KCUluaXRpYWxpemUgY3BwbGliIHByb3Blcmx5LiAgRm9yY2UgbGluZW5vIHRvIDAgYWZ0ZXIgZmlyc3QKCWNhbGwgdG8gY2hlY2tfbmV3bGluZS4gIERvbid0IGhhbmRsZSAtbGFuZy1vYmpjIGhlcmUuCglNb3ZlIGZvcmdldF9wcm90b2NvbF9xdWFsaWZpZXJzIGFuZCByZW1lbWJlcl9wcm90b2NvbF9xdWFsaWZpZXJzIGhlcmUuCgoyMDAwLTA5LTA2ICBEYXZpZCBFZGVsc29obiAgPGVkZWxzb2huQGdudS5vcmc+CgoJKiByczYwMDAubWQ6IENvcnJlY3QgZnVuY3Rpb24gdW5pdCBkZWZpbml0aW9ucyBmb3IgY3JfbG9naWNhbCBhbmQKCW10am1wci4KCShzQ09ORCk6IEFkZGl0aW9uYWxseSBmYWlsIGZvciBzZ3QsIHNsdCwgc2dlLCBzbGUgaWYgIVRBUkdFVF9QT1dFUgoJYW5kIHVzZSBwb3J0YWJsZSBtZXRob2QgZm9yID49MCBhbmQgZmxvYXRpbmcgcG9pbnQgPj0uICBSZW1vdmUKCWFzc29jaWF0ZWQgbWF0Y2hlcnMuCgoyMDAwLTA5LTA2ICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogZXh0ZW5kLnRleGk6IE1hcmsgbmFtZWQgcmV0dXJuIHZhbHVlIGV4dGVuc2lvbiBhcyBkZXByZWNhdGVkLgoKMjAwMC0wOS0wNiAgR2VvZmYgS2VhdGluZyAgPGdlb2Zma0BjeWdudXMuY29tPgoKCSogY29uZmlnL3JzNjAwMC9yczYwMDAuYyAocnM2MDAwX3JldmVyc2VfY29uZGl0aW9uKTogUmV0dXJuCgl0aGUgcmVzdWx0LgoKMjAwMC0wOS0wNiAgR2FicmllbCBEb3MgUmVpcyAgPGdkckBjb2Rlc291cmNlcnkuY29tPgoKCSogdG9wbGV2LmMgKGRpc3BsYXlfaGVscCk6IEZpeCB0aGlua28gaW4gZG9jdW1lbnRhdGlvbi4KCgkqIGRpYWdub3N0aWMuaCAob3V0cHV0X2J1ZmZlcjo6aW5kZW50X3NraXApOiBOZXcgZmllbGRzLgoJKG91dHB1dF9pbmRlbnRhdGlvbik6IE5ldyBtYWNyby4KCgkqIGRpYWdub3N0aWMuYyAob3V0cHV0X2luZGVudCk6IE5ldyBmdW5jdGlvbi4KCShvdXRwdXRfc2V0X3ByZWZpeCwgY2xlYXJfZGlhZ25vc3RpY19pbmZvKTogVXNlLgoJKG91dHB1dF9lbWl0X3ByZWZpeCk6IFByZWRpY3QgZnV0dXJlIGluZGVudGF0aW9uLgoKMjAwMC0wOS0wNiAgREogRGVsb3JpZSAgPGRqQHJlZGhhdC5jb20+CgoJKiBNYWtlZmlsZS5pbiAoc3RhZ2VfKik6IGFkZCBtb3JlIGRlcGVuZGVuY2llcyB0byBlbnN1cmUgcGFyYWxsZWwKCWJ1aWxkcyBidWlsZCBjb3JyZWN0bHkKCjIwMDAtMDktMDYgIE1hbmZyZWQgSG9sbHN0ZWluICA8bWFuZnJlZGhAcmVkaGF0LmNvbT4KCgkqIE1ha2VmaWxlLmluIChib290c3RyYXAtbGVhbik6IERlcGVuZCBvbiBib290c3RyYXAtbGVhbl9nLAoJbm90IGJvb3RzdHJhcC1sZWFuX2YuCgoyMDAwLTA5LTA2ICBBbmRyZWFzIFNjaHdhYiAgPHNjaHdhYkBzdXNlLmRlPgoKCSogbWtsaWJnY2MuaW46IEVtaXQgcnVsZSBmb3IgbGliZ2NjLXN0YWdlLXN0YXJ0LgoJKiBNYWtlZmlsZS5pbiAoc3RhZ2UxLXN0YXJ0LCBzdGFnZTItc3RhcnQsIHN0YWdlMy1zdGFydCwKCXN0YWdlNC1zdGFydCk6IERvbid0IGhhbmRsZSBsaWJnY2MgaGVyZSwgdXNlIGxpYmdjYy5tayBpbnN0ZWFkLgoKMjAwMC0wOS0wNiAgQmVybmQgU2NobWlkdCAgPGJlcm5kc0ByZWRoYXQuY28udWs+CgoJKiBsb2NhbC1hbGxvYy5jIChsb2NhbF9hbGxvYyk6IElnbm9yZSBDTEFTU19MSUtFTFlfU1BJTExFRC4KCSh1cGRhdGVfZXF1aXZfcmVncyk6IExpa2V3aXNlLCBleGNlcHQgZm9yIHRoZSBtbjEwMjAwIGtsdWRnZS4KCShjb21iaW5lX3JlZ3MpOiBMaWtld2lzZS4KCgkqIE1ha2VmaWxlLmluIChjc2Uubyk6IERlcGVuZCBvbiAkKEJBU0lDX0JMT0NLX0gpLgoJKiBjc2UuYzogSW5jbHVkZSAiYmFzaWMtYmxvY2suaCIuCgkoc3RydWN0IHRhYmxlX2VsdCk6IE5ldyBmaWVsZCBSRUdDT1NULgoJKENIRUFQX1JFRyk6IERlbGV0ZSBtYWNyby4KCShDT1NUKTogUmV0dXJuIDAgZm9yIFJFR3MuCgkoYXBwcm94X3JlZ19jb3N0XzEsIGFwcHJveF9yZWdfY29zdCwgcHJlZmVycmFibGUpOiBOZXcgZnVuY3Rpb25zLgoJKG5vdHJlZ19jb3N0KTogUmV0dXJuIDAgZm9yIGFwcHJvcHJpYXRlIFNVQlJFR3MuCgkoQ09TVFNfTl9JTlNOUyk6IFJldHVybiBOICogMi4KCShydHhfY29zdCk6IFJldHVybiAwIGZvciBSRUdzLCBhbmQgdXNlIGNvc3Qgb2YgbmVzdGVkIHJ0eCBmb3IgY2hlYXAKCVNVQlJFR3MuCgkoQ0hFQVBFUik6IFVzZSBuZXcgZnVuY3Rpb24gcHJlZmVycmFibGUuCgkoaW5zZXJ0KTogSW5pdGlhbGl6ZSBSRUdDT1NUIG1lbWJlci4KCShmaW5kX2Jlc3RfYWRkcik6IFVzZSBhcHByb3hfcmVnX2Nvc3QgZm9yIGVzdGltYXRpb24gb2YgcmVnaXN0ZXIKCXVzYWdlLgoJKGNzZV9pbnNuKTogTGlrZXdpc2UuCgkqIGxvb3AuYyAoaXZfYWRkX211bHRfY29zdCk6IE5ldyBmdW5jdGlvbi4KCShhZGRfY29zdCwgc2hpZnRfY29zdCwgbXVsdF9jb3N0KTogRGVsZXRlIHZhcmlhYmxlcy4KCShpbml0X2xvb3ApOiBEb24ndCBpbml0aWFsaXplIGFkZF9jb3N0OyByZWR1Y2UgY29weV9jb3N0IGJ5IGhhbGYuCgkoc3RyZW5ndGhfcmVkdWNlKTogVXNlIGl2X2FkZF9tdWx0X2Nvc3QgaW5zdGVhZCBvZiBmaXhlZCBhZGRfY29zdC4KCU1ha2UgY29kZSB0aGF0IGRldGVjdHMgYXV0b2luYyBvcHBvcnR1bml0aWVzIHNsaWdodGx5IGxlc3Mgb3B0aW1pc3RpYy4KCShzaW1wbGlmeV9naXZfZXhwcik6IElmIGV4cHJlc3Npb24gY29udGFpbnMgb3RoZXIgcmVnIHRoYXQgaXMgYWxzbyBhCglnaXYsIG9ubHkgaW5jcmVtZW50IGJlbmVmaXQgaWYgdGhpcyBpcyB0aGUgb25seSB1c2Ugb2YgdGhhdCByZWcuCgkoY29uc2VjX3NldHNfZ2l2KTogVGFrZSB0aGF0IGNoYW5nZSBpbnRvIGFjY291bnQuCgkoY29tYmluZV9naXZzKTogU2xpZ2h0bHkgbW9yZSB2ZXJib3NlIG91dHB1dC4KCgkqIGkzODYuaCAoUlRYX0NPU1RTKTogRm9yIE1VTFQsIHJldHVybiB0cnVlIGNvc3Qgb2YgbXVsdGlwbGljYXRpb24sCglub3QgdGhlIGNvc3Qgb2YgYW4gZXF1aXZhbGVudCBzaGlmdC4KCSogc2gtcHJvdG9zLmggKGFkZHN1YmNvc3RzKTogRGVjbGFyZS4KCSogc2guYyAoYWRkc3ViY29zdHMpOiBOZXcgZnVuY3Rpb24uCgkqIHNoLmggKENPTlNUX0NPU1RTKTogSWYgQ09OU1RfT0tfRk9SX0ksIHRoZW4gcmV0dXJuIDAuCgkoUlRYX0NPU1RTKTogVHdlYWsuICBVc2UgYWRkc3ViY29zdHMuCgkoQUREUkVTU19DT1NUKTogUmV0dXJuIGhpZ2hlciBjb3N0IGZvciByZWcrcmVnIGFkZHJlc3NpbmcuCgoyMDAwLTA5LTA2ICBHZW9mZiBLZWF0aW5nICA8Z2VvZmZrQGN5Z251cy5jb20+CgoJKiBjb25maWcvcnM2MDAwL3JzNjAwMC5jICh2YWxpZGF0ZV9jb25kaXRpb25fbW9kZSk6IE5ldyBmdW5jdGlvbi4KCShicmFuY2hfY29tcGFyaXNvbl9vcGVyYXRvcik6IENhbGwgdmFsaWRhdGVfY29uZGl0aW9uX21vZGUgdG8KCWFib3J0IHJhdGhlciB0aGFuIHJldHVybmluZyAwLgoJKGJyYW5jaF9wb3NpdGl2ZV9jb21wYXJpc29uX29wZXJhdG9yKTogTmV3IGZ1bmN0aW9uLgoJKHNjY19jb21wYXJpc29uX29wZXJhdG9yKTogQ2FsbCB2YWxpZGF0ZV9jb25kaXRpb25fbW9kZSB0byBhYm9ydAoJcmF0aGVyIHRoYW4gcmV0dXJuaW5nIDAuCgkoY2NyX2JpdCk6IENhbGwgdmFsaWRhdGVfY29uZGl0aW9uX21vZGUuICBVcGRhdGUgZm9yCgluZXcgYnJhbmNoIHNjaGVtZS4KCShwcmludF9vcGVyYW5kKTogRGVsZXRlICVDIG1vZGlmaWVyLiAgVXBkYXRlICVFIGNhc2UKCXRvIHVzZSBFUSBiaXQgbm90IFNPIGJpdC4KCShyczYwMDBfcmV2ZXJzZV9jb25kaXRpb24pOiBOZXcgZnVuY3Rpb24uCgkocnM2MDAwX2dlbmVyYXRlX2NvbXBhcmUpOiBOZXcgZnVuY3Rpb24uCgkocnM2MDAwX2VtaXRfc0NPTkQpOiBOZXcgZnVuY3Rpb24uCgkocnM2MDAwX2VtaXRfY2JyYW5jaCk6IE5ldyBmdW5jdGlvbi4KCShvdXRwdXRfY2JyYW5jaCk6IFRoZSBsZW5ndGggb2YgYSBsb25nIGJyYW5jaCBpbnNuIGlzCglub3cgb25seSA4IGJ5dGVzLiAgQWRkIHZhbGlkYXRlX2NvbmRpdGlvbl9tb2RlLiAgVXNlCglyczYwMDBfcmV2ZXJzZV9jb25kaXRpb24uICBSZW1vdmUgY3JvciBnZW5lcmF0aW9uLgoKCSogY29uZmlnL3JzNjAwMC9yczYwMDAuaDogVXBkYXRlIGNvbW1lbnRzLgoJKFBSRURJQ0FURV9DT0RFUyk6IEFkZCBuZXcgcHJlZGljYXRlLiAgVXBkYXRlIGNvZGVzIHVzZWQKCWJ5IGJyYW5jaF9jb21wYXJpc29uX29wZXJhdG9yIGFuZCBzY2NfY29tcGFyaXNvbl9vcGVyYXRvci4KCSogY29uZmlnL3JzNjAwMC9yczYwMDAtcHJvdG9zLmg6IEFkZCBwcm90b3R5cGVzIGZvcgoJbmV3IGV4dGVybmFsIGZ1bmN0aW9ucy4KCSogY29uZmlnL3JzNjAwMC9yczYwMDAubWQ6IEFkZCBuZXcgc2NoZWR1bGluZyBwYXJhbWV0ZXJzCglmb3IgY3JfbG9naWNhbCBpbnN0cnVjdGlvbnMuICBDaGFuZ2UgbGVuZ3RoIG9mIGJyYW5jaAoJaW5zdHJ1Y3Rpb25zLgoJKGJDT05EIHBhdHRlcm5zKTogQ2FsbCByczYwMDBfZW1pdF9jYnJhbmNoLgoJKHNDT05EIHBhdHRlcm5zKTogQ2FsbCByczYwMDBfZW1pdF9zQ09ORC4KCShicmFuY2ggcGF0dGVybnMpOiBDaGFuZ2UgbGVuZ3RocyB0byA0LgoJKGNyIGxvZ2ljYWwgcGF0dGVybnMpOiBOZXcuCgoyMDAwLTA5LTA2ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEBjeWdudXMuY29tPgoKCSogY29uZmlnL2kzODYvaTM4Ni5tZCAoY2FsbF9wb3ApOiBGaXggdGVzdCBmb3Igc2V0dGluZwoJY3VycmVudF9mdW5jdGlvbl91c2VzX3BpY19vZmZzZXRfdGFibGUuCgkoY2FsbCwgY2FsbF92YWx1ZV9wb3AsIGNhbGxfdmFsdWUpOiBMaWtld2lzZS4KCjIwMDAtMDktMDYgIFphY2sgV2VpbmJlcmcgIDx6YWNrQHdvbGVyeS5jdW1iLm9yZz4KCgkqIHRpbWV2YXIuYyAodGltZXZhcl9hZGQpOiBEZWxldGUuCgkodGltZXZhcl9nZXQpOiBBbHNvIGNvdW50IHRpbWUgc2luY2UgdGhlIHNlbGVjdGVkIHRpbWVyIHdhcwoJbGFzdCB1cGRhdGVkLiAgRG8gbm90IGV4YW1pbmUgdGhlIHRpbWV2YXIgc3RhY2sgaWYgdGhlCglzZWxlY3RlZCB0aW1lciBpcyBzdGFuZGFsb25lLgoKMjAwMC0wOS0wNSAgSi4gRGF2aWQgQW5nbGluICA8ZGF2ZUBoaWF1bHkxLmhpYS5ucmMuY2E+CgoJKiBndGhyLWRjZS5oIChfX2d0aHJlYWRfb2JqY19tdXRleF9kZWFsbG9jYXRlKTogRnJlZSBtdXRleC0+YmFja2VuZC4KCjIwMDAtMDktMDUgIEphc29uIE1lcnJpbGwgIDxqYXNvbkByZWRoYXQuY29tPgoKCSogYy1kZWNsLmMgKGZpbmlzaF9pbmNvbXBsZXRlX2RlY2wpOiBEb24ndCBjYWxsIGNvbXBsZXRlX2FycmF5X3R5cGUKCWZvciAnZXh0ZXJuJyBhcnJheXMuCgoyMDAwLTA5LTA1ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEBjeWdudXMuY29tPgoKCSogY29uZmlnL2lhNjQvbGliMWZ1bmMuYXNtIChfX2RpdnRmMyk6IFJlYnVuZGxlIGZvciBJdGFuaXVtLgoJRWxpbWluYXRlIGZpbmFsIGNvcHkgZnJvbSBub24tdHJhcHBpbmcgY2FzZS4KCShfX2RpdmRmMywgX19kaXZzZjMpOiBMaWtld2lzZS4KCjIwMDAtMDktMDUgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgoJKiBjb25maWcvaWE2NC9pYTY0Lm1kIChtdWxoaTMpOiBGaXggdHlwbyBsYXN0IGNoYW5nZS4KCSogY29uZmlnL2lhNjQvbGliMWZ1bmMuYXNtIChfX2RpdmRpMywgX191ZGl2ZGkzLCBfX3Vtb2RzaTMpOiBMaWtld2lzZS4KCjIwMDAtMDktMDMgIERvbm4gVGVycnkgIDxkb25uQGludGVyaXguY29tPiwgIExhdXJ5bmFzIEJpdmVpbmlzICA8bGF1cmFzQHNvZnRob21lLm5ldD4KCgkqIE1ha2VmaWxlLmluOiBSZXN0cnVjdHVyZSBib290c3RyYXAgc3RhZ2VzIHRvIGFsbG93IGNsZWFuCglyZXN0YXJ0IGFmdGVyIGZhaWx1cmUuCgoyMDAwLTA5LTA1ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEBjeWdudXMuY29tPgoKCSogY29uZmlnL2lhNjQubWQgKG1vdnNpIGFuZCBtb3ZkaSBwYXR0ZXJucyk6IEFsbG93IG1vdmVzIGZyb20KCTgtYml0IGNvbnN0YW50cyB0byBBUiByZWdpc3RlcnMuCgoyMDAwLTA5LTA1ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEBjeWdudXMuY29tPgoKCSogY29uZmlnL2lhNjQvaWE2NC5tZCAobXVsaGkzKTogTmV3LgoKMjAwMC0wOS0wNSAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAY3lnbnVzLmNvbT4KCgkqIGNvbmZpZy9pYTY0L2lhNjQuaCAoSU5JVF9UQVJHRVRfT1BUQUJTKTogUmVtb3ZlLgoJKiBjb25maWcvaWE2NC9saWIxZnVuY3MuYXNtIChfX2RpdmRpMyk6IFVwZGF0ZSBmcm9tIEludGVsIElBLTY0CglPcHRpbWl6YXRpb24gR3VpZGUsIG1pbmltdW0gbGF0ZW5jeSBhbHRlcm5hdGl2ZS4KCShfX21vZGRpMywgX191ZGl2ZGkzLCBfX3Vtb2RkaTMpOiBMaWtld2lzZS4KCShfX2RpdnNpMywgX19tb2RzaTMsIF9fdWRpdnNpMywgX191bW9kc2kzKTogTGlrZXdpc2UuCgoyMDAwLTA5LTA1ICBCcnVjZSBLb3JiICA8YmtvcmJAZ251Lm9yZz4KCgkqIGZpeGluYy9maXhpbmNsLmMgKGxvYWRfZmlsZSk6IGFsd2F5cyByZWFkIGhlYWRlciBmaWxlcwoJd2l0aCBzaXplcyB0aGF0IGFyZSBhIG11bHRpcGxlIG9mIHRoZSBwYWdlIHNpemUuCgkmIHVzZSBsaWJpYmVydHkncyBnZXRwYWdlc2l6ZSBmb3IgZGV0ZXJtaW5pbmcgdGhhdC4KCjIwMDAtMDktMDUgIEFsZXhhbmRyZSBPbGl2YSAgPGFvbGl2YUByZWRoYXQuY29tPgoKCSogZ2NzZS5jIChoYXNoX3N0cmluZ18xKTogQWRkIHByb3RvdHlwZS4KCSogY3NlLmMgKGNhbm9uX2hhc2hfc3RyaW5nKTogTGlrZXdpc2UuCgoyMDAwLTA5LTA0ICBDcmFpZyBOZXdlbGwgIDxDcmFpZ05AaWVlZS5vcmc+CgoJKiBnY2MuYzogVW5kZWZpbmUgIl9fV0NIQVJfVFlQRV9fIiBiZWZvcmUgcmVkZWZpbmluZyBpdC4KCjIwMDAtMDktMDQgIEFuZHJlYXMgU2Nod2FiICA8c2Nod2FiQHN1c2UuZGU+CgoJKiBNYWtlZmlsZS5pbiAoU1RBR0VTVFVGRik6IFJlbW92ZSBsaWJnY2MuCgkoc3RhZ2UxLXN0YXJ0LCBzdGFnZTItc3RhcnQsIHN0YWdlMy1zdGFydCk6IENvcHkgdGhlIGNvbnRlbnRzIG9mCgl0aGUgbGliZ2NjIGRpcmVjdG9yeSBleHBsaWNpdGx5LgoJKG1vc3RseWNsZWFuKTogQ2xlYW4gbGliZ2NjLgoKMjAwMC0wOS0wNCAgQW5kcmV3IEhhbGV5ICA8YXBoQHJlZGhhdC5jb20+CgoJKiBkd2FyZjJvdXQuYzogKHN0YWNrX2FkanVzdF9vZmZzZXQpOiBOZXcgcHJvdG90eXBlLgoKV2VkIEphbiAgMSAwMDoyMzo1OSBNRVQgMTk5NyAgSmFuIEh1Ymlja2EgIDxqaEBzdXNlLmN6PgoKCSogY29tYmluZS5jIChtYWtlX2V4dHJhY3Rpb24pOiBGaXggcnR4X2Nvc3QgY29tcGFyaXNvbiB0bwoJbWF0Y2ggdGhlIGNvbW1lbnQuCgpXZWQgSmFuICAxIDAwOjE3OjMyIE1FVCAxOTk3ICBKYW4gSHViaWNrYSAgPGpoQHN1c2UuY3o+CgoJKiBpMzg2Lm1kIChwdXNoc2kyLCBwdXNoaGkyLCBwb3BoaTIsIHN3YXBzZiwgc3dhcGRmLAoJdW11bHNpM19oaWdocGFydCwgc211bHNpM19oaWdocGFydCwgdGVzdHFpX2Njbm9fMSwgeG9ycWlfZXh0XzEpOgoJQWRkICcqJyB0byBpbnNuIHBhdHRlcm4gbmFtZS4KCjIwMDAtMDktMDQgIEpha3ViIEplbGluZWsgIDxqYWt1YkByZWRoYXQuY29tPgoKCSogY3BwbGV4LmMgKE9OX1JFU1RfQVJHKTogQ2hlY2sgVkFSX0FSR1MgZmxhZyBvZiBjdXJyZW50IGNvbnRleHQsCgl1c2UgcG9zbiAtIDEgdG8gaW5kZXggaW50byB0b2tlbnMgYXJyYXkuCgkobWF5YmVfcGFzdGVfd2l0aF9uZXh0KTogQWRqdXN0IGNhbGxlci4KCjIwMDAtMDktMDMgIEdlb2ZmIEtlYXRpbmcgIDxnZW9mZmtAY3lnbnVzLmNvbT4KCgkqIGludm9rZS50ZXhpOiBEb2N1bWVudCB0aGUgLW12eHdvcmtzIG9wdGlvbiBmb3IgcnM2MDAwIEVMRi4KCgkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLmg6IFVwZGF0ZSB2YXJpb3VzIGNvbW1lbnRzIGFib3V0IFhFUl9SRUdOTy4KCShSRUdOT19SRUdfQ0xBU1MpOiBVc2Ugc3ltYm9saWMgcmVnaXN0ZXIKCW5hbWVzLgoKMjAwMC0wOS0wMyAgUmljaGFyZCBFYXJuc2hhdyAgPHJlYXJuc2hhQGFybS5jb20+CgoJKiBhcm0uYyAoZmluYWxfcHJlc2Nhbl9pbnNuKTogSWYgdGhlIGZvcm0gb2YgYSBqdW1wIGluc24gaXNuJ3QKCXJlY29nbml6ZWQsIGRvbid0IHRyeSB0byBjb25kaXRpb25hbGx5IGV4ZWN1dGUgaXQuCgpTdW4gU2VwICAzIDEzOjEwOjU2IDIwMDAgIERlbmlzIENoZXJ0eWtvdiAgPGRlbmlzY0BvdmVydGEucnU+CgoJKiBjb25maWcvYXZyL2F2ci5tZCAoIip0YWJsZWp1bXBfbGliIik6IE5ldyBwYXR0ZXJuLgoJKGNhbGxfdmFsdWVfaW5zbik6IFJpZ2h0IGxlbmd0aCBjbGFjdWxhdGlvbi4KCShjYWxsX2luc24pOiBMaWtld2lzZS4KCjIwMDAtMDktMDIgIE1hcmVrIE1pY2hhbGtpZXdpY3ogIDxtYXJla21AbGludXgub3JnLnBsPgoKCSogY29uZmlnL2F2ci9hdnItcHJvdG9zLmgsIGNvbmZpZy9hdnIvYXZyLmMgKHVuaXF1ZV9zZWN0aW9uLAoJZ2FzX291dHB1dF9saW1pdGVkX3N0cmluZywgZ2FzX291dHB1dF9hc2NpaSwgb3V0cHV0X21vdnFpLAoJb3V0cHV0X21vdmhpLCBvdXRfbW92cWlfcl9tciwgb3V0X21vdnFpX21yX3IsIG91dF9tb3ZoaV9yX21yLAoJb3V0X21vdmhpX21yX3IsIG91dF9tb3ZzaV9yX21yLCBvdXRfbW92c2lfbXJfciwgb3V0cHV0X21vdnNpc2YsCglvdXRfdHN0c2ksIG91dF90c3RoaSwgcmV0X2NvbmRfYnJhbmNoLCBhc2hscWkzX291dCwgYXNobGhpM19vdXQsCglhc2hsc2kzX291dCwgYXNocnFpM19vdXQsIGFzaHJoaTNfb3V0LCBhc2hyc2kzX291dCwgbHNocnFpM19vdXQsCglsc2hyaGkzX291dCwgbHNocnNpM19vdXQsIG91dHB1dF9yZWxvYWRfaW5oaSwgb3V0cHV0X3JlbG9hZF9pbnNpc2YsCglvdXRfc2hpZnRfd2l0aF9jbnQsIHB0cnJlZ190b19zdHIsIGNvbmRfc3RyaW5nLCBlbmNvZGVfc2VjdGlvbl9pbmZvKToKCUFkZCAiY29uc3QiIGFzIG5lZWRlZCB0byByZW1vdmUgd2FybmluZ3MuCgoJKiBjb25maWcvYXZyL2F2ci5jIChhdnJfb3ZlcnJpZGVfb3B0aW9ucywgYXZyX2luaXRfb25jZSwKCWZ1bmN0aW9uX3Byb2xvZ3VlLCBmdW5jdGlvbl9lcGlsb2d1ZSwgZnJhbWVfcG9pbnRlcl9yZXF1aXJlZF9wLAoJY2xhc3NfbGlrZWx5X3NwaWxsZWRfcCwgb3JkZXJfcmVnc19mb3JfbG9jYWxfYWxsb2MsCglhdnJfYWRkcmVzc19jb3N0LCBhdnJfcmV0X3JlZ2lzdGVyKTogVXNlIEsmUiBzdHlsZSBhcmd1bWVudHMuCgkoaW5pdGlhbF9lbGltaW5hdGlvbl9vZmZzZXQsIGdhc19vdXRwdXRfbGltaXRlZF9zdHJpbmcpOgoJUmVtb3ZlIEFUVFJJQlVURV9VTlVTRUQgZnJvbSB0aGUgdXNlZCBhcmd1bWVudHMuCgkob3V0cHV0X21vdiosIG91dF9tb3YqX3JfbXIsIG91dF9tb3YqX21yX3IsIG91dHB1dF9yZWxvYWRfaW5zaXNmKToKCVVzZSBsb2NhbCB2YXJpYWJsZXMgc3JjLCBkZXN0LCBiYXNlIHRvIGFjY2VzcyBvcGVyYW5kc1tdLgoJUmVuYW1lIHJlZ19kZXN0IHRvIHJlZ19zcmMgaWYgdGhhdCdzIHdoYXQgaXQgaXMuCgkob3V0cHV0X21vdmhpLCBvdXRwdXRfbW92c2lzZik6IE9wdGltaXplIGxvYWRpbmcgOC1iaXQgaW1tZWRpYXRlCgljb25zdGFudHMgdG8gTERfUkVHUyBpZiByZWdfd2FzXzAuCgkob3V0cHV0X3JlbG9hZF9pbnNpc2YpOiBDaGFuZ2UgYXJnIDMgdG8gaW5zbiBsZW5ndGggYW5kIHNldCBpdC4KCShvdXRfbW92aGlfcl9tciwgb3V0X21vdmhpX21yX3IpOiBVc2UgaW4vb3V0IGZvciBtb3JlIGVmZmljaWVudAoJYWNjZXNzIHRvIDE2LWJpdCBJL08gcmVnaXN0ZXIgcGFpcnMuCgkoYXZyX2FkZHJlc3NfY29zdCk6IExvd2VyIGNvc3QgZm9yIHRoZSBhYm92ZSBjYXNlLgoJKG91dF90c3RoaSk6IFVzZSAib3IiIChmYXN0ZXIpIGluc3RlYWQgb2YgInNiaXciIGlmIHRoZSBvcGVyYW5kCgltYXkgYmUgY2xvYmJlcmVkLCBhbHNvIGZvciBMRF9SRUdTLgoJKGFkanVzdF9pbnNuX2xlbmd0aCk6IENvcnJlY3QgaW5zbiBsZW5ndGggZm9yIGlvcmhpMyBhbmQgaW9yc2kzCgl3aXRoIGEgQ09OU1RfSU5ULgoKCSogY29uZmlnL2F2ci9hdnIuaCAoUFRSRElGRl9UWVBFKTogTWFrZSBzaWduZWQuCgoJKiBjb25maWcvYXZyL2F2ci5tZDogQ2hhbmdlIGFsbCB1c2VzIG9mIHRoZSBURVNUX0hBUkRfUkVHX0NMQVNTCgltYWNybyB0byB0ZXN0X2hhcmRfcmVnX2NsYXNzIGZ1bmN0aW9uLgoJKCptb3ZzaSwgKm1vdnNmKTogQ2hhbmdlICJjYyIgYXR0cmlidXRlIGZyb20gImNsb2JiZXIiIHRvICJub25lIgoJZm9yIGxvYWRpbmcgaW1tZWRpYXRlIGNvbnN0YW50cyB0byBMRF9SRUdTLgoJKGFuZHNpMywgY21waGksIGNtcHNpKTogQWRkIHJldHVybiBzdGF0ZW1lbnRzIHRvIGF2b2lkIHdhcm5pbmdzLgoKClNhdCBTZXAgIDIgMTM6NTg6MjMgMjAwMCAgTWFyZWsgTWljaGFsa2lld2ljeiA8bWFyZWttQGxpbnV4Lm9yZy5wbD4KCgkqIGNvbmZpZy9hdnIvYXZyLm1kICgiKm5lZ3NpMiIpOiBzdWJzdGl0dXRlICVAIHRvIF9femVyb19yZWdfXwoJKiBjb25maWcvYXZyL2xpYmdjYy5TOiBMb3N0IHBhcnQgb2YgdGhlIHByZXZpb3VzIHBhdGNoLgoKMjAwMC0wOC0zMSAgSi4gRGF2aWQgQW5nbGluICA8ZGF2ZUBoaWF1bHkxLmhpYS5ucmMuY2E+CgoJKiBndGhyLWRjZS5oIChfX2d0aHJlYWRfb2JqY19tdXRleF9hbGxvY2F0ZSk6IENyZWF0ZSBhIHB0aHJlYWRfbXV0ZXhfdAoJb2JqZWN0IGJlZm9yZSBjYWxsaW5nIHB0aHJlYWRfbXV0ZXhfaW5pdC4KCjIwMDAtMDktMDIgIEFsZXhhbmRyZSBPbGl2YSAgPGFvbGl2YUByZWRoYXQuY29tPgoKCSogY29uZmlnL3NoL3QtZWxmLCBjb25maWcvc2gvY3J0MS5hc20sIGNvbmZpZy9zaC9jcnRpLmFzbSwKCWNvbmZpZy9zaC9jcnRuLmFzbTogTmV3IGZpbGVzLgoJKiBjb25maWcvc2gvdC1zaCAoRVhUUkFfTVVMVElMSUJfUEFSVFMpOiBTZXQuCgkoY3J0MS5vLCBjcnRpLm8sIGNydG4ubyk6IE5ldyB0YXJnZXRzLgoJKiBjb25maWd1cmUuaW4gW3NoLSotZWxmKiwgc2gtKi1ydGVtc2VsZipdICh0bWFrZV9maWxlKTogQWRkZWQKCXNoL3QtZWxmLgoJKiBjb25maWd1cmU6IFJlYnVpbHQuCgkqIGNvbmZpZy9zaC9zaC5oIChJTklUX1NFQ1RJT05fQVNNX09QLCBGSU5JX1NFQ1RJT05fQVNNX09QLAoJU1RBUlRGSUxFX1NQRUMsIEVOREZJTEVfU1BFQywgQ1JUX0NBTExfU1RBVElDX0ZVTkNUSU9OKTogRGVmaW5lLgoJKiBjb25maWcvc2gvZWxmLmggKElOSVRfU0VDVElPTl9BU01fT1AsIEZJTklfU0VDVElPTl9BU01fT1ApOgoJVW5kZWZpbmUgZm9yIGNvbmZpZy9lbGZvcy5oIHRvIHJlZGVmaW5lLgoJKFNUQVJURklMRV9TUEVDLCBFTkRGSUxFX1NQRUMpOiBSZWRlZmluZSBhZnRlciBjb25maWcvZWxmb3MuaC4KCjIwMDAtMDktMDIgIEFsZXhhbmRyZSBPbGl2YSAgPGFvbGl2YUByZWRoYXQuY29tPiwgTmlpYmUgWXV0YWthICA8Z25paWJlQG0xN24ub3JnPiwgS2F6IEtvamltYSAgPGtrb2ppbWFAcnIuaWlqNHUub3IuanA+CgoJKiBjb25maWcvc2gvc2gtcHJvdG9zLmggKG5vbnBpY19zeW1ib2xfbWVudGlvbmVkX3AsCglsZWdpdGltaXplX3BpY19hZGRyZXNzLCBvdXRwdXRfcGljX2FkZHJfY29uc3QpOiBEZWNsYXJlLgoJKiBjb25maWcvc2gvc2guaCAoQ09ORElUSU9OQUxfUkVHSVNURVJfVVNBR0UpOiBGaXggUElDIHJlZ2lzdGVyLgoJKFBSRUZFUkdPVF9CSVQsIFRBUkdFVF9QUkVGRVJHT1QpOiBMaWtld2lzZS4KCShUQVJHRVRfU1dJVENIRVMpOiBOZXcgc3dpdGNoIC1tcHJlZmVyZ290LgoJKE9WRVJSSURFX09QVElPTlMpOiBTZXQgZmxhZ19ub19mdW5jdGlvbl9jc2UgdW5sZXNzIC1tcHJlZmVyZ290LgoJKFBJQ19PRkZTRVRfVEFCTEVfUkVHTlVNKTogRGVmaW5lLgoJKEdPVF9TWU1CT0xfVEFCTEUpOiBMaWtld2lzZS4KCShMRUdJVElNSVpFX0FERFJFU1MpOiBVc2UgbGVnaXRpbWl6ZV9waWNfYWRkcmVzcy4KCShFTkNPREVfU0VDVElPTl9JTkZPKTogRGVmaW5lLgoJKEZJTkFMSVpFX1BJQyk6IE5ldyBtYWNyb3MuCgkoTEVHSVRJTUFURV9QSUNfT1BFUkFORF9QLCBTWU1CT0xJQ19DT05TVF9QKTogTmV3IG1hY3JvLgoJKEFTTV9PVVRQVVRfSU5ULCBBU01fT1VUUFVUX1NIT1JUKTogVXNlIG91dHB1dF9waWNfYWRkcl9jb25zdC4KCSogY29uZmlnL3NoL3NoLmMgKHByaW50X29wZXJhbmRfYWRkcmVzcyk6IFVzZSBvdXRwdXRfcGljX2FkZHJfY29uc3QuCgkocHJlcGFyZV9tb3ZlX29wZXJhbmRzKTogQ2FsbCBlbWl0X3BpY19tb3ZlIG9yCgllbWl0X3BpY19jb25zdF9tb3ZlIGlmIGFwcHJvcHJpYXRlLgoJKG91dHB1dF9mYXJfanVtcCk6IEZvciBQSUMsIHVzZSBicmFmIGFuZCBvdXRwdXQgbG9uZyBvZmZzZXQuCgkobWFjaGluZV9kZXBlbmRlbnRfcmVvcmcpOgoJKHNoX2V4cGFuZF9wcm9sb2d1ZSk6IFNhdmUgYW5kIGluaXRpYWxpemUgdGhlIFBJQyByZWdpc3Rlci4KCShzaF9leHBhbmRfZXBpbG9ndWUpOiBSZXN0b3JlIGl0LgoJKGluaXRpYWxfZWxpbWluYXRpb25fb2Zmc2V0KTogQWNjb3VudCBmb3IgaXQuCgkobm9ucGljX3N5bWJvbF9tZW50aW9uZWRfcCk6IE5ldyBmdW5jdGlvbi4KCShsZWdpdGltaXplX3BpY19hZGRyZXNzKTogTGlrZXdpc2UuCgkob3V0cHV0X3BpY19hZGRyX2NvbnN0KTogTGlrZXdpc2UuCgkqIGNvbmZpZy9zaC9zaC5tZCAoY2FsbGlfcGNyZWwsIGNhbGxfdmFsdWVpX3BjcmVsKTogTmV3IGluc25zLgoJKGNhbGwsIGNhbGxfdmFsdWUpOiBVc2UgdGhlbS4KCShHT1RhZGRyMnBpY3JlZywgc3ltX2xhYmVsMnJlZywgc3ltR09UMnJlZywgc3ltR09UT0ZGMnJlZywKCXN5bVBMVF9sYWJlbDJyZWcpOiBOZXcgZXhwYW5kcy4KCSogaW52b2tlLnRleGkgKFNIIE9wdGlvbnMpOiBEb2N1bWVudCAtbXByZWZlcmdvdC4KCjIwMDAtMDktMDEgIEFsZXhhbmRyZSBPbGl2YSAgPGFvbGl2YUByZWRoYXQuY29tPgoKCSogcnRsLmggKEFTTV9PUEVSQU5EU19JTlBVVF9DT05TVFJBSU5UX0VYUCk6IE5ldyBtYWNyby4KCSogZ2NzZS5jIChoYXNoX3N0cmluZ18xKTogTmV3IGZ1bmN0aW9uLgoJKGhhc2hfZXhwcl8xKSA8QVNNX09QRVJBTkRTPjogRGlzcmVnYXJkIGZpbGVuYW1lIGFuZCBsaW5lIG51bWJlci4KCShleHByX2VxdWl2X3ApIDxBU01fT1BFUkFORFM+OiBMaWtld2lzZS4KCSogY3NlLmMgKHJ0eF9jb3N0KTogRG9uJ3QgaW5jcmVhc2UgdGhlIGNvc3Qgb2YgQVNNX09QRVJBTkRTLgoJKGNhbm9uX2hhc2hfc3RyaW5nKTogTmV3IGZ1bmN0aW9uLgoJKGNhbm9uX2hhc2gpIDxBU01fT1BFUkFORFM+OiBEaXNyZWdhcmQgZmlsZW5hbWUgYW5kIGxpbmUgbnVtYmVyLgoJKGV4cF9lcXVpdl9wKSA8QVNNX09QRVJBTkRTPjogTGlrZXdpc2UuCgkoZm9sZF9ydHgpOiBVc2UgQVNNX09QRVJBTkRTIGFjY2Vzc29yIG1hY3Jvcy4KCSogZW1pdC1ydGwuYyAoY29weV9pbnNuXzEpOiBMaWtld2lzZS4KCSogaW50ZWdyYXRlLmMgKGNvcHlfcnR4X2FuZF9zdWJzdGl0dXRlKTogTGlrZXdpc2UuCgkqIHN0bXQuYyAoZXhwYW5kX2FzbV9vcGVyYW5kcyk6IExpa2V3aXNlLiAgR2l2ZSBhbgoJQVNNX09QRVJBTkRTIHJ0eCB0aGUgbW9kZSBvZiB0aGUgb3V0cHV0IHJlZyBiZWluZyBzZXQgZnJvbSBpdC4KCjIwMDAtMDktMDEgIEZyZWQgRmlzaCAgPGZuZkBiZS5jb20+CgoJKiBmaXgtaGVhZGVyLmMgKHdyaXRlX3JicmFjKTogQWRkIHB1dGMgYW5kIGdldGMgdG8gbGlzdCBvZgoJZnVuY3Rpb25zIHRvIHByb3RlY3QgYWdhaW5zdCBwcmlvciBkZWZpbml0aW9uIGFzIGEgbWFjcm8uCgoyMDAwLTA5LTAxICBKb3NlcGggUy4gTXllcnMgIDxqc20yOEBjYW0uYWMudWs+CgoJKiBjLWNvbW1vbi5oIChlbnVtIGNfdHJlZV9pbmRleCk6IEFkZCBDVElfQ19TSVpFX1RZUEUuCgkoY19zaXplX3R5cGVfbm9kZSk6IERlZmluZS4KCSogYy1kZWNsLmMgKGluaXRfZGVjbF9wcm9jZXNzaW5nKTogSW5pdGlhbGl6ZSBjX3NpemVfdHlwZV9ub2RlLgoJKiBjLWNvbW1vbi5jIChlbnVtIGZvcm1hdF9sZW5ndGhzLCBlbnVtIGZvcm1hdF9zdGRfdmVyc2lvbiwKCWZvcm1hdF9sZW5ndGhfaW5mbywgZm9ybWF0X3R5cGVfZGV0YWlsLCBCQURMRU4sIE5PTEVOR1RIUywKCWZvcm1hdF9raW5kX2luZm8sIHByaW50Zl9sZW5ndGhfc3BlY3MsIHNjYW5mX2xlbmd0aF9zcGVjcywgVDg5X0ksCglUOTlfSSwgVDg5X0wsIFQ5OV9MTCwgVEVYX0xMLCBUODlfUywgVDg5X1VJLCBUOTlfVUksIFQ4OV9VTCwKCVQ5OV9VTEwsIFRFWF9VTEwsIFQ4OV9VUywgVDg5X0YsIFQ5OV9GLCBUODlfRCwgVDk5X0QsIFQ4OV9MRCwKCVQ5OV9MRCwgVDg5X0MsIFQ5OV9TQywgVDk5X1VDLCBUODlfViwgVDk0X1csIFRFWF9XLCBUOTRfV0ksCglURVhfV0ksIFQ5OV9TVCwgVDk5X1NTVCwgVDk5X1BELCBUOTlfVVBELCBUOTlfSU0sIFQ5OV9VSU0sCglmb3JtYXRfdHlwZXMpOiBEZWZpbmUuCgkoZm9ybWF0X2NoYXJfaW5mbywgcHJpbnRfY2hhcl90YWJsZSwgc2Nhbl9jaGFyX3RhYmxlLAoJdGltZV9jaGFyX3RhYmxlKTogUmVhcnJhbmdlIGZvciBuZXcgb3JnYW5pemF0aW9uIG9mIGluZm9ybWF0aW9uCglhYm91dCBmb3JtYXQgbGVuZ3RoIG1vZGlmaWVycyBhbmQgc3RhbmRhcmQgdmVyc2lvbnMuCgkoVF9TVCk6IFJlZGVmaW5lIHRvIHVzZSBjX3NpemVfdHlwZV9ub2RlLgoJKGNoZWNrX2Zvcm1hdF9pbmZvKTogT2J0YWluIGluZm9ybWF0aW9uIGFib3V0IGxlbmd0aCBtb2RpZmllcnMgYW5kCglzdGFuZGFyZCB2ZXJzaW9ucyBmcm9tIHRhYmxlcy4gIEFkanVzdCB3YXJuaW5nIG1lc3NhZ2Ugd29yZGluZ3MuCglVc2UgdGhlIG5hbWUgZnJvbSB0aGUgdXNlcidzIHByb2dyYW0gZm9yIGBsbCcgYW5kIGBoaCcgbGVuZ3RoCgltb2RpZmllcnMgaW4gd2FybmluZyBtZXNzYWdlcy4gIFVzZSBtb3JlIGluZm9ybWF0aXZlIG5hbWVzIGZvcgoJd2FudGVkIHR5cGVzIHdoZXJlIGF2YWlsYWJsZSAoZm9yIHdjaGFyX3QsIHdpbnRfdCwgc2l6ZV90LCBzaWduZWQKCXNpemVfdCwgcHRyZGlmZl90LCB1bnNpZ25lZCBwdHJkaWZmX3QsIGludG1heF90IGFuZCB1aW50bWF4X3QpLgoKMjAwMC0wOS0wMSAgSmltIFdpbHNvbiAgPHdpbHNvbkBjeWdudXMuY29tPgoKCSogY2FsbHMuYyAoZW1pdF9jYWxsXzEpOiBBZGQgUkVHX05PUkVUVVJOIG5vdGUgdG8gY2FsbCBpZiBFQ0ZfTk9SRVRVUk4uCgkqIGNvbWJpbmUuYyAoZGlzdHJpYnV0ZV9ub3Rlcyk6IEhhbmRsZSBSRUdfTk9SRVRVUk4uCgkqIHJ0bC5jIChyZWdfbm90ZV9uYW1lKTogQWRkIFJFR19OT1JFVFVSTi4KCSogcnRsLmggKGVudW0gcmVnX25vdGUpOiBMaWtld2lzZS4KCgkqIGNvbmZpZy9pYTY0L2lhNjQtcHJvdG9zLmggKGVtaXRfc2FmZV9hY3Jvc3NfY2FsbHMpOiBSZW5hbWVkIGZyb20KCWlhNjRfZmlsZV9zdGFydC4KCSogY29uZmlnL2lhNjQvaWE2NC5jIChlbWl0X3NhZmVfYWNyb3NzX2NhbGxzKTogTGlrZXdpc2UuCgkocnR4X25lZWRzX2JhcnJpZXIpOiBIYW5kbGUgdW5zcGVjX3ZvbGF0aWxlIDggYW5kIDkuCgkoZW1pdF9wcmVkaWNhdGVfcmVsYXRpb25faW5mbyk6IEhhbmRsZSBjb25kaXRpb25hbCBjYWxscyB3aXRoCglSRUdfTk9SRVRVUk4uCgkqIGNvbmZpZy9pYTY0L2lhNjQuaCAoQVNNX0ZJTEVfU1RBUlQpOiBDYWxsIGVtaXRfc2FmZV9hY3Jvc3NfY2FsbHMKCWluc3RlYWQgb2YgaWE2NF9maWxlX3N0YXJ0LgoJKiBjb25maWcvaWE2NC9zeXN2NC5oIChBU01fRklMRV9TVEFSVCk6IExpa2V3aXNlLgoJKiBjb25maWcvaWE2NC9pYTY0Lm1kIChzYWZlX2Fjcm9zc19jYWxsc19hbGwsCglzYXZlX2Fjcm9zc19jYWxsc19ub3JtYWwpOiBOZXcgcGF0dGVybnMuCgoJKiBsb29wLmMgKGNoZWNrX2ZpbmFsX3ZhbHVlKTogQ2hlY2sgZm9yIGJpdiB1c2UgYmVmb3JlIGNoZWNraW5nIGZvcgoJZ2l2IHVzZS4gIENoZWNrIGZvciBib3RoIGJpdiBhbmQgZ2l2IHVzZXMuICBBbHdheXMgc2V0IGxhc3RfZ2l2X3VzZQoJaWYgdGhlcmUgaXMgYSBnaXYgdXNlLgoKMjAwMC0wOS0wMSAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAY3lnbnVzLmNvbT4KCgkqIGNvbmZpZy9pYTY0L2lhNjQubWQgKG11bHNpMyk6IFVzZSBncmZyX3JlZ2lzdGVyX29wZXJhbmQuCgkobWFkZGRpMyk6IExpa2V3aXNlLgoJKG1hZGRzaTMpOiBOZXcuCgpGcmkgU2VwICAxIDEwOjU5OjQ3IDIwMDAgIFJpY2hhcmQgS2VubmVyICA8a2VubmVyQHZsc2kxLnVsdHJhLm55dS5lZHU+CgoJKiBleHByLmMgKGNsZWFyX3N0b3JhZ2UpOiBEb24ndCB1c2UgZW1pdF9tb3ZlX2luc24gdW5sZXNzCgllaXRoZXIgQkxLbW9kZSBvciBwcm9wZXIgc2l6ZS4KCShzdG9yZV9jb25zdHJ1Y3Rvcik6IERvbid0IGNhbGwgY2xlYXJfc3RvcmFnZSBpZiBSRUcgb2Ygd3Jvbmcgc2l6ZS4KCgkqIGZsb3cuYyAoaW5pdF9wcm9wYWdhdGVfYmxvY2tfaW5mbyk6IERvbid0IG1hcmsgZnJhbWUgZGVhZCBhdCBlbmQKCW9mIGZ1bmN0aW9uIGlmIHJldHVybnMgd2lodCBzdGFjayBwb2ludGVyIGRlcHJlc3NlZC4KCjIwMDAtMDktMDEgIEFuZHJldyBIYWxleSAgPGFwaEByZWRoYXQuY29tPgoKCSogZHdhcmYyb3V0LmMgKHN0YWNrX2FkanVzdF9vZmZzZXQpOiBOZXcgZnVuY3Rpb24uCgkoZHdhcmYyb3V0X3N0YWNrX2FkanVzdCk6IEJyZWFrIG91dCBzdGFjayBhZGp1c3QgbG9naWMgaW50bwoJbmV3IHN0YWNrX2FkanVzdF9vZmZzZXQgZnVuY3Rpb24uICBMb29rIGluc2lkZSBwYXJhbGxlbHMgYW5kCglzZXF1ZW5jZXMgZm9yIHN0YWNrIGFkanVzdG1lbnRzLgoKMjAwMC0wOC0zMSAgSmVmZiBMYXcgPGxhd0BjeWdudXMuY29tPgoKCSogYXJtLm1kOiBVc2Ugbm9fbmV3X3BzZXVkb3MgdG8gZGV0ZXJtaW5lIHdoZW4gaXQgaXMgc2FmZQoJdG8gY3JlYXRlIG5ldyBwc2V1ZG8gcmVnaXN0ZXJzLgoKCSogYXJtLmMgKGxlZ2l0aW1pemVfcGljX2FkZHJlc3MpOiBVc2Ugbm9fbmV3X3BzZXVkb3MgdG8gZGV0ZXJtaW5lCgl3aGVuIHdlIGNhbiBzYWZlbHkgYWxsb2NhdGUgbmV3IHJlZ2lzdGVycy4KCjIwMDAtMDgtMzEgIEdlb2ZmcmV5IEtlYXRpbmcgIDxnZW9mZmtAY3lnbnVzLmNvbT4KCgkqIHN0bXQuYyAoZXhwYW5kX2FzbV9vcGVyYW5kcyk6IFR3aWRkbGUgZ2VuZXJhdGluZ19jb25jYXRfcAoJc28gdGhhdCBDT05DQVRzIGFyZSBub3QgZ2VuZXJhdGVkIGZvciBBU01zLgoJKiBlbWl0LXJ0bC5jIChnZW5fcmVnX3J0eCk6IERvbid0IGdlbmVyYXRlIENPTkNBVHMgd2hlbgoJbm90IGdlbmVyYXRpbmdfY29uY2F0X3AuCgkqIGZ1bmN0aW9uLmMgKHBvcF9mdW5jdGlvbl9jb250ZXh0X2Zyb20pOiBSZXNldAoJZ2VuZXJhdGluZ19jb25jYXRfcC4KCShwcmVwYXJlX2Z1bmN0aW9uX3N0YXJ0KTogTGlrZXdpc2UuCgkqIHJ0bC5jIChnZW5lcmF0aW5nX2NvbmNhdF9wKTogRGVmaW5lLgoJKiBydGwuaCAoZ2VuZXJhdGluZ19jb25jYXRfcCk6IERlY2xhcmUuCgkqIHRvcGxldi5jIChyZXN0X29mX2NvbXBpbGF0aW9uKTogTm8gQ09OQ0FUcyBhZnRlciBSVEwgZ2VuZXJhdGlvbi4KCjIwMDAtMDgtMjIgIFBoaWxpcHAgVGhvbWFzICA8cHRob21hc0BzdXNlLmRlPgoJICAgIE1hc2Fub2J1IFl1aGFyYSA8eXVoYXJhQGZsYWIuZnVqaXRzdS5jby5qcD4KCgkqIGdtaWNyby5oIChUQVJHRVRfU1dJVENIRVMpOiBBZGQgZGVzY3JpcHRpb25zIGFuZCBtYXJrIHRoZW0KCWZvciB0cmFuc2xhdGlvbi4KCjIwMDAtMDgtMzAgIEdyZWcgTWNHYXJ5ICA8Z3JlZ0BtY2dhcnkub3JnPgoKCSogTWFrZWZpbGUuaW4gKGZpeGluYy5zaCk6IFBhc3MgQ0MsIENGTEFHUyBhbmQgTERGTEFHUyB0byBta2ZpeGluYy5zaAoJKiBmaXhpbmMvTWFrZWZpbGUuaW4gKGZpeGluY2wpOiBQYXNzICQoTERGTEFHUykgdG8gJChDQykuCgkqIGZpeGluYy9ta2ZpeGluYy5zaDogUGFzcyAkQ0MsICRDRkxBR1MgYW5kICRMREZMQUdTIHRvICRNQUtFLgoKMjAwMC0wOC0zMCAgR3JlZyBNY0dhcnkgIDxncmVnQG1jZ2FyeS5vcmc+CgoJKiB0cmVlLmggKHN0cnVjdCB0cmVlX2ludF9jc3QpOiBXcmFwIGxvdyBhbmQgaGlnaCBpbiBhIHN1Yi1zdHJ1Y3QuCgkoVFJFRV9JTlRfQ1NUX0xPVywgVFJFRV9JTlRfQ1NUX0hJR0gpOiBBY2Nlc3MgdGhyb3VnaCBzdWItc3RydWN0LgoJKFRSRUVfSU5UX0NTVCk6IE5ldyBtYWNyby4KCSogdmFyYXNtLmMgKGNvbnN0X2hhc2gsIGNvbXBhcmVfY29uc3RhbnRfMSwgcmVjb3JkX2NvbnN0YW50XzEpOgoJVXNlIG5ldyBtYWNybyBUUkVFX0lOVF9DU1QuCgpXZWQgMzAtQXVnLTIwMDAgMjM6MTg6NTkgQlNUICBOZWlsIEJvb3RoICA8TmVpbEJAZWFydGhsaW5nLm5ldD4KCgkqIGNvbnRyaWIudGV4aTogQWRkIHNlbGYuCgoyMDAwLTA4LTMwICBBbGV4YW5kcmUgT2xpdmEgIDxhb2xpdmFAcmVkaGF0LmNvbT4KCgkqIGNvbmZpZy9zaC9zaC5tZCAoY21wZXFzaV9pb3JfdCwgY21wZXFzaV9hbmRfdCk6IE5ldyBpbnNucy4KCShjbXBlcWRpX3Qgc3BsaXR0ZXIpOiBVc2UgY21wZXFzaV9hbmRfdCBpbnN0ZWFkIG9mIGVtaXR0aW5nIGp1bXBzCglhbmQgbGFiZWxzLgoKMjAwMC0wOC0zMCAgSi4gRGF2aWQgQW5nbGluICA8ZGF2ZUBoaWF1bHkxLmhpYS5ucmMuY2E+CgoJKiBmaXhpbmMvZ251LXJlZ2V4LmM6IERvbid0IGRlZmluZSBgY29uc3QnLgoKVHVlIEF1ZyAyOSAyMjowOTo1OSAyMDAwICBSaWNoYXJkIEtlbm5lciAgPGtlbm5lckB2bHNpMS51bHRyYS5ueXUuZWR1PgoKCSogZXhwci5jIChzdG9yZV9jb25zdHJ1Y3Rvcik6IEFsbG93IHZhcmlhYmxlIGJvdW5kcyBvZiBhcnJheSB0eXBlLgoJKGV4cGFuZF9leHByKTogRG9uJ3QgYmxvdyB1cCBpZiB0eXBlIGlzIEVSUk9SX01BUksuCgkqIHZhcmFzbS5jIChvdXRwdXRfY29uc3RydWN0b3IpOiBEb24ndCBhY2Nlc3MgbG93ZXIgYm91bmQgb2YgYXJyYXkKCXR5cGUgdW5sZXNzIG5lZWQgaXQgaWYgaW5kZXggaXMgc3VwcGxpZWQgKHNvIGl0IGNhbiBiZSBhIHZhcmlhYmxlCglpZiBubyBpbmRleCBpcyBzdXBwbGllZCkuCglVc2UgdHJlZV9sb3dfY3N0OyB1c2UgSE9TVF9XSURFX0lOVCBmb3Igc2l6ZXM7IGNoYW5nZSBCSVRQT1MgdG8gUE9TLgoJT3RoZXIgbWlub3IgY2xlYW51cHMuCgoyMDAwLTA4LTI5ICBKLiBEYXZpZCBBbmdsaW4gIDxkYXZlQGhpYXVseTEuaGlhLm5yYy5jYT4KCgkqIE1ha2VmaWxlLmluOiBSZXZhbXAgaGFuZGxpbmcgb2YgY2ZsYWdzIHRvIGFsbG93IGRpZmZlcmVudCBXQVJOX0NGTEFHUwoJZm9yIGNvbXBpbGF0aW9ucyBpbiBzdGFnZSAxIGFuZCBzdWJzZXF1ZW50IHN0YWdlcywgcmVzcGVjdGl2ZWx5LgoJKiBjb25maWd1cmUuaW4gKHZheCk6IEFkZCBjb21waWxlci1kZXBlbmRlbnQgQ0ZMQUdTIGZvciBzdGFnZSAxLgoJKiBjb25maWd1cmU6IFJlYnVpbHQuCgkqIHgtdmF4LCB4LXZheC1nY2M6IERlbGV0ZWQuCgoyMDAwLTA4LTI5ICBaYWNrIFdlaW5iZXJnICA8emFja0B3b2xlcnkuY3VtYi5vcmc+CgoJKiBjLWNvbW1vbi5jIChkZWNsYXJlX2Z1bmN0aW9uX25hbWUpOiBVc2UgZnVuY19pZF9ub2RlLAoJZnVuY3Rpb25faWRfbm9kZSwgYW5kIHByZXR0eV9mdW5jdGlvbl9pZF9ub2RlLiAgRG8gbm90IG1ha2UKCV9fZnVuY19fIHZpc2libGUgYXQgZmlsZSBzY29wZS4KCSogYy1jb21tb24uaCAoY190cmVlX2luZGV4KTogQWRkIENUSV9GVU5DVElPTl9JRCwKCUNUSV9QUkVUVFlfRlVOQ1RJT05fSUQsIGFuZCBDVElfRlVOQ19JRC4KCShmdW5jdGlvbl9pZF9ub2RlLCBwcmV0dHlfZnVuY3Rpb25faWRfbm9kZSwgZnVuY19pZF9ub2RlKTogTmV3CgltYWNyb3MuCgkqIGMtZGVjbC5jIChpbml0X2RlY2xfcHJvY2Vzc2luZyk6IEluaXRpYWxpemUgZnVuY3Rpb25faWRfbm9kZSwKCXByZXR0eV9mdW5jdGlvbl9pZF9ub2RlLCBhbmQgZnVuY19pZF9ub2RlLgoJKGNfbWFrZV9mbmFtZV9kZWNsKTogQ29ycmVjdCBjb21tZW50LgoKCSogdHJlZS5oIChzdHJ1Y3QgdHJlZV9pZGVudGlmaWVyKTogQ29uc3RpZnkgcG9pbnRlciBtZW1iZXIuCgoJKiBjLWRlY2wuYyAocHVzaGRlY2wsIGltcGxpY2l0X2RlY2xfd2FybmluZyk6IENvbnN0aWZ5IGEgY2hhciAqLgoJKiBjLXByYWdtYS5oIChzdHJ1Y3Qgd2Vha19zeW1zKTogQ29uc3RpZnkgbmFtZSBhbmQgdmFsdWUgbWVtYmVycy4KCShhZGRfd2Vhayk6IENvbnN0aWZ5IGFyZ3VtZW50cy4KCgkqIGNhbGxzLmMgKHNwZWNpYWxfZnVuY3Rpb25fcCk6IENvbnN0aWZ5IGEgY2hhciAqLgoJKGV4cGFuZF9jYWxsKTogUmVtb3ZlIHZhcmlhYmxlIHdoaWNoIGlzIGluaXRpYWxpemVkIGFuZCB0aGVuCgluZXZlciB1c2VkLgoJKiBkZXBlbmRlbmNlLmMgKHN0cnVjdCBkZWZfdXNlLCBzdHJ1Y3QgaW5kdWN0aW9uLCBzdHJ1Y3Qgc3Vic2NyaXB0KToKCUNvbnN0aWZ5ICd2YXJpYWJsZScgbWVtYmVyLgoJKGdldF9sb3dfYm91bmQsIGhhdmVfaW5kdWN0aW9uX3ZhcmlhYmxlKTogQ29uc3RpZnkgY2hhciAqIGFyZ3VtZW50LgoJKGZpbmRfaW5kdWN0aW9uX3ZhcmlhYmxlKTogQWRkIGJyYWNlcyB0byBhdm9pZCBkYW5nbGluZyBlbHNlLgoJKGNsYXNzaWZ5X2RlcGVuZGVuY2UpOiBDb25zdGlmeSBjaGFyICogYXJyYXlzLgoJKiBwcm9maWxlLmMgKG91dHB1dF9mdW5jX3N0YXJ0X3Byb2ZpbGVyKTogQ29uc3RpZnkgYSBjaGFyICouCgkqIHN0b3ItbGF5b3V0LmMgKGZpbmFsaXplX3JlY29yZF9zaXplKTogQ29uc3RpZnkgYSBjaGFyICouCgkqIHRyZWUuYyAoaXNfYXR0cmlidXRlX3ApOiBDb25zdGlmeSBhIGNoYXIgKi4KCSogdmFyYXNtLmMgKGFkZF93ZWFrLCByZW1vdmVfZnJvbV9wZW5kaW5nX3dlYWtfbGlzdCk6IENvbnN0aWZ5IGFyZ3VtZW50LgoKCSogdmFyYXNtLmMgKG1ha2VfZnVuY3Rpb25fcnRsLCBtYWtlX2RlY2xfcnRsKTogUmVhcnJhbmdlIGNvZGUKCWZvciBjb21wcmVoZW5zaWJpbGl0eS4gIERvIG5vdCBjYWxsIGdldF9pZGVudGlmaWVyIGlmIHdlIGRpZAoJbm90IGNoYW5nZSB0aGUgREVDTF9BU1NFTUJMRVJfTkFNRSBvZiB0aGUgZGVjbC4gIFVzZSBhbGxvY2EgdG8KCWNyZWF0ZSB0ZW1wb3Jhcnkgc3RyaW5nIGNvbnN0YW50cywgbm90IGdnY19hbGxvY19zdHJpbmcuICBObwoJbmVlZCB0byBjb3B5IHJlc3VsdCBvZiBBU01fRk9STUFUX1BSSVZBVEVfTkFNRS4gIFVzZSBjb25zdAoJY2hhciAqIHRvIGhvbGQgSURFTlRJRklFUl9QT0lOVEVScy4KCjIwMDAtMDgtMjkgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgoJKiBjb25maWcvaWE2NC9pYTY0Lm1kIChtdWxkaTMpOiBVc2UgZ3Jmcl9yZWdpc3Rlcl9vcGVyYW5kCglmb3IgdGhlIGlucHV0cy4KCjIwMDAtMDgtMjkgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgoJKiByZWxvYWQuYyAocHVzaF9zZWNvbmRhcnlfcmVsb2FkKTogQWxsb3cgY2xhc3MgPT0gcmVsb2FkX2NsYXNzCglpZiB3ZSdyZSB1c2luZyBhIHJlbG9hZF9pbi9vdXQgcGF0dGVybi4KCgkqIGNvbmZpZy9pYTY0L2lhNjQubWQgKHJlbG9hZF9pbnRpKTogVXNlIGEgVEltb2RlIHNjcmF0Y2guICBVc2UKCXRoZSBoYWxmIHRoYXQgZG9lcyBub3QgY29uZmxpY3Qgd2l0aCB0aGUgcmVsb2FkIHJlZ2lzdGVyLgoJKHJlbG9hZF9vdXR0aSk6IExpa2V3aXNlLgoKMjAwMC0wOC0yOSAgS2F6dSBIaXJhdGEgIDxrYXp1QGh4aS5jb20+CgoJKiByZWxvYWQuYzogRml4IGZvcm1hdHRpbmcuCgoJKiBzdG10LmM6IEZpeCBmb3JtYXR0aW5nLgoKCSogZ2NjLmM6IEZpeCBmb3JtYXR0aW5nLgoKMjAwMC0wOC0yOSAgWmFjayBXZWluYmVyZyAgPHphY2tAd29sZXJ5LmN1bWIub3JnPgoKCSogZmxhZ3MuaCAodGltZV9yZXBvcnQsIG1lbV9yZXBvcnQpOiBOZXcgZ2xvYmFsIGZsYWdzLgoJKiB0b3BsZXYuYzogRGVmaW5lIHRpbWVfcmVwb3J0IGFuZCBtZW1fcmVwb3J0LgoJKGZfb3B0aW9ucyk6IEFkZCAtZnRpbWUtcmVwb3J0IGFuZCAtZm1lbS1yZXBvcnQuCgkoY29tcGlsZV9maWxlKTogVHVybiBvbiB0aW1lX3JlcG9ydCBpZiBxdWlldF9mbGFnIGlzIG9mZi4KCUNhbGwgZ2djX3ByaW50X3N0YXRpc3RpY3MgYXQgdmVyeSBlbmQgaWYgbWVtX3JlcG9ydCBpcyBvbi4KCSogdGltZXZhci5jIChUSU1FVkFSX0VOQUJMRSk6IEV4YW1pbmUgdGltZV9yZXBvcnQsIG5vdCBxdWlldF9mbGFnLgoKCSogZ2djLWNvbW1vbi5jIChnZ2NfcHJpbnRfc3RhdGlzdGljcyk6IFJlbmFtZSB0bwoJZ2djX3ByaW50X2NvbW1vbl9zdGF0aXN0aWNzOyBhbGwgY2FsbGVycyBjaGFuZ2VkLiAgU2NhbGUKCXF1YW50aXRpZXMgYWJvdmUgMTBLIHRvIGtpbG9ieXRlcyBhbmQgYWJvdmUgMTBNIHRvIG1lZ2FieXRlcy4KCSogZ2djLXBhZ2UuYyAoZ2djX3BhZ2VfcHJpbnRfc3RhdGlzdGljcyk6IFJlbmFtZSB0bwoJZ2djX3ByaW50X3N0YXRpc3RpY3MuICBSZXBvcnQgbWVtb3J5IGNvbnN1bWVkIGJ5IGludGVybmFsIGRhdGEKCXN0cnVjdHVyZXMgZm9yIGVhY2ggYWxsb2NhdGlvbiBidWNrZXQuICBTY2FsZSBxdWFudGl0aWVzIGFib3ZlCgkxMEsgdG8ga2lsb2J5dGVzIGFuZCBhYm92ZSAxME0gdG8gbWVnYWJ5dGVzLgoJKiBnZ2Mtc2ltcGxlLmM6IFByb3RvdHlwZSBkZWJ1Z19nZ2NfdHJlZSB0byBhdm9pZCB3YXJuaW5nLgoJQ2FzdCBQVFJfS0VZKHApIHRvIHVuc2lnbmVkIGxvbmcgaW4gZnByaW50ZiBjYWxsIHRvIGF2b2lkIHdhcm5pbmcuCglEZWZpbmUgdGFsbHlfbGVhdmVzIGFsd2F5cy4KCShnZ2NfcHJpbnRfc3RhdGlzdGljcyk6IE5ldyBmdW5jdGlvbi4KCSogZ2djLmg6IEFkanVzdCBmb3IgcmVuYW1lZCBmdW5jdGlvbnMuCgpXZWQgQXVnIDMwIDAwOjExOjQyIDIwMDAgIERlbmlzIENoZXJ0eWtvdiAgPGRlbmlzY0BvdmVydGEucnU+CgoJKiBjb25maWcvYXZyL2F2ci5tZCAoIiptb3ZzZiIsIiptb3ZzaSIpOiBQYXNzIE5VTEwgdG8KCW91dHB1dF9tb3ZzaXNmIGluc3RlYWQgb2Ygd2hpY2hfYWx0ZXJuYXRpdmUuCgoJKiBjb25maWcvYXZyL2F2ci5jIChvdXRwdXRfcmVsb2FkX2luaGkpOiBDaGVjayBmb3IgTlVMTCBwb250ZXIuCgpUdWUgQXVnIDI5IDIyOjI5OjU4IDIwMDAgIERlbmlzIENoZXJ0eWtvdiAgPGRlbmlzY0BvdmVydGEucnU+ICYgTWFyZWsgTWljaGFsa2lld2ljeiA8bWFyZWttQGxpbnV4Lm9yZy5wbD4KCgkqIGNvbmZpZy9hdnIvYXZyLXByb3Rvcy5oOiAoYXZyX291dHB1dF9hc2NpaSkgUmVtb3ZlZC4KCShhdnJfcHJvZ21lbV9wKTogTmV3IHByb3RvdHlwZS4KCShvdXRwdXRfbW92c2lzZik6IFByb3RvdHlwZSBkZWNsYXJhdGlvbiBjaGFuZ2VkLgoJKG91dHB1dF9tb3ZxaSk6IE5ldyBwcm90b3R5cGUuCgkob3V0cHV0X21vdmhpKTogTmV3IHByb3RvdHlwZS4KCShjYWxsX2luc25fb3BlcmFuZCk6IExpa2V3aXNlLgoJKGZpbmFsX3ByZXNjYW5faW5zbik6IExpa2V3aXNlLgoJKGF2cl9zaW1wbGlmeV9jb21wYXJpc2lvbl9wKTogTGlrZXdpc2UuCgkoYXZyX25vcm1hbGl6ZV9jb25kaXRpb24pOiBMaWtld2lzZS4KCShjb21wYXJlX2VxX3ApOiBMaWtld2lzZS4KCShvdXRfc2hpZnRfd2l0aF9jbnQpOiBMaWtld2lzZS4KCShjb25zdF9pbnRfcG93Ml9wKTogTGlrZXdpc2UuCgkob3V0cHV0X3JlbG9hZF9pbmhpKTogUHJvdG90eXBlIGRlY2xhcmF0aW9uIGNoYW5nZWQuCgoJKiBjb25maWcvYXZyL2F2ci5jOiAoZGVidWdfaGFyZF9yZWdfc2V0KTogUHJvdG90eXBlIGRlY2xhcmVkLgoJKGxkaV9yZWdfcnR4KTogTmV3LiBydHggZm9yIHIzMS4KCShhdnJfaW5pdF9zdGFjayk6IEluaXRpYWxpemUgYXMgIl9fc3RhY2siLgoJKGZ1bmN0aW9uX3Byb2xvZ3VlKTogVXNlIGl0LgoJUmVwbGFjZSBhbGwgVEFSR0VUX0VOSEFOQ0VEIHdpdGggQVZSX0VOSEFOQ0VELgoJKGF2cl9tY3VfbmFtZSk6IEluaXRpYWxpemUgYXMgImF2cjIiLgoJKGF2cl9lbmhhbmNlZF9wLCBhdnJfbWVnYV9wKTogTmV3IHZhcmlhYmxlcy4KCShtY3VfdHlwZXMsIGF2cl9vdmVycmlkZV9vcHRpb25zKTogSGFuZGxlIGFsbCBrbm93biBNQ1UgdHlwZXMuCglBbHNvIGhhbmRsZSBhdnIxIChvbmx5IHByZXByb2Nlc3MsIGFzc2VtYmxlIGFuZCBsaW5rKS4KCShwcmludF9vcGVyYW5kKTogVXNpbmcgb2YgYCVLJyBpbiBvdXRwdXQgdGVtcGxhdGUgcmVtb3ZlZC4KCShvdXRfbW92cWlfcl9tcik6IE9wdGltaXplZC4KCShvdXRfbW92aGlfcl9tcik6IExpa2V3aXNlLgoJKG91dHB1dF9tb3ZxaSk6IE5ldyBmdW5jdGlvbi4KCShvdXRwdXRfbW92aGkpOiBMaWtld2lzZS4KCShvdXRfbW92c2lfcl9tcik6IE9wdGltaXplZC4KCShvdXRwdXRfbW92c2lzZik6IENvbXB1dGUgaW5zbiBsZW5ndGggZm9yIGBhZGp1c3RfaW5zbl9sZW5ndGgnCgkob3V0X21vdnFpX21yX3IpOiBPcHRpbWl6ZWQuCgkob3V0X21vdmhpX21yX3IpOiBPcHRpbWl6ZWQuCgkoYWRqdXN0X2luc25fbGVuZ3RoKTogVXNlIG91dHB1dF9tb3ZzaXNmLCBvdXRwdXRfbW92cWksCglvdXRwdXRfbW92aGkgZm9yIGluc24gbGVuZ3RoIGFkanVzdGluZy4KCShyZWdfdW51c2VkX2FmdGVyKTogVXNlIGRlYWRfb3Jfc2V0X3AuCgkocHJlZmVycmVkX3JlbG9hZF9jbGFzcyk6IE5vdyBoYXZlbid0IGFueSByZXN0cmljdGlvbi4KCShyZWdfd2FzXzApOiBOZXcgZnVuY3Rpb24uCgkoaW9fYWRkcmVzc19wKTogTGlrZXdpc2UuCgkoY29uc3RfaW50X3BvdzJfcCk6IExpa2V3aXNlLgoJKG91dHB1dF9yZWxvYWRfaW5oaSk6IExpa2V3aXNlLgoJKG91dHB1dF9yZWxvYWRfaW5zaXNmKTogTGlrZXdpc2UuCgoJKiBjb25maWcvYXZyL2F2ci5oIChNVUxUSUxJQl9ERUZBVUxUUyk6IERlZmluZS4KCShMSUJfU1BFQyk6IFVzZSAtbGMgZm9yIGFsbCBzdXBwb3J0ZWQgZGV2aWNlcy4KCShMSUJHQ0NfU1BFQyk6IFVzZSAtbGdjYyBmb3IgYWxsIHN1cHBvcnRlZCBkZXZpY2VzLgoJKEFWUl9NRUdBKTogRGVmaW5lIGFzIGF2cl9tZWdhX3AuCgkoQVZSX0VOSEFOQ0VEKTogTmV3LCBkZWZpbmUgYXMgYXZyX2VuaGFuY2VkX3AuCgkoVEFSR0VUX1NXSVRDSEVTKTogUmVtb3ZlIC1tZW5oYW5jZWQsIG5vdyBoYW5kbGVkIGJ5IC1tbWN1PS4uLgoJKENQUF9TUEVDLCBMSU5LX1NQRUMpOiBIYW5kbGUgYWxsIGtub3duIE1DVSB0eXBlcy4KCShDUlRfQklOVVRJTFNfU1BFQ1MpOiBIYW5kbGUgYWxsIGtub3duIE1DVSB0eXBlcy4KCVJlbmFtZSBnY3J0MS0qLm8gdG8gbWFrZSBmaWxlIG5hbWVzIHVuaXF1ZSBvbiA4LjMgZmlsZXN5c3RlbXMuCgkoRVhUUkFfU1BFQ1MpOiBBZGQgQ1BQX0FWUlsxLTVdX1NQRUMuCgkoQVNNX1NQRUMpOiBQYXNzIC1tbWN1PS4uLiB0byB0aGUgYXNzZW1ibGVyLgoJQ2hhbmdlIGFsbCAtREFWUl8qIHRvIC1EX19BVlJfKl9fLgoJKElOSVRfVEFSR0VUX09QVEFCUyksIGNvbmZpZy9hdnIvbGliZ2NjLlM6CglSZW5hbWUgbGlicmFyeSBmdW5jdGlvbnMgdG8gc3RhcnQgd2l0aCB0d28gdW5kZXJzY29yZXMuCgkoQVNNX09VVFBVVF9DT01NT04pOiBPdXRwdXRzIGAuY29tbSBWQVIsVkFSLVNJWkUsMScgdG8gYXZvaWQKCWFsaWdubWVudC4KCShBU01fV0VBS0VOX0xBQkVMKTogRGVjbGFyZWQgZm9yIF9fYXR0cmlidXRlX18oKHdlYWspKS4KCShTVVBQT1JUU19XRUFLKTogTGlrZXdpc2UuCgkoTERJX1JFR19SRUdOTyk6IE5ldy4gUmVnaXN0ZXIgcjMxIHdpbGwgYmUgdXNlZCBhcyB0ZW1wb3JhcnkKCXJlZ2lzdGVyIGZvciBsb2FkaW5nIGNvbnN0YW50cyB0byByMC1yMTQuCgoJKiBjb25maWcvYXZyL2F2ci5tZDogUmVwbGFjZSBhbGwgVEFSR0VUX0VOSEFOQ0VEIHdpdGgKCUFWUl9FTkhBTkNFRC4KCSgqbW92X3Jfc3ApOiBSZW1vdmVkLiBIYW5kbGVkIGJ5IG91dHB1dF9tb3ZoaS4KCSgqbW92X3NwX3IpOiBMaWtld2lzZS4KCSgqbW92X3NwX3Jfbm9faW50ZXJydXB0cyk6IExpa2V3aXNlCgkoKm1vdl9zcF9yX3RpbnkpOiBMaWtld2lzZS4KCSgqbW92cWkpOiBVc2Ugb3V0cHV0X21vdnFpLgoJKCpyZWxvYWRfaW5xaSk6IE5ldy4KCSgqbW92aGkpOiBVc2Ugb3V0cHV0X21vdmhpLgoJKCpyZWxvYWRfaW5oaSk6IE5ldy4KCSgqbmVnc2kyKTogT3B0aW1pemVkLgoJKCpuZWdzZjIpOiBMaWtld2lzZS4KCUFkZGVkIHBlZXBob2xlcyAoZGVmaW5lX3BlZXBob2xlMikgZm9yIGxvYWRpbmcgY29uc3RhbnRzIHRvIHIwLXIxNAoJYW5kIGZvciB1c2luZyBgY3BzZScgY29tbWFuZC4KCgkqIGNvbmZpZy9hdnIvbGliZ2NjLlM6IFJlbmFtZSBsaWJyYXJ5IGZ1bmN0aW9ucyB0byBzdGFydCB3aXRoIHR3bwoJdW5kZXJzY29yZXMuCglBZGQgc3VwcG9ydCBmb3IgZW5oYW5jZWQgY29yZS4KCShfbW9xaGkzKTogRml4IHR5cG8sIG5vdyBfbW9kcWkzLgoJKF9fZGl2c2lfcmF3KTogVXNlIF9femVyb19yZWdfXyBhcyBsb29wIGNvdW50ZXIsIHNtYWxsZXIgYnkgMSB3b3JkLgoJKF9fcHJvbG9ndWVfc2F2ZXNfXyk6IFJlbW92ZSB0ZXN0IGZvciBzdGFjayBhZGp1c3QgYnkgMC4KCShfX3RhYmxlanVtcF9fKTogTmV3LgoKCSogY29uZmlnL2F2ci90LWF2cjogQnVpbGQgbGliZ2NjMiB3aXRoIC1tY2FsbC1wcm9sb2d1ZXMuCglBZGQgbXVsdGlsaWIgc3VwcG9ydC4KClR1ZSBBdWcgMjkgMTU6MTc6NTQgRURUIDIwMDAgIEpvaG4gV2VobGUgIChqb2huQGZlaXRoLmNvbSkKCgkqIGxvb3AuYyAocHJlc2Nhbl9sb29wKTogRG9uJ3QgY2hlY2sgdW5rbm93bl9hZGRyZXNzX2FsdGVyZWQKCXdoZW4gZGVjaWRpbmcgaWYgaW5zZXJ0X2xvb3BfbWVtIGlzIHNhZmUuICBBZGQgQkxLbW9kZSBNRU1zCgl0byBsb29wX3N0b3JlX21lbXMgYXMgbmVjZXNzYXJ5LgoJKGxvb3BfaW52YXJpYW50X3ApOiBEb24ndCBjaGVjayB1bmtub3duX2FkZHJlc3NfYWx0ZXJlZAoJb3IgdW5rbm93bl9jb25zdGFudF9hZGRyZXNzX2FsdGVyZWQuCgoyMDAwLTA4LTI5ICBKLiBEYXZpZCBBbmdsaW4gIDxkYXZlQGhpYXVseTEuaGlhLm5yYy5jYT4KCgkqIHZheC5tZCAoc2x0dSwgc2dldSk6IERlbGV0ZSBzbHR1IGFuZCBzZ2V1IGluc24gcGF0dGVybnMuCgoyMDAwLTA4LTI5ICBaYWNrIFdlaW5iZXJnICA8emFja0B3b2xlcnkuY3VtYi5vcmc+CgoJKiBjcHBlcnJvci5jIChwcmludF9maWxlX2FuZF9saW5lKTogSWYgbGluZSBpcyAodW5zaWduZWQgaW50KS0xLAoJcHJpbnQganVzdCB0aGUgZmlsZW5hbWUuCgkqIGNwcGxleC5jIChfY3BwX3J1bl9kaXJlY3RpdmUpOiBBZGQgYWRkaXRpb25hbCBhcmd1bWVudCwgdGhlCgluYW1lIHRvIGdpdmUgdGhlIHN5bnRoZXRpYyBidWZmZXIuICBUaGlzIGRlZmF1bHRzIHRvCgl0cmFuc2xhdGVkICI8Y29tbWFuZCBsaW5lPiIuCgkqIGNwcGxpYi5jIChjcHBfZGVmaW5lLCBjcHBfdW5kZWYsIGNwcF9hc3NlcnQsIGNwcF91bmFzc2VydCk6CglBZGp1c3QgdG8gbWF0Y2guCgkoX2NwcF9kZWZpbmVfYnVpbHRpbik6IE5ldyBmdW5jdGlvbi4KCSogY3BwaW5pdC5jIChpbml0aWFsaXplX2J1aWx0aW5zKTogVXNlIF9jcHBfZGVmaW5lX2J1aWx0aW4uCgkqIGNwcGhhc2guaDogVXBkYXRlIHByb3RvdHlwZXMuCgoJKiB0cmFkY3BwLmMgKG1haW4pOiBQcm9jZXNzIC1EIGFuZCAtVSBzaW11bHRhbmVvdXNseSwgaW4gdGhlCglvcmRlciB0aGV5IGFwcGVhcmVkIG9uIHRoZSBjb21tYW5kIGxpbmUuCgoyMDAwLTA4LTI5ICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBjLWRlY2wuYyAoZGVmaW5lX2xhYmVsKTogQ2FsbCB3YXJuaW5nX3dpdGhfZmlsZV9hbmRfbGluZSBhbmQKCWVycm9yX3dpdGhfZmlsZV9hbmRfbGluZSBpbnN0ZWFkIG9mIHBsYWluIHdhcm5pbmcgb3IgZXJyb3IuCgoJKiBjLXBhcnNlLmluIChsYWJlbCk6IFVzZSBzYXZlX2ZpbGVuYW1lL3NhdmVfbGluZW5vIHRvIGVuc3VyZQoJY29ycmVjdCB2YWx1ZXMgZm9yIGNhbGxzIHRvIGRlZmluZV9sYWJlbC4KCjIwMDAtMDgtMjkgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjYWxscy5jIChleHBhbmRfY2FsbCk6IERvbid0IGNyZWF0ZSBhIFZBUl9ERUNMIGp1c3QgdG8gdGhyb3cgaXQKCWF3YXkuCgkqIGV4cHIuYyAoZXhwYW5kX2V4cHIsIGNhc2UgVEFSR0VUX0VYUFIpOiBEb24ndCBjYWxsCgltYXJrX2FkZHJlc3NhYmxlLgoJKiB0cmVlLmggKGdldF9maWxlX2Z1bmN0aW9uX25hbWUpOiBSZW1vdmUgdHdvIGR1cGxpY2F0ZQoJZGVjbGFyYXRpb25zLgoKMjAwMC0wOC0yOCAgS2F6dSBIaXJhdGEgIDxrYXp1QGh4aS5jb20+CgoJKiB0cmVlLmM6IEZpeCBmb3JtYXR0aW5nLgoKCSogeGNvZmZvdXQuYzogRml4IGZvcm1hdHRpbmcuCgoyMDAwLTA4LTI4ICBKYXNvbiBNZXJyaWxsICA8amFzb25AcmVkaGF0LmNvbT4KCgkqIGR3YXJmMm91dC5jIChhdHRyX2NoZWNrc3VtKTogQWxzbyBpZ25vcmUgRFdfQVRfcHJvZHVjZXIuCgoyMDAwLTA4LTI4ICBEYW5pZWwgQmVybGluICA8ZGJlcmxpbkByZWRoYXQuY29tPgoKCSogZHdhcmYyb3V0LmMgKGR3YXJmMm91dF9maW5pc2gpOiBEb24ndCBib3RoZXIgY2FsbGluZwoJYnJlYWtfb3V0X2luY2x1ZGVzIGlmIGl0IHdvbid0IGRvIGFueXRoaW5nLgoKMjAwMC0wOC0yOCAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAY3lnbnVzLmNvbT4KCgkqIHJlbG9hZC5jIChwdXNoX3NlY29uZGFyeV9yZWxvYWQpOiBSZXZlcnQgMjAwMC0wOC0xNiBjaGFuZ2UuCgkoZmluZF9yZWxvYWRzKTogTGlrZXdpc2UuCgkqIGNvbmZpZy9hbHBoYS9hbHBoYS5tZCAocmVsb2FkX2lucWkpOiBSZXZlcnQgMjAwMC0wOC0xMSBjaGFuZ2UuCgkocmVsb2FkX2luaGkpOiBMaWtld2lzZS4KCjIwMDAtMDgtMjggIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgoJKiBjb25maWcvaTM4Ni9pMzg2LmM6IERvbid0IGVycm9yIG9uIEVYVFJBX0NPTlNUUkFJTlQgZGVmaW5lZC4KCShjYWxsX2luc25fb3BlcmFuZCk6IERvbid0IGV4cGVjdCBhIHN1cnJvdW5kaW5nIG1lbS4KCShjb25zdGFudF9jYWxsX2FkZHJlc3Nfb3BlcmFuZCk6IExpa2V3aXNlLgoJKiBjb25maWcvaTM4Ni9pMzg2LmggKFBSRURJQ0FURV9DT0RFUyk6IFVwZGF0ZS4KCSogY29uZmlnL2kzODYvaTM4Ni5tZCAoY2FsbCBwYXR0ZXJucyk6IE1vdmUgdGhlIG1hdGNoX29wZXJhbmQKCWZvciB0aGUgY2FsbCBkZXN0aW5hdGlvbiBpbnNpZGUgdGhlIG1lbS4KCjIwMDAtMDgtMjggIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgoJKiBsb2NhbC1hbGxvYy5jIChyZXF1aXJlc19pbm91dCk6IERvbid0IHVzZSByZXNlcnZlZCByYW5nZSBmb3IKCUVYVFJBX0NPTlNUUkFJTlRTOyB1c2UgYW55dGhpbmcgbm90IG1hdGNoZWQgYnkgUkVHX0NMQVNTX0ZST01fTEVUVEVSLgoJKiByZWNvZy5jIChhc21fb3BlcmFuZF9vayk6IExpa2V3aXNlLgoJKHByZXByb2Nlc3NfY29uc3RyYWludHMsIGNvbnN0cmFpbl9vcGVyYW5kcyk6IExpa2V3aXNlLgoJKiByZWdjbGFzcy5jIChyZWNvcmRfcmVnX2NsYXNzZXMpOiBMaWtld2lzZS4KCSogcmVsb2FkLmMgKGZpbmRfcmVsb2Fkcyk6IExpa2V3aXNlLgoJKiByZWxvYWQxLmMgKG1heWJlX2ZpeF9zdGFja19hc21zKTogTGlrZXdpc2UuCgkocmVsb2FkX2NzZV9zaW1wbGlmeV9vcGVyYW5kcyk6IExpa2V3aXNlLgoJKiBzdG10LmMgKGV4cGFuZF9hc21fb3BlcmFuZHMpOiBMaWtld2lzZS4KCgkqIG1kLnRleGk6IFVwZGF0ZSBjb25zdHJhaW50cyBkb2N1bWVudGF0aW9uLgoJKiB0bS50ZXhpIChFWFRSQV9DT05TVFJBSU5UKTogVXBkYXRlLgoKMjAwMC0wOC0yOCAgRGFuaWVsIEJlcmxpbiAgPGRiZXJsaW5AcmVkaGF0LmNvbT4KCgkqIGR3YXJmMm91dC5jIChESUVfTEFCRUxfUFJFRklYKTogUmVtb3ZlIGxlYWRpbmcgIl9fIi4KCShwcmludF9kaWUpOiBJZiB3ZSBkb24ndCBrbm93IHRoZSBvZmZzZXQgb2YgdGhlCgl0YXJnZXQgZGllLCB0cnkgdGhlIHN5bWJvbC4gIEFkZCBhIHRyYWlsaW5nIG5ld2xpbmUuCgkocmV2ZXJzZV9hbGxfZGllcyk6IE5ldyBmbi4KCShkd2FyZjJvdXRfZmluaXNoKTogQ2FsbCBpdC4KCShicmVha19vdXRfaW5jbHVkZXMpOiBSZW9yZ2FuaXplIGZvciBjbGFyaXR5LgoJKGFkZF9zaWJsaW5nX2F0dHJpYnV0ZXMpOiBEb24ndCBjYWxsIHJldmVyc2VfZGllX2xpc3RzLgoJKG91dHB1dF9jb21wX3VuaXQpOiBSZW5hbWUgZnJvbSBvdXRwdXRfY29tZGF0X2NvbXBfdW5pdC4gIFVzZSBmb3IKCXByaW1hcnkgQ1UsIHRvby4KCSogZmxhZ3MuaDogQWRkIGZsYWdfZWxpbWluYXRlX2R3YXJmMl9kdXBzLgoJKiB0b3BsZXYuYyAoZl9vcHRpb25zKTogU3VwcG9ydCAtZmVsaW1pbmF0ZS1kd2FyZjItZHVwcy4KCjIwMDAtMDgtMjggIEphc29uIE1lcnJpbGwgIDxqYXNvbkByZWRoYXQuY29tPgoKCSogZHdhcmYyLmggKERXX1RBR19HTlVfQklOQ0wsIERXX1RBR19HTlVfRUlOQ0wpOiBOZXcgdGFncy4KCSogZHdhcmYyb3V0LmM6ICNpbmNsdWRlICJtZDUuaCIuCgkoRElFX0xBQkVMX1BSRUZJWCk6IE5ldyBtYWNyby4KCShkd192YWxfc3RydWN0KTogQWRkICdleHRlcm5hbCcgZmxhZyB0byB2YWxfZGllX3JlZi4KCShhZGRfQVRfZGllX3JlZiwgQVRfcmVmKTogQWRqdXN0LgoJKEFUX3JlZl9leHRlcm5hbCwgc2V0X0FUX3JlZl9leHRlcm5hbCk6IE5ldyBmbnMuCgkoYnVpbGRfYWJicmV2X3RhYmxlKTogQ2FsbCBzZXRfQVRfcmVmX2V4dGVybmFsLgoJKHZhbHVlX2Zvcm1hdCk6IENhbGwgQVRfcmVmX2V4dGVybmFsLgoJKGRpZV9zdHJ1Y3QpOiBBZGQgZGllX3N5bWJvbCBmaWVsZC4KCShuZXdfZGllKTogQ2xlYXIgaXQuCgkoZHdhcmZfdGFnX25hbWUpOiBIYW5kbGUgQklOQ0wvRUlOQ0wuCgkoZHdhcmYyb3V0X3N0YXJ0X3NvdXJjZV9maWxlKTogQWRkIEJJTkNMIERJRS4KCShkd2FyZjJvdXRfZW5kX3NvdXJjZV9maWxlKTogQWRkIEVJTkNMIERJRS4KCShwdXNoX25ld19jb21waWxlX3VuaXQsIHBvcF9jb21waWxlX3VuaXQsIGNsZWFyX2RpZV9zaXplcyk6IE5ldyBmbnMuCgkobG9jX2NoZWNrc3VtLCBhdHRyX2NoZWNrc3VtLCBkaWVfY2hlY2tzdW0pOiBOZXcgZm5zLgoJKGlzX3R5cGVfZGllLCBpc19jb21kYXRfZGllLCBpc19zeW1ib2xfZGllKTogTmV3IGZucy4KCShjb21wdXRlX3NlY3Rpb25fcHJlZml4LCBhc3NpZ25fc3ltYm9sX25hbWVzKTogTmV3IGZucy4KCShnZW5faW50ZXJuYWxfc3ltLCBvdXRwdXRfZGllX3N5bWJvbCwgb3V0cHV0X3N5bWJvbGljX3JlZik6IE5ldyBmbnMuCgkob3V0cHV0X2RpZSk6IENhbGwgb3V0cHV0X2RpZV9zeW1ib2wgYW5kIEFUX3JlZl9leHRlcm5hbC4KCShvdXRwdXRfY29tZGF0X2NvbXBfdW5pdCk6IE5ldyBmbiwgc3BsaXQgb3V0IGZyb20uLi4KCShkd2FyZjJvdXRfZmluaXNoKTogLi4uaGVyZS4gIEFsc28gY2FsbCBhZGRfc2libGluZ19hdHRyaWJ1dGVzIGZvcgoJc2Vjb25kYXJ5IENVcy4KCShvdXRwdXRfcHVibmFtZXMsIG91dHB1dF9hcmFuZ2VzKTogQWJvcnQgaWYgd2Ugc2VlIGVudHJpZXMgZnJvbQoJc2Vjb25kYXJ5IENVcy4KCSogdG9wbGV2Lmg6IERlY2xhcmUgZmlsZV9uYW1lX25vbmRpcmVjdG9yeS4KCSogdG9wbGV2LmMgKGZpbGVfbmFtZV9ub25kaXJlY3RvcnkpOiBOZXcgZm4sIG1vdmVkIGZyb20gQysrIGZyb250ZW5kLgoJKHJlc3Rfb2ZfdHlwZV9jb21waWxhdGlvbik6IENhbGwgZHdhcmYyb3V0X2RlY2wgaWYgYXQgdG9wbGV2ZWwuCgkoZGVidWdfc3RhcnRfc291cmNlX2ZpbGUpOiBDYWxsIGR3YXJmMm91dF9zdGFydF9zb3VyY2VfZmlsZQoJcmVnYXJkbGVzcyBvZiBkZWJ1ZyB2ZXJib3NpdHkuCgkoZGVidWdfZW5kX3NvdXJjZV9maWxlKTogU2ltaWxhcmx5LgoJKiB0cmVlLmg6IERlY2xhcmUgY2xlYW5fc3ltYm9sX25hbWUuCgkqIHRyZWUuYyAoY2xlYW5fc3ltYm9sX25hbWUpOiBTcGxpdCBvdXQgZnJvbS4uLgoJKGdldF9maWxlX2Z1bmN0aW9uX25hbWVfbG9uZyk6IC4uLmhlcmUuCgoJKiBkd2FyZjJvdXQuYyAobmV3X2xvY19kZXNjcik6IFVzZSBjYWxsb2MuCgkoc3BsaWNlX2NoaWxkX2RpZSk6IFJlbW92ZSB0aGUgZGllIGZyb20gdGhlIHJpZ2h0IHBhcmVudC4KCShnZW5fc3RydWN0X29yX3VuaW9uX2RpZSk6IERvbid0IGFkZCBBVF9uYW1lIHRvIGEgc3BlY2lmaWNhdGlvbiBESUUuCgpNb24gQXVnIDI4IDE5OjAyOjEzIDIwMDAgIFJpY2hhcmQgS2VubmVyICA8a2VubmVyQHZsc2kxLnVsdHJhLm55dS5lZHU+CgoJKiB0b3BsZXYuYyAoZGVjb2RlX2dfb3B0aW9uKTogRG9uJ3QgZ2l2ZSB3YXJuaW5nIGZvciB1bmtub3duIC1nCglvcHRpb247IHJldHVybiAwIGluc3RlYWQuCgkobWFpbik6IElmIC1nIG9wdGlvbiBpcyBub3QgcmVjb2duaXplZCBieSBmcm9udCBlbmQgb3IKCWxhbmd1YWdlLWluZGVwZW5kZW50IGNvZGUsIGdpdmUgd2FybmluZy4KCjIwMDAtMDgtMjggIEdyZWcgTWNHYXJ5ICA8Z3JlZ0BtY2dhcnkub3JnPgoKCSogY29uZmlnL2kzODYvaTM4Ni1wcm90b3MuaCAoaXg4Nl9leHBhbmRfY29tcGFyZSk6IEFkZCBleHRlcm4gZGVjbC4KCSogY29uZmlnL2kzODYvaTM4Ni5jIChpeDg2X2V4cGFuZF9jb21wYXJlKTogUmVtb3ZlIGBzdGF0aWMnLgoJKiBjb25maWcvaTM4Ni9pMzg2Lm1kICh0cmFwLCBjb25kaXRpb25hbF90cmFwKTogTmV3IGluc24gJiBleHBhbmQuCgoyMDAwLTA4LTI3ICBHcmVnIE1jR2FyeSAgPGdyZWdAbWNnYXJ5Lm9yZz4KCgkqIGNwcGxleC5jIChwYXJzZV9zdHJpbmcpOiBEb24ndCBsb29rIGZvciBiYWNrc2xhc2gKCWJlZm9yZSBmaXJzdCBjaGFyIGluIGBuYW1lYnVmJy4KCSogbG9vcC5jIChzdHJlbmd0aF9yZWR1Y2UpOiBTa2lwIE5PVEVzLgoKMjAwMC0wOC0yNyAgSmFzb24gTWVycmlsbCAgPGphc29uQHJlZGhhdC5jb20+CgoJKiBjLWRlY2wuYyAoZHVwbGljYXRlX2RlY2xzKTogRG9uJ3Qgc2V0IFRSRUVfU1RBVElDIG9yIGNsZWFyCglERUNMX0VYVEVSTkFMIG9uIGEgbG9jYWwgZXh0ZXJuLiAgRG9uJ3Qgc2V0IERFQ0xfSUdOT1JFRF9QIG9yCglUUkVFX0FTTV9XUklUVEVOLCBlaXRoZXIuCgkoZmluaXNoX2RlY2wpOiBBZGp1c3QuCgoyMDAwLTA4LTI4ICBQaGlsaXBwIFRob21hcyAgPHB0aG9tYXNAc3VzZS5kZT4KCgkqIEFCT1VULUdDQy1OTFM6IFJlbW92ZSBnZXR0ZXh0IHBhdGNoZXMgZnJvbSBQYXVsIEVnZ2VydCBhcwoJdGhleSBoYXZlIGJlZW4gaW5jb3Jwb3JhdGVkIGludG8gdGhlIGdldHRleHQgQ1ZTLiBDaGFuZ2UgdGhlIHRleHQgdG8KCXJlZmxlY3QgdGhlIGN1cnJlbnQgc3RhdHVzIG9mIE5MUy4gQWRkIGluc3RydWN0aW9ucyBmb3IgYWNjZXNzaW5nCgl0aGUgZ2V0dGV4dCBDVlMgYW5kIGFkZCB0aGUgcGF0Y2ggZnJvbSBNYXJ0aW4gdi4gTG9ld2lzLgoKMjAwMC0wOC0yNyAgR2VvZmYgS2VhdGluZyAgPGdlb2Zma0BjeWdudXMuY29tPgoKCSogY29uZmlnL3JzNjAwMC9yczYwMDAubWQgKG1vdmRpX2ludGVybmFsNjQrNSk6IE1ha2UgU1VCUkVHLXNhZmUKCWJ5IHVzaW5nIGdlbl9sb3dwYXJ0X2NvbW1vbi4KCShtb3ZkaV9pbnRlcm5hbDY0KzYpOiBMaWtld2lzZS4KCjIwMDAtMDgtMjYgIEFsZXhhbmRyZSBPbGl2YSAgPGFvbGl2YUByZWRoYXQuY29tPgoKCSogdG0udGV4aSAoRklOSV9TRUNUSU9OX0FTTV9PUCwgQ1JUX0NBTExfU1RBVElDX0ZVTkNUSU9OKToKCURvY3VtZW50LgoKCSogY29uZmlnL21uMTAzMDAvbW4xMDMwMC5oIChEQlhfUkVHSVNURVJfTlVNQkVSKTogUmVtYXAgcmVnaXN0ZXIKCW51bWJlcnMgdG8gdGhlIHJhbmdlcyB1c2VkIGJ5IEdEQi4KCjIwMDAtMDgtMjUgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgoJKiBjb25maWcvaWE2NC9pYTY0LmggKHN0cnVjdCBtYWNoaW5lX2Z1bmN0aW9uKTogQWRkIG5fdmFyYXJncy4KCSogY29uZmlnL2lhNjQvaWE2NC5jIChpYTY0X2NvbXB1dGVfZnJhbWVfc2l6ZSk6IFVzZSBpdC4KCShpYTY0X2V4cGFuZF9wcm9sb2d1ZSk6IExpa2V3aXNlLgoJKGlhNjRfc2V0dXBfaW5jb21pbmdfdmFyYXJncyk6IFNldCBpdC4gIFByb3Blcmx5IHNraXAgdGhlIGN1cnJlbnQKCWFyZ3VtZW50IGZvciBzdGRhcmdzLgoKMjAwMC0wOC0yNSAgSmFzb24gTWVycmlsbCAgPGphc29uQHJlZGhhdC5jb20+CgoJKiBpbnRlZ3JhdGUuYyAoZXhwYW5kX2lubGluZV9mdW5jdGlvbik6IFB1bGwgb3V0IHRoZSBvcmlnaW5hbCBkZWNsLgoKMjAwMC0wOC0yNSAgSmltIFdpbHNvbiAgPHdpbHNvbkBjeWdudXMuY29tPgoKCSogY3NlLmMgKGNzZV9pbnNuKTogRG9uJ3QgcGFzcyBsYWJlbCBzdWJ0cmFjdGlvbiB0byBmb3JjZV9jb25zdF9tZW0uCgoJKiBmdW5jdGlvbi5jIChnZW5fbWVtX2FkZHJlc3NvZik6IENsZWFyIE1FTV9BTElBU19TRVQgaWYgbm8gZGVjbC4KCjIwMDAtMDgtMjUgIEdyZWcgTWNHYXJ5ICA8Z3JlZ0BtY2dhcnkub3JnPgoKCSogZmxvdy5jIChkdW1wX2VkZ2VfaW5mbyk6IFVzZSBBUlJBWV9TSVpFLgoJKiBjb25maWcvYWxwaGEvYWxwaGEuYyAoYWxwaGFfZXhwYW5kX2Jsb2NrX21vdmUpOiBMaWtld2lzZS4KCjIwMDAtMDgtMjUgIFJpY2hhcmQgRWFybnNoYXcgIDxyZWFybnNoYUBhcm0uY29tPgoKCSogYXJtLmggKFNUUlVDVF9WQUxVRSk6IERlZmluZSB0byAwLCBub3QgTlVMTC4KCkZyaSBBdWcgMjUgMTI6NTI6NDkgRURUIDIwMDAgIEpvaG4gV2VobGUgIChqb2huQGZlaXRoLmNvbSkKCgkqIGkzODYuYyAoaXg4Nl9maW5kX2Jhc2VfdGVybSk6IE5ldy4KCSogaTM4Ni1wcm90b3MuaCAoaXg4Nl9maW5kX2Jhc2VfdGVybSk6IFByb3RvdHlwZS4KCSogaTM4Ni5oIChGSU5EX0JBU0VfVEVSTSk6IERlZmluZS4KCSogYWxpYXMuYyAoZmluZF9iYXNlX3Rlcm0pOiBVc2UgaXQuCgkqIHRtLnRleGkgKEZJTkRfQkFTRV9URVJNKTogRG9jdW1lbnQgaXQuCgoJKiBhbGlhcy5jICh0cnVlX2RlcGVuZGVuY2UsIHdyaXRlX2RlcGVuZGVuY2VfcCk6IFVuY2hhbmdpbmcKCW1lbW9yeSBjYW4ndCBjb25mbGljdCB3aXRoIG5vbi11bmNoYW5naW5nIG1lbW9yeS4KCgkqIGFsaWFzLmMgKG1lbXJlZnNfY29uZmxpY3RfcCk6IEEgQkxLbW9kZSByZWZlcmVuY2UKCXRvIGEgc3ltYm9sIChvciBDT05TVF9JTlQgYWRkcmVzcykgYWx3YXlzIGNvbmZsaWN0cwoJd2l0aCBhIHJlZmVyZW5jZSB0byBhbm90aGVyIHN5bWJvbC4KCjIwMDAtMDgtMjUgIEpvc2VwaCBTLiBNeWVycyAgPGpzbTI4QGNhbS5hYy51az4KCgkqIGMtY29tbW9uLmMgKHRpbWVfY2hhcl90YWJsZSk6IERvbid0IGFsbG93IHdpZHRoIGFuZCBmbGFncyB3aXRoCgkieiIgZm9ybWF0LgoKMjAwMC0wOC0yNSAgSmFrdWIgSmVsaW5layAgPGpha3ViQHJlZGhhdC5jb20+CgoJKiBjb25maWcvaTM4Ni9pMzg2LmMgKGl4ODZfZXhwYW5kX2JyYW5jaCk6IFRyZWF0IEdFIGFuZCBHRVUgdGhlIHNhbWUKCXdheSBhcyBMVCBhbmQgTFRVIHdoZW4gdGhlIHNlY29uZCBvcGVyYW5kIGhhcyAwIGluIGxvdyB3b3JkLgoKMjAwMC0wOC0yNiAgTWljaGFlbCBIYXllcyAgPG1oYXllc0BjeWdudXMuY29tPgoKCSogYmFzaWMtYmxvY2suaCAoc3RydWN0IGxvb3ApOiBSZW5hbWUgYGV4aXRzJyBmaWVsZCB0bwoJYGV4aXRfZWRnZXMnLiAgQWRkIGBlbnRyeV9lZGdlcycgYW5kIGBudW1fZW50cmllcycgZmllbGRzLgoKCSogZmxvdy5jIChmbG93X2xvb3BfZXhpdF9lZGdlc19maW5kKTogUmVuYW1lIGZyb20gZmxvd19sb29wX2V4aXRzX2ZpbmQuCgkoZmxvd19sb29wX2VudHJ5X2VkZ2VzX2ZpbmQpOiBBZGQuCgkoZmxvd19lZGdlX2xpc3RfcHJpbnQpOiBSZW5hbWUgZnJvbSBmbG93X2V4aXRzX3ByaW50LgoJKGZsb3dfbG9vcHNfZmluZCk6IENhbGwgZmxvd19sb29wX2VudHJ5X2VkZ2VzX2ZpbmQuCgkoZmxvd19sb29wX2R1bXApOiBEdW1wIGVudHJ5X2VkZ2VzIGxpc3QuCgkoZmxvd19sb29wc19mcmVlKTogRnJlZSBlbnRyeV9lZGdlcy4KCjIwMDAtMDgtMjYgIE1pY2hhZWwgSGF5ZXMgIDxtaGF5ZXNAY3lnbnVzLmNvbT4KCgkqIGxvb3AuYyAobG9vcF9kdW1wX2F1eCwgZGVidWdfbG9vcCk6IE5ldyBmdW5jdGlvbnMuCgkoTE9PUF9CTE9DS19OVU1fMSwgTE9PUF9CTE9DS19OVU0sIExPT1BfSU5TTl9VSUQpOiBOZXcgbWFjcm9zLgoKCSogZmxvdy5jIChmbG93X2xvb3BzX2R1bXApOiBBZGQgY2FsbGJhY2sgcGFyYW1ldGVyLgoJKGZsb3dfbG9vcF9kdW1wKTogQWRkIGNhbGxiYWNrIHBhcmFtZXRlciBhbmQgY2FsbCBpdC4gIE1vdmUKCWxvb3Agbm90ZSBkZWJ1Z2dpbmcgY29kZSB0byBsb29wX2R1bXBfYXV4LgoKCSogYmFzaWMtYmxvY2suaCAoZmxvd19sb29wX2R1bXApOiBBZGQgY2FsbGJhY2sgcGFyYW1ldGVyCgkoZmxvd19sb29wc19kdW1wKTogTGlrZXdpc2UuCgoJKiB0b3BsZXYuYyAocmVzdF9vZl9jb21waWxhdGlvbik6IEFkZCBOVUxMIGNhbGxiYWNrIGZ1bmN0aW9uIHBvaW50ZXIKCXRvIGNhbGwgdG8gZmxvd19sb29wc19kdW1wLgoKMjAwMC0wOC0yNiAgTWljaGFlbCBIYXllcyAgPG1oYXllc0BjeWdudXMuY29tPgoKCSogbG9vcC5jIChjb3VudF9sb29wX3JlZ3Nfc2V0KTogUmVwbGFjZSBzdGFydCBhbmQgZW5kIGFyZ3VtZW50cwoJd2l0aCBsb29wIGFyZ3VtZW50LiAgQWxsIGNhbGxlcnMgdWRhdGVkLgoKMjAwMC0wOC0yNiAgTWljaGFlbCBIYXllcyAgPG1oYXllc0BjeWdudXMuY29tPgoKCSogbG9vcC5jIChjb25zdGFudF9oaWdoX2J5dGVzKTogRGVsZXRlLgoKMjAwMC0wOC0yNiAgTWljaGFlbCBIYXllcyAgPG1oYXllc0BjeWdudXMuY29tPgoKCSogbG9vcC5jIChwcmVzY2FuX2xvb3ApOiBNb3ZlIGNoZWNrcyBmb3IgTk9URV9JTlNOX0xPT1BfQ09OVAoJYW5kIE5PVEVfSU5TTl9MT09QX1ZUT1AgdG8uLi4KCShmaW5kX2FuZF92ZXJpZnlfbG9vcHMpIC4uLmhlcmUuCgpGcmkgQXVnIDI1IDA0OjIxOjEzIDIwMDAgIEFsZXhhbmRyZSBPbGl2YSAgPGFvbGl2YUByZWRoYXQuY29tPgoKCSogY3J0c3R1ZmYuYyAoQ1JUX0NBTExfU1RBVElDX0ZVTkNUSU9OKTogRGVmaW5lIGRlZmF1bHQuCgkoZmluaV9kdW1teSwgaW5pdF9kdW1teSk6IFVzZSBpdC4KCkZyaSAyNS1BdWctMjAwMCAwODowMzoyNyBCU1QgIE5laWwgQm9vdGggIDxOZWlsQkBlYXJ0aGxpbmcubmV0PgoKCSogY3BwbGV4LmMgKGlzX21hY3JvX2Rpc2FibGVkKTogQ2FsbGVyIGhhcyBhbHJlYWR5IGNoZWNrZWQKCXRoYXQgd2UncmUgbm90IGEgcHJlcHJvY2Vzc2VkIGZpbGUuCgoyMDAwLTA4LTI0ICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogTWFrZWZpbGUuaW4gKENfQU5EX09CSkNfT0JKUyk6IFJlbW92ZSBjLWl0ZXJhdGUuby4KCShjLWl0ZXJhdGUubyk6IFJlbW92ZSB0YXJnZXQuCgkqIGdjYy9jLWNvbW1vbi5oIChlbnVtIHJpZCk6IFJlbW92ZSBSSURfSVRFUkFUT1IuCgkqIGdjYy9jLWRlY2wuYyAoaW5pdF9kZWNsX3Byb2Nlc3NpbmcpOiBSZW1vdmUgY2FsbCB0byBpbml0X2l0ZXJhdG9ycy4KCShmaW5pc2hfZGVjbCk6IERvbid0IGhhbmRsZSBpdGVyYXRvcnMuCgkoZ3Jva2RlY2xhcmF0b3IpOiBMaWtld2lzZS4KCSogZ2NjL2MtcGFyc2UuZ3BlcmY6IFJlbW92ZSBfX2l0ZXJhdG9yIGFuZCBfX2l0ZXJhdG9yX18ga2V5d29yZHMuCgkqIGdjYy9jLWdwZXJmLmg6IFJlZ2VuZXJhdGVkLgoJKiBnY2MvYy1pdGVyYXRlLmM6IFJlbW92ZWQuCgkqIGdjYy9jLWxleC5jIChpbml0X2xleCk6IERvbid0IGhhbmRsZSBpdGVyYXRvcnMuCgkqIGdjYy9jLXBhcnNlLmluIChwcmltYXJ5KTogUmVtb3ZlIHBvcF9pdGVyYXRvcl9zdGFjayBjYWxsLgoJKGNvbXBzdG10X3ByaW1hcnlfc3RhcnQpOiBSZW1vdmUgcHVzaF9pdGVyYXRvcl9zdGFjayBjYWxsLgoJKHN0bXQpOiBEb24ndCBhbGxvdyBpdGVyYXRvciBzdGF0ZW1lbnRzLiAgUmVwbGFjZSBpdGVyYXRvcl9leHBhbmQKCXdpdGggZXhwYW5kX2V4cHJfc3RtdC4KCShhbGxfaXRlcl9zdG10KTogUmVtb3ZlLgoJKGFsbF9pdGVyX3N0bXRfc2ltcGxlKTogTGlrZXdpc2UuCgkoYWxsX2l0ZXJfc3RtdF93aXRoX2RlY2wpOiBMaWtld2lzZS4KCSogZ2NjL2MtdHJlZS5oIChJVEVSQVRPUl9QKTogUmVtb3ZlLgoJKElURVJBVE9SX0JPVU5EX1ApOiBMaWtld2lzZS4KCShpbml0X2l0ZXJhdG9ycyk6IFJlbW92ZSBkZWNsYXJhdGlvbi4KCShpdGVyYXRvcl9leHBhbmQpOiBMaWtld2lzZS4KCShpdGVyYXRvcl9mb3JfbG9vcF9zdGFydCk6IExpa2V3aXNlLgoJKGl0ZXJhdG9yX2Zvcl9sb29wX2VuZCk6IExpa2V3aXNlLgoJKGl0ZXJhdG9yX2Zvcl9sb29wX3JlY29yZCk6IExpa2V3aXNlLgoJKHB1c2hfaXRlcmF0b3Jfc3RhY2spOiBMaWtld2lzZS4KCShwb3BfaXRlcmF0b3Jfc3RhY2spOiBMaWtld2lzZS4KCSogZ2NjL2MtdHlwZWNrLmMgKGRlY2xfY29uc3RhbnRfdmFsdWUpOiBEb24ndCBjaGVjayBJVEVSQVRPUl9QLgoJKHJlYWRvbmx5X3dhcm5pbmcpOiBMaWtld2lzZS4KCSogZ2NjL3RyZWUuaCAoSVRFUkFUT1JfQk9VTkRfUCk6IERvbid0IG1lbnRpb24gaXQuCgoyMDAwLTA4LTI0ICBKaW0gV2lsc29uICA8d2lsc29uQGN5Z251cy5jb20+CgoJKiBjLWNvbW1vbi5jIChkZWNsX2F0dHJpYnV0ZXMsIGNhc2UgQV9BTElHTik6IFJldmVydCBsYXN0IGNoYW5nZS4KCUNvcHkgdHlwZSBpbiBhIFRZUEVfREVDTCwganVzdCBsaWtlIHB1c2hkZWNsIGRvZXMuCgoyMDAwLTA4LTI0ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEBjeWdudXMuY29tPgoKCSogdG9wbGV2LmMgKG1haW4pOiBFbmFibGUgZmxhZ19yZW9yZGVyX2Jsb2NrcyBhdCAtTzIuCgoyMDAwLTA4LTI0ICBaYWNrIFdlaW5iZXJnICA8emFja0B3b2xlcnkuY3VtYi5vcmc+CgoJKiBnZ2MtcGFnZS5jIChhbGxvY19wYWdlKTogSWYgSEFWRV9NTUFQX0FOWVdIRVJFIGFuZCB3ZSdyZQoJYXNrZWQgZm9yIG9uZSBwYWdlLCBhbGxvY2F0ZSBHR0NfUVVJUkVfU0laRSBvZiB0aGVtIGFuZCBwdXQKCXRoZSBleHRyYXMgb24gdGhlIGZyZWUgbGlzdC4KCShyZWxlYXNlX3BhZ2VzKTogQ2xlYW4gdXAuCgkoZ2djX3NldF9tYXJrKTogRG9uJ3QgYWRqdXN0IEcuYWxsb2NhdGVkIGhlcmUuLi4KCShzd2VlcF9wYWdlcyk6IC4uLiBkbyBpdCBoZXJlLgoKMjAwMC0wOC0yNCAgWmFjayBXZWluYmVyZyAgPHphY2tAd29sZXJ5LmN1bWIub3JnPgoKCSogY3BwZmlsZXMuYyAocmVhZF9pbmNsdWRlX2ZpbGUpOiBSZWFycmFuZ2UgaW5pdGlhbGl6YXRpb25zLgoKMjAwMC0wOC0yNCAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAY3lnbnVzLmNvbT4KCgkqIHN0bXQuYyAoZXhwYW5kX2FzbV9vcGVyYW5kcyk6IFRyZWF0IEVYVFJBX0NPTlNUUkFJTlQgbGlrZSBnIG9yIFguCgoJKiBjb25maWcvaWE2NC9pYTY0LXByb3Rvcy5oOiBVcGRhdGUuCgkqIGNvbmZpZy9pYTY0L2lhNjQuYyAoZ3JfcmVnaXN0ZXJfb3BlcmFuZCk6IE5ldy4KCShmcl9yZWdpc3Rlcl9vcGVyYW5kLCBncmZyX3JlZ2lzdGVyX29wZXJhbmQpOiBOZXcuCgkoZ3Jfbm9uaW1tZWRpYXRlX29wZXJhbmQsIGdyZnJfbm9uaW1tZWRpYXRlX29wZXJhbmQpOiBOZXcuCgkoZ3Jmcl9yZWdfb3JfOGJpdF9vcGVyYW5kKTogTmV3LgoJKGdyX3JlZ19vcl8wX29wZXJhbmQpOiBSZW5hbWUgZnJvbSByZWdfb3JfMF9vcGVyYW5kIGFuZAoJdXNlIGdyX3JlZ2lzdGVyX29wZXJhbmQuCgkoZ3JfcmVnX29yXzViaXRfb3BlcmFuZCwgZ3JfcmVnX29yXzZiaXRfb3BlcmFuZCk6IExpa2V3aXNlLgoJKGdyX3JlZ19vcl84Yml0X29wZXJhbmQsIGdyX3JlZ19vcl84Yml0X2FkanVzdGVkX29wZXJhbmQpOiBMaWtld2lzZS4KCShncl9yZWdfb3JfOGJpdF9hbmRfYWRqdXN0ZWRfb3BlcmFuZCk6IExpa2V3aXNlLgoJKGdyX3JlZ19vcl8xNGJpdF9vcGVyYW5kLCBncl9yZWdfb3JfMjJiaXRfb3BlcmFuZCk6IExpa2V3aXNlLgoJKGZyX3JlZ19vcl9mcDAxX29wZXJhbmQpOiBMaWtld2lzZS4KCShub3RfcG9zdGluY19tZW1vcnlfb3BlcmFuZCk6IE5ldy4KCShpYTY0X3NwbGl0X3RpbW9kZSk6IFJlbW92ZSB1bnVzZWQgdmFyaWFibGVzLgoJKHJ0eF9uZWVkc19iYXJyaWVyKTogQ2hlY2sgYXJndW1lbnRzIHRvIGNtcHhjaGcuCgkoYnVpbHRpbl9kZXNjcmlwdGlvbik6IFJlbW92ZS4KCShiZGVzY18yYXJnc2ksIGJkZXNjXzJhcmdkaSk6IFJlbW92ZS4KCShpYTY0X2luaXRfYnVpbHRpbnMpOiBEZWNsYXJlIGFsbCBidWlsdGlucyBkaXJlY3RseS4KCShpYTY0X2V4cGFuZF9mZXRjaF9hbmRfb3ApOiBSZXdyaXRlIHRvIGJlIGNhbGxlZCBmcm9tCglpYTY0X2V4cGFuZF9idWlsdGluIGRpcmVjdGx5LiAgVXNlIGV4cGFuZF9iaW5vcCBhbmQgY28uCgkoaWE2NF9leHBhbmRfb3BfYW5kX2ZldGNoKTogTGlrZXdpc2UuCgkoaWE2NF9leHBhbmRfY29tcGFyZV9hbmRfc3dhcCk6IExpa2V3aXNlLgoJKGlhNjRfZXhwYW5kX2Jpbm9wX2J1aWx0aW4pOiBSZW1vdmUuCgkoaWE2NF9leHBhbmRfbG9ja190ZXN0X2FuZF9zZXQpOiBOZXcuCgkoaWE2NF9leHBhbmRfbG9ja19yZWxlYXNlKTogTmV3LgoJKGlhNjRfZXhwYW5kX2J1aWx0aW4pOiBVc2UgdGhlbS4KCSogY29uZmlnL2lhNjQvaWE2NC5oIChDT05TVFJBSU5UX09LX0ZPUl9TKTogTmV3LgoJKEVYVFJBX0NPTlNUUkFJTlQpOiBVc2UgaXQuCgkoUFJFRElDQVRFX0NPREVTKTogVXBkYXRlLgoJKiBjb25maWcvaWE2NC9pYTY0Lm1kICgqKTogVXNlIGdyX3JlZ2lzdGVyX29wZXJhbmQgYW5kIGNvLgoJKG1mKTogSW5kaWNhdGUgdGhhdCB3ZSBzZXQgbWVtb3J5IGFzIHdlbGwgYXMgdXNlIGl0LgoJKGZldGNoYWRkX2FjcV9zaSk6IFNob3cgbWVtb3J5IGJlaW5nIG1vZGlmaWVkIGFzIHdlbGwuCgkoZmV0Y2hhZGRfYWNxX2RpLCBjbXB4Y2hnX2FjcV9zaSwgY21weGNoZ19hY3FfZGkpOiBMaWtld2lzZS4KCSh2YWxfY29tcGFyZV9hbmRfc3dhcF9zaSwgdmFsX2NvbXBhcmVfYW5kX3N3YXBfZGkpOiBSZW1vdmUuCgkobG9ja190ZXN0X2FuZF9zZXRfc2ksIGxvY2tfdGVzdF9hbmRfc2V0X2RpKTogUmVtb3ZlLgoJKGZldGNoX2FuZF9hZGRfc2ksIGZldGNoX2FuZF9zdWJfc2ksIGZldGNoX2FuZF9vcl9zaSk6IFJlbW92ZS4KCShmZXRjaF9hbmRfYW5kX3NpLCBmZXRjaF9hbmRfeG9yX3NpLCBmZXRjaF9hbmRfbmFuZF9zaSk6IFJlbW92ZS4KCShmZXRjaF9hbmRfYWRkX2RpLCBmZXRjaF9hbmRfc3ViX2RpLCBmZXRjaF9hbmRfb3JfZGkpOiBSZW1vdmUuCgkoZmV0Y2hfYW5kX2FuZF9kaSwgZmV0Y2hfYW5kX3hvcl9kaSwgZmV0Y2hfYW5kX25hbmRfZGkpOiBSZW1vdmUuCgkoYWRkX2FuZF9mZXRjaF9kaSwgc3ViX2FuZF9mZXRjaF9kaSwgb3JfYW5kX2ZldGNoX2RpKTogUmVtb3ZlLgoJKGFuZF9hbmRfZmV0Y2hfZGksIHhvcl9hbmRfZmV0Y2hfZGksIG5hbmRfYW5kX2ZldGNoX2RpKTogUmVtb3ZlLgoJKGFkZF9hbmRfZmV0Y2hfc2ksIHN1Yl9hbmRfZmV0Y2hfc2ksIG9yX2FuZF9mZXRjaF9zaSk6IFJlbW92ZS4KCShhbmRfYW5kX2ZldGNoX3NpLCB4b3JfYW5kX2ZldGNoX3NpLCBuYW5kX2FuZF9mZXRjaF9zaSk6IFJlbW92ZS4KCSogY29uZmlnL2lhNjQvaWE2NGludHJpbi5oICgqKTogQ2FzdCByZXN1bHQgdG8gdGhlIGFwcHJvcHJpYXRlCglyZXR1cm4gdHlwZS4gIFByZXR0eSBwcmludCBkZWZpbml0aW9ucy4KCjIwMDAtMDgtMjQgIEppbSBXaWxzb24gIDx3aWxzb25AY3lnbnVzLmNvbT4KCgkqIGNvbmZpZy9pYTY0L2lhNjQubWQgKG1vdmRpKTogRG9uJ3QgY2FsbCBnZW5fbW92ZGlfc3ltYm9saWMgaWYKCXdlIGhhdmUgYSBTWU1CT0xfUkVGIHdpdGggU1lNQk9MX1JFRl9GTEFHIHNldC4KCjIwMDAtMDgtMjQgIEphc29uIE1lcnJpbGwgIDxqYXNvbkByZWRoYXQuY29tPgoKCSogZHdhcmYyb3V0LmMgKEFUX2ZsYWcsIEFUX2ludCwgQVRfdW5zaWduZWQsIEFUX3N0cmluZywgQVRfcmVmLAoJQVRfbG9jLCBBVF9hZGRyLCBBVF9sYmwpOiBBYm9ydCBvbiB1bnN1aXRhYmxlIGlucHV0LgoJKGdldF9BVF9sb3dfcGMsIGdldF9BVF9oaV9wYywgZ2V0X0FUX3N0cmluZywgZ2V0X0FUX2ZsYWcsCglnZXRfQVRfdW5zaWduZWQsIGdldF9BVF9yZWYpOiBEb24ndCBjYWxsIHRoZW0gaWYgZ2V0X0FUIGZhaWxzLgoKMjAwMC0wOC0yNCAgR3JlZyBNY0dhcnkgIDxncmVnQG1jZ2FyeS5vcmc+CgoJKiBvcHRhYnMuYyAoaW5pdF9vcHRhYnMpOiBJbml0aWFsaXplIGZpeHRhYiwgZml4dHJ1bmN0YWIsIGZsb2F0dGFiLAoJYW5kIGV4dGVuZHRhYiB3aXRoaW4gdGhlaXIgcHJvcGVyIGFycmF5IGJvdW5kYXJpZXMuCgkqIGVtaXQtcnRsLmMgKGluaXRfZW1pdF9vbmNlKTogUGFzcyBgY29uc3RfdGlueV9ydHgnIHdpdGggYm91bmRzCglmb3IgdGhlIGVudGlyZSBhcnJheS4KCgkqIGNvbmZpZy9hcm0vYXJtLmMgKGFybV9vdmVycmlkZV9vcHRpb25zKTogVXNlIEFSUkFZX1NJWkUuCgkqIGNvbmZpZy9hbHBoYS9hbHBoYS5jIChhbHBoYV9sb29rdXBfeGZsb2F0aW5nX2xpYl9mdW5jKTogTGlrZXdpc2UuCgkqIGNvbmZpZy9hdnIvYXZyLmMgKG9yZGVyX3JlZ3NfZm9yX2xvY2FsX2FsbG9jKTogTGlrZXdpc2UuCgkqIGNvbmZpZy9mcjMwL2ZyMzAuYyAoZnIzMF9wcmludF9vcGVyYW5kKTogTGlrZXdpc2UuCgkqIGNvbmZpZy9pMzg2L2RndXguYyAob3V0cHV0X29wdGlvbnMpOiBMaWtld2lzZS4KCSogY29uZmlnL2kzODYvZGd1eC5oIChBU01fRklMRV9TVEFSVCk6IExpa2V3aXNlLgoJKiBjb25maWcvbTg4ay9tODhrLmMgKG91dHB1dF9vcHRpb25zKTogTGlrZXdpc2UuCgkqIGNvbmZpZy9tODhrL204OGsuaCAoQVNNX0ZJTEVfU1RBUlQpOiBMaWtld2lzZS4KCSogY29uZmlnL21jb3JlL21jb3JlLmMgKG1jb3JlX291dHB1dF9pbmxpbmVfY29uc3RfZm9yY2VkLAoJbGF5b3V0X21jb3JlX2ZyYW1lLCBoYW5kbGVfc3RydWN0c19pbl9yZWdzKTogTGlrZXdpc2UuCgkqIGNvbmZpZy9taXBzL21pcHMuYyAob3V0cHV0X2Jsb2NrX21vdmUpOiBMaWtld2lzZS4KCSogY29uZmlnL3JzNjAwMC9yczYwMDAuYyAocnM2MDAwX292ZXJyaWRlX29wdGlvbnMsCglyczYwMDBfZmlsZV9zdGFydCk6IExpa2V3aXNlLgoJKiBjb25maWcvc3BhcmMvc3BhcmMuYyAoc3BhcmNfYWRkX2djX3Jvb3RzKTogTGlrZXdpc2UuCgkqIGZpeGluYy9maXhmaXhlcy5jIChGSVhfVEFCTEVfQ1QpOiBMaWtld2lzZS4KCSogZml4aW5jL2ZpeHRlc3RzLmMgKFRFU1RfVEFCTEVfQ1QpOiBMaWtld2lzZS4KCSogYnVpbHRpbnMuYyAoZXhwYW5kX2J1aWx0aW5fc2V0am1wKTogTGlrZXdpc2UuCgkqIGV4cHIuYyAoc2FmZV9mcm9tX3ApOiBMaWtld2lzZS4KCSogZmxvdy5jIChsaWZlX2FuYWx5c2lzKTogTGlrZXdpc2UuCgkqIGZvbGQtY29uc3QuYyAoc2l6ZV9pbnRfdHlwZV93aWRlKTogTGlrZXdpc2UuCgkqIGdjYy5jICh0cmFuc2xhdGVfb3B0aW9ucywgaW5pdF9zcGVjLCBzZXRfc3BlYywgbWFpbik6IExpa2V3aXNlLgoJKiBnZW5hdHRydGFiLmMgKG1ha2VfbGVuZ3RoX2F0dHJzKTogTGlrZXdpc2UuCgkqIGdlbm9waW5pdC5jIChnZW5faW5zbik6IExpa2V3aXNlLgoJKiBnZW5yZWNvZy5jIChOVU1fS05PV05fUFJFRFMsIE5VTV9TUEVDSUFMX01PREVfUFJFRFMpOiBMaWtld2lzZS4KCSogZ2xvYmFsLmMgKGdsb2JhbF9hbGxvYyk6IExpa2V3aXNlLgoJKiBsb2NhbC1hbGxvYy5jIChmaW5kX2ZyZWVfcmVnKTogTGlrZXdpc2UuCgkqIG1pcHMtdGR1bXAuYyAocHJpbnRfc3ltYm9sKTogTGlrZXdpc2UuCgkqIG1pcHMtdGZpbGUuYyAocGFyc2VfZGVmLCBwYXJzZV9pbnB1dCk6IExpa2V3aXNlLgoJKiByZWxvYWQxLmMgKE5VTV9FTElNSU5BQkxFX1JFR1MpOiBMaWtld2lzZS4KCSogc3RtdC5jIChleHBhbmRfbmxfZ290b19yZWNlaXZlcik6IExpa2V3aXNlLgoJKiBzdG9yLWxheW91dC5jIChzZXRfc2l6ZXR5cGUpOiBMaWtld2lzZS4KCSogdmFyYXNtLmMgKGRlY29kZV9yZWdfbmFtZSk6IExpa2V3aXNlLgoJKiB0b3BsZXYuYyAoZGVjb2RlX2Zfb3B0aW9uLCBkZWNvZGVfV19vcHRpb24sCglzZXRfdGFyZ2V0X3N3aXRjaCwgcHJpbnRfc3dpdGNoX3ZhbHVlcyk6IExpa2V3aXNlLgoJKE5VTV9FTEVNKTogUmVtb3ZlIG1hY3JvLgoJKGRpc3BsYXlfaGVscCwgbWFpbik6IHMvTlVNX0VMRU0vQVJSQVlfU0laRS8KCjIwMDAtMDgtMjQgIEdyZWcgTWNHYXJ5ICA8Z3JlZ0BtY2dhcnkub3JnPgoKCSogdHJlZS5oIChlbnVtIHRyZWVfaW5kZXgpOiBOZXcgbWVtYmVyIGBUSV9NQUlOX0lERU5USUZJRVInLgoJKE1BSU5fTkFNRV9QLCBtYWluX2lkZW50aWZpZXJfbm9kZSk6IE5ldyBtYWNyb3MuCgkqIGMtY29tbW9uLmMgKGNfY29tbW9uX25vZGVzX2FuZF9idWlsdGlucyk6IEluaXQgbWFpbl9pZGVudGlmaWVyX25vZGUuCgkqIGMtZGVjbC5jIChzdGFydF9kZWNsLCBncm9rZGVjbGFyYXRvciwgc3RhcnRfZnVuY3Rpb24sCglzdG9yZV9wYXJtX2RlY2xzLCBmaW5pc2hfZnVuY3Rpb24pOiBVc2UgTUFJTl9OQU1FX1AuCgkqIGNvbmZpZy9hdnIvYXZyLmMgKGZ1bmN0aW9uX3Byb2xvZ3VlLCBmdW5jdGlvbl9lcGlsb2d1ZSk6IExpa2V3aXNlLgoJKiBjb25maWcvaTM4Ni9jeWd3aW4uaCAoU1VCVEFSR0VUX1BST0xPR1VFKTogTGlrZXdpc2UuCgkqIGNvbmZpZy9pMzg2L3dpbjMyLmggKFNVQlRBUkdFVF9QUk9MT0dVRSk6IExpa2V3aXNlLgoJKiBjb25maWcvcGRwMTEvcGRwMTEuYyAob3V0cHV0X2Z1bmN0aW9uX3Byb2xvZ3VlKTogTGlrZXdpc2UuCgoyMDAwLTA4LTI0ICBHcmVnIE1jR2FyeSAgPGdyZWdAbWNnYXJ5Lm9yZz4KCgkqIGNwcGZpbGVzLmMgKGFjdHVhbF9kaXJlY3RvcnkpOiBEb24ndCB3cml0ZSBiZXlvbmQgYGRpcicKCXdoZW4gaXQgY29udGFpbnMgIiIuCgkqIHJlYWwuYyAoYXNjdG9lZyk6IFN0YXkgd2l0aGluIGJvdW5kcyBvZiBldGVuc1tdW10uCgoyMDAwLTA4LTI0ICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBkZXBlbmRlbmNlLmMgKGRlcGVuZGVuY2Vfc3RyaW5nLCBkaXJlY3Rpb25fc3RyaW5nLAoJZHVtcF9vbmVfbm9kZSwgZHVtcF9ub2RlX2RlcGVuZGVuY2UpOiBIaWRlIHVudXNlZCBpZGVudGlmaWVycy4KCShnZXRfbG93X2JvdW5kLCBub3JtYWxpemVfY29lZmZpY2llbnRzKTogTWF0Y2ggZGVmaW5pdGlvbiB0bwoJc3RhdGljIHByb3RvdHlwZS4KCShnZXRfb25lX2NvZWZmaWNpZW50KTogSW5pdGlhbGl6ZSB2YXJpYWJsZXMgYHZhbHVlMF9pc19pZHgnIGFuZAoJYHZhbHVlMV9pc19pZHgnLgoJKHppdl90ZXN0LCBnY2RfdGVzdCk6IE1hcmsgcGFyYW1ldGVycyB3aXRoIEFUVFJJQlVURV9VTlVTRUQuCgkoeml2X3Rlc3QpOiBEZWxldGUgdmFyaWFibGUgYGlkeCcsIHVzZSBwYXJhbWV0ZXIgYHN1YicgaW5zdGVhZC4KCShkaXJlY3Rpb25fbWVyZ2UpOiBBdm9pZCBhdXRvbWF0aWMgYWdncmVnYXRlIGluaXRpYWxpemF0aW9uLgoJKGhhdmVfZGVwZW5kZW5jZV9wKTogVXNlIGBzcmMnIG5vdCBgZGVzdCcgdG8gc2V0IGBzcmNfaWR4Jy4KCUluaXRpYWxpemUgdmFyaWFibGVzIGBkZXN0X2lkeCcgYW5kIGBzcmNfaWR4Jy4KCShlbmRfZGVwZW5kZW5jZV9hbmFseXNpcyk6IEF2b2lkIEM4OSBzdHlsZSBmdW5jdGlvbiBkZWZpbml0aW9uLgoKMjAwMC0wOC0yNCAgSm9zZXBoIFMuIE15ZXJzICA8anNtMjhAY2FtLmFjLnVrPgoKCSogYy1jb21tb24uYyAodGltZV9jaGFyX3RhYmxlKTogRG9uJ3QgYWxsb3cgd2lkdGggd2l0aCAlRi4KCShjaGVja19mb3JtYXRfaW5mbyk6IERvbid0IGFsbG93ICJaIiBsZW5ndGggd2l0aCBzY2FuZi4KCjIwMDAtMDgtMjQgIEdhYnJpZWwgRG9zIFJlaXMgIDxnZHJAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGRpYWdub3N0aWMuYyAoZmluaXNoX2RpYWdub3N0aWMpOiBEZWZpbmUuCgkob3V0cHV0X2RvX3ByaW50Zik6IFVzZSB3cmFwX3RleHQgaW5zdGVhZCBvZiBvdXRwdXRfYWRkX3N0cmluZy4KCShkZWZhdWx0X3ByaW50X2Vycm9yX2Z1bmN0aW9uKTogQXZvaWQgZW1iZWRkZWQgJ1xuJy4KCgkqIGRpYWdub3N0aWMuaCAoZmx1c2hfZGlhZ25vc3RpY19idWZmZXIpOiBEZWNsYXJlLgoKMjAwMC0wOC0yMyAgQWxleGFuZHJlIE9saXZhICA8YW9saXZhQHJlZGhhdC5jb20+CgoJKiBkZXBlbmRlbmNlLmM6IFJlcGxhY2UgYFtdW10nIHdpdGggYFtdW01BWF9TVUJTQ1JJUFRTXScuCgoyMDAwLTA4LTIzICBIYW5zLVBldGVyIE5pbHNzb24gIDxocEBheGlzLmNvbT4KCgkqIE1ha2VmaWxlLmluIChHQ0NfUEFTU0VTKTogQWRkIHNwZWNzLgoKMjAwMC0wOC0yMyAgSmltIFdpbHNvbiAgPHdpbHNvbkBjeWdudXMuY29tPgoKCSogZnJhbWUuaCAoSUE2NF9VTldfRUhBTkRMRVIsIElBNjRfVU5XX1VIQU5ETEVSKTogTmV3LgoJKiBjb25maWcvaWE2NC9mcmFtZS1pYTY0LmMgKF9fZ2V0X3BlcnNvbmFsaXR5KTogUmV0dXJuIHplcm8gaWYgbmVpdGhlcgoJRUhBTkRMRVIgbm9yIFVIQU5ETEVSIGJpdCBpcyBzZXQuCgkoX19nZXRfZXhjZXB0X3RhYmxlKTogTGlrZXdpc2UuCgoyMDAwLTA4LTIzICBOaWNrIENsaWZ0b24gIDxuaWNrY0ByZWRoYXQuY29tPgoKCSogY29uZmlnL2FybS9saWIxZnVuY3MuYXNtOiBSZXBsYWNlIHVwcGVyIGNhc2UgY29uZGl0aW9uIGNvZGVzCgl3aXRoIGxvd2VyIGNhc2UgdmVyc2lvbnMuCgoJKiBjb25maWcvYXJtL2FybS5oIChTVFJVQ1RfVkFMVUUpOiBEZWZpbmUuCgkoU1RSVUNUX1ZBTFVFX1JFR05VTSk6IERlbGV0ZS4KCjIwMDAtMDgtMjMgIFphY2sgV2VpbmJlcmcgIDx6YWNrQHdvbGVyeS5jdW1iLm9yZz4KCgkqIGNwcGhhc2guaCAoSU5fSSk6IE5ldyBmbGFnIGZvciBkaXJlY3RpdmUgdGFibGUuCgkqIGNwcGxpYi5jIChESVJFQ1RJVkVfVEFCTEUpOiBNYXJrICNkZWZpbmUsICN1bmRlZiwgI2lkZW50LCBhbmQKCSNwcmFnbWEgd2l0aCBJTl9JLgoJKF9jcHBfY2hlY2tfZGlyZWN0aXZlKTogSWYgLWZwcmVwcm9jZXNzZWQsIGV4ZWN1dGUgZGlyZWN0aXZlcwoJbWFya2VkIHdpdGggSU5fSS4gIElzc3VlIG5vIHdhcm5pbmdzIGluIHRoaXMgY2FzZS4KCSogY3BwbGV4LmMgKF9jcHBfZ2V0X3Rva2VuKTogRXhwYW5kIG5vIG1hY3JvcyBpZiAtZnByZXByb2Nlc3NlZC4KCjIwMDAtMDgtMjMgIEpvc2VwaCBTLiBNeWVycyAgPGpzbTI4QGNhbS5hYy51az4KCgkqIGMtY29tbW9uLmMgKHByaW50X2NoYXJfdGFibGUpOiBBbGxvdyAnSScgZmxhZyB3aXRoICVkLCAlaSBhbmQKCSV1LgoJKGNoZWNrX2Zvcm1hdF9pbmZvKTogU3VwcG9ydCBwcmludGYgJ0knIGZsYWc7IHdhcm4gYWJvdXQgaXQgd2l0aAoJLXBlZGFudGljLgoKMjAwMC0wOC0yMyAgUmljaGFyZCBFYXJuc2hhdyAgKHJlYXJuc2hhQGFybS5jb20pCgoJKiBhcm0uYyAoYXJtX2V4cGFuZF9wcm9sb2d1ZSk6IEVuc3VyZSB0aGF0IHRoZSBzdGFjay1hZGp1c3RtZW50CgliYXJyaWVyIGNhbid0IGJlIGlnbm9yZWQgYnkgdGhlIGFsaWFzIGFuYWx5c2lzIGNvZGUuCgoyMDAwLTA4LTEyICBFbGkgWmFyZXRza2lpICA8ZWxpekBpcy5lbHRhLmNvLmlsPgoKCSogZml4aW5jL2luY2xoYWNrLmRlZiAoc3lzdjY4X3N0cmluZyk6IEZpeCB0aGUgU2VkIHNjcmlwdCBzbyBpdAoJd29ya3MgaW5zaWRlIGZpeGluY2wuCgpXZWQgQXVnIDIzIDA0OjU1OjQ4IDIwMDAgIEFsZXhhbmRyZSBPbGl2YSAgPGFvbGl2YUByZWRoYXQuY29tPgoKCSogc2ltcGxpZnktcnR4LmMgKHNpbXBsaWZ5X3J0eCk6IERvbid0IHBhc3MgVk9JRG1vZGUgdG8KCXNpbXBsaWZ5X3JlbGF0aW9uYWxfb3BlcmF0aW9uKCkgdW5sZXNzIGJvdGggb3BlcmFuZHMgYXJlIG9mCglWT0lEbW9kZS4KCSogY3NlLmMgKGZvbGRfcnR4KTogTGlrZXdpc2UuCgpUdWUgQXVnIDIyIDIzOjUzOjI3IEVEVCAyMDAwICBKb2huIFdlaGxlICAoam9obkBmZWl0aC5jb20pCgoJKiBydGxhbmFsLmMgKHJ0eF91bnN0YWJsZV9wKTogVGhlIHBpYyByZWdpc3RlciBpcyBzdGFibGUKCSh3aXRoaW4gb25lIGZ1bmN0aW9uKSBhbmQgdGhlIGFjdHVhbCBydHggc2hvdWxkIGJlIHVzZWQKCXdoZW4gY2hlY2tpbmcgdGhlIHJlZ2lzdGVycy4KCShydHhfYWRkcl9jYW5fdHJhcF9wKTogUGljIG1lbW9yeSBhZGRyZXNzZXMgY2FuJ3QgdHJhcC4KCgkqIGFsaWFzLmMgKHRydWVfZGVwZW5kZW5jZSwgd3JpdGVfZGVwZW5kZW5jZV9wKTogRml4CglidWcgaW4gcHJldmlvdXMgcGF0Y2guCgoJKiBpMzg2LmMgKGl4ODZfR09UX2FsaWFzX3NldCk6IE5ldy4KCShsZWdpdGltaXplX3BpY19hZGRyZXNzKTogVXNlIGl0LgoKCSogcnRsYW5hbC5jIChydHhfdW5zdGFibGVfcCk6IEFuIHVuY2hhbmdpbmcgTUVNIGlzCglvbmx5IHN0YWJsZSBpZiBpdHMgYWRkcmVzcyBpcyBzdGFibGUuCgkocnR4X3Zhcmllc19wKTogQW4gdW5jaGFuZ2luZyBNRU0gY2FuJ3QgdmFyeSBpZgoJaXRzIGFkZHJlc3MgZG9lc24ndCB2YXJ5LgoKMjAwMC0wOC0yMiAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogYy1wYXJzZS5pbiAodW5vcCArKTogUmVzdHJpY3QgLVd0cmFkaXRpb25hbCB3YXJuaW5ncyB0byB1c2VyIGNvZGUuCgoyMDAwLTA4LTIyICBKLiBEYXZpZCBBbmdsaW4gIDxkYXZlQGhpYXVseTEuaGlhLm5yYy5jYT4KCgkqIHZheC5oIChBU01fU1BFQyk6IFBhc3MgYC1KJyB0byBhc3NlbWJsZXIuCgkqIHgtdmF4LWdjYzogTmV3IGZpbGUgZm9yIGJvb3RzdHJhcHBpbmcgd2l0aCBnY2MuCgkqIHgtdmF4OiBVc2UgWF9DRkxBR1MgcmF0aGVyIHRoYW4gWF9DUFBGTEFHUyB0byBwYXNzIGAtSicuCgkqIGNvbmZpZ3VyZS5pbjogVXNlIHgtdmF4LWdjYyB3aXRoIGdjYy4KCSogY29uZmlndXJlOiBSZWJ1aWx0LgoKVHVlIEF1ZyAyMiAyMToyMTowNSAyMDAwICBKIm9ybiBSZW5uZWNrZSA8YW15bGFhckBjeWdudXMuY28udWs+CgoJKiB0b3BsZXYuYyAocmVzdF9vZl9jb21waWxhdGlvbik6IFJlYnVpbGQgbGFiZWwgbm90ZXMgYWZ0ZXIKCXBvc3QtcmVsb2FkIHNwbGl0dGluZyBwYXNzIGlmIG5ldyBsYWJlbHMgaGF2ZSBiZWVuIGNyZWF0ZWQuCgoyMDAwLTA4LTIyICBHYWJyaWVsIERvcyBSZWlzICA8Z2RyQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBkaWFnbm9zdGljLmggKG91dHB1dF9idWZmZXJfc3RhdGUpOiBOZXcgbWFjcm8uCgkqIGRpYWdub3N0aWMuYyAoZGlhZ25vc3RpY19mb3JfZGVjbCwgc29ycnksCglkZWZhdWx0X3ByaW50X2Vycm9yX2Z1bmN0aW9uLCBvdXRwdXRfZG9fdmVyYmF0aW0sCglyZXBvcnRfZGlhZ25vc3RpYywgcmVwb3J0X3Byb2JsZW1hdGljX21vZHVsZSk6IFVzZSBpdC4KCSh3cmFwX3RleHQpOiBUd2Vhay4KCShvdXRwdXRfZm9ybWF0KTogVXNlIHdyYXBfdGV4dCBpbnN0ZWFkIG9mIG1heWJlX3dyYXBfdGV4dC4KCjIwMDAtMDgtMjIgIE5pY2sgQ2xpZnRvbiAgPG5pY2tjQHJlZGhhdC5jb20+CgoJKiBjb25maWcvYXJtL2xpYjFmdW5jcy5hc20gKEFSTV9ESVZfTU9EX0JPRFkpOiBOZXcgbWFjcm8uCglDb21tb24gY29kZSBmb3IgQVJNIGRpdmlkZSBhbmQgbW9kdWx1cyBmdW5jdGlvbnMuCgkoVEhVTUJfRElWX01PRF9CT0RZKTogTmV3IG1hY3JvLiBUaHVtYiBlcXVpdmFsZW50IG9mCglBUk1fRElWX01PRF9CT0RZLgoJKEZVTkNfRU5EKTogTmV3IG1hY3JvOiBDb21tb24gY29kZSBhdCB0aGUgZW5kIG9mIHRoZSBkaXZpc2lvbiBhbmQKCW1vZHVsbyBmdW5jdGlvbnMuCgkoVEhVTUJfRlVOQ1RJT05fU1RBUlQpOiBOZXcgbWFjcm86ICBDb21tb24gY29kZSBhdCB0aGUgc3RhcnQgb2YKCVRodW1iIGZ1bmN0aW9ucy4KCShfX2RpdnNpMywgX191ZGl2c2kzLCBfX21vZHNpMywgX191bW9kc2kzKTogVXNlIG5ldyBtYWNyb3MuCgpUdWUgQXVnIDIyIDIwOjM0OjUyIDIwMDAgIEtheiBLb2ppbWEgPGtrb2ppbWFAcnIuaWlqNHUub3IuanA+CgoJKiBjb25maWcvc2gvc2gubWQgKGNtcGVxZGlfdCBzcGxpdHRlcik6IEZpeCBhIHJldmVyc2UgdGVzdGluZy4KCgkqIGNvbmZpZy9zaC9zaC5jIChwcmVwYXJlX3NjY19vcGVyYW5kcyk6IEFwcGx5IGZvcmNlX3JlZyB0bwoJc2hfY29tcGFyZV9vcDEgd2hlbiB0aGUgbW9kZSBpcyBESW1vZGUgYW5kIHNoX2NvbXBhcmVfb3AxIGlzbid0Cgljb25zdDBfcnR4LgoKMjAwMC0wOC0yMiAgTmljayBDbGlmdG9uICA8bmlja2NAcmVkaGF0LmNvbT4KCgkqIGNvbmZpZy9hcm0vbGliMWZ1bmNzLmFzbSAoX191bW9kc2kzKTogQmVmb3JlIHBlcmZvcm1pbmcgYW55CglyZXN0b3JhdGl2ZSBhZGRpdGlvbnMsIHRlc3QgZm9yIGJvdHRvbSBiaXRzIG9mIElQIGJlaW5nIHNldCwKCXJhdGhlciB0aGFuIHJlbHlpbmcgdXBvbiB0aGUgUk9ScyBub3QgbWF0Y2hpbmcuCgkoX19tb2RzaTMpOiBEaXR0by4KCjIwMDAtMDgtMjIgIERhdmlkIEVkZWxzb2huICA8ZWRlbHNvaG5AZ251Lm9yZz4KCgkqIGFpeC5oIChBU01fREVDTEFSRV9GVU5DVElPTl9OQU1FKTogQ2FsbCBuYW1lZF9zZWN0aW9uKCkgb3IKCXRleHRfc2VjdGlvbigpIGFzIGFwcHJvcHJpYXRlIGluc3RlYWQgb2YgZW1pdHRpbmcgdGV4dCBjc2VjdAoJcHNldWRvLW9wIGRpcmVjdGx5LgoJKFRFWFRfU0VDVElPTl9BU01fT1ApOiBPbmx5IHJlcXVpcmUgZGVmYXVsdCAzMi1iaXQgYWxpZ25tZW50LgoJKFVOSVFVRV9TRUNUSU9OKTogRGVmaW5lIG1hY3JvLgoJKEFTTV9PVVRQVVRfU0VDVElPTl9OQU1FKTogRGVmaW5lIG1hY3JvLgoJKiByczYwMDAuYyAocnM2MDAwX292ZXJyaWRlX29wdGlvbnMpOiBEaXNhYmxlIC1mZnVuY3Rpb24tc2VjdGlvbnMKCW9uIEFJWCBpZiBkZWJ1Z2dpbmcgYW5kIC1mZGF0YS1zZWN0aW9ucyBhbHdheXMuCgoyMDAwLTA4LTIyICBTdGV2ZW4gS2luZyAgPHN4a2luZ0B1c3dlc3QubmV0PgoKCSogY29uZmlnL2Zsb2F0LWkzODYuaCAoTERCTF9FUFNJTE9OKTogUmVtb3ZlIF9fY29udmVydF9sb25nX2RvdWJsZQoJbWFjaGluZXJ5LgoJKExEQkxfTUFYKTogU2FtZSBoZXJlLgoKMjAwMC0wOC0yMiAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAY3lnbnVzLmNvbT4KCgkqIGZsb3cuYyAodGlkeV9mYWxsdGhydV9lZGdlKTogVXBkYXRlIGItPmVuZCBwcm9wZXJseS4KCjIwMDAtMDgtMjIgIFN0YW4gQ294ICA8c2NveEByZWRoYXQuY29tPgoKCSogTWFrZWZpbGUuaW4gKE9CSlMpOiBBZGQgZGVwZW5kZW5jZS5vLgoJKiBkZXBlbmRlbmNlLmM6IE5ldyBmaWxlLgoKMjAwMC0wOC0yMiAgQWxleGFuZHJlIE9saXZhICA8YW9saXZhQHJlZGhhdC5jb20+LCBKb2huIERhdmlkIEFuZ2xpbiAgPGRhdmUuYW5nbGluQG5yYy5jYT4KCgkqIGNhbGxzLmMgKGNoZWNrX3NpYmNhbGxfYXJndW1lbnRfb3ZlcmxhcF8xKTogQWRqdXN0IGZvcgoJQVJHU19HUk9XX0RPV05XQVJELgoJKGNoZWNrX3NpYmNhbGxfYXJndW1lbnRfb3ZlcmxhcCk6IExpa2V3aXNlLgoKMjAwMC0wOC0yMiAgQWxleGFuZHJlIE9saXZhICA8YW9saXZhQHJlZGhhdC5jb20+CgoJKiBpbnZva2UudGV4aSAoU0ggT3B0aW9ucyk6IERvY3VtZW50IC1tNC1ub2ZwdSwKCS1tNC1zaW5nbGUtb25seSwgLW00LXNpbmdsZSwgLW00LCAtbWJpZ3RhYmxlLCAtbWZtb3ZkLAoJLW1oaXRhY2hpLCAtbW5vbWFjc2F2ZSwgLW1pc2l6ZSwgLW1wYWRzdHJ1Y3QsIC1tc3BhY2UuCgoyMDAwLTA4LTIyICBKb3NlcGggUy4gTXllcnMgIDxqc20yOEBjYW0uYWMudWs+CgoJKiBjLWNvbW1vbi5jIChjaGVja19mb3JtYXRfaW5mbyk6IEdpdmUgdGhlICdzb21lIGxvY2FsZXMnIHdhcm5pbmcKCWZvciBzdHJmdGltZSAlRXkgcmF0aGVyIHRoYW4gdGhlIHVuY29uZGl0aW9uYWwgJ29ubHkgbGFzdCAyIGRpZ2l0cwoJb2YgeWVhcicgb25lLgoKMjAwMC0wOC0yMiAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAY3lnbnVzLmNvbT4KCgkqIGFsaWFzLmMgKGluaXRfYWxpYXNfYW5hbHlzaXMpOiBEbyBub3QgcmVnaXN0ZXIKCXN0cnVjdF92YWx1ZV9pbmNvbWluZ19ydHggb3Igc3RhdGljX2NoYWluX3J0eCBhcyBwb2ludGluZwoJdG8gc3RhY2sgbWVtb3J5LgoKVHVlIEF1ZyAyMiAwMTo0NDo0MyAyMDAwICBKZWZmcmV5IEEgTGF3ICAobGF3QGN5Z251cy5jb20pCgoJKiBwcm90b2l6ZS5jIChtdW5nZV9jb21waWxlX3BhcmFtcyk6IEZpeCB0eXBvIGFuZCBmb3JtYXR0aW5nIGJ1Z2xldHMuCgoyMDAwLTA4LTIyICBHYWJyaWVsIERvcyBSZWlzICA8Z2RyQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBkaWFnbm9zdGljLmggKHJlcG9ydF9wcm9ibGVtYXRpY19tb2R1bGUpOiBEZWNsYXJlLgoJKiBkaWFnbm9zdGljLmMgKHJlcG9ydF9wcm9ibGVtYXRpY19tb2R1bGUpOiBOZXcgZnVuY3Rpb24uCgkocmVwb3J0X2Vycm9yX2Z1bmN0aW9uKTogVHdlYWsuCgpUdWUgQXVnIDIyIDAyOjMxOjI2IDIwMDAgIFJpY2hhcmQgS2VubmVyICA8a2VubmVyQHZsc2kxLnVsdHJhLm55dS5lZHU+CgoJKiBzdG10LmMgKGV4cGFuZF9nb3RvX2ludGVybmFsLCBmaXh1cF9nb3Rvcyk6IE9ubHkgY2hlY2sKCVRZUEVfUkVUVVJOU19TVEFDS19ERVBSRVNTRUQgZm9yIEZVTkNUSU9OX1RZUEUuCgoyMDAwLTA4LTIxICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEBjeWdudXMuY29tPgoKCSogZmxvdy5jIChjYWxjdWxhdGVfZ2xvYmFsX3JlZ3NfbGl2ZSk6IE1hcmsgZnJhbWUgcG9pbnRlciBsaXZlCglldmVyeXdoZXJlIGJlZm9yZSByZWxvYWQuCgoyMDAwLTA4LTIxICBKaW0gV2lsc29uICA8d2lsc29uQGN5Z251cy5jb20+CgoJKiByZWFsLmMgKGVyZWFsX2Zyb21faW50LCBlcmVhbF9mcm9tX3VpbnQsIHNpZ25pZmljYW5kX3NpemUpOiBIYW5kbGUKCUlOVEVMX0VYVEVOREVEX0lFRUVfRk9STUFULgoJKHRvZTY0KTogRGVsZXRlIElOVEVMX0VYVEVOREVEX0lFRUVfRk9STUFUIHN1cHBvcnQuICBVbmNvbmRpdGlvbmFsbHkKCWNsZWFyIGxhc3QgdHdvIGJ5dGVzIG9mIG91dHB1dCBGUCB2YWx1ZS4KCjIwMDAtMDgtMjEgIEdyYWhhbSBTdG90dCAgPGdyYWhhbXNAY3lnbnVzLmNvLnVrPgoKCSogY29uZmlnL2lhNjQvaWE2NC5oIChSRURPX1NFQ1RJT05fSU5GT19QKTogQ2hhbmdlIGRlY2wgdG8gREVDTC4KCjIwMDAtMDgtMjEgIEpha3ViIEplbGluZWsgIDxqYWt1YkByZWRoYXQuY29tPgoKCSogdW5yb2xsLmMgKGxvb3BfZmluZF9lcXVpdl92YWx1ZSk6IElmIHJldCBpcyBtb2RpZmllZCBiZXR3ZWVuCglpbnNuIGFuZCBsb29wX3N0YXJ0LCByZXQgbWlnaHQgbm90IGJlIGVxdWl2YWxlbnQgdG8gcmVnLgoKMjAwMC0wOC0yMSAgSm9zZXBoIFMuIE15ZXJzICA8anNtMjhAY2FtLmFjLnVrPgoKCSogYy1jb21tb24uYyAoaW5pdF9kb2xsYXJfZm9ybWF0X2NoZWNraW5nLAoJbWF5YmVfcmVhZF9kb2xsYXJfbnVtYmVyLCBmaW5pc2hfZG9sbGFyX2Zvcm1hdF9jaGVja2luZyk6IE5ldwoJZnVuY3Rpb25zLgoJKGRvbGxhcl9hcmd1bWVudHNfdXNlZCwgZG9sbGFyX2FyZ3VtZW50c19jb3VudCwKCWRvbGxhcl9maXJzdF9hcmdfbnVtLCBkb2xsYXJfbWF4X2FyZ191c2VkLCBkb2xsYXJfZm9ybWF0X3dhcm5lZCk6CglOZXcgdmFyaWFibGVzLgoJKGNoZWNrX2Zvcm1hdF9pbmZvKTogU3VwcG9ydCAkIGZvcm1hdHMgZm9yIHNjYW5mIGFuZCBwcmludGYgd2lkdGgKCWFuZCBwcmVjaXNpb24uICBBbHdheXMgaW5jcmVtZW50IGZvcm1hdF9jaGFycyB0byBhZHZhbmNlIHBhc3QgdGhlCgknKicgb2YgcHJlY2lzaW9uLCBub3QganVzdCB3aGVuIHRoZSBmb3JtYXQgcGFyYW1ldGVycyBhcmUKCWF2YWlsYWJsZSB0byBjaGVjay4KCjIwMDAtMDgtMjEgIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIG1pcHMuYyAoYmxvY2tfbW92ZV9sb29wLCBleHBhbmRfYmxvY2tfbW92ZSwKCWZ1bmN0aW9uX2FyZ19wYXJ0aWFsX25yZWdzLCBzYXZlX3Jlc3RvcmVfaW5zbnMsIGZ1bmN0aW9uX3Byb2xvZ3VlLAoJbWlwc19leHBhbmRfcHJvbG9ndWUsIFJBX01BU0spOiBBdm9pZCB1c2luZyB0aGUgYFUnIGludGVnZXIKCWNvbnN0YW50IHN1ZmZpeC4KCShmdW5jdGlvbl9hcmdfYWR2YW5jZSwgZnVuY3Rpb25fYXJnKTogTWF0Y2ggYXJndW1lbnQgdG8gZm9ybWF0CglzcGVjaWZpZXIgYCVwJy4KCjIwMDAtMDgtMjEgIE5peCAgPG5peEBlc3BlcmkuZGVtb24uY28udWs+CgoJKiBnY2MuYyAoZG9fc3BlY18xKTogSW1wbGVtZW50ICVqIHNwZWMgZmxhZy4KCVJlbW92ZSBkZWFkIGNvbW1lbnQuCgoJKiBnY2MudGV4aSAoVGhlIENvbmZpZ3VyYXRpb24gRmlsZSk6IERvY3VtZW50IEhPU1RfQklUX0JVQ0tFVC4KCSogc3lzdGVtLmggKEhPU1RfQklUX0JVQ0tFVCk6IERlZmF1bHQgdG8gIi9kZXYvbnVsbCIuCgkqIGNvbmZpZy9pMzg2L3htLWRvcy5oIChIT1NUX0JJVF9CVUNLRVQpOiBEZWZpbmUgYXMgIk5VTCIuCgkqIGNvbmZpZy9pMzg2L3htLW9zMi5oLCBjb25maWcvd2lubnQvd2lubnQuaDogTGlrZXdpc2UuCgoJKiBwcm90b2l6ZS5jIChtdW5nZV9jb21waWxlX3BhcmFtcyk6IFVzZSBIT1NUX0JJVF9CVUNLRVQgKGlmCgl3cml0YWJsZSkgaW5zdGVhZCBvZiBoYXJkY29kZWQgdmFsdWUuCgoJKiB0b3BsZXYuYyAoY29tcGlsZV9maWxlKTogT3V0cHV0IHRvIGEgZmlsZSBldmVuIGlmIC1mc3ludGF4LW9ubHkuCgoJKiBnY2MuYywgY29uZmlnL2kzODYveG0tZG9zLmgsIGNvbmZpZy9pMzg2L3htLW9zMi5oOiBLaWxsCglNS1RFTVBfRUFDSF9GSUxFLgoKCSogZ2NjLmMgKGNjMV9vcHRpb25zKTogRG8gbm90IHByb2Nlc3MgLW8gb3IgcnVuIHRoZSBhc3NlbWJsZXIgaWYKCS1mc3ludGF4LW9ubHkuCgkqIG9iamMvbGFuZy1zcGVjLmg6IExpa2V3aXNlLgoKMjAwMC0wOC0yMSAgRWxpIFphcmV0c2tpaSAgPGVsaXpAaXMuZWx0YS5jby5pbD4KCgkqIGZpeGluYy9maXhpbmNsLmMgKGZpeF93aXRoX3N5c3RlbSk6IFBpcGUgdGhlIG91dHB1dCBvZgoJImV4dGVybmFsIiBmaXhlcyB0aHJvdWdoIGBjYXQnLCB0byBhdm9pZCB0cnVuY2F0aW5nIHRoZSBpbnB1dAoJZmlsZSBieSByZWRpcmVjdGlvbi4KCjIwMDAtMDgtMjEgIEpha3ViIEplbGluZWsgIDxqYWt1YkByZWRoYXQuY29tPgoKCSogY29uZmlnL2kzODYvaTM4Ni5tZCAobGVhX2dlbmVyYWxfMSk6IENvcHkgaW5zbiBjb25kaXRpb24gdG8gc3BsaXQKCWNvbmRpdGlvbi4KCShsZWFfZ2VuZXJhbF8yLCBsZWFfZ2VuZXJhbF8zKTogTGlrZXdpc2UuCgoyMDAwLTA4LTIxICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBjLWRlY2wuYyAoZHVwbGljYXRlX2RlY2xzLCBkZWZpbmVfbGFiZWwpOiBSZXN0cmljdCAtV3RyYWRpdGlvbmFsCgl3YXJuaW5ncyB0byB1c2VyIGNvZGUuCgoJKiBjLWxleC5jIChyZWFkZXNjYXBlLCB5eWxleCk6IExpa2V3aXNlLgoKCSogYy10eXBlY2suYyAoc3RvcmVfaW5pdF92YWx1ZSwgcHJvY2Vzc19pbml0X2VsZW1lbnQpOiBMaWtld2lzZQoJKGNfZXhwYW5kX3N0YXJ0X2Nhc2UpOiBGb3JtYXQuCgoyMDAwLTA4LTE4ICBNYWNpZWogVy4gUm96eWNraSAgPG1hY3JvQGRzMi5wZy5nZGEucGw+CgoJKiBtaXBzL2xpbnV4LmggKExJTktfU1BFQyk6IFVzZSAlKGVuZGlhbl9zcGVjKS4KCgkqIG1pcHMvbWlwcy5oOiBDaGFuZ2UgTElOS0VSX0VORElBTl9TUEVDIHRvIEVORElBTl9TUEVDCglhbmQgbGlua2VyX2VuZGlhbl9zcGVjIHRvIGVuZGlhbl9zcGVjLgoJKEVORElBTl9TUEVDKTogQWRkICV7RUJ9IGFuZCAle0VMfS4KCShMSU5LX1NQRUMpOiBSZW1vdmUgJXtFQn0gYW5kICV7RUx9LgoJKEFTTV9TUEVDKTogTGlrZXdpc2UuICBVc2UgJShlbmRpYW5fc3BlYykuCgoyMDAwLTA4LTIxICBKb3NlcGggUy4gTXllcnMgIDxqc20yOEBjYW0uYWMudWs+CgoJKiBjLXRyZWUuaCAoZmxhZ19ob3N0ZWQpOiBNb3ZlIGRlY2xhcmF0aW9uIGZyb20gaGVyZS4uLgoJKiBjLWNvbW1vbi5oIChmbGFnX2hvc3RlZCk6IC4uLiB0byBoZXJlLgoJKGZsYWdfbm9uaXNvX2RlZmF1bHRfZm9ybWF0X2F0dHJpYnV0ZXMpOiBOZXcgZGVjbGFyYXRpb24uCgkqIGMtZGVjbC5jIChmbGFnX25vbmlzb19kZWZhdWx0X2Zvcm1hdF9hdHRyaWJ1dGVzKTogTmV3IHZhcmlhYmxlLgoJKGNfZGVjb2RlX29wdGlvbik6IFNldCBpdCBhcHByb3ByaWF0ZWx5IGZvciBvcHRpb25zIGNob29zaW5nCglsYW5ndWFnZSBzdGFuZGFyZCB2YXJpYW50LgoJKiBjLWNvbW1vbi5jIChpbml0X2Z1bmN0aW9uX2Zvcm1hdF9pbmZvKTogT25seSBwcm92aWRlIGRlZmF1bHQKCWZvcm1hdCBhdHRyaWJ1dGVzIGlmIGZsYWdfaG9zdGVkLiAgT25seSBwcm92aWRlIHRoZSBnZXR0ZXh0Cglmb3JtYXRzIGlmIGZsYWdfbm9uaXNvX2RlZmF1bHRfZm9ybWF0X2F0dHJpYnV0ZXMuICBVcGRhdGUKCWNvbW1lbnRzLgoJKGNoZWNrX2Zvcm1hdF9pbmZvKTogRGlzYWJsZSB0cmVhdG1lbnQgb2YgJWEgYXMgYSBzY2FuZiBmbGFnIGluCglDOTkgbW9kZS4KCjIwMDAtMDgtMjEgIEpvc2VwaCBTLiBNeWVycyAgPGpzbTI4QGNhbS5hYy51az4KCgkqIGMtY29tbW9uLmMgKHNjYW5fY2hhcl90YWJsZSk6IEFkZCAndycgdG8gZmxhZ3MgZm9yIGFsbCBmb3JtYXRzCglleGNlcHQgJ24nLgoJKGNoZWNrX2Zvcm1hdF9pbmZvKTogU2V0ICd3aWRlJyBmb3Igc2NhbmYgZm9ybWF0IHdpZHRocy4gIFdhcm4gZm9yCglhIHplcm8gc2NhbmYgd2lkdGguICBNYWtlIHRoZSBjaGVjayBmb3Igd3JpdGluZyBpbnRvIGEgY29uc3RhbnQKCW9iamVjdCBhdCB0aGUgZmlyc3QgbGV2ZWwgb2YgaW5kaXJlY3Rpb247IGF0IGxhdGVyIGxldmVscywgd2FybiBpZgoJYW55IHR5cGUgcXVhbGlmaWVycyBhcmUgZW5jb3VudGVyZWQuCgpNb24gQXVnIDIxIDA3OjQxOjEyIDIwMDAgIEplZmZyZXkgQSBMYXcgIChsYXdAY3lnbnVzLmNvbSkKCgkqIHJlbG9hZC5jIChyZWxvYWRfaW5uZXJfcmVnX29mX3N1YnJlZyk6IE5ldyBmdW5jdGlvbiBicm9rZW4gb3V0IG9mCglwdXNoX3JlbG9hZC4KCShwdXNoX3JlbG9hZCk6IFVzZSByZWxvYWRfaW5uZXJfcmVnX29mX3N1YnJlZy4KCShjb21iaW5lX3JlbG9hZHMpOiBEbyBub3QgY29tYmluZSByZWxvYWRzIGlmIHRoZSBpbnB1dCByZWxvYWQKCWlzIGEgU1VCUkVHIGluIHdoaWNoIHRoZSBpbm5lciBwYXJ0IHdpbGwgbmVlZCByZWxvYWRpbmcuCgoJKiBnbG9iYWwuYyAoZ2xvYmFsX2FsbG9jKTogQXZvaWQgcGFzc2luZyBkdW1wZmlsZSBhcmd1bWVudCB0bwoJcmVsb2FkIHJvdXRpbmVzLgoJKiB0b3BsZXYuYyAocmVzdF9vZl9jb21waWxhdGlvbik6IExpa2V3aXNlLgoJKiByZWxvYWQuaCAocmVsb2FkKTogUmVtb3ZlIGR1bXBmaWxlIGFyZ3VtZW50LiAgQ2FsbGVycyBjaGFuZ2VkLgoJKGRlYnVnX3JlbG9hZCwgZGVidWdfcmVsb2FkX3RvX3N0cmVhbSk6IE1vdmUgcHJvdG90eXBlcyBoZXJlLgoJKiBydGwuaCAgKHJlbG9hZCk6IFJlbW92ZSBkdW1wZmlsZSBhcmd1bWVudC4KCSogcmVsb2FkLmMgKGRlYnVnX3JlbG9hZCk6IFJlbW92ZSBwcm90b3R5cGUuCgkoZGVidWdfcmVsb2FkX3RvX3N0cmVhbSk6IExpa2V3aXNlLgoJKiByZWxvYWQxLmM6IEF2b2lkIHBhc3NpbmcgZHVtcGZpbGUgYXJvdW5kLCByZWx5IG9uIHJ0bF9kdW1wX2ZpbGUKCWluc3RlYWQuCgoyMDAwLTA4LTIxICBHYWJyaWVsIERvcyBSZWlzICA8Z2RyQG1lcmxpbi5jb2Rlc291cmNlcnkuY29tPgoKCSogZGlhZ25vc3RpYy5jIChjb250ZXh0X2FzX3ByZWZpeCk6IEV4cG9ydC4KCShuZWVkX2Vycm9yX25ld2xpbmUpOiBSZW1vdmUuCgkobGFuZ19kaWFnbm9zdGljX3N0YXJ0ZXIsIGxhbmdfZGlhZ25vc3RpY19maW5hbGl6ZXIpOiBOZXcgb2JqZWN0cy4KCShlcnJvcl9tb2R1bGVfY2hhbmdlZCwgcmVjb3JkX2xhc3RfZXJyb3JfbW9kdWxlLAoJZXJyb3JfZnVuY3Rpb25fY2hhbmdlZCwgcmVjb3JkX2xhc3RfZXJyb3JfZnVuY3Rpb24pOiBOZXcgZnVuY3Rpb25zLgoJKGluaXRpYWxpemVfZGlhZ25vc3RpY3MpOiBEZWZhdWx0IGluaXRpYWxpemUKCWxhbmdfZGlhZ25vc3RpY19zdGFydGVyLCBsYW5nX2RpYWdub3N0aWNfZmluYWxpemVyLgoJKGluaXRfb3V0cHV0X2J1ZmZlcik6IFR3ZWFrLgoJKGZpbGVfbmFtZV9hc19wcmVmaXgpOiBOZXcgZnVuY3Rpb24uCgkoYW5ub3VuY2VfZnVuY3Rpb24sIGRlZmF1bHRfcHJpbnRfZXJyb3JfZnVuY3Rpb24sCglyZXBvcnRfZXJyb3JfZnVuY3Rpb24sIHNldF9kaWFnbm9zdGljX2NvbnRleHQpOiBUd2Vhay4KCjIwMDAtMDgtMjEgIFJpY2hhcmQgRWFybnNoYXcgIDxyZWFybnNoYUBhcm0uY29tPgoKCSogZmxvdy5jIChpbml0X3Byb3BhZ2F0ZV9ibG9ja19pbmZvKTogSGFuZGxlIFNVQlJFRyBpbiBhIGp1bXAKCWNvbmRpdGlvbiBleHByZXNzaW9uLgoKMjAwMC0wOC0yMCAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAY3lnbnVzLmNvbT4KCgkqIGZsb3cuYyAobWVyZ2VfYmxvY2tzX25vbW92ZSk6IERvbid0IHNlZWsgYmFjayBwYXN0IHRoZSBiYiBub3RlLgoKMjAwMC0wOC0yMCAgWmFjayBXZWluYmVyZyAgPHphY2tAd29sZXJ5LmN1bWIub3JnPgoKCSogY3BwaW5pdC5jIChjcHBfaW5pdCk6IFNldCBnbG9iYWwgZmxhZyB3aGVuIGNhbGxlZC4KCShjcHBfcmVhZGVyX2luaXQpOiBCb21iIG91dCBpZiBjcHBfaW5pdCBoYXNuJ3QgYmVlbiBjYWxsZWQuCgpTdW4gQXVnIDIwIDAxOjQxOjM1IDIwMDAgIERlbm5pcyBDaGVybm9pdmFub3YgIDxjZGlAc3BhcmMuc3BiLnN1PgoKCSogY3BwbGV4LmMgKGNwcF9zY2FuX2J1ZmZlcik6IE1vdmUgYG91dHB1dF9saW5lX2NvbW1hbmQnIGp1c3QKCWJlZm9yZSBgcHJvY2Vzc19kaXJlY3RpdmUnIHNvIHRoYXQgbmV3bGluZXMgd29uJ3QgYmUgbWlzc2VkCglmb3IgZGlyZWN0aXZlcy4KCShjcHBfcHJpbnRmKTogSW5jcmVtZW50IGBwcmludC0+bGluZW5vJyB3aGVuIG5ld2xpbmUgaXMgZW1pdHRlZC4KCgkqIGNwcG1haW4uYyAoY2JfaWRlbnQpOiBMaWtld2lzZS4KCShjYl9kZWZpbmUpOiBMaWtld2lzZS4KCShjYl91bmRlZik6IExpa2V3aXNlLgoJKGNiX2luY2x1ZGUpOiBMaWtld2lzZS4KCShjYl9kZWZfcHJhZ21hKTogTGlrZXdpc2UuCgkoZHVtcF9tYWNyb3NfaGVscGVyKTogTGlrZXdpc2UuCgoyMDAwLTA4LTIwICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEBjeWdudXMuY29tPgoKCSogY29uZmlnL2lhNjQvaWE2NC5jIChlbWl0X2luc25fZ3JvdXBfYmFycmllcnMpOiBTdG9wIGlmIGFyLmxjCglhc3NpZ25lZCBiZWZvcmUgYSBsb29wLgoKCSogY29uZmlnL2lhNjQvaWE2NC5tZCAoYXNobHNpMyk6IFplcm8gZXh0ZW5kIHRoZSBzaGlmdCBjb3VudC4KCShhc2hyc2kzLCBsc2hyc2kzKTogTGlrZXdpc2UuCgoyMDAwLTA4LTIwICBHYWJyaWVsIERvcyBSZWlzICA8Z2RyQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjLWxhbmcuYzogI2luY2x1ZGUgZGlhZ25vc3RpYy5oCgkoY190cmVlX3ByaW50ZXIpOiBOZXcgZnVuY3Rpb24uCgkobGFuZ19pbml0KTogSW5pdGlhbGl6ZSBsYW5nX3ByaW50ZXIuCgoJKiBNYWtlZmlsZS5pbiAoYy1sYW5nLm8pOiBEZXBlbmRzIG9uIGRpYWdub3N0aWMuaAoKMjAwMC0wOC0yMCAgR2FicmllbCBEb3MgUmVpcyAgPGdkckBjb2Rlc291cmNlcnkuY29tPgoKCSogYy1lcnJvcnMuYyAocGVkd2Fybl9jOTkpOiBBZGp1c3QgY2FsbCB0byByZXBvcnRfZGlhZ25vc3RpYy4KCgkqIGRpYWdub3N0aWMuYyAoZGVmYXVsdF9kaWFnbm9zdGljX3N0YXJ0ZXIsCglkZWZhdWx0X2RpYWdub3N0aWNfZmluYWxpemVyKTogTmV3IGZ1bmN0aW9ucy4KCShkaWFnbm9zdGljX2Zvcl9hc20sIGRpYWdub3N0aWNfZm9yX2RlY2wpOiBUd2Vhay4KCShwZWR3YXJuLCBwZWR3YXJuX3dpdGhfZmlsZV9hbmRfbGluZSwgZXJyb3IsCgllcnJvcl93aXRoX2ZpbGVfYW5kX2xpbmUsIGZhdGFsLCB3YXJuaW5nLAoJd2FybmluZ193aXRoX2ZpbGVfYW5kX2xpbmUpOiBBZGp1c3QgY2FsbCB0byByZXBvcnRfZGlhZ25vc3RpYy4KCShyZXBvcnRfZGlhZ25vc3RpYyk6IFJld29yay4KCShzZXRfZGlhZ25vc3RpY19jb250ZXh0KTogTmV3IGZ1bmN0aW9uLgoKCSogZGlhZ25vc3RpYy5oIChzdHJ1Y3QgZGlhZ25vc3RpY19jb250ZXh0KTogTmV3IGRhdGEgc3RydWN0dXJlLgoJKGRpYWdub3N0aWNfbWVzc2FnZSwgZGlhZ25vc3RpY19hcmd1bWVudF9saXN0LAoJZGlhZ25vc3RpY19maWxlX2xvY2F0aW9uLCBkaWFnbm9zdGljX2xpbmVfbG9jYXRpb24sCglkaWFnbm9zdGljX2lzX3dhcm5pbmcsIGRpYWdub3N0aWNfc3RhcnRlciwgZGlhZ25vc3RpY19maW5hbGl6ZXIsCglkaWFnbm9zdGljX2ZpbmFsaXplciwgZGlhZ25vc3RpY19hdXhpbGlhcnlfZGF0YSk6IE5ldyBtYWNyb3MuCgkoc2V0X2RpYWdub3N0aWNfY29udGV4dCk6IERlY2xhcmUuCgkocmVwb3J0X2RpYWdub3N0aWMpOiBDaGFuZ2UgcHJvdG90eXBlLgoKU3VuIDIwLUF1Zy0yMDAwIDA5OjI1OjQ1IEJTVCAgTmVpbCBCb290aCAgPE5laWxCQGVhcnRobGluZy5uZXQ+CgoJKiBmaXgtaGVhZGVyLmMgKG1haW4pOiBJbml0aWFsaXplIGNwcGxpYi4KCjIwMDAtMDgtMTkgIE1pY2hhZWwgTWVpc3NuZXIgIDxtZWlzc25lckByZWRoYXQuY29tPgoKCSogaWZjdnQuYyAoZmluZF9pZl9ibG9jayk6IERvIG5vdCBhc3N1bWUgdGhhdCBhIFRIRU4gYmxvY2sgaGFzIGFueQoJaW5zdHJ1Y3Rpb25zIGluIGl0IGJlZm9yZSBjaGVja2luZyBmb3IgaW5kaXJlY3QganVtcHMuCgoJKiBpZmN2dC5jIChmaW5kX2lmX2Jsb2NrKTogRG8gbm90IGNvbnNpZGVyIGEgVEhFTiBibG9jayB0aGF0IGVuZHMKCWluIGFuIGluZGlyZWN0IGp1bXAgYXMgYSBwb3RlbnRpYWwgZm9yIGNvbmRpdGlvbmFsIGV4ZWN1dGlvbi4KCgkqIGQzMHYuaCAoZDMwdl9pbml0X2V4cGFuZGVycyk6IERvbid0IGRlY2xhcmUgaGVyZS4KCSogZDMwdi1wcm90b3MuaCAoZDMwdl9pbml0X2V4cGFuZGVycyk6IERlY2xhcmUgaGVyZSB3aXRoIGEgdmFsaWQKCXByb3RvdHlwZS4KClNhdCAxOS1BdWctMjAwMCAyMToxMTo0NSBCU1QgIE5laWwgQm9vdGggIDxOZWlsQkBlYXJ0aGxpbmcubmV0PgoKCSogY3BwLnRleGk6IEFkZCBAc2VjdGlvbiBmb3IgYXNzZXJ0aW9ucy4KClNhdCBBdWcgMTkgMTI6Mzc6MDggRURUIDIwMDAgIEpvaG4gV2VobGUgIChqb2huQGZlaXRoLmNvbSkKCgkqIGxvb3AuYyAoc2Nhbl9sb29wKTogVXNlIENPTlNUX0NBTExfUCBpbnN0ZWFkIG9mCgljaGVja2luZyBmb3IgUkVHX0xJQkNBTEwgLyBSRUdfUkVUVkFMLgoKU2F0IEF1ZyAxOSAwOToxODo0NyAyMDAwICBKZWZmcmV5IEEgTGF3ICAobGF3QGN5Z251cy5jb20pCgoJKiByZWxvYWQxLmMgKHJlbG9hZF9hc19uZWVkZWQpOiBBY2NlcHQgZHVtcGZpbGUgYXJndW1lbnQsCglwYXNzIGl0IHRvIGVtaXRfcmVsb2FkX2luc25zLgoJKGVtaXRfcmVsb2FkX2luc25zKTogQWRkIG5ldyBkdW1wZmlsZSBhcmd1bWVudC4gIElmIG5vbi1udWxsCgl0aGVuIGR1bXAgdGhlIHJlbG9hZHMgZm9yIGVhY2ggaW5zbiBpbnRvIHRoZSBkdW1wZmlsZS4KCShyZWxvYWQpOiBQYXNzIGR1bXBmaWxlIHRvIHJlbG9hZF9hc19uZWVkZWQuCgoJKiBpbnZva2UudGV4aTogQ2xlYW4gdXAgbGludXgtZ251IHZzIGxpbnV4IGNvbW1lbnRzLgoKMjAwMC0wOC0xOSAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAY3lnbnVzLmNvbT4KCgkqIGNvbmZpZy9pYTY0L2lhNjQuYyAocmVnX29yXzViaXRfb3BlcmFuZCk6IE5ldy4KCShpYTY0X2RlcHpfZmllbGRfbWFzayk6IE5ldy4KCSogY29uZmlnL2lhNjQvaWE2NC5oIChDT05TVFJBSU5UX09LX0ZPUl9SKTogTmV3LgoJKFBSRURJQ0FURV9DT0RFUyk6IFVwZGF0ZS4KCSogY29uZmlnL2lhNjQvaWE2NC5tZDogVXBkYXRlIGNvbW1lbnRhcnkuCgkoZGVwel9pbnRlcm5hbCk6IE5ldy4KCShhc2hsc2kzKTogSW1wbGVtZW50IGRpcmVjdGx5LgoJKGFzaHJzaTMsIGxzaHJzaTMpOiBTaW1wbGlmeTsgcmVseSBvbiBleHR2IGFuZCBleHR6diBmb3IgY29uc3RhbnRzLgoJKGFzaGxkaTMpOiBVc2Ugc2hsYWRkLgoJKiBjb25maWcvaWE2NC9pYTY0LXByb3Rvcy5oOiBVcGRhdGUuCgoyMDAwLTA4LTE4ICBaYWNrIFdlaW5iZXJnICA8emFja0B3b2xlcnkuY3VtYi5vcmc+CgoJKiB0b3BsZXYuYyAoaW5kZXBlbmRlbnRfZGVjb2RlX29wdGlvbik6IEFsd2F5cyBwcm9jZXNzIC1nLgoJUmVtb3ZlIHRoaXJkIGFyZ3VtZW50LCBub3cgdW51c2VkLiAgQWRqdXN0IGNhbGxlciB0byBtYXRjaC4KCjIwMDAtMDgtMTggIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgoJKiBjb21iaW5lLmMgKG1ha2VfY29tcG91bmRfb3BlcmF0aW9uKTogQnJlYWsgYWZ0ZXIgY3JlYXRpbmcKCXRoZSBleHRyYWN0aW9uLgoKMjAwMC0wOC0xOCAgWmFjayBXZWluYmVyZyAgPHphY2tAd29sZXJ5LmN1bWIub3JnPgoKCSogY3BwbGliLmMgKGNwcF9yZWdpc3Rlcl9wcmFnbWFfc3BhY2UpOiBKdXN0IHJldHVybiBpZiB0aGUKCW5hbWVzcGFjZSBpcyBhbHJlYWR5IHJlZ2lzdGVyZWQuCgoyMDAwLTA4LTE4ICBSYXkgRXNzaWNrIDxlc3NpY2tAZGRuYS5sYWJzLm1vdC5jb20+ICYgTmljayBDbGlmdG9uICA8bmlja2NAcmVkaGF0LmNvbT4KCgkqIGNvbmZpZy9tY29yZS9tY29yZS5tZCAocm90bHNpMyk6IEFsbG93IGFsbG93IHJvdGF0aW9ucyBieSBhCgljb25zdGFudCBhbW91bnQuICBEbyBub3QgZ2VuZXJhdGUgUk9UTCBpbnN0cnVjdGlvbi4KCkZyaSBBdWcgMTggMTY6MjI6MjAgMjAwMCAgQWxleGFuZHJlIE9saXZhICA8YW9saXZhQHJlZGhhdC5jb20+CgoJKiBjb25maWcvc2gvZWxmLmg6IERvIG5vdCBpbmNsdWRlIHNoL3NoLmguCgkqIGNvbmZpZy9zaC9ydGVtcy5oOiBMaWtld2lzZS4KCSogY29uZmlnL3NoL3J0ZW1zZWxmLmg6IERvIG5vdCBpbmNsdWRlIHNoL2VsZi5oLgoJKiBjb25maWd1cmUuaW46IEdldCB0aGVtIGluY2x1ZGVkIHdpdGggYHRtX2ZpbGUncy4KCSogY29uZmlndXJlOiBSZWJ1aWx0LgoKCSogY29uZmlnL3NoL3NoLm1kIChmcHVfc3dpdGNoMCwgZnB1X3N3aXRjaDEpOiBTaW1wbGlmeS4KCSogY29uZmlnL3NoL3NoLmMgKGZwc2NyX3NldF9mcm9tX21lbSk6IFVzZSB0aGVtLgoKRnJpIEF1ZyAxOCAxNDoyMzoxOCAyMDAwICBSaWNoYXJkIEtlbm5lciAgPGtlbm5lckB2bHNpMS51bHRyYS5ueXUuZWR1PgoKCSogc3Rvci1sYXlvdXQuYyAoY29tcHV0ZV9yZWNvcmRfdHlwZSk6IERvbid0IHVzZSBtb2RlIG9mIHNpbmdsZQoJZmllbGQgYXMgbW9kZSBvZiByZWNvcmQgaWYgbm90IGludGVnZXIgbW9kZSBvZiBzYW1lIHR5cGUuCgoJKiByZWdtb3ZlLmMgKHBlcmhhcHNfZW5kc19iYl9wKTogTmV3IGZ1bmN0aW9uLgoJKG9wdGltaXplX3JlZ19jb3B5XzEsIG9wdGltaXplX3JlZ19jb3B5XzIpOiBDYWxsIGl0LgoJKG9wdGltaXplX3JlZ19jb3B5XzMsIGZpeHVwX21hdGNoXzIsIHJlZ21vdmVfb3B0aW1pemUpOiBMaWtld2lzZS4KCShmaXh1cF9tYXRjaF8xKTogTGlrZXdpc2UuCgkoZml4dXBfbWF0Y2hfMSwgY29tYmluZV9zdGFja19hZGp1c3RtZW50c19mb3JfYmxvY2spOiBBZGQgY2FzdHMgdG8KCWF2b2lkIHNpZ25lZC91bnNpZ25lZCB3YXJuaW5ncy4KCgkqIGZ1bmN0aW9uLmMgKGZpeHVwX3Zhcl9yZWZzXzEsIGNhc2UgTUVNKTogVXBkYXRlIENPREUgYWZ0ZXIKCXVwZGF0aW5nIFguCgpGcmkgMTgtQXVnLTIwMDAgMTg6MzM6NDUgQlNUICBOZWlsIEJvb3RoICA8TmVpbEJAZWFydGhsaW5nLm5ldD4KCgkqIGNwcGhhc2guaDogVXNlIEhBVkVfREVTSUdOQVRFRF9JTklUSUFMSVpFUlMuCgkoX2NwcF90cmlncmFwaF9tYXApOiBEZWNsYXJhdGlvbiBtb3ZlZCBmcm9tIGNwcGxleC5jCgoJKiBjcHBpbml0LmM6IERlZmluZSBfY3BwX3RyaWdyYXBoX21hcC4gIFVzZSBVQ0hBUl9NQVggKyAxCglpbnN0ZWFkCW9mIDI1Ni4gIFVzZSBjb25zaXN0ZW50IHRlc3QgZm9yIGRlc2lnbmF0ZWQgaW5pdGlhbGl6ZXJzLgoJKGNwcF9pbml0KTogSW5pdGlhbGl6ZSB0cmlncmFwaF9tYXAuCgkoaW5pdGlhbGl6ZV9zdGFuZGFyZF9pbmNsdWRlcywgcGFyc2Vfb3B0aW9uKTogIFVzZSBtZW1jbXAKCWluc3RlYWQgb2Ygc3RybmNtcC4KCgkqIGNwcGxleC5jIChpbml0X3RyaWdyYXBoX21hcCk6IFJlbW92ZS4KCSh0cmlncmFwaF9vaywgdHJpZ3JhcGhfcmVwbGFjZSwgbGV4X2xpbmUpOiBSZWZlciB0bwoJX2NwcF90cmlncmFwaF9tYXAuCgoJKiBjcHBsaWIuYyAoc3RyX21hdGNoLCBXQVJOSU5HLCBFUlJPUiwgSUNFKTogRGVsZXRlLgoJKGRvX3VuYXNzZXJ0KTogUmVtb3ZlIHVudXNlZCAibmV4dCIgbG9jYWwuCgoJKiBzeXN0ZW0uaCAoSEFWRV9ERVNJR05BVEVEX0lOSVRJQUxJWkVSUyk6IE5ldyBwcm90b3R5cGUuCgoyMDAwLTA4LTE4ICBFbW1hbnVlbCBNYXJ0eSAgPGVtYXJ0eUBzdW50ZWNoLmZyPgoKCSogYXJtL2xpYjFmdW5jcy5hc20gKF91bW9kc2kzIFRIVU1CIFZBUklBTlQpOiBSZXN0b3JlIGRlbGV0ZWQgcmV0dXJuCglpbnNuLgoKMjAwMC0wOC0xNyAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAY3lnbnVzLmNvbT4KCgkqIGNvbmZpZy9pYTY0L2lhNjQuYyAoc3BpbGxfcmVzdG9yZV9tZW0pOiBIYW5kbGUgZW1pdHRpbmcKCXRoZSBmaXJzdCBpbnNuIGluIGEgc2VxdWVuY2UuCgpUaHUgQXVnIDE3IDIyOjQwOjA1IEVEVCAyMDAwICBKb2huIFdlaGxlICAoam9obkBmZWl0aC5jb20pCgoJKiBhbGlhcy5jICh0cnVlX2RlcGVuZGVuY2UsIHdyaXRlX2RlcGVuZGVuY2VfcCk6IEEgcmVhZAoJaW52b2x2aW5nIGEgbGFiZWxfcmVmIG9yIHRoZSBjb25zdGFudCBwb29sIGRvZXNuJ3QgY3JlYXRlCglhIGRlcGVuZGVuY3kuCgoJKiBydGwuaCAodW5jaGFuZ2luZyk6IEltcHJvdmUgZG9jdW1lbnRhdGlvbi4KCjIwMDAtMDgtMTcgIFJvZG5leSBCcm93biAgPFJvZG5leUJyb3duQG15bmQuY29tPgoKCSogY3NlLmMgKGluc2VydF9yZWdzKTogUmVtb3ZlIHVudXNlZCBgcmVnbm8nLgoKMjAwMC0wOC0xNyAgTmVpbCBCb290aCAgPE5laWxCQGVhcnRobGluZy5uZXQ+CgoJKiAoY3BwaW5pdC5jKSBtZXJnZV9pbmNsdWRlX2NoYWluczogVXNlIHJlbW92ZV9kdXBfZGlyLAoJcmVtb3ZlX2R1cF9kaXJzLiAgSWYgcXRhaWwgPT0gYnJhY2ssIHJlbW92ZSBicmFjayBub3QKCXF0YWlsLgoJKHJlbW92ZV9kdXBfZGlyLCByZW1vdmVfZHVwX2RpcnMpOiBOZXcgZnVuY3Rpb25zLgoKMjAwMC0wOC0xNyAgTmVpbCBCb290aCAgPE5laWxCQGVhcnRobGluZy5uZXQ+CgoJKiBjcHBpbml0LmMgKGNwcF9jbGVhbnVwKTogRnJlZSBpbmNsdWRlIGRpciBjaGFpbnMuCgkqIGNwcGxpYi5jIChkb191bmRlZik6IExldCBfY3BwX2ZyZWVfZGVmaW5pdGlvbiBtYWtlIHRoZSBub2RlIHZvaWQuCgkoZG9fdW5hc3NlcnQpOiBGcmVlIHRoZSBhc3NlcnQgd2l0aCBfY3BwX2ZyZWVfZGVmaW5pdGlvbi4KCSogY3BwbWFjcm8uYyAoX2NwcF9mcmVlX2RlZmluaXRpb24pOiBGcmVlIG1lbW9yeSBhbGxvY2F0ZWQgZm9yCglhc3NlcnRpb25zLiAgTWFrZSB0aGUgbm9kZSBhIFRfVk9JRCBub2RlLgoKMjAwMC0wOC0xNyAgTmVpbCBCb290aCAgPE5laWxCQGVhcnRobGluZy5uZXQ+CgoJKiBjcHBpbml0LmMgKHBhdGhfaW5jbHVkZSwgYXBwZW5kX2luY2x1ZGVfY2hhaW4pOgoJUmVtb3ZlIDJuZCBwYXJhbWV0ZXIgKHN0cnVjdCBjcHBfcGVuZGluZyAqKS4KCShwYXRoX2luY2x1ZGUsIGluaXRpYWxpemVfc3RhbmRhcmRfaW5jbHVkZXMsIGNwcF9oYW5kbGVfb3B0aW9uKToKCVVwZGF0ZSBjYWxsZXJzIGFwcHJvcHJpYXRlbHkuCgkoY3BwX2hhbmRsZV9vcHRpb24pOiBVc2UgcGVuZC4KCjIwMDAtMDgtMTcgIE5laWwgQm9vdGggIDxOZWlsQkBlYXJ0aGxpbmcubmV0PgoKCSogY3BwaW5pdC5jIChzb3J0X29wdGlvbnMpOiBSZW1vdmUsIHB1dCBmdW5jdGlvbmFsaXR5IGluCgljcHBfaW5pdC4KCShjcHBfaW5pdCk6IE5ldy4KCShpbml0aWFsaXplX2J1aWx0aW5zKTogRnJlZSBtZW1vcnkuCgkoY3BwX3N0YXJ0X3JlYWQpOiBNb3ZlIGluaXRfSVN0YWJsZSB0byBjcHBfaW5pdC4KCgkqIGNwcGxpYi5oIChjcHBfaW5pdCk6IE5ldyBwcm90b3R5cGUuCgkqIGNwcG1haW4uYyAobWFpbik6IENhbGwgY3BwX2luaXQuCgpUaHUgQXVnIDE3IDEzOjIwOjMyIEVEVCAyMDAwICBKb2huIFdlaGxlICAoam9obkBmZWl0aC5jb20pCgoJKiBydGxhbmFsLmMgKHJ0eF91bnN0YWJsZV9wKTogVXNlIENPTlNUQU5UX1AuCgkocnR4X3Vuc3RhYmxlX3AsIHJ0eF92YXJpZXNfcCk6IFByb2Nlc3MgdmVjdG9ycy4KCjIwMDAtMDgtMTYgIE5paWJlIFl1dGFrYSAgPGduaWliZUBtMTduLm9yZz4sIEtheiBLb2ppbWEgIDxra29qaW1hQHJyLmlpajR1Lm9yLmpwPgoKCSogY29uZmlnL3NoL2xpYjFmdW5jcy5hc20gKEdMT0JBTCk6IERlZmluZS4gIFVzZSBmb3IgYWxsCglyZWZlcmVuY2VzIHRvIEdMT0JBTCBzeW1ib2xzLiAgVXNlIExPQ0FMIHdoZXJlIGFwcHJvcHJpYXRlLgoKMjAwMC0wOC0xNiAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogY29uZmlndXJlLmluICgqLWlibS1haXg0LlsxMl0qKTogRGVsZXRlIHRlc3QgZm9yIGdudSBsZC4gIEFsd2F5cwoJdXNlIHQtYWl4NDEgd2hlbiBob3N0ID09IHRhcmdldC4KCjIwMDAtMDgtMTYgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgoJKiByZWxvYWQuYyAocHVzaF9zZWNvbmRhcnlfcmVsb2FkKTogUmV2ZXJ0IGxhc3QgY2hhbmdlLgoJSWYgd2UgdXNlIGEgcmVsb2FkX2luL291dCBwYXR0ZXJuLCBtYWtlIHRoZSB3aGVuIHRoZSBzYW1lCglhcyB0aGUgcHJpbWFyeSByZWxvYWQuCgkoZmluZF9yZWxvYWRzKTogTGlrZXdpc2UuCgoyMDAwLTA4LTE2ICBNYW5mcmVkIEhvbGxzdGVpbiAgPG1hbmZyZWRoQHJlZGhhdC5jb20+CgoJKiBjb25maWd1cmUuaW4gKGxpYnN0ZGN4eC12Myk6IEZpeCB0ZXN0LgoJKiBjb25maWd1cmU6IFJlZ2VuZXJhdGUuCgpXZWQgQXVnIDE2IDA4OjEwOjMyIDIwMDAgIFJpY2hhcmQgS2VubmVyICA8a2VubmVyQHZsc2kxLnVsdHJhLm55dS5lZHU+CgoJKiBjYWxscy5jIChjYWxsc19mdW5jdGlvbl8xLCBleHBhbmRfY2FsbCk6IE9ubHkgdGVzdAoJVFlQRV9SRVRVUk5TX1NUQUNLX0RFUFJFU1NFRCBmb3IgRlVOQ1RJT05fVFlQRS4KCSogZnVuY3Rpb24uYyAodGhyZWFkX3Byb2xvZ3VlX2FuZF9lcGlsb2d1ZV9pbnNucyk6IExpa2V3aXNlLgoKMjAwMC0wOC0xNiAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAY3lnbnVzLmNvbT4KCgkqIGNvbWJpbmUuYyAoc2ltcGxpZnlfc2hpZnRfY29uc3QpOiBSZXZlcnQgcHJldmlvdXMgdHdvCgljaGFuZ2VzLiAgSWYgU0hJRlRfQ09VTlRfVFJVTkNBVEVELCBjcm9wIHRoZSBzaGlmdCBjb3VudAoJYmVmb3JlIHRoZSBtYWluIGxvb3AuCgoyMDAwLTA4LTE1ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEBjeWdudXMuY29tPgoKCSogY29tYmluZS5jIChzaW1wbGlmeV9zaGlmdF9jb25zdCk6IEJvdW5kIHNoaWZ0IGNvdW50IHdoZW4KCWNvbWJpbmluZyBzaGlmdHMuCgpUdWUgQXVnIDE1IDE3OjMzOjA1IDIwMDAgIFJpY2hhcmQgS2VubmVyICA8a2VubmVyQHZsc2kxLnVsdHJhLm55dS5lZHU+CgoJKiBjYWxscy5jIChFQ0ZfU1BfREVQUkVTU0VEKTogTmV3IG1hY3JvLgoJKGNhbGxzX2Z1bmN0aW9uXzEpOiBUcmVhdCBjYWxsaW5nIHNwLWRlcHJlc3NlZCBmdW5jdGlvbiBhcyBhbGxvY2EuCgkoZW1pdF9jYWxsXzEpOiBEb24ndCBhZGp1c3QgU1AgaWYgY2FsbGluZyBzcC1kZXByZXNzZWQgZnVuY3Rpb24uCgkoZXhwYW5kX2NhbGwpOiBTZXQgRUNGX1NQX0RFUFJFU1NFRCBpZiBUWVBFX1JFVFVSTlNfU1RBQ0tfREVQUkVTU0VELgoJSWYgc3AtZGVwcmVzc2VkLCBlbnN1cmUgYmxvY2sgc2F2ZXMgYW5kIHJlc3RvcmVzIFNQLgoJKiBmb2xkLWNvbnN0LmMgKGV4dHJhY3RfbXVsZGl2KTogT25seSBjaGVjayBUWVBFX0lTX1NJWkVUWVBFCglmb3IgSU5URUdFUl9UWVBFLgoJKiBmdW5jdGlvbi5jIChrZWVwX3N0YWNrX2RlcHJlc3NlZCk6IE5ldyBmdW5jdGlvbi4KCSh0aHJlYWRfcHJvbG9ndWVfYW5kX2VwaWxvZ3VlX2luc25zKTogQ2FsbCBpdC4KCSogcHJpbnQtdHJlZS5jIChwcmludF9ub2RlKTogVXNlIEhPU1RfV0lERV9JTlRfUFJJTlRfVU5TSUdORUQKCXRvIHByaW50IERFQ0xfT0ZGU0VUX0FMSUdOLgoJUHJpbnQgbm8tZm9yY2UtYmxrIGFuZCB0cmFuc3BhcmVudC11bmlvbiBmbGFncyBwcm9wZXJseS4KCSogc3RtdC5jIChleHBhbmRfZ290b19pbnRlcm5hbCk6IERvbid0IHJlc3RvcmUgc3RhY2sgaWYgbGFzdCBibG9jawoJYW5kIGZ1bmN0aW9uIHJldHVybnMgd2l0aCBzcCBkZXByZXNzZWQuCgkoZml4dXBfZ290b3MpOiBMaWtld2lzZS4KCShzYXZlX3N0YWNrX3BvaW50ZXIpOiBOZXcgZnVuY3Rpb24sIGZyb20gY29kZSBpbiBleHBhbmRfZGVjbC4KCShleHBhbmRfZGVjbCk6IENhbGwgbmV3IGZ1bmN0aW9uLgoJKiB0cmVlLmggKFRZUEVfSVNfU0laRVRZUEUpOiBDYWxsIElOVEVHRVJfVFlQRV9DSEVDSy4KCShUWVBFX1JFVFVSTlNfU1RBQ0tfREVQUkVTU0VEKTogTmV3IG1hY3JvLgoJKHNhdmVfc3RhY2tfcG9pbnRlcik6IE5ldyBkZWNsYXJhdGlvbi4KCgkqIGRpYWdub3N0aWMuYyAoZmF0YWxfZnVuY3Rpb24pOiBOZXcgdmFyaWFibGUuCgkoc2V0X2ZhdGFsX2Z1bmN0aW9uKTogTmV3IGZ1bmN0aW9uLgoJKGZhdGFsKTogQ2FsbCBpdC4KCSogZGlhZ25vc3RpYy5oIChzZXRfZmF0YWxfZnVuY3Rpb24pOiBOZXcgZGVjbGFyYXRpb24uCgoyMDAwLTA4LTE1ICBXaWxsaWFtIENvaGVuICA8d2NvaGVuQHJlZGhhdC5jb20+CgoJKiBjb25maWcvc2gvZWxmLmggKERXQVJGMl9ERUJVR0dJTkdfSU5GTyk6IERlZmluZWQuCgkoUFJFRkVSUkVEX0RFQlVHR0lOR19UWVBFKTogU2V0IHRvIGR3YXJmMiBpbmZvLgoJKERXQVJGMl9BU01fTElORV9ERUJVR19JTkZPKTogRGVmaW5lZC4KCjIwMDAtMDgtMTUgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgoJKiBmbG93LmMgKG1hcmtfdXNlZF9yZWcpOiBTZXQgcmVnX2NvbmRfcmVnIGFwcHJvcHJpYXRlbHkuCgoyMDAwLTA4LTE1ICBSaWNoYXJkIEVhcm5zaGF3IDxyZWFybnNoYUBhcm0uY29tPgoKCSogYXJtLmMgKGFybV9mdW5jdGlvbl9va19mb3Jfc2liY2FsbCk6IE5ldyBmdW5jdGlvbi4KCSogYXJtLmggKEZVTkNUSU9OX09LX0ZPUl9TSUJDQUxMKTogRGVmaW5lLgoJKiBhcm0ubWQgKGNhbGwgZXhwYW5kZXJzKTogRG9uJ3QgY2hlY2sgaGVyZSBmb3IgY2FsbHMgdGhhdCBjYW4ndAoJYmUgc2libGluZyBjYWxscy4KCjIwMDAtMDgtMTUgIFJpY2hhcmQgRWFybnNoYXcgPHJlYXJuc2hhQGFybS5jb20+CgoJKiBhcm0ubWQgKHNwbGl0cyBnZW5lcmF0aW5nIGNvbmRfZXhlYyk6IERpc2FibGUuCgoyMDAwLTA4LTE1ICBSaWNoYXJkIEVhcm5zaGF3IDxyZWFybnNoYUBhcm0uY29tPgoKCSogYXJtL2xpbnV4LWVsZi5oICh0ZXh0X3NlY3Rpb24pOiBEZWxldGUgZGVjbGFyYXRpb24uCgoyMDAwLTA4LTE1ICBSaWNoYXJkIEVhcm5zaGF3IDxyZWFybnNoYUBhcm0uY29tPgoKCUFSTSBzdXBwb3J0IGZvciB1bm9yZGVyZWQgRlAgb3BlcmF0aW9ucy4KCSogYXJtLXByb3Rvcy5oIChhcm1fY29tcGFyaXNvbl9vcGVyYXRvcik6IERlY2xhcmUuCgkqIGFybS5jIChhcm1fY29tcGFyaXNvbl9vcGVyYXRvcik6IE5ldyBmdW5jdGlvbi4KCShhcm1fc2VsZWN0X2NjX21vZGUpOiBBZGQgdW5vcmRlcmVkIGNvbXBhcmlzb24gY29kZXMuCgkoZ2V0X2FybV9jb25kaXRpb25fY29kZSk6IExpa2V3aXNlLgoJKGFybV9maW5hbF9wcmVzY2FuX2luc24pOiBDYW4ndCBoYW5kbGUgdW5vcmRlcmVkIGp1bXBzIHRoYXQgY2FuJ3QKCWJlIGRvbmUgaW4gb25lIGluc24uCgkqIGFybS5oIChQUkVESUNBVEVfQ09ERVMpOiBBZGQgYXJtX2NvbXBhcmlzb25fb3BlcmF0b3IuCgkqIGFybS5tZCAoYWxsIHVzZXMgb2YgY29tcGFyaXNvbl9vcGVyYXRvcik6IFJlcGxhY2Ugd2l0aAoJYXJtX2NvbXBhcmlzb25fb3BlcmF0b3IuCgkoYnVub3JkZXJlZCwgYm9yZGVyZWQsIGJ1Z3QsIGJ1bmx0LCBidW5nZSwgYnVubGUsIGJ1bmVxLCBibHRndCk6IE5ldwoJZXhwYW5kcy4KCShhcm1fYnVuZXEsIGFybV9ibHRndCwgYXJtX2J1bmVxX3JldmVyc2VkLCBhcm1fYmx0Z3RfcmV2ZXJlc2VkKTogTmV3CglwYXR0ZXJucy4KClR1ZSBBdWcgMTUgMDA6MzY6MzYgMjAwMCAgT3ZpZGl1IFByZWRlc2N1ICA8b3ZpZGl1QGN1cC5ocC5jb20+CgoJKiBndGhyLXBvc2l4Lmg6IENvbmRpdGlvbmFsbHkgaW5jbHVkZSA8c2NoZWQuaD47IGluY2x1ZGUKCTxjb25maWcuaD4gZnJvbSBsaWJvYmpjLy4KCjIwMDAtMDgtMTQgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgoJKiBjb25maWcvaTM4Ni9pMzg2LmMgKGxlZ2l0aW1pemVfcGljX2FkZHJlc3MpOiBVc2UgUG1vZGUKCWZvciBhbGwgQ09OU1RzLgoKMjAwMC0wOC0xNCAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAY3lnbnVzLmNvbT4KCgkqIGNvbmZpZ3VyZS5pbiAoaWE2NC0qKTogU2V0IGZsb2F0X2Zvcm1hdCBmb3IgaTM4NiBsb25nIGRvdWJsZS4KCgkqIHJlYWwuYyAoR0VUX1JFQUwpOiBUcmVhdCAxMjgtYml0IElOVEVMX0VYVEVOREVEX0lFRUVfRk9STUFUCglhcyB3ZSB3b3VsZCBmb3IgaTM4NiBYRm1vZGUuCgkoUFVUX1JFQUwpOiBMaWtld2lzZS4KCShlbmRpYW4sIGVyZWFsX2F0b2YsIHJlYWxfdmFsdWVfdHJ1bmNhdGUpOiBMaWtld2lzZS4KCShlcmVhbF9pc25lZywgdG9lNjQsIGV0ZW5zLCBtYWtlX25hbik6IExpa2V3aXNlLgoJKiByZWFsLmggKFJFQUxfVkFMVUVfVE9fVEFSR0VUX0xPTkdfRE9VQkxFKTogTGlrZXdpc2UuCgoJKiBjb25maWcvaWE2NC9pYTY0LXByb3Rvcy5oOiBVcGRhdGUuCgkqIGNvbmZpZy9pYTY0L2lhNjQuYyAoZ2VuZXJhbF90Zm1vZGVfb3BlcmFuZCk6IE5ldy4KCShkZXN0aW5hdGlvbl90Zm1vZGVfb3BlcmFuZCk6IE5ldy4KCSh0ZnJlZ19vcl9mcDAxX29wZXJhbmQpOiBOZXcuCgkoaWE2NF9zcGxpdF90aW1vZGUpOiBOZXcuCgkoc3BpbGxfdGZtb2RlX29wZXJhbmQpOiBOZXcuCgkoaWE2NF9leHBhbmRfcHJvbG9ndWUpOiBVc2UgVEZtb2RlIG5vdCBYRm1vZGUuCgkoaWE2NF9leHBhbmRfZXBpbG9ndWUpOiBMaWtld2lzZS4KCShpYTY0X2Z1bmN0aW9uX2FyZyk6IExpa2V3aXNlLgoJKGlhNjRfZnVuY3Rpb25fYXJnX2FkdmFuY2UpOiBMaWtld2lzZS4KCShpYTY0X3JldHVybl9pbl9tZW1vcnkpOiBMaWtld2lzZS4KCShpYTY0X2Z1bmN0aW9uX3ZhbHVlKTogTGlrZXdpc2UuCgkoaWE2NF9wcmludF9vcGVyYW5kKTogTGlrZXdpc2UuCgkoaWE2NF9yZWdpc3Rlcl9tb3ZlX2Nvc3QpOiBTZXQgR1I8LT5GUiB0byA1LgoJKGlhNjRfc2Vjb25kYXJ5X3JlbG9hZF9jbGFzcyk6IEdldCBHUiBmb3IgVEltb2RlIG1lbW9yeSBvcC4KCSogY29uZmlnL2lhNjQvaWE2NC5oIChST1VORF9UWVBFX1NJWkUpOiBSZW1vdmUuCgkoUk9VTkRfVFlQRV9BTElHTik6IFJlbW92ZS4KCShMT05HX0RPVUJMRV9UWVBFX1NJWkUpOiBTZXQgdG8gMTI4LgoJKElOVEVMX0VYVEVOREVEX0lFRUVfRk9STUFUKTogRGVmaW5lLgoJKEhBUkRfUkVHTk9fTlJFR1MpOiBVc2UgVEZtb2RlLCBub3QgWEZtb2RlLgoJKEhBUkRfUkVHTk9fTU9ERV9PSyk6IExpa2V3aXNlLiAgRGlzYWxsb3cgVEltb2RlIGluIEZScy4KCShNT0RFU19USUVBQkxFX1ApOiBVc2UgVEZtb2RlLCBub3QgWEZtb2RlLgoJKENMQVNTX01BWF9OUkVHUyk6IExpa2V3aXNlLgoJKEFTTV9PVVRQVVRfTE9OR19ET1VCTEUpOiBPdXRwdXQgYnkgNCBieXRlIGh1bmtzLgoJKFBSRURJQ0FURV9DT0RFUyk6IFVwZGF0ZS4KCSogY29uZmlnL2lhNjQvaWE2NC5tZCAobW92dGkpOiBOZXcuCgkobW92dGlfaW50ZXJuYWwpOiBVc2UgYSBjbG9iYmVyIGZvciBtZW1vcnkgYWx0ZXJuYXRpdmVzLgoJKHJlbG9hZF9pbnRpLCByZWxvYWRfb3V0dGkpOiBOZXcuCgkobW92c2ZjY19hc3RlcCk6IFByZWRpY2F0ZSBwcm9wZXJseS4KCShtb3ZkZmNjX2FzdGVwKTogTGlrZXdpc2UuCgkobW92eGYpOiBSZW1vdmUuCgkobW92dGYpOiBOZXcuCgkoZXh0ZW5kc2Z0ZjIsIGV4dGVuZGRmdGYyKTogTmV3LgoJKHRydW5jdGZzZjIsIHRydW5jdGZkZjIpOiBOZXcuCgkoZmxvYXRkaXRmMiwgZml4X3RydW5jdGZkaTIpOiBOZXcuCgkoZmxvYXR1bnNkaXRmMiwgZml4dW5zX3RydW5jdGZkaTIpOiBOZXcuCgkoYWRkdGYzLCBzdWJ0ZjMsIG11bHRmMywgYWJzdGYyKTogTmV3LgoJKG5lZ3RmMiwgbmFic3RmMiwgbWludGYzLCBtYXh0ZjMpOiBOZXcuCgkobWFkZHRmMywgbXN1YnRmMywgbm11bHRmMywgbm1hZGR0ZjMpOiBOZXcuCgkoY21wdGYpOiBOZXcuCgkoZnJfc3BpbGwpOiBVc2UgVEZtb2RlLCBub3QgWEZtb2RlLgoJKGZyX3Jlc3RvcmUpOiBMaWtld2lzZS4KCSogY29uZmlnL2lhNjQvbGliMWZ1bmNzLmFzbSAoX19kaXZ0ZjMpOiBOZXcuCgkqIGNvbmZpZy9pYTY0L3QtaWE2NCAoTElCMUFTTUZVTkNTKTogQWRkIGl0LgoKMjAwMC0wOC0xNCAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogY3NlLmMgKGZvbGRfcnR4KTogQXZvaWQgZW1wdHkgYm9keSBpbiBhbiBpZi1zdGF0ZW1lbnQuCgoJKiBkb2xvb3AuYyAoZG9sb29wX2l0ZXJhdGlvbnNfbWF4LCBkb2xvb3BfbW9kaWZ5KTogQXZvaWQgdXNpbmcgdGhlCglgVScgaW50ZWdlciBjb25zdGFudCBzdWZmaXguCgoJKiBkd2FyZjJvdXQuYyAoYWRkX3N1YnNjcmlwdF9pbmZvKTogQXZvaWQgZW1wdHkgYm9keSBpbiBhbgoJZWxzZS1zdGF0ZW1lbnQuCgoJKiBzcGFyYy9zb2wyLmggKF9fZW5hYmxlX2V4ZWN1dGVfc3RhY2spOiBQcm90b3R5cGUuCgoyMDAwLTA4LTE0ICBEYXZpZCBFZGVsc29obiAgPGVkZWxzb2huQGdudS5vcmc+CgoJKiBjb2xsZWN0Mi5jOiBSZW1vdmUgdXNlIG9mIEFJWCBpbXBvcnQgZmlsZS4KCgkqIGxvbmdsb25nLmg6IFRlc3QgQVJDSF9QV1Igbm90IEFSQ0hfUE9XRVIuCgoJKiByczYwMDAuYyAocHJpbnRfb3BlcmFuZCwgY2FzZSAnRScpOiBBZGQgZWxzZS4KCjIwMDAtMDgtMTQgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgoJKiBjb25maWcvaWE2NC9pYTY0Lm1kIChtb3ZkaSk6IERlbGF5IGNhbGxpbmcgaWE2NF9leHBhbmRfbG9hZF9hZGRyZXNzLgoJKG1vdmRpX3N5bWJvbGljKTogTmV3LgoKMjAwMC0wOC0xNCAgSmltIFdpbHNvbiAgPHdpbHNvbkBjeWdudXMuY29tPgoKCSogY29uZmlnL2lhNjQvaWE2NC5oIChBU01fU1BFQyk6IFBhc3MgLW1jb25zdGFudC1ncCBhbmQgLW1hdXRvLXBpYwoJdG8gR05VIGFzLiAgRm9yIEludGVsIGFzLCBwYXNzIC1NIGNvbnN0X2dwIGFuZCAtTSBub19wbGFiZWwuCgkqIGNvbmZpZy9pYTY0L2xpbnV4LmggKEFTTV9TUEVDKTogUGFzcyAtbWNvbnN0YW50LWdwIGFuZCAtbWF1dG8tcGljCgl0byBHTlUgYXMuCgoyMDAwLTA4LTE0ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEBjeWdudXMuY29tPgoKCSogZXhwci5jIChlbWl0X2dyb3VwX2xvYWQpOiBEb24ndCBmb3JjZSBjb25zdGFudHMgaW50byByZWdpc3RlcnMuCglTcGVjaWFsIGNhc2Ugc291cmNlIGFscmVhZHkgaW4gdGhlIGNvcnJlY3QgbW9kZS4KCjIwMDAtMDgtMTQgIFphY2sgV2VpbmJlcmcgIDx6YWNrQHdvbGVyeS5jdW1iLm9yZz4KCgkqIGNvbmZpZ3VyZS5pbjogQWNjZXB0ICotKi1saW51eCogbm90IGp1c3QgKi0qLWxpbnV4LWdudSouCgkqIGZpeGluYy9pbmNsaGFjay5kZWY6IExpa2V3aXNlLgoJKiBmaXhpbmMvbWtmaXhpbmMuc2g6IExpa2V3aXNlLgoJKiBjb25maWd1cmU6IFJlZ2VuZXJhdGUuCgkqIGZpeGluYy9maXhpbmNsLng6IFJlZ2VuZXJhdGUuCgkqIGluc3RhbGwudGV4aTogRG9jdW1lbnQgZXF1aXZhbGVuY2Ugb2YgbGludXggYW5kIGxpbnV4LWdudS4KCk1vbiBBdWcgMTQgMTg6NTE6NDQgMjAwMCAgSiJvcm4gUmVubmVja2UgPGFteWxhYXJAY3lnbnVzLmNvLnVrPgoKCSogY3NlLmMgKGluc2VydF9yZWdzKTogQWxzbyBpbiBSRUcgY2FzZTogV2hlbiBmaW5kaW5nIGFuIGludmFsaWQKCXZhbHVlLCBhbmQgd2UgbWFrZSBhIG5ldyBxdWFudGl0eSwgbWFrZSBzdXJlIHRoYXQgaXQgd29uJ3QgYmUKCW1pc3Rha2VuIGJ5IGZvciBhIHZhbGlkIG9uZSBieSBtZW50aW9uX3JlZ3MuCgoyMDAwLTA4LTEzICBSYWxmIEf8dGxlaW4gPHJhbGYuZ3VldGxlaW5AYXJhbmVhLmRlPgoKCSogaDgzMDAubWQ6IFJlbW92ZSBvYnNvbGV0ZSBwZWVwaG9sZXMuCgoyMDAwLTA4LTEzICBLYXp1IEhpcmF0YSAgPGthenVAaHhpLmNvbT4KCgkqIGludm9rZS50ZXhpIChIOC8zMDAgT3B0aW9ucyk6IEZpeCB0eXBvcy4KCSogY29uZmlnL2g4MzAwLmM6IEZpeCBmb3JtYXR0aW5nLgoJKiBjb25maWcvaDgzMDAuaDogRml4IGNvbW1lbnQgdHlwb3MuCgkoT1ZFUlJJREVfT1BUSU9OUyk6IEZpeCBmb3JtYXR0aW5nLgoKCSogZnVuY3Rpb24uYzogRml4IGZvcm1hdHRpbmcuCgoJKiBjc2UuYzogRml4IGZvcm1hdHRpbmcuCgoyMDAwLTA4LTEzICBHZW9mZiBLZWF0aW5nICA8Z2VvZmZrQGN5Z251cy5jb20+CgoJKiBmbG93LmMgKGF0dGVtcHRfYXV0b19pbmMpOiBSZW1vdmUgdW51c2VkIHZhcmlhYmxlIGBiYicuCgkoYXR0ZW1wdF9hdXRvX2luYyk6IFN1cHByZXNzIHBhcmVudGhlc2VzIHdhcm5pbmcuCgkqIGZ1bmN0aW9uLmMgKHB1dF9yZWdfaW50b19zdGFjayk6IFJlbW92ZSB1bnVzZWQgdmFyaWFibGUgYHVuc2lnbmVkX3AnLgoJKiBsb29wLmMgKGxvYWRfbWVtcyk6IFJlbW92ZSBgdScgc3VmZml4IGluIHR3byBwbGFjZXMuCgkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLmM6IFJlbW92ZSB1bm5lY2Vzc2FyeSBgdScgc3VmZml4ZXMgZnJvbQoJaGV4IGNvbnN0YW50cy4KCSogY29uZmlnL3JzNjAwMC9yczYwMDAuaDogTGlrZXdpc2UuCgkqIGNvbmZpZy9yczYwMDAvc29sLWMwLmM6IFByb3RvdHlwZSBzb21lIGZ1bmN0aW9ucy4gIFJlbW92ZSB0aGUKCV9fZWFiaSBkdW1teSByb3V0aW5lLgoJKiBjb25maWcvcnM2MDAwL3N5c3Y0LmggKEFTTV9ERUNMQVJFX0ZVTkNUSU9OX05BTUUpOiBSZW1vdmUgdW51c2VkCgl2YXJpYWJsZSBgYnVmX3B0cicuCgoJKiBjb25maWcvcnM2MDAwL3JzNjAwMC5jIChyczYwMDBfc2VsZWN0X3NlY3Rpb24pOiBSZXdyaXRlIHRvCglub3QgcHV0IHN0dWZmIGluIC5zZGF0YSB1bm5lY2Vzc2FyaWx5LgoJKHJzNjAwMF91bmlxdWVfc2VjdGlvbik6IE5ldyBmdW5jdGlvbi4KCSogY29uZmlnL3JzNjAwMC9yczYwMDAtcHJvdG9zLmg6IEFkZCByczYwMDBfdW5pcXVlX3NlY3Rpb24uCgkqIGNvbmZpZy9yczYwMDAvc3lzdjQuaCAoVU5JUVVFX1NFQ1RJT04pOiBEZWZpbmUuCgoJKiBjLXR5cGVjay5jIChidWlsZF9hcnJheV9yZWYpOiBEb24ndCBjb21wbGFpbiBhYm91dCBub24tbHZhbHVlCglhcnJheXMgaW4gQzk5LiAgRG9uJ3QgdHJ5IHRvIGxvb2sgYXQgREVDTF9SRUdJU1RFUiBvZiBhCglDT01QT05FTlRfUkVGLiAgRG9uJ3QgY29tcGxhaW4gdHdpY2UgYWJvdXQgdGhlIHNhbWUgZXJyb3IuCgoJKiBmaXhpbmMvaW5jbGhhY2suZGVmIChhaXhfcHRocmVhZCk6IE5ldyBmaXguCgkoYWl4X3N5c21hY2hpbmUpOiBOZXcgZml4LgoJKiBmaXhpbmMvZml4aW5jbC54OiBSZWdlbmVyYXRlLgoKCSogZXhwci5jIChleHBhbmRfZXhwcik6IENhbGwgY29udmVydF9tb2RlcyB3aGVuIHR1cm5pbmcgYSBsYXJnZQoJbXVsdGlwbHkgaW50byBhIHNtYWxsIG9uZS4KCjIwMDAtMDgtMTIgIEdlb2ZmIEtlYXRpbmcgIDxnZW9mZmtAY3lnbnVzLmNvbT4KCgkqIHRyZWUuaCAoREVDTF9PRkZTRVRfQUxJR04pOiBNYWtlIHRoZSBvZmZfYWxpZ24gZmllbGQgb2YKCXRoZSB0cmVlIHN0cnVjdHVyZSBhbiBleHBvbmVudCByYXRoZXIgdGhhbiBhbiBleHBsaWNpdCBhbGlnbm1lbnQKCXNvIGl0IGRvZXNuJ3Qgb3ZlcmZsb3cuCgkoU0VUX0RFQ0xfT0ZGU0VUX0FMSUdOKTogTmV3IG1hY3JvLgoJKiBzdG9yLWxheW91dC5jIChwbGFjZV91bmlvbl9maWVsZCk6IFVzZSBTRVRfREVDTF9PRkZTRVRfQUxJR04KCXJhdGhlciB0aGFuIERFQ0xfT0ZGU0VUX0FMSUdOLgoJKHBsYWNlX2ZpZWxkKTogTGlrZXdpc2UuCgkqIGV4cG1lZC5jIChzdG9yZV9iaXRfZmllbGQpOiBBYm9ydCBvbiBhbGlnbj09MCB0byBhdm9pZAoJYW50aXNvY2lhbCBtYWNoaW5lIGJlaGF2aW9yLgoKMjAwMC0wOC0xMiAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAY3lnbnVzLmNvbT4KCgkqIHNpYmNhbGwuYyAodXNlc19hZGRyZXNzb2YpOiBBY2NlcHQgYm90aCBhZGRyZXNzb2YgYW5kCgljdXJyZW50X2Z1bmN0aW9uX2ludGVybmFsX2FyZ19wb2ludGVyIGluc2lkZSBhIG1lbS4KCShvcHRpbWl6ZV9zaWJsaW5nX2FuZF90YWlsX3JlY3Vyc2l2ZV9jYWxsKTogRmFpbCB0YWlsIHJlY3Vyc2lvbgoJaWYgY3VycmVudF9mdW5jdGlvbl91c2VzX2FkZHJlc3NvZi4KCSogc3RtdC5jIChleHBhbmRfcmV0dXJuKTogS2lsbCB0YWlsIHJlY3Vyc2lvbiBhbmQgSEFWRV9yZXR1cm4KCW9wdGltaXphdGlvbnMuCgoyMDAwLTA4LTExICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEBjeWdudXMuY29tPgoKCSogY29uZmlnL2lhNjQvaWE2NC5tZCAoYWRkc2kzKTogUmVtb3ZlIGV4cGFuZGVyLgoJKHN1YnNpMywgbXVsc2kzLCBuZWdzaTIsIG9uZV9jbXBsc2kyKTogTGlrZXdpc2UuCgkoKmFkZHNpM19zaGxhZGQpOiBOZXcuCgoyMDAwLTA4LTExICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEBjeWdudXMuY29tPgoKCSogY29uZmlnL2lhNjQvaWE2NC5jIChkb19zcGlsbCk6IFBhc3MgY2ZhIG9mZnNldCB0byBtb3ZlIGV4cGFuZGVyLgoJKGRvX3Jlc3RvcmUpOiBMaWtld2lzZS4KCShnZW5fbW92ZGlfeCwgZ2VuX2ZyX3NwaWxsX3gsIGdlbl9mcl9yZXN0b3JlX3gpOiBOZXcuCgkoaWE2NF9leHBhbmRfcHJvbG9ndWUsIGlhNjRfZXhwYW5kX2VwaWxvZ3VlKTogVXNlIHRoZW0uCgkocnR4X25lZWRzX2JhcnJpZXIpOiBUcmFjayBhY3R1YWwgYml0IG1hbmlwdWxhdGlvbiBmb3IKCWFyLnVuYXQgbW92ZXMsIGdyX3NwaWxsLCBhbmQgZ3JfcmVzdG9yZS4KCShlbWl0X2luc25fZ3JvdXBfYmFycmllcnMpOiBTcGVjaWFsIGNhc2UgZ3Jfc3BpbGwvZ3JfcmVzdG9yZS4KCShwcm9jZXNzX3NldCk6IERvbid0IGhhbmRsZSB2YXJhcmdzIHNwaWxscy4KCSogY29uZmlnL2lhNjQvaWE2NC5tZCAoZ3Jfc3BpbGwpOiBBY2NlcHQgY2ZhIG9mZnNldC4gIEVtaXQKCS5tZW0ub2Zmc2V0IGhlcmUgaW5zdGVhZCBvZiBpbiBwcm9jZXNzX3NldC4KCShncl9yZXN0b3JlKTogTGlrZXdpc2UuCgoyMDAwLTA4LTExICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEBjeWdudXMuY29tPgoKCSogY29uZmlnL2lhNjQvaWE2NC5oIChQUk9NT1RFX01PREUpOiBPbmx5IGV4dGVuZCB0byBTSW1vZGUuCgoyMDAwLTA4LTExICBNYXJrIEVsYnJlY2h0ICA8c25vd2JhbGwzQGJpZ2Zvb3QuY29tPgoKCSogZ2NjLnRleGkgKFRoZSBDb25maWd1cmF0aW9uIEZpbGUpOiBEb2N1bWVudAoJQ09MTEVDVDJfSE9TVF9JTklUSUFMSVpBVElPTiwgR0NDX0RSSVZFUl9IT1NUX0lOSVRJQUxJWkFUSU9OLCBhbmQKCVVQREFURV9QQVRIX0hPU1RfQ0FOT05JQ0FMSVpBVElPTi4KCjIwMDAtMDgtMTEgIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIGMtcGFyc2UuaW4gKGNhc3RfZXhwcik6IEF2b2lkIC1Xc3RyaWN0LXByb3RvdHlwZSB3YXJuaW5ncyBmb3IKCXVucHJvdG90eXBlZCBmdW5jdGlvbiBwb2ludGVyIGNhc3RzIG9uIGludGVnZXIgY29uc3RhbnRzLgoKMjAwMC0wOC0xMSBMYXVyeW5hcyBCaXZlaW5pcyA8bGF1cmFzQHNvZnRob21lLm5ldD4KCgkqIGZpeHByb3RvOiBSZWNvZ25pemUgRE9TIHBhdGhzIHdpdGggZHJpdmUgbGV0dGVycyBhcyBhYnNvbHV0ZSBwYXRocy4KCjIwMDAtMDgtMTEgIE5hdGhhbiBTaWR3ZWxsICA8bmF0aGFuQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBleHRlbmQudGV4aSAoVm9sYXRpbGVzKTogRml4IHR5cG9zLgoKMjAwMC0wOC0xMSAgS2F6dSBIaXJhdGEgIDxrYXp1QGh4aS5jb20+CgoJKiBmbG93LmM6IEZpeCBmb3JtYXR0aW5nLgoKMjAwMC0wOC0xMSAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAY3lnbnVzLmNvbT4KCgkqIHJlbG9hZC5jIChwdXNoX3NlY29uZGFyeV9yZWxvYWQpOiBXaGVuIGludm9raW5nIGEgcmVsb2FkX3tpbixvdXR9CglwYXR0ZXJuLCBhbHdheXMgYWxsb2NhdGUgYSB0ZXJ0aWFyeSBzY3JhdGNoIHJlZ2lzdGVyLgoKCSogY29uZmlnL2FscGhhL2FscGhhLm1kIChyZWxvYWRfaW5xaSk6IFVzZSBhIERJbW9kZSBzY3JhdGNoLgoJKHJlbG9hZF9pbmhpKTogTGlrZXdpc2UuCgoyMDAwLTA4LTExICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEBjeWdudXMuY29tPgoKCSogZnVuY3Rpb24uYyAocHV0X3JlZ19pbnRvX3N0YWNrKTogQWxsb3cgdHlwZSB0byBiZSBOVUxMLgoJKHNjaGVkdWxlX2ZpeHVwX3Zhcl9yZWZzKTogTGlrZXdpc2UuCgkoZ2VuX21lbV9hZGRyZXNzb2YpOiBBbGxvdyBkZWNsIHRvIGJlIE5VTEwuCgkocHV0X2FkZHJlc3NvZl9pbnRvX3N0YWNrKTogTGlrZXdpc2UuCgoJKiBmbG93LmMgKG1lcmdlX2Jsb2Nrc19ub21vdmUpOiBCZSBtb3JlIGNhcmVmdWwgYWJvdXQKCWxvY2F0aW5nIHRoZSBiZWdpbm5pbmcgb2YgYmxvY2sgQS4KCgkqIGNvbWJpbmUuYyAoc2ltcGxpZnlfc2hpZnRfY29uc3QpOiBPYmV5IFNISUZUX0NPVU5UX1RSVU5DQVRFRC4KClRodSBBdWcgMTAgMjI6NDc6MDkgMjAwMCAgT3ZpZGl1IFByZWRlc2N1ICA8b3ZpZGl1QGN1cC5ocC5jb20+CgoJKiBjb25maWd1cmUuaW46CgkqIGNvbmZpZ3VyZToKCSogZ3Roci1wb3NpeC5oOgoJKiBjb25maWcuaW46IFJldmVydGVkIHRoZSBjaGVjayBmb3IgPHNjaGVkLmg+LgoKMjAwMC0wOC0xMCAgQ2hyaXMgRGVtZXRyaW91ICA8Y2dkQHNpYnl0ZS5jb20+CgoJKiBtaXBzL2VsZi5oIChDVE9SX1NFQ1RJT05fTkFNRSwgRFRPUl9TRUNUSU9OX05BTUUpOiBOZXcKCW1hY3JvcyBkZWZpbmUgdGhlIG5hbWUgb2YgQ1RPUiBhbmQgRFRPUiBzZWN0aW9ucy4KCShDVE9SX0xJU1RfQkVHSU4sIENUT1JfTElTVF9FTkQsIERUT1JfTElTVF9CRUdJTiwKCURUT1JfTElTVF9FTkQpOiBDaGFuZ2UgdG8gdXNlIGF0dHJpYnV0ZXMgdG8gc3BlY2lmeQoJc2VjdGlvbnMuCgkqIG1pcHMvZWxmNjQuaCAoQ1RPUl9TRUNUSU9OX05BTUUsIERUT1JfU0VDVElPTl9OQU1FLAoJKENUT1JfTElTVF9CRUdJTiwgQ1RPUl9MSVNUX0VORCwgRFRPUl9MSVNUX0JFR0lOLAoJRFRPUl9MSVNUX0VORCk6IFNhbWUgYXMgaW4gbWlwcy9lbGYuaC4KCjIwMDAtMDgtMTAgIERyZXcgTW9zZWxleSAgPGRtb3NlbGV5QHJlZGhhdC5jb20+CgoJKiBjb25maWcvbW4xMDMwMC9tbjEwMzAwLmg6IEFkZGVkIG5vLWNydDAgb3B0aW9uIGZvciBleHBsaWNpdGx5CglkaXNhYmxpbmcganVzdCBjcnQwLm8uCgoyMDAwLTA4LTEwICBSaWNoYXJkIEVhcm5zaGF3IDxyZWFybnNoYXdAYXJtLmNvbT4gJiBOaWNrIENsaWZ0b24gIDxuaWNrY0BjeWdudXMuY29tPgoKCSogYXJtLmggKENQUF9TUEVDKTogVXNlIHN1Yi1zcGVjIGNwcF9pbnRlcndvcmsuCgkoQ1BQX0lOVEVSV09SS19TUEVDLCBDUFBfSU5URVJXT1JLX0RFRkFVTFRfU1BFQyk6IE5ldyBzdWItc3BlY3MuCgkoRVhUUkFfU1BFQ1MpOiBBZGQgdGhlbS4KCSogYXJtL2xpYjFmdW5jcy5hc206IFN1cHBvcnQgYnVpbGRzIGZvciBpbnRlcndvcmtpbmcuCglVc2UgbWFjcm9zIHRvIGVsaW1pbmF0ZSBkdXBsaWNhdGVkIHBpZWNlcyBvZiBjb2RlLgoKMjAwMC0wOC0xMCAgS2F6dSBIaXJhdGEgIDxrYXp1QGh4aS5jb20+CgoJKiBoODMwMC5jIChleHBhbmRfYV9yb3RhdGUpOiBOZXcuCgkoZW1pdF9hX3JvdGF0ZSk6IExpa2V3aXNlLgoJKGg4MzAwX2FkanVzdF9pbnNuX2xlbmd0aCk6IEFkZCBzdXBwb3J0IGZvciB0aGUgcm90YXRlIGluc25zLgoJKiBoODMwMC5tZCAocm90bHFpMyk6IE5ldy4KCSgqcm90bHFpM18xKTogTGlrZXdpc2UuCgkocm90bGhpMyk6IExpa2V3aXNlLgoJKCpyb3RsaGkzXzEpOiBMaWtld2lzZS4KCShyb3RsaGkzKTogTGlrZXdpc2UuCgkoKnJvdGxoaTNfMSk6IExpa2V3aXNlLgoJKiBoODMwMC1wcm90by5oOiBBZGQgcHJvdG90eXBlcyBmb3IgZXhwYW5kX2Ffcm90YXRlIGFuZAoJZW1pdF9hX3JvdGF0ZS4KCgkqIGg4MzAwLmM6IEZpeCBjb21tZW50IHR5cG9zLgoJKGRvc2l6ZSk6IERlY2xhcmUgdGhlIHZhcmlhYmxlIGFtb3VudCBhcyB1bnNpZ25lZC4KCShnZXRfc2hpZnRfYWxnKTogRml4IGEgY29tcGFyaXNvbiBiZXR3ZWVuIHNpZ25lZCBhbmQgdW5zaWduZWQuCgkoZW1pdF9hX3NoaWZ0KTogTGlrZXdpc2UuCgkoaDgzMDBfYWRqdXN0X2luc25fbGVuZ3RoKTogU2ltcGxpZnkgdGhlIGNvZGUuCgoJKiBjLWRlY2wuYzogRml4IGZvcm1hdHRpbmcuCgoyMDAwLTA4LTEwICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBjLWxleC5jIChwYXJzZV9mbG9hdCwgeXlsZXgpOiBGb3IgLVd0cmFkaXRpb25hbCwgaXNzdWUgYQoJd2FybmluZyBhYm91dCBub24tdHJhZGl0aW9uYWwgbnVtZXJpYyBjb25zdGFudCBzdWZmaXhlcy4KCgkqIGNwcGV4cC5jIChwYXJzZV9udW1iZXIpOiBMaWtld2lzZS4KCgkqIGludm9rZS50ZXhpOiAoLVd0cmFkaXRpb25hbCk6IERvY3VtZW50IG5ldyBiZWhhdmlvci4KClRodSBBdWcgMTAgMDA6MTE6MDQgMjAwMCAgT3ZpZGl1IFByZWRlc2N1ICA8b3ZpZGl1QGN1cC5ocC5jb20+CgoJKiBndGhyLXBvc2l4Lmg6IEluY2x1ZGUgYXV0by1ob3N0LmguIENvbmRpdGlvbmFsbHkgaW5jbHVkZQoJPHNjaGVkLmg+LgoJKiBjb25maWd1cmUuaW46IENoZWNrIGZvciB0aGUgPHNjaGVkLmg+IGhlYWRlciBmaWxlLgoJKiBjb25maWcuaW46IEFkZGVkIGRlZmluZSBmb3IgSEFWRV9TQ0hFRF9ILgoKMjAwMC0wOC0wOSAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogYy10eXBlY2suYyAocHJvY2Vzc19pbml0X2VsZW1lbnQpOiBGb3IgLVd0cmFkaXRpb25hbCwgd2FybiBhYm91dAoJaW5pdGlhbGl6YXRpb24gb2YgdW5pb25zLgoKCSogaW52b2tlLnRleGkgKC1XdHJhZGl0aW9uYWwpOiBEb2N1bWVudCBuZXcgYmVoYXZpb3IuCgoyMDAwLTA4LTA5ICBaYWNrIFdlaW5iZXJnICA8emFja0B3b2xlcnkuY3VtYi5vcmc+CgoJKiBjb25maWd1cmUuaW4gKC0tZW5hYmxlLWMtY3BwbGliKTogVW5jb21tZW50LiAgVXNlIEFDX0RFRklORQoJaW5zdGVhZCBvZiBleHRyYV9jX2ZsYWdzLgoJKC0tZW5hYmxlLWMtbWJjaGFyKTogVXNlIEFDX0RFRklORSBpbnN0ZWFkIG9mIGV4dHJhX2NfZmxhZ3MuCgkqIGNvbmZpZ3VyZTogUmVnZW5lcmF0ZS4KCSogY29uZmlnLmluOiBSZWdlbmVyYXRlLgoKCSogY3BwZXJyb3IuYyAoY3BwX3R5cGUybmFtZSk6IE5ldyBmdW5jdGlvbi4KCSogY3BwbGV4LmMgKGxleF9saW5lKTogSWYgd2UgaXNzdWVkIGFuIGVycm9yIGZvciBhbiBpbnZhbGlkCglwcmVwcm9jZXNzaW5nIGRpcmVjdGl2ZSwgZGlzY2FyZCB0aGF0IGxvZ2ljYWwgbGluZS4KCSogY3BwbGliLmMgKGRvX2xpbmUpOiBDYWxsIGEgaG9vayBmdW5jdGlvbiBpZiB0aGUgY3VycmVudCBmaWxlCglpcyByZW5hbWVkIGJ5ICNsaW5lLgoJKGRvX2lkZW50KTogUGFzcyB0aGUgY29udGVudHMgb2YgdGhlIHN0cmluZywgbm90IHRoZSBlbnRpcmUKCXRva2VuLCB0byB0aGUgY2FsbGJhY2sgZnVuY3Rpb24uCgkqIGNwcGxpYi5oIChDUFBfTEFTVF9QVU5DVFVBVE9SKTogTmV3ICNkZWZpbmUuCgkoY2IucmVuYW1lX2ZpbGUpOiBOZXcgaG9vayBmdW5jdGlvbi4KCShjYi5pZGVudCk6IEFkanVzdCBwcm90b3R5cGUuCgkoY3BwX3R5cGUybmFtZSk6IFByb3RvdHlwZS4KCSogY3BwbWFjcm8uYyAoZHVtcF9tYWNyb19hcmdzKTogQ29ycmVjdCBwcmVjZWRlbmNlIGxvc3NhZ2UuCgoJKiBjcHBtYWluLmMgKGNiX2lkZW50KTogVXBkYXRlIGZvciBjaGFuZ2VkIGludGVyZmFjZS4KCShjYl9yZW5hbWVfZmlsZSk6IE5ldyBmdW5jdGlvbi4KCShtYWluKTogU2V0IHJlbmFtZSBjYWxsYmFjay4KCjIwMDAtMDgtMDkgIEFsZXhhbmRyZSBPbGl2YSAgPGFvbGl2YUByZWRoYXQuY29tPgoKCSogY2FsbGVyLXNhdmUuYyAobWFya19yZWZlcmVuY2VkX3JlZ3MpOiBNYXJrIHBhcnRpYWxseS1vdmVyd3JpdHRlbgoJbXVsdGktd29yZCByZWdpc3RlcnMuCgoyMDAwLTA4LTA4ICBKb3NlcGggUy4gTXllcnMgIDxqc20yOEBjYW0uYWMudWs+CgoJKiBjLWNvbW1vbi5jIChjb21iaW5lX3N0cmluZ3MsIGNoZWNrX2Zvcm1hdF9pbmZvKTogUmVmZXIgdG8gSVNPIEMKCW9yIElTTyBDODkgaW5zdGVhZCBvZiBBTlNJIEMuCgkqIGMtZGVjbC5jIChncm9rZGVjbGFyYXRvciwgeHJlZl90YWcsIGZpbmlzaF9zdHJ1Y3QsCglidWlsZF9lbnVtZXJhdG9yLCBkb19jYXNlKTogTGlrZXdpc2UuCgkqIGMtbGV4LmMgKHBhcnNlX2Zsb2F0LCB5eWxleCk6IExpa2V3aXNlLgoJKiBjLXBhcnNlLmluOiBMaWtld2lzZS4KCSogYy10eXBlY2suYyAoY29tbW9uX3R5cGUsIGJ1aWxkX2FycmF5X3JlZiwgYnVpbGRfYmluYXJ5X29wLAoJYnVpbGRfdW5hcnlfb3AsIHBlZGFudGljX2x2YWx1ZV93YXJuaW5nLCBidWlsZF9jb25kaXRpb25hbF9leHByLAoJYnVpbGRfY19jYXN0LCBjb252ZXJ0X2Zvcl9hc3NpZ25tZW50LCBzZXRfaW5pdF9pbmRleCwKCXNldF9pbml0X2xhYmVsLCBjX2V4cGFuZF9zdGFydF9jYXNlKTogTGlrZXdpc2UuCgkqIHRvcGxldi5jIChkb2N1bWVudGVkX2xhbmdfb3B0aW9ucywgZGlzcGxheV9oZWxwKTogTGlrZXdpc2UuCgoyMDAwLTA4LTA4ICBLYXp1IEhpcmF0YSAgPGthenVAaHhpLmNvbT4KCgkqIGg4MzAwLmM6IEZpeCBmb3JtYXR0aW5nLgoJKiBoODMwMC5oOiBMaWtld2lzZS4KCSogaDgzMDAubWQ6IExpa2V3aXNlLgoJKG1vdnNpX2g4MzAwaHMpOiBGaXggZm9ybWF0dGluZyBvZiB0aGUgcmVzdWx0aW5nIGFzc2VtYmx5IGNvZGUuCgoJKiByZWxvYWQxLmM6IEZpeCBmb3JtYXR0aW5nLgoKMjAwMC0wOC0wOCAgUm9kbmV5IEJyb3duICA8Um9kbmV5QnJvd25AbXluZC5jb20+CgoJKiBhbHBoYS9hbHBoYS5jIChhbHBoYV9lbWl0X3hmbG9hdGluZ19saWJjYWxsKToKCVVzZSBHRU5fQ0FMTF9WQUxVRSBkZWZpbmUuCgkqIGFscGhhL2FscGhhLm1kICh1bnR5cGVkX2NhbGwpOiBVc2UgR0VOX0NBTEwgZGVmaW5lLgoJKiBjbGlwcGVyL2NsaXBwZXIubWQgKHVudHlwZWRfY2FsbCk6IExpa2V3aXNlLgoJKiBkc3AxNnh4L2RzcDE2eHgubWQgKHVudHlwZWRfY2FsbCk6IExpa2V3aXNlLgoJKiBmeDgwL2Z4ODAubWQgKHVudHlwZWRfY2FsbCk6IExpa2V3aXNlLgoJKiBtaXBzL21pcHMubWQgKHVudHlwZWRfY2FsbCk6IExpa2V3aXNlLgoJKiBuczMyay9uczMyay5tZCAodW50eXBlZF9jYWxsKTogTGlrZXdpc2UuCgkqIHBhL3BhLm1kICh1bnR5cGVkX2NhbGwpOiBMaWtld2lzZS4KCSogcm9tcC9yb21wLm1kICh1bnR5cGVkX2NhbGwpOiBMaWtld2lzZS4KCSogc3BhcmMvc3BhcmMubWQgKHVudHlwZWRfY2FsbCk6IExpa2V3aXNlLgoKMjAwMC0wOC0wOCAgSmFzb24gRWNraGFyZHQgIDxqbGVAY3lnbnVzLmNvbT4KCgkqIGNvbmZpZy9pODYwL2k4NjAuYyAoc2luZ2xlbW92ZV9zdHJpbmcpOiBEbyBub3QgZ2VuZXJhdGUgYXNzZW1ibGVyCglwc2V1ZG8gaW5zdHJ1Y3Rpb25zIHRoYXQgbXVzdCBiZSBleHBhbmRlZCAodGhhdCBpcywgd2l0aCBzaWduZWQKCWNvbnN0YW50cyBsYXJnZXIgdGhhbiAxNiBiaXRzKS4KCjIwMDAtMDgtMDggIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgoJKiBmbG93LmMgKGxpZmVfYW5hbHlzaXMpOiBPbmx5IHR1cm4gb2ZmIFBST1BfTE9HX0xJTktTIGFuZAoJUFJPUF9BVVRPSU5DIGF0IC1PMC4gIERvbid0IGNvbGxlY3QgYWxpYXMgaW5mbyBhdCAtTzAuCgkoaW5pdF9wcm9wYWdhdGVfYmxvY2tfaW5mbyk6IERvbid0IGtpbGwgbWVtb3J5IHN0b3JlcyBhdCAtTzAuCgkobWFya19zZXRfMSwgbWFya191c2VkX3JlZ3MpOiBMaWtld2lzZS4KCjIwMDAtMDgtMDggIERhdmlkIEVkZWxzb2huICA8ZWRlbHNvaG5AZ251Lm9yZz4KCgkqIHJzNjAwMC5jIChvcHRpbWl6YXRpb25fb3B0aW9ucyk6IERlY29yYXRlICdsZXZlbCcgYXMKCUFUVFJJQlVURV9VTlVTRUQuCgkobWFzazY0X29wZXJhbmQpOiBSZW1vdmUgc2lnbi1leHRlbmQgdGhpbmtvLgoJKHJsZGljX29wZXJhbmQpOiBOZXcgZnVuY3Rpb24uCgkobG9hZF9tdWx0aXBsZV9vcGVyYXRpb24pOiByZWdubydzIGFyZSB1bnNpZ25lZCBpbnRzLgoJKHN0b3JlX211bHRpcGxlX29wZXJhdGlvbik6IExpa2V3aXNlLgoJKGxtd19vcGVyYXRpb24pOiBMaWtld2lzZS4KCShzdG13X29wZXJhdGlvbik6IExpa2V3aXNlLgoJKGluY2x1ZGVzX2xzaGlmdF9wKTogc2hpZnRfbWFzayBpcyB1bnNpZ25lZCBpbnQuCgkoaW5jbHVkZXNfbHNoaWZ0NjRfcCk6IE5ldyBmdW5jdGlvbi4KCShhZGRyc19va19mb3JfcXVhZF9wZWVwKTogdW5zaWduZWQgaW50IHJlZzEuCgkocHJpbnRfb3BlcmFuZCk6IENvbnNpc3RlbnRseSBhZGQgImVsc2UiIGFmdGVyCglvdXRwdXRfb3BlcmFuZF9sb3NzYWdlKCkuCgkocHJpbnRfb3BlcmFuZCwgY2FzZSAnYicpOiBGb2xkIGluIGNhc2UgJ1cnLgoJKHByaW50X29wZXJhbmQsIGNhc2UgJ1cnKTogUHJpbnQgcmxkaWMgTUIgdmFsdWUuCgkob3V0cHV0X2VwaWxvZ3VlKTogVXBkYXRlIE9iamVjdGl2ZS1DIGxhbmd1YWdlIHN0cmluZy4KCShvdXRwdXRfdG9jKTogdW5zaWduZWQgSE9TVF9XSURFX0lOVCBsb3csIGNvbXBhcmUgdW5zaWduZWQuCgkqIHJzNjAwMC5oIChQUkVESUNBVEVfQ09ERVMpOiBBZGQgcmxkaWNfb3BlcmFuZC4KCSogcnM2MDAwLm1kIChhc2hsZGkzKTogQWRkIHJsZGljIGluc3RydWN0aW9uLgoJKGlvcmRpMywgeG9yZGkzKTogUmVtb3ZlIHJlZHVuZGFudCAiZWxzZSBpZiBDT05TVF9ET1VCTEUiLgoJKGNtcHNpX2ludGVybmFsMiwgY21wZGlfaW50ZXJhbDIpOiBVc2UgJ2InIG91dHB1dCB0ZW1wbGF0ZQoJbW9kaWZpZXIuCgoyMDAwLTA4LTA4ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEBjeWdudXMuY29tPgoKCSogY29uZmlnL2lhNjQvaWE2NC1wcm90b3MuaDogUmVtb3ZlIGR1cGxpY2F0ZXMuICBVcGRhdGUKCWZvciBtYXNzaXZlIGNvZGUgcmVhcnJhbmdlbWVudHMuCgkqIGNvbmZpZy9pYTY0L2lhNjQuYyAoaWE2NF9hcnBmc19yZWdubyk6IFJlbW92ZS4KCShpYTY0X3JwX3JlZ25vLCBpYTY0X2ZwX3JlZ25vLCBpYTY0X2lucHV0X3JlZ3MpOiBSZW1vdmUuCgkoaWE2NF9sb2NhbF9yZWdzLCBpYTY0X25lZWRfcmVnc3RrKTogUmVtb3ZlLgoJKGFyX2Njdl9yZWdfb3BlcmFuZCk6IE5ldy4KCShpYTY0X2dwX3NhdmVfcmVnKTogTmV3LgoJKHN0cnVjdCBpYTY0X2ZyYW1lX2luZm8pOiBDb21iaW5lIG1vc3Qgb2YgdGhlIHNpemUgZWxlbWVudHM7CglhZGQgbmV3IGdyIHNhdmUgZWxlbWVudHMuCgkoZmluZF9ncl9zcGlsbCk6IE5ldy4KCShuZXh0X3NjcmF0Y2hfZ3JfcmVnKTogTmV3LgoJKG1hcmtfcmVnX2dyX3VzZWRfbWFzayk6IE5ldy4KCShpYTY0X2NvbXB1dGVfZnJhbWVfc2l6ZSk6IFJld3JpdGUuICBBbGxvY2F0ZSBzcGVjaWFsIEFSIHJlZ3MKCXRvIEdSIGJhY2tpbmcgc3RvcmUgcmVncyB3aGVuIHBvc3NpYmxlLgoJKGlhNjRfaW5pdGlhbF9lbGltaW5hdGlvbl9vZmZzZXQpOiBOZXcuCgkoaWE2NF9yYXBfZnBfb2Zmc2V0KTogUmVtb3ZlLgoJKHNhdmVfcmVzdG9yZV9pbnNucyk6IFJlbW92ZS4KCShzZXR1cF9zcGlsbF9wb2ludGVycyk6IE5ldy4KCShmaW5pc2hfc3BpbGxfcG9pbnRlcnMpOiBOZXcuCgkoc3BpbGxfcmVzdG9yZV9tZW0pOiBOZXcuCgkoZG9fc3BpbGwsIGRvX3Jlc3RvcmUpOiBOZXcuCgkoaWE2NF9leHBhbmRfcHJvbG9ndWUpOiBSZXdyaXRlIHRvIHVzZSB0aGVtLgoJKGlhNjRfZXhwYW5kX2VwaWxvZ3VlKTogTGlrZXdpc2UuCgkoaWE2NF9kaXJlY3RfcmV0dXJuKTogVXBkYXRlIGZvciBjdXJyZW50X2ZyYW1lX2luZm8gY2hhbmdlcy4KCShpYTY0X2Z1bmN0aW9uX3Byb2xvZ3VlKTogU2ltcGxpZnkgLnByb2xvZ3VlIGVtaXNzaW9uLiAgRW1pdAoJLnNwaWxsIHdoZW4gbmVlZGVkLgoJKGlhNjRfc2V0dXBfaW5jb21pbmdfdmFyYXJncyk6IERvbid0IGV2ZXIgZW1pdCBydGwuCgkoaWE2NF9kYnhfcmVnaXN0ZXJfbnVtYmVyKTogTmV3LgoJKGlhNjRfaW5pdGlhbGl6ZV90cmFtcG9saW5lKTogTmV3LgoJKGlhNjRfc2Vjb25kYXJ5X3JlbG9hZF9jbGFzcyk6IFJlcXVlc3QgR1JfUkVHUyBmb3IgaW50ZWdlcgoJYXJpdGhtZXRpYyBkZXN0aW5lZCBmb3IgRlJfUkVHUy4KCShpYTY0X2luaXRfbWFjaGluZV9zdGF0dXMpOiBEb24ndCByZXNldCByZXR1cm5fYWRkcmVzc19wb2ludGVyX3J0eC4KCShpYTY0X21hcmtfbWFjaGluZV9zdGF0dXMpOiBNYXJrIGlhNjRfZ3Bfc2F2ZS4KCShyd3NfYWNjZXNzX3JlZ25vKTogUmVuYW1lIGZyb20gcndzX2FjY2Vzc19yZWc7IGRvbid0IHRyZWF0CglwcmVkaWNhdGVzIHNwZWNpYWxseS4KCShyd3NfYWNjZXNzX3JlZyk6IE5ldy4gIFVwZGF0ZSBhbGwgY2FsbGVycy4KCShydHhfbmVlZHNfYmFycmllcik6IFJlbW92ZSBkZWFkIHVuc3BlY3MuCgkoaWE2NF9lcGlsb2d1ZV91c2VzKTogTWFyayBhci5wZnMgYW5kIGFyLnVuYXQgbGl2ZSBvbiBleGl0LgoJKGlhNjRfZW5jb2RlX3NlY3Rpb25faW5mbyk6IFNpbGVuY2Ugc2lnbmVkL3Vuc2lnbmVkIHdhcm5pbmdzLgoJKHNwaWxsX29mZnNldCwgc3Bfb2Zmc2V0LCBzcGlsbF9vZmZzZXRfZW1pdHRlZCk6IFJlbW92ZS4KCSh0bXBfcmVnLCB0bXBfc2F2ZWQpOiBSZW1vdmUuCgkocHJvY2Vzc19zZXQpOiBSZXdyaXRlIHRvIGV4cGVjdCBjb21wbGljYXRlZCBiaXRzIHZpYQoJUkVHX0ZSQU1FX1JFTEFURURfRVhQUi4KCShpYTY0X2V4cGFuZF9mZXRjaF9hbmRfb3ApOiBVc2UgZW1pdF9tb3ZlX2luc247IGJlIGV4cGxpY2l0CglpbiB0aGUgdXNlIG9mIGFyLmNjdjsgbmV2ZXIgc2V0IFJUWF9VTkNIQU5HSU5HX1AuCgkoaWE2NF9leHBhbmRfb3BfYW5kX2ZldGNoKTogTGlrZXdpc2UuCgkoaWE2NF9leHBhbmRfY29tcGFyZV9hbmRfc3dhcCk6IExpa2V3aXNlLgoJKGlhNjRfZXhwYW5kX2J1aWx0aW4pOiBMaWtld2lzZS4KCSogY29uZmlnL2lhNjQvaWE2NC5oIChBUl9VTkFUX1JFR05VTSk6IE5ldy4KCShGSVJTVF9QU0VVRE9fUkVHSVNURVIpOiBVcGRhdGUuCgkoQVJfTV9SRUdOT19QKTogVXBkYXRlLgoJKEZJWEVEX1JFR1MpOiBEb24ndCBtYXJrIHRocmVlIGxvY2FsIHJlZ2lzdGVycyBhcyB1c2VkLgoJKEVYVFJBX0NDX01PREVTKTogTmV3LgoJKFNFTEVDVF9DQ19NT0RFKTogTmV3LgoJKEhBUkRfUkVHTk9fTlJFR1MpOiBBbGxvdyBESW1vZGUgaW4gcDA7IGhhbmRsZSBDQ0ltb2RlLgoJKEhBUkRfUkVHTk9fTU9ERV9PSyk6IERpc2FsbG93IENDSW1vZGUgZnJvbSBub24tcHJlZGljYXRlcy4KCShGUkFNRV9HUk9XU19ET1dOV0FSRCk6IFVuc2V0LgoJKFNUQVJUSU5HX0ZSQU1FX09GRlNFVCk6IFplcm8uCgkoRUxJTUlOQUJMRV9SRUdTKTogRWxpbWluYXRlIGZyb20gdGhlIHNvZnQgdG8gaGFyZCBmcmFtZSBwb2ludGVyLgoJKElOSVRJQUxfRUxJTUlOQVRJT05fT0ZGU0VUKTogRGVmZXIgdG8gb3V0IG9mIGxpbmUgZnVuY3Rpb24uCgkoSEFSRF9GUkFNRV9QT0lOVEVSX1JFR05VTSk6IE5ldy4KCShDQU5fREVCVUdfV0lUSE9VVF9GUCk6IERlZmluZS4KCShUUkFNUE9MSU5FX1RFTVBMQVRFKTogUmVtb3ZlLgoJKFRSQU1QT0xJTkVfU0laRSk6IExvd2VyIHRvIDMyLgoJKFRSQU1QT0xJTkVfQUxJR05NRU5UKTogTG93ZXIgdG8gNjQuCgkoSU5JVElBTElaRV9UUkFNUE9MSU5FKTogRGVmZXIgdG8gb3V0IG9mIGxpbmUgZnVuY3Rpb24uCgkoUFJFRElDQVRFX0NPREVTKTogVXBkYXRlLgoJKHN0cnVjdCBtYWNoaW5lX2Z1bmN0aW9uKTogQWRkIGlhNjRfZ3Bfc2F2ZS4KCSogY29uZmlnL2lhNjQvaWE2NC5tZDogUHVyZ2UgdW51c2VkIHVuc3BlY3MuCgkobW92c2kgcGF0dGVybnMpOiBBbGxvdyBtb3ZlcyB0by9mcm9tIEFSX01fUkVHUy4KCShtb3ZkaSBwYXR0ZXJucyk6IEFsbG93IG1vdmVzIHRvL2Zyb20gcDAuCgkoY2FsbCBwYXR0ZXJucyk6IE1vdmUgbW9zdCBzZXRqbXAgaGFja2VyeSB0byBpYTY0X2dwX3NhdmVfcmVnLgoJKGdyX3NwaWxsLCBncl9yZXN0b3JlKTogSW5kaWNhdGUgYXIudW5hdCByZWFkL3dyaXR0ZW4uCgkobm9ubG9jYWxfZ290byk6IERvbid0IHBhc3Mgb2xkIGZyYW1lX3BvaW50ZXIuCgkobm9ubG9jYWxfZ290b19yZWNlaXZlcik6IFJlbW92ZS4KCShleGNlcHRpb25fcmVjZWl2ZXIpOiBOZXcuCgkoYnVpbHRpbl9zZXRqbXBfc2V0dXApOiBOZXcuCgkoYnVpbHRpbl9zZXRqbXBfcmVjZWl2ZXIpOiBOZXcuCgkqIGNvbmZpZy9pYTY0L2xpYjFmdW5jcy5hc20gKF9faWE2NF9zYXZlX3N0YWNrX25vbmxvY2FsKTogQnVuZGxlLgoJKF9faWE2NF9ub25sb2NhbF9nb3RvKTogQnVuZGxlLiAgRG9uJ3Qga2lsbCByNy4KCShfX2lhNjRfcmVzdG9yZV9zdGFja19ub25sb2NhbCk6IExpa2V3aXNlLgoJKF9faWE2NF90cmFtcG9saW5lKTogTmV3LgoJKiBjb25maWcvaWE2NC9zeXN2NC5oIChEQlhfUkVHSVNURVJfTlVNQkVSKTogRGVmZXIgdG8gb3V0IG9mIGxpbmUKCWZ1bmN0aW9uLgoJKiBjb25maWcvaWE2NC90LWlhNjQgKExJQjFBU01GVU5DUyk6IEFkZCBfX3RyYW1wb2xpbmUuCgoyMDAwLTA4LTA4ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEBjeWdudXMuY29tPgoKCSogZnJhbWUuaCAoaWE2NF9mcmFtZV9zdGF0ZSk6IEFkZCBteV9wc3AuCgkqIGxpYmdjYzIuYyAoaWE2NF90aHJvd19oZWxwZXIpOiBBZGQgdGhyb3dfc3AgYXJndW1lbnQuCgkoX190aHJvdyk6IFBhc3MgaXQgaW4uICBEb24ndCBjbG9iYmVyIHI3LgoJKiBjb25maWcvaWE2NC9mcmFtZS1pYTY0LmMgKGluaXRfaWE2NF9yZWdfbG9jKTogTWFyayBpbmxpbmUuCgkoZXhlY3V0ZV9vbmVfaWE2NF9kZXNjcmlwdG9yKSBbbWVtX3N0YWNrX3ZdOiBTZXRzIHBzcC53aGVuCglhbmQgbm90aGluZyB0byBkbyB3aXRoIHNwLgoJKG5vcm1hbGl6ZV9yZWdfbG9jKTogVXNlIGZyYW1lLT5teV9wc3AuCgkoZnJhbWVfdHJhbnNsYXRlKTogSGFuZGxlIGZyYW1lLXBvaW50ZXItbGVzcyBmdW5jdGlvbnMuICBTZXQKCXNwaWxsX2Jhc2UgY29ycmVjdGx5LCBpbiBhYnNlbmNlIG9mIGJlaW5nIHRvbGQuCgkoX19idWlsZF9pYTY0X2ZyYW1lX3N0YXRlKTogTmV3IHNwIGFyZ3VtZW50LiAgRmlsbCBpbiBmcmFtZS0+bXlfc3AuCgkoX19pYTY0X2JhY2t0cmFjZV9oZWxwZXIpOiBOZXcgc3AgYXJndW1lbnQuICBVc2UKCWJ1aWx0aW5fcmV0dXJuX2FkZHJlc3MgaW5zdGVhZCBvZiBsYWJlbCBhZGRyZXNzZXMuCgkocHJpbnRfcmVjb3JkKSBbbWVtX3N0YWNrX3ZdOiBObyBzaXplIG1lbWJlci4KCjIwMDAtMDgtMDggIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgoJKiByZWdjbGFzcy5jIChjaG9vc2VfaGFyZF9yZWdfbW9kZSk6IEl0ZXJhdGUgb3ZlciBhbGwgQ0MgbW9kZXMuCgoyMDAwLTA4LTA4ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEBjeWdudXMuY29tPgoKCSogdG0udGV4aSAoTE9DQUxfUkVHTk8pOiBEb2N1bWVudC4KCSogZmxvdy5jIChMT0NBTF9SRUdOTywgRVBJTE9HVUVfVVNFUyk6IFByb3ZpZGUgZGVmYXVsdC4KCShtYXJrX3JlZ3NfbGl2ZV9hdF9lbmQpOiBEb24ndCBtYXJrIExPQ0FMX1JFR05PIHJlZ2lzdGVycy4KCSogcmVsb2FkMS5jIChyZWxvYWQpOiBMaWtld2lzZSB3aGVuIGNvbnNpZGVyaW5nIG5vbmxvY2FsIGxhYmVscy4KCgkqIGNvbmZpZy9pYTY0L2lhNjQuaCAoTE9DQUxfUkVHTk8pOiBOZXcuCgkqIGNvbmZpZy9zcGFyYy9zcGFyYy5oIChMT0NBTF9SRUdOTyk6IE5ldy4KCjIwMDAtMDgtMDggIEpvc2VwaCBTLiBNeWVycyAgPGpzbTI4QGNhbS5hYy51az4KCgkqIGMtbGV4LmMgKHl5bGV4KTogRG9uJ3QgYWxsb3cgaW50ZWdlciBzdWZmaXhlcyAnTFVMJywgJ0xsJywgJ2xMJy4KCjIwMDAtMDgtMDcgIE5pY2sgQ2xpZnRvbiAgPG5pY2tjQHJlZGhhdC5jb20+CgoJKiBjb25maWcvbWlwcy9taXBzLmM6IEZpeCBjb21waWxlIHRpbWUgd2FybmluZyBtZXNzYWdlcy4KCSogY29uZmlnL21pcHMvbWlwcy1wcm90b3MuaDogQWRkIHByb3RvdHlwZSBmb3IgZXF1YWxpdHlfb3AuCgoJKiBtbjEwMzAwLmggKFRBUkdFVF9TV0lUQ0hFUyk6IERvY3VtZW50IGAtbWFtMzMnLgoKMjAwMC0wOC0wNyAgR3JhaGFtIFN0b3R0ICA8Z3JhaGFtc0BjeWdudXMuY28udWs+CgoJKiBtbjEwMzAwLm1kOiBVc2Ugbm9uaW1tZWRpYXRlX29wZXJhbmQgaW5zdGVhZCBvZiBnZW5lcmFsX29wZXJhbmQKCW9uIG91dHB1dCBvcGVyYW5kcy4KCgkqIG1uMTAzMDAuaCAoUFJFRkVSUkVEX1JFTE9BRF9DTEFTUyk6IExpbWl0IG1lbW9yeSByZWxvYWRzLgoKMjAwMC0wOC0wNyAgQWxleGFuZHJlIE9saXZhICA8YW9saXZhQHJlZGhhdC5jb20+CgoJKiBzaC5oIChFWFRSQV9DT05TVFJBSU5UX1EpOiBBZGp1c3QgdG8gR05VIENvZGluZyBTdGFuZGFyZHMuCgkqIHNoLmMgKGV4cGFuZF9ibG9ja19tb3ZlKTogQnJlYWsgbG9uZyBsaW5lcy4KCShleHBhbmRfYXNoaWZ0cnQsIGZwc2NyX3NldF9mcm9tX21lbSk6IExpa2V3aXNlLgoJKiBzaC5tZCAobXVsc2kzKTogTGlrZXdpc2UuCgkobW92ZGkpOiBBZGp1c3Qgc3BhY2luZy4KCjIwMDAtMDgtMDcgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgoJKiBleHBtZWQuYyAoc3RvcmVfYml0X2ZpZWxkKTogRG9uJ3QgcmVxdWlyZSBNRU1fSU5fU1RSVUNUX1AuCgkqIGV4cHIuYyAoZW1pdF9ncm91cF9zdG9yZSk6IERvbid0IHNldCBpdC4KCjIwMDAtMDgtMDcgIEthenUgSGlyYXRhICA8a2F6dUBoeGkuY29tPgoKCSogaW52b2tlLnRleGkgKE9wdGlvbnMgZm9yIERlYnVnZ2luZyBZb3VyIFByb2dyYW0gb3IgR0NDKTogUmVtb3ZlCglkdXBsaWNhdGUgZW50cmllcyBmb3IgJ3cnIGFuZCAneicuCgoJKiBmbG93LmM6IEZpeCBhIGNvbW1lbnQgdHlwby4KClN1biBBdWcgIDYgMjM6NDc6MzUgMjAwMCAgT3ZpZGl1IFByZWRlc2N1ICA8b3ZpZGl1QGN1cC5ocC5jb20+CgoJKiBjLXBhcnNlLmluOiBDaGFuZ2VkIHRoZSBsYW5ndWFnZSBzdHJpbmcgZm9yIE9iamVjdGl2ZS1DIHRvICJHTlUKCU9iamVjdGl2ZS1DIi4KClN1biBBdWcgIDYgMTE6NTQ6MDMgMjAwMCAgT3ZpZGl1IFByZWRlc2N1ICA8b3ZpZGl1QGN1cC5ocC5jb20+CgoJKiBndGhyLXBvc2l4Lmg6IEludGVncmF0ZWQgQ2hyaXMgQmFsbCdzIDxjYmFsbEBmbWNvLmNvbT4gY2hhbmdlcwoJdG8gaW1wcm92ZSB0aGUgUG9zaXggdGhyZWFkIHN1cHBvcnQgZm9yIE9iamVjdGl2ZS1DLgoKMjAwMC0wOC0wNiAgSm9zZXBoIFMuIE15ZXJzICA8anNtMjhAY2FtLmFjLnVrPgoKCSogYy1jb21tb24uaCAoZW51bSBjX3RyZWVfaW5kZXgpOiBBZGQgQ1RJX1NJR05FRF9TSVpFX1RZUEUgYW5kCglDVElfVU5TSUdORURfUFRSRElGRl9UWVBFLgoJKHNpZ25lZF9zaXplX3R5cGVfbm9kZSk6IERlZmluZS4KCSh1bnNpZ25lZF9wdHJkaWZmX3R5cGVfbm9kZSk6IERlZmluZS4KCSogYy1kZWNsLmMgKGluaXRfZGVjbF9wcm9jZXNzaW5nKTogQ3JlYXRlIHRoZQoJc2lnbmVkX3NpemVfdHlwZV9ub2RlIGFuZCB1bnNpZ25lZF9wdHJkaWZmX3R5cGVfbm9kZSB0eXBlcy4KCSogYy1jb21tb24uYyAoVF9TQyk6IERlZmluZS4KCShUX1NTVCk6IERlZmluZS4KCShUX1VQRCk6IERlZmluZS4KCShwcmludF9jaGFyX3RhYmxlKTogVXNlIFRfU1NUIGZvciAlemQsICV6aSwgJXpuLiAgVXNlIFRfVVBEIGZvcgoJJXRvLCAldHUsICV0eCwgJXRYLiAgQWxsb3cgJWhobiAoVF9TQykuICBBZGQgImMiIHRvIHRoZSBmbGFncyBmb3IKCSVzIGFuZCAlcC4KCShzY2FuX2NoYXJfdGFibGUpOiBVc2UgVF9TQyBmb3IgJWhoZCwgJWhoaSwgJWhobi4gIFVzZSBUX1NTVCBmb3IKCSV6ZCwgJXppLCAlem4uICBVc2UgVF9VUEQgZm9yICV0bywgJXR1LCAldHgsICV0WC4gIEFkZCAiYyIgdG8gdGhlCglmbGFncyBmb3IgJWMsICVzIGFuZCAlWy4KCShjaGVja19mb3JtYXRfaW5mbyk6IE9ubHkgYWxsb3cgbGVuaWVuY3kgZm9yIHNpZ25lZG5lc3Mgb2YgdGFyZ2V0cwoJb2YgY2hhcmFjdGVyIHBvaW50ZXJzICh3aGVuIHBlZGFudGljKSBmb3IgZm9ybWF0cyBmbGFnZ2VkIHdpdGgKCSJjIiwgc28gZm9yIHN0cmluZ3MgYnV0IG5vdCBmb3IgJWhoIGZvcm1hdHMuICBXaGVuIHBlZGFudGljLCBkb24ndAoJYWxsb3cgY2hhcmFjdGVyIHBvaW50ZXJzIHRvIHN1YnN0aXR1dGUgZm9yIHZvaWQgcG9pbnRlcnMgaWYgYQoJc2Vjb25kIGxldmVsIG9mIGluZGlyZWN0aW9uIGlzIHByZXNlbnQuCgoyMDAwLTA4LTA2ICBLYXp1IEhpcmF0YSAgPGthenVAaHhpLmNvbT4KCgkqIGludm9rZS50ZXhpIChPcHRpb25zIGZvciBEZWJ1Z2dpbmcgWW91ciBQcm9ncmFtIG9yIEdDQyk6IFVwZGF0ZQoJdGhlIG5hbWVzIG9mIGR1bXAgZmlsZXMuCgoJKiBoODMwMC5jIChkb3NpemUpOiBSZWFycmFuZ2UgY29kZSBmb3IgY29uY2lzZW5lc3MuCgkoc3BsaXRfYWRkc19zdWJzKTogTGlrZXdpc2UuCgoJKiBsb29wLmM6IEZpeCBmb3JtYXR0aW5nLgoKCSogZHdhcmYyb3V0LmM6IEZpeCBmb3JtYXR0aW5nLgoKCSogdG0udGV4aSAoRlVOQ1RJT05fQVJHX1BBUlRJQUxfTlJFR1MpOiBGaXggYSB0eXBvLgoKCSogZXhwci5jOiBGaXggZm9ybWF0dGluZy4KCjIwMDAtMDgtMDYgIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIHJzNjAwMC5jIChyczYwMDBfbWF5YmVfZGVhZCk6IFByb3RvdHlwZS4KCjIwMDAtMDgtMDYgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgoJKiBzdG10LmMgKGV4cGFuZF9nb3RvKTogRG8gdmlydHVhbF9zdGFja192YXJzX3J0eCByZXBsYWNlbWVudCBmb3IKCUhBVkVfbm9ubG9jYWxfZ290byBhcyB3ZWxsLgoJKiBjb25maWcvaTk2MC9pOTYwLm1kIChub25sb2NhbF9nb3RvKTogRG9uJ3QgZG8gaXQgaGVyZS4KCSogY29uZmlnL3BqL3BqLm1kIChub25sb2NhbF9nb3RvKTogTGlrZXdpc2UuCgoyMDAwLTA4LTA3ICBNaWNoYWVsIEhheWVzICA8bWhheWVzQGN5Z251cy5jb20+CgoJKiBsb29wLmMgKHRyeV9zd2FwX2NvcHlfcHJvcCk6IE5ldyBmdW5jdGlvbi4KCShsb2FkX21lbXMpOiBSZW5hbWUgY29waWVzIHRvIGxvYWRfY29waWVzIGFuZCBhZGQgbmV3IHJlZ3NldAoJc3RvcmVfY29waWVzLiAgQ2hlY2sgZm9yIHNldHMgb2Ygc2hhZG93IHJlZ2lzdGVycyBhbmQgbWFyawoJaW4gc3RvcmVfY29waWVzLiAgIENhbGwgdHJ5X3N3YXBfY29weV9wcm9wIGZvciByZWdpc3RlcnMKCW1hcmtlZCBpbiBzdG9yZV9jb3BpZXMuCgpTdW4gQXVnICA2IDAwOjU0OjQyIDIwMDAgIE92aWRpdSBQcmVkZXNjdSAgPG92aWRpdUBjdXAuaHAuY29tPgoKCSogb2JqYy9vYmpjLWFjdC5jOiBOZXcgY29tbWFuZCBsaW5lIG9wdGlvbiAtZmNvbnN0YW50LXN0cmluZy1jbGFzcwoJdG8gYWxsb3cgc3BlY2lmeWluZyBhIHVzZXIgZGVmaW5lZCBjb25zdGFudCBzdHJpbmcgY2xhc3MsCglkaWZmZXJlbnQgZnJvbSBOWENvbnN0YW50U3RyaW5nLgoKCSogdG9wbGV2LmM6IE1vdmVkIHRoZSBPYmplY3RpdmUtQyBzcGVjaWZpYyBvcHRpb25zIHRvCglvYmpjL2xhbmctb3B0aW9ucy5oLgoKCSogb2JqYy9sYW5nLW9wdGlvbnMuaDogTW92ZWQgdGhlIE9iamVjdGl2ZS1DIHNwZWNpZmljIG9wdGlvbnMgZnJvbQoJdG9wbGV2LmMuIEFkZGVkIC1mY29uc3RhbnQtc3RyaW5nLWNsYXNzLgoKMjAwMC0wOC0wNSAgQ2hyaXMgRGVtZXRyaW91ICA8Y2dkQHNpYnl0ZS5jb20+CgoJKiBtaXBzL2VsZi5oIChDVE9SX0xJU1RfQkVHSU4sIENUT1JfTElTVF9FTkQsCglEVE9SX0xJU1RfQkVHSU4sIERUT1JfTElTVF9FTkQpOiBjaGFuZ2UgdHlwZSBvZgoJX19DVE9SX0xJU1RfXyBmcm9tIGZ1bmNfcHRyIGFycmF5IHRvIGp1c3QgZnVuY19wdHIsIHRvCglhdm9pZCBleHRyYSBhbGlnbm1lbnQgaW1wb3NlZCBvbiBhcnJheXMuCgkqIG1pcHMvZWxmNjQuaCAoQ1RPUl9MSVNUX0JFR0lOLCBDVE9SX0xJU1RfRU5ELAoJRFRPUl9MSVNUX0JFR0lOLCBEVE9SX0xJU1RfRU5EKTogTGlrZXdpc2UuCgoJKiBtaXBzLmg6IENsZWFuIHVwIGNvbW1lbnRzIGFuZCBzcGFjaW5nIG5lYXIgTUFTS3MuCgkoVEFSR0VUX1VOSVhfQVNNKTogRGVsZXRlLgoJKE1BU0tfTUlQUzE2LCBNQVNLX05PX0NIRUNLX1pFUk9fRElWLCBNQVNLX0NIRUNLX1JBTkdFX0RJViwKCU1BU0tfVU5JTklUX0NPTlNUX0lOX1JPREFUQSk6IENoYW5nZSB2YWx1ZXMgdG8gbWFrZSBtYXNrCgl2YWx1ZXMgY29udGlndW91cy4KCjIwMDAtMDgtMDUgIEpvc2VwaCBTLiBNeWVycyAgPGpzbTI4QGNhbS5hYy51az4KCgkqIGMtY29tbW9uLmMgKHByaW50X2NoYXJfdGFibGUpOiBBZGQgZW50cmllcyBmb3IgdGhlIFgvT3BlbiAnCglmb3JtYXQgZmxhZyAocHJpbnQgZGVjaW1hbHMgd2l0aCBsb2NhbGUncyB0aG91c2FuZHMgZ3JvdXBpbmcKCWNoYXJhY3RlcikuICBNYWtlICVDIGV4cGVjdCB3aW50X3QuCgkoY2hlY2tfZm9ybWF0X2luZm8pOiBJZiBwZWRhbnRpYywgd2FybiB3aGVuIHRoZSAlbiQgb3BlcmFuZAoJbnVtYmVyIGZvcm0gaXMgdXNlZC4gIEFsbG93IGZvciB0aGUgJyBmbGFnOyB3YXJuIGFib3V0IGl0IGlmCglwZWRhbnRpYy4KCjIwMDAtMDgtMDUgIFphY2sgV2VpbmJlcmcgIDx6YWNrQHdvbGVyeS5jdW1iLm9yZz4KCgkqIGkzODYuaCAoRlVOQ1RJT05fT0tfRk9SX1NJQkNBTEwpOiAgTm90IE9LIGlmIERFQ0wncyByZXR1cm4KCXR5cGUgaXMgYSBmbG9hdCBtb2RlLCBjZnVuLT5kZWNsJ3MgcmV0dXJuIHR5cGUgaXMgbm90LCBhbmQKCVRBUkdFVF9GTE9BVF9SRVRVUk5TX0lOXzgwMzg3LgoKMjAwMC0wOC0wNCAgQW5kcmVhcyBTY2h3YWIgIDxzY2h3YWJAc3VzZS5kZT4KCgkqIGNwcG1haW4uYyAoY2JfZGVmX3ByYWdtYSk6IFNraXAgdGhlIGZpcnN0IHR3byB0b2tlbnMgZnJvbSB0aGUKCXRva2VuIGxpc3QsIHdoaWNoIGFyZSBhbHdheXMgYCMnIGFuZCBgcHJhZ21hJy4KCjIwMDAtMDgtMDQgIFphY2sgV2VpbmJlcmcgIDx6YWNrQHdvbGVyeS5jdW1iLm9yZz4KCgkqIHRyZWUuYyAodHJlZV9leHByX25vbm5lZ2F0aXZlX3ApOiBNb3ZlIHRvLi4uCgkqIGZvbGQtY29uc3QuYzogLi4uIGhlcmUuICBBbHNvIGhhbmRsZSBCSU5EX0VYUFIgYW5kIFJUTF9FWFBSLgoJKHJ0bF9leHByX25vbm5lZ2F0aXZlX3ApOiBOZXcuCgkqIHRyZWUuaDogQWRkIHByb3RvdHlwZSBmb3IgcnRsX2V4cHJfbm9ubmVnYXRpdmVfcC4KCgkqIHJlYWwuaCAoQ09OU1RfRE9VQkxFX0xPVywgQ09OU1RfRE9VQkxFX0hJR0gsIENPTlNUX0RPVUJMRV9NRU0sCglDT05TVF9ET1VCTEVfQ0hBSU46IE1vdmUgdG8uLi4KCSogcnRsLmg6IC4uLmhlcmUuICBVc2UgWENJTlQvWENFWFAuCgoJKiBNYWtlZmlsZS5pbjogUmVtb3ZlIHRvcGxldi5vIGZyb20gT0JKUy4gIEFkZCBydWxlIHRvIG1ha2UKCWxpYmJhY2tlbmQuYTsgYWRkIGxpYmJhY2tlbmQuYSB0byBTVEFHRVNUVUZGLiAgQWRkIEJBQ0tFTkQKCXZhcmlhYmxlLiAgVXNlIEJBQ0tFTkQgd2hlbiBsaW5raW5nIGNjMSwgbm90IE9CSlMuICBBZGQgQkFDS0VORAoJdG8gVk9MX0ZJTEVTLgoKCSogb2JqYy9NYWtlLWxhbmcuaW4gKGNjMW9iaik6IExpbmsgd2l0aCAkKEJBQ0tFTkQpLgoKMjAwMC0wOC0wNSAgSGVybWFuIEEuSi4gdGVuIEJydWdnZSA8SGFqLlRlbi5CcnVnZ2VAbmV0LkhDQy5ubD4KCgkqIGNvbmZpZy9jNHgvYzR4Lm1kIChyZXR1cm5faW5kaXJlY3RfaW50ZXJuYWwpOiBOZXcuCgkqIGNvbmZpZy9jNHgvYzR4LmMgKGM0eF9leHBhbmRfZXBpbG9ndWUpOiBVc2UgaXQuCgoyMDAwLTA4LTA0ICBKb3NlcGggUy4gTXllcnMgIDxqc20yOEBjYW0uYWMudWs+CgoJKiBjLWNvbW1vbi5jICh0aW1lX2NoYXJfdGFibGUpOiBNYXJrIHVwIGZvcm1hdHMgYWRkZWQgaW4gQzk5IGFuZAoJbWFrZSBvdGhlciBjb3JyZWN0aW9ucy4gICVEIGFuZCAlZyB3ZXJlIGFkZGVkIGluIEM5OS4gICVPZyBpcyBhbgoJZXh0ZW5zaW9uLiAgJUVYIGlzIHBlcm1pdHRlZC4gICVSLCAlVCwgJW4sICVyLCAldCB3ZXJlIGFkZGVkIGluCglDOTkuICAlZSB3YXMgYWRkZWQgaW4gQzk5LiAgJU9qIGlzIGFuIGV4dGVuc2lvbi4gICVHIGFuZCAleiBhcmUgaW4KCUM5OSByYXRoZXIgdGhhbiBHTlUgZXh0ZW5zaW9ucywgYnV0ICVPRyBhbmQgJU96IGFyZSBleHRlbnNpb25zLgoJJWggd2FzIGFkZGVkIGluIEM5OS4gICVDIHdhcyBhZGRlZCBpbiBDOTkuICAlT1kgYW5kICVPQyBhcmUKCWV4dGVuc2lvbnMuICBBZGQgdGhlIEM5OSBmb3JtYXQgJUYuCgkoY2hlY2tfZm9ybWF0X2luZm8pOiBJZiBwZWRhbnRpYyBhbmQgbm90IGluIEM5OSBtb2RlLCB3YXJuIGZvciBDOTkKCWZvcm1hdHMsICVFIGFuZCAlTy4KCkZyaSBBdWcgIDQgMjM6MDE6NTggMjAwMCAgSiJvcm4gUmVubmVja2UgPGFteWxhYXJAY3lnbnVzLmNvLnVrPgoKCSogZnVuY3Rpb24uYyAoc2NoZWR1bGVfZml4dXBfdmFyX3JlZnMpOiBOZXcgZnVuY3Rpb24sIGJyb2tlbiBvdXQKCW9mIHB1dF9yZWdfaW50b19zdGFjay4KCShwdXRfcmVnX2ludG9fc3RhY2spOiBVc2UgaXQuCgkocHV0X3Zhcl9pbnRvX3N0YWNrKTogSW4gQ09OQ0FUIGNhc2UsIGZpeHVwIHVwIHJlZmVyZW5jZXMgZm9yCgljb21wb25lbnRzIG9ubHkgYWZ0ZXIgZml4aW5nIHVwIHJlZmVyZW5jZXMgdG8gdGhlIHdob2xlIGNvbmNhdC4KCjIwMDAtMDgtMDQgIFJvZG5leSBCcm93biAgPFJvZG5leUJyb3duQHBtc2MuY29tPgoKCSogYWxpYXMuYyAobWFya19jb25zdGFudF9mdW5jdGlvbik6IFVzZSBJTlNOX1AuCgkoaW5pdF9hbGlhc19hbmFseXNpcyk6IExpa2V3aXNlLgoJKiBjb21iaW5lLmMgKGNvbWJpbmVfaW5zdHJ1Y3Rpb25zKTogVXNlIElOU05fUC4KCShjYW5fY29tYmluZV9wKTogTGlrZXdpc2UuCgkodHJ5X2NvbWJpbmUpOiBMaWtld2lzZS4KCShkaXN0cmlidXRlX25vdGVzKTogTGlrZXdpc2UuCgkoZGlzdHJpYnV0ZV9saW5rcyk6IExpa2V3aXNlLgoJKiBjc2UuYyAoY3NlX2Fyb3VuZF9sb29wKTogVXNlIElOU05fUC4KCShpbnZhbGlkYXRlX3NraXBwZWRfYmxvY2spOiBMaWtld2lzZS4KCShjc2Vfc2V0X2Fyb3VuZF9sb29wKTogTGlrZXdpc2UuCgkoY3NlX2VuZF9vZl9iYXNpY19ibG9jayk6IExpa2V3aXNlLgoJKGRlbGV0ZV90cml2aWFsbHlfZGVhZF9pbnNucyk6IExpa2V3aXNlLgoJKiBlbWl0LXJ0bC5jICh1bnNoYXJlX2FsbF9ydGxfYWdhaW4pOiBVc2UgSU5TTl9QLgoJKHVuc2hhcmVfYWxsX3J0bF8xKTogTGlrZXdpc2UuCgkobmV4dF9jYzBfdXNlcik6IExpa2V3aXNlLgoJKHRyeV9zcGxpdCBtYWtlX2luc25fcmF3KTogTGlrZXdpc2UuCgkocmVtb3ZlX3VubmVjZXNzYXJ5X25vdGVzKTogTGlrZXdpc2UuCgkqIGZpbmFsLmMgKHNob3J0ZW5fYnJhbmNoZXMpOiBVc2UgSU5TTl9QLgoJKGxlYWZfcmVudW1iZXJfcmVncyk6IExpa2V3aXNlLgoJKGxlYWZfcmVudW1iZXJfcmVnc19pbnNuKTogTGlrZXdpc2UuCgkqIGZsb3cuYyAoZmluZF9sYWJlbF9yZWZzKTogVXNlIElOU05fUC4KCSh2ZXJpZnlfd2lkZV9yZWcpOiBMaWtld2lzZS4KCShub3RpY2Vfc3RhY2tfcG9pbnRlcl9tb2RpZmljYXRpb24pOiBMaWtld2lzZS4KCShjb3VudF9vcl9yZW1vdmVfZGVhdGhfbm90ZXMpOiBMaWtld2lzZS4KCSh2ZXJpZnlfZmxvd19pbmZvKTogTGlrZXdpc2UuCgkoY2xlYXJfbG9nX2xpbmtzKTogTGlrZXdpc2UuCgkqIGZ1bmN0aW9uLmMgKGZpeHVwX3Zhcl9yZWZzX2luc25zKTogVXNlIElOU05fUC4KCShjb21wdXRlX2luc25zX2Zvcl9tZW0pOiBMaWtld2lzZS4KCSogZ2NzZS5jIChhbGxvY19nY3NlX21lbSk6IFVzZSBJTlNOX1AuCgkoY29tcHV0ZV9zZXRzKTogTGlrZXdpc2UuCgkoY29tcHV0ZV9oYXNoX3RhYmxlKTogTGlrZXdpc2UuCgkoY2xhc3NpY19nY3NlKTogTGlrZXdpc2UuCgkoY3Byb3ApOiBMaWtld2lzZS4KCShpbnNlcnRfaW5zbl9lbmRfYmIpOiBMaWtld2lzZS4KCShkZWxldGVfbnVsbF9wb2ludGVyX2NoZWNrc18xKTogTGlrZXdpc2UuCgkqIGdsb2JhbC5jIChleHBhbmRfcHJlZmVyZW5jZXMpOiBVc2UgSU5TTl9QLgoJKGJ1aWxkX2luc25fY2hhaW4pOiBMaWtld2lzZS4KCSogZ3JhcGguYyAobm9kZV9kYXRhKTogVXNlIElOU05fUC4KCSogaGFpZmEtc2NoZWQuYyAocHJpb3JpdHkpOiBVc2UgSU5TTl9QLgoJKHJtX2xpbmVfbm90ZXMpOiBMaWtld2lzZS4KCShybV9vdGhlcl9ub3Rlcyk6IExpa2V3aXNlLgoJKGZpbmRfaW5zbl9yZWdfd2VpZ2h0KTogTGlrZXdpc2UuCgkoaW5pdF90YXJnZXRfdW5pdHMpOiBMaWtld2lzZS4KCShzY2hlZHVsZV9ibG9jayk6IExpa2V3aXNlLgoJKGNvbXB1dGVfYmxvY2tfZm9yd2FyZF9kZXBlbmRlbmNlcyk6IExpa2V3aXNlLgoJKGRlYnVnX2RlcGVuZGVuY2llcyk6IExpa2V3aXNlLgoJKHNldF9wcmlvcml0aWVzKTogTGlrZXdpc2UuCgkqIGludGVncmF0ZS5jIChmdW5jdGlvbl9jYW5ub3RfaW5saW5lX3ApOiBVc2UgSU5TTl9QLgoJKHNhdmVfcGFybV9pbnNucyk6IExpa2V3aXNlLgoJKGNvcHlfaW5zbl9saXN0KTogTGlrZXdpc2UuCgkqIGp1bXAuYyAobWFya19hbGxfbGFiZWxzKTogVXNlIElOU05fUC4KCShuZXZlcl9yZWFjaGVkX3dhcm5pbmcpOiBMaWtld2lzZS4KCSogbGNtLmMgKG9wdGltaXplX21vZGVfc3dpdGNoaW5nKTogVXNlIElOU05fUC4KCSogbG9jYWwtYWxsb2MuYyAodmFsaWRhdGVfZXF1aXZfbWVtKTogVXNlIElOU05fUC4KCShtZW1yZWZfdXNlZF9iZXR3ZWVuX3ApOiBMaWtld2lzZS4KCSh1cGRhdGVfZXF1aXZfcmVncyk6IExpa2V3aXNlLgoJKGJsb2NrX2FsbG9jKTogTGlrZXdpc2UuCgkobm9fY29uZmxpY3RfcCk6IExpa2V3aXNlLgoJKiBsb29wLmMgKHNjYW5fbG9vcCk6IFVzZSBJTlNOX1AuCgkoZmluZF9hbmRfdmVyaWZ5X2xvb3BzKTogTGlrZXdpc2UuCgkoY291bnRfbG9vcF9yZWdzX3NldCk6IExpa2V3aXNlLgoJKGxvb3BfcmVnX3VzZWRfYmVmb3JlX3ApOiBMaWtld2lzZS4KCShzdHJlbmd0aF9yZWR1Y2UpOiBMaWtld2lzZS4KCShyZWNvbWJpbmVfZ2l2cyk6IExpa2V3aXNlLgoJKGNoZWNrX2RicmFfbG9vcCk6IExpa2V3aXNlLgoJKGxvYWRfbWVtcyk6IExpa2V3aXNlLgoJKHRyeV9jb3B5X3Byb3ApOiBMaWtld2lzZS4KCSogcHJpbnQtcnRsLmMgKHByaW50X3J0eCk6IFVzZSBJTlNOX1AuCgkqIHJlY29nLmMgKGZpbmRfc2luZ2xlX3VzZSk6IFVzZSBJTlNOX1AuCgkqIHJlZy1zdGFjay5jIChzdGFja19yZWdzX21lbnRpb25lZCk6IFVzZSBJTlNOX1AuCgkobmV4dF9mbGFnc191c2VyKTogTGlrZXdpc2UuCgkoc3dhcF9ydHhfY29uZGl0aW9uKTogTGlrZXdpc2UuCgkqIHJlZ21vdmUuYyAobWFya19mbGFnc19saWZlX3pvbmVzKTogVXNlIElOU05fUC4KCShvcHRpbWl6ZV9yZWdfY29weV8xKTogTGlrZXdpc2UuCgkob3B0aW1pemVfcmVnX2NvcHlfMik6IExpa2V3aXNlLgoJKG9wdGltaXplX3JlZ19jb3B5XzMpOiBMaWtld2lzZS4KCShyZWdfaXNfcmVtb3RlX2NvbnN0YW50X3ApOiBMaWtld2lzZS4KCShmaXh1cF9tYXRjaF8yKTogTGlrZXdpc2UuCgkocmVnbW92ZV9vcHRpbWl6ZSk6IExpa2V3aXNlLgoJKGZpeHVwX21hdGNoXzEpOiBMaWtld2lzZS4KCSogcmVncmVuYW1lLmMgKGJ1aWxkX2RlZl91c2UpOiBVc2UgSU5TTl9QLgoJKHJlcGxhY2VfcmVnX2luX2Jsb2NrKTogTGlrZXdpc2UuCgkoY29uc2lkZXJfdXNlKTogTGlrZXdpc2UuCgkqIHJlbG9hZC5jIChmaW5kX2VxdWl2X3JlZyk6IFVzZSBJTlNOX1AuCgkqIHJlbG9hZDEuYyAocmVsb2FkKTogVXNlIElOU05fUC4KCShtYXliZV9maXhfc3RhY2tfYXNtcyk6IExpa2V3aXNlLgoJKGNhbGN1bGF0ZV9uZWVkc19hbGxfaW5zbnMpOiBMaWtld2lzZS4KCShyZWxvYWRfYXNfbmVlZGVkKTogTGlrZXdpc2UuCgkoZW1pdF9vdXRwdXRfcmVsb2FkX2luc25zKTogTGlrZXdpc2UuCgkoZGVsZXRlX2FkZHJlc3NfcmVsb2Fkc18xKTogTGlrZXdpc2UuCgkocmVsb2FkX2NzZV9yZWdzXzEpOiBMaWtld2lzZS4KCShyZWxvYWRfY29tYmluZSk6IExpa2V3aXNlLgoJKHJlbG9hZF9jc2VfbW92ZTJhZGQpOiBMaWtld2lzZS4KCSogcmVvcmcuYyAocmVkdW5kYW50X2luc24pOiBVc2UgSU5TTl9QLgoJKGRicl9zY2hlZHVsZSk6IExpa2V3aXNlLgoJKiByZXNvdXJjZS5jIChmaW5kX2RlYWRfb3Jfc2V0X3JlZ2lzdGVycyk6IFVzZSBJTlNOX1AuCgkobWFya190YXJnZXRfbGl2ZV9yZWdzKTogTGlrZXdpc2UuCgkqIHJ0bGFuYWwuYyAocmVnX3VzZWRfYmV0d2Vlbl9wKTogVXNlIElOU05fUC4KCShyZWdfcmVmZXJlbmNlZF9iZXR3ZWVuX3ApOiBMaWtld2lzZS4KCShyZWdfc2V0X2JldHdlZW5fcCk6IExpa2V3aXNlLgoJKHJlZ19zZXRfcCk6IExpa2V3aXNlLgoJKHNpbmdsZV9zZXQpOiBMaWtld2lzZS4KCShtdWx0aXBsZV9zZXRzKTogTGlrZXdpc2UuCgkoZmluZF9sYXN0X3ZhbHVlKTogTGlrZXdpc2UuCgkocmVnX3NldF9sYXN0KTogTGlrZXdpc2UuCgkoZmluZF9yZWdfbm90ZSk6IExpa2V3aXNlLgoJKGZpbmRfcmVnbm9fbm90ZSk6IExpa2V3aXNlLgoJKiBzaWJjYWxsLmMgKHNlcXVlbmNlX3VzZXNfYWRkcmVzc29mKTogVXNlIElOU05fUC4KCSogc2ltcGxpZnktcnR4LmMgKGNzZWxpYl9wcm9jZXNzX2luc24pOiBVc2UgSU5TTl9QLgoJKiBzc2EuYyAoZmluZF9ldmFsdWF0aW9ucyk6IFVzZSBJTlNOX1AuCgkocmVuYW1lX2Jsb2NrKTogTGlrZXdpc2UuCgkocmVuYW1lX2VxdWl2YWxlbnRfcmVncyk6IExpa2V3aXNlLgoJKiB1bnJvbGwuYyAobG9vcF9maW5kX2VxdWl2X3ZhbHVlKTogVXNlIElOU05fUC4KCShzZXRfZG9taW5hdGVzX3VzZSk6IExpa2V3aXNlLgoJKiB2YXJhc20uYyAobWFya19jb25zdGFudF9wb29sKTogVXNlIElOU05fUC4KCShtYXJrX2NvbnN0YW50cyk6IExpa2V3aXNlLgoJKiBjb25maWcvYWxwaGEvYWxwaGEuYyAoYWxwaGFfZG9lc19mdW5jdGlvbl9uZWVkX2dwKTogVXNlIElOU05fUC4KCShhbHBoYWV2NF9uZXh0X2dyb3VwKTogTGlrZXdpc2UuCgkoYWxwaGFldjVfbmV4dF9ncm91cCk6IExpa2V3aXNlLgoJKiBjb25maWcvYzR4L2M0eC5jIChjNHhfcHJvY2Vzc19hZnRlcl9yZWxvYWQpOiBVc2UgSU5TTl9QLgoJKGM0eF9ycHRiX3JwdHNfcCk6IExpa2V3aXNlLgoJKiBjb25maWcvbWlwcy9taXBzLmMgKG1pcHMxNl9vcHRpbWl6ZV9ncCk6IFVzZSBJTlNOX1AuCgkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLmMgKHVzZXNfVE9DKTogVXNlIElOU05fUC4KCShyczYwMDBfYWRqdXN0X3ByaW9yaXR5KTogTGlrZXdpc2UuCgkqIGNvbmZpZy9zaC9zaC5jIChzaF9sb29wX2FsaWduKTogVXNlIElOU05fUC4KCShtYWNoaW5lX2RlcGVuZGVudF9yZW9yZyk6IExpa2V3aXNlLgoJKHNwbGl0X2JyYW5jaGVzKTogTGlrZXdpc2UuCgkqIGNvbmZpZy90YWhvZS90YWhvZS5jICh0YWhvZV9jbXBfY2hlY2spOiBVc2UgSU5TTl9QLgoKRnJpIEF1ZyAgNCAxMTo0Mzo0OSAyMDAwICBKb2huIFdlaGxlICAoam9obkBmZWl0aC5jb20pCgoJKiBjb21iaW5lLmMgKHJlY29nX2Zvcl9jb21iaW5lKTogUmVtb3ZlIHRoZSBvbGQgbm90ZXMKCXByaW9yIHRvIGF0dGVtcHRpbmcgdG8gcmVjb2duaXplIHRoZSBuZXcgcGF0dGVybi4KCShkaXN0cmlidXRlX25vdGVzKTogSWdub3JlIFJFR19OT05ORUcgbm90ZXMuCgoyMDAwLTA4LTA0ICBDaGFuZHJha2FsYSBDaGF2dmEgIDxjY2hhdnZhQHJlZGhhdC5jb20+CgoJKiB2YXJhc20uYyAob3V0cHV0X2NvbnN0cnVjdG9yKTogQWRkIC5hbGlnbiAwIGZvciBwYWNrZWQgdmFycy4KCjIwMDAtMDgtMDQgIEouIERhdmlkIEFuZ2xpbiAgPGRhdmVAaGlhdWx5MS5oaWEubnJjLmNhPgoKCSogY29uZmlndXJlLmluOiBVc2UgZGVmYXVsdCB0aHJlYWRfZmlsZSBldmVuIHdoZW4gZW5hYmxlX3RocmVhZHMgaXMKCXllcyBvciBkY2UgYmVjYXVzZSBocHV4MTAuMjAgcGEgcG9ydCB1c2VzIE1VTFRJTElCIGltcGxlbWVudGF0aW9uLgoJKiBjb25maWd1cmU6IFJlYnVpbHQuCgoJKiBndGhyLWRjZS5oIChfX2d0aHJlYWRfb2JqY19jb25kaXRpb25fYWxsb2NhdGUpOiBGaXggdHlwby4KCjIwMDAtMDgtMDQgIERvbm4gVGVycnkgKGRvbm50ZUBtaWNyb3NvZnQuY29tKQoKCSogcHJlZml4LmMgKHRyYW5zbGF0ZV9uYW1lKTogRG9uJ3Qgc3RyaXAgdHJhaWxpbmcgRElSX1NFUEFSQVRPUi4KCjIwMDAtMDgtMDQgIE1hcmsgRWxicmVjaHQgIDxzbm93YmFsbDNAYmlnZm9vdC5jb20+CgoJKiBpMzg2L3gtZGpncHA6IERlbGV0ZSBjb2RlIHRoYXQgY29uZGl0aW9uYWxseSBtb2RpZmllcyB0YXJnZXRfYWxpYXMuCglEZWxldGUgY29kZSB0aGF0IGNvbmRpdGlvbmFsbHkgbW9kaWZpZXMgJ3ZlcnNpb24nLgoJRGVsZXRlIFhfQ1BQRkxBR1MuIEFkZCBjb21tZW50IGZvciBTWVNURU1fSEVBREVSX0RJUi4KCSogaTM4Ni94bS1kamdwcC5oIChHQ0NfRFJJVkVSX0hPU1RfSU5JVElBTElaQVRJT04pOiBOZXcgbWFjcm8uCgkqIGdjYy5jIChtYWluKTogVXNlIGl0LgoJKiBjb25maWcvaTM4Ni94bS1kamdwcC5oIChVUERBVEVfUEFUSF9IT1NUX0NBTk9OSUNBTElaRSk6IE5ldyBtYWNyby4KCSogcHJlZml4LmMgKHVwZGF0ZV9wYXRoKTogVXNlIGl0LgoJKiBpMzg2L2RqZ3BwLmggKFNUQU5EQVJEX0lOQ0xVREVfRElSKTogRGVmaW5lLgoJKE1EX0VYRUNfUFJFRklYKTogU2V0IHRvICcvZGV2L2Vudi9ESkRJUi9iaW4vJy4KCShBU01fT1VUUFVUX1NFQ1RJT05fTkFNRSk6IEFkZCBjb2RlIGF0dHJpYnV0ZSB0byBzZWN0aW9ucyBjb250YWluaW5nCgljb2RlLgoJKFNVUFBPUlRTX1dFQUssIFNVUFBPUlRTX09ORV9PTkxZKTogRGVmYXVsdCB0byB0cnVlLgoJKFNVQlRBUkdFVF9TV0lUQ0hFUyk6IEFkanVzdC4KCShXQ0hBUl9VTlNJR05FRCwgV0NIQVJfVFlQRV9TSVpFLCBXQ0hBUl9UWVBFKTogVW5kZWZpbmUgYmVmb3JlCglkZWZpbmluZy4KCShXSU5UX1RZUEUsIFNJWkVfVFlQRSwgUFRSRElGRl9UWVBFKTogRGVmaW5lLgoKMjAwMC0wOC0wNCAgSm9zZXBoIFMuIE15ZXJzICA8anNtMjhAY2FtLmFjLnVrPgoKCSogYy1jb21tb24uaCAoZmxhZ19pc29jOTQpOiBEZWNsYXJlLgoJKiBjLWRlY2wuYyAoZmxhZ19pc29jOTQpOiBEZWZpbmUuCgkoY19kZWNvZGVfb3B0aW9uKTogU2V0IGZsYWdfaXNvYzk0IGFzIGFwcHJvcHJpYXRlLgoJKiBjLWNvbW1vbi5jIChUX1BELCBUX0lNLCBUX1VJTSk6IERlZmluZS4KCShmb3JtYXRfY2hhcl9pbmZvKTogQWRkIHRsZW4gYW5kIGpsZW4uCgkocHJpbnRfY2hhcl90YWJsZSk6IEFkZCBlbnRyaWVzIGZvciAldCBhbmQgJWouICBBbGxvdyAlem4uICBBbGxvdwoJJUYuICBBbGxvdyAlbGYuCgkoc2Nhbl9jaGFyX3RhYmxlKTogQWRkIGVudHJpZXMgZm9yICV0IGFuZCAlai4gIEFsbG93ICVGLiAgQWxsb3cKCSVsWy4KCSh0aW1lX2NoYXJfdGFibGUpOiBBZGQgTlVMTCBlbnRyaWVzIGZvciAldCBhbmQgJWouCgkoY2hlY2tfZm9ybWF0X2luZm8pOiBBbGxvdyBmb3IgJXQgYW5kICVqLiAgV2FybiBmb3IgJUYgaWYgcGVkYW50aWMKCWFuZCBub3QgQzk5LiAgV2FybiBmb3IgJWxjLCAlbHMgYW5kICVsWyBpZiBwZWRhbnRpYyBhbmQgbm90IEM5NC4KCVdhcm4gZm9yIHByaW50ZiAlbGYgaWYgcGVkYW50aWMgYW5kIG5vdCBDOTkuICBEb24ndCB3YXJuIGZvciBlbXB0eQoJcHJlY2lzaW9uLiAgQWxsb3cgcHJlY2lzaW9uIGFyZ3VtZW50IHRvIGJlIHVuc2lnbmVkIGludC4gIElmCglwZWRhbnRpYywgd2FybiBmb3IgJXAgcGFzc2VkIGFuIGFyZ3VtZW50IG5vdCBhIHBvaW50ZXIgdG8gcG9zc2libHkKCXF1YWxpZmllZCB2b2lkIG9yIGEgcG9zc2libHkgcXVhbGlmaWVkIGNoYXJhY3RlciB0eXBlLCBhbmQgZm9yCglwb2ludGVyIHRhcmdldHMgb2YgdGhlIHdyb25nIHNpZ24sIGV4Y2VwdCBmb3IgY2hhcmFjdGVyIHBvaW50ZXJzLgoKMjAwMC0wOC0wNCAgSm9zZXBoIFMuIE15ZXJzICA8anNtMjhAY2FtLmFjLnVrPgoKCSogZ2luY2x1ZGUvc3RkZGVmLmg6IERvbid0IGRlY2xhcmUgd2ludF90IHVubGVzcyBfX25lZWRfd2ludF90LgoJKiBjLWNvbW1vbi5oIChlbnVtIGNfdHJlZV9pbmRleCk6IEFkZCBDVElfV0lOVF9UWVBFLgoJKHdpbnRfdHlwZV9ub2RlKTogRGVmaW5lLgoJKiBjLWRlY2wuYyAoV0lOVF9UWVBFKTogRGVmaW5lLgoJKGluaXRfZGVjbF9wcm9jZXNzaW5nKTogQ3JlYXRlIHRoZSB3aW50X3R5cGVfbm9kZSB0eXBlLgoJKiBjLWNvbW1vbi5jIChUX1dJKTogRGVmaW5lLgoJKHByaW50X2NoYXJfdGFibGUpOiBVc2UgVF9XSSBmb3IgJWxjIGZvcm1hdC4KCjIwMDAtMDgtMDQgIEJydWNlIEtvcmIgIDxia29yYkBnbnUub3JnPgoKCSogZml4aW5jLzogIFZlcmlmaWVkIHRoYXQgdGhlIE1TRE9TIHBhdGNoIGRvZXMgbm90IGJyZWFrCgl0aGUgVU5JWCBmdW5jdGlvbmFsaXR5IGFuZCBhcHBsaWVkIHRoZSBuZXh0IHRocmVlIHBhdGNoZXMKCWZyb20gSnVseToKCjIwMDAtMDctMjggIEVsaSBaYXJldHNraWkgIDxlbGl6QGlzLmVsdGEuY28uaWw+CgoJKiBmaXhpbmMvZml4Zml4ZXMuYyAobWFpbikgW19fTVNET1NfX106IEF2b2lkIG92ZXJ3cml0aW5nIHRoZQoJb3V0cHV0IGZpbGUgd2l0aCB0aGUgdGVtcG9yYXJ5IG9uZSBieSBhcHBlbmRpbmcgIi5YIiB0byBnZW5lcmF0ZQoJdGhlIHRlbXBvcmFyeSBmdWlsZSdzIG5hbWUuICBJZiB0aGUgb3V0cHV0IGZpbGUgYWxyZWFkeSBoYXMgYW4KCWV4dGVuc2lvbiwgcmVwbGFjZSBpdCB3aXRoICIuWCIuCgoJKiBmaXhpbmMvZml4aW5jbC5jIChmaXhfd2l0aF9zeXN0ZW0pIFtfX01TRE9TX19dOiBVc2UgJE9SSUdESVIsCglub3QgJERFU1RESVIsIHRvIGZpbmQgYXBwbHlmaXguICBVc2Ugc3ByaW50ZiBpbnN0ZWFkIG9mIHNucHJpbnRmOwoJcmVhbGxvY2F0ZSB0aGUgY29tbWFuZCBidWZmZXIgd2hpbGUgY29weWluZyB0aGUgY29tbWFuZC1saW5lCglhcmd1bWVudC4gIFJlZGlyZWN0IHRoZSBvdXRwdXQgZGlyZWN0bHkgdG8gdGhlIHRlbXBvcmFyeSBmaWxlLAoJaW5zdGVhZCBvZiBnb2luZyB0aHJvdWdoIGFub3RoZXIgdGVtcG9yYXJ5IGZpbGUuCgkocHJvY2Vzcyk6IENsb3NlIHRoZSB0ZW1wb3JhcnkgZmlsZSBiZWZvcmUgdW5saW5raW5nIGl0LgoJKG1hY2hpbmVfbWF0Y2hlcykgW19fTVNET1NfX106IElmIHRoZSBtYWNoaW5lIGRvZXNuJ3QgbWF0Y2gsIHNldAoJdGhlIEZEX1NLSVBfVEVTVCBmbGFnLiAgUGF5IGF0dGVudGlvbiB0byB0aGUgRkRfTUFDSF9JRk5PVCBmbGFnLgoJKHJ1bl9jb21waWxlcyk6IFBhc3MgcF9maXhkIGFyZ3VtZW50IHRvIG1hY2hpbmVfbWF0Y2hlcywgYXMgaXQKCWV4cGVjdHMuCgoJKiBmaXhpbmMvZml4aW5jbC5zaDogRXhwb3J0IE9SSUdESVIuICBJZiAkREpESVIgaXMgc2V0IGluIHRoZQoJZW52aXJvbm1lbnQsIGFzc3VtZSB0aGVyZSBhcmUgbm8gc3ltbGlua3MgaW4gdGhlIGluY2x1ZGUKCWRpcmVjdG9yeS4gIFdoZW4gY2xlYW5pbmcgdXAgdGhlIERPTkUgZmlsZXMsIGxvb2sgZm9yIHRoZW0KCWNhc2UtaW5zZW5zaXRpdmVseS4gIERvbid0IHRyeSB0byByZW1vdmUgc3ltbGlua3MgaWYgdGhleSBhcmVuJ3QKCXRoZXJlLgoKCSogZml4aW5jL2ZpeGxpYi5jIChtYWtlX3Jhd19zaGVsbF9zdHIpOiBBY2NlcHQgbmV3IGFyZ3VtZW50IHNtYXg7CglhbGwgY2FsbGVycyBjaGFuZ2VkLiAgRGVjbGFyZSBweiAiY29uc3QgY2hhciAqIiwgdG8gYXZvaWQgY29tcGlsZXIKCXdhcm5pbmdzLgoKCSogZml4aW5jL2ZpeGxpYi5oIChFTlZfVEFCTEUpOiBHZXQgT1JJR0RJUiBmcm9tIHRoZSBlbnZpcm9ubWVudC4KCUNoYW5nZSBwcm90b3R5cGUgb2YgbWFrZV9yYXdfc2hlbGxfc3RyLgoKMjAwMC0wNy0yNyAgRWxpIFphcmV0c2tpaSAgPGVsaXpAaXMuZWx0YS5jby5pbD4KCgkqIGZpeGluYy9maXhpbmNsLmMgW19fTVNET1NfX106IERvbid0IGluY2x1ZGUgInNlcnZlci5oIi4KCShpbml0aWFsaXplKSBbX19NU0RPU19fXTogVXNlIHRlbXBuYW0uCgkoaW5pdGlhbGl6ZSk6IERvbid0IHVzZSBTSUdQSVBFIGlmIGl0IGlzIG5vdCBkZWZpbmVkLgoKCSogZml4aW5jL2ZpeGZpeGVzLmMgKG1haW4pIFtfX01TRE9TX19dOiBmcmVvcGVuIGZvciBzdGRvdXQgc2hvdWxkCglyZXR1cm4gc3Rkb3V0LgoKMjAwMC0wNy0yNSAgQnJ1Y2UgS29yYiAgPGJrb3JiQGdudS5vcmc+CgoJKiBmaXhpbmMvZml4Ki5bY2hdOiBzdWJzdGFudGlhbGx5IHJld29ya2VkIHRvIG1ha2UgaXQgcG9zc2libGUKCXRvIHJ1biB0aGlzIHByb2dyYW0gd2l0aG91dCB1c2luZyBmb3JrKDIpIG9yIHBpcGUoMikgKGkuZS4gaW4KCWEgRE9TIGVudmlyb25tZW50KS4KCjIwMDAtMDgtMDQgIEpvc2VwaCBTLiBNeWVycyAgPGpzbTI4QGNhbS5hYy51az4KCgkqIGNwcGRlZmF1bHQuaCAoV0lOVF9UWVBFKTogRGVmaW5lLgoJKiBjcHBpbml0LmMgKGJ1aWx0aW5fYXJyYXkpOiBEZWZpbmUgX19XSU5UX1RZUEVfXy4KCSogdHJhZGNwcC5jIChpbml0aWFsaXplX2J1aWx0aW5zKTogRGVmaW5lIF9fV0lOVF9UWVBFX18uCgkqIHRtLnRleGkgKE5PX0JVSUxUSU5fV0lOVF9UWVBFLCBXSU5UX1RZUEUpOiBEb2N1bWVudC4KCkZyaSBBdWcgIDQgMDY6NTM6NDYgMjAwMCAgQ2xpbnRvbiBQb3BldHogIDxjcG9wZXR6QGN5Z251cy5jb20+CgoJKiAobWlwc19sZWdpdGltYXRlX2FkZHJlc3NfcCk6IERvbid0IGFsbG93IHJlZ2lzdGVyK29mZnNldAoJaWYgdGhlIG9mZnNldCBpcyBsYXJnZSBhbmQgbmVnYXRpdmUsIGFuZCB3ZSBhcmUgY29tcGlsaW5nCglmb3IgNjQgYml0IHJlZ2lzdGVycy4KCjIwMDAtMDgtMDQgSGVybWFuIEEuSi4gdGVuIEJydWdnZSA8SGFqLlRlbi5CcnVnZ2VAbmV0LkhDQy5ubD4KCgkqIGdlbmNvZGVzLmMgKG1haW4pOiBEZWZpbmUgQ09ERV9GT1Jfbm90aGluZyBhcyB0aGUgbGFzdCBwb3NzaWJsZQoJaW5zbl9jb2RlX251bWJlciArIDEuCgoyMDAwLTA4LTA0ICBLYXp1IEhpcmF0YSAgPGthenVAaHhpLmNvbT4KCgkqIGg4MzAwLmMgKGZ1bmN0aW9uX3Byb2xvZ3VlKTogUmVhcnJhbmdlIGNvZGUgZm9yIGNvbmNpc2VuZXNzLgoJKGZ1bmN0aW9uX2VwaWxvZ3VlKTogTGlrZXdpc2UuCgkqIGg4MzAwLmggKE9LX0ZPUl9VKTogRml4IGZvcm1hdHRpbmcuCgoJKiBjc2UuYzogRml4IGEgY29tbWVudCB0eXBvLiBGaXggZm9ybWF0dGluZy4KCjIwMDAtMDgtMDMgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgoJKiBjb25maWcvaTM4Ni9pMzg2Lm1kIChyZXR1cm5faW5kaXJlY3RfaW50ZXJuYWwpOiBOZXcuCgkqIGNvbmZpZy9pMzg2L2kzODYuYyAoaXg4Nl9leHBhbmRfZXBpbG9ndWUpOiBVc2UgaXQuCgoyMDAwLTA4LTAzICBaYWNrIFdlaW5iZXJnICA8emFja0B3b2xlcnkuY3VtYi5vcmc+CgoJKiBjcHBsZXguYyAocGFyc2VfbmFtZSk6IE1pZ2h0IGhhdmUgdG8gZ2x1ZSBhIENQUF9PVEhFUiB0b2tlbgoJYmVmb3JlIHRoZSBuYW1lLgoJKGxleF9saW5lKTogR2x1ZSBAIG9udG8gdGhlIGJlZ2lubmluZyBvZiBpZGVudGlmaWVycyBhbmQKCXN0cmluZyBjb25zdGFudHMsIGluIE9iamVjdGl2ZS1DIG1vZGUuCgkob3V0cHV0X3Rva2VuLCBzcGVsbF90b2tlbik6IEhhbmRsZSBDUFBfT1NUUklORy4KCShjYW5fcGFzdGUsIG1heWJlX3Bhc3RlX3dpdGhfbmV4dCk6IEhhbmRsZSBwYXN0aW5nIEAgb250byB0aGUKCWJlZ2lubmluZyBvZiBhIE5BTUUgb3IgYSBTVFJJTkcsIGluIG9iamMgbW9kZS4KCgkqIGNwcGxpYi5jIChnZXRfZGVmaW5lX25vZGUpOiBEbyBub3QgcGVybWl0IGlkZW50aWZpZXJzIHRoYXQKCWJlZ2luIHdpdGggQCB0byBiZSAjZGVmaW5lZC4KCSogY3BwbWFjcm8uYyAoQ0FOX1BBU1RFX0FGVEVSKTogQWRkIENQUF9PVEhFUi4KCSogY3BwbGliLmggKFRUWVBFX1RBQkxFKTogQWRkIENQUF9PU1RSSU5HLgoKCSogYy1sYW5nLmMsIG9iamMvb2JqYy1hY3QuYyAoYnVpbGRfb2JqY19zdHJpbmcpOiBEZWxldGUuCgkqIGMtdHJlZS5oIChidWlsZF9vYmpjX3N0cmluZyk6IERlbGV0ZSBwcm90b3R5cGUuCgkqIG9iamMvb2JqYy10cmVlLmRlZjogRGVsZXRlIE9CSkNfU1RSSU5HX0NTVC4KCSogYy1sZXguYyAoeXlsZXgpOiBVc2UgYnVpbGRfc3RyaW5nIGZvciBhbGwgdGhyZWUga2luZHMgb2Ygc3RyaW5ncy4KCgkqIGMtcGFyc2UuaW4sIG9iamMvb2JqYy1hY3QuYzogVXBkYXRlIGNvbW1lbnRhcnkuCgoyMDAwLTA4LTAzICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogZXh0ZW5kLnRleGk6IEZpeCB0eXBvIGluIGxhc3QgY2hhbmdlLgoKCSogZXh0ZW5kLnRleGk6IEFkZCBjb21tZW50YXJ5IG9uIHN0YXRlbWVudC1leHByZXNzaW9ucyBhbmQgdGhlaXIKCWludGVyYWN0aW9ucyB3aXRoIEMrKy4KCjIwMDAtMDgtMDMgIE5pY2sgQ2xpZnRvbiAgPG5pY2tjQGN5Z251cy5jb20+CgoJKiBkd2FyZjIuaCAoRFdfTEFOR19KYXZhKTogQ2hhbmdlIHZhbHVlIHRvIDB4MDAwYi4KCSogZHdhcmYuaCAoTEFOR19KQVZBKTogQ2hhbmdlIHZhbHVlIHRvIDB4MDAwYi4KCjIwMDAtMDgtMDMgIEFudGhvbnkgR3JlZW4gIDxncmVlbkBjeWdudXMuY29tPgoKCSogZHdhcmYyb3V0LmMgKGdlbl9jb21waWxlX3VuaXRfZGllKTogQWRkIGphdmEgbGFuZ3VhZ2Ugc3VwcG9ydC4KCShhZGRfYm91bmRfaW5mbyk6IENoZWNrIGZvciBqYXZhIGxhbmd1YWdlLgoJKGlzX2phdmEpOiBOZXcgZnVuY3Rpb24uCgkqIGR3YXJmb3V0LmMgKG91dHB1dF9jb21waWxlX3VuaXRfZGllKTogRGl0dG8uCgkqIGR3YXJmLmggKGR3YXJmX3NvdXJjZV9sYW5ndWFnZSk6IEFkZCBqYXZhIHNvdXJjZSBsYW5ndWFnZSB0eXBlLgoJKiBkd2FyZjIuaCAoZHdhcmZfc291cmNlX2xhbmd1YWdlKTogRGl0dG8uCgpUaHUgQXVnICAzIDIwOjMyOjI1IE1FVCBEU1QgMjAwMCAgSmFuIEh1Ymlja2EgIDxqaEBzdXNlLmN6PgoKCSogcmVnLXN0YWNrLmMgKHN1YnN0X3N0YWNrX3JlZ3NfcGF0KTogIFVzZSByZXBsYWNlX3JlZyB0byBzd2FwCglvcGVyYW5kcy4KCgkqIGkzODYuYyAoaXg4Nl9leHBhbmRfYnJhbmNoKTogTW9kZSBvZiBjb21wYXJpc29uIGluCglJRl9USEVOX0VMU0UgaXMgVk9JRG1vZGUuCgpUaHUgQXVnICAzIDEwOjA1OjUzIDIwMDAgIEFraWtvIE1hdHN1c2hpdGEgPG1hdHVzaXRhQHNyYS5jby5qcD4KCgkqIGdlbmdlbnJ0bC5jLCBydGwuYzogQXZvaWQgI2VsaWYuCgoyMDAwLTA4LTAzICBNaWNoYWVsIFBvb2xlICA8cG9vbGVAdHJvaWx1cy5vcmc+CgoJKiB0bS50ZXhpIChSZWdpc3RlciBDbGFzc2VzKTogQ2xhcmlmeSBvcmRlciBvZiBzdWItaW5pdGlhbGl6ZXJzCglpbiBSRUdfQ0xBU1NfQ09OVEVOVFMuCgpUaHUgQXVnICAzIDE1OjUzOjAzIDIwMDAgIEoib3JuIFJlbm5lY2tlIDxhbXlsYWFyQGN5Z251cy5jby51az4KCglGcm9tIFNBSVRPSCBNYXNhbm9idToKCSogc2guaCAoQVNNX09VVFBVVF9SRUdfUFVTSCk6IEZpeCBzeW50YXguCgoyMDAwLTA4LTAzICBEYXZpZCBCaWxsaW5naHVyc3QgIDxEYXZpZC5CaWxsaW5naHVyc3RAcmlvdGludG8uY29tLmF1PgoKCSogY29uZmlnL2kzODYvY3lnd2luLmg6IFJlbW92ZSAtcmVtYXAgZnJvbSBDUFBfU1BFQyBzaW5jZSB0aGlzIG9wdGlvbgoJaXMgbm90IHN1cHBvcnRlZCBieSB0cmFkY3BwIGFuZCBpc24ndCBhY3R1YWxseSBuZWVkZWQgZm9yIGN5Z3dpbi4KCjIwMDAtMDgtMDMgIEthenUgSGlyYXRhICA8a2F6dUBoeGkuY29tPgoKCSogaDgzMDAuYzogRml4IGEgY29tbWVudCB0eXBvLgoJKiBoODMwMC5oIChPS19GT1JfVSk6IEFjY2VwdCBhIDMyLWJpdCBjb25zdGFudCBhZGRyZXNzIG9uIEg4Uy4KCgkqIGp1bXAuYzogRml4IGZvcm1hdHRpbmcuCgoJKiB0b3BsZXYuYzogRml4IGZvcm1hdHRpbmcuCgpUaHUgQXVnICAzIDAxOjA1OjMyIDIwMDAgIEplZmZyZXkgQSBMYXcgIChsYXdAY3lnbnVzLmNvbSkKCgkqIGZsb3cuYyAoZmluZF9hdXRvX2luYyk6IFZlcmlmeSB0aGF0IHdlJ3ZlIGdvdCBhIFJFRyBiZWZvcmUKCXBlZWtpbmcgYXQgaXRzIHJlZ25vLiAgRmFpbCwgZG9uJ3QgYWJvcnQgaWYgd2UgY2FuJ3QgZmluZAoJdGhlIGluY3JlbWVudCBvZiB0aGUgZGVzaXJlZCByZWdpc3Rlci4KCgkqIHBhLm1kIChzaGFkZCBoZWlnaHQgcmVkdWN0aW9uIHBhdHRlcm5zL3NwbGl0dGVycyk6IFJlbW92ZS4KCjIwMDAtMDgtMDIgIEppbSBXaWxzb24gIDx3aWxzb25AY3lnbnVzLmNvbT4KCgkqIGNvbmZpZy9pYTY0L2lhNjQtcHJvdG9zLmggKGZsYWdfc3NhKTogRGVjbGFyZS4KCSogY29uZmlnL2lhNjQvaWE2NC5tZCAobW92dGlfaW50ZXJuYWwsIG1vdnRpX2ludGVybmFsKzEpOiBOZXcuCgoyMDAwLTA4LTAyICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogZGNlLmM6IFJlbW92ZSBhbGwgdXNlcyBvZiBhc3NlcnQuCgkqIGR3YXJmMm91dC5jOiBMaWtld2lzZS4KCSogZHdhcmZvdXQuYzogTGlrZXdpc2UuCgkqIHNzYS5jOiBMaWtld2lzZS4KCjIwMDAtMDgtMDIgIFphY2sgV2VpbmJlcmcgIDx6YWNrQHdvbGVyeS5jdW1iLm9yZz4KCgkqIGdjYy5oIChsYW5nX3NwZWNpZmljX2RyaXZlcik6IENvbnN0aWZ5IHNlY29uZCBhcmd1bWVudC4KCSogZ2NjLmMgKHRyYW5zbGF0ZV9vcHRpb25zLCBwcm9jZXNzX2NvbW1hbmQsIG1haW4pOiBMaWtld2lzZS4KCUNvbnN0aWZ5IHZhcmlhYmxlcyB0byBtYXRjaC4gIENhc3Qgc2Vjb25kIGFyZ3VtZW50IHRvCglwZXhlY3V0ZS4KCgkqIGNwcHNwZWMuYywgZ2Njc3BlYy5jOiBBZGp1c3QgdHlwZSBvZiBzZWNvbmQgYXJndW1lbnQgdG8KCWxhbmdfc3BlY2lmaWNfZHJpdmVyLCBhbmQgdXBkYXRlIGNvZGUgYXMgbmVjZXNzYXJ5LgoKMjAwMC0wOC0wMiAgSmFrdWIgSmVsaW5layAgPGpha3ViQHJlZGhhdC5jb20+CgoJKiBsb29wLmMgKHNjYW5fbG9vcCk6IEVuc3VyZSB1cGRhdGVfZW5kIGxhYmVsIGRvZXMgbm90CglnbyBhd2F5IHVudGlsIHJlZ19zY2FuX3VwZGF0ZSBpcyBydW4uCgoyMDAwLTA4LTAyICBaYWNrIFdlaW5iZXJnICA8emFja0B3b2xlcnkuY3VtYi5vcmc+CgoJKiBjLWNvbW1vbi5oOiBQcm90b3R5cGUgbWluX3ByZWNpc2lvbiBhbmQgY19idWlsZF9xdWFsaWZpZWRfdHlwZSBoZXJlLi4uCgkqIGMtdHJlZS5oOiAuLi4gbm90IGhlcmUuCgkqIGVycm9ycy5oOiBQcm90b3R5cGUgZmFuY3lfYWJvcnQuCgoJKiBlbWl0LXJ0bC5jIChnZW5fbG93cGFydF9jb21tb24pOiBNb3ZlIHZhcmlhYmxlICdjJyBpbnRvCglIT1NUX0JJVFNfUEVSX1dJREVfSU5UID09IDY0IGlmZGVmIGJsb2NrLgoJKiByZWdyZW5hbWUuYyAocmVncmVuYW1lX29wdGltaXplKTogTWFrZSBjb250cm9sIGZsb3cgZXhwbGljaXQuCgkocmVwbGFjZV9yZWdfaW5fYmxvY2spOiBJbml0aWFsaXplIHJlZ191c2UgdG8gMC4KCgkqIGkzODYuYyAobGVnaXRpbWF0ZV9hZGRyZXNzX3ApOiBSZW5hbWUgZXJyb3IgbGFiZWwgdG8KCXJlcG9ydF9lcnJvciB0byBhdm9pZCBuYW1lc3BhY2UgY2xhc2guCgoyMDAwLTA4LTAyICBLYXp1IEhpcmF0YSAgPGthenVAaHhpLmNvbT4KCgkqIGZvbGQtY29uc3QuYzogRml4IGZvcm1hdHRpbmcuCgpXZWQgQXVnICAyIDE2OjI2OjE1IE1FVCBEU1QgMjAwMCAgSmFuIEh1Ymlja2EgIDxqaEBzdXNlLmN6PgoKCSogaTM4Ni5jIChsZWdpdGltYXRlX2FkZHJlc3NfcCk6IEFjY2VwdCBvdGhlciBiYXNlcyB0aGFuCglwaWNfb2Zmc2V0X3RhYmxlX3J0eCBmb3IgR09UT0ZGIGNvbnN0cnVjdHMuCgpXZWQgQXVnICAyIDE1OjU5OjM0IE1FVCBEU1QgMjAwMCAgSmFuIEh1Ymlja2EgIDxqaEBzdXNlLmN6PgoKCSogaTM4Ni5tZCAoc2hpZnQgdG8gbGVhIHNwbGl0dGVyKTogVXNlIGNvbnN0X2ludF9vcGVyYW5kLgoKMjAwMC0wOC0wMiAgWmFjayBXZWluYmVyZyAgPHphY2tAd29sZXJ5LmN1bWIub3JnPgoKCSogY3BwZXhwLmMsIGNwcGluaXQuYywgY3BwbGV4LmMsIGNwcGxpYi5jLCBjcHBtYWNyby5jLAoJY3Bwc3BlYy5jOiBEbyBub3QgdXNlICdsZWdhbCcgb3IgJ2lsbGVnYWwnIGluIGVycm9yIG1lc3NhZ2VzCglhbmQgY29tbWVudHMuCgoJKiBjcHBtYWluLmMgKGNiX2RlZmluZSwgY2JfdW5kZWYpOiBEb24ndCBnZW5lcmF0ZSBhbnkgb3V0cHV0CglpZiBub3QgZG9uZV9pbml0aWFsaXppbmcuCgkqIGNwcGxleC5jIChtYXliZV9wYXN0ZV93aXRoX25leHQpOiBXaGVuIHRoZSB0b2tlbiBhZnRlciBhICMjCglpcyBhbiBvbWl0dGVkIHJlc3QgYXJndW1lbnQsIG9ubHkgZGVsZXRlIHRoZSB0b2tlbiBiZWZvcmUgaXQKCWlmIHRoYXQgdG9rZW4gaXMgYSBjb21tYS4gIERvIG5vdCB3YXJuIGFib3V0IGJvZ3VzIHRva2VuCglwYXN0ZXMgZm9yICwgIyMgcmVzdF9hcmcuCgoJKiBjcHAudGV4aTogVXBkYXRlLgoJKiBjcHAuMTogUmVnZW5lcmF0ZS4KCjIwMDAtMDgtMDIgIEZyZWQgRmlzaCAgPGZuZkBiZS5jb20+CgoJKiBjb25maWcvaTM4Ni9iZW9zLWVsZi5oIChTVEFSVEZJTEVfU1BFQyk6IEFkZCBpMzg2LW1jb3VudC5vCgl3aGVuIHVzZXIgZ2l2ZXMgLXAgb3B0aW9uLiAgQWRkIGluaXRfdGVybV9keW4ubyBmb3IgQmVPUyA1LjAKCWFuZCBsYXRlci4KCgkqIGNvbmZpZy9pMzg2L2Jlb3MtZWxmLmggKElOQ0xVREVfREVGQVVMVFMpOiBBZGQgYWRkaXRpb25hbAoJQmUgZGlyZWN0b3JpZXMgdG8gc2VhcmNoIHBhdGguCgoJUmVtb3ZlIHN1cHBvcnQgZm9yIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBhbmQgX19kZWNsc3BlYyhkbGxleHBvcnQpLgoJVGhpcyBpcyBsZWZ0b3ZlciBjcnVmdCBmcm9tIHRoZSBlYXJsaWVyIEJlT1MgZ2NjIHBvcnQgd2hlbiBCZU9TCgl1c2VkIE1pY3Jvc29mdCdzIFBFIG9iamVjdCBmaWxlIGZvcm1hdC4KCSogY29uZmlndXJlLmluIChpKjg2LSotYmVvc2VsZik6IFJlbW92ZSBleHRyYV9vYmpzPXdpbm50Lm8uCgkqIGNvbmZpZy9pMzg2L3QtYmVvcyAod2lubnQubyk6IFJlbW92ZSBNYWtlZmlsZSBmcmFnLgoJKiBjb25maWcvaTM4Ni9iZW9zLWVsZi5oIChUQVJHRVRfTk9QX0ZVTl9ETExJTVBPUlQpOiBSZW1vdmUuCgkoVkFMSURfTUFDSElORV9ERUNMX0FUVFJJQlVURSk6IFJlbW92ZS4KCShWQUxJRF9NQUNISU5FX1RZUEVfQVRUUklCVVRFKTogUmVtb3ZlLgoJKE1FUkdFX01BQ0hJTkVfREVDTF9BVFRSSUJVVEVTKTogUmVtb3ZlLgoJKFJFRE9fU0VDVElPTl9JTkZPX1ApOiBSZW1vdmUuCgkoQVNNX0VYUE9SVF9ERUNMKTogUmVtb3ZlLgoJKEFTTV9ERUNMQVJFX0ZVTkNUSU9OX05BTUUpOiBSZW1vdmUuCgkoQVNNX0RFQ0xBUkVfT0JKRUNUX05BTUUpOiBSZW1vdmUuCgkoQVNNX09VVFBVVF9BTElHTkVEX0NPTU1PTik6IFJlbW92ZS4KCShBU01fT1VUUFVUX0FMSUdORURfREVDTF9DT01NT04pOiBSZW1vdmUuCgkoQVNNX09VVFBVVF9BTElHTkVEX0xPQ0FMKTogUmVtb3ZlLgoJKFNUUklQX05BTUVfRU5DT0RJTkcpOiBSZW1vdmUuCgoJUmVtb3ZlIHN1cHBvcnQgZm9yIG9ic29sZXRlIHZlcnNpb24gb2YgQmVPUyB0aGF0IGlzIG5vIGxvbmdlcgoJc3VwcG9ydGVkIGJ5IEJlLgoJKiBjb25maWd1cmUuaW4gKGkqODYtKi1iZW9zcGUqKTogUmVtb3ZlLgoJKiBjb25maWcvaTM4Ni9iZW9zLXBlLmg6IFJlbW92ZS4KCjIwMDAtMDgtMDEgIEplZmZyZXkgT2xkaGFtICA8b2xkaGFtQGNvZGVzb3VyY2VyeS5jb20+CgkgICAgTWFyayBNaXRjaGVsbCA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogTWFrZWZpbGUuaW4gKE9CSlMpOiBBZGRlZCBkY2Uuby4KCShzc2Eubyk6IFVwZGF0ZWQgdGFyZ2V0IHRvIGluY2x1ZGUgc3NhLmguCgkoZmxvdy5vKTogTGlrZXdpc2UuCgkodG9wbGV2Lm8pOiBMaWtld2lzZS4KCShkY2Uubyk6IENyZWF0ZWQgdGFyZ2V0LgoJKiBiYXNpYy1ibG9jay5oOiBBZGRlZCBjb21tZW50cy4KCShJTlZBTElEX0JMT0NLKTogQWRkZWQgZGVmaW5pdGlvbi4KCShjb25uZWN0X2luZmluaXRlX2xvb3BzX3RvX2V4aXQpOiBBZGRlZCBkZWNsYXJhdGlvbi4KCU1vdmVkIFNTQSBkZWNsYXJhdGlvbnMgdG8gc3NhLmguCgkqIGZsb3cuYzogQWRkZWQgaW5jbHVzaW9uIG9mIHNzYS5oLgoJKHN0cnVjdCBkZXB0aF9maXJzdF9zZWFyY2hfZHNTLCBkZXB0aF9maXJzdF9zZWFyY2hfZHMpOgoJQWRkZWQgZGVmaW5pdGlvbnMuCgkoY29tcHV0ZV9pbW1lZGlhdGVfcG9zdGRvbWluYXRvcnMpOiBBZGRlZCBkZWZpbml0aW9uLgoJKGNvbm5lY3RfaW5maW5pdGVfbG9vcHNfdG9fZXhpdCk6IExpa2V3aXNlLgoJKGZsb3dfZGZzX2NvbXB1dGVfcmV2ZXJzZV9pbml0KTogTGlrZXdpc2UuCgkoZmxvd19kZnNfY29tcHV0ZV9yZXZlcnNlX2FkZF9iYik6IExpa2V3aXNlLgoJKGZsb3dfZGZzX2NvbXB1dGVfcmV2ZXJzZV9leGVjdXRlKTogTGlrZXdpc2UuCgkoZmxvd19kZnNfY29tcHV0ZV9yZXZlcnNlX2ZpbmlzaCk6IExpa2V3aXNlLgoJKiBydGwuaCAocnR4L2luX3N0cnVjdCk6IEFkZGVkIHVzZSB0byBkZXRlcm1pbmUgaW5zbiBuZWNlc3NpdHkuCgkoTEFCRUxfUCk6IEFkZGVkIGRlZmluaXRpb24uCgkoSlVNUF9QKTogTGlrZXdpc2UuCgkoTk9URV9QKTogTGlrZXdpc2UuCgkoQkFSUklFUl9QKTogTGlrZXdpc2UuCgkoSlVNUF9UQUJMRV9EQVRBX1ApOiBMaWtld2lzZS4KCShJTlNOX0RFQURfQ09ERV9QKTogTGlrZXdpc2UuCgkqIHNzYS5jOiBSZXBsYWNlZCBpbmNsdXNpb25zIHdpdGggc3NhLmggaW5jbHVzaW9uLgoJKENPTlZFUlRfSEFSRF9SRUdJU1RFUl9UT19TU0FfUCk6IE1vdmVkIHRvIHNzYS5oLgoJKHJlbmFtZV9yZWdpc3RlcnMpOiBSZW1vdmVkIHVubmVjZXNzYXJ5IHZhcmlhYmxlcy4KCSogc3NhLmg6IENyZWF0ZWQgYnkgbW92aW5nIGRlY2xhcmF0aW9ucyBmcm9tIHNzYS5jIGFuZAoJYmFzaWMtYmxvY2suaC4KCSogdGltZXZhci5kZWY6IERlZmluZWQgVFZfREVBRF9DT0RFX0VMSU0uCgkqIHRvcGxldi5jOiBBZGRlZCBzc2EuaCBpbmNsdXNpb24uCgkoZHVtcF9maWxlX2luZGV4KTogQWRkZWQgREZJX2RjZS4KCShkdW1wX2ZpbGUpOiBBZGRlZCAiZGNlIiBlbnRyeS4KCURlZmluZWQgZmxhZ19zc2EuCgkoZl9vcHRpb25zKTogQWRkZWQgZGNlIGVudHJ5LgoJKiBpbnZva2UudGV4aTogRG9jdW1lbnQgLWZkY2UuICBFbXBoYXNpemUgZXhwZXJpbWVudGFsIHN0YXR1cyBvZgoJLWZzc2EuCgkqIGRjZS5jOiBOZXcgZmlsZS4KCjIwMDAtMDgtMDEgIFphY2sgV2VpbmJlcmcgIDx6YWNrQHdvbGVyeS5jdW1iLm9yZz4KCgkqIGNwcGVycm9yLmMgKHZfbWVzc2FnZSk6IFNwbGl0IGludG8gX2NwcF9iZWdpbl9tZXNzYWdlIGFuZAoJdl9tZXNzYWdlIG1hY3JvLiAgQWxsIGNhbGxlcnMgdXBkYXRlZC4KCShfY3BwX2JlZ2luX21lc3NhZ2UpOiBEbyBpbmhpYml0X2Vycm9ycy9pbmhpYml0X3dhcm5pbmdzCgljaGVja3MgaGVyZS4KCgkqIGNwcGZpbGVzLmMgKGNwcF9zeXNoZHJfZmxhZ3MpOiBOZXcgZnVuY3Rpb24uCgkocmVhZF9pbmNsdWRlX2ZpbGUpOiBEb24ndCBjYWxsIGNwcF9vdXRwdXRfdG9rZW5zLiAgQ2FsbAoJZW50ZXJfZmlsZSBob29rLgoJKiBjcHBpbml0LmMgKGR1bXBfbWFjcm9zX2hlbHBlcik6IE1vdmVkIHRvIGNwcG1haW4uYy4KCShjcHBfcmVhZGVyX2luaXQpOiBEb24ndCBpbml0aWFsaXplIHRva2VuX2J1ZmZlci4gIENhbGwKCV9jcHBfaW5pdF9pbnRlcm5hbF9wcmFnbWFzLgoJKGNwcF9jbGVhbnVwKTogRG9uJ3QgY2xlYXIgdG9rZW5fYnVmZmVyLgoJKGNwcF9zdGFydF9yZWFkKTogRG9uJ3Qgd29ycnkgYWJvdXQgb3V0cHV0IGZyb20gLUQgcHJvY2Vzc2luZy4KCURvbid0IGNhbGwgY3BwX291dHB1dF90b2tlbnMuCgkoY3BwX2ZpbmlzaCk6IERvbid0IGR1bXAgbWFjcm9zIGhlcmUuICBEb24ndCBjYWxsCgljcHBfb3V0cHV0X3Rva2Vucy4KCSogY3BwbWFjcm8uYyAoX2NwcF9kdW1wX2RlZmluaXRpb24pOiBSZW5hbWUKCWNwcF9kdW1wX2RlZmluaXRpb24uICBXcml0ZSBkaXJlY3RseSB0byBhIEZJTEUgKi4KCShkdW1wX2Z1bmxpa2VfbWFjcm8pOiBEZWxldGUuCgkoZHVtcF9tYWNyb19hcmdzKTogTmV3LgoKCSogY3BwbGV4LmMgKFRPS0VOX0xFTik6IENvbnZlcnQgdG8gaW5saW5lIGZ1bmN0aW9uLgoJKF9jcHBfZ3Jvd190b2tlbl9idWZmZXIsIHNhZmVfZndyaXRlLCBjcHBfb3V0cHV0X3Rva2VucywKCWNwcF9zY2FuX2xpbmUsIF9jcHBfZHVtcF9saXN0KTogRGVsZXRlLgoJKGNwcF9wcmludGYsIGNwcF9vdXRwdXRfbGlzdCk6IE5ldy4KCShvdXRwdXRfbGluZV9jb21tYW5kKTogRG9uJ3Qgd29ycnkgYWJvdXQgZW50ZXJpbmcgb3IgbGVhdmluZyBmaWxlcy4KCShjcHBfc2Nhbl9idWZmZXIpOiBKdXN0IG91dHB1dCBlYWNoIHRva2VuIGFzIHdlIGhpdCBpdC4KCShwcm9jZXNzX2RpcmVjdGl2ZSk6IERvbid0IGNhbGwgY3BwX291dHB1dF90b2tlbnMuCgkoX2NwcF9nbHVlX2hlYWRlcl9uYW1lKTogRG9uJ3QgdXNlIHRva2VuX2J1ZmZlci4KCShvdXRwdXRfdG9rZW4sIGR1bXBfcGFyYW1fc3BlbGxpbmcpOiBXcml0ZSBkaXJlY3RseSB0byBhIEZJTEUgKi4KCgkqIGNwcGxpYi5jIChwYXNzX3RocnVfZGlyZWN0aXZlLCBkdW1wX21hY3JvX25hbWUsCglwcmFnbWFfZGlzcGF0Y2gsIGRvX3ByYWdtYV9nY2MpOiBEZWxldGUuCgkoZG9fZGVmaW5lLCBkb191bmRlZiwgcGFyc2VfaW5jbHVkZSwgZG9fbGluZSwgZG9faWRlbnQsIGRvX3ByYWdtYSwKCWRvX3ByYWdtYV9wb2lzb24sIGNwcF9wb3BfYnVmZmVyKTogQ2FsbCB0aGUgYXBwcm9wcmlhdGUgaG9vawoJZnVuY3Rpb25zLgoJKGRvX2Vycm9yLCBkb193YXJuaW5nLCBwcmFnbWFfZGVwZW5kZW5jeSk6IENhbGwKCV9jcHBfYmVnaW5fbWVzc2FnZSwgdGhlbiBjcHBfb3V0cHV0X2xpc3QuCgkoY3BwX3JlZ2lzdGVyX3ByYWdtYSwgY3BwX3JlZ2lzdGVyX3ByYWdtYV9zcGFjZSwKCV9jcHBfaW5pdF9pbnRlcm5hbF9wcmFnbWFzKTogTmV3LgoJKGRvX3ByYWdtYSk6IFdhbGsgdGhlIHByYWdtYXMgdGFibGUgaGVyZS4KCShkb19wcmFnbWFfb25jZSwgZG9fcHJhZ21hX3BvaXNvbiwgZG9fcHJhZ21hX3N5c3RlbV9oZWFkZXIsCglkb19wcmFnbWFfZGVwZW5kZW5jeSk6IFJldHVybiB2b2lkLgoJKGRvX3ByYWdtYV9pbXBsZW1lbnRhdGlvbik6IE1vdmVkIHRvIGNwcG1haW4uYy4KCgkqIGNwcGxpYi5oOiBVcGRhdGUgcHJvdG90eXBlcy4KCSAoc3RydWN0IGNwcF9yZWFkZXIpOiBSZW1vdmUgcHJpbnRlciwgdG9rZW5fYnVmZmVyLAoJdG9rZW5fYnVmZmVyX3NpemUsIGFuZCBsaW1pdC4gIEFkZCBzdHJ1Y3QgY2IsIGFuZCBwcmFnbWFzLgoJKHN0cnVjdCBjcHBfcHJpbnRlcik6IFJlbW92ZSBsYXN0X2lkIGFuZCB3cml0dGVuLgoJKENQUF9XUklUVEVOLCBDUFBfUFdSSVRURU4sIENQUF9TRVRfV1JJVFRFTiwKCUNQUF9BREpVU1RfV1JJVFRFTik6IERlbGV0ZS4KCSogY3BwaGFzaC5oOiBVcGRhdGUgcHJvdG90eXBlcy4KCSh1ZnB1dHMpOiBOZXcgd3JhcHBlci4KCgkqIGNwcG1haW4uYyAoY2JfZGVmaW5lLCBjYl91bmRlZiwgY2JfaW5jbHVkZSwgY2JfaWRlbnQsCgljYl9lbnRlcl9maWxlLCBjYl9sZWF2ZV9maWxlLCBjYl9kZWZfcHJhZ21hKTogTmV3IGZ1bmN0aW9ucy4KCShtYWluKTogU2V0IHVwIGNhbGxiYWNrcy4gIFJlZ2lzdGVyICNwcmFnbWEgaW1wbGVtZW50YXRpb24uCglEdW1wIG1hY3JvcyBmcm9tIGhlcmUuCgoyMDAwLTA4LTAxICBHZW9mZiBLZWF0aW5nICA8Z2VvZmZrQGN5Z251cy5jb20+CgoJKiBydGwuaCAoZW51bSByZWdfbm90ZSk6IEFkZCBSRUdfTUFZQkVfREVBRC4KCSogcnRsLmMgKHJlZ19ub3RlX25hbWUpOiBBZGQgUkVHX01BWUJFX0RFQUQuCgkqIGZsb3cuYyAocHJvcGFnYXRlX29uZV9pbnNuKTogQWxsb3cgZGVsZXRpb24gb2YgcHJvbG9ndWUvZXBpbG9ndWUKCWluc25zIGlmIHRoZXkgaGF2ZSBhIFJFR19NQVlCRV9ERUFEIG5vdGUgYXR0YWNoZWQuCgkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLmMgKHJzNjAwMF9tYXliZV9kZWFkKTogTmV3IGZ1bmN0aW9uLgoJKHJzNjAwMF9lbWl0X2xvYWRfdG9jX3RhYmxlKTogVE9DIGxvYWRzIG1heSBnbyBkZWFkLgoKMjAwMC0wOC0wMSAgSmltIFdpbHNvbiAgPHdpbHNvbkBjeWdudXMuY29tPgoKCSogY29uZmlnL2lhNjQvaWE2NC5jIChpYTY0X2Z1bmN0aW9uX2FyZyk6IEZpeCBsYXN0IGNoYW5nZS4gIFZlcmlmeQoJdHlwZSBleGlzdHMgYmVmb3JlIHVzaW5nIGl0LiAgVXNlIG51bWJlciBvZiB3b3JkcyBhcyBhbGlnbm1lbnQKCW90aGVyd2lzZS4KCShpYTY0X2Z1bmN0aW9uX2FyZ19wYXJ0aWFsX25yZWdzLCBpYTY0X2Z1bmN0aW9uX2FyZ19hZHZhbmNlLAoJaWE2NF92YV9hcmcpOiBQcm9wYWdhdGUgaWE2NF9mdW5jdGlvbl9hcmdzIGNoYW5nZXMgaGVyZS4KCjIwMDAtMDgtMDEgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgoJKiBjb25maWcvZWxmb3MuaCAoQVNNX0RFQ0xBUkVfT0JKRUNUX05BTUUpOiBDYXJlIGZvciBudWxsIERFQ0wuCgkqIGNvbmZpZy9pYTY0L3N5c3Y0LmggKEFTTV9PVVRQVVRfQUxJR05FRF9ERUNMX0xPQ0FMKTogTGlrZXdpc2UuCgoyMDAwLTA4LTAxICBCZXJuZCBTY2htaWR0ICA8YmVybmRzQGN5Z251cy5jby51az4KCglGcm9tIEpvZXJuIFJlbm5lY2tlOgoJKiBzaC5oIChDUFBfU1BFQywgVEFSR0VUX1NXSVRDSEVTKTogQWRkIG00LW5vZnB1LgoJKiBzaC5tZCAodWRpdnNpMywgZGl2c2kzKTogRG9uJ3QgdXNlIGxpYmNhbGxzIHRoYXQgdXNlIHRoZSBGUFUKCXVubGVzcyBUQVJHRVRfU0gzRSBpcyBzZXQuCgkqIHQtc2ggKE1VTFRJTElCX01BVENIRVMpOiBBZGQgbTI9bTQtbm9mcHUuCgoJKiBzaC5tZCAoYXNobHNpM19kLCBhc2hsc2kzX2spOiBSZW1vdmUsIHJlcGxhY2Ugd2l0aAoJKGFzaGxzaTNfc3RkKTogTmV3IHBhdHRlcm4uCgkoYXNobHNpMyBleHBhbmRlcik6IFVzZSBpdCBmb3IgVEFSR0VUX1NIMy4KCSogc2guYyAoZ2VuX2FzaGlmdCk6IFVzZSBpdCBpbnN0ZWFkIG9mIGFzaGxzaTNfay4KClR1ZSBBdWcgIDEgMTI6MzQ6MjEgTUVUIERTVCAyMDAwICBKYW4gSHViaWNrYSAgPGpoQHN1c2UuY3o+CgoJKiBsb29wLmMgKGNhbm9uaWNhbGl6ZV9jb25kaXRpb24pOiAgVXNlIGRlc3RpbmF0aW9uLCBub3Qgc291cmNlIHRvCglkZXRlcm1pbmUgU0VUJ3MgbW9kZS4KCjIwMDAtMDctMzEgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBmbG93LmMgKGNsZWFyX2xvZ19saW5rcyk6IEZpeCB0eXBvLgoKTW9uIEp1bCAzMSAyMjoxOToyNCAyMDAwICBKZWZmcmV5IEEgTGF3ICAobGF3QGN5Z251cy5jb20pCgoJKiBsb29wLmMgKGNoZWNrX2RicmFfbG9vcCk6IE1ha2UgY2hhbmdlIGZyb20gSnVseSAxNywgMjAwMCB3b3JrCglvbiB0YXJnZXRzIHdoaWNoIG5lZWQgbW9yZSB0aGFuIG9uZSBpbnNuIGZvciBhIGNvbXBhcmUvY2JyYW5jaAoJb3BlcmF0aW9uLgoKMjAwMC0wNy0zMSAgSmltIFdpbHNvbiAgPHdpbHNvbkBjeWdudXMuY29tPgoKCSogY29uZmlnL2lhNjQvaWE2NC5jIChpYTY0X2Z1bmN0aW9uX2FyZyk6IFVzZSBhbGlnbm1lbnQgbm90IHNpemUKCXdoZW4gY29tcHV0aW5nIG9mZnNldC4KCk1vbiBKdWwgMzEgMjA6MzU6NTAgMjAwMCAgRGVuaXMgQ2hlcnR5a292ICA8ZGVuaXNjQG92ZXJ0YS5ydT4KCgkqIGdlbnBlZXAuYyAobWFpbik6IEhhbmRsZSBERUZJTkVfUEVFUEhPTEUyLgoKMjAwMC0wNy0zMSAgR2VvZmYgS2VhdGluZyAgPGdlb2Zma0BjeWdudXMuY29tPgoKCSogZmxvdy5jIChjbGVhcl9sb2dfbGlua3MpOiBOdWtlIGdsb2JhbF9saXZlX2F0X3N0YXJ0IGFuZAoJZ2xvYmFsX2xpdmVfYXRfZW5kIGRhdGEsIHNpbmNlIGlmIHRoZSBsb2dfbGlua3Mgc3R1ZmYgaXMgaW52YWxpZAoJc28gaXMgZ2xvYmFsX2xpdmVfYXRfKi4KCjIwMDAtMDctMzEgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgoJKiB0bS50ZXhpIChBZGRyZXNzaW5nIE1vZGVzKTogQ2xhcmlmeSBQUkUvUE9TVF9NT0RJRlkgZGVzY3JpcHRpb25zLgoKMjAwMC0wNy0zMSAgSmFrdWIgSmVsaW5layAgPGpha3ViQHJlZGhhdC5jb20+CgoJKiBjcHBsZXguYyAoX2NwcF9nZXRfbGluZSk6IElmIGluZGV4IGlzIDAsIHJldHVybiBsaW5lIDAgY29sIDAuCgkoX2NwcF9nZXRfdG9rZW4pOiBEb24ndCBtYWNybyBleHBhbmQgYSBqdXN0IHBhc3RlZCB0b2tlbiBpZiBpdAoJd2FzIHBhc3RlZCBhdCBub19leHBhbmRfbGV2ZWwuCgoyMDAwLTA3LTMxICBaYWNrIFdlaW5iZXJnICA8emFja0B3b2xlcnkuY3VtYi5vcmc+CgoJKiBjcHBtYWNyby5jIChmaW5kX3BhcmFtLCBjb3VudF9wYXJhbXMsIHNhdmVfZXhwYW5zaW9uKToKCVBlcm1pdCAnZGVmaW5lZCcgYXMgYSBtYWNybyBwYXJhbWV0ZXIgbmFtZS4KCjIwMDAtMDctMzEgIFphY2sgV2VpbmJlcmcgIDx6YWNrQHdvbGVyeS5jdW1iLm9yZz4KCgkqIE1ha2VmaWxlLmluOiBSZW5hbWUgY3BwIHRvIGNwcDAsIHRyYWRjcHAgdG8gdHJhZGNwcDAsIGFuZAoJeGNwcCB0byBjcHAgdGhyb3VnaG91dC4KCShuYXRpdmUpOiBSZW1vdmUgdW5uZWNlc3NhcnkgZGVwZW5kZW5jeSBvbiBjcHAuCgoJKiBnY2MuYyAodHJhZF9jYXBhYmxlX2NwcCwgQyBzcGVjcyk6IFJlbmFtZSBjcHAgdG8gY3BwLAoJdHJhZGNwcCB0byB0cmFkY3BwMC4KCSguaSBzcGVjKTogQWRkIG1pc3Npbmcgb3V0cHV0LWZpbGUgc3BlYyB0byBjYzEgY29tbWFuZCBsaW5lLgoJKiBvYmpjL2xhbmctc3BlY3MuaDogUmVuYW1lIGNwcCB0byBjcHAwIGFuZC9vciB0cmFkY3BwIHRvIHRyYWRjcHAwLgoKMjAwMC0wNy0zMSAgWmFjayBXZWluYmVyZyAgPHphY2tAd29sZXJ5LmN1bWIub3JnPgoKCSogYy1kZWNsLmMgKG1lc2dfaW1wbGljaXRfZnVuY3Rpb25fZGVjbGFyYXRpb24pOiBJbml0IHRvIC0xLgoJKGltcGxpY2l0X2RlY2xfd2FybmluZyk6IE5ldyBmdW5jdGlvbi4KCShpbXBsaWNpdGx5X2RlY2xhcmUpOiBVc2UgaXQuCgkqIGMtdHlwZWNrLmMgKGJ1aWxkX2V4dGVybmFsX3JlZik6IFVzZSBpbXBsaWNpdF9kZWNsX3dhcm5pbmcKCXRvIGNvbXBsYWluIGFib3V0IGltcGxpY2l0IGRlY2xzIG9mIGJ1aWx0aW5zLgoKCSogYy1sYW5nLmMgKGxhbmdfaW5pdCk6IFNldCBtZXNnX2ltcGxpY2l0X2Z1bmN0aW9uX2RlY2xhcmF0aW9uCgliYXNlZCBvbiBwZWRhbnRpYyAmJiBmbGFnX2lzb2M5OSwgaWYgbm90IGFscmVhZHkgc2V0LgoJKiBjLXRyZWUuaDogRGVjbGFyZSBtZXNnX2ltcGxpY2l0X2Z1bmN0aW9uX2RlY2xhcmF0aW9uLgoJUHJvdG90eXBlIGltcGxpY2l0X2RlY2xfd2FybmluZy4KCjIwMDAtMDctMzAgIEplZmZyZXkgRC4gT2xkaGFtICA8b2xkaGFtQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBNYWtlZmlsZS5pbiAoc3NhLm8pOiBVcGRhdGVkIGhlYWRlciBmaWxlcyBpbiBkZXBlbmRlbmNlcy4KCSogYmFzaWMtYmxvY2suaDogQWRkZWQgY29tcHV0ZV9pbW1lZGlhdGVfcG9zdGRvbWluYXRvcnMgZGVjbGFyYXRpb24uCgkqIGNvbmZpZy9pMzg2L2kzODYuaCAoQ09OVkVSVF9IQVJEX1JFR0lTVEVSX1RPX1NTQV9QKTogQWRkZWQKCWRlZmluaXRpb24uCgkqIGZsb3cuYyAoY29tcHV0ZV9pbW1lZGlhdGVfZG9taW5hdG9ycyk6IFVwZGF0ZWQgY29tbWVudC4KCShjb21wdXRlX2ltbWVkaWF0ZV9wb3N0ZG9taW5hdG9ycyk6IEFkZGVkIGRlZmluaXRpb24uCgkqIHJ0bC5oIChIQVJEX1JFR0lTVEVSX1ApOiBBZGRlZCBkZWZpbml0aW9uLgoJKiBzc2EuYzogSW5jbHVkZSBhZGRpdGlvbmFsIGhlYWRlciBmaWxlcy4KCShhc3NlcnQpOiBBZGRlZCBkZWZpbml0aW9uLgoJKHNzYV9yZW5hbWVfdG9fbG9va3VwKTogQWRkZWQgdG8gcmVpbXBsZW1lbnQgc3NhX3JlbmFtZV90byB0bwoJaW5jbHVkZSBzZWxlY3QgaGFyZCByZWdpc3RlcnMuCgkoc3NhX3JlbmFtZV90b19pbnNlcnQpOiBMaWtld2lzZS4KCShzc2FfcmVuYW1lX2Zyb21faW5pdGlhbGl6ZSk6IExpa2V3aXNlLgoJKHNzYV9yZW5hbWVfZnJvbV9sb29rdXApOiBMaWtld2lzZS4KCShvcmlnaW5hbF9yZWdpc3Rlcik6IExpa2V3aXNlLgoJKHNzYV9yZW5hbWVfZnJvbV9pbnNlcnQpOiBBZGRlZCB0byByZWltcGxlbWVudCBzc2FfcmVuYW1lX2Zyb20gdG8KCWluY2x1ZGUgc2VsZWN0IGhhcmQgcmVpZ3N0ZXJzLgoJKHNzYV9yZW5hbWVfZnJvbV90cmF2ZXJzZSk6IExpa2V3aXNlLgoJKHNzYV9yZW5hbWVfZnJvbV9mcmVlKTogTGlrZXdpc2UuCgkoc3NhX3JlbmFtZV9mcm9tX3ByaW50KTogTGlrZXdpc2UuCgkoc3NhX3JlbmFtZV9mcm9tX3ByaW50XzEpOiBMaWtld2lzZS4KCShzc2FfcmVuYW1lX2Zyb21faGFzaF9mdW5jdGlvbik6IExpa2V3aXNlLgoJKHNzYV9yZW5hbWVfZnJvbV9lcXVhbCk6IExpa2V3aXNlLgoJKHNzYV9yZW5hbWVfZnJvbV9kZWxldGUpOiBMaWtld2lzZS4KCShzaW1wbGlmeV90b19pbW1lZGlhdGVfZG9taW5hdG9ycyk6IFJlbW92ZWQgaW4gZmF2b3Igb2YKCWZsb3cuYzpjb21wdXRlX2ltbWVkaWF0ZV9kb21pbmF0b3JzLgoJKGZpbmRfZXZhbHVhdGlvbnNfMSk6IE1vZGlmaWVkIHRvIHdvcmsgd2l0aCBoYXJkIHJlZ2lzdGVycy4KCShpbnNlcnRfcGhpX25vZGUpOiBMaWtld2lzZS4KCShpbnNlcnRfcGhpX25vZGVzKTogTGlrZXdpc2UuCgkoc3RydWN0IHJlbmFtZV9zZXRfZGF0YSk6IFVwZGF0ZWQgcHJldl9yZWcgY29tbWVudC4KCShjcmVhdGVfZGVsYXllZF9yZW5hbWUpOiBNb2RpZmllZCB0byB3b3JrIHdpdGggaGFyZCByZWdpc3RlcnMuCgkoUkVOQU1FX05PX1JUWCk6IFVwZGF0ZWQgY29tbWVudC4KCShhcHBseV9kZWxheWVkX3JlbmFtZXMpOiBNb2RpZmllZCB0byB3b3JrIHdpdGggaGFyZCByZWdpc3RlcnMuCgkocmVuYW1lX2luc25fMSk6IExpa2V3aXNlIGFuZCBhZGRlZCBoYW5kbGluZyBvZiBDTE9CQkVSIHJ0bHMuCgkocmVuYW1lX2Jsb2NrKTogVXBkYXRlZCB0byB1c2UgcmV2aXNlZCBzc2FfcmVuYW1lX3RvIGludGVyZmFjZS4KCShyZW5hbWVfcmVnaXN0ZXJzKTogVXBkYXRlZCB0byB1c2UgcmV2aXNlZCBzc2FfcmVuYW1lX3RvIGFuZAoJc3NhX3JlbmFtZV9mcm9tIGludGVyZmFjZS4KCShjb252ZXJ0X3RvX3NzYSk6IFJldmlzZWQgdG8gdXNlIGNvbXB1dGVfaW1tZWRpYXRlX2RvbWluYXRvcnMgYW5kCglkZWFsIHdpdGggaGFyZCByZWdpc3RlcnMuCgkobWFrZV9yZWdzX2VxdWl2YWxlbnRfb3Zlcl9iYWRfZWRnZXMpOiBNb2RpZmllZCB0byB3b3JrIHdpdGggaGFyZAoJcmVnaXN0ZXJzLiAgQWRkZWQgY2hlY2sgZm9yIGlsbGVnYWwgdW5pZmljYXRpb24gb2YgaGFyZCByZWdpc3Rlci4KCShtYWtlX2VxdWl2YWxlbnRfcGhpX2FsdGVybmF0aXZlc19lcXVpdmFsZW50KTogTW9kaWZpZWQgdG8gd29yawoJd2l0aCBoYXJkIHJlZ2lzdGVycy4KCShjb21wdXRlX2NvbnNlcnZhdGl2ZV9yZWdfcGFydGl0aW9uKTogTGlrZXdpc2UuCgkoY29hbGVzY2VfaWZfdW5jb25mbGljdGluZyk6IE1vZGlmaWVkIHRvIHdvcmsgd2l0aCBoYXJkIHJlZ2lzdGVycwoJYW5kIGNoZWNrIGZvciBjb25mbGljdGluZyBoYXJkIHJlZ2lzdGVycy4KCShtYXJrX3BoaV9hbmRfY29weV9yZWdzKTogUmV2aXNlZCBsb29wIHRvIHdvcmsgb25seSBvbiBwc2V1ZG8KCXJlZ2lzdGVycy4KCShyZW5hbWVfZXF1aXZhbGVudF9yZWdzX2luX2luc24pOiBNb2RpZmllZCB0byB3b3JrIHdpdGggaGFyZAoJcmVnaXN0ZXJzLgoJKHJlY29yZF9jYW5vbmljYWxfZWxlbWVudF8xKTogQWRkZWQgZGVmaW5pdGlvbi4KCShjaGVja19oYXJkX3JlZ3NfaW5fcGFydGl0aW9uKTogQWRkZWQgZGVmaW5pdGlvbi4KCShjb252ZXJ0X2Zyb21fc3NhKTogQWRkZWQgZGF0YSBzdHJ1Y3R1cmUgZGVhbGxvY2F0aW9uIGFuZCBjaGVjawoJZm9yIGlsbGVnYWwgaGFyZCByZWdpc3RlciB1bmlmaWNhdGlvbi4KCShjb25mbGljdF9oYXJkX3JlZ3NfcCk6IEFkZGVkIGRlZmluaXRpb24uCgkqIHRvcGxldi5jIChyZXN0X29mX2NvbXBpbGF0aW9uKTogQWRkZWQgY29tbWVudC4KCjIwMDAtMDctMzEgIEFudGhvbnkgR3JlZW4gIDxncmVlbkByZWRoYXQuY29tPgoKCSogY29uZmlnL2lhNjQvY3J0YmVnaW4uYXNtIChfX0VIX0ZSQU1FX0JFR0lOX18pOiBBbGlnbiBjb3JyZWN0bHkuCgoyMDAwLTA3LTMxICBKYXNvbiBNY011bGxhbiAgPGptY211bGxhbkBsaW51eGNhcmUuY29tPgoKCSogYnVpbHRpbnMuYyAoZXhwYW5kX2J1aWx0aW5fYXBwbHkpOiBEb24ndCBkZWZlciBwb3AgZHVyaW5nCglhcmd1bWVudCBzZXR1cC4KCjIwMDAtMDctMzEgSGVybWFuIEEuSi4gdGVuIEJydWdnZSA8SGFqLlRlbi5CcnVnZ2VAbmV0LkhDQy5ubD4KCgkqIGNhbGxzLmMgKGNvbWJpbmVfcGVuZGluZ19zdGFja19hZGp1c3RtZW50X2FuZF9jYWxsKTogT25seSB1c2UKCXByZWZlcnJlZF91bml0X3N0YWNrX2JvdW5kYXJ5IHdoZW4gaXQgaXMgPiAxLgoKMjAwMC0wNy0zMSAgSm9zZXBoIFMuIE15ZXJzICA8anNtMjhAY2FtLmFjLnVrPgoKCSogYy1jb21tb24uYyAoaW5pdF9mdW5jdGlvbl9mb3JtYXRfaW5mbyk6IEFkZCBDOTkgZm9ybWF0IGZ1bmN0aW9ucwoJaW4gQzk5IG1vZGUuCgoJKiBjLWRlY2wuYyAoZ2V0X3Bhcm1faW5mbyk6IERvbid0IHRyZWF0ICdjb25zdCB2b2lkJywgJ3ZvbGF0aWxlCgl2b2lkJyBvciAncmVnaXN0ZXIgdm9pZCcgYXMgYmVpbmcgdGhlIHNwZWNpYWwgY2FzZSBvZiAndm9pZCcgYWxvbmUKCWluIGEgcGFyYW1ldGVyIGxpc3QuCgoJKiBjLXR5cGVjay5jIChidWlsZF9jX2Nhc3QpOiBDaGFuZ2UgLVdjYXN0LXF1YWwgcGVkd2FybiBmb3IKCWRpc2NhcmRpbmcgcXVhbGlmaWVycyBpbnRvIGEgcGxhaW4gd2FybmluZy4KCjIwMDAtMDctMzEgIEthenUgSGlyYXRhICA8a2F6dUBoeGkuY29tPgoKCSogY29tYmluZS5jOiBGaXggZm9ybWF0dGluZy4KCgkqIGg4MzAwLm1kOiBGaXggZm9ybWF0dGluZy4KCgkqIGxvY2FsLWFsbG9jLmM6IEZpeCBmb3JtYXR0aW5nLgoKCSogaDgzMDAuYyAoZ2V0X3NoaWZ0X2FsZyk6IFJlbW92ZSB0aGUgdmFyaWFibGUgYWxnLgoJKGVtaXRfYV9zaGlmdCk6IFJlYXJyYW5nZSBjb2RlIHRvIGltcHJvdmUgcmVhZGFiaWxpdHkuCgoJKiBoODMwMC5tZCAobW92c2lfaDgzMDBocyk6IFJlYXJyYW5nZSBjb2RlIHRvIGltcHJvdmUgcmVhZGFiaWxpdHkuCgoJKiBoODMwMC5oIChNT0RFU19USUVBQkxFX1ApOiBBY2NlcHQgYSBjb21iaW5hdGlvbiBvZiBRSW1vZGUgYW5kCglISW1vZGUgb24gYWxsIGFyY2hpdGVjdHVyZXMgYW5kIGEgY29tYmluYXRpb24gb2YgSEltb2RlIGFuZCBTSW1vZGUKCW9uIEg4LzMwMEggYW5kIEg4Uy4KCgkqIGg4MzAwLmMgKHNwbGl0X2FkZHNfc3Vicyk6IFJlYXJyYW5nZSBjb2RlIGZvciBjb25jaXNlbmVzcy4KCk1vbiBKdWwgMzEgMTI6Mjc6NTUgTUVUIERTVCAyMDAwICBKYW4gSHViaWNrYSAgPGpoQHN1c2UuY3o+CgoJKiBpMzg2Lm1kIChhZGRzaSB0byBsZWEgc3BsaXR0ZXIsIGFzaGxxaTNfMV9sZWEpOiBGaXggYnVncwoJaW4gbXkgbGFzdCBjaGVja2luLgoKTW9uIEp1bCAzMSAxMDo0MTowMSBNRVQgRFNUIDIwMDAgIEphbiBIdWJpY2thICA8amhAc3VzZS5jej4KCgkqIHJlY29nLmMgKGV4dHJhY3RfaW5zbik6IFNldCBvcGVyYW5kX21vZGUgYWNjb3JkaW5nIHRvCglvcGVyYW5kIGlmIG1hdGNoX29wZXJhbmQgaXMgVk9JRG1vZGUuCgpNb24gSnVsIDMxIDEwOjM2OjM4IE1FVCBEU1QgMjAwMCAgSmFuIEh1Ymlja2EgIDxqaEBzdXNlLmN6PgoKCSogcmVjb2cuYyAodmFsaWRhdGVfcmVwbGFjZV9ydHhfMSk6IERvIG5vdCBhYm9ydCBmb3IgKG5pbCkgZXhwcmVzc2lvbi4KCjIwMDAtMDctMzEgIEdlb2ZmIEtlYXRpbmcgIDxnZW9mZmtAY3lnbnVzLmNvbT4KCgkqIGMtcGFyc2UuaW4gKGV4dGRlZnMpOiBDYWxsIGdnY19jb2xsZWN0IGJldHdlZW4gZXh0ZXJuYWwKCWRlZmluaXRpb25zLgoKMjAwMC0wNy0zMCAgTWljaGFlbCBIYXllcyAgPG1oYXllc0BjeWdudXMuY29tPgoJICAgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgoJKiBNYWtlZmlsZS5pbiAoT0JKUyk6IEFkZCBkb2xvb3Auby4KCSogZG9sb29wLmM6IE5ldyBmaWxlLgoKCSogZmluYWwuYyAoaW5zbl9jdXJyZW50X3JlZmVyZW5jZV9hZGRyZXNzKTogUmV0dXJuIDAgYmVmb3JlIGZpbmFsLgoJKiBmbGFncy5oIChmbGFnX2JyYW5jaF9vbl9jb3VudF9yZWcpOiBGaXggdHlwb3MgaW4gY29tbWVudGFyeS4KCSoganVtcC5jIChhbnlfdW5jb25kanVtcF9wKTogTGlrZXdpc2UuCgkqIGxvb3AuYyAoaW5kaXJlY3RfanVtcF9pbl9mdW5jdGlvbik6IE1ha2Ugc3RhdGljLgoJKHN0cmVuZ3RoX3JlZHVjZSk6IENhbGwgZG9sb29wX29wdGltaXplLgoJKGluc2VydF9iY3QsIGluc3RydW1lbnRfbG9vcF9iY3QpOiBSZW1vdmUuCgkqIGxvb3AuaCAoZG9sb29wX29wdGltaXplKTogUHJvdG90eXBlLgoJKiByZWNvZy5jIChzcGxpdF9hbGxfaW5zbnMpOiBTcGxpdCBhbGwgSU5TTl9QLgoJKiB0b3BsZXYuYyAoZmxhZ19icmFuY2hfb25fY291bnRfcmVnKTogRGVmYXVsdCBvbi4KCgkqIGNvbmZpZy9jNHgvYzR4LmMgKGM0eF9vcHRpbWl6YXRpb25fb3B0aW9ucyk6IERvbid0IHNldAoJZmxhZ19icmFuY2hfb25fY291bnRfcmVnLgoJKiBjb25maWcvaTM4Ni9pMzg2LmMgKG92ZXJyaWRlX29wdGlvbnMpOiBMaWtld2lzZS4KCSogY29uZmlnL3JzNjAwMC9yczYwMDAuYyAob3B0aW1pemF0aW9uX29wdGlvbnMpOiBMaWtld2lzZS4KCgkqIGNvbmZpZy9pMzg2L2kzODYubWQgKGRlY3JlbWVudF9hbmRfYnJhbmNoX29uX2NvdW50KTogUmVtb3ZlLgoJKGRvbG9vcF9lbmQpOiBOZXcuCgkoZGJyYV9nZSk6IFJlbW92ZSwgYXMgd2VsbCBhcyBhbGwgaXQncyBzcGxpdHRlcnMuCgoJKiBjb25maWcvcnM2MDAwL3JzNjAwMC5tZCAoZGVjcmVtZW50X2FuZF9icmFuY2hfb25fY291bnQpOiBSZW1vdmUuCgkoZG9sb29wX2VuZCk6IE5ldy4KCgkqIGNvbmZpZy9pYTY0L2lhNjQtcHJvdG9zLmggKGFyX2xjX3JlZ19vcGVyYW5kKTogRGVjbGFyZS4KCShpYTY0X3JlZ2lzdGVyX21vdmVfY29zdCk6IERlY2xhcmUuCgkqIGNvbmZpZy9pYTY0L2lhNjQuYyAoYXJfbGNfcmVnX29wZXJhbmQpOiBOZXcuCgkoc3RydWN0IGlhNjRfZnJhbWVfaW5mbyk6IEFkZCBhcl9zaXplLgoJKGlhNjRfY29tcHV0ZV9mcmFtZV9zaXplKTogU2V0IGl0LgoJKHNhdmVfcmVzdG9yZV9pbnNucyk6IFNhdmUgYW5kIHJlc3RvcmUgYXIubGMuCgkoaWE2NF9yZWdpc3Rlcl9tb3ZlX2Nvc3QpOiBOZXcsIG1vdmVkIGZyb20gaGVhZGVyIGZpbGUuICBIYW5kbGUKCWFwcGxpY2F0aW9uIHJlZ2lzdGVycy4KCShSRUdfQVJfUEZTLCBSRUdfQVJfRUMpOiBSZW1vdmUuICBSZXBsYWNlIHdpdGggQVJfKl9SRUdOVU0gbnVtYmVycy4KCShlbWl0X2luc25fZ3JvdXBfYmFycmllcnMpOiBTcGVjaWFsIGNhc2UgZG9sb29wX2VuZF9pbnRlcm5hbC4KCShpYTY0X2VwaWxvZ3VlX3VzZXMpOiBNYXJrIGFyLmxjIGxpdmUgYXQgZW5kLgoJKiBjb25maWcvaWE2NC9pYTY0LmggKEFSX0NDVl9SRUdOVU0sIEFSX0xDX1JFR05VTSk6IE5ldyByZWdpc3RlcnMuCgkoQVJfRUNfUkVHTlVNLCBBUl9QRlNfUkVHTlVNKTogTmV3IHJlZ2lzdGVycy4KCShGSVJTVF9QU0VVRE9fUkVHSVNURVIpOiBNYWtlIHJvb20uCgkoQVJfTV9SRUdOT19QLCBBUl9JX1JFR05PX1AsIEFSX1JFR05PX1ApOiBOZXcuCgkoRklYRURfUkVHSVNURVJTLCBDQUxMX1VTRURfUkVHSVNURVJTKTogVXBkYXRlLgoJKFJFR19BTExPQ19PUkRFUik6IFVwZGF0ZS4KCShIQVJEX1JFR05PX01PREVfT0spOiBVcGRhdGUuCgkoUkVHSVNURVJfTkFNRVMpOiBVcGRhdGUuCgkoZW51bSByZWdfY2xhc3MpOiBBZGQgQVJfTV9SRUdTIGFuZCBBUl9JX1JFR1MuCgkoUkVHX0NMQVNTX05BTUVTLCBSRUdfQ0xBU1NfQ09OVEVOVFMpOiBVcGRhdGUuCgkoUkVHTk9fUkVHX0NMQVNTKTogVXBkYXRlLgoJKExFR0lUSU1BVEVfQUREUkVTU19ESVNQKTogRGlzcGxhY2VtZW50IHJhbmdlIGlzIDkgYml0cywgbm90IDEwLgoJKFJFR0lTVEVSX01PVkVfQ09TVCk6IE1vdmUgb3V0IG9mIGxpbmUuCgkoUFJFRElDQVRFX0NPREVTKTogVXBkYXRlLgoJKiBjb25maWcvaWE2NC9pYTY0Lm1kIChtb3ZkaSBwYXR0ZXJucyk6IEhhbmRsZSBhciByZWdpc3RlciBjbGFzc2VzLgoJKGFkZHNpM19wbHVzMV9hbHQsIGFkZGRpM19wbHVzMV9hbHQpOiBOZXcuCgkoc2hsYWRkX2VsaW0gc3BsaXR0ZXIpOiBBbGxvdyBjb25zdGFudHMgaW4gdGhlIHByZWRpY2F0ZS4KCShkb2xvb3BfZW5kLCBkb2xvb3BfZW5kX2ludGVybmFsKTogTmV3LgoKMjAwMC0wNy0zMCAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAY3lnbnVzLmNvbT4KCgkqIGdlbmF0dHJ0YWIuYyAoc3RydWN0IGluc25fZGVmKTogQWRkIGxpbmVubyBtZW1iZXIuCgkoc3RydWN0IGluc25fZW50KTogTGlrZXdpc2UuCgkoc3RydWN0IGF0dHJfZGVzYyk6IExpa2V3aXNlLgoJKHN0cnVjdCBkZWxheV9kZXNjKTogTGlrZXdpc2UuCgkoc3RydWN0IGZ1bmN0aW9uX3VuaXRfb3ApOiBMaWtld2lzZS4KCShzdHJ1Y3QgZnVuY3Rpb25fdW5pdCk6IExpa2V3aXNlLgoJKGNoZWNrX2F0dHJfdmFsdWUpOiBVc2UgbWVzc2FnZV93aXRoX2xpbmUuCgkoY2hlY2tfZGVmcyk6IExpa2V3aXNlLgoJKGV4cGFuZF91bml0cyk6IExpa2V3aXNlLgoJKGNoZWNrX2F0dHJfdGVzdCk6IFRha2UgYSBsaW5lbm8gYXJndW1lbnQuCgkoZ2VuX2F0dHIpOiBMaWtld2lzZS4KCShnZW5faW5zbik6IExpa2V3aXNlLgoJKGdlbl9kZWxheSk6IExpa2V3aXNlLgoJKGdlbl91bml0KTogTGlrZXdpc2UuCgkobWFpbik6IEdpdmUgaXQgdG8gdGhlbS4KCShjb252ZXJ0X3NldF9hdHRyX2FsdGVybmF0aXZlKTogVGFrZSBhbiBpbnNuX2RlZiBhcmd1bWVudAoJaW5zdGVhZCBvZiBudW1fYWx0IGFuZCBpbnNuX2luZGV4LgoJKGNvbnZlcnRfc2V0X2F0dHIpOiBMaWtld2lzZS4KCSh3cml0ZV90ZXN0X2V4cHIpOiBQcm90ZWN0IElOU05fQUREUkVTU0VTIGxvYWQKCXdpdGggSU5TTl9BRERSRVNTRVNfU0VUX1AuCgoyMDAwLTA3LTMwICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEBjeWdudXMuY29tPgoKCSogZmxvdy5jIChpbml0X3Byb3BhZ2F0ZV9ibG9ja19pbmZvKTogVXNlIHBjX3NldC4KClN1biBKdWwgMzAgMjA6NTg6MzQgTUVUIERTVCAyMDAwICBKYW4gSHViaWNrYSAgPGpoQHN1c2UuY3o+CgoJKiBpMzg2Lm1kICgqbGVhX2dlbmVyYWxfWzEyM10pIE5ldyBpbnNucyBhbmQgc3BsaXRzLgoJKGFkZHNpMyB0byBsZWEgc3BsaXR0ZXIpOiBIYW5kbGUgb3RoZXIgbW9kZXMgdG9vLgoJKHNobHNpMyB0byBsZWEgc3BsaXR0ZXIpOiBMaWtld2lzZS4KCShhZGRoaV8xX2xlYSwgc2hsaGlfMV9sZWEpOiBOZXcgcGF0dGVybnMuCgkoYWRkaGlfMSwgc2hsaGlfMSk6IENvbmRpdGlvbml6ZSBieSBQQVJUSUFMX1JFR19TVEFMTC4KClN1biBKdWwgMzAgMjA6NTE6MjUgTUVUIERTVCAyMDAwICBKYW4gSHViaWNrYSAgPGpoQHN1c2UuY3o+CgoJKiByZWNvZy5jIChnZW5lcmFsX29wZXJhbmQsIG5vbmltbWVkaWF0ZV9vcGVyYW5kKTogQWNjZXB0CglhbnkgbW9kZSBmb3IgVk9JRG1vZGUgQ09OU1RBTlRfUCBvcGVyYW5kcy4KClN1biBKdWwgMzAgMjA6NDI6MjEgTUVUIERTVCAyMDAwICBKYW4gSHViaWNrYSAgPGpoQHN1c2UuY3o+CgoJKiBnY3NlLmMgKHRyeV9yZXBsYWNlX3JlZyk6IFVzZSB2YWxpZGF0ZV9yZXBsYWNlX3J0eF9zdWJleHAKCWluc3RlYWQgb2YgcmVwbGFjZV9ydHguCgkqIHJlY29nLmMgKHZhbGlkYXRlX3JlcGxhY2VfcnR4X3N1YmV4cCk6IE5ldyBmdW5jdGlvbi4KCSogcmVjb2cuaCAodmFsaWRhdGVfcmVwbGFjZV9ydHhfc3ViZXhwKTogRGVjbGFyZS4KClN1biBKdWwgMzAgMjA6Mzg6MjYgTUVUIERTVCAyMDAwICBKYW4gSHViaWNrYSAgPGpoQHN1c2UuY3o+CgoJKiBjb21iaW5lLmMgKHNpbXBsaWZ5X3NldCwgbWFrZV9leHRyYWN0aW9uLCBtYWtlX2NvbXBvdW5kX29wZXJhdGlvbgoJbWFrZV9maWVsZF9hc3NpZ25tZW50KTogVXNlIGZ1bGwgbWFzayBpbnN0ZWFkIG9mIEdFVF9NT0RFX01BU0sgKG1vZGUpCglhcyBmb3JjZV90b19tb2RlIGFyZ3VtZW50LgoKU3VuIEp1bCAzMCAyMDozMDo0MSBNRVQgRFNUIDIwMDAgIEphbiBIdWJpY2thICA8amhAc3VzZS5jej4KCgkqIGNvbWJpbmUuYyAoaWZfdGhlbl9lbHNlX2NvbmQpOiBCZSBzdXJlIHRoYXQgbW9kZSBmaXRzIGluCglIT1NUX1dJREVfSU5ULgoKU3VuIEp1bCAzMCAyMDoyNzozNiBNRVQgRFNUIDIwMDAgIEphbiBIdWJpY2thICA8amhAc3VzZS5jej4KCgkqIGNvbWJpbmUuYyAocmVjb3JkX3Byb21vdGVkX3ZhbHVlKTogIEFsbG93IGJpdHNpemUgb2YgbW9kZQoJdG8gYmUgZXF1aXZhbGVudCB0byBIT1NUX0JJVFNfUEVSX1dJU0VfSU5ULgoKU3VuIEp1bCAzMCAyMDoyNToyMSBNRVQgRFNUIDIwMDAgIEphbiBIdWJpY2thICA8amhAc3VzZS5jej4KCgkqIGZ1bmN0aW9uLmMgKGFzc2lnbl9zdGFja19sb2NhbF8xLCBhc3NpZ25fc3RhY2tfdGVtcF9mb3JfdHlwZSk6CglEbyBub3QgY2FsbCBnZW5fbW9kZV9hbGlnbm1lbnQgd2hlbiBtb2RlIGlzIEJMS21vZGUuCgpTdW4gSnVsIDMwIDIwOjIxOjU0IE1FVCBEU1QgMjAwMCAgSmFuIEh1Ymlja2EgIDxqaEBzdXNlLmN6PgoKCSogbG9vcC5jIChleHByZXNzX2Zyb21fMSk6IEZpeCBjYWxsIG9mIHNpbXBsaWZ5X2dlbl9iaW5hcnkuCgpTdW4gSnVsIDMwIDIwOjA4OjM3IE1FVCBEU1QgMjAwMCAgSmFuIEh1Ymlja2EgIDxqaEBzdXNlLmN6PgoKCSogc2ltcGxpZnktcnR4LmMgKHNpbXBsaWZ5X3JlbGF0aW9uYWxfb3BlcmF0aW9uKTogVmVyaWZ5IHRoYXQgbW9kZSA9PQoJVk9JRG1vZGUgaW1wbGllcyBib3RoIG9wZXJhbmRzIHRvIGJlIFZPSURtb2RlLgoJKHNpbXBsaWZ5X3Rlcm5hcnlfb3BlcmF0aW9uKTogQ29tcHV0ZSBwcm9wZXJseSB0aGUgbW9kZSBvZiBjb21wYXJpc29uLgoJKiBjb21iaW5lLmMgKGNvbWJpbmVfc2ltcGxpZnlfcnR4KTogTGlrZXdpc2UuCgoyMDAwLTA3LTI1ICBNaWNoYWVsIEhheWVzICA8bXBoQHBhcmFkaXNlLm5ldC5uej4KCgkqIGJhc2ljLWJsb2NrLmggKHN0cnVjdCBsb29wcyk6IE5ldyBmaWVsZCByY19vcmRlci4KCSogZmxvdy5jIChmbG93X2xvb3BzX2NmZ19kdW1wKTogRHVtcCByY19vcmRlciBpZiBjb21wdXRlZC4KCShmbG93X2xvb3BzX2ZyZWUpOiBGcmVlIHJjX29yZGVyLgoJKGZsb3dfZGVwdGhfZmlyc3Rfb3JkZXJfY29tcHV0ZSk6IE5ldyBwYXJhbWV0ZXIgcmNfb3JkZXIuCgkoZmxvd19sb29wc19maW5kKTogQWxsb2NhdGUgcmNfb3JkZXIgYW5kIHN3YXAgdXNhZ2Ugd2l0aAoJZGZzX29yZGVyLgoKMjAwMC0wNy0zMCBIZXJtYW4gQS5KLiB0ZW4gQnJ1Z2dlIDxIYWouVGVuLkJydWdnZUBuZXQuSENDLm5sPgoJICAgTWljaGFlbCBIYXllcyAgPG0uaGF5ZXNAZWxlYy5jYW50ZXJidXJ5LmFjLm56PgoKCSogY29uZmlnL2M0eC9jNHgubWQgKHNldF9sZHBfcHJvbG9ndWUpOiBBZGQgZm9yIFJUTCBwcm9sb2d1ZS9lcGlsb2d1ZS4KCShwdXNoX3N0LCBwdXNoX2RwLCBwb3Bfc3QsIHBvcF9kcCwgcG9wcWlfdW5zcGVjKTogTGlrZXdpc2UuCgkobm9kYl9jYWxsLCByZXR1cm5fZnJvbV9lcGlsb2d1ZSk6IExpa2V3aXNlLgoJKHJldHVybl9mcm9tX2ludGVycnVwdF9lcGlsb2d1ZSwgcHJvbG9ndWUsIGVwaWxvZ3VlKTogTGlrZXdpc2UuCgkqIGNvbmZpZy9jNHgvYzR4LmMgKGM0eF9leHBhbmRfcHJvbG9ndWUsIGM0eF9leHBhbmRfZXBsaWxvZ3VlKTogQWRkLgoJKiBjb25maWcvYzR4L2M0eC1wcm90b3MuaCAoYzR4X2ludGVycnVwdF9mdW5jdGlvbl9wKTogQWRkLgoJKGM0eF9leHBhbmRfcHJvbG9ndWUsIGM0eF9leHBhbmRfZXBpbG9ndWUpOiBMaWtld2lzZS4KCShjNHhfdmFsaWRfdHlwZV9hdHRyaWJ1dGVfcCk6IExpa2V3aXNlLgoJKiBjb25maWcvYzR4L2M0eC5oIChGVU5DVElPTl9QUk9MT0dVRSwgRlVOQ1RJT05fRVBJTE9HVUUpOiBEZWxldGUuCgkoRlVOQ1RJT05fQkxPQ0tfUFJPRklMRVJfRVhJVCk6IENvbnZlcnQgdG8gZW1pdCBSVEwuCgoyMDAwLTA3LTMwICBNaWNoYWVsIEhheWVzICA8bS5oYXllc0BlbGVjLmNhbnRlcmJ1cnkuYWMubno+CgoJKiBjb25maWcvYzR4L2M0eC5jIChjNHhfZW1pdF9tb3ZlX3NlcXVlbmNlKTogVXNlIGxvYWRxaV9iaWdfY29uc3RhbnQKCWFuZCBsb2FkaGlfYmlnX2NvbnN0YW50IGlmIGFwcGxpY2FibGUuCgkqIGNvbmZpZy9jNHgvYzR4Lm1kIChsb2FkcWlfYmlnX2NvbnN0YW50LCBsb2FkaGlfYmlnX2NvbnN0YW50KTogVHdlYWsKCWFuZCBhZGQgbmV3IHNwbGl0dGVyLnMKCjIwMDAtMDctMzAgIE1pY2hhZWwgSGF5ZXMgIDxtLmhheWVzQGVsZWMuY2FudGVyYnVyeS5hYy5uej4KCgkqIGNvbmZpZy9jNHgvYzR4LmMgKGM0eF9ycHRiX2luc2VydCk6IE1ha2UgbW9yZSByb2J1c3QuCgoyMDAwLTA3LTMwICBNaWNoYWVsIEhheWVzICA8bS5oYXllc0BlbGVjLmNhbnRlcmJ1cnkuYWMubno+CgoJKiBjb25maWcvYzR4L2M0eC5oIChBU01fRk9STUFUX1BSSVZBVEVfTkFNRSk6IE91dHB1dCAkIGluIGxhYmVsLgoKMjAwMC0wNy0zMCAgTWljaGFlbCBIYXllcyAgPG0uaGF5ZXNAZWxlYy5jYW50ZXJidXJ5LmFjLm56PgoKCSogY29uZmlnL2M0eC9jNHguaCAoSVNfWFhYX1JFR05PKTogUmV3cml0ZSB0byBhdm9pZCB1bnNpZ25lZCB3YXJuaW5ncy4KCjIwMDAtMDctMzAgIE1pY2hhZWwgSGF5ZXMgIDxtLmhheWVzQGVsZWMuY2FudGVyYnVyeS5hYy5uej4KCgkqIGNvbmZpZy9jNHgvbGliZ2NjLlMgKGRpdnFmMyk6IEltcHJvdmUgYWNjdXJhY3kuCgoyMDAwLTA3LTI3ICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCVB1dCBwaGkgbm9kZXMgYWZ0ZXIgTk9URV9JTlNOX0JBU0lDX0JMT0NLLgoJKiBydGwuaCAoTk9URV9JTlNOX0JBU0lDX0JMT0NLX1ApOiBOZXcgbWFjcm8uCgkqIGJiLXJlb3JkZXIuYyAoZ2V0X25leHRfYmJfbm90ZSk6IFVzZSBOT1RFX0lOU05fQkFTSUNfQkxPQ0tfUC4KCShnZXRfcHJldl9iYl9ub3RlKTogTGlrZXdpc2UuCgkocmVtb3ZlX3Njb3BlX25vdGVzKTogTGlrZXdpc2UuCgkqIGZsb3cuYyAoY29tbWl0X29uZV9lZGdlX2luc2VydGlvbik6IExpa2V3aXNlLgoJKG1lcmdlX2Jsb2Nrc19ub21vdmUpOiBMaWtld2lzZS4KCSh2ZXJpZnlfZmxvd19pbmZvKTogTGlrZXdpc2UuCgkqIGdjc2UuYyAoaW5zZXJ0X2luc25fZW5kX2JiKTogTGlrZXdpc2UuCgkqIHJlZy1zdGFjay5jIChlbWl0X3N3YXBfaW5zbik6IExpa2V3aXNlLgoJKiBzc2EuYyAoZmlyc3RfaW5zbl9hZnRlcl9iYXNpY19ibG9ja19ub3RlKTogTmV3IGZ1bmN0aW9uLgoJKGluc2VydF9waGlfbm9kZSk6IFVzZSBpdC4KCShyZW5hbWVfYmxvY2spOiBMaWtld2lzZS4KCShlbGltaW5hdGVfcGhpKTogTGlrZXdpc2UuCgkobWFrZV9yZWdzX2VxdWl2YWxlbnRfb3Zlcl9iYWRfZWRnZXMpOiBMaWtld2lzZS4KCShtYWtlX2VxdWl2YWxlbnRfcGhpX2FsdGVybmF0aXZlc19lcXVpdmFsZW50KTogTGlrZXdpc2UuCgkoZm9yX2VhY2hfc3VjY2Vzc29yX3BoaSk6IExpa2V3aXNlLgoJKGNvbnZlcnRfZnJvbV9zc2EpOiBNb2RpZnkgcGhpLW5vZGUgZGVsZXRpb24gYWxnb3JpdGhtLgoKMjAwMC0wNy0yOSAgQW5kcmVhcyBKYWVnZXIgIDxhakBzdXNlLmRlPgoKCSogY29uZmlndXJlLmluIChtaXBzKi0qLWxpbnV4Kik6IFVzZSBtaXBzKmVsIHRvIGNoZWNrIGZvciBsaXR0bGUKCWVuZGlhbiBNSVBTLCBhZGQgdG1ha2VfZmlsZS4KCgkqIGNvbmZpZy9taXBzL2xpbnV4LmggKFRBUkdFVF9WRVJTSU9OKTogVXNlIEdOVS9MaW51eC4KCShTVUJUQVJHRVRfQ1BQX1NQRUMpOiBEZWZhdWx0IE1JUFNfSVNBIGlzIDEuCglQYXRjaGVzIGJ5IE1hY2llaiBXLiBSb3p5Y2tpIDxtYWNyb0BkczIucGcuZ2RhLnBsPi4KCjIwMDAtMDctMjggIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgoJKiBjb25maWcvaWE2NC9pYTY0LmMgKGlhNjRfcHJpbnRfb3BlcmFuZCk6IEZpeCB0eXBvcy4KCVNpZ24gZXh0ZW5kIG1vZGUgc2l6ZSBiZWZvcmUgbmVnYXRpbmcuCgoyMDAwLTA3LTI4ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEBjeWdudXMuY29tPgoKCSogZW1pdC1ydGwuYyAoZ2VuX2xvd3BhcnRfY29tbW9uKTogQWRkIG1pc3NpbmcgJ2MnIHZhcmlhYmxlLgoKMjAwMC0wNy0yOCAgQmVybmQgU2NobWlkdCAgPGJlcm5kc0BjeWdudXMuY28udWs+CgoJKiBjc2UuYyAoY2Fub25faGFzaCk6IEhhbmRsZSBQUkVfTU9ESUZZL1BPU1RfTU9ESUZZLgoJKGNzZV9pbnNuKTogTGlrZXdpc2UuCgkoYWRkcl9hZmZlY3RzX3NwX3ApOiBMaWtld2lzZS4KCSogZXhwci5jIChtb3ZlX2J5X3BpZWNlcyk6IExpa2V3aXNlLgoJKGNsZWFyX2J5X3BpZWNlcyk6IExpa2V3aXNlLgoJKiBnY3NlLmMgKG9wcnNfdW5jaGFuZ2VkX3ApOiBMaWtld2lzZS4KCSogaGFpZmEtc2NoZWQuYyAoc2NoZWRfYW5hbHl6ZV8yKTogTGlrZXdpc2UuCgkqIHJlY29nLmMgKG9mZnNldHRhYmxlX2FkZHJlc3NfcCk6IExpa2V3aXNlLgoJKiByZWdjbGFzcy5jIChyZWNvcmRfYWRkcmVzc19yZWdzKTogTGlrZXdpc2UuCgkqIHJlbG9hZC5jIChmaW5kX3JldXNhYmxlX3JlbG9hZCk6IExpa2V3aXNlLgoJKHB1c2hfcmVsb2FkKTogTGlrZXdpc2UuCgkob3BlcmFuZHNfbWF0Y2hfcCk6IExpa2V3aXNlLgoJKGRlY29tcG9zZSk6IExpa2V3aXNlLgoJKGZpbmRfcmVsb2Fkc19hZGRyZXNzXzEpOiBMaWtld2lzZS4KCShmaW5kX2luY19hbW91bnQpOiBMaWtld2lzZS4KCSogcmVsb2FkMS5jIChlbGltaW5hdGlvbl9lZmZlY3RzKTogTGlrZXdpc2UuCgkqIHJlc291cmNlLmMgKG1hcmtfc2V0X3Jlc291cmNlcyk6IExpa2V3aXNlLgoJKiBmbG93LmMgKGF0dGVtcHRfYXV0b19pbmMpOiBOZXcgZnVuY3Rpb247IG1vc3RseSBicm9rZW4gb3V0CglvZiBmaW5kX2F1dG9faW5jLgoJKGZpbmRfYXV0b19pbmMpOiBTcGxpdCBpbnRvIHR3byBmdW5jdGlvbnMgYW5kIGVuaGFuY2VkIHRvCglnZW5lcmF0ZSBQT1NUX01PRElGWS4KCSogcnRsLmRlZiAoUFJFX01PRElGWSwgUE9TVF9NT0RJRlkpOiBBZGp1c3QgY29tbWVudC4KCSogcnRsLmggKGNvdW50X2FsbF9vY2N1cnJlbmNlcyk6ICBEZWNsYXJlLgoJKEhBVkVfe1BSRSxQT1NUfV9NT0RJRllfe0RJU1AsUkVHfSk6IFByb3ZpZGUgZGVmYXVsdCBvZiAwIGlmIG5vdAoJZGVmaW5lZC4KCSogcnRsYW5hbC5jIChjb3VudF9hbGxfb2NjdXJyZW5jZXMpOiBOZXcgZnVuY3Rpb24uCgkqIHRtLnRleGkgKEhBVkVfUE9TVF9NT0RJRllfRElTUCwgSEFWRV9QUkVfTU9ESUZZX0RJU1AsCglIQVZFX1BPU1RfTU9ESUZZX1JFRywgSEFWRV9QUkVfTU9ESUZZX1JFRyk6IERvY3VtZW50LgoKCSogY29uZmlnL2lhNjQvaWE2NC1wcm90b3MuaCAoZGVzdGluYXRpb25fb3BlcmFuZCk6IERlY2xhcmUuCgkqIGNvbmZpZy9pYTY0L2lhNjQuYyAoZGVzdGluYXRpb25fb3BlcmFuZCk6IE5ldyBmdW5jdGlvbi4KCShpYTY0X3ByaW50X29wZXJhbmQpOiBIYW5kbGUgUE9TVF9NT0RJRlkuCgkocnR4X25lZWRzX2JhcnJpZXIpOiBMaWtld2lzZS4KCSogY29uZmlnL2lhNjQvaWE2NC5oIChIQVZFX1BPU1RfTU9ESUZZX0RJU1ApOiBEZWZpbmUgdG8gMS4KCShIQVZFX1BPU1RfTU9ESUZZX1JFRyk6IERlZmluZSB0byAxLgoJKE1BWF9SRUdTX1BFUl9BRERSRVNTKTogQ2hhbmdlIHRvIDIuCgkoR09fSUZfTEVHSVRJTUFURV9BRERSRVNTKTogQWNjZXB0IFBPU1RfTU9ESUZZIHRvby4KCShMRUdJVElNQVRFX0FERFJFU1NfUkVHKTogTmV3IGhlbHBlciBtYWNyby4KCShMRUdJVElNQVRFX0FERFJFU1NfRElTUCk6IExpa2V3aXNlLgoJKFBSRURJQ0FURV9DT0RFUyk6IEFkZCBlbnRyeSBmb3IgZGVzdGluYXRpb25fb3BlcmFuZC4KCSogY29uZmlnL2lhNjQvaWE2NC5tZCAoYWxsIG1vdiBwYXR0ZXJucyk6IFVzZSBkZXN0aW5hdGlvbl9vcGVyYW5kCglwcmVkaWNhdGUgZm9yIG9wZXJhbmQgMC4KCjIwMDAtMDctMjggIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIGR3YXJmMm91dC5jOiBJbmRlbnQgI2Vycm9yIGRpcmVjdGl2ZS4KCgkqIGdibC1jdG9ycy5oOiBGaXggdHlwbyBpbiBjb21tZW50LgoJKF9fZG9fZ2xvYmFsX2N0b3JzKTogUHJvdG90eXBlLgoKCSogZ2NzZS5jIChyZWNvcmRfb25lX3NldCwgcHJlX2RlbGV0ZSk6IFJlbW92ZSB1bnVzZWQgdmFyaWFibGVzLgoKCSogcnM2MDAwLmMgKHJzNjAwMF9tYXliZV9kZWFkKTogRGVsZXRlIHVudXNlZCBwcm90b3R5cGUuCgkocHJpbnRfb3BlcmFuZCk6IEluaXRpYWxpemUgdmFyaWFibGUgYHQnLgoKMjAwMC0wNy0yNyAgQWxkeSBIZXJuYW5kZXogIDxhbGR5aEByZWRoYXQuY29tPgoKCSogY29uZmlnL2FybS9hcm0ubWQgKCJjYWxsX3ZhbHVlIik6IHJlbW92ZWQgY29uc3RyYWludHMuCglDb25zdHJhaW50cyBhcmUgaWdub3JlZCBpbiBleHBhbmRlcnMuCgkoKmNhbGxfdmFsdWVfcmVnKTogc3BsaXQgPXJmIGludG8gdmFyaW91cyBjb25zdHJhaW50cy4KCSgqY2FsbF92YWx1ZV9tZW0pOiBzYW1lCgkoKmNhbGxfdmFsdWVfc3ltYm9sKTogc2FtZQoJKCpzaWJjYWxsX3ZhbHVlX2luc24pOiBzYW1lCgoyMDAwLTA3LTI4ICBQaGlsaXBwIFRob21hcyAgPHB0aG9tYXNAc3VzZS5kZT4KCgkqIGluc3RhbGwudGV4aSAoLS1lbmFibGUtbmxzKTogQ2hhbmdlIHRoZSBkZXNjcmlwdGlvbiBvZiB0aGUgTkxTCglyZWxhdGVkIGNvbmZpZ3VyZSBvcHRpb25zIHRvIG1hdGNoIHRoZSBjdXJyZW50IHN0YXRlLgoJKC0td2l0aC1pbmNsdWRlZC1nZXR0ZXh0KTogTGlrZXdpc2UuCgkoLS1lbmFibGUtbWFpbnRhaW5lci1tb2RlKTogTmV3IGRlc2NyaXB0aW9uIGFkZGVkLgoJKiBleHRlbmQudGV4aSAoLWZzdHJpY3QtcHJvdG90eXBlKTogQWRkIG1pc3NpbmcgJy4nLgoKMjAwMC0wNy0yNyAgSmltIFdpbHNvbiAgPHdpbHNvbkBjeWdudXMuY29tPgoKCSogZHdhcmYyb3V0LmMgKGdlbl9kZWNsX2RpZSk6IERvbid0IGNhbGwgZ2VuX2Fic3RyYWN0X2Z1bmN0aW9uIGlmCglERUNMX0lOSVRJQUwgKGRlY2wpID09IE5VTExfVFJFRS4KCjIwMDAtMDctMjcgIEFsZXhhbmRyZSBPbGl2YSAgPGFvbGl2YUByZWRoYXQuY29tPgoKCSogTWFrZWZpbGUuaW4gKElOU05fQVRUUl9IKTogTmV3IG1hY3JvLiAgUmVwbGFjZSBhbGwgZGVwZW5kZW5jaWVzCglvbiBpbnNuLWF0dHIuaCB3aXRoIGl0LgoJKiBnZW5hdHRyLmM6IEdlbmVyYXRlIGAjaW5jbHVkZSAiaW5zbi1hZGRyLmgiJyBpZiBIQVZFX0FUVFJfbGVuZ3RoLgoJKiBpbnNuLWFkZHIuaDogTmV3IGhlYWRlci4KCShpbnNuX2FkZHJlc3Nlc18pOiBSZW5hbWVkIGZyb20gaW5zbl9hZGRyZXNzZXMuCgkoSU5TTl9BRERSRVNTRVNfREVGTiwgSU5TTl9BRERSRVNTRVMsIElOU05fQUREUkVTU0VTX0FMTE9DLAoJSU5TTl9BRERSRVNTRVNfRlJFRSwgSU5TTl9BRERSRVNTRVNfU0VUX1AsIElOU05fQUREUkVTU0VTX1NJWkUsCglJTlNOX0FERFJFU1NFU19ORVcpOiBOZXcgbWFjcm9zLgoJKiBnZW5hdHRydGFiLmMgKHdyaXRlX3Rlc3RfZXhwcik6IFVzZSBuZXcgbWFjcm9zLgoJKiBmaW5hbC5jIChpbnNuX2FkZHJlc3NlcywgaW5pdF9pbnNuX2xlbmd0aHMpOiBMaWtld2lzZS4KCShhbGlnbl9mdXp6LCBzaG9ydGVuX2JyYW5jaGVzKTogTGlrZXdpc2UuCgkoZmluYWwpOiBMaWtld2lzZS4gIERvIG5vdCByZWplY3QgbmV3IGluc25zIGlmIHRoZWlyIGFkZHJlc3NlcwoJaGF2ZSBiZWVuIGFkZGVkIHRvIElOU05fQUREUkVTU0VTLgoJKiBjb25maWcvYXJtL2FybS5jLCBjb25maWcvYXZyL2F2ci5jOiBVc2UgbmV3IG1hY3Jvcy4KCSogY29uZmlnL2g4MzAwL2g4MzAwLmMsIGNvbmZpZy9pMzcwL2kzNzAuYzogTGlrZXdpc2UuCgkqIGNvbmZpZy9tODhrL204OGsuYywgY29uZmlnL3BhL3BhLmMsIGNvbmZpZy9wYS9wYS5tZDogTGlrZXdpc2UuCgkqIGNvbmZpZy9zcGFyYy9zcGFyYy5jLCBjb25maWcvc3BhcmMvc3BhcmMubWQ6IExpa2V3aXNlLgoJKiBjb25maWcvc2gvc2guYzogTGlrZXdpc2UuCgkob3V0cHV0X2JyYW5jaHlfaW5zbik6IFVzZSBJTlNOX0FERFJFU1NFU19ORVcuCgoJKiBNYWtlZmlsZS5pbiAoYm9vdHN0cmFwKTogTW92ZSAtQnN0YWdlTi8gYmFjayB0byB0aGUgYmVnaW5uaW5nLgoKMjAwMC0wNy0yNyAgQW5kcmV3IENhZ25leSAgPGNhZ25leUBiMS5jeWdudXMuY29tPgoKCSogZ2NjLmMgKHN0cnVjdCBwcmVmaXhfbGlzdCk6IEFkZCBtZW1iZXIgcHJpb3JpdHkuCgkoZW51bSBwYXRoX3ByZWZpeF9wcmlvcml0eSk6IERlY2xhcmUuCgkoYWRkX3ByZWZpeCk6IFJlcGxhY2UgYGBmaXJzdCcnIHdpdGggYGBwcmlvcml0eScnLiAgQXBwZW5kIG5ldwoJZW50cnkgYnV0IGtlZXAgbGlzdCBpbiBwcmlvcml0eSBvcmRlci4KCShwcm9jZXNzX2NvbW1hbmQpOiBVcGRhdGUuICBQYXNzIFBSRUZJWF9QUklPUklUWV9CX09QVCBvcgoJUFJFRklYX1BSSU9SSVRZX0xBU1QgdG8gYWRkX3ByZWZpeC4KCShwcm9jZXNzX2NvbW1hbmQpOiBNb3ZlIGluY2x1ZGUga2x1ZGdlIC0gZm9vL3N0YWdlTiAtIHRvIGJlZm9yZQoJZm9vL2luY2x1ZGUuCgoyMDAwLTA3LTI3ICBKYXNvbiBNZXJyaWxsICA8amFzb25AcmVkaGF0LmNvbT4KCgkqIGR3YXJmMm91dC5jIChnZW5fdHlwZWRlZl9kaWUpOiBBYm9ydCBpZiB3ZSBnZXQgaWRlbnRpY2FsCglUUkVFX1RZUEUgYW5kIERFQ0xfT1JJR0lOQUxfVFlQRSBvbiBhIHR5cGVkZWYuCgoyMDAwLTA3LTI3ICBSb2RuZXlCcm93biAgPFJvZG5leUJyb3duQHBtc2MuY29tPgoKCSogZXhwci5oIChnZXRfYWxpYXNfc2V0LCBsYW5nX2dldF9hbGlhc19zZXQpOiBEZWxldGUgcHJvdG90eXBlcy4KCSogdHJlZS5oIChnZXRfYWxpYXNfc2V0LCBsYW5nX2dldF9hbGlhc19zZXQpOiBQcm90b3R5cGUuCgoyMDAwLTA3LTI3ICBKb3NlcGggUy4gTXllcnMgIDxqc20yOEBjYW0uYWMudWs+CgoJKiBjLWRlY2wuYyAoZmluaXNoX2Z1bmN0aW9uKTogRG9uJ3QgdHJlYXQgJ21haW4nIHNwZWNpYWxseSB1bmxlc3MKCWZsYWdfaG9zdGVkLiAgSW4gQzk5IG1vZGUsIHJldHVybiAwIGZyb20gJ21haW4nIHVubGVzcwoJREVGQVVMVF9NQUlOX1JFVFVSTiBpcyBvdGhlcndpc2UgZGVmaW5lZC4KCgkqIGMtZGVjbC5jIChzdG9yZV9wYXJtX2RlY2xzKTogSW4gQzk5IG1vZGUsIHBlZHdhcm4gZm9yIGZ1bmN0aW9uCglwYXJhbWV0ZXJzIGRlZmF1bHRpbmcgdG8gaW50IGluIGFuIG9sZC1zdHlsZSBmdW5jdGlvbiBkZWZpbml0aW9uLgoKMjAwMC0wNy0yNyAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogYy1wYXJzZS5pbiAoc3RyaW5nKTogRm9yIC1XdHJhZGl0aW9uYWwsIHdhcm4gYWJvdXQgc3RyaW5nCgljb25jYXRlbmF0aW9uIG9ubHkgb25jZSBwZXIgbGluZS4KClRodSBKdWwgMjcgMDk6MjU6MTcgMjAwMCAgQWtpa28gTWF0c3VzaGl0YSAgPG1hdHVzaXRhQHNyYS5jby5qcD4KCgkqIHBhL3gtcGEtaHB1eDogQWRkIC1EX0hJVVhfU09VUkNFIHRvIEZJWFBST1RPX0RFRklORVMKCWZvciBISS1VWC9XRTIgc3lzdGVtcy4KCjIwMDAtMDctMjQgIEJydWNlIEtvcmIgIDxia29yYkBnbnUub3JnPgoKCSogZml4aW5jbC9maXhmaXhlcy5jKGVtaXRfZ251X3R5cGUpOiByZXdyb3RlIHRvICpyZWx5KiBvbiBHQ0MKCWRlZmluaW5nIHRoZSBfX3h4eF9UWVBFX18gbWFjcm9zLgoJKiBmaXhpbmNsL2ZpeGluY2wudHBsKGdudV90eXBlX21hcCk6IG5vdyBvYnNvbGV0ZQoJKiBmaXhpbmNsL2ZpeGxpYi5oOiBkb24ndCBuZWVkIHRvIGluY2x1ZGUgInRtLmgiIGFueW1vcmUKCSogZml4aW5jbC9pbmNsaGFjay5kZWYodHlwZV9tYXApOiBub3cgb2Jzb2xldGUKClRodSBKdWwgMjcgMTE6NTQ6MTcgMjAwMCAgQW5kcmV3IENhZ25leSAgPGNhZ25leUBiMS5jeWdudXMuY29tPgoKCSogY3BwLnRleGk6IEFwcGVuZCBhIHRyYWlsaW5nIGZ1bGwtc3RvcCB0byB4cmVmcyB3aGVyZSBuZWVkZWQuCgoyMDAwLTA3LTI2ICBEYXZlIFBpdHRzICA8ZHBpdHRzQGNvenguY29tPgoKCSogaTM3MC5jOiBSZW1vdmUgTE9OR0VYVEVSTkFMIGlmZGVmIGZyb20gYWxpYXNfbnVtYmVyLiBBZGRlZCBoYXNoCglyb3V0aW5lIGNvbnN0YW50cy4KCShtdnNfaGFzaF9hbGlhcyk6IE5ldyBmdW5jdGlvbi4KCShtdnNfYWRkX2FsaWFzKTogQ2hhbmdlIGFyZ3VtZW50IHNwYWNpbmcuCgkobXZzX25lZWRfYWxpYXMpOiBDaGFuZ2UgYWxpYXNpbmcgY3JpdGVyaWEuIEFkZGVkIGRvY3VtZW50YXRpb24uCgkobXZzX2dldF9hbGlhcyk6IENoYW5nZSB0byB1c2UgaGFzaGVkIG5hbWUuIFRoZSBoYXNoZWQgbmFtZSBwcmV2ZW50cwoJQ1NFQ1QgbmFtZSBjb2xsaXNpb25zLgoJKG12c19jaGVja19hbGlhcyk6IExpa2V3aXNlLgoJKGhhbmRsZV9wcmFnbWEpOiBDaGFuZ2UgZG9jdW1lbnRhdGlvbi4KCSogaTM3MC5tZCAobXVsc2kzLCBkaXZzaTMsIHVkaXZzaTMsIG1vZHNpMywgdW1vZHNpMyk6IENoYW5nZWQgZ2VuX3J0eAoJbW9kZSBmcm9tIFNJbW9kZSB0byBESW1vZGUuCgkoaW9yaGkzKTogQ2hhbmdlZCBMVE9SRyBzaXplIGZvciBpbnNuLgoKV2VkIEp1bCAyNiAxOTo0NDowNSAyMDAwICAgSGFucy1QZXRlciBOaWxzc29uICA8aHBAYXhpcy5jb20+CgoJKiByZWxvYWQuYyAoZmluZF9yZWxvYWRzX3RvcGxldik6IFJlbG9hZCBhIHBhcmFkb3hpY2FsIHN1YnJlZyBvZiBhCgltZW0gaWYgdGhlIGFkZHJlc3MgaXMgYSBtb2RlX2RlcGVuZGVudF9hZGRyZXNzX3AuCgoyMDAwLTA3LTI2ICBLYXp1IEhpcmF0YSAgPGthenVAaHhpLmNvbT4KCgkqIGg4MzAwLmMgKHByaW50X29wZXJhbmQpOiBQcmludCAiOjgiIHdoZW4gdGhlICdSJyBvcGVyYW5kIGlzCglzdWl0YWJsZSBmb3IgOC1iaXQgYWJzb2x1dGUuCgkqIGg4MzAwLmggKEVJR0hUQklUX0NPTlNUQU5UX0FERFJFU1NfUCk6IE5ldy4KCShPS19GT1JfVSk6IEFkZCBhIGNhc2UgZm9yIHRoZSA4LWJpdCBjb25zdGFudCBhZGRyZXNzIG9uIHRoZQoJSDgvMzAwSC4KCldlZCBKdWwgMjYgMTk6MjY6MjEgMjAwMCAgSGFucy1QZXRlciBOaWxzc29uICA8aHBAYXhpcy5jb20+CgoJKiB2YXJhc20uYyAoYXNzZW1ibGVfdmFyaWFibGUpIFshIGRlZmluZWQoQVNNX09VVFBVVF9BTElHTkVEX0NPTU1PTikKCSYmICEgZGVmaW5lZCAoQVNNX09VVFBVVF9BTElHTkVEX0JTU10pOiBBbHNvIHRlc3QKCSEgZGVmaW5lZChBU01fT1VUUFVUX0FMSUdORURfREVDTF9DT01NT04pIGJlZm9yZSBjb21wbGFpbmluZyBhYm91dAoJbGFjayBvZiBpbXBsZW1lbnRlZCBhbGlnbm1lbnQuCgoyMDAwLTA3LTI2ICBHZW9mZnJleSBLZWF0aW5nICA8Z2VvZmZrQGN5Z251cy5jb20+CgoJKiBlbWl0LXJ0bC5jIChnZW5fbG93cGFydF9jb21tb24pIFtSRUFMX0FSSVRITUVUSUNdOiBIYW5kbGUKCWNyb3NzLWNvbXBpbGluZyBiZXR3ZWVuIDY0LWJpdCBhbmQgMzItYml0IG1hY2hpbmVzLgoKMjAwMC0wNy0yNyAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAY3lnbnVzLmNvbT4KCgkqIGNvbmZpZy9pYTY0L2lhNjQubWQgKG1vdnFpY2NfYXN0ZXAsIG1vdnFpX2ludGVybmFsX2FzdGVwKTogTmV3LgoJKG1vdmhpY2NfYXN0ZXAsIG1vdmhpX2ludGVybmFsX2FzdGVwKTogTmV3LgoJKG1vdnNpY2NfYXN0ZXAsIG1vdnNpX2ludGVybmFsX2FzdGVwKTogTmV3LgoJKG1vdmRpY2NfYXN0ZXAsIG1vdmRpX2ludGVybmFsX2FzdGVwKTogTmV3LgoJKG1vdnNmY2NfYXN0ZXAsIG1vdnNmX2ludGVybmFsX2FzdGVwKTogTmV3LgoJKG1vdmRmY2NfYXN0ZXAsIG1vdmRmX2ludGVybmFsX2FzdGVwKTogTmV3LgoJKG1vdnhmY2NfYXN0ZXAsIG1vdnhmX2ludGVybmFsX2FzdGVwKTogTmV3LgoJKGNtb3ZkaV9pbnRlcm5hbF9hc3RlcCwgY21vdnNpX2ludGVybmFsX2FzdGVwKTogTmV3LgoJVW5pZnkgdGhlIGNtb3ZbZHNdaSBzcGxpdHRlcnMuCgoyMDAwLTA3LTI3ICBSb2RuZXkgQnJvd24gIDxSb2RuZXlCcm93bkBwbXNjLmNvbT4KCgkqIHJlYWwuYyAoYXNjdG9lZyk6IFJlbmFtZSBgZXJyb3InIGxhYmVsIHRvIHVuZXhwZWN0ZWRfY2hhcl9lcnJvcgoKMjAwMC0wNy0yNiAgTmljayBDbGlmdG9uICA8bmlja2NAY3lnbnVzLmNvbT4KCgkqIGNvbmZpZy9hcm0vdnhhcm0uaCAoQ1BQX1BSRURFRklORVMpOiBSZW1vdmUgZGVmaW5pdGlvbiBvZgoJX19hcm1fXy4gIEFsbG93IGl0IHRvIGJlIGRlZmluZWQgYnkgQ1BQX0lTQV9TUEVDIGluIGFybS5oCgoJKiBkd2FyZjJvdXQuYyAoZHdhcmYyb3V0X2ZyYW1lX2RlYnVnX2V4cHIpOiBBY2NlcHQgU0VRVUVOQ0UgYXMKCXdlbGwgYXMgUEFSQUxMRUwgYmxvY2tzIGluIEZSQU1FX1JFTEFURURfRVhQUiBub3Rlcy4KCjIwMDAtMDctMjYgIEFsZXhhbmRyZSBPbGl2YSAgPGFvbGl2YUByZWRoYXQuY29tPgoKCSogYy1kZWNsLmMgKGZpbmlzaF9lbnVtKTogQ29udmVydCBlbnVtZXJhdGlvbnMgdGhhdCBmaXQgaW4gYW4KCWBpbnQnIHRvIGBpbnQnLgoJKGJ1aWxkX2VudW1lcmF0b3IpOiBJbiBwZWRhbnRpYyBtb2RlLCBjYXN0IHRvIGBpbnQnIHRob3NlIHRoYXQKCWRvbid0LgoKMjAwMC0wNy0yNSAgUm9kbmV5IEJyb3duICA8Um9kbmV5QnJvd25AcG1zYy5jb20+CgoJKiBjb25maWcvYWxwaGEvb3NmLmggKFNJWkVfVFlQRSwgUFRSRElGRl9UWVBFKTogTmV3LgoKVHVlIEp1bCAyNSAyMzowODozMyAyMDAwICBKIm9ybiBSZW5uZWNrZSA8YW15bGFhckBjeWdudXMuY28udWs+CgoJKiBzaC5tZCAoY21wZ3RkaV90KTogTXVzdCBiZSBzcGxpdC4KCShjbXBndGRpX3QrMSk6IE5ldyBzcGxpdHRlci4KCjIwMDAtMDctMjUgIFphY2sgV2VpbmJlcmcgIDx6YWNrQHdvbGVyeS5jdW1iLm9yZz4KCgkqIGNwcGxpYi5jIChfY3BwX2NoZWNrX2RpcmVjdGl2ZSk6IElzc3VlIC1XdHJhZGl0aW9uYWwKCXdhcm5pbmdzIGZvciBpbmRlbnRlZCBkaXJlY3RpdmVzIGV2ZW4gaWYgd2UgYXJlIHNraXBwaW5nLgoKMjAwMC0wNy0yNSAgTmF0aGFuIFNpZHdlbGwgIDxuYXRoYW5AY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGludm9rZS50ZXhpIChzdHJpY3QtcHJvdG90eXBlcyk6IFJlbW92ZS4KCSogZXh0ZW5kLnRleGkgKERlcHJlY2F0ZWQgRmVhdHVyZXMpOiBBZGQgc3RyaWN0LXByb3RvdHlwZXMuCgkoQmFja3dhcmRzIENvbXBhdGliaWxpdHkpOiBOZXcgbm9kZS4KCjIwMDAtMDctMjUgIEpha3ViIEplbGluZWsgIDxqYWt1YkByZWRoYXQuY29tPgoKCSogY29uZmlnL2kzODYvaTM4Ni5tZCAoYW5kc2lfMSsxKTogQWxsb3cgSEltb2RlLgoJKGFuZHNpXzErMik6IFJlcXVpcmUgcV9yZWdzX29wZXJhbmQuCgoyMDAwLTA3LTI1ICBKYWt1YiBKZWxpbmVrICA8amFrdWJAcmVkaGF0LmNvbT4KCgkqIGNvbmZpZy9pMzg2L2kzODYubWQgKGNhbGxfcG9wKTogQ2hlY2sgb3BlcmFuZHNbMF0sCglub3Qgb3BlcmFuZHNbMV0uIE9ubHkgY2hlY2sgU1lNQk9MX1JFRl9GTEFHIGZvciBhIFNZTUJPTF9SRUYuCgkoY2FsbCk6IExpa2V3aXNlLgoJKGNhbGxfdmFsdWVfcG9wKTogT25seSBjaGVjayBTWU1CT0xfUkVGX0ZMQUcgZm9yIGEgU1lNQk9MX1JFRi4KCShjYWxsX3ZhbHVlKTogTGlrZXdpc2UuCgoyMDAwLTA3LTI1ICBaYWNrIFdlaW5iZXJnICA8emFja0B3b2xlcnkuY3VtYi5vcmc+CgoJKiB0b3BsZXYuYyAocGlwZV9jbG9zZWQpOiBEZWxldGUuCgkoY3Jhc2hfc2lnbmFsKTogTmV3LiAgR2VuZXJhdGUgSUNFIGZvciBhIGZhdGFsIHNpZ25hbC4KCShmbG9hdF9zaWduYWwpOiBDYWxsIGNyYXNoX3NpZ25hbCBvdXRzaWRlIGEgZmxvYXQtaGFuZGxlcgoJYmxvY2ssIG5vdCBhYm9ydC4KCShtYWluKTogSW5zdGFsbCBjcmFzaF9zaWduYWwgYXMgaGFuZGxlciBmb3IgY29yZS1kdW1waW5nIHNpZ25hbHMuCgoyMDAwLTA3LTI1ICBEYXZpZCBFZGVsc29obiAgPGVkZWxzb2huQGdudS5vcmc+CgoJKiByczYwMDAuYyAocHJpbnRfb3BlcmFuZCwgY2FzZSAnVCcpOiBOZXcgY2FzZS4KCgkqIHJzNjAwMC5tZCAoY2FsbF9pbmRpcmVjdF9haXgzMik6IENvbnZlcnQgdG8gZXhwYW5kZXIgb2YKCXNjaGVkdWxlZCBpbnN0cnVjdGlvbnMuCgkoY2FsbF9pbmRpcmVjdF9haXg2NCk6IExpa2V3aXNlLgoJKGNhbGxfdmFsdWVfaW5kaXJlY3RfYWl4ezMyLDY0fSk6IExpa2V3aXNlLgoJKGNhbGwsIGNhbGxfdmFsdWUpOiBJbnZva2UgZXhwYW5kZXJzIGZvciBBSVguICBGYWxsIHRocm91Z2ggdG8KCW1hdGNoZXJzIGZvciBTeXNWLgoJKGNhbGxfaW5kaXJlY3Rfbm9ubG9jYWxfYWl4ezMyLDY0fSk6IE5ldyBwYXR0ZXJucyAoY3RyIGFuZCBscikuCgkoY2FsbF92YWx1ZV9pbmRpcmVjdF9ub25sb2NhbF9haXh7MzIsNjR9KTogTmV3IHBhdHRlcm5zLgoJKGNhbGxfbm9ubG9jYWxfYWl4MzIpOiBSZW1vdmUgQ0FMTF9MT05HIGFsdGVybmF0aXZlLiAgT3BlcmFuZCAxCglvbmx5ICJnIiBjb25zdHJhaW50LgoJKGNhbGxfbm9ubG9jYWxfYWl4NjQpOiBMaWtld2lzZS4KCShjYWxsX3ZhbHVlX25vbmxvY2FsX2FpeHszMiw2NH0pOiBMaWtld2lzZS4KCShjYWxsX25vbmxvY2FsX3N5c3YpOiBOZXcgcGF0dGVybiBmb3IgY3RyLCBsciwgYW5kIHN5bWJvbGljCglvcGVyYW5kcy4KCShjYWxsX3ZhbHVlX25vbmxvY2FsX3N5c3YpOiBOZXcgcGF0dGVybi4KCShpbmRpcmVjdF9qdW1we3NpLGRpfSk6IFVzZSBuZXcgJ1QnIG1vZGlmaWVyLgoJKHRhYmxlanVtcHtzaSxkaX0gbWF0Y2hlcnMpOiBMaWtld2lzZS4KCShyZXR1cm5faW50ZXJuYWxfe3NpLGRpfSk6IExpa2V3aXNlLgoJKHJldHVybl9laF97c2ksZGl9KTogTGlrZXdpc2UuCgoyMDAwLTA3LTI0ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEBjeWdudXMuY29tPgoKCSogY29uZmlnL2lhNjQvaWE2NC5jIChpYTY0X3ByaW50X29wZXJhbmQpOiBIYW5kbGUgIiUsIi4KCSogY29uZmlnL2lhNjQvaWE2NC5oIChQUklOVF9PUEVSQU5EX1BVTkNUX1ZBTElEX1ApOiBMaWtld2lzZS4KCSogY29uZmlnL2lhNjQvaWE2NC5tZCAobW92ZGlfaW50ZXJuYWwpOiBVc2UgaXQuCgoyMDAwLTA3LTI0ICBaYWNrIFdlaW5iZXJnICA8emFja0B3b2xlcnkuY3VtYi5vcmc+CgoJKiBjcHBleHAuYzogV2FybiBhYm91dCB1bmFyeSArIGlmIC1XdHJhZGl0aW9uYWwuCgkqIGNwcGxleC5jIChsZXhfbGluZSk6IEFsd2F5cyBzZXQgQk9MIG9uIHRoZSBmaXJzdCB0b2tlbiBvZiBhIGxpbmUuCgoyMDAwLTA3LTI0ICBNaWNoYWVsIE1laXNzbmVyICA8bWVpc3NuZXJAcmVkaGF0LmNvbT4KCgkqIGQzMHYuaCAoRlVOQ1RJT05fQVJHX0tFRVBfQVNfUkVGRVJFTkNFKTogRGVsZXRlIHJlZmVyZW5jZXMgdG8KCXVuc3VwcG9ydGVkIG1hY3JvLgoKMjAwMC0wNy0yNCAgTmljayBDbGlmdG9uICA8bmlja2NAY3lnbnVzLmNvbT4KCgkqIGNvbmZpZy9hcm0vYXJtLmMgKGVtaXRfbXVsdGlfcmVnX3B1c2gpOiBHZW5lcmF0ZSBhCglSRUdfRlJBTUVfUkVMRUFURURfTk9URSB0aGF0IGlzIGNvbXBhdGlibGUgd2l0aCB0aGUgY29kZSBpbgoJZHdhcmYyb3V0X2RlYnVnX2ZyYW1lX2V4cHIuCgoyMDAwLTA3LTI0ICBKYXNvbiBNZXJyaWxsICA8amFzb25AcmVkaGF0LmNvbT4KCgkqIGR3YXJmMm91dC5jOiBDb21wbGFpbiBpZiBEV0FSRjJfREVCVUdHSU5HX0lORk8gaXMgZGVmaW5lZCB3aXRob3V0CglVTkFMSUdORURfSU5UX0FTTV9PUC4KCShkZWZfY2ZhXzEpOiBEb24ndCBlbWl0IGRlZl9jZmFfcmVnaXN0ZXIgb3IgZGVmX2NmYV9vZmZzZXQgdG8gYWRqdXN0CglhIGxvY2F0aW9uIGV4cHJlc3Npb24uCgkoZHdhcmYyb3V0X2ZyYW1lX2RlYnVnX2V4cHIpOiBMb3NlIGNmYV9vbGRfcmVnIHN0dWZmLiAgRG9uJ3QKCWFzc3VtZSBpbmRpcmVjdCBhY2Nlc3MgaWYgd2UncmUgc2F2aW5nIHRoZSBDRkEgYWRkcmVzcyBleGFjdGx5LgoKCSogTWFrZWZpbGUuaW4gKGJvb3RzdHJhcCk6IE1vdmUgLUJzdGFnZU4vIHRvIHRoZSBlbmQuCgoyMDAwLTA3LTI0ICBKYWt1YiBKZWxpbmVrICA8amFrdWJAcmVkaGF0LmNvbT4KCgkqIHRyYWRjcHAuYyAobWFpbik6IFVwZGF0ZSBtYXhfaW5jbHVkZV9sZW4gZm9yIGNwcF9pbmNsdWRlX2RlZmF1bHRzCglhcyB3ZWxsLgoKMjAwMC0wNy0yNCAgTWljaGFlbCBNZWlzc25lciAgPG1laXNzbmVyQHJlZGhhdC5jb20+CgoJKiBpbnZva2UudGV4aSAoRDMwViBPcHRpb25zKTogQWRkIGQzMHYgb3B0aW9ucy4KCk1vbiBKdWwgMjQgMDI6MDQ6NTIgMjAwMCAgSmVmZnJleSBBIExhdyAgKGxhd0BjeWdudXMuY29tKQoKCSogZ2NzZS5jIChhbGxvY19wcmVfbWVtKTogRG8gbm90IGFsbG9jIFRSQU5TUE9VVCwgaXQgaXMgbm90CgluZWVkZWQgYnkgb3VyIGdjc2UgcGFzcyBhbnltb3JlLgoJKGZyZWVfcHJlX21lbSk6IENvcnJlc3BvbmRpbmcgY2hhbmdlcy4KCShjb21wdXRlX3ByZV9kYXRhKTogRG8gbm90IGNhbGwgY29tcHV0ZV90cmFuc3BvdXQgYW55bW9yZS4KCgkqIGdjc2UuYyAoYWxsb2NfYXZhaWxfZXhwcl9tZW0pOiBLaWxsIHVudXNlZCAndV9iaXRtYXAnLgoJKGZyZWVfYXZhaWxfZXhwcl9tZW0sIGFsbG9jX3ByZV9tZW0sIGZyZWVfcHJlX21lbSk6IENvcnJlc3BvbmRpbmcKCWNoYW5nZXMuCgoJKiBnY3NlLmMgKGZyZWVfcHJlX21lbSk6IERvIG5vdCBmcmVlIEFOVExPQyBhbmQgQUVfS0lMTCBoZXJlLgoJKGNvbXB1dGVfcHJlX2RhdGEpOiBEbyBpdCBoZXJlIGluc3RlYWQuCgoJKiBnY3NlLmMgKGFsbG9jX3ByZV9tZW0sIGZyZWVfcHJlX21lbSk6IERlbGV0ZSB1bnVzZWQgYml0bWFwCgkndGVtcF9iaXRtYXAnLgoJKHByZV9kZWxldGUpOiBDb3JyZXNwb25kaW5nIGNoYW5nZXMuCgoyMDAwLTA3LTIzICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogYy1zZW1hbnRpY3MuYyAobWFrZV9ydGxfZm9yX2xvY2FsX3N0YXRpYyk6IFVzZSBUUkVFX0FTTV9XUklUVEVOCgl0byBmaWd1cmUgb3V0IHdoZXRoZXIgb3Igbm90IGEgdmFyaWFibGUgaGFzIGFscmVhZHkgYmVlbiBlbWl0dGVkLgoKU3VuIEp1bCAyMyAxNDo0OToxMiAyMDAwICBKYXNvbiBFY2toYXJkdCAgPGpsZUBjeWdudXMuY29tPgoKCSogY29uZmlnL2k4NjAvaTg2MC5tZCAodW50eXBlZF9jYWxsIGV4cGFuZGVyKTogVXNlIEdFTl9DQUxMCglpbnN0ZWFkIG9mIGdlbl9jYWxsLgoKU3VuIEp1bCAyMyAxMTo1MjowMyAyMDAwICBHZW9yZ2UgSGVsZmZyaWNoIChnZW9yZ2VAZ2x5LmJyaXMuYWMudWspCgoJKiBkYnhvdXQuYyAoZGJ4b3V0X3R5cGUsIGNhc2UgQ09NUExFWF9UWVBFKTogRml4IGxlbmd0aCBmaWVsZCBpbiBzdGFiLgoKMjAwMC0wNy0yMyAgS2F6dSBIaXJhdGEgIDxrYXp1QGh4aS5jb20+CgoJKiBoODMwMC5jOiBGaXggZm9ybWF0dGluZy4KCjIwMDAtMDctMjMgIEpvc2VwaCBTLiBNeWVycyAgPGpzbTI4QGNhbS5hYy51az4KCgkqIGMtdHlwZWNrLmMgKGNfZXhwYW5kX3N0YXJ0X2Nhc2UpOiBDaGFuZ2UgLVd0cmFkaXRpb25hbCBwZWR3YXJuCglmb3IgYGxvbmcnIHN3aXRjaCBleHByZXNzaW9uIGludG8gYSBwbGFpbiB3YXJuaW5nLgoKCSogYy1sZXguYyAoaW5pdF9sZXgpOiBLZWVwIHRoZSAiaW5saW5lIiBrZXl3b3JkIGluIEM5OSBtb2RlLgoJKHl5bGV4KTogRG9uJ3QgcGVkd2FybiBmb3IgImlubGluZSIgaW4gQzk5IG1vZGUuCgoJKiBiaXRtYXAuYyAoZGVidWdfYml0bWFwX2ZpbGUpOiBDYXN0IHBvaW50ZXJzIHRvIFBUUiBmb3IgcHJpbnRpbmcKCXdpdGggJXAuCgkqIGdnYy1wYWdlLmMgKGRlYnVnX3ByaW50X3BhZ2VfbGlzdCwgYWxsb2NfcGFnZSwgZnJlZV9wYWdlLAoJZ2djX2FsbG9jKTogTGlrZXdpc2UuCgkqIGJiLXJlb3JkZXIuYyAoZHVtcF9zY29wZV9mb3Jlc3RfMSk6IExpa2V3aXNlLgoKMjAwMC0wNy0yMiAgQWxkeSBIZXJuYW5kZXogIDxhbGR5aEByZWRoYXQuY29tPgoKCSogcmVsb2FkLmMgKGZpbmRfcmVsb2Fkc190b3BsZXYpOiBBZGQgbmV3IHBhcmFtZXRlcgoJImFkZHJlc3NfcmVsb2FkZWQiLgoJKGZpbmRfcmVsb2Fkcyk6IEFkZCBuZXcgcGFyYW1ldGVyIHRvIGZpbmRfcmVsb2Fkc190b3BsZXYgY2FsbHMuCgoyMDAwLTA3LTIyICBKZWZmcmV5IE9sZGhhbSAgPG9sZGhhbUBjb2Rlc291cmNlcnkuY29tPgoKCSogY29sbGVjdDIuYyAobWFpbik6IFR5cG8gZml4ZWQuCgkqIGRpYWdub3N0aWMuYzogVHlwbyBmaXhlZC4KCSogZHdhcmYyb3V0LmMgKGR3YXJmMm91dF9mcmFtZV9kZWJ1Z19leHByKTogVHlwbyBmaXhlZC4KCSogZWgtY29tbW9uLmg6IFR5cG8gZml4ZWQuCgkqIGVtaXQtcnRsLmMgKHN0YXJ0X3NlcXVlbmNlKTogVHlwbyBmaXhlZC4KCSogZmxvdy5jIChmaW5kX2xhYmVsX3JlZnMpOiBUeXBvIGZpeGVkLgoJKGNhbGN1bGF0ZV9nbG9iYWxfcmVnc19saXZlKTogVHlwbyBmaXhlZC4KCShtYXJrX3JlZ25vX2NvbmRfZGVhZCk6IFR5cG8gZml4ZWQuCgkoY3JlYXRlX2VkZ2VfbGlzdCk6IFR5cG9zIGZpeGVkLgoJKHZlcmlmeV9lZGdlX2xpc3QpOiBUeXBvIGZpeGVkLgoJKiBnZ2MtY29tbW9uLmMgKGdnY19tYXJrX3J0eF9jaGlsZHJlbik6IFR5cG8gZml4ZWQuCgkqIGxvb3AuYyAoc3RyZW5ndGhfcmVkdWNlKTogVHlwbyBpbiBmdW5jdGlvbiBuYW1lIGZpeGVkLgoJKiBydGwuaDogQWRkZWQgY29tbWVudHMuICBUeXBvIGluIGZ1bmN0aW9uIG5hbWUgZml4ZWQuCgkqIHJ0bGFuYWwuYzogVHlwbyBpbiBmdW5jdGlvbiBuYW1lIGZpeGVkLgoJKGluc25fZGVwZW5kYW50X3ApOiBSZW5hbWUgdG8gLi4uCgkoaW5zbl9kZXBlbmRlbnRfcCk6IC4uLiB0aGlzLgoJKGNvbXB1dGVkX2p1bW9fcCk6IFR5cG8gZml4ZWQuCgoyMDAwLTA3LTIyICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBzeXN0ZW0uaCAoX19GVU5DVElPTl9fKTogV3JhcCBkZWZpbml0aW9uIGluICNpZm5kZWYuCgoyMDAwLTA3LTIxICBEYXZpZCBFZGVsc29obiAgPGVkZWxzb2huQGdudS5vcmc+CgoJKiByczYwMDAuaCAoU0laRV9UWVBFKTogRGVmaW5lLgoKMjAwMC0wNy0yMSAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIHNzYS5jIChyZW5hbWVfaW5zbl8xKTogRG9uJ3QgcmVuYW1lIHJlZ2lzdGVycyB0aGF0IGFyZQoJQ0xPQkJFUmVkLgoKMjAwMC0wNy0yMSAgWmFjayBXZWluYmVyZyAgPHphY2tAd29sZXJ5LmN1bWIub3JnPgoKCSogZGlhZ25vc3RpYy5jICh0cmltX2ZpbGVuYW1lLCBmYW5jeV9hYm9ydCk6IE1vdmVkIGhlcmUgZnJvbQoJcnRsLmMuCgkoZmF0YWxfZnVuY3Rpb24sIHNldF9mYXRhbF9mdW5jdGlvbik6IFJlbW92ZWQuCgkoZmF0YWwpOiBEb24ndCBwcmVwYXJlIGZvciBvciBjYWxsIHRoZSBmYXRhbF9mdW5jdGlvbi4KCShkaWFnbm9zdGljX2xvY2ssIGVycm9yX3JlY3Vyc2lvbik6IE5ldy4KCShkaWFnbm9zdGljX2Zvcl9kZWNsLCByZXBvcnRfZGlhZ25vc3RpYyk6IEd1YXJkIGFnYWluc3QKCXJlLWVudGVyaW5nIHRoZSBlcnJvciByZXBvcnRpbmcgcm91dGluZXMuCgkoZmFuY3lfYWJvcnQpOiBBc3N1bWUgZnVuY3Rpb24gaXMgbm90IE5VTEwuCgoJKiBlcnJvcnMuYyAoZmFuY3lfYWJvcnQpOiBOZXcuICBBc3N1bWUgZnVuY3Rpb24gaXMgbm90IE5VTEwuCgkqIHRyYWRjcHAuYyAoZmFuY3lfYWJvcnQpOiBBc3N1bWUgZnVuY3Rpb24gaXMgbm90IE5VTEwuCgoJKiBzeXN0ZW0uaDogUHJvdmlkZSBkZWZhdWx0IGRlZmluaXRpb24gb2YgX19GVU5DVElPTl9fLgoJKiBydGwuaDogVXNlIF9fRlVOQ1RJT05fXyBub3QgX19QUkVUVFlfRlVOQ1RJT05fXyB0aHJvdWdob3V0LgoJQWx3YXlzIHVzZSBfX0ZVTkNUSU9OX18gaW4gZGVmaW5pdGlvbiBvZiBhYm9ydC4KCSogdHJlZS5oOiBMaWtld2lzZS4KCSogdmFycmF5Lmg6IExpa2V3aXNlLgoJKiB0b3BsZXYuaDogTGlrZXdpc2UuICBEb24ndCBwcm90b3R5cGUgc2V0X2ZhdGFsX2Z1bmN0aW9uLgoKMjAwMC0wNy0yMCAgR2VvZmYgS2VhdGluZyAgPGdlb2Zma0BjeWdudXMuY29tPgoKCSogY29uZmlnL3JzNjAwMC9haXg0My5oIChDUFBfU1BFQyk6IERlZmluZSBfX0xPTkdfTUFYX18gY29ycmVjdGx5CglpbiA2NC1iaXQgbW9kZS4KCSogZ2xpbWl0cy5oOiBEb24ndCBkbyAjaWYgZGVmaW5lZCBmb3IgQVJDSF9QUEMuCgoJKiBjb25maWcvcnM2MDAwL3JzNjAwMC5oIChBU01fT1VUUFVUX1NQRUNJQUxfUE9PTF9FTlRSWV9QKTogQWxsCgljb25zdGFudHMgb2Ygc2l6ZSBubyBsYXJnZXIgdGhhbiBhIHBvaW50ZXIgc2hvdWxkIGdvIGluIHRoZSBUT0MuCglBZGQgJ01PREUnIHBhcmFtZXRlci4KCShMRUdJVElNSVpFX1JFTE9BRF9BRERSRVNTKTogQWRkIE1PREUgcGFyYW1ldGVyIHRvCglBU01fT1VUUFVUX1NQRUNJQUxfUE9PTF9FTlRSWV9QLgoJKEFTTV9PVVRQVVRfU1BFQ0lBTF9QT09MX0VOVFJZKTogTGlrZXdpc2UuCgkqIGNvbmZpZy9yczYwMDAvYWl4LmggKFNFTEVDVF9SVFhfU0VDVElPTik6IExpa2V3aXNlLgoJKiBjb25maWcvcnM2MDAwL25ldHdhcmUuaCAoU0VMRUNUX1JUWF9TRUNUSU9OKTogTGlrZXdpc2UuCgkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLmMgKGNvbnN0YW50X3Bvb2xfZXhwcl8xKTogTGlrZXdpc2UuCgkocnM2MDAwX2xlZ2l0aW1pemVfYWRkcmVzcyk6IExpa2V3aXNlLgoJKHJzNjAwMF9lbWl0X21vdmUpOiBMaWtld2lzZS4KCShyczYwMDBfc2VsZWN0X3J0eF9zZWN0aW9uKTogTGlrZXdpc2UuCgkob3V0cHV0X3RvYyk6IERlYWwgcHJvcGVybHkgd2l0aCBvdXRwdXR0aW5nIHNtYWxsIGNvbnN0YW50cyBsaWtlCglISW1vZGUsIGFuZCBTRm1vZGUgaW4gMzItYml0IG1vZGUsIGFuZCBERm1vZGUgaW4gNjQtYml0IG1vZGUuCgkqIGNvbmZpZy9yczYwMDAvc3lzdjQuaCAoQVNNX09VVFBVVF9TUEVDSUFMX1BPT0xfRU5UUllfUCk6IEFkZAoJTU9ERSBwYXJhbWV0ZXIuICBQdXQgc21hbGwgY29uc3RhbnRzIGluIHRoZSBUT0MuCgoJKiBjb25maWcvcnM2MDAwL3JzNjAwMC5jIChlYXN5X2ZwX2NvbnN0YW50X3ApOiBBbGwgY29uc3RhbnRzIGFyZQoJZWFzeSBpbiBTSW1vZGUuCgkocnM2MDAwX2VtaXRfbW92ZSk6IFdoZW4gcmVsb2FkIGNhbGxzIHVzIHdpdGggYW4gaWxsZWdpdGltYXRlCglhZGRyZXNzLCBleGl0IGVhcmx5LiAgTW92ZSB0aGUgY2hhbmdlX2FkZHJlc3MgY2FsbHMgdG8gb25lIHBsYWNlCglhdCB0aGUgZW5kIG9mIHRoZSByb3V0aW5lLiAgTWVyZ2UgdGhlIFNJbW9kZSBhbmQgREltb2RlIGV4cGFuZGVycy4KCVdoZW4gY2FsbGVkIGJ5IHJlbG9hZCB0byBwdXQgYW4gaW50ZWdlciBpbnRvIGEgRlAgcmVnaXN0ZXIsIGZvcmNlCglpdCB0byBtZW1vcnkuCgoJKiBjb25maWcvcnM2MDAwL3JzNjAwMC5jIChzdHJ1Y3QgdG9jX2hhc2hfc3RydWN0KTogQWRkICdrZXlfbW9kZScKCWZpZWxkLgoJKHJzNjAwMF9oYXNoX2NvbnN0YW50KTogSGFzaCBtb2RlIHRvby4KCSh0b2NfaGFzaF9mdW5jdGlvbik6IEFsbG93IGZvciBrZXlfbW9kZS4KCSh0b2NfaGFzaF9lcSk6IFN0cnVjdHVyZXMgYXJlIGRpZmZlcmVudCBpZiBrZXlfbW9kZSBkaWZmZXJzLgoJKG91dHB1dF90b2MpOiBBZGQgJ21vZGUnIHBhcmFtZXRlci4gIFNhdmUga2V5X21vZGUuCgkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLmggKEFTTV9PVVRQVVRfU1BFQ0lBTF9QT09MX0VOVFJZKToKCVBhc3MgJ21vZGUnIHBhcmFtZXRlci4KCSogY29uZmlnL3JzNjAwMC9yczYwMDAtcHJvdG9zLmggKG91dHB1dF90b2MpOiBBZGQgJ21vZGUnIHBhcmFtLgoKCSogY29uZmlnL3JzNjAwMC9yczYwMDAuYyAob3V0cHV0X3RvYyk6IFVzZSBSUzYwMDBfT1VUUFVUX0JBU0VOQU1FCglmb3IgdnRhYmxlIHJlZmVyZW5jZXMuCgoJKiBjb25maWcvcnM2MDAwL3JzNjAwMC5oIChQUkVGRVJSRURfUkVMT0FEX0NMQVNTKTogSWYgd2UgaGF2ZSBhCgljaG9pY2UsIGRvbid0IHB1dCBpbnRlZ2VyIHZhbHVlcyBpbiBGUCByZWdzLgoKVGh1IEp1bCAyMCAxODoxMzo1MiAyMDAwICBKZWZmcmV5IEEgTGF3ICAobGF3QGN5Z251cy5jb20pCgoJKiBmbG93LmMgKHZlcmlmeV9mbG93X2luZm8pOiBSZXZhbXAgY29kZSB0byB2ZXJpZnkgdGhhdCB0aGUKCWhlYWQgYW5kIGVuZCBvZiBlYWNoIGJhc2ljIGJsb2NrIGFyZSBpbiB0aGUgaW5zbiBjaGFpbi4KClRodSBKdWwgMjAgMTg6MDI6MzUgMjAwMCAgTWljaGFlbCBNYXR6IDxtYXR6bWljaEBjcy50dS1iZXJsaW4uZGU+CgoJKiBnY3NlLmMgKHJlY29yZF9vbmVfc2V0KTogUHJlcGVuZCBpbnN0ZWFkIG9mIGFwcGVuZCBvbnRvCglyZWdfc2V0X3RhYmxlLCBtYWtpbmcgaXQgTyhuKSBpbnN0ZWFkIE8obl4yKS4KCSogbGNtLmMgKGNvbXB1dGVfYW50aW5vdXRfZWRnZSxjb21wdXRlX2xhdGVyaW4sY29tcHV0ZV9hdmFpbGFibGUpOgoJVXNlIGEgcXVldWUgaW5zdGVhZCBvZiBhIHN0YWNrIGFzIHdvcmtsaXN0LgoKMjAwMC0wNy0yMCAgS2F6dSBIaXJhdGEgIDxrYXp1QGh4aS5jb20+CgoJKiBoODMwMC5jICh0d29faW5zbl9hZGRzX3N1YnNfb3BlcmFuZCk6IEZpeCBhIHR5cG8uCgkqIGg4MzAwLmggKE9LX0ZPUl9UKTogTmV3LgoJKEVYVFJBX0NPTlNUUkFJTlQpOiBTdXBwb3J0IE9LX0ZPUl9ULgoJKiBoODMwMC5tZDogVXNlIGluYy9kZWMuW3dsXSBmb3IgaW5jcmVtZW50L2RlY3JlbWVudAoJYnkgMSBhbmQgMiBpbiBISSBhbmQgU0kgbW9kZXMuCgoyMDAwLTA3LTIwICBKaW0gV2lsc29uICA8d2lsc29uQGN5Z251cy5jb20+CgoJKiBjb25maWcvaWE2NC9pYTY0LmggKEFTTV9PVVRQVVRfTUlfVEhVTkspOiBIYW5kbGUgREVMVEEgdmFsdWVzCglsYXJnZXIgdGhhbiAxNCBiaXRzLgoKMjAwMC0wNy0yMCAgWmFjayBXZWluYmVyZyAgPHphY2tAd29sZXJ5LmN1bWIub3JnPgoKCSogY3BwbWFjcm8uYyAoQ0FOX1BBU1RFX0FGVEVSKTogTmV3IG1hY3JvLgoJKGNvdW50X3BhcmFtcyk6IERvbid0IHNldCBHTlVfUkVTVF9BUkdTIG9uIGFueXRoaW5nLgoJKHNhdmVfZXhwYW5zaW9uKTogU2V0IFBBU1RFX0xFRlQgb25seSBvbiB0b2tlbnMgZm9yIHdoaWNoCglDQU5fUEFTVEVfQUZURVIgaXMgdHJ1ZSwgb3Igd2hpY2ggYXJlIG5hbWVkIG9wZXJhdG9ycy4KCgkqIGNwcGxleC5jIChwYXJzZV9hcmdzKTogRGlzdGluZ3Vpc2ggYmV0d2VlbiBhIHJlc3QgYXJndW1lbnQKCWdpdmVuIG9uZSBlbXB0eSBhcmd1bWVudCwgYW5kIGEgcmVzdCBhcmd1bWVudCBnaXZlbiB6ZXJvIGFyZ3VtZW50cy4KCShtYXliZV9wYXN0ZV93aXRoX25leHQpOiBMb29rIGZvciBWT0lEX1JFU1QgdGFnLCBhbmQgdHJpZ2dlcgoJZGVsZXRpb24gb2YgcHJldmlvdXMgdG9rZW4gYmFzZWQgb24gdGhhdC4KCShnZXRfcmF3X3Rva2VuKTogRmxhdHRlbiBzb21lIGNvbnRyb2wgc3RydWN0dXJlLgoKCSogY3BwbGliLmggKENQUF9MQVNUX0VRKTogQ29ycmVjdC4KCShWT0lEX1JFU1QpOiBOZXcgdG9rZW4gZmxhZy4KCShHTlVfUkVTVF9BUkdTKTogRGVsZXRlLgoKCSogdHJhZGNwcC5jIChtYWluKTogRG9uJ3QgbXVuZ2UgLUQgb3B0aW9ucy4KCShtYWtlX2RlZmluaXRpb24pOiBCcmluZyAtRCBoYW5kbGluZyBpbiBsaW5lIHdpdGggY3BwbGliLgoJKGRvX2RlZmluZSk6IFN0cmlwIGFsbCBsZWFkaW5nIHdoaXRlc3BhY2UgZnJvbSBtYWNybyBkZWZpbml0aW9ucy4KCjIwMDAtMDctMjAgIERhdmlkIEJpbGxpbmdodXJzdCA8RGF2aWQuQmlsbGluZ2h1cnN0QHJpb3RpbnRvLmNvbS5hdT4KCgkqIE1ha2VmaWxlLmluICh0cmFkY3BwKTogRGVwZW5kIG9uIGludGwubyBhbmQgdmVyc2lvbi5vLgoKMjAwMC0wNy0yMCAgQnJ1Y2UgS29yYiAgPGJrb3JiQGdudS5vcmc+CgoJKiBmaXhpbmNsL2NoZWNrLnRwbDogc3RyaXAgdGhlIHBsYXRmb3JtIHNwZWNpZmljIHR5cGVzIGJlZm9yZSB0ZXN0aW5nCgkqIGZpeGluY2wvZml4Zml4ZXMuYyhnbnVfdHlwZV9maXgpOiB1c2UgcGxhdGZvcm0gc3BlY2lmaWMgdHlwZXMKCSogZml4aW5jbC9maXhpbmNsLnRwbDogdXNlIHBsYXRmb3JtIHNwZWNpZmljIHR5cGVzCgkqIGZpeGluY2wvZml4bGliLmg6IGluY2x1ZGUgdGhlIHBsYXRmb3JtIHNwZWNpZmljIHR5cGVzCgkqIGZpeGluY2wvaW5jbGhhY2suZGVmKGdudV90eXBlcyk6IGRvbid0IHN1cHBseSB0aGUgdHlwZXMKCSogZml4aW5jbC9maXhpbmNsLng6IHJlZ2VuCgoyMDAwLTA3LTE5ICBKaW0gV2lsc29uICA8d2lsc29uQGN5Z251cy5jb20+CgoJKiBjb25maWcvaWE2NC9pYTY0LmggKEhBUkRfUkVHTk9fTU9ERV9PSyk6IERvbid0IGFsbG93IFhGbW9kZSBpbgoJR1JfUkVHUy4KCjIwMDAtMDctMTkgIFphY2sgV2VpbmJlcmcgIDx6YWNrQHdvbGVyeS5jdW1iLm9yZz4KCgkqIHRyYWRjcHAuYyAocmVzY2FuKTogRG8gbm90IHJlY29nbml6ZSBkaXJlY3RpdmVzIHdoZW4gdGhlICMKCWlzIGluZGVudGVkLgoKMjAwMC0wNy0xOSAgWmFjayBXZWluYmVyZyAgPHphY2tAd29sZXJ5LmN1bWIub3JnPgoKCUltcGxlbWVudCBDKysgbmFtZWQgb3BlcmF0b3JzLgoKCSogY3BwbGliLmggKFRUWVBFX1RBQkxFKTogTW92ZSBDUFBfTUlOIGFuZCBDUFBfTUFYIGludG8gYmxvY2sKCW9mIG9wZXJhdG9ycyBhbGxvd2VkIGluICNpZiBhbmQgaGF2aW5nIGFuIF9FUSB2YXJpYW50LiAgQWRkCglDUFBfTUlOX0VRLCBDUFBfTUFYX0VRLCBhbmQgQ1BQX0RFRklORUQuCgkoY3BwX3Rva2VuIGZsYWdzKTogQWRkIE5BTUVEX09QLgoJKGVudW0gbm9kZV90eXBlKTogQWRkIFRfT1BFUkFUT1IuCgkoc3RydWN0IGNwcF9oYXNobm9kZSk6IEFkZCBjb2RlIHNsb3QgdG8gdmFsdWUgdW5pb24uCgkqIGNwcGhhc2guaCAoc3BlY19ub2Rlcyk6IFJlbW92ZSBuX2RlZmluZWQuCgoJKiBjcHBsZXguYyAobGV4X2xpbmUpOiBDb252ZXJ0IFRfT1BFUkFUT1Igbm9kZXMgdG8gdGhlaXIgcHJvcGVyIHR5cGVzLgoJKHNwZWxsX3Rva2VuLCBjYW5fcGFzdGUsIG1heWJlX3Bhc3RlX3dpdGhfbmV4dCk6IEhhbmRsZSBuYW1lZCBvcGVyYXRvcnMuCgkoaXNfbWFjcm9fZGlzYWJsZWQpOiBUd2VhayBlcnJvciBtZXNzYWdlcy4KCgkqIGNwcGxpYi5jIChnZXRfZGVmaW5lX25vZGUpOiBEaXNhbGxvdyBhbGwgbmFtZWQgb3BlcmF0b3JzIGFzCgltYWNybyBuYW1lcy4gIFR3ZWFrIGVycm9yIG1lc3NhZ2VzLgoJKF9jcHBfaW5pdF9zdGFja3MpOiBEb24ndCBzZXQgdXAgc3BlY19ub2Rlcy0+bl9kZWZpbmVkLgoKCSogY3BwaW5pdC5jIChidWlsdGluX2FycmF5KTogQWRkIGVudHJpZXMgZm9yIHRoZSBuYW1lZCBvcGVyYXRvcnMuCgkqIGNwcGV4cC5jIChsZXgpOiBDaGVjayBmb3IgQ1BQX0RFRklORUQgdG9rZW4uCgkocHJpb3JpdHkgdGFibGUpOiBBZGQgZW50cmllcyBmb3IgQ1BQX01JTiBhbmQgQ1BQX01BWC4KCShfY3BwX3BhcnNlX2V4cHIpOiBIYW5kbGUgQ1BQX01JTiBhbmQgQ1BQX01BWC4KCjIwMDAtMDctMTkgIEJlcm5kIFNjaG1pZHQgIDxiZXJuZHNAY3lnbnVzLmNvLnVrPgoKCSogZ2NzZS5jIChJTlNOX0NVSUQpOiBJZiBFTkFCTEVfQ0hFQ0tJTkcsIGFib3J0IGlmIHRoZSB1aWQgaXMKCWxhcmdlciB0aGFuIHRoZSBhcnJheSBvZiBjdWlkcy4KCShhbGxvY19nY3NlX21lbSk6IFVzZSB1aWRfY3VpZCByYXRoZXIgdGhhbiBJTlNOX0NVSUQgd2hlbiBjb21wdXRpbmcKCWN1aWRzLgoKMjAwMC0wNy0xOSAgQnJ1Y2UgS29yYiAgPGJrb3JiQGdudS5vcmc+CgoJKiBmaXhpbmMvZml4aW5jbC5jOiAgQ29udmVydCB0byB1c2luZyBhIHRhYmxlIG9mIGVudmlyb25tZW50IHZhcmlhYmxlcwoJYW5kIGFjdGl2YXRlIHRoZSBhdXRvLWVkaXQgbWFya2VyIG9uIHRoZSBmaXhlZCBvdXRwdXQgZmlsZXMuCgkqIGZpeGluYy9maXhsaWIuaDogIERlZmluZSB0aGUgZW52aXJvbm1lbnQgdGFibGUKCSogZml4aW5jL2ZpeGluY2wuc2g6IGV4cG9ydCB0aGUgJHtJTlBVVH0gZGlyCgkqIGZpeGluYy9jaGVjay50cGw6IGxpa2V3aXNlCgoyMDAwLTA3LTE4ICBaYWNrIFdlaW5iZXJnICA8emFja0B3b2xlcnkuY3VtYi5vcmc+CgoJKiBnY2MuYyAoLmggc3BlYyk6IEZpeCB0eXBvLgoKV2VkIEp1bCAxOSAwMToyMjoxNSBDRVNUIDIwMDAgIE1hcmMgRXNwaWUgIDxlc3BpZUBjdnMub3BlbmJzZC5vcmc+CgoJKiBNYWtlZmlsZS5pbjogRml4IHRyYWRjaWYuYyBwYXRoLgoKMjAwMC0wNy0xOCAgWmFjayBXZWluYmVyZyAgPHphY2tAd29sZXJ5LmN1bWIub3JnPgoKCSogY3BwbGliLmggKFRUWVBFX1RBQkxFKTogUmVhcnJhbmdlIHRvIHVzZSBvbmx5IHR3byBwZXItZW50cnkKCSAgbWFjcm9zLCBub3QgZml2ZS4KCgkqIGNwcGhhc2guaCAoVE9LRU5fTkFNRSk6IE5ldyBtYWNyby4KCShfY3BwX3NwZWxsX29wZXJhdG9yKTogRGVsZXRlZC4KCSh0b2tlbl9zcGVsbGluZ3MpOiBOb3cgX2NwcF90b2tlbl9zcGVsbGluZ3MuCgoJKiBjcHBleHAuYzogVXNlIFRPS0VOX05BTUUgb3IgVFlQRV9OQU1FLCBub3QgX2NwcF9zcGVsbF9vcGVyYXRvci4KCSogY3BwbGV4LmM6IFVzZSBPUCBhbmQgVEsgbWFjcm9zIHdoZW4gZXhwYW5kaW5nIHRoZQoJVFRZUEVfVEFCTEUuICBFbGltaW5hdGUgdG9rZW5fbmFtZXMuICBGb3Igbm9uLU9QRVJBVE9SIHRva2VucywKCXN0b3JlIHRoZSBzdHJpbmdpZmljYXRpb24gb2YgdGhlIGVudW1lcmF0aW9uIG5hbWUgKENQUF9DSEFSLAoJZXRjLikgaW4gdGhlIG5hbWUgc2xvdCBvZiB0b2tlbl9zcGVsbGluZ3MuCglVc2UgVE9LRU5fTkFNRSBhbmQvb3IgVE9LRU5fU1BFTEwsIGRvIG5vdCByZWZlcmVuY2UKCXRva2VuX3NwZWxsaW5ncyBkaXJlY3RseS4KCSogY3BwbGliLmM6IFVzZSBUT0tFTl9TUEVMTC4KCgkqIGNwcGxleC5jIChfY3BwX3B1c2hfdG9rZW4pOiBJZiB0aGUgdG9rZW4gYmVpbmcgcHVzaGVkIGJhY2sKCWlzIHRoZSBwcmV2aW91cyB0b2tlbiBpbiB0aGlzIGNvbnRleHQsIGp1c3Qgc3VidHJhY3Qgb25lIGZyb20KCWNvbnRleHQtPnBvc24uCgkqIGNwcG1hY3JvLmMgKHNhdmVfZXhwYW5zaW9uKTogQ2xlYXIgYXV4IGZpZWxkIHdoZW4gc3RvcmluZyBhCglwbGFjZW1hcmtlci4KCjIwMDAtMDctMTggIEpha3ViIEplbGluZWsgIDxqYWt1YkByZWRoYXQuY29tPgoKCSogY3BwbGV4LmMgKGNwcF9zY2FuX2J1ZmZlcik6IE91dHB1dCBsaW5lIGNvbW1hbmQgZXZlbiBhdCB0aGUgc3RvcAoJYnVmZmVyLCBwcm92aWRlZCBpdCBpcyBub3QgTlVMTC4KCjIwMDAtMDctMTggIEFsZXhhbmRyZSBPbGl2YSAgPGFvbGl2YUByZWRoYXQuY29tPgoKCSogYy1kZWNsLmMgKGR1cGxpY2F0ZV9kZWNscyk6IERvIG5vdCBjYWxsIG1ha2VfdmFyX3ZvbGF0aWxlKCkgaW4KCWNhc2Ugb2YgaW52YWxpZCB2b2xhdGlsZSByZS1kZWNsYXJhdGlvbi4KCjIwMDAtMDctMTggIEpha3ViIEplbGluZWsgIDxqYWt1YkByZWRoYXQuY29tPgoKCSogY2FsbHMuYyAoc3RvcmVfYXJnKTogUmV0dXJuIG5vbnplcm8gaWYgc2liY2FsbF9mYWlsdXJlIGlzIGRlc2lyZWQuCgkoZXhwYW5kX2NhbGwpOiBBZGp1c3QgY2FsbGVyLgoKMjAwMC0wNy0xNyAgR2FicmllbCBEb3MgUmVpcyAgPGdkckBjb2Rlc291cmNlcnkuY29tPgoKCSogZGlhZ25vc3RpYy5oIChyZXBvcnRfZGlhZ25vc3RpYyk6IENoYW5nZSBwcm90b3R5cGUuCgoJKiBkaWFnbm9zdGljLmMgKG91dHB1dF9kb192ZXJiYXRpbSwgZGlhZ25vc3RpY19mb3JfYXNtLAoJZGlhZ25vc3RpY19mb3JfZGVjbCk6ICBDaGFuZ2UgcHJvdG90eXBlLgoJKGVycm9yX3dpdGhfZGVjbCwgd2FybmluZ193aXRoX2RlY2wsIHBlZHdhcm5fd2l0aF9kZWNsLCB3YXJuaW5nLAoJZXJyb3IsIHdhcm5pbmcsIGVycm9yX3dpdGhfZmlsZV9hbmRfbGluZSwKCXdhcm5pbmdfd2l0aF9maWxlX2FuZF9saW5lLCBwZWR3YXJuX3dpdGhfZmlsZV9hbmRfbGluZSwgZmF0YWwpOgoJQWRqdXN0IGNhbGwgdG8gcmVwb3J0X2RpYWdub3N0aWMsIGRpYWdub3N0aWNfZm9yX2RlY2wuCgkoZXJyb3JfZm9yX2FzbSwgd2FybmluZ19mb3JfYXNtKTogQWRqdXN0IGNhbGwgdG8gZGlhZ25vc3RpY19mb3JfYXNtLgoJKG91dHB1dF92ZXJiYXRpbSwgdmVyYmF0aW0pOiBBZGp1c3QgY2FsbCB0byBvdXRwdXRfZG9fdmVyYmF0aW0uCgoJKiBjLWVycm9ycy5jIChwZWR3YXJuX2M5OSk6IEFkanVzdCBjYWxsIHRvIHJlcG9ydF9kaWFnbm9zdGljLiBFbmQKCXZhcmFpYmxlIGFyZ3VtZW50IGxpc3QuCgoyMDAwLTA3LTE3ICBaYWNrIFdlaW5iZXJnICA8emFja0B3b2xlcnkuY3VtYi5vcmc+CgoJKiBjcHBoYXNoLmM6IERvbid0IGluY2x1ZGUgaGFzaHRhYi5oLiAgTW9zdCBtYWNyby1oYW5kbGluZyBjb2RlCgltb3ZlZCB0byBjcHBtYWNyby5jLgoJKGhhc2hfSEFTSE5PREUsIGVxX0hBU0hOT0RFLCBfY3BwX2R1bXBfbWFjcm9faGFzaCwKCWR1bXBfaGFzaF9oZWxwZXIpOiBEZWxldGUuCgkoZXhwYW5kX2hhc2gsIGhpZ2hlcl9wcmltZV9udW1iZXIsIF9jcHBfbG9va3VwX3dpdGhfaGFzaCwKCWNwcF9mb3JhbGxfaWRlbnRpZmllcnMpOiBOZXcuIEltcGxlbWVudCBzcGVjaWFsaXplZCB2ZXJzaW9uIG9mCglWbGFkJ3MgZXhwYW5kYWJsZSBoYXNoIHRhYmxlLgoJKGNwcF9sb29rdXApOiBVc2UgbmV3IGZ1bmN0aW9ucy4KCShfY3BwX2luaXRfbWFjcm9zLCBfY3BwX2NsZWFudXBfbWFjcm9zKTogQWRqdXN0IGZvciBuZXcKCWltcGxlbWVudGF0aW9uLgoJKiBjcHBtYWNyby5jOiBOZXcgZmlsZS4KCSogY3BwaW5pdC5jIChkdW1wX21hY3Jvc19oZWxwZXIpOiBOZXcuCgkoY3BwX2ZpbmlzaCk6IEl0ZXJhdGUgb3ZlciB0aGUgaWRlbnRpZmllciB0YWJsZSBkaXJlY3RseS4KCSogY3BwbGV4LmMgKHBhcnNlX25hbWUpOiBDYWxjdWxhdGUgdGhlIGhhc2ggb2YgdGhlIGlkZW50aWZpZXIKCXdoaWxlIHdlIHNjYW4gaXQuICBVc2UgX2NwcF9sb29rdXBfd2l0aF9oYXNoIHdoZW4gd2UgY2FuLgoKCSogY3BwaGFzaC5oOiBVcGRhdGUgcHJvdG90eXBlcy4KCSh4Y25ld3ZlYywgSEFTSFNURVApOiBOZXcgaGVscGVyIG1hY3Jvcy4KCSogY3BwbGliLmg6IFVwZGF0ZSBwcm90b3R5cGVzLgoJKiBNYWtlZmlsZS5pbiAoTElCQ1BQX09CSlMpOiBBZGQgY3BwbWFjcm8uby4KCShjcHBtYWNyby5vKTogTmV3IHJ1bGUuCgkoY3BwaGFzaC5vKTogVXBkYXRlIGRlcHMuCgoJKiBjcHBtYWluLmM6IERvIG5vdCBzZXQgcGZpbGUtPnByaW50ZXIgaWYgbm9fb3V0cHV0IGlzIG9uLgoKMjAwMC0wNy0xNSAgTmVpbCBCb290aCAgPG5laWxiQGVhcnRobGluZy5uZXQ+CgoJKiBjcHBsaWIuYzogQ2hhbmdlIGFsbCBkaXJlY3RpdmUtaGFuZGxlciBmdW5jdGlvbnMgdG8gcmV0dXJuCgl2b2lkLCBub3QgaW50LgoJKiBjcHBoYXNoLmg6IFVwZGF0ZSB0eXBlZGVmcy4KCjIwMDAtMDctMTcgIEdlb2ZmcmV5IEtlYXRpbmcgIDxnZW9mZmtAY3lnbnVzLmNvbT4KCgkqIGNvbmZpZ3VyZTogUmVnZW5lcmF0ZS4KCgkqIGV4dGVuZC50ZXhpIChFeHRlbmRlZCBBc20pOiBNZW50aW9uIHRoYXQgYSBtZW1vcnkgY2xvYmJlcgoJZG9lcyBub3QgY291bnQgYXMgYSBzaWRlLWVmZmVjdC4KCgkqIHVucm9sbC5jIChjb3B5X2xvb3BfYm9keSk6IEZpeCBvbmUgaW5zdGFuY2Ugb2YgdXNpbmcgaG9zdAoJYXJpdGhtZXRpYyBvbiB0aGUgdGFyZ2V0OyBmaXhlcyBsb29wLTQgb24gYSAzMi1iaXQgLT4gNjQtYml0Cgljcm9zcy1jb21waWxlLgoKCSogdGxpbmsuYyAoc2Nhbl9saW5rZXJfb3V0cHV0KTogVHdlYWsgZm9yIG91dHB1dCBvZiBBSVggbGQuCgoyMDAwLTA3LTE3ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEBjeWdudXMuY29tPgoKCSogY29uZmlnL2lhNjQvaWE2NC5tZCAobW92ZGkpOiBTcGxpdCBvdXQgbG9hZCBhZGRyZXNzIGNvZGUuCglOZXcgcG9zdC1yZWxvYWQgc3BsaXR0ZXIgZm9yIHN5bWJvbGljIG9wZXJhbmRzLgoJKG1vdmRpX2ludGVybmFsKTogQWJvcnQgaWYgd2UgZGlkbid0IHNwbGl0IHN5bWJvbGljIG9wZXJhbmRzCgl3aGVuIHdlIHNob3VsZCBoYXZlLgoJKiBjb25maWcvaWE2NC9pYTY0LmMgKGlhNjRfZXhwYW5kX2xvYWRfYWRkcmVzcyk6IE5ldywgZnJvbSBtb3ZkaSBiaXRzLgoJKGlhNjRfcmVvcmcpOiBTcGxpdCBpbnNucyB3aGVuIG5vdCBvcHRpbWl6aW5nLgoJKiBjb25maWcvaWE2NC9pYTY0LXByb3Rvcy5oIChpYTY0X2V4cGFuZF9sb2FkX2FkZHJlc3MpOiBEZWNsYXJlLgoKTW9uIEp1bCAxNyAyMzo0MzoyNiBNRVQgRFNUIDIwMDAgIEphbiBIdWJpY2thICA8amhAc3VzZS5jej4KCgkqIHJlYWwuaCAoUkVBTF9WQUxVRV9UT19UQVJHRVRfTE9OR19ET1VCTEUpOiBVc2UgTE9OR19ET1VCTEVfVFlQRV9TSVpFCglpbnN0ZWFkIG9mIE1BWF9MT05HX0RPVUJMRV9UWVBFX1NJWkUgdG8gZGVjaWRlIG91dHB1dCBmb3JtYXQuCgoyMDAwLTA3LTE3ICBDaGFuZHJha2FsYSBDaGF2dmEgICA8Y2NoYXZ2YUBjeWdudXMuY29tPgoKCSogbG9vcC5jIChjaGVja19kYnJhX2xvb3ApIDogQ2hhbmdlZCBsb29wX2NvbnRpbnVlIHRvIGxvb3AtPmNvbnQuCgoyMDAwLTA3LTE3ICBKYXNvbiBNZXJyaWxsICA8amFzb25AcmVkaGF0LmNvbT4KCgkqIE1ha2VmaWxlLmluIChjbGVhbik6IFJlbW92ZSBsaWJnY2MgZGlyZWN0b3J5LgoKCSogY29uZmlndXJlLmluICgtV25vLWxvbmctbG9uZyBjaGVjayk6IFVzZSBoaWdoZXItbGV2ZWwgbWFjcm9zLgoKMjAwMC0wNy0xNyAgWmFjayBXZWluYmVyZyAgPHphY2tAd29sZXJ5LmN1bWIub3JnPgoKCSogc2ltcGxpZnktcnR4LmMgKHNpbXBsaWZ5X2JpbmFyeV9vcGVyYXRpb24pOiBSZWNvZ25pemUKCSAgIChjb21wYXJlIChndFt1XSAoY2MpIDApIChsdFt1XSAoY2MpIDApKS4KCShzaW1wbGlmeV90ZXJuYXJ5X29wZXJhdGlvbik6ICBEbyBub3QgZXhhbWluZSBNT0RFX0JJVFNJWkUgb2YKCSAgIGEgQ09OU1RfSU5ULCBpdCB3aWxsIGFsd2F5cyBiZSB6ZXJvLgoKMjAwMC0wNy0xNyAgQ2hhbmRyYWthbGEgQ2hhdnZhICAgPGNjaGF2dmFAY3lnbnVzLmNvbT4KCgkqIGxvb3AuYyAoY2hlY2tfZGJyYV9sb29wKSA6IFJldHVybiBpZiBtb3JlIHRoYW4gb25lIGNvbmRpdGlvbiBpcwoJcHJlc2VudCB0byBjb250cm9sIHRoZSBsb29wLgoKTW9uIEp1bCAxNyAwODoyNjozNSAyMDAwICBDbGludG9uIFBvcGV0eiAgPGNwb3BldHpAY3lnbnVzLmNvbT4KCgkqIG1pcHMuYyAobWlwc19leHBhbmRfcHJvbG9ndWUpOiBEb24ndCBjYWxjdWxhdGUgdGhlIGxhc3QgYXJndW1lbnQKCXJlZ2lzdGVyIHVubGVzcyB3ZSBuZWVkIGl0LiAgV2hlbiB3ZSBhcmUgY2FsY3VsYXRpbmcgdGhpcywgbWFrZQoJc3VyZSBGVU5DVElPTl9BUkcgaXMgZ2l2aW5nIHVzIGEgUkVHLgoKMjAwMC0wNy0xNyAgU3RlcGhhbmUgQ2FycmV6ICA8U3RlcGhhbmUuQ2FycmV6QHdvcmxkbmV0LmZyPgoKCSogZmxvdy5jIChsaWJjYWxsX2RlYWRfcCk6IFVzZSBzaW5nbGVfc2V0IHRvIHZlcmlmeSB0aGUgaW5zbgoJaGFzIG9ubHkgb25lIHNldCBhbmQgZ2V0IGZvciBhbmFseXNpcy4KCShwcm9wYWdhdGVfb25lX2luc24pOiBEb24ndCBwYXNzIHRoZSBQQVRURVJOIG9mIHRoZSBpbnNuLgoKMjAwMC0wNy0xNyAgTWFyayBLbGVpbiA8bWtsZWluQGRpcy5jb20+CgoJICogcGEuYyAoZW1pdF9ocGRpdl9jb25zdCk6IFVwZGF0ZSB0byBtYXRjaCBuZXcgcGF0dGVybiBmb3IgdWRpdnNpMy4KCjIwMDAtMDctMTcgIEouIERhdmlkIEFuZ2xpbiAgPGRhdmVAaGlhdWx5MS5oaWEubnJjLmNhPgoKCSogTWFrZWZpbGUuaW4gKFRBUkdFVF9HRVRHUk9VUFNfVCk6IE5ldyBjb25maWd1cmF0aW9uIHZhcmlhYmxlLgoJKiBjb25maWd1cmUuaW4gKFRBUkdFVF9HRVRHUk9VUFNfVCk6IEV2YWx1YXRlLgoJKiBzeXMtcHJvdG9zLmggKGdldGdyb3Vwcyk6IFVzZSBUQVJHRVRfR0VUR1JPVVBTX1QgZm9yIGFycmF5IHR5cGUKCW9mIHNlY29uZCBhcmd1bWVudCBvZiBnZXRncm91cHMuCgkqIGNvbmZpZ3VyZSwgY29uZmlnLmluOiBSZWJ1aWx0LgoKMjAwMC0wNy0xNyAgR2VvZmZyZXkgS2VhdGluZyAgPGdlb2Zma0BjeWdudXMuY29tPgoKCSogc2ltcGxpZnktcnR4LmMgKHNpbXBsaWZ5X3JlbGF0aW9uYWxfb3BlcmF0aW9uKTogVHdvIHNpZ25lZAoJdmFsdWVzIHdpdGggZXF1YWwgaGlnaCB3b3JkcyBhcmUgbGVzcy9ncmVhdGVyIHRoYW4gZWFjaCBvdGhlciBpZgoJdGhlaXIgbG93IHdvcmRzIGFyZSBsZXNzL2dyZWF0ZXIgd2hlbiBjb25zaWRlcmVkIGFzIHVuc2lnbmVkLgoKTW9uIEp1bCAxNyAwMjozNzowNiAyMDAwICBNYXJjIEVzcGllIDxlc3BpZUBvcGVuYnNkLm9yZz4KCgkqIGNvbmZpZ3VyZS5pbiAodmF4LSotb3BlbmJzZCk6ICBDaGFuZ2UgdG8gbmV3IHN0eWxlIGNvbmZpZ3VyYXRpb24sCglhZGQgY29sbGVjdDIvZmxvYXRfZm9ybWF0IGluZm9ybWF0aW9uLgoJKiBjb25maWd1cmU6ICBSZWJ1aWx0LgoJKiBjb25maWcvdmF4L29wZW5ic2QxLmg6ICBOZXcuCgkqIGNvbmZpZy92YXgvb3BlbmJzZC5oOiAgTmV3LgoJKiBjb25maWcvdmF4L3Qtb3BlbmJzZDogIE5ldy4KCjIwMDAtMDctMTcgIENoaXAgU2FsemVuYmVyZyAgPGNoaXBAdmFsaW51eC5jb20+CgoJKiBjLWNvbW1vbi5jIChzaG9ydGVuX2NvbXBhcmUpOiBRdWlldCB3YXJuaW5ncyBhYm91dCB1bnNpZ25lZAoJY29tcGFyaXNvbnMgd2l0aCB6ZXJvIHdoZW4gdGhleSBvY2N1ciBpbiBhIHN5c3RlbSBoZWFkZXIuCgoyMDAwLTA3LTE3ICBKb3NlcGggUy4gTXllcnMgIDxqc20yOEBjYW0uYWMudWs+CgoJKiBpbnZva2UudGV4aSAoLXBlZGFudGljKTogUmVmZXIgdG8gSVNPIEMgaW5zdGVhZCBvZiBBTlNJIEMsIGFuZAoJdXBkYXRlIHRvIGRlc2NyaWJlIGN1cnJlbnQgcHJhY3RpY2UuCgoJKiBnbGltaXRzLmggKExMT05HX01JTiwgTExPTkdfTUFYLCBVTExPTkdfTUFYKTogRGVmaW5lIGZvciBDOTkuCgoJKiBjb250cmliLnRleGksIGNwcC50ZXhpLCBleHRlbmQudGV4aSwgaW52b2tlLnRleGk6IFVwZGF0ZQoJcmVmZXJlbmNlcyB0byBDOVguICBDaGFuZ2UgcmVmZXJlbmNlcyB0byAtZnN0ZCBhbmQgLWZsYW5nLWlzb2M5eAoJdG8gcmVmZXIgdG8gLXN0ZC4KCgkqIGMtY29tbW9uLmMgKHNjYW5fY2hhcl90YWJsZSk6IEFsbG93ICJ6IiBsZW5ndGggbW9kaWZpZXJzIG9uCglkaW91eFhuIGZvcm1hdHMuCgkoY2hlY2tfZm9ybWF0X2luZm8pOiBVc2UgVFlQRV9ET01BSU4gb24gdGhlIHR5cGUgbWF0Y2hlZCBhZ2FpbnN0Cglmb3IgInoiIGZvcm1hdHMsIHRvIHJldHJpZXZlIHRoZSBsYW5ndWFnZSBzaXplX3QgcmF0aGVyIHRoYW4gdGhlCglpbnRlcm5hbCBvbmUuCgoJKiBjLWNvbW1vbi5jIChjaGVja19mb3JtYXRfaW5mbyk6IERvIG5vdCBtYWtlIGEgcGVkYW50aWMgb2JqZWN0aW9uCgl0byB0aGUgJ0wnIGxlbmd0aCBtb2RpZmllciBpZiB1c2VkIHdpdGggYSBmbG9hdGluZyBwb2ludCB0eXBlCgljaGFyYWN0ZXIuCgoJKiBjLWxleC5jICh5eWxleCk6IERvbid0IHBlZHdhcm4gZm9yIGhleGFkZWNpbWFsIGZsb2F0aW5nIHBvaW50Cgljb25zdGFudHMgaW4gQzk5IG1vZGUuCgoyMDAwLTA3LTE3ICBLYXp1IEhpcmF0YSAgPGthenVAaHhpLmNvbT4KCgkqIGg4MzAwLm1kOiBGaXggdGhlIGZvcm1hdCBvZiBtYWMuCgkobW92c2lfaDgzMDBocyk6IE91dHB1dCBhIHRhYiBhZnRlciBzdG1hYyBpbnN0ZWFkIG9mIGEgc3BhY2UuCgoJKiBoODMwMC5jICh0d29faW5zbl9hZGRzX3N1YnNfb3BlcmFuZCk6IEltcHJvdmUgY29kZSBmb3IgZGV0ZWN0aW5nCglwcm9maXRhYmxlIGFkZHMvc3VicyBzZXF1ZW5jZXMuCgoJKiBmb2xkLWNvbnN0LmM6IEZpeCBjb21tZW50IHR5cG9zLgoKMjAwMC0wNy0xNiAgTGF1cnluYXMgQml2ZWluaXMgIDxsYXVyYXNAc29mdGhvbWUubmV0PgoKCSogY3BwZmlsZXMuYyAocmVhZF9uYW1lX21hcCk6IFNldCBtYXBfbGlzdF9wdHItPm1hcF9saXN0X21hcCB0byBOVUxMLgoKMjAwMC0wNy0xNiAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogZml4aW5jL2ZpeGZpeGVzLmMgKGVtaXRfZ251X3R5cGUpOiBBdm9pZCBzdHJpbmcgY29uY2F0ZW5hdGlvbi4KCjIwMDAtMDctMTYgIE5laWwgQm9vdGggIDxOZWlsQkBlYXJ0aGxpbmcubmV0PgoKCSogY3BwbGV4LmM6IFVwZGF0ZSBjb21tZW50cy4KCSogUkVBRE1FLlBvcnRhYmlsaXR5OiBTbWFsbCB1cGRhdGUuCgoyMDAwLTA3LTE2ICBOZWlsIEJvb3RoICA8TmVpbEJAZWFydGhsaW5nLm5ldD4KCgkqIFJFQURNRS5Qb3J0YWJpbGl0eTogIFNtYWxsIHVwZGF0ZS4KCjIwMDAtMDctMTUgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgoJKiBjb25maWcvaWE2NC9pYTY0LXByb3Rvcy5oIChpYTY0X21vdmVfb2spOiBQcm90b3R5cGUuCgkqIGNvbmZpZy9pYTY0L2lhNjQuYyAoaWE2NF9tb3ZlX29rKTogTmV3IGZ1bmN0aW9uLgoJKiBjb25maWcvaWE2NC9pYTY0Lm1kIChtb3ZxaSwgbW92cWlfaW50ZXJuYWwpOiBVc2UgaXQuCgkobW92aGksIG1vdnNpLCBtb3ZkaSwgbW92c2YsIG1vdmRmLCBtb3Z4Zik6IExpa2V3aXNlLgoKMjAwMC0wNy0xNSAgWmFjayBXZWluYmVyZyAgPHphY2tAd29sZXJ5LmN1bWIub3JnPgoKCSogY3BwaGFzaC5jIChzYXZlX2V4cGFuc2lvbik6IENsZWFyIFBSRVZfV0hJVEUgb24gdG9rZW5zCglpbW1lZGlhdGVseSBmb2xsb3dpbmcgYSBwYXN0ZSBvcGVyYXRvci4KCSogY3BwaW5pdC5jIChzb3J0X29wdGlvbnMpOiBOZXcgZnVuY3Rpb24gKG9ubHkgZm9yIEhPU1RfRUJDRElDKS4KCShjcHBfcmVhZGVyX2luaXQpOiBDYWxsIGl0LCBpZiBIT1NUX0VCQ0RJQy4KCShjcHBfaGFuZGxlX29wdGlvbnMpOiBEbyBub3Qgc29ydCBvcHRpb24gbGlzdCBoZXJlLgoJKGhhbmRsZV9vcHRpb24pOiBSZW5hbWUgdG8gY3BwX2hhbmRsZV9vcHRpb24gYW5kIGV4cG9ydC4KCSogY3BwbGV4LmMgKGNwcF9zY2FuX2J1ZmZlcl9ub291dHB1dCwgY3BwX3NjYW5fYnVmZmVyKTogVXNlCglfY3BwX2dldF90b2tlbiBkaXJlY3RseS4KCShjcHBfc2Nhbl9saW5lKTogUmV0dXJuIDAgYXQgRU9GLCAxIG90aGVyd2lzZS4KCSogY3BwbGliLmMgKGNwcF9wdXNoX2J1ZmZlcik6IERvbid0IHNldCBuZXctPmxpbmVubyB0byAxLgoJKiBjcHBsaWIuaDogUHJvdG90eXBlIGNwcF9oYW5kbGVfb3B0aW9uLiAgVXBkYXRlIHByb3RvdHlwZSBvZgoJY3BwX3NjYW5fbGluZS4KCjIwMDAtMDctMTUgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgoJKiBmb2xkLWNvbnN0LmMgKGV4dHJhY3RfbXVsZGl2KTogRG9uJ3Qgb3B0aW1pemUgcGFzdCBhbiB1bnNpZ25lZAoJY2FzdCBhcm91bmQgYW4gZXhwcmVzc2lvbi4gIFRpZHkgb3RoZXIgdW5zaWduZWQgdGVzdHMuCgoyMDAwLTA3LTE1ICBHYWJyaWVsIERvcyBSZWlzICA8Z2RyQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBkaWFnbm9zdGljLmMgKGRvaW5nX2xpbmVfd3JhcHBpbmcsIGxpbmVfd3JhcHBlcl9wcmludGYsIG5vdGljZSwKCXZfZXJyb3Jfd2l0aF9kZWNsLCB2X3dhcm5pbmdfd2l0aF9kZWNsLCB2X3BlZHdhcm5fd2l0aF9kZWNsKTogUmVtb3ZlLgoJKHZfbWVzc2FnZV93aXRoX2RlY2wpOiBSZW5hbWUgdG8gLi4uCgkoZm9ybWF0X3dpdGhfZGVjbCk6IC4uLiB0aGlzLiBUd2VhawoJKGRpYWdub3N0aWNfZm9yX2RlY2wpOiBOZXcgZnVuY3Rpb24uCgkoZmF0YWxfaW9fZXJyb3IpOiBVc2UgdmVyYmF0aW0gaW4gbGlldSBvZiBub3RpY2UuCgkoYW5ub3VuY2VfZnVuY3Rpb24pOiBVc2UgdmVyYmF0aW0uCgkoZGVmYXVsdF9wcmludF9lcnJvcl9mdW5jdGlvbik6IExpa2V3aXNlLgoJKGVycm9yX3dpdGhfZGVjbCwgd2FybmluZ193aXRoX2RlY2wsIHBlZHdhcm5fd2l0aF9kZWNsKTogVXNlIG5ldwoJaW5mcmF0cnVjdHVyZS4KCjIwMDAtMDctMTUgIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIG1pcHMuYyAoZnVuY3Rpb25fYXJnX3Bhc3NfYnlfcmVmZXJlbmNlKTogRG9uJ3QgZG8gYXV0b21hdGljCglhZ2dyZWdhdGUgaW5pdGlhbGl6YXRpb24uCgkobWFjaGluZV9kZXBlbmRlbnRfcmVvcmcpOiBJbml0aWFsaXplIHZhcmlhYmxlIGBtb2RlJy4KCgkqIG1pcHMubWQgKGFic2RpMik6IENoYW5nZSB2YXJpYWJsZSBgcmVnbm8xJyB0byB1bnNpZ25lZCBpbnQuCgkocmVsb2FkX2luZGkpOiBSZW5hbWUgbG93b3JkL2hpd29yZCB0byBsb193b3JkL2hpX3dvcmQgdG8gYXZvaWQKCWNvbmZsaWN0cyB3aXRoIHN5cy9wYXJhbS5oIG1hY3JvIG9mIHRoZSBzYW1lIG5hbWUuCgkocmVsb2FkX291dGRpKTogTGlrZXdpc2UuCgoyMDAwLTA3LTE1ICBNaWNoYWVsIE1laXNzbmVyICA8bWVpc3NuZXJAcmVkaGF0LmNvbT4KCgkqIGZvbGQtY29uc3QuYyAoZm9sZCk6IFdoZW4gb3B0aW1pemluZyBGT08rKyA9PSBDT05TVCBpbnRvICsrRk9PCgk9PSBDT05TVCArIElOQ1JFTUVOVCwgZG9uJ3Qgb3ZlcndyaXRlIHRoZSB0cmVlIG5vZGUgZm9yIEZPTysrLAoJY3JlYXRlIGEgbmV3IG5vZGUgaW5zdGVhZC4KCjIwMDAtMDctMTUgIE5laWwgQm9vdGggIDxOZWlsQkBlYXJ0aGxpbmcubmV0PgoKCSogUkVBRE1FLlBvcnRhYmlsaXR5OiBDb3JyZWN0IGV4YW1wbGUgYWJvdXQgY2FsbGluZyBhIGZ1bmN0aW9uCgl0aHJvdWdoIGEgcG9pbnRlciB0byBmdW5jdGlvbi4gIEZvcm1hdCB3aWRlIHBhcmFncmFwaHMuCgoyMDAwLTA3LTE1ICBNaWNoYWVsIE1laXNzbmVyICA8bWVpc3NuZXJAcmVkaGF0LmNvbT4KCgkqIFJFQURNRS5Qb3J0YWJpbGl0eTogVXBkYXRlIGludGVnZXIgc3VmZml4ZXMgYW5kIGZ1bmN0aW9uCglwcm90b3R5cGUgc2VjdGlvbnMuCgoyMDAwLTA3LTE1ICBOZWlsIEJvb3RoICA8TmVpbEJAZWFydGhsaW5nLm5ldD4KCgkqIFJFQURNRS5Qb3J0YWJpbGl0eTogU21hbGwgdXBkYXRlLgoKMjAwMC0wNy0xNSAgTmVpbCBCb290aCAgPE5laWxCQGVhcnRobGluZy5uZXQ+CgoJKiBSRUFETUUuUG9ydGFiaWxpdHk6IE5ldyBmaWxlLgoKRnJpIEp1bCAxNCAxODoxMzo1MyAyMDAwICBNYXJrIFAgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBJTlNUQUxMOiBHaXZlIHNwZWNpYWwgaW5zdHJ1Y3Rpb25zIGZvciBidWlsZGluZyBHQ0Mgb24gSXJpeCA2LgoJKiBjb25maWcvbWlwcy94LWlyaXM2IChDQyk6IERvbid0IHNldCBpdC4KCShPTERDQyk6IExpa2V3aXNlLgoKMjAwMC0wNy0xNCAgSmFzb24gTWVycmlsbCAgPGphc29uQHJlZGhhdC5jb20+CgoJKiBkd2FyZjJvdXQuYyAoZHdhcmYyb3V0X2ZyYW1lX2RlYnVnX2V4cHIpOiBJZiB3ZSBzdG9yZSB0aGUgQ0ZBCglyZWdpc3RlciBpbiB0aGUgc3RhY2sgYW5kIGxhdGVyIGluIGFub3RoZXIgcmVnaXN0ZXIsIHVzZSB0aGUgbmV3CglyZWdpc3Rlci4KCkZyaSBKdWwgMTQgMTA6MjU6NTMgMjAwMCAgQ2xpbnRvbiBQb3BldHogIDxjcG9wZXR6QGN5Z251cy5jb20+CgoJKiBjb25maWcvbWlwcy9taXBzLm1kOiAoYWJzZGkyKTogSGFuZGxlIHNpZ25fZXh0ZW5kIGZvcgoJc2Vjb25kIG9wZXJhbmQuCgoyMDAwLTA3LTE0ICBOYXRoYW4gU2lkd2VsbCAgPG5hdGhhbkBjb2Rlc291cmNlcnkuY29tPgoKCSogY3BwbGliLmMgKGRvX3ByYWdtYV9kZXBlbmRlbmN5KTogVGlkeSB3YXJuaW5nIG1lc3NhZ2VzLgoKMjAwMC0wNy0xNCAgWmFjayBXZWluYmVyZyAgPHphY2tAd29sZXJ5LmN1bWIub3JnPgoKCSogLmN2c2lnbm9yZTogQ29ycmVjdCB0eXBvLgoKMjAwMC0wNy0xMyAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIC5jdnNpZ25vcmU6IEFkZCBnZW5lcmF0ZWQgWUFDQyBmaWxlcy4KCSogb2JqYy8uY3ZzaWdub3JlOiBOZXcgZmlsZS4KCjIwMDAtMDctMTQgIE5laWwgQm9vdGggIDxOZWlsQkBlYXJ0aGxpbmcubmV0PgoKCSogY3BwbGV4LmMgKGFkanVzdF9jb2x1bW4pOiBOZXcgZnVuY3Rpb24uCgkoc2tpcF93aGl0ZXNwYWNlKTogVXNlIGl0LgoJKHNraXBfYmxvY2tfY29tbWVudCk6IFVzZSBpdCwgYW5kIHdhcm4gYWJvdXQgLyovKiB3aXRoCgktV2NvbW1lbnRzLgoKMjAwMC0wNy0xNCAgTmVpbCBCb290aCAgPE5laWxCQGVhcnRobGluZy5uZXQ+CgoJKiBjcHBoYXNoLmMgKHN0cnVjdCBtYWNyb19pbmZvKTogQWRkIG5ldyBtZW1iZXJzLgoJKF9jcHBfZnJlZV9kZWZpbml0aW9uKTogRGVsZXRlIHRoZSBtYWNybyBkaXJlY3RseS4KCShjb3VudF9wYXJhbXMpOiBSZXR1cm4gdm9pZCwgd2l0aCBmaXJzdCB0b2tlbiBvZgoJZXhwYW5zaW9uIGluIHN0cnVjdCBtYWNyb19pbmZvIG9uIHN1Y2Nlc3MuCgkocGFyc2VfZGVmaW5lKTogUmV0dXJuIGludC4gIEhvaXN0IHN5bnRheCBjaGVja2luZyBmcm9tCglzYXZlX21hY3JvX2V4cGFuc2lvbi4gIExlYXZlIGNhbGwgdG8gc2F2ZV9leHBhbnNpb24gdG8KCV9jcHBfY3JlYXRlX2RlZmluaXRpb24uCgkoYWxsb2NfbWFjcm8pOiBOZWVkcyBqdXN0IDIgYXJndW1lbnRzLgoJKGZyZWVfbWFjcm8pOiBEZWxldGUuCgkoc2F2ZV9leHBhbnNpb24pOiBEb24ndCBwZXJmb3JtIHN5bnRheCBjaGVjay4KCShfY3BwX2NyZWF0ZV9kZWZpbml0aW9uKTogQ2FsbCBzYXZlX2V4cGFuc2lvbi4KCjIwMDAtMDctMTMgIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIGdlbnJlY29nLmMgKHdyaXRlX2hlYWRlcik6IFNwbGl0IGxvbmcgc3RyaW5nLgoKCSogY3BwaGFzaC5jIChtYWNyb19pbmZvKTogRG9uJ3QgdXNlIHRoZSBgc2lnbmVkJyBrZXl3b3JkLgoKCSogc3lzdGVtLmggKGFsbG9jYSk6IFByb3RvdHlwZSBpZiBfX0dOVUNfXyAmJiBfX1NJWkVfVFlQRV9fLgoKMjAwMC0wNy0xMyAgSmFrdWIgSmVsaW5layAgPGpha3ViQHJlZGhhdC5jb20+CgoJKiBjYWxscy5jIChzdG9yZWRfYXJnc19tYXApOiBOZXcgdmFyaWFibGUuCgkoY2hlY2tfc2liY2FsbF9hcmd1bWVudF9vdmVybGFwXzEpOiBOZXcuCgkoY2hlY2tfc2liY2FsbF9hcmd1bWVudF9vdmVybGFwKTogTmV3LgoJKGV4cGFuZF9jYWxsKTogSW5pdGlhbGl6ZSBzdG9yZWRfYXJnc19tYXAuCglDYWxsIGNoZWNrX3NpYmNhbGxfYXJndW1lbnRfb3ZlcmxhcC4KCjIwMDAtMDctMTMgIEJydWNlIEtvcmIgIDxia29yYkBnbnUub3JnPgoKCSogZml4aW5jL2ZpeGZpeGVzLmM6IG1vdmUgRVhJVF9CUk9LRU4gdG8gaGVhZGVyLCBhZGQgc3ViLWV4cHIgbWF4IGNvdW50CgkoZW1pdF9nbnVfdHlwZSk6IHV0aWxpdHkgcHJvY2VkdXJlIGZvciBnbnVfdHlwZV9maXgKCShnbnVfdHlwZV9maXgpOiBpbXBsZW1lbnQgdmFyaW91cyBwcmUtcHJvY2Vzc29yIGd1YXJkcyBhcm91bmQKCXN0YW5kYXJkIHR5cGVzIHNvIHRoZXNlIHR5cGVzIGNhbiBiZSBkZWZpbmVkIG92ZXIgYW5kIG92ZXIKCSogZml4aW5jL2ZpeGluY2wudHBsOiBhZGQgYSAiZ251X3R5cGVfbWFwIiB0aGF0IGZvcmNlcyB0aGUgc3RhbmRhcmQKCXR5cGVzIGFsbHVkZWQgdG8gYWJvdmUgd2lsbCBoYXZlIEdOVS1jb21wbGlhbnQgYmFzZSB0eXBlcwoJKiBmaXhpbmMvZml4bGliLmg6IGFkZCBFWElUX0JST0tFTiBkZWZpbmUgYW5kIHRoZSBnbnVfdHlwZV9tYXAgc3RydWN0CgkqIGZpeGluYy9pbmNsaGFjay5kZWY6IGFkZCB0ZXN0X3RleHQgZW50cmllcyBhbmQgdXRpbGl6ZSB0aGUgbmV3CgkiZ251X3R5cGVzIiBmaXggZm9yIHRoZSBwdHJkaWZmX3QsIHNpemVfdCBhbmQgd2NoYXJfdCB0eXBlcy4KCSogZml4aW5jL2ZpeGluY2wueDogcmVnZW5lcmF0ZQoKMjAwMC0wNy0xMiAgR2FicmllbCBEb3MgUmVpcyAgPGdkckBtZXJsaW4uY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGRpYWdub3N0aWMuYyAodmxpbmVfd3JhcHBlcl9tZXNzYWdlX3dpdGhfbG9jYXRpb24sCgl2X21lc3NhZ2Vfd2l0aF9maWxlX2FuZF9saW5lLCB2X2Vycm9yX3dpdGhfZmlsZV9hbmRfZmlsZSwKCXZfZXJyb3JfZm9yX2FzbSwgdl93YXJuaW5nX2Zvcl9hc20sIHZmYXRhbCwKCXZfd2FybmluZ193aXRoX2ZpbGVfYW5kX2xpbmUsIHZfcGVkd2Fybl93aXRoX2ZpbGVfYW5kX2xpbmUsCgl2c29ycnksIHZlcnJvciwgdndhcm5pbmcsIHZwZWR3YXJuKTogUmVtb3ZlLgoJKGRpYWdub3N0aWNfZm9yX2FzbSk6IE5ldyBmdW5jdGlvbi4KCShwZWR3YXJuLCBlcnJvciwgd2FybmluZywgcGVkd2Fybl93aXRoX2ZpbGVfYW5kX2xpbmUsCgllcnJvcl93aXRoX2ZpbGVfYW5kX2xpbmUsIHdhcm5pbmdfd2l0aF9maWxlX2FuZF9saW5lLCBzb3JyeSwKCWVycm9yX2Zvcl9hc20sIHdhcm5pbmdfZm9yX2FzbSwgZmF0YWwpOiBSZWltcGxlbWVudC4KCShmaW5pc2hfZGlhZ25vc3RpYyk6IENsZWFyIGRpYWdub3N0aWMgaW5mbyBhcyB3ZWxsLgoKMjAwMC0wNy0xMyAgTmVpbCBCb290aCAgPE5laWxCQGVhcnRobGluZy5uZXQ+CgoJKiBjLWNvbW1vbi5oIChmbGFnX2RpZ3JhcGhzKTogTmV3LgoJKiBjLWRlY2wuYyAoY19kZWNvZGVfb3B0aW9uKTogU2V0IGZsYWdfZGlncmFwaHMgYXMgYXBwcm9wcmlhdGUuCgkqIGMtbGV4LmMgKHl5bGV4KTogVXNlIGZsYWdfZGlncmFwaHMgdG8gZGVjaWRlIHdoZXRoZXIgdG8KCWhvbm9yIGRpZ3JhcGhzLgoKMjAwMC0wNy0xMyAgWmFjayBXZWluYmVyZyAgPHphY2tAd29sZXJ5LmN1bWIub3JnPgoKCSogZ2NjLmMgKGRvX3NwZWNfMSk6IEFkZCBuZXcgJUIgb3BlcmF0b3IuCgkoc2V0X2lucHV0KTogUHJlcGFyZSBmb3IgJUIuCgoJKGxpbmtfY29tbWFuZF9zcGVjKTogTW92ZSB1cCB3aXRoIHRoZSBvdGhlciB0bS5oLQoJb3ZlcnJpZGVhYmxlIHNwZWNzLiAgRmFjdG9yIG91dCB0aGUgcG9ydGlvbiBjb25kaXRpb25hbCBvbgoJTElOS19MSUJHQ0NfU1BFQ0lBTCBpbnRvIGEgbmV3IHNwZWMsICUobGlua19saWJnY2MpLgoJKHN0cnVjdCBjb21waWxlcik6IEp1c3QgaGF2ZSBhIHNpbmdsZSBzcGVjIHN0cmluZy4gIEFsbCB1c2VycwoJdXBkYXRlZC4KCShkZWZhdWx0X2NvbXBpbGVycyk6IFJlbW92ZSB1bm5lY2Vzc2FyeSBicmFjZXMuCgkoc3RhdGljX3NwZWNzKTogVXBkYXRlLgoKCSh0cmFkX2NhcGFibGVfY3BwLCBjcHBfb3B0aW9ucywgY2MxX29wdGlvbnMsIGFzbV9vcHRpb25zKTogTmV3CgluYW1lZCBzcGVjcy4KCShDIGFuZCBhc3NlbWJseSBzcGVjcyk6IFVzZSB0aGUgbmV3IG5hbWVkIHNwZWNzLCBhcyBhcHByb3ByaWF0ZS4KCgkqIG9iamMvbGFuZy1zcGVjcy5oOiBVc2UgdGhlIG5ldyBuYW1lZCBzcGVjcy4KCVJlbW92ZSB1bm5lY2Vzc2FyeSBicmFjZXMuCgoyMDAwLTA3LTEyICBaYWNrIFdlaW5iZXJnICA8emFja0B3b2xlcnkuY3VtYi5vcmc+CgoJKiBnY2MuYyAoZXhlY3V0ZSk6IElmIGEgc3VicHJvY2VzcyBnZXRzIGEgZmF0YWwgc2lnbmFsLCByZXBvcnQKCXN0cnNpZ25hbCgpIG9mIHRoZSBzaWduYWwgbnVtYmVyLCBhbmQgYXNrIGZvciBhIGJ1ZyByZXBvcnQuCglEbyBub3QgZG8gdGhpcyBmb3IgU0lHUElQRSBpZiB0aGVyZSdzIGFscmVhZHkgYmVlbiBhbiBlcnJvci4KCgkqIHRyYWRjcHAuYzogRG9uJ3QgaW5jbHVkZSBzaWduYWwuaC4gIERvbid0IGNhdGNoIFNJR1BJUEUuCglEZWxldGUgcGlwZV9jbG9zZWQuCgoJKiB0cmFkY2lmLmM6IFJlbW92ZS4KCjIwMDAtMDctMTIgIFphY2sgV2VpbmJlcmcgIDx6YWNrQHdvbGVyeS5jdW1iLm9yZz4KCgkqIGZpbmFsLmMgKHByb2ZpbGVfZnVuY3Rpb24pOiBEbyBub3QgZW1pdCBwcm9maWxlIGNvdW50ZXJzIGluCgl0aGUgZGF0YSBzZWN0aW9uLCBpZiBOT19QUk9GSUxFX0NPVU5URVJTIGlzIGRlZmluZWQuCgkqIHRtLnRleGk6IERvY3VtZW50IE5PX1BST0ZJTEVfQ09VTlRFUlMuICBVcGRhdGUgZG9jIGZvcgoJRlVOQ1RJT05fUFJPRklMRVIuCgoJKiBjb25maWcvaTM4Ni9saW51eC5oIChOT19QUk9GSUxFX0NPVU5URVJTKTogRGVmaW5lLgoJKEZVTkNUSU9OX1BST0ZJTEVSKTogSnVzdCBlbWl0IGEgY2FsbCB0byBtY291bnQuCgoyMDAwLTA3LTEyICBaYWNrIFdlaW5iZXJnICA8emFja0B3b2xlcnkuY3VtYi5vcmc+CgoJKiB0cmFkY3BwLmMgKG1haW4pOiBSZW5hbWUgJ3BlcnJvcicgbGFiZWwgdG8gJ3N5c19lcnJvcicuCgoJKiBjcHBleHAuYywgY3BwaGFzaC5jLCBjcHBoYXNoLmgsIGNwcGluaXQuYywgY3BwbGV4LmMsCgljcHBsaWIuYywgY3BwbGliLmg6IEVyYWRpY2F0ZSBhbGwgdHJhY2VzIG9mIGNvZGUgZGVwZW5kZW50IG9uCgl0cmFkaXRpb25hbCwgbGFuZ19jaGlsbCwgb3IgbGFuZ19mb3J0cmFuLgoKCSogY3BwZmlsZXMuYzogI3VuZGVmIHN0cmNtcCB0byBzdXBwcmVzcyB3YXJuaW5nIGFib3V0IG1hY3JvcwoJdXNlZCB3aXRob3V0IGFyZ3VtZW50cy4KCShfY3BwX2V4ZWN1dGVfaW5jbHVkZSk6IFVzZSBmLCBub3QgZm5hbWUsIGluICJObyBpbmNsdWRlIHBhdGgiCgllcnJvci4KCShfY3BwX3BvcF9maWxlX2J1ZmZlcik6IE5ldyBmdW5jdGlvbi4KCSogY3BwbGliLmM6IERvbid0IGluY2x1ZGUgPHN5cy9tbWFuLmg+LgoJKGNwcF9wdXNoX2J1ZmZlcik6IFNldCBsaW5lX2Jhc2UgYW5kIGxpbmVubyBpbiBuZXcgYnVmZmVyLgoJKGNwcF9wb3BfYnVmZmVyKTogVXNlIF9jcHBfcG9wX2ZpbGVfYnVmZmVyLgoKCSogY3BwbGV4LmM6IE1vdmUgYWxsIHByb3RvdHlwZXMgYW5kIHN0cnVjdHVyZSBkZWNsYXJhdGlvbnMgdG8gdGhlCgl0b3Agb2YgdGhlIGZpbGUuICBQcm9wZXJseSBwYXJlbnRoZXNpemUgc29tZSBtYWNybyBhcmd1bWVudHMuCgkoY3BwX3NjYW5fbGluZSk6IE5ldyBmdW5jdGlvbi4KCShzcGVjaWFsX3N5bWJvbCBbY2FzZSBUX0lOQ0xVREVfREVQVEhdKTogVXNlIHBmaWxlLT5pbmNsdWRlX2RlcHRoLAoJZG9uJ3QgbmVlZCB0byB3YWxrIHVwIHRoZSBzdGFjayBjb3VudGluZy4KCjIwMDAtMDctMTIgIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIGMtY29tbW9uLmMgKGNvbWJpbmVfc3RyaW5ncyk6IEVtaXQgYSBwZWRhbnRpYyB3YXJuaW5nIHdoZW4gYQoJc3RyaW5nIGxlbmd0aCBpcyBncmVhdGVyIHRoYW4gdGhlIG1pbmltdW0gQU5TSSBDIGlzIHJlcXVpcmVkCgl0byBzdXBwb3J0LgoKV2VkIEp1bCAxMiAxMzoyNDozMCAyMDAwICBKZWZmcmV5IEEgTGF3ICAobGF3QGN5Z251cy5jb20pCgoJKiBwYS94bS1wYTY0LmggKE5PX1NZU19TSUdMSVNUKTogS2lsbC4KCSogZDMwdi94bS1kMzB2LmggKE5PX1NZU19TSUdMSVNUKTogS2lsbC4KCjIwMDAtMDctMTIgIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIGMtZGVjbC5jIChkZWZpbmVfbGFiZWwpOiBXYXJuIGFib3V0IGlkZW50aWZpZXIgY29uZmxpY3RzIHdpdGgKCWxhYmVscyBpbiB0cmFkaXRpb25hbCBDLgoKCSogYy1wYXJzZS5pbiAodW5vcCArKTogV2FybiBhYm91dCB0aGUgdW5hcnkgcGx1cyBvcGVyYXRvciBmb3IKCXRyYWRpdGlvbmFsIEMuCgoJKiBjLXR5cGVjay5jIChzdG9yZV9pbml0X3ZhbHVlKTogV2FybiBhYm91dCBhdXRvbWF0aWMgYWdncmVnYXRlCglpbml0aWFsaXphdGlvbiBmb3IgdHJhZGl0aW9uYWwgQy4KCgkqIGludm9rZS50ZXhpICgtV3RyYWRpdGlvbmFsKTogRG9jdW1lbnQgbmV3IHdhcm5pbmdzLgoKMjAwMC0wNy0xMiAgR2FicmllbCBEb3MgUmVpcyAgPGdkckBjb2Rlc291cmNlcnkuY29tPgoKCSogTWFrZWZpbGUuaW4gKGMtZXJyb3JzLm8pOiBGaXggdGhpbmtvIGluIGRlcGVuZGVuY3kuCgoyMDAwLTA3LTEyICBaYWNrIFdlaW5iZXJnICA8emFja0B3b2xlcnkuY3VtYi5vcmc+CgoJKiBnY2MuYyAoQyBzcGVjcyBbIVVTRV9DUFBMSUJdKTogSW52b2tlIHRyYWRjcHAgaWYgYW55IG9mCgktdHJhZGl0aW9uYWwsIC1mdHJhZGl0aW9uYWwsIG9yIC10cmFkaXRpb25hbC1jcHAgd2FzIGdpdmVuLgoJRG8gbm90IHBhc3MgLXRyYWRpdGlvbmFsIHRvIHRoZSBwcmVwcm9jZXNzb3IuCgkoLlMgc3BlYyk6IExpa2V3aXNlLiAgRG9uJ3QgYm90aGVyIGRlZmluaW5nIF9fQVNTRU1CTEVSX18sIHRoZQoJcHJlcHJvY2Vzc29yIGRvZXMgaXQgYXV0b21hdGljYWxseS4KCSogb2JqYy9sYW5nLXNwZWNzLmg6IExpa2V3aXNlLiAgRG9uJ3QgYm90aGVyIGRlZmluaW5nIF9fT0JKQ19fLgoKCSogY2gvbGFuZy1zcGVjcy5oOiBBbHdheXMgdXNlIHRyYWRjcHAuICBEbyBub3QgcGFzcwoJLXRyYWRpdGlvbmFsLCAtdHJpZ3JhcGhzLCBvciAtcGVkYW50aWMgdG8gdGhlIHByZXByb2Nlc3Nvci4KCSogZi9sYW5nLXNwZWNzLmggKC5GIHNwZWMpOiBMaWtld2lzZS4gIERvbid0IGJvdGhlciBkZWZpbmluZwoJX0xBTkdVQUdFX0ZPUlRSQU4uCgoyMDAwLTA3LTEyICBaYWNrIFdlaW5iZXJnICA8emFja0B3b2xlcnkuY3VtYi5vcmc+CgoJKiBjcHBleHAuYyAoTE9HSUNBTCk6IERlbGV0ZSBtYWNyby4KCShfY3BwX3BhcnNlX2V4cHIpOiBEbyBub3QgdXNlIFVOQVJZIGZvciB1bmFyeSArLiAgSW1wbGVtZW50IHx8CglhbmQgJiYgZGlyZWN0bHkuCgoJKiBjcHBoYXNoLmMgKEhBU0hTSVpFKTogSW5jcmVhc2UgdG8gNDA5Ni4KCShzdHJ1Y3QgaGFzaGR1bW15KTogQWRkIGhhc2ggZmllbGQuCgkoZXFfSEFTSE5PREUpOiBDb21wYXJlIHVucmVkdWNlZCBoYXNoZXMsIHRoZW4gbGVuZ3RocywgdGhlbgoJdGhlIHN0cmluZyB2YWx1ZXMgdXNpbmcgbWVtY21wLgoJKGNwcF9sb29rdXApOiBTZXQgZHVtbXkuaGFzaC4KCldlZCBKdWwgMTIgMTM6MTU6MTYgMjAwMCAgTWFyYyBFc3BpZSA8ZXNwaWVAb3BlbmJzZC5vcmc+CgoJKiBjb25maWd1cmUuaW4gKG04OGstb3BlbmJzZCk6IEV4cHJlc3MgY29uZmlndXJhdGlvbiB1c2luZyBuZXcgZnJhZ21lbnQKCXN0eWxlLgoJKiBjb25maWd1cmU6IFJlYnVpbHQuCgkqIG04OGsvYW91dC1kYnguaDogTmV3LgoJKiBtODhrL29wZW5ic2QuaDogTmV3LgoJKiBtODhrL3htLW9wZW5ic2QuaDogTmV3LgoKMjAwMC0wNy0xMiAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogZXhwci5jIChleHBhbmRfZXhwcik6IFJldHVybiBjb25zdDBfcnR4LCBub3QgZXJyb3JfbWFya19ub2RlLgoKMjAwMC0wNy0xMiAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAY3lnbnVzLmNvbT4KCgkqIHJlbG9hZC5jIChwdXNoX3NlY29uZGFyeV9yZWxvYWQpOiBNYWtlIHN1cmUgdG8gYWRkIHRoZSBuZXcKCXJlbG9hZCBhdCB0aGUgZW5kLCBhZnRlciBhY3F1aXJpbmcgc2Vjb25kYXJ5IG1lbW9yeS4KCjIwMDAtMDctMTIgIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIGNwcGxleC5jIChpc19tYWNyb19kaXNhYmxlZCk6IFVzZSBDUFBfV1RSQURJVElPTkFMLgoKCSogYy1kZWNsLmMgKHNldF9jdXJyZW50X2Z1bmN0aW9uX25hbWVfZGVjbGFyZWQsIGFub25fYWdncl90eXBlX3AsCglsYW5nX2V4cGFuZF9zdG10KTogTWFyayBwYXJhbWV0ZXJzIHdpdGggQVRUUklCVVRFX1VOVVNFRC4KCgkqIGMtcGFyc2UuaW4gKHN0bXQpOiBEZWxldGUgdW51c2VkIHZhcmlhYmxlcy4KCgkqIGNvbnZlcnQuYyAoY29udmVydF90b192ZWN0b3IpOiBMaWtld2lzZS4KCgkqIGdlbnN1cHBvcnQuYyAocHJvY2Vzc19ydHgpOiBEZWNsYXJlIGF0dHIgYXMgYHJ0dmVjJyBub3QgYHJ0eCcuCgoJKiB0cmVlLmMgKGZpbmlzaF92ZWN0b3JfdHlwZSk6IFByb3RvdHlwZS4KCjIwMDAtMDctMTIgIEJydWNlIEtvcmIgIDxia29yYkBnbnUub3JnPgoKCSogZml4aW5jL2ZpeGZpeGVzLmM6IHVzZSB4bWFsbG9jCgkqIGZpeGluYy9maXhpbmNsLmMoaW5pdGlhbGl6ZSk6IHNldCBwcm9ncmFtIG5hbWUgZm9yIHhtYWxsb2MKCSogZml4aW5jL2ZpeGxpYi5jKG11c3RfbWFsbG9jKTogb2Jzb2xldGUKCShpc19jeHhfaGVhZGVyKTogbm8gbG9uZ2VyIHVzZWQgLSBkaXNhYmxlZAoJKHNraXBfcXVvdGUpOiBpbnNlcnRlZCBhbmQgZGlzYWJsZWQgZm9yIGZ1dHVyZSB1c2UKCSogZml4aW5jL2ZpeGxpYi5oOiByZWZsZWN0cyBhYm92ZQoJKiBmaXhpbmMvZml4dGVzdHMuYzogcmVtb3ZlZCBkaW5rbGViZXJyaWVzCgoyMDAwLTA3LTEyICBOZWlsIEJvb3RoICA8TmVpbEJAZWFydGhsaW5nLm5ldD4KCgkqIGNwcGhhc2guaDogKFRPS0VOX1NQRUxMKSBQdWxsZWQgZnJvbSBjcHBsZXguYy4KCSogY3BwbGV4LmMgKFRPS0VOX1NQRUxMKSBNb3ZlIHRvIGNwcGhhc2guaC4KCgkqIGNwcGhhc2guYzogKHN0cnVjdCBtYWNyb19pbmZvLCBhbGxvY19tYWNybywgZnJlZV9tYWNybywKCXN0cnVjdCB0b2tsaXN0X2R1bW15KTogTmV3LgoJKGNwcF9mcmVlX2RlZmluaXRpb24pOiBGcmVlIG1hY3JvcyB3aXRoIGZyZWVfbWFjcm8uCgkoY291bnRfcGFyYW1zKTogRG9uJ3Qgc2F2ZSBwYXJhbWV0ZXIgc3BlbGxpbmdzLiAgU2F2ZSBtYWNybwoJaW5mb3JtYXRpb24gaW4gYSBzdHJ1Y3QgbWFjcm9faW5mby4KCShwYXJzZV9kZWZpbmUpOiBEb24ndCBhbGxvY2F0ZSBhIHRva2VuIGxpc3QuCgkoc2F2ZV9leHBhbnNpb24pOiBBbGxvY2F0ZSB0aGUgbWFjcm8ncyB0b2tlbiBsaXN0LCBhbmQKCXNhdmUgcGFyYW1ldGVyIHNwZWxsaW5ncyBpZiBuZWNlc3NhcnkuICBVc2UgVE9LRU5fU1BFTEwuCgkoY3BwX2NyZWF0ZV9kZWZpbml0aW9uKTogTWFrZSBsaXN0IGNvbnN0LgoKMjAwMC0wNy0xMiAgR2FicmllbCBEb3MgUmVpcyAgPGdkckBjb2Rlc291cmNlcnkuY29tPgoKCSogYy10eXBlY2suYyAocGVkd2Fybl9jOTkpOiBNb3ZlIHRvCgkqIGMtZXJyb3JzLmM6IC4uLiBIZXJlLgoJKiB0b3BsZXYuaCAodmVycm9yLCB2d2FybmluZywgdnBlZHdhcm4pOiBSZW1vdmUgcHJvdG90eXBlcy4KCSogZGlhZ25vc3RpYy5jICh2ZXJyb3IsIHZ3YXJuaW5nLCB2cGVkd2Fybik6IE1ha2Ugc3RhdGljLgoJKiBNYWtlZmlsZS5pbiAoQ19BTkRfT0JKQ19PQkpTKTogSW5jbHVkZSBjLWVycm9ycy5vCgkoYy1lcnJvcnMubyk6IExpc3QgZGVwZW5kZW5jeS4KCjIwMDAtMDctMTIgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjLXBhcnNlLmM6IFJlbW92ZS4KCSogYy1wYXJzZS5oOiBMaWtld2lzZS4KCSogYy1wYXJzZS55OiBMaWtld2lzZS4KCSogb2JqYy9vYmpjLXBhcnNlLmM6IExpa2V3aXNlLgoJKiBvYmpjL29iamMtcGFzcmUueTogTGlrZXdpc2UuCgoyMDAwLTA3LTExICBSb2RuZXkgQnJvd24gIDxSb2RuZXlCcm93bkBwbXNjLmNvbT4KCgkqIGdjYy50ZXhpOiBGaXggbWlub3IgdHlwb3MKCSogZXh0ZW5kLnRleGk6IEZpeCBtaW5vciB0eXBvcwoKMjAwMC0wNy0xMSAgTWFyYyBFc3BpZSA8ZXNwaWVAb3BlbmJzZC5vcmc+CgoJKiBjb2xsZWN0Mi5jIChtYWluKTogUmVjb2duaXplIC5sbyBhcyBvYmplY3QgZmlsZXMuCgoyMDAwLTA3LTExICBKLiBEYXZpZCBBbmdsaW4gIDxkYXZlQGhpYXVseTEuaGlhLm5yYy5jYT4KCgkqIHBhLmMgKGhwcGFfZW5jb2RlX2xhYmVsKTogU3RvcmUgbGFiZWxzIGluIGdjIG1lbW9yeSB3aGVuIGdnY19wIGlzCgl0cnVlLgoKCSogYWNsb2NhbC5tNCAoQUNfRlVOQ19NTUFQX0FOWVdIRVJFKTogRXh0ZW5kIHRlc3QgdG8gZGV0ZWN0IHN5c3RlbXMKCXdpdGggTUFQX0FOT05ZTU9VUyBhbmQgTUFQX0FOT04uCgkqIGNvbmZpZ3VyZSwgY29uZmlnLmluOiBSZWJ1aWx0LgoKMjAwMC0wNy0xMiAgR2FicmllbCBEb3MgUmVpcyAgPGdkckBjb2Rlc291cmNlcnkuY29tPgoKCSogZGlhZ25vc3RpYy5jIChzYXZlX291dHB1dF9zdGF0ZSk6IFJlbW92ZS4KCShyZXN0b3JlX291dHB1dF9zdGF0ZSk6IExpa2V3aXNlLgoJKGNsZWFyX3RleHRfaW5mbyk6IE5ldyBmdW5jdGlvbi4KCShjbGVhcl9kaWFnbm9zdGljX2luZm8pOiBMaWtld2lzZS4KCShvdXRwdXRfdGV4dF9sZW5ndGgsIGlzX3N0YXJ0aW5nX25ld2xpbmUsIG91dHB1dF9wcmVmaXgsCglsaW5lX3dyYXBfY3V0b2ZmLCBpZGVhbF9saW5lX3dyYXBfY3V0b2ZmLCBwcmVmaXhfd2FzX2VtaXR0ZWRfZm9yLAoJcHJlZml4aW5nX3BvbGljeSwgb3V0cHV0X2J1ZmZlcl9wdHJfdG9fZm9ybWF0X2FyZ3MpOiBOZXcgbWFjcm9zCgkoc2V0X3JlYWxfbWF4aW11bV9sZW5ndGgsIG91dHB1dF9zZXRfbWF4aW11bV9sZW5ndGgsCglvdXRwdXRfc2V0X3ByZWZpeCwgb3V0cHV0X2dldF9wcmVmaXgsIG91dHB1dF9zZXRfbWF4aW11bV9sZW5ndGgsCglvdXRwdXRfZGVzdHJveV9wcmVmaXgsIGluaXRfb3V0cHV0X2J1ZmZlciwKCXJlc2hhcGVfZGlhZ25vc3RpY19idWZmZXIsIG91dHB1dF9zcGFjZV9sZWZ0LCBvdXRwdXRfZW1pdF9wcmVmaXgsCglvdXRwdXRfYWRkX25ld2xpbmUsIG91dHB1dF9hZGRfY2hhcmFjdGVyLCBvdXRwdXRfYWRkX3NwYWNlLAoJb3V0cHV0X2FwcGVuZF9yLCBvdXRwdXRfYXBwZW5kLCB3cmFwX3RleHQsIG91dHB1dF9mb3JtYXQsCglvdXRwdXRfZG9fcHJpbnRmLCBvdXRwdXRfcHJpbnRmLCBvdXRwdXRfZG9fdmVyYmF0aW0sCglvdXRwdXRfdmVyYmF0aW0sIHZlcmJhdGltKTogVXNlIHRoZW0uCgkob3V0cHV0X2NsZWFyKTogU3BsaXQgaW50byBjbGVhdF90ZXh0X2luZm8gYW5kCgljbGVhcl9kaWFnbm9zdGljX2luZm8uCgkoc3RydWN0IG91dHB1dF9zdGF0ZSk6IE1vdmUgdG8uLi4KCgkqIGRpYWdub3N0aWMuaDogLi4uSGVyZQoJKHN0cnVjdCBvdXRwdXRfYnVmZmVyKTogQWRqdXN0LgoKMjAwMC0wNy0xMSAgWmFjayBXZWluYmVyZyAgPHphY2tAd29sZXJ5LmN1bWIub3JnPgoKCSogY3BwbGV4LmMgKHBhcnNlX25hbWUpOiBObyBsb25nZXIgaW5saW5lIChwcmVtYXR1cmUgb3B0aW1pemF0aW9uKS4KCShkb19wb3BfY29udGV4dCk6IEZvbGQgaW50byBwb3BfY29udGV4dC4KCShwb3BfY29udGV4dCk6IFJldHVybnMgaW50LgoJKGxleF9uZXh0KTogSG9pc3QgdGVzdCBmb3IgZW5kIG9mIGRpcmVjdGl2ZSBpbnRvIHBvcF9jb250ZXh0LgoJKHB1c2hfbWFjcm9fY29udGV4dCk6IFJldHVybnMgaW50OyB0YWtlcyBqdXN0IHJlYWRlciBhbmQgdG9rZW4uCglIb2lzdCB0ZXN0IGZvciBleGNlc3NpdmUgbmVzdGluZyB0byBjYWxsZXIuCgkocHVzaF9hcmdfY29udGV4dCk6IFJldHVybnMgdm9pZDsgdGFrZXMganVzdCByZWFkZXIgYW5kIHRva2VuLgoJRG8gbm90IGNhbGwgc3RyaW5naWZ5X2FyZyBvciBnZXRfcmF3X3Rva2VuLgoJKGdldF9yYXdfdG9rZW4pOiBDb252ZXJ0IHRhaWwgcmVjdXJzaW9uIHRocm91Z2gJcHVzaF9hcmdfY29udGV4dAoJdG8gYSBsb29wIGF0IHRoaXMgbGV2ZWwuICBDYWxsIHN0cmluZ2lmeV9hcmcgaGVyZSBpZiBhcHByb3ByaWF0ZS4KCShtYXliZV9wYXN0ZV93aXRoX25leHQpOiBDb252ZXJ0IHRhaWwgcmVjdXJzaW9uIHRvIGEgd2hpbGUgbG9vcC4KCUhvaXN0IHRlc3Qgb2YgcGFzdGVfbGV2ZWwgdG8gY2FsbGVyLgoKCShzdHJpbmdpZnlfYXJnKTogUHVzaCBhcmcgY29udGV4dCBhdCBiZWdpbm5pbmcuCgkoY3BwX2dldF90b2tlbik6IFNwbGl0IG91dCBjb3JlIGludG8gX2NwcF9nZXRfdG9rZW4uICBDYWxsCglwcm9jZXNzX2RpcmVjdGl2ZSBoZXJlLiAgVGhyb3cgYXdheSBDUFBfUExBQ0VNQVJLRVIgdG9rZW5zLgoJKF9jcHBfZ2V0X3Rva2VuKTogQ29udmVydCB0YWlsIHJlY3Vyc2lvbiB0aHJvdWdoCglwdXNoX21hY3JvX2NvbnRleHQgdG8gYSBsb29wIGF0IHRoaXMgbGV2ZWwuCgkoX2NwcF9nbHVlX2hlYWRlcl9uYW1lLCBpc19tYWNyb19kaXNhYmxlZCwgc3RyaW5naWZ5X2FyZywKCV9jcHBfZ2V0X3Jhd190b2tlbik6IFVzZSBfY3BwX2dldF90b2tlbi4KCShfY3BwX3NraXBfcmVzdF9vZl9saW5lKTogRHJvcCB0aGUgY29udGV4dCBzdGFjayBkaXJlY3RseTsgZG8KCW5vdCBjYWxsIHBvcF9jb250ZXh0LgoJKF9jcHBfcnVuX2RpcmVjdGl2ZSk6IENhbGwgbGV4X25leHQgZGlyZWN0bHkuCgoJKiBjcHBoYXNoLmg6IFByb3RvdHlwZSBfY3BwX2dldF90b2tlbi4KCSogY3BwZXhwLmMgKGxleCk6IFVzZSBpdC4KCSogY3BwaGFzaC5jIChwYXJzZV9kZWZpbmUpOiBVc2UgaXQuCgkqIGNwcGxpYi5jIChnZXRfZGVmaW5lX25vZGUsIGRvX3VuZGVmLCBwYXJzZV9pbmNsdWRlLAoJcmVhZF9saW5lX251bWJlciwgZG9fbGluZSwgZG9faWRlbnQsIGRvX3ByYWdtYSwgZG9fcHJhZ21hX2djYywKCWRvX3ByYWdtYV9pbXBsZW1lbnRhdGlvbiwgZG9fcHJhZ21hX3BvaXNvbiwgZG9fcHJhZ21hX2RlcGVuZGVuY3ksCglwYXJzZV9pZmRlZiwgdmFsaWRhdGVfZWxzZSk6IFVzZSBpdC4KCShjcHBfcHVzaF9idWZmZXIpOiBUd2VhayBlcnJvciBtZXNzYWdlOyBhYm9ydCBpZiBhbnlvbmUgdHJpZXMKCXRvIHB1c2ggYSBidWZmZXIgd2hpbGUgbWFjcm8gZXhwYW5zaW9ucyBhcmUgc3RhY2tlZC4KCjIwMDAtMDctMTEgIERvbm4gVGVycnkgIDxkb25udGVAbWljcm9zb2Z0LmNvbT4KCgkqIGNwcGxleC5jIChmcmVlX21hY3JvX2FyZ3MsIHNhdmVfdG9rZW4pOiBDYXN0IGFyZyBvZiBmcmVlCglhbmQvb3IgeHJlYWxsb2MgdG8gUFRSLgoJKF9jcHBfaW5pdF9pbnB1dF9idWZmZXIpOiBDbGVhciBhbGwgZmllbGRzIG9mIHRoZSBiYXNlIGNvbnRleHQuCgpUdWUgSnVsIDExIDE1OjI4OjIxIENEVCAyMDAwICBDbGludG9uIFBvcGV0eiAgPGNwb3BldHpAY3lnbnVzLmNvbT4KCgkqIGdlbnN1cHBvcnQuYyAocHJvY2Vzc19ydHgpOiBNYWtlIHJ0bCBjaGVja2luZyBzdG9wCgljb21wbGFpbmluZyBhYm91dCB0aGUgZGVmaW5lX2luc24gd2hpbGUgaXQgaXMgYmVpbmcKCWNvbnZlcnRlZCBmcm9tIGEgZGVmaW5lX2luc25fYW5kX3NwbGl0LgoKVHVlIEp1bCAxMSAxNjoyNjoxNyAyMDAwICBDbGludG9uIFBvcGV0eiAgPGNwb3BldHpAY3lnbnVzLmNvbT4KCgkqIGNvbmZpZy9taXBzL21pcHMuYyAoc2ltcGxlX21lbW9yeV9vcGVyYW5kKTogQWNjZXNzIHRoZQoJSU5UVkFMIG9mIHRoZSBhZGRyZXNzLCBub3QgaXQncyBjb250YWluaW5nIE1FTS4KCjIwMDAtMDctMTEgIEJydWNlIEtvcmIgIDxia29yYkBnbnUub3JnPgoKCSogZml4aW5jL2ZpeHRlc3RzLmMoZG91YmxlX3NsYXNoKTogb2Jzb2xldGUKCShlbHNlX2VuZGlmX2xhYmVsKTogbGlrZXdpc2UKCSogZml4aW5jL2luY2xoYWNrLmRlZihpcml4X211bHRpbGluZV9jbW50KTogb2Jzb2xldGUKCShsaWJjMV9pZmRlZmRfbWVteCk6IGNvcnJlY3QgaW5pdGlhbCBjb21tZW50CglhbmQgb21pdCB0aGUgI2lmLyNlbmRpZiBwYWlyIGZyb20gdGhlIG1lbXh4eCBkZWNsYXJhdGlvbnMKCSogZml4aW5jL2ZpeGluY2wueDogcmVnZW4KCjIwMDAtMDctMTEgIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIGNwcGxleC5jIChULCBJLCBTLCBDLCBOKTogQXZvaWQgbm9uLWNvbnN0YW50IGluaXRpYWxpemVycy4KCjIwMDAtMDctMTEgIE5laWwgQm9vdGggIDxOZWlsQkBlYXJ0aGxpbmcubmV0PgoKCSogY3BwLnRleGk6IFVwZGF0ZS4KCjIwMDAtMDctMTEgIE5laWwgQm9vdGggIDxOZWlsQkBlYXJ0aGxpbmcubmV0PgoKCSogY3BwaW5pdC5jOiAoY3BwX3JlYWRlcl9pbml0KTogQWxsb3cgZGlncmFwaHMgYnkgZGVmYXVsdC4KCShoYW5kbGVfb3B0aW9uKTogU2V0IGRpZ3JhcGhzIGFjY29yZGluZyB0byBzdGFuZGFyZC4KCU1lcmdlIE9QVF9sYW5nX2M4OSBoYW5kbGVyIHdpdGggT1BUX3N0ZF9jODkuCgoJKiBjcHBsZXguYzogKGxleF9saW5lLCBjYW5fcGFzdGUpOiBIb25vciBkaWdyYXBocyBpbgoJYWNjb3JkYW5jZSB3aXRoCXRoZSBkaWdyYXBocyBmbGFnLgoKCSogY3BwbGliLmg6IChzdHJ1Y3QgY3BwX29wdGlvbnMpOiBOZXcgb3B0aW9uIGRpZ3JhcGhzLgoKMjAwMC0wNy0xMCAgSGFucy1QZXRlciBOaWxzc29uICA8aHBAYXhpcy5jb20+CgkgICAgQnJ1Y2UgS29yYiAgPGJrb3JiQGdudS5vcmc+CgoJKiBmaXhpbmMvaW5jbGhhY2suZGVmIChsaWJjMV9pZmRlZmRfbWVteCk6IE5ldyBmaXguCgkqIGZpeGluYy9maXhpbmNsLng6IFJlZ2VuZXJhdGUuCgkqIGZpeGluYy90ZXN0cy9iYXNlL3Rlc3RpbmcuaDogQWRkIHRlc3RjYXNlLgoKMjAwMC0wNy0xMCAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAY3lnbnVzLmNvbT4KCgkqIGNvbmZpZy9pYTY0L2lhNjQuYyAoZ290X3N5bWJvbGljX29wZXJhbmQpOiBOZXcuCgkoc3ltYm9saWNfb3BlcmFuZCwgbW92ZV9vcGVyYW5kKTogUmV2ZXJ0IDA3MDEgY2hhbmdlLgoJKiBjb25maWcvaWE2NC9pYTY0LmggKFBSRURJQ0FURV9DT0RFUyk6IFVwZGF0ZS4KCSogY29uZmlnL2lhNjQvaWE2NC1wcm90b3MuaCAoZ290X3N5bWJvbGljX29wZXJhbmQpOiBEZWNsYXJlLgoJKiBjb25maWcvaWE2NC9pYTY0Lm1kIChtb3ZkaSk6IFJldmVydCAwNzAxIHdydCBzeW1ib2xpY19vcGVyYW5kOwoJc3BsaXQgdGhlIG9mZnNldCBpbnRvIGEgMTQtYml0IGxvdyBwYXJ0IGluc3RlYWQgb2YgYSAxMy1iaXQgbG93IHBhcnQuCgkobG9hZF9mcHRyKTogTWFyayB0aGUgbWVtIGFzIHVuY2hhbmdpbmcuCgkobG9hZF9zeW1wdHIpOiBVc2UgZ290X3N5bWJvbGljX29wZXJhbmQuCgoyMDAwLTA3LTEwICBOaWNrIENsaWZ0b24gIDxuaWNrY0BjeWdudXMuY29tPgoKCSogbGliZ2NjMi5jIChuZXh0X3N0YWNrX2xldmVsKTogQ2FzdCByZXN1bHQgb2YgY29tcHV0YXRpb24gdG8KCSh2b2lkICoqKSBzbyB0aGF0IHRoZSBhc3NpZ25tZW50IGRvZXMgbm90IGdlbmVyYXRlIGEgd2FybmluZy4KCjIwMDAtMDctMTAgIENoYW5kcmFrYWxhIENoYXZ2YSAgPGNjaGF2dmFAcmVkaGF0LmNvbT4KCgkqIGZsYWdzLmggOiBBZGQgbmV3IHZhcmlhYmxlIGZsYWdfc2luZ2xlX3ByZWNpc2lvbl9jb25zdGFudC4KCSogdG9wbGV2LmMgKGRpc3BsYXlfaGVscCkgOiBBZGQgLWZzaW5nbGUtcHJlY2lzaW9uLWNvbnN0YW50IG9wdGlvbi4KCShmbGFnX3NpbmdsZV9wcmVjaXNpb25fY29uc3RhbnQpOiBOZXcuCgkqIGMtbGV4LmMgKHl5bGV4KTogQ29udmVydCBmbG9hdGluZyBwb2ludCBjb25zdGFudCB0byBzaW5nbGUKCXByZWNpc2lvbiBjb25zdGFudC4KCSogaW52b2tlLnRleGkgOiBBZGQgZG9jdW1lbnRhdGlvbiBmb3IgdGhpcyBuZXcgb3B0aW9uLgoKMjAwMC0wNy0xMCAgR2FicmllbCBEb3MgUmVpcyAgPGdkckBjb2Rlc291cmNlcnkuY29tPgoKCSogZGlhZ25vc3RpYy5jIChvdXRwdXRfb2N0YWwpOiBTZWNvbmQgcGFyYW1ldGVyIGlzIHVuc2lnbmVkLgoJKG91dHB1dF9sb25nX29jdGFsKTogTGlrZXdpc2UuCgkob3V0cHV0X2hleGFkZWNpbWFsKTogTGlrZXdpc2UuCgkob3V0cHV0X2xvbmdfaGV4YWRlY2ltYWwpOiBMaWtld2lzZS4KCShvdXRwdXRfZm9ybWF0KTogQWRqdXN0IGFyZ3VtZW50cyBleHRyYWN0aW9uLiBUd2Vhay4KCShvdXRwdXRfdmVyYmF0aW0sIHZlcmJhdGltKTogRW5kIHZhcmlhYmxlIGFyZ3VtZW50IGxpc3QuCgkocmVwb3J0X2RpYWdub3N0aWMpOiBJbXByb3ZlIGRvY3VtZW50YXRpb24uCgoyMDAwLTA3LTEwICBCZW5qYW1pbiBDaGVsZiAgPGNoZWxmQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjLWNvbW1vbi5oIChidWlsZF9zdG10KTogRGVjbGFyZS4KCShidWlsZF9jb250aW51ZV9zdG10KTogTGlrZXdpc2UuCgkoYnVpbGRfYnJlYWtfc3RtdCk6IExpa2V3aXNlLgoJKGJ1aWxkX3JldHVybl9zdG10KTogTGlrZXdpc2UuCgoJKiBjLWRlY2wuYyAoZG9fY2FzZSk6IFJld3JpdGUgdG8gZG8gd2hhdCBwcmV2aW91c2x5IGRvbmUgaW4KCWMtcGFyc2UuaW4uCgoJKiBjLXNlbWFudGljcy5jIChidWlsZF9zdG10KTogRGVmaW5lLgoJKGJ1aWxkX3JldHVybl9zdG10KTogTGlrZXdpc2UuCgkoYnVpbGRfYnJlYWtfc3RtdCk6IExpa2V3aXNlLgoJKGJ1aWxkX2NvbnRpbnVlX3N0bXQpOiBMaWtld2lzZS4KCShidWlsZF9jYXNlX2xhYmVsKTogTGlrZXdpc2UuCgoJKiBjLXBhcnNlLmluIChCUkVBSyk6IENoYW5nZSB0byBidWlsZCB0cmVlLCB0aGVuIGdlbmVyYXRlIFJUTC4KCShDT05USU5VRSk6IExpa2V3aXNlLgoJKFJFVFVSTik6IExpa2V3aXNlLgoJKENBU0UpOiBMaWtld2lzZS4KCShERUZBVUxUKTogTGlrZXdpc2UuCgoJKiBjLXBhcnNlLnk6IFJlZ2VuZXJhdGUuCgkqIGMtcGFzcmUuYzogTGlrZXdpc2UuCgoyMDAwLTA3LTA5ICBKYXNvbiBNZXJyaWxsICA8amFzb25AcmVkaGF0LmNvbT4KCgkqIGV4cHIuYyAoZXhwYW5kX2V4cHIpOiBCYWlsIGVhcmxpZXIgaWYgd2UgZ2V0IGFuIGVycm9yX21hcmtfbm9kZS4KCgkqIHRyZWUuaCAoU1RSSVBfTk9QUyk6IENoZWNrIGZvciBlcnJvcl9tYXJrX25vZGUuCgkoU1RSSVBfU0lHTl9OT1BTLCBTVFJJUF9UWVBFX05PUFMpOiBMaWtld2lzZS4KCShkd2FyZjJvdXRfKik6IFJlbW92ZSBkdXBsaWNhdGUgZGVjbGFyYXRpb25zLgoKCSogYy1kZWNsLmMgKGR1cGxpY2F0ZV9kZWNscyk6IENvcHkgREVDTF9BQlNUUkFDVF9PUklHSU4gZnJvbQoJREVDTF9BQlNUUkFDVF9PUklHSU4sIG5vdCBERUNMX09SSUdJTi4KCjIwMDAtMDctMTAgIEdhYnJpZWwgRG9zIFJlaXMgIDxnZHJAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGRpYWdub3N0aWMuYyAod3JhcF90ZXh0KTogTmV3IGZ1bmN0aW9uLgoJKG1heWJlX3dyYXBfdGV4dCk6IExpa2V3aXNlLgoJKG91dHB1dF9hZGRfc3RyaW5nKTogVXNlIGl0LgoJKG91dHB1dF9mb3JtYXQpOiBMaWtld2lzZS4KCShjb3VudF9lcnJvcik6IFVzZSB2ZXJiYXRpbSBpbnN0ZWFkIG9mIG5vdGljZS4KCShyZXBvcnRfZXJyb3JfZnVuY3Rpb24pOiBMaWtld2lzZS4gRG9uJ3QgdXNlIHBsYWluIGZwcmludGYuCgkoZmluaXNoX2RpYWdub3N0aWMpOiBOZXcgZnVuY3Rpb24uCgkob3V0cHV0X2RvX3ZlcmJhdGltKTogVHdlYWsuICBDb21tb25hbGl6ZSBmdW5jdGlvbmFsaXRpZXMgaW4KCW91dHB1dF92ZXJiYXRpbSBhbmQgdmVyYmF0aW0uCgkob3V0cHV0X3ZlcmJhdGltKTogQWRqdXN0LgoJKHZlcmJhdGltKTogTGlrZXdpc2UuCgkocmVwb3J0X2RpYWdub3N0aWMpOiBEZWZpbmUuCgoJKiBkaWFnbm9zdGljLmggKHJlcG9ydF9kaWFnbm9zdGljKTogUHJvdG90eXBlLgoKMjAwMC0wNy0wOSAgWmFjayBXZWluYmVyZyAgPHphY2tAd29sZXJ5LmN1bWIub3JnPgoKCSogY3BwZXhwLmMgKF9jcHBfcGFyc2VfZXhwcik6IERvbid0IHVzZSB1bmFyeSBwbHVzLgoKMjAwMC0wNy0wOSAgTmVpbCBCb290aCAgPE5laWxCQGVhcnRobGluZy5uZXQ+CgoJKiBjcHBoYXNoLmg6IElTdnNwYWNlLCBpc192c3BhY2UsIGlzX252c3BhY2U6IE5ldy4KCUlTaHNwYWNlLCBJU3NwYWNlOiBVcGRhdGUuCgoJKiBjcHBpbml0LmM6IElTVEFCTEU6IFVwZGF0ZS4KCVY6IE5ldy4KCgkqIGNwcGxleC5jIChJU19IU1BBQ0UsIFNfTkVXTElORSk6IFJlbW92ZS4KCShJU19ESVJFQ1RJVkUpOiBSZW5hbWUgS05PV05fRElSRUNUSVZFLgoJKHNraXBfYmxvY2tfY29tbWVudCwgc2tpcF9saW5lX2NvbW1lbnQsCXBhcnNlX3N0cmluZywKCWxleF9saW5lKTogVXNlIGlzX3ZzcGFjZSByYXRoZXIgdGhhbiBJU19ORVdMSU5FLgoJKHNraXBfd2hpdGVzcGFjZSwgbGV4X2xpbmUpOiBDbGVhbiB1cCB0byB1c2UgaXNfbnZzcGFjZS4KCShsZXhfbGluZSk6IFVzZSBLTk9XTl9ESVJFQ1RJVkUuICBBbnkga2luZCBvZiBkaXJlY3RpdmUKCWdldHMgYSBCT0wgZmxhZy4KCShsZXhfbmV4dCk6IFVuY29uZGl0aW9uYWxseSBzdG9wIGlmIHdpdGhpbiBhIGRpcmVjdGl2ZS4KCVRyZWF0IGRpcmVjdGl2ZXMgd2l0aGluIG1hY3JvIGludm9jYXRpb25zIGFzIGRpcmVjdGl2ZXMKCShhZnRlciBwYXJzZV9hcmdzIGVtaXRzIGVycm9yKSwgbm90IGFzIHRoZSBhcmd1bWVudC4KCjIwMDAtMDctMDkgIEdhYnJpZWwgRG9zIFJlaXMgIDxnZHJAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGRpYWdub3N0aWMuYyAoZGlhZ25vc3RpY19hcmdzKTogTmV3IG1hY3JvLgoJKGRpYWdub3N0aWNfbXNnKTogTGlrZXdpc2UuCgkob3V0cHV0X2Zvcm1hdHRlZF9pbnRlZ2VyKTogTGlrZXdpc2UuCgkob3V0cHV0X3N0YXRlKTogTmV3IGRhdGEgdHlwZS4KCShkaWdpdF9idWZmZXIpOiBNYWtlIGdsb2JhbC4KCShvdXRwdXRfYWRkX2ludGVnZXIpOiBSZW5hbWUgdG8gb3V0cHV0X2RlY2ltYWwuIFNxdWVlemUKCWRpZ2l0X2J1ZmZlci4KCShvdXRwdXRfbG9uZ19kZWNpbWFsLCBvdXRwdXRfdW5zaWduZWRfZGVjaW1hbCwKCW91dHB1dF9sb25nX3Vuc2lnbmVkX2RlY2ltYWwsIG91dHB1dF9vY3RhbCwgb3V0cHV0X2xvbmdfb2N0YWwsCglvdXRwdXRfaGV4YWRlY2ltYWwsIG91dHB1dF9sb25nX2hleGFkZWNpbWFsKTogTmV3IGZ1bmN0aW9ucy4KCShvdXRwdXRfYXBwZW5kX3IpOiBOZXcgZnVuY3Rpb24uCgkob3V0cHV0X2FwcGVuZCk6IFR3ZWFrLgoJKG91dHB1dF9mbHVzaF9vbik6IFJlbmFtZSB0byBvdXRwdXRfdG9fc3RyZWFtLgoJKG91dHB1dF9mb3JtYXQpOiBDaGFuZ2UgcHJvdG90eXBlLiAgSW1wcm92ZSBkb2N1bWVudGF0aW9uLiBIYW5kbGUKCW1vcmUgZm9ybWF0IHNwZWNpZmllcnMuCgkoYnVpbGRfbG9jYXRpb25fcHJlZml4KTogUmVuYW1lIHRvIGNvbnRleHRfYXNfcHJlZml4LgoJKG91dHB1dF9ub3RpY2UpOiBSZW5hbWUgdG8gb3V0cHV0X2RvX3ByaW50Zi4KCShvdXRwdXRfcHJpbnRmKTogVHdlYWsuCgkobGluZV93cmFwcGVyX3ByaW50Zik6IExpa2V3aXNlLgoJKHZsaW5lX3dyYXBwZXJfbWVzc2FnZV93aXRoX2xvY2F0aW9uKTogQWRqdXN0IGNhbGwgdG8gcmVuYW1lZAoJZnVuY3Rpb25zLgoJKHZfbWVzc2FnZV93aXRoX2RlY2wpOiBMaWtld2lzZS4KCShkZWZhdWx0X3ByaW50X2Vycm9yX2Z1bmN0aW9uKTogTGlrZXdpc2UuCgkoc2F2ZV9vdXRwdXRfc3RhdGUpOiBOZXcgZnVuY3Rpb24uCgkocmVzdG9yZV9vdXRwdXRfc3RhdGUpOiBMaWtld2lzZS4KCShvdXRwdXRfZG9fdmVyYmF0aW0pOiBMaWtld2lzZS4KCShvdXRwdXRfdmVyYmF0aW0pOiBEZWZpbmUuCgkodmVyYmF0aW0pOiBMaWtld2lzZS4KCgkqIGRpYWdub3N0aWMuaCAocHJpbnRlcl9mbik6IENoYW5nZSByZXR1cm4gdHlwZSBmcm9tIHZvaWQgdG8gaW50LgoJSW1wcm92ZSBkb2N1bWVudGF0aW9uLgoJKG91dHB1dF9hZGRfaW50ZWdlcik6IFJlbmFtZSB0byBvdXRwdXRfZGVjaW1hbC4KCShvdXRwdXRfZmx1c2hfb24sIG91dHB1dF9mb3JtYXQpOiBEb24ndCBleHBvcnQuCgkob3V0cHV0X3ZlcmJhdGltLCB2ZXJiYXRpbSk6IERlY2xhcmUuCgoyMDAwLTA3LTA4ICBUb29uIE1vZW5lICA8dG9vbkBtb2VuZS5pbmRpdi5ubHV1Zy5ubD4KCgkqIGZvbGQtY29uc3QuYyAoZXh0cmFjdF9tdWxkaXYpIGNhc2UgUExVU19FWFBSLCBNSU5VU19FWFBSOgoJQ2hlY2sgd2hldGhlciBjIGRpdmlkZXMgb3AxIGV4YWN0bHkgaWYgb3BlcmF0aW9uIGlzIG5vdAoJbXVsdGlwbGljYXRpb24uCgoyMDAwLTA3LTA4ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEBjeWdudXMuY29tPgoKCSogZmluYWwuYyAoZmluYWwpOiBEbyBub3QgYWJvcnQgd2hlbiByZWctc3RhY2sgaW50cm9kdWNlcwoJYSBuZXcgaW5zbi4KCjIwMDAtMDctMDggIFphY2sgV2VpbmJlcmcgIDx6YWNrQHdvbGVyeS5jdW1iLm9yZz4KCgkqIGNwcGxpYi5oIChzdHJ1Y3QgY3BwX25hbWUpOiBOb3cgc3RydWN0IGNwcF9zdHJpbmcuCgkoQ1BQX0lOVCwgQ1BQX0ZMT0FULCBDUFBfTlVNQkVSLCBDUFBfQ09NTUVOVCwKCUNQUF9IRUFERVJfTkFNRSk6IENoYW5nZSB0byB0eXBlIFMuCgkoc3RydWN0IGNwcF90b2tlbik6IFJlbmFtZSAnbmFtZScgZmllbGQgdG8gJ3N0cicuICBBZGQgJ25vZGUnCglmaWVsZCwgYSBjcHBfaGFzaG5vZGUgKi4gIEFsbCByZWZlcmVuY2VzIHRvIHZhbC5uYW1lIHVwZGF0ZWQKCXRvIHVzZSB2YWwuc3RyIG9yIHZhbC5ub2RlIGFzIGFwcHJvcHJpYXRlLgoJKHN0cnVjdCBjcHBfcmVhZGVyKTogQWRkIHNwZWNfbm9kZXMgZmllbGQuCgkoY3BwX2lkY21wKTogTm93IGNwcF9pZGVxOyB0YWtlcyBhIHRva2VuICogYW5kIGEgY2hhciAqLgoKCSogY3BwaGFzaC5oIChzdHJ1Y3Qgc3BlY19ub2Rlcyk6IE5ldy4KCShlbnVtIHNwZWxsX3R5cGUpOiBSZW9yZGVyLiAgT25seSBTUEVMTF9TVFJJTkcgdG9rZW5zIHVzZQoJdmFsLnN0ci4gIEFsbCByZWZlcmVuY2VzIHRvICdzcGVsbGluZyA+IFNQRUxMX05PTkUnIHVwZGF0ZWQgdG8KCW1hdGNoLgoKCShDUFBfSU5fU1lTVEVNX0hFQURFUik6IENoZWNrIHBmaWxlLT5idWZmZXIgYW5kCglwZmlsZS0+YnVmZmVyLT5pbmMgYXJlIG5vdCBOVUxMIGJlZm9yZSBkZXJlZmVyZW5jaW5nIHRoZW0uCgoJKiBjcHBsZXguYyAocGFyc2VfbmFtZSk6IFRha2UgYSBwb2ludGVyIHRvIHRoZSBjdXJyZW50IHRva2VuLAoJcGx1cyBjdXJyZW50IHBvc2l0aW9uIGFuZCBsaW1pdCBhcyBhcmdzOyByZXR1cm4gdGhlIG5ldwoJcG9zaXRpb247IGRvbid0IGNvcHkgdGhlIHRleHQgb2YgYSBuYW1lIGludG8gdGhlIHN0cmluZwoJYnVmZmVyLCBpbnN0ZWFkIGNhbGwgY3BwX2xvb2t1cCBhbmQgc3RvcmUgdGhlIG5vZGUgcG9pbnRlci4KCUlmIGV4dGVuZGluZyBhIHRva2VuLCBjb3B5IG91dCB0aGUgdGV4dCBvZiB0aGUgb2xkIGludG8gYQoJc2NyYXRjaCBidWZmZXIsIGFwcGVuZCB0aGUgbmV3LCBsb29rIHRoYXQgdXAgYW5kIHN0b3JlIHRoZSBuZXcKCW5vZGUgcG9pbnRlci4gIElubGluZS4KCShtYXliZV9wYXN0ZV93aXRoX25leHQpOiBJZiB0aGUgcmVzdWx0IG9mIHBhc3RlIGlzIGEgTkFNRSwKCXRoZW4gbG9vayB1cCB0aGUgcGFzdGVkIHRleHQgYW5kIHN0b3JlIGl0cyBub2RlIHBvaW50ZXIuCgkobGV4X2xpbmUpOiBBZGp1c3QgZm9yIG5ldyBwYXJzZV9uYW1lIGludGVyZmFjZS4KCUNoZWNrIGZvciBMInN0ciIsIEwnc3RyJyB1c2luZyBzcGVjX25vZGVzLT5uX0wuCgkoc3BlbGxfdG9rZW4pOiBTUEVMTF9JREVOVCB0b2tlbnMgaGF2ZSB0aGVpciBzcGVsbGluZyBpbgoJdmFsLm5vZGUtPm5hbWUuICBIYW5kbGUgU1BFTExfU1RSSU5HIHRva2VucyB0aGF0IGRvbid0IGhhdmUKCXN0cmluZyBkZWxpbWl0ZXJzLgoJKF9jcHBfZXhwYW5kX25hbWVfc3BhY2UsCgkoY2FuX3Bhc3RlKTogQ2hlY2sgZm9yIEwgIyMgInN0ciIgdXNpbmcgc3BlY19ub2Rlcy0+bl9MLgoJKGNwcF9nZXRfdG9rZW4sIHNwZWNpYWxfc3ltYm9sKTogTm8gbmVlZCB0byBjYWxsIGNwcF9sb29rdXAuCgkoY3BwX2lkY21wKTogTm93IGNwcF9pZGVxOyB0YWtlIGEgdG9rZW4gKiBhbmQgYSBjb25zdCBjaGFyICo7CglyZXR1cm4gMT1lcXVhbCAwPW5vdCwgbm90IGEgdHJpc3RhdGUuCgoJKiBjcHBoYXNoLmMgKHZhcl9hcmdzX3N0cik6IERlbGV0ZS4KCShmaW5kX3BhcmFtKTogQ29tcGFyZSBub2RlIGZpZWxkcyBkaXJlY3RseS4KCShpc19fdmFfYXJnc19fKTogVXNlIENQUF9QRURBTlRJQy4gIEp1c3QgY29tcGFyZQoJdG9rZW4tPnZhbC5ub2RlIHdpdGggc3BlY19ub2Rlcy0+bl9fVkFfQVJHU19fLgoJKGR1bXBfZnVubGlrZV9tYWNybyk6IERvbid0IHVzZSB2YXJfYXJnc19zdHIuCgoJKiBjcHBsaWIuYyAoX2NwcF9jaGVja19kaXJlY3RpdmUpOiBKdXN0IHdhbGsgdGhyb3VnaAoJc3BlY19ub2Rlcy0+ZGlycyBjb21wYXJpbmcgcG9pbnRlcnMuCgkoZ2V0X2RlZmluZV9ub2RlLCBkb19wcmFnbWFfcG9pc29uLCBkZXRlY3RfaWZfbm90X2RlZmluZWQsCglwYXJzZV9pZmRlZik6IFRoZSBpZGVudGlmaWVyIGhhcyBhbHJlYWR5IGJlZW4gbG9va2VkIHVwLgoJKGRvX2lmZGVmLCBkb19pZm5kZWYpOiBwYXJzZV9pZmRlZiB3b24ndCByZXR1cm4gYSBwb2lzb25lZAoJbm9kZS4KCShkb19pZik6IE9ubHkgY2FsbCBkZXRlY3RfaWZfbm90X2RlZmluZWQgYXQgYmVnaW5uaW5nIG9mIGZpbGUuCgkoX2NwcF9wYXJzZV9hc3NlcnRpb24pOiBPbmx5IGNvcHkgc3RyaW5nIHBvaW50ZXJzIGZvcgoJU1BFTExfU1RSSU5HIHRva2Vucy4KCShwcmFnbWFfZGlzcGF0Y2gpOiBUYWtlIGEgbm9kZSBwb2ludGVyIGFuZCBleGFtaW5lIGl0cyBuYW1lCglmaWVsZC4KCShfY3BwX2luaXRfc3RhY2tzKTogQWxzbyBpbml0aWFsaXplIHRoZSBzcGVjX25vZGVzIHN0cnVjdHVyZS4KCgkqIGNwcGluaXQuYyAoY3BwX3JlYWRlcl9pbml0KTogQ2FsbCBfY3BwX2luaXRfc3RhY2tzIGFmdGVyCglfY3BwX2luaXRfbWFjcm9zLgoJKGNwcF9jbGVhbnVwKTogRnJlZSBwZmlsZS0+c3BlY19ub2Rlcy4gIENhbGwgX2NwcF9jbGVhbnVwXyogaW4KCXJldmVyc2Ugb3JkZXIgZnJvbSB0aGUgY29ycmVzcG9uZGluZyBfY3BwX2luaXRfKiByb3V0aW5lcy4KCgkqIGNwcGV4cC5jIChwYXJzZV9udW1iZXIsIHBhcnNlX2NoYXJjb25zdCwgcGFyc2VfZGVmaW5lZCwKCWxleCk6IENoZWNrIHZhbC5ub2RlLT50eXBlIGluc3RlYWQgb2YgY2FsbGluZyBjcHBfZGVmaW5lZC4KCVVzZSBzcGVjX25vZGVzIGVudHJpZXMgd2hlcmUgYXBwcm9wcmlhdGUuCgoJKiBmaXgtaGVhZGVyLmMsIHNjYW4tZGVjbHMuYzogVXBkYXRlIGZvciBpbnRlcmZhY2UgY2hhbmdlcy4KCjIwMDAtMDctMDggIEdlb2ZmcmV5IEtlYXRpbmcgIDxnZW9mZmtAY3lnbnVzLmNvbT4KCgkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLmMgKHJzNjAwMF9lbWl0X21vdmUpOiBGaXggY29uZGl0aW9ucyBmb3IKCWVtaXR0aW5nIGF1eF90cnVuY2Rmc2YyLgoKMjAwMC0wNy0wMyAgRG9ubiBUZXJyeSAgKGRvbm50ZUBtaWNyb3NvZnQuY29tKQoKCSogY3BwaW5pdC5jIChwcmludF9oZWxwKTogc3BsaXQgb3ZlcmxvbmcgbGluZSBpbnRvIElTTyBDODkKCW1heGltdW0gY2h1bmtzLgoKMjAwMC0wNy0wNyAgWmFjayBXZWluYmVyZyAgPHphY2tAd29sZXJ5LmN1bWIub3JnPgoKCSogY3BwZXhwLmM6IFVwZGF0ZSBhbGwgY29kZSBmb3IgbmV3IGxleGVyIGludGVyZmFjZS4KCShvcF90LCBvcGVyYXRvciBjb2Rlcywgc3RydWN0IHRva2VuLCB0b2tlbnRhYjIsIG9wX3RvX3N0cik6IFJlbW92ZS4KCShzdHJ1Y3Qgc3VmZml4LCB2c3VmXzEsIHZzdWZfMiwgdnN1Zl8zLCBvcF90b19wcmlvKTogTmV3LgoJKiBjcHBsZXguYyAodG9rZW5fbmFtZXMpOiBUcmltIGxlYWRpbmcgQ1BQXyBmcm9tIG5hbWVzOyBtYWtlCgl0aGUgc3RyaW5ncyB1bnNpZ25lZC4KCShfY3BwX3NwZWxsX29wZXJhdG9yKTogTmV3LgoJKGlzX21hY3JvX2Rpc2FibGVkKTogRGlzYWJsZSBhbGwgbWFjcm9zIGlmIHJlc2Nhbm5pbmcKCXByZXByb2Nlc3NlZCB0ZXh0LgoJKF9jcHBfZ2V0X2RpcmVjdGl2ZV90b2tlbik6IFJlbW92ZS4KCgkqIGNwcGluaXQuYzogRG9uJ3Qgc2V0IG5vX21hY3JvX2V4cGFuZC4KCSogY3BwbGliLmMgKHJlYWRfbGluZV9udW1iZXIsIGRvX2xpbmUpOiBDaGVjayBvbmx5IGZvciBFT0YsCglub3QgVlNQQUNFLgoJKiBjcHBoYXNoLmg6IFVwZGF0ZSBwcm90b3R5cGVzLgoJKiBjcHBsaWIuaCAoQ1BQX1ZTUEFDRSk6IFJlbW92ZS4KCShzdHJ1Y3QgY3BwX3JlYWRlcik6IFJlbW92ZSBub19tYWNyb19leHBhbmQuCgoyMDAwLTA3LTA4ICBOZWlsIEJvb3RoICA8TmVpbEJAZWFydGhsaW5nLm5ldD4KCgkqIGNwcGhhc2guYyAoaXNfX3ZhX2FyZ3NfXyk6IE5ldyBmdW5jdGlvbi4KCShjb3VudF9wYXJhbXMpOiBGaXggbGluZSByZXBvcnRlZCBpbiBlcnJvciBtZXNzYWdlcy4gIFVzZQoJaXNfX3ZhX2FyZ3NfXy4gIERvbid0IHJldHVybiAnKScgb24gZXJyb3IuICBGbGFnIEdOVSBzdHlsZQoJcmVzdCBhcmdzIG1hY3JvIGRlZmluaXRpb25zLgoJKHBhcnNlX2RlZmluZSk6IENoZWNrIG1hY3JvIG5hbWUgaXMgbm90IF9fVkFfQVJHU19fLgoJKHNhdmVfZXhwYW5zaW9uKTogQ2hlY2sgaWRlbnRpZmllciBpbiBub24tdmFyYXJncy1tYWNybyBpcwoJbm90IF9fVkFfQVJHU19fLiAgRG9uJ3QgZmxhZyBHTlVfVkFSQVJHUy4KCSogY3BwbGV4LmMgKHBhcnNlX2FyZ3MpOiBBY2NlcHQgbm8gYXJndW1lbnQgaWZmIEdOVV9SRVNUX0FSR1MuCgkobWF5YmVfcGFzdGVfd2l0aF9uZXh0KTogVXNlIHBlci1tYWNybyBHTlVfUkVTVF9BUkdTIHJhdGhlcgoJIHRoYW4gcGVyLXRva2VuIEdOVV9WQVJBUkdTLgoJKiBjcHBsaWIuaCAoR05VX1ZBUkFSR1MpOiBSZW1vdmUuCgkoR05VX1JFU1RfQVJHUyk6IE5ldy4KClNhdCBKdWwgIDggMDE6Mzg6MjUgTUVUIERTVCAyMDAwICBKYW4gSHViaWNrYSAgPGpoQHN1c2UuY3o+CgoJKiBpMzg2Lm1kIChjYWxsX3BvcCwgY2FsbCwgY2FsbF92YWx1ZV9wb3ApOiBEbyBub3Qgc2V0CgljdXJyZW50X2Z1bmN0aW9uX3VzZXNfcGljX29mZnNldF90YWJsZSBmb3IgY2FsbHMgdG8gc3RhdGljCglmdW5jdGlvbnMgb3IgaW5kaXJlY3QgY2FsbHMuCgoyMDAwLTA3LTA3ICBKaW0gV2lsc29uICA8d2lsc29uQGN5Z251cy5jb20+CgoJKiBjb25maWcvaWE2NC9pYTY0LmMgKHJ3c19hY2Nlc3NfcmVnKTogTmV3IGxvY2FsIHdyaXRlX2NvdW50LiAgSWYKCWlzX3ByZWRpY2F0ZV9yZWcsIHRoZW4gdGFrZSBtYXggd3JpdGVfY291bnQgb2YgcmVnaXN0ZXIgcGFpci4KCjIwMDAtMDctMDcgIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIHRyYWRjcHAuYyAobWFpbik6IFJlbmFtZSBsYWJlbCBgaW5jbHVkZScgdG8gYGFkZF9pbmNsdWRlJyB0bwoJYXZvaWQgY29uZmxpY3RzIHdpdGggdmFyaWFibGUgYGluY2x1ZGUnIGluIHRyYWRpdGlvbmFsIEMuCgoyMDAwLTA3LTA3ICBKYWt1YiBKZWxpbmVrICA8amFrdWJAcmVkaGF0LmNvbT4KCgkqIGludGVncmF0ZS5jIChjb3B5X2luc25fbGlzdCk6IFJlbW92ZSBSRUdfTEFCRUwgbm90ZXMuCgoyMDAwLTA3LTA3ICBKYWt1YiBKZWxpbmVrICA8amFrdWJAcmVkaGF0LmNvbT4KCgkqIHNpYmNhbGwuYyAodXNlc19hZGRyZXNzb2YpOiBBZGQgSU5NRU0gYXJndW1lbnQsIGNoZWNrIGZvcgoJY3VycmVudF9mdW5jdGlvbl9pbnRlcm5hbF9hcmdfcG9pbnRlciBvdXRzaWRlIG9mIE1FTSBydHhzIGluIGFkZGl0aW9uCgl0byBBRERSRVNTT0ZzLgoJKHNlcXVlbmNlX3VzZXNfYWRkcmVzc29mKTogVXBkYXRlIGNhbGxlci4KCjIwMDAtMDctMDcgIFphY2sgV2VpbmJlcmcgIDx6YWNrQHdvbGVyeS5jdW1iLm9yZz4KCgkqIHRyYWRjcHAuYyAoaW5pdGlhbGl6ZV9idWlsdGlucyk6IEhvbm9yIE5PX0JVSUxUSU5fU0laRV9UWVBFCglhbmQgZnJpZW5kcy4KCjIwMDAtMDctMDcgIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIHN5c3RlbS5oIChVTklPTl9JTklUX1pFUk8pOiBOZXcgbWFjcm8gZm9yIGluaXRpYWxpemluZyB1bmlvbgoJbWVtYmVycyBpbiBzdHJ1Y3RzLgoKCSogY3BwbGV4LmMgKHBsYWNlbWFya2VyX3Rva2VuLCBlb2ZfdG9rZW4pOiBVc2UgVU5JT05fSU5JVF9aRVJPLgoKMjAwMC0wNy0wNyAgTmVpbCBCb290aCAgPE5laWxCQGVhcnRobGluZy5uZXQ+CgoJKiBjcHAudGV4aTogVXBkYXRlLgoKRnJpIEp1bCAgNyAwNzo0NzozNSAyMDAwICBKZWZmcmV5IEEgTGF3ICAobGF3QGN5Z251cy5jb20pCgoJKiBmaW5hbC5jIChmaW5hbCk6IERldGVjdCBvdXQgb2YgYm91bmRzIGFycmF5IGFjY2VzcyB0bwoJdGhlIGluc25fbGVuZ3RocyBhcnJheS4KCjIwMDAtMDctMDcgIEthenUgSGlyYXRhICA8a2F6dUBoeGkuY29tPgoKCSogZm9sZC1jb25zdC5jIChmb2xkKTogRml4IGEgY29tbWVudCB0eXBvLgoKMjAwMC0wNy0wNyAgTmVpbCBCb290aCAgPE5laWxCQGVhcnRobGluZy5uZXQ+CgoJKiBjcHAudGV4aTogVXBkYXRlIHRvIG5ldyBsZXhlci4KCjIwMDAtMDctMDYgIFphY2sgV2VpbmJlcmcgIDx6YWNrQHdvbGVyeS5jdW1iLm9yZz4KCgkqIHRyYWRjcHAuYzogTmV3IGZpbGUuCgkqIHRyYWRjaWYueTogTmV3IGZpbGUuCgkqIHRyYWRjaWYuYzogTmV3IGdlbmVyYXRlZCBmaWxlLgoKCSogTWFrZWZpbGUuaW46IEFkZCBydWxlcyB0byBidWlsZCB0cmFkY3BwLm8sIHRyYWRjaWYubywKCSQoc3JjZGlyKS90cmFkY2lmLmMuICBBZGQgdHJhZGNwcCB0byBTVEFHRVNUVUZGIGFuZAoJZGVwZW5kZW5jaWVzIG9mIEMuICBJbnN0YWxsIHRyYWRjcHAgZnJvbSBpbnN0YWxsLWNvbW1vbiwgaW4KCSQobGlic3ViZGlyKS4KCjIwMDAtMDctMDYgIFphY2sgV2VpbmJlcmcgIDx6YWNrQHdvbGVyeS5jdW1iLm9yZz4KCgkqIGNwcGluaXQuYzogSW5jbHVkZSBjcHBkZWZhdWx0LmguICBSZWZlciB0bwoJY3BwX0dDQ19JTkNMVURFX0RJUiBhbmQgY3BwX0dDQ19JTkNMVURFX0RJUl9sZW4sIG5vdCBkaXJlY3RseQoJdG8gR0NDX0lOQ0xVREVfRElSIGFuZCBpdHMgbGVuZ3RoLgoJKFNJWkVfVFlQRSwgUFRSRElGRl9UWVBFLCBXQ0hBUl9UWVBFLAoJVVNFUl9MQUJFTF9QUkVGSVgsIFJFR0lTVEVSX1BSRUZJWCwgc3RydWN0IGRlZmF1bHRfaW5jbHVkZSwKCVNUQU5EQVJEX0lOQ0xVREVfRElSLCBTVEFOREFSRF9JTkNMVURFX0NPTVBPTkVOVCk6ICBNb3ZlIHRvCgljcHBkZWZhdWx0LmguCgkoaW5jbHVkZV9kZWZhdWx0c19hcnJheSk6IE1vdmUgdG8gY3BwZGVmYXVsdC5jLgoKCSogY3BwZGVmYXVsdC5oOiBOZXcgZmlsZS4KCSogY3BwZGVmYXVsdC5jOiBOZXcgZmlsZS4KCgkqIE1ha2VmaWxlLmluIChMSUJDUFBfT0JKUyk6IEFkZCBjcHBkZWZhdWx0Lm8uCgkoY3BwaW5pdC5vKTogRG9uJ3QgYXBwbHkgJChQUkVQUk9DRVNTT1JfREVGSU5FUykgdG8gdGhpcyBmaWxlLgoJKGNwcGRlZmF1bHQubyk6IE5ldyBydWxlOyBhcHBseSAkKFBSRVBST0NFU1NPUl9ERUZJTkVTKSB0bwoJdGhpcyBmaWxlLgoKVGh1IEp1bCAgNiAxODozMDozNiAyMDAwICBSaWNoYXJkIEtlbm5lciAgPGtlbm5lckB2bHNpMS51bHRyYS5ueXUuZWR1PgoKCSogcmVsb2FkLmMgKHB1c2hfcmVsb2FkKTogV2hlbiBzZWVpbmcgaWYgY2FuIHJldXNlIGEgcmVnaXN0ZXIsCgljaGVjayBleHRyYSByZWdpc3RlcnMgYWdhaW5zdCB3aWRlc3Qgb2YgSU5NT0RFIGFuZCBPVVRNT0RFLgoKMjAwMC0wNy0wNiAgTmVpbCBCb290aCAgPE5laWxCQGVhcnRobGluZy5uZXQ+CgoJKiBjcHBsaWIuYzogKF9jcHBfcGFyc2VfYXNzZXJ0aW9uKTogIFBlcmZvcm0gaGFzaCBsb29rdXBzCgliYXNlZCBvbiBmdWxsIGxlbmd0aCBvZiBwcmVkaWNhdGUuCgoyMDAwLTA3LTA2ICBIYW5zLVBldGVyIE5pbHNzb24gIDxocEBheGlzLmNvbT4KCgkqIHRpbWV2YXIuYzogW0hBVkVfU1lTX1JFU09VUkNFX0hdOiBJbmNsdWRlIDxzeXMvcmVzb3VyY2UuaD4uCglbTkVFRF9ERUNMQVJBVElPTl9HRVRSVVNBR0VdOiBEZWNsYXJlIGdldHJ1c2FnZS4KCjIwMDAtMDctMDUgIEthenUgSGlyYXRhICA8a2F6dUBoeGkuY29tPgoKCSogaDgzMDAtcHJvdG8uaDogRml4IGZvcm1hdHRpbmcuCgkqIGg4MzAwLmM6IExpa2V3aXNlLgoJKiBoODMwMC5oOiBMaWtld2lzZS4KCjIwMDAtMDctMDUgIEppbSBXaWxzb24gIDx3aWxzb25AY3lnbnVzLmNvbT4KCgkqIGNvbmZpZy9pYTY0L2lhNjQuaCAoSEFSRF9SRUdOT19NT0RFX09LKTogSWYgRlJfUkVHTk9fUCwgZGlzYWxsb3cKCUNDbW9kZS4KCjIwMDAtMDctMDUgIFJvZG5leSBCcm93biAgPFJvZG5leUJyb3duQHBtc2MuY29tPgoKCSogaW52b2tlLnRleGk6IEZpeCBtaW5vciB0eXBvcwoJKiBtZC50ZXhpOiBGaXggbWlub3IgdHlwb3MKCjIwMDAtMDctMDUgIFphY2sgV2VpbmJlcmcgIDx6YWNrQHdvbGVyeS5jdW1iLm9yZz4KCgkqIGNwcGxpYi5jIChfY3BwX3BhcnNlX2Fzc2VydGlvbik6IEZpeCBidWZmZXIgb3ZlcnJ1bi4KCjIwMDAtMDctMDQgIFphY2sgV2VpbmJlcmcgIDx6YWNrQHdvbGVyeS5jdW1iLm9yZz4KCgkqIGNwcGxleC5jOiBEb24ndCBpbmNsdWRlIHN5cy9tbWFuLmguCgkoY3BwX3B1c2hfYnVmZmVyLCBjcHBfcG9wX2J1ZmZlcik6IE1vdmVkIHRvIGNwcGxpYi5jLgoKCSogY3BwbGliLmM6IEluY2x1ZGUgc3lzL21tYW4uaCBhbmQgb2JzdGFjay5oLgoJKGNwcF9wdXNoX2J1ZmZlcik6IE1vdmVkIGZyb20gY3BwbGV4LmM7IGFsbG9jYXRlIGJ1ZmZlcnMgb24gYW4KCW9ic3RhY2suCgkoY3BwX3BvcF9idWZmZXIpOiBNb3ZlZCBmcm9tIGNwcGxleC5jOyBmcmVlIGJ1ZmZlcnMgZnJvbSBhbiBvYnN0YWNrLgoJKF9jcHBfdW53aW5kX2lmX3N0YWNrKTogTm93IHN0YXRpYywgdW53aW5kX2lmX3N0YWNrLiAgRG9uJ3QKCWJvdGhlciBmcmVlaW5nIGlmIHN0YWNrIGVudHJpZXMgKHRoZXkgd2lsbCBiZSBmcmVlZCB3aXRoIHRoZWlyIGJ1ZmZlcikuCgkoZG9fZW5kaWYpOiBGcmVlIGlmIHN0YWNrIGVudHJpZXMgZnJvbSB0aGUgYnVmZmVyIG9ic3RhY2suCgkocHVzaF9jb25kaXRpb25hbCk6IEFsbG9jYXRlIGlmIHN0YWNrIGVudHJpZXMgZnJvbSB0aGUgYnVmZmVyIG9ic3RhY2suCgoJKGZpbmRfYW5zd2VyKTogUmVuYW1lIHRvIF9jcHBfZmluZF9hbnN3ZXIuCgkoZG9fYXNzZXJ0LCBkb191bmFzc2VydCk6IFVwZGF0ZS4KCgkqIGNwcGhhc2guaDogVXBkYXRlIHByb3RvdHlwZXMuCgkoeG9ibmV3KTogTmV3IGNvbnZlbmllbmNlIG1hY3JvLgoJKiBjcHBsaWIuaCAoc3RydWN0IGNwcF9yZWFkZXIpOiBBZGQgaGFzaF9vYiBhbmQgYnVmZmVyX29iIGZpZWxkcy4KCVVwZGF0ZSBjb21tZW50cy4KCShzdHJ1Y3QgY3BwX2hhc2hub2RlKTogUmVtb3ZlIGRpc2FibGVkIGZpZWxkLgoKCSogY3BwaW5pdC5jOiBEb24ndCBpbmNsdWRlIGhhc2h0YWIuaCBvciBzcGxheS10cmVlLmguCgkocmVwb3J0X21pc3NpbmdfZ3VhcmQpOiBNb3ZlZCB0byBjcHBmaWxlcy5jLgoJKGNwcF9yZWFkZXJfaW5pdCk6IENhbGwgY3BwX2luaXRfc3RhY2tzLCBjcHBfaW5pdF9tYWNyb3MsCgljcHBfaW5pdF9pbmNsdWRlcy4KCShjcHBfY2xlYW51cCk6IENhbGwgY3BwX2NsZWFudXBfc3RhY2tzLCBjcHBfY2xlYW51cF9tYWNyb3MsCgljcHBfY2xlYW51cF9pbmNsdWRlcy4gIERvbid0IGRlc3Ryb3kgaGFzaHRhYiBvcgoJYWxsX2luY2x1ZGVfZmlsZXMgaGVyZS4KCShjcHBfZmluaXNoKTogVXNlIF9jcHBfcmVwb3J0X21pc3NpbmdfZ3VhcmRzLgoKCSogY3BwZmlsZXMuYyAocmVwb3J0X21pc3NpbmdfZ3VhcmQpOiBNb3ZlZCBmcm9tIGNwcGluaXQuYy4KCShfY3BwX2luaXRfaW5jbHVkZV90YWJsZSk6IFJlbmFtZSBfY3BwX2luaXRfaW5jbHVkZXMuCgkoX2NwcF9jbGVhbnVwX2luY2x1ZGVzLCBfY3BwX3JlcG9ydF9taXNzaW5nX2d1YXJkcyk6IE5ldy4KCgkqIGNwcGV4cC5jIChwYXJzZV9hc3NlcnRpb24pOiBVcGRhdGUgZm9yIG5ldyBuYW1lIG9mCglmaW5kX2Fuc3dlci4KCgkqIE1ha2VmaWxlLmluIChjcHBsaWIubywgY3BwaGFzaC5vLCBjcHBpbml0Lm8pOiBVcGRhdGUgZGVwcy4KCjIwMDAtMDctMDQgIFphY2sgV2VpbmJlcmcgIDx6YWNrQHdvbGVyeS5jdW1iLm9yZz4KCgkqIGNwcGxpYi5jIChkb19pZGVudCk6IHMvVlNQQUNFL0VPRi8KCjIwMDAtMDctMDUgIE5laWwgQm9vdGggIDxOZWlsQkBlYXJ0aGxpbmcubmV0PgoKCSogY3BwbGV4LmM6IEZpeCB0cmlncmFwaCByZXBsYWNlbWVudCB3aXRoaW4gc3RyaW5ncy4KCjIwMDAtMDctMDQgIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIHJzNjAwMC9haXguaCAoQVNNX0dFTkVSQVRFX0lOVEVSTkFMX0xBQkVMKTogRml4IGZvcm1hdCBzcGVjaWZpZXIuCgoJKiB4Y29mZm91dC5jIChhc3NpZ25fdHlwZV9udW1iZXIpOiBDb25zdGlmeS4KCSh4Y29mZm91dF9zb3VyY2VfZmlsZSk6IEFkZCBzdGF0aWMgcHJvdG90eXBlLiAgRG9uJ3QgbmVlZGxlc3NseQoJY2FzdCBhd2F5IGNvbnN0LW5lc3MuCgoyMDAwLTA3LTA0ICBKYXNvbiBNZXJyaWxsICA8amFzb25AcmVkaGF0LmNvbT4KCgkqIGZyYW1lLmggKGZyYW1lX3N0YXRlKTogTW92ZSBiYXNlX29mZnNldCB0byBlbmQuCgpNb24gSnVsICAzIDIxOjMxOjQzIDIwMDAgIENsaW50b24gUG9wZXR6ICA8Y3BvcGV0ekBjeWdudXMuY29tPgoKCSogY2FsbHMuYyAoZW1pdF9saWJyYXJ5X2NhbGxfdmFsdWVfMSk6IFJldmVydCBwcmV2aW91cyBjaGFuZ2UuCgoyMDAwLTA3LTAzICBaYWNrIFdlaW5iZXJnICA8emFja0B3b2xlcnkuY3VtYi5vcmc+CgoJKiBmaXgtaGVhZGVyLmMgKHN0cnVjdCBwYXJ0aWFsX3Byb3RvKTogUmVtb3ZlIHVubmVjZXNzYXJ5IGZpZWxkcy4KCShyZWNvZ25pemVkX2V4dGVybiwgcmVjb2duaXplZF9mdW5jdGlvbiwgcmVhZF9zY2FuX2ZpbGUpOgoJVXBkYXRlIGZvciBuZXcgc2NoZW1lLgoJKGNoZWNrX3Byb3RlY3Rpb24pOiBJdCdzIHN0aWxsIGEgbXVsdGlwbGUgaW5jbHVkZSBndWFyZCBldmVuCglpZiBpdCBkb2Vzbid0IGFsd2F5cyB0cmlnZ2VyLgoJKiBzY2FuLWRlY2xzLmMgKHNraXBfdG9fY2xvc2luZ19icmFjZSwgc2Nhbl9kZWNscyk6IFVwZGF0ZSBmb3IKCW5ldyBzY2hlbWUuCgkqIHNjYW4uaDogRGVjbGFyZSBzdHJ1Y3QgY3BwX3Rva2VuLiAgVXBkYXRlIHByb3RvdHlwZXMuCgoyMDAwLTA3LTAzICBOZWlsIEJvb3RoICA8bmVpbGJAZWFydGhsaW5nLm5ldD4KCSAgICBaYWNrIFdlaW5iZXJnICA8emFja0B3b2xlcnkuY3VtYi5vcmc+CgoJQ29tcGxldGUgb3ZlcmhhdWwgb2YgdGhlIGxleGVyIGFuZCBtYWNybyBleHBhbmRlci4KCgkqIGNwcGhhc2guYyAob2JqZWN0X2RlZm4sIGZ1bmN0X2RlZm4sIHB1c2hfbWFjcm9fZXhwYW5zaW9uLAoJYXJnLCBhcmdsaXN0LCBhcmdkYXRhLCByZWZsaXN0LCBjb2xsZWN0X29iamxpa2VfZXhwYW5zaW9uLAoJY29sbGVjdF9mdW5saWtlX2V4cGFuc2lvbiwgY29sbGVjdF9wYXJhbXMsCgl3YXJuX3RyYWRfc3RyaW5naWZ5LCB0cmFkX3N0cmluZ2lmeSwgZHVwbGljYXRlX2FyZ19wLCBhZGRfcGF0LAoJdW5zYWZlX2NoYXJzLCBtYWNhcmcsIGNvbXBhcmVfZGVmcywgc3BlY2lhbF9zeW1ib2wsCglzY2FuX2FyZ3VtZW50cywgc3RyaW5naWZ5LCBmdW5saWtlX21hY3JvZXhwYW5kLAoJX2NwcF9xdW90ZV9zdHJpbmcsIG1vbnRobmFtZXMpOiBEZWxldGUuCgkoY3BwX2xvb2t1cCwgX2NwcF9mcmVlX2RlZmluaXRpb24sIGR1bXBfZnVubGlrZV9tYWNybywKCV9jcHBfY3JlYXRlX2RlZmluaXRpb24sIF9jcHBfZHVtcF9kZWZpbml0aW9uLAoJZHVtcF9oYXNoX2hlbHBlcik6IEFkanVzdC4KCShmaW5kX3BhcmFtLCBjb3VudF9wYXJhbXMsIHBhcnNlX2RlZmluZSwgdmFyX2FyZ3Nfc3RyLAoJY2hlY2tfbWFjcm9fcmVkZWZpbml0aW9uLCBzYXZlX2V4cGFuc2lvbik6IE5ldy4KCgkqIGNwcGxleC5jIChza2lwX2Jsb2NrX2NvbW1lbnQsIHNraXBfbGluZV9jb21tZW50LCBwYXJzZV9uYW1lLAoJcGFyc2Vfc3RyaW5nLCBvdXRwdXRfbGluZV9jb21tYW5kLCB0cmlncmFwaF9yZXBsYWNlLAoJbGV4X2xpbmUsIGNwcF9wdXNoX2J1ZmZlciwgY3BwX3BvcF9idWZmZXIsIGNwcF9vdXRwdXRfdG9rZW5zLAoJY3BwX3NjYW5fYnVmZmVyX25vb3V0cHV0LCBjcHBfc2Nhbl9idWZmZXIsIGNwcF9mcmVlX3Rva2xpc3QsCgljcHBfaWRjbXAsIF9jcHBfZ2V0X2RpcmVjdGl2ZV90b2tlbiwgX2NwcF9pbml0X2lucHV0X2J1ZmZlciwKCV9jcHBfc2tpcF9yZXN0X29mX2xpbmUpOiBNb2RpZnkuCgoJKG1heWJlX21hY3JvZXhwYW5kLCBza2lwX2NvbW1lbnQsIGNvcHlfY29tbWVudCwgc2tpcF9zdHJpbmcsCglmaW5kX3Bvc2l0aW9uLCBudWxsX3dhcm5pbmcsIGJ1bXBfY29sdW1uLCBleHBhbmRfbmFtZV9zcGFjZSwKCXBlZGFudGljX3doaXRlc3BhY2UsIF9jcHBfb3V0cHV0X2xpc3QsIF9jcHBfc2xpY2VfdG9rbGlzdCwKCV9jcHBfc3F1ZWV6ZV90b2tsaXN0LCBfY3BwX3NjYW5fdW50aWwsIF9jcHBfc2tpcF9oc3BhY2UsCglfY3BwX3BhcnNlX25hbWUsIF9jcHBfbGV4X3Rva2VuLCBjcHBfZ2V0X25vbl9zcGFjZV90b2tlbiwKCV9jcHBfcHJlc2Nhbik6IERlbGV0ZS4KCgkoZHVtcF9wYXJhbV9zcGVsbGluZywgcHJvY2Vzc19kaXJlY3RpdmUsIGxleF9uZXh0LAoJaXNfbWFjcm9fZGlzYWJsZWQsIHN0cmluZ2lmeV9hcmcsIGV4cGFuZF9jb250ZXh0X3N0YWNrLAoJb3V0cHV0X3Rva2VuLCBtYWtlX3N0cmluZ190b2tlbiwgYWxsb2NfbnVtYmVyX3Rva2VuLAoJc3BlY2lhbF9zeW1ib2wsIGR1cGxpY2F0ZV90b2tlbiwgbWF5YmVfcGFzdGVfd2l0aF9uZXh0LAoJY2FuX3Bhc3RlLCBwcmV2ZW50X21hY3JvX2V4cGFuc2lvbiwgcmVzdG9yZV9tYWNyb19leHBhbnNpb24sCglnZXRfdGVtcF90b2tlbiwgcmVsZWFzZV90ZW1wX3Rva2VucywgcXVvdGVfc3RyaW5nLAoJdG9rZW5fbmFtZXMsIHRva2VuX3NwZWxsaW5ncywgX2NwcF9leHBhbmRfbmFtZV9zcGFjZSwKCV9jcHBfZ2x1ZV9oZWFkZXJfbmFtZSwgX2NwcF9yZXNlcnZlX25hbWVfc3BhY2UsCglkaWdyYXBoX3NwZWxsaW5ncywgdHJpZ3JhcGhfb2ssIHNraXBfd2hpdGVzcGFjZSwgc2F2ZV9jb21tZW50LAoJcGxhY2VtYXJrZXJfdG9rZW4sIGVvZl90b2tlbiwgY3BwX2NvbnRleHQsIG1hY3JvX2FyZ3MsCglnZXRfcmF3X3Rva2VuLCBwYXJzZV9hcmcsIHBhcnNlX2FyZ3MsIHNhdmVfdG9rZW4sCglwdXNoX2FyZ19jb250ZXh0LCBwdXNoX21hY3JvX2NvbnRleHQsIHBvcF9jb250ZXh0LAoJZG9fcG9wX2NvbnRleHQsIGZyZWVfbWFjcm9fYXJncywgX2NwcF9nZXRfbGluZSwKCV9jcHBfcnVuX2RpcmVjdGl2ZSk6IE5ldy4KCgkqIGNwcGxpYi5jICh2YWxpZGF0ZV9lbHNlLCBwYXJzZV9pbmNsdWRlLCBwdXNoX2NvbmRpdGlvbmFsLAoJcGFzc190aHJ1X2RpcmVjdGl2ZSwgcmVhZF9saW5lX251bWJlciwgcGFyc2VfaWZkZWYsCglkZXRlY3RfaWZfbm90X2RlZmluZWQsIF9jcHBfY2hlY2tfZGlyZWN0aXZlLCBkb19kZWZpbmUsCglkb191bmRlZiwgZG9faW5jbHVkZSwgZG9faW1wb3J0LCBkb19pbmNsdWRlX25leHQsIGRvX2Vycm9yLAoJZG9fd2FybmluZywgZG9faWRlbnQsIGRvX3ByYWdtYSwgcHJhZ21hX2Rpc3BhdGNoLCBnY2NfcHJhZ21hcywKCXRvcF9wcmFnbWFzLCBkb19wcmFnbWFfZ2NjLCBkb19wcmFnbWFfaW1wbGVtZW50YXRpb24sCglkb19wcmFnbWFfcG9pc29uLCBkb19wcmFnbWFfc3lzdGVtX2hlYWRlciwKCWRvX3ByYWdtYV9kZXBlbmRlbmN5LCBkb19zY2NzLCBkb19pZmRlZiwgZG9faWZuZGVmLCBkb19lbHNlLAoJZGxfZWxpZiwgZG9fZW5kaWYsIF9jcHBfdW53aW5kX2lmX3N0YWNrLCBkb19hc3NlcnQsCglkb191bmFzc2VydCwgY3BwX2RlZmluZSwgY3BwX3VuZGVmLCBjcHBfYXNzZXJ0LCBjcHBfdW5hc3NlcnQsCgljcHBfZGVmaW5lZCk6IFVwZGF0ZSBmb3IgbmV3IHNjaGVtZS4KCShzdHJ0b3VsX2Zvcl9saW5lLCBnZXRfZGVmaW5lX25vZGUsIGR1bXBfbWFjcm9fbmFtZSwKCV9jcHBfY2hlY2tfbGluZW1hcmtlciwgX2NwcF9wYXJzZV9hc3NlcnRpb24pOiBOZXcuCgkoX2NwcF9oYW5kbGVfZGlyZWN0aXZlLCBkb19wcmFnbWFfZGVmYXVsdCk6IERlbGV0ZS4KCgkqIGNwcGhhc2guaCAoc3RydWN0IHByZWRpY2F0ZSk6IE5vdyBzdHJ1Y3QgYW5zd2VyLgoJKGVudW0gc3BlbGxfdHlwZSwgc3RydWN0IHRva2VuX3NwZWxsaW5nLCBzdHJ1Y3QgZGlyZWN0aXZlLAoJZGlyZWN0aXZlX2hhbmRsZXIpOiBOZXcuCglVcGRhdGUgcHJvdG90eXBlcy4gIFJlbW92ZSB1bnVzZWQgbWFjcm9zLgoJKiBjcHBsaWIuaDogVXBkYXRlIHByb3RvdHlwZXMuICBSZW1vdmUgdW51c2VkIG1hY3JvcywKCXN0cnVjdHVyZSBkZWZpbml0aW9ucywgYW5kIGZpZWxkcy4KCgkqIGNwcGVycm9yLmMgKHByaW50X2NvbnRhaW5pbmdfZmlsZXMsIHZfbWVzc2FnZSk6IEFkanVzdC4KCSogY3BwZXhwLmMgKHBhcnNlX2Fzc2VydGlvbiwgbGV4LCBwYXJzZV9lc2NhcGUsCglfY3BwX3BhcnNlX2V4cHIpOiBBZGp1c3QuCgkqIGNwcGZpbGVzLmMgKG9wZW5faW5jbHVkZV9maWxlLCBfY3BwX2V4ZWN1dGVfaW5jbHVkZSwKCV9jcHBfY29tcGFyZV9maWxlX2RhdGUsIGNwcF9yZWFkX2ZpbGUsIHJlYWRfaW5jbHVkZV9maWxlKToKCUFkanVzdC4KCSogY3BwaW5pdC5jIChkdW1wX3NwZWNpYWxfdG9fYnVmZmVyKTogRGVsZXRlLgoJKGFwcGVuZF9pbmNsdWRlX2NoYWluLCBtZXJnZV9pbmNsdWRlX2NoYWlucywgY3BwX3JlYWRlcl9pbml0LAoJY3BwX2NsZWFudXAsIGluaXRpYWxpemVfYnVpbHRpbnMsIGJ1aWx0aW5fYXJyYXksIGNwcF9zdGFydF9yZWFkLAoJY3BwX2ZpbmlzaCwgaGFuZGxlX29wdGlvbiwgcHJpbnRfaGVscCk6IEFkanVzdC4KCSogY3BwbWFpbi5jIChtYWluKTogQWRqdXN0LgoKMjAwMC0wNy0wMyAgWmFjayBXZWluYmVyZyAgPHphY2tAd29sZXJ5LmN1bWIub3JnPgoKCSogY3Bwc3BlYy5jIChsYW5nX3NwZWNpZmljX2RyaXZlcik6IFVzZSBkb3VibGUgcXVvdGVzIGluIGVycm9yCgltZXNzYWdlLgoKTW9uIEp1bCAgMyAxNjo1Mzo0MyAyMDAwICBDbGludG9uIFBvcGV0eiAgPGNwb3BldHpAY3lnbnVzLmNvbT4KCgkqIGNhbGxzLmMgKGVtaXRfbGlicmFyeV9jYWxsX3ZhbHVlXzEpOiBVc2UgdmFscmVnIGluc3RlYWQKCW9mIGhhcmRfbGliY2FsbF92YWx1ZS4KCjIwMDAtMDctMDMgIEdlb2ZmIEtlYXRpbmcgIDxnZW9mZmtAY3lnbnVzLmNvbT4KCgkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLmMgKHJzNjAwMF9lbWl0X21vdmUpOiBOZXcgZnVuY3Rpb24uCgkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLXByb3RvLmg6IFByb3RvdHlwZSByczYwMDBfZW1pdF9tb3ZlLgoJKiBjb25maWcvcnM2MDAwL3JzNjAwMC5tZCAobW92c2kpOiBVc2UgcnM2MDAwX2VtaXRfbW92ZS4KCShtb3ZoaSk6IExpa2V3aXNlLgoJKG1vdnFpKTogTGlrZXdpc2UuCgkobW92ZGYpOiBMaWtld2lzZS4KCShtb3ZzZik6IExpa2V3aXNlLgoJKG1vdmRpKTogTGlrZXdpc2UuCgkobW92dGkpOiBMaWtld2lzZS4KCgkqIGV4cG1lZC5jIChleHBhbmRfbXVsdF9oaWdocGFydCk6IFVzZSBvcDEgaW5zdGVhZCBvZiB3aWRlX29wMSB3aGVuCgltb2RlIGluc3RlYWQgb2Ygd2lkZXJfbW9kZSBpcyBiZWluZyB1c2VkLgoKMjAwMC0wNy0wMyAgSmFrdWIgSmVsaW5layAgPGpha3ViQHJlZGhhdC5jb20+CgoJKiBjb25maWcvaTM4Ni9pMzg2Lm1kIChtb3ZzdHJpY3RxaV94b3IpOiBVc2UgJ3EnIGNvbnN0cmFpbnQgaW5zdGVhZAoJb2YgJ3InLiBVc2UgcV9yZWdzX29wZXJhbmQuCgkoYW5kc2lfMSsyKTogVXNlIHFfcmVnc19vcGVyYW5kLgoKMjAwMC0wNy0wMyAgSmFrdWIgSmVsaW5layAgPGpha3ViQHJlZGhhdC5jb20+CgoJKiBidWlsdGlucy5jIChnZXRfbWVtb3J5X3J0eCk6IEFsd2F5cyBwdXQgaW50byBhbGlhcyBzZXQgMC4KCjIwMDAtMDctMDMgIE5pY2sgQ2xpZnRvbiAgPG5pY2tjQGN5Z251cy5jb20+CgoJKiBjb25maWcvYXJtL2FybS5tZDogRml4IHBvc3QgaW5jcmVtZW50IGFuZCBwcmUgaW5jcmVtZW50CglwZWVwaG9sZXMgc28gdGhhdCB0aGV5IGRvIG5vdCBnZW5lcmF0ZSBVTlBSRURJQ0FUQkxFIG9wY29kZXMuCgkoaWUgb25lcyB3aGVyZSB0aGUgaW5jcmVtZW50IGNsb2JiZXJzIHRoZSBzb3VyY2UvZGVzdGluYXRpb24pLgoKMjAwMC0wNy0wMSAgTWFyZWsgTWljaGFsa2lld2ljeiAgPG1hcmVrbUBsaW51eC5vcmcucGw+CgoJKiBjb25maWcvYXZyL2F2ci5jIChvdXRfYWRqX2ZyYW1lX3B0cik6IE1ha2UgImZyYW1lIHBvaW50ZXIKCWNoYW5nZSB0b28gYmlnIGZvciAtbXRpbnktc3RhY2siIGEgd2FybmluZywgaWYgbGFyZ2VyIHRoYW4gNjMuCgkob3V0X3NldF9zdGFja19wdHIpOiBDaGFuZ2UgdGhlIGxvZ2ljIHNvIC1tbm8taW50ZXJydXB0cyBpcwoJYWx3YXlzIHNhZmUgdG8gdXNlIG9uIHBvc3NpYmxlIGZ1dHVyZSBkZXZpY2VzLgoJKGZ1bmN0aW9uX3Byb2xvZ3VlKTogV3JpdGUgU1BIIGJlZm9yZSBTUEwsIGZvciBjb25zaXN0ZW5jeS4KCUlmIGludGVycnVwdF9mdW5jX3AgdHJ1ZSwgd2Uga25vdyB3ZSBoYXZlIGVuYWJsZWQgaW50ZXJydXB0cy4KCShhdnJfbnVtX2FyZ19yZWdzKTogTmV3IGZ1bmN0aW9uLiAgUm91bmQgdXAgdG8gZXZlbiBudW1iZXIgb2YKCWJ5dGVzIGlmIG5vIC1tcGFjay1hcmdzIG9yIGlmIGNhbGxpbmcgYSBsaWJnY2MgZnVuY3Rpb24uCgkoZnVuY3Rpb25fYXJnLCBmdW5jdGlvbl9hcmdfYWR2YW5jZSk6IFVzZSBpdC4KCShvdXRwdXRfbW92c2lzZiwgYXNobHNpM19vdXQsIGFzaHJzaTNfb3V0LCBsc2hyc2kzX291dCk6CglPdXRwdXQgIm1vdnciIGlmIGF2YWlsYWJsZS4KCShvdXRfdHN0aGksIG91dF90c3RzaSwgYXNobHFpM19vdXQsIGxzaHJxaTNfb3V0KTogQ2hhbmdlIHVzZXMKCW9mIFRFU1RfSEFSRF9SRUdfQ0xBU1MgbWFjcm8gdG8gdGVzdF9oYXJkX3JlZ19jbGFzcyBmdW5jdGlvbi4KCShhc21fb3V0cHV0X3NlY3Rpb25fbmFtZSk6IEFkZCBibGFua3MgZm9yIGNvbnNpc3RlbnQgb3V0cHV0LgoJKGVuY29kZV9zZWN0aW9uX2luZm8pOiBTZXQgVFJFRV9SRUFET05MWSBmb3IgcHJvZ21lbSBkYXRhIHRvCglhdm9pZCBnYXMgd2FybmluZ3MgYWJvdXQgY2hhbmdlZCBzZWN0aW9uIGF0dHJpYnV0ZXMuCgkoYXZyX2hhcmRfcmVnbm9fbW9kZV9vayk6IEZvcmNlIG5vbi1RSW1vZGUgZGF0YSB0byBzdGFydCBpbgoJZXZlbiBudW1iZXJlZCByZWdpc3RlcnMgb24gZGV2aWNlcyB3aXRoICJtb3Z3Ii4KCSogY29uZmlnL2F2ci9hdnIuaCAoTUFTS18qKTogRGVmaW5lIGJpdHMgZm9yIHRhcmdldF9mbGFncy4KCShUQVJHRVRfU1dJVENIRVMpOiBNYXJrIGhlbHAgc3RyaW5ncyBmb3IgdHJhbnNsYXRpb24uCglBZGQgbmV3IC1tcGFjay1hcmdzIGFuZCAtbWVuaGFuY2VkIHN3aXRjaGVzLgoJKFRBUkdFVF9PUFRJT05TKTogTWFyayBoZWxwIHN0cmluZ3MgZm9yIHRyYW5zbGF0aW9uLgoJKHByb2dtZW1fc2VjdGlvbik6IEFkZCBzZWN0aW9uIGF0dHJpYnV0ZXMuCgkqIGNvbmZpZy9hdnIvYXZyLm1kICgqbW92aGksIGNhbGxfaW5zbiwgY2FsbF92YWx1ZV9pbnNuKToKCU91dHB1dCAibW92dyIgaWYgYXZhaWxhYmxlLgoJKG11bHFpMywgbXVscWloaTMsIHVtdWxxaWhpMywgbXVsaGkzLCAqdGFibGVqdW1wX2VuaCk6CglOZXcgcGF0dGVybnMuCgkqIGNvbmZpZy9hdnIvbGliZ2NjLlMgKF9tdWxxaTMsIF9kaXZxaTMpOiBVcGRhdGUgdG8gdGhlIG5ldwoJY2FsbCBjb252ZW50aW9uIChhcmd1bWVudHMgYWxpZ25lZCBvbiBldmVuIHJlZ2lzdGVycykuCgkoX2NsZWFudXAsIF9leGl0KTogTWFrZSB3ZWFrIHN5bWJvbHMgbGliYyBjYW4gb3ZlcnJpZGUuCgoyMDAwLTA3LTAzICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBmcC1iaXQuaDogTmV3IGZpbGUuCgoJKiBmcC1iaXQuYzogTW92ZSBjb21tb24gY29kZSwgcHJvdG90eXBlcywgZXRjIGludG8gZnAtYml0LmguCglDb21tZW50ICNlbmRpZiBzdGF0ZW1lbnRzLgoJKF9fdGhlbmFuX3NmLCBfX3RoZW5hbl9kZik6IEFkZCBtaXNzaW5nIGJyYWNlcyBhcm91bmQgaW5pdGlhbGl6ZXIuCgpNb24gSnVsICAzIDAwOjMyOjQ3IDIwMDAgIEplZmZyZXkgQSBMYXcgIChsYXdAY3lnbnVzLmNvbSkKCgkqIGdjc2UuYyAoY29tcHV0ZV9wcmVfZGF0YSk6IENvbXB1dGUgYWVfa2lsbCB1c2luZyBvdGhlciBsb2NhbAoJcHJvcGVydGllcyBpbnN0ZWFkIG9mIGNhbGxpbmcgY29tcHV0ZV9hZV9raWxsLgoKCSogYWxpYXMuYyAoaW5pdF9hbGlhc19hbmFseXNpcyk6IERvIG5vdCBjYWxsCglwcm9sb2d1ZV9lcGlsb2d1ZV9jb250YWlucyB1bnRpbCBhZnRlciByZWxvYWQgaGFzIGNvbXBsZXRlZC4KCjIwMDAtMDctMDIgIEJlbmphbWluIENoZWxmICA8Y2hlbGZAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGMtY29tbW9uLmggKGdlbnJ0bF9iZWdpbl9jb21wb3VuZF9zdG10KTogUmVtb3ZlIGRlY2xhcmF0aW9uLgoJKGdlbnJ0bF9maW5pc2hfY29tcG91bmRfc3RtdCk6IExpa2V3aXNlLgoJKGdlbnJ0bF9jb21wb3VuZF9zdG10KTogQ2hhbmdlIHRvIHJldHVybiB2b2lkLgoKCSogYy1zZW1hbnRpY3MuYyAoZ2VucnRsX2JlZ2luX2NvbXBvdW5kX3N0bXQpOiBSZW1vdmUgZnVuY3Rpb24gYW5kCgltb3ZlIGNvZGUgZnJvbSBoZXJlIHRvIC4uLgoJKGdlbnJ0bF9jb21wb3VuZF9zdG10KTogLi4uIGhlcmUuCgkoZ2VucnRsX2ZpbmlzaF9jb21wb3VuZF9zdG10KTogUmVtb3ZlLgoJKGV4cGFuZF9zdG10KTogQWRkIGNvbW1lbnQuCgoyMDAwLTA3LTAyICBaYWNrIFdlaW5iZXJnICA8emFja0B3b2xlcnkuY3VtYi5vcmc+CgoJKiBjLXR5cGVjay5jIChidWlsZF9pbmRpcmVjdF9yZWYpOiBVc2UgQ09NUExFVEVfT1JfVk9JRF9UWVBFX1AKCWFuZCBWT0lEX1RZUEVfUC4KCjIwMDAtMDctMDIgIEpha3ViIEplbGluZWsgIDxqYWt1YkByZWRoYXQuY29tPgoKCSogY3BwbGliLmggKHN0cnVjdCBjcHBfcmVhZGVyKTogTmV3IGZpZWxkIGluY2x1ZGVfZGVwdGguCgkoc3RydWN0IGNwcF9wcmludGVyKTogUmVuYW1lIGxhc3RfYnNkIHRvIGxhc3RfaWQuCgkqIGNwcGZpbGVzLmMgKHJlYWRfaW5jbHVkZV9maWxlKTogQnVtcCBpbmNsdWRlX2RlcHRoLgoJKiBjcHBsZXguYyAoY3BwX3BvcF9idWZmZXIpOiBEZWNyZW1lbnQgaW5jbHVkZV9kZXB0aC4KCShvdXRwdXRfbGluZV9jb21tYW5kKTogT3V0cHV0IGNvcnJlY3QgI2xpbmUgaWYgYSBoZWFkZXIKCWlzIGluY2x1ZGluZyBpdHNlbGYgYW5kIGlzIG5vdCBwcm90ZWN0ZWQgYWdhaW5zdCBtdWx0aXBsZSBpbmNsdXNpb24uCglVc2UgaW5jbHVkZV9kZXB0aCBpbnN0ZWFkIG9mIGJ1ZmZlcl9zdGFja19kZXB0aCwgbGFzdF9pZCBpbnN0ZWFkIG9mCglsYXN0X2JzZC4KCSogY3BwaW5pdC5jIChjcHBfc3RhcnRfcmVhZCk6IEluaXRpYWxpemUgbGFzdF9pZCBpbnN0ZWFkIG9mCglsYXN0X2JzZC4KCjIwMDAtMDctMDEgIEJlbmphbWluIENoZWxmICA8Y2hlbGZAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIE1ha2VmaWxlLmluIChDX0FORF9PQkpDX09CSlMpOiBBZGRlZCBjLXNlbWFudGljcy5vLgoJKGMtc2VtYW50aWNzLm8pOiBOZXcgdGFyZ2V0LgoKCSogYy1jb21tb24uaCAoVFJFRV9MQU5HX0ZMQUdfPyk6IEFkZGVkIGRvY3VtZW50YXRpb24uCgkoZ2VucnRsX2RvX3B1c2hsZXZlbCk6IE1vdmVkIGZyb20gY3AvY3AtdHJlZS5oLgoJKGdlbnJ0bF9jbGVhcl9vdXRfYmxvY2spOiBMaWtld2lzZS4KCShnZW5ydGxfZ290b19zdG10KTogTGlrZXdpc2UuCgkoZ2VucnRsX2V4cHJfc3RtdCk6IExpa2V3aXNlLgoJKGdlbnJ0bF9kZWNsX3N0bXQpOiBMaWtld2lzZS4KCShnZW5ydGxfaWZfc3RtdCk6IExpa2V3aXNlLgoJKGdlbnJ0bF93aGlsZV9zdG10KTogTGlrZXdpc2UuCgkoZ2VucnRsX2RvX3N0bXQpOiBMaWtld2lzZS4KCShnZW5ydGxfcmV0dXJuX3N0bXQpOiBMaWtld2lzZS4KCShnZW5ydGxfZm9yX3N0bXQpOiBMaWtld2lzZS4KCShnZW5ydGxfYnJlYWtfc3RtdCk6IExpa2V3aXNlLgoJKGdlbnJ0bF9jb250aW51ZV9zdG10KTogTGlrZXdpc2UuCgkoZ2VucnRsX3Njb3BlX3N0bXQpOiBMaWtld2lzZS4KCShnZW5ydGxfc3dpdGNoX3N0bXQpOiBMaWtld2lzZS4KCShnZW5ydGxfY2FzZV9sYWJlbCk6IExpa2V3aXNlLgoJKGdlbnJ0bF9iZWdpbl9jb21wb3VuZF9zdG10KTogTGlrZXdpc2UuCgkoZ2VybnRsX2ZpbmlzaF9jb21wb3VuZF9zdG10KTogTGlrZXdpc2UuCgkoZ2VucnRsX2NvbXBvdW5kX3N0bXQpOiBMaWtld2lzZS4KCShnZW5ydGxfYXNtX3N0bXQpOiBMaWtld2lzZS4KCShnZW5ydGxfZGVjbF9jbGVhbnVwKTogTGlrZXdpc2UuCgkoREVDTF9BTk9OX1VOSU9OX0VMRU1TKTogTGlrZXdpc2UuCgkoZW1pdF9sb2NhbF92YXIpOiBMaWtld2lzZS4KCShtYWtlX3J0bF9mb3JfbG9jYWxfc3RhdGljKTogTGlrZXdpc2UuCgkoZXhwYW5kX2NvbmQpOiBMaWtld2lzZS4KCShleHBhbmRfc3RtdCk6IExpa2V3aXNlLgoJKGNfZXhwYW5kX3JldHVybik6IExpa2V3aXNlLgoJKGNfZXhwYW5kX3N0YXJ0X2Nhc2UpOiBMaWtld2lzZS4KCShkb19jYXNlKTogTGlrZXdpc2UuCgkoQ09NUE9VTkRfU1RNVF9OT19TQ09QRSk6IExpa2V3aXNlLgoJKGNfZXhwYW5kX2FzbV9vcGVyYW5kcyk6IExpa2V3aXNlLgoJKE5FV19GT1JfU0NPUEVfUCk6IE5ldyBtYWNyby4KCShleHBhbmRfZXhwcl9zdG10X2ZuKTogTmV3IHR5cGUuCgoJKHNldF9jdXJyZW50X2Z1bmN0aW9uX25hbWVfZGVjbGFyZWQpOiBMaWtld2lzZS4KCShjdXJyZW50X2Z1bmN0aW9uX25hbWVfZGVjbGFyZWQpOiBMaWtld2lzZS4KCShsYW5nX2V4cGFuZF9zdG10KTogTGlrZXdpc2UuCgkoc3RtdHNfYXJlX2Z1bGxfZXhwcnNfcCk6IExpa2V3aXNlLgoJKGFub25fYWdncl90eXBlX3ApOiBMaWtld2lzZS4KCShsYW5nX2V4cGFuZF9leHByX3N0bXQpOiBMaWtld2lzZS4KCShidWlsZF9jYXNlX2xhYmVsKTogTGlrZXdpc2UuCgoJKiBjLWRlY2wuYyAobGFuZ19leHBhbmRfZXhwcl9zdG10KTogSW5pdGlhbGl6ZS4KCShzdG10c19hcmVfZnVsbF9leHByc19wKTogRGVmaW5lLgoJKGN1cnJlbnRfZnVuY3Rpb25fbmFtZV9kZWNsYXJlZCk6IExpa2V3aXNlLgoJKGRvX2Nhc2UpOiBMaWtld2lzZS4KCShsYW5nX2V4cGFuZF9zdG10KTogTGlrZXdpc2UuCgkoc2V0X2N1cnJlbnRfZnVuY3Rpb25fbmFtZV9kZWNsYXJlZCk6IExpa2V3aXNlLgoJKGFub25fYWdncl90eXBlX3ApOiBMaWtld2lzZS4KCgkqIGMtc2VtYW50aWNzLmM6IE5ldyBmaWxlLgoJKGV4cGFuZF9jb25kKTogTW92ZWQgZnJvbSBjcC9zZW1hbnRpY3MuYy4KCShnZW5ydGxfZG9fcHVzaGxldmVsKTogTGlrZXdpc2UuCgkoZ2VucnRsX2NsZWFyX291dF9ibG9jayk6IExpa2V3aXNlLgoJKGdlbnJ0bF9nb3RvX3N0bXQpOiBMaWtld2lzZS4KCShnZW5ydGxfZXhwcl9zdG10KTogTGlrZXdpc2UuCgkoZ2VucnRsX2RlY2xfc3RtdCk6IExpa2V3aXNlLgoJKGdlbnJ0bF9pZl9zdG10KTogTGlrZXdpc2UuCgkoZ2VucnRsX3doaWxlX3N0bXQpOiBMaWtld2lzZS4KCShnZW5ydGxfZG9fc3RtdCk6IExpa2V3aXNlLgoJKGdlbnJ0bF9yZXR1cm5fc3RtdCk6IExpa2V3aXNlLgoJKGdlbnJ0bF9mb3Jfc3RtdCk6IExpa2V3aXNlLgoJKGdlbnJ0bF9icmVha19zdG10KTogTGlrZXdpc2UuCgkoZ2VucnRsX2NvbnRpbnVlX3N0bXQpOiBMaWtld2lzZS4KCShnZW5ydGxfc2NvcGVfc3RtdCk6IExpa2V3aXNlLgoJKGdlbnJ0bF9zd2l0Y2hfc3RtdCk6IExpa2V3aXNlLgoJKGdlbnJ0bF9jYXNlX2xhYmVsKTogTGlrZXdpc2UuCgkoZ2VucnRsX2JlZ2luX2NvbXBvdW5kX3N0bXQpOiBMaWtld2lzZS4KCShnZW5ydGxfZmluaXNoX2NvbXBvdW5kX3N0bXQpOiBMaWtld2lzZS4KCShnZW5ydGxfY29tcG91bmRfc3RtdCk6IExpa2V3aXNlLgoJKGdlbnJ0bF9hc21fc3RtdCk6IExpa2V3aXNlLgoJKGdlbnJ0bF9kZWNsX2NsZWFudXApOiBMaWtld2lzZS4KCShtYWtlX3J0bF9mb3JfbG9jYWxfc3RhdGljKTogTW92ZWQgZnJvbSBjcC9kZWNsLmMuCgkoZW1pdF9sb2NhbF92YXIpOiBMaWtld2lzZS4KCShleHBhbmRfc3RtdCk6IERlZmluZS4KCgkqIGMtdHJlZS5oOiAoY19leHBhbmRfYXNtX29wZXJhbmRzKTogTW92ZWQgdG8gYy1jb21tb24uaC4KCShjX2V4cGFuZF9yZXR1cm4pOiBMaWtld2lzZS4KCShjX2V4cGFuZF9zdGFydF9jYXNlKTogTGlrZXdpc2UuCgoyMDAwLTA3LTAxICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEBjeWdudXMuY29tPgoKCSogY29uZmlnL2lhNjQvaWE2NC5jIChzeW1ib2xpY19vcGVyYW5kKTogUmVqZWN0IENPTlNUIGV4cHJlc3Npb25zCgl3aXRoIHRoZSBsb3cgMTMgYml0cyBzZXQuCgkobW92ZV9vcGVyYW5kKTogQ2hlY2sgZm9yIENPTlNUfFNZTUJPTF9SRUZ8TEFCRUxfUkVGIGRpcmVjdGx5LgoJKiBjb25maWcvaWE2NC9pYTY0Lm1kIChtb3ZkaSk6IExpa2V3aXNlLiAgRXhwYW5kIGEgQ09OU1Qgd2l0aCBvbmUKCW9mIHRoZSBsb3cgMTMgYml0cyBpbnRvIGEgQ09OU1QgcGx1cyBhbiBhZGRkaTMuCgkobG9hZF9zeW1wdHIpOiBTZXQgUlRYX1VOQ0hBTkdJTkdfUC4KCjIwMDAtMDYtMzAgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBNYWtlZmlsZS5pbiAoYy1jb21tb24ubyk6IERvbid0IGRlcGVuZCBvbiBjLXRyZWUuaCBvciBjLWxleC5oLgoJKiBjLWNvbW1vbi5jIChyaWRwb2ludGVycyk6IERlY2xhcmUuCgkqIGMtY29tbW9uLmggKGVudW0gcmlkKTogRGVjbGFyZS4KCShOT1JJRCk6IExpa2V3aXNlLgoJKHJpZHBvaW50ZXJzKTogTGlrZXdpc2UuCgkqIGMtbGV4LmMgKHJpZHBvaW50ZXJzKTogRG9uJ3QgZGVjbGFyZS4KCShpbml0X2xleCk6IEluaXRpYWxpemUgcmlkcG9pbnRlcnMuCgkqIGMtbGV4LmggKGVudW0gcmlkKTogRG9uJ3QgZGVjbGFyZS4KCShOT1JJRCk6IExpa2V3aXNlLgoJKFJJRF9GSVJTVF9NT0RJRklFUik6IExpa2V3aXNlLgoJKHJpZHBvaW50ZXJzKTogTGlrZXdpc2UuCgoyMDAwLTA2LTMwICBKLiBEYXZpZCBBbmdsaW4gIDxkYXZlQGhpYXVseTEuaGlhLm5yYy5jYT4KCgkqIHBhL3NvbS5oIChBU01fV0VBS0VOX0xBQkVMKTogRXhwb3J0IHdlYWsgZGF0YSBzeW1ib2xzIHNvIHRoYXQgdGhleQoJaGF2ZSBnbG9iYWwgc2NvcGUuCgoyMDAwLTA2LTMwICBNYXJ0aW4gdm9uIExvZXdpcyAgPGxvZXdpc0BpbmZvcm1hdGlrLmh1LWJlcmxpbi5kZT4KCgkqIGludm9rZS50ZXhpICgtV3JldHVybi10eXBlKTogSW4gQysrLCBhIG1pc3NpbmcgcmV0dXJuIHR5cGUgaXMKCWFsd2F5cyBhbiBlcnJvci4KCjIwMDAtMDYtMzAgIENhdGhlcmluZSBNb29yZSAgPGNsbUBjeWdudXMuY29tPgoKCSogYy1jb21tb24uYyAoZGVjbF9hdHRyaWJ1dGVzKTogIERpZmZlcmVudGlhdGUgYmV0d2VlbgoJdHlwZXMgYW5kIHR5cGUgZGVjbHMgZm9yIGFsaWdubWVudC4KCjIwMDAtMDYtMzAgIE5hdGhhbiBTaWR3ZWxsICA8bmF0aGFuQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjcHAudGV4aTogRG9jdW1lbnQgI3ByYWdtYSBHQ0MgZGVwZW5kZW5jeQoJKiBjcHBmaWxlcy5jIChvcGVuX2luY2x1ZGVfZmlsZSk6IFNldCBkYXRlIHRvIHVua25vd24uCgkoX2NwcF9jb21wYXJlX2ZpbGVfZGF0ZSk6IE5ldyBmdW5jdGlvbi4KCShyZWFkX2luY2x1ZGVfZmlsZSk6IFNldCBmaWxlIGRhdGUuCgkqIGNwcGhhc2guaCAoc3RydWN0IGluY2x1ZGVfZmlsZSk6IEFkZCBkYXRlIG1lbWJlci4KCShfY3BwX2NvbXBhcmVfZmlsZV9kYXRlKTogUHJvdG90eXBlLgoJKiBjcHBsaWIuYyAocGFyc2VfaW5jbHVkZSk6IEFkZCB0cmFpbCBwYXJhbWV0ZXIuIEFkanVzdC4KCShkb19pbmNsdWRlKTogQWRqdXN0IHBhcnNlX2luY2x1ZGUgY2FsbC4KCShkb19pbXBvcnQpOiBMaWtld2lzZS4KCShkb19pbmNsdWRlX25leHQpOiBMaWtld2lzZS4KCShnY2NfcHJhZ21hcyk6IEFkZCBkZXBlbmRlbmN5IHByYWdtYS4KCShkb19wcmFnbWFfZGVwZW5kZW5jeSk6IE5ldyBwcmFnbWEuCgoyMDAwLTA2LTI5ICBKYXNvbiBNZXJyaWxsICA8amFzb25AcmVkaGF0LmNvbT4KCgkqIGR3YXJmMm91dC5jIChvdXRwdXRfbG9jX29wZXJhbmRzKTogRG9uJ3QgYWJvcnQgb24gY29kZXMgdGhhdCBoYXZlCglubyBvcGVyYW5kcy4KCjIwMDAtMDYtMjkgIEppbSBXaWxzb24gIDx3aWxzb25AY3lnbnVzLmNvbT4KCgkqIGNvbmZpZy9pYTY0L2lhNjQuaCAoUFJFRkVSUkVEX1JFTE9BRF9DTEFTUyk6IFJldHVybiBOT19SRUdTIGZvcgoJYSB2b2xhdGlsZSBtZW0gYW5kIEZSX1JFR1MuCgoyMDAwLTA2LTI5ICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogYy1jb21tb24uYzogSW5jbHVkZSBjLWNvbW1vbi5oLCBub3QgYy1sZXguaCBvciBjLXRyZWUuaC4KCSogYy1jb21tb24uaCAoZmxhZ19jb25zdF9zdHJpbmdzKTogRGVjbGFyZS4KCSh3YXJuX2Zvcm1hdCk6IExpa2V3aXNlLgoJKGZsYWdfdHJhZGl0aW9uYWwpOiBMaWtld2lzZS4KCShmbGFnX2lzb2M5OSk6IExpa2V3aXNlLgoJKHdhcm5fcGFyZW50aGVzZXMpOiBMaWtld2lzZS4KCSh3YXJuX2NvbnZlcnNpb24pOiBMaWtld2lzZS4KCShDX1RZUEVfT0JKRUNUX1ApOiBMaWtld2lzZS4KCShDX1RZUEVfSU5DT01QTEVURV9QKTogTGlrZXdpc2UuCgkoQ19UWVBFX0ZVTkNUSU9OX1ApOiBMaWtld2lzZS4KCShDX1RZUEVfT0JKRUNUX09SX0lOQ09NUExFVEVfUCk6IExpa2V3aXNlLgoJKENfRVhQX09SSUdJTkFMX0NPREUpOiBMaWtld2lzZS4KCShidWlsZF91bmFyeV9vcCk6IExpa2V3aXNlLgoJKGJ1aWxkX2JpbmFyeV9vcCk6IExpa2V3aXNlLgoJKGx2YWx1ZV9wKTogTGlrZXdpc2UuCgkoZGVmYXVsdF9jb252ZXJzaW9uKTogTGlrZXdpc2UuCgkoY29tbW9uX3R5cGUpOiBMaWtld2lzZS4KCSogYy10cmVlLmggKENfVFlQRV9PQkpFQ1RfUCk6IFJlbW92ZS4KCShDX1RZUEVfSU5DT01QTEVURV9QKTogTGlrZXdpc2UuCgkoQ19UWVBFX0ZVTkNUSU9OX1ApOiBMaWtld2lzZS4KCShDX1RZUEVfT0JKRUNUX09SX0lOQ09NUExFVEVfUCk6IExpa2V3aXNlLgoJKENfRVhQX09SSUdJTkFMX0NPREUpOiBMaWtld2lzZS4KCShjb21tb25fdHlwZSk6IExpa2V3aXNlLgoJKGRlZmF1bHRfY29udmVyc2lvbik6IExpa2V3aXNlLgoJKGJ1aWxkX2JpbmFyeV9vcCk6IExpa2V3aXNlLgoJKGJ1aWxkX3VuYXJ5X29wKTogTGlrZXdpc2UuCgkobHZhbHVlX3ApOiBMaWtld2lzZS4KCShmbGFnX2NvbnN0X3N0cmluZ3MpOiBMaWtld2lzZS4KCSh3YXJuX2Zvcm1hdCk6IExpa2V3aXNlLgoJKHdhcm5fY29udmVyc2lvbik6IExpa2V3aXNlLgoJKGZsYWdfdHJhZGl0aW9uYWwpOiBMaWtld2lzZS4KCShmbGFnX2lzb2M5OSk6IExpa2V3aXNlLgoJKHdhcm5fcGFyZW50aGVzZXMpOiBMaWtld2lzZS4KCjIwMDAtMDYtMjkgIEphbWVzIEUuIFdpbHNvbiAgPHdpbHNvbkBjeWdudXMuY29tPgoKCSogY29uZmlnL2lhNjQvbGludXguaCAoTElOS19TUEVDKTogQ2hhbmdlIHNvLjEgdG8gc28uMi4KCgkqIGNvbmZpZy9pYTY0L2lhNjQuaCAoTU9ERVNfVElFQUJMRV9QKTogT25seSB0aWUgaWYgbW9kZSBjbGFzcyBpcyB0aGUKCXNhbWUuICBPbmx5IHRpZSBYRm1vZGUgd2l0aCBYRm1vZGUuCgoyMDAwLTA2LTI5ICBaYWNrIFdlaW5iZXJnICA8emFja0B3b2xlcnkuY3VtYi5vcmc+CgoJKiBjLWRlY2wuYywgdGltZXZhci5jLCB0bGluay5jOiBJbmNsdWRlIGludGwuaC4KCSogTWFrZWZpbGUuaW46IFVwZGF0ZSBkZXBzLgoKMjAwMC0wNi0yOSAgQW5kcmV3IEhhbGV5ICA8YXBoQGN5Z251cy5jb20+CgoJKiB0b3BsZXYuYyAobWFpbik6IE9uIGFuIElBLTY0LCBtYWtlIGZsYWdfdW53aW5kX3RhYmxlcyBkZWZhdWl0Cgl0byB0cnVlLgoKMjAwMC0wNi0yOSAgQW5kcmV3IEhhbGV5ICA8YXBoQGN5Z251cy5jb20+CgoJKiBjb25maWcvaWE2NC9saW51eC5oIChKTVBfQlVGX1NJWkUpOiBTaXplIGlzIGluIFBtb2RlIHVuaXRzLCBub3QKCWJ5dGVzOiByZW1vdmUgdGhlIG11bHRpcGx5IGJ5IDguCgoyMDAwLTA2LTI5ICBQaGlsaXBwIFRob21hcyAgPHB0aG9tYXNAc3VzZS5kZT4KCgkqIHJ0bC5jIDogUmV2ZXJ0IE5MUyBjaGFuZ2VzLgoJKiBnY2MuYyA6IEZpeCBidWcgaW4gZGlzcGxheV9oZWxwIGludHJvY2VkIGJ5IG15IGxhc3QgY2hhbmdlcy4KCldlZCBKdW4gMjggMjE6MDk6MzMgMjAwMCAgIFJhamEgUiBIYXJpbmF0aCA8aGFyaW5hdGhAY3MudW1uLmVkdT4KCgkqIGRieG91dC5jIChkYnhvdXRfc3ltYm9sLCBjYXNlIFJFU1VMVF9ERUNMLCBWQVJfREVDTCk6IFVzZQoJREVDTF9DT05URVhULCBub3QgREVDTF9GSUVMRF9DT05URVhULgoKMjAwMC0wNi0yOSAgTWljaGFlbCBIYXllcyAgPG0uaGF5ZXNAZWxlYy5jYW50ZXJidXJ5LmFjLm56PgoKCSogZmxvdy5jIChmbG93X2RlcHRoX2ZpcnN0X29yZGVyX2NvbXB1dGUpOiBGaXggYWxnb3JpdGhtLgoKMjAwMC0wNi0yOCAgUGhpbGlwcCBUaG9tYXMgIDxwdGhvbWFzQHN1c2UuZGU+CgoJKiBjLWRlY2wuYyA6IE1hcmsgc3RyaW5ncyBmb3IgdHJhbnNsYXRpb24uCgkocGFybWxpc3RfdGFnc193YXJuaW5nKTogVXNlIGRpc3RpbmN0IG1lc3NhZ2VzIGluc3RlYWQKCW9mIGNvbmRpdGlvbmFsIGV4cHJlc3Npb25zLgoJKiBkaWFnbm9zdGljLmMgKHZfbWVzc2FnZV93aXRoX2RlY2wpOiBNYXJrIHN0cmluZyBmb3IgdHJhbnNsYXRpb24uCgkqIGdjYy5jOiBNYXJrIG1lc3NhZ2VzIGZvciB0cmFuc2xhdGlvbi4KCShkaXNwbGF5X2hlbHApOiBDb21iaW5lIG1lc3NhZ2VzIGludG8gb25lIHN0cmluZyB3aGVyZSBuZWNlc3NhcnkuCgkqIG1pcHMtdGZpbGU6IEFkZCBpbnRsLmguIE1hcmsgbWVzc2FnZXMgZm9yIHRyYW5zbGF0aW9uLgoJKiBydGwuYyAoZmF0YWxfd2l0aF9maWxlX2FuZF9saW5lKTogTW9kaWZ5IGZ1bmN0aW9uIGZvciBOTFMuIE1hcmsKCW1lc3NhZ2VzIGZvciB0cmFuc2xhdGlvbi4KCSogdGltZXZhci5jOiBNYXJrIG1lc3NhZ2VzIGZvciB0cmFuc2xhdGlvbi4KCSogdGxpbmsuYzogTGlrZXdpc2UuCgkqIHRvcGxldi5jOiBMaWtld2lzZS4KCldlZCBKdW4gMjggMTU6Mzk6MjYgMjAwMCAgRG9ubiBUZXJyeSAoZG9ubnRlQG1pY3Jvc29mdC5jb20pCgoJKiBpMzg2LWludGVyaXguaCAoU1RSSVBfTkFNRV9FTkNPRElORyk6IERlY2xhcmUgX25ld19uYW1lIHByb3Blcmx5LgoKCSogYWxwaGEvYWxwaGEtaW50ZXJpeC5oOiBEZWxldGUgcmVkdW5kYW50IC1Bc3lzdGVtKGludGVyaXgpLAoJdXNlIC1pc3lzdGVtIGluc3RlYWQgb2YgLWlkaXJhZnRlci4KCSogaTM4Ni9pMzg2LWludGVyaXguaDogTGlrZXdpc2UuCgoyMDAwLTA2LTI4ICBKYXNvbiBNZXJyaWxsICA8amFzb25AcmVkaGF0LmNvbT4KCgkqIGR3YXJmMm91dC5jIChvdXRwdXRfbG9jX29wZXJhbmRzKTogRG9uJ3Qgc3VwcG9ydCA+MSBieXRlIG91dHB1dAoJdW5sZXNzIERXQVJGMl9ERUJVR0dJTkdfSU5GTyBpcyBkZWZpbmVkLgoJKEFTTV9PVVRQVVRfRFdBUkZfKik6IFdyYXAgbm9ybWFsIG91dHB1dCBkZWZzIHdpdGggI2lmbmRlZnMuCgoyMDAwLTA2LTI4ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEBjeWdudXMuY29tPgoKCSogY29uZmlnL2FscGhhL2FscGhhLmMgKHN1bW1hcml6ZV9pbnNuKTogSWdub3JlIFNDUkFUQ0guCgoyMDAwLTA2LTI4ICBKYWt1YiBKZWxpbmVrICA8amFrdWJAcmVkaGF0LmNvbT4KCgkqIGNwcGxleC5jIChvdXRwdXRfbGluZV9jb21tYW5kKTogT3V0cHV0IGNvcnJlY3QgI2xpbmUgaWYgYSBoZWFkZXIKCWlzIGluY2x1ZGluZyBpdHNlbGYgYW5kIGlzIG5vdCBwcm90ZWN0ZWQgYWdhaW5zdCBtdWx0aXBsZSBpbmNsdXNpb24uCgoyMDAwLTA2LTI4ICBaYWNrIFdlaW5iZXJnICA8emFja0B3b2xlcnkuY3VtYi5vcmc+CgoJKiBjcHBmaWxlcy5jIChvcGVuX2luY2x1ZGVfZmlsZSk6IElmIG9wZW4oMikgcmV0dXJucyBFTUZJTEUgb3IKCUVORklMRSwgY2xvc2UgYWxsIGNhY2hlZCBmaWxlIGRlc2NyaXB0b3JzIGFuZCB0cnkgYWdhaW4uCgkoX2NwcF9leGVjdXRlX2luY2x1ZGUpOiBLZWVwIGEgY291bnQgb2YgdGhlIG51bWJlciBvZiB0aW1lcwoJZWFjaCBoZWFkZXIgaXMgaW5jbHVkZWQuCgkoY2xvc2VfY2FjaGVkX2ZkKTogTmV3IGZ1bmN0aW9uLgoJKiBjcHBoYXNoLmggKHN0cnVjdCBpbmNsdWRlX2ZpbGUpOiBSZW5hbWUgYmVmb3JlIHRvCglpbmNsdWRlX2NvdW50OyBhbGwgdXNlcnMgdXBkYXRlZC4gIE1ha2UgaW5jbHVkZV9jb3VudCBhbmQgc3lzcAoJdW5zaWduZWQgc2hvcnQuCgkqIGNwcGluaXQuYyAoY3BwX2ZpbmlzaCk6IElmIC1ILCByZXBvcnQgaGVhZGVycyB0aGF0IGNvdWxkIHVzZQoJcmVpbmNsdWRlIGd1YXJkcy4KCShyZXBvcnRfbWlzc2luZ19ndWFyZCk6IE5ldyBmdW5jdGlvbi4KCldlZCBKdW4gMjggMTQ6NDY6NTggTUVUIERTVCAyMDAwICBKYW4gSHViaWNrYSAgPGpoQHN1c2UuY3o+CgoJKiBpMzg2Lm1kIChwcm9sb2d1ZV9zZXRfZ290KTogU2V0IGxlbmd0aF9pbW1lZGlhdGUgZmllbGQuCgkodGVzdHFpX2Njbm9fMSk6ICBBZGQgbWlzc2luZyAnQCcgY2hhcmFjdGVyLgoKMjAwMC0wNi0yNyAgSmFzb24gTWVycmlsbCAgPGphc29uQHJlZGhhdC5jb20+CgoJKiBkd2FyZjJvdXQuYyAoZXhwYW5kX2J1aWx0aW5faW5pdF9kd2FyZl9yZWdfc2l6ZXMpOiBVc2UKCURXQVJGX0ZSQU1FX1JFR05VTS4KCjIwMDAtMDYtMjcgIEFuZHJldyBNYWNsZW9kIDxhbWFjbGVvZEBjeWdudXMuY29tPgoKCSogZHdhcmYyb3V0LmMgKEFTTV9PVVRQVVRfRFdBUkZfREFUQTIpOiBQcm92aWRlIGRlZmF1bHQgd2hlbiBubwoJdW5zaWduZWQgbWFjcm9zIGF2YWlsYWJsZS4KCjIwMDAtMDYtMjcgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgoJKiBjb25maWcvaWE2NC9pYTY0LmMgKGVtaXRfaW5zbl9ncm91cF9iYXJyaWVycyk6IFNwZWNpYWwgY2FzZQoJZXBpbG9ndWVfZGVhbGxvY2F0ZV9zdGFjay4KCgkqIGNvbmZpZy9pYTY0L2lhNjQuYyAoaWE2NF9wcmludF9vcGVyYW5kKSBbY2FzZSBEXTogRW1pdAoJY29tcGxldGVycyBmb3IgVU5PUkRFUkVEIGFuZCBPUkRFUkVEIGFzIHdlbGwuCgkqIGNvbmZpZy9pYTY0L2lhNjQubWQgKGJ1bm9yZGVyZWQsIGJvcmRlcmVkKTogTmV3LgoJKHN1bm9yZGVyZWQsIHNvcmRlcmVkKTogTmV3LgoKVHVlIEp1biAyNyAxMjoxNDoxMiBNRVQgRFNUIDIwMDAgIEphbiBIdWJpY2thICA8amhAc3VzZS5jej4KCgkqIGdlbmF0dHJ0YWIuYyAod3JpdGVfYXR0cl92YWx1ZSk6IERvIG5vdCBhYm9ydCBmb3IgQ09OU1RfSU5UIG9wZXJhbmRzLgoJKiBpMzg2LmMgKGl4ODZfYXR0cl9sZW5ndGhfZGVmYXVsdCk6IEtpbGwuCgkoaXg4Nl9hdHRyX2xlbmd0aF9pbW1lZGlhdGVfZGVmYXVsdCwgaXg4Nl9hdHRyX2xlbmd0aF9hZGRyZXNzX2RlZmF1bHQpOgoJTmV3LgoJKiBpMzg2LXByb3Rvcy5oIChpeDg2X2F0dHJfbGVuZ3RoX2RlZmF1bHQpOiBLaWxsCgkoaXg4Nl9hdHRyX2xlbmd0aF9pbW1lZGlhdGVfZGVmYXVsdCwgaXg4Nl9hdHRyX2xlbmd0aF9hZGRyZXNzX2RlZmF1bHQpOgoJQWRkIHByb3RvdHlwZQoJKiBpMzg2Lm1kIChhdHRyaWJ1dGUgdHlwZSk6IEFkZCAidGVzdCIuCgkoYXR0cmlidXRlIGxlbmd0aF9wcmVmaXgpOiBLaWxsLgoJKGF0dHJpYnV0ZSBsZW5ndGhfb3Bjb2RlKTogS2lsbC4KCShhdHRyaWJ1dGUgaTM4NywgbW9kZSwgbGVuZ3RoX2ltbWVkaWF0ZSwgbGVuZ3RoX2FkZHJlc3MsIHByZWZpeF9kYXRhMTYsCglwcmVmaXhfcmVwLCBwcmVmaXhfMGYsIG1vZHJtKTogTmV3LgoJKGF0dHJpYnV0ZSBsZW5ndGgpOiBDb21wdXRlIHVzaW5nIHRoZSBuZXcgYXR0cmlidXRlcy4KCShhdHRyaWJ1dGUgcGVudF9wcmVmaXgpOiBOZXcuCgkoYXR0cmlidXRlIHBlbnRfcGFpcik6IENvbXB1dGUgdXNpbmcgcGVudF9wcmVmaXguCgkoYWxsIGluc24gcGF0dGVybnMpOiBTZXQgbW9kZSxtb2RybSBhbmQgaW1tZWRpYXRlX2xlbmd0aCBhdHRyaWJ1dGVzIHdoZXJlCgluZWVkZWQuCgkoY21wc2kgcGF0dGVybnMpOiBDb21wdXRlIHNpemVzIHByb3Blcmx5IGZvciB0ZXN0IGluc3RydWN0aW9uLgoJKG1vdnNpLCBtb3ZoaSBwYXR0ZXJucyk6IENvbXB1dGUgc2l6ZXMgcHJvcGVybHkgZm9yIGVheCBzaG9ydGN1dHMuCgkobW92c3RyaWN0aGlfeG9yLCBtb3ZzdHJpY3RxaV94b3IpOiBOZXcgcGF0dGVybnMuCgkoYW5kc2kvYW5kaGkpOiBVc2Ugc3BsaXR0ZXJzIHRvIGdlbmVyYXRlIHhvciBpbnN0cnVjdGlvbnMuCgkoeG9ycWlfZXh0XzEpOiBOZXcgcGF0dGVybi4KCShtb3ZzdHJpY3RoaS0+bW92c3RyaWN0aGlfeG9yIHBlZXAyKTogTmV3LgoKVHVlIEp1biAyNyAxMjowMzowMyBNRVQgRFNUIDIwMDAgIEphbiBIdWJpY2thICA8amhAc3VzZS5jej4KCgkqIGkzODYubWQgKGFkZHFpX2xvd18xKTogUmVtb3ZlLgoKMjAwMC0wNi0yNyAgUGhpbGlwcCBUaG9tYXMgIDxwdGhvbWFzQHN1c2UuZGU+CgoJKiAxNzUwYS5oOiBNYXJrIGhlbHAgc3RyaW5ncyBmb3Igb3B0aW9ucy9zd2l0Y2hlcyBmb3IgdHJhbnNsYXRpb24uCgkqIGEyOWsuaDogTGlrZXdpc2UuCgkqIGFscGhhLmg6IExpa2V3aXNlLgoJKiBhcm0uaDogTGlrZXdpc2UuCgkqIHBlLmg6IExpa2V3aXNlLgoJKiByaXNjaXguaDogTGlrZXdpc2UuCgkqIGM0eC5oOiBMaWtld2lzZS4KCSogY2xpcHBlci5oOiBMaWtld2lzZS4KCSogY29udmV4Lmg6IExpa2V3aXNlLgoJKiBlbHhzaS5oOiBMaWtld2lzZS4KCSogZnIzMC5oOiBMaWtld2lzZS4KCSogZng4MC5oOiBMaWtld2lzZS4KCSogaDgzMDAuaDogTGlrZXdpc2UuCgkqIGkzNzAuaDogTGlrZXdpc2UuCgkqIGN5Z3dpbi5oOiBMaWtld2lzZS4KCSogZGd1eC5oOiBMaWtld2lzZS4KCSogZGpncHAuaDogTGlrZXdpc2UuCgkqIGkzODYuaDogTGlrZXdpc2UuCgkqIG9zZjFlbGYuaDogTGlrZXdpc2UuCgkqIG9zZnJvc2UuaDogTGlrZXdpc2UuCgkqIHNjbzUuaDogTGlrZXdpc2UuCgkqIHdpbjMyLmg6IExpa2V3aXNlLgoJKiBpODYwLmg6IExpa2V3aXNlLgoJKiBwYXJhZ29uLmg6IExpa2V3aXNlLgoJKiBpOTYwLmg6IExpa2V3aXNlLgoJKiBpYTY0Lmg6IExpa2V3aXNlLgoJKiBtMzJyLmg6IExpa2V3aXNlLgoJKiBtY29yZS5oOiBMaWtld2lzZS4KCSogbWlwcy5oOiBMaWtld2lzZS4KCSogbW4xMDMwMC5oOiBMaWtld2lzZS4KCSogbnMzMmsuaDogTGlrZXdpc2UuCgkqIHBkcDExLmg6IExpa2V3aXNlLgoJKiBwai5oOiBMaWtld2lzZS4KCSogYWl4Lmg6IExpa2V3aXNlLgoJKiBhaXg0MS5oOiBMaWtld2lzZS4KCSogYWl4NDMuaDogTGlrZXdpc2UuCgkqIGJlb3MuaDogTGlrZXdpc2UuCgkqIHJzNjAwMC5oOiBMaWtld2lzZS4KCSogc3lzdjQuaDogTGlrZXdpc2UuCgkqIGxpbnV4Lmg6IExpa2V3aXNlLgoJKiBsaW51eDY0Lmg6IExpa2V3aXNlLgoJKiBzcDY0LWVsZi5oOiBMaWtld2lzZS4KCSogc3BhcmMuaDogTGlrZXdpc2UuCgkqIHNwbGV0Lmg6IExpa2V3aXNlLgoJKiB2ODUwLmg6IExpa2V3aXNlLgoJKiBjb252ZXguaCAoVEFSR0VUX1NXSVRDSEVTKTogUHJvdmlkZSBkZXNjcmlwdGlvbnMgYW5kIG1hcmsgdGhlbQoJZm9yIHRyYW5zbGF0aW9uLgoJKiBzcDg2eC1hb3V0Lmg6IFJlbW92ZSBib2d1cyBmaXJzdCBkZWZpbml0aW9uIG9mIFNVQlRBUkdFVF9TV0lUQ0hFUy4KCVByb3Blcmx5IGRvY3VtZW50IG9wdGlvbiBhbmQgbWFyayBmb3IgdHJhbnNsYXRpb24uCgkqIHNwODZ4LWVsZi5oOiBMaWtld2lzZS4KCjIwMDAtMDYtMjcgIEJlcm5kIFNjaG1pZHQgIDxiZXJuZHNAY3lnbnVzLmNvLnVrPgoKCUFkZCBNTVggYW5kIFNTRSByZWdpc3RlcnMgdG8gaTM4NiBtYWNoaW5lIGRlc2NyaXB0aW9uLgoJKiBpMzg2LXByb3Rvcy5oIChpeDg2X2NvbnN0YW50X2FsaWdubWVudCwgaXg4Nl9kYXRhX2FsaWdubWVudCwKCWl4ODZfbG9jYWxfYWxpZ25tZW50KTogRGVjbGFyZS4KCgkqIGkzODYuaCAoVEFSR0VUX01NWCwgVEFSR0VUX1NTRSk6IE5ldy4KCShGSVJTVF9QU0VVRE9fUkVHSVNURVIsIEZJWEVEX1JFR0lTVEVSUywgQ0FMTF9VU0VEX1JFR0lTVEVSUywKCVJFR19BTExPQ19PUkRFUiwgSEFSRF9SRUdOT19OUkVHUywgSEFSRF9SRUdOT19NT0RFX09LLAoJUkVHX0NMQVNTX05BTUVTLCBSRUdfQ0xBU1NfQ09OVEVOVFMsUkVHX0NMQVNTX0ZST01fTEVUVEVSLAoJZW51bSByZWdfY2xhc3MsIEhJX1JFR0lTVEVSX05BTUVTKTogQWRkZWQgTU1YL1NTRSByZWdpc3RlcnMuCgkoRklSU1RfU1NFX1JFRywgTEFTVF9TU0VfUkVHLCBTU0VfUkVHTk9fUCk6IE5ldy4KCShGSVJTVF9NTVhfUkVHLCBMQVNUX01NWF9SRUcsIE1NWF9SRUdOT19QLCBNTVhfUkVHX1ApOiBOZXcgbWFjcm9zLgoJKFJFVFVSTl9JTl9NRU1PUlkpOiBIYW5kbGUgTU1YL1NTRS4KCShSRUdfUEFSTV9TVEFDS19TUEFDRSk6IEFkZGVkIHNvIHRoZSBmaXJzdCB0aHJlZSBUSW1vZGUgcGFyYW1ldGVycwoJYWxzbyBnZXQgc3RhY2sgc3BhY2UuCgkoTVVTVF9QQVNTX0lOX1NUQUNLKTogQWRkZWQgVEltb2RlIHRvIHRoZSBkZWZhdWx0IGRlZmluaXRpb24uCgkoQ1VNVUxBVElWRV9BUkdTKTogQWRkZWQgc3NlX25yZWdzLCBzc2VfcmVnbm8gYW5kIHNzZV93b3Jkcy4KCShNTVhfUkVHSVNURVJfTkFNRVMpOiBOZXcuCgkoQUxJR05fTU9ERV8xMjgpOiBOZXcgbWFjcm8uCgkoQ09OU1RBTlRfQUxJR05NRU5UKTogQ29kZSBtb3ZlZCBvdXQtb2YtbGluZTsganVzdCBjYWxsIHRoZSBmdW5jdGlvbi4KCShEQVRBX0FMSUdOTUVOVCk6IExpa2V3aXNlLgoJKExPQ0FMX0FMSUdOTUVOVCk6IExpa2V3aXNlLgoJKENPTkRJVElPTkFMX1JFR0lTVEVSX1VTQUdFKTogTWFrZSBNTVgvU1NFIHJlZ3MgZml4ZWQgaWYgbm90CglUQVJHRVRfTU1YL1RBUkdFVF9TU0UuCgkoVkFMSURfU1NFX1JFR19NT0RFLCBWQUxJRF9NTVhfUkVHX01PREUpOiBOZXcgbWFjcm9zLgoJKFJFR19DTEFTU19GUk9NX0xFVFRFUik6ICd5JyBmb3IgTU1YIHJlZ3MuCgkoU0VDT05EQVJZX01FTU9SWV9ORUVERUQpOiBCZSBjb25zZXJ2YXRpdmUgYWJvdXQgY29weWluZyBiZXR3ZWVuCglTU0UvTU1YIHJlZ3MgYW5kIHNvbWV0aGluZyBlbHNlLgoJKENMQVNTX01BWF9OUkVHUyk6IDEgZm9yIFNTRSBhbmQgTU1YIHJlZ3MuCgkoUkVHSVNURVJfTU9WRV9DT1NUKTogMTAgaWYgdHJ5aW5nIHRvIG1vdmUgYmV0d2VlbiBNTVggYW5kIFNTRSByZWdzLAoJMyBpZiBtb3ZpbmcgYmV0d2VlbiBNTVggcmVncyBhbmQgc29tZXRoaW5nIGVsc2UuCgoJKiBpMzg2LmMgKHJlZ19jbGFzcyk6IEFkZCBTU0VfUkVHUywgTU1YX1JFR1MuCgkocmVnY2xhc3NfbWFwKTogQWRkIE1NWC9TU0UgcmVnaXN0ZXJzLgoJKHByaW50X29wZXJhbmQpOiBBZGQgY29kZSB0byBwcmludCBYTU1XT1JEIGFzIGFwcHJvcHJpYXRlLgoJKGl4ODZfc3BsaXRfbW92ZGkpOiBBYm9ydCBmb3IgTU1YIHJlZ3MuCgkoaW5pdF9jdW11bGF0aXZlX2FyZ3MpOiBBbHNvIGFsbG93IFNTRV9SRUdTCgkoZnVuY3Rpb25fYXJnX2FkdmFuY2UsIGZ1bmN0aW9uX2FyZyk6IExpa2V3aXNlCgkocHJpbnRfcmVnKTogU3VwcG9ydCAnbScuICBBZGQgY2FzZSBmb3IgVEltb2RlLgoJKG92ZXJyaWRlX29wdGlvbnMpOiBUQVJHRVRfU1NFIGltcGxpZXMgVEFSR0VUX01NWC4KCShpeDg2X2NvbnN0YW50X2FsaWdubWVudCwgaXg4Nl9kYXRhX2FsaWdubWVudCwgaXg4Nl9sb2NhbF9hbGlnbm1lbnQpOgoJTmV3IGZ1bmN0aW9ucy4KCgkqIGNvbmZpZy9pMzg2L3VuaXguaCAoVkFMVUVfUkVHTk8pOiBWRUNUT1JfTU9ERSB2YWx1ZXMgZ28gdG8KCUZJUlNUX1NTRV9SRUcuCgkqIGNvbmZpZy9pMzg2L3B0eDQtaS5oIChSRVRVUk5fSU5fTUVNT1JZKTogUmV0dXJuIE1NWCB2YWx1ZXMgaW4KCW1lbW9yeS4KCSogY29uZmlnL2kzODYvc3lzdjQuaCAoUkVUVVJOX0lOX01FTU9SWSk6IExpa2V3aXNlLgoJKiBjb25maWcvaTM4Ni9pMzg2ZWxmLmggKFJFVFVSTl9JTl9NRU1PUlkpOiBMaWtld2lzZS4KCjIwMDAtMDYtMjYgIEdlb2ZmIEtlYXRpbmcgIDxnZW9mZmtAY3lnbnVzLmNvbT4KCgkqIHNzYS5jIChzdHJ1Y3QgcmVuYW1lX3NldF9kYXRhKTogQ2hhbmdlIHRoZSBuYW1lIG9mIGZpZWxkCgknc2V0X2Rlc3QnIHRvICdvbGRfcmVnJy4gIEFkZCBjb21tZW50cy4KCShzdHJ1Y3QgcmVuYW1lX2NvbnRleHQpOiBDaGFuZ2UgdGhlIG5hbWUgb2YgJ3NldF9kYXRhJyB0bwoJJ25ld19yZW5hbWVzJy4gIEFkZCBuZXcgZmllbGQgJ2RvbmVfcmVuYW1lcycuCgkoY3JlYXRlX2RlbGF5ZWRfcmVuYW1lKTogTmV3IGZ1bmN0aW9uLgoJKGFwcGx5X2RlbGF5ZWRfcmVuYW1lcyk6IE5ldyBmdW5jdGlvbi4KCShyZW5hbWVfaW5zbl8xKTogVXNlIHRoZSBuZXcgZnVuY3Rpb25zLiAgSGFuZGxlIENMT0JCRVJTLiAgSGFuZGxlCglTVUJSRUdzIGFuZCBzaW1pbGFyIGJ5IGVtaXR0aW5nIGEgbW92ZS4KCShuZXdfcmVnaXN0ZXJzX2Zvcl91cGRhdGVzKTogRGVsZXRlLCBmdW5jdGlvbmFsaXR5IG1vdmVkIHRvCglhcHBseV9kZWxheWVkX3JlbmFtZXMuCgkocmVuYW1lX2Jsb2NrKTogSGFuZGxlIG1vdmVzIGVtaXR0ZWQgYnkgcmVuYW1lX2luc25fMSBieSBwdXR0aW5nCgl0aGVtIGludG8gYSBTRVFVRU5DRSB3aXRoIHRoZSBvcmlnaW5hbCBpbnNuLiAgQWRkIHNhbml0eSBjaGVja3MKCWFuZCBjb21tZW50cy4KCShyZW5hbWVfZXF1aXZhbGVudF9yZWdzX2luX2luc24pOiBEb24ndCBoYW5kbGUgU1VCUkVHcyBzcGVjaWFsbHkuCgkocmVuYW1lX2VxdWl2YWxlbnRfcmVncyk6IEV4cGFuZCBTRVFVRU5DRXMgb3V0IHRvIGluZGl2aWR1YWwgaW5zbnMuCgoyMDAwLTA2LTI2ICBBbmRyZXcgTWFjbGVvZCA8YW1hY2xlb2RAY3lnbnVzLmNvbT4KCSAgICBKYXNvbiBNZXJyaWxsIDxqYXNvbkByZWRoYXQuY29tPgoKCSogZHdhcmYyLmggKGVudW0gZHdhcmZfY2FsbF9mcmFtZV9pbmZvKTogQWRkCglEV19DRkFfZGVmX2NmYV9leHByZXNzaW9uLgoJKiBkd2FyZjJvdXQuYyAodW5pb24gZHdfY2ZpX29wcm5kX3N0cnVjdCk6IEFkZCBhIHBvaW50ZXIgdG8gYQoJZHdfbG9jX2Rlc2NyX3N0cnVjdCBlbnRyeS4KCShzdHJ1Y3QgY2ZhX2xvYyk6IE5ldyBzdHJ1Y3R1cmUgdG8gdHJhY2sgYSBDRkEgbG9jYXRpb24uCgkobG9va3VwX2NmYSk6IFRha2UgYSBjZmFfbG9jIHBhcmFtZXRlciBpbnN0ZWFkIG9mIGEgcmVnIGFuZCBhbiBvZmZzZXQuCgkobG9va3VwX2NmYV8xKTogVGFrZSBhIGNmYV9sb2MgcGFyYW1ldGVyIGluc3RlYWQgb2YgYSByZWcgYW5kIGFuCglvZmZzZXQsIHBsdXMgaGFuZGxlIERXX0NGQV9kZWZfY2ZhX2V4cHJlc3Npb24uCgkoZGVmX2NmYV8xKTogVXNlIHRvIGJlIGR3YXJmMm91dF9kZWZfY2ZhLCBvbmx5IG5vdyBpdCB1c2VzIGEKCWNmYV9sb2MgcmVjb3JkLgoJKGR3YXJmMm91dF9kZWZfY2ZhKTogRW50cnkgcG9pbnQgbWFpbnRhaW5lZCBmb3IgY29tcGF0aWJpbGl0eS4KCShkd2FyZl9jZmlfbmFtZSk6IEFkZCBEV19DRkFfZGVmX2NmYV9leHByZXNzaW9uLgoJKGNmYV9yZWcsIGNmYV9vZmZzZXQpOiBSZXBsYWNlIHdpdGggY2ZhX2xvYyByZWNvcmQgJ2NmYScuCgkoY2ZhX3N0b3JlX3JlZywgY2ZhX3N0b3JlX29mZnNldCk6IFJlcGxhY2Ugd2l0aCBjZmFfbG9jICdjZmFfc3RvcmUnLgoJKGluaXRpYWxfcmV0dXJuX3NhdmUsIGR3YXJmMm91dF9zdGFja19hZGp1c3QpOiBVc2UgY2ZhLnJlZywgbm90CgljZmFfcmVnLgoJKGR3YXJmMm91dF9mcmFtZV9kZWJ1Z19leHByKTogVXNlIG5ldyBjZmFfbG9jIHJlY29yZHMuIFJlY29nbml6ZSBydGwKCXNlcXVlbmNlcyBmb3IgdGhlIG5ldyBEV19DRkFfZGVmX2NmYV9leHByZXNzaW9uIHJlY29yZC4KCShkd2FyZjJvdXRfZnJhbWVfZGVidWcpOiBVc2UgbmV3IHZhcmlhYmxlcy9maWVsZHMuQQoJKG91dHB1dF9jZmkpOiBIYW5kbGUgRFdfQ0ZBX2RlZl9jZmFfZXhwcmVzc2lvbi4KCShvdXRwdXRfY2ZhX2xvYyk6IE5ldyBmdW5jdGlvbiB0byBnZW5lcmF0ZSBhIENGSSByZWNvcmQgZm9yCglEV19DRkFfZGVmX2NmYV9leHByZXNzaW9uLgoJKGdldF9jZmFfZnJvbV9sb2NfZGVzY3IpOiBOZXcgZnVuY3Rpb24gdG8gZ2V0IGEgY2ZhX2xvYyByZWNvcmQgZnJvbQoJYSBkd19sb2NfZGVzY3Igc2VxdWV1bmNlLgoJKGJ1aWxkX2xvY19kZXNjcik6IEJ1aWxkIGEgZHdfbG9jX2Rlc2NyIGZyb20gYSBjZmFfbG9jIHJlY29yZC4KCShkd2FyZl9zdGFja19vcF9uYW1lLCBuZXdfbG9jX2Rlc2NyLCBhZGRfbG9jX2Rlc2NyLCBzaXplX29mX2xvY19kZXNjciwKCXNpemVfb2ZfbG9jcywgb3V0cHV0X2xvY19vcGVyYW5kcywgb3V0cHV0X2xvY19zZXF1ZW5jZSk6IE1vdmUgaW50bwoJdW53aW5kIGluZm8gc2VjdGlvbi4KCSogZnJhbWUuaCAoZnJhbWVfc3RhdGUpOiBBZGQgYmFzZV9vZmZzZXQgYW5kIGluZGlyZWN0IGZpZWxkcy4KCSogZnJhbWUtZHdhcmYyLmMgKGRlY29kZV9zdGFja19vcCk6IE5ldyBmdW5jdGlvbiB0byBpbnRlcnByZXQgYQoJZHdfbG9jX2Rlc2NyIG9wZXJhdGlvbi4KCShleGVjdXRlX2NmYV9pbnNuKTogQWRkIHN1cHBvcnQgZm9yIERXX0NGQV9kZWZfY2ZhX2V4cHJlc3Npb24uCgkoc3RydWN0IGZyYW1lX3N0YXRlKTogQWRkIGJhc2Ugb2Zmc2V0IGFuZCBpbmRpcmVjdCBmaWVsZHMuCgkqIGxpYmdjYzIuYyAobmV4dF9zdGFja19sZXZlbCk6IFN1cHBvcnQgaW5kaXJlY3QgbG9hZGluZyBmb3IgQ0ZBLgoKMjAwMC0wNi0yNiAgSm9zZXBoIFMuIE15ZXJzICA8anNtMjhAY2FtLmFjLnVrPgoKCSogYy1kZWNsLmMgKGdyb2tkZWNsYXJhdG9yKTogRG9uJ3Qgd2FybiBhYm91dCBgbG9uZyBsb25nJyBpbiBDOTkuCglNYWtlIHdhcm5pbmdzIGFib3V0IGltcGxpY2l0IGludCBiZSBwZWR3YXJucyBpbiBDOTkuICBEb24ndCB3YXJuCglhYm91dCBkdXBsaWNhdGUgdHlwZSBxdWFsaWZpZXJzIGluIEM5OS4KCShzdGFydF9mdW5jdGlvbik6IE1ha2Ugd2FybmluZyBhYm91dCBpbXBsaWN0IGludCByZXR1cm4gdHlwZSBiZSBhCglwZWR3YXJuIGluIEM5OS4KCSogYy1sZXguYyAoeXlsZXgpOiBEb24ndCB3YXJuIGFib3V0IGBsb25nIGxvbmcnIGluIEM5OS4KCSogYy10eXBlY2suYyAoY19leHBhbmRfcmV0dXJuKTogSW4gQzk5LCBhbHdheXMgcGVkd2FybiBhYm91dAoJYHJldHVybicgd2l0aCBubyB2YWx1ZSBpbiBmdW5jdGlvbiByZXR1cm5pbmcgbm9uLXZvaWQuCgoyMDAwLTA2LTI2ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEBjeWdudXMuY29tPgoKCSogYy10eXBlY2suYyAocGVkd2Fybl9jOTkpOiBOZXcuCgkqIGRpYWdub3N0aWMuYyAodmVycm9yLCB2d2FybmluZywgdnBlZHdhcm4pOiBFeHBvcnQuCgkqIHRvcGxldi5oOiBQcm90b3R5cGUgdGhlbS4KCjIwMDAtMDYtMjYgIEouIERhdmlkIEFuZ2xpbiAgPGRhdmVAaGlhdWx5MS5oaWEubnJjLmNhPgoKCSogYy10eXBlY2suYyAoZGlnZXN0X2luaXQpOiBSZXR1cm4gZXJyb3JfbWFya19ub2RlIG5vZGUgd2hlbgoJVFJFRV9UWVBFIChpbml0KSAgPT0gZXJyb3JfbWFya19ub2RlLgoKMjAwMC0wNi0yNiAgUGhpbGlwcCBUaG9tYXMgIDxwdGhvbWFzQHN1c2UuZGU+CgoJKiBhY2xvY2FsLm00IChBTV9XSVRIX05MUyk6IERvbid0IHNldCBNU0dGTVQgb3IgR01TR0ZNVCB0byBubywKCXRlc3QgZm9yIG1zZ2ZtdCB3aXRob3V0IHBhdGggaW5zdGVhZC4KCSogY29uZmlndXJlOiBSZWJ1aWx0LgoKMjAwMC0wNi0yNSBUaGVvZG9yZSBQYXBhZG9wb3VsbyA8VGhlb2RvcmUuUGFwYWRvcG91bG9Ac29waGlhLmlucmlhLmZyPgoKCSogZ2VuZ2VucnRsLmMgKHNwZWNpYWxfcnR4KTogRml4IHR5cG8gaW4gY29tbWVudC4KCjIwMDAtMDYtMjYgIE1pY2hhZWwgSGF5ZXMgIDxtLmhheWVzQGVsZWMuY2FudGVyYnVyeS5hYy5uej4KCgkqIG1rbGliZ2NjLmluIChMSUIyRlVOQ1MpOiBBZGQgbWlzc2luZyBzcGFjZS4KCjIwMDAtMDYtMjQgIEJlcm5kIFNjaG1pZHQgIDxiZXJuZHNAY3lnbnVzLmNvLnVrPgoKCSogdHJlZS5oIChlbnVtIHRyZWVfaW5kZXgpOiBBZGQgdmVjdG9yIHR5cGUgbm9kZXMuCglBZGQgYWNjZXNzb3IgbWFjcm9zIGZvciB0aGVtLgoJKFRZUEVfUkVQUkVTRU5BVElPTl9UWVBFKTogTmV3IG1hY3JvLgoJKiB0cmVlLmMgKGJ1aWxkX2NvbW1vbl90cmVlX25vZGVzXzIpOiBCdWlsZCB0aGVzZSBub2Rlcy4KCShmaW5pc2hfdmVjdG9yX3R5cGUpOiBOZXcgZnVuY3Rpb24uCgkqIGMtY29tbW9uLmMgKHR5cGVfZm9yX21vZGUpOiBIYW5kbGUgdmVjdG9yIG1vZGVzLgoJKiB0bS50ZXhpIChWRUNUT1JfTU9ERV9TVVBQT1JURURfUCk6IERvY3VtZW50LgoKCSogZGJ4b3V0LmMgKGRieG91dF90eXBlKTogSGFuZGxlIFZFQ1RPUl9UWVBFcy4KCSogZHdhcmYuaCAoZW51bSBkd2FyZl9mdW5kYW1lbnRhbF90eXBlKTogQWRkIDEyOCBiaXQgaW50ZWdlcnMuCgkqIGR3YXJmMm91dC5jIChsb29rdXBfdHlwZV9kaWUpOiBIYW5kbGUgVkVDVE9SX1RZUEVzLgoJKGdlbl90eXBlX2RpZSk6IExpa2V3aXNlLgoJKiBkd2FyZm91dC5jIChkd2FyZl9mdW5kX3R5cGVfbmFtZSk6IEhhbmRsZSAxMjggYml0IGludGVnZXJzLgoJKGZ1bmRhbWVudGFsX3R5cGVfY29kZSk6IExpa2V3aXNlLgoJKHR5cGVfaXNfZnVuZGFtZW50YWwpOiBWRUNUT1JfVFlQRXMgYXJlbid0LgoJKG91dHB1dF90eXBlKTogSGFuZGxlIFZFQ1RPUl9UWVBFcy4KCjIwMDAtMDYtMjUgIEthenUgSGlyYXRhICA8a2F6dUBoeGkuY29tPgoKCSogY29uZmlnL2FybS5jOiBGaXggYSBjb21tZW50IHR5cG8uCgkqIGNvbmZpZy9hcm0uaDogTGlrZXdpc2UuCgoyMDAwLTA2LTI1ICBQaGlsaXBwIFRob21hcyAgPHB0aG9tYXNAc3VzZS5kZT4KCgkqIGFjbG9jYWwubTQgKEFNX1dJVEhfTkxTKTogU2V0IGNyZWF0ZV9jYXRhbG9ncz1ubyBpZiBubyBjYXRhbG9nCgljb21waWxlciBmb3VuZC4KCUFNX0dOVV9HRVRURVhUOiBEb24ndCBzZXQgQ0FUQUxPR1MgaWYgY3JlYXRlX2NhdGFsb2dzPW5vLgoJKiBjb25maWd1cmU6IFJlYnVpbHQuCgoyMDAwLTA2LTI1ICBKb2huIERhdmlkIEFuZ2xpbiAgPGRhdmUuYW5nbGluQG5yYy5jYT4KCgkqIGNvbmZpZy92YXgvdmF4LmggKFRBUkdFVF9TV0lUQ0hFUyk6IFByb3ZpZGUgZGVzY3JpcHRpb25zLgoKMjAwMC0wNi0yNSBIZXJtYW4gQS5KLiB0ZW4gQnJ1Z2dlIDxIYWouVGVuLkJydWdnZUBuZXQuSENDLm5sPgoKCSogbWtsaWJnY2MuaW46IFByZWZlciBMSUIxQVNNRlVOQ1Mgb3ZlciBMSUIyRlVOQ1Mgd2hlbiBnZW5lcmF0aW5nCglsaWJnY2MuYS4KCjIwMDAtMDYtMjQgIE1hcmMgRXNwaWUgPGVzcGllQGN2cy5vcGVuYnNkLm9yZz4KCgkqIGNvbGxlY3QyLmMgKHJlc29sdmVfbGliX25hbWUpOiBNb3ZlICcvJyBjaGVjayBvdXQgb2YgbG9vcC4KCjIwMDAtMDYtMjQgIERpcmsgRHVlbGxtYW5uICA8RGlyay5EdWVsbG1hbm5AY2Vybi5jaD4KCgkqIGdpbmNsdWRlL3N0ZGRlZi5oIChOVUxMKTogZGVmaW5lIGZvciBub24tZ251IEMrKyBwYXJzZXJzIGFzIDAuCgoyMDAwLTA2LTI0ICBKYWt1YiBKZWxpbmVrICA8amFrdWJAcmVkaGF0LmNvbT4KCgkqIHN0bXQuYyAoZXhwYW5kX2RlY2xfY2xlYW51cCk6IEVtaXQgYSBkdW1teSBpbnNuIGFmdGVyCglsYXN0X3VuY29uZGl0aW9uYWxfY2xlYW51cC4KCjIwMDAtMDYtMjQgIEJlcm5kIFNjaG1pZHQgIDxiZXJuZHNAY3lnbnVzLmNvLnVrPgoKCSogdHJlZS5kZWYgKFZFQ1RPUl9UWVBFKTogTmV3IG5vZGUgdHlwZS4KCSogdHJlZS5oOiBBZGp1c3Qgc29tZSBjb21tZW50cyB0byByZWZsZWN0IGFkZGl0aW9uIG9mIHZlY3RvciB0eXBlcy4KCShUWVBFX1ZFQ1RPUl9TVUJQQVJUUyk6IE5ldyBtYWNyby4KCSogc3Rvci1sYXlvdXQuYyAobGF5b3V0X3R5cGUpOiBIYW5kbGUgVkVDVE9SX1RZUEUuCgkqIGMtY29udmVydC5jIChjb252ZXJ0KTogTGlrZXdpc2UuCgkqIGNvbnZlcnQuYyAoY29udmVydF90b19pbnRlZ2VyKTogSGFuZGxlIHZlY3RvciBtb2Rlcy4KCShjb252ZXJ0X3RvX3ZlY3Rvcik6IE5ldyBmdW5jdGlvbi4KCSogY29udmVydC5oIChjb252ZXJ0X3RvX3ZlY3Rvcik6IERlY2xhcmUuCgkqIGV4cHIuYyAoY29udmVydF9tb3ZlKTogSGFuZGxlIHZlY3RvciBtb2Rlcy4KCSogZXhwbWVkLmMgKGV4dHJhY3RfYml0X2ZpZWxkKTogRG9uJ3QgYWJvcnQgZm9yIHZlY3RvciBtb2Rlcy4KCjIwMDAtMDYtMjQgIE1hcmVrIE1pY2hhbGtpZXdpY3ogIDxtYXJla21AbGludXgub3JnLnBsPgoKCSogY29uZmlnL2F2ci9hdnItcHJvdG9zLmggKGF2cl9oYXJkX3JlZ25vX21vZGVfb2spOiBOZXcgcHJvdG90eXBlLgoJKiBjb25maWcvYXZyL2F2ci5jIChvdXRfYWRqX2ZyYW1lX3B0ciwgb3V0X3NldF9zdGFja19wdHIpOgoJTmV3IGZ1bmN0aW9ucywgY29tbW9uIGNvZGUgbW92ZWQgZnJvbSBmdW5jdGlvbl97cHJvbG9ndWUsZXBpbG9ndWV9CglhbmQgZXh0ZW5kZWQgdG8gc3VwcG9ydCB0aGUgLW10aW55LXN0YWNrIG9wdGlvbi4KCShmdW5jdGlvbl9wcm9sb2d1ZSwgZnVuY3Rpb25fZXBpbG9ndWUpOiBVc2UgdGhlbS4KCVVzZSBsbzgvaGk4IGNvbnNpc3RlbnRseSBmb3IgYXNtIG91dHB1dCByZWFkYWJpbGl0eS4KCShhdnJfaGFyZF9yZWdub19tb2RlX29rKTogTmV3IGZ1bmN0aW9uLgoJKiBjb25maWcvYXZyL2F2ci5oIChUQVJHRVRfU1dJVENIRVMpOiBGaXggdHlwby4gIEFkZCAtbXRpbnktc3RhY2suCgkoVU5JVFNfUEVSX1dPUkQpOiBEZWZpbmUgYXMgNCAobm90IDEpIHdoZW4gY29tcGlsaW5nIGxpYmdjYzIuYy4KCShIQVJEX1JFR05PX01PREVfT0spOiBDYWxsIHRoZSBhdnJfaGFyZF9yZWdub19tb2RlX29rIGZ1bmN0aW9uLgoJKiBjb25maWcvYXZyL2F2ci5tZCAoKm1vdl9zcF9yKTogQWRkIHN1cHBvcnQgZm9yIC1tdGlueS1zdGFjay4KCVdyaXRlIFNQSCBiZWZvcmUgU1BMLgoJKCptb3ZxaSk6IE5vIG5lZWQgdG8gZGlzYWJsZSBpbnRlcnJ1cHRzIGZvciBqdXN0IG9uZSAib3V0IgoJaW4gYWx0ZXJuYXRpdmUgNS4gIENoYW5nZSBsZW5ndGggYXR0cmlidXRlIGZyb20gNCB0byAxLgoJKiBjb25maWcvYXZyL2xpYmdjYy5TIChfX3Byb2xvZ3VlX3NhdmVzX18sIF9fZXBpbG9ndWVfcmVzdG9yZXNfXyk6CglXcml0ZSBTUEggYmVmb3JlIFNQTC4KCjIwMDAtMDYtMjQgIEJlcm5kIFNjaG1pZHQgIDxiZXJuZHNAY3lnbnVzLmNvLnVrPgoKCSogcnRsLnRleGkgKFZlY3RvciBPcGVyYXRpb25zKTogTmV3IG5vZGUuCgkoQXJpdGhtZXRpYyk6IEFkZCBzc19wbHVzLCB1c19wbHVzLCBzc19taW51cywgdXNfbWludXMuCgkoQ29udmVyc2lvbnMpOiBBZGQgc3NfdHJ1bmNhdGUsIHVzX3RydW5jYXRlLgoJKiBydGwuZGVmIChWRUNfTUVSR0UsIFZFQ19TRUxFQ1QsIFZFQ19DT05DQVQsIFZFQ19SRU9SREVSLAoJVkVDX0NPTlNULCBWRUNfRFVQTElDQVRFLCBTU19QTFVTLCBTU19NSU5VUywgU1NfVFJVTkNBVEUsCglVU19UUlVOQ0FURSk6IE5ldyBydHggY29kZXMuCgkqIG1hY2htb2RlLmRlZjogQWRkIHZlY3RvciBtb2Rlcy4KCSogbWFjaG1vZGUuaCAoZW51bSBtb2RlX2NsYXNzKTogQWRkIE1PREVfVkVDVE9SX0lOVCBhbmQKCU1PREVfVkVDVE9SX0ZMT0FULgoJKElOVEVHRVJfTU9ERV9QKTogQ2hlY2sgZm9yIE1PREVfVkVDVE9SX0lOVC4KCShGTE9BVF9NT0RFX1ApOiBDaGVjayBmb3IgTU9ERV9WRUNUT1JfRkxPQVQuCgkoVkVDVE9SX01PREVfUCk6IE5ldy4KCjIwMDAtMDYtMjQgIE5hdGhhbiBTaWR3ZWxsICA8bmF0aGFuQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjcHAudGV4aTogQ2xhcmlmeSAjcHJhZ21hIEdDQyBuYW1lc3BhY2UuCgoyMDAwLTA2LTI0ICBQaGlsaXBwIFRob21hcyAgPHB0aG9tYXNAc3VzZS5kZT4KCgkqIGFjbG9jYWwubTQoQU1fR05VX0dFVFRFWFQpOiBJZiBMSU5HVUFTIGlzbid0IHNldCwgYnVpbGQKCWFsbCBjYXRhbG9ncyBzcGVjaWZpZWQgaW4gQUxMX0xJTkdVQVMuCgkqIGNvbmZpZ3VyZTogUmVidWlsdC4KCjIwMDAtMDYtMjMgIEpha3ViIEplbGluZWsgIDxqYWt1YkByZWRoYXQuY29tPgoKCSogY29uZmlnL3NwYXJjL3NwYXJjLm1kIChyZWxvYWRfb3V0ZGkrMSk6IEhhbmRsZQoJSE9TVF9CSVRTX1BFUl9XSURFX0lOVCA9PSA2NCBjYXNlIGNvcnJlY3RseS4KCShhZGRkaTNfaW5zbl9zcDMyKzEsIGFkZGRpM19pbnNuX3NwMzIrMiwgYW5kc2kzKzIpOiBMaWtld2lzZS4KCjIwMDAtMDYtMjMgIEdlb2ZmcmV5IEtlYXRpbmcgIDxnZW9mZmtAY3lnbnVzLmNvbT4KCgkqIGFsaWFzLmMgKGZpeGVkX3NjYWxhcl9hbmRfdmFyeWluZ19zdHJ1Y3RfcCk6IERvbid0IGV4YW1pbmUKCXN0cnVjdCB2cy4gc2NhbGFyLW5lc3Mgd2hlbiAtZm5vLXN0cmljdC1hbGlhc2luZy4KCjIwMDAtMDYtMjMgIE5hdGhhbiBTaWR3ZWxsICA8bmF0aGFuQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjcHBsaWIuYyAoc3RydWN0IHByYWdtYV9lbnRyeSk6IE5ldyBzdHJ1Y3R1cmUuCgkocHJhZ21hX2Rpc3BhdGNoKTogUHJhZ21hIGRpc3BhdGNoZXIuCgkodG9wX3ByYWdtYXMsIGdjY19wcmFnbWFzKTogTmV3IHN0YXRpYyB2YXJpYWJsZXMuCgkoZG9fcHJhZ21hKTogVXNlIHByYWdtYV9kaXNwYXRjaC4KCShkb19wcmFnbWFfZ2NjKTogTmV3IHByYWdtYSBoYW5kbGVyLgoJKiBjcHAudGV4aTogVXBkYXRlLgoKMjAwMC0wNi0yMyAgSmFrdWIgSmVsaW5layAgPGpha3ViQHJlZGhhdC5jb20+CgoJKiBjYWxscy5jIChjb21wdXRlX2FyZ3VtZW50X2FkZHJlc3Nlcyk6IEZvcmNlIHN0YWNrIHNsb3RzIGludG8KCWFsaWFzIHNldCAwLgoJKiBleHByLmMgKGVtaXRfcHVzaF9pbnNuKTogRm9yY2UgcHVzaGVzIGludG8gYWxpYXMgc2V0IDAuCgoyMDAwLTA2LTIzICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEBjeWdudXMuY29tPgoKCSogY29uZmlnL2lhNjQvaWE2NC5tZCAocHJlZF9yZWxfbXV0ZXgpOiBPbmx5IHRha2Ugb25lIHJlZ2lzdGVyLgoJKiBjb25maWcvaWE2NC9pYTY0LmMgKGVtaXRfcHJlZGljYXRlX3JlbGF0aW9uX2luZm8pOiBBZGp1c3QgdG8gbWF0Y2guCgoyMDAwLTA2LTIyICBKYXNvbiBNZXJyaWxsICA8amFzb25AcmVkaGF0LmNvbT4KCgkqIHRvcGxldi5jIChjb21waWxlX2ZpbGUpOiBBbHdheXMgY2FsbCB0aW1ldmFyX3ByaW50LgoJKiBNYWtlZmlsZS5pbiAoY2FsbHMubyk6IERlcGVuZCBvbiBUSU1FVkFSX0guCgoyMDAwLTA2LTIyICBOYXRoYW4gU2lkd2VsbCAgPG5hdGhhbkBjb2Rlc291cmNlcnkuY29tPgoKCSogdmFyYXNtLmMgKGNvbnN0YW50X2Rlc2NyaXB0b3IpOiBNYWtlIGNvbnRlbnRzIHVuc2lnbmVkIGNoYXIuCgkobWFya19jb25zdF9oYXNoX2VudHJ5KTogQWRqdXN0LgoJKGNvbnN0X2hhc2gpOiBKdXN0IGhhc2ggdGhlIGNvZGUgb2YgdW5rbm93biBub2Rlcy4KCShjb21wYXJlX2NvbnN0YW50XzEpOiBBZGp1c3QgZm9yIHVuc2lnbmVkIGNoYXIuCglVc2UgbGFuZ3VhZ2Ugc3BlY2lmaWMgZXhwYW5kZXIgb24gdW5rbm93biBub2Rlcy4KCShyZWNvcmRfY29uc3RhbnRfMSk6IExpa2V3aXNlLgoKMjAwMC0wNi0yMSAgWmFjayBXZWluYmVyZyAgPHphY2tAd29sZXJ5LmN1bWIub3JnPgoKCSogY3BwZmlsZXMuYyAoY3BwX21ha2Vfc3lzdGVtX2hlYWRlcik6IE5ldyBmdW5jdGlvbi4KCSogY3BwbGliLmg6IFByb3RvdHlwZSBpdC4KCSogY3BwbGliLmMgKGRvX2xpbmUsIGRvX3ByYWdtYV9zeXN0ZW1faGVhZGVyKTogVXNlIGl0LgoJKiBmaXgtaGVhZGVyLmMgKHJlYWRfc2Nhbl9maWxlKTogVXNlIGl0LgoKCSogZml4LWhlYWRlci5jIChjaGVja19tYWNyb19uYW1lcyk6IENhc3Qgc2Vjb25kIGFyZyBvZgoJY3BwX2RlZmluZWQgdG8gY29uc3QgdW5zaWduZWQgY2hhciAqLgoJKHJlYWRfc2Nhbl9maWxlKTogTWFrZSBnZXRjaGFyX2NhbGwgY29uc3QgdW5zaWduZWQgY2hhci4KCjIwMDAtMDYtMjEgIFphY2sgV2VpbmJlcmcgIDx6YWNrQHdvbGVyeS5jdW1iLm9yZz4KCgkqIGNwcGZpbGVzLmM6IEluY2x1ZGUgc3BsYXktdHJlZS5oLCBub3QgaGFzaHRhYi5oLgoJKHJlZHVuZGFudF9pbmNsdWRlX3AsIG1ha2VfSUhBU0gsIGhhc2hfSUhBU0gsIGVxX0lIQVNIKTogRGVsZXRlLgoJKGRlc3Ryb3lfaW5jbHVkZV9maWxlX25vZGUpOiBOZXcuCgkoX2NwcF9pbml0X2luY2x1ZGVfaGFzaCk6IFJlbmFtZSBfY3BwX2luaXRfaW5jbHVkZV90YWJsZS4KCUNyZWF0ZSBhIHNwbGF5IHRyZWUsIG5vdCBhIGhhc2ggdGFibGUuCgkob3Blbl9pbmNsdWRlX2ZpbGUpOiBMb29rIHVwIHRoZSBwYXRoIGluIHRoZSBpbmNsdWRlIHRhYmxlLAoJZG8gdGhlIG11bHRpcGxlIGluY2x1ZGUgb3B0aW1pemF0aW9uIGhlcmUsIGV0Yy4KCShjcHBfaW5jbHVkZWQpOiBXYWxrIHRoZSBwYXRoLgoJKGZpbmRfaW5jbHVkZV9maWxlKTogSnVzdCB3YWxrIHRoZSBwYXRoIGNhbGxpbmcKCW9wZW5faW5jbHVkZV9maWxlLCBvciBjYWxsIGl0IGRpcmVjdGx5IGZvciBhbiBhYnNvbHV0ZSBwYXRoLgoJKF9jcHBfZmFrZV9paGFzaCk6IFJlbmFtZSBfY3BwX2Zha2VfaW5jbHVkZSBhbmQgdXBkYXRlIGZvciBuZXcKCXNjaGVtZS4KCShyZWFkX2luY2x1ZGVfZmlsZSk6IFVwZGF0ZSBmb3IgbmV3IHNjaGVtZS4gIERvbid0IGNsb3NlIHRoZQoJZmlsZSB1bmxlc3MgcmVhZGluZyBmYWlscy4KCShfY3BwX2V4ZWN1dGVfaW5jbHVkZSwgY3BwX3JlYWRfZmlsZSk6IFR3ZWFrIGZvciBuZXcgc2NoZW1lLgoKCSogY3BwaGFzaC5oIChzdHJ1Y3QgaWhhc2gsIE5FVkVSX1JFSU5DTFVERSk6IERlbGV0ZS4KCShzdHJ1Y3QgaW5jbHVkZV9maWxlKTogTmV3LgoJKE5FVkVSX1JFUkVBRCwgRE9fTk9UX1JFUkVBRCwgQ1BQX0lOX1NZU1RFTV9IRUFERVIpOiBOZXcKCW1hY3Jvcy4KCShDUFBfUEVEQU5USUMsIENQUF9XVFJBRElUSU9OQUwpOiBVcGRhdGUuCglVcGRhdGUgcHJvdG90eXBlcy4KCgkqIGNwcGluaXQuYzogSW5jbHVkZSBzcGxheS10cmVlLmguCgkoY3BwX3JlYWRlcl9pbml0LCBjcHBfY2xlYW51cCk6IFVwZGF0ZS4KCgkqIGNwcGxpYi5oIChzdHJ1Y3QgY3BwX2J1ZmZlcik6IENoYW5nZSBpaGFzaCBmaWVsZCB0bwoJJ3N0cnVjdCBpbmNsdWRlX2ZpbGUgKmluYycuICBSZW1vdmUgc3lzdGVtX2hlYWRlcl9wLgoJKHN0cnVjdCBjcHBfcmVhZGVyKTogQ2hhbmdlIGFsbF9pbmNsdWRlX2ZpbGVzIHRvIGEKCXN0cnVjdCBzcGxheV90cmVlX3MgKi4KCgkqIGNwcGxleC5jOiBVcGRhdGUgYWxsIHJlZmVyZW5jZXMgdG8gY3BwX2J1ZmZlci0+aWhhc2ggYW5kL29yCgljcHBfYnVmZmVyLT5zeXN0ZW1faGVhZGVyX3AuCgkoY3BwX3BvcF9idWZmZXIpOiBDbG9zZSBmaWxlIGhlcmUsIG9ubHkgaWYgRE9fTk9UX1JFUkVBRC4KCgkqIE1ha2VmaWxlLmluIChTUExBWV9UUkVFX0gpOiBOZXcgbWFjcm8uCgkoY3BwZmlsZXMubywgY3BwaW5pdC5vKTogVXBkYXRlIGRlcGVuZGVuY2llcy4KCldlZCBKdW4gMjEgMTE6MDU6NDggMjAwMCAgTWFydGluIEJ1Y2hob2x6IDxtYXJ0aW5AeGVtYWNzLm9yZz4KCgkqIGludm9rZS50ZXhpIChnKyspOiAiZysrIiBpcyBub3QgYSBzY3JpcHQgYW55bW9yZS4KCjIwMDAtMDYtMjAgIEouIERhdmlkIEFuZ2xpbiAgPGRhdmVAaGlhdWx5MS5oaWEubnJjLmNhPgoKCSogZnVuY3Rpb24uYyAocm91bmRfZG93bik6IERlbGV0ZSBvYnNvbGV0ZSBwcm90b3R5cGUuCgoJKiBwYS5oIChDUFBfU1BFQyk6IEFkZCB3aGl0ZXNwYWNlIGFmdGVyIC1EX19TVERDX0VYVF9fLgoKMjAwMC0wNi0yMCAgWmFjayBXZWluYmVyZyAgPHphY2tAd29sZXJ5LmN1bWIub3JnPgoKCSogY29uZmlndXJlLmluOiBVc2UgJ3Rlc3QgYSA9IGInIG5vdCAndGVzdCBhID09IGInLgoJKiBjb25maWd1cmU6IFJlZ2VuLgoKCSogTWFrZWZpbGUuaW4gKGZpeC1oZWFkZXIpOiBMaW5rIHdpdGggJChMSUJTKSBub3QgJChIT1NUX0xJQlMpLgoKCSogTWFrZWZpbGUuaW46IFJlbW92ZSBhbGwgcmVmZXJlbmNlcyB0byBIT1NUX0lOVExMSUJTLgoKCSogY3BwbGV4LmMgKHBhcnNlX25hbWUpOiBEb24ndCB3YXJuIGFib3V0ICQgaW4gaWRlbnRpZmllcnMgaWYKCXNraXBwaW5nLgoKMjAwMC0wNi0yMCAgUGhpbGlwcCBUaG9tYXMgIDxwdGhvbWFzQHN1c2UuZGU+CgoJKiBjb25maWcvcGEvcGEuaChUQVJHRVRfU1dJVENIRVMpOiBSZXF1aXJlIGJpbnV0aWxzIDIuMTAgb3IgbGF0ZXIKCWZvciBQQSAyLjAuCgpNb24gSnVuIDE5IDIzOjI2OjQwIDIwMDAgIEoib3JuIFJlbm5lY2tlIDxhbXlsYWFyQGN5Z251cy5jby51az4KCgkqIFRha2UgUkVHX0lOQyBub3RlcyBpbnRvIGFjY291bnQuCgoyMDAwLTA2LTE5ICBaYWNrIFdlaW5iZXJnICA8emFja0B3b2xlcnkuY3VtYi5vcmc+CgoJKiBjLXBhcnNlLmluICh1bmRlY2xhcmVkX3ZhcmlhYmxlX25vdGljZSk6IE1vdmVkIHRvIGMtdHlwZWNrLmMuCgkocHJpbWFyeTogSURFTlRJRklFUik6IEp1c3QgY2FsbCBidWlsZF9leHRlcm5hbF9yZWYuCgkqIGMtcGFyc2UueSwgYy1wYXJzZS5jLCBvYmpjL29iamMtcGFyc2UueSwgb2JqYy9vYmpjLXBhcnNlLmM6CglSZWdlbmVyYXRlLgoJKiBjLWxleC5jIChsYXN0aWRkZWNsKTogUmVtb3ZlLgoJKHl5bGV4KTogUmVwbGFjZSBhbGwgaW5zdGFuY2VzIG9mIGxhc3RpZGRlY2wgd2l0aCBsb2NhbAoJdmFyaWFibGVzLgoKCSogYy10eXBlY2suYyAoYnVpbGRfZXh0ZXJuYWxfcmVmKTogTmV3IGZ1bmN0aW9uLiAgVHJlYXQgZGVjbHMKCXdpdGggQ19ERUNMX0FOVElDSVBBVEVEIG1vc3RseSB0aGUgc2FtZSBhcyBub25leGlzdGVudCBkZWNscy4KCUxvb2sgdXAgdGhlIGRlY2wgZnJvbSB0aGUgaWQgaGVyZS4gIENhbGwgbG9va3VwX29iamNfaXZhci4KCSogYy1sYW5nLmMgKGxvb2t1cF9vYmpjX2l2YXIpOiBTdHViLgoJKiBvYmpjL29iamMtYWN0LmMgKGxvb2t1cF9vYmpjX2l2YXIpOiBOZXcgZnVuY3Rpb24uCgoJKiBjLXRyZWUuaDogUHJvdG90eXBlIGxvb2t1cF9vYmpjX2l2YXIgYW5kIGJ1aWxkX2V4dGVybmFsX3JlZi4KCSogYy1sZXguaDogRG9uJ3QgZGVjbGFyZSBsYXN0aWRkZWNsLgoKMjAwMC0wNi0xOSAgQmVuamFtaW4gQ2hlbGYgIDxjaGVsZkBjb2Rlc291cmNlcnkuY29tPgoKCSogYy1jb21tb24uaCAoSUZfQ09ORCk6IEFkZGVkIGRvY3VtZW50YXRpb24uCgkoVEhFTl9DTEFVU0UpOiBMaWtld2lzZS4KCShFTFNFX0NMQVVTRSk6IExpa2V3aXNlLgoJKFdISUxFX0NPTkQpOiBMaWtld2lzZS4KCShXSElMRV9CT0RZKTogTGlrZXdpc2UuCgkoRE9fQ09ORCk6IExpa2V3aXNlLgoJKERPX0JPRFkpOiBMaWtld2lzZS4KCShSRVRVUk5fRVhQUik6IExpa2V3aXNlLgoJKEVYUFJfU1RNVF9FWFBSKTogTGlrZXdpc2UuCgkoRk9SX0lOSVRfU1RNVCk6IExpa2V3aXNlLgoJKEZPUl9DT05EKTogTGlrZXdpc2UuCgkoRk9SX0VYUFIpOiBMaWtld2lzZS4KCShGT1JfQk9EWSk6IExpa2V3aXNlLgoJKFNXSVRDSF9DT05EKTogTGlrZXdpc2UuCgkoU1dJVENIX0JPRFkpOiBMaWtld2lzZS4KCShDQVNFX0xPVyk6IExpa2V3aXNlLgoJKENBU0VfSElHSCk6IExpa2V3aXNlLgoJKEdPVE9fREVTVElOQVRJT04pOiBMaWtld2lzZS4KCShDT01QT1VORF9CT0RZKTogTGlrZXdpc2UuCgkoQVNNX0NWX1FVQUwpOiBMaWtld2lzZS4KCShBU01fU1RSSU5HKTogTGlrZXdpc2UuCgkoQVNNX09VVFBVVFMpOiBMaWtld2lzZS4KCShBU01fSU5QVVRTKTogTGlrZXdpc2UuCgkoQVNNX0NMT0JCRVJTKTogTGlrZXdpc2UuCgkoREVDTF9TVE1UX0RFQ0wpOiBMaWtld2lzZS4KCShTVE1UX0VYUFJfU1RNVCk6IExpa2V3aXNlLgoJKExBQkVMX1NUTVRfTEFCRUwpOiBMaWtld2lzZS4KCgkqIGMtY29tbW9uLmRlZjogQWRkZWQgZG9jdW1lbmV0aW9uIGZvciBTUkNMT0MsIEVYUFJfU1RNVCwKCUNPTVBPVU5EX1NUTVQsIERFQ0xfU1RNVCwgSUZfU1RNVCwgRk9SX1NUTVQsIFdISUxFX1NUTVQsIERPX1NUTVQsCglSRVRVUk5fU1RNVCwgQlJFQUtfU1RNVCwgQ09OVElOVUVfU1RNVCwgU1dJVENIX1NUTVQsIEdPVE9fU1RNVCwKCUxBQkVMX1NUTVQsIEFTTV9TVE1ULCBTQ09QRV9TVE1ULCBDQVNFX0xBQkVMLCBTVE1UX0VYUFIuCgoyMDAwLTA2LTE5ICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBjb25maWd1cmUuaW4gKC0tZW5hYmxlLWNoZWNraW5nKTogVXBkYXRlIC0taGVscCBkb2MgdG8gcmVmbGVjdAoJbmV3IGRlZmF1bHRzLiAgRW5zdXJlICRhY19zYXZlX0lGUyBpcyBzZXQgYmVmb3JlICRJRlMgaXMgY2hhbmdlZC4KClN1biBKdW4gMTggMjE6NDI6MTUgMjAwMCAgUmljaGFyZCBLZW5uZXIgIDxrZW5uZXJAdmxzaTEudWx0cmEubnl1LmVkdT4KCgkqIGdjc2UuYyAoaW5zZXJ0X2luc25fZW5kX2JiKTogQWx3YXlzIHB1dCBhZnRlciBOT1RFX0lOU05fQkFTSUNfQkxPQ0suCgoJKiBmdW5jdGlvbi5jIChwdXRfdmFyX2ludG9fc3RhY2spOiBEb24ndCByZWZlcmVuY2UgREVDTF8gZmllbGRzCglpZiBpbnB1dCBpcyBhIFNBVkVfRVhQUi4KCVVzZSBzZXRfbWVtX2F0dHJpYnV0ZXMgaW4gQ09NUExFWCBjYXNlLgoKMjAwMC0wNi0xOCAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAY3lnbnVzLmNvbT4KCgkqIGNvbmZpZy9pYTY0L2lhNjQtcHJvdG9zLmggKHByb2Nlc3NfZm9yX3Vud2luZF9kaXJlY3RpdmUpOiBEZWNsYXJlLgoJKGlhNjRfZmlsZV9zdGFydCk6IERlY2xhcmUuCgkqIGNvbmZpZy9pYTY0L2lhNjQuaCAoQURETF9SRUdOT19QKTogRG9uJ3QgY29tcGFyZSB1bnNpZ25lZCBhZ2FpbnN0IDAuCgkoR1JfUkVHTk9fUCk6IExpa2V3aXNlLgoJKiBjb25maWcvaWE2NC9pYTY0LmM6IE1hbnkgcHJvdG90eXBlcy4KCShpYTY0X3JlZ19udW1iZXJzKTogQ29uc3RpZnkuCgkoaWE2NF9pbnB1dF9yZWdfbmFtZXMsIGlhNjRfbG9jYWxfcmVnX25hbWVzKTogTGlrZXdpc2UuCgkoaWE2NF9zZWN0aW9uX3RocmVzaG9sZCk6IE1ha2UgdW5zaWduZWQuCgkoaWE2NF9wcmludF9vcGVyYW5kKTogQ29uc3RpZnkuCgkoZml4X3JhbmdlKTogQ29uc3RpZnkuCgkoaWE2NF9pbml0X2J1aWx0aW5zKTogRG9uJ3QgY29tcGFyZSBzaWduZWQgdnMgdW5zaWduZWQuCgkoaWE2NF9leHBhbmRfYnVpbHRpbik6IExpa2V3aXNlLgoKCSogY29uZmlnL2lhNjQvaWE2NC5oIChFWFRSQV9DT05TVFJBSU5UKTogTmV3LgoJKENPTlNUUkFJTlRfT0tfRk9SX1EpOiBOZXcuCgkqIGNvbmZpZy9pYTY0L2lhNjQubWQgKG1vdmRpX2ludGVybmFsKTogVXNlIFEgZm9yIGZwPC0+bWVtLgoJKG1vdnNmX2ludGVybmFsLCBtb3ZkZl9pbnRlcm5hbCk6IExpa2V3aXNlLgoJKGNtb3ZkaV9pbnRlcm5hbCk6IFJld3JpdGUgc28gdGhhdCBjb25zdHJhaW50cyBhbmQgcHJlZGljYXRlcyBtYXRjaDsKCXNpbXBsaWZ5IHNwbGl0dGVycy4KCShjbW92c2lfaW50ZXJuYWwpOiBMaWtld2lzZS4KCgkqIGNvbmZpZy9pYTY0L2lhNjQuaCAoQVNNX1NQRUMpOiBBZGQgLXggZm9yIGdhcy4KCShBU01fRklMRV9TVEFSVCk6IE5ldy4KCSogY29uZmlnL2lhNjQvaWE2NC5jIChpYTY0X2ZpbGVfc3RhcnQpOiBOZXcuCgkocnR4X25lZWRzX2JhcnJpZXIpOiBIYW5kbGUgcHJlZC5yZWwubXV0ZXguCgkoZW1pdF9wcmVkaWNhdGVfcmVsYXRpb25faW5mbyk6IE5ldy4KCSogY29uZmlnL2lhNjQvaWE2NC5tZCAocHJlZF9yZWxfbXV0ZXgpOiBOZXcuCgkqIGNvbmZpZy9pYTY0L2xpbnV4LmggKEFTTV9TUEVDKTogRGVmaW5lLgoJKiBjb25maWcvaWE2NC9zeXN2NC5oIChBU01fRklMRV9TVEFSVCk6IERlZmluZS4KCgkqIGNvbmZpZy9pYTY0L2lhNjQuYyAoaWE2NF9lbmNvZGVfc2VjdGlvbl9pbmZvKTogRml4IHRoaW5rbwoJZmlsdGVyaW5nIGdsb2JhbCByZWdpc3RlciB2YXJpYWJsZXMuCgoyMDAwLTA2LTE4ICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBjLWNvbW1vbi5jIChhZGRfY190cmVlX2NvZGVzKTogRml4IGRlZmluaXRpb24gZm9yIHRyYWRpdGlvbmFsIEMuCgoyMDAwLTA2LTE3ICBNaWNoYWVsIE1laXNzbmVyICA8bWVpc3NuZXJAcmVkaGF0LmNvbT4KCgkqIGdjYy5jIChkb19zcGVjXzEsICcldjMnIGNhc2UpOiBEbyBub3QgYWJvcnQgaWYgcGF0Y2ggbGV2ZWwgaXMKCW5vdCBwcmVzZW50IGFuZCB0aGVyZSBpcyBhIGZpZWxkIGFmdGVyIGEgJy0nLgoKMjAwMC0wNi0xNyAgQnJ1Y2UgS29yYiAgPGJrb3JiQGdudS5vcmc+CgoJKiBmaXhpbmMvY2hlY2sudHBsOiAgZmluaXNoIHRoZSBpbXBsZW1lbnRhdGlvbiBvZiBtdWx0aXBsZSB0ZXN0cwoJZm9yIGEgc2luZ2xlIGZpeAoJKiBmaXhpbmMvaW5jbGhhY2suZGVmKGN0cmxfcXVvdGVzX2RlZik6IGFkZCBhIHNlY29uZCB0ZXN0CgkoaW9fcXVvdGVzX2RlZik6IGFkZCBhIHNlY29uZCB0ZXN0CgkodmFyaW91cyk6IHJlb3JkZXIgYGZpbGVzJyBzbyB0aGF0ICJsaW1pdHMuaCIgaXMgbmV2ZXIgZmlyc3QKCSogZml4aW5jL3Rlc3RzL2Jhc2UvKjogdXBkYXRlIHRoZSB0ZXN0aW5nIG91dHB1dAoKU2F0IEp1biAxNyAxMDozMzo1OSAyMDAwICBSaWNoYXJkIEtlbm5lciAgPGtlbm5lckB2bHNpMS51bHRyYS5ueXUuZWR1PgoKCSogZ2NjLnRleGk6IFJlbW92ZSByZWZlcmVuY2UgdG8gc3R1cGlkLmMuCgoyMDAwLTA2LTE2ICBCZW5qYW1pbiBDaGVsZiAgPGNoZWxmQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjLWNvbW1vbi5jIChjX3RyZWVfY29kZV90eXBlKTogTmV3IGFycmF5LgoJKGNfdHJlZV9jb2RlX2xlbmd0aCk6IExpa2V3aXNlLgoJKGNfdHJlZV9jb2RlX25hbWUpOiBMaWtld2lzZS4KCShhZGRfY190cmVlX2NvZGVzKTogTmV3IGZ1bmN0aW9uLgoKCSogYy1jb21tb24uaCAoYWRkX2NfdHJlZV9jb2Rlcyk6IERlY2xhcmUuCgkoZW51bSBjX3RyZWVfY29kZSk6IE5ldyBlbnVtLgoKCSogYy1sZXguYyAoaW5pdF9wYXJzZSk6IEFkZGVkIGNhbGwgdG8gYWRkX2NfdHJlZV9jb2Rlcy4KCjIwMDAtMDYtMTYgIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIGZpeGluYy9pbmNsaGFjay5kZWYgKGN0cmxfcXVvdGVzX2RlZiwgaW9fcXVvdGVzX2RlZik6IE1vZGlmeQoJc2VsZWN0IHBhdHRlcm4gdG8gYWxzbyBtYXRjaCBtYWNybyBkZWZzIHdpdGggb25seSBvbmUgYXJndW1lbnQuCgpUaHUgSnVuIDE1IDE4OjU2OjEyIDIwMDAgIEplZmZyZXkgQSBMYXcgIChsYXdAY3lnbnVzLmNvbSkKCgkqIGkzODYubWQ6IENyZWF0ZSBuZXcgW3JpZ2h0LGxlZnRdIHJvdGF0ZSBhbmQgcmlnaHQgc2hpZnQKCXBhdHRlcm5zIHRvIG9wdGltaXplIHNoaWZ0IGJ5IDEgYml0IGZvciBjZXJ0YWluIGlhMzIgcHJvY2Vzc29ycy4KCVVwZGF0ZSBwYXR0ZXJucyB3aGljaCBwZXJmb3JtIGxlZnQgc2hpZnRzIHRvIG9wdGltaXplIHNoaWZ0IGJ5CgkxIGJpdCBmb3IgY2VydGFpbiBpYTMyIHByb2Nlc3NvcnMuCgkqIGkzODYuYyAoY29uc3RfaW50XzFfb3BlcmFuZCk6IE5ldyBwcmVkaWNhdGUuCgkqIGkzODYuaCAoUFJFRElDQVRFX0NPREVTKTogSGFuZGxlIGNvbnN0X2ludF8xX29wZXJhbmQuCgkqIGkzODYtcHJvdG9zLmggKGNvbnN0X2ludF8xX29wZXJhbmQpOiBQcm90b3R5cGUuCgpXZWQgSnVuIDE0IDIzOjQ2OjI2IDIwMDAgIEoib3JuIFJlbm5lY2tlIDxhbXlsYWFyQGN5Z251cy5jby51az4KCgkqIG1pcHMuYyAobWFjaGluZV9kZXBlbmRlbnRfcmVvcmcpOiBGaXggYnJhY2VzIGZvciBuZXN0ZWQgaWYuCgoyMDAwLTA2LTE0ICBHZW9mZiBLZWF0aW5nICA8Z2VvZmZrQGN5Z251cy5jb20+CgoJKiByczYwMDAuYyAodG9jX2hhc2hfZXEpOiBVc2UgQ09ERV9MQUJFTF9OVU1CRVIgdG8gY29tcGFyZQoJTEFCRUxfUkVGcy4KCjIwMDAtMDYtMTQgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgoJKiBjb25mbGljdC5jIChjb25mbGljdF9ncmFwaF9jb21wdXRlKTogRG9uJ3QgbG9vayBmb3IgUkVHX0lOQy4KCgkqIGNvbmZpZy9pYTY0L2lhNjQuYyAoaWE2NF9zZXR1cF9pbmNvbWluZ192YXJhcmdzKTogRG9uJ3QgZW1pdAoJYXV0by1pbmMgY29kZS4KCgkqIHByaW50LXJ0bC5jIChwcmludF9ydHgpOiBFbWl0IHNwYWNlIGJlZm9yZSBtZW0gYWxpYXMgc2V0LgoKMjAwMC0wNi0xNCAgRGF2aWQgRWRlbHNvaG4gIDxlZGVsc29obkBnbnUub3JnPgoKCSogcnM2MDAwLmMgKGV4cGFuZF9ibG9ja19tb3ZlKTogRml4IHR5cG8gaW4gZWFybGllciBjaGFuZ2UuCgkocHJpbnRfb3BlcmFuZCk6IFJlbW92ZSB1bnVzZWQgdmFyaWFibGVzIG5lZyBhbmQgb3AuCgkodG9jX2hhc2hfbWFya19lbnRyeSk6IEZpeCBwcm90b3R5cGUuCgoyMDAwLTA2LTE0ICBCZW5qYW1pbiBDaGVsZiAgPGNoZWxmQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjLWNvbW1vbi5oIChJRl9DT05EKTogTW92ZWQgaGVyZSBmcm9tIGNwL2NwLXRyZWUuaC4KCShUSEVOX0NMQVVTRSk6IExpa2V3aXNlLgoJKEVMU0VfQ0xBVVNFKTogTGlrZXdpc2UuCgkoV0hJTEVfQ09ORCk6IExpa2V3aXNlLgoJKFdISUxFX0JPRFkpOiBMaWtld2lzZS4KCShET19DT05EKTogTGlrZXdpc2UuCgkoRE9fQk9EWSk6IExpa2V3aXNlLgoJKFJFVFVSTl9FWFBSKTogTGlrZXdpc2UuCgkoRVhQUl9TVE1UX0VYUFIpOiBMaWtld2lzZS4KCShGT1JfSU5JVF9TVE1UKTogTGlrZXdpc2UuCgkoRk9SX0NPTkQpOiBMaWtld2lzZS4KCShGT1JfRVhQUik6IExpa2V3aXNlLgoJKEZPUl9CT0RZKTogTGlrZXdpc2UuCgkoU1dJVENIX0NPTkQpOiBMaWtld2lzZS4KCShTV0lUQ0hfQk9EWSk6IExpa2V3aXNlLgoJKENBU0VfTE9XKTogTGlrZXdpc2UuCgkoQ0FTRV9ISUdIKTogTGlrZXdpc2UuCgkoR09UT19ERVNUSU5BVElPTik6IExpa2V3aXNlLgoJKENPTVBPVU5EX0JPRFkpOiBMaWtld2lzZS4KCShBU01fQ1ZfUVVBTCk6IExpa2V3aXNlLgoJKEFTTV9TVFJJTkcpOiBMaWtld2lzZS4KCShBU01fT1VUUFVUUyk6IExpa2V3aXNlLgoJKEFTTV9JTlBVVFMpOiBMaWtld2lzZS4KCShBU01fQ0xPQkJFUlMpOiBMaWtld2lzZS4KCShERUNMX1NUTVRfREVDTCk6IExpa2V3aXNlLgoJKFNUTVRfRVhQUl9TVE1UKTogTGlrZXdpc2UuCgkoTEFCRUxfU1RNVF9MQUJFTCk6IExpa2V3aXNlLgoJKFNDT1BFX0JFR0lOX1ApOiBMaWtld2lzZS4KCShTQ09QRV9FTkRfUCk6IExpa2V3aXNlLgoJKFNDT1BFX1NUTVRfQkxPQ0spOiBMaWtld2lzZS4KCShTQ09QRV9OVUxMSUZJRURfUCk6IExpa2V3aXNlLgoJKFNDT1BFX05PX0NMRUFOVVBTX1ApOiBMaWtld2lzZS4KCShTQ09QRV9QQVJUSUFMX1ApOiBMaWtld2lzZS4KCShBU01fVk9MQVRJTEVfUCk6IExpa2V3aXNlLgoJKFNUTVRfTElORU5PKTogTGlrZXdpc2UuCgkoU1RNVF9MSU5FTk9fRk9SX0ZOX1ApOiBMaWtld2lzZS4KCgkqIGMtY29tbW9uLmRlZjogTmV3IGZpbGUuIEFkZGVkIFNSQ0xPQywgU0laRU9GX0VYUFIsIEFSUk9XX0VYUFIsCglBTElHTk9GX0VYUFIsIEVYUFJfU1RNVCwgQ09NUE9VTkRfU1RNVCwgREVDTF9TVE1ULCBJRl9TVE1ULAoJRk9SX1NUTVQsIFdISUxFX1NUTVQsIERPX1NUTVQsIFJFVFVSTl9TVE1ULCBCUkVBS19TVE1ULAoJQ09OVElOVUVfU1RNVCwgU1dJVENIX1NUTVQsIEdPVE9fU1RNVCwgTEFCRUxfU1RNVCwgQVNNX1NUTVQsCglTQ09QRV9TVE1ULCBDQVNFX0xBQkVMLCBTVE1UX0VYUFIuCgoJKiBnZW5jaGVjay5jICh0cmVlX2NvZGVzW10pOiBBZGRlZCAnI2luY2x1ZGUgImMtY29tbW9uLmRlZiInLgoKMjAwMC0wNi0xNCAgRGF2aWQgTydCcmllbiAgPG9icmllbkBGcmVlQlNELm9yZz4KCgkqIGdjYy5jIChtYWluKTogUXVpZXQgY29tcGlsZXIgd2FybmluZ3MuICBhcmd2IGlzIGFzc3VtZWQgdG8gYmUKCXdyaXRhYmxlIGluIHBhcnRzIG9mIHRoZSBHQ0MgY29kZS4KCgkqIGNvbmZpZy9lbGZvcy5oIChBU01fR0VORVJBVEVfSU5URVJOQUxfTEFCRUwpOiBNYWtlIHByaW50ZgoJc3BlY2lmaWNhdGlvbiBtYXRjaCBjYXN0LgoKV2VkIEp1biAxNCAwOToyNTo1NyAyMDAwICBKZWZmcmV5IEEgTGF3ICAobGF3QGN5Z251cy5jb20pCgoJKiBjb25maWd1cmUuaW46IFJldmVydCBBQ19UWVBFX0dFVEdST1VQUyBwYXRjaCBmcm9tIEp1bmUgMTMuCgkqIGNvbmZpZ3VyZSwgY29uZmlnLmluOiBSZWJ1aWx0LgoJKiBzeXMtcHJvdG9zLmg6IFNpbWlsYXJseS4KCldlZCBKdW4gMTQgMDM6Mzk6NTggRURUIDIwMDAgIEpvaG4gV2VobGUgIChqb2huQGZlaXRoLmNvbSkKCgkqIGlmY3Z0LmMgKEVER0VfQ09NUExFWCk6IE1vdmUgZGVmaW5pdGlvbiAuLi4KCSogYmFzaWMtYmxvY2suaCAoRURHRV9DT01QTEVYKTogLi4uIGhlcmUuCgoJKiBsb29wLmMgKGNoZWNrX2RicmFfbG9vcCk6IFNwZWNpZnkgdGhlIHJlZ2lzdGVyIHdoZW4KCWdlbmVyYXRpbmcgUkVHX05PTk5FRyBub3RlcyBhbmQgZG9uJ3QgZ2VuZXJhdGUgZHVwbGljYXRlcy4KCjIwMDAtMDYtMTMgIEpha3ViIEplbGluZWsgIDxqYWt1YkByZWRoYXQuY29tPgoKCSogdHJlZS5oIChUWVBFX1VTRVJfQUxJR04sIERFQ0xfVVNFUl9BTElHTik6IERlZmluZS4KCShzdHJ1Y3QgdHJlZV90eXBlLCBzdHJ1Y3QgdHJlZV9kZWNsKTogQWRkIHVzZXJfYWxpZ24gbWVtYmVyLgoJKiBzdG9yLWxheW91dC5jIChsYXlvdXRfZGVjbCk6IFNldCBERUNMX1VTRVJfQUxJR04uCgkocGxhY2VfdW5pb25fZmllbGQpOiBJZiBCSUdHRVNUX0ZJRUxEX0FMSUdOTUVOVCBpcyBkZWZpbmVkCglhbmQgREVDTF9VU0VSX0FMSUdOIDAsIGNhcCBhbGlnbm1lbnQgdG8gdGhpcyB2YWx1ZS4KCShwbGFjZV9maWVsZCk6IExpa2V3aXNlLgoJKGZpbmFsaXplX3R5cGVfc2l6ZSk6IFNldCBUWVBFX1VTRVJfQUxJR04uCgkobGF5b3V0X3R5cGUpOiBMaWtld2lzZS4KCShpbml0aWFsaXplX3NpemV0eXBlcyk6IExpa2V3aXNlLgoJKiBjLWNvbW1vbi5jIChkZWNsX2F0dHJpYnV0ZXMpOiBTZXQgVFlQRV9VU0VSX0FMSUdOIHJlc3AuCglERUNMX1VTRVJfQUxJR04gdG8gMS4KCSogYy1kZWNsLmMgKGR1cGxpY2F0ZV9kZWNscyk6IFNldCBERUNMX1VTRVJfQUxJR04uCgkoeGZlcl90YWcpOiBTZXQgVFlQRV9VU0VSX0FMSUdOLgoJKGZpbmlzaF9zdHJ1Y3QpOiBTZXQgREVDTF9VU0VSX0FMSUdOIHJlc3AuIFRZUEVfVVNFUl9BTElHTi4KCShmaW5pc2hfZW51bSk6IExpa2V3aXNlLgoJKiBzdG10LmMgKGV4cGFuZF9kZWNsKTogU2V0IERFQ0xfVVNFUl9BTElHTi4KCShleHBhbmRfYW5vbl91bmlvbl9kZWNsKTogTGlrZXdpc2UuCgkqIHRyZWUuYyAobWFrZV9ub2RlKTogU2V0IERFQ0xfVVNFUl9BTElHTiByZXNwLiBUWVBFX1VTRVJfQUxJR04uCgkoYnVpbGRfaW5kZXhfdHlwZSk6IFNldCBUWVBFX1VTRVJfQUxJR04uCgkoYnVpbGRfcmFuZ2VfdHlwZSk6IExpa2V3aXNlLgoJKGJ1aWxkX2NvbW1vbl90cmVlX25vZGVzXzIpOiBMaWtld2lzZS4KCSogdG0udGV4aSAoQklHR0VTVF9GSUVMRF9BTElHTk1FTlQpOiBEb2N1bWVudCB0aGUgY2hhbmdlZCBtZWFuaW5nLgoKMjAwMC0wNi0xMyAgQW5kcmVhcyBKYWVnZXIgIDxhakBzdXNlLmRlPgoKCSogY29uZmlndXJlLmluOiBVc2UgLS1lbmFibGUtY2hlY2tpbmc9bWlzYyx0cmVlLGdjIGJ5IGRlZmF1bHQgaWYKCW5vIC0tZW5hYmxlLWNoZWNraW5nIG9wdGlvbiBpcyBnaXZlbiBhbmQgZm9yCgktLWVuYWJsZS1jaGVja2luZz15ZXMuCgkqIGNvbmZpZ3VyZTogUmVidWlsdC4KCjIwMDAtMDYtMTMgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgoJKiBsaWJnY2MyLmMgKGlhNjRfdGhyb3dfaGVscGVyKTogVXNlIF9fYnVpbHRpbl9yZXR1cm5fYWRkcmVzcy4KCShfX3Rocm93KTogRG9uJ3QgcGFzcyB0aGUgYWRkcmVzcyBvZiBhIGxhYmVsLgoKCSogY29uZmlnL2lhNjQvaWE2NC5jIChpYTY0X2NvbXB1dGVfZnJhbWVfc2l6ZSk6IFVzZQoJY3VycmVudF9mdW5jdGlvbl9pc19sZWFmLgoJKGlhNjRfZXhwYW5kX3Byb2xvZ3VlKTogTGlrZXdpc2UuICBNb2RpZnkgcmV0dXJuX2FkZHJlc3NfcG9pbnRlcl9ydHgKCWluc3RlYWQgb2YgcmVnX25hbWVzW1JFVFVSTl9BRERSRVNTX1JFR05VTV0uCgkoaWE2NF9pbml0X21hY2hpbmVfc3RhdHVzKTogUmVzZXQgcmV0dXJuX2FkZHJlc3NfcG9pbnRlcl9ydHguCgkqIGNvbmZpZy9pYTY0L2lhNjQuaCAoUkVUVVJOX0FERFJFU1NfUE9JTlRFUl9SRUdOVU0pOiBSZW5hbWUKCWZyb20gUkVUVVJOX0FERFJFU1NfUkVHTlVNLiAgVXBkYXRlIGFsbCB1c2VzLgoJKFJFVFVSTl9BRERSX1JUWCk6IFVzZSByZXR1cm5fYWRkcmVzc19wb2ludGVyX3J0eDsgcmV0dXJuCgl6ZXJvIGluc3RlYWQgb2YgbnVsbCBvbiBmYWlsdXJlLgoJKEVMSU1JTkFCTEVfUkVHUyk6IEFkZCByYS0+YjAgZWxpbWluYXRpb24uCgkoQ0FOX0VMSU1JTkFURSk6IFVwZGF0ZSBhY2NvcmRpbmdseS4KCShJTklUSUFMX0VMSU1JTkFUSU9OX09GRlNFVCk6IExpa2V3aXNlLgoJKFJFR0lTVEVSX05BTUVTKTogVXNlIGFuIGlsbGVnYWwgYXNzZW1ibGVyIG5hbWUgZm9yCglSRVRVUk5fQUREUkVTU19QT0lOVEVSX1JFR05VTS4KCjIwMDAtMDYtMTMgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgoJKiBjb25maWcvaWE2NC9pYTY0LmggKGVudW0gcmVnX2NsYXNzKTogUmVtb3ZlIEZSX0lOVF9SRUdTLCBGUl9GUF9SRUdTLAoJR1JfQU5EX0ZSX0lOVF9SRUdTLCBHUl9BTkRfRlJfRlBfUkVHUy4KCShSRUdfQ0xBU1NfTkFNRVMpOiBMaWtld2lzZS4KCShSRUdfQ0xBU1NfQ09OVEVOVFMpOiBMaWtld2lzZS4KCShGUl9GUF9SRUdOT19QLCBGUl9JTlRfUkVHTk9fUCk6IFJlbW92ZS4KCShIQVJEX1JFR05PX01PREVfT0spOiBSZW1vdmUgcmVmZXJlbmNlcyB0byB0aGVtLgoJKFJFR05PX1JFR19DTEFTUyk6IExpa2V3aXNlLgoJKFJFR19DTEFTU19GUk9NX0xFVFRFUik6IExpa2V3aXNlLgoJKENMQVNTX01BWF9OUkVHUyk6IExpa2V3aXNlLgoJKFJFR0lTVEVSX01PVkVfQ09TVCk6IExpa2V3aXNlLgoJKiBjb25maWcvaWE2NC9pYTY0LmMgKGlhNjRfc2Vjb25kYXJ5X3JlbG9hZF9jbGFzcyk6IExpa2V3aXNlLgoJKiBjb25maWcvaWE2NC9pYTY0Lm1kICgqKTogUmVwbGFjZSAiZSIgY29uc3RyYWludHMgd2l0aCAiZiIuCgkobW92cWlfaW50ZXJuYWwpOiBTcGVjaWFsIGNhc2UgbW92ZXMgZnJvbSB6ZXJvLgoJKG1vdmhpX2ludGVybmFsLCBtb3ZzaV9pbnRlcm5hbCk6IExpa2V3aXNlLgoJKG1vdmRpX2ludGVybmFsKTogTGlrZXdpc2UuICBGaWxsIG91dCAiZiIgY29uc3RyYWludHMuCgkobW92c2ZfaW50ZXJuYWwpOiBGaWxsIG91dCAiciIgY29uc3RyYWludHMuCgkobW92ZGZfaW50ZXJuYWwpOiBMaWtld2lzZS4KCjIwMDAtMDYtMTMgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgoJKiBmbG93LmMgKGluc25fZGVhZF9wKTogS2VlcCBzZXRzIHRvIFBJQ19PRkZTRVRfVEFCTEVfUkVHTlVNCglhbGl2ZSBiZWZvcmUgcmVsb2FkLgoKCSogaGFpZmEtc2NoZWQuYyAoc3RydWN0IGRlcHMpOiBBZGQgaW5fcG9zdF9jYWxsX2dyb3VwX3AuCgkoYWRkX2RlcGVuZGVuY2UpOiBIYW5kbGUgbm90ZXMgYmV0d2VlbiBTQ0hFRF9HUk9VUF9QIGluc25zLgoJKHJlbW92ZV9kZXBlbmRlbmNlKTogQWx3YXlzIGRlZmluZS4KCShzZXRfc2NoZWRfZ3JvdXBfcCk6IE5ldy4KCShzY2hlZF9hbmFseXplXzIpOiBVc2UgaXQuCgkoc2NoZWRfYW5hbHl6ZV9pbnNuKTogRG9uJ3Qgc3BlY2lhbC1jYXNlIG5ha2VkIHVzZXMuICBMb29rIGZvcgoJYW5kIGV4dGVuZCBpbl9wb3N0X2NhbGxfZ3JvdXBfcC4KCShzY2hlZF9hbmFseXplKTogQ2xlYXIgc3RhbGUgU0NIRURfR1JPVVBfUC4gIFNldCBpbl9wb3N0X2NhbGxfZ3JvdXBfcC4KCShpbml0X2RlcHMpOiBDbGVhciBpbl9wb3N0X2NhbGxfZ3JvdXBfcC4KCjIwMDAtMDYtMTMgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgoJKiBjb21iaW5lLmMgKHN1YnN0KTogVXNlIENMQVNTX0NBTk5PVF9DSEFOR0VfTU9ERSBhbmQKCUNMQVNTX0NBTk5PVF9DSEFOR0VfTU9ERV9QIGluc3RlYWQgb2YgQ0xBU1NfQ0FOTk9UX0NIQU5HRV9TSVpFCglhbmQgaGFyZC1jb2RlZCB0ZXN0cy4KCShzaW1wbGlmeV9zZXQpOiBMaWtld2lzZS4KCShnZW5fbG93cGFydF9mb3JfY29tYmluZSk6IExpa2V3aXNlLgoJKiBlbWl0LXJ0bC5jIChnZW5fbG93cGFydF9jb21tb24pOiBMaWtld2lzZS4KCSogZ2xvYmFsLmMgKGZpbmRfcmVnKTogTGlrZXdpc2UuCgkqIGxvY2FsLWFsbG9jLmMgKGZpbmRfZnJlZV9yZWcpOiBMaWtld2lzZS4KCSogcmVjb2cuYyAocmVnaXN0ZXJfb3BlcmFuZCk6IExpa2V3aXNlLgoJKiByZWdjbGFzcy5jIChpbml0X3JlZ19zZXRzXzEpOiBMaWtld2lzZS4KCShyZWNvcmRfb3BlcmFuZF9jb3N0cywgcmVnY2xhc3MpOiBMaWtld2lzZS4KCSogcmVsb2FkLmMgKHB1c2hfcmVsb2FkKTogTGlrZXdpc2UuCgkqIHJlbG9hZDEuYyAoY2hvb3NlX3JlbG9hZF9yZWdzKTogTGlrZXdpc2UuCgkqIGZsb3cuYyAobWFya191c2VkX3JlZ3MpOiBDb25kaXRpb25hbGx5IHNldCBSRUdfQ0hBTkdFU19NT0RFLgoJKiBsb2NhbC1hbGxvYy5jIChzdHJ1Y3QgcXR5KTogUmVuYW1lIGNoYW5nZXNfc2l6ZSB0byBjaGFuZ2VzX21vZGUuCglVcGRhdGUgYWxsIHJlZmVyZW5jZXMuCgkqIHJlZ3MuaCAoc3RydWN0IHJlZ19pbmZvX2RlZik6IExpa2V3aXNlLgoJKFJFR19DSEFOR0VTX01PREUpOiBSZW5hbWUgZnJvbSBSRUdfQ0hBTkdFU19TSVpFLgoJKiB0bS50ZXhpIChDTEFTU19DQU5OT1RfQ0hBTkdFX01PREUpOiBEb2N1bWVudC4KCShDTEFTU19DQU5OT1RfQ0hBTkdFX01PREVfUCk6IExpa2V3aXNlLgoKCSogY29uZmlnL2FscGhhL2FscGhhLmggKENMQVNTX0NBTk5PVF9DSEFOR0VfTU9ERSk6IFJlbmFtZS4KCShDTEFTU19DQU5OT1RfQ0hBTkdFX01PREVfUCk6IE5ldy4KCSogY29uZmlnL21pcHMvbWlwcy5oOiBMaWtld2lzZS4KCSogY29uZmlnL3BhL3BhMzItcmVncy5oOiBMaWtld2lzZS4KCSogY29uZmlnL3BhL3BhNjQtcmVncy5oOiBMaWtld2lzZS4KCSogY29uZmlnL3JzNjAwMC9yczYwMDAuaDogTGlrZXdpc2UuCgkqIGNvbmZpZy9zaC9zaC5oOiBMaWtld2lzZS4KCSogY29uZmlnL2lhNjQvaWE2NC5oIChDTEFTU19DQU5OT1RfQ0hBTkdFX01PREUpOiBOZXcuCgkoQ0xBU1NfQ0FOTk9UX0NIQU5HRV9NT0RFX1ApOiBOZXcuCgkqIGNvbmZpZy9hdnIvYXZyLmggKENMQVNTX0NBTk5PVF9DSEFOR0VfU0laRSk6IFJlbW92ZSBkZWFkIGNvZGUuCgkqIGNvbmZpZy9kMzB2L2QzMHYuaDogTGlrZXdpc2UuCgoyMDAwLTA2LTEzICBKLiBEYXZpZCBBbmdsaW4gIDxkYXZlQGhpYXVseTEuaGlhLm5yYy5jYT4KCgkqIGNvbmZpZ3VyZS5pbjogQWRkIEFDX1RZUEVfR0VUR1JPVVBTIHRlc3QuCgkqIHN5cy1wcm90b3MuaDogVXNlIEdFVEdST1VQU19UICogZm9yIHNlY29uZCBhcmcgb2YgZ2V0Z3JvdXBzLgoJKiBjb25maWd1cmU6IFJlYnVpbHQuCgkqIGNvbmZpZy5pbjogUmVidWlsdC4KCjIwMDAtMDYtMTMgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgoJKiBleHBsb3cuYyAoc2V0X21lbV9hdHRyaWJ1dGVzKTogRG8gbm90aGluZyBmb3IgTlVMTCB0eXBlLgoKVHVlIEp1biAxMyAxNDo0NToxMCAyMDAwICBKZWZmcmV5IEEgTGF3ICAobGF3QGN5Z251cy5jb20pCgoJKiBjb25maWcvbTY4ay9vcGVuYnNkLmggKEFTTV9TUEVDKTogcGFzcyBkb3duIG9wdGlvbnMgdG8gYXNzZW1ibGVyCgljb3JyZWN0bHkuCgoyMDAwLTA2LTEzICBKYW1lcyBFLiBXaWxzb24gIDx3aWxzb25AY3lnbnVzLmNvbT4KCgkqIGNvbmZpZy9pYTY0L2lhNjQubWQgKG1vdnhmX2ludGVybmFsKTogQWRkIG1pc3NpbmcgImUiIHRvIGxkZi9zdGYuCgpUdWUgSnVuIDEzIDE0OjA1OjM1IDIwMDAgIEplZmZyZXkgQSBMYXcgIChsYXdAY3lnbnVzLmNvbSkKCgkqIE1ha2VmaWxlLmluIChnZW5zdXBwb3J0Lm8pOiBSZW1vdmUgYm9ndXMgJChIT1NUX1BSRUZJWCkgcmVmZXJlbmNlLgoKMjAwMC0wNi0xMyAgUGhpbGlwcCBUaG9tYXMgIDxwdGhvbWFzQHN1c2UuZGU+CgoJKiBjb25maWd1cmUuaW4oQUxMX0xJTkdVQVMpOiBDaGFuZ2VkIGVuX1VLIHRvIGVuX0dCLgoJKiBjb25maWd1cmU6IFJlYnVpbHQuCgoyMDAwLTA2LTA3ICBEYXZpZCBPJ0JyaWVuICA8b2JyaWVuQEZyZWVCU0Qub3JnPgoKCSogY29uZmlndXJlLmluOiAgQWRqdXN0IEZyZWVCU0QgYml0cyB0byBtYXRjaCBjaGFuZ2VzIHRvIGNvbmZpZy5ndWVzcy4KCVdlIG5vdyBkZWZhdWx0IHRvIEVMRiBmb3IgdGhlIGkzODYsIGFuZCBhLm91dCBpcyB0aGUgc3BlY2lhbCBjYXNlLgoJKiBjb25maWd1cmU6ICBSZWJ1aWx0LgoKVHVlIEp1biAxMyAxMDowNTozMCAyMDAwICBIYW5zLVBldGVyIE5pbHNzb24gIDxocEBheGlzLmNvbT4KCgkqIGZpbmFsLmMgKGZpbmFsX3NjYW5faW5zbik6IERlbGV0ZSBub3RlcyBiZXR3ZWVuIGNjMCBzZXR0ZXIgYW5kCgl1c2VyIHdoZW4gcmVzdGFydGluZyBmcm9tIHNldHRlci4KCjIwMDAtMDYtMTMgIEouIERhdmlkIEFuZ2xpbiAgPGRhdmVAaGlhdWx5MS5oaWEubnJjLmNhPgoKCSogdmF4LmggKElOREVYX1RFUk1fUCk6IERlZmluZSBldmFsdWF0aW9uIG9yZGVyIG9mICYmJ3MgaW4gfHwgYW5kCgljYXN0IHRvIHNxdWVsY2ggc2lnbmVkL3Vuc2lnbmVkIHdhcm5pbmdzLgoKMjAwMC0wNi0xMyAgWmFjayBXZWluYmVyZyAgPHphY2tAd29sZXJ5LmN1bWIub3JnPgoKCSogY3BwbGliLmMgKGhhbmRsZV9kaXJlY3RpdmUpOiBQcmludCBub24tTlVMLXRlcm1pbmF0ZWQgc3RyaW5nCgl3aXRoICUuKnMuCgoyMDAwLTA2LTEyICBNaWNoYWVsIE1laXNzbmVyICA8bWVpc3NuZXJAcmVkaGF0LmNvbT4KCgkqIGlmY3Z0LmMgKGRlYWRfb3JfcHJlZGljYWJsZSk6IERvbid0IGRvIGNvbmRpdGlvbmFsIGV4ZWN1dGlvbgoJcGF0aCBpZiB0aGUgbWFjaGluZSBuZWVkcyBleHRyYSBzdXBwb3J0IHRvIGRvIGNvbmRpdGlvbmFsCglleGVjdXRpb24uCgpNb24gSnVuIDEyIDE3OjA0OjE3IDIwMDAgIEplZmZyZXkgQSBMYXcgIChsYXdAY3lnbnVzLmNvbSkKCgkqIHByaW50LXJ0bC5jIChwcmludF9ydHgsIGNhc2UgTUVNKTogVXNlIEhPU1RfV0lERV9JTlRfUFJJTlRfREVDCgl0byBwcmludCB0aGUgYWxpYXMgc2V0LgoJKiBwcmludC10cmVlLmMgKHByaW50X25vZGUsIERFQ0xfKiBub2RlcyBhbmQgY2FzZSAndCcpOiBTaW1pbGFybHkuCgoyMDAwLTA2LTEyICBKLiBEYXZpZCBBbmdsaW4gIDxkYXZlQGhpYXVseTEuaGlhLm5yYy5jYT4KCgkqIGNvbmZpZy9mbG9hdC12YXguaDogQWRkIEdGTE9BVCBkZWZpbmVzLgoKTW9uIEp1biAgMTIgIDk6NDQ6MDAgMjAwMCAgTWFyayBLbGVpbiAgPG1rbGVpbkBkaXMuY29tPgoKCSogY29uZmlndXJlLmluOiBVcGRhdGUgdG0gZGVwZW5kZW5jaWVzIGZvciBNUEUuCgkqIGNvbmZpZ3VyZTogUmVidWlsdC4KCjIwMDAtMDYtMTIgIEguSi4gTHUgIDxoamxAZ251Lm9yZz4KCgkqIGdlbmdlbnJ0bC5jIChvYnN0YWNrX2FsbG9jX3J0eCk6IENvcnJlY3QgdGhlIGFsbG9jYXRlZCBzaXplLgoKMjAwMC0wNi0xMiAgRGF2aWQgRWRlbHNvaG4gIDxlZGVsc29obkBnbnUub3JnPgoKCSogYWl4NDEuaCAoU1VCVEFSR0VUX1NXSVRDSEVTKTogRGVsZXRlIHRocmVhZHMuCgkoQ1BQX1NQRUMpOiBDaGFuZ2UgbXRocmVhZHMgdG8gcHRocmVhZC4KCShMSUJfU1BFQyk6IExpa2V3aXNlLgoJKFNUQVJURklMRV9TUEVDKTogTGlrZXdpc2UuCgkqIGFpeDQzLmggKFNVQlRBUkdFVF9TV0lUQ0hFUyk6IERlbGV0ZSB0aHJlYWRzLgoJKENQUF9TUEVDKTogQ2hhbmdlIG10aHJlYWRzIHRvIHB0aHJlYWQuCgkoTElCX1NQRUMpOiBMaWtld2lzZS4KCShTVEFSVEZJTEVfU1BFQyk6IExpa2V3aXNlLgoJKiByczYwMDAtcHJvdG9zLmggKHJlZ19vcl9hcml0aF9jaW50X29wZXJhbmQpOiBOZXcuCgkqIHJzNjAwMC5jIChyZWdfb3JfYXJpdGhfY2ludF9vcGVyYW5kKTogTmV3LgoJKG51bV9pbnNuc19jb25zdGFudF93aWRlKTogRGVjb3JhdGUgdW5zaWduZWQgY29uc3RhbnQuCgkqIHJzNjAwMC5oIChQUkVESUNBVEVfQ09ERVMpOiBBZGQgcmVnX29yX2FyaXRoX2NpbnRfb3BlcmFuZC4KCSogcnM2MDAwLm1kIChhZGRzaTMpOiBVc2UgbmV3IHByZWRpY2F0ZS4KCShzdWJzaTMsIGFkZGRpMywgc3ViZGkzKTogTGlrZXdpc2UuCgoyMDAwLTA2LTEyICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogYy1jb21tb24uYyAobGFuZ19nZXRfYWxpYXNfc2V0KTogRml4IHR5cG8uCgoyMDAwLTA2LTEyICBSaWNoYXJkIEVhcm5zaGF3IDxyZWFybnNoYUBhcm0uY29tPgoKCSogZmxvdy5jIChtYXJrX3VzZWRfcmVncyk6IFJldmVydCBsYXN0IGNoYW5nZS4KCShsaWZlX2FuYWx5c2lzKTogUmVtb3ZlIFBST1BfQVVUT0lOQyBpZiBydW5uaW5nIGFmdGVyIHJlbG9hZC4KCShwcm9wYWdhdGVfb25lX2luc24pOiBQUk9QX0FVVE9JTkMgaXMgYWx3YXlzIG9mZiBhZnRlciByZWxvYWQuCgoyMDAwLTA2LTExICBSaWNoYXJkIEVhcm5zaGF3IDxyZWFybnNoYUBhcm0uY29tPgoKCSogZmxvdy5jIChtYXJrX3VzZWRfcmVncyk6IERvbid0IGNhbGwgZmluZF9hdXRvX2luYyBhZnRlciByZWxvYWQKCWhhcyBydW4uCgoyMDAwLTA2LTExICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBiYi1yZW9yZGVyLmMgKGJ1aWxkX3Njb3BlX2ZvcmVzdCk6IEluaXRpYWxpemUgdmFyaWFibGUKCWBjdXJyX3Njb3BlJy4KCgkqIGNhbGxzLmMgKGV4cGFuZF9jYWxsKTogTGlrZXdpc2UgZm9yIHZhcmlhYmxlcwoJYHNhdmVfcGVuZGluZ19zdGFja19hZGp1c3QnIGFuZCBgc2F2ZV9zdGFja19wb2ludGVyX2RlbHRhJy4KCgkqIGkzODYuYyAoZnVuY3Rpb25fYXJnX2FkdmFuY2UsIGZ1bmN0aW9uX2FyZyk6IENhc3QgdG8gYXZvaWQKCXNpZ25lZC91bnNpZ25lZCB3YXJuaW5ncy4KCgkqIGkzODYuaCAoTUVNT1JZX01PVkVfQ09TVCk6IExpa2V3aXNlLgoKCSogaWZjdnQuYyAoY29uZF9leGVjX3Byb2Nlc3NfaWZfYmxvY2spOiBJbml0aWFsaXplIHZhcmlhYmxlcwoJYGVsc2Vfc3RhcnQnIGFuZCBgZWxzZV9lbmQnLgoKCSogbGliZ2NjMi5oIChfX2VoX2FsbG9jLCBfX2VoX2ZyZWUpOiBQcm90b3R5cGUuCgoJKiByZWdyZW5hbWUuYyAocnJfcmVwbGFjZV9yZWcpOiBJbml0aWFsaXplIHZhcmlhYmxlIGBkZXN0X3N1YnJlZ25vJy4KCjIwMDAtMDYtMTAgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBNYWtlZmlsZS5pbiAobGliaW50bC5hKTogRGVwZW5kIG9uIGludGwuYWxsLgoKMjAwMC0wNi0wOSAgSC5KLiBMdSAgKGhqbEBnbnUub3JnKQoKCSogTWFrZWZpbGUuaW4gKGMtcGFyc2Uubyk6IEFsc28gZGVwZW5kIG9uIG91dHB1dC5oLgoKMjAwMC0wNi0wOSAgUm9kbmV5IEJyb3duICA8Um9kbmV5QnJvd25AbXluZC5jb20+CgoJKiBtY29yZS1wcm90b3MuaDogZGlzY2FyZHMgY29uc3Qgd2FybmluZyByZW1vdmFsLgoJKiBtY29yZS5jOiBkaXNjYXJkcyBjb25zdCB3YXJuaW5nIHJlbW92YWwuCgoyMDAwLTA2LTA5ICBLYXp1IEhpcmF0YSAgPGthenVAaHhpLmNvbT4KCgkqIGNvbmZpZy9oODMwMC9saWIxZnVuY3MuYXNtOiBEZWNsYXJlIHRoZSBtYWNoaW5lIGFyY2hpdGVjdHVyZSBhdAoJdGhlIGJlZ2lubmluZyBvZiB0aGUgZmlsZS4KCjIwMDAtMDYtMDkgIEouIERhdmlkIEFuZ2xpbiAgPGRhdmVAaGlhdWx5MS5oaWEubnJjLmNhPgoKCSogcmVhbC5oOiAgQWRkIHByb3RvdHlwZSBmb3IgbGRleHAuCgoyMDAwLTA2LTA5ICBaYWNrIFdlaW5iZXJnICA8emFja0B3b2xlcnkuY3VtYi5vcmc+CgoJKiBnZ2Mtbm9uZS5jLCBnZ2Mtc2ltcGxlLmMsIGdnYy1wYWdlLmMgKGdnY19hbGxvY19vYmopOiBSZW5hbWUKCWl0IGdnY19hbGxvYywgZHJvcCBzZWNvbmQgYXJndW1lbnQsIG5ldmVyIGNsZWFyIHJldHVybmVkIG1lbW9yeS4KCSogZ2djLWNvbW1vbi5jIChnZ2NfYWxsb2Nfc3RyaW5nKTogVXNlIGdnY19hbGxvYy4KCShnZ2NfYWxsb2NfY2xlYXJlZCk6IE5ldy4KCSogZ2djLmg6IFByb3RvdHlwZSBnZ2NfYWxsb2MgYW5kIGdnY19hbGxvY19jbGVhcmVkLCBub3QKCWdnY19hbGxvY19vYmouICBSZW1vdmUgZ2djX2FsbG9jIG1hY3JvLgoJKGdnY19hbGxvY19ydHgsIGdnY19hbGxvY19ydHZlYywgZ2djX2FsbG9jX3RyZWUpOiBVc2UgZ2djX2FsbG9jLgoKCSogcnRsLmMgKHJ0dmVjX2FsbG9jKTogQ2xlYXIgdGhlIHZlY3RvciBhbHdheXMuCgkocnR4X2FsbG9jKTogQ2xlYXIgdGhlIGZpcnN0IHdvcmQgYWx3YXlzLiAgUmVtb3ZlIGRpcnR5CglvYnN0YWNrIHRyaWNrcyAodGhpcyByb3V0aW5lIGlzIG5vIGxvbmdlciBhIGJvdHRsZW5lY2spLgoJKiB0cmVlLmMgKG1ha2Vfbm9kZSk6IENsZWFyIHRoZSBuZXcgbm9kZSBhbHdheXMuCgkobWFrZV90cmVlX3ZlYyk6IExpa2V3aXNlLgoJKHRyZWVfY29ucyk6IENsZWFyIHRoZSBjb21tb24gc3RydWN0dXJlIGFsd2F5cy4KCShidWlsZDEpOiBMaWtld2lzZTsgYWxzbywgY2xlYXIgVFJFRV9DT01QTEVYSVRZLgoJKiBnZW5nZW5ydGwuYzogVXNlIHB1dHMgd2hlcmV2ZXIgcG9zc2libGUuICBSZW1vdmUgZXh0cmEKCW5ld2xpbmVzLgoJKGdlbmRlZik6IENsZWFyIHRoZSBmaXJzdCB3b3JkIG9mIGFuIFJUWCBpbiB0aGUgZ2VuZXJhdG9yCglmdW5jdGlvbiwgaXJyZXNwZWN0aXZlIG9mIGdnY19wLiAgSW5pdGlhbGl6ZSAnMCcgc2xvdHMgdG8KCU5VTEwuCgkoZ2VubGVnZW5kKTogRG9uJ3QgZ2VuZXJhdGUgb2JzdGFja19hbGxvY19ydHggcm91dGluZSwganVzdCBhCgl0aGluIHdyYXBwZXIgbWFjcm8gYXJvdW5kIG9ic3RhY2tfYWxsb2MuCgoJKiBzdG10LmMgKGV4cGFuZF9maXh1cCk6IFVzZSBnZ2NfYWxsb2MuCgkqIGMtdHlwZWNrLmMgKGFkZF9wZW5kaW5nX2luaXQpOiBVc2UgZ2djX2FsbG9jLgoJKiBlbWl0LXJ0bC5jIChpbml0X2VtaXRfb25jZSk6IENsZWFyIENPTlNUX0RPVUJMRV9DSEFJTih0ZW0pLgoJKiB2YXJhc20uYyAoaW1tZWRfZG91YmxlX2NvbnN0KTogU2V0IENPTlNUX0RPVUJMRV9NRU0ocikgdG8KCWNvbnN0MF9ydHggd2hlbiBpdCBpcyBjcmVhdGVkLgoJKGltbWVkX3JlYWxfY29uc3RfMSk6IFNldCBDT05TVF9ET1VCTEVfQ0hBSU4ocikgdG8gTlVMTF9SVFggaWYKCXdlIGFyZSBub3QgaW4gYSBmdW5jdGlvbi4KCgkqIHRyZWUuYyAodHJlZV9jbGFzc19jaGVja19mYWlsZWQpOiBNYWtlIHNlY29uZCBhcmcgYW4gaW50LgoJKiB0cmVlLmg6IFVwZGF0ZSBwcm90b3R5cGUuCgoyMDAwLTA2LTA5ICBHZW9mZiBLZWF0aW5nICA8Z2VvZmZrQGN5Z251cy5jb20+CgoJKiB0cmVlLmggKFZPSURfVFlQRV9QKTogRG9uJ3QgbG9vayBhdCB0aGUgVFlQRV9NQUlOX1ZBUklBTlQKCW9mIGFuIGVycm9yX21hcmtfbm9kZS4KCkZyaSBKdW4gIDkgMjA6MzU6MTMgMjAwMCAgRGVuaXMgQ2hlcnR5a292ICA8ZGVuaXNjQG92ZXJ0YS5ydT4KCgkqIGNvbmZpZy9hdnIvYXZyLmMgKGFzbV9vdXRwdXRfc2VjdGlvbl9uYW1lKTogYnVnZml4LgoKMjAwMC0wNi0wOSAgSmFzb24gTWVycmlsbCAgPGphc29uQGNhc2V5LnNvbWEucmVkaGF0LmNvbT4KCgkqIHRpbWV2YXIuZGVmOiBBZGQgVFZfRVhQQU5ELgoJKiB0aW1ldmFyLmMgKHRpbWV2YXJfcHJpbnQpOiBVcGRhdGUgdGltaW5nIGluZm9ybWF0aW9uLgoJKiBjYWxscy5jICh0cnlfdG9faW50ZWdyYXRlKTogUHVzaCB0byBUVl9JTlRFR1JBVElPTiBmb3IgaW5saW5pbmcuCgoJKiBzdG10LmMgKGV4cGFuZF9yZXR1cm4pOiBDaGVjayBmb3IgZXJyb3JfbWFya19ub2RlLgoKMjAwMC0wNi0wOSAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogY29uZmlndXJlLmluOiBBbHNvIGF2b2lkIHdyYXBwaW5nIGF1dG8tYnVpbGQuaCB3aXRoIElOX0dDQy4KCgkqIHNjYW4tdHlwZXMuc2ggKFZBTFVFKSBXcmFwIHVzZSB3aXRoIGRvdWJsZSBxdW90ZXMgdG8gcHJvdGVjdAoJdmFyaWFibGUgYWdhaW5zdCBmaWxlbmFtZSBleHBhbnNpb24gd2hlbiBpdCBjb250YWlucyAiY2hhciAqIi4KCgkqIHN5c3RlbS5oIChTU0laRV9NQVgpOiBEZWxldGUgYmFja3VwIGRlZmluaXRpb24uCgoJKiBjcHBmaWxlcy5jIChyZWFkX2luY2x1ZGVfZmlsZSk6IFVzZSBJTlRUWVBFX01BWElNVU0oc3NpemVfdCkKCWluc3RlYWQgb2YgU1NJWkVfTUFYLgoKMjAwMC0wNi0wOSAgSmFrdWIgSmVsaW5layAgPGpha3ViQHJlZGhhdC5jb20+CgoJKiBjb25maWd1cmUuaW46IENoZWNrIHdoZXRoZXIgZ2FzIHN1cHBvcnRzIC1yZWxheC4KCSogY29uZmlndXJlLCBjb25maWcuaW46IFJlYnVpbHQuCgkqIGNvbmZpZy9zcGFyYy9zcGFyYy5oIChBU01fUkVMQVhfU1BFQyk6IERlZmluZS4KCShFWFRSQV9TUEVDUyk6IEFkZCBhc21fcmVsYXguCgkoQVNNX1NQRUMpOiBBZGQgJShhc21fcmVsYXgpLgoJKFRBUkdFVF9TV0lUQ0hFUyk6IEFkZCAtbXJlbGF4IGFuZCAtbW5vLXJlbGF4LgoJKiBjb25maWcvc3BhcmMvbGludXg2NC5oIChMSU5LX0FSQ0hfU1BFQyk6IFJlbmFtZSB0byBMSU5LX1NQRUMuCgkoTElOS19TUEVDKTogUGFzcyAtcmVsYXggdG8gbGlua2VyIHVubGVzcyAtbW5vLXJlbGF4IG9yIC1yLgoJKEFTTV9TUEVDKTogQWRkICUoYXNtX3JlbGF4KS4KCSogY29uZmlnL3NwYXJjL2xpbnV4LmggKExJTktfU1BFQywgQVNNX1NQRUMpOiBMaWtld2lzZS4KCSogY29uZmlnL3NwYXJjL3NwYXJjLmMgKG91dHB1dF9zaWJjYWxsKTogSWYgSEFWRV9BU19SRUxBWF9PUFRJT04sCgluZXZlciB1c2Ugc2V0aGkvam1wbCBmb3IgbGVhZiB0YWlsIGNhbGxzLiAgVXNlIG9yIHdpdGggcnMyICVnMAoJaW5zdGVhZCBvZiBtb3YsIHNvIHRoYXQgZ2FzIGNhbiBmdXJ0aGVyIG9wdGltaXplIGl0LgoKMjAwMC0wNi0wOCAgSmFtZXMgRS4gV2lsc29uICA8d2lsc29uQGJsZXRjaGxleXBhcmsuY3lnbnVzLmNvbT4KCgkqIGR3YXJmMm91dC5jIChzaXplX29mX2RpZSwgY2FzZSBkd192YWxfY2xhc3NfY29uc3QpOiBVc2UKCXNpemVfb2Zfc2xlYjEyOC4KCSh2YWx1ZV9mb3JtYXQsIGNhc2UgZHdfdmFsX2NsYXNzX2NvbnN0KTogVXNlIHNkYXRhIGZvcm1hdC4KCShvdXRwdXRfZGllKTogQ2FsbCBvdXRwdXRfc2xlYjEyOC4KCjIwMDAtMDYtMDggIEphbWVzIEUuIFdpbHNvbiAgPHdpbHNvbkBjeWdudXMuY29tPgoKCSogZHdhcmYyb3V0LmMgKEFTTV9PVVRQVVRfRFdBUkZfREFUQTgpOiBBZGQgbmV3IG1hY3JvIHRoYXQgdXNlcwoJVU5BTElHTkVEX0RPVUJMRV9JTlRfQVNNX09QLiAgUmVuYW1lIG9sZCBtYWNybyB0bwoJQVNNX09VVFBVVF9EV0FSRl9DT05TVF9ET1VCTEUuCgkob3V0cHV0X2RpZSwgY2FzZSBkd192YWxfY2xhc3NfdW5zaWduZWRfY29uc3QpOiBDb3JyZWN0IGNhbGwgdG8KCUFTTV9PVVRQVVRfRFdBUkZfREFUQTguCgkob3V0cHV0X2RpZSwgY2FzZSBkd192YWxfY2xhc3NfbG9uZ19sb25nKTogVXNlCglBU01fT1VUUFVUX0RXQVJGX0NPTlNUX0RPVUJMRS4KCSogdHJlZS5jIChob3N0X2ludGVnZXJwKTogQWNjZXB0IHVuc2lnbmVkIEhPU1RfV0lERV9JTlQgdmFsdWVzIHdoZW4KCXBvcyBpcyB6ZXJvLgoKCSogY29uZmlnL2lhNjQvaWE2NC1wcm90b3MuaCAoaWE2NF9vdXRwdXRfZW5kX3Byb2xvZ3VlKTogQWRkLgoJKG91dHB1dF9mdW5jdGlvbl9wcm9sb2d1ZSk6IEZpeCBtaXNwZWxsaW5nLgoJKG91dHB1dF9mdW5jdGlvbl9wcm9sb2d1ZSwgb3V0cHV0X2Z1bmN0aW9uX2VwaWxvZ3VlKTogUmVvcmRlciB0bwoJbWF0Y2ggaWE2NC5jIGRlZmluaXRpb24gb3JkZXIuCgkqIGNvbmZpZy9pYTY0L2lhNjQuYyAoaWE2NF9leHBhbmRfcHJvbG9ndWUpOiBBZGQgY29tbWVudC4KCShpYTY0X2V4cGFuZF9lcGlsb2d1ZSk6IFNldCBSVFhfRlJBTUVfUkVMQVRFRF9QIG9uIHN0YWNrIHJlc3RvcmUgaW5zbnMuCglVc2UgcjMgaW5zdGVhZCBvZiByMiBmb3IgbGFyZ2Ugc3RhY2sgcmVzdG9yZXMuCgkoaWE2NF9vdXRwdXRfZW5kX3Byb2xvZ3VlKTogTmV3IGZ1bmN0aW9uLgoJKHByb2Nlc3Nfc2V0KTogRW1pdCAiLnJlc3RvcmUgc3AiIGZvciBlcGlsb2d1ZSBzdGFjayByZXN0b3Jlcy4KCSogY29uZmlnL2lhNjQvaWE2NC5oIChGVU5DVElPTl9FTkRfUFJPTE9HVUUpOiBEZWZpbmUuCgoyMDAwLTA2LTA4ICBKYWt1YiBKZWxpbmVrICA8amFrdWJAcmVkaGF0LmNvbT4KCgkqIGRieG91dC5jIChkYnhvdXRfdHlwZV9maWVsZHMpOiBEb24ndCBzZWdmYXVsdCBvbiBmaWVsZHMgd2l0aAoJaW5jb21wbGV0ZSB0eXBlcy4KCjIwMDAtMDYtMDggIE5hdGhhbiBTaWR3ZWxsICA8bmF0aGFuQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBmcmFtZS5jIChlbmRfZmRlX3NvcnQpOiBSZW1vdmUgZXh0cmFuZW91cyBlcnJhdGljIGFycmF5IHRlc3QuCgoyMDAwLTA2LTA4ICBEZW5pcyBQZXJjaGluZSA8ZHlwQHBlcmNoaW5lLmNvbT4KCgkqIGZyYW1lLmMgKHN0YXJ0X2ZkZV9zb3J0KTogRG9uJ3QgbWFsbG9jICgwKS4KCjIwMDAtMDYtMDcgIFphY2sgV2VpbmJlcmcgIDx6YWNrQHdvbGVyeS5jdW1iLm9yZz4KCgkqIGMtZGVjbC5jIChwdXNoZGVjbCk6IERvIG5vdCBjYWxsIENPTVBMRVRFX1RZUEVfUCBvbgoJZXJyb3JfbWFya19ub2RlLgoJKiBwcmludC10cmVlLmMgKHByaW50X25vZGUpOiBUaGUgdHJhbnNwYXJlbnRfdW5pb25fZmxhZyBtZWFucwoJZGlmZmVyZW50IHRoaW5ncyBmb3IgdW5pb25zIGFuZCBhcnJheXMuICBEbyBub3QgaW5zcGVjdCBpdAoJd2l0aCBUWVBFX1RSQU5TUEFSRU5UX1VOSU9OLgoKMjAwMC0wNi0wNiAgSmFrdWIgSmVsaW5layAgPGpha3ViQHJlZGhhdC5jb20+CgoJKiBjcHBsaWIuYyAoZG9faWZkZWYsIGRvX2lmbmRlZik6IERvbid0IHNlZ2ZhdWx0IGlmIHBhcnNlX2lmZGVmCglyZXR1cm5lZCBOVUxMLgoKV2VkIEp1biAgNyAyMDozNDozMyAyMDAwICBEZW5pcyBDaGVydHlrb3YgIDxkZW5pc2NAb3ZlcnRhLnJ1PgoKCSogY29uZmlnL2F2ci9hdnIuYyAoYXNtX291dHB1dF9zZWN0aW9uX25hbWUpOiBvdXRwdXQgc2VjdGlvbgoJYXR0cmlidXRlcy4KCSogY29uZmlnL2F2ci9saWJnY2MuUyAoLnRleHQubGliZ2NjKTogZGVjbGFyZSBzZWN0aW9uIGF0dHJpYnV0ZXMuCgoyMDAwLTA2LTA2ICBKYW1lcyBFLiBXaWxzb24gIDx3aWxzb25AY3lnbnVzLmNvbT4KCgkqIGZyYW1lLmggKHN0cnVjdCB1bndpbmRfaW5mb19wdHIpOiBDb2xsYXBzZSB2ZXJzaW9uLCBmbGFncywgYW5kIGxlbmd0aAoJZmllbGRzIGludG8gaGVhZGVyIGZpZWxkLgoJKElBNjRfVU5XX0hEUl9MRU5HVEgsIElBNjRfVU5XX0hEUl9GTEFHUywgSUE2NF9VTldfSERSX1ZFUlNJT04pOiBOZXcKCW1hY3JvcyB0byBhY2Nlc3MgbGVuZ3RoLCBmbGFncywgYW5kIHZlcnNpb24gaW5mbyBmcm9tIGhlYWRlciBmaWVsZC4KCSogY29uZmlnL2lhNjQvY3J0YmVnaW4uYXNtIChfX2RvX2ZyYW1lX3NldHVwX2F1eCk6IERlbGV0ZSBoZXJlLgoJKiBjb25maWcvaWE2NC9jcnRlbmQuYXNtIChfX2RvX2ZyYW1lX3NldHVwX2F1eCk6IEFkZCBoZXJlLgoJKF9fZG9fZ2xvYmFsX2N0b3JzX2F1eCk6IEZpeCBjYWxsZXIuCgkqIGNvbmZpZy9pYTY0L2ZyYW1lLWlhNjQuYyAoZ2V0X3Vud2luZF9yZWNvcmQpOiBDaGFuZ2UgcGFyYW1ldGVyCglwcm9sb2d1ZV9mbGFnIHRvIGhlYWRlci4gIFBhc3MgdG8gcmVhZF9QX3JlY29yZC4KCShyZWFkX1BfcmVjb3JkKTogTmV3IGFyZ3VtZW50IGhlYWRlci4gIEltcGxlbWVudCBQNCBmb3JtYXQuCglNdWx0aXBseSBQN19UX1NJWkUgYnkgMTYuCgkoZXhlY3V0ZV9vbmVfaWE2NF9kZXNjcmlwdG9yKTogTmV3IHN0YXRpYyBsb2NhbCByZWdpb25faGVhZGVyLiAgUGFzcyB0bwoJZ2V0X3Vud2luZF9yZWNvcmQuICBDb3B5IHIgdG8gcmVnaW9uX2hlYWRlciBpZiByIGlzIGEgaGVhZGVyIHJlY29yZC4KCShwcmludF9hbGxfcmVjb3Jkcyk6IExpa2V3aXNlLgoJKF9fYnVpbGRfaWE2NF9mcmFtZV9zdGF0ZSk6IFVzZSBJQTY0X1VOV19IRFJfTEVOR1RILgoJKF9fZ2V0X3BlcnNvbmFsaXR5LCBfX2dldF9leGNlcHRfdGFibGUpOiBMaWtld2lzZS4KCSogY29uZmlnL2lhNjQvaWE2NC5jIChwcm9jZXNzX3NldCk6IERvIG5vdCBkaXZpZGUgb2Zmc2V0cyBieSA0LgoKMjAwMC0wNi0wNiAgUGhpbGlwcCBUaG9tYXMgIDxwdGhvbWFzQHN1c2UuZGU+CgoJKiBjb25maWd1cmUuaW4gKEFDX0NfSU5MSU5FKTogQWRkZWQuCgkqIGFjbG9jYWwubTQgKEFNX1dJVEhfTkxTKTogRW5hYmxlIC0td2l0aC1pbmNsdWRlZC1nZXR0ZXh0IGJ5IGRlZmF1bHQuCgkqIGNvbmZpZ3VyZTogUmVnZW5lcmF0ZS4KCjIwMDAtMDYtMDYgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjLWNvbW1vbi5oIChjX2xhbmd1YWdlX2tpbmQpOiBOZXcgdHlwZS4KCShjX2xhbmd1YWdlKTogTmV3IHZhcmlhYi5lCgkqIGMtY29tbW9uLmMgKGxhbmdfZ2V0X2FsaWFzX3NldCk6IERvbid0IHB1dCBzdHJ1Y3R1cmVzIGluCglub256ZXJvIGFsaWFzIHNldHMgaW4gQysrLgoJKiBjLWRlY2wuYyAoY19sYW5ndWFnZSk6IERlZmluZSBpdC4KCSogYy1sZXguYyAoZG9pbmdfb2JqY190aGFuZyk6IFJlbW92ZS4KCSogYy10cmVlLmggKGRvaW5nX29iamNfdGhhbmcpOiBNYWtlIGl0IGEgbWFjcm8uCgkqIG9iamMvb2JqYy1hY3QuYyAobGFuZ19kZWNvZGVfb3B0aW9uKTogU2V0IGNfbGFuZ3VhZ2UsIG5vdAoJZG9pbmdfb2JqY190aGFuZy4KCjIwMDAtMDYtMDYgIEdhYnJpZWwgRG9zIFJlaXMgIDxnZHJAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGRpYWdub3N0aWMuYyAob3V0cHV0X21heGltdW1fd2lkdGgpOiBSZW1vdmUuCgkoZG9pbmdfbGluZV93cmFwcGluZyk6IFR3ZWFrLgoJKGRpYWdub3N0aWNfYnVmZmVyKTogTmV3IG9iamVjdC4KCShnbG9iYWxfb3V0cHV0X2J1ZmZlcik6IE5ldyBvYmplY3QuCgkob3V0cHV0X2Rlc3Ryb3lfcHJlZml4KTogTmV3IGZ1bmN0aW9uLgoJKGRlZmF1bHRfaW5pdGlhbGl6ZV9idWZmZXIpOiBMaWtld2lzZS4KCShyZXNoYXBlX2RpYWdub3N0aWNfYnVmZmVyKTogTGlrZXdpc2UuCgkoaW5pdGlhbGl6ZV9kaWFnbm9zdGljcyk6IExpa2V3aXNlLgoJKG91dHB1dF9jbGVhcik6IFR3ZWFrLgoJKGxpbmVfd3JhcHBlcl9wcmludGYpOiBBZGp1c3QgY2FsbCB0byBpbml0X291dHB1dF9idWZmZXIuCgkodmxpbmVfd3JhcHBlcl9tZXNzYWdlX3dpdGhfbG9jYXRpb24pOiBMaWtld2lzZS4gIFVzZQoJb3V0cHV0X2Rlc3Ryb3lfcHJlZml4LgoJKHZfbWVzc2FnZV93aXRoX2RlY2wpOiBMaWtld2lzZS4KCgkqIGRpYWdub3N0aWMuaCAoc3RydWN0IG91dHB1dF9idWZmZXIpOiBDb25zdGlmeSBwcmVmaXguCgkoaW5pdF9vdXRwdXRfYnVmZmVyLCBvdXRwdXRfZ2V0X3ByZWZpeCk6IENvbnN0aWZ5LgoJKGRpYWdub3N0aWNfbWVzc2FnZV9sZW5ndGhfcGVyX2xpbmUpOiBMaWtld2lzZS4KCShyZXNoYXBlX2RpYWdub3N0aWNfYnVmZmVyKTogRGVjbGFyZS4KCShkZWZhdWx0X2luaXRpYWxpemVfYnVmZmVyKTogRGVjbGFyZS4KCShpbml0aWFsaXplX2RpYWdub3N0aWNzKTogRGVjbGFyZS4KCShkaWFnbm9zdGljX2J1ZmZlcik6IERlY2xhcmUgbmV3IG9iYmplY3QuCgoJKiB0b3BsZXYuYzogI2luY2x1ZGUgZGlhZ25vc3RpYy5oCgkoZGlzcGxheV9oZWxwKTogRG9jdW1lbnQgZGlhZ25vc3RpYyBmb3JtYXR0aW5nIG9wdGlvbnMuCgkoZGVjb2RlX2Zfb3B0aW9uKTogSGFuZGxlIGRpYWdub3N0aWMgZm9ybWF0dGluZyBvcHRpb25zLgoJKG1haW4pOiBTZXR1cCBpbml0aWFsaXphdGlvbiBmb3IgZGlhZ25vc3RpYyBtZXNzYWdlcyBvdXRwdXR0ZXIuCgoJKiB0b3BsZXYuaCAoc2V0X21lc3NhZ2VfbGVuZ3RoKTogUmVtb3ZlLgoKCSogTWFrZWZpbGUuaW4gKHRvcGxldi5vKTogRGVwZW5kcyB1cG9uIGRpYWdub3N0aWMuaAoKCSogaW52b2tlLnRleGkgOiBEb2N1bWVudCBkaWFnbm9zdGljcyBmb3JtYXR0aW5nIG9wdGlvbnMuCgpUdWUgSnVuICA2IDE5OjI1OjMyIDIwMDAgIFBoaWxpcHBlIERlIE11eXRlciAgPHBoZG1AbWFjcWVsLmJlPgoKCSogY29uZmlndXJlLmluIChNYWtlIHRoZSBsaW5rcyk6IFR5cG8gZml4IDogdGhlIGZpbGUgdGhhdCBtdXN0IGJlCglpbmNsdWRlZCB3aXRob3V0ICNpZmRlZiBJTl9HQ0MgaXMgYGF1dG8taG9zdC5oJywgbm90IGBhdXRvLWNvbmZpZy5oJy4KCSogY29uZmlndXJlOiBGaWxlIHJlYnVpbHQuCgoyMDAwLTA2LTA2ICBOYXRoYW4gU2lkd2VsbCAgPG5hdGhhbkBjb2Rlc291cmNlcnkuY29tPgoKCSogZWgtY29tbW9uLmggKEVIX0FMTE9DX1NJWkUsIEVIX0FMTE9DX0FMSUdOKTogTmV3ICNkZWZpbmVzLgoJKGVoX2NvbnRleHQpOiBBZGQgYWxsb2NfbWFzayBhbmQgYWxsb2NfYnVmZmVyIGVtZXJnZW5jeSBmYWxsYmFjawoJc3BhY2UuCgkqIGxpYmdjYzIuYyAoX19laF9hbGxvYyk6IE1vdmVkIGZyb20gY3AvZXhjZXB0aW9uLmNjLiBGYWxsYmFjayBvbgoJZW1lcmdlbmN5IGVoX2NvbnRleHQgYnVmZmVyLCBpZiBtYWxsb2MgZmFpbHMuCgkoX19laF9mcmVlKTogTW92ZWQgZnJvbSBjcC9leGNlcHRpb24uY2MuIFJlbGVhc2UgdG8gZW1lcmdlbmN5CgllaF9jb250ZXh0IGJ1ZmZlciwgaWYgYXBwcm9wcmlhdGUuCgoyMDAwLTA2LTA2ICBKYXNvbiBNZXJyaWxsICA8amFzb25AY2FzZXkuc29tYS5yZWRoYXQuY29tPgoKCSogZXhwci5jIChzdG9yZV9leHByKTogRml4IHR5cG8uCgoyMDAwLTA2LTA2ICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBtNjhrLmMgKGxlZ2l0aW1pemVfcGljX2FkZHJlc3MpOiBNb3ZlIHByb3RvdHlwZSAuLi4KCgkqIG02OGstcHJvdG9zLmggKGxlZ2l0aW1pemVfcGljX2FkZHJlc3MpOiAuLi4gaGVyZS4KCgkqIG02OGsubWQgKGxlZ2l0aW1pemVfcGljX2FkZHJlc3MpOiBEZWxldGUgcHJvdG90eXBlcy4KCSh1bnR5cGVkX2NhbGwpOiBJbnZva2UgR0VOX0NBTEwoKSwgbm90IGdlbl9jYWxsKCkuCgoJKiBuZXh0c3RlcC5jOiBJbmNsdWRlIHN5c3RlbS5oIGFuZCB0b3BsZXYuaC4KCShnZXRfZGlyZWN0aXZlX2xpbmUpOiBEb24ndCBwcm90b3R5cGUuCgkoaGFuZGxlX3ByYWdtYSk6IE1hcmsgcGFyYW1ldGVycyB3aXRoIEFUVFJJQlVURV9VTlVTRUQgYW5kIGNvbnN0aWZ5LgoKCSogbmV4dHN0ZXAuaCAoaGFuZGxlX3ByYWdtYSk6IFByb3RvdHlwZS4KCShTRUNUSU9OX0ZVTkNUSU9OKTogUHJvdG90eXBlIEZVTkNUSU9OKCkuICBNb3ZlIHByb3RvdHlwZSBvZgoJb2JqY19zZWN0aW9uX2luaXQgLi4uCgkoRVhUUkFfU0VDVElPTl9GVU5DVElPTlMpOiAuLi4gaGVyZS4KClR1ZSBKdW4gIDYgMDg6MTc6MjYgMjAwMCAgUmljaGFyZCBLZW5uZXIgIDxrZW5uZXJAdmxzaTEudWx0cmEubnl1LmVkdT4KCgkqIHNkYm91dC5jIChzdHJ1Y3Qgc2RiX2ZpbGUpOiBOQU1FIG5vdyBjb25zdC4KCShzZGJvdXRfaW5pdCk6IGlucHV0X2ZpbGVfbmFtZSBub3cgY29uc3QuCgkoc2Rib3V0X3N0YXJ0X25ld19zb3VyY2VfZmlsZSk6IEZJTEVOQU1FIG5vdyBjb25zdC4KCSogc2Rib3V0LmMgKHNkYm91dF9pbml0LCBzZGJvdXRfc3RhcnRfbmV3X3NvdXJjZV9maWxlKTogUmVmbGVjdCBhYm92ZS4KCjIwMDAtMDYtMDYgIEdhYnJpZWwgRG9zIFJlaXMgIDxnZHJAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGMtdHlwZWNrLmMgKGJ1aWxkX2NvbmRpdGlvbmFsX2V4cHIpOiBIYW5kbGUgY29tcGxleCBkYXRhIHR5cGVzLgoKMjAwMC0wNi0wNSAgSmFzb24gTWVycmlsbCAgPGphc29uQGNhc2V5LnNvbWEucmVkaGF0LmNvbT4KCgkqIGV4cGxvdy5jIChtYXliZV9zZXRfdW5jaGFuZ2luZyk6IE5ldyBmdW5jdGlvbiwgYnJva2VuIG91dCBmcm9tLi4uCgkoc2V0X21lbV9hdHRyaWJ1dGVzKTogSGVyZS4KCSogZXhwci5oOiBEZWNsYXJlIGl0LgoJKiBzdG10LmMgKGV4cGFuZF9kZWNsKTogQ2FsbCBpdC4KCjIwMDAtMDYtMDUgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgoJKiByZWxvYWQxLmMgKGNob29zZV9yZWxvYWRfcmVncyk6IE1pbmQgQ0xBU1NfQ0FOTk9UX0NIQU5HRV9TSVpFCgl3aGlsZSBsb29raW5nIGZvciBhIHJlZ2lzdGVyIHRvIGluaGVyaXQgZnJvbS4KCjIwMDAtMDYtMDUgIEphc29uIE1lcnJpbGwgIDxqYXNvbkBjYXNleS5zb21hLnJlZGhhdC5jb20+CgoJKiBNYWtlZmlsZS5pbiAobGliZ2NjLnJlYWR5KTogTG9zZS4KCShsaWJnY2MubWspOiBKdXN0IHVzZSBtdiwgbm90IG1vdmUtaWYtY2hhbmdlLgoJKExJQkdDQ19ERVBTKTogTmV3IG1hY3JvLgoJKGxpYmdjYy5hKTogVXNlIGl0LgoJKHN0bXAtbXVsdGlsaWIpOiBMaWtld2lzZS4KCSogbWtsaWJnY2MuaW4gKHN0bXAtZGlycyk6IE5ldyB0YXJnZXQuICBNYWtlIGV2ZXJ5dGhpbmcgZGVwZW5kIG9uCglpdCByYXRoZXIgdGhhbiB0aGUgZGlyZWN0b3JpZXMgdGhlbXNlbHZlcy4KCShMSUIyQUREKTogRGVwZW5kIG9uIHRoZSBsaXN0IGZpbGUgcmF0aGVyIHRoYW4gJ2ZvcmNlJy4KCgkqIGZvbGQtY29uc3QuYyAoZm9sZCwgY2FzZSBDT05EX0VYUFIpOiBFbGlkZSBjb252ZXJzaW9uIGJldHdlZW4KCWN2LXF1YWxpZmllZCB2ZXJzaW9ucyBvZiB0eXBlcy4KCk1vbiBKdW4gIDUgMTQ6MDY6MTggMjAwMCAgUmljaGFyZCBLZW5uZXIgIDxrZW5uZXJAdmxzaTEudWx0cmEubnl1LmVkdT4KCgkqIGNvbmZpZy9zcGFyYy9zcGFyYy5jIChzaG9ydF9icmFuY2gpOiBDb3JyZWN0IGVycm9yIGluIHJhbmdlCgljb21wdXRhdGlvbi4KCjIwMDAtMDYtMDUgIEouIERhdmlkIEFuZ2xpbiAgPGRhdmVAaGlhdWx5MS5oaWEubnJjLmNhPgoKCSogZml4aW5jL2luY2xoYWNrLmRlZjogTmV3IGluY2x1ZGUgaGFja3MgZm9yIHVsdHJpeC4KCSogKG5lc3RlZF91bHRyaXgpOiBSZXBsYWNlZCBieSB1bHRyaXhfbmVzdGVkX3N2Yy4KCSogKHVsdHJpeF9hdG9mX3BhcmFtKTogdGVzdF90ZXh0IHN0cmluZyBhZGRlZC4KCSogKHVsdHJpeF9pZmRlZik6IE1vZGlmaWVkIHNlbGVjdCBzdHJpbmcuCgoyMDAwLTA2LTA1ICBaYWNrIFdlaW5iZXJnICA8emFja0B3b2xlcnkuY3VtYi5vcmc+CgoJKiBvYmpjL29iamMtYWN0LmMgKGdlbmVyYXRlX21ldGhvZF9kZXNjcmlwdG9ycyk6IFJlZ2lzdGVyCglvYmpjX21ldGhvZF9wcm90b3R5cGVfdGVtcGxhdGUgYXMgYSBHQyByb290LgoJKGNvbXBfbWV0aG9kX3dpdGhfcHJvdG8pOiBSZWdpc3RlciBmdW5jdGlvbl90eXBlIGFzIGEgR0Mgcm9vdC4KCShjb21wX3Byb3RvX3dpdGhfcHJvdG8pOiBSZXBsYWNlIGZ1bmN0aW9uX3R5cGUxIGFuZAoJZnVuY3Rpb25fdHlwZTIgd2l0aCBhIHR3by1lbGVtZW50IGFycmF5OyByZWdpc3RlciBpdCBhcyBhIEdDIHJvb3QuCgoJKGdlbmVyYXRlX3Byb3RvY29scywgYnVpbGRfcHJvdG9jb2xfaW5pdGlhbGl6ZXIsCglnZW5lcmF0ZV9wcm90b2NvbF9saXN0LCBidWlsZF9jYXRlZ29yeV9pbml0aWFsaXplciwKCWJ1aWxkX3NoYXJlZF9zdHJ1Y3R1cmVfaW5pdGlhbGl6ZXIpOiBEbyBub3QgY2FjaGUgY2FzdF90eXBlCglhbmQvb3IgY2FzdF90eXBlMi4KCjIwMDAtMDYtMDUgIEouIERhdmlkIEFuZ2xpbiAgPGRhdmVAaGlhdWx5MS5oaWEubnJjLmNhPgoKCSogZnVuY3Rpb24uYyAoYXNzaWduX3Bhcm1zKTogQWRkIG1pc3NpbmcgYXJndW1lbnQgdG8gc2V0X21lbV9hdHRyaWJ1dGVzCgljYWxsLgoKMjAwMC0wNi0wNSAgTmF0aGFuIFNpZHdlbGwgIDxuYXRoYW5AY29kZXNvdXJjZXJ5LmNvbT4KCgkqIHRyZWUuaCAoVk9JRF9UWVBFX1ApOiBOZXcgbWFjcm8uCgkoQ09NUExFVEVfT1JfVk9JRF9UWVBFX1ApOiBVc2UgVk9JRF9UWVBFX1AuCgkqIGMtZGVjbC5jIChncm9rZGVjbGFyYXRvcik6IFVzZSBWT0lEX1RZUEVfUC4KCShnZXRfcGFybV9pbmZvKTogTGlrZXdpc2UuCgkoc3RvcmVfcGFybV9kZWNscyk6IExpa2V3aXNlLgoJKGNvbWJpbmVfcGFybV9kZWNscyk6IExpa2V3aXNlLgoJKGZpbmlzaF9mdW5jdGlvbik6IExpa2V3aXNlLgoJKiBjLXR5cGVjay5jIChidWlsZF9mdW5jdGlvbl9jYWxsKTogTGlrZXdpc2UuCgkoYnVpbGRfYmluYXJ5X29wKTogTGlrZXdpc2UuCgkoYnVpbGRfY29uZGl0aW9uYWxfZXhwcik6IExpa2V3aXNlLgoJKGludGVybmFsX2J1aWxkX2NvbXBvdW5kX2V4cHIpOiBMaWtld2lzZS4KCShjb252ZXJ0X2Zvcl9hc3NpZ25tZW50KTogTGlrZXdpc2UuCgkqIHN0bXQuYyAoZXhwZW5kX2V4cHJfc3RtdCk6IExpa2V3aXNlLgoJKHdhcm5faWZfdW51c2VkX3ZhbHVlKTogTGlrZXdpc2UuCgkoZXhwYW5kX3JldHVybik6IExpa2V3aXNlLgoJKiBjLXBhcnNlLmluIChwcmltYXJ5KTogTGlrZXdpc2UuCgkqIGMtcGFyc2UueSwgYy1wYXJzZS5jLCBjLXBhcnNlLmg6IFJlZ2VuZXJhdGUuCgkqIG9iamMvb2JqYy1wYXJzZS55LCBvYmpjL29iamMtcGFyc2UuYzogUmVnZW5lcmF0ZS4KCk1vbiBKdW4gIDUgMDY6NDY6MjggMjAwMCAgUmljaGFyZCBLZW5uZXIgIDxrZW5uZXJAdmxzaTEudWx0cmEubnl1LmVkdT4KCgkqIGFsaWFzLmMgKGdldF9hbGlhc19zZXQpOiBJZiBjb21wbmVudCBpcyBhZGRyZXNzYWJsZSwgdXNlIGFsaWFzCglzZXQgb2YgY29tcG9uZW50LgoJKiBjLWRlY2wuYyAoaW5pdF9kZWNsX3Byb2Nlc3NpbmcpOiBEb24ndCBjYWxsIHJlY29yZF9jb21wb25lbnRfYWxpYXNlcy4KCShncm9rZGVjbGFyYXRvcik6IExpa2V3aXNlLgoJKiBjLXR5cGVjay5jIChjb21tb25fdHlwZSk6IExpa2V3aXNlLgoKMjAwMC0wNi0wNCAgQWxleCBTYW11ZWwgIDxzYW11ZWxAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIE1ha2VmaWxlLmluIChPQkpTKTogUmVtb3ZlIGR5bl9zdHJpbmcubwoJKGR5bi1zdHJpbmcubyk6IERlbGV0ZSBydWxlLgoJKiBkeW4tc3RyaW5nLmM6IERlbGV0ZSBmaWxlCgkqIGR5bi1zdHJpbmcuaDogTGlrZXdpc2UuCgoyMDAwLTA2LTA0ICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBNYWtlZmlsZS5pbiAoaW50bC4qKTogSG9ub3Igbm9uemVybyBleGl0IGNvZGVzIGluIHRoZSBpbnRsCglzdWJkaXIuCgoyMDAwLTA2LTAzICBHZW9mZiBLZWF0aW5nICA8Z2VvZmZrQGN5Z251cy5jb20+CgoJKiBhbGlhcy5jIChyZWNvcmRfY29tcG9uZW50X2FsaWFzZXMpOiBEb24ndCBpbnNwZWN0CglERUNMX05PTkFERFJFU1NBQkxFX1Agb2Ygbm9uLUZJRUxEX0RFQ0wgY29tcG9uZW50cyBvZiBzdHJ1Y3R1cmVzLgoKU2F0IEp1biAgMyAxOTowNTozMCAyMDAwICBNaWNoYWVsIE1laXNzbmVyICA8bWVpc3NuZXJAcmVkaGF0LmNvbT4KCgkqIGlmY3Z0LmMgKHByb2Nlc3NfaW5zbnMpOiBJZiBJRkNWVF9NT0RJRllfSU5TTiBpcyBkZWZpbmVkLCBjYWxsCglpdCB3aXRoIHRoZSBwYXR0ZXJuIHRvIGRvIG1hY2hpbmUgZGVwZW5kZW50IHdvcmsuCgkoY29uZF9leGVjX3Byb2Nlc3NfaWZfYmxvY2spOiBJZiBJRkNWVF9NT0RJRllfVEVTVFMgaXMgZGVmaW5lZCwKCXVzZSBpdCB0byBtb2RpZnkgdGhlIHRydWUvZmFsc2UgdGVzdHMgdXNlZCBpbiBjb25kaXRpb25hbAoJZXhlY3V0aW9uLiAgSWYgSUZDVlRfTU9ESUZZX0ZJTkFMIGFuZCBJRkNWVF9NT0RJRllfQ0FOQ0VMIGFyZQoJZGVmaW5lZCwgaW52b2tlIHRoZW0gaWYgdGhlIGNvbnZlcnNpb24gdG8gY29uZGl0aW9uYWwgZXhlY3V0aW9uCgl3YXMgc3VjY2Vzc2Z1bCBvciBub3QuCgoJKiB0bS50ZXhpIChJRkNWVF9NT0RJRllfVEVTVFMpOiBEb2N1bWVudC4KCShJRkNWVF9NT0RJRllfSU5TTik6IERpdHRvLgoJKElGQ1ZUX01PRElGWV9GSU5BTCk6IERpdHRvLgoJKElGQ1ZUX01PRElGWV9DQU5DRUwpOiBEaXR0by4KClNhdCBKdW4gIDMgMTU6MjY6MTMgMjAwMCAgTWF0dCBLcmFhaSA8a3JhYWlAYWx1bW5pLmNhcm5lZ2llbWVsbG9uLmVkdT4KCgkqIHRvcGxldi5jIChtYWluKTogRml4IG1pc3NwZWxsaW5ncyBvZiBwb3NzaWJpbGl0eSBhbmQgbGFuZ3VhZ2UuCgoyMDAwLTA2LTAzICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEBjeWdudXMuY29tPgoKCSogYWxpYXMuYyAocmVjb3JkX2FsaWFzX3N1YnNldCk6IEluaXRpYWxpemUgaGFzX3plcm9fY2hpbGQgaW4gdGhlCglzdXBlcnNldC4KCjIwMDAtMDYtMDMgIFJpY2hhcmQgRWFybnNoYXcgKHJlYXJuc2hhQGFybS5jb20pCgoJKiBhcm0ubWQgKHVudHlwZWRfY2FsbCk6IFVzZSBHRU5fQ0FMTCBtYWNyby4KCjIwMDAtMDYtMDIgIFBla2thIE5pa2FuZGVyICA8cG5yQHRlbGRhbmV4LnRjbS5odXQuZmk+CgoJKiBNYWtlZmlsZS5pbjogVXNlICQoTUFLRSkgbm90ICJtYWtlIgoKRnJpIEp1biAgMiAxOTozMTowMyAyMDAwICBSaWNoYXJkIEtlbm5lciAgPGtlbm5lckB2bHNpMS51bHRyYS5ueXUuZWR1PgoKCSogYWxpYXMuYyAoc3RydWN0IGFsaWFzX3NldF9lbnRyeSk6IE5ldyBmaWVsZCBoYXNfemVyb19jaGlsZC4KCShtZW1faW5fZGlzam9pbnRfYWxpYXNfc2V0c19wKTogUmV0dXJuIDAgaWYgc2V0IGluIGVpdGhlciBhc2UuCgkoZ2V0X2FsaWFzX3NldCk6IElmIGxhbmd1YWdlLWRlcGVuZGVudCByb3V0aW5lIHNldCBUWVBFX0FMSUFTX1NFVCwKCWRvIG5vdGhpbmcuCglDYWxsIHJlY29yZF9jb21wb25lbnRfYWxpYXNlcyBmb3IgYWdncmVnYXRlIHR5cGVzLgoJKHJlY29yZF9hbGlhc19zdWJzZXQpOiBTZXQgaGFzX3plcm9fY2hpbGQuCgkocmVjb3JkX2NvbXBvbmVudF9hbGlhc2VzLCBjYXNlIEFSUkFZX1RZUEUpOiBEbyBub3RoaW5nIGlmCglUWVBFX05PTkFMSUFTRVNfQ09NUE9ORU5ULgoJKHJlY29yZF9jb21wb25lbnRfYWxpYXNlcywgY2FzZSBSRUNPUkRfVFlQRSk6IFRlc3QKCURFQ0xfTk9OQUREUkVTU0FCTEVfUC4KCSogYy1kZWNsLmMgKGdyb2tkZWNsYXJhdG9yKTogU2V0IERFQ0xfTk9OQUREUkVTU0FCTEVfUCBpbnN0ZWFkCglvZiBUUkVFX0FERFJFU1NBQkxFLgoJKiBjYWxscy5jIChpbml0aWFsaXplX2FyZ3VtZW50X2luZm9ybWF0aW9uKTogT25seSB0ZXN0CglUWVBFX1RSQU5TUEFSRU5UX1VOSU9OIGZvciBVTklPTl9UWVBFLgoJKiBmdW5jdGlvbi5jIChhc3NpZ25fcGFybXMpOiBMaWtld2lzZS4KCSogaW50ZWdyYXRlLmMgKGZ1bmN0aW9uX2Nhbm5vdF9pbmxpbmVfcCk6IExpa2V3aXNlLgoJKiBzdG9yLWxheW91dC5jIChmaW5pc2hfcmVjb3JkX2xheW91dCk6IERvbid0IGNhbGwKCXJlY29yZF9jb21wb25lbnRfYWxpYXNlcy4KCSogdHJlZS5oIChzdHJ1Y3QgdHJlZV9pbnRfY3N0KTogVXNlIHN0cnVjdCB0cmVlX2NvbW1vbi4KCShzdHJ1Y3QgdHJlZV9yZWFsX2NzdCwgc3RydWN0IHRyZWVfc3RyaW5nKTogTGlrZXdpc2UuCgkoc3RydWN0IHRyZWVfY29tcGxleCwgc3RydWN0IHRyZWVfaWRlbnRpZmllcik6IExpa2V3aXNlLgoJKHN0cnVjdCB0cmVlX2xpc3QsIHN0cnVjdCB0cmVlX3ZlYywgc3RydWN0IHRyZWVfZXhwKTogTGlrZXdpc2UuCgkoc3RydWN0IHRyZWVfYmxvY2ssIHN0cnVjdCB0cmVlX3R5cGUsIHN0cnVjdCB0cmVlX2RlY2wpOiBMaWtld2lzZS4KCShUWVBFX1RSQU5TUEFSRU5UX1VOSU9OKTogVXNlIFVOSU9OX1RZUEVfQ0hFQ0suCgkoVFlQRV9OT05BTElBU0VTX0NPTVBPTkVOVCk6IE5ldyBtYWNyby4KCShUWVBFX0FNQklFTlRfQk9VTkRFRE5FU1MpOiBVc2UgRlVOQ1RJT05fVFlQRV9DSEVDSy4KCShERUNMX05PTkFERFJFU1NBQkxFX1ApOiBOZXcgbWFjcm8uCgkoc3RydWN0IHRyZWVfZGVjbCk6IFJlb3JkZXIgYml0cyBmb3IgY2xhcml0eSBvZiBob3cgbWFueSBsZWZ0OwoJYWRkIG5vbl9hZHJlc3NhYmxlLgoKMjAwMC0wNi0wMiAgSmFzb24gTWVycmlsbCAgPGphc29uQGNhc2V5LnNvbWEucmVkaGF0LmNvbT4KCgkqIE1ha2VmaWxlLmluIChsaWJnY2MuYSk6IEFsc28gZGVwZW5kIG9uICQoTElCMkFERCkuCgkqIG1rbGliZ2NjLmluIChmb3JjZSk6IE5ldyB0YXJnZXQuCglNYWtlIExJQjJBREQgc3R1ZmYgZGVwZW5kIG9uIGl0LgoKMjAwMC0wNi0wMiAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAY3lnbnVzLmNvbT4KCgkqIGFsaWFzLmMgKGxhbmdfZ2V0X2FsaWFzX3NldCk6IFJlbW92ZS4KCShnZXRfYWxpYXNfc2V0KTogQ2FsbCBpdCBkaXJlY3RseSwgbm90IGluZGlyZWN0bHkuCgkqIGMtY29tbW9uLmMgKGxhbmdfZ2V0X2FsaWFzX3NldCk6IFJlbmFtZSBmcm9tIGNfZ2V0X2FsaWFzX3NldC4KCSogYy1jb21tb24uaCAoY19nZXRfYWxpYXNfc2V0KTogRG9uJ3QgZGVjbGFyZS4KCSogYy1kZWNsLmMgKGluaXRfZGVjbF9wcm9jZXNzaW5nKTogRG9uJ3Qgc2V0IGxhbmdfZ2V0X2FsaWFzX3NldC4KCSogZXhwci5oIChsYW5nX2dldF9hbGlhc19zZXQpOiBEZWNsYXJlIGFzIGZ1bmN0aW9uLCBub3QgcG9pbnRlci4KCjIwMDAtMDYtMDIgIEJydWNlIEtvcmIgIDxia29yYkBnbnUub3JnPgoKCSogZml4aW5jL3NlcnZlci5jKHNpZ19oYW5kbGVyKTogIHJlc3VtZSBjbG9zaW5nIHNlcnZlciBvbiBTSUdQSVBFCgkoc2VydmVyX3NldHVwKTogIGRlZmluZSB0aGUgc2VydmVyJ3MgbWFzdGVyIHBpZAoJKGNsb3NlX3NlcnZlcik6ICBhY3R1YWxseSBkbyB0aGUgZGVlZCBJRkYgd2UgYXJlIHRoZSBzZXJ2ZXIncyBtYXN0ZXIKCjIwMDAtMDYtMDIgIEpha3ViIEplbGluZWsgIDxqYWt1YkByZWRoYXQuY29tPgoKCSogYy1jb21tb24uYyAoY19nZXRfYWxpYXNfc2V0KTogQ2hlY2sgd2hldGhlciBzaWduZWRfdHlwZSBkaWQgbm90CglyZXR1cm4gaXRzIGFyZ3VtZW50IGJlZm9yZSBjYWxsaW5nIGdldF9hbGlhc19zZXQgb24gdGhlIHJlc3VsdC4KCjIwMDAtMDYtMDIgIEFuZHJldyBNYWNMZW9kICA8YW1hY2xlb2RAY3lnbnVzLmNvbT4KCgkqIGV4cHIuYyAoZW1pdF9ncm91cF9sb2FkKTogRml4IHR5cG8sIEdFVF9NT0RFIG5vdCBHRVRfQ09ERS4KCkZyaSBKdW4gIDIgMDA6MjI6NTIgMjAwMCAgSiJvcm4gUmVubmVja2UgPGFteWxhYXJAY3lnbnVzLmNvLnVrPgoKCSogc2guaCAoQ1BQX1NQRUMpOiBBZGQgLURfX05PTUFDU0FWRV9fIGZvciAtbW5vbWFjc2F2ZS4KCShDT05ESVRJT05BTF9SRUdJU1RFUl9VU0FHRSk6IE1hYyByZWdpc3RlcnMgYXJlIGNhbGwgdXNlZAoJZm9yIFRBUkdFVF9OT01BQ1NBVkUuCgkoTk9NQUNTQVZFX0JJVCk6IERlZmluZS4KCShUQVJHRVRfTk9NQUNTQVZFKTogRGVmaW5lLgoJKFRBUkdFVF9TV0lUQ0hFUyk6IEFkZCAibm9tYWNzYXZlIi4KCjIwMDAtMDYtMDIgIFRvc2hpeWFzdSBNb3JpdGEgIDx0b3NoaS5tb3JpdGFAc2VnYS5jb20+CgoJKiBzaC5tZCAodW50eXBlZF9jYWxsKTogUmVtb3ZlIGV4Y2VzcyBwYXJhbWV0ZXJzCgoyMDAwLTA2LTAxICBMb3JlbiBKLiBSaXR0bGUgIDxsanJpdHRsZUBhY20ub3JnPgoKCSogZml4aW5jL2luY2xoYWNrLmRlZiAob3NmX25hbWVzcGFjZV9hKTogUmVsYXggZXhwcmVzc2lvbiB0bwoJbWF0Y2ggdGhhdCB1c2VkIGJlZm9yZSB0aGUgY29udmVyc2lvbiB0byBjX2ZpeCBzdHlsZS4KCSogZml4aW5jL2ZpeGluY2wueDogcmVnZW5lcmF0ZQoKMjAwMC0wNi0wMSAgU3RhbiBDb3ggIDxzY294QGN5Z251cy5jb20+CgoJKiB2YXJyYXkuaCAoVkFSUkFZX1BVU0hfR0VORVJJQ19QVFIsIFZBUlJBWV9QVVNIX0NIQVJfUFRSKTogRml4CgltYWNybyBhcmd1bWVudCB0eXBvLgoKMjAwMC0wNi0wMSAgWmFjayBXZWluYmVyZyAgPHphY2tAd29sZXJ5LmN1bWIub3JnPgoKCSogY3BwbGV4LmMgKG1heWJlX21hY3JvZXhwYW5kKTogVXNlIENQUF9XVFJBRElUSU9OQUwuICBJbXByb3ZlCgllcnJvciBtZXNzYWdlLgoJKiBjcHBsaWIuYyAocGFyc2VfaW5jbHVkZSk6IFJlbW92ZSBzdXBwb3J0IGZvciBWQVgtQwoJIiNpbmNsdWRlIHN0YXJsZXQiIG1pc2ZlYXR1cmUuCgoyMDAwLTA1LTMxIExhdXJ5bmFzIEJpdmVpbmlzIDxsYXVyYXNAc29mdGhvbWUubmV0PgoKCSogY3BwZmlsZXMuYzogY29uZGl0aW9uYWxseSBkZWZpbmUgT19CSU5BUlkuCgkob3Blbl9pbmNsdWRlX2ZpbGUpOiBwYXNzIE9fQklOQVJZIHRvIG9wZW4oKS4KCjIwMDAtMDYtMDEgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgoJKiBpOTYwLmMgKGk5NjBfYnJfcHJlZGljdF9vcGNvZGUpOiBSZW1vdmUuCgkoaTk2MF9wcmludF9vcGVyYW5kKSBbK106IEVtaXQgYnJhbmNoIHByZWRpY3Rpb24gaGludHMuCgkoaTk2MF9mdW5jdGlvbl9hcmcpOiBSZXR1cm4gZWFybHkgZm9yIFZPSURtb2RlLgoJKGk5NjBfcm91bmRfYWxpZ24pOiBSZXR1cm4gZWFybHkgZm9yIGluY29tcGxldGUgdHlwZXMuCgkqIGk5NjAuaCAoUFJJTlRfT1BFUkFORF9QVU5DVF9WQUxJRF9QKTogTmV3LgoJKiBpOTYwLm1kIChhbGwgY29uZGl0aW9uYWwgYnJhbmNoZXMpOiBBZGQgIiUrIi4KClRodSBKdW4gIDEgMTI6MjQ6MjEgMjAwMCAgUmljaGFyZCBLZW5uZXIgIDxrZW5uZXJAdmxzaTEudWx0cmEubnl1LmVkdT4KCgkqIGFsaWFzLmMgKGdldF9hbGlhc19zZXQpOiBEb24ndCBjYWxsIGxhbmd1YWdlLXNwZWNpZmljIHJvdXRpbmUgbW9yZQoJdGhhbiBpcyBuZWVkZWQgYW5kIGNsZWFuIHVwIGNvZGUgYSBiaXQuCgkqIGMtY29tbW9uLmMgKGNfZ2V0X2FsaWFzX3NldCk6IEFsbCByZWZlcmVuY2VzIHdob3NlIHR5cGUKCWlzIGNoYXIgZ2V0IGFsaWFzIHNldCAwLCBidXQgY2hhcmFjdGVyIHR5cGVzIG5lZWQgbm90LgoJKiB2YXJhc20uYyAobWFrZV9mdW5jdGlvbl9ydGwpOiBEb24ndCBjYWxsIHNldF9tZW1fYXR0cmlidXRlcy4KCShtYWtlX2RlY2xfcnRsKTogRG9uJ3QgY2FsbCBpdCBmb3IgRlVOQ1RJT05fREVDTC4KCjIwMDAtMDYtMDEgIEJydWNlIEtvcmIgIDxia29yYkBnbnUub3JnPgoKCSogZml4aW5jL3Rlc3RzL2Jhc2UvLi4uOiBuZXcgYmFzZSByZXN1bHQgZmlsZXMKClRodSBKdW4gIDEgMDk6Mzc6MzUgMjAwMCAgQ2xpbnRvbiBQb3BldHogIDxjcG9wZXR6QGN5Z251cy5jb20+CgoJKiBjb25maWcvaTM4Ni9pMzg2LmMgKGl4ODZfdXNlX2Zjb21pX2NvbXBhcmUpOiBNYWtlIGdsb2JhbC4KCSogY29uZmlnL2kzODYvaTM4Ni1wcm90b3MuaCAoaXg4Nl91c2VfZmNvbWlfY29tcGFyZSk6IERlY2xhcmUuCgkqIGNvbmZpZy9pMzg2L2kzODYubWQgKCpmcF9qY2NfMywgKmZwX2pjY180KTogRGlzYWJsZSBpZiB3ZQoJd2lsbCB1c2UgRkNPTUkuCgoyMDAwLTA2LTAxICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEBjeWdudXMuY29tPgoKCSogTWFrZWZpbGUuaW4gKGMtZGVjbC5vKTogRGVwZW5kIG9uICQoRVhQUl9IKSwgbm90IGV4cHIuaC4KCgkqIGMtZGVjbC5jIChpbml0X2RlY2xfcHJvY2Vzc2luZyk6IFNldCBsYW5nX2dldF9hbGlhc19zZXQgZmlyc3QgdGhpbmcuCgoyMDAwLTA1LTMxICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEBjeWdudXMuY29tPgoKCSogY29uZmlnL2lhNjQvaWE2NC5jIChzZGF0YV9zeW1ib2xpY19vcGVyYW5kKTogQ29uc2lkZXIgc21hbGwKCUNPTlNUQU5UX1BPT0xfQUREUkVTU19QIGFkZHJlc3NlcyBmb3IgLnNkYXRhLgoJKiBjb25maWcvaWE2NC9zeXN2NC5oIChTRUxFQ1RfUlRYX1NFQ1RJT04pOiBOZXcuCgoyMDAwLTA1LTMxICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEBjeWdudXMuY29tPgoKCSogY29uZmlnL2lhNjQvaWE2NC1wcm90b3MuaCAoaWE2NF9leHBhbmRfcHJlZGljdGlvbik6IFJlbW92ZS4KCSogY29uZmlnL2lhNjQvaWE2NC5jIChpYTY0X2V4cGFuZF9wcmVkaWN0aW9uKTogTW92ZSBjb2RlIC4uLgoJKGlhNjRfcHJpbnRfb3BlcmFuZCkgWytdOiAuLi4gaGVyZS4gIFVzZSBjdXJyZW50X291dHB1dF9pbnNuLgoJKiBjb25maWcvaWE2NC9pYTY0LmggKFBSSU5UX09QRVJBTkRfUFVOQ1RfVkFMSURfUCk6IE5ldy4KCSogY29uZmlnL2lhNjQvaWE2NC5tZCAoYWxsIGJyYW5jaC9jYWxsIHBhdHRlcm5zKTogVXNlICUrLgoKMjAwMC0wNS0zMSAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAY3lnbnVzLmNvbT4KCgkqIGlmY3Z0LmMgKGNvbmRfZXhlY19wcm9jZXNzX2luc25zKTogRG9uJ3QgZXZlciBpZ25vcmUgY2xvYmJlcnMuCgoyMDAwLTA1LTMxICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEBjeWdudXMuY29tPgoKCSogaWZjdnQuYyAobWVyZ2VfaWZfYmxvY2spOiBCZSBwcmVwYXJlZCBmb3IgSk9JTiB0byBoYXZlIG5vCglyZW1haW5pbmcgZWRnZXMuCgkoZmluZF9pZl9ibG9jayk6IEFsbG93IFRIRU4gd2l0aCBubyBvdXRnb2luZyBlZGdlcy4KCSogZmxvdy5jIChtZXJnZV9ibG9ja3Nfbm9tb3ZlKTogUmVtb3ZlIGEgYmFycmllciBub3QgZm9sbG93aW5nCglhIGp1bXAgYXMgd2VsbC4KCjIwMDAtMDUtMzEgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgoJKiBmbG93LmMgKHByb3BhZ2F0ZV9ibG9jayk6IE1vdmUgaW5pdGlhbGl6YXRpb24gb2YgbWVtX3NldF9saXN0IC4uLgoJKGluaXRfcHJvcGFnYXRlX2Jsb2NrX2luZm8pOiAuLi4gaGVyZS4gIEFsc28gdHJhY2sgYmxvY2tzIHdpdGgKCW5vIHN1Y2Nlc3NvcnM7IGRvbid0IHNjYW4gaW5zbnMgaWYgISBQUk9QX1NDQU5fREVBRF9DT0RFLgoKMjAwMC0wNS0zMSAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAY3lnbnVzLmNvbT4KCgkqIGp1bXAuYyAoanVtcF9vcHRpbWl6ZV8xKTogUmV2ZXJ0IDA1LTE4IGNoYW5nZS4KCjIwMDAtMDUtMzEgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBpbnZva2UudGV4aTogUmVtb3ZlIGRvY3VtZW50YXRpb24gZm9yIC1mZ3VpZGluZy1kZWNscy4KCjIwMDAtMDUtMzEgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgoJKiBjb25maWd1cmUuaW46IEZpeCB0eXBvIGxhc3QgY2hhbmdlLgoKMjAwMC0wNS0zMSAgUGhpbGlwcCBUaG9tYXMgIDxwdGhvbWFzQHN1c2UuZGU+CgoJKiBjb25maWd1cmUuaW4gKGVuYWJsZS1ubHMpOiBFbmFibGUgaWYgYnVpbGQgPT0gaG9zdCwgaS5lLiB3aGVuCglub3QgYnVpbGRpbmcgYSBjYW5hZGlhbiBjcm9zcyBjb21waWxlci4KCShlbmFibGUtbWFpbnRhaW5lci1tb2RlKTogQWRkZWQgZm9yIHVzZSB3aXRoIGkxOG4uCgkqIGFjbG9jYWwubTQgKEFNX0dOVV9HRVRURVhUKTogT25seSBidWlsZCBjYXRhbG9ncyB0aGF0IGFyZSBhCgljcm9zcyBzZWN0aW9uIG9mIEFMTF9MSU5HVUFTIGFuZCBMSU5HVUFTLgoJKiBjb25maWd1cmU6IFJlYnVpbGQuCgoyMDAwLTA1LTMxICBCcnVjZSBLb3JiICA8YmtvcmJAZ251Lm9yZz4KCgkqIGZpeGluYy9jaGVjay50cGw6IHJld29yayB0byB1c2UgdGVzdCByZXN1bHQgdHJlZQoJKiBmaXhpbmMvTWFrZWZpbGUuaW46IGNoYW5nZSBpbnZvY2F0aW9uIG9mIGNoZWNrIHNjcmlwdAoJKiBmaXhpbmMvY2hlY2suZGlmZjogTm8gbG9uZ2VyIG5lZWRlZAoJKiBmaXhpbmMvZml4aW5jbC54OiByZWdlbmVyYXRlCgkqIGZpeGluYy9pbmNsaGFjay5kZWY6ICBhZGQgbmV3IHRlc3RzCgkqIGZpeGluYy90ZXN0cy9iYXNlL2FyY2gvaTk2MC9hcmNoSTk2MC5oOiAgTmV3IHRlc3QgcmVzdWx0CgkqIGZpeGluYy90ZXN0cy9iYXNlL2N1cnNlcy5oOiBtb2RpZmllZCB0ZXN0IHJlc3VsdAoJKiBmaXhpbmMvdGVzdHMvYmFzZS9zdGRpby5oOiBkaXR0bwoJKiBmaXhpbmMvdGVzdHMvYmFzZS90aW1lLmg6IGRpdHRvCgkqIGZpeGluYy90ZXN0cy9iYXNlL3N5cy9hc20uaDogZGl0dG8KCSogZml4aW5jL3Rlc3RzL2Jhc2Uvc3lzL3N0YXQuaDogZGl0dG8KCSogZml4aW5jL3Rlc3RzL2Jhc2Uvc3lzL3dhaXQuaDogZGl0dG8KCldlZCBNYXkgMzEgMTM6MTc6MjAgMjAwMCAgUGhpbGlwcGUgRGUgTXV5dGVyICA8cGhkbUBtYWNxZWwuYmU+CgoJKiBleGNlcHQuYyAoY2xlYXJfZnVuY3Rpb25fZWhfcmVnaW9uKTogRG8gbm90IGZyZWUgTlVMTC4KCldlZCBNYXkgMzEgMDg6MDc6NTIgMjAwMCAgUmljaGFyZCBLZW5uZXIgIDxrZW5uZXJAdmxzaTEudWx0cmEubnl1LmVkdT4KCgkqIE1ha2VmaWxlLmluIChjLWRlY2wubyk6IERlcGVuZCBvbiBydGwuaCBhbmQgZXhwci5oLgoJKiBhbGlhcy5jIChzdHJ1Y3QgYWxpYXNfZW50cnkpOiBhbGlhc19zZXQgaXMgSE9TVF9XSURFX0lOVC4KCShSRUdfQkFTRV9WQUxVRSk6IFJlbW92ZSB1bm5lZWRlZCBjYXN0IHRvIHVuc2lnbmVkLgoJKGdldF9hbGlhc19zZXRfZW50cnkpOiBBTElBU19TRVQgYXJnIGlzIEhPU1RfV0lERV9JTlQuCgkoZmluZF9iYXNlX2RlY2wpOiBOZXcgZnVuY3Rpb24sIGZyb20gY19maW5kX2Jhc2VfZGVjbCBpbiBjLWNvbW1vbi5jLgoJKG5ld19hbGlhc19zZXQpOiBNb3ZlZCBmcm9tIHRyZWUuYzsgcmV0dXJuIGlzIEhPU1RfV0lERV9JTlQuCgkoZ2V0X2FsaWFzX3NldCk6IExpa2V3aXNlLgoJTWFqb3IgcmV3b3JrIHRvIGRvIG1vcmUgdGhpbmdzIGFuZCBhbGxvdyBsYW5ndWFnZS1zcGVjaWZpYyBjb2RlCgl0byBqdXN0IGhhbmRsZSBzcGVjaWFsLWNhc2VzLgoJKHJlY29yZF9hbGlhc19zdWJzZXQpOiBBcmdzIGFyZSBIT1NUX1dJREVfSU5ULgoJKHJlY29yZF9jb21wb25lbnRfYWxpYXMpOiBMb2NhbCB2YXJzIGFyZSBIT1NUX1dJREVfSU5ULgoJRG9uJ3QgaGFuZGxlIENPTVBMRVhfRVhQUi4KCShnZXRfdmFyYXJnc19hbGlhc19zZXQpOiBNb3ZlZCBmcm9tIGJ1aWx0aW5zLmMuCgkoZ2V0X2ZyYW1lX2FsaWFzX3NldCk6IE5ldyBmdW5jdGlvbi4KCSogYnVpbHRpbnMuYyAoZXhwYW5kX2J1aWx0aW5fcmV0dXJuX2FkZHJlc3MpOiBVc2UgZnJhbWUgYWxpYXMgc2V0LgoJKGV4cGFuZF9idWlsdGluX3NldGptcCwgZXhwYW5kX2J1aWx0aW5fbG9uZ2ptcCk6IFVzZSBhbGlhcyBzZXQKCWZvciBzZXRqbXAgYnVmZmVyLgoJKGdldF9tZW1vcnlfcnR4KTogUmV3b3JrIHRvIHVzZSBzZXRfbWVtX2F0dHJpYnV0ZXMuCgkoZ2V0X3ZhcmFyZ3NfYWxpYXNfc2V0KTogRGVsZXRlZCBmcm9tIGhlcmUuCgkqIGMtY29tbW9uLmMgKGNfYXBwbHlfdHlwZV9xdWFsc190b19kZWNsKTogQWxpYXMgc2V0cyBub3cgSE9TVF9XSURFX0lOVC4KCShjX2ZpbmRfYmFzZV9kZWNsKTogRGVsZXRlZCBmcm9tIGhlcmUuCgkoY19nZXRfYWxpYXNfc2V0KTogUmVtb3ZlIG1hbnkgY2FzZXMgYW5kIHJld29yayB0byBqdXN0IGhhbmRsZQoJQy1zcGVjaWZpYyBjYXNlcy4KCSogYy1jb21tb24uaCAoY19nZXRfYWxpYXNfc2V0KTogUmV0dXJucyBIT1NUX1dJREVfSU5ULgoJKiBjLWRlY2wuYyAocnRsLmgsIGV4cHIuaCk6IE5vdyBpbmNsdWRlZC4KCShpbml0X2RlY2xfcHJvY2Vzc2luZyk6IENhbGwgcmVjb3JkX2NvbXBvbmVudF9hbGlhc2VzIG9uIGFycmF5IHR5cGVzLgoJKGdyb2tkZWNsYXJhdG9yKTogTGlrZXdpc2UuCglTZXQgVFJFRV9BRERSRVNTQUJMRSBmb3IgYWxsIGZpZWxkcyB0aGF0IGFyZSBub3QgYml0ZmllbGRzLgoJKiBjLXR5cGVjay5jIChjb21tb25fdHlwZSk6IENhbGwgcmVjb3JkX2NvbXBvbmVudF9hbGlhc2VzIGZvciBhcnJheS4KCSogY2FsbGVyLXNhdmUuYyAoc2V0dXBfc2F2ZV9hcmVhcyk6IFJld29yayByZWdpc3RlciBsb29wIGZvciB1bnNpZ25lZC4KCVNldCBhbGwgc2F2ZSBhcmVhcyB0byB0aGUgZnJhbWUgYWxpYXMgc2V0LgoJKiBjYWxscy5jIChpbml0aWFsaWVfYXJndW1lbnRfaW5mb3JtYXRpb24pOiBDYWxsIHNldF9tZW1fYXR0cmlidXRlcy4KCShjb21wdXRlX2FyZ3VtZW50X2FkZHJlc3NlcywgZXhwYW5kX2NhbGwpOiBMaWtld2lzZS4KCSogZXhwbG93LmMgKHNldF9tZW1fYXR0cmlidXRlcyk6IE5ldyBmdW5jdGlvbi4KCShzdGFiaWxpemUpOiBVc2UgTUVNX0NPUFlfQVRUUklCVVRFUyBhbmQgZm9yY2VfcmVnLgoJKiBleHByLmMgKHN0cnVjdCBtb3ZlX2J5X3BpZWNlcyk6IFJlbW92ZSB7dG8sZnJvbX1fe3N0cnVjdCxyZWFkb25seX0uCglMRU4gYW5kIE9GRlNFVCBub3cgSE9TVF9XSURFX0lOVC4KCShjbGVhcl9ieV9waWVjZXMpOiBTaW1pbGFyIGNoYW5nZXMuCgkobW92ZV9ieV9waWVjZXMpOiBMRU4gbm93IEhPU1RfV0lERV9JTlQ7IGRvbid0IHNldCBkZWxldGVkIGZpZWxkcy4KCShtb3ZlX2J5X3BpZWNlc19uaW5zbnMpOiBOb3cgcmV0dXJucyB1bnNpZ25lZCBIT1NUX1dJREVfSU5ULgoJKG1vdmVfYnlfcGllY2VzXzEpOiBEb24ndCB1c2UgZGVsZXRlZCBmaWVsZHMsIHVzZSBNRU1fQ09QWV9BVFRSSUJVVEVTLgoJKGNsZWFyX2J5X3BpZWNlc18xKTogTGlrZXdpc2UuCgkoZW1pdF9wdXNoX2luc24pOiBDYWxsIHNldF9tZW1fYXR0cmlidXRlcy4KCShleHBhbmRfZXhwciwgY2FzZSBJTkRJUkVDVF9SRUYpOiBMaWtld2lzZS4KCShleHBhbmRfZXhwciwgY2FzZSBWQVJfREVDTCk6IENhbGwgY2hhbmdlX2FkZHJlc3MuCgkqIGV4cHIuaCAoQUREX1BBUk1fU0laRSwgU1VCX1BBUk1fU0laRSk6IFVzZSBob3N0X2ludGVnZXJwIGFuZAoJdHJlZV9sb3dfY3N0LgoJKGdldF92YXJhcmdzX2FsaWFzX3NldCwgZ2V0X2ZyYW1lX2FsaWFzX3NldCk6IE5ldyBkZWNscy4KCShyZWNvcmRfYmFzZV92YWx1ZSwgcmVjb3JkX2FsaWFzX3N1YnNldCwgbGFuZ19nZXRfYWxpYXNfc2V0KTogTGlrZXdpc2UuCgkobmV3X2FsaWFzX3NldCwgc2V0X21lbV9hdHRyaWJ1dGVzKTogTGlrZXdzZS4KCSogZnVuY3Rpb24uYyAoc3RydWN0IHRlbXBfc2xvdCk6IEFMSUFTX1NFVCBpcyBIT1NUX1dJREVfSU5ULgoJKGFzc2lnbl9zdGFja190ZW1wX2Zvcl90eXBlKTogTGlrZXdpc2UuCglDYW4gc3BsaXQgc2xvdCBldmVuIGlmIGFsaWFzIHNldCBzaW5jZSBjYW4gY29weS4KCVNldCBNRU1fQUxJQVNfU0VUIGFuZCBNRU1fU0VUX0lOX1NUUlVDVF9QLgoJKGFzc2lnbl90ZW1wKTogVXNlIGhvc3RfaW50ZWdlcnAgYW5kIHRyZWVfbG93X2NzdC4KCShwdXRfdmFyX2ludG9fc3RhY2spOiBQcm9wZXJseSBoYW5kbGUgU0FWRV9FWFBSLgoJKHB1dF9hZGRyZXNzb2ZfaW50b19zdGFjayk6IExpa2V3aXNlLgoJKGFzc2lnbl9wYXJtcyk6IENhbGwgc2V0X21lbV9hdHRyaWJ1dGVzLgoJRGVsZXRlICNpZiAwIGNvZGUuCgkoZml4X2xleGljYWxfYWRkcmVzcyk6IFB1dCByZWZlcmVuY2UgdG8gY2hhaW4gaW50byBmcmFtZSBhbGlhcyBzZXQuCgkoZXhwYW5kX2Z1bmN0aW9uX3N0YXJ0KTogQ2FsbCBzZXRfbWVtX2F0dHJpYnV0ZXMuCgkqIGludGVncmF0ZS5jIChleHBhbmRfaW5saW5lX2Z1bmN0aW9uKTogTGlrZXdpc2UuCgkqIHJlY29nLmMgKGFkal9vZmZzZXR0YWJsZV9vcGVyYW5kKTogVXNlIE1FTV9DT1BZX0FUVFJJQlVURVMuCgkqIHJlZ21vdmUuYyAodHJ5X2FwcGx5X3N0YWNrX2FkanVzdG1lbnQpOiBMaWtld2lzZS4KCSogcmVsb2FkLmMgKHB1c2hfcmVsb2FkLCBtYWtlX21lbWxvYyk6IExpa2V3aXNlLgoJKiByZWxvYWQxLmMgKGFsdGVyX3JlZyk6IE1ha2UgYWxpYXMgc2V0cyBmb3Igc3BpbGxlZCBwc2V1ZG9zLgoJKiBydGwuZGVmIChNRU0pOiBVcGRhdGUgY29tbWVudC4KCSogcnRsLmggKE1FTV9BTElBU19TRVQpOiBOb3cgdXNlcyBYQ1dJTlQuCgkobW92ZV9ieV9waWVjZXMpOiBDaGFuZ2UgbGVuZ3RoIHRvIEhPU1RfV0lERV9JTlQuCgkocmVjb3JkX2Jhc2VfdmFsdWUsIHJlY29yZF9hbGlhc19zdWJzZXQpOiBEZWxldGUgZnJvbSBoZXJlLgoJKiBzdG10LmMgKGV4cGFuZF9kZWNsKTogQ2FsbCBzZXRfbWVtX2F0dHJpYnV0ZXMuCgkqIHN0b3ItbGF5b3V0LmMgKGZpbmlzaF9yZWNvcmRfbGF5b3V0KTogQ2FsbCByZWNvcmRfY29tcG9uZW50X2FsaWFzZXMuaQoJKiB0b3BsZXYuYyAoY29tcGlsZV9maWxlKTogQ2FsbCBpbml0X2FsaWFzX29uY2UgZWFybGllci4KCSogdHJlZS5jIChsYW5nX2dldF9hbGlhc19zZXQsIGdldF9hbGlhc19zZXQsIG5ld19hbGlhc19zZXQpOiBEZWxldGVkCglmcm9tIGhlcmU6IG5vdyBpbiBhbGlhcy5jLgoJKiB0cmVlLmggKHN0cnVjdCB0cmVlX3R5cGUpOiBhbGlhc19zZXQgaXMgSE9TVF9XSURFX0lOVC4KCShzdHJ1Y3QgdHJlZV9kZWNsKTogTGlrZXdpc2UuCgkoZ2V0X2FsaWFzX3NldCwgbmV3X2FsaWFzX3NldCwgbGFuZ19nZXRfYWxpYXNfc2V0KTogRGVsZXRlZCBmcm9tIGhlcmUuCgkqIHZhcmFzbS5jIChtYWtlX2Z1bmN0aW9uX3J0bCwgbWFrZV9kZWNsX3J0bCk6IENhbGwgc2V0X21lbV9hdHRyaWJ1dGVzLgoJKG91dHB1dF9jb25zdGFudF9kZWYsIGZvcmNlX2NvbnN0X21lbSk6IExpa2V3aXNlLgoKCSogZmxvdy5jIChwcm9wYWdhdGVfYmxvY2spOiBJZiBibG9jayBoYXMgbm8gc3VjY2Vzc29ycywgc3RvcmVzIHRvCglmcmFtZSBhcmUgZGVhZCBpZiBub3QgdXNlZC4KCjIwMDAtMDUtMzEgIE5hdGhhbiBTaWR3ZWxsICA8bmF0aGFuQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBzdG10IChleHBhbmRfZW5kX2Nhc2UpOiBSZW9yZGVyIGNvbnZlcnNpb24gc2VxdWVuY2UgZm9yIGp1bXAKCXRhYmxlIHRvIGF2b2lkIGV4dHJhIHRydW5jYXRpb25zLgoKV2VkIE1heSAzMSAwMTozMTo0MiAyMDAwICBKZWZmcmV5IEEgTGF3ICAobGF3QGN5Z251cy5jb20pCgoJKiBpZmN2dC5jIChjb25kX2V4ZWNfcHJvY2Vzc19pZl9ibG9jayk6IERvIG5vdGhpbmcgaWYgdGhlIGxhc3QgaW5zbgoJaW4gdGhlIGJsb2NrIGlzIG1vcmUgdGhhbiBqdXN0IGEgc2ltcGxlIGNvbmRpdGlvbmFsIGJyYW5jaC4KCShub2NlX3Byb2Nlc3NfaWZfYmxvY2spOiBTaW1pbGFybHkuCgpUdWUgTWF5IDMwIDIyOjI1OjU3IDIwMDAgIEFsZXhhbmRyZSBPbGl2YSAgPGFvbGl2YUBjeWdudXMuY29tPgoKCSogb3B0YWJzLmMgKHByZXBhcmVfZmxvYXRfbGliX2NtcCk6IFByb3RlY3QgKnB4IGFuZCAqcHkgZnJvbQoJcXVldWUuCgoyMDAwLTA1LTMwICBNaWNoYWVsIE1laXNzbmVyICA8bWVpc3NuZXJAcmVkaGF0LmNvbT4KCgkqIGR3YXJmMm91dC5jIChkd2FyZjJvdXRfZnJhbWVfZGVidWdfZXhwcik6IElnbm9yZSBISUdICglpbnN0cnVjdGlvbnMuICBUcmVhdCBMT19TVU0gb3BlcmF0aW9ucyBhcyBsb2FkaW5nIHRoZSBmdWxsIGludGVnZXIKCWNvbnN0YW50LgoKMjAwMC0wNS0zMCAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAY3lnbnVzLmNvbT4KCgkqIGNvbWJpbmUuYyAoZ2V0X3Bvc19mcm9tX21hc2spOiBUZXN0IGV4YWN0X2xvZzIgcmVzdWx0IGFzIHNpZ25lZC4KCjIwMDAtMDUtMzAgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgoJKiBiYi1yZW9yZGVyLmMgKGVtaXRfanVtcF90b19ibG9ja19hZnRlcik6IFByb3RlY3QgdXNlIG9mIEhBVkVfcmV0dXJuLgoKMjAwMC0wNS0zMCAgQnJ1Y2UgS29yYiAgPGJrb3JiQGdudS5vcmc+CgoJKiBmaXhpbmMvdGVzdHMvKjogIEFkZGVkIGV4cGVjdGVkIHJlc3VsdCBmaWxlcyBmb3IgZml4aW5jJ3MgbWFrZSBjaGVjawoJKiBmaXhpbmMvZml4Zml4ZXMoY2hhcl9tYWNyb18qX2ZpeCk6IFJlc3RvcmUgb3JpZ2luYWwgYWxnb3JpdGhtCgoyMDAwLTA1LTMwICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEBjeWdudXMuY29tPgoKCSogY29uZmlnL2FscGhhL2FscGhhLm1kICgqc2V0bmVfaW50ZXJuYWwpOiBVc2UgbWF0Y2hfb3BlcmF0b3IKCWluc3RlYWQgb2Ygd29ya2luZyBkb3duIGZyb20gaW5zbi4KCjIwMDAtMDUtMzAgIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIGludm9rZS50ZXhpICgtV3RyYWRpdGlvbmFsKTogVXBkYXRlIFdSVCBmdW5jdGlvbiBtYWNyb3MuCgpUdWUgTWF5IDMwIDA5OjU3OjMyIDIwMDAgIFBoaWxpcHBlIERlIE11eXRlciAgPHBoZG1AbWFjcWVsLmJlPgoKCSogZXhjZXB0LmMgKGZyZWVfZXhjZXB0aW9uX3RhYmxlKTogRG8gbm90IGZyZWUgTlVMTC4KCjIwMDAtMDUtMjkgIFphY2sgV2VpbmJlcmcgIDx6YWNrQHdvbGVyeS5jdW1iLm9yZz4KCgkqIGNwcGxpYi5jIChkb19pZik6IERvbid0IHNhdmUgYW5kIHJlc3RvcmUgb25seV9zZWVuX3doaXRlIGhlcmUuCgkqIGNwcGV4cC5jIChfY3BwX3BhcnNlX2V4cHIpOiBTYXZlIGFuZCByZXN0b3JlIG9ubHlfc2Vlbl93aGl0ZQoJYW5kIHNraXBwaW5nIGhlcmUuCgoyMDAwLTA1LTI5ICBSaWNoYXJkIEVhcm5zaGF3IChyZWFybnNoYUBhcm0uY29tKQoKCSogZmxvdy5jIChtYXJrX3VzZWRfcmVnKTogSWYgYSByZWdpc3RlciBpcyB1bmNvbmRpdGlvbmFsbHkgbGl2ZSwKCXJlbW92ZSBhbnkgY29uZGl0aW9uYWwgZGVhdGggaW5mb3JtYXRpb24uCgoyMDAwLTA1LTI5ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEBjeWdudXMuY29tPgoKCSogZmluYWwuYyAoY3VycmVudF9vdXRwdXRfaW5zbik6IE5ldy4KCShmaW5hbF9zY2FuX2luc24pOiBTZXQgaXQuCgkqIG91dHB1dC5oOiBEZWNsYXJlIGl0LgoKMjAwMC0wNS0yOSAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAY3lnbnVzLmNvbT4KCgkqIHN0b3ItbGF5b3V0LmMgKGZpbmFsaXplX3JlY29yZF9zaXplKTogRml4IHR5cG8uCgoJKiBqdW1wLmMgKHJlZGlyZWN0X2p1bXApOiBEb24ndCBlbWl0IE5PVEVfSU5TTl9GVU5DVElPTl9FTkQKCWlmIG5sYWJlbCBpcyBudWxsLgoKMjAwMC0wNS0yOSAgWmFjayBXZWluYmVyZyAgPHphY2tAd29sZXJ5LmN1bWIub3JnPgoKCSogY3BwbGliLmggKGNwcF9yZWFkZXIpOiBSZW1vdmUgaWZfc3RhY2suICBDaGFuZ2UKCXBvdGVudGlhbF9jb250cm9sX21hY3JvIHRvIGEgY3BwX2hhc2hub2RlICouICBBZGQgc2tpcHBpbmcgZmxhZy4KCSogY3BwaGFzaC5oIChzdHJ1Y3QgaWhhc2gpOiBDaGFuZ2UgY29udHJvbF9tYWNybyB0byBhCgljcHBfaGFzaG5vZGUgKiBhbmQgc2hvcnRlbiBuYW1lIHRvIGNtYWNyby4KCUFkZCBORVZFUl9SRUlOQ0xVREUgY29uc3RhbnQuCgoJKiBjcHBmaWxlcy5jIChyZWR1bmRhbnRfaW5jbHVkZV9wKTogRHJvcCBjcHBfcmVhZGVyIGFyZ3VtZW50LgoJRXhhbWluZSB0aGUgY21hY3JvIG5vZGUgZGlyZWN0bHksIG5vIG5lZWQgdG8gY2FsbCBjcHBfZGVmaW5lZC4KCShfY3BwX2V4ZWN1dGVfaW5jbHVkZSwgcmVhZF9pbmNsdWRlX2ZpbGUpOiBTZXQgY21hY3JvIHRvCglORVZFUl9SRUlOQ0xVREUsIG5vdCBVIiIuCgkqIGNwcGxleC5jIChjcHBfcHVzaF9idWZmZXIpOiBEb24ndCBzZXQgbmV3LT5pZl9zdGFjay4KCShjcHBfZ2V0X3Rva2VuKTogSWYgcGZpbGUtPnNraXBwaW5nIGlzIHRydWUsIGRpc2NhcmQgdGV4dCBhbmQKCWtlZXAgc2Nhbm5pbmcgdW50aWwgd2UgaGl0IGEgZGlyZWN0aXZlOyBkb24ndCBleHBhbmQgbWFjcm9zLgoKCSogY3BwbGliLmMgKHN0cnVjdCBpZl9zdGFjayk6IFJlbW92ZSBpZl9zdWNjZWVkZWQsIGFkZAoJd2FzX3NraXBwaW5nLiBDaGFuZ2UgY29udHJvbF9tYWNybyB0byBhIGNwcF9oYXNobm9kZSAqIGFuZAoJc2hvcnRlbiBuYW1lIHRvIGNtYWNyby4gIFJlbW92ZSB0eXBlZGVmIElGX1NUQUNLLgoJKHBhcnNlX2lmZGVmKSwgZGV0ZWN0X2lmX25vdF9kZWZpbmVkKTogUmV0dXJuIGEgY3BwX2hhc2hub2RlICouCgkoY29uZGl0aW9uYWxfc2tpcCwgc2tpcF9pZl9ncm91cCwKCWNvbnNpZGVyX2RpcmVjdGl2ZV93aGlsZV9za2lwcGluZyk6IERlbGV0ZS4KCShwdXNoX2NvbmRpdGlvbmFsKTogTmV3LgoJKF9jcHBfaGFuZGxlX2RpcmVjdGl2ZSk6IERvbid0IHByb2Nlc3MgZGlyZWN0aXZlcyBvdGhlciB0aGFuCgljb25kaXRpb25hbHMgaWYgd2UgYXJlIHNraXBwaW5nLgoKCShkb19pZmRlZiwgZG9faWZuZGVmLCBkb19pZiwgZG9fZWxzZSwgZG9fZWxpZiwgZG9fZW5kaWYpOgoJVXBkYXRlIHRvIG5ldyBzY2hlbWUuCgkodmFsaWRhdGVfZWxzZSk6IFNraXAgcmVzdCBvZiBsaW5lIGhlcmUsIHVuY29uZGl0aW9uYWxseS4KCShfY3BwX3Vud2luZF9pZl9zdGFjayk6IFRoZSBzdGFjayBpcyBwZXItYnVmZmVyLiAgRm9yY2UKCXBmaWxlLT5za2lwcGluZyBvZmYuCgoJKGFsbCk6IFJlbW92ZSBgc2NhcmUgcXVvdGVzJyBmcm9tIGVycm9yIG1lc3NhZ2VzLgoKMjAwMC0wNS0yOSAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAY3lnbnVzLmNvbT4KCgkqIGZ1bmN0aW9uLmMgKGVtaXRfcmV0dXJuX2ludG9fYmxvY2spOiBOZXcgbGluZV9ub3RlIGFyZzsgZW1pdCBpdC4KCSh0aHJlYWRfcHJvbG9ndWVfYW5kX2VwaWxvZ3VlX2luc25zKTogQXR0ZW1wdCB0byBsb2NhdGUgYSBsaW5lIG5vdGUKCWZvciB0aGUgY2xvc2UgYnJhY2UgdG8gYWNjb21wYW55IEhBVkVfcmV0dXJuLiAgTW92ZSBhbGwgbGluZSBub3RlcwoJZm9sbG93aW5nIHRoZSBlcGlsb2d1ZSB0byBiZWZvcmUgdGhlIE5PVEVfSU5TTl9FUElMT0dVRV9CRUcuCgoyMDAwLTA1LTI5ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEBjeWdudXMuY29tPgoKCSogbG9uZ2xvbmcuaCBbX19hbHBoYV0gKGNvdW50X2xlYWRpbmdfemVyb3MpOiBOZXcuCgkoY291bnRfdHJhaWxpbmdfemVyb3MpOiBOZXcuCgkoQ09VTlRfTEVBRElOR19aRVJPU18wKTogTmV3LgoKCSogY29uZmlnL2FscGhhL2FscGhhLmMgKGFscGhhX3plcm9fY29tcGFyaXNvbl9vcGVyYXRvcik6IE5ldy4KCShhbHBoYV9zcGxpdF9jb25kaXRpb25hbF9tb3ZlKTogTmV3LgoJKiBjb25maWcvYWxwaGEvYWxwaGEtcHJvdG9zLmg6IFByb3RvdHlwZSB0aGVtLgoJKiBjb25maWcvYWxwaGEvYWxwaGEuaCAoUFJFRElDQVRFX0NPREVTKTogVXBkYXRlLgoJKENQUF9DUFVfREVGQVVMVF9TUEVDKTogRml4IHR5cG8gZm9yIEVWNjcuCgkqIGNvbmZpZy9hbHBoYS9hbHBoYS5tZDogVXBkYXRlIGZmcyBjaXggY29tbWVudGFyeS4KCSgqemVfYW5kX25lKTogTmV3LgoJKCpuYWJzc2YyLCAqbmFic2RmMik6IE5ldy4KCSgqbW92W3Foc2RdaWNjX2ludGVybmFsKTogVXNlIGFkZF9vcGVyYW5kLgoJKGlmX3RoZW5fZWxzZSBjb25zdGFudCBzcGxpdHRlcnMpOiBOZXcuCgkoKmNtcF9zYWRkX2RpLCAqY21wX3NhZGRfc2ksICpjbXBfc2FkZF9zaWRpKTogTmV3LgoJKCpjbXBfc3N1Yl9kaSwgKmNtcF9zc3ViX3NpLCAqY21wX3NzdWJfc2lkaSk6IE5ldy4KCjIwMDAtMDUtMjkgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgoJKiBjb21iaW5lLmMgKGZvcmNlX3RvX21vZGUpIFtNSU5VU106IENvbnZlcnQgc3VidHJhY3Rpb24gZnJvbQoJYSBjb25zdGFudCB0byBORUcgb3IgTk9UIHdoZW4gY29uZGl0aW9ucyBhbGxvdy4KCgkqIGNvbWJpbmUuYyAoY29tYmluZV9zaW1wbGlmeV9ydHgpOiBEb24ndCBjcmVhdGUgYW4gaWZfdGhlbl9lbHNlCgl1bmxlc3MgYm90aCBhcmdzIGFyZSBnZW5lcmFsX29wZXJhbmQuICBEb24ndCBjYW5vbmljYWxpemUgcGx1cwoJdG8gaW9yIHVubGVzcyBpdCBoZWxwcy4KCgkqIHRvcGxldi5jIChyZXN0X29mX2NvbXBpbGF0aW9uKTogU2V0IG5vX25ld19wc2V1ZG9zIGFmdGVyIGZsb3cxOwoJaW5zdGVhZCB0cmFjayByZWdpc3Rlcl9saWZlX3VwX3RvX2RhdGUuICBUb2dnbGUgbm9fbmV3X3BzZXVkb3MKCWFyb3VuZCBpZl9jb252ZXJ0LgoKMjAwMC0wNS0yOCAgR2VvZmYgS2VhdGluZyAgPGdlb2Zma0BjeWdudXMuY29tPgoKCSogY29uZmlnL3JzNjAwMC9yczYwMDAuYyAob3V0cHV0X2NicmFuY2gpOiBFc2NhcGUgJyUnIGNoYXJhY3RlcnMKCXNvIG91dHB1dF9vcGVyYW5kIGRvZXNuJ3Qgc2VlIHRoZW0uCgpTdW4gTWF5IDI4IDE4OjM3OjA3IDIwMDAgIENsaW50b24gUG9wZXR6ICA8Y3BvcGV0ekBjeWdudXMuY29tPgoKCSogbGNtLmMgKG1ha2VfcHJlZHNfb3BhcXVlKTogRml4IGNvbW1lbnQuCgkob3B0aW1pemVfbW9kZV9zd2l0Y2hpbmcpOiBVc2UgTk9STUFMX01PREUgaW5zdGVhZCBvZgoJTU9ERV9VU0VTX0lOX0VYSVRfQkxPQ0suICBDaGFuZ2UgbGVmdG92ZXIgaW5zdGFuY2Ugb2YKCUZQX01PREVfTk9ORSB0byBub19tb2RlLiAgUmVuYW1lIE1PREVfQVRfRU5UUlkgdG8gTk9STUFMX01PREUuCglIYW5kbGUgaW5zZXJ0aW9ucyBiZWZvcmUgYW4gZXhpc3RpbmcgTk9URV9JTlNOX0JBU0lDX0JMT0NLLgoJKiB0bS50ZXhpIChPUFRJTUlaRV9NT0RFX1NXSVRDSElORyk6IFJlZmVyIHRvIE5PUk1BTF9NT0RFLgoJKE1PREVfVVNFU19JTl9FWElUX0JMT0NLKTogRGVsZXRlLgoJKE1PREVfQVRfRU5UUlkpIFJlbmFtZSB0byBOT1JNQUxfTU9ERS4KCSogc2guaCAoTU9ERV9VU0VTX0lOX0VYSVRfQkxPQ0spOiBEZWxldGUuCgkoTU9ERV9BVF9FTlRSWSk6IFJlbmFtZSB0byBOT1JNQUxfTU9ERS4KCShNT0RFX05FRURFRCk6IERvbid0IGxvb2sgZm9yIFVTRS4KCShFUElMT0dVRV9VU0VTKTogRGVmaW5lLgoKU3VuIE1heSAyOCAyMzoyNjo1OSAyMDAwICBQaGlsaXBwZSBEZSBNdXl0ZXIgPHBoZG1AbWFjcWVsLmJlPgoKCSogbWtsaWJnY2MuaW4gKGFsbCk6IFZhcmlhYmxlIGluaXRpYWxpemVkIHRvIGBsaWJnY2MnLgoKMjAwMC0wNS0yOCAgR2FicmllbCBEb3MgUmVpcyAgPGdkckBjb2Rlc291cmNlcnkuY29tPgoKCSogdG9wbGV2LmggKHNraXBfbGVhZGluZ19zdWJzdHJpbmcpOiBOZXcgbWFjcm8uCgkqIHRvcGxldi5jIChkZWNvZGVfZl9vcHRpb24pOiBVc2Ugc2tpcF9sZWFkaW5nX3N1YnN0cmluZyBpbnN0ZWFkCglvZiBzdHJuY21wLgoJKGRlY29kZV9XX29wdGlvbik6IExpa2V3aXNlLgoKMjAwMC0wNS0yOCAgTmljayBDbGlmdG9uICA8bmlja2NAY3lnbnVzLmNvbT4KCgkqIHRtLnRleGkgKENPTkRJVElPTkFMX1JFR0lTVEVSX1VTQUdFKTogRG9jdW1lbnQgdGhhdCBpdCBjYW4KCW1vZGlmeSByZWdfbmFtZXMuCgoyMDAwLTA1LTI4ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEBjeWdudXMuY29tPgoKCSogcmVnY2xhc3MuYyAocmVjb3JkX29wZXJhbmRfY29zdHMpOiBQcm90ZWN0IHJlZ19jaGFuZ2VzX3NpemUKCXdpdGggQ0xBU1NfQ0FOTk9UX0NIQU5HRV9TSVpFLgoKCSogbG9vcC5jIChpbnN0cnVtZW50X2xvb3BfYmN0KTogU2V0IEpVTVBfTEFCRUwgb24gdGhlIG5ldyBpbnNuLgoKMjAwMC0wNS0yOCAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAY3lnbnVzLmNvbT4KCgkqIGZ1bmN0aW9uLmMgKGRpZGRsZV9yZXR1cm5fdmFsdWUpOiBBIHBjYy1zdHlsZSBzdHJ1Y3QgcmV0dXJuCglyZXR1cm5zIGEgcG9pbnRlci4KCjIwMDAtMDUtMjcgIFphY2sgV2VpbmJlcmcgIDx6YWNrQHdvbGVyeS5jdW1iLm9yZz4KCgkqIGNwcGZpbGVzLmM6IFJlYWQgZmlsZXMgaW4sIHVzaW5nIG1tYXAgaWYgcG9zc2libGUsIHRoZW4KCXByZXNjYW4gdGhlbSBzZXBhcmF0ZWx5LgoJKHJlYWRfZmlsZSwgcmVhZF93aXRoX3JlYWQpOiBOZXcgZnVuY3Rpb25zLgoJKiBjcHBsZXguYzogRG9uJ3QgZGVmaW5lIFVDSEFSX01BWC4KCShfY3BwX3JlYWRfYW5kX3ByZXNjYW4pOiBSZW5hbWUgdG8gX2NwcF9wcmVzY2FuLiAgRG9uJ3QgcmVhZAoJdGhlIGZpbGUgaGVyZS4KCgkqIGNwcGluaXQuYyAoaGFuZGxlX29wdGlvbik6IEF1dG9tYXRpY2FsbHkgZGVmaW5lIF9fY3BsdXNwbHVzLAoJX19PQkpDX18sIF9fQVNFRU1CTEVSX18sIF9MQU5HVUFHRV9GT1JUUkFOIGhlcmUgd2hlbiB3ZSBzZWUKCXRoZSByZXNwZWN0aXZlIC1sYW5nIHN3aXRjaC4KCgkqIGNwcGhhc2guaCAoZW51bSBub2RlX3R5cGUsIHN0cnVjdCBoYXNobm9kZSwgX2NwcF9sb29rdXAKCXByb3RvdHlwZSk6IE1vdmUgdG8uLi4KCSogY3BwbGliLmg6IC4uLiBoZXJlLiAgUmVuYW1lIHN0cnVjdCBoYXNobm9kZSB0byBzdHJ1Y3QKCWNwcF9oYXNobm9kZSBhbmQgZ2l2ZSBpdCBhIHR5cGVkZWYuICBSZW5hbWUgX2NwcF9sb29rdXAgdG8KCWNwcF9sb29rdXAuICBBZGQgJ2ZlX3ZhbHVlJyBzbG90LCBhIHVuaW9uIHRyZWVfbm9kZSAqLgoKMjAwMC0wNS0yNyAgR2VvZmZyZXkgS2VhdGluZyAgPGdlb2Zma0BjeWdudXMuY29tPgoKCSogY29uZmlnL3JzNjAwMC9yczYwMDAubWQgKG1vdnNpKTogQ29uc3RpZnkgJ25hbWUnLgoKCSogcmVnY2xhc3MuYyBbQ0xBU1NfQ0FOTk9UX0NIQU5HRV9TSVpFXQoJKGNsYXNzX2Nhbl9jaGFuZ2Vfc2l6ZSk6IE5ldyB2YXJpYWJsZS4KCShyZWdfY2hhbmdlc19zaXplKTogTmV3IHZhcmlhYmxlLgoJKGluaXRfcmVnX3NldHNfMSk6IEluaXRpYWxpemUgY2xhc3NfY2FuX2NoYW5nZV9zaXplLgoJKHJlY29yZF9vcGVyYW5kX2Nvc3RzKTogUmVtb3ZlIHN1YnJlZ19jaGFuZ2VzX3NpemUuCglEb24ndCBwYXNzIGl0IGFyb3VuZC4gIEluc3RlYWQgdXBkYXRlIHJlZ19jaGFuZ2VzX3NpemUuCgkocmVnY2xhc3MpOiBJbml0aWFsaXplIGFuZCBmcmVlIHJlZ19jaGFuZ2VzX3NpemUuICBJZiBhIHJlZ2lzdGVyCgljaGFuZ2VzIHNpemUsIGRvbid0IHByZWZlcmVuY2UgaXQgdG8gYSBjbGFzcyB0aGF0IGNvbnRhaW5zCglyZWdpc3RlcnMgdGhhdCBjYW4ndCBjaGFuZ2Ugc2l6ZS4KCShyZWNvcmRfcmVnX2NsYXNzZXMpOiBEb24ndCBsb29rIGF0IHN1YnJlZ19jaGFuZ2VzX3NpemUuCgoyMDAwLTA1LTI3ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEBjeWdudXMuY29tPgoKCSogcHJpbnQtcnRsLmMgKHJlZ19uYW1lcyk6IFJlbW92ZSBjb25zdC4KCSogcmVnY2xhc3MuYyAocmVnX25hbWVzKTogTGlrZXdpc2UuCgkqIHJlZ3MuaCAocmVnX25hbWVzKTogTGlrZXdpc2UuCgkqIGhhcmQtcmVnLXNldC5oIChyZWdfbmFtZXMpOiBMaWtld2lzZS4KCjIwMDAtMDUtMjcgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgoJKiBjb25maWcvcnM2MDAwL3JzNjAwMC5tZCAodW50eXBlZF9jYWxsKTogVXNlIEdFTl9DQUxMLgoKMjAwMC0wNS0yNyAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAY3lnbnVzLmNvbT4KCgkqIGNvbmZpZy9hbHBoYS9hbHBoYS5jIChhbHBoYV9kb2VzX2Z1bmN0aW9uX25lZWRfZ3ApOiBUZXN0CglUQVJHRVRfUFJPRklMSU5HX05FRURTX0dQIGluIHRoZSBpZiwgaW5zdGVhZCBvZiB3aXRoIGFuIGlmZGVmLgoJKGFscGhhX2V4cGFuZF9wcm9sb2d1ZSk6IEVtaXQgcHJvbG9ndWVfbWNvdW50IGlmIG5lZWRlZC4KCSogY29uZmlnL2FscGhhL2FscGhhLmggKFRBUkdFVF9QUk9GSUxJTkdfTkVFRFNfR1ApOiBEZWZhdWx0IHRvIDAuCgkqIGNvbmZpZy9hbHBoYS9hbHBoYS5tZCAocHJvbG9ndWVfbWNvdW50KTogTmV3LgoJKiBjb25maWcvYWxwaGEvbGludXguaCAoRlVOQ1RJT05fUFJPRklMRVIpOiBSZW1vdmUuCgkoVEFSR0VUX1BST0ZJTElOR19ORUVEU19HUCk6IFVuZGVmIGJlZm9yZSByZWRlZmluaW5nLgoJKiBjb25maWcvYWxwaGEvbmV0YnNkLmg6IExpa2V3aXNlLgoKMjAwMC0wNS0yNyAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAY3lnbnVzLmNvbT4KCgkqIGNvbmZpZy9hbHBoYS9lbGYuaCAoU0VMRUNUX1NFQ1RJT04pOiBNaXJyb3IgS2VubmVyJ3MgTWF5IDE5CgljaGFuZ2UgdG8gY29uZmlnL2VsZm9zLmguCgoyMDAwLTA1LTI3ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEBjeWdudXMuY29tPgoKCSogTWFrZWZpbGUuaW4gKHJlc291cmNlLm8pOiBEZXBlbmQgb24gZXhjZXB0LmguCgkqIGV4Y2VwdC5oIChvdXRwdXRfZXhjZXB0aW9uX3RhYmxlX2RhdGEpOiBQcm90b3R5cGUuCgkqIGdlbmNvbmZpZy5jIChnZW5fcGVlcGhvbGUyKTogUHJvdG90eXBlLgoJKiBnZW5lbWl0LmMgKG1haW4pOiBJbmNsdWRlIGdnYy5oLgoJKiBnZW5vdXRwdXQuYzogUmV2ZXJ0IHBhcnRzIG9mIGxhc3QgY2hhbmdlOiBpbmNsdWRlIGVycm9ycy5oCgkobWFpbik6IFNldCBwcm9nbmFtZS4KCSogcmVjb2cuYzogSW5jbHVkZSBoYXJkLXJlZy1zZXQuaCBiZWZvcmUgcmVjb2cuaC4KCSogcmVzb3VyY2UuYzogSW5jbHVkZSBleGNlcHQuaC4KCgkqIGNvbmZpZy9hbHBoYS9hbHBoYS1wcm90b3MuaCAoYWxwaGFfYXJnX2luZm9fcmVnX3ZhbCk6IFByb3RlY3QKCXdpdGggUlRYX0NPREUuCgkoYWxwaGFfd3JpdGVfbGlua2FnZSk6IFByb3RlY3Qgd2l0aCBCVUZTSVouCgkoYWxwaGFfbmVlZF9saW5rYWdlKTogVXBkYXRlIHByb3RvdHlwZS4KCSogY29uZmlnL2FscGhhL2FscGhhLmMgKGZ1bmN0aW9uX2FyZyk6IE1vdmUgVk1TIGNvZGUgaGVyZS4KCShhbHBoYV9saW5rc19iYXNlKTogUmVtb3ZlLgoJKGFscGhhX2xpbmtzKTogTmV3LgoJKG1hcmtfYWxwaGFfbGlua3Nfbm9kZSwgbWFya19hbHBoYV9saW5rcyk6IE5ldy4KCShhbHBoYV93cml0ZV9vbmVfbGlua2FnZSk6IE5ldy4KCShhbHBoYV9uZWVkX2xpbmthZ2UpOiBVc2UgYSBzcGxheSB0cmVlLiAgQnVpbGQgdGhlIGxpbmthZ2Ugc3ltYm9sLgoJKGFscGhhX3dyaXRlX2xpbmthZ2UpOiBVc2Ugc3BsYXlfdHJlZV9mb3JlYWNoLgoJKiBjb25maWcvYWxwaGEvYWxwaGEubWQgKGNhbGxfdm1zKTogVXNlIGFscGhhX25lZWRfbGlua2FnZQoJdG8gZ2V0IHRoZSBsaW5rYWdlIHN5bWJvbC4KCShjYWxsX3ZhbHVlX3Ztcyk6IExpa2V3aXNlLgoJKiBjb25maWcvYWxwaGEvZWxmLmggKG91dHB1dF9maWxlX2RpcmVjdGl2ZSk6IFJlbW92ZSBkZWNsLgoJKGN0b3JzX3NlY3Rpb24sIGR0b3JzX3NlY3Rpb24pOiBQcm90b3R5cGUuCgkoc2Jzc19zZWN0aW9uLCBzZGF0YV9zZWN0aW9uKTogUHJvdG90eXBlLgoJKiBjb25maWcvYWxwaGEvdm1zLmggKEZVTkNUSU9OX0FSRyk6IFJlbW92ZS4KCShyZWFkb25seV9zZWN0aW9uLCBsaW5rX3NlY3Rpb24sIGxpdGVyYWxzX3NlY3Rpb24pOiBQcm90b3R5cGUuCgkoY3RvcnNfc2VjdGlvbiwgZHRvcnNfc2VjdGlvbik6IFByb3RvdHlwZS4KCSh2bXNfdmFsaWRfZGVjbF9hdHRyaWJ1dGVfcCk6IFJlbW92ZSBkZWNsLgoJKGFscGhhX2FyZ190eXBlLCBhbHBoYV9hcmdfaW5mb19yZWdfdmFsKTogTGlrZXdpc2UuCgoyMDAwLTA1LTI3ICBHZW9mZiBLZWF0aW5nICA8Z2VvZmZrQGN5Z251cy5jb20+CgoJKiByZWxvYWQuYyAoZ2V0X3NlY29uZGFyeV9tZW0pOiBEb24ndCB3aWRlbiBmbG9hdGluZy1wb2ludCBtb2Rlcy4KCgkqIGNvbWJpbmUuYyAoc3Vic3QpOiBIb25vciBDTEFTU19DQU5OT1RfQ0hBTkdFX1NJWkUgd2hlbgoJc3Vic3RpdHV0aW5nIHRoZSBSRUcgaW4gYSAoc3VicmVnOlggKHJlZzpZIC4uLikpLgoKMjAwMC0wNS0yOCAgTmVpbCBCb290aCAgPE5laWxCQGVhcnRobGluZy5uZXQ+CgoJKiBjcHBsZXguYyAoX2NwcF9sZXhfbGluZSk6IE1lcmdlIHZlcnRpY2FsIHNwYWNlLiAgRmxhZwoJZmlyc3QgdG9rZW4gb2YgYSBsaW5lIEJPTC4gIFVwZGF0ZSBFT0YgY29kZSBmb3IgdGhpcy4KCVJlbW92ZSBpbGxlZ2FsIGRpcmVjdGl2ZSBjaGVjayAtIGl0IGFwcGVhcnMgaW4gdGhlIChub3QKCXlldCBjb21taXR0ZWQpIGNhbGxlci4KCSogY3BwbGliLmggKEJPTCk6IE5ldyBmbGFnLgoKMjAwMC0wNS0yOCAgTmVpbCBCb290aCAgPE5laWxCQGVhcnRobGluZy5uZXQ+CgoJKiBjcHBsZXguYyAoX2NwcF9pbml0X3Rva2xpc3QpOiBObyBjb21tZW50IHNwYWNlIHRvIGluaXRpYWxpemUuCgkoX2NwcF9mcmVlX3Rva2xpc3QpOiBObyBjb21tZW50IHNwYWNlIHRvIGZyZWUuCgkoZXhwYW5kX2NvbW1lbnRfc3BhY2UpOiBSZW1vdmUuCgkoc2F2ZV9jb21tZW50X3NwYWNlKTogUGxhY2UgdGhlIGNvbW1lbnQgaW4gdGhlIGN1cnJlbnQgdG9rZW4gYW5kCglub3QgaW4gYSBzZXBhcmF0ZSBjb21tZW50IHNwYWNlLgoJKF9jcHBfbGV4X2xpbmUpOiBTYXZlIGNvbW1lbnRzIGR1cmluZyBwbGFpbiBjb2RlIGFuZCAjZGVmaW5lCglkaXJlY3RpdmVzIG9ubHkuCgkqIGNwcGxpYi5oIChzdHJ1Y3QgX2NwcF90b2tsaXN0KTogUmVtb3ZlIGNvbW1lbnQgc3BhY2UuCgoyMDAwLTA1LTI4ICBOZWlsIEJvb3RoICA8TmVpbEJAZWFydGhsaW5nLm5ldD4KCgkqIGNwcGV4cC5jIChwYXJzZV9hc3NlcnRpb24pOiBTdXBwbHkgZXh0cmEgYXJndW1lbnQgdG8KCV9jcHBfaW5pdF90b2tsaXN0LgoJKiBjcHBsaWIuYyAoZG9fYXNzZXJ0LCBkb191bmFzc2VydCk6IFNpbWlsYXJseS4KCSogY3BwaGFzaC5oIChfY3BwX2luaXRfdG9rbGlzdCkgVXBkYXRlLgoJKF9jcHBfZXhwYW5kX3Rva2VuX3NwYWNlKTogTmV3LgoJKERVTU1ZX1RPS0VOLCBOT19EVU1NWV9UT0tFTik6IE5ldy4KCSogY3BwbGV4LmMgKF9jcHBfaW5pdF90b2tsaXN0KTogTmV3IGFyZ3VtZW50LgoJKHBhcnNlX3N0cmluZzIpOiBOZXcgYXJndW1lbnQgbXVsdGlsaW5lX29rLgoJKHNwZWxsX3Rva2VuKTogVGFrZSBhIGNvbnN0IGNwcF90b2tlbiAqLgoJKElOSVRfTkFNRSk6IFJlcGxhY2Ugd2l0aCBJTklUX1RPS0VOX05BTUUuICBVcGRhdGUgdG9rZW5zX3VzZWQuCgkoU1BFTExfIG1hY3Jvcyk6IFJlcGxhY2Ugd2l0aCBlbnVtLgoJKGV4cGFuZF90b2tlbl9zcGFjZSk6IFJlcGxhY2Ugd2l0aCBfY3BwX2V4cGFuZF90b2tlbl9zcGFjZS4KCVRha2UgQ09VTlQgYXJndW1lbnQuCgkoSVNfRElSRUNUSVZFKTogVXBkYXRlLgoJKF9jcHBfbGV4X2xpbmUpOiBVcGRhdGUgdG9rZW4gc3RydWN0dXJlIGJlZm9yZSBwYXJzaW5nIG51bWJlci4KCURvbid0IGFzc3VtZSBzdGFydCBhdCBiZWdpbm5pbmcgb2YgdG9rZW4gbGlzdC4KCShzYXZlX2NvbW1lbnQpOiBVc2UgSU5JVF9UT0tFTl9OQU1FLgoKMjAwMC0wNS0yNyAgWmFjayBXZWluYmVyZyAgPHphY2tAd29sZXJ5LmN1bWIub3JnPgoKCSogY29uZmlndXJlLmluIChzdGFnZTFfd2Fybl9jZmxhZ3MpOiBBZGQgLVdzdHJpY3QtcHJvdG90eXBlcwoJLVdtaXNzaW5nLXByb3RvdHlwZXMuCgkqIGNvbmZpZ3VyZTogUmVnZW5lcmF0ZS4KCSogZ2NjLnRleGk6IFJlbW92ZSBleHBsYW5hdGlvbiBvZiBNRF9DQUxMX1BST1RPVFlQRVMuCgoJKiBidWlsdGlucy5jLCBjYWxscy5jOiBDaGFuZ2UgYWxsIGluc3RhbmNlcyBvZiBnZW5fY2FsbF8qIG9yCglnZW5fc2liY2FsbF8qIHRvIEdFTl9DQUxMXyogYW5kIEdFTl9TSUJDQUxMXyouCgkqIGNhbGxzLmMgKHN0cnVjdF92YWx1ZV9zaXplX3J0eCk6IFNlcGFyYXRlIGRlZmluaXRpb24gZnJvbQoJaW5pdGlhbGl6YXRpb24gdG8gYXZvaWQgdW51c2VkIHZhcmlhYmxlIHdhcm5pbmcuCgoJKiBnZW5mbGFncy5jIChnZW5fbWFjcm8pOiBOZXcgZnVuY3Rpb24uCgkoZ2VuX3Byb3RvKTogQ2FsbCBpdCBmb3IgZ2VuX2NhbGxfKiBhbmQgZ2VuX3NpYmNhbGxfKi4KCShnZW5fbm9ucHJvdG8pOiBEZWxldGUuCgkoZ2VuX2luc24pOiBQdXQgYWxsIGluc25zIG9uIHRoZSBzYW1lIG9ic3RhY2suCgkobWFpbik6IEdlbmVyYXRlIHByb3RvdHlwZXMgZm9yIGV2ZXJ5dGhpbmcgdW5jb25kaXRpb25hbGx5LgoKCSogY29uZmlndXJlLmluOiBBZGQgQUNfQ0hFQ0tfVFlQRShzc2l6ZV90KS4gIFJlbW92ZSBjb21tZW50ZWQKCW91dCBjaGVjayBmb3Igd2NoYXJfdC4KCSogYWNjb25maWcuaDogQWRkIHRlbXBsYXRlIGZvciBzc2l6ZV90LiAgUmVtb3ZlIEBUT1BALgoJKiBzeXN0ZW0uaDogQWRkIGluZnJhc3RydWN0dXJlIGZvciBkZWZpbmluZyBtaXNzaW5nCglUWVBFX01BWC9UWVBFX01JTiBtYWNyb3MuICBVc2UgaXQgdG8gcHJvdmlkZSBmYWxsYmFjawoJZGVmaW5pdGlvbnMgb2YgVUNIQVJfTUFYIGFuZCBTU0laRV9NQVguCgkqIGNvbmZpZ3VyZTogUmVnZW5lcmF0ZS4KCSogY29uZmlnLmluOiBSZWdlbmVyYXRlLgoKCSogTWFrZWZpbGUuaW4gKGxpYmdjYzIucmVhZHkpOiBSZW5hbWUgdG8gbGliZ2NjLnJlYWR5LgoJRGVwZW5kIG9uICQoTEFOR1VBR0VTKSBhcyB3ZWxsIGFzICQoR0NDX1BBVENIRVMpIGFuZCBmaXhlZAoJaGVhZGVycy4KCShjbGVhbik6IE5vIG5lZWQgdG8gZGVsZXRlIGxpYmdjYzEuYSwgbGliZ2NjMS1hc20uYSwKCWxpYmdjYzIuYSwgb3IgbGliZ2NjMS5udWxsLgoKMjAwMC0wNS0yNyAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAY3lnbnVzLmNvbT4KCgkqIE1ha2VmaWxlLmluIChyZWNvZy5vKTogRG9uJ3QgZGVwZW5kIG9uIHJlc291cmNlLmguCgkqIHJlY29nLmM6IERvbid0IGluY2x1ZGUgcmVzb3VyY2UuaC4KCShyZWNvZ19sYXN0X2FsbG93ZWRfaW5zbik6IFJlbW92ZS4KCShyZWNvZ19uZXh0X2luc24pOiBSZW1vdmUuCgkoc3RydWN0IHBlZXAyX2luc25fZGF0YSk6IE5ldy4KCShwZWVwMl9pbnNuX2RhdGEsIHBlZXAyX2N1cnJlbnQpOiBOZXcuCgkocGVlcDJfbmV4dF9pbnNuKTogTmV3LgoJKHBlZXAyX3JlZ25vX2RlYWRfcCwgcGVlcDJfcmVnX2RlYWRfcCk6IE5ldy4KCShwZWVwMl9maW5kX2ZyZWVfcmVnaXN0ZXIpOiBOZXcuCgkocGVlcGhvbGUyX29wdGltaXplKTogVHJhY2sgbGlmZSBpbmZvcm1hdGlvbiBieSBpbnNuIGFzIHdlIGdvLgoJKiByZWNvZy5oOiBVcGRhdGUgZGVjbGFyYXRpb25zLgoJKiByZXNvdXJjZS5jIChmaW5kX2ZyZWVfcmVnaXN0ZXIsIHJlZ19kZWFkX3ApOiBSZW1vdmUuCgkqIHJlc291cmNlLmg6IFJlbW92ZSB0aGVpciBkZWNsYXJhdGlvbnMuCgkqIHRvcGxldi5jOiBJbmNsdWRlIGhhcmQtcmVnLXNldC5oIGJlZm9yZSByZWNvZy5oLgoKCSogZ2VuY29uZmlnLmMgKG1heF9pbnNuc19wZXJfcGVlcDIpOiBOZXcuCgkoZ2VuX3BlZXBob2xlMik6IE5ldy4KCShtYWluKTogQ2FsbCBpdC4KCSogZ2VuZW1pdC5jIChvdXRwdXRfcGVlcGhvbGUyX3NjcmF0Y2hlcyk6IEdlbmVyYXRlIGNhbGxzIHRvCglwZWVwMl9maW5kX2ZyZWVfcmVnaXN0ZXI7IGFkanVzdCBzdXJyb3VuZGluZyBjb2RlLgoJKG1haW4pOiBIYXZlIGluc24tZW1pdC5jIGluY2x1ZGUgaGFyZC1yZWctc2V0LmggYmVmb3JlIHJlY29nLmguCgkqIGdlbnJlY29nLmMgKGNoYW5nZV9zdGF0ZSk6IERvbid0IHRyYWNrIGxhc3RfaW5zbi4KCSh3cml0ZV9hY3Rpb24pOiBXcml0ZSBpbnRvICpfcG1hdGNoX2xlbiBiZWZvcmUgYWNjZXB0aW5nLgoJKHdyaXRlX3RyZWUpOiBBZGp1c3QgcGVlcGhvbGUyX2luc25zIGFuZCBzdWJyb3V0aW5lcyB0byBtYXRjaC4KCgkqIGNvbmZpZy9pMzg2L2kzODYubWQgKGFsbCBwZWVwaG9sZXMpOiBVc2UgcGVlcDJfcmVnbm9fZGVhZF9wLgoKCSogY29uZmlnL2FscGhhL2FscGhhLmMgKGhhcmRfZnBfcmVnaXN0ZXJfb3BlcmFuZCk6IE1pbmQgdGhlIG1vZGUuCgkoaGFyZF9pbnRfcmVnaXN0ZXJfb3BlcmFuZCk6IE5ldy4KCSogY29uZmlnL2FscGhhL2FscGhhLXByb3Rvcy5oOiBEZWNsYXJlIGl0LgoJKiBjb25maWcvYWxwaGEvYWxwaGEuaCAoUFJFRElDQVRFX0NPREVTKTogVXBkYXRlLgoJKiBjb25maWcvYWxwaGEvYWxwaGEubWQgKHBlZXAyIHBhdHRlcm5zKTogVXNlIGhhcmRfaW50X3JlZ2lzdGVyX29wZXJhbmQKCWFzIG5lZWRlZDsgdXNlIHBlZXAyX3JlZ19kZWFkX3AgaW5zdGVhZCBvZiBkZWFkX29yX3NldF9wLgoKMjAwMC0wNS0yNyAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAY3lnbnVzLmNvbT4KCgkqIGZ1bmN0aW9uLmMgKHRocmVhZF9wcm9sb2d1ZV9lcGlsb2d1ZV9pbnNucyk6IERvbid0IG1vdmUgdGhlCglsaW5lIG5vdGUgYXQgdGhlIGhlYWQgb2YgdGhlIGNoYWluLiAgT25seSBmb3JjZSBhIGxpbmVubyBub3RlCgliZWZvcmUgdGhlIGVuZCBvZiBibG9jayAwLgoKMjAwMC0wNS0yNyAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAY3lnbnVzLmNvbT4KCgkqIGdlbnN1cHBvcnQuYyAoY29sbGVjdF9pbnNuX2RhdGEpOiBSZWNvcmQgdGhlIG1heGltdW0gbnVtYmVyCglvZiBhbHRlcm5hdGl2ZXMsIG5vdCB0aGUgbGFzdCBzZWVuLgoKCSogZ2Vub3V0cHV0LmM6IERvbid0IGluY2x1ZGUgZXJyb3JzLmguCgkoc3RydWN0IGRhdGEpOiBBZGQgbGluZW5vIG1lbWJlci4KCShoYXZlX2Vycm9yKTogTmV3LgoJKHNjYW5fb3BlcmFuZHMpOiBVc2UgbWVzc2FnZV93aXRoX2xpbmUgaW5zdGVhZCBvZiBlcnJvci4KCSh2YWxpZGF0ZV9pbnNuX2FsdGVybmF0aXZlcyk6IExpa2V3aXNlLgoJKGdlbl9pbnNuKTogQWNjZXB0IGFuZCBzdG9yZSB0aGUgcGF0dGVybidzIGxpbmUgbnVtYmVyLgoJKGdlbl9wZWVwaG9sZSwgZ2VuX2V4cGFuZCwgZ2VuX3NwbGl0KTogTGlrZXdpc2UuCgkobWFpbik6IERvbid0IHNldCBwcm9nbmFtZS4gIFBhc3MgbGluZV9ubyB0byBnZW5fZm9vLgoKMjAwMC0wNS0yNyAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAY3lnbnVzLmNvbT4KCgkqIGNvbmZpZy9kMzB2L2QzMHYuYyAoZDMwdl9wcmludF9vcGVyYW5kKTogSGFuZGxlICc6Jy4KCSogY29uZmlnL2QzMHYvZDMwdi5oIChQUklOVF9PUEVSQU5EX1BVTkNUX1ZBTElEX1ApOiBBY2NlcHQgJzonLgoJKiBjb25maWcvZDMwdi9kMzB2Lm1kIChhdHRyIHByZWRpY2FibGUpOiBOZXcuCgkoYWxsIGluc24gcGF0dGVybnMpOiBNYXJrIG5vbi1wcmVkaWNhYmxlIHBhdHRlcm5zOyB1c2UgJTogb24gdGhlIHJlc3QuCgkoYW5kc2kzKik6IFVuaWZ5IGludG8gb25lIHBhdHRlcm4uCgkoaW9yc2kzKiwgeG9yc2kzKik6IExpa2V3aXNlLgoJKHBlZXBob2xlMiBwYXR0ZXJucyk6IFVzZSBwZWVwMl9yZWdfZGVhZF9wOyB2ZXJpZnkgbm90IGEKCWNvbmRpdGlvbmFsIHJldHVybi4KCShvbGQgY29uZF9leGVjIHBhdHRlcm5zKTogUmVtb3ZlLgoJKGRlZmluZV9jb25kX2V4ZWMpOiBOZXcuCgpTYXQgTWF5IDI3IDExOjAxOjI3IDIwMDAgIFJpY2hhcmQgS2VubmVyICA8a2VubmVyQHZsc2kxLnVsdHJhLm55dS5lZHU+CgoJKiB0cmVlLmggKFRSRUVfQ09ERV9MRU5HVEgpOiBOZXcgbWFjcm8uCgkqIGMtY29tbW9uLmMgKGNfZmluZF9iYXNlX2RlY2wpOiBVc2UgaXQuCgkqIGV4cHIuYyAoc2FmZV9mcm9tX3ApOiBMaWtld2lzZS4KCSogcHJpbnQtdHJlZS5jIChwcmludF9ub2RlKTogTGlrZXdpc2UuCgkqIHRyZWUuYyAobWFrZV9ub2RlLCBjb3B5X25vZGUsIGdldF9pZGVudGlmaWVyKTogTGlrZXdpZS4KCShmaXJzdF9ydGxfb3AsIGNvbnRhaW5zX3BsYWNlaG9sZGVyX3AsIHN1YnN0aXR1dGVfaW5fZXhwcik6IExpa2V3aXNlLgoJKGJ1aWxkLCBidWlsZF9udCwgYnVpbGRfcGFyc2Vfbm9kZSwgc2ltcGxlX2NzdF9lcXVhbCk6IExpa2V3aXNlLgoJKiBmb2xkLWNvbnN0LmMgKG1ha2VfcmFuZ2UpOiBMaWtld2lzZS4KCShmb2xkKTogTGlrZXdpc2U7IGFsc28gdXNlIGZpcnN0X3J0bF9vcC4KCSogYy1pdGVyYXRlLmMgKGNvbGxlY3RfaXRlcmF0b3JzKTogVXNlIGZpcnN0X3J0bF9vcC4KCSogY2FsbHMuYyAoY2FsbHNfZnVuY3Rpb25fMSk6IExpa2V3aXNlOyBhbHNvIHJlbmFtZSBUWVBFIHRvIENMQVNTLgoJVXNlIElTX0VYUFJfQ09ERV9DTEFTUy4KCShwcmVleHBhbmRfY2FsbHMpOiBMaWtld2lzZS4KCSogZ2djLWNvbW1vbi5jIChnZ2NfbWFya190cmVlcyk6IFJld29yayB0byB1c2UgZmlyc3RfcnRsX29wCglhbmQgVFJFRV9DT0RFX0xFTkdUSC4KCSogc3RtdC5jICh3YXJuX2lmX3VudXNlZF92YWx1ZSk6IElmIG5vIG9wZXJhbmRzLCBubyB1bnVzZWQgdmFsdWUuCgoyMDAwLTA1LTI2ICBHZW9mZnJleSBLZWF0aW5nICA8Z2VvZmZrQGN5Z251cy5jb20+CgoJKiBjb25maWcvcnM2MDAwL3JzNjAwMC5tZCAobW92c2lfaW50ZXJuYWwxKTogVXNlICclYTEnIHJhdGhlcgoJdGhhbiAnJTEoJSopJy4KCShtb3ZkaV9pbnRlcm5hbDY0KTogTGlrZXdpc2UuCgoJKiBjb25maWcvcnM2MDAwL3JzNjAwMC5tZDogQ29ycmVjdCBvcmRlciBvZiBvcGVyYW5kcyBmb3IgREltb2RlCglib29sZWFuIHBhdHRlcm5zLgoKCSogY29uZmlnL3JzNjAwMC9yczYwMDAuYyAoYm9vbGVhbl9vcl9vcGVyYXRvcik6IE5ldyBmdW5jdGlvbi4KCSogY29uZmlnL3JzNjAwMC9yczYwMDAtcHJvdG9zLmggKGJvb2xlYW5fb3Jfb3BlcmF0b3IpOiBQcm90b3R5cGUgaXQuCgkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLmggKFBSRURJQ0FURV9DT0RFUyk6IEFkZCBib29sZWFuX29yX29wZXJhdG9yLgoJKiBjb25maWcvcnM2MDAwL3JzNjAwMC5tZDogVXNlIGJvb2xlYW5fb3Jfb3BlcmF0b3IgaW5zdGVhZCBvZgoJYm9vbGVhbl9vcGVyYXRvciBmb3IgdGhlIGJvb2xlYW4gcGF0dGVybnMgd2l0aG91dCBOT1RzLgoKCSogY29uZmlnL3JzNjAwMC9yczYwMDAuYyAocmVnX29yX2xvZ2ljYWxfY2ludF9vcGVyYW5kKTogUmVuYW1lCglmcm9tIHJlZ19vcl91X2NpbnRfb3BlcmFuZC4gIENoYW5nZSBjb21tZW50IGFuZCBiZWhhdmlvci4KCShsb2dpY2FsX29wZXJhbmQpOiBDbGVhbiB1cCwgYWRkIGFzc2VydGlvbi4KCShub25fbG9naWNhbF9jaW50X29wZXJhbmQpOiBBbHNvIGNoZWNrIGZvcgoJcmVnX29yX2xvZ2ljYWxfY2ludF9vcGVyYW5kLgoJKiBjb25maWcvcnM2MDAwL3JzNjAwMC5oIChQUkVESUNBVEVfQ09ERVMpOiBVcGRhdGUuCgkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLm1kIChpb3JzaTMpOiBVc2UgcmVnX29yX2xvZ2ljYWxfY2ludF9vcGVyYW5kCglpbiB0aGUgZXhwYW5kZXIuCgkoeG9yc2kzKTogTGlrZXdpc2UuCgkoaW9yZGkzKTogTGlrZXdpc2UuCgkoeG9yZGkzKTogTGlrZXdpc2UuCgoyMDAwLTA1LTI2ICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogdHJlZS5oIChzdHJ1Y3QgcmVjb3JkX2xheW91dF9pbmZvKTogUmVuYW1lIHRvIChzdHJ1Y3QKCXJlY29yZF9sYXlvdXRfaW5mb19zKS4KCSogc3Rvci1sYXlvdXQuYyAoc3RhcnRfcmVjb3JkX2xheW91dCk6IFJlcGxhY2UKCWByZWNvcmRfbGF5b3V0X2luZm8nIHdpdGggYHJlY29yZF9sYXlvdXRfaW5mb19zJy4KCjIwMDAtMDUtMjYgIFJpY2hhcmQgRWFybnNoYXcgIDxyZWFybnNoYUBhcm0uY29tPgoKCSogZmxvdy5jIChmaW5kX2xhYmVsX3JlZnMpOiBOZXcgZnVuY3Rpb24uCgkoZmluZF9iYXNpY19ibG9ja3NfMSk6IENhbGwgaXQgZm9yIGVhY2ggYWx0ZXJuYXRpdmUgb2YgYSBjYWxsCglwbGFjZWhvbGRlci4KCjIwMDAtMDUtMjYgIFJpY2hhcmQgRWFybnNoYXcgIDxyZWFybnNoYUBhcm0uY29tPgoKCSogaWZjdnQuYyAoY29uZF9leGVjX2dldF9jb25kaXRpb24pOiBTZXQgdGVzdF9pZiB0byB0aGUgU0VUX1NSQwoJb2YgZ2V0X3BjLgoKMjAwMC0wNS0yNSAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAY3lnbnVzLmNvbT4KCgkqIGNvbmZpZy9hbHBoYS9hbHBoYS5jIChhbHBoYV9jb21wYXJpc29uX29wZXJhdG9yKTogRG9uJ3QgYmUKCXNvIHN0cmljdCBhYm91dCBESW1vZGUuCgkoYWxwaGFfc3dhcHBlZF9jb21wYXJpc29uX29wZXJhdG9yKTogTGlrZXdpc2UuCgkqIGNvbmZpZy9hbHBoYS9hbHBoYS5tZCAoKnNldG5lX2ludGVybmFsKTogTmFtZSBpdC4gIEFsbG93CglhbnkgaW50ZWdlciBvdXRwdXQgbW9kZS4KCSgqc2V0Y2NfaW50ZXJuYWwpOiBMaWtld2lzZS4KCSgqc2V0Y2Nfc3dhcHBlZF9pbnRlcm5hbCk6IExpa2V3aXNlLgoJKCptb3ZkaWNjX2ludGVybmFsLCAqbW92ZGljY19sYmMsICptb3ZkaWNjX2xicyk6IE5hbWUgdGhlbS4KCSgqbW92W3Foc11pY2NfaW50ZXJuYWwpOiBOZXcuCgkoKm1vdltxaHNdaWNjX2xiYywgKm1vdltxaHNdaWNjX2xicyk6IE5ldy4KCjIwMDAtMDUtMjUgIEouIERhdmlkIEFuZ2xpbiAgPGRhdmVAaGlhdWx5MS5oaWEubnJjLmNhPgoKCSogdmF4LmggKENQUF9TUEVDKTogRGVmaW5lIF9fR0ZMT0FUIGFuZCBHRkxPQVQgd2hlbiAtbWcgaXMgc3BlY2lmaWVkLgoKMjAwMC0wNS0yNSAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAY3lnbnVzLmNvbT4KCgkqIGJiLXJlb3JkZXIuYyAocmVvcmRlcl9ibG9ja19kZWYpOiBSZW9yZGVyIGVsZW1lbnRzIGZvciBzaXplLgoJUmVtb3ZlIGFkZF9qdW1wOyBhZGQgbmV4dDsgcmVwbGFjZSBmbGFncyB3aXRoIHZpc2l0ZWQuCgkocmJkX2luaXQpOiBSZW1vdmUuCgkoUkVPUkRFUl9CTE9DS19IRUFELCBSRU9SREVSX0JMT0NLX1ZJU0lURUQpOiBSZW1vdmUuCgkoUkVPUkRFUl9CTE9DS19GTEFHUywgUkVPUkRFUl9CTE9DS19JTkRFWCk6IFJlbW92ZS4KCShSRU9SREVSX0JMT0NLX0FERF9KVU1QLCBSRU9SREVSX0JMT0NLX0VGRl9IRUFEKTogUmVtb3ZlLgoJKFJFT1JERVJfQkxPQ0tfRUZGX0VORCwgUkVPUkRFUl9CTE9DS19TQ09QRSk6IFJlbW92ZS4KCShSQkkpOiBOZXcuCgkocmVvcmRlcl9pbmRleCwgcmVvcmRlcl9sYXN0X3Zpc2l0ZWQpOiBSZW1vdmUuCgkoc2tpcF9pbnNuc19hZnRlcl9ibG9jayk6IFJld3JpdGUgdG8gdXNlIGEgc3dpdGNoLgoJKGdldF9jb21tb25fZGVzdCk6IFJlbW92ZS4KCShjaGFpbl9yZW9yZGVyX2Jsb2Nrcyk6IFJlbW92ZS4KCShyZWNvcmRfZWZmZWN0aXZlX2VuZHBvaW50cyk6IFNwbGl0IG91dCBmcm9tIHJlb3JkZXJfYmFzaWNfYmxvY2tzLgoJKG1ha2VfcmVvcmRlcl9jaGFpbik6IExpa2V3aXNlLiAgTG9vcCB1bnRpbCBhbGwgYmxvY2tzIGFyZSBwbGFjZWQuCgkobWFrZV9yZW9yZGVyX2NoYWluXzEpOiBSZW5hbWVkIGZyb20gb2xkIG1ha2VfcmVvcmRlcl9jaGFpbi4KCU9ubHkgY29uc3RydWN0IHRoZSByZW9yZGVyIGNoYWluLCBkbyBub3QgbW92ZSBpbnNucy4gIFRyeSBoYXJkZXIKCXRvIHRhaWwgcmVjdXJzZS4KCShsYWJlbF9mb3JfYmIsIGVtaXRfanVtcF90b19ibG9ja19hZnRlcik6IE5ldy4KCShmaXh1cF9yZW9yZGVyX2NoYWluKTogVXNlIHRoZW0uICBEbyBidWxrIGJsb2NrIG1vdmVtZW50LiAgRXhhbWluZQoJYW5kIGFkanVzdCB0aGUganVtcCBpbnNucyBhcHByb3ByaWF0ZWx5LiAgRml4dXAgYmFzaWNfYmxvY2tfaW5mby4KCSh2ZXJpZnlfaW5zbl9jaGFpbik6IEFsd2F5cyBkZWZpbmUuCgkocmVsYXRlX2Jic193aXRoX3Njb3Blcyk6IENhbGwgeG1hbGxvYywgbm90IHhjYWxsb2MuICBGaXggdGhpbmtvCglpbiBhbGxvY2F0aW9uIHNpemUuCgkobWFrZV9uZXdfc2NvcGUpOiBEb24ndCB3cml0ZSB6ZXJvcyB0byBjYWxsb2MnZCBzcGFjZS4KCShidWlsZF9zY29wZV9mb3Jlc3QpOiBSZWx5IG9uIHhyZWFsbG9jIHRvIERUUlQuCgkocmVvcmRlcl9iYXNpY19ibG9ja3MpOiBEb24ndCBidWlsZCBsb29wIG5lc3QuICBEb24ndCBmYWlsIGlmCglwcm9maWxlX2FyY19mbGFnLiAgU3RyZWFtbGluZSBFSCB0ZXN0LgoKCSogZmxvdy5jIChyZWRpcmVjdF9lZGdlX3N1Y2MsIHJlZGlyZWN0X2VkZ2VfcHJlZCk6IE5ldy4KCSogYmFzaWMtYmxvY2suaDogRGVjbGFyZSB0aGVtLgoKMjAwMC0wNS0yNSAgQWxleGFuZHJlIE9saXZhICA8YW9saXZhQGN5Z251cy5jb20+CgoJKiBlbWl0LXJ0bC5jIChyZXNldF91c2VkX2RlY2xzKTogTmV3IGZ1bmN0aW9uLgoJKHVuc2hhcmVfYWxsX3J0bF9hZ2Fpbik6IENhbGwgaXQuCgoyMDAwLTA1LTI1ICBaYWNrIFdlaW5iZXJnICA8emFja0B3b2xlcnkuY3VtYi5vcmc+CgoJKiBjcHBsZXguYyAobWF5YmVfbWFjcm9leHBhbmQpOiBXYXJuIGFib3V0IGZ1bmN0aW9uLWxpa2UKCW1hY3JvcyB1c2VkIGluIG5vbi1mdW5jdGlvbiBjb250ZXh0LCBpZiAtV3RyYWRpdGlvbmFsLgoKMjAwMC0wNS0yNSAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIHJlY29nLmMgKHBlZXBob2xlMl9vcHRpbWl6ZSk6IFVzZSBJTlNOX1AuCgoyMDAwLTA1LTI1ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEBjeWdudXMuY29tPgoKCSogaWZjdnQuYyAoc2VxX2NvbnRhaW5zX2p1bXApOiBOZXcuCgkobm9jZV90cnlfc3RvcmVfZmxhZ19jb25zdGFudHMpOiBVc2UgaXQgdG8gZmFpbCBjb252ZXJzaW9uLgoJKG5vY2VfdHJ5X3N0b3JlX2ZsYWdfaW5jLCBub2NlX3RyeV9zdG9yZV9mbGFnX21hc2spOiBMaWtld2lzZS4KCjIwMDAtMDUtMjUgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBleGNlcHQuaCAoY2FuX3Rocm93KTogRGVjbGFyZSBpdC4KCSogZXhjZXB0LmMgKGNhbl90aHJvdyk6IEdpdmUgaXQgZXh0ZXJuYWwgbGlua2FnZS4KCSogcmVzb3VyY2UuYyAoZmluZF9kZWFkX29yX3NldF9yZWdpc3RlcnMpOiBVc2UgY2FuX3Rocm93LgoKMjAwMC0wNS0yNSAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAY3lnbnVzLmNvbT4KCgkqIGZsb3cuYyAobWFya19zZXRfMSk6IERvbid0IHJlY29yZCBjb25kaXRpb25hbGx5IGRlYWQgbWVtb3J5LgoKMjAwMC0wNS0yNSAgSmFuIEh1Ymlja2EgIDxqaEBzdXNlLmN6PgoKCSogY29tYmluZS5jICh0cnlfY29tYmluZSk6IFVzZSBhbnlfY29uZGp1bXBfcCwgYW55X3VuY29uZGp1bXBfcAoJYW5kIHBjX3NldCBhdCB0aGUgcGxhY2Ugb2Ygc2ltcGxlanVtcF9wIGFuZCBjb25kanVtcF9wLgoJKiBjc2UuYyAocmVjb3JkX2p1bXBfZXF1aXYpOiBMaWtld2lzZS4KCSogZW1pdC1ydGwuYyAoZW1pdCk6IExpa2V3aXNlLgoJKiBleHBsb3cuYyAoZmluZF9uZXh0X3JlZik6IExpa2V3aXNlLgoJKiBmbG93LmMgKHRpZHlfZmFsbHRocnVfZWRnZSk6IExpa2V3aXNlLgoJKGluaXRfcHJvcGFnYXRlX2Jsb2NrX2luZm8pOiBMaWtld2lzZS4KCSogZ2NzZS5jIChkZWxldGVfbnVsbF9wb2ludGVyX2NoZWNrcyk6IExpa2V3aXNlLgoJKiBpZmN2dC5jIChjb25kX2V4ZWNfZ2V0X2NvbmRpdGlvbiwgbm9jZV9nZXRfY29uZGl0aW9uLAoJZGVhZF9vcl9wcmVkaWNhYmxlKTogTGlrZXdpc2UuCgkqIGludGVncmF0ZS5jIChjb3B5X2luc25fbGlzdCk6IExpa2V3aXNlLgoJKiBsb29wLmMgKHNjYW5fbG9vcCwgdmVyaWZ5X2RvbWluYXRvciwgZmluZF9hbmRfdmVyaWZ5X2xvb3BzLAoJZm9yX2VhY2hfaW5zbl9pbl9sb29wLCBjaGVja19kYnJhX2xvb3AsIGdldF9jb25kaXRpb24sCglpbnNlcnRfYmN0LCBsb2FkX21lbXMpOiBMaWtld2lzZS4KCSogcmVzb3VyY2UuYyAoZmluZF9kZWFkX29yX3NldF9yZWdpc3RlcnMpOiBMaWtld2lzZS4KCSogc2liY2FsbHMuYyAoc2ltcGxlanVtcF9wKTogTGlrZXdpc2UuCgkqIHVucm9sbC5jIChjb3B5X2xvb3BfYm9keSwgcmVnX2RlYWRfYWZ0ZXJfbG9vcCk6IExpa2V3aXNlLgoKMjAwMC0wNS0yNSAgRGF2aWQgRWRlbHNvaG4gIDxlZGVsc29obkBnbnUub3JnPgoKCSogcnM2MDAwLmMgKGV4cGFuZF9ibG9ja19tb3ZlKTogQWRkIDY0LWJpdCBQb3dlclBDIGRvdWJsZXdvcmQgbW92ZQoJdG8gU1RSSU5HIGNhc2UuICBVc2UgZG91Ymxld29yZCBTVFJJTkcgbW92ZSBmb3IgVEFSR0VUX1BPV0VSUEM2NAoJd2hlbiB1bmFsaWduZWQuCgkqIHJzNjAwMC5oIChDT05TVF9PS19GT1JfTEVUVEVSX1AsICdKJyk6IHVuc2lnbmVkIEhPU1RfV0lERV9JTlQuCgkoUkVUVVJOX0FERFJfUlRYKTogVXNlIENPVU5UIGFuZCBGUkFNRSwgbm90IGNvdW50IGFuZCBmcmFtZS4KCShMRUdJVElNSVpFX1JFTE9BRF9BRERSRVNTKTogdW5zaWduZWQgSE9TVF9XSURFX0lOVCBoaWdoLgoJKiByczYwMDAubWQ6IE5hbWUgdmFyaW91cyBpbnRlcm5hbCBwYXR0ZXJucy4KCjIwMDAtMDUtMjUgIEphbiBIdWJpY2thICA8amhAc3VzZS5jej4KCgkqIGp1bXAuYyAoaW52ZXJ0X2V4cF8xKTogUmVtb3ZlIGZpcnN0IGFyZ3VtZW50LCB1c2UgcGNfc2V0Cgl0byBnZXQgdGhlIGV4cHJlc3Npb24uCgkocmVkaXJlY3RfZXhwKTogTWFrZSBzdGF0aWM7IHJlZGlyZWN0IG9ubHkgdGhlIHBjX3NldCBleHByZXNzaW9uLAoJcmVtb3ZlIGZpcnN0IGFyZ3VtZW50LgoJKGludmVydF9leHApOiBSZW1vdmUgZmlyc3QgYXJndW1lbnQsIG1ha2Ugc3RhdGljLgoJKGp1bXBfb3B0aW1pemUpOiBVc2UgYW55X2NvbmRqdW1wX3AsIGFueV91bmNvbmRqdW1wX3AgYW5kCglhbnlfb25seWp1bXAgYXQgbW9zdCBwbGFjZXMgd2hlcmUgd2Ugb3JpZ2luYWx5IGRpZCBjb25kanVtcF9wCglhbmQgc2ltcGxlanVtcF9wLgoJKGp1bXBfYmFja19wLCBmb2xsb3dfanVtcHMsIHRocmVhZF9qdW1wcyk6IExpa2V3aXNlLgoJKGRlbGV0ZV9iYXJyaWVyX3N1Y2Nlc29ycyk6IFVzZSBwY19zZXQuCgkoaW52ZXJ0X2p1bXBfMSwgaW52ZXJ0X2p1bXAsIHJlZGlyZWN0X2p1bXBfMSwgcmVkaXJlY3RfanVtcCk6IFVwZGF0ZQoJY2FsbHMgb2YgaW52ZXJ0X2V4cCBhbmQgcmVkaXJlY3RfZXhwLgoJKiBydGwuaCAocmVkaXJlY3RfZXhwLCBpbnZlcnRfZXhwKTogUmVtb3ZlLgoJKiB1bnJvbGwuYyAoY29weV9sb29wX2JvZHkpOiBVc2UgaW52ZXJ0X2p1bXAgYW5kIHJlZGlyZWN0X2p1bXAuCgoyMDAwLTA1LTI1ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEBjeWdudXMuY29tPgoKCSogc3RtdC5jIChleHBhbmRfZW5kX2JpbmRpbmdzKTogRml4IHRoaW5rbyBsYXN0IGNoYW5nZS4KCjIwMDAtMDUtMjUgIEFuZHJldyBNYWNMZW9kICA8YW1hY2xlb2RAY3lnbnVzLmNvbT4KCSAgICBBbmRyZXcgSGFsZXkgIDxhcGhAY3lnbnVzLmNvbT4KCgkqIGV4Y2VwdC5jICAoZnVuY19laF9lbnRyeSk6IEFkZCBlbWl0dGVkIGZpZWxkLgoJKG5ld19laF9yZWdpb25fZW50cnkpOiBTZXQgZW1pdHRlZCBmaWVsZCB0byAwOwoJKG91dHB1dF9leGNlcHRpb25fdGFibGVfZW50cnkpOiBPbmx5IGVtaXQgcHJldmlvdXNseSB1bi1lbWl0dGVkIGRhdGEsCglhbmQgc2VuZCBpdCB0byB0aGUgZWhfZGF0YSBzZWN0aW9uLgoJKG91dHB1dF9leGNlcHRpb25fdGFibGUpOiBCcmVhayBvdXQgY29tbW9uIHBhcnRzLiBPdXRwdXQKCWV4Y2VwdGlvbiB0YWJsZSBmb3IgZW50aXJlIGNvbXBpbGF0aW9uIHVuaXQgdG8gZWhfZGF0YSBzZWN0aW9uLgoJKG91dHB1dF9leGNlcHRpb25fdGFibGVfZGF0YSk6IENvbW1vbiBwYXJ0cyBvZiBvdXRwdXRfZXhjZXB0aW9uX3RhYmxlLgoJU2VuZCBvdXRwdXQgdG8gZWhfZGF0YSBzZWN0aW9uLgoJKG91dHB1dF9mdW5jdGlvbl9leGNlcHRpb25fdGFibGUpOiBPdXRwdXQgZXhjZXB0aW9uIHRhYmxlIGRhdGEgZm9yCglhIHNpbmdsZSBmdW5jdGlvbiB0byBlaF9kYXRhIHNlY3Rpb24uCgkoZnJlZV9leGNlcHRpb25fdGFibGUpOiBOZXcgZXh0ZXJuYWwgdG8gZnJlZSB0aGUgdGFibGUuCgkqIGV4Y2VwdC5oIChmcmVlX2V4Y2VwdGlvbl90YWJsZSk6IEFkZCBwcm90b3R5cGUuCgkob3V0cHV0X2Z1bmN0aW9uX2V4Y2VwdGlvbl90YWJsZSk6IEFkZCBwcm90b3R5cGUuCgkqIGZpbmFsLmMgKGZpbmFsX2VuZF9mdW5jdGlvbik6IE91dHB1dCBmdW5jdGlvbiBleGNlcHRpb24gdGFibGUKCWZvciBJQTY0X1VOV0lORF9JTkZPLgoJKGZpbmFsX3NjYW5faW5zbik6IEVtaXQgYW55IHVud2luZCBkaXJlY3RpdmVzIGZvciBhbiBpbnNuLgoKCSogZnJhbWUtZHdhcmYyLmM6IE5ldyBmaWxlIGNvbnRhaW5pbmcgYWxsIERXQVJGIDIgc3BlY2lmaWMgY29kZQoJZnJvbSBmcmFtZS5jLgoJKiBmcmFtZS5jOiBSZW1vdmUgYWxsIERXQVJGIDIgc3BlY2lmaWMgY29kZS4KCSogY29uZmlnL2lhNjQvZnJhbWUtaWE2NC5jOiBOZXcgZmlsZS4KCShndGhyZWFkX3N0dWZmKTogTWFrZSBhbGwgZ3RocmVhZCBhdmFpbGFibGUgd2l0aAoJSUE2NF9VTldJTkRfSU5GTy4KCShkd2FyZl9mZGUpOiBEZWZpbmUgYW4gSUE2NCBzdHJ1Y3QgZm9yIGR3YXJmX2ZkZS4KCShfX3JlZ2lzdGVyX2ZyYW1lX2luZm8sIF9fcmVnaXN0ZXJfZnJhbWUpOiBNb3ZlIHRvIGNvbW1vbiBhcmVhIG9mIGZpbGUuCgkoX19yZWdpc3Rlcl9mcmFtZV9pbmZvX3RhYmxlLCBfX3JlZ2lzdGVyX2ZyYW1lX3RhYmxlKTogTW92ZSB0byBjb21tb24gaQoJYXJlYS4KCShfX2RlcmVnaXN0ZXJfZnJhbWVfaW5mbywgX19kZXJlZ2lzdGVyX2ZyYW1lKTogTW92ZSB0byBjb21tb24gYXJlYS4KCShfX2ZyYW1lX2luaXQsIGZpbmRfZmRlKTogTmV3IHZlcnNpb25zIGZvciBJQTY0X1VOV0lORF9JTkZPLgoJKHJlYWRfdWxlYjEyOCk6IE5ldyB2ZXJzaW9uIGZvciBpYTY0LgoJKGdldF91bndpbmRfcmVjb3JkKTogUmVhZCB0aGUgbmV4dCBJQS02NCB1bndpbmQgcmVjb3JkLgoJKHJlYWRfUl9yZWNvcmQpOiBSZWFkIGEgcmVnaW9uIGhlYWRlciByZWNvcmQuCgkocHJvY2Vzc19hX2JfcmVnX2NvZGUpOiBYIHJlY29yZCBoZWxwZXIuCgkocmVhZF9YX3JlY29yZCk6IFJlYWQgYW4gWCBmb3JtYXQgcmVjb3JkLgoJKHJlYWRfQl9yZWNvcmQpOiBSZWFkIGEgQiBmb3JtYXQgcmVjb3JkLgoJKFAzX3JlY29yZF90eXBlcyk6IExpc3Qgb2YgcmVjb3JkIHR5cGVzIG1hdGNoaW5nIHRoZSBQMyBmb3JtYXQuCgkoUDdfcmVjb3JkX3R5cGVzKTogTGlzdCBvZiByZWNvcmQgdHlwZXMgbWF0Y2hpbmcgdGhlIFA3IGZvcm1hdC4KCShQOF9yZWNvcmRfdHlwZXMpOiBMaXN0IG9mIHJlY29yZCB0eXBlcyBtYXRjaGluZyB0aGUgUDggZm9ybWF0LgoJKHJlYWRfUF9yZWNvcmQpOiBSZWFkIGEgUCBmb3JtYXQgcmVjb3JkLgoJKGluaXRfaWE2NF9yZWdfbG9jKTogU2V0IGRlZmF1bHQgZmllbGRzIGZvciBhIHJlZ2lzdGVyLgoJKGluaXRfaWE2NF91bndpbmRfZnJhbWUpOiBTZXQgZGVmYXVsdHMgZm9yIGFsbCByZWdpc3RlciByZWNvcmRzLgoJKGV4ZWN1dGVfb25lX2lhNjRfZGVzY3JpcHRvcik6IEV4ZWN1dGUgb25lIGRlc2NyaXB0b3IgcmVjb3JkLgoJKHJzZV9hZGRyZXNzX2FkZCk6IENhbGN1bGF0ZSB0aGUgcG9zaXRpb24gb2YgYSBsb2NhbCByZWcgaW4gbWVtb3J5LgoJKG5vcm1hbGl6ZV9yZWdfbG9jKTogVHVybiBhIGxvY2F0aW9uIGRlc2NyaXB0b3IgaW50byBhIG1lbW9yeSBhZGRyZXNzLgoJKG1heWJlX25vcm1hbGl6ZV9yZWdfbG9jKTogT25seSBub3JtYWxpemUgYSBkZXNjcmlwdG9yIGlmIGl0IGZhbGxzCgl3aXRoaW4gYSBzcGVjaWZpZWQgUEMgb2Zmc2V0IHJhbmdlLgoJKGdldF9yZWFsX3JlZ192YWx1ZSk6IEdpdmVuIGEgcmVnaXN0ZXIgbG9jYXRpb24sIHJldHJpZXZlIGl0cyB2YWx1ZS4KCShzZXRfcmVhbF9yZWdfdmFsdWUpOiBDaGFuZ2UgdGhlIHZhbHVlIG9mIGEgcmVnaXN0ZXIgbG9jYXRpb24uCgkoY29weV9yZWdfdmFsdWUpOiBDb3B5IHJlZyB2YWx1ZXMsIGlmIG5lZWRlZC4KCShjb3B5X3NhdmVkX3JlZ19zdGF0ZSk6IENvcHkgYWxsIHJlZ2lzdGVycyB0aGF0IG5lZWQgdG8gYmUgY29waWVkLgoJKHByb2Nlc3Nfc3RhdGVfYmV0d2Vlbik6IE5vcm1hbGl6ZSBhbGwgZnJhbWUgcmVnaXN0ZXIgcmVjb3JkcyB0aGF0CglmYWxsIHdpdGhpbiB0aGUgc3BlY2lmaWVkIFBDIHJhbmdlLgoJKGZyYW1lX3RyYW5zbGF0ZSk6IFRha2UgYSBwcm9jZXNzZWQgZnJhbWUgZGVzY3JpcHRpb24sIGFuZCB0dXJuCglldmVyeXRoaW5nIGludG8gYWRkcmVzc2VzLgoJKGJ1aWxkX2lhNjRfZnJhbWVfc3RhdGUgKTogRmluZCBhbmQgY3JlYXRlIGZyYW1lIHN0YXRlIHJlY29yZCBmb3IgYSBQQy4KCShnZXRfcGVyc29uYWxpdHkpOiBHZXQgdGhlIHBlcnNvbmFsaXR5IHJvdXRpbmUgZm9yIGEgZ2l2ZW4gZnJhbWUuCgkoZ2V0X2V4Y2VwdF90YWJsZSk6IEdldCB0aGUgZXhjZXB0aW9uIHRhYmxlIGZvciBhIGdpdmVuIGZyYW1lLgoJKHJlY29yZF9uYW1lKTogVW53aW5kIHJlY29yZCBuYW1lcyBmb3IgZGVidWdnaW5nLgoJKHByaW50X3JlY29yZCk6IFByaW50IGFuZCB1bndpbmQgcmVjb3JkLgoJKHByaW50X2FsbF9yZWNvcmRzKTogUHJpbnQgYW4gZW50aXJlIHVud2luZCBpbWFnZS4KCShfX2lhNjRfYmFja3RyYWNlKTogUHJpbnQgYSBiYWNrdHJhY2UuCgkoaWE2NF9iYWNrdHJhY2VfaGVscGVyKTogTmV3IGZ1bmN0aW9uLgoJKF9fcmVnaXN0ZXJfZnJhbWVfaW5mb19hdXgpOiBOZXcgZnVuY3Rpb24uCgkqIGNvbmZpZy9pYTY0L2NydGVuZC5hc20gKF9fZG9fZnJhbWVfc2V0dXBfYXV4KTogTmV3IGZ1bmN0aW9uLgoKCSogZnJhbWUuaCAoZW51bSB1bndfcmVjb3JkX3R5cGUpOiBOZXcgdW53aW5kIHJlY29yZCB0eXBlcy4KCShzdHJ1Y3QgdW53X3BfcmVjb3JkLCB1bndfYl9yZWNvcmQsIHVud194X3JlY29yZCkgOiBOZXcgdW53aW5kIHJlY29yZHMuCgkoc3RydWN0IHVud19yX3JlY29yZCwgdW53aW5kX3JlY29yZCk6IE5ldyB1bndpbmQgcmVjb3JkIHN0cnVjdHMuCgkoc3RydWN0IHVud2luZF9pbmZvX3B0cik6IFVud2luZCBpbmZvcm1hdGlvbiBsYXlvdXQuCgkoSUE2NF9VTldfTE9DX1RZUEVfKik6IE1hY3JvcyBmb3IgZGlmZmVyZW50IHR5cGVzIGZvciBsb2NhdGlvbgoJZGVzY3JpcHRvcnMuCgkoc3RydWN0IGlhNjRfcmVnX2xvYyk6IFJlZ2lzdGVyIGxvY2F0aW9uIGRlc2NyaXB0aW9uLgoJKHN0cnVjdCBpYTY0X2ZyYW1lX3N0YXRlKTogTG9jYXRpb24gb2YgYWxsIHJlZ2lzdGVycyBpbiBhIGZyYW1lLgoJKHN0cnVjdCBvYmplY3QpOiBBZGQgcGNfYmFzZSBhbmQgZmRlX2VuZCBmb3IgSUE2NF9VTldJTkRfSU5GTy4KCSogbGliZ2NjMi5jIChfX2lhNjRfcGVyc29uYWxpdHlfdjEpOiBQZXJzb25hbGl0eSByb3V0aW5lLgoJKF9fY2FsY19jYWxsZXJfYnNwKTogQ2FsY3VsYXRlIHRoZSBic3AgcmVnaXN0ZXIgZm9yIHRoZSBjYWxsZXIncwoJZnJhbWUuCgkoaWE2NF90aHJvd19oZWxwZXIpOiBGaWd1cmUgb3V0IHdobyB0byByZXR1cm4gdG8gYW5kIHNldCB1cCB0aGUKCXJlZ2lzdGVycy4KCShfX3Rocm93KTogVGhyb3cgcm91dGluZS4KCgkqIG91dHB1dC5oIChhc3NlbWJsZV9laF9hbGlnbiwgYXNzZW1ibGVfZWhfbGFiZWwpOiBOZXcgZnVuY3Rpb25zCgl0byBnZW5lcmF0ZSBFSCBpbmZvIHdoZXJlIHdlIHdhbnQgaXQuCgkoYXNzZW1ibGVfZWhfaW50ZWdlcik6IE5ldyBmdW5jdGlvbi4KCSogdG9wbGV2LmMgKGNvbXBpbGVfZmlsZSk6IE91dHB1dCBtb2R1bGUgbGV2ZWwgZXhjZXB0aW9uIHRhYmxlIGZvcgoJbm9uLWlhNjQgdGFyZ2V0cy4KCShtYWluKTogU2V0IGV4Y2VwdGlvbnNfdmlhX2xvbmdqdW1wIGFuZCBmbGFnX25ld19leGNlcHRpb25zIGJhc2VkCglvbiBJQTY0X1VOV0lORF9JTkZPIHRvby4KCgkqIHZhcmFzbS5jIChhc3NlbWJsZV9laF9sYWJlbCk6IEdlbmVyYXRlIGEgbGFiZWwgdmlhCglBU01fT1VUUFVUX0VIX0xBQkVMIGlmIGl0IGhhcyBiZWVuIHNwZWNpZmllZC4KCShhc3NlbWJsZV9laF9hbGlnbik6IEdlbmVyYXRlIGFuIGFsaWdubWVudCBkaXJlY3RpdmUgdmlhCglBU01fT1VUUFVUX0VIX0FMSUdOIGlmIGl0IGhhcyBiZWVuIHNwZWNpZmllZC4KCShhc3NlbWJsZV9laF9sYWJlbCk6IEdlbmVyYXRlIGFuIGludGVnZXIgdmFsdWUgdmlhCglBU01fT1VUUFVUX0VIX3R5cGUgaWYgdGhleSBoYXZlIGJlZW4gc3BlY2lmaWVkLgoJKiBjb25maWcvaWE2NC9pYTY0LmMgKHJ0eF9uZWVkc19iYXJyaWVyKTogQWRkIGZsdXNocnMuCgkoaWE2NF9pbml0X2J1aWx0aW5zKTogQWRkIF9fYnVpbHRpbl9pYTY0X2JzcAoJYW5kIF9fYnVpbHRpbl9pYTY0X2ZsdXNocnMuCgkoaWE2NF9leHBhbmRfYnVpbHRpbik6IEFkZCBJQTY0X0JVSUxUSU5fQlNQIGFuZAoJSUE2NF9CVUlMVElOX0ZMVVNIUlMuCgkqIGNvbmZpZy9pYTY0L2lhNjQuaCAoaWE2NF9idWlsdGlucyk6IEFkZCBJQTY0X0JVSUxUSU5fQlNQIGFuZAoJSUE2NF9CVUlMVElOX0ZMVVNIUlMuCgoJKiBjb25maWcvaWE2NC9pYTY0Lm1kIChmbHVzaHJzKTogTmV3IGluc24gdG8gZmx1c2ggdGhlIHJlZ2lzdGVyCglzdGFjay4gIEFkZCB0byB1bnNwZWMgbGlzdC4KCgkqIGNvbmZpZy9pYTY0L2NydGJlZ2luLmFzbSAoZnJhbWVfb2JqZWN0KTogQ2hhbmdlIHNpemUuCgkoX19kb19mcmFtZV9zZXR1cF9hdXgpOiBOZXcgZnVuY3Rpb24uCgkqIGNvbmZpZy9pYTY0L2NydGVuZC5hc206IGNhbGwgX19kb19mcmFtZV9zZXR1cF9hdXguCgkqIGNvbmZpZy9pYTY0L3QtaWE2NCAoTElCMkFEREVIKTogQWRkLgoJKiBNYWtlZmlsZS5pbiAoTElCMkFEREVIKTogQWRkLgoJKExJQjJBREQpOiBVc2UgTElCMkFEREVILgoKMjAwMC0wNS0yNCAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAY3lnbnVzLmNvbT4KCgkqIHJlY29nLmMgKG9mZnNldHRhYmxlX2FkZHJlc3NfcCk6IElmIG1vZGUgc2l6ZSBpcyB6ZXJvLCBhc3N1bWUKCUJJR0dFU1RfQUxJR05NRU5ULgoKMjAwMC0wNS0yNCAgSi4gRGF2aWQgQW5nbGluICA8ZGF2ZUBoaWF1bHkuaGlhLm5yYy5jYT4KCgkqIGNvbmZpZ3VyZS5pbjogQ2hlY2sgZm9yIC1Xbm8tbG9uZy1sb25nIG9wdGlvbiBzdXBwb3J0IGFuZCBpbXByb3ZlCgloYW5kbGluZyBvZiB3YXJuaW5nIENGTEFHUyBmb3Igc3RhZ2VzIDEgYW5kIDIuCgkqIE1ha2VmaWxlLmluIChXQVJOX0NGTEFHUyk6IE1vdmUgZGVmaW5pdGlvbiB0byBjb25maWd1cmUuaW4uCgkqIGNvbmZpZ3VyZTogUmVnZW5lcmF0ZS4KCldlZCBNYXkgMjQgMTk6Mzc6NTMgMjAwMCAgSmVmZnJleSBBIExhdyAgKGxhd0BjeWdudXMuY29tKQoKCSogZ2NjLnRleGk6IFJlbW92ZSBjb250cmlidXRvciBsaXN0LiAgSW5zdGVhZCBpbmNsdWRlIGNvbnRyaWIudGV4aS4KCSogY29udHJpYi50ZXhpOiBOZXcgZmlsZS4KClRodSBNYXkgMjUgMDI6Mjc6MjIgMjAwMCAgSiJvcm4gUmVubmVja2UgPGFteWxhYXJAY3lnbnVzLmNvLnVrPgoKCSogbG9vcC5jIChiYXNpY19pbmR1Y3Rpb25fdmFyKTogQXZvaWQgZG91YmxlIHJlY29yZGluZyBvZiBhbiBpbmNyZW1lbnQuCgpUaHUgTWF5IDI1IDAyOjE5OjI3IDIwMDAgIEoib3JuIFJlbm5lY2tlIDxhbXlsYWFyQGN5Z251cy5jby51az4KCgkqIEJhY2sgb3V0IHRoaXMgcGF0Y2g6CglUdWUgRGVjICA3IDE5OjIyOjA2IDE5OTkgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgkgICogbG9vcC5oIChzdHJ1Y3QgaW5kdWN0aW9uKTogQWRkIG11bHRpX2luc25faW5jci4KCSAgKiBsb29wLmMgKGJhc2ljX2luZHVjdGlvbl92YXIpOiBOZXcgbXVsdGlfaW5zbl9pbmNyIGFyZ3VtZW50LgoJICBTZXQgaXQgaWYgd2Ugc2VhcmNoIGJhY2sgdGhyb3VnaCBwcmV2aW91cyBpbnNucyBmb3IgdGhlIGJpdi4KCSAgKHJlY29yZF9iaXYpOiBOZXcgbXVsdGlfaW5zbl9pbmNyIGFyZ3VtZW50OyBmaWxsIGluIHN0cnVjdCBpbmR1Y3Rpb24uCgkgIChzdHJlbmd0aF9yZWR1Y2UpOiBEaXNjYXJkIGFuIGl2IHdpdGggbXVsdGlwbGUgYml2cywgYW55IG9mCgkgIHdoaWNoIHJlcXVpcmUgbXVsdGlwbGUgaW5zbnMgdG8gaW5jcmVtZW50LgoKCSogbG9vcC5jIChjaGVja19pbnNuX2Zvcl9iaXZzKTogUmVtb3ZlIGJpdHMgY29waWVkIGZyb20gYWJvdmUgcGF0Y2guCgpUaHUgTWF5IDI1IDAyOjA5OjEwIDIwMDAgIEoib3JuIFJlbm5lY2tlIDxhbXlsYWFyQGN5Z251cy5jby51az4KCgkqIHJ0bC5oIChsb2NfbWVudGlvbmVkX2luX3ApOiBEZWNsYXJlLgoJKiByZWxvYWQuYyAobG9jX21lbnRpb25lZF9pbl9wKTogTW92ZWQgZnJvbSBoZXJlLi4uCgkqIHJ0bGFuYWwuYyAobG9jX21lbnRpb25lZF9pbl9wKTogdG8gaGVyZS4gIE5vIGxvbmdlciBzdGF0aWMuCglGaXggbG9vcCBpbmNyZW1lbnQgZm9yICdFJyBoYW5kbGluZy4KCSogbG9vcC5jIChzdHJlbmd0aF9yZWR1Y2UpOiBXaGVuIGRvaW5nIGJpdi0+Z2l2IGNvbnZlcnNpb24sCgl0YWtlIG11bHRpLWluc24gYml2IGluY3JlbWVudHMgaW50byBhY2NvdW50LgoKMjAwMC0wNS0yNCAgSmFzb24gTWVycmlsbCAgPGphc29uQGNhc2V5LnNvbWEucmVkaGF0LmNvbT4KCgkqIHN0bXQuYyAoZXhwYW5kX2VuZF9iaW5kaW5ncyk6IExvb2sgdGhyb3VnaCBOT1RFcyB0byBmaW5kIGEKCUJBUlJJRVIuCgoyMDAwLTA1LTI0ICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogY2FsbHMuYyAoZXhwYW5kX2NhbGwpOiBIYW5kbGUgY2xlYW51cHMgaW4gdGFpbC1yZWN1cnNpb24KCWFyZ3VtZW50cyBhbmFsb2dvdXNseSB0byBjbGVhbnVwcyBpbiBzaWJsaW5nIGNhbGxzLgoKMjAwMC0wNS0yNCAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogc2ltcGxpZnktcnR4LmM6IFJlbmFtZSBtYWNybyBTSUdOX0VYVEVORCB0byBIV0lfU0lHTl9FWFRFTkQuCglBbGwgY2FsbGVycyBjaGFuZ2VkLgoKMjAwMC0wNS0yNCAgQWxleGFuZHJlIE9saXZhICA8YW9saXZhQGN5Z251cy5jb20+CgoJKiBleHByLmMgKGV4cGFuZF9hc3NpZ25tZW50LCBzdG9yZV9leHByLCBleHBhbmRfZXhwciwKCWV4cGFuZF9leHByX3VuYWxpZ25lZCk6IFNldCBpbl9jaGVja19tZW1vcnlfdXNhZ2Ugd2hpbGUgZW1pdHRpbmcKCWNoa3JfY2hlY2tfYWRkciBsaWJjYWxsLgoKMjAwMC0wNS0yNCAgTmljayBDbGlmdG9uICA8bmlja2NAY3lnbnVzLmNvbT4KCgkqIGZvbGQtY29uc3QuYyAoZXh0cmFjdF9tdWxkaXYpOiBXaGVuIGNvbnN0cnVjdGluZyBhCgltdWx0aXBsaWVyL2Rpdmlzb3IsIGRvIG5vdCBleHBlY3QgY29uc3RfYmlub3AgdG8gY29ycmVjdGx5CglkZXRlcm1pbmUgaWYgb3ZlcmZsb3cgaGFzIG9jY3VycmVkLCBzbyBjaGVjayBleHBsaWNpdGx5LgoKMjAwMC0wNS0yNCAgQWxleGFuZHJlIE9saXZhICA8YW9saXZhQGN5Z251cy5jb20+CgoJKiBjLWRlY2wuYyAoYnVpbGRfZW51bWVyYXRvcik6IERvbid0IG1vZGlmeSB0aGUgdmFsdWUncyB0eXBlLAoJY29udmVydCBpdC4KCjIwMDAtMDUtMjQgIEFuZHJlYXMgSmFlZ2VyICA8YWpAc3VzZS5kZT4KCgkqIG1pcHMuaCAoTElOS0VSX0VORElBTl9TUEVDKTogUGFzcyAtRUwgdG8gbGlua2VyIGJ5IGRlZmF1bHQuCgoyMDAwLTA1LTI0ICBFcmljIENocmlzdG9waGVyIDxlY2hyaXN0b0BjeWdudXMuY29tPgoKCSogY29uZmlndXJlLmluOiBSZWRlZmluZSBpbmhpYml0X2xpYmMgY29uZGl0aW9ucy4KCSogbGliZ2NjMi5jOiBSZW1vdmUgaW5oaWJpdF9saWJjIGNvbmRpdGlvbmFsIGRlZmluZS4KCSogY29uZmlndXJlOiBSZWdlbmVyYXRlLgoKMjAwMC0wNS0yNCAgUGhpbCBFZHdhcmRzICA8cG1lQHNvdXJjZXdhcmUuY3lnbnVzLmNvbT4KCgkqIGNvbmZpZ3VyZS5pbjogIEZvciAtLWVuYWJsZS1sYW5ndWFnZXM9TElTVCwgY2hlY2sgZm9yIGVtcHR5IExJU1QuCgkqIGNvbmZpZ3VyZTogIFJlZ2VuZXJhdGUuCgoyMDAwLTA1LTI0ICBMYXJzIEJyaW5raG9mZiAgPGxhcnNAbm9jcmV3Lm9yZz4KCgkqIHBkcDExLmggKFNUQUNLX0JPVU5EQVJZKTogRGVmaW5lLgoKMjAwMC0wNS0yNCAgSmFrdWIgSmVsaW5layAgPGpha3ViQHJlZGhhdC5jb20+CgoJKiBpZmN2dC5jIChpZl9jb252ZXJ0KTogVXBkYXRlIGxpZmUgaW5mbyBnbG9iYWxseS4KCjIwMDAtMDUtMjQgIEFsZXhhbmRyZSBPbGl2YSAgPG9saXZhQGxzZC5pYy51bmljYW1wLmJyPgoKCSogZW1pdC1ydGwuYyAodW5zaGFyZV9hbGxfZGVjbHMpOiBOZXcgZnVuY3Rpb24uCgkodW5zaGFyZV9hbGxfcnRsKTogQ2FsbCBpdC4KCjIwMDAtMDUtMjMgIE5pY2sgQ2xpZnRvbiAgPG5pY2tjQGN5Z251cy5jb20+CgoJKiBjb25maWd1cmUuaW46IFRyZWF0ICdzdHJvbmdhcm0nIGFzIGlmIGl0IHdlcmUgJ2FybScgd2hlbgoJZGV0ZXJtaW5pbmcgY3B1IHR5cGUuCgoJKiBjb25maWd1cmU6IFJlZ2VuZXJhdGUuCgoJKiBjb25maWcvYXJtL2FybS5jOiBDaGFuZ2UgJ2NoYXIgKicgdG8gJ2NvbnN0IGNoYXIgKicgZm9yIGNhc2VzCgl3aGVyZSBjb25zdGFudCBzdHJpbmdzIGFyZSBpbnZvbHZlZC4KCgkqIGNvbmZpZy9hcm0vYXJtLmggKGFybV9jb25kaXRpb25fY29kZXMpOiBDaGFuZ2UgdHlwZSB0byAnY29uc3QKCWNoYXIgKicuCgoJKiBjb25maWcvYXJtL2FybS1wcm90b3MuaDogQ2hhbmdlICdjaGFyIConIHRvICdjb25zdCBjaGFyIConIGZvcgoJY2FzZXMgd2hlcmUgY29uc3RhbnQgc3RyaW5ncyBhcmUgaW52b2x2ZWQuCgpUdWUgTWF5IDIzIDE1OjA4OjMxIDIwMDAgIENsaW50b24gUG9wZXR6ICA8Y3BvcGV0ekBjeWdudXMuY29tPgoKCSogY29uZmlnL3NoL3NoLmMgKGdlbl9mYXJfYnJhbmNoLCBzcGxpdF9icmFuY2hlcyk6IFVwZGF0ZQoJdG8gcmVmbGVjdCBuZXcgcHJvdG90eXBlcyBmb3IgcmVkaXJlY3RfanVtcCBhbmQgaW52ZXJ0X2p1bXAuCgkoc2hfaW5zbl9sZW5ndGhfYWRqdXN0bWVudCk6IEdldCByaWQgb2YgY29uc3Qgd2FybmluZ3MuCgoyMDAwLTA1LTIzICBLYXp1IEhpcmF0YSAgPGthenVAaHhpLmNvbT4KCgkqIGludm9rZS50ZXhpIChPcHRpb25zIGZvciBEZWJ1Z2dpbmcgWW91ciBQcm9ncmFtIG9yIEdDQyk6IFVwZGF0ZQoJdGhlIG5hbWVzIG9mIGR1bXAgZmlsZXMuCgpUdWUgTWF5IDIzIDEzOjU4OjUyIDIwMDAgIFBoaWxpcHBlIERlIE11eXRlciAgPHBoZG1AbWFjcWVsLmJlPgoKCSogY29uZmlndXJlLmluIChOT19NSU5VU19DX01JTlVTX08pOiBGaXggdGhpbmtvIGluIHByZXZpb3VzIGZpeC4KCSogY29uZmlndXJlOiBSZWdlbmVyYXRlZC4KCjIwMDAtMDUtMjMgIFphY2sgV2VpbmJlcmcgIDx6YWNrQHdvbGVyeS5jdW1iLm9yZz4KCgkqIHNpbXBsaWZ5LXJ0eC5jIChTSUdOX0VYVEVORCk6IE5ldyBtYWNyby4KCShzaW1wbGlmeV91bmFyeV9vcGVyYXRpb24sIHNpbXBsaWZ5X2JpbmFyeV9vcGVyYXRpb24sCglzaW1wbGlmeV9yZWxhdGlvbmFsX29wZXJhdGlvbik6IFVzZSBTSUdOX0VYVEVORC4gIE1ha2UgbG93CgloYWx2ZXMgb2YgKGxvdywgaGlnaCkgcGFpcnMgdW5zaWduZWQgaWYgdGhleSB3ZXJlbid0IGFscmVhZHkuCgkoc2ltcGxpZnlfdGVybmFyeV9vcGVyYXRpb24pOiBDYXN0IElOVFZBTCB0byB1bnNpZ25lZCBiZWZvcmUKCWNvbXBhcmluZyB0byBhIE1PREVfQklUU0laRS4KCjIwMDAtMDUtMjMgIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIGFjbG9jYWwubTQgKGdjY19BQ19DSEVDS19ERUNMLCBnY2NfQUNfQ0hFQ0tfREVDTFMpOiBOZXcgbWFjcm9zCglyZXdyaXR0ZW4gZnJvbSB0aGUgaW50ZXJuYWxzIG9mIGdjY19BQ19ORUVEX0RFQ0xBUkFUSU9Oe1N9LgoKCSogY29uZmlndXJlLmluIChnY2NfQUNfQ0hFQ0tfREVDTFMpOiBDYWxsIHRoaXMgaW5zdGVhZCBvZgoJZ2NjX0FDX05FRURfREVDTEFSQVRJT05TLgoKCSogZHdhcmZvdXQuYzogRG9uJ3QgcHJvdG90eXBlIHRpbWUoKS4KCgkqIGdjYy5jOiBDaGVjayBIQVZFX0RFQ0xfKiBpbnN0ZWFkIG9mIE5FRURfREVDTEFSQVRJT05fKi4KCgkqIHN5c3RlbS5oOiBMaWtld2lzZS4KCgkqIHRvcGxldi5jOiBMaWtld2lzZS4KCjIwMDAtMDUtMjMgIFphY2sgV2VpbmJlcmcgIDx6YWNrQHdvbGVyeS5jdW1iLm9yZz4KCgkqIGMtZGVjbC5jIChwdXNoZGVjbCk6IEludmVydCBzZW5zZSBvZiB0ZXN0IGZvciBub24tZ2xvYmFsIHR5cGVzLgoKVHVlIE1heSAyMyAxODoxMTo0MiAyMDAwICBKIm9ybiBSZW5uZWNrZSA8YW15bGFhckBjeWdudXMuY28udWs+CgoJKiByZWxvYWQxLmMgKHJlbG9hZF9jc2VfbW92ZTJhZGQpOiBIb25vciBUUlVMWV9OT09QX1RSVU5DQVRJT04uCgoyMDAwLTA1LTIzICBKb25hdGhhbiBMYXJtb3VyICA8amxhcm1vdXJAcmVkaGF0LmNvLnVrPgoKCSogY29uZmlnL21pcHMvZWxmNjQuaCAoQ1RPUl9MSVNUU19ERUZJTkVEX0VYVEVSTkFMTFkpOiBEZWZpbmUKClR1ZSBNYXkgMjMgMDY6NTA6MjkgMjAwMCAgUmljaGFyZCBLZW5uZXIgIDxrZW5uZXJAdmxzaTEudWx0cmEubnl1LmVkdT4KCgkqIGNvbmZpZy9hbHBoYS9hbHBoYS5jOiBSZW1vdmUgI2lmZGVmIEhBSUZBIHNpbmNlIG5vdyBvbmx5IHNjaGVkdWxlci4KCShhbHBoYV9zdGFydF9mdW5jdGlvbik6IE5ldmVyIHdyaXRlIC4ubmcgbGFiZWwgaWYgVk1TIG9yIE5ULgoJKGFscGhhX2FsaWduX2luc25zKTogUmVtb3ZlIEdQX0lOX1VTRSBhcmcuCglBbGlnbm1lbnQgbm93IHVuc2lnbmVkLgoJKGFscGhhX3Jlb3JnKTogRG9uJ3QgcGFzcyBHUF9JTl9VU0UgYXJnIHRvIGFscGhhX2FsaWduX2luc25zLgoJKiBjb25maWcvYWxwaGEvYWxwaGEubWQgKHByb2xvZ3VlX2xkZ3ApOiBTcGxpdCBpbnRvIG9uZSBkZWZpbmVfZXhwYW5kCglhbmQgdHdvIGRlZmluZV9pbnNuJ3MuCgoyMDAwLTA1LTIyICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEBjeWdudXMuY29tPgoKCSogY29tYmluZS5jIChzaW1wbGlmeV9jb21wYXJpc29uKTogVXNlIHRydW5jX2ludF9mb3JfbW9kZS4KCjIwMDAtMDUtMjIgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgoJKiBzdG9yLWxheW91dC5jIChwbGFjZV9maWVsZCk6IENoYW5nZSBybGktPnNpemUgdG8gcmxpLT5vZmZzZXQuCgoyMDAwLTA1LTIyICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEBjeWdudXMuY29tPgoKCSogZnVuY3Rpb24uYyAodGhyZWFkX3Byb2xvZ3VlX2FuZF9lcGlsb2d1ZV9pbnNucyk6IE1ha2Ugc3VyZQoJZXhpc3RpbmcgbGluZSBudW1iZXIgbm90ZXMgYXBwZWFyIGFmdGVyIHRoZSBwcm9sb2d1ZS4KCk1vbiBNYXkgMjIgMjE6NDk6MDAgMjAwMCAgUmljaGFyZCBLZW5uZXIgIDxrZW5uZXJAdmxzaTEudWx0cmEubnl1LmVkdT4KCgkqIGNvbmZpZy9hbHBoYS9hbHBoYS5jIChhbHBoYV9mbm5hbWUpOiBOZXcgc3RhdGljIHZhcmlhYmxlLgoJKHByaW50X29wZXJhbmQsIGNhc2UgJ34nKTogTmV3IGNhc2UuCgkoYWxwaGFfZXhwYW5kX3Byb2xvZ3VlKTogRW1pdCBwcm9sb2d1ZV9sZGdwIGluc24gaWYgbmVlZGVkLgoJKGFscGhhX3N0YXJ0X2Z1bmN0aW9uKTogU2V0IGFscGhhX2ZubmFtZS4KCVdyaXRlICJuZyIgbGFiZWwgaWYgbm8gbGRncDsgZG9uJ3Qgd3JpdGUgbGRncCBpbnNuLgoJKiBjb25maWcvYWxwaGEvYWxwaGEuaCAoUFJJTlRfT1BFUkFORF9QVU5DVF9WQUxJRF9QKTogTmV3IGNhc2UgJ34nLgoJKiBjb25maWcvYWxwaGEvYWxwaGEubWQgKHByb2xvZ3VlX2xkZ3ApOiBOZXcgZGVmaW5lX2luc24uCgpNb24gTWF5IDIyIDExOjMwOjQ4IDIwMDAgIENsaW50b24gUG9wZXR6ICA8Y3BvcGV0ekBjeWdudXMuY29tPgoKCSoganVtcC5jIChqdW1wX29wdGltaXplXzEpOiBEb24ndCBpbmNyZW1lbnQgTEFCRUxfTlVTRVMKCW9uIGRlbGV0ZWQgbGFiZWxzLgoKMjAwMC0wNS0yMiAgWmFjayBXZWluYmVyZyAgPHphY2tAd29sZXJ5LmN1bWIub3JnPgoKCSogdmFyYXNtLmMgKGVoX2ZyYW1lX3NlY3Rpb24pOiBSZXZlcnQgY2hhbmdlIHRvIGFyZ3VtZW50IGxpc3QuCgpNb24gTWF5IDIyIDEzOjE0OjAzIDIwMDAgIFJpY2hhcmQgS2VubmVyICA8a2VubmVyQHZsc2kxLnVsdHJhLm55dS5lZHU+CgoJKiBvcHRhYnMuYyAoY2FuX2V4dGVuZF9wKTogQWxsb3cgdW5zaWduZWRwIHRvIGhhdmUgYW55IG5vbnplcm8gdmFsdWUuCgkoZ2VuX2V4dGVuZF9pbnNuLCBjYW5fZml4X3AsIGNhbl9mbG9hdF9wKTogTGlrZXdpc2UuCgoJKiBmaW5hbC5jIChmaW5hbF9zY2FuX2luc24sIGNhc2UgTk9URV9JTlNOX0ZVTkNUSU9OX0JFRyk6IFJlbW92ZQoJZGFuZ2xpbmcgImVsc2UiIHRoYXQgY2F1c2VzICJicmVhayIgdG8gYmUgY29uZGl0aW9uYWwuCglBbHNvIHJlbW92ZSB1bm5lZWRlZCBjb2RlIGF0IHN0YXJ0LgoKTW9uIE1heSAyMiAxNzozMTozNSAyMDAwICBQaGlsaXBwZSBEZSBNdXl0ZXIgIDxwaGRtQG1hY3FlbC5iZT4KCgkqIG02OGsvbTY4ay5oIChTVE9SRV9GTEFHX1ZBTFVFKTogTWFjcm8gc2V0IHRvICgtMSksIG5vdCAtMS4KCSogZng4MC9meDgwLmgsIGkzNzAvaTM3MC5oLCBtODhrL204OGsuaCAoU1RPUkVfRkxBR19WQUxVRSk6IERpdHRvLgoJKiBnbWljcm8vZ21pY3JvLmgsIHdlMzJrL3dlMzJrLmggKFNUT1JFX0ZMQUdfVkFMVUUpOiBEaXR0by4KCjIwMDAtMDUtMjIgIEpha3ViIEplbGluZWsgIDxqYWt1YkByZWRoYXQuY29tPgoKCSogY29uZmlnL3NwYXJjL3NwYXJjLm1kIChtb3ZkZl9pbnNuX3Y5b25seV92aXMpOiBmemVybyBoYXMKCWp1c3Qgb25lIGFyZ3VtZW50LgoKTW9uIE1heSAyMiAwNjo1Nzo0OSAyMDAwICBSaWNoYXJkIEtlbm5lciAgPGtlbm5lckB2bHNpMS51bHRyYS5ueXUuZWR1PgoKCSogYWxpYXMuYyAocmVjb3JkX2NvbXBvbmVudF9hbGlhc2VzKTogTmV3IGZ1bmN0aW9uLgoJKiB0cmVlLmg6IENsZWFuIHVwIHNvbWUgZGVjbGFyYXRpb25zIGFuZCBjb21tZW50cy4KCShyZWNvcmRfY29tcG9uZW50X2FsaWFzZXMpOiBOZXcgZGVjbGFyYXRpb24uCgkqIHRyZWUuYyAoZ2V0X2FsaWFzX3NldCk6IElmIHR5cGUgYW5kIGhhcyBhbGlhcyBzZXQsIHVzZSBpdC4KCjIwMDAtMDUtMjIgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgoJKiBzaW1wbGlmeS1ydHguYyAoc2ltcGxpZnlfdGVybmFyeV9vcGVyYXRpb24pOiBUcnkgdG8gc2ltcGxpZnkKCUlGX1RIRU5fRUxTRSB0byBhIHNldGNjIGZvcm0uCgkqIGp1bXAuYyAoY2FuX3JldmVyc2VfY29tcGFyaXNvbl9wKTogQmUgcHJlcGFyZWQgZm9yIGluc24gbnVsbC4KCjIwMDAtMDUtMjEgIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIGZpeGluYy9pbmNsaGFjay5kZWYgKHN1bl9tYWxsb2MpOiBIYW5kbGUgYGNhbGxvYycuCgkoc3VuX21hbGxvYywgc3lzel9zdGR0eXBlc19mb3Jfc3VuKTogQWRkIHRlc3RfdGV4dC4KClN1biBNYXkgMjEgMTY6NDI6MzEgMjAwMCAgUmljaGFyZCBLZW5uZXIgIDxrZW5uZXJAdmxzaTEudWx0cmEubnl1LmVkdT4KCgkqIGNvbWJpbmUuYyAodHJ5X2NvbWJpbmUpOiBIYW5kbGUgaTNfc3Vic3RfaW50b19pMiBjYXNlIHdoZW4gSTIgaXMKCW5vdCBhIFBBUkFMTEVMLgoKMjAwMC0wNS0yMCAgQWxleGFuZHJlIE9saXZhICA8YW9saXZhQGN5Z251cy5jb20+CgoJKiBjb25maWcvbW4xMDMwMC9tbjEwMzAwLm1kIChtb3ZkaSwgbW92ZGYpOiA2NC1iaXQgY2xlYW4tdXAuCgkqIGNvbmZpZy9tbjEwMzAwL21uMTAzMDAuYyAocHJpbnRfb3BlcmFuZCk6IExpa2V3aXNlLgoKCSogZmluYWwuYyAoc3BsaXRfZG91YmxlKTogUmlnaHQgc2hpZnQgb2YgbmVnYXRpdmUgdmFsdWVzIGlzIG5vdAoJcG9ydGFibGUuCgoJKiBpZmN2dC5jIChpZl9jb252ZXJ0KTogU2NhbiBhbmQga2lsbCBkZWFkIGNvZGUuCgoJKiBlbWl0LXJ0bC5jICh1bnNoYXJlX2FsbF9ydGwpOiBTdG9yZSB0aGUgY29waWVkIHJ0eC4KCjIwMDAtMDUtMjAgIFphY2sgV2VpbmJlcmcgIDx6YWNrQHdvbGVyeS5jdW1iLm9yZz4KCgkqIGRpYWdub3N0aWMuYzogRWxpbWluYXRlIGltcGxpY2l0IGludC4KCSogZXhjZXB0LmMsIGdjYy5jOiBBZGQgc3RhdGljIHByb3RvdHlwZXMuCgkqIGZpbmFsLmMgKGZpbmFsX2VuZF9mdW5jdGlvbik6IE1hcmsgZmlsZSBhcmcgQVRUUklCVVRFX1VOVVNFRC4KCSogZ2Vuc3VwcG9ydC5jIChwcm9jZXNzX3J0eCk6IFVzZSBYVkVDIHRvIGluaXRpYWxpemUgdmVjdG9yCglzbG90IG9mICdzcGxpdCcuCgoJKiBwcmludC1ydGwuYzogSWYgREVCVUdfUkVHSVNURVJfTkFNRVMsIGRlZmluZSBzdGF0aWMKCWRlYnVnX3JlZ19uYW1lcyBpbnN0ZWFkIG9mIHN0YXRpYyByZWdfbmFtZXMuICBJZiBub3QsIGRlZmluZQoJZ2xvYmFsIHJlZ19uYW1lcy4KCSogcmVnY2xhc3MuYzogRG9uJ3QgZGVmaW5lIGdsb2JhbCByZWdfbmFtZXMgdW5sZXNzCglERUJVR19SRUdJU1RFUl9OQU1FUyBpcyBkZWZpbmVkLgoKCSogcmVsb2FkMS5jIChvcmRlcl9yZWdzX2Zvcl9yZWxvYWQpOiBSZW1vdmUgdW51c2VkIHZhcmlhYmxlLgoJKiB2YXJhc20uYzogSW5jbHVkZSBvdXRwdXQuaCBhZnRlciBkZWZhdWx0cy5oLiAgRGVmaW5lCgllaF9mcmFtZV9zZWN0aW9uIGFzIGZ1bmN0aW9uIG9mIG5vIGFyZ3MsIG5vdCBvZiB1bnNwZWNpZmllZCBhcmdzLgoKCSogZ2NjLmM6IENvbnN0aWZ5IGFyZ2J1ZjsgYXJndW1lbnRzIHRvIHN0b3JlX2FyZywKCXByb2Nlc3NfY29tbWFuZCwgbWFpbjsgZWxlbWVudHMgb2Ygc3RydWN0IGNvbW1hbmQgYW5kIHN0cnVjdAoJc3dpdGNoc3RyOyBsb2NhbCB2YXJpYWJsZXMgaW4gZXhlY3V0ZSwgcHJvY2Vzc19jb21tYW5kLCBtYWluLgoKMjAwMC0wNS0yMCAgQnJ1Y2UgS29yYiAgPGJrb3JiQGdudS5vcmc+CgoJKiBmaXhpbmMvaW5jbGhhY2suZGVmOiAgbWFueSBhcHBsaWNhdGlvbnMgb2YgY19maXg9Zm9ybWF0ICsgdGVzdHMKCSogZml4aW5jL2NoZWNrLmRpZmY6ICByZWdlbmVyYXRlZAoJKiBmaXhpbmMvZml4aW5jbC54OiAgcmVnZW5lcmF0ZWQKClNhdCBNYXkgMjAgMDk6MzA6NTUgMjAwMCAgUmljaGFyZCBLZW5uZXIgIDxrZW5uZXJAdmxzaTEudWx0cmEubnl1LmVkdT4KCgkqIGFsaWFzLmM6IENsYXJpZnkgc29tZSBjb21tZW50cy4KCShyZWNvcmRfYmFzZV92YWx1ZSk6IFJFR05PIGlzIHVuc2lnbmVkLgoJKiBydGwuaCAocmVjb3JkX2Jhc2VfdmFsdWUpOiBMaWtld2lzZS4KCgkqIGFsaWFzLmMgKGFsaWFzZXNfZXZlcnl0aGluZ19wKTogRG9uJ3Qgc3BlY2lhbC1jYXNlIFFJbW9kZSBoZXJlLgoJKiBjLWNvbW1vbi5jIChjX2dldF9hbGlhc19zZXQpOiBEbyBpdCBoZXJlLgoJSGFuZGxlIEJJVF9GSUVMRF9SRUYgYnkgZ2V0dGluZyBhbGlhcyBpbmZvIGZvciBhcmcuCglVc2UgUE9JTlRFUl9UWVBFX1AuCgoyMDAwLTA1LTIwICBBbGV4YW5kcmUgT2xpdmEgIDxhb2xpdmFAY3lnbnVzLmNvbT4KCgkqIG1rbGliZ2NjLmluOiBSZXN0b3JlIHJ1bGUgdG8gY3JlYXRlICR7ZGlyfS4KClNhdCBNYXkgMjAgMDg6NDU6NDEgMjAwMCAgSC5KLiBMdSAgPGhqbEBnbnUub3JnPgoKCSogTWFrZWZpbGUuaW4gKGxpYmdjYy5tayk6IERlcGVuZCBvbiB4Z2NjJChleGVleHQpIGZvcgoJR0NDX0ZPUl9UQVJHRVQgdXNlZCBieSBNVUxUSUxJQlMuCgkqIG1rbGliZ2NjLmluOiBNYWtlIHN1cmUgZWFjaCAubyBmaWxlIGRlcGVuZHMgb24gdGhlCglkaXJlY3RvcnkgaXQgd2lsbCBiZSBpbi4KCU1ha2UgdGhlIG11bHRpbGliIGRpcmVjdG9yeSBkZXBlbmRzIGxpYmdjYy4KClNhdCBNYXkgMjAgMDg6Mjk6MjggMjAwMCAgSC5KLiBMdSAgPGhqbEBnbnUub3JnPgoKCSogTWFrZWZpbGUuaW4gKGJvb3RzdHJhcCk6IFVuc2V0IExBTkdfTElCMkZVTkNTIGZvciBzdGFnZSAxLgoKU2F0IE1heSAyMCAwNzoyNzozNSAyMDAwICBBbGV4YW5kcmUgT2xpdmEgIDxhb2xpdmFAY3lnbnVzLmNvbT4KCgkqIGZvbGQtY29uc3QuYyAobWFrZV9yYW5nZSk6IEhhbmRsZSBkZWdlbmVyYXRlZCBpbnRlcnZhbHMuCglGaXhlcyBjLXRvcnR1cmUvZXhlY3V0ZS85OTEyMjEtMS5jCgpGcmkgTWF5IDE5IDE4OjE2OjMxIDIwMDAgIFJpY2hhcmQgS2VubmVyICA8a2VubmVyQHZsc2kxLnVsdHJhLm55dS5lZHU+CgoJKiBjc2UuYyAoY3NlX2Jhc2ljX2Jsb2NrKTogT25seSBjYWxsIGZpbmRfcmVnX25vdGUgaWYgUkVHX05PVEVTIG5vdCAwLgoJKiByZWxvYWQuYyAoZmluZF9lcXVpdl9yZWcpOiBMaWtld2lzZS4KCSogYWxpYXMuYyAoaW5pdF9hbGlhc19hbmFseXNpcyk6IExpa2V3aXNlLgoJT25seSBjYWxsIHByb2xvZ3VlX2VwaWxvZ3VlX2NvbnRhaW5zIG9uIGluc25zLgoJKiBiYXNpYy1ibG9jay5oIChSRUdfU0VUX1RPX0hBUkRfUkVHX1NFVCk6IENhbGwgbmV3IGZ1bmN0aW9uLgoJKiBiYi1yZW9yZGVyLmMgKGhhcmQtcmVnLXNldC5oKTogSW5jbHVkZSBlYXJsaWVyLgoJKiBoYWlmYS1zY2hlZC5jIChoYXJkLXJlZy1zZXQuaCk6IExpa2V3aXNlLgoJKiBpZmN2dC5jIChoYXJkLXJlZy1zZXQuaCk6IExpa2V3aXNlLgoJKiBsb2NhbC1hbGxvYy5jIChoYXJkLXJlZy1zZXQuaCk6IExpa2V3aXNlLgoJKiBsb29wLmMgKGhhcmQtcmVnLXNldC5oKTogTGlrZXdpc2UuCgkqIHByZWRpY3QuYyAoaGFyZC1yZWctc2V0LmgpOiBMaWtld2lzZS4KCSogcmVncmVuYW1lLmMgKGhhcmQtcmVnLXNldC5oKTogTGlrZXdpc2UuCgkqIGZsb3cuYyAoaGFyZC1yZWctc2V0LmgpOiBMaWtld2lzZS4KCShyZWdfc2V0X3RvX2hhcmRfcmVnX3NldCk6IE5ldyBmdW5jdGlvbi4KCSogYml0bWFwLmMgKHJlZ3MuaCwgYmFzaWMtYmxvY2suaCk6IE5vIGxvbmdlciBpbmNsdWRlLgoJKGJpdG1hcC5oKTogTm93IGluY2x1ZGUuCgkqIGNvbmZsaWN0LmMgKGhhcmQtcmVnLXNldC5oKTogSW5jbHVkZS4KCSogcHJvZmlsZS5jIChoYXJkLXJlZy1zZXQuaCk6IExpa2V3aXNlLgoJKiBwcmludC1ydGwuYyAoaGFyZC1yZWctc2V0LmgpOiBMaWtld2lzZS4KCSogc2JpdG1hcC5jIChoYXJkLXJlZy1zZXQuaCk6IExpa2V3aXNlLgoJKiB0b3BsZXYuYyAoaGFyZC1yZWctc2V0LmgpOiBMaWtld2lzZS4KCSogdW5yb2xsLmMgKGhhcmQtcmVnLXNldC5oLCBiYXNpYy1ibG9jay5oKTogTGlrZXdpc2UuCgkqIGhhcmQtcmVnLXNldC5oIChyZWdfbmFtZXMpOiBOb3cgY29uc3RhbnQuCgkqIHJlZ3MuaCAocmVnX25hbWVzKTogTGlrZXdpc2UuCgkqIHJlZ2NsYXNzLmMgKHJlZ19uYW1lcyk6IExpa2V3aXNlLgoJKiBsb29wLmggKGJhc2ljLWJsb2NrLmgpOiBObyBsb25nZXIgaW5jbHVkZS4KCShiaXRtYXAuaCk6IE5vdyBpbmNsdWRlLgoJKiByZWxvYWQxLmMgKG9yZGVyX3JlZ3NfZm9yX3JlbG9hZCk6IEF2b2lkIGxvb3Agb3ZlciByZWcgc2V0cy4KCSogTWFrZWZpbGUuaW4gKExPT1BfSCwgc2JpdG1hcC5vLCBwcm9maWxlLm8pOiBSZWZsZWN0IGFib3ZlIGNoYW5nZXMuCgkodG9wbGV2Lm8sIHByaW50LXJ0bC5vLCBjb25mbGljdC5vLCB1bnJvbGwubywgYml0bWFwLm8pOiBMaWtld2lzZS4KCjIwMDAtMDUtMTkgIEphbiBIdWJpY2thICA8amhAc3VzZS5jej4KCSAgICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEBjeWdudXMuY29tPgoKCSogYmFzaWMtYmxvY2suaCAoc3RydWN0IGVkZ2VfZGVmKTogTmV3IGZpZWxkICJjb3VudCIuCgkoc3RydWN0IGJhc2ljX2Jsb2NrX2RlZik6IExpa2V3aXNlLgoJKiBmbG93LmMgKGVudHJ5X2V4aXRfYmxvY2tzKTogQWRkIGNvdW50IGZpbGVkcy4KCShzcGxpdF9lZGdlKTogS2VlcCBjb3VudCBpbmZvcm1hdGlvbiB1cC10by1kYXRlLgoJKGR1bXBfZWRnZV9pbmZvLCBkdW1wX2Zsb3dfaW5mbyk6IER1bXAgY291bnQgZmllbGRzLgoKCSogZmluYWwuYyAoY291bnRfaW5zdHJ1bWVudGVkX2VkZ2VzKTogUmVuYW1lIHRvIGVkZ2UgZnJvbSBhcmMuCgkoZW5kX2ZpbmFsKTogVXBkYXRlIHVzZXJzLgoJKiBwcm9maWxlLmM6IEluY2x1ZGUgZXhwci5oLCBiYXNpYy1ibG9jay5oLgoJKHN0cnVjdCBhZGpfbGlzdCwgQVJDX1RBUkdFVCwgQVJDX1NPVVJDRSwgQVJDX0NPVU5UKTogS2lsbC4KCShzdHJ1Y3QgYmJfaW5mbywgbGFiZWxfdG9fYmIsIGxhYmVsX3RvX2JiX3NpemUsIGJiX2dyYXBoKTogS2lsbC4KCShpZ25vcmVfbmV4dF9ub3RlLCByZXR1cm5fbGFiZWxfZXhlY3V0aW9uX2NvdW50KTogS2lsbC4KCShiYmdfZmlsZV9uYW1lLCBkYV9maWxlX25hbWUpOiBLaWxsLgoJKGVkZ2VfaW5mbywgYmJfaW5mbyk6IE5ldyBzdHJ1Y3R1cmVzLgoJKEVER0VfSU5GTywgQkJfSU5GTywgR0NPVl9JTkRFWF9UT19CQiwgQkJfVE9fR0NPVl9JTkRFWCk6IE5ldyBtYWNyb3MuCgkoY291bnRfaW5zdHJ1bWVudGVkX2VkZ2VzLCB0b3RhbF9udW1fZWRnZXMpOiBSZW5hbWUgdG8gZWRnZSBmcm9tIGFyYy4KCSh0b3RhbF9udW1fZWRnZXNfaW5zdHJ1bWVudGVkKTogTGlrZXdpc2UuCgkoaW5pdF9hcmMsIGV4cGFuZF9zcGFubmluZ190cmVlKTogS2lsbC4KCShmaWxsX3NwYW5uaW5nX3RyZWUsIHRhYmxlanVtcF9lbnRyeV9wKTogS2lsbC4KCShpbnN0cnVtZW50X2VkZ2VzKTogIFJld3JpdGUgZnJvbSBpbnN0cnVtZW50X2FyY3MgdG8gdXNlCgljb21taXRfZWRnZV9pbnNlcnRpb25zIGluZnJhc3RydWN0dXJlLgoJKGNvbXB1dGVfYnJhbmNoX3Byb2JhYmlsaXRpZXMpOiBSZW1vdmUgYXJndW1lbnRzOyByZXdyaXRlIGZvcgoJQ0ZHIGluZnJhc3RydWN0dXJlOyB1c2UgcnRsX2R1bXBfZmlsZSBkaXJlY3RseS4KCShicmFuY2hfcHJvYiwgZmluZF9zcGFubmluZ190cmVlKTogTGlrZXdpc2UuCgkodW5pb25fZ3JvdXBzLCBmaW5kX2dyb3VwKTogTmV3LgoJKGluaXRfYnJhbmNoX3Byb2IpOiBNYWtlIGJiZ19maWxlX25hbWUgYW5kIGRhX2ZpbGVfbmFtZSBsb2NhbC4KCShlbmRfYnJhbmNoX3Byb2IpOiBVc2UgcnRsX2R1bXBfZmlsZSBkaXJlY3RseS4KCShpbml0X2VkZ2VfcHJvZmlsZXIpOiBSZW5hbWUgdG8gZWRnZSBmcm9tIGFyYy4KCShvdXRwdXRfYXJjX3Byb2ZpbGVyKTogS2lsbC4KCShnZW5fZWRnZV9wcm9maWxlcik6IE5ldy4KCShvdXRwdXRfZnVuY19zdGFydF9wcm9maWxlcik6IFR1cm4gb2ZmIHByb2ZpbGluZy4gIE1ha2UgdGhlCgljb25zdHJ1Y3RvciBzdGF0aWMgd2hlbiB3ZSBjYW4uCgkqIHJ0bC5oIChicmFuY2hfcHJvYiwgZW5kX2JyYW5jaF9wcm9iKTogVXBkYXRlIHByb3RvdHlwZXMuCgoJKiB0b3BsZXYuYyAoREZJX2Zsb3cpOiBSZW1vdmUuCgkoREZJX2NmZywgREZJX2xpZmUpOiBOZXcuCgkoZHVtcF9maWxlKTogVXBkYXRlIGFjY29yZGluZ2x5LgoJKGNvbXBpbGVfZmlsZSk6IENhbGwgZW5kX2JyYW5jaF9wcm9iIGlmIHByb2ZpbGVfYXJjX2ZsYWcgdG9vLgoJKHJlc3Rfb2ZfY29tcGlsYXRpb24pOiBNb3ZlIGZsb3cxIGNmZyBjcmVhdGlvbiB0byBERklfY2ZnLiAgRG8gZWRnZQoJcHJvZmlsaW5nIGFmdGVyIHRoZSBDRkcgaXMgYnVpbHQuICBNb3ZlIGZsb3cxIGxpZmUgYW5hbHlzaXMgdG8KCURGSV9saWZlLiAgQWx3YXlzIGVzdGltYXRlIHJlbWFpbmluZyBwcm9iYWJpbGl0aWVzLgoKMjAwMC0wNS0xOSAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAY3lnbnVzLmNvbT4KCgkqIGlmY3Z0LmMgKGZpbmRfaWZfY2FzZV8yKTogRG9uJ3QgYWxsb3cgVEhFTiB0byBiZSBFWElULgoKCSogZmxvdy5jIChtYWtlX2VkZ2VzKTogVGhlIHNpYmxpbmcgY2FsbCBlZGdlIHRvIGV4aXQgaXMgYWJub3JtYWwuCgoyMDAwLTA1LTE5ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEBjeWdudXMuY29tPgoKCSoganVtcC5jIChyZWRpcmVjdF9qdW1wKTogQWRkIGRlbGV0ZV91bnVzZWQgYXJndW1lbnQuICBEb24ndAoJcmVtb3ZlIGxhYmVscyBhbmQgY29kZSBmb2xsb3dpbmcgd2hlbiBMQUJFTF9OVVNFUyBnb2VzIHRvIHplcm8uCgkoaW52ZXJ0X2p1bXApOiBMaWtld2lzZS4KCShqdW1wX29wdGltaXplXzEpOiBGaXggcmVkaXJlY3QvaW52ZXJ0IGFyZ3VtZW50cy4KCShkb19jcm9zc19qdW1wLCB0aHJlYWRfanVtcHMpOiBMaWtld2lzZS4KCSogZmxvdy5jIChzcGxpdF9lZGdlKTogTGlrZXdpc2UuCgkqIHJlb3JnLmMgKG9wdGltaXplX3NraXApOiBMaWtld2lzZS4KCShyZW9yZ19yZWRpcmVjdF9qdW1wLCByZWxheF9kZWxheV9zbG90cywgZGJyX3NjaGVkdWxlKTogTGlrZXdpc2UuCgkqIHByb2ZpbGUuYyAoaW5zdHJ1bWVudF9hcmNzKTogTGlrZXdpc2UuCgkqIGxvb3AuYyAoZmluZF9hbmRfdmVyaWZ5X2xvb3BzKTogTGlrZXdpc2UuICBGaXggaW5kZW50YXRpb24uCgkqIHJ0bC5oOiBVcGRhdGUgcHJvdG90eXBlcy4KCkZyaSBNYXkgMTkgMTI6MDU6MTMgMjAwMCAgQ2xpbnRvbiBQb3BldHogIDxjcG9wZXR6QGN5Z251cy5jb20+CgoJKiBzc2EuYyAoY29udmVydF9mcm9tX3NzYSk6IFRlbGwgbGlmZV9hbmFseXNpcyB3ZSBuZWVkIGRlYXRoCglub3Rlcy4KCShtYWtlX3JlZ3NfZXF1aXZhbGVudF9vdmVyX2JhZF9lZGdlcyk6IE9ubHkgbG9vayBhdCBhYm5vcm1hbAoJY3JpdGljYWwgZWRnZXMuCgoyMDAwLTA1LTE5ICBaYWNrIFdlaW5iZXJnICA8emFja0B3b2xlcnkuY3VtYi5vcmc+CgoJKiBjcHBoYXNoLmMgKGZ1bmxpa2VfbWFjcm9leHBhbmQpOiBNYWtlIHN1cmUgbm90IHRvIHdhbGsgcDEKCXBhc3QgbDEgd2hlbiBkZWxldGluZyB3aGl0ZXNwYWNlIGFuZCBtYXJrZXJzLgoKCSogY3BwbGV4LmMgKF9jcHBfc2Nhbl91bnRpbCk6IENsZWFyIEFVWCBmaWVsZCBvZiB0b2tlbnMuCgkqIGNwcGxpYi5jIChkb191bmFzc2VydCk6IFB1dCB0aGUgbGlzdCB0byBjb21wYXJlIGFnYWluc3Qgb24KCXRoZSBzdGFjay4KCjIwMDAtMDUtMTkgIEJydWNlIEtvcmIgIDxia29yYkBnbnUub3JnPgoKCSogZml4aW5jL1JFQURNRTogIGNsZWFuZWQgdXAgb2xkIGRvY3VtZW50YXRpb24KCSogZml4aW5jL2NoZWNrLmRpZmY6IHJlZ2VuZXJhdGVkICYgdmVyaWZpZWQgb24gT1NSNSBvbiBpeDg2CgkqIGZpeGluYy9jaGVjay50cGw6IGNvbXB1dGUgdGhlIGxpc3Qgb2YgbmVlZGVkIGRpcmVjdG9yaWVzCgllbWl0ICIjaWYgZGVmaW5lZChuYW1lKSIgYmVjYXVzZSBvZiBjb25mbGljdAoJb21pdCBtYWNoaW5lIG5hbWUgZGlmZmVyZW5jZXMgZnJvbSBvdXRwdXQgZGlmZmVyZW5jZXMKCSogZml4aW5jL2luY2xoYWNrLmRlZiggbTg4a19tdWx0aV9pbmNsICk6ICBVc2UgYHdyYXAnIGZ1bmN0aW9uCgkobWFjaGluZV9uYW1lKTogY2hhbmdlIHRlc3QgdGV4dCB0byB1c2UgYHNlZCcgbWFya2VycwoJKiBmaXhpbmMvZml4aW5jbC54OiByZWdlbgoKRnJpIE1heSAxOSAwNjo0OTozNSAyMDAwICBSaWNoYXJkIEtlbm5lciAgPGtlbm5lckB2bHNpMS51bHRyYS5ueXUuZWR1PgoKCSogY29uZmlnL2VsZm9zLmggKFNFTEVDVF9TRUNUSU9OKTogRG9uJ3QgYWNjZXNzIERFQ0xfSU5JVElBTCBvZgoJYSBDT05TVFJVQ1RPUi4KCjIwMDAtMDUtMTggIENocmlzIERlbWV0cmlvdSAgPGNnZEBzaWJ5dGUuY29tPgoKCSogZ2NjLnRleGkgKE1VTFRJTElCX0VYQ0VQVElPTlMpOiBDb3JyZWN0IGV4YW1wbGUgYW5kIHVwZGF0ZQoJaXQgdG8gbWF0Y2ggdGhlIGN1cnJlbnQgcHJhY3RpY2UuCgoyMDAwLTA1LTE4ICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogTWFrZWZpbGUuaW4gKFNUQUdFU1RVRkYpOiBGaXggdHlwbyBpbiBzcGVsbGluZyBvZiBzLXVuZGVyLgoKMjAwMC0wNS0xOCAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAY3lnbnVzLmNvbT4KCgkqIHJ0bGFuYWwuYyAoaW5zbl9kZXBlbmRhbnRfcCwgaW5zbl9kZXBlbmRhbnRfcF8xKTogTmV3LgoJKiBydGwuaCAoaW5zbl9kZXBlbmRhbnRfcCk6IERlY2xhcmUgaXQuCgkqIGxvb3AuYyAoc3RyZW5ndGhfcmVkdWNlKTogVXNlIGl0LgoKMjAwMC0wNS0xOCAgQWxleGFuZHJlIE9saXZhICA8YW9saXZhQGN5Z251cy5jb20+CgoJKiBjb25maWcvbW4xMDMwMC9tbjEwMzAwLmMgKGV4cGFuZF9wcm9sb2d1ZSwgZXhwYW5kX2VwaWxvZ3VlKToKCTE2LWJpdCBhbmQgNjQtYml0IGNsZWFuLXVwLgoKMjAwMC0wNS0xOCBNYXJrIEVsYnJlY2h0IDxzbm93YmFsbDNAYmlnZm9vdC5jb20+CgoJKiBjb25maWd1cmUuaW4gKCotcGMtbXNkb3NkamdwcCk6IFNldCBmbG9hdF9mb3JtYXQgdG8gbm9uZS4KCSogY29uZmlndXJlOiBSZWJ1aWx0LgoKMjAwMC0wNS0xOCAgWmFjayBXZWluYmVyZyAgPHphY2tAd29sZXJ5LmN1bWIub3JnPgoKCSogZ2Vub3Bpbml0LmM6IFVzZSAkIGZvciBlc2NhcGUgc2VxdWVuY2VzIGluIG9wdGFiIHBhdHRlcm5zLgoJUmVtb3ZlIGJhY2tzbGFzaGVzIGZyb20gb3B0YWIgcGF0dGVybnMuICBDaGFuZ2UgJEEsICRCLCAkQyB0bwoJZXhwYW5kIHRvIChpbnQpIHdoYXRldmVyIGluc3RlYWQgb2YganVzdCB3aGF0ZXZlcjsgcmVtb3ZlCglleHBsaWNpdCAoaW50KSBmcm9tIGFsbCBvcHRhYiBwYXR0ZXJucy4KCgkqIGdlbnN1cHBvcnQuYyAoeG1hbGxvYywgeHJlYWxsb2MsIHhzdHJkdXApOiBQcm92aWRlLgoJKiBnZW5hdHRyLmMsIGdlbmF0dHJ0YWIuYywgZ2VuY29kZXMuYywgZ2VuY29uZmlnLmMsIGdlbmVtaXQuYywKCWdlbmV4dHJhY3QuYywgZ2VuZmxhZ3MuYywgZ2Vub3Bpbml0LmMsIGdlbm91dHB1dC5jLCBnZW5wZWVwLmMsCglnZW5yZWNvZy5jOiBSZW1vdmUgcHJpdmF0ZSBjb3BpZXMgb2YgeG1hbGxvYywgeHJlYWxsb2MsIGFuZAoJeHN0cmR1cC4KCjIwMDAtMDUtMTggIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgoJKiBqdW1wLmMgKGp1bXBfb3B0aW1pemVfMSk6IEJhc2UgbWluaW11bSBpbnNuIGNvdW50IGR1cmluZwoJZmluZF9jcm9zc19qdW1wIG9uIEJSQU5DSF9DT1NULgoKMjAwMC0wNS0xOCAgSmFrdWIgSmVsaW5layAgPGpha3ViQHJlZGhhdC5jb20+CgoJKiBwcmludC1ydGwuYyAocHJpbnRfcnR4KTogT25seSBwcmludCBub3RlIGxpbmUgbnVtYmVyIGFzIHN0cmluZwoJaWYgYmV0d2VlbiBOT1RFX0lOU05fQklBUyBhbmQgTk9URV9JTlNOX01BWC4KCSogZmluYWwuYyAoZmluYWxfc2Nhbl9pbnNuKTogRG8gbm90aGluZyBmb3Igbm90ZSBsaW5lIG51bWJlciAwLgoKMjAwMC0wNS0xOCAgSmFrdWIgSmVsaW5layAgPGpha3ViQHJlZGhhdC5jb20+CgoJKiBnY2MtY29tbW9uLmMgKGdnY19tYXJrX3J0eF9jaGlsZHJlbik6IE1hcmsgTk9URV9FWFBFQ1RFRF9WQUxVRQoJZnJvbSBOT1RFX0lOU05fRVhQRUNURURfVkFMVUUgbm90ZXMgYW5kIE5PVEVfU09VUkNFX0ZJTEUgZnJvbQoJTk9URV9JTlNOX0RFTEVURURfTEFCRUwuCgoyMDAwLTA1LTE4ICBOaWNrIENsaWZ0b24gIDxuaWNrY0BjeWdudXMuY29tPgoKCSogY29uZmlnL2FybS91bmtub3duLWVsZi5oIChVTklRVUVfU0VDVElPTik6IFBsYWNlIGNvbnN0YW50LAoJdW5pbml0aWFsaXplZCBkYXRhIGluIC5yb2RhdGEgbm90IC5ic3MsIGFuZCBkbyBub3QgaW50ZXJwcmV0IGFuCgllcnJvciBpbiB0aGUgaW5pdGlhbGlzYXRpb24gdmFsdWUgYXMgbWVhbmluZyB0aGF0IHRoZSB2YXJpYWJsZQoJc2hvdWxkIGJlIHBsYWNlZCBpbiB0aGUgLmJzcyBzZWN0aW9uLgoKVGh1IE1heSAxOCAxMjoxMDoxOCAyMDAwICBQaGlsaXBwZSBEZSBNdXl0ZXIgIDxwaGRtQG1hY3FlbC5iZT4KCgkqIGNvbmZpZ3VyZS5pbiAoTk9fTUlOVVNfQ19NSU5VU19PKTogVGVzdCBgJGFjX2N2X3Byb2dfY2NfJHthY19jY31fY19vJywKCW5vdCBgJGFjX2N2X3Byb2dfY2NfY2NfY19vJy4KCSogY29uZmlndXJlOiBSZWdlbmVyYXRlZC4KCjIwMDAtMDUtMTggIENocmlzIERlbWV0cmlvdSAgPGNnZEBzaWJ5dGUuY29tPgoJICAgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgoJKiBjLWNvbW1vbi5oIChlbnVtIGNfdHJlZV9pbmRleCk6IEFkZCBnNzcgdHlwZSBlbnRyaWVzLgoJKGc3N19pbnRlZ2VyX3R5cGVfbm9kZSwgZzc3X3VpbnRlZ2VyX3R5cGVfbm9kZSk6IE5ldy4KCShnNzdfbG9uZ2ludF90eXBlX25vZGUsIGc3N191bG9uZ2ludF90eXBlX25vZGUpOiBOZXcuCgkqIGMtZGVjbC5jIChpbml0X2RlY2xfcHJvY2Vzc2luZyk6IEluaXRpYWxpemUgdGhlbS4KCjIwMDAtMDUtMTggIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgoJKiBjb25maWcvaDgzMDAvaDgzMDAubWQgKHN1YnMgcGF0dGVybnMpOiBVc2UgJUcgdG8gbmVnYXRlLgoKCSogY29uZmlnL2g4MzAwL2g4MzAwLmMgKG9rX2Zvcl9iY2xyKTogVGFrZSBhIEhPU1RfV0lERV9JTlQuCgkoc21hbGxfcG93ZXJfb2ZfdHdvKTogTGlrZXdpc2U7IHVzZSBleGFjdF9sb2cyLgoJKGFkZHNfc3Vic19vcGVyYW5kLCBvbmVfaW5zbl9hZGRzX3N1YnNfb3BlcmFuZCk6IFJlbW92ZS4KCShvdXRwdXRfYWRkc19zdWJzKTogUmVtb3ZlLgoJKHR3b19pbnNuX2FkZHNfc3Vic19vcGVyYW5kKTogTmV3LgoJKHNwbGl0X2FkZHNfc3Vicyk6IE5ldy4KCSogY29uZmlnL2g4MzAwL2g4MzAwLXByb3Rvcy5oOiBVcGRhdGUuCgkqIGNvbmZpZy9oODMwMC9oODMwMC5oIChDT05TVF9PS19GT1JfSik6IENhc3QgdG8gdW5zIEhPU1RfV0lERV9JTlQuCgkoQ09OU1RfT0tfRk9SX0wpOiBNYXRjaCBzdHJpY3QgYWRkcyBvcGVyYW5kcy4KCShDT05TVF9PS19GT1JfTik6IE1hdGNoIHN0cnVjdCBzdWJzIG9wZXJhbmRzLgoJKiBjb25maWcvaDgzMDAvaDgzMDAubWQgKGFkZHNfc3VicyBpbnNucyk6IFJlbW92ZS4KCShhZGRoaSBwYXR0ZXJucyk6IE91dHB1dCBhZGRzL3N1YnMgZGlyZWN0bHkuCgkoYWRkc2lfaDgzMDBoKTogTGlrZXdpc2UuCgkoYWRkaGkvYWRkc2kgc3BsaXR0ZXJzKTogTmV3LiAgRGVjb21wb3NlIHR3b19pbnNuX2FkZHNfc3Vic19vcGVyYW5kLgoKMjAwMC0wNS0xOCAgWmFjayBXZWluYmVyZyAgPHphY2tAd29sZXJ5LmN1bWIub3JnPgoKCSogY3BwZXhwLmMgKHBhcnNlX2Fzc2VydGlvbik6IE5ldy4KCShsZXgpOiBDYWxsIGl0IGZvciBDUFBfSEFTSC4gIFJlbW92ZSBDUFBfQVNTRVJUSU9OIGNhc2UuCgkoX2NwcF9wYXJzZV9leHByKTogUmVtb3ZlIGNhc2UgJyMnLiAgRG9uJ3Qgc2V0CglwYXJzaW5nX2lmX2RpcmVjdGl2ZS4KCSogY3BwaGFzaC5jIChjb2xsZWN0X29iamxpa2VfZXhwYW5zaW9uLAoJY29sbGVjdF9mdW5saWtlX2V4cGFuc2lvbiwgY29sbGVjdF9wYXJhbXMsCglfY3BwX2NyZWF0ZV9kZWZpbml0aW9uKTogVGhlIGxpc3Qgbm8gbG9uZ2VyIGhhcyBhIHRyYWlsaW5nCglWU1BBQ0UgdG9rZW4uCgkqIGNwcGhhc2guaCAoZW51bSBub2RlX3R5cGUpOiBBZGQgVF9BU1NFUlRJT04uCgkoc3RydWN0IGhhc2hub2RlKTogUmVtb3ZlIGFzY2hhaW4sIGFkZCBwcmVkLgoJKHN0cnVjdCBwcmVkaWNhdGUpOiBOZXcuCglVcGRhdGUgcHJvdG90eXBlcy4KCgkqIGNwcGxleC5jIChleHBhbmRfdG9rZW5fc3BhY2UpOiBIYW5kbGUgYm90aCBvZmZzZXQgYW5kCglub25vZmZzZXQgbGlzdHMuCgkoaW5pdF90b2tlbl9saXN0LCBfY3BwX2ZyZWVfdG9rZW5fbGlzdCwgX2NwcF9wYXJzZV9hc3NlcnRpb24pOiBEZWxldGUuCgkoX2NwcF9pbml0X3Rva2xpc3QsIF9jcHBfY2xlYXJfdG9rbGlzdCwgX2NwcF9mcmVlX3Rva2xpc3QsCglfY3BwX3NsaWNlX3Rva2xpc3QsIF9jcHBfc3F1ZWV6ZV90b2tsaXN0LCBfY3BwX2VxdWl2X3Rva2VucywKCV9jcHBfZXF1aXZfdG9rbGlzdHMpOiBOZXcuCgkoX2NwcF9zY2FuX2xpbmUpOiBSZW5hbWUgdG8gX2NwcF9zY2FuX3VudGlsOyBhZGQgYWJpbGl0eSB0bwoJc3RvcCBhdCBhbnkgc2luZ2xlLWNoYXJhY3RlciB0b2tlbiwgbm90IGp1c3QgbmV3bGluZS4KCShfY3BwX2xleF90b2tlbik6IFJlbW92ZSBzcGVjaWFsIGNhc2VzIGZvciAjZGVmaW5lIGFuZCAjaWYuCgkoY3BwX2dldF90b2tlbik6IEV4cGVjdCAjIGFzIGEgc2VwYXJhdGUgdG9rZW4gdHlwZS4gIFJlbW92ZQoJRElSRUNUSVZFIGNhc2UuCgkoX2NwcF9nZXRfZGlyZWN0aXZlX3Rva2VuKTogUmVtb3ZlIERJUkVDVElWRSBjYXNlLgoJKF9jcHBfbGV4X2xpbmUsIF9jcHBfbGV4X2ZpbGUsIF9jcHBfaW5pdF9pbnB1dF9idWZmZXIpOiBVcGRhdGUuCgoJKiBjcHBsaWIuYyAoX2NwcF9jaGVja19kaXJlY3RpdmUpOiBTZXQgZGlybm8gYW5kCglTWU5UQVhfSU5DTFVERSBiaXQgb2YgZmxhZ3MsIG5vdCBkaXJfaGFuZGxlciBhbmQgZGlyX2ZsYWdzLgoJKF9jcHBfaGFuZGxlX2RpcmVjdGl2ZSk6IFJ1biAjIDxudW1iZXI+IHRocm91Z2ggdGhlIHNhbWUgbG9naWMKCWFzIG5vcm1hbCBkaXJlY3RpdmVzLgoJKGRvX2RlZmluZSk6IERvbid0IHNldCBwYXJzaW5nX2RlZmluZV9kaXJlY3RpdmUuICBVc2UKCV9jcHBfc2Nhbl91bnRpbC4gIFRoZSBsaXN0IGRvZXMgbm90IGhhdmUgYSBWU1BBQ0UgYXQgdGhlIGVuZC4KCShkb19pZik6IFNhdmUsIGNsZWFyLCBhbmQgcmVzdG9yZSBvbmx5X3NlZW5fd2hpdGUgYXJvdW5kCglfY3BwX3BhcnNlX2V4cHIuCgkoc2tpcF9pZl9ncm91cCk6IHMvQ1BQX0RJUkVDVElWRS9DUFBfSEFTSC8KCShkb19hc3NlcnQsIGRvX3VuYXNzZXJ0KTogUmV3cml0ZS4KCgkqIGNwcGxpYi5oIChUVFlQRV9UQUJMRSk6IFJlbW92ZSBDUFBfQVNTRVJUSU9OLgoJKExJU1RfT0ZGU0VUKTogTmV3IGZsYWcuCgkoc3RydWN0IGNwcF90b2tsaXN0KTogUmVwbGFjZSBkaXJfaGFuZGxlciBhbmQgZGlyX2ZsYWdzIHdpdGgKCWRpcm5vIGFuZCBmbGFncy4KCShzdHJ1Y3QgY3BwX3JlYWRlcik6IFJlbW92ZSBwYXJzaW5nX2lmX2RpcmVjdGl2ZSBhbmQKCXBhcnNpbmdfZGVmaW5lX2RpcmVjdGl2ZS4KCjIwMDAtMDUtMTggIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIGZpeGluYy9pbmNsaGFjay5kZWYgKGJyb2tlbl9jYWJzKTogVXBkYXRlIGZpeCB0byBoYW5kbGUgY29tbWVudHMKCWZvbGxvd2luZyB0aGUgY2FicyBkZWNsIHdoaWNoIHRlcm1pbmF0ZSBvbiB0aGUgZm9sbG93aW5nIGxpbmUuCglBZGQgdGhlIGNvcnJlc3BvbmRpbmcgdGVzdF90ZXh0IGNhc2UuCgoyMDAwLTA1LTE4ICBOZWlsIEJvb3RoICA8TmVpbEJAZWFydGhsaW5nLm5ldD4KCgkqIGNwcGluaXQuYyAoY3BwX3JlYWRlcl9pbml0KTogSW5pdGlhbGl6ZSBjb2xfYWRqdXN0IGFuZAoJZGVmYXVsdCB0YWIgc3RvcCBzaXplLgoJKG5vX251bSwgT1BUX2Z0YWJzdG9wKTogTmV3LgoJKGhhbmRsZV9vcHRpb24pOiBIYW5kbGUgImZ0YWJzdG9wPSIgY29tbWFuZC1saW5lIG9wdGlvbi4KCShwcmludF9oZWxwKTogRG9jdW1lbnQgaXQuCgkqIGNwcGxleC5jIChDT0xVTU4pOiBSZW1vdmUuCgkoaGFuZGxlX25ld2xpbmUpOiBSZXNldCBjb2xfYWRqdXN0LgoJKHNraXBfd2hpdGVzcGFjZSk6IFVwZGF0ZSBjb2xfYWRqdXN0IGFzIHRhYnMgZW5jb3VudGVyZWQuCgkoX2NwcF9sZXhfbGluZSk6IFVwZGF0ZSB0byB1c2UgY29sX2FkanVzdC4gIENhbGwKCXNraXBfd2hpdGVzcGFjZSBmb3IgYWxsIHdoaXRlc3BhY2UuCgkqIGNwcGxpYi5oIChzdHJ1Y3QgY3BwX29wdGlvbnMpOiBOZXcgbWVtYmVyIHRhYnN0b3AuCgkoc3RydWN0IGNwcF9yZWFkZXIpOiBOZXcgbWVtYmVyIGNvbF9hZGp1c3QuCgkoQ1BQX0JVRl9DT0wpOiBVcGRhdGUuCgkoQ1BQX0JVRl9DT0xVTU4pOiBOZXcuCgkqIGNwcC50ZXhpOiBEb2N1bWVudCAiLWZ0YWJzdG9wPSIgY29tbWFuZCBsaW5lIG9wdGlvbi4KCldlZCBNYXkgMTcgMTg6MTk6NDEgMjAwMCAgUGhpbGlwcGUgRGUgTXV5dGVyICA8cGhkbUBtYWNxZWwuYmU+CgoJKiBjb25maWd1cmUuaW4gKE5PX01JTlVTX0NfTUlOVVNfTyk6IE1hY3JvIG1hZGUgYXZhaWxhYmUgZm9yIEFDX09VVFBVVAoJZmlsZXMuCgkqIGNvbmZpZ3VyZTogUmVidWlsdC4KCldlZCBNYXkgMTcgMTg6MDY6MTIgMjAwMCAgSm9obiBEYXZpZCBBbmdsaW4gPGRhdmVAaGlhdWx5MS5oaWEubnJjLmNhPgoKCSogbWtsaWJnY2MuaW4gQWRkIG1pc3NpbmcgLURMJG5hbWUgd2hlbiBjb21waWxpbmcgbW9kdWxlcyBpbiBsaWJnY2MxLmMuCgoJKiB0cmVlLmMgKGJ1aWxkX2NvbW1vbl90cmVlX25vZGVzKTogRG8gbm90IGJ1aWxkIFRJIG5vZGVzIHVubGVzcwoJSE9TVF9CSVRTX1BFUl9XSURFX0lOVCBpcyA+PSA2NC4KCjIwMDAtMDUtMTcgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgoJKiBqdW1wLmMgKGp1bXBfb3B0aW1pemVfMSk6IFJlbW92ZSBpbmFjdGl2ZSBidXQgcmVhbCBpbnNucwoJaW4ganVtcC10by1uZXh0LWluc24gb3B0aW1pemF0aW9uLgoKMjAwMC0wNS0xNyAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAY3lnbnVzLmNvbT4KCgkqIHRvcGxldi5jIChyZXN0X29mX2NvbXBpbGF0aW9uKTogRG9uJ3QgY2FsbCBvcHRpbWl6ZV9tb2RlX3N3aXRjaGluZwoJdW5sZXNzIE9QVElNSVpFX01PREVfU1dJVENISU5HLiAgQ29uZGl0aW9uYWxseSBzZXQgbm9fbmV3X3BzZXVkb3MuCglEb24ndCBjYWxsIHJlY29tcHV0ZV9yZWdfdXNhZ2UgaWYgbm9fbmV3X3BzZXVkb3MgaXMgdHJ1ZS4KCSogbGNtLmMgKG9wdGltaXplX21vZGVfc3dpdGNoaW5nKTogTW92ZSBpZmRlZnMgb3V0c2lkZSBmdW5jdGlvbi4KCVJldHVybiB0cnVlIGlmIHdlIGRpZCB3b3JrOyB1cGRhdGUgZ2xvYmFsIGxpZmUgaW5mb3JtYXRpb24uCgkqIGJhc2ljLWJsb2NrLmggKG9wdGltaXplX21vZGVfc3dpdGNoaW5nKTogVXBkYXRlIGRlY2wuCgoyMDAwLTA1LTE3ICBOZWlsIEJvb3RoICA8bmVpbGJAZWFydGhsaW5nLm5ldD4KCgkqIGNwcGxleC5jIChleHBhbmRfbmFtZV9zcGFjZSk6IERvbid0IHVzZSBwdHJkaWZmX3QuCgoyMDAwLTA1LTE3ICBaYWNrIFdlaW5iZXJnICA8emFja0B3b2xlcnkuY3VtYi5vcmc+CgoJKiBjcHBsaWIuYzogTmV3IGZlYXR1cmUsICNwcmFnbWEgc3lzdGVtX2hlYWRlci4KCSogY3BwLnRleGk6IERvY3VtZW50IHNwZWNpYWwgdHJlYXRtZW50IG9mIHN5c3RlbSBoZWFkZXJzLCBhbmQKCXRoZSB2YXJpb3VzIG1lY2hhbmlzbXMgdG8gZ2V0IGEgaGVhZGVyIHRoYXQgc3BlY2lhbCB0cmVhdG1lbnQuCgoyMDAwLTA1LTE3ICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBzeXN0ZW0uaCAob2Zmc2V0b2YpOiBEZWZpbmUgYXQgdGhlIHZlcnkgZW5kLCB0byBlbnN1cmUgd2UgcHJlZmVyCgl0aGUgcGxhdGZvcm0ncyBkZWZpbml0aW9uIGlmIGF2YWlsYWJsZS4KCjIwMDAtMDUtMTYgIEJydWNlIEtvcmIgIDxia29yYkBnbnUub3JnPgoKCSogZml4aW5jL2ZpeGluY2wuYzogaW1wcm92ZSB0aGUgZGVidWcgZGlzcGxheXMsIGlnbm9yZSBTSUdQSVBFCgkqIGZpeGluYy9zZXJ2ZXIuYzogbGlrZXdpc2UKCSogZml4aW5jL2ZpeGZpeGVzLmMoIGNoYXJfbWFjcm9fZGVmX2ZpeCApOiBmaXggcmVnZXgKCSsgI2lmZGVmIGRlYnVnZ2luZyBjb2RlICsgdXNlICNkZWYgY29uc3RhbnQgZm9yCglzdWItcGF0dGVybiBjb3VudAoJKiBmaXhpbmMvaW5jbGhhY2suZGVmKCBocHV4MTFfZmFic2YgKTogS2VlcCBIUC1VWCAxMSBmcm9tIHN0b21waW5nCglvbiBDKysgbWF0aCBuYW1lc3BhY2UKCjIwMDAtMDUtMTcgIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIGZpeGluYy9maXhmaXhlcy5jIChjaGFyX21hY3JvX3VzZV9maXgsIGNoYXJfbWFjcm9fZGVmX2ZpeCk6CglEb24ndCBjaGVjayB0aGUgcmV0dXJuIHZhbHVlIG9mIHNwcmludGYuICBVc2UgYXNwcmludGYgdG8gYXZvaWQKCWJ1ZmZlciBvdmVyZmxvd3MuCgpXZWQgTWF5IDE3IDE3OjI3OjQ0IDIwMDAgIEFuZHJldyBDYWduZXkgIDxjYWduZXlAYjEuY3lnbnVzLmNvbT4KCgkqIGZsYWdzLmggKHdhcm5fdW51c2VkX2Z1bmN0aW9uLCB3YXJuX3VudXNlZF9sYWJlbCwKCXdhcm5fdW51c2VkX3BhcmFtZXRlciwgd2Fybl91bnVzZWRfdmFyaWFibGUsIHdhcm5fdW51c2VkX3ZhbHVlKToKCVJlcGxhY2UgYGB3YXJuX3VudXNlZCcnLgoJKHNldF9XdW51c2VkKTogQWRkIGRlY2xhcmF0aW9uLgoJKiB0b3BsZXYuYyAoc2V0X1d1bnVzZWQpOiBOZXcgZnVuY3Rpb24uCgkod2Fybl91bnVzZWRfZnVuY3Rpb24sIHdhcm5fdW51c2VkX2xhYmVsLCB3YXJuX3VudXNlZF9wYXJhbWV0ZXIsCgl3YXJuX3VudXNlZF92YXJpYWJsZSwgd2Fybl91bnVzZWRfdmFsdWUpOiBOZXcgdmFyaWFibGVzLgoJKFdfb3B0aW9ucyk6IEFkZCAtV3VudXNlZC1mdW5jdGlvbiwgLVd1bnVzZWQtZnVuY3Rpb24sCgktV3VudXNlZC1sYWJlbCwgLVd1bnVzZWQtcGFyYW1ldGVyLCAtV3VudXNlZC12YXJpYWJsZSBhbmQKCS1XdW51c2VkLXZhbHVlLiAgRGVsZXRlIC1XdW51c2VkLiAgSGFuZGxlZCBpbiBkZWNvZGVfV19vcHRpb24uCgoJKiB0b3BsZXYuYyAoZGVjb2RlX1dfb3B0aW9uKTogVXBkYXRlIC1XdW51c2VkIGZsYWdzIGJ5IGNhbGxpbmcKCXNldF9XdW51c2VkLgoJKiBjLWRlY2wuYyAoY19kZWNvZGVfb3B0aW9uKTogRGl0dG8gZm9yIC1XYWxsLgoKCSogc3RtdC5jIChleHBhbmRfZXhwcl9zdG10LCBleHBhbmRfZXhwcl9zdG10LAoJd2Fybl9hYm91dF91bnVzZWRfdmFyaWFibGVzKTogUmVwbGFjZSB3YXJuX3VudXNlZCB3aXRoIG1vcmUKCWV4cGxpY2l0IHdhcm5fdW51c2VkX3ZhbHVlIGV0LmFsLgoJKiBmdW5jdGlvbi5jIChleHBhbmRfZnVuY3Rpb25fZW5kKTogRGl0dG8uCgkqIGMtdHlwZWNrLmMgKGludGVybmFsX2J1aWxkX2NvbXBvdW5kX2V4cHIsCglpbnRlcm5hbF9idWlsZF9jb21wb3VuZF9leHByKTogRGl0dG8uCgkqIGMtZGVjbC5jIChwb3BsZXZlbCwgcG9wX2xhYmVsX2xldmVsKTogRGl0dG8uCgkqIHRvcGxldi5jIChjaGVja19nbG9iYWxfZGVjbGFyYXRpb25zKTogUmVwbGFjZSB3YXJuX3VudXNlZCB3aXRoCgljaGVjayBmb3IgZWl0aGVyIHdhcm5fdW51c2VkX2Z1bmN0aW9uIG9yIHdhcm5fdW51c2VkX3ZhcmlhYmxlLgoKCSogZ2NjLjEsIGludm9rZS50ZXhpIChXYXJuaW5nIE9wdGlvbnMpOiBEb2N1bWVudAoJLVd1bnVzZWQtZnVuY3Rpb24sIC1XdW51c2VkLWZ1bmN0aW9uLCAtV3VudXNlZC1sYWJlbCwKCS1XdW51c2VkLXBhcmFtZXRlciwgLVd1bnVzZWQtdmFyaWFibGUgYW5kIC1XdW51c2VkLXZhbHVlIG9wdGlvbnMuCgpXZWQgTWF5IDE3IDEwOjI4OjEyIDIwMDAgIFBoaWxpcHBlIERlIE11eXRlciAgPHBoZG1AbWFjcWVsLmJlPgoKCSogbWtsaWJnY2MuaW4gKGJ1aWxkaW5nIGxpYmdjYzEpIFtYbGliZ2NjMS5hXTogRmluZCBsaWJnY2MxLmMgaW4KCSQoc3JjZGlyKSwgbm90IGluIHRoZSBjdXJyZW50IGRpcmVjdG9yeS4KCjIwMDAtMDUtMTYgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgoJKiBjb25maWcvaWE2NC9jcnRiZWdpbi5hc20gKF9fZHNvX2hhbmRsZSk6IE1hcmsgaGlkZGVuIGlmIHRoZQoJYXNzZW1ibGVyIHN1cHBvcnRzIGl0LgoJKC5maW5pLCAuaW5pdCk6IFVzZSBhIGdwLXJlbGF0aXZlIGluZGlyZWN0IGNhbGwuCgkoX19kb19nbG9iYWxfZHRvcnNfYXV4KTogUHJlc2VydmUgdGhlIGdwOyByZWJ1bmRsZS4KCShfX2RvX2ZyYW1lX3NldHVwKTogTGlrZXdpc2UuCgkqIGNvbmZpZy9pYTY0L2NydGVuZC5hc20gKC5JQV82NC51bndpbmQpOiBEb24ndCB0ZXJtaW5hdGUgd2l0aCAtMS4KCSguaW5pdCk6IFVzZSBhIGdwLXJlbGF0aXZlIGluZGlyZWN0IGNhbGwuCgkoX19kb19nbG9iYWxfY3RvcnNfYXV4KTogUHJlc2VydmUgdGhlIGdwLgoKMjAwMC0wNS0xNiAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAY3lnbnVzLmNvbT4KCgkqIGZsb3cuYyAoY29tbWl0X29uZV9lZGdlX2luc2VydGlvbik6IEJlIHByZXBhcmVkIGZvciBhIHJldHVybgoJaW5zbiB0byBiZSBpbnNlcnRlZCBvbiB0aGUgZWRnZSB3aXRoIGEgbm9ybWFsIGp1bXAuCgkqIGp1bXAuYyAoanVtcF9vcHRpbWl6ZV8xKTogRG9uJ3QgbG9vayB0byBjcmVhdGUgcmV0dXJuIGlzbnMuCgoJKiBmbG93LmMgKGZsb3dfZGVsZXRlX2luc24pOiBEb24ndCBhZGp1c3QgcmVmZXJlbmNlIGNvdW50IG9mIG5vdGVzLgoJKiBqdW1wLmMgKGp1bXBfb3B0aW1pemVfMSk6IExpa2V3aXNlLgoJKHJldHVybmp1bXBfcCk6IFZlcmlmeSB0aGUgYXJndW1lbnQgaXMgYSBKVU1QX0lOU04uCgkqIHJ0bC5kZWYgKE5PVEUpOiBBZGQgNXRoIGVsZW1lbnQgZm9yIE5PVEVfSU5TTl9ERUxFVEVEX0xBQkVMLgoKMjAwMC0wNS0xNiAgTmljayBDbGlmdG9uICA8bmlja2NAY3lnbnVzLmNvbT4KCgkqIGNvbmZpZy9tMzJyL20zMnIuYyAoc21hbGxfaW5zbl9wKTogVXNlIElOU05fUCgpIHRvIHJlcGxhY2UKCUdFVF9SVFhfQ0xBU1MgKEdFVF9DT0RFICgpKSA9PSAnaScuCgkobGFyZ2VfaW5zbl9wKTogRGl0dG8uCgkobTMycl9pc19pbnNuKTogTmV3IGZ1bmN0aW9uOiBSZXR1cm4gdHJ1ZSBpZiB0aGUgaW5zbiBjb250YWlucwoJYW4gZXhlY3V0YWJsZSBpbnN0cnVjdGlvbi4KCShtMzJyX2FkanVzdF9pbnNuKTogVXNlIG0zMnJfaXNfaW5zbi4KCShtMzJyX3NjaGVkX3Jlb3JkZXIpOiBVc2UgbTMycl9pc19pbnNuLgoJKG0zMnJfc2NoZWRfdmFyaWFibGVfaXNzdWUpOiBVc2UgbTMycl9pc19pbnNuLgoKMjAwMC0wNS0xNiAgRnJhbnogU2lybCAgPEZyYW56LlNpcmwta2VybmVsQGxhdXRlcmJhY2guY29tPgoKCSogcnM2MDAwL3JzNjAwMC5jIChyczYwMDBfc2VsZWN0X3NlY3Rpb24pOiBUcmVhdCBDT05TVFJVQ1RPUiBsaWtlCglWQVJfREVDTC4KCgkqIHJzNjAwMC9zeXN2NC5oIChBU01fT1VUUFVUX0RXQVJGX0FERFIpOiBEZWxldGUgdW51c2VkIHZhcmlhYmxlLgoKCSogcnM2MDAwL3N5c3Y0LmggKENQUF9PU19MSU5VWF9TUEVDKTogRGVmaW5lIF9fdW5peCBhbmQgX19saW51eAoJYWNjb3JkaW5nIHRvIGdpdmVuIG9wdGlvbnMuCgpUdWUgTWF5IDE2IDEyOjE3OjMxIDIwMDAgIEplZmZyZXkgQSBMYXcgIChsYXdAY3lnbnVzLmNvbSkKCgkqIG1uMTAyMDAuaCAoUFJFRkVSUkVEX1JFTE9BRF9DTEFTUyk6IERvIG5vdCBwcmVmZXIgREFUQV9SRUdTCglpZiBYIGhhcyBWT0lEbW9kZSBlaXRoZXIuCgkoTElNSVRfUkVMT0FEX0NMQVNTKTogU2ltaWxhcmx5LgoKCSogbW4xMDIwMC5tZCAoaW5kaXJlY3RfanVtcCwgdGFibGVqdW1wKTogVXNlICJyZWdpc3Rlcl9vcGVyYW5kIiwKCW5vdCAiZ2VuZXJhbF9vcGVyYW5kIiB0byBtYXRjaCB0aGUgcHJvY2Vzc29yJ3MgY2FwYWJpbGl0aWVzLgoKMjAwMC0wNS0xNiAgQnJ1Y2UgS29yYiAgPGJrb3JiQGdudS5vcmc+CgoJKiBmaXhpbmMvUkVBRE1FOiAgY29ycmVjdGVkIHJldHVybiBhZGRyZXNzCgkqIGZpeGluYy9jaGVjay5kaWZmOiAgcmVnZW5lcmF0ZSwgbm93IHRoYXQgdGVzdCB3b3JrcwoJKiBmaXhpbmMvZml4Zml4ZXMuYyhmb3JtYXRfZml4LGZvcm1hdF93cml0ZSk6IHJlZm9ybWF0dGVkCgkoY2hhcl9tYWNyb19kZWZfZml4LGNoYXJfbWFjcm9fdXNlX2ZpeCk6IGNvcnJlY3RlZCBhbmQKCXJld3JvdGUgdG8gdXNlIHJlZ2V4IHRvIHBhcnNlIHRoZSB0ZXh0CgkqIGZpeGluYy9pbmNsaGFjay5kZWY6IG1vcmUgdGVzdGluZwoJKiBmaXhpbmMvZml4aW5jbC54OiAgcmVnZW5lcmF0ZWQKCgkqIGZpeGluYy9pbmNsaGFjay5kZWY6IGFkZGVkIHNldmVyYWwgInRlc3RfdGV4dCIgYXR0cmlidXRlcwoJY2hhbmdlZCBzZXZlcmFsIGZpeGVzIHRvIHVzZSBgY19maXggPSBmb3JtYXQnCglyZS1hbHBoYWJldGl6ZWQgdGhlIGZpeGVzCgoJKiBmaXhpbmMvY2hlY2suZGlmZjogcmVnZW5lcmF0ZQoJKiBmaXhpbmMvZml4aW5jbC54OiByZWdlbmVyYXRlCgkqIGZpeGluYy9jaGVjay50cGw6IGFkZGVkIGBzcGFyYycgYW5kIGBuZXRpbmV0JyB0byB0aGUgbGlzdAoJb2YgY3JlYXRlZCBkaXJzCgoKMjAwMC0wNS0xNiAgQWxleGFuZHJlIE9saXZhICA8YW9saXZhQGN5Z251cy5jb20+CgoJKiBjb25maWcvbW4xMDMwMC9tbjEwMzAwLmggKEFTTV9PVVRQVVRfRFdBUkYyX0FERFJfQ09OU1QpOiBSZW1vdmUuCgoyMDAwLTA1LTE1ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEBjeWdudXMuY29tPgoKCSogdG9wbGV2LmMgKHJlc3Rfb2ZfY29tcGlsYXRpb24pOiBSdW4gZnVsbCBqdW1wIHBhc3MgYmVmb3JlCglmaW5kX2Jhc2ljX2Jsb2NrcyBvZiBmbG93Mi4KCjIwMDAtMDUtMTUgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgoJKiBqdW1wLmM6IEZpeCB0eXBvcyBhbmQgY2xhcmlmeSBjb21tZW50YXJ5IGZyb20gbGFzdCBjaGFuZ2UuCgkoYW55X2NvbmRqdW1wX3ApOiBWZXJpZnkgU0VUX1NSQyBpcyBhbiBJRl9USEVOX0VMU0UuCgkoc2FmZV90b19yZW1vdmVfanVtcF9wKTogUmVtb3ZlLgoJKGNvbmRqdW1wX2xhYmVsKTogVXNlIHBjX3NldC4KCjIwMDAtMDUtMTUgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgoJKiBpZmN2dC5jIChjb25kX2V4ZWNfcHJvY2Vzc19pbnNucyk6IERyb3AgVVNFIGFuZCBDTE9CQkVSIGluc25zCgl0aGF0IGdldCBpbiB0aGUgd2F5IGFmdGVyIHJlbG9hZC4KCShjb25kX2V4ZWNfcHJvY2Vzc19pZl9ibG9jayk6IFNraXAgYSBsYWJlbCBoZWFkaW5nIFRIRU4gYmxvY2suCgoyMDAwLTA1LTE1ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEBjeWdudXMuY29tPgoKCSogdmFyYXNtLmMgKG91dHB1dF9jb25zdGFudF9wb29sKTogQWJvcnQgaW5zdGVhZCBvZiBjb252ZXJ0aW5nCgkoaW1wcm9wZXJseSkgZGVsZXRlZCBsYWJlbHMgdG8gemVyby4KCjIwMDAtMDUtMTYgIE5laWwgQm9vdGggIDxOZWlsQkBlYXJ0aGxpbmcubmV0PgoKCSogY3BwbGV4LmMgKHBhcnNlX3N0cmluZzIpOiBVcGRhdGUgY29tbWVudC4KCShjcHBfbGV4X2xpbmUpOiBObyBzcGVjaWFsIGFzc2VydGlvbiB0cmVhdG1lbnQgZm9yICcoJy4KCSogY3BwbGliLmMgKERJUkVDVElWRV9UQUJMRSk6IFJlbW92ZSBTWU5UQVhfQVNTRVJULgoJKiBjcHBsaWIuaCAoU1lOVEFYX0FTU0VSVCk6IFJlbW92ZS4KCk1vbiBNYXkgMTUgMjE6NDU6MzYgTUVUIERTVCAyMDAwICBKYW4gSHViaWNrYSAgPGpoQHN1c2UuY3o+CgoJKiBqdW1wLmMgKGNvbmRqdW1wX3ApOiAgTWFyayBhcyBkZXByZWFjaGVkLgoJKGFueV9jb25kdW1wX3ApOiBOZXcuCgkoYW55X3VuY29uZHVtcF9wKTogTmV3LgoJKHBjX3NldCk6IE5ldy4KCShzYWZlX3RvX3JlbW92ZV9qdW1wX3ApOiBOZXcuCgkqIHJ0bC5oIChhbnlfY29uZHVtcF9wLCBhbnlfdW5jb25kanVtcF9wLCBwY19zZXQKCXNhZmVfdG9fcmVtb3ZlX2p1bXBfcCk6IERlY2xhcmUuCgpNb24gTWF5IDE1IDIxOjA3OjIwIE1FVCBEU1QgMjAwMCAgSmFuIEh1Ymlja2EgIDxqaEBzdXNlLmN6PgoKCSogY2FsbHMuYzogUmUtaW5zdGFsbCBib3RoIHBhdGNoZXMgcmV2ZXJ0ZWQgYnkgbGFzdCBwYXRjaC4KCShzdHJ1Y3QgYXJnX2RhdGEpOiBOZXcgZmllbGQgdGFpbF9jYWxsX3JlZy4KCShpbml0aWFsaXplX2FyZ3VtZW50X2luZm9ybWF0aW9uKTogSW5pdGlhbGl6ZSB0YWlsX2NhbGxfcmVnCgkobG9hZF9yZWdpc3Rlcl9wYXJhbWV0ZXJzKTogTmV3IGFyZ3VtZW50IGZsYWdzLCB1c2UKCXRhaWxfY2FsbF9yZWcgd2hlbiBlbWl0aW5nIHRhaWwgY2FsbCBzZXF1ZW5jZS4KCShleHBhbmRfY2FsbCk6IFVwZGF0ZSBjYWxsIG9mIGxvYWRfcmVnaXN0ZXJfcGFyYW1ldGVyczsKCWNvcHkgdW5hZGp1c3RlZF9hcmdzX3NpemUgdG8gYWRqdXN0ZWRfYXJnc19zaXplLgoKTW9uIE1heSAxNSAxOTowMTo0MiBNRVQgRFNUIDIwMDAgIEphbiBIdWJpY2thICA8amhAc3VzZS5jej4KCgkqIGxvb3AuYyAoc2Nhbl9sb29wLCBzdHJlbmd0aF9yZWR1Y2UsIGxvb3Bfb3B0aW1pemUpOiBDaGFuZ2UgdW5yb2xsX3AKCWFuZCBiY3RfcCBwYXJhbWV0ZXJzIHRvIGZsYWdzLgoJKiBsb29wLmggKExPT1BfVU5ST0xMLCBMT09QX0JDVCk6IE5ldyBjb25zdGFudHMuCgkqIHJ0bC5oIChsb29wX29wdGltaXplKTogVXBkYXRlIHByb3RvdHlwZS4KCSogdG9wbGV2LmMgKHJlc3Rfb2ZfY29tcGlsYXRpb24pOiBVcGRhdGUgY2FsbCBvZiBsb29wX29wdGltaXplLgoKMjAwMC0wNS0xNSAgSmFrdWIgSmVsaW5layAgPGpha3ViQHJlZGhhdC5jb20+CgoJKiBjYWxscy5jIChleHBhbmRfY2FsbCk6IE1vdmUgZXhwYW5kX3N0YXJ0X3RhcmdldF90ZW1wcyBjYWxsIGFmdGVyCglzdGFydF9zZXF1ZW5jZSgpLgoKMjAwMC0wNS0xNSAgTmVpbCBCb290aCAgPE5laWxCQGVhcnRobGluZy5uZXQ+CgoJKiBjcHBoYXNoLmMgKHRyYWRfc3RyaW5naWZ5LCB3YXJuX3RyYWRfc3RyaW5naWZ5LAoJY29sbGVjdF9wYXJhbXMpOiBNYWtlIHNvbWUgcG9pbnRlcnMgcG9pbnRlcnMgdG8gY29uc3QuCgkqIGNwcGxleC5jIChhdXRvX2V4cGFuZF9uYW1lX3NwYWNlKSBHdWFyYW50ZWVkIHRvIGFsd2F5cwoJZXhwYW5kIGJ5IGF0IGxlYXN0IG9uZSBjaGFyYWN0ZXIuCgkoU1BFTExfQ0hBUiwgU1BFTExfTk9ORSk6IFRlbXBvcmFyaWx5IHJldmVyc2Ugb3JkZXIuCgkoc3RydWN0IHRva2VuX3NwZWxsaW5nKTogVXNlIGNvbnN0IFVfQ0hBUiAqIHJhdGhlciB0aGFuIFBUUi4KCShleHBhbmRfbmFtZV9zcGFjZSk6IEZpeCB1cCB0b2tlbiBwb2ludGVycyBpZiBuYW1lIHNwYWNlCglpcyBtb3ZlZCB3aGVuIGV4cGFuZGluZy4KCShJTklUX05BTUUsIGNwcF9zY2FuX2xpbmUsIHBhcnNlX25hbWUsIHBhcnNlX251bWJlciwKCXBhcnNlX3N0cmluZzIsIHNhdmVfY29tbWVudCwgc3BlbGxfdG9rZW4sIGNwcF9vdXRwdXRfbGlzdCk6CglVcGRhdGUgc28gdGhlIHJvdXRpbmVzIGhhbmRsZSB0b2tlbnMgd2l0aCBhIGRpcmVjdCBwb2ludGVyIHRvCgl0aGVpciB0ZXh0LCByYXRoZXIgdGhhbiBhbiBvZmZzZXQgaW50byB0aGUgdG9rZW4ncyBsaXN0J3MgbmFtZWJ1Zi4KCShfY3BwX2xleF9saW5lKTogUmVhcnJhbmdlIGZvciBjbGFyaXR5LgoKCSogY3BwbGliLmMgKF9jcHBfY2hlY2tfZGlyZWN0aXZlKTogU2ltaWxhcmx5LgoJKGRvX2RlZmluZSk6IE1ha2UgU1lNIGEgcG9pbnRlciB0byBjb25zdC4KCSogY3BwbGliLmggKHN0cnVjdCBjcHBfbmFtZSk6IFJlcGxhY2Ugb2Zmc2V0IHdpdGggZGlyZWN0IHBvaW50ZXIuCgkoQ1BQX0lOVCwgQ1BQX0ZMT0FUKTogU3BlbGxpbmcgdHlwZSBzaG91bGQgYmUgU1BFTExfSURFTlQuCgkoVE9LX09GRlNFVCk6IERlbGV0ZS4KCShUT0tfTkFNRSk6IFVwZGF0ZS4KCjIwMDAtMDUtMTQgIEdlb2ZmcmV5IEtlYXRpbmcgIDxnZW9mZmtAY3lnbnVzLmNvbT4KCgkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLmggKFJFVFVSTl9BRERSRVNTX09GRlNFVCk6IENvcnJlY3QgZm9yCgk2NC1iaXQgQUJJLgoKCSogY29uZmlnL3JzNjAwMC9yczYwMDAuYyAobG9naWNhbF9vcGVyYW5kKTogUmV3cml0ZSB0byB0YWtlIE1PREUKCWludG8gYWNjb3VudC4KCShsb2dpY2FsX3Vfb3BlcmFuZCk6IERlbGV0ZS4KCShub25fbG9naWNhbF9jaW50X29wZXJhbmQpOiBSZXdyaXRlIHRvIHRha2UgTU9ERSBpbnRvIGFjY291bnQuCgkobm9uX2xvZ2ljYWxfdV9jaW50X29wZXJhbmQpOiBEZWxldGUuCgkoYm9vbGVhbl9vcGVyYXRvcik6IE5ldyBmdW5jdGlvbi4KCShwcmludF9vcGVyYW5kKTogQWRkIG5ldyAlcSBvcGVyYW5kLgoJKiBjb25maWcvcnM2MDAwL3JzNjAwMC5oIChQUkVESUNBVEVfQ09ERVMpOiBBZGQgYm9vbGVhbl9vcGVyYXRvciwKCXJlbW92ZSBsb2dpY2FsX3Vfb3BlcmFuZCBhbmQgbm9uX2xvZ2ljYWxfdV9jaW50X29wZXJhbmQsCgl1cGRhdGUgbG9naWNhbF9vcGVyYW5kIGFuZCBub25fbG9naWNhbF9jaW50X29wZXJhbmQuCgkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLm1kOiBSZXdyaXRlIHRoZSBwYXR0ZXJucyBmb3IgcGVyZm9ybWluZwoJbG9naWNhbCBvcGVyYXRpb25zIHRvIHVzZSAlcS4KCgkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLm1kIChtb3ZzaSk6IERvbid0IG1vZGlmeSBSVEwgaW4tcGxhY2UuCgkobW92ZGkpOiBNYWtlIHNpbWlsYXIgdG8gbW92c2kuCgkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLmggKEFTTV9PVVRQVVRfU1BFQ0lBTF9QT09MX0VOVFJZX1ApOiBUaGVyZQoJaXMgbm8gc3VjaCB0aGluZyBhcyBhIERJbW9kZSBDT05TVF9ET1VCTEUuCgkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLmMgKG91dHB1dF90b2MpOiBMaWtld2lzZS4KCgkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLmMgKG91dHB1dF9jYnJhbmNoKTogRG9uJ3Qgb3V0cHV0IHByZWRpY3Rpb24KCWNvZGVzIHdoZW4gb2xkIG1uZW1vbmljcyBhcmUgaW4gdXNlLiAgUHJpbnQgcmVnaXN0ZXIgbmFtZXMKCWZvciBjYyByZWdpc3RlcnMgd2hlbiByZXF1ZXN0ZWQuCgoJKiBvcHRhYnMuYyAoZXhwYW5kX2Zsb2F0KTogRG9uJ3QgYWxsb3cgbW9kZSB3aWRlbmluZyB0aGF0IGNhdXNlcwoJZG91YmxlIHJvdW5kaW5nLgoKCSogaW52b2tlLnRleGkgKFJTLzYwMDAgYW5kIFBvd2VyUEMgT3B0aW9ucyk6IFVwZGF0ZSAtbTY0Ly1tMzIKCWZsYWdzIHRvIHRoZWlyIGN1cnJlbnQgbmFtZXMgLW1haXg2NCBhbmQgLW1haXgzMi4KCjIwMDAtMDUtMTQgIEJydWNlIEtvcmIgIDxia29yYkBnbnUub3JnPgoKCSogZml4aW5jL2ZpeGZpeGVzLmMod3JhcF9maXgpOiBuZXcgZml4IC0gaW5zZXJ0cyB0ZXh0IGJlZm9yZQoJYW5kL29yIGFmdGVyIGN1cnJlbnQgdGV4dCBvZiBmaWxlCgkqIGZpeGluYy9maXhsaWIuYyhtdXN0X21hbGxvYyk6CgkqIGZpeGluYy9maXhsaWIuaChtdXN0X21hbGxvYyk6ICsgcmVmb3JtYXR0aW5nCgkqIGZpeGluYy9pbmNsaGFjay5kZWY6IHJlcGxhY2UgdGhlICIxaSIgYW5kICIkYSIgc2VkIGNvbW1hbmRzCgl3aXRoIHVzYWdlcyBvZiBgYGNfZml4ID0gd3JhcDsnJwoJQWRkIHNldmVyYWwgdGVzdHMgYW5kIHVzZSB0aGUgYGBjX2ZpeCA9IGZvcm1hdCcnIGZpeGVyIG1vcmUuCgkqIGZpeGluYy9maXhpbmNsLng6IHJlZ2VuCgkqIGZpeGluYy9jaGVjay5kaWZmOiByZWdlbgoJKiBmaXhpbmMvY2hlY2sudHBsOiBlbWl0IHRoZSBhc3NvY2lhdGVkIGhlYWRlciB3aXRoIHRoZSBtaXNzaW5nCgl0ZXN0IG1lc3NhZ2UKClN1biBNYXkgMTQgMTc6NTg6NTkgMjAwMCAgSGFucy1QZXRlciBOaWxzc29uICA8aHBAYXhpcy5jb20+CgoJKiBta2xpYmdjYy5pbiAoYnVpbGRpbmcgbGliZ2NjMSkgW1hsaWJnY2MxLmFdOiBEbyBub3QgdXNlIHVuc2V0Cgl2YXJpYWJsZXMgJHNyYyBhbmQgJGRzdC4KCjIwMDAtMDUtMTMgIEdhYnJpZWwgRG9zIFJlaXMgPGdkckBjb2Rlc291cmNlcnkuY29tPgoKCSogZGlhZ25vc3RpYy5oIChESUFHTk9TVElDU19TSE9XX1BSRUZJWF9PTkNFKTogTmV3IG1hY3JvLgoJKERJQUdOT1NUSUNTX1NIT1dfUFJFRklYX05FVkVSKTogTGlrZXdpc2UuCgkoRElBR05PU1RJQ1NfU0hPV19QUkVGSVhfRVZFUllfTElORSk6IExpa2V3aXNlLgoJKHN0cnVjdCBvdXRwdXRfYnVmZmVyOiBlbWl0dGVkX3ByZWZpeF9wLCBwcmVmaXhpbmdfcnVsZSk6IE5ldwoJZmllbGRzLgoJKHNldF9tZXNzYWdlX3ByZWZpeGluZ19ydWxlKTogRGVjbGFyZS4KCgkqIGRpYWdub3N0aWMuYzogKGN1cnJlbnRfcHJlZml4aW5nX3J1bGUpOiBOZXcgdmFyaWFibGUuCgkoc2V0X21lc3NhZ2VfcHJlZml4aW5nX3J1bGUpOiBEZWZpbmUuCgkob3V0cHV0X3NldF9wcmVmaXgpOiBBZGp1c3QgYnVmZmVyLT5lbWl0dGVkX3ByZWZpeF9wLgoJKGluaXRfb3V0cHV0X2J1ZmZlcik6IEFkanVzdCBJbml0aWFsaXphdGlvbi4KCShvdXRwdXRfZW1pdF9wcmVmaXgpOiBSZXdyaXRlLiAgVGFrZSBwcmVmaXhpbmcgcnVsZXMgaW50byBhY2NvdW50LgoKU2F0IE1heSAxMyAxMTowNTo0NyAyMDAwICBQaGlsaXBwZSBEZSBNdXl0ZXIgIDxwaGRtQG1hY3FlbC5iZT4KCgkqIGlmY3Z0LmMgKGlmX2NvbnZlcnQpOiBEbyBub3QgZnJlZSBOVUxMLgoKMjAwMC0wNS0xMiAgSC5KLiBMdSAgKGhqbEBnbnUub3JnKQoKCSogZ3Roci1kY2UuaDogQWRkIHN1cHBvcnQgZm9yIGxpYm9iamMuCgkqIGd0aHItcG9zaXguaDogTGlrZXdpc2UuCgkqIGd0aHItc29sYXJpcy5oOiBMaWtld2lzZS4KCSogZ3Roci12eHdvcmtzLmg6IExpa2V3aXNlLgoJKiBndGhyLXNpbmdsZS5oOiBMaWtld2lzZS4KCSogZ3Roci13aW4zMi5oOiBMaWtld2lzZS4KCjIwMDAtMDUtMTIgIE5pY2sgQ2xpZnRvbiAgPG5pY2tjQGN5Z251cy5jb20+CgoJKiBjb25maWcvZnIzMC9mcjMwLmMgKGZyMzBfbW92ZV9kb3VibGUpOiBOZXcgZnVuY3Rpb246ICBFbWl0IGNvZGUKCXRvIG1vdmUgYSBkb3VibGUgd29yZCB2YWx1ZS4KCShkaV9vcGVyYW5kKTogTmV3IGZ1bmN0aW9uOiBSZXR1cm4gdHJ1ZSBpZiB0aGUgb3BlcmFuZCBpcyBzdWl0YmFsZQoJZm9yIGEgZG91YmxlIHdvcmQgbW92ZSBvcGVyYXRpb24uCgkobm9uaW1tZWRpYXRlX2RpX29wZXJhbmQpOiBOZXcgZnVuY3Rpb246IFJldHVybiB0cnVlIGlmIHRoZQoJb3BlcmFuZCBpcyBhIERJbW9kZSByZWdpc3RlciBvciBNRU0uCgoJKiBjb25maWcvZnIzMC9mcjMwLmggKFBSRURJQ0FURV9DT0RFUyk6IEFkZCBkaV9vcGVyYW5kIGFuZAoJbm9uaW1tZWRpYXRlX2RpX29wZXJhbmQuCgoJKiBjb25maWcvZnIzMC9mcjMwLXByb3Rvcy5oIEFkZCBmcjMwX21vdmVfZG91YmxlLCBkaV9vcGVyYW5kLCBhbmQKCW5vbmltbWVkaWF0ZV9kaV9vcGVyYW5kLgoKCSogY29uZmlnL2ZyMzAvZnIzMC5tZCAobW92ZGkpOiBOZXcgcGF0dGVybi4gIFJlcXVpcmVkIGJlY2F1c2UKCW90aGVyIHBhdHRlcm5zIGdlbmVyYXRlIERJbW9kZSByZXN1bHRzLgoJKG1vdmRpX2luc24pOiBOZXcgcGF0dGVybi4KCjIwMDAtMDUtMTIgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgoJKiBjb25maWcvYWxwaGEvYWxwaGEuYyAoc3RydWN0IHNoYWRvd19zdW1tYXJ5KTogRGVmaW5lCgliaXRmaWVsZHMgYXMgdHlwZSB1bnNpZ25lZCBpbnQuCgpTYXQgTWF5IDEzIDAwOjA5OjU5IDIwMDAgIERlbmlzIENoZXJ0eWtvdiAgPGRlbmlzY0BvdmVydGEucnU+CgoJKiBjb25maWcvYXZyL3QtYXZyOiBBZGRlZCBkZWZpbml0aW9uIG9mIEZMT0FUIHdoaWxlIGdlbmVyYXRlcwoJZnAtYml0LmMKCgkqIGNvbmZpZy9hdnIvYXZyLm1kOiBgTkVYVF9JTlNOIChpbnNuKScgc3Vic3RpdHV0ZWQgdG8gYGluc24nIGluCglwZWVwaG9sZXMgZm9yIHRzdCtqdW1wID0gc2Jycy9zYnJjIG9wdGltaXphdGlvbi4KCkZyeSBNYXkgMTIgMjA6MDM6MDAgQ0VTVCAyMDAwICBKYW4gSHViaWNrYSAgPGpoQHN1c2UuY3o+CgoJKiBleHByLmMgKGVtaXRfcHVzaF9pbnNuKTogRG8gbm90IGFkanVzdCBzdGFjayBwb2ludGVyIHdoZW4KCXByZWFsbG9jYXRpbmcuCgpGcmkgTWF5IDEyIDE5OjAzOjU4IDIwMDAgIFBoaWxpcHBlIERlIE11eXRlciAgPHBoZG1AbWFjcWVsLmJlPgoKCSogZ2djLXNpbXBsZS5jIChvZmZzZXRvZik6IE1hY3JvIGZhbGxiYWNrIGRlZmluaXRpb24gbW92ZWQgZnJvbSBoZXJlIC4uCgkqIHN5c3RlbS5oIChvZmZzZXRvZik6IC4uLiB0byBoZXJlLgoKMjAwMC0wNS0xMiAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAY3lnbnVzLmNvbT4KCgkqIE1ha2VmaWxlLmluIChmaW5hbC5vKTogRGVwZW5kIG9uIEJBU0lDX0JMT0NLX0guCgkqIGZpbmFsLmMgKGZpbmFsX2VuZF9mdW5jdGlvbik6IFVzZSBhcHBfZGlzYWJsZS4gIFJlYXJyYW5nZSBub3RlCgloYW5kbGluZyBpbnRvIGEgc3dpdGNoLiAgRW1pdCBkZWxldGVkIGxhYmVscy4KCShvdXRwdXRfYXNtX2xhYmVsKTogR2VuZXJhdGUgbGFiZWwgc3RyaW5ncyBmb3IgZGVsZXRlZCBsYWJlbHMuCgkqIGZsb3cuYyAodGFpbF9yZWN1cnNpb25fbGFiZWxfbGlzdCk6IE5ldy4KCShmaW5kX2Jhc2ljX2Jsb2Nrc18xKTogU2V0IGxhYmVsX3ZhbHVlX2xpc3QgZGlyZWN0bHkuICBDb2xsZWN0IGxpc3QKCW9mIHRhaWwgcmVjdXJzaW9uIGxhYmVscyBmcm9tIGNhbGxfcGxhY2Vob2xkZXJzLiAgRG9uJ3QgYWRkIGRlbGV0ZWQKCWxhYmVscyB0byB0aGUgbGFiZWwgdmFsdWUgbGlzdC4KCShjbGVhbnVwX2NmZyk6IFVzZSBmcmVlX0VYUFJfTElTVF9saXN0LgoJKGZsb3dfZGVsZXRlX2luc25fY2hhaW4pOiBUdXJuIG5vbi1yZW1vdmFibGUgbGFiZWxzIGludG8gbm90ZXMuCgkoZmxvd19kZWxldGVfYmxvY2spOiBEb24ndCBkaXNhYmxlIGRlbGV0aW5nIHRoZSBibG9jayBiZWNhdXNlIG9mCglhIG5vbi1yZW1vdmFibGUgbGFiZWwuCgkodGFpbF9yZWN1cnNpb25fbGFiZWxfcCk6IE5ldy4KCShtZXJnZV9ibG9ja3NfbW92ZV9wcmVkZWNlc3Nvcl9ub2p1bXBzKTogRG9uJ3QgZGlzYWJsZSB0aGUgbWVyZ2UKCWJlY2F1c2Ugb2YgYSBsYWJlbC4KCShtZXJnZV9ibG9ja3NfbW92ZV9zdWNjZXNzb3Jfbm9qdW1wcyk6IExpa2V3aXNlLiAgQWxzbyBtb3ZlIGEKCWp1bXAgdGFibGUuCgkobWVyZ2VfYmxvY2tzKTogRGlzYWJsZSBhIG1lcmdlIGJlY2F1c2Ugb2YgdGFpbCByZWN1cnNpb24gbGFiZWxzLgoJKiBpZmN2dC5jIChtZXJnZV9pZl9ibG9jayk6IERvbid0IGRpc2FibGUgYSBtZXJnZSBiZWNhdXNlIG9mIGEgbGFiZWwuCglVc2UgYSBtb3JlIGFjY3VyYXRlIG1lYXN1cmUgb2Ygbm90IG1lcmdpbmcgdGhlIGpvaW4gYmxvY2suCgkoZmluZF9pZl9ibG9jayk6IERvbid0IGRpc2FibGUgY29udmVyc2lvbiBiZWNhdXNlIG9mIGEgbGFiZWwuCgkoZmluZF9pZl9jYXNlXzEsIGZpbmRfaWZfY2FzZV8yKTogTGlrZXdpc2UuCgkqIGp1bXAuYyAoZHVwbGljYXRlX2xvb3BfZXhpdF90ZXN0KTogUHJlc2VydmUgdGhlIGtpbmQgb2YgbGlzdAoJZWxlbWVudCB3aGVuIGNvcHlpbmcuCgkoc3F1ZWV6ZV9ub3Rlcyk6IEFsc28gbGVhdmUgRUggbm90ZXMuCgkobWFya19qdW1wX2xhYmVsKTogSWdub3JlIGRlbGV0ZWQgbGFiZWxzLiAgVXNlIGFuIElOU05fTElTVCBmb3IKCVJFR19MQUJFTCBub3Rlcy4KCShkZWxldGVfaW5zbik6IFByZXNlcnZlIExBQkVMX05BTUUgaW4gTk9URV9TT1VSQ0VfRklMRSB3aGVuCglkZWxldGluZyBhIGxhYmVsLgoJKiBwcmludC1ydGwuYyAocHJpbnRfcnR4KTogUHJpbnQgTk9URV9TT1VSQ0VfRklMRSBmb3IKCU5PVEVfSU5TTl9ERUxFVEVEX0xBQkVMLiAgUHJpbnQgYFsjIGRlbGV0ZWRdJyBmb3IgYSBsYWJlbF9yZWYKCXJlZmVycmluZyB0byBhIGRlbGV0ZWQgbGFiZWwuICBDb252ZXJ0IHRhaWwgaGFuZGxpbmcgdG8gYSBzd2l0Y2guCgkqIHJ0bC5kZWYgKENPREVfTEFCRUwpOiBSZWFycmFuZ2UgZWxlbWVudHMgdG8gYmUgY29tcGF0aWJsZSB3aXRoIE5PVEUKCWZvciBOT1RFX0lOU05fREVMRVRFRF9MQUJFTC4KCShOT1RFKTogRml4IGNvbW1lbnRhcnkuCgkqIHJ0bC5oIChSRUdfTEFCRUwpOiBVcGRhdGUgY29tbWVudGFyeSB3cnQgSU5TTl9MSVNULgoJKFJFR19DQ19TRVRURVIsIFJFR19DQ19VU0VSLCBSRUdfTElCQ0FMTCk6IExpa2V3aXNlLgoJKENPREVfTEFCRUxfTlVNQkVSLCBMQUJFTF9OQU1FKTogVXBkYXRlIGluZGV4LgoJKExBQkVMX05VU0VTLCBMQUJFTF9SRUZTKTogTGlrZXdpc2UuCgkqIHVucm9sbC5jIChjb3B5X2xvb3BfYm9keSk6IERvbid0IGNvcHkgTk9URV9JTlNOX0RFTEVURURfTEFCRUwuCgoyMDAwLTA1LTEyICBCcnVjZSBLb3JiICA8YmtvcmJAZ251Lm9yZz4KCgkqIGZpeGluYy9maXhmaXhlcy5jKGZvcm1hdF93cml0ZSk6IGJ1Z2xldCAmIHJlbGF4ZWQgcnVsZXMKCSogZml4aW5jL2NoZWNrLmRpZmY6IHVwZGF0ZWQKCSogZml4aW5jL2luY2xoYWNrLmRlZjogY29ycmVjdGVkICYgYWRkZWQgc29tZSB0ZXN0X3RleHQtcwoJKiBmaXhpbmMvZ2VuZml4ZXM6IHJlbW92ZWQgdW5uZWVkZWQgb3B0aW9ucyB0byBhdXRvZ2VuIGludm9jYXRpb24KCSogZml4aW5jL2ZpeGluY2wudHBsOiBTcGVjaWZpZWQgdGhlIG91dHB1dCBmaWxlCgkqIGZpeGluYy9maXhmaXhlcy5jOiB2aXN1YWwgYXBwZWFyYW5jZQoJKiBmaXhpbmMvZml4aW5jbC54OiByZWdlbmVyYXRlCgoyMDAwLTA1LTEyICBaYWNrIFdlaW5iZXJnIDx6YWNrQHdvbGVyeS5jdW1iLm9yZz4KCgkqIGZpeGluYy9maXhmaXhlcy5jIChJT191c2VfZml4LCBJT19kZWZuX2ZpeCwgQ1RSTF91c2VfZml4LAoJQ1RSTF9kZWZuX2ZpeCk6IERlbGV0ZS4KCShmaXhfY2hhcl9tYWNyb19kZWZpbmVzLCBmaXhfY2hhcl9tYWNyb191c2VzKTogUmVuYW1lIHRvCgljaGFyX21hY3JvX2RlZl9maXggYW5kIGNoYXJfbWFjcm9fdXNlX2ZpeCwgcmVzcGVjdGl2ZWx5LiAgUHV0Cgl0aGVtIGludG8gdGhlIEZJWFVQX1RBQkxFLiAgR2V0IHRoZSBzdHJpbmcgdG8gc2VhcmNoIGZvciBmcm9tCglhIGNfZml4X2FyZy4KCgkoZm9ybWF0X3dyaXRlKTogTmV3IGZ1bmN0aW9uLgoJKGZvcm1hdF9maXgpOiBVc2UgaXQuCgoJKEZJWF9QUk9DX0hFQUQpOiBDb25zdGlmeSB0ZXh0IHBhcmFtZXRlci4KCShtYWNoaW5lX25hbWVfZml4KTogQ29uc3RpZnkgYWxsIGNoYXIgKnMuCgkqIGZpeHRlc3RzLmMgKHNraXBfcXVvdGUpOiBSZW1vdmUgZG91YmxlIHN0YXRpYy4KCgkqIGluY2xoYWNrLmRlZiAoaW9fZGVmX3F1b3RlcywgaW9fdXNlX3F1b3RlcywgY3RybF9kZWZfcXVvdGVzLAoJY3RybF91c2VfcXVvdGVzKTogVXBkYXRlIGZvciBuZXcgc2NoZW1lLgoJKiBmaXhpbmNsLng6IFJlZ2VuZXJhdGUuCgoyMDAwLTA1LTEyICBBbGV4YW5kcmUgT2xpdmEgIDxhb2xpdmFAY3lnbnVzLmNvbT4KCgkqIGNvbmZpZy9tbjEwMzAwL21uMTAzMDAuaCAoUFJFRkVSUkVEX0RFQlVHR0lOR19UWVBFKTogUmVkZWZpbmUgYXMKCURXQVJGMl9ERUJVRy4KCShEV0FSRjJfQVNNX0xJTkVfREVCVUdfSU5GTyk6IERlZmluZS4KCShBU01fT1VUUFVUX0RXQVJGMl9BRERSX0NPTlNUKTogRGVmaW5lLgoKMjAwMC0wNS0xMSAgUm9iZXJ0IExpcGUgPHJvYmVydGxpcGVAdXNhLm5ldD4KCgkqIGZpeGluYy9pbmNsaGFjay5kZWYgKGhwdXg4X2JvZ3VzX2lubGluZXMpOiBEZWxldGUgYnlwYXNzIGZvciBTQ08uCgkqIGZpeGluY2wueDogUmVnZW5lcmF0ZS4KCjIwMDAtMDUtMTEgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgoJKiBjYWxscy5jOiBSZXZlcnQgYm90aCAwNS0wOSBwYXRjaGVzLgoKMjAwMC0wNS0xMSAgQWxleGFuZHJlIE9saXZhICA8YW9saXZhQGN5Z251cy5jb20+CgoJKiBjb25maWcvbW4xMDMwMC9tbjEwMzAwLmMgKHByaW50X29wZXJhbmQpOiBQcmludCBGUCBjb25zdGFudHMgaW4KCWhleGFkZWNpbWFsLgoJKiBjb25maWcvbW4xMDMwMC9tbjEwMzAwLm1kIChtb3ZzZiwgbW92ZGYpOiBVc2UgdGhlIGBGJyBjb25zdHJhaW50Cglmb3IgRlAgdmFsdWVzLgoKCSogbWtsaWJnY2MuaW4gKEVRKTogRGVmaW5lIGl0IHRvIGFuIGVxdWFsIHNpZ24gaW4gdGhlIE1ha2VmaWxlLAoJYW5kIHJlcGxhY2UgYW55IG9jY3VycmVuY2VzIG9mIGA9JyBpbiBtdWx0aWxpYiBkaXJzIHdpdGggYCQoRVEpJy4KCjIwMDAtMDUtMTEgIEphc29uIE1lcnJpbGwgIDxqYXNvbkBjYXNleS5jeWdudXMuY29tPgoKCSogZml4aW5jL2ZpeGluY2wuYyAocnVuX2NvbXBpbGVzKTogRG9uJ3QgY3Jhc2ggb24gbnVsbCBwel9tYWNoaW5lLgoKMjAwMC0wNS0xMSAgWmFjayBXZWluYmVyZyAgPHphY2tAd29sZXJ5LmN1bWIub3JnPgoKCSogZml4aW5jL2ZpeGZpeGVzLmMsIGZpeGluYy9maXh0ZXN0cy5jOiBVcGRhdGUgY29tbWVudGFyeS4KClRodSBNYXkgMTEgMjI6Mjg6MDUgMjAwMCAgRGVuaXMgQ2hlcnR5a292ICA8ZGVuaXNjQG92ZXJ0YS5ydT4KCgkqIGNvbmZpZy9hdnIvYXZyLXByb3Rvcy5jIChqdW1wX292ZXJfb25lX2luc25fcCk6IE5ldyBkZWNsYXJhdGlvbi4KCSogY29uZmlnL2F2ci9hdnIuYyAoanVtcF9vdmVyX29uZV9pbnNuX3ApOiBOZXcgZnVuY3Rpb24uCgkqIGNvbmZpZy9hdnIvYXZyLm1kOiBOZXcgcGVlcGhvbGVzIGFkZGVkLiBPdXRwdXQgdGVzdCBhbmQKCWNvbmRpdGlvbmFsIGp1bXAgdG8gInNicmMiIG9yICJzYnJzIiBjb21tYW5kLgoKMjAwMC0wNS0xMSAgTWFyayBFbGJyZWNodCAgPHNub3diYWxsM0BiaWdmb290LmNvbT4KCgkqIGNwcG1haW4uYyAobWFpbik6IFVzZSBJU19ESVJfU0VQQVJBVE9SLgoKMjAwMC0wNS0xMSAgSmFrdWIgSmVsaW5layAgPGpha3ViQHJlZGhhdC5jb20+CgoJKiBleGNlcHQuYyAoZmluZF9leGNlcHRpb25faGFuZGxlcl9sYWJlbHNfMSk6IE5ldyBmdW5jdGlvbi4KCShmaW5kX2V4Y2VwdGlvbl9oYW5kbGVyX2xhYmVscyk6IFNwbGl0IGludG8gdHdvIGZ1bmN0aW9ucywgZGl2ZQoJaW50byBDQUxMX1BMQUNFSE9MREVScyB3aGVuIGxvb2tpbmcgZm9yIGV4Y2VwdGlvbiBoYW5kbGVyIGxhYmVscy4KCjIwMDAtMDUtMTEgU3RhbiBDb3ggPHNjb3hAY3lnbnVzLmNvbT4KCgkqIHJlZ3JlbmFtZS5jIChyZXBsYWNlX3JlZ19pbl9ibG9jayk6IEltcHJvdmUgUkVHX0RFQUQgaGFuZGxpbmcuCgkqIHRpbWV2YXIuZGVmIChUVl9SRU5BTUVfUkVHSVNURVJTKTogTW92ZSBiZWZvcmUgVFZfU0NIRUQyLgoJKiB0b3BsZXYuYyAocmVzdF9vZl9jb21waWxhdGlvbik6IENhbGwgcmVncmVuYW1lX29wdGltaXplIGJlZm9yZSBzY2hlZDIuCgoyMDAwLTA1LTExICBCcnVjZSBLb3JiICA8YmtvcmJAZ251Lm9yZz4KCgkqIGZpeGluYy9maXhmaXhlcy5jIChkb3VibGVfc2xhc2hfZml4KTogIG9ic29sZXRlCgkoZWxzZV9lbmRpZl9sYWJlbF9maXgpOiBvYnNvbGV0ZQoJKGZvcm1hdF9maXgpOiAgbmV3LCB1bnVzZWQgYXMgeWV0CgkobWFpbik6IG9ic29sZXRlCgkqIGZpeGluYy9maXhsaWIuaDogYWRkZWQgZml4IGRlc2NyaXB0aW9uIHN0cnVjdCBmb3IgdXNlIGJ5IGZvcm1hdF9maXgKCSogZml4aW5jL2ZpeGluY2wuYzogcmVtb3ZlZCB0aGUgc3RydWN0ICYgdGVzdCBmb3IgU0lHSU9UIGJlZnVyZSB1c2luZwoJKiBmaXhpbmMvTWFrZWZpbGUuaW46ICBjb21waWxlIGZpeGZpeGVzLmMgYW5kIGZpeHRlc3RzLmMgYXMgc2VwYXJhdGUKCW1vZHVsZXMuICBSZW1vdmVkIHRoZSB2ZXN0aWdlcyBvZiB0aGUgc2NyaXB0IHZlcnNpb24uCglBZGRlZCBzdXBwb3J0IGZvciAibWFrZSBjaGVjayIuCgkqIGZpeGluYy9jaGVjay5kaWZmOiBiYXNlIGRpZmYgZmlsZSAobmVlZHMgd29yayEhKQoJKiBmaXhpbmMvY2hlY2sudHBsOiBxdWlldCB0aGUgZml4dXAgb3V0cHV0CgkqIGZpeGluYy9maXh0ZXN0cy5jIChtYWluKTogb2Jzb2xldGUKCSogZml4aW5jL2ZpeGluY2wuc2g6ICBkb24ndCBib3RoZXIgY29weWluZyBmaXhpbmNsIHRvIC4uCgkqIGZpeGluYy9maXhpbmNsLnRwbDogIHByb3ZpZGUgZm9yIGFyZ3VtZW50cyB0byBjX2ZpeCByb3V0aW5lcwoKVGh1IE1heSAxMSAxMTo1NzowMiBNRVQgRFNUIDIwMDAgIEphbiBIdWJpY2thIDxqaEBzdXNlLmN6PgoKCSogdG9wbGV2LmMgKHJlc3Rfb2ZfY29tcGlsYXRpb24pOiBSZW1vdmUgZGVhZCBjb2RlIGFmdGVyCgljb21iaW5lLgoKMjAwMC0wNS0xMSAgWmFjayBXZWluYmVyZyAgPHphY2tAd29sZXJ5LmN1bWIub3JnPgoKCSogY3BwaGFzaC5jIChjb2xsZWN0X2Z1bmxpa2VfZXhwYW5zaW9uKTogTWFrZSAiIyBpcyBub3QKCWZvbGxvd2VkIGJ5IGEgbWFjcm8gYXJndW1lbnQgbmFtZSIgYSBwZWR3YXJuLCBub3QgYW4gZXJyb3IuCglQcmVzZXJ2ZSB0aGUgIyBpbiB0aGUgb3V0cHV0LiAgU3VwcHJlc3MgdGhlIHdhcm5pbmcgaWYgbGFuZ19hc20uCgpUaHUgTWF5IDExIDAxOjE5OjMxIDIwMDAgIEplZmZyZXkgQSBMYXcgIChsYXdAY3lnbnVzLmNvbSkKCgkqIGNvbmZpZ3VyZS5pbiAoaHBwYSo2NCotKi1ocHV4MTEqKTogTmV3IHRhcmdldCBmb3IgUEE2NCBzdXBwb3J0LgoJKiBjb25maWd1cmU6IFJlYnVpbHQuCgoyMDAwLTA1LTEwIExhdXJ5bmFzIEJpdmVpbmlzIDxsYXVyYXNAc29mdGhvbWUubmV0PgoKCSogaTM4Ni94bS1kamdwcC5oIChYUkVGX0ZJTEVfTkFNRSk6IEFkZCBtaXNpbmcgYnJhY2UuCgoyMDAwLTA1LTEwICBLYXp1IEhpcmF0YSAgPGthenVAaHhpLmNvbT4KCgkqIGNvbWJpbmUuYyAodHJ5X2NvbWJpbmUpOiBGaXggYSB0eXBvLgoKV2VkIE1heSAxMCAyMTozMTo0NCAyMDAwICBKaW0gV2lsc29uICA8d2lsc29uQGN5Z251cy5jb20+CgoJKiBjb25maWcvaWE2NC9pYTY0Lm1kIChpbnN2KTogQWRkIGNvbW1lbnQuCgoyMDAwLTA1LTEwICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEBjeWdudXMuY29tPgoKCSogTWFrZWZpbGUuaW4gKGxpYmdjYy5hLCBzdG1wLW11bHRpbGliKTogRGVwZW5kIG9uIEZQQklUIGFuZCBEUEJJVC4KCSogbWtsaWJnY2MuaW46IFJld3JpdGUgdG8gbm90IHVzZSBmdW5jdGlvbnMuICBEb24ndCBzaG9ydGN1dAoJZGVwZW5kZW5jaWVzIG9uIEZQQklUIGFuZCBEUEJJVC4KCjIwMDAtMDUtMTAgIE5pY2sgQ2xpZnRvbiAgPG5pY2tjQHJlZGhhdC5jb20+CgoJKiBmbG93LmMgKGZpbmRfYXV0b19pbmMpOiBEbyBub3QgYmlhcyBSRUdfTl9SRUZTIGJ5IGxvb3BfZGVwdGgKCXdoZW4gb3B0aW1pc2luZyBmb3Igc2l6ZS4KCShtYXJrX3VzZWRfcmVnczopIERpdHRvLgoJKHRyeV9wcmVfaW5jcmVtZW50XzEpOiBEaXR0by4KCjIwMDAtMDUtMTAgIFphY2sgV2VpbmJlcmcgIDx6YWNrQHdvbGVyeS5jdW1iLm9yZz4KCgkqIGNwcGV4cC5jIChsZXgpOiBVc2UgJS4qcyB0byBwcmludCBub24tTlVMLXRlcm1pbmF0ZWQgc3RyaW5nLgoJTWFrZSBlcnJvciBtZXNzYWdlIGZyaWVuZGxpZXIuCgoJKiBjcHBoYXNoLmggKHN0cnVjdCBoYXNobm9kZSk6IFVzZSBzdHJ1Y3QgaGFjayBmb3IgbmFtZQoJbWVtYmVyLgoJKiBjcHBoYXNoLmMgKHN0cnVjdCBoYXNoZHVtbXkpOiBOZXcuCgkoZXFfSEFTSE5PREUpOiBTZWNvbmQgYXJndW1lbnQgaXMgYSBoYXNoZHVtbXksIG5vdCBhIEhBU0hOT0RFLgoJKG1ha2VfSEFTSE5PREUpOiBObyBuZWVkIHRvIHNldCAtPm5hbWUgcG9pbnRlci4gIENvcnJlY3QKCXNldHRpbmcgb2YgcC4KCShjcHBfbG9va3VwKTogTWFrZSAnZHVtbXknIGEgc3RydWN0IGhhc2hkdW1teS4gIFRpZHkgdXAgYSBiaXQuCgoyMDAwLTA1LTEwICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEBjeWdudXMuY29tPgoKCSogZmxvdy5jIChmaW5kX2Jhc2ljX2Jsb2Nrc18xKTogUmVtb3ZlIGFueSBzcGFyZSBiYl9ub3RlCglhZnRlciBjb21wbGV0aW9uLgoKMjAwMC0wNS0xMCAgQnJ1Y2UgS29yYiAgPGJrb3JiQGdudS5vcmc+CgoJKiBmaXhpbmMvZ251LXJlZ2V4LmM6ICByZWdfc3ludGF4X3QgcmVfc3ludGF4X29wdGlvbnMgbXVzdCBiZSBzdGF0aWMKCjIwMDAtMDUtMTAgIEVyaWMgU2Nod2VpdHogIDxzY2h3ZWl0ekBub3J0ZWxuZXR3b3Jrcy5jb20+CgoJKiBkd2FyZm91dC5jIChkd2FyZm91dF9maW5pc2gpOiBDYWxsIHJldHJ5X2luY29tcGxldGVfdHlwZXMKCWFmdGVyIHdlIGVudGVyIC5kZWJ1Zy4KCjIwMDAtMDUtMTAgIEphc29uIE1lcnJpbGwgIDxqYXNvbkBjYXNleS5jeWdudXMuY29tPgoKCSogZHdhcmYyb3V0LmMgKGdlbl9zdWJwcm9ncmFtX2RpZSk6IEZpeHVwIGRpZV9wYXJlbnQgZm9yIHRoZQoJYWJzdHJhY3QgaW5zdGFuY2Ugb2YgYSBuZXN0ZWQgaW5saW5lIGZ1bmN0aW9uLgoKCSogc3Rvci1sYXlvdXQuYyAoZmluaXNoX3JlY29yZF9sYXlvdXQpOiBmaW5hbGl6ZV90eXBlX3NpemUKCWJlZm9yZSBsYXlpbmcgb3V0IHRoZSBwZW5kaW5nX3N0YXRpY3MuCgpXZWQgMTAgTWF5IDA5OjM2OjQ3IDIwMDAgIE5laWwgQm9vdGggIDxOZWlsQkBlYXJ0aGxpbmcubmV0PgoKCSogY3BwbGV4LmMgKHNwZWxsX3Rva2VuKTogTmV3IGZ1bmN0aW9uLgoJKHNwZWxsX3N0cmluZywgc3BlbGxfY29tbWVudCwgc3BlbGxfbmFtZSk6IGZvbGQgaW50bwoJc3BlbGxfdG9rZW4uCgkoSSwgUyk6IEFkZCBtYWNyb3MuCgkoRSwgSCk6IFJlbW92ZSBtYWNyb3MuCgkoc2F2ZV9jb21tZW50KTogU2F2ZSBjb21tZW50IG9wZW5pbmcgY2hhcmFjdGVycyB0b28uCgkoX2NwcF9sZXhfZmlsZSk6IFVwZGF0ZSB0byB1c2Ugc3BlbGxfdG9rZW4uICBUaWR5IHVwIGNvbW1lbnQKCWhhbmRsaW5nLgoJKiBjcHBsaWIuaCAoSSwgUyk6IEFkZCBtYWNyb3MuCgkoRSwgSCk6IFJlbW92ZSBtYWNyb3MuCgkoVFRZUEVfVEFCTEUpOiBVcGRhdGUgZW50cmllcyBmb3IgbmV3IHNwZWxsZXIuCgkoU1lOVEFYX0FTU0VSVCk6IFJlbW92ZS4KCldlZCAxMCBNYXkgMDk6MDg6MzAgMjAwMCAgTmVpbCBCb290aCAgPE5laWxCQGVhcnRobGluZy5uZXQ+CgoJKiBjcHBsZXguYyAoX2NwcF9sZXhfbGluZSk6IE1haW50YWluIFBSRVZfV0hJVEVTUEFDRSBmbGFnCgl3aGVuIHJlbW92aW5nIGVzY2FwZWQgbmV3bGluZXMuICBSZXZlcnNlIHNlbnNlIG9mIHRlc3QgZm9yCgllc2NhcGVkIG5ld2xpbmUuCgoyMDAwLTA1LTA5ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEBjeWdudXMuY29tPgoKCSogZmxvdy5jIChmaW5kX2Jhc2ljX2Jsb2Nrc18xKTogRG8gbm90IGRlbGV0ZSB0aGUgZmlyc3QKCWJiX25vdGUgd2UgcnVuIGFjcm9zcy4KCShjcmVhdGVfYmFzaWNfYmxvY2spOiBVc2UgcmVvcmRlcl9pbnNucyB0byBtb3ZlIGFuIGV4aXN0aW5nCgliYl9ub3RlIHRvIHRoZSBjb3JyZWN0IHBsYWNlLgoKMjAwMC0wNS0wOSAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAY3lnbnVzLmNvbT4KCgkqIGNhbGxzLmMgKGV4cGFuZF9jYWxsKTogSW5jcmVtZW50IGN1cnJlbnRseV9leHBhbmRpbmdfY2FsbAoJYmVmb3JlIGNhbGxpbmcgb3B0aW1pemVfdGFpbF9yZWN1cnNpb24uCgpUdWUgTWF5ICA5IDE4OjU0OjE2IDIwMDAgIFJpY2hhcmQgS2VubmVyICA8a2VubmVyQHZsc2kxLnVsdHJhLm55dS5lZHU+CgoJKiByZWxvYWQxLmMgKHJlbG9hZF9jb21iaW5lKTogRml4IGVycm9ycyBpbiBsYXN0IGNoYW5nZS4KCjIwMDAtMDUtMDkgIFphY2sgV2VpbmJlcmcgIDx6YWNrQHdvbGVyeS5jdW1iLm9yZz4KCgkqIGdjYy5jICh1c2VkX2FyZyk6IFNraXAgb3ZlciBhIHNlbWljb2xvbiBhdCB0aGUgZW5kIG9mIHRoZQoJc3BsaXQtdXAgbG9vcDsgZG9uJ3QgYnJlYWsgb3V0IG9mIGl0LgoKCSogTWFrZWZpbGUuaW4gKFdBUk5fQ0ZMQUdTKTogQWRkIC1Xd3JpdGUtc3RyaW5ncy4KCSh0cmVlLm8pOiBEZXBlbmQgb24gb3V0cHV0LmguCgoJKiBjLWRlY2wuYyAocGVuZGluZ19pbnZhbGlkX3hyZWZfZmlsZSwKCWN1cnJlbnRfZnVuY3Rpb25fcHJvdG90eXBlX2ZpbGUpOiBDb25zdGlmeS4KCShwdXNoZGVjbCk6IENvbnN0aWZ5IGEgbG9jYWwgY2hhciAqLgoJKGRlZmluZV9sYWJlbCk6IENvbnN0aWZ5IGZpbGVuYW1lIHBhcmFtZXRlci4KCSogYy1sZXguYyAoaW5pdF9wYXJzZSk6IENvbnN0aWZ5IHBhcmFtZXRlciBhbmQgcmV0dXJuIHZhbHVlLgoJKiBjLXR5cGVjay5jIChjX2V4cGFuZF9hc21fb3BlcmFuZHMpOiBDb25zdGlmeSBmaWxlbmFtZSBwYXJhbWV0ZXIuCgkqIGMtdHJlZS5oOiBVcGRhdGUgcHJvdG90eXBlcy4KCSogYy1wYXJzZS5pbjogQ29uc3RpZnkgZmlsZW5hbWUgbWVtYmVyIG9mICV1bmlvbiwgYW5kIGlmX3N0bXRfZmlsZS4KCSogYy1wYXJzZS55LCBjLXBhcnNlLmMsIGMtcGFyc2UuaCwgb2JqYy9vYmpjLXBhcnNlLnksCglvYmpjL29iamMtcGFyc2UuYzogUmVnZW5lcmF0ZS4KCgkqIGR3YXJmb3V0LmMgKGR3YXJmb3V0X2luaXQpOiBDb25zdGlmeSBtYWluX2lucHV0X2ZpbGVuYW1lIHBhcmFtZXRlci4KCSogZHdhcmZvdXQuaDogVXBkYXRlIHByb3RvdHlwZXMuCgkqIGV4cHIuYyAoZXhwYW5kX2V4cHIpOiBDb25zdGlmeSBhIGxvY2FsIGNoYXIgKi4KCSogZmxhZ3MuaDogQ29uc3RpZnkgbWFpbl9pbnB1dF9maWxlbmFtZS4KCSogZnVuY3Rpb24uYyAoZXhwYW5kX2Z1bmN0aW9uX2VuZCk6IENvbnN0aWZ5IGZpbGVuYW1lIHBhcmFtZXRlci4KCSogZ2VucmVjb2cuYyAobWFrZV9pbnNuX3NlcXVlbmNlKTogVXNlIGEgY2hhcmFjdGVyIGFycmF5IGZvcgoJY190ZXN0X3Bvcy4KCShtYWluKTogUmVtb3ZlIHVudXNlZCB2YXJpYWJsZXMuCgkqIGlucHV0Lmg6IENvbnN0aWZ5IGlucHV0X2ZpbGVuYW1lLCBtYWluX2lucHV0X2ZpbGVuYW1lLCBhbmQKCWZpbGVfc3RhY2submFtZS4gIFVwZGF0ZSBwcm90b3R5cGVzLgoJKiBvdXRwdXQuaDogRGVjbGFyZSBmaXJzdF9nbG9iYWxfb2JqZWN0X25hbWUgYW5kCgl3ZWFrX2dsb2JhbF9vYmplY3RfbmFtZSBoZXJlLCBhcyBjb25zdCBjaGFyICouCgkqIHN0bXQuYyAoZXhwYW5kX2FzbV9vcGVyYW5kcyk6IENvbnN0aWZ5IGZpbGVuYW1lIHBhcmFtZXRlci4KCSogdG9wbGV2LmMgKGNvbXBpbGVfZmlsZSwgcHVzaF9zcmNsb2MsIGRlYnVnX3N0YXJ0X3NvdXJjZV9maWxlKToKCUNvbnN0aWZ5IGZpbGVuYW1lIHBhcmFtZXRlci4KCShpbnB1dF9maWxlbmFtZSwgbWFpbl9pbnB1dF9maWxlbmFtZSk6IENvbnN0aWZ5LgoJKiB0b3BsZXYuaDogVXBkYXRlIHByb3RvdHlwZXMuCgkqIHRyZWUuYzogSW5jbHVkZSBvdXRwdXQuaC4gIERvbid0IGRlY2xhcmUKCWZpcnN0X2dsb2JhbF9vYmplY3RfbmFtZSBvciB3ZWFrX2dsb2JhbF9vYmplY3RfbmFtZS4gIENsZWFuIHVwIHN0cmluZwoJYmFzaGluZyBpbiBnZXRfZmlsZV9mdW5jdGlvbl9uYW1lX2xvbmcuCgkqIHRyZWUuaCAoc3RydWN0IHRyZWVfZGVjbCk6IENvbnN0aWZ5IGZpbGVuYW1lIG1lbWJlci4KCShpbnB1dF9maWxlbmFtZSk6IENvbnN0aWZ5LgoJVXBkYXRlIHByb3RvdHlwZXMuCgkqIHZhcmFzbS5jIChmaXJzdF9nbG9iYWxfb2JqZWN0X25hbWUsIHdlYWtfZ2xvYmFsX29iamVjdF9uYW1lKToKCUNvbnN0aWZ5LgoJKGFzc2VtYmxlX3N0YXJ0X2Z1bmN0aW9uLCBhc3NlbWJsZV92YXJpYWJsZSk6IENsZWFuIHVwIHN0cmluZyBiYXNoaW5nLgoKCSogZ2NjLmM6IENvbnN0aWZ5IGFsbCBzcGVjLXJlbGF0ZWQgc3RyaW5ncyBpbml0aWFsaXplZCwKCXRyYW5zaXRpdmVseSwgZnJvbSBzdHJpbmcgY29uc3RhbnRzLiAgQ29uc3RpZnkgYWxsIHN0cmluZ3MKCWFuZCBzdHJpbmcgdmFyaWFibGVzIHJlbGF0ZWQgdG8gbXVsdGlsaWJzLgoJKHNldF9zcGVjLCByZWFkX3NwZWNzKTogQ2FzdCBhcmd1bWVudCB0byBmcmVlIHRvIFBUUi4KCSh1c2VkX2FyZyk6IERvIG5vdCBtb2RpZnkgbXVsdGlsaWJfbWF0Y2hlcy4gIFVzZSBzdHJuY21wIHBsdXMKCWxlbmd0aCBjb21wYXJpc29uIHRvIGNvbXBhcmUgbXVsdGlsaWIgc3dpdGNoZXMuCgkqIGdlbm11bHRpbGliOiBDb25zdGlmeSBldmVyeXRoaW5nIGRlY2xhcmVkIGluIG11bHRpbGliLmguCgpUdWUgTWF5ICA5IDIyOjI4OjAzIDIwMDAgIERlbmlzIENoZXJ0eWtvdiAgPGRlbmlzY0BvdmVydGEucnU+CgoJKiBmbG93LmMgKGZsb3dfZGVsZXRlX2luc24pOiBVc2UgSU5TTl9ERUxFVEVEX1AgZm9yIG1hcmtpbmcgaW5zbgoJYXMgZGVsZXRlZC4KClR1ZSBNYXkgIDkgMjA6NTI6NDMgMjAwMCAgRGVuaXMgQ2hlcnR5a292ICA8ZGVuaXNjQG92ZXJ0YS5ydT4KCgkqIGNvbmZpZy9hdnIvYXZyLXByb3Rvcy5oIChleHRyYV9jb25zdHJhaW50KTogY2hhbmdlIGEgdHlwZSBvZgoJc2Vjb25kIGFyZ3VtZW50IGZyb20gY2hhciB0byBpbnQgdG8gYXZvaWQgd2FybmluZ3MuCgkoYXNtX291dHB1dF9ieXRlKTogTGlrZXdpc2UuCgoJKiBjb25maWcvYXZyL2F2ci5jIChNQVhfTERfT0ZGU0VUKSBOZXcgbWFjcm8uCgkoaW5pdGlhbF9lbGltaW5hdGlvbl9vZmZzZXQpOiBIYW5kbGUgZWxpbWluYXRpb24gZnJvbQoJRlJBTUVfUE9JTlRFUl9SRUdOVU0gdG8gU1RBQ0tfUE9JTlRFUl9SRUdOVU0uCgkobGVnaXRpbWF0ZV9hZGRyZXNzX3ApOiBVc2UgTUFYX0xEX09GRlNFVC4KCShsZWdpdGltaXplX2FkZHJlc3MpOiBMaWtld2lzZS4KCShvdXRfbW92cWlfcl9tcik6IExpa2V3aXNlLgoJKG91dF9tb3ZoaV9yX21yKTogTGlrZXdpc2UsIHVzZSBgZmF0YWxfaW5zbicgaW5zdGVhZCBvZiBgZmF0YWwnLgoJKG91dF9tb3ZzaV9yX21yKTogVXNlIE1BWF9MRF9PRkZTRVQuCgkob3V0X21vdnNpX21yX3IpOiBMaWtld2lzZS4KCShvdXRfbW92cWlfbXJfcik6IExpa2V3aXNlLgoJKG91dF9tb3ZoaV9tcl9yKTogTGlrZXdpc2UuCgkobm90aWNlX3VwZGF0ZV9jYyk6IENvcnJlY3QgQ0MgZm9yIHRoZSBhc2hycWkzIHdpdGggdGhlIHNoaWZ0Cgljb3VudCBhcyBDT05TVF9JTlQgIT0gNi4KCShhc2hscWkzX291dCk6IENvZGluZyBzdHlsZSBtb2RpZmljYXRpb25zLiBSdW4gYGZhdGFsX2luc24nIGlmCglzaGlmdCBjb3VudCBpcyBhIENPTlNUQU5UX1AsIGJ1dCBub3QgYSBDT05TVF9JTlQuCgkoYXNobGhpM19vdXQpOiBDb2Rpbmcgc3R5bGUgbW9kaWZpY2F0aW9ucy4KCShhc2hsc2kzX291dCk6IExpa2V3aXNlLgoJKGFzaHJoaTNfb3V0KTogTGlrZXdpc2UuCgkoYXNocnNpM19vdXQpOiBMaWtld2lzZS4KCShsc2hyaGkzX291dCk6IExpa2V3aXNlLgoJKGxzaHJzaTNfb3V0KTogTGlrZXdpc2UuCgkoYXNocnFpM19vdXQpOiBHZW5lcmF0ZSBzaGlmdCBmb3IgYW55IGtub3duIGNvbnN0YW50IGNvdW50IHdpdGhvdXQKCXNjcmF0Y2ggcmVnaXN0ZXIuIFJ1biBgZmF0YWxfaW5zbicgaWYgc2hpZnQgY291bnQgaXMgYSBDT05TVEFOVF9QLAoJYnV0IG5vdCBhIENPTlNUX0lOVC4KCShsc2hycWkzX291dCk6IENvZGluZyBzdHlsZSBtb2RpZmljYXRpb25zLiBSdW4gYGZhdGFsX2luc24nIGlmCglzaGlmdCBjb3VudCBpcyBhIENPTlNUQU5UX1AsIGJ1dCBub3QgYSBDT05TVF9JTlQuCgkoZXh0cmFfY29uc3RyYWludCk6IGNoYW5nZSBhIHR5cGUgb2YKCXNlY29uZCBhcmd1bWVudCBmcm9tIGNoYXIgdG8gaW50IHRvIGF2b2lkIHdhcm5pbmdzLgoJKGFzbV9vdXRwdXRfYnl0ZSk6IExpa2V3aXNlLgoJKGFzbV9maWxlX2VuZCk6IE91dHB1dCBzaXplIGdlbmVyYXRlZCBjb21tYW5kcyBjb3VudCBhcyBhIGhleAoJbnVtYmVyIHRvby4KCgkqIGNvbmZpZy9hdnIvYXZyLmggKFJFVFVSTl9BRERSX1JUWCk6IE5ldyBtYWNyby4KCgkqIGNvbmZpZy9hdnIvYXZyLm1kIChhZGRoaTMpOiBGcmFnbWVudCBjb21tZW50ZWQgYnkgJiYwIGlzCglyZW1vdmVkLgoJKGFzaGxxaTMpOiBWYWx1ZXMgb2YgImxlbmd0aCIgYXR0cmlidXRlIGNoYW5nZWQuIFNoaWZ0IGNvdW50Cgl1c2VzIGNvbnN0cmFpbnRzICduJyBpbnN0ZWFkIG9mICdpJy4KCShhc2hycWkzKTogTGlrZXdpc2UuIFZhbHVlcyBvZiAiY2MiIGF0dHJpYnV0ZSBjaGFuZ2VkLiBHZW5lcmF0ZQoJc2hpZnRzIHdpdGhvdXQgY2xvYmJlciByZWdpc3Rlci4KCShsc2hycWkzKTogU2hpZnQgY291bnQgdXNlcyBjb25zdHJhaW50cyAnbicgaW5zdGVhZCBvZiAnaScuCgkoY2FsbF9pbnNuKTogQ29ycmVjdCB0ZXN0IGZvciB3aGljaF9hbHRlcm5hdGl2ZSA9PSAxICh3YXMgMCkuCgkoY2FsbF92YWx1ZV9pbnNuKTogTGlrZXdpc2UuCgoJKiBjb25maWcvYXZyL3QtYXZyOiBSZW1vdmUgZGVmaW5pdGlvbiBvZiBGTE9BVCB3aGlsZSBnZW5lcmF0ZXMKCWZwLWJpdC5jCgoyMDAwLTA1LTA5ICBCcnVjZSBLb3JiICA8YmtvcmJAZ251Lm9yZz4KCgkqIGZpeGluYy9jaGVjay50cGw6ICBUZW1wbGF0ZSBmb3IgY2hlY2tpbmcgZml4ZXMKCSogZml4aW5jL2luY2xoYWNrLmRlZjogIEFkZGVkICd0ZXN0X3RleHQnIGZvciBtYW55IGZpeGVzCglkaXNhYmxlIGhwdXg4X2JvZ3VzX2lubGluZXMgb24gU0NPCgkqIGZpeGluYy9maXhpbmMuc2NvOiAgT2gsIHllcywgd2UgZG9uJ3QgbmVlZCB0aGlzIGFueSBtb3JlLgoKVHVlIE1heSAgOSAxNjozMDoyNyBNRVQgRFNUIDIwMDAgIEphbiBIdWJpY2thICA8amhAc3VzZS5jej4KCgkqIGNhbGxzLmMgKGV4cGFuZF9jYWxsKTogUmVvcmdhbml6ZSBzb21ld2hhdCBpbiBvcmRlcgoJdG8gYXZvaWQgdW5uZWNlc2FyeSByZWNhbGN1bGF0aW9uIGluc2lkZSBsb29wIGFuZCBtYWtlCgl0YWlsIGNhbGwgZmFpbHVyZSBjb2RlIGNsZWFuZXIuCgpUdWUgTWF5ICA5IDA2OjMwOjIwIDIwMDAgIFJpY2hhcmQgS2VubmVyICA8a2VubmVyQHZsc2kxLnVsdHJhLm55dS5lZHU+CgoJKiBhbGlhcy5jIChub25sb2NhbF9yZWZlcmVuY2VfcCk6IE1pbm9yIHJlZm9ybWF0dGluZy4KCSogcmVsb2FkLmMgKGZpbmRfZXF1aXZfcmVnKTogU2ltcGxpZnkgbG9naWMgZm9yCglDQUxMX0lOU05fRlVOQ1RJT05fVVNBR0Ugc2luY2UgY2FuJ3QgaGF2ZSBTVUJSRUcgb3IgcHNldWRvcyBhbmQKCXNvbWUgc29tZSByZWZvcm1hdHRpbmcuCgkqIHJlbG9hZDEuYyAocmVsb2FkX2NvbWJpbmUpOiBEb24ndCBhc3N1bWUgZXZlcnl0aGluZyBpbgoJQ0FMTF9JTlNOX0ZVTkNUSU9OX1VTQUdFIGlzIGEgUkVHIGFuZCBjbGVhbiB1cCBjb2RlIGEgYml0LgoKMjAwMC0wNS0wOCAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAY3lnbnVzLmNvbT4KCgkqIGZpbmFsLmMgKGN1cnJlbnRfaW5zbl9wcmVkaWNhdGUpOiBOZXcuCgkoZmluYWxfc2Nhbl9pbnNuKTogU2V0IGl0LgoJKiBvdXRwdXQuaCAoY3VycmVudF9pbnNuX3ByZWRpY2F0ZSk6IERlY2xhcmUuCgoJKiBpZmN2dC5jIChjb25kX2V4ZWNfcHJvY2Vzc19pbnNucyk6IE5ldyBhcmd1bWVudCBwcm9iX3ZhbC4KCUF0dGFjaCBpdCB0byBjYWxsIGluc25zLgoJKGNvbmRfZXhlY19wcm9jZXNzX2lmX2Jsb2NrKTogVHJhY2sgcHJvYmFiaWxpdHkgZm9yIHRydWUgYW5kCglmYWxzZSBicmFuY2hlcy4KCShkZWFkX29yX3ByZWRpY2FibGUpOiBMaWtld2lzZS4KCgkqIHByZWRpY3QuYyAoUFJPQl9ORVZFUiwgUFJPQl9WRVJZX1VOTElLRUxZKTogTmV3LgoJKFBST0JfVU5MSUtFTFksIFBST0JfRVZFTiwgUFJPQl9MSUtFTFkpOiBOZXcuCgkoUFJPQl9WRVJZX0xJS0VMWSwgUFJPQl9BTFdBWVMpOiBOZXcuCgkoZXN0aW1hdGVfcHJvYmFiaWxpdHksIGV4cGVjdGVkX3ZhbHVlX3RvX2JyX3Byb2IpOiBVc2UgdGhlbS4KCgkqIGNvbmZpZy9pYTY0L2lhNjQtcHJvdG9zLmggKGlhNjRfZXhwYW5kX3ByZWRpY3Rpb24pOiBEZWNsYXJlLgoJKiBjb25maWcvaWE2NC9pYTY0LmMgKGlhNjRfcHJpbnRfb3BlcmFuZF9hZGRyZXNzKTogSGFuZGxlICdqJy4KCShpYTY0X2V4cGFuZF9wcmVkaWN0aW9uKTogTmV3LgoJKGVtaXRfaW5zbl9ncm91cF9iYXJyaWVycyk6IERvbid0IGxvb2sgYXQgbm90ZXMuICBFbWl0IGJhcnJpZXJzCglhcyBuZWVkZWQgYWZ0ZXIgY2FsbHMuCgkoaWE2NF9lcGlsb2d1ZV91c2VzKTogTWFyayBiMCB1c2VkLgoJKiBjb25maWcvaWE2NC9pYTY0Lm1kIChiZXFfdHJ1ZSwgYmVxX2ZhbHNlKTogUmVtb3ZlLgoJKGJuZV90cnVlLCBibmVfZmFsc2UpOiBSZW1vdmUuCgkoZXFfcmV0dXJuLCBlcV9ub3RfcmV0dXJuLCBuZV9yZXR1cm4sIG5lX25vdF9yZXR1cm4pOiBSZW1vdmUuCgkoYnJfdHJ1ZSwgYnJfZmFsc2UpOiBOZXcuICBVc2UgcHJlZGljYXRlX29wZXJhdG9yIGFuZAoJaWE2NF9leHBhbmRfcHJlZGljdGlvbi4KCShyZXR1cm5fdHJ1ZSwgcmV0dXJuX2ZhbHNlKTogTGlrZXdpc2UuCgkoY2FsbF9pbnRlcm5hbCk6IFVzZSBpYTY0X2V4cGFuZF9wcmVkaWN0aW9uLiAgRG9uJ3QgZW1pdCBzdG9wIGJpdC4KCShjYWxsX2ludGVybmFsMSwgY2FsbF92YWx1ZV9pbnRlcm5hbCk6IExpa2V3aXNlLgoJKGNhbGxfdmFsdWVfaW50ZXJuYWwxLCBjYWxsX211bHRpcGxlX3ZhbHVlc19pbnRlcm5hbDEpOiBMaWtld2lzZS4KCgkqIGNvbmZpZy9pYTY0L2lhNjQuYyAoaWE2NF9kaXJlY3RfcmV0dXJuKTogUmVxdWlyZSBmcmFtZSBzaXplIHplcm8uCgoJKiBjb25maWcvaWE2NC9pYTY0Lm1kIChleHRlbmRzZmRmMik6IFNwbGl0IG9ubHkgYWZ0ZXIgcmVsb2FkLgoKMjAwMC0wNS0wOCAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAY3lnbnVzLmNvbT4KCgkqIHJ0bGFuYWwuYyAobWF5X3RyYXBfcCk6IENvbnNpZGVyIG9sZC1zdHlsZSBhbmQgdm9sYXRpbGUKCWFzbXMgdG8gdHJhcC4KCk1vbiBNYXkgIDggMTc6MTY6NDggMjAwMCAgSmltIFdpbHNvbiAgPHdpbHNvbkBjeWdudXMuY29tPgoKCSogY29uZmlnL2lhNjQvaWE2NC5oIChSRVRVUk5fQUREUl9SVFgpOiBVc2UgQ09VTlQgbm90IGNvdW50LgoKMjAwMC0wNS0wOCAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAY3lnbnVzLmNvbT4KCgkqIGNvbmZpZy9pYTY0L2lhNjQuaCAocHJlZGljYXRlX29wZXJhdG9yKTogRGVjbGFyZS4KCgkqIGNvbmZpZy9pYTY0L2lhNjQubWQgKGV4dGVuZHNmZGYyKTogU3BsaXQgdGhlIG5vcCBjYXNlIG91dAoJb2YgZXhpc3RlbmNlLgoKCSogZ2Vuc3VwcG9ydC5jIChwcm9jZXNzX3J0eCk6IENvcHkgYW5kIHBvc3QtcHJvY2VzcyBlYWNoIG1lbWJlcgoJb2YgdGhlIGRlZmluZV9pbnNuIHJ0dmVjIGluZGl2aWR1YWxseS4KCk1vbiAgOCBNYXkgMjI6MTc6MzUgMjAwMCAgTmVpbCBCb290aCAgPE5laWxCQGVhcnRobGluZy5uZXQ+CgoJKiBjcHBsZXguYyAoc3BlbGxfdG9rZW4pOiBOZXcgZnVuY3Rpb24uCgkoVE9LRU5fTEVOKTogQWRkIDEgZm9yIHdoaXRlc3BhY2UuCgkoX2NwcF9sZXhfZmlsZSk6IFVwZGF0ZSB0byB1c2Ugc3BlbGxfdG9rZW4uCgkqIGNwcGxpYi5oIChFKTogUmVtb3ZlLgoJKFRUWVBFX1RBQkxFKTogVXBkYXRlIENQUF9WU1BBQ0UgZW50cnkuCgoyMDAwLTA1LTA4ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEBjeWdudXMuY29tPgoKCSogZmxvdy5jIChpbml0X3Byb3BhZ2F0ZV9ibG9ja19pbmZvKTogV2F0Y2ggb3V0IGZvciBjb25kaXRpb25hbAoJYnJhbmNoIHRvIG5leHQgaW5zdHJ1Y3Rpb24sIGFuZCB0aHVzIG9uZSBvdXRnb2luZyBlZGdlLgoKCSogY29uZmlnL2lhNjQvaWE2NC5jIChpYTY0X2VuY29kZV9zZWN0aW9uX2luZm8pOiBFeGl0IGVhcmx5Cglmb3IgZ2xvYmFsIHJlZ2lzdGVyIHZhcmlhYmxlczsgZG9uJ3Qgc3BlY2lhbCBjYXNlIF9fW0NEXVRPUl9MSVNUX187CgltaW5kIGdnY19wIGZvciBzdHJpbmcgYWxsb2NhdGlvbi4KCjIwMDAtMDUtMDggIE5pY2sgQ2xpZnRvbiAgPG5pY2tjQGN5Z251cy5jb20+CgoJKiBjb25maWcvaTM4Ni9pMzg2LmggKEVMSU1JTkFCTEVfUkVHUyk6IEZpeCBjb21tZW50LgoKMjAwMC0wNS0wOCAgQnJ1Y2UgS29yYiAgPGJrb3JiQGdudS5vcmc+CgoJKiBmaXhpbmMvbWtmaXhpbmMuc2g6ICBmaXhpbmMuc2NvIGlzIG5vIGxvbmdlciB1c2VkCglpPzg2LSotbXNkb3NkamdwcCogbm8gbG9uZ2VyIHVzZXMgZml4aW5jbHVkZXMKCSogZml4aW5jL2dlbmZpeGVzOiAgaW5jbGhhY2suc2ggYW5kIGZpeGluY2wuc2ggYXJlIG5vIGxvbmdlciBnZW5lcmF0ZWQKCSogZml4aW5jL2luY2xoYWNrLnNoOiAgZGVsZXRlZAoJKiBmaXhpbmMvaGFja3NoZWxsLnRwbDogIGRlbGV0ZWQKCSogZml4aW5jL2luY2xoYWNrLnRwbDogIGRlbGV0ZWQKCSogZml4aW5jL01ha2VmaWxlLmluOiAgUmVtb3ZlIGRlcGVuZGVuY2llcyBvbiBhYm92ZQoJKiBmaXhpbmMvZml4aW5jbC5zaDogICJETyBOT1QgRURJVCIgdGV4dCBtb2RpZmllZAoKMjAwMC0wNS0wOCAgQW5kcmVhcyBKYWVnZXIgIDxhakBzdXNlLmRlPgoKCSogY29uZmlnL21pcHMvbGludXguaDogUmVtb3ZlIHVuZGVmaW5lcyB3aGljaCBkaXNhYmxlZCAuY3Rvci8uZHRvcgoJc3VwcG9ydC4KCjIwMDAtMDUtMDcgIFphY2sgV2VpbmJlcmcgIDx6YWNrQHdvbGVyeS5jdW1iLm9yZz4KCgkqIE1ha2VmaWxlLmluIChMT09TRV9DRkxBR1MpOiBBZGQgL2cgbW9kaWZpZXJzIHRvIGJvdGggc2VkCglzdWJzdGl0dXRpb25zLgoKU3VuICA3IE1heSAwODo0Mzo1MyAyMDAwICBOZWlsIEJvb3RoICA8TmVpbEJAZWFydGhsaW5nLm5ldD4KCgkqIGNwcGxleC5jOiBNb3ZlIG5ldyBsZXhlciBkZWZpbml0aW9ucyBhbmQgcHJvdG90eXBlcwoJdG8gdG9wLiAgQ29uZGl0aW9uYWwgaW5jbHVkZSB0aGVzZSBhbmQgdGhlIGNvZGUgaWYKCU5FV19MRVhFUiBpcyBkZWZpbmVkLiAgUmVuYW1lIGZ1bmN0aW9ucyB3aG9zZSBuYW1lcwoJY2xhc2ggaWYgdGhpcyBjb2RlIGluY2x1ZGVkLgoKU3VuIE1heSAgNyAwMDo1NDo1NyBFRFQgMjAwMCAgSm9obiBXZWhsZSAgKGpvaG5AZmVpdGguY29tKQoKCSogcnRsLmRlZiAoQ09ORF9FWEVDKTogQ2xhcmlmeS4KCgkqIGkzODYubWQgKGV4dGVuZHNpZGkyKTogQ2xvYmJlciAocmVnOkNDIDE3KSBpbiB0aGUKCXNhbWUgZmFzaGlvbiBhcyB6ZXJvX2V4dGVuZHNpZGkyLgoKMjAwMC0wNS0wNiAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAY3lnbnVzLmNvbT4KCgkqIGNvbmZpZy9pYTY0L2lhNjQuYyAocHJlZGljYXRlX29wZXJhdG9yKTogTmV3LgoJKGlhNjRfcHJpbnRfb3BlcmFuZCk6IEhhbmRsZSAnSicuCgkocnR4X25lZWRzX2JhcnJpZXIpOiBIYW5kbGUgQ09ORF9FWEVDLgoJKiBjb25maWcvaWE2NC9pYTY0LmggKEJSQU5DSF9DT1NUKTogRGVmaW5lLgoJKFBSRURJQ0FURV9DT0RFUyk6IFVwZGF0ZS4KCSogY29uZmlnL2lhNjQvaWE2NC5tZDogRG9jdW1lbnQgdXNlZCB1bnNwZWMgdmFsdWVzLgoJKGF0dHIgcHJlZGljYWJsZSk6IE5ldy4KCShtb3Z4ZiwgbW92eGZfaW50ZXJuYWwpOiBOZXcuCgkoZXh0ZW5kc2ZkZjIpOiBEb24ndCBjb21tZW50IG91dCBub3AuCgkoZmxvYXRkaWRmMik6IFJlbW92ZS4KCSh0cnVuY3hmc2YyLCB0cnVuY3hmZGYyLCBmbG9hdGRpeGYyKTogTmV3LgoJKGFic3NpMiwgYWJzZGkyKTogUHV0IHRoZSBuZWcgaW4gdGhlICJ0cnVlIiBzbG90LgoJKGNvbmRpdGlvbmFsIGJyYW5jaCBpbnN0cnVjdGlvbnMpOiBNYXJrIG5vdCBwcmVkaWNhYmxlLgoJKGNtb3YqX2ludGVybmFsKTogVXNlIHByZWRpY2F0ZV9vcGVyYXRvci4gIFNwbGl0IHRvIGNvbmRfZXhlYy4KCShhYnMqX2ludGVybmFsKTogTGlrZXdpc2UuCgkoYWxsb2MsIHNldF9ic3ApOiBNYXJrIG5vdCBwcmVkaWNhYmxlLgoJKGJhcnJpZXIsIGluc25fZ3JvdXBfYmFycmllciwgZmx1c2hfY2FjaGUpOiBMaWtld2lzZS4KCShkZWZpbmVfY29uZF9leGVjKTogTmV3LgoKMjAwMC0wNS0wNiAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAY3lnbnVzLmNvbT4KCgkqIGMtZGVjbC5jOiBJbmNsdWRlICJ0bV9wLmgiLgoKCSogY29uZmlnL2lhNjQvaWE2NC1wcm90b3MuaDogUmVhcnJhbmdlIGRlY2xzIHRvIHJlZHVjZSBpZmRlZiBtYWRuZXNzLgoJKGZldGNoYWRkX29wZXJhbmQsIGlhNjRfZXhwYW5kX2ZldGNoX2FuZF9vcCk6IERlY2xhcmUuCgkoaWE2NF9leHBhbmRfb3BfYW5kX2ZldGNoKTogRGVjbGFyZS4KCSogY29uZmlnL2lhNjQvaWE2NC5jOiBJbmNsdWRlICJ0b3BsZXYuaCIuICBLaWxsIHRyYWlsaW5nIHdoaXRlc3BhY2UuCgkoc2V0am1wX29wZXJhbmQpOiBDb25zdGlmeSB2YXJpYWJsZXMgZm9yIFhTVFIuCgkoaWE2NF9lbmNvZGVfc2VjdGlvbl9pbmZvKTogTGlrZXdpc2UuCgkoaWE2NF9wcmludF9vcGVyYW5kKTogVXNlICVkIGZvciBleGFjdF9sb2cyOyBjYXN0IDMyLWJpdCBwcmludGVkCgl2YWx1ZXMgdG8gaW50LgoJKGlhNjRfYXNtX291dHB1dF9leHRlcm5hbCk6IENvbnN0aWZ5IG5hbWUuCgkocHJvY2Vzc19zZXQpOiBVc2UgSE9TVF9XSURFX0lOVF9QUklOVF9ERUMgZm9yIGZyYW1lIHNpemUuCgkocHJvY2Vzc19mb3JfdW53aW5kX2RpcmVjdGl2ZSk6IFByb3ZpZGUgc3dpdGNoIGRlZmF1bHQuCgkoaWE2NF9leHBhbmRfY29tcGFyZV9hbmRfc3dhcCk6IFJlbW92ZSB1bnVzZWQgdmFyaWFibGVzLgoJKGlhNjRfZXhwYW5kX2J1aWx0aW4pOiBMaWtld2lzZS4KCSogY29uZmlnL2lhNjQvaWE2NC5oIChBU01fT1VUUFVUX0JZVEUpOiBNYXNrIGFuZCBjYXN0IHZhbHVlIHRvIGludAoJZm9yIHByaW50aW5nLgoKCSogY29uZmlnL2lhNjQvaWE2NC5jIChzZGF0YV9zeW1ib2xpY19vcGVyYW5kKTogTWFyayB1bnVzZWQgYXJncy4KCShzeW1ib2xpY19vcGVyYW5kLCBmdW5jdGlvbl9vcGVyYW5kLCBzZXRqbXBfb3BlcmFuZCk6IExpa2V3aXNlLgoJKHNoaWZ0X2NvdW50X29wZXJhbmQsIHNoaWZ0XzMyYml0X2NvdW50X29wZXJhbmQpOiBMaWtld2lzZS4KCShzaGxhZGRfb3BlcmFuZCwgZmV0Y2hhZGRfb3BlcmFuZCwgaWE2NF9mdW5jdGlvbl9wcm9sb2d1ZSk6IExpa2V3aXNlLgoJKGlhNjRfZnVuY3Rpb25fZXBpbG9ndWUsIGlhNjRfc2V0dXBfaW5jb21pbmdfdmFyYXJncyk6IExpa2V3aXNlLgoJKGlhNjRfZnVuY3Rpb25fYXJnX3BhcnRpYWxfbnJlZ3MsIGlhNjRfZnVuY3Rpb25fdmFsdWUpOiBMaWtld2lzZS4KCShpYTY0X3ByaW50X29wZXJhbmRfYWRkcmVzcywgaWE2NF9zZWNvbmRhcnlfcmVsb2FkX2NsYXNzKTogTGlrZXdpc2UuCgkoaWE2NF9leHBhbmRfYnVpbHRpbik6IExpa2V3aXNlLgoJKGNhbGxfbXVsdGlwbGVfdmFsdWVzX29wZXJhdGlvbik6IE1ha2UgZGVzdF9yZWdubyB1bnNpZ25lZC4KCjIwMDAtMDUtMDYgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgoJKiBydGwuZGVmIChERUZJTkVfQ09ORF9FWEVDKTogTmV3LgoJKiBtZC50ZXhpOiBEb2N1bWVudCBpdC4KCgkqIGdlbnN1cHBvcnQuYyAoaW5wdXRfZmlsZSk6IFJlbW92ZS4KCShzdHJ1Y3QgcXVldWVfZWxlbSk6IEFkZCBsaW5lbm8uCgkocnR4X3JlYWR5X3F1ZXVlKTogUmVtb3ZlLgoJKGVycm9ycyk6IE5ldy4KCShwcmVkaWNhYmxlX2RlZmF1bHQpOiBOZXcuCgkocHJlZGljYWJsZV90cnVlLCBwcmVkaWNhYmxlX2ZhbHNlKTogTmV3LgoJKGRlZmluZV9hdHRyX3F1ZXVlLCBkZWZpbmVfYXR0cl90YWlsKTogTmV3LgoJKGRlZmluZV9pbnNuX3F1ZXVlLCBkZWZpbmVfaW5zbl90YWlsKTogTmV3LgoJKGRlZmluZV9jb25kX2V4ZWNfcXVldWUsIGRlZmluZV9jb25kX2V4ZWNfdGFpbCk6IE5ldy4KCShvdGhlcl9xdWV1ZSwgb3RoZXJfdGFpbCk6IE5ldy4KCShxdWV1ZV9wYXR0ZXJuKTogTmV3LgoJKHByb2Nlc3NfcnR4KTogQWRkIHBhdHRlcm5zIHRvIHRoZSBhcHByb3ByaWF0ZSBxdWV1ZXMuCgkoaXNfcHJlZGljYWJsZSwgaWRlbnRpZnlfcHJlZGljYWJsZV9hdHRyaWJ1dGUpOiBOZXcuCgkobl9hbHRlcm5hdGl2ZXMsIGNvbGxlY3RfaW5zbl9kYXRhKTogTmV3LgoJKGFsdGVyX3ByZWRpY2F0ZV9mb3JfaW5zbiwgYWx0ZXJfdGVzdF9mb3JfaW5zbik6IE5ldy4KCShzaGlmdF9vdXRwdXRfdGVtcGxhdGUsIGFsdGVyX291dHB1dF9mb3JfaW5zbik6IE5ldy4KCShwcm9jZXNzX29uZV9jb25kX2V4ZWMsIHByb2Nlc3NfZGVmaW5lX2NvbmRfZXhlYyk6IE5ldy4KCShpbml0X21kX3JlYWRlcik6IFJlYWQgdGhlIGVudGlyZSBmaWxlLiAgUHJvY2VzcyBkZWZpbmVfY29uZF9leGVjLgoJKHJlYWRfbWRfcnR4KTogUmV0dXJuIGVsZW1lbnRzIGZyb20gdGhlIHF1ZXVlcy4KCjIwMDAtMDUtMDYgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgoJKiBmbG93LmMgKG1hcmtfc2V0XzEpOiBEb24ndCB1cGRhdGUgY29uZGl0aW9uYWwgbGlmZSBpbmZvCglpZiB0aGUgcmVnaXN0ZXIgaXMgbm90X2RlYWQuCgoyMDAwLTA1LTA2ICBaYWNrIFdlaW5iZXJnICA8emFja0B3b2xlcnkuY3VtYi5vcmc+CgoJKiBNYWtlZmlsZS5pbiAoU1RBR0VTVFVGRik6IEFkZCBnZW5ydGwuYyBhbmQgZ2VucnRsLmguCgkobW9zdGx5Y2xlYW4pOiBBbHNvIGRlbGV0ZSBmaXhpbmNsLCBmaXhpbmMuc2gsIGFuZAoJc3BlY3MucmVhZHksIGFuZCBtYWtlIGNsZWFuIGluIHRoZSBmaXhpbmMgc3ViZGlyLgoKMjAwMC0wNS0wNiAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAY3lnbnVzLmNvbT4KCgkqIE1ha2VmaWxlLmluIChnZW5zdXBwb3J0Lm8pOiBDb21waWxlIGZvciB0aGUgaG9zdC4KCShob3N0LXByZWZpeCBnZW5zdXVwcnQubyk6IFJlbW92ZS4KCShnZW5mbGFncy5vKTogRGVwZW5kIG9uIGdlbnN1cHBvcnQuaCBhbmQgT0JTVEFDS19ILgoJKGdlbmF0dHJ0YWIubyk6IExpa2V3aXNlLgoJKGdlbmNvZGVzLm8pOiBEZXBlbmQgb24gZ2Vuc3VwcG9ydC5oLgoJKGdlbmVtaXQubywgZ2Vub3Bpbml0Lm8sIGdlbnJlY29nLm8sIGdlbmV4dHJhY3Qubyk6IExpa2V3aXNlLgoJKGdlbnBlZXAubywgZ2VuYXR0ci5vLCBnZW5vdXRwdXQubyk6IExpa2V3aXNlLgoKCSogZ2Vuc3VwcG9ydC5jIChvYnN0YWNrLCBydGxfb2JzdGFjayk6IE5ldy4KCShpbml0X21kX3JlYWRlcik6IEluaXRpYWxpemUgcnRsX29ic3RhY2suCgkqIGdlbnN1cHBvcnQuaCAocnRsX29ic3RhY2spOiBEZWNsYXJlLgoJKG1lc3NhZ2Vfd2l0aF9saW5lKTogRGVjbGFyZS4KCgkqIGdlbmF0dHIuYzogUmVtb3ZlIGFsbCB0cmFjZXMgb2Ygb2JzdGFjayBtYW5pcHVsYXRpb24uCgkqIGdlbmNvZGVzLmMsIGdlbmNvbmZpZy5jLCBnZW5lbWl0LmMsIGdlbmV4dHJhY3QuYzogTGlrZXdpc2UuCgkqIGdlbm9waW5pdC5jLCBnZW5vdXRwdXQuYywgZ2VucGVlcC5jLCBnZW5yZWNvZy5jOiBMaWtld2lzZS4KCgkqIGdlbmF0dHJ0YWIuYyAob2JzdGFjaywgcnRsX29ic3RhY2spOiBSZW1vdmUuCgkobWFpbik6IERvbid0IGluaXQgcnRsX29ic3RhY2suCgkqIGdlbmZsYWdzLmM6IExpa2V3aXNlLgoKCSogZ2VucmVjb2cuYyAobWVzc2FnZV93aXRoX2xpbmUpOiBNb3ZlIC4uLgoJKiBnZW5zdXBwb3J0LmM6IC4uLiBoZXJlLgoKMjAwMC0wNS0wNiAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAY3lnbnVzLmNvbT4KCgkqIGMtdHlwZWNrLmMgKGJ1aWxkX2NfY2FzdCk6IFJlbW92ZSBkZWFkIGNvZGUuCgoyMDAwLTA1LTA2ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEBjeWdudXMuY29tPgoKCSogZmxvdy5jIChzcGxpdF9lZGdlKTogRG9uJ3QgYWxsb2NhdGUgZ2xvYmFsX2xpdmVfYXRfc3RhcnQgZm9yCgl0aGUgbmV3IGJsb2NrIHVubGVzcyB0aGUgb2xkIGJsb2NrcyBoYWQgdGhlbSBhcyB3ZWxsLgoKCSogZmxvdy5jIChtYXJrX3NldF8xKTogUmVzcGVjdCBub3RfZGVhZCB3aGVuIHVwZGF0aW5nIHJlZ19saXZlLgoKCSogaWZjdnQuYyAobm9jZV9wcm9jZXNzX2lmX2Jsb2NrKTogRG9uJ3QgdXNlIGFuIGluc25fYiBmcm9tCgl0ZXN0X2JiIGlmIGEgb3IgYiB1c2VzIHguCgoyMDAwLTA1LTA2ICBaYWNrIFdlaW5iZXJnICA8emFja0B3b2xlcnkuY3VtYi5vcmc+CgoJKiBjcHBoYXNoLmg6IFJlbW92ZSBjb25kaXRpb25hbCAjZGVmaW5lIG9mIF9fZXh0ZW5zaW9uX18uCgkqIHJ0bC5oOiBBZGQgX19leHRlbnNpb25fXyB0byBSVExfQ0hFQ0sxLCBSVExfQ0hFQ0syLAoJUlRMX0NIRUNLQzEsIFJUTF9DSEVDS0MyLCBhbmQgUlRWRUNfRUxUIG1hY3JvcwoJKEVOQUJMRV9SVExfQ0hFQ0tJTkcgb25seSkuCgkqIHRyZWUuaDogQWRkIF9fZXh0ZW5zaW9uX18gdG8gVFJFRV9DSEVDSywgVFJFRV9DTEFTU19DSEVDSywKCUNTVF9PUl9DT05TVFJVQ1RPUl9DSEVDSywgYW5kIEVYUFJfQ0hFQ0sgbWFjcm9zCgkoRU5BQkxFX1RSRUVfQ0hFQ0tJTkcgb25seSkuCgkqIHZhcnJheS5oOiBBZGQgX19leHRlbnNpb25fXyB0byBWQVJSQVlfQ0hFQ0sgbWFjcm8KCShFTkFCTEVfQ0hFQ0tJTkcgb25seSkuCgoyMDAwLTA1LTA2ICBSaWNoYXJkIEVhcm5zaGF3IChyZWFucnNoYUBhcm0uY29tKQoKCVVzZSBuZXcgdGFpbC1jYWxsaW5nIG1lY2hhbmlzbSBvbiBBUk0uCgkqIGFybS5tZCAoc2liY2FsbCwgc2liY2FsbF92YWx1ZSk6IE5ldyBleHBhbmRzLgoJKHNpYmNhbGxfaW5zbiwgc2liY2FsbF92YWx1ZV9pbnNuLCBzaWJjYWxsX2VwaWxvZ3VlKTogTmV3IGluc25zLgoJKHRhaWxjYWxsaW5nIHBlZXBob2xlcyk6IERlbGV0ZS4KCShwdXNoX211bHRpKTogU2ltcGxpZnkuCgkqIGFybS5jIChscl9zYXZlX2VsaW1pbmF0ZWQpOiBEZWxldGUgZGVmaW5pdGlvbi4KCShwYXR0ZXJuX3JlYWxseV9jbG9iYmVyc19sciwgZnVuY3Rpb25fcmVhbGx5X2Nsb2JiZXJzX2xyKTogRGVsZXRlLgoJKG91dHB1dF9yZXR1cm5faW5zdHJ1Y3Rpb24pOiBSZW1vdmUgY2hlY2tzIG9uIGxyX3NhdmVfZWxpbWluYXRlZC4KCShvdXRwdXRfYXJtX3Byb2xvZ3VlKTogUmVtb3ZlIG9sZCB0YWlsLWNhbGxpbmcgY29kZS4KCShhcm1fb3V0cHV0X2VwaWxvZ3VlKTogTmV3IHBhcmFtZXRlciwgcmVhbGx5X3JldHVybi4gIEFsbCBjYWxsZXJzCgljaGFuZ2VkLiAgSGFuZGxlIHRhaWwtY2FsbGluZyBlcGlsb2d1ZXMuCgkqIGFybS5oIChscl9zYXZlX2VsaW1pbmF0ZWQpOiBEZWxldGUgZGVjbGFyYXRpb24uCgkoZnJhbWVfcG9pbnRlcl9uZWVkZWQpOiBEZWxldGUgZGVjbGFyYXRpb24uCgkqIGFybS1wcm90b3MuaCAoYXJtX291dHB1dF9lcGlsb2d1ZSk6IEFkanVzdCBwcm90b3R5cGUuCgoJKiBhcm0ubWQgKGlzX3RodW1iKTogRXhhbWluZSBzeW1ib2wgdGh1bWJfY29kZSwgbm90IGV4cHJlc3Npb24KCVRBUkdFVF9BUk0uCgkqIGFybS5jICh0aHVtYl9jb2RlKTogRGVmaW5lIGl0LgoJKGFybV9vdmVycmlkZV9vcHRpb25zKTogU2V0IGl0LgoJKiBhcm0uaCAodGh1bWJfY29kZSk6IERlY2xhcmUgaXQuCgoyMDAwLTA1LTA2ICBSaWNoYXJkIEVhcm5zaGF3IChyZWFucnNoYUBhcm0uY29tKQoKCSogYXJtLXByb3Rvcy5oIChhcm1fZGxsZXhwb3J0X25hbWVfcCwgYXJtX2RsbGltcG9ydF9uYW1lX3ApOiBDb25zdGlmeS4KCjIwMDAtMDUtMDYgIFJpY2hhcmQgRWFybnNoYXcgKHJlYW5yc2hhQGFybS5jb20pCgoJKiBhcm0uYyAoYXJtX2dlbl9sb2FkX211bHRpcGxlLCBhcm1fZ2VuX3N0b3JlX211bGl0cGxlKTogRG9uJ3QgYWRkCglib2d1cyBjbG9iYmVyIHRvIGluc25zLgoJKGxvYWRfbXVsdGlwbGVfb3BlcmF0aW9uLCBzdG9yZV9tdWxpdHBsZV9vcGVyYXRpb24pOiBEb24ndCBjaGVjawoJZm9yIGl0LgoJKiBhcm0ubWQgKGxkbXNpX3Bvc3RpbmMsIHN0bXNpX3Bvc3RpbmMpOiBBZGp1c3QgYWNjb3JkaW5nbHkuCgoJKiBhcm0ubWQgKGFuZF9zY2MsIGlvcl9zY2MpOiBBZGQgbWlzc2luZyBtb2RlLgoKCSogYXJtLm1kIChjYWxsX3ZhbHVlX3N5bWJvbCk6IFJlbW92ZSBwcmVkaWNhdGUgZnJvbSBvcDIuCgoJKiBhcm0uaCAoU1BFQ0lBTF9NT0RFX1BSRURJQ0FURVMpOiBEZWZpbmUuCgpTYXQgTWF5ICA2IDA2OjI1OjU2IDIwMDAgIFJpY2hhcmQgS2VubmVyICA8a2VubmVyQHZsc2kxLnVsdHJhLm55dS5lZHU+CgoJKiBleHByLmMgKGdldF9zdWJ0YXJnZXQpOiBOZXcgZnVuY3Rpb24uCgkoZm9yY2Vfb3BlcmFuZCwgZXhwYW5kX2V4cHIsIGRvX3N0b3JlX2ZsYWcpOiBVc2UgaXQuCgoJKiB0b3BsZXYuYyAoY29tcGlsZV9maWxlKTogRG9uJ3QgdGFrZSBzdHJsZW4gb2YgTkFNRSBpZiBudWxsLgoKMjAwMC0wNS0wNiAgRGF2aWQgRWRlbHNvaG4gIDxlZGVsc29obkBnbnUub3JnPgoKCSogeGNvZmZvdXQuYyAoeGNvZmZfY3VycmVudF9pbmNsdWRlX2ZpbGUsCgl4Y29mZl9jdXJyZW50X2Z1bmN0aW9uX2ZpbGUsIHhjb2ZmX2xhc3RmaWxlKTogQ29uc3RpZnkgY2hhciAqLgoJKHhjb2Zmb3V0X3NvdXJjZV9maWxlLCB4Y29mZm91dF9zb3VyY2VfbGluZSk6IE1ha2UgZmlsZW5hbWUgJ2NvbnN0CgljaGFyIConLgoJKHhjb2Zmb3V0X2RlY2xhcmVfZnVuY3Rpb24pOiBNYWtlIG5hbWUgJ2NvbnN0IGNoYXIgKicuCgkoeGNvZmZvdXRfZW5kX2VwaWxvZ3VlKTogTWFrZSBmbmFtZSAnY29uc3QgY2hhciAqJwoJKiB4Y29mZm91dC5oICh4Y29mZl9jdXJyZW50X2luY2x1ZGVfZmlsZSwgeGNvZmZfbGFzdGZpbGUsCgl4Y29mZm91dF9kZWNsYXJlX2Z1bmN0aW9uLCB4Y29mZm91dF9zb3VyY2VfbGluZSk6IE1hdGNoIGFib3ZlLgoKCSogYWl4NDMuaCAoU1VCVEFSR0VUX09WRVJSSURFX09QVElPTlMpOiAtbXBvd2VycGM2NCB3aXRob3V0CgktbWFpeDY0CWlzIGVycm9yLgoJKiByczYwMDAuYyAocHJpbnRfb3BlcmFuZCk6IEZpeCBsb3NzYWdlIHR5cG8uCgkob3V0cHV0X2NicmFuY2gpOiBSZW1vdmUgImNyIiBkZWNvcmF0aW9uIGZvciBub3cuCgkqIHJzNjAwMC5oIChBU01fT1VUUFVUX0RFRl9GUk9NX0RFQ0xTKTogTWFrZSBhbGlhcyAnY29uc3QgY2hhciAqJy4KClNhdCBNYXkgIDYgMDY6NTU6MzIgMjAwMCAgRGVuaXMgQ2hlcnR5a292ICA8ZGVuaXNjQG92ZXJ0YS5ydT4KCgkqIGNvbmZpZy9hdnIvYXZyLmMgKG91dF9zaGlmdF93aXRoX2NudCk6IEJ1Z2ZpeCBmb3Igc2hpZnQgYnkKCWNvbnN0YW50IGNvdW50LgoKMjAwMC0wNS0wNSAgQnJ1Y2UgS29yYiAgPGJrb3JiQGdudS5vcmc+CgoJKiBmaXhpbmMvZ2VuZml4ZXM6IEltcHJvdmUgdGhlIG1hdGNoaW5nIGZvciBtYWtlIHRhcmdldCBuYW1lcwoKMjAwMC0wNS0wNSAgQ2F0aGVyaW5lIE1vb3JlICA8Y2xtQGN5Z251cy5jb20+CgoJKiBjLWNvbW1vbi5jIChkZWNsX2F0dHJpYnV0ZXMpOiAgRm9yIFRZUEVfREVDTHMgYXR0YWNoIHRoZQoJYXR0cmlidXRlIHRvIHRoZSBkZWNsLgoJKiBjLWRlY2wuYyAocHVzaGRlY2wpOiBQcm9wYWdhdGUgdGhlIFVTRUQgYXR0cmlidXRlIHRvIHRoZQoJdHlwZSBjb3B5LgoKMjAwMC0wNS0wNSAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAY3lnbnVzLmNvbT4KCgkqIHJ0bGFuYWwuYyAocmVnX292ZXJsYXBfbWVudGlvbmVkX3ApOiBUcmVhdCBwYXJhbGxlbHMgaW4gdGhlCglzYW1lIHdheSBlbWl0X2dyb3VwX2xvYWQgZG9lcy4KCjIwMDAtMDUtMDUgTWFyayBFbGJyZWNodCA8c25vd2JhbGwzQGJpZ2Zvb3QuY29tPgoKCSogZ2NjLmMgKHNldF9pbnB1dCkgW0hBVkVfRE9TX1NUWUxFX0ZJTEVfU1lTVEVNXTogU2tpcCBkcml2ZSBuYW1lLgoKCSogdG9wbGV2LmMgKG91dHB1dF9maWxlX2RpcmVjdGl2ZSk6IFVzZSBJU19ESVJfU0VQQVJBVE9SLgoJKG1haW4pOiBMaWtld2lzZS4KCjIwMDAtMDUtMDUgUm9kbmV5IEJyb3duCTxSb2RuZXlCcm93bkBteW5kLmNvbT4KCgkqIHBhLmggKEZVTkNUSU9OX0FSR19BRFZBTkNFKTogV2FybmluZyByZW1vdmFsLgoKRnJpIE1heSAgNSAxMDoyOToyMSAyMDAwICBNYXJjIEVzcGllIDxlc3BpZUBjdnMub3BlbmJzZC5vcmc+CgoJKiBjb25maWcvb3BlbmJzZC5oIChMSU5LX1NQRUMpOiBwYXNzIGNvcnJlY3QgZmxhZ3MgdG8gbGQKCXRvIHN1cHBvcnQgLXNoYXJlZCwgb24gcGxhdGZvcm1zIHdpdGggZHluYW1pYyBsaWJyYXJpZXMuCgpGcmkgTWF5ICA1IDEwOjI3OjA2IDIwMDAgIFBoaWxpcHBlIERlIE11eXRlciAgPHBoZG1AbWFjcWVsLmJlPgoKCSogc3lzdGVtLmggKFNfSVNCTEspOiBQcm92aWRlIGZhbGxiYWNrIGRlZmluaXRpb24uCgoyMDAwLTA1LTA1ICBHZW9mZiBCZXJyeSAgPGdlb2ZmYkBib3BzLmNvbT4KCgkqIGV4dGVuZC50ZXhpIChFeHRlbmRlZCBBc20pOiBEb2N1bWVudCBpbmFiaWxpdHkgdG8gZ2l2ZSBhc20KCXN0YXRlbWVudHMgYWNjZXNzIHRvIGNvbmRpdGlvbiBjb2Rlcy4KCjIwMDAtMDUtMDUgIE1hcmVrIE1pY2hhbGtpZXdpY3ogIDxtYXJla21AbGludXgub3JnLnBsPgoKCSogdmFyYXNtLmMgKGFzbV9lbWl0X3VuaW5pdGlhbGlzZWQpOiBVc2UgMCwgbm90IE5VTEwKCWFzIGFyZyAyIG9mIFVOSVFVRV9TRUNUSU9OLgoKRnJpIE1heSAgNSAxMDoxMTo0MSAyMDAwICBKZWZmcmV5IEEgTGF3ICAobGF3QGN5Z251cy5jb20pCgoJKiBwcmVkaWN0LmM6IFJlbW92ZSBNYXkgNCBjaGFuZ2UuCgkqIGJiLXJlb3JkZXIuYyAobWFrZV9yZW9yZGVyX2NoYWluKTogRG8gbm90IHBlcmZvcm0gYmxvY2sgbW92ZW1lbnQKCWlmIHdlIGhhdmUgcHJlZGljdGVkIHRoZSBicmFuY2ggYXQgNTAtNTAgcHJvYmFiaWxpdHkuCgoyMDAwLTA1LTA1ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEBjeWdudXMuY29tPgoKCSogZmxvdy5jIChpbml0X3Byb3BhZ2F0ZV9ibG9ja19pbmZvKTogRml4IG1lcmdlIGVycm9yCglpbiBIQVZFX2NvbmRpdGlvbmFsX2V4ZWN1dGlvbiBjb2RlLgoKRnJpIE1heSAgNSAwNzo0Mzo1MCAyMDAwICBEZW5pcyBDaGVydHlrb3YgIDxkZW5pc2NAb3ZlcnRhLnJ1PgoKCSogY29uZmlnL2F2ci9hdnIuYyAob3V0X3NoaWZ0X3dpdGhfY250KTogR2VuZXRhcmUgYSBtb3JlIG9wdGltYWwKCXNoaWZ0IGN5Y2xlIGZvciB1bmtub3duIHNoaWZ0IGNvdW50LiBBbHNvIGdlbmVyYXRlcyBkZWMgKyBicnBsLgoJKGFzaGxxaTNfb3V0KTogRG9uJ3QgZ2VuZXJhdGUgZGVjICsgYnJwbCB3aGljaCBub3cgZ2VuZXJhdGVzIGJ5Cglgb3V0X3NoaWZ0X3dpdGhfY250Jy4KCShhc2hsaGkzX291dCk6IExpa2V3aXNlLgoJKGFzaGxzaTNfb3V0KTogTGlrZXdpc2UuCgkoYXNocnFpM19vdXQpOiBMaWtld2lzZS4KCShhc2hyaGkzX291dCk6IExpa2V3aXNlLgoJKGFzaHJzaTNfb3V0KTogTGlrZXdpc2UuCgkobHNocnFpM19vdXQpOiBMaWtld2lzZS4KCShsc2hyaGkzX291dCk6IExpa2V3aXNlLgoJKGxzaHJzaTNfb3V0KTogTGlrZXdpc2UuCgoyMDAwLTA1LTA0IE1hcmsgRWxicmVjaHQgPHNub3diYWxsM0BiaWdmb290LmNvbT4KCgkqIGdjYy5jIChmcmVlX3NwbGl0X2RpcmVjdG9yaWVzKTogQ29ycmVjdCB0eXBvIGluIGV4cGxhbmF0aW9uCglvZiBtYWtlX3JlbGF0aXZlX3ByZWZpeC4KCjIwMDAtMDUtMDQgIEdlb2ZmIEtlYXRpbmcgIDxnZW9mZmtAY3lnbnVzLmNvbT4KCgkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLmggKFBSRURJQ0FURV9DT0RFUyk6IEFkZCBmbG9hdGluZy1wb2ludAoJY29tcGFyaXNvbiBjb2RlcyB0byBicmFuY2hfY29tcGFyaXNvbl9vcGVyYXRvci4KCjIwMDAtMDUtMDQgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgoJKiBpZmN2dC5jIChub2NlX3Byb2Nlc3NfaWZfYmxvY2spOiBBbHdheXMgcmVzZXQgWCBpbiB0aGUgQSA9PSBCIGNhc2UuCgoyMDAwLTA1LTA0ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEBjeWdudXMuY29tPgoKCSogTWFrZWZpbGUuaW4gKEZQQklUX0ZVTkNTKTogUmVtb3ZlIF9kZl90b191c2kuCgkoRFBCSVRfRlVOQ1MpOiBSZW1vdmUgX3NmX3RvX3VzaS4KCShzdG1wLW11bHRpbGliKTogUGFzcyBMSUIxQVNNU1JDIHRvIGxpYmdjYy5tay4KCgkqIGlmY3Z0LmMgKG5vY2VfcHJvY2Vzc19pZl9ibG9jayk6IEZhaWwgaWYgQSBvciBCIG1vZGlmaWVkCgliZXR3ZWVuIGNvbmRpdGlvbiBhbmQganVtcC4KCgkqIGxpYmdjYzIuYyAobmVhciBlaF9jb250ZXh0X3NwZWNpZmljKTogQ29tbWVudCAjZW5kaWYgc3RyaW5nLgoJKiBsb25nbG9uZy5oOiBEb24ndCB1c2Ugc3RyaW5ncyB3aXRoIGVtYmVkZGVkIG5ld2xpbmVzLgoKMjAwMC0wNS0wNCAgR2VvZmYgS2VhdGluZyAgPGdlb2Zma0BjeWdudXMuY29tPgoKCSogY29uZmlnL3JzNjAwMC9yczYwMDAtcHJvdG9zLmg6IEFkZCBvdXRwdXRfY2JyYW5jaC4KCSogY29uZmlnL3JzNjAwMC9yczYwMDAuYyAoY2NyX2JpdF9uZWdhdGVkX3ApOiBEZWxldGUuCgkocHJpbnRfb3BlcmFuZCk6IERlbGV0ZSAldCBhbmQgJVQgY29kZXMuCgkob3V0cHV0X2NicmFuY2gpOiBOZXcgZnVuY3Rpb24uICBTdXBwb3J0IGJyYW5jaCBwcmVkaWN0aW9uLgoJKiBjb25maWcvcnM2MDAwL3JzNjAwMC5tZDogVXNlIG91dHB1dF9jYnJhbmNoIGZvcgoJY29uZGl0aW9uYWwgYnJhbmNoZXMgYW5kIHJldHVybnMuCgoyMDAwLTA1LTA0ICBKYXNvbiBNZXJyaWxsICA8amFzb25AY2FzZXkuY3lnbnVzLmNvbT4KCgkqIHNpbXBsaWZ5LXJ0eC5jIChzaW1wbGlmeV90ZXJuYXJ5X29wZXJhdGlvbik6IENhc3QgdG8gdW5zaWduZWQuCgkqIHN0b3ItbGF5b3V0LmMgKHBsYWNlX2ZpZWxkKTogTGlrZXdpc2UuCgkqIGludGVncmF0ZS5oIChzdHJ1Y3QgaW5saW5lX3JlbWFwKTogTWFrZSByZWdub19wb2ludGVyX2FsaWduIHVuc2lnbmVkLgoJKiBleHByLmMgKHN0b3JlX2V4cHIpOiBNYWtlIGFsaWduIHVuc2lnbmVkLgoJKiBleHBsb3cuYyAocGx1c19jb25zdGFudF93aWRlKTogTWFrZSBsb3cgd29yZHMgdW5zaWduZWQuCgkqIGV4cG1lZC5jIChjaG9vc2VfbXVsdGlwbGllcik6IExpa2V3aXNlLgoJKiBmb2xkLWNvbnN0LmMgKGZvbGQpOiAgTGlrZXdpc2UuCgkqIHRyZWUuaCAoYnVpbGRfaW50XzIpOiBMaWtld2lzZS4KCSogdHJlZS5jIChidWlsZF9pbnRfMl93aWRlLCB0cmVlX2ludF9jc3RfbXNiKTogTGlrZXdpc2UuCgkqIGVtaXQtcnRsLmMgKGdlbl9yZWdfcnR4KTogQWRkIGNhc3QgdG8gdW5zaWduZWQgY2hhciouCgkoaW5pdF9lbWl0KTogQ2hhbmdlIGNhc3QgdG8gdW5zaWduZWQgY2hhciouCgkqIHZhcmFzbS5jIChjb21wYXJlX2NvbnN0YW50XzEpOiBBZGQgY2FzdCB0byBjaGFyKi4KCSogZ2NzZS5jIChkZWxldGVfbnVsbF9wb2ludGVyX2NoZWNrcyk6IENoYW5nZSBjYXN0IHRvIHVuc2lnbmVkIGludCouCgkqIHJlbG9hZDEuYyAocmVsb2FkKTogTGlrZXdpc2UuCgoJKiBydGwuaCAoTUVNX1NFVF9JTl9TVFJVQ1RfUCk6IFVzZSBkbyB7IH0gd2hpbGUgKDApLgoKVGh1IE1heSAgNCAxNDozNzoyMyAyMDAwICBKZWZmcmV5IEEgTGF3ICAobGF3QGN5Z251cy5jb20pCgoJKiBwcmVkaWN0LmMgKGVzdGltYXRlX3Byb2JhYmlsaXR5KTogSWYgbm8gcHJlZGljdGlvbiB3YXMgZm91bmQsIHRoZW4KCXByZWRpY3QgdGhlIHN1Y2Nlc3NvciB0aGF0IGlzIHRoZSBuZXh0IHBoeXNpY2FsIGJsb2NrIChpZiBzdWNoIGEKCXN1Y2Nlc3NvciBleGlzdHMpLgoKMjAwMC0wNS0wNCAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAY3lnbnVzLmNvbT4KCgkqIGNvbmZpZy9hbHBoYS90LWFscGhhIChMSUIyRlVOQ1NfRVhUUkEpOiBVc2UgcXJybmQuYXNtIGluIHBsYWNlLgoKMjAwMC0wNS0wNCAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogc3lzdGVtLmg6IERvbid0IHdyYXAgPHN5cy90eXBlcy5oPiB3aXRoIEhBVkVfU1lTX1RZUEVTX0guCgoyMDAwLTA1LTA0ICBNdW1pdCBLaGFuICA8a2hhbkB4cmF5bGl0aC53aXNjLmVkdT4KCgkqIGkzODYvY3lnd2luLmggKENQUF9QUkVERUZJTkVTKTogRG9uJ3QgZGVmaW5lIF9fU1REQ19fLiBNb3ZlCglhdHRyaWJ1dGUgbWFjcm9zIGZyb20gaGVyZSAuLi4KCShDUFBfU1BFQyk6IHRvIGhlcmUuCgkqIGkzODYvbWluZ3czMi5oIChDUFBfUFJFREVGSU5FUyk6IExpa2V3aXNlLgoJKENQUF9TUEVDKTogTGlrZXdpc2UuCgkqIGkzODYvY3J0ZGxsLmggKENQUF9QUkVERUZJTkVTKTogRGVsZXRlIGF0dHJpYnV0ZSBtYWNyb3MuCgoJKiBNYWtlZmlsZS5pbiAoJChIT1NUX1BSRUZJWF8xKWdlbnN1cHBvcnQubyk6IEFkZCBidWlsZCBydWxlLgoJKGxpYmdjYy5hKTogUGFzcyBMSUIxQVNNU1JDIHRvIGxpYmdjYy5tay4KCjIwMDAtMDUtMDQgIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIGJiLXJlb3JkZXIuYyAoZ2V0X25leHRfYmJfbm90ZSwgZ2V0X3ByZXZfYmJfbm90ZSk6IFByb3RvdHlwZS4KCgkqIGRpYWdub3N0aWMgKHZidWlsZF9tZXNzYWdlX3N0cmluZywgYnVpbGRfbWVzc2FnZV9zdHJpbmcsCglidWlsZF9sb2NhdGlvbl9wcmVmaXgsIG91dHB1dF9nZXRfcHJlZml4LCBpbml0X291dHB1dF9idWZmZXIsCglvdXRwdXRfbm90aWNlLCB2bGluZV93cmFwcGVyX21lc3NhZ2Vfd2l0aF9sb2NhdGlvbiwKCXZfbWVzc2FnZV93aXRoX2RlY2wsIGRlZmF1bHRfcHJpbnRfZXJyb3JfZnVuY3Rpb24pOiBEZS1jb25zdGlmeS4KCShzZXRfcmVhbF9tYXhpbXVtX2xlbmd0aCk6IFByb3RvdHlwZS4KCgkqIGRpYWdub3N0aWMuaCAoc3RydWN0IG91dHB1dF9idWZmZXIsIGluaXRfb3V0cHV0X2J1ZmZlciwKCW91dHB1dF9nZXRfcHJlZml4LCBvdXRwdXRfc2V0X3ByZWZpeCk6IERlLWNvbnN0aWZ5LgoKCSogZnVuY3Rpb24uYyAoaW5pdF9mdW5jdGlvbl9zdGFydCk6IENvbnN0aWZ5LgoKCSogZ2Vuc3VwcG9ydC5jIChyZW1vdmVfY29uc3RyYWludHMsIHByb2Nlc3NfcnR4KTogUHJvdG90eXBlLgoKCSogZ3Roci1wb3NpeC5oOiBJbmRlbnQgdXNlcyBvZiAjcHJhZ21hLgoKCSogb2JqYy9vYmpjLWFjdC5jIChnZ2NfbWFya19pbXBfbGlzdCwgZ2djX21hcmtfaGFzaF90YWJsZSk6CglQcm90b3R5cGUuCgoJKiBwcmVkaWN0LmMgKGZpbmRfZXhwZWN0ZWRfdmFsdWUpOiBEZWxldGUgcHJvdG90eXBlLgoJKGV4cGVjdGVkX3ZhbHVlX3RvX2JyX3Byb2IpOiBJbml0aWFsaXplIHZhcmlhYmxlIGBldl9yZWcnLgoKCSogc2JpdG1hcC5oIChkZWJ1Z19zYml0bWFwKTogUHJvdG90eXBlLgoKCSogc3NhLmMgKGNvbXB1dGVfY29hbGVzY2VkX3JlZ19wYXJ0aXRpb24pOiBQcm90b3R5cGUuCgoJKiBzdG9yLWxheW91dC5jIChkZWJ1Z19ybGkpOiBQcm90b3R5cGUuCgoJKiB0cmVlLmggKHJvdW5kX2Rvd24pOiBQcm90b3R5cGUuCgkoaW5pdF9mdW5jdGlvbl9zdGFydCk6IENvbnN0aWZ5LgoKMjAwMC0wNS0wNCAgWmFjayBXZWluYmVyZyAgPHphY2tAd29sZXJ5LmN1bWIub3JnPgoKCSogY3BwaGFzaC5oOiAjZGVmaW5lIF9fZXh0ZW5zaW9uX18gYXdheSBpZiBHQ0NfVkVSU0lPTiA8IDIwOTUKCShvdmVybHkgY29uc2VydmF0aXZlKS4gIENoYW5nZSBleHRlcm4gaW5saW5lIHdyYXBwZXJzIHRvCglzdGF0aWMgaW5saW5lLCBkZWZpbmUgdGhlbSBhbHdheXMsIHVzZSBQQVJBTVMgcHJvcGVybHkuCgkqIGNwcGxleC5jIChfY3BwX2dldF9kaXJlY3RpdmVfdG9rZW4pOiBEb24ndCBpc3N1ZSBwZWRhbnRpYwoJd2hpdGVzcGFjZSB3YXJuaW5ncyBmb3IgXGYgYW5kIFx2IGF0IHRoZSBiZWdpbm5pbmcgb2YgYSBsaW5lLgoKVGh1IE1heSAgNCAxMDowMzo1MCAyMDAwICBKZWZmcmV5IEEgTGF3ICAobGF3QGN5Z251cy5jb20pCgoJKiBoYWlmYS1zY2hlZC5jIChzY2hlZHVsZV9pbnNucyk6IEZyZWUgdGhlIGZsb3cgZWRnZSBsaXN0IHdoZW4gaXQKCWlzIG5vIGxvbmdlciBuZWVkZWQKCjIwMDAtMDUtMDQgIEJydWNlIEtvcmIgIDxia29yYkBnbnUub3JnPgoKCSogZml4aW5jbC9pbmNsaGFjay5kZWY6IGFkZGVkIGJyb2tlbl9jYWJzIC0KCVJlbW92ZSBgZXh0ZXJuIGRvdWJsZSBjYWJzJyBkZWNsYXJhdGlvbnMgZnJvbSBtYXRoLmgKCSogZml4aW5jbC9pbmNsaGFjay5zaDogcmVnZW4KCSogZml4aW5jbC9maXhpbmNsLng6IHJlZ2VuCgkqIGZpeGluY2wvZml4aW5jbC5jOiBSZW1vdmUgQk9HT1NJVFkgY29kZQoJKiBmaXhpbmNsL21rZml4aW5jLnNoOiBSZW1vdmUgY29kZSBmb3IgaW5zdGFsbGluZyAic2hlbGwiIHZlcnNpb24KClRodSBNYXkgIDQgMDk6NDU6MTIgMjAwMCAgUmljaGFyZCBLZW5uZXIgIDxrZW5uZXJAdmxzaTEudWx0cmEubnl1LmVkdT4KCgkqIHJ0bC5oIChNRU1fQ09QWV9BVFRSSUJVVEVTKTogQWxzbyBjb3B5IFJUWF9VTkNIQU5HSU5HX1AgYW5kCglNRU1fQUxJQVNfU0VULgoJKiBhbGlhcy5jIChjYW5vbl9ydHgpOiBEb24ndCBjb3B5IFJUWF9VTkNIQU5HSU5HX1Agb3IgTUVNX0FMSUFTX1NFVAoJd2hlbiBjYWxsaW5nIE1FTV9DT1BZX0FUVFJJQlVURVMuCgkqIGVtaXQtcnRsLmMgKG9wZXJhbmRfc3Vid29yZCwgY2hhbmdlX2FkZHJlc3MpOiBMaWtld2lzZS4KCSogZXhwbG93LmMgKHN0YWJpbGl6ZSk6IExpa2V3aXNlLgoJKiBleHByLmMgKHByb3RlY3RfZnJvbV9xdWV1ZSwgZW1pdF9tb3ZlX2luc25fMSk6IExpa2V3aXNlLgoJKiBpbnRlZ3JhdGUuYyAoY29weV9ydHhfYW5kX3N1YnN0aXR1dGUpOiBMaWtld2lzZS4KCSogY29tYmluZS5jIChjb21iaW5lX3NpbXBsaWZ5X3J0eCk6IERvbid0IGNvcHkgUlRYX1VOQ0hBTkdJTkdfUAoJd2hlbiBjYWxsaW5nIE1FTV9DT1BZX0FUVFJJQlVURVMuCgkobWFrZV9leHRyYWN0aW9uLCBzaW1wbGlmeV9zaGlmdF9jb25zdCwgZ2VuX2xvd3BhcnRfZm9yX2NvbWJpbmUpOgoJTGlrZXdpc2UuCgkqIGNzZS5jIChnZW5fbG93cGFydF9pZl9wb3NzaWJsZSk6IExpa2V3aXNlLgoJKiBmdW5jdGlvbi5jIChmaXh1cF92YXJfcmVmc18xLCBwdXJnZV9hZGRyZXNzb2ZfMSk6IExpa2V3aXNlLgoJKiBvcHRhYnMuYyAoZ2VuX21vdmVfaW5zbik6IExpa2V3aXNlLgoJKiByZWNvZy5jICh2YWxpZGF0ZV9yZXBsYWNlX3J0eF8xKTogTGlrZXdpc2UuCgkqIHNpbXBsaWZ5LXJ0eC5jIChhZGRfbWVtX2Zvcl9hZGRyKTogTGlrZXdpc2UuCgkqIHN0bXQuYyAoZXhwYW5kX2Fub25fdW5pb25fZGVjbCk6IExpa2V3aXNlLgoJKiBjb25maWcvYXJtL2FybS5tZDogTGlrZXdpc2UuCgkqIGNvbmZpZy9oODMwMC9oNzMwMC5jIChmaXhfYml0X29wZXJhbmQpOiBMaWtld2lzZS4KCSogY29uZmlnL204OGsvbTg4ay5jIChsZWdpdGltaXplX2FkZHJlc3MsIGJsb2NrX21vdmVfbG9vcCk6IExpa2V3aXNlLgoJKGJsb2NrX21vdmVfbm9fbG9vcCwgYmxvY2tfbW92ZV9zZXF1ZW5jZSk6IExpa2V3aXNlLgoJKiBjb25maWcvcnM2MDAwL3JzNjAwMC5jIChleHBhbmRfYmxvY2tfbW92ZV9tZW0pOiBMaWtld2lzZS4KCSogY29uZmlnL2FscGhhL2FscGhhLmMgKGdldF9hbGlnbmVkX21lbSk6IExpa2V3aXNlLgoJQ2xlYXIgTUVNX0FMSUFTX1NFVC4KCSogZmluYWwuYyAoYWx0ZXJfc3VicmVnKTogRG9uJ3QgY29weSBNRU1fQUxJQVNfU0VUIHdoZW4gY2FsbGluZwoJTUVNX0NPUFlfQVRUUklCVVRFUy4KCjIwMDAtMDUtMDMgIFJvYmVydCBMaXBlIDxyb2JlcnRsaXBlQHVzYS5uZXQ+CgoJKiBjb25maWd1cmUuaW4gKGlbMzQ1NjddODYtKi1pc2MqKSBbdG1ha2VfZmlsZV06IEFkZCB0LWkzODZiYXJlCgl0byBzdXBwcmVzcyBsaWJnY2MxLgoJKGlbMzQ1NjddODYtKi1zY28zLjJ2NSopIExpa2V3aXNlLgoJKGlbMzQ1NjddODYtKi1zY28zLjJ2NCopIExpa2V3aXNlLgoJKGlbMzQ1NjddODYtKi1zY28pIExpa2V3aXNlLgoJKGlbMzQ1NjddODYtKi1zb2xhcmlzMikgTGlrZXdpc2UuCgkoaVszNDU2N104Ni0qLXN5c3Y1KikgTGlrZXdpc2UuCgkoaVszNDU2N104Ni0qLXN5c3Y0KikgTGlrZXdpc2UuCgkoaVszNDU2N104Ni0qLXVkayopIExpa2V3aXNlLgoJKGlbMzQ1NjddODYtKi1zeXN2KikgTGlrZXdpc2UuCgoyMDAwLTA1LTAzICBaYWNrIFdlaW5iZXJnICA8emFja0B3b2xlcnkuY3VtYi5vcmc+CgoJKiBjcHBoYXNoLmggKFUpOiBOZXcgZGVmaW5lLCB0byBjb3JyZWN0IHR5cGUgb2Ygc3RyaW5nIGNvbnN0YW50cy4KCSh1c3RyY21wLCB1c3RybmNtcCwgdXN0cmxlbiwgdXhzdHJkdXAsIHVzdHJjaHIpOiBOZXcgd3JhcHBlcgoJcm91dGluZXMsIHRvIGRvIGNhc3RzIHdoZW4gcGFzc2luZyB1bnNpZ25lZCBzdHJpbmdzIHRvIGxpYmMuCgkqIGNwcGV4cC5jLCBjcHBmaWxlcy5jLCBjcHBoYXNoLmMsIGNwcGluaXQuYywgY3BwbGliLmM6IFVzZSB0aGVtLgoKCSogY3BwZmlsZXMuYyAoX2NwcF9leGVjdXRlX2luY2x1ZGUpOiBNYWtlIGZpbGVuYW1lIGFuIFVfQ0hBUiAqLgoJKiBjcHBoYXNoLmMgKF9jcHBfcXVvdGVfc3RyaW5nKTogTWFrZSBzdHJpbmcgYW4gVV9DSEFSICouCgkqIGNwcGluaXQuYyAoZHVtcF9zcGVjaWFsX3RvX2J1ZmZlcik6IE1ha2UgbWFjcm8gbmFtZSBhbiBVX0NIQVIgKi4KCSogY3BwbGV4LmMgKHBhcnNlX2lmZGVmLCBwYXJzZV9pbmNsdWRlLCB2YWxpZGF0ZV9lbHNlKTogTWFrZQoJc2Vjb25kIGFyZ3VtZW50IGFuIFVfQ0hBUiAqLgoKCSogY3BwaW5pdC5jIChidWlsdGluX2FycmF5KTogTWFrZSBuYW1lIGFuZCB2YWx1ZSBVX0NIQVIgKiwgYWRkCglsZW5ndGggZmllbGQsIGNsZWFuIHVwIGluaXRpYWxpemVyLgoJKElTVEFCTEUpOiBBZGQgX19leHRlbnNpb25fXyB0byBkZXNpZ25hdGVkLQoJaW5pdGlhbGl6ZXJzIHZlcnNpb24uCgkqIGNwcGxleC5jIChDSEFSVEFCKTogTGlrZXdpc2UuCgoJKiBtYmNoYXIuYzogQWRkIGR1bW15IGV4dGVybmFsIGRlY2xhcmF0aW9uIHRvIHRoZSAhTVVMVElCWVRFX0NIQVJTCgljYXNlIHNvIHRoZSBmaWxlIHdvbid0IGJlIGVtcHR5LgoKV2VkIE1heSAgMyAyMTowMTo0NiAyMDAwICBKYXNvbiBFY2toYXJkdCAgPGpsZUBjeWdudXMuY29tPgoKCSogYmItcmVvcmRlci5jIChzdHJ1Y3QgcmVvcmRlcl9ibG9ja19kZWYpOiBNZW1iZXIgc3VjYyByZW1vdmVkLgoJKFJFT1JERVJfQkxPQ0tfU1VDQyk6IFJlbW92ZWQuCgkoZW51bSByZW9yZGVyX3NraXBfdHlwZSk6IFJlbW92ZWQuCgkoc2tpcF9pbnNuc19iZXR3ZWVuX2Jsb2NrKTogUmVuYW1lZCB0byBza2lwX2luc25zX2FmdGVyX2Jsb2NrLgoJUmVtb3ZlZCBzZWNvbmQgYXJndW1lbnQuIFJlbW92ZWQgZGVhZCBjb2RlIGFuZCBjbGVhbmVkIHVwLgoJKG1ha2VfcmVvcmRlcl9jaGFpbik6IFJlbW92ZWQgdXNlIG9mIFJFT1JERVJfQkxPQ0tfU1VDQy4KCShyZW9yZGVyX2Jhc2ljX2Jsb2Nrcyk6IFJlbW92ZSB1c2Ugb2YgUkVPUkRFUl9TS0lQX0FGVEVSLiBSZW1vdmVkCglzZWNvbmQgcGFyYW1ldGVyIHRvIHNraXBfaW5zbnNfYWZ0ZXJfYmxvY2suCgpXZWQgTWF5ICAzIDEzOjI5OjU0IDIwMDAgIFJpY2hhcmQgS2VubmVyICA8a2VubmVyQHZsc2kxLnVsdHJhLm55dS5lZHU+CgoJKiB0cmVlLmMgKHN0YXRpY3AsIGNhc2UgTEFCRUxfREVDTCk6IE5ldyBjYXNlLgoKMjAwMC0wNS0wMyAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAY3lnbnVzLmNvbT4KCgkqIE1ha2VmaWxlLmluIChzdGFydC5lbmNhcCk6IERvIG5vdCBkZXBlbmQgb24gTElCR0NDMS4KCgkqIG1rbGliZ2NjMS5pbjogRml4IHR5cG8gbGFzdCBjaGFuZ2UuCgoyMDAwLTA1LTAzICBKYXNvbiBNZXJyaWxsICA8amFzb25AY2FzZXkuY3lnbnVzLmNvbT4KCgkqIE1ha2VmaWxlLmluIChXQVJOX0NGTEFHUyk6IEFkZCAtcGVkYW50aWMgLVduby1sb25nLWxvbmcuCgkoTE9PU0VfQ0ZMQUdTKTogTmV3OiBDRkxBR1Mgd2l0aG91dCAtcGVkYW50aWMgYW5kIC1XdHJhZGl0aW9uYWwuCgkoR0NDX0NGTEFHUyk6IFVzZSBpdC4KCShMQU5HX0ZMQUdTX1RPX1BBU1MpOiBOZXc6IFNVQkRJUl9GTEFHU19UT19QQVNTIHdpdGggTE9PU0VfQ0ZMQUdTLgoJKiBjcC9NYWtlLWxhbmcuaW4sIGphdmEvTWFrZS1sYW5nLmluLCBmL01ha2UtbGFuZy5pbiwgY2gvTWFrZS1sYW5nLmluLAoJb2JqYy9NYWtlLWxhbmcuaW46IFVzZSBpdC4KCjIwMDAtMDUtMDMgIEphc29uIFIgVGhvcnBlICA8dGhvcnBlakB6ZW1idS5jb20+CgoJKiBjb25maWcvaTM4Ni9pMzg2Lm1kIChsc2hycWkyX2NtcG5vKTogVXNlIHEgbm90IHIgaW4gY29uc3RyYWludC4KCjIwMDAtMDUtMDMgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgoJKiBta2xpYmdjYy5pbjogUmVzdHJpY3QgT0xEQ0M9R0NDIHRlc3QgdG8gbmF0aXZlLiAgRXF1YXRlCglMSUJHQ0MxIGVtcHR5IHdpdGggbGliZ2NjMS5udWxsLgoKV2VkIE1heSAgMyAxMjo1NTo0NiAyMDAwICBKaW0gV2lsc29uICA8d2lsc29uQGN5Z251cy5jb20+CgoJKiBmb2xkLWNvbnN0LmMgKGV4dHJhY3RfbXVsZGl2LCBjYXNlIE1BWF9FWFBSKTogRG9uJ3QgYWxsb3cgc2lnbmVkbmVzcwoJY2hhbmdlLgoKMjAwMC0wNS0wMyAgR3JlZyBNY0dhcnkgIDxna21AZ251Lm9yZz4KCgkqIHRyZWUuaCAodHJlZV9jb21tb24pOiBBZGQgYm91bmRlZF9mbGFnIG1lbWJlci4gIFJlbW92ZQoJaW5hY2N1cmF0ZSBjb21tZW50IGFib3V0IG51bWJlciBvZiByZW1haW5pbmcgYml0cy4KCShCT1VOREVEX0lORElSRUNUX1RZUEVfUCwgQk9VTkRFRF9QT0lOVEVSX1RZUEVfUCwKCUJPVU5ERURfUkVGRVJFTkNFX1RZUEVfUCwgTUFZQkVfQk9VTkRFRF9JTkRJUkVDVF9UWVBFX1AsCglNQVlCRV9CT1VOREVEX1BPSU5URVJfVFlQRV9QLCBNQVlCRV9CT1VOREVEX1JFRkVSRU5DRV9UWVBFX1AsCglUUkVFX0JPVU5ERUQsIFRZUEVfTUFJTl9WQVJJQU5UU19QSFlTSUNBTExZX0VRVUFMX1AsCglUWVBFX01BSU5fUEhZU0lDQUxfVkFSSUFOVCwgVFlQRV9CT1VOREVEKTogTmV3IG1hY3Jvcy4KCShUWVBFX1FVQUxfQk9VTkRFRCk6IE5ldyBjb25zdGFudC4KCShUWVBFX1FVQUxTKTogSGFuZGxlIGJvdW5kZWQgcXVhbGlmaWVyLgoJKFRSRUVfRVhQUl9RVUFMUywgVFJFRV9GVU5DX1FVQUxTKTogTmV3IG1hY3Jvcy4KCShUWVBFX0JPVU5ERURfVkFMVUUsIFRZUEVfQk9VTkRFRF9CQVNFLCBUWVBFX0JPVU5ERURfRVhURU5ULAoJVFlQRV9CT1VOREVEX1NVQlRZUEUsIFRZUEVfVU5CT1VOREVEX1ZBUklBTlQsIFRZUEVfUE9JTlRFUl9ERVBUSCwKCVRZUEVfQU1CSUVOVF9CT1VOREVETkVTUyk6IE5ldyBtYWNyb3MuCgkoTUFYX1BPSU5URVJfREVQVEgsIFZBX0xJU1RfUE9JTlRFUl9ERVBUSCk6IE5ldyBjb25zdGFudHMuCgkodHJlZV90eXBlKTogQWRkIHBvaW50ZXJfZGVwdGggbWVtYmVyLiAgUmVtb3ZlCglpbmFjY3VyYXRlIGNvbW1lbnQgYWJvdXQgbnVtYmVyIG9mIHJlbWFpbmluZyBiaXRzLgoJKERFQ0xfUE9JTlRFUl9ERVBUSCk6IEFkZCBtYWNyby4KCSh0cmVlX2RlY2wpOiBBZGQgcG9pbnRlcl9kZXB0aCBtZW1iZXIuCgpXZWQgTWF5ICAzIDIyOjUyOjUzIDIwMDAgIERlbmlzIENoZXJ0eWtvdiAgPGRlbmlzY0BvdmVydGEucnU+CgoJKiBjb25maWcvYXZyL2F2ci1wcm90b3MuaCAodGVzdF9oYXJkX3JlZ19jbGFzcyk6IERlY2xhcmVkLgoJKiBjb25maWcvYXZyL2F2ci5jIChhc2hyaGkzX291dCk6IG9wdGltaXplZCBzaGlmdCBieSAxNS4KCShsc2hyaGkzX291dCk6IExpa2V3aXNlLgoJKGFzaHJzaTNfb3V0KTogYnVnZml4IGluIHNoaWZ0IGJ5IDguCgkodGVzdF9oYXJkX3JlZ19jbGFzcyk6IE5ldyBmdW5jdGlvbi4KCSogY29uZmlnL2F2ci9hdnIubWQ6IEJ1Z2ZpeCBpbnNpZGUgY29uZGl0aW9ucyBpbiBwZWVwaG9sZXMuCgkoYXNobGhpMyk6IHJlbW92ZWQgZGVmaW5lX2V4cGFuZCBvZiB0aGlzIHBhdHRlcm4uCgkoKmFzaGxoaTNfaW5zbik6IHJlbmFtZWQgdG8gYXNobGhpMy4KCShhc2hsc2kzKTogcmVtb3ZlZCBkZWZpbmVfZXhwYW5kIG9mIHRoaXMgcGF0dGVybi4KCSgqYXNobHNpM19pbnNuKTogcmVuYW1lZCB0byBhc2hsc2kzLgoJKGFzaHJxaTMpOiByZW1vdmVkIGRlZmluZV9leHBhbmQgb2YgdGhpcyBwYXR0ZXJuLgoJKCphc2hycWkzX2luc24pOiByZW5hbWVkIHRvIGFzaHJxaTMuCgkoYXNocmhpMyk6IHJlbW92ZWQgZGVmaW5lX2V4cGFuZCBvZiB0aGlzIHBhdHRlcm4uCgkoKmFzaHJoaTNfaW5zbik6IHJlbmFtZWQgdG8gYXNocmhpMy4KCShhc2hyc2kzKTogcmVtb3ZlZCBkZWZpbmVfZXhwYW5kIG9mIHRoaXMgcGF0dGVybi4KCSgqYXNocnNpM19pbnNuKTogcmVuYW1lZCB0byBhc2hyc2kzLgoJKGxzaHJoaTMpOiByZW1vdmVkIGRlZmluZV9leHBhbmQgb2YgdGhpcyBwYXR0ZXJuLgoJKCpsc2hyaGkzX2luc24pOiByZW5hbWVkIHRvIGxzaHJoaTMuCgkobHNocnNpMyk6IHJlbW92ZWQgZGVmaW5lX2V4cGFuZCBvZiB0aGlzIHBhdHRlcm4uCgkoKmxzaHJzaTNfaW5zbik6IHJlbmFtZWQgdG8gbHNocnNpMy4KCjIwMDAtMDUtMDMgIFJvZG5leSBCcm93biAgPFJvZG5leUJyb3duQHBtc2MuY29tPgoKCSogY29uZmlnL21jb3JlL21jb3JlLmM6IFJlcGxhY2luZyBpbmNsdXNpb24gb2YgInN0ZGlvLGgiIHdpdGgKCWluY2x1c2lvbiBvZiAic3lzdGVtLmgiLgoKV2VkIE1heSAgMyAxMTo0Mzo1MyAyMDAwICBKaW0gV2lsc29uICA8d2lsc29uQGN5Z251cy5jb20+CgoJKiBjb25maWcvaWE2NC9pYTY0LmMgKGlhNjRfZW5jb2RlX3NlY3Rpb25faW5mbyk6IEFkZCBjaGVjayBmb3IKCVRSRUVfQVNNX1dSSVRURU4uCgoyMDAwLTA1LTAzICBEYXZpZCBNb3NiZXJnZXIgIDxkYXZpZG1AaHBsLmhwLmNvbT4KCgkqIGNvbmZpZy9pYTY0L2lhNjQuYyAoaWE2NF9vdmVycmlkZV9vcHRpb25zKTogRm9yY2UgLW1jb25zdGFudC1ncAoJaWYgLW1hdXRvLXBpYyBpcyBvbi4KCShpYTY0X2VwaWxvZ3VlX3VzZXMpOiBNYXJrICJncCIgKHIxKSBhcyB1c2VkIGJ5IHRoZSBlcGlsb2d1ZSBpZgoJLW1jb25zdGFudC1ncCBpcyBpbiBlZmZlY3QgYW5kIGZ1bmN0aW9uLWRlc2NyaXB0b3JzIGFyZSBiZWluZyB1c2VkCgl0byBtYWtlIGluZGlyZWN0IGNhbGxzLgoJKiBjb25maWcvaWE2NC9pYTY0LmggKE1BU0tfQ09OU1RfR1ApOiBOZXcgbWFjcm8uCgkoTUFTS19BVVRPX1BJQyk6IERpdHRvLgoJKFRBUkdFVF9DT05TVF9HUCk6IERpdHRvLgoJKFRBUkdFVF9BVVRPX1BJQyk6IERpdHRvLgoJKFRBUkdFVF9TV0lUQ0hFUyk6IEFkZCAtbWNvbnN0YW50LWdwIGFuZCAtbWF1dG8tcGljIG9wdGlvbnMuCgkoQVNNX09VVFBVVF9ET1VCTEVfSU5UKTogRG9uJ3QgZ2VuZXJhdGUgQGZwdHIoKSBpZiAtbWF1dG8tcGljIG9yCgktbW5vLXBpYyBpcyBpbiBlZmZlY3QuCgkoQVNNX09VVFBVVF9YREFUQV9ET1VCTEVfSU5UKTogRGl0dG8uCgkqIGNvbmZpZy9pYTY0L2lhNjQubWQgKG1vdmRpKTogVXNlIGdlbl9sb2FkX2dwcmVsNjQoKSBpZgoJLW1hdXRvLXBpYyBpcyBpbiBlZmZlY3QuCgkoZ3ByZWw2NF9vZmZzZXQpOiBOZXcgcGF0dGVybi4KCShsb2FkX2dwcmVsNjQpOiBEaXR0by4KCShjYWxsKTogSGFuZGxlIC1tYXV0by1waWMgbGlrZSAtbW5vLXBpYyAoZG9uJ3QgdXNlIGZwdHIpLiAgSWYKCS1tY29uc3RhbnQtZ3AgaXMgaW4gZWZmZWN0LCBubyBuZWVkIHRvIHByZXNlcnZlIGdwIGFyb3VuZCBkaXJlY3QKCWNhbGxzLgoJKGNhbGxfdmFsdWUpOiBEaXR0by4KCSogY29uZmlnL2lhNjQvbGludXguaCAoUFJPRklMRV9CRUZPUkVfUFJPTE9HVUUpOiBEZWZpbmUuCgkoRlVOQ1RJT05fUFJPRklMRVIpOiBEZWZpbmUuCgkqIGNvbmZpZy9pYTY0L3N5c3Y0LmggKEFTTV9PVVRQVVRfQ09OU1RSVUNUT1IpOiBEb24ndCBnZW5lcmF0ZQoJQGZwdHIoKSBkaXJlY3RpdmUgd2hlbiAtbW5vLXBpYyBvciAtbWF1dG8tcGljIGlzIGluIGVmZmVjdC4KCShBU01fT1VUUFVUX0RFU1RSVUNUT1IpOiBEaXR0by4KCjIwMDAtMDUtMDMgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgoJKiBNYWtlZmlsZS5pbiAoU1RBR0VTVFVGRik6IEFkZCBsaWJnY2MgbGliZ2NjLm1rLgoJKGxpYmdjYzEubnVsbCwgbGliZ2NjMS5jcm9zcywgbGliZ2NjMS5hKTogUmVtb3ZlIHRhcmdldHMuCgkobGliZ2NjMS1hc20uYSwgbGliZ2NjMS5TLCBsaWJnY2MyLmEpOiBSZW1vdmUgdGFyZ2V0cy4KCShta2xpYmdjYywgbGliZ2NjLm1rKTogTmV3IHRhcmdldHMuCgkobGliZ2NjLmEpOiBVc2UgbGliZ2NjLm1rLgoJKHN0bXAtbXVsdGlsaWIpOiBMaWtld2lzZS4KCShzdG1wLW11bHRpbGliLXN1Yik6IFJlbW92ZS4KCShtb3N0bHljbGVhbik6IERvbid0IGRlbGV0ZSBsaWJnY2MyIHRlbXAgZmlsZXMuCgkqIGNvbmZpZ3VyZS5pbiAoQUNfUFJPR19DQ19DX08pOiBBZGQuCgkoTk9fTUlOVVNfQ19NSU5VU19PKTogU3Vic3RpdHV0ZSBpdC4KCShhbGxfb3V0cHV0cyk6IEFkZCBta2xpYmdjYy4KCSogbWtsaWJnY2MuaW46IE5ldyBmaWxlLgoKMjAwMC0wNS0wMyAgSmFzb24gTWVycmlsbCAgPGphc29uQGNhc2V5LmN5Z251cy5jb20+CgoJKiBjcHBleHAuYyAob3BfdCk6IE1ha2UgYW4gaW50LgoKCSogcnRsYW5hbC5jIChkZWFkX29yX3NldF9yZWdub19wKTogUmVtb3ZlIHVudXNlZCB2YXJpYWJsZS4KCgkqIHZhcmFzbS5jIChpbml0aWFsaXplcl9jb25zdGFudF92YWxpZF9wKTogRml4IHBhcmVudGhlc2lzLgoKCSogZ2Vuc3VwcG9ydC5jIChwcm9jZXNzX3J0eCk6IEZpeCBtYWNyb3MgdXNlZC4KCjIwMDAtMDUtMDMgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgoJKiBmbG93LmMgKHByb3BhZ2F0ZV9vbmVfaW5zbik6IEFsc28gZG9uJ3QgUFJPUF9SRUdfSU5GTyBmb3IKCWNhbGwtY2xvYmJlcmVkIHJlZ2lzdGVycyBvZiBhIGNhbGwuCgpXZWQgTWF5ICAzIDEyOjQwOjUzIDIwMDAgIENsaW50b24gUG9wZXR6ICA8Y3BvcGV0ekBjeWdudXMuY29tPgoKCSogZ2Vuc3VwcG9ydC5jOiBOZXcgZmlsZS4KCSogZ2Vuc3VwcG9ydC5oOiBOZXcgZmlsZS4KCSogTWFrZWZpbGUuaW4gKEhPU1RfUlRMKTogRGVwZW5kIG9uIGdlbnN1cHBvcnQuCgkoZ2Vuc3VwcG9ydC5vKSBOZXcgcnVsZS4KCSogZ2VuYXR0ci5jOiBVc2UgZ2Vuc3VwcG9ydCBmb3IgcmVhZGluZyAubWQgZmlsZXMuCgkqIGdlbmF0dHJ0YWIuYzogRGl0dG8uCgkqIGdlbmNvZGVzLmM6IERpdHRvLgoJKiBnZW5jb25maWcuYzogRGl0dG8uCgkqIGdlbmVtaXQuYzogRGl0dG8uCgkqIGdlbmV4dHJhY3QuYzogRGl0dG8uCgkqIGdlbmZsYWdzLmM6IERpdHRvLgoJKiBnZW5vcGluaXQuYzogRGl0dG8uCgkqIGdlbm91dHB1dC5jOiBEaXR0by4KCSogZ2VucGVlcC5jOiBEaXR0by4KCSogZ2VucmVjb2cuYzogRGl0dG8uCgkqIHJ0bC5kZWYgKGRlZmluZV9pbnNuX2FuZF9zcGxpdCk6IE5ldyBERUZfUlRMX0VYUFIuCgkqIG1kLnRleGkgKEluc24gU3BsaXR0aW5nKTogRG9jdW1lbnQgZGVmaW5lX2luc25fYW5kX3NwbGl0LgoKVHVlIE1heSAgMiAwMDoyMDozMCAyMDAwICBKYXNvbiBFY2toYXJkdCAgPGpsZUBjeWdudXMuY29tPgoKCSogZmxvdy5jICh2ZXJpZnlfZmxvd19pbmZvKTogQWRkZWQgdHdvIG1vcmUgc2FuaXR5IGNoZWNrcy4gVGhlCglmaXJzdCBjaGVja3MgdGhhdCB0aGUgYmxvY2tzIGFyZSBudW1iZXJlZCBjb25zZWN1dGl2ZWx5LiBUaGUgc2Vjb25kCgljaGVja3MgdGhhdCBuX2Jhc2ljX2Jsb2NrcyBpcyBhY3R1YWxseSBlcXVhbCB0byB0aGUgbnVtYmVyIG9mCgliYXNpYyBibG9ja3MgaW4gdGhlIGluc24gY2hhaW4uCgoyMDAwLTA1LTAzICBaYWNrIFdlaW5iZXJnICA8emFja0B3b2xlcnkuY3VtYi5vcmc+CgoJKiBjcHBsaWIuaDogQWRkIGFjY2Vzc29yIG1hY3JvcyBmb3IgdG9rZW4gbGlzdHMuCgkqIGNwcGxpYi5jLCBjcHBoYXNoLmMsIGNwcGxleC5jOiBVc2UgdGhlbS4KCldlZCBNYXkgIDMgMDk6Mjk6MTcgMjAwMCAgUmljaGFyZCBLZW5uZXIgIDxrZW5uZXJAdmxzaTEudWx0cmEubnl1LmVkdT4KCgkqIGV4cHIuYyAoZXhwYW5kX2V4cHIsIGNhc2UgQ09NUE9ORU5UX1JFRik6IERvbid0IGNoZWNrIGZvciBjaGVja2luZwoJbWVtb3J5IHVzYWdlIGlmIG5vdCBpbiBhIGZ1bmN0aW9uLgoJKiB2YXJhc20uYyAoaW5pdGlhbGl6ZXJfY29uc3RhbnRfdmFsaWRfcCwgY2FzZSBBRERSX0VYUFIpOiBPbmx5CglyZXR1cm4gYWRkcmVzcyBpZiBzdGF0aWMuCgpXZWQgTWF5ICAzIDEzOjE0OjQ5IE1FVCBEU1QgMjAwMCAgSmFuIEh1Ymlja2EgIDxqaEBzdXNlLmN6PgoKCSogaWZjdnQuYyAobm9jZV90cnlfY21vdmVfYXJpdGgpOiAgVXNlIG1heV90cmFwX3AgdG8gdGhlc3QKCXdoZXRoZXIgYWRkcmVzcyBtYXkgdHJhcC4KClR1ZSBNYXkgIDIgMjM6Mzg6MzcgMjAwMCAgSmFzb24gRWNraGFyZHQgIDxqbGVAY3lnbnVzLmNvbT4KCgkqIGJiLXJlb3JkZXIgKGNoYWluX3Jlb3JkZXJfYmxvY2tzKTogQ2hhbmdlZCBjb2RlIHRvIHRlc3QgZm9yCglFREdFX0ZBTExUSFJVIHJhdGhlciB0aGFuIG1ha2luZyBlcnJvbmVvdXMgYXNzdW1wdGlvbiB0aGF0IHRoZQoJZmlyc3Qgb3V0Z29pbmcgZWRnZSBpcyB0aGUgZmFsbC10aHJvdWdoIGVkZ2UuCgpUdWUgTWF5ICAyIDE4OjIwOjMxIDIwMDAgIERvbmFsZCBMaW5kc2F5ICA8ZGxpbmRzYXlAaG91bmQuY3lnbnVzLmNvbT4KCgkqIGNvbmZpZy9taXBzL21pcHMuYyAobWlwc19idWlsZF92YV9saXN0LG1pcHNfdmFfc3RhcnQsbWlwc192YV9hcmcpOiBuZXcKCUFCSSBmb3IgdmFyYXJncywgYWNyb3NzIGFsbCBNSVBTLiBUaGlzIGlzIGluY29tcGF0aWJsZSBiZWNhdXNlIHRoZQoJdmFfbGlzdCAoX19idWlsdGluX3ZhX2xpc3QpIHN0cnVjdHVyZSBpcyBkaWZmZXJlbnQsIHNvIGEgY29tcGlsYXRpb24KCXVuaXQgcGFzc2luZyBhIHZhX2xpc3QgYW5kIGEgY29tcGlsYXRpb24gdW5pdCBiZWluZyBwYXNzZWQgb25lLCBzaG91bGQKCWJvdGggYmUgY29tcGlsZWQgd2l0aCB0aGUgc2FtZSBBQkkuIChUaGUgb2xkIHN0cnVjdHVyZSBoYWQgdHdvCglwb2ludGVycywgbm93IGl0IGhhcyB0aHJlZS4pCgpUdWUgTWF5ICAyIDE5OjE4OjQzIDIwMDAgIEphc29uIEVja2hhcmR0ICA8amxlQGN5Z251cy5jb20+CgoJKiBiYi1yZW9yZGVyLmMgKHN0cnVjdCByZW9yZGVyX2Jsb2NrX2RlZik6IFJlbW92ZSBtZW1iZXJzIGVuZCwKCWJsb2NrX2JlZ2luLCBhbmQgYmxvY2tfZW5kLgoJKFJFT1JERVJfQkxPQ0tfT0xEX0VORCk6IERlbGV0ZS4KCShSRU9SREVSX0JMT0NLX0JFR0lOKTogRGVsZXRlLgoJKFJFT1JERVJfQkxPQ0tfRU5EKTogRGVsZXRlLgoJKGNoYWluX3Jlb3JkZXJfYmxvY2tzKTogUmVtb3ZlIGRlYWQgY29kZS4KClR1ZSBNYXkgIDIgMTc6MDY6NTMgMjAwMCAgSmFzb24gRWNraGFyZHQgIDxqbGVAY3lnbnVzLmNvbT4KCgkqIGJiLXJlb3JkZXIuYyAocmVtb3ZlX3Njb3BlX25vdGVzKTogQ2hlY2sgZm9yIGJvdGggdHlwZXMgb2Ygc2NvcGUKCW5vdGVzIGFzIHRoZSBlbmQgb2YgYSBiYXNpYyBibG9jayBiZWZvcmUgZGVsZXRpbmcuCgoyMDAwLTA1LTAyICBNdW1pdCBLaGFuICA8a2hhbkB4cmF5bGl0aC53aXNjLmVkdT4KCgkqIGZpbmFsLmMgKGZpbmFsX3N0YXJ0X2Z1bmN0aW9uKTogRml4IHNwZWxsaW5nIG9mICJuZWNlc3NhcnkiLgoKMjAwMC0wNS0wMiAgSmFzb24gTWVycmlsbCAgPGphc29uQGNhc2V5LmN5Z251cy5jb20+CgoJKiB0b3BsZXYuYyAoZGVidWdfaWdub3JlX2Jsb2NrKTogUmV0dXJuIGludC4KCSogZHdhcmYyb3V0LmMgKGR3YXJmMm91dF9pZ25vcmVfYmxvY2spOiBMaWtld2lzZS4KCSogdG9wbGV2LmgsIGR3YXJmMm91dC5oOiBBZGp1c3QuCgkqIGVtaXQtcnRsLmMgKHJlbW92ZV91bm5lY2Vzc2FyeV9ub3Rlcyk6IFRlc3QgcmV0dXJuIHZhbHVlLgoKCSogZW1pdC1ydGwuYyAocmVtb3ZlX3VubmVjZXNzYXJ5X25vdGVzKTogRml4IHNwZWxsaW5nIG9mICJuZWNlc3NhcnkiLgoJKiB0b3BsZXYuYywgZmluYWwuYywgcnRsLmg6IEFkanVzdC4KCjIwMDAtMDUtMDIgIFphY2sgV2VpbmJlcmcgIDx6YWNrQHdvbGVyeS5jdW1iLm9yZz4KCgkqIGFjbG9jYWwubTQgKGdjY19BQ19DSEVDS19QUk9HX1ZFUik6IE5ldyBtYWNyby4KCSogY29uZmlndXJlLmluOiBMb29rIGZvciBtYWtlaW5mbyBpbiB0aGUgdW5pZmllZCB0cmVlLCB0aGVuCglmb3IgYSBzeXN0ZW0gbWFrZWluZm8gd2hpY2ggaXMgc3VmZmljaWVudGx5IG5ldy4KCSogTWFrZWZpbGUuaW46IElmIGNvbmZpZ3VyZSBzYXlzIG1ha2VpbmZvIGlzIHRvbyBvbGQsIGRvbid0CglidWlsZCBvciBpbnN0YWxsIEluZm8gZG9jdW1lbnRhdGlvbi4KCjIwMDAtMDUtMDIgIFphY2sgV2VpbmJlcmcgIDx6YWNrQHdvbGVyeS5jdW1iLm9yZz4KCgkqIGNwcGhhc2guYyAoY29sbGVjdF9wYXJhbXMpOiBGaXggb2ZmLWJ5LW9uZSBlcnJvci4KCShkdW1wX2hhc2hfaGVscGVyKTogRHVtcCBhbGwgZm91ciBtYWNybyBub2RldHlwZXMuCgoyMDAwLTA1LTAyICBKYWt1YiBKZWxpbmVrICA8amFrdWJAcmVkaGF0LmNvbT4KCgkqIGNwcGhhc2guYyAodHJhZF9zdHJpbmdpZnkpOiBBZGp1c3QgcCBhZnRlciBzdHJpbmdpZmljYXRpb24gYXMKCXdlbGwuCgoyMDAwLTA1LTAyICBaYWNrIFdlaW5iZXJnICA8emFja0B3b2xlcnkuY3VtYi5vcmc+CgoJKiBjcHBsaWIuaCAoQ1BQX1BPUCwgcGFyc2VfY2xlYW51cF90KTogRGVsZXRlLgoJKGNwcF9idWZmZXIpOiBSZW1vdmUgY2xlYW51cCwgc2Vlbl9lb2YsIG1hbnVhbF9wb3AgbWVtYmVycy4KCgkqIGNwcGZpbGVzLmMgKGZpbGVfY2xlYW51cCk6IERlbGV0ZS4KCSogY3BwaGFzaC5jIChtYWNyb19jbGVhbnVwKTogRGVsZXRlLgoJKGNvbGxlY3Rfb2JqbGlrZV9leHBhbnNpb24sIGNvbGxlY3RfZnVubGlrZV9leHBhbnNpb24sCgltYWNhcmcsIHNjYW5fYXJndW1lbnRzKTogUmVtb3ZlIENQUF9QT1AgY2FzZS4KCgkqIGNwcGxleC5jIChudWxsX2NsZWFudXApOiBEZWxldGUuCgkoY3BwX3BvcF9idWZmZXIpOiBEbyB0aGUgd29yayB0aGF0IHdhcyBkb25lIGluIHRoZSBjbGVhbnVwcwoJaGVyZS4gIENhbGwgX2NwcF91bndpbmRfaWZfc3RhY2sgZnJvbSBoZXJlLgoJKF9jcHBfZXhwYW5kX3RvX2J1ZmZlciwgY3BwX3NjYW5fYnVmZmVyX25vb3V0cHV0LAoJY3BwX3NjYW5fYnVmZmVyKTogUnVuIHVudGlsIHdlIHNlZSBDUFBfRU9GIGFuZCB0aGUgdG9wIG9mCglzdGFjayBpcyB0aGUgYnVmZmVyIF9iZWxvd18gdGhlIG9uZSB3ZSBzdGFja2VkLgoJKGNwcF9nZXRfdG9rZW4pOiBBbHdheXMgcG9wIGFuIGV4aGF1c3RlZCBidWZmZXIuICBSZXR1cm4KCUNQUF9FT0YgdW5sZXNzIGl0J3MgYSBtYWNybyBidWZmZXIuICBEb24ndCBjYWxsIF9jcHBfaGFuZGxlX2VvZi4KCSogY3BwbGliLmMgKHNraXBfaWZfZ3JvdXApOiBEb24ndCBjYWxsIGNwcF9nZXRfdG9rZW4gdG8KCWluY3JlbWVudCB0aGUgbGluZSBudW1iZXIuCgkoX2NwcF9oYW5kbGVfZW9mKTogUmVuYW1lIHRvIF9jcHBfdW53aW5kX2lmX3N0YWNrLgoKCSogZml4LWhlYWRlci5jIChyZWFkX3NjYW5fZmlsZSkgW3BhcnNpbmcgZ2V0Y2hhcigpXTogUnVuIHVudGlsCgl3ZSBzZWUgQ1BQX0VPRiBhbmQgdGhlIHRvcCBvZiBzdGFjayBpcyB0aGUgYnVmZmVyIF9iZWxvd18gdGhlCglvbmUgd2Ugc3RhY2tlZC4KCSogc2Nhbi1kZWNscy5jOiBMaWtld2lzZS4KCjIwMDAtMDUtMDIgIEFuZHJldyBIYWxleSAgPGFwaEBjeWdudXMuY29tPgoKCSogY29uZmlnL2lhNjQvaWE2NC5jIChpYTY0X2VuY29kZV9zZWN0aW9uX2luZm8pOiBIYW5kbGUgdGhlIGNhc2UKCXdoZXJlIHRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIGZvciB0aGUgc2Vjb25kIHRpbWUgb24gYSBkZWNsIHRoYXQKCWhhcyBoYWQgaXRzIHNlY3Rpb24gaW5mbyBjaGFuZ2VkIGluIHN1Y2ggYSB3YXkgYXMgdG8gbW92ZSBpdCBvdXQKCW9mIHNtYWxsIGRhdGEvYnNzLgoJKiBjb25maWcvaWE2NC9pYTY0LmggKFJFRE9fU0VDVElPTl9JTkZPX1ApOiBOZXcgZGVmaW5pdGlvbi4KCjIwMDAtMDUtMDEgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgoJKiBpZmN2dC5jIChkZWFkX29yX3ByZWRpY2FibGUpOiBTZXQgbWVyZ2VfYmItPmVuZCB0byB0aGUgaW5zbiBiZWZvcmUKCXRoZSBzZXF1ZW5jZSB3ZSdyZSBtb3ZpbmcsIG5vdCB0byBtZXJnZV9iYi0+aGVhZC4KCjIwMDAtMDUtMDEgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgoJKiBjb25maWd1cmUuaW4gKGFscGhhKi0qLWxpbnV4LWdudWxpYmMxKikgW3RtYWtlX2ZpbGVdOiBSZW1vdmUKCXJlZmVyZW5jZSB0byBhbHBoYS90LWxpbnV4LgoJKGFscGhhKi0qLWxpbnV4LWdudSopOiBMaWtld2lzZS4KCSogY29uZmlndXJlOiBSZWJ1aWxkLgoKCSogY2FsbHMuYyAoZXhwYW5kX2NhbGwpOiBEb24ndCBlbWl0IHJlZyBub3RlcyBmb3IgYSBzaWJjYWxsLgoKCSogZmxvdy5jIChjYWxjdWxhdGVfZ2xvYmFsX3JlZ3NfbGl2ZSk6IFNraXAgZm9yX2VhY2hfc3VjY2Vzc29yX3BoaQoJaWYgbm90IGluIFNTQSBmb3JtLgoKCSogaWZjdnQuYyAoaWZfY29udmVydCk6IE9ubHkgdmVyaWZ5X2Zsb3dfaW5mbyBpZiBFTkFCTEVfQ0hFQ0tJTkcuCgoyMDAwLTA1LTAxICBKYXNvbiBNZXJyaWxsICA8amFzb25AY2FzZXkuY3lnbnVzLmNvbT4KCgkqIGludGVncmF0ZS5jIChjb3B5X2RlY2xfZm9yX2lubGluaW5nKTogQ29weSBUUkVFX1JFQURPTkxZIGFuZAoJVFJFRV9USElTX1ZPTEFUSUxFLgoKMjAwMC0wNS0wMSAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAY3lnbnVzLmNvbT4KCgkqIGlmY3Z0LmMgKG5vY2VfZW1pdF9jbW92ZSk6IENvbmRpdGlvbmFsbHkgY29tcGlsZSBjYWxsIHRvCgllbWl0X2NvbmRpdGlvbmFsX21vdmUuCgoyMDAwLTA1LTAxICBKYWt1YiBKZWxpbmVrICA8amFrdWJAcmVkaGF0LmNvbT4KCgkqIGNvbmZpZy9pYTY0L2xpbnV4LmggKExJTktfU1BFQyk6IFVzZSAvbGliL2xkLWxpbnV4LWlhNjQuc28uMQoJYXMgdGhlIGR5bmFtaWMgbGlua2VyLgoKMjAwMC0wNS0wMSAgWmFjayBXZWluYmVyZyAgPHphY2tAd29sZXJ5LmN1bWIub3JnPgoKCSogY3BwZmlsZXMuYyAob3Blbl9pbmNsdWRlX2ZpbGUpOiBPcGVuIGZpbGUgaW4gYmxvY2tpbmcgbW9kZS4KCShyZWFkX2luY2x1ZGVfZmlsZSk6IERvbid0IGZjbnRsKGZkLCBGX1NFVEZMLCAwKSBhbnltb3JlLgoJT25seSBleGNsdWRlIGJsb2NrIGRldmljZXMgYW5kIGRpcmVjdG9yaWVzLgoKCSogY3BwaGFzaC5jIChfY3BwX21ha2VfaGFzaG5vZGUpOiBSZW5hbWUgbWFrZV9IQVNITk9ERSwgbm93CglzdGF0aWMuICBBbGxvY2F0ZSB0aGUgaGFzaG5vZGUgYW5kIGl0cyBzdHJpbmcgaW4gdGhlIHNhbWUKCWJsb2NrIG9mIG1lbW9yeS4KCShkZWxfSEFTSE5PREUpOiBEb24ndCBmcmVlIGgtPm5hbWUuCgkoX2NwcF9sb29rdXApOiBJZiB0aGVyZSBpcyBubyBlbnRyeSBmb3IgdGhpcyBzdHJpbmcsIGNyZWF0ZQoJb25lLCBvZiB0eXBlIFRfVk9JRC4KCShfY3BwX2xvb2t1cF9zbG90KTogRGVsZXRlLgoJKiBjcHBoYXNoLmg6IFVwZGF0ZSBwcm90b3R5cGVzLgoKCSogY3BwbGV4LmMgKG1heWJlX21hY3JvZXhwYW5kKTogQ2hlY2sgZm9yIGhwLT50eXBlID09IFRfVk9JRCwKCW5vdCBocCA9PSBOVUxMLgoJKiBjcHBsaWIuYyAoZG9fZGVmaW5lLCBkb191bmRlZiwgZG9fcHJhZ21hX3BvaXNvbiwgZG9fYXNzZXJ0LAoJZG9fdW5hc3NlcnQsIGNwcF9kZWZpbmVkKTogVXNlIF9jcHBfbG9va3VwLiAgRG9uJ3QgY3JlYXRlIGEKCW5vZGUgaGVyZSwganVzdCBmaWxsIGluIHRoZSB2YWx1ZSBmaWVsZCBwcm9wZXJseS4gICJEZWxldGUiCgllbnRyaWVzIGJ5IHNldHRpbmcgdGhlIHZhbHVlIGZpZWxkIHRvIFRfVk9JRC4gIENoZWNrIGZvcgoJaHAtPnR5cGUgPT0gVF9WT0lELCBub3QgaHAgPT0gTlVMTC4KCgkqIE1ha2VmaWxlLmluIChjcHBsaWIubyk6IERvbid0IGRlcGVuZCBvbiAkKEhBU0hUQUJfSCkuCgkqIGNwcGVycm9yLmMsIGNwcGV4cC5jLCBjcHBsZXguYywgY3BwbGliLmM6ICBEb24ndCBpbmNsdWRlCgloYXNodGFiLmguCgoyMDAwLTA1LTAxICBBbGV4YW5kcmUgT2xpdmEgIDxhb2xpdmFAY3lnbnVzLmNvbT4KCgkqIGNvbmZpZy9tbjEwMzAwL21uMTAzMDAuYyAocHJpbnRfb3BlcmFuZF9hZGRyZXNzKTogRG8gbm90IGFkZAoJemVybyB0byBTUC4KCgkqIGNvbmZpZy9tbjEwMzAwL21uMTAzMDAuYyAoZXhwYW5kX2VwaWxvZ3VlKTogSWYgU1AgaXMgdG8gYmUKCWFkanVzdGVkIGJ5IGxlc3MgdGhhbiAyNTYgYnl0ZXMsIHVzZSByZXQgcmVnYXJkbGVzcyBvZiBoYXZpbmcgYW55CgljYWxsZWUtc2F2ZWQgcmVnaXN0ZXIgdG8gcmVzdG9yZS4KCjIwMDAtMDUtMDEgTGF1cnluYXMgQml2ZWluaXMgPGxhdXJhc0Bzb2Z0aG9tZS5uZXQ+CgoJKiB0bS50ZXhpIChUQVJHRVRfSEFTX0ZfU0VURkxLVyk6IEZpeCB0eXBvLgoKMjAwMC0wNS0wMSBNYXJrIEVsYnJlY2h0IDxzbm93YmFsbDNAYmlnZm9vdC5jb20+CgoJKiBjb25maWcvaTM4Ni9kamdwcC5oIChJTlRfQVNNX09QKTogRGVmaW5lLgoJKENQUF9QUkVERUZJTkVTKTogUmVuYW1lIE1TRE9TIHRvIF9fTVNET1NfXy4KCShBU01fV0VBS0VOX0xBQkVMKTogRGVmaW5lLgoJKE1BU0tfQk5VMjEwKTogRGVmaW5lLgoJKFNVQlRBUkdFVF9TV0lUQ0hFUyk6IERlZmluZS4KCShTVVBQT1JUU19XRUFLLCBTVVBQT1JUU19PTkVfT05MWSk6IERlZmluZS4KCShNQUtFX0RFQ0xfT05FX09OTFkpOiBEZWZpbmUuCgkoVU5JUVVFX1NFQ1RJT05fUCwgVU5JUVVFX1NFQ1RJT04pOiBEZWZpbmUuCgoyMDAwLTA1LTAxICBNdW1pdCBLaGFuICA8a2hhbkB4cmF5bGl0aC53aXNjLmVkdT4KCgkqIGkzODYvY3lnd2luLmggKElOVF9BU01fT1ApOiBEZWZpbmUuCgpNb24gTWF5ICAxIDE4OjIwOjA2IDIwMDAgIERlbmlzIENoZXJ0eWtvdiAgPGRlbmlzY0BvdmVydGEucnU+CgoJKiBjb25maWcvYXZyL2F2ci5jIChhZGRyZXNzX2Nvc3QpOiByZW5hbWVkIHRvIGF2cl9hZGRyZXNzX2Nvc3QuCgkqIGNvbmZpZy9hdnIvYXZyLmggKEFERFJFU1NfQ09TVCk6IHVzZSBhdnJfYWRkcmVzc19jb3N0LgoKTW9uIE1heSAgMSAxNzo1MDo0NCAyMDAwICBEZW5pcyBDaGVydHlrb3YgIDxkZW5pc2NAb3ZlcnRhLnJ1PgoKCSogY29uZmlnL2F2ci9hdnIuYyAoYXNtX2ZpbGVfc3RhcnQpOiBvdXRwdXQgMCBhcyByMCBhbmQgMSBhcyByMSBpbgoJX190bXBfcmVnX18gYW5kIF9femVyb19yZWdfXyBpbml0aWFsaXphdGlvbi4KCjIwMDAtMDQtMzAgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgoJKiBmbG93LmMgKHByb3BhZ2F0ZV9vbmVfaW5zbik6IE1hcmsgc2V0cyBldmVuIHdoZW4gdGhlIGluc24gaXMgZGVhZC4KCgkqIGlmY3Z0LmMgKG5vY2VfcHJvY2Vzc19pZl9ibG9jayk6IEZhaWwgdGhlIGNvbnZlcnNpb24gaWYgWCBpcwoJcmVmZXJlbmNlZCBiZXd0ZWVuIHRoZSBjb25kaXRpb24gYW5kIHRoZSBqdW1wLiAgRG9uJ3QgZGVsZXRlCglhbnl0aGluZyBidXQgdGhlIGp1bXAuCgpTdW4gQXByIDMwIDIyOjQ4OjI0IDIwMDAgIEphc29uIEVja2hhcmR0ICA8amxlQGN5Z251cy5jb20+CgoJKiBiYi1yZW9yZGVyLmMgKHNjb3BlX2RlZik6IE5ldyBzdHJ1Y3QuCgkoc2NvcGVfZm9yZXN0X2luZm8pOiBOZXcgc3RydWN0LgoJKHN0cnVjdCByZW9yZGVyX2Jsb2NrX2RlZik6IE5ldyBtZW1iZXIgInNjb3BlIi4KCShSRU9SREVSX0JMT0NLX1NDT1BFKTogTmV3IG1hY3JvLgoJKHJlbGF0ZV9iYnNfd2l0aF9zY29wZXMpOiBOZXcgZnVuY3Rpb24gYW5kIHByb3RvdHlwZS4KCShtYWtlX25ld19zY29wZSk6IExpa2V3aXNlLgoJKGJ1aWxkX3Njb3BlX2ZvcmVzdCk6IExpa2V3aXNlLgoJKHJlbW92ZV9zY29wZV9ub3Rlcyk6IExpa2V3aXNlLgoJKGluc2VydF9pbnRyYV8xKTogTGlrZXdpc2UuCgkoaW5zZXJ0X2ludHJhX2JiX3Njb3BlX25vdGVzKTogTGlrZXdpc2UuCgkoaW5zZXJ0X2ludGVyX2JiX3Njb3BlX25vdGVzKTogTGlrZXdpc2UuCgkocmVidWlsZF9zY29wZV9ub3Rlcyk6IExpa2V3aXNlLgoJKGZyZWVfc2NvcGVfZm9yZXN0XzEpOiBMaWtld2lzZS4KCShmcmVlX3Njb3BlX2ZvcmVzdCk6IExpa2V3aXNlLgoJKGR1bXBfc2NvcGVfZm9yZXN0KTogTGlrZXdpc2UuCgkoZHVtcF9zY29wZV9mb3Jlc3RfMSk6IExpa2V3aXNlLgoJKGNoYWluX3Jlb3JkZXJfYmxvY2tzKTogU2V0IFJFT1JERVJfQkxPQ0tfU0NPUEUgZm9yIG5ldyBibG9jay4KCVVwZGF0ZSBSRU9SREVSX0JMT0NLX0VGRl9IRUFEIGFuZCBSRU9SREVSX0JMT0NLX0VGRl9FTkQgZm9yIG5ldwoJYmxvY2suCgkocmVvcmRlcl9iYXNpY19ibG9ja3MpOiBBZGRlZCBjYWxscyB0byBidWlsZF9zY29wZV9zY29wZV9mb3Jlc3QKCWFuZCByZW1vdmVfc2NvcGVfbm90ZXMgYmVmb3JlIHJlb3JkZXJpbmcgaXMgZG9uZS4gQWRkZWQgY2FsbHMgdG8KCXJlYnVpbGRfc2NvcGVfbm90ZXMsIGZyZWVfc2NvcGVfZm9yZXN0LCBhbmQgcmVvcmRlcl9ibG9ja3MgYWZ0ZXIKCWFmdGVyIHJlb3JkZXJpbmcgaXMgZG9uZS4KCjIwMDAtNDAtMzAgIEJydWNlIEtvcmIgIDxia29yYkBnbnUub3JnPgoKCSogZml4aW5jL2luY2xoYWNrLmRlZjogIEFkZGVkIGRlZmluaXRpb25zIG5lZWRlZCBieSBPU1I1LAoJcmVtb3ZlZCB0d28gc3RhbGUgZW50cmllcyAoZGVmaW5lZCBhd2F5IHdpdGggT0xEX0NQUCkuCgkqIGZpeGluYy9pbmNsaGFjay5zaDogcmVnZW4KCSogZml4aW5jL2ZpeGluY2wueDogcmVnZW4KCjIwMDAtMDQtMzAgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgoJKiBpZmN2dC5jIChkZWFkX29yX3ByZWRpY2FibGUpOiBNYW51YWxseSBzcXVlZXplIG5vbi1tb3ZhYmxlIG5vdGVzCglmcm9tIHRoZSBsYXN0IGluc24gaW4gdGhlIHNlcXVlbmNlLgoKMjAwMC0wNC0zMCAgWmFjayBXZWluYmVyZyAgPHphY2tAd29sZXJ5LmN1bWIub3JnPgoKCSogY3BwbGV4LmMgKGNwcF9pZGNtcCk6IE5ldyBmdW5jdGlvbi4KCSogY3BwbGliLmg6IFByb3RvdHlwZSBpdC4KCSogc2Nhbl9kZWNscy5jIChzY2FuX2RlY2xzKTogVXNlIGl0IHRvIGluc3BlY3QgdG9rZW4gbmFtZXMuCgkqIGZpeC1oZWFkZXIuYyAocmVhZF9zY2FuX2ZpbGUpOiBMaWtld2lzZS4gIFNldCBzeXN0ZW1faGVhZGVyX3Agb24KCXRoZSBmaWxlIGJlaW5nIHJ1biB0aHJvdWdoIHRoZSBwcmVwcm9jZXNzb3IuCgkoY2hlY2tfbWFjcm9fbmFtZXMpOiBQcm92aWRlIGxlbmd0aCBvZiB0b2tlbiB0byBjcHBfZGVmaW5lZC4KCgkqIE1ha2VmaWxlLmluOiBSZW1vdmUgc3RhbGUgd2FybmluZyBtZXNzYWdlLgoKCSogY3BwZmlsZXMuYyAocmVkdW5kYW50X2luY2x1ZGVfcCk6IFByb3ZpZGUgbGVuZ3RoIG9mIHRva2VuIHRvCgljcHBfZGVmaW5lZC4KCSogY3BwaGFzaC5jIChfY3BwX21ha2VfaGFzaG5vZGUsIF9jcHBfbG9va3VwX3Nsb3QpOiBIYXNoCgl2YWx1ZXMgYXJlIHVuc2lnbmVkIGludC4KCShfY3BwX2xvb2t1cCwgX2NwcF9sb29rdXBfc2xvdCk6IERvIG5vdCBjYWxjdWxhdGUgdGhlIGxlbmd0aC4KCShfY3BwX2xvb2t1cF9zbG90KTogRG8gbm90IGNhbGN1bGF0ZSB0aGUgaGFzaCwgZWl0aGVyLgoJKiBjcHBoYXNoLmg6IFVwZGF0ZSBwcm90b3R5cGVzLgoJKiBjcHBsaWIuYyAoZG9fZGVmaW5lLCBkb191bmRlZiwgZG9fcHJhZ21hX3BvaXNvbiwgZG9fYXNzZXJ0KToKCUhhc2hlcyBhcmUgdW5zaWduZWQgaW50LiAgQ2FsY3VsYXRlIGhhc2ggaGVyZSwgcGFzcyBieSB2YWx1ZQoJdG8gX2NwcF9sb29rdXBfc2xvdC4KCjIwMDAtMDQtMzAgIEJlcm5kIFNjaG1pZHQgIDxiZXJuZHNAY3lnbnVzLmNvLnVrPgoKCSogc2ltcGxpZnktcnR4LmMgKGNoZWNrX3ZhbHVlX3VzZWxlc3MpOiBEZWxldGUgZnVuY3Rpb24uCgkoZGlzY2FyZF91c2VsZXNzX2xvY3MpOiBEb24ndCBjYWxsIGl0OyBtYW5hZ2UgTl9VU0VMRVNfVkFMVUVTIGNvdW50ZXIKCWJ5IGhhbmQuCgkoY3NlbGliX2ludmFsaWRhdGVfcmVnbm8pOiBMaWtld2lzZS4KCShjc2VsaWJfaW52YWxpZGF0ZV9tZW1fMSk6IExpa2V3aXNlLgoJKHJlZmVyZW5jZXNfdmFsdWVfcCk6IFJlY29nbml6ZSB1c2VsZXNzIHZhbHVlcyBieSB0aGUgZmFjdCB0aGF0IHRoZXkKCWhhdmUgbm8gbG9jYXRpb25zLgoJKGRpc2NhcmRfdXNlbGVzc192YWx1ZXMpOiBMaWtld2lzZS4KCShjc2VsaWJfcmVjb3JkX3NldCk6IFRoaXMgbWF5IHR1cm4gYSB1c2VsZXNzIHZhbHVlCglpbnRvIGEgdXNlZnVsIG9uZS4KCjIwMDAtMDQtMzAgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgoJKiBjb25maWcvZDMwdjogTmV3IHBvcnQuCgoJKiBjb25maWd1cmUuaW4gKGQzMHYtKik6IFNldCBmcCBmb3JtYXQuCgkqIGNvbmZpZ3VyZTogUmVidWlsZC4KCjIwMDAtMDQtMzAgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgoJKiBpZmN2dC5jOiBOZXcgZmlsZS4KCSogTWFrZWZpbGUuaW4gKE9CSlMpOiBBZGQgaXQuCgkoaWZjdnQubyk6IE5ldyB0YXJnZXQuCgkqIGp1bXAuYyAoanVtcF9vcHRpbWl6ZV8xKTogUmVtb3ZlIGFsbCBjb2RlIHJlbGF0ZWQgdG8gaWYtY29udmVyc2lvbiwKCWFuZCBjb25kaXRpb25hbCBhcml0aG1ldGljLgoJKGZpbmRfaW5zZXJ0X3Bvc2l0aW9uKTogUmVtb3ZlLgoJKiB0aW1ldmFyLmRlZiAoVFZfSUZDVlQsIFRWX0lGQ1ZUMik6IE5ldy4KCSogdG9wbGV2LmMgKERGSV9jZSwgREZJX2NlMik6IE5ldy4KCShkdW1wX2ZpbGUpOiBBZGQgY2UgYW5kIGNlMiBkdW1wcy4KCShyZXN0X29mX2NvbXBpbGF0aW9uKTogUnVuIGlmX2NvbnZlcnQgYSBjb3VwbGUgbyB0aW1lcy4gIFNldAoJY3NlX25vdF9leHBlY3RlZCBhZnRlciBjc2UyLiAgRG9uJ3Qgc2V0IG5vX25ld19wc2V1ZG9zIHVudGlsCglhZnRlciBzY2hlZDEgb3IgcmVjb21wdXRlX3JlZ191c2FnZS4KCjIwMDAtMDQtMzAgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgoJKiBjb25maWcvYWxwaGEvdC1jcnRiZSAoY3J0YmVnaW4ubyk6IEFkZCAiLUkuIi4KCShjcnRlbmQubywgY3J0YmVnaW5TLm8sIGNydGVuZFMubyk6IExpa2V3aXNlLgoKMjAwMC0wNC0zMCAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAY3lnbnVzLmNvbT4KCgkqIGZsb3cuYyAoc3RydWN0IHJlZ19jb25kX2xpZmVfaW5mbyk6IE5ldy4KCShzdHJ1Y3QgcHJvcGFnYXRlX2Jsb2NrX2luZm8pOiBBZGQgcmVnX2NvbmRfZGVhZCBhbmQgcmVnX2NvbmRfcmVnLgoJKGluaXRfcHJvcGFnYXRlX2Jsb2NrX2luZm8pOiBJbml0aWFsaXplIHRoZW0uCgkoZnJlZV9wcm9wYWdhdGVfYmxvY2tfaW5mbyk6IERlc3RydWN0IHRoZW0uCgkobWFya19zZXRfMSk6IENvbnNpZGVyIGNvbmRpdGlvbmFsIGxpZmUgYmVmb3JlIGtpbGxpbmcgYSByZWdpc3Rlci4KCShtYXJrX3JlZ25vX2NvbmRfZGVhZCk6IE5ldy4KCShmcmVlX3JlZ19jb25kX2xpZmVfaW5mbyk6IE5ldy4KCShmbHVzaF9yZWdfY29uZF9yZWdfMSwgZmx1c2hfcmVnX2NvbmRfcmVnKTogTmV3LgoJKGlvcl9yZWdfY29uZCwgbm90X3JlZ19jb25kLCBuYW5kX3JlZ19jb25kKTogTmV3LgoJKG1hcmtfdXNlZF9yZWcpOiBSZWNvcmQgY29uZGl0aW9uYWwgbGlmZS4KCgkqIGhhaWZhLXNjaGVkLmMgKHNjaGVkdWxlX2luc25zKTogRGlzYWJsZSBkZWF0aCBjb3VudGluZwoJc2FuaXR5IGNoZWNrIGZvciBIQVZFX2NvbmRpdGlvbmFsX2V4ZWN1dGlvbi4KCjIwMDAtMDQtMzAgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgoJKiBNYWtlZmlsZS5pbiAoVElNRVZBUl9IKTogTmV3LgoJKGdnYy1zaW1wbGUubywgZ2djLXBhZ2UubywgdG9wbGV2Lm8sIHRpbWV2YXIubyk6IFVzZSBpdC4KCSh0aW1ldmFyLmgpOiBSZW1vdmUgcnVsZS4KCjIwMDAtMDQtMjkgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgoJKiBjb25maWcvYWxwaGEvY3J0ZW5kLmFzbTogVXNlIEMgY29tbWVudHMgaW5zdGVhZCBvZiAjLgoJKiBjb25maWcvYWxwaGEvY3J0YmVnaW4uYXNtOiBMaWtld2lzZS4gIE1hcmsgX19kc29faGFuZGxlIGhpZGRlbi4KCgkqIGNvbmZpZy9hbHBoYS9lbGYuaCAoU0VMRUNUX1NFQ1RJT04pOiBUcmVhdCBDT05TVFJVQ1RPUiBsaWtlIFZBUl9ERUNMLgoKMjAwMC0wNC0yOSAgWmFjayBXZWluYmVyZyAgPHphY2tAd29sZXJ5LmN1bWIub3JnPgoKCSogY3BwaGFzaC5oIChlbnVtIG5vZGVfdHlwZTogVGFrZSBvdXQgVF9NQ09OU1QuCgkodW5pb24gaGFzaHZhbCk6IE1vdmUgaW50byBzdHJ1Y3QgaGFzaG5vZGUuCgkoc3RydWN0IGhhc2hub2RlKTogUGFjayB0aWdodGVyLiAgUmVtb3ZlIGZpbGUsIGxpbmUsIGNvbAoJbWVtYmVycy4KCSogY3BwaGFzaC5jOiBDb25zdGlmeSBtb3N0IG9mIHRoZSBtYWNyby1kZWZpbml0aW9uIHN0cnVjdHVyZXMuCgkoc3RydWN0IGRlZmluaXRpb24pOiBSZXBsYWNlIGJ5IHN0cnVjdCBvYmplY3RfZGVmbgoJYW5kIHN0cnVjdCBmdW5jdF9kZWZuLiAgUHV0IGZpbGUsIGxpbmUsIGNvbHVtbiBpbmZvcm1hdGlvbgoJaGVyZS4gIEFsbCB1c2VycyB1cGRhdGVkIHRvIG1hdGNoLgoJKF9jcHBfY3JlYXRlX2RlZmluaXRpb24sIF9jcHBfbWFjcm9leHBhbmQpOiBSZW1vdmUgc3BlY2lhbAoJY2FzZSBmb3IgI2RlZmluZSBXT1JEIE9USEVSV09SRC4KCSogY3BwbGliLmMgKGRvX3VuZGVmKTogUmVtb3ZlIFRfTUNPTlNUIGNhc2UuCgoJKiBjcHBoYXNoLmg6IE1vdmUgc3RydWN0IHJlZmxpc3QsIHN0cnVjdCBkZWZpbml0aW9uLCBhbmQgdGhlCglERUZJTklUSU9OIHR5cGVkZWYgdG8gY3BwaGFzaC5jLiAgVXNlICdzdHJ1Y3QgZGVmaW5pdGlvbiAqJyBpbgoJdW5pb24gaGFzaHZhbC4gIF9jcHBfZnJlZV9kZWZpbml0aW9uIHRha2VzIGEgSEFTSE5PREUgcG9pbnRlci4KCSogY3BwaGFzaC5jIChfY3BwX2ZyZWVfZGVmaW5pdGlvbik6IEZyZWUgZGF0YSBwb2ludGVkIHRvIGJ5CglNQ09OU1QsIFhDT05TVCwgTUFDUk8sIGFuZCBGTUFDUk8gbm9kZXMgcHJvcGVybHkuCgkoX2NwcF9jcmVhdGVfZGVmaW5pdGlvbiwgZGVsX0hBU0hOT0RFKTogSnVzdCBjYWxsCglfY3BwX2ZyZWVfZGVmaW5pdGlvbiB0byBjbGVhciBvdXQgYSBoYXNobm9kZS4KCSogY3BwbGliLmMgKGRvX3ByYWdtYV9wb2lzb24pOiBMaWtld2lzZS4KClNhdCBBcHIgMjkgMTI6MjU6MTcgMjAwMCAgQWxleGFuZHJlIE9saXZhICA8YW9saXZhQGN5Z251cy5jb20+CgoJKiBjb25maWcvbW4xMDMwMC9tbjEwMzAwLmggKEZJUlNUX0RBVEFfUkVHTlVNLAoJTEFTVF9EQVRBX1JFR05VTSwgRklSU1RfQUREUkVTU19SRUdOVU0sIExBU1RfQUREUkVTU19SRUdOVU0sCglGSVJTVF9FWFRFTkRFRF9SRUdOVU0sIExBU1RfRVhURU5ERURfUkVHTlVNKTogTmV3IG1hY3Jvcy4KCShSRUdOT19TUF9QKTogUmVkZWZpbmUgaW4gdGVybXMgb2YgU1RBQ0tfUE9JTlRFUl9SRUdOVU0uCgkoUkVHTk9fREFUQV9QLCBSRUdOT19BRERSRVNTX1AsIFJFR05PX0VYVEVOREVEX1AsCglSRUdOT19BTTMzX1ApOiBSZWRlZmluZSBpbiB0ZXJtcyBvZiB0aGUgbmV3IG1hY3Jvcy4KCShDT05ESVRJT05BTF9SRUdJU1RFUl9VU0FHRSwgUkVHTk9fUkVHX0NMQVNTKTogTGlrZXdpc2UuCgkoRlVOQ1RJT05fVkFMVUUsIExJQkNBTExfVkFMVUUsIEZVTkNUSU9OX1ZBTFVFX1JFR05PX1AsCglTVFJVQ1RfVkFMVUUpOiBMaWtld2lzZS4KCShTVEFDS19QT0lOVEVSX1JFR05VTSwgRlJBTUVfUE9JTlRFUl9SRUdOVU0sCglBUkdfUE9JTlRFUl9SRUdOVU0sIFNUQVRJQ19DSEFJTl9SRUdOVU0pOiBMaWtld2lzZS4gIE1vdmVkLgoKU2F0IEFwciAyOSAwMToxODo0NSBNRVQgRFNUIDIwMDAgIEphbiBIdWJpY2thICA8amhAc3VzZS5jej4KCgkqIHJlZ21vdmUuYyAoc3RydWN0IHJlY29yZF9zdGFja19tZW1yZWZzX2RhdGEpOiBOZXcuCgkocmVjb3JkX3N0YWNrX21lbXJlZnMpOiBOZXcgZnVuY3Rpb24uCgkoY29tYmluZV9zdGFja19hZGp1c3RtZW50c19mb3JfYmxvY2spOiBVc2UgaXQuCgpTYXQgQXByIDI5IDAxOjE1OjI3IE1FVCBEU1QgMjAwMCAgSmFuIEh1Ymlja2EgIDxqaEBzdXNlLmN6PgoKCSogY2FsbHMuYyAoY2FsbHNfZnVuY3Rpb25fMSk6ICBQcm9wZXJseSBoYW5kbGUgVFJFRV9MSVNUIGV4cHJlc3Npb25zOwoJdXNlIHNwZWNpYWxfZnVuY3Rpb25fcCB0byBkZXRlY3QgYWxsb2NhLgoKRnJpIEFwciAyOCAxNjozMDozMyAyMDAwICBNYXJjIEVzcGllIDxlc3BpZUBjdnMub3BlbmJzZC5vcmc+CgoJKiBnY2MudGV4aTogRml4ZXMgZm9yIG1ha2VpbmZvIDQuMCAtLWh0bWwuCgoyMDAwLTA0LTI4ICBaYWNrIFdlaW5iZXJnICA8emFja0B3b2xlcnkuY3VtYi5vcmc+CgoJKiBwY3AuaDogRGVsZXRlIGZpbGUuCgoyMDAwLTA0LTI4ICBLYXp1IEhpcmF0YSAgPGthenVAaHhpLmNvbT4KCgkqIGg4MzAwLmMgKGZ1bmN0aW9uX2VwaWxvZ3VlKTogQ2xlYW4gdXAgZmxhZ3Mgd2hlbiB0aGUgbGFzdCBpbnNuCglpbiBhIGZ1bmN0aW9uIGlzIGEgYmFycmllci4KCjIwMDAtMDQtMjggIENocmlzIERlbWV0cmlvdSAgPGNnZEBzaWJ5dGUuY29tPgoKCSogY29uZmlndXJlLmluIChzcGFyYy1oYWwtc29sYXJpczIqKTogcHJvdGVjdCBbXSBnbG9iIGZyb20KCW15IGV4cGFuc2lvbi4KCShtaXBzKi0qLWVjb2ZmKiwgbWlwcyotKi1lbGYqLCBtaXBzKi0qLSopOiB1c2UgTUFTS18gZGVmaW5lcwoJcmF0aGVyIHRoYW4gaGFyZC1jb2RlZCBjb25zdGFudHMgaW4gdGFyZ2V0X2NwdV9kZWZhdWx0Mi4KCSogY29uZmlndXJlOiBSZWdlbmVyYXRlLgoKMjAwMC0wNC0yOCAgSmFzb24gTWVycmlsbCAgPGphc29uQGNhc2V5LmN5Z251cy5jb20+CgoJKiB0cmVlLmMgKGdldF9jYWxsZWVfZm5kZWNsKTogRXh0cmFjdCB0aGUgaW5pdGlhbCB2YWx1ZSBmcm9tCglhIHJlYWRvbmx5IGRlY2wuCgoyMDAwLTA0LTI4ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEBjeWdudXMuY29tPgoKCSogdmFyYXNtLmMgKHJlY29yZF9jb25zdGFudF8xKTogUmVjb3JkIHRoZSBDT0RFX0xBQkVMIHdoZW4KCXRha2luZyB0aGUgYWRkcmVzcyBvZiBhIExBQkVMX1JFRi4KCjIwMDAtMDQtMjggIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgkgICAgSmFuIEh1Ymlja2EgIDxqaEBzdXNlLmN6PgoKCSogY2FsbHMuYyAoY29tYmluZV9wZW5kaW5nX3N0YWNrX2FkanVzdG1lbnRfYW5kX2NhbGwpOiBSZXR1cm4gdGhlCglhZGp1c3RtZW50OyBkb24ndCBkbyB0aGUgc3RhY2sgYWRqdXN0LgoJKGV4cGFuZF9jYWxsKTogQ2FsbCBjb21wdXRlX2FyZ3VtZW50X2Jsb2NrX3NpemUgcmlnaHQgYmVmb3JlCglhbGxvY2F0aW5nIHRoZSBibG9jazsgdXBkYXRlIGNvbW1lbnQ7IGRvbid0IGRvIGFsaWdubWVudCBzYW5pdHkKCWNoZWNraW5nIGZvciBzaWJsaW5nIGNhbGw7IHVzZSBhcmdzX3NpemUgaW5zdGVhZCBvZgoJdW5hZGp1c3RlZF9hcmdzX3NpemUgYmVmb3JlIGFyZ3Nfc2l6ZSBpcyBhZGp1c3RlZC4gIFVzZQoJY29tYmluZV9wZW5kaW5nX3N0YWNrX2FkanVzdG1lbnRfYW5kX2NhbGwgdG8gY29tcHV0ZSBzdGFjayBhZGp1c3QKCWZvciBtdXN0X3ByZWFsbG9jYXRlIGNhc2UuCgoJKiBleHByLmMgKHB1c2hfYmxvY2spOiBSZW1vdmUgc2hhZG93IGB0ZW1wJyBpbiBpbm5lciBzY29wZS4KCjIwMDAtMDQtMjggIEphc29uIE1lcnJpbGwgIDxqYXNvbkBjYXNleS5jeWdudXMuY29tPgoKCSogdG9wbGV2LmMgKHJlc3Rfb2ZfY29tcGlsYXRpb24pOiBDYWxsCglub3RlX2RlZmVycmFsX29mX2RlZmluZWRfaW5saW5lX2Z1bmN0aW9uIGV2ZW4gaWYgdGhlIGZ1bmN0aW9uCgljYW4ndCBiZSBpbmxpbmVkLgoKMjAwMC0wNC0yOCAgU2NvdHQgQmFtYnJvdWdoICA8c2NvdHRiQG5ldHdpbmRlci5vcmc+CgoJKiBjcHBsZXguYyAoX2NwcF9zY2FuX2xpbmUpOiBGaXggYnVmZmVyIG92ZXJ3cml0ZS4KCjIwMDAtMDQtMjggIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgoJKiB0b3BsZXYuYyAocmVzdF9vZl90eXBlX2NvbXBpbGF0aW9uKTogRml4IHNkYiBUSU1FVkFSIHR5cG8uCgoyMDAwLTA0LTI4ICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiB0aW1ldmFyLmMgKGluaXRfdGltZXZhcik6IERlQU5TSWZ5IGZ1bmN0aW9uIGRlZmluaXRpb24uCgoyMDAwLTA0LTI3ICBBbGV4IFNhbXVlbCAgPHNhbXVlbEBjb2Rlc291cmNlcnkuY29tPgoKCSogTWFrZWZpbGUuaW4gKHRpbWV2YXIubyk6IERlcGVuZCBvbiBmbGFncy5oLgoJKiB0aW1ldmFyLmMgKHVudXNlZF9zdGFja19pbnN0YW5jZXMpOiBOZXcgdmFyaWFibGUuCgkodGltZXZhcl9wdXNoKTogVGFrZSBhIHRpbWV2YXJfc3RhY2tfZGVmIGZyb20KCXVudXNlZF9zdGFja19pbnN0YW5jZXMgaWYgYXZhaWxhYmxlLgoJKHRpbWV2YXJfcG9wKTogUHVzaCB0aGUgcG9wcGVkIHRpbWV2YXJfc3RhY2tfZGVmIG9udG8KCXVudXNlZF9zdGFja19pbnN0YW5jZXMuCgkoVElNRVZBUl9FTkFCTEUpOiBOZXcgbWFjcm8uCgkodGltZXZhcl9kZWYpOiBNYWtlIHN0YW5kYWxvbmUgYSAxLWJpdCBmaWVsZC4gIEFkZCBmaWVsZCB1c2VkLgoJKGdldF90aW1lKTogUmVuYW1lIHBhcmFtZXRlciB0byBub3cuICBSZXR1cm4gYWZ0ZXIgY2xlYXJpbmcgaXQgaWYKCW5vdCBUSU1FVkFSX0VOQUJMRS4KCShpbml0X3RpbWV2YXIpOiBEbyBub3RoaW5nIGlmIG5vdCBUSU1FVkFSX0VOQUJMRS4KCSh0aW1ldmFyX3BvcCk6IExpa2V3aXNlLgoJKHRpbWV2YXJfc3RvcCk6IExpa2V3aXNlLgoJKHRpbWV2YXJfcHVzaCk6IExpa2V3aXNlLiAgTWFyayB0aGUgdGltaW5nIHZhcmlhYmxlIGFzIHVzZWQuCgkodGltZXZhcl9zdGFydCk6IExpa2V3aXNlLgoJKHRpbWV2YXJfcHJpbnQpOiBEbyBub3RoaW5nIGlmIG5vdCBUSU1FVkFSX0VOQUJMRS4gIERvbid0IHByaW50Cgl0aW1ldmFycyB0aGF0IHdlcmUgbmV2ZXIgdXNlZC4KCjIwMDAtMDQtMjcgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjLWNvbW1vbi5jIChjX2FwcGx5X3R5cGVfcXVhbHNfdG9fZGVjbCk6IFJFRkVSRU5DRV9UWVBFUyBhcmUKCWFsd2F5cyBUUkVFX1JFQURPTkxZLgoKMjAwMC0wNC0yNyAgVWxyaWNoIERyZXBwZXIgIDxkcmVwcGVyQGN5Z251cy5jb20+CgoJKiBpMzg2LmggKEZVTkNUSU9OX0JMT0NLX1BST0ZJTEVSX0VYSVQpOiBHZW5lcmF0ZSBtZW0gcmVmZXJlbmNlCglmb3IgY2FsbCBpbnN0cnVjdGlvbiB3aXRoIG1vZGUgUUltb2RlLgoKMjAwMC0wNC0yNyAgQWxleCBTYW11ZWwgIDxzYW11ZWxAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIE1ha2VmaWxlLmluIChPQkpTKTogQWRkIHRpbWV2YXIuby4KCSh0b3BsZXYubyk6IERlcGVuZCBvbiB0aW1ldmFyLmguCgkoZ2djLXNpbXBsZS5vKTogTGlrZXdpc2UuCgkoZ2djLXBhZ2Uubyk6IExpa2V3aXNlLgoJKHRpbWV2YXIubyk6IE5ldyBydWxlLgoJKHRpbWV2YXIuaCk6IE5ldyBydWxlLgoKCSogdGltZXZhci5oOiBOZXcgZmlsZS4KCSogdGltZXZhci5jOiBMaWtld2lzZS4KCSogdGltZXZhci5kZWY6IExpa2V3aXNlLgoKCSogdG9wbGV2LmggKGdjX3RpbWUsIHBhcnNlX3RpbWUsIHZhcmNvbnN0X3RpbWUpOiBSZW1vdmUuCgkqIHRvcGxldi5jOiBVc2UgdGltZXZhcl9wdXNoIGFuZCB0aW1ldmFyX3BvcCBpbnN0ZWFkIG9mIFRJTUVWQVIKCXRocm91Z2hvdXQuCgkoVElNRVZBUik6IFJlbW92ZSBtYWNyby4KCShnY190aW1lLCBwYXJzZV90aW1lLCB2YXJjb25zdF90aW1lLCBpbnRlZ3JhdGlvbl90aW1lLCBqdW1wX3RpbWUsCgljc2VfdGltZSwgZ2NzZV90aW1lLCBsb29wX3RpbWUsIGNzZTJfdGltZSwgYnJhbmNoX3Byb2JfdGltZSwKCWZsb3dfdGltZSwgY29tYmluZV90aW1lLCByZWdtb3ZlX3RpbWUsIHNjaGVkX3RpbWUsCglsb2NhbF9hbGxvY190aW1lLCBnbG9iYWxfYWxsb2NfdGltZSwgZmxvdzJfdGltZSwgcGVlcGhvbGUyX3RpbWUsCglzY2hlZDJfdGltZSwgZGJyX3NjaGVkX3RpbWUsIHJlb3JkZXJfYmxvY2tzX3RpbWUsCglyZW5hbWVfcmVnaXN0ZXJzX3RpbWUsIHNob3J0ZW5fYnJhbmNoX3RpbWUsIHN0YWNrX3JlZ190aW1lLAoJdG9fc3NhX3RpbWUsIGZyb21fc3NhX3RpbWUsIGZpbmFsX3RpbWUsIHN5bW91dF90aW1lLCBkdW1wX3RpbWUsCglhbGxfdGltZSk6IFJlbW92ZS4KCShjb21waWxlX2ZpbGUpOiBEb24ndCBpbml0aWFsaXplIHRpbWUgdmFyaWFibGVzLiAgQ2FsbAoJaW5pdF90aW1ldmFyIGFuZCBzdGFydCBUVl9UT1RBTCB0aW1lci4gIENhbGwgdGltZXZhcl9wcmludCBpbnN0ZWFkCglvZiBtYW55IGNhbGxzIHRvIHByaW50X3RpbWUuCgkocmVzdF9vZl9jb21waWxhdGlvbik6IEFkZCB0aW1pbmcgZm9yIHJlbG9hZF9jc2VfcmVncy4KCShnZXRfcnVuX3RpbWUpOiBSZW1vdmVkIHRvIHRpbWV2YXIuYy4KCShwcmludF90aW1lKTogTGlrZXdpc2UuCgkoZ2V0X3J1bl90aW1lKTogSW1wbGVtZW50IHVzaW5nIFRWX1RPVEFMIHRpbWUgdmFyaWFibGUuCgkocHJpbnRfdGltZSk6IEdldCB0b3RhbCBydW4gdGltZSBmcm9tIGdldF9ydW5fdGltZS4KCSogZ2djLXBhZ2UuYyAoZ2djX2NvbGxlY3QpOiBQdXNoIGFuZCBwb3AgVFZfR0MgaW5zdGVhZCBvZgoJY29tcHV0aW5nIGVsYXBzZWQgdGltZSBleHBsaWNpdGx5LgoJKiBnZ2Mtc2ltcGxlLmMgKGdnY19jb2xsZWN0KTogTGlrZXdpc2UuCgkoZ2NfdGltZSk6IFJlbW92ZSBkZWNsYXJhdGlvbi4KCjIwMDAtMDQtMjcgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjYWxscy5jIChjb21iaW5lX3BlbmRpbmdfc3RhY2tfYWRqdXN0bWVudF9hbmRfY2FsbCk6IE5ldyBmdW5jdGlvbi4KCShleHBhbmRfY2FsbCk6IFVzZSBpdC4KCjIwMDAtMDQtMjcgIEphbiBIdWJpY2thICA8amhAc3VzZS5jej4KCgkqIGZsb3cuYyAobWFya19zZXRfMSk6ICBIYW5kbGUgTUVNcyBpbiBaRVJPX0VYVFJBQ1QvU0lHTl9FWFRSQUNUCglmaWVsZHMuCgpUaHUgQXByIDI3IDEyOjQ3OjAwIDIwMDAgIEFsZXhhbmRyZSBPbGl2YSAgPGFvbGl2YUBjeWdudXMuY29tPgoKCSogY29uZmlnL21uMTAzMDAvbW4xMDMwMC5tZCAobW92aGkpOiBTaW1wbGlmeS4gIFByZWZlciBkYXRhCglyZWdpc3RlcnMuCgpUaHUgQXByIDI3IDE3OjMzOjA1IE1FVCBEU1QgMjAwMCAgSmFuIEh1Ymlja2EgIDxqaEBzdXNlLmN6PgoKCSogZnVuY3Rpb24uYyAoZXBpbG9ndWVfZG9uZSk6IFBhc3Mgd2hvbGUgaW5zbiB0byByZWNvcmRfaW5zbnMuCgpUaHUgQXByIDI3IDE2OjU1OjI4IE1FVCBEU1QgMjAwMCAgSmFuIEh1Ymlja2EgIDxqaEBzdXNlLmN6PgoKCSogY3NlLmMgKENTRV9BRERSRVNTX0NPU1QpOiBSZW1vdmUuCgkoZmluZF9iZXN0X2FkZHIpOiBBZGQgbmV3IHBhcmFtZXRlciAiTU9ERSIsIHVzZSBhZGRyZXNzX2Nvc3QgaW5zdGVhZAoJb2YgQ1NFX0FERFJFU1NfQ09TVAoJKGFkZHJlc3NfY29zdCk6IE5ldy4KCShmb2xkX3J0eCk6IFVwZGF0ZSBjYWxsIG9mIGZpbmRfYmVzdF9hZGRyLgoJKiBydGwuaCAoYWRkcmVzc19jb3N0KTogRGVjbGFyZS4KCSogbG9vcC5jIChnZW5lcmFsX2luZHVjdGlvbl92YXIpOiBBZGQgbmV3IHBhcmFtZXRlciAiTU9ERSIsIHVzZQoJYWRkcmVzc19jb3N0IGluc3RlYWQgb2YgQUREUkVTU19DT1NUCgkoaW5pdF9sb29wKTogVXNlIGFkZHJlc3NfY29zdCBpbnN0ZWFkIG9mIEFERFJFU1NfQ09TVC4KCShjaGVja19pbnNuX2Zvcl9naXZzKTogVXBkYXRlIGNhbGwgb2YgZ2VuZXJhbF9pbmR1Y3Rpb25fdmFyLgoJKGZpbmRfbWVtX2dpdnMpOiBMaWtld2lzZS4KCShjb25zZWNfc2V0c19naXYpOiBMaWtld2lzZS4KCSogY29uZmlnL2kzODYvaTM4Ni5oIChBRERSRVNTX0NPU1QpOiBDYWxsIGl4ODZfYWRkcmVzc19jb3N0LgoJKiBpMzg2LmMgKGl4ODZfYWRkcmVzc19jb3N0KTogTmV3LgoJKiBpMzg2LXByb3Rvcy5oIChpeDg2X2FkZHJlc3NfY29zdCk6IERlY2xhcmUuCgpUaHUgQXByIDI3IDExOjQ1OjE2IDIwMDAgIEFsZXhhbmRyZSBPbGl2YSAgPGFvbGl2YUBjeWdudXMuY29tPgoKCSogY29uZmlnL21uMTAzMDAvbW4xMDMwMC5tZCAobW92cWkpOiBTaW1wbGlmeS4gIFByZWZlciBkYXRhCglyZWdpc3RlcnMuCgpUaHUgQXByIDI3IDE2OjExOjAwIE1FVCBEU1QgMjAwMCAgSmFuIEh1Ymlja2EgIDxqaEBzdXNlLmN6PgoKCSogZXhwci5jIChzdG9yZV9leHByKTogVXNlIGNsZWFyX3N0b3JhZ2UgaW5zdGVhZCBvZiBkaXJlY3QgbWVtc2V0CglsaWJjYWxsLgoKVGh1IEFwciAyNyAxMDozNjo1MSAyMDAwICBBbGV4YW5kcmUgT2xpdmEgIDxhb2xpdmFAY3lnbnVzLmNvbT4KCgkqIGNvbmZpZy9tbjEwMzAwL21uMTAzMDAuYyAobW4xMDMwMF9hZGRyZXNzX2Nvc3QpOiBUZXN0CglBU0hJRlQsIEFORCBhbmQgTEFCRUxfUkVGLgoKVGh1IEFwciAyNyAxNTowODo0NiBNRVQgRFNUIDIwMDAgIEphbiBIdWJpY2thICA8amhAc3VzZS5jej4KCgkqIGludm9rZS50ZXhpICgtZm9wdGltaXplLXNpYmxpbmctY2FsbHMpOiBGaXguCgpUaHUgQXByIDI3IDE0OjU0OjIyIE1FVCBEU1QgMjAwMCAgSmFuIEh1Ymlja2EgIDxqaEBzdXNlLmN6PgoKCSogbG9vcC5jIChsb2FkX21lbXMpICBEb24ndCB1c2UgaGFyZCByZWdpc3RlcnMgZm9yIHRoZSBob2lzdGluZy4KCgkqIHVucm9sbC5jICh1bnJvbGxfbG9vcCk6IEF2b2lkIG92ZXJmbG93IGluIHRoZSBuX2l0ZXJhdGlvbnMKCWNhbGN1bGF0aW9uOyByZW5hbWUgY29uc3RfZXF1aXYgYXJyYXkgaW4gdGhlIHByZWNvbmRpdGlvbmluZyBjb2RlCglmcm9tIGxvb3BfdW5yb2xsIHRvIGxvb3BfdW5yb2xsX3ByZWNvbmRpdGlvbgoKMjAwMC0wNC0yNyAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAY3lnbnVzLmNvbT4KCgkqIGZsb3cuYyAoc3RydWN0IHByb3BhZ2F0ZV9ibG9ja19pbmZvKTogUmVtb3ZlIG5ld19kZWFkLCBuZXdfbGl2ZTsKCWFkZCBuZXdfc2V0LgoJKHByb3BhZ2F0ZV9vbmVfaW5zbik6IENsZWFyIGl0LiAgRG9uJ3QgdXBkYXRlIHJlZ19saXZlIGhlcmUuCgkoaW5pdF9wcm9wYWdhdGVfYmxvY2tfaW5mbyk6IFVwZGF0ZSBmb3IgcGJpIG1lbWJlciBjaGFuZ2VzLgoJKGZyZWVfcHJvcGFnYXRlX2Jsb2NrX2luZm8pOiBMaWtld2lzZS4KCShtYXJrX3NldF8xKTogS25vdyB0aGF0IHplcm9fZXh0cmFjdCwgc2lnbl9leHRyYWN0LCBhbmQKCXN0cmljdF9sb3dfcGFydCBkb24ndCBraWxsIHRoZWlyIGFyZ3VtZW50LiAgQWx0ZXIgaGFyZCBzdWJyZWdzLgoJVXBkYXRlIG5ld19zZXQgZm9yIG5vbi1DTE9CQkVSIHNldHMuICBVcGRhdGUgcmVnX2xpdmUuCgkoZmluZF9hdXRvX2luYyk6IFVwZGF0ZSByZWdfbGl2ZSwgbm90IG5ld19kZWFkLgoJKG1hcmtfdXNlZF9yZWcpOiBVcGRhdGUgcmVnX2xpdmUsIG5vdCBuZXdfbGl2ZS4gIEV4YW1pbmUgbmV3X3NldAoJdG8gZGV0ZXJtaW5lIGlmIHRoZSByZWcgaW4gcXVlc3Rpb24gd2FzIHNldCB0aGlzIGluc24uICBPbmx5IHVwZGF0ZQoJcmVnIGluZm8gd2l0aCBQUk9QX1JFR19JTkZPLgoKMjAwMC0wNC0yNiAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAY3lnbnVzLmNvbT4KCgkqIGZsb3cuYyAoYWxsb2NhdGVfcmVnX2xpZmVfZGF0YSk6IFNldCBtYXhfcmVnbm8gaGVyZSAuLi4KCShsaWZlX2FuYWx5c2lzKTogLi4uIG5vdCBoZXJlLgoKCSogZmxvdy5jIChjYWxjdWxhdGVfZ2xvYmFsX3JlZ3NfbGl2ZSk6IEZvcmNlIHN0YWNrIHBvaW50ZXIKCWxpdmUgYXQgZW5kLgoKMjAwMC0wNC0yNiAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAY3lnbnVzLmNvbT4KCgkqIGp1bXAuYyAocmVkaXJlY3RfZXhwXzEpOiBSZXdvcmsgZnJvbSBvbGQgcmVkaXJlY3RfZXhwLiAgTmV2ZXIKCWNvbW1pdCBjaGFuZ2UgZ3JvdXAgY2hhbmdlcy4KCShpbnZlcnRfZXhwXzEpOiBTaW1pbGFybHkuCgkocmVkaXJlY3RfZXhwLCBpbnZlcnRfZXhwKTogVXNlIHRoZW0uCgkocmVkaXJlY3RfanVtcF8xKTogTmV3LgoJKGludmVydF9qdW1wXzEpOiBOZXcuCgkoanVtcF9vcHRpbWl6ZV8xKTogUmVtb3ZlIGNvZGUgc3Vic3VtZWQgYnkgY29uZGV4ZWMuYy4KCSogcnRsLmggKGludmVydF9qdW1wXzEsIHJlZGlyZWN0X2p1bXBfMSk6IERlY2xhcmUuCgoyMDAwLTA0LTI2ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEBjeWdudXMuY29tPgoKCSogcnRsYW5hbC5jIChkZWFkX29yX3NldF9yZWdub19wKTogVXNlIGZpbmRfcmVnbm9fbm90ZS4KCgkqIGdlbmNvbmZpZy5jIChtYWluKTogU2V0IGFsbCBIQVZFX2ZvbyB0byAxLgoKCSogZ3JhcGguYyAobm9kZV9kYXRhKTogVXNlIEdFVF9OT1RFX0lOU05fTkFNRSBpbnN0ZWFkIG9mIGxvY2FsIGFycmF5LgoKMjAwMC0wNC0yNiAgQWxleCBTYW11ZWwgIDxzYW11ZWxAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGludm9rZS50ZXhpOiBEb2N1bWVudCAtZnNzYSBmbGFnLgoKMjAwMC0wNC0yNiAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAY3lnbnVzLmNvbT4KCgkqIGZsb3cuYyAoY291bnRfcmVnX3NldHNfMSk6IFJlbW92ZS4KCShjb3VudF9yZWdfc2V0cywgY291bnRfcmVnX3JlZmVyZW5jZXMpOiBSZW1vdmUuCgkocmVjb21wdXRlX3JlZ191c2FnZSk6IEltcGxlbWVudCB3aXRoIHVwZGF0ZV9saWZlX2luZm8uCglSZWFsbG9jYXRlIGxpZmUgZGF0YS4KCjIwMDAtMDQtMjYgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgoJKiBmbG93LmMgKHVwZGF0ZV9saWZlX2luZm8pOiBDb25zaWRlciBibG9ja3MgbnVsbCB0byBtZWFuIHRoZQoJdW5pdmVyc2FsIHNldC4KCShjYWxjdWxhdGVfZ2xvYmFsX3JlZ3NfbGl2ZSk6IExpa2V3aXNlLgoJKGxpZmVfYW5hbHlzaXMpOiBEbyB0aGF0IGluc3RlYWQgb2YgY29sbGVjdGluZyBhbGxfYmxvY2tzLgoKMjAwMC0wNC0yNiAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAY3lnbnVzLmNvbT4KCgkqIGZsb3cuYyAodGlkeV9mYWxsdGhydV9lZGdlKTogRG9uJ3QgZGVsZXRlIHRoZSBqdW1wIHdoZW4gaXQncwoJYSBzdGlsbC12YWxpZCBjb25kaXRpb25hbCBqdW1wLgoKMjAwMC0wNC0yNiAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAY3lnbnVzLmNvbT4KCgkqIGp1bXAuYyAoaW52ZXJ0X2p1bXApOiBBbHdheXMgaW52ZXJ0IFJFR19CUl9QUk9CLiAgRG8gaXQgY29ycmVjdGx5LgoKCSogYmItcmVvcmRlci5jIChyZW9yZGVyX2Jhc2ljX2Jsb2Nrcyk6IERvbid0IHJ1biBlc3RpbWF0ZV9wcm9iYWJpbGl0eS4KCSogZmxvdy5jIChjYWxjdWxhdGVfbG9vcF9kZXB0aCk6IFJlbW92ZS4KCSogb3V0cHV0LmggKGNhbGN1bGF0ZV9sb29wX2RlcHRoKTogRG9uJ3QgZGVjbGFyZS4KCSogdG9wbGV2LmMgKHJlc3Rfb2ZfY29tcGlsYXRpb24pOiBFeHBhbmQgY2FsY3VsYXRlX2xvb3BfZGVwdGgKCWlubGluZTsgcnVuIGVzdGltYXRlX3Byb2JhYmlsaXR5IGF0IHRoZSBzYW1lIHRpbWUuCgoyMDAwLTA0LTI2ICBOZWlsIEJvb3RoICA8TmVpbEJAZWFydGhsaW5nLm5ldD4KCgkqIGNwcGxpYi5oOiAifj0iIGlzIG5vdCBhIHNpbmdsZSBwcC10b2tlbi4KCSogY3BwbGV4LmM6IENvcnJlY3QgY29tbWVudGFyeS4KCjIwMDAtMDQtMjYgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgoJKiBmbG93LmMgKG1hcmtfc2V0XzEpOiBOZXcgYXJndW1lbnRzIGNvZGUgYW5kIGZsYWdzOyB1cGRhdGUgYWxsCgljYWxsZXJzLiAgVHJhY2sgcmVnbm9fZmlyc3QgYW5kIHJlZ25vX2xhc3Q7IGRvIEhBUkRfUkVHTk9fTlJFR1MKCXRlc3QgaW4gb25lIHBsYWNlLiAgVGlkeSBmbGFncyB0ZXN0cy4gIERvbid0IGJpYXMgUkVHX05fUkVGUyBieQoJbG9vcF9kZXB0aCB3aGVuIG9wdGltaXppbmcgZm9yIHNpemUuICBEbyBuZXdfZGVhZCB1cGRhdGUgYWZ0ZXIKCWVtaXR0aW5nIFJFR19VTlVTRUQgbm90ZXMuICBNZXJnZSBtYXJrX3NldF9yZWcgY29kZS4KCShtYXJrX3NldF9yZWcpOiBSZW1vdmUuCgkocHJvcGFnYXRlX29uZV9pbnNuKTogVXNlIG1hcmtfc2V0XzEgZm9yIGNhbGwtY2xvYmJlcmVkIHJlZ2lzdGVyczsKCWFycmFuZ2UgdG8gbm90IGVtaXQgUkVHX1VOVVNFRCBub3Rlcy4KCjIwMDAtMDQtMjYgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgoJKiBmbG93LmMgKGZpbmRfYXV0b19pbmMpOiBVc2UgcGJpLT5iYiBpbnN0ZWFkIG9mIEJMT0NLX0ZPUl9JTlNOLgoJKiBzc2EuYyAoY29udmVydF9mcm9tX3NzYSk6IERvbid0IHJ1biBjb21wdXRlX2JiX2Zvcl9pbnNuLgoKMjAwMC0wNC0yNiAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAY3lnbnVzLmNvbT4KCgkqIGZsb3cuYyAocHJvcGFnYXRlX29uZV9pbnNuKTogQnJlYWsgb3V0IGZyb20gcHJvcGFnYXRlX2Jsb2NrLgoJKGluaXRfcHJvcGFnYXRlX2Jsb2NrX2luZm8pOiBMaWtld2lzZS4KCShmcmVlX3Byb3BhZ2F0ZV9ibG9ja19pbmZvKTogTGlrZXdpc2UuCgkocHJvcGFnYXRlX2Jsb2NrKTogVXNlIHRoZW0uICBFeHBvcnQuCgkqIGJhc2ljLWJsb2NrLmg6IERlY2xhcmUgdGhlbSBhbGwuCgoyMDAwLTA0LTI2ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEBjeWdudXMuY29tPgoKCSogYmFzaWMtYmxvY2suaCAobGlmZV9hbmFseXNpcyk6IERlY2xhcmUgaGVyZSAuLi4KCSogb3V0cHV0Lmg6IC4uLiBub3QgaGVyZS4KCSogZmxvdy5jIChsaWZlX2FuYWx5c2lzKTogUmVtb3ZlIG5yZWdzIHBhcmFtZXRlcjsgcmVwbGFjZQoJcmVtb3ZlX2RlYWRfY29kZSB3aXRoIGZsYWdzLiAgUmVtb3ZlIHNzYSBkZWFkIGNvZGUgY2hlY2suCglPbmx5IGluaXQgYWxpYXMgYW5hbHlzaXMgaWYgd2UnbGwgdXNlIGl0LgoJKiByZWctc3RhY2suYyAocmVnX3RvX3N0YWNrKTogVXBkYXRlIGxpZmVfYW5hbHlzaXMgYXJndW1lbnRzLgoJKiBzc2EuYyAoY29udmVydF90b19zc2EpOiBMaWtld2lzZS4KCShjb252ZXJ0X2Zyb21fc3NhKTogTGlrZXdpc2UuCgkqIHRvcGxldi5jIChyZXN0X29mX2NvbXBpbGF0aW9uKTogTGlrZXdpc2UuCgoyMDAwLTA0LTI2ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEBjeWdudXMuY29tPgoKCSogZmxvdy5jIChmbG93X2RlbGV0ZV9ibG9jayk6IFJlbmFtZSBmcm9tIGRlbGV0ZV9ibG9jay4gIEV4cG9ydC4KCSogYmFzaWMtYmxvY2suaCAoZmxvd19kZWxldGVfYmxvY2spOiBEZWNsYXJlLgoKMjAwMC0wNC0yNiAgRGF2aWQgUy4gTWlsbGVyICA8ZGF2ZW1AcmVkaGF0LmNvbT4KCgkqIG9wdGFicy5jIChlbWl0X2xpYmNhbGxfYmxvY2spOiBWZXJpZnkgaW5zbnMgd2l0aCBJTlNOX1AgYmVmb3JlCgl0YWtpbmcgYSBQQVRURVJOIG9mIGl0LgoKMjAwMC0wNC0yNiAgPE5laWxCQGVhcnRobGluZy5uZXQ+CgoJKiBjcHBsZXguYyAoc3BlbGxfb3RoZXIsIHNwZWxsX2NoYXIpOiBSZW1vdmUuCgkoU1BFTExfQ0hBUik6IE5ldy4KCSh0b2tlbl9zcGVsbGluZywgdHJpZ3JhcGhfbWFwKTogVXNlIHVuc2lnbmVkIGNoYXJzLgoJKF9jcHBfbGV4X2xpbmUpOiBUaWR5IHVwIHRoZSBzd2l0Y2ggc3RhdGVtZW50LgoJKiBjcHBsaWIuaDogSW1wbGVtZW50IHNwZWxsX2NoYXIgd2l0aCBzcGVsbF9zdHJpbmcuCgkoQyk6IE5ldy4KCjIwMDAtMDQtMjYgIDxSb2RuZXlCcm93bkBwbXNjLmNvbT4KCgkqIHBhL3BhMzItcmVncy5oIChIQVJEX1JFR05PX01PREVfT0spOiBXYXJuaW5nIHJlbW92YWwuCgkqIHBhL3BhNjQtcmVncy5oIChIQVJEX1JFR05PX01PREVfT0spOiBXYXJuaW5nIHJlbW92YWwuCgoyMDAwLTA0LTI2ICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBkd2FyZjJvdXQuYyAoZHdfY2ZpX29wcm5kX3N0cnVjdCwgZHdfZmRlX3N0cnVjdCwgYWRkX2ZkZV9jZmksCglyZWdfc2F2ZSwgZHdhcmYyb3V0X2ZyYW1lX2RlYnVnX2V4cHIsIGR3YXJmMm91dF9kZWZfY2ZhLAoJZHdhcmYyb3V0X3dpbmRvd19zYXZlLCBkd2FyZjJvdXRfYXJnc19zaXplLCBkd2FyZjJvdXRfcmVnX3NhdmUsCglkd2FyZjJvdXRfcmV0dXJuX3NhdmUsIGR3YXJmMm91dF9yZXR1cm5fcmVnLAoJZHdhcmYyb3V0X3N0YWNrX2FkanVzdCwgZHdhcmYyb3V0X2ZyYW1lX2RlYnVnLCBwcmltYXJ5X2ZpbGVuYW1lLAoJYWRkX0FUX2xibF9pZCwgYWRkX0FUX2xibF9vZmZzZXQsIHR5cGVfdGFnLCBkZWNsX3N0YXJ0X2xhYmVsLAoJZ2VuX2NvbXBpbGVfdW5pdF9kaWUsIGR3YXJmMm91dF9pbml0KTogQ29uc3RpZnkgYSBjaGFyKi4KCgkqIGR3YXJmMm91dC5oIChkd2FyZjJvdXRfaW5pdCk6IExpa2V3aXNlLgoKCSogZHdhcmZvdXQuYyAoZmlsZW5hbWVfZW50cnksIHByaW1hcnlfZmlsZW5hbWUsIGxhc3RfZmlsZW5hbWUsCgl0eXBlX3RhZywgb3V0cHV0X2NvbXBpbGVfdW5pdF9kaWUsIGR3YXJmb3V0X2luaXQpOiBMaWtld2lzZS4KCgkqIHRyZWUuaCAoZHdhcmYyb3V0X2RlZl9jZmEsIGR3YXJmMm91dF93aW5kb3dfc2F2ZSwKCWR3YXJmMm91dF9hcmdzX3NpemUsIGR3YXJmMm91dF9yZWdfc2F2ZSwgZHdhcmYyb3V0X3JldHVybl9zYXZlLAoJZHdhcmYyb3V0X3JldHVybl9yZWcpOiBMaWtld2lzZS4KCjIwMDAtMDQtMjYgIEFuZHJlYXMgSmFlZ2VyICA8YWpAc3VzZS5kZT4KCgkqIGV4dGVuZC50ZXhpIChGdW5jdGlvbiBBdHRyaWJ1dGVzKTogRml4IGRlc2NyaXB0aW9uIG9mIHB1cmUKCWF0dHJpYnV0ZS4KCjIwMDAtMDQtMjYgIEphc29uIE1lcnJpbGwgIDxqYXNvbkBjYXNleS5jeWdudXMuY29tPgoKCSogaW50ZWdyYXRlLmMgKG91dHB1dF9pbmxpbmVfZnVuY3Rpb24pOiBEbyBjbGVhciBERUNMX0RFRkVSX09VVFBVVAoJYmVmb3JlIGNhbGxpbmcgcmVzdF9vZl9jb21waWxhdGlvbi4KCjIwMDAtMDQtMjYgIEFuZHJlYXMgSmFlZ2VyICA8YWpAc3VzZS5kZT4KCgkqIGNvbmZpZy9taXBzL2xpbnV4Lmg6IFJlbW92ZSBlcnJvbmVvdXMgY29tbWl0IG9mICNpZiAwLyNlbmRpZiBpbgoJbGFzdCBwYXRjaC4KCjIwMDAtMDQtMjUgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgoJKiBjc2UuYyAoY3NlX2luc24pOiBFbWl0IGJhcnJpZXIgYWZ0ZXIgdW5jb25kaXRpb25hbCBqdW1wLgoKCSogY2FsbHMuYyAoZXhwYW5kX2NhbGwpOiBEaXNhYmxlIHRhaWwgY2FsbCBnZW5lcmF0aW9uIG9uY2UKCXJ0eF9lcXVhbF9mdW5jdGlvbl92YWx1ZV9tYXR0ZXJzIGlzIGZhbHNlLgoKCSogcmVnLXN0YWNrLmMgKGNvbnZlcnRfcmVnc18xKTogVHJlYXQgRURHRV9BQk5PUk1BTF9DQUxMIGVkZ2VzCglsaWtlIEVER0VfRUggZWRnZXMuCgoyMDAwLTA0LTI1ICBKYXNvbiBNZXJyaWxsICA8amFzb25AY2FzZXkuY3lnbnVzLmNvbT4KCgkqIGR3YXJmMm91dC5jIChhZGRfYm91bmRfaW5mbyk6IERvbid0IGNyYXNoIG9uIGFuIHVuZXhwYW5kZWQgU0FWRV9FWFBSLgoKCSogZHdhcmZvdXQuYyAob3V0cHV0X2RlY2wpOiBJZ25vcmUgTkFNRVNQQUNFX0RFQ0xzLgoKCSogZHdhcmYyb3V0LmMgKGdlbl9zdWJwcm9ncmFtX2RpZSk6IFRoZSBjbGFzcy1zY29wZSBkZWNsYXJhdGlvbiBESUUKCWlzIHRoZSBwcmltYXJ5IERJRSBmb3IgYSBtZW1iZXIgZnVuY3Rpb24uCgkoZ2VuX2RlY2xfZGllKTogQ2FsbCBzZXRfZGVjbF9vcmlnaW5fc2VsZiBoZXJlLgoJKiBkd2FyZm91dC5jIChvdXRwdXRfZGVjbCk6IEFuZCBoZXJlLgoJKiBpbnRlZ3JhdGUuYyAob3V0cHV0X2lubGluZV9mdW5jdGlvbik6IE5vdCBoZXJlLgoJRG9uJ3QgY2xlYXIgREVDTF9JTkxJTkUgdW50aWwgYWZ0ZXIgY2FsbGluZyByZXN0X29mX2NvbXBpbGF0aW9uLgoJKHNldF9kZWNsX29yaWdpbl9zZWxmKTogTm8gbG9uZ2VyIHN0YXRpYy4KCSogdHJlZS5oOiBBZGQgcHJvdG90eXBlLgoJKiB0b3BsZXYuYyAobm90ZV9kZWZlcnJhbF9vZl9kZWZpbmVkX2lubGluZV9mdW5jdGlvbik6IE9ubHkgd3JpdGUKCW91dCBhYnN0cmFjdCBpbnN0YW5jZSBmb3IgYWN0dWFsIGlubGluZXMuCgoyMDAwLTA0LTI1ICBBbGV4YW5kcmUgT2xpdmEgIDxhb2xpdmFAY3lnbnVzLmNvbT4KCgkqIGNvbmZpZy9tbjEwMzAwL21uMTAzMDAuaCAoUkVHX0NMQVNTX0ZST01fTEVUVEVSKTogUmV0dXJuCglFWFRFTkRFRF9SRUdTIG9ubHkgaWYgVEFSR0VUX0FNMzMuCgkqIGNvbmZpZy9tbjEwMzAwL21uMTAzMDAubWQgKG1vdnNpLCBhZGRzaSk6IEF2b2lkIGV4cG9zaW5nCglTUF9SRUdTIHRvIHJlZ2lzdGVyIGFsbG9jYXRpb24gYW5kIHJlbG9hZGluZyB1bmxlc3MgYWJzb2x1dGVseQoJbmVjZXNzYXJ5LgoJKG1vdnNpMyk6IFJlbW92ZSBzcGVjaWFsLWNhc2Ugb2YgYWRkaW5nIG5vbi1jb25zdGFudHMgdG8gU1AuCgoyMDAwLTA0LTI1ICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBhY2xvY2FsLm00IChnY2NfQUNfTkVFRF9ERUNMQVJBVElPTik6IFRoaXMgbWFjcm8gbm93IHJlcXVpcmVzCglJTkNMVURFUyB0byBzZWFyY2ggYW5kIGRvZXMgbm90IHByb3ZpZGUgYW55IG9mIGl0cyBvd24uICBBbHNvIGl0Cglub3cgYWNjZXB0cyBvcHRpb25hbCBBQ1RJT04tSUYtTkVFREVEIGFuZCBBQ1RJT04tSUYtTk9ULU5FRURFRAoJcGFyYW1ldGVycy4gIEFsc28gaXQgZG9lcyBub3QgY2FsbCBBQ19ERUZJTkUuCgkoZ2NjX0FDX05FRURfREVDTEFSQVRJT05TKTogTGlrZXdpc2UuICBBbHNvIHRoaXMgbWFjcm8gbm93IGNhbGxzCglBQ19ERUZJTkUgYW5kIHByb3ZpZGVzIGZvciBhdXRvbWF0aWMgZW50cmllcyBmb3IgYXV0b2hlYWRlci4KCShnY2NfQUNfRlVOQ19QUklOVEZfUFRSKTogQ2xlYW51cCBDIGNvZGUgaW4gdGVzdC4KCgkqIGNvbmZpZ3VyZS5pbiAoZ2NjX0FDX05FRURfREVDTEFSQVRJT05TKTogU2F2ZSBhbmQgcmVzdG9yZSBDRkxBR1MKCXNvIHdlIGNhbiBwYXNzIC1JIGZsYWdzIGFuZCBpbmNsdWRlIGdhbnNpZGVjbC5oL3N5c3RlbS5oIGluIHRoaXMKCXRlc3QuCgoJKiBhY2NvbmZpZy5oOiBEZWxldGUgYWxsIE5FRURfREVDTEFSQVRJT05fKiBlbnRyaWVzLgoKMjAwMC0wNC0yNSAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogYWNjb25maWcuaCAoRU5BQkxFX1NURF9OQU1FU1BBQ0UsIEVOQUJMRV9DSEVDS0lORywKCUVOQUJMRV9UUkVFX0NIRUNLSU5HLCBFTkFCTEVfUlRMX0NIRUNLSU5HLCBFTkFCTEVfR0NfQ0hFQ0tJTkcsCglFTkFCTEVfR0NfQUxXQVlTX0NPTExFQ1QpOiBEZWxldGUgZW50cmllcy4KCgkqIGNvbmZpZ3VyZS5pbiAoRU5BQkxFX1NURF9OQU1FU1BBQ0UsIEVOQUJMRV9DSEVDS0lORywKCUVOQUJMRV9UUkVFX0NIRUNLSU5HLCBFTkFCTEVfUlRMX0NIRUNLSU5HLCBFTkFCTEVfR0NfQ0hFQ0tJTkcsCglFTkFCTEVfR0NfQUxXQVlTX0NPTExFQ1QpOiBVc2UgdGhyZWUgYXJndW1lbnQgZm9ybSBvZiBBQ19ERUZJTkUKCWZvciB0aGVzZSBtYWNyb3MuICBDbGVhbiB1cCBzcGFjaW5nIGFuZCBsaW5ld3JhcHMuCgoyMDAwLTA0LTI2ICBKYXNvbiBNZXJyaWxsICA8amFzb25AY2FzZXkuY3lnbnVzLmNvbT4KCgkqIGNhbGxzLmMgKGV4cGFuZF9jYWxsKTogVXNlIGdldF9jYWxsZWVfZm5kZWNsLgoKCSogcHJpbnQtdHJlZS5jIChwcmludF9ub2RlKTogUHJpbnQgdGhlIGNoYWluIG9mIGFuIF9FWFBSLgoKVHVlIEFwciAyNSAxNjoxNjowNCAyMDAwICBBbmRyZXcgTWFjTGVvZCAgPGFtYWNsZW9kQGN5Z251cy5jb20+CgkJCSAgSmltIFdpbHNvbiAgPHdpbHNvbkBjeWdudXMuY29tPgoJCQkgIEFuZHJldyBIYWxleSAgPGFwaEBjeWdudXMuY29tPgoKCSogY29uZmlnL2lhNjQvY3J0YmVnaW4uYXNtOiBBZGQgSUEtNjQgdW53aW5kIHN1cHBvcnQuICBDb3JyZWN0IGFsbG9jCglhbmQgZ3Agc2F2ZS9yZXN0b3JlIHByb2JsZW1zLgoJKiBjb25maWcvaWE2NC9jcnRlbmQuYXNtOiBBZGQgSUEtNjQgdW53aW5kIHN1cHBvcnQuCgkqIGNvbmZpZy9pYTY0L2lhNjQuYyAoaWE2NF9jb21wdXRlX2ZyYW1lX3NpemUpOiBEb24ndCBpbmNsdWRlIHByX3NpemUKCWluIGZyX3BhZF9zaXplIGNhbGN1bGF0aW9uLgoJKHNhdmVfcmVzdG9yZV9pbnNucyk6IE1vdmUgUFIgc2F2ZSBhcmVhLiAgQ29ycmVjdCB1c2VzIG9mCglSVFhfRlJBTUVfUkVMQVRFRF9QLgoJKGlhNjRfZXhwYW5kX3Byb2xvZ3VlKTogTWFyayBhbGxvYyB3aXRoIFJUWF9GUkFNRV9SRUxBVEVEX1AuCgkoaWE2NF9leHBhbmRfZXBpbG9ndWUpOiBBZGQgZWhfZXBpbG9ndWUgc3VwcG9ydC4KCShpYTY0X2Z1bmN0aW9uX3Byb2xvZ3VlKTogRW1pdCAucHJvbG9ndWUgZGlyZWN0aXZlLgoJKGlhNjRfaW5pdF9tYWNoaW5lX3N0YXR1cywgaWE2NF9tYXJrX21hY2hpbmVfc3RhdHVzKTogTmV3IGZ1bmN0aW9ucy4KCShpYTY0X292ZXJyaWRlX29wdGlvbnMpOiBTZXQgaW5pdF9tYWNoaW5lX3N0YXR1cyBhbmQKCW1hcmtfbWFjaGluZV9zdGF0dXMuCgkocnR4X25lZWRzX2JhcnJpZXIpOiBIYW5kbGUgYnNwIHJlYWRzIGFuZCB3cml0ZXMuCgkoc3BpbGxfb2Zmc2V0LCBzcF9vZmZzZXQsIHNwaWxsX29mZnNldF9lbWl0dGVkLCB0bXBfcmVnLCB0bXBfc2F2ZWQpOgoJTmV3IHN0YXRpYyB2YXJpYWJsZXMuCgkocHJvY2Vzc19zZXQsIHByb2Nlc3NfZm9yX3Vud2luZF9kaXJlY3RpdmUpOiBOZXcgZnVuY3Rpb25zLgoJKiBjb25maWcvaWE2NC9pYTY0LmggKEFTTV9PVVRQVVRfWERBVEFfQ0hBUiwgQVNNX09VVFBVVF9YREFUQV9TSE9SVCwKCUFTTV9PVVRQVVRfWERBVEFfSU5ULCBBU01fT1VUUFVUX1hEQVRBX0RPVUJMRV9JTlQsIEFTTV9PVVRQVVRfRUhfQ0hBUiwKCUFTTV9PVVRQVVRfRUhfU0hPUlQsIEFTTV9PVVRQVVRfRUhfSU5ULCBBU01fT1VUUFVUX0VIX0RPVUJMRV9JTlQpOiBOZXcKCW1hY3Jvcy4KCShFSF9GUkFNRV9TRUNUSU9OX0FTTV9PUCk6IERlZmluZSB0byBJQV82NC51bndpbmQgc2VjdGlvbi4KCShJQTY0X1VOV0lORF9JTkZPLCBIQU5ETEVSX1NFQ1RJT04sIElBNjRfVU5XSU5EX0VNSVQpOiBEZWZpbmUuCgkoc3RydWN0IG1hY2hpbmVfZnVuY3Rpb24pOiBEZWZpbmUuCgkqIGNvbmZpZy9pYTY0L2lhNjQubWQgKGJzcF92YWx1ZSwgc2V0X2JzcCwgZWhfZXBpbG9ndWUpOiBOZXcgcGF0dGVybnMuCgoyMDAwLTA0LTI1ICBCcnVjZSBLb3JiICA8YmtvcmJAZ251Lm9yZz4KCgkqIGZpeGluYy9NYWtlZmlsZS5pbjogbWFrZSB0aGUgcmVtb3ZhbCBvZiBvbGQgcHJvZ3JhbXMgbW9yZQoJcm9idXN0CgkqIGZpeGluYy9ta2ZpeGluYy5zaDogdXNlIHRoZSB0d28gbmV3IHRhcmdldHMgaW4gdGhlIE1ha2VmaWxlOgoJaW5zdGFsbC1iaW4gYW5kIGluc3RhbGwtc2gKCjIwMDAtMDQtMjUgIE5pY2sgQ2xpZnRvbiAgPG5pY2tjQGN5Z251cy5jb20+CgoJKiBpbnRlZ3JhdGUuYyAoRlVOQ1RJT05fQVRUUklCVVRFX0lOTElOQUJMRV9QKTogSWYgbm90CglkZWZpbmVkLCBkZWZpbmUgdG8gcmV0dXJuIHplcm8uCgkoZnVuY3Rpb25fY2Fubm90X2lubGluZV9wKTogSWYgYSBmdW5jdGlvbiBoYXMgYW55IHRhcmdldAoJc3BlY2lmaWMgYXR0cmlidXRlcywgdGhlbiB1c2UgdGhlIG1hY3JvCglGVU5DVElPTl9BVFRSSUJVVEVfSU5MSU5BQkxFX1AgdG8gYWxsb3cgdGhlIHRhcmdldCB0byBkZWNpZGUKCXdoZXRoZXIgaXQgY2FuIGJlIGlubGluZWQuICBJZiBpdCBjYW5ub3QsIGlzc3VlIGEgc3VpdGFibGUKCWV4cGxhbmF0aW9uLgoKCSogdG0udGV4aTogQWRkIGEgbmV3IG5vZGUgJ0lubGluaW5nJyB0byBkb2N1bWVudCB0aGUgbmV3IG1hY3JvCglGVU5DVElPTl9BVFRSSUJVVEVfSU5MSU5BQkxFX1AuCgoyMDAwLTA0LTI1ICBaYWNrIFdlaW5iZXJnICA8emFja0B3b2xlcnkuY3VtYi5vcmc+CgoJKiBjcHBsaWIuaCAoc3RydWN0IGNwcF9idWZmZXIpOiBBZGQgJ21hcHBlZCcgZmxhZzsgZml4Cgljb21tZW50YXJ5LgoKMjAwMC0wNC0yNSAgTmVpbCBCb290aCAgPE5laWxCQGVhcnRobGluZy5uZXQ+CgoJUmVzdG9yZSBwcmV2aW91cyBwYXRjaCwgcGx1cyB0aGUgZm9sbG93aW5nIGZpeGVzOgoKCSogY3BwaGFzaC5jIChfY3BwX2NyZWF0ZV9kZWZpbml0aW9uKTogVGVzdCBQUkVWX1dISVRFU1BBQ0UgaW4KCWZsYWdzLCBub3QgQ1BQX09QRU5fUEFSRU4uCgkqIGNwcGxleC5jIChleHBhbmRfdG9rZW5fc3BhY2UsIGluaXRfdG9rZW5fbGlzdCwKCWNwcF9mcmVlX3Rva2VuX2xpc3QpOiBQdXQgdGhlIGR1bW15IHRva2VuIGF0IGxpc3QtPnRva2Vuc1stMV0uCgkoX2NwcF9sZXhfbGluZSwgX2NwcF9sZXhfZmlsZSk6IHRva2VuIGxpc3QgaXMgMC1iYXNlZC4KClR1ZSBBcHIgMjUgMTQ6MDY6NDAgMjAwMCAgQWxleGFuZHJlIE9saXZhICA8b2xpdmFAbHNkLmljLnVuaWNhbXAuYnI+CgoJKiBjb25maWcvaTM4Ni9mcmVlYnNkLmggKElOVF9BU01fT1ApOiBEZWZpbmUuCgpUdWUgQXByIDI1IDE0OjUxOjA3IE1FVCBEU1QgMjAwMCAgSmFuIEh1Ymlja2EgIDxqaEBzdXNlLmN6PgoKCSogbG9vcC5jIChzdHJlbmd0aF9yZWR1Y2UpOiBGaXggdHlwbyBpbiB0aGUgbGFzdCBjaGVja2luLgoKVHVlIEFwciAyNSAwNzozMzoxMiAyMDAwICBSaWNoYXJkIEtlbm5lciAgPGtlbm5lckB2bHNpMS51bHRyYS5ueXUuZWR1PgoKCSogc3Rvci1sYXlvdXQuYyAoZmluYWxpemVfcmVjb3JkX3NpemUpOiBTaW1wbGlmeSB0byB1c2UgZXhpc3RpbmcKCWZ1bmN0aW9ucy4KCShjb21wdXRlX3JlY29yZF9tb2RlKTogTm8gbG9uZ2VyIHN0YXRpYy4KCSogdHJlZS5oIChjb21wdXRlX3JlY29yZF9tb2RlKTogTmV3IGRlY2xhcmF0aW9uLgoKMjAwMC0wNC0yNSAgTmVpbCBCb290aCAgPE5laWxCQGVhcnRobGluZy5uZXQ+CgoJKiBSZXZlcnQgbXkgcGF0Y2ggYmVsb3cgdW50aWwgY2F1c2Ugb2YgYnVpbGQgZmFpbHVyZXMKCWRldGVybWluZWQuCgoyMDAwLTA0LTI1ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEBjeWdudXMuY29tPgoKCSogY29tYmluZS5jIChjb21iaW5lX2luc3RydWN0aW9ucyk6IEFkZCBtaXNzaW5nIGFyZ3VtZW50Cgl0byB0cnlfY29tYmluZS4KCgkqIHRvcGxldi5jIChyZXN0X29mX2NvbXBpbGF0aW9uKTogRGVsYXkgc2liY2FsbCBvcHRpbWl6YXRpb24KCXVudGlsIGFmdGVyIGVtaXRfZWhfY29udGV4dC4KCjIwMDAtMDQtMjQgIE5pY2sgQ2xpZnRvbiAgPG5pY2tjQHJlZGhhdC5jb20+CgoJKiBjb21iaW5lLmMgKGNvbWJpbmVfaW5zdHJ1Y3Rpb25zKTogRG8gbm90IHRyeSB0byBjb21iaW5lIGEKCXNlcXVlbmNlIG9mIGluc25zIHdoZW4gdGhlIHNlY29uZCBpbnNuIGhhcyBiZWVuIHJlcGxhY2VkIGJ5IGEKCW5vdGUuCgpNb24gQXByIDI0IDE3OjM0OjE4IDIwMDAgIE11bWl0IEtoYW4gIDxraGFuQHhyYXlsaXRoLndpc2MuZWR1PgoKCSogZ2NjLmMgKGxvYWRfc3BlY3MpOiBOZXcgc3RhdGljIGZ1bmN0aW9uLgoJKHJlYWRfc3BlY3MpOiBVc2UgaXQuCgoJKiBnY2MuYyAobG9va3VwX2NvbXBpbGVyKTogTWFrZSBtdWx0aXBsZSBwYXNzZXMgZm9yIGNhc2UKCWluc2Vuc2l0aXZlIGZpbGVzeXN0ZW1zLgoKMjAwMC0wNC0yNCAgTmVpbCBCb290aCAgPE5laWxCQGVhcnRobGluZy5uZXQ+CgoJKiBjcHBoYXNoLmM6IHJlcGxhY2UgSFNQQUNFX0JFRk9SRSB3aXRoIFBSRVZfV0hJVEVTUEFDRS4KCSogY3BwaGFzaC5oIChfY3BwX2NoZWNrX2RpcmVjdGl2ZSk6IG5ldy4KCSogY3BwbGV4LmMgKGhhbmRsZV9uZXdsaW5lLCBjcHBfZnJlZV90b2tlbl9saXN0LAoJaW5pdF90cmlncmFwaF9tYXAsIHRyaWdyYXBoX29rLCB0cmlncmFwaF9yZXBsYWNlLAoJYmFja3NsYXNoX3N0YXJ0LCBza2lwX2Jsb2NrX2NvbW1lbnQsIHNraXBfbGluZV9jb21tZW50LAoJc2tpcF93aGl0ZXNwYWNlLCBwYXJzZV9uYW1lLCBwYXJzZV9udW1iZXIsIHBhcnNlX3N0cmluZywKCWNvcHlfY29tbWVudCwgX2NwcF9sZXhfbGluZSwgc3BlbGxfY2hhciwgc3BlbGxfc3RyaW5nLAoJc3BlbGxfY29tbWVudCwgc3BlbGxfbmFtZSwgc3BlbGxfb3RoZXIsIF9jcHBfbGV4X2ZpbGUsCglfY3BwX291dHB1dF9saXN0KTogbmV3LgoJKGV4cGFuZF9uYW1lX3NwYWNlKTogdGFrZSBsZW5ndGggYXJndW1lbnQuCgkoaW5pdF90b2tlbl9saXN0KTogYWRkIGNvbW1lbnQgbGlzdCBpbml0aWFsaXNhdGlvbi4KCShjcHBfc2Nhbl9saW5lKTogdXNlIGF1dG9fZXhwYW5kX25hbWVfc3BhY2UuICBQUkVWX1dISVRFU1BBQ0UKCWluc3RlYWQgb2YgSFNQQUNFX0JFRk9SRS4KCgkqIGNwcGxpYi5jIChfY3BwX2NoZWNrX2RpcmVjdGl2ZSk6IG5ldwoJKiBjcHBsaWIuaCAoY3BwX25hbWUsIFBSRVZfV0hJVEVTUEFDRSwgUFJFVl9DT01NRU5ULAoJRElHUkFQSCwgVU5TSUdORURfSU5ULCBUT0tfTkFNRSk6IG5ldy4KCShIU1BBQ0VfQkVGT1JFKTogZGVsZXRlLgoJKFRUWVBFX1RBQkxFKTogcmVhcnJhbmdlLgoJKHN0cnVjdCBjcHBfdG9rbGlzdCk6IHVwZGF0ZS4KCjIwMDAtMDQtMjQgIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIGFjbG9jYWwubTQgKGdjY19BQ19IRUFERVJfU1RSSU5HLCBnY2NfQUNfRlVOQ19QUklOVEZfUFRSLAoJZ2NjX0FDX0NfVk9MQVRJTEUsIGdjY19BQ19GVU5DX01LRElSX1RBS0VTX09ORV9BUkcpOiBVc2UgdGhlIHRocmVlCglhcmd1bWVudCBmb3JtIG9mIEFDX0RFRklORS4KCgkqIGNvbmZpZ3VyZS5pbiAoREVGQVVMVF9MSU5LRVIsIERFRkFVTFRfQVNTRU1CTEVSLAoJSEFWRV9JTlRUWVBFU19ILCBQQUNLQUdFLCBWRVJTSU9OLCBFTkFCTEVfV0lOMzJfUkVHSVNUUlksCglXSU4zMl9SRUdJU1RSWV9LRVksIEhBVkVfR0FTX1NVQlNFQ1RJT05fT1JERVJJTkcsIEhBVkVfR0FTX1dFQUssCglIQVZFX0dBU19ISURERU4sIEhBVkVfQVNfUkVHSVNURVJfUFNFVURPX09QLCBBU19TUEFSQzY0X0ZMQUcsCglIQVZFX0FTX09GRlNFVEFCTEVfTE8xMCwgRU5BQkxFX05FV19HWFhfQUJJKTogTGlrZXdpc2UuCgoJKiBhY2NvbmZpZy5oOiBEZWxldGUgc3R1YnMgbWFkZSByZWR1bmRhbnQgYnkgMy1hcmcgQUNfREVGSU5FLgoKMjAwMC0wNC0yNCAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogTWFrZWZpbGUuaW4gKEdDQ19GT1JfVEFSR0VULCBHQ0NfQ0ZMQUdTLCBMSUJHQ0MyX0lOQ0xVREVTLAoJZGVkdWNlZC5oKTogVXNlIC1pc3lzdGVtLCBub3QgLUksIGZvciBpbmNsdWRpbmcgc3lzdGVtIGhlYWRlcnMuCgoyMDAwLTA0LTI0ICBOaWNrIENsaWZ0b24gIDxuaWNrY0BjeWdudXMuY29tPgoKCSogY29uZmlnL2ZyMzAvZnIzMC5tZCAoYWRkc2kzKTogRG8gbm90IHVzZSBzbWFsbCBhZGQgaW5zdHJ1Y3Rpb24gaWYKCXRoZSBzb3VyY2UgcmVnaXN0ZXIgaXMgdGhlIGZyYW1lIHBvaW50ZXIgb3IgYXJnIHBvaW50ZXIuCgkoYWRkc2kzX3NtYWxsX2ludCk6IERpc2FsbG93IGlmIHNvdXJjZSByZWdpc3RlciBpcyB0aGUgZnJhbWUKCXBvaW50ZXIgb3IgYXJnIHBvaW50ZXIuCgoyMDAwLTA0LTI0ICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBjb25maWd1cmUuaW4gKEVOVU1fQklURklFTERTX0FSRV9VTlNJR05FRCk6IERlbGV0ZSByZWR1bmRhbnQKCWNhbGwgdG8gQUNfTVNHX1JFU1VMVC4KCjIwMDAtMDQtMjQgIE1hcnRpbiB2LiBM9ndpcyAgPGxvZXdpc0BpbmZvcm1hdGlrLmh1LWJlcmxpbi5kZT4KCgkqIGludm9rZS50ZXhpOiBDb3JyZWN0IGdyYW1tYXRpY2FsIGVycm9ycywgZG9jdW1lbnQKCS1mbm8tZ251LWtleXdvcmRzIGFzIGlkZW50aWNhbCB0byAtZm5vLWFzbSBmb3IgQysrLgoKMjAwMC0wNC0yNCAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogYWNsb2NhbC5tNDogKEdDQ19IRUFERVJfU1RSSU5HLCBHQ0NfTkVFRF9ERUNMQVJBVElPTiwKCUdDQ19ORUVEX0RFQ0xBUkFUSU9OUywgR0NDX0ZVTkNfVkZQUklOVEZfRE9QUk5ULAoJR0NDX0ZVTkNfUFJJTlRGX1BUUiwgR0NDX1BST0dfTE5fUywgR0NDX1BST0dfTE4sIEdDQ19DX1ZPTEFUSUxFLAoJQUNfR0NDX0NfTE9OR19ET1VCTEUsIEdDQ19GVU5DX01LRElSX1RBS0VTX09ORV9BUkcsCglFR0NTX1BST0dfSU5TVEFMTCk6IFJlbmFtZSBhdXRvY29uZiBtYWNyb3Mgd2l0aCBwcmVmaXggZ2NjX0FDXy4KCgkqIGNvbmZpZ3VyZS5pbiAoQUNfR0NDX0NfTE9OR19ET1VCTEUsIEdDQ19QUk9HX0xOLCBHQ0NfUFJPR19MTl9TLAoJR0NDX0NfVk9MQVRJTEUsIEVHQ1NfUFJPR19JTlNUQUxMLCBHQ0NfSEVBREVSX1NUUklORywKCUdDQ19GVU5DX1ZGUFJJTlRGX0RPUFJOVCwgR0NDX0ZVTkNfUFJJTlRGX1BUUiwKCUdDQ19ORUVEX0RFQ0xBUkFUSU9OUywgR0NDX0ZVTkNfTUtESVJfVEFLRVNfT05FX0FSRyk6IEludm9rZSB3aXRoCgluZXcgbWFjcm9zIG5hbWVzLgoKMjAwMC0wNC0yNCAgTXVtaXQgS2hhbiAgPGtoYW5AeHJheWxpdGgud2lzYy5lZHU+CgoJKiBjLXByYWdtYS5jIChwdXNoX2FsaWdubWVudCk6IFVzZSBCSVRTX1BFUl9VTklUIG1hY3JvLgoJKHBvcF9hbGlnbm1lbnQpOiBMaWtld2lzZS4KCShoYW5kbGVfcHJhZ21hX3Rva2VuKTogTGlrZXdpc2UuCgoyMDAwLTA0LTI0ICBSb2JlcnQgTGlwZSA8cm9iZXJ0bGlwZUB1c2EubmV0PgoKCSogdHJlZS5oICh0cmVlX2RlY2wpOiBNZW1iZXIgYG1vZGUnIG5vdyBFTlVNX0JJVEZJRUxELgoKMjAwMC0wNC0yNCAgSGlyb3l1a2kgTWFjaGlkYSA8bWFjaGlkYUBzbS5zb255LmNvLmpwPgoKCSogY29tYmluZS5jICh0cnlfY29tYmluZSk6IFVwZGF0ZSByZWdfbm9uemVyb19iaXRzIG9mCgluZXdpMnBhdCBiZWZvcmUgbmV3cGF0LgoKTW9uIEFwciAyNCAxMDoxOTo0OCBNRVQgRFNUIDIwMDAgIEphbiBIdWJpY2thICA8amhAc3VzZS5jej4KCgkqIGxvb3AuYyAoc3RyZW5ndGhfcmVkdWNlKTogU2ltcGxpZnkgdGVzdCB0byBJTlNOX1AuCgkocmVjb3JkX2dpdik6IEF0dGVtcHQgdG8gc2ltcGxpZnkgdGhlIGFkZCB2YWx1ZSwgdXNlIENPTlNUQU5UX1AKCWV4cHJlc3Npb25zIGluc3RlYWQgb2YgQ09OU1RfSU5ULgoJKGV4cHJlc3NfZnJvbV8xKTogTGlrZXdpc2UuCgoyMDAwLTA0LTI0ICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogcmVncy5oIChyZWdfbl9tYXgpOiBEb24ndCBkZWNsYXJlLgoJKiBmbG93LmMgKHJlZ19uX21heCk6IERvbid0IGRlZmluZS4KCSogcmVnY2xhc3MuYyAocmVudW1iZXIpOiBEb24ndCBpbml0aWFsaXplIHRvIHplcm8uCgkocmVnbm9fYWxsb2NhdGVkKTogTGlrZXdpc2UuCgkocmVnX25fbWF4KTogRGVmaW5lLgoJKGFsbG9jYXRlX3JlZ19pbmZvKTogRG9uJ3QgaW5pdGlhbGl6ZSB1bm5lY2Vzc2FyaWx5LgoKTW9uIEFwciAyNCAwMDoyMTozNiAyMDAwICBKZWZmcmV5IEEgTGF3ICAobGF3QGN5Z251cy5jb20pCgoJKiBnZW5hdHRydGFiLmMgKGZpbmRfYXR0cik6IEluaXRpYWxpemUgdW5zaWduZWRfcCwgZnVuY191bml0c19wCglhbmQgYmxvY2thZ2VfcCBpbiB0aGUgbmV3bHkgYWxsb2NhdGVkIGF0dHJpYnV0ZS4KClN1biBBcHIgMjMgMjA6MTY6NDkgMjAwMCAgQWxleGFuZHJlIE9saXZhICA8YW9saXZhQGN5Z251cy5jb20+CgoJKiBjb25maWcvbW4xMDMwMC9tbjEwMzAwLm1kIChhZGRzaSk6IGBpbmM0JyBvbiBhZGRyZXNzCglyZWdpc3RlcnMgZG9lcyBub3QgbW9kaWZ5IGNjLCBidXQgYGluYycgb24gYW4gZXh0ZW5kZWQKCXJlZ2lzdGVyIGRvZXMuCgpTdW4gQXByIDIzIDE2OjI0OjM1IDIwMDAgIERlbmlzIENoZXJ0eWtvdiAgPGRlbmlzY0BvdmVydGEucnU+CgoJKiByZWxvYWQuYyAoZmluZF9lcXVpdl9yZWcpOiBDaGVja3MgYWxsIHZhbHVlbm8gcmVncwoJYXMgYSByZWxvYWRfcmVnX3AgcmVncy4KCjIwMDAtMDQtMjMgIFphY2sgV2VpbmJlcmcgIDx6YWNrQHdvbGVyeS5jdW1iLm9yZz4KCgkqIGNwcGhhc2guYyAoY29sbGVjdF9vYmpsaWtlX2V4cGFuc2lvbik6IEFkZCBzYW5pdHkgY2hlY2suCgkoc3BlY2lhbF9zeW1ib2wpOiBSZW1vdmUgY2FzZSBUX0NPTlNULCBUX1hDT05TVCwgVF9NQ09OU1QuICBJZgoJdGhlIGJ1ZmZlciBpcyB0aGUgZW1wdHkgc3RyaW5nLCByZXR1cm4uICBNYXJrIF9fREFURV9fIGFuZAoJX19USU1FX18gYXMgWENPTlNUIG5vZGVzLCBub3QgTUNPTlNULgoJKF9jcHBfbWFjcm9leHBhbmQpOiBBdm9pZCBwdXNoaW5nIGFuIGVtcHR5IGJ1ZmZlci4KCShmdW5saWtlX21hY3JvZXhwYW5kKTogRG9uJ3QgcG9wIHRva2VuX2J1ZmZlciBoZXJlLgoKU3VuIEFwciAyMyAxODozNzo1MyAyMDAwICBBbGV4YW5kcmUgT2xpdmEgIDxhb2xpdmFAY3lnbnVzLmNvbT4KCgkqIGNvbmZpZy9tbjEwMzAwL21uMTAzMDAuaCAoUkVHTk9fSU5fUkFOR0VfUCk6IE5ldyBtYWNyby4KCShSRUdOT19EQVRBX1AsIFJFR05PX0FERFJFU1NfUCwgUkVHTk9fU1BfUCk6IE5ldyBtYWNyb3MuCgkoUkVHTk9fRVhURU5ERURfUCwgUkVHTk9fQU0zM19QKTogTmV3IG1hY3Jvcy4KCShSRUdOT19PS19GT1JfQkFTRV9QKTogRGVmaW5lIGluIHRlcm1zIG9mIHRoZW0uCgkoUkVHTk9fT0tfRk9SX0JJVF9CQVNFX1AsIFJFR05PX09LX0ZPUl9JTkRFWF9QKTogTGlrZXdpc2UuCgkoUkVHX09LX0ZPUl9CQVNFX1ApOiBEZWZpbmUgaW4gdGVybXMgb2YgdGhlIFJFR05PIG1hY3JvLgoJKFJFR19PS19GT1JfQklUX0JBU0VfUCwgUkVHX09LX0ZPUl9JTkRFWF9QKTogTGlrZXdpc2UuCgpTdW4gQXByIDIzIDIyOjIzOjA4IE1FVCBEU1QgMjAwMCAgSmFuIEh1Ymlja2EgIDxqaEBzdXNlLmN6PgoKCSogbG9vcC5jIChzaW1wbGlmeV9naXZfZXhwcik6ICBCZSBtb3JlIGFncmVzc2l2ZSBvbiBzaW1wbGlmeWluZwoJY29uc3RhbnQgTVVMVCBnaXZzLgoKMjAwMC0wNC0yMyAgWmFjayBXZWluYmVyZyAgPHphY2tAd29sZXJ5LmN1bWIub3JnPgoKCSogY3BwaGFzaC5oIChzdHJ1Y3QgZGVmaW5pdGlvbik6IE1vdmUgZmlsZSwgbGluZSwgY29sIG1lbWJlcnMuLi4KCShzdHJ1Y3QgaGFzaG5vZGUpOiAuLi4gaGVyZS4gIEFsc28gYWRkICdkaXNhYmxlZCcgZmxhZy4KCShlbnVtIG5vZGVfdHlwZSk6IEFkZCBUX1ZPSUQsIFRfWENPTlNULCBUX0ZNQUNSTywgYW5kCglUX0lERU5USVRZLiAgUmVtb3ZlIFRfRElTQUJMRUQuCglVcGRhdGUgcHJvdG90eXBlcy4KCgkqIGNwcGhhc2guYyAoX2NwcF9kdW1wX2RlZmluaXRpb24pOiBTcGxpdCBvdXQgZHVtcF9ERUZJTklUSU9OLgoJKGNvbGxlY3RfZXhwYW5zaW9uKTogU3BsaXQgaW50byBjb2xsZWN0X29iamxpa2VfZXhwYW5zaW9uIGFuZAoJY29sbGVjdF9mdW5saWtlX2V4cGFuc2lvbi4KCShfY3BwX21hY3JvZXhwYW5kKTogU3BsaXQgb3V0IHNjYW5fYXJndW1lbnRzLCBzdHJpbmdpZnksIGFuZAoJZnVubGlrZV9tYWNyb2V4cGFuZC4KCShfY3BwX2NvbXBhcmVfZGVmcyk6IFJlbmFtZSBjb21wYXJlX2RlZnMsIG1ha2Ugc3RhdGljLgoJKF9jcHBfbWFrZV9oYXNobm9kZSk6IEluaXRpYWxpemUgaHAtPmRpc2FibGVkLgoJKG1hY3JvX2NsZWFudXApOiBBZGp1c3QgZm9yIG5ldyB0b2tlbiB0eXBlcy4gIENsZWFyCgltLT5kaXNhYmxlZC4KCShfY3BwX2NyZWF0ZV9kZWZpbml0aW9uKTogTW92ZSBjb2RlIGhlcmUgdG8gZGV0ZXJtaW5lIHdoYXQKCXNvcnQgb2YgbWFjcm8gaXQgaXMsIGFuZCBjb2RlIHRvIGNoZWNrIGZvciByZWRlZmluaXRpb25zLCBmcm9tCglkb19kZWZpbmUuICBJbXBsZW1lbnQgYSBmZXcgc2ltcGxlIGNhc2VzIHdpdGhvdXQgY3JlYXRpbmcgYQoJZnVsbCBERUZJTklUSU9OLgoJKF9jcHBfbWFjcm9leHBhbmQsIHNwZWNpYWxfc3ltYm9sLCBfY3BwX2R1bXBfZGVmaW5pdGlvbik6CglIYW5kbGUgdGhlIHNpbXBsZSBjYXNlcy4KCShwdXNoX21hY3JvX2V4cGFuc2lvbik6IFNldCBidWYtPmhhc19lc2NhcGVzIGFuZCBocC0+ZGlzYWJsZWQKCWhlcmUuCgoJKiBjcHBpbml0LmMgKGJ1aWx0aW5fYXJyYXkpOiBDaGFuZ2UgTUNPTlNUIHRvIFhDT05TVAoJZXZlcnl3aGVyZS4KCSogY3BwbGV4LmMgKG1heWJlX21hY3JvZXhwYW5kKTogSGFuZGxlIElERU5USVRZIG1hY3JvcyBoZXJlOwoJZml4IGNoZWNrIGZvciBkaXNhYmxlZCBhbmQgZnVuY3Rpb24tbGlrZSBtYWNyb3MuCgkqIGNwcGxpYi5jIChkb19kZWZpbmUpOiBNb3ZlIG1vc3QgbG9naWMgdG8KCV9jcHBfY3JlYXRlX2RlZmluaXRpb24uCgkoZG9fdW5kZWYpOiBIYW5kbGUgbmV3IHNwZWNpYWwgdG9rZW4gdHlwZXMuCgpTdW4gQXByIDIzIDE0OjI3OjQ0IE1FVCBEU1QgMjAwMCAgSmFuIEh1Ymlja2EgIDxqaEBzdXNlLmN6PgoKCSogbG9vcC5jIChtYXliZV9lbGltaW5hdGVfYml2XzEpOiBVc2UgR0VUX0NPREUgKHgpID09IENPTlNUX0lOVCBpbnN0ZWFkCglvZiBDT05TVEFOVF9QIGZvciBtdWx0X3ZhbDsgYWx3YXlzIHVzZSB2YWxpZGF0ZV9jaGFuZ2UgdG8gdXBkYXRlIGluc24uCgoyMDAwLTA0LTIyICBaYWNrIFdlaW5iZXJnICA8emFja0B3b2xlcnkuY3VtYi5vcmc+CgoJKiBjcHBoYXNoLmMgKHRyYWRfc3RyaW5naWZ5LCBhZGRfcGF0KTogTmV3IGZ1bmN0aW9ucy4KCShjb2xsZWN0X2V4cGFuc2lvbik6IFJlc3RvcmUgc3VwcG9ydCBmb3IgLXRyYWRpdGlvbmFsIHN5bnRheC4KCVVzZSB0cmFkX3N0cmluZ2lmeSBhbmQgYWRkX3BhdC4KCShfY3BwX21hY3JvZXhwYW5kKTogUmVzdG9yZSBzdXBwb3J0IGZvciAtdHJhZGl0aW9uYWwgc2VtYW50aWNzLgoJKiBjcHBsZXguYyAoX2NwcF9zY2FuX2xpbmUpOiBEb24ndCBjaGFuZ2Ugc3BhY2VfYmVmb3JlIGlmIHdlCglnZXQgYSBDT01NRU5UIHRva2VuLgoJKF9jcHBfbGV4X3Rva2VuKTogUHJvdmlkZSBDT01NRU5UIHRva2VucyB0byBjYWxsZXIgaWYKCXRyYWRpdGlvbmFsIGFuZCBwYXJzaW5nX2RlZmluZV9kaXJlY3RpdmUuCgkoc2tpcF9jb21tZW50KTogV2FybiBhYm91dCAvLyBjb21tZW50cyBpZiAtV3RyYWRpdGlvbmFsLgoJKiBjcHBsaWIuYyAoZG9fZGVmaW5lKTogRml4IHR5cG8uICBDcmVhdGUgRU1QVFkgbm9kZXMgd2l0aAoJcHJvcGVyIG5vZGUgdHlwZS4KCShkb191bmRlZik6IERvbid0IHdhcm4gYWJvdXQgdW5kZWZpbmluZyBFTVBUWSBub2Rlcy4KClNhdCBBcHIgMjIgMjI6MzU6MzggTUVUIERTVCAyMDAwICBKYW4gSHViaWNrYSAgPGpoQHN1c2UuY3o+CgoJKiBsb29wLmMgKHN0cmVuZ3RoX3JlZHVjZSk6IEZpeCBiaXYgcmVtb3ZhbCBjb2RlLgoKMjAwMC0wNC0yMiAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAY3lnbnVzLmNvbT4KCgkqIHByZWRpY3QuYyAoZXN0aW1hdGVfcHJvYmFiaWxpdHkpOiBFeGFtaW5lIGJvdGggc2lkZXMgb2YKCWEgYnJhbmNoIGZvciBubyBleGl0cy4gIFVzZSA5MCUgbm90IDUwJSBmb3IgcHJlZGljdCB0YWtlbi4KCVJlb3JnIGZvciBvbmUgY29weSBvZiBub3RlIGdlbmVyYXRpb24gY29kZS4KCjIwMDAtMDQtMjIgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgoJKiBmbG93LmMgKG1hcmtfdXNlZF9yZWcpOiBIYWNrIGFyb3VuZCByczYwMDAgZWxpbWluYWJsZSBwaWMgcmVnLgoKMjAwMC0wNC0yMiAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAY3lnbnVzLmNvbT4KCgkqIGRpYWdub3N0aWMuYyAoaW5pdF9vdXRwdXRfYnVmZmVyKTogRG9uJ3QgaW5pdGlhbGl6ZSBmb3JtYXRfYXJncy4KCShvdXRwdXRfY2xlYXIpOiBMaWtld2lzZS4KCShvdXRwdXRfcHJpbnRmKTogVXNlIHZhX2NvcHkuCgkodmxpbmVfd3JhcHBlcl9tZXNzYWdlX3dpdGhfbG9jYXRpb24pOiBMaWtld2lzZS4KCSh2X21lc3NhZ2Vfd2l0aF9kZWNsKTogTGlrZXdpc2UuCgkobGluZV93cmFwcGVyX3ByaW50Zik6IFZBX1NUQVJUIGluZm9yIGJ1ZmZlci5mb3JtYXRfYXJncyBkaXJlY3RseS4KCSogc3lzdGVtLmggKHZhX2NvcHkpOiBQcm92aWRlIGRlZmF1bHQgaW1wbGVtZW50YXRpb24uCgoyMDAwLTA0LTIyICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEBjeWdudXMuY29tPgoKCSogcHJlZGljdC5jIChleHBlY3RlZF92YWx1ZV90b19icl9wcm9iKTogRG9uJ3QgYm9tYiBpZiBvcDEgb2YKCXRoZSBjb2xsZWN0ZWQgY29uZGl0aW9uIGlzIG5vdCBhIGNvbnN0YW50LgoKMjAwMC0wNC0yMiAgR2FicmllbCBEb3MgUmVpcyAgPGdkckBjb2Rlc291cmNlcnkuY29tPgoKCSogZGlhZ25vc3RpYy5oOiBOZXcgZmlsZS4KCgkqIE1ha2VmaWxlLmluIChkaWFnbm9zdGljLm8pOiBEZXBlbmRzIG9uIGRpYWdub3N0aWMuaAoKCSogZGlhZ25vc3RpYy5jOiBUd2Vhay4gIFJhdGlvbmFsaXplIHRoZSBvdXRwdXQgbG9naWMuICBBZGp1c3QKCXZhcmlvdXMgZnVuY3Rpb24gcHJvdG90eXBlcy4KCShkaWFnbm9zdGljLmgpOiAjaW5jbHVkZS4KCShzdHJ1Y3Qgb3V0cHV0X2J1ZmZlcik6IE1vdmUgaW50byBkaWFnbm9zdGljLmguCgkoZ2V0X291dHB1dF9wcmVmaXgpOiBSZW5hbWUgdG8gb3V0cHV0X2dldF9wcmVmaXguICBFeHBvcnQuCgkoaW5pdF9vdXRwdXRfYnVmZmVyKTogRXhwb3J0LiBCcmVhayBvdXQuICBBZGp1c3QgaW5pdGlhbGl6YXRpb24uCgkob3V0cHV0X3NwYWNlX2xlZnQsIG91dHB1dF9hcHBlbmQpOiBFeHBvcnQuCgkob3V0cHV0X25ld2xpbmUpOiBSZW5hbWUgdG8gb3V0cHV0X2FkZF9uZXdsaW5lLiAgRXhwb3J0LgoJKG91dHB1dF9jbGVhcik6IE51bGxpZnkgYWRkaXRpb25hbCBvdXRwdXRfYnVmZmVyIGZpZWxkcy4KCShvdXRwdXRfcHV0cyk6IFJlbmFtZSB0byBvdXRwdXRfYWRkX3N0cmluZy4gIEV4cG9ydC4KCShkdW1wX291dHB1dCk6IFJlbmFtZSB0byBvdXRwdXRfZmx1c2hfb24uICBFeHBvcnQuCgkoYnVpbGRfbG9jYXRpb25fcHJlZml4KTogQ29uc3RpZnkgcmV0dXJuLXR5cGUuCgkoZW1pdF9vdXRwdXRfcHJlZml4KTogUmVuYW1lIHRvIG91dHB1dF9lbWl0X3ByZWZpeC4gRXhwb3J0LgoJKHNldF9yZWFsX21heGltdW1fbGVuZ3RoKTogTmV3IGZ1bmN0aW9uLgoJKG91dHB1dF9zZXRfbWF4aW11bV9sZW5ndGgpOiBEaXR0bwoJKG91dHB1dF9jbGVhcik6IERpdHRvLgoJKG91dHB1dF9hZGRfY2hhcmFjdGVyKTogRGl0dG8uCgkob3V0cHV0X2FkZF9pbnRlZ2VyKTogRGl0dG8uCgkob3V0cHV0X2FkZF9zcGFjZSk6IERpdHRvLgoJKG91dHB1dF9mb3JtYXQpOiBEaXR0by4KCShvdXRwdXRfcHJpbnRmKTogQWRqdXN0IGJ1ZmZlciBpbml0aWFsaXphdGlvbi4KCSh2bGluZV93cmFwcGVyX21lc3NhZ2Vfd2l0aF9sb2NhdGlvbik6IERpdHRvLgoJKHZfbWVzc2FnZV93aXRoX2RlY2wpOiBEaXR0by4gIEFkanVzdCBjYWxsIHRvIG91dHB1dF9wdXRzCglhbmQgZ2V0X291dHB1dF9wcmVmaXguCgkoZGVmYXVsdF9wcmludF9lcnJvcl9mdW5jdGlvbik6IEFkanVzdCBidWZmZXIgaW5pdGlhbGl6YXRpb24uCgpTYXQgQXByIDIyIDA2OjQ1OjA0IDIwMDAgIFJpY2hhcmQgS2VubmVyICA8a2VubmVyQHZsc2kxLnVsdHJhLm55dS5lZHU+CgoJKiBleHByLmMgKHByZWV4cGFuZF9jYWxscywgY2FzZSBDQUxMX0VYUFIpOiBEb24ndCBsb29rIGF0IFRZUEVfU0laRQoJb2YgVk9JRF9UWVBFLgoKRnJpIEFwciAyMSAxODozMzowOSAyMDAwICBBbGV4YW5kcmUgT2xpdmEgIDxhb2xpdmFAY3lnbnVzLmNvbT4KCgkqIGNvbmZpZy9tbjEwMzAwL21uMTAzMDAuaCAoUkVHTk9fUkVHX0NMQVNTKTogVXNlIE5PX1JFR1MgaW5zdGVhZAoJb2YgZXhwbGljaXQgMC4KCkZyaSBBcHIgMjEgMTg6MzA6MDAgMjAwMCAgQWxleGFuZHJlIE9saXZhICA8YW9saXZhQGN5Z251cy5jb20+CgoJKiBjb25maWcvbW4xMDMwMC9tbjEwMzAwLmggKFJFR0lTVEVSX01PVkVfQ09TVCk6IFByb3ZpZGUgbW9yZQoJYWNjdXJhdGUgZGF0YSBhYm91dCBTUCBtb3Zlcy4KCkZyaSBBcHIgMjEgMTg6Mjg6MjggMjAwMCAgQWxleGFuZHJlIE9saXZhICA8YW9saXZhQGN5Z251cy5jb20+CgoJKiBjb25maWcvbW4xMDMwMC9tbjEwMzAwLmggKEFERElUSU9OQUxfUkVHSVNURVJfTkFNRVMpOiBBZGRlZAoJYWxpYXNlcyB0byBBTTMzIHJlZ2lzdGVycy4KCkZyaSBBcHIgMjEgMTg6MjY6MTcgMjAwMCAgQWxleGFuZHJlIE9saXZhICA8YW9saXZhQGN5Z251cy5jb20+CgoJKiBjb25maWcvbW4xMDMwMC9tbjEwMzAwLmggKFJFR19DTEFTU19DT05URU5UUyk6IEFkZGVkIHJlZ2lzdGVyIDE2Cgl0byBhbGwgRVhURU5ERUQgYml0bWFwcy4KCkZyaSBBcHIgMjEgMTg6MTc6MTIgMjAwMCAgQWxleGFuZHJlIE9saXZhICA8YW9saXZhQGN5Z251cy5jb20+CgoJKiBjb25maWcvbW4xMDMwMC9tbjEwMzAwLXByb3Rvcy5oIChtbjEwMzAwX2FkZHJlc3NfY29zdCk6IERlY2xhcmUuCgkqIGNvbmZpZy9tbjEwMzAwL21uMTAzMDAuaCAoQUREUkVTU19DT1NUKTogTmV3IG1hY3JvLgoJKiBjb25maWcvbW4xMDMwMC9tbjEwMzAwLmMgKG1uMTAzMDBfYWRkcmVzc19jb3N0KTogTmV3IGZ1bmN0aW9uLgoKRnJpIEFwciAyMSAxODoxMTo1NiAyMDAwICBBbGV4YW5kcmUgT2xpdmEgIDxhb2xpdmFAY3lnbnVzLmNvbT4KCgkqIGNvbmZpZy9tbjEwMzAwL21uMTAzMDAubWQgKG1vdmRpLCBtb3ZkZik6IERvIG5vdCB1c2UgYG1vdnUnIHdoZW4KCXRoZSBvcGVyYW5kIGlzIG5vdCBjb25zdGFudC4KCkZyaSBBcHIgMjEgMTQ6NTg6MjkgMjAwMCAgRGVuaXMgQ2hlcnR5a292ICA8ZGVuaXNjQG92ZXJ0YS5ydT4KCgkqIHJlbG9hZC5jIChmaW5kX2VxdWl2X3JlZyk6IENoZWNrcyBhbGwgdmFsdWVubyBhbmQgcmVnbm8gcmVncwoJYXMgYSBjYWxsLWNsb2JiZXJlZCByZWdzLgoKRnJpIEFwciAyMSAxMzozMDoyNiAyMDAwICBSaWNoYXJkIEtlbm5lciAgPGtlbm5lckB2bHNpMS51bHRyYS5ueXUuZWR1PgoKCSogcnRsLmM6IFVzZSBOT1RFX0lOU05fUkVQRUFURURfTElORV9OVU1CRVIgYW5kIE5PVEVfSU5TTl9SQU5HRV9CRUcuCgkqIHJ0bC5oOiBMaWtld2lzZS4KCSogcnRsLmRlZjogVXBkYXRlIGNvbW1lbnQuCgkqIGZ1bmN0aW9uLmMgKGV4cGFuZF9mdW5jdGlvbik6IFVzZSBOT1RFX0lOU05fUkVQRUFURURfTElORV9OVU1CRVIuCgkqIGludGVncmF0ZS5jIChleHBhbmRfaW5saW5lX2Z1bmN0aW9uKTogTGlrZXdpc2UuCgkqIHByb2ZpbGUuYyAoYnJhbmNoX3Byb2IpOiBMaWtld2lzZS4KCSogZ2djLWNvbW1vbi5jIChnZ2NfbWFya19ydHhfY2hpbGRyZW4pOiBVc2UgTk9URV9JTlNOX1JBTkdFX0JFRy4KCSogcHJpbnQtcnRsLmMgKHByaW50X3J0eCk6IExpa2V3aXNlLgoJKiBoYWlmYS1zY2hlZC5jIChzY2hlZF9hbmFseXplLCB1bmxpbmtfb3RoZXJfbm90ZXMpOiBMaWtld2lzZS4KCShyZWVtaXRfbm90ZXMpOiBMaWtld2lzZTsgYWxzbyB1c2UgZW51bSBpbnNuX25vdGUuCgoJKiBzdG9yLWxheW91dC5jIChsYXlvdXRfZGVjbCk6IE9ubHkgc2V0IERFQ0xfTU9ERSBpZiBub3QgYWxyZWFkeSBzZXQuCgkocGxhY2VfZmllbGQpOiBQcm9wZXJseSBjb21wdXRlIGtub3cgYW5kIGFjdHVhbCBhbGlnbm1lbnQuCgoJKiBnZW5nZW5ydGwuYyAoZ2VuY29kZSk6IFdyaXRlIG9ic3RhY2tfYWxsb2NfcnR4IGZ1bmN0aW9uIHN0YXJ0CglpbiBwcm9wZXIgZm9ybWF0LgoKCSogY3NlLmMgKGNzZV9pbnNuKTogSW4gKHNldCBSRUcwIFJFRzEpIGNhc2UsIHJlbW92ZSBhIFJFR19FUVVBTAoJbm90ZSBmb3IgUkVHMS4KCjIwMDAtMDQtMjEgIFphY2sgV2VpbmJlcmcgIDx6YWNrQHdvbGVyeS5jdW1iLm9yZz4KCgkqIGNwcGhhc2guYyAoc3RydWN0IGFyZywgc3RydWN0IGFyZ2xpc3QpOiBDb25zdC1pZnkgc3RyaW5ncy4KCSh3YXJuX3RyYWRfc3RyaW5naWZ5LCBkdXBsaWNhdGVfYXJnX3ApOiBOZXcgaGVscGVyIGZ1bmN0aW9ucy4KCShjb2xsZWN0X2V4cGFuc2lvbik6IFJld3JpdGUgdG8gc2NhbiBvdmVyIGEgdG9rZW4gbGlzdC4KCVJlbW92ZSAtdHJhZGl0aW9uYWwgc3VwcG9ydC4KCShjb2xsZWN0X2Zvcm1hbF9wYXJhbWV0ZXJzKTogUmVuYW1lIHRvIGNvbGxlY3RfcGFyYW1zOyByZXdyaXRlCgl0byBzY2FuIG92ZXIgYSB0b2tlbiBsaXN0LgoJKF9jcHBfY3JlYXRlX2RlZmluaXRpb24pOiBBZGp1c3QgdG8gc2NhbiBhIHRva2VuIGxpc3QuCgkoX2NwcF9tYWNyb2V4cGFuZCk6IFJlbW92ZSAtdHJhZGl0aW9uYWwgc3VwcG9ydC4KCShfY3BwX2NvbXBhcmVfZGVmcyk6IFdoaXRlc3BhY2UgaXMgbm93IGNhbm9uaWNhbGl6ZWQuCgkoY29tcF9kZWZfcGFydCk6IERlbGV0ZSBmdW5jdGlvbi4KCgkqIGNwcGhhc2guaDogVXBkYXRlIHByb3RvdHlwZXMuCgkqIGNwcGxleC5jIChpbml0X3Rva2VuX2xpc3QpOiBEb24ndCBzZXQgbGluZW5vIGlmIHRoZXJlIGlzIG5vCglidWZmZXIuCgkocGVkYW50aWNfd2hpdGVzcGFjZSk6IE5ldyBmdW5jdGlvbi4KCShfY3BwX3NjYW5fbGluZSk6IE1hcmsgdG9rZW5zIHRoYXQgaGFkIGhzcGFjZSBiZWZvcmUuICBEb24ndAoJY29uc3VtZSBhIG5ld2xpbmUuICBVc2UgcGVkYW50aWNfd2hpdGVzcGFjZS4KCShfY3BwX2xleF90b2tlbik6IFJlbW92ZSBzdXBwb3J0IGZvciAtdHJhZGl0aW9uYWwgbWFjcm9zLgoJKF9jcHBfZ2V0X2RlZmluZV90b2tlbik6IERlbGV0ZS4KCShfY3BwX2dldF9kaXJlY3RpdmVfdG9rZW4pOiBEbyB0aGUgcmVhbCB3b3JrIGhlcmUuICBVc2UKCXBlZGFudGljX3doaXRlc3BhY2UuCgkoX2NwcF9pbml0X2lucHV0X2J1ZmZlcik6IEluaXRpYWxpemUgcGZpbGUtPmRpcmVjdGJ1Zi4KCgkqIGNwcGxpYi5jIChnZXRfbWFjcm9fbmFtZSk6IERlbGV0ZS4KCShkb19kZWZpbmUpOiBSZWFkIHRoZSBlbnRpcmUgbGluZSBpbnRvIHBmaWxlLT5kaXJlY3RidWYsIHRoZW4KCWZlZWQgdGhlIHRva2VuIGxpc3QgdG8gX2NwcF9jcmVhdGVfZGVmaW5pdGlvbi4KCSogY3BwbGliLmggKEhTUEFDRV9CRUZPUkUpOiBuZXcgZGVmaW5lLgoJKHN0cnVjdCBjcHBfcmVhZGVyKTogQWRkIGEgdG9rbGlzdCBtZW1iZXIsICJkaXJlY3RidWYiLgoKCSogcHJlZGljdC5jIChlc3RpbWF0ZV9wcm9iYWJpbGl0eSk6IE5ldyBoZXVyaXN0aWM6IGlmIGEganVtcAoJYnJhbmNoZXMgYXJvdW5kIGEgYmxvY2sgd2l0aCBubyBzdWNjZXNzb3JzLCBwcmVkaWN0IGl0IHRha2VuLgoJRGlzZW50YW5nbGUgY29udHJvbCBmbG93LgoKMjAwMC0wNC0yMCAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAY3lnbnVzLmNvbT4KCgkqIGxvb3AuYyAoZW1pdF9pdl9hZGRfbXVsdCk6IFJldmVydCBsYXN0IGNoYW5nZS4KCjIwMDAtMDQtMjAgIFphY2sgV2VpbmJlcmcgIDx6YWNrQHdvbGVyeS5jdW1iLm9yZz4KCgkqIGNwcGxpYi5oIChlbnVtIGNwcF90dHlwZSk6IEFkZCB0b2tlbiB0eXBlcyBmb3IgYWxsCglwdW5jdHVhdG9ycy4gIERpc3Rpbmd1aXNoIHBwLW51bWJlcnMgZnJvbSB2YWxpZCBDIG51bWJlcnMuCglHaXZlIHNvbWUgdG9rZW5zIGJldHRlciBuYW1lcy4gIEluaXRpYWxpemUgZnJvbSBtYWNyby4KCShzdHJ1Y3QgY3BwX25hbWUsIGNwcF90b2tlbiwgY3BwX3Rva2xpc3QpOiBOZXcgZGF0YQoJc3RydWN0dXJlcy4KCVVwZGF0ZSBwcm90b3R5cGVzLgoJKiBjcHBsZXguYyAoYnVtcF9jb2x1bW4sIGV4cGFuZF9uYW1lX3NwYWNlLAoJZXhwYW5kX3Rva2VuX3NwYWNlLCBpbml0X3Rva2VuX2xpc3QsIGNwcF9vdXRwdXRfbGlzdCwKCV9jcHBfc2Nhbl9saW5lKTogIE5ldyBmdW5jdGlvbnMuCgkob3V0cHV0X2xpbmVfY29tbWFuZCk6IEFkZCB0aGlyZCBhcmd1bWVudCwgbmV3IGxpbmUgbnVtYmVyLgoJKiBjcHBoYXNoLmg6IFVwZGF0ZSBwcm90b3R5cGVzLgoJKiBjcHBleHAuYywgY3BwaGFzaC5jLCBjcHBsaWIuYywgc2Nhbi1kZWNscy5jOiBVcGRhdGUgZm9yIG5ldwoJdG9rZW4gbmFtZXMuCgoyMDAwLTA0LTIwICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEBjeWdudXMuY29tPgoKCSogY29uZmlnL2FscGhhL2FscGhhLmMgKGFscGhhX2VtaXRfZmxvYXR1bnMpOiBFbWl0IG1pc3NpbmcgYmFycmllci4KCjIwMDAtMDQtMjAgIFphY2sgV2VpbmJlcmcgIDx6YWNrQHdvbGVyeS5jdW1iLm9yZz4KCgkqIGMtY29tbW9uLmMgKGRlY2xfYXR0cmlidXRlcykgW0FfQUxJQVNdOiBTZXQgVFJFRV9VU0VEIG9uIHRoZQoJb2JqZWN0IHBvaW50ZWQgdG8uCgpUaHUgQXByIDIwIDE0OjE5OjE4IE1FVCBEU1QgMjAwMCAgSmFuIEh1Ymlja2EgIDxqaEBzdXNlLmN6PgoKCSogbG9vcC5jIChlbWl0X2l2X2FkZF9tdWx0KTogIFNpbXBsaWZ5IGl0J3MgaW5wdXQgYW5kIGVtaXQKCVJFR19FUVVBTCBub3RlIGV4cGxhaW5pbmcgdGhlIGNhbGN1bGF0ZWQgdmFsdWUuCgoJKiBjYWxscy5jIChleHBhbmRfY2FsbCk6IEF2b2lkIHVubmVjZXNhcnkgcHJlY2FsY3VsYXRpb24KCWFuZCBvdXRnb2luZyBwYXJhbWV0ZXJzIHNwYWNlIGd1YXJkaW5nIGZvciBzaWJsaW5nIGNhbGxzLgoJKHN0b3JlX29uZV9hcmcpOiBMaWtld2lzZS4KClRodSBBcHIgMjAgMDg6MDE6MDcgMjAwMCAgUmljaGFyZCBLZW5uZXIgIDxrZW5uZXJAdmxzaTEudWx0cmEubnl1LmVkdT4KCgkqIHRvcGxldi5jIChlbnVtIGR1bXBfZmlsZV9pbmRleCwgZHVtcF9maWxlKTogQWRkIERGSV9zaWJsaW5nLgoJKHJlc3Rfb2ZfY29tcGlsYXRpb24pOiBXcml0ZSBzaWJsaW5nIGR1bXAgZmlsZSBhbmQgYWNjb3VudAoJZm9yIHRpbWUgYXMganVtcCB0aW1lLgoJKiBpbnZva2UudGV4aTogVXBkYXRlIGRvY3VtZW50YXRpb24gb24gZHVtcCBmbGFncy4KCjIwMDAtMDQtMTkgIE1hcmVrIE1pY2hhbGtpZXdpY3ogIDxtYXJla21AbGludXgub3JnLnBsPgoKCSogYXZyLmM6ICNpbmNsdWRlICJzeXN0ZW0uaCIgaW5zdGVhZCBvZiA8c3RkaW8uaD4gYW5kIDxzdGRsaWIuaD4uCgoyMDAwLTA0LTE5ICBaYWNrIFdlaW5iZXJnICA8emFja0B3b2xlcnkuY3VtYi5vcmc+CgoJKiBjcHBoYXNoLmMgKHNwZWNpYWxfc3ltYm9sKTogUmVwcmVzZW50IGFuIGVtcHR5IG1hY3JvIHdpdGgKCSJcciBcciAiIG5vdCBqdXN0ICJcciAiLgoJKF9jcHBfbWFjcm9leHBhbmQpOiBDb3JyZWN0IGNvbmRpdGlvbiBmb3IgdGhlIGZvbyAoICkgc3BlY2lhbAoJY2FzZS4KCSh1bnNhZmVfY2hhcnMpOiBIYW5kbGUgRU9GIGFzIHNlY29uZCBhcmd1bWVudC4KCShwdXNoX21hY3JvX2V4cGFuc2lvbik6IFNpbXBsaWZ5IHRlc3QgZm9yIHJlbW92aW5nIGVzY2FwZSBhdAoJZW5kLiAgRG8gbm90IHRyaW0gYm90aCBlc2NhcGVzIGlmIHRoZXJlIGlzIG5vIHRleHQgaW4gYmV0d2Vlbi4KCjIwMDAtMDQtMTkgIEppbSBCbGFuZHkgIDxqaW1iQHJlZGhhdC5jb20+CgoJKiBkd2FyZjJvdXQuYyAoRFdBUkYyX0FERFJfU0laRSk6IE5ldyBtYWNyby4gIFVzZSBpdCBpbnN0ZWFkCglvZiBQVFJfU0laRSwgd2hlbiBhcHByb3ByaWF0ZS4KCjIwMDAtMDQtMTkgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBzeXN0ZW0uaCAoT05MWV9JTlRfRklFTERTKTogTWFrZSBzdXJlIGl0IGlzIGRlZmluZWQuCgkoVVNFX0VOVU1fQklURklFTERTKTogRml4IHR5cG8uCgpXZWQgQXByIDE5IDEyOjE0OjU1IDIwMDAgIFJpY2hhcmQgS2VubmVyICA8a2VubmVyQHZsc2kxLnVsdHJhLm55dS5lZHU+CgoJKiBzdG9yLWxheW91dC5jIChwbGFjZV9maWVsZCk6IFNldCBybGktPm9mZnNldF9hbGlnbiBwcm9wZXJseS4KCjIwMDAtMDQtMTkgIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIG1pcHMuaCAoQklUU19QRVJfV09SRCwgVU5JVFNfUEVSX1dPUkQsIFVOSVRTX1BFUl9GUFJFRywKCUlOVF9UWVBFX1NJWkUsIExPTkdfVFlQRV9TSVpFLCBQT0lOVEVSX1NJWkUsIFBPSU5URVJfQk9VTkRBUlksCglQQVJNX0JPVU5EQVJZKTogUmVtb3ZlIHVubmVjZXNzYXJ5IGNhc3RzLgoKV2VkIEFwciAxOSAxMjowMjozNyBNRVQgRFNUIDIwMDAgIEphbiBIdWJpY2thICA8amhAc3VzZS5jej4KCgkqIGNhbGxzLmMgKHByZWNvbXB1dGVfYXJndW1lbnRzKTogUmVtb3ZlIG11c3RfcHJlYWxsb2NhdGUgYW5kCglhcmdzX3NpemUgY2FsbHMuCgkoZXhwYW5kX2NhbGwpOiBVcGRhdGUgY2FsbCBvZiBwcmVjb21wdXRlX2FyZ3VtZW50cy4KCgkqIGxvb3AuYyAoY2hlY2tfaW5zbl9mb3JfYml2cywgZm9yX2V2ZXJ5X2luc25faW5fbG9vcCwKCWNoZWNrX2luc25fZm9yX2dpdnMpOiBCcmVhayBvdXQgZnJvbSAuLi4KCShzdHJlbmd0aF9yZWR1Y2UpIC4uLiBoZXJlOyB1c2UgZm9yX2V2ZXJ5X2luc25faW5fbG9vcCB0byBjYWxsCgljaGVja19pbnNuX2Zvcl9naXZzLgoJKiBsb29wLmggKGZvcl9ldmVyeV9pbnNuX2luX2xvb3ApOiBEZWNsYXJlLgoJKGxvb3BfaW5zbl9jYWxsYmFjayk6IE5ldyB0eXBlLgoKMjAwMC0wNC0xOCAgWmFjayBXZWluYmVyZyAgPHphY2tAd29sZXJ5LmN1bWIub3JnPgoKCSogY3BwbGliLmMgKGRvX3ByYWdtYV9wb2lzb24pOiAgU3RyaW5ncyBpbiB0aGUgdG9rZW4gYnVmZmVyIGFyZQoJbm90IG51bC10ZXJtaW5hdGVkLgoKVHVlIEFwciAxOCAxNjowNDoxMiAyMDAwICBKaW0gV2lsc29uICA8d2lsc29uQGN5Z251cy5jb20+CgoJKiBjb25maWcvaWE2NC9zeXN2NC5oIChTRUxFQ1RfU0VDVElPTik6IFVzZSBkYXRhX3NlY3Rpb24gaWYKCWZsYWdfcGljIGFuZCBSRUxPQy4KCjIwMDAtMDQtMTggIFphY2sgV2VpbmJlcmcgIDx6YWNrQHdvbGVyeS5jdW1iLm9yZz4KCgkqIGNjY3AuYywgY2V4cC55LCBjZXhwLmMsIGNjY3AuMTogUmVtb3ZlZC4KCgkqIGNvbmZpZ3VyZS5pbjogRGVsZXRlIC0tZGlzYWJsZS1jcHBsaWIgb3B0aW9uIGFuZCBhbGwKCXJlZmVyZW5jZXMgdG8gY3BwX21haW4uCgkqIGNvbmZpZ3VyZTogUmVnZW5lcmF0ZS4KCSogTWFrZWZpbGUuaW46IFJlbW92ZSBhbGwgcmVmZXJlbmNlcyB0byBDQ0NQLCBDQ0NQX09CSlMsCglAY3BwX21haW5ALCBjY2NwLmMsIGNleHAuYywgY2V4cC55LCBjZXhwLm91dHB1dCwgY2V4cC5vLAoJY2NjcC5vLCBjY2NwLCBvciBjcHBtYWluLiAgTGluayBjcHBtYWluLm8gc3RyYWlnaHQgdG8KCWNwcCQoZXhlZXh0KS4gIEFkZCAtLW5vLWhlYWRlcnMgdG8gbWFrZWluZm8gY29tbWFuZCBsaW5lIHdoZW4KCWdlbmVyYXRpbmcgSU5TVEFMTC4gIEluc3RhbGwgYW5kIHVuaW5zdGFsbCBjcHAuMSBtYW5wYWdlLCBub3QKCWNjY3AuMS4KCSogaW5zdGFsbC50ZXhpOiBEZWxldGUgYWxsIHJlZmVyZW5jZXMgdG8gY2V4cC55L2NleHAuYy4KCURlbGV0ZSBhbmNpZW50IGluc3RydWN0aW9ucyBmb3IgY29tcGlsaW5nIEdDQyBvbiAzYjEuCgkqIElOU1RBTEw6IFJlZ2VuZXJhdGUuCgoJKiBjcHBmaWxlcy5jLCBjcHBsaWIuaCwganVtcC5jLCBwcm90b2l6ZS5jLCBjLWxleC5jLCBtaXBzL3QtZWNvZmYsCgltaXBzL3QtZWxmLCBtaXBzL3QtcjM5MDA6IFJlbW92ZSByZWZlcmVuY2VzIHRvIGNjY3AuYy4KCSogY29udmV4LmgsIGZ4ODAuaCwgbTY4ay5oLCBwZHAxMS5oOiBSZW1vdmUgcmVmZXJlbmNlcyB0bwoJY2V4cC5jL2NleHAueS4KCSogeG0tbGludXguaCwgeG0tb3MyLmgsIHJvbXAuaDogUmVtb3ZlIGRlZmluaXRpb24gb2YgQlNUUklORywKCXdoaWNoIGlzIG5vIGxvbmdlciB0ZXN0ZWQgYW55d2hlcmUuCgoJKiBjcHBpbml0LmMgKGhhbmRsZV9vcHRpb24pOiBEb24ndCBydW4gZXJyb3IgbWVzc2FnZSB0aHJvdWdoCglnZXR0ZXh0IHR3aWNlLgoKVHVlIEFwciAxOCAxNDoxNjo0NyAyMDAwICBSaWNoYXJkIEtlbm5lciAgPGtlbm5lckB2bHNpMS51bHRyYS5ueXUuZWR1PgoKCSogY29uZmxpY3QuYyAoY29uZmxpY3RfZ3JhcGhfYWRkKTogUGFzcyBlbnVtIHR5cGUgdG8gaHRhYl9maW5kX3Nsb3QuCgkqIGNwcGVycm9yLmMgKGhhc2h0YWIuaCk6IE5vdyBpbmNsdWRlLgoJKiBjcHBleHAuYyAoaGFzaHRhYi5oKTogTGlrZXdpc2UuCgkqIGNwcGxleC5jIChoYXNodGFiLmgpOiBMaWtld2lzZS4KCSogY3BwZmlsZXMuYyAoaGFzaHRhYi5oKTogTGlrZXdpc2UuCgkoZmluZF9pbmNsdWRlX2ZpbGUsIF9jcHBfY2FsY19oYXNoLCBjcHBfcmVhZF9maWxlKTogUGFzcyBlbnVtIHR5cGUKCXRvIGh0YWJfZmluZF9zbG90X3dpdGhfaGFzaC4KCSogY3BwaGFzaC5jIChoYXNodGFiLmgpOiBOb3cgaW5jbHVkZS4KCShfY3BwX2xvb2t1cF9zbG90KTogSU5TRVJUIGlzIG5vdyBlbnVtIGluc2VydF9vcHRpb24uCgkqIGNwcGhhc2guaCAoX2NwcF9sb29rdXBfc2xvdCk6IExpa2V3aXNlLgoJKiBjcHBpbml0LmMgKGhhc2h0YWIuaCk6IEluY2x1ZGUgZWFybGllci4KCShpbml0aWFsaXplX2J1aWx0aW5zKTogUGFzcyBlbnVtIHRvIGh0YWJfZmluZF9zbG90LgoJKiBjcHBsaWIuYyAoaGFzaHRhYi5oKTogTm93IGluY2x1ZGUuCgkoZG9fZGVmaW5lLCBkb191bmRlZik6IFBhc3MgZW51bSB0eXBlIHRvIF9jcHBfbG9va3VwX3Nsb3QuCgkoZG9fcHJhZ21hX3BvaXNvbiwgZG9fYXNzZXJ0KTogTGlrZXdpc2UuCgkqIGVtaXQtcnRsLmMgKGdlbl9ydHhfQ09OU1RfSU5UKTogUGFzcyBlbnVtIHRvCglodGFiX2ZpbmRfc2xvdF93aXRoX2hhc2guCgkqIHNpbXBsaWZ5LXJ0eC5jIChjc2VsaWJfbG9va3VwX21lbSwgY3NlbGliX2xvb2t1cCk6IExpa2V3aXNlLgoJKiB0cmVlLmMgKHR5cGVfaGFzaF9hZGQpOiBMaWtld2lzZS4KCShidWlsZDEpOiBNaW5vciBjbGVhbnVwLgoKCSogZ2djLWNvbW1vbi5jOiBBZGQgbWlzc2luZyBibGFua3MuCgkqIHByaW50LXRyZWUuYyAocHJpbnRfbm9kZSk6IFByaW50IERFQ0xfT0ZGU0VUX0FMSUdOLgoJKiB0cmVlLmggKERFQ0xfT0ZGU0VUX0FMSUdOKTogRml4IHR5cG8gaW4gY29tbWVudC4KCgkqIHN0bXQuYyAobWFya19jYXNlX25vZGUpOiBOZXcgZnVuY3Rpb24uCgkobWFya19jYXNlX25lc3RpbmcpOiBDYWxsIGl0LgoKCSogZXhwbWVkLmMgKGVtaXRfc3RvcmVfZmxhZyk6IElmIGNvbXBhcmluZyB0d28td29yZCBpbnRlZ2VyCgl3aXRoIHplcm8sIGNhbiBvcHRpbWl6ZSBORSwgRVEsIEdFLCBhbmQgTFQuCgoJKiBjLWRlY2wuYyAobWFya19iaW5kaW5nX2xldmVsKTogVXNlICdmb3InIGluc3RlYWQgb2YgYHdoaWxlJy4KCSogY29uZmxpY3QuYzogTWlub3IgY2xlYW51cHMuCgkqIG9wdGFicy5jOiBBZGQgYmxhbmsgbGluZQoJKiBzaW1wbGlmeS1ydHguYzogTWlub3IgY2xlYW51cHMuCgoyMDAwLTA0LTE4ICBTdGFuIENveCAgPHNjb3hAY3lnbnVzLmNvbT4KCgkqIGdlbmdlbnJ0bC5jIChnZW5sZWdlbmQpOiBGaXggbWlzc3BlbGxpbmcuCgoyMDAwLTA0LTE4ICBSb2JlcnQgTGlwZSAgPHJvYmVydGxpcGVAdXNhLm5ldD4KCgkqIGNvbmZpZ3VyZS5pbiAoRU5VTV9CSVRGSUVMRFNfQVJFX1VOU0lHTkVEKTogQWRkZWQuICBDaGVjayB0aGF0CgliaXRmaWVsZHMgb2YgdGhlIGhvc3QgY29tcGlsZXIgYXJlIG5vdCBzaWduZWQgcXVhbnRpdGllcy4KCSogY29uZmlnLmluOiBSZWdlbmVyYXRlLgoJKiBjb25maWd1cmU6IFJlZ2VuZXJhdGUuCgkqIHN5c3RlbS5oIChVU0VfRU5VTV9CSVRGSUVMRFMpOiBBZGRlZC4KCShFTlVNX0JJVEZJRUxEUyk6IEFkZGVkLgoJKiBydGwuaCAocnR4X2RlZik6IE1lbWJlcnMgYGNvZGUnLCBgbW9kZScsIG5vdyBFTlVNX0JJVEZJRUxELgoJKFNIT1JUX0VOVU1fQlVHKTogRGVsZXRlZC4KCSogdHJlZS5oICh0cmVlX2NvbW1vbik6IE1lbWJlcnMgYGNvZGUnLCBgbW9kZScsIGBidWlsdF9pbl9jbGFzcycsCglub3cgRU5VTV9CSVRGSUVMRC4KCSogY29uZmlnL2kzODYveG0tc2NvLmggKE9OTFlfSU5UX0ZJRUxEUyk6IERlbGV0ZWQuCgkoQ09ERV9GSUVMRF9CVUcpOiBMaWtld2lzZS4KCSogY29uZmlnL202OGsveC1hcG9sbG82OCAoQ0MpOiBEZWxldGVkIFNIT1JUX0VOVU1fQlVHLgoJKE9MRF9DQyk6IExpa2V3aXNlLgoJKiBjb25maWcvbTY4ay94LWNjdXIgKFhfQ0ZMQUdTKTogTGlrZXdpc2UuCgoyMDAwLTA0LTE4ICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogY3BwbGV4LmMgKF9jcHBfbGV4X3Rva2VuKTogRG9uJ3QgY2FsbCBDUFBfQlVNUF9MSU5FIHdoZW4gdGhlCgltYXJrIGlzIGFjdGl2ZS4KCjIwMDAtMDQtMTcgIFphY2sgV2VpbmJlcmcgIDx6YWNrQHdvbGVyeS5jdW1iLm9yZz4KCgkqIGNwcGV4cC5jIChsZXgpOiBEb24ndCBhc3N1bWUgdG9rZW5zIGFyZSBOVUwgdGVybWluYXRlZC4KCSogY3BwbGliLmMgKGRvX2luY2x1ZGUsIGRvX2ltcG9ydCwgZG9faW5jbHVkZV9uZXh0LAoJcmVhZF9saW5lX251bWJlciwgZGV0ZWN0X2lmX25vdF9kZWZpbmVkKTogTGlrZXdpc2UuCgkqIGNwcGhhc2guYyAoY29sbGVjdF9leHBhbnNpb24pOiBMaWtld2lzZS4KCShzcGVjaWFsX3N5bWJvbCwgX2NwcF9tYWNyb2V4cGFuZCk6IENoZWNrIHJldHVybiBmcm9tCgljcHBfZmlsZV9idWZmZXIuCgkqIGNwcGhhc2guaCAoQ1BQX05VTF9URVJNSU5BVEUsIENQUF9OVUxfVEVSTUlOQVRFX1EpOiBEZWxldGUKCW1hY3Jvcy4gIERlbGV0ZSBhbGwgdXNlcy4KCgkqIGdjYy5kZy9jcHAtbWkuYzogQWRkIHR3byBtb3JlIHRlc3QgY2FzZXMuCgkqIGdjYy5kZy9jcHAtbWluZC5oLCBnY2MuZGcvY3BwLW1pbmRwLmg6IE5ldyBmaWxlcy4KCjIwMDAtMDQtMTcgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgoJKiBiYi1yZW9yZGVyLmMgKGZpeHVwX3Jlb3JkZXJfY2hhaW4pOiBEb24ndCBsb29rIHVwIG5ldyBibG9jayBhZ2Fpbi4KCShyZW9yZGVyX2Jhc2ljX2Jsb2Nrcyk6IElmIG5vIGVwaWxvZ3VlIGluIHJ0bCwgZm9yY2UgbGFzdCBibG9jayBsYXN0LgoKMjAwMC0wNC0xNyAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGZ1bmN0aW9uLmMgKGV4cGFuZF9mdW5jdGlvbl9zdGFydCk6IFVzZSBoYXJkX2Z1bmN0aW9uX3ZhbHVlIHRvCgljb21wdXRlIHRoZSBSVEwgdG8gdXNlIGZvciBERUNMX1JFU1VMVC4KCk1vbiBBcHIgMTcgMjM6MzU6MjkgTUVUIERTVCAyMDAwICBKYW4gSHViaWNrYSAgPGpoQHN1c2UuY3o+CgoJKiBpMzg2LmMgKGF0aGxvbl9jb3N0KTogRml4IGxlYSwgZGl2aWRlIGFuZCBYRm1vZGUgbW92ZSBjb3N0cy4KCSh4ODZfaW50ZWdlcl9ERm1vZGVfbW92ZXMsIHg4Nl9wYXJ0aWFsX3JlZ19kZXBlbmRlbmN5LAoJIHg4Nl9tZW1vcnlfbWlzbWF0Y2hfc3RhbGwpOiBOZXcgZ2xvYmFsIHZhcmlhYmxlcy4KCShpeDg2X2FkanVzdF9jb3N0KTogSGFuZGxlIE1FTU9SWV9CT1RIIG9uIHBsYWNlcyBNRU1PUllfU1RPUkUgd2FzIG9ubHkKCWFsbG92ZWQ7IGZpeCBsb2FkIHBlbmFsdGllcyBmb3IgQXRobG9uLgoJKiBpMzg2LmggKHg4Nl9pbnRlZ2VyX0RGbW9kZV9tb3ZlcywgeDg2X3BhcnRpYWxfcmVnX2RlcGVuZGVuY3ksCgl4ODZfbWVtb3J5X21pc21hdGNoX3N0YWxsKTogRGVjbGFyZS4KCShUQVJHRVRfSU5URUdFUl9ERk1PREVfTU9WRVMsIFRBUkdFVF9QQVJUSUFMX1JFR19ERVBFTkRFTkNZLAoJIFRBUkdFVF9NRU1PUllfTUlTTUFUQ0hfU1RBTEwpOiBOZXcuCgkqIGkzODYubWQgKGF0aGxvbiBzY2hlZHVsaW5nIHBhcmFtZXRlcnMpOiBGaXggbGF0ZW5jaWVzIGFjY29yZGluZyB0bwoJQXRobG9uIE9wdGltaXphdGlvbiBNYW51YWwuCgkoc2FoZiwgeGNoZywgZmxkY3csIGxlYXZlIGluc3RydWN0aW9uIHBhdHRlcm5zKTogU2V0IGF0aGxvbl9kZWNvZGUgdG8KCXZlY3Rvci4KCShmc3FydCBpbnN0cnVjdGlvbiBwYXR0ZXJucyk6IFNldCBhdGhsb25fZGVjb2RlIHRvIGRpcmVjdC4KCShtb3ZoaV8xKTogUHJvbW90ZSBmb3IgVEFSR0VUX1BBUlRJQUxfUkVHX0RFUEVOREVOQ1kgYW5kIGZvcgoJUEFSVElBTF9SRUdJU1RFUl9TVEFMTCB3aXRoICFUQVJHRVRfSElNT0RFX01BVEggbWFjaGluZXMuCgkobW92cWlfMSk6IEhhbmRsZSBwcm9tb3RpbmcgY29ycmVjdGx5IGZvciBUQVJHRVRfUEFSVElBTF9SRUdfREVQRU5ERU5DWQoJYW5kIFRBUkdFVF9QQVJUSUFMX1JFR0lTVEVSX1NUQUxMIG1hY2hpbmVzLgoJKHB1c2hkZl9ub2ludGVnZXIpOiBOZXcgcGF0dGVybi4KCShwdXNoZGZfaW50ZWdlcik6IFJlbmFtZSBmcm9tIHB1c2hkZi4KCShtb3ZkZl9ub2ludGdlcik6IEVuYWJsZSBmb3IgIVRBUkdFVF9JTlRFR0VSX0RGTU9ERV9NT1ZFUyBtYWNoaW5lcy4KCShtb3ZkZl9pbnRnZXIpOiBEaXNhYmxlIGZvciAhVEFSR0VUX0lOVEVHRVJfREZNT0RFX01PVkVTIG1hY2hpbmVzLgoKMjAwMC0wNC0xNyAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAY3lnbnVzLmNvbT4KCgkqIGxvb3AuYyAoY2Fub25pY2FsaXplX2NvbmRpdGlvbik6IEFkZCBXQU5UX1JFRyBhcmd1bWVudC4KCVN0b3AgdGhlIHNlYXJjaCBpZiB3ZSBtYXRjaCBpdC4KCSogZXhwci5oIChjYW5vbmljYWxpemVfY29uZGl0aW9uKTogVXBkYXRlIGRlY2wuCgkqIHByZWRpY3QuYyAoZXhwZWN0ZWRfdmFsdWVfdG9fYnJfcHJvYik6IFVzZSBpdC4gIFRyYWNrIGxhc3QKCWV4cGVjdGVkIHZhbHVlIG5vdGUuCgkoZmluZF9leHBlY3RlZF92YWx1ZSk6IFJlbW92ZS4KCgkqIHJlb3JnLmMgKG1vc3RseV90cnVlX2p1bXApOiBBbHdheXMgdXNlIEJSX1BST0IgaWYgcHJlc2VudC4KCjIwMDAtMDQtMTcgIFphY2sgV2VpbmJlcmcgIDx6YWNrQHdvbGVyeS5jdW1iLm9yZz4KCgkqIGFjbG9jYWwubTQgKEFNX0dOVV9HRVRURVhUKTogRG9uJ3QgQUNfUkVRVUlSRShbQUNfRlVOQ19NTUFQXSkuCgkoQUNfRlVOQ19NTUFQX0ZJTEUpOiBOZXcgbWFjcm8sIHRlc3RzIHJlYWQtb25seSBwcml2YXRlIG1hcCBvZgoJYSBwbGFpbiBmaWxlLgoJKiBjb25maWd1cmUuaW46IENhbGwgQUNfRlVOQ19NTUFQX0ZJTEUuCgkqIGNvbmZpZ3VyZTogUmVnZW5lcmF0ZS4KCSogY29uZmlnLmluOiBSZWdlbmVyYXRlLgoKCSogaW50bC9sb2FkbXNnY2F0LmM6IFRlc3QgSEFWRV9NTUFQX0ZJTEUgbm90IEhBVkVfTU1BUC4KCSogZml4aW5jL2ZpeGluY2wuYzogTGlrZXdpc2UuCgoyMDAwLTA0LTE3ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEBjeWdudXMuY29tPgoKCSogYnVpbHRpbnMuYyAoZXhwYW5kX2J1aWx0aW5fZXhwZWN0KTogTmV3LgoJKGV4cGFuZF9idWlsdGluKTogQ2FsbCBpdC4KCSogYnVpbHRpbnMuZGVmIChCVUlMVF9JTl9FWFBFQ1QpOiBOZXcuCgkqIGMtY29tbW9uLmMgKGNfY29tbW9uX25vZGVzX2FuZF9idWlsdGlucyk6IERlY2xhcmUgX19idWlsdGluX2V4cGVjdC4KCSogZXh0ZW5kLnRleGk6IERvY3VtZW50IGl0LgoKCSogcHJlZGljdC5jIChleHBlY3RlZF92YWx1ZV90b19icl9wcm9iKTogTmV3LgoJKGZpbmRfZXhwZWN0ZWRfdmFsdWUpOiBOZXcuCgkqIGJhc2ljLWJsb2NrLmggKGV4cGVjdGVkX3ZhbHVlX3RvX2JyX3Byb2IpOiBEZWNsYXJlLgoJKiB0b3BsZXYuYyAocmVzdF9vZl9jb21waWxhdGlvbik6IEludm9rZSBpdC4KCgkqIHJ0bC5oIChOT1RFX0VYUEVDVEVEX1ZBTFVFKTogTmV3LgoJKE5PVEVfSU5TTl9FWFBFQ1RFRF9WQUxVRSk6IE5ldy4KCSogcnRsLmMgKG5vdGVfaW5zbl9uYW1lKTogVXBkYXRlLgoJKiBwcmludC1ydGwuYyAocHJpbnRfcnR4KTogUmVvcmcgTk9URV9MSU5FX05VTUJFUiBzcGVjaWFsCgljYXNlczsgaGFuZGxlIE5PVEVfSU5TTl9FWFBFQ1RFRF9WQUxVRS4KCjIwMDAtMDQtMTcgIEpha3ViIEplbGluZWsgIDxqYWt1YkByZWRoYXQuY29tPgoKCSogY29uZmlnL3NwYXJjL3NwYXJjLmMgKGVsaWdpYmxlX2Zvcl9zaWJjYWxsX2RlbGF5KTogQ2Fubm90IHVzZQoJbGVhZiBzaWJjYWxsIGRlbGF5IHNsb3QgaWYgZmxhZ19waWMuCgkob3V0cHV0X3NpYmNhbGwpOiBBbHdheXMgZW1pdCBjYWxsIGZvciBsZWFmIHNpYmNhbGwgaWYgZmxhZ19waWMuCgoyMDAwLTA0LTE3ICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBNYWtlZmlsZS5pbiAoc3RtcC1maXhwcm90byk6IEFja25vd2xlZGdlIGVycm9ycyBpbiBmaXhwcm90by4KCgkqIGZpeHByb3RvOiBJZiBmaXgtaGVhZGVyIGZhaWxzLCBleGl0IHdpdGggYW4gZXJyb3IuCgpNb24gQXByIDE3IDE0OjU5OjM2IE1FVCBEU1QgMjAwMCAgSmFuIEh1Ymlja2EgIDxqaEBzdXNlLmN6PgoKCSogY3NlLmMgKHN0cnVjdCBjaGVja19kZXBlbmRlbmNlX2RhdGEpOiBOZXcuCgkoY2hlY2tfZGVwZW5kZW5jZSk6IE5ldyBmdW5jdGlvbi4KCShpbnZhbGlkYXRlKTogVXNlIGNoZWNrX2RlcGRlbmVuY2UuCgoyMDAwLTA0LTE2ICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogZHdhcmYyb3V0LmMgKERXQVJGX0NJRV9EQVRBX0FMSUdOTUVOVCk6IEFkanVzdCwgbm93IHRoYXQKCVVOSVRTX1BFUl9XT1JEIGlzIHVuc2lnbmVkLgoKCSogdHJlZS5oIChzdHJ1Y3QgdHJlZV9jb21tb24pOiBSZW1vdmUgbWlzbGVhZGluZyBjb21tZW50LgoKMjAwMC0wNC0xNiAgRGF2ZSBQaXR0cyAgPGRwaXR0c0Bjb3p4LmNvbT4KCgkqIE1ha2VmaWxlLmluICgkKHNyY2RpcikvYy1wYXJzZS55OiBjLXBhcnNlLmluKTogRW5jbG9zZSB0aGUgd2hvbGUKCW1lc3NhZ2UgaW4gcXVvdGVzLiBPdGhlcndpc2UsIElCTSdzIG1ha2UgcHJvZ3JhbSB0cmVhdHMgdGhlICcjJyBhcyB0aGUKCXN0YXJ0IG9mIGEgY29tbWVudCBhbmQgaWdub3JlcyB0aGUgcmVtYWluZGVyIG9mIHRoZSBsaW5lLgoKCSogYy1sZXguYyAoeXlsZXgpOiBDaGFuZ2UgZm9yIEVCQ0RJQywgbG93ZXIgY2FzZSBjaGFyYWN0ZXJzIHByZWNlZGUKCXVwcGVyIGNhc2UuCgkqIGNjY3AuYyAoaW5pdGlhbGl6ZV9jaGFyX3N5bnRheCk6IEFsbG93IGZvciBob2xlcyBpbiBFQkNESUMuCgkqIGNleHAueSAoaW5pdGlhbGl6ZV9yYW5kb21fanVuayk6IExpa2V3aXNlLgoJKiBjcHBmaWxlcy5jIChmaW5kX2luY2x1ZGVfZmlsZSk6IENhc3QgYWxsb2NhIHJldHVybiB2YWx1ZS4KCSogY3BwaW5pdC5jIChpbml0aWFsaXplX3N0YW5kYXJkX2luY2x1ZGVzKTogTGlrZXdpc2UuCgkqIGNwcGxpYi5jIChjcHBfZGVmaW5lLCBjcHBfdW5kZWYpOiBMaWtld2lzZS4KCSogZGVmYXVsdHMuaCAoQVNNX09VVFBVVF9BU0NJSSk6IFVzZSBJU1BSSU5ULgoJKiBmaW5hbC5jIChvdXRwdXRfYXNtX2luc24pOiBBbGxvdyBmb3IgaG9sZXMgaW4gRUJDRElDLgoJKiBmb2xkLWNvbnN0LmMgKENIQVJNQVNLKTogTmV3LgoJKHJlYWxfaGV4X3RvX2YpOiBVc2UgaXQuCgkqIHJlYWwuYyAoQ0hBUk1BU0spOiBOZXcuCgkoZXRvYXNjLCBhc2N0b2VnKTogVXNlIGl0LgoJKGFzY3RvZWcpOiBFQkNESUMgbG93ZXIgY2FzZSBjaGFyYWN0ZXJzIHByZWNlZGUgdXBwZXIgY2FzZS4KCgkqIGkzNzAuYyAobXZzX2FkZF9sYWJlbCk6IENoYW5nZSBzcGFjaW5nIGZvciBjb2RpbmcgY29udmVudGlvbnMuCgkqIGkzNzAuaCAoQVNNX09VVFBVVF9DQVNFX0xBQkVMKTogQ2hhbmdlIHRvIHRoZSBkYXRhIENTRUNUIGZvciB0aGUKCW91dHB1dHRpbmcgY2FzZSB2ZWN0b3JzLgoJKEFTTV9PVVRQVVRfQ0FTRV9FTkQpOiBOZXcsIHB1dCBhc3NlbWJsZXIgYmFjayBpbnRvIGNvZGUgQ1NFQ1QuCgkoQVNNX09VVFBVVF9BRERSX1ZFQ19FTFQsIEFTTV9PVVRQVVRfQUREUl9ESUZGX0VMVCk6IFJlbW92ZSBwYWdlIGNoZWNrLAoJc2luY2UgdmVjdG9yIGluIGluIHRoZSBkYXRhIENTRUNULgoJKEFTTV9PVVRQVVRfUkVHX1BPUCwgQVNNX09VVFBVVF9SRUdfUFVTSCk6IFJlc3RvcmUgdG8gY29ycmVjdCBvcGVyYXRpb24uCgkqIGkzNzAubWQgKE1hbnkgcGF0dGVybnMpOiBQdXQgdGhlIGxlbmd0aCBpbiB0aGUgWEwgZGlyZWN0aXZlcy4KCShtb3ZkaSk6IFB1dCBiYWNrIFNUTSBhbmQgTVZDIGluIGRlZmluaXRpb24uCgkoZmxvYXRzaWRmMik6IENvcnJlY3QgVEFSR0VUX0VMRl9BQkkgcGF0dGVybiBhbmQgYWRkIGJhY2sgdGhlIExFMzcwCglwYXR0ZXJuIHVzaW5nIHRoZSBUQ0EuCgkqIG9lLmggKENQUF9TUEVDKTogQWRkZWQgdG8gYWxsb3cgdHJpZ3JhcGhzLgoJKiB4bS1vZS5oIChIT1NUX0JJVFNfUEVSX0xPTkdMT05HKTogQ2hhbmdlIHRvIDMyLiBJQk0ncyBjb21waWxlciBkb2VzCglub3Qgc3VwcG9ydCB0aGUgImxvbmcgbG9uZyIgdHlwZS4KCjIwMDAtMDQtMTYgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjb25maWcvbWlwcy9taXBzLXByb3Rvcy5oIChtaXBzX2xlZ2l0aW1hdGVfYWRkcmVzc19wKTogTmV3CglmdW5jdGlvbi4KCShtaXBzX3JlZ19tb2RlX29rX2Zvcl9iYXNlX3ApOiBMaWtld2lzZS4KCSogY29uZmlnL21pcHMvbWlwcy5oIChSRUdfT0tfU1RSSUNUX1ApOiBEb24ndCBkZWZpbmUuCgkoUkVHX09LX0ZPUl9JTkRFWF9QKTogRGVmaW5lIHVuY29uZGl0aW9uYWxseS4KCShSRUdfTU9ERV9PS19GT1JfQkFTRV9QKTogVXNlIG1pcHNfcmVnX21vZGVfb2tfZm9yX2Jhc2VfcC4KCShHT19JRl9MRUdJVElNQVRFX0FERFJFU1MpOiBVc2UgbWlwc19sZWdpdGltYXRlX2FkZHJlc3NfcC4KCSogY29uZmlnL21pcHMvbWlwcy5jIChtaXBzMTZfc2ltcGxlX21lbW9yeV9vcGVyYW5kKTogQWRqdXN0IG5vdwoJdGhhdCBHRVRfTU9ERV9TSVpFIGlzIHVuc2lnbmVkLgoJKG1pcHNfcmVnX21vZGVfb2tfZm9yX2Jhc2VfcCk6IERlZmluZS4KCShtaXBzX2xlZ2l0aW1hdGVfYWRkcmVzc19wKTogTGlrZXdpc2UuICBBZGp1c3Qgbm93Cgl0aGF0IEdFVF9NT0RFX1NJWkUgaXMgdW5zaWduZWQuCgkoYmxvY2tfbW92ZV9sb29wKTogTWFrZSB0aGUgbnVtYmVyIG9mIGJ5dGVzIHVuc2lnbmVkLgoJKGV4cGFuZF9ibG9ja19tb3ZlKTogTGlrZXdpc2UuCgkoZnVuY3Rpb25fYXJnKTogTWFrZSB0aGUgbG9vcCBjb3VudGVyIHVuc2lnbmVkIHRvIG1hdGNoIHRoZQoJYm91bmRhcnkgY29uZGl0aW9uLgoKMjAwMC0wNC0xNiAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAY3lnbnVzLmNvbT4KCgkqIHJ0bC5oIChlbnVtIGluc25fbm90ZSk6IE5ldyBlbnVtZXJhdGlvbi4gIFN1YnN1bWUKCU5PVEVfSU5TTl9ERUxFVEVEIGFuZCBmcmllbmRzLgoJKEdFVF9OT1RFX0lOU05fTkFNRSk6IEFkanVzdCBpbmRleCBieSBOT1RFX0lOU05fQklBUy4KCSogcnRsLmMgKG5vdGVfaW5zbl9uYW1lKTogVHdlYWsgc3RyaW5nIG9yZGVyLgoKMjAwMC0wNC0xNSAgWmFjayBXZWluYmVyZyAgPHphY2tAd29sZXJ5LmN1bWIub3JnPgoKCSogY3BwbGV4LmMgKF9jcHBfcmVhZF9hbmRfcHJlc2Nhbik6IEVubGFyZ2UgbGVuIGJ5IHNldHRpbmcgaXQKCXRvIG9mZnNldCAqIDIuCgoJKiBjcHBsZXguYyAob3V0cHV0X2xpbmVfY29tbWFuZCk6IFJlbW92ZSBkZWJ1Z2dpbmcgcHJpbnRzLgoJKGNwcF9vdXRwdXRfdG9rZW5zKTogRG9uJ3Qgd3JpdGUgb3V0IGEgemVyby1sZW5ndGggYnVmZmVyIG9yCgl0cnkgdG8gc2VlIGlmIGl0IGhhcyBhIG5ld2xpbmUgaW4gaXQuCgkoX2NwcF9leHBhbmRfdG9fYnVmZmVyKTogQ29weSB0aGUgc291cmNlIGJ1ZmZlciBiZWZvcmUgcHVzaGluZy4KCShfY3BwX3JlYWRfYW5kX3ByZXNjYW4pOiBNb3ZlIHNoaWZ0LWRvd24gb2YgcHVzaGJhY2sgYnl0ZXMgdG8KCXRoZSBlbmQgb2YgdGhlIGxvb3AuICBVc2UgbWVtbW92ZS4gIERvbid0IHJlYWQgcGFzdCB0aGUgZW5kIG9mCgl0aGUgYnVmZmVyLiAgUmVtb3ZlIHRyYWlsaW5nIG5ld2xpbmVzIGZyb20gZXJyb3IgbWVzc2FnZXMuCgoyMDA0LTA0LTE2ICBOZWlsIEJvb3RoICA8TmVpbEJAZWFydGhsaW5nLm5ldD4KCgkqIGNwcGhhc2guaCAoU1lOVEFYX0lOQ0xVREUsIFNZTlRBWF9BU1NFUlQsIGRpcmVjdGl2ZV9oYW5kbGVyKTogbmV3LgoJKiBjcHBsaWIuYzogQWRkIG5ldyBzeW50YXggZmxhZ3MgdG8gZGlyZWN0aXZlIHRhYmxlLCBhbmQKCXN1cHBvcnRpbmcgbWFjcm9zLgoKMjAwMC0wNC0xNSAgVWxyaWNoIERyZXBwZXIgIDxkcmVwcGVyQHJlZGhhdC5jb20+CgoJKiBpMzg2LmMgKGl4ODZfZXhwYW5kX2VwaWxvZ3VlKTogWWVzLCB0aGUgeDg2IGNhbiBwb3AgNjRrIGF0IG9uY2UKCXVzaW5nIHJldCAkTi4KCjIwMDAtMDQtMTUgIERhdmlkIEVkZWxzb2huICA8ZWRlbHNvaG5AZ251Lm9yZz4KCgkqIHRvcGxldi5jIChkaXNwbGF5X2hlbHApOiBQcmVmaXggImYiIHRvICJzY2hlZC12ZXJib3NlPSIuCgkqIGhhaWZhLXNjaGVkLmM6IFVwZGF0ZSAtZnNjaGVkLXZlcmJvc2UgY29tbWVudHMgdG8gdXNlICI9Ii4KClNhdCBBcHIgMTUgMTA6NTk6MTkgMjAwMCAgUmljaGFyZCBLZW5uZXIgIDxrZW5uZXJAdmxzaTEudWx0cmEubnl1LmVkdT4KCgkqIE1ha2VmaWxlLmluIChnZ2MtcGFnZS5vKTogTm93IGluY2x1ZGVzIHRvcGxldi5oLgoJKiBnZ2MtcGFnZS5jICh0b3BsZXYuaCk6IE5vdyBpbmNsdWRlZC4KCShnY190aW1lKTogUmVtb3ZlIGRlY2xhcmF0aW9uLgoJKGdnY19jb2xsZWN0KTogVElNRSBub3cgbG9uZy4KCSogdG9wbGV2LmMgKHBhcnNlX3RpbWUsIHZhcmFzbV90aW1lLCBnY190aW1lKTogU3RpbGwgZ2xvYmFsOyBhbGwKCW90aGVycyBzdGF0aWMuCgkqIHRvcGxldi5oIChnY190aW1lLCBwYXJzZV90aW1lLCBnY190aW1lKTogTmV3IGRlY2xhcmF0aW9ucy4KCgkqIHRvcGxldi5jOiBNYWtlICpfdGltZSB2YXJpYWJsZSBsb25nIHRvIHJlZHVjZSBjaGFuY2Ugb2Ygb3ZlcmZsb3cuCgkoVElNRVZBUik6IExpa2V3aXNlIGZvciBgb3RpbWUnLgoJKHByaW50X3RpbWUpOiBBcmcgaXMgbm93IGxvbmc7IGNvbXB1dGUgcGVyY2VudGFnZSBpbiBGUCBhbmQgcm91bmQuCgkqIHRvcGxldi5oIChwcmludF90aW1lKTogQXJnIGlzIGxvbmcuCgoJKiB0cmVlLmM6IE1pbm9yIHdoaXRlc3BhY2UgY2hhbmdlcy4KCgkqIGNvbmZpZ3VyZS5pbiAoYWxwaGEqLSotKik6IEFkZCBjb25maWcvYWxwaGEvdC1hbHBoYS4KCSogY29uZmlndXJlOiBSZWJ1aWx0LgoJKiBsaWJnY2MyLmMgKF9fZml4dW5zdGZESSk6IFJlbmFtZWQgZnJvbSBfX2ZpeHVuc3RmZGkuCgkoX19maXh1bnN4ZkRJKTogUmVuYW1lZCBmcm9tIF9fZml4dW5zeGZkaS4KCShfX2ZpeHVuc2RmREkpOiBSZW5hbWVkIGZyb20gX19maXh1bnNkZmRpLgoJKF9fZml4dW5zc2ZESSk6IFJlbmFtZWQgZnJvbSBfX2ZpeHVuc3NmZGkuCgkoX19mbG9hdGRpc2YpOiBVc2UgcHJvcGVyIHR5cGUgaW4gUkVQX0JJVCBtYWNyby4KCShfX2ZpeHVuc3hmU0kpOiBSZW5hbWVkIGZyb20gX19maXh1bnN4ZnNpLgoJKF9fZml4dW5zZGZTSSk6IFJlbmFtZWQgZnJvbSBfX2ZpeHVuc2Rmc2kuCgkoX19maXh1bnNzZlNJKTogUmVuYW1lZCBmcm9tIF9fZml4dW5zc2ZzaS4KCSogbGliZ2NjMi5oOiBBZGQgY2FzZXMgZm9yIE1JTl9VTklUU19QRVJfV09SRCA+IDQuCglDaGFuZ2UgbG9jYXRpb24gb2YgbWFjcm9zIGFuZCB1cHBlci1jYXNlIHNvbWUgbmFtZXMgYXMgYWJvdmUuCgkqIGxvbmdsb25nLmggKFthbHBoYV0pOiBVc2UgUEFSQU1TLCBub3QgX19QIGluIGRlY2wgb2YgX191ZGl2X19xcm5uZC4KCSogY29uZmlnL2FscGhhL3QtYWxwaGEsIGNvbmZpZy9hbHBoYS9xcm5uZC5hc206IE5ldyBmaWxlcy4KCgkqIHZhcmFzbS5jIChhc3NlbWJsZV92YXJpYWJsZSk6IEFkZCBjYXN0IHRvIHJlbW92ZSB3YXJuaW5nLgoJKGltbWVkX3JlYWxfY29uc3RfMSk6IE9ubHkgdXNlIENPTlNUWzAxXV9SVFggaWYgbm90IGluIG5lc3RlZCBmdW5jdGlvbi4KCgkqIGZsb3cuYyAoY291bnRfYmFzaWNfYmxvY2tzLCBmaW5kX2Jhc2ljX2Jsb2Nrc18xKTogUmVtb3ZlIGxhc3QgY2hhbmdlLgoJKiBvcHRhYnMuYyAoZW1pdF9saWJjYWxsX2Jsb2NrKTogSWYgaGF2ZSBSRUdfRUhfUkVHSU9OLCB1cGRhdGUKCXJlZ2lvbiBudW1iZXIgdG8gLTEuCgoyMDAwLTA0LTE1ICBSaWNoYXJkIEVhcm5zaGF3IChyZWFybnNhaEBhcm0uY29tKQoKCSogZW1pdC1ydGwuYyAodW5zaGFyZV9hbGxfcnRsX2FnYWluKTogVW5tYXJrIGV2ZXJ5dGhpbmcsIHRoZW4KCWNhbGwgdW5zaGFyZV9hbGxfcnRsLgoKCSogYXJtLm1kIChtb3ZoaSk6IFJFR05PX1BPSU5URVJfQUxJR04gaXMgbm93IGJpdHMuCgpGcmkgQXByIDE0IDE2OjU4OjQ1IDIwMDAgIEppbSBXaWxzb24gIDx3aWxzb25AY3lnbnVzLmNvbT4KCgkqIGNvbmZpZy9pYTY0L2xpYjFmdW5jcy5hc20gKF9fZGl2ZGkzLCBfX21vZGRpMywgX191ZGl2ZGkzLCBfX3Vtb2RkaTMpOgoJVXNlIC5zMSBub3QgLnMwIGZvciBhbGwgRlAgaW5zdHJ1Y3Rpb25zLgoKMjAwMC0wNC0xNCAgWmFjayBXZWluYmVyZyAgPHphY2tAd29sZXJ5LmN1bWIub3JnPgoKCSogY3BwbGV4LmMgKGNwcF9vdXRwdXRfdG9rZW5zLCBjcHBfc2Nhbl9idWZmZXJfbm9vdXRwdXQpOiBOZXcgcHVibGljCglpbnRlcmZhY2VzLgoJKHNhZmVfZndyaXRlLCBvdXRwdXRfbGluZV9jb21tYW5kKTogTmV3IHN0YXRpYyBmdW5jdGlvbnMuCgkoY3BwX2V4cGFuZF90b19idWZmZXIpOiBOb3cgcHJpdmF0ZSB0byBjcHBsaWIuCgkoY3BwX3NjYW5fYnVmZmVyKTogVGFrZSBhIHByaW50ZXIuCgoJKiBjcHBoYXNoLmg6IFVwZGF0ZSBwcm90b3R5cGVzLgoJKiBjcHBsaWIuaDogVXBkYXRlIHByb3RvdHlwZXMuCgkoY3BwX3ByaW50ZXIpOiBOZXcuCgkoY3BwX2J1ZmZlcik6IFJlbW92ZSBsYXN0X25vbWluYWxfZm5hbWUuCgkoY3BwX3JlYWRlcik6IFJlbW92ZSBsaW5lbm8uCgoJKiBjcHBtYWluLmM6IFVzZSBhIGNwcF9wcmludGVyLgoJKiBmaXgtaGVhZGVyLmM6IE5vIG5lZWQgdG8gaW5oaWJpdCBsaW5lIGNvbW1hbmRzLiAgQ2FsbAoJY3BwX3N0YXJ0X3JlYWQgd2l0aCBubyBwcmludGVyLgoKCSogY3BwZXJyb3IuYyAoY3BwX25vdGljZV9mcm9tX2Vycm5vKTogUHJvdmlkZSBkZWZhdWx0IG5hbWUuCgkqIGNwcGZpbGVzLmMgKG1ha2VfSUhBU0gsIF9jcHBfZmFrZV9paGFzaCk6IE5ldyBmdW5jdGlvbnMuCgkoZmluZF9pbmNsdWRlX2ZpbGUsIGNwcF9yZWFkX2ZpbGUpOiBVc2UgbWFrZV9JSEFTSC4KCShmaWxlX2NsZWFudXApOiBTZXQgY29udHJvbF9tYWNybyBhbmQgY2xlYXIKCWlucHV0X3N0YWNrX2xpc3RpbmdfY3VycmVudCBoZXJlLgoJKF9jcHBfZXhlY3V0ZV9pbmNsdWRlKTogRG9uJ3Qgb3V0cHV0IGVudGVyaW5nLWZpbGUgbWFya2VyLgoJKiBjcHBoYXNoLmMgKHNwZWNpYWxfc3ltYm9sKTogTG9vayBmb3IgdGhlIGxpbmUgbnVtYmVyIGluIHRoZQoJYnVmZmVyLCBub3QgdGhlIHJlYWRlci4KCShfY3BwX21hY3JvZXhwYW5kKTogTm8gbmVlZCB0byBkaXNhYmxlIGxpbmUgY29tbWFuZHMuCgkoX2NwcF9kdW1wX2RlZmluaXRpb24pOiBObyBuZWVkIHRvIGdlbmVyYXRlIGxpbmUgY29tbWFuZHMuCgkoZHVtcF9oYXNoX2hlbHBlcik6IFJlbW92ZSBleGNlc3MgbmV3bGluZSBmcm9tIG91dHB1dC4KCSogY3BwaW5pdC5jIChkdW1wX3NwZWNpYWxfdG9fYnVmZmVyKTogTm8gbmVlZCB0byBnZW5lcmF0ZSBsaW5lCgljb21tYW5kcy4KCShjcHBfcHJpbnRlcl9pbml0KTogTmV3LgoJKGNwcF9zdGFydF9yZWFkKTogVGFrZSBhIHByaW50ZXIsIGFuZCBzdGFydCBpdCB1cCBpZiBpdCdzIG5vdAoJTlVMTC4gIE5vIG5lZWQgdG8gZ2VuZXJhdGUgbGluZSBjb21tYW5kcy4KCShjcHBfZmluaXNoKTogRXhwZWN0IG5vIGJ1ZmZlcnMgc3RhY2tlZCBhdCBhbGwuICBUYWtlIGEKCXByaW50ZXIgYXJndW1lbnQsIGFuZCBmbHVzaCB0aGUgb3V0cHV0IGJ1ZmZlciBpZiBpdCdzIG5vdAoJTlVMTC4KCSogY3BwbGV4LmMgKF9jcHBfbGV4X3Rva2VuKTogUmV0dXJuIEVPRiBpZiB0aGVyZSdzIG5vIGJ1ZmZlci4KCURvbid0IHB1dCB0d28gaGFzaGVzIGF0IHRoZSBiZWdpbm5pbmcgb2YgYW4gYXNzZXJ0aW9uLgoJKGNwcF9nZXRfdG9rZW4pOiBEb24ndCBpbmNyZW1lbnQgcGZpbGUtPmxpbmVubyBvciBlbWl0IGxpbmUKCWNvbW1hbmRzIGhlcmUuICBSZXR1cm4gRU9GIGlmIHRoZXJlJ3Mgbm8gYnVmZmVyIHdoZW4gd2UgZ2V0CglFT0YuCgkqIGNwcGxpYi5jIChkb19kZWZpbmUsIHNraXBfaWZfZ3JvdXApOgoJTm8gbmVlZCB0byBkaXNhYmxlIGxpbmUgY29tbWFuZHMuCgkoX2NwcF9vdXRwdXRfbGluZV9jb21tYW5kKTogRGVsZXRlIGZ1bmN0aW9uLgoJKGRvX2xpbmUpOiBEb24ndCBlbWl0IGxpbmUgY29tbWFuZHMgaGVyZSwgYnV0IHNldCB0aGluZ3MgdXAgc28KCXRoZXkgd2lsbCBiZSBlbWl0dGVkIGlmIG5lY2Vzc2FyeS4gIFVzZSBfY3BwX2Zha2VfaWhhc2ggdG8KCW1ha2UgdW5pcXVlIG5vbWluYWxfZm5hbWVzIGlmIG5lY2Vzc2FyeS4KCShkb19lbGlmLCBkb19lbHNlLCBfY3BwX2hhbmRsZV9lb2YpOiBDYWxsIGNwcF9lcnJvcl93aXRoX2xpbmUKCXdpdGggMCBmb3IgY29sdW1uLCBub3QgLTEuCgkoX2NwcF9oYW5kbGVfZW9mKTogRG9uJ3Qgc2V0IHRoZSBjb250cm9sIG1hY3JvIGhlcmUuICBEb24ndAoJY2xlYXIgaW5wdXRfc3RhY2tfbGlzdGluZ19jdXJyZW50IGhlcmUuICBEb24ndCBlbWl0IGxpbmUKCWNvbW1hbmRzLgoKMjAwMC0wNC0xNCAgR2VvZmYgS2VhdGluZyAgPGdlb2Zma0BjeWdudXMuY29tPgoKCSogY29uZmlnL3JzNjAwMC9zeXN2NC5oIChMSU5LX1NUQVJUX1NPTEFSSVNfU1BFQyk6IERlZmluZSB0byBlbXB0eQoJYWx3YXlzLCB1c2UgdGhlIGRlZmF1bHQgU1ZSNCBzdGFydCBhZGRyZXNzLgoKCSogY29uZmlnL3JzNjAwMC9saW51eC5oIChMSU5LX1NQRUMpOiBEb24ndCBkZWZpbmUuCgkoTElOS19TSExJQl9TUEVDKTogRGVmaW5lLgoJKExJTktfU1RBUlRfREVGQVVMVF9TUEVDKTogRGVmaW5lLgoJKExJTktfT1NfREVGQVVMVF9TUEVDKTogRGVmaW5lLgoKCSogY29uZmlnL3JzNjAwMC9zeXN2NC5oIChFTkRGSUxFX1NQRUMpOiBVc2UgdGhlICUoZW5kZmlsZV8qKSBtYWNyb3MuCgoJKiBjb25maWcvcnM2MDAwL2VhYmkuYXNtIChfX2VhYmkpOiBDYWxsIF9faW5pdCByYXRoZXIgdGhhbgoJX19kb19nbG9iYWxfY3RvcnMgdG8gaGFuZGxlIGNvbnN0cnVjdG9ycy4KCSogY29uZmlnL3JzNjAwMC9zeXN2NC5oIChTVEFSVEZJTEVfQURTX1NQRUMpOiBVc2UgY3J0YmVnaW4uCgkoU1RBUlRGSUxFX1lFTExPV0tOSUZFX1NQRUMpOiBMaWtld2lzZS4KCShTVEFSVEZJTEVfTVZNRV9TUEVDKTogTGlrZXdpc2UuCgkoU1RBUlRGSUxFX1NJTV9TUEVDKTogTGlrZXdpc2UuCgkoRU5ERklMRV9BRFNfU1BFQyk6IFVzZSBjcnRlbmQuCgkoRU5ERklMRV9ZRUxMT1dLTklGRV9TUEVDKTogTGlrZXdpc2UuCgkoRU5ERklMRV9NVk1FX1NQRUMpOiBMaWtld2lzZS4KCShFTkRGSUxFX1NJTV9TUEVDKTogTGlrZXdpc2UuCgkoU1RBUlRGSUxFX1NPTEFSSVNfU1BFQyk6IFVzZSBjcnRiZWdpbi9jcnRiZWdpblMuCgkoRU5ERklMRV9TT0xBUklTX1NQRUMpOiBVc2UgY3J0ZW5kL2NydGVuZFMuCgkoU1RBUlRGSUxFX0xJTlVYX1NQRUMpOiBVc2UgY3J0YmVnaW5TIGZvciBzaGFyZWQgb2JqZWN0cy4KCShFTkRGSUxFX0xJTlVYX1NQRUMpOiBVc2UgY3J0ZW5kUyBmb3Igc2hhcmVkIG9iamVjdHMuCgkqIGNvbmZpZy9yczYwMDAvdC1wcGNjb21tIChMSUIyRlVOQ1NfRVhUUkEpOiBEb24ndCBidWlsZCBlYWJpLWN0b3JzLm8uCgkoRVhUUkFfTVVMVElMSUJfUEFSVFMpOiBCdWlsZCBjcnRiZWdpblMvY3J0ZW5kUy4KCShDUlRTVFVGRl9UX0NGTEFHU19TKTogRGVmaW5lLgoJKiBjb25maWcvcnM2MDAwL2VhYmktY3RvcnMuYzogRGVsZXRlLgoKCSogY29uZmlnL3JzNjAwMC9lYWJpLWNpLmFzbSAoX19pbml0KTogQWxpZ24gc3RhY2sgdG8gMTYtYnl0ZQoJYm91bmRhcnkuCgkoX19maW5pKTogTGlrZXdpc2UuCgkqIGNvbmZpZy9yczYwMDAvZWFiaS1jbi5hc20gKF9faW5pdCk6IEFsbG93IGZvciAxNi1ieXRlIHN0YWNrIGZyYW1lLgoJYm91bmRhcnkuCgkoX19maW5pKTogTGlrZXdpc2UuCgpGcmkgQXByIDE0IDE2OjA5OjAyIDIwMDAgIEppbSBXaWxzb24gIDx3aWxzb25AY3lnbnVzLmNvbT4KCgkqIGNvbWJpbmUuYyAoZm9yY2VfdG9fbW9kZSwgY2FzZSBMU0hJRlRSVCk6IENoZWNrIHRoYXQgc2hpZnQgc2hpZnQKCXBsdXMgbWFzayBzaXplIGlzIHNtYWxsZXIgb3IgZXF1YWwgdG8gdGhlIG1vZGUgc2l6ZS4KCkZyaSBBcHIgMTQgMTg6MDc6MzAgMjAwMCAgUmljaGFyZCBLZW5uZXIgIDxrZW5uZXJAdmxzaTEudWx0cmEubnl1LmVkdT4KCgkqIHByaW50LXJ0bC5jIChwcmludF9ydHgsIGNhc2UgTk9URSk6IERvbid0IGJsb3cgdXAgaWYgTk9URV9CQVNJQ19CTE9DSwoJbm90IHlldCBzZXQuCgoJKiBleHByLmMgKHJlbG9hZC5oKTogTm93IGluY2x1ZGVkLgoJKGVtaXRfYmxvY2tfbW92ZSk6IFNldCB2b2xhdGlsZV9vayB3aGVuIGNoZWNraW5nIGZvciBtb3ZzdHIuCgkoZW1pdF9tb3ZlXzEpOiBDaGVjayBmb3IgcmVwbGFjZW1lbnRzIGluIGFkZHJlc3NlcyBpbiBtdWx0aS13b3JkIGNhc2UuCgkqIE1ha2VmaWxlLmluIChleHByLm8pOiBOb3cgaW5jbHVkZXMgcmVsb2FkLmguCgoJKiBmbG93LmMgKGNvdW50X2Jhc2ljX2Jsb2Nrcyk6IFJlbW92ZSB1bnVzZWQgdmFyIFBSRVZfQ0FMTC4KCU5ldmVyIGhhdmUgYSBMSUJDQUxMIGVuZCBhIGJhc2ljIGJsb2NrLgoJKGZpbmRfYmFzaWNfYmxvY2tzXzEpOiBMaWtld2lzZS4KCVJlb3JnYW5pemUgQ0FMTF9JTlNOIGNhc2VzLgoKCSogc2JpdG1hcC5oIChFWEVDVVRFX0lGX1NFVF9JTl9TQklUTUFQKTogUmV2ZXJ0IGxhc3QgY2hhbmdlLgoKRnJpIEFwciAxNCAxMDo1NDoyMiAyMDAwICBKaW0gV2lsc29uICA8d2lsc29uQGN5Z251cy5jb20+CgoJKiBjb25maWcvaWE2NC9saWIxZnVuY3MuYXNtIChfX2lhNjRfbm9ubG9jYWxfZ290byk6IERyb3Agb2Jzb2xldGUKCWNvbXBsZXRlcnMgZnJvbSBtb3YucmV0IGluc3RydWN0aW9uLgoKMjAwMC0wNC0xNCAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAY3lnbnVzLmNvbT4KCgkqIGZvbGQtY29uc3QuYyAoZXh0cmFjdF9tdWxkaXYpOiBEb24ndCBkaXN0cmlidXRlIGFuZCB3aWRlbgoJbXVsdGlwbHkgYWNyb3NzIHBsdXMgZm9yIG5vbi1zaXpldHlwZSB1bnNpZ25lZCB0eXBlcy4KCjIwMDAtMDQtMTQgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgoJKiBmbG93LmMgKGZpbmRfYXV0b19pbmMpOiBEb24ndCBhdXRvaW5jIGVsaW1pbmFibGUgcmVnaXN0ZXJzLgoJSWYgdGhlIG9yaWdpbmFsIHNvdXJjZSBpcyBkZWFkIGluIHRoZSBpbmNyIGluc24sIGl0J3MgZGVhZCBub3cuCgpGcmkgQXByIDE0IDA3OjQwOjMyIDIwMDAgIFJpY2hhcmQgS2VubmVyICA8a2VubmVyQHZsc2kxLnVsdHJhLm55dS5lZHU+CgoJKiBzdG9yLWxheW91dC5jIChsYXlvdXRfZGVjbCk6IFByb3Blcmx5IGNvbXBhcmUgS05PV05fQUxJR04gdG8KCXNlZSBpZiBERUNMX0JJVF9GSUVMRCBuZWVkcyB0byBzdGlsbCBiZSBzZXQuCgoJKiB0cmVlLmggKHN0cnVjdCB0cmVlX3R5cGUpOiBNYWtlIFBSRUNJU0lPTiA5IGJpdHMgYW5kIE1PREUgNy4KCgkqIGRieG91dC5jIChkYnhvdXRfdHlwZSwgY2FzZSBJTlRFR0VSX1RZUEUpOiBEb24ndCBjYWxsCglwcmludF9pbnRfY3N0X29jdGFsIHdpdGggc29tZXRoaW5nIHRoYXQncyBub3QgYW4gSU5URUdFUl9DU1QuCgoJKiBjb25maWcvYWxwaGEvYWxwaGEuYyAoYWxwaGFfZW1pdF9mbG9hdHVucyk6IEVuc3VyZSB3ZSBwYXNzIGEgUkVHCglhbmQgbm90IGEgU1VCUkVHIHRvIGEgRkxPQVQgcnRsLgoKVGh1IEFwciAxMyAxOTozOTo1NiAyMDAwICBDbGludG9uIFBvcGV0eiAgPGNwb3BldHpAY3lnbnVzLmNvbT4KCgkqIGVtaXQtcnRsLmMgKHRyeV9zcGxpdCk6IEF2b2lkIGluZmluaXRlIGxvb3AgaWYgdGhlIHNwbGl0CglyZXN1bHRzIGluIGEgc2VxdWVuY2UgdGhhdCBjb250YWlucyB0aGUgb3JpZ2luYWwgaW5zbi4KCjIwMDAtMDQtMTMgIEFuZHJlYXMgSmFlZ2VyICA8YWpAc3VzZS5kZT4KCgkqIGNvbmZpZy9taXBzL21pcHMuYyAoZXhwYW5kX2Jsb2NrX21vdmUpOiBQYXNzIGFsaWdubWVudAoJYXJndW1lbnQgdG8gbW92ZV9ieV9waWVjZXMgaW4gYml0cywgbm90IGJ5dGVzLgoKCSogY29uZmlnL21pcHMvbGludXguaCAoQ1BQX1BSRURFRklORVMpOiBBbHNvIGRlZmluZSBfX1BJQ19fIGFuZAoJX19waWNfXyBmb3IgbGl0dGxlIGVuZGlhbi4KCjIwMDAtMDQtMTMgIEFuZHJlYXMgSmFlZ2VyICA8YWpAc3VzZS5kZT4KCgkqIGNvbmZpZy9pMzg2L2kzODYtcHJvdG9zLmg6IEFkZCBwcm90b3R5cGUgZm9yCgl1bm9fY29tcGFyaXNvbl9vcGVyYXRvci4KClRodSBBcHIgMTMgMTU6NTU6MDggTUVUIERTVCAyMDAwICBKYW4gSHViaWNrYSAgPGpoQHN1c2UuY3o+CgoJKiBhbGlhcy5jIChub25sb2NhbF9yZWZlcmVuY2VfcCk6IFRha2UgY2FyZSBvZiBDQUxMX0lOU05TJ3MgZnVzYWdlLgoJKiBjYWxscy5jIChFQ0ZfUFVSRSk6IE5ldyBmbGFnLgoJKGVtaXRfY2FsbF8xKTogSGFuZGxlIEVDRl9QVVJFIGNhbGxzLgoJKGluaXRpYWxpemVfYXJndW1lbnRfaW5mb3JtYXRpb24pOiBVbnNldCBFQ0ZfUFVSRSBmbGFnIHRvby4KCShwcmVjb21wdXRlX2FyZ3VtZW50cyk6IFByZWNvbXB1dGUgZm9yIEVDRl9QVVJFIHRvby4KCShleHBhbmRfY2FsbCk6IEhhbmRsZSBFQ0ZfUFVSRSBjYWxscyB0b28uCgkoZW1pdF9saWJyYXJ5X2NhbGxfdmFsdWVfMSk6IFJlbmFtZSBub19xdWV1ZSBhcmd1bWVudCB0byBmbl90eXBlLAoJYWNjZXB0IHZhbHVlIG9mIDIgYXMgcHVyZSBmdW5jdGlvbi4KCShlbWl0X2xpYnJhcnlfY2FsbF92YWx1ZSwgZW1pdF9saWJyYXJ5X2NhbGwpOiBSZW5hbWUgbm9fcXVldWUgYXJndW1lbnQKCXRvIGZuX3R5cGUuCgkqIG9wdGFicy5jIChwcmVwYXJlX2NtcF9pbnNuKTogUGFzcyBmbl90eXBlIDIgdG8gbWVtY21wIGNhbGwuCgoJKiB0cmVlLmggKERFQ0xfSVNfUFVSRSk6IE5ldyBtYWNyby4KCShzdHJ1Y3QgdHJlZV9kZWNsKTogQWRkIHB1cmVfZmxhZy4KCSogYy1jb21tb24uYyAoZW51bSBhdHRycyk6IEFkZCBhdHRyaWJ1dGUgInB1cmUiLgoJKGluaXRfYXR0cmlidXRlcyk6IEluaXRpYWxpemUgYXR0cmlidXRlICJwdXJlIgoJKGRlY2xfYXR0cmlidXRlcyk6IEhhbmRsZSBhdHRyaWJ1dGUgInB1cmUiLgoJKiBleHRlbmQudGV4aSAoQXR0cmlidXRlICJwdXJlIik6IERvY3VtZW50LgoJKiBjYWxscy5jIChleHBhbmRfY2FsbCk6IEFkZCAobWVtOkJMSyAoc2NyYXRjaCkpIHRvICJlcXVhbCBmcm9tIgoJaW4gcHVyZSBmdW5jdGlvbi4KCShmbGFnc19mcm9tX2RlY2xfb3JfdHlwZSk6IFN1cHBvcnQgYXR0cmlidXRlICJwdXJlIi4KCjIwMDAtMDQtMTMgIEphc29uIE1lcnJpbGwgIDxqYXNvbkBjYXNleS5jeWdudXMuY29tPgoKCSogY3BwbGV4LmMgKF9jcHBfbGV4X3Rva2VuKTogSGFuZGxlIGRpZ3JhcGhzLiAgRG9uJ3QgbnVsbC10ZXJtaW5hdGUKCXRoZSB0b2tlbiBleGNlcHQgZm9yIG51bWJlcnMgYW5kIGlkZW50aWZpZXJzLgoKVGh1IEFwciAxMyAwMDowOToxNiBFRFQgMjAwMCAgSm9obiBXZWhsZSAgKGpvaG5AZmVpdGguY29tKQoKCSogaTM4Ni5jIChpeDg2X2V4cGFuZF9iaW5hcnlfb3BlcmF0b3IsCglpeDg2X2V4cGFuZF91bmFyeV9vcGVyYXRvcik6IENoZWNrIG5vX25ld19wc2V1ZG9zCglpbnN0ZWFkIG9mIHJlbG9hZF9pbl9wcm9ncmVzcyBhbmQgcmVsb2FkX2NvbXBsZXRlZC4KCShpeDg2X3NwbGl0X2FzaGxkaSwgaXg4Nl9zcGxpdF9hc2hyZGksCglpeDg2X3NwbGl0X2xzaHJkaSk6IENoZWNrIG5vX25ld19wc2V1ZG9zIGluc3RlYWQKCW9mIHJlbG9hZF9jb21wbGV0ZWQuCgoyMDAwLTA0LTEyICBKZWZmcmV5IEEgTGF3ICAobGF3QGN5Z251cy5jb20pCgoJKiBmdW5jdGlvbi5jIChwdXJnZV9hZGRyZXNzb2YpOiBVbnNoYXJlIGFueSBzaGFyZWQgcnRsIGNyZWF0ZWQgYnkKCXB1cmdlX2FkZHJlc3NvZiBhbmQgaXRzIGNoaWxkcmVuLgoKMjAwMC0wNC0xMiAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGZ1bmN0aW9uLmMgKGFnZ3JlZ2F0ZV92YWx1ZV9wKTogVk9JRF9UWVBFIG5vZGVzIGFyZSBuZXZlcgoJYWdncmVnYXRlcy4KCjIwMDAtMDQtMDUgIEFuZHJlYXMgSmFlZ2VyICA8YWpAc3VzZS5kZT4KCgkqIGNvbmZpZy9taXBzL2xpbnV4LmggKFNVQlRBUkdFVF9BU01fU1BFQyk6IFVzZSBwcm9wZXIgZmxhZ3MgaWYKCW5vdCBjb21waWxpbmcgUElDIGNvZGUsIGFkZCBmbGFncyBmb3IgbWFiaT02NC4KCShTVUJUQVJHRVRfQ1BQX1NJWkVfU1BFQyk6IE5ldy4KCShTVUJUQVJHRVRfQ1BQX1NQRUMpOiBOZXcuCgkoQ1BQX1BSRURFRklORVMpOiBEZWZpbmUgX19QSUNfXyBhbmQgX19waWNfXy4gIFBJQyBjb2RlIGlzIGRlZmF1bHQKCWZvciBNSVBTL0xpbnV4IGFuZCBsb3RzIG9mIGNvZGUgbmVlZHMgdGhlc2UgZGVmaW5lcy4KCldlZCBBcHIgMTIgMjI6NDQ6MTEgMjAwMCAgSGFucy1QZXRlciBOaWxzc29uICA8aHBAYXhpcy5jb20+CgoJKiByZW9yZy5jIChmaWxsX3Nsb3RzX2Zyb21fdGhyZWFkKTogQ2hlY2sgc2lkZV9lZmZlY3RzX3Agd2hlbgoJdHJ5aW5nIHRoZSAib3Bwb3NpdGUgYXJpdGhtZXRpYyIgYXBwcm9hY2guCgpXZWQgQXByIDEyIDIwOjUxOjIwIDIwMDAgIEoib3JuIFJlbm5lY2tlIDxhbXlsYWFyQGN5Z251cy5jby51az4KCgkqIHNoLmggKFNUUlVDVF9WQUxVRSk6IEp1c3QgMCBmb3IgVEFSR0VUX0hJVEFDSEkuCgkoc3RydWN0IHNoX2FyZ3MpOiBBZGQgbmV3IGZpZWxkIGZvcmNlX21lbS4KCShJTklUX0NVTVVMQVRJVkVfQVJHUyk6IEluaXRpYWxpemUgaXQuCgkoRlVOQ1RJT05fQVJHLCBGVU5DVElPTl9BUkdfQURWQU5DRSk6IEFjdCBvbiBpdC4KCldlZCBBcHIgMTIgMTc6MjA6NDEgTUVUIERTVCAyMDAwICBKYW4gSHViaWNrYSAgPGpoQHN1c2UuY3o+CgoJKiBjYWxscy5jIChleHBhbmRfY2FsbCk6IERvIG5vdCByZXZlcnNlIGFyZ3MgaW4gImVxdWFsIGZyb20iIGZpZWxkLgoJKGVtaXRfbGlicmFyeV9jYWxsX3ZhbHVlXzEpOiBFbWl0X2xpYmNhbGxfYmxvY2sgZm9yIGNvbnN0IGFuZCBwdXJlCglmdW5jdGlvbi4KCldlZCBBcHIgMTIgMTY6MDA6MjUgMjAwMCAgSiJvcm4gUmVubmVja2UgPGFteWxhYXJAY3lnbnVzLmNvLnVrPgoKCSogcmVsb2FkMS5jIChyZWxvYWRfY29tYmluZSk6IERvbid0IGVuYWJsZSBvcHRpbWl6YXRpb24gZm9yIGZpeGVkCglyZWdpc3RlcnMgd2hlbiBlbmNvdW50ZXJpbmcgYSBCQVJSSUVSLgoKV2VkIEFwciAxMiAxNTo1NDoxMSBNRVQgRFNUIDIwMDAgIEphbiBIdWJpY2thICA8amhAc3VzZS5jej4KCgkqIGJ1aWx0aW5zLmMgKGV4cGFuZF9idWlsdGluX21lbWNtcCk6IERvIGV4cGFuc2lvbiBldmVuIHdpdGgKCSFIQVZFX2NtcHN0cnNpLCBkbyBsaWJjYWxsIHdoZW4gZ2VuX3N0cmNtcHNpIGZhaWxzLgoKCSogY2FsbHMuYyAoZXhwYW5kX2NhbGwpOiBEbyBOT19ERUZFUl9QT1AgdW5jb25kaXRpb25hbGx5IG9uY2UKCXN0YWNrIGlzIHByb3Blcmx5IGFsaWduZWQ7IGFkZCBzYW5pdHkgY2hlY2tpbmcgZm9yIGFsaWduZWQKCXN0YWNrIHBvaW50ZXIuCgkoZXhwYW5kX2xpYnJhcnlfY2FsbF92YWx1ZV8xKTogQWRkIHNhbml0eSBjaGVja2luZyBmb3IgYWxpZ25lZAoJc3RhY2sgcG9pbnRlci4KCldlZCBBcHIgMTIgMDc6NTE6NTQgMjAwMCAgQ2F0aGVyaW5lIE1vb3JlICA8Y2xtQGN5Z251cy5jb20+CgoJKiBjYWxscy5jIChlbWl0X2xpYnJhcnlfY2FsbF92YWx1ZV8xKTogQ2hhbmdlIDNyZCBhcmcgdG8KCWxvY2F0ZV9hbmRfcGFkX3Bhcm0gdG8gZGlzcmVnYXJkIHRoZSBzZXR0aW5nIG9mIHBhcnRpYWwuCgpXZWQgQXByIDEyIDA4OjQ3OjM4IDIwMDAgIFJpY2hhcmQgS2VubmVyICA8a2VubmVyQHZsc2kxLnVsdHJhLm55dS5lZHU+CgoJKiB0cmVlLmMgKHVuc2F2ZV9leHByX25vd19yLCB1bnNhZmVfZm9yX3JlZXZhbCk6IFByb3Blcmx5IGRvIFRSRUVfTElTVC4KCgkqIHByaW50LXJ0bC5jIChwcmludF9ydHgpOiBGb3IgQ0FMTF9QTEFDRUhPTERFUiwgb3V0cHV0IHRoZQoJQ0FMTF9JTlNOIGZyb20gdGhlIG5vcm1hbCBjYXNlLgoKRnJpIEFwciAgNyAxMjoyMzowNCBNRVQgRFNUIDIwMDAgIEphbiBIdWJpY2thICA8amhAc3VzZS5jej4KCgkqIGkzODYuYyAoeDg2X3N1Yl9lc3BfNCwgeDg2X3N1Yl9lc3BfOCwgeDg2X2FkZF9lc3BfNCwgeDg2X2FkZF9lc3BfOCk6CglOZXcgZ2xvYmFsIHZhcmlhYmxlcy4KCShpeDg2X2VtaXRfZXBpbG9ndWVfYWRqdXN0bWVudCk6IERvIG5vdCBhdHRlbXB0IHRvIHVzZSBwb3AgZm9yIHRoZQoJYWRqdXN0bWVudC4KCSogaTM4Ni5oICh4ODZfc3ViX2VzcF80LCB4ODZfc3ViX2VzcF84LCB4ODZfYWRkX2VzcF80LCB4ODZfYWRkX2VzcF84KToKCURlY2xhcmUsCgkoVEFSR0VUX1NVQl9FU1BfNCwgVEFSR0VUX1NVQl9FU1BfOCwgVEFSR0VUX0FERF9FU1BfNCwKCSBUQVJHRVRfQUREX0VTUF84KTogTmV3IG1hY3Jvcy4KCSogaTM4Ni5tZDogQWRkIHBlZXAycyB0byBjb252ZXJ0IGVzcCBhZGp1c3RtZW50cyB0byBwdXNoIGFuZCBwb3AKCWluc3RydWN0aW9ucy4KCShwdXNoc2lfcHJvbG9ndWUsIHBvcHNpX2VwaWxvZ3VlKTogTmV3IHBhdHRlcm5zLgoKMjAwMC0wNC0xMiAgSmFrdWIgSmVsaW5layAgPGpha3ViQHJlZGhhdC5jb20+CgoJKiByZWFsLmMgKHRvZTY0KTogUmVtb3ZlIHN0YWxlICNlbmRpZiBmcm9tIHRoZSBsYXN0IGNoYW5nZS4KCjIwMDAtMDQtMTIgIFN0ZXBoZW4gTCBNb3NoaWVyICA8bW9zaGllckBtZWRpYW9uZS5uZXQ+CgoJKiByZWFsLmggKE1BWF9MT05HX0RPVUJMRV9UWVBFX1NJWkUpOiBDb21tZW50LgoJKiByZWFsLmMgKHRvZTY0KTogUmV2ZXJ0IHByZXZpb3VzIGNoYW5nZS4KCjIwMDAtMDQtMTIgIEpha3ViIEplbGluZWsgIDxqYWt1YkByZWRoYXQuY29tPgoKCSogb2JqYy9vYmpjLWFjdC5jOiBJbmNsdWRlIGdnYy5oLgoJKG9iamNfdHJlZV9pbmRleCwgb2JqY19nbG9iYWxfdHJlZXMpOiBDb252ZXJ0IG1vc3Qgb2YgdGhlCglzdGF0aWMgdHJlZSB2YXJpYWJsZXMgaW50byBhIHN0YXRpYyBhcnJheSB3aXRoIHByZXZpb3VzIG5hbWVzCglhcyBkZWZpbmVzLgoJKG9iamNfZWxsaXBzaXNfbm9kZSk6IE5ldyB2YXJpYWJsZS4KCShsYW5nX2luaXQpOiBDYWxsIG9iamNfYWN0X3BhcnNlX2luaXQgYW5kIGNfcGFyc2VfaW5pdC4KCUNyZWF0ZSBvYmpjX2VsbGlwc2lzX25vZGUuCgkoYnVpbGRfc2VsZWN0b3JfdHJhbnNsYXRpb25fdGFibGUpOiBVc2Ugb2JqY19lbGxpcHNpc19ub2RlIGluc3RlYWQKCW9mICh0cmVlKTEuCgkoaGFja19tZXRob2RfcHJvdG90eXBlKTogTGlrZXdpc2UuCgkoZ2V0X2FyZ190eXBlX2xpc3QpOiBMaWtld2lzZS4KCShzdGFydF9tZXRob2RfZGVmKTogTGlrZXdpc2UuCgkoY29udGludWVfbWV0aG9kX2RlZik6IExpa2V3aXNlLgoJKGdlbl9tZXRob2RfZGVjbCk6IExpa2V3aXNlLgoJKGdnY19tYXJrX2ltcF9saXN0KTogTmV3IGZ1bmN0aW9uLgoJKGdnY19tYXJrX2hhc2hfdGFibGUpOiBOZXcgZnVuY3Rpb24uCgkob2JqY19hY3RfcGFyc2VfaW5pdCk6IE5ldyBmdW5jdGlvbi4KCSogb2JqYy9vYmpjLWFjdC5oIChvYmpjX2VsbGlwc2lzX25vZGUpOiBBZGQgZXh0ZXJuIHZhcmlhYmxlLgoJKiBjLXBhcnNlLmluIChjX3BhcnNlX2luaXQpOiBGb3Igb2JqYyBhZGQgcm9vdHMgb2Ygb2JqYyBzcGVjaWZpYwoJbG9jYWwgdHJlZSB2YXJpYWJsZXMuCgkqIG9iamMvb2JqYy1wYXJzZS55OiBSZWJ1aWx0LgoJKiBvYmpjL29iamMtcGFyc2UuYzogUmVidWlsdC4KCShvcHRfcGFybV9saXN0KTogVXNlIG9iamNfZWxsaXBzaXNfbm9kZSBpbnN0ZWFkIG9mICh0cmVlKTEuCgpXZWQgQXByIDEyIDAxOjAwOjQ0IEVEVCAyMDAwICBKb2huIFdlaGxlICAoam9obkBmZWl0aC5jb20pCgoJKiBjc2UuYyAoZGVsZXRlX3RyaXZpYWxseV9kZWFkX2luc25zKTogQWxzbyBkZWxldGUgaW5zbnMKCXRoYXQgY29weSBhIHJlZ2lzdGVyIHRvIGl0c2VsZiB3aGVyZSB0aGUgZGVzdGluYXRpb24gaXMKCWEgc3RyaWN0X2xvd19wYXJ0LgoKMjAwMC0wNC0xMSAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAY3lnbnVzLmNvbT4KCgkqIGZsb3cuYyAoc3RydWN0IHByb3BhZ2F0ZV9ibG9ja19pbmZvKTogQWRkIG5ld19kZWFkLCBuZXdfbGl2ZS4KCShwcm9wYWdhdGVfYmxvY2spOiBJbml0aWFsaXplIHRoZW0uICBVc2UgdGhlbSBpbiBwYXJhbGxlbCBpbnN0ZWFkCglvZiBvbmUgdG1wIHZhcmlhYmxlLCBpZSByZXZlcnQgbXVjaCBvZiB0aGUgMDQwOCBhbmQgMDQwNyBmdW5jdGlvbmFsCgljaGFuZ2VzLCBidXQga2VlcCB0aGUgc3RydWN0dXJhbCBjaGFuZ2VzLgoJKG1hcmtfc2V0X3JlZ3MpOiBUYWtlIG5ld19kZWFkIGZyb20gcHJvcGFnYXRlX2Jsb2NrX2luZm8gaW5zdGVhZC4KCShtYXJrX3NldF8xLCBtYXJrX3NldF9yZWcpOiBMaWtld2lzZS4KCShtYXJrX3VzZWRfcmVncyk6IExpa2V3aXNlIHdpdGggbmV3X2xpdmUuCgkobWFya191c2VkX3JlZyk6IExpa2V3aXNlLiAgUmV2ZXJ0IDA0MDggY2hhbmdlLgoKMjAwMC0wNC0xMSAgTmljayBDbGlmdG9uICA8bmlja2NAY3lnbnVzLmNvbT4KCgkqIGNvbmZpZy9hcm0vYXJtLmg6IChJTkNPTUlOR19SRVRVUk5fQUREUl9SVFgpOiBSZW1vdmUgRHdhcmYyCglyZXN0cmljdGlvbi4KCShEV0FSRl9GUkFNRV9SRVRVUk5fQ09MVU1OKTogUmVtb3ZlIER3YXJmMiByZXN0cmljdGlvbi4KCjIwMDAtMDQtMTEgIEFsZXhhbmRyZSBPbGl2YSAgPG9saXZhQGxzZC5pYy51bmljYW1wLmJyPgoKCSogY29uZmlnL2VsZm9zLmggKFNFTEVDVF9TRUNUSU9OKTogRGVjaWRlIHdoZXRoZXIgdG8gdXNlIGEgZGF0YSBvcgoJY29uc3Qgc2VjdGlvbiB0byBvdXRwdXQgYSBDT05TVFJVQ1RPUiBiYXNlZCBvbiB0aGUgc2FtZSBjb25kaXRpb25zCgl1c2VkIGZvciBWQVJfREVDTHMuCgpUdWUgQXByIDExIDA5OjU1OjU5IDIwMDAgIEplZmZyZXkgQSBMYXcgIChsYXdAY3lnbnVzLmNvbSkKCgkqIHBhL2xvbmctZG91YmxlLmggKEZJWF9UUlVOQ1RGU0kyX0xJQkNBTEwpOiBUd2VhayBmb3IgUEE2NC4KCSogcGEvcGEtcHJvdG9zLmggKG91dHB1dF9jYWxsKTogQWRkIGFkZGl0aW9uYWwgYXJndW1lbnQgaW5kaWNhdGluZwoJaWYgdGhlIGNhbGwgaXMgYSBzaWJsaW5nL3RhaWwgY2FsbC4KCShjb21wdXRlX3pkZXBkaV9vcGVyYW5kcywgb3V0cHV0XzY0Yml0X2FuZCk6IFByb3RvdHlwZSBuZXcgZnVuY3Rpb25zLgoJKGNvbXB1dGVfNjRiaXRfaW9yLCBjbXBpYl9jb21wYXJpc29uX29wZXJhdG9yKTogTGlrZXdpc2UuCgkoZnVuY3Rpb25fYXJnLCBmdW5jdGlvbl9hcmdfcGFydGlhbF9ucmVncyk6IExpa2V3aXNlCgkqIHBhL3BhLmMgKG92ZXJyaWRlX29wdGlvbnMpOiBBbHdheXMgc2V0IGZsYWdfcGljIGZvciBUQVJHRVRfNjRCSVQuCgkoZW1pdF9tb3ZlX3NlcXVlbmNlKTogWmVybyBleHRlbmQgY2VydGFpbiBjb25zdGFudHMgYXMgbmVlZGVkCglmb3IgVEFSR0VUXzY0QklULgoJKGNvbXB1dGVfemRlcGRpX29wZXJhbmRzLCBvdXRwdXRfNjRiaXRfYW5kKTogTmV3IGZ1bmN0aW9ucy4KCShvdXRwdXRfNjRiaXRfaW9yLCBmdW5jdGlvbl9hcmcpOiBMaWtld2lzZS4KCShjbXBpYl9jb21wYXJpc29uX29wZXJhdG9yLCBmdW5jdGlvbl9hcmdfcGFydGlhbF9ucmVncyk6IExpa2V3aXNlLgoJKGNvbXB1dGVfZnJhbWVfc2l6ZSwgaHBwYV9leHBhbmRfcHJvbG9ndWUpOiBIYW5kbGUgVEFSR0VUXzY0QklULgoJKGhwcGFfZXhwYW5kX2VwaWxvZ3VlLCByZXR1cm5fYWRkcl9ydHgsIGhwcGFfdmFfYXJnKTogTGlrZXdpc2UuCgkoaHBwYV9idWlsdGluX3NhdmVyZWdzLCBvdXRwdXRfY2JyYW5jaCwgb3V0cHV0X2JiKTogTGlrZXdpc2UuCgkob3V0cHV0X2J2Yik6IExpa2V3aXNlLgoJKG91dHB1dF9taWxsaWNvZGVfY2FsbCk6IFJldHVybiBwb2ludGVyIGlzIGluICVyMiBmb3IgVEFSR0VUXzY0QklULgoJKG91dHB1dF9jYWxsKTogTmV3IGFyZ3VtZW50ICdzaWJjYWxsJy4gIEdlbmVyYXRlIHNpYmNhbGwgc2VxdWVuY2VzCglhcyBuZWVkZWQuCgkocHJpbnRfb3BlcmFuZCk7IEhhbmRsZSBjYXNlcyAnUScsICdwJywgYW5kICd6JyBmb3IgVEFSR0VUXzY0QklULiAgRm9yCgkob3VwdXRfYXJnX2Rlc2NyaXB0b3IpOiBEbyBub3QgZW1pdCBhcmd1bWVudCBkZXNjcmlwdG9ycyBmb3IKCVRBUkdFVF82NEJJVC4KCSogcGEvcGEuaCAoVEFSR0VUX1BBXzExLCBUQVJHRVRfUEFfMjApOiBPbmx5IGRlZmluZSBpZiBub3QgYWxyZWFkeQoJZGVmaW5lZC4KCShUQVJHRVRfNjRCSVQsIFBST01PVEVfRlVOQ1RJT05fUkVUVVJOKTogRGVmaW5lLgoJKEZVTkNUSU9OX09LX0ZPUl9TSUJBTEwpOiBEZWZpbmUuCgkoQ1BQX1BBMTBfU1BFQywgQ1BQX1BBMTFfU1BFQywgQ1BQX1BBMjBfU1BFQyk6IERlZmluZS4KCShDUFBfQ1BVX0RFRkFVTFRfU1BFQywgU1VCVEFSR0VUX0VYVFJBX1NQRUNTLCBFWFRSQV9TUEVDUyk6IExpa2V3aXNlLgoJKENQUF9TUEVDKTogVXNlIG5ldyBzcGVjIGluZnJhc3RydWN0dXJlLgoJKEJJVFNfUEVSX1dPUkQsIFVOSVRTX1BFUl9XT1JEKTogSGFuZGxlIFRBUkdFVF82NEJJVC4KCShTVEFDS19CT1VOREFSWSwgRlVOQ1RJT05fQk9VTkRBUlksIFBJQ19PRkZTRVRfVEFCTEVfUkVHTlVNKTogTGlrZXdpc2UuCgkoUkVUVVJOX0lOX01FTU9SWSwgRVhUUkFfQ09OU1RSQUlOVCwgRklSU1RfUEFSTV9PRkZTRVQpOiBMaWtld2lzZS4KCShSRUdfUEFSTV9TVEFDS19TUEFDRSwgU1RBQ0tfUE9JTlRFUl9PRkZTRVQpOiBMaWtld2lzZS4KCShTVEFDS19EWU5BTUlDX09GRlNFVCwgRlVOQ1RJT05fVkFMVUUpOiBMaWtld2lzZS4KCShGVU5DVElPTl9BUkdfUEFTU19CWV9SRUZFUkVOQ0UsIEZVTkNUSU9OX0FSR19DQUxMRUVfQ09QSUVTKTogTGlrZXdpc2UuCgkoVFJBTVBPTElORV9URU1QTEFURSwgVFJBTVBPTElORV9TSVpFKTogTGlrZXdpc2UuCgkoSU5JVElBTElaRV9UUkFNUE9MSU5FLCBMRUdJVElNQVRFX0NPTlNUQU5UX1ApOiBMaWtld2lzZS4KCShDT05TVF9PS19GT1JfTEVUVEVSX1AsIE1PVkVfUkFUSU8pOiBMaWtld2lzZS4KCShGVU5DVElPTl9BUkcpOyBDYWxsIG91dCB0byBDIGNvZGUuCgkoRlVOQ1RJT05fQVJHX1BBUlRJQUxfTlJFR1MpOiBMaWtld2lzZS4KCShNQVhfQklUU19QRVJfV09SRCwgTUFYX0xPTkdfVFlQRV9TSVpFLCBNQVhfV0NIQVJfVFlQRV9TSVpFKTogRGVmaW5lLgoJKE1JTl9VTklUU19QRVJfV09SRCk6IExpa2V3aXNlLgoJKiBwYS9wYS5tZCAoY21wZGkpOiBOZXcgZXhwYW5kZXIuCgkoc2NjIHBhdHRlcm5zLCBtb3ZzdHJzaSk6IE5vdCBhdmFpbGFibGUgZm9yIFRBUkdFVF82NEJJVC4KCSg2NGJpdCBjb25kaXRpb25hbCBhcml0aG1ldGljKTogTmV3IHBhdHRlcm5zLgoJKGFic2RpMiwgc21pbmRpMywgdW1pbmRpMywgc21heGRpMywgdW1heGRpMyk6IE5ldyBwYXR0ZXJucy4KCShtb3ZzaWNjKTogTm90IGF2YWlsYWJsZSBpZiBtb2RlcyBvbiBhbGwgdGhlIG9wZXJhbmRzIHRvIG5vdCBtYXRjaC4KCShtb3ZkaWNjKTogTmV3IGV4cGFuZGVyIGFuZCBhc3NvY2lhdGVkIHBhdHRlcm5zLgoJKDY0Yml0IGJyYW5jaGVzKTogTmV3IHBhdHRlcm5zLgoJKHByZV9sb2FkLCBwb3N0X3N0b3JlKTogR2VuZXJhdGUgYXBwcm9wcmlhdGUgY29kZSBmb3IgVEFSR0VUXzY0QklULgoJKHByZV9sZGQsIHBvc3Rfc3RkKTogTmV3IHBhdHRlcm5zLgoJKDY0Yml0IGFkZGlsLCBsb2FkIGxvdyBwYXJ0KTogTmV3IHBhdHRlcm5zLgoJKHNwZWNpYWwgbW92c2YgY29uc3RhbnQpOiBOb3QgYXZhaWxhYmxlIGZvciBUQVJHRVRfNjRCSVQuCgkobW92c2YsIG1vdmRmIGV4cGFuZGVycyk6IEZvcmNlIGNvbnN0YW50cyBpbnRvIG1lbW9yeS4KCSgzMmJpdCBtb3ZkZi9tb3ZkaSBwYXR0ZXJucyk6IERpc2FibGUgZm9yIFRBUkdFVF82NEJJVC4KCSg2NGJpdCBtb3ZkZi9tb3ZkaSBwYXR0ZXJucyk6IE5ldyBwYXR0ZXJucy4KCSh6ZXJvX2V4dGVuZHFpZGkyLCB6ZXJvX2V4dGVuZGhpZGkyLCB6ZXJvX2V4dGVuZHNpZGkyKTogTmV3IHBhdHRlcm5zCglmb3IgVEFSR0VUXzY0QklULgoJKGV4dGVuZHFpZGkyLCBleHRlbmRoaWRpMiwgZXh0ZW5kc2lkaTIpOiBTaW1pbGFybHkuCgkoYWRkZGkzIGV4cGFuZGVyKTogQWxsb3cgImFyaXRoX29wZXJhbmQiIGZvciBzZWNvbmQgaW5wdXQuCgkoMzJiaXQgYWRkZGkzLCBzdWJkaTMsIHVhZGRjbSk6IERpc2FibGUgZm9yIFRBUkdFVF82NEJJVC4KCSg2NGJpdCBhZGRkaTMsIHN1YnNpMywgdWFkZGNtKTogTmV3IHBhdHRlcm5zIGZvciBUQVJHRVRfNjRCSVQuCgkobXVsc2kzIGV4cGFuZGVyKTogUmV2YW1wIHNsaWdodGx5IHNvIGl0IHN1cHBvcnRzIFRBUkdFVF82NEJJVCB0b28uCgkobXVsZGkzKTogTmV3IGV4cGFuZGVyIGZvciBUQVJHRVRfNjRCSVQuCgkoZGl2c2kzLCB1ZGl2c2kzLCBtb2RzaTMsIHVtb2RzaTMpOiBGb3VydGggb3BlcmFuZCBtdXN0IGJlIChyZWc6U0kgMikKCWZvciBUQVJHRVRfNjRCSVQuCgkoMzJiaXQgYW5kZGkzLCBpb3JkaTMsIHhvcmRpMywgYW5kY20sIG5lZ2RpMiwgdWFkZGNtKTogRGlzYWJsZQoJcGF0dGVybnMgZm9yIFRBUkdFVF82NEJJVC4KCSg2NGJpdCBhbmRkaTMsIGlvcmRpMywgeG9yZGkzLCBhbmRjbSwgbmVnZGkyLCB1YWRkY20sIHNoYWRkKTogTmV3CglwYXR0ZXJucyBmb3IgVEFSR0VUXzY0QklULgoJKDY0Yml0IGJpdCBpbnNlcnRpb24vZXh0cmFjdGlvbnMpOiBOZXcgcGF0dGVybnMgZm9yIFRBUkdFVF82NEJJVC4KCSg2NGJpdCBzaGlmdHMvcm90YXRlcyk6IE5ldyBwYXR0ZXJucy9leHBhbmRlcnMgZm9yIFRBUkdFVF82NEJJVC4KCShzaWJjYWxsX2VwaWxvZ3VlKTogTmV3IGV4cGFuZGVyLgoJKGNhc2VzaSk6IFR3ZWFrIGZvciBUQVJHRVRfNjRCSVQuCgkoY2FsbCBleHBhbmRlcnMpOiBTZXQgJiB1c2UgdGhlIG91dGdvaW5nIGFyZ3VtZW50IHBvaW50ZXIuICBVc2UgdGhlCgk2NGJpdCBjYWxsIHBhdHRlcm5zIGFzIG5lZWRlZC4gQWRkIGFkZGl0aW9uYWwgYXJnIHRvIG91dHB1dF9jYWxsLgoJKGNhbGxfaW50ZXJuYWxfcmVnXzY0Yml0LCBjYWxsX3ZhbHVlX2ludGVybmFsX3JlZ182NGJpdCk6IE5ldyBwYXR0ZXJuLgoJKHNpYmNhbGwsIHNpYmNhbGxfaW50ZXJuYWxfc3ltcmVmKTogTmV3IGV4cGFuZGVycy4KCShzaWJjYWxsX3ZhbHVlLCBzaWJjYWxsX3ZhbHVlX2ludGVybmFsX3N5bXJlZgoJKGludGVyc3BhY2VfanVtcCk6IFR1cm4gaW50byBhbiBleHBhbmRlciArIG1hdGNoaW5nIHBhdHRlcm5zLgoJKGNhbm9uaWNhbGl6ZV9mdW5jcHRyX2Zvcl9jb21wYXJlKTogTm90IG5lZWRlZCBmb3IgVEFSR0VUXzY0QklULgoJKiBwYS9wYTY0LXJlZ3MuaDogRWxpbWluYXRlIHRyaWdyYXBoIHNlcXVlbmNlcy4KCSogcGEvcGE2NC1zdGFydC5oIChUQVJHRVRfUEFfMjApOiBGaXggdHlwby4KCjIwMDAtMDQtMTEgIFphY2sgV2VpbmJlcmcgIDx6YWNrQHdvbGVyeS5jdW1iLm9yZz4KCgkqIGNwcGV4cC5jLCBjcHBoYXNoLmMsIGNwcGhhc2guaCwgY3BwbGV4LmMsIGNwcGxpYi5jLAoJY3BwbGliLmgsIGNwcG1haW4uYywgZml4LWhlYWRlci5jLCBzY2FuLWRlY2xzLmM6IFJlcGxhY2UKCWNwcF90b2tlbiB3aXRoIGNwcF90dHlwZSBldmVyeXdoZXJlLgoJKiBjcHBlcnJvci5jLCBjcHBoYXNoLmMsIGNwcGxleC5jLCBjcHBsaWIuYywgc2Nhbi1kZWNscy5jOgoJUmVwbGFjZSBjcHBfYnVmX2xpbmVfYW5kX2NvbCB3aXRoIENQUF9CVUZfTElORSBhbmQvb3IKCUNQUF9CVUZfQ09MLiAgTGluZSBhbmQgY29sdW1uIG51bWJlcnMgYXJlIHVuc2lnbmVkIGludCwgbm90Cglsb25nLgoJKiBjcHBsZXguYyAoY3BwX2J1Zl9saW5lX2FuZF9jb2wpOiBEZWxldGUuCgkqIGNwcGxpYi5oIChzdHJ1Y3QgY3BwX2J1ZmZlciwgc3RydWN0IGNwcF9yZWFkZXIpOiBDaGFuZ2UKCSdsb25nIGxpbmVubycgdG8gJ3Vuc2lnbmVkIGludCBsaW5lbm8nLgoJKENQUF9CVUZfTElORSwgQ1BQX0JVRl9DT0wpOiBOZXcgbWFjcm9zLgoKMjAwMC0wNC0xMSAgTWFydGluIHYuIEz2d2lzICA8bG9ld2lzQGluZm9ybWF0aWsuaHUtYmVybGluLmRlPgoKCSogZXh0ZW5kLnRleGk6IElTTyBDOTkgaXMgbm90IGEgZHJhZnQgYW55bW9yZS4KCSogaW52b2tlLnRleGk6IElTTyBDKysgaXMgbm90IGEgZHJhZnQgYW55bW9yZS4KCSogY3BwLnRleGk6IF9fY3BsdXNwbHVzIGlzIHJlcXVpcmVkIGJ5IHRoZSBJU08gc3RhbmRhcmQuCgoJKiBleHRlbmQudGV4aSAoLWZ0aGlzLWlzLXZhcmlhYmxlKTogVW5kb2N1bWVudC4KCSogZmxhZ3MuaCAod2Fybl90ZW1wbGF0ZV9kZWJ1Z2dpbmcpOiBSZW1vdmUgZGVjbGFyYXRpb24uCgkqIGdjYy4xICgtZmFsbC12aXJ0dWFsLCAtZmVudW0taW50LWVxdWl2LCAtZnRoaXMtaXMtdmFyaWFibGUsCgktV2VudW0tY2xhc2gsIC1XdGVtcGxhdGUtZGVidWdnaW5nKTogVW5kb2N1bWVudC4KCjIwMDAtMDQtMTAgIE5pY2sgQ2xpZnRvbiAgPG5pY2tjQGN5Z251cy5jb20+CgoJKiBjb25maWcvYXJtL2FybS5oIChIT1NUX0lOVCk6IE5ldyBtYWNybzogRGVjbGFyZSBhIEhPU1RfV0lERV9JTlQKCWludGVnZXIuCgkoSE9TVF9VSU5UKTogTmV3IG1hY3JvOiBEZWNsYXJlIGFuIHVuc2lnbmVkIEhPU1RfV0lERV9JTlQKCWludGVnZXIuCgkoQVJNX1NJR05fRVhURU5EKTogVXNlIEhPU1RfVUlOVC4KCShTVFJJUF9OQU1FX0VOQ09ESU5HKTogUHJldmVudCB3YXJuaW5ncyBhYm91dCByZWRlZmluaXRpb25zLgoJKEFTTV9PVVRQVVRfTEFCRUxSRUYpOiBQcmV2ZW50IHdhcm5pbmdzIGFib3V0IHJlZGVmaW5pdGlvbnMuCgkoSU5DT01JTkdfUkVUVVJOX0FERFJfUlRYKTogT25seSBkZWZpbmUgaWYgRHdhcmYyIGlzIHN1cHBvcnRlZC4KCShEV0FSRl9GUkFNRV9SRVRVUk5fQ09MVU1OKTogT25seSBkZWZpbmUgaWYgRHdhcmYyIGlzIHN1cHBvcnRlZC4KCgkqIGNvbmZpZy9hcm0vYXJtLmM6IChjb25zdF9va19mb3JfYXJtKTogVXNlIEhPU1RfVUlOVC4KCShhcm1fZ2VuX2NvbnN0YW50KTogVXNlIEhPU1RfVUlOVC4KCShhcm1fY2Fub25pY2FsaXplX2NvbnN0YW50KTogVXNlIEhPU1RfVUlOVC4KCShhcm1fcmVsb2FkX2luX2hpKTogVXNlIEhPU1RfVUlOVC4KCShhcm1fcmVsb2FkX291dF9oaSk6IFVzZSBIT1NUX1VJTlQuCgkob3V0cHV0X211bHRpX2ltbWVkaWF0ZSk6IFVzZSBIT1NUX1VJTlQuCgkoaW50X2xvZzIpOiBVc2UgSE9TVF9VSU5ULgoJKGFybV9wb2tlX2Z1bmN0aW9uX25hbWUpOiBVc2UgSE9TVF9VSU5ULgoJKGFybV9vdXRwdXRfZXBpbG9ndWUpOiBVc2UgYXJtX3ZvbGF0aWxlX2Z1bmMoKS4KCShvdXRwdXRfdGh1bWJfcHJvbG9ndWUpOiBVc2UgYXJtX3N0cmlwX25hbWVfZW5jb2RpbmcoKS4KCk1vbiBBcHIgMTAgMTU6NDA6NTkgMjAwMCAgUmljaGFyZCBLZW5uZXIgIDxrZW5uZXJAdmxzaTEudWx0cmEubnl1LmVkdT4KCgkqIHNiaXRtYXAuYyAoc2JpdG1hcF9hX3N1YnNldF9iX3ApOiBSZXdvcmsgbG9vcCB0byBhdm9pZCBwb3RlbnRpYWwKCW9mIHNlcXVlbmNlIHBvaW50IHByb2JsZW1zLgoKMjAwMC0wNC0xMCAgTmF0aGFuIFNpZHdlbGwgIDxuYXRoYW5AY29kZXNvdXJjZXJ5LmNvbT4KCgkqIHJ0bC5kZWYgKEFTSElGVCwgUk9UQVRFLCBBU0hJRlRSVCwgTFNISUZUUlQsIFJPVEFURVJUKToKCVJlY29tbWVudC4KCSogdHJlZS5kZWYgKExTSElGVF9FWFBSLCBSU0hJRlRfRVhQUik6IFJlY29tbWVudC4KCk1vbiBBcHIgMTAgMDc6MjE6MTMgMjAwMCAgUmljaGFyZCBLZW5uZXIgIDxrZW5uZXJAdmxzaTEudWx0cmEubnl1LmVkdT4KCgkqIHNiaXRtYXAuaDogV2hpdGVzcGFjZSBjaGFuZ2VzIGFuZCB1c2UgdXBwZXItY2FzZSBtYWNybyBhcmdzLgoJKHN0cnVjdCBzaW1wbGVfYml0bWFwX2RlZik6IEFsbCBzaXplcyBub3cgdW5zaWduZWQuCgkoRVhFQ1VURV9JRl9TRVRfSU5fU0JJVE1BUCk6IEludGVybmFsIHZhcnMgbm93IF9YIGluc3RlYWQgb2YgWF8uCgkqIHNiaXRtYXAuYyAoc2JpdG1hcF9hbGxvYyk6IE5fRUxNUyBub3cgdW5zaWduZWQ7IGFsc28gbG9jYWwgdmFycy4KCShzYml0bWFwX3ZlY3Rvcl9hbGxvYyk6IFBhcm1zIGFuZCBsb2NhbCB2YXJzIG5vdyB1bnNpZ25lZC4KCShzYml0bWFwX3plcm8pOiBDYXN0IGJ6ZXJvIGFyZyB0byBQVFIuCgkoc2JpdG1hcF92ZWN0b3JfemVybywgc2JpdG1hcF92ZWN0b3Jfb25lKTogUGFybSBhbmQgTG9jYWwgdmFyIHVuc2lnbmVkLgoJKHNiaXRtYXBfdW5pb25fb2ZfZGlmZnMpOiBDaGFuZ2UgbG9vcCBpbmRleCB0byB1bnNpZ25lZCBhbmQgcmV3b3JrCglsb29wIHRvIG1ha2Ugc3RydWN0dXJlIGNsZWFyZXIuCgkoc2JpdG1hcF9ub3QsIHNiaXRtYXBfZGlmZmVyZW5jZSwgc2JpdG1hcF9hX2FuZF9iKTogTGlrZXdpc2UuCgkoc2JpdG1hcF9hX29yX2IsIHNiaXRtYXBfYV9zdWJzZXRfYl9wLCBzYml0bWFwX2Ffb3JfYl9hbmRfYyk6IExpa2V3aXNlLgoJKHNiaXRtYXBfYV9hbmRfYl9vcl9jKTogTGlrZXdpc2UuCgkoc2JpdG1hcF9pbnRlcnNlY3Rpb25fb2Zfc3VjY3MpOiBNaW5vciBjbGVhbnVwcy4KCShzYml0bWFwX2ludGVyc2VjdGlvbl9vZl9wcmVkcywgc2JpdG1hcF91bmlvbl9vZl9zdWNjcyk6IExpa2V3aXNlLgoJKHNiaXRtYXBfdW5pb25fb2ZfcHJlZHMpOiBMaWtld2lzZS4KCShzYml0bWFwX2ZpcnN0X3NldF9iaXQsIGR1bXBfc2JpdG1hcCk6IExvY2FsIHZhcmlhYmxlcyBub3cgdW5zaWduZWQuCgkoZGVidWdfc2JpdG1hcCk6IE5ldyBmdW5jdGlvbi4KCgkqIGMtY29udmVydC5jIChjb252ZXJ0KTogSGFuZGxlIFJFRkVSRU5DRV9UWVBFIGxpa2UgUE9JTlRFUl9UWVBFLgoJKiBjLXR5cGVjay5jIChjb252ZXJ0X2Zvcl9hc3NpZ25tZW50KTogTGlrZXdpc2UuCgoJKiBleHBtZWQuYyAoaW5pdF9leHBtZWQpOiBEb24ndCBmcmVlIG9iamVjdHMgd2UgbWFrZS4KCSogZW1pdC1ydGwuYyAoZ2VuX3J0eF9DT05TVF9JTlQsIGluaXRfZW1pdF9vbmNlKTogTWlub3IgY2xlYW51cHMuCgoJKiBleHByLmMgKGdldF9pbm5lcl9yZWZlcmVuY2UpOiBDb3JyZWN0IHNvbWUgV0lUSF9SRUNPUkRfRVhQUiBjYXNlcy4KCShleHBhbmRfZXhwciwgY2FzZSBDT05WRVJUX0VYUFIpOiBQYXNzIHByb3BlciBhbGlnbm1lbnQgdG8gc3RvcmVfZmllbGQuCgoJKiBnY3NlLmMgKGV4cHJfaGFzaF90YWJsZV9zaXplKTogTm93IHVuc2lnbmVkLgoJKGNvbXB1dGVfYWVfZ2VuKTogTG9jYWwgdmFyaWFibGUgYGknIG5vdyB1bnNpZ25lZC4KCShjb21wdXRlX2FlX2tpbGwsIHByZV9pbnNlcnRfY29waWVzLCBwcmVfZGVsZXRlLCBwcmVfZ2NzZSk6IExpa2V3aXNlLgoJKGNvbXB1dGVfdHJhbnNvdXQsIGhvaXN0X2NvZGUpOiBMaWtld2lzZS4KCShjb21wdXRlX2xvY2FsX3Byb3BlcnRpZXMpOiBMaWtld2lzZSwgYWxzbyBoYXNoX3RhYmxlX3NpemUuCgkoYWxsb2NfZXhwcl9oYXNoX3RhYmxlKTogTl9JTlNOUyBub3cgdW5zaWduZWQuCgkoZGVsZXRlX251bGxfcG9pbnRlcl9jaGVja3MpOiBNYXJrIGFyZyBGIGFzIHVudXNlZC4KCgkqIHJlZ3JlbmFtZS5jOiBNaW5vciBjbGVhbnVwcywgaW5jbHVkaW5nIGNoYW5nIHNvbWUgdmFyaWFibGVzCgl0byB1bnNpZ25lZCBpbnQuCgoyMDAwLTA0LTEwICBOZWlsIEJvb3RoICA8TmVpbEJAZWFydGhsaW5nLm5ldD4KCgkqIGNwcGxleC5jIChza2lwX2Jsb2NrX2NvbW1lbnQpOiBVc2UgcG9pbnRlciBhcml0aG1ldGljIHJhdGhlcgoJdGhhbiBHRVRDICgpLgoJKiBjcHBoYXNoLmg6IChDUFBfQlVNUF9CVUZGRVJfTElORV9DVVIsIENQUF9CVU1QX0xJTkVfQ1VSKTogTmV3LgoKMjAwMC0wNC0xMCAgTWFydGluIHYuIEz2d2lzICA8bG9ld2lzQGluZm9ybWF0aWsuaHUtYmVybGluLmRlPgoKCSogaW52b2tlLnRleGkgKC1mbm8tZ251LWtleXdvcmRzKTogUmVtb3ZlIGNsYXNzb2YsIGhlYWRvZiwKCV9fY2xhc3NvZl9fLCBhbmQgX19oZWFkb2ZfXyBmcm9tIHRoZSBsaXN0IG9mIGdudSBrZXl3b3Jkcy4KCSgtYW5zaSk6IFJlbW92ZSAtZm9wZXJhdG9yLW5hbWVzIGZyb20gbGlzdCBvZiBpbXBsaWVkIG9wdGlvbnMuCglEbyBub3QgY2FsbCBpdCBBTlNJIEMrKy4KCSgtZm9wZXJhdG9yLW5hbWVzKTogRG9jdW1lbnQgYXMgLWZuby1vcGVyYXRvci1uYW1lcy4KCjIwMDAtMDQtMDkgIFphY2sgV2VpbmJlcmcgIDx6YWNrQHdvbGVyeS5jdW1iLm9yZz4KCgkqIGNwcGhhc2guYyAodGltZXN0YW1wKTogRGVsZXRlLgoJKGRlbF9IQVNITk9ERSk6IElmIHR5cGUgaXMgVF9NQ09OU1QsIGZyZWUgdmFsdWUuY3B2YWwuCgkoc3BlY2lhbF9zeW1ib2wpOiBSZW1vdmUgdW5uZWNlc3NhcnkgYnJhY2VzLiAgUmVtb3ZlCglUX1ZFUlNJT04uICBUcmVhdCBUX1NUREMgbGlrZSBUX0NPTlNUIHVubGVzcwoJU1REQ18wX0lOX1NZU1RFTV9IRUFERVJTLiAgUmVuZGVyIGJvdGggX19EQVRFX18gYW5kIF9fVElNRV9fCgl3aGVuIG9uZSBpcyBlbmNvdW50ZXJlZCwgdGhlbiBjb252ZXJ0IHRoZW0gaW50byBUX01DT05TVAoJbm9kZXMuCgkqIGNwcGluaXQuYyAoYnVpbHRpbl9hcnJheSk6IHZlcnNpb25fc3RyaW5nIGlzIFRfTUNPTlNULgoJX19TVERDX18gaGFzIGEgIjEiIGluIGl0cyBjcHZhbC4gIERvbid0IGhhdmUgYSB0ZXJtaW5hdG9yCgllbnRyeS4gIENsZWFuIHVwIHdoaWNoIGVudHJpZXMgYXJlIGR1bXBlZC4KCShpbml0aWFsaXplX2J1aWx0aW5zKTogT25seSBfX1NURENfXyBnZXRzIHRoZSBzcGVjaWFsCgktdHJhZGl0aW9uYWwgdHJlYXRtZW50LiAgQ291bnQgdGhlIGxlbmd0aCBvZiBidWlsdGluX2FycmF5LgoJUmVuZGVyIHZlcnNpb25fc3RyaW5nIGhlcmUuCgkqIGNwcGhhc2guaDogUmVtb3ZlIFRfVkVSU0lPTi4gIEFkZCBUX01DT05TVC4KCSogY3BwbGliLmggKHN0cnVjdCBjcHBfcmVhZGVyKTogUmVtb3ZlIHRpbWVidWYuCgoyMDAwLTA0LTA5ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEBjeWdudXMuY29tPgoKCSogZ2VucmVjb2cuYyAocHJlZCk6IFVwZGF0ZSBjb21wYXJpc29uX29wZXJhdG9yIGZvciB0aGUgdW5vcmRlcmVkCglvcGVyYXRvcnMuCgoJKiBjb25maWcvaTM4Ni9pMzg2LmMgKG5vX2NvbXBhcmlzb25fb3BlcmF0b3IpOiBEaXNhbGxvdyB1bm9yZGVyZWQKCW9wZXJhdG9ycy4KCShmY21vdl9jb21wYXJpc29uX29wZXJhdG9yKTogQWxsb3cgVU5PUkRFUkVEL09SREVSRUQuCgkodW5vX2NvbXBhcmlzb25fb3BlcmF0b3IpOiBOZXcuCgkocHV0X2NvbmRpdGlvbl9jb2RlKTogSGFuZGxlIFVOT1JERVJFRC9PUkRFUkVELgoJKHVuc2lnbmVkX2NvbXBhcmlzb24pOiBMaWtld2lzZS4KCShpeDg2X2ZwX2NvbXBhcmVfbW9kZSk6IEJyb2tlbiBvdXQgb2YgaXg4Nl9leHBhbmRfZnBfY29tcGFyZS4KCShpeDg2X3VzZV9mY29taV9jb21wYXJlLCBpeDg2X3ByZXBhcmVfZnBfY29tcGFyZV9hcmdzKTogTGlrZXdpc2UuCgkoaXg4Nl9leHBhbmRfZnBfY29tcGFyZSk6IFVzZSB0aGVtLiAgVGFrZSBzY3JhdGNoIGFzIGFyZ3VtZW50LAoJdXBkYXRlIGFsbCBjYWxsZXJzLiAgSGFuZGxlIGFsbCA4IHVub3JkZXJlZCBvcGVyYXRvcnMuCgkoaXg4Nl9leHBhbmRfc2V0Y2MpOiBMb3NlIHRoZSB1bm9yZGVyZWQgYXJndW1lbnQsIHVwZGF0ZSBhbGwgY2FsbGVycy4KCShpeDg2X2V4cGFuZF9icmFuY2gpOiBMaWtld2lzZS4gIERvbid0IGZ1bGx5IGV4cGFuZCBmcCBicmFuY2hlcy4KCSogY29uZmlnL2kzODYvaTM4Ni5oIChQUkVESUNBVEVfQ09ERVMpOiBVcGRhdGUuCgkqIGNvbmZpZy9pMzg2L2kzODYtcHJvdG9zLmggKGl4ODZfZXhwYW5kX2ZwX2NvbXBhcmUpOiBEZWNsYXJlLgoJKGl4ODZfZXhwYW5kX2JyYW5jaCwgaXg4Nl9leHBhbmRfc2V0Y2MpOiBVcGRhdGUuCgkqIGNvbmZpZy9pMzg2L2kzODYubWQgKHN1bm9yZGVyZWQsIHNvcmRlcmVkKTogTmV3LgoJKHN1bmVxLCBzdW5nZSwgc3VuZ3QsIHN1bmxlLCBzdW5sdCwgc2x0Z3QpOiBOZXcuCgkoYnVub3JkZXJlZCwgYm9yZGVyZWQpOiBOZXcuCgkoYnVuZXEsIGJ1bmdlLCBidW5ndCwgYnVubGUsIGJ1bmx0LCBibHRndCk6IE5ldy4KCSgqZnBfamNjXzEsICpmcF9qY2NfMiwgKmZwX2pjY18zLCAqZnBfamNjXzQpOiBOZXcuCgkoKmZwX2pjY181LCAqZnBfamNjXzYsIGFuZCBzcGxpdHRlcnMpOiBOZXcuCgoyMDAwLTA0LTA5ICBQaGlsaXAgQmx1bmRlbGwgIDxwaGlsYkBnbnUub3JnPgoKCSogY29uZmlnL2FybS9hcm0uaCAoQVJNX05BTUVfRU5DT0RJTkdfTEVOR1RIUyk6IFN0cmlwIGAqJyB0b28uCgpTdW4gQXByICA5IDE1OjE2OjE0IEVEVCAyMDAwICBKb2huIFdlaGxlICAoam9obkBmZWl0aC5jb20pCgoJKiBpMzg2Lm1kIChmaXhfdHJ1bmNzZmhpMiwgZml4X3RydW5jZGZoaTIsCglmaXhfdHJ1bmN4ZmhpMik6IE5ldyBwYXR0ZXJucy4KCSogaTM4Ni5jIChvdXRwdXRfZml4X3RydW5jKTogSGFuZGxlIGNvbnZlcnRpbmcgdG8gSEltb2RlLgoKMjAwMC0wNC0wOCAgQWxleCBTYW11ZWwgIDxzYW11ZWxAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIHNzYS5jIChjb252ZXJ0X3RvX3NzYSk6IEVsaW1pbmF0ZSBkZWFkIGNvZGUgd2hlbiBjYWxsaW5nCglsaWZlX2FuYWx5c2lzLgoJKGNvbnZlcnRfZnJvbV9zc2EpOiBDYWxsIGNvbXB1dGVfYmJfZm9yX2luc24gYmVmb3JlIGxpZmVfYW5hbHlzaXMuCgkoZm9yX2VhY2hfc3VjY2Vzc29yX3BoaSk6IENoYW5nZSBwYXJhbWV0ZXIgdG8gYmFzaWNfYmxvY2suCgkoY29hbGVzY2VfcmVnc19pbl9zdWNjZXNzb3JfcGhpX25vZGVzKTogTGlrZXdpc2UuCgkoY29hbGVzY2VfcmVnc19pbl9jb3BpZXMpOiBMaWtld2lzZS4KCShjb21wdXRlX2NvYWxlc2NlZF9yZWdfcGFydGl0aW9uKTogVXNlIGJhc2ljX2Jsb2NrIGluc3RlYWQgb2YgaW5kZXguCgkqIHJ0bC5oIChjb252ZXJ0X3RvX3NzYSk6IERlbGV0ZS4KCShjb252ZXJ0X2Zyb21fc3NhKTogTGlrZXdpc2UuCgkoc3VjY2Vzc29yX3BoaV9mbik6IExpa2V3aXNlLgoJKGZvcl9lYWNoX3N1Y2Nlc3Nvcl9waGkpOiBMaWtld2lzZS4KCShpbl9zc2FfZm9ybSk6IExpa2V3aXNlLgoJKiBiYXNpYy1ibG9jay5oIChjb252ZXJ0X3RvX3NzYSk6IE1vdmVkIGZyb20gcnRsLmguCgkoY29udmVydF9mcm9tX3NzYSk6IExpa2V3aXNlLgoJKHN1Y2Nlc3Nvcl9waGlfZm4pOiBMaWtld2lzZS4KCShpbl9zc2FfZm9ybSk6IExpa2V3aXNlLgoJKGZvcl9lYWNoX3N1Y2Nlc3Nvcl9waGkpOiBMaWtld2lzZS4gIENoYW5nZSBwYXJhbWV0ZXIgdG8gYmFzaWNfYmxvY2suCgkqIGZsb3cuYyAoY2FsY3VsYXRlX2dsb2JhbF9yZWdzX2xpdmUpOiBQYXNzIGEgYmFzaWNfYmxvY2sgdG8KCWZvcl9lYWNoX3N1Y2Nlc3Nvcl9waGkuCgoyMDAwLTA0LTA4ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEBjeWdudXMuY29tPgoKCSogZmxvdy5jIChtYXJrX3VzZWRfcmVnKTogVXNlIHJlZ19zZXRfcCB0byBkZXRlcm1pbmUgaWYgYSByZWdpc3RlcgoJd2FzIG1vZGlmaWVkIGluIHRoZSBjdXJyZW50IGluc24uCgoyMDAwLTA0LTA4ICBSaWNoYXJkIEVhcm5zaGF3IChyZWFybnNoYUBhcm0uY29tKQoKCSogYXJtL3RodW1iLm1kOiBEZWxldGUuCgkqIGFybS90aHVtYi1wcm90b3MuaDogRGVsZXRlLgoKMjAwMC0wNC0wOCAgUmljaGFyZCBFYXJuc2hhdyAocmVhcm5zaGFAYXJtLmNvbSkKCglNZXJnZSBjaGFuZ2VzIGZyb20gbWVyZ2VkLWFybS10aHVtYi1iYWNrZW5kLWJyYW5jaCBvbnRvIHRydW5rLgoKCTIwMDAtMDQtMDggIFJpY2hhcmQgRWFybnNoYXcgKHJlYXJuc2hhQGFybS5jb20pCgoJKiBNZXJnZSB0cnVuayBjb2RlIGZyb20gdGFnIG1lcmdlZC1hcm0tdGh1bWItYmFja2VuZC1tZXJnZV8yMDAwMDQwOAoJaW50byBicmFuY2guCgoJKiBhcm0ubWQgKG5vcCk6IFVzZSB0aGUgc3RhbmRhcmQgUlRMIGV4cHJlc3Npb24uICBEb24ndCBjb2RlIGFzIGEKCWRlZmluZV9leHBhbmQuCgkoKmFybV9ub3AsICp0aHVtYl9ub3ApOiBEZWxldGUuCgoJKiBhcm0uYyAoY29uc3Rfb2tfZm9yX2FybSk6IERvbid0IHVzZSBBTlNJIGV4dGVuc2lvbnMgZm9yIGRlZmluaW5nCgljb25zdGFudHMuICBVc2UgY2FzdHMgaW5zdGVhZC4KCShhcm1fZ2VuX2NvbnN0YW50LCBhcm1fcnR4X2Nvc3RzLCBhcm1fcmVsb2FkX2luX2hpLCBhcm1fcmVsb2FkX291dF9oaSwKCW91dHB1dF9tdWx0aV9pbW1lZGlhdGUsIGFybV9wb2tlX2Z1bmN0aW9uX25hbWUpOiBMaWtld2lzZS4KCSogYXJtLmggKEFSTV9MRUdJVElJTUlaRV9SRUxPQURfQUREUkVTUywgQVJNX1NJR05fRVhURU5ELAoJTUFTS19SRVRVUk5fQURERFIpOiBMaWtld2lzZS4KCgkyMDAwLTAzLTMxICBSaWNoYXJkIEVhcm5zaGF3IChyZWFybnNoYUBhcm0uY29tKQoKCSogTWVyZ2UgdHJ1bmsgY29kZSBmcm9tIHRhZyBtZXJnZWQtYXJtLXRodW1iLWJhY2tlbmQtbWVyZ2VfMjAwMDAzMjUKCWludG8gYnJhbmNoLgoKCSogYXJtLm1kIChlaF9lcGlsb2d1ZSk6IE5ldyBmdW5jdGlvbi4KCSogYXJtLmggKHN0cnVjdCBtYWNoaW5lX2Z1bmN0aW9uKTogTW92ZSB0byBoZXJlIC4uLgoJKiBhcm0uYzogLi4uIGZyb20gaGVyZS4KCShhcm1fb3V0cHV0X2VwaWxvZ3VlKTogU3VwcG9ydCBlcGlsb2d1ZXMgZm9yIF9fYnVpbHRpbl9laF9yZXR1cm4uCgkodGh1bWJfZXhpdCk6IEV4dHJhIHBhcmFtZXRlciBlaF9vZnMuICBBbGwgY2FsbGVycyBjaGFuZ2VkLgoJSGFuZGxlIGVwaWxvZ3VlcyBmb3IgX19idWlsdGluX2VoX3JldHVybi4gIE1ha2UgYml0LWZpZWxkcyB1bnNpZ25lZC4KCgkyMDAwLTAzLTMwICBOaWNrIENsaWZ0b24gIDxuaWNrY0BjeWdudXMuY29tPgoKCSogY29uZmlnL2FybS9zZW1pLmggKEFTTV9TUEVDKTogUmVzdG9yZSBkZWZpbml0aW9uLgoJKFNVQlRBUkdFVF9FWFRSQV9BU01fU1BFQyk6IERlZmluZSBpZiBub3QgYWxyZWFkeSBkZWZpbmVkLgoKCSogY29uZmlnL2FybS9lbGYuaCAoQVNNX1NQRUMpOiBSZXN0b3JlIGRlZmluaXRpb24uCgkoU1VCVEFSR0VUX0VYVFJBX0FTTV9TUEVDKTogRGVmaW5lIGlmIG5vdCBhbHJlYWR5IGRlZmluZWQuCgoJKiBjb25maWcvYXJtL2FybS5oIChBU01fU1BFQyk6IFJlbW92ZSBkZWZpbml0aW9uLgoJKFNVQlRBUkdFVF9FWFRSQV9BU01fU1BFQyk6IFJlbW92ZSBkZWZpbml0aW9uLgoKCTIwMDAtMDMtMjYgIEJlcm5kIFNjaG1pZHQgPGJlcm5kc0BjeWdudXMuY28udWs+CgoJKiBjb25maWcvYXJtL2FybS5jOiBEaXNhYmxlIC1mc2NoZWR1bGUtaW5zbnMgZm9yIFRodW1iLgoKCTIwMDAtMDMtMjQgIE5pY2sgQ2xpZnRvbiAgPG5pY2tjQGN5Z251cy5jb20+CgoJVmFyaW91cyBmb3JtYXRpbmcgdGlkeXVwcywgZWxpbWluYXRpb24gb2YgY29tcGlsZSB0aW1lCgl3YXJuaW5ncyBhbmQgc3luY2hyb25pc2F0aW9uIHdpdGggaW50ZXJuYWwgc291cmNlczoKCgkqIGNvbmZpZy9hcm0vYXJtLXByb3Rvcy5oIChhc3NlbWJsZV9hbGlnbik6IEFkZCBwcm90b3R5cGUuCgkoZ2VuX3JvdGF0ZWRfaGFsZl9sb2FkKTogUmVuYW1lIHRvIGFybV9nZW5fcm90YXRlZF9oYWxmX2xvYWQuCgkoZ2VuX2NvbWFwcmVfcmVnKTogUmVuYW1lIHRvIGFybV9nZW5fY29tcGFyZV9yZWcuCgkoYXJtX3JldHVybl9hZGRyX3J0eCk6IFJlbmFtZSB0byBhcm1fcmV0dXJuX2FkZHIuCgoJKiBjb25maWcvYXJtL2FybS5jOiBJbmNsdWRlIGV4Y2VwdC5oLgoJRGVmaW5lIHNob3J0ZXIgdHlwZW5hbWVzIGZvciBzdHJpY3QgbWluaXBvb2xfbm9kZSBhbmQgc3RydWN0CgltaW5pcG9vbF9maXguCgkoYXJtX3JldHVybl9pbl9tZW1vcnkpOiBGb3IgV2luQ0UgcmV0dXJuIGFsbCBzdHJ1Y3R1cmVzIDw9IDMyIGJpdHMKCWluIG1lbW9yeS4KCShnZW5fcm90YXRlZF9oYWxmX2xvYWQpOiBSZW5hbWUgdG8gYXJtX2dlbl9yb3RhdGVkX2hhbGZfbG9hZC4KCShnZW5fY29tYXByZV9yZWcpOiBSZW5hbWUgdG8gYXJtX2dlbl9jb21wYXJlX3JlZy4KCgkqIGNvbmZpZy9hcm0vYXJtLmggKFNVQlRBUkdFVF9FWFRSQV9BU01fU1BFQyk6IERlZmluZSBpZiBub3QKCWFscmVhZHkgZGVmaW5lZC4KCShBU01fU1BFQyk6IERlZmluZSBpZiBub3QgYWxyZWFkeSBkZWZpbmVkLgoJKEFTTV9PVVRQVVRfREVGX0ZST01fREVDTFMpOiBEZWZpbmUuCgoJKiBjb25maWcvYXJtL2FybS5tZDogUmVuYW1lIHJlZmVyZW5jZXMgdG8gZ2VuX3JvdGF0ZWRfaGFsZl9sb2FkIHRvCglhcm1fZ2VuX3JvdGF0ZWRfaGFsZl9sb2FkLCBhbmQgcmVmZXJlbmNlcyB0byBnZW5fY29tYXByZV9yZWcgdG8KCWFybV9nZW5fY29tcGFyZV9yZWcuCgkoaW5kaXJlY3RfanVtcCk6ICBPbmx5IGFjY2VwdCByZWdpc3RlciBvcGVyYW5kcy4KCShsb2FkX2luZGlyZWN0X2p1bXApOiBLZWVwIHRoaXMgcGF0dGVybiBzaW5jZSBjb21iaW5lIGNhbiBnZW5lcmF0ZQoJaXQuCgoJKiBjb25maWcvYXJtL2NvZmYuaDogSW5jbHVkZSBhb3V0LmguCgkoTVVMVElMSUJfREVGQVVMVFMpOiBPbmx5IGRlZmluZSBpZiBub3QgYWxyZWFkeSBkZWZpbmVkLgoKCSogY29uZmlnL2FybS9lbGYuaCAoQVNNX09VVFBVVF9ERUZfRlJPTV9ERUNMUyk6IE1vdmUgZGVmaW5pdGlvbgoJaW50byBhcm0uaCAoc28gdGhhdCBDT0ZGIHBvcnRzIGNhbiBzdXBwb3J0IHRodW1iIGJhc2VkIGFsaWFzZXMpLgoJKEFTTV9TUEVDKTogTW92ZSBkZWZpbml0aW9uIGludG8gYXJtLmgKCgkqIGNvbmZpZy9hcm0vbGludXgtZWxmLmggKFNVQlRBUkdFVF9FWFRSQV9BU01fU1BFQyk6IFJlbW92ZQoJcmVkdW5kYW50IGFwY3Mgc3BlYy4KCShBU01fU1BFQyk6IE1vdmUgZGVmaW5pdGlvbiB0byBhcm0uaAoKCSogY29uZmlnL2FybS9zZW1pLmggKEFTTV9TUEVDKTogTW92ZSBkZWZpbml0aW9uIHRvIGFybS5oCgoJKiBjb25maWcvYXJtL3Vua25vd24tZWxmLmggKEFTTV9PVVRQVVRfU0VDVElPTl9OQU1FKTogQWRkIHN1cHBvcnQKCWZvciBlbnRyaWVzIGluIHRoZSAuYnNzIHNlY3Rpb24KCgkyMDAwLTAzLTIzICBOaWNrIENsaWZ0b24gIDxuaWNrY0BjeWdudXMuY29tPgoKCSogY29uZmlnL2FybS9hcm0uaCAoVEhVTUJfSU5JVElBTF9FTElNSU5BVElPTl9PRkZTRVQpOiBQYXNzIDAKCXRvIHRodW1iX2Zhcl9qdW1wX3VzZWRfcC4KCgkqIGNvbmZpZy9hcm0vYXJtLXByb3Rvcy5oICh0aHVtYl9mYXJfanVtcF91c2VkX3ApOiBUYWtlIGEKCXNpbmdsZSBpbnRlZ2VyIHBhcmFtZXRlci4KCgkqIGNvbmZpZy9hcm0vYXJtLmMgKHN0cnVjdCBtYWNoaW5lX2Z1bmN0aW9uKTogQWRkIHR3byBuZXcKCWZpZWxkcywgJ2Zhcl9qdW1wX3VzZWQnIGFuZCAnYXJnX3BvaW50ZXJfbGl2ZScuCgkodGh1bWJfZmFyX2p1bXBfdXNlZF9wKTogT25jZSB0aGUgZGVjaXNpb24gaGFzIGJlZW4gbWFkZSB0aGF0CglmYXIganVtcHMgbWlnaHQgYmUgdXNlZCwgYWx3YXlzIHJldHVybiB0cnVlLgoJSWYgYmVpbmcgY2FsbGVkIGZyb20gdGhlIGluaXRpYWwgZWxpbWluYXRpb24gb2Zmc2V0IG1hY3JvIHRoZW4KCWRvIG5vdCBib3RoZXIgdG8gcGVyZm9ybSB0aGUgdGVzdCBpZiB0aGUgYXJnIHBvaW50ZXIgaXMgbm90CgliZWluZyB1c2VkLgoJKHRodW1iX3VuZXhwYW5kX2VwaWxvZ3VlKTogUGFzcyAxIHRvIHRodW1iX2Zhcl9qdW1wX3VzZWRfcCgpLgoJKG91dHB1dF90aHVtYl9wcm9sb2d1ZSk6IFBhc3MgMSB0byB0aHVtYl9mYXJfanVtcF91c2VkX3AoKS4KCgkyMDAwLTAzLTIzICBSaWNoYXJkIEVhcm5zaGF3IChyZWFybnNoYUBhcm0uY29tKQoKCSogYXJtLmMgKG91dHB1dF9yZXR1cm5faW5zdHJ1Y3Rpb24pOiBIYW5kbGUgbW9yZSBjYXNlcyB3aGVyZSB3ZSBjYW4KCXJldHVybiBmcm9tIGEgZnVuY3Rpb24gd2l0aCBhbiBsZHIgaW5zdHJ1Y3Rpb24uCgkoYXJtX291dHB1dF9lcGlsb2d1ZSk6IExpa2V3aXNlLgoKCSogYXJtLmMgKHRodW1iX2V4cGFuZF9wcm9sb2d1ZSk6IERvbid0IGNsb2JiZXIgdGhlIGZyYW1lIHBvaW50ZXIKCWlmIHdlIG5lZWQgdG8gcHVzaCBhIGxhcmdlIHN0YWNrIGZyYW1lIGFuZCB0aGVyZSBhcmUgbm8gY2FsbGVlLXNhdmVkCglyZWdpc3RlcnMuCgoJKiBhcm0uYyAoYXJtX2RlYnVnZ2VyX2FyZ19vZmZzZXQpOiBBbiBvZmZzZXQgb2YgMCBpcyBhbHNvIHZhbGlkCglpbiBBUk0gY29kZSBpZiB0aGUgZnJhbWUgcG9pbnRlciBoYXMgYmVlbiBlbGltaW5hdGVkLgoKCSogYXJtLm1kIChlcGlsb2d1ZSwgKmVwaWxvZ3VlX2luc25zLCBjb25zdHRhYmxlXyosIGFsaWduXzQpOiBSZW51bWJlcgoJdW5zcGVjX3ZvbGF0aWxlIGFyZ3VtZW50cyB0byBhdm9pZCBkdXBsaWNhdGVzLgoJKGNvbnN0dGFibGVfMSwgY29uc3R0YWJsZV8yKTogRml4ZXMgZm9yIGJpZy1lbmRpYW4gbW9kZS4KCgkqIGFybS5tZCAoYWxsIEFSTS1tb2RlIGxvYWQgaW5zbnMpOiBBZGQgbmVnX3Bvb2xfcmFuZ2UgYXR0cmlidXRlCglhcyBhcHByb3ByaWF0ZS4KCglSZS13cml0ZSBjb25zdGFudCBwb29sIGNvZGUuCgkqIGFybS5jIChtaW5pcG9vbF9ub2RlLCBtaW5pcG9vbF9maXgpOiBOZXcgdHlwZXMuCgkobWluaWZpeCk6IERlbGV0ZSB0eXBlLgoJKGFybV9hZGRfbWluaXBvb2xfY29uc3RhbnQpOiBEZWxldGUuCgkoYXJtX2NvbXB1dGVfbWluaXBvb2xfb2Zmc2V0cywgYXJtX2ZpbmRfYmFycmllciwKCWFybV9maW5kX21pbmlwb29sX2NvbnN0YW50LCBmaXh1cF9jb21wYXJlLCBzb3J0X2ZpeHVwcyk6IExpa2V3aXNlLgoJKGdldF9qdW1wX3RhYmxlX3NpemUpOiBOb3cgcmV0dXJucyBIT1NUX1dJREVfSU5ULgoJKG1vdmVfbWluaXBvb2xfZml4X2ZvcndhcmRfcmVmLCBhZGRfbWluaXBvb2xfZm9yd2FyZF9yZWYpOiBOZXcKCWZ1bmN0aW9ucy4KCShtb3ZlX21pbmlwb29sX2ZpeF9iYWNrd2FyZF9yZWYsIGFkZF9taW5pcG9vbF9iYWNrd2FyZF9yZWYpOiBMaWtld2lzZS4KCShhc3NpZ25fbWluaXBvb2xfb2Zmc2V0cywgYXJtX3ByaW50X3ZhbHVlKTogTGlrZXdpc2UuCgkoZHVtcF9taW5pcG9vbCk6IFJld3JpdGUuCgkoYXJtX2JhcnJpZXJfY29zdCk6IE5ldyBmdW5jdGlvbi4KCShjcmVhdGVfZml4X2JhcnJpZXIpOiBOZXcgZnVuY3Rpb24uCgkocHVzaF9taW5pcG9vbF9iYXJyaWVyKTogTmV3IGZ1bmN0aW9uLgoJKHB1c2hfbWluaXBvb2xfZml4KTogUmVjb3JkIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGZpeHVwCglyZXF1aXJlZC4KCShub3RlX2ludmFsaWRfY29uc3RhbnRzKTogUmVtb3ZlIHB1c2ggZm9yIChVTlNQRUMgMykuICBEb24ndAoJY2hlY2sgdGhlIG1vZGUgb2Ygd2hhdCBuZWVkcyBmaXhpbmcuCgkoYXJtX3Jlb3JnKTogUmV3cml0ZS4KCgkyMDAwLTAzLTA4ICBOaWNrIENsaWZ0b24gIDxuaWNrY0BjeWdudXMuY29tPgoKCSogY29uZmlnL2FybS9hcm0ubWQgKGluZGlyZWN0X2p1bXApOiBGb3JjZSBjb25zdGFudCBhZGRyZXNzZXMgaW50bwoJYSByZWdpc3Rlci4KCgkyMDAwLTAzLTAxICBCZXJuZCBTY2htaWR0IDxiZXJuZHNAY3lnbnVzLmNvLnVrPgoKCSogY29uZmlnL2FybS9hcm0ubWQ6IEFkZCBzcGxpdHRlciB0byB0dXJuIFNGIG1vdmVzIGludG8gU0kgbW92ZXMuCgoJMjAwMC0wMi0yNCAgTmljayBDbGlmdG9uICA8bmlja2NAY3lnbnVzLmNvbT4KCgkqIGNvbmZpZy9hcm0vYXJtLmMgKHRodW1iX2V4cGFuZF9wcm9sb2d1ZSk6IE1ha2Ugc3VyZSB0aGF0IHN0YWNrCglhZGp1c3QgaXMgd29yZCBhbGlnbmVkLgoJKHRodW1iX2V4cGFuZF9lcGlsb2d1ZSk6IE1ha2Ugc3VyZSB0aGF0IHN0YWNrIGFkanVzdCBpcyB3b3JkCglhbGlnbmVkLgoKCSogY29uZmlnL2FybS9lbGYuaCAoQVNNX0ZJTEVfU1RBUlQpOiBGaXggdHlwZSBvZiB2ZXJzaW9uIHN0cmluZy4KCgkyMDAwLTAyLTI0ICBCZXJuZCBTY2htaWR0IDxiZXJuZHNAY3lnbnVzLmNvbT4KCgkqIGNvbmZpZy9hcm0vYXJtLmggKFRIVU1CX0dPX0lGX0xFR0lUSU1BVEVfQUREUkVTUyk6IEFsbG93IGZyYW1lCglwb2ludGVyIHJlbGF0aXZlIGFkZHJlc3Nlcy4KCgkyMDAwLTAyLTEwICBSaWNoYXJkIEVhcm5zaGF3ICA8cmVhcm5zaGFAYXJtLmNvbT4KCgkqIGFybS5jIChmaW5kX2JhcnJpZXIpOiBGaW5kIHRoZSBsYXN0IGJhcnJpZXIgd2l0aGluIHRoZSBhbGxvd2VkCglyYW5nZS4KCgkyMDAwLTAyLTA5ICBOaWNrIENsaWZ0b24gIDxuaWNrY0BjeWdudXMuY29tPgoKCSogY29uZmlnL2FybS9hcm0tcHJvdG9zLmg6IFJlcGxhY2UgUFJPVE8gd2l0aCBQQVJBTVMuCgoJMjAwMC0wMi0wOSAgTmljayBDbGlmdG9uICA8bmlja2NAY3lnbnVzLmNvbT4KCgkqIGNvbmZpZy9hcm0vbGludXgtZWxmLmggKEZVTkNUSU9OX1BST0ZJTEVSKTogUmVuYW1lIHRvCglBUk1fRlVOQ1RJT05fUFJPRklMRVIuCgoJKiBjb25maWcvYXJtL25ldGJzZC5oIChGVU5DVElPTl9QUk9GSUxFUik6IFJlbmFtZSB0bwoJQVJNX0ZVTkNUSU9OX1BST0ZJTEVSLgoKCSogY29uZmlnL2FybS9saW51eC1vbGRsZC5oOiBJbXBvcnRlZCBmcm9tIG1haW5saW5lIHNvdXJjZXMuCgoJMjAwMC0wMi0wNyAgTmljayBDbGlmdG9uICA8bmlja2NAY3lnbnVzLmNvbT4KCgkqIGNvbmZpZy9hcm0vbGliMWZ1bmNzLmFzbTogTWVyZ2UgaW4gdGh1bWIgZnVuY3Rpb25zIGZyb20KCWxpYjF0aHVtYi5hc20uCgoJKiBjb25maWcvYXJtL2xpYjF0aHVtYi5hc206IERlbGV0ZS4KCgkyMDAwLTAyLTA0ICBOaWNrIENsaWZ0b24gIDxuaWNrY0BjeWdudXMuY29tPgoKCSogY29uZmlnL2FybS9hcm0uYzogU3ljaHJvbmlzZWQgd2l0aCBjdXJyZW50IFJlZCBoYXQgbG9jYWwKCXNvdXJjZXMuCgkqIGNvbmZpZy9hcm0vYXJtLmg6IERpdHRvLgoJKiBjb25maWcvYXJtL2FybS1wcm90b3MuaDogRGl0dG8uCgoJMjAwMC0wMi0wMiAgQmVybmQgU2NobWlkdCAgPGJlcm5kc0BjeWdudXMuY28udWs+CgoJKiBhcm0uYyAoc29mdF9kZl9vcGVyYW5kKTogUmVqZWN0IFNVQlJFR3MgY29udGFpbmluZyBhIGNvbnN0YW50LgoKCSogYXJtLmMgKGFybV9nZW5fbW92c3RycWkpOiBHZW5lcmF0ZSBoYWxmd29yZCBzdG9yZXMgcmF0aGVyIHRoYW4gdHdvCglieXRlIHN0b3Jlcy4KCgkyMDAwLTAyLTAyICBOaWNrIENsaWZ0b24gIDxuaWNrY0BjeWdudXMuY29tPgoKCSogY29uZmlnL2FybS90aHVtYi5jICh0aHVtYl9leGl0KTogQWRkaXRpb25hbCBmaXggZm9yIHNhbWUgYnVnLgoKCSogY29uZmlnL2FybS9hcm0ubWQgKGVwaWxvZ3VlKTogRml4IHJ0bCBjaGVja2luZyBhYm9ydCBiZWNhdXNlCgkocmV0dXJuKSB3YXMgZW1pdGVkIHVzaW5nIGFuIGVtaXRfaW5zbigpIGNhbGwuCgoJMjAwMC0wMS0zMSAgTmljayBDbGlmdG9uICA8bmlja2NAY3lnbnVzLmNvbT4KCgkqIGNvbmZpZy9hcm0vYXJtLmMgKG91dHB1dF90aHVtYl9wcm9sb2d1ZSk6IEZpeCBidWcgZ2VuZXJhdGluZwoJdGh1bWIgc3RhY2sgZnJhbWUuCgkodGh1bWJfZXhpdCk6IE1vdmUgZnJhbWUgcG9pbnRlciBiYWNrIGludG8gaGFyZCBmcmFtZSBwb2ludGVyCglyZWdpc3RlciBpZiBiYWNrdHJhY2luZyBpcyBiZWluZyB1c2VkLgoKCTIwMDAtMDEtMTMgIFJpY2hhcmQgRWFybnNoYXcgKHJlYXJuc2hhQGFybS5jb20pCgoJKiBNZXJnZSB0cnVuayBjb2RlIGZyb20gdGFnIG1lcmdlZC1hcm0tdGh1bWItYmFja2VuZC1tZXJnZV8yMDAwMDExMwoJaW50byBicmFuY2guCgoJMTk5OS0xMi0xNSAgQmVybmQgU2NobWlkdCAgPGJlcm5kc0BjeWdudXMuY28udWs+CgoJKiBjb25maWcvYXJtL2FybS5tZCAobmVnX3Bvb2xfb2Zmc2V0KTogUHJvdmlkZSBkZWZhdWx0IGZvciBuZXcKCWF0dHJpYnV0ZS4KCShhcm1fbW92c2lfaW5zbik6IEFkZCBuZWdfcG9vbF9vZmZzZXQgYXR0cmlidXRlLgoJKiBjb25maWcvYXJtL2FybS5jIChhcm1fZmluZF9iYXJyaWVyKTogUmVwbGFjZSBhcmcgRklYIHdpdGggYW4KCXJ0eCBmb3IgdGhlIGluc24gdGhhdCBzdGFydHMgdGhlIHNjYW4gYW5kIGFuIHVuc2lnbmVkIGxvbmcgZm9yIGl0cwoJYWRkcmVzcy4gIEFkZCBNSU5fT0ZGU0VUIGFuZCBQSU5TRVJURUQgYXJncy4gIEFsbCBjYWxsZXJzIGNoYW5nZWQuCglDaGFuZ2Ugc2NhbiB0byBpZ25vcmUgaW5zbnMgYmVmb3JlIE1JTl9PRkZTRVQuICBTdG9yZSBzaXplIG9mIGluc2VydGVkCglpbnN0cnVjdGlvbnMgaW4gKlBJTlNFUlRFRC4KCShzdHJ1Y3QgbWluaXBvb2xfZml4dXApOiBBZGQgTUlOX0FERFJFU1MgZWx0LgoJKHNvcnRfZml4dXBzKTogQ29tcHV0ZSBpdC4KCShhcm1fcmVvcmcpOiBDaGFuZ2VzIHRvIHN1cHBvcnQgaW5zZXJ0aW5nIHBvb2xzIGJlZm9yZSB0aGUgaW5zbiB0byBiZQoJZml4ZWQgdXAuCgoJMTk5OS0xMi0wOCAgQmVybmQgU2NobWlkdCAgPGJlcm5kc0BjeWdudXMuY28udWs+CgoJKiBjb25maWcvYXJtL2VsZi5oIChNVUxUSUxJQl9ERUZBVUxUUyk6IEFkZCAibWFybSIuCgkqIGNvbmZpZy9hcm0vbGludXgtZWxmLmggKE1VTFRJTElCX0RFRkFVTFRTKTogQWRkICJtYXJtIi4KCSogY29uZmlnL2FybS9jb2ZmLmggKE1VTFRJTElCX0RFRkFVTFRTKTogQWRkICJtYXJtIi4KCglXZWQgTm92ICAzIDEwOjA0OjA3IDE5OTkgIE5pY2sgQ2xpZnRvbiAgPG5pY2tjQGN5Z251cy5jb20+CgoJKiBjb25maWcvYXJtL3NlbWkuaCAoVEFSR0VUX1ZFUlNJT04pOiBEbyBub3QgZGVmaW5lIGlmIGFscmVhZHkKCWRlZmluZWQuCgkoVEFSR0VUX0RFRkFVTFQpOiBEbyBub3QgZGVmaW5lIGlmIGFscmVhZHkgZGVmaW5lZC4KCglUdWUgTm92ICAyIDEwOjM3OjI1IDE5OTkgIE5pY2sgQ2xpZnRvbiAgPG5pY2tjQGN5Z251cy5jb20+CgoJKiBjb25maWcvYXJtL2FybS5tZCAoYW5kZGkzKTogQWxsb3cgZGlzam9pbnQgc291cmNlIG9wZXJhbmRzLgoJKGlvcmRpMyk6IEFsbG93IGRpc2pvaW50IHNvdXJjZSBvcGVyYW5kcy4KCSh4b3JkaTMpOiBBbGxvdyBkaXNqb2ludCBzb3VyY2Ugb3BlcmFuZHMuCgkobmVnZGkyKTogUGVybWl0IGNvbnN0cnVjdGlvbiBmb3IgQVJNIGFuZCBUaHVtYi4KCShhcm1fbmVnZGkyKTogUmVuYW1lZCB2ZXJzaW9uIG9mIG9sZCBuZWdkaTIgcGF0dGVybi4KCSh0aHVtYl9uZWdkaTIpOiBOZXcgcGF0dGVybjogT25seSBwZXJtaXQgbm9uLW92ZXJsYXBwaW5nCglzb3VyY2UgYW5kIGRlc3RpbmF0aW9uLgoKCUZyaSBPY3QgMjkgMTg6NTI6MzggMTk5OSAgTmljayBDbGlmdG9uICA8bmlja2NAY3lnbnVzLmNvbT4KCgkqIGNvbmZpZy9hcm0vYXJtLmMgKHRodW1iX2V4cGFuZF9wcm9sb2d1ZSk6IEVtaXQgYSBVU0Ugb2YgdGhlCglzY3JhdGNoIGxvdyByZWdpc3RlciBzbyB0aGF0IGl0IHdpbGwgbm90IGJlIGRlbGV0ZWQuCgoJRnJpIE9jdCAyOSAxNToyMzo0OCAxOTk5ICBOaWNrIENsaWZ0b24gIDxuaWNrY0BjeWdudXMuY29tPgoKCSogY29uZmlnL2FybS9wZS5oIChBUk1fUEUpOiBEZWZpbmUuCgoJKiBjb25maWcvYXJtL2FybS5jIChhcm1fdmFsaWRfbWFjaGluZV9kZWNsX2F0dHJpYnV0ZSk6IEFsbG93CglpbnRlcmZhY2Vhcm0gYXR0cmlidXRlIGlmIHRoaXMgaXMgYSBQRSB0b29sY2hhaW4uCgkob3V0cHV0X3JldHVybl9pbnN0cnVjdGlvbik6IERvIG5vdCBlbWl0IGFueXRoaW5nIGlmIHRoZSBmdW5jdGlvbgoJaGFzIHRoZSBuYWtlZCBhdHRyaWJ1dGUgc2V0LgoJKGlzX2NhbGxlZF9pbl9BUk1fbW9kZSk6IElmIHRoZSBmdW5jdGlvbiBoYXMgdGhlIGludGVyZmFjZWFybQoJYXR0cmlidXRlIHRoZW4gcmV0dXJuIHRydWUuCgkodGh1bWJfZXhwYW5kX3Byb2xvZ3VlKTogRG8gbm90IGdlbmVyYXRlIGEgcHJvbG9ndWUgZm9yIG5ha2VkCglmdW5jdGlvbnMuCgkodGh1bWJfZXhwYW5kX2VwaWxvZ3VlKTogRG8gbm90IGdlbmVyYXRlIGFuIGVwaWxvZ2llIGZvciBhIG5ha2VkCglmdW5jdGlvbi4KCShvdXRwdXRfdGh1bWJfcHJvbG9ndWUpOiBEbyBub3QgYm90aGVyIGlmIHRoZSBmdW5jdGlvbiBpcyBuYWtlZC4KCVN0cmlwIFBFIGVuY29kaW5nIGZyb20gZnVuY3Rpb24gbmFtZSBiZWZvcmUgZW1pdHRpbmcuCgoJVGh1IE9jdCAyOCAxMTowNToxMyAxOTk5ICBSaWNoYXJkIEVhcm5zaGF3IDxyZWFybnNoYUBhcm0uY29tPgoKCSogYXJtLm1kIChwaWNfbG9hZF9hZGRyKTogRml4IGNvbnN0cmFpbnRzLgoKCSogYXJtLm1kIChjYXNlc2lfaW5zbik6IEZpeCBtaXMtYXBwbGllZCBwYXRjaC4KCgkqIGFybS5tZCAoImNvcmUiIGZ1bmN0aW9uIHVuaXQpOiBBZGQgcnVsZXMgZm9yIHNpbmdsZS0gYW5kCgltdWx0aS1jeWNsZSBpbnNucy4KCShBbGwgVEFSR0VUX1RIVU1CIHBhdHRlcm5zKTogQWRkICJ0eXBlIiBhdHRyaWJ1dGUgaW5mb3JtYXRpb24KCXdoZXJlIG5lZWRlZC4KCSogYXJtLmMgKGFybV9hZGp1c3RfY29zdCk6IFJlZHVjZSB0aGUgY29zdCBvZiBhIGRhdGEgZGVwZW5kZW5jeSBpZgoJdGhlIGZvbGxvd2luZyBpbnNuIGlzIGEgQ0FMTC4KCgkqIGFybS5jICh0aHVtYl9leHBhbmRfZXBpbG9ndWUpOiBBZGQgYSB1c2Ugb2YgdGhlIGFkanVzdGVkIHN0YWNrCglwb2ludGVyLgoJKiBhcm0uaCAoQ09ORElUSU9OQUxfUkVHSVNURVJfVVNBR0UpOiBOYWlsIGRvd24gdGhlCglBUk1fSEFSRF9GUkFNRV9QT0lOVEVSX1JFR05VTSB3aGVuIFRBUkdFVF9BUENTX0ZSQU1FLgoJKEZSQU1FX1BPSU5URVJfUkVRVUlSRUQpOiBPbmx5IGNoZWNrIFRBUkdFVF9BUENTX0ZSQU1FIGlmIFRBUkdFVF9BUk0uCgoJV2VkIE9jdCAyNyAxNDo0MDo0OCAxOTk5ICBOaWNrIENsaWZ0b24gIDxuaWNrY0BjeWdudXMuY29tPgoKCSogY29uZmlnL2FybS9saW51eC1nYXMuaDogb29wcyAtIHRoaXMgZmlsZSB3YXMgbWlzc2VkIG91dCB3aGVuIHRoZQoJYnJhbmNoIHdhcyBjcmVhdGVkLi4uCgoJVHVlIE9jdCAyNiAxNzowNzozOCAxOTk5ICBSaWNoYXJkIEVhcm5zaGF3IDxyZWFybnNoYUBhcm0uY29tPgoKCSogdGh1bWIuYzogRGVsZXRlZC4gIE1vdmUgY29udGVudHMgdG8gLi4uCgkqIGFybS5jOiAuLi4gaGVyZS4KCSogdC1hcm0tYW91dCwgdC1hcm0tY29mZiwgdC1hcm0tZWxmLCB0LWxpbnV4LCB0LW5ldGJzZCwgdC1zZW1pOiBSZW1vdmUKCXJ1bGUgZm9yIHRodW1iLm8KCSogY29uZmlndXJlLmluIChhcm0qLSotKik6IFJlbW92ZSB0aHVtYi5vIGZyb20gZXh0cmFfb2JqcyBsaXN0LgoJKiBjb25maWd1cmU6IFJlZ2VuLgoKCSogYXJtLXByb3Rvcy5oOiBVc2UgUlRYX0NPREUgYW5kIHRpZHkgdXAgbG9uZyBsaW5lcy4gIERvbid0CglkZWNsYXJlIGEgcHJvdG90eXBlIGZvciBhc21fb3V0cHV0X2FsaWduKCk7CgoJKiBhcm0uYyAodGh1bWJfY29uZGl0aW9uX2NvZGUpOiBEZWxldGUuCgkoYXJtX3ByaW50X29wZXJhbmQpOiBBbHdheXMgdXNlIGFybV9jb25kaXRpb25fY29kZSBhcnJheS4KCgkqIGFybS5jICh0aHVtYl9yZXR1cm5fYWRkcl9ydHgpOiBEZWxldGUuCgkoYXJtX3NhdmVfbWFjaGluZV9zdGF0dXMsIGFybV9yZXN0b3JlX21hY2hpbmVfc3RhdHVzKTogRGVsZXRlLgoJKGFybV9pbml0X21hY2hpbmVfc3RhdHVzLCBhcm1fbWFya19tYWNoaW5lX3N0YXR1cyk6IE5ldyBmdW5jdGlvbnMuCgkoYXJtX2luaXRfZXhwYW5kZXJzKTogVXBkYXRlIGFjY29yZGluZ2x5LgoJKGFybV9yZXR1cm5fYWRkcik6IFJlbmFtZWQgZnJvbSBhcm1fcmV0dXJuX2FkZHJfcnR4LiAgUmV3cml0ZS4KCSh0aHVtYl9leHBhbmRfcHJvbG9ndWUpOiBEZWxldGUgY29kZSByZWZlcmVuY2luZyB0aHVtYl9yZXR1cm5fYWRkcl9ydHguCgkqIGFybS5oIChSRVRVUk5fQUREUl9SVFgpOiBDYWxsIGFybV9yZXR1cm5fYWRkcigpLgoKCVR1ZSBPY3QgMjYgMTM6MjQ6MTYgMTk5OSAgTmljayBDbGlmdG9uICA8bmlja2NAY3lnbnVzLmNvbT4KCgkqIGNvbmZpZ3VyZS5pbiA6IEZpeCBhcm0tKi1hb3V0IHRhcmdldCB0byB1c2UgbmV3IHQtYXJtLWFvdXQKCXNjcmlwdC4KCSogY29uZmlnL2FybS90LWFybS1hb3V0OiBOZXcgZmlsZTogTWFrZWZpbGUgc2NyaXB0IGZvciBhcm0tKi1hb3V0Cgl0YXJnZXRzLgoKCVR1ZSBPY3QgMjYgMTE6Mjc6MTIgMTk5OSAgTmljayBDbGlmdG9uICA8bmlja2NAY3lnbnVzLmNvbT4KCgkqIGNvbmZpZy9hcm0vdGh1bWIuYyAob3V0cHV0X3RodW1iX3Byb2xvZ3VlKTogRml4IGJ1ZyBjcmVhdGluZwoJc3RhY2sgYmFja3RyYWNlIHN0cnVjdHVyZS4KCgkqIGNvbmZpZy9hcm0vYXJtLXByb3Rvcy5oOiBBZGQgcHJvdG90eXBlcyBmb3IgZnVuY3Rpb25zIGRlZmluZWQgaW4KCWFybS9wZS5oLgoKCSogY29uZmlnL2FybS9hcm0uYyAoYXJtX292ZXJyaWRlX29wdGlvbnMpOiBGaXggc2VsZWN0aW9uIG9mCglhdHRyaWJ1dGVzIG9mIGRlZmF1bHQgcHJvY2Vzc29yLgoKCSogY29uZmlnL2FybS9jb2ZmLmg6IERlbGV0ZSBuZWVkbGVzcyAjaW5jbHVkZS4KCgkqIGNvbmZpZy9hcm0vcGUuYzogRGVsZXRlIHVudXNlZCBjb2RlLgoKCSogY29uZmlnL2FybS9wZS5oIChDUFBfREVGSU5FUyk6IERlbGV0ZQoJKFNVQlRBUkdFVF9DUFBfU1BFQyk6IERlZmluZS4KCShBU01fREVDTEFSRV9GVU5DVElPTl9OQU1FKTogVXNlIEFSTV9ERUNMQVJFX0ZVTkNUSU9OX05BTUUuCgoJKiBjb25maWcvYXJtL3QtcGU6IEFkZCAtREluaGliaXRfbGliYyB0byBhbGxvZiBsaWJnY2MuYSB0byBidWlsZC4KCglNb24gT2N0IDI1IDE1OjQyOjA5IDE5OTkgIFJpY2hhcmQgRWFybnNoYXcgKHJlYXJuc2hhQGFybS5jb20pCgoJKiBhcm0uaCAoVEFSR0VUX0FQQ1NfRlJBTUUpOiBSZW5hbWVkIGZyb20gVEFSR0VUX0FQQ1MgLS0gYWxsIHVzZXMKCXVwZGF0ZWQuCgkoQ0FOX0RFQlVHX1dJVEhPVVRfRlApOiBEZWZpbmUuCgkoRklYRURfUkVHSVNURVJTKTogTWFrZSByMTEgY2FsbC1zYXZlZC4KCShDQUxMX1VTRURfUkVHSVNURVJTKTogTGlrZXdpc2UuCgkoQ09ORElUSU9OQUxfUkVHSVNURVJfVVNBR0UpOiBGaXggcjExIGlmIFRBUkdFVF9BUENTX0ZSQU1FLgoJKEZSQU1FX1BPSU5URVJfUkVRVUlSRUQpOiBDb3JyZWN0IGxvZ2ljIGZvciBkZXRlcm1pbmluZyB3aGVuIGEKCWZyYW1lLXBvaW50ZXIgaXMgcmVxdWlyZWQuCgkoVEFSR0VUX0RFRkFVTFQpOiBNYWtlIGRlZmF1bHQgc2V0dGluZyBpbmNsdWRlIEFSTV9GTEFHX0FQQ1NfRlJBTUUuCgkqIGFybS5jIChhcm1fb3ZlcnJpZGVfb3B0aW9ucyk6IFdhcm4gYWJvdXQgLW1uby1hcGNzLWZyYW1lIGFuZCAtZwoJaWYgdGhlIHRhcmdldCBub3JtYWxseSBuZWVkcyBhIHN0YWNrIGZyYW1lIGluIG5vbi1sZWFmIGZ1bmN0aW9ucy4KCSh1c2VfcmV0dXJuX2luc24pOiBDb3JyZWN0IGxvZ2ljIGZvciBkZXRlcm1pbmluZyB3aGVuIGEgcmV0dXJuCglpbnN0cnVjdGlvbiBjYW4gYmUgdXNlZC4KCShvdXRwdXRfcmV0dXJuX2luc3RydWN0aW9uKTogSGFuZGxlIHRoZSBmcmFtZS1wb2ludGVyIHJlZ2lzdGVyIGFzCglhIG5vcm1hbCByZWdpc3RlciB3aGVuIG5vdCBUQVJHRVRfQVBDU19GUkFNRS4KCShhcm1fb3V0cHV0X3Byb2xvZ3VlKTogTGlrZXdpc2UuCgkoYXJtX291dHB1dF9lcGlsb2d1ZSk6IExpa2V3aXNlLgoJKG91dHB1dF9mdW5jX2VwaWxvZ3VlKTogTGlrZXdpc2UuCgkoYXJtX2V4cGFuZF9wcm9sb2d1ZSk6IExpa2V3aXNlLgoJKiBuZXRic2QuaCBzZW1pLmggKFRBUkdFVF9ERUZBVUxUKTogQWRkIEFSTV9GTEFHX0FQQ1NfRlJBTUUuCgoJKiBhcm0uYyAodXNlX3JldHVybl9pbnNuKTogTm8gbmVlZCB0byBjaGVjayBmbG9hdGluZyBwb2ludCByZWdzIGlmCglUQVJHRVRfU09GVF9GTE9BVC4KCShhcm1fZmluZF9taW5pcG9vbF9jb25zdGFudCk6IENvcnJlY3QgdHlwbzsgdXNlIEdFVF9DT0RFIHRvIGdldAoJdGhlIGNvZGUgb2YgdmFsdWUgc3RvcmVkIGluIHRoZSBtaW5pcG9vbCBhcnJheS4KCShhcm1fYWRkX21pbmlwb29sX2NvbnN0YW50KTogTGlrZXdpc2UuCgoyMDAwLTA0LTA4ICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBiYXNpYy1ibG9jay5oIChjb25mbGljdF9ncmFwaF9lbnVtX2ZuKTogSyZSIGZpeC4KCjIwMDAtMDQtMDggIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIHRyZWUuYyAodHJlZV9leHByX25vbm5lZ2F0aXZlX3ApOiBOZXcgZnVuY3Rpb24uCgoJKiB0cmVlLmggKHRyZWVfZXhwcl9ub25uZWdhdGl2ZV9wKTogRGVjbGFyZS4KCgkqIGMtdHlwZWNrLmMgKGJ1aWxkX2JpbmFyeV9vcCk6IENhbGwgYHRyZWVfZXhwcl9ub25uZWdhdGl2ZV9wJyB0bwoJZWxpZGUgc29tZSBzaWduX2NvbXBhcmUgd2FybmluZ3MuCgkoYnVpbGRfY29uZGl0aW9uYWxfZXhwcik6IExpa2V3aXNlLgoKU2F0IEFwciAgOCAwMDoyMTo1MSBFRFQgMjAwMCAgSm9obiBXZWhsZSAgKGpvaG5AZmVpdGguY29tKQoKCSogaTM4Ni5tZCAoYXNocnNpMywgYXNocmhpMywgYXNocnFpMyk6IEZpeCB0eXBvLgoKCSogaTM4Ni5tZCAoZmxvYXRoaXNmMiwgZmxvYXRoaWRmMiwgZmxvYXRoaXhmMik6IE5ldyBwYXR0ZXJucy4KCSogaTM4Ni5jIChwcmludF9vcGVyYW5kKTogVXNlIHRoZSBwcm9wZXIgc3VmZml4IGZvciBhIDM4NyBISW1vZGUKCW9wZXJhbmQuICBBYm9ydCBpZiBhIDM4NyBvcGVyYW5kIGhhcyBhbiB1bnN1cHBvcnRlZCBzaXplLgoKMjAwMC0wNC0wOCAgTmVpbCBCb290aCAgPE5laWxCQGVhcnRobGluZy5uZXQ+CgoJKiBjcHBleHAuYyAocGFyc2VfY2hhcmNvbnN0KTogTnVsbCBkb2VzIG5vdCBlbmQgY2hhcmFjdGVyCgljb25zdGFudHMuCgkqIGNwcGluaXQuYyAoSVNUQUJMRSk6IE51bGwgY2hhcmFjdGVyIGhhbmRsZWQgYXMgd2hpdGVzcGFjZS4KCSogY3BwbGV4LmMgKG51bGxfd2FybmluZyk6ICBuZXcgZnVuY3Rpb24uCgkoc2tpcF9zdHJpbmcpOiBFbWl0IHdhcm5pbmcgaWYgbnVsbHMgZW5jb3VudGVyZWQuCgkoX2NwcF9za2lwX2hzcGFjZSk6IEVtaXQgd2FybmluZyBpZiBudWxscyBlbmNvdW50ZXJlZC4KCShfY3BwX2xleF90b2tlbik6IEVtaXQgd2FybmluZyBpZiBudWxscyBlbmNvdW50ZXJlZC4gIERyb3AKCXRoZW0uCgkqIGNwcC50ZXhpOiBVcGRhdGUuCgoyMDAwLTA0LTA3ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEBjeWdudXMuY29tPgoKCSogZmxvdy5jIChsb29wX2RlcHRoKTogUmVtb3ZlLgoJKHJlZ19uZXh0X3VzZSwgY2MwX2xpdmUsIG1lbV9zZXRfbGlzdCk6IFJlcGxhY2Ugd2l0aCAuLi4KCShzdHJ1Y3QgcHJvcGFnYXRlX2Jsb2NrX2luZm8pOiBOZXcuCgkobGlmZV9hbmFseXNpcyk6IERvbid0IGFsbG9jYXRlIHJlZ19uZXh0X3VzZS4KCShwcm9wYWdhdGVfYmxvY2tfZGVsZXRlX2luc24pOiBCcmVhayBvdXQgb2YgcHJvcGFnYXRlX2Jsb2NrLgoJVXNlIGZsb3dfZGVsZXRlX2luc24gdG8gdW5saW5rIHJhdGhlciB0aGFuIHVzZSBOT1RFX0lOU05fREVMRVRFRC4KCShwcm9wYWdhdGVfYmxvY2tfZGVsZXRlX2xpYmNhbGwpOiBMaWtld2lzZS4KCShwcm9wYWdhdGVfYmxvY2spOiBDcmVhdGUgYSBwcm9wYWdhdGVfYmxvY2tfaW5mbyBzdHJ1Y3QgdG8gcGFzcwoJdG8gc3Vicm91dGluZXMuICBBbGxvY2F0ZSBvbmUgbm90IHR3byB0ZW1wb3JhcnkgcmVnc2V0cy4gIERvbid0CgljbG9iYmVyIG1lbW9yeSBmb3IgY29uc3QgY2FsbHMuICBMb29rIGZvciBjbG9iYmVycyBpbgoJQ0FMTF9JTlNOX0ZVTkNUSU9OX1VTQUdFLgoJKG1hcmtfc2V0X3JlZ3MpOiBSZWNvZ25pemUgQ09ORF9FWEVDLgoJKG1hcmtfc2V0X3JlZyk6IEJyZWFrIG91dCBvZiBtYXJrX3NldF8xLgoJKG1hcmtfdXNlZF9yZWcpOiBCcmVhayBvdXQgb2YgbWFya191c2VkX3JlZ3MuCgkobWFya191c2VkX3JlZ3MpOiBSZWNvZ25pemUgQ09ORF9FWEVDLgoJKGluc25fZGVhZF9wKTogVXNlIHByb3BhZ2F0ZV9ibG9ja19pbmZvIHN0cnVjdC4KCShsaWJjYWxsX2RlYWRfcCwgaW52YWxpZGF0ZV9tZW1zX2Zyb21fYXV0b2luYyk6IExpa2V3aXNlLgoJKGZpbmRfYXV0b19pbmMsIHRyeV9wcmVfaW5jcmVtZW50XzEpOiBMaWtld2lzZS4KCShwcmludF9ydGxfd2l0aF9iYik6IER1bXAgcmVncyBsaXZlIGF0IGVuZCB0b28uCgkoY291bnRfcmVnX3NldHNfMSk6IFBhc3MgaW4gbG9vcF9kZXB0aC4KCShjb3VudF9yZWdfc2V0cywgY291bnRfcmVnX3JlZmVyZW5jZXMpOiBMaWtld2lzZS4KCShyZWNvbXB1dGVfcmVnX3VzYWdlKTogUHJvdmlkZSBpdC4KCjIwMDAtMDQtMDcgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgoJKiBNYWtlZmlsZS5pbiAoY29uZmxpY3Qubyk6IERlcGVuZCBvbiAkKFJUTF9IKSBhbmQgJChCQVNJQ19CTE9DS19IKQoJbm90IHRoZSByYXcgZmlsZXMuCgoyMDAwLTA0LTA3ICBaYWNrIFdlaW5iZXJnICA8emFja0B3b2xlcnkuY3VtYi5vcmc+CgoJKiBjcHBsaWIuYyAoZG9fZWxpZik6IFNraXAgdGhlIHJlc3Qgb2YgdGhlIGxpbmUgaWYgd2UncmUKCW5vdCBnb2luZyB0byBib3RoZXIgZXZhbHVhdGluZyBpdC4KCShza2lwX2lmX2dyb3VwKTogQ2xlYXIgcGZpbGUtPm9ubHlfc2Vlbl93aGl0ZS4gIFJlb3JkZXIgbG9vcAoJdG8gYXZvaWQgcG9pbnRsZXNzIGNhbGxzIHRvIHRoZSBsZXhlci4KCkZyaSBBcHIgIDcgMTE6NTA6NTQgMjAwMCAgSmltIFdpbHNvbiAgPHdpbHNvbkBjeWdudXMuY29tPgoKCSogY29uZmlnL2lhNjQvaWE2NC5jOiBEZWxldGUgc3RkaW8uaCBhbmQgY3R5cGUuaCBpbmNsdWRlcy4KCjIwMDAtMDQtMDcgIEphc29uIE1lcnJpbGwgIDxqYXNvbkBjYXNleS5jeWdudXMuY29tPgoKCSogY2FsbHMuYyAoZXhwYW5kX2NhbGwpOiBlbWl0X3F1ZXVlIGlmIHdlJ3JlIHRyeWluZyBhIHNpYmNhbGwuCgoyMDAwLTA0LTA3ICBKYWt1YiBKZWxpbmVrICA8amFrdWJAcmVkaGF0LmNvbT4KCgkqIGNvbmZpZy9zcGFyYy90LWxpbnV4NjQgKHRjcnRiZWdpblMubywgdGNydGVuZFMubyk6IFJlbW92ZS4KCjIwMDAtMDQtMDYgIEdlb2ZmIEtlYXRpbmcgIDxnZW9mZmtAY3lnbnVzLmNvbT4KCgkqIE1ha2VmaWxlLmluOiBCdWlsZCBjcnRiZWdpblMgYW5kIGNydGVuZFMgbGlrZSBjcnRiZWdpbiBhbmQKCWNydGVuZCBzbyB0aGV5IGNhbiBiZSBtdWx0aWxpYmJlZC4KCShTVEFHRVNUVUZGKTogUmVtb3ZlIHMtY3J0IGFuZCBzLWNydFMuCgoyMDAwLTA0LTA3ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEBjeWdudXMuY29tPgoKCSogY29uZmlnL2FscGhhL2FscGhhLmMgKGFscGhhX2VtaXRfY29uZGl0aW9uYWxfbW92ZSk6IEZhaWwKCWlmIHdlIGRpc2NvdmVyIHdlIG5lZWQgYSBwc2V1ZG8gYW5kIG5vX25ld19wc2V1ZG9zIGlzIHRydWUuCgkqIGNvbmZpZy9hbHBoYS9hbHBoYS5tZCAobmU6REkgaW5zbik6IE5ldy4KCSh0cnVuY3Rmc2YyLCBzbmUpOiBFbWl0IE5FIGluc3RlYWQgb2Ygbm9uLWNhbm9uaWNhbCBMVFUuCgoyMDAwLTA0LTA3ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEBjeWdudXMuY29tPgoKCSogcnRsLmRlZiAoQ09ORF9FWEVDKTogTmV3LgoJKiBydGwuaCAoQ09ORF9FWEVDX1RFU1QsIENPTkRfRVhFQ19DT0RFKTogTmV3LgoJKiB0bS50ZXhpIChNQVhfQ09ORElUSU9OQUxfRVhFQ1VURSk6IERvY3VtZW50LgoKCSogZ2VuY29uZmlnLmMgKGhhdmVfY29uZF9hcml0aF9mbGFnKTogUmVtb3ZlLgoJKGhhdmVfY29uZF9leGVjX2ZsYWcpOiBOZXcuCgkod2Fsa19pbnNuX3BhcnQpOiBEZXRlY3QgQ09ORF9FWEVDLCBub3QgYXJpdGhtZXRpYyBpbiBJRl9USEVOX0VMU0UuCgkobWFpbik6IFByaW50IEhBVkVfY29uZGl0aW9uYWxfZXhlY3V0aW9uLgoKCSogaGFpZmEtc2NoZWQuYyAoaGFpZmFfY2xhc3NpZnlfaW5zbik6IFJlY29nbml6ZSBDT05EX0VYRUMuCgkoc2NoZWRfYW5hbHl6ZV9pbnNuLCBwcmludF9wYXR0ZXJuKTogTGlrZXdpc2UuCgkqIHJlbG9hZC5jIChmaW5kX2VxdWl2X3JlZyk6IExpa2V3aXNlLgoJKiBydGxhbmFsLmMgKHJlZ19yZWZlcmVuY2VkX3ApOiBMaWtld2lzZS4KCShub3RlX3N0b3JlcywgZGVhZF9vcl9zZXRfcmVnbm9fcCk6IExpa2V3aXNlLgoJKHJlZ19vdmVybGFwX21lbnRpb25lZF9wKTogUmV3cml0ZSB0byB1c2UgYSBzd2l0Y2guCgoJKiBnZ2MuaCAoc3RydWN0IHJ0eF9kZWYpOiBGb3J3YXJkIGRlY2xhcmUuCgoJKiBwcmludC1ydGwuYyAoZGVidWdfcnR4X3JhbmdlKTogTmV3LgoJKiBydGwuaCAoZGVidWdfcnR4X3JhbmdlKTogRGVjbGFyZS4KCgkqIHZhcnJheS5oIChWQVJSQVlfQUNUSVZFX1NJWkUsIFZBUlJBWV9QT1BfQUxMKTogTmV3LgoKCSogZ2NzZS5jIChnY3NlX21haW4pOiBEb24ndCByZWJ1aWxkIHRoZSBDRkcgaGVyZS4KCShkZWxldGVfbnVsbF9wb2ludGVyX2NoZWNrcyk6IExpa2V3aXNlLgoJKiBzc2EuYyAoY29udmVydF90b19zc2EpOiBMaWtld2lzZS4KCSogdG9wbGV2LmMgKHJlc3Rfb2ZfY29tcGlsYXRpb24pOiBEbyBpdCBoZXJlIGluc3RlYWQuICBDb21iaW5lCglzZXF1ZW50aWFsIGNhbGxzIHRvIFRJTUVWQVIuICBDb25zaXN0ZW50bHkgdXNlIGBpbnNucycgaW5zdGVhZCBvZgoJYGdldF9pbnNucygpJy4gIEFsd2F5cyBzcGxpdCBpbnNucyBhZnRlciByZWxvYWQgd2hlbiBvcHRpbWl6aW5nLgoKCSogYmFzaWMtYmxvY2suaCAobWVyZ2VfYmxvY2tzX25vbW92ZSk6IERlY2xhcmUuCgkodGlkeV9mYWxsdGhydV9lZGdlKTogRGVjbGFyZS4KCSogZmxvdy5jIChtZXJnZV9ibG9ja3Nfbm9tb3ZlKTogRG9jdW1lbnQgYXMgbWVyZ2luZyBpbnRvIHByZXZpb3VzCglibG9ja3MuICBSZW1vdmUgY3J1ZnQgZnJvbSBiZXR3ZWVuIGJsb2NrczsgcmVtb3ZlIGFsbCBlZGdlcyBvdXQgb2YgQS4KCSh0aWR5X2ZhbGx0aHJ1X2VkZ2UpOiBFeHBvcnQuCgoyMDAwLTA0LTA2ICBBbGV4IFNhbXVlbCAgPHNhbXVlbEBjb2Rlc291cmNlcnkuY29tPgoKCSogc3NhLmMgKGNvbXB1dGVfY29uc2VydmF0aXZlX3JlZ19wYXJ0aXRpb24pOiBEZWNsYXJlIHdpdGgKCXZvaWQgYXJndW1lbnRzLgoJKiB0b3BsZXYuYyAoY2xlYW5fZHVtcF9maWxlKTogUmVtb3ZlIHByZXZpb3VzbHktZGVsZXRlZCBmdW5jdGlvbgoJaW5hZHZlcnRhbnRseSBtZXJnZWQgYmFjayBpbi4KCSogY29uZmxpY3QuYyAoY29uZmxpY3RfZ3JhcGhfYWRkKTogVXNlIGEgc2luZ2xlIGNhbGwgdG8KCWh0YWJfZmluZF9zbG90IHRvIGxvb2sgdXAgYW5kIGluc2VydC4KCjIwMDAtMDQtMDYgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgoJKiBnZW5yZWNvZy5jICgqKTogUmVuYW1lIF9sYXN0X2luc24gdG8gbGFzdF9pbnNuLgoJKG1ha2VfaW5zbl9zZXF1ZW5jZSk6IFNldCB0aGUgcG9zaXRpb24gb2YgdGhlIHBlZXBob2xlMiBDIHRlc3QKCXRvIGJlIGF0IHRoZSBsYXN0IGluc24uCgoyMDAwLTA0LTA2ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEBjeWdudXMuY29tPgoKCSogZmxvdy5jIChjb21wdXRlX2Zsb3dfZG9taW5hdG9ycyk6IEZyZWUgd29ya2xpc3QuCgoyMDAwLTA0LTA2ICBNaWNoYWVsIE1hdHogIDxtYXR6bWljaEBjcy50dS1iZXJsaW4uZGU+CgoJKiBmbG93LmMgKGNvbXB1dGVfZmxvd19kb21pbmF0b3JzKTogUHJvY2VzcyBibG9ja3MgRklGTyBub3QgTElGTy4KCjIwMDAtMDQtMDYgIEFsZXggU2FtdWVsICA8c2FtdWVsQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBydGwuaCAoSU5TTl9QKTogTmV3IG1hY3JvLgoJKHN1Y2Nlc3Nvcl9waGlfZm4pOiBOZXcgdHlwZWRlZi4KCShmb3JfZWFjaF9zdWNjZXNzb3JfcGhpKTogTmV3IHByb3RvdHlwZS4KCShpbl9zc2FfZm9ybSk6IE5ldyB2YXJpYWJsZS4KCShQSElfTk9ERV9QKTogTGlrZXdpc2UuCgkqIGZsb3cuYyAoY2FsY3VsYXRlX2dsb2JhbF9yZWdzX2xpdmUpOiBBZGQgdG8gbmV3X2xpdmVfYXRfZW5kIGZyb20KCXBoaSBub2RlcyBpbiBzdWNjZXNzb3JzLgoJKG1hcmtfdXNlZF9yZWdzKTogQWRkIFBISSBjYXNlLgoJKHNldF9waGlfYWx0ZXJuYXRpdmVfcmVnKTogTmV3IGZ1bmN0aW9uLgoJKGxpZmVfYW5hbHlzaXMpOiBBc3NlcnQgdGhhdCBkZWFkIGNvZGUgZWxpbWluYXRpb24gaXMgbm90IHNlbGVjdGVkCgl3aGVuIGluIFNTQSBmb3JtLgoJKiB0b3BsZXYuYyAodG9fc3NhX3RpbWUpOiBOZXcgdmFyaWFibGUuCgkoZnJvbV9zc2FfdGltZSk6IExpa2V3aXNlLgoJKGNvbXBpbGVfZmlsZSk6IFplcm8gdG9fc3NhX3RpbWUgYW5kIGZyb21fc3NhX3RpbWUuCglQcmludCB0aW1lIHRvIGNvbnZlcnQgdG8gYW5kIGZyb20gU1NBLgoJKHJlc3Rfb2ZfY29tcGlsYXRpb24pOiBUaW1lIGNvbnZlcnRfdG9fc3NhIGFuZCBjb252ZXJ0X2Zyb21fc3NhLgoJKHByaW50X3RpbWUpOiBDb21wdXRlIHBlcmNlbnQgZnJhY3Rpb24gYXMgaW50ZWdlci4KCSogc3NhLmMgKFBISV9OT0RFX1ApOiBNb3ZlZCB0byBydGwuaC4KCShjb252ZXJ0X3RvX3NzYSk6IENoZWNrIGlmIHdlJ3JlIGFscmVhZHkgaW4gU1NBLgoJRG9uJ3QgZWxpbWluYXRlIGRlYWQgY29kZSBpbiBsaWZlX2FuYWx5c2lzLgoJUmVydW4gZmxvdyBhbmQgbGlmZSBhbmFseXNpcyBhdCBib3R0b20uCgkoZWxpbWluYXRlX3BoaSk6IFVzZSBjYW5vbmljYWwgcmVnbm9zIHdoZW4gYWRkaW5nIG5vZGVzLgoJKG1hcmtfcmVnX2luX3BoaSk6IE5ldyBmdW5jdGlvbi4KCShtYXJrX3BoaV9hbmRfY29weV9yZWdzKTogTGlrZXdpc2UuCgkoY29udmVydF9mcm9tX3NzYSk6IFJlcnVuIGxpZmUgYW5hbHlzaXMgYXQgdG9wLgoJVXNlIGNvYWxlc2NlZCBwYXJ0aXRpb24uCglDaGVjayBmb3IgcmVtb3ZpbmcgYSBwaGkgbm9kZSBhdCB0aGUgZW5kIG9mIHRoZSBibG9jay4KCShjb21wdXRlX2NvYWxlc2NlZF9yZWdfcGFydGl0aW9uKTogTmV3IGZ1bmN0aW9uLgoJKGNvYWxlc2NlX3JlZ3NfaW5fY29waWVzKTogTGlrZXdpc2UuCgkoY29hbGVzY2VfcmVnX2luX3BoaSk6IExpa2V3aXNlLgoJKGNvYWxlc2NlX3JlZ3NfaW5fc3VjY2Vzc29yX3BoaV9ub2Rlcyk6IExpa2V3aXNlLgoJKGZvcl9lYWNoX3N1Y2Nlc3Nvcl9waGkpOiBMaWtld2lzZS4KCShyZW5hbWVfY29udGV4dCk6IE5ldyBzdHJ1Y3QuCgkocmVuYW1lX2Jsb2NrKTogVXNlIGEgcmVuYW1lX2NvbnRleHQgd2l0aCByZW5hbWVfaW5zbl8xLiAgV2hlbgoJcmVuYW1pbmcgc2V0cyBvZiBhIHN1YnJlZywgZW1pdCBhIGNvcHkgb2YgdGhlIGVudGlyZSByZWcgZmlyc3QuCgkocmVuYW1lX2luc25fMSk6IFRyZWF0IGRhdGEgYXMgYSByZW5hbWVfY29udGV4dCAqLiAgU2F2ZSBjdXJyZW50CglpbnNuIGluIHNldF9kYXRhLgoJKHJlbmFtZV9zZXRfZGF0YSk6IEFkZCBmaWVsZCBzZXRfaW5zbi4KCSogTWFrZWZpbGUuaW4gKEhBU0hUQUJfSCk6IE1vdmUgdXAgaW4gZmlsZS4KCShPQlNUQUNLX0gpOiBOZXcgbWFjcm8uCgkoY29sbGVjdDIubyk6IFVzZSBPQlNUQUNLX0ggaW4gZGVwZW5kZW5jaWVzLgoJKHNkYm91dC5vKTogTGlrZXdpc2UuCgkoZW1pdC1ydGwubyk6IExpa2V3aXNlLgoJKHNpbXBsaWZ5LXJ0eC5vKTogTGlrZXdpc2UuCgkoZml4LWhlYWRlci5vKTogTGlrZXdpc2UuCgkoT0JKUyk6CUFkZCBjb25mbGljdC5vLgoJKGNvbmZsaWN0Lm8pOiBOZXcgcnVsZS4KCSogYmFzaWMtYmxvY2suaDogSW5jbHVkZSBwYXJ0aXRpb24uaC4KCShjb25mbGljdF9ncmFwaCk6IE5ldyB0eXBlZGVmLgoJKGNvbmZsaWN0X2dyYXBoX2VudW1fZm4pOiBMaWtld2lzZS4KCShjb25mbGljdF9ncmFwaF9uZXcpOiBOZXcgcHJvdG90eXBlLgoJKGNvbmZsaWN0X2dyYXBoX2RlbGV0ZSk6IExpa2V3aXNlLgoJKGNvbmZsaWN0X2dyYXBoX2FkZCk6IExpa2V3aXNlLgoJKGNvbmZsaWN0X2dyYXBoX2NvbmZsaWN0X3ApOiBMaWtld2lzZS4KCShjb25mbGljdF9ncmFwaF9lbnVtKTogTGlrZXdpc2UuCgkoY29uZmxpY3RfZ3JhcGhfbWVyZ2VfcmVncyk6IExpa2V3aXNlLgoJKGNvbmZsaWN0X2dyYXBoX3ByaW50KTogTGlrZXdpc2UuCgkoY29uZmxpY3RfZ3JhcGhfY29tcHV0ZSk6IExpa2V3aXNlLgoJKiBjb25mbGljdC5jOiBOZXcgZmlsZS4KCjIwMDAtMDQtMDYgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIHRsaW5rLmMgKHJlYWRfcmVwb19maWxlcyk6IERvbid0IGxvb2sgZm9yIC5ycG8gaW5mbyBmb3IKCWxpbmtlciBmbGFncy4KClRodSBBcHIgIDYgMjA6Mzk6MjYgMjAwMCAgSiJvcm4gUmVubmVja2UgPGFteWxhYXJAY3lnbnVzLmNvLnVrPgoKCSogc2guaCAoU1RSVUNUX1ZBTFVFLCBSRVRVUk5fSU5fTUVNT1JZKTogRGVmaW5lLgoKVGh1IEFwciAgNiAxOTozNDowOCAyMDAwICBKIm9ybiBSZW5uZWNrZSA8YW15bGFhckBjeWdudXMuY28udWs+CgoJKiBjb25maWcvc2gvbGliMWZ1bmNzLmFzbSAoX19fdWRpdnNpM19pNCk6CgkoIF9fU0g0X1NJTkdMRV9fIC8gX19TSDRfU0lOR0xFX09OTFlfXyB2YXJpYW50KTogdmFsdWUgZm9yIGZwc2NyCglvbmx5IGRlcGVuZHMgb24gRk1PVkRfV09SS1MuCgpUaHUgQXByICA2IDE5OjExOjQ3IDIwMDAgIEoib3JuIFJlbm5lY2tlIDxhbXlsYWFyQGN5Z251cy5jby51az4KCgkqIGNvbmZpZy9zaC9saWIxZnVuY3MuYXNtIChfX191ZGl2c2kzX2k0KTogV2hlbiB1c2luZyBmbW92ZCwKCW1ha2UgZG91YmxlIGNvbnN0YW50IDgtYnl0ZSBhbGlnbmVkLgoKMjAwMC0wNC0wNiAgSmFrdWIgSmVsaW5layAgPGpha3ViQHJlZGhhdC5jb20+CgoJKiBjb25maWcvc3BhcmMvc3BhcmMubWQgKG1vdnRmX2luc25fc3AzMiwgbW92dGZfaW5zbl92aXNfc3AzMiwKCW1vdnRmX25vX2VfaW5zbl9zcDMyLCBtb3Z0Zl9pbnNuX2hxX3NwNjQsIG1vdnRmX2luc25faHFfdmlzX3NwNjQsCgltb3Z0Zl9ub19lX2luc25fc3A2NCk6IEFjY2VwdCBsb2FkaW5nIDAuMCBpbnRvIEdFTkVSQUxfUkVHUy4KCShtb3Z0Zl9pbnNuX3NwNjQsIG1vdnRmX2luc25fdmlzX3NwNjQpOiBMaWtld2lzZS4KCUFjY2VwdCBzdG9yaW5nIEdFTkVSQUxfUkVHUyBpbnRvIG9mZnNldGFibGUgbWVtb3J5LgoJKiBjb25maWcvc3BhcmMvc3BhcmMuaCAoUFJFRkVSUkVEX1JFTE9BRF9DTEFTUyk6IERvbid0IGFsbG93CglidWlsZGluZyBhIFRGbW9kZSBjb25zdGFudCBvdGhlciB0aGFuIDAuMEwgaW50byBHRU5FUkFMX1JFR1MuCgoyMDAwLTA0LTA2ICBDbGludG9uIFBvcGV0eiAgPGNwb3BldHpAY3lnbnVzLmNvbT4KCgkqIHJlZ3JlbmFtZS5jIChyZWdyZW5hbWVfb3B0aW1pemUpOiBIYW5kbGUgbm8gUkVHX0FMTE9DX09SREVSLgoKMjAwMC0wNC0wNiAgWmFjayBXZWluYmVyZyAgPHphY2tAd29sZXJ5LmN1bWIub3JnPgoKCSogY3BwaGFzaC5jIChDUFBfSVNfTUFDUk9fQlVGRkVSLCBGT1JXQVJELCBQRUVLQyk6IERlbGV0ZS4KCShtYWNyb19jbGVhbnVwKTogTm8gbmVlZCB0byBjYXN0IHBidWYtPm1hY3JvLgoJKGNvbGxlY3RfZXhwYW5zaW9uKTogVXNlIF9jcHBfZ2V0X2RlZmluZV90b2tlbi4gIEdvdG8gZG9uZSBpZgoJaXQgcmV0dXJucyBWU1BBQ0UuICBSZW1vdmUgY2hlY2sgZm9yIHRyYWlsaW5nIHNwYWNlIGFmdGVyCglDUFBfQ09NTUVOVC4KCShfY3BwX2NyZWF0ZV9kZWZpbml0aW9uKTogRG9uJ3QgZGlkZGxlIGZsYWdzIGhlcmUuICBSZXR1cm4KCWRpcmVjdGx5IG9uIGVycm9yLgoJKHVuc2FmZV9jaGFycyk6IEhhbmRsZSBjMSBiZWluZyBFT0YuCgkocHVzaF9tYWNyb19leHBhbnNpb24pOiBVc2UgdW5zYWZlX2NoYXJzIGZvciBib3RoIGFjY2lkZW50YWwtcGFzdGUKCWNoZWNrcy4gIERvbid0IHB1c2ggdGhlIGJ1ZmZlciB0aWxsIGFmdGVyIHdlJ3JlIGRvbmUgd2l0aAoJdGhlbS4KCSogY3BwbGV4LmMgKFBFRUtCVUYsIEdFVEJVRiwgRk9SV0FSREJVRik6IE5ldy4KCShQRUVLTiwgRk9SV0FSRCwgR0VUQywgUEVFS0MpOiBVc2UgdGhlbS4KCShjcHBfcHVzaF9idWZmZXIpOiBEb24ndCBzZXQgbmV3LT5hbGltaXQuICBTZXQgbmV3LT5tYXJrCglhcHByb3ByaWF0ZWx5LgoJKF9jcHBfcGFyc2VfYXNzZXJ0aW9uKTogRG9uJ3QgTlVMIHRlcm1pbmF0ZS4KCShfY3BwX2xleF90b2tlbik6IEZpeCAtdHJhZGl0aW9uYWwgbWFjcm8gaGFuZGxpbmcuICBEb24ndCBza2lwCgloc3BhY2UgYmVmb3JlIGNhbGxpbmcgX2NwcF9wYXJzZV9hc3NlcnRpb24uICBSZW1vdmUgYWxsIHNldHMKCW9mIG9ubHlfc2Vlbl93aGl0ZS4gVHJlYXQgJ1xmJyBhcyBoc3BhY2UuICBEb24ndCBkbyBhbnl0aGluZwoJc3BlY2lhbCB3aXRoICdcbicgaGVyZS4KCShtYXliZV9tYWNyb2V4cGFuZCk6IEhhbmRsZSBUX0VNUFRZIGhhc2ggZW50cmllcyB3aXRob3V0CglwdXNoaW5nIGEgYnVmZmVyIGF0IGFsbC4KCShjcHBfZ2V0X3Rva2VuKTogSGFuZGxlIGNsZWFyaW5nIG9ubHlfc2Vlbl93aGl0ZSBoZXJlLiAgSGFuZGxlCglpbmNyZW1lbnRpbmcgdGhlIGxpbmUgbnVtYmVyIGhlcmUuICBDbGVhcgoJcG90ZW50aWFsX2NvbnRyb2xfbWFjcm8gYXMgd2VsbCBhcyBvbmx5X3NlZW5fd2hpdGUsIGlmCglhcHByb3ByaWF0ZS4KCShjcHBfZ2V0X25vbl9zcGFjZV90b2tlbik6IERvbid0IGVhdCBDUFBfUE9QIHRva2Vucy4KCShfY3BwX2dldF9kZWZpbmVfdG9rZW4pOiBOZXcgZnVuY3Rpb24sIGJhc2ljYWxseSBsaWtlCglfY3BwX2dldF9kaXJlY3RpdmVfdG9rZW4gd2FzIGJ1dCBkb2Vzbid0IGVhdCBob3Jpem9udGFsIHNwYWNlLgoJRG9uJ3QgZG8gYW55dGhpbmcgd2l0aCBvbmx5X3NlZW5fd2hpdGUgaGVyZS4KCShfY3BwX2dldF9kaXJlY3RpdmVfdG9rZW4pOiBKdXN0IGNhbGwgX2NwcF9nZXRfZGVmaW5lX3Rva2VuCglyZXBlYXRlZGx5IHRpbGwgaXQgcmV0dXJucyBub24taHNwYWNlLgoKCSogY3BwbGliLmMgKFBFRUtOLCBGT1JXQVJELCBHRVRDLCBQRUVLQyk6IERlbGV0ZS4KCShjb25kaXRpb25hbF9za2lwLCBza2lwX2lmX2dyb3VwKTogUmV0dXJuIGludC4KCShESVJFQ1RJVkVfVEFCTEUpOiBDaGFuZ2Ugb3JpZ2luIG9mIGFsbCBjb25kaXRpb25hbCBkaXJlY3RpdmVzCgl0byAiQ09ORCIuCgkoVFJBRF9ESVJFQ1RfUCk6IE5ldyBtYWNyby4KCShfY3BwX2hhbmRsZV9kaXJlY3RpdmUpOiBVc2UgX2NwcF9nZXRfZGlyZWN0aXZlX3Rva2VuLiAgSXNzdWUKCWFuIGVycm9yIGZvciBhIGJvZ3VzIGRpcmVjdGl2ZSwgdW5sZXNzIC1sYW5nLWFzbS4gIFVzZQoJVFJBRF9ESVJFQ1RfUC4gTG9vcCBjYWxsaW5nIGhhbmRsZXIgZnVuY3Rpb25zIHRpbGwgb25lIHJldHVybnMKCXplcm8uCgkoZ2V0X21hY3JvX25hbWUpOiBEb24ndCBkaWRkbGUgZmxhZ3MgaGVyZS4KCShkb19kZWZpbmUpOiBEaWRkbGUgZmxhZ3MgaGVyZS4gIFVzZSBfY3BwX2dldF9kaXJlY3RpdmVfdG9rZW4uCglDcmVhdGUgVF9FTVBUWSBub2RlcyBmb3IgI2RlZmluZSBtYWNybyAvKiBub3RoaW5nICovLgoJKGRvX3VuZGVmKTogRG9uJ3QgY29weSB0aGUgbmFtZS4gIFVzZSBfY3BwX2dldF9kaXJlY3RpdmVfdG9rZW4uCglVc2UgaHAtPm5hbWUgd2hlbiBjYWxsaW5nIHBhc3NfdGhydV9kaXJlY3RpdmUuCgkoZG9faWYsIGRvX2Vsc2UsIGRvX2VsaWYsIGRvX2lmZGVmLCBkb19pZm5kZWYsIGNvbmRpdGlvbmFsX3NraXApOgoJUmV0dXJuIHRoZSByZXN1bHQgb2YgY29uZGl0aW9uYWxfc2tpcCBhbmQvb3Igc2tpcF9pZl9ncm91cC4KCURvbid0IGNhbGwgX2NwcF9vdXRwdXRfbGluZV9jb21tYW5kLgoJKGNvbnNpZGVyX2RpcmVjdGl2ZV93aGlsZV9za2lwcGluZyk6IFVzZSBfY3BwX2dldF9kaXJlY3RpdmVfdG9rZW4uCglJc3N1ZSAtV3RyYWRpdGlvbmFsIHdhcm5pbmdzIGFzIGFwcHJvcHJpYXRlLiAgRG9uJ3QgY29tcGxhaW4KCWFib3V0IHVucmVjb2duaXplZCBkaXJlY3RpdmVzLiAgSWYgd2UgYXJlIHRvIHN0b3Agc2tpcHBpbmcsCglyZXR1cm4gdGhlIG51bWJlciBvZiB0aGUgZGlyZWN0aXZlIHRoYXQgZW5kZWQgdGhlIHNraXAuCgkoc2tpcF9pZl9ncm91cCk6IFVzZSBfY3BwX2dldF9kaXJlY3RpdmVfdG9rZW4uICBUdXJuIG9mZiBtYWNybwoJZXhwYW5zaW9uIGFuZCBsaW5lIGNvbW1hbmRzIHdoaWxlIHNraXBwaW5nLiAgUmV0dXJuIHRoZSByZXN1bHQKCW9mIGNvbnNpZGVyX2RpcmVjdGl2ZV93aGlsZV9za2lwcGluZywgaWYgbm9uemVyby4KCShkb19lbmRpZik6IEp1c3Qgc2V0IHBvdGVudGlhbF9jb250cm9sX21hY3JvIGhlcmUuCgkodmFsaWRhdGVfZWxzZSk6IFVzZSBfY3BwX2dldF9kaXJlY3RpdmVfdG9rZW4uCgkoZG9fYXNzZXJ0LCBkb191bmFzc2VydCk6IERvbid0IHNhdmUgcG9pbnRlcnMgaW50byB0aGUKCXRva2VuX2J1ZmZlciBhY3Jvc3MgY2FsbHMgdG8gdGhlIGxleGVyLiAgVXNlCglfY3BwX2dldF9kaXJlY3RpdmVfdG9rZW4uCgoJKiBjcHBsaWIuaCAoY3BwX2J1ZmZlcik6IFJlbW92ZSBhbGltaXQgYW5kIGNvbG5vLiAgTWFrZSBtYXJrIGEKCXBvaW50ZXIsIG5vdCBhbiBvZmZzZXQuICBSZXBsYWNlICdkYXRhJywgd2hpY2ggd2FzIGEgZ2VuZXJpYwoJcG9pbnRlciwgd2l0aCAnbWFjcm8nLCB3aGljaCBwb2ludHMgdG8gYSBzdHJ1Y3QgaGFzaG5vZGUuCgkoY3BwX3JlYWRlcik6IEFkZCAncG90ZW50aWFsX2NvbnRyb2xfbWFjcm8nIHBvaW50ZXIuCgkqIGNwcGhhc2guaCAoVF9VTlVTRUQpOiBSZXBsYWNlIHdpdGggVF9FTVBUWS4KCShDUFBfQlVGX0dFVCwgQ1BQX0ZPUldBUkQpOiBEZWxldGUuCgkoQ1BQX0lOX0NPTFVNTl8xLCBBREpBQ0VOVF9UT19NQVJLKTogTmV3IG1hY3Jvcy4KCShDUFBfSVNfTUFDUk9fQlVGRkVSLCBDUFBfU0VUX0JVRl9NQVJLLCBDUFBfR09UT19CVUZfTUFSSywKCUFDVElWRV9NQVJLX1ApOiBVcGRhdGUuCgkoX2NwcF9nZXRfZGVmaW5lX3Rva2VuKTogTmV3IGludGVybmFsIGZ1bmN0aW9uLgoJKiBjcHBmaWxlcy5jIChyZWFkX2luY2x1ZGVfZmlsZSk6IERvbid0IHNldCBmcC0+YWxpbWl0IG9yIGZwLT5jb2xuby4KCjIwMDAtMDQtMDUgICBCZW5qYW1pbiBLb3NuaWsgIDxia296QGN5Z251cy5jb20+CgoJKiBjb25maWd1cmUuaW46IEFuZCBoZXJlLgoJKiBjb25maWd1cmU6IFJlZ2VuZXJhdGUuCgkqIGFjY29uZmlnLmg6IEFkZCBFTkFCTEVfU1REX05BTUVTUEFDRSB0byBzZXQgZmxhZ19ob25vcl9zdGQgaWYKCS0tZW5hYmxlLWxpYnN0ZGN4eC12MyBpcyBwYXNzZWQgYXQgY29uZmlndXJlIHRpbWUuCgkqIGNvbmZpZy5oLmluOiBSZWdlbmVyYXRlLgoKMjAwMC0wNC0wNSAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGZpbmFsLmMgKGZpbmFsKTogVXNlIHhjYWxsb2MgdG8gYWxsb2NhdGUgbGluZV9ub3RlX2V4aXN0cy4KCSogZnVuY3Rpb24uYyAoZnJlZV9hZnRlcl9jb21waWxhdGlvbik6IEZyZWUgdGhlIHRlbXBfc2xvdHMuCgkoYXNzaWduX3N0YWNrX3RlbXBfZm9yX3R5cGUpOiBVc2UgeG1hbGxvYyB0byBhbGxvY2F0ZSB0ZW1wX3Nsb3RzLgoJKGNvbWJpbmVfdGVtcF9zbG90KTogRnJlZSB0ZW1wX3Nsb3RzIHdoZW4gdGhleSBnZXQgY29tYmluZWQuCgkocHVyZ2VfYWRkcmVzc29mKTogRml4IHR5cG8gaW4gY29tbWVudC4KCSogc3RtdC5jIChtYXJrX2dvdG9fZml4dXApOiBNYXJrIHRoZSBmaXh1cCBpdHNlbGYuCgkoZXhwYW5kX2ZpeHVwKTogQWxsb2NhdGUgdGhlIGZpeHVwIHdpdGggZ2djX2FsbG9jX29iai4KCgkqIGdnYy5oOiBJbmNsdWRlIHZhcnJheS5oLgoJKGdnY19wZW5kaW5nX3RyZWVzKTogRGVjbGFyZS4KCShnZ2NfbWFya190cmVlX2NoaWxkcmVuKTogUmVtb3ZlIGRlY2xhcmF0aW9uLgoJKGdnY19tYXJrX3RyZWUpOiBKdXN0IHB1c2ggdW5tYXJrZWQgdHJlZXMgb24gZ2djX3BlbmRpbmdfdHJlZXMuCgkqIGdnYy1jb21tb24uYyAoZ2djX3BlbmRpbmdfdHJlZXMpOiBOZXcgdmFyaWFibGUuCgkoZ2djX21hcmtfcm9vdHMpOiBDYWxsIGdnY19tYXJrX3RyZWVzLgoJKGdnY19tYXJrX3RyZWVfY2hpbGRyZW4pOiBSZW5hbWUgdG8gZ2djX21hcmtfdHJlZXMuICBQcm9jZXNzIGFsbAoJdGhlIGdnY19wZW5kaW5nX3RyZWVzLgoJKiBNYWtlZmlsZS5pbiAoR0dDX0gpOiBOZXcgdmFyaWFibGUuICBVc2UgaXQgdGhyb3VnaG91dCBpbiBwbGFjZQoJb2YgZ2djLmguCgpUaHUgQXByICA2IDAwOjMwOjUwIDIwMDAgIEoib3JuIFJlbm5lY2tlIDxhbXlsYWFyQGN5Z251cy5jby51az4KCgkqIHNoLmggKEZVTkNUSU9OX0FSR19QQVJUSUFMX05SRUdTKTogQWNjb21tb2RhdGUgYW4gdW5zaWduZWQKCUdFVF9NT0RFX1NJWkUuCgpXZWQgQXByICA1IDIzOjE3OjEwIDIwMDAgIEoib3JuIFJlbm5lY2tlIDxhbXlsYWFyQGN5Z251cy5jby51az4KCgkqIHNoLmMgKHNoX2luc25fbGVuZ3RoX2FkanVzdG1lbnQpOiBOZXcgZnVuY3Rpb24uCgkqIHNoLXByb3Rvcy5oIChzaF9pbnNuX2xlbmd0aF9hZGp1c3RtZW50KTogRGVjbGFyZS4KCSogc2guaCAoQURKVVNUX0lOU05fTEVOR1RIKTogVXNlIGl0LgoKV2VkIEFwciAgNSAxMjozNToxOCAyMDAwICBIYW5zLVBldGVyIE5pbHNzb24gIDxocEBheGlzLmNvbT4KCgkqIG9wdGFicy5jIChlbWl0X2xpYmNhbGxfYmxvY2spOiBSZW1vdmUgc3B1cmlvdXMgUkVHX0VRVUFMIG5vdGVzCglmcm9tIHRoZSBpbnNuIHdoZXJlIFJFR19SRVRWQUwgaXMgYWRkZWQuCgkoZW1pdF9ub19jb25mbGljdF9ibG9jayk6IERpdHRvLgoKCSogbWQudGV4aSAoU3RhbmRhcmQgTmFtZXMpOiBDbGFyaWZ5IHdoZW4gbW92WCBpcyBuZWVkZWQuCgoJKiBjb21iaW5lLmMgKHNpbXBsaWZ5X2NvbXBhcmlzb24pIFtNSU5VU106IERvIG5vdCByZXBsYWNlCglhbGwgKG9wIChtaW51cyBBIEIpIDApIHdpdGggKG9wIEEgQikuCgpXZWQgQXByICA1IDE4OjAzOjMxIDIwMDAgIFRvc2hpeWFzdSBNb3JpdGEgICh0b3NoaS5tb3JpdGFAc2VnYS5jb20pCgkJCSAgSiJvcm4gUmVubmVja2UgPGFteWxhYXJAY3lnbnVzLmNvLnVrPgoKCSogc2gubWQgKGJsb2NrX2x1bXBfcmVhbF9pNCk6IEFkZCBtaXNzaW5nIGNsb2JiZXIgb2YgVF9SRUcKCShibG9ja19sdW1wX3JlYWwpOiBMaWtld2lzZS4KCjIwMDAtMDQtMDUgIENocmlzIERlbWV0cmlvdSAgPGNnZEBuZXRic2Qub3JnPgoKCSogbWlwcy5oIChNQVNLX0RFQlVHX0EsIE1BU0tfREVCVUdfQiwgTUFTS19ERUJVR19DKTogWmVybyB0aGUKCXJlbWFpbmluZyBub256ZXJvIGRlYnVnZ2luZyBtYXNrcy4KCldlZCBBcHIgIDUgMDk6NDQ6MDcgMjAwMCAgSmVmZnJleSBBIExhdyAgKGxhd0BjeWdudXMuY29tKQoKCSogYmFzaWMtYmxvY2suaCAodmVyaWZ5X2Zsb3dfaW5mbyk6IERlY2xhcmUuCgkoZmxvd19sb29wX291dHNpZGVfZWRnZV9wKTogRGVjbGFyZS4KCSogZmxvdy5jICh2ZXJpZnlfZmxvd19pbmZvKTogUmVtb3ZlIGRlY2xhcmF0aW9uLgoJKGNsZWFyX2xvZ19saW5rcywgZmxvd19sb29wX291dHNpZGVfZWRnZV9wKTogTGlrZXdpc2UuCgpXZWQgQXByICA1IDA5OjM0OjI2IDIwMDAgIFBoaWxpcHBlIERlIE11eXRlciA8cGhkbUBtYWNxZWwuYmU+CgoJKiBtNjhrL202OGstcHJvdG9zLmggKGZpbmFsaXplX3BpYyk6IFR1cm4gcHJvdG90eXBlIG9mZiB1c2luZyBgI2lmIDAnLAoJbm90IEMrKyBjb21tZW50cy4KCjIwMDAtMDQtMDUgIEpha3ViIEplbGluZWsgIDxqYWt1YkByZWRoYXQuY29tPgoKCSogY29uZmlnL3NwYXJjL3NwYXJjLm1kIChzbmVkaV96ZXJvKzEsIG5lZ19zbmVkaV96ZXJvKzEsCglzbmVkaV96ZXJvX3RydW5jKzEsIHNlcWRpX3plcm8rMSwgbmVnX3NlcWRpX3plcm8rMSwKCXNlcWRpX3plcm9fdHJ1bmMrMSk6IEFsbG93IHNwbGl0cyBvbmx5IGlmIHJlZ2lzdGVycyBhcmUKCWRpZmZlcmVudC4KCjIwMDAtMDQtMDQgIFVscmljaCBEcmVwcGVyICA8ZHJlcHBlckBjeWdudXMuY29tPgoKCSogYWNjb25maWcuaDogQWRkIEhBVkVfR0FTX0hJRERFTi4KCSogY29uZmlnLmluOiBSZWdlbmVyYXRlZC4KCSogY29uZmlndXJlLmluOiBBZGQgdGVzdCBmb3IgLmhpZGRlbiBwc2V1ZG8tb3AgaW4gZ2FzLgoJKiBjb25maWd1cmU6IFJlZ2VuZXJhdGVkLgoJKiBjcnRzdHVmZi5jOiBJbmNsdWRlIGF1dG8taG9zdC5oLgoJRW1pdCBhZGRpdGlvbmFsIC5oaWRkZW4gcHNldWRvLW9wIGZvciBfX2Rzb19oYW5kbGUgaWYgdGhlCglhc3NlbWJsZXIga25vd3MgYWJvdXQgaXQuCgoyMDAwLTA0LTA0ICBQaGlsaXBwZSBEZSBNdXl0ZXIgIDxwaGRtQG1hY3FlbC5iZT4KCgkqIGNwcGhhc2guYyAoX2NwcF9mcmVlX2RlZmluaXRpb24pOiBUZXN0IGFyZ25hbWVzLCBub3QgbmFyZ3MgPj0gMCwKCWJlZm9yZSBmcmVlaW5nIGFyZ25hbWVzLgoJKiBjcHBsaWIuYyAoZG9faWZuZGVmKTogQ2FzdCByZXR1cm4gdmFsdWUgb2YgeHN0cmR1cC4KCjIwMDAtMDQtMDUgIE1pY2hhZWwgTWVpc3NuZXIgIDxtZWlzc25lckByZWRoYXQuY29tPgoKCSogY29uZmlnL3JzNjAwMC9yczYwMDAuYyAocHJpbnRfb3BlcmFuZCk6IFBhdGNoIGZyb20gSm9uYXRoYW4KCVdhbHRvbiA8am9uYm95QGdvcmRpYW4uY29tPiB0byBtYWtlIG1lbW9yeSByZWZlcmVuY2VzIHdpdGggdXBkYXRlCgl3b3JrIHd0aWggLW1yZWduYW1lcy4KCjIwMDAtMDQtMDQgIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIHJlZ3JlbmFtZS5jIChyZWdub19maXJzdF91c2VfaW4pOiBXcmFwIHByb3RvdHlwZSBpbiBQQVJBTVMuCgkocmVncmVuYW1lX29wdGltaXplKTogUmVuYW1lIHZhcmlhYmxlcyBgZGVmX3VzZXMnIGFuZAoJYGV4dF9iYXNpY19ibG9ja3MnIHRvIGF2b2lkIGNvbmZsaWN0cyB3aXRoIHNpbWlsYXJseSBuYW1lZAoJdHlwZWRlZnMgaW4gdHJhZGl0aW9uYWwgQy4KCgkqIGNhbGxzLmMgKGluaXRpYWxpemVfYXJndW1lbnRfaW5mb3JtYXRpb24pOiBGaXggdHlwbyBpbiBwcmV2aW91cwoJY2hhbmdlLgoKMjAwMC0wNC0wNCAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAY3lnbnVzLmNvbT4KCgkqIHJlZ3JlbmFtZS5jIChjb25zaWRlcl9hdmFpbGFibGUpOiBUZXN0IGZpeGVkX3JlZ3Mgbm90CglQSUNfT0ZGU0VUX1RBQkxFX1JFR05VTS4KCjIwMDAtMDQtMDQgIEdlb2ZmIEtlYXRpbmcgIDxnZW9mZmtAY3lnbnVzLmNvbT4KCgkqIGNvbmZpZy9yczYwMDAvdC1wcGNjb21tIChFWFRSQV9NVUxUSUxJQl9QQVJUUyk6IEFkZCBjcnRiZWdpbiwKCWNydGVuZC4KCShDUlRTVFVGRl9UX0NGTEFHU19TKTogRGVsZXRlIGRlZmluaXRpb24uCgkqIGNvbmZpZy9yczYwMDAvc3lzdjQuaCAoU1RBUlRGSUxFX0xJTlVYX1NQRUMpOiBBbHdheXMgdXNlIGNydGJlZ2luLgoJKEVOREZJTEVfTElOVVhfU1BFQyk6IEFsd2F5cyB1c2UgY3J0ZW5kLgoJKiBjb25maWd1cmUuaW4gKHBvd2VycGMtKi1saW51eC1nbnVsaWJjMSk6IERvbid0IGRlZmluZSBleHRyYV9wYXJ0cy4KCShwb3dlcnBjLSotbGludXgtZ251KTogTGlrZXdpc2UuCgkqIGNvbmZpZ3VyZTogUmVnZW5lcmF0ZS4KCgkqIGNvbmZpZy9yczYwMDAvZWFiaS5oOglEb24ndCBpbmNsdWRlIHN5c3Y0LmguCgkoTVVMVElMSUJfREVGQVVMVFMpOiBEb24ndCBkZWZpbmUuCgkqIGNvbmZpZy9yczYwMDAvZWFiaWFpeC5oOiBEb24ndCBpbmNsdWRlIGVhYmkuaC4KCSogY29uZmlnL3JzNjAwMC9lYWJpbGUuaDogRGVsZXRlLgoJKiBjb25maWcvcnM2MDAwL2VhYmlsZXNpbS5oOiBEZWxldGUuCgkqIGNvbmZpZy9yczYwMDAvZWFiaXNpbS5oOiBEb24ndCBpbmNsdWRlIGVhYmkuaC4KCSogY29uZmlnL3JzNjAwMC9saW51eC5oOiBEb24ndCBpbmNsdWRlIHN5c3Y0LmguCgkoSlVNUF9UQUJMRVNfSU5fVEVYVF9TRUNUSU9OKTogRG9uJ3QgcmVkZWZpbmUuCgkoTVVMVElMSUJfREVGQVVMVFMpOiBEb24ndCByZWRlZmluZS4KCSogY29uZmlnL3JzNjAwMC9ydGVtcy5oOiBEb24ndCBpbmNsdWRlIGVhYmkuaC4KCSogY29uZmlnL3JzNjAwMC9zb2wyLmg6IERvbid0IGluY2x1ZGUgc3lzdjRsZS5oLgoJKiBjb25maWcvcnM2MDAwL3N5c3Y0bGUuaDogRG9uJ3QgaW5jbHVkZSBzeXN2NC5oLgoJKiBjb25maWcvcnM2MDAwL3QtcHBjOiBEZWxldGUuCgkqIGNvbmZpZy9yczYwMDAvdC1wcGNnYXM6IENvcnJlY3QgY29tbWVudC4KCSogY29uZmlnL3JzNjAwMC90LXBwY29zOiBDb3JyZWN0IGNvbW1lbnQuICBEb24ndCBidWlsZAoJbXVsdGlsaWJzIGZvciAtZlBJQywgcmF0aGVyIHVzZSAtZlBJQyAtbXN0cmljdC1hbGlnbgoJYXMgZGVmYXVsdC4KCSogY29uZmlnL3JzNjAwMC90LXBwYzogRGVsZXRlLgoJKiBjb25maWcvcnM2MDAwL3Z4cHBjLmg6IERvbid0IGluY2x1ZGUgc3lzdjQuaC4KCSogY29uZmlnL3JzNjAwMC92eHBwY2xlLmg6IERlbGV0ZS4KCSogY29uZmlndXJlLmluOiBVc2UgbXVsdGlwbGUgaGVhZGVyIGZpbGVzIGZvciBwMnBjIEVMRiB0YXJnZXRzCglwb3dlcnBjLWVhYmlhaXgsIHBvd2VycGMtZWFiaXNpbSwgcG93ZXJwYy1ydGVtcywgcG93ZXJwY2xlLWVhYmksCglwb3dlcnBjbGUtZWFiaXNpbSwgcG93ZXJwYy1lbGYsIHBvd2VycGNsZS1lbGYsIHBvd2VycGMtbGludXgtZ251LAoJcG93ZXJwYy1saW51eC1nbnVsaWJjMSwgcG93ZXJwYy1zeXN2LCBwb3dlcnBjbGUtc3lzdiwKCXBvd2VycGMtdnh3b3JrcywgcG93ZXJwY2xlLXZ4d29ya3MuICBBc3N1bWUgR0FTIGZ1bmN0aW9uYWxpdHkgaXMKCWFsd2F5cyBhdmFpbGFibGUgZm9yIHRoZXNlIHBsYXRmb3Jtcy4KCjIwMDAtMDQtMDQgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgoJKiBjYWxscy5jICh0cnlfdG9faW50ZWdyYXRlKTogSW5pdGlhbGl6ZSByZWdfcGFybV9zdGFja19zcGFjZS4KCjIwMDAtMDQtMDQgIFN0YW4gQ294ICA8c2NveEBjeWdudXMuY29tPgoKCSogTWFrZWZpbGUuaW46IEFkZCBydWxlcyBmb3IgcmVncmVuYW1lLm8KCSogcmVncmVuYW1lLmM6IE5ldyBmaWxlLgoJKiBydGwuaCAocmVncmVuYW1lX29wdGltaXplKTogQWRkIHByb3RvdHlwZS4KCSogdG9wbGV2LmMgKHJlbmFtZV9yZWdpc3RlcnNfZHVtcCwgZmxhZ19yZW5hbWVfcmVnaXN0ZXJzKTogTmV3IHZhcmlhYmxlcwoJKGNvbXBpbGVfZmlsZSwgZGVjb2RlX2Rfb3B0aW9uKTogQWRkIHN1cHBvcnQgZm9yIC1mcmVuYW1lLXJlZ2lzdGVycy4KCShyZXN0X29mX2NvbXBpbGF0aW9uKTogQ2FsbCByZWdyZW5hbWVfb3B0aW1pemUuCgkqIGNvbmZpZy9pYTY0L2lhNjQuaCAoSEFSRF9SRUdOT19SRU5BTUVfT0ssIFJFTkFNRV9FWFRFTkRFRF9CTE9DS1MpOgoJTmV3IG1hY3Jvcy4KCjIwMDAtMDQtMDQgIE1hcnRpbiB2LiBM9ndpcyAgPGxvZXdpc0BpbmZvcm1hdGlrLmh1LWJlcmxpbi5kZT4KCgkqIE1ha2VmaWxlIChnY2NidWcpOiBOZXcgdGFyZ2V0LgoJKGRvYyk6IERlcGVuZCBvbiBpdC4KCSogZ2NjLnRleGkgKEJ1Z3MpOiBMaW5rIHN1Ym5vZGVzLgoJKGdjY2J1Zyk6IE5ldyBub2RlLgoJKiBnY2NidWcuaW4gKENBVEVHT1JJRVMpOiBSZW1vdmUgZ2MsIGhvc3QsIHByb2ZpbGluZywgbGliZ2NjLgoJRG9jdW1lbnQgc2V2ZXJpdGllcywgcHJpb3JpdGllcywgYW5kIGNsYXNzZXMgaW4gYnVnIGZvcm0uCgoyMDAwLTA0LTA0ICBaYWNrIFdlaW5iZXJnICA8emFja0B3b2xlcnkuY3VtYi5vcmc+CgoJKiBjcHBsZXguYyAodHJpZ3JhcGhfbWFwLCBzcGVjY2FzZSk6IENvbWJpbmUgaW50byBzaW5nbGUKCXRhYmxlLCBjaGFydGFiLgoJKE5PUk1BTCwgTk9OVFJJKTogTmV3IG1hY3Jvcy4KCShfY3BwX3JlYWRfYW5kX3ByZXNjYW4pOiBDaGFuZ2UgdG8gdXNlIHVuaWZpZWQgdGFibGUuICBVc2UKCWlzX2hzcGFjZSB0byB0ZXN0IGZvciB3aGl0ZXNwYWNlLgoKCSogZGJ4b3V0LmMgKENPTlRJTik6IElmIGl0IGRvZXNuJ3QgaGF2ZSB0byBkbyBhbnl0aGluZywgZ2l2ZSBpdCBhCglkZWZpbml0aW9uIHRoYXQgZG9lc24ndCBwcm92b2tlIHRoZSAiZW1wdHkgYm9keSBpbiBhbgoJaWYtc3RhdGVtZW50IiB3YXJuaW5nLgoKMjAwMC0wNC0wNCAgQ2xpbnRvbiBQb3BldHogIDxjcG9wZXR6QGN5Z251cy5jb20+CgoJKiBidWlsdGlucy5jIChleHBhbmRfYnVpbHRpbl9zdHJsZW4pOiBGb3JjZSB0aGUgc291cmNlIHRvCgliZSBhIG1lbW9yeSBhZGRyZXNzLgoKMjAwMC0wNC0wNCAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogY3BwbGliLmMgKEQpOiBBZGp1c3QgdG8gY2FsbCBDT05DQVQyIG1hY3JvIHdpdGhvdXQgd2hpdGVzcGFjZS4KClR1ZSBBcHIgIDQgMTk6MTc6MjAgTUVUIERTVCAyMDAwICBKYW4gSHViaWNrYSAgPGpoQHN1c2UuY3o+CgoJKiBjYWxscy5jIChFQ0ZfTUFMTE9DLCBFQ0ZfTUFZX0JFX0FMTE9DQSwgRUNGX1JFVFVSTlNfVFdJQ0UsCgkgRUNGX0xPTkdKTVAsIEVDRl9GT1JLX09SX0VYRUMpOiAgTmV3IGNvbnN0YW50cy4KCShFQ0ZfSVNfQ09OU1QpOiBSZW5hbWUgdG8gRUNGX0NPTlNULgoJKHNwZWNpYWxfZnVuY3Rpb25fcCk6IE1ha2Ugc3RhdGljLCBjaGFuZ2UgaW50ZXJmYWNlLgoJKGZsYWdzX2Zyb21fZGVjbF9vcl90eXBlLCB0cnlfdG9faW50ZWdyYXRlKTogQnJlYWsgb3V0IGZyb20gLi4uCgkoZXhwYW5kX2NhbGwpIC4uLiBoZXJlOyBjb252ZXJ0IG51bWJlciBvZiB2YXJpYWJsZXMgdG8gZmxhZ3MuCgkoZW1pdF9saWJyYXJ5X2NhbGxfdmx1ZV8xKTogTGlrZXdpc2UuCgkoc2V0am1wX2NhbGxfcCk6IE5ldyBmdW5jdGlvbi4KCShpbml0aWFsaXplX2FyZ3VtZW50X2luZm9ybWF0aW9uKTogQWNjZXB0cyBmbGFncyBhcyBhcmd1bWVudDsKCXJldHVybiBmbGFncy4KCShwcmVjb21wdXRlX2FyZ3VtZW50cyk6IExpa2V3aXNlLgoJKiB0cmVlLmggKHNwZWNpYWxfZnVuY3Rpb25fcCk6IFJlbW92ZS4KCShzZXRqbXBfY2FsbF9wKTogQWRkIHByb3RvdHlwZS4KCjIwMDAtMDQtMDQgIEpha3ViIEplbGluZWsgIDxqYWt1YkByZWRoYXQuY29tPgoKCSogY29uZmlnL3NwYXJjL3NwYXJjLmggKFJUWF9PS19GT1JfT0ZGU0VUX1ApOiBMZWF2ZSBtaW5vciBtYXJnaW4KCXNvIHRoYXQgYWRkcmVzc2VzIGFyZSBvZmZzZXRhYmxlIGJ5IHVwIHRvIDE2IGJ5dGVzLgoJKEdPX0lGX0xFR0lUSU1BVEVfQUREUkVTUyk6IERvbid0IGFsbG93IFJFRytSRUcgYWRkcmVzc2VzIGZvcgoJbm9uLW9wdGltaXppbmcgVEFSR0VUX0FSQ0gzMiBpbiBERiBvciBESSBtb2RlcyBiZWNhdXNlIGl0IGlzIG5vdAoJb2Zmc2V0YWJsZS4KCgkqIGNvbmZpZy9zcGFyYy9zcGFyYy5tZCAobW92ZGlfaW5zbl9zcDY0X25vdmlzKTogTmV3IHBhdHRlcm4uCgkobW92ZGlfaW5zbl9zcDY0X3Zpcyk6IFJlbmFtZWQgZnJvbSBtb3ZkaV9pbnNuX3NwNjQuCgkobW92c2YpOiBEb24ndCBmb3JjZSBhbnkgY29uc3RhbnQgdG8gbWVtb3J5IGlmIHRhcmdldCBpcyBpbnRlZ2VyCgloYXJkIHJlZ2lzdGVyLgoJTW92ZSBmcF96ZXJvX29wZXJhbmQgY2hlY2sgYmVsb3cgdGhlIGNvbnN0MF9ydHggY2hlY2suCgkobW92dGYpOiBMaWtld2lzZS4gQWxzbyBhbGxvdyBmcF96ZXJvX29wZXJhbmQgZm9yIHN0b3JlcyBpbnRvCgltZW1vcnkuCgkobW92ZGYpOiBMaWtld2lzZS4gQWxzbyBhbGxvdyBmcF96ZXJvX29wZXJhbmQgZm9yIHN0b3JlcyBpbnRvCgltZW1vcnkgYW5kIGludG8gaW50ZWdlciBoYXJkIHJlZ2lzdGVycy4KCShjbGVhcl9kZiwgY2xlYXJfZGZwLCBtb3ZkZl9jb25zdF9pbnRyZWdfc3AzMiwKCW1vdmRmX2NvbnN0X2ludHJlZ19zcDY0KTogUmVtb3ZlLgoJKG1vdmRmX2luc25fc3AzMiwgbW92ZGZfbm9fZV9pbnNuX3NwMzIpOiBSZWRvIGNvbnN0cmFpbnRzIGFuZAoJY29uZGl0aW9ucy4KCShtb3ZkZl9ub19lX2luc25fdjlfc3AzMik6IE5ldyBwYXR0ZXJuLgoJKG1vdmRmX2luc25fdjlvbmx5KTogUmVtb3ZlLgoJKG1vdmRmX2luc25fdjlvbmx5X25vdmlzLCBtb3ZkZl9pbnNuX3Y5b25seV92aXMpOiBOZXcgcGF0dGVybnMuCgkobW92ZGZfaW5zbl9zcDY0KTogUmVtb3ZlLgoJKG1vdmRmX2luc25fc3A2NF9ub3ZpcywgbW92ZGZfaW5zbl9zcDY0X3Zpcyk6IE5ldyBwYXR0ZXJucy4KCShtb3ZkZl9ub19lX2luc25fc3A2NCk6IEFsbG93IHN0b3JpbmcgMC4wIGludG8gbWVtb3J5LgoJKGZvbGxvd2luZyBzcGxpdHMpOiBSZXdyaXRlIGNvbmRpdGlvbnMuIEFkZCB0d28gbmV3IHNwbGl0cwoJZm9yIHN0b3JpbmcgMC4wIGludG8gbWVtb3J5IGFuZCByZWdpc3RlcnMuCgkoY2xlYXJfdGYsIGNsZWFyX3RmKzEsIGNsZWFyX3RmcCwgY2xlYXJfdGZwKzEpOiBSZW1vdmUuCgkobW92dGZfaW5zbl9zcDMyKTogUmVkbyBjb25zdHJhaW50cyBhbmQgY29uZGl0aW9ucy4KCShtb3Z0Zl9pbnNuX3Zpc19zcDMyKTogTmV3IHBhdHRlcm4uCgkobW92dGZfbm9fZV9pbnNuX3NwMzIpOiBSZWRvIGNvbnN0cmFpbnRzIGFuZCBjb25kaXRpb25zLgoJKG1vdnRmX2luc25faHFfc3A2NCk6IExpa2V3aXNlLgoJKG1vdnRmX2luc25faHFfdmlzX3NwNjQpOiBOZXcgcGF0dGVybi4KCShtb3Z0Zl9pbnNuX3NwNjQpOiBSZWRvIGNvbnN0cmFpbnRzIGFuZCBjb25kaXRpb25zLgoJKG1vdnRmX2luc25fdmlzX3NwNjQpOiBOZXcgcGF0dGVybi4KCShtb3Z0Zl9ub19lX2luc25fc3A2NCk6IFJlZG8gY29uc3RyYWludHMgYW5kIGNvbmRpdGlvbnMuCgkobW92dGZfbm9fZV9pbnNuX3NwNjQrMSk6IE5ldyBzcGxpdCBmb3Igc3RvcmluZyAwLjBMIGludG8gcmVnaXN0ZXJzCglvciBtZW1vcnkuCgkqIGNvbmZpZy9zcGFyYy9zcGFyYy5jIChzcGFyY19vdmVycmlkZV9vcHRpb25zKTogQXNzdW1lIHY5IGlmIGVpdGhlcgoJLW12aXMgb3IgLW02NCB0byB0YWtlIGRvd24gdGhlIG51bWJlciBvZiB2YXJpb3VzIHJlbG9hZCBwYXR0ZXJucy4KClR1ZSBBcHIgIDQgMDA6NDE6NTMgMjAwMCAgSmVmZnJleSBBIExhdyAgKGxhd0BjeWdudXMuY29tKQoKCSogcGEvcGEtNjQuaDogTmV3IGZpbGUuCgkqIHBhL3BhNjQtcmVncy5oOiBOZXcgZmlsZS4KCSogcGEvcGE2NC1zdGFydC5oOiBOZXcgZmlsZS4KCSogcGEvdC1wYTY0OiBOZXcgZmlsZS4KCSogcGEveG0tcGE2NGhwdXguaDogTmV3IGZpbGUuCgoyMDAwLTA0LTAzICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBzcGFyYy5jIChvdXRwdXRfcmVzdG9yZV9yZWdzKTogUHJvdG90eXBlLgoJKHNwYXJjX2VtaXRfZmxvYXRfbGliX2NtcCk6IENvbnN0aWZpY2F0aW9uLgoKCSogZW1pdC1ydGwuYyAoY29uc3RfaW50X2h0YWJfaGFzaCwgY29uc3RfaW50X2h0YWJfZXEpOiBMaWtld2lzZS4KCgkqIHJlbG9hZDEuYyAocmVsb2FkX2NzZV9kZWxldGVfbm9vcF9zZXQsIHJlbG9hZF9jc2Vfc2ltcGxpZnkpOgoJUHJvdG90eXBlLgoKCSogc2ltcGxpZnktcnR4LmMgKGVudHJ5X2FuZF9ydHhfZXF1YWxfcCk6IENvbnN0aWZpY2F0aW9uLgoJKGdldF92YWx1ZV9oYXNoLCBoYXNoX3J0eCk6IExpa2V3aXNlLgoKCSogc3NhLmMgKGNvbXB1dGVfY29uc2VydmF0aXZlX3JlZ19wYXJ0aXRpb24pOiBQcm90b3R5cGUuCgoJKiB0cmVlLmMgKG1hcmtfaGFzaF9lbnRyeSk6IFByb3RvdHlwZS4KCjIwMDAtMDQtMDMgIFphY2sgV2VpbmJlcmcgIDx6YWNrQHdvbGVyeS5jdW1iLm9yZz4KCgkqIGJiLXJlb3JkZXIuYyAodmVyaWZ5X2luc25fY2hhaW4pOiAjaWZkZWYgb3V0IHVubGVzcyBFTkFCTEVfQ0hFQ0tJTkcuCgkqIGkzODYuaCAoRlVOQ1RJT05fQVJHX1JFR05PX1ApOiBSZW1vdmUgdW5uZWNlc3NhcnkgdGVzdCBmb3IgTiA+PSAwLgoJKiBpMzg2Lm1kIChjYWxsX3ZhbHVlLCBjYWxsX3ZhbHVlX3BvcCk6IFJlbW92ZSB1bnVzZWQgdmFyaWFibGUgJ2FkZHInLgoKCSogZ2NjLmMgKEMgc3BlY3MpOiBQYXNzIC1mbm8tc2hvdy1jb2x1bW4gdG8gdGhlIHByZXByb2Nlc3Nvci4KCSogb2JqYy9sYW5nLXNwZWNzLmg6IExpa2V3aXNlLgoKMjAwMC0wNC0wMyAgTmVpbCBCb290aCAgPE5laWxCQGVhcnRobGluZy5uZXQ+CgoJKiBjcHBleHAuYzogd3JhcCBsb25nIGxpbmVzLiAgTmV3IG1hY3JvcyBDUFBfSUNFLCBTWU5UQVhfRVJST1IKCWFuZCBTWU5UQVhfRVJST1IyLiBSZXBsYWNlIGAnIGluIG1lc3NhZ2VzIHdpdGggJycuCgkob3BfdG9fc3RyKTogTWFrZSByZS1lbnRyYW50LgoJKF9jcHBfcGFyc2VfZXhwcik6IEltcGxlbWVudCBuZXcgZXJyb3IgbWFjcm9zLiBVc2UgfCByYXRoZXIKCXRoYW4gfHwgdG8gbG9naWNhbGx5IG9yIDIgYm9vbGVhbiBpbnRlZ2Vycy4gIFNpbXBseSBleHByZXNzaW9uCgljaGVja2luZyB3ZSBoYXZlIGEgbGVmdCBvcGVyYW5kIGlmZiBuZWVkZWQuCgoyMDAwLTA0LTAzICBOaWNrIENsaWZ0b24gIDxuaWNrY0BjeWdudXMuY29tPgoKCSogTWFrZWZpbGUuaW4gKGRpYWdub3N0aWMubyk6IERlcGVuZCB1cG9uIGRpYWdub3N0aWMuYwoKMjAwMC0wNC0wMyAgUGhpbGlwIEJsdW5kZWxsICA8cGhpbGJAZ251Lm9yZz4KCgkqIGNvbmZpZy9hcm0vbGludXgtZWxmLmggKFNVQlRBUkdFVF9FWFRSQV9MSU5LX1NQRUMpOiBGaXggdHlwb3MuCgoyMDAwLTA0LTAzICBGZWxpeCBMZWUgIDxmbGVlQGN5Z251cy5jb20+CgoJKiBmaXhpbmMvc2VydmVyLmMgKGZpbmRfc2hlbGwpOiBOZXcgZnVuY3Rpb24uICBBdm9pZCAkU0hFTEwuCgkocnVuX3NoZWxsKTogVXNlIGl0LgoKMjAwMC0wNC0wMyAgSm9uYXRoYW4gTGFybW91ciAgPGpsYXJtb3VyQHJlZGhhdC5jby51az4KCgkqIE1ha2VmaWxlLmluIChzdG1wLWludC1oZHJzKTogTWFrZSBpbmNsdWRlIHN1YmRpciBoZXJlLi4uCgkoc3RtcC1maXhwcm90byk6IC4uLnJhdGhlciB0aGFuIGhlcmUuCgpNb24gQXByICAzIDAwOjUwOjA2IDIwMDAgIEphc29uIEVja2hhcmR0IDxqbGVAY3lnbnVzLmNvbT4KCgkqIHBhLmMgKHByaW50X29wZXJhbmQpOiBDb21wdXRlICdiYXNlJyBvbmx5IGluc2lkZSB0aGUgY29kZSBwYXRocwoJdGhhdCB1c2UgaXQuCgoyMDAwLTA0LTAzICBHZW9mZnJleSBLZWF0aW5nICA8Z2VvZmZrQGN5Z251cy5jb20+CgoJKiBzdG9yLWxheW91dC5jIChieXRlX2Zyb21fcG9zKTogVXNlIFRSVU5DX0RJVl9FWFBSIHJhdGhlciB0aGFuCglDRUlMX0RJVl9FWFBSLgoKMjAwMC0wNC0wMyAgUGhpbGlwcCBUaG9tYXMgIDxwdGhvbWFzQHN1c2UuZGU+CgoJKiBpMzg2LmggKFRBUkdFVF9TV0lUQ0hFUyk6IFJlbW92ZSBib2d1cyBlbXB0eSBzdHJpbmdzLCBmaXggdHlwby4KCk1vbiBBcHIgIDMgMDA6MDI6NTkgMjAwMCAgQnJhZCBMdWNpZXIgPGx1Y2llckBtYXRoLnB1cmR1ZS5lZHU+CgoJKiBNYWtlZmlsZS5pbiAoYWxpYXMubyk6IERlcGVuZCBvbiAkKFRSRUVfSCkuCgoyMDAwLTA0LTAyICBaYWNrIFdlaW5iZXJnICA8emFja0B3b2xlcnkuY3VtYi5vcmc+CgoJKiBjcHBpbml0LmMgKGNwcF9zdGFydF9yZWFkKTogVHVybiBvZmYgLVd0cmFkaXRpb25hbCBpZgoJcHJvY2Vzc2luZyBDKysuCgkqIGNwcGxpYi5jIChfY3BwX2hhbmRsZV9kaXJlY3RpdmUpOiBJbXByb3ZlIHdhcm5pbmdzIGZvcgoJdHJhZGl0aW9uYWwgQyBhbmQgaW5kZW50ZWQgZGlyZWN0aXZlcy4KCgkqIGVucXVpcmUuYywgZ3N5c2xpbWl0cy5oLCBsaW1pdHkuaCwgY29uZmlnL2NvbnZleC9maXhpbmMuY29udmV4LAoJZml4aW5jL2ZpeGluYy5pcml4LCBmaXhpbmMvZml4aW5jLnNjbywgZml4aW5jL2ZpeGluYy53cmFwLAoJZml4aW5jL2luY2xoYWNrLmRlZjogSW5kZW50IHRoZSAjIG9mICNpbmNsdWRlX25leHQgb25lIHNwYWNlLgoJKiBjcC9ydHRpLmM6IFVuLWluZGVudCAjaWYgYW5kICNlbmRpZi4KCgkqIGNwcGV4cC5jIChfY3BwX3BhcnNlX2V4cHIpOiBJZiBsZXggcmV0dXJucyAnIycsIGl0J3MgYQoJc3ludGF4IGVycm9yLCBidXQgYW4gZXJyb3IgaGFzIGFscmVhZHkgYmVlbiBwcmludGVkLgoJKiBjcHBsZXguYyAoX2NwcF9wYXJzZV9hc3NlcnRpb24pOiBHaXZlIGEgbW9yZSBzcGVjaWZpYyBlcnJvcgoJbWVzc2FnZSB3aGVuIGNhbGxlZCB3aXRoIG5vdGhpbmcgcmVtYWluaW5nIG9uIHRoZSBsaW5lLgoJKF9jcHBfbGV4X3Rva2VuKTogSWYgX2NwcF9wYXJzZV9hc3NlcnRpb24gZmFpbHMsIHJldHVybiBhbgoJT1RIRVIgdG9rZW4sIG5vdCBhbiBBU1NFUlRJT04uCgkqIGNwcGxpYi5jIChkb19hc3NlcnQpOiBXaGVuIHdlIGNyZWF0ZSBhICdiYXNlJyBub2RlLCBjbGVhcgoJaXRzIGFzY2hhaW4gcG9pbnRlci4KCjIwMDAtMDQtMDIgIE5laWwgQm9vdGggPE5laWxCQGVhcnRobGluZy5uZXQ+CgoJKiBjcHBleHAuYzogIE5ldyB0eXBlZGVmIG9wX3QuICBzdHJ1Y3Qgb3BlcmF0aW9uIGFuZCBzdHJ1Y3QKCXRva2VuIHVwZGF0ZWQgdG8gdXNlIGl0LgoJKG9wX3RvX3N0cik6IE5ldyBmdW5jdGlvbi4KCShfY3BwX3BhcnNlX2V4cHIpOiBFcnJvciBtZXNzYWdlcyBtb2RpZmllZCB0byB1c2Ugb3BfdG9fc3RyLgoKMjAwMC0wNC0wMiAgTWljaGFlbCBIYXllcyAgPG0uaGF5ZXNAZWxlYy5jYW50ZXJidXJ5LmFjLm56PgoKCSogY29uZmlnL2M0eC9jNHguYyAoYzR4X2Z1bmN0aW9uX2FyZyk6IENoZWNrIGZvciB2b2lkX3R5cGVfbm9kZQoJYmVmb3JlIGNoZWNraW5nIE1VU1RfUEFTU19JTl9TVEFDSy4KCjIwMDAtMDQtMDIgIE5laWwgQm9vdGggPE5laWxCQGVhcnRobGluZy5uZXQ+CgoJKiBjcHBleHAuYzogIE5ldyBGSU5JU0hFRCBkdW1teSB0b2tlbi4gIENvbWJpbmUgb3BlcmF0b3IgaW5pdGlhbAoJZmxhZ3MgYW5kIGluaXRpYWwgcHJpb3JpdHkgaW50byBhIHNpbmdsZSBjb25zdGFudC4gIE5ldwoJRVFVQUxJVFkgbWFjcm8uICBOZXcgb3BlcmF0b3IgZmxhZyBTSE9SVF9DSVJDVUlULgoJKF9wYXJzZV9jcHBfZXhwcik6IEltcGxlbWVudCBuZXcgY29uc3RhbnRzLiAgVGFrZSBsZWZ0IG9wZXJhbmQKCWNoZWNrcyBvdXQgb2YgcmVkdWN0aW9uIGxvb3AuICBIYW5kbGUgU0hPUlRfQ0lSQ1VJVC4gIEVuZCBvZgoJcGFyc2UgaW5kaWNhdGVkIGJ5IHJlZHVjaW5nIEZJTklTSEVEIHRva2VuLiAgUmVtb3ZlIG5ldyBsaW5lcwoJZnJvbSBjcHBfZXJyb3IgbWVzc2FnZXMuCgoyMDAwLTA0LTAxICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogZW1pdC1ydGwuYyAoZ2VuX3J0eF9DT05TVF9JTlQpOiBDcmVhdGUgY2FjaGVkIENPTlNUX0lOVHMgb24gdGhlCglwZXJtYW5lbnQgb2JzdGFjay4KCjIwMDAtMDQtMDEgIFphY2sgV2VpbmJlcmcgIDx6YWNrQHdvbGVyeS5jdW1iLm9yZz4KCgkqIGNwcGxpYi5jOiBJbmNsdWRlIHN5bWNhdC5oLiAgQWRkICdvcmlnaW4nIGZpZWxkIHRvIHN0cnVjdAoJZGlyZWN0aXZlLiAgQWRkIG9yaWdpbiB2YWx1ZXMgdG8gRElSRUNUSVZFX1RBQkxFLiAgR2VuZXJhdGUKCXRoZSBzdHJpbmdzIGFuZCBmdW5jdGlvbiBuYW1lcyBvbiB0aGUgZmx5LiAgVGFrZSB0aGUgI3NjY3MKCWVudHJ5IG91dCBvZiB0aGUgdGFibGUgaWYgU0NDU19ESVJFQ1RJVkUgaXMgbm90IGRlZmluZWQuCgkoX2NwcF9oYW5kbGVfZGlyZWN0aXZlKTogRGVjaWRlIGlmIHRoZSAjIHdhcyBhdCB0aGUgYmVnaW5uaW5nCglvZiB0aGUgbGluZSBoZXJlLiAgSXNzdWUgLXBlZGFudGljIHdhcm5pbmdzIGZvciBleHRlbmRlZAoJZGlyZWN0aXZlcyBoZXJlLiAgV2FybiBhYm91dCBLK1IgZGlyZWN0aXZlcyB3aXRoIHRoZSAjCglpbmRlbnRlZCwgYW5kIEM4OS9leHRlbmRlZCBkaXJlY3RpdmVzIHdpdGggdGhlICMgbm90IGluZGVudGVkLAoJaGVyZS4KCShkb19pbXBvcnQsIGRvX2luY2x1ZGVfbmV4dCwgZG9fd2FybmluZywgZG9faWRlbnQsIGRvX3NjY3MsCglkb19hc3NlcnQsIGRvX3VuYXNzZXJ0KTogRG9uJ3QgaXNzdWUgcGVkYW50aWMgd2FybmluZyBoZXJlLgoKCSogY3BwaGFzaC5oOiBBZGQgQ1BQX1dUUkFESVRJT05BTCBtYWNyby4KCSogY3BwbGliLmggKHN0cnVjdCBjcHBfb3B0aW9ucyk6IFJlbmFtZSB3YXJuX3N0cmluZ2lmeSB0bwoJd2Fybl90cmFkaXRpb25hbDsgdXBkYXRlIGNvbW1lbnRzLgoJKiBjcHBpbml0LmMgKGhhbmRsZV9vcHRpb24pOiBTZXQgd2Fybl90cmFkaXRpb25hbCBub3QKCXdhcm5fc3RyaW5naWZ5LgoJKiBjcHBoYXNoLmM6IFJlcGxhY2UgQ1BQX09QVElPTiAocGZpbGUsIHdhcm5fc3RyaW5naWZ5KSB3aXRoCglDUFBfV1RSQURJVElPTkFMIChwZmlsZSkuCgkqIGNwcGxleC5jIChfY3BwX2xleF90b2tlbik6IERvbid0IGRlY2lkZSBpZiBkaXJlY3RpdmVzIHNob3VsZAoJYmUgaWdub3JlZCBpbiAtdHJhZGl0aW9uYWwgbW9kZSBoZXJlLgoKCSogY3BwbGV4LmM6IENvcHkgSVNUQUJMRSBtYWNyb3MgZnJvbSBjcHBpbml0LmMsIGFuZCBhZGFwdCB0aGVtCgl0byBpbml0aWFsaXplIHNwZWNjYXNlW10gYW5kIHRyaWdyYXBoX21hcFtdLiAgRGVsZXRlIGFsbAoJcmVmZXJlbmNlcyB0byBwZmlsZS0+aW5wdXRfc3BlY2Nhc2UuICBBbHdheXMgdHJlYXQgJz8nIGFzIGEKCXNwZWNpYWwgY2hhcmFjdGVyLiAgUmVtb3ZlIHRhYmxlLWluaXRpYWxpemF0aW9uIGNvZGUgZnJvbQoJX2NwcF9pbml0X2lucHV0X2J1ZmZlci4KCgkqIGNwcGxpYi5oIChzdHJ1Y3QgY3BwX3JlYWRlcik6IFJlbW92ZSBpbnB1dF9zcGVjY2FzZSBmaWVsZC4KCSogY3BwaW5pdC5jIChjcHBfY2xlYW51cCk6IERvbid0IGZyZWUgaW5wdXRfc3BlY2Nhc2UuCgoyMDAwLTA0LTAxICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEBjeWdudXMuY29tPgoKCSogTWFrZWZpbGUuaW4gKFNUQUdFU1RVRkYpOiBXaWxkY2FyZCBhbGwgZGVidWdnaW5nIGR1bXBzIGF0IG9uY2UuCgkobW9zdGx5Y2xlYW4pOiBMaWtld2lzZS4KCgkqIHRvcGxldi5jIChydGxfZHVtcCwganVtcF9vcHRfZHVtcCwgZXRjKTogUmVtb3ZlLgoJKHN0cnVjdCBkdW1wX2ZpbGVfaW5mbywgZW51bSBkdW1wX2ZpbGVfaW5kZXgsIGR1bXBfZmlsZSk6IE5ldy4KCShvcGVuX2R1bXBfZmlsZSk6IFRha2UgYSBkdW1wX2ZpbGVfaW5kZXggbm90IGEgc3VmZml4LCBhbmQgYSBkZWNsCglub3QgYSBzdHJpbmcuICBDbGVhbiBvdXQgZmlsZSBpZiB3ZSBoYXZlbid0IHlldCBkb25lIHNvLiAgRG8gbm90aGluZwoJaWYgdGhlIGR1bXAgaXNuJ3QgZW5hYmxlZC4KCShjbG9zZV9kdW1wX2ZpbGUpOiBEbyBub3RoaW5nIGlmIHRoZSBkdW1wIGlzbid0IG9wZW4uICBEdW1wCglncmFwaCBkYXRhIGlmIHJlcXVlc3RlZC4KCShkdW1wX3J0bCwgY2xlYW5fZHVtcF9maWxlKTogUmVtb3ZlLgoJKGNvbXBpbGVfZmlsZSk6IERvbid0IGNsZWFuIHRoZSBkdW1wIGZpbGVzLiAgT25seSBmaW5hbGl6ZSAuYnAgZHVtcAoJaWYgZmxhZ190ZXN0X2NvdmVyYWdlIG9yIGZsYWdfYnJhbmNoX3Byb2JhYmlsaXRpZXMuICBPbmx5IGZpbmFsaXplCgkuY29tYmluZSBkdW1wIGlmIG9wdGltaXppbmcuICBJdGVyYXRlIG92ZXIgZHVtcF9maWxlIHRvIGZpbmFsaXplIHRoZQoJZ3JhcGggZHVtcHMuCgkocmVzdF9vZl9jb21waWxhdGlvbik6IFVwZGF0ZSBmb3Igb3Blbl9kdW1wX2ZpbGUvY2xvc2VfZHVtcF9maWxlLgoJQ29udmVydCBhbGwgdXNlcyBvZiBkdW1wX3J0bC4KCShkZWNvZGVfZF9vcHRpb24pOiBJdGVyYXRlIG92ZXIgZHVtcF9maWxlIHRvIGltcGxlbWVudCAnYScgYW5kIHRvCglsb2NhdGUgcGFzcy1zcGVjaWZpYyBkdW1wcy4KCjIwMDAtMDQtMDEgIE5laWwgQm9vdGggPE5laWxCQGVhcnRobGluZy5uZXQ+CgoJKiBjcHBleHAuYzogUmVkZWZpbmUgcHJpb3JpdHkgY29uc3RhbnRzLgoJKF9jcHBfcGFyc2VfZXhwcik6IFJlcGxhY2UgbGVmdCBhbmQgcmlnaHQgcHJpb3JpdHkgc2NoZW1lIHdpdGgKCXNpbmdsZSBwcmlvcml0eSBsb2dpYy4gIE1vdmUgTE9HSUNBTCB0byBzYW1lIHBsYWNlIGFzIENPTVBBUkUuCglSZW1vdmUgYm9ndXMgY2hlY2sgZm9yIG11bHRpcGxlIHVuYXJ5ICsvLSBvcGVyYXRvcnMuCgoyMDAwLTA0LTAxICBOZWlsIEJvb3RoIDxOZWlsQkBlYXJ0aGxpbmcubmV0PgoKCSogY3BwZXhwLmM6IChfY3BwX3BhcnNlX2V4cHIpOiBOdW1lcmljYWwgY29uc3RhbnRzIGFyZSBwdXNoZWQKCXdpdGhpbiB0aGUgc3dpdGNoIHN0YXRlbWVudC4gIEJpbmFyeSBvcGVyYXRpb25zIGJyZWFrIG91dCBvZgoJdGhlIHN3aXRjaCBuYXR1cmFsbHkuICAnKCcgdG9rZW5zIGhhbmRsZWQgYnkgZm9yY2luZwoJaW1tZWRpYXRlIHNoaWZ0LiAgJyknIGhhbmRsZWQgYnkgZm9yY2luZyBpbW1lZGlhdGUgcmVkdWNlIHRvCgl0aGUgcHJldmlvdXMgJygnLiAgTmV3IGVycm9yIG1lc3NhZ2VzLgoKMjAwMC0wMy0zMSAgR2VvZmYgS2VhdGluZyAgPGdlb2Zma0BjeWdudXMuY29tPgoKCSogY29uZmlnL3JzNjAwMC9yczYwMDAuYyAocHJpbnRfb3BlcmFuZCk6IERvbid0IHVzZSAlbCBmb3IgJ2xvdwoJcGFydCcsIGl0J3MgYWxyZWFkeSBpbiB1c2UuICBVc2UgJUsgaW5zdGVhZC4gIEFkZCBhIHJldHVybiBhdCB0aGUKCWVuZCBvZiB3aGF0IGlzIG5vdyAlSy4KCSogY29uZmlnL3JzNjAwMC9yczYwMDAubWQgKGVsZl9sb3cpOiBVc2UgJUsgaW5zdGVhZCBvZiAlbC4KClNhdCBBcHIgIDEgMDI6MDU6MjkgTUVUIERTVCAyMDAwICBKYW4gSHViaWNrYSAgPGpoQHN1c2UuY3o+CgoJKiBidWlsdGlucy5jICAoZXhwYW5kX2J1aWx0aW5fYXBwbHkpOiAgUGFzcyBwcm9wZXIgcGFyYW1ldGVycyB0bwoJYWxsb2NhdGVfZHluYW1pY19zdGFja19zcGFjZS4KCSogY2FsbHMuYyAoZW1pdF9jYWxsXzEpOiAgRG8gbm90IGFkanVzdCBzdGFjayBwb2ludGVyIGZvciBTSUIsCgl1cGRhdGUgc3RhY2tfcG9pbnRlcl9kZWx0YTsgZG8gbm90IHVwZGF0ZSBhcmdfc2l6ZV9zb19mYXIuCgkoY29tcHV0ZV9hcmd1bWVudF9ibG9ja19zaXplKTogVXNlIHN0YWNrX2RlbHRhIGluc3RlYWQgb2YKCXN0YWNrX3BvaW50ZXJfcGVuZGluZyBhbmQgYXJnX3NpemVfc29fZmFyLgoJKGV4cGFuZF9jYWxsKTogQWRkIHNhbml0eSBjaGVja2luZyBmb3Igc3RhY2tfcG9pbnRlcl9kZWx0YTsKCXNhdmUgYW5kIHJlc3RvcmUgc3RhY2tfcG9pbnRlcl9kZWx0YSBmb3IgU0lCLCB1c2UKCXN0YWNrX3BvaW50ZXJfZGVsdGEgZm9yIGFsaWdubWVudDsgZG8gbm90IHVwZGF0ZSBhcmdfc3BhY2Vfc29fZmFyLgoJKGVtaXRfbGlicmFyeV9jYWxsX3ZhbHVlKTogVXNlIHN0YWNrX3BvaW50ZXJfZGVsdGEgZm9yIGFsaWdubWVudC4KCShzdG9yZV9vbmVfYXJnKTogRG8gbm90IHVwZGF0ZSBhcmdfc3BhY2Vfc29fZmFyLgoJKiBleHBsb3cuYyAoYWRqdXN0X3N0YWNrLCBhbnRpX2FkanVzdF9zdGFjayk6IFVwZGF0ZQoJc3RhY2tfcG9pbnRlcl9kZWx0YS4KCShhbGxvY2F0ZV9keW5hbWljX3N0YWNrX3NwYWNlKTogQWRkIHNhbml0eSBjaGVja2luZyBmb3IKCXN0YWNrX3BvaW50ZXJfZGVsdGEuCgkqIGV4cHIuYyAoaW5pdF9leHByLCBjbGVhcl9wZW5kaW5nX3N0YWNrX2FkanVzdCk6IENsZWFyCglzdGFja19wb2ludGVyX2RlbHRhLgoJKGVtaXRfcHVzaF9pbnNuKTogVXBkYXRlIHN0YWNrX3BvaW50ZXJfZGVsdGEuCgkqIGZ1bmN0aW9uLmggKHN0cnVjdCBleHByX3N0YXR1cyk6IEFkZCB4X3N0YWNrX3BvaW50ZXJfZGVsdGE7CglyZW1vdmUgeF9hcmdfc3BhY2Vfc29fZmFyLgoJKGFyZ19zcGFjZV9zb19mYXIpOiBSZW1vdmUuCgkoc3RhY2tfcG9pbnRlcl9kZWx0YSk6IE5ldyBtYWNyby4KCjIwMDAtMDMtMzEgIFphY2sgV2VpbmJlcmcgIDx6YWNrQHdvbGVyeS5jdW1iLm9yZz4KCgkqIGNwcGxpYi5oOiBNZXJnZSBzdHJ1Y3QgY3BwX29wdGlvbnMgaW50byBzdHJ1Y3QgY3BwX3JlYWRlci4KCVJlb3JkZXIgc3RydWN0IGNwcF9vcHRpb25zIGFuZCBzdHJ1Y3QgY3BwX3JlYWRlciBmb3IgYmV0dGVyCglwYWNraW5nLiAgUmVwbGFjZSBDUFBfT1BUSU9OUyBtYWNybyB3aXRoIENQUF9PUFRJT04gd2hpY2gKCXRha2VzIHR3byBhcmdzLiAgQ2hhbmdlIGFsbCAnY2hhcicgZmxhZ3MgdG8gJ3Vuc2lnbmVkIGNoYXInLgoJTW92ZSBzaG93X2NvbHVtbiBmbGFnIGludG8gc3RydWN0IGNwcF9vcHRpb25zLiAgRG9uJ3QKCXByb3RvdHlwZSBjcHBfb3B0aW9uc19pbml0LgoJKiBjcHBoYXNoLmgsIGNwcGVycm9yLmMsIGNwcGV4cC5jLCBjcHBmaWxlcy5jLCBjcHBoYXNoLmMsCgljcHBpbml0LmMsIGNwcGxleC5jLCBjcHBsaWIuYzoKCVJlcGxhY2UgQ1BQX09QVElPTlMgKHBmaWxlKS0+d2hhdGV2ZXIgd2l0aAoJQ1BQX09QVElPTiAocGZpbGUsIHdoYXRldmVyKSwgYW5kIGxpa2V3aXNlIGZvcgoJb3B0cyA9IENQUF9PUFRJT05TIChwZmlsZSk7IC4uLiBvcHRzLT53aGF0ZXZlcjsKCgkqIGNwcGluaXQuYyAobWVyZ2VfaW5jbHVkZV9jaGFpbnMpOiBUYWtlIGEgY3BwX3JlYWRlciAqLgoJRXh0cmFjdCBDUFBfT1BUSU9OIChwZmlsZSwgcGVuZGluZykgYW5kIHdvcmsgd2l0aCB0aGF0CglkaXJlY3RseS4KCShjcHBfb3B0aW9uc19pbml0KTogRGVsZXRlLgoJKGNwcF9yZWFkZXJfaW5pdCk6IFR1cm4gb24gb24tYnktZGVmYXVsdCBvcHRpb25zIGhlcmUuCglBbGxvY2F0ZSB0aGUgcGVuZGluZyBzdHJ1Y3R1cmUgaGVyZS4KCShjbF9vcHRpb25zLCBlbnVtIG9wdF9jb2RlKTogRGVmaW5lIHRoZXNlIGZyb20gdGhlIHNhbWUgdGFibGUsCglrZXB0IGluIGEgbGFyZ2UgbWFjcm8uICBBZGQgLWZzaG93LWNvbHVtbiBhbmQgLWZuby1zaG93LWNvbHVtbgoJb3B0aW9ucy4KCgkqIGNwcGVycm9yLmMgKHZfbWVzc2FnZSk6IElmIHNob3dfY29sdW1uIGlzIG9mZiwgZG9uJ3QgcHJpbnQKCXRoZSBjb2x1bW4gbnVtYmVyLgoKCSogY3BwbWFpbi5jOiBVcGRhdGUgZm9yIG5ldyBpbnRlcmZhY2UuCgkqIGZpeC1oZWFkZXIuYzogTGlrZXdpc2UuCgoyMDAwLTAzLTMwICBHZW9mZiBLZWF0aW5nICA8Z2VvZmZrQGN5Z251cy5jb20+CgoJKiBjb25maWcvcnM2MDAwL3QtYWl4NDMgKEFSX0ZMQUdTX0ZPUl9UQVJHRVQpOiBBZGp1c3QgZm9yIG5ldwoJZGVmaW5pdGlvbi4KCSogTWFrZWZpbGUuaW4gKEFSX0ZMQUdTX0ZPUl9UQVJHRVQpOiBJcyBub3cgdGhlIGZsYWdzIHRoYXQKCWFyZSBwYXNzZWQgdG8gYW55IGludm9jYXRpb24gb2YgQVJfRk9SX1RBUkdFVC4KCShBUl9DUkVBVEVfRk9SX1RBUkdFVCk6IE5ldyBtYWNyby4KCShBUl9FWFRSQUNUX0ZPUl9UQVJHRVQpOiBOZXcgbWFjcm8uCgkoT1JESU5BUllfRkxBR1NfVE9fUEFTUyk6IEFkZCBBUl9DUkVBVEVfRk9SX1RBUkdFVCwKCUFSX0VYVFJBQ1RfRk9SX1RBUkdFVC4KCShtYW55IHBsYWNlcyk6IFVzZSBBUl9DUkVBVEVfRk9SX1RBUkdFVCwgQVJfRVhUUkFDVF9GT1JfVEFSR0VUCglpbiBwbGFjZSBvZiBgJChBUl9GT1JfVEFSR0VUKSAkKEFSX0ZMQUdTX0ZPUl9UQVJHRVQpJyBhbmQKCWAkKEFSX0ZPUl9UQVJHRVQpIHgnLiAgUGFzcyBBUl9DUkVBVEVfRk9SX1RBUkdFVCBhbmQKCUFSX0VYVFJBQ1RfRk9SX1RBUkdFVCB0byBzdWItbWFrZXMuCgoyMDAwLTAzLTMxICBOZWlsIEJvb3RoIDxOZWlsQkBlYXJ0aGxpbmcubmV0PgoKCSogY3BwZXhwLmM6IERlbGV0ZSBTS0lQX09QRVJBTkQuICBDb3JyZWN0IHByaW9yaXR5CglQQVJFTl9JTk5FUl9QUklPLgoJKF9jcHBfcGFyc2VfZXhwcik6IENoZWNrIGZvciBtdWx0aXBsZSB1bmFyeSArLy0gb3BlcmF0b3JzLgoJQ29ycmVjdCBwcmlvcml0aWVzIG9mICc6JyBhbmQgJz8nLiAgVHJlYXQgJyknIGFzIGhhdmluZyBhCgl2YWx1ZS4JRW5zdXJlIGNvbmRpdGlvbmFsIGV4cHJlc3Npb24gaXMgbm90IHZvaWQuCgoyMDAwLTAzLTMxICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogYWxpYXMuYyAoY2Fub25fcnR4KTogTWFrZSBpdCBnbG9iYWwuCgkocnR4X2VxdWFsX2Zvcl9tZW1yZWZfcCk6IENPTlNUX0lOVCBlcXVhbGl0eSBpcyBub3cgcG9pbnRlcgoJZXF1YWxpdHkuCgkqIGNzZS5jIChzdHJ1Y3QgdGFibGVfZWx0KTogQWRkIGNhbm9uX2V4cC4KCShpbnNlcnQpOiBDbGVhciBpdC4KCShpbnZhbGlkYXRlKTogQ2Fub25pY2FsaXplIGV4cHJlc3Npb25zIG9ubHkgb25jZS4KCSogcnRsLmggKGNhbm9uX3J0eCk6IERlY2xhcmUuCgoyMDAwLTAzLTMwICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogTWFrZWZpbGUuaW4gKGVtaXQtcnRsLm8pOiBEZXBlbmQgb24gSEFTSFRBQl9ILgoJKiBhbGlhcy5jIChyZWdfa25vd25fdmFsdWUpOiBBZGQgY29tbWVudHMuCgkoaW5pdF9hbGlhc19hbmFseXNpcyk6IExpa2V3aXNlLgoJKiBjc2UuYyAoZXhwX2VxdWl2X3ApOiBDT05TVF9JTlRzIGFyZSBlcXVhbCBpZmYgdGhleSBoYXZlIHRoZSBzYW1lCglhZGRyZXNzLgoJKGNzZV9iYXNpY19ibG9jayk6IEZpeCB0eXBvIGluIGNvbW1lbnQuCgkqIGVtaXQtcnRsLmM6IEluY2x1ZGUgaGFzaHRhYi5oLgoJKGNvbnN0X2ludF9odGFiKTogTmV3IHZhcmlhYmxlLgoJKGNvbnN0X2ludF9odGFiX2hhc2gpOiBOZXcgZnVuY3Rpb24uCgkoY29uc3RfaW50X2h0YWJfZXEpOiBMaWtld2lzZS4KCShydHhfaHRhYl9tYXJrXzEpOiBMaWtld2lzZS4KCShydHhfaHRhYl9tYXJrKTogTGlrZXdpc2UuCgkoZ2VuX3J0eF9DT05TVF9JTlQpOiBDYWNoZSBhbGwgQ09OU1RfSU5Ucy4KCSh1bnNoYXJlX2FsbF9ydHgpOiBGaXggZm9ybWF0dGluZy4KCShpbml0X2VtaXRfb25jZSk6IEluaXRpYWxpemUgY29uc3RfaW50X2h0YWIuCgkqIHJ0bC5jIChydHhfZXF1YWxfcCk6IENPTlNUX0lOVHMgYXJlIGVxdWFsIGlmZiB0aGV5IGhhdmUgdGhlIHNhbWUKCWFkZHJlc3MuCgkqIHJ0bC50ZXhpOiBEb2N1bWVudCB0aGUgZmFjdCB0aGF0IGFsbCBDT05TVF9JTlRzIHdpdGggdGhlIHNhbWUKCXZhbHVlIGFyZSBzaGFyZWQuCgoyMDAwLTAzLTMwICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEBjeWdudXMuY29tPgoKCSogYWxwaGEuaCAoRlVOQ1RJT05fQk9VTkRBUlkpOiBSZWR1Y2UgdG8gMTI4IGJpdHMuCgoyMDAwLTAzLTMwICBaYWNrIFdlaW5iZXJnICA8emFja0B3b2xlcnkuY3VtYi5vcmc+CgoJKiBjb25maWd1cmUuaW46IENvbW1lbnQgb3V0IC0tZW5hYmxlLWMtY3BwbGliIHN0YW56YS4KCSogY29uZmlndXJlOiBSZWdlbmVyYXRlLgoKVGh1IE1hciAzMCAwNjozMjo1MSAyMDAwICBSaWNoYXJkIEtlbm5lciAgPGtlbm5lckB2bHNpMS51bHRyYS5ueXUuZWR1PgoKCSogZXhwci5jIChzdG9yZV9jb25zdHJ1Y3Rvcik6IFByb3Blcmx5IGNvbXB1dGUgZGlzcGxhY2VtZW50IGFuZAoJYWxpZ25tZW50IHdoZW4gb2Zmc2V0IGlzIHZhcmlhYmxlLgoKCSogZXhwbWVkLmMgKHN0b3JlX2JpdF9maWVsZCwgc3RvcmVfZml4ZWRfYml0X2ZpZWxkKTogRml4IG1vcmUKCWNhc2VzIG9mIGFsaWdubWVudCBpbiBieXRlcy4KClRodSBNYXIgMzAgMTM6MzA6NDAgMjAwMCAgSmVmZnJleSBBIExhdyAgKGxhd0BjeWdudXMuY29tKQoKCSogYy1wYXJzZS5pbiAoY2FzdF9leHByKTogTW92ZSBjaGFuZ2UgZnJvbSBNYXJjaCAyMSBpbnRvIGMtcGFyc2UuaW4KCXNpbmNlIGl0IGlzIHVzZWQgdG8gZ2VuZXJhdGUgYy1wYXJzZS55LgoJKiBvYmpjLXBhcnNlLmMsIG9iamMtcGFyc2UueTogUmVnZW5lcmF0ZWQuCgoJKiBmdW5jdGlvbi5jIChleHBhbmRfZnVuY3Rpb25fZW5kKTogUGFzcyBhbGlnbm1lbnQgYXJndW1lbnQgdG8KCWVtaXRfYmxvY2tfbW92ZSBpbiBiaXRzLCBub3QgYnl0ZXMuCgpUaHUgTWFyIDMwIDA2OjMyOjUxIDIwMDAgIFJpY2hhcmQgS2VubmVyICA8a2VubmVyQHZsc2kxLnVsdHJhLm55dS5lZHU+CgoJKiBleHByLmMgKG1vdmVfYnlfcGllY2VzX25pbnNucyk6IEZpeCBvbmUgbW9yZSBtaXNzaW5nIGFsaWduCgljb3JyZWN0aW9uLgoKCSogZXhwbWVkLmMgKHN0b3JlX2ZpeGVkX2JpdF9maWVsZCk6IFNUUlVDVF9BTElHTiBpcyBpbiBiaXRzLgoKCSogY2FsbHMuYyAoZXhwYW5kX2NhbGwpOiBQYXNzIGJpdCBhbGlnbm1lbnQgdG8gbWFya19yZWdfcG9pbnRlci4KCSogZXhwbG93LmMgKG1lbW9yeV9hZGRyZXNzLCBhbGxvY2F0ZV9keW5hbWljX3N0YWNrX3NwYWNlKTogTGlrZXdpc2UuCgkqIGZ1bmN0aW9uLmMgKGFzc2lnbl9wYXJtcyk6IExpa2V3aXNlLgoJKiBpbnRlZ3JhdGUuYyAoZXhwYW5kX2lubGluZV9mdW5jdGlvbik6IExpa2V3aXNlLgoJKiBzdG10LmMgKGV4cGFuZF9kZWNsKTogTGlrZXdpc2UuCgkoY29weV9ydHhfYW5kX3N1YnN0aXR1dGUpOiBMaWtld2lzZS4KCSogZXhwci5jIChleHBhbmRfZXhwciwgZXhwYW5kX2V4cHJfdW5hbGlnbmVkKTogTGlrZXdpc2UuCgkoY2xlYXJfYnlfcGllY2VzKTogRml4IGVycm9yIGluIGxhc3QgY2hhbmdlLgoJKiBlbWl0LXJ0bC5jIChpbml0X2VtaXQpOiBTZXQga25vd24gcmVnaXN0ZXJzIGFsaWdubWVudCBpbiBiaXRzLgoJKiBmdW5jdGlvbi5oIChyZWdub19wb2ludGVyX2FsaWduKTogTm93IHVuc2lnbmVkLgoJKiBjb25maWcvYXJtL2FybS5jIChhbGlnbmFibGVfbWVtb3J5X29wZXJhbmQpOiBSRUdOT19QT0lOVEVSX0FMSUdOCglpcyBpbiBiaXRzLgoJKiBjb25maWcvaTM4Ni9pMzg2LmMgKGFsaWduZWRfb3BlcmFuZCk6IExpa2V3aXNlLgoJKiBjb25maWcvc3BhcmMvc3BhcmMuYyAobWVtX21pbl9hbGlnbm1lbnQpOiBMaWtld2lzZS4KCSogY29uZmlnL2FscGhhL2FscGhhLmMgKGFsaWduZWRfbWVtb3J5X29wZXJhbmQpOiBMaWtld2lzZS4KCSh1bmFsaWduZWRfbWVtb3J5X29wZXJhbmQpOiBMaWtld2lzZS4KCShhbHBoYV9leHBhbmRfYmxvY2tfbW92ZSwgYWxwaGFfZXhwYW5kX2Jsb2NrX2NsZWFyKTogTGlrZXdpc2UuCglBbHNvIG1ha2UgYWxpZ25tZW50cyBhbmQgc2l6ZXMgdW5zaWduZWQgYW5kIHNvbWUgd2hpdGVzcGFjZSBjbGVhbnVwLgoJKGFscGhhX3ZhX3N0YXJ0KTogRG8gbm90aGluZyBpZiBWQUxJU1QncyB0eXBlIGlzIGVycm9yX21hcmtfbm9kZS4KCgkqIGJ1aWx0aW5zLmMgKGdldF9wb2ludGVyX2FsaWdubWVudCk6IFVzZSBob3N0X2ludGVnZXJwICYgdHJlZV9sb3dfY3N0LgoJKGV4cGFuZF9idWlsdGluX2FwcGx5KTogUGFzcyBhbGlnbm1lbnQgdG8gZW1pdF9ibG9ja19tb3ZlIGluIGJpdHMuCgkoZXhwYW5kX2J1aWx0aW5fbWVtY3B5LCBleHBhbmRfYnVpbHRpbl92YV9jb3B5KTogTGlrZXdpc2UuCgkoZXhwYW5kX2J1aWx0aW5fbWVtc2V0KTogTGlrZXdpc2UsIGJ1dCB0byBjbGVhcl9zdG9yYWdlLgoJKiBjYWxscy5jIChzYXZlX2ZpeGVkX2FyZ3VtZW50X2FyZWEpOiBMaWtld2lzZSwgdG8gbW92ZV9ieV9waWVjZXMuCgkocmVzdG9yZV9maXhlZF9hcmd1bWVudF9hcmVhKTogTGlrZXdpc2UuCgkoc3RvcmVfdW5hbGlnbmVkX2FyZ3VtZW50c19pbnRvX3BzZXVkb3MpOiBMaWtld2lzZSwgdG8gc3RvcmVfYml0X2ZpZWxkLgoJKGxvYWRfcmVnaXN0ZXJfcGFyYW1ldGVycyk6IExpa2V3aXNlLCB0byBlbWl0X2dyb3VwX2xvYWQuCgkoZXhwYW5kX2NhbGwpOiBMaWtld2lzZSwgdG8gZW1pdF9ncm91cF9zdG9yZSBhbmQgZW1pdF9ibG9ja19tb3ZlLgoJKGVtaXRfbGlicmFyeV9jYWxsX3ZhbHVlXzEpOiBMaWtld2lzZSwgdG8gZW1pdF9ibG9ja19tb3ZlLgoJKHN0b3JlX29uZV9hcmcpOiBMaWtld2lzZSwgYW5kIHRvIGVtaXRfcHVzaF9pbnNuLgoJKiBleHBtZWQuYyAoZXh0cmFjdF9iaXRfZmllbGQpOiBBbGlnbm1lbnQgaXMgaW4gYml0cywgbm90IGJ5dGVzLgoJKGV4dHJhY3RfZml4ZWRfYml0X2ZpZWxkLCBleHRyYWN0X3NwbGl0X2JpdF9maWVsZCk6IExpa2V3aXNlLgoJKiBleHByLmMgKG1vdmVfYnlfcGllY2VzLCBtb3ZlX2J5X3BpZWNlc19uaW5zbnMpOiBMaWtld2lzZS4KCShlbWl0X2Jsb2NrX21vdmUsIGVtaXRfZ3JvdXBfbG9hZCwgZW1pdF9ncm91cF9zdG9yZSk6IExpa2V3aXNlLgoJKGNsZWFyX2J5X3BpZWNlcywgY2xlYXJfc3RvcmFnZSwgZW1pdF9wdXNoX2luc24pOiBMaWtld2lzZS4KCShleHBhbmRfYXNzaWdtZW50LCBzdG9yZV9leHByLCBzdG9yZV9jb25zdHJ1Y3Rvcl9maWVsZCk6IExpa2V3aXNlLgoJKGV4cGFuZF9leHByX3VuYWxpZ25lZCwgZG9fanVtcCwgZG9fY29tcGFyZV9hbmRfanVtcCk6IExpa2V3aXNlLgoJKHN0b3JlX2NvbnN0cnVjdG9yLCBzdG9yZV9maWVsZCwgZ2V0X2lubmVyX3JlZmVyZW5jZSk6IExpa2V3aXNlLgoJVXNlIGhvc3RfaW50ZWdlcnAgYW5kIHRyZWVfbG93X2NzdDsgc2l6ZXMgYW5kIHBvc2l0aW9ucyBIT1NUX1dJREVfSU5ULgoJKGV4cGFuZF9leHByLCBjYXNlIENPTVBPTkVOVF9SRUYpOiBMaWtld2lzZS4KCShjb3B5X2Jsa21vZGVfZnJvbV9yZWdzKTogVXNlIFVOU0lHTkVEX0hPU1RfV0lERV9JTlQgZm9yIHNpemVzCglhbmQgcG9zaXRpb25zOyByZWluZGVudCBjb2RlLgoJKiBleHByLmggKGVtaXRfY21wX2luc24sIGVtaXRfY21wX2FuZF9qdW1wX2luc25zKTogQWxpZ25tZW50IHVuc2lnbmVkLgoJKiBmdW5jdGlvbi5jIChwdXJnZV9hZGRyZXNzb2ZfMSk6IFBhc3MgYml0IGFsaWduIHRvIHN0b3JlX2JpdF9maWVsZC4KCShhc3NpZ25fcGFybXMpOiBMaWtld2lzZSB0byBlbWl0X2dyb3VwX3N0b3JlLgoJKiBvcHRhYnMuYyAocHJlcGFyZV9jbXBfaW5zbik6IEFsaWdubWVudCBpcyBpbiBiaXRzLgoJKGVtaXRfY21wX2FuZF9qdW1wX2luc25zLCBlbWl0X2NtcF9pbnNuKTogTGlrZXdpc2UsIGFuZCBhbHNvIHVuc2lnbmVkLgoJKiBzdG10LmMgKGV4cGFuZF92YWx1ZV9yZXR1cm4pOiBQYXNzIGFsaWduIGluIGJpdHMgdG8gZW1pdF9ncm91cF9sb2FkLgoJKGV4cGFuZF9yZXR1cm4pOiBMaWtld2lzZSB0byB7ZXh0cmFjdCxzdG9yZX1fYml0X2ZpZWxkLgoJKiBzdG9yLWxheW91dC5jIChnZXRfbW9kZV9hbGlnbm1lbnQpOiBNaW5vciBjbGVhbnVwLgoJKiBjb25maWcvcnM2MDAwL3JzNjAwMC5oIChTTE9XX1VOQUxJR05FRF9BQ0NFU1MpOiBBbGlnbiBpcyBpbiBiaXRzLgoJKiBjb25maWcvc2gvc2guaCAoTU9WRV9CWV9QSUVDRVNfUCk6IExpa2V3aXNlLgoKMjAwMC0wMy0yOSAgTmljayBDbGlmdG9uICA8bmlja2NAY3lnbnVzLmNvbT4KCgkqIGNvbmZpZy9hcm0vYXJtLmg6IFVuZG8gZWZmZWN0cyBvZiBwcmV2aW91cyBkZWx0YToKCShBU01fU1BFQyk6IERvIG5vdCBkZWZpbmUuCgkoU1VCVEFSR0VUX0VYVFJBX0FTTV9TUEVDKTogRG8gbm90IGRlZmluZS4KCgkqIGNvbmZpZy9hcm0vbGludXgtZWxmLmg6IChTVUJUQVJHRVRfRVhUUkFfQVNNX1NQRUMpIEZpeAoJdHlwby4KCjIwMDAtMDMtMjkgIFphY2sgV2VpbmJlcmcgIDx6YWNrQHdvbGVyeS5jdW1iLm9yZz4KCgkqIGNwcGluaXQuYyAoY3BwX3N0YXJ0X3JlYWQpOiBDYWxsIGluaXRpYWxpemVfZGVwZW5kZW5jeV9vdXRwdXQKCW9ubHkgYWZ0ZXIgcmVhZGluZyBpbiB0aGUgcHJpbWFyeSBzb3VyY2UgZmlsZS4KCjIwMDAtMDMtMjkgIEdlb2ZmIEtlYXRpbmcgIDxnZW9mZmtAY3lnbnVzLmNvbT4KCgkqIGMtY29tbW9uLmMgKGNfY29tbW9uX25vZGVzX2FuZF9idWlsdGlucyk6IFRoZSBmaXJzdCBwYXJhbWV0ZXIgdG8KCV9fYnVpbHRpbl92YV9zdGFydCBhbmQgX19idWlsdGluX3ZhX2NvcHkgaXMgbm93IGVpdGhlciBhICd2YV9saXN0JwoJb3IgYSByZWZlcmVuY2UgdG8gYSB2YV9saXN0LgoJKiBidWlsdGlucy5jIChzdGFiaWxpemVfdmFfbGlzdCk6IFNpbXBsaWZ5IG5vdyB3ZSBkb24ndCBoYXZlIHRvCgl3b3JrIGFyb3VuZCBDIGFycmF5IGFkZHJlc3MgZGVjYXkuCgkqIGMtdHlwZWNrLmMgKGNvbnZlcnRfZm9yX2Fzc2lnbm1lbnQpOiBIYW5kbGUgYXNzaWdubWVudCB0bwoJYSByZWZlcmVuY2UgcGFyYW1ldGVyIGJ5IHRha2luZyB0aGUgYWRkcmVzcyBvZiB0aGUgUkhTLgoJKiBnaW5jbHVkZS9zdGRhcmcuaCAodmFfc3RhcnQpOiBEb24ndCB0YWtlIGFkZHJlc3Mgb2YgZmlyc3QgcGFyYW1ldGVyLgoJKHZhX2NvcHkpOiBMaWtld2lzZS4KCShfX3ZhX2NvcHkpOiBMaWtld2lzZS4KCSogZ2luY2x1ZGUvdmFyYXJncy5oICh2YV9zdGFydCk6IExpa2V3aXNlLgoJKF9fdmFfY29weSk6IExpa2V3aXNlLgoKV2VkIE1hciAyOSAxNTo0NDo1MyAyMDAwICBKZWZmcmV5IEEgTGF3ICAobGF3QGN5Z251cy5jb20pCgoJKiBpMzg2L2RqZ3BwLmg6IFJlbW92ZSBleHRyYW5lb3VzICIrIi4KCgkqIHN0bXQuYyAoc3RtdF9sb29wX25lc3RfZW1wdHkpOiBGaXggdGhpbmtvIGluIGxhc3QgY2hhbmdlLgoKCSogY2FsbHMuYyAoZXhwYW5kX2NhbGwpOiBGaXggdHlwbyBpbiBsYXN0IGNoYW5nZS4KCjIwMDAtMDMtMjkgIEphc29uIE1lcnJpbGwgIDxqYXNvbkBjYXNleS5jeWdudXMuY29tPgoKCSogdHJlZS5jICh1bnNhdmVfZXhwcl8xKTogRG9uJ3QgbWVzcyB3aXRoIGEgVEFSR0VUX0VYUFIgdGhhdCBoYXNuJ3QKCWJlZW4gZXhwYW5kZWQuCgpXZWQgTWFyIDI5IDE1OjM5OjEwIDIwMDAgIFJpY2hhcmQgS2VubmVyICA8a2VubmVyQHZsc2kxLnVsdHJhLm55dS5lZHU+CgoJKiBzdG9yLWxheW91dC5jIChiaXRfZnJvbV9wb3MsIGJ5dGVfZnJvbV9wb3MpOiBOZXcgZnVuY3Rpb25zLgoJKHBvc19mcm9tX2J5dGUsIHBvc19mcm9tX2JpdCwgbm9ybWFsaXplX29mZnNldCk6IExpa2V3aXNlLgoJKG5vcm1hbGl6ZV9ybGksIHJsaV9zaXplX3NvX2ZhciwgcmxpX3NpemVfdW5pdF9zb19mYXIpOiBVc2UgdGhlbS4KCSogdHJlZS5jIChiaXRfcG9zaXRpb24sIGJ5dGVfcG9zaXRpb24pOiBMaWtld2lzZS4KCSogdHJlZS5oOiBEZWNsYXJlIG5ldyBmdW5jdGlvbnMuCgoyMDAwLTAzLTI5ICBOaWNrIENsaWZ0b24gIDxuaWNrY0BjeWdudXMuY29tPgoKCSogY29uZmlnL2FybS9hcm0uYzogTWlub3IgZm9ybWF0dGluZyBjaGFuZ2VzLwoJKiBjb25maWcvYXJtL2FybS5oIChTVUJUQVJHRVRfRVhUUkFfQVNNX1NQRUMpOiBEZWZpbmUgaWYgbm90CglhbHJlYWR5IGRlZmluZWQuCgkoQVNNX1NQRUMpOiBEZWZpbmUgaWYgbm90IGFscmVhZHkgZGVmaW5lZC4KCjIwMDAtMDMtMjkgIFphY2sgV2VpbmJlcmcgIDx6YWNrQHdvbGVyeS5jdW1iLm9yZz4KCgkqIGNwcGZpbGVzLmMgKGNwcF9yZWFkX2ZpbGUpOiBEb24ndCBwYXNzIHplcm8tbGVuZ3RoIHN0cmluZyB0bwoJX2NwcF9jYWxjX2hhc2guCgoyMDAwLTAzLTI5ICBKYWt1YiBKZWxpbmVrICA8amFrdWJAcmVkaGF0LmNvbT4KCgkqIGR3YXJmMm91dC5jIChnZW5fZW51bWVyYXRpb25fdHlwZV9kaWUpOiBJZiBlbnVtIGhhcyBhIG5lZ2F0aXZlCgl2YWx1ZSwgZG9uJ3Qgb3V0cHV0IGl0IGFzIHVuc2lnbmVkLgoKV2VkIE1hciAyOSAxMDo1Mzo0OSAyMDAwICBKZWZmcmV5IEEgTGF3ICAobGF3QGN5Z251cy5jb20pCgoJKiBzdG10LmMgKHN0bXRfbG9vcF9uZXN0X2VtcHR5KTogQWxsb3cgY2Z1bi0+c3RtdCB0byBiZSBOVUxMLgoKMjAwMC0wMy0yOSAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogYy1jb21tb24uYyAoY19jb21tb25fbm9kZXNfYW5kX2J1aWx0aW5zKTogRG9uJ3Qgc3BlY2lhbCBjYXNlCgljcGx1c19tb2RlIHdoZW4gZGVjbGFyaW5nIGJ1aWx0aW4gYnplcm8vYmNtcCwgYWx3YXlzIGF2b2lkCglwcm90b3R5cGUgYXJndW1lbnRzLgoKMjAwMC0wMy0yOSAgQnJ1Y2UgS29yYiAgPGJrb3JiQGdudS5vcmc+CgoJKiBmaXhpbmMvbWtmaXhpbmMuc2g6IEluaXRpYWxseSBzZXQgdGhlIHZhcmlhYmxlICJmaXhpbmNsdWRlcyIKCXRvIGEgbm9uLWZpbGUKCldlZCBNYXIgMjkgMTU6MDg6MDEgTUVUIERTVCAyMDAwICBKYW4gSHViaWNrYSAgPGpoQHN1c2UuY3o+CgoJQ29udmVydCBBQ0NVTVVMQVRFX09VVEdPSU5HX0FSR1MgdG8gYW4gZXhwcmVzc2lvbi4KCSogY2FsbHMuYyAoUFVTSF9BUkdTX1JFVkVSU0VEKSBDaGFuZ2UgdG8gZXhwcmVzc2lvbi4KCShBQ0NVTVVMQVRFX09VVEdPSU5HX0FSR1MsIFBVU0hfQVJHUyk6IFByb3ZpZGUgZGVmYXVsdCB2YWx1ZS4KCShzdHJ1Y3QgYXJnX2RhdGEpOiBSZW1vdmUgI2lmZGVmIEFDQ1VNVUxBVEVfT1VUR09JTkdfQVJHUy4KCShzYXZlX2ZpeGVkX2FyZ3VtZW50X2FyZWEsIHJlc3RvcmVfZml4ZWRfYXJndW1lbnRfYXJlYSk6Cgljb25kaXRpb25pemUgYnkgI2lmZGVmIFJFR19QQVJNX1NUQUNLX1NQQUNFIG9ubHkuCgkoZW1pdF9jYWxsKTogQ2hhbmdlICNpZmRlZnMgb24gQUNDVU1VTEFURV9PVVRHT0lOR19BUkdTCgl0byBjb25kaXRpb25zLCBoYW5kbGUgUkVUVVJOX1BPUFNfQVJHUyBvbiBBQ0NVTVVMQVRFX09VVEdPSU5HX0FSR1MuCgkocHJlY29tcHV0ZV9yZWdpc3Rlcl9wYXJhbWV0ZXJzKTogQXZvaWQgI2lmZGVmcyBvbgoJQUNDVU1VTEFURV9PVVRHT0lOR19BUkdTIGFuZCBQVVNIX0FSR1NfUkVWRVJTRUQuCgkoc3RpcmVfb25lX2FyZ3MpOiBMaWtld2lzZS4KCShleHBhbmRfY2FsbCk6IExpa2V3aXNlOyBjb25kaXRpb25pemUgUFVTSF9ST1VORElORyBjb2RlIGJ5IFBVU0hfQVJHUy4KCShlbWl0X2xpYnJhcnlfY2FsbF92YWx1ZV8xKTogTGlrZXdpc2UuCgkoY29tcHV0ZV9hcmd1bWVudF9ibG9ja19zaXplKTogQWxpZ24gdG8gU1RBQ0tfQk9VTkRBUlkgb25seSBmb3IKCUFDQ1VNVUxBVEVfT1VUR09JTkdfQVJHUy4KCSogY29tYmluZS5jIChBQ0NVTVVMQVRFX09VVEdPSU5HX0FSR1MsIFBVU0hfQVJHUyk6IFByb3ZpZGUgZGVmYXVsdAoJdmFsdWUuCgkobm9uemVyb19iaXRzKTogQ29uZGl0aW9uaXplIFBVU0hfUk9VTkRJTkcgY29kZSBieSBVU0VfUFVTSC4KCSh1c2VfY3Jvc3Nlc19zZXRfcCk6IExpa2V3aXNlLgoJKiBhbGwgdGFyZ2V0cyAoQUNDVU1VTEFURV9PVVRHT0lOR19BUkdTIGRlZmluZSk6IENoYW5nZSB0bwoJI2RlZmluZSBBQ0NVTVVMQVRFX09VVEdPSU5HX0FSR1MgMS4KCSogaTM4Ni5jIChpeDg2X2NvbXB1dGVfZnJhbWVfc2l6ZSk6IEhhbmRsZSBBQ0NVTVVMQVRFX09VVEdPSU5HX0FSR1MKCWZyYW1lcy4KCSogaTM4Ni5oIChNQVNLX05PX1BVU0hfQVJHUywgTUFTS19BQ0NVTVVMQVRFX09VVEdPSU5HX0FSR1MpOiBOZXcKCWNvbnN0YW50cy4KCShUQVJHRVRfUFVTSF9BUkdTLCBUQVJHRVRfQUNDVU1VTEFURV9PVVRHT0lOR19BUkdTKTogTmV3IG1hY3Jvcy4KCShUQVJHRVRfU1dJVENIRVMpOiBBZGQgcHVzaC1hcmdzLCBuby1wdXNoLWFyZ3MsCglhY2N1bXVsYXRlLW91dGdvaW5nLWFyZ3MgYW5kIG5vLWFjY3VtdWxhdGUtb3V0Z29pbmctYXJncy4KCShBQ0NVTVVMQVRFX09VVEdPSU5HX0FSR1MsIFBVU0hfQVJHUyk6IE5ldyBtYWNyby4KCSogZXhwci5jIChBQ0NVTVVMQVRFX09VVEdPTkdfQVJHUywgUFVTSF9BUkdTKTogUHJvdmlkZSBkZWZhdWx0LgoJKHB1c2hfYmxvY2spOiBBdm9pZCBpZmRlZnMgb24gQUNDVU1VTEFURV9PVVRHT05HX0FSR1MKCWFuZCBQVVNIX1JPVU5ESU5HLgoJKGVtaXRfcHVzaF9pbnNuKTogTGlrZXdpc2UuCgkqIGZpbmFsLmMgKEFDQ1VNVUxBVEVfT1VUR09JTkdfQVJHUyk6IFByb3ZpZGUgZGVmYXVsdC4KCShmaW5hbF9zY2FuX2luc24pOiBBdm9pZCBpZmRlZnMgb24gQUNDVU1VTEFURV9PVVRHT0lOR19BUkdTLgoJKiBmdW5jdGlvbi5jIChBQ0NVTVVMQVRFX09VVEdPSU5HX0FSR1MpOiBQcm92aWRlIGRlZmF1bHQuCgkoU1RBQ0tfRFlOQU1JQ19PRkZTRVQpOiBEZWZpbmUgY29ycmVjdGx5IGZvciBib3RoCglBQ0NVTVVMQVRFX09VVEdPSU5HX0FSR1MgYW5kIG5vcm1hbCBtb2RlLgoJKiBpbnZva2UudGV4aSAoLW1wdXNoX2FyZ3MsIC1tYWNjdW11bGF0ZS1vdXRnb2luZy1hcmdzKTogRG9jdW1lbnQuCgkqIHRtLnRleGkgKFBVU0hfQVJHUyk6IERvY3VtZW50LgoJKEFDQ1VNVUxBVEVfT1VUR09JTkdfQVJHUywgUFVTSF9ST1VORElORyk6IFVwZGF0ZSBkb2N1bWVudGF0aW9uLgoKV2VkIE1hciAyOSAxMTo1MToxMyBNRVQgRFNUIDIwMDAgIEphbiBIdWJpY2thICA8amhAc3VzZS5jej4KCgkqIGZsYWdzLmggKGZsYWdfb3B0aW1pemVfc2libGluZ19jYWxscyk6IERlY2xhcmUuCgkqIGNhbGxzLmMgKGV4cGFuZF9jYWxsKTogRmFpbCBzaWJjYWxsIHdoZW4KCSFmbGFnX29wdGltaXplX3NpYmxpbmdfY2FsbHMKCSogaW52b2tlLnRleGkgKGZsYWdfb3B0aW1pemVfc2libGluZ19jYWxscyk6IERvY3VtZW50LgoJKiB0b3BsZXYuYyAoZmxhZ19vcHRpbWl6ZV9zaWJsaW5nX2NhbGxzKTogTmV3IGdsb2JhbCB2YXJpYWJsZS4KCShmX29wdGlvbnMpOiBBZGQgZmxhZ19vcHRpbWl6ZV9zaWJsaW5nX2NhbGxzLgoJKHJlc3Rfb2ZfY29tcGlsYXRpb24pOiBDb25kaXRpb25pemUKCW9wdGltaXplX3NpYmxpbmdfYW5kX3RhaWxfcmVjdXJzaXZlX2NhbGxzIGJ5CglmbGFnX29wdGltaXplX3NpYmxpbmdfY2FsbHMuCgkobWFpbik6IFNldCBmbGFnX29wdGltaXplX3NpYmxpbmdfY2FsbHMgZm9yIC1PMi4KCSogc3RtdC5jIChleHBhbmRfcmV0dXJuKTogQ29uZGl0aW9uaXplIHRhaWwgcmVjdXJzaW9uIGJ5CglmbGFnX29wdGltaXplX3NpYmxpbmdfY2FsbHMuCgoyMDAwLTAzLTI5ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEBjeWdudXMuY29tPgoKCSogY29uZmlnL2kzODYvYXR0LmggKExPQ0FMX0xBQkVMX1BSRUZJWCk6IERlZmluZS4KCShBU01fR0VORVJBVEVfSU5URVJOQUxfTEFCRUwsIEFTTV9PVVRQVVRfSU5URVJOQUxfTEFCRUwpOiBVc2UgaXQuCgoyMDAwLTAzLTI5ICBOYXRoYW4gU2lkd2VsbCAgPG5hdGhhbkBjb2Rlc291cmNlcnkuY29tPgoKCSogZXhjZXB0LmMgKGFkZF9laF90YWJsZV9lbnRyeSk6IE1hcmsgdHlwZV9pbmZvJ3MgYXMgcmVmZXJlbmNlZC4KCjIwMDAtMDMtMjkgIEFsZXhhbmRyZSBPbGl2YSAgPG9saXZhQGxzZC5pYy51bmljYW1wLmJyPgoKCSogY29uZmlnL3JzNjAwMC9haXg0MS5oIChDUFBfU1BFQyk6IERlZmluZSBfQU5TSV9DX1NPVVJDRSBpZiAtYW5zaQoJaXMgZ2l2ZW4uCgkqIGNvbmZpZy9yczYwMDAvYWl4NDMuaCAoQ1BQX1NQRUMpOiBMaWtld2lzZS4KCSogY29uZmlnL3JzNjAwMC9yczYwMDAuaCAoQ1BQX1NQRUMpOiBNb3ZlZCB0by4uLgoJKiBjb25maWcvcnM2MDAwL2FpeC5oOiB0aGVuIG1vZGlmaWVkIGxpa2V3aXNlLgoKMjAwMC0wMy0yOCAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAY3lnbnVzLmNvbT4KCgkqIHJ0bC5oOiBSZWRpc3RyaWJ1dGUgZW51bSByZWdfbm90ZSBkb2N1bWVudGF0aW9uLgoJS2lsbCB0cmFpbGluZyB3aGl0ZXNwYWNlLgoJKiBydGwuYyAocmVnX25vdGVfbmFtZSk6IEFkanVzdCB0byBtYXRjaCBlbnVtIHJlZ19ub3RlIHR3ZWVrcy4KCUtpbGwgdHJhaWxpbmcgd2hpdGVzcGFjZS4KCjIwMDAtMDMtMjggIFphY2sgV2VpbmJlcmcgIDx6YWNrQHdvbGVyeS5jdW1iLm9yZz4KCgkqIGNwcGZpbGVzLmMgKGhhc2hfSUhBU0gpOiBKdXN0IHJldHVybiBpLT5oYXNoLgoJKGNwcF9pbmNsdWRlZCk6IFNldCBkdW1teS5oYXNoIHVzaW5nIF9jcHBfY2FsY19oYXNoLiAgVXNlCglodGFiX2ZpbmRfd2l0aF9oYXNoLgoJKGNwcF9yZWFkX2ZpbGUpOiBMaWtld2lzZS4KCShmaW5kX2luY2x1ZGVfZmlsZSk6IExpa2V3aXNlLiAgUHJvcGVybHkgaW5pdGlhbGl6ZQoJaWgtPm5zaG9ydC4gIFNoYXJlIGloLT5uYW1lIGFuZCBpaC0+bnNob3J0IGlmIHBvc3NpYmxlLgoJKiBjcHBoYXNoLmMgKF9jcHBfY2FsY19oYXNoKTogTmV3IGZ1bmN0aW9uLgoJKGhhc2hfSEFTSE5PREUpOiBKdXN0IHJldHVybiBoLT5oYXNoLgoJKF9jcHBfbG9va3VwKTogU2V0IGR1bW15Lmhhc2ggdXNpbmcgX2NwcF9jYWxjX2hhc2guICBVc2UKCWh0YWJfZmluZF93aXRoX2hhc2guCgkqIGNwcGhhc2guaDogUHJvdG90eXBlIF9jcHBfY2FsY19oYXNoLgoJKiBjcHBpbml0LmMgKGluaXRpYWxpemVfYnVpbHRpbnMpOiBQcm92aWRlIGEgdmFsaWQgaGFzaAoJdG8gX2NwcF9tYWtlX2hhc2hub2RlLCB1c2luZyBfY3BwX2NhbGNfaGFzaC4KCgkqIGNwcGhhc2guYyAoY29sbGVjdF9leHBhbnNpb24pOiAjIGlzIG5vdCBhIHNwZWNpYWwgY2hhcmFjdGVyCglpbiBvYmplY3QtbGlrZSBtYWNyb3MuICBJbiAtdHJhZGl0aW9uYWwgbW9kZSwgLyoqLyBpcyBub3QKCXRva2VuIHBhc3RlIGF0IHRoZSBiZWdpbm5pbmcgb3IgZW5kIG9mIHRoZSBsaW5lLgoJKiBjcHBsaWIuYyAoZG9faW5jbHVkZSwgZG9faW1wb3J0LCBkb19pbmNsdWRlX25leHQpOiBJZgoJcGFyc2VfaW5jbHVkZSBmYWlscywgcmV0dXJuIGltbWVkaWF0ZWx5LgoKMjAwMC0wMy0yOCAgSmFzb24gTWVycmlsbCAgPGphc29uQGNhc2V5LmN5Z251cy5jb20+CgoJKiBjb25maWcvYXJtL2FybS5tZCAocmV0dXJuIHBlZXBob2xlcyk6IFVwZGF0ZSB0byByZWZsZWN0IHRoZSBuZXcKCWNhbGwgaW5zbiBwYXR0ZXJucy4KCSogY29uZmlnL2FybS9hcm0uYyAoYXJtX3ZvbGF0aWxlX2Z1bmMpOiBBbHNvIGNoZWNrCgljdXJyZW50X2Z1bmN0aW9uX25vdGhyb3cuCgkob3V0cHV0X3JldHVybl9pbnN0cnVjdGlvbiwgb3V0cHV0X2Z1bmNfcHJvbG9ndWUpOiBVc2UgaXQuCgkoYXJtX291dHB1dF9lcGlsb2d1ZSwgYXJtX2V4cGFuZF9wcm9sb2d1ZSk6IExpa2V3aXNlLgoKMjAwMC0wMy0yNyAgVG9tIFRyb21leSAgPHRyb21leUBjeWdudXMuY29tPgoKCSogZ2NjLmMgKGhhbmRsZV9icmFjZXMpOiBJbiB7eCouLi59IGNhc2UsIGJyZWFrIG91dCBvZiBsb29wIGlmCglzd2l0Y2ggaXMgZm91bmQuCgpUdWUgTWFyIDI4IDExOjU1OjQ4IDIwMDAgIFJpY2hhcmQgS2VubmVyICA8a2VubmVyQHZsc2kxLnVsdHJhLm55dS5lZHU+CgoJKiBleHByLmMgKHN0b3JlX2NvbnN0cnVjdG9yKTogU0laRSBub3cgc2lnbmVkLgoJRm9yIEVYUFJfU0laRSwgZG9uJ3QgZXZhbHVhdGUgc2l6ZTsganVzdCBuZWVkZWQgaWYgY29uc3RhbnQuCgkqIGZvbGQtY29uc3QuYyAoZm9sZCk6IEZpeCBhIG51bWJlciBvZiBjYXNlcyB3aGVuIGZvbGRlZCB0cmVlIGlzCgl3cm9uZyB0eXBlLgoJKiBmdW5jdGlvbi5jIChmbHVzaF9hZGRyZXNzb2YpOiBSZWVuYWJsZS4KCSogdHJlZS5oIChmbHVzaF9hZGRyZXNzb2YpOiBMaWtld2lzZS4KCSogdG9wbGV2LmMgKGluZGVwZW5kZW50X2RlY29kZV9vcHRpb24pOiBMb29rIGF0IHN0cmluZ3NfcHJvY2Vzc2VkLgoJKiBjb25maWcvYWxwaGEvYWxwaGEuaCAoTUlOSU1VTV9BVE9NSUNfQUxJR05NRU5UKTogQ2FzdCB0byB1bnNpZ25lZC4KClR1ZSBNYXIgMjggMDg6Mjk6NDYgMjAwMCAgSmFuIEh1Ymlja2EgIDxqaEBzdXNlLmN6PgoKCSogc2liY2FsbC5jIChpZGVudGlmeV9jYWxsX3JldHVybl92YWx1ZSk6IEZpbmQgbGFzdCBjYWxsIGluIHRoZSBjaGFpbjsKCUFsbG93IHN0YWNrIGFkanVzdG1lbnQgYWZ0ZXIgZnVuY3Rpb24gY2FsbC4KCgkqIHJlZ21vdmUuYyAoc3RydWN0IGNzYV9tZW1saXN0KTogTWFrZSBtZW0gZmllbGQgcnR4ICouCgkocmVjb3JkX29uZV9zdGFja19yZWYpOiBBY2NlcHQgcnR4ICogaW5zdGVhZCBvZiBydHggYXMgcGFyYW1ldGVyLgoJKHRyeV9hcHBseV9zdGFja19hZGp1c3RtZW50KTogUmVwbGFjZSB3aG9sZSBNRU0gcnR4LgoJKGNvbWJpbmVfc3RhY2tfYWRqdXN0bWVudHNfZm9yX2Jsb2NrKTogVXBkYXRlIGNhbGxzCgl0byByZWNvcmRfb25lX3N0YWNrX3JlZi4KCjIwMDAtMDMtMjggIE5laWwgQm9vdGggIDxOZWlsQkBlYXJ0aGxpbmcubmV0PgoKCSogY3BwbGV4LmMgKF9jcHBfcmVhZF9hbmRfcHJlc2Nhbik6IE1hcmsgZW5kIG9mIGlucHV0IGJ1ZmZlciB3aXRoCgknXFwnIHJhdGhlciB0aGFuIGEgbnVsbCBjaGFyYWN0ZXIsIHNvIG51bGxzIGFyZSBub3Qgc3BlY2lhbC4gIEZpeAoJIlxcXG4iIGhhbmRsaW5nIGluIGVuZC1vZi1idWZmZXIgY29uZGl0aW9ucy4gIFVzZSB0cmlncmFwaCBtYXAgdG8KCXNwZWVkIHRyaWdyYXBoIGNvbnZlcnNpb24uCgkoX2NwcF9pbml0X2lucHV0X2J1ZmZlcik6IEluaXRpYWxpemUgdHJpZ3JhcGggbWFwLgoKMjAwMC0wMy0yNyAgQWxhbiBNb2RyYSAgPGFsYW5AbGludXhjYXJlLmNvbS5hdT4KCgkqIGNvbmZpZy9pMzg2L2kzODYuYyAob3V0cHV0XzM4N19iaW5hcnlfb3ApOiBDb3JyZWN0IGludGVsCgltb2RlIGFzc2VtYmx5IG91dHB1dCwgYW5kIGFkZCBzcGFjZXMgYWZ0ZXIgY29tbWFzIGluIEFUJlQKCW91dHB1dC4gIENvcnJlY3QgVW5peHdhcmUgYXNzZW1ibGVyIGNvbW1lbnQuICBEb2N1bWVudCBpbnB1dAoJY29uc3RyYWludHMuICBDb21tZW50IGZwIG9wZXJhdGlvbnMuICBSZWR1Y2UgcHJvZmxpZ2F0ZSBidWZmZXIKCXNpemUuICBSZW1vdmUgZXh0cmFuZW91cyBhYm9ydC4gIExvY2FsaXplIHRlbXAgdmFyLgoJKFNZU1YzODZfQ09NUEFUKTogRGVmaW5lLiAgQWRkICFTWVNWMzg2X0NPTVBBVCBjb2RlLgoJKG91dHB1dF9maXhfdHJ1bmMpOiBBZGQgc3BhY2VzIGFmdGVyIGNvbW1hcyBpbiBhc3NlbWJseSBvdXRwdXQuCgoyMDAwLTAzLTI3ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEBjeWdudXMuY29tPgoKCSogaTM4Ni1wcm90b3MuaCAoaXg4Nl9tYXRjaF9jY21vZGUpOiBEZWNsYXJlLgoJKiBpMzg2LmMgKGl4ODZfbWF0Y2hfY2Ntb2RlKTogTmV3LgoJKGl4ODZfZXhwYW5kX2ZwX2NvbXBhcmUpOiBVcGRhdGUgZm9yIHBhdHRlcm4gcmVuYW1lcy4KCShpeDg2X2V4cGFuZF9zdHJsZW5zaV91bnJvbGxfMSk6IExpa2V3aXNlLgoJKiBpMzg2LmggKEVYVFJBX0NDX01PREVTKTogQWRkIENDWi4KCShTRUxFQ1RfQ0NfTU9ERSk6IFVzZSBpdCBmb3IgRVEvTkUgemVyby4KCSogaTM4Ni5tZCAoY21wc2lfY2N6XzEpOiBOZXcuCgkoY21wcWlfY2N6XzEpOiBOZXcuCgkoKnRlc3RzaV9jY3pfMSk6IE5ldy4KCSh0ZXN0cWlfY2N6XzEpOiBOZXcuCgkoY21wc2lfY2Nub18xKTogUmVuYW1lIGZyb20gY21wc2lfMC4KCSh0ZXN0c2lfY2Nub18xKTogUmVuYW1lIGZyb20gdGVzdHNpXzEuCgkodGVzdHFpX2Njbm9fMSk6IFJlbmFtZSBmcm9tIHRlc3RxaV8xLgoJKCp0ZXN0cWlfZXh0X2Njel8wKTogUmVuYW1lIGZyb20gdGVzdHFpX2V4dF8wLgoJKHRlc3RxaV9leHRfY2Nub18wKTogUmVuYW1lIGZyb20gKnRlc3RxaV9leHRfMS4KCSgqY21waGlfMCk6IFVzZSBpeDg2X21hdGNoX2NjbW9kZS4KCSgqY21wcWlfZXh0XzIsICphZGRzaV8yLCAqYWRkaGlfMiwgKmFkZHFpXzIpOiBMaWtld2lzZS4KCSgqc3Vic2lfMiwgKnN1YmhpXzIsICpzdWJxaV8yLCAqdGVzdGhpXzEpOiBMaWtld2lzZS4KCSgqdGVzdHFpX2V4dF8xLCAqdGVzdHFpX2V4dF8yLCAqdGVzdHFpX2V4dF8zKTogTGlrZXdpc2UuCgkoKmFuZHNpXzIsICphbmRoaV8yLCAqYW5kcWlfMiwgKmFuZHFpX2V4dF8wX2NjKTogTGlrZXdpc2UuCgkoKmlvcnNpXzIsICppb3JoaV8yLCAqaW9ycWlfMik6IExpa2V3aXNlLgoJKCp4b3JzaV8yLCAqeG9yaGlfMiwgKnhvcnFpX2NjXzEpOiBMaWtld2lzZS4KCSgqb25lX2NtcGxzaTJfMiwgKm9uZV9jbXBsaGkyXzIsICpvbmVfY21wbHFpMl8yKTogTGlrZXdpc2UuCgkoKmFzaGxzaTNfY21wbm8sICphc2hsaGkzX2NtcG5vLCAqYXNobHFpM19jbXBubyk6IExpa2V3aXNlLgoJKCphc2hyc2kzX2NtcG5vLCAqYXNocmhpM19jbXBubywgKmFzaHJxaTNfY21wbm8pOiBMaWtld2lzZS4KCSgqbHNocnNpM19jbXBubywgKmxzaHJoaTNfY21wbm8sICpsc2hycWkzX2NtcG5vKTogTGlrZXdpc2UuCgkoYXBwcm9wcmlhdGUgcGVlcGhvbGVzKTogTGlrZXdpc2UuCgkoKmNtcGhpXzEsICpjbXBxaV9jY25vXzEsICpjbXBxaV8xKTogU3RhciBvdXQgbmFtZS4KCSgqc3Vic2lfMywgKnN1YmhpXzMsICpzdWJxaV8zKTogUmVtb3ZlLgoJKCpuZWdkaTJfMSsxIHNwbGl0dGVyKTogVXNlIENDWiBmb3IgbmVnIHBhdHRlcm5zLgoJKCpuZWdzaTJfY21wLCAqbmVnaGkyX2NtcCwgKm5lZ3FpMl9jbXApOiBSZW1vdmUuCgkoKm5lZ3NpMl9jbXB6KTogUmVuYW1lIGZyb20gKm5lZ3NpMl9jbXBubywgdXNlIENDWi4KCSgqbmVnaGkyX2NtcHosICpuZWdxaTJfY21weik6IFNpbWlsYXJseS4KCSh4ODZfc2hpZnRfYWRqXzEpOiBVc2UgQ0NaLgoJKCpkYnJhX2dlKzEsICpkYnJhX2dlKzIsIGZmc3NpMiwgZmZzc2lfMSk6IExpa2V3aXNlLgoKMjAwMC0wMy0yNyAgU3RhbiBDb3ggIDxzY294QGN5Z251cy5jb20+CgoJKiByZXNvdXJjZS5oIChtYXJrX3Jlc291cmNlX3R5cGUpOiBOZXcuCgkqIHJlc291cmNlLmMgKGZpbmRfZGVhZF9vcl9zZXRfcmVnaXN0ZXJzLCBtYXJrX3RhcmdldF9saXZlX3JlZ3MsCglmaW5kX2ZyZWVfcmVnaXN0ZXIpOiBVc2UgbWFya19yZXNvdXJjZV90eXBlLgoJKG1hcmtfc2V0X3Jlc291cmNlcyk6IENoYW5nZSBpbmNsdWRlX2RlbGF5ZWRfZWZmZWN0cwoJdG8gbWFya19yZXNvdXJjZV90eXBlLgoJKiByZW9yZy5jIChzdGVhbF9kZWxheV9saXN0X2Zyb21fdGFyZ2V0LCB0cnlfbWVyZ2VfZGVsYXlfaW5zbnMsCglyZWR1bmRhbnRfaW5zbiwgZmlsbF9zaW1wbGVfZGVsYXlfc2xvdHMsIGZpbGxfc2xvdHNfZnJvbV90aHJlYWQpOgoJVXNlIG1hcmtfcmVzb3VyY2VfdHlwZS4KCjIwMDAtMDMtMjcgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgoJKiBpMzg2Lm1kIChjYWxsX3BvcF8wLCBjYWxsX3ZhbHVlX3BvcF8wKTogTmV3LgoJKGNhbGxfcG9wXzEpOiBSZW1vdmUgY29uc3RyYWludCBmcm9tIHVudXNlZCBhcmcuICBTdXBwb3J0IHNpYmNhbGxzLgoJKGNhbGxfdmFsdWVfcG9wXzEpOiBMaWtld2lzZS4KCShjYWxsXzAsIGNhbGxfdmFsdWVfMCk6IE5ldy4KCShjYWxsXzEsIGNhbGxfdmFsdWVfMSk6IFJlbW92ZSBjb25zdHJhaW50IGZyb20gdW51c2VkIGFyZy4KCjIwMDAtMDMtMjcgIE5pY2sgQ2xpZnRvbiAgPG5pY2tjQGN5Z251cy5jb20+CgoJKiBpbnZva2UudGV4aSAoU3BlYyBGaWxlcyk6IERvY3VtZW50IG5ldyBzcGVjICUgY29tbWFuZCBjcmVhdGVkIGJ5CglUb20gVHJvbWV5J3MgcmVjZW50IHBhdGNoLgoKMjAwMC0wMy0yNyAgSmFrdWIgSmVsaW5layAgPGpha3ViQHJlZGhhdC5jb20+CgoJKiBsaWJnY2MyLmggKE1JTl9VTklUU19QRVJfV09SRCk6IERlZmluZSB0byBVTklUU19QRVJfV09SRAoJaWYgbm90IGRlZmluZWQuCgpNb24gTWFyIDI3IDA2OjA0OjIyIDIwMDAgIFJpY2hhcmQgS2VubmVyICA8a2VubmVyQHZsc2kxLnVsdHJhLm55dS5lZHU+CgoJKiBleHByLmMgKGV4cGFuZF9hc3NpZ25tZW50KTogRml4IHR5cG8gaW4gbGFzdCBjaGFuZ2UuCgoJKiBsaWJnY2MyLmg6IFVzZSBNSU5fVU5JVFNfUEVSX1dPUkQsIG5vdCBVTklUU19QRVJfV09SRC4KClN1biBNYXIgMjYgMjA6MTU6MjYgMjAwMCAgUmljaGFyZCBLZW5uZXIgIDxrZW5uZXJAdmxzaTEudWx0cmEubnl1LmVkdT4KCgkqIGMtY29udmVydC5jIChjb252ZXJ0KTogUmV0dXJuIGlmIG91dHB1dCBvciBpbnB1dCB0eXBlIGlzIEVSUk9SX01BUksuCgkqIGMtZGVjbC5jIChkdXBsaWNhdGVfZGVjbHMpOiBPbmx5IGxvb2sgYXQgREVDTF9CVUlMVF9JTl9OT05BTlNJCglhbmQgREVDTF9JTkxJTkUgaWYgRlVOQ1RJT05fREVDTC4KCShwdXNoZGVjbCwgcmVkZWNsYXJhdGlvbl9lcnJvcl9tZXNzYWdlKTogTGlrZXdpc2UsIGZvciBERUNMX0lOTElORS4KCShzdG9yZV9wYXJtX2RlY2xzKTogQ2hlY2sgZm9yIHR5cGUgb2YgUEFSTV9ERUNMIGJlaW5nIEVSUk9SX01BUksuCglVc2UgREVDTF9XRUFLLCBub3QgREVDTF9SRVNVTFQsIHRvIGZsYWcgZm9yIGFscmVhZHkgc2Vlbi4KCShjb21iaW5lX3Bhcm1fZGVjbHMpOiBMaWtld2lzZS4KCSogZ2djLWNvbW1vbi5jIChnY2NfbWFya190cmVlX2NoaWxkcmVuLCBjYXNlICdkJyk6IFVzZSBERUNMX1JFU1VMVF9GTEQuCgkqIHByaW50LXRyZWUuYyAocHJpbnRfbm9kZSk6IExpa2V3aXNlLgoJT25seSB0ZXN0IERFQ0xfUEFDS0VELCBERUNMX0lOTElORSwgREVDTF9CSVRfRklFTEQsIGFuZAoJREVDTF9UUkFOU1BBUkVOVF9VTklPTiBvbiBwcm9wZXIgZGVjbCB0eXBlcy4KCVByb3Blcmx5IGhhbmRseSBERUNMX0lOQ09NSU5HX1JUTCBhbmQgREVDTF9TQVZFRF9JTlNOUy4KCSogc3Rvci1sYXlvdXQuYyAobGF5b3V0X2RlY2wpOiBPbmx5IGNoZWNrIERFQ0xfUEFDS0VEIGFuZAoJREVDTF9CSVRfRklFTEQgb2YgRklFTERfREVDTC4KCSogdHJlZS5oIChERUNMX1JFU1VMVF9GTEQpOiBOZXcgbWFjcm8uCgoJKiBleHByLmMgKGV4cGFuZF9hc3NpZ25tZW50KTogQWRkIGNvZGUgdG8gaGFuZGxlIHZhcmlhYmxlLXNpemVkCglCTEttb2RlIGNhc2UuCgoyMDAwLTAzLTI2ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEBjeWdudXMuY29tPgoKCSogY2FsbHMuYyAoZXhwYW5kX2NhbGwpOiBQYXNzIHBhcm1zIG5vdCBvcmlnaW5hbCBleHAgdG8KCW9wdGltaXplX3RhaWxfcmVjdXJzaW9uLiAgTWluZCByZXR1cm4gdmFsdWUgaW5zdGVhZCBvZiBsb29raW5nCglmb3IgYSBiYXJyaWVyLgoJKiBzdG10LmMgKG9wdGltaXplX3RhaWxfcmVjdXJzaW9uKTogVGFrZSBwYXJhbWV0ZXIgbGlzdCwgbm90IGVudGlyZQoJY2FsbF9leHByLiAgTW92ZSBjaGVja3MgZm9yIGNhbGxfZXhwciBhbmQgY3VycmVudF9mdW5jdGlvbl9kZWNsIC4uLgoJKGV4cGFuZF9yZXR1cm4pOiAuLi4gaGVyZS4KCjIwMDAtMDMtMjYgIFRvbSBUcm9tZXkgIDx0cm9tZXlAY3lnbnVzLmNvbT4KCgkqIGdjYy5jIChoYW5kbGVfYnJhY2VzKTogUmVjb2duaXplIGAlezxTfScgY29uc3RydWN0LgoJKFNXSVRDSF9PSywgU1dJVENIX0ZBTFNFLCBTV0lUQ0hfSUdOT1JFLCBTV0lUQ0hfTElWRSk6IE5ldwoJZGVmaW5lcy4KCShwcm9jZXNzX2NvbW1hbmQpOiBVc2UgdGhlbS4KCShjaGVja19saXZlX3N3aXRjaCk6IExpa2V3aXNlLgoJKGdpdmVfc3dpdGNoKTogU2tpcCBpZ25vcmVkIHN3aXRjaGVzLgoKMjAwMC0wMy0yNiAgSmFuIEh1Ymlja2EgIDxqaEBzdXNlLmN6PgoKCSoganVtcC5jIChqdW1wX29wdGltaXplXzEpOiBGaXggdHlwbyBpbiBlbGlkZSBvcHRpbWl6YXRpb25zCglmb3IgbWluaW1hbCBqdW1wIHBhc3MgdGVzdC4KCjIwMDAtMDMtMjYgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBpbnRlZ3JhdGUuYyAoZnVuY3Rpb25fY2Fubm90X2lubGluZV9wKTogRG8gaW5saW5lIGZ1bmN0aW9ucyB0aGF0CglyZXR1cm4gYHZvaWQnLgoKU3VuIE1hciAyNiAxMTozNzo1NSAyMDAwICBSaWNoYXJkIEtlbm5lciAgPGtlbm5lckB2bHNpMS51bHRyYS5ueXUuZWR1PgoKCSogc3Rvci1sYXlvdXQuYyAobGF5b3V0X3R5cGUsIHNldF9zaXpldHlwZSk6IGVhcmx5X3R5cGVfbGlzdCBpcwoJbm93IGEgbGlzdCBvZiBUUkVFX0xJU1QgZW50cmllcywgbm90IHR5cGVzLgoJKiB0cmVlLmMgKGJ1aWxkX2NvbW1vbl90cmVlX25vZGVzXzIpOiBFbGltaW5hdGUgZHVwbGlhdGUgdHlwZSBzZXRzLgoKCSogZXhwbWVkLmMgKGV4dHJhY3RfYml0X2ZpZWxkKTogRW5zdXJlIEJJVFNfUEVSX1dPUkQgaXMgc2lnbmVkIGluIE1BWC4KCSogY29uZmlnL2FybS9wZS5jIChhcm1fcGVfcmV0dXJuX2luX21lbW9yeSk6IFVzZSBob3N0X2ludGVnZXJwIGFuZAoJaW50X2JpdF9wb3NpdGlvbi4KCSogY29uZmlnL21pcHMvbWlwcy5jIChmdW5jdGlvbl9hcmcpOiBMaWtld2lzZTsgYWxzbyByZW1vdmUgY2FzdAoJYW5kIG1ha2UgdmFyaWFibGVzIHVuc2lnbmVkIG9yIEhPU1RfV0lERV9JTlQgYW5kIHVzZSB0cmVlX2xvd19jc3QuCgkobWlwc19mdW5jdGlvbl92YWx1ZSk6IFVzZSBpbnRfYnl0ZV9wb3NpdGlvbiBhbmQgbWFrZSBIT1NUX1dJREVfSU5ULgoJKiBjb25maWcvbWlwcy9hYmk2NC5oIChTRVRVUF9JTkNPTUlOR19WQVJBUkdTKTogT2Zmc2V0cyBhcmUgdW5zaWduZWQuCgkqIGNvbmZpZy9taXBzL21pcHMuaCAoQklUU19QRVJfV09SRCwgVU5JVFNfUEVSX1dPUkQpOiBDYXN0IHRvIHVuc2lnbmVkLgoJKFVOSVRTX1BFUl9GUFJFRywgSU5UX1RZUEVfU0laRSwgTE9OR19UWVBFX1NJWkUpOiBMaWtld2lzZS4KCShQT0lOVEVSX1NJWkUsIFBPSU5URVJfQk9VTkRBUlksUEFSTV9CT1VOREFSWSk6IExpa2V3aXNlLgoJKEdQX1JFR19QLCBGUF9SRUdfUCwgTURfUkVHX1AsIFNUX1JFR19QKTogRW5zdXJlIHN1YnRyYWN0aW9uIHNpZ25lZC4KCShzdHJ1Y3QgbWlwc19hcmcpOiBhcmdfbnVtYmVyLCBhcmdfd29yZHMsIGZwX2FyZ193b3JkcywgYW5kCgludW1fYWRqdXN0cyBub3cgdW5zaWduZWQuCgkoRlVOQ1RJT05fQVJHX0JPVU5EQVJZKTogUmVtb3ZlIHVubmVlZGVkIGNhc3QuCgkqIGNvbmZpZy9zcGFyYy9zcGFyYy5jIChzdHJ1Y3QgZnVuY3Rpb25fYXJnX3JlY29yZF92YWx1ZV9wYXJtcyk6CglOUkVHUyBub3cgdW5zaWduZWQuCgkoZnVuY3Rpb25fYXJnX3JlY29yZF92YWx1ZV8xKTogU1RBUlRCSVRQT1MgYXJnIG5vdyBIT1NUX1dJREVfSU5UCglhcyBpcyBCSVRQT1MgdmFyaWFibGU7IHVzZSBob3N0X2ludGVnZXJwIGFuZCBpbnRfYml0X3Bvc2l0aW9uLgoJKGZ1bmN0aW9uX2FyZ19yZWNvcmRfdmFsdWVfMik6IExpa2V3aXNlLgoJKGZ1bmN0aW9uX2FyZ19yZWNvcmRfdmFsdWVfMyk6IEFyZyBCSVRQT1Mgbm93IEhPU1RfV0lERV9JTlQuCglWYXJpYWJsZSBSRUdOTyBub3cgdW5zaWduZWQuCgkoZnVuY3Rpb25fYXJnX3JlY29yZF92YWx1ZSk6IE5SRUdTIG5vdyB1bnNpZ25lZC4KCjIwMDAtMDMtMjYgIEJlcm5kIFNjaG1pZHQgIDxiZXJuZHNAY3lnbnVzLmNvLnVrPgoKCSoganVtcC5jIChtYXJrX2FsbF9sYWJlbHMpOiBIYW5kbGUgQ0FMTF9QTEFDRUhPTERFUnMuCgpTYXQgTWFyIDI1IDA5OjEyOjEwIDIwMDAgIFJpY2hhcmQgS2VubmVyICA8a2VubmVyQHZsc2kxLnVsdHJhLm55dS5lZHU+CgoJKiBSZXdvcmsgZmllbGRzIHVzZWQgdG8gZGVzY3JpYmUgcG9zaXRpb25zIG9mIGJpdGZpZWxkcyBhbmQKCW1vZGlmeSBzaXplcyB0byBiZSB1bnNpZ25lZCBhbmQgdXNlIEhPU1RfV0lERV9JTlQuCgkqIGFsaWFzLmMgKHJlZ19rbm93bl92YWx1ZV9zaXplKTogTm93IHVuc2lnbmVkLgoJKiBjLXR5cGVjay5jIChidWlsZF91bmFyeV9vcCwgY2FzZSBBRERSX0VYUFIpOiBVc2UgYnl0ZV9wb3NpdGlvbi4KCShyZWFsbHlfc3RhcnRfaW5jcmVtZW50YWxfaW5pdCk6IFVzZSBiaXRzaXplX3plcm9fbm9kZS4KCShwdXNoX2luaXRfbGV2ZWwsIHBvcF9pbml0X2xldmVsLCBvdXRwdXRfaW5pdF9lbGVtZW50KTogTGlrZXdpc2UuCglVc2UgYml0c2l6ZV91bml0X25vZGUgYW5kIGJpdHNpemVfb25lX25vZGUuCgkob3V0cHV0X3BlbmRpbmdfaW5pdF9lbGVtZW50cywgcHJvY2Vzc19pbml0X2VsZW1lbnQpOiBMaWtld2lzZS4KCSogY29tYmluZS5jIChjb21iaW5lX21heF9yZWdubywgcmVnX3NpZ25fYml0X2NvcGllcyk6IE5vdyB1bnNpZ25lZC4KCShtYWtlX2V4dHJhY3Rpb24pOiBQb3NpdGlvbiBhbmQgbGVuZ3RoIEhPU1RfV0lERV9JTlQgYW5kIHVuc2lnbmVkCglIT1NUX1dJREVfSU5ULCByZXNwZWN0aXZlbHkuCgkoZ2V0X3Bvc19mcm9tX21hc2spOiBQYXNzZWQgaW4gdmFsdWUgaXMgdW5zaWduZWQgSE9TVF9XSURFX0lOVC4KCShudW1fc2lnbl9iaXRfY29waWVzKTogUmV0dXJucyB1bnNpZ25lZC4KCUJJVFdJRFRIIG5vdyB1bnNpZ25lZDsgcmV3b3JrIGFyaXRobWV0aWMuCglSZW1vdmUgcmVjdXJzaXZlIGNhbGwgZnJvbSBhcmcgdG8gTUFYLgoJKGNvbWJpbmVfaW5zdHJ1Y3Rpb25zLCBpbml0X3JlZ19sYXN0X2FycmF5cyk6IE5SRUdTIG5vdyB1bnNpZ25lZC4KCShzZXR1cF9pbmNvbWluZ19wcm9tb3Rpb25zLCBjYW5fY29tYmluZV9wLCB0cnlfY29tYmluZSwgc2ltcGxpZnlfc2V0KToKCVJFR05PIG5vdyB1bnNpZ25lZC4KCShzZXRfbm9uemVyb19iaXRfYW5kX3NpZ25fY29waWVzKTogTlVNIG5vdyB1bnNpZ25lZC4KCShmaW5kX3NwbGl0X3BvaW50LCBleHBhbmRfY29tcG91bmRfb3BlcmF0aW9uLCBtYWtlX2V4dHJhY3Rpb24pOiBMRU4KCW5vdyB1bnNpZ25lZCBIT1NUX1dJREVfSU5ULCBQT1Mgbm93IEhPU1RfV0lERV9JTlQuCgkobWFrZV9maWVsZF9hc3NpZ25tZW50KTogTGlrZXdpc2UuCgkoY29tYmluZV9zaW1wbGlmeV9ydHgpOiBBZGQgY2FzdC4KCShleHBhbmRfY29tcG91bmRfb3BlcmF0aW9uKTogTU9ERVdJRFRIIG5vdyB1bnNpZ25lZDsgcmV3b3JrIGFyaXRobWV0aWMuCgkoZm9yY2VfdG9fbW9kZSk6IFdJRFRIIG5vdyB1bnNpZ25lZDsgYWRkIGNhc3QuCgkoaWZfdGhlbl9lbHNlX2NvbmQpOiBTSVpFIG5vdyB1bnNpZ25lZC4KCShub256ZXJvX2JpdHMpOiBNT0RFX1dJRFRILCBSRVNVTFRfV0lEVEgsIGFuZCBXSURUSCBub3cgdW5zaWduZWQuCgkoZXh0ZW5kZWRfY291bnQpOiBOb3cgcmV0dXJucyB1bnNpZ25lZC4KCShzaW1wbGlmeV9zaGlmdF9jb25zdCk6IENPVU5UIHVuc2lnbmVkOyBhcmcgaXMgbm93IElOUFVUX0NPVU5ULgoJQWRkIFNJR05FRF9DT1VOVCB2YXJpYWJsZTsgTU9ERV9XT1JEUyBhbmQgRklSU1RfQ09VTlQgbm93IHVuc2lnbmVkLgoJKHNpbXBsaWZ5X2NvbXBhcmlzb24pOiBNT0RFX1dJRFRIIG5vdyB1bnNpZ25lZC4KCSh1cGRhdGVfdGFibGVfdGljayk6IFJFR05PIGFuZCBFTkRSRUdOTyBub3cgdW5zaWduZWQ7IG5ldyB2YXIgUi4KCShtYXJrX3VzZWRfcmVnc19jb21iaW5lKTogTGlrZXdpc2U7IHJld29yayBhcml0aG1ldGljLgoJKHJlY29yZF92YWx1ZV9mb3JfcmVnKTogUkVHTk8sIEVORFJFR05PLCBhbmQgSSBub3cgdW5zaWduZWQuCgkocmVjb3JkX2RlYWRfYW5kX3NldF9yZWdzLCByZWdfZGVhZF9hdF9wLCBkaXN0cmlidXRlX25vdGVzKTogTGlrZXdpc2UuCgkocmVjb3JkX3Byb21vdGVkX3ZhbHVlKTogUkVHTk8gbm93IHVuc2lnbmVkLgoJKGdldF9sYXN0X3ZhbHVlX3ZhbGlkYXRlKTogUkVHTk8sIEVORFJFR05PLCBhbmQgSiBub3cgdW5zaWduZWQuCgkoZ2V0X2xhc3RfdmFsdWUpOiBSRUdOTyBub3cgdW5zaWduZWQuCgkodXNlX2Nyb3NzZXNfc2V0X3ApOiBSRUdOTyBhbmQgRU5EUkVHTk8gbm93IHVuc2lnbmVkLgoJKHJlZ19kZWFkX3JlZ25vLCByZWdfZGVhZF9lbmRyZWdubyk6IE5vdyB1bnNpZ25lZC4KCShyZW1vdmVfZGVhdGgpOiBBcmcgUkVHTk8gbm93IHVuc2lnbmVkLgoJKG1vdmVfZGVhdGhzKTogIFJFR05PLCBERUFEUkVHTk8sIERFQURFTkQsIE9VUkVORCwgYW5kIEkgbm93IHVuc2lnbmVkLgoJKHJlZ19iaXRmaWVsZF90YXJnZXRfcCk6IFJFR05PLCBSRUdOTywgRU5EUkVHTk8sIGFuZCBFTkRUUkVHTk8KCW5vdyB1bnNpZ25lZC4KCSogY29udmVydC5jIChjb252ZXJ0X3RvX2ludGVnZXIpOiBJTlBSRUMgYW5kIE9VVFBSRUMgbm93IHVuc2lnbmVkLgoJKiBjc2UuYyAoc3RydWN0IHF0eV90YWJsZV9lbGVtKTogRklSU1RfUkVHIGFuZCBMQVNUX1JFRyBub3cgdW5zaWduZWQuCgkoc3RydWN0IGNzZV9yZWdfaW5mbyk6IFJFR05PIG5vdyB1bnNpZ25lZC4KCShjYWNoZWRfcmVnbm8pOiBOb3cgdW5zaWduZWQuCgkoUkVHTk9fUVRZX1ZBTElEX1ApOiBBZGQgY2FzdC4KCShtYWtlX25ld19xdHksIG1ha2VfcmVnc19lcXYsIGRlbGV0ZV9yZWdfZXFpdik6IFJlZ25vIGFyZ3MgdW5zaWduZWQuCgkocmVtb3ZlX2ludmFsaWRfcmVncyk6IExpa2V3aXNlLgoJKHJlbW92ZV9pbnZhbGlkX3N1YnJlZ19yZWZzKTogTGlrZXdpc2U7IGFyZyBXT1JEIGFsc28gdW5zaWduZWQKCWFzIGFyZSB2YXJpYWJsZXMgRU5EIGFuZCBJLgoJKGdldF9jc2VfcmVnX2luZm8sIGluc2VydCk6IExpa2V3aXNlLgoJKG1lbnRpb25fcmVncywgaW52YWxpZGF0ZV9mb3JfY2FsbCk6IFJFR05PLCBFTkRSRUdOTywgYW5kIEkgdW5zaWduZWQuCgkoY2Fub25faGFzaCk6IExpa2V3aXNlLgoJKGluc2VydF9yZWdzLCBsb29rdXBfZm9yX3JlbW92ZSk6IFJFR05PIG5vdyB1bnNpZ25lZC4KCShpbnZhbGlkYXRlKTogUkVHTk8sIEVORFJFR05PLCBUUkVHTk8sIGFuZCBURU5EUkVHTk8gbm93IHVuc2lnbmVkLgoJTmV3IHZhcmlhYmxlIFJOLgoJKiBkYnhvdXQuYyAoZGJ4b3V0X3Bhcm1zLCBkYnhvdXRfcmVnX3Bhcm1zKTogRG9uJ3QgY2hlY2sgZm9yIFJFR05PIDwgMC4KCSogZHdhcmYyb3V0LmMgKGR3YXJmMm91X2ZyYW1lX2RlYnVnX2V4cHIpOiBSZW1vdmUgY2FzdC4KCSogZW1pdC1ydGwuYyAoc3VicmVnX3JlYWxwYXJ0X3ApOiBBZGQgY2FzdC4KCShvcGVyYW5kX3N1YndvcmQpOiBBcmcgSSBpcyBub3cgdW5zaWduZWQgYXMgaXMgdmFyIFBBUlRXT1JEUy4KCShvcGVyYW5kX3N1YndvcmRfZm9yY2UpOiBBcmcgSSBpcyBub3cgdW5zaWduZWQuCgkqIGV4Y2VwdC5jIChlaF9yZWdzKTogVmFyaWFibGUgSSBpcyBub3cgdW5zaWduZWQuCgkqIGV4cGxvdy5jIChoYXJkX2Z1bmN0aW9uX3ZhbHVlKTogQllURVMgaXMgdW5zaWduZWQgSE9TVF9XSURFX0lOVC4KCSogZXhwbWVkLmMgKHN0b3JlX2ZpeGVkX2JpdF9maWVsZCk6IFBvc2l0aW9uIGlzIEhPU1RfV0lERV9JTlQ7CglsZW5ndGggaXMgdW5zaWduZWQgSE9TVF9XSURFX0lOVDsgbGlrZXdpc2UgZm9yIGludGVybmFsIHZhcmlhYmxlcy4KCShzdG9yZV9zcGxpdF9iaXRfZmllbGQsIGV4dHJhY3RfZml4ZWRfYml0X2ZpZWxkKTogTGlrZXdpc2UuCgkoZXh0cmFjdF9zcGxpdF9iaXRfZmllbGQsIHN0b3JlX2JpdF9maWVsZCwgZXh0cmFjdF9iaXRfZmllbGQpOgoJTGlrZXdpc2UuCgkqIGV4cHIuYyAoc3RvcmVfY29uc3RydWN0b3JfZmllbGRzLCBzdG9yZV9jb25zdHJ1Y3Rvciwgc3RvcmVfZmllbGQpOgoJUG9zaXRpb25zIGFyZSBIT1NUX1dJREVfSU5UIGFuZCBsZW5ndGhzIGFyZSB1bnNpZ25lZCBIT1NUX1dJREVfSU5ULgoJKGV4cGFuZF9hc3NpZ25tZW50LCBleHBhbmRfZXhwciwgZXhwYW5kX2V4cHJfdW5hbGlnbmVkKTogTGlrZXdpc2UuCgkoZG9fanVtcCk6IExpa2V3aXNlLgoJKG1vdmVfYnlfcGllY2VzLCBtb3ZlX2J5X3BpZWNlc19uaW5zbnMsIGNsZWFyX2J5X3BpZWNlcyk6CglNQVhfU0laRSBpcyBub3cgdW5zaWduZWQuCgkoZW1pdF9ncm91cF9sb2FkKTogQllURVBPUyBpcyBIT1NUX1dJREVfSU5UOyBCWVRFTEVOIGlzIHVuc2lnbmVkLgoJKGVtaXRfZ3JvdXBfc3RvcmUpOiBMaWtld2lzZS4KCShlbWl0X21vdmVfaW5zbik6IEkgbm93IHVuc2lnbmVkLgoJKHN0b3JlX2NvbnN0cnVjdG9yKTogVXNlIGhvc3RfaW50ZWdlcnAsIHRyZWVfbG93X2NzdCwgYW5kCgliaXRzaXplX3VuaXRfbm9kZS4KCShnZXRfaW5uZXJfcmVmZXJlbmNlKTogUmV0dXJuIGJpdHBvcyBhbmQgYml0c2l6ZSBhcyBIT1NUX1dJREVfSU5ULgoJUmV3b3JrIGFsbCBjYWxjdWxhdGlvbnMgdG8gdXNlIHRyZWVzIGFuZCBuZXcgZmllbGRzLgoJKiBleHByLmggKHByb21vdGVkX2lucHV0X2FyZyk6IFJlZ25vIG5vdyB1bnNpZ25lZC4KCShzdG9yZV9iaXRfZmllbGQsIGV4dHJhY3RfYml0X2ZpZWxkKTogQWRqdXN0IHR5cGVzIG9mIHBvcyBhbmQgc2l6ZS4KCShtYXJrX3NlZW5fY2FzZXMpOiBBcmcgaXMgSE9TVF9XSURFX0lOVC4KCSogZmxvdy5jICh2ZXJpZnlfd2lkZV9yZWdfMSk6IFJFR05PIG5vdyB1bnNpZ25lZC4KCSogZm9sZC1jb25zdC5jIChkZWNvZGVfZmllbGRfcmVmZXJlbmNlKTogU2l6ZSBhbmQgcG9zIEhPU1RfV0lERV9JTlQ7CglwcmVjaXNpb25zIGFuZCBhbGlnbm1lbnRzIGFyZSB1bnNpZ25lZC4KCShvcHRpbWl6ZV9iaXRfZmllbGRfY29tcGFyZSwgZm9sZF90cnV0aG9wKTogTGlrZXdpc2UuCgkoaW50X2NvbnN0X2Jpbm9wKTogQWRqdXN0IHRocmVzaG9sZCBmb3Igc2l6ZV9pbnRfdHlwZV93aWRlIGNhbGwuCgkoZm9sZF9jb252ZXJ0KTogTGlrZXdpc2UuCgkoc2l6ZV9pbnRfdHlwZV93aWRlKTogTWFrZSB0YWJsZSBsYXJnZXIgYW5kIGZpeCB0aGlua28gdGhhdCBvbmx5CgloYWQgaGFsZiBvZiB0YWJsZSB1c2VkLgoJKGFsbF9vbmVzX21hc2tfcCwgZm9sZCk6IFByZWNpc2lvbnMgYXJlIHVuc2lnbmVkLgoJKiBmdW5jdGlvbi5jIChwdXRfcmVnX2luZm9fc3RhY2spOiBSRUdOTyBpcyB1bnNpZ25lZC4KCShpbnN0YW50aWF0ZV9kZWNsKTogU2l6ZSBpcyBIT1NUX1dJREVfSU5ULgoJKGluc3RhbnRpYXRlX3ZpcnR1YWxfcmVncyk6IEkgaXMgdW5zaWduZWQuCgkoYXNzaWduX3Bhcm1zKTogUkVHTk8sIFJFR05PSSwgYW5kIFJFR05PUiBhcmUgdW5zaWduZWQuCgkocHJvbW90ZWRfaW5wdXRfYXJnKTogUkVHTk8gaXMgdW5zaWduZWQuCgkqIGZ1bmN0aW9uLmggKHN0cnVjdCBmdW5jdGlvbik6IHhfbWF4X3Bhcm1fcmVnIGlzIG5vdyB1bnNpZ25lZC4KCSogZ2NzZS5jIChtYXhfZ2NzZV9yZWdubyk6IE5vdyB1bnNpZ25lZC4KCShzdHJ1Y3QgbnVsbF9wb2ludGVyX2luZm8pOiBtaW5fcmVnIGFuZCBtYXhfcmVnIG5vdyB1bnNpZ25lZC4KCShsb29rdXBfc2V0LCBuZXh0X3NldCk6IFJFR05PIGFyZyBub3cgdW5zaWduZWQuCgkoY29tcHV0ZV9oYXNoX3RhYmxlKTogUkVHTk8gYW5kIEkgbm93IHVuc2lnbmVkLgoJKGhhbmRsZV9hdmFpbF9leHByKTogcmVnbnVtX2Zvcl9yZXBsYWNpbmcgbm93IHVuc2lnbmVkLgoJKGNwcm9wX2luc24pOiBSRUdOTyBub3cgdW5zaWduZWQuCgkoZGVsZXRlX251bGxfcG9pbnRlcl9jaGVja3NfMSk6IEJMT0NLX1JFRyBub3cgcG9pbnRlciB0byB1bnNpZ25lZC4KCSogZ2djLWNvbW1vbi5jIChnZ2NfbWFya190cmVlX2NoaWxkcmVuLCBjYXNlIEZJRUxEX0RFQ0wpOiBOZXcgY2FzZS4KCSogZ2xvYmFsLmMgKHNldF9wcmVmZXJlbmNlKTogU1JDX1JFR05PLCBERVNUX1JFR05PLCBhbmQgSSBub3cgdW5zaWduZWQuCgkqIGhhcmQtcmVnLXNldC5oIChyZWdfY2xhc3Nfc2l6ZSk6IE5vdyB1bnNpZ25lZC4KCSogaW50ZWdyYXRlLmMgKG1hcmtfc3RvcmVzKTogTEFTVF9SRUcgYW5kIEkgbm93IHVuc2lnbmVkOyBuZXcgVVJFR05PLgoJKiBqdW1wLmMgKG1hcmtfbW9kaWZpZWRfcmVnKTogSSBub3cgdW5zaWduZWQ7IGFkZCBjYXN0LgoJKHJ0eF9lcXVhbF9mb3JfdGhyZWFkX3ApOiBBZGQgY2FzdC4KCSogbG9vcC5jIChtYXhfcmVnX2JlZm9yZV9sb29wKTogTm93IHVuc2lnbmVkLgoJKHN0cnVjdF9tb3ZhYmxlKTogUkVHTk8gbm93IHVuc2lnbmVkLgoJKHRyeV9jb3B5X3Byb3ApOiBSRUdOTyBhcmcgdW5zaWduZWQuCgkocmVnc19tYXRjaF9wKTogWE4gYW5kIFlOIG5vdyB1bnNpZ25lZC4KCShjb25zZWNfc2V0c19pbnZhcmlhbnRfcCwgbWF5YmVfZWxpbWluYXRlX2Jpdik6IFJFR05PIG5vdyB1bnNpZ25lZC4KCShzdHJlbmd0aF9yZWR1Y2UpOiBMaWtld2lzZTsgTlJFR1MgYWxzbyB1bnNpZ25lZC4KCShmaXJzdF9pbmNyZW1lbnRfZ2l2LCBsYXN0X2luY3JlbWVudF9naXYgdW5zaWduZWQpOiBOb3cgdW5zaWduZWQuCgkqIGxvb3AuaCAoc3RydWN0IGl2X2NsYXNzKTogUkVHTk8gbm93IHVuc2lnbmVkLgoJKG1heF9yZWdfYmVmb3JlX2xvb3AsIGZpcnN0X2luY3JlbWVudF9naXYsIGxhc3RfaW5jcmVtZW50X2dpdik6CglOb3cgdW5zaWduZWQuCgkqIG1hY2htb2RlLmggKG1vZGVfc2l6ZSwgbW9kZV91bml0X3NpemUpOiBOb3cgdW5zaWduZWQuCgkobW9kZV9mb3Jfc2l6ZSwgc21hbGxlc3RfbW9kZV9mb3Jfc2l6ZSk6IFBhc3Mgc2l6ZSBhcyB1bnNpZ25lZC4KCSogb3B0YWJzLmMgKGV4cGFuZF9iaW5vcCk6IEkgYW5kIE5XT1JEUyBub3cgdW5zaWduZWQuCgkoZXhwYW5kX3Vub3ApOiBJIG5vdyB1bnNpZ25lZC4KCSogcHJpbnQtdHJlZS5jIChwcmludF9ub2RlKTogRG9uJ3QgcHJpbnQgREVDTF9GSUVMRF9CSVRQT1MsIGJ1dCBkbwoJcHJpbnQgREVDTF9GSUVMRF9PRkZTRVQgYW5kIERFQ0xfRklFTERfQklUX09GRlNFVC4KCSogcmVhbC5jIChzaWduaWZpY2FuZF9zaXplKTogTm93IHJldHVybnMgdW5zaWduZWQuCgkqIHJlYWwuaCAoc2lnbmlmaWNhbmRfc2l6ZSk6IExpa2V3aXNlLgoJKiByZWdjbGFzcy5jIChyZWdfY2xhc3Nfc2l6ZSk6IE5vdyB1bnNpZ25lZC4KCShjaG9vc2VfaGFyZF9yZWdfbW9kZSk6IEJvdGggb3BlcmFuZHMgbm93IHVuc2lnbmVkLgoJKHJlY29yZF9yZWdfY2xhc3Nlcyk6IFJFR05PIGFuZCBOUiBub3cgdW5zaWduZWQuCgkocmVnX3NjYW4pOiBOUkVHUyBub3cgdW5zaWduZWQuCgkocmVnX3NjYW5fdXBkYXRlKTogb2xkX21heF9yZWdubyBub3cgdW5zaWduZWQuCgkocmVnX3NjYW5fbWFya19yZWZzKTogQXJnIE1JTl9SRUdOTyBhbmQgdmFyIFJFR05PIG5vdyB1bnNpZ25lZC4KCSogcmVsb2FkLmMgKGZpbmRfdmFsaWRfY2xhc3MpOiBCRVNUX1NJWkUgbm93IHVuc2lnbmVkLgoJKGZpbmRfZHVtbXlfcmVsb2FkKTogUkVHTk8sIE5XT1JEUywgYW5kCUkgbm93IHVuc2lnbmVkLgoJKGhhcmRfcmVnX3NldF9oZXJlX3ApOiBBcmdzIEJFR19SRUdOTyBhbmQgRU5EX1JFR05PIG5vdyB1bnNpZ25lZC4KCUxpa2V3aXNlIGZvciB2YXJpYWJsZSBSLgoJKHJlZmVyc190b19yZWdub19mb3JfcmVsb2FkX3ApOiBBcmdzIFJFR05PIGFuZCBFTkRfUkVHTk8gbm93IHVuc2lnbmVkLAoJYXMgYXJlIHZhcmlhYmxlcyBJTk5FUl9SRUdOTyBhbmQgSU5ORVJfRU5EUkVHTk87IGFkZCBuZXcgdmFyaWFibGUgUi4KCShmaW5kX2VxdWl2X3JlZyk6IEFkZCBjYXN0cy4KCShyZWdub19jbG9iYmVyZWRfcCk6IEFyZyBSRUdOTyBub3cgdW5zaWduZWQuCgkqIHJlbG9hZC5oIChzdHJ1Y3QgcmVsb2FkKTogTlJFR1Mgbm93IHVuc2lnbmVkLgoJKHJlZmVyc190b19yZWdub19mb3JfcmVsb2FkX3ApOiBSZWdubyBhcmdzIGFyZSB1bnNpZ25lZC4KCShyZWdub19jbG9iYmVyZWRfcCk6IExpa2V3aXNlLgoJKiByZWxvYWQxLmMgKHJlZ19tYXhfcmVmX3dpZHRoLCBzcGlsbF9zdGFja19zbG90X3dpZHRoKTogTm93IHVuc2lnbmVkLgoJKGNvbXB1dGVfdXNlX2J5X3BzZXVkb3MpOiBSRUdOTyBub3cgdW5zaWduZWQuCgkoZmluZF9yZWcpOiBJIGFuZCBKIG5vdyB1bnNpZ25lZCwgbmV3IHZhcmlhYmxlIEssIGFuZCBjaGFuZ2UgbG9vcAoJdmFyaWFibGVzIGFjY29yZGluZ2x5OyBUSElTX05SRUdTIG5vdyB1bnNpZ25lZC4KCShhbHRlcl9yZWcpOiBJTkhFUkVOVF9TSVpFIGFuZCBUT1RBTF9TSVpFIG5vdyB1bnNpZ25lZC4KCShzcGlsbF9oYXJkX3JlZyk6IFJFR05PIGFyZyBub3cgdW5zaWduZWQ7IGFkZCBjYXN0cy4KCShmb3JnZXRfb2xkX3JlbG9hZHNfMSk6IFJFR05PLCBOUiwgYW5kIEkgbm93IHVuc2lnbmVkLgoJKG1hcmtfcmVsb2FkX3JlZ19pbl91c2UpOiBBcmcgUkVHTk8gYW5kIHZhcnMgTlJFR1MgYW5kIEkgbm93IHVuc2lnbmVkLgoJKGNsZWFyX3JlbG9hZF9yZWdfaW5fdXNlKTogQXJnIFJFR05PIGFuZCB2YXJzIE5SRUdTLCBTVEFSVF9SRUdOTywKCUVORF9SRUdOTywgQ09ORkxJQ1RfU1RBUlQsIGFuZCBDT05GTElDVF9FTkQgbm93IHVuc2lnbmVkLgoJKHJlbG9hZF9yZWdfZnJlZV9wLCByZWxvYWRfcmVnX3JlYWNoZXNfZW5kX3ApOiBBcmcgUkVHTk8gbm93IHVuc2lnbmVkLgoJKGNob29zZV9yZWxvYWRfcmVncyk6IE1BWF9HUk9VUF9TSVpFIG5vdyB1bnNpZ25lZC4KCShlbWl0X3JlbG9hZF9pbnNucyk6IFJFR05PIG5vdyB1bnNpZ25lZC4KCShyZWxvYWRfY3NlX21vdmUyYWRkKTogQWRkIGNhc3QuCgkobW92ZTJhZGRfbm90ZV9zdG9yZSk6IFJFR05PIGFuZCBJIG5vdyB1bnNpZ25lZDsgbmV3IHZhcmlhYmxlIEVORFJFR05PCglhbmQgcmV3b3JrIGxvb3AuCgkqIHJlc291cmNlLmMgKG1hcmtfcmVmZXJlbmNlZF9yZXNvdXJjZXMsIG1hcmtfc2V0X3Jlc291cmNlcyk6IE5ldwoJdmFyaWFibGUgUjsgUkVHTk8gYW5kIExBU1RfUkVHTk8gbm93IHVuc2lnbmVkLgoJKG1hcmtfdGFyZ2V0X2xpdmVfcmVncyk6IEogYW5kIFJFR05PIG5vdyB1bnNpZ25lZC4KCSogcnRsLmMgKG1vZGVfc2l6ZSwgbW9kZV91bml0X3NpemUpOiBOb3cgdW5zaWduZWQuCgkqIHJ0bC5oICh1bmlvbiBydHVuaW9uX2RlZik6IE5ldyBmaWVsZCBydHVpbnQuCgkoWENVSU5UKTogTmV3IG1hY3JvLgoJKEFERFJFU1NPRl9SRUdOTywgUkVHTk8sIFNVQlJFR19XT1JEKTogTmV3IFhDVUlOVC4KCShvcGVyYW5kX3N1YndvcmQsIG9wZXJhbmRfc3Vid29yZF9mb3JjZSk6IFdvcmQgbnVtYmVyIGlzIHVuc2lnbmVkLgoJKGNob29zZV9oYXJkX3JlZ19tb2RlKTogT3BlcmFuZHMgYXJlIHVuc2lnbmVkLgoJKHJlZmVyc190by1yZWdub19wLCBkZWFkX29yX3NldF9yZWdub19wKTogUmVnbm8gYXJnIGlzIHVuc2lnbmVkLgoJKGZpbmRfcmVnbm9fbm90ZSwgZmluZF9yZWdub19mdXNhZ2UsIHJlcGxhY2VfcmVncyk6IExpa2V3aXNlLgoJKHJlZ25vX3VzZV9pbiwgY29tYmluZV9pbnN0cnVjdGlvbnMsIHJlbW92ZV9kZWF0aCk6IExpa2V3aXNlLgoJKHJlZ19zY2FuLCByZWdfc2Nhbl91cGRhdGUpOiBMaWtld2lzZS4KCShleHRlbmRlZF9jb3VudCk6IFJldHVybiBpcyB1bnNpZ25lZC4KCSogcnRsYW5hbC5jIChyZWZlcnNfdG9fcmVnbm9fcCk6IEFyZ3MgUkVHTk8gYW5kIEVORFJFR05PIGFuZCB2YXJzIEksCglJTk5FUl9SRUdOTywgYW5kIElOTkVSX0VORFJFR05PIG5vdyB1bnNpZ25lZDsgbmV3IHZhcmlhYmxlIFhfUkVHTk8uCgkocmVnX292ZXJsYXBfbWVudGlvbmVkX3ApOiBSRUdOTyBhbmQgRU5EUkVHTk8gbm93IHVuc2lnbmVkLgoJKHJlZ19zZXRfbGFzdF9maXJzdF9yZWdubywgcmVnX3NldF9sYXN0X2xhc3RfcmVnbm8pOiBOb3cgdW5zaWduZWQuCgkocmVnX3JlZ19sYXN0XzEpOiBGSVJTIGFuZCBMQVNUIG5vdyB1bnNpZ25lZC4KCShkZWFkX29yX3NldF9wKTogUkVHTk8sIExBU1RfUkVHTk8sIGFuZCBJIG5vdyB1bnNpZ25lZC4KCShkZWFkX29yX3NldF9yZWdub19wKTogQXJnIFRFU1RfUkVHTk8gYW5kIHZhcnMgUkVHTk8gYW5kIEVORFJFR05PCglub3cgdW5zaWduZWQuCgkoZmluZF9yZWdub19ub3RlLCByZWdub191c2VfaW4pOiBBcmcgUkVHTk8gbm93IHVuc2lnbmVkLgoJKGZpbmRfcmVnbm9fZnVzYWdlKTogTGlrZXdpc2U7IGFsc28gdmFyIFJFR05PVEUgbm93IHVuc2lnbmVkLgoJKGZpbmRfcmVnX2Z1c2FnZSk6IFZhcmlhYmxlcyBSRUdOTywgRU5EX1JFR05PLCBhbmQgSSBub3cgdW5zaWduZWQuCgkocmVwbGFjZV9yZWdzKTogQXJnIE5SRUdTIG5vdyB1bnNpZ25lZC4KCSogc2Rib3V0LmMgKHNkYm91dF9wYXJtcywgc2Rib3V0X3JlZ19wYXJtcyk6IERvbid0IGNoZWNrIFJFR05PIDwgMC4KCSogc2ltcGxpZnktcnR4LmMgKHNpbXBsaWZ5X3VuYXJ5X29wZXJhdGlvbik6IFdJRFRIIG5vdyB1bnNpZ25lZC4KCShzaW1wbGlmeV9iaW5hcnlfb3BlcmF0aW9uKTogTGlrZXdpc2UuCgkoY3NlbGliX2ludmFsaWRhdGVfcmVnbm8pOiBBcmcgUkVHTk8gYW5kIHZhcmlhYmxlcyBFTkRSRUdOTywgSSwgYW5kCglUSElTX0xBU1Qgbm93IHVuc2lnbmVkLgoJKGNzZWxpYl9yZWNvcmRfc2V0KTogQWRkIGNhc3QuCgkqIHNzYS5jIChzc2FfbWF4X3JlZ19udW0pOiBOb3cgdW5zaWduZWQuCgkocmVuYW1lX2Jsb2NrKTogUkVHTk8gbm93IHVuc2lnbmVkLgoJKiBzdG10LmMgKGV4cGFuZF9yZXR1cm4pOiBCaXQgcG9zaXRpb25zIHVuc2lnbmVkIEhPU1RfV0lERV9JTlQ7CglzaXplcyBub3cgdW5zaWduZWQuCgkoYWxsX2Nhc2VzX2NvdW50KTogSnVzdCByZXR1cm4gLTEgbm90IC0yLgoJQ09VTlQsIE1JTlZBTCwgYW5kIExBU1RWQUwgbm93IEhPU1RfV0lERV9JTlQuCglSZXdvcmsgdGVzdHMgdG8gdXNlIHRyZWVzIHdoZW5ldmVyIHBvc3NpYmxlLgoJVXNlIGhvc3RfaW50ZWdlcnAgYW5kIHRyZWVfbG93X2NzdC4KCShtYXJrX3NlZW5fY2FzZXMpOiBDT1VOVCBhcmcgbm93IEhPU1RfV0lERV9JTlQ7CglMaWtld2lzZSB2YXJpYWJsZSBORVhUX05PREVfT0ZGU0VUOyBYTE8gbm93IHVuc2lnbmVkLgoJKGNoZWNrX2Zvcl9mdWxsX2VudW1lcmF0aW9uX2hhbmRpbmcpOiBCWVRFU19ORUVERUQsIEkgdG8gSE9TVF9XSURFX0lOVC4KCSogc3Rvci1sYXlvdXQuYyAobW9kZV9mb3Jfc2l6ZSk6IFNJWkUgYXJnIG5vdyB1bnNpZ25lZC4KCShzbWFsbGVzdF9tb2RlX2Zvcl9zaXplKTogTGlrZXdpc2UuCgkobGF5b3V0X2RlY2wpOiBTaW1wbGlmeSBoYW5kaW5nIG9mIGEgc3BlY2lmaWVkIERFQ0xfU0laRV9VTklULgoJS05PV05fQUxJR04gaXMgbm93IGFuIGFsaWdubWVudCwgc28gc2ltcGxpZnkgY29kZS4KCURvbid0IHR1cm4gb2ZmIERFQ0xfQklUX0ZJRUxEIGlmIGZpZWxkIGlzIEJMS21vZGUsIGJ1dCBub3QgdHlwZS4KCShzdGFydF9yZWNvcmRfbGF5b3V0KTogUmVuYW1lZCBmcm9tIG5ld19yZWNvcmRfbGF5b3V0X2luZm8uCglVcGRhdGUgdG8gbmV3IGZpZWxkcy4KCShkZWJ1Z19ybGksIG5vcm1hbGl6ZV9ybGksIHJsaV9zaXplX3VuaXRfc29fZmFyLCBybGlfc2l6ZV9zb19mYXIpOgoJTmV3IGZ1bmN0aW9ucy4KCShwbGFjZV91bmlvbl9maWVsZCk6IFJlbmFtZWQgZnJvbSBsYXlvdXRfdW5pb25fZmllbGQuCglVcGRhdGUgdG8gdXNlIG5ldyBmaWVsZHMgaW4gcmxpLgoJKHBsYWNlX2ZpZWxkKTogUmVuYW1lZCBmcm9tIGxheW91dF9maWVsZC4KCU1ham9yIHJld3JpdGUgdG8gdXNlIG5ldyBmaWVsZHMgaW4gcmxpOyBwYXNzIGFsaWdubWVudCB0byBsYXlvdXRfZGVjbC4KCShmaW5hbGl6ZV9yZWNvcmRfc2l6ZSk6IFJld29yayB0byB1c2UgbmV3IGZpZWxkcyBpbiBybGkgYW5kIGhhbmRsZQoJdW5pb24uCgkoY29tcHV0ZV9yZWNvcmRfbW9kZSk6IFJld29yayB0byBzaW1wbGlmeSBhbmQgdG8gdXNlIG5ldyBERUNMIGZpZWxkcy4KCShmaW5hbGl6ZV90eXBlX3NpemUpOiBNYWtlIHJvdW5kaW5nIG1vcmUgY29uc2lzdGVudC4KCShmaW5pc2hfdW5pb25fbGF5b3V0KTogRGVsZXRlZC4KCShsYXlvdXRfdHlwZSwgY2FzZSBWT0lEX1RZUEUpOiBEb24ndCBzZXQgVFlQRV9TSVpFX1VOSVQgZWl0aGVyLgoJKGxheW91dF90eXBlLCBjYXNlIFJFQ09SRF9UWVBFKTogQ2FsbCBuZXcgZnVuY3Rpb24gbmFtZXMuCgkoaW5pdGlhbGl6ZV9zaXpldHlwZXMpOiBTZXQgVFlQRV9JU19TSVpFVFlQRS4KCShzZXRfc2l6ZXR5cGUpOiBTZXQgVFlQRV9JU19TSVpFVFlQRSBlYXJsaWVyLgoJKGdldF9iZXN0X21vZGUpOiBVTklUIGlzIG5vdyB1bnNpZ25lZDsgcmVtb3ZlIGNhc3RzLgoJKiB0cmVlLmMgKGJpdF9wb3NpdGlvbik6IENvbXB1dGUgZnJvbSBuZXcgZmllbGRzLgoJKGJ5dGVfcG9zaXRpb24sIGludF9ieXRlX3Bvc2l0aW9uKTogTmV3IGZ1bmN0aW9ucy4KCShwcmludF90eXBlX2hhc2hfc3RhdGlzdGljcyk6IENhc3QgdG8gcmVtb3ZlIHdhcm5pbmcuCgkoYnVpbGRfcmFuZ2VfdHlwZSk6IFVzZSBob3N0X2ludGVnZXJwIGFuZCB0cmVlX2xvd19jc3QgdG8gdHJ5IHRvIGhhc2guCgkoYnVpbGRfaW5kZXhfdHlwZSk6IExpa2V3aXNlOyBtYWtlIHN1YnR5cGUgb2Ygc2l6ZXR5cGUuCgkoYnVpbGRfaW5kZXhfMl90eXBlKTogUGFzcyBzaXpldHlwZSB0byBidWlsZF9yYW5nZV90eXBlLgoJKGJ1aWxkX2NvbW1vbl90cmVlX25vZGVzKTogVXNlIHNpemVfaW50IGFuZCBiaXRzaXplX2ludCB0bwoJaW5pdGlhbGl6ZSBub2RlczsgYWRkIGJpdHNpemVfe3plcm8sb25lLHVuaXR9X25vZGUuCgkqIHRyZWUuaCAoREVDTF9GSUVMRF9DT05URVhUKTogVXNlIEZJRUxEX0RFQ0xfQ0hFQ0suCgkoREVDTF9CSVRfRklFTERfVFlQRSwgREVDTF9RVUFMSUZJRVIsIERFQ0xfRkNPTlRFWFQpOiBMaWtld2lzZS4KCShERUNMX1BBQ0tFRCwgREVDTF9CSVRfRklFTEQpOiBMaWtld2lzZS4KCShERUNMX0ZJRUxEX0JJVFBPUyk6IERlbGV0ZWQuCgkoREVDTF9GSUVMRF9PRkZTRVQsIERFQ0xfRklFTERfQklUX09GRlNFVCk6IE5ldyBmaWVsZHMuCgkoREVDTF9SRVNVTFQsIERFQ0xfU0FWRURfSU5TTlMpOiBVc2UgRlVOQ1RJT05fREVDTF9DSEVDSy4KCShERUNMX0ZSQU1FX1NJWkUsIERFQ0xfRlVOQ1RJT05fQ09ERSwgREVDTF9OT19TVEFUSUNfQ0hBSU4pOiBMaWtld2lzZS4KCShERUNMX0lOTElORSwgREVDTF9CVUlMVF9JTl9OT05BTlNJLCBERUNMX0lTX01BTExPQyk6IExpa2V3aXNlLgoJKERFQ0xfQlVJTFRfSU5fQ0xBU1MsIERFQ0xfU1RBVElDX0NPTlNUUlVDVE9SKTogTGlrZXdpc2UuCgkoREVDTF9TVEFUSUNfREVTVFJVQ1RPUiwgREVDTF9OT19DSEVDS19NRU1PUllfVVNBR0UpOiBMaWtld2lzZS4KCShERUNMX05PX0lOU1RSVU1FTlRfRlVOQ1RJT05fRU5UUllfRVhJVCwgREVDTF9OT19MSU1JVF9TVEFDSykgTGlrZXdpc2UuCgkoREVDTF9PUklHSU5BTF9UWVBFLCBUWVBFX0RFQ0xfU1VQUFJFU1NfREVCVUcpOiBVc2UgVFlQRV9ERUNMX0NIRUNLLgoJKERFQ0xfQVJHX1RZUEVfQVNfV1JJVEVOLCBERUNMX0FSR19UWVBFKTogVXNlIFBBUk1fREVDTF9DSEVDSy4KCShERUNMX0lOQ09NSU5HX1JUTCwgREVDTF9UUkFOU1BBUkVOVF9VTklPTik6IExpa2V3aXNlLgoJKERFQ0xfQUxJR04pOiBBZGp1c3QgdG8gbmV3IGZpZWxkIGluIHVuaW9uLgoJKERFQ0xfT0ZGU0VUX0FMSUdOKTogTmV3IGZpZWxkLgoJKERFQ0xfRVJST1JfSVNTVUVELCBERUNMX1RPT19MQVRFKTogVXNlIExBQkVMX0RFQ0xfQ0hFQ0suCgkoREVDTF9JTl9URVhUX1NFQ1RJT04pOiBVc2UgVkFSX0RFQ0xfQ0hFQ0suCgkodW5pb24gdHJlZV9kZWNsKTogQWRkIHN0cnVjdCBmb3IgYm90aCBhbGlnbnMuCgkoZW51bSB0cmVlX2luZGV4KTogQWRkIFRJX0JJVFNJWkVfe1pFUk8sT05FLFVOSVR9LgoJKGJpdHNpemVfemVyb19ub2RlLCBiaXRzaXplX29uZV9ub2RlLCBiaXRzaXplX3VuaXRfbm9kZSk6IEFkZGVkLgoJKHN0cnVjdCByZWNvcmRfbGF5b3V0X2luZm8pOiBSZXdvcmsgZmllbGRzIHRvIGhhdmUgb2Zmc2V0CglhbGlnbm1lbnQgYW5kIGJ5dGUgYW5kIGJpdCBwb3NpdGlvbi4KCShzdGFydF9yZWNvcmRfbGF5b3V0LCBwbGFjZV9maWVsZCk6IFJlbmFtZWQgZnJvbSBvbGQgbmFtZXMuCgkocmxpX3NpemVfc29fZmFyLCBybGlfc2l6ZV91bml0X3NvX2Zhciwgbm9ybWFsaXplX3JsaSk6IE5ldyBkZWNscy4KCShieXRlX3Bvc2l0aW9uLCBpbnRfYnl0ZV9wb3NpdGlvbik6IExpa2V3aXNlLgoJKGdldF9pbm5lcl9yZWZlcmVuY2UpOiBDaGFuZ2UgdHlwZXMgb2YgcG9zaXRpb24gYW5kIGxlbmd0aC4KCSogdW5yb2xsLmMgKHVucm9sbF9sb29wKTogTmV3IHZhcmlhYmxlIFI7IHVzZSBmb3Igc29tZSBsb29wcy4KCU1BWF9MT0NBTF9SRUdOVU0gYW5kIE1BWFJFR05VTSBub3cgdW5zaWduZWQuCgkoY2FsY3VsYXRlX2dpdl9pbmMpOiBBcmcgUkVHTk8gbm93IHVuc2lnbmVkLgoJKGNvcHlfbG9vcF9ib2R5KTogUkVHTk8gYW5kIFNSQ19SRUdOTyBub3cgdW5zaWduZWQuCgkqIHZhcmFzbS5jIChhc3NlbWJsZV92YXJpYWJsZSk6IENsZWFuIHVwIGhhbmRsaW5nIG9mIHNpemUgdXNpbmcKCWhvc3RfaW50ZWdlcnAgYW5kIHRyZWVfbG93X2NzdC4KCShkZWNvZGVfYWRkcl9jb25zdCk6IFVzZSBieXRlLCBub3QgYml0LCBwb3NpdGlvbi4KCShvdXRwdXRfY29uc3RydWN0b3IpOiBiaXRwb3MgYW5kIG9mZnNldHMgYXJlIEhPU1RfV0lERV9JTlQ7Cgl1c2UgdHJlZV9sb3dfY3N0IGFuZCBpbnRfYml0X3Bvc2l0aW9uLgoJKiBvYmpjL29iamMtYWN0LmMgKGJ1aWxkX2l2YXJfbGlzdF9pbml0aWFsaXplcik6IFVzZSBieXRlX3Bvc2l0aW9uLgoKRnJpIE1hciAyNCAyMDoxMzo0OSAyMDAwICBKYXNvbiBFY2toYXJkdCAgPGpsZUBjeWdudXMuY29tPgoKCSogYmItcmVvcmRlci5jIChSRU9SREVSX01PVkVEX0JMT0NLX0VORCk6IFJlbW92ZWQuCgkocmVvcmRlcl9ibG9ja19kZWYpOiBOZXcgbWVtYmVycyBlZmZfaGVhZCBhbmQgZWZmX2VuZC4KCShSRU9SREVSX0JMT0NLX0VGRl9IRUFELCBSRU9SREVSX0JMT0NLX0VGRl9FTkQpOiBOZXcgbWFjcm9zLgoJKHZlcmlmeV9pbnNuX2NoYWluKTogTmV3IGZ1bmN0aW9uLgoJKHNraXBfaW5zbnNfYmV0d2Vlbl9ibG9jayk6IEFkZCBjb2RlIHRvIHNraXAgZGVsZXRlZCBpbnNucy4KCUNoZWNrIGZvciBub3RlIGJlZm9yZSB1c2luZy4KCShjaGFpbl9yZW9yZGVyX2Jsb2Nrcyk6IFJlcGxhY2UgY2FsbHMgdG8gc2tpcF9pbnNuc19iZXR3ZWVuX2Jsb2NrCgl3aXRoIHJlZmVyZW5jZXMgdG8gUkVPUkRFUl9CTE9DS19FRkZfSEVBRCBhbmQgUkVPUkRFUl9CTE9DS19FRkZfRU5ELgoJQ2hlY2sgZm9yIG5vdGUgYmVmb3JlIHVzaW5nLgoJKG1ha2VfcmVvcmRlcl9jaGFpbik6IFVzZSBJTlRWQUwgcmF0aGVyIHRoYW4gWElOVCB0byBnZXQgUkVHX0JSX1BST0IuCgkoZml4dXBfcmVvcmRlcl9jaGFpbik6IFJlc3RydWN0dXJlLCBjbGVhbiB1cCwgZGVmZWN0IHJlbW92YWwuCgkocmVvcmRlcl9iYXNpY19ibG9ja3MpOiBSZW1vdmUgbGFzdF9pbnNuIGFuZCByZWZlcmVuY2VzIHRvIGl0LgoJTW92ZWQgaW5zbiBjaGFpbiB2ZXJpZmljYXRpb24gY29kZSBpbnRvIGEgbmV3IGZ1bmN0aW9uIChzZWUgYWJvdmUpLgoJRGVsZXRlIGRlZmVjdGl2ZSBjb2RlIHRoYXQgc2V0cyBsYXN0IGluc24uCglJbml0aWFsaXplIFJFT1JERVJfQkxPQ0tfRUZGX0hFQUQgYW5kIFJFT1JERVJfQkxPQ0tfRUZGX0VORCBmb3IKCWFsbCBibG9ja3MuCgoyMDAwLTAzLTI1ICBNaWNoYWVsIEhheWVzICA8bS5oYXllc0BlbGVjLmNhbnRlcmJ1cnkuYWMubno+CgoJKiBjb25maWcvYzR4L2M0eC5oIChDUFBfU1BFQyk6IFJlbW92ZSBlcnJvbmVvdXMgc3BhY2UuCgoyMDAwLTAzLTI0ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEBjeWdudXMuY29tPgoKCSogdHJlZS5jIChsYW5nX3NhZmVfZm9yX3Vuc2F2ZSk6IFJlbW92ZS4KCSh1bnNhZmVfZm9yX3JlZXZhbCk6IFRyYW5zbXV0ZSBhbmQgcmVuYW1lIGZyb20gc2FmZV9mb3JfdW5zYXZlLAoJYWxsb3dpbmcgZm9yIHR3byBsZXZlbHMgb2YgdW5zYWZlbmVzcy4gIFJlbW92ZSBsYW5nIGhvb2suCgkqIHRyZWUuaDogVXBkYXRlIGRlY2xhcmF0aW9ucy4KCSogY2FsbHMuYyAoZXhwYW5kX2NhbGwpOiBSZW5hbWUgc2FmZV9mb3JfcmVldmFsIHRvIHRyeV90YWlsX2NhbGwuCglDcmVhdGUgdGVtcG9yYXJ5IFZBUl9ERUNMcyB0byBwcm90ZWN0IHZlcnkgdW5zYWZlX2Zvcl9yZWV2YWwgdHJlZXMuCglBbHdheXMgZmFpbCBzaWJjYWxscyB3aGVuIHRoZXJlIGFyZSBwZW5kaW5nIGNsZWFudXBzLgoKMjAwMC0wMy0yNCAgR2VvZmYgS2VhdGluZyAgPGdlb2Zma0BjeWdudXMuY29tPgoKCSogZmxvdy5jIChwcm9wYWdhdGVfYmxvY2spOiBXaGVuIHdlIGRlbGV0ZSBhbiBBRERSX1ZFQywKCWFsc28gZGVsZXRlIHRoZSBCQVJSSUVSIGZvbGxvd2luZyBpdCBpZiB0aGVyZSBpcyBvbmUuCgoyMDAwLTAzLTI0ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEBjeWdudXMuY29tPgoKCSogYnVpbHRpbnMuYyAoZXhwYW5kX2J1aWx0aW5fYnplcm8pOiBDb252ZXJ0IGBsZW5ndGgnIGFyZ3VtZW50Cgl0byBzaXpldHlwZS4KCjIwMDAtMDMtMjQgIEpha3ViIEplbGluZWsgIDxqYWt1YkByZWRoYXQuY29tPgoKCSogc2liY2FsbC5jIChza2lwX2NvcHlfdG9fcmV0dXJuX3ZhbHVlKTogVXNlIE9VVEdPSU5HX1JFR05PIGZvcgoJY29tcGFyaXNvbiBpZiByZWdubydzIGFyZSBlcXVhbC4KCSogY2FsbHMuYyAoaW5pdGlhbGl6ZV9hcmd1bWVudF9pbmZvcm1hdCk6IEFkZCBlY2ZfZmxhZ3MgYXJndW1lbnQuCglVc2UgRlVOQ1RJT05fSU5DT01JTkdfQVJHIGlmIGF2YWlsYWJsZSBhbmQgRUNGX1NJQkNBTEwuCgkoZXhwYW5kX2NhbGwpOiBVcGRhdGUgY2FsbGVyLgoJQXZvaWQgbWFraW5nIGEgc2libGluZyBjYWxsIGlmIGFyZ3VtZW50IHNpemUgb2YgdGhlIGNhbGxlZSBpcyBsYXJnZXIKCXRoYW4gYXJndW1lbnQgc2l6ZSBvZiB0aGUgY2FsbGVyLgoJQ2FsbCBoYXJkX2Z1bmN0aW9uX3ZhbHVlIHdpdGggb3V0Z29pbmcgc2V0IGlmIGluIHNpYmNhbGwgcGFzcy4KCVVzZSBGVU5DVElPTl9JTkNPTUlOR19BUkcgaWYgYXZhaWxhYmxlIGFuZCBFQ0ZfU0lCQ0FMTC4KCgkqIGZpbmFsLmMgKHBlcm1pdHRlZF9yZWdfaW5fbGVhZl9mdW5jdGlvbnMsIG9ubHlfbGVhZl9yZWdzX3VzZWQpOgoJQ2hhbmdlIExFQUZfUkVHSVNURVJTIGZyb20gYW4gYXJyYXkgaW5pdGlhbGl6ZXIgdG8gYWN0dWFsIGFycmF5CglpZGVudGlmaWVyLiBNb3ZlIHN0YXRpYyBnbG9iYWwgdmFyaWFibGUgaW50byB0aGUgZnVuY3Rpb24uCgkobGVhZl9mdW5jdGlvbl9wKTogQWxsb3cgU0lCTElOR19DQUxMX1AgY2FsbHMgZXZlbiBvdXRzaWRlIG9mCglzZXF1ZW5jZXMgZm9yIGxlYWYgZnVuY3Rpb25zLgoJKiBnbG9iYWwuYyAoZ2xvYmFsX2FsbG9jKTogTGlrZXdpc2UuCgkqIHRtLnRleGkgKExFQUZfUkVHSVNURVJTKTogVXBkYXRlIGRvY3VtZW50YXRpb24uCgoJKiBjb25maWcvc3BhcmMvc3BhcmMuaCAoQ09ORElUSU9OQUxfUkVHSVNURVJfVVNBR0UpOiBSZW1vdmUgdGhlIHVnbHkKCVRBUkdFVF9GTEFUIGxlYWYgZGlzYWJsaW5nIGhhY2suCgkoTEVBRl9SRUdJU1RFUlMpOiBDaGFuZ2VkIGZyb20gYW4gYXJyYXkgaW5pdGlhbGl6ZXIgdG8gYWN0dWFsIGFycmF5CglpZGVudGlmaWVyIHRvIGF2b2lkIGR1cGxpY2F0aW9uIGFuZCByZW1vdmUgdGhlIGFib3ZlIGhhY2suCgkoRlVOQ1RJT05fT0tfRk9SX1NJQkNBTEwpOiBEZWZpbmUuCgkqIGNvbmZpZy9zcGFyYy9zcGFyYy5tZCAoc2liY2FsbCk6IE5ldyBhdHRyIHR5cGUuIFVzZSBpdCBhbG1vc3QKCWFsd2F5cyBsaWtlIGNhbGwgYXR0cmlidXRlLgoJKGVsaWdpYmxlX2Zvcl9zaWJjYWxsX2RlbGF5KTogTmV3IGF0dHJpYnV0ZS4KCShzaWJjYWxsKTogTmV3IGRlbGF5IHR5cGUuCgkoc2liY2FsbCwgc2liY2FsbF92YWx1ZSwgc2liY2FsbF9lcGlsb2d1ZSk6IE5ldyBleHBhbmRzLgoJKHNpYmNhbGxfc3ltYm9saWNfc3AzMiwgc2liY2FsbF9zeW1ib2xpY19zcDY0LAoJc2liY2FsbF92YWx1ZV9zeW1ib2xpY19zcDMyLCBzaWJjYWxsX3ZhbHVlX3N5bWJvbGljX3NwNjQpOiBOZXcgaW5zbnMuCgkqIGNvbmZpZy9zcGFyYy9zcGFyYy5jIChzcGFyY19sZWFmX3JlZ3MpOiBOZXcgYXJyYXkuCgkoZWxpZ2libGVfZm9yX3NpYmNhbGxfZGVsYXksIG91dHB1dF9yZXN0b3JlX3JlZ3MsIG91dHB1dF9zaWJjYWxsKToKCU5ldyBmdW5jdGlvbnMuCgkob3V0cHV0X2Z1bmN0aW9uX2VwaWxvZ3VlKTogTW92ZSBwYXJ0IG9mIHRoZSBjb2RlIGludG8KCW91dHB1dF9yZXN0b3JlX3JlZ3MuCgkodWx0cmFfY29kZV9mcm9tX21hc2ssIHVsdHJhc3BhcmNfc2NoZWRfcmVvcmRlcik6IEhhbmRsZQoJVFlQRV9TSUJDQUxMLgoJKiBzcGFyYy1wcm90b3MuaCAob3V0cHV0X3NpYmNhbGwsIGVsaWdpYmxlX2Zvcl9zaWJjYWxsX2RlbGF5KTogTmV3Cglwcm90b3R5cGVzLgoKCSogY29uZmlnL3NwYXJjL3NwYXJjLmggKFJFVkVSU0lCTEVfQ0NfTU9ERSk6IFJldmVydCBKYW4sIDI1IGNoYW5nZQoJdW50aWwgaW5mcmFzdHJ1Y3R1cmUgaXMgZmluaXNoZWQuCgpGcmkgTWFyIDI0IDEzOjQ5OjQ1IDIwMDAgIEplZmZyZXkgQSBMYXcgIChsYXdAY3lnbnVzLmNvbSkKCgkqIGludGVncmF0ZS5jIChzYXZlX2Zvcl9pbmxpbmVfbm9jb3B5KTogQ2xlYXIgaW5fbm9ucGFybV9pbnNucyBoZXJlLgoJKHNhdmVfcGFybV9pbnNucyk6IE5vdCBoZXJlLgoKMjAwMC0wMy0yNCAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogYnVpbHRpbnMuYyAoZXhwYW5kX2J1aWx0aW5fYnplcm8pOiBOZXcgZnVuY3Rpb24uCgkoZXhwYW5kX2J1aWx0aW4pOiBIYW5kbGUgYnplcm8uCgoJKiBidWlsdGlucy5kZWY6IEFkZCBCVUlMVF9JTl9CWkVSTy4KCgkqIGMtY29tbW9uLmMgKGNfY29tbW9uX25vZGVzX2FuZF9idWlsdGlucyk6IFByb3ZpZGUgYnVpbHRpbgoJcHJvdG90eXBlICYgZnVuY3Rpb24gZm9yIGJ6ZXJvLgoKMjAwMC0wMy0yMyAgTWljaGFlbCBNZWlzc25lciAgPG1laXNzbmVyQHJlZGhhdC5jb20+CgoJKiBjb25maWcvYWxwaGEvYWxwaGEubWQgKFRGIGZsb2F0aW5nIHBvaW50IGluc25zKTogVW5kbyAyMDAwLTAzLTIxCgljaGFuZ2UgYWRkaW5nIFRBUkdFVF9GUCB0byB0aGUgVEYgZmxvYXRpbmcgcG9pbnQgaW5zbnMsIGV4Y2VwdCBmb3IKCXRydW5jdGZzZjIsIHdoaWNoIGdlbmVyYXRlcyBkaXJlY3QgY2FsbHMgdG8gdHJ1bmNkZnNmMi4KCjIwMDAtMDMtMjMgIEdlb2ZmIEtlYXRpbmcgIDxnZW9mZmtAY3lnbnVzLmNvbT4KCgkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLmggKEFSR19QT0lOVEVSX0NGQV9PRkZTRVQpOiBOZXcgZGVmaW5pdGlvbiwKCXRyeSB0byBwcm90ZWN0IGFnYWluc3QgbWlkZGxlLWVuZCBjaGFuZ2VzIHRoYXQgYnJlYWsgYmluYXJ5Cgljb21wYXRpYmlsaXR5LgoJKERXQVJGX0ZSQU1FX1JFR0lTVEVSUyk6IE5ldyBkZWZpbml0aW9uLCBsaWtld2lzZSBmb3IgYmFja2VuZC4KCjIwMDAtMDMtMjQgIE1pY2hhZWwgSGF5ZXMgIDxtLmhheWVzQGVsZWMuY2FudGVyYnVyeS5hYy5uej4KCgkqIGNvbmZpZy9jNHgvYzR4Lm1kIChsb2FkX2ltbWVkX2FkZHJlc3MpOiAgQWRkIERQIHJlZyBjbG9iYmVyLgoKVGh1IE1hciAyMyAxNzoxMDo0OCAyMDAwICBSaWNoYXJkIEtlbm5lciAgPGtlbm5lckB2bHNpMS51bHRyYS5ueXUuZWR1PgoKCSogY2FsbHMuYyAoZXhwYW5kX2NhbGwpOiBJZiBUQVJHRVQgaXMgcGFzc2VkIGJ5IHJlZmVyZW5jZSBhbmQKCWlzIHJlYWRvbmx5LCB3cml0ZSBhIENMT0JCRVIuCgoyMDAwLTAzLTIzICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBidWlsdGlucy5jIChleHBhbmRfYnVpbHRpbik6IEhhbmRsZSBiY21wLgoKCSogYnVpbHRpbnMuZGVmOiBBZGQgQlVJTFRfSU5fQkNNUC4KCgkqIGMtY29tbW9uLmMgKGNfY29tbW9uX25vZGVzX2FuZF9idWlsdGlucyk6IFByb3ZpZGUgYnVpbHRpbgoJcHJvdG90eXBlICYgZnVuY3Rpb24gZm9yIGJjbXAuCgpUaHUgTWFyIDIzIDExOjM0OjM5IDIwMDAgIEppbSBXaWxzb24gIDx3aWxzb25AY3lnbnVzLmNvbT4KCgkqIGNvbmZpZy9pYTY0L2lhNjQuYyAocnR4X25lZWRzX2JhcnJpZXIsIGNhc2UgVU5TUEVDKTogTW92ZSBjYXNlIDYuLi4KCShydHhfbmVlZHNfYmFycmllciwgY2FzZSBVTlNQRUNfVk9MQVRJTEUpOiB0byBoZXJlLgoJKiBjb25maWcvaWE2NC9pYTY0Lm1kIChwcl9yZXN0b3JlKTogQ2hhbmdlIFVOU1BFQyB0byBVTlNQRUNfVk9MQVRJTEUuCgpUaHUgTWFyIDIzIDE2OjA0OjQwIDIwMDAgIEFuZHJldyBIYWxleSAgPGFwaEBjeWdudXMuY29tPgoKCSogY29uZmlnL21pcHMvbWlwcy5tZCAobW92ZGZfaW50ZXJuYWwxYSk6IERlbGV0ZSAoc2V0ICdmJywgJ0YnKQoJYWx0ZXJuYXRpdmUgd2hlbiB1c2luZyAtZnA2NCAtZ3AzMi4KCjIwMDAtMDMtMjIgIEphc29uIE1lcnJpbGwgIDxqYXNvbkBjYXNleS5jeWdudXMuY29tPgoKCSogY29uZmlnL3JzNjAwMC9yczYwMDAuaCAoRFdBUkZfRlJBTUVfUkVUVVJOX0NPTFVNTik6IERlZmluZS4KCSogY29uZmlnL2FscGhhL2FscGhhLmggKERXQVJGX0ZSQU1FX1JFVFVSTl9DT0xVTU4pOiBEZWZpbmUuCgkqIGNvbmZpZy9zcGFyYy9zcGFyYy5oIChEV0FSRl9GUkFNRV9SRVRVUk5fQ09MVU1OKTogRGVmaW5lLgoKCSogZnJhbWUuaCAoZnJhbWVfc3RhdGUpOiBSZXZlcnQgbGFzdCBjaGFuZ2UuCgkqIGZyYW1lLmMgKGV4ZWN1dGVfY2ZhX2luc24pOiBKdXN0IGRvbid0IHJlY29yZCB0aGUgc2F2ZSBvZiBhIENGQSByZWcuCgkqIGxpYmdjYzIuYyAodGhyb3dfaGVscGVyKTogUmV2ZXJ0IGxhc3QgY2hhbmdlLgoKMjAwMC0wMy0yMiAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAY3lnbnVzLmNvbT4KCgkqIHN0bXQuYyAoZXhwYW5kX2FzbV9vcGVyYW5kcyk6IERvbid0IHByb21vdGUgdGhlIHRlbXBvcmFyeS4KCjIwMDAtMDMtMjIgIFRoZW9kb3JlIFBhcGFkb3BvdWxvIDxUaGVvZG9yZS5QYXBhZG9wb3Vsb0Bzb3BoaWEuaW5yaWEuZnI+CgoJKiBidWlsdGluLmMgKGdldF9wb2ludGVyX2FsaWdubWVudCk6IFVzZSBERUNMX1AgYW5kIFRZUEVfUCBtYWNyb3MuCgkqIGMtY29tbW9uLmMgKGRlY2xfYXR0cmlidXRlcyxjaGVja19mb3JtYXRfaW5mbyx0cnV0aHZhbHVlX2NvbnZlcnNpb24sCgkgIGNfZ2V0X2FsaWFzX3NldCk6IExpa2V3aXNlLgoJKiBjLWRlY2wuYyAoZHVwbGljYXRlX2RlY2xzKTogTGlrZXdpc2UuCgkqIGMtdHlwZWNrLmMgKGRlZmF1bHRfY29udmVyc2lvbixidWlsZF91bmFyeV9vcCk6IExpa2V3aXNlLgoJKiBjYWxscy5jIChpbml0aWFsaXplX2FyZ3VtZW50X2luZm9ybWF0aW9uKTogTGlrZXdpc2UuCgkqIGR3YXJmMm91dC5jIChkZWNsX2NsYXNzX2NvbnRleHQsYWRkX2Fic3RyYWN0X29yaWdpbl9hdHRyaWJ1dGUpOgoJTGlrZXdpc2UuCgkqIGR3YXJmb3V0LmMgKGRlY2xfY2xhc3NfY29udGV4dCxvdXRwdXRfdHlwZSk6IExpa2V3aXNlLgoJKiBleHByLmMgKGdldF9pbm5lcl9yZWZlcmVuY2UpOiBMaWtld2lzZS4KCSogZm9sZC1jb25zdC5jIChzaW1wbGVfb3BlcmFuZF9wLGZvbGQpOiBMaWtld2lzZS4KCSogZnVuY3Rpb24uYyAoYWdncmVnYXRlX3ZhbHVlX3ApOiBMaWtld2lzZS4KCSogc3RtdC5jIChleHBhbmRfYXNtX29wZXJhbmRzKTogTGlrZXdpc2UuCgkqIHZhcmFzbS5jIChuYW1lZF9zZWN0aW9uKTogTGlrZXdpc2UuCgoyMDAwLTAzLTIyICBKYXNvbiBNZXJyaWxsICA8amFzb25AY2FzZXkuY3lnbnVzLmNvbT4KCglJbXBsZW1lbnQgZHdhcmYyIGV4Y2VwdGlvbiBoYW5kbGluZyBmb3IgdGhlIEFSTS4KCSogY29uZmlnL2FybS9hcm0uaCAoSU5DT01JTkdfUkVUVVJOX0FERFJfUlRYKTogRGVmaW5lLgoJKERXQVJGX0ZSQU1FX1JFVFVSTl9DT0xVTU4pOiBEZWZpbmUuCgkqIGNvbmZpZy9hcm0vYXJtLmMgKGVtaXRfbXVsdGlfcmVnX3B1c2gpOiBSZXR1cm4gcnR4LiAgQXR0YWNoCglSRUdfRlJBTUVfUkVMQVRFRF9FWFBSIG5vdGUuCgkoZW1pdF9zZm0pOiBMaWtld2lzZS4KCShhcm1fZXhwYW5kX3Byb2xvZ3VlKTogU2V0IFJUWF9GUkFNRV9SRUxBVEVEX1Agb24gZXZlcnl0aGluZy4KCSogZHdhcmYyb3V0LmMgKHJlZ19zYXZlKTogSGFuZGxlIHNhdmluZyBhIHJlZ2lzdGVyIHRvIGl0c2VsZi4KCShkd2FyZjJvdXRfZnJhbWVfZGVidWdfZXhwcik6IEhhbmRsZSBhbiBpbnRlcm1lZGlhdGUgY2ZhIHJlZy4KCSogZXhjZXB0LmMgKGVoX3JlZ3MpOiBEb24ndCB1c2UgdGhlIHN0YXRpYyBjaGFpbiByZWcgaWYgaXQncwoJY2FsbGVlLXNhdmVkLgoJKiBmcmFtZS5oIChmcmFtZV9zdGF0ZSk6IEFkZCBjZmFfc2F2ZWQgZmllbGQuCgkqIGZyYW1lLmMgKGV4ZWN1dGVfY2ZhX2luc24pOiBTZXQgaXQuCgkqIGxpYmdjYzIuYyAodGhyb3dfaGVscGVyKTogRG9uJ3QgYWRqdXN0IHNwIGlmIGl0J3MgcmVzdG9yZWQgaW4KCXRoZSBlcGlsb2d1ZS4KCSogZnVuY3Rpb24uYyAoQVJHX1BPSU5URVJfQ0ZBX09GRlNFVCk6IERlZmF1bHQgdG8gRklSU1RfUEFSTV9PRkZTRVQuCglOb3cgdGFrZXMgYSBwYXJtLgoJKGluc3RhbnRpYXRlX3ZpcnR1YWxfcmVncyk6IEFkanVzdC4KCSogdG0udGV4aTogQWRqdXN0LgoJKiBjb25maWcvbTY4ay9tNjhrLmggKEFSR19QT0lOVEVSX0NGQV9PRkZTRVQpOiBEb24ndCBkZWZpbmUuCgkqIGNvbmZpZy9uczMyay9uczMyay5oIChBUkdfUE9JTlRFUl9DRkFfT0ZGU0VUKTogRG9uJ3QgZGVmaW5lLgoJKiBjb25maWcvc3BhcmMvc3BhcmMuaCAoQVJHX1BPSU5URVJfQ0ZBX09GRlNFVCk6IFRha2UgYSBwYXJtLgoKCSogZHdhcmYyb3V0LmMgKHJlZ19udW1iZXIpOiBSZWZlciB0byBGSVJTVF9QU0VVRE9fUkVHSVNURVIuCgkoaW5pdGlhbF9yZXR1cm5fc2F2ZSk6IFVzZSBEV0FSRl9GUkFNRV9SRUdOVU0sIG5vdCByZWdfbnVtYmVyLgoKMjAwMC0wMy0yMiAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogYnVpbHRpbnMuZGVmOiBOZXcgZmlsZS4KCgkqIE1ha2VmaWxlLmluIChUUkVFX0gpOiBEZXBlbmQgb24gYnVpbHRpbnMuZGVmLgoKCSogYnVpbHRpbnMuYyAoYnVpbHRfaW5fbmFtZXMpOiBVc2UgYnVpbHRpbnMuZGVmLgoKCSogdHJlZS5oIChidWlsdF9pbl9mdW5jdGlvbik6IExpa2V3aXNlLgoKMjAwMC0wMy0yMiAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIHRyZWUuYyAoc2l6ZV9pbl9ieXRlcyk6IFJldHVybiBzaXplX3plcm9fbm9kZSwgbm90CglpbnRlZ2VyX3plcm9fbm9kZS4KCjIwMDAtMDMtMjIgIEdlb2ZmIEtlYXRpbmcgIDxnZW9mZmtAY3lnbnVzLmNvbT4KCgkqIGNvbmZpZy9mcC1iaXQuYyAocGFja19kKTogQ29ycmVjdCB0aGUgY2FzZSB3aGVuIGEgZGVub3JtYWwKCWlzIHJvdW5kZWQgdXAgYW5kIHN0b3BzIGJlaW5nIGRlbm9ybWFsLgoKMjAwMC0wMy0yMSAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAY3lnbnVzLmNvbT4KCgkqIGNvbmZpZy9hbHBoYS9hbHBoYS5jIChmdW5jdGlvbl9hcmcpOiBDaGVjayBmb3Igdm9pZF90eXBlX25vZGUKCWJlZm9yZSB1c2luZyBNVVNUX1BBU1NfSU5fU1RBQ0suCgoyMDAwLTAzLTIxICBTdGVwaGFuZSBDYXJyZXogIDxzdGNhcnJlekB3b3JsZG5ldC5mcj4KCgkqIHJlZ21vdmUuYyAoY29tYmluZV9zdGFja19hZGp1c3RtZW50c19mb3JfYmxvY2spOiBDaGVjayB0aGF0Cgl0aGUgc3RhY2sgcG9pbnRlciBpcyBhIHZhbGlkIG1lbW9yeSBhZGRyZXNzLgoKV2VkIE1hciAyMiAxMTo0NDo1MCBNRVQgMjAwMCAgSmFuIEh1Ymlja2EgIDxqaEBzdXNlLmN6PgoKCSogY2FsbHMuYzogcmUtaW5zdGFsbCBNYXIgMTYgZW1pdF9saWJyYXJ5X2NhbGwgbWVyZ2UuCgoyMDAwLTAzLTIxICBKYWt1YiBKZWxpbmVrICA8amFrdWJAcmVkaGF0LmNvbT4KCgkqIGNvbmZpZy9zcGFyYy9zcGFyYy5jIChtZW1fbWluX2FsaWdubWVudCk6IElmIG5vdCBvcHRpbWl6aW5nLAoJd2UgY2Fubm90IGJlIHN1cmUgdGhhdCBpZiByZWxvYWRfY29tcGxldGVkIGJhc2UgcmVnaXN0ZXIgd2lsbAoJYmUgcHJvcGVybHkgYWxpZ25lZC4KCjIwMDAtMDMtMjEgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgoJKiBmbG93LmMgKGRlbGV0ZV9ibG9jayk6IEZpeCB0eXBvIGxhc3QgY2hhbmdlLgoKMjAwMC0wMy0yMSAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGMtY29tbW9uLmMgKGNfZXhwYW5kX2V4cHJfc3RtdCk6IFVzZSBDT01QTEVURV9UWVBFX09SX1ZPSURfUCwKCW5vdCBDT01QTEVURV9UWVBFX1AsIHRvIGNoZWNrIHRoZSB0eXBlIG9mIHRoZSBleHByZXNzaW9uLgoKMjAwMC0wMy0yMSAgTWljaGFlbCBNZWlzc25lciAgPG1laXNzbmVyQHJlZGhhdC5jb20+CgoJKiBjb25maWcvYWxwaGEvYWxwaGEubWQgKGZsb2F0aW5nIHBvaW50IGluc25zKTogQWRkIFRBUkdFVF9GUCB0bwoJYWxsIGZsb2F0aW5nIHBvaW50IGluc25zIHRoYXQganVzdCB0ZXN0ZWQgdGhlIG1hY3JvCglUQVJHRVRfSEFTX1hGTE9BVElOR19MSUJTLgoJKG1vdnNmL21vdmRmIHJlY29nbml6ZXJzKTogQWRkIHNlcGFyYXRlIGluc25zIGlmIC1tbm8tZnAtcmVncyBpcwoJdXNlZCB0byBvbmx5IHVzZSB0aGUgZ3Bycy4KCjIwMDAtMDMtMjEgIE5hdGhhbiBTaWR3ZWxsICA8bmF0aGFuQGNvZGVzb3VyY2VyeS5jb20+CgoJKiB0cmVlLmggKENPTVBMRVRFX1RZUEVfUCk6IE5ldyBtYWNyby4KCShDT01QTEVURV9PUl9WT0lEX1RZUEVfUCk6IE5ldyBtYWNyby4KCShDT01QTEVURV9PUl9VTkJPVU5EX0FSUkFZX1RZUEVfUCk6IE5ldyBtYWNyby4KCSogc3Rvci1sYXlvdXQuYyAobGF5b3V0X3R5cGUsIGNhc2UgVk9JRF9UWVBFKTogRG9uJ3Qgc2V0IFRZUEVfU0laRS4KCSogYy1hdXgtaW5mby5jIChnZW5fdHlwZSk6IFVzZSB0aGVtLgoJKiBjLWNvbW1vbi5jIChjX2V4cGFuZF9leHByX3N0bXQpOiBMaWtld2lzZS4KCSogYy1kZWNsLmMgKHBvcGxldmVsLCBwdXNoZGVjbCwgc3RhcnRfZGVjbCwgZmluaXNoX2RlY2wsCglncm9rZGVjbGFyYXRvciwgZ3Jva3Bhcm1zLCBmaW5pc2hfc3RydWN0LCBzdGFydF9mdW5jdGlvbiwKCXN0b3JlX3Bhcm1fZGVjbHMsIGNvbWJpbmVfcGFybV9kZWNscyk6IExpa2V3aXNlLgoJKiBjLXBhcnNlLnkgKGNhc3RfZXhwcik6IExpa2V3aXNlLgoJKiBjLXR5cGVjay5jIChyZXF1aXJlX2NvbXBsZXRlX3R5cGUsIGNfc2l6ZW9mLCBjX3NpemVvZl9ub3dhcm4sCgljX3NpemVfaW5fYnl0ZXMsIGNfYWxpZ25vZiwgYnVpbGRfY29tcG9uZW50X3JlZiwKCWJ1aWxkX2luZGlyZWN0X3JlZiwgYnVpbGRfYXJyYXlfcmVmLCBjb252ZXJ0X2FyZ3VtZW50cywKCWJ1aWxkX2JpbmFyeV9vcCwgcG9pbnRlcl9kaWZmLCBidWlsZF91bmFyeV9vcCwgZGlnZXN0X2luaXQ6IExpa2V3aXNlLgoJKiBjYWxscy5jIChpbml0aWFsaXplX2FyZ3VtZW50X2luZm9ybWF0aW9uKTogTGlrZXdpc2UuCgkqIGNvbnZlcnQuYyAoY29udmVydF90b19pbnRlZ2VyKTogTGlrZXdpc2UuCgkqIGRieG91dC5jIChkYnhvdXRfdHlwZWRlZnMsIGRieG91dF90eXBlLCBkYnhvdXRfc3ltYm9sKTogTGlrZXdpc2UuCgkqIGR3YXJmb3V0LmMgKGxvY2F0aW9uX29yX2NvbnN0X3ZhbHVlX2F0dHJpYnV0ZSwKCW91dHB1dF9lbnVtZXJhdGlvbl90eXBlX2RpZSwgb3V0cHV0X3N0cnVjdHVyZV90eXBlX2RpZSwKCW91dHB1dF91bmlvbl90eXBlX2RpZSwgb3V0cHV0X3R5cGUpOiBMaWtld2lzZS4KCSogZXhwci5jIChzYWZlX2Zyb21fcCwgZXhwYW5kX2V4cHIpOiBMaWtld2lzZS4KCSogZnVuY3Rpb24uYyAoYXNzaWduX3Bhcm1zKTogTGlrZXdpc2UuCgkqIHNkYm91dC5jIChzZGJvdXRfc3ltYm9sLCBzZGJvdXRfb25lX3R5cGUpOiBMaWtld2lzZS4KCSogdHJlZS5jIChidWlsZF9hcnJheV90eXBlLCBidWlsZF9mdW5jdGlvbl90eXBlLAoJYnVpbGRfbWV0aG9kX3R5cGUsIGJ1aWxkX29mZnNldF90eXBlLCBidWlsZF9jb21wbGV4X3R5cGUpOiBMaWtld2lzZS4KCSogYy1wYXJzZS5jLCBjLXBhcnNlLmg6IFJlZ2VuZXJhdGVkLgoKMjAwMC0wMy0yMSAgTWljaGFlbCBIYXllcyAgPG0uaGF5ZXNAZWxlYy5jYW50ZXJidXJ5LmFjLm56PgoKCSogY29uZmlnL2M0eC9ydGVtcy5oOiBJbmNsdWRlIGNvbmZpZy9ydGVtcy5oLgoKVHVlIE1hciAyMSAwOToyNDowMCAyMDAwICBEZW5pcyBDaGVydHlrb3YgIDxkZW5pc2NAb3ZlcnRhLnJ1PgoKCSogY29uZmlnL2F2ci9hdnIuYyAoZW5jb2RlX3NlY3Rpb25faW5mbyk6IHNldHMgU1lNQk9MX1JFRl9GTEFHIGlmCglkZWNsIGlzIGEgRlVOQ1RJT05fREVDTAoKTW9uIE1hciAyMCAxOTo1Mzo1MyAyMDAwICBKaW0gV2lsc29uICA8d2lsc29uQGN5Z251cy5jb20+CgoJKiBjb25maWcvaWE2NC9pYTY0LmMgKGlhNjRfZXhwYW5kX3Byb2xvZ3VlKTogRG9uJ3QgYWJvcnQgaWYgbGVhZgoJZnVuY3Rpb24gdXNlcyBvdXRwdXQgcmVnaXN0ZXJzLiAgRG9uJ3Qgc2F2ZSBSUCBmb3IgbGVhZiBmdW5jdGlvbnMuCglEbyBzYXZlIFJQIGV2ZW4gaWYgbm8gZXBpbG9ndWUuCgkqIGNvbmZpZy9pYTY0L2lhNjQuaCAoRklYRURfUkVHSVNURVJTKTogVW5tYXJrIGluL291dCByZWdpc3RlcnMuCgkoQ0FMTF9VU0VEX1JFR0lTVEVSUyk6IFVubWFyayBpbiByZWdpc3RlcnMuCgkoUkVHX0FMTE9DX09SREVSKTogTW92ZSBvdXQgcmVncyB1cCwgdG8gbmVhciB0aGUgdG9wLiAgTW92ZSBpbiByZWdzIHVwLAoJdG8gbmVhciB0aGUgbWlkZGxlLgoKMjAwMC0wMy0yMCAgR2VvZmYgS2VhdGluZyAgPGdlb2Zma0BjeWdudXMuY29tPgoKCSogY29uZmlnL3JzNjAwMC9yczYwMDAubWQgKGJ1bm9yZGVyZWQpOiBOZXcgZXhwYW5kZXIuCgkoYm9yZGVyZWQpOiBOZXcgZXhwYW5kZXIuCgkoYnVuZXEpOiBOZXcgZXhwYW5kZXIuCgkoYnVuZ2UpOiBOZXcgZXhwYW5kZXIuCgkoYnVuZ3QpOiBOZXcgZXhwYW5kZXIuCgkoYnVubGUpOiBOZXcgZXhwYW5kZXIuCgkoYnVubHQpOiBOZXcgZXhwYW5kZXIuCgkoYmx0Z3QpOiBOZXcgZXhwYW5kZXIuCgoJKiBjb25maWcvcnM2MDAwL3JzNjAwMC5jIChjY3JfYml0KTogSGFuZGxlIHVub3JkZXJlZCBjb21wYXJpc29ucy4KCShjY3JfYml0X25lZ2F0ZWRfcCk6IE5ldyBmdW5jdGlvbi4KCShwcmludF9vcGVyYW5kKTogRm9yICVDLCBnZW5lcmF0ZSBhcHByb3ByaWF0ZSBjcm9yIGZvciBVTkVRLAoJVU5MVCwgVU5HVCwgYW5kIExUR1QuICBGb3IgJVQgYW5kICV0LCB1c2UgY2NyX2JpdF9uZWdhdGVkX3AuCgoyMDAwLTAzLTIwICBBbmRyZWFzIEphZWdlciAgPGFqQHN1c2UuZGU+CgoJKiBzZGJvdXQuYyAoc2Rib3V0X29uZV90eXBlKTogQWRkIGJyYWNlcyB0byBhdm9pZCAiYW1iaWdvdXMgZWxzZSIKCXdhcm5pbmcuCgoJKiB0cmVlLmggKHNhZmVfZm9yX3Vuc2F2ZSk6IFByb3RvdHlwZS4KCjIwMDAtMDMtMjAgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgoJKiByZWdtb3ZlLmMgKHN0YWNrX21lbXJlZl9wKTogRml4IHR5cG8sIHJlb3JnIGZvciByZWFkYWJpbGl0eS4KCShjb21iaW5lX3N0YWNrX2FkanVzdG1lbnRzX2Zvcl9ibG9jayk6IERvbid0IGFsbG93IHNwIHJlZmVyZW5jZXMKCWluIHRoZSBzaWRlIG9mIGEgc2V0IHdlJ3JlIG5vdCBmaXhpbmcgdXAuCgkqIHRvcGxldi5jIChyZXN0X29mX2NvbXBpbGF0aW9uKTogUnVuIGNvbWJpbmVfc3RhY2tfYWRqdXN0bWVudHMKCWFmdGVyIGxpZmVfYW5hbHlzaXMuCgoyMDAwLTAzLTIwICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEBjeWdudXMuY29tPgoKCSogY2FsbHMuYyAoZXhwYW5kX2NhbGwpOiBEb24ndCBib3RoZXIgZ2VuZXJhdGluZyB0YWlsIGNhbGwKCXNlcXVlbmNlcyBpZiB0aGVyZSBhcmUgcGVuZGluZyBjbGVhbnVwcy4gIFVzZQoJZXhwYW5kX3N0YXJ0X3RhcmdldF90ZW1wcy9leHBhbmRfZW5kX3RhcmdldF90ZW1wcyB0byBlbGlkZQoJY2xlYW51cHMgY3JlYXRlZCBkdXJpbmcgc2liY2FsbCBleHBhbnNpb24uCgoyMDAwLTAzLTIwICBHZW9mZiBLZWF0aW5nICA8Z2VvZmZrQGN5Z251cy5jb20+CgoJKiBjb25maWd1cmUuaW46IFNldCAkSUZTIHRvIGEgdmFsdWUgaWYgaXQgZG9lc24ndCBhbHJlYWR5IGhhdmUgb25lCglpbiB0aGUgLS1lbmFibGUtY2hlY2tpbmcgaGFuZGxpbmcuCgkqIGNvbmZpZ3VyZTogUmVnZW5lcmF0ZS4KCjIwMDAtMDMtMjAgIE1hcnRpbiB2LiBM9ndpcyAgPGxvZXdpc0BpbmZvcm1hdGlrLmh1LWJlcmxpbi5kZT4KCgkqIGMtcGFyc2UuaW4gKFNBVkVfV0FSTl9GTEFHUyk6IFVzZSBzaXplX2ludC4KCSogYy1wYXJzZS55LCBjLXBhcnNlLmMsIG9iamMvb2JqYy1wYXJzZS55LCBvYmpjL29iamMtcGFyc2UuYzoKCVJlZ2VuZXJhdGVkLgoKTW9uIE1hciAyMCAxMTo0MzoxNSBNRVQgMjAwMCAgSmFuIEh1Ymlja2EgIDxqaEBzdXNlLmN6PgoKCSoganVtcC5jIChkZWxldGVfbm9vcF9tb3Zlcyk6IFJlbW92ZSBjb2RlIGF0dGVtcHRpbmcgdG8KCWNvbWJpbmUgc3RhY2sgYWRqdXN0bWVudHMuCgoyMDAwLTAzLTE5ICBNYXJ0aW4gdi4gTPZ3aXMgIDxsb2V3aXNAaW5mb3JtYXRpay5odS1iZXJsaW4uZGU+CgoJKiBlbWl0LXJ0bC5jIChwdXNoX3RvX2Z1bGxfc2VxdWVuY2UsIGVuZF9mdWxsX3NlcXVlbmNlKTogTmV3IGZ1bmN0aW9ucy4KCSogZXhjZXB0LmMgKGVtaXRfY2xlYW51cF9oYW5kbGVyKTogVXNlIHRoZW0uCgkoZXhwYW5kX2VuZF9hbGxfY2F0Y2gpOiBMaWtld2lzZS4KCSogZnVuY3Rpb24uYyAoZml4dXBfdmFyX3JlZnMpOiBMaWtld2lzZS4KCShleHBhbmRfZnVuY3Rpb25fZW5kKTogQ2xlYXIgY2F0Y2hfY2xhdXNlc19sYXN0LgoJKiBydGwuaCAocHVzaF90b19mdWxsX3NlcXVlbmNlLCBlbmRfZnVsbF9zZXF1ZW5jZSk6IERlY2xhcmUuCgkqIGV4Y2VwdC5oIChzdHJ1Y3QgZWhfc3RhdHVzKTogTmV3IGZpZWxkIHhfY2F0Y2hfY2xhdXNlc19sYXN0LgoJKGNhdGNoX2NsYXVzZXNfbGFzdCk6IE5ldyBkZWZpbmUuCgoJKiBNYWtlZmlsZS5pbiAodHJlZS5vKTogRGVwZW5kIG9uIEhBU0hUQUJfSC4KCSogdHJlZS5jOiBJbmNsdWRlIGhhc2h0YWIuaC4KCShzdHJ1Y3QgdHlwZV9oYXNoKTogUmVtb3ZlIG5leHQgZmllbGQuCgkoVFlQRV9IQVNIX1NJWkUpOiBSZW1vdmUuCgkoVFlQRV9IQVNIX0lOSVRJQUxfU0laRSk6IE5ldyBkZWZpbmUuCgkodHlwZV9oYXNoX3RhYmxlKTogQ2hhbmdlIHR5cGUgdG8gaHRhYl90LgoJKHR5cGVfaGFzaF9lcSwgdHlwZV9oYXNoX2hhc2gsIHByaW50X3R5cGVfaGFzaF9zdGF0aXN0aWNzLAoJbWFya19oYXNoX2VudHJ5KTogTmV3IGZ1bmN0aW9ucy4KCShpbml0X29ic3RhY2tzKTogQWxsb2NhdGUgdHlwZSBoYXNoLgoJKHR5cGVfaGFzaF9sb29rdXApOiBVc2UgaHRhYiBmdW5jdGlvbnMuCgkodHlwZV9oYXNoX2FkZCwgbWFya190eXBlX2hhc2gpOiBMaWtld2lzZS4KCShkdW1wX3RyZWVfc3RhdGlzdGljcyk6IENhbGwgcHJpbnRfdHlwZV9oYXNoX3N0YXRpc3RpY3MuCgoyMDAwLTAzLTE5ICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiByczYwMDAvdC1haXg0MTogTmV3IGZpbGUuCgoJKiBjb25maWd1cmUuaW4gKHtyczYwMDAscG93ZXJwY30taWJtLWFpeDQuWzEyXSopOiBVc2UgaXQuCgpTdW4gTWFyIDE5IDEzOjI3OjMwIDIwMDAgIEhhbnMtUGV0ZXIgTmlsc3NvbiAgPGhwQGF4aXMuY29tPgoKCSogdG0udGV4aSAoRHJpdmVyKTogRml4IHR5cG9zIGFuZCB0d2VhayBlbnRyeSBmb3IKCUlOQ0xVREVfREVGQVVMVFMuCglNb3ZlIG1pc3BsYWNlZCBTVFJVQ1RfRk9SQ0VfQkxLIGVudHJ5IC4uLgoJKFN0b3JhZ2UgTGF5b3V0KTogLi4uIHRvIGhlcmUuCgkoUnVuLXRpbWUgVGFyZ2V0KTogUmVjb21tZW5kIGhhdmluZyBUQVJHRVRfTUFTS18uLi4gaGVscGVyIG1hY3Jvcy4KCjIwMDAtMDMtMTkgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgoJKiBmbG93LmMgKGRlbGV0ZV9ibG9jayk6IERlbGV0ZSB0aGUgYWRkcl92ZWMgYWxvbmcgd2l0aCB0aGUgYmxvY2suCgkoZmxvd19kZWxldGVfaW5zbik6IERlY3JlbWVudCBMQUJFTF9OVVNFUyB3aGVuIGRlbGV0aW5nIGluc25zIHRoYXQKCXJlZmVyZW5jZSBsYWJlbHMuCgoJKiBmb2xkLWNvbnN0LmMgKGV4dHJhY3RfbXVsZGl2KTogQXBwbHkgdHlwZSBjaGVjayBmb3IgZGVmaW5lZAoJb3ZlcmZsb3cgdG8gbXVsdGlwbHkgYXMgd2VsbCBhcyBkaXZpZGUuCgoJKiBzdG9yLWxheW91dC5jIChsYXlvdXRfZGVjbCk6IERvbid0IGFib3J0IG9uIGFueSB6ZXJvIHNpemVkIGRlY2wuCgoyMDAwLTAzLTE4ICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogZW1pdC1ydGwuYyAocmVtb3ZlX3VubmVjZXNzYXJ5X25vdGVzKTogQ2hlY2sgdGhhdCBhbGwKCU5PVEVfSU5TTl9CTE9DS19CRUcgYW5kIE5PVEVfSU5TTl9CTE9DS19FTkQgbm90ZXMgaGF2ZSBhbgoJYXNzb2NpYXRlZCBOT1RFX0JMT0NLLgoJKiBmdW5jdGlvbi5oIChpZGVudGlmeV9ibG9ja3MpOiBVcGRhdGUgY29tbWVudHMuCgkocmVvcmRlcl9ibG9ja3MpOiBEZWNsYXJlLgoJKiBmdW5jdGlvbi5jIChpZGVudGlmeV9ibG9ja3MpOiBEb24ndCB0YWtlIHBhcmFtdGVycy4KCShyZW9yZGVyX2Jsb2Nrcyk6IERvbid0IHRha2UgcGFyYW1ldGVycy4KCSogbG9vcC5oIChmaW5kX2xvb3BfdHJlZV9ibG9ja3MpOiBSZW1vdmUuCgkodW5yb2xsX2Jsb2NrX3RyZWVzKTogTGlrZXdpc2UuCgkqIGxvb3AuYyAobG9vcF9vcHRpbWl6ZSk6IERvbid0IGNhbGwgZmluZF9sb29wX3RyZWVfYmxvY2tzLiAgVXNlCglyZW9yZGVyX2Jsb2NrcyBpbnN0ZWFkIG9mIHVucm9sbF9ibG9ja190cmVlcy5oCgkqIHNpYmNhbGwuYyAob3B0aW1pemVfc2libGluZ19hbmRfdGFpbF9yZWN1cnNpdmVfY2FsbHMpOiBMaWtld2lzZS4KCSogc3RtdC5jIChmaW5kX2xvb3BfdHJlZV9ibG9ja3MpOiBSZW1vdmUuCgkodW5yb2xsX2Jsb2NrX3RyZWVzKTogTGlrZXdpc2UuCgkqIHRvcGxldi5jIChyZXN0X29mX2NvbXBpbGF0aW9uKTogRG9uJ3QgY2FsbCBmaW5kX2xvb3BfdHJlZV9ibG9ja3MKCWluIHdob2xlLWZ1bmN0aW9uIG1vZGUuCgkqIHRyZWUuaCAocmVvcmRlcl9ibG9ja3MpOiBSZW1vdmUgZGVjbGFyYXRpb24uCgoJKiBleHByLmM6IEluY2x1ZGUgaW50bC5oLgoJKiBNYWtlZmlsZS5pbiAoZXhwci5vKTogRGVwZW5kIG9uIGludGwuaC4KCjIwMDAtMDMtMTggIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgoJKiBleHByLmMgKGVtaXRfbW92ZV9pbnNuXzEpOiBDbGFyaWZ5IGNhbm5vdF9pbmxpbmUgbWVzc2FnZS4KCjIwMDAtMDMtMTggIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiB0cmVlLmggKHRyZWVfaW5kZXgpOiBSZW1vdmUgZW51bWVyYWxzIGZvciBpbnRlZ2VyIHR5cGVzLgoJKGludGVnZXJfdHlwZV9raW5kKTogTmV3IHR5cGUuCgkoaW50ZWdlcl90eXBlcyk6IE5ldyB2YXJpYWJsZS4KCShjaGFyX3R5cGVfbm9kZSk6IEFkanVzdC4KCShzaWduZWRfY2hhcl90eXBlX25vZGUpOiBMaWtld2lzZS4KCSh1bnNpZ25lZF9jaGFyX3R5cGVfbm9kZSk6IExpa2V3aXNlLgoJKHNob3J0X2ludGVnZXJfdHlwZV9ub2RlKTogTGlrZXdpc2UuCgkoc2hvcnRfdW5zaWduZWRfdHlwZV9ub2RlKTogTGlrZXdpc2UuCgkoaW50ZWdlcl90eXBlX25vZGUpOiBMaWtld2lzZS4KCSh1bnNpZ25lZF90eXBlX25vZGUpOiBMaWtld2lzZS4KCShsb25nX2ludGVnZXJfdHlwZV9ub2RlKTogTGlrZXdpc2UuCgkobG9uZ191bnNpZ25lZF90eXBlX25vZGUpOiBMaWtld2lzZS4KCShsb25nX2xvbmdfaW50ZWdlcl90eXBlX25vZGUpOiBMaWtld2lzZS4KCShsb25nX2xvbmdfdW5zaWduZWRfdHlwZV9ub2RlKTogTGlrZXdpc2UuCgkqIHRyZWUuYyAoaW50ZWdlcl90eXBlcyk6IE5ldyB2YXJpYWJsZS4KCShpbml0X29ic3RhY2tzKTogUmVnaXN0ZXIgaXQgYXMgYSByb290LgoKU2F0IE1hciAxOCAxNDozODowMCAyMDAwICBKYXNvbiBFY2toYXJkdCAgPGpsZUBjeWdudXMuY29tPgoKCSogYmItcmVvcmRlci5jIChyZW9yZGVyX2Jhc2ljX2Jsb2Nrcyk6IFVwZGF0ZSBQUkVWX0lOU04gYXMgd2VsbCBhcwoJTkVYVF9JTlNOLiBVcGRhdGUgbGFzdCBpbnNuIGluIGNoYWluLgoKMjAwMC0wMy0xNyAgSmFzb24gTWVycmlsbCAgPGphc29uQGNhc2V5LmN5Z251cy5jb20+CgoJKiBkd2FyZjJvdXQuYyAoZHdhcmYyb3V0X2RlY2wpOiBEb24ndCBlbWl0IGFueXRoaW5nIGZvciB0eXBlcwoJd2l0aCBUWVBFX0RFQ0xfU1VQUFJFU1NfREVCVUcgc2V0LgoKMjAwMC0wMy0xOCAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAY3lnbnVzLmNvbT4KCgkqIGZsb3cuYyAobWFrZV9lZGdlcyk6IFVzZSBJTlRWQUwgdG8gYWNjZXNzIFJFR19FSF9SRUdJT04gdmFsdWUuCgoyMDAwLTAzLTE4ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEBjeWdudXMuY29tPgoKCSogaTM4Ni5jIChjYWxsX2luc25fb3BlcmFuZCk6IEFsd2F5cyBhbGxvdyBTWU1CT0xfUkVGLAoJY2FyZSBmb3IgSEFMRl9QSUNfUC4KCShleHBhbmRlcl9jYWxsX2luc25fb3BlcmFuZCk6IFJlbW92ZS4KCShpeDg2X2V4cGFuZF9lcGlsb2d1ZSk6IE5ldyBhcmcgYGVtaXRfcmV0dXJuJyB0byBjb250cm9sIHJldHVybiBpbnNuLgoJKiBpMzg2LmggKFBSRURJQ0FURV9DT0RFUyk6IFVwZGF0ZS4KCSogaTM4Ni5tZCAoYWxsIGNhbGwgZXhwYW5kZXJzKTogUmVtb3ZlIHByZWRpY2F0ZXMsIHJlbW92ZSBzcGVjaWFsCgloYW5kbGluZyBmb3IgaGFsZi1waWMuCgkoKmNhbGxfMSwgKmNhbGxfdmFsdWVfMSk6IEhhbmRsZSBTSUJMSU5HX0NBTExfUCBpbnNucy4KCSgqY2FsbF9wb3BfcGljMiwgKmNhbGxfcGljMiwgKmNhbGxfdmFsdWVfcG9wXzIsICpjYWxsX3ZhbHVlXzIpOiBSZW1vdmUuCgkoc2liY2FsbF9lcGlsb2d1ZSk6IE5ldy4KCjIwMDAtMDMtMTcgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgoJKiBydGxhbmFsLmMgKHNpbmdsZV9zZXQpOiBSZWplY3QgaWYgdGhlIHBhcmFsbGVsIGhhcyBhbnl0aGluZwoJZXhjZXB0IFNFVCBvciBVU0Ugb3IgQ0xPQkJFUi4KCjIwMDAtMDMtMTcgIEplZmYgTGF3ICA8bGF3QGN5Z251cy5jb20+CgkgICAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAY3lnbnVzLmNvbT4KCgkqIE1ha2VmaWxlLmluIChPQkpTKTogQWRkIHNpYmNhbGwuby4KCShzaWJjYWxsLm8pOiBOZXcuCgkqIHNpYmNhbGwuYzogTmV3IGZpbGUuCgkqIGNhbGxzLmMgKEZVTkNUSU9OX09LX0ZPUl9TSUJDQUxMKTogUHJvdmlkZSBkZWZhdWx0LgoJKEVDRl9JU19DT05TVCwgRUNGX05PVEhST1csIEVDRl9TSUJDQUxMKTogTmV3LgoJKGVtaXRfY2FsbF8xKTogUmVwbGFjZSBgaXNfY29uc3QnIGFuZCBgbm90aHJvdycgd2l0aCBgZWNmX2ZsYWdzJy4KCUVtaXQgc2liY2FsbCBwYXR0ZXJucyB3aGVuIHJlcXVlc3RlZC4gIFVwZGF0ZSBhbGwgY2FsbGVycy4KCShleHBhbmRfY2FsbCk6IEdlbmVyYXRlIENBTExfUExBQ0VIT0xERVIgaW5zbnMgd2hlbiB0YWlsIGNhbGwKCWVsaW1pbmF0aW9uIHNlZW1zIGZlYXNhYmxlLgoJKiBmaW5hbC5jIChsZWFmX2Z1bmN0aW9uX3ApOiBTaWJsaW5nIGNhbGxzIGRvbid0IGRpc2NvdW50IGJlaW5nCglhIGxlYWYgZnVuY3Rpb24uCgkqIGZsb3cuYyAoSEFWRV9zaWJjYWxsX2VwaWxvZ3VlKTogUHJvdmlkZSBkZWZhdWx0LgoJKGZpbmRfYmFzaWNfYmxvY2tzXzEpOiBTaWJsaW5nIGNhbGxzIGRvbid0IHRocm93LgoJKG1ha2VfZWRnZXMpOiBNYWtlIGVkZ2UgZnJvbSBzaWJsaW5nIGNhbGwgdG8gRVhJVC4KCShwcm9wYWdhdGVfYmxvY2spOiBEb24ndCByZW1vdmUgc2liY2FsbF9lcGlsb2d1ZSBpbnNucy4KCSogZnVuY3Rpb24uYyAocHJvbG9ndWUsIGVwaWxvZ3VlKTogVHVybiBpbnRvIHZhcnJheXMuICBVcGRhdGUgYWxsIHVzZXMuCgkoc2liY2FsbF9lcGlsb2d1ZSk6IE5ldy4KCShmaXh1cF92YXJfcmVmcyk6IFNjYW4gQ0FMTF9QTEFDRUhPTERFUiBzdWItc2VxdWVuY2VzLgoJKGlkZW50aWZ5X2Jsb2Nrc18xKTogTGlrZXdpc2UuICBCcmVhayBvdXQgZnJvbSAuLi4KCShpZGVudGlmeV9ibG9ja3MpOiAuLi4gaGVyZS4KCShyZW9yZGVyX2Jsb2Nrc18xKTogU2NhbiBDQUxMX1BMQUNFSE9MREVSLiAgQnJlYWsgb3V0IGZyb20gLi4uCgkocmVvcmRlcl9ibG9ja3MpOiAuLi4gaGVyZS4KCShpbml0X2Z1bmN0aW9uX2Zvcl9jb21waWxhdGlvbik6IFphcCBwcm9sb2d1ZS9lcGlsb2d1ZSBhcyB2YXJyYXlzLgoJKHJlY29yZF9pbnNucyk6IEV4dGVuZCBhIHZhcnJheSBpbnN0ZWFkIG9mIG1hbGxvY2luZyBuZXcgbWVtb3J5LgoJKGNvbnRhaW5zKTogUmVhZCBhIHZhcnJheSBub3QgYXJyYXkgb2YgaW50cy4KCShzaWJjYWxsX2VwaWxvZ3VlX2NvbnRhaW5zKTogTmV3LgoJKHRocmVhZF9wcm9sb2d1ZV9hbmRfZXBpbG9ndWVfaW5zbnMpOiBFbWl0IGFuZCByZWNvcmQKCXNpYmNhbGxfZXBpbG9ndWUgcGF0dGVybnMuCgkoaW5pdF9mdW5jdGlvbl9vbmNlKTogQWxsb2NhdGUgcHJvbG9ndWUvZXBpbG9ndWUgdmFycmF5cy4KCSogZ2VuZmxhZ3MuYyAoZ2VuX2luc24pOiBUcmVhdCBzaWJjYWxsIHBhdHRlcm5zIGFzIGNhbGxzLgoJKiBpbnRlZ3JhdGUuYyAoc2F2ZV9wYXJtX2luc25zKTogUmVjdXJzZSBvbiBDQUxMX1BMQUNFSE9MREVSIHBhdHRlcm5zLgoJQnJva2VuIG91dCBmcm9tIC4uLgoJKHNhdmVfZm9yX2lubGluZV9ub2NvcHkpOiAuLi4gaGVyZS4KCShjb3B5X2luc25fbGlzdCk6IFJlY3Vyc2Ugb24gQ0FMTF9QTEFDRUhPTERFUiBwYXR0ZXJucy4KCUJyb2tlbiBvdXQgZnJvbSAuLi4KCShleHBhbmRfaW5saW5lX2Z1bmN0aW9uKTogLi4uIGhlcmUuCgkoY29weV9ydHhfYW5kX3N1YnN0aXR1dGUpOiBIYW5kbGUgTk9URV9JTlNOX0RFTEVURURfTEFCRUwuCgkoc3Vic3RfY29uc3RhbnRzKTogSGFuZGxlICduJyBmb3JtYXRzLgoJKiBqdW1wLmMgKGp1bXBfb3B0aW1pemVfbWluaW1hbCk6IE5ldy4KCShqdW1wX29wdGltaXplXzEpOiBOZXcgYXJnIGBtaW5pbWFsJzsgdXBkYXRlIGNhbGxlcnMuICBFbGlkZSBtb3N0CglvcHRpbWl6YXRpb25zIGlmIGl0J3Mgc2V0LgoJKiBydGwuYyAoY29weV9ydHgpOiBEbyBjb3B5IGp1bXAgJiBjYWxsIGZvciBpbnNucy4KCSogcnRsLmggKHN0cnVjdCBydHhfZGVmKTogRG9jdW1lbnQgdXNlIG9mIGp1bXAgYW5kIGNhbGwgZm9yIGluc25zLgoJKFNJQkxJTkdfQ0FMTF9QKTogTmV3LgoJKHNpYmNhbGxfdXNlX3QpOiBOZXcuCgkqIHRvcGxldi5jIChyZXN0X29mX2NvbXBpbGF0aW9uKTogRG8gaW5pdF9FWFBSX0lOU05fTElTVF9jYWNoZSBlYXJsaWVyLgoJSW52b2tlIG9wdGltaXplX3NpYmxpbmdfYW5kX3RhaWxfcmVjdXJzaXZlX2NhbGxzLgoJKiB0cmVlLmMgKGxhbmdfc2FmZV9mb3JfdW5zYXZlKTogTmV3LgoJKHNhZmVfZm9yX3Vuc2F2ZSk6IE5ldy4KCSogdHJlZS5oIChsYW5nX3NhZmVfZm9yX3Vuc2F2ZSwgc2FmZV9mb3JfdW5zYXZlKTogRGVjbGFyZS4KCgkqIGFscGhhLmggKEZVTkNUSU9OX09LX0ZPUl9TSUJDQUxMKTogTmV3LgoJKiBhbHBoYS5tZCAoc2liY2FsbCwgc2liY2FsbF92YWx1ZSwgc2liY2FsbF9lcGlsb2d1ZSk6IE5ldy4KCSgqc2liY2FsbF9vc2ZfMSwgKnNpYmNhbGxfdmFsdWVfb3NmXzEpOiBOZXcuCgoyMDAwLTAzLTE3ICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogb2JqYy9vYmpjLWFjdC5jIChlbmNvZGVfbWV0aG9kX3Byb3RvdHlwZSk6IFBhc3MgdHlwZXMsIG5vdAoJUEFSTV9ERUNMcywgdG8gaW50X3NpemVfaW5fYnl0ZXMuCgpGcmkgTWFyIDE3IDExOjUxOjM0IDIwMDAgIEppbSBXaWxzb24gIDx3aWxzb25AY3lnbnVzLmNvbT4KCgkqIGNvbmZpZy9pYTY0L2lhNjQubWQgKG1peDRyaWdodF8zb3ApOiBTd2FwICUxIGFuZCAlMiBpbiB0ZW1wbGF0ZS4KCgkqIGNvbmZpZy9pYTY0L2lhNjQtcHJvdG9zLmgsIGNvbmZpZy9pYTY0L2lhNjQuYywgY29uZmlnL2lhNjQvaWE2NC5oLAoJY29uZmlnL2lhNjQvaWE2NC5tZCwgY29uZmlnL2lhNjQveG0taWE2NC5oOiBGaXggY29weXJpZ2h0cyBhZ2Fpbi4KCkZyaSBNYXIgMTcgMDg6MDk6MTQgMjAwMCAgUmljaGFyZCBLZW5uZXIgIDxrZW5uZXJAdmxzaTEudWx0cmEubnl1LmVkdT4KCgkqIENsZWFuIHVwIHVzYWdlcyBvZiBUUkVFX0lOVF9DU1RfTE9XLgoJKiBjLXBhcnNlLmluIChSRVNUT1JFX1dBUk5fRkxBR1MpOiBVc2UgdHJlZV9sb3dfY3N0LgoJKiBjLXBhcnNlLnksIGMtcGFyc2UuYywgb2JqYy9vYmpjLXBhcnNlLnksIG9iamMvb2JqYy1wYXJzZS5jOgoJUmVnZW5lcmF0ZWQuCgkqIGMtdHJlZS5oIChtaW5fcHJlY2lzaW9uKTogTW92ZSBkZWNsYXJhdGlvbiB0byBoZXJlLgoJKiBjLXR5cGVjay5jIChidWlsZF9iaW5hcnlfb3ApOiBVc2UgaG9zdF9pbnRlZ2VycCBhbmQgdHJlZV9sb3dfY3N0LgoJKGJ1aWxkX3VuYXJ5X29wLCBhZGRfcGVuZGluZ19pbml0KTogVXNlIGJpdF9wb3NpdGlvbi4KCShwZW5kaW5nX2luaXRfbWVtYmVyLCBwcm9jZXNzX2luaXRfZWxlbWVudCk6IExpa2V3aXNlLgoJKHJlYWxseV9zdGFydF9pbmNyZW1lbnRhbF9pbml0LCBwdXNoX2luaXRfbGV2ZWwsIHBvcF9pbml0X2xldmVsKToKCURvbid0IG1ha2UgY29waWVzIG9mIG5vZGVzIG9yIG1vZGlmeSB0aGVtIGluIHBsYWNlLCB1c2UgY29uc2lzdGVudAoJdHlwZXMgd2hlbiB0cmFja2luZyBwb3NpdGlvbnMsIGFuZCB1c2UgdHJlZSByb3V0aW5lcyBjb21wdXRhdGlvbnMuCgkoc2V0X2luaXRfaW5kZXgsIG91dHB1dF9pbml0X2VsZW1lbnQpOiBMaWtld2lzZS4KCShvdXRwdXRfcGVuZGluZ19pbml0X2VsZW1lbnRzLCBwcm9jZXNzX2luaXRfZWxlbWVudCk6IExpa2V3aXNlLgoJKiBkYnhvdXQuYyAoZGJ4b3V0X3R5cGVfZmllbGRzKTogVXNlIGJpdF9wb3NpdGlvbiwgaG9zdF9pbnRlZ2VycCwKCXRyZWVfbG93X2NzdCBhbmQgaW50X2JpdF9wb3NpdGlvbjsgYWxzbyBtaW5vciBjbGVhbnVwLgoJKGRieG91dF90eXBlX21ldGhvZF8xLCBkYnhvdXRfcmFuZ2VfdHlwZSwgZGJ4b3V0X3R5cGUpOiBMaWtld2lzZS4KCShwcmludF9jc3Rfb2N0YWwpOiBQcmVjaXNpb24gaXMgdW5zaWduZWQuCgkoZGJ4b3V0X3N5bWJvbCk6IEVuc3VyZSBERUNMX0lOSVRJQUwgaXMgaW4tcmFuZ2UgYW5kIHVzZSB0cmVlX2xvd19jc3QuCgkqIGR3YXJmMm91dC5jIChjZWlsaW5nKTogSW5wdXQgYW5kIG91dHB1dCBhcmUgdW5zaWduZWQgSE9TVF9XSURFX0lOVC4KCShzaW1wbGVfdHlwZV9hbGlnbl9pbl9iaXRzKTogUmVzdWx0IGlzIHVuc2lnbmVkIGludC4KCVVzZSB0cmVlX2ludF9sb3dfY3N0IGFuZCBob3N0X2ludGVnZXJwLgoJKHNpbXBsZV90eXBlX3NpemVfaW5fYml0cyk6IFJlc3VsdCBpcyB1bnNpZ25lZCBIT1NUX1dJREVfSU5ULgoJKGZpZWxkX2J5dGVfb2Zmc2V0KTogUmVzdWx0IGlzIEhPU1RfV0lERV9JTlQuCglDaGFuZ2UgdHlwZXMgb2YgaW50ZXJuYWwgdmFyaWFibGVzIHNvIGFsaWdubWVudHMgYXJlIHVuc2lnbmVkIGludCwKCW9mZnNldHMgYXJlIEhPU1RfV0lERV9JTlQgYW5kIHNpemVzIGFyZSB1bnNpZ25lZCBIT1NUX1dJREVfSU5ULgoJVXNlIGhvc3RfaW50ZWdlcnAsIHRyZWVfbG93X2NzdCwgYW5kIGludF9iaXRfcG9zaXRpb24uCgkoYWRkX2JpdF9vZmZzZXRfYXR0cmlidXRlKTogTGlrZXdpc2UuCgkoYWRkX2RhdGFfbWVtYmVyX2xvY2F0aW9uX2F0dHJpYnV0ZSk6IFVzZSB0cmVlX2NzdF9sb3cuCgkoYWRkX2JvdW5kX2luZm8pOiBVc2UgaG9zdF9pbnRlZ2VycCwgaW50ZWdlcl96ZXJvcCwgYW5kIGludGVnZXJfb25lcC4KCShhZGRfYml0X3NpemVfYXR0cmlidXRlKTogVXNlIHRyZWVfbG93X2NzdC4KCShhZGRfcHVyZV9vcl92aXJ0dWFsX2F0dHJpYnV0ZSwgZ2VuX2VudW1lcmF0aW9uX3R5cGVfZGllKTogTGlrZXdpc2UuCgkqIGR3YXJmb3V0LmM6IFNpbWlsYXIgY2hhbmdlcyB0byBkd2FyZjJvdXQuYy4KCSogZXhwci5jIChleHBhbmRfZXhwciwgY2FzZSBBUlJBWV9SRUYpOiBSZW1vdmUgcmVkdW5kYW50IGNvZGUuCgkqIGdlbm91dHB1dC5jIChuX29jY3VycmVuY2VzKTogUmV0dXJuIC0xIGZvciBudWxsIHN0cmluZy4KCShzdHJpcF93aGl0ZXNwYWNlKTogQWNjZXB0IG51bGwgc3RyaW5nIGFuZCBtYWtlIGludG8gZnVuY3Rpb24uCgkoc2Nhbl9vcGVyYW5kcyk6IFJlZmxlY3QgYWJvdmUgY2hhbmdlcy4KCSogc2Rib3V0LmMgKHBsYWluX3R5cGVfMSk6IFVzZSBob3N0X2ludGVnZXJwIGFuZCB0cmVlX2xvd19jc3QuCgkoc2Rib3V0X2ZpZWxkX3R5cGVzLCBzZGJvdXRfb25lX3R5cGUpOiBMaWtld2lzZTsgYWxzbyB1c2UgYml0X3Bvc2l0aW9uLgoJKiBzc2EuYyAocmVuYW1lX3JlZ2lzdGVycyk6IEFkZCBtaXNzaW5nIGNhc3Qgb2YgYXJnIHRvIGJ6ZXJvLgoJKiB0cmVlLmMgKGludF9zaXplX2luX2J5dGVzKTogQ2hlY2sgZm9yIHRvbyBiaWcgdG8gcmVwcmVzZW50LgoJKGJpdF9wb3NpdGlvbiwgaW50X2JpdF9wb3NpdGlvbiwgaG9zdF9pbnRlZ2VycCwgdHJlZV9sb3dfY3N0KTogTmV3IGZucy4KCSogdHJlZS5oIChob3N0X2ludGVnZXJwLCB0cmVlX2xvd19jc3QsIGJpdF9wb3NpdGlvbiwgaW50X2JpdF9wb3NpdGlvbik6CglOZXcgZGVjbGFyYXRpb25zLgoJKG1pbl9wcmVjaXNpb24pOiBEZWxldGUgZnJvbSBoZXJlLgoJKiB2YXJhc20uYyAoZGVjb2RlX2FkZHJfY29uc3QpOiBVc2UgaG9zdF9pbnRlZ2VycCwgYml0X3Bvc2l0aW9uLAoJYW5kIGludF9iaXRfcG9zaXRpb24uCgkqIG9iamMvb2JqYy1hY3QuYyAoZW5jb2RlX21ldGhvZF9wcm90b3R5cGUpOiBTaXplcyBhcmUgSE9TVF9XSURFX0lOVC4KCShlbmNvZGVfbWV0aG9kX2RlZik6IExpa2V3aXNlLgoJKGJ1aWxkX2l2YXJfbGlzdF9pbml0aWFsaXplcik6IFVzZSBpbnRfYml0X3Bvc2l0aW9uLgoJKGdlbmVyYXRlX3NoYXJlZF9zdHJ1Y3R1cmVzKTogQ29udmVydCBzaXplLgoJKGVuY29kZV90eXBlLCBlbmNvZGVfY29tcGxldGVfYml0ZmllbGQpOiBVc2UgaW50ZWdlcl96ZXJvcC4KCShlbmNvZGVfYml0ZmllbGQpOiBVc2UgdHJlZV9sb3dfY3N0IGFuZCBpbnRfYml0X3Bvc2l0aW9uLgoKMjAwMC0wMy0xNyAgTWljaGFlbCBIYXllcyAgPG0uaGF5ZXNAZWxlYy5jYW50ZXJidXJ5LmFjLm56PgoKCSogY29uZmlnL2M0eC9jNHguaCAoQ1BQX1NQRUMpOiBGaXggdHlwby4KCjIwMDAtMDMtMTcgIE1hcnRpbiB2LiBM9ndpcyAgPGxvZXdpc0BpbmZvcm1hdGlrLmh1LWJlcmxpbi5kZT4KCgkqIGNhbGwuYyAoc3BlY2lhbF9mdW5jdGlvbl9wKTogSXQgaXMgb25seSBtYWxsb2MgaWYgaXQgcmV0dXJucwoJUG1vZGUuCgoyMDAwLTAzLTE3ICBNaWNoYWVsIEhheWVzICA8bS5oYXllc0BlbGVjLmNhbnRlcmJ1cnkuYWMubno+CgoJKiBjb25maWcvYzR4L2M0eC5oIChBU01fU1BFQywgQ1BQX1NQRUMsIExJTktfU1BFQyk6IFN1cHBvcnQgQzMzLgoJKEMzM19GTEFHLCBUQVJHRVRfQzNYKTogQWRkIG1hY3Jvcy4KCShUQVJHRVRfU1dJVENIRVMpOiBBZGQgLW0zMyBvcHRpb24uCgkqIGNvbmZpZy9jNHgvYzR4LmMgKGM0eF9vdmVycmlkZV9vcHRpb25zKTogVGVzdCBmb3IgVEFSR0VUX0MzMy4KCjIwMDAtMDMtMTcgIE1pY2hhZWwgSGF5ZXMgIDxtLmhheWVzQGVsZWMuY2FudGVyYnVyeS5hYy5uej4KCgkqIGNvbmZpZy9jNHgvYzR4LmggKFBBUkFMTEVMX0lOU05fRkxBRyk6IEFkZC4KCShQQVJBTExFTF9QQUNLX0ZMQUcpOiBEZWxldGUuCgkoVEFSR0VUX1NXSVRDSEVTKTogVXBkYXRlLgoJKFRBUkdFVF9QQVJBTExFTCk6IFVzZSBQQVJBTExFTF9JTlNOX0ZMQUcuCgpUaHUgTWFyIDE2IDE4OjUyOjMyIDIwMDAgIFJpY2hhcmQgS2VubmVyICA8a2VubmVyQHZsc2kxLnVsdHJhLm55dS5lZHU+CgoJKiBmb2xkLWNvbnN0LmMgKGZvbGQpOiBGaXggYSBmZXcgY2FzZXMgd2hlbiB0aGUgcmV0dXJuZWQgcmVzdWx0CglpcyBub3Qgb2YgdGhlIHNhbWUgdHlwZSBhcyB0aGUgaW5wdXQuCgoyMDAwLTAzLTE2ICBOaWNrIENsaWZ0b24gIDxuaWNrY0BjeWdudXMuY29tPgoKCSogY29uZmlnL2FybS9hcm0uaCAoQVNNX09VVFBVVF9NSV9USFVOSyk6IEZpeCBjb21waWxlIHRpbWUKCXdhcm5pbmcuCgoyMDAwLTAzLTE2ICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBsaWJnY2MyLmg6IE1vdmUgcHJvdG90eXBlcyBhYm92ZSBtYWNyb3Mgd2l0aCB0aGUgc2FtZSBuYW1lLgoJV3JhcCBzb21lIGZ1bmN0aW9uIHByb3RvdHlwZXMgaW4gdGhlIGNvbmRpdGlvbmFsIHdoaWNoIGluZGljYXRlcwoJd2hldGhlciB0aGV5IGFyZSBzdXBwb3J0ZWQsIGkuZS4gIkJJVFNfUEVSX1VOSVQgPT0gOCIuCgoyMDAwLTAzLTE2ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEBjeWdudXMuY29tPgoKCSogY2FsbHMuYzogUmV2ZXJ0IGxhc3QgdHdvIGNoYW5nZXMuCgoyMDAwLTAzLTE2ICBCZXJuZCBTY2htaWR0ICA8YmVybmRzQGN5Z251cy5jby51az4KCgkqIGZwLWJpdC5jIChfdW5wYWNrX2QpOiBJZiBOT19ERU5PUk1BTFMgaXMgZGVmaW5lZCwgYW55dGhpbmcgdGhhdAoJaGFzIGV4cG9uZW50IDAgaXMgYSB6ZXJvLgoKCSogc2ltcGxpZnktcnR4LmMgKGhhc2hfcnR4LCBjYXNlIE1FTS9SRUcpOiBUYWtlIGludG8gYWNjb3VudCB0aGF0CglIQVNIIG1heSBhbHJlYWR5IGJlIG5vbnplcm8uICBBZGQgY29kZS9tb2RlIGludG8gaGFzaCB2YWx1ZQoJaW1tZWRpYXRlbHkgYWZ0ZXIgcmVwZWF0IGxhYmVsLgoJKGNzZWxpYl9sb29rdXApOiBEb24ndCBsZWF2ZSB0aGUgaGFzaCB0YWJsZSBpbiBhbiBpbmNvbnNpc3RlbnQKCXN0YXRlIGJlZm9yZSBhIGhhc2ggbG9va3VwIG9wZXJhdGlvbi4KClRodSBNYXIgMTYgMTc6MDM6MTAgTUVUIDIwMDAgIEphbiBIdWJpY2thICA8amhAc3VzZS5jej4KCgkqIGkzODYubWQgKGFsbCBISSBhbmQgUUkgbW9kZSBub24tbW92ZSBwYXR0ZXJucyk6ICBDb25kaXRpb25pemUKCWJ5IFRBUkdFVF9bSFFdSU1PREVfTUFUSC4KCSogaTM4Ni5oICh4ODZfaGltb2RlX21hdGgsIHg4Nl9xaW1vZGVfbWF0aCwgeDg2X3Byb21vdGVfaGlfcmVncywKCXg4Nl9wcm9tb3RlX3FpX3JlZ3MpOiBEZWNsYXJlLgoJKFRBUkdFVF9ISU1PREVfTUFUSCwgVEFSR0VUX1FJTU9ERV9NQVRILCBUQVJHRVRfUFJPTU9URV9ISV9SRUdTLAoJVEFSR0VUX1BST01PVEVfUUlfUkVHUyk6IE5ldyBtYWNyb3MuCgkoUFJPTU9URV9NT0RFKTogTmV3IG1hY3JvLgoJKiBpMzg2LmMgKHg4Nl9oaW1vZGVfbWF0aCwgeDg2X3FpbW9kZV9tYXRoLCB4ODZfcHJvbW90ZV9oaV9yZWdzLAoJeDg2X3Byb21vdGVfcWlfcmVncyk6IE5ldyBnbG9iYWwgdmFyaWFibGVzLgoKVGh1IE1hciAxNiAxNjo1MDo0NCBNRVQgMjAwMCAgSmFuIEh1Ymlja2EgIDxqaEBzdXNlLmN6PgoKCSogY2FsbHMuYyAoZW1pdF9saWJyYXJ5X2NhbGxfdmFsdWVfMSk6IEJyZWFrIG91dCBmcm9tIC4uLjsgaGFuZGxlCglWT0lEbW9kZSBmdW5jdGlvbiBjYWxscyB0b28uCgkoZW1pdF9saWJyYXJ5X2NhbGxfdmFsdWUpOiAuLi4gaGVyZS4KCShlbWl0X2xpYnJhcnlfY2FsbCk6IEltcGxlbWVudCBieSBjYWxsaW5nIGVtaXRfbGlicmFyeV9jYWxsX3ZhbHVlXzEuCgpUaHUgTWFyIDE2IDE2OjAxOjMwIE1FVCAyMDAwICBKYW4gSHViaWNrYSAgPGpoQHN1c2UuY3o+CgoJKiBjYWxscy5jIChleHBhbmRfY2FsbCk6IERvIHNhbml0eSBjaGVja2luZyBvbiBhcmdfc3BhY2Vfc29fZmFyLgoJVXBkYXRlIGFyZ19zcGFjZV9zb19mYXIgb24gc3RhY2sgYWRqdXN0bWVudHMuCgkoZW1pdF9saWJyYXJ5X2NhbGwsIGVtaXRfbGlicmFyeV9jYWxsX3ZhbHVlKTogTGlrZXdpc2U7IHRha2UgaW50bwoJYWNjb3VudCBhcmdfc3BhY2Vfc29fZmFyIGFuZCBwZW5kaW5nX3N0YWNrX2FkanVzdCB3aGVuIGNhbGN1bGNhdGluZwoJdGhlIGJvdW5kYXJ5LgoKVGh1IE1hciAxNiAwOTowMjoxOSAyMDAwICBKYXNvbiBFY2toYXJkdCAgPGpsZUBjeWdudXMuY29tPgoKCSogZmxvdy5jOiBNb3ZlIGFsbCBiYXNpYyBibG9jayByZW9yZGVyaW5nIGNvZGUgaW50byBpdHMgb3duIGZpbGUuCgkoY3JlYXRlX2Jhc2ljX2Jsb2NrKTogRXh0ZXJuYWxpemUuCgkqIGJiLXJlb3JkZXIuYzogTmV3IGZpbGUuIENvcHkgYWxsIGJhc2ljIGJsb2NrIHJlb3JkZXJpbmcgY29kZSBmcm9tCglmbG93LmMgdG8gdGhpcyBmaWxlLgoJKHJlb3JkZXJfYmFzaWNfYmxvY2tzKTogRml4IGZlbmNlcG9zdCBlcnJvciBpbiBmb3ItbG9vcC4KCShyZW9yZGVyX2Jhc2ljX2Jsb2Nrcyk6IFJlbW92ZSBicmFjZXMgZnJvbSBzaW5nbGUgc3RhdGVtZW50IGZvci1sb29wcy4KCSogYmFzaWMtYmxvY2suaDogQWRkIGRlY2xhcmF0aW9uIGZvciBjcmVhdGVfYmFzaWNfYmxvY2suCgkqIE1ha2VmaWxlLmluOiBBZGQgcnVsZXMgZm9yIGJiLXJlb3JkZXIuby4KCjIwMDAtMDMtMTYgIE5laWwgQm9vdGggIDxOZWlsQkBlYXJ0aGxpbmcubmV0PgoKCSogY3BwaW5pdC5jIChoYW5kbGVfb3B0aW9uKTogIEltcGxlbWVudCAjdW5hc3NlcnQgZGlyZWN0aXZlCglhcyAtQS0gY29tbWFuZCBsaW5lIG9wdGlvbi4KCShwcmludF9oZWxwKTogIFVwZGF0ZS4KCSogY3BwdGV4aS5jOiAgVXBkYXRlLgoKVGh1IE1hciAxNiAwMjoxNDoxNiAyMDAwICBIYW5zLVBldGVyIE5pbHNzb24gIDxocEBiaXRyYW5nZS5jb20+CgoJKiBtZC50ZXhpIChTdGFuZGFyZCBOYW1lcyk6IERvY3VtZW50IGBqdW1wJy4KCjIwMDAtMDMtMTUgIEphc29uIE1lcnJpbGwgIDxqYXNvbkBjYXNleS5jeWdudXMuY29tPgoKCSogY2FsbHMuYyAoZW1pdF9jYWxsXzEpOiBOb3Rocm93IGZ1bmN0aW9ucyBjYW4gc3RpbGwgaGF2ZSBub25sb2NhbAoJZ290b3MuCgoyMDAwLTAzLTE1ICBHZW9mZiBLZWF0aW5nICA8Z2VvZmZrQGN5Z251cy5jb20+CgoJTWVyZ2UgY2hhbmdlcyBmcm9tIG5ld3BwYy1icmFuY2ggb250byB0cnVuay4KCgkyMDAwLTAzLTE1ICBHZW9mZiBLZWF0aW5nICA8Z2VvZmZrQGN5Z251cy5jb20+CgoJKiByczYwMDAuYyAodG9jX2hhc2hfdGFibGUpOiBVcGRhdGUgZm9yIG5ldyBoYXNoIHRhYmxlIGZ1bmN0aW9ucy4KCSh0b2NfaGFzaF9mdW5jdGlvbik6IExpa2V3aXNlLgoJKHRvY19oYXNoX2VxKTogTGlrZXdpc2UuCgkodG9jX2hhc2hfbWFya19lbnRyeSk6IExpa2V3aXNlLgoJKHRvY19oYXNoX21hcmtfdGFibGUpOiBMaWtld2lzZS4KCShvdXRwdXRfdG9jKTogTGlrZXdpc2UuCgkocnM2MDAwX2FkZF9nY19yb290cyk6IExpa2V3aXNlLgoKCTIwMDAtMDMtMTUgIEFsZXhhbmRyZSBPbGl2YSAgPG9saXZhQGxzZC5pYy51bmljYW1wLmJyPgoKCSogdC1haXg0MyAoQVJfRk9SX1RBUkdFVCk6IERlbGV0ZWQuICBNb3ZlZCBgLVgzMl82NCcuLi4KCShBUl9GTEFHU19GT1JfVEFSR0VUKTogaGVyZS4gIE5ldyBtYWNyby4KCgkyMDAwLTAzLTA1ICBDbGludG9uIFBvcGV0eiAgPGNwb3BldHpAY3lnbnVzLmNvbT4KCgkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLmMgKHJzNjAwMF9mcG1lbV9vZmZzZXQsIHJzNjAwMF9mcG1lbV9zaXplLAoJZnBtZW1fb3BlcmFuZCkgRGVsZXRlLgoJKHhlcl9vcGVyYW5kKSBOZXcuCgkocnM2MDAwX3JlZ19uYW1lcywgYWx0X3JlZ19uYW1lcyk6IENoYW5nZSBmcG1lbSB0byB4ZXIuCgkobWFjaGluZV9mdW5jdGlvbik6IFJlbW92ZSBmcG1lbV9zaXplLCBmcG1lbV9vZmZzZXQsIHNhdmVfdG9jX3AuCgkocnM2MDAwX3NhdmVfbWFjaGluZV9zdGF0dXMsIHJzNjAwMF9yZXN0b3JlX21hY2hpbmVfc3RhdHVzLAoJcnM2MDAwX2luaXRfZXhwYW5kZXJzLCByczYwMDBfc3RhY2tfaW5mbywgZGVidWdfc3RhY2tfaW5mbyk6IFJlbW92ZQoJcmVmZXJlbmNlcyB0byBhYm92ZSB2YXJpYWJsZXMuCgkoZ3BjX3JlZ19vcGVyYW5kKTogVXNlIFhFUl9SRUdOT19QIGluc3RlYWQgb2YgRlBNRU1fUkVHTk9fUC4KCSogY29uZmlnL3JzNjAwMC9yczYwMDAuaCAoUkVHX0FMTE9DX09SREVSLCBSRUdJU1RFUl9OQU1FUywKCURFQlVHX1JFR0lTVEVSX05BTUVTKTogQ2hhZ25lIGZwbWVtIHRvIHhlci4KCShGUE1FTV9SRUdOT19QLCBGUE1FTV9SRUdOVU0pOiBEZWxldGUuCgkoWEVSX1JFR05PX1AsIFhFUl9SRUdOTyk6IE5ldy4KCShyczYwMDBfc3RhY2spOiBSZW1vdmUgZnBtZW1fcCwgZnBtZW1fb2Zmc2V0LCBmcG1lbV9zaXplLgoJKFBSRURJQ0FURV9DT0RFUyk6IENoYW5nZSBmcG1lbV9vcGVyYW5kIHRvIHhlcl9vcGVyYW5kLgoJKEhBUkRfUkVHTk9fTlJFR1MsIEhBUkRfUkVHTk9fTU9ERV9PSyk6IENoYW5nZSBGUE1FTV9SRUdOT19QIHRvCglYRVJfUkVHTk9fUC4KCShyZWdfY2xhc3MsIFJFR19DTEFTU19OQU1FUywgUkVHX0NMQVNTX0NPTlRFTlRTLCBSRUdOT19SRUdfQ0xBU1MsCglSRUdfQ0xBU1NfRlJPTV9MRVRURVIsIENMQVNTX01BWF9OUkVHUyk6IENoYW5nZSBGUE1FTV9SRUdTIHRvIFhFUl9SRUdTLAkJYW5kIHJlbW92ZSBGTE9BVF9PUl9GUE1FTV9SRUdTLgoJKENMQVNTX0NBTk5PVF9DSEFOR0VfU0laRSk6IENoYW5nZSB0byBGTE9BVF9SRUdTLgoKCTIwMDAtMDItMjkgIEZyYW56IFNpcmwgIDxGcmFuei5TaXJsLWtlcm5lbEBsYXV0ZXJiYWNoLmNvbT4KCgkqIGFpeC5oIChGUF9TQVZFX0lOTElORSwgQVNNX09VVFBVVF9JTlRFUk5BTF9MQUJFTF9QUkVGSVgsCglURVhUX1NFQ1RJT05fQVNNX09QLCBEQVRBX1NFQ1RJT05fQVNNX09QKTogTW92ZSBoZXJlLi4uCgkqIHJzNjAwMC5oOiBmcm9tIGhlcmUuCgoJKiByczYwMDAtcHJvdG9zLmggKHJzNjAwMF9zZWxlY3Rfc2VjdGlvbik6IFByb3ZpZGUgcHJvdG90eXBlLgoJKHJzNjAwMF9zZWxlY3RfcnR4X3NlY3Rpb24pOiBMaWtld2lzZS4KCShyczYwMDBfZW5jb2RlX3NlY3Rpb25faW5mbyk6IExpa2V3aXNlLgoJKHNkYXRhX3NlY3Rpb24pOiBMaWtld2lzZS4KCShzZGF0YTJfc2VjdGlvbik6IExpa2V3aXNlLgoJKHNic3Nfc2VjdGlvbik6IExpa2V3aXNlLgoJKiBzeXN2NC5oIChyczYwMDBfc2VsZWN0X3NlY3Rpb24pOiBEZWxldGUgcHJvdG90eXBlLgoJKHJzNjAwMF9zZWxlY3RfcnR4X3NlY3Rpb24pOiBMaWtld2lzZS4KCShyczYwMDBfZW5jb2RlX3NlY3Rpb25faW5mbyk6IExpa2V3aXNlLgoJKHNkYXRhX3NlY3Rpb24pOiBMaWtld2lzZS4KCShzZGF0YTJfc2VjdGlvbik6IExpa2V3aXNlLgoJKHNic3Nfc2VjdGlvbik6IExpa2V3aXNlLgoJKFJFR19TQVZFX0FSRUEpOiBEZWxldGUgZGVmaW5pdGlvbiBkdXBsaWNhdGVkIGluIHJzNjAwMC5oLgoKCSogc3lzdjQuaDogRGVsZXRlIHZhcmlvdXMgdW5uZWNlc3NhcnkgI3VuZGVmJ3MgYW5kIHB1dCBhIGNvbW1lbnQKCW9uIHRoZSByZW1haW5pbmcgb25lcy4KCUNoYW5nZSB2YXJpb3VzIGNvbW1lbnRzIGFjY29yZGluZyB0byBjb2Rpbmcgc3RhbmRhcmQuCgoJMjAwMC0wMi0yOSAgQ2xpbnRvbiBQb3BldHogIDxjcG9wZXR6QGN5Z251cy5jb20+CgoJKiBjb25maWcvcnM2MDAwL3JzNjAwMC5oIChNUV9SRUdOTywgQ1IwX1JFR05PLCBDUjFfUkVHTk8sIENSMl9SRUdOTywKCUNSM19SRUdOTywgQ1I0X1JFR05PLCBNQVhfQ1JfUkVHTk8pOiBEZWZpbmUuCgkoQ1IwX1JFR05PX1ApIFJlbW92ZS4KCSogY29uZmlnL3JzNjAwMC9yczYwMDAuYyAoZ3BjX3JlZ19vcGVyYW5kLCBhbmQ2NF9vcGVyYW5kLCBhbmRfb3BlcmFuZCwKCXNldHVwX2luY29taW5nX3ZhcmFyZ3MsIG10Y3JmX29wZXJhdGlvbiwgcHJpbnRfb3BlcmFuZCwKCXJzNjAwMF9zdGFja19pbmZvLCByczYwMDBfZW1pdF9wcm9sb2d1ZSwgcnM2MDAwX2VtaXRfZXBpbG9ndWUpOgoJVXNlIHRoZSBhYm92ZSBtYWNyb3MuCgoJMjAwMC0wMi0yNCAgQ2xpbnRvbiBQb3BldHogIDxjcG9wZXR6QGN5Z251cy5jb20+CgoJKiBjb25maWcvcnM2MDAwL3JzNjAwMC5tZDogQWRkZWQgYSBuZXcgYWx0ZXJuYXRpdmUgZm9yIGVhY2gKCXBhdHRlcm4gdGhhdCBoYWQgYSAneCcgYWx0ZXJuYXRpdmUgYnV0IG5vICd5JyBhbHRlcm5hdGl2ZS4KCUFkZGVkIGEgbmV3IHNwbGl0IGZvciBlYWNoIG9mIHRoZSBhYm92ZSBwYXR0ZXJucy4KCgkyMDAwLTAyLTE4ICBHZW9mZiBLZWF0aW5nICA8Z2VvZmZrQGN5Z251cy5jb20+CgoJKiBhaXg0MS5oIChBU01fQ1BVX1NQRUMpOiBEZWxldGUuCgkoQ1BQX0NQVV9TUEVDKTogRGVsZXRlLgoKCSogYWl4LmggKFJTNjAwMF9PVVRQVVRfQkFTRU5BTUUpOiBEZWZpbmUuCgkoQVNNX09VVFBVVF9MQUJFTCk6IERlZmluZS4KCShBU01fR0xPQkFMSVpFX0xBQkVMKTogRGVmaW5lLgoJKFNUUklQX05BTUVfRU5DT0RJTkcpOiBEZWZpbmUuCgkqIHJzNjAwMC5oIChSUzYwMDBfT1VUUFVUX0JBU0VOQU1FKTogRG9uJ3QgZGVmaW5lLgoJKFNUUklQX05BTUVfRU5DT0RJTkcpOiBEb24ndCBkZWZpbmUuCgkoQVNNX09VVFBVVF9MQUJFTCk6IERvbid0IGRlZmluZS4KCShBU01fR0xPQkFMSVpFX0xBQkVMKTogRG9uJ3QgZGVmaW5lLgoJKiBzeXN2NC5oIChBU01fREVDTEFSRV9GVU5DVElPTl9OQU1FKTogVXNlIGFzc2VtYmxlX25hbWUgdG8gb3V0cHV0CgluYW1lcywgYW5kIEFTTV9PVVRQVVRfTEFCRUwgdG8gb3V0cHV0IGxhYmVscywgcmF0aGVyIHRoYW4KCWFzbV9mcHJpbnRmLgoJKEFTTV9PVVRQVVRfTEFCRUwpOiBEZWZpbmUuCgkoQVNNX09VVFBVVF9JTlQpOiBVc2UgYXNzZW1ibGVfbmFtZS4KCShBU01fT1VUUFVUX0RXQVJGX0FERFIpOiBVc2UgYXNzZW1ibGVfbmFtZS4KCShTVFJJUF9OQU1FX0VOQ09ESU5HKTogRG9uJ3QgdW5kZWZpbmUgZmlyc3QuCgkoUlM2MDAwX09VVFBVVF9CQVNFTkFNRSk6IE1ha2UgZXF1aXZhbGVudCB0byBhc3NlbWJsZV9uYW1lIGZvcgoJRUxGLgoJKEFTTV9PVVRQVVRfTEFCRUxSRUYpOiBEb24ndCBwcmVwZW5kIHVuZGVyc2NvcmVzIHRvIGxhYmVscwoJc3BlY2lmaWVkIHdpdGggJ2FzbScgZXZlbiB3aXRoIC1mbGVhZGluZy11bmRlcnNjb3JlLgoJKiByczYwMDAuYyAocHJpbnRfb3BlcmFuZCk6IFVzZSBhc3NlbWJsZV9uYW1lIHdoZW4gIVRBUkdFVF9BSVguCgkob3V0cHV0X2VwaWxvZyk6IExpa2V3aXNlLgoJKG91dHB1dF90b2MpOiBMaWtld2lzZS4KCSogdHJhbXAuYXNtOiBIYW5kbGUgLWZsZWFkaW5nLXVuZGVyc2NvcmUgY29ycmVjdGx5LgoKCSogcnM2MDAwLm1kIChidWlsdGluX3NldGptcF9yZWNlaXZlcik6IEFsc28gcnVuIGZvciAtZlBJQyBhbmQKCS1tbWluaW1hbC10b2MuCgkobm9ubG9jYWxfZ290b19yZWNlaXZlcik6IERlbGV0ZS4KCSogcnM2MDAwLmggKERPTlRfQUNDRVNTX0dCTFNfQUZURVJfRVBJTE9HVUUpOiBEZWxldGUuCgoJKiByczYwMDAuaCAoQVNNX09VVFBVVF9ERUYpOiBEb24ndCBkZWZpbmUuCgkoU0VUX0FTTV9PUCk6IERlZmluZS4KCSogc3lzdjQuaCAoQVNNX09VVFBVVF9ERUYpOiBEb24ndCB1bmRlZmluZS4KCgkqIHJzNjAwMC5oIChBU01fT1VUUFVUX0FERFJfVkVDX0VMVCk6IERvbid0IGRlZmluZS4KCShBU01fTE9ORyk6IERlZmluZS4KCgkqIHJzNjAwMC5jIChyczYwMDBfZGxsX2ltcG9ydF9yZWYpOiBEZWxldGUsIG5vdCB1c2VkLgoJKiByczYwMDAtcHJvdG9zLmggKHJzNjAwMF9kbGxfaW1wb3J0X3JlZik6IERlbGV0ZS4KCgkqIHJzNjAwMC5oOiBBZGQgJ3UnIHRvIG1vcmUgY29uc3RhbnRzLgoKCTIwMDAtMDItMTggIERhdmlkIEVkZWxzb2huICA8ZWRlbHNvaG5AZ251Lm9yZz4KCgkqIHJzNjAwMC5tZCAobWZjcitzaGlmdCk6IERlbGV0ZSBQb3dlclBDNjQgdmVyc2lvbi4KCgkyMDAwLTAyLTE1ICBEYXZpZCBFZGVsc29obiAgPGVkZWxzb2huQGdudS5vcmc+CgoJKiByczYwMDAuYyAocmVnX29yX3VfY2ludF9vcGVyYW5kKTogTmV3IGZ1bmN0aW9uLgoJKGxvZ2ljYWxfb3BlcmFuZCk6IEhhbmRsZSA2NC1iaXQgaG9zdHMuCgkobG9naWNhbF91X29wZXJhbmQpOiBOZXcgZnVuY3Rpb24uCgkobm9uX2xvZ2ljYWxfY2ludF9vcGVyYW5kKTogSGFuZGxlIDY0LWJpdCBob3N0cy4KCShub25fbG9naWNhbF91X2NpbnRfb3BlcmFuZCk6IE5ldyBmdW5jdGlvbi4KCSogcnM2MDAwLmggKERBVEFfU0VDVElPTl9BU01fT1ApOiBBZGQgdGFiLgoJKFBSRURJQ0FURV9DT0RFUyk6IERlZmluZSBuZXcgZnVuY3Rpb25zLgoJKiByczYwMDAtcHJvdG9zLmg6IERlY2xhcmUgbmV3IGZ1bmN0aW9ucy4KCSogcnM2MDAwLm1kIChpb3JkaTMsIHhvcmRpMyk6IENvbnN0YW50IGludCBtdXN0IGJlIHVuc2lnbmVkIDMyLWJpdHMuCgkobW92ZGlfNjQpOiBCcmFja2V0IGNvZGUgaW50ZW5kZWQgZm9yIDY0LWJpdCBob3N0cy4gIENyZWF0ZQoJQ09OU1RfRE9VQkxFIGZvciAzMi1iaXQgdmFsdWVzLgoJKHNjYyBpbnNucyk6IEdlbmVyYXRlIERJbW9kZSBjb21wYXJlcy4KCShtZmNyIGluc25zKTogQ3JlYXRlIERJbW9kZSB2ZXJzaW9ucy4KCShzZ2UgbWF0Y2hlcnMpOiBOZXcgcGF0dGVybnMuCgoJMjAwMC0wMi0xNSAgR2FicmllbCBQYXViZXJ0ICA8cGF1YmVydEBpcmFtLmVzPgoKCSogcnM2MDAwLm1kOiBDb3JyZWN0IGluc3RydWN0aW9ucyBsZW5ndGggYXR0cmlidXRlcyBhbmQKCWNvbnN0cmFpbnRzIG9uIHVuc2lnbmVkIGNvbXBhcmUgaW5zdHJ1Y3Rpb25zLgoJKCpuZTApOiBEaXNhYmxlIGZvciBQb3dlclBDNjQuCgoJMjAwMC0wMi0xMSAgR2VvZmYgS2VhdGluZyAgPGdlb2Zma0BjeWdudXMuY29tPgoKCSogcnM2MDAwLmMgKG91dHB1dF9mdW5jdGlvbl9wcm9maWxlcik6IFVzZSAubG9uZyBmb3IgYSAzMi1iaXQKCXF1YW50aXR5LCBmaXggcHJvZmlsZTEuQyB0ZXN0IGZhaWx1cmUgdW5kZXIgLWZQSUMuCgoJKiByczYwMDAuYzogQWRkICd1JyB0byBtYW55IGNvbnN0YW50cyB0byBzdXBwcmVzcyB3YXJuaW5ncy4KCShjb25zdGFudF9wb29sX2V4cHJfMSk6IE1ha2Ugc3RhdGljLgoJKHJzNjAwMF9lbWl0X2VoX3RvY19yZXN0b3JlKTogUmVtb3ZlIHVudXNlZCAncjInLgoJKiByczYwMDAuaDogQWRkICd1JyB0byBtYW55IGNvbnN0YW50cyB0byBzdXBwcmVzcyB3YXJuaW5ncy4KCgkqIHJzNjAwMC5jIChyczYwMDBfZW1pdF9sb2FkX3RvY190YWJsZSk6IFVzZSBMQ1RPQy4uMSB1bmRlciBBSVgKCWZvciB0aGUgc3RhcnQgb2YgdGhlIFRPQywgaW5zdGVhZCBvZiBMQ1RPQy4uMC4KCSogYWl4LmggKHRvY19zZWN0aW9uKTogVXNlIExDVE9DLi4xIHVuZGVyIEFJWCBmb3IgdGhlIHN0YXJ0CglvZiB0aGUgVE9DLgoJKiByczYwMDAubWQgKGxvYWRfdG9jX2FpeF9zaSk6IFVzZSBMQ1RPQy4uMS4KCShsb2FkX3RvY19haXhfZGkpOiBVc2UgTENUT0MuLjEuCgoJKiByczYwMDAuaCAoTEVHSVRJTUlaRV9BRERSRVNTKTogVHVybiBpbnRvIGEgZnVuY3Rpb24uCgkqIHJzNjAwMC5jIChyczYwMDBfbGVnaXRpbWl6ZV9hZGRyZXNzKTogTmV3IGZ1bmN0aW9uIGZyb20KCUxFR0lUSU1JWkVfQUREUkVTUy4gIE9ubHkgdXNlIGNyZWF0ZV9UT0NfcmVmZXJlbmNlIG9uCglzeW1ib2xzIGluIHRoZSBjb25zdGFudCBwb29sIHRoYXQgcmVhbGx5IGFyZSBUT0MgcmVmZXJlbmNlcy4KCShwcmludF9vcGVyYW5kX2FkZHJlc3MpOiBGb3IgRUxGLCB3cml0ZSBUT0Mgb2Zmc2V0cyB1bmRlcgoJLWZQSUMgYXMgc3VidHJhY3Rpb25zIGluIHRoZSBpbnNuLgoJKG91dHB1dF90b2MpOiBGb3IgRUxGLCBkZWZpbmUgc3ltYm9scyBpbiBUT0MgYXMgbm9ybWFsIGxhYmVscywKCXRvIG1hdGNoIFJUTC4KCShjcmVhdGVfVE9DX3JlZmVyZW5jZSk6IFVzZSBnZW5fcnR4X1BMVVMgcmF0aGVyIHRoYW4gZ2VuX3J0eC4KCSogcnM2MDAwLXByb3Rvcy5oIChyczYwMDBfbGVnaXRpbWl6ZV9hZGRyZXNzKTogUHJvdG90eXBlLgoJKGNyZWF0ZV9UT0NfcmVmZXJlbmNlKTogUHJvdG90eXBlIG9ubHkgd2hlbiBSVFhfQ09ERSBpcyBkZWZpbmVkLgoJKiByczYwMDAubWQgKG1vdnNpKTogT25seSB1c2UgY3JlYXRlX1RPQ19yZWZlcmVuY2Ugb24KCXN5bWJvbHMgaW4gdGhlIGNvbnN0YW50IHBvb2wgdGhhdCByZWFsbHkgYXJlIFRPQyByZWZlcmVuY2VzLgoKCSogcnM2MDAwLmggKE1BQ0hJTkVfREVQRU5ERU5UX1JFT1JHKTogRG9uJ3QgZGVmaW5lLgoJKiByczYwMDAuYyAocnM2MDAwX3Jlb3JnKTogRGVsZXRlLgoJKiByczYwMDAtcHJvdG9zLmggKHJzNjAwMF9yZW9yZyk6IERlbGV0ZS4KCgkyMDAwLTAyLTA5ICBHZW9mZiBLZWF0aW5nICA8Z2VvZmZrQGN5Z251cy5jb20+CgoJKiByczYwMDAuaCAoSU5DT01JTkdfUkVUVVJOX0FERFJfUlRYKTogTmV3IG1hY3JvLgoKCSogYWl4LmggKFNFVFVQX0ZSQU1FX0FERFJFU1NFUyk6IERlZmluZS4KCSogcnM2MDAwLmMgW1RBUkdFVF9BSVhdIChpbnNuX2FmdGVyX3Rocm93KTogTmV3IHN0YXRpYyB2YXJpYWJsZS4KCVtUQVJHRVRfQUlYXSAocnM2MDAwX2FpeF9lbWl0X2J1aWx0aW5fdW53aW5kX2luaXQpOiBOZXcgZnVuY3Rpb24uCglbVEFSR0VUX0FJWF0gKHJzNjAwMF9lbWl0X2VoX3RvY19yZXN0b3JlKTogTmV3IGZ1bmN0aW9uLgoJKiByczYwMDAtcHJvdG9zLmg6IFByb3RvdHlwZSByczYwMDBfZW1pdF9laF90b2NfcmVzdG9yZSwKCXJzNjAwMF9haXhfZW1pdF9idWlsdGluX3Vud2luZF9pbml0LgoJKiByczYwMDAubWQgKGVoX2VwaWxvZ3VlKSBbVEFSR0VUX0FJWF06IENhbGwKCXJzNjAwMF9lbWl0X2VoX3RvY19yZXN0b3JlIG9uIEFJWC4KCShyZXR1cm5fZWhfc2kpOiBVc2UgcjIuCgkocmV0dXJuX2VoX2RpKTogVXNlIHIyLgoKCSogYWl4NDMuaDogVHVybiBvbiBIQVNfSU5JVF9TRUNUSU9OIGFuZCBMRF9JTklUX1NXSVRDSCwKCXNpbmNlIHdlJ3JlIGJyZWFraW5nIGJpbmFyeSBjb21wYXRpYmlsaXR5IGFueXdheS4KCgkyMDAwLTAyLTA5ICBDbGludG9uIFBvcGV0eiAgPGNwb3BldHpAY3lnbnVzLmNvbT4KCgkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLXByb3Rvcy5oOiAoZ2V0X1RPQ19hbGlhc19zZXQsIHVzZXNfVE9DLAoJY29uc3RhbnRfcG9vbF9leHByX3ApOiBEZWNsYXJlIHRoZW0uCgkoY29uc3RhbnRfcG9vbF9leHByX3ApOiBEZWNsYXJlIGl0LgoJKiBjb25maWcvcnM2MDAwL3JzNjAwMC5jICh0b2NfbGFiZWxfbmFtZSk6IERlZmluZS4KCShyczYwMDBfb3ZlcnJpZGVfb3B0aW9ucyk6IFNldCB0b2NfbGFiZWxfbmFtZS4KCShpbnB1dF9vcGVyYW5kKTogQWxsb3cgYW55IFRPQ19SRUxBVElWRV9FWFBSX1AuCgkoZ2V0X1RPQ19hbGlhc19zZXQsIGNvbnN0YW50X3Bvb2xfZXhwcl9wLCBjb25zdGFudF9wb29sX2V4cHJfMSwKCXVzZXNfVE9DKTogTmV3IGZ1bmN0aW9ucy4KCShwcmludF9vcGVyYW5kKTogRGVsZXRlIG9sZCAnKicgY2FzZS4KCShwcmludF9vcGVyYW5kX2FkZHJlc3MpOiBVc2UgTEVHSVRJTUFURV9DT05TVEFOVF9QT09MX0FERFJFU1NfUCwKCWFuZCBzdHJpcCBvZmYgcnRsIGZvciBUT0MgYmVmb3JlIGNhbGxpbmcgb3V0cHV0X2FkZHJfY29uc3QuCgkocnM2MDAwX2VtaXRfbG9hZF90b2NfdGFibGUpOiBVc2UgdG9jX2xhYmVsX25hbWUuCgkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLmggKFRBUkdFVF9TV0lUQ0hFUyk6IE1ha2UgbXNjaGVkLXByb2xvZwoJdGhlIGRlZmF1bHQuCgkoTEVHSVRJTUFURV9DT05TVEFOVF9QT09MX0JBU0VfUCk6IERlbGV0ZS4KCShDT05TVEFOVF9QT09MX0VYUFJfUCwgVE9DX1JFTEFUSVZFX0VYUFJfUCk6IE5ldyBtYWNyb3MuCgkoTEVHSVRJTUFURV9DT05TVEFOVF9QT09MX0FERFJFU1NfUCk6IFVzZSBDT05TVEFOVF9QT09MX0VYUFJfUC4KCShMRUdJVElNSVpFX0FERFJFU1MsIExFR0lUSU1JWkVfUkVMT0FEX0FERFJFU1MpOiBUdXJuIHN5bWJvbF9yZWZzCglpbnRvIGV4cGxpY2l0IFRPQ19SRUdJU1RFUiBvZmZzZXRzLgoJKFRPQ19SRUdJU1RFUik6IE5ldyBtYWNyby4KCSogY29uZmlnL3JzNjAwMC9yczYwMDAubWQgKG1vdnNpLCBtb3ZkaSk6IEVtaXQgcnRsIHVuZGVyCglUQVJHRVRfVE9DIHRvIHJlZmVyZW5jZSBUT0NfUkVHSVNURVIuCgkobG9hZF90b2NfdjRfUElDXzFiKTogQWRkIDQgdG8gb2Zmc2V0IGZvciB0b2MgcmVsb2FkLgoJKiBjb25maWcvcnM2MDAwL3N5c3Y0LmggKEFTTV9ERUNMQVJFX0ZVTkNUSU9OX05BTUUpOiBDYWxsCgl1c2VzX1RPQyBiZWZvcmUgZW1pdHRpbmcgbGFiZWwgcmVmZXJlbmNlcy4KCgkyMDAwLTAyLTA1ICBHZW9mZiBLZWF0aW5nICA8Z2VvZmZrQGN5Z251cy5jb20+CgoJKiByczYwMDAubWQgKHN0YWNrX3RpZSk6IEZpeCB3YXJuaW5nLgoKCSogZWFiaS1jdG9ycy5jOiBVc2UgJ2FzbScgbmFtZXMgZm9yIHRoZSBzdGFydC9lbmQgdmFyaWFibGVzLAoJdG8gaGFuZGxlIC1mbGVhZGluZy11bmRlcnNjb3JlLgoJKiBzeXN2NC5oIChBU01fREVDTEFSRV9GVU5DVElPTl9OQU1FKTogVXNlIGFzbV9mcHJpbnRmIGFuZCAlVS4KCShVU0VSX0xBQkVMX1BSRUZJWCk6IE5ldyBtYWNyby4KCShBU01fT1VUUFVUX0lOVEVSTkFMX0xBQkVMX1BSRUZJWCk6IFVzZSBhc21fZnByaW50ZiBhbmQgJUwuCgkoQVNNX09VVFBVVF9MQUJFTFJFRik6IFVzZSBhc21fZnByaW50ZiBhbmQgJVUuCgkqIHQtcHBjY29tbSAoTVVMVElMSUJfTUFUQ0hFU19TWVNWKTogTm90ZSB0aGF0IGNhbGwtc3lzdiBhbmQKCWNhbGwtbGludXggY2FuIHVzZSB0aGUgc2FtZSBtdWx0aWxpYnMuCgkqIHQtcHBjZ2FzIChNVUxUSUxJQl9PUFRJT05TKTogRG9uJ3QgbmVlZCB0byBoYXZlIHNlcGFyYXRlIGNhbGwtc3lzdgoJYW5kIGNhbGwtbGludXggbXVsdGlsaWJzLiAgRG8gbXVsdGlsaWIgd2l0aCAtZmxlYWRpbmctdW5kZXJzY29yZS4KCShNVUxUSUxJQl9ESVJOQU1FUyk6IEZvbGxvdyBNVUxUSUxJQl9PUFRJT05TIGNoYW5nZS4KCShNVUxUSUxJQl9FWENFUFRJT05TKTogUmVtb3ZlIGNhbGwtbGludXggZXhjZXB0aW9ucy4gIEFkZCByZXN0cmljdGlvbnMKCXRvIGNhbGwtYWl4LgoKCSogc3lzdjQuaCAoQ1BQX1NZU1ZfU1BFQyk6IERlZmluZSBfU09GVF9GTE9BVCBmb3IgYWxsIHRob3NlIENQVXMgdGhhdAoJaGF2ZSBNQVNLX1NPRlRfRkxPQVQgc2V0LgoJKENQUF9GTE9BVF9ERUZBVUxUX1NQRUMpOiBOZXcgbWFjcm8uCgkoU1VCVEFSR0VUX0VYVFJBX1NQRUNTKTogU2V0IGBjcHBfZmxvYXRfZGVmYXVsdCcgdG8gdGhlIHZhbHVlIG9mCglDUFBfRkxPQVRfREVGQVVMVF9TUEVDLgoKCSogcnM2MDAwLmMgKGNjcl9iaXQpOiBBZGQgc29tZSBjb25zaXN0ZW5jeSBjaGVja3MgYW5kIGEgdmFyaWFibGUgJ3JlZycuCgkqIHJzNjAwMC5tZDogV2hpdGVzcGFjZSBjaGFuZ2UuCgkqIHN5c3Y0LmggKExJTktfVEFSR0VUX1NQRUMpOiBXaGl0ZXNwYWNlIGNoYW5nZS4KCSogc3lzdjRsZS5oIChMSU5LX1RBUkdFVF9TUEVDKTogV2hpdGVzcGFjZSBjaGFuZ2UuCgoJMjAwMC0wMi0wNSAgR2VvZmYgS2VhdGluZyAgPGdlb2Zma0BjeWdudXMuY29tPgoKCSogcnM2MDAwLm1kIChlaF9lcGlsb2d1ZSk6IE5ldyBleHBhbmRlci4KCShlaF9yZWdfcmVzdG9yZSk6IE5ldyBleHBhbmQvc3BsaXQvaW5zbiBjb21iaW5hdGlvbi4KCShyZXR1cm5fZWhfc2kpOiBOZXcgaW5zbi4KCShyZXR1cm5fZWhfZGkpOiBOZXcgaW5zbi4KCgkqIGVhYmktY2kuYXNtOiBQdXQgYSBsYWJlbCBhdCB0aGUgc3RhcnQgb2YgdGhlIC5laF9mcmFtZSBzZWN0aW9uLgoJKiBlYWJpLWNuLmFzbTogUHV0IGEgemVybyBhdCB0aGUgZW5kIG9mIHRoZSAuZWhfZnJhbWUgc2VjdGlvbi4KCSogZWFiaS1jdG9ycy5jIChfX2RvX2dsb2JhbF9jdG9ycyk6IFJlZ2lzdGVyIHRoaXMgb2JqZWN0J3MKCWZyYW1lLiAgQ2xlYW4gdXAuICBDYWxsIGF0ZXhpdCgpIGFmdGVyIHRoZSBjb25zdHJ1Y3RvcnMuCgkoX19kb19nbG9iYWxfZHRvcnMpOiBEZXJlZ2lzdGVyIHRoaXMgb2JqZWN0J3MgZnJhbWUuICBDbGVhbiB1cC4KCUFsbG93IGZvciByZWN1cnNpdmUgY2FsbHMgdG8gZXhpdCgpLgoJKiByczYwMDAuYyAoZml4dXBsYWJlbG5vKTogTmV3IHZhcmlhYmxlLgoJKiBzeXN2NC5oIChBU01fT1VUUFVUX0lOVCk6IERvbid0IGRvIC5maXh1cCBpZiBub3QKCVRBUkdFVF9SRUxPQ0FUQUJMRSwgaXQgc2xvd3MgZG93biBleGVjKCkgdW5kZXIgbGludXguCgkoQVNNX09VVFBVVF9EV0FSRl9BRERSKTogRG8gLmZpeHVwIGlmIFRBUkdFVF9SRUxPQ0FUQUJMRS4KCgkqIGFpeC5oIChBU01fT1VUUFVUX0RXQVJGX0FERFJfVkFSKTogTmV3IG1hY3JvLgoJKEFTTV9PVVRQVVRfRFdBUkZfREVMVEFfVkFSKTogTmV3IG1hY3JvLgoJKEFTTV9PVVRQVVRfRFdBUkZfREVMVEEyKTogTmV3IG1hY3JvLgoJKEFTTV9PVVRQVVRfRFdBUkZfREVMVEE0KTogTmV3IG1hY3JvLgoJKEFTTV9PVVRQVVRfRFdBUkZfQUREUl9ERUxUQSk6IE5ldyBtYWNyby4KCShBU01fT1VUUFVUX0RXQVJGX0FERFIpOiBOZXcgbWFjcm8uCgkoQVNNX09VVFBVVF9EV0FSRl9EQVRBNCk6IE5ldyBtYWNyby4KCShBU01fT1VUUFVUX0RXQVJGX0RBVEEyKTogTmV3IG1hY3JvLgoJKEFTTV9PVVRQVVRfRFdBUkZfT0ZGU0VUNCk6IE5ldyBtYWNyby4KCShBU01fT1VUUFVUX0RXQVJGX09GRlNFVCk6IE5ldyBtYWNyby4KCShVTkFMSUdORURfSU5UX0FTTV9PUCk6IE5ldyBtYWNybywgZmFrZSBkZWZpbml0aW9uLgoKCTIwMDAtMDItMDMgIEdlb2ZmIEtlYXRpbmcgIDxnZW9mZmtAY3lnbnVzLmNvbT4KCgkqIHJzNjAwMC5jIChyczYwMDBfc3JfYWxpYXNfc2V0KTogTmV3IHZhcmlhYmxlLgoJKHJzNjAwMF9vdmVycmlkZV9vcHRpb25zKTogSW5pdGlhbGl6ZSByczYwMDBfc3JfYWxpYXNfc2V0LgoJKHJzNjAwMF9lbWl0X3N0YWNrX3RpZSk6IE5ldyBmdW5jdGlvbi4KCShyczYwMDBfZW1pdF9hbGxvY2F0ZV9zdGFjayk6IFNwZWNpZnkgUlRYX0ZSQU1FX1JFTEFURURfUAoJaW4gYSB3YXkgdGhhdCBkd2FyZjJvdXQgY2FuIHVuZGVyc3RhbmQuCgkocnM2MDAwX2ZyYW1lX3JlbGF0ZWQpOiBOZXcgZnVuY3Rpb24uCgkocnM2MDAwX2VtaXRfcHJvbG9ndWUpOiBVc2UgcnM2MDAwX3NyX2FsaWFzX3NldC4gIFNwZWNpZnkKCVJUWF9GUkFNRV9SRUxBVEVEX1AgaW4gYSB3YXkgdGhhdCBkd2FyZjJvdXQgY2FuIHVuZGVyc3RhbmQuCglVc2UgcnM2MDAwX2VtaXRfc3RhY2tfdGllIHdoZW4gbmVlZGVkLgoJKHJzNjAwMF9lbWl0X2VwaWxvZ3VlKTogVXNlIHJzNjAwMF9zcl9hbGlhc19zZXQuICBEb24ndCBzZXQKCVJUWF9GUkFNRV9SRUxBVEVEX1AuICBVc2UgcnM2MDAwX2VtaXRfc3RhY2tfdGllIHdoZW4gbmVlZGVkLgoJKiByczYwMDAubWQgKHN0YWNrX3RpZSk6IE5ldyBpbnNuLgoJKHJldHVybl9pbnRlcm5hbF9zaSk6IEFsbG93IHJldHVybiB2YWx1ZSB0byBiZSBpbiB0aGUgY291bnQKCXJlZ2lzdGVyLgoJKHJldHVybl9pbnRlcm5hbF9kaSk6IExpa2V3aXNlLgoKCSogcnM2MDAwLmMgKG91dHB1dF9taV90aHVuayk6IFJlbW92ZSB1bnVzZWQgdmFyaWFibGUgYHNwJy4KCgkyMDAwLTAyLTAzICBHZW9mZiBLZWF0aW5nICA8Z2VvZmZrQGN5Z251cy5jb20+CgoJKiBzeXN2NC5oIChMT0NBTF9MQUJFTF9QUkVGSVgpOiBEZWZpbmUsIGZvciB0aGUgdXNlIG9mIGRieGVsZi5oLgoKCTIwMDAtMDEtMzEgIEdlb2ZmIEtlYXRpbmcgIDxnZW9mZmtAY3lnbnVzLmNvbT4KCgkqIHJzNjAwMC5oIChBU01fT1VUUFVUX0RFRl9GUk9NX0RFQ0xTKTogTmV3IG1hY3JvLgoKCSogcnM2MDAwLm1kIChzdG13KTogVXNlIHRoZSByaWdodCBQT1dFUiBvcGNvZGUuCgkobG13KTogTGlrZXdpc2UuCgoJMjAwMC0wMS0zMSAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogcnM2MDAwLXByb3Rvcy5oOiBOZXcgZmlsZS4KCgkqIHJzNjAwMC5jOiBJbmNsdWRlIHRtX3AuaC4gIEZpeCBjb21waWxlIHRpbWUgd2FybmluZ3MuCgoJKiByczYwMDAuaDogTW92ZSBwcm90b3R5cGVzIHRvIHJzNjAwMC1wcm90b3MuaC4gIEZpeCBjb21waWxlIHRpbWUKCXdhcm5pbmdzLgoKCSogc3lzdjQuaDogTGlrZXdpc2UuCgoJMjAwMC0wMS0yOCAgR2VvZmYgS2VhdGluZyAgPGdlb2Zma0BjeWdudXMuY29tPgoKCSogLi4vLi4vY29uZmlndXJlLmluOiBEZWxldGUgcG93ZXJwY2xlLSotd2lubnQqCglhbmQgcG93ZXJwY2xlLSotcGV8cG93ZXJwY2xlLSotY3lnd2luKi4KCSogLi4vLi4vY29uZmlndXJlOiBSZWdlbmVyYXRlZC4KCSogY3lnd2luLmg6IERlbGV0ZS4KCSogcnM2MDAwLmggKE9CSkVDVF9XSU5ET1dTX05UKTogRGVsZXRlLgoJKFRBUkdFVF9XSU5ET1dTX05UKTogRGVsZXRlLgoJKEFCSV9OVCk6IERlbGV0ZS4KCShDQUxMX05UX0RMTElNUE9SVCk6IERlbGV0ZS4KCURlbGV0ZSBOVC1zcGVjaWZpYyBjb2RlLgoJKiByczYwMDAubWQsIHJzNjAwMC5jLCBzeXN2NC5oOiBEZWxldGUgTlQtc3BlY2lmaWMgY29kZS4KCSogd2luLW50Lmg6IERlbGV0ZS4KCSogdC13aW5udDogRGVsZXRlLgoJKiBudC1jaS5hc206IERlbGV0ZS4KCSogbnQtY24uYXNtOiBEZWxldGUuCgkqIG50c3RhY2suYXNtOiBEZWxldGUuCgoJMjAwMC0wMS0yNyAgRnJhbnogU2lybCAgPEZyYW56LlNpcmwta2VybmVsQGxhdXRlcmJhY2guY29tPgoKCSogcnM2MDAwLmggKFNFTEVDVF9SVFhfU0VDVElPTik6IE1vdmUgdG8gYWl4LmguCgkoQVNNX0ZJTEVfU1RBUlQpOiBMaWtld2lzZS4KCShBU01fREVDTEFSRV9GVU5DVElPTl9OQU1FKTogTGlrZXdpc2UuCgkoQVNNX09VVFBVVF9MQUJFTFJFRik6IExpa2V3aXNlLgoJKEFTTV9PVVRQVVRfU0tJUCk6IExpa2V3aXNlLgoJKEFTTV9PVVRQVVRfSU5URVJOQUxfTEFCRUwpOiBMaWtld2lzZS4KCShBU01fR0VORVJBVEVfSU5URVJOQUxfTEFCRUwpOiBMaWtld2lzZS4KCShBU01fT1VUUFVUX0NBU0VfTEFCRUwpOiBMaWtld2lzZS4KCShBU01fT1VUUFVUX0FMSUdORURfQ09NTU9OKTogTGlrZXdpc2UuCgkoQVNNX09VVFBVVF9BU0NJSSk6IExpa2V3aXNlLgoKCTIwMDAtMDEtMjcgIENsaW50b24gUG9wZXR6ICA8Y3BvcGV0ekBjeWdudXMuY29tPgoKCSogcnM2MDAwLmMgKHJzNjAwMF9lbWl0X2xvYWRfdG9jX3RhYmxlKTogVXNlICJMQ0ciIGFuZAoJcmVsb2FkX3RvY19sYWJlbG5vIGZvciBub24tcHJvbG9ndWUgVE9DIHJlbG9hZHMuICBBbHNvLCBkb24ndAoJaW5jcmVtZW50IHJzNjAwMF9waWNfbGFiZWxubyBoZXJlLgoJKHJzNjAwMF9lbWl0X3Byb2xvZ3VlKTogUGFzcyBUUlVFIHRvIHJzNjAwMF9lbWl0X2xvYWRfdG9jX3RhYmxlLAoJYW5kIGluY3JlbWVudCByczYwMDBfcGljX2xhYmVsbm8gaGVyZS4KCgkyMDAwLTAxLTI0ICBHZW9mZnJleSBLZWF0aW5nICA8Z2VvZmZrQGN5Z251cy5jb20+CgoJKiByczYwMDAubWQgKGZjdGl3eik6IFVzZSAoc2V0IChyZWcpICh1bnNwZWM6REkgWyhmaXg6U0kgLi4uKV0pKQoJcmF0aGVyIHRoYW4gKHNldCAoc3VicmVnOlNJIChyZWcpKSAoZml4OlNJIC4uLikpIHNvIHRoYXQgcmVnaXN0ZXIKCWFsbG9jYXRpb24ga25vd3MgKHJlZykgaXMgZGVhZCBiZWZvcmUgdGhlIGluc24uCgoJMjAwMC0wMS0yMSAgR2VvZmYgS2VhdGluZyAgPGdlb2Zma0BjeWdudXMuY29tPgoKCSogcnM2MDAwLm1kIChtb3ZzaV90b19jcik6IENvcnJlY3QgdHlwbyBpbiBvdXRwdXQgdGVtcGxhdGUuCgoJMjAwMC0wMS0xOSAgR2VvZmZyZXkgS2VhdGluZyAgPGdlb2Zma0BjeWdudXMuY29tPgoKCSogcnM2MDAwLmMgKHJzNjAwMF9waWNfbGFiZWxubyk6IEFsd2F5cyBkZWZpbmUuCgkocnM2MDAwX3BpY19mdW5jX2xhYmVsbm8pOiBEZWxldGUuCgkobG13X29wZXJhdGlvbik6IENoZWNrIGZvciBhIHplcm8gYmFzZSByZWdpc3RlciwKCXdoaWNoIGRvZXNuJ3QgbWVhbiB3aGF0IHdlIHdhbnQuCgkoc3Rtd19vcGVyYXRpb24pOiBOZXcgZnVuY3Rpb24uCgkocHJpbnRfb3BlcmFuZCk6IERlZmluZSBuZXcgJ2wnIG1vZGlmaWVyLgoJKHJzNjAwMF9zdGFja19pbmZvKTogV2UgbXVzdCBzYXZlIGFsbCA2NCBiaXRzIG9mIHRoZSByZWdpc3RlcnMKCWlmIFRBUkdFVF9QT1dFUlBDNjQuCgkocnM2MDAwX291dHB1dF9sb2FkX3RvY190YWJsZSk6IERlbGV0ZS4KCShyczYwMDBfZW1pdF9sb2FkX3RvY190YWJsZSk6IE5ldyBmdW5jdGlvbi4KCShyczYwMDBfYWxsb2NhdGVfc3RhY2tfc3BhY2UpOiBEZWxldGUuCgkocnM2MDAwX2VtaXRfYWxsb2NhdGVfc3RhY2spOiBOZXcgZnVuY3Rpb24uCgkocnM2MDAwX2VtaXRfcHJvbG9ndWUpOiBOZXcgZnVuY3Rpb24uCgkob3V0cHV0X3Byb2xvZyk6IFVzZSByczYwMDBfZW1pdF9wcm9sb2d1ZS4KCShyczYwMDBfZW1pdF9lcGlsb2d1ZSk6IENoYW5nZSBhIGZldyB2YXJpYWJsZSBuYW1lcyB0byBiZQoJbW9yZSBhY2N1cmF0ZS4gIFJlc3RvcmUgYWxsIDY0IGJpdHMgb2YgdGhlIHJlZ2lzdGVycyBpZgoJVEFSR0VUX1BPV0VSUEM2NC4gIE9ubHkgcmVzdG9yZSB0aGUgRlAgcmVnaXN0ZXJzIHdoaWNoIHdlcmUgdXNlZAoJaWYgdGhleSBhcmUgYmVpbmcgc2F2ZWQvcmVzdG9yZWQgb25lLWF0LWEtdGltZS4KCShvdXRwdXRfbWlfdGh1bmspOiBEZWxldGUgaW5lZmZpY2llbnQgY29kZSBnZW5lcmF0aW9uLgoJKG91dHB1dF9mdW5jdGlvbl9wcm9maWxlcik6IERvbid0IHVzZSByczYwMDBfb3V0cHV0X2xvYWRfdG9jX3RhYmxlLgoJKiByczYwMDAuaDogRGVjbGFyZSByczYwMDBfZW1pdF9sb2FkX3RvY190YWJsZSwKCXJzNjAwMF9hbGxvY2F0ZV9zdGFja19zcGFjZSwgc3Rtd19vcGVyYXRpb24uICBEb24ndCBkZWNsYXJlCglyczYwMDBfb3V0cHV0X2xvYWRfdG9jX3RhYmxlLgoJKiByczYwMDAubWQgKGVsZl9oaWdoKTogQWxsb3cgcmVnaXN0ZXIgMCwgYnV0IGRpc2NvdXJhZ2UgaXQKCWhlYXZpbHkuCgkoZWxmX2xvdyk6IFN1cHBvcnQgbG9hZGluZyBpbnRvIHJlZ2lzdGVyIDAuCgkobG9hZF90b2NfYWl4X3NpKTogTmV3IHBhdHRlcm4uCgkobG9hZF90b2NfYWl4X2RpKTogTmV3IHBhdHRlcm4uCgkobG9hZF90b2NfdjRfcGljX3NpKTogTmV3IHBhdHRlcm4uCgkobG9hZF90b2NfdjRfcGljX2RpKTogTmV3IHBhdHRlcm4uCgkobG9hZF90b2NfdjRfUElDXzEpOiBOZXcgcGF0dGVybi4KCShsb2FkX3RvY192NF9QSUNfMWIpOiBOZXcgcGF0dGVybi4KCShsb2FkX3RvY192NF9QSUNfMik6IE5ldyBwYXR0ZXJuLgoJKGJ1aWx0aW5fc2V0am1wX3JlY2VpdmVyKTogVXNlIHJzNjAwMF9lbWl0X2xvYWRfdG9jX3RhYmxlLgoJKG5vbmxvY2FsX2dvdG9fcmVjZWl2ZXIpOiBVc2UgcnM2MDAwX2VtaXRfbG9hZF90b2NfdGFibGUuCgkocHJvbG9ndWUpOiBOZXcgZXhwYW5kZXIuCgkobW92ZXNpX2Zyb21fY3IpOiBOZXcgcGF0dGVybi4KCShzdG13KTogTmV3IHBhdHRlcm4uCgkoc2F2ZV9mcHJlZ3Nfc2kpOiBOZXcgcGF0dGVybi4KCShzYXZlX2ZwcmVnc19kaSk6IE5ldyBwYXR0ZXJuLgoKCTIwMDAtMDEtMTkgIEdlb2ZmIEtlYXRpbmcgIDxnZW9mZmtAY3lnbnVzLmNvbT4KCgkqIHJzNjAwMC5tZCAobW92c2kpOiBEb24ndCB1c2UgZm9yY2VfcmVnIHdoZW4gbm9fbmV3X3BzZXVkb3MuCgkobW92ZGkpOiBMaWtld2lzZS4KCShtb3ZoaSk6IExpa2V3aXNlLgoJKG1vdnFpKTogTGlrZXdpc2UuCgoJMjAwMC0wMS0xOSAgR2VvZmYgS2VhdGluZyAgPGdlb2Zma0BjeWdudXMuY29tPgoKCSogcnM2MDAwLm1kIChtb3ZzaV9nb3QpOiAndW5zcGVjIDgnIHJldHVybnMgYSBTSW1vZGUgcmVzdWx0LAoJYXQgcHJlc2VudC4KCShtb3ZzaV9nb3RfaW50ZXJuYWwpOiBMaWtld2lzZS4KCShtb3ZzaV9nb3RfaW50ZXJuYWwrMSk6IExpa2V3aXNlLgoJKHNldF9zcCk6ICd1bnNwZWMgNycgZG9lcyBhIFNJbW9kZSBjbG9iYmVyLgoKCTIwMDAtMDEtMTkgIEdlb2ZmIEtlYXRpbmcgIDxnZW9mZmtAY3lnbnVzLmNvbT4KCgkqIHJzNjAwMC5tZCAoZmxvYXRzaWRmMik6IERvbid0IHVzZSB0aGUgZnBtZW0gInJlZ2lzdGVyIiwganVzdAoJYWxsb2NhdGUgYSBzdGFjayB0ZW1wb3JhcnkuCgkoZmxvYXRzaWRmMl9pbnRlcm5hbCk6IExpa2V3aXNlLgoJKGZsb2F0c2lkZjJfaW50ZXJuYWwrMSk6IExpa2V3aXNlLiAgRG9uJ3QgZG8gYml6emFyZSBoYWNrcwoJd2l0aCB1bnNwZWMuCgkoZmxvYXR1bnNzaWRmMik6IERvbid0IHVzZSB0aGUgZnBtZW0gInJlZ2lzdGVyIiwganVzdAoJYWxsb2NhdGUgYSBzdGFjayB0ZW1wb3JhcnkuCgkoZmxvYXR1bnNzaWRmMl9pbnRlcm5hbCk6IExpa2V3aXNlLgoJKGZsb2F0dW5zc2lkZjJfaW50ZXJuYWwrMSk6IExpa2V3aXNlLiAgRG9uJ3QgZG8gYml6emFyZSBoYWNrcwoJd2l0aCB1bnNwZWMuCgkoZmxvYXRzaWRmMl9sb2FkYWRkcik6IERlbGV0ZS4KCShmbG9hdHNpZGYyX3N0b3JlMSk6IERlbGV0ZS4KCShmbG9hdHNpZGYyX3N0b3JlMik6IERlbGV0ZS4KCShmbG9hdHNpZGYyX2xvYWQpOiBEZWxldGUuCgkoZml4X3RydW5jZGZzaTIpOiBEb24ndCB1c2UgdGhlIGZwbWVtICJyZWdpc3RlciIsIGp1c3QKCWFsbG9jYXRlIGEgc3RhY2sgdGVtcG9yYXJ5LgoJKGZpeF90cnVuY2Rmc2kyX2ludGVybmFsX3NpKTogRGVsZXRlLgoJKGZpeF90cnVuY2Rmc2kyX2ludGVybmFsX2RpKTogRGVsZXRlLgoJKGZpeF90cnVuY2Rmc2kyX2ludGVybmFsKTogTmV3IGluc24uCgkoZml4X3RydW5jZGZzaTJfaW50ZXJuYWwrMSk6IERvbid0IHVzZSB0aGUgZnBtZW0gInJlZ2lzdGVyIi4KCShmaXhfdHJ1bmNkZnNpMl9zdG9yZSk6IERlbGV0ZS4KCShmaXhfdHJ1bmNkZnNpMl9sb2FkKTogRGVsZXRlLgoJKGZjdGl3eik6IFByb2R1Y2UgZ2VuX2ZjdGl3ei4KCgkyMDAwLTAxLTE5ICBHZW9mZnJleSBLZWF0aW5nICA8Z2VvZmZrQGN5Z251cy5jb20+CgoJKiBlYWJpLmggKElOVk9LRV9fbWFpbik6IERlZmluZS4KCSogcnM2MDAwLmMgKHJzNjAwMF9zdGFja19pbmZvKTogRG9uJ3QgaGFuZGxlIGNhbGwgdG8gTkFNRV9fTUFJTgoJc3BlY2lhbGx5LgoJKHJzNjAwMF9lbWl0X3Byb2xvZ3VlKTogTGlrZXdpc2UuCgkqIHJzNjAwMC5oIChzdHJ1Y3QgcnM2MDAwX3N0YWNrKTogRG9uJ3Qga2VlcCB0cmFjayBvZiB3aGV0aGVyCgl0aGlzIGlzIHRoZSBtYWluIHByb2dyYW0uCgoJMjAwMC0wMS0xOSAgR2VvZmYgS2VhdGluZyAgPGdlb2Zma0BjeWdudXMuY29tPgoKCSogcnM2MDAwLmMgKHJzNjAwMF92YV9hcmcpOiBEZWxldGUgc29tZSB1bnVzZWQgdmFyaWFibGVzLgoKCTIwMDAtMDEtMTkgIEdlb2ZmIEtlYXRpbmcgIDxnZW9mZmtAY3lnbnVzLmNvbT4KCgkqIHJzNjAwMC5jIChyczYwMDBfdmFfYXJnKTogT24gQUlYLCBwYWRkaW5nIGZvciBzbWFsbCBhcmd1bWVudHMKCWdvZXMgYWZ0ZXIgdGhlIGFyZ3VtZW50LgoKCTIwMDAtMDEtMTIgIEdlb2ZmIEtlYXRpbmcgIDxnZW9mZmtAY3lnbnVzLmNvbT4KCgkqIHJzNjAwMC5tZDogRG9jdW1lbnQgJ3Vuc3BlYycgdmFsdWVzIHVzZWQuCgkoZXBpbG9ndWUpOiBOZXcgZXhwYW5kZXIuCgkobW92ZXNpX3RvX2NyX29uZSk6IE5ldyBleHBhbmRlci4KCShtb3Zlc2lfdG9fY3IgYW5kIGZvbGxvd2luZyk6IE5ldyBwYXR0ZXJuLgoJKGxtdyk6IE5ldyBwYXR0ZXJuLgoJKHJldHVybl9pbnRlcm5hbF9zaSk6IE5ldyBwYXR0ZXJuLgoJKHJldHVybl9pbnRlcm5hbF9kaSk6IE5ldyBwYXR0ZXJuLgoJKHJldHVybl9hbmRfcmVzdG9yZV9mcHJlZ3Nfc2kpOiBOZXcgcGF0dGVybi4KCShyZXR1cm5fYW5kX3Jlc3RvcmVfZnByZWdzX2RpKTogTmV3IHBhdHRlcm4uCgkqIHJzNjAwMC5oOiBEZWNsYXJlIG5ldyBmdW5jdGlvbnMuCgkqIHJzNjAwMC5jIChyczYwMDBfc3RhY2tfaW5mbyk6IFVzZSBjdXJyZW50X2Z1bmN0aW9uX2lzX2xlYWYKCXJhdGhlciB0aGFuIHJzNjAwMF9jYWxsc19wLgoJKHJzNjAwMF9tYWtlc19jYWxscyk6IERlbGV0ZS4KCShsbXdfb3BlcmF0aW9uKTogTmV3IGZ1bmN0aW9uLgoJKG10Y3JmX29wZXJhdGlvbik6IE5ldyBmdW5jdGlvbi4KCShyczYwMDBfZW1pdF9lcGlsb2d1ZSk6IE5ldyBmdW5jdGlvbi4KCShvdXRwdXRfZXBpbG9nKTogQ2FsbCByczYwMDBfZW1pdF9lcGlsb2d1ZSBhbmQgZmluYWwgaWYKCSFUQVJHRVRfU0NIRURfUFJPTE9HLCBpbnN0ZWFkIG9mIHdyaXRpbmcgdGV4dCB1bmNvbmRpdGlvbmFsbHkuCgoJMjAwMC0wMS0xMiAgR2VvZmYgS2VhdGluZyAgPGdlb2Zma0BjeWdudXMuY29tPgoKCSogYWl4NDMuaCAoU1VCU1VCVEFSR0VUX1NXSVRDSEVTKTogRG9jdW1lbnQgc3dpdGNoZXMuCgkqIGFpeDQxLmggKFNVQlNVQlRBUkdFVF9TV0lUQ0hFUyk6IERvY3VtZW50IHN3aXRjaGVzLgoJKiBhaXguaCAoU1VCVEFSR0VUX1NXSVRDSEVTKTogRG9jdW1lbnQgc3dpdGNoZXMuCgkqIHJzNjAwMC5oOiAoVEFSR0VUX1NXSVRDSEVTKTogRG9uJ3QgcHJpbnQgb3B0aW9ucyB0d2ljZS4gIE1ha2UKCXNjaGVkLXByb2xvZyBhbmQgc2NoZWQtZXBpbG9nIHRoZSBzYW1lLiAgRG9jdW1lbnQgYWxsIHRoZQoJc3dpdGNoZXMuCgkoVEFSR0VUX09QVElPTlMpOiBObyBsb25nZXIgYWxsb3cgLW1kZWJ1Zy0uCgoJMjAwMC0wMS0xMiAgR2VvZmYgS2VhdGluZyAgPGdlb2Zma0BjeWdudXMuY29tPgoKCSogcnM2MDAwLmggKEFTTV9GSUxFX0VORCk6IE1vdmUgdG8gYWl4LmguCgkoRVhUUkFfU0VDVElPTlMpOiBNb3ZlIHRvIGFpeC5oLgoJKFJFQURPTkxZX0RBVEFfU0VDVElPTik6IE1vdmUgdG8gYWl4LmguCgkoRVhUUkFfU0VDVElPTl9GVU5DVElPTlMpOiBNb3ZlIHRvIGFpeC5oLgoJKFNFTEVDVF9TRUNUSU9OKTogTW92ZSB0byBhaXguaC4KCShKVU1QX1RBQkxFU19JTl9URVhUX1NFQ1RJT04pOiBNb3ZlIHRvIGFpeC5oLgoJKElOVF9SRUdOT19QKTogVXNlIHN5bWJvbGljIG5hbWUgZm9yIEFSR19QT0lOVEVSX1JFR05VTS4KCShMSU5LX1JFR0lTVEVSX1JFR05VTSk6IE5ldyBkZWZpbml0aW9uLgoJKFJFVFVSTl9BRERSX1JUWCk6IFVzZSBzeW1ib2xpYyBuYW1lIGZvciBMSU5LX1JFR0lTVEVSX1JFR05VTS4KCShTTE9XX1VOQUxJR05FRF9BQ0NFU1MpOiBEZWZpbmUgaW4gYSB3YXkgc3VpdGFibGUgZm9yIGJvdGgKCUFJWCBhbmQgU1ZSNC4KCSogc3lzdjQuaDogRGVsZXRlIHRoZSBjb2RlIGJldHdlZW4gdGhlIGluY2x1c2lvbiBvZiByczYwMDAuaAoJYW5kIHN2cjQuaC4KCShEV0FSRl9ERUJVR0dJTkdfSU5GTyk6IERvbid0IGRlZmluZSwgaXQncyBkZWZpbmVkIGluIGVsZm9zLmguCgkoRlBfQVJHX01BWF9SRUcpOiBNb3ZlIGdlbmVyaWMgZGVmaW5pdGlvbiB0byByczYwMDAuaC4KCShSUzYwMDBfUkVHX1NBVkUpOiBNb3ZlIGdlbmVyaWMgZGVmaW5pdGlvbiB0byByczYwMDAuaC4KCShSUzYwMDBfU0FWRV9BUkVBKTogTW92ZSBnZW5lcmljIGRlZmluaXRpb24gdG8gcnM2MDAwLmguCgkqIHJzNjAwMC5tZCAoZmxvYXRzaWRmMl9sb2FkYWRkcik6IFRoZSBmaXJzdCBhcmcgaGVyZSBpcyBQbW9kZS4KCShmaXhfdHJ1bmNkZnNpMl9pbnRlcm5hbCk6IFJlbmFtZSB0byBmaXhfdHJ1bmNkZnNpMl9pbnRlcm5hbF9zaS4KCShmaXhfdHJ1bmNkZnNpMl9pbnRlcm5hbF9kaSk6IE5ldyBwYXR0ZXJuLgoJKGZpeF90cnVuY2Rmc2kyX3N0b3JlKTogVGhlIHNlY29uZCBhcmcgaGVyZSBpcyBQbW9kZSB0b28uCgkoZml4X3RydW5jZGZzaTJfbG9hZCk6IFRoZSBzZWNvbmQgYXJnIGhlcmUgaXMgUG1vZGUgdG9vLgoJKHRhYmxlanVtcGRpKTogTm93IHRoYXQgc3dpdGNoIHRhYmxlcyBob2xkIG9ubHkgU0ltb2RlIHZhbHVlcywKCWdjYyBuZWVkcyB0byBrbm93IGhvdyB0byBhZGQgdGhlbSB0byB0aGUgcGMgd2hpY2ggaXMgREltb2RlLgoJKiByczYwMDAuYyAocnM2MDAwX3N0YWNrX2luZm8pOiBVc2Ugc3ltYm9saWMgbmFtZSBmb3IKCUxJTktfUkVHSVNURVJfUkVHTlVNLgoJKG91dHB1dF9taV90aHVuaykgWyFUQVJHRVRfRUxGXTogRG9uJ3QgZGVmaW5lIHNwLCBpdCdzIG5vdCB1c2VkLgoJKG91dHB1dF90b2MpOiBEZWxldGUgdW51c2VkIHZhcmlhYmxlcyBzMSBhbmQgczIuCgkob3V0cHV0X2FzY2lpKTogVXNlIGZwdXRzIG5vdCBmcHJpbnRmIG9uIGEgdmFyaWFibGUgc3RyaW5nLgoKCTIwMDAtMDEtMDcgIERhdmlkIEVkZWxzb2huICA8ZWRlbHNvaG5AZ251Lm9yZz4KCgkqIHJzNjAwMC5jIChwcm9jZXNzb3JfdGFyZ2V0X3RhYmxlKTogQWRkIHBvd2VyMyBhcyBhbGlhcyBmb3IgNjMwLgoJKiBhaXg0My5oOiBSZXZlcnQgQXVnIDIgY2hhbmdlLgoJKEhBU19JTklUX1NFQ1RJT04pOiBEZWZpbmUsIG5vdCB2aXNpYmxlIHlldC4KCShMRF9JTklUX1NXSVRDSCk6IERlZmluZSwgbm90IHZpc2libGUgeWV0LgoJKiB0LWFpeDQzIChNVUxUSUxJQl9PUFRJT05TKTogUmV2ZXJ0IEF1ZyAyIGNoYW5nZS4KCgkyMDAwLTAxLTA0ICBKb2VsIFNoZXJyaWxsIChqb2VsQE9BUmNvcnAuY29tPgoKCSogY29uZmlnL3JzNjAwMC9ydGVtcy5oOiBJbmNsdWRlIGNvbmZpZy9ydGVtcy5oLgoKCTIwMDAtMDEtMDQgIERhdmlkIEVkZWxzb2huICA8ZWRlbHNvaG5AZ251Lm9yZz4KCgkqIHJzNjAwMC5oIChIQU5ETEVfUFJBR01BX1BBQ0spOiBEZWZpbmUuCgkoU0xPV19VTkFMSUdORURfQUNDRVNTKTogRGVmaW5lLgoJKENBU0VfVkVDVE9SX01PREUpOiBBbHdheXMgdXNlIDMyLWJpdCBvZmZzZXRzLgoJKEFTTV9GSUxFX0VORCk6IEdlbmVyYXRlIDY0LWJpdCBzeW1ib2wgaW4gNjQtYml0IG1vZGUuCgkoRVhUUkFfU0VDVE9JTl9GVU5DVElPTlMpOiBJbmRlbnQgLmNzZWN0IHBzZXVkby1vcC4KCSh0b2Nfc2VjdGlvbik6IExpa2V3aXNlIGFuZCAudG9jIHBzZXVkby1vcC4KCShBU01fREVDTEFSRV9GVU5DVElPTik6IExpa2V3aXNlLiAgQWxpZ24gdGV4dCBtb3JlIHN0cmljdGx5IGluCgk2NC1iaXQgbW9kZS4KCShURVhUX1NFQ1RJT05fQVNNX09QKTogTGlrZXdpc2UuCgkoQVNNX09VVFBVVF9BRERfVkVDX0VMVCwgQVNNX09VVFBVVF9BRERSX0RJRkZfRUxUKTogQWx3YXlzIHVzZQoJMzItYml0IG9mZnNldHMuCgoJMTk5OS0xMi0xNyAgSmFrdWIgSmVsaW5layAgPGpha3ViQHJlZGhhdC5jb20+CgoJKiBjb25maWcvcnM2MDAwL3JzNjAwMC5oIChUQVJHRVRfUE9XRVJQQzY0KTogTWFrZSBzdXJlCglVTklUU19QRVJfV09SRCBhbmQgQklUU19QRVJfV09SRCBhcmUgY29tcGlsZSB0aW1lIGNvbnN0YW50cyB3aGVuCgljb21waWxpbmcgbGliZ2NjMi4KCgkyMDAwLTAxLTA2ICBGcmFueiBTaXJsIDxGcmFuei5TaXJsLWtlcm5lbEBsYXV0ZXJiYWNoLmNvbT4KCgkqIHJzNjAwMC5oOiBNb3ZlIG1vcmUgc3R1ZmYgZnJvbSBoZXJlLi4uCgkqIGFpeC5oOiB0byBoZXJlLgoJKiBzeXN2NC5oOiBDbGVhbnVwIGFjY29yZGluZ2x5LgoJKiBuZXR3YXJlLmg6IExpa2V3aXNlCgoJMjAwMC0wMS0wNSAgRnJhbnogU2lybCA8RnJhbnouU2lybC1rZXJuZWxAbGF1dGVyYmFjaC5jb20+CgoJKiByczYwMDAuaDogQ29udGludWUgY2xlYW51cC4KCSogYWl4Lmg6IExpa2V3aXNlLgoJKiBseW54Lmg6IExpa2V3aXNlLgoJKiBuZXR3YXJlLmg6IExpa2V3aXNlLgoJKiBzb2wyLmg6IExpa2V3aXNlLgoJKiBzeXN2NC5oOiBMaWtld2lzZS4KCSogd2luLW50Lmg6IExpa2V3aXNlLgoKCSogcnM2MDAwLmggKFRBUkdFVF9TV0lUQ0hFUyk6IEFkZCBkZXNjcmlwdGlvbnMuCgkoVEFSR0VUX09QVElPTlMpOiBMaWtld2lzZS4KCgkqIHN5c3Y0LmggKFNVQlRBUkdFVF9TV0lUQ0hFUyk6IEFkZCBkZXNjcmlwdGlvbnMuCgkoU1VCVEFSR0VUX09QVElPTlMpOiBMaWtld2lzZS4KCgkqIHJzNjAwMC5tZDogRml4IGNvbXBpbGUgdGltZSB3YXJuaW5ncy4KCgkyMDAwLTAxLTA0ICBHZW9mZiBLZWF0aW5nICA8Z2VvZmZrQGN5Z251cy5jb20+CgoJdnh3b3JrcyBwYXRjaGVzIGZyb20gdGhlIEN5Z251cyB0cmVlIG9yaWdpbmFsbHkgYnkKCU1pY2hhZWwgTWVpc3NuZXIgPG1laXNzbmVyQGN5Z251cy5jb20+IGFuZCBWbGFkaW1pciBNYWthcm92Cgk8dm1ha2Fyb3ZAY3lnbnVzLmNvbT4uCgkqIHN5c3Y0LmggKFNVQlRBUkdFVF9TV0lUQ0hFUyk6IEFkZCB2eHdvcmtzLgoJKEVOREZJTEVfU1BFQyk6IExpa2V3aXNlLgoJKExJQl9WWFdPUktTX1NQRUMpOiBOZXcgbWFjcm8uCgkoU1RBUlRGSUxFX1ZYV09SS1NfU1BFQyk6IE5ldyBtYWNyby4KCShFTkRGSUxFX1ZYV09SS1NfU1BFQyk6IE5ldyBtYWNyby4KCShMSU5LX1NUQVJUX1ZYV09SS1NfU1BFQyk6IE5ldyBtYWNyby4KCShMSU5LX09TX1ZYV09SS1NfU1BFQyk6IE5ldyBtYWNyby4KCShDUFBfT1NfVlhXT1JLU19TUEVDKTogTmV3IG1hY3JvLgoJKFNVQlRBUkdFVF9FWFRSQV9TUEVDUyk6IEFkZCBhbGwgdGhlIHZ4d29ya3Mgc3BlY3MuCgkqIHZ4cHBjLmg6IFJld3JpdGUgdG8gdXNlIHByb3BlciBjb25maWd1cmF0aW9uIG1ldGhvZC4KCSogdnhwcGNsZS5oOiBOZXcgZmlsZS4KCSogLi4vLi4vY29uZmlndXJlLmluOiBBZGQgcG93ZXJwY2xlLXdycy12eHdvcmtzKi4KCSogLi4vLi4vY29uZmlndXJlOiBSZWJ1aWx0LgoKCTIwMDAtMDEtMDQgIEdlb2ZmIEtlYXRpbmcgIDxnZW9mZmtAY3lnbnVzLmNvbT4KCglMb3RzIG9mIGNoYW5nZXMgdG8gcnM2MDAwLmgsIHN5c3Y0LmgsIGFpeC5oLAoJYWl4MzEuaCwgYWl4M25ld2FzLmgsIGFpeDQxLmgsIGFpeDQzLmgsIGJlb3MuaCwKCXdpdGggdGhlIGFpbSB0aGF0IHJzNjAwMC5oIGlzIHRoZSBmaXJzdCBoZWFkZXIKCWluY2x1ZGVkIGFuZCB0aGUgb3RoZXJzIG92ZXJyaWRlIGl0LgoJKiBhaXguaDogTmV3IGZpbGUuCgoJKiB4LWFpeDQxLWdsZDogUmVtb3ZlLgoJKiB4LWFpeDQzOiBSZW1vdmUuCgkqIHgtYWl4NDE6IFJlbW92ZSB0YXJnZXQtc3BlY2lmaWMgc3dpdGNoZXMsIGFuZCBkb24ndCBzcGVjaWZ5CgktV2wsLWJiaWd0b2MgYXMgd2UgZG9uJ3QgbmVlZCBpdCBhbnkgbW9yZS4KCSogLi4vLi4vY29uZmlndXJlLmluOiBVc2UgeC1haXg0MSBmb3IgcHBjIEFJWCA0LjEgYW5kIGFib3ZlLgoJVXNlIHQtYWl4NDMgZm9yIEFJWCA0LjMgYW5kIGFib3ZlLgoJKiAuLi8uLi9jb25maWd1cmU6IFJlZ2VuZXJhdGVkLgoKCSogcnM2MDAwLmggKFRBUkdFVF9TV0lUQ0hFUyk6IEFkZCBzb21lIGluaXRpYWwgcHJvbG9nLXNjaGVkdWxpbmcKCW9wdGlvbnMsIHRoYXQgZG9uJ3QgZG8gYW55dGhpbmcgeWV0LgoJKE1BU0tfU0NIRURfUFJPTE9HKTogTmV3IG1hY3JvLgoJKE1BU0tfU0NIRURfRVBJTE9HKTogTmV3IG1hY3JvLgoJKFRBUkdFVF9TQ0hFRF9QUk9MT0cpOiBOZXcgbWFjcm8uCgkoVEFSR0VUX1NDSEVEX0VQSUxPRyk6IE5ldyBtYWNyby4KCgkyMDAwLTAxLTA0ICBHZW9mZiBLZWF0aW5nICA8Z2VvZmZrQGN5Z251cy5jb20+CgoJKiByczYwMDAuYzogQ29ycmVjdCBjb21tZW50LCB0aGUgYG1pbmltYWwnIFRPQ3MgYXJlIGFjdHVhbGx5CglvbmUgcGVyIHRyYW5zbGF0aW9uIHVuaXQsIG5vdCBvbmUgcGVyIGZ1bmN0aW9uLgoJKG91dHB1dF90b2MpOiBBbHNvIGRvIGR1cGxpY2F0ZSBjb25zdGFudCBlbGltaW5hdGlvbgoJZm9yIHBlci10cmFuc2xhdGlvbi11bml0IFRPQ3MuCgoJKiByczYwMDAubWQgKG5vbmxvY2FsX2dvdG9fcmVjZWl2ZXIpOiBQdXQgaXQgYmFjayBhcyBiZWZvcmUuICBBZGQKCWEgY29tbWVudCBleHBsYWluaW5nIF9leGFjdGx5XyB3aGVuIHRoaXMgcGF0dGVybiBnZXRzIHVzZWQuCgkoYnVpbHRpbl9zZXRqbXBfcmVjZWl2ZXIpOiBOZXcgcGF0dGVybiBmb3IgYmV0dGVyIGNsYXJpdHkuCgkoaW5pdF92NF9waWMpOiBNb3ZlIGl0IGludG8gYSBzZWN0aW9uIGRlYWxpbmcgd2l0aCBUT0MgcmVnaXN0ZXJzLgoKCTE5OTktMTItMzAgIEdlb2ZmIEtlYXRpbmcgIDxnZW9mZmtAY3lnbnVzLmNvbT4KCgkqIHJzNjAwMC5jICh0b2NfaGFzaF90YWJsZSk6IE5ldyB2YXJpYWJsZS4KCShyczYwMDBfaGFzaF9jb25zdGFudCk6IE5ldyBmdW5jdGlvbi4KCSh0b2NfaGFzaF9mdW5jdGlvbik6IE5ldyBmdW5jdGlvbi4KCSh0b2NfaGFzaF9lcSk6IE5ldyBmdW5jdGlvbi4KCSh0b2NfaGFzaF9tYXJrX2VudHJ5KTogTmV3IGZ1bmN0aW9uLgoJKHRvY19oYXNoX21hcmtfdGFibGUpOiBOZXcgZnVuY3Rpb24uCgkob3V0cHV0X3RvYyk6IERvbid0IG91dHB1dCBkdXBsaWNhdGUgVE9DIGVudHJpZXMgaW4KCWEgc2luZ2xlIGZpbGUuCgkocnM2MDAwX2FkZF9nY19yb290cyk6IEFkZCB0aGUgaGFzaCB0YWJsZSBhcyBhIEdDIHJvb3QuCgkqIHQtYWl4NDM6IE1vdmUgQVJfRk9SX1RBUkdFVCBhbmQgQ0xJQiBoZXJlIGZyb20geC1haXg0MywKCXdoZXJlIHRoZXkgY2xlYXJseSBzaG91bGRuJ3QgYmUuICBUaGlzIG1heSBuZWVkIHRvIGJlIGZpeGVkCglsYXRlciB3aGVuIHRoZXJlIGlzIGEgR05VIGFyIGZvciBBSVguCgkqIHgtYWl4NDM6IERvbid0IGRlZmluZSBDTElCIG9yIEFSX0ZPUl9UQVJHRVQuCglEb24ndCBkZWZpbmUgQk9PVF9MREZMQUdTIGFzIGl0IGlzIG5vdyBub3QgbmVjZXNzYXJ5LgoKCTE5OTktMTItMjkgIEdlb2ZmIEtlYXRpbmcgIDxnZW9mZmtAY3lnbnVzLmNvbT4KCgkqIHJzNjAwMC5jIChyczYwMDBfYnVpbGRfdmFfbGlzdCk6IFVzZSAnY2hhciAqJyByYXRoZXIgdGhhbiAndm9pZCAqJwoJZm9yIHZhX2xpc3Qgb24gQUlYLiAgVXNlIHVuc2lnbmVkX2NoYXJfdHlwZV9ub2RlIHJhdGhlciB0aGFuCgljb25zdHJ1Y3Rpbmcgb3VyIG93biB2ZXJzaW9uIG9uIHN2cjQuCgoJMTk5OS0xMi0xNyAgR2VvZmYgS2VhdGluZyAgPGdlb2Zma0BjeWdudXMuY29tPgoKCSogdHJhbXAuYXNtIChfX3RyYW1wb2xpbmVfc2l6ZSk6IERlbGV0ZSBDWUdOVVMgTE9DQUwgY29tbWVudCwKCXNpbmNlIHBhdGVudGx5IGl0J3Mgbm90LgoKCTE5OTktMTItMDggIEdlb2ZmIEtlYXRpbmcgIDxnZW9mZmtAY3lnbnVzLmNvbT4KCgkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLm1kIChub25sb2NhbF9nb3RvX3JlY2VpdmVyKTogVHVybiBpbnRvCglkZWZpbmVfZXhwYW5kL2RlZmluZV9pbnNuIHBhaXIsIGFuZCBoYW5kbGUgcmVzdG9yZSBvZiB0aGUKCVNWUjQgLWZwaWMgcmVnaXN0ZXIuCgpXZWQgTWFyIDE1IDE1OjQzOjM4IDIwMDAgIEplZmZyZXkgQSBMYXcgIChsYXdAY3lnbnVzLmNvbSkKCgkqIGFjY29uZmlnLmggKEhBVkVfR0FTX1dFQUspOiBOZXcgZGVmaW5lLgoJKiBjb25maWd1cmUuaW4gKGFzc2VtYmxlciB3ZWFrIHN1cHBvcnQpOiBDaGVjayBmb3IgLndlYWsgc3VwcG9ydC4KCSogY29uZmlnLmluLCBjb25maWd1cmU6IFJlYnVpbHQuCgkqIHBhL3NvbS5oIChNQUtFX0RFQ0xfT05FX09OTFksIEFTTV9XRUFLRU5fTEFCRUwpOiBPbmx5IGRlZmluZSBpZgoJSEFWRV9HQVNfV0VBSyBpcyBkZWZpbmVkLgoKMjAwMC0wMy0xNSAgTmljayBDbGlmdG9uICA8bmlja2NAY3lnbnVzLmNvbT4KCgkqIGNvbmZpZy9hcm0vYXJtLmMgKGFybV9vdXRwdXRfZXBpbG9ndWUpOiBEbyBub3QgcGFzcyAlYyB0bwoJYXNtX2ZwcmludGYoKS4KCjIwMDAtMDMtMTUgIFphY2sgV2VpbmJlcmcgIDx6YWNrQHdvbGVyeS5jdW1iLm9yZz4KCgkqIGNwcGZpbGVzLmMgKG9wZW5faW5jbHVkZV9maWxlKTogTmV3IGZ1bmN0aW9uLgoJKGZpbmRfaW5jbHVkZV9maWxlLCBjcHBfcmVhZF9maWxlKTogVXNlIGl0LgoKMjAwMC0wMy0xNSAgSmFzb24gTWVycmlsbCAgPGphc29uQGNhc2V5LmN5Z251cy5jb20+CgoJKiBjcHBoYXNoLmMgKGR1bXBfaGFzaF9oZWxwZXIpOiBUYWtlIHRoZSBzbG90LCBub3QgdGhlIGVsZW1lbnQuCgpXZWQgTWFyIDE1IDE0OjI4OjU0IDIwMDAgIEphc29uIEVja2hhcmR0ICA8amxlQGN5Z251cy5jb20+CgoJKiBmbG93LmMgKHZlcmlmeV9mbG93X2luZm8pOiBDaGVjayBmb3IgdW5jb25kaXRpb25hbCByZXR1cm4uCgpXZWQgTWFyIDE1IDExOjM0OjI3IDIwMDAgIEppbSBXaWxzb24gIDx3aWxzb25AY3lnbnVzLmNvbT4KCgkqIGNvbmZpZy9pYTY0L2lhNjQubWQgKHJlc3RvcmVfc3RhY2tfbm9ubG9jYWwpOiBOZXcuCgkqIGNvbmZpZy9pYTY0L2xpYjFmdW5jcy5hc20gKF9faWE2NF9ub25sb2NhbF9nb3RvKTogRGVsZXRlIHBhZGRpbmcgbm9wLgoJKF9faWE2NF9yZXN0b3JlX3N0YWNrX25vbmxvY2FsKTogTmV3LgoJKiBjb25maWcvaWE2NC90LWlhNjQgKExJQjFBU01GVU5DUyk6IEFkZCBfX3Jlc3RvcmVfc3RhY2tfbm9ubG9jYWwuCgoyMDAwLTAzLTE1ICBBbGV4YW5kcmUgT2xpdmEgIDxvbGl2YUBsc2QuaWMudW5pY2FtcC5icj4KCgkqIGNwcGhhc2guYyAoY29sbGVjdF9mb3JtYWxfcGFyYW1ldGVycyk6IERvIG5vdCBjb21wbGFpbiBhYm91dAoJcGFyYW1ldGVyIG5hbWVzIHRoYXQganVzdCBzdGFydCB3aXRoIGBfX1ZBX0FSR1NfXycuCgpXZWQgTWFyIDE1IDEzOjI2OjU4IE1FVCAyMDAwICBKYW4gSHViaWNrYSAgPGpoQHN1c2UuY3o+CgoJKiBpMzg2Lm1kIChtb3ZoaV8xKTogUHJvbW90ZSBtb3Z3IGltbSwgcmVnIHRvIG1vdmwgaW1tLCByZWcgYW5kCgltb3Z3IHJlZywgcmVnIHRvIG1vdnp3bCByZWcsIHJlZyBvbiBQQVJUSUFMX1JFR0lTVEVSX1NUQUxMIG1hY2hpbmVzLgoJKiBpMzg2LmMgKHBlbnRpdW1wcm9fY29zdCk6IFNldCBtdWwgY29zdCB0byA0LgoJKHg4Nl91c2VfbW92eCk6IFNldCBmb3IgUFByby4KCldlZCBNYXIgMTUgMTM6MDc6MDUgTUVUIDIwMDAgIEphbiBIdWJpY2thICA8amhAc3VzZS5jej4KCgkqIGkzODYubWQgKGl4ODZfY29tcHV0ZV9mcmFtZV9zaXplKTogc3RhY2tfYWxpZ25tZW50X25lZWRlZCBpcwoJU1RBQ0tfQk9VTkRBUlkgZm9yIGVtcHR5IGZyYW1lcyBub3cuCgoyMDAwLTAzLTE0ICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogc3Rvci1sYXlvdXQuYyAobGF5b3V0X3VuaW9uKTogUmVtb3ZlLgoJKGxheW91dF91bmlvbl9maWVsZCk6IE5ldyBmdW5jdGlvbiwgc3BsaXQgb3V0IGZyb20gbGF5b3V0X3VuaW9uLgoJKGZpbmlzaF91bmlvbl9sYXlvdXQpOiBMaWtld2lzZS4KCShsYXlvdXRfZmllbGQpOiBIYW5kbGUgdW5pb25zIGJ5IGNhbGxpbmcgbGF5b3V0X3VuaW9uX2ZpZWxkLgoJKGZpbmlzaF9yZWNvcmRfbGF5b3V0KTogSGFuZGxlIHVuaW9ucy4KCShsYXlvdXRfdHlwZSk6IENvbWJpbmUgUkVDT1JEX1RZUEUsIFVOSU9OX1RZUEUsIGFuZAoJUVVBTF9VTklPTl9UWVBFIGhhbmRsaW5nLgoKV2VkIEZlYiAyMyAxMzowMDowNiBDRVQgMjAwMCAgSmFuIEh1Ymlja2EgIDxqaEBzdXNlLmN6PgoKCSogZmxvdy5jIChmaXh1cF9yZW9yZGVyX2NoYWluKTogQXZvaWQgZG91YmxlIGxhYmVscyBpbiB0aGUgYmFzaWMgYmxvY2s7CgllbmQgb2YgYmFzaWMgYmxvY2sgaXMganVtcF9pbnNuLCBub3QgYmFycmllcjsgdXNlIGNyZWF0ZV9iYXNpY19ibG9jawoJaW5zdGVhZCBvZiBjcmVhdGluZyBiYXNpYyBibG9jayBieSBoYW5kLgoKMjAwMC0wMy0xNCAgSmFzb24gRWNraGFyZHQgIDxqbGVAY3lnbnVzLmNvbT4KCgkqIGZsb3cuYyAocmVvcmRlcl9iYXNpY19ibG9ja3MpOiBBY2NvdW50IGZvciBiYXJyaWVycyB3aGVuIHdyaXRpbmcKCW92ZXIgTkVYVF9JTlNOIChsYXN0X2JiLT5lbmQpLgoJKHZlcmlmeV9mbG93X2luZm8pOiBBZGQgY2hlY2sgZm9yIG1pc3NpbmcgYmFycmllcnMuCgoyMDAwLTAzLTE0ICBHcmVnIE1jR2FyeSAgPGdrbUBnbnUub3JnPgoKCSogYy1sZXguaCAoZW51bSByaWQpOiBBZGQgUklEX0JPVU5ERUQgJiBSSURfVU5CT1VOREVELgoJKiBjLWxleC5jIChpbml0X2xleCk6IEhhbmRsZSBSSURfQk9VTkRFRCAmIFJJRF9VTkJPVU5ERUQuCgkqIGMtcGFyc2UuZ3BlcmYgKF9fYm91bmRlZCwgX19ib3VuZGVkX18sIF9fcHRyYmFzZSwgX19wdHJiYXNlX18sCglfX3B0cmV4dGVudCwgX19wdHJleHRlbnRfXywgX19wdHJ2YWx1ZSwgX19wdHJ2YWx1ZV9fLAoJX191bmJvdW5kZWQsIF9fdW5ib3VuZGVkX18pOiBOZXcga2V5d29yZHMuCgkqIGMtcGFyc2UuaW4gKFBUUl9WQUxVRSBQVFJfQkFTRSBQVFJfRVhURU5UKTogTmV3IHRva2Vucy4KCSogYy1wYXJzZS55LCBjLXBhcnNlLmMsIGMtcGFyc2UuaDogUmVnZW5lcmF0ZS4KCSogb2JqYy9vYmpjLXBhcnNlLnksIG9iamMvb2JqYy1wYXJzZS5jOiBSZWdlbmVyYXRlLgoKMjAwMC0wMy0xNCAgQmVybmQgU2NobWlkdCAgPGJlcm5kc0BjeWdudXMuY28udWs+CgoJKiBjc2VsaWIuaDogTmV3IGZpbGUuCgkqIGFsaWFzLmM6IEluY2x1ZGUgImNzZWxpYi5oIi4KCShmaXhlZF9zY2FsYXJfYW5kX3Zhcnlpbmdfc3RydWN0X3ApOiBBY2NlcHQgdGhlIGFkZHJlc3NlcyBvZiB0aGUKCU1FTXMgYXMgdHdvIG5ldyBhcmd1bWVudHMuCgkoZ2V0X2FkZHIpOiBOZXcgc3RhdGljIGZ1bmN0aW9uLgoJKGZpbmRfYmFzZV90ZXJtKTogSGFuZGxlIFZBTFVFcy4KCShtZW1yZWZzX2NvbmZsaWN0X3ApOiBMaWtld2lzZS4KCSh0cnVlX2RlcGVuZGVuY2UpOiBDYWxsIGdldF9hZGRyIG9uIHRoZSBhZGRyZXNzZXMuCglDYWxsIGZpeGVkX3NjYWxhcl9hbmRfdmFyeWluZ19zdHJ1Y3RfcCB3aXRoIGFkZHJlc3NlcyB0aGF0IGhhdmUgYmVlbgoJcGFzc2VkIHRocm91Z2ggZ2V0X2FkZHIgYW5kIGNhbm9uX3J0eC4KCSh3cml0ZV9kZXBlbmRlbmNlX3ApOiBNb3ZlIERJRkZFUkVOVF9BTElBU19TRVRTX1AgdGVzdCBmb3IgY29uc2lzdGVuY3kKCXdpdGggdHJ1ZV9kZXBlbmRlbmNlLgoJQ2FsbCBnZXRfYWRkciBvbiB0aGUgYWRkcmVzc2VzOyBkb24ndCBjYWxsIGNhbm9uX3J0eCBvbiB0aGUgTUVNcy4KCSogbG9vcC5jOiBJbmNsdWRlICJjc2VsaWIuaCIuCgkobG9hZF9tZW1zKTogUHJvY2VzcyBleHRlbmRlZCBiYXNpYyBibG9jayB0aGF0IGVudGVycyB0aGUgbG9vcCB3aXRoCgljc2VsaWIuICBVc2UgdGhhdCBpbmZvcm1hdGlvbiB0byBjaGFuZ2UgaW5pdGlhbGl6YXRpb24gb2YgdGhlIHNoYWRvdwoJcmVnaXN0ZXIgc28gdGhhdCBhIGNvbnN0YW50IGVxdWl2YWxlbmNlIGlzIHNlZW4gYnkgbGF0ZXIgcGFzc2VzLgoJKiByZWxvYWQxLmM6IEluY2x1ZGUgImNzZWxpYi5oIi4KCShyZWxvYWRfY3NlX2ludmFsaWRhdGVfcmVnbm8pOiBEZWxldGUgZnVuY3Rpb24uCgkocmVsb2FkX2NzZV9tZW1fY29uZmxpY3RfcCk6IExpa2V3aXNlLgoJKHJlbG9hZF9jc2VfaW52YWxpZGF0ZV9tZW0pOiBMaWtld2lzZS4KCShyZWxvYWRfY3NlX2ludmFsaWRhdGVfcnR4KTogTGlrZXdpc2UuCgkocmVsb2FkX2NzZV9yZWdub19lcXVhbF9wKTogTGlrZXdpc2UuCgkocmVsb2FkX2NzZV9jaGVja19jbG9iYmVyKTogTGlrZXdpc2UuCgkocmVsb2FkX2NzZV9yZWNvcmRfc2V0KTogTGlrZXdpc2UuCgkocmVnX3ZhbHVlcyk6IERlbGV0ZSBzdGF0aWMgdmFyaWFibGUuCgkoaW52YWxpZGF0ZV9yZWdub19ydHgpOiBMaWtld2lzZS4KCShyZWxvYWRfY3NlX2RlbGV0ZV9ub29wX3NldCk6IE5ldyBzdGF0aWMgZnVuY3Rpb24uCgkocmVsb2FkX2NzZV9zaW1wbGlmeSk6IE5ldyBzdGF0aWMgZnVuY3Rpb24sIGJyb2tlbiBvdXQgb2YKCXJlbG9hZF9jc2VfcmVnc18xLgoJKHJlbG9hZF9jc2Vfbm9vcF9zZXRfcCk6IERlbGV0ZSB1bnVzZWQgYXJndW1lbnQgSU5TTi4KCUp1c3QgY2FsbCBydHhfZXF1YWxfZm9yX2NzZWxpYl9wIG9uIHNldCBzb3VyY2UgYW5kIGRlc3RpbmF0aW9uLgoJKHJlbG9hZF9jc2VfcmVnc18xKTogQnJlYWsgb3V0IHNvbWUgY29kZSBpbnRvIHJlbG9hZF9jc2Vfc2ltcGxpZnkgYW5kCglyZWxvYWRfY3NlX2RlbGV0ZV9ub29wX3NldC4gIERlbGV0ZSBjb2RlIHRvIGtlZXAgdHJhY2sgb2YgdmFsdWVzOyB1c2UKCWNzZWxpYiBmdW5jdGlvbnMgaW5zdGVhZC4gIERlbGV0ZSBjb2RlIHRvIHB1c2gvcG9wIG9ic3RhY2tzLgoJKHJlbG9hZF9jc2Vfc2ltcGxpZnlfc2V0KTogVXNlIGNzZWxpYiB0byBmaW5kIGVxdWl2YWxlbnQgdmFsdWVzLgoJRGVsZXRlIGNvZGUgdG8gcHVzaC9wb3Agb2JzdGFja3MuCgkocmVsb2FkX2NzZV9zaW1wbGlmeV9vcGVyYW5kcyk6IExpa2V3aXNlLgoJKiBydGwuZGVmIChWQUxVRSk6IE5ldyBydHggY29kZS4KCSogcnRsLmggKHVuaW9uIHJ0dW5pb25fZGVmKTogTmV3IGVsdCBydF9jc2VsaWIuCgkoWDBDU0VMSUIsIENTRUxJQl9WQUxfUFRSKTogTmV3IG1hY3Jvcy4KCSogc2ltcGxpZnlfcnR4LmM6IEluY2x1ZGUgImdnYy5oIiwgIm9ic3RhY2suaCIsICJjc2VsaWIuaCIuCgkobmV3X2VsdF9saXN0LCBuZXdfZWx0X2xvY19saXN0LCB1bmNoYWluX29uZV92YWx1ZSwgY2xlYXJfdGFibGUsCgl1bmNoYWluX29uZV9lbHRfbGlzdCwgdW5jaGFpbl9vbmVfZWx0X2xvY19saXN0LCBjaGVja191c2VsZXNzX3ZhbHVlcywKCWRpc2NhcmRfdXNlbGVzc19sb2NzLCBkaXNjYXJkX3VzZWxlc3NfdmFsdWVzLCBlbnRyeV9hbmRfcnR4X2VxdWFsX3AsCgloYXNoX3J0eCwgbmV3X2NzZWxpYl92YWwsIGFkZF9tZW1fZm9yX2FkZHIsIGdldF92YWx1ZV9oYXNoLAoJY3NlbGliX2xvb2t1cF9tZW0sIGNzZWxpYl9zdWJzdF90b192YWx1ZXMsIGNzZWxpYl9pbnZhbGlkYXRlX3JlZ25vLAoJY3NlbGliX21lbV9jb25mbGljdF9wLCBjc2VsaWJfaW52YWxpZGF0ZV9tZW0sIGNzZWxpYl9pbnZhbGlkYXRlX3J0eCwKCWNzZWxpYl9yZWNvcmRfc2V0LCBjc2VsaWJfcmVjb3JkX3NldHMpOiBOZXcgc3RhdGljIGZ1bmN0aW9ucy4KCShjc2VsaWJfbG9va3VwLCBjc2VsaWJfdXBkYXRlX3ZhcnJheV9zaXplcywgY3NlbGliX2luaXQsCgljc2VsaWJfZmluaXNoLCBjc2VsaWJfcHJvY2Vzc19pbnNuLCBydHhfZXF1YWxfZm9yX2NzZWxpYl9wLAoJcmVmZXJlbmNlc192YWx1ZV9wKTogTmV3IGZ1bmN0aW9ucy4KCShNQVhfVVNFTEVTU19WQUxVRVMsIFJFR19WQUxVRVMpOiBOZXcgbWFjcm9zLgoJKHRhYmxlLCBjc2VsaWJfY3VycmVudF9pbnNuLCBuZXh0X3Vua25vd25fdmFsdWUsIGNzZWxpYl9ucmVncywKCW5fdXNlbGVzc192YWx1ZXMsIHJlZ192YWx1ZXMsIGNhbGxtZW0sIGNzZWxpYl9vYnN0YWNrLAoJY3NlbGliX3N0YXJ0b2JqLCBlbXB0eV92YWxzLCBlbXB0eV9lbHRfbGlzdHMsIGVtcHR5X2VsdF9sb2NfbGlzdHMpOgoJTmV3IHN0YXRpYyB2YXJpYWJsZXMuCgkqIHZhcnJheS5oICh1bmlvbiB2YXJyYXlfZGF0YV90YWcpOiBOZXcgZWx0IHRlLgoJKFZBUlJBWV9FTFRfTElTVF9JTklULCBWQVJSQVlfRUxUX0xJU1QpOiBOZXcgbWFjcm9zLgoJKiBNYWtlZmlsZS5pbiAocmVsb2FkMS5vLCBsb29wLm8sIHNpbXBsaWZ5LXJ0eC5vLCBhbGlhcy5vKTogVXBkYXRlCglkZXBlbmRlbmNpZXMuCgoyMDAwLTAzLTE0ICBOaWNrIENsaWZ0b24gIDxuaWNrY0BjeWdudXMuY29tPgoKCSogZ2NjLmMgKGRvX3NwZWNfMSk6IENhdGNoIHRoZSBjYXNlIHdoZXJlICUqIGlzIHVzZWQgaW4gYQoJc3Vic3RpdHV0aW9uIHBhdHRlcm4sIGJ1dCBpdCBoYXMgbm90IGJlZW4gaW5pdGlhbGl6ZWQuCglJc3N1ZSBhIG1lYW5pbmdmdWwgZXJyb3IgbWVzc2FnZSBpZiBhbiB1bnJlY29nbml6ZWQgb3BlcmF0b3IKCWlzIGVuY291bnRlcmVkIGluIGEgc3BlYyBzdHJpbmcuCgoyMDAwLTAzLTE0ICBSaWNoYXJkIEVhcm5zaGF3IDxyZWFybnNoYUBhcm0uY29tPgoKCSogZnVuY3Rpb24uYyAocHJlcGFyZV9mdW5jdGlvbl9zdGFydCk6IENvcnJlY3RseSBpbml0aWFsaXplCgljZnVuLT5zdGFja19hbGlnbm1lbnRfbmVlZGVkLgoKMjAwMC0wMy0xNCAgWmFjayBXZWluYmVyZyAgPHphY2tAd29sZXJ5LmN1bWIub3JnPgoKCSogY3BwZmlsZXMuYyAoZmluZF9pbmNsdWRlX2ZpbGUpOiBEb24ndCBhc3N1bWUgbnNob3J0IGlzIGEKCXN1YnN0cmluZyBvZiBuYW1lLgoKVHVlIE1hciAxNCAwODo0MjoyMSAyMDAwICBKZWZmcmV5IEEgTGF3ICAobGF3QGN5Z251cy5jb20pCgoJKiBjb25maWd1cmUuaW4gKGhwcGEgY29uZmlndXJhdGlvbnMpOiBBZGQgcGEzMi1yZWdzLmggdG8gdGhlCglsaXN0IG9mIHRtIGZpbGVzIGFzIGFwcHJvcHJpYXRlLgoJKiBjb25maWd1cmU6IFJlYnVpbHQuCgkqIHBhLmMgKGNvbXB1dGVfZnJhbWVfc2l6ZSk6IFJlbW92ZSBleHBsaWNpdCBrbm93bGVkZ2UgYWJvdXQgRlAKCXJlZ2lzdGVyIG51bWJlcmluZy4KCShocHBhX2V4cGFuZF9wcm9sb2d1ZSwgaHBwYV9leHBhbmRfZXBpbG9ndWUpOiBMaWtld2lzZS4KCShmbXB5YWRkb3BlcmFuZHMsIGZtcHlzdWJvcGVyYW5kcyk6IExpa2V3aXNlLgoJKiBwYS5oOiBSZW1vdmUgdmFyaW91cyBkZWZpbml0aW9ucyB3aGljaCBkZXBlbmQgb24ga25vd2luZwoJaG93IHJlZ2lzdGVycyBhcmUgbnVtYmVyZWQuCgkqIHBhMzItcmVncy5oOiBOZXcgZmlsZSB3aXRoIFBBMzIgcmVnaXN0ZXIgbnVtYmVyaW5nIHNwZWNpZmljCglkZWZpbml0aW9ucy4KCjIwMDAtMDMtMTQgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgoJKiByZWdtb3ZlLmMgKGNvbWJpbmVfc3RhY2tfYWRqdXN0bWVudHMpOiBOZXcuCgkoc3RhY2tfbWVtcmVmX3AsIHNpbmdsZV9zZXRfZm9yX2NzYSk6IE5ldy4KCShmcmVlX2NzYV9tZW1saXN0LCByZWNvcmRfb25lX3N0YWNrX21lbXJlZik6IE5ldy4KCSh0cnlfYXBwbHlfc3RhY2tfYWRqdXN0bWVudCk6IE5ldy4KCShjb21iaW5lX3N0YWNrX2FkanVzdG1lbnRzX2Zvcl9ibG9jayk6IE5ldy4KCSogcnRsLmggKGNvbWJpbmVfc3RhY2tfYWRqdXN0bWVudHMpOiBEZWNsYXJlLgoJKiB0b3BsZXYuYyAocmVzdF9vZl9jb21waWxhdGlvbik6IENhbGwgaXQuCgoJKiBpMzg2Lm1kOiBSZXZlcnQgMjAwMC0wMS0xNiBjaGFuZ2UuCgoyMDAwLTAzLTE0ICBNYXJ0aW4gdi4gTPZ3aXMgIDxsb2V3aXNAaW5mb3JtYXRpay5odS1iZXJsaW4uZGU+CgoJKiBnY2NidWcuaW46IEFkZCB3ZWIgY2F0ZWdvcnksIGdjYyBzcGVjaWZpYyBjbGFzc2VzLgoKMjAwMC0wMy0xNCAgTmF0aGFuIFNpZHdlbGwgIDxuYXRoYW5AY29kZXNvdXJjZXJ5LmNvbT4KCgkqIHN0b3ItbGF5b3V0LmMgKGZpbmFsaXplX3JlY29yZF9zaXplKTogRml4IHR5cG8uCgoyMDAwLTAzLTE0ICBTdGFuIFNoZWJzICA8c2hlYnNAYXBwbGUuY29tPgoKCSogYy10eXBlY2suYyAoY19hbGlnbm9mKTogRXJyb3Igb24gaW5jb21wbGV0ZSB0eXBlcy4KCSogZXh0ZW5kLnRleGkgKEFsaWdubWVudCk6IERvY3VtZW50IHRoaXMuCgoyMDAwLTAzLTEzICBaYWNrIFdlaW5iZXJnICA8emFja0B3b2xlcnkuY3VtYi5vcmc+CgoJKiBjcHBmaWxlcy5jOiBJbmNsdWRlIG1rZGVwcy5oLgoJKGZpbmRfaW5jbHVkZV9maWxlLCByZWFkX2luY2x1ZGVfZmlsZSk6IFJlbW92ZSBfY3BwXyBwcmVmaXgKCWZyb20gbmFtZSwgbWFrZSBzdGF0aWMuCgkoX2NwcF9leGVjdXRlX2luY2x1ZGUpOiBOZXcgZnVuY3Rpb24sIGJyb2tlbiBvdXQgb2YKCWRvX2luY2x1ZGUuCgoJKiBjcHBsaWIuYzogRG9uJ3QgaW5jbHVkZSBta2RlcHMuaC4KCShzdHJ1Y3QgZGlyZWN0aXZlKTogUmVtb3ZlIHR5cGUgZmllbGQuIFJlb3JkZXIgZW50cmllcy4gIFRoZQoJZnVuY3Rpb24gdGFrZXMgb25seSBvbmUgYXJndW1lbnQuCgkoc3RydWN0IGlmX3N0YWNrKTogTWFrZSB0eXBlIGZpZWxkIGFuIGludC4KCShkaXJlY3RpdmVfdGFibGUpOiBSZW5hbWUgdG8gZHRhYmxlLiAgR2VuZXJhdGUgaXQsIHRoZQoJcHJvdG90eXBlcyBvZiB0aGUgZGlyZWN0aXZlIGhhbmRsZXJzLCBhbmQgdGhlIGVudW0gZm9yIHRoZQoJZGlyZWN0aXZlIG51bWJlcnMsIGZyb20gYSB0ZW1wbGF0ZSBtYWNyby4KCShkb19pZm5kZWYsIGRvX2luY2x1ZGVfbmV4dCwgZG9faW1wb3J0KTogTmV3IGZ1bmN0aW9ucy4KCShkb19kZWZpbmUsIGRvX2luY2x1ZGUsIGRvX2VuZGlmLCBkb19pZmRlZiwgZG9faWYsIGRvX2Vsc2UsCglkb191bmRlZiwgZG9fbGluZSwgZG9fZWxpZiwgZG9fZXJyb3IsIGRvX3ByYWdtYSwgZG9fd2FybmluZywKCWRvX2lkZW50LCBkb19hc3NlcnQsIGRvX3VuYXNzZXJ0LCBkb19zY2NzKTogVGFrZSBvbmx5IG9uZQoJYXJndW1lbnQuCgkoZG9fc2Njcyk6IERlZmluZSBhbHdheXMsIGJ1dCBhbHRlciBiZWhhdmlvciBiYXNlZCBvbgoJU0NDU19ESVJFQ1RJVkUuCgkoX2NwcF9oYW5kbGVfZGlyZWN0aXZlLCBjb25zaWRlcl9kaXJlY3RpdmVfd2hpbGVfc2tpcHBpbmcpOgoJUmVzdHJ1Y3R1cmUgZm9yIG5ldyBkaXJlY3RpdmUgdGFibGUgbGF5b3V0LgoKCShwYXNzX3RocnVfZGlyZWN0aXZlKTogVGFrZSBhIGRpcmVjdGl2ZSBudW1iZXIsIG5vdCBhIHBvaW50ZXIKCXRvIGEgc3RydWN0IGRpcmVjdGl2ZS4KCShwYXJzZV9pbmNsdWRlKTogTmV3IGZ1bmN0aW9uLCBicm9rZW4gb3V0IG9mIGRvX2luY2x1ZGUuCgkoZG9faW5jbHVkZSwgZG9faW1wb3J0LCBkb19pbmNsdWRlX25leHQpOiBVc2UgcGFyc2VfaW5jbHVkZQoJYW5kIF9jcHBfZXhlY3V0ZV9pbmNsdWRlLgoJKGRvX2VsaWYsIGRvX2Vsc2UpOiBUZXN0IGZvciBUX0VMU0Ugc3BlY2lmaWNhbGx5IHdoZW4gY2hlY2tpbmcKCWZvciAjZWxpZi8jZWxzZSBhZnRlciAjZWxzZS4KCShwYXJzZV9pZmRlZik6IE5ldyBmdW5jdGlvbiwgYnJva2VuIG91dCBvZiBkb19pZmRlZi4KCSh2YWxpZGF0ZV9lbHNlKTogRXhwZWN0IGEgbmFtZSBhcmcgd2l0aG91dCBhIGxlYWRpbmcgIy4KCShpZl9kaXJlY3RpdmVfbmFtZSk6IERlbGV0ZS4KCShjcHBfZGVmaW5lLCBjcHBfYXNzZXJ0LCBjcHBfdW5kZWYsIGNwcF91bmFzc2VydCk6IENhbGwKCWRpcmVjdGl2ZSBoYW5kbGVycyB3aXRoIG9ubHkgb25lIGFyZ3VtZW50LgoKCSogY3BwaGFzaC5oOiBVcGRhdGUgcHJvdG90eXBlcy4KCShlbnVtIG5vZGVfdHlwZSk6IFJlbW92ZSBlbnRyaWVzIGZvciBkaXJlY3RpdmVzLgoJKiBNYWtlZmlsZS5pbjogVXBkYXRlIGRlcGVuZGVuY2llcy4KCgkqIGNwcGhhc2guYyAoZHVtcF9oYXNoX2hlbHBlcik6IE9ubHkgZHVtcCBub2RlcyBvZiB0eXBlCglUX01BQ1JPLiAgRW1pdCBhIG5ld2xpbmUgYWZ0ZXIgZWFjaCBkZWZpbml0aW9uLgoKMjAwMC0wMy0xNCAgTWFydGluIHYuIEz2d2lzICA8bG9ld2lzQGluZm9ybWF0aWsuaHUtYmVybGluLmRlPgoKCSogZ2NjYnVnLmluOiBOZXcgZmlsZS4KCSogY29uZmlndXJlLmluIChhbGxfb3V0cHV0cyk6IEFkZCBnY2NidWcuCgkqIE1ha2VmaWxlLmluIChpbnN0YWxsLWNvbW1vbik6IEluc3RhbGwgZ2NjYnVnLgoJKEdDQ0JVR19JTlNUQUxMX05BTUUpOiBOZXcgdmFyaWFibGUuCgkqIGNvbmZpZ3VyZTogUmVidWlsdC4KCjIwMDAtMDMtMTMgIEphc29uIE1lcnJpbGwgIDxqYXNvbkBjYXNleS5jeWdudXMuY29tPgoKCSogZnVuY3Rpb24uYyAocHV0X3Zhcl9pbnRvX3N0YWNrKTogVXNlIHR5cGVfZm9yX21vZGUgdG8gY2FsY3VsYXRlCglwYXJ0X3R5cGUuICBVc2UgTUVNX1NFVF9JTl9TVFJVQ1RfUC4KCSogZXhwci5jIChzdG9yZV9maWVsZCk6IEhhbmRsZSBDT05DQVQuCgkoc3RvcmVfY29uc3RydWN0b3IpOiBVc2UgZmllbGRzX2xlbmd0aC4KCSogdHJlZS5jIChmaWVsZHNfbGVuZ3RoKTogTmV3IGZuLgoJKiB0cmVlLmg6IERlY2xhcmUgaXQuCgoyMDAwLTAzLTEzICBaYWNrIFdlaW5iZXJnICA8emFja0B3b2xlcnkuY3VtYi5vcmc+CgoJKiBNYWtlZmlsZS5pbiAoTElCQ1BQX09CSlMpOiBBZGQgY3BwbGV4Lm8uCgkoY3BwbGV4Lm8pOiBOZXcgdGFyZ2V0LgoJKiBwby9QT1RGSUxFUy5pbjogQWRkIGNwcGxleC5jLgoKCSogY3BwbGV4LmMgKF9jcHBfZ3Jvd190b2tlbl9idWZmZXIsIG51bGxfY2xlYW51cCwKCWNwcF9wdXNoX2J1ZmZlciwgY3BwX3BvcF9idWZmZXIsIGNwcF9zY2FuX2J1ZmZlciwKCWNwcF9leHBhbmRfdG9fYnVmZmVyLCBjcHBfYnVmX2xpbmVfYW5kX2NvbCwgY3BwX2ZpbGVfYnVmZmVyLAoJc2tpcF9ibG9ja19jb21tZW50LCBza2lwX2xpbmVfY29tbWVudCwgc2tpcF9jb21tZW50LAoJY29weV9jb21tZW50LCBfY3BwX3NraXBfaHNwYWNlLCBfY3BwX3NraXBfcmVzdF9vZl9saW5lLAoJX2NwcF9wYXJzZV9uYW1lLCBza2lwX3N0cmluZywgcGFyc2Vfc3RyaW5nLAoJX2NwcF9wYXJzZV9hc3NlcnRpb24sIGNwcF9nZXRfdG9rZW4sIGNwcF9nZXRfbm9uX3NwYWNlX3Rva2VuLAoJX2NwcF9nZXRfZGlyZWN0aXZlX3Rva2VuLCBmaW5kX3Bvc2l0aW9uLAoJX2NwcF9yZWFkX2FuZF9wcmVzY2FuLCBfY3BwX2luaXRfaW5wdXRfYnVmZmVyKTogTW92ZSBoZXJlLgoJKG1heWJlX21hY3JvZXhwYW5kLCBfY3BwX2xleF90b2tlbik6IE5ldyBmdW5jdGlvbnMuCgoJKiBjcHBsaWIuYyAoU0tJUF9XSElURV9TUEFDRSwgZXZhbF9pZl9leHByLCBwYXJzZV9zZXRfbWFyaywKCXBhcnNlX2dvdG9fbWFyayk6IERlbGV0ZS4KCShfY3BwX2hhbmRsZV9lb2YpOiBOZXcgZnVuY3Rpb24uCgkoX2NwcF9oYW5kbGVfZGlyZWN0aXZlKTogUmVuYW1lIGZyb20gaGFuZGxlX2RpcmVjdGl2ZS4KCShfY3BwX291dHB1dF9saW5lX2NvbW1hbmQpOiBSZW5hbWUgZnJvbSBvdXRwdXRfbGluZV9jb21tYW5kLgoJKGRvX2lmLCBkb19lbGlmKTogQ2FsbCBfY3BwX3BhcnNlX2V4cHIgZGlyZWN0bHkuCgkqIGNwcGZpbGVzLmMgKF9jcHBfcmVhZF9pbmNsdWRlX2ZpbGUpOiBEb24ndCBjYWxsCglpbml0X2lucHV0X2J1ZmZlciBoZXJlLgoJKiBjcHBoYXNoLmMgKHF1b3RlX3N0cmluZyk6IE1vdmUgaGVyZSwgcmVuYW1lIF9jcHBfcXVvdGVfc3RyaW5nLgoJKiBjcHBleHAuYyAoX2NwcF9wYXJzZV9leHByKTogRGlkZGxlIHBhcnNpbmdfaWZfZGlyZWN0aXZlCgloZXJlOyBwb3AgdGhlIHRva2VuX2J1ZmZlciBhbmQgc2tpcCB0aGUgcmVzdCBvZiB0aGUgbGluZSBoZXJlLgoJKiBjcHBpbml0LmMgKGNwcF9zdGFydF9yZWFkKTogQ2FsbCBfY3BwX2luaXRfaW5wdXRfYnVmZmVyCgloZXJlLgoKCSogY3BwaGFzaC5oIChDUFBfUkVTRVJWRSwgQ1BQX0lTX01BQ1JPX0JVRkZFUiwgQUNUSVZFX01BUktfUCk6CglEZWZpbmUgaGVyZS4KCShDUFBfU0VUX0JVRl9NQVJLLCBDUFBfR09UT19CVUZfTUFSSywgQ1BQX1NFVF9NQVJLLAoJQ1BQX0dPVE9fTUFSSyk6IE5ldyBtYWNyb3MuCgkoX2NwcF9xdW90ZV9zdHJpbmcsIF9jcHBfcGFyc2VfbmFtZSwgX2NwcF9za2lwX3Jlc3Rfb2ZfbGluZSwKCV9jcHBfc2tpcF9oc3BhY2UsIF9jcHBfcGFyc2VfYXNzZXJ0aW9uLCBfY3BwX2xleF90b2tlbiwKCV9jcHBfcmVhZF9hbmRfcHJlc2NhbiwgX2NwcF9pbml0X2lucHV0X2J1ZmZlciwKCV9jcHBfZ3Jvd190b2tlbl9idWZmZXIsIF9jcHBfZ2V0X2RpcmVjdGl2ZV90b2tlbiwKCV9jcHBfaGFuZGxlX2RpcmVjdGl2ZSwgX2NwcF9oYW5kbGVfZW9mLAoJX2NwcF9vdXRwdXRfbGluZV9jb21tYW5kKTogUHJvdG90eXBlIHRoZW0gaGVyZS4KCSogY3BwbGliLmggKGVudW0gY3BwX3Rva2VuKTogQWRkIENQUF9NQUNSTy4KCShDUFBfUkVTRVJWRSwgZ2V0X2RpcmVjdGl2ZV90b2tlbiwgY3BwX2dyb3dfYnVmZmVyLAoJcXVvdGVfc3RyaW5nLCBvdXRwdXRfbGluZV9jb21tYW5kKTogUmVtb3ZlLgoKMjAwMC0wMy0xMyAgQmVybmQgU2NobWlkdCAgPGJlcm5kc0BjeWdudXMuY28udWs+CgoJKiBzdG10LmMgKGV4cGFuZF9lbmRfY2FzZSk6IFJBTkdFIG1heSBiZSBzaWduZWQsIGFuZCB3aGVuIGNoZWNraW5nCgl3aGV0aGVyIGl0IGlzIHRvbyBsYXJnZSB3ZSBtdXN0IGFsc28gdmVyaWZ5IHRoYXQgaXQgaXNuJ3QgbmVnYXRpdmUuCgoyMDAwLTAzLTEzICBKYWt1YiBKZWxpbmVrICA8amFrdWJAcmVkaGF0LmNvbT4KCgkqIGNvbmZpZy9zcGFyYy9zcGFyYy5tZDogUmVtb3ZlIGFsbCB0cmFjZXMgb2YgVEFSR0VUX0xJVkVfRzAuCgkobW92c2lfemVyb19saXZlZzApOiBSZW1vdmUuCgkobW92c2ZfaW5zbl9ub3Zpc19saXZlZzApOiBSZW1vdmUuCgkobmVnc2kyKTogUmVtb3ZlLgoJKG5lZ3NpMl9ub3RfbGl2ZWcwKTogUmVuYW1lIHRvIG5lZ3NpMi4KCShvbmVfY21wbHNpMik6IFJlbW92ZS4KCShvbmVfY21wbHNpMl9ub3RfbGl2ZWcwKTogUmVuYW1lIHRvIG9uZV9jbXBsc2kyLgoJKG9uZV9jbXBsc2kyX2xpdmVnMCk6IFJlbW92ZS4KCSogY29uZmlnL3NwYXJjL3NwYXJjLmggKFRBUkdFVF9MSVZFX0cwLCBUQVJHRVRfQlJPS0VOX1NBVkVSRVNUT1JFLAoJTUFTS19MSVZFX0cwLCBNQVNLX0JST0tFTl9TQVZFUkVTVE9SRSk6IFJlbW92ZS4KCShDT05ESVRJT05BTF9SRUdJU1RFUl9VU0FHRSk6IFJlbW92ZSBUQVJHRVRfTElWRV9HMCBpZi4KCShQUkVESUNBVEVfQ09ERVMpOiBSZW1vdmUgemVyb19vcGVyYW5kLgoJKiBjb25maWcvc3BhcmMvc3BhcmMuYzogUmVtb3ZlIGFsbCB0cmFjZXMgb2YgVEFSR0VUX0xJVkVfRzAgYW5kCglUQVJHRVRfQlJPS0VOX1NBVkVSRVNUT1JFLgoJKHplcm9fb3BlcmFuZCk6IFJlbW92ZS4KCSogY29uZmlnL3NwYXJjL3NwbGV0LmggKFNVQlRBUkdFVF9TV0lUQ0hFUyk6IFJlbW92ZSAtbWxpdmUtZzAsCgktbW5vLWxpdmUtZzAsIC1tYnJva2VuLXNhdmVyZXN0b3JlIGFuZCAtbW5vLWJyb2tlbi1zYXZlcmVzdG9yZQoJb3B0aW9ucy4KCShTVUJUQVJHRVRfT1ZFUlJJREVfT1BUSU9OUyk6IFJlbW92ZS4KCSogY29uZmlnL3NwYXJjL2xpbnV4LWFvdXQuaCAoVEFSR0VUX0xJVkVfRzAsCglUQVJHRVRfQlJPS0VOX1NBVkVSRVNUT1JFKTogUmVtb3ZlLgoJKiBjb25maWcvc3BhcmMvbGludXguaCAoVEFSR0VUX0xJVkVfRzAsIFRBUkdFVF9CUk9LRU5fU0FWRVJFU1RPUkUpOgoJUmVtb3ZlLgoJKiBjb25maWcvc3BhcmMvbGludXg2NC5oIChUQVJHRVRfTElWRV9HMCwgVEFSR0VUX0JST0tFTl9TQVZFUkVTVE9SRSk6CglSZW1vdmUuCgkqIGNvbmZpZy9zcGFyYy9zb2wyLmggKFRBUkdFVF9MSVZFX0cwLCBUQVJHRVRfQlJPS0VOX1NBVkVSRVNUT1JFKToKCVJlbW92ZS4KCgkqIGNvbmZpZy9zcGFyYy9zcGFyYy5tZCAocmV0dXJuX2RmX25vX2ZwdSk6IE5ldyBwYXR0ZXJuLgoKMjAwMC0wMy0xMyAgWmFjayBXZWluYmVyZyAgPHphY2tAd29sZXJ5LmN1bWIub3JnPgoKCSogY3BwbGliLmMgKGRvX3ByYWdtYV9pbXBsZW1lbnRhdGlvbik6IEZpeCBvZmYtYnktb25lIGVycm9yCgl0cnVuY2F0aW5nIGEgc3RyaW5nLiAgRG9uJ3QgYXNzdW1lIHRva2VucyBhcmUgbnVsIHRlcm1pbmF0ZWQuCglQcm9ibGVtIG5vdGVkIGJ5IEFuZHJlYXMgSmFlZ2VyIDxhakBzdXNlLmRlPgoKMjAwMC0wMy0xMyAgSmFzb24gTWVycmlsbCAgPGphc29uQGNhc2V5LmN5Z251cy5jb20+CgoJKiBkd2FyZjJvdXQuYyAoYWRkX25hbWVfYW5kX3NyY19jb29yZHNfYXR0cmlidXRlcyk6IE9ubHkgYWRkCglEV19BVF9NSVBTX2xpbmthZ2VfbmFtZSBmb3IgVFJFRV9QVUJMSUMgZGVjbHMuCgkoQVNNX09VVFBVVF9EV0FSRl9BRERSX0NPTlNUKTogRG9uJ3Qgb3V0cHV0IHRyYWlsaW5nIG5ld2xpbmUuCgoyMDAwLTAzLTEzICBSaWNoYXJkIEVhcm5zaGF3IDxyZWFybnNoYUBhcm0uY29tPgoKCSogc3Rvci1sYXlvdXQuYyAobmV3X3JlY29yZF9sYXlvdXRfaW5mbyk6IEZpeCB0eXBvIGluc2lkZSBpZmRlZgoJU1RSVUNUVVJFX1NJWkVfQk9VTkRBUlkuCgoyMDAwLTAzLTEzICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogdHJlZS5oIChyZWNvcmRfbGF5b3V0X2luZm9fcyk6IE5ldyBzdHJ1Y3R1cmUuCgkocmVjb3JkX2xheW91dF9pbmZvKTogTmV3IHR5cGUuCgkobmV3X3JlY29yZF9sYXlvdXRfaW5mbyk6IE5ldyBmdW5jdGlvbi4KCShsYXlvdXRfZmllbGQpOiBMaWtld2lzZS4KCShmaW5pc2hfcmVjb3JkX2xheW91dCk6IExpa2V3aXNlLgoJKiBzdG9yLWxheW91dC5jIChsYXlvdXRfcmVjb3JkKTogUmVtb3ZlLgoJKG5ld19yZWNvcmRfbGF5b3V0X2luZm8pOiBOZXcgZnVuY3Rpb24uCgkobGF5b3V0X2ZpZWxkKTogTmV3IGZ1bmN0aW9uLCBicm9rZW4gb3V0IGZyb20gbGF5b3V0X3JlY29yZC4KCShmaW5hbGl6ZV9yZWNvcmRfc2l6ZSk6IExpa2V3aXNlLgoJKGNvbXB1dGVfcmVjb3JkX21vZGUpOiBMaWtld2lzZS4KCShmaW5hbGl6ZV90eXBlX3NpemUpOiBOZXcgZnVuY3Rpb24sIGJyb2tlbiBvdXQgZnJvbSBsYXlvdXRfdHlwZS4KCShmaW5pc2hfcmVjb3JkX2xheW91dCk6IExpa2V3aXNlLgoJKGxheW91dF90eXBlKTogVXNlIHRoZW0uCgoyMDAwLTAzLTEyICBaYWNrIFdlaW5iZXJnICA8emFja0B3b2xlcnkuY3VtYi5vcmc+CgoJKiBjcHBoYXNoLmM6IERvbid0IGluY2x1ZGUgdmVyc2lvbi5oLgoJKHNwZWNpYWxfc3ltYm9sKSBbY2FzZSBUX1ZFUlNJT05dOiBMb29rIGZvciB0aGUgc3RyaW5nIGluCglocC0+dmFsdWUuY3B2YWw7IGRvbid0IHVzZSB2ZXJzaW9uX3N0cmluZy4KCSogY3BwaW5pdC5jIChpbml0aWFsaXplX2J1aWx0aW5zKTogU2V0IGhwLT52YWx1ZS5jcHZhbCBmb3IKCV9fVkVSU0lPTl9fIHRvIHZlcnNpb25fc3RyaW5nLgoJKiBNYWtlZmlsZS5pbiAoY3BwaGFzaC5vKTogVXBkYXRlIGRlcHMuCgoyMDAwLTAzLTEyICBaYWNrIFdlaW5iZXJnICA8emFja0B3b2xlcnkuY3VtYi5vcmc+CgoJQ29udmVydCBjcHBsaWIgdG8gdXNlIGxpYmliZXJ0eS9oYXNodGFiLmMuCgoJKiBjcHBsaWIuaCAoc3RydWN0IGNwcF9yZWFkZXIpOiBNYWtlIGhhc2h0YWIgYW5kCglhbGxfaW5jbHVkZV9maWxlcyBvZiB0eXBlICdzdHJ1Y3QgaHRhYiAqJy4gIERlbGV0ZSBIQVNIU0laRQoJYW5kIEFMTF9JTkNMVURFX0hBU0hTSVpFIG1hY3Jvcy4KCgkqIGNwcGhhc2guaDogVXBkYXRlIHByb3RvdHlwZXMuCgkoc3RydWN0IGhhc2hub2RlKTogUmVtb3ZlIG5leHQsIHByZXYsIGFuZCBidWNrZXRfaGRyIG1lbWJlcnMuCglNYWtlIGxlbmd0aCBhIHNpemVfdC4gIEFkZCBoYXNoIG1lbWJlci4KCShzdHJ1Y3QgaWhhc2gpOiBSZW1vdmUgbmV4dCBtZW1iZXIuICBBZGQgaGFzaCBtZW1iZXIuICBNYWtlCgluYW1lIGEgZmxleGlibGUgYXJyYXkgbWVtYmVyLgoKCSogY3BwZmlsZXMuYzogSW5jbHVkZSBoYXNodGFiLmguCgkoaW5jbHVkZV9oYXNoKTogRGVsZXRlLgoJKElIQVNIU0laRSk6IE5ldyBtYWNyby4KCShoYXNoX0lIQVNILCBlcV9JSEFTSCwgX2NwcF9pbml0X2luY2x1ZGVfaGFzaCk6IE5ldyBmdW5jdGlvbnMuCgkoY3BwX2luY2x1ZGVkKTogRG8gdGhlIGhhc2ggbG9va3VwIGhlcmUuCgkoX2NwcF9maW5kX2luY2x1ZGVfZmlsZSk6IFJld3JpdGUuCgkoY3BwX3JlYWRfZmlsZSk6IFB1dCB0aGUgImZha2UiIGhhc2ggZW50cnkgaW50byB0aGUgaGFzaAoJdGFibGUuICBIb25vciB0aGUgY29udHJvbF9tYWNybywgaWYgaXQgdHVybnMgb3V0IHdlJ3ZlIHNlZW4KCXRoZSBmaWxlIGJlZm9yZS4gIERvbid0IHB1c2ggdGhlIGJ1ZmZlciBoZXJlLgoJKF9jcHBfcmVhZF9pbmNsdWRlX2ZpbGUpOiBQdXNoIHRoZSBidWZmZXIgaGVyZS4KCShPTU9ERVMpOiBOZXcgbWFjcm8uICBVc2UgaXQgd2hlbmV2ZXIgd2UgY2FsbCBvcGVuKDIpLgoKCSogY3BwaGFzaC5jOiBJbmNsdWRlIGhhc2h0YWIuaC4KCShoYXNoX0hBU0hOT0RFLCBlcV9IQVNITk9ERSwgZGVsX0hBU0hOT0RFLCBkdW1wX2hhc2hfaGVscGVyLAoJX2NwcF9pbml0X21hY3JvX2hhc2gsIF9jcHBfZHVtcF9tYWNyb19oYXNoLCBfY3BwX21ha2VfaGFzaG5vZGUsCglfY3BwX2xvb2t1cF9zbG90KTogTmV3IGZ1bmN0aW9ucy4KCShIQVNIU0laRSk6IG5ldyBtYWNyby4KCShoYXNoZiwgX2NwcF9pbnN0YWxsLCBfY3BwX2RlbGV0ZV9tYWNybyk6IERlbGV0ZS4KCShfY3BwX2xvb2t1cCk6IFVzZSBoYXNodGFiLmggcm91dGluZXMuCgoJKiBjcHBpbml0LmM6IEluY2x1ZGUgaGFzaHRhYi5oLgoJKGNwcF9yZWFkZXJfaW5pdCk6IENhbGwgX2NwcF9pbml0X21hY3JvX2hhc2ggYW5kCglfY3BwX2luaXRfaW5jbHVkZV9oYXNoLiAgRG9uJ3QgYWxsb2NhdGUgaGFzaHRhYiBkaXJlY3RseS4KCShjcHBfY2xlYW51cCk6IEp1c3QgY2FsbCBodGFiX2RlbGV0ZSBvbiBwZmlsZS0+aGFzaHRhYiBhbmQKCXBmaWxlLT5hbGxfaW5jbHVkZV9maWxlcy4KCShpbml0aWFsaXplX2J1aWx0aW5zKTogVXNlIF9jcHBfbWFrZV9oYXNobm9kZSBhbmQKCWh0YWJfZmluZF9zbG90IHRvIGFkZCBoYXNoIGVudHJpZXMuCgkoY3BwX2ZpbmlzaCk6IEp1c3QgY2FsbCBfY3BwX2R1bXBfbWFjcm9faGFzaC4KCSogY3BwbGliLmM6IEluY2x1ZGUgaGFzaHRhYi5oLgoJKGRvX2RlZmluZSk6IFVzZSBfY3BwX2xvb2t1cF9zbG90IGFuZCBfY3BwX21ha2VfaGFzaG5vZGUgdG8KCWNyZWF0ZSBoYXNoIGVudHJpZXMuCgkoZG9fcHJhZ21hX3BvaXNvbiwgZG9fYXNzZXJ0KTogTGlrZXdpc2UuCgkoZG9faW5jbHVkZSk6IERvbid0IHB1c2ggdGhlIGJ1ZmZlciBoZXJlLiAgRG9uJ3QgaW5jcmVtZW50CglzeXN0ZW1faW5jbHVkZV9kZXB0aCB1bmxlc3MgX2NwcF9yZWFkX2luY2x1ZGVfZmlsZSBzdWNjZWVkcy4KCShkb191bmRlZiwgZG9fdW5hc3NlcnQpOiBVc2UgX2NwcF9sb29rdXBfc2xvdCBhbmQgaHRhYl9jbGVhcl9zbG90CglvciBodGFiX3JlbW92ZV9lbHQuCgkoZG9fcHJhZ21hX2ltcGxlbWVudGF0aW9uKTogVXNlIGFsbG9jYSB0byBjcmVhdGUgY29weS4KCgkqIE1ha2VmaWxlLmluOiBVcGRhdGUgZGVwZW5kZW5jaWVzLgoKMjAwMC0wMy0xMiAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogY3BwaW5pdC5jIChjbF9kaXJlY3RpdmVfaGFuZGxlcik6IE1vcmUgSyZSIGZpeGluZy4KClNhdCBNYXIgMTEgMjM6NTQ6MjYgMjAwMCAgSmltIFdpbHNvbiAgPHdpbHNvbkBjeWdudXMuY29tPgoKCSogY29uZmlnL2lhNjQvaWE2NC5jIChpYTY0X2NvbXB1dGVfZnJhbWVfc2l6ZSk6IEFsaWduIHNpemUgdG8KCVNUQUNLX0JPVU5EQVJZLgoJKiBjb25maWcvaWE2NC9pYTY0LmggKFJFR0lTVEVSX01PVkVfQ09TVCk6IEFkZCBtaXNzaW5nIHBhcmVudGhlc2VzLgoKMjAwMC0wMy0xMSAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogY3BwaW5pdC5jIChub19hcmcsIG5vX2Fzcywgbm9fZGlyLCBub19maWwsIG5vX21hYywgbm9fcHRoKToKCUNoYW5nZSBmcm9tIGNoYXJbXSB0byBtYWNyb3MuCgoyMDAwLTAzLTEyICBOZWlsIEJvb3RoICA8TmVpbEJAZWFydGhsaW5nLm5ldD4KCgkqIGNwcGluaXQuYyAoY3BwX3N0YXJ0X3JlYWQpOiBVcGRhdGUgaW5kaXJlY3QgZnVuY3Rpb24KCWNhbGwgdG8gSyZSIEMuCgpTYXQgTWFyIDExIDE2OjE4OjEyIDIwMDAgIEppbSBXaWxzb24gIDx3aWxzb25AY3lnbnVzLmNvbT4KCgkqIGNvbmZpZy9pYTY0L2lhNjQuaCAoQURESVRJT05BTF9SRUdJU1RFUl9OQU1FUyk6IEZpeCB0eXBvIGluIGxvYzc5CgllbnRyeS4KCgkqIGNvbmZpZy9pYTY0L2lhNjQtcHJvdG9zLmgsIGNvbmZpZy9pYTY0L2lhNjQuYywgY29uZmlnL2lhNjQvaWE2NC5oLAoJY29uZmlnL2lhNjQvaWE2NC5tZCwgY29uZmlnL2lhNjQveG0taWE2NC5oOiBGaXggY29weXJpZ2h0IG1lc3NhZ2VzLgoKMjAwMC0wMy0xMSAgTmVpbCBCb290aCAgPE5laWxCQGVhcnRobGluZy5uZXQ+CgoJKiBjcHBpbml0LmMgKHN0cnVjdCBwZW5kaW5nIG9wdGlvbik6IFJlcGxhY2UgdW5kZWYgd2l0aCBhCglwb2ludGVyIHRvIGEgZGlyZWN0aXZlIGhhbmRsaW5nIHJvdXRpbmUuCgkoc3RydWN0IGNwcF9wZW5kaW5nKTogUmVwbGFjZSBzZXBhcmF0ZSBhc3NlcnRfIGFuZCBkZWZpbmVfCglsaXN0cyB3aXRoIG9uZSBkaXJlY3RpdmVfIGxpc3QuCgkobmV3X3BlbmRpbmdfZGVmaW5lKTogUmVuYW1lIG5ld19wZW5kaW5nX2RpcmVjdGl2ZS4gRXh0cmEKCWFyZ3VtZW50IGlzIHRoZSBkaXJlY3RpdmUncyBoYW5kbGluZyByb3V0aW5lLgoJKGhhbmRsZV9vcHRpb24pOiBVcGRhdGUgdG8gdXNlIG5ld19wZW5kaW5nX2RpcmVjdGl2ZS4KCjIwMDAtMDMtMTEgIE5laWwgQm9vdGggIDxOZWlsQkBlYXJ0aGxpbmcubmV0PgoKCSogY3BwZmlsZXMuYyAoZmlsZV9jbGVhbnVwLCBfY3BwX2ZpbmRfaW5jbHVkZV9maWxlLAoJcmVtYXBfZmlsZW5hbWUsIF9jcHBfcmVhZF9pbmNsdWRlX2ZpbGUsIGFjdHVhbF9kaXJlY3RvcnksCgloYWNrX3Ztc19pbmNsdWRlX3NwZWNpZmljYXRpb24pOiBSZXBsYWNlIGJjb3B5KCksIGluZGV4KCkgZXRjCgljYWxscy4gIEFkZCBjYXN0cyB0byBzb21lIGFsbG9jYXRpb25zLiAgTWFrZSBzb21lIHZhcmlhYmxlcwoJcG9pbnRlcnMgdG8gY29uc3QgW3Vuc2lnbmVkXSBjaGFyLgoJKiBjcHBoYXNoLmMgKF9jcHBfaW5zdGFsbCwgbWFjcm9fY2xlYW51cCwgY29sbGVjdF9leHBhbnNpb24sCgljb2xsZWN0X2Zvcm1hbF9wYXJhbWV0ZXJzKTogU2ltaWxhcmx5LgoJKiBjcHBpbml0LmMgKHN0cnVjdCBwZW5kaW5nX29wdGlvbiwgYXBwZW5kX2luY2x1ZGVfY2hhaW4sCgljcHBfb3B0aW9uc19pbml0LCBjcHBfcmVhZGVyX2luaXQsIGluaXRpYWxpemVfc3RhbmRhcmRfaW5jbHVkZXMsCgljcHBfc3RhcnRfcmVhZCwgbmV3X3BlbmRpbmdfZGVmaW5lLCBoYW5kbGVfb3B0aW9uKTogU2ltaWxhcmx5LgoJKiBjcHBsaWIuYyAoY3BwX2RlZmluZSwgY29weV9jb21tZW50LCBkb19kZWZpbmUsIGRvX2luY2x1ZGUsCglkb191bmRlZiwgZG9fZXJyb3IsIGRvX3dhcm5pbmcsIGRvX3ByYWdtYSwgZG9fcHJhZ21hX29uY2UsCglkb19wcmFnbWFfaW1wbGVtZW50YXRpb24sIGRldGVjdF9pZl9ub3RfZGVmaW5lZCwKCWRvX2lmZGVmLCBza2lwX2lmX2dyb3VwLCBjcHBfZ2V0X3Rva2VuLCBwYXJzZV9zdHJpbmcsCglkb19hc3NlcnQsIGRvX3VuYXNzZXJ0KTogU2ltaWxhcmx5LgoJKiBjcHBsaWIuaCAoY3BwX2J1ZmZlciwgY3BwX29wdGlvbnMpOiBVcGRhdGUgdHlwZXMuICBVcGRhdGUKCWZ1bmN0aW9uIHByb3RvdHlwZXMuCgkqIG1rZGVwcy5jIChkZXBzX2FkZF90YXJnZXQsIGRlcHNfYWRkX2RlcCk6IGNhc3QgYWxsb2NhdGlvbnMuCgoyMDAwLTAzLTEwICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEBjeWdudXMuY29tPgoKCSogYnVpbHRpbnMuYyAoZXhwYW5kX2J1aWx0aW5fc3RybGVuKTogUmV2ZXJ0IGxhc3QgY2hhbmdlLgoJVXNlIGVtaXRfaW5zbl9iZWZvcmUgaWYgd2UncmUgYXQgdGhlIGJlZ2lubmluZyBvZiBhIHNlcXVlbmNlLgoKMjAwMC0wMy0xMCAgSmFzb24gTWVycmlsbCAgPGphc29uQGNhc2V5LmN5Z251cy5jb20+CgoJKiBidWlsdGlucy5jIChleHBhbmRfYnVpbHRpbl9zdHJsZW4pOiBNYWtlIHN1cmUgdGhhdCB3ZSBoYXZlIHNvbWV0aGluZwoJYXQgdGhlIGJlZ2lubmluZyBvZiB0aGUgc2VxdWVuY2UuCgoJKiB0b3BsZXYuYyAocmVzdF9vZl9jb21waWxhdGlvbik6IEFsc28gc2V0IFRSRUVfTk9USFJPVyBmb3IKCWRlZmVycmVkIGlubGluZXMuCgoJKiBpbnZva2UudGV4aSAoQysrIERpYWxlY3QgT3B0aW9ucyk6IERvY3VtZW50IC1mbm8tZW5mb3JjZS1laC1zcGVjcy4KCjIwMDAtMDMtMTAgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgoJKiBleGNlcHQuYyAoY2FuX3Rocm93KTogVXNlIElOVFZBTCBvbiBhIENPTlNUX0lOVC4KCShyZWFjaGFibGVfaGFuZGxlcnMpOiBMaWtld2lzZS4KCSogZmxvdy5jIChjb3VudF9iYXNpY19ibG9ja3MsIGZpbmRfYmFzaWNfYmxvY2tzXzEpOiBMaWtld2lzZS4KCjIwMDAtMDMtMTAgIEFuZHJlYXMgSmFlZ2VyICA8YWpAc3VzZS5kZT4KCgkqIGNvbmZpZy9taXBzL2xpbnV4Lmg6IFVuZGVmaW5lIE1EX0VYRUNfUFJFRklYIGFuZAoJTURfU1RBUlRGSUxFX1BSRUZJWCBzaW5jZSB0aG9zZSBhcmUgbm90IG5lZWRlZCBvbiBsaW51eC4KCShBU01fRklMRV9TVEFSVCk6IE5ldywgZnJvbSBtaXBzL2dudS5oLgoKMjAwMC0wMy0wOSAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAY3lnbnVzLmNvbT4KCSAgICBBbGV4IFNhbXVlbCAgPHNhbXVlbEBjb2Rlc291cmNlcnkuY29tPiBhbmQgb3RoZXJzCgoJKiBNYWtlZmlsZS5pbiAoc3NhLm8pOiBOZXcgcnVsZS4KCShPQkpTKTogQWRkIHNzYS5vLgoJKFNUQUdFU1RVRkYpOiBBZGQgKi5zc2EgYW5kICoudXNzYS4KCShtb3N0bHljbGVhbik6IERlbGV0ZSAqLnNzYSwgKi51c3NhLCAqLyouc3NhLCAqLyoudXNzYS4KCSogcnRsLmRlZiAoUEhJKTogTmV3IFJUTCBleHByZXNzaW9uLgoJKiBydGwuaCAoY2xlYXJfbG9nX2xpbmtzKTogTmV3IGRlY2xhcmF0aW9uLgoJKGNvbnZlcnRfdG9fc3NhKTogTGlrZXdpc2UuCgkoY29udmVydF9mcm9tX3NzYSk6IExpa2V3aXNlLgoJKiBmbG93LmMgKHNwbGl0X2VkZ2UpOiBJZiB0aGUgZW50cnkgbm9kZSBmYWxscyB0aHJvdWdoIHRvIHRoZQoJc3BsaXQgZWRnZSdzIHNvdXJjZSBibG9jaywgc3BsaXQgdGhlIGVudHJ5IGVkZ2UuCgkoY2xlYXJfbG9nX2xpbmtzKTogTmV3IGZ1bmN0aW9uLgoJKiB0b3BsZXYuYyAoc3NhX2R1bXApOiBOZXcgdmFyaWFibGUuCgkoZmxhZ19zc2EpOiBMaWtld2lzZS4KCShmX29wdGlvbnMpOiBBZGQgInNzYSIuCgkoY29tcGlsZV9maWxlKTogQ3JlYXRlIFNTQSBkdW1wIGZpbGVzLgoJKHJlc3Rfb2ZfY29tcGlsYXRpb24pOiBHbyB0byBhbmQgZnJvbSBTU0EgaWYgZW5hYmxlZC4KCShkZWNpZGVfZF9vcHRpb24pOiBIYW5kbGUgLWRlIGZvciBTU0EgZHVtcCBmaWxlcy4KCSogc3NhLmM6IE5ldyBmaWxlLgoKVGh1IE1hciAgOSAyMDowMTozOCAyMDAwICBKaW0gV2lsc29uICA8d2lsc29uQGN5Z251cy5jb20+CgoJKiBleHByLmMgKGV4cGFuZF9hc3NpZ25tZW50KTogRm9yIGEgQ0FMTF9FWFBSLCBzcGVjaWFsIGNhc2UgUEFSTV9ERUNMCglzYW1lIGFzIFZBUl9ERUNMLgoKMjAwMC0wMy0wOSAgQmVuamFtaW4gS29zbmlrICA8YmtvekBjeWdudXMuY29tPgoKCSogY29uZmlnL2FscGhhL2xpbnV4LmggKFdDSEFSX1RZUEUpOiBNYWtlIGNvbnNpc3RlbnQuCgpUaHUgTWFyICA5IDE4OjEwOjAyIDIwMDAgIEplZmZyZXkgQSBMYXcgIChsYXdAY3lnbnVzLmNvbSkKCgkqIGNvbmZpZy9wYS9wYS1ocHV4MTAuaCAoTElCX1NQRUMpOiBDb3JyZWN0IHR5cG8gaW4gIXAgY2FzZS4KCShNRF9TVEFSVEZJTEVfUFJFRklYXzEpOiBOZXcgbWFjcm8uCgoyMDAwLTAzLTA5ICBSb2JlcnQgTGlwZSAgPHJvYmVydGxAc2NvLmNvbT4KCgkqIGNvbmZpZy9pYTY0L2lhNjQuYzogSW5jbHVkZSBzeXN0ZW0uaC4KCjIwMDAtMDMtMDkgIEphc29uIE1lcnJpbGwgIDxqYXNvbkBjYXNleS5jeWdudXMuY29tPgoKCSogZXhjZXB0LmMgKG5vdGhyb3dfZnVuY3Rpb25fcCk6IElmIC1mbm8tZXhjZXB0aW9ucywganVzdCByZXR1cm4uCgkoaW5pdF9laF9uZXN0aW5nX2luZm8pOiBMaWtld2lzZS4KCgkqIHRyZWUuaCAoc3RydWN0IHRyZWVfY29tbW9uKTogUmVuYW1lIHJhaXNlc19mbGFnIHRvIG5vdGhyb3dfZmxhZy4KCShUUkVFX05PVEhST1cpOiBSZW5hbWUgZnJvbSBUUkVFX1JBSVNFUy4KCSogdG9wbGV2LmMgKHJlc3Rfb2ZfY29tcGlsYXRpb24pOiBTZXQgaXQuCgkqIHByaW50LXRyZWUuYyAocHJpbnRfbm9kZSk6IEFkanVzdC4KCSogdHJlZS5jIChzdGFiaWxpemVfcmVmZXJlbmNlLCBidWlsZCwgYnVpbGQxKTogRG9uJ3Qgc2V0IFRSRUVfUkFJU0VTLgoJKHN0YWJpbGl6ZV9yZWZlcmVuY2VfMSwgZ2V0X3Vud2lkZW5lZCwgZ2V0X25hcnJvd2VyKTogTGlrZXdpc2UuCgkqIGNhbGxzLmMgKGVtaXRfY2FsbF8xKTogQWRkICdub3Rocm93JyBwYXJtLiAgQWRkCglSRUdfRUhfUkVHSU9OIG5vdGUgYXMgYXBwcm9wcmlhdGUuCgkobGliZnVuY19ub3Rocm93KTogTmV3IGZuLgoJKGVtaXRfbGlicmFyeV9jYWxsLCBlbWl0X2xpYnJhcnlfY2FsbF92YWx1ZSk6IFVzZSBpdC4KCShleHBhbmRfY2FsbCk6IENoZWNrIFRSRUVfTk9USFJPVy4KCgkqIHZhcmFzbS5jIChtYWtlX2RlY2xfcnRsKTogU2tpcCBpbml0aWFsICcqJyB3aGVuIHNldHRpbmcKCURFQ0xfQVNTRU1CTEVSX05BTUUuCgoyMDAwLTAzLTA5ICBBbmRyZWFzIEphZWdlciAgPGFqQHN1c2UuZGU+CgoJKiBtaXBzL2xpbnV4LmggKE5PX0lNUExJQ0lUX0VYVEVSTl9DKTogRGVmaW5lLgoJKFRBUkdFVF9NRU1fRlVOQ1RJT05TKTogRGVmaW5lLgoKMjAwMC0wMy0wOSAgSmFzb24gTWVycmlsbCAgPGphc29uQGNhc2V5LmN5Z251cy5jb20+CgoJKiBpMzg2LmMgKGl4ODZfdmFsaWRfdHlwZV9hdHRyaWJ1dGVfcCk6IFVzZSBjb21wYXJlX3RyZWVfaW50LgoKCSogZXhjZXB0LmMgKGNhbl90aHJvdyk6IFNlZSB0aHJvdWdoIGEgU0VRVUVOQ0UuCgkobm90aHJvd19mdW5jdGlvbl9wKTogTmV3IGZuLgoJKiBleGNlcHQuaDogRGVjbGFyZSBpdC4KCSogZnVuY3Rpb24uYyAoY3VycmVudF9mdW5jdGlvbl9ub3Rocm93KTogTmV3IHZhci4KCShwcmVwYXJlX2Z1bmN0aW9uX3N0YXJ0KTogSW5pdGlhbGl6ZSBpdC4KCSogb3V0cHV0Lmg6IERlY2xhcmUgaXQuCgkqIHRvcGxldi5jIChyZXN0X29mX2NvbXBpbGF0aW9uKTogU2V0IGl0LgoJKiBkd2FyZjJvdXQuYyAoZHdhcmYyb3V0X2JlZ2luX3Byb2xvZ3VlKTogVXNlIGl0LgoKMjAwMC0wMy0wOSAgWmFjayBXZWluYmVyZyAgPHphY2tAd29sZXJ5LmN1bWIub3JnPgoKCSogY3BwaGFzaC5jIChjb2xsZWN0X2Zvcm1hbF9wYXJhbWV0ZXJzKTogc3RybmNtcCByZXR1cm5zIDAgZm9yCgltYXRjaC4gIChjcHBfY29tcGFyZV9kZWZzKTogQ291bnQgdGhlIG51bCBzZXBhcmF0b3Igd2hlbgoJYWR2YW5jaW5nIG92ZXIgYXJndW1lbnQgbmFtZXMuCgoyMDAwLTAzLTA5ICBCZXJuZCBTY2htaWR0ICA8YmVybmRzQGN5Z251cy5jby51az4KCgkqIHJlY29nLmMgKHByZXByb2Nlc3NfY29uc3RyYWludHMpOiBNYXRjaGluZyBjb25zdHJhaW50cyBhZmZlY3QKCXNhbWUgYWx0ZXJuYXRpdmUvZGlmZmVyZW50IG9wZXJhbmQsIG5vdCBzYW1lIG9wZXJhbmQvZGlmZmVyZW50CglhbHRlcm5hdGl2ZS4KCgkqIHJlbG9hZDEuYyAoZWxpbWluYXRlX3JlZ3NfaW5faW5zbik6IEhhbmRsZSBhZGRpdGlvbnMgb2YgZWxpbWluYWJsZQoJcmVnaXN0ZXIgYW5kIGEgY29uc3RhbnQgc3BlY2lhbGx5LgoKMjAwMC0wMy0wOCAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogbGliZ2NjMi5oOiBOZXcgZmlsZS4KCSogbGliZ2NjMi5jOiBNb3ZlIG1hY3JvcywgdHlwZWRlZnMgYW5kIHByb3RvdHlwZXMgdG8gbGliZ2NjMi5oLgoKV2VkIE1hciAgOCAxNjoxOTo0MiAyMDAwICBKaW0gV2lsc29uICA8d2lsc29uQGN5Z251cy5jb20+CgoJKiBjb25maWd1cmUuaW4gKGlhNjQqLSotZWxmKiwgaWE2NCotKi1saW51eCopOiBOZXcuCgkqIGNvbmZpZ3VyZTogUmVnZW5lcmF0ZS4KCSogY29uZmlnL2lhNjQ6IE5ldy4KCjIwMDAtMDMtMDggIFphY2sgV2VpbmJlcmcgIDx6YWNrQHdvbGVyeS5jdW1iLm9yZz4KCgkqIE1ha2VmaWxlLmluIChMSUJDUFBfREVQUyk6IE5ldyBtYWNyby4KCShjcHBsaWIubywgY3BwaGFzaC5vLCBjcHBlcnJvci5vLCBjcHBleHAubywgY3BwZmlsZXMubyk6IFVzZQoJaXQgdG8gZGVjbGFyZSBkZXBzLgoJKiBjcHBlcnJvci5jOiBJbmNsdWRlIGNwcGhhc2guaC4KCSogY3BwZXhwLmM6IEluY2x1ZGUgY3BwaGFzaC5oLiAgUmVtb3ZlIE1VTFRJQllURV9DSEFSUwoJZGluZ2xlYmVycnkuCgkobGV4KTogRG9uJ3QgdXNlIENQUF9XQVJOX1VOREVGLgoJKF9jcHBfcGFyc2VfZXhwcik6IFJldHVybiBhbiBpbnQsIHRoZSB0cnV0aCB2YWx1ZS4KCSogY3BwZmlsZXMuYzogSW5jbHVkZSBjcHBoYXNoLmguCgkoX2NwcF9tZXJnZV9pbmNsdWRlX2NoYWlucyk6IE1vdmUgdG8gY3BwaW5pdC5jIGFuZCBtYWtlIHN0YXRpYy4KCSogY3BwaW5pdC5jIChpbmNsdWRlX2RlZmF1bHRzX2FycmF5KTogRGlzZW50YW5nbGUuCgkoY3BwX2NsZWFudXApOiBEb24ndCBmcmVlIHRoZSBpZiBzdGFjayBoZXJlLgoJKGNwcF9maW5pc2gpOiBQb3Agb2ZmIGFsbCBidWZmZXJzLCBub3QganVzdCBvbmUuCgkqIGNwcGxpYi5jIChldmFsX2lmX2V4cHIpOiBSZXR1cm4gaW50LgoJKGRvX3hpZmRlZik6IFJlbmFtZSBkb19pZmRlZi4KCShoYW5kbGVfZGlyZWN0aXZlKTogRG9uJ3QgdXNlIENQUF9QUkVQUk9DRVNTRUQuCgkoY3BwX2dldF90b2tlbik6IERvbid0IHVzZSBDUFBfQzg5LgoJKiBmaXgtaGVhZGVyLmM6IERvbid0IHVzZSBDUFBfT1BUSU9OUy4KCgkqIGNwcGxpYi5oOiBNb3ZlIFVfQ0hBUiwgZW51bSBub2RlX3R5cGUsIHN0cnVjdAoJZmlsZV9uYW1lX2xpc3QsIHN0cnVjdCBpaGFzaCwgaXNfaWRjaGFyLCBpc19pZHN0YXJ0LAoJaXNfbnVtY2hhciwgaXNfbnVtc3RhcnQsIGlzX2hzcGFjZSwgaXNfc3BhY2UsIENQUF9CVUZfUEVFSywKCUNQUF9CVUZfR0VULCBDUFBfRk9SV0FSRCwgQ1BQX1BVVFMsIENQUF9QVVRTX1EsIENQUF9QVVRDLAoJQ1BQX1BVVENfUSwgQ1BQX05VTF9URVJNSU5BVEUsIENQUF9OVUxfVEVSTUlOQVRFX1EsCglDUFBfQlVNUF9CVUZGRVJfTElORSwgQ1BQX0JVTVBfTElORSwgQ1BQX1BSRVZfQlVGRkVSLAoJQ1BQX1BSSU5UX0RFUFMsIENQUF9UUkFESVRJT05BTCwgQ1BQX1BFREFOVElDLCBhbmQgcHJvdG90eXBlcwoJb2YgX2NwcF9zaW1wbGlmeV9wYXRobmFtZSwgX2NwcF9maW5kX2luY2x1ZGVfZmlsZSwKCV9jcHBfcmVhZF9pbmNsdWRlX2ZpbGUsIGFuZCBfY3BwX3BhcnNlX2V4cHIgdG8gY3BwaGFzaC5oLgoJTW92ZSBzdHJ1Y3QgaWZfc3RhY2sgdG8gY3BwbGliLmMuICBNb3ZlIHN0cnVjdCBjcHBfcGVuZGluZyB0bwoJY3BwaW5pdC5jLgoJQ2hhbmdlIGFsbCB1c2VzIG9mIFVfQ0hBUiB0byBiZSB1bnNpZ25lZCBjaGFyIGluc3RlYWQuCglEZWxldGUgQ1BQX1dBUk5fVU5ERUYsIENQUF9DODksIGFuZCBDUFBfUFJFUFJPQ0VTU0VELgoKMjAwMC0wMy0wOCAgSmFzb24gTWVycmlsbCAgPGphc29uQGNhc2V5LmN5Z251cy5jb20+CgoJKiBkd2FyZjJvdXQuYyAoZHdfZmRlX3N0cnVjdCk6IEFkZCAnbm90aHJvdycuCgkoZHdhcmYyb3V0X2JlZ2luX3Byb2xvZ3VlKTogU2V0IGl0LgoJKG91dHB1dF9jYWxsX2ZyYW1lX2luZm8pOiBEb24ndCBlbWl0IEVIIHVud2luZCBpbmZvIGZvciBsZWF2ZXMuCgoJKiBmbG93LmMgKGNvdW50X2Jhc2ljX2Jsb2NrcywgZmluZF9iYXNpY19ibG9ja3NfMSk6IEEgcmV0aHJvdwoJY2FuIG9jY3VyIG91dHNpZGUgb2YgYW4gRUggcmVnaW9uLgoJKiBleGNlcHQuYzogQ29ycmVjdCBjb21tZW50cyBhYm91dCByZXRocm93IGJlaGF2aW9yLgoJKHJldGhyb3dfc3ltYm9sX21hcCk6IERvIG5vdGhpbmcgaWYgIWZsYWdfbmV3X2V4Y2VwdGlvbnMuCgoyMDAwLTAzLTA4ICBBbmRyZXcgTWFjTGVvZCAgPGFtYWNsZW9kQGN5Z251cy5jb20+CgoJKiBmbG93LmMgKG1ha2VfZWRnZXMpOiBBbHdheXMgY2FsbCBtYWtlX2VoX2VkZ2UgZm9yIGNhbGxzLgoKMjAwMC0wMy0wOCAgWmFjayBXZWluYmVyZyAgPHphY2tAd29sZXJ5LmN1bWIub3JnPgoKCSogY3BwbGliLmggKHBhcnNlX3VuZGVyZmxvd190LCBDUFBfTlVMTF9CVUZGRVIpOiBEZWxldGUuCgkoc3RydWN0IGNwcF9idWZmZXIpOiBSZW1vdmUgZm5hbWUgYW5kIHVuZGVyZmxvdyBmaWVsZHMuCgkoc3RydWN0IGNwcF9yZWFkZXIpOiBSZW1vdmUgZ2V0X3Rva2VuIGZpZWxkLgoJKHN0cnVjdCBpbmNsdWRlX2hhc2gpOiBSZW5hbWUgdG8gc3RydWN0IGloYXNoLiAgQWRkIHR5cGVkZWYgdG8KCUlIQVNILgoJKHN0cnVjdCBpZl9zdGFjayk6IFJlbW92ZSBmbmFtZSBmaWVsZC4KCShJRl9TVEFDS19GUkFNRSk6IFJlbmFtZSB0byBJRl9TVEFDSy4KCgkqIGNwcGVycm9yLmMgKHByaW50X2NvbnRhaW5pbmdfZmlsZXMpOiBUcnVzdCB0aGF0IHRoZXJlIGFyZSBubwoJbWFjcm8gYnVmZmVycyBiZWxvdyB0aGUgdG9wIGZpbGUgYnVmZmVyLgoJKiBjcHBmaWxlcy5jOiBSZXBsYWNlIGFsbCByZWZlcmVuY2VzIHRvICdzdHJ1Y3QgaW5jbHVkZV9oYXNoJwoJd2l0aCAnSUhBU0gnLiAgUmVuYW1lIGluaXRpYWxpemVfaW5wdXRfYnVmZmVyIHRvCglpbml0X2lucHV0X2J1ZmZlci4gIERvbid0IHNldCBvciByZWZlcmVuY2UgY3BwX2J1ZmZlci0+Zm5hbWUsCgl1c2UgYnVmZmVyLT5paGFzaC0+bmFtZSBpbnN0ZWFkLgoJKiBjcHBoYXNoLmMgKHNwZWNpYWxfc3ltYm9sKTogVXNlIGNwcF9maWxlX2J1ZmZlci4gIFVzZSBOVUxMCglub3QgQ1BQX05VTExfQlVGRkVSLgoJKiBjcHBpbml0LmM6IFVzZSBOVUxMIG5vdCBDUFBfTlVMTF9CVUZGRVIsIElGX1NUQUNLIG5vdAoJSUZfU1RBQ0tfRlJBTUUsIElIQVNIIG5vdCBzdHJ1Y3QgaW5jbHVkZV9oYXNoLgoJKiBjcHBsaWIuYzogUmVuYW1lIGV2YWxfaWZfZXhwcmVzc2lvbiB0byBldmFsX2lmX2V4cHIuICBSZW1vdmUKCW51bGxfdW5kZXJmbG93LiAgVXNlIElGX1NUQUNLIG5vdCBJRl9TVEFDS19GUkFNRSwgSUhBU0ggbm90CglzdHJ1Y3QgaW5jbHVkZV9oYXNoLCBOVUxMIG5vdCBDUFBfTlVMTF9CVUZGRVIuICBSZW1vdmUgYWxsCglyZWZlcmVuY2VzIHRvIGNwcF9idWZmZXItPmZuYW1lIChkZWxldGUgZW50aXJlbHksIG9yIHVzZQoJLT5paGFzaC0+bmFtZSBpbnN0ZWFkKSBhbmQgSUZfU1RBQ0stPmZuYW1lLgoJKGNwcF9wdXNoX2J1ZmZlcik6IERvbid0IHNldCBuZXctPnVuZGVyZmxvdy4KCShkb19pbmNsdWRlKTogVXNlIGNwcF9maWxlX2J1ZmZlci4KCgkqIGNwcGhhc2guYyAoY29sbGVjdF9mb3JtYWxfcGFyYW1ldGVycyk6IFJlbW92ZSBkdXBsaWNhdGUKCWluY3JlbWVudCBvZiBhcmdzbGVuLiAgUGVkd2FybiBpbiBDOTkgbW9kZSBpZiBfX1ZBX0FSR1NfXyBpcwoJdXNlZCBhcyBhIG1hY3JvIGFyZ3VtZW50IG5hbWUuICBEb24ndCBhcHBlbmQgIi4uLiIgdG8gbmFtZWJ1ZgoJZm9yIHZhcmFyZ3MgbWFjcm9zLiAgQWZ0ZXIgd2UncmUgZG9uZSBzY2FubmluZywgZ28gdGhyb3VnaAoJbmFtZWJ1ZiBhbmQgbWFrZSBpdCBOVUwgc2VwYXJhdGVkLCBub3QgY29tbWEgc2VwYXJhdGVkLgoJKF9jcHBfY29tcGFyZV9kZWZzKTogUmVtb3ZlIHJlZ2lzdGVyIHRhZyBmcm9tIHZhcmlhYmxlcy4KCUV4cGVjdCBkZWZuLT5hcmduYW1lcyB0byBiZSBOVUwgc2VwYXJhdGVkLgoJKF9jcHBfZHVtcF9kZWZpbml0aW9uKTogRXhwZWN0IGRlZm4tPmFyZ25hbWVzIHRvIGJlIE5VTAoJc2VwYXJhdGVkIGFuZCBpbiBmb3J3YXJkIG9yZGVyLgoJKiBjcHBoYXNoLmg6IFVwZGF0ZSBkb2N1bWVudGF0aW9uIG9mIGFyZ25hbWVzIGZpZWxkLgoKMjAwMC0wMy0wOCAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAY3lnbnVzLmNvbT4KCgkqIGJ1aWx0aW5zLmMgKGV4cGFuZF9idWlsdGluX3N0cmxlbik6IEJlIHByZXBhcmVkIGZvciBzdHJsZW5zaQoJdG8gZmFpbC4gIERvbid0IHByZS1leHBhbmQgdGhlIHNvdXJjZSBvcGVyYW5kLgoKCSogaTM4Ni5tZCAoc3RybGVuc2kpOiBJbml0aWFsaXplIGVvc2NoYXIgYW5kIGFsaWduIGJlZm9yZSB1c2UuCgoyMDAwLTAzLTA4ICBKYXNvbiBNZXJyaWxsICA8amFzb25AY2FzZXkuY3lnbnVzLmNvbT4KCgkqIGV4cHIuYyAoZXhwYW5kX2V4cHIsIGNhc2UgQVJSQVlfUkVGKTogU3RpbGwgY2hlY2sgZm9yIG1pc3NpbmcKCUNPTlNUUlVDVE9SIGVsZW1lbnQuCgoyMDAwLTAzLTA4ICBHYXZpbiBSb21pZy1Lb2NoICA8Z2F2aW5AY2V0dXMuY3lnbnVzLmNvbT4KCgkqIG1pcHMuYyAobWlwc19leHBhbmRfcHJvbG9ndWUpOiBJZiB0aGUgbGFzdAoJbmFtZWQgYXJndW1lbnQgaXMgdGhlIHZhcmFyZyBtYXJrZXIgInZhX2xpc3QiLCB0cmVhdCBpdCBhcwoJYW4gdW5uYW1lZCBhcmd1bWVudC4KCjIwMDAtMDMtMDggIENsaW50b24gUG9wZXR6ICA8Y3BvcGV0ekBjeWdudXMuY29tPgoKCSogZGJ4b3V0LmMgKGRieG91dF9wYXJtcyk6IFdoZW4gY29ycmVjdGluZyBmb3IgcHJvbW90ZWQKCWJpZy1lbmRpYW4gcGFyYW1ldGVycywgdXNlIHRoZSBtb2RlIG9mIHRoZSBERUNMX1JUTCByYXRoZXIKCXRoYW4gVU5JVFNfUEVSX1dPUkQuCgoyMDAwLTAzLTA4ICBOYXRoYW4gU2lkd2VsbCAgPG5hdGhhbkBjb2Rlc291cmNlcnkuY29tPgoKCSogYy1jb21tb24uaCAobWFrZV9mbmFtZV9kZWNsKTogRGVjbGFyZS4KCSogYy1jb21tb24uYyAobWFrZV9mbmFtZV9kZWNsKTogRGVmaW5lLgoJKGRlY2xhcmVfaGlkZGVuX2NoYXJfYXJyYXkpOiBSZW1vdmUuCgkoZGVjbGFyZV9mdW5jdGlvbl9uYW1lKTogVXNlIG1ha2VfZm5hbWVfZGVjbC4KCSogYy1kZWNsLmMgKGNfbWFrZV9mbmFtZV9kZWNsKTogTmV3IGZ1bmN0aW9uLgoJKGluaXRfZGVjbF9wcm9jZXNzaW5nKTogU2V0IG1ha2VfZm5hbWVfZGVjbC4KClR1ZSBNYXIgIDcgMjM6NTA6MzEgMjAwMCAgSmVmZnJleSBBIExhdyAgKGxhd0BjeWdudXMuY29tKQoKCSogY2NjcC5jIChoYW5kbGVfZGlyZWN0aXZlKTogSW5pdGlhbGl6ZSBiYWNrc2xhc2hfbmV3bGluZXNfcC4KCjIwMDAtMDMtMDcgIFBoaWxpcHAgVGhvbWFzICA8cHRob21hc0BzdXNlLmRlPgoKCSogcG8vUE9URklMRVMuaW46IFJlbW92ZSBjcHBhbGxvYy5jIGZyb20gZmlsZSBsaXN0LgoKMjAwMC0wMy0wNyAgU3RldmUgQ2hhbWJlcmxhaW4gIDxzYWNAcG9ib3guY29tPgoKCSogcGouYyAocGpfZXhwYW5kX3Byb2xvZ3VlKTogY3VycmVudF9mdW5jdGlvbi0+YXJnc19pbmZvIGlzCglub3cgY3VycmVudF9mdW5jdGlvbl9hcmdzX2luZm8uCgoJKiBwai5oIChTVE9SRV9GTEFHX1ZBTFVFLCBVU0VSX0xBQkVMX1BSRUZJWCwKCUxPQ0FMX0xBQkVMX1BSRUZJWCwgQVNNX0dFTkVSQVRFX0lOVEVSTkFMX0xBQkVMLAoJQVNNX09VVFBVVF9JTlRFUk5BTF9MQUJFTCwgQVNNX09VVFBVVF9TS0lQKTogRGVmaW5lLgoKMjAwMC0wMy0wOCAgTWljaGFlbCBIYXllcyAgPG0uaGF5ZXNAZWxlYy5jYW50ZXJidXJ5LmFjLm56PgoKCSogY29uZmlnL2M0eC9jNHguaCAoUFVUX1NEQl9UWVBFKTogRGVmaW5lIHNvIHRoYXQgdGhlIHR5cGUgaW5mbyBpcwoJb3V0cHV0IGFzIGhleGFkZWNpbWFsIHJhdGhlciB0aGFuIHRoZSBkZWZhdWx0IG9jdGFsLgoKMjAwMC0wMy0wNyAgWmFjayBXZWluYmVyZyAgPHphY2tAd29sZXJ5LmN1bWIub3JnPgoKCSogY3BwaGFzaC5jIChzcGVjaWFsX3N5bWJvbCk6IEZpeCB0aGlua28gaW4gcHJldmlvdXMgY29tbWl0LgoKMjAwMC0wMy0wNyAgTmVpbCBCb290aCAgPE5laWxCQGVhcnRobGluZy5uZXQ+CgoJKiBjcHBleHAuYyAoc3RydWN0IG9wZXJhdGlvbiwgbGVmdF9zaGlmdCwgcmlnaHRfc2hpZnQsCgljcHBfcGFyc2VfZXhwcik6IENoYW5nZSBzb21lICJjaGFyInMgdG8gIlVfQ0hBUiJzLCBhbmQgc29tZQoJImludCJzIHRvICJ1bnNpZ25lZCBpbnQicy4KCSogY3BwbGliLmMgKGRldGVjdF9pZl9ub3RfZGVmaW5lZCwgZG9fYXNzZXJ0LCBkb191bmFzc2VydCk6CglTaW1pbGFybHkuCgkqIGNwcGxpYi5oOiBVcGRhdGUgZm9yIGFib3ZlLgoJKiBta2RlcHMuYyAoZGVwc19pbml0LCBkZXBzX2NhbGNfdGFyZ2V0KTogQ2FzdCBwb2ludGVycwoJcmV0dXJuZWQgZnJvbSBhbGxvY2F0aW9ucy4KCgkqIGNwcGluaXQuYyAob3B0X2NvbXAsIHBhcnNlX29wdGlvbnMpOiBOZXcgZnVuY3Rpb25zLgoJKGhhbmRsZV9vcHRpb24pOiBVc2UgcGFyc2Vfb3B0aW9uIHRvIHBhcnNlIGEgc2luZ2xlIGNvbW1hbmQKCWxpbmUgb3B0aW9uLCB0aGF0IHBvc3NpYmx5IHRha2VzIGFuIGFyZ3VtZW50LgoJKGNwcF9oYW5kbGVfb3B0aW9ucyk6IFNvcnQgdGhlIGFycmF5IG9mIGNvbW1hbmQgbGluZSBvcHRpb25zIG9uCglmaXJzdCBpbnZvY2F0aW9uIChub24tQVNDSUkgaG9zdHMgb25seSkuCgkocHJpbnRfaGVscCk6IFVwZGF0ZS4KCjIwMDAtMDMtMDcgIFphY2sgV2VpbmJlcmcgIDx6YWNrQHdvbGVyeS5jdW1iLm9yZz4KCgkqIG1rZGVwcy5jIChtdW5nZSk6IEZpeCBvZmYtYnktb25lIGJ1ZyBhbmQgaW5jb25zaXN0ZW5jaWVzIGluCgliYWNrc2xhc2ggY291bnRpbmcgbG9vcHMuICBQcm9ibGVtIG5vdGVkIGJ5IE1hdHQgS3JhYWkgPGtyYWFpQGdocy5jb20+LgoKCSogY3BwZmlsZXMuYyAoX2NwcF9maW5kX2luY2x1ZGVfZmlsZSk6IE1ha2Ugc3VyZSBpaC0+bmFtZSBpcwoJaW5pdGlhbGl6ZWQuCgkqIGNwcGluaXQuYyAoY3BwX2NsZWFudXApOiBGcmVlIGltcC0+bnNob3J0IGFsc28uCgoJKiBjcHBlcnJvci5jIChjcHBfcHJpbnRfY29udGFpbmluZ19maWxlcywKCWNwcF9wcmludF9maWxlX2FuZF9saW5lLCB2X2NwcF9tZXNzYWdlKTogUmVuYW1lIHRvCglwcmludF9jb250YWluaW5nX2ZpbGVzLCBwcmludF9maWxlX2FuZF9saW5lLCBhbmQgdl9tZXNzYWdlLgoJKiBjcHBleHAuYyAoY3BwX3BhcnNlX2V4cHIsIGNwcF9wYXJzZV9lc2NhcGUsIGNwcF9sZXgpOiBSZW5hbWUKCXRvIF9jcHBfcGFyc2VfZXhwciwgcGFyc2VfZXNjYXBlLCBhbmQgbGV4LgoJKHBhcnNlX2NoYXJjb25zdCk6IFJlbW92ZSBicm9rZW4gbXVsdGlieXRlIHN1cHBvcnQuCgkqIGNwcGZpbGVzLmMgKGluY2x1ZGVfaGFzaCk6IE1ha2Ugc3RhdGljLgoJKGNwcF9pbmNsdWRlZCk6IE5ldyBmdW5jdGlvbi4KCShtZXJnZV9pbmNsdWRlX2NoYWlucywgZmluZF9pbmNsdWRlX2ZpbGUsIGZpbmNsdWRlLAoJc2ltcGxpZnlfcGF0aG5hbWUpOiBSZW5hbWUgdG8gX2NwcF9tZXJnZV9pbmNsdWRlX2NoYWlucywKCV9jcHBfZmluZF9pbmNsdWRlX2ZpbGUsIF9jcHBfcmVhZF9pbmNsdWRlX2ZpbGUsIGFuZAoJX2NwcF9zaW1wbGlmeV9wYXRobmFtZS4KCSogY3BwaGFzaC5jIChjcHBfbG9va3VwLCBmcmVlX2RlZmluaXRpb24sIGRlbGV0ZV9tYWNybywKCWNwcF9pbnN0YWxsLCBjcmVhdGVfZGVmaW5pdGlvbiwgbWFjcm9leHBhbmQsIGNvbXBhcmVfZGVmcywKCWR1bXBfZGVmaW5pdGlvbik6IFJlbmFtZSB0byBfY3BwX2xvb2t1cCwgX2NwcF9mcmVlX2RlZmluaXRpb24sCglfY3BwX2RlbGV0ZV9tYWNybywgX2NwcF9pbnN0YWxsLCBfY3BwX2NyZWF0ZV9kZWZpbml0aW9uLAoJX2NwcF9tYWNyb2V4cGFuZCwgX2NwcF9jb21wYXJlX2RlZnMsIGFuZCBfY3BwX2R1bXBfZGVmaW5pdGlvbi4KCSogY3BwaW5pdC5jIChjcHBfaGFuZGxlX29wdGlvbik6IFJlbmFtZSB0byBoYW5kbGVfb3B0aW9uLCBtYWtlCglzdGF0aWMuCgkqIGNwcGxpYi5jOiBSZW1vdmUgZXh0ZXJuIHByb3RvdHlwZSBvZiBjcHBfcGFyc2VfZXhwci4KCgkqIGNwcGhhc2guaDogVXBkYXRlIHByb3RvdHlwZXMuCgkqIGNwcGxpYi5oOiBMaWtld2lzZS4gIFByb3RvdHlwZSBfY3BwX3BhcnNlX2V4cHIgaGVyZS4KCjIwMDAtMDMtMDcgIEFuZHJldyBIYWxleSAgPGFwaEBjeWdudXMuY29tPgoKCSogY29uZmlnL21pcHMvbWlwcy5oIChQVFJESUZGX1RZUEUpOiBSZXZlcnQgYnJva2VuIGNoYW5nZTsKCVBUUkRJRkZfVFlQRSBzaG91bGQgYmUgYmFzZWQgc29sZWx5IG9uIFBtb2RlLgoJKFNJWkVfVFlQRSk6IGRpdHRvLgoKMjAwMC0wMy0wNyAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogcnRsLmggKHJ0dW5pb25fZGVmKTogQ29uc3RpZnkgbWVtYmVyIGBydHN0cicuCgkoZW1pdF9saW5lX25vdGVfYWZ0ZXIsIGVtaXRfbGluZV9ub3RlLCBlbWl0X2xpbmVfbm90ZV9mb3JjZSwKCWVtaXRfbm90ZSwgZGVjb2RlX2FzbV9vcGVyYW5kcyk6IENvbnN0aWZ5LgoKCSogY3NlLmMgKGNhbm9uX2hhc2gpOiBMaWtld2lzZS4KCgkqIGRieG91dC5jIChkYnhvdXRfYmxvY2spOiBMaWtld2lzZS4KCgkqIGRpYWdub3N0aWMuYyAoZmlsZV9hbmRfbGluZV9mb3JfYXNtLCB2X2Vycm9yX2Zvcl9hc20sCgl2X3dhcm5pbmdfZm9yX2FzbSk6IExpa2V3aXNlLgoKCSogZHdhcmZvdXQuYyAoZnVuY3Rpb25fc3RhcnRfbGFiZWwpOiBMaWtld2lzZS4KCgkqIGVtaXQtcnRsLmMgKGVtaXRfbGluZV9ub3RlX2FmdGVyLCBlbWl0X2xpbmVfbm90ZSwgZW1pdF9ub3RlLAoJZW1pdF9saW5lX25vdGVfZm9yY2UpOiBMaWtld2lzZS4KCgkqIGZpbmFsLmMgKGxhc3RfZmlsZW5hbWUsIGFzbV9pbnNuX2NvdW50LCBmaW5hbF9zY2FuX2luc24sCglvdXRwdXRfc291cmNlX2xpbmUpOiBMaWtld2lzZS4KCgkqIGZ1bmN0aW9uLmggKHN0cnVjdCBlbWl0X3N0YXR1cyk6IExpa2V3aXNlLgoKCSogZ2NzZS5jIChoYXNoX2V4cHJfMSk6IExpa2V3aXNlLgoKCSogZ2VuYXR0ci5jIChnZW5fYXR0ciwgbWFpbik6IExpa2V3aXNlLgoKCSogZ2VuYXR0cnRhYi5jIChzdHJ1Y3QgZnVuY3Rpb25fdW5pdCwgY3VycmVudF9hbHRlcm5hdGl2ZV9zdHJpbmcsCgl3cml0ZV9hdHRyX3ZhbHVlcSwgbl9jb21tYV9lbHRzLCBuZXh0X2NvbW1hX2VsdCwgYXR0cl9lcSwKCWF0dHJfbnVtZXJhbCwgY2hlY2tfYXR0cl90ZXN0LCBjaGVja19hdHRyX3ZhbHVlLAoJY29udmVydF9zZXRfYXR0cl9hbHRlcm5hdGl2ZSwgY29udmVydF9zZXRfYXR0ciwKCWNvbXB1dGVfYWx0ZXJuYXRpdmVfbWFzaywgc2ltcGxpZnlfYnlfZXhwbG9kaW5nLCBnZW5fYXR0ciwKCWdlbl91bml0KTogTGlrZXdpc2UuCgoJKiBnZW5mbGFncy5jIChnZW5faW5zbik6IExpa2V3aXNlLgoKCSogZ2VuZ2VucnRsLmMgKHR5cGVfZnJvbV9mb3JtYXQpOiBMaWtld2lzZS4KCgkqIGdlbm9waW5pdC5jIChnZW5faW5zbik6IExpa2V3aXNlLgoKCSogZ2Vub3V0cHV0LmMgKG5fb2NjdXJyZW5jZXMsIHByb2Nlc3NfdGVtcGxhdGUsIHByb2Nlc3NfdGVtcGxhdGUpOgoJTGlrZXdpc2UuCgoJKiBnZ2MtcGFnZS5jIChnZ2Nfc2V0X21hcmssIGdnY19tYXJrX2lmX2djYWJsZSwgZ2djX2dldF9zaXplKToKCUxpa2V3aXNlLgoKCSogZ2djLXNpbXBsZS5jIChnZ2Nfc2V0X21hcmssIGdnY19tYXJrX2lmX2djYWJsZSwgZ2djX2dldF9zaXplKToKCUxpa2V3aXNlLgoKCSogZ2djLmggKGdnY19tYXJrX3N0cmluZywgZ2djX21hcmssIGdnY19tYXJrX2lmX2djYWJsZSwKCWdnY19zZXRfbWFyaywgZ2djX2dldF9zaXplKTogTGlrZXdpc2UuCgoJKiBvYmpjL29iamMtYWN0LmMgKGJ1aWxkX21vZHVsZV9kZXNjcmlwdG9yLCBmaW5pc2hfb2JqYyk6IExpa2V3aXNlLgoKCSogb3B0YWJzLmMgKGluaXRfb25lX2xpYmZ1bmMpOiBMaWtld2lzZS4KCgkqIG91dHB1dC5oIChhc3NlbWJsZV9zdGFydF9mdW5jdGlvbik6IExpa2V3aXNlLgoKCSogcmVjb2cuYyAoZGVjb2RlX2FzbV9vcGVyYW5kcyk6IExpa2V3aXNlLgoKCSogdG9wbGV2LmMgKHJlc3Rfb2ZfY29tcGlsYXRpb24pOiBMaWtld2lzZS4KCgkqIHRyZWUuaCAoZW1pdF9saW5lX25vdGVfYWZ0ZXIsIGVtaXRfbGluZV9ub3RlLAoJZW1pdF9saW5lX25vdGVfZm9yY2UpOiBMaWtld2lzZS4KCgkqIHZhcmFzbS5jIChhc21fb3V0cHV0X2JzcywgYXNtX291dHB1dF9hbGlnbmVkX2JzcywKCWFzbV9lbWl0X3VuaW5pdGlhbGlzZWQsIGFzc2VtYmxlX3N0YXJ0X2Z1bmN0aW9uLAoJYXNzZW1ibGVfdmFyaWFibGUsIGNvbnN0X2hhc2gsIGNvbXBhcmVfY29uc3RhbnRfMSwKCWZpbmRfcG9vbF9jb25zdGFudCwgbWFya19jb25zdGFudF9wb29sLCBhc3NlbWJsZV9hbGlhcyk6IExpa2V3aXNlLgoKCSogeGNvZmZvdXQuaCAoREJYX0ZJTklTSF9TWU1CT0wpOiBMaWtld2lzZS4KCgkqIGFscGhhL2FscGhhLm1kIChjYWxsX3ZtcywgY2FsbF92YWx1ZV92bXMpOiBMaWtld2lzZS4KCgkqIGFybS9hb2YuaCAoQVNNX09VVFBVVF9BU0NJSSk6IExpa2V3aXNlLgoKCSogYXJtL2FvdXQuaCAoQVNNX09VVFBVVF9BU0NJSSk6IExpa2V3aXNlLgoKCSogYXJtL2FybS1wcm90b3MuaCAob3V0cHV0X2FzY2lpX3BzZXVkb19vcCwgYXJtX2RsbGV4cG9ydF9uYW1lX3AsCglhcm1fZGxsaW1wb3J0X25hbWVfcCk6IExpa2V3aXNlLgoKCSogYXJtL2FybS5jIChhcm1fZW5jb2RlX2NhbGxfYXR0cmlidXRlLCBvdXRwdXRfYXNjaWlfcHNldWRvX29wKToKCUxpa2V3aXNlLgoKCSogYXJtL2FybS5oIChBU01fT1VUUFVUX01JX1RIVU5LKTogTGlrZXdpc2UuCgoJKiBhcm0vZWxmLmggKEFTTV9GSU5JU0hfREVDTEFSRV9PQkpFQ1QpOiBMaWtld2lzZS4KCgkqIGFybS9wZS5jIChhcm1fZGxsZXhwb3J0X25hbWVfcCwgYXJtX2RsbGltcG9ydF9uYW1lX3AsCglhcm1fbWFya19kbGxleHBvcnQsIGFybV9tYXJrX2RsbGltcG9ydCwKCWFybV9wZV9lbmNvZGVfc2VjdGlvbl9pbmZvKTogTGlrZXdpc2UuCgoJKiBhcm0vdGVsZi5oIChBU01fT1VUUFVUX0RFRl9GUk9NX0RFQ0xTLAoJQVNNX0ZJTklTSF9ERUNMQVJFX09CSkVDVCk6IExpa2V3aXNlLgoKCSogYXJtL3RodW1iLmMgKHRodW1iX2Z1bmN0aW9uX3Byb2xvZ3VlKTogTGlrZXdpc2UuCgoJKiBhcm0vdGh1bWIuaCAoQVNNX09VVFBVVF9BU0NJSSk6IExpa2V3aXNlLgoKCSogYXZyL2F2ci5oIChBU01fRklOSVNIX0RFQ0xBUkVfT0JKRUNUKTogTGlrZXdpc2UuCgoJKiBjbGlwcGVyL2NsaXguaCAoQVNNX09VVFBVVF9BU0NJSSk6IExpa2V3aXNlLgoKCSogZng4MC9meDgwLmggKEFTTV9PVVRQVVRfQVNDSUkpOiBMaWtld2lzZS4KCgkqIGkzODYvY3lnd2luLmggKEFTTV9PVVRQVVRfU0VDVElPTl9OQU1FKTogTGlrZXdpc2UuCgoJKiBpMzg2L2ZyZWVic2QuaCAoQVNNX0ZJTklTSF9ERUNMQVJFX09CSkVDVCk6IExpa2V3aXNlLgoKCSogaTM4Ni9pMzg2LWludGVyaXguaCAoQVNNX09VVFBVVF9MSU1JVEVEX1NUUklORywKCUFTTV9PVVRQVVRfQVNDSUksIEFTTV9PVVRQVVRfU0VDVElPTl9OQU1FKTogTGlrZXdpc2UuCgoJKiBpMzg2L2kzODYtcHJvdG9zLmggKGFzbV9vdXRwdXRfZnVuY3Rpb25fcHJlZml4KTogTGlrZXdpc2UuCgoJKiBpMzg2L2kzODYuYyAoYXNtX291dHB1dF9mdW5jdGlvbl9wcmVmaXgpOiBMaWtld2lzZS4KCgkqIGkzODYvaTM4NmVsZi5oIChBU01fT1VUUFVUX0FTQ0lJKTogTGlrZXdpc2UuCgoJKiBpMzg2L29zZnJvc2UuaCAoQVNNX0ZJTklTSF9ERUNMQVJFX09CSkVDVCk6IExpa2V3aXNlLgoKCSogaTM4Ni9wdHg0LWkuaCAoQVNNX09VVFBVVF9BU0NJSSk6IExpa2V3aXNlLgoKCSogaTM4Ni9zY281LmggKEFTTV9GSU5JU0hfREVDTEFSRV9PQkpFQ1QsCglBU01fT1VUUFVUX0xJTUlURURfU1RSSU5HLCBBU01fT1VUUFVUX0FTQ0lJLAoJQVNNX09VVFBVVF9TRUNUSU9OX05BTUUpOiBMaWtld2lzZS4KCgkqIGkzODYvc3lzdjQuaCAoQVNNX09VVFBVVF9BU0NJSSk6IExpa2V3aXNlLgoKCSogaTg2MC9wYXJhZ29uLmggKEFTTV9PVVRQVVRfQVNDSUkpOiBMaWtld2lzZS4KCgkqIGk4NjAvc3lzdjMuaCAoQVNNX09VVFBVVF9BU0NJSSk6IExpa2V3aXNlLgoKCSogbTMyci9tMzJyLmMgKG0zMnJfZW5jb2RlX3NlY3Rpb25faW5mbyk6IExpa2V3aXNlLgoKCSogbWNvcmUtZWxmLmggKEFTTV9GSU5JU0hfREVDTEFSRV9PQkpFQ1QpOiBMaWtld2lzZS4KCgkqIG1jb3JlL21jb3JlLmMgKG1jb3JlX2VuY29kZV9zZWN0aW9uX2luZm8pOiBMaWtld2lzZS4KCgkqIG1pcHMvZWxmLmggKEFTTV9GSU5JU0hfREVDTEFSRV9PQkpFQ1QpOiBMaWtld2lzZS4KCgkqIG1pcHMvZWxmNjQuaCAoQVNNX0ZJTklTSF9ERUNMQVJFX09CSkVDVCk6IExpa2V3aXNlLgoKCSogbWlwcy9pcmlzNi5oIChBU01fRklOSVNIX0RFQ0xBUkVfT0JKRUNUKTogTGlrZXdpc2UuCgoJKiBtaXBzL21pcHMuaCAoQVNNX09VVFBVVF9JREVOVCk6IExpa2V3aXNlLgoKCSogbWlwcy9taXBzLm1kIChtb3ZkaSwgbW92c2kpOiBMaWtld2lzZS4KCgkqIG1pcHMvbmV0YnNkLmggKEFTTV9GSU5JU0hfREVDTEFSRV9PQkpFQ1QpOiBMaWtld2lzZS4KCgkqIG5ldGJzZC5oIChBU01fRklOSVNIX0RFQ0xBUkVfT0JKRUNUKTogTGlrZXdpc2UuCgoJKiBvcGVuYnNkLmggKEFTTV9GSU5JU0hfREVDTEFSRV9PQkpFQ1QpOiBMaWtld2lzZS4KCgkqIHB0eDQuaCAoQVNNX0ZJTklTSF9ERUNMQVJFX09CSkVDVCwgQVNNX09VVFBVVF9MSU1JVEVEX1NUUklORywKCUFTTV9PVVRQVVRfQVNDSUkpOiBMaWtld2lzZS4KCgkqIHJzNjAwMC9yczYwMDAuYyAocnM2MDAwX2FsbG9jYXRlX3N0YWNrX3NwYWNlLCBvdXRwdXRfZXBpbG9nLAoJb3V0cHV0X21pX3RodW5rLCBvdXRwdXRfdG9jKTogTGlrZXdpc2UuCgoJKiByczYwMDAvcnM2MDAwLm1kIChtb3ZzaSk6IExpa2V3aXNlLgoKCSogcnM2MDAwL3N5c3Y0LmggKEFTTV9PVVRQVVRfSU5ULCBBU01fT1VUUFVUX1NFQ1RJT05fTkFNRSk6IExpa2V3aXNlLgoKCSogdGFob2UvaGFycmlzLmggKEFTTV9PVVRQVVRfQVNDSUkpOiBMaWtld2lzZS4KCgkqIHY4NTAvdjg1MC5jIChwcmludF9vcGVyYW5kLCBwcmludF9vcGVyYW5kX2FkZHJlc3MsCgl2ODUwX2VuY29kZV9kYXRhX2FyZWEpOiBMaWtld2lzZS4KCjIwMDAtMDMtMDcgIENsaW50b24gUG9wZXR6ICA8Y3BvcGV0ekBjeWdudXMuY29tPgoKCSogY29uZmlnL21pcHMvbWlwcy5tZCAoemVyb19leHRlbmRzaWRpMik6IEFsd2F5cyBmb3JjZSBvcGVyYW5kCglvbmUgdG8gbWVtb3J5IGZvciBtaXBzMTYuCgpNb24gTWFyICA2IDE1OjIyOjI5IDIwMDAgIFJpY2hhcmQgS2VubmVyICA8a2VubmVyQHZsc2kxLnVsdHJhLm55dS5lZHU+CgoJKiB0cmVlLmggKElOVF9DU1RfTFQsIElOVF9DU1RfTFRfVU5TSUdORUQpOiBSZW1vdmUgdW5uZWVkZWQgY2FzdHMuCgkoc3RydWN0IHRyZWVfaW50X2NzdCk6IGludF9jc3RfbG93IGlzIG5vdyB1bnNpZ25lZCBIT1NUX1dJREVfSU5ULgoJKGF0dHJpYnV0ZV9oYXNoX2xpc3QsIHR5cGVfaGFzaF9jYW5vbik6IGhhc2hjb2RlIGlzIG5vdyB1bnNpZ25lZC4KCSh0eXBlX2hhc2hfbG9va3VwLCB0eXBlX2hhc2hfYWRkLCB0eXBlX2hhc2hfbGlzdCk6IExpa2V3aXNlLgoJKG1pbl9wcmVjaXNpb24pOiBSZXN1bHQgaXMgdW5zaWduZWQuCgkoYWRkX2RvdWJsZSwgbmVnX2RvdWJsZSwgbXVsX2RvdWJsZSk6IExvdyB3b3JkIGlzIHVuc2lnbmVkLgoJKGxzaGlmdF9kb3VibGUsIHJzaGlmdF9kb3VibGUsIGxyb3RhdGVfZG91YmxlKTogTGlrZXdpc2UuCgkocnJvdGF0ZV9kb3VibGUsIGRpdl9hbmRfcm91bmRfZG91YmxlKTogTGlrZXdpc2UuCgkodHJlZV9mbG9vcl9sb2cyLCBjb21wYXJlX3RyZWVfaW50KTogTmV3IGZ1bmN0aW9ucy4KCShwcmVzZXJ2ZV9ydGxfZXhwcl90ZW1wcyk6IE5ldyBkZWNsYXJhdGlvbi4KCSogYy1jb21tb24uYyAoZGVjbGFyZV9oaWRkZW5fY2hhcl9hcnJheSk6IFVzZSBjb21wYXJlX3RyZWVfaW50LgoJKGRlY2xfYXR0cmlidXRlcyk6IFVzZSB0cmVlX2xvZzIgdG8gZmluZCBhbGlnbm1lbnQuCglDaGVjayBmb3IgVFJFRV9JTlRfQ1NUX0hJR0ggZm9yIGZvcm1hdCBhcmdzLgoJKG1pbl9wcmVjaXNpb24pOiBOb3cgdW5zaWduZWQuCglVc2UgdHJlZV9mbG9vcl9sb2cyLgoJKHRydXRodmFsdWVfY29udmVyc2lvbik6IERlbGV0ZSBsb25nLWRpc2FibGVkIGNvZGUuCgkqIGMtZGVjbC5jIChmaW5pc2hfc3RydWN0KTogQ2xlYW4gdXAgdGVzdHMgb24gZmllbGQgd2lkdGguCgkoZmluaXNoX2Z1bmN0aW9uKTogVXNlIGNvbXBhcmVfdHJlZV9pbnQuCgkqIGMtcHJhZ21hLmMgKGhhbmRsZV9wcmFnbWFfdG9rZW4pOiBVc2UgdHJlZV9sb2cyIGZvciBhbGlnbm1lbnQuCgkqIGMtdHlwZWNrLmMgKGNvbXB0eXBlcyk6IFVzZSB0cmVlX2ludF9jc3RfZXF1YWwuCgkoZGVmYXVsdF9jb252ZXJzaW9uLCBkaWdlc3RfaW5pdCk6IFVzZSBjb21wYXJlX3RyZWVfaW50LgoJKGJ1aWxkX2JpbmFyeV9vcCk6IFVzZSBpbnRlZ2VyX2FsbF9vbmVzcCBhbmQgY29tcGFyZV90cmVlX2ludC4KCUZpeCB0eXBlIGVycm9ycyBpbiBmb3JtaW5nIG1hc2tzLgoJKiBjYWxscy5jIChpbml0aWFsaXplX2FyZ3VtZW50X2luZm9ybWF0aW9uKTogVXNlIGNvbXBhcmVfdHJlZV9pbnQuCgkqIGRieG91dC5jIChkYnhvdXRfdHlwZSk6IENhc3QgVFJFRV9JTlRfQ1NUX0xPVyB0byBIT1NUX1dJREVfSU5ULgoJKiBleGNlcHQuYyAoZXhwYW5kX2VoX3JlZ2lvbl9zdGFydF90cmVlKTogVXNlIGNvbXBhcmVfdHJlZV9pbnQuCgkqIGV4cHIuYyAoaXNfemVyb3NfcCwgY2FzZSBJTlRFR0VSX0NTVCk6IFVzZSBpbnRlZ2VyX3plcm9wLgoJKHN0b3JlX2ZpZWxkKTogVXNlIGNvbXBhcmVfdHJlZV9pbnQuCgkoZXhwYW5kX2V4cHIsIGNhc2UgQ09OU1RSVUNUT1IpOiBVc2UgVFlQRV9TSVpFX1VOSVQuCgkoZXhwYW5kX2V4cHIsIGNhc2UgQVJSQVlfUkVGKTogVXNlIGNvbXBhcmVfdHJlZV9pbnQuCgkoZG9fanVtcCwgY2FzZSBCSVRfQU5EX0VYUFIpOiBVc2UgdHJlZV9mbG9vcl9sb2cyLgoJKGRvX3N0b3JlX2ZsYWcpOiBVc2UgY29tcGFyZV90cmVlX2ludC4KCSogZm9sZC1jb25zdC5jIChlbmNvZGUsIGRlY29kZSk6IExvdyBwYXJ0IGlzIGFsd2F5cyB1bnNpZ25lZC4KCShmb3JjZV9maXRfdHlwZSwgYWRkX2RvdWJsZSwgbmVnX2RvdWJsZSwgbXVsX2RvdWJsZSk6IExpa2V3aXNlLgoJKGxzaGlmdF9kb3VibGUsIHJzaGlmdF9kb3VibGUsIGxyb3RhdGVfZG91YmxlKTogTGlrZXdpc2UuCgkocnJvdGF0ZV9kb3VibGUsIGRpdl9hbmRfcm91bmRfZG91YmxlLCBpbnRfY29uc3RfYmlub3ApOiBMaWtld2lzZS4KCShmb2xkX2NvbnZlcnQpOiBVc2UgY29tcGFyZV90cmVlX2ludC4KCShvcGVyYW5kX2VxdWFsX3AsIGNhc2UgSU5URUdFUl9DU1QpOiBVc2UgdHJlZV9pbnRfY3N0X2VxdWFsLgoJKGludmVydF90cnV0aHZhbHVlLCBjYXNlIElOVEVHRVJfQ1NUKTogTGlrZXdpc2UuCgkoZm9sZCk6IFVzZSBjb21wYXJlX3RyZWVfaW50OyBhZGQgY2FzdHMgZm9yIHVuc2lnbmVkIFRSRUVfSU5UX0NTVF9MT1cuCgkqIG1rZGVwcy5jIChkZXBzX2R1bW15X3RhcmdldHMpOiBNYWtlIEkgdW5zaWduZWQuCgkqIHJ0bC5oIChhZGRfZG91YmxlLCBuZWdfZG91YmxlLCBtdWxfZG91YmxlKTogTG93IHdvcmRzIGFyZSB1bnNpZ25lZC4KCShsc2hpZnRfZG91YmxlLCByc2hpZnRfZG91YmxlLCBscm90YXRlX2RvdWJsZSwgcnJvdGF0ZV9kb3VibGUpOgoJTGlrZXdpc2UuCgkqIHN0bXQuYyAoZXhwYW5kX2RlY2wpOiBVc2UgY29tcGFyZV90cmVlX2ludCBhbmQgbW9kZV9mb3Jfc2l6ZV90cmVlLgoJKGV4cGFuZF9lbmRfY2FzZSk6IFVzZSBjb21wYXJlX3RyZWVfaW50LgoJKGVzdGltYXRlX2Nhc2VfY29zdHMpOiBDYXN0IFRSRUVfSU5UX0NTVF9MT1cgdG8gSE9TVF9XSURFX0lOVC4KCSogc3Rvci1sYXlvdXQuYyAobW9kZV9mb3Jfc2l6ZV90cmVlKTogVXNlIGNvbXBhcmVfdHJlZV9pbnQuCgkobGF5b3V0X2RlY2wpOiBMaWtld2lzZS4KCShsYXlvdXRfcmVjb3JkLCBsYXlvdXRfdW5pb24pOiBNYWtlIHNpemVzIHVuc2lnbmVkLgoJKGxheW91dF90eXBlLCBjYXNlIFZPSURfVFlQRSk6IFRZUEVfU0laRSBtdXN0IGJlIGJpdHNpemV0eXBlLgoJKGxheW91dF90eXBlLCBjYXNlIFFVQUxfVU5JT05fVFlQRSk6IFVzZSBjb21wYXJlX3RyZWVfaW50LgoJKiB0cmVlLmMgKHN0cnVjdCB0eXBlX2hhc2gpOiBoYXNoY29kZSBpcyB1bnNpZ25lZC4KCShidWlsZF90eXBlX2F0dHJpYnV0ZV92YXJpYW50LCB0eXBlX2hhc2hfbGlzdCk6IExpa2V3aXNlLgoJKHR5cGVfaGFzaF9sb29rdXAsIHR5cGVfaGFzaF9hZGQsIHR5cGVfaGFzaF9jYW5vbik6IExpa2V3aXNlLgoJKGF0dHJpYnV0ZV9oYXNoX2xpc3QsIGJ1aWxkX2FycmF5X3R5cGUsIGJ1aWxkX21ldGhvZF90eXBlKTogTGlrZXdpc2UuCgkoYnVpbGRfY29tcGxleF90eXBlKTogTGlrZXdpc2UuCgkocmVhbF92YWx1ZV9mcm9tX2ludF9jc3QpOiBSZW1vdmUgdW5uZWVkZWQgY2FzdHMuCgkoaW50ZWdlcl9hbGxfb25lc3ApOiBBZGQgY2FzdHMuCgkodHJlZV9mbG9vcl9sb2cyLCBjb21wYXJlX3RyZWVfaW50KTogTmV3IGZ1bmN0aW9ucy4KCShidWlsZF9pbmRleF90eXBlKTogVXNlIHRyZWVfaW50X2NzdF9zZ24uCgkqIHZhcmFzbS5jIChhc3NlbWJsZV92YXJpYWJsZSk6IFVzZSBjb21wYXJlX3RyZWVfaW50LgoKMjAwMC0wMy0wNiAgSmFzb24gTWVycmlsbCAgPGphc29uQGNhc2V5LmN5Z251cy5jb20+CgoJKiBjcHBoYXNoLmMgKGNvbGxlY3RfZXhwYW5zaW9uKTogQWxzbyBjYXRjaCAjIyBhdCBzdGFydCBvZiBtYWNyby4KCgkqIHZhcmFzbS5jIChtYWtlX2RlY2xfcnRsKTogRG9uJ3QgYWRkIGEgbnVtYmVyIHRvIG1lbWJlcnMgb2YKCWxvY2FsIGNsYXNzZXMuCgkobWFrZV9mdW5jdGlvbl9ydGwpOiBMaWtld2lzZS4KCjIwMDAtMDMtMDYgIEFsZXhhbmRyZSBPbGl2YSAgPG9saXZhQGxzZC5pYy51bmljYW1wLmJyPgoKCSogZ2NzZS5jIChjb21wdXRlX2Nhbl9jb3B5KTogQWRqdXN0IGlmL2Vsc2UgYmxvY2tzIGZyb20gcnRoJ3MKCXBhdGNoIGZyb20gMjAwMC0wMS0yOC4KCjIwMDAtMDMtMDYgIENsaW50b24gUG9wZXR6ICA8Y3BvcGV0ekBjeWdudXMuY29tPgoKCSogY29uZmlnL3NoL3NoLmM6IChiYXJyaWVyX2FsaWduKTogSGFuZGxlIGEgZGVsYXkgc2xvdCB0aGF0IGlzCglmaWxsZWQgd2l0aCBhbiBpbnNuIGZyb20gdGhlIGp1bXAgdGFyZ2V0LgoKMjAwMC0wMy0wNyAgTWljaGFlbCBIYXllcyAgPG0uaGF5ZXNAZWxlYy5jYW50ZXJidXJ5LmFjLm56PgoKCSogY29uZmlnL2M0eC9jNHgtcHJvdG9zLmggKGM0eF9nbG9iYWxfbmFtZSk6IENvbnN0aWZ5IGNoYXIgKi4KCShjNHhfZXh0ZXJuYWxfcmVmKTogTGlrZXdpc2UuCgkqIGNvbmZpZy9jNHgvYzR4LmMgKHN0cnVjdCBuYW1lX2xpc3QpOiBMaWtld2lzZS4KCjE5OTktMTItMTYgIEJlbiBDb2xsaW5zICA8YmNvbGxpbnNAZGViaWFuLm9yZz4KCgkqIE1ha2VmaWxlLmluOiBQYXNzIGEgbmV3IE1VTFRJTElCX0VYQ0xVU0lPTlMgb3B0aW9uIGFzIHRoZSBzaXh0aAoJYXJndW1lbnQgdG8gZ2VubXVsdGlsaWIuCgkqIGdlbm11bHRpbGliOiBhY2NlcHQgbmV3IE1VTFRJTElCX0VYQ0xVU0lPTlMgb3B0aW9uIGFuZCBvdXRwdXQKCXRoZSBjb250ZW50cyBpbnRvIHRoZSBtdWx0aWxpYi5oIGhlYWRlci4KCSogZ2NjLmM6IERlY2xhcmUgbXVsdGlsaWJfZXhjbHVzaW9ucyBmb3IgdGhlIHNwZWNzIGZpbGUuCgkoc2V0X211bHRpbGliX2Rpcik6IFVzZSBpdC4KCShwcmludF9tdWx0aWxpYl9pbmZvKTogTGlrZXdpc2UuCgkqIHQtbGludXg2NDogRGVjbGFyZSBhcmd1bWVudHMgZm9yIG5ldyBNVUxUSUxJQl9FWENMVVNJT05TIG9wdGlvbgoJdG8gcGFzcyB0byBnZW5tdWx0aWxpYi4KCjIwMDAtMDMtMDYgIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIGJ1aWx0aW5zLmMgKGJ1aWx0X2luX2NsYXNzX25hbWVzLCBidWlsdF9pbl9uYW1lcyk6IENvbnN0aWZ5IGEKCWNoYXIqLgoKCSogZ21vbi1zb2wyLmMgKG1vbnN0YXJ0dXAsIG1vbmNvbnRyb2wpOiBDYXN0IHB0cnMgdG8gbG9uZywgbm90CglpbnQuCgkoX21jbGVhbnVwKTogRW5zdXJlIHZhbHVlIG1hdGNoZXMgZm9ybWF0IHNwZWNpZmllciBpbiBzcHJpbnRmLgoKCSogY3BwaGFzaC5jIChzcGVjaWFsX3N5bWJvbCk6IERvbid0IG5lZWRsZXNzbHkgY2FzdCBhd2F5Cgljb25zdC1uZXNzLgoKCSogY3BwaW5pdC5jIChiYXNlX25hbWUpOiBEZWxldGUgdW51c2VkIHByb3RvdHlwZS4KCgkqIG1rZGVwcy5jIChkZXBzX2luaXQpOiBNYWtlIGRlZmluaXRpb24gSyZSIHNhZmUuCgoJKiB0cmVlLmggKGJ1aWx0X2luX2NsYXNzX25hbWVzLCBidWlsdF9pbl9uYW1lcyk6IENvbnN0aWZ5IGEKCWNoYXIqLgoKMjAwMC0wMy0wNiAgSmFrdWIgSmVsaW5layAgPGpha3ViQHJlZGhhdC5jb20+CgoJKiBjb25maWcvc3BhcmMvc3BhcmMuYyAoZWxpZ2libGVfZm9yX2VwaWxvZ3VlX2RlbGF5KTogQWNjZXB0CglmbG9hdGluZyBwb2ludCBpbnN0cnVjdGlvbnMgZm9yIGVwaWxvZ3VlIGRlbGF5LgoKCSogY29uZmlnL3NwYXJjL3NwYXJjLmggKEFTTV9BUkNINjRfU1BFQyk6IFBhc3MgLW5vLXVuZGVjbGFyZWQtcmVncwoJdG8gZ2FzIGlmIGl0IHN1cHBvcnRzIC5yZWdpc3RlciBwc2V1ZG8uCgoJKiByZWFsLmggKE1BWF9MT05HX0RPVUJMRV9UWVBFX1NJWkUpOiBEZWZpbmUgdG8KCUxPTkdfRE9VQkxFX1RZUEVfU0laRSBpZiBub3QgZGVmaW5lZC4KCVVzZSBNQVhfTE9OR19ET1VCTEVfVFlQRV9TSVpFIGluc3RlYWQgb2YKCUxPTkdfRE9VQkxFX1RZUEVfU0laRSBpbiBwcmVwcm9jZXNzb3IgaWYgY2xhdXNlcy4KCSogcmVhbC5jOiBMaWtld2lzZS4KCSogZ2VuZ2VucnRsLmM6IExpa2V3aXNlLgoJKiBwcmludC1ydGwuYzogTGlrZXdpc2UuCgkqIHJ0bC5jOiBMaWtld2lzZS4KCSogY29uZmlnL3NwYXJjL3NvbDItc2xkLTY0LmggKFRBUkdFVF9ERUZBVUxUKTogU2V0CglNQVNLX0xPTkdfRE9VQkxFXzEyOC4KCSogY29uZmlnL3NwYXJjL3NvbDIuaCAoVEFSR0VUX0RFRkFVTFQpOiBMaWtld2lzZS4KCSogY29uZmlnL3NwYXJjL3NwNjQtZWxmLmggKFRBUkdFVF9ERUZBVUxUKTogTGlrZXdpc2UuCgkqIGNvbmZpZy9zcGFyYy9saW51eDY0IChUQVJHRVRfREVGQVVMVCk6IExpa2V3aXNlLgoJKFNVQlRBUkdFVF9TV0lUQ0hFUyk6IERlZmluZS4KCShDUFBfQVJDSDMyX1NQRUMpOiBEZWZpbmUgX19MT05HX0RPVUJMRV8xMjhfXyBpZiBjb21waWxpbmcKCXdpdGggLW1sb25nLWRvdWJsZS0xMjguCgkoTE9OR19ET1VCTEVfVFlQRV9TSVpFKTogRGVmaW5lIGRlcGVuZGluZyBvbiB0YXJnZXRfZmxhZ3MuCgkoTUFYX0xPTkdfRE9VQkxFX1RZUEVfU0laRSk6IERlZmluZS4KCShMSUJHQ0MyX0xPTkdfRE9VQkxFX1RZUEVfU0laRSk6IERlZmluZSBkZXBlbmRpbmcgb24gQ1BQIG1hY3Jvcy4KCShDQzFfU1BFQyk6IEluY2x1ZGUgLW1sb25nLWRvdWJsZS17NjQsMTI4fSBhcyBuZWVkZWQuCgkqIGNvbmZpZy9zcGFyYy9saW51eC5oIChTVUJUQVJHRVRfU1dJVENIRVMpOiBEZWZpbmUuCgkoQ1BQX1NVQlRBUkdFVF9TUEVDKTogRGVmaW5lIF9fTE9OR19ET1VCTEVfMTI4X18gaWYgY29tcGlsaW5nCgl3aXRoIC1tbG9uZy1kb3VibGUtMTI4LgoJKExPTkdfRE9VQkxFX1RZUEVfU0laRSk6IERlZmluZSBkZXBlbmRpbmcgb24gdGFyZ2V0X2ZsYWdzLgoJKE1BWF9MT05HX0RPVUJMRV9UWVBFX1NJWkUpOiBEZWZpbmUuCgkoTElCR0NDMl9MT05HX0RPVUJMRV9UWVBFX1NJWkUpOiBEZWZpbmUgZGVwZW5kaW5nIG9uIENQUCBtYWNyb3MuCgkqIGNvbmZpZy9zcGFyYy9zcGFyYy5oIChNQVNLX0xPTkdfRE9VQkxFXzEyOCwKCVRBUkdFVF9MT05HX0RPVUJMRV8xMjgpOiBEZWZpbmUuCgkqIGNvbmZpZy9zcGFyYy9saW51eC1hb3V0LmggKExPTkdfRE9VQkxFX1RZUEVfU0laRSk6IFJlbW92ZS4KCSogY29uZmlnL3NwYXJjL3NwYXJjLmMgKHNwYXJjX292ZXJyaWRlX29wdGlvbnMpOiBEaXNhbGxvdyA2NGJpdAoJbG9uZyBkb3VibGUgb24gVEFSR0VUX0FSQ0g2NC4KCjIwMDAtMDMtMDYgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBmdW5jdGlvbi5jIChmcmVlX3RlbXBzX2Zvcl9ydGxfZXhwcik6IERvbid0IGZyZWUgc2xvdHMKCXRoYXQgaGF2ZSBiZWVuIHB1c2hlZCBpbnRvIGEgaGlnaGVyIGxldmVsLgoKCVJldmVydCB0aGlzIHBhdGNoOgoJMjAwMC0wMy0wNSAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCjIwMDAtMDMtMDUgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBiYXNpYy1ibG9jay5oIChBTExPQ0FfUkVHX1NFVCk6IFJlbW92ZS4KCShJTklUSUFMSVpFX1JFR19TRVQpOiBOZXcgbWFjcm8uCgkqIGZsb3cuYyAodXBkYXRlX2xpZmVfaW5mbyk6IFVzZSBpdC4KCShjYWxjdWxhdGVfZ2xvYmFsX3JlZ3NfbGl2ZSk6IExpa2V3aXNlLgoJKHByb3BhZ2F0ZV9ibG9jayk6IExpa2V3aXNlLgoJKiBnbG9iYWwuYyAoYnVpbGRfaW5zbl9jaGFpbik6IExpa2V3aXNlLgoJKiBoYWlmYS1zY2hlZC5jIChzY2hlZHVsZV9yZWdpb24pOiBMaWtld2lzZS4KCjIwMDAtMDMtMDUgIFN0ZXBoYW5lIENhcnJleiAgPHN0Y2FycmV6QHdvcmxkbmV0LmZyPgoKCSogZHdhcmYyb3V0LmMgKFVOQUxJR05FRF9XT1JEX0FTTV9PUCk6IFN1cHBvcnQgMiBieXRlcyBwb2ludGVyLgoJKEFTTV9PVVRQVVRfRFdBUkZfQUREUl9DT05TVCk6IFVzZSBVTkFMSUdORURfV09SRF9BU01fT1AuCgkoRFdBUkZfQVJBTkdFU19QQURfU0laRSk6IE5ldyBkZWZpbmUuCgkob3V0cHV0X2FyYW5nZXMpOiBVc2UgaXQgdG8gcGFkIHRoZSBhZGRyZXNzIHJhbmdlIGhlYWRlci4KCShEV0FSRl9ST1VORCk6IEZpeCBmb3Igbm9uIHBvd2VyIG9mIDIgcm91bmRpbmcuCgoyMDAwLTAzLTA1ICBKYXNvbiBNZXJyaWxsICA8amFzb25AY2FzZXkuY3lnbnVzLmNvbT4KCgkqIG1rZGVwcy5jIChkZXBzX2NhbGNfdGFyZ2V0KTogUmVtb3ZlIGluY29ycmVjdCAnY29uc3QnLgoKMjAwMC0wMy0wNSAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIHRyZWUuZGVmIChSVExfRVhQUik6IFVwZGF0ZSBkb2N1bWVudGF0aW9uLgoJKiB0cmVlLmggKFJUTF9FWFBSX0hBU19OT19TQ09QRSk6IE5ldyBtYWNyby4KCSogZXhwci5jIChleHBhbmRfZXhwcik6IEhhbmRsZSBSVExfRVhQUl9IQVNfTk9fU0NPUEUuCgkqIGZ1bmN0aW9uLmMgKHByZXNlcnZlX3J0bF9leHByX3RlbXApOiBOZXcgZnVuY3Rpb24uCgkocHJlc2VydmVfcnRsX2V4cHJfdGVtcHMpOiBMaWtld2lzZS4KCShwcmVzZXJ2ZV9ydGxfZXhwcl9yZXN1bHQpOiBVc2UgaXQuCgoJUmV2ZXJ0IHRoaXMgcGF0Y2g6CgkyMDAwLTAzLTA0ICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKMjAwMC0wMy0wNCAgVGhvbWFzIFNjaHVzdGVyIDxUaG9tYXMuU2NodXN0ZXJAZ214Lm5ldD4KCgkqIHJlZ21vdmUuYyAoY29weV9zcmNfdG9fZGVzdCkgIERvIG5vdCBjcmVhdGUgc3JjLT5kZXN0IG1vdmUKCWZvciB1bmNoYW5naW5nIGRlc3RpbmF0aW9uLgoKMjAwMC0wMy0wNCAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGZ1bmN0aW9uLmggKHN0cnVjdCBzZXF1ZW5jZV9zdGFjayk6IFJlbW92ZSBydGxfZXhwci4KCShzdHJ1Y3QgZW1pdF9zdGF1cyk6IExpa2V3aXNlLgoJKHNlcV9ydGxfZXhwcik6IFJlbW92ZS4KCSogdHJlZS5oIChmcmVlX3RlbXBzX2Zvcl9ydGxfZXhwcik6IERvbid0IGRlY2xhcmUuCgkoc3RhcnRfc2VxdWVuY2VfZm9yX3J0bF9leHByKTogTGlrZXdpc2UuCgkqIHJ0bC5oIChwcmVzZXJ2ZV9ydGxfZXhwcl9yZXN1bHQpOiBMaWtld2lzZS4KCSogZW1pdC1ydGwuYyAoc3RhcnRfc2VxdWVuY2UpOiBEb24ndCBzZXQgc2VxdWVuY2VfcnRsX2V4cHIuCgkoc3RhcnRfc2VxdWVuY2VfZm9yX3J0bF9leHByKTogUmVtb3ZlLgoJKHB1c2hfdG9wbW9zdF9zZXF1ZW5jZSk6IERvbid0IHNhdmUgc2VxdWVuY2VfcnRsX2V4cHIuCgkocG9wX3RvcG1vc3Rfc2VxdWVuY2UpOiBSZW1vdmUgY29tbWVudCBhYm91dCBub3QgcmVzdG9yaW5nIGl0LgoJKGVuZF9zZXF1ZW5jZSk6IERvbid0IHNldCBzZXFfcnRsX2V4cHIuCgkoaW5pdF9lbWl0KTogRG9uJ3QgaW5pdGlhbGl6ZSBpdC4KCShtYXJrX3NlcXVlbmNlX3N0YWNrKTogRG9uJ3QgbWFyayBpdC4KCShtYXJrX2VtaXRfc3RhdHVzKTogTGlrZXdpc2UuCgkqIGV4Y2VwdC5jIChwcm90ZWN0X3dpdGhfdGVybWluYXRlKTogVXNlCglzdGFydF9zZXF1ZW5jZV9mb3JfcnRsX2V4cHIsIG5vdCBzdGFydF9zZXF1ZW5jZS4KCSogZXhwci5jIChleHBhbmRfZXhwciwgY2FzZSBSVExfRVhQUik6IERvbid0IGNhbGwKCXByZXNlcnZlX3J0bF9leHByX3Jlc3VsdCBvciBmcmVlX3RlbXBzX2Zvcl9ydGxfZXhwci4KCSogZnVuY3Rpb24uYyAoYXNzaWduX3N0YWNrX3RlbXBfZm9yX3R5cGUpOiBEb24ndCBzZXQgcnRsX2V4cHIuCgkocHJlc2VydmVfcnRsX2V4cHJfcmVzdWx0KTogUmVtb3ZlLgoJKGZyZWVfdGVtcHNfZm9yX3J0bF9leHByKTogTGlrZXdpc2UuCgkocG9wX3RlbXBfc2xvdHMpOiBMaWtld2lzZS4KCShtYXJrX3RlbXBfc2xvdCk6IERvbid0IG1hcmsgdGhlIHJ0bF9leHByLgoJKiBzdG10LmMgKGV4cGFuZF9zdGFydF9zdG10X2V4cHIpOiBVc2Ugc3RhcnRfc2VxdWVuY2UsIG5vdAoJc3RhcnRfc2VxdWVuY2VfZm9yX3J0bF9leHByLgoKMjAwMC0wMy0wNCAgWmFjayBXZWluYmVyZyAgPHphY2tAd29sZXJ5LmN1bWIub3JnPgoKCSogbWtkZXBzLmMsIG1rZGVwcy5oOiBOZXcgZmlsZXMuCgkqIHBvL1BPVEZJTEVTLmluOiBBZGQgdGhlbS4KCSogTWFrZWZpbGUuaW4gKExJQkNQUF9PQkpTKTogQWRkIG1rZGVwcy5vLgoJKGNwcGxpYi5vLCBjcHBpbml0Lm8pOiBEZXBlbmQgb24gbWtkZXBzLmguCgkobWtkZXBzLm8pOiBOZXcgdGFyZ2V0LgoKCSogY3BwZmlsZXMuYzogRGVsZXRlIGRlcHNfb3V0cHV0LgoJKiBjcHBpbml0LmM6IEluY2x1ZGUgbWtkZXBzLmguICBEZWxldGUga25vd25fc3VmZml4ZXMsCglPQkpFQ1RfU1VGRklYLCBhbmQgYmFzZV9uYW1lLgoJKGNwcF9jbGVhbnVwKTogVXNlIGRlcHNfZnJlZS4gIEZyZWUgaWhhc2gtPm5hbWUgd2hlbiBjbGVhcmluZwoJdGhlIGluY2x1ZGUgaGFzaC4KCShpbml0aWFsaXplX2RlcGVuZGVuY3lfb3V0cHV0KTogVXNlIGRlcHNfaW5pdCwKCWRlcHNfYWRkX3RhcmdldCwgZGVwc19jYWxjX3RhcmdldCwgYW5kIGRlcHNfYWRkX2RlcC4gIFJlbW92ZQoJYWxsIHRoZSB1bm5lY2Vzc2FyeSBzdHJpbmcgYmFzaGluZy4KCShjcHBfZmluaXNoKTogVXNlIGRlcHNfd3JpdGUuICBSZW1vdmUgYW4gdW5uZWNlc3NhcnkgbmVzdGluZwoJbGV2ZWwuCgkqIGNwcGxpYi5jIChkb19pbmNsdWRlKTogVXNlIGRlcHNfYWRkX2RlcC4KCSogY3BwbGliLmggKHN0cnVjdCBjcHBfcmVhZGVyKTogUmVwbGFjZSBkZXBzX2J1ZmZlciwKCWRlcHNfYWxsb2NhdGVkX3NpemUsIGRlcHNfc2l6ZSwgZGVwc19jb2x1bW4gbWVtYmVycyB3aXRoCglzaW5nbGUgcG9pbnRlciB0byBhIHN0cnVjdCBkZXBzLiAgRGVsZXRlIHByb3RvdHlwZSBvZgoJZGVwc19vdXRwdXQuCgoJKiBjcHBpbml0LmM6IEZpeCB0aGlua28gaW4gcHJldmlvdXMgcGF0Y2guCgpTYXQgTWFyICA0IDExOjMyOjMwIDIwMDAgIFJpY2hhcmQgS2VubmVyICA8a2VubmVyQHZsc2kxLnVsdHJhLm55dS5lZHU+CgoJKiBtYWNobW9kZS5oIChtb2RlX2Zvcl9zaXplLCBzbWFsbGVzdF9tb2RlX2Zvcl9zaXplKTogU0laRSBub3cgc2lnbmVkLgoJKiBzdG9yLWxheW91dC5jIChtb2RlX2Zvcl9zaXplLCBzbWFsbGVzdF9tb2RlX2Zvcl9zaXplKTogTGlrZXdpc2UuCgkobW9kZV9mb3Jfc2l6ZV90cmVlKTogTmV3IGZ1bmN0aW9uLgoJKGxheW91dF9kZWNsLCBsYXlvdXRfdHlwZSk6IENhbGwgaXQgYW5kIGNsZWFuIHVwIEJMS21vZGUgY2hlY2tzLgoJKiB0cmVlLmggKG1vZGVfZm9yX3NpemVfdHJlZSk6IE5ldyBkZWNsYXJhdGlvbi4KCgkqIHRvcGxldi5jIChkZWJ1Z19pZ25vcmVfYmxvY2spOiBNYXJrIGFyZyBCTE9DSyBhcyBwb3NzaWJseSB1bnVzZWQuCgoyMDAwLTAzLTA0ICBKYXNvbiBNZXJyaWxsICA8amFzb25AY2FzZXkuY3lnbnVzLmNvbT4KCgkqIHN0bXQuYyAoaXNfYm9keV9ibG9jayk6IE1vdmUuLi4KCSogZHdhcmZvdXQuYywgZHdhcmYyb3V0LmM6IC4uLmZyb20gaGVyZS4KCSogdHJlZS5oOiBEZWNsYXJlIGl0LgoJKiBlbWl0LXJ0bC5jIChyZW1vdmVfdW5uZWNlc3Nhcnlfbm90ZXMpOiBEb24ndCByZW1vdmUgdGhlIGJvZHkgYmxvY2suCgkqIGZpbmFsLmMgKGZpbmFsX3N0YXJ0X2Z1bmN0aW9uKTogRG8gY2FsbCByZW1vdmVfdW5uZWNlc3Nhcnlfbm90ZXMKCXdoZW4gc2NoZWR1bGluZy4KCjIwMDAtMDMtMDMgIFphY2sgV2VpbmJlcmcgIDx6YWNrQHdvbGVyeS5jdW1iLm9yZz4KCgkqIGNvbmZpZy92YXgveG0tdm1zLmg6IERlZmluZSBPQkpFQ1RfU1VGRklYIGFuZCBFWEVDVVRBQkxFX1NVRkZJWC4KCgkqIGNwcGxpYi5oIChfZG9sbGFyX29rKTogTmV3IG1hY3JvLgoJKGlzX2lkY2hhciwgaXNfaWRzdGFydCk6IFVzZSBpdC4KCShJU3RhYmxlKTogUmVuYW1lIHRvIF9jcHBfSVN0YWJsZS4gIERlY2xhcmUgaXQgY29uc3QgaWYKCWdjYyA+PTIuNyBvciBDOTkuICBEZWxldGUgYWxsIHJlZmVyZW5jZXMgdG8gRkFLRV9DT05TVC4KCShpc19pZGNoYXIsIGlzX2lkc3RhcnQsIGlzX251bWNoYXIsIGlzX251bXN0YXJ0LCBpc19oc3BhY2UsCglpc19zcGFjZSk6IFVwZGF0ZSBmb3IgcmVuYW1lZCBJU3RhYmxlLgoKCSogY3BwaW5pdC5jOiBEZWxldGUgYWxsIHJlZmVyZW5jZXMgdG8gRkFLRV9DT05TVCBhbmQgQ0FUCgltYWNyb3MuIERlZmluZSBpbml0X0lTdGFibGUgYXMgZW1wdHkgbWFjcm8gaWYgZ2NjID49Mi43IG9yCglDOTkuIENoYW5nZSBUQUJMRSgpIHRvIElTVEFCTEUgYW5kIGhhcmRjb2RlIG5hbWUgb2YgdGFibGUuCgkoY3BwX3N0YXJ0X3JlYWQpOiBEb24ndCBjaGFuZ2UgdGhlIElTdGFibGUgYmFzZWQgb24KCWRvbGxhcnNfaW5faWRlbnQuCgoJKiBjcHBoYXNoLmMgKHVuc2FmZV9jaGFycyk6IEFkZCBwZmlsZSBhcmd1bWVudC4gIEFsbCBjYWxsZXJzCgljaGFuZ2VkLiAgSGFuZGxlICckJyBmb3IgY2hhcjEgY29ycmVjdGx5LgoJKiBjcHBsaWIuYyAoY3BwX2dldF90b2tlbik6IFVzZSBpc19udW1jaGFyIHdoZW4gcGFyc2luZyBudW1iZXJzLgoKCSogY3BwZXhwLmMgKHRva2VudGFiMik6IE1ha2UgY29uc3QuCgkoY3BwX2xleCk6IE1ha2UgdG9rdGFiIGNvbnN0LgoJKiBjcHBpbml0LmMgKGluY2x1ZGVfZGVmYXVsdHNfYXJyYXkpOiBNYWtlIGNvbnN0LgoJKGluaXRpYWxpemVfc3RhbmRhcmRfaW5jbHVkZXMpOiBNYWtlIGRlZmF1bHRfaW5jbHVkZSBjb25zdC4KCjIwMDAtMDMtMDMgIEphc29uIE1lcnJpbGwgIDxqYXNvbkBjYXNleS5jeWdudXMuY29tPgoKCSogZHdhcmYyb3V0LmMgKGR3YXJmMm91dF9mcmFtZV9kZWJ1Zyk6IEFkZCBjYXN0IHRvIHNpbGVuY2Ugd2FybmluZy4KCShkd2FyZjJvdXRfZGVjbCk6IEZ1bmN0aW9ucyBjYW4gbm93IGhhdmUgREVDTF9JR05PUkVEX1AuCgkoZ2VuX2RlY2xfZGllKTogTGlrZXdpc2UuCgkqIGR3YXJmb3V0LmMgKGR3YXJmb3V0X2ZpbGVfc2NvcGVfZGVjbCk6IExpa2V3aXNlLgoJKG91dHB1dF9kZWNsKTogTGlrZXdpc2UuCgoJKiB2YXJhc20uYyAobWFrZV9mdW5jdGlvbl9ydGwpOiBJZiB3ZSBjaGFuZ2UgdGhlIG5hbWUgdXNlZCBpbiB0aGUKCXJ0bCwgdXBkYXRlIERFQ0xfQVNTRU1CTEVSX05BTUUgYWNjb3JkaW5nbHkuCgkobWFrZV9kZWNsX3J0bCk6IExpa2V3aXNlLgoKCSogdG9wbGV2LmMgKHJlc3Rfb2ZfY29tcGlsYXRpb24pOiBUd2VhayBmb3JtYXR0aW5nLgoKCSogdG9wbGV2LmMgKHJlc3Rfb2ZfY29tcGlsYXRpb24pOiBmaW5kX2xvb3BfdHJlZV9ibG9ja3MgYmVmb3JlCglyZW1vdmVfdW5uZWNlc3Nhcnlfbm90ZXMuCgkoZGVidWdfaWdub3JlX2Jsb2NrKTogTmV3IGZuLgoJKiB0b3BsZXYuaDogRGVjbGFyZSBpdC4KCSogZW1pdC1ydGwuYyAocmVtb3ZlX3VubmVjZXNzYXJ5X25vdGVzKTogQ2FsbCBpdC4KCSogZHdhcmYyb3V0LmMgKGR3YXJmMm91dF9pZ25vcmVfYmxvY2spOiBOZXcgZm4uCgkqIGR3YXJmMm91dC5oOiBEZWNsYXJlIGl0LgoJKiBmaW5hbC5jIChmaW5hbF9zdGFydF9mdW5jdGlvbik6IERvbid0IGNhbGwgcmVtb3ZlX3VubmVjZXNzYXJ5X25vdGVzCglpZiB3ZSBkaWQgaW5zbiBzY2hlZHVsaW5nLgoKMjAwMC0wMy0wMyAgWmFjayBXZWluYmVyZyAgPHphY2tAd29sZXJ5LmN1bWIub3JnPgoKCSogY3BwaW5pdC5jIChjcHBfaGFuZGxlX29wdGlvbik6IFNldCBvcHRzLT5wZWRhbnRpYyBkaXJlY3RseS4KCSogY3BwbGliLmg6IERlbGV0ZSBTRVRfQ1BQX1BFREFOVElDLgoKRnJpIE1hciAgMyAxNDo1NjoxMiAyMDAwICBSaWNoYXJkIEtlbm5lciAgPGtlbm5lckB2bHNpMS51bHRyYS5ueXUuZWR1PgoKCSogZXhwci5jIChleHBhbmRfZXhwciwgY2FzZSBDT01QT05FTlRfUkVGKTogVXNlIGJpdGZpZWxkIGNhc2UgaWYKCXJlc3VsdCBpcyBhIFJFQ09SRF9UWVBFLgoKMjAwMC0wMy0wMyAgSm9uYXRoYW4gTGFybW91ciAgPGpsYXJtb3VyQGN5Z251cy5jby51az4KCgkqIG1pcHMvZWxmLmggKENUT1JfTElTVFNfREVGSU5FRF9FWFRFUk5BTExZKTogQWRkZWQuCgoyMDAwLTAzLTAzICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEBjeWdudXMuY29tPgoKCSogYWxwaGEuYyAoYWxwaGFfZW1pdF9zZXRfY29uc3RfMSk6IFJlLW9yZGVyIGNhc2VzIHRvIHByZWZlcgoJYWRkaXRpb24gb3ZlciBjb21wbGltZW50cyBvdmVyIHNoaWZ0cy4KCkZyaSBNYXIgIDMgMTI6NDk6MjggMjAwMCAgSiJvcm4gUmVubmVja2UgPGFteWxhYXJAY3lnbnVzLmNvLnVrPgoKCSogcmVsb2FkMS5jIChyZWxvYWRfY29tYmluZV9ub3RlX3VzZSk6IEhhbmRsZSByZXR1cm4gcmVnaXN0ZXIgVVNFcy4KCVJFRyBjYXNlOiBIYW5kbGUgbXVsdGktaGFyZC1yZWdpc3RlciBoYXJkIHJlZ3MuCgpGcmkgTWFyICAzIDA3OjM4OjM0IDIwMDAgIFJpY2hhcmQgS2VubmVyICA8a2VubmVyQHZsc2kxLnVsdHJhLm55dS5lZHU+CgoJKiBtZC50ZXhpOiBEb2N1bWVudCB1c2Ugb2YgJyonIGluIGluc24gcGF0dGVybiBuYW1lLgoKMjAwMC0wMy0wMyAgSmFzb24gTWVycmlsbCAgPGphc29uQGNhc2V5LmN5Z251cy5jb20+CgoJKiBjYWxscy5jIChzcGVjaWFsX2Z1bmN0aW9uX3ApOiBvcGVyYXRvciBuZXcgbWF5IG5vdCBiZSBtYWxsb2MtbGlrZS4KCgkqIGdjc2UuYyAoZHVtcF9oYXNoX3RhYmxlKTogUmVhbGx5IGZpeCBlcnJvciBpbiBsYXN0IGNoYW5nZS4KCjIwMDAtMDMtMDIgIERlbmlzIENoZXJ0eWtvdiAgPGRlbmlzY0BvdmVydGEucnU+CgoJKiBhdnIuYyAocHJpbnRfb3BlcmFuZCk6IFVzZSBwcmludF9vcGVyYW5kX2FkZHJlc3MgaW5zdGVhZCBvZgoJb3V0cHV0X2FkZHJfY29uc3QuCgkqIGF2ci9saWJnY2MuUzogQ2xlYW51cCBjb2RlLgoKMjAwMC0wMy0wMiAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAY3lnbnVzLmNvbT4KCgkqIGFscGhhLmMgKGFscGhhX2VtaXRfc2V0X2NvbnN0XzEpOiBBbHNvIHRyeSBjICsgc21hbGwgY29uc3RhbnQuCgoyMDAwLTAzLTAyICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogdHJlZS5oIChUWVBFX0FMSUdOX1VOSVQpOiBOZXcgbWFjcm8uCgoyMDAwLTAzLTAyICBDbGludG9uIFBvcGV0eiAgPGNwb3BldHpAY3lnbnVzLmNvbT4KCgkqIGkzODYuYzogKGNvbnN0YW50X2NhbGxfYWRkcmVzc19vcGVyYW5kKTogUmVqZWN0IENPTlNUX0lOVC4KCjIwMDAtMDMtMDIgIEphc29uIE1lcnJpbGwgIDxqYXNvbkBjYXNleS5jeWdudXMuY29tPgoKCSogY3BwbGliLmggKENQUF9QRURBTlRJQyk6IE9ubHkgdHJ1ZSBpZiBzeXN0ZW1faGVhZGVyX3AgaXMgbm90IHNldAoJZm9yIHRoZSBidWZmZXIuCgkoU0VUX0NQUF9QRURBTlRJQyk6IE5ldyBtYWNyby4KCSogY3BwbGliLmMgKGRvX2luY2x1ZGUpOiBEb24ndCBib3RoZXIgY2hlY2tpbmcgc3lzdGVtX2hlYWRlcl9wLgoJKGRvX3dhcm5pbmcsIGRvX2lkZW50LCBkb19hc3NlcnQsIGRvX3VuYXNzZXJ0KTogTGlrZXdpc2UuCgkqIGNwcGluaXQuYyAoY3BwX2hhbmRsZV9vcHRpb24pOiBVc2UgU0VUX0NQUF9QRURBTlRJQy4KCgkqIGZ1bmN0aW9uLmggKHN0cnVjdCBleHByX3N0YXR1cyk6IEFkZCB4X2FyZ19zcGFjZV9zb19mYXIuCgkoYXJnX3NwYWNlX3NvX2Zhcik6IE5ldyBtYWNyby4KCSogZXhwci5jIChpbml0X2V4cHIpOiBJbml0aWFsaXplIGl0LgoJKiBjYWxscy5jIChlbWl0X2NhbGxfMSk6IFJlc2V0IGl0LgoJKGNvbXB1dGVfYXJndW1lbnRfYmxvY2tfc2l6ZSwgZXhwYW5kX2NhbGwpOiBVc2UgaXQuCgkoZXhwYW5kX2NhbGwsIHN0b3JlX29uZV9hcmcpOiBJbmNyZW1lbnQgaXQuCgpUaHUgTWFyICAyIDE3OjI3OjEzIDIwMDAgIFJpY2hhcmQgS2VubmVyICA8a2VubmVyQHZsc2kxLnVsdHJhLm55dS5lZHU+CgoJKiB2YXJhc20uYyAob3V0cHV0X2NvbnN0YW50KTogU3RyaXAgb2ZmIGEgQ09OVkVSVF9FWFBSIHRvCglhIFVOSU9OX1RZUEUuCgoyMDAwLTAzLTAyICBaYWNrIFdlaW5iZXJnICA8emFja0B3b2xlcnkuY3VtYi5vcmc+CgoJKiBjcHBmaWxlcy5jIChjcHBfcmVhZF9maWxlKTogTmV3IGZ1bmN0aW9uLgoKCSogY3BwaGFzaC5jIChjb2xsZWN0X2V4cGFuc2lvbik6IE1ha2Ugc3VyZSB0byByZXNldCBsYXN0X3Rva2VuCgl0byBOT1JNIHdoZW4gd2UgaGl0IGEgc3RyaW5nLiAgSGFuZGxlIHRyYWlsaW5nIHdoaXRlc3BhY2UKCXByb3Blcmx5IHdoZW4gdGhlIGV4cGFuc2lvbiBpcyBlbXB0eS4KCShjcmVhdGVfZGVmaW5pdGlvbik6IERpc2FibGUgbGluZSBjb21tYW5kcyB3aGlsZSBwYXJzaW5nIHRoZQoJZGlyZWN0aXZlIGxpbmUuCgkoZHVtcF9kZWZpbml0aW9uKTogSWYgcGZpbGUtPmxpbmVubyA9PSAwLCBvdXRwdXQgYSBsaW5lCgljb21tYW5kIGFoZWFkIG9mIHRoZSBkdW1wLCBhbmQgYWRkIGEgdHJhaWxpbmcgbmV3bGluZS4KCgkqIGNwcGluaXQuYyAoYXBwZW5kX2luY2x1ZGVfY2hhaW4pOiBBZGQgZmlmdGggYXJndW1lbnQsIHdoaWNoCglpbmRpY2F0ZXMgd2hldGhlciBvciBub3Qgc3lzdGVtIGhlYWRlcnMgYXJlIEMrKyBhd2FyZS4KCShpbml0aWFsaXplX3N0YW5kYXJkX2luY2x1ZGVzKTogTmV3IGZ1bmN0aW9uLAoJYnJva2VuIG91dCBvZiByZWFkX2FuZF9wcmVzY2FuLiAgUGFzcyAnY3h4X2F3YXJlJyB2YWx1ZSBmcm9tCgl0aGUgaW5jbHVkZV9kZWZhdWx0c19hcnJheSBvbiB0byBhcHBlbmRfaW5jbHVkZV9jaGFpbi4KCShkdW1wX3NwZWNpYWxfdG9fYnVmZmVyKTogQ29uc3QtaWZ5IGNoYXIgYXJyYXkuCgkoYnVpbHRpbl9hcnJheSk6IERvbid0IGR1bXAgX19CQVNFX0ZJTEVfXy4KCShjcHBfc3RhcnRfcmVhZCk6IFVzZSBjcHBfcmVhZF9maWxlLiAgUmVvcmRlciBjb2RlIGZvcgoJY2xhcml0eS4gIERvbid0IG91dHB1dCBsaW5lIGNvbW1hbmRzIGhlcmUgZm9yIC1ELy1BLy1VCglzd2l0Y2hlcy4gIERvbid0IGNhbGwgZGVwc19vdXRwdXQgZm9yIGZpbGVzIGluY2x1ZGVkIHdpdGgKCS1pbmNsdWRlIG9yIC1pbWFjcm9zLgoKCSogY3BwbGliLmMgKGRvX2RlZmluZSk6IERvbid0IHBheSBhbnkgYXR0ZW50aW9uIHRvIHRoZSBzZWNvbmQKCWFyZ3VtZW50LgoJKGNwcF9leHBhbmRfdG9fYnVmZmVyKTogRGlzYWJsZSBsaW5lIGNvbW1hbmRzIHdoaWxlIHNjYW5uaW5nLgoJKG91dHB1dF9saW5lX2NvbW1hbmQpOiBXb3JrIGluIHRoZSBmaWxlIGJ1ZmZlci4KCSogY3BwbGliLmg6IFJlbW92ZSBub19yZWNvcmRfZmlsZSBmbGFnIGZyb20gc3RydWN0IGNwcF9yZWFkZXIuCglGaXggZm9ybWF0dGluZyBvZiBjb21tZW50cy4gIFByb3RvdHlwZSBjcHBfcmVhZF9maWxlLgoKVGh1IE1hciAgMiAxMzoyOTo0NiAyMDAwICBSaWNoYXJkIEtlbm5lciAgPGtlbm5lckB2bHNpMS51bHRyYS5ueXUuZWR1PgoKCSogYy1jb21tb24uYyAoY19jb21tb25fbm9kZXNfYW5kX2J1aWx0aW5zKTogTWFrZSBzaXpldHlwZV9lbmRsaW5rCglyZWZlcmVuY2UgdGhlIGxhbmd1YWdlLWVxdWl2YWxlbnQgb2Ygc2l6ZXR5cGUuCgkqIGMtdHlwZWNrLmMgKGNvbXB0eXBlcyk6IFRyZWF0IHNpemV0eXBlIGxpa2UgaXRzIGxhbmd1YWdlIGVxdWl2YWxlbnQuCgkqIGZvbGQtY29uc3QuYyAoc2l6ZV9iaW5vcCwgc2l6ZV9kaWZmb3ApOiBQdXQgYmFjayBjaGVja3MuCgkqIGdjc2UuYyAoZHVtcF9oYXNoX3RhYmxlKTogRml4IG1pbm9yIGVycm9yIGluIGxhc3QgY2hhbmdlLgoJKiBzdG9yLWxheW91dC5jIChzZXRfc2l6ZXR5cGUpOiBTZXQgVFlQRV9ET01BSU4gb2Ygc2l6ZXR5cGUuCglDbGVhciBUWVBFX3tORVhULE1BSU59X1ZBUklBTlQgYW5kIFRZUEVfe1BPSU5URVIsUkVGRVJFTkNFfV90byBvZgoJYWxsIHNpemV0eXBlcy4KClRodSBNYXIgIDIgMTI6NDg6NDUgTUVUIDIwMDAgIEphbiBIdWJpY2thICA8amhAc3VzZS5jej4KCgkqIGNhbGxzLmMgKGV4cGFuZF9jYWxsKSAgRG8gbm90IGF0dGVtcHQgdG8gY29tYmluZSBzdGFjayBhZGp1c3RtZW50cwoJd2l0aCBpbmhpYml0X2RlZmVyX3BvcCBzZXQuCgoyMDAwLTAzLTAxICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogc3Rvci1sYXlvdXQuYyAobGF5b3V0X2RlY2wpOiBBbGxvdyBmcm9udC1lbmRzIHRvIGV4cGxpY2l0bHkgc2V0Cgl0aGUgREVDTF9TSVpFIGZvciBhIEZJRUxEX0RFQ0wuCgoyMDAwLTAzLTAxICBCcnVjZSBLb3JiICA8YmtvcmJAZ251Lm9yZz4KCgkqIGZpeGluYy9pbmNsaGFjay50cGw6IHJlbW92ZSB1bnVzZWQgc3ltbGlua3MKCSogZml4aW5jL1JFQURNRTogR0NDIE1haW50YWluZXIgaW5mbwoJKiBmaXhpbmMvaW5jbGhhY2suc2g6IHJlZ2VuCgkqIGZpeGluYy9maXhpbmNsLnNoOiByZWdlbgoKMjAwMC0wMy0wMSAgWmFjayBXZWluYmVyZyAgPHphY2tAd29sZXJ5LmN1bWIub3JnPgoKCSogY3BwaGFzaC5jIChjb2xsZWN0X2V4cGFuc2lvbik6IFRyaW0gdHJhaWxpbmcgd2hpdGUgc3BhY2UKCWZyb20gbWFjcm8gZGVmaW5pdGlvbnMsIGJ1dCBkb24ndCBnbyBwYXN0IHRoZSBsYXN0IGluc2VydGlvbgoJcG9pbnQuCgpXZWQgTWFyICAxIDEyOjE0OjMxIE1FVCAyMDAwICBKYW4gSHViaWNrYSAgPGpoQHN1c2UuY3o+CgoJKiBpMzg2Lm1kIChtdWxxaTMpOiBOZXcgcGF0dGVybi4KCjIwMDAtMDItMjkgIFphY2sgV2VpbmJlcmcgIDx6YWNrQHdvbGVyeS5jdW1iLm9yZz4KCgkqIGNwcGxpYi5oIChDUFBfQVNTRVJUSU9OLCBDUFBfU1RSSU5HSVpFLCBDUFBfVE9LUEFTVEUpOiBOZXcKCXRva2VuIHR5cGVzLgoJKHN0cnVjdCBjcHBfcmVhZGVyKTogQWRkIHBhcnNpbmdfaWZfZGlyZWN0aXZlIGFuZAoJcGFyc2luZ19kZWZpbmVfZGlyZWN0aXZlIGZsYWdzLgoJKHN0cnVjdCBjcHBfb3B0aW9ucyk6IFJlbW92ZSBvdXRwdXRfY29uZGl0aW9uYWxzIGZsYWcuCgkoY2hlY2tfbWFjcm9fbmFtZSk6IERlbGV0ZSBwcm90b3R5cGUuCgoJKiBjcHBoYXNoLmggKHN0cnVjdCBtYWNyb2RlZik6IERlbGV0ZS4KCShzdHJ1Y3QgcmVmbGlzdCk6IFNlcGFyYXRlIGZyb20gc3RydWN0IGRlZmluaXRpb24uCgkoc3RydWN0IGRlZmluaXRpb24pOiBSZW1vdmUgdW51c2VkIGZpZWxkcy4gIEFkZCBjb2x1bW4gbnVtYmVyLgoJKGNyZWF0ZV9kZWZpbml0aW9uKTogUmV0dXJucyBhIERFRklOSVRJT04gKi4gIFRha2VzIGEKCWNwcF9yZWFkZXIgKiBhbmQgYW4gaW50LgoKCSogY3BwaGFzaC5jIChTS0lQX1dISVRFX1NQQUNFKTogRGVsZXRlLgoJKFBFRUtDKTogQ29weSBkZWZuIGZyb20gY3BwbGliLmMuCgkocmVzdF9leHRlbnNpb24sIFJFU1RfRVhURU5TSU9OX0xFTkdUSCk6IERlbGV0ZS4KCShzdHJ1Y3QgYXJnKTogTmV3LgoJKHN0cnVjdCBhcmdsaXN0KTogU2ltcGxpZnkuCgkoY29sbGVjdF9leHBhbnNpb24pOiBSZXdyaXRlLiAgR2V0IHRva2VucyBieSBjYWxsaW5nCgljcHBfZ2V0X3Rva2VuLiAgQWRkIG1vcmUgZXJyb3IgY2hlY2tpbmcuCgkoY29sbGVjdF9mb3JtYWxfcGFyYW1ldGVycyk6IE5ldyBmdW5jdGlvbiwgYnJva2VuIG91dCBvZgoJY3JlYXRlX2RlZmluaXRpb24gYW5kIHJld29ya2VkIHRvIHVzZSBnZXRfZGlyZWN0aXZlX3Rva2VuLgoJKGNyZWF0ZV9kZWZpbml0aW9uKTogQWxsIHJlYWwgd29yayBpcyBub3cgaW4gY29sbGVjdF9leHBhbnNpb24KCWFuZCBjb2xsZWN0X2Zvcm1hbF9wYXJhbWV0ZXJzLiAgZG9fZGVmaW5lIGhhbmRsZXMgZmluZGluZyB0aGUKCW1hY3JvIG5hbWUuICBSZXR1cm4gYSBERUZJTklUSU9OLCBub3QgYSBNQUNST0RFRi4KCShtYWNyb2V4cGFuZCk6IFJlcGxhY2UgYmNvcHkgd2l0aCBtZW1jcHkgdGhyb3VnaG91dC4gIFJlcGxhY2UKCWNoYXJhY3Rlci1hdC1hLXRpbWUgY29weSBsb29wIHdpdGggbWVtY3B5IGFuZCBwb2ludGVyIGluY3JlbWVudHMuCgkoY29tcGFyZS1kZWZzKTogZDEtPmFyZ25hbWVzIC8gZDItPmFyZ25hbWVzIG1pZ2h0IGJlIG51bGwuCgoJKiBjcHBsaWIuYyAoY29weV9yZXN0X29mX2xpbmUpOiBEZWxldGUgZnVuY3Rpb24uCgkoc2tpcF9yZXN0X29mX2xpbmUpOiBEbyBhbGwgdGhlIHdvcmsgb3Vyc2VsdmVzLgoJKHNraXBfc3RyaW5nKTogTmV3IGZ1bmN0aW9uLgoJKHBhcnNlX3N0cmluZyk6IFVzZSBza2lwX3N0cmluZy4KCShnZXRfbWFjcm9fbmFtZSk6IE5ldyBmdW5jdGlvbi4KCShjaGVja19tYWNyb19uYW1lKTogRGVsZXRlLgoJKGNvcHlfY29tbWVudCk6IFVzZSBDUFBfUkVTRVJWRSBhbmQgQ1BQX1BVVENfUS4KCShjcHBfc2tpcF9oc3BhY2UpOiBVc2UgQ1BQX0JVTVBfTElORS4KCShoYW5kbGVfZGlyZWN0aXZlKTogSUNFIGlmIHdlJ3JlIGNhbGxlZCBvbiBhIG1hY3JvIGJ1ZmZlci4KCShkb19kZWZpbmUpOiBEZXRlcm1pbmUgbWFjcm8gbmFtZSBhbmQgdHlwZSAoZnVubGlrZS9vYmpsaWtlKQoJaGVyZS4gIEV4cHVuZ2UgYWxsIHVzZXMgb2YgTUFDUk9ERUYuCgkoY3BwX3B1c2hfYnVmZmVyKTogU2V0IGxpbmVfYmFzZSB0byBOVUxMLgoJKGRvX3VuZGVmLCByZWFkX2xpbmVfbnVtYmVyKTogRG9uJ3Qgd29ycnkgYWJvdXQgZ2V0dGluZyBhIFBPUCB0b2tlbi4KCShldmFsX2lmX2V4cHJlc3Npb24pOiBTZXQvcmVzZXQgcGFyc2luZ19pZl9kaXJlY3RpdmUgYXJvdW5kCgljcHBfcGFyc2VfZXhwci4gRG9uJ3QgY2xlYXIgb25seV9zZWVuX3doaXRlLgoJKHNraXBfaWZfZ3JvdXApOiBSZW1vdmUgb3V0cHV0X2NvbmRpdGlvbmFscyBsb2dpYy4gIFVzZQoJc2tpcF9yZXN0X29mX2xpbmUuCgkoY3BwX2dldF90b2tlbik6IFJldHVybiBBU1NFUlRJT04sIFNUUklOR0laRSwgYW5kIFRPS1BBU1RFCgl0b2tlbnMgdW5kZXIgYXBwcm9wcmlhdGUgY29uZGl0aW9ucy4KCShjcHBfdW5hc3NlcnQpOiBDYWxsIGRvX3VuYXNzZXJ0IG5vdCBkb19hc3NlcnQuICBPb3BzLgoKCSogY3BwZXhwLmMgKHBhcnNlX2RlZmluZWQpOiBOZXcgZnVuY3Rpb24sIGJyZWFrIG91dCBvZgoJY3BwX2xleC4KCShjcHBfbGV4KTogV2Ugbm93IGdldCBDUFBfQVNTRVJUSU9OIHRva2VucyBhbmQgY2FuIGNoZWNrIHRoZW0KCW91cnNlbHZlcywgd2l0aCBjcHBfZGVmaW5lZC4KCSogY3BwaW5pdC5jIChjcHBfaGFuZGxlX29wdGlvbiwgcHJpbnRfaGVscCk6IERlbGV0ZSAtaWZvdXRwdXQuCgoJKiBnY2MuZGcvMjAwMDAyMDktMi5jOiBUdXJuIG9mZiAtcGVkYW50aWMtZXJyb3JzLgoJKiBnY2MuZGcvc3RycGFzdGUtMi5jOiBOZXcuCgoyMDAwLTAyLTI5ICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogZm9sZC1jb25zdC5jIChzaXplX2Jpbm9wKTogRG9uJ3QgYXNlcnQgaW5wdXRzIGFyZSB0aGUgc2FtZSBhbmQKCWhhdmUgVFlQRV9JU19TSVpFVFlQRSBzZXQuCgkoc2l6ZV9kaWZmb3ApOiBMaWtld2lzZS4KCjIwMDAtMDItMjkgIEphc29uIE1lcnJpbGwgIDxqYXNvbkBjYXNleS5jeWdudXMuY29tPgoKCSogZHdhcmZvdXQuYyAob3V0cHV0X2Jsb2NrKTogT3V0cHV0IGFic3RyYWN0IGJsb2NrcyBldmVuIGlmIHRoZXkKCWRvbid0IGhhdmUgVFJFRV9BU01fV1JJVFRFTiBzZXQuCgoJKiBjYWxscy5jIChlbWl0X2xpYnJhcnlfY2FsbCk6IENoZWNrIGZvciBudWxsIFJFRy4KCjIwMDAtMDMtMDEgIE1hcnRpbiB2b24gTG9ld2lzICA8bG9ld2lzQGluZm9ybWF0aWsuaHUtYmVybGluLmRlPgoKCSogYy1kZWNsLmMgKGN1cnJlbnRfZnVuY3Rpb25fZGVjbCk6IE1vdmUgdG8gdG9wbGV2LmMuCgkoaW5pdF9kZWNsX3Byb2Nlc3NpbmcpOiBEb24ndCBhZGQgY3VycmVudF9mdW5jdGlvbl9kZWNsIGFzIGEgZ2djCglyb290IGhlcmUuCgkqIGRieG91dC5jIChkYnhvdXRfc3ltYm9sKTogQ2hhbmdlIHJldHVybiB0eXBlIHRvIGludC4KCShkYnhvdXRfc3ltYm9sX2xvY2F0aW9uLCBkYnhvdXRfc3ltcyk6IExpa2V3aXNlLgoJKGRieG91dF9ibG9jayk6IERvbid0IGVtaXQgTEJSQUMvUkJSQUMgcGFpcnMgZm9yIGJsb2NrcyB3aXRob3V0CglhbnkgbG9jYWxzLiBVc2UgY3VycmVudF9mdW5jdGlvbl9mdW5jX2JlZ2luX2xhYmVsIGlmIHNldC4KCSogZGJ4b3V0LmggKGRieG91dF9zeW1ib2wsIGRieG91dF9zeW1zKTogQ2hhbmdlIHJldHVybiB0eXBlLgoJKiBkd2FyZjJvdXQuYyAoZHdhcmYyb3V0X2JlZ2luX3Byb2xvZ3VlKTogU2V0CgljdXJyZW50X2Z1bmN0aW9uX2Z1bmNfYmVnaW5fbGFiZWwuCgkqIGZpbmFsLmMgKGZpbmFsX3N0YXJ0X2Z1bmN0aW9uKTogUmVzZXQgaXQuCgkqIHRvcGxldi5jIChjdXJyZW50X2Z1bmN0aW9uX2RlY2wpOiBEZWZpbmUgaXQgaGVyZS4KCShjdXJyZW50X2Z1bmN0aW9uX2Z1bmNfYmVnaW5fbGFiZWwpOiBOZXcgdmFyaWFibGUuCgkobWFpbik6IEFkZCBib3RoIGFzIGdnYyByb290cy4KCSogdHJlZS5oIChjdXJyZW50X2Z1bmN0aW9uX2Z1bmNfYmVnaW5fbGFiZWwpOiBEZWNsYXJlLgoKVHVlIEZlYiAyOSAxNDowNzowNCAyMDAwICBSaWNoYXJkIEtlbm5lciAgPGtlbm5lckB2bHNpMS51bHRyYS5ueXUuZWR1PgoKCSogZ2NzZS5jOiBDbGVhbnVwcyB0aHJvdWdob3V0OiBtb3N0bHkgd2hpdGUtc3BhY2UsIGJ1dCBhbHNvCglzb21lIG1pbm9yIHJlYXJyYW5nZW1lbnQgb2YgY29kZS4KClR1ZSBGZWIgMjkgMTA6NDU6NTkgMjAwMCAgSmVmZnJleSBBIExhdyAgKGxhd0BjeWdudXMuY29tKQoKCSogY2FsbHMuYyAoZW1pdF9saWJyYXJ5X2NhbGwpOiBEbyBub3QgYWJvcnQgaWYgRlVOQ1RJT05fQVJHCglyZXR1cm5zIGEgUEFSQUxMRUwuICBVc2UgZW1pdF9ncm91cF9sb2FkIGFuZCB1c2VfZ3JvdXBfcmVncwoJYXMgbmVlZGVkLgoJKGVtaXRfbGlicmFyeV9jYWxsX3ZhbHVlKTogU2ltaWxhcmx5LgoKCSogcGEvdC1wYTogVXNlIHF1YWRsaWIuYyBpbnN0ZWFkIG9mIHF1YWRsaWIuYXNtLgoJKiBwYS9xdWFkbGliLmFzbTogUmVtb3ZlLgoJKiBwYS9xdWFkbGliLmM6IE5ldyBmaWxlLgoKCSogY29uZmlndXJlLmluIChocHV4MTAsIGhwdXgxMSwgUEEzMiBtb2RlKTogVXNlIGkxMjggZmxvYXQgZm9ybWF0LgoJKiBjb25maWd1cmU6IFJlYnVpbHQuCgoyMDAwLTAyLTI5ICBQaGlsaXAgQmx1bmRlbGwgIDxwYkBmdXR1cmV0di5jb20+CgoJKiBjb25maWcvYXJtL2Nvbml4LWVsZi5oOiBOZXcgZmlsZS4KCSogY29uZmlndXJlLmluIChhcm0qLSotY29uaXgqKTogTmV3IGNvbmZpZ3VyYXRpb24uCgkqIGNvbmZpZ3VyZTogUmVnZW5lcmF0ZS4KCjIwMDAtMDItMjggIEphc29uIE1lcnJpbGwgIDxqYXNvbkBjYXNleS5jeWdudXMuY29tPgoKCSogZHdhcmYyb3V0LmMgKGdlbl9ibG9ja19kaWUpOiBPdXRwdXQgYWJzdHJhY3QgYmxvY2tzIGV2ZW4gaWYgdGhleQoJZG9uJ3QgaGF2ZSBUUkVFX0FTTV9XUklUVEVOIHNldC4KCk1vbiBGZWIgMjggMjE6MDc6NTkgMjAwMCAgUmljaGFyZCBLZW5uZXIgIDxrZW5uZXJAdmxzaTEudWx0cmEubnl1LmVkdT4KCgkqIEVsaW1pbmF0ZSBERUNMX0ZJRUxEX1NJWkUuCgkqIGJ1aWx0aW5zLmMgKGJ1aWx0X2luX2NsYXNzX25hbWVzLCBidWlsdF9pbl9uYW1lcyk6IE5ldyB2YXJpYWJsZXMuCgkqIGMtZGVjbC5jIChmaW5pc2hfc3RydWN0KTogU2V0IHNwZWNpZmllZCBzaXplIGluIERFQ0xfU0laRS4KCSogZXhwci5jIChleHBhbmRfZXhwciwgY2FzZSBDT01QT05FTlRfUkVGKTogR2V0IGZpZWxkIHNpemUgZnJvbQoJREVDTF9TSVpFLCBub3QgREVDTF9GSUVMRF9TSVpFLgoJKiBwcmludC10cmVlLmMgKHByaW50X25vZGUpOiBSZW1vdmUgY29kZSB0aGF0IHByaW50cyBleHRyYSBibGFuawoJbGluZXMgaW4gc29tZSBjYXNlcy4KCVByb3Blcmx5IGhhbmRsZSBpbmxpbmUgYW5kIGJ1aWx0aW4gZnVuY3Rpb24gY2FzZXMuCgkqIHN0b3ItbGF5b3V0LmMgKGxheW91dF9kZWNsKTogR2V0IHNwZWNpZmllZCBzaXplIGZyb20gREVDX1NJWkUuCgkqIHRyZWUuaCAoYnVpbHRfaW5fY2xhc3NfbmFtZWQsIGJ1aWx0X2luX25hbWVzKTogTmV3IGRlY2xhcmF0aW9ucy4KCSh1bmlvbiB0cmVlX2RlY2wpOiBSZW5hbWUgaW50ZXJuYWwgdW5pb25zIHRvIHUxIGFuZCB1MiBhbmQgY2hhbmdlCglzb21lIG9mIHRoZWlyIGNvbXBvbmVudHMuCglBZGQgbmV3IGZpZWxkIGJ1aWx0X2luX2NsYXNzLgoJKERFQ0xfQUxJR04sIERFQ0xfSU5DT01JTkdfUlRMLCBERUNMX1NBVkVEX0lOU05TLCBERUNMX0ZSQU1FX1NJWkUpOgoJUmVmbGVjdCBhYm92ZSBjaGFuZ2VzLgoJKERFQ0xfRlVOQ1RJT05fQ09ERSwgREVDTF9CVUlMVF9JTl9DTEFTUyk6IExpa2V3aXNlLgoJKERFQ0xfU0VUX0ZVTkNUSU9OX0NPREUsIERFQ0xfRklFTERfU0laRSk6IERlbGV0ZWQuCgkqIG9iamMvb2JqYy1hY3QuYyAob2JqY19jb3B5X2xpc3QpOiBVc2UgREVDTF9TSVpFLCBub3QgREVDTF9GSUVMRF9TSVpFLgoJKGVuY29kZV9maWVsZF9kZWNsKTogTGlrZXdpc2U7IGFsc28gcmVtb3ZlIG9ic29sZXRlIHRlc3QgZm9yIGJpdGZpZWxkLgoKMjAwMC0wMi0yOCAgRG1pdHJpIE1ha2Fyb3YgIDxkaW1Ad2luZHJpdmVyLmNvbT4KCgkqIGV4dGVuZC50ZXhpOiBEb2N1bWVudCBBUk0ncyBzdXBwb3J0IGZvciBsb25nL3Nob3J0IGNhbGxzLgoKCSogaW52b2tlLnRleGk6IERvY3VtZW50IEFSTSdzIC1tbG9uZy1jYWxscyBjb21tYW5kIGxpbmUgc3dpdGNoLgoKCSogY29uZmlnL2FybS9hcm0tcHJvdG9zLmggKGFybV9pc19sb25nY2FsbF9wKTogQWRkIHByb3RvdHlwZS4KCShhcm1fZW5jb2RlX2NhbGxfYXR0cmlidXRlKTogQWRkIHByb3RvdHlwZS4KCShhcm1fc2V0X2RlZmF1bHRfdHlwZV9hdHRyaWJ1dGUpOiBBZGQgcHJvdG90eXBlLgoJKGFybV9zdHJpcF9uYW1lX2VuY29kaW5nKTogQWRkIHByb3RvdHlwZS4KCgkqIGNvbmZpZy9hcm0vYXJtLmMgKGFybV9pbml0X2N1bXVsYXRpdmVfYXJncyk6IHJlcGxhY2UKCWluaXRpYWxpc2F0aW9uIG9nICdsb25nX2NhbGxzJyBmaWVsZCB3aXRoIGluaXRpYWxpc2F0aW9uIG9mCgknY2FsbF9jb29raWUnIGZpZWxkLgoJKGVudW0gYXJtX3ByYWdtYV9lbnVtKTogTmV3IGVudW0uCgkoYXJtX3ByYWdtYV9sb25nX2NhbGxzKTogTmV3IHN0YXRpYyB2YXJpYWJsZS4KCShhcm1fcHJvY2Vzc19wcmFnbWEpOiBBbHNvIHByb2Nlc3MgIiNwcmFnbWEgbG9uZ19jYWxsc19vZmYiLgoJKGFybV92YWxpZF90eXBlX2F0dHJpYnV0ZV9wKTogQWNjZXB0IHNob3J0X2NhbGwgYXR0cmlidXRlLgoJKGFybV9jb21wX3R5cGVfYXR0cmlidXRlcyk6IENoZWNrIGxvbmcvc2hvcnQgY2FsbCBhdHRyaWJ1dGVzLgoJKGFybV9lbmNvZGVfY2FsbF9hdHRyaWJ1dGUpOiAgTmV3IGZ1bmN0aW9uOiAgRW5jb2RlIGxvbmdfY2FsbAoJb3Igc2hvcnRfY2FsbCBhdHRyaWJ1dGUgaW4gZnVuY3Rpb24gbmFtZS4KCShhcm1fc2V0X2RlZmF1bHRfdHlwZV9hdHRyaWJ1dGVzKTogTmV3IGZ1bmN0aW9uOiBBc3NpZ24KCWRlZmF1bHQgYXR0cmlidXRlcyB0byBuZXdseSBkZWZpbmVkIHR5cGUuCgkoY3VycmVudF9maWxlX2Z1bmN0aW9uX29wZXJhbmQpOiBOZXcgZnVuY3Rpb246IFJldHVybiB0cnVlIGlmCgl0aGUgc3ltYm9sIGlzIGEgZnVuY3Rpb24gd2hpY2ggaGFzIGFscmVhZHkgYmVlbiBjb21waWxlZC4KCShhcm1faXNfbG9uZ2NhbGxfcCk6IE5ldyBmdW5jdGlvbjogUmV0dXJuIHRydWUgaWYgdGhlCglpbmRpY2F0ZWQgZnVuY3Rpb24gc2hvdWxkIGJlIGNhbGxlZCB2aWEgYSBsb25nIGNhbGwuCgkoYXJtX2dldF9zdHJpcF9sZW5ndGgpOiBOZXcgZnVuY3Rpb24uICBSZXR1cm5zIG51bWJlciBvZgoJcHJlZml4IGNoYXJhY3RlcnMgdG8gYmUgc3RyaXBwZWQgZnJvbSBhIGZ1bmN0aW9uJ3MgbmFtZS4KCShhcm1fc3RyaXBfbmFtZV9lbmNvZGluZyk6IE5ldyBmdW5jdGlvbi4gIFN0cmlwIHByZWZpeCBjaGFyYWN0ZXJzCglmcm9tIGEgZnVuY3Rpb24ncyBuYW1lLgoKCSogY29uZmlnL2FybS9hcm0uaCAoQ1VNVUxBVElWRV9BUkdTKTogUmVwbGFjZSAnbG9uZ19jYWxsJyBmaWVsZAoJd2l0aCAnY2FsbF9jb29raWUnLgoJKFNIT1JUX0NBTExfRkFHX0NIQVIpOiBEZWZpbmUuCgkoTE9OR19DQUxMX0ZBR19DSEFSKTogRGVmaW5lLgoJKEVOQ09ERURfU0hPUlRfQ0FMTF9BVFRSX1ApOiBEZWZpbmUuCgkoRU5DT0RFRF9MT05HX0NBTExfQVRUUl9QKTogRGVmaW5lLgoJKEFSTV9OQU1FX0VOQ09ESU5HX0xFTkdUSFMpOiBEZWZpbmUuCgkoU1RSSVBfTkFNRV9FTkNPRElORyk6IERlZmluZS4KCShBU01fT1VUUFVUX0xBQkVMUkVGKTogRGVmaW5lLCBhbmQgdXNlIHRvIHN0cmlwIG5hbWUgZW5jb2RpbmcuCgkoQVJNX0VOQ09ERV9DQUxMX1RZUEUpOiBEZWZpbmUuCgkoRU5DT0RFX1NFQ1RJT04pOiBJbnZva2UgQVJNX0VOQ09ERV9DQUxMX1RZUEUuCgkoQVJNX0RFQ0xBUkVfRlVOQ1RJT05fU0laRSk6IERlZmluZS4KCShTRVRfREVGQVVMVF9UWVBFX0FUVFJJQlVURVMpOiBEZWZpbmUuCgoJKiBjb25maWcvYXJtL2FybS5tZCAoY2FsbCk6IENhbGwgYXJtX2lzX2xvbmdjYWxsX3AgdG8gZGVjaWRlCglpZiBhIGxvbmcgY2FsbCBpcyBuZWVkZWQuCgkoY2FsbF92YWx1ZSk6IERpdHRvLgoJKGNhbGxfc3ltYm9sKTogRGl0dG8uCgoJKiBjb25maWcvYXJtL2VsZi5oIChBU01fREVDTEFSRV9GVU5DVElPTl9TSVpFKTogQWRkIGludm9jYXRpb24gb2YKCUFSTV9ERUNMQVJFX0ZVTkNUSU9OX1NJWkUuCgoJKiBjb25maWcvYXJtL3BlLmggKEFSTV9QRV9GTEFHX0NIQVIpOiBEZWZpbmUuCgkoU1VCVEFSR0VUX05BTUVfRU5DT0RJTkdfTEVOR1RIUyk6IERlZmluZS4KCShBUk1fU1RSSVBfTkFNRV9FTkNPRElORyk6IFVuZGVmaW5lLgoJKFNUUklQX05BTUVfRU5DT0RJTkcpOiBVbmRlZmluZS4KCShBU01fT1VUUFVUX0xBQkVMUkVGKTogVXNlIGFybV9zdHJpcF9uYW1lX2VuY29kaW5nLgoJKEFTTV9ERUNMQVJFX0ZVTkNUSU9OX05BTUUpOiBEaXR0by4KCShBU01fT1VUUFVUX0NPTU1PTik6IERpdHRvLgoJKEFTTV9ERUNMQVJFX09CSkVDVF9OQU1FKTogRGl0dG8uCgoJKiBjb25maWcvYXJtL3BlLmMgKGFybV9kbGxleHBvcnRfbmFtZV9wKTogQ2hlY2sgZm9yCglBUk1fUEVfRkxBR19DSEFSLgoJKGFybV9kbGxpbXBvcnRfbmFtZV9wKTogRGl0dG8uCgkoYXJtX21hcmtfZGxsZXhwb3J0KTogVXNlIEFSTV9QRV9GTEFHX0NIQVIuCgkoYXJtX21hcmtfZGxsaW1wb3J0KTogRGl0dG8uCgpNb24gRmViIDI4IDIyOjExOjEyIDIwMDAgIEoib3JuIFJlbm5lY2tlIDxhbXlsYWFyQGN5Z251cy5jby51az4KCgkqIHNoLmggKERXQVJGX0xJTkVfTUlOX0lOU1RSX0xFTkdUSCk6IERlZmluZS4KCjIwMDAtMDItMjggIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiB4Y29mZm91dC5jICh4Y29mZm91dF9iZWdpbl9mdW5jdGlvbik6IEZpeCB0eXBvIGluIHByZXZpb3VzIGNoYW5nZS4KCjIwMDAtMDItMjggIFphY2sgV2VpbmJlcmcgIDx6YWNrQHdvbGVyeS5jdW1iLm9yZz4KCgkqIHRtLnRleGk6IERvY3VtZW50IG5ldyB0YXJnZXQgc3dpdGNoLCBOT19CVUlMVElOX1dDSEFSX1RZUEUuCgkqIGNwcGluaXQuYyAoYnVpbHRpbl9hcnJheSk6IERlZmluZSBfX1dDSEFSX1RZUEVfXyBvbmx5IGlmCglOT19CVUlMVElOX1dDSEFSX1RZUEUgaXMgbm90IGRlZmluZWQuCgkoQ1BQX1dDSEFSX1RZUEUpOiBEZWxldGUuCgkqIGNjY3AuYyAobWFpbik6IERvbid0IGNoYW5nZSB3Y2hhcl90eXBlIGlmIGNwbHVzcGx1cy4KCShzcGVjaWFsX3N5bWJvbCwgaW5pdGlhbGl6ZV9idWlsdGlucyk6IEhvbm9yIE5PX0JVSUxUSU5fV0NIQVJfVFlQRS4KCjIwMDAtMDItMjggIE5pY2sgQ2xpZnRvbiAgPG5pY2tjQGN5Z251cy5jb20+CgoJKiBjb25maWcvYXJtL2FybS13aW5jZS1wZS5oIChTSVpFX1RZUEUpOiBEZWZpbmUgdG8gInVuc2lnbmVkIGxvbmciLgoKTW9uIEZlYiAyOCAxNDoyMToxNSAyMDAwICBDYXRoZXJpbmUgTW9vcmUgIDxjbG1AY3lnbnVzLmNvbT4KCgkqIGNvbmZpZy9wYS9zb20uaCAoTUFLRV9ERUNMX09ORV9PTkxZKTogRGVmaW5lLgoJKEFTTV9XRUFLRU5fTEFCRUwpOiBEZWZpbmUuCgpNb24gRmViIDI4IDEzOjA3OjE5IE1FVCAyMDAwICBKYW4gSHViaWNrYSAgPGpoQHN1c2UuY3o+CgoJKiBleHByLmMgKHN0b3JlX2NvbnN0cnVjdG9yKTogRG8gbm90IGVtaXQgVVNFLgoJKiBydGwuaCAoc3R1cGlkX2xpZmVfYW5hbHlzaXMpOiBSZW1vdmUuCgpNb24gRmViIDI4IDA3OjAzOjI3IDIwMDAgIFJpY2hhcmQgS2VubmVyICA8a2VubmVyQHZsc2kxLnVsdHJhLm55dS5lZHU+CgoJKiBmdW5jdGlvbi5jIChudW1iZXJfYmxvY2tzKTogUmVzZXQgbmV4dF9ibG9ja19pbmRleCBiYXNlZCBvbgoJd2hhdCBkZWJ1Z2dpbmcgZm9ybWF0IGlzIHVzZWQsIG5vdCB3aGF0IGlzIGRlZmluZWQuCgoJKiBsY20uYzogTWlub3IgcmVmb3JtYXR0aW5nIHRocm91Z2hvdXQuCgkocmVnX2RpZXMsIHJlZ19iZWNvbWVzX2xpdmUpOiBQcm9wZXJseSBoYW5kbGUgbXVsdGlwbGUgaGFyZCByZWdzLgoKCSogdG9wbGV2LmMgKHJlc3Rfb2ZfY29tcGlsYXRpb24pOiBBY2NvdW50IGZvciB0aW1lIGluCglvcHRpbWl6ZV9tb2RlX3N3aXRjaGluZy4KCgkqIGp1bXAuYyAoanVtcF9vcHRpbWl6ZV8xKTogRG9uJ3QgY2FsbCBkZWxldGVfYmFycmllcl9zdWNjZXNzb3JzCglpZiBvbmx5IG1hcmtpbmcgbGFiZWxzLgoKTW9uIEZlYiAyOCAxMjo1Mzo1NyBNRVQgMjAwMCAgSmFuIEh1Ymlja2EgIDxqaEBzdXNlLmN6PgoKCSogY2FsbHMuYyAoZXhwYW5kX2NhbGwpOiBBdHRlbXB0IHRvIGNvbWJpbmUgc3RhY2sgYWRqdXN0bWVudHMgd2l0aAoJcGVuZGluZyBzdGFjayBhZGp1c3RtZW50cy4KCk1vbiBGZWIgMjggMTE6MzQ6NDMgMjAwMCAgSiJvcm4gUmVubmVja2UgPGFteWxhYXJAY3lnbnVzLmNvLnVrPgoKCSogbG9vcC5jIChyZWdfaW5fYmFzaWNfYmxvY2tfcCk6IERvbid0IGFib3J0IHdoZW4gZmFsbGluZyB0aHJvdWdoCgl0byB0aGUgZW5kIG9mIHRoZSBmdW5jdGlvbi4KCjIwMDAtMDItMjcgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBlbWl0LXJ0bC5jIChyZW1vdmVfdW5uZWNlc3Nhcnlfbm90ZXMpOiBSZW1vdmUgbm90ZXMgZm9yIGVtcHR5CglibG9ja3MuCgkqIGZpbmFsLmMgKG5leHRfYmxvY2tfaW5kZXgpOiBSZW1vdmUuCgkobWF4X2Jsb2NrX2RlcHRoKTogTGlrZXdpc2UuCgkocGVuZGluZ19ibG9ja3MpOiBMaWtld2lzZS4KCShpbml0X2ZpbmFsKTogRG9uJ3QgaW5pdGlhbGl6ZSB0aGVtLgoJKGZpbmFsX3N0YXJ0X2Z1bmN0aW9uKTogRG9uJ3Qgc2V0IG5leHRfYmxvY2tfaW5kZXguICBTZXQgdXAKCUJMT0NLX05VTUJFUi4KCShmaW5hbF9zY2FuX2luc24pOiBVc2UgQkxPQ0tfTlVNQkVSLCBub3QgbmV4dF9ibG9ja19pbmRleC4KCSogZnVuY3Rpb24uaCAobnVtYmVyX2Jsb2Nrcyk6IE5ldyBmdW5jdGlvbi4KCSogZnVuY3Rpb24uYyAoZ2V0X2Jsb2NrX3ZlY3Rvcik6IE5ldyBmdW5jdGlvbi4KCShpZGVudGlmeV9ibG9ja3MpOiBVc2UgaXQuCgkocmVvcmRlcl9ibG9ja3MpOiBTZXQgTk9URV9CTE9DSy4KCShudW1iZXJfYmxvY2tzKTogTmV3IGZ1bmN0aW9uLgoJKiB0cmVlLmRlZiAoQkxPQ0spOiBBZGQgZG9jdW1lbnRhdGlvbiBmb3IgVFJFRV9BU01fV1JJVFRFTiBmbGFnLgoJKiB0cmVlLmggKEJMT0NLX05VTUJFUik6IE5ldyBtYWNyby4KCSh0cmVlX2Jsb2NrKTogQWRkIGJsb2NrX251bSBmaWVsZC4KCSogZGJ4b3V0LmMgKG5leHRfYmxvY2tfbnVtYmVyKTogUmVtb3ZlLgoJKGRieG91dF9pbml0KTogRG9uJ3Qgc2V0IGl0LgoJKGRieG91dF9ibG9jayk6IE9ubHkgb3V0cHV0IGJsb2NrcyB0aGF0IGhhdmUgVFJFRV9BU01fV1JJVFRFTgoJc2V0LiAgVXNlIEJMT0NLX05VTUJFUiwgcmF0aGVyIHRoYW4gbmV4dF9ibG9ja19udW0sIHRvIGRldGVybWluZQoJYmxvY2sgbnVtYmVycy4KCSogdG9wbGV2LmMgKHJlc3Rfb2ZfY29tcGlsYXRpb24pOiBBbHdheXMgY2FsbAoJZmluZF9sb29wX3RyZWVfYmxvY2tzLiAgRml4IGluZGVudGF0aW9uLgoJKiBkd2FyZjJvdXQuYyAobmV4dF9ibG9ja19udW1iZXIpOiBSZW1vdmUuCgkoZ2VuX2xleGljYWxfYmxvY2tfZGllKTogVXNlIEJMT0NLX05VTUJFUiwgbm90IG5leHRfYmxvY2tfbnVtYmVyLAoJdG8gZGV0ZXJtaW5lIGJsb2NrIG51bWJlcnMuCgkoZ2VuX2lubGluZWRfc3Vicm91dGluZV9kaWUpOiBMaWtld2lzZS4KCShnZW5fYmxvY2tfZGllKTogT25seSBvdXRwdXQgYmxvY2tzIHRoYXQgaGF2ZSBUUkVFX0FTTV9XUklUVEVOIHNldC4KCShkZWNsc19mb3Jfc2NvcGUpOiBEb24ndCBpbmNyZW1lbnQgbmV4dF9ibG9ja19udW1iZXIuCgkqIGR3YXJmb3V0LmMgKG5leHRfYmxvY2tfbnVtYmVyKTogUmVtb3ZlLgoJKG91dHB1dF9sZXhpY2FsX2Jsb2NrX2RpZSk6IFVzZSBCTE9DS19OVU1CRVIsIG5vdCBuZXh0X2Jsb2NrX251bWJlciwKCXRvIGRldGVybWluZSBibG9jayBudW1iZXJzLgoJKG91dHB1dF9pbmxpbmVkX3N1YnJvdXRpbmVfZGllKTogTGlrZXdpc2UuCgkob3V0cHV0X2Jsb2NrKTogT25seSBvdXRwdXQgYmxvY2tzIHRoYXQgaGF2ZSBUUkVFX0FTTV9XUklUVEVOIHNldC4KCShvdXRwdXRfZGVjbHNfZm9yX3Njb3BlKTogRG9uJ3QgaW5jcmVtZW50IG5leHRfYmxvY2tfbnVtYmVyLgoJKiBzZGJvdXQuYyAobmV4dF9ibG9ja19udW1iZXIpOiBSZW1vdmUuCgkoc2Rib3V0X2Jsb2NrKTogVXNlIEJMT0NLX05VTUJFUi4KCShzZGJvdXRfYmVnaW5fYmxvY2spOiBTaW1wbGlmeS4KCSogeGNvZmZvdXQuYyAobmV4dF9ibG9ja19udW1iZXIpOiBSZW1vdmUuCgkoeGNvZmZvdXRfYmxvY2spOiBVc2UgQkxPQ0tfTlVNQkVSLCBub3QgbmV4dF9ibG9ja19udW1iZXIuCgkoeGNvZmZvdXRfYmVnaW5fYmxvY2spOiBEb24ndCBzZXQgbmV4dF9ibG9ja19udW1iZXIuCgkoeGNvZmZvdXRfYmVnaW5fZnVuY3Rpb24pOiBMaWtld2lzZS4gVXNlIEJMT0NLX05VTUJFUiwgbm90CgluZXh0X2Jsb2NrX251bWJlci4KClN1biBGZWIgMjcgMTY6NDA6MzMgMjAwMCAgUmljaGFyZCBLZW5uZXIgIDxrZW5uZXJAdmxzaTEudWx0cmEubnl1LmVkdT4KCgkqIGJ1aWx0aW5zLmMgKGNfc3RybGVuKTogVXNlIHNpemVfZGlmZm9wIGFuZCByZXR1cm4gc3NpemV0eXBlIHZhbHVlLgoJKGV4cGFuZF9idWlsdGluX3N0cmNweSk6IFBhc3MgY29ycmVjdCB0eXBlIHRvIHNpemVfYmlub3AuCgkoZXhwYW5kX2J1aWx0aW5fc3RyY21wKTogTGlrZXdpc2UuCglDbGVhbiB1cCBjb25kaXRpb25hbCBzdHJ1Y3R1cmUuCgkqIGMtZGVjbC5jIChpbml0X2RlY2xfcHJvY2Vzc2luZyk6IERvbid0IGNhbGwgc2V0X3NpemV0eXBlIHR3aWNlLgoJKGNvbXBsZXRlX2FycmF5X3R5cGUpOiBEb24ndCB1c2Ugc2l6ZV9iaW5vcCBmb3IgTUFYSU5ERVguCgkqIGMtdHlwZWNrLmMgKGNfc2l6ZW9mKTogVXNlIHNpemVfb25lX25vZGUgYW5kIFRZUEVfU0laRV9VTklULgoJKGNfc2l6ZW9mX25vd2FybiwgY19zaXplX2luX2J5dGVzKTogTGlrZXdpc2UuCgkoY19hbGlnbm9mKTogVXNlIHNpemVfb25lX25vZGUuCgkoYnVpbGRfdW5hcnlfb3ApOiBQYXNzIGFyZyBvZiBwcm9wZXIgdHlwZSB0byBzaXplX2Jpbm9wLgoJKHJlYWxseV9zdGFydF9pbmNyZW1lbnRhbF9pbml0LCBwdXNoX2luaXRfbGV2ZWwpOiBVc2Ugc2l6ZXR5cGUgZm9yCgljb25zdHJ1Y3RvcnssX2JpdCxfdW5maWxsZWR9X2luZGV4LgoJKHBvcF9pbml0X2xhYmVsLCBvdXRwdXRfaW5pdF9lbGVtZW50KTogTGlrZXdpc2UuCgkob3V0cHV0X3BlbmRpbmdfaW5pdF9lbGVtZW50cywgcHJvY2Vzc19pbml0X2VsZW1lbnQpOiBMaWtld2lzZS4KCSogY2FsbHMuYyAoY29tcHV0ZV9hcmd1bWVudF9ibG9ja19zaXplKTogRmllbGQgVkFSIGlzIHNzaXpldHlwZS4KCSogZXhwci5jIChzdG9yZV9leHByKTogVXNlIHNpemVfaW50LgoJKHN0b3JlX2NvbnN0cnVjdG9yKTogVXNlIHByb3BlciB0eXBlcyBmb3Igc2l6ZV9iaW5vcCBhcmdzLgoJKGdldF9pbm5lcl9yZWZlcmVuY2UsIGV4cGFuZF9leHByLCBjYXNlIEFSUkFZX1JFRik6IExpa2V3aXNlLgoJKGV4cGFuZF9leHByX3VuYWxpZ25lZCk6IExpa2V3aXNlLgoJKHN0cmluZ19jb250YW50KTogUmV0dXJuIG9iamVjdCBvZiBzaXpldHlwZS4KCSogZXhwci5oIChTVUJfUEFSTV9TSVpFKTogQ2FsbCBzaXplX2RpZmZvcCBhbmQgcGFzcyBwcm9wZXIgdHlwZXMuCgkoQVJHU19TSVpFX1JUWCk6IENhbGwgQVJHU19TSVpFX1RSRUUuCgkoQVJHU19TSVpFX1RSRUUpOiBQYXNzIHByb3BlciB0eXBlcyB0byBzaXplX2Jpbm9wLgoJKiBmb2xkLWNvbnN0LmMgKGludF9jb25zdF9iaW5vcCk6IFJlZmluZSB3aGVuIHNpemVfaW50IGlzIGNhbGxlZC4KCShmb2xkX2NvbnZlcnQpOiBMaWtld2lzZS4KCShzaXplX2ludF93aWRlKTogUmV3b3JrIHRvIHRha2UgS0lORCBhcyBhcmcsIG9ubHkgdGFrZSBsb3cgb3JkZXIKCWJpdHMsIGhhbmRsZSBuZXcgc2l6ZXR5cGVfdGFiIGRhdGF0eXBlLCBhbmQgY2hhaW4gZW50cmllcyBpbgoJc2l6ZV90YWJsZS4KCShzaXplX2ludF90eXBlX3dpZGUpOiBOZXcgZnVuY3Rpb24uCgkoc2l6ZV9iaW5vcCk6IFZhbGlkYXRlIHR5cGVzIG9mIGFyZ3VtZW50cy4KCShzc2l6ZV9iaW5vcCk6IERlbGV0ZWQuCgkoc2l6ZV9kaWZmb3ApOiBOZXcgZnVuY3Rpb24uCgkoZXh0cmFjdF9tdWxkaXYpOiBPbmx5IGZvbGQgZGl2aXNpb24gaW50byBtdWx0aXBsaWNhdGlvbiBmb3Igc2l6ZXR5cGVzLgoJKiBmdW5jdGlvbi5jIChhc3NpZ25fcGFybXMpOiBVc2Ugc2l6ZV9kaWZmb3AgYW5kIG1ha2Ugc3VyZQoJVkFSIGZpZWxkIGlzIG9mIHNzaXpldHlwZTsgYWxzbyBwYXNzIHByb3BlciB0eXBlIHRvIHNpemVfYmlub3AuCgkobG9jYXRlX2FuZF9wYWRfcGFybSwgcGFkX3RvX2FyZ19hbGlnbm1lbnQpOiBMaWtld2lzZS4KCShyb3VuZF9kb3duKTogRGVsZXRlZCBmcm9tIGhlcmUuCgkqIHN0b3JlLWxheW91dC5jIChzaXpldHlwZV90YWIpOiBOb3cgYW4gYXJyYXkuCgkoc2l6ZXR5cGVfc2V0LCBlYXJseV9yb290X2xpc3QpOiBOZXcgdmFyaWFibGVzLgoJKHZhcmlhYmxlX3NpemUpOiBVc2Ugc2l6ZV9vbmVfbm9kZS4KCShyb3VuZF91cCk6IFBhc3MgcHJvcGVyIHR5cGUgdG8gc2l6ZV9iaW5vcC4KCShyb3VuZF9kb3duKTogTW92ZWQgdG8gaGVyZSBhbmQgY29ycmVjdGVkIGFzIGFib3ZlLgoJKGxheW91dF9yZWNvcmQpOiBQYXNzIHByb3BlciBhcmcgdHlwZXMgdG8gc2l6ZV9iaW5vcC4KCShsYXlvdXRfdHlwZSk6IExpa2V3aXNlLgoJSWYgc2l6ZXR5cGVfc2V0IGlzIHplcm8sIHJlY29yZCB0aGUgdHlwZSBqdXN0IGxhaWQgb3V0LgoJKG1ha2VfdW5zaWduZWRfdHlwZSk6IERvbid0IGNhbGwgc2V0X3NpemV0eXBlOwoJKG1ha2Vfc2lnbmVkX3R5cGUpOiBMaWtld2lzZTsgYWxzbywgY2FsbCBmaXh1cF9zaWduZWRfdHlwZS4KCShpbml0aWFsaXplX3NpemV0eXBlcyk6IE5ldyBmdW5jdGlvbi4KCShzZXRfc2l6ZXR5cGUpOiBNYWtlIGNvcHkgb2YgdHlwZXMsIHNldCBUWVBFX0lTX1NJWkVUWVBFLCBhbmQKCXNldCBuYW1lIG9mIGJpdHNpemV0eXBlIHRvICJiaXRfc2l6ZV90eXBlIi4KCUZpeCB1cCB0eXBlIG9mIHNpemVzIG9mIGFsbCB0eXBlcyBtYWRlIGJlZm9yZSBjYWxsLgoJKiB0bS50ZXhpIChST1VORF9UWVBFX1NJWkVfVU5JVCk6IE5ldyBtYWNyby4KCSogdHJlZS5jIChmaXhfc2l6ZXR5cGUpOiBEZWxldGVkLgoJKGJ1aWxkX2NvbW1vbl90cmVlX25vZGVzKTogQ2FsbCBpbml0aWFsaXplX3NpemV0eXBlcy4KCShidWlsZF9jb21tb25fdHJlZV9ub2Rlc18yKTogRG9uJ3QgY2FsbCBmaXhfc2l6ZXR5cGUuCgkqIHRyZWUuaCAoVFlQRV9JU19TSVpFVFlQRSk6IE5ldyBtYWNyby4KCShpbml0aWFsaXplX3NpemV0eXBlKTogTmV3IGRlY2xhcmF0aW9uLgoJKGVudW0gc2l6ZV90eXBlX2tpbmQpOiBOZXcgdHlwZS4KCShzdHJ1Y3Qgc2l6ZXR5cGVfdGFiKTogRGVsZXRlZC4KCShzaXpldHlwZV90YWIpOiBOb3cgYXJyYXk7IGFkanVzdCBzaXpldHlwZSBtYWNyb3MuCgkoc2l6ZV9kaWZmb3AsIHNpemVfaW50X3R5cGVfd2lkZSk6IE5ldyBmdW5jdGlvbnMuCgkoc2l6ZV9pbnRfd2lkZSk6IENoYW5nZSBudW1iZXIgb2YgYXJncyBhbmQgdHlwZTsgYWNjZXNzIG1hY3JvcyBjaGFuZ2VkLgoJKHNzaXplX2ludCwgc2JpdHNpemVfaW50KTogTmV3IG1hY3Jvcy4KCSogY29uZmlnL2k5NjAvaTk2MC5oIChST1VORF9UWVBFX1NJWkUpOiBVc2Ugc2l6ZV9pbnQuCgkoUk9VTkRfVFlQRV9TSVpFX1VOSVQpOiBOZXcgbWFjcm8uCgoyMDAwLTAyLTI3ICBaYWNrIFdlaW5iZXJnICA8emFja0B3b2xlcnkuY3VtYi5vcmc+CgoJKiBjLWxleC5jIChwdXRiYWNrX2J1ZmZlcik6IE1ha2UgJ2J1ZmZlcicgYW4gdW5zaWduZWQgY2hhciAqLgoKU3VuIEZlYiAyNyAwNzo0NDoxNyAyMDAwICBSaWNoYXJkIEtlbm5lciAgPGtlbm5lckB2bHNpMS51bHRyYS5ueXUuZWR1PgoKCSogZ2Nvdi1pby5oIChfX2ZldGNoX2xvbmcsIF9fc3RvcmVfbG9uZywgX19yZWFkX2xvbmcsIF9fd3JpdGVfbG9uZyk6CglNYXJrIGFzIHBvc3NpYmx5IHVudXNlZC4KCgkqIGNzZS5jIChjc2VfaW5zbik6IERlbGV0ZSBkZWFkIGNvZGUgaW52b2x2aW5nIHRhYmxlanVtcC4KCVBhc3MgQ09ERV9MQUJFTCwgbm90IExBQkVMX1JFRiB0byBnZW5fanVtcCBhbmQgcmVzZXQgSU5TTl9DT0RFLgoKCSogTWFrZWZpbGUuaW4gKGxpYmNwcC5hKTogU3RhcnQgYnkgZGVsZXRpbmcgaXQuCgoyMDAwLTAyLTI3ICBBbGV4YW5kcmUgT2xpdmEgIDxvbGl2YUBsc2QuaWMudW5pY2FtcC5icj4KCgkqIGNwcGxpYi5oIChlbnVtIGZpbGVfY2hhbmdlX2NvZGUpOiBBZGRlZCByZW5hbWVfZmlsZS4KCSogY3BwbGliLmMgKGRvX2xpbmUpOiBJZiBhIGZpbGVuYW1lIGlzIGdpdmVuLCBzZXQgZmlsZV9jaGFuZ2UgdG8KCXJlbmFtZV9maWxlLgoJKG91dHB1dF9saW5lX2NvbW1hbmQpOiBJZiBmaWxlX2NoYW5nZSBpcyByZW5hbWVfZmlsZSwgYWx3YXlzCglvdXRwdXQgYSAjIGRpcmVjdGl2ZSB3aXRoIHRoZSBmaWxlIG5hbWUuCgoJKiBjcHBsaWIuYyAoZG9fcHJhZ21hKTogQWNjZXB0ICNwcmFnbWEgd2l0aG91dCBjb25zZWN1dGl2ZSB0b2tlbi4KCjIwMDAtMDItMjYgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBpbnRlZ3JhdGUuYyAoY29weV9kZWNsX2Zvcl9pbmxpbmluZyk6IFByZXNlcnZlIFRSRUVfQUREUkVTU0FCTEUKCXdoZW4gY29weWluZyBhIFBBUk1fREVDTCBvciBSRVNVTFRfREVDTC4KCjIwMDAtMDItMjYgIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIGZpeC1oZWFkZXIuYyAocmVjb2duaXplZF9mdW5jdGlvbik6IEFsc28gZml4IHByb3RvdHlwZXMgZm9yCglmdW5jdGlvbnMgdGFraW5nICJ2b2lkIi4KCjIwMDAtMDItMjYgIEdlb2ZmIEtlYXRpbmcgIDxnZW9mZmtAY3lnbnVzLmNvbT4KCgkqIHJlbG9hZDEuYyAoZG9fb3V0cHV0X3JlbG9hZCk6IENoZWNrIHJlZ19yZWxvYWRlZF92YWxpZCBiZWZvcmUKCWxvb2tpbmcgYXQgcmVnX3JlbG9hZGVkX2NvbnRlbnRzLgoKMjAwMC0wMi0yNiAgWmFjayBXZWluYmVyZyAgPHphY2tAd29sZXJ5LmN1bWIub3JnPgoKCSogTWFrZWZpbGUuaW4gKFNUTVBfRklYSU5DKTogTmV3IHRvZ2dsZS4KCShMSUJHQ0MyX0RFUFMpOiBEZWxldGUgYWxsIHJlZmVyZW5jZXMuCgkoc3RtcC1oZWFkZXJzKTogRGVsZXRlIHRhcmdldC4gIEFsbCByZWZlcmVuY2VzIGVpdGhlciBkZWxldGVkCglvciBjaGFuZ2VkIHRvIHN0bXAtaW50LWhlYWRlcnMuCgkoYWxsLmNyb3NzKTogRG9uJ3QgZGVwZW5kIG9uIHN0bXAtaGVhZGVycyBvciBTVE1QX0ZJWFBST1RPLgoJKExJQkNQUF9PQkpTKTogVGFrZSBvdXQgY3BwYWxsb2Muby4KCShjcHBhbGxvYy5vKTogRGVsZXRlIHRhcmdldC4KCShzdG1wLWludC1oZHJzKTogRGVwZW5kIG9uICQoU1RNUF9GSVhJTkMpLgoJKGdlbi1wcm90b3MsIGZpeC1oZWFkZXIpOiBMaW5rIHdpdGggbGliaWJlcnR5LmEuCgkqIGJ1aWxkLW1ha2U6IERvbid0IGNoYW5nZSBGSVhJTkNMVURFUy4gIE92ZXJyaWRlIFNUTVBfRklYSU5DCgl0byBlbXB0eS4KCgkqIGNvbmZpZ3VyZS5pbjogUmVtb3ZlIHJlZnMgdG8gc3RyZXJyb3IuCgkqIGFjY29uZmlnLmg6IFRha2Ugb3V0IE5FRURfREVDTEFSQVRJT05fU1RSRVJST1IuCgkqIHN5c3RlbS5oOiBUYWtlIG91dCBzdHJlcnJvciBzdGFuemEuCgoJKiBjcHBlcnJvci5jIChteV9zdHJlcnJvcik6IERlbGV0ZSBmdW5jdGlvbi4KCShjcHBfZXJyb3JfZnJvbV9lcnJubywgY3BwX25vdGljZV9mcm9tX2Vycm5vKTogVXNlIHhzdHJlcnJvci4KCSogY3BwbWFpbi5jIChtYWluKTogQ2FsbCB4bWFsbG9jX3NldF9wcm9ncmFtX25hbWUgZmlyc3QgdGhpbmcuCgkqIGNwcGFsbG9jLmM6IERlbGV0ZSBmaWxlLgoJKiBnZW4tcHJvdG9zLmM6IERvbid0IHByb3ZpZGUgeHJlYWxsb2MuCgoJKiBmaXhpbmMvZml4aW5jbC5jLCBmaXhpbmMvZml4bGliLmMsIGZpeGluYy9wcm9jb3Blbi5jOiBVc2UKCXhzdHJlcnJvciB0aHJvdWdob3V0LgoKMjAwMC0wMi0yNiAgQnJ1Y2UgS29yYiAgPGJrb3JiQGdudS5vcmc+CgoJKiBmaXhpbmMvaW5jbGhhY2suZGVmICh1bmRlZmluZV9udWxsKTogdGhlIGJ5cGFzcyBwYXR0ZXJuIG5lZWRzIHRvCgltYXRjaCBmb3IgRE9TIGhlYWRlcnMsIHRvby4KCSogZml4aW5jL2luY2xoYWNrLnNoLGZpeGluY2wueDogUmVnZW5lcmF0ZS4KCjIwMDAtMDItMjYgIEdlb2ZmIEtlYXRpbmcgIDxnZW9mZmtAY3lnbnVzLmNvbT4KCgkqIGNvbmZpZy9lbGZvcy5oIChBU01fT1VUUFVUX0xBQkVMUkVGKTogRG9uJ3QgZGVmaW5lLiAgVGhlIGRlZmF1bHQKCWlzIHJpZ2h0IGZvciBtb3N0IEVMRiB0YXJnZXRzLgoJKiBjb25maWcvbnMzMmsvbnMzMmsuaCAoQVNNX09VVFBVVF9MQUJFTFJFRik6IERvbid0IGRlZmluZS4KCUxldCB0aGUgZGVmYXVsdCBmaWxlIHVzZSAlVSBwcm9wZXJseS4KCSogY29uZmlnL3NoL2VsZi5oIChBU01fT1VUUFVUX0xBQkVMUkVGKTogRG9uJ3QgZGVmaW5lLiAgVXNlIHRoZQoJZGVmYXVsdC4KCgkqIGNvbmZpZy9mcC1iaXQuYyAocGFja19kKTogUHJvcGVybHkgaGFuZGxlIHJvdW5kaW5nIG9mIGRlbm9ybWFsCgludW1iZXJzLgoKU2F0IEZlYiAyNiAwOTozOToxNiAyMDAwICBSaWNoYXJkIEtlbm5lciAgPGtlbm5lckB2bHNpMS51bHRyYS5ueXUuZWR1PgoKCSogdG9wbGV2LmMgKGRvY3VtZW50ZWRfbGFuZ19vcHRpb25zKTogQ29ycmVjdCBzcGVsbGluZyBlcnJvci4KCShkZWNvZGVfZF9vcHRpb24sIGRlY29kZV9mX29wdGlvbiwgbWFpbik6IExpa2V3aXNlLgoKCSogdG9wbGV2LmMgKHByaW50X3RpbWUpOiBBdm9pZCBTSUdGUEUgd2hlbiBhbGxfdGltZSBpcyB6ZXJvLgoKCSogY29uZmlnL2FscGhhL2FscGhhLmggKEFTTV9PVVRQVVRfTUlfVEhVTkspOiBVc2UgLnNldCBhdAoJdG8gdGVsbCBhc3NlbWJsZXIgaXQgaXMgcGVybWl0dGVkIHRvIGV4cGFuZCBsYXJnZSBjb25zdGFudHMuCgoyMDAwLTAyLTI1ICBNdW1pdCBLaGFuICA8a2hhbkB4cmF5bGl0aC53aXNjLmVkdT4KCgkqIHByb3RvaXplLmM6IChBVVhfSU5GT19TVUZGSVgpOiBOZXcgbWFjcm8uCgkoYXV4X2luZm9fc3VmZml4KTogVXNlLgoJKFNBVkVfU1VGRklYKTogTmV3IG1hY3JvLgoJKHNhdmVfc3VmZml4KTogVXNlLgoJKG11bmdlX2NvbXBpbGVfcGFybXMpOiBGaXggdHlwbyBpbiBOVUwuIERKR1BQIHN1cHBvcnRzIC9kZXYvbnVsbC4KCShnZW5fYXV4X2luZm9fZmlsZSk6IFVzZSBhdXhfaW5mb19zdWZmaXggaW5zdGVhZCBvZiAiLlgiLgoJKGVkaXRfZmlsZSk6IEhhbmRsZSA4LjMgcmVzdHJpY3Rpb24gZm9yIERPUy9ESkdQUCBmaWxlbmFtZXMuCgoJKiBpbnZva2UudGV4aSAoUnVubmluZyBQcm90b2l6ZSk6IFVwZGF0ZSBkb2N1bWVudGF0aW9uLgoKMjAwMC0wMi0yNSBNYXJrIEVsYnJlY2h0IDxzbm93YmFsbDNAYmlnZm9vdC5jb20+CgoJKiBpMzg2L2RqZ3BwLmggKENQUF9QUkVERUZJTkVTKTogUmVtb3ZlIFVuaXggZGVmaW5lcy4KCjIwMDAtMDItMjUgIEpvaG4gV2VobGUgIChqb2huQGZlaXRoLmNvbSkKCgkqIHJ0bGFuYWwuYyAoZmluZF9sYXN0X3ZhbHVlKTogQWxsb3cgTlVMTF9SVFggZm9yIHZhbGlkX3RvLgoKMjAwMC0wMi0yNSAgQW50aG9ueSBHcmVlbiAgPGdyZWVuQGN5Z251cy5jb20+CgoJKiB0b3BsZXYuYyAocmVzdF9vZl9jb21waWxhdGlvbik6IFJlYnVpbGQganVtcCBsYWJlbHMgaWYKCWNvbWJpbmVfaW5zdHJ1Y3Rpb25zIGhhcyBjcmVhdGVkIGEgbmV3IGRpcmVjdCBqdW1wLgoJKiBjb21iaW5lLmMgKHRyeV9jb21iaW5lKTogQWRkIG5ld19kaXJlY3RfanVtcF9wIGFyZ3VtZW50LiAgU2V0IGl0Cgl3aGVuIGFwcHJvcHJpYXRlLgoJKGNvbWJpbmVfaW5zdHJ1Y3Rpb25zKTogQ2FsbCB0cnlfY29tYmluZSB3aXRoIG5ldyBhcmd1bWVudC4KCVJldHVybiBub24tbnVsbCB2YWx1ZSB3aGVuIG5ldyBkaXJlY3QganVtcCBpbnN0cnVjdGlvbiBpcyBjcmVhdGVkLgoJKiBydGwuaDogY29tYmluZV9pbnN0cnVjdGlvbnMgcmV0dXJucyBhbiBpbnQuCgpGcmkgRmViIDI1IDE5OjQ5OjA4IDIwMDAgIEplZmZyZXkgQSBMYXcgIChsYXdAY3lnbnVzLmNvbSkKCgkqIGNzZS5jIChjc2VfaW5zbik6IFJlcGxhY2UgdGhlIFBBVFRFUk4gb2YgdGhlIGluc24gd2l0aCBhbiBuZXcKCWp1bXAgd2hlbiBjaGFuZ2luZyBhIGNvbXB1dGVkIGp1bXAgaW50byBhIGp1bXAgdG8gYSBrbm93bgoJdGFyZ2V0LgoKRnJpIEZlYiAyNSAxOToyMjo0NCAyMDAwICBHcmFoYW0gU3RvdHQgPGdyYWhhbXNAcmNwLmNvLnVrPgoKCSogcmVzb3VyY2UuYyAobWFya19yZWZlcmVuY2VkX3Jlc291cmNlcyk6IENoYW5nZWQgdXNlIFNFVF9ERVNUICguLi4pCgl0byBYRVhQICguLi4sIDApIG9uIFJUTCBub2RlcyB3aGljaCBhcmUgbm90IFNFVCBvciBDTE9CQkVSLgoKCSogaTM4Ni5tZCAoZGVmaW5lX2V4cGFuZCAiY2xyc3Ryc2kiKTogRml4IHR5cG8uCgpGcmkgRmViIDI1IDE4OjQ5OjM5IDIwMDAgICJLLiBSaWNoYXJkIFBpeGxleSIgPHJpY2hAbWljcm91bml0eS5jb20+CgoJKiBydGwudGV4aTogRml4IHR5cG8uCgpGcmkgRmViIDI1IDIwOjAyOjM1IDIwMDAgIEoib3JuIFJlbm5lY2tlIDxhbXlsYWFyQGN5Z251cy5jby51az4KCgkqIHNoLmMgKGNhbGNfbGl2ZV9yZWdzKTogTXVsdGlwbHkgdmFsdWUgYXNzaWduZWQgdG8gKkNPVU5UX1BUUiBieQoJVU5JVFNfUEVSX1dPUkQuICBDaGFuZ2UgY2FsbGVyIGluaXRpYWxfZWxpbWluYXRpb25fb2Zmc2V0LgoJKHJvdW5kZWRfZnJhbWVfc2l6ZSk6IFRha2UgaW50byBhY2NvdW50IHRoYXQgYXJndW1lbnQgcHVzaGVkIGhhcwoJY2hhbmdlZC4gIEZpeCBUQVJHRVRfQUxJR05fRE9VQkxFIHByb2JsZW0uCgoyMDAwLTAyLTI1ICBHZW9mZiBLZWF0aW5nICA8Z2VvZmZrQGN5Z251cy5jb20+CgoJKiBoYWlmYS1zY2hlZC5jIChzY2hlZHVsZV9ibG9jayk6IEV4cGxhaW4gdGhlIHJlYWwgcmVhc29uCgl3ZSBkZWxldGUgUkVHX1NBVkVfTk9URXMgb24gdGhlIGZpcnN0IGluc24gb2YgYSBibG9jay4KCURvbid0IGRlbGV0ZSBSRUdfU0FWRV9OT1RFUyBmb3IgTk9URV9JTlNOX1NFVEpNUC4KCjIwMDAtMDItMjQgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBpbnB1dC5oIChwdXNoX3NyY2xvYyk6IE5ldyBmdW5jdGlvbi4KCShwb3Bfc3JjbG9jKTogTGlrZXdpc2UuCgkqIHRvcGxldi5jIChwdXNoX3NyY2xvYyk6IERlZmluZSBpdC4KCShwb3Bfc3JjbG9jKTogTGlrZXdpc2UuCgoyMDAwLTAyLTI0ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEBjeWdudXMuY29tPgoKCSogZmxvdy5jIChsaWZlX2FuYWx5c2lzKTogV2hlbiBjb2xsZWN0aW5nIHJlZyBpbmZvLCBjbGVhcgoJcmVnc19ldmVyX2xpdmUuCgpUaHUgRmViIDI0IDIyOjA2OjUyIDIwMDAgIEoib3JuIFJlbm5lY2tlIDxhbXlsYWFyQGN5Z251cy5jby51az4KCglGaXggYnVnIGV4cG9zZWQgYnkgcmVsb2FkLmMgbm8gbG9uZ2VyIHJvdW5kaW5nIHRoZSBmcmFtZQoJc2l6ZSB0byBCSUdHRVNUX0FMSUdOTUVOVDoKCSogc2guYyAocm91bmRlZF9mcmFtZV9zaXplKTogTmV3IGZ1bmN0aW9uLgoJKHNoX2V4cGFuZF9wcm9sb2d1ZSwgc2hfZXhwYW5kX2VwaWxvZ3VlKTogVXNlIGl0LgoJKGluaXRpYWxfZWxpbWluYXRpb25fb2Zmc2V0KTogTGlrZXdpc2UuCgpUaHUgRmViIDI0IDIwOjA0OjExIDIwMDAgIEoib3JuIFJlbm5lY2tlIDxhbXlsYWFyQGN5Z251cy5jby51az4KCglGaXggYnJlYWthZ2UgZnJvbSA2dGggRmViIHRocmVhZF9wcm9sb2d1ZV9hbmRfZXBpbG9ndWVfaW5zbnMgY2hhbmdlOgoJKiBzaC1wcm90b3MuaCAoc2hfbmVlZF9lcGlsb2d1ZSk6IERlY2xhcmUuCgkqIHNoLmMgKHNoX25lZWRfZXBpbG9ndWVfa25vd24pOiBOZXcgc3RhdGljIHZhcmlhYmxlLgoJKHNoX25lZWRfZXBpbG9ndWUpOiBOZXcgZnVuY3Rpb24uCgkoZnVuY3Rpb25fZXBpbG9ndWUpOiBDbGVhciBuZWVkX2VwaWxvZ3VlX2tub3duLgoJKiBzaC5tZCAocmV0dXJuKTogU3BsaXQgaW50byBleHBhbmRlciAvIGluc24gcGF0dGVybi4KCU1ha2UgdGhlIGV4cGFuZGVyIGNvbmRpdGlvbmFsIG9uICEgc2hfbmVlZF9lcGlsb2d1ZSAoKS4KCjIwMDAtMDItMjQgIE5hdGhhbiBTaWR3ZWxsICA8bmF0aGFuQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBtYWNobW9kZS5oIChnZXRfbW9kZV9hbGlnbm1lbnQpOiBEZWNsYXJlLgoJKEdFVF9NT0RFX0FMSUdOTUVOVCk6IENhbGwgaXQuCgkqIHN0b3ItbGF5b3V0LmMgKGdldF9tb2RlX2FsaWdubWVudCk6IE5ldyBmdW5jdGlvbi4gTWFrZQoJc3VyZSBhbGlnbm1lbnQgaXMgYWx3YXlzIHBvd2VyIG9mIDIuCgoyMDAwLTAyLTIzICBaYWNrIFdlaW5iZXJnICA8emFja0B3b2xlcnkuY3VtYi5vcmc+CgoJKiBpMzg2Lmg6IFJlbW92ZSB1c2VsZXNzIGRlZmluaXRpb24gb2YgIkkzODYiIGFuZCBtaXNsZWFkaW5nCgljb21tZW50IGFib3ZlIGl0LgoKMjAwMC0wMi0yMyAgWmFjayBXZWluYmVyZyAgPHphY2tAd29sZXJ5LmN1bWIub3JnPgoKCSogdHJlZS5oIChUUkVFX1NFVF9QRVJNQU5FTlQpOiBOZXcgbWFjcm8uICBEb2N1bWVudCBjb25kaXRpb25zCgl1bmRlciB3aGljaCBUUkVFX1BFUk1BTkVOVCB3aWxsIGJlIHNldC4KCSogdHJlZS5jIChtYWtlX25vZGUsIGNvcHlfbm9kZSwgbWFrZV90cmVlX3ZlYywgdHJlZV9jb25zLAoJYnVpbGQxKTogVXNlIFRSRUVfU0VUX1BFUk1BTkVOVC4KCSogcHJpbnQtdHJlZS5jIChwcmludF9ub2RlKTogRG9uJ3QgcmVwb3J0IHZhbHVlIG9mCglUUkVFX1BFUk1BTkVOVCBpZiBnZ2NfcCBpcyB0cnVlLgoKCSogYy1jb21tb24uYyAoY19nZXRfYWxpYXNfc2V0KTogRG9uJ3QgdXNlIFRSRUVfUEVSTUFORU5UIHRvCglkZWNpZGUgd2hldGhlciB0byBnaXZlIGEgdHlwZSBhIG5ldyBhbGlhcyBzZXQuCgkqIG9iamMvb2JqYy1hY3QuYyAoYnVpbGRfb2JqY19zdHJpbmdfb2JqZWN0KTogTmV2ZXIgY29weSB0aGUgc3RyaW5nLgoJKiB0cmVlLmMgKG1ha2Vfbm9kZSk6IFNldCBERUNMX0lOX1NZU1RFTV9IRUFERVIgaXJyZXNwZWN0aXZlCglvZiB2YWx1ZSBvZiAnb2JzdGFjaycuCgoKMjAwMC0wMi0yNCAgTWljaGFlbCBIYXllcyAgPG0uaGF5ZXNAZWxlYy5jYW50ZXJidXJ5LmFjLm56PgoKCSogY29uZmlnL2M0eC9jNHguYyAoYzR4X3Byb2Nlc3NfYWZ0ZXJfcmVsb2FkKTogU3BsaXQgYWxsIGluc25zLgoKMjAwMC0wMi0yMyAgQWxleGFuZHJlIE9saXZhICA8b2xpdmFAbHNkLmljLnVuaWNhbXAuYnI+CgoJKiBjcHBsaWIuaCAoZW51bSBjcHBfdG9rZW4pOiBBZGRlZCBDUFBfV0NIQVIgYW5kIENQUF9XU1RSSU5HLgoJKiBjcHBsaWIuYyAoY3BwX2dldF90b2tlbik6IFByb2R1Y2UgdGhlbS4KCSogY3BwZXhwLmMgKGNwcF9sZXgpOiBIYW5kbGUgdGhlbS4KCjIwMDAtMDItMjMgIE5pY2sgQ2xpZnRvbiAgPG5pY2tjQGN5Z251cy5jb20+CgoJKiBjb25maWcvYXJtL2FybS5jIChhcm1fY29tcF90eXBlX2F0dHJpYnV0ZXMpOiBTaW1wbHkgYW5kCgljb21tZW50IHRlc3RzIG9uIHR5cGUgYXR0cmlidXRlcy4KCldlZCBGZWIgMjMgMTY6NDI6MjEgMjAwMCAgSiJvcm4gUmVubmVja2UgPGFteWxhYXJAY3lnbnVzLmNvLnVrPgoKCSogZmluYWwuYyAoc2hvcnRlbl9icmFuY2hlcyk6IE1ha2UgdmFsdWUgcGFzc2VkIHRvIExPT1BfQUxJR04KCWNvbmZvcm0gdG8gZG9jdW1lbnRhdGlvbi4KCSogc2guaCAoTE9PUF9BTElHTik6IElmIGFsaWduaW5nIGxvb3BzLCBjYWxsIHNoX2xvb3BfYWxpZ24KCXRvIGNoZWNrIGZvciBzcGVjaWFsIGNhc2VzLgoJKiBzaC1wcm90b3MuaCAoc2hfbG9vcF9hbGlnbik6IERlY2xhcmUuCgkqIHNoLmMgKHNoX2xvb3BfYWxpZ24pOiBEZWZpbmUuCgoyMDAwLTAyLTIyICBBbmRyZXcgSGFsZXkgIDxhcGhAY3lnbnVzLmNvbT4KCgkqIGNvbmZpZy9taXBzL21pcHMuaCAoR0FTX0FTTV9TUEVDKTogUGFzcyAtbWdwMzIvLW1ncDY0IHRvIGdhcy4KCShTSVpFX1RZUEUpOiBJcyAzMiBiaXRzIHdoZW4gdXNpbmcgLW1ncDMyLgoJKFBUUkRJRkZfVFlQRSk6IERpdHRvLgoKV2VkIEZlYiAyMyAwNzoyNjoyNyAyMDAwICBSaWNoYXJkIEtlbm5lciAgPGtlbm5lckB2bHNpMS51bHRyYS5ueXUuZWR1PgoKCSogZGlhZ25vc3RpYy5jIChpbml0X291dHB1dF9idWZmZXIpOiBIYW5kbGUgY2FzZSBvZiBudWxsIFBSRUZJWC4KCjIwMDAtMDItMjMgIFphY2sgV2VpbmJlcmcgIDx6YWNrQHdvbGVyeS5jdW1iLm9yZz4KCgkqIGNvbmZpZy9pMzg2L2kzODYuaDogSWYgSU5fVEFSR0VUX0xJQlMgaXMgZGVmaW5lZCwgbWFrZQoJQklHR0VTVF9GSUVMRF9BTElHTk1FTlQgYSBjb25zdGFudC4KCjIwMDAtMDItMjEgIEphc29uIE1lcnJpbGwgIDxqYXNvbkBjYXNleS5jeWdudXMuY29tPgoKCSogZHdhcmYyb3V0LmMgKG91dHB1dF9saW5lX2luZm8pOiBQdXQgdGhlIG1hcmtlciBmb3IgdGhlIGVuZCBvZgoJdGhlIGxpbmUgbnVtYmVyIGluZm8gYXQgdGhlIGFjdHVhbCBlbmQuCgkoZ2VuX3N0cnVjdF9vcl91bmlvbl90eXBlX2RpZSk6IFVzZSBkZWNsX2Z1bmN0aW9uX2NvbnRleHQKCXRvIGNoZWNrIGZvciBsb2NhbCBjbGFzc2VzLgoJKiBkd2FyZm91dC5jIChvdXRwdXRfdHlwZSk6IExpa2V3aXNlLgoKVHVlIEZlYiAyMiAwMTozODo1NyAyMDAwICBKZWZmcmV5IEEgTGF3ICAobGF3QGN5Z251cy5jb20pCgoJKiBwYS5oIChGVU5DVElPTl9BUkdfUEFTU19CWV9SRUZFUkVOQ0UpOiBIYW5kbGUgcGFzcy1ieS1yZWZlcmVuY2UKCWZvciBhcmd1bWVudHMgd2l0aCBhIG1vZGUsIGJ1dCBubyB0eXBlLgoJKEZVTkNUSU9OX0FSR19DQUxMRUVfQ09QSUVTKTogU2ltaWxhcmx5LgoJKiB0LXBhIChMSUIyRlVOQ1NfRVhUUkEpOiBBZGQgcXVhZGxpYi5hc20uCgkqIHBhL2xvbmdfZG91YmxlLmg6IE5ldyBmaWxlLgoJKiBjb25maWd1cmUuaW4gKGhwdXgxMCwgaHB1eDExIGNvbmZpZ3VyYXRpb25zKTogaHB1eDEwIGFuZCBocHV4MTEKCWJvdGggaGF2ZSAxMjhiaXQgd2lkZSBsb25nIGRvdWJsZXMuCgkqIGNvbmZpZ3VyZTogUmVidWlsdC4KCjIwMDAtMDItMjEgIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIGRlZmF1bHRzLmggKEFTTV9PVVRQVVRfQVNDSUkpOiBDb25zdGlmeSBhIGNoYXIqLgoKCSogZmxvdy5jIChnZXRfY29tbW9uX2Rlc3QsIGNoYWluX3Jlb3JkZXJfYmxvY2tzLCBtYWtlX3Jlb3JkZXJfY2hhaW4sCglmaXh1cF9yZW9yZGVyX2NoYWluLCBza2lwX2luc25zX2JldHdlZW5fYmxvY2spOiBBZGQgc3RhdGljIHByb3RvdHlwZXMuCgkobGlmZV9hbmFseXNpcyk6IFdyYXAgdmFyaWFibGUgYGknIHdpdGggbWFjcm8gRUxJTUlOQUJMRV9SRUdTLgoKCSogaGFpZmEtc2NoZWQuYyAocmFua19mb3Jfc2NoZWR1bGUpOiBEb24ndCBjYXN0IGF3YXkgY29uc3QtbmVzcy4KCgkqIGludGVncmF0ZS5jIChjb21wYXJlX2Jsb2NrcywgZmluZF9ibG9jayk6IExpa2V3aXNlLgoKCSogcnRsLmMgKGZhdGFsX3dpdGhfZmlsZV9hbmRfbGluZSk6IEFkZCBBVFRSSUJVVEVfUFJJTlRGXzIuCgoJKiBydGwuaCAoc2V0X2ZpbGVfYW5kX2xpbmVfZm9yX3N0bXQpOiBDb25zdGlmeSBhIGNoYXIqLgoKCSogc3RtdC5jIChzdG10X3N0YXR1cywgc2V0X2ZpbGVfYW5kX2xpbmVfZm9yX3N0bXQsCglleHBhbmRfYXNtX29wZXJhbmRzKTogTGlrZXdpc2UuCgpNb24gRmViIDIxIDE3OjA2OjI3IDIwMDAgIEphc29uIEVja2hhcmR0ICA8amxlQGN5Z251cy5jb20+CgoJKiBwcmVkaWN0LmMgKGVzdGltYXRlX3Byb2JhYmlsaXR5KTogQWRkZWQgdGhlIHBvaW50ZXIgaGV1cmlzdGljIHRvCgl0aGUgY29sbGVjdGlvbiBvZiBzdGF0aWMgYnJhbmNoIHByZWRpY3RvcnMuCgoyMDAwLTAyLTIxICBDYXRoZXJpbmUgTW9vcmUgIDxjbG1AY3lnbnVzLmNvbT4KCgkqIGNvbmZpZy9taXBzL21pcHMuaCAoQVNNX1NQRUMpOiBBZGQgLW1maXg3MDAuCgkqIGludm9rZS50ZXhpICgtbWZpeDcwMDApOiBEb2N1bWVudC4KCjIwMDAtMDItMjEgIEdhYnJpZWwgRG9zIFJlaXMgIDxnZHJAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGRpYWdub3N0aWMuYyAoaW5pdF9vdXRwdXRfYnVmZmVyKTogTWFrZSBpdCBwb3NzaWJsZSB0byBvdXRwdXQgYXQKCWxlYXN0IDMyIGNoYXJhY3RlcnMgaWYgd2UncmUgZ2l2ZW4gYSB0b28gbG9uZyBwcmVmaXguCgoyMDAwLTAyLTIwICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogdmFyYXNtLmMgKGluaXRpYWxpemVyX2NvbnN0YW50X3ZhbGlkX3ApOiBDYWxsCglsYW5nX2V4cGFuZF9jb25zdGFudCB0bwlzaW1wbGlmeSB0aGUgY29uc3RhbnQuCgoyMDAwLTAyLTIwICBCcnVjZSBLb3JiICA8YmtvcmJAZ251Lm9yZz4KCgkqIGZpeGluYy9pbmNsaGFjay5kZWYoc3RkaW9fdmFfbGlzdCk6Cgl0eXBlZGVmIG5lZWRzIHRvIGJlIGRpc2FibGVkLgoJKiBmaXhpbmMvaW5jbGhhY2suc2g6IHJlZ2VuCgkqIGZpeGluYy9maXhpbmNsLng6IHJlZ2VuCgoyMDAwLTAyLTIwICBHZW9mZiBLZWF0aW5nICA8Z2VvZmZrQGN5Z251cy5jb20+CgoJKiBwcmludC1ydGwuYyAocHJpbnRfcnR4KTogRG9uJ3QgcHJpbnQgYWRkcmVzc2VzIHdoZW4KCWZsYWdfZHVtcF91bm51bWJlcmVkLgoKMjAwMC0wMi0yMCAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogc3BhcmMuYyAoc3BhcmNfb3V0cHV0X3NjcmF0Y2hfcmVnaXN0ZXJzKTogTWFyayBwYXJhbWV0ZXIgd2l0aAoJQVRUUklCVVRFX1VOVVNFRC4KCShzcGFyY192YV9hcmcsIHNwYXJjX2ZsYXRfb3V0cHV0X2Z1bmN0aW9uX3Byb2xvZ3VlLAoJc3BhcmNfZmxhdF9vdXRwdXRfZnVuY3Rpb25fZXBpbG9ndWUpOiBDYXN0IHZhbHVlIHRvIHVuc2lnbmVkIGluCgljb21wYXJpc29uLgoJKHNwYXJjX2VtaXRfZmxvYXRfbGliX2NtcCk6IFJlbW92ZSB1bnVzZWQgdmFyaWFibGUgYGNtcCcuCgoJKiBzcGFyYy5tZDogQWRkIGRlZmF1bHQgY2FzZSBpbiBzd2l0Y2guCgoyMDAwLTAyLTE5ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEBjeWdudXMuY29tPgoKCSogYy10eXBlY2suYyAoYWRkX3BlbmRpbmdfaW5pdCk6IERvbid0IGFib3J0IGZvciBtdWx0aXBsZQoJZmllbGRzIGF0IHRoZSBzYW1lIG9mZnNldC4KCShwZW5kaW5nX2luaXRfbWVtYmVyKTogVGVzdCB0aGUgY29ycmVjdCBtZW1iZXIuCgoyMDAwLTAyLTE5ICBIZXJtYW4gQS5KLiB0ZW4gQnJ1Z2dlIDxIYWouVGVuLkJydWdnZUBuZXQuSENDLm5sPgoKCSogZXhjZXB0LmMgKHN0YXJ0X2R5bmFtaWNfaGFuZGxlcikgOiBVc2UgVFlQRV9NT0RFIChpbnRlZ2VyX3R5cGVfbm9kZSkKCWluc3RlYWQgb2YgU0ltb2RlLgoJKHN0YXJ0X2NhdGNoX2hhbmRsZXIpIDogU2FtZS4KCjIwMDAtMDItMTkgIEJyYWQgTHVjaWVyICAobHVjaWVyQG1hdGgucHVyZHVlLmVkdSkKCgkqIE1ha2VmaWxlLmluOiBIYXZlIGZsb3cubyBkZXBlbmQgb24gJChFWFBSX0gpCgpTYXQgRmViIDE5IDE4OjQzOjEzIDIwMDAgIFJpY2hhcmQgS2VubmVyICA8a2VubmVyQHZsc2kxLnVsdHJhLm55dS5lZHU+CgoJKiBjLWNvbW1vbi5jIChkZWNsX2F0dHJpYnV0ZXMpOiBTZXQgREVDTF9TSVpFX1VOSVQuCgkqIGMtZGVjbC5jIChkdXBsaWNhdGVfZGVjbHMsIGZpbmlzaF9lbnVtKTogTGlrZXdpc2UuCgkoZmluaXNoX2RlY2wpOiBSZW1vdmUgLVdsYXJnZXItdGhhbiBjb2RlIGZyb20gaGVyZS4KCSogZmxhZ3MuaCAoaWRfY2xhc2hfbGVuKTogTm93IGludC4KCShsYXJnZXJfdGhhbl9zaXplKTogTm93IEhPU1RfV0lERV9JTlQuCgkqIGZvbGQtY29uc3QuYyAoc2l6ZV9pbnRfd2lkZSk6IE5vIG1vcmUgSElHSCBwYXJtOyBOVU1CRVIgaXMgc2lnbmVkLgoJQ2xlYW4gdXAgY2hlY2tpbmcgdG8gc2VlIGlmIGluIHRhYmxlLgoJKG1ha2VfYml0X2ZpZWxkX3JlZik6IFJlbW92ZSBleHRyYSBwYXJtIHRvIGJpdHNpemVfaW50LgoJKiBnZ2MtY29tbW9uLmMgKGdnY19tYXJrX3RyZWVfY2hpbGRyZW4pOiBNYXJrIERFQ0xfU0laRV9VTklULgoJKiBwcmludC10cmVlLmMgKHByaW50X25vZGUpOiBQcmludCBERUNMX1NJWkVfVU5JVCBhbmQgVFlQRV9TSVpFX1VOSVQuCgkqIHN0bXQuYyAoZXhwYW5kX2RlY2wpOiBVc2UgREVDTF9TSVpFX1VOSVQgZm9yIHN0YWNrIGNoZWNraW5nIHNpemUKCWFuZCBmb3IgY29tcHV0aW5nIHNpemUgb2YgZGVjbC4KCSogc3Rvci1sYXlvdXQuYyAobGF5b3V0X2RlY2wpOiBTZXQgREVDTF9TSVpFX1VOSVQuCglNb3ZlIC1XbGFyZ2VyLXRoYW4gY29kZSB0byBoZXJlLgoJKGxheW91dF9yZWNvcmQpOiBSZW1vdmUgZXh0cmEgYXJnIHRvIGJpdHNpemVfaW50LgoJU2V0IFRZUEVfQklORk9fU0laRV9VTklULgoJKGxheW91dF91bmlvbik6IFJlbW92ZSBleHRyYSBhcmcgdG8gYml0c2l6ZV9pbnQuCglVc2UgcHJvcGVyIHR5cGUgZm9yIHNpemUgb2YgUVVBTF9VTklPTi4KCShsYXlvdXRfdHlwZSk6IFJlbW92ZSBleHRyYSBhcmcgdG8gYml0c2l6ZV9pbnQuCgkqIHRvcGxldi5jIChpZF9jbGFzaF9sZW4pOiBOb3cgaW50LgoJKGxhcmdlcl90aGFuX3NpemUpOiBOb3cgSE9TVF9XSURFX0lOVC4KCShkZWNvZGVfV19vcHRpb24pOiBDbGVhbiB1cCBpZC1jbGFzaCBhbmQgbGFyZ2VyLXRoYW4tIGNhc2VzLgoJKiB0cmVlLmMgKGdldF9pZGVudGlmaWVyLCBtYXliZV9nZXRfaWRlbnRpZmllcik6IFJlbW92ZSB1bm5lZWRlZCBjYXN0cy4KCShleHByX2FsaWduLCBjYXNlIEZVTkNUSU9OX0RFQ0wpOiBERUNMX0FMSUdOIGlzIG5vdCBkZWZpbmVkLgoJKiB0cmVlLmggKEJJTkZPX1NJWkVfVU5JVCwgVFlQRV9CSU5GT19TSVpFX1VOSVQsIERFQ0xfU0laRV9VTklUKTogTmV3LgoJKHN0cnVjdCB0cmVlX2RlY2wpOiBOZXcgZmllbGQgc2l6ZV91bml0LgoJKHNpemVfaW50X3dpZGUpOiBObyBISUdIIG9wZXJhbmQ7IE5VTUJFUiBpcyBub3cgc2lnbmVkLgoJKHNpemVfaW50XzIpOiBEZWxldGVkLgoJKHNpemVfaW50LCBiaXRzaXplX2ludCk6IERvbid0IHVzZSBpdCBhbmQgcmV3b3JrIGFyZ3MuCgkqIHZhcmFzbS5jIChhc3NlbWJsZV92YXJpYWJsZSwgb3V0cHV0X2NvbnN0cnVjdG9yKTogVXNlIERFQ0xfU0laRV9VTklULgoKRnJpIEZlYiAxOCAyMDowMTo1OCAyMDAwICBKZWZmcmV5IEEgTGF3ICAobGF3QGN5Z251cy5jb20pCgoJKiBwYS9xdWFkbGliLmFzbSAoX1VfUUZndCwgX1VfUWZnZSk6IEZpeCBmbGFncyBmb3IgX1VfUWZjbXAgY2FsbC4KCjIwMDAtMDItMTggIEdlb2ZmIEtlYXRpbmcgIDxnZW9mZmtAY3lnbnVzLmNvbT4KCgkqIGludm9rZS50ZXhpIChXYXJuaW5nIE9wdGlvbnMpOiBBZGQgYW4gZXhwbGFuYXRpb24gb2Ygd2h5Cgl5b3UgbWlnaHQgd2FudCB0aGUgLVdmbG9hdC1lcXVhbCBmbGFnLgoKRnJpIEZlYiAxOCAyMDowODo1NyAyMDAwICBSaWNoYXJkIEtlbm5lciAgPGtlbm5lckB2bHNpMS51bHRyYS5ueXUuZWR1PgoKCSogYml0bWFwLmMgKGJpdG1hcF9vcGVyYXRpb24pOiBBdm9pZCB1c2luZyAtMSBmb3IgaW5kZXggc2luY2UgdW5zaWduZWQuCgkqIGNwcGluaXQuYyAobmV3X3BlbmRpbmdfZGVmaW5lKTogQWRkIGNhc3QgdG8gYXZvaWQgd2FybmluZy4KCSogZXhwbWVkLmMgKGV4dHJhY3RfYml0X2ZpZWxkKTogTGlrZXdpc2UuCgkqIGZsb3cuYyAoZW51bSByZW9yZGVyX3NraXBfdHlwZSk6IE5ldyB0eXBlLgoJKHNraXBfaW5zbnNfYmV0d2Vlbl9ibGNvayk6IE5ldyBpdC4KCVJld29yayB0byBhdm9pZCB3YXJuaW5nIGFib3V0IHBvc3NpYmx5IHVuZGVmaW5lZCB2YXJpYWJsZS4KCSogZnVuY3Rpb24uYyAoYXNzaWduX3Bhcm1zKTogTWFrZSB0aGlzcGFybV9ib3VuZGFyeSB1bnNpZ25lZC4KCSogZ2VucmVjb2cuYyAod3JpdGVfc3dpdGNoKTogQ2FzdCBYV0lOVCByZXN1bHQgdG8gaW50LgoJKiBsY20uYzogTWFueSBzdGF0aWMgZmNucyBhbmQgdmFycyBub3cgI2lmZGVmIE9QVElNSVpFX01PREVfU1dJVENISU5HLgoJKiBtaXBzLXRmaWxlLmMgKGluaXRfZmlsZSk6IE1ha2UgdHdvIHZlcnNpb25zIG9mIEZEUiBpbml0aWFsaXplcjoKCW9uZSBmb3IgTUlQUyBhbmQgb25lIGZvciBBbHBoYS4KCShnZXRfdGFnLCBjb3B5X29iamVjdCk6IEFkZCBjYXN0cyB0byBhdm9pZCB3YXJuaW5ncy4KCSogb3B0YWJzLmMgKGluaXRfb25lX2xpYmZ1bmMpOiBDYXN0IE5BTUUgdG8gKGNoYXIgKikuCgkqIHJlbG9hZC5jIChmaW5kX3JlbG9hZHMpOiBNYWtlIFRZUEUgZW51bSByZWxvYWRfdHlwZS4KCSogc2JpdG1hcC5jIChkdW1wX3NiaXRtYXApOiBKIGlzIHVuc2lnbmVkOyBkb24ndCB1c2UgIjFMIi4KCSogdW5yb2xsLmMgKHVucm9sbF9sb29wKTogSW5pdGlhbGl6ZSBVTlJPTExfTlVNQkVSLgoJKiB2YXJhc20uYyAoY29tcGFyZV9jb25zdGFudF8xKTogQWRkIGNhc3QgdG8gYXZvaWQgd2FybmluZy4KCSogY29uZmlnL2FscGhhL2FscGhhLmMgKGFscGhhX2VtaXRfeGZsb2F0aW5nX2xpYmNhbGwpOiBDYXN0IEZVTkMKCXRvIChjaGFyICopLgoJKGFscGhhX2V4cGFuZF91bmFsaWduZWRfbG9hZCwgYWxwaGFfZXhwYW5kX3VuYWxpZ25lZF9zdG9yZSk6CglDYXN0IHN3aXRjaCBvcGVyYW5kIG9mIHNpemUgdG8gaW50LgoJKGFscGhhX2V4cGFuZF9lcGlsb2d1ZSk6IEFsd2F5cyBpbml0aWFsaXplIGZwX29mZnNldCBhbmQgc2FfcmVnLgoJKiBjb25maWcvYWxwaGEvYWxwaGEuaCAoSU5JVElBTF9FTElNSU5BVElPTl9PRkZTRVQpOiBBZGQgYWJvcnQKCWluIHVuaGFuZGxlZCBjYXNlLgoKMjAwMC0wMi0xOCAgTmljayBDbGlmdG9uICA8bmlja2NAY3lnbnVzLmNvbT4KCgkqIGNvbmZpZy9hcm0vZWxmLmggKEFTTV9PVVRQVVRfQUxJR04pOiBEbyBub3QgZ2VuZXJhdGUKCWFueXRoaW5nIGZvciBhbiBhbGlnbm1lbnQgb2YgemVyby4KCgkqIGNvbmZpZy9hcm0vdGh1bWIuaCAoQVNNX09VVFBVVF9BTElHTik6IERvIG5vdCBnZW5lcmF0ZQoJYW55dGhpbmcgZm9yIGFuIGFsaWdubWVudCBvZiB6ZXJvLgoKMjAwMC0wMi0xOCAgTWFydGluIHZvbiBMb2V3aXMgIDxsb2V3aXNAaW5mb3JtYXRpay5odS1iZXJsaW4uZGU+CgoJKiBnY2MudGV4aSAoQnVnIFJlcG9ydGluZyk6IFJlZmVyIHRvIGJ1Z3MuaHRtbC4KCShCdWcgTGlzdHMpOiBMaWtld2lzZS4KCSogc3lzdGVtLmggKEdDQ0JVR1VSTCk6IE5ldyBwcmVwcm9jZXNzb3IgZGVmaW5lLgoJKiBydGwuYyAoZmFuY3lfYWJvcnQpOiBVc2UgaXQuCgkqIGdjYy5jIChtYWluKTogTGlrZXdpc2UuCgoyMDAwLTAyLTE4ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEBjeWdudXMuY29tPgoKCSogZmxvdy5jIChJTlNOX1ZPTEFUSUxFLCBTRVRfSU5TTl9WT0xBVElMRSwgdWlkX3ZvbGF0aWxlKTogUmVtb3ZlLgoJKGxpZmVfYW5hbHlzaXNfMSk6IFN1YnN1bWUgaW50byAuLi4KCShsaWZlX2FuYWx5c2lzKTogLi4uIGhlcmUuICBGb3JjZSBQUk9QX1JFR19JTkZPIG9mZiBhZnRlciByZWxvYWQuCglVc2UgdXBkYXRlX2xpZmVfaW5mbyBmb3IgdGhlIHJlbGF4YXRpb24uCgkodXBkYXRlX2xpZmVfaW5mbyk6IFVwZGF0ZSBSRUdfQkFTSUNfQkxPQ0sgZm9yIHJlZ2lzdGVycyBsaXZlIG9uCgllbnRyeSBhbmQgcmVnc19saXZlX2F0X3NldGptcC4KCShzZXRfbm9vcF9wKTogU2ltcGxpZnkuCgkobm90aWNlX3N0YWNrX3BvaW50ZXJfbW9kaWZpY2F0aW9uXzEpOiBSZW5hbWVkIGZyb20gcy9fMS8vLgoJKHJlY29yZF92b2xhdGlsZV9pbnNucyk6IFNwbGl0IGludG8gLi4uCgkoZGVsZXRlX25vb3BfbW92ZXMpOiAuLi4gaGVyZSwKCShub3RpY2Vfc3RhY2tfcG9pbnRlcl9tb2RpZmljYXRpb24pOiAuLi4gaGVyZSwKCShpbnNuX2RlYWRfcCk6IC4uLiBhbmQgaGVyZS4KCShwcm9wYWdhdGVfYmxvY2spOiBEb24ndCBxdWVyeSBJTlNOX1ZPTEFUSUxFLgoJKG1hcmtfdXNlZF9yZWdzKTogTWluZCAhUFJPUF9SRUdfSU5GTy4KCSogdG9wbGV2LmMgKHJlc3Rfb2ZfY29tcGlsYXRpb24pOiBDYWxsIG1hcmtfY29uc3RhbnRfZnVuY3Rpb24gaGVyZSwKCW5vdCBpbiBsaWZlX2FuYWx5c2lzLgoKRnJpIEZlYiAxOCAwMToyOToyMiBFU1QgMjAwMCAgSm9obiBXZWhsZSAgKGpvaG5AZmVpdGguY29tKQoKCSogbG9vcC5jIChjYW5vbmljYWxpemVfY29uZGl0aW9uKTogTmV3IGZ1bmN0aW9uLAoJYnJva2VuIG91dCBvZiBnZXRfY29uZGl0aW9uLgoJKGdldF9jb25kaXRpb24pOiBVc2UgaXQuCgkqIGV4cHIuaCAoY2Fub25pY2FsaXplX2NvbmRpdGlvbik6IFByb3RvdHlwZSBpdC4KCgkqIHRyZWUuaCAodHJlZV9pbnRfY3N0X21zYik6IERlY2xhcmUuCgkqIHRyZWUuYyAodHJlZV9pbnRfY3N0X21zYik6IE5ldyBmdW5jdGlvbi4KCjIwMDAtMDItMTcgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBzdG10LmMgKHNldF9maWxlX2FuZF9saW5lX2Zvcl9zdG10KTogRG9uJ3QgY3Jhc2ggaWYgY2Z1bi0+c3RtdAoJaXNuJ3Qgc2V0LgoKCSogaW52b2tlLnRleGkgKC1mbWVzc2FnZS1sZW5ndGg9bik6IERvY3VtZW50LgoKMjAwMC0wMi0xNyAgSmFzb24gTWVycmlsbCAgPGphc29uQGNhc2V5LmN5Z251cy5jb20+CgoJKiBiaXRtYXAuYyAoYml0bWFwX29wZXJhdGlvbik6IERvbid0IGxlYWsgYml0bWFwIGVsZW1lbnRzLgoKMjAwMC0wMi0xNyAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGZ1bmN0aW9uLmMgKHRocmVhZF9wcm9sb2d1ZV9hbmRfZXBpbG9ndWVfaW5zbnMpOiBQdXQgYSBsaW5lIG5vdGUKCWFmdGVyIHRoZSBwcm9sb2d1ZS4KCjIwMDAtMDItMTcgIE5pY2sgQ2xpZnRvbiAgPG5pY2tjQGN5Z251cy5jb20+CgoJKiBjb25maWcvYXJtL3RodW1iLmM6IFJlcGxhY2UgaW5jbHVkZXMgb2Ygc3lzdGVtIGhlYWRlcnMgd2l0aAoJI2luY2x1ZGUgInN5c3RlbS5oIi4KCjIwMDAtMDItMTYgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgoJKiBjb25maWd1cmUuaW4gKGFscGhhLWxpbnV4KiwgYWxwaGEtbmV0YnNkKSBbZXh0cmFfcGFydHNdOgoJQWRkIGNydGJlZ2luUy5vIGFuZCBjcnRlbmRTLm8uCgkqIGFscGhhL2VsZi5oIChTVEFSVEZJTEVfU1BFQyk6IFVzZSBjcnRiZWdpblMuby4KCShFTkRGSUxFX1NQRUMpOiBVc2UgY3J0ZW5kUy5vLgoJKiBhbHBoYS90LWNydGJlIChjcnRiZWdpblMubywgY3J0ZW5kUy5vKTogTmV3IHRhcmdldHMuCgoJKiBhbHBoYS9jcnRiZWdpbi5hc20gKF9fZG9fZnJhbWVfdGFrZWRvd24pOiBNZXJnZSBpbnRvIC4uLgoJKF9fZG9fZ2xvYmFsX2R0b3JzX2F1eCk6IC4uLiBoZXJlLiAgQ2FsbCBfX2N4YV9maW5hbGl6ZSBpZgoJc2hhcmVkIGFuZCBwcmVzZW50LgoJKF9fZHNvX2hhbmRsZSk6IE5ldyB2YXJpYWJsZS4KCSogYWxwaGEvY3J0ZW5kLmFzbSAoX19kb19nbG9iYWxfY3RvcnNfYXV4KTogUmVtb3ZlIHJ1bnRpbWUKCWJpYXMgdG8gX19DVE9SX0VORF9fLgoKMjAwMC0wMi0xNiAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAY3lnbnVzLmNvbT4KCgkqIE1ha2VmaWxlLmluIChzLWNydFMsIGNydGJlZ2luUywgY3J0ZW5kUyk6IFByZWZpeCB1c2FnZSB3aXRoICQoVCkuCgpXZWQgRmViIDE2IDIxOjQwOjA0IDIwMDAgIEhhbnMtUGV0ZXIgTmlsc3NvbiAgPGhwQGJpdHJhbmdlLmNvbT4KCgkqIGxvbmdsb25nLmggKF9fY2x6X3RhYik6IERlY2xhcmUgYXMgc3RhdGljIHRvIG1hdGNoIGRlZmluaXRpb24uCgoyMDAwLTAyLTE2IE1hcmsgRWxicmVjaHQgPHNub3diYWxsM0BiaWdmb290LmNvbT4KCgkqIGkzODYveG0tZGpncHAuaCAoTElCU1REQ1hYKTogRGVsZXRlLiBNb3ZlZCB0byBjb25maWcvaTM4Ni9kamdwcC5oLgoJKFhSRUZfRklMRV9OQU1FKTogRGVmaW5lLgoKCSogaTM4Ni9kamdwcC5oIChEQVRBX1NFQ1RJT05fQVNNX09QKTogRGVmaW5lLgoJKEVIX0ZSQU1FX1NFQ1RJT05fQVNNX09QKTogRGVmaW5lLgoJKElERU5UX0FTTV9PUCk6IERlZmluZS4KCShURVhUX1NFQ1RJT05fQVNNX09QKTogRGVmaW5lLgoJKENQUF9TUEVDKTogRGVmaW5lLgoJKENUT1JTX1NFQ1RJT05fQVNNX09QKTogRGVmaW5lLgoJKENUT1JfU0VDVElPTl9GVU5DVElPTik6IFVzZSBpdC4KCShEVE9SU19TRUNUSU9OX0FTTV9PUCk6IERlZmluZS4KCShEVE9SX1NFQ1RJT05fRlVOQ1RJT04pOiBVc2UgaXQuCgoyMDAwLTAyLTE2ICBaYWNrIFdlaW5iZXJnICA8emFja0B3b2xlcnkuY3VtYi5vcmc+CgoJKiByZWctc3RhY2suYyAoZW1pdF9zd2FwX2luc24pOiBEbyBub3QgcHV0IGEgbmV3IGluc24gYmVmb3JlIGEKCU5PVEVfQkFTSUNfQkxPQ0suCgoJKiBmbG93LmMgKGR1bXBfcmVnc2V0LCBkZWJ1Z19yZWdzZXQsIGR1bXBfYmIsIGRlYnVnX2JiLAoJZGVidWdfYmJfbik6IE5ldyBmdW5jdGlvbnMuCgkoZHVtcF9mbG93X2luZm8sIHByaW50X3J0bF93aXRoX2JiKTogVXNlIGR1bXBfcmVnc2V0LgoJKiBiYXNpYy1ibG9jay5oOiBQcm90b3R5cGUgbmV3IGZ1bmN0aW9ucy4KCldlZCBGZWIgMTYgMjE6MDc6NTMgMjAwMCAgRGVuaXMgQ2hlcnR5a292ICA8ZGVuaXNjQG92ZXJ0YS5ydT4KCgkqIGNvbmZpZ3VyZS5pbjogQWRkIHN1cHBvcnQgZm9yIGF2ciB0YXJnZXQuCgkqIGNvbmZpZ3VyZTogUmVidWlsdC4KCgkqIGludm9rZS50ZXhpOiBBZGQgQVZSIGludm9jYXRpb24gZG9jcy4KCSogaW5zdGFsbC50ZXhpOiBBZGQgaW5mb3JtYXRpb24gYWJvdXQgQVZSLgoJKiBtZC50ZXhpOiBBZGQgQVZSIGNvbnN0cmFpbnQgbGV0dGVycyBkZXNjcmlwdGlvbi4KCSogZXh0ZW5kLnRleGk6IEFkZCBkZXNjcmlwdGlvbiBmb3IgQVZSIHNwZWNpZmljIGF0dHJpYnV0ZXMuCgoyMDAwLTAyLTE2ICBKYXNvbiBNZXJyaWxsICA8amFzb25AY2FzZXkuY3lnbnVzLmNvbT4KCgkqIGZpeGluYy9maXhpbmMuc3ZyNDogV3JhcCBieXRlb3JkZXIuaCB3aXRoIGV4dGVybiAiQyIuCgoyMDAwLTAyLTE2ICBOaWNrIENsaWZ0b24gIDxuaWNrY0BjeWdudXMuY29tPgoKCSogZW1pdC1ydGwuYyAoZW1pdF9pbnNuKTogTW92ZSBSVEwgY2hlY2sgaW50byBtYWtlX2luc25fcmF3LgoJKG1ha2VfaW5zbl9yYXcpOiBNb3ZlIFJUTCBjaGVjayBoZXJlLgoKMjAwMC0wMi0xNiAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogdmVyc2lvbi5jOiBJbmNsdWRlIGdhbnNpZGVjbC5oIGFuZCB2ZXJzaW9uLmguCgoJKiB2ZXJzaW9uLmg6IFdyYXAgZW50aXJlIGZpbGUgaW4gbWFjcm8gX19HQ0NfVkVSU0lPTl9IX18uCgoJKiBjb25maWd1cmUuaW4gKGdjY192ZXJzaW9uKTogV2hlbiBzZXR0aW5nLCBuYXJyb3cgc2VhcmNoIHRvCglsaW5lcyBjb250YWluaW5nIGB2ZXJzaW9uX3N0cmluZycuCgoJKiBNYWtlZmlsZS5pbiAobWFpbnZlcnNpb24pOiBMaWtld2lzZS4KCShHQ0NfSCk6IE5ldyB2YXJpYWJsZS4KCShnY2MuaCk6IERlbGV0ZSB0YXJnZXQuCgkoZ2NjLm8sIGdjY3NwZWMubywgY3Bwc3BlYy5vKTogRGVwZW5kIG9uICQoR0NDX0gpLCBub3QgZ2NjLmguCgkodmVyc2lvbi5vKTogRGVwZW5kIG9uIHZlcnNpb24uaC4KCShkYnhvdXQubyk6IERvbid0IGRlcGVuZCBvbiBnY2MuaC4KCldlZCBGZWIgMTYgMTU6MDQ6NDkgMjAwMCAgSGFucy1QZXRlciBOaWxzc29uICA8aHBAYml0cmFuZ2UuY29tPgoJCQkgIE1pY2hhZWwgTWVpc3NuZXIgIDxtZWlzc25lckBjeWdudXMuY29tPgoKCSogbWQudGV4aSAoU2ltcGxlIENvbnN0cmFpbnRzKTogQWRkIGl0ZW0gYWJvdXQgd2hpdGVzcGFjZS4KCSogZ2Vub3V0cHV0LmMgKHN0cmlwX3doaXRlc3BhY2UpOiBOZXcuCgkoc2Nhbl9vcGVyYW5kcykgW01BVENIX09QRVJBTkQsIE1BVENIX1NDUkFUQ0hdOiBDYWxsCglzdHJpcF93aGl0ZXNwYWNlIGZvciBjb25zdHJhaW50cy4KCVRlc3QgcG9pbnRlciB1c2luZyBOVUxMLCBub3QgMC4KCjIwMDAtMDItMTYgIEFsZXhhbmRyZSBPbGl2YSAgPG9saXZhQGxzZC5pYy51bmljYW1wLmJyPgoKCSogY3BwbGliLmMgKGRvX2xpbmUpOiBQZWR3YXJuIGZvciAjbGluZSA+IDMyNzY3LgoKCSogYy1sZXguYyAocmVhZGVzY2FwZSk6IFdhcm4gYWJvdXQgJ1x4JywgYnV0IGRvIG5vdCByZWplY3QgaXQuCgoyMDAwLTAyLTE1ICBKb25hdGhhbiBMYXJtb3VyICA8amxhcm1vdXJAcmVkaGF0LmNvLnVrPgoKCSogZ2NjLmMgKGRlZmF1bHRfY29tcGlsZXJzKTogQWRkIG5ldyBfX0dOVUNfUEFUQ0hMRVZFTF9fIGRlZmluZQoJdG8gZGVmYXVsdCBjcHAgc3BlYy4KCShkb19zcGVjXzEpOiBBZGQgc3VwcG9ydCBmb3IgJXYzIHNwZWMgdXNlZCBieSBfX0dOVUNfUEFUQ0hMRVZFTF9fLgoJKiBjcHAudGV4aTogRG9jdW1lbnQgX19HTlVDX1BBVENITEVWRUxfXy4KCSogY3BwLjE6IExpa2V3aXNlLgoKCSogb2JqYy9sYW5nLXNwZWNzLmg6IEFkZCBuZXcgX19HTlVDX1BBVENITEVWRUxfXyBkZWZpbmUgdG8KCWRlZmF1bHQgc3BlYy4KCjIwMDAtMDItMTUgIERlbmlzIENoZXJ0eWtvdiAgPGRlbmlzY0BvdmVydGEucnU+CgoJKiBjb25maWd1cmUuaW46IEFkZCBzdXBwb3J0IGZvciBhdnIgdGFyZ2V0LgoKV2VkIEZlYiAxNiAwMzoyMTo0MyAyMDAwICBKIm9ybiBSZW5uZWNrZSA8YW15bGFhckBjeWdudXMuY28udWs+CgoJKiBzaC5oIChPVkVSUklERV9PUFRJT05TKTogRG9uJ3Qgc2V0IHNoX2FkZHJfZGlmZl92ZWNfbW9kZS4KCShzaF9hZGRyX2RpZmZfdmVjX21vZGUpOiBEb24ndCBkZWNsYXJlLgoJKiBzaC5jIChzaF9hZGRyX2RpZmZfdmVjX21vZGUpOiBEZWxldGUuCgpXZWQgRmViIDE2IDAxOjI3OjUyIDIwMDAgIEoib3JuIFJlbm5lY2tlIDxhbXlsYWFyQGN5Z251cy5jby51az4KCgkqIHNoLm1kIChtdWxzaTNfaGlnaHBhcnQpOiBBZGQgUkVHX0VRVUFMIG5vdGUgdG8gbGFzdCBpbnNuLgoKV2VkIEZlYiAxNiAwMDo1ODowNiAyMDAwICBKIm9ybiBSZW5uZWNrZSA8YW15bGFhckBjeWdudXMuY28udWs+CgoJKiBzaC5tZCAodWRpdnNpM19pMSwgZGl2c2kzX2kxLCB1bXVsaGlzaTNfaSwgbXVsaGlzaTNfaSk6IE5hbWUuCgkoc211bHNpM19oaWdocGFydF9pKTogTmFtZS4KCSh1ZGl2c2kzKTogV3JhcCBlbWl0dGVkIGluc25zIGluIFJFR19MSUJDQUxMIC8gUkVHX1JFVFZBTCBub3Rlcy4KCShkaXZzaTMsIG11bGhpc2kzLCB1bXVsaGlzaTMsIG11bHNpZGkzLCB1bXVsc2lkaTMpOiBMaWtld2lzZS4KCShzbXVsc2kzX2hpZ2hwYXJ0LCB1bXVsc2kzX2hpZ2hwYXJ0KTogTGlrZXdpc2UuCgoJKG11bHNpZGkzX2ksIHVtdWxzaWRpM19pKTogTWFrZSBydGwgZGVzY3JpYmUgb3BlcmF0aW9uCgljb3JyZWN0bHkgaW5kZXBlbmRlbnQgb2YgZW5kaWFubmVzcy4KCShtdWxzaWRpMywgdW11bHNpZGkzKTogTm93IGRlZmluZV9pbnNuLiAgSGlkZSBkZXRhaWxzIHRoYXQKCWNvbmZ1c2UgdGhlIG9wdGltaXplcnMuCgkobXVsc2lkaTMrMSwgdW11bHNpZGkzKzEpOiBOZXcgZGVmaW5lX3NwbGl0LgoKVHVlIEZlYiAxNSAyMzoyMjoyNiAyMDAwICBBbmRyZXcgSGFsZXkgIDxhcGhAY3lnbnVzLmNvbT4KCgkqIGNvbmZpZy9zaC9zaC5tZDogR3VhcmQgaW5zbiBzcGxpdHMgYWdhaW5zdCBpbGxlZ2FsIHJlZ2lzdGVycy4KCSogY29uZmlnL3NoL3NoLmg6IENvcnJlY3QgY29tbWVudCBhYm91dCBtYWNyb3MuCgpUdWUgRmViIDE1IDIyOjMwOjM2IDIwMDAgIEoib3JuIFJlbm5lY2tlIDxhbXlsYWFyQGN5Z251cy5jby51az4KCQkJICBBbmRyZXcgTWFjTGVvZCAgPGFtYWNsZW9kQGN5Z251cy5jb20+CgoJKiBNYWtlZmlsZS5pbiAobGNtLm8pOiBEZXBlbmQgb24gaW5zbi1hdHRyLmguCgkqIGJhc2ljLWJsb2NrLmggKG9wdGltaXplX21vZGVfc3dpdGNoaW5nKTogRGVjbGFyZS4KCSogbGNtLmMgKHRtX3AuaCwgaW5zbi1hdHRyLmgpOiAjaW5jbHVkZS4KCShzZWdpbmZvLCBiYl9pbmZvKTogTmV3IHN0cnVjdHMuCgkoYW50aWMsIHRyYW5zcCwgY29tcCwgZGVsZXRlLCBpbnNlcnQpIDogTmV3IGZpbGUtc2NvcGUgc3RhdGljIHZhcmlhYmxlcy4KCShuZXdfc2VnaW5mbywgYWRkX3NlZ2luZm8sIG1ha2VfcHJlZHNfb3BhcXVlLCByZWdfZGllcyk6IE5ldyBmdW5jdGlvbnMuCgkocmVnX2JlY29tZXNfbGl2ZSwgb3B0aW1pemVfbW9kZV9zd2l0Y2hpbmcpOiBMaWtld2lzZS4KCSogdG0udGV4aTogQWRkIGRlc2NyaXB0aW9uIG9mIG1vZGUgc3dpdGNoaW5nIG1hY3Jvcy4KCSogdG9wbGV2LmMgKHJlc3Rfb2ZfY29tcGlsYXRpb24pOiBDYWxsIG9wdGltaXplX21vZGVfc3dpdGNoaW5nLgoKCSogc2gtcHJvdG9zLmggKHJlbW92ZV9kZWFkX2JlZm9yZV9jc2UpOiBSZW1vdmUgcHJvdG90eXBlLgoJKGZsZGlfb2ssIGZwc2NyX3NldF9mcm9tX21lbSk6IE5ldyBwcm90b3R5cGVzLgoJKiBzaC5oIChPUFRJTUlaQVRJT05fT1BUSU9OKTogUmVtb3ZlIHNoX2ZsYWdfcmVtb3ZlX2RlYWRfYmVmb3JlX2NzZSBzZXQuCgkoQ09OU1RfRE9VQkxFX09LX0ZPUl9MRVRURVJfUCwgU0VDT05EQVJZX0lOUFVUX1JFTE9BRF9DTEFTUyk6CglEaXNhYmxlIGZsZGkgZm9yIChUQVJHRVRfU0g0ICYmICEgVEFSR0VUX0ZNT1ZEKS4KCShzaF9mbGFnX3JlbW92ZV9kZWFkX2JlZm9yZV9jc2UpOiBSZW1vdmUgZGVjbGFyYXRpb24uCgkoTlVNX01PREVTX0ZPUl9NT0RFX1NXSVRDSElORywgT1BUSU1JWkVfTU9ERV9TV0lUQ0hJTkcpOiBOZXcgbWFjcm9zLgoJKE1PREVfVVNFU19JTl9FWElUX0JMT0NLLCBNT0RFX05FRURFRCwgTU9ERV9BVF9FTlRSWSk6IExpa2V3aXNlLgoJKE1PREVfUFJJT1JJVFlfVE9fTU9ERSwgRU1JVF9NT0RFX1NFVCk6IExpa2V3aXNlLgoJKiBzaC5jIChicm9rZW5fbW92ZSk6IERpc2FibGUgZmxkaSBmb3IgKFRBUkdFVF9TSDQgJiYgISBUQVJHRVRfRk1PVkQpLgoJKGJhcnJpZXJfYWxpZ24pOiBBbGxvdyBmb3IgSlVNUF9JTlNOUyBjb250YWluaW5nIGEgcGFyYWxsZWwuCgkobWFjaGluZV9kZXBlbmRlbnRfcmVvcmcpOiBSZW1vdmUgc2hfZmxhZ19yZW1vdmVfZGVhZF9iZWZvcmVfY3NlIHNldC4KCShmbGRpX29rKTogTmV3IGZ1bmN0aW9uLgoJKGdldF9mcHNjcl9ydHgpOiBBZGQgZnBzY3JfcnR4IGFzIEdDIHJvb3QuCgkoZW1pdF9zZl9pbnNuKTogT25seSBnZW5lcmF0ZSBmcHUgc3dpdGNoZXMgd2hlbiBvcHRpbWl6ZSA8IDEuCgkoZW1pdF9kZl9pbnNuKTogTGlrZXdpc2UuCgkoZXhwYW5kX2ZwX2JyYW5jaCwgZW1pdF9mcHNjcl91c2UsIHJlbW92ZV9kZWFkX2JlZm9yZV9jc2UpOiBEZWxldGUuCgkoc2hfZmxhZ19yZW1vdmVfZGVhZF9iZWZvcmVfY3NlKTogRGVsZXRlLgoJKGdldF9mcmVlX3JlZywgZnBzY3Jfc2V0X2Zyb21fbWVtKTogTmV3IGZ1bmN0aW9ucy4KCSogc2gubWQgKG1vdmRmLCBtb3ZzZik6IFJlbW92ZSBub19uZXdfcHNldWRvcyBjb2RlLgoJKHJldHVybik6IFJlbW92ZSBlbWl0X2Zwc2NyX3VzZSAvIHJlbW92ZV9kZWFkX2JlZm9yZV9jc2UgY2FsbHMuCgoyMDAwLTAyLTE1ICBMb3JlbiBSaXR0bGUgIDxsanJpdHRsZUBhY20ub3JnPgoKCSogZ2luY2x1ZGUvc3RkZGVmLmg6IENvcnJlY3QgdXNhZ2Ugb2YgX0JTRF9SVU5FX1RfIGZvciBGcmVlQlNELgoKMjAwMC0wMi0xNSAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogTWFrZWZpbGUuaW4gKFRSRUVfSCwgY29sbGVjdDIubywgZ2NjLmgsIG1pcHMtdGZpbGUubywgY2NjcC5vLAoJY3BwaGFzaC5vLCBjcHBpbml0Lm8sIHByb3RvaXplLm8sIHVucHJvdG9pemUubyk6IERlcGVuZCBvbiB2ZXJzaW9uLmguCgoJKiBjY2NwLmM6IEluY2x1ZGUgdmVyc2lvbi5oIGFuZC9vciBkb24ndCBkZWNsYXJlIGB2ZXJzaW9uX3N0cmluZycuCgkqIGNvbGxlY3QyLmM6IExpa2V3aXNlLgoJKiBhbHBoYS5jOiBMaWtld2lzZS4KCSogYXJtL2FvZi5oOiBMaWtld2lzZS4KCSogYXJtL2NvZmYuaDogTGlrZXdpc2UuCgkqIGFybS9lbGYuaDogTGlrZXdpc2UuCgkqIGFybS9wZS5oOiBMaWtld2lzZS4KCSogYXJtL3Rjb2ZmLmg6IExpa2V3aXNlLgoJKiBhcm0vdGVsZi5oOiBMaWtld2lzZS4KCSogYXJtL3RwZS5oOiBMaWtld2lzZS4KCSogYXJtL3Z4YXJtLmg6IExpa2V3aXNlLgoJKiBjb252ZXgvY29udmV4LmM6IExpa2V3aXNlLgoJKiBpMzg2L2RndXguYzogTGlrZXdpc2UuCgkqIGkzODYvc3VuMzg2Lmg6IExpa2V3aXNlLgoJKiBtODhrL204OGsuYzogTGlrZXdpc2UuCgkqIG1jb3JlL21jb3JlLXBlLmg6IExpa2V3aXNlLgoJKiBtaXBzL21pcHMuaDogTGlrZXdpc2UuCgkqIHJvbXAvcm9tcC5oOiBMaWtld2lzZS4KCSogc2gvc2guYzogTGlrZXdpc2UuCgkqIGNwcGhhc2guYzogTGlrZXdpc2UuCgkqIGNwcGluaXQuYzogTGlrZXdpc2UuCgkqIGR3YXJmMm91dC5jOiBMaWtld2lzZS4KCSogZHdhcmZvdXQuYzogTGlrZXdpc2UuCgkqIGdjYy5jOiBMaWtld2lzZS4KCSogZ2NjLmg6IExpa2V3aXNlLgoJKiBtaXBzLXRmaWxlLmM6IExpa2V3aXNlLgoJKiBwcm90b2l6ZS5jOiBMaWtld2lzZS4KCSogdG9wbGV2LmM6IExpa2V3aXNlLgoJKiB0cmVlLmg6IExpa2V3aXNlLgoKCSogdmVyc2lvbi5jICh2ZXJzaW9uX3N0cmluZyk6IENvbnN0aWZ5IGEgY2hhciouCgoJKiB2ZXJzaW9uLmg6IE5ldyBmaWxlLgoKMjAwMC0wMi0xNCAgTmljayBDbGlmdG9uICA8bmlja2NAY3lnbnVzLmNvbT4KCgkqIGNvbmZpZ3VyZS5pbjogQWRkIG1jb3JlLWVsZiBhbmQgbWNvcmUtcGUgdGFyZ2V0cy4KCSogY29uZmlndXJlOiBSZWdlbmVyYXRlLgoKCSogTkVXUzogQWRkIG5vdGUgdGhhdCBNQ29yZSBwb3J0IGhhcyBiZWVuIGNvbnRyaWJ1dGVkLgoKCSogaW52b2tlLnRleGk6IERvY3VtZW50IGNvbW1hbmQgbGluZSBzd2l0Y2hlcyBmb3IgTUNvcmUgcG9ydC4KCSogaW5zdGFsbC50ZXhpOiBBZGQgTUNvcmUgdG8gbGlzdCBvZiBzdXBwb3J0ZWQgdGFyZ2V0cy4KCjIwMDAtMDItMTQgIEdlb2ZmIEtlYXRpbmcgIDxnZW9mZmtAY3lnbnVzLmNvbT4KCgkqIGNvbGxlY3QyLmMgKG1haW4pIFtDT0xMRUNUX0VYUE9SVF9MSVNUXTogSWYgd2UgaGF2ZSBmcmFtZXMsCgl0aGVuIHdlIHdpbGwgbmVlZCB0byBpbXBvcnQgdGhlIGZyYW1lIGhhbmRsaW5nIGZ1bmN0aW9ucy4KCShzY2FuX3Byb2dfZmlsZSkgW0NPTExFQ1RfRVhQT1JUX0xJU1RdOiBXZSB3aWxsIGFsc28gbmVlZAoJdG8gaW1wb3J0IHRoZSBmcmFtZXMgdGhlbXNlbHZlcy4KCk1vbiBGZWIgMTQgMTM6MzE6MDEgMjAwMCAgU3RhbiBDb3ggIDxzY294QGN5Z251cy5jb20+CgkJCSAgSmFzb24gRWNraGFyZHQgIDxqbGVAY3lnbnVzLmNvbT4KCgkqIGJhc2ljX2Jsb2NrLmg6IEFkZGVkIHByb3RvdHlwZSBmb3IgcmVvcmRlcl9iYXNpY19ibG9ja3MuCgkqIHRvcGxldi5jOiBDaGFuZ2VzIHRvIGFkZCAtZnJlb3JkZXItYmxvY2tzIGFuZCBncmFwaCBkdW1wIGFmdGVyCglibG9jayByZW9yZGVyaW5nIGlzIGRvbmUuCgkqIGZsb3cuYyAocmVvcmRlcl9ibG9ja19kZWYpOiBOZXcgc3RydWN0dXJlIGZvciB1c2UgZHVyaW5nIGJsb2NrCglyZW9yZGVyaW5nLgoJKFJFT1JERVJfQkxPQ0tfKik6IE5ldyBtYWNyb3MgdG8gYWNjZXNzIG1lbWJlcnMgb2YgYWJvdmUgc3RydWN0dXJlLgoJKHNraXBfaW5zbnNfYmV0d2Vlbl9ibG9jaywgZ2V0X2NvbW1vbl9kZXN0LCBjaGFpbl9yZW9yZGVyX2Jsb2NrcywKCW1ha2VfcmVvcmRlcl9jaGFpbiwgZml4dXBfcmVvcmRlcl9jaGFpbiwgcmVvcmRlcl9iYXNpY19ibG9ja3MpOiBOZXcKCWZ1bmN0aW9ucyBmb3IgYmxvY2sgcmVvcmRlcmluZy4KCk1vbiBGZWIgMTQgMTE6MjQ6NDQgMjAwMCAgSGFucy1QZXRlciBOaWxzc29uICA8aHBAYml0cmFuZ2UuY29tPgoKCSogZ2NjLnRleGkgKFBhc3Nlcyk6IEZpeCB0eXBvLgoJKiBtZC50ZXhpIChTdGFuZGFyZCBOYW1lcyk6IERpdHRvLgoJKiB0bS50ZXhpIChTdG9yYWdlIExheW91dCk6IERpdHRvLgoKMjAwMC0wMi0xMyAgWmFjayBXZWluYmVyZyAgPHphY2tAd29sZXJ5LmN1bWIub3JnPgoKCSogY3BwbGliLmMgKGRvX2RlZmluZSk6IE9ubHkgZnJlZSB0aGUgb2xkIGRlZmluaXRpb24gaWYgaXQKCWFjdHVhbGx5IGhhZCBvbmUuCgoyMDAwLTAyLTEzICAgTmVpbCBCb290aCAgPE5laWxCQGVhcnRobGluZy5uZXQ+CgoJKiBjcHBmaWxlcy5jIChyZWFkX2FuZF9wcmVzY2FuKTogV2hlbiBlbWl0dGluZyBkZWZlcnJlZAoJbmV3bGluZXMsIHRlc3Qgc3BlY2Nhc2VbXSBhZ2FpbiBpbnN0ZWFkCW9mIGNoZWNraW5nIGVhY2gKCXBvc3NpYmxlIHdoaXRlc3BhY2UgY2hhcmFjdGVyIGluIHR1cm4uICBXaGVuIHdlIGVuY291bnRlciBcciwKCWxvb2sgYmVoaW5kIGZvciBcbiBmaXJzdCwgdGhlbiBhaGVhZC4KCjIwMDAtMDItMTMgIFphY2sgV2VpbmJlcmcgIDx6YWNrQHdvbGVyeS5jdW1iLm9yZz4KCgkqIGNzZS5jIChjc2VfYWx0ZXJlZCk6IE5ldyBpbnRlcm5hbCBmbGFnLgoJKGNzZV9pbnNuKTogU2V0IGl0IGlmIHdlIGNoYW5nZWQgYW4gaW5zbi4KCShjc2VfbWFpbik6IENsZWFyIGNzZV9hbHRlcmVkIGJlZm9yZSBlYWNoIGJhc2ljIGJsb2NrLgoJT25seSBnYXJiYWdlIGNvbGxlY3QgaWYgY3NlX2FsdGVyZWQgaXMgdHJ1ZSBhZnRlcndhcmQuCgpTdW4gRmViIDEzIDE0OjEyOjI4IDIwMDAgIFJhaW5lciBPcnRoICA8cm9AVGVjaEZhay5VbmktQmllbGVmZWxkLkRFPgoKCSogc3BhcmMvc29sMi5oIChMSUJfU1BFQyk6IExpbmsgLWxkbCBpZiBwcm9maWxpbmcuCgpTdW4gRmViIDEzIDEzOjIxOjU1IDIwMDAgIEplZmZyZXkgQSBMYXcgIChsYXdAY3lnbnVzLmNvbSkKCgkqIGNvbWJpbmUuYyAoc2ltcGxpZnlfY29tcGFyaXNvbik6IEZpeCB0eXBvLgoKU3VuIEZlYiAxMyAxMjo1Nzo1MiAyMDAwICBOZWlsIEJvb3RoIDxOZWlsQkBlYXJ0aGxpbmcubmV0PgoKCSogcHJlZml4LmMgKGNvbmNhdCwgbG9va3VwX2tleSk6IFVzZSB4bWFsbG9jIGFuZCB4cmVhbGxvYwoJY29uc2lzdGVudGx5LgoKMjAwMC0wMi0xMyAgTWljaGFlbCBIYXllcyAgPG0uaGF5ZXNAZWxlYy5jYW50ZXJidXJ5LmFjLm56PgoKCSogZmxvdy5jIChmbG93X2xvb3BfdHJlZV9ub2RlX2FkZCk6IFVzZSBiZXR0ZXIgYWxnb3JpdGhtIGJ5IHBhc3NpbmcKCXByZXZpb3VzbHkgaW5zZXJ0ZWQgbm9kZSBpbnN0ZWFkIG9mIHJvb3Qgbm9kZS4JQ2FsbGVyIGNoYW5nZWQuCgoyMDAwLTAyLTEzICBNaWNoYWVsIEhheWVzICA8bS5oYXllc0BlbGVjLmNhbnRlcmJ1cnkuYWMubno+CgoJKiBiYXNpYy1ibG9jay5oIChGTE9XX0xPT1BfRklSU1RfQkxPQ0ssIEZMT1dfTE9PUF9MQVNUX0JMT0NLKTogRGVsZXRlLgoKMjAwMC0wMi0xMiAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogY3J0c3R1ZmYuYyAoX19kb19nbG9iYWxfY3RvcnNfYXV4LCBfX3JlZ19mcmFtZV9jdG9yLAoJX19kZXJlZ19mcmFtZV9kdG9yKTogQWRkIHByb3RvdHlwZSBhcmd1bWVudC4KCgkqIGd0aHItZGNlLmggKF9fZ3RocmVhZF9hY3RpdmVfcCwgX19ndGhyZWFkX29uY2UpOiBMaWtld2lzZS4KCgkqIGd0aHItcG9zaXguaCAoX19ndGhyZWFkX2FjdGl2ZV9wLCBfX2d0aHJlYWRfb25jZSk6IExpa2V3aXNlLgoKCSogZ3Roci1zb2xhcmlzLmggKF9fZ3RocmVhZF9hY3RpdmVfcCwgX19ndGhyZWFkX29uY2UpOiBMaWtld2lzZS4KCgkqIGd0aHItdnh3b3Jrcy5oIChfX2d0aHJlYWRfb25jZSk6IExpa2V3aXNlLgoKCSogZ3Roci13aW4zMi5oIChfX2d0aHJlYWRfYWN0aXZlX3AsIF9fZ3RocmVhZF9vbmNlKTogTGlrZXdpc2UuCgpTYXQgRmViIDEyIDAxOjQ0OjI2IE1FVCAyMDAwICBKYW4gSHViaWNrYSAgPGpoQHN1c2UuY3o+CgoJKiBpMzg2LmMgKGl4ODZfZW1pdF9yZXN0b3JlX3JlZ3NfdXNpbmdfbW92KTogQnJlYWsgb3V0IGZyb20gLi4uCgkoaXg4Nl9leHBhbmRfZXBpbG9ndWUpOiAuLi4gaGVyZS4gVXNlIG1vdiBpbnN0ZWFkIG9mIGFkZCB0byByZXN0b3JlCglzdGFjayBwb2ludGVyIGluIGZ1bmN0aW9ucyB3L28gc2F2ZWQgcmVnaXN0ZXJzLCBvdXRwdXQgTEVBVkUgbW9yZSBvZnRlbgoJb24gVEFSR0VUX1VTRV9MRUFWRSBtYWNoaW5lcy4KCjIwMDAtMDItMDcgIERtaXRyaSBNYWthcm92ICA8ZGltQHdycy5jb20+ICYgQmVybmQgU2NobWlkdCA8YmVybmRzQHJlZGhhdC5jb20+CgoJKiBjb25maWcvYXJtL2FybS5jIChhcm1faW5pdF9jdW11bGF0aXZlX2FyZ3MpOyBOZXcgZnVuY3Rpb246CglJbml0bGFpc2UgdGhlIENVTVVMQVRJRV9BUkdTIHN0cmN1dHVyZSBmb3IgYSBmdW5jdGlvbgoJZGVmaW5pdGlvbi4KCShhcm1fZnVuY3Rpb25fYXJnKTogTmV3IGZ1bmN0aW9uOiBEZXRlcm1pbmUgd2hlcmUgdG8gcGxhY2UgYQoJZnVuY3Rpb24ncyBhcmd1bWVudC4gIEFsc28gaGFuZGxlcyBkZWNpZGluZyB0aGUgZnVuY3Rpb24ncwoJY2FsbCBjb29raWUuCgkoY3VycmVudF9maWxlX2Z1bmN0aW9uX29wZXJhbmQpOiBOZXcgZnVuY3Rpb246IFJldHVybiB0cnVlIGlmCgl0aGUgc3ltYm9sIGlzIGEgZnVuY3Rpb24gd2hpY2ggaGFzIGFscmVhZHkgYmVlbiBjb21waWxlZC4KCShhcm1faXNfbG9uZ19jYWxsX3ApOiBOZXcgZnVuY3Rpb246IFJldHVybiB0cnVlIGlmIHRoZQoJaW5kaWNhdGVkIGZ1bmN0aW9uIHNob3VsZCBiZSBjYWxsZWQgdmlhIGEgbG9uZyBjYWxsLgoJKGFybV92YWxpZF90eXBlX2F0dHJpYnV0ZV9wKTogTmV3IGZ1bmN0aW9uOiBSZXR1cm4gdHJ1ZSBpZiB0aGUKCWF0dHJpYnV0ZSBpcyBhIHZhbGlkLCBhcm0gc3BlY2lmaWMsIGF0dHJpYnV0ZS4KCShhcm1fY29tcF90eXBlX2F0dHJpYnV0ZSk6IE5ldyBmdW5jdGlvbjogUmV0dXJuIHRydWUgaWYgdGhlCgl0d28gdHlwZXMgaGF2ZSBjb21wYXRpYmxlLCBhcm0gc3BlY2lmaWMsIGF0dHJpYnV0ZXMuCgoJKiBjb25maWcvYXJtL2FybS5oIChDVU1VTEFUSVZFX0FSR1MpOiBSZWRlZmluZSB0byBiZSBhCglzdHJ1Y3R1cmUuCgkoRlVOQ1RJT05fQVJHKTogUmVkZWZpbmUgdG8gY2FsbCBhcm1fZnVuY3Rpb25fYXJnLgoJKEZVTkNUSU9OX0FSR19QQVJUSUFMX05SRUdTKTogUmVkZWZpbmUgdG8gdXNlIGNvcnJlY3QKCXN0cnVjdHVyZSBmaWVsZC4KCShJTklUX0NVTVVMQVRJVkVfQVJHUyk6IFJlZGVmaW5lIHRvIGNhbGwKCWFybV9pbml0X2N1bXVsYXRpdmVfYXJncy4KCShGVU5DVElPTl9BUkdfQURWQU5DRSk6IFJlZGVmaW5lIHRvIHVzZSBjb3JyZWN0IHN0cnVjdHVyZQoJZmllbGQuCgkoU0VUVVBfSU5DT01JTkdfVkFSQVJHUyk6IFJlZGVmaW5lIHRvIHVzZSBjb3JyZWN0IHN0cnVjdHVyZQoJZmllbGQuCgkoQVJNX01BUktfTkVBUkJZX0ZVTkNUSU9OKTogTmV3IG1hY3JvOiBNYXJrIGFscmVhZHkgY29tcGlsZWQKCWZ1bmN0aW9ucy4KCShFTkNPREVfU0VDVElPTik6IEFkZCBjYWxsIHRvIEFSTV9NQVJLX05FQVJCWV9GVU5DVElPTi4KCShWQUxJRF9NQUNISU5FX1RZUEVfQVRUUklCVVRFKTogRGVmaW5lLgoJKENPTVBfVFlQRV9BVFRSSUJVVEVTKTogRGVmaW5lLgoKCSogY29uZmlnL2FybS9hcm0ubWQgKGNhbGwpOiBDYWxsIGFybV9pc19sb25nX2NhbGxfcCB0byBkZWNpZGUKCWlmIGEgbG9uZyBjYWxsIGlzIG5lZWRlZC4KCShjYWxsX3ZhbHVlKTogQ2FsbCBhcm1faXNfbG9uZ19jYWxsX3AgdG8gZGVjaWRlIGlmIGEgbG9uZyBjYWxsCglpcyBuZWVkZWQuCgkoY2FsbF9zeW1ib2wpOiBDYWxsIGFybV9pc19sb25nX2NhbGxfcCB0byBkZWNpZGUgaWYgYSBsb25nIGNhbGwKCWlzIG5lZWRlZC4KCgkqIGNvbmZpZy9hcm0vYXJtLXByb3Rvcy5oOiBBZGQgcHJvdG90eXBlIGZvciBhcm1faXNfbG9uZ19jYWxsX3AuCgoyMDAwLTAyLTExICBEZW5pcyBDaGVydHlrb3YgIDxkZW5pc2NAb3ZlcnRhLnJ1PgoKCSogUkVBRE1FLkFWUjogTmV3IGZpbGUgd2l0aCBpbmZvcm1hdGlvbiBhYm91dCB0aGUgYXZyIHBvcnRzLgoJKiBjb25maWcvYXZyOiBOZXcgZGlyZWN0b3J5IHdpdGggYXZyIHBvcnQgZmlsZXMuCgoyMDAwLTAyLTExICBBbmRyZWFzIEphZWdlciAgPGFqQHN1c2UuZGU+CgoJKiBmaXhpbmMvTWFrZWZpbGUuaW4gKEZJWElOQ19ERUZTKTogUmVtb3ZlIHVubmVlZGVkIEBmaXhpbmNfZGVmc0AuCgoyMDAwLTAyLTExICBaYWNrIFdlaW5iZXJnICA8emFja0B3b2xlcnkuY3VtYi5vcmc+CgoJKiBjcHBoYXNoLmM6IEZpeCBmb3JtYXR0aW5nLCB1cGRhdGUgY29tbWVudGFyeS4KCShkdW1wX2RlZmluaXRpb24pOiBUYWtlIHRocmVlIHNlcGFyYXRlIGFyZ3VtZW50cyBpbnN0ZWFkIG9mIGEKCU1BQ1JPREVGIHN0cnVjdHVyZSBhcmd1bWVudC4KCSogY3BwaGFzaC5oOiBVcGRhdGUgcHJvdG90eXBlIG9mIGR1bXBfZGVmaW5pdGlvbi4KCSogY3BwaW5pdC5jIChjcHBfZmluaXNoKTogVXBkYXRlIGNhbGwgb2YgZHVtcF9kZWZpbml0aW9uLgoKCSogY3BwbGliLmMgKGRvX2RlZmluZSk6IEFsd2F5cyBjcmVhdGUgbmV3IGhhc2ggZW50cnkgd2l0aAoJVF9NQUNSTyB0eXBlLiAgUmVtb3ZlIHJlZHVuZGFudCBjaGVjayBmb3IgcmVkZWZpbml0aW9uIG9mCglwb2lzb25lZCBpZGVudGlmaWVyLiAgVXBkYXRlIGNhbGwgb2YgZHVtcF9kZWZpbml0aW9uLgoJKGRvX3VuZGVmKTogRG9uJ3QgY2FsbCBjaGVja19tYWNyb19uYW1lLiAgUmVuYW1lIHN5bV9sZW5ndGggdG8KCWxlbi4KCShkb19lcnJvciwgZG9fd2FybmluZyk6IERvbid0IHVzZSBjb3B5X3Jlc3Rfb2ZfbGluZSBvcgoJU0tJUF9XSElURV9TUEFDRS4KCShkb193YXJuaW5nKTogRG9uJ3QgdXNlIHBlZHdhcm4gZm9yIHRoZSBhY3R1YWwgd2FybmluZywKCW9ubHkgdGhlIG5vdGljZSBhYm91dCBpdHMgbm90IGJlaW5nIGluIHRoZSBzdGFuZGFyZC4gIChGaXhlcwoJYnVnIHdpdGggI3dhcm5pbmcgaW4gc3lzdGVtIGhlYWRlcnMuKQoJKGRvX2lkZW50KTogU3RyaWN0ZXIgYXJndW1lbnQgY2hlY2tpbmcgLSBhY2NlcHQgb25seSBhIHNpbmdsZQoJc3RyaW5nIGFmdGVyICNpZGVudC4gIEFsc28sIG1hY3JvLWV4cGFuZCB0aGUgbGluZS4KCShkb194aWZkZWYpOiBVc2UgY3BwX2RlZmluZWQuICBEZS1vYmZ1c2NhdGUuCgoJKGRvX3ByYWdtYSk6IFNwbGl0IG91dCBzcGVjaWZpYyBwcmFnbWEgaGFuZGxpbmcgdG8gc2VwYXJhdGUKCWZ1bmN0aW9ucy4gIFVzZSBnZXRfZGlyZWN0aXZlX3Rva2VuLiAgVXBkYXRlIGNvbW1lbnRhcnkuICBEbwoJbm90IHBhc3Mgb24gI3ByYWdtYSBvbmNlIG9yICNwcmFnbWEgcG9pc29uIHRvIHRoZSBmcm9udCBlbmQuCgkoZG9fcHJhZ21hX29uY2UsIGRvX3ByYWdtYV9pbXBsZW1lbnRhdGlvbiwgZG9fcHJhZ21hX3BvaXNvbiwKCWRvX3ByYWdtYV9kZWZhdWx0KTogTmV3LgoKRmViIDExIDEyOjMwOjUzIDIwMDAgIEplZmZyZXkgQSBMYXcgIChsYXdAY3lnbnVzLmNvbSkKCgkqIGp1bXAuYyAoanVtcF9vcHRpbWl6ZV8xKTogVGhlIGZpcnN0IG9wZXJhbmQgaW4gYSByZWxhdGlvbmFsCgljYW4gYmUgYSBDT05TVF9JTlQuCgkqIG9wdGFicy5jIChlbWl0X2NvbmRpdGlvbmFsX21vdmUpOiBIYW5kbGUgcmVsYXRpb25hbHMgd2hpY2gKCWhhdmUgYSBrbm93biB0cnVlL2ZhbHNlIHJlc3VsdC4KCjIwMDAtMDItMTEgIEdlb2ZmIEtlYXRpbmcgIDxnZW9mZmtAY3lnbnVzLmNvbT4KCgkqIGZ1bmN0aW9uLmMgKHRocmVhZF9wcm9sb2d1ZV9hbmRfZXBpbG9ndWVfaW5zbnMpOiBEb24ndCBpbnNlcnQKCWEgUkVUVVJOIGluc24gaW50byBhIGJsb2NrIHdoaWNoIGFscmVhZHkgZW5kcyB3aXRoIGEganVtcC4KCjIwMDAtMDItMTEgIEdlb2ZmIEtlYXRpbmcgIDxnZW9mZmtAY3lnbnVzLmNvbT4KCgkqIGhhaWZhLXNjaGVkLmMgKEJVRl9MRU4pOiBJbmNyZWFzZSBhIGxvdC4KCjIwMDAtMDItMTEgIE5pY2sgQ2xpZnRvbiAgPG5pY2tjQGN5Z251cy5jb20+CgoJKiBjb25maWd1cmUuaW46IEFkZCB0bV9wX2ZpbGUgc3BlY2lmaWNhdGlvbiBmb3IgdGh1bWIgdGFyZ2V0cy4KCSogY29uZmlndXJlOiBSZWdlbmVyYXRlLgoKCSogY29uZmlnL2FybS90aHVtYi1wcm90b3MuaDogTmV3IGZpbGU6IFByb3RvdHlwZXMgZm9yIGV4cG9ydGVkCglmdW5jdGlvbnMgZGVmaW5lZCBpbiB0aHVtYi5jLgoKMjAwMC0wMi0xMSAgUm9iZXJ0IExpcGUgIDxyb2JlcnRsQHNjby5jb20+CgoJKiBNYWtlZmlsZS5pbiAoYm9vdHN0cmFwLWxlYW4pOiBSZW1vdmUgYWRkaXRpb25hbCBmaWxlcy4KCShib290c3RyYXAyLWxlYW4pOiBMaWtld2lzZS4KCShWT0xfRklMRVMpOiBMaXN0IG9mIGZpbGVzIGZvciBhYm92ZS4KCjIwMDAtMDItMTEgIE5hdGhhbiBTaWR3ZWxsICA8bmF0aGFuQGFjbS5vcmc+CgoJKiBjcHBoYXNoLmMgKHNwZWNpYWxfc3ltYm9sKTogUmVtb3ZlIHNwdXJpb3VzIGFyZ3VtZW50IHRvCgljcHBfbG9va3VwLgoKMjAwMC0wMi0xMSAgSm9lbCBTaGVycmlsbCAoam9lbEBPQVJjb3JwLmNvbT4KCgkqIGNvbmZpZ3VyZS5pbjogKGkqODYtKi1ydGVtcyopOiBTd2FwcGVkIGVsZiBhbmQgY29mZgoJc3Rhbnphcy4KCSogY29uZmlndXJlOiBSZWJ1aWx0LgoKMjAwMC0wMi0xMSAgUm9kbmV5IEJyb3duICA8Um9kbmV5QnJvd25AcG1zYy5jb20+CgoJKiBwYS1wcm90b3MuaDogV3JhcCBmdW5jdGlvbl9hcmdfcGFkZGluZyBpbiBUUkVFX0NPREUgI2lmZGVmLgoKRnJpIEZlYiAxMSAwMjo1OTowNSAyMDAwICBKZWZmcmV5IEEgTGF3ICAobGF3QGN5Z251cy5jb20pCgoJKiBwYS5jLCBwYS5oOiBSZW1vdmUgdHJpZ3JhcGggc2VxdWVuY2VzIHdpdGhpbiBjb21tZW50cy4KCkZyaSBGZWIgMTEgMDI6NTE6NTYgMjAwMCAgUGF2ZWwgUm9za2luIDxwYXZlbF9yb3NraW5AZ2VvY2l0aWVzLmNvbT4KCgkqIGludm9rZS50ZXhpIChQUEMgT3B0aW9ucyk6IC1tbm8tbmV3LW1uZW5vbWljcyAtPiAtbW9sZC1tbmVtb25pY3MuCgpGcmkgRmViIDExIDAyOjQ4OjMwIDIwMDAgIEJyYWQgTHVjaWVyICAobHVjaWVyQG1hdGgucHVyZHVlLmVkdSkKCgkqIHNiaXRtYXAuaDogTWFrZSBTQklUTUFQX0VMVF9CSVRTIHVuc2lnbmVkLgoKMjAwMC0wMi0xMSAgTWljaGFlbCBIYXllcyAgPG0uaGF5ZXNAZWxlYy5jYW50ZXJidXJ5LmFjLm56PgoKCSogY29uZmlnL2M0eC9jNHguYyAoZnBfemVyb19vcGVyYW5kKTogQ2hlY2sgZm9yIENPTlNUX0RPVUJMRS4KCjIwMDAtMDItMTEgIE1pY2hhZWwgSGF5ZXMgIDxtLmhheWVzQGVsZWMuY2FudGVyYnVyeS5hYy5uej4KCgkqIGNvbmZpZy9jNHgvYzR4LmggKEFTTV9HTE9CQUxJWkVfTEFCRUwpOiBVc2UgYzR4X2dsb2JhbF9sYWJlbC4KCShBU01fT1VUUFVUX0VYVEVSTkFMKTogVXNlIGM0eF9leHRlcm5hbF9yZWYuCgkoQVNNX09VVFBVVF9FWFRFUk5BTF9MSUJDQUxMKTogTGlrZXdpc2UuCgkoQVNNX0ZJTEVfRU5EKTogVXNlIGM0eF9maWxlX2VuZC4KCSogY29uZmlnL2M0eC9jNHguYyAoYzR4X2dsb2JhbF9sYWJlbCk6IE5ldyBmdW5jdGlvbi4KCShjNHhfZXh0ZXJuYWxfcmVmLCBjNHhfZmlsZV9lbmQpOiBMaWtld2lzZS4KCgkqIGNvbmZpZy9jNHgvYzR4LXByb3Rvcy5oIChjNHhfZ2xvYmFsX2xhYmVsKTogQWRkIHByb3RvdHlwZS4KCShjNHhfZXh0ZXJuYWxfcmVmLCBjNHhfZW5kX2ZpbGUpOiBMaWtld2lzZS4KCjIwMDAtMDItMTAgIFphY2sgV2VpbmJlcmcgIDx6YWNrQHdvbGVyeS5jdW1iLm9yZz4KCgkqIGNwcGV4cC5jOiBEb24ndCBpbmNsdWRlIGNwcGhhc2guaC4KCShwYXJzZV9jaGFyY29uc3QsIGNwcF9sZXgpOiBVc2UgY3BwX2RlZmluZWQuCgkoY3BwX2xleCk6IFVzZSBnZXRfZGlyZWN0aXZlX3Rva2VuIHRocm91Z2hvdXQuICBSZW1vdmUKCXVubmVjZXNzYXJ5IGNhc2VzIGZyb20gc3dpdGNoLiAgTW92ZSBhc3NlcnRpb24taGFuZGxpbmcgY29kZQoJZG93biB0byBPVEhFUiBjYXNlLgoJKGNwcF9wYXJzZV9leHByKTogSWYgd2Ugc2VlICcrJyBvciAnLScsIGNoZWNrIHRoZSBjb250ZXh0IHRvCglkZXRlcm1pbmUgaWYgdGhleSBhcmUgdW5hcnkgb3IgYmluYXJ5IG9wZXJhdG9ycy4gIFN0cmVhbWxpbmUKCXRoZSBqdW1wcyBhIGJpdC4gIERvIG5vdCBjYWxsIHNraXBfcmVzdF9vZl9saW5lLgoKCSogY3BwbGliLmM6IE1ha2Ugc2tpcF9yZXN0X29mX2xpbmUgYW5kIGNwcF9za2lwX2hzcGFjZQoJc3RhdGljLiAgRXhwb3J0IGdldF9kaXJlY3RpdmVfdG9rZW4uICBVcGRhdGUgY29tbWVudGFyeS4KCShjcHBfZGVmaW5lZCk6IE5ldyBmdW5jdGlvbi4KCShkb19kZWZpbmUpOiBSZW1vdmUgcmVmZXJlbmNlIHRvIFRfUENTVFJJTkcuICBDYWxsCglmcmVlX2RlZmluaXRpb24gdG8gcmVsZWFzZSBtZW1vcnkgZm9yIG9sZCBkZWZpbml0aW9uLCB3aGVuCglyZWRlZmluaW5nIGEgbWFjcm8uCgkoZXZhbF9pZl9leHByZXNzaW9uKTogU2V0IG9ubHlfc2Vlbl93aGl0ZSB0byAwIGJlZm9yZSBjYWxsaW5nCgljcHBfcGFyc2VfZXhwci4gIENhbGwgc2tpcF9yZXN0X29mX2xpbmUgYWZ0ZXIgaXQgcmV0dXJucy4KCShjcHBfcmVhZF9jaGVja19hc3NlcnRpb24pOiBEb24ndCBwcmVzZXJ2ZSBhIHBvaW50ZXIgaW50byB0aGUKCXRva2VuIGJ1ZmZlciBhY3Jvc3MgYSBjYWxsIHRvIGNwcF9nZXRfdG9rZW4uCgoJKiBNYWtlZmlsZS5pbiAoY3BwZXhwLm8pOiBEb24ndCBkZXBlbmQgb24gY3BwaGFzaC5oLgoJKiBjcHBmaWxlcy5jIChyZWR1bmRhbnRfaW5jbHVkZV9wKTogVXNlIGNwcF9kZWZpbmVkLgoJKiBjcHBoYXNoLmMgKGZyZWVfZGVmaW5pdGlvbik6IE5ldyBmdW5jdGlvbi4KCShkZWxldGVfbWFjcm8pOiBVc2UgaXQuICBVcGRhdGUgY29tbWVudGFyeS4KCSogY3BwaGFzaC5oOiBUeXBlZGVmIEhBU0hOT0RFIGhlcmUuICBQcm90b3R5cGUgY3BwX2xvb2t1cCBhbmQKCWZyZWVfZGVmaW5pdGlvbi4KCSogY3BwbGliLmg6IERvbid0IHR5cGVkZWYgSEFTSE5PREUgaGVyZS4gRGVsZXRlIFRfUENTVFJJTkcKCWZyb20gZW51bSBub2RlX3R5cGUuICBQcm90b3R5cGUgY3BwX2RlZmluZWQgYW5kIGdldF9kaXJlY3RpdmVfdG9rZW4uCglEb24ndCBwcm90b3R5cGUgY3BwX2xvb2t1cCwgc2tpcF9yZXN0X29mX2xpbmUsIG9yIGNwcF9za2lwX2hzcGFjZS4KCgkqIGZpeC1oZWFkZXIuYyAoY2hlY2tfbWFjcm9fbmFtZXMpOiBVc2UgY3BwX2RlZmluZWQuCgkocmVhZF9zY2FuX2ZpbGUpOiBTZXQgaW5oaWJpdF93YXJuaW5ncyBhbmQgaW5oaWJpdF9lcnJvcnMgaW4KCXRoZSBvcHRpb25zIHN0cnVjdHVyZS4KCjIwMDAtMDItMTAgIEZyYW56IFNpcmwgIDxGcmFuei5TaXJsLWtlcm5lbEBsYXV0ZXJiYWNoLmNvbT4KCgkqIGMtcHJhZ21hLmMgKG1heGltdW1fZmllbGRfYWxpZ25tZW50KTogUmVtb3ZlIGR1cGxpY2F0ZSBkZWNsYXJhdGlvbi4KCjIwMDAtMDItMTAgIEphc29uIE1lcnJpbGwgIDxqYXNvbkBjYXNleS5jeWdudXMuY29tPgoKCSogZHdhcmYyb3V0LmMgKGFkZF9hYnN0cmFjdF9vcmlnaW5fYXR0cmlidXRlKTogQ2hlY2sgVFJFRV9DT0RFIChvcmlnaW4pCglyYXRoZXIgdGhhbiBkaWUtPmRpZV90YWcuCgpUaHUgRmViIDEwIDE2OjI2OjQ5IDIwMDAgIFJpY2hhcmQgS2VubmVyICA8a2VubmVyQHZsc2kxLnVsdHJhLm55dS5lZHU+CgoJKiBjb21iaW5lLmMgKG1ha2VfZXh0cmFjdGlvbiwgZm9yY2VfdG9fbW9kZSk6IEF2b2lkIHdhcm5pbmcgb24KCW1peGVkLXNpZ25lZG5lc3MgY29uZGl0aW9uYWxzLgoJKG1ha2VfZmllbGRfYXNzaWdubWVudCwgbm9uemVyb19iaXRzKTogTGlrZXdpc2UuCgkqIGV4cG1lZC5jIChzdG9yZV9maXhlZF9iaXRfZmllbGQpOiBBTElHTiBhcmcgbm93IHVuc2lnbmVkLgoJKHN0b3JlX3NwbGl0X2JpdF9maWVsZCwgZXh0cmFjdF9zcGxpdF9iaXRfZmllbGQpOiBMaWtld2lzZS4KCShleHRyYWN0X2ZpeGVkX2JpdF9maWVsZCwgc3RvcmVfYml0X2ZpZWxkLAoJKiBleHByLmM6IENoYW5nZSBhbGlnbm1lbnQgdG8gYmUgdW5zaWduZWQgZXZlcnl3aGVyZS4KCShtb3ZlX2J5X3BpZWNlcywgc3RvcmVfY29uc3RydWN0b3JfZmllbGQsIHN0b3JlX2NvbnN0cnVjdG9yKToKCUFsaWdubWVudCBwYXJtIGlzIHVuc2lnbmVkLgoJKGVtaXRfYmxvY2tfbW92ZSwgZW1pdF9ncm91cF9sb2FkLCBlbWl0X2dyb3VwX3N0b3JlKTogTGlrZXdpc2UuCgkoY2xlYXJfc3RvcmFnZSwgZW1pdF9wdXNoX2luc24sIGNvbXBhcmVfZnJvbV9ydHgpOiBMaWtld2lzZS4KCShkb19jb21wYXJlX3J0eF9hbmRfanVtcCk6IExpa2V3aXNlLgoJKG1vdmVfYnlfcGllY2VzX25pbnNucywgY2xlYXJfYnlfcGllY2VzKTogTGlrZXdpc2UuCglDb21wYXJlIGFsaWduIHdpdGggR0VUX01PREVfQUxJR05NRU5ULgoJKGV4cGFuZF9leHByX3VuYWxpZ25lZCk6IFBvaW50ZXIgdG8gYWxpZ25tZW50IGlzIHBvaW50ZXIgdG8gdW5zaWduZWQuCgkoZ2V0X2lubmVyX3JlZmVyZW5jZSk6IExpa2V3aXNlLgoJKGNvcHlfYmxrbW9kZV9mcm9tX3JlZywgZW1pdF9wdXNoX2luc24pOiBSZW1vdmUgdW5uZWVkZWQgY2FzdHMuCgkoZXhwYW5kX2Fzc2lnbm1lbnQpOiBMb2NhbCB2YXJzIGZvciBhbGlnbm1lbnQgbm93IHVuc2lnbmVkLgoJKHN0b3JlX2NvbnN0cnVjdG9yLCBzdG9yZV9maWVsZCwgZXhwYW5kX2V4cHIsIGRvX2p1bXApOiBMaWtld2lzZS4KCShkb19jb21wYXJlX2FuZF9qdW1wKTogTGlrZXdpc2UuCgkoc3RvcmVfZmllbGQpOiBDYWxsIG5ldyBmdW5jdGlvbiBleHByX2FsaWduLgoJKiBleHByLmggKGVtaXRfYmxvY2tfbW92ZSwgZW1pdF9ncm91cF9sb2FkLCBlbWl0X2dyb3VwX3N0b3JlKToKCUFsaWdubWVudCBhcmcgbm93IHVuc2lnbmVkLgoJKGNsZWFyX3N0b3JhZ2UsIGVtaXRfcHVzaF9pbnNuLCBjb21wYXJlX2Zyb21fcnR4KTogTGlrZXdpc2UuCgkoZG9fY29tcGFyZV9ydHhfYW5kX2p1bXAsIHN0b3JlX2JpdF9maWVsZCk6IExpa2V3aXNlLgoJKGV4dHJhY3RfYml0X2ZpZWxkKTogTGlrZXdpc2UuCgkqIGZvbGQtY29uc3QuYyAoYWRkX2RvdWJsZSk6IEFkZCBjYXN0IHRvIGVsaW1pbmF0ZSBzaWduZWRuZXNzIHdhcm5pbmcuCgkqIG1hY2htb2RlLmggKEdFVF9NT0RFX0FMSUdOTUVOVCk6IFJlc3VsdCBpcyB1bnNpZ25lZC4KCShnZXRfYmVzdF9tb2RlKTogQWxpZ25tZW50IGFyZyBpcyB1bnNpZ25lZC4KCSogcnRsLmggKG1vdmVfYnlfcGllY2VzKTogTGlrZXdpc2UuCgkqIHN0b3JlLWxheW91dC5jIChtYXhpbXVtX2ZpZWxkX2FsaWdubWVudCwgc2V0X2FsaWdubWVudCk6CglOb3cgdW5zaWduZWQuCgkobGF5b3V0X2RlY2wpOiBBbGlnbm1lbnQgYXJnIGlzIG5vdyB1bnNpZ25lZC4KCVJlbW92ZSB1bm5lZWRlZCBjYXN0cy4KCShsYXlvdXRfcmVjb3JkLCBsYXlvdXRfdW5pb24sIGxheW91dF90eXBlKTogUmVtb3ZlIHVubmVlZGVkIGNhc3RzLgoJTG9jYWwgYWxpZ25tZW50IHZhcmlhYmxlcyBub3cgdW5zaWduZWQuCgkoZ2V0X2Jlc3RfbW9kZSk6IEFsaWdubWVudCBhcmcgbm93IHVuc2lnbmVkLgoJKiB0cmVlLmMgKGV4cHJfYWxpZ24pOiBOZXcgZnVuY3Rpb24uCgkqIHRyZWUuaCAoZXhwcl9hbGlnbik6IExpa2V3aXNlLgoJKG1heGltdW1fZmllbGRfYWxpZ25tZW50LCBzZXRfYWxpZ25tZW50KTogTm93IHVuc2lnbmVkLgoJKGdldF9pbm5lcl9yZWZlcmVuY2UpOiBBbGlnbm1lbnQgYXJndW1lbnQgaXMgbm93IHBvaW50ZXIgdG8gdW5zaWduZWQuCgkqIHZhcmFzbS5jIChhc3NlbWJsZV92YXJpYWJsZSk6IEFkZCBjYXN0IHRvIGVsaW1pbmF0ZSB3YXJuaW5nLgoKVGh1IEZlYiAxMCAxMjo1Njo0NyAyMDAwICBKaW0gV2lsc29uICA8d2lsc29uQGN5Z251cy5jb20+CgoJKiBleHBtZWQuYyAoc3RvcmVfYml0X2ZpZWxkKTogSWYgb3AwIGFuZCBmaWVsZG1vZGUgYXJlIHRoZSBzYW1lIHNpemUsCgl0aGVuIHN0b3JlIGRpcmVjdGx5IGludG8gb3AwLgoKCSogY2FsbHMuYyAoZXhwYW5kX2NhbGwpOiBXaGVuIGVtaXR0aW5nIGEgTk9URV9JTlNOX1NFVEpNUCwgc2VhcmNoIGZvcgoJdGhlIENBTExfSU5TTiwgYW5kIGVtaXQgdGhlIG5vdGUgaW1tZWRpYXRlbHkgYWZ0ZXIgaXQuCgoyMDAwLTAyLTEwICBOaWNrIENsaWZ0b24gIDxuaWNrY0BjeWdudXMuY29tPgoKCSogY29uZmlnL2FybS90aHVtYi5tZCAoZXBpbG9ndWUpOiBJbmNsdWRlIGEgKHJldHVybikgaW4gdGhlCglnZW5lcmF0ZWQgaW5zbiwgYW5kIGVtaXQgaXQgdXNpbmcgZW1pdF9qdW1wX2luc24gbm90CgllbWl0X2luc24uCgpUaHUgRmViIDEwIDE4OjI4OjU5IE1FVCAyMDAwICBKYW4gSHViaWNrYSAgPGpoQHN1c2UuY3o+CgoJKiBmdW5jdGlvbi5jIChhc3NpZ25fdGVtcCk6IENoYW5nZSB6ZXJvLXNpemVkIGFycmF5cyB0byBzaXplIDEuCgkqIGludGVncmF0ZS5jIChleHBhbmRfaW5saW5lX2Z1bmN0aW9uKTogRG8gbm90IHVwZGF0ZQoJc3RhY2tfYWxpZ25tZW50X25lZWRlZAoJKiBpMzg2LmMgKGNvbXB1dGVfZnJhbWVfc2l6ZSk6IFJlbW92ZSAjaWZkZWYgUFJFRkVSUkVEX0ZSQU1FX0JPVU5EQVJZLAoJYWRkIHNvbWUgc2FuaXR5IGNoZWNraW5nLCByZW1vdmUgb3B0aW1pemF0aW9uIGZvciBmdW5jdGlvbiB3aXRoCgl6ZXJvIGZyYW1lIHNpemUuCgoyMDAwLTAyLTEwICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBmbG93LmMgKG1hcmtfcmVnc19saXZlX2F0X2VuZCk6IERlbGV0ZSB1bnVzZWQgdmFyaWFibGVzLgoKCSogZ2djLXBhZ2UuYyAoZ2djX3BhZ2VfcHJpbnRfc3RhdGlzdGljcyk6IGJ6ZXJvIC0+IG1lbXNldC4KCgkqIGludGVncmF0ZS5jIChjb3B5X3J0eF9hbmRfc3Vic3RpdHV0ZSk6IFdyYXAgdmFyaWFibGUgYGFsaWdubWVudCcKCWluIG1hY3JvIEZSQU1FX0dST1dTX0RPV05XQVJELgoKCSogc3RtdC5jIChleHBhbmRfZW5kX2JpbmRpbmdzKTogRGVsZXRlIHVudXNlZCB2YXJpYWJsZS4KCgkqIHVucm9sbC5jIChpdGVyYXRpb25faW5mbyk6IE1hcmsgcGFyYW1ldGVyIGBsb29wJyB3aXRoCglBVFRSSUJVVEVfVU5VU0VELgoKMjAwMC0wMi0xMCAgQWxleGFuZHJlIE9saXZhICA8b2xpdmFAbHNkLmljLnVuaWNhbXAuYnI+CgoJKiBmaXhpbmMvc2VydmVyLmMgKGxvYWRfZGF0YSk6IFJldHVybiBOVUxMIGlmIHRoZSBtYXJrZXIgbGluZSBpcwoJbm90IGZvdW5kLgoJKHJ1bl9zaGVsbCk6IElmIGxvYWRfZGF0YSByZXR1cm5zIE5VTEwsIHJldHJ5IHRoZSBjb21tYW5kIG9uY2UsIGluCglhIG5ldyBzaGVsbC4KCgkqIGNvbmZpZ3VyZTogUmVidWlsdC4KCjIwMDAtMDItMDkgIEJydWNlIEtvcmIgIDxia29yYkBnbnUub3JnPgoKCSogZ2NjL2ZpeGluY2x1ZGVzOiAgKiogREVMRVRFRCAqKgoJKiBnY2MvZml4Y3BwOiAgKiogREVMRVRFRCAqKgoJKiBnY2MvZml4aW5jLW50LnNlZDogICoqIERFTEVURUQgKioKCSogZ2NjL2p1c3QtZml4aW5jOiAgKiogREVMRVRFRCAqKgoJKiBnY2MvTWFrZWZpbGUuaW46ICBSZW1vdmVkIG91dC1kYXRlZCBjb21tZW50YXJ5CgkqIGdjYy9jb25maWd1cmUuaW46IFJlbW92ZWQgZmFzdC1maXhpbmNsdWRlcyBkaXNhYmxlbWVudC4KCSogTUFJTlRBSU5FUlMoSWFuIFRheWxvcikgbW92ZWQgdG8gIldyaXRlIGFmdGVyIGFwcHJvdmFsIiBncm91cC4KCjIwMDAtMDItMDkgIENsaW50b24gUG9wZXR6ICA8Y3BvcGV0ekBjeWdudXMuY29tPgoJKiBmdW5jdGlvbi5jICh0aHJlYWRfcHJvbG9ndWVfYW5kX2VwaWxvZ3VlX2luc25zKTogVW5jb21tZW50CglsYXN0IGNoYW5nZS4KCjIwMDAtMDItMDkgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgoJKiBqdW1wLmMgKGRlbGV0ZV9pbnNuKTogRG9uJ3QgZGVsZXRlIHVzZXIgbGFiZWxzIGF0IC1PMC4KCjIwMDAtMDItMDkgIFJvYmVydCBMaXBlICA8cm9iZXJ0bEBzY28uY29tPgoKCSogTWFrZWZpbGUuaW4gKGdlbi1wcm90b3MpOiBEb24ndCBkZXBlbmQgb24gSE9TVF9MSUJERVBTLgoJRG9uJ3QgbGluayB3aXRoIEhPU1RfTElCUy4KCjIwMDAtMDItMDkgIFphY2sgV2VpbmJlcmcgIDx6YWNrQHdvbGVyeS5jdW1iLm9yZz4KCgkqIGNvbmZpZ3VyZS5pbjogQ29ycmVjdCAtLWhlbHAgdGV4dCBmb3IgLS13aXRoLWR3YXJmMi4KCVB1dCB0bS1kd2FyZjIuaCBhZnRlciBvdGhlciB0bSBmaWxlcywgaWYgaXQncyByZXF1ZXN0ZWQuCgkqIGNvbmZpZ3VyZTogUmVnZW5lcmF0ZS4KCSogY29uZmlnL3RtLWR3YXJmMi5oOiAjdW5kZWYgUFJFRkVSUkVEX0RFQlVHR0lOR19UWVBFIGJlZm9yZQoJZGVmaW5pbmcgaXQuCgoyMDAwLTAyLTA5ICBaYWNrIFdlaW5iZXJnICA8emFja0B3b2xlcnkuY3VtYi5vcmc+CgoJKiBjcHBsaWIuaDogUHJvdmlkZSBIQVNITk9ERSB0eXBlZGVmIGFuZCBmb3J3YXJkIGRlY2wgb2YKCXN0cnVjdCBoYXNobm9kZSBvbmx5LiAgS2lsbCBjcHBfaGFzaG5vZGUgdHlwZWRlZi4gIE1BQ1JPREVGLAoJREVGSU5JVElPTiwgc3RydWN0IGhhc2hub2RlLCBzdHJ1Y3QgbWFjcm9kZWYsIHN0cnVjdAoJZGVmaW5pdGlvbiwgc2Nhbl9kZWNscyBwcm90b3R5cGUsIGRlZmF1bHQgZGVmbiBvZgoJSU5DTFVERV9MRU5fRlVER0UgbW92ZWQgZWxzZXdoZXJlLgoKCSogY3BwaGFzaC5oOiBNQUNST0RFRiwgREVGSU5JVElPTiwgc3RydWN0IG1hY3JvZGVmLCBzdHJ1Y3QKCWRlZmluaXRpb24sIGFuZCBzdHJ1Y3QgaGFzaG5vZGUgbW92ZWQgaGVyZS4gUmVtb3ZlIHRoZSB1bnVzZWQKCSdwcmVkZWZpbmVkJyBmaWVsZCBmcm9tIHN0cnVjdCBkZWZpbml0aW9uLiAgUmVwbGFjZSB0aGUgJ2FyZ3MnCgl1bmlvbiB3aXRoIGl0cyBzb2xlIG1lbWJlci4gIEFsbCB1c2VycyB1cGRhdGVkIChjcHBoYXNoLmMpLgoJRGVsZXRlIEhBU0hTVEVQIGFuZCBNQUtFX1BPUyBtYWNyb3MsIGFuZCBoYXNoZiBwcm90b3R5cGUuICBBZGQKCW11bHRpcGxlIGluY2x1ZGUgZ3VhcmQuCgoJKiBjcHBoYXNoLmMgKGhhc2hmKTogTWFrZSBzdGF0aWM7IHVzZSBiZXR0ZXIgYWxnb3JpdGhtOyBkcm9wCglIQVNIU0laRSBwYXJhbWV0ZXI7IHJldHVybiBhbiB1bnNpZ25lZCBpbnQuCgkoY3BwX2xvb2t1cCk6IERyb3AgSEFTSCBwYXJhbWV0ZXIuICBQRklMRSBwYXJhbWV0ZXIgaXMKCXVzZWQuIENhbGN1bGF0ZSBIQVNIU0laRSBtb2R1bHVzIGhlcmUuCgkoY3BwX2luc3RhbGwpOiBEcm9wIEhBU0ggcGFyYW1ldGVyLiBDYWxjdWxhdGUgSEFTSFNJWkUgbW9kdWx1cwoJaGVyZS4KCShjcmVhdGVfZGVmaW5pdGlvbik6IERyb3AgUFJFREVGSU5JVElPTiBwYXJhbWV0ZXIuCgkqIGNwcGxpYi5jIChkb19kZWZpbmUpOiBEb24ndCBjYWxjdWxhdGUgYSBoYXNoIHZhbHVlIGhlcmUuCglEb24ndCBwYXNzIChrZXl3b3JkID09IE5VTEwpIHRvIGNyZWF0ZV9kZWZpbml0aW9uLgoKCSogc2Nhbi5oOiBQcm90b3R5cGUgc2Nhbl9kZWNscyBoZXJlLgoJKiBjcHBmaWxlcy5jOiBNb3ZlIElOQ0xVREVfTEVOX0ZVREdFIGRlZmF1bHQgZGVmbiBoZXJlLgoJKiBjcHBleHAuYywgY3BwZmlsZXMuYywgY3BwaW5pdC5jLCBjcHBsaWIuYywgZml4LWhlYWRlci5jOiBBbGwKCWNhbGxlcnMgb2YgY3BwX2xvb2t1cCBhbmQgY3BwX2luc3RhbGwgdXBkYXRlZC4KCgkqIGNwcGhhc2guYyAobWFjYXJnKTogSG9pc3QgYWxsIHRoZSBmbGFnIGRpZGRsaW5nIG91dCBvZiB0aGUKCWZ1bmN0aW9uLi4uCgkobWFjcm9leHBhbmQpOiAuLi4gYW5kIG91dCBvZiB0aGUgbG9vcCB0aGF0IGNhbGxzIG1hY2FyZy4KCVNraXAgb3ZlciB0aGUgaW5pdGlhbCBwYXJlbiBiZWZvcmUgbWFjcm8gYXJndW1lbnRzIHdpdGgKCWNwcF9nZXRfbm9uX3NwYWNlX3Rva2VuOyBwb2ludCBtYXkgYmUgc29tZSBkaXN0YW5jZSBiZWZvcmUKCXRoYXQgcGFyZW4uICBBYm9ydCBpZiBpdCdzIG5vdCB0aGVyZS4KCgkqIGNwcGxpYi5jIChwYXJzZV9jbGVhcl9tYXJrKTogRGVsZXRlIGZ1bmN0aW9uLgoJKHBhcnNlX3NldF9tYXJrLCBwYXJzZV9nb3RvX21hcmspOiBNYWtlIHN0YXRpYy4KCShBQ1RJVkVfTUFSS19QKTogTmV3IG1hY3JvLgoJKHNraXBfYmxvY2tfY29tbWVudCwgc2tpcF9saW5lX2NvbW1lbnQpOiBEbyBub3QgYnVtcCB0aGUgbGluZQoJaWYgQUNUSVZFX01BUktfUCBpcyB0cnVlLgoJKGNwcF9wb3BfYnVmZmVyKTogVGhlIGJ1ZmZlciB0byBiZSBwb3BwZWQgbWF5IG5vdCBoYXZlIGFuCglhY3RpdmUgbWFyay4KCShjcHBfZ2V0X3Rva2VuKTogV2hlbiBsb29raW5nIGZvciB0aGUgaW5pdGlhbCBwYXJlbiBiZWZvcmUKCW1hY3JvIGFyZ3VtZW50cywgb25seSBzZXQgYSBtYXJrIGluIGEgZmlsZSBidWZmZXIsIEFsd2F5cwoJcmV0dXJuIHRvIHRoYXQgbWFyayBiZWZvcmUgcHJvY2VlZGluZyB0byBjYWxsIG1hY3JvZXhwYW5kIG9yCglyZXR1cm4gYSBOQU1FIHRva2VuLgoKCSogY3BwbGliLmg6IFJlbW92ZSBwcm90b3R5cGVzIG9mIHBhcnNlX3NldF9tYXJrLAoJcGFyc2VfY2xlYXJfbWFyaywgcGFyc2VfZ290b19tYXJrLgoJKHN0cnVjdCBjcHBfb3B0aW9ucyk6IFJlbmFtZSAncHV0X291dF9jb21tZW50cycgdG8KCSdkaXNjYXJkX2NvbW1lbnRzJyBhbmQgaW52ZXJ0IGl0cyBzZW5zZS4KCSogY3BwaW5pdC5jLCBjcHBoYXNoLmMsIGNwcGxpYi5jOiBBbGwgdXNlcnMgb2YKCXB1dF9vdXRfY29tbWVudHMgY2hhbmdlZCB0byB1c2UgZGlzY2FyZF9jb21tZW50cywgd2l0aAoJb3Bwb3NpdGUgc2Vuc2UuCgoyMDAwLTAyLTA5ICBDbGludG9uIFBvcGV0eiAgPGNwb3BldHpAY3lnbnVzLmNvbT4KCgkqIGZ1bmN0aW9uLmMgKHRocmVhZF9wcm9sb2d1ZV9hbmRfZXBpbG9ndWVfaW5zbnMpOiBEb24ndCBkZWxldGUKCXRoZSBlZGdlIGZyb20gYSBibG9jayB0aGF0IGJvdGgganVtcHMgYW5kIGZhbGxzIHRocm91Z2ggdG8gdGhlCglmYWxsdGhydSBibG9jay4KCjIwMDAtMDItMDkgIFNjb3R0IEJhbWJyb3VnaCAgPHNjb3R0YkBuZXR3aW5kZXIub3JnPgoKCSogY29uZmlnL2FybS9hcm0ubWQgKG1vdnNpKTogSW4gUElDIG1vZGUsIG1ha2Ugc3VyZSB0aGF0IGEKCWNvbnN0YW50IHNvdXJjZSBhZGRyZXNzIGlzIGxlZ2l0aW1hdGUuCgoyMDAwLTAyLTA5ICBQaGlsaXAgQmx1bmRlbGwgIDxwYkBmdXR1cmV0di5jb20+CgoJKiBjb25maWcvYXJtL2FybS5jIChsZWdpdGltaXplX3BpY19hZGRyZXNzKTogSGFuZGxlIExBQkVMX1JFRgoJY29ycmVjdGx5LgoKCSogY29uZmlnL2FybS9hcm0uaCAoTEVHSVRJTUFURV9DT05TVEFOVF9QKTogQWxsb3cgYW55dGhpbmcgd2hlbgoJZ2VuZXJhdGluZyBQSUMuCgkoTEVHSVRJTUFURV9QSUNfT1BFUkFORCk6IERpc2FsbG93IHJlZmVyZW5jZXMgdG8gbGFiZWxzLgoKMjAwMC0wMi0wOSAgWmFjayBXZWluYmVyZyAgPHphY2tAd29sZXJ5LmN1bWIub3JnPgoKCSogY3BwbGliLmMgKGNwcF9kZWZpbmUsIGNwcF91bmRlZik6IE1ha2Ugc3VyZSB0aGUgc3RhY2tlZCBidWZmZXIKCWVuZHMgd2l0aCBhIG5ld2xpbmUgYW5kIGEgTlVMLiAgRG9uJ3QgYmUgc28gY2xldmVyIG1hbmlwdWxhdGluZwoJc3RyaW5ncy4KCldlZCBGZWIgIDkgMTQ6MTg6MDggTUVUIDIwMDAgIEphbiBIdWJpY2thICA8amhAc3VzZS5jej4KCgkqIHJlbG9hZDEuYyAocmVsb2FkKSBBbGlnbiBzdGFjayBmcmFtZSB0byBjZnVuLT5zdGFja19hbGlnbm1lbnRfbmVlZGVkLAoJbm90IHRvIEJJR0dFU1RfQUxJR05NRU5ULgoKMjAwMC0wMi0wOCAgR2VvZmYgS2VhdGluZyAgPGdlb2Zma0BjeWdudXMuY29tPgoKCSogZHdhcmYyLmggKERXX0NGQV9HTlVfbmVnYXRpdmVfb2Zmc2V0X2V4dGVuZGVkKTogTmV3IGNvbnN0YW50LgoJKiBkd2FyZjJvdXQuYyAoZHdhcmZfY2ZpX25hbWUpOiBQcmludCBuYW1lIG9mIG5ldyBjb25zdGFudC4KCShyZWdfc2F2ZSk6IFVzZSBEV19DRkFfR05VX25lZ2F0aXZlX29mZnNldF9leHRlbmRlZCB3aGVuIG5lZWRlZC4KCShvdXRwdXRfY2ZpKTogSGFuZGxlIG91dHB1dCBvZiBEV19DRkFfR05VX25lZ2F0aXZlX29mZnNldF9leHRlbmRlZC4KCSogZnJhbWUuYyAoZXhlY3V0ZV9jZmFfaW5zbik6IEhhbmRsZQoJRFdfQ0ZBX0dOVV9uZWdhdGl2ZV9vZmZzZXRfZXh0ZW5kZWQuCgoyMDAwLTAyLTA4ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEBjeWdudXMuY29tPgoKCSogZmxvdy5jICh0aWR5X2ZhbGx0aHJ1X2VkZ2VzKTogU3BsaXQgb3V0IGZyb20gLi4uCgkoZGVsZXRlX3VucmVhY2hhYmxlX2Jsb2Nrcyk6IC4uLiBoZXJlLgoJKGZpbmRfYmFzaWNfYmxvY2tzKTogVXNlIGl0LgoKVHVlIEZlYiAgOCAxNTo1MTo1MCAyMDAwICBSaWNoYXJkIEtlbm5lciAgPGtlbm5lckB2bHNpMS51bHRyYS5ueXUuZWR1PgoKCSogc3RtdC5jIChleHBhbmRfZGVjbCk6IERvIHNldCBSVFhfVU5DSEFOR0lOR19QIGZvciBUUkVFX1JFQURPTkxZLgoKMjAwMC0wMi0wOCAgWmFjayBXZWluYmVyZyAgPHphY2tAd29sZXJ5LmN1bWIub3JnPgoKCSogTWFrZWZpbGUuaW4gKEdFTl9QUk9UT1NfT0JKUyk6IFJlbW92ZSBsaWJjcHAuYS4KCShnZW5fcHJvdG9zLm8pOiBEb24ndCBkZXBlbmQgb24gY3BwbGliLmggb3IgY3BwaGFzaC5oLgoJKGZpeC1oZWFkZXIubyk6IERvbid0IGRlcGVuZCBvbiBjcHBoYXNoLmguCgoJKiBzY2FuLmMgKGhhc2hzdHIpOiBOZXcgZnVuY3Rpb24uCgkqIHNjYW4uaDogUHJvdG90eXBlIGl0LgoJKiBmaXgtaGVhZGVyLmM6IERvbid0IGluY2x1ZGUgY3BwaGFzaC5oLiAgVXNlIGhhc2hzdHIuCgkqIGdlbi1wcm90b3MuYzogRG9uJ3QgaW5jbHVkZSBjcHBoYXNoLmggb3IgY3BwbGliLmguICBVc2UKCWhhc2hzdHIuICBSZXBvcnQgaGFzaCB0YWJsZSBzdGF0aXN0aWNzLiAgQWRkIHByaXZhdGUKCWRlZmluaXRpb24gb2YgeHJlYWxsb2MuCgoyMDAwLTAyLTA4ICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBpMzg2LmggKFRBUkdFVF9TV0lUQ0hFUyk6IEZpeCB0eXBvIGluIG9wdGlvbiBuYW1lLgoKMjAwMC0wMi0wOCAgQ2xpbnRvbiBQb3BldHogIDxjcG9wZXR6QGN5Z251cy5jb20+CgoJKiBmdW5jdGlvbi5jICh0aHJlYWRfcHJvbG9ndWVfYW5kX2VwaWxvZ3VlX2luc25zKTogRG9uJ3QgcmVwbGFjZQoJanVtcHMgd2l0aCByZXR1cm5zIHVubGVzcyB0aGV5IGFyZSBqdW1wcyB0byB0aGUgZmFsbHRocnUgYmxvY2suCgpUdWUgRmViICA4IDA3OjUzOjU1IDIwMDAgIEphbiBIdWJpY2thICA8amhAc3VzZS5jej4KCgkqIGkzODYubWQgKGFkZHFpM19jYyk6IEZpeCBjb25zdHJhaW50cy4KClR1ZSBGZWIgIDggMDE6Mzk6NDUgMjAwMCAgSGFucy1QZXRlciBOaWxzc29uICA8aHBAYml0cmFuZ2UuY29tPgoKCSogZnVuY3Rpb24uYyAoZW1pdF9yZXR1cm5faW50b19ibG9jayk6IFdyYXAgaW4gI2lmZGVmIEhBVkVfcmV0dXJuLgoKMjAwMC0wMi0wNyAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGNwcGxpYi5jIChjcHBfZ2V0X3Rva2VuKTogQ2FsbCBDUFBfQlVNUF9MSU5FIGFmdGVyIHJlYWRpbmcgYQoJY2FycmlhZ2UgcmV0dXJuIGFmdGVyIGEgbWFjcm8gbmFtZS4KCjIwMDAtMDItMDcgIEZyZWQgRmlzaCAgPGZuZkBiZS5jb20+CgoJKiBpMzg2L2Jlb3MtZWxmLmg6IChBU01fSURFTlRJRllfR0NDKTogRGVmaW5lIHRvIG5vdGhpbmcKCXNvIHRoZSBnY2MyX2NvbXBpbGVkIHN5bWJvbCBkb2Vzbid0IGNvbmZ1c2UgQmVPUyBkZWJ1Z2dlcnMuCgoyMDAwLTAyLTA3ICBaYWNrIFdlaW5iZXJnICA8emFja0B3b2xlcnkuY3VtYi5vcmc+CgoJKiBjcHBmaWxlcy5jIChkZXBzX291dHB1dCk6IENvdW50IHNwYWNlcnMgaW4gZGVwc19jb2x1bW4uCgoyMDAwLTAyLTA3ICBOZWlsIEJvb3RoICA8TmVpbEJAZWFydGhsaW5nLm5ldD4KCgkqIGNwcGluaXQuYyAoaW5pdGlhbGl6ZV9kZXBlbmRlbmN5X291dHB1dCk6IElmIHRoZXJlIGlzIG5vCglzdWZmaXgsIGRvbid0IHRyeSB0byBsb29rIGZvciBrbm93biBzdWZmaXhlcy4gIFVzZSBzdHJyY2hyLgoJKGNwcF9zdGFydF9yZWFkKTogUmVtb3ZlIGR1cGxpY2F0ZSBpbml0aWFsaXphdGlvbi4KCk1vbiBGZWIgIDcgMTg6MzY6NDEgTUVUIDIwMDAgIEphbiBIdWJpY2thICA8amhAc3VzZS5jej4KCgkqIGNhbGxzLmMgKGNvbXB1dGVfYXJndW1lbnRfYmxvY2tfc2l6ZSk6IE5ldyBhcmd1bWVudAoJcHJlZmVycmVkX3N0YWNrX2JvdW5kYXJ5LgoJKGV4cGFuZF9jYWxsKTogdXBkYXRlIGNmdW4tPnByZWZlcnJlZF9zdGFja19ib3VuZGFyeSwgdXBkYXRlIGNhbGwgb2YKCWNvbXB1dGVfYXJndW1lbnRfYmxvY2tfc2l6ZQoJKGVtaXRfbGlicmFyeV9jYWxsKTogSW5jcmVhdGUgY2Z1bi0+cHJlZmVycmVkX3N0YWNrX2JvdW5kYXJ5Cgl0byBQUkVGRVJSRURfU1RBQ0tfQk9VTkRBUlkKCShlbWl0X2xpYnJhcnlfY2FsbF92YWx1ZSk6IExpa2V3aXNlLgoJKiBleHBsb3cuYyAoYWxsb2NhdGVfZHluYW1pY19zdGFja19zcGF2ZSk6IExpa2V3aXNlLgoJKiBmdW5jdGlvbi5jIChwcmVwYXJlX2Z1bmN0aW9uX3N0YXJ0KTogU2V0CgljZnVuLT5wcmVmZXJyZWRfc3RhY2tfYm91bmRhcnkKCSogZnVuY3Rpb24uaCAoc3RydWN0IGZ1bmN0aW9uKTogQWRkIHByZWZlcnJlZF9zdGFja19ib3VuZGFyeSBmaWVsZC4KCSogaW50ZWdyYXRlLmMgKGV4cGFuZF9pbmxpbmVfZnVuY3Rpb24pOiBVcGRhdGUKCWNmdW4tPnByZWZlcnJlZF9zdGFja19ib3VuZGFyeSBhbmQgY2Z1bi0+c3RhY2tfYWxpZ25tZW50X25lZWRlZC4KCShjb3B5X3J0eF9hbmRfc3Vic3RpdHV0ZSk6IEFsaWduIGZyYW1lIHRvIHN0YWNrX2FsaWdubWVudF9uZWVkZWQgb25seS4KCSogaTM4Ni5jIChjb21wdXRlX2ZyYW1lX3NpemUpOiBVc2UgY2Z1bi0+cHJlZmVycmVkX3N0YWNrX2JvdW5kYXJ5LgoKMjAwMC0wMi0wNiAgWmFjayBXZWluYmVyZyAgPHphY2tAd29sZXJ5LmN1bWIub3JnPgoKCSogY3BwbGliLmMgKG15X3N0cmVycm9yLCBjcHBfZXJyb3IsIGNwcF9lcnJvcl93aXRoX2xpbmUsCgljcHBfZXJyb3JfZnJvbV9lcnJubywgY3BwX3dhcm5pbmcsIGNwcF93YXJuaW5nX3dpdGhfbGluZSwKCWNwcF9wZWR3YXJuLCBjcHBfcGVkd2Fybl93aXRoX2xpbmUsCgljcHBfcGVkd2Fybl93aXRoX2ZpbGVfYW5kX2xpbmUpOiBNb3ZlIHRvIGNwcGVycm9yLmMuCgkoY3BwX3ByaW50X2ZpbGVfYW5kX2xpbmUsIHZfY3BwX2Vycm9yLCB2X2NwcF93YXJuaW5nLAoJdl9jcHBfZXJyb3Jfd2l0aF9saW5lLCB2X2NwcF93YXJuaW5nX3dpdGhfbGluZSwKCWNwcF9tZXNzYWdlX2Zyb21fZXJybm8sIGNwcF9wZXJyb3Jfd2l0aF9uYW1lKTogRGVsZXRlLgoKCSogY3BwZXJyb3IuYyAoY3BwX3ByaW50X2NvbnRhaW5pbmdfZmlsZXMpOiBUYWtlIHN0YXJ0aW5nCglidWZmZXIgYXMgYXJndW1lbnQuCgkoY3BwX2ZpbGVfbGluZV9mb3JfbWVzc2FnZSk6IFJlbmFtZSB0byBjcHBfcHJpbnRfZmlsZV9hbmRfbGluZS4KCSh2X2NwcF9tZXNzYWdlKTogTm93IGNhbGxlZCBkaXJlY3RseSBieSBhbGwgZW50cnkgcG9pbnRzLgoJUmVtb3ZlIC0xIGNhc2UuCgkoY3BwX3BmYXRhbF93aXRoX25hbWUsIGNwcF9tZXNzYWdlKTogRGVsZXRlLgoJKGNwcF9ub3RpY2VfZnJvbV9lcnJubywgY3BwX2ljZSk6IE5ldyBmdW5jdGlvbnMuCgkoY3BwX25vdGljZSk6IElzIG5vdyBmb3IgcmVwb3J0aW5nIGVycm9yIGNvbmRpdGlvbnMsIGp1c3QKCXdpdGhvdXQgYW4gYXNzb2NpYXRlZCBmaWxlLgoJKGNwcF9lcnJvciwgY3BwX2Vycm9yX3dpdGhfbGluZSk6IERvbid0IGRvIGFueXRoaW5nIGlmCglvcHRzLT5pbmhpYml0X2Vycm9ycyBpcyBvbi4KCShjcHBfcGVkd2Fybl93aXRoX2ZpbGVfYW5kX2xpbmUpOiBUYWtlIGNvbHVtbiBhcmd1bWVudCBhbHNvLgoKCSogY3BwbGliLmg6IFVwZGF0ZSBwcm90b3R5cGVzIG9mIGV4cG9ydGVkIGZ1bmN0aW9ucy4KCShzdHJ1Y3QgY3BwX29wdGlvbnMpOiBBZGQgaW5oaWJpdF9lcnJvcnMuCgoJKiBjcHBhbGxvYy5jLCBjcHBmaWxlcy5jOiBVc2UgZnByaW50ZiBub3QgY3BwX25vdGljZSBmb3IKCW5vbi1lcnJvciBtZXNzYWdlcy4gIEluY2x1ZGUgaW50bC5oLgoKCSogY3BwaW5pdC5jLCBjcHBtYWluLmM6IExpa2V3aXNlLiAgQWxzbywgdXNlCgljcHBfbm90aWNlX2Zyb21fZXJybm8gaW5zdGVhZCBvZiBjcHBfcGVycm9yX3dpdGhfbmFtZSBvcgoJY3BwX3BmYXRhbF93aXRoX25hbWUsIGFuZCBjcHBfbm90aWNlIGluc3RlYWQgb2YgY3BwX21lc3NhZ2UuCgoJKiBjcHBleHAuYywgY3BwaGFzaC5jLCBjcHBpbml0LmMsIGNwcGxpYi5jOiBVc2UgY3BwX2ljZSB0bwoJcmVwb3J0IGludGVybmFsIGVycm9ycy4KCgkqIGNwcGxpYi5jIChkb19kZWZpbmUpOiBTd2l0Y2ggYmNvcHkgdG8gbWVtY3B5LgoJR2l2ZSBjcHBfcGVkd2Fybl93aXRoX2ZpbGVfYW5kX2xpbmUgYSBkdW1teSBjb2x1bW4gYXJndW1lbnQuCgoJKiBjcHBsaWIuYyAoY29weV9yZXN0X29mX2xpbmUpOiBSZXZlcnQgcHJldmlvdXMgY2hhbmdlOiBkb24ndAoJYmFpbCBvdXQgZWFybHkgaWYgd2UgaGl0IGEgbGluZSBjb21tZW50LgoKMjAwMC0wMi0wNiAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAY3lnbnVzLmNvbT4KCgkqIGZsb3cuYyAoZmxvd19kZWxldGVfaW5zbiwgbWFrZV9lZGdlLCByZW1vdmVfZWRnZSk6IEV4cG9ydC4KCSogYmFzaWMtYmxvY2suaDogRGVjbGFyZSB0aGVtLgoJKiBlbWl0LXJ0bC5oIChhY3RpdmVfaW5zbl9wKTogTmV3LgoJKG5leHRfYWN0aXZlX2luc24sIHByZXZfYWN0aXZlX2luc24pOiBVc2UgaXQuCgkqIHJ0bC5oOiBEZWNsYXJlIGl0LgoJKiBmdW5jdGlvbi5jIChlbWl0X3JldHVybl9pbnRvX2Jsb2NrKTogTmV3LgoJKHRocmVhZF9wcm9sb2d1ZV9hbmRfZXBpbG9ndWVfaW5zbnMpOiBJbnNlcnQgcmV0dXJuIGluc25zIGluc3RlYWQKCW9mIGVwaWxvZ3VlcyB3aGVuIHBvc3NpYmxlLgoJKiBqdW1wLmMgKGp1bXBfb3B0aW1pemVfMSk6IFJlbW92ZSBjb2RlIHRvIGluc2VydCBhIHJldHVybiBpbnNuCglvbiB0aGUgZmFsbHRocnUgdG8gdGhlIGV4aXQgYmxvY2suCgoJKiBpMzg2LmMgKGl4ODZfY2FuX3VzZV9yZXR1cm5faW5zbl9wKTogRmFpbCBmb3IgbGFyZ2UgcG9wZWQgYXJncwoJYW5kIGZvciBub24tZW1wdHkgc3RhY2sgZnJhbWVzLgoJKiBpMzg2Lm1kIChyZXR1cm4pOiBFeHBhbmQgdG8gcmV0dXJuLXBvcCBhcyBuZWVkZWQuCgoyMDAwLTAyLTA2ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEBjeWdudXMuY29tPgoKCSogc2ltcGxpZnktcnR4LmMgKHNpbXBsaWZ5X3JlbGF0aW9uYWxfb3BlcmF0aW9uKTogQ2Fub25pY2FsaXplCgljb25zdGFudCB0byBvcDEgZm9yIHRlc3RpbmcuCgoyMDAwLTAyLTA2ICBNaWNoYWVsIEhheWVzICA8bS5oYXllc0BlbGVjLmNhbnRlcmJ1cnkuYWMubno+CgoJKiBjb25maWcvYzR4L2M0eC5tZCAoKmxkaV9vbl9vdmVyZmxvdyk6IE5ldyBwYXR0ZXJuLgoJKGZpeHVuc190cnVuY3FmcWkyKTogVXNlIGl0LgoKMjAwMC0wMi0wNiAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAY3lnbnVzLmNvbT4KCgkqIGkzODYuYyAoaXg4Nl9hZ2lfZGVwZW5kYW50KTogSGFuZGxlIHByb19lcGlsb2d1ZV9hZGp1c3Rfc3RhY2sKCWFzIGEgVFlQRV9MRUEgaW5zbi4KCgkqIGkzODYubWQgKHdpZGVuaW5nIGFuZCBwZWVwaG9sZXMpOiBNYXNrIHRoZSBjb25zdGFudCBpbnN0ZWFkIG9mCgl1c2luZyBnZW5fbG93cGFydC4KCjIwMDAtMDItMDUgIFphY2sgV2VpbmJlcmcgIDx6YWNrQHdvbGVyeS5jdW1iLm9yZz4KCgkqIGNwcGZpbGVzLmMgKHJlYWRfYW5kX3ByZXNjYW4pIFtjYXNlIFNQRUNDQVNFX1FVRVNUSU9OXTogQnVtcAoJaW5wdXQgcG9pbnRlciBiZWZvcmUgcG9zc2libHkgYnJhbmNoaW5nIG9mZiB0byB0aGUgYmFja3NsYXNoCgljb2RlLgoJKiBjcHBoYXNoLmMgKG1hY3JvZXhwYW5kKTogQ29ycmVjdGx5IGRlbGV0ZSBcciBlc2NhcGVzIHdoZW4KCXN0cmluZ2lmeWluZyBwYXJhbWV0ZXJzLgoJKiBjcHBsaWIuYyAoY29weV9yZXN0X29mX2xpbmUpOiBHbyBkaXJlY3RseSB0byBza2lwX2Jsb2NrX2NvbW1lbnQKCWlmIHdlIGNhbjsgYmFpbCBvdXQgZWFybHkgaWYgd2UgaGl0IGEgbGluZSBjb21tZW50LgoJKGhhbmRsZV9kaXJlY3RpdmUpOiBUcmVhdCAnIyAxMjMnIGluIGFuIC5TIGZpbGUganVzdCBsaWtlCgknIyA8cHVuY3R1YXRpb24+Jy4gIERpc2NhcmQgdGhlIHNoaWZ0ZWQgJyMnIGlmIHdlIGhpdCAnI1xuJy4KCVJldHVybiAxIGZvciAnIyBub3RfYV9kaXJlY3RpdmUnLgoJKGdldF9kaXJlY3RpdmVfdG9rZW4pOiBQb3AgbWFjcm8gYnVmZmVycyBoZXJlLCBzbyB0aGF0CgljcHBfZ2V0X3Rva2VuIGNhbid0IHNuZWFraWx5IG1vdmUgcGFzdCBhIG5ld2xpbmUuCglBZGQgc2FuaXR5IGNoZWNrcy4KCShjcHBfZ2V0X3Rva2VuKTogZ290byByYW5kb21jaGFyIGlmIGhhbmRsZV9kaXJlY3RpdmUgcmV0dXJucyAwLgoKCSogY3BwYWxsb2MuYzogVXBkYXRlIGNvcHlyaWdodC4KCSogY3BwbGliLmM6IE1lcmdlIGFsbCB0aGUgc3RhdGljIGZ1bmN0aW9uIHByb3RvdHlwZXMgaW50byBvbmUKCWJsb2NrLgoJKiBjcHBsaWIuaDogUmVtb3ZlICNpZiAwIGJsb2NrLgoKCSogY3BwZXJyb3IuYzogUmVtb3ZlICNpZmRlZiBFTUFDUyBibG9jay4KCSogY3BwbWFpbi5jOiBMaWtld2lzZS4KCSogY3BwaGFzaC5jOiBSZW1vdmUgI2lmIDAgYmxvY2tzLgoJKiBjcHBpbml0LmM6IFJlbW92ZSAjaWYgMCBibG9ja3MsIGFuZCB0aGUgLWxpbnQgb3B0aW9uLgoJKiBjcHBsaWIuYzogUmVtb3ZlICNpZiAwIGJsb2NrcyBhbmQgY29kZSByZWZlcmVuY2luZwoJcGNwX2luc2lkZV9pZiBvciBmb3JfbGludC4gIFJlbW92ZSBkdXBsaWNhdGUgZXJyb3IgbWVzc2FnZS4KCUZpeCBlcnJvciBtZXNzYWdlcyBmb3IgI2Vsc2UgYWZ0ZXIgI2Vsc2Ugb3IgI2VsaWYuICBSZWZvcm1hdC4KCVJlbW92ZSBhcmNoYWljIFRPRE8gbGlzdC4KCSogY3BwbGliLmg6IFJlbW92ZSBwY3BfaW5zaWRlX2lmIGFuZCBmb3JfbGludCBmbGFncy4KCjIwMDAtMDItMDUgIFphY2sgV2VpbmJlcmcgIDx6YWNrQHdvbGVyeS5jdW1iLm9yZz4KCgkqIGkzODYvb3NmMWVsZi5oOiBBZGQgbWlzc2luZyBiYWNrc2xhc2ggdG8gbXVsdGlsaW5lIHN0cmluZy4KCjIwMDAtMDItMDUgIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIGxvbmdsb25nLmggW3NwYXJjXSAodWRpdl9xcm5uZCk6IEF2b2lkIHN0cmluZ2lmeWluZyBtYWNybyBhcmcuCgoyMDAwLTAyLTA1ICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBNYWtlZmlsZS5pbiAoYy1jb21tb24ubyk6IERlcGVuZCBvbiAkKEVYUFJfSCkuCgoJKiBjLWNvbW1vbi5jOiBJbmNsdWRlIGV4cHIuaC4KCgkqIGMtcHJhZ21hLmMgKG1hcmtfYWxpZ25fc3RhY2spOiBBZGQgcHJvdG90eXBlLgoKCSogY2FsbGVyLXNhdmUuYyAoYWRkX3N0b3JlZF9yZWdzKTogTGlrZXdpc2UuCgoJKiBjb21iaW5lLmMgKHJlY29yZF9wcm9tb3RlZF92YWx1ZSk6IExpa2V3aXNlLgoKCSogaTM4Ni5jIChpeDg2X3NjaGVkX3Jlb3JkZXJfcGVudGl1bSwgaXg4Nl9zY2hlZF9yZW9yZGVyX3Bwcm8pOgoJTGlrZXdpc2UuCgoJKiBjcHBpbml0LmMgKG5ld19wZW5kaW5nX2RlZmluZSk6IExpa2V3aXNlLgoKCSogY3BwbGliLmMgKHNraXBfYmxvY2tfY29tbWVudCwgc2tpcF9saW5lX2NvbW1lbnQpOiBMaWtld2lzZS4KCgkqIGR3YXJmMm91dC5jIChzYXZlX3J0eCwgc3BsaWNlX2NoaWxkX2RpZSwgcmV2ZXJzZV9kaWVfbGlzdHMsCglBVF9jbGFzcywgQVRfZmxhZywgQVRfaW50LCBBVF91bnNpZ25lZCwgQVRfc3RyaW5nLCBBVF9yZWYsIEFUX2xvYywKCUFUX2FkZHIsIEFUX2xibCwgZ2V0X0FUX3JlZiwgZnJlZV9BVCwgZnJlZV9kaWUsIGxvY2FsX3Njb3BlX3AsCgljbGFzc19zY29wZV9wKTogTGlrZXdpc2UuCgoJKiBkd2FyZjJvdXQuaCAoZHdhcmYyb3V0X3NldF9kZW1hbmdsZV9uYW1lX2Z1bmMsCglkd2FyZjJvdXRfYWRkX2xpYnJhcnlfdW5pdF9pbmZvKTogTGlrZXdpc2UuCgoJKiBnZ2MuaCAoZ2djX3BhZ2VfcHJpbnRfc3RhdGlzdGljcyk6IExpa2V3aXNlLgoKCSogaGFpZmEtc2NoZWQuYyAocHJvcGFnYXRlX2RlcHMpOiBMaWtld2lzZS4KCgkqIHJlZy1zdGFjay5jIChuZXh0X2ZsYWdzX3VzZXIsIHJlY29yZF9sYWJlbF9yZWZlcmVuY2VzKTogTGlrZXdpc2UuCgoJKiBydGwuaCAoc2V0X3N0YWNrX2NoZWNrX2xpYmZ1bmMpOiBMaWtld2lzZS4KCgkqIHRvcGxldi5oIChzZXRfZmF0YWxfZnVuY3Rpb24pOiBMaWtld2lzZS4KCgkqIHRvcGxldi5jIChzZXRfZmF0YWxfZnVuY3Rpb24pOiBEZWxldGUgcHJvdG90eXBlLgoKCSogZGlhZ25vc3RpYy5jOiBEZWNvbnN0aWZ5IGZ1bmN0aW9ucyByZXR1cm5pbmcgbWFsbG9jJ2VkIHB0cnMuCgoyMDAwLTAyLTA1ICBHZW9mZiBLZWF0aW5nICA8Z2VvZmZrQGN5Z251cy5jb20+CgoJKiBnaW5jbHVkZS9wcGMtYXNtLmggKEZVTkNfU1RBUlQpOiBVc2UgVVNFUl9MQUJFTF9QUkVGSVguCgkoRlVOQ19FTkQpOiBMaWtld2lzZS4KCjIwMDAtMDItMDUgIE1pY2hhZWwgSGF5ZXMgIDxtLmhheWVzQGVsZWMuY2FudGVyYnVyeS5hYy5uej4KCgkqIGNhbGxlci1zYXZlLmM6IEluY2x1ZGUgdG1fcC5oLgoKMjAwMC0wMi0wNSAgTWljaGFlbCBIYXllcyAgPG0uaGF5ZXNAZWxlYy5jYW50ZXJidXJ5LmFjLm56PgoKCSogTWFrZWZpbGUuaW4gKGxpYmdjYy5hKTogQWRkICQoTElCR0NDMSkgdG8gbGliZ2NjLmEgYWZ0ZXIgJChMSUJHQ0MyKS4KCjIwMDAtMDItMDQgIE5laWwgQm9vdGggIDxOZWlsQkBlYXJ0aGxpbmcubmV0PgoKCSogY2NjcC5jIChtYWluKTogQ2hlY2sgJ2RpcicgZm9yIGEgTlVMTCBwb2ludGVyIGJlZm9yZSBwYXNzaW5nCglpdCB0byBzdHJjbXAuCgoyMDAwLTAyLTA0ICBaYWNrIFdlaW5iZXJnICA8emFja0B3b2xlcnkuY3VtYi5vcmc+CgoJKiByZWNvZy5oOiBSZW1vdmUgTk9fTURfUFJPVE9UWVBFUyBpZmRlZnMuCgkqIGdlbmZsYWdzLmM6IFVzZSB0aGUgbWF4X29wZXJhbmRfMSBsb2dpYyBmcm9tIGdlbmVtaXQuYyB0bwoJY2FsY3VsYXRlIGhvdyBtYW55IGFyZ3VtZW50cyBnZW5faW5zbiBwcm90b3R5cGVzIGhhdmUuICBSZW1vdmUKCU5PX01EX1BST1RPVFlQRVMgaWZkZWZzIGZyb20gdGhlIGdlbmVyYXRlZCBmaWxlLgoJKiBnZW5vdXRwdXQuYzogRG9uJ3QgZGVmaW5lIE5PX01EX1BST1RPVFlQRVMgaW4gdGhlIGdlbmVyYXRlZAoJZmlsZS4gIENhc3QgZ2VuX2luc24gaW5pdGlhbGl6ZXJzIHRvIGluc25fZ2VuX2ZuLgoJKiBjb25maWcvYWxwaGEvdm1zLmg6IERvbid0IGRlZmluZSBOT19NRF9QUk9UT1RZUEVTLgoJKiBnY2MudGV4aTogUmVtb3ZlIGRvY3VtZW50YXRpb24gb2YgTk9fTURfUFJPVE9UWVBFUy4KCjIwMDAtMDItMDQgIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIGZpeGluYy9NYWtlZmlsZS5pbiAoSERSKTogQWRkIG1hY2huYW1lLmguCgkoY2xlYW4pOiBMaWtld2lzZS4KCjIwMDAtMDItMDUgIE1pY2hhZWwgSGF5ZXMgIDxtLmhheWVzQGVsZWMuY2FudGVyYnVyeS5hYy5uej4KCgkqIGNvbmZpZy9jNHgvYzR4LmggKGM0eF9jb21wYXJlX29wMCwgYzR4X2NvbXBhcmVfb3AxKTogTW92ZSAuLi4KCShjNHhfcmVnY2xhc3NfbWFwLCBjNHhfY2FsbGVyX3NhdmVfbWFwLCBjNHhfcnB0c19jeWNsZXMpOiBEaXR0by4KCShjNHhfY3B1X3ZlcnNpb24pOiBEaXR0by4KCSogY29uZmlnL2M0eC9jNHgtcHJvdG9zLmg6IC4uLiBoZXJlLgoKMjAwMC0wMi0wNCAgSmFzb24gTWVycmlsbCAgPGphc29uQGNhc2V5LmN5Z251cy5jb20+CgoJKiBkd2FyZjJvdXQuYyAoYWRkX2Fic3RyYWN0X29yaWdpbl9hdHRyaWJ1dGUpOiBEb24ndCBjYWxsCglnZW5fYWJzdHJhY3RfZnVuY3Rpb24gb24gb3VyIGNvbnRleHQgaWYgd2UncmUgYSBuZXN0ZWQgZnVuY3Rpb24uCgoyMDAwLTAyLTA1ICBNaWNoYWVsIEhheWVzICA8bS5oYXllc0BlbGVjLmNhbnRlcmJ1cnkuYWMubno+CgoJKiBjb25maWcvYzR4L2M0eC5tZCAoZml4dW5zX3RydW5jcWZxaTIpOiBSZXdyaXRlLgoJKiBjb25maWcvYzR4L2xpYmdjYy5TICh1Zml4X3RydW5jcWZoaTJuKTogRml4LgoKMjAwMC0wMi0wNCAgQnJ1Y2UgS29yYiAgPGJrb3JiQGdudS5vcmc+CgoJKiBmaXhpbmMvZ2VuZml4ZXMobWFjaG5hbWUuaCk6CglNb3ZlIHRoZSBmdW5jdGlvbmFsaXR5IGZyb20gZ2VuLW1hY2hpbmUuaCBpbnRvIHRoaXMgZmlsZS4KCVVOZGVmIE1OX05BTUVfUEFUIGlmIHRoZXJlIGFyZSBubyBuYW1lcyB0byBjaGFuZ2UuCglBbHNvLCBiZSBhIGxpdHRsZSBraW5kZXIgd2hlbiBBdXRvR2VuIGlzIG5vdCBwcmVzZW50LgoKCSogZml4aW5jL01ha2VmaWxlLmluKG1hY2huYW1lLmgpOgoJQ2hhbmdlIHRoZSBnZW5lcmF0aW9uIHJ1bGUgdG8gdXNlIGdlbmZpeGVzLgoKCSogZml4aW5jL2ZpeGZpeGVzLmMobWFjaGluZV9uYW1lKToKCW1hY2hpbmVfbmFtZV9maXgncyBmdW5jdGlvbmFsaXR5IG5vdyBkZXBlbmRlbnQgdXBvbiB3aGV0aGVyCglNTl9OQU1FX1BBVCBpcyBkZWZpbmVkLgoKCSogZml4aW5jL2ZpeHRlc3RzLmMobWFjaGluZV9uYW1lKToKCWRpdHRvLgoKCSogZml4aW5jL2ZpeGxpYi5jKG1uX2dldF9yZWdleHBzKTogY29uZGl0aW9uYWwgb24gZGVmaW5pdGlvbgoJb2YgTU5fTkFNRV9QQVQuCgoJKiBmaXhpbmMvZml4bGliLmgobW5fZ2V0X3JlZ2V4cHMpOgoJZGl0dG8KCgkqIGZpeGluYy9nZW4tbWFjaGluZS5oOiBERUxFVEVECgoyMDAwLTAyLTA0ICBKYW4gSHViaWNrYSAgPGpoQHN1c2UuY3o+CgkgICAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAY3lnbnVzLmNvbT4KCgkqIGkzODYuYyAoU0FWRV9SRUdTX0ZJUlNUKTogUmVtb3ZlLgoJKGl4ODZfaW5pdGlhbF9lbGltaW5hdGlvbl9vZmZzZXQpOiBIYW5kbGUgb25seSBTQVZFX1JFR1NfRklSU1QgbW9kZS4KCShpeDg2X2NvbXB1dGVfZnJhbWVfc2l6ZSk6IExpa2V3aXNlLgoJKGl4ODZfZXhwYW5kX3Byb2xvZ3VlKTogTGlrZXdpc2UuICBVc2UgcHJvX2VwaWxvZ3VlX2FkanVzdF9zdGFjay4KCShpeDg2X2VtaXRfcmVzdG9yZV9yZWdzKTogUmVtb3ZlLgoJKGl4ODZfZW1pdF9lcGlsb2d1ZV9lc3BfYWRqdXN0bWVudCk6IFVzZSBwcm9fZXBpbG9ndWVfYWRqdXN0X3N0YWNrCgl3aGVuIGEgZnJhbWUgcG9pbnRlciBpcyBpbiB1c2UuCgkoaXg4Nl9leHBhbmRfZXBpbG9ndWUpOiBIYW5kbGUgb25seSBTQVZFX1JFR1NfRklSU1QgbW9kZS4gIFVzZSBtb3YKCWluc3RlYWQgb2YgcG9wIHRvIHJlc3RvcmUgYSByZWdpc3RlciB3aGVuIHByb2ZpdGFibGU7IGVtaXQgbGVhdmUKCXdoZW4gcHJvZml0YWJsZS4KCShpeDg2X2F0dHJfbGVuZ3RoX2RlZmF1bHQpOiBIYW5kbGUgcHJvX2VwaWxvZ3VlX2FkanVzdF9zdGFjawoJYXMgYSBUWVBFX0xFQSBpbnNuLgoJKGl4ODZfYWRqdXN0X2Nvc3QpOiBIYW5kbGUgcHJvX2VwaWxvZ3VlX2FkanVzdF9zdGFjayBhcyBUWVBFX0FMVS4KCSogaTM4Ni5tZCAocHJvbG9ndWVfYWxsb2NhdGVfc3RhY2spOiBSZW1vdmUuCgkoZXBpbG9ndWVfZGVhbGxvY2F0ZV9zdGFjayk6IFJlbW92ZS4KCShwcm9fZXBpbG9ndWVfYWRqdXN0X3N0YWNrKTogTmV3LgoKMjAwMC0wMi0wNCAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAY3lnbnVzLmNvbT4KCgkqIGZ1bmN0aW9uLmMgKGRpZGRsZV9yZXR1cm5fdmFsdWUpOiBSZXdvcmsgdG8gdXNlIGEgY2FsbGJhY2sgZnVuY3Rpb24uCglVc2UgY3VycmVudF9mdW5jdGlvbl9yZXR1cm5fcnR4IGlmIGl0J3MgYmVlbiBzZXQgdXAuCgkoZG9fY2xvYmJlcl9yZXR1cm5fcmVnLCBjbG9iYmVyX3JldHVybl9yZWdpc3Rlcik6IE5ldy4KCShkb191c2VfcmV0dXJuX3JlZywgdXNlX3JldHVybl9yZWdpc3Rlcik6IE5ldy4KCShleHBhbmRfZnVuY3Rpb25fZW5kKTogVXNlIHRoZW0uCgkqIHN0bXQuYyAoZXhwYW5kX251bGxfcmV0dXJuKTogTGlrZXdpc2UuCgkqIGZ1bmN0aW9uLmg6IERlY2xhcmUgdGhlbS4KCSogZmxvdy5jIChtYXJrX3JlZ3NfbGl2ZV9hdF9lbmQpOiBVc2UgZGlkZGxlX3JldHVybl92YWx1ZS4KCShtYXJrX3JlZyk6IENoYW5nZSBhcmd1bWVudHMgYXMgYXBwcm9wcmlhdGUgZm9yIGNhbGxiYWNrLgoJKiBpbnRlZ3JhdGUuYyAoZXhwYW5kX2lubGluZV9mdW5jdGlvbik6IFJldmVydCAxOSBKYW4gY2hhbmdlLgoKRnJpIEZlYiAgNCAyMDoyNTo0MiAyMDAwICBIYW5zLVBldGVyIE5pbHNzb24gIDxocEBiaXRyYW5nZS5jb20+CgoJKiB0bS50ZXhpIChWYWx1ZXMgaW4gUmVnaXN0ZXJzKTogRml4IHR5cG86ICJmbyIgImZvciIuCgkoTWlzYyk6IFNheSB0aGUgc2NoZWR1bGVyLCBub3QgdGhlIEhhaWZhIHNjaGVkdWxlci4KCjIwMDAtMDItMDQgIENsaW50b24gUG9wZXR6ICA8Y3BvcGV0ekBjeWdudXMuY29tPgoKCSoganVtcC5jIChtYXJrX2p1bXBfbGFiZWwpOiBBZGQgaW5fbWVtIHBhcmFtLCBjaGVjayBTWU1CT0xfUkVGcwoJd2hlbiBpbl9tZW0gaXMgc2V0LiAgVXBkYXRlIGFsbCBjYWxsZXJzLgoKMjAwMC0wMi0wNCAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAY3lnbnVzLmNvbT4KCgkqIGkzODYvb3BlbmJzZC5oIChJTlRfQVNNX09QKTogRGVmaW5lLgoKRnJpIEZlYiAgNCAxMDo1MTozMCAyMDAwICBIYW5zLVBldGVyIE5pbHNzb24gIDxocEBiaXRyYW5nZS5jb20+CgoJKiB0bS50ZXhpOiBGaXggdmFyaW91cyB0eXBvcy4KClRodSBGZWIgIDMgMTc6MTc6MzIgMjAwMCAgU3RldmUgRWxsY2V5IDxzamVAY3VwLmhwLmNvbT4KCgkqIGNvbmZpZy9wYS9wYS1ocHV4MTEuaCAoTElCX1NQRUMpOiBDb3JyZWN0IHR5cG8gaW4gIXAgY2FzZS4KCShNRF9TVEFSVEZJTEVfUFJFRklYXzEpOiBOZXcgbWFjcm8uCgpUaHUgRmViICAzIDE1OjA4OjEzIE1FVCAyMDAwICBKYW4gSHViaWNrYSAgPGpoQHN1c2UuY3o+CgoJKiBpMzg2Lm1kIChtb3ZzdHJzaSwgY2xyc3Ryc2kpOiBTdXBwb3J0IHZhcmlhYmxlIHNpemVkIGNvcGllcywgYWxpZ24KCWRlc3RpbmF0aW9uIHdoZW4gbmVlZGVkLgoJKHN0cm1vdnNpLCBzdHJzZXRzaSk6IE5ldyBleHBhbmRlci4KCShzdHJtb3ZzaV8xLCBzdHJzZXRzaV8xKTogTmV3IHBhdHRlcm4uCgkqIGkzODYuaCAoTUFTS19OT19BTElHTl9TVFJPUCwgTUFTS19JTkxJTkVfQUxMX1NUUk9QLAoJVEFSR0VUX0FMSUdOX1NUUklOR09QUywgVEFSR0VUX0lOTElORV9BTExfU1RSSU5HT1BTKTogTmV3IG1hY3Jvcy4KCShUQVJHRVRfU1dJVENIRVMpIEFkZCBhbGlnbi1zdHJpbmdvcHMgYW5kIGlubGluZS1hbGwtc3RyaW5nb3BzLgoJKiBpbnZva2UudGV4aSAoYWxpZ24tc3RyaW5nb3BzLCBpbmxpbmUtYWxsLXN0cmluZ29wcyk6IERvY3VtZW50LgoKV2VkIEZlYiAgMiAyMzowNDo0NyAyMDAwICAgS3Jpc3RlciBXYWxmcmlkc3NvbiA8Y2F0b0BkZi5sdGguc2U+CgoJKiBpMzg2L25ldGJzZC5oIChJTlRfQVNNX09QKTogRGVmaW5lLgoKMjAwMC0wMi0wMiAgWmFjayBXZWluYmVyZyAgPHphY2tAd29sZXJ5LmN1bWIub3JnPgoKCSogY3BwbGliLmggKGNwcF9yZWFkZXIpOiBBZGQgbmV3IGZsYWcsIG5vX2RpcmVjdGl2ZXMuCgkqIGNwcGhhc2guYyAobWFjYXJnKTogU2V0IGl0LgoJKiBjcHBsaWIuYyAoaGFuZGxlX2RpcmVjdGl2ZSk6IElmIG5vX2RpcmVjdGl2ZXMgaXMgb24gYW5kIHdlCglmaW5kIGEgZGlyZWN0aXZlLCBpc3N1ZSBhbiBlcnJvciBhbmQgZGlzY2FyZCB0aGUgbGluZS4KCldlZCBGZWIgIDIgMTM6MDc6MTAgMjAwMCAgSmltIFdpbHNvbiAgPHdpbHNvbkBjeWdudXMuY29tPgoKCSogY29uZmlnL3NwYXJjL3NwYXJjLmggKFBSRUZFUlJFRF9SRUxPQURfQ0xBU1MpOiBEZWxldGUgJ0UnIGNoZWNrIGZvcgoJRlAgY29uc3RhbnRzLiAgQWRkICEgVEFSR0VUX0ZQVSBjaGVjayBmb3IgRlAgY29uc3RhbnRzLgoKMjAwMC0wMi0wMiAgQ2xpbnRvbiBQb3BldHogIDxjcG9wZXR6QGN5Z251cy5jb20+CgoJKiBmbG93LmMgKGZpbmRfYmFzaWNfYmxvY2tzKTogRG9uJ3Qga2lsbCBsYWJlbF92YWx1ZV9saXN0CgloZXJlLgoJKGNsZWFudXBfY2ZnKTogS2lsbCBpdCBoZXJlLgoKV2VkIEZlYiAgMiAwODoxMjozMCAyMDAwICBSaWNoYXJkIEtlbm5lciAgPGtlbm5lckB2bHNpMS51bHRyYS5ueXUuZWR1PgoKCSogZXhwci5jIChzdG9yZV9maWVsZCk6IEVuc3VyZSBBTElHTiBpcyBubyBzdHJpY3RlciB0aGFuIHRoZQoJYWxpZ25tZW50IG9mIEVYUC4KCjIwMDAtMDItMDIgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgoJKiBqdW1wLmMgKGRlbGV0ZV9pbnNuKTogUGFydGlhbGx5IHJldmVydCAxOSBKYW4gY2hhbmdlOwoJZG9uJ3QgY29udmVydCB1bnVzZWQgY29kZSBsYWJlbHMgdG8gbm90ZXMgYXQgLU8wLgoKMjAwMC0wMi0wMiBIZXJtYW4gQS5KLiB0ZW4gQnJ1Z2dlIDxIYWouVGVuLkJydWdnZUBuZXQuSENDLm5sPgoKCSogdG9wbGV2LmMgKHJlc3Rfb2ZfY29tcGlsYXRpb24pOiBSdW4gcmVidWlsZF9qdW1wX2xhYmVscyBhZnRlcgoJc3BsaXRfYWxsX2luc25zIHRvIHJlY3JlYXRlIFJFR19MQUJFTCBub3RlcyBmb3IgZmxvdzIgcGFzcy4KCjIwMDAtMDItMDEgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgoJKiBpMzg2LmMgKGdlbmVyYWxfbm9fZWxpbV9vcGVyYW5kKTogTmV3LgoJKG5vbm1lbW9yeV9ub19lbGltX29wZXJhbmQpOiBOZXcuCgkoaXg4Nl9leHBhbmRfbW92ZSk6IENvcHkgZWxpbWluYWJsZSBvcGVyYW5kcyBiZWZvcmUgYSBwdXNoLgoJKiBpMzg2LXByb3Rvcy5oOiBEZWNsYXJlIG5ldyBmdW5jdGlvbnMuCgkqIGkzODYuaCAoQ0FOX0VMSU1JTkFURSk6IFNpbXBsaWZ5LgoJKFBSRURJQ0FURV9DT0RFUyk6IFVwZGF0ZS4KCSogaTM4Ni5tZCAocHVzaCBpbnNucyk6IERvbid0IGFsbG93IGVsaW1pbmFibGUgcmVnaXN0ZXIgb3BlcmFuZHMuCgoyMDAwLTAyLTAxICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEBjeWdudXMuY29tPgoKCSogZmxvdy5jIChtYXJrX3JlZ3NfbGl2ZV9hdF9lbmQpOiBGb2xsb3cgZXhwYW5kX2Z1bmN0aW9uX2VuZCBhbmQKCXJlcGxhY2UgQkxLbW9kZSB3aXRoIERFQ0xfUlRMJ3MgbW9kZS4KCjIwMDAtMDItMDEgIFphY2sgV2VpbmJlcmcgIDx6YWNrQHdvbGVyeS5jdW1iLm9yZz4KCgkqIGZyYW1lLmMgKGZpbmRfZmRlKTogQ29udmVydCBmb3IgbG9vcCB0byBkby13aGlsZSBzbyBjb21waWxlcgoJc2VlcyBpdCdzIGFsd2F5cyBleGVjdXRlZCBhdCBsZWFzdCBvbmNlLgoJKiBsaWJnY2MyLmMgKEJCSU5CVUZTSVpFKTogS2lsbC4KCShfX2JiX2luaXRfcHJnKTogVXNlIGZnZXRzLgoJKF9fYmJfZXhpdF90cmFjZV9mdW5jKTogRG9uJ3QgcGFzdGUgc3RyaW5ncy4KCSogdW5yb2xsLmMgKHVucm9sbF9sb29wKTogSW5pdGlhbGl6ZSB1bnJvbGxfdHlwZSwgbm90Cgl1bnJvbGxfbnVtYmVyLCBhbmQgdHdlYWsgbG9naWMgdG8gbWF0Y2guCgoJKiBpMzg2LmMgKGl4ODZfZXhwYW5kX2ludF9tb3ZjYyk6IEFkZCBleHBsaWNpdCAncmV0dXJuIDAnIGluCglhbGwgZmFpbHVyZSBwYXRocy4KCShpeDg2X2ZsYWdzX2RlcGVuZGFudCk6IExpa2V3aXNlLiAgRGlzZW50YW5nbGUgY29udHJvbCBmbG93LgoJKGl4ODZfc2NoZWRfcmVvcmRlcik6IEJyZWFrIGd1dHMgb3V0IHRvCglpeDg2X3NjaGVkX3Jlb3JkZXJfcGVudGl1bSBhbmQgaXg4Nl9zY2hlZF9yZW9yZGVyX3Bwcm8uCgkoaXg4Nl9zY2hlZF9yZW9yZGVyX3Bwcm8pOiBJbml0aWFsaXplIHBhaXIyIGFuZCBpbnNucCBiZWZvcmUKCWFueSBwb3NzaWJsZSB1c2UuCgoJKiBpMzg2LmggKE1BQ0hJTkVfU1RBVEVfU0FWRSwgTUFDSElORV9TVEFURV9SRVNUT1JFKTogRG9uJ3QKCXVzZSBzdHJpbmcgY29uY2F0ZW5hdGlvbi4gIERvbid0IHNhdmUgYW5kIHJlc3RvcmUgZXNpLgoKCSogZml4aW5jL01ha2VmaWxlLmluIChmaXhpbmNsLnNoKTogRG9uJ3QgZGVwZW5kIG9uIGluY2xoYWNrLmRlZi4KCShtYWNobmFtZS5oKTogUmVtb3ZlIHNjcmlwdCB0byBzZXBhcmF0ZSBmaWxlLiAgVXNlIHR3by1zdGVwCglzZXF1ZW5jZSBzbyB0YXJnZXQgaXMgbm90IGNyZWF0ZWQgaWYgc2NyaXB0IGZhaWxzLgoJKiBmaXhpbmMvZ2VuLW1hY2huYW1lLmg6IE5ldyBmaWxlLiAgSGFuZGxlIGNhc2Ugd2hlcmUgbm8gbm9uLXJlc2VydmVkCglpZGVudGlmaWVycyBhcmUgZGVmaW5lZC4KCSogZml4aW5jL2ZpeGxpYi5jIChtbl9nZXRfcmVnZXhwcyk6IFJldHVybiBhIGZsYWc6IGlmIE1OX05BTUVfUEFUIGlzCglhbiBlbXB0eSBzdHJpbmcsIG1hY2hpbmVfbmFtZSBkb2Vzbid0IG5lZWQgdG8gZG8gYW55dGhpbmcgYXQKCWFsbC4KCShpc19jeHhfaGVhZGVyKTogQWRkIG1vcmUgY2FzZXMgdG8gcmVnZXhwLgoJKiBmaXhpbmMvZml4bGliLmg6IFVwZGF0ZSBwcm90b3R5cGUuCgkqIGZpeGluYy9maXh0ZXN0cy5jLCBmaXhpbmMvZml4Zml4ZXMuYzogVXBkYXRlIGNhbGxlcnMgb2YKCW1uX2dldF9yZWdleHBzLgoJKiBmaXhpbmMvZml4aW5jbC5jOiBEZWZpbmUgTk9fQk9HT1NJVFkuCgoJKiBmaXhpbmMvaW5jbGhhY2suZGVmIChub19kb3VibGVfc2xhc2gsIGVsc2VfZW5kaWZfbGFiZWwpOiBJZmRlZiBvdXQuCgkoaHBfc3lzZmlsZSk6IEFkZCBtaXNzaW5nIGNvbW1hLgoJKG1hdGhfZXhjZXB0aW9uKTogUHV0IHRoZSB3cmFwcGVyIGlmZGVmcyBhdCB0aGUgYmVnaW5uaW5nIGFuZAoJdGhlIGVuZCBvZiB0aGUgZmlsZS4KCSogZml4aW5jL2ZpeGluY2wueCwgZml4aW5jL2luY2xoYWNrLnNoOiBSZWdlbmVyYXRlLgoKMjAwMC0wMi0wMSAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAY3lnbnVzLmNvbT4KCgkqIHNwYXJjLmMgKGZwX3plcm9fb3BlcmFuZCk6IFR1cm4gaW50byBhIG5vcm1hbCBwcmVkaWNhdGUuCglVc2UgQ09OU1QwX1JUWC4gIFVwZGF0ZSBhbGwgY2FsbGVycy4KCSogc3BhcmMuaCwgc3BhcmMtcHJvdG9zLmg6IFVwZGF0ZSBhY2NvcmRpbmdseS4KCSogc3BhcmMubWQgKGZwIG1vdiBpbnNucyk6IFVzZSBmcF96ZXJvX29wZXJhbmQgZGlyZWN0bHkKCXdoZXJlIGFwcGxpY2FibGUuCgpXZWQgRmViICAyIDAyOjU5OjQ1IDIwMDAgIEhhbnMtUGV0ZXIgTmlsc3NvbiAgPGhwQGJpdHJhbmdlLmNvbT4KCgkqIHRtLnRleGkgKFZhbHVlcyBpbiBSZWdpc3RlcnMpOiBGaXggdHlwbyBpbiBIQVJEX1JFR05PX05SRUdTCglleGFtcGxlLgoKMjAwMC0wMi0wMSAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogTWFrZWZpbGUuaW4gKHNwZWNzLnJlYWR5KTogTmV3IHRhcmdldC4KCShmaXhpbmMuc2gpOiBEZXBlbmQgb24gYHNwZWNzLnJlYWR5JyBpbnN0ZWFkIG9mIGBzcGVjcycuCgoyMDAwLTAyLTAxICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBmaXhpbmMuaXJpeDogVXNlIHVuaXF1ZSBmaWxlbmFtZXMgZm9yIHdyaXRpbmcgaW50byAvdG1wLAoJKiBmaXhpbmMucHR4OiBMaWtld2lzZS4KCSogZml4aW5jLnNjbzogTGlrZXdpc2UuCgkqIGZpeGluYy5zdnI0OiBMaWtld2lzZS4KCSogZml4aW5jLndpbm50OiBMaWtld2lzZS4KCjIwMDAtMDItMDEgIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIHRzeXN0ZW0uaDogTmV3IGZpbGUuCgoJKiBNYWtlZmlsZS5pbiAobGliZ2NjMi5hLCBzdG1wLW11bHRpbGliLCBjcnRiZWdpbi5vLCBjcnRlbmQubywKCXMtY3J0Uyk6IERlcGVuZCBvbiB0c3lzdGVtLmguCgoJKiBjcnRzdHVmZi5jOiBJbmNsdWRlIHRzeXN0ZW0uaC4KCSogZnJhbWUuYzogTGlrZXdpc2UuCgkqIGxpYmdjYzIuYzogTGlrZXdpc2UuCgpUdWUgRmViICAxIDE5OjUzOjI3IENFVCAyMDAwICBKYW4gSHViaWNrYSAgPGpoQHN1c2UuY3o+CgoJKiBidWlsdGlucy5jIChleHBhbmRfYnVpbHRpbl9tZW1zZXQpOiBFeHBhbmQgZm9yIHZhcmlhYmxlIHNpemVkCglsZW5ndGhzIHRvby4KCjIwMDAtMDItMDEgIERhdmlkIEJpbGxpbmdodXJzdCA8RGF2aWQuQmlsbGluZ2h1cnN0QHJpb3RpbnRvLmNvbS5hdT4KCgkqIGNvbmZpZy9taXBzL2lyaXM2LmggKFNVQlRBUkdFVF9BU01fU1BFQykgOiBEZWZhdWx0IElTQSBiYXNlZAoJb24gQUJJLgoKVHVlIEZlYiAgMSAwMDo1Nzo0MCAyMDAwICBIYW5zLVBldGVyIE5pbHNzb24gIDxocEBiaXRyYW5nZS5jb20+CgoJKiBkd2FyZm91dC5jIChTSE9SVF9UWVBFX1NJWkUpOiBDb3JyZWN0IGRlZmF1bHQuCgoJKiB0bS50ZXhpIChUeXBlIExheW91dCk6IENvcnJlY3QgZW50cnkgZm9yIENIQVJfVFlQRV9TSVpFLgoKMjAwMC0wMS0zMSAgQ2hhbmRyYSBDaGF2dmEgPGNjaGF2dmFAY3lnbnVzLmNvbT4KCgkqIGNvbWJpbmUuYyAodHJ5X2NvbWJpbmUpIFtIQVZFX2NjMF06IFRyeWluZyB0byBjaGVjayB0aGUgbWlzc2VkCgljYXNlIDMtPjIgY29tYmluaW5nIChjb21iaW5pbmcgd2l0aCBzcGxpdHRpbmcpIGluIHdoaWNoIDIgaXMgQ0MwCglzZXR0ZXIvdXNlciBhbmQgMyBpcyB1c2VyLiBUaGUgcmVzdCBvZiBjYXNlcyAyLT4xIGFuZCAzLT4yIGFyZQoJY2hlY2tlZCBhdCB0aGUgYmVnaW5pbmcgb2YgdGhlIGZ1bmN0aW9uIHdpdGggdGhlIGFpZCBvZiBjYWxsaW5nCglmdW5jdGlvbiAnY2FuX2NvbWJpbmVfcCcuCgoyMDAwLTAxLTMxICBEYXZlIEJyb2xsZXkgIDxicm9sbGV5QHJlZGhhdC5jb20+CgoJKiBjY2NwLmMgKHN0cnVjdCBhcmdkYXRhKTogUmVkZWNsYXJlICduZXdsaW5lcycgZmllbGQgYXMgJ2ludCcuCgoyMDAwLTAxLTMxICBKYXNvbiBNZXJyaWxsICA8amFzb25AY2FzZXkuY3lnbnVzLmNvbT4KCgkqIGp1bXAuYyAocmVkaXJlY3RfanVtcCk6IE1vdmUgYSBOT1RFX0lOU05fRlVOQ1RJT05fRU5EIHRvIHRoZQoJbmV3IGxhYmVsLgoKMjAwMC0wMS0zMSAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogZ2Fuc2lkZWNsLmggKFBST1RPLCBWUFJPVE8sIFBWUFJPVE8pOiBEZWxldGUgbWFjcm9zLgoKCSogc2JpdG1hcC5oIChzYml0bWFwX2ZpcnN0X3NldF9iaXQsIHNiaXRtYXBfbGFzdF9zZXRfYml0KToKCVBST1RPIC0+IFBBUkFNUy4KCjIwMDAtMDEtMzAgIFphY2sgV2VpbmJlcmcgIDx6YWNrQHdvbGVyeS5jdW1iLm9yZz4KCgkqIGkzODYvMzg2YnNkLmgsIGkzODYvYmVvcy1wZS5oLCBpMzg2L2JzZDM4Ni5oLCBpMzg2L2NydGRsbC5oLAoJaTM4Ni9jeWd3aW4uaCwgaTM4Ni9kZ3V4LmgsIGkzODYvZGpncHAtcnRlbXMuaCwgaTM4Ni9kamdwcC5oLAoJaTM4Ni9mcmVlYnNkLmgsIGkzODYvZ251LmgsIGkzODYvaTM4Ni1hb3V0LmgsIGkzODYvaTM4Ni1jb2ZmLmgsCglpMzg2L2kzODYtaW50ZXJpeC5oLCBpMzg2L2kzODZlbGYuaCwgaTM4Ni9saW51eC5oLCBpMzg2L2x5bngtbmcuaCwKCWkzODYvbHlueC5oLCBpMzg2L21hY2guaCwgaTM4Ni9taW5ndzMyLmgsIGkzODYvbW9zcy5oLAoJaTM4Ni9uZXRic2QuaCwgaTM4Ni9uZXh0LmgsIGkzODYvb3BlbmJzZC5oLCBpMzg2L29zZjFlbGYuaCwKCWkzODYvcHR4NC1pLmgsIGkzODYvcnRlbXMuaCwgaTM4Ni9ydGVtc2VsZi5oLCBpMzg2L3Njby5oLAoJaTM4Ni9zZXF1ZW50LmgsIGkzODYvc3VuLmgsIGkzODYvc3lzdjQuaCwgaTM4Ni91d2luLmgsIGkzODYvdnN0YS5oLAoJaTM4Ni92eGkzODYuaCwgaTM4Ni93aW4tbnQuaCwgaTM4Ni93aW4zMi5oOgoJUmVtb3ZlIC1EaTM4NiAtQWNwdShpMzg2KSAtQW1hY2hpbmUoaTM4NikgZnJvbSBDUFBfUFJFREVGSU5FUy4KCgkqIGkzODYvb3NmMWVsZi5oLCBpMzg2L3Njb2RieC5oLCBpMzg2L3NlcS1zeXN2My5oLCBpMzg2L3N5c3Y1Lmg6CglBZGQgJShjcHBfY3B1KSB0byBDUFBfU1BFQy4KCgkqIGkzODYvb3NmMWVsZi5oLCBpMzg2L29zZmVsZi5oLCBpMzg2L29zZnJvc2UuaDoKCUFkZCAlKGNjMV9jcHUpIHRvIENDMV9TUEVDLgoKMjAwMC0wMS0yOCAgVWxyaWNoIERyZXBwZXIgIDxkcmVwcGVyQHJlZGhhdC5jb20+CgoJKiBjLWRlY2wuYyAoY19kZWNvZGVfb3B0aW9uKTogQWNjZXB0IG9wdGlvbmFsIG51bWVyaWMgYXJndW1lbnQgdG8KCS1XZm9ybWF0IGFuZCBzZXQgd2Fybl9mb3JtYXQuCgkqIGMtY29tbW9uLmM6IERvbid0IGVtaXQgd2FybmluZyBhYm91dCBub24tY29uc3RhbnQgcHJpbnRmIGZvcm1hdAoJc3RyaW5nIHVubGVzcyB3YXJuX2Zvcm1hdCA+IDEuCgoyMDAwLTAxLTMwICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEBjeWdudXMuY29tPgoKCSogYWxwaGEubWQgKHJldHVybl9pbnRlcm5hbCk6IEFsbG93IGFmdGVyIHJlbG9hZCBvbmx5LgoKMjAwMC0wMS0zMCAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAY3lnbnVzLmNvbT4KCgkqIGkzODYuYyAoaXg4Nl9jb21wdXRlX2ZyYW1lX3NpemUpOiBPbWl0IHBhZGRpbmcxIGlmIHRoZQoJbG9jYWwgZnJhbWUgc2l6ZSBpcyB6ZXJvLgoKMjAwMC0wMS0zMCAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAY3lnbnVzLmNvbT4KCgkqIGFscGhhLmMgKGFscGhhX2V4cGFuZF9lcGlsb2d1ZSk6IERvbid0IGVtaXQgdGhlIHJldHVybiBpbnNuLgoJKiBhbHBoYS5oIChFUElMT0dVRV9VU0VTKTogTmV3LiAgTWFyayAkMjYgbGl2ZS4KCSogYWxwaGEubWQgKHJldHVybik6IFR1cm4gaW50byBhbiBleHBhbmRlci4KCShyZXR1cm5faW50ZXJuYWwpOiBEb24ndCB1c2UgJDI2LgoJKGVwaWxvZ3VlKTogRW1pdCB0aGUgcmV0dXJuIGluc24uCgoyMDAwLTAxLTMwICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEBjeWdudXMuY29tPgoKCSogYWxwaGEubWQgKG5lZ3RmMiwgYWJzdGYyKTogRml4IHdvcmQgb3JkZXIgdGhpbmtvLgoJKGV4dGVuZHNmdGYyKTogTmV3LgoJKHRydW5jdGZzZjIpOiBBdm9pZCBpbnRlcm1lZGlhdGUgcm91bmRpbmcgZXJyb3JzLgoKMjAwMC0wMS0zMCAgWmFjayBXZWluYmVyZyAgPHphY2tAd29sZXJ5LmN1bWIub3JnPgoKCSogY3BwZmlsZXMuYyAoZmluZF9wb3NpdGlvbik6IERyb3AgJ2NvbHAnIGFyZ3VtZW50LCByZXR1cm4gdGhlCgluZXcgbGluZSBiYXNlLgoJKHJlYWRfYW5kX3ByZXNjYW4pOiBBZGp1c3QgdG8gbWF0Y2guICBEb24ndCBldmVyIG1hbmlwdWxhdGUKCWxpbmUgb3IgbGluZV9iYXNlIGV4Y2VwdCB2aWEgZmluZF9wb3NpdGlvbi4KCjIwMDAtMDEtMjkgIFphY2sgV2VpbmJlcmcgIDx6YWNrQHdvbGVyeS5jdW1iLm9yZz4KCgkqIGMtcGFyc2UuaW46IEFwcGx5IFVscmljaCdzIGNoYW5nZXMgZnJvbSBjLXBhcnNlLnkuCgkqIGMtcGFyc2UueSwgb2JqYy9vYmpjLXBhcnNlLnksIGMtcGFyc2UuYywgb2JqYy9vYmpjLXBhcnNlLmM6CglSZWdlbmVyYXRlLgoKMjAwMC0wMS0yOSAgWmFjayBXZWluYmVyZyAgPHphY2tAd29sZXJ5LmN1bWIub3JnPgoKCSogY3BwZXJyb3IuYyAoY3BwX2ZpbGVfbGluZV9mb3JfbWVzc2FnZSk6IElmICdsaW5lJyBpcyB6ZXJvLAoJanVzdCBwcmludCAiPGNvbW1hbmQgbGluZT4iLiAgSWYgJ2ZpbGVuYW1lJyBpcyBudWxsIG9yIGFuCgllbXB0eSBzdHJpbmcsIHByaW50ICI8c3RkaW4+IiBmb3IgdGhlIGZpbGVuYW1lLgoJKiBjcHBsaWIuYyAoZG9fZGVmaW5lKTogRG9uJ3QgcHJpbnQgdGhlICdsb2NhdGlvbiBvZiB0aGUKCXByZXZpb3VzIGRlZmluaXRpb24nIG1lc3NhZ2UgaWYgd2UncmUgc3RpbGwgcGFyc2luZyB0aGUKCWNvbW1hbmQgbGluZS4KCShjcHBfcGVkd2Fybl93aXRoX2ZpbGVfYW5kX2xpbmUpOiBBbHdheXMgY2FsbAoJY3BwX2ZpbGVfbGluZV9mb3JfbWVzc2FnZS4KCjIwMDAtMDEtMjkgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBmbG93LmMgKG1hcmtfcmVnc19saXZlX2F0X2VuZCk6IEZpeCB0eXBvLgoKMjAwMC0wMS0yOCAgVWxyaWNoIERyZXBwZXIgIDxkcmVwcGVyQHJlZGhhdC5jb20+CgoJKiBjLWNvbW1vbi5jOiBBZGp1c3QgdmFyaWFibGUgbmFtZXMsIGNvbW1lbnRzLCBoZWxwIHN0cmluZ3MgdG8gYzk5LgoJKiBjLWxleC5jOiBMaWtld2lzZS4KCSogYy1wYXJzZS55OiBMaWtld2lzZS4KCSogYy10cmVlLmg6IExpa2V3aXNlLgoJKiBjY2NwLmM6IExpa2V3aXNlLgoJKiBjcHBsaWIuaDogTGlrZXdpc2UuCgkqIGMtZGVjbC5jOiBMaWtld2lzZS4gIFJlY29nbml6ZSBvcHRpb25zIHdpdGggbmFtZXMgIio5OSIgYXMgd2VsbC4KCSogY3BwaW5pdC5jOiBMaWtld2lzZS4KCjIwMDAtMDEtMjkgSGVybWFuIEEuSi4gdGVuIEJydWdnZSA8SGFqLlRlbi5CcnVnZ2VAbmV0LkhDQy5ubD4KCgkqIGM0eC5oIChJTklUX1RBUkdFVF9PUFRBQlMpOiBBZGQgYWxsIG1pc3NpbmcgbG9jYWwgb3B0YWIgZW50cmllcy4KCSogYzR4LmM6IERlZmluZSB0aGUgb3B0YWIgcnR4IHZhbHVlcy4KCShjNHhfYWRkX2djX3Jvb3RzKTogQWRkIHRoZSBnZ2Mgcm9vdHMgZm9yIHRoZXNlIG9wdGFiIHJ0eCB2YWx1ZXMuCgkoYzR4X2VtaXRfbGliY2FsbCk6IFVzZSBuZXcgb3B0YWIgcnR4IHZhbHVlcy4KCShjNHhfZW1pdF9saWJjYWxsMyk6IExpa2V3aXNlLgoJKGM0eF9lbWl0X2xpYmNhbGxfbXVsaGkpOiBMaWtld2lzZS4KCSogYzR4LXByb3Rvcy5oOiBBZGQgcHJvdG90eXBlcyBmb3Igb3B0YWIgcnR4IHZhbHVlcyBhbmQgY2hhbmdlCglwcm90b3R5cGVzIGZvciBhYm92ZSBjNHhfZW1pdF9saWJjYWxsIGZ1bmN0aW9ucy4KCjIwMDAtMDEtMjkgSGVybWFuIEEuSi4gdGVuIEJydWdnZSA8SGFqLlRlbi5CcnVnZ2VAbmV0LkhDQy5ubD4KCgkqIGM0eC5jIChjNHhfb3V0cHV0X2FzY2lpKTogUmVzdHJpY3QgbGluZSBsZW5ndGggb2Ygb3V0cHV0IHdoZW4gVEkKCXN5bnRheCBpcyB1c2VkLgoJKGM0eF9mdW5jdGlvbl9wcm9sb2d1ZSk6IFVzZSByZWduYW1lcyBpbnRlYWQgb2YgZmxvYXRfcmVnX25hbWVzIHdoZW4KCVRJIHN5bnRheCBpcyB1c2VkLgoJKGM0eF9mdW5jdGlvbl9lcGlsb2d1ZSk6IExpa2V3aXNlLgoJKGM0eF9wcmludF9vcGVyYW5kKTogTGlrZXdpc2UuCgkqIGM0eC5oIChIT1NUX1dJREVfSU5UX1BSSU5UX0hFWCk6IFJlZGVmaW5lLgoJKiBjNHgubWQgKHNldF9oaWdoKTogRGlzYWJsZSBmb3IgVEFSR0VUX1RJLgoKMjAwMC0wMS0yOSBIZXJtYW4gQS5KLiB0ZW4gQnJ1Z2dlIDxIYWouVGVuLkJydWdnZUBuZXQuSENDLm5sPgoKCSogYzR4LmggKFBSRUZFUlJFRF9SRUxPQURfQ0xBU1MpOiBDaGFuZ2UgdG8gcmVzdHJpY3QgdGhlIHJlbG9hZGluZwoJb2YgZnJhbWVwb2ludGVyICsgY29uc3RhbnQgdG8gQUREUl9SRUdTIGNsYXNzLgoJKiBjNHgubWQgKGFkZHFpMywgYWRkcWkzX25vY2xvYmJlcl9yZWxvYWQpOiBVcGRhdGUuCgkqIGM0eC5jIChzdGRfb3JfcmVnX29wZXJhbmQpOiBOZXcgZnVuY3Rpb24uCgkqIGM0eC1wcm90b3MuaCAoc3RkX29yX3JlZ19vcGVyYW5kKTogUHJvdG90eXBlIGl0LgoKMjAwMC0wMS0yOSBIZXJtYW4gQS5KLiB0ZW4gQnJ1Z2dlIDxIYWouVGVuLkJydWdnZUBuZXQuSENDLm5sPgoKCSogdC1jNHg6IENoYW5nZSBxaSxxZixkaSxkZiBpbnRvIHNpLHNmLGhpLGhmIHRvIGdlbmVyYXRlIHNhbWUKCQlvYmplY3QgbmFtZXMgYXMgbGliZ2NjMi5jLgoJKiBsaWJnY2MuUzogVXNlIG5ld2x5IGRlZmluZWQgbmFtZXMuCgpGcmkgSmFuICA3IDE5OjQ4OjA0IENFVCAyMDAwICBKYW4gSHViaWNrYSAgPGpoQHN1c2UuY3o+CgkqIHNiaXRtYXAuYyAoc2JpdG1hcF9maXJzdF9zZXRfYml0LCBzYml0bWFwX2xhc3Rfc2V0X2JpdCk6IE5ldwoJZnVuY3Rpb24uCgkqIHNiaXRtYXAuaCAoc2JpdG1hcF9maXJzdF9zZXRfYml0LCBzYml0bWFwX2xhc3Rfc2V0X2JpdCk6IERlY2xhcmUuCgkqIGJhc2ljX2Jsb2NrLmggKEZMT1dfTE9PUF9GSVJTVF9CTE9DSyk6IE5ldyBtYWNyby4KCShGTE9XX0xPT1BfTEFTVF9CTE9DSyk6IExpa2V3aXNlLgoKMjAwMC0wMS0yMSAgTWljaGFlbCBIYXllcyAgPG0uaGF5ZXNAZWxlYy5jYW50ZXJidXJ5LmFjLm56PgoKCSogYmFzaWMtYmxvY2suaCAoc3RydWN0IGxvb3ApOiBOZXcgZmllbGRzICdmaXJzdCcgYW5kICdsYXN0Jy4KCSogZmxvdy5jIChmbG93X2xvb3BzX2ZpbmQpOiBDb21wdXRlIGxvb3AtPmZpcnN0IGFuZCBsb29wLT5sYXN0LgoJKGZsb3dfbG9vcHNfZHVtcCk6IFVzZSBsb29wLT5maXJzdCB0byBjaGVjayBmb3IgTk9URV9JTlNOX0xPT1BfQkVHCglhbmQgbG9vcC0+bGFzdCB0byBjaGVjayBmb3IgTk9URV9JTlNOX0xPT1BfRU5ELgoKRnJpIEphbiAyOCAxMDo1Nzo1OCAyMDAwICBKYXNvbiBFY2toYXJkdCAgPGpsZUBjeWdudXMuY29tPgoKCSogcHJlZGljdC5jIChlc3RpbWF0ZV9wcm9iYWJpbGl0eSk6IFVzZSB0aGUgbmV3IEZJUlNUIGFuZCBMQVNUIGZpZWxkcwoJb2YgdGhlIGxvb3AgZGVzY3JpcHRvciByYXRoZXIgdGhhbiBIRUFERVIgYW5kIExBVENILiBBbHNvIGFkZGVkCgltaXNzaW5nIGJyZWFrIHN0YXRlbWVudHMgYXMgd2VsbCBtYWtpbmcgc29tZSBjb2Rpbmcgc3R5bGUgbW9kaWZpY2F0aW9ucwoJYXMgc3VnZ2VzdGVkIGJ5IE1pY2hhZWwgSGF5ZXMuCgoyMDAwLTAxLTI4ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEBjeWdudXMuY29tPgoKCSogZmxvdy5jIChmaW5kX2Jhc2ljX2Jsb2Nrcyk6IFJlbW92ZSBkb19jbGVhbnVwIGFyZ3VtZW50LgoJQnJlYWsgb3V0IHRoYXQgY29kZSAuLi4KCShjbGVhbnVwX2NmZyk6IC4uLiBoZXJlLgoJKGNvbW1pdF9vbmVfZWRnZV9pbnNlcnRpb24pOiBEZXRlY3QgYSByZXR1cm4gaW5zdHJ1Y3Rpb24gYmVpbmcKCWVtaXR0ZWQgdG8gYW4gZWRnZS4gIEVtaXQgYSBiYXJyaWVyIGZvbGxvd2luZzsgY2xlYXIgZmFsbHRocnUuCgkoY29tbWl0X2VkZ2VfaW5zZXJ0aW9ucyk6IFZlcmlmeSBDRkcgY29uc2lzdGVuY3kuCgkqIGZ1bmN0aW9uLmMgKGV4cGFuZF9mdW5jdGlvbl9zdGFydCk6IEtpbGwgdW51c2VkIHZhcmlhYmxlLgoJKGV4cGFuZF9mdW5jdGlvbl9lbmQpOiBMaWtld2lzZS4KCSh0aHJlYWRfcHJvbG9ndWVfYW5kX2VwaWxvZ3VlX2luc25zKTogVXNlIGluc2VydF9pbnNuX29uX2VkZ2UKCXRvIGluc2VydCB0aGUgZXBpbG9ndWUuCgoJKiBnY3NlLmMgKGdjc2VfbWFpbik6IEFkanVzdCBmb3IgZmluZF9iYXNpY19ibG9ja3MgY2hhbmdlLgoJKGRlbGV0ZV9udWxsX3BvaW50ZXJfY2hlY2tzKTogTGlrZXdpc2UuCgkqIG91dHB1dC5oOiBMaWtld2lzZS4KCSogcmVnLXN0YWNrLmMgKHJlZ190b19zdGFjayk6IExpa2V3aXNlLgoJKiB0b3BsZXYuYyAocmVzdF9vZl9jb21waWxhdGlvbik6IExpa2V3aXNlLiAgUnVuCgl0aHJlYWRfcHJvbG9ndWVfYW5kX2VwaWxvZ3VlX2luc25zIGFmdGVyIHJlYnVpbGRpbmcgdGhlIENGRy4KCjIwMDAtMDEtMjggIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgoJKiBNYWtlZmlsZS5pbiAoZmxvdy5vKTogUmV2ZXJ0IDI0IEphbiBjaGFuZ2UuCgkqIGZsb3cuYyAobWFya19yZWdzX2xpdmVfYXRfZW5kKTogTGlrZXdpc2UuICBGb3JjZSBCTEttb2RlCglGVU5DVElPTl9WQUxVRSByZXN1bHQgdG8gREVDTF9SRVNVTFQncyBtb2RlLgoKCSogaGFpZmEtc2NoZWQuYyAoc2NoZWR1bGVfaW5zbnMpOiBEb24ndCByZWNvbXB1dGUgcmVnIGluZm8KCWFmdGVyIHJlbG9hZC4KCjIwMDAtMDEtMjggIFphY2sgV2VpbmJlcmcgIDx6YWNrQHdvbGVyeS5jdW1iLm9yZz4KCgkqIGNvbmZpZ3VyZS5pbjogTWFrZSAtLWVuYWJsZS1jcHBsaWIgdGhlIGRlZmF1bHQuCgkqIGNvbmZpZ3VyZTogUmVnZW5lcmF0ZS4KCSogZ2NjLmRnLzk5MDExOS0xLmM6IE5vIGxvbmdlciBleHBlY3RlZCB0byBmYWlsLgoKMjAwMC0wMS0yOCAgQmVybmQgU2NobWlkdCAgPGJlcm5kc0BjeWdudXMuY28udWs+CgoJKiBqdW1wLmMgKGp1bXBfb3B0aW1pemVfMSk6IERlbGV0ZSBhbiBvcHRpbWl6YXRpb24gdGhhdCBpcyBhbHNvIGRvbmUKCWJ5IG1lcmdlX2Jsb2NrcyBpbiBmbG93LgoKMjAwMC0wMS0yOCAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogZGlhZ25vc3RpYy5jIChidWlsZF9tZXNzYWdlX3N0cmluZywgb3V0cHV0X3ByaW50ZiwKCWxpbmVfd3JhcHBlcl9wcmludGYpOiBBZGQgQVRUUklCVVRFX1BSSU5URl8qLgoJKGJ1aWxkX2xvY2F0aW9uX3ByZWZpeCk6IEZpeCBub24tbGl0ZXJhbCBmb3JtYXQgc3RyaW5nLgoKMjAwMC0wMS0yNyAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAY3lnbnVzLmNvbT4KCgkqIGFscGhhLm1kICh0cnVuY3Rmc2YyKTogTmV3LgoKMjAwMC0wMS0yNyAgQW5kcmV3IEhvYnNvbiAgPGFob2Jzb25AZW5nLm1pbmRzcHJpbmcubmV0PgoKCSogY29uZmlndXJlLmluIChhbHBoYS1kZWMtb3NmNSk6IEVuYWJsZSBNQVNLX1NVUFBPUlRfQVJDSC4KCjIwMDAtMDEtMjcgIFphY2sgV2VpbmJlcmcgIDx6YWNrQHdvbGVyeS5jdW1iLm9yZz4KCgkqIGNwcGluaXQuYyAoY3BwX2hhbmRsZV9vcHRpb24pOiBSZWNvZ25pemUgQysrIGNvbW1lbnRzIHVuZGVyCgktc3RkPWdudTg5LgoJKiBjcHBsaWIuYyAoc2tpcF9ibG9ja19jb21tZW50LCBza2lwX2xpbmVfY29tbWVudCk6IFNwbGl0IGNvZGUKCW91dCBvZi4uLgoJKHNraXBfY29tbWVudCkgLi4uIGhlcmUuICBQZXJtaXQgQysrIGNvbW1lbnRzIGluIHN5c3RlbQoJaGVhZGVycyBhbHdheXMuICBXYXJuIGFib3V0IEMrKyBjb21tZW50cyBpbiB1c2VyIGNvZGUgdW5kZXIKCS1zdGQ9Z251ODkgLXBlZGFudGljLgoJKGNvcHlfY29tbWVudCk6IFVzZSBza2lwX2NvbW1lbnQuCgkoY3BwX3NraXBfaHNwYWNlLCBjcHBfZ2V0X3Rva2VuKTogc2tpcF9jb21tZW50IGNhbiBubyBsb25nZXIKCXJldHVybiBFT0YuCgkoY29uc2lkZXJfZGlyZWN0aXZlX3doaWxlX3NraXBwaW5nLCBkb19lbHNlLCBkb19lbmRpZik6IENhbGwKCXZhbGlkYXRlX2Vsc2UgdW5jb25kaXRpb25hbGx5LgoJKHZhbGlkYXRlX2Vsc2UpOiBDaGVjayBDUFBfUEVEQU5USUMgaGVyZS4gIEFjY2VwdCBub24tY29tbWVudAoJdGV4dCBhZnRlciB0aGUgY29uZGl0aW9uYWwgaW4gYSBzeXN0ZW0gaGVhZGVyLgoJKiBjcHBsaWIuaCAoc3RydWN0IGNwcF9idWZmZXIpOiBBZGQgZmxhZwoJd2FybmVkX2NwbHVzcGx1c19jb21tZW50cy4KCjIwMDAtMDEtMjcgIEdlb2ZmcmV5IEtlYXRpbmcgIDxnZW9mZmtAY3lnbnVzLmNvbT4KCgkqIGVtaXQtcnRsLmMgKHVuc2hhcmVfYWxsX3J0bCk6IFVuc2hhcmUgdmlydHVhbCBwYXJhbWV0ZXJzIHRvby4KCVVzZSB1bnNoYXJlX2FsbF9ydGxfMS4KCSh1bnNoYXJlX2FsbF9ydGxfYWdhaW4pOiBOZXcgZnVuY3Rpb24uCgkodW5zaGFyZV9hbGxfcnRsXzEpOiBOZXcgZnVuY3Rpb24gc3BsaXQgb3V0IG9mIHVuc2hhcmVfYWxsX3J0bC4KCgkqIGZ1bmN0aW9uLmMgKHB1cmdlX2FkZHJlc3NvZl8xKTogVXNlIHVuc2hhcmVfYWxsX3J0bF9hZ2FpbgoJcmF0aGVyIHRoYW4gcmVzZXR0aW5nIHRoZSAndXNlZCcgZmxhZ3Mgb3Vyc2VsZi4KCgkqIHRvcGxldi5jIChyZXN0X29mX2NvbXBpbGF0aW9uKTogQWRkIGN1cnJlbnRfZnVuY3Rpb25fZGVjbAoJdG8gdGhlIHVuc2hhcmVfYWxsX3J0bCBjYWxsLgoJKiB0cmVlLmg6IFByb3RvdHlwZSB1bnNoYXJlX2FsbF9ydGwuCgkqIHJ0bC5oOiBQcm90b3R5cGUgdW5zaGFyZV9hbGxfcnRsX2FnYWluIGhlcmUuCgoyMDAwLTAxLTI3ICBHZW9mZnJleSBLZWF0aW5nICA8Z2VvZmZrQGN5Z251cy5jb20+CgoJKiBnZW5vdXRwdXQuYyAob3V0cHV0X3Byb2xvZ3VlKTogSW5jbHVkZSBnZ2MuaCBpbiBnZW5lcmF0ZWQKCWZpbGVzLgoJKiBNYWtlZmlsZS5pbiAoaW5zbi1vdXRwdXQubyk6IERlcGVuZHMgb24gZ2djLmguCgoyMDAwLTAxLTI3ICBJYW4gRGFsbCAgPGlhbkBzaWJ5bC5iZXdhcmUuZHJvcGJlYXIuaWQuYXU+CgkgICAgSGFucy1QZXRlciBOaWxzc29uICA8aHBAYml0cmFuZ2UuY29tPgoKCSogbnMzMmsveG0tbnMzMmsuaCAobWVtY3B5LCBtZW1zZXQsIG1lbWNtcCk6IERlbGV0ZS4KCVJlbW92ZSByZWR1bmRhbnQgaW5jbHVkZSBvZiB4bS1uczMyay5oLgoJKiBuczMyay94bS1nZW5peC5oIChtZW1jcHksIG1lbXNldCwgbWVtY21wKTogQWRkIGRlZmluaXRpb25zLgoJUmVtb3ZlIHJlZHVuZGFudCBpbmNsdWRlIG9mIHhtLW5zMzJrLmguCgkqIG5zMzJrL3htLW5ldGJzZC5oIChtZW1jcHksIG1lbXNldCwgbWVtY21wKTogTm8gbG9uZ2VyIHVuZGVmaW5lLgoJUmVtb3ZlIHJlZHVuZGFudCBpbmNsdWRlIG9mIHhtLW5zMzJrLmguCgkqIG5zMzJrL25ldGJzZC5oIChUQVJHRVRfREVGQVVMVCk6IEVuYWJsZSBtdWx0aXBseS1hZGQgaW5zdHJ1Y3Rpb25zLgoKCSogbnMzMmsvbnMzMmsuaDogVXBkYXRlIGNvbW1lbnQgb24gbXVsdGlwbHktYWRkIGluc3RydWN0aW9ucy4KCShUQVJHRVRfU1dJVENIRVMpOiBBZGQgZG9jdW1lbnRhdGlvbiBzdHJpbmdzLgoJKERXQVJGX0ZSQU1FX1JFR05VTSk6IE92ZXJyaWRlIGRlZmF1bHQgZGVmaW5pdGlvbi4KCShSRUdfQ0xBU1NfQ09OVEVOVFMpOiBBZGQgY29tbWVudHMuCgkoU1VCU0VUX1ApOiBGb3JtYXQgdG8gcmVkdWNlIGxpbmUgbGVuZ3RoLgoJKFNNQUxMX1JFR0lTVEVSX0NMQVNTRVMpOiBNYWtlIGEgcnVuIHRpbWUgb3B0aW9uLgoJKEdPX0lGX05PTklOREVYRURfQUREUkVTUyk6IFJlZm9ybWF0LgoJKEdPX0lGX0xFR0lUSU1BVEVfQUREUkVTUyk6IEVuc3VyZSB0aGF0IGNmdW4gaXMgbm9uIE5VTEwgYmVmb3JlCglkZXJlZmVyZW5jaW5nIGl0LiAgQnJhY2VzIHRvIGF2b2lkICJhbWJpZ3VvdXMgZWxzZSIgd2VyZSBtaXNwbGFjZWQuCgkocmVnY2xhc3NfbWFwKTogZml4IHR5cG8gaW4gY29tbWVudC4KCSogbnMzMmsvbnMzMmsuYzogQWRkIHNwYWNlcyBiZWZvcmUgcGFyZW50aGVzZXMgZm9yIGNvbnNpc3RhbnQgc3R5bGUuCglQcmVmZXIgZ2VuX3J0eF9GT08oLi4uKSB0byBnZW5fcnR4KEZPTywuLi4pLgoJKHRyYWNlLCByZWdfb3JfbWVtX29wZXJhbmQpOiBEZWxldGUsIHVudXNlZCBmdW5jdGlvbi4KCShjYWxjX2FkZHJlc3NfY29zdCk6IFNtYWxsIG9mZnNldHMgYXJlIGNoZWFwZXIgdGhhbiBsYXJnZSBvbmVzLgoJKGV4cGFuZF9ibG9ja19tb3ZlKTogR2VuZXJhdGUgbW9yZSBlZmZpY2llbnQgY29kZSB3aGVuIGJ5dGVzIGlzIGEKCWtub3duIGF0IGNvbXBpbGUgdGltZS4KCSogbnMzMmsvbnMzMmsubWQ6IEFsdGVybmF0ZSBjb25zdHJhaW50cyBmb3IgbXVsdGlwbHktYWRkIGluc3RydWN0aW9ucy4KCSh1ZGl2bW9kc2k0LCB1ZGl2bW9kaGk0LCB1ZGl2bW9kcWk0KTogVXNlIG5vbmltbWVkaWF0ZV9vcGVyYW5kCglpbnN0ZWFkIG9mIHJlZ19vcl9tZW1fb3BlcmFuZC4KCgkqIG5zMzJrL25zMzJrLm1kOiBVc2Ugbm9uaW1tZWRpYXRlX29wZXJhbmQgb3Igc3RyaWN0ZXIgZm9yIG91dHB1dHMsCglub3QgZ2VuZXJhbF9vcGVyYW5kLiAgU2ltaWxhcmx5IHVzZSAiPXJtIiBvciBzdHJpY3Rlciwgbm90ICI9ZyIuCglGb3IgaW5wdXQgb3BlcmFuZHMsIHVzZSBzdHJpY3RlciBjb25zdHJhaW50cyB0aGFuICJnIiBpZiBub3QKCWdlbmVyYWxfb3BlcmFuZC4gIFNpbWlsYXJseSB1c2Ugc3RyaWN0ZXIgcHJlZGljYXRlIHRoYW4KCSJnZW5lcmFsX29wZXJhbmQiIHdoZW4gc3RyaWN0ZXIgY29uc3RyYWludHMgdGhhbiAiZyIgYXJlIHByZXNlbnQsCglleGNlcHQgZm9yIG1hdGNoaW5nIGNvbnN0cmFpbnRzLgoJKG1vdnN0cnNpKTogVXNlICJtZW1vcnlfb3BlcmFuZCIgZm9yIG9wZXJhbmRzIDAgYW5kIDEuCgkodHJ1bmNzaXFpMiwgdHJ1bmNzaWhpMiwgdHJ1bmNoaXFpMik6IFJlbW92ZS4KCSh1ZGl2bW9kZGlzaTRfaW50ZXJuYWwpOiBVc2Ugbm9uaW1tZWRpYXRlX29wZXJhbmQgZm9yIG9wZXJhbmQgMCwKCW5vdCByZWdfb3JfbWVtX29wZXJhbmQuCgkodWRpdm1vZGRpc2k0KTogRGl0dG8uCglVc2Ugbm9uaW1tZWRpYXRlX29wZXJhbmQgZm9yIG9wZXJhbmQgMSwgbm90IHJlZ19vcl9tZW1fb3BlcmFuZC4KCVVzZSBub25pbW1lZGlhdGVfb3BlcmFuZCBmb3Igb3BlcmFuZCAzLCBub3QgcmVnaXN0ZXJfb3BlcmFuZC4KCSh1ZGl2bW9kZGlxaTRfaW50ZXJuYWwpOiBVc2UgcmVnaXN0ZXJfb3BlcmFuZCBmb3Igb3BlcmFuZCAxLCBub3QKCXJlZ19vcl9tZW1fb3BlcmFuZC4KCjIwMDAtMDEtMjcgIEZyZWQgRmlzaCAgPGZuZkBiZS5jb20+CgoJKiBndGhyLXBvc2l4Lmg6IEZpeCB0eXBvOyBjb21wYXRpYmlseSAtPiBjb21wYXRpYmlsaXR5LgoJKiBndGhyLXNpbmdsZS5oOiBMaWtld2lzZS4KCSogZ3Roci1zb2xhcmlzLmg6IExpa2V3aXNlLgoJKiBndGhyLXZ4d29ya3MuaDogTGlrZXdpc2UuCgkqIGd0aHItd2luMzIuaDogTGlrZXdpc2UuCgkqIGd0aHIuaDogTGlrZXdpc2UuCgoyMDAwLTAxLTI3ICBaYWNrIFdlaW5iZXJnICA8emFja0B3b2xlcnkuY3VtYi5vcmc+CgoJKiBjcHBpbml0LmM6IEFkZCAiIChjcHBsaWIpIiB0byBlbmQgb2Ygc3RyaW5nIHByaW50ZWQgYnkKCS12IC8gLS12ZXJzaW9uLgoKMjAwMC0wMS0yNyAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAY3lnbnVzLmNvbT4KCgkqIGFscGhhLmMgKGFscGhhX2VtaXRfY29uZGl0aW9uYWxfbW92ZSk6IFVzZSBWT0lEbW9kZSB3aGVuCgl0ZXN0aW5nIGZvciBhIHNpZ25lZCBjb21wYXJpc29uLgoJKGFscGhhX2VtaXRfZmxvYXR1bnMpOiBOZXcuCgkqIGFscGhhLXByb3Rvcy5oOiBEZWNsYXJlIGl0LgoJKiBhbHBoYS5tZCAoZmxvYXR1bnNkaXNmMiwgZmxvYXR1bnNkaWRmMik6IE5ldy4KCShleHRlbmRzZmRmMik6IFRpZHkuCgoyMDAwLTAxLTI3ICBKYWt1YiBKZWxpbmVrICA8amFrdWJAcmVkaGF0LmNvbT4KCgkqIGNvbmZpZy9zcGFyYy9saW51eDY0LmggKENDMV9TUEVDKTogSWYgY29tcGlsaW5nIC1tMzIgd2l0aCAtZyBidXQKCW5vIC1nIG9wdGlvbiBzcGVjaWZ5aW5nIGRlYnVnZ2luZyBmb3JtYXQsIGRlZmF1bHQgdG8gLWdzdGFicysuCgpXZWQgSmFuIDI2IDIyOjE5OjE0IDE5OTkgIEoib3JuIFJlbm5lY2tlICA8YW15bGFhckBjeWdudXMuY28udWs+CgoJKiBjYWxscy5jIChzcGVjaWFsX2Z1bmN0aW9uX3ApOiBOZXcgYXJndW1lbnQgZm9ya19vcl9leGVjLgoJKGV4cGFuZF9jYWxsKTogV2hlbiBwcm9maWxlX2FyY19mbGFnIGlzIHNldCBhbmQgdGhlIGZ1bmN0aW9uCglpcyBpbiB0aGUgZm9ya19vcl9leGVjIGdyb3VwLCBjYWxsIF9fYmJfZm9ya19mdW5jIGZpcnN0LgoJKiBsaWJnY2MyLmMsIF9iYiBtb2R1bGUgKF9fYmJfZm9ya19mdW5jKTogTmV3IGZ1bmN0aW9uLgoJKF9fYmJfZXhpdF9mdW5jKTogSWYgZmNudGwgRl9TRVRMS1cgaXMgYXZhaWxhYmxlLCB1c2UgaXQgdG8gbG9jawoJb3V0cHV0IGZpbGUuCgkqIGNvbmZpZy9zdnI0LmggKFRBUkdFVF9IQVNfRl9TRVRMS1cpOiBEZWZpbmUuCgkqIHRyZWUuaCAoc3BlY2lhbF9mdW5jdGlvbl9wKTogVXBkYXRlIHByb3RvdHlwZS4KCjIwMDAtMDEtMjYgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgoJKiBhbHBoYS5jIChhbHBoYV9zcGxpdF90Zm1vZGVfcGFpcik6IE5ldy4KCSogYWxwaGEtcHJvdG9zLmg6IERlY2xhcmUgaXQuCgkqIGFscGhhLm1kIChhYnN0ZjIsIG5lZ3RmMik6IE5ldy4KCShtb3Z0ZiBpbnNuKTogQWRkIGlucHV0IEcgY29uc3RyYWludC4KCShtb3Z0ZiBzcGxpdHRlcik6IFVzZSBhbHBoYV9zcGxpdF90Zm1vZGVfcGFpci4KCjIwMDAtMDEtMjYgIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIGkzODYvY3lnd2luLmg6IFBST1RPIC0+IFBBUkFNUy4KCjIwMDAtMDEtMjYgIEpha3ViIEplbGluZWsgIDxqYWt1YkByZWRoYXQuY29tPgoKCSogY29uZmlnL3NwYXJjL3NwYXJjLmMgKHNwYXJjX2VtaXRfZmxvYXRfbGliX2NtcCk6IEhhbmRsZQoJVEFSR0VUX0FSQ0gzMiBhZ2Fpbi4gSGFuZGxlIE9SREVSRUQsIFVOKiBhbmQgTFRHVCBjb21wYXJpc29ucwoJdXNpbmcgX1FwX2NtcC9fUV9jbXAgYW5kIHRlc3RpbmcgdGhlIHJldHVybiB2YWx1ZS4KCShwcmludF9vcGVyYW5kKTogQ2FsbCByZXZlcnNlX2NvbmRpdGlvbl9tYXliZV91bm9yZGVyZWQgaWYKCXdlIGFyZSBoYW5kbGluZyBDQ0ZQbW9kZSBvciBDQ0ZQRW1vZGUuCglIYW5kbGUgT1JERVJFRCwgVU4qIGFuZCBMVEdUIGNvbXBhcmlzb25zLgoJKiBjb25maWcvc3BhcmMvc3BhcmMubWQgKGNtcHRmKTogVXNlIGV2ZW4gb24gVEFSR0VUX0FSQ0gzMgoJaWYgbm90IFRBUkdFVF9IQVJEX1FVQUQuCgkoc2VxLCBzbmUsIHNndCwgc2x0LCBzZ2UsIHNsZSwgYmVxLCBibmUsIGJndCwgYmx0LCBiZ2UsIGJsZSwKCWJ1bm9yZGVyZWQsIGJvcmRlcmVkLCBidW5ndCwgYnVubHQsIGJ1bmVxLCBidW5nZSwgYnVubGUsIGJsdGd0KToKCUNhbGwgc3BhcmNfZW1pdF9mbG9hdF9saWJfY21wIGV2ZW4gb24gVEFSR0VUX0FSQ0gzMi4KCUFkanVzdCBnZW5fYiogY2FsbHMgc28gdGhhdCB0aGV5IHJlZmxlY3QgcmV0dXJuIGNvbXBhcmlzb24gb2YKCXNwYXJjX2VtaXRfZmxvYXRfbGliX2NtcC4KCjIwMDAtMDEtMjYgIEFsZXhhbmRyZSBPbGl2YSAgPG9saXZhQGxzZC5pYy51bmljYW1wLmJyPgoKCSogY29uZmlnL2FscGhhL2FscGhhLmMgKGFscGhhX2VtaXRfeGZsb2F0aW5nX2N2dCk6IERvIG5vdCBhc3N1bWUKCWluY29taW5nIG9wZXJhbmRzIGFycmF5IGlzIGxhcmdlIGVub3VnaCBmb3Igb25lIG1vcmUgb3BlcmFuZC4KCShhbHBoYV9lbWl0X3hmbG9hdGluZ19hcml0aCk6IExpa2V3aXNlLgoKMjAwMC0wMS0yNSAgWmFjayBXZWluYmVyZyAgPHphY2tAd29sZXJ5LmN1bWIub3JnPgoKCSogZml4aW5jL01ha2VmaWxlLmluIChtYWNobmFtZS5oKTogU3VuT1MgNCBzZWQgY2FuJ3QgaGFuZGxlIGEKCWZpbGUgd2l0aCBvbmUgbGluZSBhbmQgbm8gdHJhaWxpbmcgbmV3bGluZS4KCVBhdGNoIGJ5IEthdmVoIEdoYXppIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1Pi4KCSogZml4aW5jL2ZpeHRlc3RzLmMgKG1hY2hpbmVfbmFtZV90ZXN0KTogRml4IGZlbmNlcG9zdCBlcnJvcgoJY2hlY2tpbmcgaWYgdGhlIG1hdGNoIGlzIG9uIHRoZSBsaW5lLgoJKiBmaXhpbmMvZ251LXJlZ2V4LmM6IFByb3ZpZGUgcmVnZXJyb3Igbm90IF9fcmVnZXJyb3IuCgoyMDAwLTAxLTI1ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEBjeWdudXMuY29tPgoKCSogc3BhcmMuYyAob3V0cHV0X2NicmFuY2gpOiBGaXggYWNjaWRlbnRhbCBzcXVhc2hpbmcgb2YgdGhlCglmcCBicmFuY2ggcHJlLWRlbGF5IG5vcC4KCjIwMDAtMDEtMjUgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgoJKiB0cmVlLmRlZiAoVU5ORV9FWFBSKTogUmVtb3ZlLgoJKiBjLXR5cGVjay5jIChidWlsZF9iaW5hcnlfb3ApOiBEb24ndCBoYW5kbGUgaXQuCgkqIGV4cHIuYyAoZXhwYW5kX2V4cHIsIGRvX2p1bXAsIGRvX3N0b3JlX2ZsYWcpOiBMaWtld2lzZS4KCgkqIHJ0bC5kZWYgKFVOTkUpOiBSZW1vdmUuCgkoTFRHVCk6IEFkZC4KCSoganVtcC5jIChyZXZlcnNlX2NvbmRpdGlvbik6IFVwZGF0ZSBhY2NvcmRpbmdseS4KCShzd2FwX2NvbmRpdGlvbik6IExpa2V3aXNlLgoJKGNvbXBhcmlzb25fZG9taW5hdGVzX3ApOiBIYW5kbGUgdW5vcmRlcmVkIGNvbXBhcmlzb25zLgoJKHJldmVyc2VfY29uZGl0aW9uX21heWJlX3Vub3JkZXJlZCk6IE5ldy4KCSogcnRsLmggKHJldmVyc2VfY29uZGl0aW9uX21heWJlX3Vub3JkZXJlZCk6IERlY2xhcmUuCgoJKiBzcGFyYy5jIChzZWxlY3RfY2NfbW9kZSk6IFVwZGF0ZSBmb3IgVU5ORS9MVEdULgoJKG91dHB1dF9jYnJhbmNoKTogVXNlIHJldmVyc2VfY29uZGl0aW9uX21heWJlX3Vub3JkZXJlZCBhbmQgTFRHVC4KCSogc3BhcmMuaCAoUkVWRVJTSUJMRV9DQ19NT0RFKTogQWx3YXlzIHRydWUuICBVcGRhdGUgZG9jcy4KCSogc3BhcmMubWQgKGJsdGd0KTogTmV3LgoKMjAwMC0wMS0yNSAgTmljayBDbGlmdG9uICA8bmlja2NAcmVkaGF0LmNvbT4KCgkqIGVtaXQtcnRsLmMgKGVtaXRfaW5zbik6IE9ubHkgY2hlY2sgbWFjaGluZSBjbGFzcyBpbnNucyBmb3IKCWltcHJvcGVyIGVtaXNzaW9uIG9mIGEgUkVUVVJOLgoKMjAwMC0wMS0yNSAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAY3lnbnVzLmNvbT4KCgkqIE1ha2VmaWxlLmluIChmbG93Lm8pOiBEZXBlbmQgb24gJChFWFBSX0gpLgoJKiBmbG93LmMgKG1hcmtfcmVnc19saXZlX2F0X2VuZCk6IFVzZSBoYXJkX2Z1bmN0aW9uX3ZhbHVlLCBpLmUuCglkdXBsaWNhdGUgdGhlIHN0cnVjdHVyZSBvZiBkaWRkbGVfcmV0dXJuX3ZhbHVlIGZvciBrZWVwaW5nIHJlZ3MgbGl2ZS4KCjIwMDAtMDEtMjYgIE1pY2hhZWwgSGF5ZXMgIDxtLmhheWVzQGVsZWMuY2FudGVyYnVyeS5hYy5uej4KCgkqIGxvb3AuYyAoY3VycmVudF9sb29wX2luZm8pOiBEZWxldGUuCgkoY29uc2VjX3NldHNfaW52YXJpYW50X3ApOiBBZGQgbG9vcCBhcmd1bWVudCwgdXBkYXRlIGNhbGxlcnMuCgkoZ2V0X2NvbmRpdGlvbl9mb3JfbG9vcCk6IExpa2V3aXNlLgoJKGNvdW50X25vbmZpeGVkX3JlYWRzLCB1cGRhdGVfZ2l2X2Rlcml2ZSk6IExpa2V3aXNlLgoJKHNpbXBsaWZ5X2dpdl9leHByLCBnZW5lcmFsX2luZHVjdGlvbl92YXIpOiBMaWtld2lzZS4KCShjb25zZWNfc2V0c19naXYsIHJlY29tYmluZV9naXZzKTogTGlrZXdpc2UuCgkobW92ZV9tb3ZhYmxlcyk6IERlbGV0ZSBsb29wX3N0YXJ0IGFuZCBsb29wX2VuZCBhcmd1bWVudHMsCglhZGQgbG9vcCBhcmd1bWVudCwgYW5kIHVwZGF0ZSBjYWxsZXJzLgoJKGZpbmRfbWVtX2dpdnMsIGNoZWNrX2ZpbmFsX3ZhbHVlKTogTGlrZXdpc2UuCgkocmVjb3JkX2dpdiwgbWF5YmVfZWxpbWluYXRlX2JpdiwgbWF5YmVfZWxpbWluYXRlX2Jpdl8xKTogTGlrZXdpc2UuCgkobG9vcF9pbnZhcmlhbnRfcCk6IFJlbmFtZSBmcm9tIGludmFyaWFudF9wLCBhZGQgbG9vcCBhcmd1bWVudCwgYW5kCgl1cGRhdGUgY2FsbGVycy4KCShiYXNpY19pbmR1Y3Rpb25fdmFyKTogQWRkIGxvb3AgYXJndW1lbnQsIGRlbGV0ZSBsb29wX2xldmVsIGFyZ3VtZW50LAoJYW5kIHVwZGF0ZSBjYWxsZXJzLgoJKiB1bnJvbGwuYyAoaXRlcmF0aW9uX2luZm8pOiBEZWxldGUgbG9vcF9zdGFydCBhbmQgbG9vcF9lbmQgYXJndW1lbnRzLAoJYWRkIGxvb3AgYXJndW1lbnQsIGFuZCB1cGRhdGUgY2FsbGVycy4KCShmaW5kX3NwbGl0dGFibGVfcmVncywgZmluZF9zcGxpdHRhYmxlX2dpdnMpOiBMaWtld2lzZS4KCShyZWdfZGVhZF9hZnRlcl9sb29wLCBsb29wX2ZpbmRfZXF1aXZfdmFsdWUpOiBMaWtld2lzZS4KCShmaW5hbF9iaXZfdmFsdWUsIGZpbmFsX2dpdl92YWx1ZSwgYmFja19icmFuY2hfaW5fcmFuZ2VfcCk6IExpa2V3aXNlLgoJKGJpdl90b3RhbF9pbmNyZW1lbnQpOiBEZWxldGUgbG9vcF9zdGFydCBhbmQgbG9vcF9lbmQgYXJndW1lbnRzOwoJdXBkYXRlIGNhbGxlcnMuCgkocHJlY29uZGl0aW9uX2xvb3BfcCk6IERlbGV0ZSBsb29wX3N0YXJ0IGFuZCBsb29wX2luZm8gYXJndW1lbnRzOwoJdXBkYXRlIGNhbGxlcnMuCgkqIGxvb3AuaCAoZ2V0X2NvbmRpdGlvbl9mb3JfbG9vcCk6IEFkZCBsb29wIGFyZ3VtZW50LgoJKGJpdl90b3RhbF9pbmNyZW1lbnQpOiBEZWxldGUgbG9vcF9zdGFydCBhbmQgbG9vcF9lbmQgYXJndW1lbnRzLgoJKHByZWNvbmRpdGlvbl9sb29wX3ApOiBEZWxldGUgbG9vcF9zdGFydCBhbmQgbG9vcF9pbmZvIGFyZ3VtZW50czsKCWFkZCBsb29wIGFyZ3VtZW50LgoJKGZpbmFsX2Jpdl92YWx1ZSk6IERlbGV0ZSBsb29wX3N0YXJ0IGFuZCBsb29wX2VuZCBhcmd1bWVudHM7CglhZGQgbG9vcCBhcmd1bWVudC4KCShmaW5hbF9naXZfdmFsdWUsIGJhY2tfYnJhbmNoX2luX3JhbmdlX3ApOiBMaWtld2lzZS4KCjIwMDAtMDEtMjUgIEdhdmluIFJvbWlnLUtvY2ggIDxnYXZpbkBjeWdudXMuY29tPgoKCSogY29uZmlnL21pcHMvbWlwcy5oIChMRUdJVElNQVRFX0NPTlNUQU5UX1ApOiBGaXggZm9yIG1pcHMxNi4KCjIwMDAtMDEtMjUgIEdhdmluIFJvbWlnLUtvY2ggIDxnYXZpbkBjeWdudXMuY29tPgoKCSogTWFrZWZpbGUuaW4gKGMtZ3BlcmYuaCkgOiBDaGFuZ2UgdGhlICJTZWUiIHBvaW50ZXIgdG8KCXBvaW50IHRvIHRoZSBuZXcgImdlbmVyYXRlZF9maWxlcyIgZG9jLgoKMjAwMC0wMS0yNSAgQ2xpbnRvbiBQb3BldHogIDxjcG9wZXR6QGN5Z251cy5jb20+CgoJKiBjb25maWcvZnAtYml0LmMgKF91bm9yZF9mMik6IEZpeCB0eXBvLgoKMjAwMC0wMS0yNSAgWmFjayBXZWluYmVyZyAgPHphY2tAd29sZXJ5LmN1bWIub3JnPgoKCSogYy1jb21tb24uYywgYy1kZWNsLmMsIGMtbGFuZy5jLCBjLWxleC5jLCBjLXBhcnNlLmluLCBjLXByYWdtYS5jLAoJYy10eXBlY2suYywgb2JqYy9vYmpjLWFjdC5jOiBSZW1vdmUgYWxsIHJlZmVyZW5jZXMgdG8gb2JzdGFjawoJZnVuY3Rpb25zIG9ic29sZXRlZCBieSBHQywgc3VjaCBhcyBwdXNoX29ic3RhY2tzX25vY2hhbmdlLAoJZW5kX3RlbXBvcmFyeV9hbGxvY2F0aW9uLCBzYXZlYWxsb2MsIHNhdmVhYmxlX3RyZWVfY29ucywgZXRjLgoJYW5kIGNvZGUgd2hpY2ggZXhpc3RlZCBvbmx5IHRvIGRlY2lkZSB3aGV0aGVyIG9yIG5vdCB0byBjYWxsCgl0aGVtLiAgUmVtb3ZlIG5vdy11bnVzZWQgTkVTVEVEIGFyZ3VtZW50IGZyb20gc3RhcnRfZnVuY3Rpb247CglhbGwgY2FsbGVycyBjaGFuZ2VkLiAgRG8gbm90IGNoYW5nZSBiZWhhdmlvciBiYXNlZCBvbiBnZ2NfcC4KCVRoZSB1c2Ugb2YgdGhlIGl4cF9vYnN0YWNrIGluIGMtaXRlcmF0ZS5jIGFuZCB0aGUgdXRpbF9vYnN0YWNrCglpbiBvYmpjL29iamMtYWN0LmMgcmVtYWluOyB0aGVzZSBhcmUgbm90IG9ic29sZXRlZCBieSBnYXJiYWdlCgljb2xsZWN0aW9uLgoJKiBjLXRyZWUuaDogVXBkYXRlIHByb3RvdHlwZSBmb3Igc3RhcnRfZnVuY3Rpb24uCgoJKiBjLXBhcnNlLnksIGMtcGFyc2UuYywgb2JqYy9vYmpjLXBhcnNlLmMsIG9iamMvb2JqYy1wYXJzZS55OiBSZWJ1aWxkLgoKMjAwMC0wMS0yNSAgQ2xpbnRvbiBQb3BldHogIDxjcG9wZXR6QGN5Z251cy5jb20+CgoJKiBjb25maWcvbWlwcy9taXBzLm1kICh6ZXJvX2V4dGVuZHNpZGkyX2ludGVybmFsKTogRGlzYWJsZSBmb3IKCW1pcHMxNi4KCjIwMDAtMDEtMjUgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgoJKiBzcGFyYy1wcm90b3MuaCAoc2VsZWN0X2NjX21vZGUpOiBEZWNsYXJlLgoJKiBzcGFyYy5jIChzZWxlY3RfY2NfbW9kZSk6IE5ldy4gIEhhbmRsZSB1bm9yZGVyZWQgY29tcGFyZXMuCgkob3V0cHV0X2NicmFuY2gpOiBBbHdheXMgcmV2ZXJzZSB2aWEgY29kZSBjaGFuZ2UuICBIYW5kbGUKCXVub3JkZXJlZCBjb21wYXJlcy4gIEZhY3RvciB0ZXN0cyBhbmQgc3RyaW5nIHVwZGF0ZXMuCgkqIHNwYXJjLmggKFNFTEVDVF9DQ19NT0RFKTogU3BsaXQgb3V0IHRvIHNlbGVjdF9jY19tb2RlLgoJKFJFVkVSU0lCTEVfQ0NfTU9ERSk6IEFsc28gZXhjbHVkZSBDQ0ZQbW9kZS4KCSogc3BhcmMubWQgKGJ1bm9yZGVyZWQsIGJvcmRlcmVkKTogTmV3LgoJKGJ1bmd0LCBidW5sdCwgYnVuZXEsIGJ1bmdlLCBidW5sZSk6IE5ldy4KCjIwMDAtMDEtMjUgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgoJKiBkd2FyZjJvdXQuYyAoZHdhcmYyb3V0X2luaXQpOiBVc2UgZ2djX2FkZF9ydHhfdmFycmF5X3Jvb3QuCgkqIGdnYy1jb21tb24uYyAoZ2djX2FkZF9ydHhfdmFycmF5X3Jvb3QpOiBOZXcuCgkoZ2djX21hcmtfcnR4X3ZhcnJheSk6IE5ldy4KCShnZ2NfbWFya19ydHhfdmFycmF5X3B0cik6IE5ldy4gIFNoaWZ0IGFsbCBnZ2NfbWFya19mb29fcHRyCglmdW5jdGlvbnMgZG93biBiZWxvdyBnZ2NfbWFya19mb28uCgkqIGdnYy5oIChnZ2NfYWRkX3J0eF92YXJyYXlfcm9vdCwgZ2djX21hcmtfcnR4X3ZhcnJheSk6IERlY2xhcmUuCgoyMDAwLTAxLTI1ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEBjeWdudXMuY29tPgoKCSogYWxwaGEuYyAoc2Vjb25kYXJ5X3JlbG9hZF9jbGFzcyk6IERvbid0IGFsbG9jYXRlIGEgc2Vjb25kYXJ5Cglmb3IgaW50ZWdyYWwgbW9kZSBtZW1vcmllcyBpbnRvIEZMT0FUX1JFR1MuICBSZWFycmFuZ2UgdGhlIG1vcmUKCWNvbXBsaWNhdGVkIG1lbW9yeSBleHByZXNzaW9uIGlud2FyZC4KCjIwMDAtMDEtMjUgIFphY2sgV2VpbmJlcmcgIDx6YWNrQHdvbGVyeS5jdW1iLm9yZz4KCgkqIGluY2xoYWNrLmRlZjogRml4ZXMgdG8gcGxheSBuaWNlciB3aXRoIEZyZWVCU0QsIGFuZAoJY29ycmVjdGlvbnMgdG8gY29tbWVudHMuCgkoY3h4X3VucmVhZHkpOiBBZGQgc2VsZWN0IGV4cHJlc3Npb24uCgkoaXJpeF9zb2NrYWRkcik6IEFkZCBieXBhc3MgZXhwcmVzc2lvbi4KCShtYWNoaW5lX2Fuc2lfaF92YV9saXN0KTogTmV3IGZpeC4KCShzdGRpb192YV9saXN0KTogTm8gbmVlZCB0byBlZGl0IF9CU0RfVkFfTElTVF8uCglTcGxpdCBvdXQgYWRkaXRpb24gb2YgIiNpbmNsdWRlIDxzdGRhcmcuaD4iIHRvLi4uCgkoc3RkaW9fc3RkYXJnX2gpOiAuLi4gaGVyZS4KCShzeXN0eXBlc19mb3JfYWl4KTogUmVuYW1lIHRvIHN5c3R5cGVzX3N0ZGxpYl9zaXplX3QuICBBcHBseQoJdG8gc3RkbGliLmggYWxzby4gIERvIG5vdCBtdW5nZSBfQlNEX1NJWkVfVF8uCgkoc3lzel9zdGRsaWJfZm9yX3N1bik6IERlbGV0ZSBkdXBsaWNhdGUgZml4IGZvciB1bnByb3RlY3RlZAoJc2l6ZV90LgoJKHVsdHJpeF9pZmRlZik6IFRpZ2h0ZW4gdXAgc2VsZWN0IGV4cHJlc3Npb24uCgoJKiBmaXhpbmNsLnRwbDogRXhvcmNpc2UgJ2V4ZXNlbCcuICBSZXdyaXRlIGNhbGN1bGF0aW9ucyBvZgoJcmVfY3QgYW5kIG1heF9tYWNoIHRvIGF2b2lkIHVzZSBvZiBzaGVsbC4gIE1ha2UgcHJpbnRlZCBuYW1lcwoJbWF0Y2ggbmFtZXMgaW4gaW5jbGhhY2suZGVmLiAgVXNlIHN0YXRpYyBjb3B5cmlnaHQgZGF0ZS4KCURvbid0IGNvdW50IGNfdGVzdCBhbmQgdGVzdCBleHByZXNzaW9ucyBhcyByZXF1aXJpbmcgcmVnZXhfdAoJc2xvdHMuICBBZGQgc29tZSBjb21tZW50YXJ5LgoJKiBpbmNsaGFjay50cGw6IERvIG5vdCBpbmNsdWRlIHRoZSAnVGhpcyBzY3JpcHQgY29udGFpbnMgTgoJZml4dXAgc2NyaXB0cycgbGluZSBpZiBQUk9HUkFNIGlzIGRlZmluZWQuICBVc2Ugc3RhdGljCgljb3B5cmlnaHQgZGF0ZS4KCjIwMDAtMDEtMjQgIEphc29uIE1lcnJpbGwgIDxqYXNvbkBjYXNleS5jeWdudXMuY29tPgoKCSogZHdhcmYyb3V0LmM6IGluY2x1ZGUgInZhcnJheS5oIiwgbm90IGR5bi1zdHJpbmcuaC4KCShBU01fT1VUUFVUX0RXQVJGMl9BRERSX0NPTlNULCBBU01fTkFNRV9UT19TVFJJTkcpOiBMb3NlLgoJKGFkZHJfY29uc3RfdG9fc3RyaW5nLCBhZGRyX3RvX3N0cmluZyk6IExvc2UuCgkoQVNNX09VVFBVVF9EV0FSRl9BRERSX0NPTlNUKTogQ29weSBmcm9tIGR3YXJmb3V0LmMuCgkoc3RydWN0IGR3X3ZhbF9zdHJ1Y3QpOiB2YWxfYWRkciBpcyBub3cgYW4gcnR4LgoJKGFkZF9BVF9hZGRyLCBBVF9hZGRyLCBmcmVlX0FULCBvdXRwdXRfYXJhbmdlcyk6IEFkanVzdC4KCSh1c2VkX3J0eF92YXJyYXkpOiBOZXcgdmFycmF5LgoJKGR3YXJmMm91dF9pbml0KTogSW5pdGlhbGl6ZSBpdC4KCShzYXZlX3J0eCk6IE5ldyBmbi4KCShtZW1fbG9jX2Rlc2NyaXB0b3IsIGFkZF9jb25zdF92YWx1ZV9hdHRyaWJ1dGUpOiBDYWxsIGl0IGluc3RlYWQgb2YKCWFkZHJfdG9fc3RyaW5nLgoJKiBhcm0vdGVsZi5oLCBhcm0vdW5rbm93bi1lbGYuaCwgbW4xMDIwMC5oLCBtbjEwMzAwLmgsCglzcGFyYy9zcDY0LWVsZi5oOiBSZW1vdmUgZGVmaW5pdGlvbiBvZiBBU01fT1VUUFVUX0RXQVJGMl9BRERSX0NPTlNULgoJKiBNYWtlZmlsZS5pbiAoZHdhcmYyb3V0Lm8pOiBVcGRhdGUgZGVwZW5kZW5jaWVzLgoKMjAwMC0wMS0yNCAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAY3lnbnVzLmNvbT4KCgkqIGkzODYuYyAoaTM4Nl9kd2FyZl9vdXRwdXRfYWRkcl9jb25zdCk6IE5ldy4KCSogaTM4Ni5oIChBU01fT1VUUFVUX0RXQVJGX0FERFJfQ09OU1QpOiBOZXcuCgoJKiBkd2FyZjJvdXQuYyAobWVtX2xvY19kZXNjcmlwdG9yKTogQ2FsbCBBU01fU0lNUExJRllfRFdBUkZfQUREUgoJaWYgZGVmaW5lZC4KCSogZHdhcmZvdXQuYyAob3V0cHV0X21lbV9sb2NfZGVzY3JpcHRvcik6IExpa2V3aXNlLgoJKiBpMzg2LmMgKGkzODZfc2ltcGxpZnlfZHdhcmZfYWRkcik6IE5ldy4KCSogaTM4Ni5oIChBU01fU0lNUExJRllfRFdBUkZfQUREUik6IE5ldy4KCk1vbiBKYW4gMjQgMTY6NTY6MTAgMjAwMCAgSmltIFdpbHNvbiAgPHdpbHNvbkBjeWdudXMuY29tPgoKCSogZHdhcmYyb3V0LmMgKGdlbl9zdHJ1Y3Rfb3JfdW5pb25fdHlwZV9kaWUpOiBTZXQgY29tcGxldGUgaWYKCVRZUEVfU1RVQl9ERUNMIGlzIE5VTEwuCgoyMDAwLTAxLTI0ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEBjeWdudXMuY29tPgoKCSogYnVpbHRpbnMuYyAoZXhwYW5kX3RyZWVfYnVpbHRpbik6IE1vdmUgLi4uCgkqIGMtY29tbW9uLmMgKGV4cGFuZF90cmVlX2J1aWx0aW4pOiAuLi4gaGVyZS4KCjIwMDAtMDEtMjUgIE1pY2hhZWwgSGF5ZXMgIDxtLmhheWVzQGVsZWMuY2FudGVyYnVyeS5hYy5uej4KCgkqIGxvb3AuaCAoTE9PUF9JTkZPKTogTmV3IGFjY2Vzc29yIG1hY3JvLgoJKiBiYXNpYy1ibG9jay5oIChzdHJ1Y3QgbG9vcCk6IFJlbmFtZSBmaWVsZCBgaW5mbycgdG8gYGF1eCcuCgkqIGxvb3AuYyAoc2Nhbl9sb29wKTogUmVwbGFjZSBsb29wLT5pbmZvIHdpdGggTE9PUF9JTkZPIChsb29wKS4KCShwcmVzY2FuX2xvb3AsIHN0cmVuZ3RoX3JlZHVjZSwgY2hlY2tfZGJyYV9sb29wLCBpbnNlcnRfYmN0KTogTGlrZXdpc2UuCgkqIHVucm9sbC5jIChsb29wX2l0ZXJhdGlvbnMsIHVucm9sbF9sb29wKTogTGlrZXdpc2UuCgoyMDAwLTAxLTI0ICBDaHJpc3RvcGhlciBGYXlsb3IgPGNnZkBjeWdudXMuY29tPgoKCSogY29uZmlnL2kzODYvdC1jeWd3aW46IEFjY29tbW9kYXRlIG5ldyB3aW5zdXAgZGlyZWN0b3J5IGxheW91dAoJd2hlbiBzZWFyY2hpbmcgZm9yIGluY2x1ZGUgZmlsZXMuCgoyMDAwLTAxLTI0ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEBjeWdudXMuY29tPgoKCSogcnRsLmRlZjogQWRkIHVub3JkZXJlZCBmcCBjb21wYXJpc29ucy4KCSogdHJlZS5kZWY6IExpa2V3aXNlLgoJKiB0cmVlLmg6IEFkZCBJU08gQyA5eCB1bm9yZGVyZWQgZnAgY29tcGFyaXNvbiBidWlsdGlucy4KCgkqIGJ1aWx0aW5zLmMgKGV4cGFuZF90cmVlX2J1aWx0aW4pOiBOZXcgZnVuY3Rpb24uCgkqIGMtdHlwZWNrLmMgKGJ1aWxkX2Z1bmN0aW9uX2NhbGwpOiBVc2UgaXQuCgkoYnVpbGRfYmluYXJ5X29wKTogU3VwcG9ydCB1bm9yZGVyZWQgY29tcGFyZXMuCgkqIGMtY29tbW9uLmMgKGNfY29tbW9uX25vZGVzX2FuZF9idWlsdGlucyk6IEFkZCB1bm9yZGVyZWQgY29tcGFyZXMuCgoJKiBjb21iaW5lLmMgKGtub3duX2NvbmQpOiBIYW5kbGUgcmV2ZXJzZV9jb25kaXRpb24gcmV0dXJuaW5nIFVOS05PV04uCgkocmV2ZXJzaWJsZV9jb21wYXJpc29uX3ApOiBBbGxvdyBVTk9SREVSRUQvT1JERVJFRCB0byBiZSByZXZlcnNlZC4KCSogY3NlLmMgKGZvbGRfcnR4KTogQ2hlY2sgRkxPQVRfTU9ERV9QIGJlZm9yZSByZXZlcnNpbmcuCgkocmVjb3JkX2p1bXBfZXF1aXYpOiBIYW5kbGUgcmV2ZXJzZV9jb25kaXRpb24gcmV0dXJuaW5nIFVOS05PV04uCgkqIGp1bXAuYyAocmV2ZXJzZV9jb25kaXRpb24pOiBEb24ndCBhYm9ydCBmb3IgVU5MRSBldGMsIGJ1dAoJcmV0dXJuIFVOS05PV04uCgkoc3dhcF9jb25kaXRpb24pOiBIYW5kbGUgdW5vcmRlcmVkIGNvbXBhcmVzLgoJKHRocmVhZF9qdW1wcyk6IENoZWNrIGNhbl9yZXZlcnNlIGJlZm9yZSByZXZlcnNpbmcuCgkqIGxvb3AuYyAoZ2V0X2NvbmRpdGlvbik6IExpa2V3aXNlLiAgQWxsb3cgVU5PUkVSRUQvT1JERVJFRCB0byBiZQoJcmV2ZXJzZWQgZm9yIEZQLgoKCSogb3B0YWJzLmMgKGNhbl9jb21wYXJlX3ApOiBOZXcgYXJndW1lbnQgQ09ERS4gIFZlcmlmeSBicmFuY2ggb3IKCXNldGNjIGlzIHByZXNlbnQgYmVmb3JlIGFja2luZyBmb3IgY21wX29wdGFiLiAgVXBkYXRlIGFsbCBjYWxsZXJzLgoJKHByZXBhcmVfZmxvYXRfbGliX2NtcCwgaW5pdF9vcHRhYnMpOiBIYW5kbGUgVU5PUkRFUkVELgoJKiBleHBtZWQuYyAoZG9fY21wX2FuZF9qdW1wKTogVXBkYXRlIGZvciBjYW5fY29tcGFyZV9wLgoJKiBleHByLmMgKGV4cGFuZF9leHByKTogTGlrZXdpc2UuICBTdXBwb3J0IHVub3JkZXJlZCBjb21wYXJlcy4KCShkb19qdW1wLCBkb19zdG9yZV9mbGFnKTogTGlrZXdpc2UuCgkqIGV4cHIuaCAoZW51bSBsaWJmdW5jX2luZGV4KTogQWRkIHVub3JkZXJlZCBjb21wYXJlcy4KCgkqIE1ha2VmaWxlLmluIChGUEJJVF9GVU5DUyk6IEFkZCBfdW5vcmRfc2YuCgkoRFBCSVRfRlVOQ1MpOiBBZGQgX3Vub3JkX2RmLgoJKiBjb25maWcvZnAtYml0LmMgKF91bm9yZF9mMik6IE5ldy4KCSogZnAtdGVzdC5jIChtYWluKTogVHJ5IHVub3JkZXJlZCBjb21wYXJlIGJ1aWx0aW5zLgoKCSogYWxwaGEtcHJvdG9zLmggKGFscGhhX2ZwX2NvbXBhcmlzb25fb3BlcmF0b3IpOiBEZWNsYXJlLgoJKiBhbHBoYS5jIChhbHBoYV9jb21wYXJpc29uX29wZXJhdG9yKTogQ2hlY2sgbW9kZSBwcm9wZXJseS4KCShhbHBoYV9zd2FwcGVkX2NvbXBhcmlzb25fb3BlcmF0b3IpOiBMaWtld2lzZS4KCShzaWduZWRfY29tcGFyaXNvbl9vcGVyYXRvcik6IExpa2V3aXNlLgoJKGFscGhhX2ZwX2NvbXBhcmlzb25fb3BlcmF0b3IpOiBOZXcuCgkoYWxwaGFfZW1pdF9jb25kaXRpb25hbF9icmFuY2gpOiBIYW5kbGUgdW5vcmRlcmVkIGNvbXBhcmVzLgoJKiBhbHBoYS5oIChQUkVESUNBVEVfQ09ERVMpOiBVcGRhdGUuCgkqIGFscGhhLm1kIChmcCBjb21wYXJlcyk6IFVzZSBhbHBoYV9mcF9jb21wYXJpc29uX29wZXJhdG9yLgoJKGJ1bm9yZGVyZWQsIGJvcmRlcmVkKTogTmV3LgoKMjAwMC0wMS0yNCAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAY3lnbnVzLmNvbT4KCgkqIGFscGhhLmMgKGFscGhhX2VtaXRfeGZsb2F0aW5nX2N2dCk6IFRoaW5rbyBpbiBvcGVyYW5kIG1hbmlwdWxhdGlvbi4KCSogYWxwaGEubWQgKG1vdnRmKTogTmV3IGV4cGFuZGVyLCBpbnNuLCBhbmQgc3BsaXR0ZXIuCgpNb24gSmFuIDI0IDE5OjQ5OjQ3IE1FVCAyMDAwICBKYW4gSHViaWNrYSAgPGpoQHN1c2UuY3o+CgoJKiByZWctc3RhY2suYyAoc3Vic3Rfc3RhY2tfcmVnc19wYXQpOiBIYW5kbGUgY29ycmVjdGx5IFVTRXMgb2YKCWRlYWQgcmVnaXN0ZXJzLgoKTW9uIEphbiAyNCAxNzozNzozMSBNRVQgMjAwMCAgSmFuIEh1Ymlja2EgIDxqaEBzdXNlLmN6PgoKCSogaTM4Ni5oIChGSVJTVF9QU0VVRE9fUkVHSVNURVIpOiBTZXQgdG8gMjEuCgkoRklYRURfUkVHSVNURVJTLCBDQUxMX1VTRURfUkVHSVNURVJTLAoJIFJFR19BTExPQ19PUkRFUik6IEFkZCBmcmFtZSBwb2ludGVyCgkoRlJBTUVfUE9JTlRFUl9SRUdOVU0pOiBTZXQgdG8gMjAKCShIQVJEX0ZSQU1FX1BPSU5URVJfUkVHTlVNKTogTmV3IG1hY3JvLgoJKEVMSU1JTkFCTEVfUkVHUyk6IEVsaW1pbmF0ZSBBUkdfUE9JTlRFUiBhbmQgRlJBTUVfUE9JTlRFUgoJdG8gSEFSRF9GUkFNRV9QT0lOVEVSLgoJKFJFR05PX09LX0ZPUl9CQVNFX1ApOiBBY2NlcHQgRlJBTUVfUE9JTlRFUl9SRUdOVU0KCShSRUdfT0tfRk9SX0lOREVYX05PTlNUUklDVF9QKTogTGlrZXdpc2UuCgkoUkVHX09LX0ZPUl9CQVNFX05PTlNUUklDVF9QKTogTGlrZXdpc2UuCgkoSElfUkVHSVNURVJfTkFNRVMpOiBBZGQgImZyYW1lIi4KCShDQU5fRUxJTUlOQVRFKTogSGFuZGxlIEZSQU1FX1BPSU5URVJfUkVHTlVNIGVsaW1pbmF0aW9uLgoJKGRlYnVnX3JlZyk6IEhhbmRsZSBGUkFNRV9QT0lOVEVSX1JFR05VTS4KCShyZWdfY2xhc3MpOiBBZGQgYXJnIHBvaW50ZXIgYW5kIGZyYW1lIHBvaW50ZXIgdG8gTk9OX1FfUkVHUywKCUdFTkVSQUxfUkVHUyBhbmQgSU5ERVhfUkVHUy4KCSogaTM4Ni5jIChTQVZFRF9SRUdTX0ZJUlNUKTogbmV3IG1hY3JvLgoJKEFUX0JQKTogVXNlIGhhcmRfZnJhbWVfcG9pbnRlcl9ydHggaW5zdGVhZCBvZiBmcmFtZV9wb2ludGVyX3J0eAoJKGl4ODZfZGVjb21wb3NlX2FkZHJlc3MsIG1lbW9yeV9hZGRyZXNzX2xlbmd0aCk6IExpa2V3aXNlLgoJKHJlZ2NsYXNzX21hcCk6IEFkZCBmcmFtZSBwb2ludGVyLgoJKGNhbGxfaW5zbl9vcGVyYW5kKTogSGFuZGxlIGZyYW1lX3BvaW50ZXJfcnR4LgoJKHJlZ19ub19zcF9vcGVyYW5kKTogTGlrZXdpc2UuCgkoaXg4Nl9kZWNvbXBvc2VfYWRkcmVzcyk6IEhhbmRsZSBmcmFtZV9wb2ludGVyX3J0eCBhcyBzdGFja19wb2ludGVyX3J0eC4KCShwcmludF9vcGVyYW5kLCBsZWdpdGltaXplX3BpY19hZGRyZXNzKTogRml4IGZvcm1hdGluZy4KCShpeDg2X2NvbXB1dGVfZnJhbWVfc2l6ZSk6IE1ha2Ugc3RhdGljLCB1cGRhdGUgcHJvdG90eXBlLCBuZXcKCXBhcmFtZXRlcnMgcGFkZGluZzEsIHBhZGRpbmcyLCB1c2UgaXg4Nl9uc2F2ZWRfcmVncywgdXNlCglzdGFja19hbGlnbm1lbnRfbmVlZGVkLgoJKGl4ODZfaW5pdGlhbF9lbGltaW5hdGlvbl9vZmZzZXQpOiBIYW5kbGUgRlJBTUVfUE9JTlRFUl9SRUdOVU0KCXRvIEhBUkRfRlJBTUVfUE9JTlRFUl9SRUdOVU0gY29udmVyc2lvbnMuCgkoaXg4Nl9leHBhbmRfcHJvbG9ndWUpOiBIYW5kbGUgU0FWRURfUkVHU19GSVJTVCBwcm9sb2d1ZXMuCgkoaXg4Nl9leHBhbmRfZXBpbG9ndWUpOiBIYW5kbGUgU0FWRURfUkVHU19GSVJTVCBlcGlsb2d1ZXMuCgkocHJpbnRfcmVnKTogQWJvcnQgb24gRlJBTUVfUE9JTlRFUl9SRUdOVU0KCk1vbiBKYW4gMjQgMTY6NTA6MDggTUVUIDIwMDAgIEphbiBIdWJpY2thICA8amhAc3VzZS5jej4KCgkqIGkzODYuaCAoUFJFRElDQVRFX0NPREVTKTogQWRkIGFsaWduZWRfb3BlcmFuZC4KCSogaTM4Ni5jIChhbGlnbmVkX29wZXJhbmQpOiBOZXcgZnVuY3Rpb24uCgkoaXg4Nl9hbGlnbmVkX3ApOiBLaWxsLgoJKiBpMzg2Lm1kIChtb3ZoaV8xKTogRW1pdCBtb3YgZm9yIGFsaWduZWQgb3BlcmFuZHMuCgkocHJvbW90aW5nIHBlZXAycyk6IFVzZSBhbGlnbmVkX29wZXJhbmQuCgoyMDAwLTAxLTIzICBaYWNrIFdlaW5iZXJnICA8emFja0B3b2xlcnkuY3VtYi5vcmc+CgoJKiBmaXhpbmMvZml4Zml4ZXMuYyAoZml4X2NoYXJfbWFjcm9fdXNlcyk6IENvcnJlY3QgcmVndWxhcgoJZXhwcmVzc2lvbiB0byBhbGxvdyB1bmRlcnNjb3JlcyBpbiBtYWNybyBuYW1lcy4KCShmaXhfY2hhcl9tYWNyb19kZWZpbmVzKTogSW5jcmVtZW50IHNjYW5uaW5nIHBvaW50ZXIuCgoyMDAwLTAxLTIzICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEBjeWdudXMuY29tPgoKCSogYWxwaGEvb3NmLmggKFRBUkdFVF9IQVNfWEZMT0FUSU5HX0xJQlMpOiBEZWZpbmUuCgkqIGFscGhhL29zZjUuaDogTmV3IGZpbGUuCgkqIGNvbmZpZ3VyZS5pbiAoYWxwaGEtKi1vc2Y1KTogQWRkIGl0IHRvIHRtX2ZpbGUuCgoJKiBlbWl0LXJ0bC5jIChvcGVyYW5kX3N1YndvcmQpOiBTdXBwb3J0IFRGbW9kZSBvbiBhIDY0LWJpdCB0YXJnZXQuCgoJKiBhbHBoYS1wcm90b3MuaCAoYWxwaGFfZW1pdF94ZmxvYXRpbmdfYXJpdGgpOiBEZWNsYXJlLgoJKGFscGhhX2VtaXRfeGZsb2F0aW5nX2N2dCwgZnVuY3Rpb25fYXJnKTogRGVjbGFyZS4KCSogYWxwaGEuYyAoYWxwaGFfZW1pdF9jb25kaXRpb25hbF9icmFuY2gpOiBDYWxsCglhbHBoYV9lbWl0X3hmbG9hdGluZ19jb21wYXJlIGZvciBURm1vZGUgY29tcGFyZXMuCgkoYWxwaGFfbG9va3VwX3hmbG9hdGluZ19saWJfZnVuYyk6IE5ldy4KCShhbHBoYV9jb21wdXRlX3hmbG9hdGluZ19tb2RlX2FyZyk6IE5ldy4KCShhbHBoYV9lbWl0X3hmbG9hdGluZ19saWJjYWxsKTogTmV3LgoJKGFscGhhX2VtaXRfeGZsb2F0aW5nX2FyaXRoKTogTmV3LgoJKGFscGhhX2VtaXRfeGZsb2F0aW5nX2NvbXBhcmUpOiBOZXcuCgkoYWxwaGFfZW1pdF94ZmxvYXRpbmdfY3Z0KTogTmV3LgoJKHByaW50X29wZXJhbmQpOiBBZGQgZGVmYXVsdCBhYm9ydCBjYXNlLgoJKGZ1bmN0aW9uX2FyZyk6IE1pbmQgRlVOQ1RJT05fQVJHX1BBU1NfQllfUkVGRVJFTkNFLgoJKiBhbHBoYS5oIChUQVJHRVRfSEFTX1hGTE9BVElOR19MSUJTKTogTmV3LgoJKEJJR0dFU1RfQUxJR05NRU5UKTogSW5jcmVhc2UgdG8gMTI4IGJpdHMuCgkoUkVUVVJOX0lOX01FTU9SWSk6IFRydWUgZm9yIFRGL1RDbW9kZS4KCShBTFBIQV9BUkdfU0laRSk6IFRGL1RDbW9kZSBpcyBwYXNzZWQgaW5kaXJlY3QuCgkoRlVOQ1RJT05fQVJHKTogTW92ZSB0byBmdW5jdGlvbl9hcmcuCgkoRlVOQ1RJT05fQVJHX1BBU1NfQllfUkVGRVJFTkNFKTogTmV3LgoJKEFTTV9PVVRQVVRfTE9OR19ET1VCTEUpOiBOZXcuCgkoQVNNX09VVFBVVF9ET1VCTEUpOiBBbHdheXMgb3V0cHV0IGJpdHMuCgkqIGFscGhhLm1kIChhZGR0ZjMsIGRpdnRmMywgbXVsdGYzLCBzdWJ0ZjMsIGNtcHRmKTogTmV3LgoJKGZpeF90cnVuY3RmZGkyLCBmbG9hdGRpdGYyLCBmbG9hdHVuc2RpdGYyKTogTmV3LgoJKGV4dGVuZGRmdGYyLCB0cnVuY3RmZGYyKTogTmV3LgoKMjAwMC0wMS0yMyAgQWxleGFuZHJlIE9saXZhICA8b2xpdmFAbHNkLmljLnVuaWNhbXAuYnI+CgoJKiBjb25maWcvc3BhcmMvc29sMi1zbGQtNjQuaCAoVFJBTlNGRVJfRlJPTV9UUkFNUE9MSU5FKTogTW92ZWQuLi4KCSogY29uZmlnL3NwYXJjL3NvbDIuaDogLi4uIGhlcmUuCgoyMDAwLTAxLTI0ICBNaWNoYWVsIEhheWVzICA8bS5oYXllc0BlbGVjLmNhbnRlcmJ1cnkuYWMubno+CgoJKiBiYXNpYy1ibG9jay5oIChzdHJ1Y3QgbG9vcHMpOiBOZXcgZmllbGQgYGxldmVscycuCgkqIGZsb3cuYyAoZmxvd19sb29wc19sZXZlbF9jb21wdXRlKTogVHJhdmVyc2UgYWxsIG91dGVyIGxvb3BzLgoJKGZsb3dfbG9vcF9sZXZlbF9jb21wdXRlKTogSW5pdGlhbGl6ZSBsZXZlbCB0byAxLgoJKGZsb3dfbG9vcHNfZmluZCk6IFNldCBsb29wcy0+bGV2ZWxzLgoJKGZsb3dfbG9vcHNfZHVtcCk6IFByaW50IGxvb3BzLT5sZXZlbHMuCgoyMDAwLTAxLTIzICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEBjeWdudXMuY29tPgoKCSogbGliZ2NjMi5jIChkd2FyZl9yZWdfc2l6ZV90YWJsZSk6IFNpemUgd2l0aCBEV0FSRl9GUkFNRV9SRUdJU1RFUlMuCgkodGhyb3dfaGVscGVyKTogSXRlcmF0ZSBvdmVyIERXQVJGX0ZSQU1FX1JFR0lTVEVSUy4KCjIwMDAtMDEtMjMgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgoJKiBpMzg2LmMgKGRieF9yZWdpc3Rlcl9tYXAsIHN2cjRfZGJ4X3JlZ2lzdGVyX21hcCk6IE5ldy4KCSogaTM4Ni5oIChEQlhfUkVHSVNURVJfTlVNQkVSKTogVXNlIHRoZW0uCgkqIGkzODYvYmVvcy1lbGYuaCwgaTM4Ni9mcmVlYnNkLWVsZi5oLCBpMzg2L2kzODZlbGYuaDogTGlrZXdpc2UuCgkqIGkzODYvbGludXguaCwgaTM4Ni9vc2Zyb3NlLmgsIGkzODYvcHR4NC1pLmg6IExpa2V3aXNlLgoJKiBpMzg2L3J0ZW1zZWxmLmgsIGkzODYvc2NvNS5oLCBpMzg2L3N5c3Y0Lmg6IExpa2V3aXNlLgoJKiBpMzg2L3NlcXVlbnQuaDogS2lsbCBpbmNvcnJlY3QgY29tbWVudC4KCjIwMDAtMDEtMjMgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBnZ2MtcGFnZS5jIChzdHJ1Y3QgcGFnZV9lbnRyeSk6IE1ha2UgYGNvbnRleHRfZGVwdGgnIGFuCglgdW5zaWduZWQgc2hvcnQnLgoJKHN0cnVjdCBnbG9iYWxzKTogTGlrZXdpc2UuCgoyMDAwLTAxLTIzICBDbGludG9uIFBvcGV0eiAgPGNwb3BldHpAY3lnbnVzLmNvbT4KCgkqIGxvb3AuYyAoY2hlY2tfZGJyYV9sb29wKTogV2hlbiBjaGVja2luZyBhIGxvb3AgZm9yCglyZXZlcnNhYmlsaXR5LCBjaGVjayB0aGUgc291cmNlIG9mIGFueSBzdG9yZXMgdG8gZW5zdXJlCgl0aGV5IGRvbid0IGRlcGVuZCBvbiBhbiBpbml0aWFsIHZhbHVlLgoKMjAwMC0wMS0yMyAgTWljaGFlbCBIYXllcyAgPG0uaGF5ZXNAZWxlYy5jYW50ZXJidXJ5LmFjLm56PgoKCSogY29uZmlnL2M0eC9jNHguaCAoQVNNX09VVFBVVF9CU1MpOiBSZWRlZmluZS4KCjIwMDAtMDEtMjIgIFphY2sgV2VpbmJlcmcgIDx6YWNrQHdvbGVyeS5jdW1iLm9yZz4KCgkqIGZpeGluYy9maXhpbmNsLmM6IE1vdmUgZGVjbGFyYXRpb25zIG9mICdwel9mbmFtZScgYW5kCgkncHpfc2NhbicgaW50byBzY29wZSBvZiBlbnRpcmUgZnVuY3Rpb24uICBPbmx5IGFmZmVjdHMKCWNvbXBpbGVzIHdpdGggLURERUJVRy4KCjIwMDAtMDEtMjIgIEFsYW4gTW9kcmEgPGFsYW5AU1BSSS5MZXZlbHMuVW5pU0EuRWR1LkF1PgoKCSogY29uZmlnL2VsZm9zLmggKFVOSVFVRV9TRUNUSU9OKTogUmVzdG9yZSB1bmluaXRpYWxpemVkIGRhdGEKCXNlY3Rpb24gbmFtaW5nIHRvIHRoYXQgcHJpb3IgdG8gMjAwMC0wMS0wNyBwYXRjaC4KCSogY29uZmlnL21pcHMvZWxmLmggKFVOSVFVRV9TRUNUSU9OKTogRGl0dG8uCgkqIGNvbmZpZy9taXBzL2VsZjY0LmggKFVOSVFVRV9TRUNUSU9OKTogRGl0dG8uCgkqIGNvbmZpZy9taXBzL2lyaXM2Z2xkLmggKFVOSVFVRV9TRUNUSU9OKTogRGl0dG8uCgkqIGNvbmZpZy9pMzg2L2ludGVyaXguYyAoVU5JUVVFX1NFQ1RJT04pOiBEaXR0by4KCSogY29uZmlnL2kzODYvd2lubnQuYyAoVU5JUVVFX1NFQ1RJT04pOiBEaXR0by4KCjIwMDAtMDEtMjIgIEJlcm5kIFNjaG1pZHQgIDxiZXJuZHNAY3lnbnVzLmNvLnVrPgoKCSogY29uZmlnL2FybS9hcm0uYyAoc29mdF9kZl9vcGVyYW5kKTogUmVqZWN0IFNVQlJFR3MgY29udGFpbmluZyBhCgljb25zdGFudC4KCjIwMDAtMDEtMjEgIEppbSBXaWxzb24gIDx3aWxzb25AY3lnbnVzLmNvbT4KCgkqIGZpeGluYy9pbmNsaGFjay50cGw6IFRlc3QgZm9yIGRpcmVjdG9yeSBiZWZvcmUgdHJ5aW5nIHRvIGNkIGludG8gaXQuCgkqIGZpeGluYy9maXhpbmNsLnNoLCBmaXhpbmMvaW5jbGhhY2suc2g6IFJlZ2VuZXJhdGUuCgoyMDAwLTAxLTIxICBaYWNrIFdlaW5iZXJnICA8emFja0B3b2xlcnkuY3VtYi5vcmc+CgoJKiBjcHBoYXNoLmMgKGNoYW5nZV9uZXdsaW5lcyk6IERlbGV0ZSBmdW5jdGlvbi4KCShzdHJ1Y3QgYXJnZGF0YSk6IERlbGV0ZSAnbmV3bGluZXMnIGFuZCAndXNlX2NvdW50JyBmaWVsZHMuCgkobWFjcm9leHBhbmQpOiBSZW1vdmUgY29kZSByZWZlcmVuY2luZyB0aG9zZSBmaWVsZHMuCgoyMDAwLTAxLTIyICBNaWNoYWVsIEhheWVzICA8bS5oYXllc0BlbGVjLmNhbnRlcmJ1cnkuYWMubno+CgoJKiBsb29wLmMgKGxvb3BzX2luZm8pOiBOZXcgdmFyaWFibGUuCgkobG9vcF9vcHRpbWl6ZSk6IEFsbG9jYXRlIGxvb3BzLT5hcnJheSBhbmQgZnJlZSBpdCBvbiBleGl0LgoJQWxsb2NhdGUgbWVtb3J5IGZvciBsb29wc19pbmZvIGFuZCBhc3NpZ24gdG8gZWFjaCBsb29wLAoJcmVwbGFjaW5nIGFsbG9jYS4KCShmaW5kX2FuZF92ZXJpZnlfbG9vcHMpOiBEbyBub3QgYWxsb2NhdGUgbG9vcHMtPmFycmF5LgoKMjAwMC0wMS0yMSAgWmFjayBXZWluYmVyZyAgPHphY2tAd29sZXJ5LmN1bWIub3JnPgoKCSogZml4aW5jL2ZpeGZpeGVzLmMgKG1hY2hpbmVfbmFtZV9maXgpOiBEb24ndCBmcmVlICdzY3JhdGNoJy4KCjIwMDAtMDEtMjEgIEpha3ViIEplbGluZWsgIDxqYWt1YkByZWRoYXQuY29tPgoKCSogY29uZmlnL3NwYXJjL3NwYXJjLm1kIChtb3ZzaV9waWNfbGFiZWxfcmVmKTogQXZvaWQgY3JlYXRpbmcgbmV3Cglwc2V1ZG9zIGlmIGV4cGFuZGVkIGFmdGVyIGZpcnN0IGZsb3cuCgkobW92ZGlfcGljX2xhYmVsX3JlZik6IExpa2V3aXNlLgoKMjAwMC0wMS0yMCAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAY3lnbnVzLmNvbT4KCgkqIGp1bXAuYyAoanVtcF9vcHRpbWl6ZV8xKTogRG9uJ3QgZG8gYWRkcl92ZWMgb3B0aW1pemF0aW9ucyBhdCAtTzAuCgoyMDAwLTAxLTIwICBaYWNrIFdlaW5iZXJnICA8emFja0B3b2xlcnkuY3VtYi5vcmc+CgoJKiBNYWtlZmlsZS5pbiAoZml4aW5jLnNoKTogRGVwZW5kIG9uIHNwZWNzLgoJKiBmaXhpbmMvTWFrZWZpbGUuaW46IEFkZCBydWxlIHRvIGNyZWF0ZSBtYWNobmFtZS5oLgoJKGZpeGxpYi5vKTogRGVwZW5kIG9uIG1hY2huYW1lLmguCgkqIGZpeGluYy9maXh0ZXN0cy5jIChtYWNoaW5lX25hbWUpOiBOZXcgdGVzdC4KCSogZml4aW5jL2ZpeGZpeGVzLmMgKG1hY2hpbmVfbmFtZSk6IE5ldyBmaXguCgkqIGZpeGluYy9maXhsaWIuYyAobW5fZ2V0X3JlZ2V4cHMpOiBOZXcgaGVscGVyIGZ1bmN0aW9uIGZvcgoJdGhlIG1hY2hpbmVfbmFtZSB0ZXN0IGFuZCBmaXguCgkqIGZpeGluYy9maXhsaWIuaDogUHJvdG90eXBlIGl0LgoJKiBmaXhpbmMvaW5jbGhhY2suZGVmIChtYWNoaW5lX25hbWUpOiBVc2UgdGhlIEMgdGVzdCBhbmQgZml4LgoJKiBmaXhpbmMvZml4aW5jbC54LCBmaXhpbmMvaW5jbGhhY2suc2g6IFJlYnVpbGQuCgoJKiBnY2MuYyAoZG9fc3BlY18xKSBbY2FzZSBQXTogVGFrZSBjYXJlIG5vdCB0byBjcmVhdGUKCWlkZW50aWZpZXJzIHdpdGggdGhyZWUgbGVhZGluZyBvciB0cmFpbGluZyB1bmRlcnNjb3Jlcy4KCgkqIGZpeGluYy9NYWtlZmlsZS5pbiAoRklYSU5DX0RFRlMpOiBBZGQgLURJTl9HQ0MuCgkoZml4aW5jbCk6IERvbid0IHNwZWNpZnkgbGlicmFyaWVzIHR3aWNlIG9uIGxpbmsgbGluZS4KCShnbnUtcmVnZXgubyk6IFJlbW92ZSBzcGVjaWFsIHJ1bGUuCgkqIGZpeGluYy9nbnUtcmVnZXguYzogRGVmaW5lIFJFR0VYX01BTExPQyBpZiBDX0FMTE9DQSB3YXMKCWRlZmluZWQgYnkgY29uZmlnLmguICBEbyBub3QgZGVmaW5lIF9SRUdFWF9SRV9DT01QLgoJKHJlZ2NvbXApOiBBbGxvY2F0ZSBhbmQgaW5pdGlhbGl6ZSBhIGZhc3RtYXAuCgkqIGZpeGluYy9nbnUtcmVnZXguaDogRG8gbm90IGRlZmluZSBfUkVHRVhfUkVfQ09NUC4KCjIwMDAtMDEtMjAgIEJyYWQgTHVjaWVyICA8bHVjaWVyQG1hdGgucHVyZHVlLmVkdT4KCgkqIE1ha2VmaWxlLmluIChwcmVkaWN0Lm8pOiBEZXBlbmQgb24gJChFWFBSX0gpLCBub3QgZXhwci5oLgoKMjAwMC0wMS0xOSAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAY3lnbnVzLmNvbT4KCgkqIGZsb3cuYyAocHJvcGFnYXRlX2Jsb2NrKTogUmVwbGFjZSBGSVJTVCwgTEFTVCBhbmQgQk5VTQoJYXJndW1lbnRzIHdpdGggQkIuICBVcGRhdGUgYWxsIGNhbGxlcnMuICBUaWR5IGxpbmUgd3JhcHBpbmcuCgoyMDAwLTAxLTE5ICBDbGludG9uIFBvcGV0eiAgPGNwb3BldHpAY3lnbnVzLmNvbT4KCgkqIGVtaXQtcnRsLmMgKHRyeV9zcGxpdCk6IFJldHVybiBsYXN0X2luc24gaWYgd2Ugc3BsaXQgdGhlCglsYXN0X2luc24uCgpUaHUgSmFuIDIwIDAxOjAxOjIzIE1FVCAyMDAwICBKYW4gSHViaWNrYSAgPGpoQHN1c2UuY3o+CgoJKiBpMzg2LXByb3Rvcy5oIChpeDg2X2NvbXB1dGVfZnJhbWVfc2l6ZSk6IFJlbW92ZSBwcm90b3R5cGUuCgkoaXg4Nl9pbml0aWFsX2VsaW1pbmF0aW9uX29mZnNldCk6IERlY2xhcmUuCgkqIGkzODYuYyAoaXg4Nl9uc2F2ZWRfcmVncyk6IEJyZWFrIG91dCBmcm9tIC4uLgoJKGl4ODZfY2FuX3VzZV9yZXR1cm5faW5zbl9wKTogLi4uIGhlcmUuCgkoaXg4Nl9lbWl0X3NhdmVfcmVncyk6IEJyZWFrIG91dCBmcm9tIC4uLgoJKGl4ODZfZXhwYW5kX3Byb2xvZ3VlKTogLi4uIGhlcmUuCgkoaXg4Nl9lbWl0X2VwaWxvZ3VlX2VzcF9hZGp1c3RtZW50LCBpeDg2X2VtaXRfcmVzdG9yZV9yZWdzKTogQnJlYWsKCW91dCBmcm9tIC4uLgoJKGl4ODZfZXhwYW5kX2VwaWxvZ3VlKTogLi4uIGhlcmUuCgkoaXg4Nl9jb21wdXRlX2ZyYW1lX3NpemUpOiBNYWtlIHN0YXRpYywgYWRkIHByb3RvdHlwZS4KCShpeDg2X2luaXRpYWxfZWxpbWluYXRpb25fb2Zmc2V0KTogQnJlYWsgb3V0IGZyb20gLi4uCgkqIGkzODYuaCAoSU5JVElBTF9FTElNSU5BVElPTl9PRkZTRVQpOiAuLi4gaGVyZS4KCjIwMDAtMDEtMTkgIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIHJlY29nLmggKE9VVF9GQ04pOiBEZWxldGUuCgoJKiB2YXgubWQ6IENhbGwgYGdldF9pbnNuX3RlbXBsYXRlJyBpbnN0ZWFkIG9mIE9VVF9GQ04uCgoyMDAwLTAxLTE5ICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBjcHBhbGxvYy5jOiBQUk9UTyAtPiBQQVJBTVMuCgkqIGNwcGVycm9yLmM6IExpa2V3aXNlLgoJKiBjcHBmaWxlcy5jOiBMaWtld2lzZS4KCSogY3BwbGliLmM6IExpa2V3aXNlLgoJKiBjcHBsaWIuaDogTGlrZXdpc2UuCgoJKiBjb25maWcvYXJtL2FybS1wcm90b3MuaDogUFJPVE8gLT4gUEFSQU1TLgoJKiBjb25maWcvYXJtL2FybS5jOiBMaWtld2lzZS4KCSogY29uZmlnL2M0eC9jNHguYzogTGlrZXdpc2UuCgkqIGNvbmZpZy9mcjMwL2ZyMzAtcHJvdG9zLmg6IExpa2V3aXNlLgoJKiBjb25maWcvbmV4dHN0ZXAuYzogTGlrZXdpc2UuCgkqIGNvbmZpZy9wYS9wYS5jOiBMaWtld2lzZS4KCSogY29uZmlnL3BqL3BqLmM6IExpa2V3aXNlLgoJKiBjb25maWcvcnM2MDAwL3JzNjAwMC5jOiBMaWtld2lzZS4KCSogY29uZmlnL3Y4NTAvdjg1MC1wcm90b3MuaDogTGlrZXdpc2UuCgkqIGNvbmZpZy92ODUwL3Y4NTAuYzogTGlrZXdpc2UuCgoyMDAwLTAxLTE5ICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBpMzcwLXByb3Rvcy5oOiBOZXcgZmlsZS4KCgkqIGkzNzAuYzogSW5jbHVkZSB0bV9wLmguICBGaXggY29tcGlsZSB0aW1lIHdhcm5pbmdzLgoKCSogaTM3MC5oOiBNb3ZlIHByb3RvdHlwZXMgdG8gaTM3MC1wcm90b3MuaC4gIEZpeCBjb21waWxlIHRpbWUKCXdhcm5pbmdzLgoKCSogaTM3MC5tZDogTGlrZXdpc2UuCgoyMDAwLTAxLTE5ICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiByZWFsLmMgKGVuYW4sIGVpbmFuLCBlaWlzbmFuLCBlaWlzbmVnLCBtYWtlX25hbik6IFdyYXAgaW4gTkFOUy4KCSh0YXJnZXRfaXNpbmYsIHRhcmdldF9pc25hbiwgZWlzbmFuKTogTWFyayBwYXJhbWV0ZXIgd2l0aAoJQVRUUklCVVRFX1VOVVNFRC4KCShlaWlzaW5mKTogV3JhcCBpbiBJTkZJTklUWS4KCShldG9lMTEzLCBldG9lNjQsIGV0b2U1MywgZXRvZTI0KTogV3JhcCBsYWJlbCBgbm9ub3JtJyBpbiBJTkZJTklUWS4KCShpYm10b2UpOiBSZW1vdmUgdW51c2VkIHZhcmlhYmxlIGBybmRzYXYnLgoKV2VkIEphbiAxOSAyMDoyMzowNiAyMDAwICBKIm9ybiBSZW5uZWNrZSA8YW15bGFhckBjeWdudXMuY28udWs+CgoJKiBzaC5oIChQQVNTX0lOX1JFR19QKTogUmVtb3ZlIGV4dHJhbmVvdXMgcGFyYW50aGVzaXMuCgkoR09fSUZfTEVHSVRJTUFURV9BRERSRVNTKTogQWRkZWQgbWlzc2luZyB0YWIuCgoyMDAwLTAxLTE5ICBaYWNrIFdlaW5iZXJnICA8emFja0B3b2xlcnkuY3VtYi5vcmc+CgoJKiBmaXhpbmMvTWFrZWZpbGUuaW46IENvcnJlY3QgZGVwZW5kZW5jaWVzIG9mIGZpeGluY2wgYW5kIGZpeGluY2wuby4KCSogZml4aW5jL2ZpeGZpeGVzLmMgKElPX3VzZSwgQ1RSTF91c2UsIElPX2RlZm4sIENUUkxfZGVmbik6IE5ldyBmaXhlcy4KCShmaXhfY2hhcl9tYWNyb19kZWZpbmVzLCBmaXhfY2hhcl9tYWNyb191c2VzKTogTmV3IGZ1bmN0aW9ucy4KCgkqIGZpeGluYy9maXhsaWIuYyAoaXNfY3h4X2hlYWRlcik6IERvIHRoZSB0ZXh0IHNjYW4gd2l0aCBhIHJlZ2V4cC4KCVJlY29nbml6ZSBFbWFjcyBtb2RlIG1hcmtlcnMgYWxzby4KCSogZml4aW5jL2ZpeHRlc3RzLmMgKGVsc2VfZW5kaWZfbGFiZWwpOiBGaXggYnVnIGluIHJlY29nbml0aW9uIG9mCglDKysgY29tbWVudHMgaW4gQysrIGhlYWRlcnMuICBDYWxsIGlzX2N4eF9oZWFkZXIgb25seSBpZgoJbmVjZXNzYXJ5LgoKCSogZml4aW5jL2luY2xoYWNrLmRlZiAoYXZvaWRfYm9vbCk6IEFkZCBzZWxlY3QgZm9yIHRoZSBwcm9ibGVtIGFuZAoJYnlwYXNzIGZvciBuY3Vyc2VzLgoJKGJzZDQzX2lvX21hY3JvcywgaW9fZGVmX3F1b3RlcywgaW9jdGxfZml4X2N0cmwpOiBSZXBsYWNlIHdpdGguLi4KCShpb19kZWZfcXVvdGVzLCBpb191c2VfcXVvdGVzLCBjdHJsX2RlZl9xdW90ZXMsIGN0cmxfdXNlX3F1b3Rlcyk6CgkuLi4gdGhlc2UsIHdoaWNoIHVzZSB0aGUgbmV3IEMgZml4ZXMuCgkobWF0aF9leGNlcHRpb24pOiBFc2NhcGUgbGl0ZXJhbCAnKycgaW4gYnlwYXNzIGV4cHJlc3Npb24uCgoJKiBmaXhpbmMvZml4aW5jbC54LCBmaXhpbmMvZml4aW5jbC5zaCwgZml4aW5jL2luY2xoYWNrLnNoOgoJUmVnZW5lcmF0ZS4KCjIwMDAtMDEtMTkgIEdlb2ZmIEtlYXRpbmcgIDxnZW9mZmtAY3lnbnVzLmNvbT4KCgkqIHJ0bGFuYWwuYyAocmVnX3JlZmVyZW5jZWRfcCk6IEEgQ0xPQkJFUiBvZiBhIE1FTSB1c2VzIGFueSBSRUdzCglpbnNpZGUgdGhlIE1FTS4KCjIwMDAtMDEtMjAgIE1pY2hhZWwgSGF5ZXMgIDxtLmhheWVzQGVsZWMuY2FudGVyYnVyeS5hYy5uej4KCgkqIGxvb3AuYyAobG9vcF9vcHRpbWl6ZSk6IEFsbG9jYXRlIGxvb3BfaW5mbyBzdHJ1Y3R1cmUgZm9yIGVhY2ggbG9vcAoJcHJpb3IgdG8gY2FsbGluZyBzY2FuX2xvb3AuCgpXZWQgSmFuIDE5IDE5OjU0OjM4IDIwMDAgIEoib3JuIFJlbm5lY2tlIDxhbXlsYWFyQGN5Z251cy5jby51az4KCgkqIHNoLmMgKGZpbmRfYmFycmllciwgZ2VuX2Jsb2NrX3JlZGlyZWN0KTogRml4IGluZGVudGF0aW9uLgoJKHNwbGl0X2JyYW5jaGVzLCBjYWxjX2xpdmVfcmVncyk6IExpa2V3aXNlLgoKV2VkIEphbiAxOSAxOToxMjozNiAyMDAwICBKIm9ybiBSZW5uZWNrZSA8YW15bGFhckBjeWdudXMuY28udWs+CgoJKiBzaC5tZCAoZnB1X3NpbmdsZSwgZnBfbW9kZSk6IE5ldyBhdHRyaWJ1dGVzLgoKMjAwMC0wMS0yMCAgTWljaGFlbCBIYXllcyAgPG0uaGF5ZXNAZWxlYy5jYW50ZXJidXJ5LmFjLm56PgoKCSogbG9vcC5jIChjdXJyZW50X2xvb3BfaW5mbyk6IFJlbmFtZWQgZnJvbSBsb29wX2luZm9fZGF0YQoJYW5kIGNoYW5nZWQgdG8gYSBwb2ludGVyLgoJKGxvb3Bfb3B0aW1pemUpOiBBbGxvY2F0ZSBsb29wX2luZm8gc3RydWN0dXJlIGZvciBlYWNoIGxvb3AKCWFuZCBpbml0aWFsaXplIHRvIHplcm8uCgkoc2Nhbl9sb29wKTogU2V0IGN1cnJlbnRfbG9vcF9pbmZvLgoKCSogdW5yb2xsLmMgKGxvb3BfaXRlcmF0aW9ucyk6IERvbid0IGFib3J0IGlmIFJFR19VU0VSVkFSX1Agc2V0CglvbiBpdGVyYXRpb25fdmFyLgoKMjAwMC0wMS0xOSAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAY3lnbnVzLmNvbT4KCgkqIHN0dXBpZC5jOiBEaWUgZGllIGRpZS4KCSogTWFrZWZpbGUuaW4gKE9CSlMpOiBSZW1vdmUgc3R1cGlkLm8uCgkoc3R1cGlkLm8pOiBMaWtld2lzZS4KCgkqIGV4Y2VwdC5jIChlbWl0X2VoX2NvbnRleHQpOiBEb24ndCBlbWl0IFVTRXMgZm9yIHN0dXBpZC4KCSogZXhwbG93LmMgKHByb2JlX3N0YWNrX3JhbmdlKTogTGlrZXdpc2UuCgkqIGZsYWdzLmggKG9iZXlfcmVnZGVjbHMpOiBSZW1vdmUuCgkqIGZsb3cuYyAoZmluZF9iYXNpY19ibG9ja3MpOiBEb24ndCBydW4gdHJ5X21lcmdlX2Jsb2NrcwoJd2hlbiBub3Qgb3B0aW1pemluZy4KCShsaWZlX2FuYWx5c2lzKTogTGltaXQgZGF0YSBjb2xsZWN0aW9uIHdoZW4gbm90IG9wdGltaXppbmcuCgkobWFya19yZWdzX2xpdmVfYXRfZW5kKTogQWx3YXlzIG1hcmsgdGhlIHJldHVybiB2YWx1ZSByZWdpc3RlcnMuCgkobWFya191c2VkX3JlZ3MpOiBSZW1vdmUgZHVtbXkgUkVUVVJOIGNhc2UuCgkocHJpbnRfcnRsX3dpdGhfYmIpOiBEb24ndCBjb25zdWx0IG9iZXlfcmVnZGVjbHMuCgkqIGZ1bmN0aW9uLmMgKHVzZV92YXJpYWJsZSwgdXNlX3ZhcmlhYmxlX2FmdGVyKTogUmVtb3ZlLgoJKGFzc2lnbl9wYXJtcyk6IENvbnN1bHQgb3B0aW1pemUgbm90IG9iZXlfcmVnZGVjbHMuCgkoZXhwYW5kX2Z1bmN0aW9uX3N0YXJ0KTogRG9uJ3QgZW1pdCBVU0VzIGZvciBzdHVwaWQuCgkoZXhwYW5kX2Z1bmN0aW9uX2VuZCk6IExpa2V3aXNlLgoJKiBnbG9iYWwuYyAoYnVpbGRfaW5zbl9jaGFpbik6IEV4cG9ydC4KCSogaW50ZWdyYXRlLmMgKGV4cGFuZF9pbmxpbmVfZnVuY3Rpb24pOiBLaWxsIHJldHVybi12YWx1ZSBVU0UKCWhhbmRsaW5nIGNvZGUuCgkqIGp1bXAuYyAoanVtcF9vcHRpbWl6ZV8xKTogRG8gc2ltcGxlIGp1bXAgb3B0aW1pemF0aW9ucyBhbmQKCWRlYWQgY29kZSBlbGltaW5hdGlvbi4KCShjYWxjdWxhdGVfY2FuX3JlYWNoX2VuZCk6IFJlbW92ZSBjaGVja19kZWxldGVkIGFyZ3VtZW50LgoJKGRlbGV0ZV9pbnNuKTogUGF0Y2ggb3V0IGluc25zIGV2ZW4gd2hlbiBub3Qgb3B0aW1pemluZy4KCSogbG9jYWwtYWxsb2MuYyAoYmxvY2tfYWxsb2MpOiBEb24ndCBkbyB0eWluZyB3aGVuIG5vdCBvcHRpbWl6aW5nLgoJKiBydGwuaCAodXNlX3ZhcmlhYmxlLCB1c2VfdmFyaWFibGVfYWZ0ZXIpOiBSZW1vdmUgZGVjbGFyYXRpb25zLgoJKGJ1aWxkX2luc25fY2hhaW4pOiBEZWNsYXJlLgoJKiBzdG10LmMgKGV4cGFuZF92YWx1ZV9yZXR1cm4pOiBEb24ndCBlbWl0IFVTRXMgZm9yIHN0dXBpZC4KCShleHBhbmRfZW5kX2JpbmRpbmdzKTogTGlrZXdpc2UuCgkoZXhwYW5kX2RlY2wpOiBMaWtld2lzZS4gIENvbnN1bHQgb3B0aW1pemUgbm90IG9iZXlfcmVnZGVjbHMuCgkqIHRvcGxldi5jIChvYmV5X3JlZ2RlY2xzKTogUmVtb3ZlLgoJKHJlc3Rfb2ZfY29tcGlsYXRpb24pOiBEb24ndCBzZXQgaXQuICBLaWxsIHN0dXBpZCBpbiBmYXZvciBvZgoJZmxvdzEsIGxvY2FsLWFsbG9jLCBhbmQgcmVsb2FkLgoJKG1haW4pOiBEb24ndCBzZXQgb2JleV9yZWdkZWNscy4KCgkqIGNvbmZpZy9uZXh0c3RlcC5jIChoYW5kbGVfcHJhZ21hKTogTGlrZXdpc2UuCgoJKiBhbHBoYS9hbHBoYS5tZCAoYWxsb2NhdGVfc3RhY2spOiBEb24ndCBlbWl0IFVTRXMgZm9yIHN0dXBpZC4KCgkqIGFybS9hcm0uaCAoQ09ORElUSU9OQUxfUkVHSVNURVJfVVNBR0UpOiBEb24ndCBmaXggcmVnIDAgZm9yIHN0dXBpZC4KCjIwMDAtMDEtMTggIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIGFscGhhLXByb3Rvcy5oOiBQUk9UTyAtPiBQQVJBTVMuCgkqIGFscGhhLmM6IExpa2V3aXNlLgoJKiBlbGYuaDogTGlrZXdpc2UuCgkqIGg4MzAwLmM6IExpa2V3aXNlLgoJKiBpMzg2LXByb3Rvcy5oOiBMaWtld2lzZS4KCSogaTM4Ni5jOiBMaWtld2lzZS4KCSogbTMyci1wcm90b3MuaDogTGlrZXdpc2UuCgkqIG0zMnIuYzogTGlrZXdpc2UuCgkqIG1pcHMuYzogTGlrZXdpc2UuCgkqIG1pcHMubWQ6IExpa2V3aXNlLgoJKiBnbW9uLXNvbDIuYzogTGlrZXdpc2UuCgkqIHNwYXJjLmM6IExpa2V3aXNlLgoKMjAwMC0wMS0xOCAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogbnMzMmstcHJvdG9zLmg6IE5ldyBmaWxlLgoKCSogbnMzMmsuYzogRml4IGNvbXBpbGUgdGltZSB3YXJuaW5ncy4KCgkqIG5zMzJrLmg6IE1vdmUgcHJvdG90eXBlcyB0byBuczMyay1wcm90b3MuaC4gIEZpeCBjb21waWxlIHRpbWUKCXdhcm5pbmdzLgoKCSogbnMzMmsubWQ6IExpa2V3aXNlLgoKMjAwMC0wMS0xOCAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogdmF4LXByb3Rvcy5oOiBOZXcgZmlsZS4KCgkqIHZheC5jOiBGaXggY29tcGlsZSB0aW1lIHdhcm5pbmdzLgoKCSogdmF4Lmg6IE1vdmUgcHJvdG90eXBlcyB0byB2YXgtcHJvdG9zLmguICBGaXggY29tcGlsZSB0aW1lCgl3YXJuaW5ncy4KCgkqIHZheC5tZDogTGlrZXdpc2UuCgoJKiB2YXh2Lm1kOiBMaWtld2lzZS4KCjIwMDAtMDEtMTggIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIHJvbXAtcHJvdG9zLmg6IE5ldyBmaWxlLgoKCSogcm9tcC5jOiBGaXggY29tcGlsZSB0aW1lIHdhcm5pbmdzLgoKCSogcm9tcC5oOiBNb3ZlIHByb3RvdHlwZXMgdG8gcm9tcC1wcm90b3MuaC4gIEZpeCBjb21waWxlIHRpbWUKCXdhcm5pbmdzLgoKCSogcm9tcC5tZDogTGlrZXdpc2UuCgoyMDAwLTAxLTE4ICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiB3ZTMyay1wcm90b3MuaDogTmV3IGZpbGUuCgoJKiB3ZTMyay5jOiBGaXggY29tcGlsZSB0aW1lIHdhcm5pbmdzLgoKCSogd2UzMmsuaDogTW92ZSBwcm90b3R5cGVzIHRvIHdlMzJrLXByb3Rvcy5oLiAgRml4IGNvbXBpbGUgdGltZQoJd2FybmluZ3MuCgoyMDAwLTAxLTE4ICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBjYWxscy5jIChlbWl0X2NhbGxfMSk6IE1hcmsgcGFyYW1ldGVyIHdpdGggQVRUUklCVVRFX1VOVVNFRC4KCgkqIGV4Y2VwdC5jIChlaF9yZWdzKTogTGlrZXdpc2UuCgoJKiBmaW5hbC5jIChvdXRwdXRfb3BlcmFuZCk6IExpa2V3aXNlLgoKCSogZm9sZC1jb25zdC5jICh0YXJnZXRfaXNpbmYsIHRhcmdldF9pc25hbik6IExpa2V3aXNlLgoKVHVlIEphbiAxOCAxNjoxOTo1NSBNRVQgMjAwMCAgSmFuIEh1Ymlja2EgIDxodWJpY2thQGZyZWVzb2Z0LmN6PgoKCSogaTM4Ni5oIChCSUdHRVNUX0FMSUdOTUVOVCk6IFNldCB0byAxMjguCgkoQklHR0VTVF9GSUVMRF9BTElHTk1FTlQpOiBTZXQgdG8gKFRBUkdFVF9BTElHTl9ET1VCTEUgPyA2NCA6IDMyKQoKCSogaTM4Ni5tZCAobWVtc3RyKTogRG8gbm90IHVzZSByZXAgc3Rvc2IgZm9yIGNvdW50cyBkaXZpc2libGUgYnkgNAoJd2hlbiBvcHRpbWl6ZV9zaXplLgoJKGNscnN0cnNpKTogUmV3cml0ZS4KCShzdHJzZXRoaSwgc3Ryc2V0cWkpOiBOZXcgZXhwYW5kZXJzLgoJKHN0cnNldGhpXzEsIHN0cnNldHFpXzEsIHJlcF9zdG9zc2ksIHJlcF9zdG9zcWkpOiBOZXcgaW5zbiBwYXR0ZXJucy4KCShjbXBzdHJzaSk6IEVtaXQgY29tcGFyZSBpbnNuIGJlZm9yZSBjbXBzdHJzaV8xCgkoY21wc3Ryc2lfbnopOiB1c2UgZmxhZ3MsIHNldCB0eXBlIHRvIHN0ciwgcHJlZml4X2xlbmd0aCB0byAxLgoJKHN0cmxlbnNpXzEpOiBMaWtld2lzZS4KCShjbXBzdHJzaV8xKTogTGlrZXdpc2U7IGRvIG5vdCBvdXRwdXQgY29tcGFyZS4KCShzdHJsZW4gZXhwYW5kZXIpOiBEbyBub3QgdW5yb2xsIHdoZW4gb3B0aW1pemluZyBmb3Igc2l6ZS4KCSgqc3Vic2kzX2NhcnJ5KTogUmVuYW1lIHRvIHN1YnNpM19jYXJyeQoJKGFkZHFpM19jYyk6IE5ldyBwYXR0ZXJuLgoJKiBpMzg2LmggKHByb2Nlc3Nvcl9jb3N0cyk6IEFkZCBtb3ZlX3JhdGlvIGZpZWxkLgoJKE1PVkVfUkFUSU8pOiBVc2UgbW92ZV9yYXRpbyBmaWVsZCwgc2V0IHRvIDMgZm9yIE9QVElNSVpFX1NJWkUKCSogaTM4Ni5jICgqX2Nvc3QpOiBTZXQgbW92ZV9yYXRpby4KCSh4ODZfdW5yb2xsX3N0cmxlbik6IEVuYWJsZSBmb3IgQXRobG9uLCBQUHJvIGFuZCBLNiB0b28uCgkoeDg2X2V4cGFuZF9zdHJsZW5zaV8xKTogUmV3cml0ZSB0aGUgbWFpbiBsb29wLgoKMjAwMC0wMS0xNyAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAY3lnbnVzLmNvbT4KCgkqIGNvbWJpbmUuYyAoY29tYmluZV9zaW1wbGlmeV9ydHgpOiBHaXZlIEZMT0FUX1NUT1JFX0ZMQUdfVkFMVUUgYSBtb2RlLgoJKiBjc2UuYyAoZmluZF9jb21wYXJpc29uX2FyZ3MsIGZvbGRfcnR4KTogTGlrZXdpc2UuCgkqIGludGVncmF0ZS5jIChzdWJzdF9jb25zdGFudHMpOiBMaWtld2lzZS4KCSogbG9vcC5jIChnZXRfY29uZGl0aW9uKTogTGlrZXdpc2UuCgoJKiB0bS50ZXhpIChGTE9BVF9TVE9SRV9GTEFHX1ZBTFVFKTogVXBkYXRlIGRvY3MuCgoJKiBhbHBoYS5oIChGTE9BVF9TVE9SRV9GTEFHX1ZBTFVFKTogVXNlIFJFQUxfVkFMVUVfQVRPRi4KCjIwMDAtMDEtMTggIE1hcnRpbiB2LiBM9ndpcyAgPGxvZXdpc0BpbmZvcm1hdGlrLmh1LWJlcmxpbi5kZT4KCgkqIGMtcGFyc2UuaW4gKFNBVkVfV0FSTl9GTEFHUyk6IENyZWF0ZSBhbiBJTlRFR0VSX0NTVC4KCShSRVNUT1JFX1dBUk5fRkxBR1MpOiBVbnBhY2sgaXQuCglDaGFuZ2Ugc2VtYW50aWMgdHlwZSBvZiBleHRlbnNpb24gdG8gdHR5cGUuCgkqIGMtY29tbW9uLmMgKHNwbGl0X3NwZWNzX2F0dHJzKTogRXhwZWN0IGFuIElOVEVHRVJfQ1NULgoJKiBjLXBhcnNlLnksIGMtcGFyc2UuYywgb2JqYy9vYmpjLXBhcnNlLnksCglvYmpjL29iamMtcGFyc2UuYzogUmVnZW5lcmF0ZS4KCjIwMDAtMDEtMTcgIFphY2sgV2VpbmJlcmcgIDx6YWNrQHdvbGVyeS5jdW1iLm9yZz4KCgkqIGZpeGluYy9maXhsaWIuYzogQWRkIGNvcHlyaWdodCBub3RpY2UuCgkoY29tcGlsZV9yZSk6IE5ldyBmdW5jdGlvbi4KCSogZml4aW5jL2ZpeGxpYi5oOiBQcm90b3R5cGUgY29tcGlsZV9yZS4KCgkqIGZpeGluYy9maXhmaXhlcy5jLCBmaXhpbmMvZml4dGVzdHMuYywgZml4aW5jL2ZpeGluY2wuYzoKCVVzZSBjb21waWxlX3JlIHRvIGNvbXBpbGUgcmVndWxhciBleHByZXNzaW9ucy4KCgkqIGZpeGluYy9maXhpbmNsLmMgKGVncmVwX3Rlc3QpOiBEb24ndCBib3RoZXIgYXNraW5nIHJlZ2V4ZWMKCXdoZXJlIHRoZSBwYXR0ZXJuIG1hdGNoZWQuCgoJKiBmaXhpbmMvaW5jbGhhY2suZGVmIChzdW5fbWVtY3B5KTogTW92ZSB0byBBQUJfc3VuX21lbWNweSwKCXVzZSAncmVwbGFjZScuCgkodWx0cml4X2Fuc2lfY29tcGF0KTogTGlrZXdpc2UuCgkoaW50ZXJhY3R2X2FkZDEpOiBSZW5hbWUgdG8gJ2lzY19vbWl0c193aXRoX3N0ZGMnLCByZW1vdmUgc2hlbGwgdGVzdCwKCWFkZCBlZ3JlcCB0ZXN0LgoJKGludGVyYWN0dl9hZGQyLCBpbnRlcmFjdHZfYWRkMyk6IERlbGV0ZS4KCSh4MTFfc3ByaW50Zik6IERvbid0IHVzZSBmaWxlbmFtZSBnbG9iLgoJKiBmaXhpbmMvZml4aW5jbC54LCBmaXhpbmMvaW5jbGhhY2suc2gsIGZpeGluYy9maXhpbmNsLnNoOgoJUmVnZW5lcmF0ZS4KCjIwMDAtMDEtMTcgIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIHByaW50LXJ0bC5jOiBQUk9UTyAtPiBQQVJBTVMuCgkqIHJlYWwuYzogTGlrZXdpc2UuCgkqIHJlZy1zdGFjay5jOiBMaWtld2lzZS4KCSogcmVzb3VyY2UuYzogTGlrZXdpc2UuCgkqIHNkYm91dC5oOiBMaWtld2lzZS4KCSogc2ltcGxpZnktcnR4LmM6IExpa2V3aXNlLgoJKiBzdG9yLWxheW91dC5jOiBMaWtld2lzZS4KCSogc3R1cGlkLmM6IExpa2V3aXNlLgoJKiB4Y29mZm91dC5jOiBMaWtld2lzZS4KCSogeGNvZmZvdXQuaDogTGlrZXdpc2UuCgoyMDAwLTAxLTE3ICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiB0b3BsZXYuYzogUFJPVE8gLT4gUEFSQU1TLgoJKiB0b3BsZXYuaDogTGlrZXdpc2UuCgkqIHRyZWUuYzogTGlrZXdpc2UuCgkqIHRyZWUuaDogTGlrZXdpc2UuCgkqIHVucm9sbC5jOiBMaWtld2lzZS4KCSogdmFyYXNtLmM6IExpa2V3aXNlLgoJKiB2YXJyYXkuYzogTGlrZXdpc2UuCgkqIHZhcnJheS5oOiBMaWtld2lzZS4KCjIwMDAtMDEtMTcgIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIHJlbG9hZC5jOiBQUk9UTyAtPiBQQVJBTVMuCgkqIHJlbG9hZC5oOiBMaWtld2lzZS4KCSogcmVsb2FkMS5jOiBMaWtld2lzZS4KCSogcmVvcmcuYzogTGlrZXdpc2UuCgkqIHJlc291cmNlLmg6IExpa2V3aXNlLgoJKiBydGwuYzogTGlrZXdpc2UuCgkqIHJ0bC5oOiBMaWtld2lzZS4KCSogcnRsYW5hbC5jOiBMaWtld2lzZS4KCSogc2JpdG1hcC5oOiBMaWtld2lzZS4KCSogc2Rib3V0LmM6IExpa2V3aXNlLgoJKiBzdGFjay5oOiBMaWtld2lzZS4KCSogc3RtdC5jOiBMaWtld2lzZS4KCSogc3lzdGVtLmg6IExpa2V3aXNlLgoKMjAwMC0wMS0xNyAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogbWFjaG1vZGUuaDogUFJPVE8gLT4gUEFSQU1TLgoJKiBtYmNoYXIuaDogTGlrZXdpc2UuCgkqIG1pcHMtdGR1bXAuYzogTGlrZXdpc2UuCgkqIG1pcHMtdGZpbGUuYzogTGlrZXdpc2UuCgkqIG9wdGFicy5jOiBMaWtld2lzZS4KCSogb3V0cHV0Lmg6IExpa2V3aXNlLgoJKiBwcmVmaXguYzogTGlrZXdpc2UuCgkqIHByb2ZpbGUuYzogTGlrZXdpc2UuCgkqIHByb3RvaXplLmM6IExpa2V3aXNlLgoJKiByZWFsLmg6IExpa2V3aXNlLgoJKiByZWNvZy5jOiBMaWtld2lzZS4KCSogcmVjb2cuaDogTGlrZXdpc2UuCgkqIHJlZ2NsYXNzLmM6IExpa2V3aXNlLgoJKiByZWdtb3ZlLmM6IExpa2V3aXNlLgoJKiByZWdzLmg6IExpa2V3aXNlLgoKMjAwMC0wMS0xNyAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogZ2djLWNvbW1vbi5jOiBQUk9UTyAtPiBQQVJBTVMuCgkqIGdnYy1wYWdlLmM6IExpa2V3aXNlLgoJKiBnZ2Mtc2ltcGxlLmM6IExpa2V3aXNlLgoJKiBnZ2MuaDogTGlrZXdpc2UuCgkqIGdsb2JhbC5jOiBMaWtld2lzZS4KCSogZ3JhcGguYzogTGlrZXdpc2UuCgkqIGd0aHItd2luMzIuaDogTGlrZXdpc2UuCgkqIGhhaWZhLXNjaGVkLmM6IExpa2V3aXNlLgoJKiBoYWxmcGljLmg6IExpa2V3aXNlLgoJKiBpbnRlZ3JhdGUuYzogTGlrZXdpc2UuCgkqIGludGVncmF0ZS5oOiBMaWtld2lzZS4KCSoganVtcC5jOiBMaWtld2lzZS4KCSogbGNtLmM6IExpa2V3aXNlLgoJKiBsb2NhbC1hbGxvYy5jOiBMaWtld2lzZS4KCSogbG9vcC5jOiBMaWtld2lzZS4KCSogbG9vcC5oOiBMaWtld2lzZS4KCjIwMDAtMDEtMTcgIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIGdlbmF0dHIuYzogUFJPVE8gLT4gUEFSQU1TLgoJKiBnZW5hdHRydGFiLmM6IExpa2V3aXNlLgoJKiBnZW5jaGVjay5jOiBMaWtld2lzZS4KCSogZ2VuY29kZXMuYzogTGlrZXdpc2UuCgkqIGdlbmNvbmZpZy5jOiBMaWtld2lzZS4KCSogZ2VuZW1pdC5jOiBMaWtld2lzZS4KCSogZ2VuZXh0cmFjdC5jOiBMaWtld2lzZS4KCSogZ2VuZmxhZ3MuYzogTGlrZXdpc2UuCgkqIGdlbmdlbnJ0bC5jOiBMaWtld2lzZS4KCSogZ2Vub3Bpbml0LmM6IExpa2V3aXNlLgoJKiBnZW5vdXRwdXQuYzogTGlrZXdpc2UuCgkqIGdlbnBlZXAuYzogTGlrZXdpc2UuCgkqIGdlbnJlY29nLmM6IExpa2V3aXNlLgoKMjAwMC0wMS0xNiAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIHRyZWUuaCAoQklORk9fVlBUUl9GSUVMRCk6IEF1Z21lbnQgZG9jdW1lbnRhdGlvbi4KCjIwMDAtMDEtMTYgIEFsZXhhbmRyZSBPbGl2YSAgPG9saXZhQGxzZC5pYy51bmljYW1wLmJyPgoKCSogYWNsb2NhbC5tNCAoQUNfRlVOQ19NTUFQX1pFUk8pOiBOZXcgbWFjcm8uCgkqIGNvbmZpZ3VyZS5pbiAoQUNfRlVOQ19NTUFQX1pFUk8pOiBVc2UgaW5zdGVhZCBvZiBBQ19GVU5DX01NQVAuCgkqIGdnYy1wYWdlLmM6IFJlcGxhY2UgSEFWRV9NTUFQIHdpdGggSEFWRV9NTUFQX1pFUk8uCgkqIGNvbmZpZ3VyZSwgY29uZmlnLmluOiBSZWJ1aWx0LgoKMjAwMC0wMS0xNiAgWmFjayBXZWluYmVyZyAgPHphY2tAd29sZXJ5LmN1bWIub3JnPgoKCSogY29uZmlnL2kzODYvaTM4Ni5tZDogQWRkIHBlZXBob2xlIHRvIG1lcmdlIHN1Y2Nlc3NpdmUgc3RhY2sKCWFkanVzdHMuCgpTYXQgSmFuIDE1IDE1OjQxOjE0IEVTVCAyMDAwICBKb2huIFdlaGxlICAoam9obkBmZWl0aC5jb20pCgoJKiBnY3NlLmMgKGluc2VydF9pbnNuX2VuZF9iYik6IFVzZSBlbWl0X2Jsb2NrX2luc25fYmVmb3JlCglpbnN0ZWFkIG9mIGVtaXRfaW5zbl9iZWZvcmUuICBBbHNvIGhhbmRsZSBOT1RFX0lOU05fQkFTSUNfQkxPQ0sKCXdoZW4gd2Fsa2luZyBiYWNrd2FyZHMgdG8gZmluZCBhbGwgdGhlIHBhcmFtZXRlciBsb2FkcyB3aGVuCgl0aGUgYmFzaWMgYmxvY2sgZW5kcyBpbiBhIGNhbGwuCgoyMDAwLTAxLTE1ICBNaWNoYWVsIEhheWVzICA8bS5oYXllc0BlbGVjLmNhbnRlcmJ1cnkuYWMubno+CgoJKiBsb29wLmMgKHRoaXNfbG9vcF9pbmZvKTogRGVsZXRlLgoJKHVpZF9sb29wKTogQWRkIGluIHBsYWNlIG9mIHVpZF9sb29wX251bS4gIEFsbCB1c2VzIHVwZGF0ZWQuCgkobG9vcF9udW1iZXJfZXhpdF9jb3VudCk6IERlbGV0ZSBhbmQgcmVwbGFjZSB3aXRoIGVudHJ5IGluIGxvb3AKCXN0cnVjdHVyZS4gIEFsbCB1c2VzIHVwZGF0ZWQuCgkobG9vcF9udW1iZXJfbG9vcF9zdGFydHMsIGxvb3BfbnVtYmVyX2xvb3BfZW5kcyk6IExpa2V3aXNlLgoJKGxvb3BfbnVtYmVyX2xvb3BfY29udCwgbG9vcF9udW1iZXJfY29udF9kb21pbmF0b3IpOiBMaWtld2lzZS4KCShsb29wX291dGVyX2xvb3ApOiBMaWtld2lzZS4KCShsb29wX2ludmFsaWQsIGxvb3BfbnVtYmVyX2V4aXRfbGFiZWxzKTogTGlrZXdpc2UuCgkobG9vcF91c2VkX2NvdW50X3JlZ2lzdGVyKTogRGVsZXRlIGFuZCByZXBsYWNlIHdpdGggZW50cnkgaW4KCWxvb3BfaW5mbyBzdHJ1Y3R1cmUuCgkoZmluZF9hbmRfdmVyaWZ5X2xvb3BzKTogQWRkIGxvb3BzIGFyZ3VtZW50LgoJKHZlcmlmeV9kb21pbmF0b3IsIG1hcmtfbG9vcF9qdW1wLCBwcmVzY2FuX2xvb3ApOiBSZXBsYWNlIGxvb3Bfc3RhcnQsCglsb29wX2VuZCwgZXRjLiBhcmd1bWVudHMgd2l0aCBsb29wIHN0cnVjdHVyZSBwb2ludGVyLiAgQWxsIGNhbGxlcnMKCWNoYW5nZWQuCgkobG9vcF9yZWdfdXNlZF9iZWZvcmVfcCwgc2Nhbl9sb29wLCBzdHJlbmd0aF9yZWR1Y2UpOiBMaWtld2lzZS4KCShjaGVja19kYnJhX2xvb3AsIG5leHRfaW5zbl9pbl9sb29wLCB0cnlfY29weV9wcm9wKTogTGlrZXdpc2UuCgkobG9hZF9tZW1zX2FuZF9yZWNvdW50X2xvb3BfcmVnc19zZXQsIGxvYWRfbWVtcyk6IExpa2V3aXNlLgoJKGluc2VydF9iY3QpOiBMaWtld2lzZS4KCShiYXNpY19pbmR1Y3Rpb25fdmFyKTogTmV3IGFyZ3VtZW50IGxldmVsLgoJKiBsb29wLmggKHN0cnVjdCBsb29wX2luZm8pOiBEZWxldGUgZmllbGRzIG51bSwgbG9vcHNfZW5jbG9zZWQsCgl2dG9wLCBhbmQgY29udC4gIEFkZCB1c2VkX2NvdW50X3JlZ2lzdGVyLgoJKHVpZF9sb29wKTogRGVsZXRlIGRlY2xhcmF0aW9uLgoJKGxvb3BfbnVtYmVyX2V4aXRfY291bnQpOiBMaWtld2lzZS4KCShsb29wX251bWJlcl9sb29wX3N0YXJ0cywgbG9vcF9udW1iZXJfbG9vcF9lbmRzKTogTGlrZXdpc2UuCgkobG9vcF9udW1iZXJfbG9vcF9jb250LCBsb29wX251bWJlcl9jb250X2RvbWluYXRvcik6IExpa2V3aXNlLgoJKGxvb3Bfb3V0ZXJfbG9vcCwgbG9vcF91c2VkX2NvdW50X3JlZ2lzdGVyKTogTGlrZXdpc2UuCgkobG9vcF9pbnZhbGlkLCBsb29wX251bWJlcl9leGl0X2xhYmVscyk6IExpa2V3aXNlLgoJKHVucm9sbF9sb29wKTogUmVwbGFjZSBsb29wX3N0YXJ0IGFuZCBsb29wX2VuZCBhcmd1bWVudHMKCXdpdGggbG9vcCBzdHJ1Y3R1cmUgcG9pbnRlci4KCShsb29wX3ByZWNvbmRpdGlvbl9wLCBsb29wX2l0ZXJhdGlvbnMpOiBMaWtld2lzZS4KCUluY2x1ZGUgYmFzaWMtYmxvY2suaC4KCSogdW5yb2xsLmM6ICh1bnJvbGxfbG9vcCk6IFJlcGxhY2UgbG9vcF9zdGFydCBhbmQgbG9vcF9lbmQgYXJndW1lbnRzCgl3aXRoIGxvb3Agc3RydWN0dXJlIHBvaW50ZXIuCgkobG9vcF9wcmVjb25kaXRpb25fcCwgbG9vcF9pdGVyYXRpb25zKTogTGlrZXdpc2UuCgkqIGJhc2ljLWJsb2NrLmggKHN0cnVjdCBsb29wKTogTmV3IGVudHJpZXMgdnRvcCwgY29udCwKCWNvbnRfZG9taW5hdG9yLCBzdGFydCwgZW5kLCB0b3AsIHNjYW5fc3RhcnQsIGV4aXRfbGFiZWxzLAoJZXhpdF9jb3VudC4KCSogTWFrZWZpbGUuaW4gKExPT1BfSCk6IEFkZCBiYXNpYy1ibG9jay5oIHRvIGRlcGVuZGVuY2llcy4KCjIwMDAtMDEtMTUgIEdlcmFsZCBQZmVpZmVyICA8cGZlaWZlckBkYmFpLnR1d2llbi5hYy5hdD4KCgkqIGRlZmF1bHRzLmggKEFTTV9PVVRQVVRfQVNDSUkpOiBVc2UgSVNESUdJVC4KCjIwMDAtMDEtMTQgIE5hdGhhbiBTaWR3ZWxsICA8c2lkd2VsbEBjb2Rlc291cmNlcnkuY29tPgoKCSogY29uZmlnLmluOiBSZWJ1aWx0IGZvciAyMDAwLTAxLTEzIGNoYW5nZSB0byBhY2NvbmZpZy5oLgoKMjAwMC0wMS0xNCAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogcGRwMTEtcHJvdG9zLmg6IE5ldyBmaWxlLgoKCSogcGRwMTEuYzogSW5jbHVkZSB0bV9wLmguICBBZGQgc3RhdGljIHByb3RvdHlwZXMuICBGaXggY29tcGlsZQoJdGltZSB3YXJuaW5ncy4KCgkqIHBkcDExLmg6IE1vdmUgcHJvdG90eXBlcyB0byBwZHAxMS1wcm90b3MuaC4gIEZpeCBjb21waWxlIHRpbWUKCXdhcm5pbmdzLgoKCSogcGRwMTEubWQ6IExpa2V3aXNlLgoKCSogMmJzZC5oOiBMaWtld2lzZS4KCjIwMDAtMDEtMTQgIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIG1uMTAzMDAtcHJvdG9zLmg6IE5ldyBmaWxlLgoKCSogbW4xMDMwMC5jOiBJbmNsdWRlIHRtX3AuaC4gIEFkZCBzdGF0aWMgcHJvdG90eXBlcy4gIEZpeCBjb21waWxlCgl0aW1lIHdhcm5pbmdzLgoKCSogbW4xMDMwMC5oOiBNb3ZlIHByb3RvdHlwZXMgdG8gbW4xMDMwMC1wcm90b3MuaC4gIEZpeCBjb21waWxlIHRpbWUKCXdhcm5pbmdzLgoKCSogbW4xMDMwMC5tZDogTGlrZXdpc2UuCgoyMDAwLTAxLTE0ICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBtbjEwMjAwLXByb3Rvcy5oOiBOZXcgZmlsZS4KCgkqIG1uMTAyMDAuYzogSW5jbHVkZSB0bV9wLmguICBBZGQgc3RhdGljIHByb3RvdHlwZXMuICBGaXggY29tcGlsZQoJdGltZSB3YXJuaW5ncy4KCgkqIG1uMTAyMDAuaDogTW92ZSBwcm90b3R5cGVzIHRvIG1uMTAyMDAtcHJvdG9zLmguICBGaXggY29tcGlsZSB0aW1lCgl3YXJuaW5ncy4KCgkqIG1uMTAyMDAubWQ6IExpa2V3aXNlLgoKMjAwMC0wMS0xNCAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogaDgzMDAtcHJvdG9zLmg6IE5ldyBmaWxlLgoKCSogaDgzMDAuYzogSW5jbHVkZSB0bV9wLmguICBBZGQgc3RhdGljIHByb3RvdHlwZXMuICBGaXggY29tcGlsZQoJdGltZSB3YXJuaW5ncy4KCgkqIGg4MzAwLmg6IE1vdmUgcHJvdG90eXBlcyB0byBoODMwMC1wcm90b3MuaC4gIEZpeCBjb21waWxlIHRpbWUKCXdhcm5pbmdzLgoKCSogaDgzMDAubWQ6IExpa2V3aXNlLgoKMjAwMC0wMS0xNCAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogdmFyYXNtLmMgKGFzbV9vdXRwdXRfYnNzKTogTWFyayBwYXJhbWV0ZXJzIHdpdGggQVRUUklCVVRFX1VOVVNFRC4KCShhc21fZW1pdF91bmluaXRpYWxpc2VkKTogTGlrZXdpc2UuCgoyMDAwLTAxLTEzICBHYXZpbiBSb21pZy1Lb2NoICA8Z2F2aW5AY3lnbnVzLmNvbT4KCgkqIGNvbmZpZy9taXBzL21pcHMuaCAoSVNBX0hBU19JTlRfQ09ORE1PVkUpOiBOZXcuCgkqIGNvbmZpZy9taXBzL21pcHMubWQ6IFVzZSBJU0FfSEFTX0lOVF9DT05ETU9WRS4KCjIwMDAtMDEtMTQgIENsaW50b24gUG9wZXR6ICA8Y3BvcGV0ekBjeWdudXMuY29tPgoKCSogY29uZmlnL21pcHMvbWlwcy5jIChvdmVycmlkZV9vcHRpb25zKTogRG9uJ3QgdHVybiBvbiBleHRyYQoJYWxpZ25tZW50IGZvciBtaXBzMTYuCgoyMDAwLTAxLTE0ICBDbGludG9uIFBvcGV0eiAgPGNwb3BldHpAY3lnbnVzLmNvbT4KCgkqIGNvbmZpZy9taXBzL21pcHMuYyAobWlwc192YV9hcmcpOiBGaXggZnBydiBmb3IgdGhlIDMyIGJpdAoJZWFiaSwgYW5kIG1ha2Ugc3VyZSBxdWV1ZWQgUE9TVElOQ1JFTUVOVCBydGwgaXMgZW1pdHRlZCBhdAoJdGhlIHJpZ2h0IHBvaW50LgoKMjAwMC0wMS0xNCAgQ2xpbnRvbiBQb3BldHogIDxjcG9wZXR6QGN5Z251cy5jb20+CgoJKiBidWlsdGlucy5jIChQQURfVkFSQVJHU19ET1dOKTogRGVmaW5lLgoJKHN0ZF9leHBhbmRfYnVpbHRpbl92YV9hcmcpOiBVc2UgdGhlIGFib3ZlIG1hY3JvLgoJKiBjb25maWcvbWlwcy9taXBzLmggKFBBRF9WQVJBUkdTX0RPV04pOiBEZWZpbmUuCgkqIHRtLnRleGkgKFJlZ2lzdGVyIEFyZ3VtZW50cyk6IERvY3VtZW50IHRoZSBhYm92ZSBtYWNyby4KCjIwMDAtMDEtMTQgIE5pY2sgQ2xpZnRvbiAgPG5pY2tjQGN5Z251cy5jb20+CgoJKiBlbWl0LXJ0bC5jIChlbWl0X2luc24pOiBJZiBjaGVja2luZyBpcyBlbmFibGVkLCBtYWtlIHN1cmUKCXRoYXQgdGhpcyBmdW5jdGlvbiBoYXMgbm90IGJlZW4gdXNlZCB0byBlbWl0IGEganVtcAoJaW5zdHJ1Y3Rpb24uCgoJKiBqdW1wLmMgKHJldHVybl9qdW1wXzEpOiBDb3BlIHdpdGggYmVpbmcgcGFzc2VkIGEgbnVsbCBydHguCgoyMDAwLTAxLTE0ICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBlaC1jb21tb24uaDogUFJPVE8gLT4gUEFSQU1TLgoJKiBlbWl0LXJ0bC5jOiBMaWtld2lzZS4KCSogZXJyb3JzLmM6IExpa2V3aXNlLgoJKiBlcnJvcnMuaDogTGlrZXdpc2UuCgkqIGV4Y2VwdC5jOiBMaWtld2lzZS4KCSogZXhjZXB0Lmg6IExpa2V3aXNlLgoJKiBleHBsb3cuYzogTGlrZXdpc2UuCgkqIGV4cG1lZC5jOiBMaWtld2lzZS4KCSogZXhwci5jOiBMaWtld2lzZS4KCSogZXhwci5oOiBMaWtld2lzZS4KCSogZmluYWwuYzogTGlrZXdpc2UuCgkqIGZpeC1oZWFkZXIuYzogTGlrZXdpc2UuCgkqIGZsb3cuYzogTGlrZXdpc2UuCgkqIGZvbGQtY29uc3QuYzogTGlrZXdpc2UuCgkqIGZ1bmN0aW9uLmM6IExpa2V3aXNlLgoJKiBmdW5jdGlvbi5oOiBMaWtld2lzZS4KCSogZ2NjLmM6IExpa2V3aXNlLgoJKiBnY292LWlvLmg6IExpa2V3aXNlLgoJKiBnY292LmM6IExpa2V3aXNlLgoJKiBnY3NlLmM6IExpa2V3aXNlLgoKMjAwMC0wMS0xNCAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogc2gtcHJvdG9zLmg6IE5ldyBmaWxlLgoKCSogc2guYzogSW5jbHVkZSBpbnNuLWNvbmZpZy5oLCB0b3BsZXYuaCwgcmVjb2cuaCBhbmQgdG1fcC5oLgoJQWRkIHN0YXRpYyBwcm90b3R5cGVzLiAgRml4IGNvbXBpbGUgdGltZSB3YXJuaW5ncy4KCgkqIHNoLmg6IE1vdmUgcHJvdG90eXBlcyB0byBzaC1wcm90b3MuaC4gIEZpeCBjb21waWxlIHRpbWUgd2FybmluZ3MuCgkqIHNoLm1kOiBMaWtld2lzZS4KCSogZWxmLmg6IExpa2V3aXNlLgoKMjAwMC0wMS0xNCAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogYXJjLXByb3Rvcy5oOiBOZXcgZmlsZS4KCgkqIGFyYy5jOiBJbmNsdWRlIHRtX3AuaC4gIEFkZCBzdGF0aWMgcHJvdG90eXBlcy4gIEZpeCBjb21waWxlCgl0aW1lIHdhcm5pbmdzLgoKCSogYXJjLmg6IE1vdmUgcHJvdG90eXBlcyB0byBhcmMtcHJvdG9zLmguICBGaXggY29tcGlsZSB0aW1lCgl3YXJuaW5ncy4KCgkqIGFyYy5tZDogTGlrZXdpc2UuCgoyMDAwLTAxLTE0ICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBkc3AxNnh4LXByb3Rvcy5oOiBOZXcgZmlsZS4KCgkqIGRzcDE2eHguYzogSW5jbHVkZSB0bV9wLmguICBBZGQgc3RhdGljIHByb3RvdHlwZXMuICBGaXggY29tcGlsZQoJdGltZSB3YXJuaW5ncy4KCgkqIGRzcDE2eHguaDogTW92ZSBwcm90b3R5cGVzIHRvIGRzcDE2eHgtcHJvdG9zLmguICBGaXggY29tcGlsZSB0aW1lCgl3YXJuaW5ncy4KCgkqIGRzcDE2eHgubWQ6IExpa2V3aXNlLgoKMjAwMC0wMS0xNCAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogY29udmV4LXByb3Rvcy5oOiBOZXcgZmlsZS4KCgkqIGNvbnZleC5jOiBJbmNsdWRlIHRtX3AuaC4gIEFkZCBzdGF0aWMgcHJvdG90eXBlcy4gIEZpeCBjb21waWxlCgl0aW1lIHdhcm5pbmdzLgoKCSogY29udmV4Lmg6IE1vdmUgcHJvdG90eXBlcyB0byBjb252ZXgtcHJvdG9zLmguICBGaXggY29tcGlsZSB0aW1lCgl3YXJuaW5ncy4KCjIwMDAtMDEtMTQgIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIGVseHNpLXByb3Rvcy5oOiBOZXcgZmlsZS4KCgkqIGVseHNpLmM6IEluY2x1ZGUgdG1fcC5oLiAgQWRkIHN0YXRpYyBwcm90b3R5cGVzLiAgRml4IGNvbXBpbGUKCXRpbWUgd2FybmluZ3MuCgoJKiBlbHhzaS5oOiBNb3ZlIHByb3RvdHlwZXMgdG8gZWx4c2ktcHJvdG9zLmguICBGaXggY29tcGlsZSB0aW1lCgl3YXJuaW5ncy4KCgkqIGVseHNpLm1kOiBMaWtld2lzZS4KCjIwMDAtMDEtMTQgIENsaW50b24gUG9wZXR6ICA8Y3BvcGV0ekBjeWdudXMuY29tPgoKCSogY29uZmlnL21pcHMvbWlwcy5oIChSRUdJU1RFUl9NT1ZFX0NPU1QpOiBSZW1vdmUgcmVkdW5kYW50CgljYXNlIGZvciBtb3ZpbmcgZnJvbSBISS9MTy9ISV9MT19SRUcuICBUaGlzIG1ha2VzIHRoZSBiZWhhdmlvcgoJbWF0Y2ggdGhlIGNvbW1lbnQgZm9yIE1JUFMxNi4KCkZyaSBKYW4gMTQgMDA6Mjg6MDYgMjAwMCAgSmVmZnJleSBBIExhdyAgKGxhd0BjeWdudXMuY29tKQoKCSogZmxvdy5jIChzcGxpdF9lZGdlKTogRG8gbm90IGNhbGwgc2V0X2Jsb2NrX2Zvcl9pbnNuIGlmIHdlCglkbyBub3QgaGF2ZSBhIGJhc2ljX2Jsb2NrX2Zvcl9pbnNuIHN0cnVjdHVyZS4KCgkqIGZyMzAuaCAoVFJBTVBPTElORV9URU1QTEFURSk6IFVzZSBub3BzIHRvIGVuc3VyZSB0aGUgc3RhdGljIGNoYWluCglhbmQgZGVzdGluYXRpb24gZnVuY3Rpb25zIGFyZSAzMmJpdCBhbGlnbmVkIHdpdGhpbiB0aGUgdHJhbXBvbGluZS4KCShUUkFNUE9MSU5FX1NJWkUsIElOSVRJQUxJWkVfVFJBTVBPTElORSk6IENvcnJlc3BvbmRpbmcgY2hhbmdlcy4KCShUUkFNUE9MSU5FX0FMSUdOTUVOVCk6IERlZmluZS4KCgkqIGNzZS5jIChjc2VfaW5zbik6IFdoZW4gY2hhbmdpbmcgKHNldCAocGMpIChyZWcpKSB0bwoJKHNldCAocGMpIChsYWJlbF9yZWYpKSwgdmVyaWZ5IHRoZSBjaGFuZ2UgY3JlYXRlcyBhIHZhbGlkIGluc24uCgoJKiBmcjMwLmMgKGNhbGxfb3BlcmFuZCk6IFRpZ2h0ZW4gYW5kIHJld29yayB0byBtYXRjaCBydWxlcyBmb3IKCWNhbGwgUlRMIGV4cHJlc3Npb25zLgoJKiBmcjMwLmggKFBSRURJQ0FURV9DT0RFUywgY2FzZSBjYWxsX29wZXJhbmQpOiBPbmx5IGFsbG93IE1FTXMuCgkqIGZyMzAubWQgKGNhbGwgcGF0dGVybnMpOiBJbXByb3ZlIGNvbnN0cmFpbnRzLgoKVGh1IEphbiAxMyAyMzo0NDowMyAyMDAwICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEBjeWdudXMuY29tPgoKCSogZnIzMC5jIChmcjMwX2V4cGFuZF9lcGlsb2d1ZSk6IFJldmVydCBsYXN0IGNoYW5nZS4KCVVzZSBlbWl0X2p1bXBfaW5zbiBmb3IgdGhlIHJldHVybiBpbnNuLgoKVGh1IEphbiAxMyAxNDo0NjowMyAyMDAwICBKYXNvbiBFY2toYXJkdCAgPGpsZUBjeWdudXMuY29tPgoJCQkgIFN0YW4gQ294ICA8c2NveEBjeWdudXMuY29tPgoKCSogcHJlZGljdC5jOiBOZXcgZmlsZS4gUHJlbGltaW5hcnkgaW5mcmFzdHJ1Y3R1cmUgd29yayBmb3Igc3RhdGljCglicmFuY2ggcHJlZGljdGlvbiBhbmQgYmFzaWMgYmxvY2sgcmVvcmRlcmluZy4KCSogYmFzaWMtYmxvY2suaDogQWRkIHByb3RvdHlwZSBmb3IgZXN0aW1hdGVfcHJvYmFiaWxpdHkuCgkqIE1ha2VmaWxlLmluOiBBZGQgcnVsZXMgZm9yIHByZWRpY3Quby4KCjIwMDAtMDEtMTMgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIGZpeGluY2x1ZGVzICh2YV9saXN0KTogVXNlIF9fbm90X3ZhX2xpc3RfXyBmb3IgdGhlIGR1bW15LgoJKiBmaXhpbmMvKjogTGlrZXdpc2UuCgoyMDAwLTAxLTEzICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBjY2NwLmM6IFBST1RPIC0+IFBBUkFNUy4KCSogY2V4cC55OiBMaWtld2lzZS4KCSogY29sbGVjdDIuYzogTGlrZXdpc2UuCgkqIGNvbWJpbmUuYzogTGlrZXdpc2UuCgkqIGNvbnZlcnQuaDogTGlrZXdpc2UuCgkqIGNzZS5jOiBMaWtld2lzZS4KCSogZGJ4b3V0LmM6IExpa2V3aXNlLgoJKiBkYnhvdXQuaDogTGlrZXdpc2UuCgkqIGRpYWdub3N0aWMuYzogTGlrZXdpc2UuCgkqIGRvcHJpbnQuYzogTGlrZXdpc2UuCgkqIGR3YXJmMm91dC5jOiBMaWtld2lzZS4KCSogZHdhcmYyb3V0Lmg6IExpa2V3aXNlLgoJKiBkd2FyZm91dC5jOiBMaWtld2lzZS4KCSogZHdhcmZvdXQuaDogTGlrZXdpc2UuCgkqIGR5bi1zdHJpbmcuaDogTGlrZXdpc2UuCgoyMDAwLTAxLTEzICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBjYWxscy5jIChlbWl0X2NhbGxfMSk6IFdyYXAgdmFyYWlibGUgYHN0cnVjdF92YWx1ZV9zaXplX3J0eCcgaW4KCW1hY3JvIGNvbmRpdGlvbmFscyBndWFyZGluZyB1c2UuCgoJKiBkd2FyZjJvdXQuYzogSW5jbHVkZSAidG1fcC5oIi4KCgkqIGZ1bmN0aW9uLmMgKGxvY2F0ZV9hbmRfcGFkX3Bhcm0pOiBNYXJrIHBhcmFtZXRlciB3aXRoCglBVFRSSUJVVEVfVU5VU0VELgoJKGV4cGFuZF9mdW5jdGlvbl9lbmQpOiBMaWtld2lzZSBmb3IgdmFyaWFibGUgYGNvbnRleHQnLgoKCSogcmVvcmcuYyAobWFrZV9yZXR1cm5faW5zbnMpOiBXcmFwIHByb3RvdHlwZSBpbiBtYWNybyBIQVZFX3JldHVybi4KCjIwMDAtMDEtMTMgIE5pY2sgQ2xpZnRvbiAgPG5pY2tjQGN5Z251cy5jb20+CgoJKiBjb25maWcvZnIzMC9mcjMwLmMgKGZyMzBfZXhwYW5kX2VwaWxvZ3VlKTogRW1pdCBVU0VzIG9mIHBvcCdlZAoJcmVnaXN0ZXIgdG8gcHJldmVudCBjb21waWxlIHRpbWUgd2FybmluZ3MuCgoyMDAwLTAxLTEzICBaYWNrIFdlaW5iZXJnICA8emFja0B3b2xlcnkuY3VtYi5vcmc+CgoJKiBsb25nbG9uZy5oIFtpMzg2XSAodWRpdl9xcm5uZCk6IFJlbmFtZSAnZCcgYXJndW1lbnQgdG8gJ2R2JwoJdG8gYXZvaWQgLVd0cmFkaXRpb25hbCB3YXJuaW5nLgoKMjAwMC0wMS0xMyAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogMTc1MGEtcHJvdG9zLmg6IE5ldyBmaWxlLgoKCSogMTc1MGEuYzogSW5jbHVkZSB0bV9wLmguICBBZGQgc3RhdGljIHByb3RvdHlwZXMuICBGaXggY29tcGlsZQoJdGltZSB3YXJuaW5ncy4KCgkqIDE3NTBhLmg6IE1vdmUgcHJvdG90eXBlcyB0byAxNzUwYS1wcm90b3MuaC4gIEZpeCBjb21waWxlIHRpbWUKCXdhcm5pbmdzLgoKCSogMTc1MGEubWQ6IExpa2V3aXNlLgoKMjAwMC0wMS0xMyAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogYTI5ay1wcm90b3MuaDogTmV3IGZpbGUuCgoJKiBhMjlrLmM6IEluY2x1ZGUgdG1fcC5oLiAgQWRkIHN0YXRpYyBwcm90b3R5cGVzLiAgRml4IGNvbXBpbGUKCXRpbWUgd2FybmluZ3MuCgoJKiBhMjlrLmg6IE1vdmUgcHJvdG90eXBlcyB0byBhMjlrLXByb3Rvcy5oLiAgRml4IGNvbXBpbGUgdGltZQoJd2FybmluZ3MuCgoyMDAwLTAxLTEzICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBjbGlwcGVyLXByb3Rvcy5oOiBOZXcgZmlsZS4KCgkqIGNsaXBwZXIuYzogSW5jbHVkZSB0bV9wLmguICBBZGQgc3RhdGljIHByb3RvdHlwZXMuICBGaXggY29tcGlsZQoJdGltZSB3YXJuaW5ncy4KCgkqIGNsaXBwZXIuaDogTW92ZSBwcm90b3R5cGVzIHRvIGNsaXBwZXItcHJvdG9zLmguICBGaXggY29tcGlsZSB0aW1lCgl3YXJuaW5ncy4KClRodSBKYW4gMTMgMTY6MDM6MDYgMjAwMCAgSiJvcm4gUmVubmVja2UgPGFteWxhYXJAY3lnbnVzLmNvLnVrPgoKCSogcmVsb2FkMS5jIChyZWxvYWRfY29tYmluZV9ub3RlX3N0b3JlKTogVXNlIEhBUkRfUkVHTk9fTlJFR1MuCgoyMDAwLTAxLTEzICBOYXRoYW4gU2lkd2VsbCAgPHNpZHdlbGxAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGNvbmZpZ3VyZS5pbiAoLS1lbmFibGUtbmV3LWd4eC1hYmkpOiBOZXcgb3B0aW9uLgoJKiBhY2NvbmZpZy5oIChFTkFCTEVfTkVXX0dYWF9BQkkpOiBOZXcgZGVmaW5lLgoJKiBNYWtlZmlsZS5pbiAoR1hYX0FCSV9GTEFHKTogTmV3IHZhcmlhYmxlLgoJKiBjb25maWd1cmU6IFJlZ2VuZXJhdGUuCgoyMDAwLTAxLTEzICBNaWNoYWVsIEhheWVzICA8bS5oYXllc0BlbGVjLmNhbnRlcmJ1cnkuYWMubno+CgoJKiBzdG9yLWxheW91dC5jIChsYXlvdXRfdHlwZSk6IFVzZSBGT1JDRV9TVFJVQ1RfQkxLLgoJKiB0bS50ZXhpIChGT1JDRV9TVFJVQ1RfQkxLKTogRG9jdW1lbnQuCgkqIGNvbmZpZy9jNHgvYzR4LmggKEZPUkNFX1NUUlVDVF9CTEspOiBOZXcgbWFjcm8uCgpXZWQgSmFuIDEyIDIzOjEyOjQ3IDIwMDAgIEhhbnMtUGV0ZXIgTmlsc3NvbiAgPGhwQGF4aXMuY29tPgoKCSogY29uZmlnL25zMzJrL25zMzJrLm1kOiBSZXZlcnQgSmFuIDkgY2hhbmdlLgoKCSogZ2VucmVjb2cuYyAobWF5YmVfYm90aF90cnVlXzIpOiBEbyBub3QgY29tcGFyZSBhIHByZWRpY2F0ZS10ZXN0Cgl0byBhIG1vZGUtdGVzdCwgaWYgdGhlIHByZWRpY2F0ZSBpcyBhZGRyZXNzX29wZXJhbmQuCgpXZWQgSmFuIDEyIDIyOjM0OjAwIDIwMDAgIEplZmZyZXkgQSBMYXcgIChsYXdAY3lnbnVzLmNvbSkKCgkqIGNvbWJpbmUuYyAoaWZfdGhlbl9lbHNlX2NvbmQpOiBCZSBjYXJlZnVsIGFib3V0IHdoYXQga2luZHMKCW9mIFJUTCBleHByZXNzaW9ucyBhcmUgcGFzc2VkIHRvIG9wZXJhbmRfc3Vid29yZC4KCgkqIGZsb3cuYyAoc3BsaXRfZWRnZSk6IElmIHdlIGhhdmUgdG8gaW5zZXJ0IGEgbmV3IGp1bXAsIG1ha2UKCXN1cmUgdG8gYXNzb2NpYXRlIGl0IHdpdGggYSBiYXNpYyBibG9jay4KCgkqIGZsb3cuYyAoY29tbWl0X29uZV9lZGdlX2luc2VydGlvbik6IEEgYmxvY2sgd2l0aCBvbmUgc3VjY2Vzc29yCgljYW4gZW5kIGluIGEgSlVNUF9JTlNOIHRoYXQgaXMgbm90IGEgc2ltcGxlanVtcC4KCjIwMDAtMDEtMTIgIFJvYmVydCBMaXBlICA8cm9iZXJ0bEBzY28uY29tPgoKCSogaTM4Ni9zY281LmggKElOSVRfU0VDVElPTl9BU01fT1BfQ09GRik6IFJlbmFtZSBzZWN0aW9uIHRvICJjdG9yIi4KCShCVUlMRF9WQV9MSVNUX1RZUEUpOiBEZWZpbmUuCgkoRUhfRlJBTUVfU0VDVElPTl9BU01fT1ApOiBFeHBsaWN0bHkgZGVmaW5lIHRvIGJldHRlciBpbnRlcmFjdAoJd2l0aCBjcnRzdHVmZi5jLgoKMjAwMC0wMS0xMiAgSmFzb24gTWVycmlsbCAgPGphc29uQGNhc2V5LmN5Z251cy5jb20+CgoJKiBjY2NwLmMgKGRvX3ByYWdtYSk6IEFkZCBjYXN0IHRvIChjaGFyICopLgoKMjAwMC0wMS0xMiAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAY3lnbnVzLmNvbT4KCSAgICBGcmVkIEZpc2ggIDxmbmZAYmUuY29tPgoJICAgIEphc29uIE1lcnJpbGwgIDxqYXNvbkBjeWdudXMuY29tPgoKCSogY29uZmlndXJlLmluIChpPzg2LSotYmVvc3twZSxlbGYsfSopOiBSZWNvZ25pemUuCgkqIGkzODYvdC1iZW9zLCBpMzg2L3gtYmVvcywgaTM4Ni94bS1iZW9zLmg6IE5ldyBmaWxlcy4KCSogaTM4Ni9iZW9zLWVsZi5oLCBpMzg2L2Jlb3MtcGUuaDogTmV3IGZpbGVzLgoKCSogTWFrZWZpbGUuaW4gKENST1NTX1NZU1RFTV9IRUFERVJfRElSKTogTmV3LgoJKiBjcm9zcy1tYWtlIChTWVNURU1fSEVBREVSX0RJUik6IERlZmluZSB1c2luZwoJQ1JPU1NfU1lTVEVNX0hFQURFUl9ESVIuCgoJKiBnY2MuYyAoTElCUkFSWV9QQVRIX0VOVik6IFByb3ZpZGUgZGVmYXVsdC4KCShwcm9jZXNzX2NvbW1hbmQpOiBVc2UgaXQuCgkobWFpbik6IExpa2V3aXNlLiAgS2lsbCB0cmFpbGluZyA9IGZyb20gZW52IHZhcnMuCgkoYnVpbGRfc2VhcmNoX2xpc3QpOiBQdXQgaXQgYmFjay4KCSogY29sbGVjdDIuYyAobWFpbik6IFVzZSBMSUJSQVJZX1BBVEhfRU5WLgoKCSogY29uZmlndXJlLmluIChHQ0NfTkVFRF9ERUNMQVJBVElPTlMpOiBBZGQgZW52aXJvbi4KCSogdG9wbGV2LmM6IFVzZSBORUVEX0RFQ0xBUkFUSU9OX0VOVklST04uCgoJKiB0bS50ZXhpIChGcmFtZSBMYXlvdXQpOiBEb2N1bWVudCBTTUFMTF9TVEFDSy4KCSogYy1jb21tb24uYyAoY19jb21tb25fbm9kZXNfYW5kX2J1aWx0aW5zKTogQ2hlY2sgaXQuCgoJKiBzeXN0ZW0uaDogVW5kZWYgYWxsb2NhIGFmdGVyIGluY2x1ZGluZyBnbGliYydzIDxzdGRsaWIuaD4sCglpZiBVU0VfQ19BTExPQ0EgaXMgZGVmaW5lZC4KCgkqIGdjYy5jIChzZXRfaW5wdXQpOiBOZXcgZm4uCgkobWFpbik6IEFmdGVyIGFsbCBpbnB1dCBmaWxlcyBhcmUgY29tcGlsZWQsIHJlc2V0IHRoZSBpbnB1dCBmaWxlCglpbmZvIHRvIHRoZSBmaXJzdC4KCgkqIGFjbG9jYWwubTQgKHJpbmRleCwgaW5kZXgpOiBJZiBhbHJlYWR5IGRlZmluZWQsIGRvbid0IGF0dGVtcHQKCXRvIHJlZGVmaW5lLgoKCSogZ2luY2x1ZGUvdmFyYXJncy5oOiAoX192YV9saXN0X18pOiBEZWZpbmUgaWZuZGVmLgoJKiBnaW5jbHVkZS9zdGRhcmcuaDogTGlrZXdpc2UuCgoJKiBnaW5jbHVkZS9zdGRkZWYuaCAoX19XQ0hBUl9UWVBFX18pIFtCRU9TXTogVXNlIGludAoJaW5zdGVhZCBvZiB1bnNpZ25lZCBjaGFyLgoKCSogaGFzaC5oICh0cnVlLCBmYWxzZSwgYm9vbGVhbik6IFVuZGVmIGJlZm9yZSBlbnVtLgoKCSogZXhwbWVkLmMgKGNob29zZV9tdWx0aXBsaWVyKTogQ2FzdCAmbWhpZ2hfbG8gYW5kICZtaGlnaF9oaSB0byBiZQoJcHJvcGVyIHR5cGUgb2YgIkhPU1RfV0lERV9JTlQgKiIsIHJhdGhlciB0aGFuIHRoZWlyIG5hdHVyYWwgdHlwZSBvZgoJInVuc2lnbmVkIEhPU1RfV0lERV9JTlQgKiIuCgoyMDAwLTAxLTEyICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBzdnIzLmggKEFTTV9GSUxFX1NUQVJUKTogV3JhcCBpZi1jbGF1c2UgaW4gc3F1aWdseSBicmFja2V0cy4KCgkqIHJlY29nLmMgKG1lbW9yeV9hZGRyZXNzX3ApOiBNYXJrIHBhcmFtZXRlciB3aXRoIEFUVFJJQlVURV9VTlVTRUQuCgoJKiByZWdjbGFzcy5jIChjaG9vc2VfaGFyZF9yZWdfbW9kZSk6IExpa2V3aXNlLgoKCSogcmVsb2FkLmMgKGZpbmRfdmFsaWRfY2xhc3MsIHN0cmljdF9tZW1vcnlfYWRkcmVzc19wKTogTGlrZXdpc2UuCgoJKiByZW9yZy5jIChvcHRpbWl6ZV9za2lwKTogV3JhcCBwcm90b3R5cGUgaW4gbWFjcm8gY29uZGl0aW9uYWxzLgoKMjAwMC0wMS0xMiAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogYy1jb21tb24uYzogUFJPVE8gLT4gUEFSQU1TLgoJKiBjLWNvbW1vbi5oOiBMaWtld2lzZS4KCSogYy1kZWNsLmM6IExpa2V3aXNlLgoJKiBjLWl0ZXJhdGUuYzogTGlrZXdpc2UuCgkqIGMtbGFuZy5jOiBMaWtld2lzZS4KCSogYy1sZXguYzogTGlrZXdpc2UuCgkqIGMtbGV4Lmg6IExpa2V3aXNlLgoJKiBjLXBhcnNlLmluOiBMaWtld2lzZS4KCSogYy1wcmFnbWEuYzogTGlrZXdpc2UuCgkqIGMtcHJhZ21hLmg6IExpa2V3aXNlLgoJKiBjLXRyZWUuaDogTGlrZXdpc2UuCgkqIGMtdHlwZWNrLmM6IExpa2V3aXNlLgoJKiBvYmpjL29iamMtYWN0LmM6IExpa2V3aXNlLgoJKiBvYmpjL29iamMtYWN0Lmg6IExpa2V3aXNlLgoKMjAwMC0wMS0xMiAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogbTg4ay1wcm90b3MuaDogTmV3IGZpbGUuCgoJKiBtODhrLmM6IEluY2x1ZGUgdG1fcC5oLiAgQWRkIHN0YXRpYyBwcm90b3R5cGVzLiAgRml4IGNvbXBpbGUKCXRpbWUgd2FybmluZ3MuCgoJKiBtODhrLmg6IE1vdmUgcHJvdG90eXBlcyB0byBtODhrLXByb3Rvcy5oLiAgRml4IGNvbXBpbGUgdGltZSB3YXJuaW5ncy4KCgkqIG04OGsubWQ6IExpa2V3aXNlLgoKCSogdGVrWEQ4OC5oOiBMaWtld2lzZS4KCjIwMDAtMDEtMTIgIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIG02OGstcHJvdG9zLmg6IE5ldyBmaWxlLgoKCSogbTY4ay5jOiBJbmNsdWRlIHRtX3AuaC4gIEFkZCBzdGF0aWMgcHJvdG90eXBlcy4gIEZpeCBjb21waWxlCgl0aW1lIHdhcm5pbmdzLgoKCSogbTY4ay5oOiBNb3ZlIHByb3RvdHlwZXMgdG8gbTY4ay1wcm90b3MuaC4gIEZpeCBjb21waWxlIHRpbWUgd2FybmluZ3MuCgoJKiBtb3QzMzAwLmg6IExpa2V3aXNlLgoKMjAwMC0wMS0xMiAgUmljaGFyZCBFYXJuc2hhdyA8cmVhcm5zaGFAYXJtLmNvbT4KCgkqIGhhaWZhLXNjaGVkLmMgKHNwbGl0X2VkZ2VzKTogUGFzcyBlZGdlc2V0X3NpemUgYXMgc2Vjb25kIGFyZyB0bwoJZXh0cmFjdF9iaXRsc3QuCgkoZXh0cmFjdF9iaXRsaXN0KTogRGVjbGFyZSBiaXRsZW4uCgoyMDAwLTAxLTEyICBaYWNrIFdlaW5iZXJnICA8emFja0B3b2xlcnkuY3VtYi5vcmcKCgkqIGNjY3AuYzogQWNjZXB0IGFuZCBpZ25vcmUgLWxhbmctZm9ydHJhbi4KCgkqIGMtdHlwZWNrLmMgKGJ1aWxkX2NfY2FzdCk6IElzc3VlIC1XY2FzdC1xdWFsIHdhcm5pbmdzIGlmIHRoZQoJcXVhbGlmaWVycyBkb24ndCBtYXRjaCBhdCBhbnkgbGV2ZWwgb2YgcG9pbnRlcm5lc3MuCgoyMDAwLTAxLTEyICBSb2JlcnQgTGlwZSAgPHJvYmVydGxAc2NvLmNvbT4KCgkqIGkzODYvc3lzdjUuaCAoQ1BQX1NQRUMsIExJQlNQRUMpOiBBZGQgLXB0aHJlYWRULgoKMjAwMC0wMS0xMiAgQmVybmQgU2NobWlkdCAgPGJlcm5kc0BjeWdudXMuY28udWs+CgoJKiByZWxvYWQxLmMgKHJlbG9hZF9yZWdfdW5hdmFpbGFibGUpOiBOZXcgc3RhdGljIHZhcmlhYmxlLgoJKHJlbG9hZF9yZWdfZnJlZV9wKTogVGVzdCBpdC4KCShyZWxvYWRfcmVnX2ZyZWVfZm9yX3ZhbHVlX3ApOiBUZXN0IGl0IGluc3RlYWQgb2YKCXJlbG9hZF9yZWdfdXNlZC4KCShjaG9vc2VfcmVsb2FkX3JlZ3NfaW5pdCk6IENvbXB1dGUgaXQuCgpXZWQgSmFuIDEyIDAzOjI0OjQxIDIwMDAgIFRvc2hpeWFzdSBNb3JpdGEgKHRvc2hpLm1vcml0YUBzZWdhLmNvbSkKCgkqIHJlb3JnLmMgKGZpbGxfc2xvdHNfZnJvbV90aHJlYWQpOiBDaGVjayBtb2RpZmllZF9pbl9wCgliZWZvcmUgcmVwbGFjaW5nLgoKV2VkIEphbiAxMiAwMzoyMDozMSAyMDAwICBKb2huIE1hcnNoYWxsIDxqb2huX3dfbWFyc2hhbGxAcGFsbS5jb20+CgoJKiBnY2MudGV4aSAoRnVuZGluZywgR05VL0xpbnV4LCBDb3B5aW5nLCBDb250cmlidXRvcnMpOiBGb3JtYXQKCXRoZXNlIG5vZGVzIGV2ZW4gaWYgSU5URVJOQUxTIGlzIG5vdCBzZXQuCgpXZWQgSmFuIDEyIDA5OjM5OjIyIDIwMDAgIE5pY2sgQnVycmV0dCAgPG5pY2suYnVycmV0dEBidGludGVybmV0LmNvbT4KCgkqIGdjc2UuYyAoZGVsZXRlX251bGxfcG9pbnRlcl9jaGVja3NfMSk6IENvcGUgd2hlbgoJZ2V0X2NvbmRpdGlvbiBjYW5ub3QgZGV0ZXJtaW5lIHRoZSBjb25kaXRpb24uCgoyMDAwLTAxLTEyICBHYWJyaWVsIERvcyBSZWlzICA8Z2RyQGNvZGVzb3VyY2VyeS5jb20+CgoJKiB0b3BsZXYuaCAoc2V0X21lc3NhZ2VfbGVuZ3RoKTogRGVjbGFyZS4KCgkqIGRpYWdub3N0aWMuYyAob2JzdGFja19jaHVua19hbGxvYyk6IERlZmluZSBtYWNyby4KCShvYnN0YWNrX2NodW5rX2ZyZWUpOiBMaWtld2lzZS4KCShzdHJ1Y3Qgb3V0cHV0X2J1ZmZlcik6IE5ldyBkYXRhIHN0cnVjdHVyZS4KCSh2bWVzc2FnZSk6IFJlbW92ZS4KCShvdXRwdXRfbWF4aW11bV93aWR0aCk6IE5ldyB2YXJpYWJsZS4KCShkb2luZ19saW5lX3dyYXBwaW5nLCBzZXRfbWVzc2FnZV9sZW5ndGgsIGluaXRfb3V0cHV0X2J1ZmZlciwKCWdldF9vdXRwdXRfcHJlZml4LCBvdXRwdXRfc3BhY2VfbGVmdCwgZW1pdF9vdXRwdXRfcHJlZml4LAoJb3V0cHV0X25ld2xpbmUsIG91dHB1dF9hcHBlbmQsIG91dHB1dF9wdXRzLCBkdW1wX291dHB1dCwKCXZidWlsZF9tZXNzYWdlX3N0cmluZywgYnVpbGRfbWVzc2FnZV9zdHJpbmcsIGJ1aWxkX2xvY2F0aW9uX3ByZWZpeCwKCXZvdXRwdXRfbm90aWNlLCBvdXRwdXRfcHJpbnRmLCBsaW5lX3dyYXBwZXJfcHJpbnRmLAoJdmxpbmVfd3JhcHBlcl9tZXNzYWdlX3dpdGhfbG9jYXRpb24pOiAgTmV3IGZ1bmN0aW9ucy4gSW1wbGVtZW50CglhdXRvbWF0aWMgbGluZSB3cmFwcGluZy4KCSh2X21lc3NhZ2Vfd2l0aF9kZWNsKTogTWFrZSBpdCBoYW5kbGUgYXV0b21hdGljIGxpbmUgd3JhcHBpbmcuCgkodl9lcnJvcl93aXRoX2ZpbGVfYW5kX2xpbmUpOiBMaWtld2lzZS4KCSh2X3dhcm5pbmdfd2l0aF9maWxlX2FuZF9saW5lKTogTGlrZXdpc2UuCgkoYW5ub3VuY2VfZnVuY3Rpb24pOiBMaWtld2lzZS4KCShkZWZhdWx0X3ByaW50X2Vycm9yX2Z1bmN0aW9uKTogTGlrZXdpc2UuCgoyMDAwLTAxLTExIDE2OjI0IC0wODAwICBaYWNrIFdlaW5iZXJnICA8emFja0B3b2xlcnkuY3VtYi5vcmc+CgoJKiBjcHBsaWIuaCAoc3RydWN0IGNwcF9vcHRpb25zKTogQ2hhbmdlIGxhbmdfYXNtIHRvIGNoYXIuCglBZGQgbGFuZ19mb3J0cmFuLgoJKiBjcHBpbml0LmMgKGJ1aWx0aW5fYXJyYXkpOiBUYWtlIG91dCBfX1NURENfVkVSU0lPTl9fLCBpdCdzCglkb25lIGluIGNwcF9oYW5kbGVfb3B0aW9uIG5vdy4KCShpbml0aWFsaXplX2J1aWx0aW5zKTogVGFrZSBvdXQgc3BlY2lhbCBjYXNlIGNvZGUgdXNlZCBvbmx5IGJ5CglfX1NURENfVkVSU0lPTl9fLgoJKGNwcF9oYW5kbGVfb3B0aW9uKTogVHVybiBvZmYgdHJpZ3JhcGhzIGFuZCB0cmlncmFwaCB3YXJuaW5ncwoJaWYgLXRyYWRpdGlvbmFsLiAgUmVjb2duaXplIC1sYW5nLWZvcnRyYW4gYW5kIHNldAoJbGFuZ19mb3J0cmFuLCBhbHNvIHR1cm4gb2ZmIGNwbHVzcGx1c19jb21tZW50cy4KCShwcmludF9oZWxwKTogRG9jdW1lbnQgLWxhbmctZm9ydHJhbi4KCSogY3BwbGliLmMgKGhhbmRsZV9kaXJlY3RpdmUpOiBJZ25vcmUgYCMgMTIzICJmaWxlIicgaWYKCWxhbmdfYXNtLiBJZ25vcmUgYWxsIGRpcmVjdGl2ZXMgb3RoZXIgdGhhbiBgIyAxMjMgImZpbGUiJyBpZgoJQ1BQX1BSRVBST0NFU1NFRC4KCShjcHBfZ2V0X3Rva2VuKTogSWYgLXRyYWRpdGlvbmFsLCBkb24ndCByZWNvZ25pemUgZGlyZWN0aXZlcwoJdW5sZXNzIHRoZSAjIGlzIGluIGNvbHVtbiAxLgoJKHBhcnNlX3N0cmluZyk6IElmIGxhbmdfZm9ydHJhbiBvciBsYW5nX2FzbSwgc2lsZW50bHkKCXRlcm1pbmF0ZSBzdHJpbmdzICgnJyBvciAiIikgYXQgZW5kIG9mIGxpbmUuCglSZW1vdmUgdW5uZWNlc3NhcnkgYnJhY2VzLgoKMjAwMC0wMS0xMSAgQWxleGFuZHJlIE9saXZhICA8b2xpdmFAbHNkLmljLnVuaWNhbXAuYnI+CgkgICAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAY3lnbnVzLmNvbT4KCgkqIHJlc291cmNlLmMgKG1hcmtfcmVmZXJlbmNlZF9yZXNvdXJjZXMpOiBNYXJrIGEgc2V0IHN0cmljdF9sb3dfcGFydAoJYXMgdXNlZC4KCSogY29uZmlnL2kzODYvaTM4Ni5jIChpeDg2X2V4cGFuZF9zZXRjYyk6IFJlLWVuYWJsZSBjbGVhciArIHNldAoJc3RyaWN0X2xvd19wYXJ0IHdoZW4gcG9zc2libGUuCgoyMDAwLTAxLTExICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBhbGlhcy5jOiBQUk9UTyAtPiBQQVJBTVMuCgkqIGJhc2ljLWJsb2NrLmg6IExpa2V3aXNlLgoJKiBiaXRtYXAuYzogTGlrZXdpc2UuCgkqIGJpdG1hcC5oOiBMaWtld2lzZS4KCSogYnVpbHRpbnMuYzogTGlrZXdpc2UuCgkqIGMtYXV4LWluZm8uYzogTGlrZXdpc2UuCgkqIGNhbGxlci1zYXZlLmM6IExpa2V3aXNlLgoJKiBjYWxscy5jOiBMaWtld2lzZS4KCjIwMDAtMDEtMTEgIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIE1ha2VmaWxlLmluICh0b3BsZXYubyk6IERlcGVuZCBvbiByZWdzLmguCgoJKiBvdXRwdXQuaCAodGRlc2Nfc2VjdGlvbik6IFByb3RvdHlwZS4KCgkqIHJlZ2NsYXNzLmMgKGNvcHlfY29zdCk6IE1hcmsgcGFyYW1ldGVycyB3aXRoIEFUVFJJQlVURV9VTlVTRUQuCgoJKiBzZGJvdXQuYzogSW5jbHVkZSAidG1fcC5oIi4KCgkqIHRvcGxldi5jOiBJbmNsdWRlICJyZWdzLmgiLgoKVHVlIEphbiAxMSAxMTozNzo1OCAyMDAwICBNaWtlIFN0dW1wICA8bXJzQHdycy5jb20+CgoJKiB1bnJvbGwuYyAodW5yb2xsX2xvb3ApOiBBZGQgRUggc3VwcG9ydC4KCjIwMDAtMDEtMTEgIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIHBhLXByb3Rvcy5oOiBOZXcgZmlsZS4KCgkqIHBhLmM6IEluY2x1ZGUgcmVjb2cuaCBhbmQgdG1fcC5oLgoJKGNvbXB1dGVfemRlcHdpX29wZXJhbmRzLCBjb21wdXRlX21vdnN0cnNpX2xlbmd0aCwKCXJlbW92ZV91c2VsZXNzX2FkZHRyX2luc25zLCBzdG9yZV9yZWcsIGxvYWRfcmVnLCBzZXRfcmVnX3BsdXNfZCwKCWZpbmRfYWRkcl9yZWcsIGltcG9ydF9taWxsaSk6IEFkZCBzdGF0aWMgcHJvdG90eXBlcy4KCShwYV9jcHVfc3RyaW5nLCBwYV9hcmNoX3N0cmluZyk6IENvbnN0aWZ5IGEgY2hhciouCgkobGVnaXRpbWl6ZV9waWNfYWRkcmVzcyk6IFBhc3MgYXJndW1lbnQgYG1vZGUnIHRvIHBpY19sYWJlbF9vcGVyYW5kLgoJKHJlYWRfb25seV9vcGVyYW5kKTogQWRkIGFyZ3VtZW50IGBtb2RlJy4KCShzaW5nbGVtb3ZlX3N0cmluZywgb3V0cHV0X21vdmVfZG91YmxlLCBvdXRwdXRfZnBfbW92ZV9kb3VibGUsCglvdXRwdXRfYmxvY2tfbW92ZSwgb3V0cHV0X2FuZCwgb3V0cHV0X2lvciwgb3V0cHV0X2FzY2lpLAoJcmVtb3ZlX3VzZWxlc3NfYWRkdHJfaW5zbnMsIG1pbGxpX25hbWVzLCBvdXRwdXRfbXVsX2luc24sCglvdXRwdXRfZGl2X2luc24sIG91dHB1dF9tb2RfaW5zbiwgb3V0cHV0X2FyZ19kZXNjcmlwdG9yLAoJb3V0cHV0X2NicmFuY2gsIG91dHB1dF9iYiwgb3V0cHV0X2J2Yiwgb3V0cHV0X2RicmEsICwKCW91dHB1dF9taWxsaWNvZGVfY2FsbCwgb3V0cHV0X2NhbGwsIGhwcGFfZW5jb2RlX2xhYmVsLAoJb3V0cHV0X3BhcmFsbGVsX21vdmIsIG91dHB1dF9wYXJhbGxlbF9hZGRiKTogQ29uc3RpZnkgYSBjaGFyKi4KCShocHBhX3ZhX3N0YXJ0KTogTWFyayBwYXJhbWV0ZXIgYHN0ZGFyZ19wJyB3aXRoIEFUVFJJQlVURV9VTlVTRUQuCgkob3V0cHV0X3BhcmFsbGVsX2FkZGIpOiBSZW1vdmUgZXh0cmEgYXJnIHRvIGBjb25zdHJhaW5fb3BlcmFuZHMnCgoJKiBwYS5oOiAgTW92ZSBhbGwgcHJvdG90eXBlcyB0byBwYS1wcm90b3MuaC4KCShwYV9jcHVfc3RyaW5nLCBwYV9hcmNoX3N0cmluZyk6IENvbnN0aWZ5IGEgY2hhciouCgkoTEVHSVRJTUlaRV9BRERSRVNTKTogQ2FsbCBgc3ltYm9saWNfb3BlcmFuZCcgd2l0aCBtb2RlIGFyZ3VtZW50LgoKCSogcGEubWQ6IENhbGwgYGZ1bmN0aW9uX2xhYmVsX29wZXJhbmQnIHdpdGggbW9kZSBhcmd1bWVudC4KCUxpa2V3aXNlIGZvciBgcmVhZF9vbmx5X29wZXJhbmQnLgoJRml4IG5lc3Rpbmcgb2YgcGFyZW5zIGluIGNhbGwgdG8gYHN5bWJvbGljX29wZXJhbmQnLgoKMjAwMC0wMS0xMSAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogaTg2MC1wcm90b3MuaDogTmV3IGZpbGUuCgoJKiBpODYwLmM6IEluY2x1ZGUgdG1fcC5oLiAgQWRkIHN0YXRpYyBwcm90b3R5cGVzLiAgRml4IGNvbXBpbGUKCXRpbWUgd2FybmluZ3MuCgoJKiBpODYwLmg6IE1vdmUgcHJvdG90eXBlcyB0byBpODYwLXByb3Rvcy5oLiAgRml4IGNvbXBpbGUgdGltZSB3YXJuaW5ncy4KCgkqIGk4NjAubWQ6IExpa2V3aXNlLgoKVHVlIEphbiAxMSAxODo1OTozNSBNRVQgMjAwMCAgSmFuIEh1Ymlja2EgPGpoQHN1c2UuY3o+CgoJKiBpMzg2Lm1kIChtb3ZzdHJzaSBleHBhbmRlcik6IFJld3JpdGUuCgkobW92c3Ryc2lfMSBpbnNuKTogRGVsZXRlZC4KCShzdHJtb3ZoaSwgc3RybW92cWkgZXhwYW5kZXIpOiBOZXcgZXhwYW5kZXJzLgoJKG1vdnNoaV8xLCBtb3ZzcWlfMSwgcmVwX21vdnNpLCByZXBfbW92cWkpOiBOZXcgcGF0dGVybnMuCgkqIGkzODYuYyAoeDg2X3NpbmdsZV9zdHJpbmdvcCk6IE5ldyBnbG9iYWwgdmFyaWFibGUuCgkqIGkzODYuaCAoeDg2X3NpbmdsZV9zdHJpbmdvcCk6IERlY2xhcmUuCgkoVEFSR0VUX1NJTkdMRV9TVFJJTkdPUCk6IE5ldyBtYWNyby4KCjIwMDAtMDEtMTEgIENsaW50b24gUG9wZXR6ICA8Y3BvcGV0ekBjeWdudXMuY29tPgoKCSogY29uZmlnL21pcHMvbWlwcy5jIChtaXBzX3ZhX2FyZyk6IEZvciBFQUJJLCBlbWl0IHRoZSBxdWV1ZWQKCWludGVnZXIgdmFyYXJnIFBPU1RJTkNSRU1FTlQgYmVmb3JlIHRoZSBkZXN0aW5hdGlvbiBvZiB0aGUganVtcAoJZm9yIHRoZSBoYXJkIGZwIGNhc2UuCgkoZnVuY3Rpb25fYXJnX3Bhc3NfYnlfcmVmZXJlbmNlKTogUGFzcyBhIGNvcHkgb2YgQ1VNIHRvCglGVU5DVElPTl9BUkcuCgoJKiBjb25maWcvbWlwcy9taXBzLmggKEdPX0lGX0xFR0lUSU1BVEVfQUREUkVTUyk6IE1vdmUgY2hlY2sKCWZvciBDT05TVEFOVF9BRERSRVNTX1AgYWJvdmUgd2hpbGUgbG9vcCBmb3Igc3VicmVnLgoKMjAwMC0wMS0xMSAgQ2xpbnRvbiBQb3BldHogIDxjcG9wZXR6QGN5Z251cy5jb20+CgoJKiBmbG93LmMgKHByb3BhZ2F0ZV9ibG9jayk6IFdoZW4gYSBwcm9sb2d1ZS9lcGlsb2d1ZSBpbnNuCglpcyBtYXJrZWQgZGVhZCwgdW5jb25kaXRpb25hbGx5IGNsZWFyIGxpYmNhbGxfaXNfZGVhZCBhbmQKCWluc25faXNfZGVhZCwgYW5kIG9ubHkgZHVtcCBydGwgaWYgd2FybmluZ3MgYXJlbid0IGJlaW5nCglzdXBwcmVzc2VkLgoKVHVlIEphbiAxMSAxNjoyNjo0NyBNRVQgMjAwMCAgSmFuIEh1Ymlja2EgPGpoQHN1c2UuY3o+CgoJKiBpMzg2LmMgKGl4ODZfYXR0cl9sZW5ndGhfZGVmYXVsdCk6IEhhbmRsZSBUWVBFX1NUUiBhbmQgVFlQRV9DTEQuCgkqIGkzODYubWQgKEZJUlNUX1BTRVVET19SRUdJU1RFUik6IFNldCB0byAyMC4KCShGSVhFRF9SRUdJU1RFUlMpOiBTZXQgZGlyZmxhZyBhcyBmaXhlZC4KCShDQUxMX1VTRURfUkVHSVNURVJTKTogU2V0IGRpcmZsYWcgYXMgdXNlZC4KCShSRUdfQUxMT0NfT1JERVIpOiBTZXQgZGlyZmxhZyBhcyBsYXN0IG9uZS4KCShESVJGTEFHX1JFRyk6IE5ldyBtYWNyby4KCShNRF9BU01fQ0xPQkJFUlMpOiBBc20gY2xvYmJlciBkaXJmbGFnIGZvciBiYWNrd2FyZCBjb21wYXRpYmlsaXR5LgoJKEhJX1JFR0lTVEVSX05BTUVTKTogQWRkIGRpcmZsYWcuCgkoREVCVUZfUFJJTlRfUkVHKTogSGFuZGxlIGRpcmZsYWcuCgkqIGkzODYubWQgKHR5cGUgYXR0cmlidXRlKTogTmV3IGNsZCBhbmQgc3RyIHR5cGVzLgoJKGxlbmd0aF9vcGNvZGUgYXR0cmlidXRlKTogU2V0IGNsZCBhbmQgc3RyIHRvIDEuCgkobWVtb3J5IGF0dHJpYnV0ZSk6IFNldCBzdHIgdG8gdW5rbm93biAtIGl0IGlzIG5vdCBjbGVhciBmcm9tIHRoZQoJcGF0dGVybnMuCgkocGVudF9ucCBmdW5jdGlvbiB1bml0KTogUHJlZml4ZWQgc3RyaW5nIG9wZXJhdGlvbnMgdGFrZXMgMTIgY3ljbGVzCgltaW5pbWFsbHk7IGNsZCB0YWtlcyAyIGN5Y2xlcy4KCShwcHJvX3VvcHMgYXR0cmlidXRlKTogU3RyIGlzICJtYW55IiBhbmQgY2xkIGlzICJmZXciLgoJKHBwcm9fcDAgdW5pdCk6IEhhbmRsZSBjbGQgaGVyZS4KCShrNl9hbHV4IHVuaXQpOiBIYW5kbGUgY2xkIGFuZCBzdHIgdHlwZXMuCgkoazZfbG9hZCB1bml0KTogSXQgaXMgb2N1cGllZCBieSBzdHIgb3Bjb2Rlcy4KCShrNl9zdG9yZSB1bml0KTogSXQgaXMgb2N1cGllZCBieSBzdHIgb3Bjb2Rlcy4KCShhdGhsb25fZGVjb2RlKTogU3RyIGlzIHZlY3RvciBkZWNvZGVkLgoJKGF0aGxvbl9pZXUpOiBIYW5kbGUgc3RyIGFuZCBjbGQuCgkoY2xkIHBhdHRlcm4pOiBOZXcuCgkobW92c3Ryc2ksIGNscnN0ciwgY21wc3RyLCBzdHJsZW4gZXhwYW5kZXIpOiBFbWl0IGNsZCBpbnN0cnVjdGlvbgoJKG1vdnN0cnNpXzEsIGNscnN0cnNpXzEsIGNtcHN0cnNpXzEsIHN0cmxlbnNpXzEsCgljbXBzdHJzaV9uel8xIGluc24pOiBEbyBub3Qgb3V0cHV0IGNsZCBpbnN0cnVjdGlvbgoKVHVlIEphbiAxMSAwNjoxNDozOSAyMDAwICBEYXZpZCBTdGFybmVyIDxkc3Rhcm5lcjk4QGFhc2FhLm9mZS5vcmc+CgoJKiBnY2MudGV4aSAoRysrIGFuZCBHQ0MpOiBBZGQgSmF2YSBhbmQgQ2hpbGwuCgkoQnVnIENyaXRlcmEpOiBEb24ndCBsaXN0IGxhbmd1YWdlcy4KCgkqIGdjYy50ZXhpIChJbmNvbXBhdGliaWxpdGllcyk6IE5vIGxvbmdlciBjbGFpbSBtb3N0IEMgY29tcGlsZXJzCglhcmUgSyZSLgoKCSogZ2NjLnRleGkgKEcrKyBhbmQgR0NDKTogVXBkYXRlIG90aGVyIGZyb250LWVuZHMgbGlzdC4KClR1ZSBKYW4gMTEgMDU6NDk6MDEgMjAwMCAgSmVmZnJleSBBIExhdyAgKGxhd0BjeWdudXMuY29tKQoKCSogaTM4Ni5jIChpeDg2X2V4cGFuZF9zZXRjYyk6IEZpeCB0eXBvLgoJKGl4ODZfZXhwYW5kX21vdmNjKTogU2ltaWxhcmx5LgoKCSogQmFuZC1haWQgdW50aWwgaGFpZmEncyBiaXRzZXQgaW1wbGVtZW50YXRpb24gaXMgbnVrZWQuCgkqIGhhaWZhLXNjaGVkLmMgKGV4dHJhY3RfYml0bHN0KTogTmV3IHBhcmFtZXRlciBmb3Igc2l6ZSBvZiB0aGUKCWJpdHNldCBpbiBiaXRzLiAgQWxsIGNhbGxlcnMgY2hhbmdlZC4gIEF2b2lkIGxvb2tpbmcgYXQgdW5kZWZpbmVkCgliaXRzIGluIHRoZSBiaXRzZXQuCgkoZWRnZXNldF9iaXRzaXplKTogTmV3IHZhcmlhYmxlLgoJKHNjaGVkdWxlX3JlZ2lvbik6IEluaXRpYWxpemUgZWRnZXNldF9iaXRzaXplLgoKMjAwMC0wMS0xMCAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogTWFrZWZpbGUuaW4gKG9wdGFicy5vKTogRGVwZW5kIG9uIHJlYWwuaAoJKHJlc291cmNlLm8pOiBEZXBlbmQgb24gaW5zbi1hdHRyLmgKCgkqIGJ1aWx0aW5zLmMgKHJlc3VsdF92ZWN0b3IpOiBXcmFwIHByb3RvdHlwZSBpbiBtYWNybyBjb25kaXRpb25zCglnb3Zlcm5pbmcgZGVmaW5pdGlvbiBhbmQgdXNlLgoKCSogYy1jb21tb24uYzogSW5jbHVkZSB0bV9wLmguCgoJKiBjLWxleC5jOiBMaWtld2lzZS4KCgkqIGVsZm9zLmg6IENvbnN0aWZ5IGEgY2hhciouCgoJKiBmaW5hbC5jIChhbGlnbl9mdXp6KTogV3JhcCBwcm90b3R5cGUgaW4gbWFjcm8gSEFWRV9BVFRSX2xlbmd0aC4KCShnZXRfYXR0cl9sZW5ndGgsIHNob3J0ZW5fYnJhbmNoZXMsIHByb2ZpbGVfYWZ0ZXJfcHJvbG9ndWUpOiBNYXJrCglwYXJhbWV0ZXIgd2l0aCBBVFRSSUJVVEVfVU5VU0VELgoKCSogZm9sZC1jb25zdC5jIChleGFjdF9yZWFsX2ludmVyc2UpOiBXcmFwIHZhcmlhYmxlIGBpJyBpbgoJQ0hFQ0tfRkxPQVRfVkFMVUUuCgoJKiBoYWlmYS1zY2hlZC5jIChzY2hlZHVsZV9pbnNucyk6IE1hcmsgcGFyYW1ldGVyIHdpdGgKCUFUVFJJQlVURV9VTlVTRUQuCgoJKiBvcHRhYnMuYzogSW5jbHVkZSByZWFsLmguCgoJKiByZWFsLmggKGVyZWFsX2F0b2YpOiBBZGQgcHJvdG90eXBlIGFyZ3VtZW50cy4KCgkqIHJlc291cmNlLmM6IEluY2x1ZGUgaW5zbi1hdHRyLmguCgoJKiBzZGJvdXQuYyAoc2Rib3V0X3F1ZXVlX2Fub255bW91c190eXBlLAoJc2Rib3V0X2RlcXVldWVfYW5vbnltb3VzX3R5cGVzKTogV3JhcCBpbiBtYWNybwoJU0RCX0FMTE9XX0ZPUldBUkRfUkVGRVJFTkNFUy4KCShzZGJvdXRfaW5pdCwgc2Rib3V0X3N0YXJ0X25ld19zb3VyY2VfZmlsZSk6IE1hcmsgcGFyYW1ldGVyIHdpdGgKCUFUVFJJQlVURV9VTlVTRUQuCgoJKiBzdG10LmMgKGV4cGFuZF9yZXR1cm4pOiBXcmFwIHZhcmlhYmxlIGBvcDAnIGluIG1hY3JvIEhBVkVfcmV0dXJuLgoKCSogc3R1cGlkLmM6IEluY2x1ZGUgdG1fcC5oLgoKCSogdHJlZS5jIChyZWFsX3ZhbHVlX2Zyb21faW50X2NzdCk6IE1hcmsgcGFyYW1ldGVyIHdpdGgKCUFUVFJJQlVURV9VTlVTRUQuCgoyMDAwLTAxLTEwICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBpOTYwLXByb3Rvcy5oOiBOZXcgZmlsZS4KCgkqIGk5NjAuYzogSW5jbHVkZSB0bV9wLmguICBBZGQgc3RhdGljIHByb3RvdHlwZXMuICBGaXggY29tcGlsZQoJdGltZSB3YXJuaW5ncy4KCgkqIGk5NjAuaDogTW92ZSBwcm90b3R5cGVzIHRvIGk5NjAtcHJvdG9zLmguICBGaXggY29tcGlsZSB0aW1lIHdhcm5pbmdzLgoKMjAwMC0wMS0xMCAgQWxleGFuZHJlIE9saXZhICA8b2xpdmFAbHNkLmljLnVuaWNhbXAuYnI+CgoJKiBjb21iaW5lLmMgKGV4cGFuZF9maWVsZF9hc3NpZ25tZW50KTogRG8gbm90IGRpc2NhcmQgU1VCUkVHcwoJd2hpbGUgY29tcHV0aW5nIG5vbnplcm9fYml0cy4KCjIwMDAtMDEtMDkgIE5pY2sgQ2xpZnRvbiAgPG5pY2tjQGN5Z251cy5jb20+CgoJKiBjb25maWcvYXJtL2FybS5jOiBGaXggY29tcGlsZSB0aW1lIHdhcm5pbmdzIGFib3V0IHNpZ25lZCB2cwoJdW5zaWduZWQgY29uc3RhbnRzLgoJKiBjb25maWcvYXJtL2FybS5oOiBGaXggY29tcGlsZSB0aW1lIHdhcm5pbmdzIGFib3V0IHNpZ25lZCB2cwoJdW5zaWduZWQgY29uc3RhbnRzLgoKMjAwMC0wMS0wOSAgUGhpbGlwIEJsdW5kZWxsICA8cGhpbGJAZ251Lm9yZz4KCgkqIGNvbmZpZy9hcm0vYXJtLmMgKG91dHB1dF9yZXR1cm5faW5zdHJ1Y3Rpb24pOiBVc2UgYGxkcicgcmF0aGVyCgl0aGFuIGBsZG0nIHdpdGggb25seSBvbmUgcmVnaXN0ZXIuCgkqIGNvbmZpZy9hcm0vYXJtLm1kIChwdXNoX211bHRpKTogVXNlIGBzdHInIHJhdGhlciB0aGFuIGBzdG0nIHdpdGgKCW9ubHkgb25lIHJlZ2lzdGVyLgoKCSogY29uZmlnL2FybS9saW51eC1nYXMuaCAoQ0xFQVJfSU5TTl9DQUNIRSk6IFNheSB0aGF0IFIwIGlzCgljbG9iYmVyZWQuCgpTdW4gSmFuICA5IDE3OjUwOjIzIDIwMDAgIEhhbnMtUGV0ZXIgTmlsc3NvbiAgPGhwQGF4aXMuY29tPgoKCSogY29uZmlnL25zMzJrL25zMzJrLm1kIChsb2FkIG9yIHB1c2ggZWZmZWN0aXZlIGFkZHJlc3MpOiBPcGVyYW5kIDEKCW11c3QgaGF2ZSBTSW1vZGUuCgoyMDAwLTAxLTA5ICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBlbGZvcy5oIChBU01fT1VUUFVUX0xJTUlURURfU1RSSU5HKTogQWRkIHBhcmVudGhlc2VzIGFyb3VuZAoJYXNzaWdubWVudCB1c2VkIGFzIHRydXRoIHZhbHVlLgoKCSogZnVuY3Rpb24uYyAoYXNzaWduX3RlbXApOiBNYXJrIHBhcmFtZXRlciBgZG9udF9wcm9tb3RlJyB3aXRoCglBVFRSSUJVVEVfVU5VU0VELiAgV3JhcCB2YXJpYWJsZSBgdW5zaWduZWRwJyB3aXRoIG1hY3JvCglQUk9NT1RFX0ZPUl9DQUxMX09OTFkuCgoJKiBnZW5yZWNvZy5jICh3cml0ZV9zdWJyb3V0aW5lKTogTWFyayB2YXJpYWJsZSBgb3BlcmFuZHMnIHdpdGgKCUFUVFJJQlVURV9VTlVTRUQuCgoJKiBvcHRhYnMuYyAocHJlcGFyZV9jbXBfaW5zbik6IE1hcmsgcGFyYW1ldGVyIGBhbGlnbicgd2l0aAoJQVRUUklCVVRFX1VOVVNFRC4KCgkqIHNkYm91dC5jIChzZGJvdXRfaW5pdCk6IExpa2V3aXNlIGZvciBwYXJhbWV0ZXIgYGFzbV9maWxlJy4KCShzZGJvdXRfYmVnaW5fYmxvY2ssIHNkYm91dF9lbmRfYmxvY2spOiBMaWtld2lzZSBmb3IgYGZpbGUnLgoKCSogdG9wbGV2LmMgKG5vdGVfZGVmZXJyYWxfb2ZfZGVmaW5lZF9pbmxpbmVfZnVuY3Rpb24pOiBMaWtld2lzZQoJZm9yIGBkZWNsJy4KCjIwMDAtMDEtMDkgIE1pY2hhZWwgSGF5ZXMgIDxtLmhheWVzQGVsZWMuY2FudGVyYnVyeS5hYy5uej4KCgkqIGNvbmZpZy9jNHguaDogVGlkeSB1cCBjb21tZW50cy4KCSogY29uZmlnL2M0eC5jOiBMaWtld2lzZS4KClN1biBKYW4gIDkgMDE6MDI6NTUgRVNUIDIwMDAgIEpvaG4gV2VobGUgIChqb2huQGZlaXRoLmNvbSkKCgkqIGZvbGQtY29uc3QuYyAobHNoaWZ0X2RvdWJsZSwgcnNoaWZ0X2RvdWJsZSk6IEhhbmRsZQoJc2hpZnRpbmcgYnkgMiAqIEhPU1RfQklUU19QRVJfV0lERV9JTlQgY29ycmVjdGx5LgoKMjAwMC0wMS0wOCAgQWxleGFuZHJlIE9saXZhICA8b2xpdmFAbHNkLmljLnVuaWNhbXAuYnI+CgoJKiB0b3BsZXYuYyAocmVzdF9vZl9jb21waWxhdGlvbik6IEluaXRpYWxpemUgY3NlX25vdF9leHBlY3RlZCBhcwoJaW4gcHJlcGFyZV9mdW5jdGlvbl9zdGFydCgpLgoKU2F0IEphbiAgOCAxMjoxMjo0NiAyMDAwICBOaWNrIENsaWZ0b24gIDxuaWNrY0BjeWdudXMuY29tPgoKCSogY29uZmlnL3Y4NTAvdjg1MC5jIChleHBhbmRfZXBpbG9ndWUpOiBJbnRlcnJ1cHQgZnVuY3Rpb25zIG5vCglsb25nZXIgYWxsb2NhdGUgZXh0cmEgc3RhY2sgZm9yIGZ1bmN0aW9uIGNhbGxzLgoKMjAwMC0wMS0wOCAgTWljaGFlbCBIYXllcyAgPG0uaGF5ZXNAZWxlYy5jYW50ZXJidXJ5LmFjLm56PgoKCSogY29uZmlnL2M0eC9jNHgubWQgKCpzdWJxZjNfc2V0KTogRml4IHR5cG8uCgoyMDAwLTAxLTA4ICBNaWNoYWVsIEhheWVzICA8bS5oYXllc0BlbGVjLmNhbnRlcmJ1cnkuYWMubno+CgoJKiBjb25maWcvYzR4L2M0eC5oIChDQUxMRVJfU0FWRV9QUk9GSVRBQkxFKTogRGVmaW5lIGFzIDAuCgoyMDAwLTAxLTA3ICBEYXZpZCBFZGVsc29obiAgPGVkZWxzb2huQGdudS5vcmc+CgoJKiByczYwMDAuYyAocHJvY2Vzc29yX3RhcmdldF90YWJsZSk6IEFkZCBwb3dlcjMgYXMgYWxpYXMgZm9yIDYzMC4KCSogYWl4NDMuaDogUmV2ZXJ0IEF1ZyAyIGNoYW5nZS4KCShIQVNfSU5JVF9TRUNUSU9OKTogRGVmaW5lLCBub3QgdmlzaWJsZSB5ZXQuCgkoTERfSU5JVF9TV0lUQ0gpOiBEZWZpbmUsIG5vdCB2aXNpYmxlIHlldC4KCSogdC1haXg0MyAoTVVMVElMSUJfT1BUSU9OUyk6IFJldmVydCBBdWcgMiBjaGFuZ2UuCgoJKiBnbGltaXRzLmggKF9fTE9OR19NQVhfXyk6IFJlY29nbml6ZSA2NC1iaXQgQUlYIHRvby4KCgkqIGNvbGxlY3QyLmMgKG1haW4pOiBFeHBhbmQgbGQyIHNpemUgZnVydGhlci4KCShleHBvcnRfb2JqZWN0X2xzdCk6IENhc3QgYXNzaWdubWVudCB0byBhdm9pZCB3YXJuaW5nLgoJKG1haW4sIExEX0lOSVRfU1dJVENIKTogQWRkIEFJWCA0LjIrIC1iaW5pdGZpbmkgc3VwcG9ydC4KCShzY2FuX3Byb2dfZmlsZSwgQ09GRik6IERvIG5vdCBjb2xsZWN0IGluaXRpYWxpemF0aW9uIG9yCglmaW5hbGl6YXRpb24gZnVuY3Rpb25zIGdlbmVyYXRlZCBmb3IgZW50aXJlIHNoYXJlZCBvYmplY3QgaWYKCWluaXQvZmluaSBzdXBwb3J0IHByZXNlbnQuCgoyMDAwLTAxLTA3ICBOaWNrIENsaWZ0b24gIDxuaWNrY0BjeWdudXMuY29tPgoKCSogY29uZmlnL2VsZm9zLmg6IFRpZHkgdXAgZm9ybWF0dGluZyBvZiBtYXJjb3MuICBNYWtlIHN1cmUKCXRoYXQgLnNlY3Rpb24gZGlyZWN0aXZlcyBhcmUgYWx3YXlzIHByZWZpeGVkIGJ5IGEgdGFiLgoKCSogY29uZmlnL3N2cjQuaDogQWRkICNpbmNsdWRlICJlbGZvcy5oIiBhbmQgcmVtb3ZlIGR1cGxpY2F0ZQoJZGVmaW5pdGlvbnMuCgoyMDAwLTAxLTA3ICBNYXR0IEF1c3Rlcm4gIDxhdXN0ZXJuQHNnaS5jb20+CgoJKiBmb2xkLWNvbnN0LmMgKHJlYWxfaGV4X3RvX2YpOiBSZW1vdmUgZHVwbGljYXRlIGRlY2xhcmF0aW9uIG9mCglleHBvbi4KCkZyaSBKYW4gIDcgMDE6NTU6MzQgMjAwMCAgSmVmZnJleSBBIExhdyAgKGxhd0BjeWdudXMuY29tKQoKCSogTWFrZWZpbGUuaW4gKGNydGVuZC5vKTogUGFzcyBAaW5oaWJpdF9saWJjQCB0byBjb21waWxhdGlvbiBvZgoJY3J0c3R1ZmYuYy4KCShjcnRiZWdpbi5vLCBzLWNydFMpOiBMaWtld2lzZS4KCjIwMDAtMDEtMDYgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgoJKiBhbHBoYS5tZCAoYWRkZGlfMisxKTogTGltaXQgb2Zmc2V0IHN1Y2ggdGhhdCBpdCB3aWxsIGJlCglsb2FkYWJsZSB3aXRoIGEgc2luZ2xlIGxkYWgrbGRhIHBhaXIuCgkoYWRkZGlfMisyKTogRXhwbGljaXRseSBmYWlsIHNwbGl0IGlmIHdlIGNhbid0IG1ha2UgaXQgd29yay4KCjIwMDAtMDEtMDYgIE11bWl0IEtoYW4gIDxraGFuQHhyYXlsaXRoLndpc2MuZWR1PgoKCSogcHJvdG9pemUuYzogQ29uZGl0aW9uYWxseSBpbmNsdWRlIHVuaXN0ZC5oLgoJKElTX1NBTUVfUEFUSF9DSEFSKTogTmV3IG1hY3JvLgoJKElTX1NBTUVfUEFUSCk6IE5ldyBtYWNyby4KCShDUExVU19GSUxFX1NVRkZJWCk6IE5ldyBtYWNyby4KCShjcGx1c19zdWZmaXgpOiBOZXcgc3RhdGljIHZhcmlhYmxlLgoJKGlzX2Fic3BhdGgpOiBOZXcgc3RhdGljIGZ1bmN0aW9uLgoJKGluX3N5c3RlbV9pbmNsdWRlX2Rpcik6IEhhbmRsZSBET1Mgc3R5bGUgcGF0aG5hbWVzLgoJKGZpbGVfY291bGRfYmVfY29udmVydGVkKTogTGlrZXdpc2UuCgkoZmlsZV9ub3JtYWxseV9jb252ZXJ0aWJsZSk6IExpa2V3aXNlLgoJKGRpcmVjdG9yeV9zcGVjaWZpZWRfcCk6IExpa2V3aXNlLgoJKGZpbGVfZXhjbHVkZWRfcCk6IExpa2V3aXNlLgoJKGFic3BhdGgpOiBMaWtld2lzZS4KCShzaG9ydHBhdGgpOiBMaWtld2lzZS4KCShyZWZlcmVuY2VkX2ZpbGVfaXNfbmV3ZXIpOiBMaWtld2lzZS4KCShzYXZlX2RlZl9vcl9kZWMpOiBMaWtld2lzZS4KCShkb19wcm9jZXNzaW5nKTogTGlrZXdpc2UuCgkobWFpbik6IExpa2V3aXNlLgoJKGVkaXRfZmlsZSk6IExpa2V3aXNlLiBVc2UgcmVuYW1lIGluc3RlYWQgb2YgbGluay4KCShyZW5hbWVfY19maWxlKTogTGlrZXdpc2UuIERvbid0IHJlbmFtZSBzeXNjYWxscyBmaWxlLgoJKG11bmdlX2NvbXBpbGVfcGFyYW1zKTogRGVmaW5lIG51bGwgZGV2aWNlIGZvciBET1MgYmFzZWQgc3lzdGVtcy4KCShwcm9jZXNzX2F1eF9pbmZvX2ZpbGUpOiBVc2UgYmluYXJ5IG1vZGUgaWYgYXBwbGlhYmxlLgoJKGVkaXRfZmlsZSk6IExpa2V3aXNlLgoJKiBpbnZva2UudGV4aSAoUnVubmluZyBQcm90b2l6ZSk6IERvY3VtZW50IEMrKyBzdWZmaXhlcyB1c2VkLgoKCSogY2NjcC5jOiBEZWxldGUgUEFUSF9TRVBBUkFUT1IsIERJUl9TRVBBUkFUT1IgYW5kCglJU19ESVJfU0VQQVJBVE9SIG1hY3Jvcy4KCSogY29sbGVjdDIuYzogTGlrZXdpc2UuCgkqIGNwcGluaXQuYzogTGlrZXdpc2UuCgkqIGR3YXJmMm91dC5jOiBMaWtld2lzZS4KCSogZ2NjLmM6IExpa2V3aXNlLgoJKiBnY292LmM6IExpa2V3aXNlLgoJKiBwcmVmaXguYzogTGlrZXdpc2UuCgkqIHJ0bC5jOiBMaWtld2lzZS4KCSogdG9wbGV2LmM6IExpa2V3aXNlLgoJKiBzeXN0ZW0uaDogQW5kIG1vdmUgdG8gaGVyZS4KCgkqIHByZWZpeC5jICh1cGRhdGVfcGF0aCk6IEZpeCB0eXBvIGluIHZhcmlhYmxlIG5hbWUuCgoyMDAwLTAxLTA2ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEBjeWdudXMuY29tPgoKCSogZmxvdy5jIChtYXJrX3NldF8xKTogVXNlIGxvb3BfZGVwdGgrMSBhcyByZWZlcmVuY2Ugd2VpZ2h0LgoJKGZpbmRfYXV0b19pbmMsIG1hcmtfdXNlZF9yZWdzLCB0cnlfcHJlX2luY3JlbWVudF8xKTogTGlrZXdpc2UuCgkoY291bnRfcmVnX3NldHNfMSwgY291bnRfcmVnX3JlZmVyZW5jZXMpOiBMaWtld2lzZS4KCShmbG93X2xvb3BzX2xldmVsX2NvbXB1dGUpOiBTdGFydCBjb3VudGluZyBhY3R1YWwgbG9vcCBkZXB0aCBhdCAxLgoJKGZsb3dfbG9vcHNfZmluZCk6IExpa2V3aXNlLgoJKiBsb2NhbC1hbGxvYy5jICh1cGRhdGVfZXF1aXZfcmVncyk6IExpa2V3aXNlLgoJKiByZWdjbGFzcy5jIChyZWdjbGFzcyk6IFJlLWluc3RhdGUgSmFuIDQgMC1iYXNlZCBsb29wX2RlcHRoIGNoYW5nZS4KCjIwMDAtMDEtMDYgIEdhYnJpZWwgRG9zIFJlaXMgIDxkb3NyZWlzQGNtbGEuZW5zLWNhY2hhbi5mcj4KCgkqIGRlZmF1bHRzLmggKERXQVJGX0ZSQU1FX1JFR0lTVEVSUyk6IGlmIG5vdCBkZWZpbmVkLCBkZWZhdWx0IHRvCglGSVJTVF9QU0VVRE9fUkVHSVNURVIKCSogZHdhcmYyb3V0LmM6IERvbid0IGluY2x1ZGUgZnJhbWUuaAoJKiBkd2FyZm91dC5jOiBMaWtld2lzZQoJKiBNYWtlZmlsZS5pbiAoZHdhcmZvdXQubywgZHdhcmYyb3V0Lm8pOiBSZW1vdmUgZGVwZW5kZW5jZSBvbgoJZnJhbWUuaAoKVGh1IEphbiAgNiAxMzo0NDo1OSBDRVQgMjAwMCAgSmFuIEh1Ymlja2EgIDxqaEBzdXNlLmN6PgoKCSogcmVnLXN0YWNrLmMgKHN1YnN0X3N0YWNrX3JlZ3NfcGF0KTogSGFuZGxlIGNvcnJlY3RseSBVU0VzIG9mCglkZWFkIHJlZ2lzdGVycy4KCgkqIGkzODYuYyAobW92c2Ygc3BsaXR0ZXIpOiBGaXggdHlwbyBpbiBteSBsYXN0IGNoZWNraW4uCgoyMDAwLTAxLTA1ICBOaWNrIENsaWZ0b24gIDxuaWNrY0BjeWdudXMuY29tPgoKCSogdmFyYXNtLmMgKElOX05BTUVEX1NFQ1RJT04pOiBBbGxvdyB0YXJnZXRzIHRvIHByb3ZpZGUgdGhlaXIKCW93biBkZWZpbml0aW9uIG9mIHRoaXMgbWFjcm8uCgkoYXNtX2VtaXRfdW5pbml0aWFsaXNlZCk6IEludm9rZSBVTklRVUVfU0VDVElPTiBpZiBlaXRoZXIKCWZsYWdfZGF0YV9zZWN0aW9ucyBvciBVTklRVUVfU0VDVElPTl9QIGFyZSB0cnVlLgoKCSogdG0udGV4aSAoVU5JUVVFX1NFQ1RJT04pOiBEb2N1bWVudCB0aGF0IGl0IGNhbiBiZSBjYWxsZWQgZm9yCgl1bmluaXRpYWxpemVkIGRhdGEgZGVjbHMuCgoJKiBjb25maWcvaTM4Ni93aW5udC5jIChpMzg2X3BlX3VuaXF1ZV9zZWN0aW9uKTogQ29wZSB3aXRoCgliZWluZyBjYWxsZWQgZm9yIHVuaW5pdGlhbGl6ZWQgZGF0YS4KCgkqIGNvbmZpZy9pMzg2L2ludGVyaXguYyAoaTM4Nl9wZV91bmlxdWVfc2VjdGlvbik6IENvcGUgd2l0aAoJYmVpbmcgY2FsbGVkIGZvciB1bmluaXRpYWxpemVkIGRhdGEuCgoJKiBjb25maWcvbWlwcy9lbGYuaCAoVU5JUVVFX1NFQ1RJT04pOiBDb3BlIHdpdGggYmVpbmcgY2FsbGVkCglmb3IgdW5pbml0aWFsaXplZCBkYXRhLgoKCSogY29uZmlnL21pcHMvZWxmNjQuaCAoVU5JUVVFX1NFQ1RJT04pOiBDb3BlIHdpdGggYmVpbmcgY2FsbGVkCglmb3IgdW5pbml0aWFsaXplZCBkYXRhLgoKCSogY29uZmlnL21pcHMvaXJpNmdsZC5oIChVTklRVUVfU0VDVElPTik6IENvcGUgd2l0aCBiZWluZyBjYWxsZWQKCWZvciB1bmluaXRpYWxpemVkIGRhdGEuCgoJKiBjb25maWcvYXJtL3Vua25vd24tZWxmLmggKElOX05BTUVEX1NFQ1RJT04pOiBEZWZpbmUuCgkoVU5JUVVFX1NFQ1RJT05fUCk6IEFsd2F5cyBnZW5lcmF0ZSBhIHVuaXF1ZSBzZWN0aW9uIGlmCglmbGFnX2RhdGFfc2VjdGlvbnMgaXMgdHJ1ZS4KCShVTklRVUVfU0VDVElPTik6IEFsc28gZ2VuZXJhdGUgdW5pcXVlIHNlY3Rpb25zIGZvcgoJdW5pbml0aWFsaXplZCBkYXRhLgoJKEFTTV9PVVRQVVRfQUxJR05FRF9CU1MpOiBSZWRlZmluZSB0byB1c2UgbmFtZWRfc2VjdGlvbigpLgoJKEFTTV9PVVRQVVRfQUxJR05FRF9ERUNMX0xPQ0FMKTogUmVkZWZpbmUgdG8gdXNlCgluYW1lZF9zZWN0aW9uKCkuCgoyMDAwLTAxLTA2ICBNaWNoYWVsIEhheWVzICA8bS5oYXllc0BlbGVjLmNhbnRlcmJ1cnkuYWMubno+CgoJKiBjb25maWcvYzR4L3QtYzR4IChUQVJHRVRfTElCR0NDMl9DRkxBR1MpOiBEb24ndCByZWRlZmluZSBTRiwgREYsCglTSSwgb3IgREkuCgoyMDAwLTAxLTA2ICBNaWNoYWVsIEhheWVzICA8bS5oYXllc0BlbGVjLmNhbnRlcmJ1cnkuYWMubno+CgoJKiBjb25maWcvYzR4L2M0eC5tZCAodWRpdnFpMywgZGl2cWkzKTogRGVsZXRlLgoJKHVtb2RxaTMsIG1vZHFpMywgdWRpdmhpMywgZGl2aGkzLCB1bW9kaGkzLCBtb2RoaTMsIGZmc3FpMik6IExpa2V3aXNlLgoJKCpzbXVscWkzX2hpZ2hwYXJ0X25vY2xvYmJlciwgKnVtdWxxaTNfaGlnaHBhcnRfbm9jbG9iYmVyKTogTmV3LgoJKCpsc2hycWkzX2NvbnN0X25vY2xvYmJlciwgKmxzaHJxaTNfbm9uY29uc3Rfbm9jbG9iYmVyKTogTGlrZXdpc2UuCgkoKmFzaHJxaTNfY29uc3Rfbm9jbG9iYmVyLCAqYXNocnFpM19ub25jb25zdF9ub2Nsb2JiZXIpOiBMaWtld2lzZS4KCgkqIGM0eC5oIChJTklUX1RBUkdFVF9PUFRBQlMpOiBEZWZpbmUgdG8gaW5pdCBsaWJjYWxscy4KCjIwMDAtMDEtMDUgMTE6MjUgLTA4MDAgIFphY2sgV2VpbmJlcmcgIDx6YWNrQHJhYmkuY29sdW1iaWEuZWR1PgoKCSogYy1kZWNsLmMgKGZpbmlzaF9lbnVtKTogU2ltcGxpZnkgY29kZSB0byBkZXRlcm1pbmUgbWluaW11bSBhbmQKCW1heGltdW0gdmFsdWVzIG9mIHRoZSBlbnVtLCBhbmQgY2FsY3VsYXRlIHRoZSB0eXBlLiAgUmVtb3ZlIGNoZWNrCglmb3IgRlVOQ1RJT05fREVDTHMgaW4gdGhlIHZhbHVlcyBsaXN0LCB3aGljaCBjYW5ub3QgaGFwcGVuLiAgUmVwbGFjZQoJdGhlIERFQ0xfSU5JVElBTCBvZiBlYWNoIGVudW1lcmF0aW9uIGNvbnN0YW50IHdpdGggYSBjb3B5IGNvbnZlcnRlZAoJdG8gdGhlIGVudW1lcmF0aW9uIHR5cGUuICBXaGVuIHVwZGF0aW5nIHZhcmlhbnQgdHlwZXMsIGRvbid0IGJvdGhlcgoJdXBkYXRpbmcgdGhlIHR5cGUgaXRzZWxmLgoKCSogYy10eXBlY2suYyAoYnVpbGRfYmluYXJ5X29wKTogU2ltcGxpZnkgY29uZGl0aW9uYWwgZXhwcmVzc2lvbnMKCXdoZW4gd2VlZGluZyBvdXQgc3B1cmlvdXMgc2lnbmVkLXVuc2lnbmVkIHdhcm5pbmdzLiAgQWRkIG5ldwoJc3B1cmlvdXMgd2FybmluZyBjYXRlZ29yeTogaWYgdGhlIHVuc2lnbmVkIHF1YW50aXR5IGlzIGFuIGVudW0KCWFuZCBpdHMgbWF4aW11bSB2YWx1ZSBmaXRzIGluIHNpZ25lZF90eXBlKHJlc3VsdF90eXBlKS4gIFVwZGF0ZQoJY29tbWVudGFyeS4KCShidWlsZF9jb25kaXRpb25hbF9leHByKTogV2FybiBoZXJlIGlmIG9uZSBhbHRlcm5hdGl2ZSBpcyBzaWduZWQKCWFuZCB0aGUgb3RoZXIgaXMgdW5zaWduZWQuCgoyMDAwLTAxLTA1ICBOaWNrIENsaWZ0b24gIDxuaWNrY0BjeWdudXMuY29tPgoKCSogY29uZmlnL2ZyMzAvZnIzMC5oOiBSZW1vdmUgZXh0cmFuZW91cyBjb21tZW50cy4KCjIwMDAtMDEtMDUgIEJlcm5kIFNjaG1pZHQgIDxiZXJuZHNAY3lnbnVzLmNvLnVrPgoKCSogcmVsb2FkMS5jIChjaG9vc2VfcmVsb2FkX3JlZ3MpOiBXaGVuIGRpc2FibGluZyBhIHJlbG9hZCwgYWxzbwoJc2V0IHJlbG9hZF9zcGlsbF9pbmRleCB0byAtMS4KCjIwMDAtMDEtMDQgIEpvZWwgU2hlcnJpbGwgKGpvZWxAT0FSY29ycC5jb20+CgoJKiBjb25maWd1cmUuaW4gKG02OCotKi1ydGVtc2NvZmYqKTogTmV3IHRhcmdldCwgZm9ybWFsIG5hbWUgZm9yCglvbGQgbTY4Ki0qLXJ0ZW1zKi4KCShtNjgqLSotcnRlbXNlbGYqKTogTmV3IHRhcmdldC4KCShtaXBzNjRvcmlvbi0qLXJ0ZW1zKik6IFJlbW92ZSBkdXBsaWNhdGUgZGVmaW5pdGlvbiBvZiB0bV9maWxlLgoJKHNwYXJjKi0qLXJ0ZW1zYW91dCopOiBOZXcgdGFyZ2V0LCBmb3JtYWwgbmFtZSBmb3Igb2xkIHNwYXJjKi0qLXJ0ZW1zKi4KCShzcGFyYyotKi1ydGVtc2VsZiopOiBOZXcgdGFyZ2V0LgoJKHNwYXJjKi0qLXJ0ZW1zKik6IE5vdyBlbGYgbm90IGEub3V0LgoJKiBjb25maWcvaTM4Ni9ydGVtcy5oOiBJbmNsdWRlIGNvbmZpZy9ydGVtcy5oLgoJKiBjb25maWcvaTM4Ni9ydGVtc2VsZi5oOiBJbmNsdWRlIGNvbmZpZy9ydGVtcy5oLgoJKiBjb25maWcvaTk2MC9ydGVtcy5oOiBJbmNsdWRlIGNvbmZpZy9ydGVtcy5oLgoJKiBjb25maWcvbTY4ay9ydGVtcy5oOiBJbmNsdWRlIGNvbmZpZy9ydGVtcy5oLgoJKiBjb25maWcvbTY4ay9ydGVtc2VsZi5oOiBJbmNsdWRlIGNvbmZpZy9ydGVtcy5oLgoJKiBjb25maWcvbWlwcy9ydGVtczY0Lmg6IEluY2x1ZGUgY29uZmlnL3J0ZW1zLmguCgkqIGNvbmZpZy9wYS9ydGVtcy5oOiBJbmNsdWRlIGNvbmZpZy9ydGVtcy5oLgoJKiBjb25maWcvcnM2MDAwL3J0ZW1zLmg6IEluY2x1ZGUgY29uZmlnL3J0ZW1zLmguCgkqIGNvbmZpZy9zaC9ydGVtcy5oOiBJbmNsdWRlIGNvbmZpZy9ydGVtcy5oLgoJKiBjb25maWcvc2gvcnRlbXNlbGYuaDogSW5jbHVkZSBjb25maWcvcnRlbXMuaC4KCSogY29uZmlnL3NwYXJjL3J0ZW1zLmg6IEluY2x1ZGUgY29uZmlnL3J0ZW1zLmguCgkqIGNvbmZpZy9zcGFyYy9ydGVtc2VsZi5oOiBJbmNsdWRlIGNvbmZpZy9ydGVtcy5oCgpUdWUgSmFuICA0IDIzOjU5OjI2IDIwMDAgIERlbmlzIENoZXJ0eWtvdiA8ZGVuaXNjQG92ZXJ0YS5ydT4KCgkqIGZpbmFsLmMgKHNob3J0ZW5fYnJhbmNoZXMpOiBDb3JyZWN0bHkgY29tcHV0ZSBsZW5ndGggb2YKCWFzbXMgd2l0aG91dCBvcGVyYW5kcy4KClR1ZSBKYW4gIDQgMjI6NTU6NDEgMjAwMCAgU3RldmUgQ2hhbWJlcmxhaW4gPHNhY0Bwb2JveC5jb20+CgoJKiBjb25maWd1cmUuaW46IEFkZCBwaiB0YXJnZXQuCgkqIGNvbmZpZ3VyZTogUmVnZW5lcmF0ZS4KCSogY29uZmlnL3BqOiBOZXcgZGlyZWN0b3J5LgoJKiBjb25maWcvcGovbGliMWZ1bmNzLlM6IE5ldyBmaWxlLgoJKiBjb25maWcvcGovbGludXguaDogTmV3IGZpbGUuCgkqIGNvbmZpZy9wai9wai5jOiBOZXcgZmlsZS4KCSogY29uZmlnL3BqL3BqLm1kOiBOZXcgZmlsZS4KCSogY29uZmlnL3BqL3BqbC5oOiBOZXcgZmlsZS4KCSogY29uZmlnL3BqL3QtcGo6IE5ldyBmaWxlLgoJKiBjb25maWcvcGoveG0tcGouaDogTmV3IGZpbGUKClR1ZSBKYW4gIDQgMjI6MzA6MTYgMjAwMCAgSmVmZnJleSBBIExhdyAgKGxhd0BjeWdudXMuY29tKQoKCSogdG9wbGV2LmMgKHJlc3Rfb2ZfY29tcGlsYXRpb24pOiBSdW4gc2hvcnRlbi1icmFuY2hlcyBiZWZvcmUKCXJlZy1zdGFjayBmb3Igbm93LgoKMjAwMC0wMS0wNSAgTWljaGFlbCBIYXllcyAgPG0uaGF5ZXNAZWxlYy5jYW50ZXJidXJ5LmFjLm56PgoKCSogY29uZmlnL2M0eC9jNHguaCAoSVNfWFhYX1JFRywgSVNfWFhYX1JFR05PKTogU3dhcCBiZWhhdmlvciBvZgoJbWFjcm9zIHNvIHRoYXQgdGhleSdyZSBjb25zaXN0ZW50IHdpdGggdGhlaXIgbmFtZXMuCgkqIGNvbmZpZy9jNHgvYzR4LmMgKElTX1hYWF9SRUcsIElTX1hYWF9SRUdOTyk6IExpa2V3aXNlLgoJKiBjb25maWcvYzR4L2M0eC5tZCAoSVNfWFhYX1JFRywgSVNfWFhYX1JFR05PKTogTGlrZXdpc2UuCgoyMDAwLTAxLTA1ICBNaWNoYWVsIEhheWVzICA8bS5oYXllc0BlbGVjLmNhbnRlcmJ1cnkuYWMubno+CgoJKiBjb25maWcvYzR4L2M0eC5tZCAoKmFkZHFpM19ub2Nsb2JiZXJfcmVsb2FkKTogRW5zdXJlIHRoYXQgQ0MgbmV2ZXIKCW1vZGlmaWVkIGluYWR2ZXJ0ZW50bHkuCgoyMDAwLTAxLTA0ICBKb2VsIFNoZXJyaWxsIDxqb2VsQE9BUmNvcnAuY29tPgoKCSogY29uZmlndXJlLmluICh2ODUwKi0qLXJ0ZW1zKik6IE5ldyB0YXJnZXQuCgkqIGNvbmZpZ3VyZTogUmVnZW5lcmF0ZS4KCSogY29uZmlnL3Y4NTAvcnRlbXMuaDogTmV3IGZpbGUuCgoyMDAwLTAxLTA0ICBNdW1pdCBLaGFuICA8a2hhbkB4cmF5bGl0aC53aXNjLmVkdT4KCgkqIGd0aHItd2luMzIuaCAoX19ndGhyZWFkX2FjdGl2ZV9wKTogU3VwcG9ydCBNaW5ndyBNVCBydW50aW1lLgoJKF9fZ3RocmVhZF9rZXlfY3JlYXRlKTogTGlrZXdpc2UuCgkoX19ndGhyZWFkX2tleV9kdG9yKTogIExpa2V3aXNlLgoJKF9fZ3RocmVhZF9vbmNlKTogRml4IGxvZ2ljLgoJKF9fZ3RocmVhZF9rZXlfZGVsZXRlKTogQ2FzdCBhd2F5IGNvbnN0bmVzcy4KCgkqIGkzODYvY3lnd2luLmggKFNVQlRBUkdFVF9TV0lUQ0hFUyk6IEFkZCAtbXRocmVhZHMgb3B0aW9uLgoJKiBpbnZva2UudGV4aTogRG9jdW1lbnQuCgkqIGkzODYvbWluZ3czMi5oIChDUFBfU1BFQyk6IFVzZS4KCShMSUJHQ0NfU1BFQyk6IExpa2V3aXNlLgoJKiBpMzg2L2NydGRsbC5oIChMSUJHQ0NfU1BFQyk6IExpa2V3aXNlLgoKMjAwMC0wMS0wNCAgRGF2aWQgRWRlbHNvaG4gIDxlZGVsc29obkBnbnUub3JnPgoKCSogcnM2MDAwL3N5c3Y0LmggKEFTTV9PVVRQVVRfREVGKTogVW5kZWZpbmUuCgkoSEFORExFX1BSQUdNQV9QQUNLKTogVW5kZWZpbmUuCgkoU0xPV19VTkFMSUdORURfQUNDRVNTKTogRGVmaW5lLgoKMjAwMC0wMS0wNCAgRGF2aWQgRWRlbHNvaG4gIDxlZGVsc29obkBnbnUub3JnPgoKCSogZXhwbWVkLmMgKFNMT1dfVU5BTElHTkVEX0FDQ0VTUyk6IEFkZCBtb2RlIGFuZCBhbGlnbiBwYXJhbWV0ZXJzCgl0byBkZWZhdWx0IGRlZmluaXRpb24uCgkoc3RvcmVfYml0X2ZpZWxkKTogQ2FsbCBTTE9XX1VOQUxJR05FRF9BQ0NFU1Mgd2l0aCBtb2RlIGFuZCBhbGlnbm1lbnQuCgkoc3RvcmVfZml4ZWRfYml0X2ZpZWxkKTogQ2FsbCBtYWNybyB3aXRoIHdvcmRfbW9kZSBhbmQgYWxpZ25tZW50LgoJKGV4dHJhY3RfYml0X2ZpZWxkKTogQ2FsbCBtYWNybyB3aXRoIHJlbGV2YW50IG1vZGUgYW5kIGFsaWdubWVudC4KCSogZXhwci5jIChTTE9XX1VOQUxJR05FRF9BQ0NFU1MpOiBBZGQgbW9kZSBhbmQgYWxpZ24gcGFyYW1ldGVycwoJdG8gZGVmYXVsdCBkZWZpbml0aW9uLgoJKG1vdmVfYnlfcGllY2VzKTogQ2FsbCBTTE9XX1VOQUxJR05FRF9BQ0NFU1Mgd2l0aCB3b3JkX21vZGUKCWFuZCBhbGlnbm1lbnQuCgkobW92ZV9ieV9waWVjZXNfbmluc25zKTogTGlrZXdpc2UuCgkoY2xlYXJfYnlfcGllY2VzKTogTGlrZXdpc2UuCgkoZW1pdF9wdXNoX2luc24pOiBMaWtld2lzZS4KCShzdG9yZV9maWVsZCk6IENhbGwgbWFjcm8gd2l0aCByZWxldmFudCBtb2RlIGFuZCBhbGlnbm1lbnQuCgkoZXhwYW5kX2V4cHIpOiBMaWtld2lzZS4KCShleHBhbmRfZXhwcl91bmFsaWduZWQpOiBMaWtld2lzZS4KCgkqIHJzNjAwMC5oIChIQU5ETEVfUFJBR01BX1BBQ0spOiBEZWZpbmUuCgkoU0xPV19VTkFMSUdORURfQUNDRVNTKTogRGVmaW5lLgoJKENBU0VfVkVDVE9SX01PREUpOiBBbHdheXMgdXNlIDMyLWJpdCBvZmZzZXRzLgoJKEFTTV9GSUxFX0VORCk6IEdlbmVyYXRlIDY0LWJpdCBzeW1ib2wgaW4gNjQtYml0IG1vZGUuCgkoRVhUUkFfU0VDVElPTl9GVU5DVElPTlMpOiBJbmRlbnQgLmNzZWN0IHBzZXVkby1vcC4KCSh0b2Nfc2VjdGlvbik6IExpa2V3aXNlIGFuZCAudG9jIHBzZXVkby1vcC4KCShBU01fREVDTEFSRV9GVU5DVElPTik6IExpa2V3aXNlLiAgQWxpZ24gdGV4dCBtb3JlIHN0cmljdGx5IGluCgk2NC1iaXQgbW9kZS4KCShURVhUX1NFQ1RJT05fQVNNX09QKTogTGlrZXdpc2UuCgkoQVNNX09VVFBVVF9BRERfVkVDX0VMVCwgQVNNX09VVFBVVF9BRERSX0RJRkZfRUxUKTogQWx3YXlzIHVzZQoJMzItYml0IG9mZnNldHMuCgoJKiBhMjlrLmggKFNMT1dfVU5BTElHTkVEX0FDQ0VTUyk6IEFkZCBNT0RFIGFuZCBBTElHTiBwYXJhbWV0ZXJzLgoJKiBhbHBoYS5oIChTTE9XX1VOQUxJR05FRF9BQ0NFU1MpOiBMaWtld2lzZS4KCSogYXJtL3RodW1iLmggKFNMT1dfVU5BTElHTkVEX0FDQ0VTUyk6IExpa2V3aXNlLgoJKiBnbWljcm8uaCAoU0xPV19VTkFMSUdORURfQUNDRVNTKTogTGlrZXdpc2UuCgkqIGZyMzAuaCAoU0xPV19VTkFMSUdORURfQUNDRVNTKTogTGlrZXdpc2UuCgpUdWUgSmFuICA0IDExOjQ0OjEzIDIwMDAgIEplZmZyZXkgQSBMYXcgIChsYXdAY3lnbnVzLmNvbSkKCgkqIHJlZ2NsYXNzLmM6IFJldmVydCBteSBKYW4gNCBjaGFuZ2UgdG8gbG9vcCBjb3N0IGNvbXB1dGF0aW9uLgoKVHVlIEphbiAgNCAxOToyMjozOSBNRVQgMjAwMCAgSmFuIEh1Ymlja2EgIDxodWJpY2thQGZyZWVzb2Z0LmN6PgoKCSogcmVnY2xhc3MuYyAocmVnY2xhc3MpOiBEbyBub3Qgb2JleSBSRUdfTl9SRUZTIGluIG5vbi1vcHRpbWl6aW5nCgljb21waWxhdGlvbi4KCjIwMDAtMDEtMDQgIFN0YW4gQ294ICA8c2NveEBjeWdudXMuY29tPgoKCSogaGFpZmEtc2NoZWQuYyAoYnVpbGRfY29udHJvbF9mbG93KTogQ2hhbmdlIHVucmVhY2hhYmxlIHNpbXBsZQoJbG9vcCB0ZXN0IHRvIGNoZWNrIGlmIGN1cnJlbnQgYmxvY2sgaGFzIG9ubHkgb25lIHByZWRlY2Vzc29yLgoJKGZpbmRfcmducyk6IEluaXRpYWxpemUgZGVncmVlLiAgVXNlIGRlc3QgYXMgZGVncmVlIGluZGV4LCBub3Qgc3JjLgoKMjAwMC0wMS0wNCAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogYnVpbHRpbnMuYyAoZXhwYW5kX2J1aWx0aW5fc3RybGVuKTogSW5pdGlhbGl6ZSB2YXJpYWJsZSBgaWNvZGUnLgoKCSogY2FsbHMuYyAoZXhwYW5kX2NhbGwpOiBMaWtld2lzZSBmb3IKCWBvbGRfc3RhY2tfYXJnX3VuZGVyX2NvbnN0cnVjdGlvbicuCgoJKiBjcHBoYXNoLmMgKG1hY3JvZXhwYW5kKTogTGlrZXdpc2UgZm9yIGBhcmdzJyBhbmQgYHJlc3RfemVybycuCgoJKiBmdW5jdGlvbi5jIChwYWRfdG9fYXJnX2FsaWdubWVudCk6IExpa2V3aXNlIGZvciBgc2F2ZV92YXInIGFuZAoJYHNhdmVfY29uc3RhbnQnLgoKCSogZ2NjLmMgKGV4ZWN1dGUpOiBMaWtld2lzZSBmb3IgYHV0JyBhbmQgYHN0Jy4KCgkqIGdlbmF0dHJ0YWIuYyAoYXR0cl9ydHgpOiBMaWtld2lzZSBmb3IgYHJ0X3ZhbCcuCgoJKiBnZW5vcGluaXQuYyAoZ2VuX2luc24pOiBMaWtld2lzZSBmb3IgYG0xJywgYG0yJyBhbmQgYG9wJy4KCgkqIGp1bXAuYyAoanVtcF9vcHRpbWl6ZV8xKTogTGlrZXdpc2UgZm9yIGB0ZW1wMicuCgoJKiBsb2NhbC1hbGxvYy5jIChibG9ja19hbGxvYyk6IExpa2V3aXNlIGZvciBgcjEnLgoKCSogbG9vcC5jIChyZWNvbWJpbmVfZ2l2cyk6IExpa2V3aXNlIGZvciBgbGlmZV9zdGFydCcgYW5kIGBsaWZlX2VuZCcuCgoJKiByZWctc3RhY2suYyAoY2hlY2tfYXNtX3N0YWNrX29wZXJhbmRzKTogTGlrZXdpc2UgZm9yIGBjbG9iYmVyX3JlZycuCgkoc3Vic3RfYXNtX3N0YWNrX3JlZ3MpOiBMaWtld2lzZSBmb3IgYGNsb2JiZXJfcmVnJyBhbmQgYGNsb2JiZXJfbG9jJy4KCgkqIHJlZ21vdmUuYyAoZml4dXBfbWF0Y2hfMSk6IExpa2V3aXNlIGZvciBgaW5zbl9jb25zdCcsIGBkc3Rfbm9kZScKCWFuZCBgc2V0MicuCgoJKiByZWxvYWQuYyAoZmluZF9yZWxvYWRzKTogTGlrZXdpc2UgZm9yIGBnb2FsX2FsdGVybmF0aXZlX251bWJlcicKCWFuZCBgZ29hbF9lYXJseWNsb2JiZXInLgoKCSogc2Nhbi1kZWNscy5jIChzY2FuX2RlY2xzKTogTGlrZXdpc2UgZm9yIGBwcmV2X2lkX2VuZCcuCgoJKiBzZGJvdXQuYyAoc2Rib3V0X29uZV90eXBlKTogTGlrZXdpc2UgZm9yIGBtZW1iZXJfc2NsJy4KCgkqIHN0dXBpZC5jIChzdHVwaWRfbGlmZV9hbmFseXNpcyk6IExpa2V3aXNlIGZvciBgY2hhaW4nLgoKCSogdW5yb2xsLmMgKGNvcHlfbG9vcF9ib2R5KTogTGlrZXdpc2UgZm9yIGBjb3B5Jy4KCgkqIHZhcmFzbS5jIChvdXRwdXRfY29uc3RydWN0b3IpOiBMaWtld2lzZSBmb3IgYGJ5dGUnLgoKVHVlIEphbiAgNCAxNTozNDozNCBNRVQgMjAwMCAgSmFuIEh1Ymlja2EgIDxodWJpY2thQGZyZWVzb2Z0LmN6PgoKCSogaTM4Ni5jIChpeDg2X2V4cGFuZF9tb3ZlKTogQWxsb3cgcHVzaGVzIG9mIG1lbW9yeSwgb2ZmbG9hZCB0byBtZW1vcnkKCWFsbCBGUCBjb25zdGFudHMgZm9yIGNvbnN0YW50LT5yZWcgbW92ZXMuCgkoaXg4Nl9zcGxpdF90b19wYXJ0cyk6IFRyeSB0byBjb252ZXJ0IG1lbW9yeSBhZGRyZXNzIGludG8gaW1tZWRpYXRlCgl3aGVuIGF2YWlsYWJsZSBpbiB0aGUgY29uc3RhbnQgcG9vbC4KCSogaTM4Ni5oIChQUkVGRVJSRURfUkVMT0FEX0NMQVNTKTogQWxsb3cgQ09OU1RfRE9VQkxFLT5pbnRlZ2VyIHJlZwoJbW92ZXMuCgkoTEVHSVRJTUFURV9DT05TVEFOVF9QKTogUmV0dXJuIDEuCgkqIGkzODYubWQgKHB1c2hzZik6IE5ldyBzcGxpdHRlciB0byBjb252ZXJ0IGNvbnN0YW50IHBvb2wgbWVtb3J5CglyZWZlcmVuY2UgdG8gaW1tZWRpYXRlLgoJKG1vdj9mKTogTGlrZXdpc2U7IGRvIG5vdCBhbGxvdyBDT05TVF9ET1VCTEUgZm9yIHJlZyBtb3ZlcyBiZWZvcmUKCXJlbG9hZC4KCjIwMDAtMDEtMDQgIEJlcm5kIFNjaG1pZHQgIDxiZXJuZHNAY3lnbnVzLmNvLnVrPgoKCSogaTM4Ni5tZCAoYXNobHNpM19jbXBubyk6IERvbid0IGFjY2VwdCB2YXJpYWJsZXMgc2hpZnRzLgoJKGFzaGxoaTNfY21wbm8sIGFzaGxxaTNfY21wbm8sIGFzaHJzaTNfY21wbm8sIGFzaHJoaTNfY21wbm8sCglhc2hycWkzX2NtcG5vLCBsc2hyc2kzX2NtcG5vLCBsc2hyaGkzX2NtcG5vLCBsc2hycWkzX2NtcG5vKTogTGlrZXdpc2UuCgkocm90bHNpM19jbXBubywgcm90bGhpM19jbXBubywgcm90bHFpM19jbXBubywgcm90cnNpM19jbXBubywKCXJvdHJoaTNfY21wbm8sIHJvdHJxaTNfY21wbm8pOiBMaWtld2lzZS4KCjIwMDAtMDEtMDQgIE1hcnRpbiB2b24gTPZ3aXMgIDxsb2V3aXNAaW5mb3JtYXRpay5odS1iZXJsaW4uZGU+CgoJKiBnaW5jbHVkZS9zdGRib29sLmg6ICBTdXBwb3J0IGNvbXBpbGF0aW9uIGFzIEMrKy4KClR1ZSBKYW4gIDQgMDE6MzU6MTMgMjAwMCAgSiJvcm4gUmVubmVja2UgPGFteWxhYXJAY3lnbnVzLmNvLnVrPgoKCSogZm9sZC1jb25zdC5jIChtYWtlX3JhbmdlKTogRG9uJ3QgdHJ5IHRvIHJldmVyc2UgYW4gdW5ib3VuZGVkIHJhbmdlLgoKVHVlIEphbiAgNCAwMDoxODo0NiAyMDAwICBKZWZmcmV5IEEgTGF3ICAobGF3QGN5Z251cy5jb20pCgoJKiByZWdjbGFzcy5jIChyZWdjbGFzcyk6IFByb3Blcmx5IGNvbXB1dGUgbG9vcF9jb3N0LiAgQWRqdXN0Cgljb21tZW50cy4KCgkqIHJlZ2NsYXNzLmM6IEZpeCBtaW5vciB3aGl0ZXNwYWNlIHByb2JsZW1zLgoKMjAwMC0wMS0wMyAgQW50aG9ueSBHcmVlbiAgPGdyZWVuQGN5Z251cy5jb20+CgoJKiBjb25maWcvaTM4Ni9pMzg2Lm1kIChidWlsdGluX3NldGptcF9yZWNlaXZlcik6IE5ldyBwYXR0ZXJuLgoJUmVzdG9yZSB0aGUgcGljIHJlZ2lzdGVyIGlmIHJlcXVpcmVkLgoKMjAwMC0wMS0wMyAgVWxyaWNoIERyZXBwZXIgIDxkcmVwcGVyQGN5Z251cy5jb20+CgoJKiBjLWNvbW1vbi5jIChmb3JtYXRfY2hhcl9pbmZvKTogVXBkYXRlIGNvbW1lbnQuCgkoY2hlY2tfZm9ybWF0X2luZm8pOiBSZWNvZ25pemUgJ3onIG1vZGlmaWVyIGluIHRoZSBzYW1lIHdheSAnWicKCXdhcyByZWNvZ25pemVkLiAgRW1pdCB3YXJuaW5nIGZvciBmb3JtYXRzIG5ldyBpbiBJU08gQzk5IG9ubHkKCWlmIGZsYWdfaXNvYzl4IGlzIG5vdCBzZXQuCgpNb24gSmFuICAzIDEyOjU5OjU0IDIwMDAgIE1hcmsgUC4gTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjb25maWcvbWlwcy9pcmlzNmdsZC5oOiBGaXggdHlwbyBpbiAtbWFiaT1uMzIgc3BlY3MuCgpNb24gSmFuICAzIDE1OjMzOjM3IE1FVCAyMDAwICBKYW4gSHViaWNrYSAgPGh1Ymlja2FAZnJlZXNvZnQuY3o+CgoJKiBjb21iaW5lLmMgKGV4cGFuZF9jb21wb3VuZF9vcGVyYXRpb24pOiBEbyBub3QgY29udmVydCBaRVJPX0VYVEVORCB0bwoJU0lHTl9FWFRFTkQsIGNvbnZlcnQgU0lHTl9FWFRFTkQgdG8gWkVST19FWFRFTkQuCgkobWFrZV9jb21wb3VuZF9vcGVyYXRpb24pOiBDaG9vc2UgY2hlYXBlciBhbHRlcm5hdGl2ZSBiZXR3ZWVuCglaRVJPX0VYVEVORCBhbmQgU0lHTl9FWFRFTkQgd2hlbiBzaWduIGJpdCBpcyBub3Qgc2V0LgoKCSogcmVnY2xhc3MuYyAob3BfY29zdHMpOiBSZW1vdmUgZ2xvYmFsIHZhcmlhYmxlLgoJKHJlY29yZF9yZWdfY2xhc3Nlcyk6IE5ldyBwYXJhbWV0ZXIgIm9wX2Nvc3RzIiBhbmQgInJlZ19wcmVmIi4KCShyZWNvcmRfb3BlcmFuZF9jb3N0cyk6IEJyZWFrIG91dCBmcm9tIC4uLgoJKHNjYW5fb25lX2luc24pOiAuLi4gaGVyZS4KCShkdW1wX3JlZ2NsYXNzKTogTWFrZSBkdW1wcyBuaWNlci4KCShyZWdjbGFzcyk6IER1bXAgcHJlZmVycmVuY2VzIGNob29zZWQgYW5kIGNoYW5nZXMgZG9uZSBkdXJpbmcgcGFzc2VzLgoKMjAwMC0wMS0wMyAgSmFrdWIgSmVsaW5layAgPGpha3ViQHJlZGhhdC5jb20+CgoJKiBjb25maWcvc3BhcmMvc3BhcmMuYyAoZ2VuX2RmX3JlZyk6IEZpeCBmb3IgMzJiaXQgU1BBUkMuCgoyMDAwLTAxLTAzICBKYWt1YiBKZWxpbmVrICA8amFrdWJAcmVkaGF0LmNvbT4KCgkqIGNvbmZpZy9zcGFyYy9zcGFyYy5jIChnZW5fZGZfcmVnKTogTmV3IGZ1bmN0aW9uLgoJKiBjb25maWcvc3BhcmMvc3BhcmMtcHJvdG9zLmggKGdlbl9kZl9yZWcpOiBBZGQgcHJvdG90eXBlLgoJKiBjb25maWcvc3BhcmMvc3BhcmMubWQgKG1vdnRmX25vX2VfaW5zbl9zcDY0KzEsCgltb3Z0Zl9ub19lX2luc25fc3A2NCsyLCBtb3Z0Zl9ub19lX2luc25fc3A2NCszLCBtb3Z0Zl9jY19zcDY0KzEsCgltb3Z0Zl9jY19yZWdfc3A2NCsxKTogVXNlIGl0LgoKMjAwMC0wMS0wMiAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGludGVncmF0ZS5jIChjb3B5X2RlY2xfZm9yX2lubGluaW5nKTogQ2xlYXIgVFJFRV9BRERSRVNTQUJMRSBvbgoJY29waWVkIExBQkVMX0RFQ0xzLgoKTW9uIEphbiAgMyAwMjo1NDo0MCAyMDAwICBIYW5zLVBldGVyIE5pbHNzb24gIDxocEBiaXRyYW5nZS5jb20+CgoJKiBjb25maWcvaTM4Ni9pMzg2LmMgKGl4ODZfZXhwYW5kX3VuYXJ5X29wZXJhdG9yKTogRnVuY3Rpb24KCWRlZmluaXRpb24gbWFkZSB2b2lkLgoJKGl4ODZfZXhwYW5kX2JpbmFyeV9vcGVyYXRvcik6IFVwZGF0ZSBvdXRkYXRlZCBwcmVjZWRpbmcgY29tbWVudC4KCSogY29uZmlnL2kzODYvaTM4Ni1wcm90b3MuaCAoaXg4Nl9leHBhbmRfdW5hcnlfb3BlcmF0b3IpOiBVcGRhdGUKCXByb3RvdHlwZS4KCgkqIGNvbmZpZy9pMzg2L2kzODYuYyAob3ZlcnJpZGVfb3B0aW9ucyk6IEZpeCBvcHRpb24tbmFtZSB0eXBvLgoKMjAwMC0wMS0wMiAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIHN5c3RlbS5oIChDRUlMKTogRGVmaW5lLgoJKiBidWlsdGlucy5jIChDRUlMKTogUmVtb3ZlLgoJKiBleHBtZWQuYyAoQ0VJTCk6IExpa2V3aXNlLgoJKiBleHByLmMgKENFSUwpOiBMaWtld2lzZS4KCSogc3Rvci1sYXlvdXQuYyAoQ0VJTCk6IExpa2V3aXNlLgoKMjAwMC0wMS0wMiAgRnJhbnogU2lybCA8RnJhbnouU2lybC1rZXJuZWxAbGF1dGVyYmFjaC5jb20+CgoJKiBleHByLmMgKHN0b3JlX2NvbnN0cnVjdG9yX2ZpZWxkKTogRml4IHR5cG8gaW50cm9kdWNlZCB3aXRoIGxhc3QKCWdjYzIgbWVyZ2UuCgoyMDAwLTAxLTAxICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogdHJlZS5oIChCSU5GT19OX0JBU0VUWVBFUyk6IE5ldyBtYWNyby4KCjIwMDAtMDEtMDEgIEJlcm5kIFNjaG1pZHQgIDxiZXJuZHNAY3lnbnVzLmNvLnVrPgoKCSogZXhwbWVkLmMgKGVtaXRfc3RvcmVfZmxhZyk6IFByZXZlbnQgbG9zaW5nIGEgcGVuZGluZyBzdGFjawoJYWRqdXN0IHRoZSBzYW1lIHdheSB3ZSBwcmV2ZW50IGxvc2luZyBxdWV1ZWQgaW5jcmVtZW50cy4K