MTk5OS0xMi0zMSAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGNwLXRyZWUuaCAoVkZfTk9STUFMX1ZBTFVFKTogUmVtb3ZlLgoJKiBjbGFzcy5jIChzdHJ1Y3QgYmFzZV9pbmZvKTogUmVtb3ZlIHZmaWVsZCwgdmZpZWxkcywgYW5kIHJ0dGkuCgkoc2V0X3ByaW1hcnlfYmFzZSk6IE5ldyBmdW5jdGlvbiwgc3BsaXQgb3V0IGZyb20gLi4uCgkoZmluaXNoX2Jhc2Vfc3RydWN0KTogLi4uIGhlcmUuICBSZW5hbWUgdG8gLi4uCgkoZGV0ZXJtaW5lX3ByaW1hcnlfYmFzZSk6IC4uLiB0aGlzLiAgU2ltcGxpZnkuCgkoY3JlYXRlX3Z0YWJsZV9wdHIpOiBUd2VhayBhY2NvcmRpbmdseS4KCShmaW5pc2hfc3RydWN0XzEpOiBTaW1wbGlmeS4KCQoJKiBjcC10cmVlLmggKENMQVNTVFlQRV9WQkFTRUNMQVNTRVMpOiBVcGRhdGUgZG9jdW1lbnRhdGlvbi4KCShDTEFTU1RZUEVfTl9CQVNFQ0xBU1NFUyk6IExpa2V3aXNlLgoJKEJJTkZPX0ZPUl9WQkFTRSk6IE5ldyBtYWNyby4KCShnZXRfdmJhc2VfdHlwZXMpOiBDaGFuZ2UgcHJvdG90eXBlLgoJKiBjbGFzcy5jIChidWlsZF92YmFzZV9wYXRoKTogVXNlIEJJTkZPX0ZPUl9WQkFTRS4KCShwcmVwYXJlX2ZyZXNoX3Z0YWJsZSk6IExpa2V3aXNlLgoJKGZpbmlzaF92dGJscyk6IExpa2V3aXNlLgoJKGdldF9jbGFzc19vZmZzZXRfMSk6IExpa2V3aXNlLgoJKG1vZGlmeV9hbGxfaW5kaXJlY3RfdnRhYmxlcyk6IExpa2V3aXNlLgoJKGJ1aWxkX3ZiYXNlX3BvaW50ZXJfZmllbGRzKTogTGlrZXdpc2UuCgkqIGRlY2wuYyAoeHJlZl9iYXNldHlwZXMpOiBEb24ndCBzZXQgQ0xBU1NUWVBFX1ZCQVNFQ0xBU1NFUyBoZXJlLgoJKiBpbml0LmMgKHNvcnRfYmFzZV9pbml0KTogVXNlIEJJTkZPX0ZPUl9WQkFTRS4KCShleHBhbmRfbWVtYmVyX2luaXQpOiBMaWtld2lzZS4KCSogc2VhcmNoLmMgKGdldF9iYXNlX2Rpc3RhbmNlKTogTGlrZXdpc2UuCgkobG9va3VwX2ZpZWxkX3F1ZXVlX3ApOiBMaWtld2lzZS4KCSh2aXJ0dWFsX2NvbnRleHQpOiBMaWtld2lzZS4KCShnZXRfdmJhc2VfdHlwZXMpOiBEb24ndCByZXR1cm4gYSB2YWx1ZS4gIFNldAoJQ0xBU1NUWVBFX1ZCQVNFQ0xBU1NFUyBoZXJlLgoJKiB0eXBlY2suYyAoZ2V0X2RlbHRhX2RpZmZlcmVuY2UpOiBVc2UgQklORk9fRk9SX1ZCQVNFLgoJCjE5OTktMTItMzAgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjbGFzcy5jIChmaXh1cF9pbmxpbmVfbWV0aG9kcyk6IENsZWFyIENMQVNTVFlQRV9JTkxJTkVfRlJJRU5EUy4KCjE5OTktMTItMjkgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjbGFzcy5jIChjcmVhdGVfdnRhYmxlX3B0cik6IFB1dCB0aGUgdnRhYmxlIGF0IHRoZSBiZWdpbm5pbmcgb2YKCXRoZSBjbGFzcywgbm90IHRoZSBlbmQsIGluIHRoZSBuZXcgQUJJLgoJKiB0cmVlLmMgKHByb3BhZ2F0ZV9iaW5mb19vZmZzZXRzKTogRG8gdGhlIHJpZ2h0IHRoaW5nIGZvciB0aGUgbmV3CglBQkkuCgoxOTk5LTEyLTI5ICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogY3AtdHJlZS5oIChsYW5nX3R5cGUpOiBBZGQgbmVhcmx5X2VtcHR5X3AuICBBZGp1c3QgZHVtbXkuCgkoQ0xBU1NUWVBFX05FQVJMWV9FTVBUWV9QKTogTmV3IG1hY3JvLgoJKiBjbGFzcy5jIChjaGVja19iYXNlcyk6IFVwZGF0ZSBDTEFTU1RZUEVfTkVBUkxZX0VNUFRZX1AuCgkoY2hlY2tfZmllbGRfZGVjbHMpOiBMaWtld2lzZS4KCShjaGVja19iYXNlc19hbmRfbWVtYmVycyk6IExpa2V3aXNlLgoKMTk5OS0xMi0yOCAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGNwLXRyZWUuaCAoZG9faW5saW5lX2Z1bmN0aW9uX2hhaXIpOiBSZW1vdmUuCgkqIGNsYXNzLmMgKGxheW91dF9jbGFzc190eXBlKTogTmV3IGZ1bmN0aW9uLCBzcGxpdCBvdXQgZnJvbQoJZmluaXNoX3N0cnVjdF8xLgoJKGZpeHVwX3BlbmRpbmdfaW5saW5lKTogTGlrZXdpc2UuCgkoZml4dXBfaW5saW5lX21ldGhvZHMpOiBOZXcgZnVuY3Rpb24uCgkqIG1ldGhvZC5jIChmaXh1cF9wZW5kaW5nX2lubGluZSk6IFJlbW92ZS4KCShkb19pbmxpbmVfZnVuY3Rpb25faGFpcik6IExpa2V3aXNlLgoJCgkqIGRlY2wuYyAoQk9PTF9UWVBFX1NJWkUpOiBCb29scyBhbHdheXMgaGF2ZSBzaXplIGAxJyB1bmRlciB0aGUKCW5ldyBBQkkuCgkKCSogY3AtdHJlZS5oIChsYW5nX3R5cGUpOiBSZXBsYWNlIGFic3RyYWN0X3ZpcnR1YWxzIHdpdGggcHVyZV92aXJ0dWFscy4KCShDTEFTU1RZUEVfQUJTVFJBQ1RfVklSVFVBTFMpOiBSZW5hbWUgdG8gLi4uCgkoQ0xBU1NUWVBFX1BVUkVfVklSVFVBTFMpOiAuLi4gdGhpcy4KCShsYW5nX2RlY2xfZmxhZ3MpOiBSZXBsYWNlIGFic3RyYWN0X3ZpcnR1YWwgd2l0aCBwdXJlX3ZpcnR1YWwuCgkoREVDTF9BQlNUUkFDVF9WSVJUVUFMX1ApOiBSZW5hbWUgdG8gLi4uCgkoREVDTF9QVVJFX1ZJUlRVQUxfUCk6IC4uLiB0aGlzLgoJKGdldF9hYnN0cmFjdF92aXJ0dWFscyk6IFJlbmFtZSB0byAuLi4KCShnZXRfcHVyZV92aXJ0dWFscyk6IC4uLiB0aGlzLgoJKiBjYWxsLmMgKGJ1aWxkX25ld19tZXRob2RfY2FsbCk6IFJlcGxhY2UgREVDTF9QVVJFX1ZJUlRVQUxfUCB3aXRoCglERUNMX0FCU1RSQUNUX1ZJUlRVQUxfUC4gIFJlcGxhY2UgQ0xBU1NUWVBFX0FCU1RSQUNUX1ZJUlRVQUxTIHdpdGgKCUNMQVNTVFlQRV9QVVJFX1ZJUlRVQUxTLgoJKiBjbGFzcy5jIChidWlsZF92dGFibGVfZW50cnkpOiBMaWtld2lzZS4KCShmaW5pc2hfc3RydWN0X2JpdHMpOiBMaWtld2lzZS4gIENhbGwgZ2V0X3B1cmVfdmlydHVhbHMsIG5vdAoJZ2V0X2Fic3RyYWN0X3ZpcnR1YWxzLgoJKGJ1aWxkX3Z0YmxfaW5pdGlhbGl6ZXIpOiBMaWtld2lzZS4KCShvdmVycmlkZV9vbmVfdnRhYmxlKTogTGlrZXdpc2UuCgkoY2hlY2tfbWV0aG9kcyk6IExpa2V3aXNlLgoJKiBkZWNsLmMgKGR1cGxpY2F0ZV9kZWNscyk6IExpa2V3aXNlLgoJKHJlZGVjbGFyYXRpb25fZXJyb3JfbWVzc2FnZSk6IExpa2V3aXNlLgoJKGxhbmdfbWFya190cmVlKTogTGlrZXdpc2UuCgkqIGRlY2wyLmMgKGdyb2tfZnVuY3Rpb25faW5pdCk6IExpa2V3aXNlLgoJKGltcG9ydF9leHBvcnRfdnRhYmxlKTogTGlrZXdpc2UuCgkoaW1wb3J0X2V4cG9yX2NsYXNzKTogTGlrZXdpc2UuCgkqIHR5cGVjazIuYyAoYWJzdHJhY3RfdmlydHVhbHNfZXJyb3IpOiBMaWtld2lzZS4KCSogeHJlZi5jIChHTlVfeHJlZl9tZW1iZXIpOiBMaWtld2lzZS4KCSogc2VhcmNoLmMgKGdldF9hYnN0cmFjdF92aXJ0dWFscyk6IFJlbmFtZSB0byBnZXRfcHVyZV92aXJ0dWFscy4KCQoxOTk5LTEyLTI2ICBaYWNrIFdlaW5iZXJnICA8emFja0B3b2xlcnkuY3VtYi5vcmc+CgoJKiBjcC10cmVlLmg6IFJlcGxhY2UgRU5BQkxFX0NIRUNLSU5HIHdpdGggRU5BQkxFX1RSRUVfQ0hFQ0tJTkcKCXRocm91Z2hvdXQuCgoxOTk5LTEyLTI2ICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogZGVjbC5jIChzdG9yZV9yZXR1cm5faW5pdCk6IFVzZSBtb2RlIG9mIG9sZCBSVEwgZ2VuZXJhdGVkIGZvcgoJREVDTF9SRVNVTFQsIG5vdCB0aGUgbW9kZSBvZiBERUNMX1JFU1VMVCBpdHNlbGYuCgkqIHNlbWFudGljcy5jIChmaW5pc2hfbmFtZWRfcmV0dXJuX3ZhbHVlKTogU2V0IERFQ0xfVU5JTkxJTkFCTEUKCWZvciBmdW5jdGlvbnMgdGhhdCB1c2VkIG5hbWVkIHJldHVybiB2YWx1ZXMuCgkKMTk5OS0xMi0yNCAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIHNlbWFudGljcy5jIChleHBhbmRfYm9keSk6IFVzZQoJbm90ZV9kZWZlcnJhbF9vZl9kZWZpbmVkX2lubGluZV9mdW5jdGlvbi4KCjE5OTktMTItMjIgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBkdW1wLmMgKGRlcXVldWVfYW5kX2R1bXApOiBIYW5kbGUgQ1RPUl9TVE1Ucy4KCjE5OTktMTItMjIgIEFsZXhhbmRyZSBPbGl2YSAgPG9saXZhQGxzZC5pYy51bmljYW1wLmJyPgoKCSogZXJyb3IuYyAoZHVtcF9kZWNsKTogU3VwcG9ydCBuYW1lZCByZXR1cm4gdmFsdWVzLgoKMTk5OS0xMi0yMCAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGNwLXRyZWUuaCAoQ0xBU1NUWVBFX1ZGSUVMRF9QQVJFTlQpOiBVcGRhdGUgY29tbWVudHMuCgkoQ0xBU1NUWVBFX0hBU19QUklNQVJZX0JBU0VfUCk6IE5ldyBtYWNyby4KCShDTEFTU1RZUEVfUFJJTUFSWV9CSU5GTyk6IExpa2V3aXNlLgoJKiBjbGFzcy5jIChjaGVja19tZXRob2RzKTogRG9uJ3Qgc2V0IFRZUEVfSEFTX0NPTVBMRVhfSU5JVF9SRUYsCglUWVBFX05FRURTX0NPTlNUUlVDVElORywgYW5kIENMQVNTVFlQRV9OT05fQUdHUkVHQVRFIGhlcmUuCgkoY2hlY2tfYmFzZXNfYW5kX21lbWJlcnMpOiBTZXQgdGhlbSBoZXJlIGluc3RlYWQuCgkoY3JlYXRlX3Z0YWJsZV9wdHIpOiBOZXcgZnVuY3Rpb24sIHNwbGl0IG91dCBmcm9tIC4uLgoJKGZpbmlzaF9zdHJ1Y3RfMSk6IC4uLiBoZXJlLiAgVXNlIGl0LiAgVGlkeS4gIFVzZQoJQ0xBU1NUWVBFX0hBU19QUklNQVJZX0JBU0VfUCBhbmQgQ0xBU1NUWVBFX1BSSU1BUllfQklORk8uCgkqIHNlYXJjaC5jIChkZnNfaW5pdF92YmFzZV9wb2ludGVycyk6IEhhbmRsZSBzZWVpbmcgVFlQRV9WRklFTEQgYXMKCXRoZSBmaXJzdCBmaWVsZCBpbiB0aGUgY2xhc3MuCgkqIHRyZWUuYyAobGF5b3V0X2Jhc2V0eXBlcyk6IFVzZSBDTEFTU1RZUEVfTl9CQVNFQ0xBU1NFUy4gIEhhbmRsZQoJc2VlaW5nIFRZUEVfVkZJRUxEIGFzIHRoZSBmaXJzdCBmaWVsZCBpbiB0aGUgY2xhc3MuCgkKCSogY3AtdHJlZS5oIChUWVBFX1ZJUlRVQUxfUCk6IFJlbmFtZSB0byAuLi4KCShUWVBFX1BPTFlNT1JQSElDX1ApOiAuLi4gdGhpcy4KCShUWVBFX1VTRVNfQ09NUExFWF9JTkhFUklUQU5DRSk6IFJlbmFtZSB0byAuLi4KCShUWVBFX0JBU0VfQ09OVlNfTUFZX1JFUVVJUkVfQ09ERV9QKTogLi4uIHRoaXMuCgkoVFJFRV9DQUxMU19ORVcpOiBSZW1vdmUuCgkoVFJFRV9NQU5HTEVEKTogTGlrZXdpc2UuCgkqIGNhbGwuYyAoYnVpbGRfdmZpZWxkX3JlZik6IFVzZSBUWVBFX0JBU0VfQ09OVlNfTUFZX1JFUVVJUkVfQ09ERV9QLAoJYW5kIFRZUEVfUE9MWU1PUlBISUNfUC4KCSogY2xhc3MuYyAoY2hlY2tfYmFzZXMpOiBMaWtld2lzZS4KCShmaW5pc2hfYmFzZV9zdHJ1Y3QpOiBMaWtld2lzZS4KCShmaW5pc2hfc3RydWN0X2JpdHMpOiBMaWtld2lzZS4KCShjaGVja19mb3Jfb3ZlcnJpZGUpOiBMaWtld2lzZS4KCShmaW5pc2hfc3RydWN0XzEpOiBMaWtld2lzZS4KCShnZXRfdmZpZWxkX25hbWUpOiBMaWtld2lzZS4KCSogZGVjbC5jICh4cmVmX2Jhc2V0eXBlcyk6IExpa2V3aXNlLgoJKiBkZWNsMi5jIChpbXBvcnRfZXhwb3J0X2NsYXNzKTogTGlrZXdpc2UuCgkoaW1wb3J0X2V4cG9ydF9kZWNsKTogTGlrZXdpc2UuCgkqIGVycm9yLmMgKGR1bXBfZnVuY3Rpb25fZGVjbCk6IExpa2V3aXNlLgoJKiBwdC5jIChpbnN0YW50aWF0ZV9jbGFzc190ZW1wbGF0ZSk6IExpa2V3aXNlLgoJKiByZXBvLmMgKHJlcG9faW5saW5lX3VzZWQpOiBMaWtld2lzZS4KCSogcnR0aS5jIChidWlsZF9oZWFkb2YpOiBMaWtld2lzZS4KCShnZXRfdGluZm9fZm5fZHluYW1pYyk6IExpa2V3aXNlLgoJKGJ1aWxkX3hfdHlwZWlkKTogTGlrZXdpc2UuCgkoZ2V0X3RpbmZvX3Zhcik6IExpa2V3aXNlLgoJKGJ1aWxkX2R5bmFtaWNfY2FzdF8xKTogTGlrZXdpc2UuCgkoc3ludGhlc2l6ZV90aW5mb19mbik6IExpa2V3aXNlLgoJKiBzZWFyY2guYyAobG9va3VwX2ZpZWxkXzEpOiBMaWtld2lzZS4KCShkZnNfZGVidWdfbWFyayk6IExpa2V3aXNlLgoJKG1heWJlX3N1cHByZXNzX2RlYnVnX2luZm8pOiBMaWtld2lzZS4KCSogdHlwZWNrLmMgKGJ1aWxkX2NvbXBvbmVudF9yZWYpOiBMaWtld2lzZS4KCShidWlsZF9jb21wb25lbnRfYWRkcik6IExpa2V3aXNlLgoJKiB0eXBlY2syLmMgKHByb2Nlc3NfaW5pdF9jb25zdHJ1Y3Rvcik6IExpa2V3aXNlLgoJCjE5OTktMTItMjAgIE5hdGhhbiBTaWR3ZWxsICA8bmF0aGFuQGFjbS5vcmc+CgoJKiB0eXBlY2suYyAoc3RyaXBfYWxsX3BvaW50ZXJfcXVhbHMpOiBOZXcgc3RhdGljIGZ1bmN0aW9uLgoJKGJ1aWxkX3N0YXRpY19jYXN0KTogVXNlIGl0LiBEb24ndCB1c2UgYXRfbGVhc3RfYXNfcXVhbGlmaWVkX3AuCgoxOTk5LTEyLTE2ICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogY3AtdHJlZS5oIChjcF90cmVlX2luZGV4KTogQWRkIENQVElfRFNPX0hBTkRMRS4KCShkc29faGFuZGxlX25vZGUpOiBOZXcgbWFjcm8uCgkoZmxhZ191c2VfY3hhX2F0ZXhpdCk6IE5ldyB2YXJpYWJsZS4KCShkZWNsYXJlX2dsb2JhbF92YXIpOiBOZXcgZnVuY3Rpb24uCgkoc3RhcnRfYW5vbl9mdW5jKTogUmVtb3ZlIGRlY2xhcmF0aW9uLgoJKGVuZF9hbm9uX2Z1bmMpOiBMaWtld2lzZS4KCSogZGVjbC5jIChnZXRfYXRleGl0X25vZGUpOiBOZXcgZnVuY3Rpb24sIHNwbGl0IG91dCBmcm9tCglkZXN0cm95X2xvY2FsX3N0YXRpYy4gIEhhbmRsZSBmbGFnX3VzZV9jeGFfYXRleGl0LgoJKGdldF9kc29faGFuZGxlX25vZGUpOiBMaWtld2lzZS4KCShzdGFydF9jbGVhbnVwX2ZuKTogUmVuYW1lZCBmcm9tIHN0YXJ0X2Fub25fZnVuYy4gIE1vdmVkIGhlcmUgZnJvbQoJZXhjZXB0LmMuICBIYW5kbGUgZmxhZ191c2VfY3hhX2F0ZXhpdC4KCShlbmRfY2xlYW51cF9mbik6IFJlbmFtZWQgZnJvbSBlbmRfYW5vbl9mdW5jLiAgTW92ZWQgaGVyZSBmcm9tCglleGNlcHQuYy4KCShkZWNsYXJlX2dsb2JhbF92YXIpOiBOZXcgdmFyaWFibGUuCgkoZGVzdHJveV9sb2NhbF9zdGF0aWMpOiBIYW5kbGUgZmxhZ191c2VfY3hhX2F0ZXhpdC4KCSogZGVjbDIuYyAoZmxhZ191c2VfY3hhX2F0ZXhpdCk6IE5ldyB2YXJpYWJsZS4KCShsYW5nX2Zfb3B0aW9ucyk6IExpa2V3aXNlLgoJKiBleGNlcHQuYyAoc3RhcnRfYW5vbl9mdW5jKTogUmVtb3ZlLgoJKGVuZF9hbm9uX2Z1bmMpOiBMaWVrd2lzZS4KCSogbGFuZy1vcHRpb25zLmg6IEFkZCAtZnVzZS1jeGEtYXRleGl0IGFuZCAtZm5vLXVzZS1jeGEtYXRleGl0LgoJKiBydHRpLmMgKGdldF90aW5mb192YXIpOiBVc2UgZGVjbGFyZV9nbG9iYWxfdmFyLgoKMTk5OS0xMi0xNiAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGNsYXNzLmMgKGNoZWNrX2ZpZWxkX2RlY2xzKTogRG9uJ3QgcmV0dXJuIGEgdmFsdWUuCgkoYXZvaWRfb3ZlcmxhcCk6IE1vdmVkIGhlcmUgZnJvbSB0cmVlLmMuCgkoYnVpbGRfYmFzZV9maWVsZHMpOiBMaWtld2lzZS4KCShjaGVja19iYXNlcyk6IE5ldyBmdW5jdGlvbiwgc3BsaXQgb3V0IGZyb20gZmluaXNoX2Jhc2Vfc3RydWN0LgoJKGNoZWNrX2Jhc2VzX2FuZF9tZW1iZXJzKTogTmV3IGZ1bmN0aW9uLCBzcGxpdCBvdXQgZnJvbSAKCWZpbmlzaF9zdHJ1Y3RfMS4KCShzdHJ1Y3QgYmFzZV9pbmZvKTogUmVtb3ZlIGNhbnRfaGF2ZV9kZWZhdWx0X2N0b3IsCgljYW50X2hhdmVfY29uc3RfY3RvciwgY2FudF9oYXZlX2Fzbl9yZWYuCgkoZmluaXNoX2Jhc2Vfc3RydWN0KTogU3BsaXQgc2VtYW50aWMgYW5hbHlzaXMgaW50byBjaGVja19iYXNlcy4KCShmaW5pc2hfc3RydWN0X21ldGhvZHMpOiBGaXggYm9ndXMgYXNzZXJ0aW9uLgoJKGNoZWNrX2ZpZWxkX2RlY2xzKTogQ2FsbCBmaW5pc2hfc3RydWN0X2Fub24gaGVyZS4KCShidWlsZF92YmFzZV9wb2ludGVyX2ZpZWxkcyk6IFVzZSBDTEFTU1RZUEVfTl9CQVNFQ0xBU1NFUy4KCShmaW5pc2hfc3RydWN0XzEpOiBVc2UgY2hlY2tfYmFzZXNfYW5kX21lbWJlcnMuICBSZW9yZ2FuaXplLgoJKiBjcC10cmVlLmggKENMQVNTVFlQRV9WQkFTRUNMQVNTRVMpOiBJbXByb3ZlIGRvY3VtZW50YXRpb24uCgkoYnVpbGRfYmFzZV9maWVsZHMpOiBEb24ndCBkZWNsYXJlLgoJKiB0cmVlLmMgKGF2b2lkX292ZXJsYXApOiBSZW1vdmUuCgkoYnVpbGRfYmFzZV9maWVsZHMpOiBMaWtld2lzZS4KCQoJKiBvcHRpbWl6ZS5jIChzdHJ1Y3QgaW5saW5lX2RhdGEpOiBSZW1vdmUgc2NvcGVfc3RtdC4KCShyZW1hcF9ibG9jayk6IERvbid0IHVzZSBpbnNlcnRfYmxvY2tfYWZ0ZXJfbm90ZS4gIERvbid0IHVwZGF0ZQoJc2NvcGVfc3RtdC4KCShleHBhbmRfY2FsbF9pbmxpbmUpOiBEb24ndCB1cGRhdGUgc2NvcGVfc3RtdC4KCShvcHRpbWl6ZV9mdW5jdGlvbik6IERvbid0IGluaXRpYWxpemUgc2NvcGVfc3RtdC4KCSogc2VtYW50aWNzLmMgKGV4cGFuZF9zdG10KTogU2V0IE5PVEVfQkxPQ0sgZm9yIG5ld2x5IGVtaXR0ZWQKCU5PVEVfSU5TTl9CTE9DS19CRUcvTk9URV9JTlNOX0JMT0NLX0VORCBub3Rlcy4KCjE5OTktMTItMTUgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjbGFzcy5jIChoYW5kbGVfdXNpbmdfZGVjbCk6IEdldCBUWVBFX0ZJRUxEUyBhbmQgVFlQRV9NRVRIT0RTCglvdXQgb2YgdGhlIGNsYXNzLCByYXRoZXIgdGhhbiB0YWtpbmcgdGhlbSBhcyBwYXJhbWV0ZXJzLgoJKGJ1aWxkX3ZiYXNlX3BvaW50ZXJfZmllbGRzKTogTW92ZSBoZXJlIGZyb20gdHJlZS5jLgoJKGJ1aWxkX3Z0Ymxfb3JfdmJhc2VfZmllbGQpOiBOZXcgZnVuY3Rpb24uCgkoY2hlY2tfbWV0aG9kcyk6IExpa2V3aXNlLgoJKHJlbW92ZV96ZXJvX3dpZHRoX2JpdGZpZWxkcyk6IExpa2V3aXNlLgoJKGFkZF92aXJ0dWFsX2Z1bmN0aW9uKTogVXNlIHRyZWVfY29ucyBpbnN0ZWFkIG9mIHRlbXBfdHJlZV9jb25zLgoJKGRlbGV0ZV9kdXBsaWNhdGVfZmllbGRzXzEpOiBUaWR5LiAgRG9uJ3QgZGVsZXRlIGR1cGxpY2F0ZQoJVVNJTkdfREVDTHMgaGVyZS4KCShmaW5pc2hfc3RydWN0X21ldGhvZHMpOiBIYW5kbGUgdGhlIGNhc2Ugd2hlcmUgdGhlcmUgYXJlIG5vCgltZXRob2RzIGhlcmUuCgkoZ2V0X2Jhc2VmbmRlY2xzKTogVXNlIHRyZWVfY29ucyBpbnN0ZWFkIG9mIHRlbXBfdHJlZV9jb25zLgoJKGNoZWNrX2ZpZWxkX2RlY2xzKTogQ2FsbCBkZWxldGVfZHVwbGljYXRlX2ZpZWxkcyBoZXJlLgoJKGZpbmlzaF9zdHJ1Y3RfMSk6IFRpZHkuICBVc2UgY2hlY2tfbWV0aG9kcyBhbmQKCXJlbW92ZV96ZXJvX3dpZHRoX2JpdGZpZWxkcy4KCSogY3AtdHJlZS5oIChidWlsZF92YmFzZV9wb2ludGVyX2ZpZWxkcyk6IFJlbW92ZS4KCSogZGVjbC5jIChncm9rZGVjbGFyYXRvcik6IFVzZSB0cmVlX2NvbnMgaW5zdGVhZCBvZgoJdGVtcF90cmVlX2NvbnMuCgkqIGRlY2wyLmMgKHF1YWxpZmllZF9sb29rdXBfdXNpbmdfbmFtZXNwYWNlKTogVXNlIHRyZWVfY29ucwoJaW5zdGVhZCBvZiB0ZW1wX3RyZWVfY29ucy4KCSogbGV4LmMgKGNvbnNfdXBfZGVmYXVsdF9mdW5jdGlvbik6IFJlbW92ZSBkZWFkIGNvZGUuCgkqIG1ldGhvZC5jIChmaXh1cF9wZW5kaW5nX2lubGluZSk6IE5ldyBmdW5jdGlvbiwgc3BsaXQgb3V0IGZyb20JLi4uCgkoZG9faW5saW5lX2Z1bmN0aW9uX2hhaXIpOiAuLi4gaGVyZS4KCSogdHJlZS5jIChidWlsZF92YmFzZV9wb2ludGVyX2ZpZWxkcyk6IFJlbW92ZS4KCQoxOTk5LTEyLTE1ICBKYXNvbiBNZXJyaWxsICA8amFzb25AY2FzZXkuY3lnbnVzLmNvbT4KCgkqIHRyZWUuYyAod2Fsa190cmVlKTogV2FsayBvcGVyYW5kIHN1YnRyZWVzIGluIGZvcndhcmQgb3JkZXIuCgkqIG9wdGltaXplLmMgKGV4cGFuZF9jYWxsX2lubGluZSk6IExpa2V3aXNlLgoJKG9wdGltaXplX2Z1bmN0aW9uKTogSW5pdGlhbGl6ZSBpZC0+c2NvcGVfc3RtdCB0byBzb21ldGhpbmcgdXNlZnVsLgoJKHJlbWFwX2Jsb2NrKTogQXNzdW1lIGlkLT5zY29wZV9zdG10IGhhcyBhIHVzZWZ1bCB2YWx1ZS4KCjE5OTktMTItMTUgIE5hdGhhbiBTaWR3ZWxsICA8bmF0aGFuQGFjbS5vcmc+CgoJKiB0eXBlY2suYyAoYnVpbGRfY19jYXN0KTogRXhwYW5kIHdhcm5pbmcgbWVzc2FnZS4gTW92ZSBwb2ludGVyCglhbGlnbm1lbnQgd2FybmluZyB0byBhZnRlciB0aGUgY2FzdC4gRG9uJ3Qgd2FybiBhYm91dCBwb2ludGVyCglhbGlnbm1lbnQgd2hlbiBnaXZlbiBhIHBvaW50ZXIgdG8gaW5jb21wbGV0ZS4KCjE5OTktMTItMTUgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgoJKiBjcC10cmVlLmggKG1ha2VfYWdncl90eXBlKTogRGVjbGFyZS4KCSogbGV4LmMgKGNwX21ha2VfbGFuZ190eXBlKTogRG9uJ3QgU0VUX0lTX0FHR1JfVFlQRS4KCShtYWtlX2FnZ3JfdHlwZSk6IE5ldy4KCgkqIGRlY2wuYyAoYnVpbGRfdHlwZW5hbWVfdHlwZSwgaW5pdF9kZWNsX3Byb2Nlc3NpbmcpOiBVc2UgaXQuCgkoYnVpbGRfcHRybWVtZnVuY190eXBlLCB4cmVmX3RhZyk6IExpa2V3aXNlLgoJKiBleGNlcHQuYyAoY2FsbF9laF9pbmZvKTogTGlrZXdpc2UuCgkqIGluaXQuYyAoaW5pdF9pbml0X3Byb2Nlc3NpbmcpOiBMaWtld2lzZS4KCSogcHQuYyAocHJvY2Vzc190ZW1wbGF0ZV9wYXJtLCBsb29rdXBfdGVtcGxhdGVfY2xhc3MpOiBMaWtld2lzZS4KCSogcnR0aS5jIChleHBhbmRfY2xhc3NfZGVzYyk6IExpa2V3aXNlLgoJKiBzZW1hbnRpY3MuYyAoYmVnaW5fY2xhc3NfZGVmaW5pdGlvbiwgZmluaXNoX3R5cGVvZik6IExpa2V3aXNlLgoJKiB0cmVlLmMgKGNvcHlfdGVtcGxhdGVfdGVtcGxhdGVfcGFybSk6IExpa2V3aXNlLgoKMTk5OS0xMi0xNSAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogY3AtdHJlZS5kZWYgKFRFTVBMQVRFX1BBUk1fSU5ERVgpOiBDYWxjdWxhdGUgc2l6ZSB1c2luZwoJc2l6ZW9mIChzdHJ1Y3QgdHJlZV9jb21tb24pLgoKMTk5OS0xMi0xNCAgSmFzb24gTWVycmlsbCAgPGphc29uQGNhc2V5LmN5Z251cy5jb20+CgoJKiBvcHRpbWl6ZS5jIChleHBhbmRfY2FsbF9pbmxpbmUpOiBTZXQgQkxPQ0tfQUJTVFJBQ1RfT1JJR0lOIG9uIHRoZQoJb3V0ZXJtb3N0IGJsb2NrIHRvIHBvaW50IHRvIHRoZSBpbmxpbmVkIGZ1bmN0aW9uIGRlY2wuCgoJKiBlcnJvci5jIChkdW1wX2RlY2wpOiBvcGVyYXRvcj09LCBub3Qgb3BlcmF0b3IgPT0uCgkob3BfdG9fc3RyaW5nKTogTGlrZXdpc2UuCgoJKiBkZWNsLmMgKGNvbXB1dGVfYXJyYXlfaW5kZXhfdHlwZSk6IEhhbmRsZSBudWxsIG5hbWUuCgoJKiBkZWNsMi5jIChhbWJpZ3VvdXNfZGVjbCk6IEZpeCB0byBtYXRjaCBjb21tZW50LgoJKGxvb2t1cF91c2luZ19uYW1lc3BhY2UpOiBBZGp1c3QuCgoJKiBkZWNsMi5jIChpbXBvcnRfZXhwb3J0X2NsYXNzKTogRG9uJ3QgaWdub3JlIGRsbGltcG9ydC4KCjE5OTktMTItMTQgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjbGFzcy5jIChjaGVja19maWVsZF9kZWNscyk6IFNwbGl0IG91dCBmcm9tIC4uLgoJKGZpbmlzaF9zdHJ1Y3RfMSk6IC4uLiBoZXJlLiAgVXNlIGl0LiAgVGlkeS4KCgkqIGNwLXRyZWUuaCAocmVtYXBfc2F2ZV9leHByKTogQWRkIHdhbGtfc3VidHJlZXMgcGFyYW1ldGVyLgoJKiBvcHRpbWl6ZS5jIChjb3B5X2JvZHlfcik6IFBhc3MgaXQuCgkqIHRyZWUuYyAocmVtYXBfc2F2ZV9leHByKTogQ2xlYXIgd2Fsa19zdWJ0cmVlcyBmb3IgYW4KCWFscmVhZHktaGFuZGxlZCBTQVZFX0VYUFIuCgkoY3BfdW5zYXZlX3IpOiBQYXNzIHdhbGtfc3VidHJlZXMgdG8gcmVtYXBfc2F2ZV9leHByLgoKCSogZHVtcC5jIChkZXF1ZXVlX2FuZF9kdW1wKTogRHVtcCBERUNMX05BTUVTUEFDRV9BTElBUy4KCSogaXIudGV4aSAoREVDTF9OQU1FU1BBQ0VfQUxJQVMpOiBEb2N1bWVudCBpdC4KCgkqIGVycm9yLmMgKGR1bXBfZXhwcik6IEhhbmRsZSBFWFBSX1dJVEhfRklMRV9MT0NBVElPTi4KCjE5OTktMTItMTQgIE11bWl0IEtoYW4gIDxraGFuQHhyYXlsaXRoLndpc2MuZWR1PgoKCSogY2xhc3MuYyAoZmluaXNoX2Jhc2Vfc3RydWN0KTogQWxsb3cgbXVsdGlwbGUgQ09NIGJhc2UgY2xhc3NlcwoJYXMgd2VsbCBhcyBub24tQ09NIGJhc2VzIGFzIGxvbmcgYXMgaXQncyBub3QgdGhlIGxlZnRtb3N0LgoKMTk5OS0xMi0xMyAgTXVtaXQgS2hhbiAgPGtoYW5AeHJheWxpdGgud2lzYy5lZHU+CgoJKiBsZXguYyAoc2F2aW5nX3BhcnNlX3RvX29ic3RhY2spOiBOZXcgZ2xvYmFsLgoJKHJlaW5pdF9wYXJzZV9mb3JfYmxvY2spOiBVc2UuCgkocmVpbml0X3BhcnNlX2Zvcl9leHByKTogVXNlLgoJKGNoZWNrX25ld2xpbmUpOiBVc2UuCgoxOTk5LTEyLTEzICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogb3B0aW1pemUuYyAoaW5pdGlhbGl6ZV9pbmxpbmVkX3BhcmFtZXRlcnMpOiBUYWtlIEZOIHRvIHdoaWNoIHRoZQoJcGFyYW1ldGVycyBiZWxvbmcgYXMgYW4gYXJndW1lbnQuCgkoZXhwYW5kX2NhbGxfaW5saW5lKTogRXhwYW5kIGNhbGxzIGludG8gdGhlIHBhcmFtZXRlcgoJaW5pdGlhbGl6YXRpb25zIGJlZm9yZSBwdXNoaW5nIHRoZSBmdW5jdGlvbiBvbnRvIHRoZSBsaXN0IG9mCglmdW5jdGlvbnMgd2UgYXJlIHByZXNlbnRseSBleHBhbmRpbmcuCgoxOTk5LTEyLTExICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBjbGFzcy5jIChnZXRfdnRhYmxlX25hbWUpOiBVc2UgYSBsaXRlcmFsIGZvcm1hdCBzdHJpbmcgYW5kCglWVEFCTEVfTkFNRV9QUkVGSVggbWFjcm8gaW5zdGVhZCBvZiBWVEFCTEVfTkFNRV9GT1JNQVQuCgkocHJlcGFyZV9mcmVzaF92dGFibGUpOiBMaWtld2lzZS4KCgkqIGNwLXRyZWUuaCAoVlRBQkxFX05BTUVfUFJFRklYKTogRGVmaW5lIHRoaXMgaW5zdGVhZCBvZgoJVlRBQkxFX05BTUVfRk9STUFULgoKCSogZGVjbC5jIChtYWtlX3J0bF9mb3JfbG9jYWxfc3RhdGljKTogUmVtb3ZlIHVudXNlZCB2YXJpYWJsZSBgdHlwZScuCgoJKiBpbml0LmMgKGJ1aWxkX3ZlY19pbml0KTogSW5pdGlhbGl6ZSB2YXJpYWJsZSBgdHJ5X2JvZHknLgoKCSogbGV4LmMgKHl5ZXJyb3IpOiBEb24ndCBjYWxsIGEgdmFyaWFkaWMgZnVuY3Rpb24gd2l0aCBhCglub24tbGl0ZXJhbCBmb3JtYXQgc3RyaW5nLgoKCSogb3B0aW1pemUuYyAob3B0aW1pemVfZnVuY3Rpb24pOiBDYWxsIG1lbXNldCwgbm90IGJ6ZXJvLgoKCSogcHQuYyAoZm9yX2VhY2hfdGVtcGxhdGVfcGFybV9yKTogQWRkIHN0YXRpYyBwcm90b3R5cGUuCgoxOTk5LTEyLTA5ICBBbmRyZWFzIEphZWdlciAgPGFqQHN1c2UuZGU+CgoJKiBleGNlcHQuYyAoZXhwYW5kX3Rocm93KTogQWRkIHN0YXRpYyBhdHRyaWJ1dGUgdG8gbWF0Y2gKCXByb3RvdHlwZS4KCgkqIE1ha2VmaWxlLmluIChzZW1hbnRpY3Mubyk6IEFkZCBkZXBlbmRlbmN5IG9uIG91dHB1dC5oLgoJKiBzZW1hbnRpY3MuYzogSW5jbHVkZSBvdXRwdXQuaCBmb3IgZGVjbGFyYXRpb24gb2YKCW1ha2VfZnVuY3Rpb25fcnRsLgoKMTk5OS0xMi0wOSAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGRlY2wuYyAoaW5pdF9kZWNsX3Byb2Nlc3NpbmcpOiBSZWVuYWJsZSBpbmxpbmluZyBvbiB0cmVlcy4KCShmaW5pc2hfZnVuY3Rpb24pOiBMaWtld2lzZS4KCSogZXhwci5jIChjcGx1c19leHBhbmRfZXhwcik6IERvbid0IGhhbmRsZSBBR0dSX0lOSVRfRVhQUiBoZXJlLgoJKiBzZW1hbnRpY3MuYyAoc2ltcGxpZnlfYWdncl9pbml0X2V4cHJzKTogTmV3IGZ1bmN0aW9uLgoJKGV4cGFuZF9ib2R5KTogVXNlIGl0LgoJKiB0cmVlLmMgKHdhbGtfdHJlZSk6IFNwZWNpYWwtY2FzZSBUQVJHRVRfRVhQUnMgc2luY2UgdGhleQoJc29tZXRpbWVzIHByZXNlbnQgdGhlIHNhbWUgc3ViLXRyZWUgdHdpY2UuCgkKCSogZHVtcC5jIChkZXF1ZXVlX2FuZF9kdW1wKTogQWJicmV2aWF0ZSBgY2xhc3MnIGFzIGBjbHMnLCBub3QKCWBjc2wnLgoKCSogc2VtYW50aWNzLmMgKGZpbmlzaF9zd2l0Y2hfY29uZCk6IERvIGNvbnZlcnNpb25zIGhlcmUsIG5vdCAuLi4KCSogdHlwZWNrLmMgKGNfZXhwYW5kX3N0YXJ0X2Nhc2UpOiBIZXJlLgoKCSogc2VtYW50aWNzLmMgKGRvX3BvcGxldmVsKTogUmVtb3ZlIHVudXNlZCB2YXJpYWJsZS4KCQoxOTk5LTEyLTA2ICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogdHJlZS5jICh3YWxrX3RyZWUpOiBEb24ndCByZWN1cnNlIGludG8gREVDTF9JTklUSUFMIG9yIERFQ0xfU0laRQoJdW5sZXNzIHdlJ3JlIGRlY2xhcmluZyB0aGUgdmFyaWFibGUgaW4gcXVlc3Rpb24uCgoxOTk5LTEyLTA2ICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogZGVjbC5jIChpbml0X2RlY2xfcHJvY2Vzc2luZyk6ICNpZiAwIGxhc3QgcGF0Y2guCgkoZmluaXNoX2Z1bmN0aW9uKTogTGlrZXdpc2UuCgoxOTk5LTEyLTA1ICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogZGVjbC5jIChpbml0X2RlY2xfcHJvY2Vzc2luZyk6IFNldCBmbGFnX2lubGluZV90cmVlcyBpZgoJIWZsYWdfbm9faW5saW5lLgoKCSogY3AtdHJlZS5oIChjYWxsc19zZXRqbXBfcCk6IERlY2xhcmUuCgkqIGRlY2wuYyAoZmluaXNoX2Z1bmN0aW9uKTogTWFyayBmdW5jdGlvbnMgdGhhdCBjYWxsIHNldGptcCBhcwoJdW5pbmxpbmFibGUuCgkqIG9wdGltaXplLmMgKGNhbGxzX3NldGptcF9yKTogTmV3IGZ1bmN0aW9uLgoJKGNhbGxzX3NldGptcF9wKTogTGlrZXdpc2UuCgoxOTk5LTEyLTA0ICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogb3B0aW1pemUuYyAoZXhwYW5kX2NhbGxfaW5saW5lKTogV3JhcCB0aGUgZXhwYW5kZWQgY2FsbCBpbiBhbgoJRVhQUl9XSVRIX0ZJTEVfTE9DQVRJT04gbm9kZSB0byBnZXQgY29ycmVjdCBsaW5lIG51bWJlcnMgZm9yCglpbmxpbmVkIGZ1bmN0aW9ucy4KCgkqIG9wdGltaXplLmMgKGlubGluZV9kYXRhKTogUmVtb3ZlIGZuc190b3AuICBBZGQgc2NvcGVfc3RtdC4gIEFkZAoJaW5fdGFyZ2V0X2NsZWFudXBfcC4KCShyZW1hcF9kZWNsKTogTmV3IGZ1bmN0aW9uLgoJKHJlbWFwX2Jsb2NrKTogTGlrZXdpc2UuCgkoY29weV9zY29wZV9zdG10KTogTGlrZXdpc2UuCgkoY29weV9ib2R5X3IpOiBVc2UgcmVtYXBfZGVjbCBhbmQgY29weV9zY29wZV9zdG10LgoJKGNvcHlfYm9keSk6IFVzZSBWQVJSQVlfVE9QX1RSRUUuCgkoaW5pdGlhbGl6ZV9pbmxpbmVkX3BhcmFtZXRlcnMpOiBMaWtld2lzZS4KCShkZWNsYXJlX3JldHVybl92YXJpYWJsZSk6IExpa2V3aXNlLgoJKGlubGluYWJsZV9mdW5jdGlvbl9wKTogQ2hlY2sgZmxhZ19pbmxpbmVfdHJlZXMuCgkoZXhwYW5kX2NhbGxfaW5saW5lKTogSGFuZGxlIFNDT1BFX1NUTVRzIGFuZCBUQVJHRVRfRVhQUnMKCXNwZWNpYWxseS4gIFVzZSBWQVJSQVlfUFVTSF9UUkVFLiAgQ3JlYXRlIGEgQkxPQ0sgZm9yIHRoZQoJcGFyYW1ldGVycyBvZiB0aGUgaW5saW5lZCBmdW5jdGlvbi4KCShvcHRpbWl6ZV9mdW5jdGlvbik6IFByZXZlbnQgcmVjdXJzaW9uIGludG8gcGFydGlhbGx5IGNvbXBsZXRlCglmdW5jdGlvbnMuCgkKCSogY3AtdHJlZS5kZWYgKFNDT1BFX1NUTVQpOiBUYWtlIG9uZSBvcGVyYW5kLgoJKiBjcC10cmVlLmggKFNDT1BFX1NUTVRfQkxPQ0spOiBOZXcgbWFjcm8uCgkoU0NPUEVfTlVMTElGSUVEX1ApOiBSZWRlZmluZS4KCShTQ09QRV9OT19DTEVBTlVQU19QKTogTmV3IG1hY3JvLgoJKGFkZF9zY29wZV9zdG10KTogQ2hhbmdlIHByb3RvdHlwZS4KCSogZGVjbC5jIChwb3BsZXZlbCk6IFRpZHkuICBXYXJuIGFib3V0IHVudXNlZCB2YXJpYWJsZXMgaGVyZS4KCVJlY29yZCBTQ09QRV9TVE1UX0JMT0NLcy4KCShmaW5pc2hfZnVuY3Rpb24pOiBLZWVwIERFQ0xfSU5JVElBTCBmb3IgZnVuY3Rpb25zIHRoYXQgbWlnaHQgYmUKCWlubGluZWQuCgkqIGlyLnRleGk6IERvY3VtZW50IFNDT1BFX05PX0NMRUFOVVBTX1AuCgkqIHNlbWFudGljcy5jOiBJbmNsdWRlIHJ0bC5oLgoJKGFkZF9zY29wZV9zdG10KTogUmV0dXJuIHRoZSBuZXcgc2NvcGUgc3RhdGVtZW50IGFuZCwgZm9yIGFuCgllbmQtb2Ytc2NvcGUgc3RhdGVtZW50LCBpdHMgbWF0Y2hpbmcgYmVnaW4gc3RhdGVtZW50LiAgRG9uJ3Qgc2V0CglTQ09QRV9OVUxMSUZJRURfUC4KCShkb19wdXNobGV2ZWwpOiBTaW1wbGlmeSwgbm93IHRoYXQgd2UgYXJlIGFsd2F5cwoJZnVuY3Rpb24tYXQtYS10aW1lLgoJKGRvX3BvcGxldmVsKTogTGlrZXdpc2UuICBSZWNvcmQgU0NPUEVfU1RNVF9CTE9DS3MuCgkoZXhwYW5kX3N0bXQpOiBEb24ndCBjYWxsIGV4cGFuZF9zdGFydF9iaW5kaW5ncyBvcgoJZXhwYW5kX2VuZF9iaW5kaW5ncyBmb3IgYSBzY29wZSB3aXRoIFNDT1BFX05PX0NMRUFOVVBTX1Agc2V0LgoJKiB0cmVlLmMgKGNvcHlfdHJlZV9yKTogQ2xlYXIgU0NPUEVfU1RNVF9CTE9DSyByYXRoZXIgdGhhbiBzZXR0aW5nCglTQ09QRV9OVUxMSUZJRURfUC4KCSogTWFrZWZpbGUuaW4gKHNlbWFudGljcy5vKTogRGVwZW5kIG9uIFJUTF9ILgoJCgkqIGRlY2wyLmMgKHBlbmRpbmdfc3RhdGljc191c2VkKTogTWFrZSBpdCBhIG1hY3JvLgoJKHNhdmVkX2lubGluZXNfdXNlZCk6IExpa2V3aXNlLgoJKGZpbmlzaF9zdGF0aWNfZGF0YV9tZW1iZXJfZGVjbCk6IFVzZSBWQVJSQVlfUFVTSF9UUkVFLgoJKG1hcmtfaW5saW5lX2Zvcl9vdXRwdXQpOiBMaWtld2lzZS4KCShzc2RmX2RlY2xzX3VzZWQpOiBSZW1vdmUuCgkoc3RhcnRfc3RhdGljX3N0b3JhZ2VfZHVyYXRpb25fZnVuY3Rpb24pOiBVc2UgVkFSUkFZX1BVU0hfVFJFRS4KCShnZW5lcmF0ZV9jdG9yX29yX2R0b3JfZnVuY3Rpb24pOiBBZGp1c3QgYWNjb3JkaW5nbHkuCgkKMTk5OS0xMS0yNCAgR2VvZmZyZXkgS2VhdGluZyAgPGdlb2Zma0BjeWdudXMuY29tPgoJICAgIEdyZWcgTWNHYXJ5ICA8Z2ttQGdudS5vcmc+CgoJKiBkZWNsLmMgKGR1cGxpY2F0ZV9kZWNscyk6IE1lcmdlCiAJREVDTF9OT19JTlNUUlVNRU5UX0ZVTkNUSU9OX0VOVFJZX0VYSVQsCiAJREVDTF9OT19DSEVDS19NRU1PUllfVVNBR0UsIERFQ0xfTk9fTElNSVRfU1RBQ0suCgoxOTk5LTEyLTAyICBNaWtlIFN0dW1wICA8bXJzQHdycy5jb20+CgoJKiBpbml0LmMgKHBlcmZvcm1fbWVtYmVyX2luaXQpOiBIYW5kbGUgcGFyc2UgZXJyb3JzIGJldHRlci4KCjE5OTktMTItMDEgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjcC10cmVlLmggKG1pbl90cmVlX2NvbnMpOiBSZW1vdmUuCgkoc2NyYXRjaF9vdmxfY29ucyk6IExpa2V3aXNlLgoJKiBkZWNsLmMgKHNhdmVhYmxlX29ic3RhY2spOiBEb24ndCBkZWNsYXJlLgoJKGR1cGxpY2F0ZV9kZWNscyk6IFR3ZWFrIGVycm9yLW1lc3NhZ2UuCgkoaW5pdGlhbGl6ZV9sb2NhbF92YXIpOiBFeHBsaWNpdGx5IG1hcmsgdGhlIGRlZmluaXRpb24gYXMgc3RhdGljLgoJKGZpbmlzaF9mdW5jdGlvbik6IENhbGwgcGVybWFuZW50X2FsbG9jYXRpb24sIGp1c3Qgc28KCXRoYXQgdGhlIG1pZGRsZS1lbmQgc2VlcyB0aGUgb2JzdGFja3MgaXQgZXhwZWN0cy4KCShtYXJrX2NwX2Z1bmN0aW9uX2NvbnRleHQpOiBMaWtld2lzZS4KCSogaW5pdC5jIChidWlsZF9uZXcpOiBEb24ndCB1c2UgbWluX3RyZWVfY29ucy4KCSogbGV4LmMgKHBlcm1hbmVudF9vYnN0YWNrKTogRG9uJ3QgZGVjbGFyZS4KCShjdXJyZW50X29ic3RhY2ssIHNhdmVhYmxlX29ic3RhY2spOiBMaWtld2lzZS4KCSogc3Bldy5jIChjdXJyZW50X29ic3RhY2ssIHNhdmVhYmxlX29ic3RhY2spOiBMaWtld2lzZS4KCSogdHJlZS5jIChjdXJyZW50X29ic3RhY2ssIHNhdmVhYmxlX29ic3RhY2spOiBMaWtld2lzZS4KCShzY3JhdGNoX292bF9jb25zKTogUmVtb3ZlLgoJKGJ1aWxkX21pbl9udCk6IERvbid0IG1lc3Mgd2l0aCBvYnN0YWNrcy4KCShidWlsZF9taW4pOiBMaWtld2lzZS4KCShtaW5fdHJlZV9jb25zKTogUmVtb3ZlCgkqIHR5cGVjay5jIChidWlsZF9jb21wb25lbnRfcmVmKTogRG9uJ3QgdXNlIHNjcmF0Y2hfb3ZsX2NvbnMuCgkoYnVpbGRfeF9mdW5jdGlvbl9jYWxsKTogTGlrZXdpc2UuCgkoYnVpbGRfY19jYXN0KTogRG9uJ3QgdXNlIG1pbl90cmVlX2NvbnMuCgkKMTk5OS0xMS0yOSAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIHB0LmMgKHRzdWJzdF9kZWNsKTogUm9idXN0aWZ5LgoKMTk5OS0xMS0yNyAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGRlY2wyLmMgKGZpbmlzaF9maWxlKTogQ2FsbCBleHBhbmRfYm9keSBmb3IgaW5saW5lIGZ1bmN0aW9ucwoJdGhhdCB3aWxsIGJlIHdyaXR0ZW4gb3V0IGJ1dCB0aGF0IGRvIG5vdCB5ZXQgaGF2ZSBSVEwuCgkqIHNlbWFudGljcy5jIChleHBhbmRfYm9keSk6IERvIG5vdCBnZW5lcmF0ZSBSVEwgRm9yIGlubGluZQoJZnVuY3Rpb25zIHRoYXQgZG8gbm90IHlldCBuZWVkIHRvIGJlIHdyaXR0ZW4gb3V0LgoKMTk5OS0xMS0yNSAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIE1ha2UtbGFuZy5pbiAoQ1hYX1NSQ1MpOiBBZGQgb3B0aW1pemUuYy4gIAoJKiBNYWtlZmlsZS5pbiAoQ1hYX09CSlMpOiBBZGQgb3B0aW1pemUuby4KCShDWFhfVFJFRV9IKTogQWRkIHNwbGF5LXRyZWUuaCwgc3lzdGVtLmgsIGFuZCAkKENPTkZJR19IKS4KCShzcGV3Lm8sIGxleC5vLCBkZWNsLm8sIGRlY2wyLm8sIHR5cGVjazIubywgdHlwZWNrLm8pOiBBZGp1c3QuCgkoY2xhc3MubywgY2FsbC5vLCBmcmllbmQubywgaW5pdC5vLCBtZXRob2QubywgY3Z0Lm8pOiBMaWtld2lzZS4KCShzZWFyY2gubywgdHJlZS5vLCBwdHJlZS5vLCBydHRpLm8sIGV4Y2VwdC5vLCBleHByLm8pOiBMaWtld2lzZS4KCSh4cmVmLm8sIHB0Lm8sIGVycm9yLm8sIGVycmZuLm8sIHJlcG8ubywgc2VtYW50aWNzLm8pOiBMaWtld2lzZS4KCShkdW1wLm8pOiBMaWtld2lzZS4KCShvcHRpbWl6ZS5vKTogTmV3IHRhcmdldC4gIAoJKiBjbGFzcy5jOiBEb24ndCBpbmNsdWRlIHNwbGF5LXRyZWUuaC4KCSogY3AtdHJlZS5kZWYgKENUT1JfQ09NUExFVEUpOiBSZW5hbWUgdG8gQ1RPUl9TVE1ULiAgCgkqIGNwLXRyZWUuaDogSW5jbHVkZSBzcGxheS10cmVlLmguCgkoREVDTF9VTklOTElOQUJMRSk6IE5ldyBtYWNyby4KCShDVE9SX0JFR0lOX1AsIENUT1JfRU5EX1ApOiBOZXcgbWFjcm9zLgoJKGZsYWdfaW5saW5lX3RyZWVzKTogTmV3IHZhcmlhYmxlLgoJKGxvY2FsX3ZhcmlhYmxlX3ApOiBOZXcgZnVuY3Rpb24uCgkobm9uc3RhdGljX2xvY2FsX2RlY2xfcCk6IExpa2V3aXNlLgoJKG9wdGltaXplX2Z1bmN0aW9uKTogTGlrZXdpc2UuCgkoY3BsdXNfdW5zYXZlX2V4cHJfbm93KTogUmVtb3ZlLgoJKGNvcHlfdHJlZV9yKTogRGVjbGFyZS4KCShyZW1hcF9zYXZlX2V4cHIpOiBMaWtld2lzZS4gIAoJKiBkZWNsLmMgKGxvY2FsX3ZhcmlhYmxlX3ApOiBEb24ndAoJbWFrZSBpdCBzdGF0aWMuCgkobG9jYWxfdmFyaWFibGVfcF93YWxrZm4pOiBOZXcgZnVuY3Rpb24uCgkobWFrZV9ydGxfZm9yX2xvY2FsX3N0YXRpYyk6IFJlbW92ZSBjb2RlIHRvIHRyeSB0byBhdm9pZCB3cml0aW5nCglvdXQgc3RhdGljIGNvbnN0YW50cy4KCShlbWl0X2xvY2FsX3Zhcik6IEZpeCBpbmRlbnRhdGlvbi4KCShub25zdGF0aWNfbG9jYWxfZGVjbF9wKTogTmV3IGZ1bmN0aW9uLgoJKGNoZWNrX2RlZmF1bHRfYXJndW1lbnQpOiBVc2UgbG9jYWxfdmFyaWFibGVfcF93YWxrZm4sIG5vdAoJbG9jYWxfdmFyaWFibGVfcCwgd2hlbiB3YWxraW5nIHRoZSB0cmVlLgoJKHN0YXJ0X2Z1bmN0aW9uKTogU2V0IHRoZSBERUNMX0NPTlRFWFQgZm9yIGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkCglsYWJlbHMuCgkoZmluaXNoX2NvbnN0cnVjdG9yX2JvZHkpOiBVc2UgQ1RPUl9TVE1UIHRvIG1hcmsgdGhlIGVuZCBvZiBhCgljb25zdHJ1Y3Rvci4gIAoJKiBkZWNsMi5jOiBEb24ndCBpbmNsdWRlIHNwbGF5LXRyZWUuaC4KCShmbGFnX2lubGluZV90cmVlcyk6IERlZmluZS4gIAoJKiBkdW1wLmM6IERvbid0IGluY2x1ZGUKCXNwbGF5LXRyZWUuaC4gIAoJKiBleGNlcHQuYyAoZXhwYW5kX2VuZF9jYXRjaF9ibG9jayk6IEZpeCBjb21tZW50IGZvcm1hdHRpbmcuCgkoZXhwYW5kX2VuZF9laF9zcGVjKTogU2V0IERFQ0xfQ09OVEVYVCBvbiB0ZW1wb3JhcnkgdmFyaWFibGVzLgoJKGV4cGFuZF90aHJvdyk6IFRpZHkgY29tbWVudC4gIAoJKiBpbml0LmMgKGJ1aWxkX3ZlY19kZWxldGVfMSk6IFVzZSBjcmVhdGVfdGVtcG9yYXJ5X3Zhci4gIAoJKiBsZXguYyAoY3BsdXNfdHJlZV9jb2RlX3R5cGUpOiBNYWtlIGl0IHN0YXRpYy4KCShjcGx1c190cmVlX2NvZGVfbGVuZ3RoKTogTGlrZXdpc2UuCgkoY3BsdXNfdHJlZV9jb2RlX25hbWUpOiBMaWtld2lzZS4gIAoJKiBvcHRpbWl6ZS5jOiBOZXcgZmlsZS4gIAoJKiBzZW1hbnRpY3MuYyAoZmluaXNoX2dvdG9fc3RtdCk6IFNldCBERUNMX1VOTElOQUJMRSBmb3IgZnVuY3Rpb25zCgl3aXRoIGNvbXB1dGVkIGdvdG9zLgoJKHNldHVwX3Z0YmxfcHRyKTogTWFyayB0aGUgYmVnaW5uaW5ncyBvZiBjb25zdHJ1Y3RvcnMgd2l0aAoJQ1RPUl9TVE1ULgoJKGV4cGFuZF9zdG10KTogSGFuZGxlIENUT1JfU1RNVCwgbm90IENUT1JfQ09NUExFVEUuCgkoZXhwYW5kX2JvZHkpOiBDYWxsIG9wdGltaXplX2Z1bmN0aW9uLiAgU2F2ZSBib2RpZXMgaWYgd2UncmUgZG9pbmcKCWlubGluaW5nIG9uIHRyZWVzLgoJKiB0cmVlLmM6IERvbid0IGluY2x1ZGUgc3BsYXktdHJlZS5oLiAgSW5jbHVkZSBpbnNuLWNvbmZpZy5oIGFuZAoJaW50ZWdyYXRlLmguCgkoY29weV90cmVlX3IpOiBNYWtlIGl0IHB1YmxpYy4KCShzdGF0ZW1lbnRfY29kZV9wKTogTmV3IGZ1bmN0aW9uLgoJKG1hcmtfbG9jYWxfZm9yX3JlbWFwX3IpOiBMaWtld2lzZS4KCShjcF91c2F2ZV9yKTogTGlrZXdpc2UuCgkoY3BfdW5zYXZlKTogTGlrZXdpc2UuCgkoYnVpbGRfY3BsdXNfbmV3KTogU2V0IERFQ0xfQ09OVEVYVCBmb3IgdGVtcG9yYXJ5IHZhcmlhYmxlcy4KCSh3YWxrX3RyZWUpOiBXYWxrIGludG8gYHMnIGNsYXNzIG5vZGVzLiAgV2FsayBzdGF0ZW1lbnQgY2hhaW5zLgoJKGNvcHlfdHJlZV9yKTogSGFuZGxlICdzJyBjbGFzcyBub2Rlcy4gIFJlc3RvcmUgY2hhaW5zIGZvcgoJc3RhdGVtZW50cy4gIE51bGxpZnkgc2NvcGVzLiAgRG9uJ3QgY29weSB0eXBlcy4KCShpbml0X3RyZWUpOiBTZXQgbGFuZ191bnNhdmUgdG8gY3BfdW5zYXZlLgoJKHJlbWFwX3NhdmVfZXhwcik6IERlZmluZS4KCSogaXIudGV4aTogRG9jdW1lbnQgQ1RPUl9TVE1ULgoJCjE5OTktMTEtMjQgIEphc29uIE1lcnJpbGwgIDxqYXNvbkBjYXNleS5jeWdudXMuY29tPgoKCSogc2VhcmNoLmMgKG5vdGVfZGVidWdfaW5mb19uZWVkZWQpOiBEbyBwZXJmb3JtIHRoaXMgb3B0aW1pemF0aW9uCglmb3IgZHdhcmYyLiAgCgkobWF5YmVfc3VwcHJlc3NfZGVidWdfaW5mbyk6IExpa2V3aXNlLiAgU3RhcnQgYnkgY2xlYXJpbmcKCVRZUEVfREVDTF9TVVBQUkVTU19ERUJVRy4KCjE5OTktMTEtMjQgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBwdC5jICh0c3Vic3RfZGVjbCk6IENvcHkgVFJFRV9BU01fV1JJVFRFTiBmb3IgVkFSX0RFQ0xzLgoKCSogZGVjbDIuYyAoZmluaXNoX3Z0YWJsZV92YXJkZWNsKTogRG9uJ3QgcHJ1bmUgdnRhYmxlcyBoZXJlLgoKMTk5OS0xMS0yMyAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogZGVjbC5jIChwdXNoZGVjbCwgZ3Jva2RlY2xhcmF0b3IpOiBEb24ndCBjYWxsIGEgdmFyaWFkaWMKCWZ1bmN0aW9uIHdpdGggYSBub24tbGl0ZXJhbCBmb3JtYXQgc3RyaW5nLgoKCSogbGV4LmMgKGRvX2lkZW50aWZpZXIpOiBMaWtld2lzZS4KCgkqIHR5cGVjay5jIChidWlsZF91bmFyeV9vcCk6IExpa2V3aXNlLgoKMTk5OS0xMS0yMyAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGNwLXRyZWUuaCAoREVDTF9ORUVERURfUCk6IFR3ZWFrIHRvIG1hdGNoIGRvY3VtZW50YXRpb24uCgoxOTk5LTExLTIyICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogY3AtdHJlZS5kZWYgKENUT1JfQ09NUExFVEUpOiBOZXcgdHJlZSBub2RlLgoJKiBkZWNsLmMgKGZpbmlzaF9jb25zdHJ1Y3Rvcl9ib2R5KTogQWRkIGl0LCB0byBtYXJrIHRoZSBlbmQgb2YgdGhlCgljb25zdHJ1Y3Rvci4KCShmaW5pc2hfZnVuY3Rpb24pOiBEb24ndCBjYWxsIGVuZF9wcm90ZWN0X3BhcnRpYWxzIGhlcmUuCgkqIGlyLnRleGkgKENUT1JfQ09NUExFVEUpOiBEb2N1bWVudCBpdC4KCSogc2VtYW50aWNzLmMgKGV4cGFuZF9zdG10KTogSGFuZGxlIGl0LgoJCgkqIGNwLXRyZWUuZGVmIChGVU5DVElPTl9OQU1FKTogTmV3IHRyZWUgbm9kZS4KCSogY3AtdHJlZS5oIChjdXJyZW50X2Z1bmN0aW9uX25hbWVfZGVjbGFyZWQpOiBUd2VhayBkb2N1bWVudGF0aW9uLgoJKGxhbmdfZGVjbF9mbGFncyk6IEFkZCBwcmV0dHlfZnVuY3Rpb25fcCwgYWRqdXN0IGR1bW15LgoJKERFQ0xfUFJFVFRZX0ZVTkNUSU9OX1ApOiBOZXcgbWFjcm8uCgkqIGRlY2wuYyAoY3BfZmluaXNoX2RlY2wpOiBIYW5kbGUgZGVjbGFyYXRpb25zIG9mIF9fRlVOQ1RJT05fXywKCWV0Yy4sIGluIGEgdGVtcGxhdGUgZnVuY3Rpb24uICBVc2UgYXRfZnVuY3Rpb25fc2NvcGVfcCBpbnN0ZWFkIG9mCglleHBhbmRpbmcgaXQgaW5saW5lLgoJKiBwdC5jICh0c3Vic3RfZGVjbCk6IEhhbmRsZSBERUNMX1BSRVRUWV9GVU5DVElPTl9QIGRlY2xhcmF0aW9ucwoJc3BlY2lhbGx5LgoJKHRzdWJzdCk6IEhhbmRsZSBGVU5DVElPTl9OQU1FLgoJKHRzdWJzdF9jb3B5KTogTGlrZXdpc2UuCgkoaW5zdGFudGlhdGVfZGVjbCk6IFByZXZlbnQgcmVkZWNsYXJhdGlvbnMgb2YgX19QUkVUVFlfRlVOQ1RJT05fXywKCWV0Yy4gaW4gaW5zdGFudGlhdGlvbi4KCSogc2VtYW50aWNzLmMgKGJlZ2luX2NvbXBvdW5kX3N0bXQpOiBEZWNsYXJlIF9fRlVOQ1RJT05fXywgZXRjLiwKCWV2ZW4gaW4gdGVtcGxhdGUgZnVuY3Rpb25zLgoJKHNldHVwX3Z0YmxfcHRyKTogRG9uJ3QgZGVjbGFyZSBfX1BSRVRUWV9GVU5DVElPTiBpbiB0aGUKCWNvbmRpdGlvbmFsIHNjb3BlIGF0IHRoZSB0b3Agb2YgYSBkZXN0cnVjdG9yLgoJCgkqIGVycm9yLmMgKGR1bXBfZnVuY3Rpb25fZGVjbCk6IFVzZSBgWyB3aXRoIC4uLiBdJyBzeW50YXggZm9yCglzcGVjaWFsaXphdGlvbnMgdG9vLgoKMTk5OS0xMS0yMiAgTmF0aGFuIFNpZHdlbGwgIDxuYXRoYW5AYWNtLm9yZz4KCgkqIHNlbWFudGljcy5jIChmaW5pc2hfdW5hcnlfb3BfZXhwcik6IE9ubHkgc2V0IFRSRUVfTkVHQVRFRF9JTlQKCXdoZW4gYWN0dWFsbHkgbmVnYXRpdmUuCgoJKiB0eXBlY2suYyAoY29udmVydF9mb3JfYXNzaWdubWVudCk6IEV4cGFuZCBjb21tZW50IGFib3V0CglzdHJhbmdlIE5VTEwgY2hlY2ssIG1vdmVkIGZyb20gLi4uCgkoY29udmVydF9mb3JfaW5pdGlhbGl6YXRpb24pOiAuLi4gaGVyZS4gUmVtb3ZlIHVubmVlZGVkCgljb2RlLgoKMTk5OS0xMS0yMSAgQWxleGFuZHJlIE9saXZhICA8b2xpdmFAbHNkLmljLnVuaWNhbXAuYnI+CgoJKiBjcC10cmVlLmggKGJ1aWxkX3ZlY19kZWxldGUpOiBSZW1vdmUgYGF1dG9fZGVsZXRlJyBhcmd1bWVudC4KCSogaW5pdC5jIChidWlsZF92ZWNfZGVsZXRlLCBidWlsZF92ZWNfZGVsZXRlXzEpOiBMaWtld2lzZS4KCUFsd2F5cyBkZXN0cnVjdCB2aXJ0dWFsIGJhc2VzIG9mIGFycmF5IGNvbXBvbmVudHMsIGJ1dCBuZXZlcgoJZGVsZXRlIHRoZW0uCgkoYnVpbGRfdmVjX2luaXQpOiBBZGp1c3QgaW52b2NhdGlvbnMuCgkoYnVpbGRfZGVsZXRlKTogTGlrZXdpc2UuCgkqIGRlY2wyLmMgKGRlbGV0ZV9zYW5pdHkpOiBMaWtld2lzZS4KCjE5OTktMTEtMTkgIE5hdGhhbiBTaWR3ZWxsICA8bmF0aGFuQGFjbS5vcmc+CgoJKiBjcC10cmVlLmggKGdyb2tfbWV0aG9kX3F1YWxzKTogUmV0dXJuIHRoaXMgcG9pbnRlciBxdWFsaWZpZXJzLgoJKiBkZWNsLmMgKGdyb2tkZWNsYXJhdG9yKTogQWRqdXN0IGNhbGxzIHRvIGdyb2tfbWV0aG9kX3F1YWxzLgoJKiBkZWNsMi5jIChncm9rX21ldGhvZF9xdWFscyk6IEFjY2VwdCBgcmVzdHJpY3QnIGFzIGFwcGx5aW5nIHRvCgl0aGUgb2JqZWN0IHBvaW50ZXIuIFJldHVybiBzdWNoIHF1YWxpZmllcnMuCgkoZ3Jva2NsYXNzZm4pOiBBcHBseSB0aGlzIHBvaW50ZXIgcXVhbGlmaWVycy4gQ2xlYW51cCB1bnVzZWQKCXZhcmlhYmxlcy4KCjE5OTktMTEtMTggIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBleGNlcHQuYyAoZXhwYW5kX2VuZF9jYXRjaF9ibG9jayk6IEZpeCB0eXBvLgoJKGV4cGFuZF9leGNlcHRpb25fYmxvY2tzKTogU2ltcGxpZnkuICBEb24ndCBjYWxsCglleHBhbmRfbGVmdG92ZXJfY2xlYW51cHMuCgoxOTk5LTExLTE1ICBKYXNvbiBNZXJyaWxsICA8amFzb25AY2FzZXkuY3lnbnVzLmNvbT4KCgkqIGNwLXRyZWUuaCwgZGVjbC5jIChjb21wdXRlX2FycmF5X2luZGV4X3R5cGUpOiBNYWtlIG5vbnN0YXRpYy4KCSogcHQuYyAodHN1YnN0LCBjYXNlIElOVEVHRVJfVFlQRSk6IENhbGwgaXQuICAKCUNoZWNrIHVzZXNfdGVtcGxhdGVfcGFybXMuCgoJKiBjbGFzcy5jIChmaW5pc2hfc3RydWN0KTogSWYgd2UncmUgYSBsb2NhbCBjbGFzcyBpbiBhIHRlbXBsYXRlCglmdW5jdGlvbiwgYWRkIGEgVEFHX0RFRk4uCgkqIHB0LmMgKGxvb2t1cF90ZW1wbGF0ZV9jbGFzcyk6IElmIHRoaXMgaXMgYSBsb2NhbCBjbGFzcyBpbiBhCgl0ZW1wbGF0ZSBmdW5jdGlvbiwgY2FsbCBwdXNodGFnLgoJKHRzdWJzdF9leHByLCBjYXNlIFRBR19ERUZOKTogSGFuZGxlIGNsYXNzZXMsIHRvby4KCglFbWl0IGRlYnVnIGluZm8gd2l0aCB0aGUgdnRhYmxlLgoJKiBzZWFyY2guYyAobWF5YmVfc3VwcHJlc3NfZGVidWdfaW5mbyk6IE5ldyBmdW5jdGlvbi4uLgoJKiBjbGFzcy5jIChmaW5pc2hfc3RydWN0XzEpOiAuLi5zcGxpdCBvdXQgZnJvbSBoZXJlLgoJKiBjcC10cmVlLmg6IERlY2xhcmUgaXQuCgkqIGRlY2wyLmMgKGZpbmlzaF92dGFibGVfdmFyZGVjbCk6IE92ZXJyaWRlIFRZUEVfREVDTF9TVVBQUkVTU19ERUJVRwoJaWYgd2UncmUgd3JpdGluZyBvdXQgdGhlIHZ0YWJsZS4KCSogZGVjbC5jLCBzZWFyY2guYyAoZGZzX2RlYnVnX21hcmssIGRmc19kZWJ1Z191bm1hcmtlZF9wLCAKCW5vdGVfZGVidWdfaW5mb19uZWVkZWQpOiAjaWYgMCBvdXQuCgoxOTk5LTExLTE0ICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogY3AtdHJlZS5oIChERUNMX0xPQ0FMX0ZVQ05USU9OX1ApOiBOZXcgbWFjcm8uCgkqIGNhbGwuYyAoZXF1YWxfZnVuY3Rpb25zKTogVXNlIERFQ0xfTE9DQUxfRlVDTlRJT05fUCwgbm90CglUUkVFX1BFUk1BTkVOVC4KCSogZGVjbC5jIChwdXNoZGVjbCk6IFNldCBERUNMX0xPQ0FMX0ZVTkNUSU9OX1AuCgkqIGRlY2wyLmMgKGxvb2t1cF9hcmdfZGVwZW5kZW50KTogVXNlIGl0LgoJCgkqIGNwLXRyZWUuaCAoY3BfZmluaXNoX2RlY2wpOiBDaGFuZ2UgcHJvdG90eXBlLgoJKGZpbmlzaF9zdGF0aWNfZGF0YV9tZW1iZXJfZGVjbCk6IExpa2V3aXNlLgoJKHB1c2hfcGVybWFuZW50X29ic3RhY2spOiBSZW1vdmUgZGVjbGFyYXRpb24uCgkocHVzaF9leHByZXNzaW9uX29ic3RhY2spOiBMaWtld2lzZS4KCShwdXNoX3NjcmF0Y2hfb2JzdGFjayk6IExpa2V3aXNlLgoJKERFQ0xfVEVNUExBVEVfUEFSTV9QKTogUm9idXN0aWZ5LgoJKFNFVF9ERUNMX1RFTVBMQVRFX1BBUk1fUCk6IE5ldyBtYWNyby4KCSogY2xhc3MuYyAoYWRkX21ldGhvZCk6IERvbid0IG1hbmlwdWxhdGUgb2JzdGFja3MuCgkoZmluaXNoX3Z0YmxzKTogTGlrZXdpc2UuCgkqIGN2dC5jIChidWlsZF91cF9yZWZlcmVuY2UpOiBBZGp1c3QgY2FsbHMgdG8gY3BfZmluaXNoX2RlY2wuCgkqIGRlY2wuYyAoYmluZGluZ19mb3JfbmFtZSk6IERvbid0IG1hbmlwdWxhdGUgb2JzdGFja3MuCgkobWF5YmVfcHVzaF90b190b3BfbGV2ZWwpOiBMaWtld2lzZS4KCShwb3BfZnJvbV90b3BfbGV2ZWwpOiBMaWtld2lzZS4KCShkdXBsaWNhdGVfZGVjbHMpOiBMaWtld2lzZS4KCShwdXNoZGVjbCk6IExpa2V3aXNlLgoJKGltcGxpY2l0bHlfZGVjbGFyZSk6IExpa2V3aXNlLgoJKGJ1aWxkX3R5cGVuYW1lX3R5cGUpOiBMaWtld2lzZS4KCShzdGFydF9kZWNsKTogTGlrZXdpc2UuCgkoY3BfZmluaXNoX2RlY2wpOiBMaWtld2lzZS4KCShmaW5pc2hfZGVjbCk6IExpa2V3aXNlLgoJKGRlc3Ryb3lfbG9jYWxfc3RhdGljKTogTGlrZXdpc2UuCgkoZXhwYW5kX3N0YXRpY19pbml0KTogTGlrZXdpc2UuCgkoY29tcGxldGVfYXJyYXlfdHlwZSk6IExpa2V3aXNlLgoJKGdyb2t2YXJkZWNsKTogTGlrZXdpc2UuCgkoYnVpbGRfcHRybWVtZm5jX3R5cGUpOiBMaWtld2lzZS4KCShncm9rZGVjbGFyYXRvcik6IExpa2V3aXNlLgoJKHhyZWZfdGFnKTogTGlrZXdpc2UuCgkoeHJlZl9iYXNldHlwZXMpOiBMaWtld2lzZS4KCShzdGFydF9lbnVtKTogTGlrZXdpc2UuCgkoZmluaXNoX2VudW0pOiBMaWtld2lzZS4KCShzdGFydF9mdW5jdGlvbik6IExpa2V3aXNlLgoJKGZpbmlzaF9mdW5jdGlvbik6IExpa2V3aXNlLgoJKHN0YXJ0X21ldGhvZCk6IEFkanVzdCBjYWxsIHRvIGNwX2ZpbmlzaF9kZWNsLgoJKiBkZWNsMi5jIChmaW5pc2hfc3RhdGljX2RhdGFfbWVtYmVyX2RlY2wpOiBEb24ndCBtYW5pcHVsYXRlCglvYnN0YWNrcy4KCShncm9rZmllbGQpOiBMaWtld2lzZS4KCShncm9rYml0ZmllbGQpOiBMaWtld2lzZS4KCShnZXRfdGVtcF9uYW1lKTogTGlrZXdpc2UuCgkoZ2V0X3NlbnRyeSk6IExpa2V3aXNlLgoJKGZuaXNoX2ZpbGUpOiBMaWtld2lzZS4KCShsb29rdXBfYXJnX2RlcGVuZGVudCk6IExpa2V3aXNlLgoJKiBleGNlcHQuYyAoY2FsbF9laF9pbmZvKTogTGlrZXdpc2UuCgkocHVzaF9laF9pbmZvKTogTGlrZXdpc2UuCgkoZG9fcG9wX2V4Y2VwdGlvbik6IExpa2V3aXNlLgoJKGluaXRpYWxpemVfaGFuZGxlcl9wYXJtKTogTGlrZXdpc2UuCgkoZXhwYW5kX2VuZF9laF9zcGVjKTogTGlrZXdpc2UuCgkoYWxsb2NfZWhfb2JqZWN0KTogTGlrZXdpc2UuCgkoZXhwYW5kX3Rocm93KTogTGlrZXdpc2UuCgkqIGV4cHIuYyAoZXh0cmFjdF9zY2FsYXJfaW5pdCk6IExpa2V3aXNlLgoJKiBpbml0LmMgKGJ1aWxkX2phdmFfY2xhc3NfcmVmKTogTGlrZXdpc2UuCgkqIGxleC5jIChnZXRfdGltZV9pZGVudGlmaWVyKTogTGlrZXdpc2UuCgkoc25hcmZfZGVmYXJnKTogTGlrZXdpc2UuCgkoYWRkX2RlZmFyZ19mbik6IExpa2V3aXNlLgoJKGlzX2dsb2JhbCk6IFNpbXBsaWZ5LgoJKGRvX2lkZW50aWZpZXIpOiBEb24ndCBjaGVjayBUUkVFX1BFUk1BTkVOVC4KCSogbWV0aG9kLmMgKGVtaXRfdGh1bmspOiBEb24ndCBtYW5pcHVsYXRlIG9ic3RhY2tzLgoJKiBwYXJzZS55IChjb25kaXRpb24pOiBBZGp1c3QgY2FsbCB0byBjcF9maW5pc2hfZGVjbC4KCShwcmltYXJ5KTogTGlrZXdpc2UuCgkoaW5pdGRjbCk6IExpa2V3aXNlLgoJKGluaXRkY2wwX2lubmFyZHMpOiBMaWtld2lzZS4KCShub21vZHNfaW5pdGRjbDApOiBMaWtld2lzZS4KCSogcHQuYyAocHVzaF9pbmxpbmVfdGVtcGxhdGVfcGFybXNfcmVjdXJzaXZlKTogVXNlCglTRVRfREVDTF9URU1QTEFURV9QQVJNX1AuCgkocHJvY2Vzc190ZW1wbGF0ZV9wYXJtKTogTGlrZXdpc2UuCgkobG9va3VwX3RlbXBsYXRlX2NsYXNzKTogRG9uJ3QgbWFuaXB1bGF0ZSBvYnN0YWNrcy4KCShpbnN0YW50aWF0ZV9jbGFzc190ZW1wbGF0ZSk6IEFkanVzdCBjYWxsIHRvCglmaW5pc2hfc3RhdGljX2RhdGFfbWVtYmVyX2RlY2wuCgkodHN1YnN0X2RlY2wpOiBEb24ndCBtYW5pcHVsYXRlIG9ic3RhY2tzLgoJKHRzdWJzdF9leHByKTogTGlrZXdpc2UuCgkoaW5zdGFudGlhdGVfdGVtcGxhdGUpOiBMaWtld2lzZS4KCShpbnN0YW50aWF0ZV9kZWNsKTogQWRqdXN0IGNhbGxzIHRvIGNwX2ZpbmlzaF9kZWNsLgoJKiBydHRpLmMgKGNhbGxfdm9pZF9mbik6IERvbid0IG1hbmlwdWxhdGUgb2JzdGFja3MuCgkoZ2V0X3RpbmZvX3Zhcik6IExpa2V3aXNlLgoJKGdldF90aW5mb19mbl91bnVzZWQpOiBMaWtld2lzZS4KCShidWlsZF9keW5hbWljX2Nhc3RfMSk6IExpa2V3aXNlLgoJKGV4cGFuZF9zaV9kZXNjKTogTGlrZXdpc2UuCgkoZXhwYW5kX2NsYXNzX2Rlc2MpOiBMaWtld2lzZS4KCShleHBhbmRfcHRyX2Rlc2MpOiBMaWtld2lzZS4KCShleHBhbmRfYXR0cl9kZXNjKTogTGlrZXdpc2UuCgkoZXhwYW5kX2dlbmVyaWNfZGVzYyk6IExpa2V3aXNlLgoJKHN5bnRoZXNpemVfdGluZm9fZm4pOiBMaWtld2lzZS4KCSogc2VhcmNoLmMgKGV4cGFuZF91cGNhc3RfZml4dXBzKTogTGlrZXdpc2UuCgkqIHNlbWFudGljcy5jIChmaW5pc2hfYXNtX3N0bXQpOiBMaWtld2lzZS4KCShmaW5pc2hfbmFtZWRfcmV0dXJuX3ZhbHVlKTogTGlrZXdpc2UuCgkoYmVnaW5fY2xhc3NfZGVmaW5pdGlvbik6IExpa2V3aXNlLgoJKGZpbmlzaF9jbGFzc19kZWZpbml0aW9uKTogTGlrZXdpc2UuCgkoZmluaXNoX3R5cGVvZik6IExpa2V3aXNlLgoJKiB0cmVlLmMgKGJ1aWxkX2NwbHVzX21ldGhvZF90eXBlKTogTGlrZXdpc2UuCgkocmV2ZXJzZV9wYXRoKTogTGlrZXdpc2UuCgkoY29weV90ZW1wbGF0ZV90ZW1wbGF0ZV9wYXJtKTogTGlrZXdpc2UuCgkoYnVpbGRfZXhwcl9wdHJfd3JhcHBlcik6IExpa2V3aXNlLgoJKHB1c2hfZXhwcmVzc2lvbl9vYnN0YWNrKTogUmVtb3ZlLgoJKHB1c2hfcGVybWFuZW50X29ic3RhY2spOiBMaWtld2lzZS4KCSogdHlwZWNrLmMgKG1hcmtfYWRkcmVzc2FibGUpOiBMaWtld2lzZS4KCQoxOTk5LTExLTEzICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogY2FsbC5jIChidWlsZF9jb25kaXRpb25hbF9leHByKTogVXNlIGJ1aWxkX3RhcmdldF9leHByX3dpdGhfdHlwZS4KCShjb252ZXJ0X2xpa2UpOiBMaWtld2lzZS4KCShidWlsZF9vdmVyX2NhbGwpOiBMaWtld2lzZS4KCSogY3AtdHJlZS5oIChidWlsZF90YXJnZXRfZXhwcik6IFJlbW92ZS4KCShidWlsZF90YXJnZXRfZXhwcl93aXRoX3R5cGUpOiBOZXcgZnVuY3Rpb24uCgkqIGN2dC5jIChidWlsZF91cF9yZWZlcmVuY2UpOiBVc2UgZ2V0X3RhcmdldF9leHByLgoJKiBkZWNsLmMgKGJ1aWxkX3RhcmdldF9leHByKTogTW92ZSB0byAuLi4KCSogdHJlZS5jIChidWlsZF90YXJnZXRfZXhwcik6IEhlcmUuICBNYWtlIGl0IHN0YXRpYy4KCShidWlsZF90YXJnZXRfZXhwcl93aXRoX3R5cGUpOiBOZXcgZnVuY3Rpb24uICBTZXQgREVDTF9DT05URVhUIG9uCgl0aGUgdGVtcG9yYXJ5IFZBUl9ERUNMcy4KCShnZXRfdGFyZ2V0X2V4cHIpOiBVc2UgaXQuCgoxOTk5LTExLTEzICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBkZWNsLmMgKGR1cGxpY2F0ZV9kZWNscyk6IFByb3BhZ2F0ZSBERUNMX0RFRkVSX09VVFBVVC4KCSogZGVjbDIuYyAoY29tZGF0X2xpbmthZ2UpOiBTZXQgREVDTF9ERUZFUl9PVVRQVVQuCgkqIHJ0dGkuYyAoZ2V0X3RpbmZvX2ZuX3VudXNlZCk6IFNwbGl0IG91dCBmcm9tIGdldF90aW5mb19mbi4KCSogY2xhc3MuYyAoc2V0X3J0dGlfZW50cnkpOiBVc2UgaXQuCgoxOTk5LTExLTEyICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogZGVjbC5jIChjcGx1c19leHBhbmRfZXhwcl9zdG10KTogRG9uJ3QgY2FsbCBicmVha19vdXRfY2xlYW51cHMKCWhlcmUuCgkqIHNlbWFudGljcy5jIChmaW5pc2hfZXhwcl9zdG10KTogQ2FsbCBpdCBoZXJlIGluc3RlYWQuICBNb3ZlCglkZWZhdWx0X2NvbnZlcnNpb24gbG9naWMgdG8gc2VtYW50aWMtYW5hbHlzaXMgdGltZS4KCjE5OTktMTEtMTIgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIHJ0dGkuYyAoc3ludGhlc2l6ZV90aW5mb19mbik6IFNldCBERUNMX0RFRkVSX09VVFBVVC4KCkZyaSBOb3YgMTIgMTI6NTY6MzIgTVNUIDE5OTkJRGllZ28gTm92aWxsbyA8ZG5vdmlsbG9AY3lnbnVzLmNvbT4KCgkqIGluaXQuYyAoaW5pdF9pbml0X3Byb2Nlc3NpbmcpOiBSZS1pbnN0YXRlZCBOb3YgMTEgcGF0Y2ggYWZ0ZXIKCWFwcHJvdmFsLgoKRnJpIE5vdiAxMiAxMDo0MjowMiBNU1QgMTk5OQlEaWVnbyBOb3ZpbGxvIDxkbm92aWxsb0BjeWdudXMuY29tPgoKCSogaW5pdC5jIChpbml0X2luaXRfcHJvY2Vzc2luZyk6IFVuZG8gcGF0Y2ggZnJvbSBOb3YgMTEsIDE5OTkuCglQYXRjaCBoYWQgbm90IGJlZW4gYXBwcm92ZWQgeWV0LgoKMTk5OS0xMS0xMiAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGRlY2wuYyAoY29tcHV0ZV9hcnJheV9pbmRleF90eXBlKTogTmV3IGZ1bmN0aW9uLCBzcGxpdCBvdXQgZnJvbQoJZ3Jva2RlY2xhcmF0b3IuCgkoY3JlYXRlX2FycmF5X3R5cGVfZm9yX2RlY2wpOiBMaWtld2lzZS4KCShncm9rZGVjbGFyYXRvcik6IFVzZSB0aGVtLgoKCSogc2VtYW50aWNzLmMgKGV4cGFuZF9zdG10KTogRG9uJ3Qgc3VzcGVuZF9tb21lbnRhcnkgb3IKCXJlc3VtZV9tb21lbnRhcnkuCgpUaHUgTm92IDExIDEyOjQyOjExIE1TVCAxOTk5CURpZWdvIE5vdmlsbG8gPGRub3ZpbGxvQGN5Z251cy5jb20+CgoJKiBpbml0LmMgKGluaXRfaW5pdF9wcm9jZXNzaW5nKTogSGVhZGVyIGluZm9ybWF0aW9uIGZvcgoJYXJyYXlzIGFsbG9jYXRlZCB2aWEgYG5ldycgc2hvdWxkIGhhdmUgdGhlIHNhbWUgYWxpZ25tZW50IHVzZWQgYnkKCW1hbGxvYy4KCjE5OTktMTEtMTAgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBlcnJvci5jIChkdW1wX2Z1bmN0aW9uX25hbWUpOiBEb24ndCBjcmFzaCBpZiBnaXZlbiBhIGZyaWVuZAoJcHNldWRvLWluc3RhbnRpYXRpb24uCgoJKiBjcC10cmVlLmggKGJ1aWxkX2VudW1lcmF0b3IpOiBDaGFuZ2UgcHJvdG90eXBlLgoJKiBkZWNsLmMgKGVudW1fbmV4dF92YWx1ZSk6IFJlbW92ZS4KCShlbnVtX292ZXJmbG93KTogTGlrZXdpc2UuCgkoaW5pdF9kZWNsX3Byb2Nlc3NpbmcpOiBEb24ndCByZWdpc3RlciBlbnVtX25leHRfdmFsdWUgYXMgYSByb290LgoJKHN0YXJ0X2VudW0pOiBDbGVhciBUWVBFX1ZBTFVFUyBmb3IgYSByZWRlZmluZWQgZW51bS4KCShmaW5pc2hfZW51bSk6IFJlc2V0IHRoZSB0eXBlIG9mIGVudW1lcmF0aW9uIGNvbnN0YW50cy4KCShidWlsZF9lbnVtZXJhdG9yKTogRml4IGluZGVudGF0aW9uLiAgRG9uJ3QgY29weSBDT05TVF9ERUNMcyB3aGVuCgl3ZSBkb24ndCBuZWVkIHRvLiAgTWFpbnRhaW4gdGhlIFRZUEVfVkFMVUVTIGxpc3QgYW5kIGxvb2sgdGhlcmUKCWZvciB0aGUgcHJldmlvdXNseSBkZWZpbmVkIGVudW1lcmF0aW9uIGNvbnN0YW50LiAgTGV0IGVudW1lcmF0aW9uCgljb25zdGFudHMgaGF2ZSB0aGUgdHlwZSBvZiB0aGVpciB2YWx1ZXMgdW50aWwgdGhlIGVudW1lcmF0aW9uIHR5cGUKCWlzIGNvbXBsZXRlLgoJKiBwYXJzZS55IChlbnVtbGlzdF9vcHQsIGVudW1saXN0LCBlbnVtZXJhdG9yKTogRG9uJ3QgcmV0dXJuIGEgdmFsdWUuCgkoc3RydWN0c3ApOiBBZGp1c3QuCgkqIHBhcnNlLmM6IFJlZ2VuZXJhdGVkLgoJKiBwdC5jICh0c3Vic3RfZW51bSk6IEFkanVzdCBhY2NvcmRpbmcgdG8gYnVpbGRfZW51bWVyYXRvciBjaGFuZ2VzLgoJCldlZCBOb3YgMTAgMTI6NDM6MjEgMTk5OSAgUGhpbGlwcGUgRGUgTXV5dGVyICA8cGhkbUBtYWNxZWwuYmU+CgkgICAgICAgICAgICAgICAgICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBjcC10cmVlLmg6IFRlc3QgYEdDQ19WRVJTSU9OJywgbm90IGBIQVZFX0dDQ19WRVJTSU9OJy4KCjE5OTktMTEtMDkgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjcC10cmVlLmggKGxhbmd1YWdlX2Z1bmN0aW9uKTogUmVtb3ZlIHhfbGFzdF9kdG9yX2luc24gYW5kCgl4X2xhc3RfcGFybV9jbGVhbnVwX2luc24uCgkqIGRlY2wuYyAobGFzdF9kdG9yX2luc24pOiBSZW1vdmUuCgkobGFzdF9wYXJtX2NsZWFudXBfaW5zbik6IExpa2V3aXNlLgoJKGV4cGFuZF9zdGFydF9lYXJseV90cnlfc3RtdHMpOiBEb24ndCBzZXQgdGhlbS4KCShzdG9yZV9wYXJtX2RlY2xzKTogTGlrZXdpc2UuCgkoc2F2ZV9mdW5jdGlvbl9kYXRhKTogT3Igc2F2ZSB0aGVtLgoJKG1hcmtfbGFuZ19mdW5jdGlvbik6IE9yIG1hcmsgdGhlbS4KCjE5OTktMTEtMDggIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBkZWNsLmMgKHN0b3JlX3Bhcm1fZGVjbHMpOiBHZW5lcmF0ZSBjbGVhbnVwIGNvZGUgYXQKCXNlbWFudGljLWFuYWx5c2lzIHRpbWUuICBEZXN0cm95IG9iamVjdHMgaW4gdGhlIGNvcnJlY3Qgb3JkZXIuCgoxOTk5LTExLTA3ICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogY3AtdHJlZS5oIChiZWdpbl9uZXdfcGxhY2VtZW50KTogUmVtb3ZlLgoJKGZpbmlzaF9uZXdfcGxhY2VtZW50KTogTGlrZXdpc2UuCgkqIGNsYXNzLmMgKGZpbmlzaF9zdHJ1Y3RfMSk6IERvbid0IHN1c3BlbmRfbW9tZW50YXJ5IG9yCglyZXN1bWVfbW9tZW50YXJ5LgoJKiBkZWNsLmMgKGdyb2tkZWNsYXJhdG9yKTogTGlrZXdpc2UuCgkobWF5YmVfYnVpbGRfY2xlYW51cF8xKTogTGlrZXdpc2UuCgkqIGV4Y2VwdC5jIChwdXNoX2VoX2NsZWFudXApOiBMaWtld2lzZS4KCShidWlsZF90ZXJtaW5hdGVfaGFuZGxlcik6IExpa2V3aXNlLgoJKiBpbml0LmMgKGJ1aWxkX25ld18xKTogTGlrZXdpc2UuCgkqIHBhcnNlLnkgKHBhcnNlX2RlY2wpOiBDaGFuZ2UgcHJvdG90eXBlLgoJKGluaXRkZWNscywgbm90eXBlX2luaXRkZWNscywgaW5pdGRjbCk6IERvbid0IHJldHVybiBpbnQuCgkoaW5pdGRjbDAsIG5vdHlwZV9pbml0ZGNsMCwgaW5pdGRjbDBfaW5uYXJkcyk6IExpa2V3aXNlLgoJKC5iZWdpbl9uZXdfcGxhY2VtZW50KTogUmVtb3ZlLgoJKC5maW5pc2hfbmV3X3BsYWNlbWVudCk6IExpa2V3aXNlLgoJKG5vbm1vbWVudGFyeV9leHByKTogTGlrZXdpc2UuCgkoc3VzcGVuZF9tb20pOiBMaWtld2lzZS4KCShjb25kaXRpb24pOiBEb24ndCBzdXNwZW5kX21vbWVudGFyeSwgcmVzdW1lX21vbWVudGFyeSwgb3Iga2VlcAoJdHJhY2sgb2YgbmVlZCB0byByZXN1bWUuCgkodW5hcnlfZXhwcik6IExpa2V3aXNlLgoJKG5ld19wbGFjZW1lbnQpOiBMaWtld2lzZS4KCShkZWNsKTogTGlrZXdpc2UuCgkoc3RydWN0c3ApOiBMaWtld2lzZS4KCShuZXdfdHlwZV9pZCk6IExpa2V3aXNlLgoJKG1heWJlX3Bhcm1saXN0KTogTGlrZXdpc2UuCgkoZGlyZWN0X2FmdGVyX3R5cGVfZGVjbGFyYXRpb24pOiBMaWtld2lzZS4KCShkaXJlY3RfbmV3X2RlY2xhcmF0b3IpOiBMaWtld2lzZS4KCShkaXJlY3RfYWJzdHJhY3RfZGVjbGFyYXRpb24pOiBMaWtld2lzZS4KCSogcGFyc2UuYzogUmVnZW5lcmF0ZWQuCgkqIHB0LmMgKHRzdWJzdF9leHByKTogRG9uJ3Qgc3VzcGVuZF9tb21lbnRhcnkgb3IgcmVzdW1lX21vbWVudGFyeS4KCSogc2VtYW50aWNzLmMgKGJlZ2luX25ld19wbGFjZW1lbnQpOiBSZW1vdmUuCgkoZmluaXNoX25ld19wbGFjZW1lbnQpOiBMaWtld2lzZS4KCQoxOTk5LTExLTA1ICBNYXJ0aW4gdi4gTPZ3aXMgIDxsb2V3aXNAaW5mb3JtYXRpay5odS1iZXJsaW4uZGU+CgoJKiBjcC10cmVlLmggKFZBUl9URU1QTF9UWVBFX09SX0ZVTkNUSU9OX0RFQ0xfQ0hFQ0spOiBOZXcgbWFjcm8uCgkoREVDTF9URU1QTEFURV9JTkZPKTogVXNlIGl0LgoJKiBkZWNsLmMgKHdhcm5fZXh0ZXJuX3JlZGVjbGFyZWRfc3RhdGljKTogRG8gbm90aGluZyBmb3IKCVRFTVBMQVRFX0RFQ0xzLgoJKiBkZWNsMi5jIChtYXJrX3VzZWQpOiBFeHBsaWNpdGx5IGNoZWNrIGZvciBmdW5jdGlvbiBvciB2YXJpYWJsZS4KCSogc2VtYW50aWNzLmMgKGZpbmlzaF91bmFyeV9vcF9leHByKTogQ2hlY2sgd2hldGhlciByZXN1bHQgaXMgYWxzbwoJYW4gSU5URUdFUl9DU1QuCgoxOTk5LTExLTA1ICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogTWFrZWZpbGUuaW4gKHR5cGVjazIubyk6IERlcGVuZCBvbiBvdXRwdXQuaC4KCSogdHlwZWNrMi5jOiBJbmNsdWRlIG91dHB1dC5oLgoKCSogZGVjbC5jIChmbGFnX2Fuc2kpOiBSZW1vdmUgZGVjbGFyYXRpb24uCgoJKiBwdC5jICh0aW5zdF9sZXZlbF90aWNrKTogTWFrZSBpdCBzdGF0aWMuCgkobGFzdF90ZW1wbGF0ZV9lcnJvcl90aWNrKTogTGlrZXdpc2UuCgkKCSogY3AtdHJlZS5oIChtYXBjYXIpOiBSZW1vdmUgZGVjbGFyYXRpb24uCgkoc2VhcmNoX3RyZWUpOiBMaWtld2lzZS4KCSh3YWxrX3RyZWVfZm4pOiBOZXcgdHlwZWRlZi4KCSh3YWxrX3RyZWUpOiBOZXcgZnVuY3Rpb24uCgkqIHRyZWUuYyAoYm90X21hbmlwKTogQ2hhbmdlIHByb3RvdHlwZS4gIEFkanVzdCB0byBiZSBjYWxsZWQgdmlhCgl3YWxrX3RyZWUuCgkoYm90X3JlcGxhY2UpOiBMaWtld2lzZS4KCShub19saW5rYWdlX2hlbHBlcik6IExpa2V3aXNlLgoJKGNvcHlfdHJlZV9yKTogTmV3IGZ1bmN0aW9uLgoJKHNlYXJjaF90cmVlKTogUmVuYW1lLCBhbmQgYWRqdXN0LCB0byBiZWNvbWUgLi4uCgkod2Fsa190cmVlKTogTmV3IGZ1bmN0aW9uLgoJKG1hcGNhcik6IFJlbW92ZS4KCSh0YXJnZXRfcmVtYXApOiBSZW1vdmUuCgkodGFyZ2V0X3JlbWFwX2NvdW50KTogTGlrZXdpc2UuCgkoYnJlYWtfb3V0X3RhcmdldF9leHBycyk6IFVzZSB3YWxrX3RyZWUuCgkqIGRlY2wuYyAobG9jYWxfdmFyaWFibGVfcCk6IENoYW5nZSBwcm90b3R5cGUuCgkoY2hlY2tfZGVmYXVsdF9hcmd1bWVudCk6IFVzZSB3YWxrX3RyZWUuCgkqIHB0LmMgKGZvcl9lYWNoX3RlbXBsYXRlX3Bhcm1fcik6IE5ldyBmdW5jdGlvbiwgc3BsaXQgb3V0IGZyb20gLi4uCgkoZm9yX2VhY2hfdGVtcGxhdGVfcGFybSk6IEhlcmUuICBVc2UgaXQsIHZpYSB3YWxrX3RyZWUuCgkKMTk5OS0xMS0wMyAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGNsYXNzLmMgKGNoZWNrX2JpdGZpZWxkX2RlY2wpOiBOZXcgZnVuY3Rpb24sIHNwbGl0IG91dCBmcm9tCglmaW5pc2hfc3R1Y3RfMS4KCShjaGVja19maWVsZF9kZWNsKTogTGlrZXdpc2UuICBSZWN1cnNpdmVseSBleGFtaW5lIG1lbWJlcnMgb2YKCWFub255bW91cyBzdHJ1Y3RzLgoJKGZpbmlzaF9zdHJ1Y3RfMSk6IFVzZSB0aGVtLgoJKiBjcC10cmVlLmggKEFOT05fVU5JT05fVFlQRV9QKTogTmV3IG1hY3JvLgoJCjE5OTktMTEtMDIgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBkZWNsLmMgKGdyb2tmbmRlY2wpOiBSZW1vdmUgZGVhZCBjb2RlLgoKCSogZHVtcC5jIChkZXF1ZXVlX2FuZF9kdW1wKTogRml4IHRoaW5rbyBmb3IgY2F0Y2gtY2xhdXNlcy4KCjE5OTktMTEtMDIgIFNjb3R0IFNueWRlciAgPHNueWRlckBmbmFsLmdvdj4KCgkqIGRlY2wyLmMgKGJ1aWxkX2V4cHJfZnJvbV90cmVlKTogSGFuZGxlIFJFQUxQQVJUX0VYUFIgYW5kCglJTUFHUEFSVF9FWFBSLgoJKiBwdC5jICh0c3Vic3RfY29weSk6IExpa2V3aXNlLgoKMTk5OS0xMS0wMSAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogZGVjbDIuYyAobWF5YmVfbWFrZV9vbmVfb25seSk6IEFsd2F5cyBtYWtlIHRoaW5ncyBjb21kYXQgb24KCUVMRiB0YXJnZXRzLCB0b28uCgoxOTk5LTEwLTMxICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogZGVjbC5jIChmaW5pc2hfZnVuY3Rpb24pOiBDYWxsIGZyZWVfYWZ0ZXJfcGFyc2luZyBmb3IgZnVuY3Rpb25zCgl3ZSBhcmUgbm90IGltbWVkaWF0ZWx5IHR1cm5pbmcgaW50byBSVEwuCgoxOTk5LTEwLTMxICBCcmVuZGFuIEtlaG9lICA8YnJlbmRhbkBjeWdudXMuY29tPgoKCSogY3AtdHJlZS5oIChmbGFnX2R1bXBfdHJhbnNsYXRpb25fdW5pdCk6IEFkZCBkZWNsLgoKU2F0IE9jdCAzMCAyMjo0Mjo1MCAxOTk5ICBTdGVwaGVuIEwgTW9zaGllciA8bW9zaGllckBtZWRpYW9uZS5uZXQ+CgoJKiBsZXguYyAoeXlsZXgpOiBBY2NlcHQgJ2YnIGluIG1hbnRpc3NhIG9mIGhleCBmbG9hdCBjb25zdGFudC4KCjE5OTktMTAtMzAgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBkZWNsLmMgKHBvcF9jcF9mdW5jdGlvbl9jb250ZXh0KTogRG9uJ3QgY2FsbCBmcmVlIG9uIGEgTlVMTAoJcG9pbnRlci4KCSogc2VtYW50aWNzLmM6IEluY2x1ZGUgZ2djLmguCgkoZXhwYW5kX2JvZHkpOiBEbyBnYXJiYWdlLWNvbGxlY3Rpb24gYWZ0ZXIgcHJvY2Vzc2luZyBhIHRlbXBsYXRlCglmdW5jdGlvbi4gIENsZWFyIERFQ0xfU0FWRURfVFJFRSBhZnRlciBnZW5lcmF0aW5nIFJUTCBmb3IgYQoJZnVuY3Rpb24uCgkqIE1ha2VmaWxlLmluIChzZW1hbnRpY3Mubyk6IERlcGVuZCBvbiBnZ2MuaC4KCQoxOTk5LTEwLTI5ICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogY3AtdHJlZS5oIChtYWtlX3R5cGVuYW1lX3R5cGUpOiBDaGFuZ2UgcHJvdG90eXBlLgoJKiBkZWNsLmMgKG1ha2VfdHlwZW5hbWVfdHlwZSk6IE9ubHkgY29tcGxhaW4gaWYgc28gcmVxdWVzdGVkLgoJKiBwYXJzZS55IChuZXN0ZWRfbmFtZV9zcGVjaWZpZXIpOiBBZGp1c3QgY2FsbHMuCgkodHlwZW5hbWVfc3ViMCk6IExpa2V3aXNlLgoJKHR5cGVuYW1lX3N1YjEpOiBMaWtld2lzZS4KCSogcGFyc2UuYzogUmVnZW5lcmF0ZWQuCgkqIHB0LmMgKGNvbnZlcnRfdGVtcGxhdGVfYXJndW1lbnQpOiBQYXNzIGNvbXBsYWluIHRvCgltYWtlX3R5cGVuYW1lX3R5cGUuCgkodHN1YnN0KTogTGlrZXdpc2UuCgkKMTk5OS0xMC0yOCAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIHNlbWFudGljcy5jIChmaW5pc2hfaGFuZGxlcik6IEVuZCB0aGUgc2NvcGUgb2YgdGhlIGhhbmRsZXIKCWJlZm9yZSBhdHRhY2hpbmcgaXQgdG8gdGhlIHN0YXRlbWVudC10cmVlLgoKMTk5OS0xMC0yOCAgSWFuIExhbmNlIFRheWxvciAgPGlhbkB6ZW1idS5jb20+CgoJKiBydHRpLmMgKGJ1aWxkX2R5bmFtaWNfY2FzdF8xKTogR2l2ZSBhIGJldHRlciBlcnJvciBtZXNzYWdlIGZvcgoJYW4gYXR0ZW1wdCB0byBkeW5hbWljX2Nhc3QgZnJvbSBhIG5vbi1wb2x5bW9ycGhpYyB0eXBlLgoKMTk5OS0xMC0yNyAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGNwLXRyZWUuaCAobWFrZV90ZW1wX3ZlYyk6IFJlbW92ZS4KCShtYWtlX3NjcmF0Y2hfdmVjKTogTGlrZXdpc2UuCgkqIGNhbGwuYyAoYWRkX2Z1bmN0aW9uX2NhbmRpZGF0ZSk6IFVzZSBtYWtlX3RyZWVfdmVjLgoJKGFkZF9jb252X2NhbmRpZGF0ZSk6IExpa2V3aXNlLgoJKGJ1aWxkX2J1aWx0aW5fY2FuZGlkYXRlKTogTGlrZXdpc2UuCgkoYWRkX3RlbXBsYXRlX2NhbmRpZGF0ZV9yZWFsKTogTGlrZXdpc2UuCgkqIGNsYXNzLmMgKHJlc29sdmVfYWRkcmVzc19vZl9vdmVybG9hZGVkX2Z1bmN0aW9uKTogTGlrZXdpc2UuCgkqIGRlY2wuYyAoc3RhcnRfZnVuY3Rpb24pOiBEb24ndCBmb29sIHdpdGggdGhlIG1vbWVudGFyeSBvYnN0YWNrLgoJKGZpbmlzaF9mdW5jdGlvbik6IExpa2V3aXNlLgoJKiBpbml0LmMgKGV4cGFuZF9kaXJlY3RfdnRibHNfaW5pdCk6IExpa2V3aXNlLgoJKGJlZ2luX2luaXRfc3RtdHMpOiBMaWtld2lzZS4KCShmaW5pc2hfaW5pdF9zdG10cyk6IExpa2V3aXNlLgoJKiBwdC5jIChhZGRfdG9fdGVtcGxhdGVfYXJncyk6IFVzZSBtYWtlX3RyZWVfdmVjLgoJKGNoZWNrX2V4cGxpY2l0X3NwZWNpYWxpemF0aW9uKTogTGlrZXdpc2UuCgkoY29lcmNlX3RlbXBsYXRlX3Bhcm1zKTogTGlrZXdpc2UuCgkobG9va3VwX3RlbXBsYXRlX2NsYXNzKTogRG9uJ3QgZm9vbCB3aXRoIHRoZSBtb21lbnRhcnkgb2JzdGFjay4KCShpbnN0YW50aWF0ZV9jbGFzc190ZW1wbGF0ZSk6IExpa2V3aXNlLgoJKHRzdWJzdF90ZW1wbGF0ZV9hcmdfdmVjdG9yKTogVXNlIG1ha2VfdHJlZV92ZWMuCgkodHN1YnN0X2FnZ3JfdHlwZSk6IERvbid0IGZvb2wgd2l0aCB0aGUgbW9tZW50YXJ5IG9ic3RhY2suCgkodHN1YnN0X2RlY2wpOiBMaWtld2lzZS4gIFVzZSBtYWtlX3RyZWVfdmVjLgoJKHRyeV9vbmVfb3ZlcmxvYWQpOiBMaWtld2lzZS4KCSh0cnlfY2xhc3NfdW5pZmljYXRpb24pOiAgRG9uJ3QgZm9vbCB3aXRoIHRoZSBtb21lbnRhcnkgb2JzdGFjay4KCShnZXRfYmluZGluZ3NfcmVhbCk6IFVzZSBtYWtlX3RyZWVfdmVjLgoJKHNldF9tYW5nbGVkX25hbWVfZm9yX3RlbXBsYXRlX2RlY2wpOiBMaWtld2lzZS4KCSogcnR0aS5jIChzeW50aGVzaXplX3RpbmZvX2ZuKTogRG9uJ3QgZm9vbCB3aXRoIHRoZSBtb21lbnRhcnkgb2JzdGFjay4KCSogc2VtYW50aWNzLmMgKGZpbmlzaF9leHByX3N0bXQpOiBMaWtld2lzZS4KCShmaW5pc2hfZG9fc3RtdCk6IExpa2V3aXNlLgoJKGZpbmlzaF9mb3JfZXhwcik6IExpa2V3aXNlLgoJKGZpbmlzaF9zd2l0Y2hfY29uZCk6IExpa2V3aXNlLgoJKGRvX3B1c2hsZXZlbCk6IExpa2V3aXNlLgoJKGRvX3BvcGxldmVsKTogTGlrZXdpc2UuCgkqIHRyZWUuYyAobWFrZV90ZW1wX3ZlYyk6IFJlbW92ZS4KCQoJKiBkdW1wLmMgKGRlcXVldWVfYW5kX2R1bXApOiBEdW1wIEhBTkRMRVJzIGFuZCBTQVZFX0VYUFJzLiAgRHVtcAoJQ0xFQU5VUF9QIGZvciBhIFRSWV9CTE9DSy4KCSogaXIudGV4aTogRG9jdW1lbnQgU0FWRV9FWFBSLgoKVHVlIE9jdCAyNiAyMzoyOTo1NiAxOTk5ICBKZWZmcmV5IEEgTGF3ICAobGF3QGN5Z251cy5jb20pCgoJKiBjYWxsLmMgKGJ1aWxkX292ZXJfY2FsbCk6ICBDaGVjayB0aGF0IHRoZSBidWlsdC1pbiBmdW5jdGlvbiBpcwoJb2YgY2xhc3MgQlVJTFRfSU5fTk9STUFMIGJlZm9yZSB0cnlpbmcgdG8gcmVjb25naXplIGl0IGFzIEJVSUxUX0lOX0FCUy4KCSogdHlwZWNrLmMgKGJ1aWxkX2Z1bmN0aW9uX2NhbGxfcmVhbCk6IFNpbWlsYXJseS4gCgoxOTk5LTEwLTI2ICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogZGVjbC5jIChwb3BsZXZlbCk6IERvbid0IHNldCBCTE9DS19UWVBFX1RBR1MuICBEb24ndCBjYWxsCglyZW1lbWJlcl9lbmRfbm90ZS4KCjE5OTktMTAtMjQgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBkZWNsLmMgKHB1c2hfb3ZlcmxvYWRlZF9kZWNsXzEpOiBVc2UgcHVzaGRlY2wuCgkKCSogZGVjbC5jIChhdXRvX2Z1bmN0aW9uKTogUmVwbGFjZSAjaWZkZWYnZCBfX2lubGluZSB3aXRoIGp1c3QKCXBsYWluIGlubGluZS4KCSogbGV4LmMgKG15X2dldF9ydW5fdGltZSk6IExpa2Vpc2UuCgkoeXlwcmludCk6IExpa2V3aXNlLgoJKGlkZW50aWZpZXJfdHlwZSk6IExpa2V3aXNlLgoJKiBtZXRob2QuYyAoc3RhcnRfc3F1YW5nbGluZyk6IExpa2V3aXNlLgoJKGVuZF9zcXVhbmdsaW5nKTogTGlrZXdpc2UuCgkoaWNhdCk6IExpa2V3aXNlLgoJKG9sZF9iYWNrcmVmX2luZGV4KTogTGlrZXdpc2UuCgkoZmx1c2hfcmVwZWF0cyk6IExpa2V3aXNlLgoJKGlzc3VlX2t0eXBlKTogTGlrZXdpc2UuCgkqIHBhcnNlLnkgKGVtcHR5X3Bhcm1zKTogTGlrZXdpc2UuCgkqIHBhcnNlLmM6IFJlZ2VuZXJhdGVkLgoJCjE5OTktMTAtMjEgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBkdW1wLmMgKGRlcXVldWVfYW5kX2R1bXApOiBSZXBsYWNlIHNldmVyYWwgdXNlcyBvZgoJcXVldWVfYW5kX2R1bXBfaW5kZXggd2l0aCBkdW1wX2NoaWxkLgoKMTk5OS0xMC0yMSAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogZXhwci5jOiBJbmNsdWRlIHRtX3AuaC4KCjE5OTktMTAtMjEgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjcC10cmVlLmggKFNDT1BFX1BBUlRJQUxfUCk6IE5ldyBtYWNyby4KCShwdXNobGV2ZWxfdGVtcG9yYXJ5KTogUmVtb3ZlLgoJKGFkZF9zY29wZV9zdG10KTogTmV3IGZ1bmN0aW9uLgoJKiBkZWNsLmMgKHB1c2hsZXZlbF90ZW1wb3JhcnkpOiBSZW1vdmUuCgkocG9wbGV2ZWwpOiBVc2UgYWRkX3Njb3BlX3N0bXQuCgkoc3RhcnRfZGVjbF8xKTogTGlrZXdpc2UuCgkqIHNlbWFudGljcy5jIChhZGRfc2NvcGVfc3RtdCk6IE5ldyBmdW5jdGlvbi4KCShkb19wdXNobGV2ZWwpOiBVc2UgaXQuCgkoZG9fcG9wbGV2ZWwpOiBVc2UgaXQuCgkoZXhwYW5kX3N0bXQpOiBDaGVjayBTQ09QRV9QQVJUSUFMX1AuCgkKCSogY3AtdHJlZS5kZWYgKEVNUFRZX0NMQVNTX0VYUFIpOiBOZXcgdHJlZSBub2RlLgoJKiBjYWxsLmMgKGJ1aWxkX2NhbGwpOiBVc2UgRU1QVFlfQ0xBU1NfRVhQUiBpbnN0ZWFkIG9mIFJUTF9FWFBSLgoJKiBleHByLmMgKGNwbHVzX2V4cGFuZF9leHByKTogRXhwYW5kIGl0LgoJKiBpci50ZXhpOiBEb2N1bWVudCBFTVBUWV9DTEFTU19FWFBSLgoJCjE5OTktMTAtMjAgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjcC10cmVlLmggKERFQ0xfTkFNRVNQQUNFX1NDT1BFX1ApOiBEb24ndCB0cmVhdCB0ZW1wbGF0ZQoJcGFyYW1ldGVycyBhcyBoYXZpbmcgbmFtZXNwYWNlIHNjb3BlLgoKMTk5OS0xMC0xOSAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIG1ldGhvZC5jIChQQVJNX0NBTl9CRV9BUlJBWV9UWVBFKTogUmVtb3ZlLgoJKG1hbmdsaW5nX2ZsYWdzKTogTmV3IHR5cGUuCgkoYnVpbGRfb3ZlcmxvYWRfaW50KTogQ2hhbmdlIHByb3RvdHlwZS4KCShidWlsZF9vdmVybG9hZF92YWx1ZSk6IExpa2V3aXNlLgoJKG51bWVyaWNfb3V0cHV0X25lZWRfYmFyKTogSW1wcm92ZSBjb21tZW50LgoJKG1hbmdsZV9leHByZXNzaW9uKTogTmV3IGZ1bmN0aW9uLCBicm9rZW4gb3V0IGZyb20gLi4uCgkoYnVpbGRfb3ZlcmxvYWRfaW50KTogSGVyZS4KCShidWlsZF9vdmVybG9hZF92YWx1ZSk6IEFkanVzdCBmb3IgdXNlIG9mIG1hbmdsaW5nIGZsYWdzLiAgRG9uJ3QKCXdhcm4gYWJvdXQgcmVhbC12YWx1ZWQgdGVtcGxhdGUgcGFyYW1ldGVycyBoZXJlLiAgRG8gaGFuZGxlCgljb21wbGV4IGV4cHJlc3Npb25zIGludm9sdmluZyByZWFsLXZhbHVlZCB0ZW1wbGF0ZSBwYXJhbWV0ZXJzLgoJKGJ1aWxkX3RlbXBsYXRlX3Bhcm1fbmFtZXMpOiBFbmNhc2Ugbm9uLXR5cGUgdGVtcGxhdGUgcGFyYW1ldGVycwoJaW4gdW5kZXJzY29yZXMsIGlmIG5lY2Vzc2FyeS4KCShwcm9jZXNzX292ZXJsb2FkX2l0ZW0pOiBSZW1vdmUgY29uZGl0aW9uYWwgb24KCVBBUk1fQ0FOX0JFX0FSUkFZX1RZUEUuCgoxOTk5LTEwLTE3ICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogZHVtcC5jIChkZXF1ZXVlX2FuZF9kdW1wKTogSGFuZGxlIENMRUFOVVBfUE9JTlRfRVhQUi4KCgkqIGlyLnRleGk6IENsZWFuIHVwIGRvY3VtZW50YXRpb24gb2YgUkVUVVJOX0lOSVQuCgkKMTk5OS0xMC0xNSAgR3JlZyBNY0dhcnkgIDxna21AZ251Lm9yZz4KCgkqIGxleC5jIChsYW5nX2luaXRfb3B0aW9ucyk6IFNldCBmbGFnX2JvdW5kc19jaGVjayBhcyAidW5zcGVjaWZpZWQiLgoJKGxhbmdfaW5pdCk6IFNldCBkZWZhdWx0IGZvciBmbGFnX2JvdW5kc19jaGVjayBpZiBzdGlsbCAidW5zcGVjaWZpZWQiLgoKMTk5OS0xMC0xMyAgQW5kcmV3IEhhbGV5ICA8YXBoQGN5Z251cy5jb20+CgoJKiBjbGFzcy5jIChmaW5pc2hfc3RydWN0XzEpOiBGb3JjZSBhbGlnbm1lbnQgb2Ygbm9uLWJpdGZpZWxkcyB0bwoJQklUU19QRVJfVU5JVC4KCldlZCBPY3QgMTMgMjI6MDE6MzUgMTk5OSAgSiJvcm4gUmVubmVja2UgPGFteWxhYXJAY3lnbnVzLmNvLnVrPgoKCSogdHlwZWNrMi5jIChwcm9jZXNzX2luaXRfY29uc3RydWN0b3IpOiBIYW5kbGUgZW1wdHkgY29uc3RydWN0b3JzLgoKMTk5OS0xMC0xMyAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogZGVjbC5jIChsYW5nX21hcmtfdHJlZSk6IE1hcmsgTkFNRVNQQUNFX0xFVkVMLgoKCSogcHQuYyAodHN1YnN0LCBjYXNlIElOVEVHRVJfVFlQRSk6IEJlIG1vcmUgZXhwbGljaXQgaW4gemVyby1zaXplCglhcnJheSBlcnJvci4KCjE5OTktMTAtMTMgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBkZWNsLmMgKG1ha2VfcnRsX2Zvcl9sb2NhbF9zdGF0aWMpOiBEb24ndCBjcmVhdGUgcmVnaXN0ZXIgUlRMCglmb3IgYWRkcmVzc2FibGUgY29uc3RhbnRzLgoKMTk5OS0xMC0xMyAgTmF0aGFuIFNpZHdlbGwgIDxuYXRoYW5AYWNtLm9yZz4KCgkqIGNwLXRyZWUuaCAoYnVpbGRfeF92YV9hcmcpOiBQcm90b3R5cGUgbmV3IGZ1bmN0aW9uLgoJKiBjYWxsLmMgKGJ1aWxkX3hfdmFfYXJnKTogRGVmaW5lIGl0LgoJKiBwYXJzZS55ICh1bmFyeV9leHByKTogQ2FsbCBidWlsZF94X3ZhX2FyZy4KCQoJKiBjcC10cmVlLmggKGNvbnZlcnRfdHlwZV9mcm9tX2VsbGlwc2lzKTogUHJvdG90eXBlIG5ldyBmdW5jdGlvbi4KCSogY2FsbC5jIChjb252ZXJ0X3R5cGVfZnJvbV9lbGxpcHNpcyk6IERlZmluZSBpdC4KCSogZGVjbC5jIChpbml0X2RlY2xfcHJvY2Vzc2luZyk6IFNldCBsYW5nX3R5cGVfcHJvbW90ZXNfdG8uCgoJKiB0cmVlLmMgKGx2YWx1ZV9wXzEpOiBBY2NlcHQgVkFfQVJHX0VYUFIgd2l0aCBhZ2dyZWdhdGVzLgoKMTk5OS0xMC0xMSAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogY2xhc3MuYyAoZml4ZWRfdHlwZV9vcl9udWxsKTogQWx3YXlzIHNldCAqbm9ubnVsbC4KCjE5OTktMTAtMTAgIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIGNwLXRyZWUuaDogVXNlIEhBVkVfR0NDX1ZFUlNJT04gaW5zdGVhZCBvZiBleHBsaWNpdGx5IHRlc3RpbmcKCV9fR05VQ19fIGFuZCBfX0dOVUNfTUlOT1JfXy4KCjE5OTktMTAtMDkgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjcC10cmVlLmggKG1ha2VfcnRsX2Zvcl9sb2NhbF9zdGF0aWMpOiBOZXcgZnVuY3Rpb24uICAKCSogZGVjbC5jIChtYWtlX3J0bF9mb3Jfbm9ubG9jYWxfZGVjbCk6IE1vdmUgY29kZSB0byBjcmVhdGUgUlRMIGZvcgoJbG9jYWwgc3RhdGljcyAuLi4KCShtYWtlX3J0bF9mb3JfbG9jYWxfc3RhdGljKTogSGVyZS4KCSogc2VtYW50aWNzLmMgKGV4cGFuZF9zdG10KTogVXNlIG1ha2VfcnRsX2Zvcl9sb2NhbF9zdGF0aWMuCgkKMTk5OS0xMC0wOCAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogbWV0aG9kLmM6IEluY2x1ZGUgdG1fcC5oLgoKMTk5OS0xMC03ICAgRnJhbnogU2lybCAgPEZyYW56LlNpcmwta2VybmVsQGxhdXRlcmJhY2guY29tPgoKCSogY3AtdHJlZS5oIChjcF9tYWtlX2xha2VfdHlwZSk6IFJlbmFtZWQgZnJvbSBtYWtlX2xhbmdfdHlwZS4KCSogbGV4LmMgKGNwX21ha2VfbGFrZV90eXBlKTogTGlrZXdpc2UuCgkqIHRyZWUuYyAoaW5pdF90cmVlKTogSW5pdCBtYWtlX2xhbmdfdHlwZV9mbi4KCQoxOTk5LTEwLTA3ICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogcHQuYyAodHN1YnN0X2V4cHIpOiBTZXQgREVDTF9URU1QTEFURV9JTlNUQU5USUFURUQgZm9yIGEgY2F0Y2gKCXBhcmFtZXRlci4KCQoJKiBzZW1hbnRpY3MuYyAoZXhwYW5kX3N0bXQpOiBEb24ndCBwcmV0ZW5kIHRvIGhhdmUgYXNtc3BlY3MgZm9yCglsb2NhbCBzdGF0aWNzIGlmIHdlIGRvbid0IHJlYWxseSBoYXZlIHRoZW0uCgoJKiBpci50ZXhpOiBJbXByb3ZlIGRvY3VtZW50YXRpb24gZm9yIFNUTVRfRVhQUi4gIERlc2NyaWJlCglDTEVBTlVQX1BPSU5UX0VYUFIuCgoxOTk5LTEwLTA3ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBjbGFzcy5jIChidWlsZF92dGFibGVfZW50cnlfcmVmKTogVXNlIGZpbmlzaF9hc21fc3RtdC4KCjE5OTktMTAtMDcgIEdyZWcgTWNHYXJ5ICA8Z2ttQGdudS5vcmc+CgoJKiBjbGFzcy5jIChmaW5pc2hfc3RydWN0XzEpOiBVc2Ugc2ltcGxlciBtZXRob2Qgb2YKCXJlbW92aW5nIGVsZW1lbnRzIG9mIGEgc2luZ2x5LWxpbmtlZCBsaXN0IHdoaWNoIGRvZXNuJ3QKCWxvc2UgZm9yIGNsYXNzZXMgd2l0aG91dCBkYXRhIG1lbWJlcnMuCgoxOTk5LTEwLTA3ICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogZnJpZW5kLmMgKG1ha2VfZnJpZW5kX2NsYXNzKTogUm9idXN0aWZ5LgoKCSogc2VtYW50aWNzLmMgKGZpbmlzaF9vYmplY3RfY2FsbF9leHByKTogUmVqZWN0IGNhbGxzIHRvIHRlbXBsYXRlCgl0eXBlcy4KCjE5OTktMTAtMDYgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBkdW1wLmMgKGRlcXVldWVfYW5kX2R1bXApOiBEdW1wIGFsbCB0aHJlZSBvcGVyYW5kcyB0byBhIENPTkRfRVhQUi4KCgkqIGNwLXRyZWUuaCAoQ0xBU1NUWVBFX1ZGSUVMRCk6IFJlbW92ZS4KCSogY2FsbC5jIChidWlsZF92ZmllbGRfcmVmKTogVXNlIFRZUEVfVkZJRUxELCBub3QKCUNMQVNTVFlQRV9WRklFTEQuCgkqIGNsYXNzLmMgKGdldF92ZmllbGRfb2Zmc2V0KTogTGlrZXdpc2UuCgkoZmluaXNoX2Jhc2Vfc3RydWN0KTogTGlrZXdpc2UuCgkobW9kaWZ5X29uZV92dGFibGUpOiBMaWtld2lzZS4KCShmaXh1cF92dGFibGVfZGVsdGFzKTogTGlrZXdpc2UuCgkoZmluaXNoX3N0cnVjdF8xKTogTGlrZXdpc2UuCgkqIGluaXQuYyAoZXhwYW5kX3ZpcnR1YWxfaW5pdCk6IExpa2V3aXNlLgoJKiBzZWFyY2guYyAobG9va3VwX2ZpZWxkXzEpOiBMaWtld2lzZS4KCShleHBhbmRfdXBjYXN0X2ZpeHVwcyk6IExpa2V3aXNlLgoJKiB0eXBlY2suYyAoYnVpbGRfY29tcG9uZW50X3JlZik6IExpa2V3aXNlLgoJKGJ1aWxkX2JpbmFyeV9vcF9ub2RlZmF1bHQpOiBMaWtld2lzZS4KCQoJKiBkdW1wLmMgKGRxdWV1ZV9hbmRfZHVtcCk6IER1bXAgVFlQRV9WRklFTEQuCgkqIGlyLnRleGk6IERvY3VtZW50IFRZUEVfVkZJRUxELgoKMTk5OS0xMC0wNiAgQnJlbmRhbiBLZWhvZSAgPGJyZW5kYW5AY3lnbnVzLmNvbT4KCgkqIGRlY2wuYyAoZ3Jva2RlY2xhcmF0b3IpOiBPbmx5IHdhcm4gYWJvdXQgbm9uemVybyBhcnJheXMgaWYKCSFpbl9zeXN0ZW1faGVhZGVyIChsaW51eCBzb2NrZXRiaXRzLmggY2FuIGdpdmUgdGhpcyBmb3IKCV9fY21zZ19kYXRhLCB3aGljaCBpcyB1c2luZyBhIEdOVSBleHRlbnNpb24pLgoKMTk5OS0xMC0wNSAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGRlY2wyLmMgKHN0YXJ0X3N0YXRpY19zdG9yYWdlX2R1cmF0aW9uX2Z1bmN0aW9uKTogUHVzaCB0aGUKCWZ1bmN0aW9uIGRlY2xhcmF0aW9uIHNvIGl0IGVuZHMgdXAgaW4gbmFtZXNwYWNlIHNjb3BlLgoKCSogZHVtcC5jIChEVU1QX0NISUxEUkVOKTogUmVtb3ZlLgoJKERVTVBfQklORk8pOiBBZGp1c3QuCgkoc3RydWN0IGR1bXBfbm9kZV9pbmZvKTogUmVtb3ZlIGR1bXBfY2hpbGRyZW5fcC4KCShxdWV1ZV9hbmRfZHVtcF90eXBlKTogUmVtb3ZlIGR1bXBfY2hpbGRyZW5fcCBwYXJhbWV0ZXIuCgkocXVldWUpOiBEb24ndCBzZXQgZHVtcF9jaGlsZHJlbl9wLgoJKGR1bXBfY2hpbGQpOiBQYXNzIERVTVBfTk9ORSwgaW5zdGVhZCBvZiBEVU1QX0NISUxEUkVOLCB0bwoJcXVldWVfYW5kX2R1bXBfaW5kZXguCgkoZGVxdWV1ZV9hbmRfZHVtcCk6IFVuY29uZGl0aW9uYWxseSBwcmludCBjaGlsZHJlbi4gIEFkanVzdCBjYWxscwoJdG8gZnVuY3Rpb25zIG1lbnRpb25lZCBhYm92ZS4KCShkdW1wX25vZGUpOiAgUGFzcyBEVU1QX05PTkUsIGluc3RlYWQgb2YgRFVNUF9DSElMRFJFTiB0byBxdWV1ZS4KCQoJKiBpci50ZXhpOiBEb2N1bWVudCBCSU5EX0VYUFIsIExPT1BfRVhQUiwgYW5kIEVYSVRfRVhQUi4KCSogZHVtcC5jIChkZXF1ZXVlX2FuZF9kdW1wKTogRHVtcCB0aGVtLgoJCgkqIG1ldGhvZC5jIChzeW50aGVzaXplX21ldGhvZCk6IENhbGwgc2V0dXBfdnRibF9wdHIgZm9yIGRlc3RydWN0b3JzLgoKCSogZGVjbC5jIChzdGFydF9mdW5jdGlvbik6IFNldCBjdXJyZW50X2luX2NoYXJnZV9wYXJtIGZvcgoJY29uc3RydWN0b3JzLCB0b28sIHdoZXJlIGFwcHJvcHJpYXRlLgoJKiBzZWFyY2guYyAoZml4dXBfYWxsX3ZpcnR1YWxfdXBjYXN0X29mZnNldHMpOiBOZXcgZnVuY3Rpb24uCgkoZXhwYW5kX2luZGlyZWN0X3Z0YmxzX2luaXQpOiBVc2UgaXQuCgkKMTk5OS0xMC0wNCAgTmF0aGFuIFNpZHdlbGwgIDxuYXRoYW5AYWNtLm9yZz4KCgkqIGRlY2wyLmMgKGdyb2tfYWxpZ25vZik6IERvbid0IGRlY2F5IGx2YWx1ZXMuCgkKCSogaW5pdC5jIChidWlsZF9uZXcpOiBSZW1vdmUgdW51c2VkIHZhcmlhYmxlLgoKMTk5OS0xMC0wNCAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGNwLXRyZWUuaCAoc3RydWN0IGxhbmd1YWdlX2Z1bmN0aW9uKTogUmVtb3ZlIHN0YXRpY19sYWJlbG5vLgoJKHN0YXRpY19sYWJlbG5vKTogUmVtb3ZlIG1hY3JvLgoJKiBtZXRob2QuYyAoYnVpbGRfb3ZlcmxvYWRfbmVzdGVkX25hbWUpOiBNYWtlIHN0YXRpY19sYWJlbG5vCglzdGF0aWMgaGVyZS4KCQoJKiBwdC5jIChpbnN0YW50aWF0ZV9kZWNsKTogVXNlIERFQ0xfU0FWRURfVFJFRSwgbm90IERFQ0xfSU5JVElBTCwKCXRvIGRlY2lkZSB3aGV0aGVyIG9yIG5vdCBhIGZ1bmN0aW9uIGlzIGRlZmluZWQuCgoJKiBjYWxsLmMgKGJ1aWxkX292ZXJfY2FsbCk6IERvbid0IHNldCBUUkVFX1NJREVfRUZGRUNUUyBmb3IKCXNpdHVhdGlvbnMgd2hlcmUgbWFrZV9ub2RlIHdpbGwgZG8gaXQgYXV0b21hdGljYWxseS4KCSogZGVjbC5jIChncm9rX3JlZmVyZW5jZV9pbml0KTogTGlrZXdpc2UuCgkoZXhwYW5kX3N0YXRpY19pbml0KTogTGlrZXdpc2UuCgkoZG9fc3RhdGljX2luaXRpYWxpemF0aW9uKTogTGlrZXdpc2UuCgkqIGluaXQuYyAocGVyZm9ybV9tZW1iZXJfaW5pdCk6IExpa2V3aXNlLgoJKGV4cGFuZF9hZ2dyX2luaXRfMSk6IExpa2V3aXNlLgoJKGJ1aWxkX25ld18xKTogTGlrZXdpc2UuCgkqIG1ldGhvZC5jIChkb19idWlsZF9jb3B5X2NvbnN0cnVjdG9yKTogTGlrZXdpc2UuCgkoZG9fYnVpbGRfYXNzaWduX3JlZik6IExpa2V3aXNlLgoJKiBzZWFyY2guYyAoZXhwYW5kX3VwY2FzdF9maXh1cHMpOiBMaWtld2lzZS4KCSogc2VtYW50aWNzLmMgKGZpbmlzaF9zdG10X2V4cHIpOiBMaWtld2lzZS4KCSogdHlwZWNrLmMgKGJ1aWxkX3VuYXJ5X29wKTogTGlrZXdpc2UuCgkoY2hlY2tfcmV0dXJuX2V4cHIpOiBMaWtld2lzZS4KCjE5OTktMTAtMDQgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIGluaXQuYyAoYnVpbGRfdmVjX2RlbGV0ZV8xKTogRm9sZCBDT05EX0VYUFJzLgoKMTk5OS0xMC0wMyAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGNwLXRyZWUuZGVmIChWRUNfSU5JVF9FWFBSKTogUmVtb3ZlLgoJKiBjcC10cmVlLmggKHN0cnVjdCBzdG10X3RyZWUpOiBOZXcgdHlwZS4KCShzdHJ1Y3Qgc2F2ZWRfc2NvcGUpOiBSZW1vdmUgZmlyc3RvYmouICBBZGQgeF9zYXZlZF90cmVlLAoJeF9zdG10X3RyZWUuCgkoY2xhc3NfY2FjaGVfZmlyc3RvYmopOiBSZW1vdmUuCgkoc3RydWN0IGxhbmd1YWdlX2Z1bmN0aW9uKTogUmVtb3ZlIHN0bXRzX2FyZV9mdWxsX2V4cHJzX3AsCgl4X2xhc3RfdHJlZSwgYW5kIHhfbGFzdF9leHByX3R5cGUuICBBZGQgeF9zdG10X3RyZWUuCgkoY3VycmVudF9zdG10X3RyZWUpOiBOZXcgbWFjcm8uCgkobGFzdF90cmVlKTogQWRqdXN0LgoJKGxhc3RfZXhwcl90eXBlKTogTGlrZXdpc2UuCgkoZG9pbmdfc2VtYW50aWNfYW5hbHlzaXNfcCk6IFNpbXBsaWZ5LgoJKHN0bXRzX2FyZV9mdWxsX2V4cHJzX3ApOiBBZGp1c3QuCgkoYmVnaW5fdHJlZSk6IFJlbW92ZSBwcm90b3R5cGUuCgkoZW5kX3RyZWUpOiBMaWtld2lzZS4KCShiZWdpbl9zdG10X3RyZWUpOiBDaGFuZ2UgcHJvdG90eXBlLgoJKGZpbmlzaF9zdG10X3RyZWUpOiBMaWtld2lzZS4KCShidWlsZGluZ19zdG10X3RyZWUpOiBTaW1wbGlmeS4KCSogZGVjbC5jIChtYXJrX3N0bXRfdHJlZSk6IE5ldyBmdW5jdGlvbi4KCShtYXJrX3NhdmVkX3Njb3BlKTogVXNlIGl0LgoJKHN0YXJ0X2Z1bmN0aW9uKTogUmVhcnJhbmdlIHNsaWdodGx5IHRvIGNhbGwgYmVnaW5fc3RtdF90cmVlIAoJZWFybGllci4KCShzYXZlX2Z1bmN0aW9uX2RhdGEpOiBUd2Vhay4KCShmaW5pc2hfZnVuY3Rpb24pOiBBZGp1c3QgY2FsbCB0byBmaW5pc2hfc3RtdF90cmVlLgoJKG1hcmtfbGFuZ19mdW5jdGlvbik6IFVzZSBtYXJrX3N0bXRfdHJlZS4KCSogZXhwci5jIChjcGx1c19leHBhbmRfZXhwcik6IERvbid0IGhhbmRsZSBWRUNfSU5JVF9FWFBSLgoJKiBpbml0LmMgKGJ1aWxkX25ld18xKTogUmVtb3ZlIGNyZWF0aW9uIG9mIFZFQ19JTklUX0VYUFIuCgkoYnVpbGRfdmVjX2luaXQpOiBSZW1vdmUgY3JlYXRpb24gb2Ygc3RhbmQtaW4gaW5pdGlhbGl6ZXIuCgkqIHB0LmMgKGJlZ2luX3RyZWUpOiBSZW1vdmUuCgkoZW5kX3RyZWUpOiBMaWtld2lzZS4KCSogc2VtYW50aWNzLmMgKFNFVF9MQVNUX1NUTVQpOiBOZXcgbWFjcm8uICBVc2UgaXQgdGhyb3VnaG91dC4KCShiZWdpbl9jb21wb3VuZF9zdG10KTogSGFuZGxlIGEgY29tcG91bmQtc3RhdGVtZW50IG91dHNpZGUgb2YgYQoJZnVuY3Rpb24uCgkoYmVnaW5fc3RtdF9leHByKTogSGFuZGxlIGEgc3RhdGVtZW50LWV4cHJlc3Npb24gb3V0c2lkZWYgb2YgYQoJZnVuY3Rpb24uCgkoZmluaXNoX3N0bXRfZXhwcik6IExpa2V3aXNlLgoJKGJlZ2luX2NsYXNzX2RlZmluaXRpb24pOiBEb24ndCBjYWxsIGJlZ2luX3RyZWUuCgkoZmluaXNoX2lubGluZV9kZWZpbml0aW9ucyk6IERvbid0IGNhbGwgZW5kX3RyZWUuCgkoYmVnaW5fc3RtdF90cmVlKTogVGFrZSBhIHBvaW50ZXIgdG8gdHJlZSwgbm90IGEgZnVuY3Rpb24gYXMgaW5wdXQuCgkoZmluaXNoX3N0bXRfdHJlZSk6IExpa2V3aXNlLgoJKiB0cmVlLmMgKHNlYXJjaF90cmVlKTogRG9uJ3QgaGFuZGxlIFZFQ19JTklUX0VYUFIuCgkobWFwY2FyKTogTGlrZXdpc2UuCgkKCSogcGFyc2UueSAoc2ltcGxlX3N0bXQpOiBEb24ndCBjYWxsIGZpbmlzaF9zdG10IHVubmVjZXNzYXJpbHkuCgkqIHBhcnNlLmM6IFJlZ2VuZXJhdGVkLgoJCgkqIGR1bXAuYyAoZHF1ZXVlX2FuZF9kdW1wKTogRHVtcCBiaXRmaWVsZG5lc3MuCgkKCSogdHJlZS5jIChsdmFsdWVfcF8xKTogVXNlIERFQ0xfQ19CSVRfRklFTEQgdG8gY2hlY2sgZm9yCgliaXRmaWVsZHMsIHJhdGhlciB0aGFuIERFQ0xfQklUX0ZJRUxELgoJKiBpci50ZXhpOiBEb2N1bWVudCBob3cgdG8gdGVsbCB3aGV0aGVyIG9yIG5vdCBhIGZpZWxkIGlzIGEKCWJpdGZpZWxkLgoJCgkqIGxleC5jIChtYWtlX2xhbmdfdHlwZSk6IEZpeCB0eXBvIGluIGNvbW1lbnQuCgoxOTk5LTEwLTAxICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiB0eXBlY2suYyAoZGVjYXlfY29udmVyc2lvbik6IFN0cmlwIGN2LXF1YWxzIGZyb20gbm9uLWNsYXNzIHJ2YWx1ZXMuCgoxOTk5LTEwLTAxICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogcHQuYyAodHN1YnN0X2RlY2wpOiBJZiB0aGUgdHlwZSBvZiBhIHRlbXBsYXRlIGluc3RhbnRpYXRpb24gaXMKCWJvZ3VzLCBzbyBpcyB0aGUgd2hvbGUgaW5zdGFudGlhdGlvbi4KCjE5OTktMDktMzAgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBkZWNsLmMgKGluaXRpYWxpemVfbG9jYWxfdmFyKTogSGFuZGxlIHN0YXRpYyB2YXJpYWJsZXMgaGVyZS4KCShjcF9maW5pc2hfZGVjbCk6IFR3ZWFrIGhhbmRsaW5nIG9mIGZ1bmN0aW9uLXNjb3BlIHN0YXRpYwoJdmFyaWFibGVzLgoJKiBzZW1hbnRpY3MuYyAoZXhwYW5kX3N0bXQpOiBIYW5kbGUgREVDTF9TVE1UcyBmb3Igc3RhdGljCgl2YXJpYWJsZXMuCgoJKiBtZXRob2QuYyAoZW1pdF90aHVuayk6IERvbid0IGNyYXNoIHdoZW4gLWZzeW50YXgtb25seS4KCgkqIGNwLXRyZWUuaCAobGFuZ19kZWNsX2ZsYWdzKTogQWRkIGdsb2JhbF9jdG9yX3AgYW5kCglnbG9iYWxfZHRvcl9wLiAgQWRkIGluaXRfcHJpb3JpdHkuCgkoREVDTF9BQ0NFU1MpOiBBZGp1c3QgYWNjb3JkaW5nbHkuCgkoREVDTF9HTE9CQUxfQ1RPUl9QLCBERUNMX0dMT0JBTF9EVE9SX1ApOiBOZXcgbWFjcm9zLgoJKEdMT0JBTF9JTklUX1BSSU9SSVRZKTogTGlrZXdpc2UuCgkqIGRlY2wuYyAobGFuZ19tYXJrX3RyZWUpOiBBZGp1c3QgYWNjb3JkaW5nbHkuCgkoc3RhcnRfb2JqZWN0cyk6IFNldCBERUNMX0dMT0JBTF9DVE9SX1AsIERFQ0xfR0xPQkFMX0RUT1JfUCwgCglhbmQgR0xPQkFMX0lOSVRfUFJJT1JJVFkuCgkqIGR1bXAuYyAoZGVxdWV1ZV9hbmRfZHVtcCk6IFByaW50IHRoZW0uCgkqIGlyLnRleGk6IERvY3VtZW50IHRoZW0uCgoJKiBkZWNsMi5jIChzdHJ1Y3QgcHJpb3JpdHlfaW5mb19zKTogUmVtb3ZlIGluaXRpYWxpemF0aW9uX3NlcXVlbmNlCglhbmQgZGVzdHJ1Y3Rpb25fc2VxdWVuY2UuCgkoc3RhcnRfc3RhdGljX3N0b3JhZ2VfZHVyYXRpb25fZnVuY3Rpb24pOiBSZXR1cm4gdGhlIGJvZHkgb2YgdGhlCglmdW5jdGlvbi4gIENvbnZlcnQgZm9yIGZ1bmN0aW9uLWF0LWEtdGltZSBtb2RlLgoJKGdlbmVyYXRlX2luaXRzX2Zvcl9wcmlvcml0eSk6IFJlbW92ZS4KCShmaW5pc2hfc3RhdGljX3N0b3JhZ2VfZHVyYXRpb25fZnVuY3Rpb24pOiBDaGFuZ2UgcHJvdG90eXBlLgoJQWRqdXN0IGZvciBmdW5jdGlvbi1hdC1hLXRpbWUgbW9kZS4KCShkb19zdGF0aWNfaW5pdGlhbGl6YXRpb24pOiBMaWtld2lzZS4KCShkb19zdGF0aWNfZGVzdHJ1Y3Rpb24pOiBMaWtld2lzZS4KCShkb19zdGF0aWNfaW5pdGlhbGl6YXRpb25fYW5kX2Rlc3RydWN0aW9uKTogUmVtb3ZlLgoJKHN0YXJ0X3N0YXRpY19pbml0aWFsaXphdGlvbl9vcl9kZXN0cnVjdGlvbik6IE5ldyBmdW5jdGlvbi4KCShmaW5pc2hfc3RhdGljX2luaXRpYWxpemF0aW9uX29yX2Rlc3RydWN0aW9uKTogTGlrZXdpc2UuCgkoZ2V0X3ByaW9yaXR5X2luZm8pOiBEb24ndCBtYW5pcHVsYXRpb24gaW5pdGlhbGl6YXRpb25fc2VxdWVuY2Ugb3IKCWRlc3RydWN0aW9uX3NlcXVlbmNlLgoJKHBydW5lX3ZhcnNfbmVlZGluZ19ub19pbml0aWFsaXphdGlvbik6IE5ldyBmdW5jdGlvbi4KCSh3cml0ZV9vdXRfdmFycyk6IExpa2V3aXNlLgoJKGZpbmlzaF9maWxlKTogVXNlIHRoZSB2YXJpb3VzIG5ldyBmdW5jdGlvbnMgaW5zdGVhZCBvZiB0aGUgb2xkLgoJClRodSBTZXAgMzAgMDA6MTM6MjcgMTk5OSAgRGlyayBab2xsZXIgIDxkdXpAcnRzZmZtLmNvbT4KCgkqIGNwLXRyZWUuaCAod2Fybl9mbG9hdF9lcXVhbCk6IERlY2xhcmUuCgkqIGRlY2wyLmMgKHdhcm5fZmxvYXRfZXF1YWwpOiBEZWZpbmUuCgkobGFuZ19kZWNvZGVfb3B0aW9uKTogUmVjb2duaXplIC1XW25vLV1mbG9hdC1lcXVhbC4KCSogdHlwZWNrLmMgKGJ1aWxkX2JpbmFyeV9vcF9ub2RlZmF1bHQpOiBDb25kaXRpb25hbGx5IHdhcm4KCWFib3V0IGVxdWFsaXR5IHRlc3RzIG9mIGZsb2F0aW5nIHBvaW50IHR5cGVzLgoKMTk5OS0wOS0yOSAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCVN1cHBvcnQgbm9ybWFsIHR5cGVfaW5mby1iYXNlZCBFSCBtZWNoYW5pc21zIHdpdGggLWZuby1ydHRpLgoJKiBleGNlcHQuYyAoYnVpbGRfZWhfdHlwZV90eXBlKTogUmVtb3ZlIHNwZWNpYWwgLWZuby1ydHRpIGhhbmRsaW5nLgoJKGJ1aWxkX2VoX3R5cGVfdHlwZV9yZWYpOiBMaWtld2lzZS4KCShidWlsZF9laF90eXBlKTogUmVtb3ZlLgoJKGV4cGFuZF90aHJvdyk6IENhbGwgYnVpbGRfZWhfdHlwZV90eXBlLCBub3QgYnVpbGRfZWhfdHlwZS4KCSogZGVjbDIuYyAoaW1wb3J0X2V4cG9ydF9kZWNsKTogRG9uJ3QgYXNzb2NpYXRlIHRoZSB0aW5mbyBmbiB3aXRoCgl0aGUgdnRhYmxlIGlmIC1mbm8tcnR0aS4KCSogZGVjbC5jIChpbml0X2RlY2xfcHJvY2Vzc2luZyk6IEFsd2F5cyBpbml0X3J0dGlfcHJvY2Vzc2luZy4KCgkqIHJ0dGkuYyAoZ2V0X3R5cGVpZCk6IERvbid0IGNvbXBsYWluIGFib3V0IC1mbm8tcnR0aS4KCgkqIGNsYXNzLmMgKGNsYXNzX2NhY2hlX29ic3RhY2ssIGNsYXNzX29ic3RhY2spOiBSZW1vdmUuCgkoaW5pdF9jbGFzc19wcm9jZXNzaW5nKTogRG9uJ3QgaW5pdGlhbGl6ZSBjbGFzc19vYnN0YWNrLgoJKHB1c2hfY2FjaGVfb2JzdGFjayk6IFJlbW92ZS4KCShwdXNoY2xhc3MpOiBEb24ndCBjYWxsIGl0LgoJKiBjcC10cmVlLmg6IFJlbW92ZSBwcm90b3R5cGUgZm9yIHB1c2hfY2FjaGVfb2JzdGFjay4KCSogZGVjbC5jIChkZWNsX29ic3RhY2ssIGRlY2xfc3RhY2ssIHB1c2hfZGVjbF9sZXZlbCk6IFJlbW92ZS4KCShwdXNobGV2ZWxfY2xhc3MpOiBEb24ndCBwdXNoX2RlY2xfbGV2ZWwuCgkocG9wbGV2ZWxfY2xhc3MpOiBEb24ndCBwb3Bfc3RhY2tfbGV2ZWwuCgkocHVzaF9jbGFzc19sZXZlbF9iaW5kaW5nKTogRG9uJ3QgcHVzaF9jYWNoZV9vYnN0YWNrLgoJKGluaXRfZGVjbF9wcm9jZXNzaW5nKTogRG9uJ3QgaW5pdGlhbGl6ZSBkZWNsX29ic3RhY2suCgkqIHNlYXJjaC5jIChwdXNoX2NsYXNzX2RlY2xzKTogRG9uJ3QgcHVzaF9jYWNoZV9vYnN0YWNrLgoJKiB0cmVlLmMgKGxpc3RfaGFzaF9hZGQpOiBQdXQgaGFzaCBub2RlIG9uIHBlcm1hbmVudF9vYnN0YWNrLgoJKGhhc2hfdHJlZV9jb25zKTogRG9uJ3QgbWVzcyB3aXRoIG9ic3RhY2tzLgoJKHByaW50X2xhbmdfc3RhdGlzdGljcyk6IERvbid0IHByaW50IHN0YXRzIGZvciBjbGFzc19vYnN0YWNrIGFuZAoJZGVjbF9vYnN0YWNrLgoKMTk5OS0wOS0yOSAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGR1bXAuYyAoZGVxdWV1ZV9hbmRfZHVtcCk6IER1bXAgREVDTF9FWFRFUk5BTC4KCSogaXIudGV4aTogRG9jdW1lbnQgREVDTF9FWFRFUk5BTC4KCgkqIGR1bXAuYyAoZGVxdWV1ZV9hbmRfZHVtcCk6IEltcHJvdmUgc3VwcG9ydCBmb3IgZHVtcGluZyBUSFVOS19ERUNMcy4KCSogaXIudGV4aTogRG9jdW1lbnQgVEhVTktfREVDTHMuCgoJKiBjcC10cmVlLmggKFRNUExfQVJHU19IQVZFX01VTFRJUExFX0xFVkVMUyk6IE1vdmUgaGVyZSBmcm9tIHB0LmMuCgkoVE1QTF9BUkdTX0RFUFRILCBUTVBMX0FSR1NfTEVWRUwsIFNFVF9UTVBMX0FSR1NfTEVWRUwpOiBMaWtld2lzZS4KCShUTVBMX0FSRywgU0VUX1RNUExfQVJHLCBOVU1fVE1QTF9BUkdTLCBUTVBMX1BBUk1TX0RFUFRIKTogTGlrZXdpc2UuCgkqIGVycm9yLmMgKGR1bXBfdGVtcGxhdGVfYmluZGluZ3MpOiBSZW1vdmUgdW51c2VkIHBhcmFtZXRlci4KCUhhbmRsZSBtdWx0aXBsZSBsZXZlbHMgb2YgdGVtcGxhdGUgcGFyYW1ldGVycy4KCShkdW1wX3RlbXBsYXRlX2RlY2wpOiBVc2UgYHBhcm1zJywgbm90IGBhcmdzJywgZm9yIHRlbXBsYXRlCglwYXJhbWV0ZXJzLiAgRml4IHRoaW5rby4KCShkdW1wX2Z1bmN0aW9uX2RlY2wpOiBVc2UgREVDTF9URU1QTEFURV9JTlNUQU5USUFUSU9OLiAgRG9uJ3QgcGFzcwoJZmxhZ3MgdG8gZHVtcF90ZW1wbGF0ZV9iaW5kaW5ncy4KCSogcHQuYyAoVE1QTF9BUkdTX0hBVkVfTVVMVElQTEVfTEVWRUxTKTogTW92ZSB0byBjcC10cmVlLmguCgkoVE1QTF9BUkdTX0RFUFRILCBUTVBMX0FSR1NfTEVWRUwsIFNFVF9UTVBMX0FSR1NfTEVWRUwpOiBMaWtld2lzZS4KCShUTVBMX0FSRywgU0VUX1RNUExfQVJHLCBOVU1fVE1QTF9BUkdTLCBUTVBMX1BBUk1TX0RFUFRIKTogTGlrZXdpc2UuCgkodHN1YnN0X2NvcHkpOiBDbGFyaWZ5IHZhcmlhYmxlIG5hbWUuCgkobW9zdF9nZW5lcmFsX3RlbXBsYXRlKTogUm9idXN0aWZ5LgoJCjE5OTktMDktMjkgIE5hdGhhbiBTaWR3ZWxsICA8bmF0aGFuQGFjbS5vcmc+CgoJKiBlcnJvci5jIChkdW1wX3RlbXBsYXRlX3Bhcm1zKTogRG9uJ3QgdXNlIFRTX1BFREFOVElDX05BTUUKCXRvIGNoYW5nZSBwcmltYXJ5IHRlbXBsYXRlIHJlbmRlcmluZy4KCjE5OTktMDktMjkgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjcC10cmVlLmggKFVQVF9URU1QTEFURSk6IFJlbW92ZS4KCShVUFRfUEFSTVMpOiBMaWtld2lzZS4KCShERUNMX05FRURFRF9QKTogTmV3IG1hY3JvLgoJKiBkZWNsMi5jIChmaW5pc2hfdnRhYmxlX3ZhcmRlY2wpOiBVc2UgaXQuCgkoZmluaXNoX29iamVjdHMpOiBEb24ndCBjcmFzaCB3aXRoIC1mc3ludGF4LW9ubHkuCgkoZmluaXNoX2ZpbGUpOiBVc2UgREVDTF9ORUVERURfUC4gIERvbid0IHBydW5lIHZ0YWJsZXMgd2hlbgoJLWZzeW50YXgtb25seS4KCSogcHQuYyAodHN1YnN0X2ZyaWVuZF9mdW5jdGlvbik6IFJlbW92ZSBGSVhNRSB0aGF0IHRhbGtzIGFib3V0CglvYnN0YWNrcy4KCSh0c3Vic3RfZXhwcik6IENvcnJlY3QgaGFuZGxpbmcgb2YgZnVuY3Rpb24gdHJ5LWJsb2Nrcy4KCSogc2VtYW50aWNzLmM6IEluY2x1ZGUgZmxhZ3MuaC4KCShleHBhbmRfYm9keSk6IERvbid0IGRvIFJUTCBnZW5lcmF0aW9uIGlmIC1mc3ludGF4LW9ubHkuCgkqIE1ha2VmaWxlLmluIChzZW1hbnRpY3Mubyk6IERlcGVuZHMgb24gZmxhZ3MuaC4KCQoxOTk5LTA5LTI4ICBHYWJyaWVsIERvcyBSZWlzICA8Z2RyQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBwdC5jIChtb3N0X2dlbmVyYWxfdGVtcGxhdGUpOiBBZGp1c3QgZGVjbGFyYXRpb24uCgoJKiBjcC10cmVlLmg6IChtb3N0X2dlbmVyYWxfdGVtcGxhdGUpOiBEZWNsYXJlLgoKCSogZXJyb3IuYyAoZHVtcF90ZW1wbGF0ZV92YWx1ZSk6IFJlbmFtZSB0byAuLi4KCShkdW1wX3RlbXBsYXRlX2FyZ3VtZW50KTogVGhpcy4KCShkdW1wX3RlbXBsYXRlX2FyZ3VtZW50X2xpc3QpOiBOZXcgZnVuY3Rpb24uCgkoZHVtcF90eXBlKTogVXNlIGl0LgoJKGR1bXBfdGVtcGxhdGVfcGFyYW1ldGVyKTogTmV3IGZ1bmN0aW9uLgoJKGR1bXBfdGVtcGxhdGVfZGVjbCk6IFVzZSBpdC4KCShkdW1wX3RlbXBsYXRlX2JpbmRpbmdzKTogTmV3IGZ1bmN0aW9uLgoJKGR1bXBfZnVuY3Rpb25fZGVjbCk6IFVzZSBpdC4gUHJldHR5IHByaW50IGZ1bmN0aW9uIHRlbXBsYXRlCglpbnN0YW50aWF0aW9ucy4KCjE5OTktMDktMjggIE5hdGhhbiBTaWR3ZWxsICA8bmF0aGFuQGFjbS5vcmc+CgoJKiBkZWNsLmMgKGdyb2tkZWNsYXJhdG9yKTogRGlzdGluZ3Vpc2ggcGFyYW1ldGVyIGNvbnRleHQgZm9yCglkaWFnbm9zdGljcy4gVGlkeSB1cCBtaXNzaW5nIHR5cGUgZGlhZ25vc3RpYy4KCURpYWdub3NlIGBleHBsaWNpdCcgaW4gb25lIHBsYWNlLiBEaWFnbm9zZSBgbXV0YWJsZScgaW4gb25lIHBsYWNlLgoKMTk5OS0wOS0yOCAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGlyLnRleGk6IEltcHJvdmUgZG9jdW1lbnRhdGlvbiBmb3IgVEFSR0VUX0VYUFIuCgoxOTk5LTA5LTI3ICBOYXRoYW4gU2lkd2VsbCAgPG5hdGhhbkBhY20ub3JnPgoKCUF1Z21lbnQgc3RyaW5naWZpY2F0aW9uIG9mIHRyZWVzLgoJKiBjcC10cmVlLmggKHRyZWVfc3RyaW5nX2ZsYWdzKTogTmV3IGVycm9yIHN0cmluZ2lmeWluZyBlbnVtZXJhdGlvbi4KCShmbmRlY2xfYXNfc3RyaW5nLCB0eXBlX2FzX3N0cmluZ19yZWFsLCBhcmdzX2FzX3N0cmluZywKCWNvZGVfYXNfc3RyaW5nLCBsYW5ndWFnZV9hc19zdHJpbmcsIHBhcm1fYXNfc3RyaW5nLAoJb3BfYXNfc3RyaW5nLCBhc3NvcF9hc19zdHJpbmcsIGN2X2FzX3N0cmluZyk6IFJlbW92ZS4KCSh0eXBlX2FzX3N0cmluZywgZGVjbF9hc19zdHJpbmcsIGV4cHJfYXNfc3RyaW5nKTogQWRqdXN0IHByb3RvdHlwZS4KCShjb250ZXh0X2FzX3N0cmluZyk6IERlY2xhcmUgbmV3IGZ1bmN0aW9uLgoJKiBlcnJvci5jIChjcF9wcmludGVycyk6IE1vdmUgZGVmaW5pdGlvbi4KCShPQl9VTlBVVCk6IFJlbW92ZS4KCShPQl9FTkRfVEVNUExBVEVfSUQpOiBBZGp1c3QuCgkoaW50ZXJlc3Rpbmdfc2NvcGVfcCk6IFJlbW92ZS4KCShkdW1wX3Njb3BlKTogTmV3IHN0YXRpYyBmdW5jdGlvbi4KCShkdW1wX3F1YWxpZmllcnMpOiBBZGp1c3QgcHJvdG90eXBlLCByZWltcGxlbWVudC4KCShkdW1wX3RlbXBsYXRlX3ZhbHVlKTogVXNlIHRyZWVfc3RyaW5nX2ZsYWdzLgoJKGR1bXBfdHlwZV9yZWFsKTogTW92ZSBiYWNrIHRvIGR1bXBfdHlwZS4KCShkdW1wX3R5cGUpOiBBZGp1c3QgcHJvdG90eXBlLiBVc2UgdHJlZV9zdHJpbmdfZmxhZ3MuCgkoZHVtcF9hZ2dyX3R5cGUpOiBMaWtld2lzZS4gVXNlIGR1bXBfdGVtcGxhdGVfcGFybXMuCgkoZHVtcF90eXBlX3ByZWZpeCk6IEFkanVzdCBwcm90b3R5cGUuIFVzZSB0cmVlX3N0cmluZ19mbGFncy4KCVJldHVybiBwYWQgZmxhZy4KCShkdW1wX3R5cGVfc3VmZml4KTogQWRqdXN0IHByb3RvdHlwZS4gVXNlIHRyZWVfc3RyaW5nX2ZsYWdzLgoJKGR1bXBfc2ltcGxlX2RlY2wpOiBMaWtld2lzZS4KCShkdW1wX2RlY2wpOiBMaWtld2lzZS4gVXNlIGR1bXBfdGVtcGxhdGVfZGVjbC4KCShkdW1wX3RlbXBsYXRlX2RlY2wpOiBOZXcgc3RhdGljIGZ1bmN0aW9uIGJyb2tlbiBvdXQgb2YgZHVtcF9kZWNsLgoJKGR1bXBfZnVuY3Rpb25fZGVjbCk6IEFkanVzdCBwcm90b3R5cGUuIFVzZSB0cmVlX3N0cmluZ19mbGFncy4KCShkdW1wX3BhcmFtZXRlcnMpOiBMaWtld2lzZS4gUHJlZml4IHNwYWNlLgoJKGR1bXBfZXhjZXB0aW9uX3NwZWMpOiBBZGp1c3QgcHJvdG90eXBlLiBVc2UgdHJlZV9zdHJpbmdfZmxhZ3MuCgkoZHVtcF9mdW5jdGlvbl9uYW1lKTogTGlrZXdpc2UuIFVzZSBkdW1wX3RlbXBsYXRlX3Bhcm1zLgoJKGR1bXBfdGVtcGxhdGVfcGFybXMpOiBOZXcgc3RhdGljIGZ1bmN0aW9uIGJyb2tlbiBvdXQgb2YKCWR1bXBfZnVuY3Rpb25fbmFtZS4KCShkdW1wX2V4cHJfbGlzdCk6IEFkanVzdCBwcm90b3R5cGUuIFVzZSB0cmVlX3N0cmluZ19mbGFncy4KCShkdW1wX2V4cHIpOiBMaWtld2lzZS4KCShmbmRlY2xfYXNfc3RyaW5nKTogUmVtb3ZlZAoJKHR5cGVfYXNfc3RyaW5nX3JlYWwpOiBSZW1vdmVkCgkoZHVtcF9iaW5hcnlfb3ApOiBBZGp1c3QgcHJvdG90eXBlLiBVc2UgdHJlZV9zdHJpbmdfZmxhZ3MuCgkoZHVtcF91bmFyeV9vcCk6IExpa2V3aXNlLgoJKHR5cGVfYXNfc3RyaW5nKTogTGlrZXdpc2UuCgkoZXhwcl9hc19zdHJpbmcpOiBMaWtld2lzZS4KCShkZWNsX2FzX3N0cmluZyk6IExpa2V3aXNlLgoJKGNvbnRleHRfYXNfc3RyaW5nKTogTmV3IGZ1bmN0aW9uLgoJKGxhbmdfZGVjbF9uYW1lKTogQWRqdXN0LgoJKGRlY2xfdG9fc3RyaW5nKTogTmV3IHN0YXRpYyBwcmludCBjYWxsYmFjay4KCShleHByX3RvX3N0cmluZyk6IExpa2V3aXNlLgoJKGZuZGVjbF90b19zdHJpbmcpOiBMaWtld2lzZS4KCShjb2RlX2FzX3N0cmluZyk6IFJlbmFtZWQgdG8gLi4uCgkoY29kZV90b19zdHJpbmcpOiAuLi4gaGVyZS4gQWRqdXN0LgoJKGxhbmd1YWdlX2FzX3N0cmluZyk6IFJlbmFtZWQgdG8gLi4uCgkobGFuZ3VhZ2VfdG9fc3RyaW5nKTogLi4uIGhlcmUuIEFkanVzdC4KCShwYXJtX2FzX3N0cmluZyk6IFJlbmFtZWQgdG8gLi4uCgkocGFybV90b19zdHJpbmcpOiAuLi4gaGVyZS4KCShvcF9hc19zdHJpbmcpOiBSZW5hbWVkIHRvIC4uLgoJKG9wX3RvX3N0cmluZyk6IC4uLiBoZXJlLgoJKGFzc29wX2FzX3N0cmluZyk6IFJlbmFtZWQgdG8gLi4uCgkoYXNzb3BfdG9fc3RyaW5nKTogLi4uIGhlcmUuCgkodHlwZV90b19zdHJpbmcpOiBOZXcgc3RhdGljIHByaW50IGNhbGxiYWNrLgoJKGFyZ3NfYXNfc3RyaW5nKTogUmVuYW1lZCB0byAuLi4KCShhcmdzX3RvX3N0cmluZyk6IC4uLiBoZXJlLiBBZGp1c3QuCgkoY3ZfYXNfc3RyaW5nKTogUmVuYW1lZCB0byAuLi4KCShjdl90b19zdHJpbmcpOiAuLi4gaGVyZS4gQWRqdXN0LgoJKiBwdC5jIChtYW5nbGVfY2xhc3NfbmFtZV9mb3JfdGVtcGxhdGUpOiBVc2UgdHJlZV9zdHJpbmdfZmxhZ3MuCgkocHJpbnRfdGVtcGxhdGVfY29udGV4dCk6IExpa2V3aXNlLgoKMTk5OS0wOS0yNiAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGNwLXRyZWUuaCAoZXhwYW5kX3Rocm93KTogUmVtb3ZlIHByb3RvdHlwZS4KCSogZXhjZXB0LmMgKGV4cGFuZF90aHJvdyk6IE1ha2UgaXQgc3RhdGljLiAgVXNlIHRyZWUtZ2VuZXJhdGlvbgoJZnVuY3Rpb25zLCByYXRoZXIgdGhhbiBSVEwtZ2VuZXJhdGlvbiBmdW5jdGlvbnMuCgkoYnVpbGRfdGhyb3cpOiBVc2UgaXQuCgkqIGV4cHIuYzogSW5jbHVkZSBleGNlcHQuaC4KCShjcGx1c19leHBhbmRfZXhwcik6IERvbid0IGNhbGwgZXhwYW5kX3Rocm93IGhlcmUuCgkqIE1ha2VmaWxlLmluIChleHByLm8pOiBEZXBlbmQgb24gZXhjZXB0LmguCgkqIGlyLnRleGk6IFVwZGF0ZSBkb2N1bWVudGF0aW9uIGZvciBUSFJPV19FWFBSLgoJCgkqIGRlY2wuYyAoc3RhcnRfZnVuY3Rpb24pOiBTZXQgeF9kb250X3NhdmVfcGVuZGluZ19zaXplcyByYXRoZXIKCXRoYW4gY2FsbGluZyBnZXRfcGVuZGluZ19zaXplcy4KCSogaW5pdC5jIChidWlsZF9uZXcpOiBEb24ndCBzYXZlIGFuZCByZXN0b3JlCglpbW1lZGlhdGVfc2l6ZV9leHBhbmQ7IGluc3RlYWQsIGFzc2VydCB0aGF0IGl0IGhhcyB0aGUgZXhwZWN0ZWQKCXZhbHVlIGFscmVhZHkuCgoxOTk5LTA5LTI2ICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBsZXguYyAoY29tcGlsZXJfZXJyb3IpOiBBZGQgbWlzc2luZyBjYWxsIHRvIHZhX2VuZCgpLgoKMTk5OS0wOS0yNSAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGR1bXAuYyAoZGVxdWV1ZV9hbmRfZHVtcCk6IEhhbmRsZSBSRVNVTFRfREVDTC4KCSogaXIudGV4aTogRG9jdW1lbnQgUkVTVUxUX0RFQ0wgYW5kIERFQ0xfUkVTVUxULgoKCSogY3AtdHJlZS5oIChjaGVja19yZXR1cm5fZXhwcik6IE5ldyBmdW5jdGlvbi4KCSogZGVjbC5jIChmaW5pc2hfY29uc3RydWN0b3JfYm9keSk6IE5ldyBmdW5jdGlvbi4KCShwdXNoZGVjbCk6IFB1dCBnbG9iYWwgZnJpZW5kIGZ1bmN0aW9ucyBpbiBuYW1lc3BhY2UgYmluZGluZwoJbGV2ZWwsIG5vdCB0aGUgY2xhc3MgYmluZGluZyBsZXZlbC4KCShmaW5pc2hfZGVzdHJ1Y3Rvcl9ib2R5KTogTWFrZSBzdXJlIHRoZSBkdG9yX2xhYmVsIGlzIGFsd2F5cwoJZGVmaW5lZC4gIEZpeCB0eXBvIGluIGNvbW1lbnQuCgkoZmluaXNoX2Z1bmN0aW9uKTogTW92ZSBnZW5lcmF0aW9uIG9mIGNvbnN0cnVjdG9yLXRlcm1pbmF0aW9uIGNvZGUKCXRvIHNlbWFudGljLWFuYWx5c2lzIHRpbWUuICBNb3ZlIGdlbmVyYXRpb24gb2YgaW1wbGljaXQgYG1haW4nCglyZXR1cm4gdmFsdWUgdG8gc2VtYW50aWMtYW5hbHlzaXMgdGltZS4KCSogc2VtYW50aWNzLmMgKGZpbmlzaF9yZXR1cm5fc3RtdCk6IEdlbmVyYXRlIGdvdG8ncyB0bwoJY3Rvcl9sYWJlbC9kdG9yX2xhYmVsIGhlcmUuICBVc2UgY2hlY2tfcmV0dXJuX2V4cHIgdG8gZG8gc2VtYW50aWMKCWFuYWx5c2lzIG9uIHRoZSByZXR1cm5lZCBleHByZXNzaW9uLgoJKiB0eXBlY2suYyAobWF5YmVfd2Fybl9hYm91dF9yZXR1cm5pbmdfYWRkcmVzc19vZl9sb2NhbCk6IE5ldwoJZnVuY3Rpb24gc3BsaXQgb3V0IGZyb20gY19leHBhbmRfcmV0dXJuLgoJKGNoZWNrX3JldHVybl9leHByKTogTGlrZXdpc2UuCgkoY19leHBhbmRfcmV0dXJuKTogSnVzdCBnZW5lcmF0ZSB0aGUgUlRMIGZvciB0aGUgcmV0dXJuLgoJCjE5OTktMDktMjQgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjcC10cmVlLmggKENQVElfQ0xFQU5VUF9UWVBFKTogTmV3IG1hY3JvLgoJKGNsZWFudXBfdHlwZSk6IExpa2V3aXNlLgoJKHNlYXJjaF90cmVlKTogQ2hhbmdlIHByb3RvdHlwZS4KCSogZGVjbC5jIChsb2NhbF92YXJpYWJsZV9wKTogQWRqdXN0IGZvciBuZXcgaW50ZXJmYWNlIHRvCglzZWFyY2hfdHJlZS4KCShjaGVja19kZWZhdWx0X2FyZ3VtZW50KTogTGlrZXdpc2UuCgkqIGVycm9yLmMgKGR1bXBfZXhwcik6IEhhbmRsZSBJTklUX0VYUFIuCgkqIGV4Y2VwdC5jIChleHBhbmRfdGhyb3cpOiBEb24ndCBtYWtlIGNsZWFudXBfdHlwZSBhIGxvY2FsIHN0YXRpYy4KCSogZXhwci5jIChjcGx1c19leHBhbmRfZXhwcik6IERvbid0IGhhbmRsZSBORVdfRVhQUi4KCSogaW5pdC5jIChidWlsZF9uZXcpOiBDYWxsIGJ1aWxkX25ld18xIGRpcmVjdGx5LCByYXRoZXIgdGhhbgoJYnVpbGRpbmcgYSBORVdfRVhQUi4KCShidWlsZF9uZXdfMSk6IFRpZHkuICBEb24ndCBidWlsZCBhIFZFQ19JTklUX0VYUFIgZXhjZXB0IHdoZW4KCXByb2Nlc3NpbmcgZmlsZS1zY29wZSBpbml0aWFsaXplcnMuCgkqIGxleC5jIChpbml0X3BhcnNlKTogQWRkIGFuIG9wbmFtZV90YWIgZW50cnkgZm9yIElOSVRfRVhQUi4KCSogdHJlZS5jOiBJbmNsdWRlIHNwbGF5LXRyZWUuaAoJKG5vX2xpbmthZ2VfaGVscGVyKTogQWRqdXN0IGZvciBuZXcgaW50ZXJmYWNlIHRvIHNlYXJjaF90cmVlLgoJKHNlYXJjaF90cmVlKTogUGFzcyBhcm91bmQgcG9pbnRlcnMgdG8gdHJlZSBub2RlcywgcmF0aGVyIHRoYW4gdGhlCglub2RlcyB0aGVtc2VsdmVzLiAgSGFuZGxlIFZFQ19JTklUX0VYUFIuCgkobm9fbGlua2FnZV9jaGVjayk6IEFkanVzdCBmb3IgbmV3IGludGVyZmFjZSB0byBzZWFyY2hfdHJlZS4KCShtYXBjYXIpOiBIYW5kbGUgVkVDX0lOSVRfRVhQUi4KCSh0YXJnZXRfcmVtYXApOiBOZXcgdmFyaWFibGUuCgkoYm90X21hbmlwKTogVXNlIGl0LgoJKGJvdF9yZXBsYWNlKTogTmV3IGZ1bmN0aW9uLgoJKGJyZWFrX291dF90YXJnZXRfZXhwcnMpOiBVc2UgaXQgdG8gcmVtYXAgYWxsIHZhcmlhYmxlcyB1c2VkIGluIGEKCWRlZmF1bHQgYXJndW1lbnQgZXhwcmVzc2lvbi4KCSogdHlwZWNrLmMgKGJ1aWxkX21vZGlmeV9leHByKTogRG9uJ3QgY3Jhc2ggd2hlbiBvdXRzaWRlIGEKCWZ1bmN0aW9uIGFuZCBwcmVzZW50ZWQgd2l0aCBhbiBJTklUX0VYUFIgYXNzaWdubWVudAoJKiBNYWtlZmlsZS5pbiAodHJlZS5vKTogRGVwZW5kIG9uIHNwbGF5LXRyZWUuaC4KCkZyaSBTZXAgMjQgMTA6NDg6MTAgMTk5OSAgQmVybmQgU2NobWlkdCAgPGJlcm5kc0BjeWdudXMuY28udWs+CgoJKiBkZWNsLmMgKGR1cGxpY2F0ZV9kZWNscyk6IFVzZSBERUNMX0JVSUxUX0lOX0NMQVNTIHJhdGhlciB0aGFuCglERUNMX0JVSUxUX0lOLgoJKGJ1aWx0aW5fZnVuY3Rpb24pOiBOZXcgYXJnIENMQVNTLiAgQXJnIENPREUgbm93IG9mIHR5cGUgaW50LiAgQWxsCgljYWxsZXJzIGNoYW5nZWQuCglTZXQgdGhlIGJ1aWx0aW4ncyBERUNMX0JVSUxUX0lOX0NMQVNTLgoKMTk5OS0wOS0yNCAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGRlY2wuYyAocHVzaGRlY2wpOiBEb24ndCBtYWtlIGxvY2FsIGRlY2xhcmF0aW9ucyBvZiBleHRlcm4KCXZhcmlhYmxlcyBnaXZlIHRoZSB2YXJpYWJsZSBhIERFQ0xfQ09OVEVYVCBmb3IgdGhlIGZ1bmN0aW9uLgoJKG1ha2VfcnRsX2Zvcl9ub25sb2NhbF9kZWNsKTogRG9uJ3QgZnVzcyB3aXRoIG9ic3RhY2tzLiAgU2ltcGxpZnkuCglEb24ndCBhY2NpZGVudGFsbHkgbWFrZSBSVEwgZm9yIGxvY2FsIGRlY2xhcmF0aW9ucy4KCShlbWl0X2xvY2FsX3Zhcik6IEhhbmRsZSBkZWNsYXJhdGlvbnMgd2l0aCBhc20tc3BlY2lmaWVycyBoZXJlLgoJCjE5OTktMDktMjMgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBpci50ZXhpOiBJbXByb3ZlIGRvY3VtZW50YXRpb24gZm9yIFRBUkdFVF9FWFBScy4gIERpc2N1c3MKCVNUTVRfSVNfRlVMTF9FWFBSX1AuCgoJKiBjcC10cmVlLmggKGxhbmd1YWdlX2Z1bmN0aW9uKTogQWRkIGNhbm5vdF9pbmxpbmUuCgkqIGRlY2wuYyAoc3RhcnRfZnVuY3Rpb24pOiBSZXN0b3JlIGN1cnJlbnRfZnVuY3Rpb25fY2Fubm90X2lubGluZQoJZnJvbSB0aGUgc2F2ZWQgdmFsdWUuCgkoc2F2ZV9mdW5jdGlvbl9kYXRhKTogU2F2ZSBjdXJyZW50X2Z1bmN0aW9uX2Nhbm5vdF9pbmxpbmUuCgkqIGRlY2wyLmMgKHN0YXJ0X29iamVjdHMpOiBDaGFuZ2UgcHJvdG90eXBlLiAgQnVpbGQgdGhlIGZ1bmN0aW9uCglpbiBmdW5jdGlvbi1hdC1hLXRpbWUgbW9kZS4KCShmaW5pc2hfb2JqZWN0cyk6IExpa2V3aXNlLgoJKGdlbmVyYXRlX2N0b3Jfb3JfZHRvcl9mdW5jdGlvbik6IEFkanVzdCBhY2NvcmRpbmdseS4KCQoJKiBjcC10cmVlLmggKERFQ0xfQU5PTl9VTklPTl9FTEVNUyk6IE5ldyBtYWNyby4KCSogZGVjbDIuYyAoZmluaXNoX2Fub25fdW5pb24pOiBTZXQgREVDTF9BTk9OX1VOSU9OX0VMRU1TLgoJRG9uJ3QgY2FsbCBleHBhbmRfYW5vbl91bmlvbl9kZWNsIGhlcmUKCSogc2VtYW50aWNzLmMgKGV4YXBuZF9zdG10KTogQ2FsbCBpdCBoZXJlLCBpbnN0ZWFkLgoJKiB0eXBlY2suYyAobWFya19hZGRyZXNzYWJsZSk6IEFkZHJlc3NlZCB2YXJpYWJsZXMgYXJlIGltcGxpY2l0bHkKCXVzZWQuCgkKMTk5OS0wOS0yMyAgTWFydGluIHYuIEz2d2lzICA8bG9ld2lzQGluZm9ybWF0aWsuaHUtYmVybGluLmRlPgoKCSogY3AtdHJlZS5oIChWQVJfT1JfRlVOQ1RJT05fREVDTF9DSEVDSyk6IE5ldyBtYWNyby4KCShSRUNPUkRfT1JfVU5JT05fVFlQRV9DSEVDSywgTEFOR19JREVOVElGSUVSX0NBU1QpOiBMaWtld2lzZS4KCShERUZBUkdfTk9ERV9DSEVDSyk6IFJlbW92ZTsgcmVwbGFjZSB3aXRoIERFRkFVTFRfQVJHX0NIRUNLLgoJKiBjcC10cmVlLmg6IEFkZCB0cmVlIGNoZWNraW5nIG1hY3JvcyB0byB2YXJpb3VzIHRyZWUgYWNjZXNzCgltYWNyb3MuCQoJKiBwdHJlZS5jIChwcmludF9sYW5nX2RlY2wpOiBUZXN0IGZvciBmdW5jdGlvbiBvciB2YXJpYWJsZQoJYmVmb3JlIGFjY2Vzc2luZyB0ZW1wbGF0ZSBpbmZvLgoKMTk5OS0wOS0yMyAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogbGV4LmM6IEdldCBXQ0hBUl9UWVBFX1NJWkUgZnJvbSB3Y2hhcl90eXBlX25vZGUuCgkqIGxhbmctc3BlY3MuaDogSWYgLWZzaG9ydC13Y2hhciwgb3ZlcnJpZGUgX19XQ0hBUl9UWVBFX18uCgkqIGRlY2wyLmMgKGxhbmdfZl9vcHRpb25zKTogQWRkIC1mc2hvcnQtd2NoYXIuCgkqIGNwLXRyZWUuaDogRGVjbGFyZSBmbGFnX3Nob3J0X3djaGFyLgoJKiBkZWNsLmMgKGluaXRfZGVjbF9wcm9jZXNzaW5nKTogSWYgLWZzaG9ydC13Y2hhciwgdXNlICdzaG9ydCB1bnNpZ25lZCAKCWludCcgZm9yIHdjaGFyX3QuCgoxOTk5LTA5LTIzICBNYXJ0aW4gdi4gTPZ3aXMgIDxsb2V3aXNAaW5mb3JtYXRpay5odS1iZXJsaW4uZGU+CgoJKiBpci50ZXhpOiBGaXggZm9ybWF0dGluZyBlcnJvcnMgYW5kIHR5cG9zLgoKMTk5OS0wOS0yMiAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGlyLnRleGk6IERvY3VtZW50IENMRUFOVVBfU1RNVCwgU0NPUEVfU1RNVCwgYW5kIFNUQVJUX0NBVENIX1NUTVQuCgoJKiBkZWNsLmMgKHB1c2hkZWNsKTogRG8gY3JlYXRlIGEgYmluZGluZyBmb3IgZXh0ZXJuICJDIiBmdW5jdGlvbnMsCglidXQgbm90IGZvciB0aGVpciBERUNMX0FTU0VNQkxFUl9OQU1Fcy4KCShsb29rdXBfbmFtZV9jdXJyZW50X2xldmVsKTogRml4IGZvcm1hdHRpbmcuCgkoeHJlZl90YWcpOiBMaWtld2lzZS4KCSogZGVjbDIuYyAoc3RhcnRfb2JqZWN0cyk6IE1hcmsgc3RhdGljIGNvbnN0cnVjdG9ycyBhbmQKCWRlc3RydWN0b3JzIGFzIHVzZWQuCgoxOTk5LTA5LTIyICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBkZWNsLmMgKGRlZmluZV9jYXNlX2xhYmVsKTogRG9uJ3QgY3Jhc2ggaWYgd2UncmUgbm90IGluIGEgc3dpdGNoLgoKCSogZGVjbDIuYyAobGFuZ19kZWNvZGVfb3B0aW9uKTogRG9uJ3QgYm90aGVyIGV4cGxpY2l0bHkgaWdub3JpbmcgZmxhZ3MuCgkqIGxhbmctb3B0aW9ucy5oOiBSZXN0b3JlIC1mdGhpcy1pcy12YXJpYWJsZS4gIFJlbW92ZSBoZWxwIHN0cmluZ3MKCWZvciB1bnN1cHBvcnRlZCBmbGFncy4KCjE5OTktMDktMjEgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIGRlY2wyLmMgKGxhbmdfZGVjb2RlX29wdGlvbik6IEFjY2VwdCBhbmQgaWdub3JlIC1maW5pdC1wcmlvcml0eS4KCUFjY2VwdCBhbmQgd2FybiBhYm91dCAtZnRoaXMtaXMtdmFyaWFibGUuCgoxOTk5LTA5LTIxICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogZHVtcC5jIChkZXF1ZXVlX2FuZF9kdW1wKTogSGFuZGxlIFNUQVJUX0NBVENIX1NUTVQsCglDTEVBTlVQX1NUTVQsIGFuZCBTQ09QRV9TVE1ULgoKCSogZGVjbDIuYyAobGFuZ19kZWNvZGVfb3B0aW9uKTogQWRqdXN0LCBpbiB0aGUgd2FrZSBvZiByZWNlbnQKCWNoYW5nZXMgdG8gb3B0aW9uIHByb2Nlc3NpbmcuCgoxOTk5LTA5LTIxICBNYXJ0aW4gdi4gTPZ3aXMgIDxsb2V3aXNAaW5mb3JtYXRpay5odS1iZXJsaW4uZGU+CgoJKiB0eXBlY2suYyAoZ2V0X21lbWJlcl9mdW5jdGlvbl9mcm9tX3B0cmZ1bmMpOiBBbGxvdyBleHRyYWN0aW9uIG9mCglmdW5jdGlvbiBwb2ludGVyIGZyb20gcG1mcyB3aXRoIG5vIG9iamVjdCBnaXZlbi4KCShjb252ZXJ0X2Zvcl9hc3NpZ25tZW50KTogRG8gbm90IHJldHVybiBlcnJvciB3aGVuIGNvbnZlcnRpbmcKCXBtZnMuCgoxOTk5LTA5LTIxICBBbGV4IFNhbXVlbCAgPHNhbXVlbEBjb2Rlc291cmNlcnkuY29tPgoKCSogbGV4LmMgKGludGVybmFsX2ZpbGVuYW1lKTogTmV3IHZhcmlhYmxlLgoJKElOVEVSTkFMX0ZJTEVOQU1FKTogTmV3IG1hY3JvLgoJKGluaXRfcGFyc2UpOiBBbGxvY2F0ZSBpbnRlcm5hbF9maWxlbmFtZSBhbmQgbWFyayBhcyByb290LiAgVXNlIGl0CglpbnN0ZWFkIG9mIGEgc3RyaW5nIGNvbnN0YW50LgoKMTk5OS0wOS0yMSAgTmF0aGFuIFNpZHdlbGwgIDxuYXRoYW5AYWNtLm9yZz4KCglSZWltcGxlbWVudCBkeW5hbWljIGNhc3QgYW5kIGNhdGNoIG1hdGNoaW5nLgoJKiBjcC10cmVlLmggKGdldF9keW5hbWljX2Nhc3RfYmFzZV90eXBlKTogUHJvdG90eXBlIG5ldyBmdW5jdGlvbgoJKiBzZWFyY2guYyAoZHluYW1pY19jYXN0X2Jhc2VfcmVjdXJzZSk6IE5ldyBmdW5jdGlvbi4KCShnZXRfZHluYW1pY19jYXN0X2Jhc2VfdHlwZSk6IE5ldyBmdW5jdGlvbiBmb3IgZHluYW1pYyBjYXN0LgoJKiBydHRpLmMgKGJ1aWxkX2R5bmFtaWNfY2FzdF8xKTogRGV0ZXJtaW5lIHNvdXJjZSBhbmQgdGFyZ2V0CgljbGFzcyByZWxhdGlvbnNoaXAuIENhbGwgX19keW5hbWljX2Nhc3RfMi4KCSogdGluZm8uaCAoX191c2VyX3R5cGVfaW5mbzo6dXBjYXN0KTogTmV3IGNhdGNoIGRpc3BhdGNoZXIuCgkoX191c2VyX3R5cGVfaW5mbzo6ZHluY2FzdCk6IE5ldyBkeW5hbWljIGNhc3QgZGlzcGF0Y2hlci4KCShfX3VzZXJfdHlwZV9pbmZvOjpzdWJfa2luZCk6IE5ldyBuZXN0ZWQgZW51bWVyYXRpb24uCgkoX191c2VyX3R5cGVfaW5mbzo6Y29udGFpbmVkX3ApOiBzdWJfa2luZCBwcmVkaWNhdGUuCgkoX191c2VyX3R5cGVfaW5mbzo6Y29udGFpbmVkX3B1YmxpY19wKTogTGlrZXdpc2UuCgkoX191c2VyX3R5cGVfaW5mbzo6Y29udGFpbmVkX25vbnB1YmxpY19wKTogTGlrZXdpc2UuCgkoX191c2VyX3R5cGVfaW5mbzo6Y29udGFpbmVkX25vbnZpcnR1YWxfcDogTGlrZXdpc2UuCgkoX191c2VyX3R5cGVfaW5mbzo6dXBjYXN0X3Jlc3VsdCk6IE5ldyBuZXN0ZWQgc3RydWN0LgoJKF9fdXNlcl90eXBlX2luZm86OmR5bmNhc3RfcmVzdWx0KTogTmV3IG5lc3RlZCBzdHJ1Y3QuCgkoKjo6ZG9fdXBjYXN0KTogTmV3IGNhdGNoIGZ1bmN0aW9uLgoJKCo6OmRvX2R5bmNhc3QpOiBOZXcgZHluYW1pYyBjYXN0IGZ1bmN0aW9uLgoJKF9fdXNlcl90eXBlX2luZm86OmZpbmRfcHVibGljX3N1Ym9iaik6IE5ldyBkeW5hbWljIGNhc3QKCWhlbHBlciBkaXNwYXRjaGVyLgoJKCo6OmRvX2ZpbmRfcHVibGljX3N1Ym9iaik6IE5ldyBkeW5hbWljIGNhc3QgaGVscGVyIGZ1bmN0aW9uLgoJKiB0aW5mby5jYyAoX191c2VyX3R5cGVfaW5mbzo6dXBjYXN0KTogRGVmaW5lIGNhdGNoIGRpc3BhdGNoZXIuCgkoX191c2VyX3R5cGVfaW5mbzo6ZHluY2FzdCk6IERlZmluZSBkeW5hbWljIGNhc3QgZGlzcGF0Y2hlci4KCSgqOjpkb191cGNhc3QpOiBEZWZpbmUgY2F0Y2ggZnVuY3Rpb24uCgkoKjo6ZG9fZHluY2FzdCk6IERlZmluZSBkeW5hbWljIGNhc3QgZnVuY3Rpb24uCgkoKjo6ZG9fZmluZF9wdWJsaWNfc3Vib2JqKTogRGVmaW5lIGR5bmFtaWMgY2FzdCBoZWxwZXIgZnVuY3Rpb24uCgkqIHRpbmZvMi5jYyAoX190aHJvd190eXBlX21hdGNoX3J0dGlfMik6IFVzZSB1cGNhc3QuCgkoX19keW5hbWljX2Nhc3QpOiBCYWNrd2FyZHMgY29tcGF0aWJpbGl0eSB3cmFwcGVyLiBVc2UgZHluY2FzdC4KCShfX2R5bmFtaWNfY2FzdF8yKTogTmV3IGR5bmFtaWMgY2FzdCBydW50aW1lLgoKMTk5OS0wOS0yMCAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGNwLXRyZWUuaCAoZmluaXNoX3N0bXRfZXhwcik6IENoYW5nZSBwcm90b3R5cGUuCgkqIGV4cHIuYyAoY3BsdXNfZXhwYW5kX2V4cHIpOiBBZGp1c3QgY2FsbCBhY2NvcmRpbmdseS4KCSogaW5pdC5jIChmaW5pc2hfaW5pdF9zdG10cyk6IExpa2V3aXNlLgoJKiBwYXJzZS55IChwcmltYXJ5KTogTGlrZXdpc2UuCgkqIHB0LmMgKHRzdWJzdF9jb3B5KTogTGlrZXdpc2UuCgkqIHNlbWFudGljcy5jIChmaW5pc2hfc3RtdF9leHByKTogRG9uJ3QgdGFrZSB0d28gcGFyYW1ldGVycy4KCURvbid0IHJlbW92ZSBnZW5lcmF0ZWQgQkxPQ0tzIGZyb20gdGhlIGJsb2NrLXRyZWUuCgoJUmVtb3ZlIHN1cHBvcnQgZm9yIGFzc2lnbmluZyB0byBgdGhpcycuCgkqIE5FV1M6IE5vdGUgdGhhdCBmYWN0LgoJKiBjbGFzcy5jIChidWlsZF92YmFzZV9wYXRoKTogRG9uJ3QgY2hlY2sgZmxhZ190aGlzX2lzX3ZhcmlhYmxlLgoJKiBjcC10cmVlLmggKEVYUFJfU1RNVF9BU1NJR05TX1RISVMpOiBSZW1vdmUuCgkobGFuZ3VhZ2VfZnVuY3Rpb24pOiBSZW1vdmUgYXNzaWduc190aGlzLCBqdXN0X2Fzc2lnbmVkX3RoaXMsIGFuZAoJeF9iYXNlX2luaXRfZXhwci4gIEFkZCB4X3ZjYWxsc19wb3NzaWJsZV9wLiAgQWRkIHZ0YmxzX3NldF91cF9wLgoJKGJhc2VfaW5pdF9leHByKTogUmVtb3ZlLgoJKGN1cnJlbnRfdmNhbGxzX3Bvc3NpYmxlX3ApOiBOZXcgbWFjcm8uCgkodnRibHNfc2V0X3VwX3ApOiBMaWtld2lzZS4KCShlbWl0X2Jhc2VfaW5pdCk6IENoYW5nZSBwcm90b3R5cGUuCgkqIGRlY2wuYyAoZmluaXNoX2Rlc3RydWN0b3JfYm9keSk6IE5ldyBmdW5jdGlvbiwgc3BsaXQgb3V0IGZyb20KCWZpbmlzaF9mdW5jdGlvbi4KCShjdXJyZW50X2Z1bmN0aW9uX2Fzc2lnbnNfdGhpcyk6IFJlbW92ZS4KCShjdXJyZW50X2Z1bmN0aW9uX2p1c3RfYXNzaWduZWRfdGhpcyk6IExpa2V3aXNlLgoJKHN0YXJ0X2Z1bmN0aW9uKTogRG9uJ3Qgc2V0IHRoZW0uCgkoZmluaXNoX2Z1bmN0aW9uKTogRG9uJ3QgY2hlY2sgdGhlbS4gIERvbid0IGVtaXQKCWJhc2UtaW5pdGlhbGl6YXRpb24gY29kZSBoZXJlLiAgR2VuZXJhdGUgY29kZSBmb3IgZGVzdHJ1Y3RvcnMgd2hlbgoJZG9pbmcgc2VtYW50aWMgYW5hbHlzaXMuCgkoZmluaXNoX3N0bXQpOiBEb24ndCBjaGVjayBjdXJyZW50X2Z1bmN0aW9uX2p1c3RfYXNzaWduZWRfdGhpcy4KCSogZGVjbDIuYyAobGFuZ19mX29wdGlvbnMpOiBSZW1vdmUgdGhpcy1pcy12YXJpYWJsZS4KCShsYW5nX2RlY29kZV9vcHRpb24pOiBMaWtld2lzZS4KCShncm9rY2xhc3Nmbik6IERvbid0IGNoZWNrIGZsYWdfdGhpc19pc192YXJpYWJsZS4KCSogaW5pdC5jIChlbWl0X2Jhc2VfaW5pdCk6IFJldHVybiB0aGUgZXhwcmVzc2lvbiBnZW5lcmF0ZWQuCgkoY29uc3RydWN0X3ZpcnR1YWxfYmFzZXMpOiBEb24ndCBwdXNoL3BvcCBvYnN0YWNrcy4gIEZpeAoJdHlwby4KCShidWlsZF9uZXdfMSk6IERvbid0IGNoZWNrIGZsYWdfdGhpc19pc192YXJpYWJsZS4KCShnZXRfdGVtcF9yZWd2YXIpOiBEb24ndCBzZXQgREVDTF9SRUdJU1RFUi4KCShidWlsZF92ZWNfaW5pdCk6IERvbid0IGNhbGwgdXNlX3ZhcmlhYmxlLgoJKiBsYW5nLW9wdGlvbnMuaDogUmVtb3ZlICItZnRoaXMtaXMtdmFyaWFibGUiIGFuZAoJIi1mbm8tdGhpcy1pcy12YXJpYWJsZSIuCgkqIHB0LmMgKHRzdWJzdF9leHByKTogRG9uJ3QgY2hlY2sgRVhQUl9TVE1UX0FTU0lHTlNfVEhJUy4KCSogc2VhcmNoLmMgKGV4cGFuZF91cGNhc3RfZml4dXBzKTogVXNlIGZpbmlzaF9leHByX3N0bXQsIG5vdAoJZXhwYW5kX2V4cHJfc3RtdC4KCSogc2VtYW50aWNzLmMgKGZpbmlzaF9leHByX3N0bXRfcmVhbCk6IFJlbmFtZSB0byAuLi4KCShmaW5pc2hfZXhwcl9zdG10KTogVGhpcy4gIFJlbW92ZSBhc3NpZ25lZF90aGlzIHBhcmFtZXRlci4KCShiZWdpbl9pZl9zdG10KTogQ2FsbCBkb19wdXNobGV2ZWwgYmVmb3JlIHN0YXJ0aW5nIHRoZSBzdGF0ZW1lbnQuCgkoYmVnaW5fY29tcG91bmRfc3RtdCk6IERvbid0IGRlY2xhcmUgX19GVU5DVElPTl9fIGluIHNjb3BlLWxlc3MKCWJsb2Nrcy4KCShzZXR1cF92dGJsX3B0cik6IEVtaXQgaW5pdGlhbGl6YXRpb24gY29kZSBmb3IgYmFzZXMgYW5kIG1lbWJlcnMKCWF0IHNlbWFudGljLWFuYWx5c2lzIHRpbWUuICBFbWl0IGNvZGUgdG8gaW5pdGlhbGl6ZSB2dGFibGVzIGluCglkZXN0cnVjdG9ycyBoZXJlLgoJKGV4cGFuZF9zdG10KTogVXNlIGZpbmlzaF9leHByX3N0bXQsIG5vdCBmaW5pc2hfZXhwcl9zdG10X3JlYWwuCglEb24ndCBoYW5kbGUgQ1RPUl9JTklUSUFMSVpFUiBhbnkgbW9yZS4KCSogdHlwZWNrLmMgKGJ1aWxkX21vZGlmeV9leHByKTogRG9uJ3QgY2hlY2sgZm9yIGFzc2lnbm1lbnRzIHRvCgl0aGlzLgoJKGNfZXhwYW5kX3JldHVybik6IERvbid0IHN1Z2dlc3QgYXNzaWduaW5nIHRvIGB0aGlzJy4KCQoJKiBNYWtlZmlsZS5pbiAoZGVjbC5vKTogRGVwZW5kIG9uIFJUTF9ILgoJKGRlY2wyLm8pOiBMaWtld2lzZS4KCShjbGFzcy5vKTogTGlrZXdpc2UuCgkoY2FsbC5vKTogTGlrZXdpc2UuCgkobWV0aG9kLm8pOiBMaWtld2lzZS4KCShzZWFyY2gubyk6IExpa2V3aXNlLgoJKHRyZWUubyk6IExpa2V3aXNlLgoJKHB0Lm8pOiBMaWtld2lzZS4KCgkqIGRlY2wuYyAoZHVwbGljYXRlX2RlY2xzKTogV2hlbiBhIGJ1aWx0aW4gZnVuY3Rpb24gaXMgcmVkZWNsYXJlZAoJYXMgc3RhdGljLCBtYWtlIHN1cmUgaXQgaXMgbWFuZ2xlZCBjb3JyZWN0bHkuCgoJKiBpci50ZXhpIChDVE9SX0lOSVRJQUxJWkVSKTogUmVtb3ZlIG1lbnRpb24uICBGaXggdHlwby4gIEFkZAoJZGV0YWlsIGFib3V0IHRoZSBzdGF0ZW1lbnQtdHJlZS4KCQoxOTk5LTA5LTIwICBOYXRoYW4gU2lkd2VsbCAgPG5hdGhhbkBhY20ub3JnPgoKCSogcGFyc2UueSAocHJpbWFyeSk6IFVzZSBidWlsZF9mdW5jdGlvbmFsX2Nhc3QgZm9yIENWX1FVQUxJRklFUi4KCjE5OTktMDktMjAgIE5pY2sgQ2xpZnRvbiAgPG5pY2tjQGN5Z251cy5jb20+CgoJKiBkZWNsMi5jIChsYW5nX2RlY29kZV9vcHRpb24pOiBFeHRlbmQgY29tbWVudC4KCk1vbiBTZXAgMjAgMTA6NDk6MDUgMTk5OSAgQmVybmQgU2NobWlkdCAgPGJlcm5kc0BjeWdudXMuY28udWs+CgoJKiB0eXBlY2suYzogSW5jbHVkZSAidG1fcC5oIi4KCjE5OTktMDktMTkgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBpci50ZXhpOiBOZXcgZmlsZS4KCjE5OTktMDktMTkgIFBhdWwgQnVyY2hhcmQgPGJ1cmNoYXJkQHBvYm94LmNvbT4KCgkqIHNlbWFudGljcy5jIChleHBhbmRfc3RtdCk6IEluaXRpYWxpemUgcmV0dXJuIHZhbHVlLgoKMTk5OS0wOS0xOCAgUGF1bCBCdXJjaGFyZCA8YnVyY2hhcmRAcG9ib3guY29tPgoKCSogZ3h4aW50LnRleGk6IEcrKyBub3cgaW1wbGVtZW50cyBuYW1lc3BhY2VzLgoJCjE5OTktMDktMTggIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBkZWNsLmMgKHBvcF9sYWJlbCk6IERvbid0IHdhcm4gYWJvdXQgdW51c2VkIGxhYmVscyBtb3JlIHRoYW4KCW9uY2UuCgkqIHNlbWFudGljcy5jIChmaW5pc2hfZ290b19zdG10KTogQWx3YXlzIG1hcmtlZCB1c2VkIGxhYmVscyBhcwoJdXNlZC4KCgkqIGRlY2wuYyAobGF5b3V0X3Zhcl9kZWNsKTogQ2hhbmdlIHByb3RvdHlwZS4gIENhbGwgbGF5b3V0X2RlY2wKCWV2ZW4gd2hlbiB0aGUgZGVjbGFyYXRpb24gaXMgZXh0ZXJuYWwuCgkoY3BfZmluaXNoX2RlY2wpOiBBZGp1c3QgY2FsbCB0byBsYXlvdXRfdmFyX2RlY2wuCgkqIHB0LmMgKHRzdWJzdF9leHByKTogTWFrZSBzdXJlIHRvIGluaXRpYWxpemUgc3RtdCBiZWZvcmUgdXNpbmcgaXQuCgoxOTk5LTA5LTE4ICBNYXJ0aW4gdm9uIExvZXdpcyAgPGxvZXdpc0BpbmZvcm1hdGlrLmh1LWJlcmxpbi5kZT4KCgkqIHR5cGVjay5jIChnZXRfbWVtYmVyX2Z1bmN0aW9uX2Zyb21fcHRyZnVuYyk6IEFsd2F5cyBjb25zaWRlcgoJdmlydHVhbGl0eSBpbnNpZGUgbWVtYmVyIHBvaW50ZXIuCgoxOTk5LTA5LTE3ICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCVR1cm4gb24gZnVuY3Rpb24tYXQtYS10aW1lIHByb2Nlc3NpbmcuICAKCSogY3AtdHJlZS5oIChkb2luZ19zZW1hbnRpY19hbmFseXNpc19wKTogTmV3IG1hY3JvLgoJKFNGX0RFRkFVTFQpOiBEZWZpbmUgdG8gemVybywgbm90IFNGX0VYUEFORC4KCShzdGFydF9oYW5kbGVyX3Bhcm1zKTogQ2hhbmdlIHByb3RvdHlwZS4KCShleHBhbmRfc3RhcnRfY2F0Y2hfYmxvY2spOiBMaWtld2lzZS4KCShleHBhbmRfZW5kX2NhdGNoX2Jsb2NrKTogTGlrZXdpc2UuCgkoZXhwYW5kX3N0YXJ0X2VoX3NwZWMpOiBMaWtld2lzZS4KCShleHBhbmRfZW5kX2VoX3NwZWMpOiBEZWNsYXJlLgoJKGZpbmlzaF9oYW5kbGVyX3Bhcm1zKTogQ2hhbmdlIHByb3RvdHlwZS4KCShiZWdpbl9jYXRjaF9ibG9jayk6IERlY2xhcmUuCgkoZmluaXNoX2hhbmRsZXIpOiBDaGFuZ2UgcHJvdG90eXBlLgoJKGRvX3B1c2hsZXZlbCk6IERlY2xhcmUuCgkoZG9fcG9wbGV2ZWwpOiBMaWtld2lzZS4gIAoJKiBkZWNsLmMgKHB1c2hsZXZlbCk6IERvbid0IGNyZWF0ZQoJYmluZGluZyBsZXZlbHMgd2hlbiBub3QgZG9pbmcgc2VtYW50aWMgYW5hbHlzaXMuCgkocG9wbGV2ZWwpOiBEb24ndCBwb3AgdGhlbS4KCShwdXNoZGVjbCk6IEFzc2VydCB0aGF0IHdlIGFyZSBuZXZlciBjYWxsZWQgd2hlbiBub3QgZG9pbmcKCXNlbWFudGljIGFuYWx5c2lzLgoJKHB1c2hkZWNsX3RvcF9sZXZlbCk6IFVzZSBwdXNoX3RvX3RvcF9sZXZlbC4KCShtYWtlX2xhYmVsX2RlY2wpOiBEb24ndCBmaWRkbGUgd2l0aCBvYnN0YWNrcy4gIE1ha2UgUlRMIEZvciB0aGUKCWxhYmVsIHdoZW4gZXhwYW5kaW5nLgoJKGNwX2ZpbmlzaF9kZWNsKTogT25seSBpbmplY3QgZm9yLXNjb3BlIHZhcmlhYmxlcyB3aGVuIGRvaW5nCglzZW1hbnRpYyBhbmFseXNpcy4gIEFkZCBjb21tZW50cy4KCShzdGFydF9oYW5kbGVyX3Bhcm1zKTogUmV0dXJuIHRoZSBoYW5kbGVyIHBhcm0uCgkoc3RhcnRfZnVuY3Rpb24pOiBSZW9yZ2FuaXplLiAgRG9uJ3QgY2xlYXIgREVDTF9JTklUSUFMIGlmIGl0IGlzCglhbHJlYWR5IHNldC4gIFJlaW5pdGlhbGl6ZSBmcm9tIHNhdmVkIGZ1bmN0aW9uIGRhdGEgaWYgYXZhaWxhYmxlLgoJRG9uJ3QgcHVzaGxldmVsIHdoZW4gbm90IGRvaW5nIHNlbWFudGljIGFuYWx5c2lzLgoJKHN0b3JlX3Bhcm1fZGVjbHMpOiBPbmx5IGdlbmVyYXRlIFJUTCB3aGVuIGV4cGFuZGluZy4gIE9ubHkKCXB1c2hkZWNsIHdoZW4gZG9pbmcgc2VtYW50aWMgYW5hbHlzaXMuICBTZXQKCWN1cnJlbnRfZWhfc3BlY190cnlfYmxvY2sgaWYgYXBwcm9wcmlhdGUuCgkoZmluaXNoX2Z1bmN0aW9uKTogU2ltcGxpZnkuICBVc2UgZG9fcHVzaGxldmVsIGFuZCBkb19wb3BsZXZlbC4KCUNvbWJpbmUgY29tbW9uIGNvZGUuICBEb24ndCBwb3BsZXZlbCB3aGVuIG5vdCBkb2luZyBzZW1hbnRpYwoJYW5hbHlzaXMuCgkocHVzaF9jcF9mdW5jdGlvbl9jb250ZXh0KTogRG9uJ3QgZXhwYW5kIGZ1bmN0aW9ucyB3aXRob3V0IGFuCglleHBsaWNpdCBjYWxsIHRvIGV4cGFuZF9ib2R5LgoJKG1hcmtfbGFuZ19mdW5jdGlvbik6IE1ha2UgZWhfc3BlY190cnlfYmxvY2sgYW5kCgl4X3Njb3BlX3N0bXRfc3RhY2suICAKCSogZXhjZXB0LmMgKGV4cGFuZF9lbmRfZWhfc3BlYyk6IERvbid0CglkZWNsYXJlLgoJKHByb2Nlc3Nfc3RhcnRfY2F0Y2hfYmxvY2spOiBMaWtld2lzZS4KCShwdXNoX2VoX2NsZWFudXApOiBVc2UgZmluaXNoX2RlY2xfY2xlYW51cC4KCShpbml0aWFsaXplX2hhbmRsZXJfcGFybSk6IE5ldyBmdW5jdGlvbi4KCShleHBhbmRfc3RhcnRfY2F0Y2hfYmxvY2spOiBVc2UgaXQuCgkoZXhwYW5kX2VuZF9jYXRjaF9ibG9jayk6IFVzZSB0cmVlLWdlbmVyYXRpb24gZnVuY3Rpb25zLCBub3QKCVJUTC1nZW5lcmF0aW9uIGZ1bmN0aW9ucy4KCShleHBhbmRfc3RhcnRfZWhfc3BlYyk6IExpa2V3aXNlLgoJKGV4cGFuZF9lbmRfZWhfc3BlYyk6IExpa2V3aXNlLgoJKGV4cGFuZF9leGNlcHRpb25fYmxvY2tzKTogU2ltcGxpZnkuCgkoc3RhcnRfYW5vbl9mdW5jKTogVXNlIGRvX3B1c2hsZXZlbC4KCShlbmRfYW5vbl9mdW5jKTogVXNlIGRvX3BvcGx2ZWwuICBDYWxsIGV4cGFuZF9ib2R5IGZvciB0aGUKCWZ1bmN0aW9uLiAgCgkqIGV4cHIuYyAoZG9fY2FzZSk6IERvbid0IGNhbGwgZGVmaW5lX2Nhc2VfbGFiZWwuICAKCSogaW5pdC5jIChjcmVhdGVfdGVtcG9yYXJ5X3Zhcik6IFNldCBERUNMX0NPTlRFWFQgZm9yIGxvY2FsCgl2YXJpYWJsZXMuICAKCSogbWV0aG9kLmMgKGVtaXRfdGh1bmspOiBDYWxsIGV4cGFuZF9ib2R5IGZvciB0aGUKCXRodW5rLgoJKHN5dGhlc2l6ZV9tZXRob2QpOiBMaWtld2lzZS4gIAoJKiBwYXJzZS55IChoYW5kbGVyX2FyZ3MpOiBHaXZlIGl0IHR0eXBlLgoJKGVhdF9zYXZlZF9pbnB1dCk6IENhbGwgZXhwYW5kX2JvZHkuCgkoYmFzZV9pbml0KTogVXNlIGRvX3B1c2hsZXZlbC4KCShwZW5kaW5nX2lubGluZSk6IENhbGwgZXhwYW5kX2JvZHkuCgkoaGFuZGxlcik6IEFkanVzdCBjYWxscyB0byBmaW5pc2hfaGFuZGxlcl9wYXJtcyBhbmQKCWZpbmlzaF9oYW5kbGVyLgoJKGhhbmRsZXJfYXJncyk6IERvbid0IGNhbGwgZXhwYW5kX3N0YXJ0X2NhdGNoX2Jsb2NrLiAgUmV0dXJuIHRoZQoJY2F0Y2ggcGFyYW1ldGVyLiAgKiBwdC5jICh0c3Vic3RfZXhwcik6IEFkanVzdCBIQU5ETEVSIGhhbmRsaW5nLgoJKiBwYXJzZS5jOiBSZWdlbmVyYXRlZC4KCSogcnR0aS5jIChzeW50aGVzaXplX3RpbmZvX2ZuKTogQ2FsbCBmaW5pc2hfZnVuY3Rpb24uICAKCSogc2VtYW50aWNzLmMgKGRvX3B1c2hsZXZlbCk6IEdpdmUgaXQgZXh0ZXJuYWwgbGlua2FnZS4gIEJ1aWxkCglTQ09QRV9TVE1Ucy4KCShkb19wb3BsZXZlbCk6IExpa2V3aXNlLgoJKGZpbmlzaF9jYXNlX2xhYmVsKTogQ2FsbCBkZWZpbmVfY2FzZV9sYWJlbCB3aGVuIGRvaW5nIHNlbWFudGljCglhbmFseXNpcy4KCShmaW5pc2hfZ290b19zdG10KTogQ3JlYXRlIFJUTCBmb3IgbGFiZWxzLgoJKGZpbmlzaF9mdW5jdGlvbl90cnlfYmxvY2spOiBTZXQgaW5fZnVuY3Rpb25fdHJ5X2hhbmRsZXIKCXVuY29uZGl0aW9uYWxseS4KCShmaW5pc2hfZnVuY3Rpb25faGFuZGxlcl9zZXF1ZW5jZSk6IFVuc2V0IGl0LgoJKGZpbmlzaF9oYW5kbGVyX3Bhcm1zKTogVXNlIGV4cGFuZF9zdGFydF9jYXRjaF9ibG9jayBldmVuIHdoZW4KCWJ1aWxkaW5nIGEgc3RhdGVtZW50LXRyZWUuCgkoYmVnaW5fY2F0Y2hfYmxvY2spOiBOZXcgZnVuY3Rpb24uCgkoZmluaXNoX2hhbmRsZXIpOiBNb3ZlIGEgbGl0dGxlIFJUTC1nZW5lcmF0aW9uIGxvZ2ljIGhlcmUuCgkoZmluaXNoX2RlY2xfY2xlYW51cCk6IEFsbG93IGNsZWFudXBzIGZvciBlbXB0eSBkZWNsYXJhdGlvbnMuCgkoZmluaXNoX25hbWVkX3JldHVybl92YWx1ZSk6IERvbid0IHB1c2hkZWNsIHdoZW4gbm90IGRvaW5nCglzZW1hbnRpYyBhbmFseXNpcy4KCShleHBhbmRfc3RtdCk6IERvbid0IGRvIHNlbWFudGljIGFuYWx5c2lzIGZvciB2YXJpYWJsZQoJZGVjbGFyYXRpb25zLiAgSGFuZGxlIFNUQVJUX0NBVENIX1NUTVQuICBDYWxsIGV4cGFuZF9sYWJlbAoJZGlyZWN0bHkgZm9yIGEgTEFCRUxfU1RNVC4gIFR3ZWFrIGhhbmRsaW5nIG9mIEdPVE9fU1RNVC4gIEFkanVzdAoJSEFORExFUnMuICBIYW5kbGUgU0NPUEVfU1RNVCwgQ1RPUl9JTklUSUFMSVpFUiwgYW5kIFJFVFVSTl9JTklULgoJKGV4cGFuZF9ib2R5KTogTGV0IGV4cGFuZF9zdG10IGhhbmRsZSBDVE9SX0lOSVRJQUxJWkVSLAoJUkVUVVJOX0lOSVQgYW5kIGZ1bmN0aW9uIHRyeSBibG9ja3MuCgkKCSogY3AtdHJlZS5oIChsYW5ndWFnZV9mdW5jdGlvbik6IEFkZCB4X2VoX3NwZWNfdHJ5X2Jsb2NrLiAgQWRkCgl4X3Njb3BlX3N0bXRfc3RhY2suICBBZGQgeF9pbl9jaGFyZ2VfcGFybS4KCShjdXJyZW50X2VoX3NwZWNfdHJ5X2Jsb2NrKTogTmV3IG1hY3JvLgoJKGN1cnJlbnRfc2NvcGVfc3RtdF9zdGFjayk6IExpa2V3aXNlLgoJKGN1cnJlbnRfaW5fY2hhcmdlX3Bhcm0pOiBMaWtld2lzZS4KCSogZGVjbC5jIChzdGFydF9mdW5jdGlvbik6IEluaXRpYWxpemUgY3VycmVudF9pbl9jaGFyZ2VfcGFybS4KCShmaW5pc2hfZnVuY3Rpb24pOiBVc2UgY3VycmVudF9pbl9jaGFyZ2VfcGFybSByYXRoZXIgdGhhbiBsb29raW5nCgl1cCBfX2luX2NocmcuCgkqIHNlYXJjaC5jIChleHBhbmRfaW5kaXJlY3RfdnRibHNfaW5pdCk6IExpa2V3aXNlLgoKCSogY3AtdHJlZS5kZWYgKENMRUFOVVBfU1RNVCk6IEZpeCBzcGVsbGluZyBpbiBkdW1wcy4KCShUUllfQkxPQ0spOiBMaWtld2lzZS4KCShIQU5ETEVSKTogTGlrZXdpc2UuCgkoU1RBUlRfQ0FUQ0hfU1RNVCk6IE5ldyB0cmVlIG5vZGUuCgkoU0NPUEVfU1RNVCk6IExpa2V3aXNlLgoJKiBjcC10cmVlLmggKFNDT1BFX0JFR0lOX1ApOiBOZXcgbWFjcm8uCgkoU0NPUEVfTlVMTElGSUVEX1ApOiBMaWtld2lzZS4KCShzdHJ1Y3QgbGFuZ19kZWNsX2ZsYWdzKTogQWRkIHBlbmRpbmdfaW5saW5lX3AuICBBZGp1c3QgZHVtbXkuCgkoc3RydWN0IGxhbmdfZGVjbCk6IEFkZCBzYXZlZF9sYW5ndWFnZV9mdW5jdGlvbi4KCShERUNMX1BFTkRJTkdfSU5MSU5FX0lORk8pOiBBZGp1c3QgZG9jdW1lbnRhdGlvbi4KCShERUNMX1BFTkRJTkdfSU5MSU5FX1ApOiBOZXcgbWFjcm8uCgkoVFlQRV9USV9BUkdTKTogRml4IHR5cG8gaW4gY29tbWVudC4KCShERUNMX1NBVkVEX1RSRUUpOiBBZGQgdG8gZG9jdW1lbnRhdGlvbi4KCShERUNMX1NBVkVEX0ZVTkNUSU9OX0RBVEEpOiBOZXcgbWFjcm8uCgkoU1RBUlRfQ0FUQ0hfVFlQRSk6IExpa2V3aXNlLgoJKFNDT1BFX0VORF9QKTogTmV3IG1hY3JvLgoJKGRlY2xhcmVfcGFybV9sZXZlbCk6IERvbid0IGRlY2xhcmUuCgkqIGRlY2wuYyAobWFya19sYW5nX2Z1bmN0aW9uKTogTmV3IGZ1bmN0aW9uLCBzcGxpdCBvdXQgZnJvbQoJbWFya19jcF9mdW5jdGlvbl9jb250ZXh0LgoJKHNhdmVfZnVuY3Rpb25fZGF0YSk6IE5ldyBmdW5jdGlvbi4KCShkZWNsYXJlX3Bhcm1fbGV2ZWwpOiBSZW1vdmUuCgkoZmluaXNoX2Z1bmN0aW9uKTogVXNlIHNhdmVfZnVuY3Rpb25fZGF0YSB0byBzcXVpcnJlbCBhd2F5CglpbXBvcnRhbnQgc3R1ZmYgZm9yIGxhdGVyIHVzZS4KCShtYXJrX2NwX2Z1bmN0aW9uX2NvbnRleHQpOiBVc2UgbWFya19mdW5jdGlvbl9kYXRhLgoJKGxhbmdfbWFya190cmVlKTogTGlrZXdpc2UuCgkqIGxleC5jIChiZWdpbl9kZWZpbml0aW9uX29mX2luY2xhc3NfaW5saW5lKTogU2V0CglERUNMX1BFTkRJTkdfSU5MSU5FX1AuCgkoc3RvcmVfcGVuZGluZ19pbmxpbmUpOiBDbGVhciBpdC4KCSogcHQuYyAodHN1YnN0X2RlY2wpOiBMaWtld2lzZS4KCjE5OTktMDktMTcgIE5hdGhhbiBTaWR3ZWxsICA8bmF0aGFuQGFjbS5vcmc+CgoJKiBjYWxsLmMgKHBlcmZvcm1faW1wbGljaXRfY29udmVyc2lvbik6IERlYWwgd2l0aCBlcnJvcl9tYXJrX25vZGUuCgoxOTk5LTA5LTE3ICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogZGVjbC5jICh3YXJuX2V4dGVybl9yZWRlY2xhcmVkX3N0YXRpYyk6IERvbid0IGdldCBjb25mdXNlZCBieQoJc3RhdGljIG1lbWJlciBmdW5jdGlvbnMuCgkoZHVwbGljYXRlX2RlY2xzKTogTWVyZ2UgREVDTF9USElTX1NUQVRJQy4KCgkqIGRlY2wuYyAoZXhwYW5kX3N0YXRpY19pbml0KTogTWFrZSBzdXJlIGFzc2lnbm1lbnRzIHRvIGxvY2FsCglzdGF0aWNzIGFjdHVhbGx5IG9jY3VyLgoKMTk5OS0wOS0xNyAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGNwLXRyZWUuaCAocG9wbGV2ZWxfY2xhc3MpOiBEZWNsYXJlLgoJKiBjbGFzcy5jIChwb3BjbGFzcyk6IFVzZSBwb3BsZXZlbF9jbGFzcywgbm90IHBvcGxldmVsLgoJKiBkZWNsLmMgKHBvcGxldmVsX2NsYXNzKTogRG9uJ3QgbWFrZSBpdCBzdGF0aWMuICBEb24ndCByZXR1cm4gYQoJdmFsdWUuCgkocG9wbGV2ZWwpOiBEb24ndCBjYWxsIHBvcGxldmVsX2NsYXNzOyBhYm9ydCBpbiBhIGNsYXNzCgliaW5kaW5nIGxldmVsIGlzIHNlZW4uCgkqIHNlbWFudGljcy5jIChmaW5pc2hfdHJhbnNsYXRpb25fdW5pdCk6IFVzZSBwb3BfZXZlcnl0aGluZy4KCSogcGFyc2UueSAobWVtYmVyX2luaXQpOiBBbGxvdyBlcnJvcnMuCgkocGVuZGluZ19pbmxpbmUpOiBDYWxsIGZpbmlzaF9mdW5jdGlvbi4KCSogcGFyc2UuYzogUmVnZW5lcmF0ZWQuCgkqIE1ha2VmaWxlLmluIChDT05GTElDVFMpOiBBZGp1c3QuCgoxOTk5LTA5LTE3ICBHYWJyaWVsIERvcyBSZWlzICA8Z2RyQGNvZGVzb3VyY2VyeS5jb20+CgkKCSogZXJyb3IuYzogUmVkdWNlIGNvZGUgZHVwbGljYXRpb24uCgkoZHVtcF90ZW1wbGF0ZV92YWx1ZSk6IE5ldyBmdW5jdGlvbi4KCShkdW1wX3R5cGVfcmVhbCk6IFVzZSBpdC4KCShkdW1wX2RlY2wpOiBMaWtld2lzZS4KCShkdW1wX2Z1bmN0aW9uX25hbWUpOiBMaWtld2lzZS4KCShkdW1wX2Z1bmN0aW9uX2RlY2wpOiBEb24ndCBiZSB0b28gdGFsa2F0aXZlIGFib3V0IGZ1bmN0aW9uIHJldHVybgoJdHlwZSB2YXJpZXR5LgoKMTk5OS0wOS0xNiAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogbGV4LmMgKGluaXRfY3BwX3BhcnNlKTogQ2FsbCB4Y2FsbG9jLCBub3QgbWFsbG9jL2J6ZXJvLgoKCSogeHJlZi5jIChTQUxMT0MpOiBDYWxsIHhzdHJkdXAsIG5vdCB4bWFsbG9jL3N0cmNweS4KCjE5OTktMDktMTYgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIGRlY2wyLmMgKGZpbmlzaF9maWxlKTogQWxzbyBjYWxsIGNoZWNrX2dsb2JhbF9kZWNsYXJhdGlvbnMgZm9yCgl0aGUgcGVuZGluZ19zdGF0aWNzIGxpc3QuCgoxOTk5LTA5LTE1ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBsZXguYyAoY3BfcHJhZ21hX2ltcGxlbWVudGF0aW9uKTogQWxsb3cgI3ByYWdtYSBpbXBsZW1lbnRhdGlvbgoJaW4gaGVhZGVyIGZpbGVzLgoKMTk5OS0wOS0xNSAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAY3lnbnVzLmNvbT4KCgkqIGxleC5jIChtYXJrX2ltcGxfZmlsZV9jaGFpbik6IEZvbGxvdyB0aGUgbmV4dCBjaGFpbi4KCjE5OTktMDktMTUgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBkZWNsLmMgKHdhcm5fZXh0ZXJuX3JlZGVjbGFyZWRfc3RhdGljKTogU2ltcGxpZnkuICBDYXRjaAoJcHJvYmxlbXMgd2l0aCBleHRlcm4gIkMiIGZ1bmN0aW9ucyByZWRlY2xhcmVkIGFzIHN0YXRpYy4KCShkdXBsaWNhdGVfZGVjbHMpOiBXaGVuIGEgYnVpbHRpbiBpcyByZWRlY2xhcmVkIHN0YXRpYywgbWFrZSB0aGUKCW5ldyBmdW5jdGlvbiBoYXZlIGludGVybmFsIGxpbmthZ2UuCgkKMTk5OS0wOS0xNSAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGRlY2wyLmMgKGJ1aWxkX2V4cHJfZnJvbV90cmVlKTogSGFuZGxlIFZBX0FSR19FWFBSLgoJKiBwdC5jICh0c3Vic3RfY29weSk6IExpa2V3aXNlLgoJKiB0cmVlLmMgKHNlYXJjaF90cmVlKTogTGlrZXdpc2UuCgkobWFwY2FyKTogTGlrZXdpc2UuCgoxOTk5LTA5LTE1ICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiB0eXBlY2syLmMgKGFjayk6IERvbid0IGRlY2xhcmUgcHJvZ25hbWUuCgoxOTk5LTA5LTE0ICBBbGV4YW5kcmUgT2xpdmEgIDxvbGl2YUBsc2QuaWMudW5pY2FtcC5icj4KCgkqIGxleC5jIChjcF9wcmFnbWFfaW50ZXJmYWNlLCBjcF9wcmFnbWFfaW1wbGVtZW50YXRpb24pOiBDb3B5CglmaWxlbmFtZXMgd2l0aCBnZ2NfYWxsb2Nfc3RyaW5nLgoKMTk5OS0wOS0xNCAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGRlY2wuYyAoYnVpbGRfdGFyZ2V0X2V4cHIpOiBTZXQgVFJFRV9TSURFX0VGRkVDVFMgb24gdGhlIAoJVEFSR0VUX0VYUFIuCgkqIGNhbGwuYyAoYnVpbGRfb3Zlcl9jYWxsKTogRG9uJ3Qgc2V0IFRSRUVfU0lERV9FRkZFQ1RTIG9uCgl0aGUgVEFSR0VUX0VYUFIuCgkqIGN2dC5jIChidWlsZF91cF9yZWZlcmVuY2UpOiBMaWtld2lzZS4KCSogdHJlZS5jIChidWlsZF9jcGx1c19uZXcpOiBMaWtld2lzZS4KCShnZXRfdGFyZ2V0X2V4cHIpOiBMaWtld2lzZS4KCQpUdWUgU2VwIDE0IDAxOjQ1OjEwIDE5OTkgIE1hcmMgRXNwaWUgPGVzcGllQGN2cy5vcGVuYnNkLm9yZz4KCgkqIE1ha2VmaWxlLmluOiAgUHJlcGVuZCAkKFNIRUxMKSB0byBtb3ZlLWlmLWNoYW5nZSBjYWxscy4KCjE5OTktMDktMTMgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjcC10cmVlLmggKGJ1aWxkX3RhcmdldF9leHByKTogTmV3IGZ1bmN0aW9uLgoJKiBjYWxsLmMgKGJ1aWxkX2NvbmRpdGlvbmFsX2V4cHIpOiBVc2UgYnVpbGRfdGFyZ2V0X2V4cHIuCgkoY29udmVydF9saWtlKTogTGlrZXdpc2UuCgkoYnVpbGRfb3Zlcl9jYWxsKTogTGlrZXdpc2UuCgkqIGN2dC5jIChidWlsZF91cF9yZWZlcmVuY2UpOiBMaWtld2lzZS4KCSogZGVjbC5jIChidWlsZF9jbGVhbnVwX29uX3NhZmVfb2JzdGFjayk6IEZvbGQgaW50byAuLi4KCShkZXN0cm95X2xvY2FsX3Zhcik6IEhlcmUuCgkoYnVpbGRfdGFyZ2V0X2V4cHIpOiBOZXcgZnVuY3Rpb24uCgkqIHRyZWUuYyAoYnVpbGRfY3BsdXNfbmV3KTogVXNlIGl0LgoJKGdldF90YXJnZXRfZXhwcik6IExpa2V3aXNlLgoKMTk5OS0wOS0xMyAgTmF0aGFuIFNpZHdlbGwgIDxuYXRoYW5AYWNtLm9yZz4KCgkqIHR5cGVjay5jIChleHByX3NpemVvZik6IERvbid0IGRlY2F5IGFycmF5cyBhbmQgZnVuY3Rpb25zLgoJUmVtb3ZlIG1pc2xlYWRpbmcgY29tbWVudC4KCShidWlsZF9jb21wb3VuZF9leHByKTogRG9uJ3QgZGVjYXkgYXJyYXlzLgoKMTk5OS0wOS0xMyAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogY2FsbC5jIChidWlsZF9jb25kaXRpb25hbF9leHByKTogQWx3YXlzIHVzZSBhIFRBUkdFVF9FWFBSIGZvcgoJY2xhc3MgcnZhbHVlcyBhZ2Fpbi4KClN1biBTZXAgMTIgMjM6Mjk6MDcgMTk5OSAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogTWFrZS1sYW5nLmluIChnKytzcGVjLm8pOiBEZXBlbmQgb24gc3lzdGVtLmggYW5kIGdjYy5oLgoKCSogZysrc3BlYy5jOiBJbmNsdWRlIGdjYy5oLgoJKGxhbmdfc3BlY2lmaWNfZHJpdmVyKTogQ29uc3RpZnkgYSBjaGFyKi4gIENhbGwgeGNhbGxvYywgbm90CiAJeG1hbGxvYy9iemVyby4gIEFsbCBjYWxscyB0byB0aGUgZnVuY3Rpb24gcG9pbnRlciBwYXJhbWV0ZXIgbm93CiAJZXhwbGljaXRseSBjYWxsIGBmYXRhbCcuCgoxOTk5LTA5LTEyICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogY2FsbC5jIChpbXBsaWNpdF9jb252ZXJzaW9uKTogUm9idXN0aWZ5LiAgSGFuZGxlIE9GRlNFVF9SRUZzLgoJKiBjdnQuYyAob2NwX2NvbnZlcnQpOiBDb21wbGV0ZSB0aGUgZnJvbSBhbmQgZGVzdGluYXRpb24gdHlwZXMuCglBZGp1c3Qgd2FybmluZyBhYm91dCBmdW5jdGlvbnMgYWx3YXlzIGJlaW5nIGB0cnVlJyBpbiBjb25kaXRpb25hbHMuCgkqIGRlY2wuYyAoZHVwbGljYXRlX2RlY2xzKTogRG9uJ3QgcGxheSBmdW5ueSBnYW1lcyB3aXRoIGFib3J0LgoJKiBlcnJvci5jIChkdW1wX2V4cHIpOiBIYW5kbGUgT1ZFUkxPQURzLgoJKiBzcGV3LmMgKHByb2JlX29ic3RhY2spOiBSZW1vdmUuCgkqIHR5cGVjay5jIChjb25kaXRpb25fY29udmVyc2lvbik6IFVzZSBwZXJmb3JtX2ltcGxpY2l0X2NvbnZlcnNpb24uCgkKMTk5OS0wOS0xMiAgQmVybmQgU2NobWlkdCAgPGJlcm5kc0BjeWdudXMuY28udWs+CgoJKiBjcC10cmVlLmggKGF1dG9fZnVuY3Rpb24sIGRlZmluZV9mdW5jdGlvbik6IEFkanVzdCBwcm90b3R5cGVzLgoJKiBkZWNsLmMgKGRlZmluZV9mdW5jdGlvbik6IExvc2UgRlVOQ1RJT05fQ09ERSBhcmcuICBBbGwgY2FsbGVycwoJY2hhbmdlZC4KCShhdXRvX2Z1bmN0aW9uKTogTGlrZXdpc2UsIGZvciBDT0RFIGFyZy4KCU1vdmUgY29kZSB0byBzZXQgREVDTF9CVUlMVF9JTiBhbmQgREVDTF9GVU5DVElPTl9DT0RFIHRvLi4uCgkoYnVpbHRpbl9mdW5jdGlvbik6IC4uLiBoZXJlLgoKMTk5OS0wOS0xMSAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGRlY2wuYyAoYWRkX2RlY2xfdG9fbGV2ZWwpOiBSZW1vdmUgVFJFRV9QRVJNQU5FTlQgYXNzZXJ0aW9uLgoJKGluaXRfZGVjbF9wcm9jZXNzaW5nKTogRG9uJ3Qgc2V0IFRSRUVfUEVSTUFORU5UIGZvciB0aGUKCWVycm9yX21hcmtfbm9kZS4KCShzdGFydF9kZWNsKTogRG9uJ3QgcmVidWlsZCBub24tcGVybWFuZW50IEFSUkFZX1RZUEVzLgoJKGdyb2tkZWNsYXJhdG9yKTogTGlrZXdpc2UuCgkoZ3Jva3Bhcm1zKTogRG9uJ3QgY2hlY2sgVFJFRV9QRVJNQU5FTlQgd2hlbiBidWlsZGluZyB1cCBsaXN0cy4KCSogZGVjbDIuYyAoZ3Jva2ZpZWxkKTogRG9uJ3QgYXNzZXJ0IFRSRUVfUEVSTUFORU5ULgoJKG1hcmtfaW5saW5lX2Zvcl9vdXRwdXQpOiBMaWtld2lzZS4KCSogZXhwci5jIChjcGx1c19leHBhbmRfZXhwcik6IERvbid0IGNoZWNrIFRSRUVfUEVSTUFORU5ULgoJKiBpbml0LmMgKGJ1aWxkX29mZnNldF9yZWYpOiBEb24ndCBjaGVjayBUUkVFX1BFUk1BTkVOVC4KCSogbGV4LmMgKGNoZWNrX25ld2xpbmUpOiBEb24ndCBjaGVjayBnZ2NfcDsgaXQgaXMgYWx3YXlzIG9uZS4KCSogcHQuYyAocHJvY2Vzc190ZW1wbGF0ZV9wYXJtKTogRG9uJ3QgY2hlY2sgVFJFRV9QRVJNQU5FTlQuCgkqIHNwZXcuYyAoeXlsZXgpOiBEb24ndCBjb3B5X25vZGUgb3IgcHJvYmVfb2JzdGFja3MgZm9yCglub24tcGVybWFuZW50IENPTlNUQU5UcyBhbmQgU1RSSU5Hcy4KCSogdHJlZS5jIChidWlsZF9jcGx1c19hcnJheV90eXBlXzEpOiBEb24ndCBmdXNzIHdpdGgKCVRSRUVfUEVSTUFORU5UIG9uIEFSUkFZX1RZUEVzLgoJCgkqIGNwLXRyZWUuZGVmIChDTEVBTlVQX1NUTVQpOiBOZXcgbm9kZS4KCSogY3AtdHJlZS5oIChsYW5ndWFnZV9mdW5jdGlvbik6IEFkZCBuYW1lX2RlY2xhcmVkLgoJKGN1cnJlbnRfZnVuY3Rpb25fbmFtZV9kZWNsYXJlZCk6IE5ldyBtYWNyby4KCShDTEVBTlVQX0RFQ0wpOiBOZXcgbWFjcm8uCgkoQ0xFQU5VUF9FWFBSKTogTGlrZXdpc2UuCgkoZW1pdF9sb2NhbF92YXIpOiBMaWtld2lzZS4KCShmaW5pc2hfZGVjbF9jbGVhbnVwKTogTmV3IGZ1bmN0aW9uLgoJKiBjdnQuYyAoYnVpbGRfdXBfcmVmZXJlbmNlKTogU2ltcGxpZnkuCgkob2NwX2NvbnZlcnQpOiBSZW1vdmUgZGVhZCBjb2RlLgoJKiBkZWNsLmMgKHN0YXJ0X2RlY2wpOiBSZW1vdmUgY2FsbCB0byBhZGRfZGVjbF9zdG10LgoJKGdyb2tfcmVmZXJlbmNlX2luaXQpOiBBZGp1c3QsIHRvIGhhbmRsZSBiaW5kaW5ncyB0ZW1wb3JhcmllcyB0bwoJcmVmZXJlbmNlcy4gIFJlbW92ZSBkZWFkIGNvZGUuCgkoaW5pdGlhbGl6ZV9sb2NhbF92YXIpOiBEb24ndCBnZW5lcmF0ZSBSVEwgZm9yCglkZWNsYXJhdGlvbnMgaGVyZSwgb3IgYnVpbGQgY2xlYW51cHMgaGVyZS4gIERvbid0IGZ1c3Mgd2l0aAoJb2JzdGFja3MuICBSZXBsYWNlIGV4cGFuZF9zdGFydF90YXJnZXRfdGVtcHMgY2FsbHMgd2l0aCBleHBsaWNpdAoJc2V0dGluZyBvZiBzdG1zX2FyZV9mdWxsX2V4cHJzX3AuCgkoZGVzdHJveV9sb2NhbF92YXIpOiBOZXcgZnVuY3Rpb24uCgkoZW1pdF9sb2NhbF92YXIpOiBMaWtld2lzZS4KCShjcF9maW5pc2hfZGVjbCk6IFVzZSB0aGVtLCBhcyBhcHByb3ByaWF0ZS4KCShzdGFydF9mdW5jdGlvbik6IEFubm91bmNlIHRlbXBsYXRlIGZ1bmN0aW9ucy4KCShzdG9yZV9wYXJtX2RlY2xzKTogRG9uJ3QgY2FsbCBkZWNsYXJlX2Z1bmN0aW9uX25hbWUgaGVyZS4KCShmaW5pc2hfc3RtdCk6IERvbid0IHN0YXJ0IGVtaXQgYmFzZS1pbml0aWFsaXphdGlvbiBjb2RlIHdoZW4ganVzdAoJYnVpbGRpbmcgdGhlIHN0YXRlbWVudC10cmVlLgoJKiBpbml0LmMgKGNyZWF0ZV90ZW1wb3JhcnlfdmFyKTogTW92ZSBhZGRfZGVjbF9zdG10IGNhbGwgLi4uCgkoZ2V0X3RlbXBfcmVndmFyKTogSGVyZS4KCSogcHQuYyAodHN1YnN0X2V4cHIpOiBNYWtlIERFQ0xfSU5JVElBTCBsb29rIGxpa2Ugd2hhdAoJY3BfZmluaXNoX2RlY2wgd291bGQgZXhwZWN0LiAgRG9uJ3QgY2FsbCBhZGRfZGVjbF9zdG10LgoJKiBzZW1hbnRpY3MuYyAoYmVnaW5fY29tcG91bmRfc3RtdCk6IENhbGwgZGVjbGFyZV9mdW5jdGlvbl9uYW1lLAoJaWYgYXBwcm9wcmlhdGUuCgkoZmluaXNoX2RlY2xfY2xlYW51cCk6IE5ldyBmdW5jdGlvbi4KCShleHBhbmRfc3RtdCk6IFVzZSBlbWl0X2xvY2FsX3ZhciB0byBvdXRwdXQgdmFyaWFibGVzLgkJCgkoZXhwYW5kX2JvZHkpOiBTZXQgY3VycmVudF9mdW5jdGlvbl9uYW1lX2RlY2xhcmVkLgoJCjE5OTktMDktMTAgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjcC10cmVlLmggKGZpbmlzaF9jbGVhbnVwX3RyeV9ibG9jayk6IE5ldyBmdW5jdGlvbi4KCSogc2VtYW50aWNzLmMgKGZpbmlzaF9jbGVhbnVwX3RyeV9ibG9jayk6IEFkZCBjb21tZW50LgoKRnJpIFNlcCAxMCAxMDozMjozMiAxOTk5ICBCZXJuZCBTY2htaWR0ICA8YmVybmRzQGN5Z251cy5jby51az4KCgkqIGNwLXRyZWUuaDogRGVsZXRlIGRlY2xhcmF0aW9ucyBmb3IgYWxsIHRyZWUgbm9kZXMgbm93IG1vdmVkIHRvCglnbG9iYWxfdHJlZXMuCgkqIGRlY2wuYzogRGVsZXRlIHRoZWlyIGRlZmluaXRpb25zLgoJKFNIT1JUX1RZUEVfU0laRSwgSU5UX1RZUEVfU0laRSwgTE9OR19UWVBFX1NJWkUsIExPTkdfTE9OR19UWVBFX1NJWkUsCglGTE9BVF9UWVBFX1NJWkUsIERPVUJMRV9UWVBFX1NJWkUsIExPTkdfRE9VQkxFX1RZUEVfU0laRSk6IERvbid0Cglwcm92aWRlIGRlZmF1bHRzLgoJKGluaXRfZGVjbF9wcm9jZXNzaW5nKTogQ2FsbCBidWlsZF9jb21tb25fdHJlZV9ub2RlcyBhbmQKCWJ1aWxkX2NvbW1vbl90cmVlX25vZGVzXzIgaW5zdGVhZCBvZiBidWlsZGluZyB0aGVpciBub2RlcyBoZXJlLgoJRG9uJ3QgYWRkIGdjIHJvb3RzIGZvciB0aGVtLgoKMTk5OS0wOS0xMCAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGNwLXRyZWUuaCAobGFuZ3VhZ2VfZnVuY3Rpb24pOiBSZW5hbWUgZXhwYW5kaW5nX3AgdG8KCXhfZXhwYW5kaW5nX3AuICBSZW5hbWUgbmFtZWRfbGFiZWxfdXNlcyB0byB4X25hbWVkX2xhYmVsX3VzZXMuCgkoZXhwYW5kaW5nX3ApOiBBZGp1c3QgYWNjb3JkaW5nbHkuCgkoVFJFRV9WSUFfUFJJVkFURSk6IEZpeCB0eXBvIGluIGNvbW1lbnQuCgkoREVDTF9SRUZFUkVOQ0VfU0xPVCk6IFJlbW92ZS4KCShTRVRfREVDTF9SRUZFUkVOQ0VfU0xPVCk6IExpa2V3aXNlLgoJKiBkZWNsLmMgKG5hbWVkX2xhYmVsX3VzZXMpOiBBZGp1c3QuIFJlbW92ZSBjaGlja2VuIGNvbW1lbnQuCgkocHVzaF9vdmVybG9hZGVkX2RlY2wpOiBEb24ndCB0cnVuY2F0ZSB0aGUgY2hhaW4gb2YgYmluZGluZ3Mgd2hlbgoJYWRkaW5nIGFuIG92ZXJsb2FkZWQgZnVuY3Rpb24uCgkoZ3Jva19yZWZlcmVuY2VfaW5pdCk6IERvbid0IHVzZSBERUNMX1JFRkVSRU5DRV9TTE9ULgoJKGluaXRpYWxpemVfbG9jYWxfdmFyKTogRml4IHR5cG8gaW4gY29tbWVudC4KCShzdG9yZV9wYXJtX2RlY2xzKTogRG9uJ3Qgc2V0IERFQ0xfUkVGRVJFTkNFX1NMT1QuICBUaWR5IHVwLgoJKiBkZWNsMi5jIChzdGFydF9vYmplY3RzKTogTWFrZSB0aGUgZmFjdCB0aGF0IHdlIGFyZSBleHBhbmRpbmcKCXRoZSBnZW5lcmF0ZWQgZnVuY3Rpb24gcmlnaHQgYXdheSBleHBsaWNpdC4KCShzdGFydF9zdGF0aWNfc3RvcmFnZV9kdXJhdGlvbl9mdW5jdGlvbik6IExpa2V3aXNlLgoJKGZpbmlzaF9maWxlKTogRml4IHR5cG8gaW4gY29tbWVudC4KCSogaW5pdC5jIChidWlsZF92ZWNfaW5pdCk6IENvcnJlY3QgYnVncyBpbiBoYW5kbGluZyBjbGVhbnVwcy4KCSogc2VtYW50aWNzLmMgKG1heWJlX2NvbnZlcnRfY29uZCk6IE5ldyBmdW5jdGlvbi4KCShGSU5JU0hfQ09ORCk6IEFsd2F5cyBzdG9yZSB0aGUgY29uZGl0aW9uLCBldmVuIGlmIHRoZXJlJ3MKCWEgZGVjbGFyYXRpb24uCgkoZmluaXNoX2lmX3N0bXRfY29uZCk6IFVzZSBtYXliZV9jb252ZXJ0X2NvbmQuCgkoZmluaXNoX3doaWxlX3N0bXRfY29uZCk6IExpa2V3aXNlLgoJKGZpbmlzaF9kb19zdG10KTogTGlrZXdpc2UuCgkoZmluaXNoX2Zvcl9jb25kKTogTGlrZXdpc2UuCgkoZXhwYW5kX2NvbmQpOiBBZGp1c3QuCgkKCSogY3AtdHJlZS5oIChGTl9UUllfQkxPQ0tfUCk6IE5ldyBtYWNyby4KCSogaW5pdC5jIChwZXJmb3JtX21lbWJlcl9pbml0KTogUmVtb3ZlIG9ic3RhY2sgbWFjaGluYXRpb25zLgoJKGV4cGFuZF9jbGVhbnVwX2Zvcl9iYXNlKTogTGlrZXdpc2UuCgkoZmluaXNoX2luaXRfc3RtdHMpOiBNYXJrIHRoZSBzdGF0ZW1lbnQtZXhwcmVzc2lvbiBhcyB1c2VkLgoJKiBtZXRob2QuYyAoZW1pdF90aHVuayk6IFVzZSB0cmVlLWdlbmVyYXRpbmcgZnVuY3Rpb25zLCBub3QKCVJUTC4KCShkb19idWlsZF9jb3B5X2NvbnN0cnVjdG9yKTogTGlrZXdpc2UuCgkoZG9fYnVpbGRfYXNzaWduX3JlZik6IExpa2V3aXNlLgoJKHN5bnRoZXNpemVfbWV0aG9kKTogTGlrZXdpc2UuICBLZWVwIHRyYWNrIG9mIGxpbmUgbnVtYmVycy4KCSogcHQuYyAodHN1YnN0X2V4cHIpOiBIYW5kbGUgdmFyaW91cyBraW5kcyBvZiB0cnkgYmxvY2tzLgoJKiBzZW1hbnRpY3MuYyAoZXhwYW5kX3N0bXRzKTogUmVtb3ZlLgoJKGJlZ2luX2Z1bmN0aW9uX3RyeV9ibG9jayk6IFNldCBGTl9UUllfQkxPQ0tfUC4KCShmaW5pc2hfZnVuY3Rpb25fdHJ5X2Jsb2NrKTogQmUgY2FyZWZ1bCByZWNoYWluaW5nIAoJZnVuY3Rpb24gdHJ5IGJsb2Nrcy4KCShleHBhbmRfc3RtdCk6IExvb3AgdGhyb3VnaCBhbGwgdGhlIHN0YXRlbWVudHMgYXQgYSBnaXZlbiBsZXZlbC4KCShleGFwbmRfYm9keSk6IEJlIGNhcmVmdWwgd2l0aCBsaW5lLW51bWJlcnMgaGVyZSB0b28uICBQcmVwYXJlIGZvcgoJYmVpbmcgY2FsbGVkIGRpcmVjdGx5IGZyb20gdGhlIHBhcnNlci4KCgkqIGNwLXRyZWUuaCAoZmluaXNoX2Z1bmN0aW9uKTogQWRqdXN0IHByb3RvdHlwZS4KCSogZGVjbC5jIChmaW5pc2hfZnVuY3Rpb24pOiBSZXR1cm4gdGhlIGZ1bmN0aW9uIGNvbXBpbGVkLgoJKiBwdC5jIChpbnN0YW50aWF0ZV9kZWNsKTogRG9uJ3QgcGxheSBnYW1lcyB3aXRoIG9ic3RhY2tzLgoJKiB0cmVlLmMgKG1hcGNhcik6IEhhbmRsZSBPRkZTRVRfUkVGIGFuZCBCSVRfRklFTERfUkVGLgoJKHNlYXJjaF90cmVlKTogTGlrZXdpc2UuCgkqIHR5cGVjay5jOiBGaXggdHlwbyBpbiBjb21tZW50LgoJKiB0eXBlY2syLmMgKHN0b3JlX2luaXRfdmFsdWUpOiBBZGQgY29tbWVudC4KCgkqIGNwLXRyZWUuaCAoQ1BUSV9BVEVYSVQpOiBOZXcgbWFjcm8uCgkoYXRleGl0X25vZGUpOiBMaWtld2lzZS4KCSogZGVjbC5jIChkZXN0cm95X2xvY2FsX3N0YXRpYyk6IE5ldyBmdW5jdGlvbiwgYnJva2VuIG91dCBmcm9tIC4uLgoJKGV4cGFuZF9zdGF0aWNfaW5pdCk6IEhlcmUuCgoJKiBydHRpLmMgKGdldF90aW5mb192YXIpOiBUaGVzZSBzaG91bGQgYWx3YXlzIGJlIGdsb2JhbAoJKGV4cGFuZF9zaV9kZXNjKTogVXNlIHRyZWUsIG5vdCBSVEwsIGZ1bmN0aW9ucyB0byBnZW5lcmF0ZSBjb2RlLgoJKGV4cGFuZF9jbGFzc19kZXNjKTogTGlrZXdpc2UuCgkoZXhwYW5kX3B0cl9kZXNjKTogTGlrZXdpc2UuCgkoZXhwYW5kX2F0dHJfZGVzYyk6IExpa2V3aXNlLgoJKGV4cGFuZF9nZW5lcmljX2Rlc2MpOiBMaWtld2lzZS4KCShzeW50aGVzaXplX3RpbmZvX2ZuKTogTGlrZXdpc2UuCgoxOTk5LTA5LTA5ICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogc2VtYW50aWNzLmMgKFJFQ0hBSU5fU1RNVFMpOiBSZW1vdmUgYGxhc3QnIHBhcmFtZXRlci4KCShSRUNIQUlOX1NUTVRTX0ZST01fTEFTVCk6IFJlbW92ZS4gIFJlcGxhY2UgYWxsIHVzZXMgd2l0aAoJUkVDSEFJTl9TVE1UUy4gCgkoUkVDSEFJTl9TVE1TVF9GUk9NX0NIQUlOKTogTGlrZXdpc2UuCgoJKiBwYXJzZS55IChzaW1wbGVfc3RtdCk6IEZpeCB0eXBvIGluIGxhc3QgY2hhbmdlLgoKCSogY3AtdHJlZS5oIChFWFBSX1NUTVRfQVNTSUdOU19USElTKTogTmV3IG1hY3JvLgoJKFNUTVRfSVNfRlVMTF9FWFBSX1ApOiBMaWtld2lzZS4KCShTVE1UX0xJTkVOT19GT1JfRk5fUCk6IExpa2V3aXNlLgoJKHByZXBfc3RtdCk6IE5ldyBmdW5jdGlvbi4KCShidWlsZGluZ19zdG10X3RyZWUpOiBUd2VhayBmb3Igc2FmZXR5LgoJKiBwdC5jICh0c3Vic3RfZXhwcik6IFVzZSBwcmVwX3N0bXQgdGhyb3VnaG91dC4KCShhZGRfdHJlZSk6IE1vdmUgaXQgdG8gc2VtYW50aWNzLmMKCSogc2VtYW50aWNzLmMgKGFkZF90cmVlKTogTW92ZSBpdCBoZXJlLgoJKGZpbmlzaF9leHByX3N0bXRfcmVhbCk6IE5ldyBmdW5jdGlvbi4KCShmaW5pc2hfZXhwcl9zdG10KTogVXNlIGl0LgoJKGZpbmlzaF9pZl9zdG10X2NvbmQpOiBVc2UgRklOSVNIX0NPTkQuCgkoZmluaXNoX3doaWxlX3N0bXRfY29uZCk6IExpa2V3aXNlLgoJKGZpbmlzaF9mb3JfY29uZCk6IExpa2V3aXNlLgoJKGZpbmlzaF9zdG10X3RyZWUpOiBUd2VhayBsaW5lLW51bWJlciBoYW5kbGluZy4KCShwcmVwX3N0bXQpOiBOZXcgZnVuY3Rpb24uCgkoZXhwYW5kX3N0bXQpOiBVc2UgaXQuCgkKCSogY3AtdHJlZS5oIChiZWdpbl9zd2l0Y2hfc3RtdCk6IEFkanVzdCBwcm90b3R5cGUuCgkoZmluaXNoX3N3aXRjaF9jb25kKTogTGlrZXdpc2UuCgkqIHBhcnNlLnkgKHNpbXBsZV9zdG10KTogQWRqdXN0IGFjY29yZGluZ2x5LgoJKiBwYXJzZS5jOiBSZWdlbmVyYXRlZC4KCSogcHQuYyAodHN1YnN0X2V4cHIpOiBBZGp1c3QgYWNjb3JkaW5nbHkuCgkqIHNlbWFudGljcy5jIChleHBhbmRfY29uZCk6IE5ldyBmdW5jdGlvbi4KCShGSU5JU0hfQ09ORCk6IE5ldyBtYWNyby4KCShiZWdpbl9zd2l0Y2hfc3RtdCk6IEJ1aWxkIHRoZSBTV0lUQ0hfU1RNVCBoZXJlLgoJKGZpbmlzaF9zd2l0Y2hfc3RtdF9jb25kKTogTm90IGhlcmUuCgkoZXhwYW5kX3N0bXQpOiBBZGp1c3QgY2FsbHMgdG8gYmVnaW5fc3dpdGNoX3N0bXQgYW5kCglmaW5pc2hfc3dpdGNoX2NvbmQuICBVc2UgZXhwYW5kX2NvbmQgdGhyb3VnaG91dC4KCgkqIGR1bXAuYyAoZGVxdWV1ZV9hbmRfZHVtcCk6IER1bXAgdHlwZXMgZm9yIGNvbnN0YW50cy4KCURlc2NyaWJlIERFQ0xfQVJHX1RZUEUgbW9yZSBpbnR1aXRpdmVseS4KCUhhbmRsZSBBUlJBWV9SRUYuCgoJKiBkZWNsLmMgKGxhbmdfbWFya190cmVlKTogTWFyayBUWVBFX0xBTkdfU1BFQ0lGSUMuCgkobGFuZ19jbGVhbnVwX3RyZWUpOiBSZW1vdmUuCgkqIGxleC5jIChtYWtlX2xhbmdfdHlwZSk6IFVzZSBnZ2NfYWxsb2MgdG8gYWxsb2NhdGUKCVRZUEVfTEFOR19TUEVDSUZJQy4KCglSZW9yZ2FuaXplIHBlci1mdW5jdGlvbiBkYXRhLgoJKiBjcC10cmVlLmggKHNhdmVkX3Njb3BlKTogQWRkIGZ1bmN0aW9uX2RlY2wsIGJpbmRpbmdzLgoJKGxhbmd1YWdlX2Z1bmN0aW9uKTogUmVuYW1lIGJpbmRpbmdfbGV2ZWwgdG8gYmluZGluZ3MuCgkoY3BfZnVuY3Rpb25fY2hhaW4pOiBVc2UgdGhlIGN1cnJlbnRfZnVuY3Rpb24sIG5vdCB0aGUKCW91dGVyX2Z1bmN0aW9uX2NoYWluLgoJKGN1cnJlbnRfY2xhc3NfcHRyKTogTWFrZSBpdCB3b3JrLCBldmVuIHdoZW4gdGhlcmUncyBubyAKCWN1cnJlbnQgZnVuY3Rpb24uCgkoY3VycmVudF9jbGFzc19yZWYpOiBMaWtld2lzZS4KCShTRl9ERUZBVUxULCBTRl9QUkVfUEFSU0VELCBTRl9JTkNMQVNTX0lOTElORSwgU0ZfRVhQQU5EKTogTmV3IAoJbWFjcm9zLgoJKGNsZWFyX3RlbXBfbmFtZSk6IFJlbW92ZS4KCSogZGVjbC5jIChjaGVja19mdW5jdGlvbl90eXBlKTogTmV3IGZ1bmN0aW9uLCBicm9rZW4gb3V0IGZyb20KCXN0YXJ0X2Z1bmN0aW9uLgoJKGN1cnJlbnRfYmluZGluZ19sZXZlbCk6IEFkanVzdCBkZWZpbml0aW9uLgoJKHB1c2hsZXZlbCk6IFNpbXBsaWZ5LgoJKHBvcGxldmVsKTogRG9uJ3QgdXNlIG5hbWVkX2xhYmVsX3VzZXMgd2hlbiB3ZSdyZSBvdXRzaWRlCglhIGZ1bmN0aW9uIHNjb3BlLgoJKG1hcmtfc2F2ZWRfc2NvcGUpOiBNYXJrIGZ1bmN0aW9uX2RlY2wgYW5kIGJpbmRpbmdzLgoJKG1heWJlX3B1c2hfdG9fdG9wX2xldmVsKTogRG9uJ3QgdW5jb25kaXRpb25hbGx5IHB1c2ggYSBuZXcKCWZ1bmN0aW9uIGNvbnRleHQuICBTYXZlIGJpbmRpbmdzIGFuZCB0aGUgY3VycmVudF9mdW5jdGlvbl9kZWNsLgoJRG9uJ3QgY2xlYXIgbmFtZWRfbGFiZWxzLgoJKHBvcF9mcm9tX3RvcF9sZXZlbCk6IFBvcCBmdW5jdGlvbiBjb250ZXh0IGlmIGFwcHJvcHJpYXRlLgoJKGluaXRfZGVjbF9wcm9jZXNzaW5nKTogU2V0IGluaXRfbGFuZ19zdGF0dXMgYW5kIGZyZWVfbGFuZ19zdGF0dXMsCglyYXRoZXIgdGhhbiBzYXZlX2xhbmdfc3RhdHVzIGFuZCByZXN0b3JlX2xhbmdfc3RhdHVzLgoJKHN0YXJ0X2Z1bmN0aW9uKTogVGFrZSBTRl8qIGZsYWdzLiAgRG9uJ3QgY2xlYXIgcGVyLWZ1bmN0aW9uIGRhdGEuCglSZW9yZGVyIGFuZCBzaW1wbGlmeSB0byB1c2UgbmV3IHBlci1mdW5jdGlvbiBkYXRhIGNvZGUuICBBZGQKCWFzc2VydHMuCgkoc3RvcmVfcGFybV9kZWNscyk6IERvbid0IGNhbGwgaW5pdF9mdW5jdGlvbl9zdGFydCBoZXJlLgoJKGZpbmlzaF9mdW5jdGlvbik6IEFkanVzdCBmb3IgbmV3IGhhbmRsaW5nIG9mIHBlci1mdW5jdGlvbiBkYXRhLgoJKHB1c2hfY3BfZnVuY3Rpb25fY29udGV4dCk6IFNpbXBsaWZ5LgoJKG1hcmtfY3BfZnVuY3Rpb25fY29udGV4dCk6IENoYW5nZSBiaW5kaW5nX2xldmVsIHRvIGJpbmRpbmdzLgoJKiBkZWNsMi5jIChjbGVhcl90ZW1wX25hbWUpOiBSZW1vdmUuCgkoc3RhcnRfb2JqZWN0cyk6IFVzZSBTRiBmbGFncyB0byBzdGFydF9mdW5jdGlvbi4KCShzdGFydF9zdGF0aWNfc3RvcmFnZV9kdXJhdGlvbl9mdW5jdGlvbik6IExpa2V3aXNlLgoJKiBleGNlcHQuYyAoc3RhcnRfYW5vbl9mdW5jKTogUmVtb3ZlIHJlZHVuZGFudCBjYWxscyB0byAKCXB1c2hfZnVuY3Rpb25fY29udGV4dF90by4gIFVzZSBTRiBmbGFncyB0byBzdGFydCBmdW5jdGlvbi4KCShlbmRfYW5vbl9mdW5jKTogUmVtb3ZlIHJlZHVuZGFudCBjYWxsIHRvIHBvcF9mdW5jdGlvbl9jb250ZXh0Cglmcm9tLgoJKiBsZXguYyAocmVpbml0X3BhcnNlX2Zvcl9mdW5jdGlvbik6IERvbid0IGluaXRpYWxpemUgcGVyLWZ1bmN0aW9uIAoJZGF0YS4KCSogbWV0aG9kLmMgKGVtaXRfdGh1bmspOiBDbGVhciBjdXJyZW50X2Z1bmN0aW9uIGFmdGVyIGNhbGxpbmcKCWFzc2VtYmxlX2VuZF9mdW5jdGlvbi4gIFVzZSBTRiBmbGFncyBmb3Igc3RhcnRfZnVuY3Rpb24uCgkoc3ludGhlc2l6ZV9tZXRob2QpOiBVc2UgU0YgZmxhZ3MgZm9yIHN0YXJ0X2Z1bmN0aW9uLgoJKiBwYXJzZS5jOiBSZWdlbmVyYXRlZC4KCSogcGFyc2UueSAoZm4uZGVmcGVuKTogTGlrZXdpc2UuCgkocGVuZGluZ19pbmxpbmUpOiBDbGVhciBjdXJyZW50X2Z1bmN0aW9uLCBldmVuIGlmIHNvbWV0aGluZyBnb2VzCgl3cm9uZy4KCSogcHQuYyAoaW5zdGFudGlhdGVfZGVjbCk6IFVzZSBTRiBmbGFncyB0byBzdGFydF9mdW5jdGlvbi4KCURvbid0IHNhdmUgYW5kIHJlc3RvcmUgZXhwYW5kaW5nX3AuCgkoYWRkX3RyZWUpOiBIYW5kbGUgdGhlIGNhc2Ugd2hlcmUgd2UgYXJlIG91dHNpZGUgYW55IGZ1bmN0aW9uLgoJKGVuZF90cmVlKTogTGlrZXdpc2UuCgkqIHJ0dGkuYyAoc3l0aGVzaXplX3RpbmZvX2ZuKTogVXNlIFNGIGZsYWdzIHRvIHN0YXJ0X2Z1bmN0aW9uLgoJKiBzZW1hbnRpY3MuYyAoYmVnaW5fZnVuY3Rpb25fZGVmaW5pdGlvbik6IExpa2V3aXNlLgoJKGV4cGFuZF9ib2R5KTogTGlrZXdpc2UuCgkKMTk5OS0wOS0wOSAgTmF0aGFuIFNpZHdlbGwgIDxuYXRoYW5AYWNtLm9yZz4KCgkqIGNwLXRyZWUuaCAoY29udmVydF90b192b2lkKTogUHJvdG90eXBlIG5ldyBmdW5jdGlvbi4KCShyZXF1aXJlX2NvbXBsZXRlX3R5cGVfaW5fdm9pZCk6IFJlbW92ZSBwcm90b3R5cGUuCgkqIGN2dC5jIChjb252ZXJ0X3RvX3ZvaWQpOiBOZXcgZnVuY3Rpb24uCgkob2NwX2NvbnZlcnQpOiBVc2UgY29udmVydF90b192b2lkLgoJKiBkZWNsLmMgKGNwbHVzX2V4cGFuZF9leHByX3N0bXQpOiBMaWtld2lzZSwgZm9yIGNvbXBsZXRlCglleHByZXNzaW9ucy4KCSogdHlwZWNrLmMgKHJlcXVpcmVfY29tcGxldGVfdHlwZV9pbl92b2lkKTogUmVtb3ZlIGZ1bmN0aW9uLgoJKGJ1aWxkX2NvbXBvdW5kX2V4cHIpOiBVc2UgY29udmVydF90b192b2lkLgoJKGJ1aWxkX3N0YXRpY19jYXN0KTogTGlrZXdpc2UuCgkoYnVpbGRfY19jYXN0KTogTGlrZXdpc2UuCgkqIHNlbWFudGljcy5jIChmaW5pc2hfZXhwcl9zdG10KTogRG8gbm90IGRlY2F5IGZ1bGwgZXhwcmVzc2lvbnMuCgkKCSogdHlwZWNrLmMgKGJ1aWxkX3hfY29tcG91bmRfZXhwcik6IEFkZCBGSVhNRS4KCjE5OTktMDktMDggIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjcC10cmVlLmggKHNjcmF0Y2hfdHJlZV9jb25zKTogUmVtb3ZlLgoJKiBjYWxsLmM6IFJlcGxhY2UgYWxsIHVzZXMgb2YgZXhwcl90cmVlX2NvbnMsIHNhdmVhYmxlX3RyZWVfY29ucywKCWFuZCBwZXJtX3RyZWVfY29ucyB3aXRoIHBsYWluIHRyZWVfY29ucy4KCSogY2xhc3MuYzogTGlrZXdpc2UuCgkqIGRlY2wuYzogTGlrZXdpc2UuCgkqIGRlY2wyLmM6IExpa2V3aXNlLgoJKiBleGNlcHQuYzogTGlrZXdpc2UuCgkqIGV4cHIuYzogTGlrZXdpc2UuCgkqIGluaXQuYzogTGlrZXdpc2UuCgkqIGxleC5jOiBMaWtld2lzZS4KCSogbWV0aG9kLmM6IExpa2V3aXNlLgoJKiBwYXJzZS55OiBMaWtld2lzZS4KCSogcHQuYzogTGlrZXdpc2UuCgkqIHJlcG8uYzogTGlrZXdpc2UuCgkqIHJ0dGkuYzogTGlrZXdpc2UuCgkqIHNlYXJjaC5jOiBMaWtld2lzZS4KCSogdHlwZWNrLmM6IExpa2V3aXNlLgoJKiBwYXJzZS5jOiBSZWdlbmVyYXRlZC4KCSogdHJlZS5jIChidWlsZF9zcmNsb2MpOiBTaW1wbGlmeS4KCQoxOTk5LTA5LTA4ICBCcnVjZSBLb3JiICBhdXRvZ2VuQGxpbnV4Ym94LmNvbQoKCSogTWFrZWZpbGUuaW46IEdpdmUgdGhlIGdwZXJmIHVzZXIgYSBoaW50IGFib3V0IHdoeSAiZ3BlcmYgLUYiIGZhaWxzLgoKMTk5OS0wOS0wOCAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGNwLXRyZWUuaCAobGFuZ19kZWNsX2ZsYWdzKTogUmVtb3ZlIHBlcm1hbmVudF9hdHRyLgoJUmVtb3ZlIG5leHQuCgkoTEFOR19ERUNMX1BFUk1BTkVOVCk6IFJlbW92ZS4KCSogZGVjbC5jIChkdXBsaWNhdGVfZGVjbHMpOiBEb24ndCBtZXNzIGFib3V0IHdpdGggb2JzdGFja3MgdHJ5aW5nCgl0byBmcmVlIG1lbW9yeS4KCShsYW5nX21hcmtfdHJlZSk6IE1hcmsgREVDTF9MQU5HX1NQRUNJRklDLgoJKiBsZXguYyAoZnJlZV9sYW5nX2RlY2xfY2hhaW4pOiBSZW1vdmUuCgkoYnVpbGRfbGFuZ19kZWNsKTogRG9uJ3QgdXNlIG9ic3RhY2tzLgoJKHJldHJvZml0X2xhbmdfZGVjbCk6IExpa2V3aXNlLgoJKGNvcHlfbGFuZ19kZWNsKTogTGlrZXdpc2UuCgoJKiBjcC10cmVlLmggKHNhdmVkX3Njb3BlKTogUmVtb3ZlIG9sZF9iaW5kaW5nX2xldmVsIGFuZCAKCWZ1bmN0aW9uX2RlY2wuICBUaWR5IHVwLgoJKiBkZWNsLmMgKG1hcmtfc2F2ZWRfc2NvcGUpOiBEb24ndCBzZXQgdGhlbS4KCShtYXliZV9wdXNoX3RvX3RvcF9sZXZlbCk6IENsZWFyIG1lbW9yeS4KCgkqIGRlY2wuYyAobGF5b3V0X3Zhcl9kZWNsKTogQ2hhbmdlIHByb3RvdHlwZS4gIERvbid0IGNvbXBsZXRlCgl0eXBlcyBmb3IgZXh0ZXJuYWwgb2JqZWN0cy4KCShjaGVja19pbml0aWFsaXplcik6IExpa2V3aXNlLiAgVGlkeS4KCShpbml0aWFsaXplX2xvY2FsX3Zhcik6IENvbXBsZXRlIHR5cGVzIGhlcmUuCgkoY3BfZmluaXNoX2RlY2wpOiBOb3QgaGVyZS4gIFJlb3JnYW5pemUgYSBsaXR0bGUuCgkoZ3Jva3ZhcmRlY2wpOiBEb24ndCBjb21wbGV0ZSB0eXBlcyBoZXJlLgoKCSogZGVjbC5jIChzdGFydF9mdW5jdGlvbik6IENsZWFyIGxhc3RfZHRvcl9pbnNuIGFuZAoJbGFzdF9wYXJtX2NsZWFudXBfaW5zbi4gCgkocHVzaF9jcF9mdW5jdGlvbl9jb250ZXh0KTogSnVzdCBjb3B5IG92ZXIgYSBsaXR0bGUgb2YKCXRoZSBvbGQgY29udGV4dCwgbm90IGFsbCBvZiBpdC4KCgkqIGNwLXRyZWUuaCAoY29weV90b19wZXJtYW5lbnQpOiBSZW1vdmUuCgkocGVybWFuZW50X3ApOiBMaWtld2lzZS4KCSogZGVjbC5jIChidWlsZGluZ190eXBlbmFtZV90eXBlKTogRG9uJ3QgdXNlIGNvcHlfdG9fcGVybWFuZW50LgoJKHN0YXJ0X2RlY2wpOiBMaWtld2lzZS4KCShncm9rX3JlZmVyZW5jZV9pbml0KTogTGlrZXdpc2UuCgkoY3BfZmluaXNoX2RlY2wpOiBMaWtld2lzZS4KCSogaW5pdC5jIChidWlsZF9uZXdfMSk6IERvbid0IHVzZSBtYXBjYXIuCgkoYnVpbGRfdmVjX2RlbGV0ZV8xKTogRG9uJ3QgdXNlIGNvcHlfdG9fcGVybWFuZW50LgoJKGJ1aWxkX3ZlY19pbml0KTogTGlrZXdpc2UuCgkqIHBhcnNlLnkgKHByaW1hcnkpOiBMaWtld2lzZS4KCSogcGFyc2UuYzogUmVnZW5lcmF0ZWQuCgkqIHB0LmMgKHB1c2hfdGVtcGxhdGVfZGVjbF9yZWFsKTogRG9uJ3QgdXNlIGNvcHlfdG9fcGVybWFuZW50LgoJKGxvb2t1cF90ZW1wbGF0ZV9jbGFzcyk6IExpa2V3aXNlLgoJKHRzdWJzdF9mcmllbmRfZnVuY3Rpb24pOiBMaWtld2lzZS4KCShpbnN0YW50aWF0ZV9jbGFzc190ZW1wbGF0ZSk6IExpa2V3aXNlLgoJKHRzdWJzdF9kZWNsKTogTGlrZXdpc2UuCgkodHN1YnN0KTogTGlrZXdpc2UuCgkoaW5zdGFudGlhdGVfdGVtcGxhdGUpOiBMaWtld2lzZS4KCSh1bmlmeSk6IExpa2V3aXNlLgoJKiBydHRpLmMgKGdldF90aW5mb19mbik6IExpa2V3aXNlLgoJKGJ1aWxkX2R5bmFtaWNfY2FzdCk6IExpa2V3aXNlLgoJKiBzZW1hbnRpY3MuYyAoZmluaXNoX2lmX3N0bXRfY29uZCk6IExpa2V3aXNlLgoJKGZpbmlzaF93aGlsZV9zdG10X2NvbmQpOiBMaWtld2lzZS4KCShmaW5pc2hfZG9fc3RtdCk6IExpa2V3aXNlLgoJKGZpbmlzaF9mb3JfY29uZCk6IExpa2V3aXNlLgoJKGZpbmlzaF9mb3JfZXhwcik6IExpa2V3aXNlLgoJKGZpbmlzaF9jbGVhbnVwKTogTGlrZXdpc2UuCgkoYWRkX2RlY2xfc3RtdCk6IExpa2V3aXNlLgoJKGZpbmlzaF9uYW1lZF9yZXR1cm5fdmFsdWUpOiBMaWtld2lzZS4KCShmaW5pc2hfcXVhbGlmaWVkX2NhbGxfZXhwcik6IExpa2V3aXNlLgoJKiB0cmVlLmMgKHBlcm1fbWFuaXApOiBSZW1vdmUuCgkoYnVpbGRfZXhjZXB0aW9uX3ZhcmlhbnQpOiBEb24ndCB1c2UgY29weV90b19wZXJtYW5lbnQuCgkocGVybWFuZW50X3ApOiBSZW1vdmUuCgkoY29weV90b19wZXJtYW1lbnQpOiBSZW1vdmUuCgkoYnVpbGRfbWluX250KTogRG9uJ3QgdXNlIGNvcHlfdG9fcGVybWFuZW50LgoJKGJ1aWxkX21pbik6IExpa2V3aXNlLgoJKG1pbl90cmVlX2NvbnMpOiBMaWtld2lzZS4KCSogdHlwZWNrYy5jIChidWlsZF9zdGF0aWNfY2FzdCk6IExpa2V3aXNlLgoJKGJ1aWxkX3JlaW50ZXJwcmV0X2Nhc3QpOiBMaWtld2lzZS4KCShidWlsZF9jb25zdF9jYXN0KTogTGlrZXdpc2UuCgkKMTk5OS0wOS0wNyAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGRlY2wuYyAoZ2djX3ApOiBTZXQgaXQgdG8gMS4KCShtYXJrX3NhdmVkX3Njb3BlKTogQWRkIHByb3RvdHlwZS4KCjE5OTktMDktMDcgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgoJKiBjcC10cmVlLmggKENfUFJPTU9USU5HX0lOVEVHRVJfVFlQRV9QKTogRGVsZXRlLgoJKiB0eXBlY2suYyAoc2VsZl9wcm9tb3RpbmdfYXJnc19wKTogRGVsZXRlLgoKMTk5OS0wOS0wNyAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogc2VhcmNoLmMgKGJpbmZvX2Zvcl92dGFibGUpOiBVc2UgQ0xBU1NUWVBFX1ZGSUVMRF9QQVJFTlQuCgkoZGZzX2Jmdl9xdWV1ZV9wLCBkZnNfYmZ2X2hlbHBlciwgc3RydWN0IGJmdl9pbmZvKTogUmVtb3ZlLgoKMTk5OS0wOS0wNyAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIE1ha2VmaWxlLmluICh0cmVlLm8pOiBEZXBlbmQgb24gZ2djLmguCgkqIGNsYXNzLmMgKG1ha2VfbWV0aG9kX3ZlYyk6IFJlbW92ZS4KCShmcmVlX21ldGhvZF92ZWMpOiBMaWtld2lzZS4KCShmcmVlX21ldGhvZF92ZWNzKTogUmVtb3ZlLgoJKGFkZF9tZXRob2QpOiBEb24ndCB1c2UgdGhlbS4KCSogY3AtdHJlZS5kZWYgKFBUUk1FTV9DU1QpOiBNYWtlIGl0IGxvbmdlci4KCShURU1QTEFURV9QQVJNX0lOREVYKTogTWFrZSBpdCBzaG9ydGVyLgoJKiBjcC10cmVlLmggKEJJTkRJTkdfSEFTX0xFVkVMX1ApOiBOZXcgbWFjcm8uCgkodGVtcGxhdGVfcGFybV9pbmRleCk6IFJlbW92ZSBSVEwgZmllbGQuCgkocHRybWVtX2NzdCk6IEFkZCBSVEwgZmllbGQuCgkoZmluaXNoX2Z1bmN0aW9uKTogUmVtb3ZlZCBwYXJhbWV0ZXIuCgkocHJvY2Vzc19uZXh0X2lubGluZSk6IENoYW5nZSBwcm90b3R5cGUuCgkoaW5pdF9jcGx1c191bnNhdmUpOiBSZW5hbWUgdG8gaW5pdF90cmVlLgoJKGJpbmRpbmdfaW5pdCk6IFJlbW92ZS4KCSogZGVjbC5jIChmcmVlX2JpbmRpbmdfbm9kZXMpOiBSZW1vdmUuCgkocHVzaF9iaW5kaW5nKTogRG9uJ3QgdXNlIHRoZW0uICBTZXQgQklORElOR19IQVNfTEVWRUxfUC4KCShwb3BfYmluZGluZyk6IERvbid0IHVzZSBmcmVlX2JpbmRpbmdfbm9kZXMuCgkoZnJlZV9iaW5kaW5nX3ZlY3MpOiBSZW1vdmUuCgkoc3RvcmVfYmluZGluZ3MpOiBEb24ndCB1c2UgdGhlbS4KCShwb3BfZnJvbV90b3BfbGV2ZWwpOiBMaWtld2lzZS4KCShsb29rdXBfbmFtZXNwYWNlX25hbWUpOiBTaW1wbGlmeS4KCShidWlsZF90eXBlbmFtZV90eXBlKTogRG9uJ3QgdXNlIG9ic3RhY2tfZnJlZS4KCSh1bnF1YWxpZmllZF9uYW1lc3BhY2VfbG9va3VwKTogU2ltcGxpZnkuCgkobG9va3VwX25hbWVfcmVhbCk6IFNpbXBsaWZ5LgoJKHN0YXJ0X2Z1bmN0aW9uKTogUmVtb3ZlIGNvbW1lbnQgYWJvdXQgbGVha3MuCgkoZmluaXNoX2Z1bmN0aW9uKTogUmVtb3ZlZCBuZXN0ZWQgcGFyYW1ldGVyLiAgQ2FsbAoJZXhwYW5kX2VuZF9iaW5kaW5ncyBldmVuIHdoZW4gYnVpbGRpbmdfc3RtdF90cmVlLgoJQ2FsbCBnZ2NfcHVzaF9jb250ZXh0IGFuZCBnZ2NfcG9wX2NvbnRleHQgYXJvdW5kCglyZXN0X29mX2NvbXBpbGF0aW9uLCBpZiBuZWNlc3NhcnkuCgkobWFya19jcF9mdW5jdGlvbl9jb250ZXh0KTogSGFuZGxlIGEgTlVMTCBsYW5ndWFnZS1jb250ZXh0LgoJKGxhbmdfbWFya19mYWxzZV9sYWJlbF9zdGFjayk6IEZpeCB0eXBvLgoJKGxhbmdfbWFya190cmVlKTogSGFuZGxlIENQTFVTX0JJTkRJTkcsIE9WRVJMT0FELAoJVEVNUExBVEVfUEFSTV9JTkRFWC4gIEhhbmRsZSB0aGUgZnVubnkgVFlQRV9MQU5HX1NQRUNJRklDIG9uCglwb2ludGVyIHRvIG1ldGhvZCB0eXBlcy4KCShsYW5nX2NsZWFudXBfdHJlZSk6IFVzZSBmcmVlIHRvIGZyZWUgVFlQRV9MQU5HX1NQRUNJRklDLgoJKiBkZWNsMi5jIChmaW5pc2hfb2JqZWN0cyk6IEFkanVzdCBjYWxsIHRvIGZpbmlzaF9mdW5jdGlvbi4KCShmaW5pc2hfc3RhdGljX3N0b3JlX2R1cmF0aW9uX2Z1bmN0aW9uKTogTGlrZXdpc2UuCgkoZG9fbm9ubWVtYmVyX3VzaW5nX2RlY2wpOiBSZW1vdmUgY2FsbCB0byBiaW5kaW5nX2luaXQuCgkqIGV4Y2VwdC5jIChlbmRfYW5vbl9mdW5jKTogQWRqdXN0IGNhbGwgdG8gZmluaXNoX2Z1bmN0aW9uLgoJKiBsZXguYyAobWFya19pbXBsX2ZpbGVfY2hhaW4pOiBOZXcgZnVuY3Rpb24uCgkoaW5pdF9wYXJzZSk6IENhbGwgaW5pdF90cmVlLCBub3QgaW5pdF9jcGx1c191bnNhdmUuCglBZGQgR0Mgcm9vdHMuCgkoY3BfcHJhbWdhX2ludGVyZmFjZSk6IFVzZSB4bWFsbG9jLCBub3QgcGVybWFsbG9jLgoJKGNwX3ByYWdtYV9pbXBsZW1lbnRhdGlvbik6IExpa2V3aXNlLgoJKGJlZ2luX2RlZmluaXRpb25fb2ZfaW5jbGFzc19pbmxpbmUpOiBTaW1wbGlmeS4KCShwcm9jZXNzX25leHRfaW5saW5lKTogQWRqdXN0IHByb3RvdHlwZS4KCShkb19zY29wZWRfaWQpOiBEb24ndCBjYWxsIGJpbmRpbmdfaW5pdC4KCShtYWtlX2xhbmdfdHlwZSk6IEFsbG9jYXRlIFRZUEVfTEFOR19TUEVDSUZJQyB3aXRoIHhtYWxsb2MuCgkqIG1ldGhvZC5jIChlbWl0X3RodW5rKTogQWRqdXN0IGNhbGwgdG8gZmluaXNoX2Z1bmN0aW9uLgoJKHN5bnRoZXNpemVfbWV0aG9kKTogTGlrZXdpc2UuCgkqIHBhcnNlLnkgKCV1bmlvbik6IEFkZCBhIG5ldyBgcGknIHZhcmlhbnQuCgkoUFJFX1BBUlNFRF9GVU5DVElPTl9ERUNMKTogVXNlIGl0LgoJKGZuLmRlZnBlbik6IExpa2V3aXNlLgoJKGZuZGVmKTogQWRqdXN0IGNhbGwgdG8gZmluaXNoX2Z1bmN0aW9uLgoJKiBwdC5jIChpbnN0YW50aWF0ZV9kZWNsKTogTGlrZXdpc2UuCgkqIHJ0dGkuYyAoc3ludGhlaXN6ZV90aW5mb19mbik6IExpa2V3aXNlLgoJKiBzZW1hbnRpY3MuYyAoZXhwYW5kX2JvZHkpOiBMaWtld2lzZS4KCSogdHJlZS5jOiBJbmNsdWRlIGdnYy5oLgoJKG1hcmtfbGlzdF9oYXNoKTogTmV3IGZ1bmN0aW9uLgoJKGJpbmRpbmdfaW5pdCk6IFJlbW92ZS4KCShpbml0X2NwbHVzX3Vuc2F2ZSk6IFJlbmFtZSB0byAuLi4KCShpbml0X3RyZWUpOiBUaGlzLiAgQWRkIEdDIHJvb3RzLgoJCjE5OTktMDktMDUgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJR2V0IHJlYWR5IGZvciBnYXJiYWdlIGNvbGxlY3Rpb24uCgkqIE1ha2VmaWxlLmluIChDWFhfVFJFRV9IKTogQWRkIHZhcnJheS5oCgkobGV4Lm8pOiBEZXBlbmQgb24gZ2djLmguCgkoZGVjbC5vKTogTGlrZXdpc2UuCgkoZGVjbDIubyk6IExpa2V3aXNlLgoJKG1ldGhvZC5vKTogTGlrZXdpc2UuCgkoc2VhcmNoLm8pOiBMaWtld2lzZS4KCShwdC5vKTogTGlrZXdpc2UuCgkocmVwby5vKTogTGlrZXdpc2UuCgkqIGNsYXNzLmM6IEluY2x1ZGUgZ2djLmguCgkoY3VycmVudF9jbGFzc19uYW1lKTogUmVtb3ZlLgoJKGN1cnJlbnRfY2xhc3NfdHlwZSk6IExpa2V3aXNlLgoJKGN1cnJlbnRfYWNjZXNzX3NwZWNpZmllcik6IExpa2V3aXNlLgoJKHByZXZpb3VzX2NsYXNzX3R5cGUpOiBMaWtld2lzZS4KCShwcmV2aW91c19jbGFzc192YWx1ZXMpOiBMaWtld2lzZS4KCShjbGFzc19jYWNoZV9maXJzdG9iaik6IExpa2V3aXNlLgoJKGN1cnJlbnRfbGFuZ19iYXNlKTogTGlrZXdpc2UuCgkoY3VycmVudF9sYW5nX3N0YWNrKTogTGlrZXdpc2UuCgkoY3VycmVudF9sYW5nX3N0YWNrc2l6ZSk6IExpa2V3aXNlLgoJKGxhbmdfbmFtZV9jKTogTGlrZXdpc2UuCgkobGFuZ19uYW1lX2NwbHVzcGx1cyk6IExpa2V3aXNlLgoJKGxhbmdfbmFtZV9qYXZhKTogTGlrZXdpc2UuCgkoY3VycmVudF9sYW5nX25hbWUpOiBMaWtld2lzZS4KCShiYXNlX2xheW91dF9kZWNsKTogTGlrZXdpc2UuCgkoYWNjZXNzX2RlZmF1bHRfbm9kZSk6IExpa2V3aXNlLgoJKGFjY2Vzc19wdWJsaWNfbm9kZSk6IExpa2V3aXNlLgoJKGFjY2Vzc19wcm90ZWN0ZWRfbm9kZSk6IExpa2V3aXNlLgoJKGFjY2Vzc19wcml2YXRlX25vZGUpOiBMaWtld2lzZS4KCShhY2Nlc3NfZGVmYXVsdF92aXJ0dWFsX25vZGUpOiBMaWtld2lzZS4KCShhY2Nlc3NfcHVibGljX3ZpcnR1YWxfbm9kZSk6IExpa2V3aXNlLgoJKGFjY2Vzc19wcm90ZWN0ZWRfdmlydHVhbF9ub2RlKTogTGlrZXdpc2UuCgkoYWNjZXNzX3ByaXZhdGVfdmlydHVhbF9ub2RlKTogTGlrZXdpc2UuCgkoc2lnbmVkX3plcm9fbm9kZSk6IExpa2V3aXNlLgoJKGluaXRfY2xhc3NfcHJvY2Vzc2luZyk6IERvbid0IGJ1aWxkIGJhc2VfbGF5b3V0X2RlY2wuCgkocHVzaF9sYW5nX2NvbnRleHQpOiBBZGp1c3Qgbm93IHRoYXQgY3VycmVudF9sYW5nX2Jhc2UgaXMgYSB2YXJyYXkuCgkocG9wX2xhbmdfY29udGV4dCk6IExpa2V3aXNlLgoJKiBjcC10cmVlLmg6IEluY2x1ZGUgdmFycmF5LmguCgkoY3BfZ2xvYmFsX3RyZWVzKTogQWRkIGFjY2Vzc19kZWZhdWx0LCBhY2Nlc3NfcHVibGljLAoJYWNjZXNzX3Byb3RlY3RlZCwgYWNjZXNzX3ByaXZhdGUsIGFjY2Vzc19kZWZhdWx0X3ZpcnR1YWwsCglhY2Nlc3NfcHVibGljX3ZpcnR1YWwsIGFjY2Vzc19wcm90ZWN0ZWRfdmlydHVhbCwKCWFjY2Vzc19wcml2YXRlX3ZpcnR1YWwsIGN0b3JfaWRlbnRpZmllciwgZGVsdGEyX2lkZW50aWZpZXIsIAoJZGVsdGFfaWRlbnRpZmllciwgZHRvcl9pZGVudGlmaWVyLCBpbl9jaGFyZ2VfaWRlbnRpZmllciwKCWluZGV4X2lkZW50aWZpZXIsIG5lbHRzX2lkZW50aWZpZXIsIHRoaXNfaWRlbnRpZmllciwKCXBmbl9pZGVudGlmaWVyLCBwZm5fb3JfZGVsdGEyX2lkZW50aWZpZXIsIHZwdHJfaWRlbnRpZmllciwKCWxhbmdfbmFtZV9jLCBsYW5nX25hbWVfY3BsdXNwbHVzLCBsYW5nX25hbWVfamF2YSwKCWVtcHR5X2V4Y2VwdF9zcGVjLCBudWxsLCBqY2xhc3MsIG1pbnVzX29uZSwgdGVybWluYXRlLgoJKHNhdmVkX3Njb3BlKTogTW92ZSBoZXJlIGZyb20gZGVjbC5jLiAgRGVmaW5lIGdsb2JhbHMgaW4gdGVybXMgb2YKCXNhdmVkX3Njb3BlOiBjdXJyZW50X25hbWVzcGFjZSwgY3VycmVudF9jbGFzc19uYW1lLAoJY3VycmVudF9jbGFzc190eXBlLCBjdXJyZW50X2FjY2Vzc19zcGVjaWZpZXIsIGN1cnJlbnRfbGFuZ19zdGFjaywKCWN1cnJlbnRfbGFuZ19iYXNlLCBjdXJyZW50X2xhbmdfbmFtZSwgY3VycmVudF9mdW5jdGlvbl9wYXJtcywKCWN1cnJlbnRfdGVtcGxhdGVfcGFybXMsIHByb2Nlc3NpbmdfdGVtcGxhdGVfZGVjbCwKCXByb2Nlc3Npbmdfc3BlY2lhbGl6YXRpb24sIHByb2Nlc3NpbmdfZXhwbGljaXRfaW5zdGFudGlhdGlvbiwKCXByZXZpb3VzX2NsYXNzX3R5cGUsIHByZXZpb3VzX2NsYXNzX3ZhbHVlcywgY2xhc3NfY2FjaGVfZmlyc3RvYmouCgkoc2NvcGVfY2hhaW4pOiBOZXcgdmFyaWFibGUuCgkoaW5pdF9wdCk6IE5ldyBmdW5jdGlvbi4KCSogZGVjbC5jIChjdXJyZW50X25hbWVzcGFjZSk6IFJlbW92ZS4KCSh0aGlzX2lkZW50aWZpZXIsIGluX2NoYXJnZV9pZGVudGlmaWVyLCBjdG9yX2lkZW50aWZpZXIpOiBMaWtld2lzZS4KCShkdG9yX2lkZW50aWZpZXIsIHBmbl9pZGVudGlmaWVyLCBpbmRleF9pZGVudGlmaWVyKTogTGlrZXdpc2UuCgkoZGVsdGFfaWRlbnRpZmllciwgZGVsdGEyX2lkZW50aWZpZXIpOiBMaWtld2lzZS4KCShwZm5fb3JfZGVsdGEyX2lkZW50aWZpZXIsIHRhZ19pZGVudGlmaWVyKTogTGlrZXdpc2UKCSh2dF9vZmZfaWRlbnRpZmllciwgZW1wdHlfZXhjZXB0X3NwZWMsIG51bGxfbm9kZSk6IExpa2V3aXNlLgoJKGN1cnJlbnRfZnVuY3Rpb25fcGFybXMsIGN1cnJlbnRfbGFuZ19iYXNlKTogUmVtb3ZlLgoJKGN1cnJlbnRfbGFuZ19zdGFjaywgcHJldmlvdXNfY2xhc3NfdmFsdWVzKTogUmVtb3ZlLgoJKGNsYXNzX2JpbmRpbmdfbGV2ZWwpOiBNYWNyb2l6ZS4KCShzYXZlZF9zY29wZSk6IFJlbW92ZS4KCShjdXJyZW50X3NhdmVkX3Njb3BlKTogUmVuYW1lIHRvIHNjb3BlX2NoYWluLgoJKG1hcmtfc2F2ZWRfc2NvcGUpOiBBZGp1c3QgZm9yIG5ldyBzY29wZSBzdHJ1Y3R1cmUuCgkobWF5YmVfcHVzaF90b190b3BfbGV2ZWwpOiBMaWtld2lzZS4KCShwb3BfZnJvbV90b3BfbGV2ZWwpOiBMaWtld2lzZS4KCShkdXBsaWNhdGVfZGVjbHMpOiBBZGp1c3Qgbm93IHRoYXQgY3VycmVudF9sYW5nX2Jhc2UgaXMgYSB2YXJyYXkuCgkoYnVpbGRfdHlwZW5hbWVfdHlwZSk6IENhbGwgZ2djX2FkZF90cmVlX2hhc2hfdGFibGVfcm9vdC4KCShpbml0X2RlY2xfcHJvY2Vzc2luZyk6IENhbGwgaW5pdF9wdC4gIENhbGwgcHVzaF90b190b3BfbGV2ZWwgdG8KCXNldCB1cCBnbG9iYWxzLiAgQWRkIEdDIHJvb3RzLgoJKHhyZWZfYmFzZXR5cGVzKTogQWRqdXN0IG5vdyB0aGF0IGN1cnJlbnRfbGFuZ19iYXNlIGlzIGEgdmFycmF5LgoJKiBkZWNsLmggKHRoaXNfaWRlbnRpZmllcik6IFJlbW92ZS4KCShpbl9jaGFyZ2VfaWRlbnRpZmllcik6IExpa2V3aXNlLgoJKiBkZWNsMi5jOiBEb24ndCBpbmNsdWRlIHZhcnJheS5oLgoJKGN1cnJlbnRfbmFtZXNwYWNlKTogUmVtb3ZlLgoJKGluaXRfZGVjbDIpOiBBZGQgR0Mgcm9vdHMuCgkqIGV4Y2VwdC5jIChUZXJtaW5hdGUpOiBSZW1vdmUuIAoJKGluaXRfZXhjZXB0aW9uX3Byb2Nlc3NpbmcpOiBVc2UgdGVybWluYXRlX25vZGUgaW5zdGVhZC4KCShidWlsZF90ZXJtaW5hdGVfaGFuZGxlcik6IExpa2V3aXNlLgoJKiBpbml0LmMgKG5jX25lbHRzX2ZpZWxkX2lkKTogUmVtb3ZlLgoJKG1pbnVzX29uZSk6IExpa2V3aXNlLgoJKGluaXRfaW5pdF9wcm9jZXNzaW5nKTogVXNlIG1pbnVzX29uZV9ub2RlIGFuZCBuZWx0c19pZGVudGlmaWVyCglpbnN0ZWFkLiAgQWRkIEdDIHJvb3RzLgoJKGpjbGFzc19ub2RlKTogUmVtb3ZlLgoJKGJ1aWxkX25ld18xKTogVXNlIG5lbHRzX2lkZW50aWZpZXIuCgkoYnVpbGRfdmVjX2luaXQpOiBMaWtld2lzZS4KCShidWlsZF92ZWNfZGVsZXRlKTogTGlrZXdpc2UuCgkqIGxleC5jOiBJbmNsdWRlIGdnYy5oLgoJKGRlZmFyZ19mbik6IE1vdmUgZGVjbGFyYXRpb24gZWFybHkuCgkoZGVmYXJnX3Bhcm1zKTogTGlrZXdpc2UuCgkoaW5pdF9wYXJzZSk6IEFkZCBHQyByb290cy4KCShoYW5kbGVfY3BfcHJhZ21hKTogUmVtb3ZlIHJlZHVuZGFudCBkZWNsYXJhdGlvbiBvZgoJcGVuZGluZ192dGFibGVzLgoJKiBtZXRob2QuYzogSW5jbHVkZSBnZ2MuaC4KCShidHlwZWxpc3QpOiBNYWtlIGl0IGEgdmFycmF5LiAgQWxsIHVzZXMgY2hhbmdlZC4KCShrdHlwZWxpc3QpOiBMaWtld2lzZS4KCShpbml0X21ldGhvZCk6IEFkZCBHQyByb290cy4KCSogcHQuYzogRG9uJ3QgaW5jbHVkZSB2YXJyYXkuaC4gIEluY2x1ZGUgZ2djLmguCgkoY3VycmVudF90ZW1wbGF0ZV9wYXJtcyk6IFJlbW92ZS4KCShwcm9jZXNzaW5nX3RlbXBsYXRlX2RlY2wpOiBMaWtld2lzZS4KCShwcm9jZXNzaW5nX3NwZWNpYWxpemF0aW9uKTogTGlrZXdpc2UuCgkocHJvY2Vzc2luZ19leHBsaWNpdF9pbnN0YW50aWF0aW9uKTogTGlrZXdpc2UuCgkoaW5pdF9wdCk6IE5ldyBmdW5jdGlvbi4KCSogcmVwby5jOiBJbmNsdWRlIGdnYy5oLgoJKGluaXRfcmVwbyk6IEFkZCBHQyByb290cy4KCSogc2VhcmNoLmM6IERvbid0IGluY2x1ZGUgdmFycmF5LmguCgkoX3ZwdHJfbmFtZSk6IFJlbW92ZS4KCShsb29rdXBfZmllbGRfMSk6IFVzZSB2dHByX2lkZW50aWZpZXIgaW5zdGVhZC4KCShleHBhbmRfaW5kaXJlY3RfdnRibHNfaW5pdCk6IFJlbW92ZSByZWR1bmRhbnQgZGVjbGFyYXRpb24gb2YKCWluX2NoYXJnZV9pZGVudGlmaWVyLgoJKGluaXRfc2VhcmNoX3Byb2Nlc3NpbmcpOiBVc2UgdnB0cl9pZGVudGlmaWVyLgoJCjE5OTktMDktMDUgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgkgICAgQmVybmQgU2NobWlkdCA8YmVybmRzQGN5Z251cy5jby51az4KCSAgICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogTWFrZWZpbGUuaW4gKHBhcnNlLm8pOiBEZXBlbmQgb24gZ2djLmguCgkoZGVjbDIubyk6IERlcGVuZCBvbiBnZ2MuaC4KCShpbml0Lm8pOiBEZXBlbmQgb24gZ2djLmguCgkqIGNwLXRyZWUuaCAoaW5pdF9kZWNsMik6IERlY2xhcmUuCgkoY3BfcGFyc2VfaW5pdCk6IExpa2V3aXNlLgoJKiBkZWNsLmMgKGdnY19wKTogRGVmaW5lIHRvIHplcm8uCgkobWFya19zYXZlZF9zY29wZSk6IE5ldyBmdW5jdGlvbi4KCShpbml0X2RlY2xfcHJvY2Vzc2luZyk6IENhbGwgY3BfcGFyc2VfaW5pdCwgYW5kIGNwX2RlY2wyLgoJUmVnaXN0ZXIgR0Mgcm9vdHMuCgkoZXhwYW5kX3N0YXRpY19pbml0KTogQWRkIEdDIHJvb3RzLgoJKiBkZWNsMi5jOiBJbmNsdWRlIGdnYy5oLgoJKGluaXRfZGVjbDIpOiBOZXcgZnVuY3Rpb24uCgkqIGluaXQuYzogSW5jbHVkZSBnZ2MuaC4KCShpbml0X2luaXRfcHJvY2Vzc2luZyk6IEFkZCBHQyByb290cy4KCSogcGFyc2UueTogSW5jbHVkZSBnZ2MuaC4KCShjcF9wYXJzZV9pbml0KTogTmV3IGZ1bmN0aW9uLgoJCjE5OTktMDktMDQgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBkZWNsLmMgKGluaXRfZGVjbF9wcm9jZXNzaW5nKTogU2V0IG1hcmtfbGFuZ19zdGF0dXMuCgkobGFuZ19tYXJrX2ZhbHNlX2xhYmVsX3N0YWNrKTogQWRqdXN0IHByb3RvdHlwZS4KCSogZGVjbDIuYyAoZ3Jva19mdW5jdGlvbl9pbml0KTogUmVtb3ZlIGV4dHJhbmVvdXMgZGVjbGFyYXRpb24gb2YKCWFib3J0X2ZuZGVjbC4KCgkqIE1ha2UtbGFuZy5pbiAoY2MxcGx1cyk6IFJlbW92ZSBkZXBlbmRlbmN5IG9uIEdHQy4KCSogTWFrZWZpbGUuaW4gKE9CSlMpOiBEb24ndCBtZW50aW9uIGdnYy1zaW1wbGUuby4KCShPQkpERVBTKTogRG9uJ3QgbWVudGlvbiBnZ2Mtc2ltcGxlLm8uCgoJKiBNYWtlLWxhbmcuaW4gKGNjMXBsdXMpOiBEZXBlbmQgb24gJChHR0MpLgoJKiBNYWtlZmlsZS5pbiAoT0JKUyk6IEFkZCBnZ2Mtc2ltcGxlLm8uCgkoT0JKREVQUyk6IExpa2V3aXNlLgoJKiBjcC10cmVlLmggKGxhbmd1YWdlX2Z1bmN0aW9uKTogUmVuYW1lIG1lbWJlcnMgdG8gYHhfJyB2ZXJzaW9uczsKCXdlIG5vdyBoYXZlIHhfbmFtZWRfbGFiZWxzLCB4X2N0b3JfbGFiZWwsIHhfZHRvcl9sYWJlbCwKCXhfYmFzZV9pbml0X2xpc3QsIHhfbWVtYmVyX2luaXRfbGlzdCwgeF9iYXNlX2luaXRfZXhwciwKCXhfY3VycmVudF9jbGFzc19wdHIsIHhfY3VycmVudF9jbGFzc19yZWYsIHhfbGFzdF90cmVlLAoJeF9sYXN0X2V4cHJfdHlwZSwgeF9sYXN0X2R0b3JfaW5zbiwgeF9sYXN0X3Bhcm1fY2xlYW51cF9pbnNuLCBhbmQKCXhfcmVzdWx0X3J0eC4gCgkoZHRvcl9sYWJlbCwgY3Rvcl9sYWJlbCwgY3VycmVudF9iYXNlX2luaXRfbGlzdCwKCWN1cnJlbnRfbWVtYmVyX2luaXRfbGlzdCwgYmFzZV9pbml0X2V4cHIsIGN1cnJlbnRfY2xhc3NfcHRyLAoJY3VycmVudF9jbGFzc19yZWYsIGxhc3RfdHJlZSwgbGFzdF9leHByX3R5cGUpOiBBZGp1c3QgYWNjb3JkaW5nbHkuCgkqIGRlY2wuYzogSW5jbHVkZSBnZ2MuaC4KCShsYXN0X2R0b3JfaW5zbik6IEFkanVzdCB0byB1c2UgeF8gbmFtZXMuCgkobGFzdF9wYXJtX2NsZWFudXBfaW5zbik6IExpa2V3aXNlLgoJKG9yaWdpbmFsX3Jlc3VsdF9ydHgpOiBMaWtld2lzZS4KCShuYW1lZF9sYWJlbHMpOiBMaWtld2lzZS4KCShtYXJrX2JpbmRpbmdfbGV2ZWwpOiBOZXcgZnVuY3Rpb24uCgkobWFya19jcF9mdW5jdGlvbl9jb250ZXh0KTogTGlrZXdpc2UuCgkobWFya19mYWxzZV9sYWJlbF9zdGFjayk6IExpa2V3aXNlLgoJKGxhbmdfbWFya190cmVlKTogTGlrZXdpc2UuCgkobGFuZ19jbGVhbnVwX3RyZWUpOiBMaWtld2lzZS4KCQoxOTk5LTA5LTAzICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogTWFrZWZpbGUuaW4gKENYWF9UUkVFX0gpOiBJbmNsdWRlIGZ1bmN0aW9uLmguCgkoZGVjbC5vKTogRG9uJ3QgZGVwZW5kIG9uIGZ1bmN0aW9uLmguCgkoZGVjbDIubyk6IExpa2V3aXNlLgoJKHR5cGVjay5vKTogTGlrZXdpc2UuCgkoaW5pdC5vKTogTGlrZXdpc2UuCgkobWV0aG9kLm8pOiBMaWtld2lzZS4KCSogY3AtdHJlZS5oOiBJbmNsdWRlIGZ1bmN0aW9uLmguCgkoY3BfZnVuY3Rpb24pOiBSZW5hbWUgdG8gbGFuZ3VhZ2VfZnVuY3Rpb24uICBSZW1vdmUgbmV4dC4KCShjcF9mdW5jdGlvbl9jaGFpbik6IE1ha2UgaXQgYSBtYWNybywgbm90IGEgdmFyaWFibGUuCgkocHVzaF9jcF9mdW5jdGlvbl9jb250ZXh0KTogRG9uJ3QgZGVjbGFyZS4KCShwb3BfY3BfZnVuY3Rpb25fY29udGV4dCk6IExpa2V3aXNlLgoJKiBkZWNsLmM6IERvbid0IGluY2x1ZGUgZnVuY3Rpb24uaC4KCShwdXNoX2NwX2Z1bmN0aW9uX2NvbnRleHQpOiBNYWtlIGl0IHN0YXRpYy4gIE1ha2UgaXQgc3VpdGFibGUgZm9yCglhIHNhdmVfbGFuZ19zdGF0dXMgY2FsbGJhY2suCgkocG9wX2NwX2Z1bmN0aW9uX2NvbnRleHQpOiBMaWtld2lzZS4KCShtYXliZV9wdXNoX3RvX3RvcF9sZXZlbCk6IENhbGwgcHVzaF9mdW5jdGlvbl9jb250ZXh0X3RvLCBub3QKCXB1c2hfY3BfZnVuY3Rpb25fY29udGV4dC4KCShwb3BfZnJvbV90b3BfbGV2ZWwpOiBDYWxsIHBvcF9mdW5jdGlvbl9jb250ZXh0X2Zyb20sIG5vdAoJcG9wX2NwX2Z1bmN0aW9uX2NvbnRleHQuCgkoaW5pdF9kZWNsX3Byb2Nlc3NpbmcpOiAgU2V0IHNhdmVfbGFuZ19zdGF0dXMgYW5kCglyZXN0b3JlX2xhbmdfc3RhdHVzLiAgQ2FsbCBwdXNoX2Z1bmN0aW9uX2NvbnRleHRfdG8sIG5vdAoJcHVzaF9jcF9mdW5jdGlvbl9jb250ZXh0LgoJKGNwX2Z1bmN0aW9uX2NoYWluKTogUmVtb3ZlLgoJKiBkZWNsMi5jOiBEb24ndCBpbmNsdWRlIGZ1bmN0aW9uLmguCgkqIGV4Y2VwdC5jOiBEb24ndCBpbmNsdWRlIGZ1bmN0aW9uLmguCgkoc3RhcnRfYW5vbl9mdW5jKTogQ2FsbCBwdXNoX2Z1bmN0aW9uX2NvbnRleHRfdG8sIG5vdAoJcHVzaF9jcF9mdW5jdGlvbl9jb250ZXh0LgoJKGVuZF9hbm9uX2Z1bmMpOiAgQ2FsbCBwb3BfZnVuY3Rpb25fY29udGV4dF9mcm9tLCBub3QKCXBvcF9jcF9mdW5jdGlvbl9jb250ZXh0LgoJKiBpbml0LmM6IERvbid0IGluY2x1ZGUgZnVuY3Rpb24uaC4KCSogbGV4LmMgKGJlZ2luX2RlZmluaXRpb25fb2ZfaW5jbGFzc19pbmxpbmUpOiBDYWxsCglwdXNoX2Z1bmN0aW9uX2NvbnRleHRfdG8sIG5vdCBwdXNoX2NwX2Z1bmN0aW9uX2NvbnRleHQuIAoJKHByb2Nlc3NfbmV4dF9pbmxpbmUpOiAgQ2FsbCBwb3BfZnVuY3Rpb25fY29udGV4dF9mcm9tLCBub3QKCXBvcF9jcF9mdW5jdGlvbl9jb250ZXh0LgoJKiBtZXRob2QuYzogRG9uJ3QgaW5jbHVkZSBmdW5jdGlvbi5oLgoJKHN5bnRoZXNpemVfbWV0aG9kKTogQ2FsbCBwdXNoX2Z1bmN0aW9uX2NvbnRleHRfdG8sIG5vdAoJcHVzaF9jcF9mdW5jdGlvbl9jb250ZXh0LiAgQ2FsbCBwb3BfZnVuY3Rpb25fY29udGV4dF9mcm9tLCBub3QKCXBvcF9jcF9mdW5jdGlvbl9jb250ZXh0LgoJKiB0eXBlY2suYzogRG9uJ3QgaW5jbHVkZSBmdW5jdGlvbi5oLgoJCgkqIGRlY2wuYyAoZXhwYW5kX3N0YXRpY19pbml0KTogVHdlYWsgaGFuZGxpbmcgb2Ygc3RhdGljCglpbml0aWFsaXphdGlvbnMgZm9yIG9iamVjdHMgd2l0aG91dCBjb25zdHJ1Y3RvcnMuCgoxOTk5LTA5LTAzICBOYXRoYW4gU2lkd2VsbCAgPG5hdGhhbkBhY20ub3JnPgoKCSogdHlwZWNrLmMgKGJ1aWxkX2luZGlyZWN0X3JlZik6IFJlamVjdCBkZXJlZmVyZW5jZSBvZiBwb2ludGVyIHRvCgl2b2lkLgoKMTk5OS0wOS0wMiAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGNwLXRyZWUuaCAoY3BfZnVuY3Rpb24pOiBNb3ZlIGhlcmUsIGZyb20gZGVjbC5jLgoJKGNwX2Z1bmN0aW9uX2NoYWluKTogRGVjbGFyZS4KCShkdG9yX2xhYmVsKTogTmV3IG1hY3JvLCBpbnN0ZWFkIG9mIHZhcmlhYmxlLgoJKGN0b3JfbGFiZWwpOiBMaWtld2lzZS4KCShjdXJyZW50X2Jhc2VfaW5pdF9saXN0KTogTGlrZXdpc2UuCgkoY3VycmVudF9tZW1iZXJfaW5pdF9saXN0KTogTGlrZXdpc2UuCgkoYmFzZV9pbml0X2V4cHIpOiBMaWtld2lzZS4KCShjdXJyZW50X2NsYXNzX3B0cik6IExpa2V3aXNlLgoJKGN1cnJlbnRfY2xhc3NfcmVmKTogTGlrZXdpc2UuCgkobGFzdF90cmVlKTogTGlrZXdpc2UuCgkobGFzdF9leHByX3R5cGUpOiBMaWtld2lzZS4KCShjdXJyZW50X2Z1bmN0aW9uX3JldHVybnNfdmFsdWUpOiBMaWtld2lzZS4KCShjdXJyZW50X2Z1bmN0aW9uX3JldHVybnNfbnVsbCk6IExpa2V3aXNlLgoJKGN1cnJlbnRfZnVuY3Rpb25fanVzdF9hc3NpZ25lZF90aGlzKTogTGlrZXdpc2UuCgkoY3VycmVudF9mdW5jdGlvbl9wYXJtc19zdG9yZWQpOiBMaWtld2lzZS4KCSh0ZW1wX25hbWVfY291bnRlcik6IExpa2V3aXNlLgoJKHN0YXRpY19sYWJlbG5vKTogTGlrZXdpc2UuCgkoZXhwYW5kaW5nX3ApOiBMaWtld2lzZS4KCShzdG10c19hcmVfZnVsbF9leHByc19wKTogTGlrZXdpc2UuCgkoaW5fZnVuY3Rpb25fdHJ5X2hhbmRsZXIpOiBMaWtld2lzZS4KCShsYW5nX3R5cGUpOiBSZW1vdmUgbmVzdGVkIHR5cGVfZmxhZ3MuICBBbGwgdXNlcyBjaGFuZ2VkLgoJKiBjYWxsLmMgKGN0b3JfbGFiZWwpOiBSZW1vdmUuCgkoZHRvcl9sYWJlbCk6IExpa2V3aXNlLgoJKiBjbGFzcy5jIChjdXJyZW50X2NsYXNzX3B0cik6IFJlbW92ZS4KCShjdXJyZW50X2NsYXNzX3JlZik6IExpa2V3aXNlLgoJKiBkZWNsLmMgKHN0YXRpY19sYWJlbG5vKTogUmVtb3ZlLgoJKGR0b3JfbGFiZWwpOiBMaWtld2lzZS4KCShsYXN0X2R0b3JfaW5zbik6IE5ldyBtYWNybywgaW5zdGVhZCBvZiB2YXJpYWJsZS4KCShsYXN0X3Bhcm1fY2xlYW51cF9pbnNuKTogTGlrZXdpc2UuCgkob3JpZ2luYWxfcmVzdWx0X3J0eCk6IExpa2V3aXNlLgoJKGluX2Z1bmN0aW9uX3RyeV9oYW5kbGVyKTogUmVtb3ZlLgoJKG5hbWVkX2xhYmVsX3VzZXMpOiBOZXcgbWFjcm8sIGluc3RlYWQgb2YgdmFyaWFibGUuCgkobmFtZWRfbGFiZWxzKTogTGlrZXdpc2UuCgkoY3VycmVudF9mdW5jdGlvbl9yZXR1cm5zX3ZhbHVlKTogUmVtb3ZlLgoJKGN1cnJlbnRfZnVuY3Rpb25fcmV0dXJuc19udWxsKTogTGlrZXdpc2UuCgkoY3VycmVudF9mdW5jdGlvbl9hc3NpZ25zX3RoaXMpOiBOZXcgbWFjcm8sIGluc3RlYWQgb2YgdmFyaWFibGUuCgkoY3VycmVudF9mdW5jdGlvbl9qdXN0X2Fzc2lnbmVkX3RoaXMpOiBMaWtld2lzZS4KCShjdXJyZW50X2JpbmRpbmdfbGV2ZWwpOiBMaWtld2lzZS4KCShpbml0X2RlY2xfcHJvY2Vzc2luZyk6IENhbGwgcHVzaF9jcF9mdW5jdGlvbl9jb250ZXh0LgoJKGNwX2Z1bmN0aW9uKTogTW92ZSB0byBjcC10cmVlLmgKCShjcF9mdW5jdGlvbl9jaGFpbik6IE1ha2UgaXQgZ2xvYmFsLgoJKHRlbXBfbmFtZV9jb3VudGVyKTogUmVtb3ZlLgoJKHB1c2hfY3BfZnVuY3Rpb25fY29udGV4dCk6IFNpbXBsaWZ5LgoJKHBvcF9jcF9mdW5jdGlvbl9jb250ZXh0KTogTGlrZXdpc2UuCgkqIGRlY2wyLmMgKHRlbXBfbmFtZV9jb3VudGVyKTogUmVtb3ZlLgoJKiBpbml0X2MgKGN1cnJlbnRfYmFzZV9pbml0X2xpc3QpOiBMaWtld2lzZS4KCShjdXJyZW50X21lbWJlcl9pbml0X2xpc3QpOiBMaWtld2lzZS4KCShiYXNlX2luaXRfZXhwcik6IExpa2V3aXNlLgoJKiBtZXRob2QuYyAoc3RhdGljX2xhYmVsbm8pOiBMaWtld2lzZS4KCSogcHQuYyAobGFzdF90cmVlKTogTGlrZXdpc2UuCgkqIHNlbWFudGljcy5jIChleHBhbmRpbmdfcCk6IExpa2V3aXNlLgoJKHN0bXRzX2FyZV9mdWxsX2V4cHJzX3ApOiBMaWtld2lzZS4KCShsYXN0X2V4cHJfdHlwZSk6IExpa2V3aXNlLgoJKiB0eXBlY2suYyAoZHRvcl9sYWJlbCk6IExpa2V3aXNlLgoJKGN0b3JfbGFiZWwpOiBMaWtld2lzZS4KCQoxOTk5LTA5LTAxICBBbGV4IFNhbXVlbCAgPHNhbXVlbEBjb2Rlc291cmNlcnkuY29tPgoKCSogZGVjbDIuYyAoYXJnX2Fzc29jX3RlbXBsYXRlX2FyZyk6IE5ldyBwcm90b3R5cGUuICBOZXcgZnVuY3Rpb24uCgkoYXJnX2Fzc29jX2NsYXNzKTogVXNlIGFyZ19hc3NvY190ZW1wbGF0ZV9hcmcgZm9yIHRlbXBsYXRlCglhcmd1bWVudHMuIAoJKGFyZ19hc3NvYyk6IExpa2V3aXNlLgoJKiBwdC5jIChtYW5nbGVfY2xhc3NfbmFtZV9mb3JfdGVtcGxhdGUpOiBBbGxvdyBtZW1iZXIgdGVtcGxhdGUKCXRlbXBsYXRlIGFyZ3VtZW50cy4KCjE5OTktMDktMDIgIE5hdGhhbiBTaWR3ZWxsICA8bmF0aGFuQGFjbS5vcmc+CgoJKiBjYWxsLmMgKGJ1aWxkX2NvbmRpdGlvbmFsX2V4cHIpOiBXYXJuIG9uIGVudW0gbWlzbWF0Y2hlcy4KCShjb252ZXJ0X2FyZ190b19lbGxpcHNpcyk6IE1vdmUgbm9uLXBvZCBjaGVjayB0byBhZnRlcgoJY29udmVyc2lvbi4KCjE5OTktMDktMDEgIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIGd4eC5ncGVyZiAoaGFzaCwgaXNfcmVzZXJ2ZWRfd29yZCk6IEFkZCBwcm90b3R5cGVzLgoKCSogaW5pdC5jIChidWlsZF92ZWNfaW5pdCk6IEluaXRpYWxpemUgdmFyaWFibGUgYHRyeV9ibG9jaycuCgoJKiBsZXguYyAoaW5pdF9wYXJzZSk6IENhbGwgbWVtY3B5LCBub3QgYmNvcHksIHRvIGF2b2lkIGNhc3RzLgoJTGlrZXdpc2UgZm9yIGJ6ZXJvL21lbXNldC4KCSh0b2tlbl9nZXRjaCwgdG9rZW5fcHV0X2JhY2spOiBBZGQgc3RhdGljIHByb3RvdHlwZXMuICBSZW1vdmUKCWBpbmxpbmUnIGZyb20gdGhlIGRlZmluaXRpb25zLgoJKHJldHJvZml0X2xhbmdfZGVjbCk6IENhbGwgbWVtc2V0LCBub3QgYnplcm8sIHRvIGF2b2lkIGNhc3RzLgoKMTk5OS0wOS0wMSAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGNwLXRyZWUuaCAobGFuZ190eXBlKTogTW92ZSBhbGlnbiBpbnRvIHR5cGVfZmxhZ3MuCgkoQ0xBU1NUWVBFX0FMSUdOKTogQWRqdXN0IGFjY29yZGluZ2x5LgoJKiBjYWxsLmMgKGRpcmVjdF9yZWZlcmVuY2VfYmluZGluZyk6IFJlbW92ZSBtaXNsZWFkaW5nIGNvbW1lbnQuCgoxOTk5LTA4LTMwICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBwYXJzZS55IChsYW5ndWFnZV9zdHJpbmcpOiBDb25zdGlmeS4KCjE5OTktMDgtMzAgIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIHJlcG8uYyAoZ2V0cHdkKTogRG9uJ3QgcHJvdG90eXBlLgoJKiB4cmVmLmMgKGdldHB3ZCk6IExpa2V3aXNlCgoxOTk5LTA4LTMwICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBNYWtlZmlsZS5pbiAoTElCUywgTElCREVQUyk6IExpbmsgd2l0aCAmIGRlcGVuZCBvbiBsaWJpYmVydHkuYS4KCVJlbW92ZSBoYWNrcyBmb3Igc3R1ZmYgd2hpY2ggbm93IGNvbWVzIGZyb20gbGliaWJlcnR5LgoKMTk5OS0wOC0zMCAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogY3AtdHJlZS5oIChJU19BR0dSX1RZUEVfMik6IEZpeCB0eXBvLgoKMTk5OS0wOC0zMCAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGNwLXRyZWUuaCAoYmVnaW5faW5pdF9zdG10cyk6IERlY2xhcmUuCgkoZmluaXNoX2luaXRfc3RtdHMpOiBMaWtld2lzZS4KCSogY3Z0LmMgKGJ1aWxkX3VwX3JlZmVyZW5jZSk6IFdyYXAgdGhlIGRlY2xhcmF0aW9uIG9mIGEgdGVtcG9yYXJ5CglpbiBhIHN0YXRlbWVudC1leHByZXNzaW9uIHNvIHRoYXQgd2Ugd2lsbCBzZWUgaXQgd2hlbiBleHBhbmRpbmcKCXRyZWUgc3RydWN0dXJlIGxhdGVyLgoJKiBpbml0LmMgKGJlZ2luX2luaXRfc3RtdHMpOiBEb24ndCBtYWtlIGl0IHN0YXRpYy4KCShmaW5pc2hfaW5pdF9zdG10cyk6IExpa2V3aXNlLgoKCSogY3AtdHJlZS5oIChzdGFydF9oYW5kbGVyX3Bhcm1zKTogTmV3IGZ1bmN0aW9uLgoJKGV4cGFuZF9zdGFydF9jYXRjaF9ibG9jayk6IFRha2Ugb25seSBvbmUgcGFyYW1ldGVyLgoJKHN0YXJ0X2hhbmRsZXJfcGFybXMpOiBOZXcgZnVuY3Rpb24uCgkqIGRlY2wuYyAoc3RhcnRfaGFuZGxlcl9wYXJtcyk6IERlZmluZSBpdC4KCSogZXhjZXB0LmMgKHByb2Nlc3Nfc3RhcnRfY2F0Y2hfYmxvY2spOiBUYWtlIG9ubHkgb25lIHBhcmFtZXRlci4KCURvbid0IGNhbGwgZ3Jva2RlY2xhcmF0b3IgaGVyZS4KCShleHBhbmRfc3RhcnRfY2F0Y2hfYmxvY2spOiBEb24ndCBjYWxsIGdyb2tkZWNsYXJhdG9yIGhlcmUsCgllaXRoZXIuCgkqIHBhcnNlLnkgKGhhbmRsZXJfYXJncyk6IEFkanVzdCBjYWxsIHRvCglleHBhbmRfc3RhcnRfY2F0Y2hfYmxvY2suICBVc2Ugc3RhcnRfaGFuZGxlcl9wYXJtcy4KCSogcHQuYyAocHVzaF90ZW1wbGF0ZV9kZWNsX3JlYWwpOiBNYWtlIHBlcm1hbmVudCBsaXN0cyBoYXZlCglwZXJtYW5lbnQgZWxlbWVudHMuCgkodHN1YnN0X2V4cHIpOiBBZGp1c3QgY2FsbHMgdG8gZXhwYW5kX3N0YXJ0X2NhdGNoX2Jsb2NrCglhcHByb3ByaWF0ZWx5LgoJKiBzZW1hbnRpY3MuYyAoZXhwYW5kX3N0bXQpOiBMaWtld2lzZS4KCQoxOTk5LTA4LTI5ICBBbGV4IFNhbXVlbCAgPHNhbXVlbEBjb2Rlc291cmNlcnkuY29tPgoKCSogcHQuYyAocHVzaF90ZW1wbGF0ZV9kZWNsX3JlYWwpOiBVc2UgdGVtcGxhdGUgZGVjbGFyYXRpb24gZnJvbQoJY2xhc3MgdHlwZSBpZiBpdCBleGlzdHMuCgoxOTk5LTA4LTI5ICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogY3AtdHJlZS5oIChUWVBFX05FRURTX0NPTlNUUlVDVElORyk6IFJlbW92ZSAjaWYgMCdkIGRlZmluaXRpb24uCgkobWF5YmVfaW5qZWN0X2Zvcl9zY29wZV92YXIpOiBEZWNsYXJlIGl0LgoJKGluaXRpYWxpemVfbG9jYWxfdmFyKTogTGlrZXdpc2UuCgkqIGRlY2wuYyAobWF5YmVfaW5qZWN0X2Zvcl9zY29wZV92YXIpOiBNYWtlIGl0IGdsb2JhbC4KCShpbml0aWFsaXplX2xvY2FsX3Zhcik6IExpa2V3aXNlLiAgTW92ZSBjbGVhbnVwIGhhbmRsaW5nIGhlcmUsCglmcm9tIGNwX2ZpbmlzaF9kZWNsLgoJKG1ha2VfcnRsX2Zvcl9ub25sb2NhbF9kZWNsKTogVXNlCglwdXNoX29ic3RhY2tzX25vY2hhbmdlL3BvcF9vYnN0YWNrcywgcmF0aGVyIHRoYW4KCWVuZF90ZW1wb3JhcnlfYWxsb2NhdGlvbi9yZXN1bWVfdGVtcG9yYXJ5X2FsbG9jYXRpb24uCgkoY3BfZmluaXNoX2RlY2wpOiBUcnkgdG8gY29tcGxldGUgdGhlIHR5cGUgb2YgYSB2YXJpYWJsZSB3aGVuIGl0CglpcyBkZWNsYXJlZC4gIE1vdmUgY2xlYW51cC1oYW5kbGluZyB0byBpbml0aWFsaXplX2xvY2FsX3Zhci4KCShleHBhbmRfc3RhdGljX2luaXQpOiBVc2UgdHJlZS1idWlsZGluZyBjb2RlLCByYXRoZXIgdGhhbgoJUlRMLWJ1aWxkaW5nIGNvZGUuCgkqIGRlY2wyLmMgKGdldF90ZW1wX25hbWUpOiBBc3NlcnQgbm9uLWluaXRpYWxpemVkbmVzcyBvZgoJdGVtcG9yYXJpZXMuCgkqIGluaXQuYyAoY3JlYXRlX3RlbXBvcmFyeV92YXIpOiBNb3ZlIFJUTC1hc3NpZ25pbmcgY29kZSB0byAuLi4KCShnZXRfdGVtcF9yZWd2YXIpOiBIZXJlLgoJKiBwdC5jICh0c2J1c3RfZXhwcik6IEZpeCBpbmRlbnRhdGlvbi4gIENhbGwgY3BfZmluaXNoX2RlY2wgaGVyZS4KCSogc2VtYW50aWNzLmMgKGV4cGFuZF9zdG10KTogRG9uJ3QgY2FsbCBjcF9maW5pc2hfZGVjbCBoZXJlLiAgSnVzdAoJY2FsbCBpbml0aWFsaXplX2xvY2FsX3ZhciB0byBnZW5lcmF0ZSBpbml0aWFsaXphdGlvbiBjb2RlLgoJCjE5OTktMDgtMjkgIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIGNwLXRyZWUuaCAoZm5kZWNsX2FzX3N0cmluZywgdHlwZV9hc19zdHJpbmcsCgl0eXBlX2FzX3N0cmluZ19yZWFsLCBhcmdzX2FzX3N0cmluZywgZGVjbF9hc19zdHJpbmcsCglleHByX2FzX3N0cmluZywgY29kZV9hc19zdHJpbmcsIGxhbmd1YWdlX2FzX3N0cmluZywKCXBhcm1fYXNfc3RyaW5nLCBvcF9hc19zdHJpbmcsIGFzc29wX2FzX3N0cmluZywgY3ZfYXNfc3RyaW5nLAoJbGFuZ19kZWNsX25hbWUsIGNwX2ZpbGVfb2YsIGxhbmdfcHJpbnRhYmxlX25hbWUpOiBDb25zdGlmeSBhIGNoYXIqLgoKCSogZXJyZm4uYyAoY3BfcHJpbnRlcik6IExpa2V3aXNlLgoKCSogZXJyb3IuYyAoY3BfcHJpbnRlciwgZm5kZWNsX2FzX3N0cmluZywgdHlwZV9hc19zdHJpbmdfcmVhbCwKCXR5cGVfYXNfc3RyaW5nLCBleHByX2FzX3N0cmluZywgZGVjbF9hc19zdHJpbmcsIGxhbmdfZGVjbF9uYW1lLAoJY3BfZmlsZV9vZiwgY29kZV9hc19zdHJpbmcsIGxhbmd1YWdlX2FzX3N0cmluZywgcGFybV9hc19zdHJpbmcsCglvcF9hc19zdHJpbmcsIGFzc29wX2FzX3N0cmluZywgYXJnc19hc19zdHJpbmcsIGN2X2FzX3N0cmluZyk6CglMaWtld2lzZS4KCgkqIHRyZWUuYyAobGFuZ19wcmludGFibGVfbmFtZSk6IExpa2V3aXNlLgoKMTk5OS0wOC0yOCAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAY3lnbnVzLmNvbT4KCgkqIGRlY2wyLmMgKGFyZ19hc3NvY19jbGFzcyk6IEJhaWwgaWYgdGhlIGNsYXNzIGlzIGEgYnVpbHRpbiB0eXBlLgoKMTk5OS0wOC0yOCAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGNwLXRyZWUuaCAoc3RyaXBfYXJyYXlfdHlwZXMpOiBOZXcgZnVuY3Rpb24uCgkqIGRlY2wuYyAobWF5YmVfZGVkdWNlX3NpemVfZnJvbV9hcnJheV9pbml0KTogTmV3IGZ1bmN0aW9uLCBzcGxpdAoJb3V0IGZyb20gY3BfZmluaXNoX2RlY2wuCgkobGF5b3V0X3Zhcl9kZWNsKTogTGlrZXdpc2UuCgkobWF5YmVfY29tbW9uaXplX3Zhcik6IExpa2V3aXNlLgoJKG1heWJlX2luamVjdF9mb3Jfc2NvcGVfdmFyKTogTGlrZXdpc2UuCgkoaW5pdGlhbGl6ZV9sb2NhbF92YXIpOiBMaWtld2lzZS4KCShidWlsZF9jbGVhbnVwX29uX3NhZmVfb2JzdGFjayk6IExpa2V3aXNlLgoJKGNoZWNrX2luaXRpYWxpemVyKTogTGlrZXdpc2UuCgkobWFrZV9ydGxfZm9yX25vbmxvY2FsX2RlY2wpOiBMaWtld2lzZS4KCShjcF9maW5pc2hfZGVjbCk6IFVzZSB0aGVtLgoJKiB0eXBlY2suYyAoc3RyaXBfYXJyYXlfdHlwZXMpOiBOZXcgZnVuY3Rpb24uCgkKCSogY3AtdHJlZS5kZWYgKExBQkVMX1NUTVQpOiBOZXcgdHJlZSBub2RlLgoJKiBjcC10cmVlLmggKExBQkVMX1NUTVRfTEFCRUwpOiBOZXcgbWFjcm8uCgkoc2hhZG93X2xhYmVsKTogUmVtb3ZlLgoJKGRlY2xhcmVfbG9jYWxfbGFiZWwpOiBOZXcgZnVuY3Rpb24uCgkoZmluaXNoX2xhYmVsX2RlY2wpOiBMaWtld2lzZS4KCSogZGVjbC5jIChtYWtlX2xhYmVsX2RlY2wpOiBOZXcgZnVuY3Rpb24sIHNwbGl0IG91dCBmcm9tCglsb29rdXBfbGFiZWwuCgkoc2hhZG93ZWRfbGFiZWxzKTogUmVtb3ZlLgoJKGJpbmRpbmdfbGV2ZWwpOiBBZGQgc2hhZG93ZWRfbGFiZWxzLgoJKGNsZWFyX2JpbmRpbmdfbGV2ZWwpOiBSZW1vdmUuCgkocHVzaF9iaW5kaW5nX2xldmVsKTogSnVzdCBiemVybyB0aGUgbmV3IGJpbmRpbmcgbGV2ZWwuCgkocHVzaGxldmVsKTogRml4IGluZGVudGF0aW9uLgoJKHBvcF9sYWJlbCk6IE5ldyBmdW5jdGlvbi4KCShwb3BfbGFiZWxzKTogTGlrZXdpc2UsIHNwbGl0IG91dCBmcm9tIHBvcGxldmVsLgoJKHBvcGxldmVsKTogUG9wIGxvY2FsIGxhYmVscy4gIFVzZSBwb3BfbGFiZWxzLgoJKG1heWJlX3B1c2hfdG9fdG9wX2xldmVsKTogRG9uJ3QgY2xlYXIgc2hhZG93ZWRfbGFiZWxzLgoJKGxvb2t1cF9sYWJlbCk6IFVzZSBtYWtlX2xhYmVsX2RlY2wuCgkoc2hhZG93X2xhYmVsKTogUmVtb3ZlLgoJKGRlY2xhcmVfbG9jYWxfbGFiZWwpOiBOZXcgZnVuY3Rpb24uCgkoZGVmaW5lX2xhYmVsKTogU2ltcGxpZnkuCgkoc3RhcnRfZnVuY3Rpb24pOiBEb24ndCBjbGVhciBzaGFkb3dlZF9sYWJlbHMuCgkoY3BfZnVuY3Rpb24pOiBSZW1vdmUgc2hhZG93ZWRfbGFiZWxzLgoJKHB1c2hfY3BfZnVuY3Rpb25fY29udGV4dCk6IERvbid0IHNhdmUgc2hhZG93ZWRfbGFiZWxzLgoJKHBvcF9jcF9mdW5jdGlvbl9jb250ZXh0KTogRG9uJ3QgcmVzdG9yZSBpdC4KCSogZHVtcC5jIChkZXF1ZXVlX2FuZF9kdW1wKTogSGFuZGxlIExBQkVMX1NUTVQuCgkqIHBhcnNlLnkgKGxhYmVsX2RlY2wpOiBVc2UgZmluaXNoX2xhYmVsX2RlY2wuCgkqIHB0LmMgKHRzdWJzdF9leHByKTogSGFuZGxlIExBQkVMX1NUTVRzLCBhbmQgbG9jYWwgbGFiZWwKCWRlY2xhcmF0aW9ucy4KCSogc2VtYW50aWNzLmMgKGZpbmlzaF9sYWJlbF9zdG10KTogQWRkIGEgTEFCRUxfU1RNVCB3aGVuCglidWlsZGluZ19zdG10X3RyZWUuCgkoZmluaXNoX2xhYmVsX2RlY2wpOiBOZXcgZnVuY3Rpb24uCgkoZXhwYW5kX3N0bXQpOiBIYW5kbGUgTEFCRUxfU1RNVHMgYW5kIGxvY2FsIGxhYmVsIGRlY2xhcmF0aW9ucy4KCQoxOTk5LTA4LTI2ICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogZGVjbC5jIChsb29rdXBfbGFiZWwpOiBCdWlsZCBsYWJlbHMgb24gdGhlIHBlcm1hbmVudCBvYnN0YWNrCgl3aGVuIGJ1aWxkaW5nIHN0YXRlbWVudCB0cmVlcy4gIERvbid0IGJ1aWxkIFJUTCBmb3IgbGFiZWxzIHdoZW4KCWJ1aWxkaW5nIHN0YXRlbWVudCB0cmVlcy4KCSogc2VtYW50aWNzLmMgKGZpbmlzaF9nb3RvX3N0bXQpOiBVc2UgTEFCRUxfREVDTHMgZXZlbiB3aGVuCglidWlsZGluZyBzdGF0ZW1lbnQgdHJlZXMuCgkoZmluaXNoX2xhYmVsX3N0bXQpOiBMaWtld2lzZS4KCShleHBhbmRfc3RtdCk6IEFkanVzdCBhY2NvcmRpbmdseS4KCSogcHQuYyAodHN1YnN0X2V4cHIpOyBMaWtld2lzZS4KCShkb19kZWNsX2luc3RhbnRpYXRpb24pOiBSb2J1c3RpZnkuCgkKCSogY3AtdHJlZS5oIChBR0dSX0lOSVRfVklBX0NUT1JfUCk6IE5ldyBtYWNyby4KCSogdHJlZS5jIChidWlsZF9jcGx1c19uZXcpOiBTZXQgaXQuCgkqIGV4cHIuYyAoY3BsdXNfZXhwYW5kX2V4cHIpOiBVc2UgaXQuCgkqIGR1bXAuYyAoZGVxdWVfYW5kX2R1bXApOiBIYW5kbGUgQUdHUl9JTklUX0VYUFIuCgkKCSogZGVjbC5jIChzdG9yZV9wYXJtX2RlY2xzKTogUmVzZXQgaW1tZWRpYXRlX3NpemVfZXhwYW5kLgoJKGZpbmlzaF9mdW5jdGlvbik6IExpa2V3aXNlLgoJCgkqIHRyZWUuYyAoY3BsdXNfdW5zYXZlX2V4cHJfbm93KTogRG9uJ3QgcmV0dXJuIGEgdmFsdWUuCgoJKiBzZW1hbnRpY3MuYyAoZG9fcG9wbGV2ZWwpOiBBbHdheXMgaW5pdGlhbGl6ZSB0aGUgcmV0dXJuIHZhbHVlLgoKMTk5OS0wOC0yNiAgR2F2aW4gUm9taWctS29jaCAgPGdhdmluQGN5Z251cy5jb20+CgoJKiBjcC10cmVlLmggKGNwbHVzX3Vuc2F2ZV9leHByX25vdykgOiBDb3JyZWN0IHJldHVybiB0eXBlLgoJKiB0cmVlLmggKGNwbHVzX3Vuc2F2ZV9leHByX25vdykgOiBTYW1lLgoKMTk5OS0wOC0yNSAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGRlY2wuYyAoZ3Jva2RlY2xhcmF0b3IpOiBBbWVuZCBjb21tZW50LgoJKiBleGNlcHQuYyAoZXhwYW5kX3N0YXJ0X2NhdGNoX2Jsb2NrKTogQ2FsbCBwdXNoX3RlbXBsYXRlX2RlY2wgZm9yCgljYXRjaC1ibG9jayBwYXJhbWV0ZXJzLgoJKiBtZXRob2QuYyAoc3ludGhlc2l6ZV9tZXRob2QpOiBCdWlsZCBhbiBlbXB0eSBjb21wb3VuZCBzdGF0ZW1lbnQKCWZvciB0aGUgYm9keSBvZiBhIGNvbnN0cnVjdG9yLgoKMTk5OS0wOC0yNSAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogdHJlZS5jIChjcF9idWlsZF9xdWFsaWZpZWRfdHlwZV9yZWFsKTogSWYgd2UncmUgYXNraW5nIGZvciB0aGUKCXNhbWUgcXVhbHMgd2UgYWxyZWFkeSBoYXZlLCBqdXN0IHJldHVybi4KCjE5OTktMDgtMjUgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjcC10cmVlLmRlZiAoU1VCT0JKRUNUKTogTmV3IHRyZWUgbm9kZS4KCSogY3AtdHJlZS5oIChDTEVBTlVQX1ApOiBOZXcgbWFjcm8uCgkoU1VCT0JKRUNUX0NMRUFOVVApOiBMaWtld2lzZS4KCShrZWVwX25leHRfbGV2ZWwpOiBBZGQgcGFyYW1ldGVyLgoJKGdldF90ZW1wX3JlZ3Zhcik6IERvbid0IGRlY2xhcmUuCgkoZW1pdF9iYXNlX2luaXQpOiBSZW1vdmUgcGFyYW1ldGVyLgoJKGV4cGFuZF9hZ2dyX2luaXQpOiBSZW5hbWUgdG8gYnVpbGRfYWdncl9pbml0LgoJKGV4cGFuZF92ZWNfaW5pdCk6IFJlbmFtZSB0byBidWlsZF92ZWNfaW5pdC4KCShkb19wdXNobGV2ZWwpOiBSZW1vdmUuCgkoZG9fcG9wbGV2ZWwpOiBMaWtld2lzZS4KCShmaW5pc2hfY2xlYW51cCk6IE5ldyBmdW5jdGlvbi4KCShmaW5pc2hfc3Vib2JqZWN0KTogTGlrZXdpc2UuCgkoc3RtdHNfYXJlX2Z1bGxfZXhwcnNfcCk6IE5ldyB2YXJpYWJsZS4KCSogZGVjbC5jIChrZWVwX25leHRfbGV2ZWwpOiBBZGQgcGFyYW1ldGVyLgoJKGNwX2ZpbmlzaF9kZWNsKTogVXNlIGJ1aWxkX2FnZ3JfaW5pdCwgbm90CglleHBhbmRfYWdncl9pbml0LiAgVXNlIGZpbmlzaF9leHByX3N0bXQgdG8gZXhwYW5kIHRoZSBjb2RlLgoJKGV4cGFuZF9zdGF0aWNfaW5pdCk6IFVzZSB0cmVlLWdlbmVyYXRpbmcsIG5vdCBSVEwtZ2VuZXJhdGluZywKCWZ1bmN0aW9ucyB0byBoYW5kbGUgdGhlIGluaXRpYWxpemF0aW9uLgoJKHN0YXJ0X2Z1bmN0aW9uKTogUmVtb3ZlIGRlYWQgY29kZS4gIEFsd2F5cyBoYXZlIGEgbW9tZW50YXJ5CglvYnN0YWNrIGluc2lkZSB0aGUgZnVuY3Rpb24sIGV2ZW4gYmVmb3JlIGhpdHRpbmcgdGhlIGZpcnN0IGN1cmx5CglicmFjZS4KCShjcGx1c19leHBhbmRfZXhwcl9zdG10KTogTW92ZSBjYWxscyB0bwoJZXhwYW5kX3tzdGFydCxlbmR9X3RhcmdldF90ZW1wcyBpbnRvIHNlbWFudGljcy5jLgoJKGNwX2Z1bmN0aW9uKTogQWRkIHN0bXRzX2FyZV9mdWxsX2V4cHJzX3AuCgkocHVzaF9jcF9mdW5jdGlvbl9jb250ZXh0KTogU2F2ZSBpdC4KCShwb3BfY3BfZnVuY3Rpb25fY29udGV4dCk6IFJlc3RvcmUgaXQuCgkqIGRlY2wyLmMgKGdldF90ZW1wX3JlZ3Zhcik6IE1vdmUgdG8gaW5pdC5jLgoJKGRvX3N0YXRpY19pbml0aWFsaXphdGlvbik6IFVzZSBidWlsZF97YWdncix2ZWN9X2luaXQuCgkoZG9fc3RhdGljX2Rlc3RydWN0aW9uKTogRml4IHR5cG8gaW4gY29tbWVudC4KCSogZHVtcC5jIChkZXF1ZXVlX2FuZF9kdW1wKTogSGFuZGxlIElOSVRfRVhQUi4KCSogZXhjZXB0LmMgKGV4cGFuZF90aHJvdyk6IFVzZSBjcmVhdGVfdGVtcG9yYXJ5X3Zhci4KCSogZXhwci5jIChjcGx1c19leHBhbmRfZXhwcik6IFVzZSBidWlsZF97YWdncix2ZWN9X2luaXQuCgkqIGluaXQuYyAoZXhwYW5kX3ZlY19pbml0X3RyeV9ibG9jayk6IFJlbW92ZS4KCShleHBhbmRfdmVjX2luaXRfY2F0Y2hfY2xhdXNlKTogTGlrZXdpc2UuCgkoZ2V0X3RlbXBfcmVndmFyKTogTmV3IGZ1bmN0aW9uLgoJKGJlZ2luX2luaXRfc3RtdHMpOiBMaWtld2lzZS4KCShmaW5pc2hfaW5pdF9zdG10cyk6IExpa2V3aXNlLgoJKHBlcmZvcm1fbWVtYmVyX2luaXQpOiBVc2UgYnVpbGRfe2FnZ3IsdmVjfV9pbml0LiAgQnVpbGQgdXAgdHJlZQoJc3RydWN0dXJlIGhlcmUuCgkoZW1pdF9iYXNlX2luaXQpOiBMaWtld2lzZS4gIFJlbW92ZSB1bnVzZWQgcGFyYW1ldGVyLgoJKGV4cGFuZF92aXJ0dWFsX2luaXQpOiBMaWtld2lzZS4KCShleHBhbmRfY2xlYW51cF9mb3JfYmFzZSk6IFVzZSBmaW5pc2hfc3Vib2JqZWN0LgoJKGV4cGFuZF9hZ2dyX3ZiYXNlX2luaXRfMSk6IFNpbXBsaWZ5LgoJKGNvbnN0cnVjdF92aXJ0dWFsX2Jhc2VzKTogVXNlIHRyZWUtZ2VuZXJhdGluZyBmdW5jdGlvbnMgdG8gYnVpbGQKCXVwIGluaXRpYWxpemF0aW9uLgoJKGV4cGFuZF9hZ2dyX2luaXQpOiBMaWtld2lzZS4gIFJlbmFtZSB0byBidWlsZF9hZ2dyX2luaXQuCgkoZXhwYW5kX2RlZmF1bHRfaW5pdCk6IExpa2V3aXNlLgoJKGV4cGFuZF9hZ2dyX2luaXRfMSk6IExpa2V3aXNlLgoJKGV4cGFuZF92ZWNfaW5pdCk6IFJlbmFtZSB0byBidWlsZF92ZWNfaW5pdC4KCSogbWV0aG9kLmMgKGRvX2J1aWxkX2NvcHlfY29uc3RydWN0b3IpOiBVc2UgdHJlZS1nZW5lcmF0aW5nCglmdW5jdGlvbnMuICBEb24ndCBjYWxsIGNsZWFyX2xhc3RfZXhwci4KCShkb19idWlsZF9hc3NpZ25fcmVmKTogTGlrZXdpc2UuCgkoc3ludGhlc2l6ZV9tZXRob2QpOiBDYWxsIGNsZWFyX2xhc3RfZXhwciBoZXJlLgoJKiBwYXJzZS55IChiYXNlX2luaXQpOiBEb24ndCBjYWxsIGNsZWFyX2xhc3RfZXhwciBoZXJlLgoJKG5vZGVjbHMpOiBMaWtld2lzZS4KCSogcHQuYyAodHN1YnN0X2V4cHIpOiBIYW5kbGUgYSBUUllfQkxPQ0sgd2l0aCBDTEVBTlVQX1Agc2V0LgoJKiBzZW1hbnRpY3MuYyAoZG9fcHVzaGxldmVsKTogTW92ZSB0byBoZXJlLgoJKGRvX3BvcGxldmVsKTogTGlrZXdpc2UuCgkoc3RtdHNfYXJlX2Z1bGxfZXhwcnNfcCk6IE5ldyB2YXJpYWJsZS4KCShmaW5pc2hfZXhwcl9zdG10KTogSGFuZGxlIGxvZ2ljIGZvciB0ZW1vcHJhcnkgY2xlYW51cCBoZXJlLgoJKGZpbmlzaF9mb3Jfc3RtdCk6IFVzZSBmaW5pc2hfZXhwcl9zdG10LgoJKGZpbmlzaF9jbGVhbnVwKTogTmV3IGZ1bmN0aW9uLgoJKGZpbmlzaF9mdW5jdGlvbl90cnlfYmxvY2spOiBGaXggaW5kZW50YXRpb24uCgkoZmluaXNoX3N1Ym9iamVjdCk6IE5ldyBmdW5jdGlvbi4KCShzZXR1cF92dGJsX3B0cik6IENhbGwga2VlcF9uZXh0X2xldmVsIGhlcmUuCgkoZmluaXNoX3N0bXRfZXhwcik6IEhhbmRsZSBhIGJsb2NrIHdpdGggbm8gc2NvcGUgaW5zaWRlIHRoZQoJc3RhdGVtZW50LWV4cHJlc3Npb24uCgkoZXhwYW5kX3N0bXQpOiBIYW5kbGUgYSBUUllfQkxPQ0sgd2l0aCBDTEVBTlVQX1Agc2V0LiAgSGFuZGxlCglTVUJPQkpFQ1QuCgkqIHRyZWUuYyAoc2VhcmNoX3RyZWUpOiBIYW5kbGUgSU5JVF9FWFBSLgoJKG1hcGNhcik6IExpa2V3aXNlLgoJKiB0eXBlY2suYyAoYnVpbGRfbW9kaWZ5X2V4cHIpOiBEb24ndCBidWlsZCBhbiBSVExfRVhQUi4KCSogdHlwZWNrMi5jIChzdG9yZV9pbml0X3ZhbHVlKTogQ2hhbmdlIGV4cGFuZF9hZ2dyX2luaXQgdG8KCWJ1aWxkX2FnZ3JfaW5pdCBpbiBjb21tZW50LgoJCjE5OTktMDgtMjUgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBkdW1wLmMgKGRlcXVldWVfYW5kX2R1bXApOiBEdW1wIFRBUkdFVF9FWFBScy4KCjE5OTktMDgtMjUgIE5hdGhhbiBTaWR3ZWxsICA8bmF0aGFuQGFjbS5vcmc+CgoJKiBkZWNsMi5jIChoYW5kbGVfY2xhc3NfaGVhZCk6IEJlIGdyYWNlZnVsIGFib3V0IGFkZGl0aW9uYWwKCXNjb3BlIHF1YWxpZmllcnMuIEFkanVzdCBjb21tZW50cyB0byByZWZsZWN0IHJlYWxpdHkuCgoxOTk5LTA4LTI0ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBjYWxsLmMgKGJ1aWxkX2NvbmRpdGlvbmFsX2V4cHIpOiBGaXggdHlwby4KCSogdHlwZWNrLmMgKGJ1aWxkX21vZGlmeV9leHByLCBDT05EX0VYUFIpOiBNYWtlIHN1cmUgd2UndmUgZ290IGFuCglsdmFsdWUgYmVmb3JlIHRyeWluZyB0byBtZXNzIHdpdGggdGhlIHNpZGVzLgoKCSogZXJyb3IuYyAoZHVtcF9leHByLCBDT05WRVJUX0VYUFIpOiBIYW5kbGUgKHZvaWQpIHByb3Blcmx5LgoKTW9uIEF1ZyAyMyAyMjoxNzoyMCAxOTk5ICBNdW1pdCBLaGFuICA8a2hhbkB4cmF5bGl0aC53aXNjLmVkdT4KCgkqIGcrK3NwZWMuYyAobGFuZ19zcGVjaWZpY19kcml2ZXIpOiBBZGQgcm9vbSBmb3IgTlVMTCBpbiBhcmdsaXN0LgoKMTk5OS0wOC0yMyAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogZXhjZXB0aW9uLmNjIChfX2NwbHVzX3R5cGVfbWF0Y2hlcik6IENhbGwgX190aHJvd190eXBlX21hdGNoX3J0dGlfMi4KCVJldHVybiBhcmJpdHJhcnkgcG9pbnRlciBvciBOVUxMLgoJKGNoZWNrX2VoX3NwZWMpOiBDYWxsIF9fdGhyb3dfdHlwZV9tYXRjaF9ydHRpXzIuCgkqIHRpbmZvLmggKCo6OmRjYXN0KTogUmV0dXJuIGludC4gIEFkZCB2YWxwIHBhcm0uCgkqIHRpbmZvLmNjICgqOjpkY2FzdCk6IExpa2V3aXNlLiAgQWRqdXN0IHRvIGFsbG93IGZvciBudWxsIHBvaW50ZXJzLgoJKiB0aW5mbzIuY2MgKF9fdGhyb3dfdHlwZV9tYXRjaF9ydHRpXzIpOiBMaWtld2lzZS4KCShfX3Rocm93X3R5cGVfbWF0Y2hfcnR0aSk6IE5vdyBqdXN0IGEgd3JhcHBlci4KCgkqIGV4Y2VwdC5jOiBMb3NlIENhdGNoTWF0Y2gsIEZpcnN0RXhjZXB0aW9uTWF0Y2gsIGFuZCBVbndpbmQuCgkoaW5pdF9leGNlcHRpb25fcHJvY2Vzc2luZyk6IERvbid0IGluaXRpYWxpemUgdGhlbS4KCjE5OTktMDgtMjMgIFBhdWwgQnVyY2hhcmQgPGJ1cmNoYXJkQHBvYm94LmNvbT4KCgkqIGRlY2wuYyAoY2hlY2tfZGVmYXVsdF9hcmd1bWVudCk6IEZpeCB0eXBvLgoKMTk5OS0wOC0yMiAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGNwLXRyZWUuZGVmIChTVE1UX0VYUFIpOiBGaXggdHlwbyBpbiBub2RlIG5hbWUuCgoJKiBkdW1wLmMgKGR1bXBfbmV4dF9zdG10KTogTmV3IGZ1bmN0aW9uLgoJKGRlcXVldWVfYW5kX2R1bXApOiBVc2UgaXQuCgkKCSogcHQuYyAodHN1YnN0X2NvcHkpOiBNYWtlIHN1cmUgdG8gaW5pdGlhbGl6ZSByZXR1cm4gdmFsdWUgZm9yIGEKCVNUTVRfRVhQUiwgZXZlbiB3aGVuIHByb2Nlc3NpbmdfdGVtcGxhdGVfZGVjbC4KCSogc2VtYW50aWNzLmMgKGZpbmlzaF9zdG10X2V4cHIpOiBBIHN0YXRlbWVudC1leHByZXNzaW9uIHdob3NlCglsYXN0IHN0YXRlbWVudCBpcyBub3QgYW4gZXhwcmVzc2lvbi1zdGF0ZW1lbnQgaGFzIHR5cGUgYHZvaWQnLgkKCQoxOTk5LTA4LTIwICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogc2VtYW50aWNzLmMgKGZpbmlzaF9zdG10X2V4cHIpOiBGaXggdHlwbyBpbiBjb21tZW50LgoJKiB0cmVlLmMgKHNlYXJjaF90cmVlKTogSGFuZGxlIEVYSVRfRVhQUiwgTE9PUF9FWFBSLgoJKG1hcGNhcik6IExpa2V3aXNlLgoJKiBpbml0LmMgKGJ1aWxkX3ZlY19kZWxldGVfMSk6IE1ha2UgdGhlIGNoaWxkcmVuIG9mIGEgcGVybWFuZW50CglCSU5EX0VYUFIgcGVybWFuZW50LgoJKiBwdC5jIChyZWdpc3Rlcl9zcGVjaWFsaXphdGlvbik6IERvbid0IHJlZ2lzdGVyIGEgc3BlY2lhbGl6YXRpb24KCW1vcmUgdGhhbiBvbmNlLgoJCjE5OTktMDgtMTggIEFuZHJldyBIYWxleSAgPGFwaEBjeWdudXMuY29tPgoKCSogbWV0aG9kLmMgKHByb2Nlc3Nfb3ZlcmxvYWRfaXRlbSk6IENhbGwgYnVpbGRfbWFuZ2xlZF9DOXhfbmFtZSAoKQoJZm9yIGFsbCBpbnRlZ2VyIHBhcmFtZXRlciB0eXBlcyBsYXJnZXIgdGhhbiBsb25nIGxvbmcuCgoxOTk5LTA4LTE5ICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogcHQuYyAocmVkZWNsYXJlX2NsYXNzX3RlbXBsYXRlKTogTWVyZ2UgZGVmYXVsdCB0ZW1wbGF0ZQoJYXJndW1lbnRzIGluIGJvdGggZGlyZWN0aW9ucy4KCgkqIHR5cGVjay5jIChjb21tb25fdHlwZSk6IFVuZG8gMTk5OS0wOC0xOCBjaGFuZ2UuICBSZW1vdmUKCWNvbXBpbGVyX2Vycm9yIG1lc3NhZ2UuCgoxOTk5LTA4LTE5ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBjcC10cmVlLmg6IERlY2xhcmUgZmxhZ191c2VfcmVwb3NpdG9yeS4KCSogcHQuYyAoZG9fZGVjbF9pbnN0YW50aWF0aW9uKTogRG9uJ3QgY29tcGxhaW4gYWJvdXQgZHVwbGljYXRlCglpbnN0YW50aWF0aW9uIHdpdGggLWZyZXBvLgoJKGRvX3R5cGVfaW5zdGFudGlhdGlvbik6IExpa2V3aXNlLgoKCSogcHQuYyAocHVzaF90ZW1wbGF0ZV9kZWNsX3JlYWwpOiBDb21wbGFpbiBhYm91dCBldmVyeXRoaW5nCgl0aGF0IGlzbid0IGEgdmFsaWQgdGVtcGxhdGUuCgoJKiBkZWNsMi5jIChpbXBvcnRfZXhwb3J0X2RlY2wpOiBJZiAtZm5ldy1hYmksIGNsYXNzIGxpbmthZ2UgZG9lc24ndAoJYWZmZWN0IGlubGluZXMuCgoxOTk5LTA4LTE5ICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogY3AtdHJlZS5kZWYgKFBTRVVET19EVE9SX0VYUFIpOiBOZXcgdHJlZSBjb2RlLgoJKiBkZWNsMi5jIChidWlsZF9leHByX2Zyb21fdHJlZSk6IEhhbmRsZSBpdC4KCSogZXJyb3IuYyAoZHVtcF9leHByKTogTGlrZXdpc2UuCgkqIHB0LmMgKGZvcl9lYWNoX3RlbXBsYXRlX3Bhcm0pOiBMaWtld2lzZS4KCSh0c3Vic3RfY29weSk6IExpa2V3aXNlLgoJKiB0cmVlLmMgKHNlYXJjaF90cmVlKTogTGlrZXdpc2UuCgkqIHNlbWFudGljcy5jIChmaW5pc2hfcHNldWRvX2Rlc3RydWN0b3JfY2FsbCk6IENyZWF0ZSBpdC4KCQoxOTk5LTA4LTE4ICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogc2VhcmNoLmMgKHNldHVwX2NsYXNzX2JpbmRpbmdzKTogUm9idXN0aWZ5LgoJKiB0eXBlY2suYyAoY29tbW9uX3R5cGUpOiBVc2Ugc2FtZV90eXBlX3AsIG5vdCBwb2ludGVyIGVxdWFsaXR5LAoJdG8gY29tcGFyZSB0eXBlcy4KCgkqIGNwLXRyZWUuaCAoYnVpbGRfbGFuZ19maWVsZF9kZWNsKTogUmVtb3ZlLgoJKiBjbGFzcy5jIChidWlsZF92dGFibGUpOiBSZXBsYWNlIGNhbGxzIHRvIGJ1aWxkX2xhbmdfZmllbGRfZGVjbAoJd2l0aCBidWlsZF9sYW5nX2RlY2wuCgkocHJlcGFyZV9mcmVzaF92dGFibGUpOiBMaWtld2lzZS4KCShmaW5pc2hfc3RydWN0XzEpOiBMaWtld2lzZS4KCShpbml0X2NsYXNzX3Byb2Nlc3NpbmcpOiBMaWtld2lzZS4KCSogZGVjbC5jIChwdXNoX3VzaW5nX2RlY2wpOiBMaWtld2lzZS4KCShpbml0X2RlY2xfcHJvY2Vzc2luZyk6IExpa2V3aXNlLgoJKGdyb2t2YXJkZWNsKTogTGlrZXdpc2UuCgkoYnVpbGRfcHRybWVtZnVuY190eXBlKTogTGlrZXdpc2UuCgkoZ3Jva2RlY2xhcmF0b3IpOiBMaWtld2lzZS4KCShidWlsZF9lbnVtZXJhdG9yKTogTGlrZXdpc2UuCgkqIGRlY2wyLmMgKGdyb2tfeF9jb21wb25lbnRzKTogTGlrZXdpc2UuCgkoZG9fY2xhc3NfdXNpbmdfZGVjbCk6IExpa2V3aXNlLgoJKiBleGNlcHQuYyAoY2FsbF9laF9pbmZvKTogTGlrZXdpc2UuCgkqIGluaXQuYyAoaW5pdF9pbml0X3Byb2Nlc3NpbmcpOiBMaWtld2lzZS4KCSogcnR0aS5jIChleHBhbmRfY2xhc3NfZGVjbCk6IExpa2V3aXNlLgoJKiB0cmVlLmMgKGJ1aWxkX2Jhc2VfZmllbGRzKTogTGlrZXdpc2UuCgkoYnVpbGRfdmJhc2VfcG9pbnRlcl9maWVsZHMpOiBMaWtld2lzZS4KCSogbGV4LmMgKGJ1aWxkX2xhbmdfZGVjbCk6IEJ1aWxkIGRlY2xhcmF0aW9ucyBvbiB0aGUgcGVybWFuZW50CglvYnN0YWNrIGlmIHdlJ3JlIGJ1aWxkaW5nIHN0YXRtZWVudCB0cmVlcy4KCShyZXRyb2ZpdF9sYW5nX2RlY2wpOiBIYW5kbGUgYm90aCB0aGUgZnVsbCBsYW5nX2RlY2wgYW5kIGFsc28gdGhlCglzbWFsbGVyIGxhbmdfZGVjbF9mbGFncyBoZXJlLgoJKGJ1aWxkX2xhbmdfZmllbGRfZGVjbCk6IFJlbW92ZS4KCSogcHQuYyAocHVzaF90ZW1wbGF0ZV9kZWNsX3JlYWwpOiBJc3N1ZSBlcnJvcnMgZm9yIHZhcmlhYmxlCglkZWNsYXJhdGlvbnMgdGhhdCBhcmUgbm90IHN0YXRpYyBtZW1iZXJzLgoKMTk5OS0wOC0xOCAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAY3lnbnVzLmNvbT4KCgkqIHRyZWUuYyAoc2VhcmNoX3RyZWUpOiBIYW5kbGUgVFJVVEhfe0FORCxPUixYT1J9X0VYUFIgdG9vLgoJKG1hcGNhcik6IExpa2V3aXNlLgoKMTk5OS0wOC0xNyAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGNwLXRyZWUuaCAoYmFja19lbmRfaG9vayk6IE5ldyB2YXJpYWJsZS4KCSogZGVjbDIuYyAoYmFja19lbmRfaG9vayk6IERlZmluZSBpdC4KCShmaW5pc2hfZmlsZSk6IElmIGl0J3Mgbm9uLU5VTEwsIGNhbGwgaXQuCgoJKiBkZWNsLmMgKGFkZF9kZWNsX3RvX2xldmVsKTogTmV3IGZ1bmN0aW9uLgoJKHB1c2hfbG9jYWxfYmluZGluZyk6IFVzZSBpdC4KCShmaW5kX2JpbmRpbmcpOiBGaXggdHlwbyBpbiBjb21tZW50LgoJKHB1c2hkZWNsKTogVXNlIGFkZF9kZWNsX3RvX2xldmVsLiAgUHV0IHRlbXBsYXRlcyBvbiB0aGUKCWNvcnJlc3BvbmRpbmcgbmFtZXNwYWNlLXNjb3BlIGJpbmRpbmcgbGV2ZWxzLgoJKiBkdW1wLmMgKGRlcXVldWVfYW5kX2R1bXApOiBQcmludCB0aGUgc3BlY2lhbGl6YXRpb25zIG9mIGEKCXRlbXBsYXRlLgoJKiBwdC5jIChwdXNoX3RlbXBsYXRlX2RlY2xfcmVhbCk6IERvbid0IHB1c2ggYSB0ZW1wbGF0ZSBtdWx0aXBsZQoJdGltZXMuCgoxOTk5LTA4LTE3ICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogY3AtdHJlZS5oIChDQUxMX0RFQ0xBUkFUT1JfUEFSTVMpOiBOZXcgbWFjcm8uCgkoQ0FMTF9ERUNMQVJBVE9SX1FVQUxTKTogTGlrZXdpc2UuCgkoQ0FMTF9ERUNBUkFUT1JfRVhDRVBUSU9OX1NQRUMpOiBMaWtld2lzZS4KCSogZGVjbC5jIChncm9rZGVjbGFyYXRvcik6IEFkanVzdCB0byB1c2UgdGhlbS4KCSogZGVjbDIuYyAoZ3Jva2ZpZWxkKTogTGlrZXdpc2UuCgkocmVwYXJzZV9hYnNkY2xfYXNfY2FzdHMpOiBMaWtld2lzZS4KCSogbGV4LmMgKG1ha2VfY2FsbF9kZWNsYXJhdG9yKTogTGlrZXdpc2UuCgkoc2V0X3F1YWxzX2FuZF9zcGVjKTogTGlrZXdpc2UuCgkqIHB0LmMgKHRzdWJzdCk6IExpa2V3aXNlLgoJKiB0cmVlLmMgKG1hcGNhcik6IFJlbW92ZSBzcGVjaWFsIGhhY2sgdG8gaGFuZGxlIHRoaXJkIG9wZXJhbmQgb2YKCWEgQ0FMTF9FWFBSLgoKMTk5OS0wOC0xNiAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGNwLXRyZWUuaCAoQ0FOX0hBVkVfRlVMTF9MQU5HX0RFQ0xfUCk6IE5ldyBtYWNyby4KCSogY2xhc3MuYyAoYnVpbGRfdnRhYmxlKTogVXNlIGJ1aWxkX2xhbmdfZmllbGRfZGVjbCB0byBidWlsZCB0aGUKCVZBUl9ERUNMcyBmb3IgdnRhYmxlcy4KCShwcmVwYXJlX2ZyZXNoX3Z0YWJsZSk6IExpa2V3aXNlLgoJKiBkZWNsLmMgKGR1cGxpY2F0ZV9kZWNscyk6IE9ubHkgY29weSBERUNMX1NBVkVEX1RSRUUgaWYKCUNBTl9IQVZFX0ZVTExfTEFOR19ERUNMX1AuCgkocHVzaF91c2luZ19kZWNsKTogVXNlIGJ1aWxkX2xhbmdfZGVjbCB0byBidWlsZCBVU0lOR19ERUNMcy4KCShncm9rZGVjbGFyYXRvcik6IFVzZSBidWlsZF9sYW5nX2RlY2wgdG8gYnVpbGQgVFlQRV9ERUNMcy4KCSogbGV4LmMgKHJldHJvZml0X2xhbmdfZGVjbCk6IENoZWNrIENBTl9IQVZFX0ZVTExfTEFOR19ERUNMX1AuCgkoYnVpbGRfbGFuZ19maWVsZF9kZWNsKTogTGlrZXdpc2UuCgkoY29weV9sYW5nX2RlY2wpOiBVc2UgQ0FOX0hBVkVfRlVMTExBTkdfREVDTF9QIHRvIGRlY2lkZSBob3cgbXVjaAoJdG8gY29weS4KCQoJKiBjcC10cmVlLmRlZiAoU1RNVF9FWFBSKTogTmV3IHRyZWUgbm9kZS4KCSogY3AtdHJlZS5oIChTVE1UX0VYUFJfU1RNVCk6IE5ldyBtYWNyby4KCShzdG9yZV9yZXR1cm5faW5pdCk6IENoYW5nZSBwcm90b3R5cGUuCgkoZmluaXNoX25hbWVkX3JldHVybl92YWx1ZSk6IE5ldyBmdW5jdGlvbi4KCShleHBhbmRfc3RtdCk6IExpa2V3aXNlLgoJKGV4cGFuZF9ib2R5KTogTGlrZXdpc2UuCgkoYmVnaW5fc3RtdF90cmVlKTogTGlrZXdpc2UuCgkoZmluaXNoX3N0bXRfdHJlZSk6IExpa2V3aXNlLgoJKGV4cGFuZGluZ19wKTogTmV3IHZhcmlhYmxlLgoJKGxhc3RfZXhwcl90eXBlKTogTGlrZXdpc2UuCgkoYnVpbGRpbmdfc3RtdF90cmVlKTogTmV3IG1hY3JvLgoJKiBkZWNsLmMgKHN0YXJ0X2Z1bmN0aW9uKTogVXNlIGJ1aWxkaW5nX3N0bXRfdHJlZSwgbm90Cglwcm9jZXNzaW5nX3RlbXBsYXRlX2RlY2wsIHdoZXJlIGFwcHJvcHJpYXRlLgoJKHN0b3JlX3Bhcm1fZGVjbHMpOiBMaWtld2lzZS4KCShzdG9yZV9yZXR1cm5faW5pdCk6IE1vdmUgbW9zdCBvZiB0aGUgYm9keSB0byBzZW1hbnRpY3MuYy4KCShmaW5pc2hfZnVuY3Rpb24pOiBVc2UgYnVpbGRpbmdfc3RtdF90cmVlLgoJKGZpbmlzaF9zdG10KTogQ2xlYXIgbGFzdF9leHByX3R5cGUgaGVyZS4KCShjcF9mdW5jdGlvbik6IEFkZCBleHBhbmRpbmdfcCwgbGFzdF90cmVlLCBsYXN0X2V4cHJfdHlwZS4KCShwdXNoX2NwX2Z1bmN0aW9uX2NvbnRleHQpOiBTYXZlIHRoZW0uCgkocG9wX2NwX2Z1bmN0aW9uX2NvbnRleHQpOiBSZXN0b3JlIHRoZW0uCgkqIGRlY2wyLmMgKHNldHVwX3Z0YmxfcHRyKTogTW92ZSB0byBzZW1hbnRpY3MuYy4KCSogZXJyb3IuYyAoZHVtcF9leHByKTogSGFuZGxlIFNUTVRfRVhQUi4KCSogZXhjZXB0LmMgKGV4cGFuZF9zdGFydF9jYXRjaF9ibG9jayk6IFVzZSBidWlsZGluZ19zdG10X3RyZWUuCglVc2UgYWRkX2RlY2xfc3RtdC4KCSogZXhwci5jIChjcGx1c19leHBhbmRfZXhwcik6IEhhbmRsZSBTVE1UX0VYUFIuCgkoZG9fY2FzZSk6IE1vdmUgYWRkX3RyZWUgY2FsbCB0byBzZW1hbnRpY3MuYy4KCSogcGFyc2UueSAocmV0dXJuX2luaXQpOiBVc2UgZmluaXNoX25hbWVkX3JldHVybl92YWx1ZS4KCShmb3IuaW5pdC5zdGF0ZW1lbnQpOiBVc2UgZmluaXNoX2V4cHJfc3RtdC4KCSogcGFyc2UuYzogUmVnZW5lcmF0ZWQuCgkqIHB0LmMgKGRvX3B1c2hsZXZlbCk6IE1vdmUgdG8gc2VtYW50aWNzLmMuCgkoZG9fcG9wbGV2ZWwpOiBMaWtld2lzZS4KCSh0c3Vic3RfY29weSk6IEhhbmRsZSBTVE1UX0VYUFIgaW5zdGVhZCBvZiBCSU5EX0VYUFIuCgkodHN1YnN0X2V4cHIpOiBEb24ndCBleHBhbmQgYWxsIHRoZSB3YXkgdG8gUlRMIGhlcmUuICBIYW5kbGUKCVJFVFVSTl9JTklUIGFuZCBDVE9SX0lOSVRJQUxJWkVSLgoJKGluc3RhbnRpYXRlX2RlY2wpOiBDYWxsIGV4cGFuZF9ib2R5IGFmdGVyIHRzdWJzdCdpbmcgaW50bwoJREVDTF9TQVZFRF9UUkVFLgoJKiBzZW1hbnRpY3MuYyAoZXhwYW5kX3N0bXRzKTogTmV3IGZ1bmN0aW9uLgoJKGV4cGFuZGluZ19wKTogTmV3IHZhcmlhYmxlLgoJKGxhc3RfZXhwcl90eXBlKTogTGlrZXdpc2UuCgkoZmluaXNoX2V4cHJfc3RtdCk6IFVzZSBidWlsZGluZ19zdG10X3RyZWUuCgkoYmVnaW5faWZfc3RtdCk6IExpa2V3aXNlLgoJKGZpbmlzaF9pZl9zdG10X2NvbmQpOiBMaWtld2lzZS4KCShmaW5pc2hfdGhlbl9jbGF1c2UpOiBMaWtld2lzZS4KCShiZWdpbl9lbHNlX2NsYXVzZSk6IExpa2V3aXNlLgoJKGZpbmlzaF9lbHNlX2NsYXVzZSk6IExpa2V3aXNlLgoJKGJlZ2luX3doaWxlX3N0bXQpOiBMaWtld2lzZS4KCShmaW5pc2hfd2hpbGVfc3RtdF9jb25kKTogTGlrZXdpc2UuCgkoZmluaXNoX3doaWxlX3N0bXQpOiBMaWtld2lzZS4KCShmaW5pc2hfZG9fYm9keSk6IExpa2V3aXNlLgoJKGZpbmlzaF9kb19zdG10KTogTGlrZXdpc2UuCgkoZmluaXNoX3JldHVybl9zdG10KTogTGlrZXdpc2UuCgkoYmVnaW5fZm9yX3N0bXQpOiBMaWtld2lzZS4KCShmbmlzaF9mb3JfaW5pdF9zdG10KTogTGlrZXdpc2UuCgkoZmluaXNoX2Zvcl9jb25kKTogTGlrZXdpc2UuCgkoZmluaXNoX2Zvcl9leHByKTogTGlrZXdpc2UuCgkoZmluaXNoX2Zvcl9zdG10KTogTGlrZXdpc2UuCgkoZmluaXNoX2JyZWFrX3N0bXQpOiBMaWtld2lzZS4KCShmaW5pc2hfY29udGludWVfc3RtdCk6IExpa2V3aXNlLgoJKGZpbmlzaF9zd2l0Y2hfY29uZCk6IExpa2V3aXNlLgoJKGZpbmlzaF9zd2l0Y2hfc3RtdCk6IExpa2V3aXNlLgoJKGZpbmlzaF9jYXNlX2xhYmVsKTogQ2FsbCBhZGRfdHJlZSBoZXJlIGlmIG5lY2Vzc2FyeS4KCShmaW5pc2hfZ290b19zdGF0ZW1lbnQpOiBVc2UgYnVpbGRpbmdfc3RtdF90cmVlLgoJKGJlZ2luX3RyeV9ibG9jayk6IExpa2V3aXNlLgoJKGJlZ2luX2Z1bmN0aW9uX3RyeV9ibG9jayk6IExpa2V3aXNlLgoJKGZpbmlzaF90cnlfYmxvY2spOiBMaWtld2lzZS4KCShmaW5pc2hfZnVuY3Rpb25fdHJ5X2Jsb2NrKTogTGlrZXdpc2UuCgkoZmluaXNoX2hhbmRsZXJfc2VxdWVuY2UpOiBMaWtld2lzZS4KCShmaW5pc2hfZnVuY3Rpb25faGFuZGxlcl9zZXF1ZW5jZSk6IExpa2V3aXNlLgoJKGJlZ2luX2hhbmRsZXIpOiBMaWtld2lzZS4KCShmaW5pc2hfaGFuZGxlcl9wYXJtcyk6IExpa2V3aXNlLgoJKGZpbmlzaF9oYW5kbGVyKTogTGlrZXdpc2UuCgkoYmVnaW5fY29tcG91bmRfc3RtdCk6IExpa2V3aXNlLgoJKGZpbmlzaF9jb21wb3VuZF9zdG10KTogTGlrZXdpc2UuCgkoZmluaXNoX2FzbV9zdG10KTogTGlrZXdpc2UuCgkoZmluaXNoX2xhYmVsX3N0bXQpOiBMaWtld2lzZS4KCShmaW5pc2hfbmFtZWRfcmV0dXJuX3ZhbHVlKTogTmV3IGZ1bmN0aW9uLgoJKHNldHVwX3Z0YmxfcHRyKTogTW92ZWQgaGVyZSBmcm9tIGRlY2wyLmMuCgkoZG9fcHVzaGxldmVsKTogTW92ZWQgaGVyZSBmcm9tIHB0LmMuCgkoZG9fcG9wbGV2ZWwpOiBMaWtld2lzZS4KCShiZWdpbl9zdG10X2V4cHIpOiBVc2UgYnVpbGRpbmdfc3RtdF90cmVlLgoJKGZpbmlzaF9zdG10X2V4cHIpOiBMaWtld2lzZS4gIEJ1aWxkIGEgU1RNVF9FWFBSLCBub3QgYSBCSU5EX0VYUFIsCgl3aGVuIGJ1aWxkaW5nX3N0bXRfdHJlZS4KCShiZWdpbl9zdG10X3RyZWUpOiBOZXcgZnVuY3Rpb24uCgkoZmluaXNoX3N0bXRfdHJlZSk6IExpa2V3aXNlLgoJKGV4cGFuZF9zdG10KTogTGlrZXdpc2UuCgkoZXhwYW5kX2JvZHkpOiBMaWtld2lzZS4KCSogdHJlZS5jIChidWlsZF9jcGx1c19tZXRob2RfdHlwZSk6IE1ha2Ugc3VyZSB0aGUgYXJndW1lbnQgdHlwZXMKCWVuZCB1cCBvbiB0aGUgc2FtZSBvYnN0YWNrIGFzIHRoZSBNRVRIT0RfVFlQRS4KCShzZWFyY2hfdHJlZSk6IEhhbmRsZSBDT01QT1VORF9FWFBSLCBNT0RJRllfRVhQUiwKCVRIUk9XX0VYUFIsIFNUTVRfRVhQUi4KCShtYXBjYXIpOiBCcmVhayBvdXQgY29tbW9uIGNhc2VzLiAgSGFuZGxlIENPTVBPVU5EX0VYUFIsCglNT0RJRllfRVhQUiwgVEhST1dfRVhQUiwgU1RNVF9FWFBSLCBSVExfRVhQUi4gIEFib3J0LCByYXRoZXIgdGhhbgoJc29ycnksIGlmIGFuIHVuc3VwcG9ydGVkIG5vZGUgaXMgZW5jb3VudGVyZWQuCgkqIHR5cGVjay5jIChyZXF1aXJlX2NvbXBsZXRlX3R5cGVfaW5fdm9pZCk6IEhhbmRsZSBCSU5EX0VYUFIuCgkoY19leHBhbmRfcmV0dXJuKTogRG9uJ3QgY2FsbCBhZGRfdHJlZSBoZXJlLgoJCjE5OTktMDgtMTUgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBwdC5jIChjaGVja19kZWZhdWx0X3RtcGxfYXJncyk6IERvbid0IGNoZWNrIGluIGxvY2FsIHNjb3Blcy4KCSh0c3Vic3RfZGVjbCk6IE1ha2Ugc3VyZSB0aGUgZGVjbGFyYXRpb24gaXMgb24gYSBzYXZlYWJsZQoJb2JzdGFjay4gIENsZWFyIERFQ0xfREVBRF9GT1JfTE9DQUwgd2hlbiBtYWtpbmcgYSBjb3B5IG9mIGEgbG9jYWwKCXZhcmlhYmxlLgoJKHRzdWJzdF9leHByKTogQWRqdXN0IG5vdyB0aGF0IERFQ0xfU1RNVHMgcmVhbGx5IGNvbnRhaW4gREVDTHMuCgkKMTk5OS0wOC0xNCAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCVNwZWVkIHVwIEtvZW5pZyBsb29rdXAuCgkqIGRlY2wuYyAodW5xdWFsaWZpZWRfbmFtZXNwYWNlX2xvb2t1cCk6IE5vbnN0YXRpYy4gIEFkZCBzcGFjZXAgcGFybQoJdG8gcmV0dXJuIG5hbWVzcGFjZXMgd2UndmUgbG9va2VkIGF0LgoJKiBkZWNsMi5jIChsb29rdXBfdXNpbmdfbmFtZXNwYWNlKTogTGlrZXdpc2UuCgkoYWRkX2Z1bmN0aW9uKTogRG9uJ3QgY2FsbCBvdmxfbWVtYmVyLgoJKGxvb2t1cF9hcmdfZGVwZW5kZW50KTogSW5pdGlhbGl6ZSBrLm5hbWVzcGFjZXMgdG8gdGhlIGxpc3Qgb2YgCgluYW1lc3BhY2VzIHNlZW4gaW4gdW5xdWFsaWZpZWQgbG9va3VwLgoJKiBjYWxsLmMgKGVxdWFsX2Z1bmN0aW9ucyk6IE1vdmUgaGVyZSBmcm9tIHRyZWUuYy4KCShqb3VzdCk6IFVzZSBpdCB0byBoYW5kbGUgZHVwbGljYXRlIGNhbmRpZGF0ZXMuCgkqIHRyZWUuYyAob3ZsX21lbWJlcik6IFVzZSA9PS4KCjE5OTktMDgtMTMgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjcC10cmVlLmRlZiAoREVDTF9TVE1UKTogTWFrZSBpdCBzbWFsbGVyLgoJKiBjcC10cmVlLmggKGxhbmdfZGVjbF9mbGFncyk6IE1vdmUgc2F2ZWRfdHJlZSB0byAuLi4KCShsYW5nX2RlY2wpOiAuLi4gaGVyZS4gIEFkZCBuZXh0LgoJKERFQ0xfU0FWRURfVFJFRSk6IEFkanVzdCBhY2NvcmRpbmdseS4KCShERUNMX0lNUExJQ0lUX1RZUEVERUZfUCk6IE5ldyBtYWNyby4KCShTRVRfREVDTF9JTVBMSUNJVF9UWVBFREVGX1ApOiBMaWtld2lzZS4KCShERUNMX1NUTVRfREVDTCk6IExpa2V3aXNlLgoJKGNyZWF0ZV9pbXBsaWNpdF90eXBlZGVmKTogTmV3IGZ1bmN0aW9uLgoJKG1heWJlX3B1c2hfZGVjbCk6IExpa2V3aXNlLgoJKHRzdWJzdF9kZWZhdWx0X2FyZ3VtZW50KTogTmV3IGZ1bmN0aW9uLgoJKGF0X2Z1bmN0aW9uX3Njb3BlX3ApOiBMaWtld2lzZS4KCShhZGRfZGVjbF9zdG10KTogTGlrZXdpc2UuCgkocHVzaF9wZXJtYW5lbnRfb2JzdGFjayk6IExpa2V3aXNlLgoJKiBjYWxsLmMgKGNvbnZlcnRfZGVmYXVsdF9hcmcpOiBVc2UgdHN1YnN0X2RlZmF1bHRfYXJndW1lbnQuCgkqIGNsYXNzLmMgKGFkZF9tZXRob2QpOiBVc2UgcHVzaF9wZXJtYW5lbnRfb2JzdGFjay4KCShidWlsZF9zZWxmX3JlZmVyZW5jZSk6IENyZWF0ZSBhIFRFTVBMQVRFX0RFQ0wgZm9yIHRoZQoJc2VsZi1yZWZlcmVuY2UsIGlmIG5lY2Vzc2FyeS4KCSogZGVjbC5jIChwc2V1ZG9fZ2xvYmFsX2xldmVsX3ApOiBPbmx5IGxvb2sgYXQgdGhlIGN1cnJlbnQgYmluZGluZwoJbGV2ZWwuCgkocHVzaF9iaW5kaW5nKTogVXNlIHB1c2hfcGVybWFuZW50X29ic3RhY2suCgkoY3JlYXRlX2ltcGxpY2l0X3R5cGVkZWYpOiBOZXcgZnVuY3Rpb24uCgkocHVzaHRhZyk6IFVzZSBpdC4KCShkdXBsaWNhdGVfZGVjbHMpOiBVc2UgcHVzaF9wZXJtYW5lbnRfb2JzdGFjay4KCShtYXliZV9wdXNoX2RlY2wpOiBOZXcgZnVuY3Rpb24uCgkoc3RhcnRfZGVjbCk6IFVzZSBpdC4gIFJlbW92ZSBkZWFkIGNvZGUuICBVc2UgYWRkX2RlY2xfc3RtdC4KCShzdGFydF9kZWNsXzEpOiBSZW1vdmUgZGVhZCBjb2RlLgoJKGNwX2ZpbmlzaF9kZWNsKTogUmVtb3ZlIERFQ0xfU1RNVCBoYW5kbGluZyBoZXJlLiAgRG9uJ3QgdXNlCglwc2V1ZG9fZ2xvYmFsX2xldmVsX3AuCgkoZ3Jva3ZhcmRlY2wpOiBDcmVhdGUgREVDTF9MQU5HX1NQRUNJRklDIGZvciBhIFZBUl9ERUNMIGluIGEKCXRlbXBsYXRlLgoJKGdyb2tkZWNsYXJhdG9yKTogTGlrZXdpc2UsIGZvciBUWVBFX0RFQ0xzLiAgRG9uJ3QgdXNlCglwc2V1ZG9fZ2xvYmFsX2xldmVsX3AuCgkqIGRlY2wyLmMgKGdyb2tmaWVsZCk6IENhbGwgcHVzaF90ZW1wbGF0ZV9kZWNsIGZvciBhIFRZUEVfREVDTCBpbgoJYSB0ZW1wbGF0ZS4KCShnZXRfc2VudHJ5KTogVXNlIHB1c2hfcGVybWFuZW50X29ic3RhY2suCgkqIGR1bXAuYyAoZGVxdWV1ZV9hbmRfZHVtcCk6IEVuYWJsZSBERUNMX1NUTVQuCgkqIGV4Y2VwdC5jIChjYWxsX2VoX2luZm8pOiBVc2UgcHVzaF9wZXJtYW5lbnRfb2JzdGFjay4KCShidWlsZF9laF90eXBlX3JlZik6IExpa2V3aXNlLgoJKGRvX3BvcF9leGNlcHRpb24pOiBMaWtld2lzZS4KCShleHBhbmRfZWhfc3BlYyk6IExpa2V3aXNlLgoJKGFsbG9jX2VoX29iamVjdCk6IExpa2V3aXNlLgoJKGV4cGFuZF90aHJvdyk6IExpa2V3aXNlLgoJKiBpbml0LmMgKGJ1aWxkX2phdmFfY2xhc3NfcmVmKTogTGlrZXdpc2UuCgkqIGxleC5jIChnZXRfdGltZV9pZGVudGlmaWVyKTogTGlrZXdpc2UuCgkoZnJlZV9sYW5nX2RlY2xfY2hhaW4pOiBDb3JyZWN0IHR5cGUuCgkocmV0cm9maXRfbGFuZ19kZWNsKTogQWRqdXN0IGFjY29yZGluZ2x5LgoJKGJ1aWxkX2xhbmdfZmllbGRfZGVjbCk6IExpa2V3aXNlLgoJKiBsZXguaCAoZnJlZV9sYW5nX2RlY2xfY2hhaW4pOiBMaWtld2lzZS4KCSogcGFyc2UueSAobGFuZ19leHRkZWYpOiBEb24ndCB1c2UgcHNldWRvX2dsb2JhbF9sZXZlbF9wLgoJKiBwYXJzZS5jOiBSZWdlbmVyYXRlZC4KCSogcHQuYyAodHN1YnN0X2RlZmF1bHRfYXJndW1lbnRzKTogTmV3IGZ1bmN0aW9uLgoJKHJldHJpZXZlX2xvY2FsX3NwZWNpYWxpemF0aW9uKTogTGlrZXdpc2UuCgkocmVnaXN0ZXJfbG9jYWxfc3BlY2lhbGl6YXRpb24pOiBMaWtld2lzZS4KCShwdXNoX3RlbXBsYXRlX2RlY2xfcmVhbCk6IFVzZSBERUNMX0lNUExJQ0lUX1RZUEVERUZfUC4gIEp1c3QgdXNlCglwc2V1ZG9fZ2xvYmFsX2xldmVsX3AgdG8gZGV0ZXJtaW5lIHdoZXRoZXIgb3Igbm90IGEgdGVtcGxhdGUgaXMKCXByaW1hcnkuCgkobG9va3VwX3RlbXBsYXRlX2NsYXNzKTogTGlrZXdpc2UuICBVc2UgY3JlYXRlX2ltcGxpY2l0X3R5cGVkZWYuCgkoaW5zdGFudGlhdGVfY2xhc3NfdGVtcGxhdGUpOiBDYWxsIHRzdWJzdF9kZWZhdWx0X2FyZ3VtZW50cyBmb3IKCW1lbWJlciBmdW5jdGlvbnMsIGlmIGFwcHJvcHJpYXRlLgoJKHRzdWJzdF9kZWZhdWx0X2FyZ3VtZW50KTogTmV3IGZ1bmN0aW9uLgoJKHRzdWJzdF9kZWNsKTogVXNlIGl0LiAgQ2hhbmdlIFRZUEVfREVDTCBoYW5kbGluZyB0byBtYXRjaCBWQVJfREVDTHMuCgkqIHNlYXJjaC5jIChhdF9mdW5jdGlvbl9zY29wZV9wKTogTmV3IGZ1bmN0aW9uLgoJKiBzZW1hbnRpY3MuYyAoZmluaXNoX2FzbV9zdG10KTogVXNlIHB1c2hfcGVybWFuZW50X29ic3RhY2suCgkoZmluaXNoX2xhYmVsX3N0bXQpOiBMaWtld2lzZS4KCShhZGRfZGVjbF9zdG10KTogTmV3IGZ1bmN0aW9uLgoJKGJlZ2luX2NsYXNzX2RlZmluaXRpb24pOiBMaWtld2lzZS4KCShmaW5pc2hfdHlwZW9mKTogTGlrZXdpc2UuCgkqIHRyZWUuYyAoY29weV90ZW1wbGF0ZV90ZW1wbGF0ZV9wYXJtKTogTGlrZXdpc2UuCgkoY29weV90b19wZXJtYW5lbnQpOiBMaWtld2lzZS4KCShwdXNoX3Blcm1hbmVudF9vYnN0YWNrKTogRGVmaW5lLgoJKG1hcmtfYWRkcmVzc2FibGUpOiBVc2UgaXQuCgkqIHR5cGVjay5jIChtYXJrX2FkZHJlc3NhYmxlKTogTGlrZXdpc2UuCgkKMTk5OS0wOC0xMyAgR2F2aW4gUm9taWctS29jaCAgPGdhdmluQGN5Z251cy5jb20+CgoJKiBjcC10cmVlLmggKGluaXRfY3BsdXNfdW5zYXZlKTogTmV3LgoJKGNwbHVzX3Vuc2F2ZV9leHByX25vdyk6IE5ldy4KCSogbGV4LmMgKGluaXRfcGFyc2UpOiBDYWxsIGluaXRfY3BsdXNfdW5zYXZlLgoJKiB0cmVlLmMgKGluaXRfY3BsdXNfdW5zYXZlKTogTmV3LgoJKGNwbHVzX3Vuc2F2ZV9leHByX25vdyk6IE5ldy4KCjE5OTktMDgtMTMgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBwdC5jICh0c3Vic3QpOiBCYWNrIG91dCAxOTk5LTA4LTA2IHBhdGNoLiAgVXNlIGZvbGQgYW5kCglkZWNsX2NvbnN0YW50X3ZhbHVlIHRvIHNpbXBsaWZ5IGFycmF5IGJvdW5kcy4KCjE5OTktMDgtMTEgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIGxhbmctb3B0aW9ucy5oOiBBZGQgLWZtcy1leHRlbnNpb25zLgoJKiBjcC10cmVlLmg6IERlY2xhcmUgZmxhZ19tc19leHRlbnNpb25zLgoJKiBkZWNsMi5jOiBEZWZpbmUgaXQuCgkqIGNsYXNzLmMgKGluc3RhbnRpYXRlX3R5cGUpOiBEb24ndCBjb21wbGFpbiBhYm91dCB0YWtpbmcgdGhlIGFkZHJlc3MKCW9mIGEgYm91bmQgbWVtYmVyIGZ1bmN0aW9uIGlmIC1mbXMtZXh0ZW5zaW9ucy4KCSogdHlwZWNrLmMgKGJ1aWxkX3VuYXJ5X29wKTogTGlrZXdpc2UuCgkqIGRlY2wuYyAoZ3Jva2RlY2xhcmF0b3IpOiBPciBhYm91dCBpbXBsaWNpdCBpbnQuCgkqIGluaXQuYyAocmVzb2x2ZV9vZmZzZXRfcmVmKTogT3IgYWJvdXQgaW1wbGljaXQgJyYnLgoKMTk5OS0wOC0xMSAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGNwLXRyZWUuaCAobWluaW1hbF9wYXJzZV9tb2RlKTogUmVtb3ZlLgoJKGZpbmlzaF9sYWJlbF9zdG10KTogTmV3IGZ1bmN0aW9uLgoJKiBkZWNsLmMgKHNhdmVkX3Njb3BlKTogUmVtb3ZlIG1pbmltYWwgcGFyc2UgbW9kZS4KCShtYXliZV9wdXNoX3RvX3RvcF9sZXZlbCk6IERvbid0IHNhdmUgaXQuCgkocG9wX2Zyb21fdG9wX2xldmVsKTogRG9uJ3QgcmVzdG9yZSBpdC4KCShkZWZpbmVfbGFiZWwpOiBTcGxpdCBvdXQgdGVtcGxhdGUtaGFuZGxpbmcgY29kZSB0byBzZW1hbnRpY3MuYy4KCShzdGFydF9kZWNsKTogRG9uJ3QgdXNlIG1pbmltYWxfcGFyc2VfbW9kZS4KCShjcF9maW5pc2hfZGVjbCk6IExpa2V3aXNlLgoJKHN0YXJ0X2Z1bmN0aW9uKTogRG9uJ3QgaW5jcmVtZW50IGl0LgoJKHN0b3JlX3JldHVybl9pbml0KTogRG9uJ3QgdXNlIGl0LgoJKGZpbmlzaF9mdW5jdGlvbik6IERvbid0IGRlY3JlbWVudCBpdC4KCSogcGFyc2UueSAobGFiZWxfY29sb24pOiBVc2UgZmluaXNoX2xhYmVsX3N0bXQgdGhyb3VnaG91dC4KCSogcGFyc2UuYzogUmVnZW5lcmF0ZWQuCgkqIHB0LmMgKG1pbmltYWxfcGFyc2VfbW9kZSk6IERvbid0IGRlZmluZSBpdC4KCSh0c3Vic3RfZXhwcik6IFVzZSBmaW5pc2hfbGFiZWxfc3RtdC4KCSogc2VtYW50aWNzLmMgKGZpbmlzaF9sYWJlbF9zdG10KTogTmV3IGZ1bmN0aW9uLgoKCSogZHVtcC5jIChxdWV1ZSk6IEJlIGNhcmVmdWwgd2hlbiBjb21wdXRpbmcgYml0bWFza3MuCgkoZGVxdWV1ZV9hbmRfZHVtcCk6IERlc2NyaWJlIGJpbmZvcyBhcyBiaW5mb3MsIG5vdCBhcwoJdmVjdG9ycy4KCQoJKiBwYXJzZS55IChwZWRhbnRpYyk6IEdpdmUgaXQgaXR5cGUuICBBZGp1c3QgdXNhZ2UgYWNjb3JkaW5nbHkKCXRocm91Z2hvdXQuIAkKCSogcGFyc2UuYzogUmVnZW5lcmF0ZWQuCgkKCSogTWFrZS1sYW5nLmluIChDWFhfU1JDUyk6IFJlbW92ZSBzaWcuYy4KCSogTWFrZWZpbGUuaW4gKENYWF9PQkpTKTogUmVtb3ZlIHNpZy5vLgoJKHNpZy5vKTogUmVtb3ZlLgoJKiBjcC10cmVlLmggKENQVElfT1BBUVVFX1RZUEUpOiBSZW1vdmUuCgkoQ1BUSV9TSUdOQVRVUkVfVFlQRSk6IExpa2V3aXNlLgoJKENQVElfU0lHVEFCTEVfRU5UUllfVFlQRSk6IExpa2V3aXNlLgoJKG9wYXF1ZV90eXBlX25vZGUpOiBMaWtld2lzZS4KCShzaWduYXR1cmVfdHlwZV9ub2RlKTogTGlrZXdpc2UuCgkoc2lndGFibGVfZW50cnlfdHlwZSk6IExpa2V3aXNlLgoJKGZsYWdfaGFuZGxlX3NpZ25hdHVyZXMpOiBMaWtld2lzZS4KCShsYW5nX3R5cGUpOiBSZW1vdmUgaXNfc2lnbmF0dXJlLCBpc19zaWduYXR1cmVfcG9pbnRlciwKCWlzX3NpZ25hdHVyZV9yZWZlcmVuY2UsIGhhc19vcGFxdWVfdHlwZWRlY2xzLAoJc2lndGFibGVzX2hhc19iZWVuX2dlbmVyYXRlZC4gIEFkanVzdCBkdW1teS4gIFJlbW92ZSBzaWduYXR1cmUsCglzaWduYXR1cmVfcG9pbnRlcl90bywgc2lnbmF0dXJlX3JlZmVyZW5jZV90by4KCShJU19TSUdOQVRVUkUpOiBSZW1vdmUuCgkoU0VUX1NJR05BVFVSRSk6IFJlbW92ZS4KCShDTEVBUl9TSUdOQVRVUkUpOiBSZW1vdmUuCgkoSVNfU0lHTkFUVVJFX1BPSU5URVIpOiBSZW1vdmUuCgkoSVNfU0lHTkFUVVJFX1JFRkVSRU5DRSk6IFJlbW92ZS4KCShTSUdOQVRVUkVfSEFTX09QQVFVRV9UWVBFREVDTFMpOiBSZW1vdmUuCgkoU0lHVEFCTEVfSEFTX0JFRU5fR0VORVJBVEVEKTogUmVtb3ZlLgoJKENMQVNTVFlQRV9TSUdOQVRVUkUpOiBSZW1vdmUuCgkoU0lHTkFUVVJFX1RZUEUpOiBSZW1vdmUuCgkoU0lHTkFUVVJFX01FVEhPRF9WRUMpOiBSZW1vdmUuCgkoU0lHTkFUVVJFX1BPSU5URVJfVE8pOiBSZW1vdmUuCgkoU0lHTkFUVVJFX1JFRkVSRU5DRV9UTyk6IFJlbW92ZS4KCShsYW5nX2RlY2xfZmxhZ3MpOiBSZW1vdmUgaXNfZGVmYXVsdF9pbXBsZW1lbnRhdGlvbi4gIFJlbmFtZQoJbWVtZnVuY19wb2ludGVyX3RvIHRvIHNhdmVkX3RyZWUuCgkoSVNfREVGQVVMVF9JTVBMRU1FTlRBVElPTik6IFJlbW92ZS4KCShERUNMX01FTUZVTkNfUE9JTlRFUl9UTyk6IFJlbW92ZS4KCShERUNMX01FTUZVTkNfUE9JTlRJTkdfVE8pOiBSZW1vdmUuCgkoREVDTF9TQVZFRF9UUkVFKTogQWRqdXN0IGRlZmluaXRpb24uCgkodGFnX3R5cGVzKTogUmVtb3ZlIHNpZ25hdHVyZV90eXBlX25vZGUuCgkoU0lHTkFUVVJFX0ZJRUxEX05BTUUpOiBSZW1vdmUuCgkoU0lHTkFUVVJFX0ZJRUxEX05BTUVfRk9STUFUKTogTGlrZXdpc2UuCgkoU0lHTkFUVVJFX09QVFJfTkFNRSk6IExpa2V3aXNlLgoJKFNJR05BVFVSRV9TUFRSX05BTUUpOiBMaWtld2lzZS4KCShTSUdOQVRVUkVfUE9JTlRFUl9OQU1FKTogTGlrZXdpc2UuCgkoU0lHTkFUVVJFX1BPSU5URVJfTkFNRV9GT1JNQVQpOiBMaWtld2lzZS4KCShTSUdOQVRVUkVfUkVGRVJFTkNFX05BTUUpOiBMaWtld2lzZS4KCShTSUdOQVRVUkVfUkVGRVJORUNFX05BTUVfRk9STUFUKTogTGlrZXdpc2UuCgkoU0lHVEFCTEVfUFRSX1RZUEUpOiBMaWtld2lzZS4KCShTSUdUQUJMRV9OQU1FX0ZPUk1BVCk6IExpa2V3aXNlLgoJKFNJR1RBQkxFX05BTUVfRk9STUFUX0xPTkcpOiBMaWtld2lzZS4KCShTSUdUQUJMRV9UQUdfTkFNRSk6IExpa2V3aXNlLgoJKFNJR1RBQkxFX1ZCX09GRl9OQU1FKTogTGlrZXdpc2UuCgkoU0lHVEFCTEVfVlRfT0ZGX05BTUUpOiBMaWtld2lzZS4KCShmaW5pc2hfYmFzZV9zcGVjaWZpZXJzKTogQ2hhbmdlIHByb3RvdHlwZS4KCShidWlsZF9zaWduYXR1cmVfcG9pbnRlcl90eXBlKTogUmVtb3ZlLgoJKGJ1aWxkX3NpZ25hdHVyZV9yZWZlcmVuY2VfdHlwZSk6IFJlbW92ZS4KCShidWlsZF9zaWduYXR1cmVfcG9pbnRlcl9jb25zdHJ1Y3Rvcik6IFJlbW92ZS4KCShidWlsZF9zaWduYXR1cmVfbWV0aG9kX2NhbGwpOiBSZW1vdmUuCgkoYnVpbGRfb3B0cl9yZWYpOiBMaWtld2lzZS4KCShhcHBlbmRfc2lnbmF0dXJlX2ZpZWxkcyk6IExpa2V3aXNlLgoJKHNpZ25hdHVyZV9lcnJvcik6IExpa2V3aXNlLgoJKiBjYWxsLmMgKGJ1aWxkX3RoaXMpOiBSZW1vdmUgc2lnbmF0dXJlIHN1cHBvcnQuCgkoYnVpbGRfb3Zlcl9jYWxsKTogTGlrZXdpc2UuCgkoYnVpbGRfbmV3X21ldGhvZF9jYWxsKTogTGlrZXdpc2UuCgkqIGNsYXNzLmMgKGFkZF9pbXBsaWNpdGx5X2RlY2xhcmVkX21lbWJlcnMpOiBMaWtld2lzZS4KCShmaW5pc2hfc3RydWN0XzEpOiBMaWtld2lzZS4KCShmaW5pc2hfc3RydWN0KTogTGlrZXdpc2UuCgkqIGN2dC5jIChjcF9jb252ZXJ0X3RvX3BvaW50ZXIpOiBMaWtld2lzZS4KCShjb252ZXJ0X3RvX3BvaW50ZXJfZm9yY2UpOiBMaWtld2lzZS4KCShvY3BfY29udmVydCk6IExpa2V3aXNlLgoJKiBkZWNsLmMgKHNpZ3RhYmxlX2RlY2xfcCk6IFJlbW92ZS4KCShpbml0X2RlY2xfcHJvY2Vzc2luZyk6IFJlbW92ZSBzdXBwb3J0IGZvciBzaWduYXR1cmVzLgoJKGNwX2ZpbmlzaF9kZWNsKTogTGlrZXdpc2UuCgkoZ3Jva2RlY2xhcmF0b3IpOiBMaWtld2lzZS4KCShncm9rcGFybXMpOiBMaWtld2lzZS4KCSh4cmVmX3RhZyk6IExpa2V3aXNlLgoJKHN0YXJ0X2Z1bmN0aW9uKTogTGlrZXdpc2UuCgkoc3RhcnRfbWV0aG9kKTogTGlrZXdpc2UuCgkqIGRlY2wyLmMgKGZpbmlzaF9zaWd0YWJsZV92YXJkZWNsKTogUmVtb3ZlLgoJKGZsYWdfaGFuZGxlX3NpZ25hdHVyZXMpOiBSZW1vdmUuCgkobGFuZ19mX29wdGlvbnMpOiBSZW1vdmUgaGFuZGxlLXNpZ25hdHVyZXMuCgkoZ3Jva2ZpZWxkKTogUmVtb3ZlIHN1cHBvcnQgZm9yIHNpZ25hdHVyZXMuCgkoZ3Jva2JpdGZpZWxkKTogTGlrZXdpc2UuCgkoZmluaXNoX2ZpbGUpOiBMaWtld2lzZS4KCShyZXBhcnNlX2Fic2RjbF9hc19jYXN0cyk6IExpa2V3aXNlLgoJKiBlcnJvci5jIChkdW1wX3R5cGVfcmVhbCk6IExpa2V3aXNlLgoJKGR1bXBfZnVuY3Rpb25fZGVjbCk6IExpa2V3aXNlLgoJKiBmcmllbmQuYyAobWFrZV9mcmllbmRfY2xhc3MpOiBMaWtld2lzZS4KCSogZ3h4LmdwZXJmOiBSZW1vdmUgX19zaWduYXR1cmVfXywgc2lnbmF0dXJlLCBfX3NpZ29mX18sIHNpZ29mLgoJKiBoYXNoLmg6IFJlZ2VuZXJhdGVkLgoJKiBpbml0LmMgKGJ1aWxkX25ld18xKTogUmVtb3ZlIHN1cHBvcnQgZm9yIHNpZ25hdHVyZXMuCgkqIGxhbmctb3B0aW9ucy5oOiBSZW1vdmUgLWZoYW5kbGUtc2lnbmF0dXJlcywKCS1mbm8taGFuZGxlLXNpZ25hdHVyZXMuIAoJKiBsZXguYyAoaW5pdF9wYXJzZSk6IFJlbW92ZSBzdXBwb3J0IGZvciBzaWduYXR1cmVzLgoJKHl5cHJpbnQpOiBMaWtld2lzZS4KCSogbGV4LmggKHJpZCk6IFJlbW92ZSBSSURfU0lHTkFUVVJFLgoJKiBtZXRob2QuYyAoYnVpbGRfZGVjbF9vdmVybG9hZF9yZWFsKTogUmVtb3ZlIHN1cHBvcnQgZm9yCglzaWduYXR1cmVzLiAKCShoYWNrX2lkZW50aWZpZXIpOiBMaWtld2lzZS4KCSogcGFyc2UueSAoYmFzZV9jbGFzcyk6IExpa2V3aXNlLgoJKGJhc2VfY2xhc3MuMSk6IExpa2V3aXNlLgoJKGFjY2Vzc19zcGVjaWZpZXIpOiBMaWtld2lzZS4KCSogc2VhcmNoLmMgKGxvb2t1cF9tZW1iZXIpOiBMaWtld2lzZS4KCSogc2VtYW50aWNzLmMgKGZpbmlzaF9xdWFsaWZpZWRfb2JqZWN0X2NhbGxfZXhwcik6IExpa2V3aXNlLgoJKGZpbmlzaF90ZW1wbGF0ZV90eXBlX3Bhcm0pOiBMaWtld2lzZS4KCShiZWdpbl9jbGFzc19kZWZpbml0aW9uKTogTGlrZXdpc2UuCgkoZmluaXNoX2Jhc2Vfc3BlY2lmaWVyKTogTGlrZXdpc2UuCgkqIHNpZy5jOiBSZW1vdmUuCgkqIHRyZWUuYyAoYnVpbGRfY3BsdXNfbWV0aG9kX3R5cGUpOiBSZW1vdmUgc3VwcG9ydCBmb3Igc2lnbmF0dXJlcy4KCSogdHlwZWNrLmMgKHJlcXVpcmVfY29tcGxldGVfdHlwZSk6IExpa2V3aXNlLgoJKGNfc2l6ZW9mKTogTGlrZXdpc2UuCgkoY19hbGlnbm9mKTogTGlrZXdpc2UuCgkoYnVpbGRfb2JqZWN0X3JlZik6IExpa2V3aXNlLgoJKGJ1aWxkX2NvbXBvbmVudF9yZWYpOiBMaWtld2lzZS4KCShidWlsZF9pbmRpcmVjdF9yZWYpOiBMaWtld2lzZS4KCShidWlsZF9jX2Nhc3QpOiBMaWtld2lzZS4KCShidWlsZF9tb2RpZnlfZXhwcik6IExpa2V3aXNlLgoJKGNvbnZlcnRfZm9yX2luaXRpYWxpemF0aW9uKTogTGlrZXdpc2UuCgkqIHR5cGVjazIuYyAoc2lnbmF0dXJlX2Vycm9yKTogUmVtb3ZlLgoJKHN0b3JlX2luaXRfdmFsdWUpOiBSZW1vdmUgc3VwcG9ydCBmb3Igc2lnbmF0dXJlcy4KCShkaWdlc3RfaW5pdCk6IExpa2V3aXNlLgoJKGJ1aWxkX3hfYXJyb3cpOiBMaWtld2lzZS4KCShidWlsZF9mdW5jdGlvbmFsX2Nhc3QpOiBMaWtld2lzZS4KCSogeHJlZi5jIChHTlVfeHJlZl9kZWNsKTogTGlrZXdpc2UuCgkKMTk5OS0wOC0xMCAgTWFydGluIHYuIExvZXdpcyAgPG1hcnRpbkBtaXJhLmlzZG4uY3MudHUtYmVybGluLmRlPgoKCSogbGV4LmMgKGRvX2lkZW50aWZpZXIpOiBSZW1vdmUgdW5uZWNlc3NhcnkgbG9va3VwIG9mIGNsYXNzIGZpZWxkLgoKMTk5OS0wOC0wOSAgTWFydGluIHYuIExvZXdpcyAgPG1hcnRpbkBtaXJhLmlzZG4uY3MudHUtYmVybGluLmRlPgoKCSogZGVjbDIuYyAoc2V0X2RlY2xfbmFtZXNwYWNlKTogRG8gbm90IGNvbXBsYWluIGFib3V0IG5vbi1tYXRjaGluZwoJZGVjbHMgaWYgcHJvY2Vzc2luZyBhIHRlbXBsYXRlLgoKMTk5OS0wOC0wOSAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGRlY2wuYyAoYnVpbGRfcHRybWVtZnVuY190eXBlKTogSGFuZGxlIHF1YWxpZmllZAoJcG9pbnRlci10by1tZW1iZXIgdHlwZXMgaGVyZS4KCSogdHJlZS5jIChjcF9idWlsZF9xdWFsaWZpZWRfdHlwZV9yZWFsKTogU2ltcGxpZnkgaGFuZGxpbmcgaGVyZS4KCjE5OTktMDgtMDkgIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIGxleC5jIChsYW5nX2lkZW50aWZ5KTogTGlrZXdpc2UuCgoxOTk5LTA4LTA5ICBCZXJuZCBTY2htaWR0ICA8YmVybmRzQGN5Z251cy5jby51az4KCgkqIE1ha2VmaWxlLmluOiBVcGRhdGUgZGVwZW5kZW5jaWVzLgoJKiBjbGFzcy5jIChmaW5pc2hfc3RydWN0XzEpOiBEb24ndCBpbml0aWFsaXplIERFQ0xfU0FWRURfSU5TTlMgd2l0aAoJTlVMTF9SVFguCgkqIGRlY2wuYzogSW5jbHVkZSAiZnVuY3Rpb24uaCIKCShjbGVhbnVwX2xhYmVsLCByZXR1cm5fbGFiZWwpOiBEZWxldGUgZGVjbGFyYXRpb25zLgoJKHN0b3JlX3Bhcm1fZGVjbHMpOiAgRG9uJ3QgaW5pdGlhbGl6ZSBERUNMX1NBVkVEX0lOU05TIHdpdGggTlVMTF9SVFguCgkoZmluaXNoX2Z1bmN0aW9uKTogUmVuYW1lIGxhc3RfcGFybV9pbnNuIHZhcmlhYmxlIHRvCglmbl9sYXN0X3Bhcm1faW5zbi4gIERvbid0IGNvbXBhcmUgREVDTF9TQVZFRF9JTlNOUyB0byBOVUxMX1JUWC4KCSogZGVjbDIuYzogSW5jbHVkZSAiZnVuY3Rpb24uaCIuCgkocnRsX2V4cHJfY2hhaW4pOiBEZWxldGUgZGVjbGFyYXRpb24uCgkqIG1ldGhvZC5jOiBJbmNsdWRlICJmdW5jdGlvbi5oIgoJKiB0cmVlLmMgKGJ1aWxkX3ZiYXNlX3BvaW50ZXJfZmllbGRzKTogRG9uJ3QgaW5pdGlhbGl6ZQoJREVDTF9TQVZFRF9JTlNOUyB3aXRoIE5VTExfUlRYLgoJKiB0eXBlY2suYzogSW5jbHVkZSAiZnVuY3Rpb24uaCIKCjE5OTktMDgtMDkgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIHNlbWFudGljcy5jIChiZWdpbl9mdW5jdGlvbl90cnlfYmxvY2ssIGZpbmlzaF9mdW5jdGlvbl90cnlfYmxvY2ssCglmaW5pc2hfZnVuY3Rpb25faGFuZGxlcl9zZXF1ZW5jZSk6IE5ldyBmbnMuCgkqIHBhcnNlLnkgKGZ1bmN0aW9uX3RyeV9ibG9jayk6IFVzZSB0aGVtLgoJKiBwdC5jIChpbnN0YW50aWF0ZV9kZWNsKTogTGlrZXdpc2UuCgoJKiBjcC10cmVlLmg6IERlY2xhcmUgaW5fZnVuY3Rpb25fdHJ5X2hhbmRsZXIuCgkqIGRlY2wuYzogRGVmaW5lIGl0LgoJKHN0YXJ0X2Z1bmN0aW9uKTogQ2xlYXIgaXQuCgkoc3RydWN0IGNwX2Z1bmN0aW9uLCBwdXNoX2NwX2Z1bmN0aW9uX2NvbnRleHQpOiBTYXZlIGl0LgoJKHBvcF9jcF9mdW5jdGlvbl9jb250ZXh0KTogUmVzdG9yZSBpdC4KCSogcGFyc2UueSAoZnVuY3Rpb25fdHJ5X2Jsb2NrKTogU2V0IGFuZCBjbGVhciBpdC4KCSogZXhjZXB0LmMgKGV4cGFuZF9lbmRfY2F0Y2hfYmxvY2spOiBSZXRocm93IGlmIHdlIHJlYWNoIHRoZSBlbmQKCW9mIGEgZnVuY3Rpb24tdHJ5LWJsb2NrIGhhbmRsZXIgaW4gYSBjdG9yIG9yIGR0b3IuCgkqIHR5cGVjay5jIChjX2V4cGFuZF9yZXR1cm4pOiBDb21wbGFpbiBhYm91dCByZXR1cm5pbmcgZnJvbSBhCglmdW5jdGlvbi10cnktYmxvY2sgaGFuZGxlciBvZiBhIGN0b3IuCgoJKiBwYXJzZS55IChmdW5jdGlvbl90cnlfYmxvY2spOiBDYWxsIGVuZF9wcm90ZWN0X3BhcnRpYWxzCgliZWZvcmUgZXhwYW5kX3N0YXJ0X2FsbF9jYXRjaC4KCjE5OTktMDgtMDggIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIGRlY2wuYyAoc3RydWN0IGJpbmRpbmdfbGV2ZWwpOiBBZGQgZWhfcmVnaW9uIGZpZWxkLgoJKHB1c2hfYmluZGluZ19sZXZlbCk6IFNldCBpdC4KCShkZWZpbmVfbGFiZWwpOiBDb21wbGFpbiBhYm91dCBqdW1waW5nIGludG8gYW4gRUggYmxvY2suCgoJKiBwdHJlZS5jIChwcmludF9sYW5nX3R5cGUpOiBQcmludCB0aGUgcmVhbCB0eXBlIG9mIGEgUE1GLgoJUHJpbnQgd2hhdCBleGNlcHRpb25zIGEgZm4gdHlwZSB0aHJvd3MuCgoxOTk5LTA4LTA3ICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBjbGFzcy5jIChjb3VudF9maWVsZHMsIGFkZF9maWVsZHNfdG9fdmVjKTogQWRkIHN0YXRpYyBwcm90b3R5cGUuCgoJKiBjcC10cmVlLmggKG9wbmFtZV90YWIsIGFzc2lnbm9wX3RhYiwgb3BlcmF0b3JfbmFtZV9zdHJpbmcsCglnZXRfaWRfMiwgY29tcG9zaXRlX3BvaW50ZXJfdHlwZSwgZHVtcF9ub2RlX3RvX2ZpbGUpOiBDb25zdGlmeSBhCgljaGFyKi4KCgkqIGRlY2wuYyAobmFtZWRfbGFiZWxfbGlzdCwgY3BfZmluaXNoX2RlY2wsIGdyb2tkZWNsYXJhdG9yKToKCUNvbnN0aWZ5IGEgY2hhciouCgoJKiBkZWNsMi5jIChmaW5pc2hfc3RhdGljX2RhdGFfbWVtYmVyX2RlY2wsIGdyb2tmaWVsZCk6IENvbnN0aWZ5IGEKCWNoYXIqLgoKCSogZHVtcC5jIChxdWV1ZV9hbmRfZHVtcF9pbmRleCwgZHVtcF9pbnQsIGR1bXBfc3RyaW5nLAoJZHVtcF9zdHJpbmdfZmllbGQsIGRlcXVldWVfYW5kX2R1bXAsIGR1bXBfbm9kZV90b19maWxlKTogQ29uc3RpZnkKCWEgY2hhciouCgkoZHVtcF9zdG10KTogQWRkIHN0YXRpYyBwcm90b3R5cGUuCgoJKiBlcnJmbi5jIChjcF90aGluZyk6IENvbnN0aWZ5IGEgY2hhciouCgoJKiBlcnJvci5jIChkdW1wX3VuYXJ5X29wLCBkdW1wX2JpbmFyeV9vcCwgYWdncl92YXJpZXR5LAoJZHVtcF9hZ2dyX3R5cGUsIGR1bXBfZ2xvYmFsX2lvcmQsIGR1bXBfZGVjbCwgZHVtcF9mdW5jdGlvbl9uYW1lLAoJZHVtcF9leHByKTogQ29uc3RpZnkgYSBjaGFyKi4KCgkqIGxleC5jIChleHRlbmRfdG9rZW5fYnVmZmVyX3RvLCBwcmFnbWFfZ2V0YywgcHJhZ21hX3VuZ2V0YywKCXJlYWRfbGluZV9udW1iZXIpOiBBZGQgc3RhdGljIHByb3RvdHlwZS4KCShvcG5hbWVfdGFiLCBhc3NpZ25vcF90YWIsIG9wZXJhdG9yX25hbWVfc3RyaW5nKTogQ29uc3RpZnkgYSBjaGFyKi4KCShyZWFsX3l5bGV4KTogTW92ZSBsYWJlbCBgbGV0dGVyJyBpbnRvIHRoZSBzY29wZSB3aGVyZSBpdCBpcyB1c2VkLgoKCSogbWV0aG9kLmMgKGJ1aWxkX21hbmdsZWRfdGVtcGxhdGVfcGFybV9pbmRleCwgYnVpbGRfb3ZlcmxvYWRfaW50LAoJYnVpbGRfZGVjbF9vdmVybG9hZF9yZWFsLCBnZXRfaWRfMik6IENvbnN0aWZ5IGEgY2hhciouCgoJKiBzZWFyY2guYyAoY2hlY2tfZmluYWxfb3ZlcnJpZGVyKTogTWFrZSBzdGF0aWMuCgoJKiB0eXBlY2suYyAoY29tcG9zaXRlX3BvaW50ZXJfdHlwZSk6IENvbnN0aWZ5IGEgY2hhciouCgoxOTk5LTA4LTA2ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBwdC5jIChtYXliZV9nZXRfdGVtcGxhdGVfZGVjbF9mcm9tX3R5cGVfZGVjbCk6IE1ha2Ugc3VyZSB0aGF0Cgl3ZSdyZSBsb29raW5nIGF0IGEgY2xhc3MuCgoJKiBkZWNsLmMgKGxvb2t1cF9uYW1lX3JlYWwpOiBTZXQgdGhlIGNvbXBsYWluIGZsYWcgaWYgd2UncmUKCWxvb2tpbmcgZm9yIGEgbmFtZXNwYWNlIG1lbWJlci4KCgkqIGxleC5jIChyZWFsX3l5bGV4KTogV2UgY2FuIGhhdmUgYSBudW1iZXIgd2l0aCBubyBkaWdpdHMuCgoJKiBjdnQuYyAoY3BfY29udmVydF90b19wb2ludGVyKTogRG9uJ3QgZm9yY2UgcG1mIGNvbnZlcnNpb25zLgoKCSogc2VhcmNoLmMgKGJpbmZvX2Zyb21fdmJhc2UpOiBOZXcgZm4uCgkqIGNwLXRyZWUuaDogRGVjbGFyZSBpdC4KCSogY3Z0LmMgKGNwX2NvbnZlcnRfdG9fcG9pbnRlcik6IFVzZSBpdCB0byBkaWFnbm9zZSBjb252ZXJzaW9uCglmcm9tIHBvaW50ZXIgdG8gbWVtYmVyIG9mIHZpcnR1YWwgYmFzZS4gIAoJKiB0eXBlY2suYyAoZ2V0X2RlbHRhX2RpZmZlcmVuY2UpOiBMaWtld2lzZS4KCjE5OTktMDgtMDYgIEFsZXhhbmRyZSBPbGl2YSAgPG9saXZhQGRjYy51bmljYW1wLmJyPgoKCSogcHQuYyAodHN1YnN0KTogVXNlIGJ1aWxkX2luZGV4X3R5cGUgdG8gYnVpbGQgaW4tdGVtcGxhdGUgYXJyYXkKCWluZGV4IHR5cGUuICBGaXhlcyBnKysub2xpdmEvZHdhcmYxLkMuCgkqIGRlY2wuYyAoZ3Jva2RlY2xhcmF0b3IpOiBMaWtld2lzZSwganVzdCBmb3IgY29uc2lzdGVuY3ksIGFzIGl0Cglkb2Vzbid0IHNlZW0gdG8gdHJpZ2dlciB0aGUgYnVnIHdpdGhvdXQgaXQuCgoxOTk5LTA4LTA2ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiB0eXBlY2syLmMgKGFkZF9leGNlcHRpb25fc3BlY2lmaWVyKTogVXNlIGNvbXBsZXRlX3R5cGUuCgoxOTk5LTA4LTA2ICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogZXJyb3IuYyAoZHVtcF9leHByKTogSGFuZGxlIEVYQUNUX0RJVl9FWFBSLgoJKGR1bXBfYmluYXJ5X29wKTogQnVsbGV0cHJvb2YuCgkqIGxleC5jIChpbml0X3BhcnNlKTogU2V0IG9wbmFtZV90YWJbRVhBQ1RfRElWX0VYUFJdLgoJKiB0cmVlLmMgKHNlYXJjaF90cmVlKTogRG9uJ3QgZW51bWVyYXRlIGFsbCB0aGUgbm9kZXMgb2YgY2xhc3NlcwoJYDEnLCBgMicsIGFuZCBgPCc7IGhhbmRsZSB0aGVtIGdlbmVyaWNhbGx5LiAgRG9uJ3QgYmUgc29ycnkgYWJvdXQKCSJ1bnJlY29nbml6ZWQgdHJlZSBjb2RlcyI7IGp1c3QgYWJvcnQuCgkobm9fbGlua2FnZV9jaGVjayk6IERvbid0IGRvIGxpbmthZ2UgY2hlY2tzIGZvciB0ZW1wbGF0ZXMuCgkKCSogdHJlZS5jIChjcF9idWlsZF9xdWFsaWZpZWRfdHlwZV9yZWFsKTogSGFuZGxlCglwb2ludGVyLXRvLW1lbWJlci1mdW5jdGlvbiB0eXBlcyBjb3JyZWN0bHkuCgoxOTk5LTA4LTA1ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBkZWNsLmMgKHB1c2hkZWNsKTogT25seSBnaXZlIGFuIGVycm9yIGZvciBzaGFkb3dpbmcgYSBwYXJtIAoJZnJvbSAqdGhpcyogZnVuY3Rpb24uCgpUaHUgQXVnICA1IDAyOjQwOjQyIDE5OTkgIEplZmZyZXkgQSBMYXcgIChsYXdAY3lnbnVzLmNvbSkKCgkqIHR5cGVjazIuYzogVXBkYXRlIFVSTHMgYW5kIG1haWwgYWRkcmVzc2VzLgoKMTk5OS0wOC0wNCAgTmF0aGFuIFNpZHdlbGwgIDxuYXRoYW5AYWNtLm9yZz4KCgkqIGNwLXRyZWUuaCAoZW1wdHlfZXhjZXB0X3NwZWMpOiBOZXcgZ2xvYmFsIHZhci4KCShjb21wZXhjZXB0dHlwZXMpOiBSZW1vdmUgcHJvdG90eXBlLgoJKGNvbXBfZXhjZXB0X3NwZWNzKTogUHJvdG90eXBlIG5ldyBnbG9iYWwgZnVuY3Rpb24uCgkoYWRkX2V4Y2VwdGlvbl9zcGVjaWZpZXIpOiBQcm90b3R5cGUgbmV3IGdsb2JhbCBmdW5jdGlvbi4KCSogZGVjbC5jIChlbXB0eV9leGNlcHRfc3BlYyk6IERlZmluZSBuZXcgZ2xvYmFsIHZhci4KCShkdXBsaWNhdGVfZGVjbHMpOiBVc2UgY29tcF9leGNlcHRfc3BlY3MsIHJld29yZCBlcnJvciBtZXNzYWdlLgoJKGluaXRfZGVjbF9wcm9jZXNzaW5nKTogSW5pdGlhbGl6ZSBlbXB0eV9leGNlcHRfc3BlYy4KCUFkanVzdCBidWlsZF9leGNlcHRpb25fdmFyaWFudCBjYWxscy4KCSogcGFyc2UueSAoZXhjZXB0aW9uX3NwZWNpZmljYXRpb25fb3B0KTogVXNlIGVtcHR5X2V4Y2VwdF9zcGVjLgoJKGFuc2lfcmFpc2VfaWRlbnRpZmllcik6IENhbGwgY2hlY2tfZm9yX25ld190eXBlLgoJKGFuc2lfcmFpc2VfaWRlbnRpZmllcnMpOiBVc2UgYWRkX2V4Y2VwdGlvbl9zcGVjaWZpZXIuCgkqIHB0LmMgKHRzdWJzdCk6IFVzZSBhZGRfZXhjZXB0aW9uX3NwZWNpZmllciB0byBidWlsZCBleGNlcHRpb24KCXNwZWNpZmllci4KCSogc2VhcmNoLmMgKGNoZWNrX2ZpbmFsX292ZXJyaWRlcik6IE5ldyBzdGF0aWMgZnVuY3Rpb24sIGJyb2tlbgoJb3V0IG9mIGdldF9tYXRjaGluZ192aXJ0dWFsLiBDaGVjayB0aHJvdyBzcGVjaWZpZXJzLCByZXdvcmQKCWRpYWdub3N0aWNzLgoJKGdldF9tYXRjaGluZ192aXJ0dWFsKTogVXNlIGNoZWNrX2ZpbmFsX292ZXJyaWRlci4KCSogdHJlZS5jIChidWlsZF9leGNlcHRpb25fdmFyaWFudCk6IFVzZSBjb21wX2V4Y2VwdF9zcGVjcy4KCSogdHlwZWNrLmMgKGNvbXBleGNlcHR0eXBlcyk6IFJlbW92ZS4KCShjb21wX2V4Y2VwdF90eXBlcyk6IE5ldyBzdGF0aWMgZnVuY3Rpb24sIGhlbHBlciBmb3IKCWNvbXBfZXhjZXB0X3NwZWNzLiBDb21wYXJlIHR3byB0eXBlcyBhcyBleGNlcHRpb24gc3BlY2lmaWVycy4KCShjb21wX2V4Y2VwdF9zcGVjcyk6IE5ldyBnbG9iYWwgZnVuY3Rpb24sIGNvbXBhcmUgdHdvIGV4Y2VwdGlvbgoJc3BlY2lmaWVycy4KCShjb21wdHlwZXMpOiBBZGp1c3QgZm9yIGNvbXBfZXhjZXB0X3NwZWNzLgoJKiB0eXBlY2syLmMgKGFkZF9leGNlcHRpb25fc3BlY2lmaWVyKTogTmV3IGdsb2JhbCBmdW5jdGlvbi4KCQoJKiBjbGFzcy5jIChjaGVja19mb3Jfb3ZlcnJpZGUpOiBSZXdvcmQgZXJyb3IgbWVzc2FnZS4KCjE5OTktMDgtMDMgIE5hdGhhbiBTaWR3ZWxsICA8bmF0aGFuQGFjbS5vcmc+CgoJKiBjYWxsLmMgKGNvbnZlcnRfYXJnX3RvX2VsbGlwc2lzKTogVXNlIHBvZF90eXBlX3AuCgkqIGNwLXRyZWUuaCAoc3RydWN0IGxhbmdfdHlwZSk6IEFkZGVkIG5vbl9wb2RfY2xhc3MgZmxhZy4KCShDTEFTU1RZUEVfTk9OX1BPRF9QKTogTmV3IG1hY3JvIHRvIGFjY2VzcyBpdC4KCSogY2xhc3MuYyAoZmluaXNoX3N0cnVjdF8xKTogRGV0ZXJtaW5lIG5vbi1QT0RuZXNzLgoJQ2hlY2sgZm9yIGFycmF5cyBvZiBwb2ludGVycyAoLVdlZmZjKyspLgoJUmVtb3ZlIGFycmF5IGluc3BlY3Rpb24gZHVwbGljYXRlZCBjb2RlLgoJKiB0cmVlLmMgKHBvZF90eXBlX3ApOiBEZXRlY3Qgbm9uLXBvZCBub24tYWdncmVnYXRlIHR5cGVzLgoJVXNlIENMQVNTVFlQRV9OT05fUE9EX1AuCgoxOTk5LTA4LTAzICBOYXRoYW4gU2lkd2VsbCAgPG5hdGhhbkBhY20ub3JnPgoKCSogY2xhc3MuYyAoZHVwbGljYXRlX3RhZ19lcnJvcik6IFByZXNlcnZlIHRlbXBsYXRlIGluZm9ybWF0aW9uLgoKMTk5OS0wOC0wMyAgTmF0aGFuIFNpZHdlbGwgIDxuYXRoYW5AYWNtLm9yZz4KCgkqIGRlY2wuYyAoc3RhcnRfZW51bSk6IFNob3cgbG9jYXRpb24gb2YgcHJldmlvdXMgZGVmaW5pdGlvbi4KCSogcGFyc2UueSAoZW51bWxpc3Rfb3B0KTogTmV3IHJlZHVjdGlvbi4KCShzdHJ1Y3RzcCk6IFNpbXBsaWZ5IGVudW0gcnVsZXMgdG8gdXNlIGVudW1saXN0X29wdC4KCjE5OTktMDgtMDMgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIGxleC5jICh5eXByaW50KTogSGFuZGxlIFBGVU5DTkFNRS4KCgkqIGRlY2wyLmMgKGJ1aWxkX2V4cHJfZnJvbV90cmVlLCBjYXNlIE1FVEhPRF9DQUxMX0VYUFIpOiBPbmx5CglidWlsZF9leHByX2Zyb21fdHJlZSBvbiB0aGUgYXJncyBvZiBhIFRFTVBMQVRFX0lEX0VYUFIuCgoxOTk5LTA4LTAzICBNdW1pdCBLaGFuICA8a2hhbkB4cmF5bGl0aC53aXNjLmVkdT4KCgkqIGRlY2wuYyAoc3RhcnRfZGVjbCk6IFNldCBhdHRyaWJ1dGVzIGJlZm9yZSBkdXBsaWNhdGVfZGVjbHMgY2FsbC4KCjE5OTktMDgtMDIgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBNYWtlLWxhbmcuaW4gKENYWF9TUkNTKTogQWRkIGR1bXAuYy4KCSogTWFrZWZpbGUuaW4gKENYWF9PQkpTKTogQWRkIGR1bXAuby4KCShkdW1wLm8pOiBOZXcgdGFyZ2V0LgoJKiBjcC10cmVlLmggKERFQ0xfQ09OVl9GTl9QKTogRG9jdW1lbnQuCgkoREVDTF9PVkVSTE9BREVEX09QRVJBVE9SX1ApOiBOZXcgZnVuY3Rpb24uCgkoVFlQRV9QVFJNRU1fQ0xBU1NfVFlQRSk6IE5ldyBtYWNyby4KCShUWVBFX1BUUk1FTV9QT0lOVEVEX1RPX1RZUEUpOiBMaWtld2lzZS4KCShQVFJNRU1fQ1NUX0NMQVNTKTogVXNlIFRZUEVfUFRSTUVNX0NMQVNTX1RZUEUuCgkoQVNNX1ZPTEFUSUxFX1ApOiBOZXcgbWFjcm8uCgkoU1RNVF9MSU5FTk8pOiBMaWtld2lzZS4KCShjcF9uYW1lc3BhY2VfZGVjbHMpOiBOZXcgZnVuY3Rpb24uCgkoZHVtcF9ub2RlX3RvX2ZpbGUpOiBOZXcgZnVuY3Rpb24uCgkqIGRlY2wuYyAoY3BfbmFtZXNwYWNlX2RlY2xzKTogTmV3IGZ1bmN0aW9uLgoJKHdhbGtfbmFtZXNwYWNlc19yKTogVXNlIGl0LgoJKHdyYXB1cF9nbG9iYWxzX2Zvcl9uYW1lc3BhY2UpOiBMaWtld2lzZS4KCSogZGVjbDIuYyAoZmxhZ19kdW1wX3RyYW5zbGF0aW9uX3VuaXQpOiBOZXcgdmFyaWFibGUuCgkobGFuZ19kZWNvZGVfb3B0aW9uKTogSGFuZGxlIC1mZHVtcC10cmFuc2xhdGlvbi11bml0LgoJKGZpbmlzaF9maWxlKTogSWYgZmxhZ19kdW1wX3RyYW5zbGF0aW9uX3VuaXQgaXMgc2V0LCBkdW1wIHRoZQoJdHJhbnNsYXRpb24gdW5pdC4KCSogZHVtcC5jOiBOZXcgZmlsZS4KCSogbGFuZy1vcHRpb25zLmg6IEFkZCAtZmR1bXAtdHJhbnNsYXRpb24tdW5pdC4KCSogcHQuYyAodHN1YnN0X3RlbXBsYXRlX3Bhcm1zKTogUm9idXN0aWZ5LgoJKHRzdWJzdF9kZWNsKTogVXNlIERFQ0xfT1ZFUkxPQURFRF9PUEVSQVRPUl9QLgoJKHRzdWJzdF9leHByKTogVXNlIFNUTVRfTElORU5PLgoJKiBzZW1hbnRpY3MuYyAoZmluaXNoX2FzbV9zdG10KTogRWxpbWluYXRlIGR1cGxpY2F0ZSBjb2RlLiAgQ2hlY2sKCWZvciBpbnZhbGlkIGN2LXF1YWxpZmllcnMgZXZlbiB3aGlsZSBidWlsZGluZyB0ZW1wbGF0ZXMuCgkKMTk5OS0wOC0wMiAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAY3lnbnVzLmNvbT4KCgkqIGNhbGwuYzogSW5jbHVkZSBkZWZhdWx0cy5oIGluc3RlYWQgb2YgZXhwci5oLgoJKiBkZWNsLmM6IExpa2V3aXNlLgoJKiBwdC5jOiBMaWtld2lzZS4KCSogdHlwZWNrLmM6IEluY2x1ZGUgZGVmYXVsdHMuaC4KCjE5OTktMDgtMDIgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBsZXguYyAoZXJyb3Jjb3VudCwgc29ycnljb3VudCk6IERvbid0IGRlY2xhcmUuCgkqIHJlcG8uYyAoZXJyb3Jjb3VudCwgc29ycnljb3VudCk6IExpa2V3aXNlLgoJKiB0eXBlY2syLmMgKGVycm9yY291bnQsIHNvcnJ5Y291bnQpOiBMaWtld2lzZS4KCjE5OTktMDgtMDIgIEpha3ViIEplbGluZWsgIDxqakB1bHRyYS5saW51eC5jej4KCgkqIGNhbGwuYyAoY29udmVydF9kZWZhdWx0X2FyZywgYnVpbGRfb3Zlcl9jYWxsKTogQ2hhbmdlIGFsbCB1c2VzIG9mCglQUk9NT1RFX1BST1RPVFlQRVMsIHNvIHRoYXQgaXQgdGVzdHMgaXQgYXMgYSBDIGV4cHJlc3Npb24uCglFbnN1cmUgZXhwci5oIGlzIGluY2x1ZGVkLgoJKiBkZWNsLmMgKGdyb2twYXJhbXMpOiBEaXR0by4KCSogcHQuYyAodHN1YnN0X2RlY2wpOiBEaXR0by4KCSogdHlwZWNrLmMgKGNvbnZlcnRfYXJndW1lbnRzKTogRGl0dG8uCgoxOTk5LTA4LTAyICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBjbGFzcy5jIChtYXJrX292ZXJyaWRlcnMpOiBGaXggb3JkZXIgb2YgYXJncyB0byBvdmVycmlkZXMuCgkod2Fybl9oaWRkZW4pOiBMaWtld2lzZS4gIEZpeCBmb3IgaGF2aW5nIHZpcnR1YWwgYW5kIG5vbi12aXJ0dWFsCglmdW5jdGlvbnMgd2l0aCB0aGUgc2FtZSBuYW1lLgoKMTk5OS0wOC0wMiAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAY3lnbnVzLmNvbT4KCgkqIGNwLXRyZWUuaCAoVFlQRV9QVFJNRU1GVU5DX1ApOiBDaGVjayBUWVBFX0xBTkdfU1BFQ0lGSUMgbm9uLW51bGwuCgoxOTk5LTA4LTAxICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogY2FsbC5jIChidWlsZF9jb25kaXRpb25hbF9leHByKTogRml4IHR5cG8gaW4gY29tbWVudC4KCjE5OTktMDgtMDEgIEJlcm5kIFNjaG1pZHQgIDxiZXJuZHNAY3lnbnVzLmNvLnVrPgoKCSogZGVjbC5jIChmaW5pc2hfc3RtdCk6IERvbid0IGRlY2xhcmUgYW5kIHRlc3QgY29uZF9zdGFjaywgbG9vcF9zdGFjaywKCWNhc2Vfc3RhY2s7IHVzZSBpbl9jb250cm9sX3pvbmVfcC4KCSogdHlwZWNrLmMgKGNfZXhwYW5kX3JldHVybik6IExpa2V3aXNlLgoKMTk5OS0wNy0zMSAgQmVybmQgU2NobWlkdCAgPGJlcm5kc0BjeWdudXMuY28udWs+CgoJKiBleGNlcHQuYyAoY2F0Y2hfY2xhdXNlcyk6IERlbGV0ZSBkZWNsYXJhdGlvbi4KCjE5OTktMDctMzAgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjYWxsLmMgKGJ1aWxkX2NvbmRpdGlvbmFsX2V4cHIpOiBDYWxsIGNvbnZlcnRfZnJvbV9yZWZlcmVuY2UgdG8KCWF2b2lkIHJlZmVyZW5jZS9ub24tcmVmZXJlbmNlIHR5cGUgY29uZnVzaW9uLiAgRml4IHR5cG8uCgoxOTk5LTA3LTMwICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEBjeWdudXMuY29tPgoKCSogdHlwZWNrMi5jIChpbml0aWFsaXplcl9jb25zdGFudF92YWxpZF9wKTogTW92ZWQgdG8gYy1jb21tb24uYy4KCSogY3AtdHJlZS5oIChpbml0aWFsaXplcl9jb25zdGFudF92YWxpZF9wKTogUmVtb3ZlLgoKMTk5OS0wNy0yOCAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGNhbGwuYyAoY29uZGl0aW9uYWxfY29udmVyc2lvbik6IERvbid0IGJ1aWxkIEJBU0VfQ09OVnMgZm9yCgljb252ZXJzaW9ucyBiZXR3ZWVuIHRoaW5ncyB0aGF0IGhhdmUgdGhlIHNhbWUgdHlwZS4KCShidWlsZF9jb25kaXRpb25hbF9leHByKTogVHdlYWsuCgkoY29udmVydF9saWtlKTogU29tZSBCQVNFX0NPTlZzIHJlYWxseSBkbyByZXF1aXJlIHRoZSBnZW5lcmF0aW9uCglvZiBjb2RlLgoJCgkqIGluaXQuYyAocGVyZm9ybV9tZW1iZXJfaW5pdCk6IERvbid0IGdvIHRocm91Z2ggYnVpbGRfbW9kaWZ5X2V4cHIKCWZvciBzaW1wbGUgaW5pdGlhbGl6YXRpb25zLgoKMTk5OS0wNy0yNyAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogY3AtdHJlZS5oIChERUNMX1ZJUlRVQUxfQ09OVEVYVCk6IE5ldyBtYWNyby4KCSogdHlwZWNrLmMgKGV4cGFuZF9wdHJtZW1mdW5jX2NzdCk6IENhbGN1bGF0ZSBkZWx0YSBjb3JyZWN0bHkgZm9yCgl2aXJ0dWFsIGZ1bmN0aW9ucyBhbmQgTUkuICBTaW1wbGlmeS4KCgkqIG1ldGhvZC5jOiBSZW1vdmUgcHJvdG90eXBlIGZvciBsYXJnZXN0X3VuaW9uX21lbWJlci4KCSogcHQuYyAoZGV0ZXJtaW5lX3NwZWNpYWxpemF0aW9uKTogRml4IHVuaW5pdGlhbGl6ZWQgd2FybmluZy4KCSogbGV4LmMgKHJlYWxfeXlsZXgpOiBMaWtld2lzZS4KCjE5OTktMDctMjcgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjbGFzcy5jIChvdmVycmlkZV9vbmVfdnRhYmxlKTogQWRqdXN0IHRoZSB1c2Ugb2YgQklORk9fVklSVFVBTFMKCWhlcmUgdG9vLgoKCSogY3AtdHJlZS5oIChCSU5GT19WSVJUVUFMUyk6IERvY3VtZW50IG5ldyBmb3JtYXQuCgkqIGNsYXNzLmMgKG1vZGlmeV9vbmVfdnRhYmxlKTogQ2hhbmdlIHByb3RvdHlwZSBhY2NvcmRpbmdseS4KCShtb2RpZnlfYWxsX3Z0YWJsZXMpOiBMaWtld2lzZS4KCShtb2RpZnlfYWxsX2RpcmVjdF92dGFibGVzKTogTGlrZXdpc2UuCgkobW9kaWZ5X2FsbF9pbmRpcmVjdF92dGFibGVzKTogTGlrZXdpc2UuCgkoYnVpbGRfdnRhYmxlX2VudHJ5X2Zvcl9mbik6IE5ldyBmdW5jdGlvbi4KCShzZXRfcnR0aV9lbnRyeSk6IFNpbXBsaWZ5IGZvciBuZXcgQklORk9fVklSVFVBTFMgZm9ybWF0LgoJKG1vZGlmeV92dGFibGVfZW50cnkpOiBMaWtld2lzZS4KCShhZGRfdmlydHVhbF9mdW5jdGlvbik6IExpa2V3aXNlLgoJKGJ1aWxkX3Z0YmxfaW5pdGlhbGl6ZXIpOiBOZXcgZnVuY3Rpb24uCgkoZmluaXNoX3Z0YmxzKTogU2ltcGxpZnkgZm9yIG5ldyBCSU5GT19WSVJUVUFMUyBmb3JtYXQuCgkoZml4dXBfdnRhYmxlX2RlbHRhczEpOiBMaWtld2lzZS4KCShmaXh1cF92dGFibGVfZGVsdGFzKTogTGlrZXdpc2UuCgkob3ZlcnJpZGVfb25lX3Z0YWJsZSk6IExpa2V3aXNlLgoJKGZpbmlzaF9zdHJ1Y3RfMSk6IExpa2V3aXNlLgoKCSogZXJyb3IuYyAoZHVtcF9leHByKTogTGlrZXdpc2UuCgkqIHNlYXJjaC5jIChnZXRfYWJzdHJhY3RfdmlydHVhbHNfMSk6IExpa2V3aXNlLgoJKGdldF9hYnN0cmFjdF92aXJ0dWFscyk6IExpa2V3aXNlLgoJKGV4cGFuZF91cGNhc3RfZml4dXBzKTogTGlrZXdpc2UuCgkqIHRyZWUuYyAoZGVidWdfYmluZm8pOiBMaWtld2lzZS4KCSogZGVjbDIuYyAobWFya192dGFibGVfZW50cmllcyk6IERvbid0IGJhc2ggYWJzdHJhY3QgdmlydHVhbHMgdG8KCV9fcHVyZV92aXJ0dWFsIGhlcmUuCgkKMTk5OS0wNy0yNiAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIHRyZWUuYyAoYnVpbGRfY3BsdXNfbmV3KTogQWRqdXN0IGNhbGwgdG8gYWJzdHJhY3RfdmlydHVhbHNfZXJyb3IKCWFzIHBlciAxOTk5LTA3LTI2IGNoYW5nZS4KCgkqIHR5cGVjay5jIChjX3NpemVvZik6IERvbid0IGFsbG93IG5vbi1zdGF0aWMgZGF0YSBtZW1iZXJzLgoJKGV4cHJfc2l6ZW9mKTogTGlrZXdpc2UuCgoxOTk5LTA3LTI2ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBpbnB1dC5jIChmZWVkX2lucHV0KTogT25seSB0b3VjaCBsaW5lbm8gYW5kIGlucHV0X2ZpbGVuYW1lCglpZiAhVVNFX0NQUExJQi4gIFNhdmUgdGhlIG9sZCB2YWx1ZXMgYmVmb3JlIHNldHRpbmcgdGhlIG5ldyBvbmVzLgoKCSogaW5wdXQuYyAoZmVlZF9pbnB1dCk6IEFkZCBmaWxlLCBsaW5lIHBhcm1zLgoJKiBsZXguYyAoYmVnaW5fZGVmaW5pdGlvbl9vZl9pbmNsYXNzX2lubGluZSwgZmVlZF9kZWZhcmcpOiBBZGp1c3QuCgkocmVhbF95eWxleCk6IENoZWNrIGxpbmVtb2RlIGJlZm9yZSBpbnB1dF9yZWRpcmVjdGVkKCkuCgoJKiB0eXBlY2suYyAoY19leHBhbmRfcmV0dXJuKTogRG93bmdyYWRlIHBlZHdhcm4gYWJvdXQgcmV0dXJuaW5nIE5VTEwKCWZyb20gb3AgbmV3IHRvIHdhcm5pbmcuCgoxOTk5LTA3LTI2ICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogY3AtdHJlZS5oIChuY3BfY29udmVydCk6IFJlbmFtZSB0byBwZXJmb3JtX2ltcGxpY2l0X2NvbnZlcnNpb24uCgkqIGNhbGwuYzogQWxsIHVzZXMgY2hhbmdlZC4KCSogdHlwZWNrLmM6IExpa2V3aXNlLgoKMTk5OS0wNy0yNiAgTmF0aGFuIFNpZHdlbGwgIDxuYXRoYW5AYWNtLm9yZz4KCgkqIGV4Y2VwdGlvbi5jYyAoX19jcGx1c190eXBlX21hdGNoZXIpOiBNYXRjaCBfX2VoX21hdGNoZXIKCXByb3RvdHlwZS4KCjE5OTktMDctMjYgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjcC10cmVlLmggKENQX0lOVEVHUkFMX1RZUEVfUCk6IE5ldyBtYWNyby4KCShBUklUSE1FVElDX1RZUEVfUCk6IEFkanVzdCBkZWZpbml0aW9uIGZvciBzdGFuZGFyZCBjb25mb3JtYW5jZS4KCShzdHJpcF90b3BfcXVhbHMpOiBEZWNsYXJlLgoJKG5jcF9jb252ZXJ0KTogTGlrZXdpc2UuCgkodHlwZV9hZnRlcl91c3VhbF9hcml0aG1ldGljX2NvbnZlcnNpb25zKTogTGlrZXdpc2UuCgkoY29tcG9zaXRlX3BvaW50ZXJfdHlwZSk6IExpa2V3aXNlLgoJKiBjYWxsLmMgKHN0cmlwX3RvcF9xdWFscyk6IERvbid0IG1ha2UgaXQgc3RhdGljLgoJKHByb21vdGVkX2FyaXRobWV0aWNfdHlwZV9wKTogTmV3IGZ1bmN0aW9uLgoJKGNvbmRpdGlvbmFsX2NvbnZlcnNpb24pOiBMaWtld2lzZS4KCShudWxsX3B0cl9jc3RfcCk6IEFsbG93IGBmYWxzZScgYXMgYSBOVUxMIHBvaW50ZXIgY29uc3RhbnQuCgkoc3RhbmRhcmRfY29udmVyc2lvbik6IFVzZSBzYW1lX3R5cGVfcC4gIERvbid0IGJ1aWxkIEJBU0VfQ09OVnMKCWZvciBjb252ZXJ0aW5nIGEgdHlwZSB0byBpdHNlbGYuCgkocmVmZXJlbmNlX2JpbmRpbmcpOiBIb25vciBMT09LVVBfTk9fVEVNUF9CSU5ELgoJKGltcGxpY2l0X2NvbnZlcnNpb24pOiBNYWtlIHN1cmUgdGhlIGZyb20gYW5kIHRvIHR5cGVzIGFyZQoJY29tcGxldGUuCgkoYWRkX2J1aWx0aW5fY2FuZGlkYXRlKTogQ29ycmVjdCBoYW5kbGluZyBvZiA/OiBvcGVyYXRvci4KCShhZGRfYnVpbHRpbl9jYW5kaWRhdGVzKTogSW1wcm92ZSBkb2N1bWVudGF0aW9uLgoJKGJ1aWxkX2NvbmRpdGlvbmFsX2V4cHIpOiBOZXcgZnVuY3Rpb24uCgkoY2FuX2NvbnZlcnQpOiBJbXBsZW1lbnQgaW4gdGVybXMgb2YgY2FuX2NvbnZlcnRfYXJnLgoJKG5jcF9jb252ZXJ0KTogTmV3IGZ1bmN0aW9uLgoJKiB0eXBlY2suYyAodHlwZV9hZnRlcl91c3VhbF9hcml0aG1ldGljX2NvbnZlcnNpb25zKTogTmV3CglmdW5jdGlvbiwgc3BsaXQgb3V0IGZyb20gY29tbW9uX3R5cGUuCgkoY29tcG9zaXRlX3BvaW50ZXJfdHlwZSk6IE5ldyBmdW5jdGlvbiwgc3BsaXQgb3V0IGZyb20KCWJ1aWxkX2NvbmRpdGlvbmFsX2V4cHIuCgkoY29tbW9uX3R5cGUpOiBVc2UgdHlwZV9hZnRlcl91c3VhbF9hcml0aG1ldGljX2NvbnZlcnNpb25zLgoJUmVtb3ZlIHJlZHVuZGFudCBhdHRyaWJ1dGUgbWVyZ2luZy4KCShjb21wdHlwZXMpOiBUaWR5LiAgSGFuZGxlIENPTVBMRVhfVFlQRS4KCShidWlsZF9iaW5hcnlfb3Bfbm9kZWZhdWx0KTogVXNlIG51bGxfcHRyX2NzdF9wLgoJKGJ1aWxkX2NvbmRpdGlvbmFsX2V4cHIpOiBSZW1vdmUuCgkoY29udmVydF9mb3JfYXNzaWdubWVudCk6IFVzZSBuZXcgY29udmVyc2lvbiBmdW5jdGlvbnMuCgkKCSogY3AtdHJlZS5oIChhYnN0cmFjdF92aXJ0dWFsc19lcnJvcik6IENoYW5nZSBkZWNsYXJhdGlvbi4KCSogdHlwZWNrMi5jIChhYnN0cmFjdF92aXJ0dWFsc19lcnJvcik6IENoZWNrIHRvIHNlZSBpZiBhbiBlcnJvcgoJb2NjdXJyZWQsIGFuZCByZXR1cm4gYSBib29sZWFuIHZhbHVlIGFjY29yZGluZ2x5LgoJKGJ1aWxkX2Z1bmN0aW9uYWxfY2FzdCk6IEFkanVzdCBhY2NvcmRpbmdseS4KCSogY2xhc3MuYyAoZmluaXNoX3N0cnVjdF8xKTogTGlrZXdpc2UuCgkqIGN2dC5jIChvY3BfY29udmVydCk6IExpa2V3aXNlLgoJKiBkZWNsLmMgKGNwX2ZpbmlzaF9kZWNsKTogTGlrZXdpc2UuCgkoZ3Jva3BhcmFtcyk6IExpa2V3aXNlLgoJKGdyb2tfb3BfcHJvcGVydGllcyk6IExpa2V3aXNlLgoJKHN0YXJ0X2Z1bmN0aW9uKTogTGlrZXdpc2UuCgkqIGluaXQuYyAoYnVpbGRfbmV3XzEpOiBMaWtld2lzZS4KCgkqIHB0LmMgKHVuaWZ5KTogRG9uJ3QgZ2V0IGNvbmZ1c2VkIGJ5IHBvaW50ZXJzLXRvLW1lbWJlciBmdW5jdGlvbnMuCgoJKiBzZWFyY2guYyAoYnVpbGRfY3BsdXNfbmV3KTogUm9idXN0aWZ5LgoJCjE5OTktMDctMjQgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgoJKiBneHguZ3BlcmYgKF9fYnVpbHRpbl92YV9hcmcpOiBOZXcuCgkqIHBhcnNlLnkgKFZBX0FSRyk6IE5ldyB0b2tlbi4KCSh1bmFyeV9leHByKTogUmVjb2duaXplIGl0LgoKU3VuIEp1bCAyNSAxNToyNDoyMSAxOTk5ICBKZWZmcmV5IEEgTGF3ICAobGF3QGN5Z251cy5jb20pCgoJKiBnKytGQVEudGV4aTogRGVsZXRlZCBwZXIgSm9lIEJ1Y2sncyByZXF1ZXN0LgoJKiBNYWtlZmlsZS5pbjogQ29ycmVzcG9uZGluZyBjaGFuZ2VzLgoKMTk5OS0wNy0yMyAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogbGV4LmM6IFN5bmMgd2l0aCBDIGZyb250ZW5kLgoJKHdoaXRlc3BhY2VfY3IpOiBOZXcgZm4uCgkoc2tpcF93aGl0ZV9zcGFjZSk6IFVzZSBpdC4KCShpbml0X3BhcnNlKTogUmVvcmRlci4KCSh5eXByaW50KTogU3VwcG9ydCBDT05TVEFOVC4KCShwcmFnbWFfZ2V0YywgcHJhZ21hX3VuZ2V0Yyk6IEJyaW5nIGJhY2suCgkocmVhZF9saW5lX251bWJlcik6IENoYW5nZSBpbl9zeXN0ZW1faGVhZGVyIGRpcmVjdGx5LgoJKGhhbmRsZV9nZW5lcmljX3ByYWdtYSwgaGFuZGxlX2NwX3ByYWdtYSwgeXllcnJvcik6IE1vdmUgdXAgaW4gZmlsZS4KCShwYXJzZV9mbG9hdCk6IFVwZGF0ZSB0byBDIHZlcnNpb24uCgkoeXlsZXgpOiBIYW5kbGUgJyQnIHVuZGVyIHRoZSBsZXR0ZXIgY2FzZS4KCVJlbW92ZSBsb29raW5nX2Zvcl90eXBlbmFtZSBoYW5kbGluZy4KCVN1cHBvcnQgaGV4IGZsb2F0aW5nIHBvaW50IGNvbnN0YW50cy4KCUZvbGxvdyBDJ3MgbGVhZCBmb3IgY2hvb3NpbmcgdHlwZSBvZiBpbnRlZ2VyIGNvbnN0YW50cy4KCVJlYXJyYW5nZSBzdHVmZiB0byBtYXRjaCBDIGZyb250ZW5kLgoJKHl5dW5nZXRjLCByZWluaXRfcGFyc2VfZm9yX2Jsb2NrLCB5eWxleCk6IFN1cHBvcnQgaW5kZW50X2xldmVsLgoJKiBzcGV3LmMgKHl5bGV4KTogQ2xlYXIgbG9va2luZ19mb3JfdHlwZW5hbWUgaWYgd2Ugc2VlIGEgVFlQRVNQRUMuCgoxOTk5LTA3LTIzICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogY2FsbC5jIChyZWZlcmVuY2VfYmluZGluZyk6IFR3ZWFrLgoJKG1heWJsZV9oYW5kbGVfaW1wbGljaXRfb2JqZWN0KTogVXNlIGRpcmVjdF9yZWZlcmVuY2VfYmluZGluZyB0bwoJY3JlYXRlIHRoZSByaWdodCBpbXBsaWNpdCBjb252ZXJzaW9uIHNlcXVlbmNlLgoKMTk5OS0wNy0yMiAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIHB0LmMgKGNvbnZlcnRfbm9udHlwZV9hcmd1bWVudCk6IERvbid0IGNhbGwgZGVjbF9jb25zdGFudF92YWx1ZQoJaWYgd2UncmUgY29udmVydGluZyB0byBhIHJlZmVyZW5jZSB0eXBlLgoKCSogY2FsbC5jIChORUVEX1RFTVBPUkFSWV9QKTogTmV3IG1hY3JvLgoJKHN0YW5kYXJkX2NvbnZlcnNpb24pOiBTZXQgaXQsIGZvciBkZXJpdmVkLXRvLWJhc2UgY29udmVyc2lvbnMuCgkocmVmZXJlbmNlX3JlbGF0ZWRfcCk6IE5ldyBmdW5jdGlvbi4KCShyZWZlcmVuY2VfY29tcGF0aWJsZV9wKTogTGlrZXdpc2UuCgkoY29udmVydF9jbGFzc190b19yZWZlcmVuY2UpOiBMaWtld2lzZS4KCShkaXJlY3RfcmVmZXJlbmNlX2JpbmRpbmcpOiBMaWtld2lzZS4KCShyZWZlcmVuY2VfYmluZGluZyk6IFJld29yayBmb3Igc3RhbmRhcmRzLWNvbXBsaWFuY2UuCgkoY29udmVydF9saWtlKTogQWRqdXN0IGFjY29yZGluZ2x5LgoJKG1heWJlX2hhbmRsZV9yZWZfYmluZCk6IFNpbXBsaWZ5OyB0aGUgcmlnaHQgY29udmVyc2lvbiBzZXF1ZW5jZXMKCWFyZSBub3cgYnVpbHQgdXAgaW4gcmVmZXJlbmNlX2JpbmRpbmcuCgkoaW5pdGlhbGl6ZV9yZWZlcmVuY2UpOiBOZXcgZnVuY3Rpb24uCgkqIGNwLXRyZWUuaCAoSUNTX1VTRVJfRkxBRyk6IERvY3VtZW50LgoJKElDU19USElTX0ZMQUcpOiBMaWtld2lzZS4KCShJQ1NfQkFEX0ZMQUcpOiBMaWtld2lzZS4KCShORUVEX1RFTVBPUkFSWV9QKTogTGlrZXdpc2UuCgkoY3BfbHZhbHVlX2tpbmQpOiBOZXcgdHlwZS4KCShyZWFsX2x2YWx1ZV9wKTogUmV0dXJuIGl0LgoJKiBlcnJvci5jIChkdW1wX2V4cHIpOiBQcm92aWRlIG1vcmUgYWNjdXJhdGUgcmVwcmVzZW50YXRpb24gZm9yCglBR0dSX0lOSVRfRVhQUnMuCgkqIGluaXQuYyAoZXhwYW5kX2RlZmF1bHRfaW5pdCk6IERvIG5vdCB0cnkgdG8gcGVyZm9ybSBpbXBsaWNpdAoJY29udmVyc2lvbnMgZm9yIGEgYnJhY2UtZW5jbG9zZWQgaW5pdGlhbGl6ZXIuCgkqIHNlYXJjaC5jIChsb29rdXBfY29udmVyc2lvbnMpOiBEb2N1bWVudC4KCSogdHJlZS5jIChsdmFsdWVfcF8xKTogUmV0dXJuIGEgY3BfbHZhbHVlX2tpbmQuICBDYWxjdWxhdGUKCWFwcHJvcHJpYXRlbHkuCgkocmVhbF9sdmFsdWVfcCk6IEFkanVzdCBhY2NvcmRpbmdseS4KCShsdmFsdWVfcCk6IExpa2V3aXNlLgoJKGJ1aWxkX2NwbHVzX25ldyk6IERvbid0IGFsbG93IHRoZSBjcmVhdGlvbiBvZiBhbiBhYnN0cmFjdCBjbGFzcy4KCSogdHlwZWNrLmMgKGNvbnZlcnRfZm9yX2luaXRpYWxpemF0aW9uKTogVXNlIGluaXRpYWxpemVfcmVmZXJlbmNlLgoJCjE5OTktMDctMjEgIEdhdmluIFJvbWlnLUtvY2ggIDxnYXZpbkBjeWdudXMuY29tPgoKCSogbGV4LmMgKHJlYWxfeXlsZXgpIDogQ29ycmVjdCB0aGUgdGVzdCBmb3Igb3ZlcmZsb3cgd2hlbiBsZXhpbmcKCWludGVnZXIgbGl0ZXJhbHMuCgoxOTk5LTA3LTIwICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBkZWNsLmMgKHdhcm5fZXh0ZXJuX3JlZGVjbGFyZWRfc3RhdGljKTogQ2hlY2sgREVDTF9BUlRJRklDSUFMLAoJbm90IERFQ0xfQlVJTFRfSU4sIHRvIGRldGVybWluZSBpZiBhIGZ1bmN0aW9uIGlzIGludGVybmFsbHkgZGVjbGFyZWQuCgkoZHVwbGljYXRlX2RlY2xzKTogTGlrZXdpc2UuICBJbXByb3ZlIGhhbmRsaW5nIG9mIGJ1aWx0aW5zLgoJKHB1c2hfb3ZlcmxvYWRlZF9kZWNsKTogUmVtb3ZlIHNwZWNpYWwgaGFuZGxpbmcgb2YgYnVpbHRpbnMuCgoJKiBjcC10cmVlLmggKEFOT05fQUdHUl9UWVBFX1ApOiBVc2UgQ0xBU1NfVFlQRV9QLgoKCSogZGVjbC5jIChncm9rZGVjbGFyYXRvcik6IFB1bGwgb3V0IGRlY2xfY29uc3RhbnRfdmFsdWUgaW4KCXRlbXBsYXRlcywgdG9vLgoKCSogY2xhc3MuYyAoZmluaXNoX3N0cnVjdCwgZmluaXNoX3N0cnVjdF8xKTogUmVtb3ZlICd3YXJuX2Fub24nIHBhcm0uCgkqIGNwLXRyZWUuaCwgcHQuYywgc2VtYW50aWNzLmM6IEFkanVzdC4KCSogbWV0aG9kLmMgKGxhcmdlc3RfdW5pb25fbWVtYmVyKTogUmVtb3ZlLgoKCSogbGFuZy1zcGVjcy5oIChjKystY3BwLW91dHB1dCk6IFBhc3MgLWZwcmVwcm9jZXNzZWQuCgoJKiBsZXguYyAodG9rZW5fZ2V0Y2gsIHRva2VuX3B1dF9iYWNrKTogTmV3IGZucy4KCShyZWFsX3l5bGV4KTogVXNlIHRoZW0uCgoJKiBsZXguYyAobGFuZ19pbml0KTogR2VuZXJhbGl6ZS4KCShsYW5nX2luaXRfb3B0aW9ucyk6IFRlbGwgY3BwbGliIHRoaXMgaXMgQysrLgoJKG5leHRjaGFyKTogUmVtb3ZlLiAgUmVwbGFjZSB1c2VzIHdpdGggcHV0X2JhY2suCgkoc2tpcF93aGl0ZV9zcGFjZSk6IEhhbmRsZSBsaW5lbW9kZSBoZXJlLiAgT3B0aW1pemUgZm9yIGNwcGxpYi4KCShleHRlbmRfdG9rZW5fYnVmZmVyX3RvKTogTmV3IGZuLgoJKGV4dGVuZF90b2tlbl9idWZmZXIpOiBVc2UgaXQuCgkocmVhZF9saW5lX251bWJlciwgY2hlY2tfbmV3bGluZSk6IEp1c3QgZGVhbCB3aXRoIHRva2Vucy4KCShyZWFsX3l5bGV4KTogTW9yZSBjcHBsaWIgb3B0aW1pemF0aW9ucy4gIFNpbXBsaWZ5LiAgRG9uJ3QgcHJvZHVjZQoJRVhURVJOX0xBTkdfU1RSSU5HLCBMRUZUX1JJR0hUIG9yIFBBUkVOX1NUQVJfUEFSRU4gaGVyZS4KCSogc3Bldy5jICh5eWxleCk6IFByb2R1Y2UgTEVGVF9SSUdIVCBhbmQgRVhURVJOX0xBTkdfU1RSSU5HLgoJKiBwYXJzZS55IChQQVJFTl9TVEFSX1BBUkVOKTogUmVtb3ZlLgoJKiBpbnB1dC5jOiBEb24ndCB1c2UgdGhlIHB1dGJhY2sgbWFjaGluZXJ5IHdpdGggY3BwbGliLgoJKHN1Yl9nZXRjaCk6IEZvbGQgYmFjayBpbnRvIGdldGNoLgoJKGdldGNoKTogRG9uJ3QgaGFuZGxlIGxpbmVtb2RlIGhlcmUuCgkoZmVlZF9pbnB1dCk6IFVuZ2V0IGFueSB0ZXh0IGluIHRoZSB0b2tlbiBidWZmZXIuCgoJKiBsZXguYwkoc2V0X3R5cGVkZWNsX2ludGVyZmFjZV9pbmZvLCBzZXRfdmFyZGVjbF9pbnRlcmZhY2VfaW5mbywKCW5leHR5eWNoYXIsIG5leHR5eWx2YWwpOiBSZW1vdmUuCgoxOTk5LTA3LTIwICBNaWNoYWVsIFRpZW1hbm4gIDx0aWVtYW5uQGhvbG9kZWNrLmN5Z251cy5jb20+CgkgICAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogbGV4LmMgKGluZGVudF9sZXZlbCk6IE5ldyB2YXJpYWJsZS4KCShpbml0X3BhcnNlKTogU2V0IGNwcF90b2tlbiB0byBDUFBfRElSRUNUSVZFLgoJKGNvbnN1bWVfc3RyaW5nKTogTWFrZSB0aGlzIHNtYXJ0IGFib3V0IFVTRV9DUFBMSUIuCgkoeXl1bmdldGMpOiBVc2UgcHV0X2JhY2sgZnVuY3Rpb24uCgkocHJhZ21hX2dldGMsIHByYWdtYV91bmdldGMpOiBGdW5jdGlvbnMgZGVsZXRlZC4KCShjaGVja19uZXdsaW5lKTogUmV3cml0ZSB0byBiZSBpbnRlbGxpZ2VudCBhYm91dCBVU0VfQ1BQTElCLgoJQWxzbywgY2FsbCBIQU5ETEVfUFJBR01BIHdpdGggZ2V0Y2gsIHl5dW5nZXRjLCBub3QgcHJhZ21hX2dldGMgYW5kCglwcmFnbWFfdW5nZXRjLgoJKHJlYWxfeXlsZXgpOiBSZXdyaXRlIHRvIGJlIGludGVsbGlnZW50IGFib3V0IFVTRV9DUFBMSUIuCglBbHNvLCBjbGVhbiB1cCBjYXNlcyB3aGVyZSB3ZSByZWR1bmRhbnRseSBzZXQgdG9rZW5fYnVmZmVyWzBdLgoJKHJlYWRfbGluZV9udW1iZXIpOiBOZXcgZm4uCgkqIGlucHV0LmMgKGZlZWRfaW5wdXQpOiBVc2UgaW50ZWdyYXRlZCBjcHBsaWIgaWYgVVNFX0NQUExJQi4KCShlbmRfaW5wdXQpOiBDYWxsIGNwcF9wb3BfYnVmZmVyIGlmIFVTRV9DUFBMSUIuCgkoc3ViX2dldGNoKTogQ29uZGl0aW9uYWxpemUgb3V0IGNvZGUgdGhhdCdzIG5vdCBhcHByb3ByaWF0ZSBpZgoJVVNFX0NQUExJQi4KCShwdXRfYmFjayk6IFJld3JpdGUgaW4gY2FzZSBVU0VfQ1BQTElCIGlzIGRlZmluZWQuCgkoaW5wdXRfcmVkaXJlY3RlZCk6IERpdHRvLgoKVHVlIEp1bCAyMCAxMToyNDoxOSAxOTk5ICBCZXJuZCBTY2htaWR0ICA8YmVybmRzQGN5Z251cy5jby51az4KCgkqIGNwLXRyZWUuaDogRGVsZXRlIGxvdHMgb2YgZGVjbGFyYXRpb25zIG9mIHRyZWUgbm9kZXM7IHJlcGxhY2VkIGJ5CgljX2dsb2JhbF90cmVlcyBhbmQgYWNjZXNzb3IgbWFjcm9zIGRlZmluZWQgaW4gYy1jb21tb24uaC4KCShjcF90cmVlX2luZGV4KTogTmV3IGVudW1lcmF0aW9uLgoJKGNwX2dsb2JhbF90cmVlcyk6IERlY2xhcmUgbmV3IGFycmF5LiAgQWRkIGFjY2Vzc29yIG1hY3JvcyBmb3IgaXQsIGFuZAoJZGVsZXRlIGRlY2xhcmF0aW9ucyBvZiB0cmVlIG5vZGVzIHJlcGxhY2VkIGJ5IGl0LgoJKGJ1aWx0aW5fZnVuY3Rpb24pOiBEZWxldGUgbWFjcm8sIGFkZCBkZWNsYXJhdGlvbiBmb3IgbmV3IGZ1bmN0aW9uLgoJSW5jbHVkZSBjLWNvbW1vbi5oLgoJKiBkZWNsLmM6IERlbGV0ZSBkZWZpbml0aW9ucyBmb3IgdHJlZSBub2RlcyB0aGF0IHdlcmUgcmVwbGFjZWQgYnkKCWNwX2dsb2JhbF90cmVlcyBhbmQgY19nbG9iYWxfdHJlZXMuCgkoaW5pdF9kZWNsX3Byb2Nlc3NpbmcpOiBDYWxsIGNfY29tbW9uX25vZGVzX2FuZF9idWlsdGluczsgZGVsZXRlIGNvZGUKCXRvIGdlbmVyYXRlIHRoZSBjb21tb24gYnVpbHRpbnMgaGVyZS4KCShidWlsdGluX2Z1bmN0aW9uKTogTmV3IGZ1bmN0aW9uLgoJKiBkZWNsMi5jIChhYm9ydF9mbmRlY2wpOiBEZWxldGUgZGVjbGFyYXRpb24uCgkqIGV4Y2VwdC5jIChleHBhbmRfYnVpbHRpbl9yZXR1cm5fYWRkcmVzcyk6IERlbGV0ZSBkZWNsYXJhdGlvbi4KCShidWlsdGluX3JldHVybl9hZGRyZXNzX2ZuZGVjbCk6IERlbGV0ZSB2YXJpYWJsZS4KCShjb25zdF9wdHJfdHlwZV9ub2RlKTogRGVsZXRlIGRlY2xhcmF0aW9uLgoJKiBsZXguYyAoY29uc191cF9kZWZhdWx0X2Z1bmN0aW9uKTogRGVsZXRlIGRlY2xhcmF0aW9uIG9mCgl2b2lkX2xpc3Rfbm9kZS4KCSogcGFyc2UueSAodm9pZF9saXN0X25vZGUpOiBEZWxldGUgZGVjbGFyYXRpb24uCgkqIHJ0dGkuYyAodHlwZV9pbmZvX3R5cGVfbm9kZSwgdGluZm9fZm5faWQsIHRpbmZvX2ZuX3R5cGUpOgoJRGVsZXRlIHZhcmlhYmxlcy4KCShjb25zdF9zdHJpbmdfdHlwZV9ub2RlKTogRGVsZXRlIGRlY2xhcmF0aW9uLgoJKiBzZWFyY2guYyAoYWJvcnRfZm5kZWNsKTogRGVsZXRlIGRlY2xhcmF0aW9uLgoJKiBNYWtlZmlsZS5pbjogVXBkYXRlIGRlcGVuZGVuY2llcy4KCjE5OTktMDctMTkgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBwdC5jIChjaGVja19kZWZhdWx0X3RtcGxfYXJncyk6IE1vdmUgdGVzdCBmb3IgbWlzc2luZyBkZWZhdWx0Cglhcmd1bWVudHMgaGVyZSwgZnJvbSAuLi4KCShlbmRfdGVtcGxhdGVfcGFybV9saXN0KTogSGVyZS4KCjE5OTktMDctMTggIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBkZWNsLmMgKGxvb2t1cF9uZXN0ZWRfdHlwZSk6IFJlbW92ZS4KCShwdXNodGFnKTogRG9uJ3QgY2FsbCBpdC4KClNhdCBKdWwgMTcgMjM6NTE6MzAgMTk5OSAgSmVmZnJleSBBIExhdyAgKGxhd0BjeWdudXMuY29tKQoKCSogTWFrZWZpbGUuaW4gKElOVEVSRkFDRSk6IEJ1bXAgdG8gMi4KCjE5OTktMDctMTcgIEFsZXhhbmRyZSBPbGl2YSAgPG9saXZhQGRjYy51bmljYW1wLmJyPgoJCgkqIHR5cGVjazIuYyAobXlfZnJpZW5kbHlfYWJvcnQpOiBVcGRhdGVkIFVSTCB3aXRoIGJ1ZyByZXBvcnRpbmcKCWluc3RydWN0aW9ucyB0byBnY2MuZ251Lm9yZy4gIFJlbW92ZWQgZS1tYWlsIGFkZHJlc3MuCgoxOTk5LTA3LTE3ICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogcHQuYyAoZGV0ZXJtaW5lX3NwZWNpYWxpemF0aW9uKTogVGlnaHRlbiBlcnJvci1jaGVja2luZy4KCShlbmRfdGVtcGxhdGVfcGFybV9saXN0KTogTGlrZXdpc2UuCgoxOTk5LTA3LTE0ICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogcHQuYyAoY2hlY2tfZGVmYXVsdF90bXBsX2FyZ3MpOiBIYW5kbGUgZnJpZW5kcyBkZWZpbmVkIGluIHRoZQoJY2xhc3MganVzdCBsaWtlIG1lbWJlciBmdW5jdGlvbnMgZGVmaW5lZCBpbiB0aGUgY2xhc3MuCgoxOTk5LTA3LTA5ICBNaWNoYWVsIFRpZW1hbm4gIDx0aWVtYW5uQGhhcHB5LmN5Z251cy5jb20+CgkgICAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogY3AtdHJlZS5oIChzdHJ1Y3QgbGFuZ19kZWNsKTogQWRkZWQgZmllbGQgZm9yIHN0b3Jpbmcgc29ydGVkCglGSUVMRF9ERUNMcyAodXNlZCBpbiBUWVBFX0RFQ0xzKS4KCShERUNMX1BFTkRJTkdfSU5MSU5FX0lORk8pOiBBZGp1c3RlZCB0byB1c2UgJ3UnIHVuaW9uLgoJKERFQ0xfU09SVEVEX0ZJRUxEUyk6IE5ldyBtYWNyby4KCSogY2xhc3MuYyAobWV0aG9kX25hbWVfY21wKTogTmV3IGZ1bmN0aW9uLgoJKGZpbmlzaF9zdHJ1Y3RfbWV0aG9kcyk6IE1vZGlmaWVkIHRvIHN1cHBvcnQgc29ydGluZyBhbmQgc2VhcmNoaW5nCgltZXRob2RzLgoJKGZpbmlzaF9zdHJ1Y3RfYW5vbik6IENoYW5nZWQgY29kZSBpbiBpbm5lciBsb29wIHRvIHVzZSBFTFQgcmF0aGVyIAoJdGhhbiBVRUxUICh3aGljaCByZXF1aXJlZCBhbiBleHRyYSBpbmRpcmVjdGlvbiBmb3IgZXZlcnkgcmVmZXJlbmNlKS4KCShmaWVsZF9kZWNsX2NtcCk6IE5ldyBmdW5jdGlvbiB0byBzdXBwb3J0IHNvcnRpbmcgRklFTERfREVDTHMuCgkoZmluaXNoX3N0cnVjdF8xKTogU29ydCBmaWVsZHMuCgkqIHNlYXJjaC5jIChsb29rdXBfZmllbGRfMSk6IFVzZSBERUNMX1NPUlRFRF9GSUVMRFMgaWYgd2UgaGF2ZSB0aGVtLgoJKGxvb2t1cF9mbmZpZWxkc18xKTogU2VhcmNoIHNvcnRlZCBtZXRob2RzIGluIE1FVEhPRF9WRUMuCglBbHNvLCBzd2l0Y2ggdG8gdXNpbmcgYXJyYXkgaW5kZXhpbmcgcmF0aGVyIHRoYW4gYSBjaGFuZ2luZyBwb2ludGVyLgoJKiBwdHJlZS5jIChwcmludF9sYW5nX2RlY2wpOiBIYW5kbGUgVFlQRV9ERUNMcyB0aGF0IGhhdmUKCURFQ0xfU09SVEVEX0ZJRUxEUy4KCjE5OTktMDctMDkgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIGRlY2wyLmMgKHJlcGFyc2VfYWJzZGNsX2FzX2Nhc3RzKTogRG9uJ3Qgd2FybiBhYm91dCBvbGQtc3R5bGUKCWNhc3RzIGluIHN5c3RlbSBoZWFkZXJzIG9yIGV4dGVybiAiQyIgYmxvY2tzLgoKCSogcHQuYyAoZG9fZGVjbF9pbnN0YW50aWF0aW9uKTogRG93bmdyYWRlIGR1cGxpY2F0ZSBpbnN0YW50aWF0aW9uCgllcnJvcnMgdG8gcGVkd2Fybi4KCjE5OTktMDctMDkgIE1pY2hhZWwgVGllbWFubiAgPHRpZW1hbm5AaGFwcHkuY3lnbnVzLmNvbT4KCgkqIGRlY2wyLmMgKHdyaXRlX3ZpcnR1YWxzKTogRGVsZXRlZCBkZWNsYXJhdGlvbi4KCSogY3AtdHJlZS5oICh3cml0ZV92aXJ0dWFscyk6IERlbGV0ZWQgZXh0ZXJuIGRlY2xhcmF0aW9uLgoJKiBjbGFzcy5jIChmaW5pc2hfc3RydWN0XzEpOiBSZW1vdmVkICNpZiAwJ2QgY29kZSB0aGF0IG1lbnRpb25zCgl3cml0ZV92aXJ0dWFscy4KCSogc2VtYW50aWNzLmMgKGJlZ2luX2NsYXNzX2RlZmluaXRpb24pOiBSZXdyaXRlIGNvZGUgdG8gbm90IGRlcGVuZAoJb24gd3JpdGVfdmlydHVhbHMuCgoJKiBsZXguYyAoY3BfcHJhZ21hX2ludGVyZmFjZSk6IE5ldyBmdW5jdGlvbi4KCShjcF9wcmFnbWFfaW1wbGVtZW50YXRpb24pOiBMaWtld2lzZS4KCShoYW5kbGVfY3BfcHJhZ21hKTogQ2FsbCB0aGVtLgoKCSogdHlwZWNrLmMgKGNvbXB0eXBlcyk6IFNpbXBsaWZ5IEMgY29kZSBpbiBsb29rX2hhcmQuCgoJKiB4cmVmLmMgKFBBTExPQyk6IFVzZSB4Y2FsbG9jLCBub3QgY2FsbG9jLgoJKFNBTExPQyk6IFVzZSB4bWFsbG9jLCBub3QgbWFsbG9jLgoKCSogcnR0aS5jIChzeW50aGVzaXplX3RpbmZvX2ZuKTogQWRkIG1pc3NpbmcgY2FsbCB0byBwb3BfbW9tZW50YXJ5LgoKCSogc2VhcmNoLmMgKG5vdGVfZGVidWdfaW5mb19uZWVkZWQpOiBEb24ndCBzZWFyY2ggaWYgV1JJVEVfU1lNQk9MUwoJaXMgTk9fREVCVUcuCgoJKiBkZWNsLmMgKGR1cGxpY2F0ZV9kZWNscyk6IElmIGEgcmVkZWNsYXJhdGlvbiBkb2Vzbid0IG1hdGNoIHRoZQoJaW5pdGlhbCBkZWNsYXJhdGlvbiwgdGhlbiBkb24ndCBzYXZlIHRoZSBpbmxpbmUgaW5mbyBhbmQgYnkgYWxsCgltZWFucyBkb24ndCBtYXJrIHRoZSBmdW5jdGlvbiBhcyBhIGJ1aWx0aW4gZnVuY3Rpb24uCgoJKiBkZWNsLmMgKGxvb2t1cF9uYW1lX3JlYWwpOiBTZXQgTk9OQ0xBU1MgdG8gMSBpZiAKCUNVUlJFTlRfQ0xBU1NfVFlQRSBpcyAwLgoKCSogY2xhc3MuYyAoZHVwbGljYXRlX3RhZ19lcnJvcik6IFNldCBUWVBFX05PTkNPUElFRF9QQVJUUyB0bwoJTlVMTF9UUkVFLgoKCSogcHRyZWUuYyAocHJpbnRfbGFuZ190eXBlKTogQWRkZWQgdnRhYmxlLW5lZWRzLXdyaXRpbmcuCgpXZWQgSnVsICA3IDAxOjI2OjQ3IDE5OTkgIEFsZXhhbmRyZSBPbGl2YSAgPG9saXZhQGRjYy51bmljYW1wLmJyPgoKCSogZGVjbDIuYyAobWFya192dGFibGVfZW50cmllcyk6IEZpeCBjaGVjayBmb3IgcnR0aSBvZmZzZXQuCgoxOTk5LTA3LTA2ICBHYXZpbiBSb21pZy1Lb2NoICA8Z2F2aW5AY3lnbnVzLmNvbT4KCgkqIHR5cGVjay5jICh1bnNpZ25lZF90eXBlLHNpZ25lZF90eXBlLHNpZ25lZF9vcl91bnNpZ25lZF90eXBlKSA6CglNZXJnZWQgaW50byBjLWNvbW1vbi4KCjE5OTktMDctMDUgIERhdmUgQnJvbGxleSAgPGJyb2xsZXlAY3lnbnVzLmNvbT4KCgkqIGxleC5jIChlcnJvcmNvdW50KTogRGVjbGFyZSBpdC4KCShmaW5pc2hfcGFyc2UpOiBVcGRhdGUgZXJyb3Jjb3VudCBmb3Igd2hlbiB1c2luZyBDUFBMSUIuCgoxOTk5LTA3LTA1ICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogY3AtdHJlZS5oIChJU19BR0dSX1RZUEUpOiBJbmNsdWRlIGluc3RhbnRpYXRlZCB0ZW1wbGF0ZSB0ZW1wbGF0ZQoJcGFyYW1ldGVycy4KCShJTVBMSUNJVF9UWVBFTkFNRV9UWVBFX0RFQ0xfUCk6IE5ldyBtYWNyby4KCSogZGVjbC5jIChwdXNoX2NsYXNzX2JpbmRpbmcpOiBVc2UgaXQuCgkobG9va3VwX25hbWVfcmVhbCk6IExpa2V3aXNlLgoKMTk5OS0wNy0wMiAgR2F2aW4gUm9taWctS29jaCAgPGdhdmluQGN5Z251cy5jb20+CgoJKiBjcC10cmVlLmggKHdpZGVzdF9pbnRlZ2VyX2xpdGVyYWxfdHlwZV9ub2RlLAoJd2lkZXN0X3Vuc2lnbmVkX2xpdGVyYWxfdHlwZSkgOiBOZXcuCgkqIGRlY2wuYyAod2lkZXN0X2ludGVnZXJfbGl0ZXJhbF90eXBlX25vZGUsCgl3aWRlc3RfdW5zaWduZWRfbGl0ZXJhbF90eXBlKSA6IE5ldy4KCShpbml0X2RlY2xfcHJvY2Vzc2luZyk6IEhhbmRsZS91c2UgdGhlIHR3byBuZXcgdHlwZXMuCgkqIGxleC5jIChyZWFsX3l5bGV4KTogU2FtZS4KCSogdHlwZWNrLmMgKHVuc2lnbmVkX3R5cGUsc2lnbmVkX3R5cGUsc2lnbmVkX29yX3Vuc2lnbmVkX3R5cGUpIDoKCVNhbWUuIAoKMTk5OS0wNy0wMSAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGRlY2wuYyAoZ3Jva2RlY2xhcmF0b3IpOiBEb24ndCBnaXZlIG5hbWVzICJmb3IgbGlua2FnZSBwdXJwb3NlcyIKCXRvIGFub255bW91cyBjdi1xdWFsaWZpZWQgdHlwZXMuCgoxOTk5LTA3LTAxICBHYXZpbiBSb21pZy1Lb2NoICA8Z2F2aW5AY3lnbnVzLmNvbT4KCgkqIGxleC5jIChyZWFsX3l5bGV4KSA6IENoYW5nZSBpbnRlZ2VyIGxpdGVyYWwgb3ZlcmZsb3cgaGFuZGxpbmcgdG8KCWJlIGxpa2UgYy1sZXguYy4KCgkqIGxleC5jIChyZWFsX3l5bGV4KTogSW1wcm92ZSAnaW50ZWdlciBjb25zdGFudCBvdXQgb2YgcmFuZ2UnIG1lc3NhZ2VzLgoKMTk5OS0wNi0yOCAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAY3lnbnVzLmNvbT4KCgkqIGRlY2wuYyAoY3BfZmluaXNoX2RlY2wpOiBGaXggdHlwbyBpbiBjcF93YXJuaW5nX2F0IGNhbGwuCgoxOTk5LTA2LTI4ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBlcnJvci5jIChkdW1wX3R5cGVfcmVhbCk6IEhhbmRsZSBUUkVFX0xJU1QgYWdhaW4uCgoJKiB0eXBlY2suYyAoY29tcF90YXJnZXRfcGFybXMpOiBEb24ndCBjb21wbGFpbiBhYm91dCAKCWNvbnZlcnRpbmcgZnJvbSAoKSB0byAoLi4uKSBpZiAhZmxhZ19zdHJpY3RfcHJvdG90eXBlLgoKCSogZGVjbC5jIChncm9rZGVjbGFyYXRvcik6IFVwZGF0ZSB0aGUgbmFtZXMgb2YgYWxsIHZhcmlhbnRzIHdoZW4KCWRlLWFub255bWl6aW5nLgoKMTk5OS0wNi0yMSAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGluaXQuYyAoZXhwYW5kX2FnZ3JfdmJhc2VfaW5pdCk6IFJlbmFtZSB0bwoJY29uc3RydWN0X3ZpcnR1YWxfYmFzZXMuICBDb25kaXRpb25hbGl6ZSBjb25zdHJ1Y3Rpb24gaGVyZSwgCglyYXRoZXIgdGhhbiAuLi4KCShlbWl0X2Jhc2VfaW5pdCk6IEhlcmUuCgoxOTk5LTA2LTE5ICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogc2VtYW50aWNzLmMgKGZpbmlzaF9hc21fc3RtdCk6IEFwcGx5IGRlY2F5IGNvbnZlcnNpb25zIHRvCglpbnB1dCBvcGVyYW5kcy4KCgkqIGRlY2wuYyAoZXhwYW5kX3N0YXRpY19pbml0KTogV2hlbiBidWlsZGluZyBhbiBhbm9ueW1vdXMgZnVuY3Rpb24KCWZvciB1c2Ugd2l0aCBhdGV4aXQsIGNvbXB1dGUgaXRzIGJvZHkgYmVmb3JlIGFuZCBhZnRlciBlbnRlcmluZwoJdGhlIGZ1bmN0aW9uLgoKCSogZXJyb3IuYyAoZHVtcF9leHByKTogSGFuZGxlIEJJTkRfRVhQUiwgTE9PUF9FWFBSLCBhbmQKCUVYSVRfRVhQUi4KCQoxOTk5LTA2LTE4ICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogaW5pdC5jIChleHBhbmRfYWdncl92YmFzZV9pbml0KTogQWRkIGZsYWcgcGFyYW1ldGVyLgoJKGJ1aWxkX3BhcnRpYWxfY2xlYW51cF9mb3IpOiBSZW1vdmUsIGlubGluaW5nIGludG8gLi4KCShleHBhbmRfY2xlYW51cF9mb3JfYmFzZSk6IC4uLiBoZXJlLiAgVGFrZSBmbGFnIHBhcmFtZXRlci4KCShlbWl0X2Jhc2VfaW5pdCk6IFBhc3MgdGhlIGluX2NocmcgcGFyYW1ldGVyIHRvCgllbWl0X2FnZ3JfdmJhc2VfaW5pdC4gCgkoZW1pdF9hZ2dyX3ZiYXNlX2luaXQpOiBQYXNzIGl0IHRvIGV4cGFuZF9jbGVhbnVwX2Zvcl9iYXNlLgoJCjE5OTktMDYtMTYgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBkZWNsMi5jIChpbXBvcnRfZXhwb3J0X2RlY2wpOiBVc2Ugc2FtZV90eXBlX3AsIHJhdGhlciB0aGFuCglyZWx5aW5nIG9uIHBvaW50ZXItZXF1YWxpdHkgZm9yIHR5cGVzLgoKCSogbWV0aG9kLmMgKGRvX2J1aWxkX2NvcHlfY29uc3RydWN0b3IpOiBTaW1wbGlmeS4KCgkqIGNhbGwuYyAoYnVpbGRfbWV0aG9kX2NhbGwpOiBSZW1vdmUgYm9ndXMgY29kZSBmb3IgdHdvLWFyZ3VtZW50CglkZWxldGUuCgkqIGluaXQuYyAoYnVpbGRfbmV3XzEpOiBFeHBhbmQgb24gY29tbWVudCwgYW5kIHJlbW92ZSBkZWFkIGNvZGUuCgoJKiBpbml0LmMgKGV4cGFuZF9jbGVhbnVwX2Zvcl9iYXNlKTogTmV3IGZ1bmN0aW9uLCBzcGxpdCBvdXQKCWZyb20gLi4uCgkoZW1pdF9iYXNlX2luaXQpOiBIZXJlLgoJKGV4cGFuZF9hZ2dyX3ZiYXNlX2luaXQpOiBVc2UgaXQuCgoxOTk5LTA2LTE1ICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogY3AtdHJlZS5oIChjbGFzc19jYWNoZV9maXJzdG9iaik6IERlY2xhcmUuCgkobWF5YmVfcHVzaF9jYWNoZV9vYnN0YWNrKTogUmVuYW1lIHRvIHB1c2hfY2FjaGVfb2JzdGFjay4KCSogY2xhc3MuYyAocGVybWFuZW50X29ic3RhY2spOiBSZW1vdmUgZGVjbGFyYXRpb24uCgkoY2xhc3NfY2FjaGVfZmlyc3RvYmopOiBNYWtlIGl0IGdsb2JhbC4KCShhZGRfbWV0aG9kKTogRG9uJ3QgdXNlIHBlcm1hbmVudF9vYnN0YWNrIGRpcmVjdGx5LgoJKHB1c2hjbGFzcyk6IE9ubHkgZnJlZSB0aGUgY2xhc3NfY2FjaGVfb2JzdGFjayBpZiB3ZSBrbm93IGhvdyBmYXIKCWJhY2sgdG8gZnJlZSBpdC4KCShtYXliZV9wdXNoX2NhY2hlX29ic3RhY2spOiBSZW5hbWUgdG8gcHVzaF9jYWNoZV9vYnN0YWNrLgoJKiBkZWNsLmM6IFJlbW92ZSBkZWFkIGNvbW1lbnQuCgkoc2F2ZWRfc2NvcGUpOiBBZGQgY2xhc3NfY2FjaGVfZmlyc3RvYmouCgkocHVzaF90b190b3BfbGV2ZWwpOiBTYXZlIGl0LgoJKHBvcF9mcm9tX3RvcF9sZXZlbCk6IFJlc3RvcmUgaXQuCgkocHVzaF9jbGFzc19sZXZlbF9iaW5kaW5nKTogVXNlIHB1c2hfY2FjaGVfb2JzdGFjaywgbm90CgltYXliZV9wdXNoX2NhY2hlX29ic3RhY2suCgkqIHNlYXJjaC5jIChwdXNoX2NsYXNzX2RlY2xzKTogTGlrZXdpc2UuCgkKMTk5OS0wNi0xNCAgTWFydGluIHZvbiBM9ndpcyAgPGxvZXdpc0BpbmZvcm1hdGlrLmh1LWJlcmxpbi5kZT4KCgkqIHB0LmMgKHRzdWJzdF9mcmllbmRfZnVuY3Rpb24pOiBQdXNoIGludG8gbmFtZXNwYWNlIG9mIGZyaWVuZAoJZnVuY3Rpb24gYmVmb3JlIHB1c2hkZWNsJ2luZyBpdC4KCjE5OTktMDYtMTQgIE5hdGhhbiBTaWR3ZWxsICA8bmF0aGFuQGFjbS5vcmc+CgoJKiBjYWxsLmMgKGJ1aWxkX25ld19vcCk6IFJlbW92ZSBSRUZfQklORCBmcm9tIGFsbCBvcGVyYW5kcy4KCjE5OTktMDYtMTMgIEFsZXhhbmRyZSBPbGl2YSAgPG9saXZhQGRjYy51bmljYW1wLmJyPgoKCSogaW5pdC5jIChidWlsZF9uZXdfMSk6IExvb2sgdXAgb3BlcmF0b3IgZGVsZXRlIGV2ZW4gaWYgdGhlcmUgd2FzCglubyBleHBsaWNpdCBuZXcgcGxhY2VtZW50LgoKMTk5OS0wNi0wOCAgTmF0aGFuIFNpZHdlbGwgIDxuYXRoYW5AYWNtLm9yZz4KCgkqIGV4Y2VwdC5jIChjb21wbGV0ZV9wdHJfcmVmX29yX3ZvaWRfcHRyX3ApOiBOZXcgZnVuY3Rpb24sIGJyb2tlbiBvdXQKCW9mIC4uLgoJKGJ1aWxkX3Rocm93KTogLi4uIGhlcmUuIENhbGwgaXQuCgkocHJvY2Vzc19zdGFydF9jYXRjaF9ibG9jayk6IENhbGwgaXQuCgoxOTk5LTA2LTA3ICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogc2VhcmNoLmMgKGNvbnZlcnRfcG9pbnRlcl90b19zaW5nbGVfbGV2ZWwpOiBSZWltcGxlbWVudCB3aXRob3V0Cgl1c2luZyBnZXRfYmluZm8uCgoxOTk5LTA2LTA2ICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogbWV0aG9kLmMgKGlzX2JhY2tfcmVmZXJlbmNlYWJsZV90eXBlKTogQmFjay1yZWZlcmVuY2UgYm9vbHMgd2hlbgoJbm90IHNxdWFuZ2xpbmcuCgoxOTk5LTA2LTA3ICBEYXZlIEJyb2xsZXkgIDxicm9sbGV5QGN5Z251cy5jb20+CgoJKiBsZXguYyAocmVhbF95eWxleCk6IFJlcGxhY2UgdW51c2VkIGJ5dGVzIGZyb20gYmFkIG11bHRpYnl0ZSBjaGFyLgoJKiBpbnB1dC5jIChwdXRiYWNrX2J1ZmZlcik6IE5ldyBzdHJ1Y3R1cmUgdHlwZS4KCShwdXRiYWNrKTogUmVwbGFjZXMgcHV0YmFja19jaGFyIG1lbWJlci4KCShwdXRiYWNrKTogUmVwbGFjZXMgcHV0YmFja19jaGFyIHN0YXRpYyB2YXJpYWJsZS4KCShmZWVkX2lucHV0KTogVXNlIHB1dGJhY2suCgkoZW5kX2lucHV0KTogVXNlIHB1dGJhY2suCgkoc3ViX2dldGNoKTogVXNlIHB1dGJhY2suCgkocHV0X2JhY2spOiBVc2UgcHV0YmFjay4KCjE5OTktMDYtMDUgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBkZWNsLmMgKGdyb2tkZWNsYXJhdG9yKTogRml4IHR5cG8gaW4gbGFzdCBjaGFuZ2UuCgoxOTk5LTA2LTA0ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBzZW1hbnRpY3MuYyAoZmluaXNoX2lmX3N0bXRfY29uZCk6IENvcHkgY29uZCB0byBwZXJtYW5lbnRfb2JzdGFjay4KCShmaW5pc2hfd2hpbGVfc3RtdF9jb25kLCBmaW5pc2hfZG9fc3RtdCwgZmluaXNoX2Zvcl9jb25kKTogTGlrZXdpc2UuCgoxOTk5LTA2LTA0ICBOYXRoYW4gU2lkd2VsbCAgPG5hdGhhbkBhY20ub3JnPgoKCSogZXhjZXB0LmMgKGJ1aWxkX3Rocm93KTogQ2hlY2sgdGhyb3cgZXhwcmVzc2lvbiB2YWxpZGl0eS4KCjE5OTktMDYtMDMgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBkZWNsLmMgKGdyb2tkZWNsYXJhdG9yKTogRG9uJ3QgdHJlYXQgYXJiaXRyYXJ5IHR5cGVzIGFzIHVuc2lnbmVkCglqdXN0IGJlY2F1c2UgZmxhZ19zaWduZWRfYml0ZmllbGRzIGlzIGZhbHNlLgoKMTk5OS0wNi0wMyAgTmF0aGFuIFNpZHdlbGwgIDxuYXRoYW5AYWNtLm9yZz4KCgkqIHNlbWFudGljcy5jIChiZWdpbl9jbGFzc19kZWZpbml0aW9uKTogVXBkYXRlIHRoZSBzdHJ1Y3QncwoJbG9jYXRpb24gaGVyZSAuLi4KCSogY2xhc3MuYyAoZmluaXNoX3N0cnVjdCk6IC4uLiByYXRoZXIgdGhhbiBoZXJlLgoKCSogZGVjbC5jIChtYWtlX3R5cGVuYW1lX3R5cGUpOiBEb24ndCByZWx5IG9uIHVuaW5pdGlhbGl6ZWQKCXZhcmlhYmxlLgoKMTk5OS0wNS0zMSAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogTWFrZWZpbGUuaW4gKEFMTF9DRkxBR1MpOiBBZGQgJy1XIC1XYWxsJy4KCjE5OTktMDUtMzEgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiB0cmVlLmMgKGJ1aWxkX2NwbHVzX2FycmF5X3R5cGVfMSk6IFVzZSBwdXNoX29ic3RhY2tzX25vY2hhbmdlCglhbmQgZnJpZW5kcyByYXRoZXIgdGhhbiBtZXNzaW5nIHdpdGggY3VycmVudF9vYnN0YWNrIGRpcmVjdGx5LgoJKGNwX2J1aWxkX3F1YWxpZmllZF90eXBlX3JlYWwpOiBSZXdvcmsgQVJSQVlfVFlQRQoJYWxsb2NhdGlvbiB0byBtYXRjaCBwcmFjdGljZSB0aHJvdWdob3V0IHRoZSByZXN0IG9mIHRoZSAKCWNvbXBpbGVyLgoKMTk5OS0wNS0zMCAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGxleC5jIChtYWtlX2xhbmdfdHlwZSk6IENyZWF0ZSBUWVBFX0JJTkZPIGZvcgoJVEVNUExBVEVfVFlQRV9QQVJNcyBqdXN0IGxpa2UgZm9yIG5vbi10ZW1wbGF0ZSB0eXBlcy4KCgkqIGRlY2wuYyAoc3RhcnRfZGVjbCk6IE1vdmUgY2hlY2tzIG9uIGluaXRpYWxpemF0aW9uIHRvIC4uLgoJKGNwX2ZpbmlzaF9kZWNsKTogSGVyZS4gIFRpZHkgZm9ybWF0dGluZyBzbGlnaHRseS4KCjE5OTktMDUtMjggIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBkZWNsLmMgKGFkZF9iaW5kaW5nKTogRG9uJ3QgY29tcGxhaW4gYWJvdXQgYSByZWRlY2xhcmF0aW9uIG9mIGEKCXNlbWFudGljYWxseSBpZGVudGljYWwgdHlwZWRlZiBpbiBhIGxvY2FsIHNjb3BlLgoKMTk5OS0wNS0yOCAgTmF0aGFuIFNpZHdlbGwgIDxuYXRoYW5AYWNtLm9yZz4KCgkqIGRlY2wuYyAoY29tcGxldGVfYXJyYXlfdHlwZSk6IEFsbG9jYXRlIG9mZiBzYW1lIG9ic3RhY2suIEZpeAoJRE9fREVGQVVMVCBjb21tZW50IHRvIG1hdGNoIHJlYWxpdHkuCgoJKiBmcmllbmQuYyAobWFrZV9mcmllbmRfY2xhc3MpOiBGaXggZGlhZ25vc3RpYyB0eXBvLgoKMTk5OS0wNS0yOCAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGRlY2wuYyAobG9va3VwX25hbWVzcGFjZV9uYW1lKTogSGFuZGxlIGdldHRpbmcgYQoJVEVNUExBVEVfSURfRVhQUi4KCShleHBhbmRfc3RhdGljX2luaXQpOiBEb24ndCBjYWxsIHB1c2hkZWNsIGZvciBpbXBsaWNpdGx5IGRlY2xhcmVkCglgYXRleGl0JyB1c2VkIHRvIHJlZ2lzdGVyIGRlc3RydWN0b3JzLgoKMTk5OS0wNS0yNSAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGNsYXNzLmMgKGZpbmlzaF92dGJscyk6IENvcHkgQklORk9fVklSVFVBTHMgYmVmb3JlIHVzaW5nIGl0IHRvCglpbml0aWFsaXplIGEgdnRhYmxlLgoKCSogY3AtdHJlZS5oIChOQU1FU1BBQ0VfTEVWRUwpOiBSZWZvcm1hdC4KCShsYW5nX2RlY2xfZmxhZ3MpOiBEb2N1bWVudCBNRU1GVU5DX1BPSU5URVJfVE8uICBTYXZlIGZvdXIgYnl0ZXMKCWJ5IGNvbWJpbmluZyBURU1QTEFURV9JTkZPIGFuZCBMRVZFTCBpbnRvIGEgc2luZ2xlIHVuaW9uLgoJKERFQ0xfVEVNUExBVEVfSU5GTyk6IFJlZm9ybWF0LgoJKERFQ0xfU0FWRURfVFJFRSk6IERvY3VtZW50LgoJKERFQ0xfVEVNUExBVEVfSU5KRUNUKTogUmVtb3ZlLgoJKiBjbGFzcy5jIChmaW5pc2hfc3RydWN0KTogUmVtb3ZlIGNvZGUgdG8gZGVhbCB3aXRoCglERUNMX1RFTVBMQVRFX0lOSkVDVC4gCgoJKiBkZWNsLmMgKG1heWJlX3Byb2Nlc3NfdGVtcGxhdGVfdHlwZV9kZWNsYXJhdGlvbik6IEhhbmRsZSBhbGwgbmV3Cgl0eXBlcyBpbiB0ZW1wbGF0ZXMgdW5pZm9ybWx5LgoJKiBtZXRob2QuYyAoYnVsaWRfb3ZlcmxvYWRfaWRlbnRpZmllcik6IFVzZSBDUF9ERUNMX0NPTlRFWFQsIG5vdAoJREVDTF9DT05URVhULgoJKiBwdC5jIChsb29rdXBfdGVtcGxhdGVfY2xhc3MpOiBJbmplY3QgdGVtcGxhdGUgaW5zdGFudGlhdGlvbnMgb2YKCWZvcndhcmQtZGVjbGFyYXRpb25zLgoJKGluc3RhbnRpYXRlX2NsYXNzX3RlbXBsYXRlKTogUmVtb3ZlIGNvZGUgcHJvY2Vzc2luZwoJREVDTF9URU1QTEFURV9JTkpFQ1QuCgkKCSogcHQuYyAobG9va3VwX3RlbXBsYXRlX2NsYXNzKTogVHdlYWsgbG9va3VwIHRvIGZpbmQgbWVtYmVyCgl0ZW1wbGF0ZXMuCgoJKiBwdC5jICh0c3Vic3RfZXhwciwgY2FzZSBBU01fU1RNVCk6IERvbid0IHRzdWJzdCBpbnRvCglBU01fQ1ZfUVVBTC4KCSogc2VtYW50aWNzLmMgKGZpbmlzaF9hc21fc3RtdCk6IE1ha2Ugc3RyaW5ncyBwZXJtYW5lbnQgaWYgdGhleSdyZQoJdXNlZCBpbiBhIHRlbXBsYXRlLgoJCjE5OTktMDUtMjUgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIHR5cGVjay5jIChjYXN0c19hd2F5X2NvbnN0bmVzcywgY2FzdHNfYXdheV9jb25zdG5lc3Nfcik6IFN0cmlwIGJvdGgKCXBhcnRzIG9mIHBvaW50ZXIgdG8gZGF0YSBtZW1iZXIgdHlwZXMuCgoxOTk5LTA1LTI0ICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogZGVjbDIuYyAobWFya192dGFibGVfZW50cmllcyk6IERvbid0IG1ha2UgYSBjb3B5IG9mIGEgZnVuY3Rpb24sCglhbmQgdGhlbiBtYWtlIGl0IGxvb2sgbGlrZSBgYWJvcnQnLiAgSnVzdCB1c2UgYGFib3J0JyBpbnN0ZWFkLgoJCgkqIHR5cGVjay5jIChidWlsZF9zdGF0aWNfY2FzdCk6IERvbid0IGFsbG93IHN0YXRpY19jYXN0cyB0aGF0IGNhc3QKCWF3YXkgY29uc3RuZXNzLgoJKGNhc3RzX2F3YXlfY29uc3RuZXNzX3IpOiBOZXcgZnVuY3Rpb24uCgkoY2FzdHNfYXdheV9jb25zdG5lc3MpOiBMaWtld2lzZS4KCgkqIGRlY2wuYyAobG9va3VwX3RhZyk6IFJlbW92ZSBjb2RlIG5vIGxvbmdlciBuZWVkZWQgYWZ0ZXIKCW5hbWUtbG9va3VwIGltcHJvdmVtZW50cy4KCSogZGVjbDIuYyAoaGFuZGxlX2NsYXNzX2hlYWQpOiBNYWtlIGVycm9yLXJlY292ZXJ5IG1vcmUgcm9idXN0LgoJKiBmcmllbmQuYyAobWFrZV9mcmllbmRfY2xhc3MpOiBSZWplY3QgdGVtcGxhdGVkIHR5cGVuYW1lIHR5cGVzLgoJKiBsZXguYyAoaXNfZ2xvYmFsKTogQSB0ZW1wbGF0ZSBwYXJhbWV0ZXIgaXNuJ3QgZ2xvYmFsLgoJKiBwYXJzZS55IChjbGFzc19oZWFkKTogUm9idXN0aWZ5LgoJKiBwYXJzZS5jOiBSZWdlbmVyYXRlZC4KCQoxOTk5LTA1LTIyICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogcHQuYyAoZm9yX2VhY2hfdGVtcGxhdGVfcGFybSk6IFdhbGsgaW50byBUWVBFTkFNRV9UWVBFcywKCUlORElSRUNUX1JFRnMsIGFuZCBDT01QT05FTlRfUkVGcy4gIEhhbmRsZSBGSUVMRF9ERUNMcy4KCQoJKiBjcC10cmVlLmggKHB1c2hfbmVzdGVkX25hbWVzcGFjZSk6IERlY2xhcmUuCgkocG9wX25lc3RlZF9uYW1lc3BhY2UpOiBMaWtld2lzZS4KCSogZGVjbC5jIChwdXNoX25lc3RlZF9uYW1lc3BhY2UpOiBOZXcgZnVuY3Rpb24uCgkocG9wX25lc3RlZF9uYW1lc3BhY2UpOiBMaWtld2lzZS4KCSogcHQuYyAoaW5zdGFudGlhdGVfY2xhc3NfdGVtcGxhdGUpOiBVc2UgdGhlbS4KCgkqIHRyZWUuYyAobWFwY2FyKTogSGFuZGxlIE5PTl9MVkFMVUVfRVhQUi4KCgkqIGNwLXRyZWUuaCAoY3BsdXNfZXhwYW5kX2NvbnN0YW50KTogRGVjbGFyZS4KCSogY3Z0LmMgKGNvbnZlcnRfdG9fcG9pbnRlcik6IEV4cGFuZCBQVFJNRU1fQ1NUcyB3aGVuIHRoZXkncmUKCWNvbnZlcnRlZCBmcm9tIG9uZSBwb2ludGVyLXRvLW9iamVjdCB0eXBlIHRvIGFub3RoZXIuCgkqIGV4cHIuYyAoY3BsdXNfZXhwYW5kX2NvbnN0YW50KTogRG9uJ3QgbWFrZSBpdCBzdGF0aWMuCgkqIHR5cGVjay5jIChidWlsZF9jb21wb25lbnRfcmVmKTogRG9uJ3QgY3Jhc2ggd2hlbiBwcmVzZW50ZWQgd2l0aAoJYSBjb21wb25lbnQgd2hpY2ggaXMgYSBURU1QTEFURV9ERUNMLgoJKGJ1aWxkX3B0cm1lbWZ1bmMpOiBUaWR5LiAgQ2xhcmlmeSBjb21tZW50LiAgTWFrZSBzdXJlIHRoYXQgZXZlbiBhCgljYXN0IGZyb20gYSBwb2ludGVyLXRvLW1lbWJlciBjb25zdGFudCB0byBpdHMgb3duIHR5cGUgZG9lcyBub3QKCXJlc3VsdCBpbiBhIHZhbGlkIG5vbi10eXBlIHRlbXBsYXRlIGFyZ3VtZW50LgoKMTk5OS0wNS0yMSAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCSAgICBOYXRoYW4gU2lkd2VsbCAgPG5hdGhhbkBhY20ub3JnPgoJCgkqIE1ha2UtbGFuZy5pbiAoY2MxcGx1cyk6IE1ha2UgaXQgZGVwZW5kIG9uIGd4eC5ncGVyZi4KCSogY3AtdHJlZS5oOiBGaXggdHlwbyBpbiBkb2N1bWVudGF0aW9uIG9uIHBvaW50ZXJzLXRvLW1lbWJlcnMuCgkoY3BfYnVpbGRfcXVhbGlmaWVkX3R5cGUpOiBNYWtlIGl0IGEgbWFjcm8uCgkoY3BfYnVpbGRfcXVhbGlmaWVkX3R5cGVfcmVhbCk6IERlY2xhcmUuCgkqIGRlY2wuYyAoZ3Jva2RlY2xhcmF0b3IpOiBSZW1vdmUgbWlzbGVhZGluZyBjb21tZW50LiAgQXZvaWQKCXByb2JsZW0gd2l0aCB0ZW1wbGF0ZSBwYXJhbWV0ZXJzIGFuZCByZXN0cmljdC1xdWFsaWZpY2F0aW9uLgoJKiBneHguZ3BlcmY6IFJlcGxhY2UgTk9SSUQgd2l0aCBSSURfVU5VU0VEIHRocm91Z2hvdXQuCgkqIGhhc2guaDogUmVnZW5lcmF0ZWQuCgkqIGxleC5oIChyaWQpOiBNb3ZlIFJJRF9GSVJTVF9NT0RJRklFUiBhbmQgUklEX0xBU1RfTU9ESUZJRVIgaW50bwoJdGhlIGVudW1lcmF0aW9uLgoJKE5PUklEKTogUmVtb3ZlIGRlZmluaXRpb24uCgkqIHB0LmMgKHRzdWJzdF9hZ2dyX3R5cGUpOiBVc2UgY3BfYnVpbGRfcXVhbGlmaWVkX3R5cGVfcmVhbC4KCSh0c3Vic3QpOiBMaWtld2lzZS4gIFJlbW92ZSBzcGVjaWFsIGhhbmRsaW5nIGZvciBGVU5DVElPTl9UWVBFcy4KCShmbl90eXBlX3VuaWZpY2F0aW9uKTogQ2hlY2sgdGhhdCB0aGUgZnVuY3Rpb24gdHlwZSByZXN1bHRpbmcgZnJvbQoJdGhlIGRlZHVjdGlvbiBpcyBsZWdhbC4KCShjaGVja19jdl9xdWFsc19mb3JfdW5pZnkpOiBEb24ndCBoYW5kbGUgRlVOQ1RJT05fVFlQRXMgc3BlY2lhbGx5LgoJKHVuaWZ5KTogVXNlIGNwX2J1aWxkX3F1YWxpZmllZF90eXBlX3JlYWwuCgkqIHRyZWUuYyAoYnVpbGRfY3BsdXNfYXJyYXlfdHlwZV8xKTogSGFuZGxlIGVycm9yX21hcmtzIGFzIGlucHV0cy4KCShjcF9idWlsZF9xdWFsaWZpZWRfdHlwZSk6IFJlbmFtZSB0byAuLi4KCShjcF9idWlsZF9xdWFsaWZpZWRfdHlwZV9yZWFsKTogQWRkIGFkZGl0aW9uYWwgQ09NUExBSU4gcGFyYW1ldGVyCglhbmQgbW9kaWZ5IGFwcHJvcHJpYXRlbHkuCgkKCSogdHlwZWNrLmMgKGJ1aWxkX3B0cm1lbWZ1bmMpOiBIYW5kbGUgUFRSTUVNX0NTVHMgY2FyZWZ1bGx5IHRvCglyZXZlYWwgb3B0aW1pemF0aW9uIG9wcG9ydHVuaXRpZXMuCgoJKiBwdC5jICh0c3Vic3QpOiBEb24ndCBpc3N1ZSBlcnJvciBtZXNzYWdlcyB3aGVuIHdlJ3JlIG5vdAoJY29tcGxhaW5pbmcsIGV2ZW4gaWYgd2Ugc2VlIGEgcXVhbGlmaWVkIGZ1bmN0aW9uIHR5cGUuCgkoY2hlY2tfY3ZfcXVhbHNfZm9yX3VuaWZ5KTogRG9uJ3QgYWxsb3cgYSBxdWFsaWZpZWQgZnVuY3Rpb24KCXR5cGUuCgoxOTk5LTA1LTIwICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBjbGFzcy5jIChpbnN0YW50aWF0ZV90eXBlKTogRG93bmdyYWRlIGVycm9ycyBmb3Igb2JqZWN0LWRlcGVuZGVudAoJbWVtZm4gcmVmcyB0byBwZWR3YXJuLgoKMTk5OS0wNS0yMCAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGRlY2wuYyAoZ3Jva2RlY2xhcmF0b3IpOiBEb24ndCB0cmVhdCBbXSBhcyBpbmRpY2F0aW5nIGEKCXplcm8tc2l6ZWQgYXJyYXkgaW4gYSB0eXBlZGVmLgoKCSogY2FsbC5jIChidWlsZF9vYmplY3RfY2FsbCk6IERvbid0IGxvb2sgYXQgREVDTF9OQU1FIGZvciBhIHR5cGUuCgkocHQuYyk6IE9yIENQX1RZUEVfUVVBTFMgZm9yIGFuIEVSUk9SX01BUksuCgkodHlwZWNrLmMpOiBPciBUWVBFX01BSU5fVkFSSUFOVCBmb3IgYSB0eXBlLgoKIAkqIHB0LmMgKGZvcl9lYWNoX3RlbXBsYXRlX3Bhcm0pOiBSZXdvcmsgdG8gbWF0Y2ggZG9jdW1lbnRhdGlvbi4KCURvbid0IGJlIGZvb2xlZCBieSBhIENPTVBPTkVOVF9SRUYgd2l0aCBubyBUUkVFX1RZUEUuCgoxOTk5LTA1LTIwICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBjbGFzcy5jIChmaW5pc2hfc3RydWN0XzEpOiBTdGlsbCBjaGVjayBmb3IgQU5PTl9BR0dSX1RZUEVfUC4KCgkqIGNsYXNzLmMgKGZpbmlzaF9iYXNlX3N0cnVjdCk6IEFsbG93IG5vbi1DT00gYmFzZXMgZm9yIENPTSBjbGFzc2VzCglleGNlcHQgYXQgdGhlIGxlZnRtb3N0IHBvc2l0aW9uLgoJKG1vZGlmeV9vbmVfdnRhYmxlLCBmaXh1cF92dGFibGVfZGVsdGFzMSwgb3ZlcnJpZGVfb25lX3Z0YWJsZSk6CglQYXNzIHRoZSBiaW5mbydzIGNsYXNzLCBub3QgdGhlIG1vc3QgZGVyaXZlZCwgdG8gc2tpcF9ydHRpX3N0dWZmLgoJKiBzZWFyY2guYyAoZ2V0X2Fic3RyYWN0X3ZpcnR1YWxzLCBleHBhbmRfdXBjYXN0X2ZpeHVwcyk6IExpa2V3aXNlLgoKCSogdHJlZS5jIChsdmFsdWVfcF8xKTogQSBOT1BfRVhQUiBjYW4gYmUgYW4gbHZhbHVlLgoJKGJ1aWxkX2NwbHVzX25ldyk6IE1ha2Ugc3VyZSB0aGF0IHdoYXQgd2UgcmV0dXJuIGlzIG9mIHRoZSByaWdodCB0eXBlLgoKMTk5OS0wNS0yMCAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGNwLXRyZWUuaCAobWFrZV9wdHJtZW1fY3N0KTogTmV3IGZ1bmN0aW9uLgoJKiBleHByLmMgKGNwbHVzX2V4cGFuZF9jb25zdGFudCk6IFNwbGl0IG91dCBmcm9tIC4uLgoJKGNwbHVzX2V4cGFuZF9leHByKTogSGVyZS4gIFVzZSBjcGx1c19leHBhbmRfY29uc3RhbnQuCgkoaW5pdF9jcGx1c19leHBhbmQpOiBTZXQgbGFuZ19leHBhbmRfY29uc3RhbnQuCgkqIHB0LmMgKGNvbnZlcnRfbm9udHlwZV9hcmd1bWVudCk6IFVzZSBtYWtlX3B0cm1lbV9jc3QuCgoJKiB0cmVlLmMgKG1ha2VfcHRybWVtX2NzdCk6IERlZmluZS4KCSogdHlwZWNrLmMgKHVuYXJ5X2NvbXBsZXhfbHZhbHVlKTogVXNlIG1ha2VfcHRybWVtX2NzdC4KCSogdHlwZWNrMi5jIChpbml0aWFsaXplcl9jb25zdGFudF92YWxpZF9wKTogVXNlIG1ha2VfcHRybWVtX2NzdC4KCjE5OTktMDUtMTkgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBwdC5jIChidWlsZF90ZW1wbGF0ZV9kZWNsKTogQ29weSBERUNMX05PTkNPTlZFUlRJTkdfUC4KCgkqIGRlY2wyLmMgKHN0YXJ0X3N0YXRpY19zdG9yYWdlX2R1cmF0aW9uX2Z1bmN0aW9uKTogRml4IGNvbW1lbnQuCgkoZmluaXNoX2ZpbGUpOiBDcmVhdGUgc3RhdGljIHN0b3JhZ2UgZHVyYXRpb24gZnVuY3Rpb25zIGxhemlseS4KCjE5OTktMDUtMTkgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCglJbXBsZW1lbnQgYW5vbnltb3VzIHN0cnVjdHMuCgkqIGNwLXRyZWUuaCAoQU5PTl9BR0dSX1RZUEVfUCk6IFJlbmFtZSBmcm9tIEFOT05fVU5JT05fVFlQRV9QLgoJKiBjbGFzcy5jLCBkZWNsLmMsIGRlY2wyLmMsIGluaXQuYywgcHQuYywgc2VhcmNoLmMsIHR5cGVjay5jOiBBZGp1c3QuCgkqIGNsYXNzLmMgKGZpbmlzaF9zdHJ1Y3RfMSk6IFJlbW92ZSByZWR1bmRhbnQgY2hlY2sgZm9yIGFub24gc3RydWN0LgoJKiBkZWNsLmMgKGZpeHVwX2Fub255bW91c19hZ2dyKTogUmVuYW1lZCBmcm9tIGZpeHVwX2Fub255bW91c191bmlvbi4KCShjaGVja190YWdfZGVjbCk6IENoZWNrIGZvciBhbm9ueW1vdXMgc3RydWN0IGhlcmUuCgkqIGRlY2wyLmMgKGJ1aWxkX2Fub25fdW5pb25fdmFycyk6IENhdGNoIGFub24gc3RydWN0IGF0IGZpbGUgc2NvcGUuCgkqIGluaXQuYyAoc29ydF9tZW1iZXJfaW5pdCwgZW1pdF9iYXNlX2luaXQpOiBIYW5kbGUgZ2V0dGluZyBmaWVsZHMKCWFzIHdlbGwgYXMgbmFtZXMgaW4gY3VycmVudF9tZW1iZXJfaW5pdF9saXN0LgoJKHBlcmZvcm1fbWVtYmVyX2luaXQpOiBIYW5kbGUgZ2V0dGluZyBhbiBhbm9uIGFnZ3IuCgkqIG1ldGhvZC5jIChkb19idWlsZF9hc3NpZ25fcmVmKTogRG9uJ3QgZGVzY2VuZCBpbnRvIGFub24gYWdncnMuCgkoZG9fYnVpbGRfY29weV9jb25zdHJ1Y3Rvcik6IExpa2V3aXNlLgoKMTk5OS0wNS0xOSAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIHRyZWUuYyAoY3BfYnVpbGRfcXVhbGlmaWVkX3R5cGUpOiBEb24ndCBhbGxvdyBxdWFsaWZpZWQgZnVuY3Rpb24KCXR5cGVzLgoKV2VkIE1heSAxOSAwMjo1MDo1MyAxOTk5ICBBcnZpbmQgU2Fua2FyIDxhcnZpbmRzQG1pdC5lZHU+CgoJKiBneHhpbnQudGV4aTogRml4IHR5cG8uCgoxOTk5LTA1LTE5ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBjYWxsLmMgKGZpbmRfc2NvcGVkX3R5cGUsIHJlc29sdmVfc2NvcGVfdG9fbmFtZSk6IExvc2UuCgkqIGNsYXNzLmMgKGZpbmlzaF9zdHJ1Y3RfMSk6IFVzZSBDTEFTU19UWVBFX1AuCgkqIHB0cmVlLmMgKHByaW50X2xhbmdfdHlwZSk6IExpa2V3aXNlLgoJKiB0eXBlY2suYyAoYnVpbGRfbW9kaWZ5X2V4cHIsIGNfZXhwYW5kX2FzbV9vcGVyYW5kcyk6IFVzZQoJSVNfQUdHUl9UWVBFX0NPREUuCgkqIHR5cGVjazIuYyAoZGlnZXN0X2luaXQpOiBMaWtld2lzZS4KCjE5OTktMDUtMTggIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIGNhbGwuYyAoam91c3QpOiBDb21wYXJlIHRoZSB0eXBlcyBvZiB0aGUgY29udiBvcHMsIG5vdCB0aGUKCXRhcmdldCB0eXBlcyBvZiB0aGUgY29udmVyc2lvbnMuCgpUdWUgTWF5IDE4IDAwOjIxOjM0IDE5OTkgIFphY2sgV2VpbmJlcmcgIDx6YWNrQHJhYmkucGh5cy5jb2x1bWJpYS5lZHU+CgoJKiBsYW5nLXNwZWNzLmg6IERlZmluZSBfX0dOVUNfXyBhbmQgX19HTlVDX01JTk9SX18gb25seSBpZiAtbm8tZ2NjCgl3YXMgbm90IGdpdmVuLgoKMTk5OS0wNS0xNyAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGNwLXRyZWUuZGVmIChURU1QTEFURV9JRF9FWFBSKTogVXBkYXRlIGRvY3VtZW50YXRpb24uCgkqIGRlY2wuYyAoZ3Jva2ZuZGVjbCk6IERvbid0IGFsbG93IGlubGluZSBkZWNsYXJhdGlvbnMgb2YgZnJpZW5kCgl0ZW1wbGF0ZSBzcGVjaWFsaXphdGlvbnMsIG9yIGZyaWVuZCB0ZW1wbGF0ZSBzcGVjaWFsaXphdGlvbnMgd2l0aAoJZGVmYXVsdCBhcmd1bWVudHMuCgkqIHB0LmMgKHRzdWJzdCk6IEhhbmRsZSBzdWJzdGl0dXRpb24gaW50byBhcnJheSB0eXBlcyB0aGF0IGRvZXMKCW5vdCB5aWVsZCBhIGZpeGVkIHVwcGVyIGJvdW5kLCBldmVuIHdoZW4gbm90IHByb2Nlc3NpbmcgYQoJdGVtcGxhdGUuCgkodHN1YnN0X2NvcHkpOiBEZWFsIHdpdGggdGhlIGZhY3QgdGhhdCB0aGUgc2Vjb25kIG9wZXJhbmQgdG8gYQoJVEVNUExBVEVfSURfRVhQUiBtYXkgYmUgTlVMTF9UUkVFLCBhIFRSRUVfTElTVCwgb3IgYSBUUkVFX1ZFQy4KCSogc2VhcmNoLmMgKG1hcmtlZF9wdXNoZGVjbHNfcCk6IERvbid0IGRlc2NlbmQgaW50bwoJVEVNUExBVEVfVFlQRV9QQVJNcyBhbmQgdGhlIGxpa2UuCgkodW5tYXJrZWRfcHVzaGRlY2xzX3ApOiBMaWtld2lzZS4KCQoJKiBjYWxsLmMgKGJ1aWxkX292ZXJfY2FsbCk6IERvbid0IHRocm93IGF3YXkKCWluaXRpYWxpemF0aW9ucy9jb3BpZXMgb2YgZW1wdHkgY2xhc3NlczsgdXNlIE1PRElGWV9FWFBSIGFuZAoJSU5JVF9FWFBSIGFzIGZvciBub24tZW1wdHkgY2xhc3Nlcy4KCSogY2xhc3MuYyAoZmluaXNoX3N0cnVjdF8xKTogUHV0IHRoZSBwYWRkaW5nIGJ5dGUgZm9yIGFuIGVtcHR5CgljbGFzcyBvbiB0aGUgVFlQRV9OT05DT1BJRURfUEFSVFMgbGlzdCBmb3IgdGhlIGNsYXNzLgoKMTk5OS0wNS0xNiAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGRlY2wyLmMgKGJ1aWxkX2V4cHJfZnJvbV90cmVlKTogSGFuZGxlIENPTVBPTkVOVF9SRUZzIHRoYXQKCWluZGljYXRlIGEgcmVmZXJlbmNlIHRvIGEgZmllbGQgdGhhdCBpcyBhIHF1YWxpZmllZCBuYW1lLgoKMTk5OS0wNS0xNiAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogZGVjbDIuYyAoZmluaXNoX29iamVjdHMpOiBEb24ndCB1c2UgLj90b3JzLiogaWYgd2UgZG9uJ3QgaGF2ZQoJQVNNX09VVFBVVF9DT05TVFJVQ1RPUi4KCgkqIGZyaWVuZC5jIChkb19mcmllbmQpOiBBZGQgYXR0cmxpc3QgYXJnLiAgUmVtb3ZlIHN1cHBvcnQgZm9yCglnZXR0aW5nIGEgbm9uLWRlY2wgYXMgJ2RlY2wnLgoJKiBkZWNsLmMgKGdyb2tmbmRlY2wpOiBSZW1vdmUgYXR0cmxpc3QgYXJnLiAgRG9uJ3Qgc2V0IGF0dHJzIG9yCglydGwuCgkoZ3Jva2RlY2xhcmF0b3IpOiBBZGp1c3QuCgkqIGNwLXRyZWUuaDogQWRqdXN0LgoKMTk5OS0wNS0xNiAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGNwLXRyZWUuaCAocGVybWFuZW50X3ApOiBOZXcgZnVuY3Rpb24uCgkqIGluaXQuYyAoYnVpbGRfbmV3XzEpOiBVc2UgbWFwY2FyLCBub3QgY29weV9ub2RlLCB0byBjb3B5IGEKCXBvc3NpYmx5IGNvbXBsZXggdHJlZSBub2RlLgoJKiB0cmVlLmMgKG1hcGNhcik6IEFkanVzdCBjb21tZW50cywgYW5kIGZvbGxvdyBjb2Rpbmcgc3RhbmRhcmRzIGluCgljb25kaXRpb25hbC4KCShwZXJtYW5lbnRfcCk6IE5ldyBmdW5jdGlvbi4KCjE5OTktMDUtMTMgIFBlciBCb3RobmVyICA8Ym90aG5lckBjeWdudXMuY29tPgoKCSogY2xhc3MuYyAocHVzaF9sYW5nX2NvbnRleHQpOiAgVHVybiBvZmYgREVDTF9JR05PUkVEX1AgZm9yCglwcmltaXRpdmUgSmF2YSB0eXBlcywgaWYgd2UgYWN0dWFsbHkgc2VlIGBleHRlcm4gIkphdmEiJy4KCjE5OTktMDUtMTAgMTg6MjEgLTA0MDAgIFphY2sgV2VpbmJlcmcgIDx6YWNrQHJhYmkucGh5cy5jb2x1bWJpYS5lZHU+CgoJKiBsYW5nLXNwZWNzLmg6IFBhc3MgLSQgdG8gdGhlIHByZXByb2Nlc3Nvci4KCjE5OTktMDUtMTAgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIGluaXQuYyAoYnVpbGRfb2Zmc2V0X3JlZik6IFdyYXAgYmFzZWxpbmtzIGluIE9GRlNFVF9SRUYsIHRvby4KCURvbid0IGJvdGhlciB3cmFwcGluZyBhbiBPRkZTRVRfVFlQRSBhcm91bmQgdW5rbm93bl90eXBlX25vZGUuCgkocmVzb2x2ZV9vZmZzZXRfcmVmKTogRG9uJ3QgaGFuZGxlIGEgcmF3IGJhc2VsaW5rLgoJKiBjdnQuYyAoYnVpbGRfZXhwcl90eXBlX2NvbnZlcnNpb24pOiBMaWtld2lzZS4KCSogdHlwZWNrLmMgKGRlY2F5X2NvbnZlcnNpb24sIGJ1aWxkX2NfY2FzdCwgY29udmVydF9mb3JfYXNzaWdubWVudCwKCWNvbnZlcnRfZm9yX2luaXRpYWxpemF0aW9uKTogTGlrZXdpc2UuCgkqIGNsYXNzLmMgKGluc3RhbnRpYXRlX3R5cGUpOiBIYW5kbGUgc2VlaW5nIGEgYmFzZWxpbmsgdW5kZXIgYW4KCU9GRlNFVF9SRUYuCgkqIGVycm9yLmMgKGR1bXBfZXhwcik6IExpa2V3aXNlLgkKCSogcHQuYyAoZm9yX2VhY2hfdGVtcGxhdGVfcGFybSk6IExpa2V3aXNlLgoJKHJlc29sdmVfb3ZlcmxvYWRlZF91bmlmaWNhdGlvbik6IExpa2V3aXNlLgoJKiB0cmVlLmMgKGlzX292ZXJsb2FkZWRfZm4sIHJlYWxseV9vdmVybG9hZGVkX2ZuKTogTGlrZXdpc2UuCgkqIHR5cGVjay5jIChleHByX3NpemVvZik6IEFsc28gY29tcGxhaW4gYWJvdXQgb3RoZXIgcGVybXV0YXRpb25zCglvZiBvdmVybG9hZGVkIGZ1bmN0aW9ucy4KCjE5OTktMDUtMDcgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIGluaXQuYyAocmVzb2x2ZV9vZmZzZXRfcmVmKTogRG9uJ3QgcmV0dXJuIGEgcmF3IG1ldGhvZC4KCVVzZSBCQVNFTElOS19QLgoJKiB0eXBlY2suYyAoZGVjYXlfY29udmVyc2lvbik6IERvbid0IGhhbmRsZSBhIHJhdyBtZXRob2QuCglSZXNvbHZlIGFsbCBPRkZTRVRfUkVGcy4KCShnZXRfbWVtYmVyX2Z1bmN0aW9uX2Zyb21fcHRyZnVuYyk6IDAgaXMgYSB2YWxpZCB2dGFibGUgaW5kZXguCgkoYnVpbGRfYmluYXJ5X29wX25vZGVmYXVsdCk6IEhhbmRsZSByZXNvbHZpbmcgb3ZlcmxvYWRlZCBmbnMuICBVc2UKCXNhbWVfdHlwZV9wIGZvciBwbWYgYml0cy4gIERvbid0IHVzZSBidWlsZF9iaW5hcnlfb3AgdG8gY29tcGFyZQoJcmF3IHBvaW50ZXJzIHRvIG1ldGhvZHMuCgkoY29udmVydF9mb3JfYXNzaWdubWVudCk6IENoZWNrIGZvciBPRkZTRVRfUkVGLCBub3QgT0ZGU0VUX1RZUEUsCgl0byBkZWNpZGUgd2hlbiB0byBjYWxsIHJlc29sdmVfb2Zmc2V0X3JlZi4KCShidWlsZF9jX2Nhc3QsIGNvbnZlcnRfZm9yX2luaXRpYWxpemF0aW9uKTogTGlrZXdpc2UuCgkqIGN2dC5jIChidWlsZF9leHByX3R5cGVfY29udmVyc2lvbik6IExpa2V3aXNlLgoKMTk5OS0wNS0wNiAgTmF0aGFuIFNpZHdlbGwgIDxuYXRoYW5AYWNtLm9yZz4KCgkqIGNhbGwuYyAoYnVpbGRfbmV3X21ldGhvZF9jYWxsKTogVXNlIFRZUEVfTUFJTl9WQVJJQU5UIG9mIGNsYXNzLgoKMTk5OS0wNS0wNSAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGRlY2wyLmMgKHN0YXJ0X29iamVjdHMpOiBEb24ndCBsZXQgc3RhdGljIGNvbnN0cnVjdG9ycyBhbmQKCWRlc3RydWN0b3JzIGdldCBpbmxpbmVkLgoKCSogcGFyc2UueSAobmVzdGVkX25hbWVfc3BlY2lmaWVyKTogTWFrZSBzdXJlIG9yZGluYXJ5IHR5cGVzIGFyZQoJY29tcGxldGUsIGp1c3QgbGlrZSB0ZW1wbGF0ZSB0eXBlcy4KCSogcGFyc2UuYzogUmVnZW5lcmF0ZWQuCgoJKiBwdC5jIChjaGVja19leHBsaWNpdF9zcGVjaWFsaXphdGlvbik6IEltcHJvdmUgZXJyb3IgbWVzc2FnZXMuCgoxOTk5LTA1LTA0ICBNYXJ0aW4gdm9uIEz2d2lzICA8bG9ld2lzQGluZm9ybWF0aWsuaHUtYmVybGluLmRlPgoKCSogdHlwZWNrLmMgKHN0cmluZ19jb252X3ApOiBVc2Ugc2FtZV90eXBlX3AgdG8gY2hlY2sgd2hldGhlciB3ZQoJdHJ5IHRvIGNvbnZlcnQgYmV0d2VlbiBjaGFyIGFuZCB3Y2hhcl90LgoKMTk5OS0wNS0wMyAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIHNlYXJjaC5jIChsb29rdXBfZmllbGRfcik6IFNldCB0aGUgVFJFRV9UWVBFIG9mIGFuIGFtYmlndW91cwoJbG9va3VwIHRvIGVycm9yX21hcmtfbm9kZSBoZXJlLgoJKGxvb2t1cF9tZW1iZXIpOiBSZXZpc2UgZG9jdW1lbnRhdGlvbi4gIEFkZCBjb21tZW50cy4gIERvbid0IHNldAoJdGhlIFRSRUVfVFlQRSB0byBlcnJvcl9tYXJrX25vZGUgaGVyZSwgYW5kIGRvbid0IGJ1aWxkIHVwIGFuIGV4dHJhCglUUkVFX0xJU1QgZm9yIGFtYmlndW91cyBsb29rdXBzLgoJKHNldHVwX2NsYXNzX2JpbmRpbmdzKTogQWRqdXN0IGFjY29yZGluZ2x5LgoJKHB1c2hfY2xhc3NfZGVjbHMpOiBSZXZpc2Ugb3V0LW9mLWRhdGUgY29tbWVudHMuCgkKCSogdHlwZWNrLmMgKGJ1aWxkX2NvbnN0X2Nhc3QpOiBUaWdodGVuIGNoZWNrcyBmb3IgbGVnYWxpdHkuCgoxOTk5LTA1LTAyICBNYXJ0aW4gdm9uIEz2d2lzICA8bG9ld2lzQGluZm9ybWF0aWsuaHUtYmVybGluLmRlPgoKCSogaW5pdC5jIChidWlsZF9tZW1iZXJfY2FsbCk6IExvb2t1cCBuYW1lcyBjb21pbmcgZnJvbQoJbmFtZXNwYWNlLXNjb3BlZCBMT09LVVBfRVhQUi4KCjE5OTktMDUtMDMgIEppbSBCbGFuZHkgIDxqaW1iQHp3aW5nbGkuY3lnbnVzLmNvbT4KCgkqIGd4eGludC50ZXhpOiBBZGQgZG9jdW1lbnRhdGlvbiBmb3IgJ0knLgoKMTk5OS0wNS0wMiAgTWFydGluIHZvbiBM9ndpcyAgPGxvZXdpc0BpbmZvcm1hdGlrLmh1LWJlcmxpbi5kZT4KCgkqIHRpbmZvLmNjIChvcGVyYXRvcj09KTogUXVhbGlmeSB0eXBlX2luZm8gd2l0aCBzdGQ6Oi4KCjE5OTktMDUtMDIgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjcC10cmVlLmggKGxhbmdfZGVjbF9mbGFncyk6IFJlbW92ZSBjb21kYXQuICBVcGRhdGVkIGR1bW15LgoJKERFQ0xfQ09NREFUKTogUmVtb3ZlIGRlZmluaXRpb24uCgoxOTk5LTA1LTAxICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogZGVjbC5jICh3cmFwdXBfZ2xvYmFsc19mb3JfbmFtZXNwYWNlKTogRml4IHRoaW5rbyBpbiBwcmV2aW91cwoJY2hhbmdlLgoKMTk5OS0wNC0zMCAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGNsYXNzLmMgKGJ1aWxkX3Z0YWJsZSk6IFVzZSBidWlsZF9sYW5nX2RlY2wgd2hlbiBidWlsZGluZwoJdnRhYmxlcywgbm90IGp1c3QgYnVpbGRfZGVjbC4KCShwcmVwYXJlX2ZyZXNoX3Z0YWJsZSk6IExpa2V3aXNlLgoJKiBkZWNsLmMgKHdyYXB1cF9nbG9iYWxzX2Zvcl9uYW1lc3BhY2UpOiBNYXJrIHZ0YWJsZXMgYXMKCURFQ0xfRVhURVJOQUwgd2hlbiBjYWxsaW5nIHdyYXB1cF9nbG9iYWxfZGVjbGFyYXRpb25zLgoJKiBkZWNsMi5jIChwcmlvcml0eV9pbmZvX3MpOiBBZGQgaW5pdGlhbGl6YXRpb25zX3AgYW5kCglkZXN0cnVjdGlvbnNfcCBtZW1iZXJzLgoJKGZpbmlzaF92dGFibGVfdmFyZGVjbCk6IFVzZSBUUkVFX1NZTUJPTF9SRUZFUkVOQ0VELCBub3QgVFJFRV9VU0VELAoJd2hlbiBkZWNpZGluZyB3aGF0IHZ0YWJsZXMgdG8gd3JpdGUgb3V0LgoJKHNzZGZfZGVjbHMpOiBOZXcgdmFyaWFibGUuCgkoc3NkZl9kZWNsc191c2VkKTogTGlrZXdpc2UuCgkoc3RhcnRfc3RhdGljX3N0b3JhZ2VfZHVyYXRpb25fZnVuY3Rpb24pOiBEZWFsIHdpdGggYmVpbmcgY2FsbGVkCgltdWx0aXBsZSB0aW1lcy4gIEF2b2lkIGlubGluaW5nIHRoaXMgZnVuY3Rpb24uCgkoZ2VuZXJhdGVfaW5pdHNfZm9yX3ByaW9yaXR5KTogRGVhbCB3aXRoIHJldXNlIG9mIHByaW9yaXR5IG1hcC4KCShnZXRfcHJpb3JpdHlfaW5mbyk6IENsZWFyIGluaXRpYWxpemF0aW9uc19wIGFuZCBkZXN0cnVjdGlvbnNfcC4KCShkb19zdGF0aWNfaW5pdGlhbGl6YXRpb24pOiBUd2VhayBjb21tZW50LgoJKGRvX3N0YXRpY19kZXN0cnVjdGlvbik6IExpa2V3aXNlLiAgRml4IGNvbmRpdGlvbiBvbiBzZW50cmllcyBmb3IKCWRlc3RydWN0aW9uLgoJKGdlbmVyYXRlX2N0b3Jfb3JfZHRvcl9mdW5jdGlvbik6IENhbGwgYWxsIG9mIHRoZSBzdGF0aWMgc3RvcmFnZQoJZHVyYXRpb24gZnVuY3Rpb25zLgoJKGdlbmVyYXRlX2N0b3Jfb3JfZHRvcl9mdW5jdGlvbl9mb3JfcHJpb3JpdHkpOiBDaGVjawoJaW5pdGlhbGl6YXRpb25zX3AgYW5kIGRlc3RydWN0aW9uc19wIHRvIHNlZSB3aGF0IHByaW9yaXRpZXMgbmVlZAoJaW5pdGlhbGl6YXRpb24gZnVuY3Rpb25zLgoJKGZpbmlzaF9maWxlKTogUmV3b3JrIHRvIGdlbmVyYXRlIG11bHRpcGxlIHN0YXRpYyBzdG9yYWdlIGR1cmF0aW9uCglmdW5jdGlvbnMsIHJhdGhlciB0aGFuIGp1c3Qgb25lLgoKCSogdHlwZWNrLmMgKGJ1aWxkX2NvbnN0X2Nhc3QpOiBUd2VhayBsYXN0IGNoYW5nZSB0byBoYW5kbGUKCXRlbXBsYXRlcyBjb3JyZWN0bHkuCgoJKiB0eXBlY2suYyAoYnVpbGRfY29uc3RfY2FzdCk6IERpc2FsbG93IHVzZSBvZiBjb25zdF9jYXN0IHRvCglhbnl0aGluZyBidXQgYSBwb2ludGVyIG9yIHJlZmVyZW5jZSB0eXBlLgoKMTk5OS0wNC0zMCAgTmF0aGFuIFNpZHdlbGwgIDxuYXRoYW5AYWNtLm9yZz4KCgkqIGRlY2wuYyAoY3BfZmluaXNoX2RlY2wpOiBEb24ndCBwZXJtaXQgYXJyYXlzIG9mIGFic3RyYWN0IG9yCglzaWduYXR1cmUgdHlwZS4KCjE5OTktMDQtMjkgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBkZWNsMi5jIChkb19zdGF0aWNfZGVzdHJ1Y3Rpb24pOiBSZW1vdmUgb2Jzb2xldGUgRklYTUUgY29tbWVudC4KCShmaW5pc2hfZmlsZSk6IEluZGVudCBjb21tZW50cyBwcm9wZXJseS4KCjE5OTktMDQtMjkgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgoJKiBkZWNsMi5jIChkb19zdGF0aWNfaW5pdGlhbGl6YXRpb24pOiBDYWxsIGRvX3BlbmRpbmdfc3RhY2tfYWRqdXN0LgoJKGRvX3N0YXRpY19kZXN0cnVjdGlvbik6IExpa2V3aXNlLgoKMTk5OS0wNC0yOSAgTmF0aGFuIFNpZHdlbGwgIDxuYXRoYW5AYWNtLm9yZz4KCgkqIGNwLXRyZWUuaCAoVFlQRV9OT1RIUk9XX1ApOiBOZXcgbWFjcm8uCgkqIGRlY2wyLmMgKGRlbGV0ZV9zYW5pdHkpOiBXYXJuIG9uIGRlbGV0aW5nIHZvaWQgKi4KCSogaW5pdC5jIChidWlsZF9uZXdfMSk6IFVzZSBUWVBFX05PVEhST1dfUC4KCSogdHlwZWNrLmMgKGNfZXhwYW5kX3JldHVybik6IGNwX3BlZHdhcm4gb24gcmV0dXJuaW5nIE5VTEwgZnJvbQoJdGhyb3dpbmcgb3BlcmF0b3IgbmV3LgoKMTk5OS0wNC0yOCAgTmF0aGFuIFNpZHdlbGwgIDxuYXRoYW5AYWNtLm9yZz4KCgkqIGNwLXRyZWUuaCAoYnVpbGRfY29tcG9uZW50X2FkZHIpOiBSZW1vdmUgcHJvdG90eXBlLgoJKiB0eXBlY2suYyAoYnVpbGRfY29tcG9uZW50X2FkZHIpOiBNYWtlIHN0YXRpYy4gUmVtb3ZlIE1TRwoJYXJndW1lbnQuCgkoYnVpbGRfY29tcG9uZW50X2FkZHIpOiBSZW1vdmUgTVNHIHBhcmFtZXRlciwgY2xlYW4gdXAKCWNvbW1lbnQuCgkoYnVpbGRfeF9mdW5jdGlvbl9jYWxsKTogVXNlIGNwX2Vycm9yLgoJKGJ1aWxkX3VuYXJ5X29wKTogQWRqdXN0IGNhbGwgb2YgYnVpbGRfY29tcG9uZW50X2FkZHIuCgoxOTk5LTA0LTI4ICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogcHQuYyAodHN1YnN0X2ZyaWVuZF9jbGFzcyk6IENoZWNrIGZvciBOVUxMLgoKV2VkIEFwciAyOCAxMTo0MjoyMiAxOTk5ICBBbmRyZWFzIFNjaHdhYiAgPHNjaHdhYkBpc3Nhbi5jcy51bmktZG9ydG11bmQuZGU+CgoJKiBzZWFyY2guYyAoYmluZm9fZm9yX3Z0YWJsZSk6IEluaXRpYWxpemUgYmZ2aS52YXIuCgoxOTk5LTA0LTI3ICBOYXRoYW4gU2lkd2VsbCAgPG5hdGhhbkBhY20ub3JnPgoKCSogcnR0aS5jIChidWlsZF94X3R5cGVpZCk6IENoZWNrIHJ0dGkgaXMgZW5hYmxlZC4KCjE5OTktMDQtMjYgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBzZWFyY2guYyAoaXNfc3Vib2JqZWN0X29mX3ApOiBNYWtlIHN1cmUgd2UncmUgbG9va2luZyBhdCB0aGUKCXJpZ2h0IGJhc2VjbGFzc2VzLgoKMTk5OS0wNC0yNiAgTWFyYyBFc3BpZSAgPGVzcGllQGN2cy5vcGVuYnNkLm9yZz4KCgkqIE1ha2UtbGFuZy5pbiAoY3BsaWIyLnJlYWR5KTogRG9uJ3QgZGVwZW5kIG9uIHBob255IHRhcmdldHMuCgoxOTk5LTA0LTIzICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogZGVjbDIuYyAoZmluaXNoX2ZpbGUpOiBUd2VhayBoYW5kbGluZyBvZiBleHRlcm4gaW5saW5lcyBzbyB0aGF0Cgl0aGV5IGFyZSBub3QgdW5uZWNlc3NhcmlseSBwdXQgb3V0LgoKCSogc2VhcmNoLmMgKGlzX3N1Ym9iamVjdF9vZl9wKTogSGFuZGxlIFRFTVBMQVRFX1RZUEVfUEFSTXMgYW5kCglzdWNoIGFzIGJhc2UgY2xhc3Nlcy4KCjE5OTktMDQtMjIgIEJyZW5kYW4gS2Vob2UgIDxicmVuZGFuQGN5Z251cy5jb20+CgoJKiB0cmVlLmMgKGJ1aWxkX2V4Y2VwdGlvbl92YXJpYW50KTogRml4IHR5cG86IHVzZSB0aGUgY2hhaW4gb2YgVSwKCW5vdCB0cnlpbmcgViwgd2hpbGUgY3ljbGluZyB0aHJvdWdoIFUuCgoxOTk5LTA0LTIyICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogY3AtdHJlZS5oIChsYW5nX2RlY2xfZmxhZ3MpOiBSZW1vdmUgcmV0dXJuc19maXJzdF9hcmcgYW5kCglwcmVzZXJ2ZXNfZmlyc3RfYXJnLiAgRW5sYXJnZSBkdW1teSBhY2NvcmRpbmdseS4KCShERUNMX1RJTkZPX0ZOX1ApOiBOZXcgbWFjcm8uCgkoU0VUX0RFQ0xfVElORk9fRk5fUCk6IExpa2Vpd3NlLgoJKERFQ0xfUkVUVVJOU19GSVJTVF9BUkcpOiBSZW1vdmUuCgkoREVDTF9QUkVTRVJWRVNfVEhJUyk6IExpa2V3aXNlLgoJKERFQ0xfSU5JVF9QUklPUklUWSk6IE5ldyBtYWNyby4KCShmaW5pc2hfc3RydWN0XzEpOiBDaGFuZ2UgcHJvdG90eXBlLgoJKGNhdF9uYW1lc3BhY2VfbGV2ZWxzKTogUmVtb3ZlIHByb3RvdHlwZS4KCSh2dGFibGVfZGVjbF9wKTogTmV3IHByb3RvdHlwZS4KCSh2dHlwZV9kZWNsX3ApOiBMaWtld2lzZS4KCShzaWd0YWJsZV9kZWNsX3ApOiBMaWtld2lzZS4KCSh3YWxrX2dsb2JhbHNfcHJlZCk6IE5ldyB0eXBlZGVmLgoJKHdhbGtfZ2xvYmFsc19mbik6IExpa2V3aXNlLgoJKHdhbGtfZ2xvYmFscyk6IE5ldyBwcm90b3R5cGUuCgkod2Fsa19uYW1lc3BhY2VzX2ZuKTogTmV3IHR5cGVkZWYuCgkod2Fsa19uYW1lc3BhY2VzKTogTmV3IHByb3RvdHlwZS4KCSh3cmFwdXBfZ2xvYmFsc19mb3JfbmFtZXNwYWNlKTogTGlrZXdpc2UuCgkod2Fsa192dGFibGVzKTogUmVtb3ZlIHByb3RvdHlwZS4KCSh3YWxrX3NpZ3RhYmxlcyk6IExpa2V3aXNlLgoJKGluc3RhbnRpYXRlX3BlbmRpbmdfdGVtcGxhdGVzKTogTmV3IHByb3RvdHlwZS4KCSogY2xhc3MuYyAoZmluaXNoX3N0cnVjdF8xKTogRG9uJ3QgcmV0dXJuIGEgdmFsdWUuCgkqIGRlY2wuaCAocGVuZGluZ19zdGF0aWNzKTogUmVtb3ZlIGRlY2xhcmF0aW9uLgoJKiBkZWNsLmMgKHdhbGtfbmFtZXNwYWNlc19yKTogTmV3IGZ1bmN0aW9uLgoJKHdhbGtfZ2xvYmFsc19yKTogTGlrZXdpc2UuCgkodnRhYmxlX2RlY2xfcCk6IExpa2V3aXNlLgoJKHZ0eXBlX2RlY2xfcCk6IExpa2V3aXNlLgoJKHNpZ3RhYmxlX2RlY2xfcCk6IExpa2V3aXNlLgoJKHdhbGtfbmFtZXNwYWNlcyk6IExpa2V3aXNlLgoJKHdhbGtfZ2xvYmFsc19kYXRhKTogTmV3IHR5cGUuCgkod2Fsa19nbG9iYWxzKTogTmV3IGZ1bmN0aW9uLgoJKHdyYXB1cF9nbG9iYWxzX2Zvcl9uYW1lc3BhY2UpOiBMaWtld2lzZS4KCShleHBhbmRfc3RhdGljX2luaXQpOiBSZW1vdmUgYXNzZXJ0aW9uLiAgUmVtb3ZlIHJlZHVuZGFuY3kgaW4KCWNvbmRpdGlvbmFsLiAgRG9uJ3QgcHV0IHN0YXRpYyBkYXRhIG1lbWJlcnMgaW4gc3RhdGljX2FnZ3JlZ2F0ZXMKCVRpZHkuCgkoZmluaXNoX2Z1bmN0aW9uKTogUmVtb3ZlIHJlZHVuZGFuY3kgaW4gY29uZGl0aW9uYWwuICBEb24ndCBzZXQKCURFQ0xfUkVUVVJOU19GSVJTVF9BUkcuCgkoY2F0X25hbWVzcGFjZV9sZXZlbHMpOiBSZW1vdmUuCgkqIGRlY2wyLmM6IEluY2x1ZGUgc3BsYXktdHJlZS5oIGFuZCB2YXJyYXkuaC4KCShwcmlvcml0eV9pbmZvX3MpOiBOZXcgc3RydWN0dXJlLgoJKGZpbmlzaF92dGFibGVfdmFyZGVjbCk6IENoYW5nZSBwcm90b3R5cGUuICBBZGp1c3QgZm9yIG5ldyBjYWxsaW5nCgljb252ZW50aW9ucy4KCShwcnVuZV92dGFibGVfdmFyZGVjbCk6IExpa2V3aXNlLgoJKGZpbmlzaF9zaWd0YWJsZV92YXJkZWNsKTogTGlrZXdpc2UuCgkoc2V0dXBfaW5pdHApOiBSZW1vdmUuCgkoZG9fZHRvcnMpOiBSZW1vdmUuCgkoZG9fY3RvcnMpOiBSZW1vdmUuCgkoc3RhcnRfc3RhdGljX3N0b3JhZ2VfZHVyYXRpb25fZnVuY3Rpb24pOiBOZXcgZnVuY3Rpb24uCgkoZ2VuZXJhdGVfaW5pdHNfZm9yX3ByaW9yaXR5KTogTGlrZXdpc2UuCgkoZmluaXNoX3N0YXRpY19zdG9yYWdlX2R1cmF0aW9uX2Z1bmN0aW9uKTogTGlrZXdpc2UuCgkoZ2V0X3ByaW9yaXR5X2luZm8pOiBMaWtld2lzZS4KCShkb19zdGF0aWNfaW5pdGlhbGl6YXRpb24pOiBMaWtld2lzZS4KCShkb19zdGF0aWNfZGVzdHJ1Y3Rpb24pOiBMaWtld2lzZS4KCShkb19zdGF0aWNfaW5pdGlhbGl6YXRpb25fYW5kX2Rlc3RydWN0aW9uKTogTGlrZXdpc2UuCgkoZ2VuZXJhdGVfY3Rvcl9vcl9kdG9yX2Z1bmN0aW9uKTogTGlrZXdpc2UuCgkoZ2VuZXJhdGVfY3Rvcl9hbmRfZHRvcl9mdW5jdGlvbnNfZm9yX3ByaW9yaXR5KTogTGlrZXdpc2UuCgkocGVuZGluZ19zdGF0aWNzKTogTWFrZSBpdCBhIHZhcnJheS4KCShwZW5kaW5nX3N0YXRpY3NfdXNlZCk6IE5ldyB2YXJpYWJsZS4KCShzYXZlZF9pbmxpbmVzKTogTWFrZSBpdCBhIHZhcnJheS4KCShzYXZlZF9pbmxpbmVzX3VzZWQpOiBOZXcgdmFyaWFibGUuCgkoZmluaXNoX3N0YXRpY19kYXRhX21lbWJlcik6IENoYW5nZSBtZXRob2Qgb2YgdXBkYXRpbmcKCXBlbmRpbmdfc3RhdGljcy4KCShtYXJrX2lubGluZV9mb3Jfb3V0cHV0KTogUmVtb3ZlICNpZiAwJ2QgY29kZS4gIENoYW5nZSBtZXRob2Qgb2YKCXVwZGF0aW5nIHNhdmVkX2lubGluZXMuCgkod2Fsa192dGFibGVzKTogUmVtb3ZlLgoJKHdhbGtfc2lndGFibGVzKTogTGlrZXdpc2UuCgkoaW1wb3J0X2V4cG9ydF9kZWNsKTogVXNlIERFQ0xfVElORk9fRk5fUC4KCShwZW5kaW5nX3RlbXBsYXRlcyk6IFJlbW92ZSBkZWNsYXJhdGlvbi4KCShtYXliZV90ZW1wbGF0ZXMpOiBMaWtld2lzZS4KCShzdGF0aWNfYWdncmVnYXRlc19pbml0cCk6IExpa2V3aXNlLgoJKHNldHVwX2luaXRwKTogTGlrZXdpc2UuCgkoZmluaXNoX29iamVjdHMpOiBTaW1wbGlmeS4KCShJTklUSUFMSVpFX1BfSURFTlRJRklFUik6IE5ldyBtYWNyby4KCShQUklPUklUWV9JREVOVElGSUVSKTogTmV3IG1hY3JvLgoJKFNTREZfSURFTlRJRklFUik6IE5ldyBtYWNyby4KCShpbml0aWFsaXplX3BfZGVjbCk6IE5ldyB2YXJpYWJsZS4KCShwcmlvcml0eV9kZWNsKTogTGlrZXdpc2UuCgkoc3NkZl9kZWNsKTogTGlrZXdpc2UuCgkocHJpb3JpdHlfaW5mb19tYXApOiBMaWtld2lzZS4KCShmaW5pc2hfZmlsZSk6IFJlY29kZSBvdXRwdXQgb2Ygc3RhdGljIGludGlhbGl6ZXJzIGFuZCBvdGhlcgoJZmlsZS1zY29wZSBmaW5hbGl6YXRpb24gdGFza3MuCgkqIGVycm9yLmMgKE9CX0VORF9URU1QTEFURV9JRCk6IE5ldyBtYWNyby4KCShkdW1wX3R5cGVfcmVhbCk6IFVzZSBpdC4KCShkdW1wX2RlY2wpOiBMaWtld2lzZS4KCShkdW1wX2Z1bmN0aW9uX25hbWUpOiBMaWtld2lzZS4KCSogbGV4LmMgKHNldF90eXBlZGVjbF9pbnRlcmZhY2VfaW5mbyk6IEFkanVzdCBmb3IgbmV3IHdhbGtfZ2xvYmFscwoJaW50ZXJmYWNlLgoJKGNoZWNrX25ld2xpbmUpOiBVc2Ugd2Fsa19nbG9iYWxzLCBub3Qgd2Fsa192dGFibGVzLgoJKiBwdC5jIChwZW5kaW5nX3RlbXBhbHRlX2V4cGFuc2lvbnMpOiBSZW1vdmUuCgkoc2V0X3ZhcmRlY2xfaW50ZXJmYWNlX2luZm8pOiBMaWtld2lzZS4KCShwZW5kaW5nX3RlbXBsYXRlcyk6IE1ha2Ugc3RhdGljLgoJKG1heWJlX3RlbXBsYXRlcyk6IExpa2V3aXNlLgoJKGluc3RhbnRpYXRlX2NsYXNzX3RlbXBsYXRlKTogQWRqdXN0IGNhbGwgdG8gZmluaXNoX3N0cnVjdF8xLgoJKGluc3RhbnRpYXRlX3BlbmRpbmdfdGVtcGxhdGVzKTogTmV3IGZ1bmN0aW9uLgoJKiBydHRpLmMgKGdldF90aW5mb19mbik6IFVzZSBTRVRfREVDTF9USU5GT19GTl9QLgoJKiB0cmVlLmMgKHN0YXRpY19hZ2dyZWdhdGVzX2luaXRwKTogUmVtb3ZlLgoJKGNwX3ZhbGlkX2xhbmdfYXR0cmlidXRlKTogRG9uJ3QgdXNlIGl0OyB1c2UgREVDTF9JTklUX1BSSU9SSVRZCglpbnN0ZWFkLgoJKiBNYWtlZmlsZS5pbiAoZGVjbDIubyk6IERlcGVuZCBvbiB2YXJyYXkuaCBhbmQgc3BsYXktdHJlZS5oLgoKCSogZ3h4LmdwZXJmIChSRVRVUk4pOiBSZW5hbWUgdG8gUkVUVVJOX0tFWVdPUkQgdG8gYXZvaWQgY2xhc2hlcwoJd2l0aCB0aGUgUlRMIGNvZGUgUkVUVVJOLgoJKiBoYXNoLmg6IFJlZ2VuZXJhdGVkLgoJKiBsZXguYyAocmVpbml0X3BhcnNlX2Zvcl9ibG9jayk6IFVzZSBSRVRVUk5fS0VZV09SRC4KCSogcGFyc2UueTogUmVwbGFjZSBSRVRVUk4gd2l0aCBSRVRVUk5fS0VZV09SRCB0aHJvdWdob3V0LgoJKiBwYXJzZS5jOiBSZWdlbmVyYXRlZC4KCSogcHQuYzogSW5jbHVkZSB2YXJyYXkuaC4gIEluY2x1ZGUgcnRsLmggc2luY2UgdmFycmF5LmggcmVxdWlyZXMKCWl0LgoJKGlubGluZV9wYXJtX2xldmVscyk6IE5ldyB2YXJpYWJsZS4KCShpbmxpbmVfcGFybV9sZXZlbHNfdXNlZCk6IExpa2V3aXNlLgoJKG1heWJlX2JlZ2luX21lbWJlcl90ZW1wbGF0ZV9wcm9jZXNzaW5nKTogVXBkYXRlIHRoZW0uCgkobWF5YmVfZW5kX21lbWJlcl90ZW1wbGF0ZV9wcm9jZXNzaW5nKTogVXNlIHRoZW0sIHJhdGhlciB0aGFuCglndWVzc2luZyBob3cgbWFueSBsZXZlbHMgdG8gcG9wLgoKCSogZGVjbC5jIChtYWtlX3R5cGVuYW1lX3R5cGUpOiBUaWdodGVuIGVycm9yLWNoZWNraW5nLgoKMTk5OS0wNC0yMCAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGNwLXRyZWUuaCAoYnVpbGRfYmluYXJ5X29wKTogUmVtb3ZlIHVubmVlZGVkIHBhcmFtZXRlci4KCSogY2xhc3MuYyAoYnVpbGRfdnJhYmxlX2VudHJ5X3JlZik6IEFkanVzdCBjYWxsIHRvCglidWlsZF9iaW5hcnlfb3AuCgkqIGRlY2wuYyAoZXhwYW5kX3N0YXRpY19pbml0KTogTGlrZXdpc2UuCgkoZ3Jva2RlY2xhcmF0b3IpOiBMaWtld2lzZS4KCShmaW5pc2hfZnVuY3Rpb24pOiBMaWtld2lzZS4KCSogZGVjbDIuYyAoZGVsZXRlX3Nhbml0eSk6IExpa2V3aXNlLgoJKGRvX2R0b3JzKTogTGlrZXdpc2UuCgkoZG9fY3RvcnMpOiBMaWtld2lzZS4KCSogZXJyb3IuYyAoZHVtcF90eXBlX3N1ZmZpeCk6IExpa2V3aXNlLgoJKiBleHByLmMgKGNwbHVzX2V4cGFuZF9leHByKTogTGlrZXdpc2UuCgkqIGluaXQuYyAocmVzb2x2ZV9vZmZzZXRfcmVmKTogTGlrZXdpc2UuCgkoYnVpbGRfbmV3KTogTGlrZXdpc2UuCgkoYnVpbGRfbmV3XzEpOiBMaWtld2lzZS4KCShidWlsZF92ZWNfZGVsZXRlXzEpOiBMaWtld2lzZS4KCShleHBhbmRfdmVjX2luaXRfY2F0Y2hfY2xhdXNlKTogTGlrZXdpc2UuCgkoYnVpbGRfZGVsZXRlKTogTGlrZXdpc2UuCgkqIHB0LmMgKHRzdWJzdCk6IExpa2V3aXNlLgoJKiBydHRpLmMgKHN5bnRoZXNpemVfdGluZm9fZm4pOiBMaWtld2lzZS4KCSogc2VhcmNoLmMgKGV4cGFuZF91cGNhc3RfZml4dXBzKTogTGlrZXdpc2UuCgkoZXhwYW5kX2RpcmVjdF92dGJsc19pbml0KTogTGlrZXdpc2UuCgkqIHR5cGVjay5jIChnZXRfbWVtYmVyX2Z1bmN0aW9uX2Zyb21fcHRyZnVuYyk6IExpa2V3aXNlLgoJKGJ1aWxkX2JpbmFyeV9vcF9ub2RlZmF1bHQpOiBMaWtld2lzZS4KCShwb2ludF9pbnRfc3VtKTogTGlrZXdpc2UuCgkocG9pbnRlcl9kaWZmKTogTGlrZXdpc2UuCgkoYnVpbGRfdW5hcnlfb3ApOiBMaWtld2lzZS4KCShidWlsZF9tb2RpZnlfZXhwcik6IExpa2V3aXNlLgoJKGdldF9kZWx0YV9kaWZmZXJlbmNlKTogTGlrZXdpc2UuCgkoYnVpbGRfcHRybWVtZnVuYyk6IExpa2V3aXNlLgoJKGV4cGFuZF9wdHJtZW1mdW5jX2NzdCk6IExpa2V3aXNlLgoKMTk5OS0wNC0yMCAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogZGVjbC5jIChncm9rZm5kZWNsKTogQWx3YXlzIGNhbGwgY3BsdXNfZGVjbF9hdHRyaWJ1dGVzLgoJKiBkZWNsMi5jIChncm9rZmllbGQpOiBQYXNzIGF0dHJsaXN0IHRvIGdyb2tkZWNsYXJhdG9yLgoKMTk5OS0wNC0xOSAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGNwLXRyZWUuaCAoZmluaXNoX3N0YXRpY19kYXRhX21lbWJlcl9kZWNsKTogTmV3IGZ1bmN0aW9uLgoJKiBkZWNsMi5jIChmaW5pc2hfc3RhdGljX2RhdGFfbWVtYmVyX2RlY2wpOiBTcGxpdCBvdXQgZnJvbSAuLi4KCShncm9rZmllbGQpOiBIZXJlLgoJKiBwdC5jIChpbnN0YW50aWF0ZV9jbGFzc190ZW1wbGF0ZSk6IFVzZSBpdCBoZXJlIGluc3RlYWQgb2YKCXRyeWluZyB0byBmYWtlIGl0LgoJKHRzdWJzdF9kZWNsKTogRG9uJ3Qgc2V0IERFQ0xfQVNTRU1CTEVSX05BTUU7CglmaW5pc2hfc3RhdGljX2RhdGFfbWVtYmVyX2RlY2wgd2lsbCBkbyB0aGF0LiAgRXhwbGljaXQgc2V0CglERUNMX0VYVEVSTkFMIHRvIG1hdGNoIG5vbi10ZW1wbGF0ZSBwcm9jZXNzaW5nLgoKMTk5OS0wNC0xOCAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGNwLXRyZWUuaCAoZmluaXNoX2NsYXNzX2RlZmluaXRpb24pOiBBZGQgcGFyYW1ldGVyLgoJKiBwYXJzZS55IChzdHJ1Y3RzcCk6IFVzZSBpdC4gIERvbid0IGNhbGwgcG9wX3Njb3BlIGhlcmUuCgkqIHBhcnNlLmM6IFJlZ2VuZXJhdGVkLgoJKiBzZW1hbnRpY3MuYyAoZmluaXNoX2NsYXNzX2RlZmluaXRpb24pOiBQb3AgaXQgaGVyZS4KCjE5OTktMDQtMTcgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBkZWNsLmMgKHhyZWZfdGFnKTogUmV2aXNlIGhhbmRsaW5nIG9mIG5lc3RlZCB0ZW1wbGF0ZQoJZGVjbGFyYXRpb25zLgoJKiBwdC5jIChjaGVja19leHBsaWNpdF9zcGVjaWFsaXphdGlvbik6IFR3ZWFrIGhhbmRsaW5nIG9mIGZyaWVuZAoJdGVtcGxhdGVzIGluIHRlbXBsYXRlIGNsYXNzZXMuCgkodHN1YnN0X2ZyaWVuZF9jbGFzcyk6IEhhbmRsZSBmcmllbmQgZGVjbGFyYXRpb25zIGZvciBuZXN0ZWQKCW1lbWJlciB0ZW1wbGF0ZSBjbGFzc2VzLgoKMTk5OS0wNC0xNiAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGNsYXNzLmMgKGZpbmlzaF9zdHJ1Y3QpOiBSZW1vdmUgdW51c2VkIHZhcmlhYmxlLgoJKHB1c2hjbGFzcyk6IExpa2V3aXNlLgoJKGludmFsaWRhdGVfY2xhc3NfbG9va3VwX2NhY2hlKTogTGlrZXdpc2UuCgkqIGNwLXRyZWUuZGVmIChUWVBFTkFNRV9UWVBFKTogSW1wcm92ZSBkb2N1bWVudGF0aW9uLgoJKiBkZWNsLmMgKGJ1aWxkX3R5cGVuYW1lX3R5cGUpOiBNYWtlIHN1cmUgVFlQRU5BTUVfVFlQRV9GVUxMTkFNRQoJZG9lc24ndCBnZXQgb2JsaXRlcmF0ZWQuCgkobWFrZV90eXBlbmFtZV90eXBlKTogSGFuZGxlIHRlbXBsYXRlIGNsYXNzZXMgY29ycmVjdGx5LgoKCSogY3AtdHJlZS5oIChUUkVFX05PTkxPQ0FMX0ZMQUcpOiBSZW1vdmUuCgkoc3RvcmV0YWdzKTogRGVjbGFyZS4KCSogY2xhc3MuYyAoZmluaXNoX3N0cnVjdCk6IERvbid0IHVzZSBUUkVFX05PTkxPQ0FMX0ZMQUcuCgkocHVzaGNsYXNzKTogTGlrZXdpc2UuICBVc2Ugc3RvcmV0YWdzIHRvIGluc3RhbGwgdGFnIGRlY2xhcmF0aW9ucywKCW5vdCBwdXNodGFnLgoJKGludmFsaWRhdGVfY2xhc3NfbG9va3VwX2NhY2hlKTogRG9uJ3QgdXNlIFRSRUVfTk9OTE9DQUxfRkxBRy4KCSogZGVjbC5jIChzdG9yZXRhZ3MpOiBNYWtlIGl0IGdsb2JhbC4KCShwdXNoX2NsYXNzX2JpbmRpbmcpOiBTZXQgSU5IRVJJVEVEX1ZBTFVFX0JJTkRJTkdfUCBmb3IgYW4KCWltcGxpY2l0IHR5cGVuYW1lIGRlY2xhcmF0aW9uLgoJKHB1c2h0YWcpOiBUaWR5LiAgRG9uJ3QgdXNlIFRSRUVfTk9OTE9DQUxfRkxBRy4KCSogbWV0aG9kLmMgKGhhY2tfaWRlbnRpZmllcik6IExpa2V3aXNlLgoJKiBzZWFyY2guYyAobG9va3VwX21lbWJlcik6IExpa2V3aXNlLgoKCSogZGVjbC5jICh3YXJuX2Fib3V0X2ltcGxpY2l0X3R5cGVuYW1lX2xvb2t1cCk6IE5ldyBmdW5jdGlvbi4KCShsb29rdXBfbmFtZV9yZWFsKTogVXNlIGl0LiAgUmV3b3JrIGhhbmRsaW5nIG9mIGltcGxpY2l0IHR5cGVuYW1lCglleHRlbnNpb24uCgoxOTk5LTA0LTE1ICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogY3AtdHJlZS5oIChsb29rdXBfbmVzdGVkX2ZpZWxkKTogUmVtb3ZlLgoJKiBjbGFzcy5jIChwdXNoX25lc3RlZF9jbGFzcyk6IEhhbmRsZSBVTklPTl9UWVBFcy4KCShwb3BfbmVzdGVkX2NsYXNzKTogTGlrZXdpc2UuCgkqIGRlY2wuYyAobG9va3VwX25hbWVfcmVhbCk6IERvbid0IGNhbGwgbG9va3VwX25lc3RlZF9maWVsZC4KCShzdGFydF9kZWNsKTogVXNlIHB1c2hfbmVzdGVkX2NsYXNzLCBub3QganVzdCBwdXNoY2xhc3MuCgkoY3BfZmluaXNoX2RlY2wpOiBVc2UgcG9wX25lc3RlZF9jbGFzcywgbm90IGp1c3QgcG9wY2xhc3MuCgkqIHNlYXJjaC5jIChsb29rdXBfbmVzdGVkX2ZpZWxkKTogUmVtb3ZlLgoKCSogY3AtdHJlZS5oIChsYW5nX3R5cGUpOiBBZGQgZG9jdW1lbnRhdGlvbi4KCSogZGVjbDIuYyAoaGFuZGxlX2NsYXNzX2hlYWQpOiBDcmVhdGUgdGVtcGxhdGUgZGVjbGFyYXRpb25zIGhlcmUsCglhcyBhcHByb3ByaWF0ZS4KCSogcGFyc2UueSAoY2xhc3NfaGVhZCk6IFJldHVybiB3aGV0aGVyIG9yIG5vdCB3ZSBlbnRlcmVkIGEgbmV3CglzY29wZSwgYXMgd2VsbCBhcyB0aGUgdHlwZSBuYW1lZC4KCShuYW1lZF9jbGFzc19oZWFkKTogTGlrZXdpc2UuCgkobmFtZWRfY29tcGxleF9jbGFzc19oZWFkX3NhbnNfYmFzZXR5cGUpOiBMaWtld2lzZS4KCShzdHJ1Y3RzcCk6IEFkanVzdCBhY2NvcmRpbmdseS4gIFBvcCBzY29wZSB3aGVuIHJlcXVpcmVkLgoJKiBwYXJzZS5jOiBSZWdlbmVyYXRlZC4KCSogcHQuYyAoY2hlY2tfZGVmYXVsdF90bXBsX2FyZ3MpOiBSb2J1c3RpZnkuCgkocmVkZWNsYXJlX2NsYXNzX3RlbXBsYXRlKTogTGlrZXdpc2UuCgkoaW5zdGFudGlhdGVfY2xhc3NfdGVtcGxhdGUpOiBBbiBpbnN0YW50aWF0aW9uIG9mIGFuCglhbm9ueW1vdXMgdW5pb24gaXMgaXRzZWxmIGFuIGFub255bW91cyB1bmlvbi4KCSogc2VtYW50aWNzLmMgKGJlZ2luX2NsYXNzX2RlZmluaXRpb24pOiBEb24ndCBjcmVhdGUgdGVtcGxhdGUKCWRlY2xhcmF0aW9ucyBoZXJlLgoKMTk5OS0wNC0xNSAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogcGFyc2UueSAoYWZ0ZXJfdHlwZV9kZWNsYXJhdG9yX2ludGVybik6IE5ldyBub250ZXJtaW5hbC4KCShhZnRlcl90eXBlX2RlY2xhcmF0b3IpOiBVc2UgaXQuCgkoZGlyZWN0X2FmdGVyX3R5cGVfZGVjbGFyYXRvcik6IExpa2V3aXNlLiAgTW92ZSBhYm92ZQoJbm9ubmVzdGVkX3R5cGUgdG8gZml4IHJlZHVjZS9yZWR1Y2UgY29uZmxpY3QgcmVzb2x1dGlvbi4KCShkZWNsbW9kcyk6IFJlZHVjaW5nIGZyb20ganVzdCAnYXR0cmlidXRlcycgaGFzIEVNUFRZIHByZWNlZGVuY2UuCgkqIE1ha2VmaWxlLmluIChDT05GTElDVFMpOiBVcGRhdGUuCgoJKiBkZWNsLmMgKGRlZmluZV9sYWJlbCk6IERvd25ncmFkZSBlcnJvciBmb3IganVtcGluZyBvdmVyIGEKCW5vbi1QT0QgZGVjbCB0byBwZWR3YXJuLgoKMTk5OS0wNC0xNCAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGNwLXRyZWUuaCAocG9wY2xhc3MpOiBDaGFuZ2UgZGVjbGFyYXRpb24uCgkocG9wX25lc3RlZF9jbGFzcyk6IExpa2V3aXNlLgoJKHBvcGxldmVsX2NsYXNzKTogUmVtb3ZlIGRlY2xhcmF0aW9uLgoJKiBjYWxsLmMgKGNvbnZlcnRfZGVmYXVsdF9hcmd1bWVudCk6IFBhc3Mgbm8gYXJndW1lbnRzIHRvCglwb3BjbGFzcy4KCSogY2xhc3MuYyAoZmluaXNoX3N0cnVjdF8xKTogTGlrZXdpc2UuCgkoZmluaXNoX3N0cnVjdCk6IExpa2V3aXNlLgoJKHBvcGNsYXNzKTogUmVtb3ZlIGFyZ3VtZW50LiAgU2ltcGxpZnkgY29kZSBhY2NvcmRpbmdseS4KCShwb3BfbmVzdGVkX2NsYXNzKTogTGlrZXdpc2UuCgkqIGRlY2wuYyAocG9wbGV2ZWxfY2xhc3MpOiBEZWNsYXJlIGl0IGhlcmUsIGFuZCBtYWtlIGl0IHN0YXRpYy4KCShwb3BsZXZlbCk6IEhhbmRsZSBjbGFzcyBzY29wZXMuCgkocG9wbGV2ZWxfY2xhc3MpOiBEb24ndCB0YWtlIGFuIHJndW1lbnQuICBTaW1wbGlmeS4KCShwb3BfZXZlcnl0aGluZyk6IFBhc3Mgbm8gYXJndW1lbnRzIHRvIHBvcF9uZXN0ZWRfY2xhc3MuCgkoY3BfZmluaXNoX2RlY2wpOiBQYXNzIG5vIGFyZ3VtZW50cyB0byBwb3BjbGFzcy4KCShncm9rZGVjbGFyYXRvcik6IFBhc3Mgbm8gYXJndW1lbnRzIHRvIHBvcF9uZXN0ZWRfY2xhc3MuCgkoZmluaXNoX2Z1bmN0aW9uKTogTGlrZXdpc2UuCgkqIGRlY2wyLmMgKGdyb2tmaWVsZCk6IExpa2V3aXNlLgoJKHBvcF9zY29wZSk6IFBhc3Mgbm8gYXJndW1lbnRzIHRvIHBvcGNsYXNzLgoJKiBsZXguYyAoZG9fcGVuZGluZ19kZWZhcmdzKTogUGFzcyBubyBhcmd1bWVudHMgdG8gcG9wX25lc3RlZF9jbGFzcy4KCSogcHQuYyAoaW5zdGFudGlhdGVfY2xhc3NfdGVtcGxhdGUpOiBNb3ZlIGNhbGwgdG8gcHVzaGNsYXNzLCBhbmQKCWRvY3VtZW50LiAgUGFzcyBubyBhcmd1bWVudHMgdG8gcG9wY2xhc3MuCgkocmVnZW5lcmF0ZV9kZWNsX2Zyb21fdGVtcGxhdGUpOiBMaWtld2lzZS4KCjE5OTktMDQtMTQgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIHR5cGVjay5jIChidWlsZF91bmFyeV9vcCk6IEhhbmRsZSB0YWtpbmcgdGhlIGFkZHJlc3Mgb2YgYSB1bmlxdWUKCWJvdW5kIG5vbi1zdGF0aWMgbWVtYmVyIGZ1bmN0aW9uLgoKMTk5OS0wNC0xMyAgTWFydGluIHZvbiBMb2V3aXMgIDxsb2V3aXNAaW5mb3JtYXRpay5odS1iZXJsaW4uZGU+CgoJKiBsYW5nLW9wdGlvbnMuaCAoLVdkZXByZWNhdGVkKTogTmV3IGZsYWcuCgkqIGRlY2wyLmMgKHdhcm5fZGVwcmVjYXRlZCk6IE5ldyBmbGFnLgoJKGxhbmdfZGVjb2RlX29wdGlvbik6IERlcHJlY2F0ZWQgdGhpcy1pcy12YXJpYWJsZSwKCWV4dGVybmFsLXRlbXBsYXRlcywgYWx0LWV4dGVybmFsLXRlbXBsYXRlcy4KCVN1cHBvcnQgLVdkZXByZWNhdGVkLgoJKiBlcnJmbi5jIChjcF9kZXByZWNhdGVkKTogTmV3IGZ1bmN0aW9uLgoKMTk5OS0wNC0xMyAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogZGVjbDIuYyAoc2V0dXBfaW5pdHApOiBDb21wYXJlIERFQ0xfQVNTRU1CTEVSX05BTUUgaW5zdGVhZAoJb2YgdGhlIGRlY2xzIHRoZW1zZWx2ZXMuCgoJKiBwdC5jICh0c3Vic3RfZnVuY3Rpb25fdHlwZSk6IENvcHkgYXR0cmlidXRlcyBvdmVyLgoKCSogdHJlZS5jIChjcF92YWxpZF9sYW5nX2F0dHJpYnV0ZSk6IE5ldyBmbi4gIEhhbmRsZSBpbml0X3ByaW9yaXR5CglhbmQgY29tX2ludGVyZmFjZS4KCSogY3AtdHJlZS5oOiBBZGQgcHJvdG90eXBlLgoJKiBkZWNsLmMgKGluaXRfZGVjbF9wcm9jZXNzaW5nKTogU2V0IHZhbGlkX2xhbmdfYXR0cmlidXRlLgoKMTk5OS0wNC0xMyAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGNsYXNzLmMgKGZpbmlzaF9zdHJ1Y3RfMSk6IExvb2sgYXQgdGhlIGNvbnN0LW5lc3Mgb2YgdGhlIGZpZWxkJ3MKCXR5cGUsIG5vdCB0aGUgVFJFRV9SRUFET05MWS1uZXNzIG9mIHRoZSBkZWNsYXJhdGlvbi4KCSogbWV0aG9kLmMgKHN5bnRoZXNpemVfbWV0aG9kKTogTGlrZXdpc2UuCgkqIHB0LmMgKHRzdWJzdF9kZWNsKTogQ2FsbCBjX2FwcGx5X3R5cGVfcXVhbHNfdG9fZGVjbCB3aGVuCgljcmVhdGluZyBuZXcgZGVjbGFyYXRpb25zLgoKMTk5OS0wNC0xMyAgTWlrZSBTdHVtcCAgPG1yc0B3cnMuY29tPgoKCSogZGVjbDIuYyAoaW1wb3J0X2V4cG9ydF9kZWNsKTogQmVjYXVzZSB2dGFibGVzIGFsd2F5cyByZWZlcmVuY2UKCXZpcnR1YWwgZnVuY3Rpb25zLCBldmVuIGlmIHRoZXkgYXJlIGlubGluZWQsIGRvbid0IGFsbG93CgktZm5vLWltcGxlbWVudC1pbmxpbmVzIHRvIG5vdCBlbWl0IHRoZW0sIGluc3RlYWQsIGVtaXQgdGhlbSB3aXRoCgl0aGUgdnRhYmxlLgoJKiBkZWNsLmMgKHN0YXJ0X2Z1bmN0aW9uKTogTGlrZXdpc2UuCgoxOTk5LTA0LTEyICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBjcC10cmVlLmggKHN0cnVjdCBsYW5nX3R5cGUpOiBBZGQgY29tX2ludGVyZmFjZS4KCShDTEFTU1RZUEVfQ09NX0lOVEVSRkFDRSk6IE5ldyBtYWNyby4KCSogY2xhc3MuYyAoc2V0X3J0dGlfZW50cnkpOiBDT00gaW50ZXJmYWNlIGNsYXNzZXMgaGF2ZSBubyBSVFRJCgllbnRyaWVzIGluIHRoZWlyIHZ0YWJsZXM7IGFkanVzdC4KCShhZGRfdmlydHVhbF9mdW5jdGlvbiwgZmluaXNoX2Jhc2Vfc3RydWN0LCBza2lwX3J0dGlfc3R1ZmYsCgltb2RpZnlfb25lX3Z0YWJsZSwgZml4dXBfdnRhYmxlX2RlbHRhczEsIG92ZXJyaWRlX29uZV92dGFibGUsCglmaW5pc2hfc3RydWN0XzEpOiBMaWtld2lzZS4KCSogZGVjbDIuYyAobWFya192dGFibGVfZW50cmllcyk6IExpa2V3aXNlLgoJKiBydHRpLmMgKGJ1aWxkX2hlYWRvZiwgZ2V0X3RpbmZvX2ZuX2R5bmFtaWMpOiBMaWtld2lzZS4KCSogc2VhcmNoLmMgKGdldF9hYnN0cmFjdF92aXJ0dWFsc18xLCBnZXRfYWJzdHJhY3RfdmlydHVhbHMsCglleHBhbmRfdXBjYXN0X2ZpeHVwcyk6IExpa2V3aXNlLgoJKiB0cmVlLmMgKGRlYnVnX2JpbmZvKTogTGlrZXdpc2UuCgoJKiBjcC10cmVlLmggKENPTVBBUkVfTk9fQVRUUklCVVRFUyk6IE5ldyBtYWNyby4KCSogdHlwZWNrLmMgKGNvbXB0eXBlcyk6IElmIHdlIGdldCBpdCwgaWdub3JlIGF0dHJpYnV0ZXMuCgkqIGNsYXNzLmMgKGluc3RhbnRpYXRlX3R5cGUpOiBVc2UgQkFTRUxJTktfUC4gIENoYW5nZSBjb21wbGFpbgoJcGFyYW1ldGVyIHRvIGZsYWdzOyAyIG1lYW5zIGlnbm9yZSBhdHRyaWJ1dGVzLgoJKiBjYWxsLmMgKGJ1aWxkX29wX2RlbGV0ZV9jYWxsKTogUGFzcyBpdC4KCgkqIGRlY2wuYyAoeHJlZl90YWcpOiBPbmx5IGNvbXBsYWluIG9uY2UgYWJvdXQgdXNpbmcgYSB0eXBlZGVmLW5hbWUKCXdpdGggJ3N0cnVjdCcuICBEb3duZ3JhZGUgdG8gcGVkd2Fybi4KCgkqIGRlY2wuYyAoZ3Jva2RlY2xhcmF0b3IpOiBBbGxvdyBbXSBzeW50YXggZm9yIHplcm8tbGVuZ3RoIGFycmF5LgoKCSogcGFyc2UueSAoYWJzZGNsX2ludGVybik6IE5ldyBub250ZXJtaW5hbC4KCShhYnNkY2wsIGRpcmVjdF9hYnN0cmFjdF9kZWNsYXJhdG9yKTogVXNlIGl0LgoKCSogcHQuYyAobG9va3VwX3RlbXBsYXRlX2NsYXNzKTogTG9vayB0aHJvdWdoIGltcGxpY3QgdHlwZW5hbWUuCgoxOTk5LTA0LTExICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogZnJpZW5kLmMgKGFkZF9mcmllbmQpOiBEZWFsIGdyYWNlZnVsbHkgd2l0aCBlcnJvcl9tYXJrX25vZGUuCgkqIG1ldGhvZC5jIChidWlsZF9vdmVybG9hZF92YWx1ZSk6IEhhbmRsZSBwb2ludGVycy10by1tZW1iZXJzIGFzCgl0ZW1wbGF0ZSBwYXJhbWV0ZXJzLgoKCSogZGVjbC5jIChwdXNoX2JpbmRpbmcpOiBGaXggdHlwbyBpbiBjb21tZW50LgoKMTk5OS0wNC0xMCAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGVycm9yLmMgKGR1bXBfdHlwZV9yZWFsKTogSWYgYSB0eXBlbmFtZSBpcyBhIHRlbXBsYXRlLWlkLCBwdXQKCW91dCB0aGUgdGVtcGxhdGUgYXJndW1lbnRzLgoJKGR1bXBfZXhwcik6IEhhbmRsZSBURU1QTEFURV9JRF9FWFBSLgoJKiBwdC5jIChsb29rdXBfdGVtcGxhdGVfY2xhc3MpOiBOb3cgdGhhdCBmdWxsIGFyZ3VtZW50cyBhcmUKCWF2YWlsYWJsZSBldmVyeXdoZXJlLCByZW1vdmUgY29kZSB0aGF0IHRyaWVkIHRvIGd1ZXNzIHRoZW0uCgoxOTk5LTA0LTA5ICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogZGVjbC5jIChtYWtlX3R5cGVuYW1lX3R5cGUpOiBDb21wbGFpbiBpZiB3ZSBkb24ndCBmaW5kIGEgdHlwZQoJd2hlbiB0cnlpbmcgdG8gbWFrZSBhIHR5cGVuYW1lIHR5cGUgZm9yIGEgbm9uLXRlbXBsYXRlIHR5cGUuCgoxOTk5LTA0LTA5ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBkZWNsLmMgKHN0YXJ0X2RlY2wpOiBQYXNzIGF0dHJpYnV0ZXMgdG8gZ3Jva2RlY2xhcmF0b3IuCgkoZ3Jva2RlY2xhcmF0b3IpOiBIYW5kbGUgYXR0cmlidXRlcyBvbiBjb25zdHJ1Y3Rvci1zeW50YXgKCWluaXRpYWxpemVycy4KCjE5OTktMDQtMDggIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBlcnJvci5jIChkdW1wX2V4cHIpOiBEb24ndCBjcmFzaCBvbiBJTkRJUkVDVF9SRUZzIHdob3NlIG9wZXJhbmRzCglkb24ndCBoYXZlIHR5cGVzLgoKCSogc2VhcmNoLmMgKHRlbXBsYXRlX3NlbGZfcmVmZXJlbmNlX3ApOiBUd2Vhay4KCjE5OTktMDQtMDcgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBpbml0LmMgKGJ1aWxkX29mZnNldF9yZWYpOiBEb24ndCBidWlsZCB5ZXQgYW5vdGhlciB3ZWlyZCBkYXRhCglzdHJ1Y3R1cmUgdG8gZGVzY3JpYmUgb3ZlcmxvYWRlZCBmdW5jdGlvbnMuCgoxOTk5LTA0LTA2ICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogY3AtdHJlZS5oIChCQVNFTElOS19QKTogTmV3IG1hY3JvLgoJKFNFVF9CQVNFTElOS19QKTogTGlrZXdpc2UuCgkqIGluaXQuYyAoYnVpbGRfbWVtYmVyX2NhbGwpOiBSZW1vdmUgbmVlZGxlc3MgYXNzaWdubWVudCBpbiBpZgoJc3RhdGVtZW50LgoJKiBzZWFyY2guYyAobG9va3VwX2ZpZWxkX3IpOiBGaXggaGFuZGxpbmcgd2hlbiB3ZSBhcmUgbG9va2luZwoJc3BlY2lmaWNhbGx5IGZvciBhIHR5cGU7IHRoZXNlIGFyZSBub3QgaGlkZGVuIGJ5IGZ1bmN0aW9ucyBhbmQKCXZhcmlhYmxlcy4KCShsb29rdXBfbWVtYmVyKTogVXNlIFNFVF9CQVNFTElOS19QLgoJKiB0cmVlLmMgKGlzX292ZXJsb2FkZWRfZm4pOiBVc2UgQkFTRUxJTktfUC4KCShyZWFsbHlfb3ZlcmxvYWVkX2ZuKTogTGlrZXdpc2UuCgkoZ2V0X2ZpcnN0X2ZuKTogTGlrZXdpc2UuCgoxOTk5LTA0LTA1ICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogZGVjbC5jIChsb29rdXBfbmFtZV9jdXJyZW50X2xldmVsKTogVHdlYWssIGFuZCBpbXByb3ZlCglkb2N1bWVudGF0aW9uLgoKCSogY2xhc3MuYyAobWF5YmVfZml4dXBfdnB0cnMpOiBSZW1vdmUgZGVjbGFyYXRpb24uCgkoYnVpbGRfY2xhc3NfaW5pdF9saXN0KTogTGlrZXdpc2UuCgkqIGRlY2wuYyAocHVzaGRlY2xfY2xhc3NfbGV2ZWwpOiBDYWxsIGNoZWNrX3RlbXBsYXRlX3NoYWRvdyBoZXJlCgkuLi4KCShwdXNoX2NsYXNzX2xldmVsX2JpbmRpbmcpOiAuLi4gbm90IGhlcmUuCgkqIHNlYXJjaC5jIChkZnNfcHVzaF90eXBlX2RlY2xzKTogT25seSBhdm9pZAoJdGVtcGxhdGUtc2VsZi1yZWZlcmVuY2UgVFlQRV9ERUNMcyBpZiB0aGV5IGFyZSBmcm9tIGJhc2UgY2xhc3Nlcy4KCjE5OTktMDQtMDQgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBwdC5jIChjaGVja190ZW1wbGF0ZV9zaGFkb3cpOiBEb24ndCB0cmVhdCBPVkVSTE9BRHMgYXMgX0RFQ0wKCW5vZGVzLiAgVGlkeS4KCjE5OTktMDQtMDMgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIGNsYXNzLmMgKG1heWJlX2ZpeHVwX3ZwdHJzLCBidWlsZF9jbGFzc19pbml0X2xpc3QpOiBMb3NlLgoJKGZpbmlzaF9zdHJ1Y3RfMSk6IERvbid0IGNhbGwgYnVpbGRfY2xhc3NfaW5pdF9saXN0LgoKMTk5OS0wNC0wMiAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIHRpbmZvLmggKF9fY2xhc3NfdHlwZV9pbmZvKTogRml4IGlsbGVnYWwgZGVjbGFyYXRpb24uCgoJKiBjcC10cmVlLmRlZiAoVEVNUExBVEVfSURfRVhQUik6IFVwZGF0ZSBjb21tZW50LgoJKiBjcC10cmVlLmggKElOSEVSSVRFRF9WQUxVRV9CSU5ESU5HX1ApOiBOZXcgbWFjcm8uCgkoSURFTlRJRklFUl9DTEFTU19WQUxVRSk6IEltcHJvdmUgZG9jdW1lbnRhdGlvbi4KCShpc19wcm9wZXJseV9kZXJpdmVkX2Zyb20pOiBEZWNsYXJlLgoJKGludmFsaWRhdGVfY2xhc3NfbG9va3VwX2NhY2hlKTogTGlrZXdpc2UuCgkobWF5YmVfbWF5YmVfbm90ZV9uYW1lX3VzZWRfaW5fY2xhc3MpOiBMaWtld2lzZS4KCShub3RlX25hbWVfZGVjbGFyZWRfaW5fY2xhc3MpOiBMaWtld2lzZS4KCShwdXNoX3VzaW5nX2RlY2wpOiBSZW1vdmUgZHVwbGljYXRlIGRlY2xhcmF0aW9uLgoJKGlkX2luX2N1cnJlbnRfY2xhc3MpOiBSZW1vdmUgZGVjbGFyYXRpb24uCgkocHVzaF9jbGFzc19iaW5kaW5nKTogQ2hhbmdlIHByb3RvdHlwZS4KCShjbGVhcl9pZGVudGl0aWZlcl9jbGFzc192YWx1ZXMpOiBEZWNsYXJlLgoJKiBjYWxsLmMgKGlzX3Byb3Blcmx5X2Rlcml2ZWRfZnJvbSk6IE1ha2UgaXQgZ2xvYmFsLgoJKGJ1aWxkX25ld19mdW5jdGlvbl9jYWxsKTogQmUgY2FyZWZ1bCBhYm91dCB1cGRhdGluZyBjYW5kaWRhdGVzLgoJKGJ1aWxkX25ld19tZXRob2RfY2FsbCk6IEhhbmRsZSBDT01QT05FTlRfUkVGcy4gIERvbid0IGNyYXNoIHdoZW4KCWFza2VkIHRvIG1ha2UgaWxsZWdhbCBjYWxscy4KCSogY2xhc3MuYzogSW5jbHVkZSBzcGxheS10cmVlLmguCgkoY2xhc3Nfc3RhY2tfbm9kZSk6IEFkZCBuYW1lc191c2VkIHNsb3QuCgkoY2hlY2tfbWVtYmVyX2RlY2xfaXNfc2FtZV9pbl9jb21wbGV0ZV9zY29wZSk6IFJlbW92ZS4KCShhZGRfbWV0aG9kKTogRml4IGNvbW1lbnQuICBQdXNoIHRoZSBkZWNsYXJhdGlvbiBpbnRvIGNsYXNzCglzY29wZS4KCShmaW5pc2hfc3RydWN0XzEpOiBXaGVuIHBvcHBpbmcgdGhlIGNsYXNzLCBwb3AgdGhlIGJpbmRpbmdzIHRvby4KCVJlbW92ZSBjaGVjayBmb3IgZGF0YSBtZW1iZXIvZnVuY3Rpb24gbWVtYmVyIGNvbmZsaWN0LgoJKGZpbmlzaF9zdHJ1Y3QpOiBSZW1vdmUgY2FsbHMgdG8KCWNoZWNrX21lbWJlcl9kZWNsX2lzX3NhbWVfaW5fY29tcGxldGVfc2NvcGUuICBDaGFuZ2UgY2FsbHMgdG8KCXBvcGNsYXNzLgoJKHB1c2hjbGFzcyk6IENsZWFyIG5hbWVzX3VzZWQgaW4gdGhlIGNsYXNzIHN0YWNrIGVudHJ5LgoJVXNlIGludmFsaWRhdGVfY2xhc3NfbG9va3VwX2NhY2hlIHRvIHJlbW92ZSBjYWNoZWQgZW50cmllcywgcmF0aGVyCgl0aGFuIG1hZ2ljIHZhbHVlcyB3aXRoIHBvcGNsYXNzLiAgQ2xlYXIgSURFTlRJRklFUl9DTEFTU19WQUxVRQoJYmVmb3JlIGVudGVyaW5nIGEgbmV3IGNsYXNzLiAgUmVtb3ZlIGRlYWQgY29kZS4gIERvbid0IG1lc3Mgd2l0aAoJY3VycmVudF9mdW5jdGlvbl9kZWNsIHdoZW4gcHVzaGluZyBkZWNsYXJhdGlvbnMuCgkoaW52YWxpZGF0ZV9jbGFzc19sb29rdXBfY2FjaGUpOiBOZXcgZnVuY3Rpb24sIHNwbGl0IG91dCBmcm9tIC4uLgoJKHBvcGNsYXNzKTogSGVyZS4gIENsZWFuIHVwIG5hbWVzX3VzZWQgb24gb3VyIHdheSBvdXQuCgkoaW5zdGFudGlhdGVfdHlwZSk6IEFkanVzdC4KCShidWlsZF9zZWxmX3JlZmVyZW5jZSk6IERvbid0IHB1c2ggdGhlIGRlY2xhcmF0aW9uIGhlcmUuCgkobWF5YmVfbm90ZV9uYW1lX3VzZWRfaW5fY2xhc3MpOiBOZXcgZnVuY3Rpb24uCgkobm90ZV9uYW1lX2RlY2xhcmVkX2luX2NsYXNzKTogTGlrZXdpc2UuCgkqIGRlY2wuYyAoYWRkX2JpbmRpbmcpOiBDaGFuZ2UgcHJvdG90eXBlLgoJKGZpbmRfY2xhc3NfYmluZGluZ19sZXZlbCk6IE5ldyBmdW5jdGlvbi4KCShpbm5lcm1vc3Rfbm9uY2xhc3NfbGV2ZWwpOiBMaWtld2lzZS4KCShjdXJyZW50X2JpbmRpbmdfbGV2ZWwpOiBVcGRhdGUgZG9jdW1lbnRhdGlvbi4KCShpbm5lcl9iaW5kaW5nX2xldmVsKTogUmVtb3ZlLiAgUmVwbGFjZSB3aXRoIGN1cnJlbnRfYmluZGluZ19sZXZlbAoJdGhyb3VnaG91dC4KCShwdXNoX2JpbmRpbmdfbGV2ZWwpOiBSZW1vdmUgc3BlY2lhbCBoYW5kbGluZyBvZgoJY2xhc3NfYmluZGluZ19sZXZlbC4KCShwb3BfYmluZGluZ19sZXZlbCk6IExpa2V3aXNlLiAgVXNlIGZpbmRfY2xhc3NfYmluZGluZ19sZXZlbC4KCShzdXNwZW5kX2JpbmRpbmdfbGV2ZWwpOiBMaWtld2lzZS4KCShnbG9iYWxfYmluZGluZ3NfcCk6IFVzZSBpbm5lcm1vc3Rfbm9uY2xhc3NfbGV2ZWwuCgkodG9wbGV2ZWxfYmluZGluZ3NfcCk6IExpa2V3aXNlLgoJKG5hbWVzcGFjZV9iaW5kaW5nc19wKTogTGlrZXdpc2UuCgkocHNldWRvX2dsb2JhbF9sZXZlbF9wKTogTGlrZXdpc2UuCgkocHVzaF9iaW5kaW5nKTogQ2xlYXIgSU5IRVJJVEVEX1ZBTFVFX0JJTkRJTkdfUC4KCShhZGRfYmluZGluZyk6IENoZWNrIGZvciBpbGxlZ2FsIG11bHRpcGxlIGRlY2xhcmF0aW9ucy4gIFJldHVybiBhCgl2YWx1ZSBpbmRpY2F0aW5nIHdoZXRoZXIgb3Igbm90IHRoZSBuZXcgYmluZGluZyB3YXMgbGVnYWwuCgkocHVzaF9sb2NhbF9iaW5kaW5nKTogU2tpcCBvdmVyIGNsYXNzIGJpbmRpbmcgbGV2ZWxzLiAgQ2hlY2sKCXJldHVybiB2YWx1ZSBmcm9tIGFkZF9iaW5kaW5nLgoJKHB1c2hfY2xhc3NfYmluZGluZyk6IFNldCBJTkhFUklURURfVkFMVUVfQklORElOR19QLiAgQ2FsbAoJbm90ZV9uYW1lX2RlY2xhcmVkX2luX2NsYXNzLgoJKHB1c2hsZXZlbF9jbGFzcyk6IFJlbW92ZSAiZmFrZSBvdXQgdGhlIHJlc3Qgb2YgdGhlIGNvbXBpbGVyIgoJY29kZS4KCShwb3BsZXZlbF9jbGFzcyk6IFJlc2V0IElERU5USUZJRVJfQ0xBU1NfVkFMVUVzLgoJKGNsZWFyX2lkZW50aWZpZXJfY2xhc3NfdmFsdWVzKTogTmV3IGZ1bmN0aW9uLgoJKHBvcF9mcm9tX3RvcF9sZXZlbCk6IFVzZSBpdC4KCShwb3BfZXZlcnl0aGluZyk6IFR3ZWFrLgoJKG1heWJlX3Byb2Nlc3NfdGVtcGxhdGVfdHlwZV9kZWNsYXJhdGlvbik6IERvbid0IHB1c2ggdGhlCglkZWNsYXJhdGlvbiBmb3IgdGhlIHRlbXBsYXRlIGhlcmUuCgkocHVzaHRhZyk6IERvbid0IHB1c2ggdGFnIGRlY2xhcmF0aW9ucyBpbnRvIGNsYXNzIHNjb3BlIGhlcmUuCgkocHVzaGRlY2wpOiBBcHBseSBEZU1vcmdhbidzIGxhdyBmb3IgcmVhZGFiaWxpdHkuCgkocHVzaGRlY2xfY2xhc3NfbGV2ZWwpOiBSZW1vdmUgc3BlY2lhbC1jYXNlIGNvZGUgZm9yCglUWVBFX0JFSU5HX0RFRklORUQuICBIYW5kbGUgT1ZFUkxPQURzIGFuZCBhbm9ueW1vdXMgdW5pb25zLgoJKHB1c2hfY2xhc3NfbGV2ZWxfYmluZG5nKTogRGVhbCB3aXRoIGluaGVyaXRlZCBiaW5kaW5ncy4KCShsb29rdXBfbmFtZV9yZWFsKTogUmVtb3ZlIHNwZWNpYWwtY2FzZSBjb2RlIGZvcgoJVFlQRV9CRUlOR19ERUZJTkVELCBhbmQgc29tZSBpbXBsaWNpdCB0eXBlbmFtZSBtYWdpYy4KCShncm9rZGVjbGFyYXRvcik6IEhhbmRsZSBDT01QT05FTlRfUkVGIGZvciBhIHRlbXBsYXRlIGZ1bmN0aW9uLgoJKGJ1aWxkX2VudW1lcmF0b3IpOiBEb24ndCBjYWxsIHB1c2hkZWNsX2NsYXNzX2xldmVsIGhlcmUuCgkoaWRfaW5fY3VycmVudF9jbGFzcyk6IFJlbW92ZS4KCSogZGVjbDIuYyAoZ3Jva2ZpZWxkKTogRG9uJ3QgY2FsbCBwdXNoZGVjbF9jbGFzc19sZXZlbCBvcgoJY2hlY2tfdGVtcGxhdGVfc2hhZG93LgoJKiBlcnJmbi5jIChjcF9maWxlX29mKTogRG9uJ3QgZGVjbGFyZS4KCShjcF9saW5lX29mKTogTGlrZXdpc2UuCgkqIGVycm9yLmMgKGR1bXBfZGVjbCk6IEhhbmRsZSBhbiBPVkVSTE9BRC4KCShjcF9maWxlX29mKTogTGlrZXdpc2UuCgkoY3BfbGluZV9vZik6IExpa2V3aXNlLgoJKiBpbml0LmMgKGJ1aWxkX21lbWJlcl9jYWxsKTogSGFuZGxlIGEgQ09NUE9ORU5UX1JFRi4KCSogbGV4LmMgKGRvX2lkZW50aWZpZXIpOiBDYWxsIG1heWJlX25vdGVfbmFtZV91c2VkX2luX2NsYXNzLCBub3QKCXB1c2hkZWNsX2NsYXNzX2xldmVsLgoJKiBtZXRob2QuYyAoaGFja19pZGVudGlmaWVyKTogQnVpbGQgQ09NUE9ORU5UX1JFRnMgZm9yIHJlZmVyZW5jZXMKCXRvIG1lbWJlciB0ZW1wbGF0ZXMgYXMgd2VsbCBhcyBtZW1iZXIgZnVuY3Rpb25zLiAgUmVtb3ZlIGRlYWQKCWNvZGUuCgkqIHBhcnNlLnkgKGxlZnRfY3VybHkpOiBSZW1vdmUuCgkobm9ubmVzdGVkX3R5cGUpOiBDYWxsIG1heWJlX25vdGVfbmFtZV91c2VkX2luX2NsYXNzLCBub3QKCXB1c2hkZWNsX2NsYXNzX2xldmVsLgoJKiBwYXJzZS5jOiBSZWdlbmVyYXRlZC4KCShuZXN0ZWRfbmFtZV9zcGVjaWZpZXJfMSk6IExpa2V3aXNlLgoJKiBwdC5jIChjaGVja19leHBsaWNpdF9zcGVjaWFsaXphdGlvbik6IEFkanVzdCwgZm9yIHJvYnVzdG5lc3MuCgkoY2hlY2tfdGVtcGxhdGVfc2hhZG93KTogSGFuZGxlIE9WRVJMT0FEcy4KCShidWlsZF90ZW1wbGF0ZV9kZWNsKTogU2V0IERFQ0xfQ09OU1RSVUNUT1JfUCBvbiB0aGUKCVRFTVBMQVRFX0RFQ0wsIGlmIGFwcHJvcHJpYXRlLgoJKiBzZWFyY2guYyAoZW52ZWxvcGVfYWRkX2RlY2wpOiBSZW1vdmUuCgkoZGZzX3B1c2hkZWNscyk6IExpa2V3aXNlLgoJKGRmc19jb21wcmVzc19kZWNscyk6IExpa2V3aXNlLgoJKGRmc19wdXNoX2RlY2xzKTogTmV3IGZ1bmN0aW9uLgoJKGRmc19wdXNoX3R5cGVfZGVjbHMpOiBMaWtld2lzZS4KCShzZXR1cF9jbGFzc19iaW5kaW5ncyk6IExpa2V3aXNlLgoJKHRlbXBsYXRlX3NlbGZfcmVmZXJlbmNlX3ApOiBMaWtld2lzZS4KCShsb29rdXBfZmllbGRfcik6IFVzZSBpdC4KCShsb291cF9tZW1iZXIpOiBSZW1vdmUgb2xkIGNvbW1lbnQuICBEZWFsIHdpdGggYW1iaWd1aXR5LgoJKHB1c2hfY2xhc3NfZGVjbHMpOiBVc2UgZGZzX3B1c2hfZGVjbHMgYW5kIGRmc19wdXNoX3R5cGVfZGVjbHMsCglhbmQgcmVtb3ZlIGVudmVsb3BlIHByb2Nlc3NpbmcuCgkqIHNlbWFudGljcy5jIChiZWdpbl9jbGFzc19kZWZpbml0aW9uKTogTGV0IHB1c2hjbGFzcyBwdXNoCglkZWNsYXJhdGlvbnMgZm9yIGJhc2UgY2xhc3Nlcy4KCShmaW5pc2hfbWVtYmVyX2RlY2xhcmF0aW9uKTogUHVzaCBkZWNsYXJhdGlvbnMgaW50byBjbGFzcyBzY29wZS4KCSogdHlwZWNrLmMgKGJ1aWxkX2NvbXBvbmVudF9yZWYpOiBKdXN0IHB1dCBhbiBPVkVSTE9BRCBpbnRvIHRoZQoJQ09NUE9ORU5UX1JFRiwgbm90IGEgVFJFRV9MSVNUIG9mIGFuIE9WRVJMT0FELgoJKGJ1aWxkX3hfZnVuY3Rpb25fY2FsbCk6IERlYWwgd2l0aCBPVkVSTE9BRC4gIEhhbmRsZSB0ZW1wbGF0ZS1pZHMuCgkqIE1ha2VmaWxlLmluIChjbGFzcy5vKTogRGVwZW5kIG9uIHNwbGF5LXRyZWUuaC4KCldlZCBNYXIgMzEgMTE6MzA6NDMgMTk5OSAgTmF0aGFuIFNpZHdlbGwgIDxuYXRoYW5AYWNtLm9yZz4KCgkqIGN2dC5jIChjb252ZXJ0X3BvaW50ZXJfdG9fcmVhbCk6IFVzZSBzYW1lX3R5cGVfcC4KCSogdHlwZWNrLmMgKGNvbXBfdGFyZ2V0X3R5cGVzKTogVXNlIHNhbWVfdHlwZV9wLgoKMTk5OS0wMy0zMSAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogc2VtYW50aWNzLmMgKGJlZ2luX2lubGluZV9kZWZpbml0aW9ucywKCWZpbmlzaF9pbmxpbmVfZGVmaW5pdGlvbnMpOiBSZW5hbWUgZnJvbSBmaW5pc2hfZGVmYXVsdF9hcmdzIGFuZAoJYmVnaW5faW5saW5lX2RlZmluaXRpb25zLCByZXNwZWN0aXZlbHksIHRvIHNvbWV0aGluZyB0aGF0IGlzbid0IGEKCXRvdGFsIGxpZS4gIDopCgkqIHBhcnNlLnkgKHN0cnVjdHNwKTogQWRqdXN0LgoKCSogdHJlZS5jIChoYXNoX3RyZWVfY29ucyk6IFJlbW92ZSBvYnNvbGV0ZSB2aWFfKiBwYXJtcy4KCShsaXN0X2hhc2hfbG9va3VwKTogTGlrZXdpc2UuCgkoaGFzaF90cmVlX2NoYWluKTogQWRqdXN0LgoJKiBwdC5jICh0c3Vic3QpOiBBZGp1c3QuCgkodHN1YnN0X2FyZ190eXBlcyk6IFVzZSBwbGFpbiBoYXNoX3RyZWVfY29ucy4KCSogY3AtdHJlZS5oIChoYXNoX3RyZWVfY29uc19zaW1wbGUpOiBMb3NlLgoJKiBwYXJzZS55IChkZWNsbW9kcywgbm9uZW1wdHlfY3ZfcXVhbGlmaWVycyk6IFVzZSBoYXNoX3RyZWVfY29ucy4KCldlZCBNYXIgMzEgMTA6NDg6MjkgMTk5OSAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogTWFrZWZpbGUuaW4gKGhhc2guaCk6IEdlbmVyYXRlIHVzaW5nIGdwZXJmIGxhbmd1YWdlICdDJywgbm90CgknS1ItQycsIHNvIGdwZXJmIHVzZXMgdGhlIGBjb25zdCcga2V5d29yZCBvbiBzdHJpbmdzLgoKCSogZ3h4LmdwZXJmIChyZXN3b3JkKTogQ29uc3QtaWZ5IGEgY2hhciouCgoxOTk5LTAzLTMwICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBjcC10cmVlLmggKElERU5USUZJRVJfQVNfREVTQywgSURFTlRJRklFUl9BU19MSVNULAoJQ0xBU1NUWVBFX0JBU0VMSU5LX1ZFQywgQ0xBU1NUWVBFX05fU1VQRVJDTEFTU0VTLAoJQ0xBU1NUWVBFX05fQkFTRUNMQVNTRVMsIENMQVNTVFlQRV9NQVhfREVQVEgsCglDTEFTU1RZUEVfQkFTRV9JTklUX0xJU1QsIENMQVNTVFlQRV9BU19MSVNULCBDTEFTU1RZUEVfSURfQVNfTElTVCwKCUNMQVNTVFlQRV9CSU5GT19BU19MSVNUKTogUmVtb3ZlIGNydWZ0LgoJKiBjbGFzcy5jLCBsZXguYywgcGFyc2UueSwgcHRyZWUuYywgc2VhcmNoLmMsIHNlbWFudGljcy5jLAoJdHJlZS5jOiBBZGp1c3QuCgoxOTk5LTAzLTI5ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBkZWNsMi5jIChsYW5nX2RlY29kZV9vcHRpb24pOiBSZW1vdmUgLVdzaWduLXByb21vIGZyb20gLVdhbGwuCgoxOTk5LTAzLTI4ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBwdC5jIChmbl90eXBlX3VuaWZpY2F0aW9uKTogSWdub3JlICd0aGlzJyBwYXJtIGZyb20gY29udmVyc2lvbiBvcHMuCgoxOTk5LTAzLTI3ICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogY3AtdHJlZS5oIChhZGRfZnJpZW5kKTogRGVjbGFyZS4KCShhZGRfZnJpZW5kcyk6IExpa2V3aXNlLgoJKiBmcmllbmQuYyAoYWRkX2ZyaWVuZCk6IE1ha2UgaXQgZ2xvYmFsLiAgRG9uJ3QgYWRkIHRvCglERUNMX0JFRlJJRU5ESU5HX0NMQVNTRVMgaWYgdGhlIGJlZnJpZW5kaW5nIGNsYXNzIGlzIGEgdGVtcGxhdGUuCgkoYWRkX2ZyaWVuZHMpOiBNYWtlIGl0IGdsb2JhbC4KCShtYWtlX2ZyaWVuZF9jbGFzcyk6IERvbid0IGFkZCB0byBERUNMX0JFRlJJRU5ESU5HX0NMQVNTRVMgaWYgdGhlCgliZWZyaWVuZGluZyBjbGFzcyBpcyBhIHRlbXBsYXRlLgoJKiBwYXJzZS55IChjb21wb25lbnRfZGVjbF8xKTogRml4IHR5cG8gaW4gY29tbWVudC4KCSogcGFyc2UuYzogUmVnZW5lcmF0ZWQuCgkqIHB0LmMgKGluc3RhbnRpYXRlX2NsYXNzX3RlbXBsYXRlKTogVXNlIGFkZF9mcmllbmQgYW5kCglhZGRfZnJpZW5kcyByYXRoZXIgdGhhdCBkdXBsaWNhdGluZyBzb21lIG9mIHRoZWlyIGZ1bmN0aW9uYWxpdHkKCWhlcmUuCgoxOTk5LTAzLTI3ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBjYWxsLmMgKGJ1aWxkX2ZpZWxkX2NhbGwpOiBVbmlmeSAndGhpcycgYW5kIG5vbi0ndGhpcycgY2FzZXMuCgoJKiB0eXBlY2suYyAoYnVpbGRfaW5kaXJlY3RfcmVmKTogQ2hlY2sgZm9yICd0aGlzJyBzb29uZXIuCgpGcmkgTWFyIDI2IDEwOjIwOjM0IDE5OTkgIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIGNhbGwuYyAob3BfZXJyb3IpOiBDb25zdC1pZnkgYSBjaGFyKi4KCShhZGRfY2FuZGlkYXRlLCBzb3VyY2VfdHlwZSwgYWRkX3dhcm5pbmcpOiBBZGQgc3RhdGljIHByb3RvdHlwZS4KCShwcmludF96X2NhbmRpZGF0ZXMpOiBDb25zdC1pZnkgYSBjaGFyKi4KCgkqIGNsYXNzLmMgKHJlc29sdmVfYWRkcmVzc19vZl9vdmVybG9hZGVkX2Z1bmN0aW9uLAoJZml4ZWRfdHlwZV9vcl9udWxsLCBidWlsZF92dGFibGVfZW50cnlfcmVmKTogQWRkIHN0YXRpYyBwcm90b3R5cGUuCgkoZ2V0X3Z0YWJsZV9uYW1lLCBmaW5pc2hfc3RydWN0XzEpOiBDb25zdC1pZnkgYSBjaGFyKi4KCgkqIGN2dC5jIChjb252ZXJ0X3RvX3JlZmVyZW5jZSk6IExpa2V3aXNlLgoKCSogZGVjbC5jIChyZWRlY2xhcmF0aW9uX2Vycm9yX21lc3NhZ2UsIHJlY29yZF9idWlsdGluX3R5cGUsCglyZWNvcmRfdW5rbm93bl90eXBlLCBtZW1iZXJfZnVuY3Rpb25fb3JfZWxzZSwgYmFkX3NwZWNpZmllcnMpOgoJTGlrZXdpc2UuCgkoZmluZF9iaW5kaW5nLCBzZWxlY3RfZGVjbCwgdW5xdWFsaWZpZWRfbmFtZXNwYWNlX2xvb2t1cCwKCWxvb2t1cF9mbGFncywgcXVhbGlmeV9sb29rdXAsIHJlY29yZF9idWlsdGluX2phdmFfdHlwZSwgdGFnX25hbWUpOgoJQWRkIHN0YXRpYyBwcm90b3R5cGUuCgkod2Fybl9leHRlcm5fcmVkZWNsYXJlZF9zdGF0aWMsIGR1cGxpY2F0ZV9kZWNscywgcHVzaGRlY2wsCglpbXBsaWNpdGx5X2RlY2xhcmUsIHJlY29yZF9idWlsdGluX2phdmFfdHlwZSwgZGVmaW5lX2Z1bmN0aW9uLAoJZ3Jva19vcF9wcm9wZXJ0aWVzLCB0YWdfbmFtZSk6IENvbnN0LWlmeSBhIGNoYXIqLgoKCSogY3AtdHJlZS5oIChGT1JNQVRfVkJBU0VfTkFNRSk6IEFsbG93IHBhcmFtZXRlciBgQlVGJyB0byBiZSBjb25zdC4KCShkZWZpbmVfZnVuY3Rpb24sIGZpbmlzaF9idWlsdGluX3R5cGUpOiBDb25zdC1pZnkgYSBjaGFyKi4KCShjcF9lcnJvciwgY3BfZXJyb3JfYXQsIGNwX3dhcm5pbmcsIGNwX3dhcm5pbmdfYXQsIGNwX3BlZHdhcm4sCgljcF9wZWR3YXJuX2F0LCBjcF9jb21waWxlcl9lcnJvciwgY3Bfc3ByaW50Zik6IEFkZCBwcm90b3R5cGUgYXJncy4KCShmaWxlX25hbWVfbm9uZGlyZWN0b3J5KTogQ29uc3QtaWZ5IGEgY2hhciouCgkoaW5pdF9maWxlbmFtZV90aW1lcyk6IERvbid0IHByb3RvdHlwZS4KCShjb21waWxlcl9lcnJvcik6IFByb3RvdHlwZS4KCSh5eWVycm9yLCBpbml0X3JlcG8pOiBDb25zdC1pZnkgYSBjaGFyKi4KCShidWlsZF9zcmNsb2MpOiBEb24ndCBwcm90b3R5cGUuCgkoYnVpbGRfeF9pbmRpcmVjdF9yZWYsIGJ1aWxkX2luZGlyZWN0X3JlZiwgYnVpbGRfY29tcG9uZW50X2FkZHIpOgoJQ29uc3QtaWZ5IGEgY2hhciouCgkod2Fybl9mb3JfYXNzaWdubWVudCk6IERvbid0IHByb3RvdHlwZS4KCShjb252ZXJ0X2Zvcl9pbml0aWFsaXphdGlvbiwgcmVhZG9ubHlfZXJyb3IsIGNoZWNrX2Zvcl9uZXdfdHlwZSwKCUdOVV94cmVmX2JlZ2luLCBHTlVfeHJlZl9maWxlLCBHTlVfeHJlZl9yZWYsIEdOVV94cmVmX2NhbGwpOgoJQ29uc3QtaWZ5IGEgY2hhciouCgoJKiBkZWNsMi5jIChhY2NlcHRhYmxlX2phdmFfdHlwZSwgb3V0cHV0X3Z0YWJsZV9pbmhlcml0LAoJc2V0dXBfaW5pdHAsIHN0YXJ0X29iamVjdHMsIGZpbmlzaF9vYmplY3RzLCBkb19kdG9ycywgZG9fY3RvcnMsCgltZXJnZV9mdW5jdGlvbnMsIGRlY2xfbmFtZXNwYWNlLCB2YWxpZGF0ZV9ub25tZW1iZXJfdXNpbmdfZGVjbCwKCWRvX25vbm1lbWJlcl91c2luZ19kZWNsKTogQWRkIHN0YXRpYyBwcm90b3R5cGUuCgkobGFuZ19mX29wdGlvbnMpOiBDb25zdC1pZnkgYSBjaGFyKi4KCShmaW5pc2hfYnVpbHRpbl90eXBlKTogTGlrZXdpc2UuCgkoYWRkX2Z1bmN0aW9uLCBhcmdfYXNzb2NfbmFtZXNwYWNlLCBhcmdfYXNzb2NfY2xhc3MpOiBBZGQgc3RhdGljCglwcm90b3R5cGUuCgoJKiBlcnJmbi5jOiBJbmNsdWRlIGNwLXRyZWUuaC4KCShjcF90aGluZyk6IEFkZCBzdGF0aWMgcHJvdG90eXBlLgoJKGNvbXBpbGVyX2Vycm9yKTogRG9uJ3QgcHJvdG9wdHlwZS4KCShjcF9jb21waWxlcl9lcnJvcik6IENhc3QgYGNvbXBpbGVyX2Vycm9yJyB0byBgZXJyb3JmbicgYmVmb3JlCglwYXNzaW5nIGl0IHRvIGBjcF90aGluZycuCgoJKiBlcnJvci5jIChpbnRlcmVzdGluZ19zY29wZV9wKTogQWRkIHN0YXRpYyBwcm90b3R5cGUuCgoJKiBleGNlcHQuYyAoYnVpbGRfZWhfdHlwZV90eXBlLCBidWlsZF9laF90eXBlX3R5cGVfcmVmKTogQ29uc3QtaWZ5CglhIGNoYXIqLgoKCSogaW5pdC5jIChjb21waWxlcl9lcnJvcik6IERvbid0IHByb3RvdHlwZS4KCShtZW1iZXJfaW5pdF9va19vcl9lbHNlKTogQ29uc3QtaWZ5IGEgY2hhciouCgkoYnVpbGRfamF2YV9jbGFzc19yZWYpOiBBZGQgc3RhdGljIHByb3RvdHlwZS4KCgkqIGxleC5jIChjb21waWxlcl9lcnJvcik6IERvbid0IHByb3RvdHlwZS4KCShnZXRfdGltZV9pZGVudGlmaWVyLCBpbnRlcmZhY2Vfc3RyY21wLCBleHRlbmRfdG9rZW5fYnVmZmVyLAoJaGFuZGxlX2NwX3ByYWdtYSk6IENvbnN0LWlmeSBhIGNoYXIqLgoJKGlzX2dsb2JhbCwgaW5pdF9maWxlbmFtZV90aW1lcyk6IEFkZCBzdGF0aWMgcHJvdG90eXBlLgoJKGZpbGVfbmFtZV9ub25kaXJlY3RvcnksIGNwbHVzX3RyZWVfY29kZV9uYW1lKTogQ29uc3QtaWZ5IGEgY2hhciouCgkoY29tcGlsZXJfZXJyb3IpOiBDaGFuZ2UgZnJvbSBmaXhlZCBhcmdzIHRvIHZhcmlhYmxlIGFyZ3MuCgkoeXllcnJvcik6IENvbnN0LWlmeSBhIGNoYXIqLgoKCSogcGFyc2UueSAoY29uZF9zdG10X2tleXdvcmQpOiBDb25zdC1pZnkgYSBjaGFyKi4KCShwYXJzZV9kZWNsKTogQWRkIHN0YXRpYyBwcm90b3R5cGUuCgoJKiBwdC5jICh0ZW1wbGF0ZV9hcmdzX2VxdWFsLCBwcmludF90ZW1wbGF0ZV9jb250ZXh0KTogTGlrZXdpc2UuCgkocHJpbnRfY2FuZGlkYXRlcywgY2hlY2tfZGVmYXVsdF90bXBsX2FyZ3MpOiBDb25zdC1pZnkgYSBjaGFyKi4KCShpbnN0YW50aWF0ZV9jbGFzc190ZW1wbGF0ZSk6IExpa2V3aXNlLgoKCSogcmVwby5jIChnZXRfYmFzZV9maWxlbmFtZSwgb3Blbl9yZXBvX2ZpbGUsIGluaXRfcmVwbyk6IExpa2V3aXNlLgoKCSogcnR0aS5jIChjYWxsX3ZvaWRfZm4sIGV4cGFuZF9nZW5lcmljX2Rlc2MsIGV4cGFuZF9zaV9kZXNjLAoJZXhwYW5kX2NsYXNzX2Rlc2MsIGV4cGFuZF9wdHJfZGVzYywgZXhwYW5kX2F0dHJfZGVzYyk6IExpa2V3aXNlLgoKCSogc2VhcmNoLmMgKGxvb2t1cF9maWVsZF9pbmZvLCBsb29rdXBfbWVtYmVyKTogTGlrZXdpc2UuCgkobG9va3VwX21lbWJlcik6IENhc3QgdGhlIGZpcnN0IGFyZ3VtZW50IG9mIGBiemVybycgdG8gYSBQVFIuCgoJKiBzaWcuYyAoY29tcGlsZXJfZXJyb3IpOiBEb24ndCBwcm90b3R5cGUuCgkoYnVpbGRfc2lnbmF0dXJlX3BvaW50ZXJfb3JfcmVmZXJlbmNlX25hbSk6IENvbnN0LWlmeSBhIGNoYXIqLgoJKGdldF9zaWd0YWJsZV9uYW1lLCBidWlsZF9tZW1iZXJfZnVuY3Rpb25fcG9pbnRlcik6IExpa2V3aXNlLgoKCSogdHJlZS5jIChjb21waWxlcl9lcnJvcik6IERvbid0IHByb3RvdHlwZS4KCShub19saW5rYWdlX2hlbHBlciwgYnVpbGRfc3JjbG9jKTogQWRkIHN0YXRpYyBwcm90b3R5cGUuCgkoYnVpbGRfdmJhc2VfcG9pbnRlcl9maWVsZHMpOiBDb25zdC1pZnkgYSBjaGFyKi4KCShfX2VwcmludGYpOiBEb24ndCB1bm5lY2Vzc2FyaWx5IGhhbmRsZSBgY29uc3QnIHdoZW4gIV9fU1REQ19fLgoKCSogdHlwZWNrLmMgKGNvbXBpbGVyX2Vycm9yKTogRG9uJ3QgcHJvdG90eXBlLgoJKGNvbnZlcnRfZm9yX2Fzc2lnbm1lbnQpOiBDb25zdC1pZnkgYSBjaGFyKi4KCShjb21wX2N2X3RhcmdldF90eXBlcyk6IEFkZCBzdGF0aWMgcHJvdG90eXBlLgoJKGJ1aWxkX3hfaW5kaXJlY3RfcmVmLCBidWlsZF9pbmRpcmVjdF9yZWYsIGNvbnZlcnRfYXJndW1lbnRzLAoJYnVpbGRfY29tcG9uZW50X2FkZHIsIGJ1aWxkX3VuYXJ5X29wLCBjb252ZXJ0X2Zvcl9pbml0aWFsaXphdGlvbik6CglDb25zdC1pZnkgYSBjaGFyKi4KCgkqIHR5cGVjazIuYyAoYWNrKTogQWRkIHN0YXRpYyBwcm90b3R5cGUgYW5kIGNoYW5nZSBmcm9tIGZpeGVkIGFyZ3MKCXRvIHZhcmlhYmxlIGFyZ3MuCgkocmVhZG9ubHlfZXJyb3IsIGNoZWNrX2Zvcl9uZXdfdHlwZSk6IENvbnN0LWlmeSBhIGNoYXIqLgoKCSogeHJlZi5jIChfWFJFRl9GSUxFLCBmaW5kX2ZpbGUsIGZpbGVuYW1lLCBmY3RuYW1lLCBkZWNsbmFtZSwKCWZpeG5hbWUsIG9wZW5feHJlZl9maWxlLCBjbGFzc25hbWUsIEdOVV94cmVmX2JlZ2luKTogTGlrZXdpc2UuCgkoR05VX3hyZWZfZmlsZSk6IExpa2V3aXNlLiAgQWxzbyB1c2UgYHhtYWxsb2MnIGluc3RlYWQgb2YgYG1hbGxvYycuCgkoR05VX3hyZWZfZW5kX3Njb3BlLCBHTlVfeHJlZl9yZWYsIEdOVV94cmVmX2RlY2wsIEdOVV94cmVmX2NhbGwsCglnZW5fYXNzaWduLCBHTlVfeHJlZl9tZW1iZXIpOiBDb25zdC1pZnkgYSBjaGFyKi4KCjE5OTktMDMtMjUgIE1hcnRpbiB2b24gTPZ3aXMgIDxsb2V3aXNAaW5mb3JtYXRpay5odS1iZXJsaW4uZGU+CgoJKiBneHhpbnQudGV4aTogUmVtb3ZlIG9sZCBkaXNjdXNzaW9uIG9uIGNvcHlpbmcgdmlydHVhbCBiYXNlcy4KCjE5OTktMDMtMjUgIFphY2sgV2VpbmJlcmcgIDx6YWNrQHJhYmkuY29sdW1iaWEuZWR1PgoKCSogTWFrZS1sYW5nLmluOiBSZW1vdmUgYWxsIHJlZmVyZW5jZXMgdG8gZysrLm8vZysrLmMuCglMaW5rIGcrKyBmcm9tIGdjYy5vLgoKMTk5OS0wMy0yNSAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogZGVjbDIuYyAoY29tZGF0X2xpbmthZ2UpOiBUcmVhdCB2dGFibGVzIGxpa2UgZnVuY3Rpb25zLgoKMTk5OS0wMy0yNSAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIHB0LmMgKHRzdWJzdF9kZWNsKTogdHN1YnN0IGludG8gREVDTF9CRUZSSUVORElOR19DTEFTU0VTLgoKMTk5OS0wMy0yNSAgTmF0aGFuIFNpZHdlbGwgIDxuYXRoYW5AYWNtLm9yZz4KCgkqIGRlY2wuYyAoaW5pdF9kZWNsX3Byb2Nlc3NpbmcpOiBBZGQgYHNpZ25lZCcgdHlwZSBhcyBhIHN5bm9ueW0KCWZvciBgaW50Jy4KCjE5OTktMDMtMjUgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIHR5cGVjay5jIChjb21tb25fdHlwZSk6IEhhbmRsZSBjdi1xdWFsIHVuaWZpY2F0aW9uIGZvciBwb2ludGVycwoJdG8gbWVtYmVycy4KCgkqIGRlY2wuYyAodW5xdWFsaWZpZWRfbmFtZXNwYWNlX2xvb2t1cCk6IFJldHVybiBlcnJvcl9tYXJrX25vZGUKCW9uIGVycm9yLgoJKGxvb2t1cF9uYW1lX3JlYWwpOiBTZXQgTE9PS1VQX0NPTVBMQUlOIHdoZW4gKm5vdCogcGFyc2luZy4KCSogbGV4LmMgKGRvX2lkZW50aWZpZXIpOiBJZiB3ZSBnb3QgZXJyb3JfbWFya19ub2RlLCBjYWxsCglsb29rdXBfbmFtZSBhZ2Fpbi4KCjE5OTktMDMtMjQgIE1hcnRpbiB2b24gTPZ3aXMgIDxsb2V3aXNAaW5mb3JtYXRpay5odS1iZXJsaW4uZGU+CgoJKiBjbGFzcy5jIChmaW5pc2hfc3RydWN0XzEpOiBBbHdheXMgcmVzZXQgVFlQRV9GSUVMRFMgZm9yIGVtcHR5CgljbGFzc2VzLgoKMTk5OS0wMy0yNCAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogZGVjbC5jIChsb29rdXBfbmFtZV9yZWFsKTogRG8gbmVzdGVkIGZpZWxkIGxvb2t1cCByZWdhcmRsZXNzIG9mCglUWVBFX0JFSU5HX0RFRklORUQuCgoxOTk5LTAzLTI0ICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogY3AtdHJlZS5oIChsYW5nX3R5cGUpOiBSZW1vdmUgaGFzX2Fzc2lnbm1lbnQgYW5kCgloYXNfcmVhbF9hc3NpZ25tZW50LiAgQWRkIGJlZnJpZW5kaW5nX2NsYXNzZXMuCgkoVFlQRV9IQVNfQVNTSUdOTUVOVCk6IFJlbW92ZS4KCShUWVBFX0hBU19SRUFMX0FTU0lHTk1FTlQpOiBMaWtld2lzZS4KCShDTEFTU1RZUEVfQkVGUklFTkRJTkdfQ0xBU1NFUyk6IE5ldyBtYWNyby4KCShsYW5nX2RlY2wpOiBEb2N1bWVudC4KCShERUNMX0JFRlJJRU5ESU5HX0NMQVNTRVMpOiBOZXcgbWFjcm8uCgkoRlJJRU5EX05BTUUpOiBNb3ZlIGRlY2xhcmF0aW9uIHRvIG1vcmUgb2J2aW91cyBsb2NhdGlvbi4KCShGUklFTkRfREVDTFMpOiBMaWtld2lzZS4KCSogY2xhc3MuYyAoZmluaXNoX3N0cnVjdF8xKTogRG9uJ3QgdXNlIFRZUEVfSEFTX1JFQUxfQVNTSUdOTUVOVC4KCSogZGVjbC5jIChkdXBsaWNhdGVfZGVjbHMpOiBDb3B5IERFQ0xfQkVGUklFTkRJTkdfQ0xBU1NFUy4KCShmaXh1cF9hbm9ueW1vdXNfdW5pb24pOiBEb24ndCB1c2UgVFlQRV9IQVNfQVNTSUdOTUVOVC4KCShncm9rX29wX3Byb3BlcnRpZXMpOiBMaWtld2lzZS4KCSogZnJpZW5kLmMgKGlzX2ZyaWVuZCk6IFVzZSBGUklFTkRfTkFNRSBhbmQgRlJJRU5EX0RFQ0xTLgoJKGFkZF9mcmllbmQpOiBMaWtld2lzZS4gIERvbid0IGRvIHdlaXJkIHRoaW5ncyB3aXRoIGFzc2lnbm1lbnQKCW9wZXJhdG9ycy4gIFVwZGF0ZSBERUNMX0JFRlJJRU5ESU5HX0NMQVNTRVMuCgkoYWRkX2ZyaWVuZHMpOiBEb24ndCBkbyB3ZWlyZCB0aGluZ3Mgd2l0aCBhc3NpZ25tZW50IG9wZXJhdG9ycy4KCShtYWtlX2ZyaWVuZF9jbGFzcyk6IExpa2V3aXNlLiAgVXBkYXRlCglDTEFTU1RZUEVfQkVGUklFTkRJTkdfQ0xBU1NFUy4KCSogcHQuYyAoaW5zdGFudGlhdGVfY2xhc3NfdGVtcGxhdGUpOiBEb24ndCBzZXQKCVRZUEVfSEFTX0FTU0lHTk1FTlQuCgkodHN1YnN0X2NvcHkpOiBTdWJzdGl0dXRlIHRoZSBUUkVFX1RZUEUgZm9yIG1vcmUgdW5hcnkKCWV4cHJlc3Npb25zLgoJKiBwdHJlZS5jIChwcmludF9sYW5nX3R5cGUpOiBEb24ndCBsb29rIGF0IFRZUEVfSEFTX0FTU0lHTk1FTlQuCgkqIHNlYXJjaC5jIChwcm90ZWN0ZWRfYWNjZXNzaWJsZV9wKTogTmV3IGZ1bmN0aW9uLgoJKGZyaWVuZF9hY2Nlc3NpYmxlX3ApOiBMaWtld2lzZS4KCShhY2Nlc3NpYmxlX3ApOiBVc2UgdGhlbS4KCjE5OTktMDMtMjMgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBwdC5jIChjb252ZXJ0X25vbnR5cGVfYXJndW1lbnQpOiBEb24ndCBjcmVhdGUgdGhpbmdzIHRoYXQgYXJlbid0CglQVFJNRU1fQ1NUcyB3aGVuIGFwcGx5aW5nIGEgcXVhbGlmaWNhdGlvbiBjb252ZXJzaW9uIHRvIGEKCVBUUk1FTV9DU1QuCgoxOTk5LTAzLTIzICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogTWFrZWZpbGUuaW4gKE9CSlMpOiBEb24ndCBtZW50aW9uIGhhc2guby4KCShPQkpERVBTKTogTGlrZXdpc2UuCgoxOTk5LTAzLTIzICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBkZWNsMi5jIChmaW5pc2hfZmlsZSk6IFNldCBhdF9lb2YgdG8gMiBhZnRlciBleHBhbmRpbmcgY3RvcnMuCgkqIGRlY2wuYyAoZXhwYW5kX3N0YXRpY19pbml0KTogTWFrZSBzdXJlIHdlIGRvbid0IGFkZCBhbnkgYWZ0ZXIKCXRoZW4uCgoJKiBkZWNsLmMgKGNwX2ZpbmlzaF9kZWNsKTogTW92ZSBpbnRlbGxpZ2VuY2UgYWJvdXQgaGFuZGxpbmcKCURFQ0xfQ09NREFUIGZvciB2YXJpYWJsZXMgZnJvbSBoZXJlLi4uCgkqIGRlY2wyLmMgKGNvbWRhdF9saW5rYWdlKTogLi4udG8gaGVyZS4KCShtYXliZV9tYWtlX29uZV9vbmx5KTogVHdlYWsuCgkoaW1wb3J0X2V4cG9ydF9kZWNsKTogQ2FsbCBjb21kYXRfbGlua2FnZSBmb3IgdmFyaWFibGVzLCB0b28uCgkoZmluaXNoX2ZpbGUpOiBIYW5kbGUgdGVtcGxhdGUgc3RhdGljcyBwcm9wZXJseS4KCjE5OTktMDMtMjIgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjcC10cmVlLmggKFRZUEVfUFRSTUVNRlVOQ19QKTogVXNlIFRZUEVfUFRSTUVNRlVOQ19GTEFHLgoJRG9jdW1lbnQgaW50ZXJuYWxzIG9mIHBvaW50ZXItdG8tbWVtYmVyLWZ1bmN0aW9ucy4KCShERUxUQTJfRlJPTV9QVFJNRU1GVU5DKTogTWFrZSBpdCBjYWxsIGRlbHRhMl9mcm9tX3B0cm1lbWZ1bmMuCgkoUEZOX0ZST01fUFRSTUVNRlVOQyk6IExpa2V3aXNlLgoJKGJ1aWxkX3R5cGVfY29udmVyc2lvbik6IFJlbW92ZSB1bnVzZWQgcGFyYW1ldGVyLgoJKGJ1aWxkX3B0cm1lbWZ1bmMxKTogRGVjbGFyZS4KCShleHBhbmRfcHRybWVtZnVuY19jc3QpOiBOZXcgZnVuY3Rpb24uCgkoZGVsdGEyX2Zyb21fcHRybWVtZnVuYyk6IExpa2V3aXNlLgoJKHBmbl9mcm9tX3B0cm1lbWZ1bmMpOiBMaWtld2lzZS4KCSogY3Z0LmMgKGNwX2NvbnZlcnRfdG9fcG9pbnRlcik6IFJlbW92ZSB1bnVzZWQgcGFyYW1ldGVyIHRvCglidWlsZF90eXBlX2NvbnZlcnNpb24uICBVc2UgVFlQRV9QVFJNRU1fUCBmb3IgcmVhZGFiaWxpdHkuCgkoY29udmVydF90b19yZWZlcmVuY2UpOiBSZW1vdmUgdW51c2VkIHBhcmFtZXRlciB0bwoJYnVpbGRfdHlwZV9jb252ZXJzaW9uLgoJKG9jcF9jb252ZXJ0KTogTGlrZXdpc2UuCgkoYnVpbGRfdXNlcl90eXBlX2NvbnZlcnNpb24pOiBMaWtld2lzZS4KCSogZXJyb3IuYyAoZHVtcF9leHByKTogSGFuZGxlIE5VTEwgcG9pbnRlci10by1tZW1iZXIgZnVuY3Rpb25zLgoJKiBleHByLmMgKGNwbHVzX2V4cGFuZF9leHByKTogSGFuZGxlIFBUUk1FTV9DU1RzIGZvciBmdW5jdGlvbnMuCgkqIG1ldGhvZC5jIChidWlsZF9vdmVybG9hZF92YWx1ZSk6IERvbid0IGdvIHNwbGl0dGluZyBDT05TVFJVQ1RPUnMKCW9wZW4gd2hlbiBoYW5kbGluZyBwb2ludGVyLXRvLW1lbWJlciBmdW5jdGlvbnMuCgkqIHB0LmMgKGNvbnZlcnRfbm9udHlwZV9hcmd1bWVudCk6IENsZWFuIHVwIGVycm9yIG1lc3NhZ2VzLiAgQmUKCW1vcmUgc3RyaW5nZW50IHdpdGggcG9pbnRlcnMtdG8tbWVtYmVycy4KCSogdHlwZWNrLmMgKGJ1aWxkX3B0cm1lbWZ1bmMxKTogRG9uJ3QgZGVjbGFyZS4gIE1ha2UgaXQgZ2xvYmFsLgoJKGJ1aWxkX3VuYXJ5X29wKTogVGlkeSBldmVyLXNvLXNsaWdodGx5LgoJKGJ1aWxkX2NvbmRpdGlvbmFsX2V4cHIpOiBSZW1vdmUgZXh0cmEgcGFyYW1ldGVyIHRvCglidWlsZF90eXBlX2NvbnZlcnNpb24uCgkoYnVpbGRfcHRybWVtZnVuYyk6IEJ1aWxkIFBUUk1FTV9DU1RzIGlmIHdlIGtub3cgd2hhdCBmdW5jdGlvbgoJd2UncmUgdXNpbmcuCgkoZXhwYW5kX3B0cm1lbWZ1bmNfY3N0KTogRGVmaW5lLgoJKGRlbHRhMl9mcm9tX3B0cm1lbWZ1bmMpOiBMaWtld2lzZS4KCShwZm5fZnJvbV9wdHJtZW1mdW5jKTogTGlrZXdpc2UuCgoxOTk5LTAzLTE5ICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogaW5pdC5jIChidWlsZF9tZW1iZXJfY2FsbCk6IEhhbmRsZSB0ZW1wbGF0ZS1pZCBleHByZXNzaW9ucwoJY29ycmVjdGx5LgoJKiB0eXBlY2suYyAoYnVpbGRfeF9mdW5jdGlvbl9jYWxsKTogTGlrZXdpc2UuCgoxOTk5LTAzLTE5ICBDaGlwIFNhbHplbmJlcmcgIDxjaGlwQHBlcmxzdXBwb3J0LmNvbT4KCgkqIGZyaWVuZC5jIChtYWtlX2ZyaWVuZF9jbGFzcyk6IEF2b2lkIGNvcmUgZHVtcCB3aGVuCglub3QteWV0LWRlZmluZWQgZnJpZW5kIHR5cGUgbGFja3MgVFlQRV9MQU5HX1NQRUNJRklDKCkuCgoxOTk5LTAzLTE4ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBkZWNsLmMgKHN0YXJ0X2Z1bmN0aW9uKTogU3VwcHJlc3Mgbm9ybWFsIGxpbmthZ2UgaGV1cmlzdGljcwoJZm9yICNwcmFnbWEgaW50ZXJmYWNlIHVuZGVyIE1VTFRJUExFX1NZTUJPTF9TUEFDRVMuCgoxOTk5LTAzLTE5ICBBbGV4YW5kcmUgT2xpdmEgIDxvbGl2YUBkY2MudW5pY2FtcC5icj4KCgkqIE1ha2UtbGFuZy5pbjogKCQoSU5UTF9UQVJHRVRTKSk6IERlcGVuZCBvbiBjcC9wYXJzZS5jLgoJKCQoc3JjZGlyKS9jcC9wYXJzZS5jKTogTW92ZWQgZnJvbSAuLi9NYWtlZmlsZS5pbi4KCjE5OTktMDMtMTcgIE1hcnRpbiB2b24gTPZ3aXMgIDxsb2V3aXNAaW5mb3JtYXRpay5odS1iZXJsaW4uZGU+CgoJKiBwYXJzZS55IChuYW1lZF9jb21wbGV4X2NsYXNzX2hlYWRfc2Fuc19iYXNldHlwZSk6CglEbyBub3QgcHVzaCBhIHNjb3BlIGZvciBlcnJvcl9tYXJrX25vZGUuCgkobWF5YmVfYmFzZV9jbGFzc19saXN0KTogTGlrZXdpc2UuCgoJKiBkZWNsLmMgKHN0YXJ0X2RlY2wpOiBDaGVjayBmb3IgZXJyb3JfbWFya19ub2RlIGFzIGEgdHlwZS4KCURldGVjdGVkIGJ5IGcrKy5icmVuZGFuL2FycmF5LXJlZnMuQy4KCShzdGFydF9kZWNsXzEpOiBMaWtld2lzZS4gIERldGVjdGVkIGJ5IGcrKy5idWdzLzkwMDMyMl8wMS5DLgoJKG1heWJlX2J1aWxkX2NsZWFudXBfMSk6IExpa2V3aXNlLiAgRGV0ZWN0ZWQgYnkKCWcrKy5qYXNvbi9pbmNvbXBsZXRlMS5DLgoKCSogdHJlZS5jIChidWlsZF9kdW1teV9vYmplY3QpOiBVc2Ugdm9pZF96ZXJvX25vZGUgaW5zdGVhZCBvZiB0aGUKCWVycm9yX21hcmtfbm9kZS4KCShpc19kdW1teV9vYmplY3QpOiBDaGVjayBmb3Igc3VjaCBhIG5vZGUuCglEZXRlY3RlZCBieSBnKysuYm9iL2luaGVyaXQxLkMKCjE5OTktMDMtMTYgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIG1ldGhvZC5jIChvbGRfYmFja3JlZl9pbmRleCk6IFNwbGl0IG91dC4uLgoJKGZsdXNoX3JlcGVhdHMpOiBGcm9tIGhlcmUuICBSZW5hbWUgYmFjayBmcm9tIHRyeV9vbGRfYmFja3JlZi4KCShidWlsZF9tYW5nbGVkX25hbWUpOiBQdXQgYmFjayBzb21lIG9sZC1zdHlsZSByZXBlYXQgaGFuZGxpbmcuCgpNb24gTWFyIDE1IDIxOjU3OjE2IDE5OTkgIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIGxleC5jOiBEb24ndCBpbmNsdWRlIHNldGptcC5oLgoJKHBhcnNlX2Zsb2F0KTogTmV3IHN0YXRpYyBmdW5jdGlvbi4KCShwZl9hcmdzKTogTmV3IHN0cnVjdC4KCShyZWFsX3l5bGV4KTogVXNlIHRoZW0gaW4gY2FsbCB0byBgZG9fZmxvYXRfaGFuZGxlcicuCgoxOTk5LTAzLTE1ICBNYXJrIE1pdGNoZWxsICA8bWFya0BtYXJrbWl0Y2hlbGwuY29tPgoKCSogZGVjbC5jICh4cmVmX2Jhc2V0eXBlcyk6IFNldCBDTEFTU1RZUEVfVkJBU0VDTEFTU0VTIGhlcmUuCgkqIHRyZWUuYyAobGF5b3V0X2Jhc2V0eXBlcyk6IE5vdCBoZXJlLgoJKiBzZWFyY2guYyAoZGZzX3NlYXJjaCk6IFJlbW92ZTsgbm8gbG9uZ2VyIHVzZWQuCgoxOTk5LTAzLTEyICBNYXJrIE1pdGNoZWxsICA8bWFya0BtYXJrbWl0Y2hlbGwuY29tPgoKCSogZGVjbDIuYyAodmFsaWRhdGVfbm9ubWVtYmVyX3VzaW5nX2RlY2wpOiBJc3N1ZSBzZW5zaWJsZQoJZXJyb3ItbWVzc2FnZXMgb24gYm9ndXMgcXVhbGlmaWVycy4KCjE5OTktMDMtMTQgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIGNhbGwuYyAoYWRkX2Z1bmN0aW9uX2NhbmRpZGF0ZSk6IEZpeCB1bmluaXRpYWxpemVkIHZhcmlhYmxlLgoKCSogTWFrZWZpbGUuaW4gKHNlYXJjaC5vKTogQWRkIGRlcGVuZGVuY3kgb24gdmFycmF5LmguCgoxOTk5LTAzLTEzICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBkZWNsLmMgKGR1cGxpY2F0ZV9kZWNscyk6IFVzZSBzYW1lX3R5cGVfcC4KCSogbWV0aG9kLmMgKHRyeV9vbGRfYmFja3JlZik6IFJlbmFtZWQgZnJvbSBmbHVzaF9yZXBlYXRzLiAgVXNlCglzYW1lX3R5cGVfcC4gIERvbid0IHRyeSB0byBoYW5kbGUgcmVwZWF0cy4gIFJldHVybiBzdWNjZXNzLgoJKGlzX2JhY2tfcmVmZXJlbmNlYWJsZV90eXBlKTogUmV0dXJuIDAgaWYgVFlQRV9GT1JfSkFWQS4gIFN1cHBvcnQKCWNhbGxzIGZyb20gb2xkLXN0eWxlIGNvZGUsIHRvby4KCShjaGVja19rdHlwZSk6IFVzZSBzYW1lX3R5cGVfcC4KCShjaGVja19idHlwZSk6IFVzZSBzYW1lX3R5cGVfcC4gIERvbid0IHB1bGwgb3V0IFRZUEVfTUFJTl9WQVJJQU5ULgoJKGJ1aWxkX3F1YWxpZmllZF9uYW1lKTogU2ltcGxpZnkgbG9naWMuCgkocHJvY2Vzc19vdmVybG9hZF9pdGVtKTogU3RyaXAgdHlwZWRlZnMgYW5kIHF1YWxzIGF0IHRoZSB0b3AuCgkoYnVpbGRfbWFuZ2xlZF9uYW1lX2Zvcl90eXBlX3dpdGhfR2NvZGUpOiBSZW1vdmUgY2FsbCB0bwoJdHlwZV9jYW5vbmljYWxfdmFyaWFudC4KCShidWlsZF9tYW5nbGVkX25hbWUpOiBMaWtld2lzZS4gIFJlbW92ZSBzdXBwb3J0IGZvciBvbGQtc3R5bGUKCXJlcGVhdHMsIHdoaWNoIGhhdmUgYmVlbiBkaXNhYmxlZCBzaW5jZSAyLjcuMi4gIERvbid0IG1lc3Mgd2l0aAoJVFJFRV9VU0VELgoJKGJ1aWxkX2RlY2xfb3ZlcmxvYWRfcmVhbCk6IERvbid0IG1lc3Mgd2l0aCBUUkVFX1VTRUQuCgoxOTk5LTAzLTEzICBOYXRoYW4gU2lkd2VsbCAgPG5hdGhhbkBhY20ub3JnPgoKCSogZXJyb3IuYyAoY3BfcHJpbnRlcnMpOiBBZGQgJ0YnIGVzY2FwZSBjaGFyYWN0ZXIuCgkoZHVtcF90eXBlX3JlYWwpOiBSZW1vdmUgVFJFRV9MSVNUIChmbmFyZ3MpIHByaW50aW5nLgoJRnVuY3Rpb25hbGl0eSBtb3ZlZCB0byBkdW1wX3BhcmFtZXRlcnMuCgkoZHVtcF90eXBlX3N1ZmZpeCk6IFVzZSBkdW1wX3BhcmFtZXRlcnMgYW5kIGR1bXBfZXhjZXB0aW9uX3NwZWMuCgkoZHVtcF9mdW5jdGlvbl9kZWNsKTogRXh0ZW5kIG1lYW5pbmcgb2YgViBwYXJhbWV0ZXIuICBVc2UKCWR1bXBfcGFyYW1ldGVycyBhbmQgZHVtcF9leGNlcHRpb25fc3BlYy4KCShkdW1wX3BhcmFtZXRlcnMpOiBOZXcgc3RhdGljIGZ1bmN0aW9uLgoJKGR1bXBfZXhjZXB0aW9uX3NwZWMpOiBOZXcgc3RhdGljIGZ1bmN0aW9uLgoJKGZuZGVjbF9hc19zdHJpbmcpOiBDaGFuZ2UgYXJndW1lbnQgc2VtYW50aWNzLiAgVXNlCglkdW1wX2Z1bmN0aW9uX2RlY2wgZGlyZWN0bHkuCgoJKiBzaWcuYyAoYnVpbGRfc2lnbmF0dXJlX3RhYmxlX2NvbnN0cnVjdG9yKTogVXNlIGNwX2Vycm9yLgoKMTk5OS0wMy0xMyAgTWFydGluIHZvbiBM9ndpcyAgPGxvZXdpc0BpbmZvcm1hdGlrLmh1LWJlcmxpbi5kZT4KCgkqIHNlbWFudGljcy5jIChmaW5pc2hfc3dpdGNoX2NvbmQpOiBIYW5kbGUgZXJyb3IgY2FzZXMgZ3JhY2VmdWxseS4KCURldGVjdGVkIGJ5IGcrKy5sYXcvZW51bTUuQy4KCgkqIHR5cGVjay5jIChidWlsZF9tb2RpZnlfZXhwcik6IENoZWNrIGZvciBlcnJvcnMgYWZ0ZXIgcmVzb2x2aW5nCglvZmZzZXRzLiAgRGV0ZWN0ZWQgYnkgZysrLmJyZW5kYW4vc3RhdGljMS5DLgoKCSogZGVjbC5jIChjb21wbGV0ZV9hcnJheV90eXBlKTogSWdub3JlIGluaXRpYWxfdmFsdWUgaWYgaXQgaXMgYW4KCWVycm9yLiAgRGV0ZWN0ZWQgYnkgZysrLmJlbmphbWluLzE3OTMwLkMuCgoJKiB0eXBlY2syLmMgKHByb2Nlc3NfaW5pdF9jb25zdHJ1Y3Rvcik6IFJldHVybiBlcnJvciBpZiBvbmUgYXJndW1lbnQKCWlzIGluIGVycm9yLiAgRGV0ZWN0ZWQgYnkgZysrLmJlbmphbWluLzEzNDc4LkMuCgoxOTk5LTAzLTEyICBNYXJ0aW4gdm9uIEz2d2lzICA8bG9ld2lzQGluZm9ybWF0aWsuaHUtYmVybGluLmRlPgoKCSogZGVjbC5jIChzZWxlY3RfZGVjbCk6IEFsbG93IGNsYXNzIHRlbXBsYXRlcyB3aGVuIHdlIG5lZWQgdHlwZXMuCgkqIGRlY2wyLmMgKGFtYmlndW91c19kZWNsKTogTGlrZXdpc2UuCgoxOTk5LTAzLTEyICBNYXJrIE1pdGNoZWxsICA8bWFya0BtYXJrbWl0Y2hlbGwuY29tPgoKCSogbGV4LmMgKGRvX2lkZW50aWZpZXIpOiBDb3JyZWN0IGNhbGwgdG8gZW5mb3JjZV9hY2Nlc3MuCgkqIHNlYXJjaC5jIChhY2Nlc3NpYmxlX3ApOiBUd2VhayBjb21tZW50LgoKMTk5OS0wMy0xMCAgTWFyayBNaXRjaGVsbCAgPG1hcmtAbWFya21pdGNoZWxsLmNvbT4KCgkqIHNlbWFudGljcy5jIChiZWdpbl9jbGFzc19kZWZpbml0aW9uKTogQ2FsbCBidWlsZF9zZWxmX3JlZmVyZW5jZS4KCShmaW5pc2hfbWVtYmVyX2RlY2xhcmF0aW9uKTogU2V0IERFQ0xfQ09OVEVYVCBmb3IgVFlQRV9ERUNMcy4KCgkqIHNlYXJjaC5jIChhc3NlcnRfY2Fub25pY2FsX3VubWFya2VkKTogRml4IHR5cG8gaW4gcHJvdG90eXBlLgoKCSogc2VhcmNoLmMgKGRmc19jYW5vbmljYWxfcXVldWUpOiBOZXcgZnVuY3Rpb24uCgkoZGZzX2Fzc2VydF91bm1hcmtlZF9wKTogTGlrZXdpc2UuCgkoYXNzZXJ0X2Nhbm9uaWNhbF91bm1hcmtlZCk6IExpa2V3aXNlLgoJKGFjY2Vzc19pbl90eXBlKTogVXNlIGl0LgoJKGFjY2Vzc2libGVfcCk6IExpa2V3aXNlLiAgV2FsayB0aGUgd2hvbGUgdHJlZSB3aGVuIHVtYXJraW5nLgoKCSogc2lnLmMgKGJ1aWxkX3NpZ25hdHVyZV90YWJsZV9jb25zdHJ1Y3Rvcik6IFVzZSBhY2Nlc3NpYmxlX3AKCWluc3RlYWQgb2YgY29tcHV0ZV9hY2Nlc3MuCgoxOTk5LTAzLTA5ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBjYWxsLmMgKGFkZF9idWlsdGluX2NhbmRpZGF0ZXMpOiBIYW5kbGUgb3ZlcmxvYWRlZCBjb252ZXJzaW9uIG9wcy4KCjE5OTktMDMtMDkgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQG1hcmttaXRjaGVsbC5jb20+CgoJKiBjcC10cmVlLmggKGZsYWdfYWNjZXNzX2NvbnRyb2wpOiBEZWNsYXJlLgoJKFRSRUVfVklBX1BQVUJMSUMpOiBEb2N1bWVudC4KCShERUNMX05PTlNUQVRJQ19NRU1CRVJfUCk6IE5ldyBtYWNyby4KCShlbmZvcmNlX2FjY2Vzcyk6IFJldHVybiBhbiBpbmRpY2F0aW9uIG9mIHdoZXRoZXIgb3Igbm90IGFjY2VzcwoJd2FzIHBlcm1pdHRlZC4KCShidWlsZF9zZWxmX3JlZmVyZW5jZSk6IENoYW5nZSBwcm90b3R5cGUuCgkoY29tcHV0ZV9hY2Nlc3MpOiBSZXBsYWNlIHdpdGggLi4uCgkoYWNjZXNzaWJsZV9wKTogTmV3IGZ1bmN0aW9uLgoJKGRmc193YWxrKTogQ2hhbmdlIHByb3RvdHlwZS4KCShkZnNfdW5tYXJrKTogTGlrZXdpc2UuCgkobWFya2VkcCk6IExpa2V3aXNlLgoJKiBjYWxsLmMgKGVuZm9yY2VfYWNjZXNzKTogVXNlIGFjY2Vzc2libGVfcC4KCSogY2xhc3MuYyAoYnVpbGRfc2VsZl9yZWZlcmVuY2UpOiBJbnNlcnQgdGhlIGRlY2xhcmF0aW9uIGludG8gdGhlCglsaXN0IG9mIG1lbWJlcnMgZm9yIHRoaXMgdHlwZSwgYW5kIG1ha2UgaXQgcHVibGljLgoJKiBkZWNsLmMgKHhyZWZfYmFzZXR5cGVzKTogQXZvaWQgaWxsLXRpbWVkIHJlY3Vyc2lvbi4KCSogaW5pdC5jIChidWlsZF9vZmZzZXRfcmVmKTogVXNlIGxvb2t1cF9tZW1iZXIsIG5vdCB0aHJlZSBzZXBhcmF0ZQoJbmFtZS1sb29rdXBzLiAgQ2FsbCBlbmZvcmNlX2FjY2VzcyByYXRoZXIgdGhhbiBjaGVja2luZyBmb3IKCWlsbGVnYWwgYWNjZXNzZXMgaGVyZS4KCShyZXNvbHZlX29mZnNldF9yZWYpOiBMaWtld2lzZS4KCSogbGV4LmMgKGRvX2lkZW50aWZpZXIpOiBMaWtld2lzZS4KCSogbWV0aG9kLmMgKGhhY2tfaWRlbnRpZmllcik6IExpa2V3aXNlLgoJKiBwYXJzZS55IChzZWxmX3JlZmVyZW5jZSk6IFJlbW92ZS4KCShvcHRfY29tcG9uZW50X2RlY2xfbGlzdCk6IERvbid0IHVzZSBpdC4KCSogcGFyc2UuYzogUmVnZW5lcmF0ZWQuCgkqIHB0LmMgKHByaW50X2NhbmRpZGF0ZXMpOiBHZW5lcmFsaXplIHRvIGhhbmRsZSBsaXN0cyBvZgoJb3ZlcmxvYWRlZCBmdW5jdGlvbnMuCgkoaW5zdGFudGlhdGVfY2xhc3NfdGVtcGxhdGUpOiBEb24ndCByZWx5IG9uIFRSRUVfVklBX1BSSVZBVEU7IGl0J3MKCW5vdCBzZXQuCgkoZ2V0X3RlbXBsYXRlX2Jhc2UpOiBVc2UgbmV3IGNhbGxpbmcgY29udmVudGlvbiBmb3IgZGZzX3dhbGsuCgkqIHNlYXJjaC5jOiBJbmNsdWRlIHZhcnJheS5oLiAgQWRkIHByb3RvdHlwZXMuCgkoZGZzX3dhbGspOiBBY2NlcHQgYSBkYXRhIHBvaW50ZXIgdG8gcGFzcyB0byB0aGUgd29yayBmdW5jdGlvbnMuCglBbGwgY2FsbGVycyBjaGFuZ2VkLiAgQWxsIHdvcmsgZnVuY3Rpb25zIGNoYW5nZWQuCgkoYnJlYWR0aF9maXJzdF9zZWFyY2gpOiBSZW5hbWUgdG8gYmZzX3dhbGssIGFuZCBtYWtlIGNvbnNpc3RlbnQKCXdpdGggZGZzX3dhbGsuCgkoZGZzX3dhbGtfcmVhbCk6IE5ldyBmdW5jdGlvbi4KCShjYW5vbmljYWxfYmluZm8pOiBOZXcgZnVuY3Rpb24uCgkoY29udGV4dF9mb3JfbmFtZV9sb29rdXApOiBMaWtld2lzZS4KCShzaGFyZWRfbWFya2VkX3ApOiBMaWtld2lzZS4KCShzaGFyZWRfdW5tYXJrZWRfcCk6IExpa2V3aXNlLgoJKGxva3VwX2ZpZWxkX3F1ZXVlX3ApOiBMaWtld2lzZS4KCShsb29rdXBfZmllbGRfcik6IEdlbmVyYWxpemUgdG8gaGFuZGxlIGJvdGggZnVuY3Rpb25zIGFuZCBmaWVsZHMuCgkobG9va3VwX2ZpZWxkKTogSnVzdCBjYWxsIGxvb2t1cF9tZW1iZXIuCgkobG9va3VwX2ZuZmllbGRzKTogTGlrZXdpc2UuCgkobG9va3VwX21lbWJlcik6IE1vdmUgYm9keSBvZiBsb29rdXBfZmllbGQgaGVyZSBhbmQgZ2VuZXJhbGl6ZS4KCShkZnNfYWNjZXNzaWJsZV9xdWV1ZV9wKTogTGlrZXdpc2UuCgkoZGZzX2FjY2Vzc2libGVfcCk6IExpa2V3aXNlLgoJKGRmc19hY2Nlc3NfaW5fdHlwZSk6IExpa2V3aXNlLgoJKGFjY2Vzc19pbl90eXBlKTogTGlrZXdpc2UuCgkoY29tcHV0ZV9hY2Nlc3MpOiBSZW1vdmUsIGFuZCByZXBsYWNlIHdpdGggLi4uCgkoYWNjZXNzaWJsZV9wKTogTmV3IGZ1bmN0aW9uLgoJKHZiYXNlX3R5cGVzKTogUmVtb3ZlLgoJKHZiYXNlX2RlY2xfcHRyX2ludGVybWVkaWF0ZSk6IExpa2V3aXNlLgoJKHZiYXNlX2RlY2xfcHRyKTogTGlrZXdpc2UuCgkodmJhc2VfaW5pdF9yZXN1bHQpOiBMaWtld2lzZS4KCShjbG9zZWRfZW52ZWxvcGVzKTogTGlrZXdpc2UuCgkoYnZ0YWJsZSk6IExpa2V3aXNlLgoKMTk5OS0wMy0wOSAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogY2FsbC5jIChhZGRfZnVuY3Rpb25fY2FuZGlkYXRlKTogQ2hlY2sgZm9yIHByb3BlciBudW1iZXIgb2YgYXJncwoJYmVmb3JlIGNoZWNraW5nIHRoZSB2YWxpZGl0eSBvZiB0aG9zZSBhcmdzLgoKMTk5OS0wMy0wNiAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogY3AtdHJlZS5oIChzdHJ1Y3QgbGFuZ190eXBlKTogQWRkIGFub25fdW5pb24gZmllbGQuCgkoQU5PTl9VTklPTl9UWVBFX1ApOiBVc2UgaXQgaW5zdGVhZCBvZiBleGFtaW5pbmcgdHlwZS4KCShTRVRfQU5PTl9VTklPTl9UWVBFX1ApOiBOZXcgbWFjcm8uCgkqIGRlY2wuYyAoY2hlY2tfdGFnX2RlY2wpOiBVc2UgaXQuCgoJKiBzZWFyY2guYyAoY29tcHV0ZV9hY2Nlc3MpOiBIYW5kbGUgbm9uLXR5cGUgY29udGV4dHMgZWFybGllciwgYW5kCgloYW5kbGUgTlVMTF9UUkVFLgoKCSogdHJlZS5jIChidWlsZF9leGNlcHRpb25fdmFyaWFudCk6IFVzZSBjb3B5X3RvX3Blcm1hbmVudC4KCgkqIGRlY2wyLmMgKHNldHVwX2luaXRwKTogR2l2ZSBzdGF0aWNzIHdpdGggbm8gcHJpb3JpdHkgdGhlIGRlZmF1bHQKCXByaW9yaXR5IGhlcmUuCgkoZG9fZHRvcnMsIGRvX2N0b3JzLCBmaW5pc2hfZmlsZSk6IFJlbW92ZSBzcGVjaWFsIGhhbmRsaW5nIG9mCglub24tcHJpb3JpdGl6ZWQgc3RhdGljcy4KCjE5OTktMDMtMDUgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQG1hcmttaXRjaGVsbC5jb20+CgoJKiBjcC10cmVlLmggKEFOT05fVU5JT05fVFlQRV9QKTogUm9idXN0aWZ5LgoJKiBkZWNsLmMgKG1ha2VfdHlwZW5hbWVfdHlwZSk6IERvbid0IGlzc3VlIGFuIGVycm9yIGlmIGFuCglpbW1lZGlhdGUgbG9va3VwIGZhaWxzOyBpdCBtaWd0IGJlIHJlc29sdmVkIGxhdGVyLgoJKiBmcmllbmQuYyAoaXNfZnJpZW5kKTogQWRkIGNvbW1lbnQuCgkqIHNlYXJjaC5jIChicmVhZHRoX2ZpcnN0X3NlYXJjaCk6IEFkZCBQT1NURk4gYW5kIERBVEEKCXBhcmFtZXRlcnMuICBUaWR5LiAgQWxsIGNhbGxlcnMgY2hhbmdlZC4KCShsb29rdXBfZmllbGRfcXVldWVfcCk6IE5ldyBmdW5jdGlvbi4KCShsb29rdXBfZmllbGRfcik6IExpa2V3aXNlLgoJKGxvb2t1cF9maWVsZF9wb3N0KTogTGlrZXdpc2UuCgkobG9va3VwX2ZpZWxkKTogVXNlIHRoZW0sIHZpYSBicmVhZHRoX2ZpcnN0X3NlYXJjaCwgaW5zdGVhZCBvZgoJZHVwbGljYXRpbmcgbG9naWMuCgkoY29tcHV0ZV9hY2Nlc3MpOiBSb2J1c3RpZnkuCgkobG9va3VwX2ZuZmllbGRfaW5mbyk6IE5ldyBzdHJ1Y3R1cmUuCgoxOTk5LTAzLTA1ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBwdC5jICh0c3Vic3QsIGNhc2UgQVJSQVlfUkVGKTogVXNlIHRzdWJzdF9leHByIGFnYWluLgoKMTk5OS0wMy0wMyAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogY2xhc3MuYywgZGVjbDIuYywgbWV0aG9kLmMsIHB0LmM6IEFkZCAnc3RhdGljJyB0byBtYWtlIFN1bk9TIDQKCWNjIGhhcHB5LgoKCSogZGVjbDIuYyAoaW1wb3J0X2V4cG9ydF9jbGFzcyk6IEFsc28gcmV0dXJuIGlmCglDTEFTU1RZUEVfSU5URVJGQUNFX09OTFkgaXMgc2V0LgoKMTk5OS0wMy0wMyAgTWFydGluIHZvbiBM9ndpcyAgPGxvZXdpc0BpbmZvcm1hdGlrLmh1LWJlcmxpbi5kZT4KCgkqIGRlY2wuYyAocHVzaF9vdmVybG9hZGVkX2RlY2wpOiBPbmx5IG92ZXJ3cml0ZSB0aGUgb2xkIGJpbmRpbmcgaWYKCXRoZXJlIHdhcyBvbmUuCgkqIGRlY2wyLmMgKGRvX2xvY2FsX3VzaW5nX2RlY2wpOiBGaXggbG9vcCB0ZXJtaW5hdGlvbi4KCjE5OTktMDMtMDIgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQG1hcmttaXRjaGVsbC5jb20+CgoJKiBjcC10cmVlLmggKGRldGVybWluZV9zcGVjaWFsaXphdGlvbik6IERvbid0IGRlY2xhcmUuCgkqIHB0LmMgKGRldGVybWluZV9zcGVjaWFsaXphdGlvbik6IE1ha2UgaXQgc3RhdGljLiAgRWxpbWluYXRlCgljb21wbGFpbiBwYXJhbWV0ZXIuICBOb3RlIHRoYXQgZGVjbCBpcyBhbHdheXMgbm9uLU5VTEwgbm93LCBhbmQKCXNpbXBsaWZ5IGFjY29yZGluZ2x5LgoKCSogZGVjbC5jIChtYXliZV9wdXNoX3RvX3RvcF9sZXZlbCk6IEFsd2F5cyBjYWxsCglwdXNoX2NwX2Z1bmN0aW9uX2NvbnRleHQuCgkocG9wX2Zyb21fdG9wX2xldmVsKTogQWx3YXlzIGNhbGwgcG9wX2NwX2Z1bmN0aW9uX2NvbnRleHQuCgoxOTk5LTAyLTI2ICBOYXRoYW4gU2lkd2VsbCAgPG5hdGhhbkBhY20ub3JnPgoKCSogdHlwZWNrLmMgKGNvbXBsZXRlX3R5cGVfb3JfZWxzZSk6IEFkZCBWQUxVRSBhcmcsIGZvciBoZWxwZnVsCglkaWFnbm9zdGljcy4KCSogY3AtdHJlZS5oIChjb21wbGV0ZV90eXBlX29yX2Vsc2UpOiBBZGRlZCBWQUxVRSBwYXJhbWV0ZXIuCgkqIGluaXQuYyAoYnVpbGRfbmV3XzEpOiBFeHRyYSBhcmcgdG8gY29tcGxldGVfdHlwZV9vcl9lbHNlLgoJKGJ1aWxkX2RlbGV0ZSk6IExpa2V3aXNlLgoJKiB0eXBlY2suYyAocmVxdWlyZV9jb21wbGV0ZV90eXBlKTogTGlrZXdpc2UuCgkocG9pbnRlcl9pbnRfc3VtKTogTGlrZXdpc2UuCgkocG9pbnRlcl9kaWZmKTogTGlrZXdpc2UuCgkoYnVpbGRfY29tcG9uZW50X3JlZik6IExpa2V3aXNlLgoKCSogdHlwZWNrMi5jIChpbmNvbXBsZXRlX3R5cGVfZXJyb3IpOiBBbHdheXMgdXNlIGNwX2Vycm9yLgoJU2hvdyBkZWNsYXJhdGlvbiBvZiB1bmRlZmluZWQgdHlwZSwgaWYgYXBwcm9wcmlhdGUuCglEZWFsIHdpdGggVU5LTk9XTl9UWVBFIG5vZGVzLgoKCSogdHlwZWNrLmMgKHJlcXVpcmVfY29tcGxldGVfdHlwZSk6IFVzZSBUWVBFX1NJWkUgYXMKCXNpemVfemVyb19ub2RlIHRvIG1lYW4gaW5jb21wbGV0ZSB0eXBlLgoJKHJlcXVpcmVfY29tcGxldGVfdHlwZV9pbl92b2lkKTogTmV3IGZ1bmN0aW9uLgoJKGJ1aWxkX2NvbXBvdW5kX2V4cHIpOiBDYWxsIGNvbXBsZXRlX3R5cGVfaW5fdm9pZCBmb3IgTEhTLgoJKGJ1aWxkX2NfY2FzdCk6IENhbGwgY29tcGxldGVfdHlwZV9pbl92b2lkIGZvciB2b2lkIGNhc3QuCgkqIGN2dC5jIChvY3BfY29udmVydCk6IENhbGwgY29tcGxldGVfdHlwZV9pbl92b2lkIGZvciB2b2lkIGNhc3QuCgkqIGRlY2wuYyAoY3BsdXNfZXhwYW5kX2V4cHJfc3RtdCk6IFZvaWQgZXhwcmVzc2lvbiBjaGVja3MgbW92ZWQgdG8KCXJlcXVpcmVfY29tcGxldGVfdHlwZV9pbl92b2lkLiAgQ2FsbCBpdC4KCSogY3AtdHJlZS5oIChyZXF1aXJlX2NvbXBsZXRlX3R5cGVfaW5fdm9pZCk6IFByb3RvdHlwZSBuZXcgZnVuY3Rpb24uCgoJKiB0eXBlY2suYyAoY29udmVydF9hcmd1bWVudHMpOiBVc2UgYWx0ZXJuYXRpdmUgZm9ybWF0IGZvcgoJZnVuY3Rpb24gZGVjbHMuICBEb24ndCByZXF1aXJlX2NvbXBsZXRlX3R5cGUgaGVyZS4gIFNpbXBsaWZ5CglkaWFnbm9zdGljIHByaW50aW5nLgoJKGNvbnZlcnRfZm9yX2luaXRpYWxpemF0aW9uKTogRG9uJ3QgcmVxdWlyZV9jb21wbGV0ZV90eXBlIG9uIFJIUyB5ZXQuCgkqIGNhbGwuYyAoY29udmVydF9hcmdfdG9fZWxsaXBzaXMpOiBDYWxsIHJlcXVpcmVfY29tcGxldGVfdHlwZS4KCgkqIGNhbGwuYyAoYnVpbGRfb3Zlcl9jYWxsKTogQ29wZSB3aXRoIHF1YWxpZmllZCB2b2lkIHJldHVybiB0eXBlLgoJKiBzZW1hbnRpY3MuYyAoZmluaXNoX2NhbGxfZXhwcik6IExpa2V3aXNlLgoJKiB0eXBlY2suYyAoYnVpbGRfZnVuY3Rpb25fY2FsbF9yZWFsKTogTGlrZXdpc2UuCgkoY19leHBhbmRfcmV0dXJuKTogTGlrZXdpc2UuCgkqIGRlY2wyLmMgKHJlcGFyc2VfYWJzZGNsX2FzX2V4cHIpOiBDb3BlIHdpdGggcXVhbGlmaWVkIHZvaWQgdHlwZS4KCgkqIGNhbGwuYyAocHJpbnRfel9jYW5kaWRhdGVzKTogVXNlIGFsdGVybmF0ZSBwcmludCBmb3JtYXQsIHRvIGJlCgljb25zaXN0ZW50IHdpdGggKHB0LmMpIHByaW50X2NhbmRpZGF0ZXMuCgkqIG1ldGhvZC5jIChoYWNrX2lkZW50aWZpZXIpOiBMaXN0IGNhbmRpZGF0ZSBtZW1iZXJzLgoJKiBzZWFyY2guYyAobG9va3VwX2ZpZWxkKTogQnVpbGQgYW1iaWd1b3VzIGxpc3QsIGFuZCBzaG93IGl0LCBpZgoJYW1iaWd1b3VzLgoKMTk5OS0wMi0yNiAgTWFyayBNaXRjaGVsbCAgPG1hcmtAbWFya21pdGNoZWxsLmNvbT4KCgkqIHR5cGVjay5jIChkZWNheV9jb252ZXJzaW9uKTogRG9uJ3QgY29uZnVzZSBjb25zdGFudCBhcnJheQoJdmFyaWFibGVzIHdpdGggdGhlaXIgaW5pdGlhbGl6ZXJzLgoKCSogZGVjbC5jIChkdXBsaWNhdGVfZGVjbHMpOiBDb3B5IERFQ0xfVEVNUExBVEVfSU5TVEFOVElBVEVEIHdoZW4KCW1lcmdpbmcgZGVjbHMuCgkqIHB0LmMgKHJlZ2VuZXJhdGVfZGVjbF9mcm9tX3RlbXBsYXRlKTogVHdlYWsgZm9yIGNsYXJpdHkuCgkoaW5zdGFudGlhdGVfZGVjbCk6IE1hcmsgYSBkZWNsIGluc3RhbnRpYXRlZCBiZWZvcmUgcmVnZW5lcmF0aW5nCglpdCB0byBhdm9pZCByZWN1cnNpb24uCgkqIHRyZWUuYyAobWFwY2FyKTogRG9uJ3QgY2FsbCBkZWNsX2NvbnN0YW50X3ZhbHVlIHVubGVzcyB3ZSBrbm93Cglzb21ldGhpbmcgaXMgVFJFRV9SRUFET05MWV9ERUNMX1AuCgoJKiBjbGFzcy5jIChjaGVja19mb3Jfb3ZlcnJpZGUpOiBEb24ndCBzdG9wIGNoZWNraW5nIHdoZW4gd2UgZmluZAoJdGhlIGZpcnN0IG92ZXJyaWRkZW4gZnVuY3Rpb24uICBEZWxldGUgI2lmIDAnZCBjb2RlLgoJKiBzZWFyY2guYyAoZ2V0X21hdGNoaW5nX3ZpcnR1YWwpOiBMaWtld2lzZS4KCjE5OTktMDItMjUgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgoJKiBsYW5nLXNwZWNzLmg6IERlZmluZSBfX0ZBU1RfTUFUSF9fIHdoZW4gYXBwcm9wcmlhdGUuCgoxOTk5LTAyLTI0ICBNaWtlIFN0dW1wICA8bXJzQHdycy5jb20+CgoJKiB0eXBlY2suYyAoY29udmVydF9mb3JfYXNzaWdubWVudCk6IEFsbG93IGJvb2xlYW4gaW50ZWdyYWwgY29uc3RhbnQKCWV4cHJlc3Npb25zIHRvIGNvbnZlcnQgdG8gbnVsbCBwb2ludGVyLgoKMTk5OS0wMi0yNCAgTWFydGluIHZvbiBMb2V3aXMgIDxsb2V3aXNAaW5mb3JtYXRpay5odS1iZXJsaW4uZGU+CgoJKiBkZWNsLmMgKGxvb2t1cF9uYW1lc3BhY2VfbmFtZSk6IFJlc29sdmUgbmFtZXNwYWNlIGFsaWFzZXMuCgoJKiBjbGFzcy5jIChwdXNoX25lc3RlZF9jbGFzcyk6IEFsbG93IG5hbWVzcGFjZXMuCgoJKiBkZWNsMi5jIChzZXRfZGVjbF9uYW1lc3BhY2UpOiBBZGQgZnJpZW5kcCBwYXJhbWV0ZXIuCgkqIGRlY2wuYyAoZ3Jva2ZuZGVjbCk6IFBhc3MgaXQuCgkoZ3Jva3ZhcmRlY2wpOiBMaWtld2lzZS4KCSogY3AtdHJlZS5oOiBDaGFuZ2UgZGVjbGFyYXRpb24uCgoxOTk5LTAyLTI0ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBwdC5jICh0c3Vic3QpOiBBbGxvdyBhbiBhcnJheSBvZiBleHBsaWNpdCBzaXplIHplcm8uCgoxOTk5LTAyLTIzICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBlcnJmbi5jOiBDaGFuZ2UgdmFyYXJncyBjb2RlIHRvIGxvb2sgbGlrZSB0b3BsZXYuYy4KCgkqIG1ldGhvZC5jIChwcm9jZXNzX21vZGlmaWVycyk6IERvbid0IHByZXBlbmQgJ1UnIGZvciBjaGFyIG9yCgl3Y2hhcl90LgoKMTk5OS0wMi0yMCAgQ3JhaWcgQnVybGV5ICA8Y3JhaWdAamNiLXNjLmNvbT4KCgkqIE1ha2UtbGFuZy5pbiAoY3BsaWIyLnJlYWR5KTogRG9uJ3QgY29uc2lkZXIgdXBkYXRpbmcKCWNwbGliMiBzdHVmZiBpZiB0aGUgY3VycmVudCBkaXJlY3RvcnkgaXNuJ3Qgd3JpdGFibGUsIGFzCglpdCB3b24ndCB3b3JrIChzdWNoIGFzIGR1cmluZyBhIGBtYWtlIGluc3RhbGwnKS4KClN1biBGZWIgMjEgMjA6Mzg6MDAgMTk5OSAgSC5KLiBMdSAgKGhqbEBnbnUub3JnKQoKCSogZGVjbDIuYyAoc3RhcnRfb2JqZWN0cyk6IE1ha2UgZmlsZSBzY29wZSBjb25zdHJ1Y3RvcnMgYW5kCglkZXN0cnVjdG9ycyBsb2NhbCB0byB0aGUgZmlsZSBpZiBBU01fT1VUUFVUX0NPTlNUUlVDVE9SIGFuZAoJQVNNX09VVFBVVF9ERVNUUlVDVE9SIGFyZSBkZWZpbmVkLgoKMTk5OS0wMi0xOSAgTWFyayBNaXRjaGVsbCAgPG1hcmtAbWFya21pdGNoZWxsLmNvbT4KCgkqIGNwLXRyZWUuaCAoQ0xBU1NUWVBFX01FVEhPRF9WRUMpOiBBZGp1c3QgY29tbWVudC4KCShmbl90eXBlX3VuaWZpY2F0aW9uKTogQWRqdXN0IHByb3RvdHlwZS4KCShsb29rdXBfZm5maWVsZHNfMSk6IERlY2xhcmUuCgkqIGNhbGwuYyAoYWRkX3RlbXBsYXRlX2NhbmRpZGF0ZV9yZWFsKTogQWRqdXN0IGNhbGwgdG8KCWZuX3R5cGVfdW5pZmljYXRpb24uCgkqIGNsYXNzLmMgKGFkZF9tZXRob2QpOiBEb24ndCBhbGxvdyBkdXBsaWNhdGUgZGVjbGFyYXRpb25zIG9mCgljb25zdHJ1Y3RvcnMgb3IgZGVzdHJ1Y3RvcnMuCgkocmVzb2x2ZV9hZGRyZXNzX29mX292ZXJsb2FkZWRfZnVuY3Rpb24pOiBSZW1vdmUgdW51c2VkIHZhcmlhYmxlLgoJQWRqdXN0IGNhbGwgdG8gZm5fdHlwZV91bmlmaWNhdGlvbi4KCSogZGVjbC5jIChncm9rZm5kZWNsKTogQmUgbW9yZSByb2J1c3QgaW4gdGhlIGZhY2Ugb2YgaWxsZWdhbAoJc3BlY2lhbGl6YXRpb25zLgoJKiBkZWNsMi5jIChjaGVja19jbGFzc2ZuKTogUmVtb3ZlIGhva2V5IGhhbmRsaW5nIG9mIG1lbWJlcgoJdGVtcGxhdGVzLgoJKiBwdC5jIChkZXRlcm1pbmVfc3BlY2lhbGl6YXRpb24pOiBJbXByb3ZlIGNvbW1lbnRzLiAgQWRqdXN0IHRvCgloYW5kbGUgdGVtcGxhdGUgYXJndW1lbnQgZGVkdWN0aW9uIGFzIHBlciB0aGUgc3RhbmRhcmQuCgkoY2hlY2tfZXhwbGljaXRfc3BlY2lhbGl6YXRpb24pOiBGaXggY29tbWVudCBzcGFjaW5nLiAgSGFuZGxlCgl0eXBlLWNvbnZlcnNpb24gb3BlcmF0b3JzIGNvcnJlY3RseS4gIEltcHJvdmUgZXJyb3ItcmVjb3ZlcnkuCgkoZm5fdHlwZV91bmlmaWNhdGlvbik6IFJlbW92ZSBFWFRSQV9GTl9BUkcgcGFyYW1ldGVyLgoJKGdldF9iaW5kaW5nc19yZWFsKTogU2ltcGxpZnkgaGFuZGxpbmcgb2Ygc3RhdGljIG1lbWJlcnMuCgkqIHNlYXJjaC5jIChsb29rdXBfZm5maWVsZHNfMSk6IE1ha2UgaXQgaGF2ZSBleHRlcm5hbCBsaW5rYWdlLgoJKiB0eXBlY2suYyAoY29tcHBhcm1zKTogRml4IGNvbW1lbnQuCgkoYnVpbGRfdW5hcnlfb3ApOiBEb24ndCB0cnkgdG8gZmlndXJlIG91dCB3aGljaCB0ZW1wbGF0ZQoJc3BlY2lhbGl6YXRpb24gaXMgYmVpbmcgcmVmZXJyZWQgdG8gd2hlbiB3aGVuIHRoZSBhZGRyZXNzLW9mCglvcGVyYXRvciBpcyB1c2VkIHdpdGggYSB0ZW1wbGF0ZSBmdW5jdGlvbi4KClRodSBGZWIgMTggMjM6NDA6MDEgMTk5OSAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogY3AtdHJlZS5oIChsdmFsdWVfb3JfZWxzZSk6IFF1YWxpZnkgYSBjaGFyKiB3aXRoIHRoZSBgY29uc3QnCglrZXl3b3JkIHRvIG1hdGNoIGFuIGFuYWxvZ291cyBjaGFuZ2UgYXQgdGhlIHRvcCBsZXZlbC4KCgkqIHRyZWUuYyAobHZhbHVlX29yX2Vsc2UpOiBMaWtld2lzZS4KCjE5OTktMDItMTcgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQG1hcmttaXRjaGVsbC5jb20+CgoJKiBkZWNsLmMgKHhyZWZfYmFzZXR5cGVzKTogQ29tbWVudC4KCSogcHQuYyAoaW5zdGFudGlhdGVfY2xhc3NfdGVtcGxhdGUpOiBVc2UgeHJlZl9iYXNldHlwZXMuCgoxOTk5LTAyLTE2ICBNYXJrIE1pdGNoZWxsICA8bWFya0BtYXJrbWl0Y2hlbGwuY29tPgoKCSogY3AtdHJlZS5oICh0c3Vic3QpOiBDaGFuZ2UgcHJvdG90eXBlLgoJKHRzdWJzdF9leHByKTogTGlrZXdpc2UuCgkodHN1YnN0X2NvcHkpOiBMaWtld2lzZS4KCSh0eXBlX3VuaWZpY2F0aW9uKTogUmVtb3ZlIHByb3RvdHlwZS4KCSogY2FsbC5jIChjb252ZXJ0X2RlZmF1bHRfYXJnKTogQWRqdXN0IGNhbGwgdG8gdHN1YnN0X2V4cHIuCgkqIGNsYXNzLmMgKHJlc29sdmVfYWRkcmVzc19vZl9vdmVybG9hZGVkX2Z1bmN0aW9uKTogSnVzdCB1c2UKCWZuX3R5cGVfdW5pZmljYXRpb24uCgkqIGRlY2wuYyAoZ3Jva2RlY2xhcmF0b3IpOiBBZGp1c3QgY2FsbCB0byB0c3Vic3QuCgkqIG1ldGhvZC5jIChidWlsZF90ZW1wbGF0ZV9wYXJtX25hbWVzKTogTGlrZXdpc2UuCgkqIHB0LmMgKEdUQl9WSUFfVklSVFVBTCk6IE5ldyBtYWNyby4KCShHVEJfSUdOT1JFX1RZUEUpOiBMaWtld2lzZS4KCShyZXNvbHZlX292ZXJsb2FkZWRfdW5pZmljYXRpb24pOiBBZGQgYGNvbXBsYWluJyBwYXJhbWV0ZXIuCgkodHJ5X29uZV9vdmVybG9hZCk6IExpa2V3aXNlLgoJKHRzdWJzdF90ZW1wbGF0ZV9hcmdfdmVjdG9yKTogTGlrZXdpc2UuCgkodHN1YnN0X3RlbXBsYXRlX3Bhcm1zKTogTGlrZXdpc2UuCgkodHN1YnN0X2FnZ3JfdHlwZSk6IExpa2V3aXNlLgoJKHRzdWJzdF9hcmdfdHlwZXMpOiBMaWtld2lzZS4KCSh0c3Vic3RfY2FsbF9kZWNsYXJhdG9yX3Bhcm1zKTogTGlrZXdpc2UuCgkodW5pZnkpOiBSZW1vdmUgZXhwbGljaXRfbWFzay4KCSh0eXBlX3VuaWZpY2F0aW9uX3JlYWwpOiBMaWtld2lzZS4KCShnZXRfdGVtcGxhdGVfYmFzZV9yZWN1cnNpdmUpOiBMaWtld2lzZS4KCShjb2VyY2VfdGVtcGxhdGVfdGVtcGxhdGVfcGFybXMpOiBQcm92aWRlIHByb3RvdHlwZS4KCSh0c3Vic3RfZnVuY3Rpb25fdHlwZSk6IExpa2V3aXNlLgoJKHRyeV9jbGFzc191bmlmaWNhdGlvbik6IE5ldyBmdW5jdGlvbi4KCUFsbCBjYWxsZXJzIGNoYW5nZWQgdG8gdXNlIG5ldyBjb21wbGFpbiBwYXJhbWV0ZXIuCgkoZ2V0X3RlbXBsYXRlX2Jhc2UpOiBVc2UgdHJ5X2NsYXNzX3VuaWZpY2F0aW9uLgoJKHVuaWZ5KTogQWRqdXN0IGhhbmRsaW5nIG9mIGNsYXNzZXMgZGVyaXZlZCBmcm9tIHRlbXBsYXRlIHR5cGVzLgoJKGZuX3R5cGVfdW5pZmljYXRpb24pOiBTdWJzdGl0dXRlIGV4cGxpY2l0IGFyZ3VtZW50cyBiZWZvcmUKCXVuaWZpY2F0aW9uLgoKMTk5OS0wMi0xNiAgS3JpYW5nIExlcmRzdXdhbmFraWogIDxsZXJkc3V3YUBzY2YtZnMudXNjLmVkdT4KCgkqIGRlY2wuYyAocHVzaGRlY2wpOiBSZW1vdmUgZGVhZCBjb2RlLgoKMTk5OS0wMi0xNiAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogZGVjbDIuYyAoZmluaXNoX29iamVjdHMpOiBGaXggY29kZSBJIG1pc3NlZCBpbiBwcmV2aW91cyBjaGFuZ2UuCgoxOTk5LTAyLTEzICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBkZWNsLmMgKGdyb2tmbmRlY2wpOiBSZXR1cm4gTlVMTF9UUkVFIGluc3RlYWQgb2YgZXJyb3JfbWFya19ub2RlLgoJKGdyb2tkZWNsYXJhdG9yKTogRG9uJ3QgZXhwZWN0IGVycm9yX21hcmtfbm9kZSBmcm9tIGdyb2tmbmRlY2wuCgoJKiBwdC5jIChtYXliZV9wcm9jZXNzX3BhcnRpYWxfc3BlY2lhbGl6YXRpb24pOiBDb21wbGFpbiBhYm91dAoJJ3RlbXBsYXRlIDw+JyBvbiBub24tc3BlY2lhbGl6YXRpb24uCgoxOTk5LTAyLTEwICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBkZWNsLmMgKGdyb2tkZWNsYXJhdG9yKTogQ2F0Y2ggd2VpcmQgZGVjbGFyYXRvcnMuCgkqIGRlY2wyLmMgKGZpbmlzaF9maWxlKTogRG9uJ3QgYWJvcnQgYmVjYXVzZSBvZiBuYW1lc3BhY2UgcGFyc2luZwoJZmFpbHVyZS4KCShjaGVja19kZWNsX25hbWVzcGFjZSk6IFJlbW92ZS4KCjE5OTktMDItMDkgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQG1hcmttaXRjaGVsbC5jb20+CgoJKiBjcC10cmVlLmggKGdldF90ZW1wbGF0ZV9iYXNlKTogRG9uJ3QgZGVjbGFyZS4KCShkZnNfd2Fsayk6IERlY2xhcmUuCgkoZGZzX3VubWFyayk6IExpa2V3aXNlLgoJKG1hcmtlZHApOiBMaWtld2lzZS4KCSogcHQuYyAodW5pZnkpOiBSZW1vdmUgZHVwbGljYXRlIGRlY2xhcmF0aW9uLiAgUGFzcyB0cGFybXMgYW5kCgl0YXJncyB0byBnZXRfdGVtcGxhdGVfYmFzZS4KCShnZXRfdGVtcGxhdGVfYmFzZV9yZWN1cnNpdmUpOiBNb3ZlIGhlcmUgZnJvbSBzZWFyY2guYy4gIENoZWNrIHRvCglzZWUgdGhhdCB0aGUgYmFzZSBmb3VuZCBjYW4gYmUgaW5zdGFudGlhdGVkIHRvIGZvcm0gdGhlIGRlc2lyZWQKCXR5cGUuCgkoZ2V0X3RlbXBsYXRlX2Jhc2UpOiBMaWtld2lzZS4KCShnZXRfY2xhc3NfYmluZGluZ3MpOiBTaW1wbGlmeS4KCSogc2VhcmNoLmMgKGdldF90ZW1wbGF0ZV9iYXNlX3JlY3Vyc2l2ZSk6IE1vdmUgdG8gcHQuYy4KCShnZXRfdGVtcGxhdGVfYmFzZSk6IExpa2V3aXNlLgoJKG1hcmtlZHApOiBNYWtlIGl0IGdsb2JhbC4KCShkZnNfd2Fsayk6IExpa2V3aXNlLgoJKGRmc191bm1hcmspOiBMaWtld2lzZS4KCjE5OTktMDItMDcgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIHB0LmMgKG1heWJlX3Byb2Nlc3NfcGFydGlhbF9zcGVjaWFsaXphdGlvbik6IENvbXBsYWluIGFib3V0CglzcGVjaWFsaXphdGlvbiBpbiB3cm9uZyBuYW1lc3BhY2UuCgkqIHRyZWUuYyAoZGVjbF9uYW1lc3BhY2VfY29udGV4dCk6IE5ldyBmbi4KCjE5OTktMDItMDYgIEtyaWFuZyBMZXJkc3V3YW5ha2lqICA8bGVyZHN1d2FAc2NmLWZzLnVzYy5lZHU+CgoJKiBkZWNsMi5jIChhcmdfYXNzb2NfdHlwZSk6IEhhbmRsZSBURU1QTEFURV9URU1QTEFURV9QQVJNLgoJKiBwdC5jIChjb2VyY2VfdGVtcGxhdGVfdGVtcGxhdGVfcGFybXMpOiBIYW5kbGUgbmVzdGVkCgl0ZW1wbGF0ZSB0ZW1wbGF0ZSBwYXJhbWV0ZXJzLgoKU2F0IEZlYiAgNiAxODowODo0MCAxOTk5ICBKZWZmcmV5IEEgTGF3ICAobGF3QGN5Z251cy5jb20pCgoJKiB0eXBlY2syLmM6IFVwZGF0ZSBlbWFpbCBhZGRyZXNzZXMuCgoxOTk5LTAyLTA0ICBLcmlhbmcgTGVyZHN1d2FuYWtpaiAgPGxlcmRzdXdhQHNjZi1mcy51c2MuZWR1PgoKCSogcHQuYyAodW5pZnkpOiBDYWxsIGNvZXJjZV90ZW1wbGF0ZV9wYXJtcyB3aXRoIHRoZSBDT01QTEFJTiBmbGFnCgl0dXJuZWQgb2ZmLgoKMTk5OS0wMi0wNCAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogbGV4LmMgKHJldHJvZml0X2xhbmdfZGVjbCk6IFNwbGl0IG91dC4uLgoJKGJ1aWxkX2xhbmdfZGVjbCk6IEZyb20gaGVyZS4KCSogZGVjbC5jIChwdXNoZGVjbCk6IENhbGwgaXQgZm9yIGZ1bmN0aW9ucyBnZW5lcmF0ZWQgYnkgdGhlIG1pZGRsZQoJZW5kIHRoYXQgZG9uJ3QgaGF2ZSBERUNMX0xBTkdfU1BFQ0lGSUMuCgkqIGNwLXRyZWUuaDogRGVjbGFyZSBpdC4KCgkqIGRlY2wyLmM6IFJlbW92ZSBmbGFnX2luaXRfcHJpb3JpdHkuICBBbHdheXMgZW5hYmxlIGluaXRwIHN0dWZmLgoJKHN0YXJ0X29iamVjdHMsIGZpbmlzaF9vYmplY3RzKTogT25seSB1c2Ugc3BlY2lhbAoJaW5pdF9wcmlvcml0eSBjb2RlIGlmIHRoZSB1c2VyIHNwZWNpZmllZCBhIHByaW9yaXR5LgoJKGRvX2N0b3JzLCBkb19kdG9ycyk6IFVzZSBERUZBVUxUX0lOSVRfUFJJT1JJVFkgZm9yIHRoZSBub24taW5pdHAKCW9iamVjdHMuCgpXZWQgRmViICAzIDIyOjUwOjE3IDE5OTkgIE1hcmMgRXNwaWUgIDxNYXJjLkVzcGllQGxpYWZhLmp1c3NpZXUuZnI+CgoJKiBNYWtlLWxhbmcuaW4gKEdYWF9PQkpTKTogUmVtb3ZlIGNob29zZS10ZW1wLm8sIHBleGVjdXRlLm8gYW5kCglta3N0ZW1wLm8uICBHZXQgdGhlbSBmcm9tIGxpYmliZXJ0eSBub3cuCgkoREVNQU5HTEVSX1BST0cpOiBTaW1sYXJseSwgcmVtb3ZlIGdldG9wdC5vIGdldG9wdDEuby4KClR1ZSBGZWIgIDIgMjI6Mzg6NDggMTk5OSAgVGhlb2RvcmUgUGFwYWRvcG91bG8gIDxUaGVvZG9yZS5QYXBhZG9wb3Vsb0Bzb3BoaWEuaW5yaWEuZnI+CgoJKiBkZWNsMi5jIChsYW5nX2RlY29kZV9vcHRpb24pOiBVc2UgcmVhZF9pbnRlZ3JhbF9wYXJhbWV0ZXIuCgoxOTk5LTAyLTAxICBNYXJrIE1pdGNoZWxsICA8bWFya0BtYXJrbWl0Y2hlbGwuY29tPgoKCSogcHQuYyAodHN1YnN0LCBjYXNlIFRZUEVOQU1FX1RZUEUpOiBDaGVjayBUWVBFX0JFSU5HX0RFRklORUQKCWJlZm9yZSBjYWxsaW5nIGNvbXBsZXRlX3R5cGVfb3JfZWxzZS4KCk1vbiBGZWIgIDEgMDk6NDk6NTIgMTk5OSAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogaW5wdXQuYyAoaW5saW5lKTogRG9uJ3QgZGVmaW5lLCBpdHMgaGFuZGxlZCBieSBzeXN0ZW0uaC4KClN1biBKYW4gMzEgMjA6MzQ6MjkgMTk5OSAgWmFjayBXZWluYmVyZyAgPHphY2tAcmFiaS5jb2x1bWJpYS5lZHU+CgoJKiBkZWNsMi5jOiBEb24ndCBkZWZpbmUgZmxhZ19ub19pZGVudCBoZXJlLiAgRG9uJ3QgcHJvY2VzcwoJLWYobm8tKWlkZW50IGhlcmUuCgkqIGNwLXRyZWUuaDogRG9uJ3QgZGVjbGFyZSBmbGFnX25vX2lkZW50IGhlcmUuCgkqIGxhbmctc3BlY3MuaDogTWFwIC1RbiB0byAtZm5vLWlkZW50LgoKMTk5OS0wMS0yOCAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogY3AtdHJlZS5oIChzdHJ1Y3QgdHJlZV9iaW5kaW5nKTogUmVwbGFjZSBzY29wZSBmaWVsZCB3aXRoIGEgdW5pb24uCgkoQklORElOR19TQ09QRSk6IEFkanVzdC4KCSogZGVjbC5jIChCSU5ESU5HX0xFVkVMKTogQWRqdXN0LgoKMTk5OS0wMS0yNiAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogcHQuYyAoaW5zdGFudGlhdGVfY2xhc3NfdGVtcGxhdGUpOiBTZXQgdXAgdGhlIERFQ0xfSU5JVElBTCBvZgoJbWVtYmVyIGNvbnN0YW50cy4KCgkqIGluaXQuYyAoZXhwYW5kX21lbWJlcl9pbml0KTogUHVsbCBvdXQgVFlQRV9NQUlOX1ZBUklBTlQgaW4KCWEgY3RvciBpbml0aWFsaXplci4KCgkqIHRyZWUuYyAoZXF1YWxfZnVuY3Rpb25zKTogRml4IG5hbWUgaW4gcHJvdG90eXBlLgoKCSogZGVjbC5jIChwdXNoX2xvY2FsX2JpbmRpbmcpOiBBZGQgRkxBR1MgYXJndW1lbnQuCgkocHVzaGRlY2wsIHB1c2hfb3ZlcmxvYWRlZF9kZWNsKTogUGFzcyBpdC4KCSogZGVjbDIuYyAoZG9fbG9jYWxfdXNpbmdfZGVjbCk6IExpa2V3aXNlLgoJKiBjcC10cmVlLmg6IEFkanVzdCBwcm90b3R5cGUuCgkqIGRlY2wuYyAocG9wbGV2ZWwpOiBGaXggbG9naWMuCgoJKiBkZWNsLmMgKHB1c2hfbG9jYWxfYmluZGluZyk6IEFsc28gd3JhcCB1c2VkIGRlY2xzIGluIGEgVFJFRV9MSVNULgoJKHBvcGxldmVsKTogSGFuZGxlIHRoYXQuICBGaXggbG9naWMgZm9yIHJlbW92aW5nIFRSRUVfTElTVHMuCgkoY2F0X25hbWVzcGFjZV9sZXZlbHMpOiBEb24ndCBsb29wIGZvcmV2ZXIuCgoxOTk5LTAxLTI1ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEBjeWdudXMuY29tPgoKCSogdHlwZWNrLmMgKGJ1aWxkX3JlaW50ZXJwcmV0X2Nhc3QpOiBGaXggdHlwbyBpbiBkdXBsaWNhdGVkIHRlc3QuCgoxOTk5LTAxLTI1ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBjbGFzcy5jIChyZXNvbHZlX2FkZHJlc3Nfb2Zfb3ZlcmxvYWRlZF9mdW5jdGlvbik6IE1hcmsgdGhlCgljaG9zZW4gZnVuY3Rpb24gdXNlZC4KCgkqIGNhbGwuYyAoYnVpbGRfY2FsbCk6IE1ha2Ugc3VyZSB0aGF0IGEgZnVuY3Rpb24gY29taW5nIGluIGhhcwoJYmVlbiBtYXJrZWQgdXNlZCBhbHJlYWR5LgoJKiBkZWNsLmMgKGV4cGFuZF9zdGF0aWNfaW5pdCk6IENhbGwgbWFya191c2VkIGluc3RlYWQgb2YKCWFzc2VtYmxlX2V4dGVybmFsLgoJKiBleGNlcHQuYyAoY2FsbF9laF9pbmZvLCBkb19wb3BfZXhjZXB0aW9uLCBleHBhbmRfZW5kX2VoX3NwZWMsCglhbGxvY19laF9vYmplY3QsIGV4cGFuZF90aHJvdyk6IExpa2V3aXNlLgoJKiBpbml0LmMgKGJ1aWxkX2J1aWx0aW5fZGVsZXRlX2NhbGwpOiBMaWtld2lzZS4KCSogcnR0aS5jIChjYWxsX3ZvaWRfZm4sIGdldF90aW5mb19mbiwgYnVpbGRfZHluYW1pY19jYXN0XzEsCglleHBhbmRfc2lfZGVzYywgZXhwYW5kX2NsYXNzX2Rlc2MsIGV4cGFuZF9wdHJfZGVzYywgZXhwYW5kX2F0dHJfZGVzYywKCWV4cGFuZF9nZW5lcmljX2Rlc2MpOiBMaWtld2lzZS4KCjE5OTktMDEtMjUgIE1hcnRpbiB2b24gTPZ3aXMgIDxsb2V3aXNAaW5mb3JtYXRpay5odS1iZXJsaW4uZGU+CgoJKiB0cmVlLmMgKGVxdWFsX2Z1bmN0aW9ucyk6IE5ldyBmdW5jdGlvbi4KCShvdmxfbWVtYmVyKTogQ2FsbCBpdC4KCjE5OTktMDEtMjQgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIGN2dC5jIChjcF9jb252ZXJ0X3RvX3BvaW50ZXIpOiBGaXggY29udmVyc2lvbiBvZiAwIHRvIHBtZi4KCjE5OTktMDEtMjUgIE1hcnRpbiB2b24gTG9ld2lzICA8bG9ld2lzQGluZm9ybWF0aWsuaHUtYmVybGluLmRlPgoKCSogZGVjbC5jIChkZWNsc19tYXRjaCk6IFJldHVybiAxIGlmIG9sZCBhbmQgbmV3IGFyZSBpZGVudGljYWwuCgkocHVzaF9vdmVybG9hZGVkX2RlY2wpOiBTZXQgT1ZMX1VTRUQgd2hlbiBQVVNIX1VTSU5HLgoKMTk5OS0wMS0yNCAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogZGVjbC5jIChzdGFydF9mdW5jdGlvbik6IE1ha2UgbWVtYmVyIGZ1bmN0aW9ucyBvbmVfb25seSBvbiB3aW5kb3dzLgoJKiBkZWNsMi5jIChpbXBvcnRfZXhwb3J0X2RlY2wpOiBMaWtld2lzZS4KCgkqIGRlY2wuYyAoZ3Jva2RlY2xhcmF0b3IpOiBEb24ndCBjb21wbGFpbiBhYm91dCBpbXBsaWNpdCBpbnQgaW4KCWEgc3lzdGVtIGhlYWRlci4gIENoYW5nZSBzYW1lLW5hbWUgZmllbGQgY2hlY2sgdG8gbm90IGNvbXBsYWluIGluCglhIHN5c3RlbSBoZWFkZXIgaW5zdGVhZCBvZiB3aXRoaW4gZXh0ZXJuICJDIi4KCjE5OTktMDEtMjEgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQG1hcmttaXRjaGVsbC5jb20+CgoJKiBjcC10cmVlLmggKFBVU0hfR0xPQkFMKTogTmV3IG1hY3JvLgoJKFBVU0hfTE9DQUwpOiBMaWtld2lzZS4KCShQVVNIX1VTSU5HKTogTGlrZXdpc2UuCgkobmFtZXNwYWNlX2JpbmRpbmdzX3ApOiBEZWNsYXJlLgoJKHB1c2hfb3ZlcmxvYWRlZF9kZWNsKTogTGlrZXdpc2UuCgkqIGRlY2wuYyAocHVzaF9vdmVybG9hZGVkX2RlY2wpOiBEb24ndCBtYWtlIGl0IHN0YXRpYy4gIENoZWNrIGZvcgoJaWxsZWdhbCBkZWNsYXJhdGlvbnMgYWZ0ZXIgdXNpbmcgZGVjbGFyYXRpb25zIGhlcmUuCgkobmFtZXNwYWNlX2JpbmRpbmdzX3ApOiBMaWtld2lzZS4KCShkdXBsaWNhdGVfZGVjbHMpOiBEb24ndCBjb25zaWRlciBkZWNsYXJhdGlvbnMgZnJvbSBkaWZmZXJlbnQKCW5hbWVzcGFjZXMgdG8gYmUgdGhlIHNhbWUuCgkocHVzaGRlY2wpOiBVc2Ugc3ltYm9saWMgUFVTSF8gY29uc3RhbnRzIGluIGNhbGxzIHRvCglwdXNoX292ZXJsb2FkZWRfZGVjbC4KCShwdXNoX292ZXJsb2FkZWRfZGVjbF8xKTogTGlrZXdpc2UuCgkqIGRlY2wyLmMgKHZhbGlkYXRlX25vbm1lbWJlcl91c2luZ19kZWNsKTogVHdlYWsgYHN0ZCcgaGFuZGxpbmcuCgkoZG9fbm9ubWVtYmVyX3VzaW5nX2RlY2wpOiBDaGVjayBmb3IgaWxsZWdhbCB1c2luZyBkZWNsYXJhdGlvbnMKCWFmdGVyIG9yZGluYXJ5IGRlY2xhcmF0aW9ucyBoZXJlLgoJKGRvX2xvY2FsX3VzaW5nX2RlY2wpOiBDYWxsIHB1c2hkZWNsIHRvIGluc2VydCBkZWNsYXJhdGlvbnMuCgoxOTk5LTAxLTIxICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBkZWNsLmMgKGdyb2tkZWNsYXJhdG9yKTogRml4IGxhbmdfYyAtPiBsYW5nX25hbWVfYyB0eXBvLgoKMTk5OS0wMS0yMSAgTWFyayBNaXRjaGVsbCAgPG1hcmtAbWFya21pdGNoZWxsLmNvbT4KCgkqIHRyZWUuYyAoYnVpbGRfY3BsdXNfYXJyYXlfdHlwZV8xKTogRG9uJ3QgY2FsbCBidWlsZF9hcnJheV90eXBlCglmb3IgdHlwZXMgaW52b2x2aW5nIHRlbXBsYXRlIHBhcmFtZXRlcnMuCgoJKiBjcC10cmVlLmggKFBBUk1fREVDTF9FWFBSKTogRGVsZXRlLgoJKGNvbnZlcnRfZGVmYXVsdF9hcmcpOiBDaGFuZ2UgcHJvdG90eXBlLgoJKGNoZWNrX2RlZmF1bHRfYXJndW1lbnQpOiBEZWNsYXJlLgoJKHNlYXJjaF90cmVlKTogTGlrZXdpc2UuCgkqIGNhbGwuYyAoY29udmVydF9kZWZhdWx0X2FyZyk6IFRha2UgdGhlIGZ1bmN0aW9uIHRvIHdoaWNoIHRoZQoJZGVmYXVsdCBhcmd1bWVudCBiZWxvbmdzIGFzIGEgcGFyYW1ldGVyLCBhbmQgZG8gYW55IG5lY2Vzc2FyeQoJaW5zdGFudGlhdGlvbiBoZXJlLCBpbnN0ZWFkIG9mIC4uLgoJKGJ1aWxkX292ZXJfY2FsbCk6IEhlcmUuCgkqIGRlY2wuYyAobG9jYWxfdmFyaWFibGVfcCk6IE5ldyBmdW5jdGlvbi4KCShjaGVja19kZWZhdWx0X2FyZ3VtZW50KTogTGlrZXdpc2UsIHNwbGl0IG91dCBhbmQgdGlkaWVkIGZyb20gLi4uCgkoZ3Jva3Bhcm1zKTogSGVyZS4KCSogZXJyb3IuYyAoZHVtcF9leHByKTogRG9uJ3Qgc2V0IFBBUk1fREVDTF9FWFBSLgoJKiBwdC5jICh0c3Vic3RfY2FsbF9kZWNsYXJhdG9yX3Bhcm1zKTogTmV3IGZ1bmN0aW9uLgoJKGZvcl9lYWNoX3RlbXBsYXRlX3Bhcm0pOiBIYW5kbGUgQVJSQVlfUkVGcy4gIERvIHRoZSBvYnZpb3VzIHRoaW5nCgl3aXRoIENBTExfRVhQUnMsIHJhdGhlciB0aGFuIHRyeWluZyB0byBiZSBjbGV2ZXIuCgkodHN1YnN0KTogVXNlIHRzdWJzdF9jYWxsX2RlY2xhcmF0b3JfcGFybXMuCgkqIHRyZWUuYyAoc2VhcmNoX3RyZWUpOiBEb24ndCBtYWtlIGl0IHN0YXRpYy4KCSogdHlwZWNrLmMgKGNvbnZlcnRfYXJndW1lbnRzKTogVXNlIG5ldyBpbnRlcmZhY2UgdG8KCWNvbnZlcnRfZGVmYXVsdF9hcmcuCgoxOTk5LTAxLTIwICBNYXJrIE1pdGNoZWxsICA8bWFya0BtYXJrbWl0Y2hlbGwuY29tPgoKCSogZXJyb3IuYyAoZHVtcF9mdW5jdGlvbl9kZWNsKTogRG9uJ3QgcHJpbnQgdGhlIGFyZ3VtZW50IHR5cGVzIGZvcgoJYSBmdW5jdGlvbiB3aGVuIHRoZSB2ZXJib3NpdHkgbGV2ZWwgaXMgbmVnYXRpdmUuCgoJKiBjYWxsLmMgKGJ1aWxkX292ZXJfY2FsbCk6IENoZWNrIGZvcm1hdCBhdHRyaWJ1dGVzIGF0IGNhbGwtdGltZS4KCgkqIHB0LmMgKHRzdWJzdF9jb3B5KTogRml4IGNvbW1lbnQuCgkodW5pZnkpOiBEb24ndCBhbGxvdyB1bmlmaWNhdGlvbiB3aXRoIHZhcmlhYmxlLXNpemVkIGFycmF5cy4KCgkqIHNlbWFudGljcy5jIChmaW5pc2hfc3RtdF9leHByKTogV2hlbiBwcm9jZXNzaW5nIGEgdGVtcGxhdGUgbWFrZQoJdGhlIEJJTkRfRVhQUiBsb25nLWxpdmVkLgoKMTk5OS0wMS0xOSAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogZGVjbDIuYyAoZmluaXNoX3Z0YWJsZV92YXJkZWNsKTogTWFrZSB2dGFibGVzIGNvbWRhdCBoZXJlLgoJKGltcG9ydF9leHBvcnRfdnRhYmxlKTogTm90IGhlcmUuCgoxOTk5LTAxLTE4ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiB0eXBlY2suYyAoYnVpbGRfY29tcG9uZW50X3JlZik6IFdyYXAgYW4gT1ZFUkxPQUQgYXJvdW5kIGEgdW5pcXVlCglub24tc3RhdGljIG1lbWJlciBmdW5jdGlvbi4KCjE5OTktMDEtMTggIE5hdGhhbiBTaWR3ZWxsICA8bmF0aGFuQGFjbS5vcmc+CgoJKiBjbGFzcy5jIChpbnN0YW50aWF0ZV90eXBlKTogT25seSBkaWFnbm9zZSBpbGxlZ2FsIGFkZHJlc3Mgb2YgbWVtYmVyCglmdW5jdGlvbiBpZiBjb21wbGFpbmluZy4KCgkqIGRlY2wuYyAobG9va3VwX25hbWVfcmVhbCk6IFJlbW92ZSBkdXBsaWNhdGUgY29kZS4KCjE5OTktMDEtMTggIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIHRyZWUuYyAoY29weV90ZW1wbGF0ZV90ZW1wbGF0ZV9wYXJtKTogVXNlIHBlcm1hbmVudF9vYnN0YWNrLgoKMTk5OS0wMS0xOCAgS3JpYW5nIExlcmRzdXdhbmFraWogIDxsZXJkc3V3YUBzY2YtZnMudXNjLmVkdT4KCgkqIHB0LmMgKHVuaWZ5KTogUmVtb3ZlIHJlc3RyaWN0aW9ucyBvbiBkZWR1Y3Rpb24gb2YgYXJndW1lbnQKCW9mIHRlbXBsYXRlIHRlbXBsYXRlIHBhcmFtZXRlcnMuCgoxOTk5LTAxLTE4ICBOYXRoYW4gU2lkd2VsbCAgPG5hdGhhbkBhY20ub3JnPgoKCSogcnR0aS5jIChidWlsZF9keW5hbWljX2Nhc3RfMSk6IFJlc29sdmUgT0ZGU0VUX1JFRiBleHBycy4KCgkqIGNsYXNzLmMgKHJlc29sdmVfYWRkcmVzc19vZl9vdmVybG9hZGVkX2Z1bmN0aW9uKTogU2hvdyBsaXN0IG9mCglhbGwgY2FuZGlkYXRlcywgd2hlbiBub25lIG9mIHRoZW0gbWF0Y2guCgoxOTk5LTAxLTE4ICBDaGlwIFNhbHplbmJlcmcgIDxjaGlwQHBlcmxzdXBwb3J0LmNvbT4KCgkqIHR5cGVjay5jIChjb21wX3B0cl90dHlwZXNfcmVpbnRlcnByZXQpOiBQZXIgQU5TSSwgdGlnaHRlbiB1cAoJZGVmaW5pdGlvbiBvZiAnY2FzdGluZyBhd2F5IGNvbnN0JyBpbiByZWludGVycHJldF9jYXN0PD4uCgoxOTk5LTAxLTE4ICBHcmFoYW0gIDxncmFoYW1zQHJjcC5jby51az4KCgkqIGN2dC5jOiBBZGQgaW5jbHVkZSBmb3IgZGVjbC5oLCByZW1vdmUgZXh0ZXJuIGZvcgoJc3RhdGljX2FnZ3JlZ2F0ZXMgd2hpY2ggaXMgbm93IHByb3ZpZGVkIGJ5IGRlY2wuaC4KCgkqIE1ha2VmaWxlLmluIChjdnQubyk6IEFkZCBkZXBlbmRlbmN5IGZvciBkZWNsLmggYW5kIG1pc3NpbmcKCWRlcGVuZGVuY2llcyBmb3IgY29udmVydC5oIGFuZCBmbGFncy5oLgoKMTk5OS0wMS0xOCAgTmF0aGFuIFNpZHdlbGwgIDxuYXRoYW5AYWNtLm9yZz4KCgkqIGRlY2wyLmMgKGRvX2R0b3JzKTogU2V0IGN1cnJlbnQgbG9jYXRpb24gdG8gdGhhdCBvZiB0aGUKCWRlY2wsIGZvciBzZW5zaWJsZSBkaWFnbm9zdGljcyBhbmQgZGVidWdnaW5nLgoJKGNoZWNrX2NsYXNzZm4pOiBJc3N1ZSBgaW5jb21wbGV0ZSB0eXBlJyBlcnJvciwgaWYKCWNsYXNzIGlzIG5vdCBkZWZpbmVkLgoKMTk5OS0wMS0xNiAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogY3AtdHJlZS5oOiBBZGQgcHJvdG90eXBlIGZvciBib3VuZF9wbWZfcC4KCjE5OTktMDEtMTYgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCSAgICBNYW5mcmVkIEhvbGxzdGVpbiA8bWFuZnJlZEBzLWRpcmVrdG5ldC5kZT4KCgkqIGRlY2wuYyAoZ3Jva2RlY2xhcmF0b3IpOiBEb24ndCBtYWtlICdtYWluKCl7fScgYW4gZXJyb3Igd2l0aCBvbmx5CgktV3JldHVybi10eXBlLgoKMTk5OS0wMS0xNiAgTmF0aGFuIFNpZHdlbGwgIDxuYXRoYW5AYWNtLm9yZz4KCgkqIGNwLXRyZWUuaCAoc3RydWN0IGxhbmdfdHlwZSk6IEFkZGVkIGhhc19tdXRhYmxlIGZsYWcuCgkoQ0xBU1NUWVBFX0hBU19NVVRBQkxFKTogTmV3IG1hY3JvIHRvIGFjY2VzcyBpdC4KCShUWVBFX0hBU19NVVRBQkxFX1ApOiBOZXcgbWFjcm8gdG8gcmVhZCBpdC4KCShjcF9oYXNfbXV0YWJsZV9wKTogUHJvdG90eXBlIGZvciBuZXcgZnVuY3Rpb24uCgkqIGNsYXNzLmMgKGZpbmlzaF9zdHJ1Y3RfMSk6IFNldCBoYXNfbXV0YWJsZSBmcm9tIG1lbWJlcnMuCgkqIGRlY2wuYyAoY3BfZmluaXNoX2RlY2wpOiBDbGVhciBkZWNsJ3MgVFJFRV9SRUFET05MWSBmbGFnLCBpZgoJaXQgY29udGFpbnMgYSBtdXRhYmxlLgoJKiB0eXBlY2suYyAoY3BfaGFzX211dGFibGVfcCk6IE5ldyBmdW5jdGlvbi4KCjE5OTktMDEtMTUgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQG1hcmttaXRjaGVsbC5jb20+CgoJKiBwdC5jIChwcm9jZXNzX3RlbXBsYXRlX3Bhcm0pOiBJZ25vcmUgdG9wLWxldmVsIHF1YWxpZmllcnMgb24KCW5vbi10eXBlIHBhcmFtZXRlcnMuCgoJKiBkZWNsLmMgKHN0YXJ0X2Z1bmN0aW9uKTogVXNlIGN1cnJlbnRfZnVuY3Rpb25fcGFybXMgaW4gdGhlIGNhbGwKCXRvIHJlcXVpcmVfY29tcGxldGVfdHlwZV9mb3JfcGFybXMsIG5vdCB0aGUgcHJvYmFibHkgZW1wdHkKCURFQ0xfQVJHVU1FTlRTLgoKMTk5OS0wMS0xNCAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogc2VtYW50aWNzLmMgKGZpbmlzaF9hc21fc3RtdCk6IERvbid0IHdhcm4gYWJvdXQgcmVkdW5kYW50IHZvbGF0aWxlLgoKCSogZGVjbDIuYyAoaW1wb3J0X2V4cG9ydF9jbGFzcyk6IE1VTFRJUExFX1NZTUJPTF9TUEFDRVMgb25seSBtZWFucwoJdGhhdCB3ZSBkb24ndCBzdXBwcmVzcyB0aGUgb3RoZXIgY29waWVzLgoJKiBsZXguYyAoaGFuZGxlX2NwX3ByYWdtYSk6IExpa2V3aXNlLgoKMTk5OS0wMS0xMyAgTWFyayBNaXRjaGVsbCAgPG1hcmtAbWFya21pdGNoZWxsLmNvbT4KCgkqIGRlY2wuYyAoZ3Jva2RlY2xhcmF0b3IpOiBVbmRvIDE5OTgtMTItMTQgY2hhbmdlLgoJKiB0cmVlLmMgKGJ1aWxkX2NwbHVzX2FycmF5X3R5cGVfMSk6IExpa2V3aXNlLgoJKiBwdC5jIChpbnN0YW50aWF0ZV9jbGFzc190ZW1wbGF0ZSk6IFJlbW92ZSBtaXNsZWFkaW5nIGNvbW1lbnQuCgkodHN1YnN0X2FnZ3JfdHlwZSk6IFN1YnN0aXR1dGUgaWYgdGhlcmUgYXJlIHRlbXBsYXRlIHBhcmFtZXRlcnMsCglyZWdhcmRsZXNzIG9mIHdoZXRoZXIgb3Igbm90IHRoZXkgdXNlIHRlbXBsYXRlIGFyZ3VtZW50cy4KCSh1bmlmeSk6IExpa2V3aXNlLCBidXQgZm9yIHVuaWZpY2F0aW9uLgoKMTk5OS0wMS0xMiAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAY3lnbnVzLmNvbT4KCgkqIGNwLXRyZWUuaCAoZmxhZ19wZXJtaXNzaXZlKTogRGVjbGFyZSBleHRlcm4uCgoxOTk5LTAxLTA2ICBNYXJrIE1pdGNoZWxsICA8bWFya0BtYXJrbWl0Y2hlbGwuY29tPgoKCSogY3AtdHJlZS5oIChJREVOVElGSUVSX1RZUEVOQU1FX1ApOiBVc2UgT1BFUkFUT1JfVFlQRU5BTUVfRk9STUFUCgloZXJlLgoJKGxhbmdfdHlwZSk6IEFkZCBpc19wYXJ0aWFsX2luc3RhbnRpYXRpb24uICBEZWNyZWFzZSB3aWR0aCBvZgoJZHVtbXkuCgkoUEFSVElBTF9JTlNUQU5USUFUSU9OX1ApOiBOZXcgbWFjcm8uCgkoT1BFUkFUT1JfVFlQRU5BTUVfUCk6IFJlbW92ZS4KCSogZGVjbC5jICh1bmFyeV9vcF9wKTogVXNlIElERU5USUZJRVJfVFlQRU5BTUVfUCwgbm90CglPUEVSQVRPUl9UWVBFTkFNRV9QLgoJKGdyb2tfb3BfcHJvcGVydGllcyk6IExpa2V3aXNlLgoJKiBmcmllbmQuYyAoZG9fZnJpZW5kKTogSGFuZGxlIGZyaWVuZHMgdGhhdCBhcmUgbWVtYmVyIGZ1bmN0aW9ucwoJY29ycmVjdGx5LgoJKiBsZXguYyAoaW5pdF9wYXJzZSk6IFVzZSBPUEVSQVRPUl9UWVBFTkFNRV9GT1JNQVQuCgkqIHB0LmMgKGluc3RhbnRpYXRlX2NsYXNzX3RlbXBsYXRlKTogUmV3b3JrIGZvciBjbGFyaXR5LiAgQXZvaWQKCWxlYXZpbmcgVFlQRV9CRUlOR19ERUZJTkVEIHNldCBpbiBvYnNjdXJlIGNhc2VzLiAgRG9uJ3QgZG8KCWFueSBtb3JlIHBhcnRpYWwgaW5zdGFudGlhdGlvbiB0aGFuIGlzIGFic29sdXRlbHkgbmVjZXNzYXJ5IGZvcgoJaW1wbGljaXQgdHlwZW5hbWUuICBTZXQgUEFSVElBTF9JTlNUQU5USUFUSU9OX1AuCgkodHN1YnN0X2RlY2wpOiBVc2UgSURFTlRJRklFUl9UWVBFTkFNRV9QLgoJKiBzZW1hbnRpY3MuYyAoYmVnaW5fY2xhc3NfZGVmaW5pdGlvbik6IEhhbmRsZSBwYXJ0aWFsCglzcGVjaWFsaXphdGlvbnMgb2YgYSB0eXBlIHRoYXQgd2FzIHByZXZpb3VzbHkgcGFydGlhbGx5CglpbnN0YW50aWF0ZWQuCgpXZWQgSmFuICA2IDAzOjE4OjUzIDE5OTkgIE1hcmsgRWxicmVjaHQgIDxzbm93YmFsbDNAdXNhLm5ldC4KCgkqIGcrK3NwZWMuYyAoTElCU1REQ1hYKTogUHJvdmlkZSBkZWZhdWx0IGRlZmluaXRpb24uCgkobGFuZ19zcGVjaWZpY19kcml2ZXIpOiBVc2UgTElCU1REQ1hYIGluc3RlYWQgb2YgIi1sc3RkYysrIi4KClR1ZSBKYW4gIDUgMjI6MTE6MjUgMTk5OSAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogTWFrZS1sYW5nLmluIChnKysubyk6IERlcGVuZCBvbiBwcmVmaXguaC4KCjE5OTktMDEtMDQgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIHRyZWUuYyAoYm91bmRfcG1mX3ApOiBOZXcgZm4uCgkqIHR5cGVjay5jIChidWlsZF9jX2Nhc3QpOiBVc2UgaXQuCgoJKiBkZWNsLmMgKGdyb2tfb3BfcHJvcGVydGllcyk6IFVzZSBzYW1lX3R5cGVfcC4KClR1ZSBEZWMgMjIgMTU6MDk6MjUgMTk5OCAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogTWFrZWZpbGUuaW4gKGN2dC5vKTogRGVwZW5kIG9uIHRvcGxldi5oLgoKCSogY3AtdHJlZS5oIChjaGVja190ZW1wbGF0ZV9zaGFkb3csIHBvZF90eXBlX3ApOiBBZGQgcHJvdG90eXBlcy4KCgkqIGN2dC5jOiBJbmNsdWRlIHRvcGxldi5oLgoKCSogZXhjZXB0LmMgKGdldF9laF9jYXVnaHQsIGdldF9laF9oYW5kbGVycyk6IEhpZGUgcHJvdG90eXBlcyBhbmQKCWRlZmluaXRpb25zLgoKCSogaW5pdC5jIChleHBhbmRfdmVjX2luaXQpOiBJbml0aWFsaXplIHZhcmlhYmxlIGBpdHlwZScuCgoJKiBsZXguYyAoeXllcnJvcik6IENhc3QgdGhlIGFyZ3VtZW50IHBhc3NlZCB0byBhIGN0eXBlIGZ1bmN0aW9uIHRvCglhbiB1bnNpZ25lZCBjaGFyLgoKCSogbWV0aG9kLmMgKGJ1aWxkX21hbmdsZWRfQzl4X25hbWUpOiBXcmFwIHByb3RvdHlwZSBhbmQgZGVmaW5pdGlvbgoJaW4gIkhPU1RfQklUU19QRVJfV0lERV9JTlQgPj0gNjQiLgoKCSogdHlwZWNrLmMgKGJ1aWxkX2JpbmFyeV9vcCk6IE1hcmsgcGFyYW1ldGVyIGBjb252ZXJ0X3AnIHdpdGgKCUFUVFJJQlVURV9VTlVTRUQuCgoxOTk4LTEyLTIyICBNYXJrIE1pdGNoZWxsICA8bWFya0BtYXJrbWl0Y2hlbGwuY29tPgoKCSogY3AtdHJlZS5oIChUWVBFX1JBSVNFU19FWENFUFRJT05TKTogSW1wcm92ZSBkb2N1bWVudGF0aW9uLgoJKiB0cmVlLmMgKGJ1aWxkX2V4Y2VwdGlvbl92YXJpYW50KTogRG9uJ3QgY3Jhc2ggb24gZW1wdHkgdGhyb3cKCXNwZWNzLgoKMTk5OC0xMi0xOCAgREogRGVsb3JpZSAgPGRqQGN5Z251cy5jb20+CgoJKiBjdnQuYyAoY29udmVydF90b19yZWZlcmVuY2UpOiBDaGVjayBmb3IgYm90aCBlcnJvcl9tYXJrX25vZGUKCWFuZCBOVUxMX05PREUgYWZ0ZXIgY2FsbCB0byBjb252ZXJ0X2Zvcl9pbml0aWFsaXphdGlvbi4KCjE5OTgtMTItMTcgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIGVycm9yLmMgKGludGVyZXN0aW5nX3Njb3BlX3ApOiBOZXcgZm4uCgkoZHVtcF9zaW1wbGVfZGVjbCk6IFVzZSBpdC4KCShkdW1wX2V4cHIsIGNhc2UgQ09OU1RSVUNUT1IpOiBGb3JjZSBhICYgZm9yIGEgUE1GLgoJKGR1bXBfZXhwciwgY2FzZSBPRkZTRVRfUkVGKTogUHJpbnQgLT4qIGlmIGFwcHJvcHJpYXRlLgoKMTk5OC0xMi0xNiAgTWFyayBNaXRjaGVsbCAgPG1hcmtAbWFya21pdGNoZWxsLmNvbT4KCgkqIGNsYXNzLmMgKHJlc29sdmVfYWRkcmVzc19vZl9vdmVybG9hZGVkX2Z1bmN0aW9uKTogRG8gY29udmVyc2lvbgoJdG8gY29ycmVjdCB0eXBlIGhlcmUsIHJhdGhlciB0aGFuIC4uLgoJKGluc3RhbnRpYXRlX3R5cGUpOiBIZXJlLgoKCSogY3AtdHJlZS5oIChERUNMX1RFTVBMQVRFX1BBUk1fUCk6IE5ldyBtYWNyby4KCShERUNMX1RFTVBMQVRFX1RFTVBMQVRFX1BBUk1fUCk6IFVzZSBpdC4KCShkZWNsX3RlbXBsYXRlX3Bhcm1fcCk6IFJlbW92ZS4KCSogZGVjbC5jIChwdXNoZGVjbCk6IERvbid0IHNldCBERUNMX0NPTlRFWFQgZm9yIGEgdGVtcGxhdGUKCXBhcmFtZXRlci4KCSogbGV4LmMgKGRvX2lkZW50aWZpZXIpOiBVc2UgREVDTF9URU1QTEFURV9QQVJNX1AuCgkqIHB0LmMgKHB1c2hfaW5saW5lX3RlbXBsYXRlX3Bhcm1zX3JlY3Vyc2l2ZSk6IFNldCBpdC4KCShkZWNsX3RlbXBsYXRlX3Bhcm1fcCk6IFJlbW92ZS4KCShjaGVja190ZW1wbGF0ZV9zaGFkb3cpOiBVc2UgREVDTF9URU1QTEFURV9QQVJNX1AuCgkocHJvY2Vzc190ZW1wbGF0ZV9wYXJtKTogU2V0IGl0LgoKV2VkIERlYyAxNiAxNjozMzo1OCAxOTk4ICBEYXZlIEJyb2xsZXkgIDxicm9sbGV5QGN5Z251cy5jb20+CgoJKiBsYW5nLXNwZWNzLmggKGRlZmF1bHRfY29tcGlsZXJzKTogUGFzcyAtTUQsIC1NTUQgYW5kIC1NRyB0byBjYzFwbHVzCglpZiBjb25maWd1cmVkIHdpdGggY3BwbGliLgoKMTk5OC0xMi0xNSAgTWFyayBNaXRjaGVsbCAgPG1hcmtAbWFya21pdGNoZWxsLmNvbT4KCgkqIGRlY2wuYyAocG9wbGV2ZWwpOiBNYWtlIHN1cmUgbnNfYmluZGluZyBpcyBpbml0aWFsaXplZC4KCgkqIGRlY2wuYyAoZmluaXNoX2Z1bmN0aW9uKTogVW5kbyBpbmFkdmVydGVudCBjaGFuZ2UgaW4gcHJldmlvdXMKCXBhdGNoLgoKMTk5OC0xMi0xNCAgTWFyayBNaXRjaGVsbCAgPG1hcmtAbWFya21pdGNoZWxsLmNvbT4KCgkqIGNsYXNzLmMgKHB1c2hjbGFzcyk6IFR3ZWFrIGhhbmRsaW5nIG9mIGNsYXNzLWxldmVsIGJpbmRpbmdzLgoJKHJlc29sdmVfYWRkcmVzc19vZl9vdmVybG9hZGVkX2Z1bmN0aW9uKTogVXBkYXRlIHBvaW50ZXItdG8tbWVtYmVyCgloYW5kbGluZy4KCShpbnN0YW50aWF0ZV90eXBlKTogTGlrZXdpc2UuCgkqIGN2dC5jIChjcF9jb252ZXJ0X3RvX3BvaW50ZXIpOiBMaWtld2lzZS4KCSogZGVjbC5jIChwb3BfYmluZGluZyk6IFRha2UgdGhlIERFQ0wgdG8gcG9wLCBub3QganVzdCB0aGUgbmFtZS4KCURlYWwgd2l0aCBgc3RydWN0IHN0YXQnIGhhY2suCgkoYmluZGluZ19sZXZlbCk6IEFkZCB0byBkb2N1bWVudGF0aW9uLgoJKHB1c2hfYmluZGluZyk6IENsZWFyIEJJTkRJTkdfVFlQRS4KCShhZGRfYmluZGluZyk6IE5ldyBmdW5jdGlvbi4KCShwdXNoX2xvY2FsX2JpbmRpbmcpOiBVc2UgaXQuCgkocHVzaF9jbGFzc19iaW5kaW5nKTogTGlrZXdpc2UuCgkocG9wbGV2ZWwpOiBBZGp1c3QgY2FsbHMgdG8gcG9wX2JpbmRpbmcuCgkocG9wbGV2ZWxfY2xhc3MpOiBMaWtld2lzZS4KCShwdXNoZGVjbCk6IEFkanVzdCBoYW5kbGluZyBvZiBUWVBFX0RFQ0xzOyBhZGQgYmluZGluZ3MgZm9yIGhpZGRlbgoJZGVjbGFyYXRpb25zIHRvIGN1cnJlbnQgYmluZGluZyBsZXZlbC4KCShwdXNoX2NsYXNzX2xldmVsX2JpbmRpbmcpOiBMaWtld2lzZS4KCShwdXNoX292ZXJsb2FkZWRfZGVjbCk6IEFkanVzdCBoYW5kbGluZyBvZiBPVkVSTE9BRHMgaW4gbG9jYWwKCWJpbmRpbmdzLgoJKGxvb2t1cF9uYW1lc3BhY2VfbmFtZSk6IERvbid0IGNyYXNoIHdoZW4gY29uZnJvbnRlZCB3aXRoIGEKCVRFTVBMQVRFX0RFQ0wuCgkobG9va3VwX25hbWVfcmVhbCk6IERvIGBzdHJ1Y3Qgc3RhdCcgaGFjayBpbiBsb2NhbCBiaW5kaW5nCgljb250ZXh0cy4KCShidWlsZF9wdHJtZW1mdW5jX3R5cGUpOiBBZGp1c3QgZG9jdW1lbnRhdGlvbi4KCShncm9rZGVjbGFyYXRvcik6IERvbid0IGF2b2lkIGJ1aWxkaW5nIHJlYWwgYXJyYXkgdHlwZXMgd2hlbgoJcHJvY2Vzc2luZyB0ZW1wbGF0ZXMgdW5sZXNzIHJlYWxseSBuZWNlc3NhcnkuCgkoZmluaXNoX21ldGhvZCk6IEFkanVzdCBjYWxscyB0byBwb3BfYmluZGluZy4KCSogZGVjbDIuYyAocmVwYXJzZV9hYnNkY2xfYXNfZXhwcik6IFJlY3Vyc2l2ZWx5IGNhbGwgb3Vyc2VsdmVzLAoJbm90IHJlcGFyc2VfZGVjbF9hc19leHByLgoJKGJ1aWxkX2V4cHJfZnJvbV90cmVlKTogRGVhbCB3aXRoIGEgdGVtcGxhdGUtaWQgYXMgdGhlIGZ1bmN0aW9uIHRvCgljYWxsIGluIGEgTUVUSE9EX0NBTExfRVhQUi4KCSogcHQuYyAoY29udmVydF9ub250eXBlX2FyZ3VtZW50KTogVHdlYWsgcG9pbnRlci10by1tZW1iZXIgaGFuZGxpbmcuCgkobWF5YmVfYWRqdXN0X3R5cGVzX0Zvcl9kZWR1Y3Rpb24pOiBEb24ndCBkbyBwZWN1bGlhciB0aGluZ3Mgd2l0aAoJTUVUSE9EX1RZUEVzIGhlcmUuCgkocmVzb2x2ZV9vdmVybG9hZGVkX3VuaWZpY2F0aW9uKTogSGFuZGxlIENPTVBPTkVOVF9SRUZzLiAgQnVpbGQKCXBvaW50ZXItdG8tbWVtYmVyIHR5cGVzIHdoZXJlIG5lY2Vzc2FyeS4KCSogdHJlZS5jIChidWlsZF9jcGx1c19hcnJheV90eXBlXzEpOiBEb24ndCBhdm9pZCBidWlsZGluZyByZWFsCglhcnJheSB0eXBlcyB3aGVuIHByb2Nlc3NpbmcgdGVtcGxhdGVzIHVubGVzcyByZWFsbHkgbmVjZXNzYXJ5LgoJKGJ1aWxkX2V4Y2VwdGlvbl92YXJpYW50KTogQ29tcGFyZSB0aGUgZXhjZXB0aW9uIGxpc3RzIGNvcnJlY3RseS4KCjE5OTgtMTItMTMgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQG1hcmttaXRjaGVsbC5jb20+CgoJKiBjcC10cmVlLmRlZiAoQ1BMVVNfQklORElORyk6IFVwZGF0ZSBkb2N1bWVudGF0aW9uLgoJKiBjcC10cmVlLmggKExPQ0FMX0JJTkRJTkdfUCk6IE5ldyBtYWNyby4KCShsYW5nX2lkZW50aWZpZXIpOiBSZW5hbWUgbG9jYWxfdmFsdWUgdG8gYmluZGluZ3MuCgkodHJlZV9iaW5kaW5nKTogTWFrZSBgc2NvcGUnIG9mIHR5cGUgYHZvaWQqJywgbm90IGB0cmVlJy4KCShCSU5ESU5HX1NDT1BFKTogVXBkYXRlIGRvY3VtZW50YXRpb24uCgkoSURFTlRJRklFUl9MT0NBTF9WQUxVRSk6IFJlbW92ZS4KCShJREVOVElGSUVSX0NMQVNTX1ZBTFVFKTogRG9jdW1lbnQuCgkoSURFTlRJRklFUl9CSU5ESU5HKTogTmV3IG1hY3JvLgoJKElERU5USUZJRVJfVkFMVUUpOiBMaWtld2lzZS4KCShUSU1FX0lERU5USUZJRVJfVElNRSk6IExpa2V3aXNlLgoJKFRJTUVfSURFTlRJRklFUl9GSUxFSU5GTyk6IExpa2V3aXNlLgoJKElNUExJQ0lUX1RZUEVOQU1FX1ApOiBMaWtld2lzZS4KCShzZXRfaWRlbnRpZmllcl9sb2NhbF92YWx1ZSk6IFJlbW92ZS4KCShwdXNoX2xvY2FsX2JpbmRpbmcpOiBOZXcgZnVuY3Rpb24uCgkocHVzaF9jbGFzc19iaW5kaW5nKTogTGlrZXdpc2UuCgkqIGNsYXNzLmMgKHB1c2hjbGFzcyk6IFVwZGF0ZSBjb21tZW50czsgdXNlIHB1c2hfY2xhc3NfYmluZGluZy4KCSogZGVjbC5jIChzZXRfaWRlbnRpZmllcl9sb2NhbF92YWx1ZV93aXRoX3Njb3BlKTogUmVtb3ZlLgoJKHNldF9pZGVudGlmaWVyX2xvY2FsX3ZhbHVlKTogTGlrZXdpc2UuCgkocHVzaF9iaW5kaW5nKTogTmV3IGZ1bmN0aW9uLgoJKHBvcF9iaW5kaW5nKTogTGlrZXdpc2UuCgkoYmluZGluZ19sZXZlbCk6IFVwZGF0ZSBkb2N1bWVudGF0aW9uLiAgUmVtb3ZlIHNoYWRvd2VkLgoJKEJJTkRJTkdfTEVWRUwpOiBOZXcgbWFjcm8uCgkoZnJlZV9iaW5kaW5nX25vZGVzKTogTmV3IHZhcmlhYmxlLgoJKHBvcGxldmVsKTogQWRqdXN0IGZvciBuZXcgbmFtZS1sb29rdXAgc2NoZW1lLiAgRG9uJ3QgbWVzcyB1cAoJQkxPQ0tfVkFScyB3aGVuIGRvaW5nIGZvci1zY29wZSBleHRlbnNpb24uICBSZW1vdmUgZWZmZWN0aXZlbHkKCWRlYWQgY29kZS4KCShwdXNobGV2ZWxfY2xhc3MpOiBUd2VhayBmb3JtYXR0aW5nLgoJKHBvcGxldmVsX2NsYXNzKTogQWRqdXN0IGZvciBuZXcgbmFtZS1sb29rdXAgc2NoZW1lLgoJKHByaW50X2JpbmRpbmdfbGV2ZWwpOiBMaWtld2lzZS4KCShzdG9yZV9iaW5kaW5ncyk6IExpa2V3aXNlLgoJKHB1c2hkZWNsKTogTGlrZXdpc2UuCgkocHVzaGRlY2xfY2xhc3NfbGV2ZWwpOiBMaWtld2lzZS4KCShwdXNoX2NsYXNzX2xldmVsX2JpbmRpbmcpOiBMaWtld2lzZS4KCShwdXNoX292ZXJsb2FkZWRfZGVjbCk6IFVwZGF0ZSBjb21tZW50cy4gIEFkanVzdCBmb3IgbmV3CgluYW1lLWxvb2t1cCBzY2hlbWUuCgkobG9va3VwX25hbWVfcmVhbCk6IExpa2V3aXNlLgoJKGxvb2t1cF9uYW1lX2N1cnJlbnRfbGV2ZWwpOiBMaWtld2lzZS4KCShjcF9maW5pc2hfZGVjbCk6IExpa2V3aXNlLgoJKHJlcXVpcmVfY29tcGxldGVfdHlwZXNfZm9yX3Bhcm1zKTogTGlrZXdpc2UuICBSZW1vdmUgbWlzbGVhZGluZwoJI2lmIDAnZCBjb2RlLgoJKGdyb2tfcGFybXMpOiBMaWtld2lzZS4gIERvbid0IGNhbGwKCXJlcXVpcmVfY29tcGxldGVfdHlwZXNfZm9yX3Bhcm1zIGhlcmUuCgkoZ3Jva19jdG9yX3Byb3BlcnRpZXMpOiBEb24ndCB0cmVhdCB0ZW1wbGF0ZXMgYXMgY29weQoJY29uc3RydWN0b3JzLgoJKGdyb3Bfb3BfcHJvcGVydGllcyk6IE9yIGFzIGFzc2lnbm1lbnQgb3BlcmF0b3JzLgoJKHN0YXJ0X2Z1bmN0aW9uKTogRG9jdW1lbnQuICBBZGp1c3QgZm9yIG5ldyBuYW1lLWxvb2t1cCBzY2hlbWUuCgkoZmluaXNoX2Z1bmN0aW9uKTogTGlrZXdpc2UuCgkqIGRlY2wyLmMgKGRvX2xvY2FsX3VzaW5nX2RlY2wpOiBVc2UgcHVzaF9sb2NhbF9iaW5kaW5nLgoJKiBsZXguYyAoYmVnaW5fZGVmaW5pdGlvbl9vZl9pbmNsYXNzX2lubGluZSk6IE5ldyBmdW5jdGlvbiwgc3BsaXQKCW91dCBmcm9tIC4uLgoJKGRvX3BlbmRpbmdfaW5saW5lcyk6IEhlcmUsIGFuZCAuLi4KCShwcm9jZXNzX25leHRfaW5saW5lKTogSGVyZS4KCShnZXRfdGltZV9pZGVudGlmaWVyKTogVXNlIFRJTUVfSURFTlRJRklFUl8qIG1hY3Jvcy4KCShpbml0X2ZpbGVuYW1lX3RpbWVzKTogTGlrZXdpc2UuCgkoZXh0cmFjdF9pbnRlcmZhY2VfaW5mbyk6IExpa2V3aXNlLgoJKHN0ZV90eXBlZGVjbF9pbnRlcmZhY2VfaW5mbyk6IExpa2V3aXNlLgoJKGNoZWNrX25ld2xpbmUpOiBMaWtld2lzZS4KCShkdW1wX3RpbWVfc3RhdGlzdGljcyk6IExpa2V3aXNlLgoJKGhhbmRsZV9jcF9wcmFnbWEpOiBMaWtld2lzZS4KCShkb19pZGVudGlmaWVyKTogQWRqdXN0IGZvciBuZXcgbmFtZS1sb29rdXAgc2NoZW1lLgoJKiBwYXJzZS55IChmdW5jdGlvbl90cnlfYmxvY2spOiBSZXR1cm4gY3Rvcl9pbml0aWFsaXplcl9vcHQgdmFsdWUuCgkoZm5kZWYpOiBVc2UgaXQuCgkoZm4uZGVmcGVuKTogUGFzcyBhcHByb3ByaWF0ZSB2YWx1ZXMgdG8gc3RhcnRfZnVuY3Rpb24uCgkocGVuZGluZ19pbmxpbmUpOiBVc2UgZnVuY3Rvcl90cnlfYmxvY2sgdmFsdWUsIGFuZCBwYXNzCglhcHByb3ByaWF0ZSB2YWx1ZXMgdG8gZmluaXNoX2Z1bmN0aW9uLgoJKiBwdC5jIChpc19tZW1iZXJfdGVtcGxhdGUpOiBVcGRhdGUgZG9jdW1lbnRhdGlvbjsgcmVtb3ZlIGhhbmRsaW5nCglvZiBGVU5DVElPTl9ERUNMcy4gIEFzIHBlciBuYW1lLCB0aGlzIGZ1bmN0aW9uIHNob3VsZCBkZWFsIG9ubHkgaW4KCVRFTVBMQVRFX0RFQ0xzLgoJKGRlY2xfdGVtcGxhdGVfcGFybV9wKTogQ2hhbmdlIG5hbWUgb2Ygb2xkZGVjbCBwYXJhbWV0ZXIgdG8gZGVjbC4KCShjaGVja190ZW1wbGF0ZV9zaGFkb3cpOiBBZGp1c3QgZm9yIG5ldyBuYW1lLWxvb2t1cCBzY2hlbWUuCgkobG9va3VwX3RlbXBsYXRlX2NsYXNzKTogTGlrZXdpc2UuCgkodHN1YnN0X2RlY2wpOiBUd2VhayBzbyBhcyBub3QgdG8gY29uZnVzZSBtZW1iZXIgdGVtcGxhdGVzIHdpdGgKCWNvcHkgY29uc3RydWN0b3JzIGFuZCBhc3NpZ25tZW50IG9wZXJhdG9ycy4KCSh1bmlmeSk6IEhhbmRsZSBVTklPTl9UWVBFcy4KCSogcHRyZWUuYyAocHJpbnRfbGFuZ19pZGVudGlmaWVyKTogQWRqdXN0IGZvciBuZXcgbmFtZS1sb29rdXAgc2NoZW1lLgoJKGxhbmdfcHJpbnRfeG5vZGUpOiBBZGp1c3QgZm9yIG5ldyBuYW1lLWxvb2t1cCBzY2hlbWUuCgkqIHR5cGVjay5jIChtYXJrX2FkZHJlc3NhYmxlKTogTGlrZXdpc2UuCgkoY19leHBhbmRfcmV0dXJuKTogTGlrZXdpc2UuCgoxOTk4LTEyLTA4ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBkZWNsLmMgKGdyb2tkZWNsYXJhdG9yKTogQWxsb3cgZmllbGQgd2l0aCBzYW1lIG5hbWUgYXMgY2xhc3MKCWluIGV4dGVybiAiQyIuCgoJKiBkZWNsLmMgKGxvb2t1cF9uYW1lX3JlYWwpOiBEb24ndCBsaW1pdCBmaWVsZCBsb29rdXAgdG8gdHlwZXMuCgkqIGNsYXNzLmMgKGNoZWNrX21lbWJlcl9kZWNsX2lzX3NhbWVfaW5fY29tcGxldGVfc2NvcGUpOiBObyBlcnJvcgoJaWYgaWN2IGFuZCB4IGFyZSB0aGUgc2FtZS4KCSogbGV4LmMgKGRvX2lkZW50aWZpZXIpOiBUd2VhayBlcnJvciBtZXNzYWdlLgoKMTk5OC0xMi0xMCAgTWFyayBNaXRjaGVsbCAgPG1hcmtAbWFya21pdGNoZWxsLmNvbT4KCgkqIGRlY2wuYyAoc3RhcnRfZW51bSk6IFVzZSBwdXNoX29ic3RhY2tzLCBub3QKCWVuZF90ZW1wb3JhcnlfYWxsb2NhdGlvbi4KCShmaW5pc2hfZW51bSk6IENhbGwgcG9wX29ic3RhY2tzLgoKMTk5OC0xMi0xMCAgTWFyayBNaXRjaGVsbCAgPG1hcmtAbWFya21pdGNoZWxsLmNvbT4KCgkqIGNsYXNzLmMgKGluc3RhbnRpYXRlX3R5cGUpOiBSZXR1cm4gZXJyb3JfbWFya19ub2RlIHJhdGhlciB0aGFuCglqdW5rLgoKMTk5OC0xMi0wOSAgTWFyayBNaXRjaGVsbCAgPG1hcmtAbWFya21pdGNoZWxsLmNvbT4KCgkqIGNwLXRyZWUuaCAobW9zdF9zcGVjaWFsaXplZF9pbnN0YW50aWF0aW9uKTogTmV3IGZ1bmN0aW9uLgoJKHByaW50X2NhbmRpZGF0ZXMpOiBMaWtld2lzZS4KCSogY2xhc3MuYyAodmFsaWRhdGVfbGhzKTogUmVtb3ZlLgoJKHJlc29sdmVfYWRkcmVzc19vZl9vdmVybG9hZGVkX2Z1bmN0aW9uKTogTmV3IGZ1bmN0aW9uLCBzcGxpdCBvdXQKCWFuZCB0aGVuIHN1YnN0YW50aWFsbHkgcmV3b3JrZWQsIGZyb20gLi4uCgkoaW5zdGFudGlhdGVfdHlwZSk6IFVzZSBpdC4gIFNpbXBsaWZ5LgoJKiBjdnQuYyAoY29udmVydF90b19yZWZlcmVuY2UpOiBDb21wbGFpbiB3aGVuIGNhbGxlciBoYXMgaW5kaWNhdGVkCgl0aGF0J3MgdGhlIHJpZ2h0IHRoaW5nIHRvIGRvLiAgRG9uJ3QgY3Jhc2ggaWYgaW5zdGFudGlhdGVfdHlwZQoJZmFpbHMuCgkqIHB0LmM6IFN1YnN0aXR1dGUgYHBhcmFtZXRlcnMnIGZvciBgcGFyYW10ZXJzJyB0aHJvdWdob3V0LgoJKHByaW50X2NhbmRpZGF0ZXMpOiBEb24ndCBtYWtlIGl0IHN0YXRpYy4KCShtb3N0X3NwZWNpYWxpemVkX2luc3RhbnRpYXRpb24pOiBTcGxpdCBvdXQgZnJvbSAuLi4KCShtb3N0X3NwZWNpYWxpemVkKTogSGVyZS4KCldlZCBEZWMgIDkgMTU6MzM6MDEgMTk5OCAgRGF2ZSBCcm9sbGV5ICA8YnJvbGxleUBjeWdudXMuY29tPgoKCSogbGV4LmMgKGxhbmdfaW5pdF9vcHRpb25zKTogSW5pdGlhbGl6ZSBjcHBsaWIuCgkqIGRlY2wyLmMgKHBhcnNlX29wdGlvbnMsY3BwX2luaXRpYWxpemVkKTogUmVtb3ZlZC4KCShsYW5nX2RlY29kZV9vcHRpb24pOiBNb3ZlIGluaXRpYWxpemF0aW9uIG9mIGNwcGxpYiB0bwoJbGFuZ19pbml0X29wdGlvbnMuCgoxOTk4LTEyLTA5ICBNYXJrIE1pdGNoZWxsICA8bWFya0BtYXJrbWl0Y2hlbGwuY29tPgoKCSogZGVjbC5jIChncm9rZGVjbGFyYXRvcik6IFVwZGF0ZSB0aGUgbmFtZSBvZiB0aGUgVEVNUExBVEVfREVDTCwgYXMKCXdlbGwgYXMgdGhlIFRZUEVfREVDTCwgd2hlbiBhIHR5cGVkZWYgbmFtZSBpcyBhc3NpZ25lZCB0byBhCglwcmV2aW91c2x5IGFub255bW91cyB0eXBlLgoKMTk5OC0xMi0wOCAgQW5kcmV3IE1hY0xlb2QgIDxhbWFjbGVvZEBjeWdudXMuY29tPgoKCSogY3AvZXhjZXB0LmMgKGNhbGxfZWhfaW5mbyk6IFVzZSBfX3N0YXJ0X2NwX2hhbmRsZXIgaW5zdGVhZCBvZgoJX19jcF9laF9pbmZvIGZvciBnZXR0aW5nIHRoZSBlaCBpbmZvIHBvaW50ZXIuICBBZGQgdGFibGVfaW5kZXggdG8KCWZpZWxkIGxpc3QuCgkocHVzaF9laF9jbGVhbnVwKTogRG9uJ3QgaW5jcmVtZW50ICdoYW5kbGVycycgZGF0YSBmaWVsZC4KCShwcm9jZXNzX3N0YXJ0X2NhdGNoX2Jsb2NrKTogRG9uJ3Qgc2V0IHRoZSAnY2F1Z2h0JyBmaWVsZC4KCgkqIGNwL2V4Y2VwdGlvbi5jYyAoQ1BfRUhfSU5GTyk6IE5ldyBtYWNybyBmb3IgZ2V0dGluZyB0aGUKCWV4Y2VwdGlvbiBpbmZvIHBvaW50ZXIgd2l0aGluIGxpYnJhcnkgcm91dGluZXMuCgkoX19jcF9laF9pbmZvKTogVXNlIENQX0VIX0lORk8uCgkoX19zdGFydF9jcF9oYW5kbGVyKTogR2V0IGV4Y2VwdGlvbiBpbmZvIHBvaW50ZXIsIHNldCBjYXVnaHQgZmllbGQsCglhbmQgaW5jcmVtZW50IHRoZSBoYW5kbGVycyBmaWVsZC4gIEF2b2lkcyB0aGlzIGJlaW5nIGRvbmUgYnkgaGFuZGxlcnMuCgkoX191bmNhdGNoX2V4Y2VwdGlvbiwgX19jaGVja19laF9zcGVjKTogVXNlIENQX0VIX0lORk8gbWFjcm8uCgkodW5jYXVnaHRfZXhjZXB0aW9uKTogVXNlIENQX0VIX0lORk8gbWFjcm8uCgpUdWUgRGVjICA4IDEwOjQ4OjIxIDE5OTggIEplZmZyZXkgQSBMYXcgIChsYXdAY3lnbnVzLmNvbSkKCgkqIE1ha2UtbGFuZy5pbiAoY3h4bWFpbi5vKTogRGVwZW5kIG9uICQoREVNQU5HTEVfSCksIG5vdCBkZW1hbmdsZS5oCgpNb24gRGVjICA3IDE3OjU2OjA2IDE5OTggIE1pa2UgU3R1bXAgIDxtcnNAd3JzLmNvbT4KCgkqIGxleC5jIChjaGVja19uZXdsaW5lKTogQWRkIHN1cHBvcnQgZm9yIFwgYXMgYG5hdHVyYWwnCgljaGFyYWN0ZXJzIGluIGZpbGUgbmFtZXMgaW4gI2xpbmUgdG8gYmUgY29uc2lzdGVudCB3aXRoICNpbmNsdWRlCgloYW5kbGluZy4gIFdlIHN1cHBvcnQgZXNjYXBlIHByb2Nlc3NpbmcgaW4gdGhlICMgMSAiLi4uIiB2ZXJzaW9uIG9mCgl0aGUgY29tbWFuZC4gIFNlZSBhbHNvIHN1cHBvcnQgaW4gY3AvbGV4LmMuCgoxOTk4LTEyLTA3ICBaYWNrIFdlaW5iZXJnICA8emFja0ByYWJpLnBoeXMuY29sdW1iaWEuZWR1PgoKCSogY3AvZGVjbDIuYzogcy9kYXRhL29wdHMvIHdoZW4gaW5pdGlhbGl6aW5nIGNwcF9yZWFkZXIKCXN0cnVjdHVyZS4KCjE5OTgtMTItMDcgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIGRlY2wuYyAoYnVpbGRfdHlwZW5hbWVfdHlwZSk6IFNldCBERUNMX0FSVElGSUNJQUwuCgoJKiBlcnJvci5jIChkdW1wX3NpbXBsZV9kZWNsKTogQWxzbyBwcmludCBuYW1lc3BhY2UgY29udGV4dC4KCShkdW1wX2Z1bmN0aW9uX2RlY2wpOiBMaWtld2lzZS4KCgkqIGRlY2wyLmMgKGFtYmlndW91c19kZWNsKTogRG9uJ3QgcHJpbnQgb2xkIHZhbHVlIGlmIGl0J3MKCWVycm9yX21hcmtfbm9kZS4KCgkqIGRlY2wuYyAobG9va3VwX25hbWVfcmVhbCk6IEZpeCBoYW5kbGluZyBvZiBsb2NhbCB0eXBlcyBzaGFkb3dlZAoJYnkgYSBub24tdHlwZSBkZWNsLiAgUmVtb3ZlIG9ic29sZXRlIGNvZGUuCgkqIGNwLXRyZWUuaCAoREVDTF9GVU5DVElPTl9TQ09QRV9QKTogTmV3IG1hY3JvLgoKCSogbGFuZy1vcHRpb25zLmg6IEFkZCAtZnBlcm1pc3NpdmUuCgkqIGRlY2wyLmM6IExpa2V3aXNlLgoJKiBjcC10cmVlLmg6IEFkZCBmbGFnX3Blcm1pc3NpdmUuCgkqIGRlY2wuYyAoaW5pdF9kZWNsX3Byb2Nlc3NpbmcpOiBJZiBuZWl0aGVyIC1mcGVybWlzc2l2ZSBvciAtcGVkYW50aWMKCXdlcmUgc3BlY2lmaWVkLCBzZXQgZmxhZ19wZWRhbnRpY19lcnJvcnMuCgkqIGNhbGwuYyAoYnVpbGRfb3Zlcl9jYWxsKTogVHVybiBkcm9wcGVkIHF1YWxpZmllciBtZXNzYWdlcwoJYmFjayBpbnRvIHBlZHdhcm5zLgoJKiBjdnQuYyAoY29udmVydF90b19yZWZlcmVuY2UpOiBMaWtld2lzZS4KCSogdHlwZWNrLmMgKGNvbnZlcnRfZm9yX2Fzc2lnbm1lbnQpOiBMaWtld2lzZS4KCjE5OTgtMTItMDUgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIGRlY2wyLmMgKGNvZXJjZV9uZXdfdHlwZSk6IFVzZSBzYW1lX3R5cGVfcC4KCShjb2VyY2VfZGVsZXRlX3R5cGUpOiBMaWtld2lzZS4KCgkqIGNhbGwuYyAoY2hlY2tfZHRvcl9uYW1lKTogUmV0dXJuIDEsIG5vdCBlcnJvcl9tYXJrX25vZGUuCgoxOTk4LTEyLTA0ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBsZXguYyAoaGFuZGxlX2NwX3ByYWdtYSk6IERpc2FibGUgI3ByYWdtYSBpbnRlcmZhY2UvaW1wbGVtZW50YXRpb24KCWlmIE1VTFRJUExFX1NZTUJPTF9TUEFDRVMuCgoJKiBwdC5jIChjaGVja190ZW1wbGF0ZV9zaGFkb3cpOiBOZXcgZm4uCgkqIGRlY2wyLmMgKGdyb2tmaWVsZCk6IFVzZSBpdC4KCSogZGVjbC5jIChwdXNoZGVjbCk6IExpa2V3aXNlLgoJKHB1c2hkZWNsX2NsYXNzX2xldmVsKTogTGlrZXdpc2UuCgkoc3RhcnRfbWV0aG9kKTogTGlrZXdpc2UuCgkoeHJlZl90YWcpOiBEb24ndCB0cnkgdG8gdXNlICd0JyBpZiB3ZSdyZSBkZWZpbmluZy4KCgkqIGNhbGwuYyAoY2hlY2tfZHRvcl9uYW1lKTogSnVzdCByZXR1cm4gYW4gZXJyb3JfbWFya19ub2RlLgoJKiBwdC5jIChsb29rdXBfdGVtcGxhdGVfY2xhc3MpOiBDb21wbGFpbiBhYm91dCB1c2luZyBub24tdGVtcGxhdGUgaGVyZS4KCSogcGFyc2UueSAoYXBwYXJlbnRfdGVtcGxhdGVfdHlwZSk6IE5vdCBoZXJlLgoKCSogcHQuYyAoY2hlY2tfZXhwbGljaXRfc3BlY2lhbGl6YXRpb24pOiBDb21wbGFpbiBhYm91dCBzcGVjaWFsaXphdGlvbgoJd2l0aCBDIGxpbmthZ2UuCgoJKiBsYW5nLW9wdGlvbnMuaDogQWRkIC1me25vLSx9aW1wbGljaXQtaW5saW5lLXRlbXBsYXRlcy4KCgkqIHB0LmMgKGNvbnZlcnRfbm9udHlwZV9hcmd1bWVudCk6IERvbid0IGFzc3VtZSB0aGF0IGFueSBpbnRlZ2VyCglhcmd1bWVudCBpcyBpbnRlbmRlZCB0byBiZSBhIGNvbnN0YW50LWV4cHJlc3Npb24uCgoxOTk4LTEyLTAzICBNYXJrIE1pdGNoZWxsICA8bWFya0BtYXJrbWl0Y2hlbGwuY29tPgoKCSogY2xhc3MuYyAoaGFuZGxlX3VzaW5nX2RlY2wpOiBGaXggY29tbWVudC4gIERvbid0IGxvb2t1cAoJY29uc3RydWN0b3JzIGluIGJhc2UgY2xhc3Nlcy4KCSh2YWxpZGF0ZV9saHMpOiBGaXggdHlwbyBpbiBjb21tZW50LgoJKiBzZWFyY2guYyAobG9va3VwX2ZpZWxkXzEpOiBEb24ndCByZXR1cm4gYSBVU0lOR19ERUNMLgoKCSogY3AtdHJlZS5oIChERUNMX0FDQ0VTUyk6IEltcHJvdmUgZG9jdW1lbnRhdGlvbi4KCgkqIGRlY2wuYyAoZXhwYW5kX3N0YXRpY19pbml0KTogRG9uJ3Qgc2V0IHRoZSBpbml0aWFsaXphdGlvbi1kb25lCglmbGFnIHVudGlsIHRoZSBpbml0aWFsaXphdGlvbiBpcyBkb25lLgoKMTk5OC0xMi0wMiAgTWFyayBNaXRjaGVsbCAgPG1hcmtAbWFya21pdGNoZWxsLmNvbT4KCgkqIGRlY2wyLmMgKHZhbGlkYXRlX25vbm1lbWJlcl91c2luZ19kZWNsKTogQ29tcGxhaW4gYWJvdXQgdXNpbmcKCWRlY2xhcmF0aW9ucyBmb3IgY2xhc3MgbWVtYmVycy4KCjE5OTgtMTEtMjkgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIHR5cGVjazIuYyAocHJvY2Vzc19pbml0X2NvbnN0cnVjdG9yKTogVXNlIHNhbWVfdHlwZV9wLgoKCSogZGVjbC5jIChjaGVja190YWdfZGVjbCk6IERvbid0IHdhcm4gYWJvdXQgbnVsbCBkZWNsIGluc2lkZSBhCgljbGFzcy4KCgkqIHB0LmMgKHVuaWZ5LCBjYXNlIE9GRlNFVF9UWVBFKTogUGFzcyBkb3duICdzdHJpY3QnIHJhdGhlciB0aGFuCglVTklGWV9BTExPV19OT05FLgoJKGNvbnZlcnRfbm9udHlwZV9hcmd1bWVudCk6IFVzZSBUWVBFX1BUUk1FTUZVTkNfRk5fVFlQRS4KCShyZXNvbHZlX292ZXJsb2FkZWRfdW5pZmljYXRpb24pOiBTdHJpcCBiYXNlbGlua3MuCgpGcmkgTm92IDI3IDEzOjA3OjIzIDE5OTggIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIGcrK3NwZWMuYzogRG9uJ3QgcHJvdG90eXBlIHhtYWxsb2MuCgoxOTk4LTExLTI1ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBleGNlcHQuYyAoZXhwYW5kX3Rocm93KTogVXNlIFRZUEVfUFRSX1AgdG8gY2hlY2sgZm9yIHBvaW50ZXJzLgoKCSogZGVjbC5jIChjaGVja190YWdfZGVjbCk6IERvIGNvbXBsYWluIGFib3V0IG51bGwgZnJpZW5kIGRlY2wgYXQKCWZpbGUgc2NvcGUuCgoxOTk4LTExLTI1ICBBbmRyZWFzIFNjaHdhYiAgPHNjaHdhYkBpc3Nhbi5jcy51bmktZG9ydG11bmQuZGU+CgoJKiBsZXguYyAobWFrZV9sYW5nX3R5cGUpOiBDbGVhciB0aGUgd2hvbGUgc3RydWN0IGxhbmdfdHlwZSwgbm90Cglvbmx5IHRoZSBmaXJzdCBtdWx0aXBsZSBvZiBzaXplb2YgKGludCkuCgoxOTk4LTExLTI0ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBkZWNsLmMgKHN0YXJ0X2RlY2wpOiBBbiBleHBsaWNpdCBzcGVjaWFsaXphdGlvbiBvZiBhIHN0YXRpYyBkYXRhCgltZW1iZXIgaXMgb25seSBhIGRlZmluaXRpb24gaWYgaXQgaGFzIGFuIGluaXRpYWxpemVyLgoKCSogZXhjZXB0LmMgKGV4cGFuZF90aHJvdyk6IFVzZSBjcF9maW5pc2hfZGVjbCBmb3IgdGhlIHRocm93IHRlbXAuCgkqIGN2dC5jIChidWlsZF91cF9yZWZlcmVuY2UpOiBQYXNzIERJUkVDVF9CSU5EIGRvd24gaW50bwoJY3BfZmluaXNoX2RlY2wuCgkqIGluaXQuYyAoZXhwYW5kX2RlZmF1bHRfaW5pdCk6IENoZWNrIGZvciBESVJFQ1RfQklORCBpbnN0ZWFkIG9mCglERUNMX0FSVElGSUNJQUwuCgoJKiBjYWxsLmMgKGJ1aWxkX292ZXJfY2FsbCk6IFVzZSBidWlsZF9kZWNsLgoKCSogZXhjZXB0LmMgKGV4cGFuZF90aHJvdyk6IEp1c3QgdXNlIGNvbnZlcnQsIG5vdAoJYnVpbGRfcmVpbnRlcnByZXRfY2FzdC4KCgkqIGxleC5jIChoYW5kbGVfZ2VuZXJpY19wcmFnbWEpOiBVc2UgdG9rZW5fYnVmZmVyLgoKCSogZGVjbC5jIChjaGVja190YWdfZGVjbCk6IERvbid0IGNvbXBsYWluIGFib3V0IG51bGwgZnJpZW5kIGRlY2wuCgoxOTk4LTExLTI0ICBEYXZlIFBpdHRzICA8ZHBpdHRzQGNvenguY29tPgoKCSogTWFrZS1sYW5nLmluIChERU1BTkdMRVJfUFJPRyk6IE1vdmUgdGhlIG91dHB1dCBhcmd1bWVudHMgdG8gdGhlCglmaXJzdCBwb3NpdGlvbi4KCSogbGV4LmMgKGNoZWNrX25ld2xpbmUpOiBVc2UgSVNBTFBIQS4KCShyZWFkZXNjYXBlKTogVXNlIElTR1JBUEguCgkoeXllcnJvcik6IFVzZSBJU0dSQVBILgoKMTk5OC0xMS0yNCAgTmF0aGFuIFNpZHdlbGwgIDxuYXRoYW5AYWNtLm9yZz4KCgkqIHNlYXJjaC5jIChnZXRfYWJzdHJhY3RfdmlydHVhbHMpOiBEbyBub3QgdXNlIGluaXRpYWwKCUNMQVNTVFlQRV9BQlNUUkFDVF9WSVJUVUFMUy4KCSogdHlwZWNrMi5jIChhYnN0cmFjdF92aXJ0dWFsc19lcnJvcik6IFNob3cgbG9jYXRpb24gb2YgYWJzdHJhY3QKCWRlY2xhcmF0aW9uLgoJKiBjYWxsLmMgKGJ1aWxkX25ld19tZXRob2RfY2FsbCk6IFVzZQoJQ0xBU1NUWVBFX0FCU1RSQUNUX1ZJUlRVQUwsIHJhdGhlciB0aGFuIHJlY2FsY3VsYXRlLgoJKiBjbGFzcy5jIChmaW5pc2hfc3RydWN0X2JpdHMpOiBEb24ndCBib3RoZXIgd29ya2luZyBvdXQgd2hldGhlcgoJZ2V0X2Fic3RyYWN0X3ZpcnR1YWxzIHdpbGwgZG8gYW55dGhpbmcsIGp1c3QgZG8gaXQuCgoxOTk4LTExLTI0ICBHcmFoYW0gIDxncmFoYW1zQHJjcC5jby51az4KCgkqIHR5cGVjay5jIChidWlsZF9jb21wb25lbnRfcmVmKTogUmVtb3ZlIHVudXNlZCBzdGF0ZW1lbnQuCgoxOTk4LTExLTI0ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBjbGFzcy5jIChhZGRfbWV0aG9kKTogQ2F0Y2ggaW52YWxpZCBvdmVybG9hZHMuCgoJKiBjbGFzcy5jIChhZGRfbWV0aG9kKTogQnVpbGQgdXAgT1ZFUkxPQURzIHByb3Blcmx5IGZvciBjb252ZXJzaW9uIG9wcy4KCSogc2VhcmNoLmMgKGxvb2t1cF9jb252ZXJzaW9ucyk6IEhhbmRsZSBnZXR0aW5nIHJlYWwgT1ZFUkxPQURzLgoJKGFkZF9jb252ZXJzaW9ucyk6IExpa2V3aXNlLiAgUmV2ZXJ0IGxhc3QgY2hhbmdlLgoJKiBjYWxsLmMgKGFkZF9jb252X2NhbmRpZGF0ZSk6IFBhc3MgdG90eXBlIHRvIGFkZF9jYW5kaWRhdGUgaW5zdGVhZAoJb2YgZm4uICBEb24ndCBhZGQgYSBuZXcgY2FuZGlkYXRlIGlmIHRoZSBsYXN0IG9uZSB3YXMgZm9yIHRoZSBzYW1lCgl0eXBlLgoJKHByaW50X3pfY2FuZGlkYXRlcyk6IEhhbmRsZSBnZXR0aW5nIGEgdHlwZSBhcyBhIGZ1bmN0aW9uLgoJKGpvdXN0KTogSWYgd2UgZ290IHR3byBjb252ZXJzaW9uIGNhbmRpZGF0ZXMgdG8gdGhlIHNhbWUgdHlwZSwKCWp1c3QgcGljayBvbmUuCgkoYnVpbGRfb2JqZWN0X2NhbGwpOiBMb3NlICd0ZW1wbGF0ZXMnLgoJKGJ1aWxkX3VzZXJfdHlwZV9jb252ZXJzaW9uXzEpOiBIYW5kbGUgZ2V0dGluZyByZWFsIE9WRVJMT0FEcy4KCjE5OTgtMTEtMjMgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIHR5cGVjazIuYyAocHJvY2Vzc19pbml0X2NvbnN0cnVjdG9yKTogSWYgdGhlcmUgYXJlIGVsZW1lbnRzCgl0aGF0IGRvbid0IGhhdmUgaW5pdGlhbGl6ZXJzIGFuZCB0aGV5IG5lZWQgdG8gaGF2ZSBjb25zdHJ1Y3RvcnMKCXJ1biwgc3VwcGx5IHRoZW0gd2l0aCBpbml0aWFsaXplcnMuCgoJKiBjbGFzcy5jIChmaW5pc2hfc3RydWN0XzEpOiBBIGNsYXNzIHdpdGggYSAwLXdpZHRoIGJpdGZpZWxkIGlzCglzdGlsbCBlbXB0eS4KCjE5OTgtMTEtMjMgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQG1hcmttaXRjaGVsbC5jb20+CgoJKiBwdC5jIChpbnN0YW50aWF0ZV9jbGFzc190ZW1wbGF0ZSk6IERvbid0IHRyeSB0byBmaWd1cmUgb3V0IHdoYXQKCXNwZWNpYWxpemF0aW9uIHRvIHVzZSBmb3IgYSBwYXJ0aWFsIGluc3RhbnRpYXRpb24uICBDb3JyZWN0Cgl0eXBvcyBpbiBhIGNvdXBsZSBvZiBjb21tZW50cy4gIEF2b2lkIGNhbGxpbmcgdXNlc190ZW1wbGF0ZV9wYXJtcwoJbXVsdGlwbGUgdGltZXMuCgoxOTk4LTExLTIzICBCZW5qYW1pbiBLb3NuaWsgIDxia296QGN5Z251cy5jb20+CgoJKiBtZXRob2QuYyAocHJvY2Vzc19vdmVybG9hZF9pdGVtKTogQWRkIGNhbGwgdG8KCWJ1aWxkX21hbmdsZWRfQzl4X25hbWUgZm9yIGludFRJX3R5cGVfbm9kZXMuCgkoYnVpbGRfbWFuZ2xlZF9DOXhfbmFtZSk6IEFkZCBwcm90b3R5cGUsIGRlZmluZS4KCSogZGVjbC5jIChpbml0X2RlY2xfcHJvY2Vzc2luZyk6IEFkZCBuYW1lcyBmb3IKCVRJbW9kZV90eXBlX25vZGUuCgoxOTk4LTExLTIzICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBwYXJzZS55IChuYW1lZF9jbGFzc19oZWFkKTogVXBkYXRlIENMQVNTVFlQRV9ERUNMQVJFRF9DTEFTUy4KCgkqIGNsYXNzLmMgKGZpbmlzaF9zdHJ1Y3RfMSk6IFNldCB0aGluZ3MgdXAgZm9yIDAtd2lkdGggYml0ZmllbGRzCglsaWtlIHdlIGRvIGZvciBvdGhlcnMuCgoJKiBkZWNsLmMgKGNoZWNrX3RhZ19kZWNsKTogTmV3IGZuLgoJKHNoYWRvd190YWcpOiBTcGxpdCBvdXQgZnJvbSBoZXJlLgoJKiBkZWNsMi5jIChncm9rX3hfY29tcG9uZW50cyk6IENhbGwgaXQuCgoxOTk4LTExLTIyICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBkZWNsLmM6IExvc2Ugd2Fybl9hYm91dF9yZXR1cm5fdHlwZS4KCShncm9rZGVjbGFyYXRvcik6IEFsd2F5cyBjb21wbGFpbiBhYm91dCBpbXBsaWNpdCBpbnQsIGV4Y2VwdCBmb3IKCWBtYWluICgpIHsgLi4uIH0nLgoKCSogZGVjbC5jICh0YWdfbmFtZSk6IE5ldyBmbi4KCSh4cmVmX3RhZyk6IENvbXBsYWluIGFib3V0IHVzaW5nIHR5cGVkZWYtbmFtZSBhZnRlciBjbGFzcy1rZXkuCgoJKiBpbml0LmMgKGV4cGFuZF92ZWNfaW5pdCk6IEFsc28ga2VlcCBnb2luZyBpZiBmcm9tX2FycmF5LgoKCSogdHJlZS5jIChpc19vdmVybG9hZGVkX2ZuKTogQWxzbyBoYW5kbGUgdGhlIG91dHB1dCBvZgoJYnVpbGRfb2Zmc2V0X3JlZi4KCgkqIGRlY2wuYyAoZ3Jva2RlY2xhcmF0b3IpOiBVc2UgY29uc3RydWN0b3JfbmFtZSB3aGVuIGNvbXBhcmluZwoJZmllbGQgbmFtZSBhZ2FpbnN0IGVuY2xvc2luZyBjbGFzcy4KCSogY2xhc3MuYyAoZmluaXNoX3N0cnVjdF9hbm9uKTogTGlrZXdpc2UuCgoxOTk4LTExLTIyICBNYXJrIE1pdGNoZWxsICA8bWFya0BtYXJrbWl0Y2hlbGwuY29tPgoKCSogZGVjbC5jIChwb3BsZXZlbCk6IFJlbW92ZSBjb2RlIHRvIGhhbmRsZSBLRUVQID09IDIuCgkoZmluaXNoX2Z1bmN0aW9uKTogRG9uJ3QgY29uZnVzZSBCTE9DSy1vcmRlciB3aGVuCglwcm9jZXNzaW5nIGEgZGVzdHJ1Y3Rvci4KCjE5OTgtMTEtMjEgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIGRlY2wuYyAocmVxdWlyZV9jb21wbGV0ZV90eXBlc19mb3JfcGFybXMpOiBDYWxsIGxheW91dF9kZWNsCglhZnRlciB3ZSd2ZSBjb21wbGV0ZWQgdGhlIHR5cGUuCgoxOTk4LTExLTIxICBNYXJ0aW4gdm9uIEz2d2lzICA8bG9ld2lzQGluZm9ybWF0aWsuaHUtYmVybGluLmRlPgoKCSogZGVjbDIuYyAodmFsaWRhdGVfbm9ubWVtYmVyX3VzaW5nX2RlY2wpOiBBbGxvdyB1c2luZyB0ZW1wbGF0ZXMKCWZyb20gdGhlIGdsb2JhbCBuYW1lc3BhY2UuCgoxOTk4LTExLTIxICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJSGFuZGxlIHNwZWNpZnlpbmcgdGVtcGxhdGUgYXJncyB0byBtZW1iZXIgZnVuY3Rpb24gdGVtcGxhdGVzLgoJKiB0cmVlLmMgKGJ1aWxkX292ZXJsb2FkKTogQWx3YXlzIGNyZWF0ZSBhbiBPVkVSTE9BRCBmb3IgYSB0ZW1wbGF0ZS4KCSogc2VhcmNoLmMgKGFkZF9jb252ZXJzaW9ucyk6IEhhbmRsZSBmaW5kaW5nIGFuIE9WRVJMT0FELgoJKiBkZWNsMi5jIChjaGVja19jbGFzc2ZuKTogTGlrZXdpc2UuCgkqIGxleC5jIChpZGVudGlmaWVyX3R5cGUpOiBTZWUgdGhyb3VnaCBhIGJhc2VsaW5rLgoJKiBwYXJzZS55IChkb19pZCk6IERvbid0IGNhbGwgZG9faWRlbnRpZmllciBpZiB3ZSBnb3QgYSBiYXNlbGluay4KCSogY2xhc3MuYyAoaW5zdGFudGlhdGVfdHlwZSwgY2FzZSBUUkVFX0xJU1QpOiBSZWN1cnNlLgoKCSogZGVjbC5jIChncm9rZGVjbGFyYXRvcik6IEFsbG93IGEgYm9vbGVhbiBjb25zdGFudCBmb3IgYXJyYXkKCWJvdW5kcywgb2RkIGFzIHRoYXQgc291bmRzLgoKCSogcHQuYyAodW5pZnkpOiBCZSBtb3JlIHN0cmljdCBhYm91dCBub24tdHlwZSBwYXJtcywgZXhjZXB0IGZvcgoJYXJyYXkgYm91bmRzLgoJKFVOSUZZX0FMTE9XX0lOVEVHRVIpOiBOZXcgbWFjcm8uCgoxOTk4LTExLTE5ICBNYW5mcmVkIEhvbGxzdGVpbiAgPG1hbmZyZWRAcy1kaXJla3RuZXQuZGU+CgoJKiBNYWtlLWxhbmcuaW4gKG1hbmRpcik6IFJlcGxhY2UgYWxsIHVzZXMgb2YgJChtYW5kaXIpIGJ5ICQobWFuMWRpcikuCgoxOTk4LTExLTE5ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBzZW1hbnRpY3MuYyAoYmVnaW5fY2xhc3NfZGVmaW5pdGlvbik6IENhbGwKCW1heWJlX3Byb2Nlc3NfcGFydGlhbF9zcGVjaWFsaXphdGlvbiBiZWZvcmUgcHVzaF90ZW1wbGF0ZV9kZWNsLgoJRG9uJ3QgY2FsbCBwdXNoX3RlbXBsYXRlX2RlY2wgZm9yIGEgc3BlY2lhbGl6YXRpb24uCgkqIHNlYXJjaC5jIChsb29rdXBfZmllbGQpOiBEbyByZXR1cm4gYSBtZW1iZXIgdGVtcGxhdGUgY2xhc3MuCgkqIGRlY2wyLmMgKGhhbmRsZV9jbGFzc19oZWFkKTogSGFuZGxlIG1lbWJlciB0ZW1wbGF0ZSBjbGFzc2VzLgoKCSogZGVjbC5jIChncm9rZGVjbGFyYXRvcik6IEEgcGFybSB0eXBlIG5lZWQgbm90IGJlIGNvbXBsZXRlLgoKCSogcHQuYyAoY29udmVydF9ub250eXBlX2FyZ3VtZW50KTogRml4IHRoaW5rby4KCjE5OTgtMTEtMTggIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQG1hcmttaXRjaGVsbC5jb20+CgoJKiBjcC10cmVlLmggKFBUUk1FTV9DU1RfQ0xBU1MpOiBGaXggdHlwby4KCShnbG9iYWxfZGVsZXRlX2ZuZGVjbCk6IE5ldyB2YXJpYWJsZS4KCSogZGVjbC5jIChnbG9iYWxfZGVsZXRlX2ZuZGVjbCk6IERlZmluZSBpdC4KCShpbml0X2RlY2xfcHJvY2Vzc2luZyk6IFNldCBpdC4KCSogaW5pdC5jIChidWlsZF9idWlsdGluX2RlbGV0ZV9jYWxsKTogVXNlIGl0LgoJKiB0cmVlLmMgKG1hcGNhcik6IFJlY3Vyc2l2ZWx5IGNhbGwgbWFwY2FyIGZvciB0aGUgdHlwZSBvZiBFWFBSCglub2Rlcy4KCjE5OTgtMTEtMTggIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIGRlY2wuYyAoY3BsdXNfZXhwYW5kX2V4cHJfc3RtdCk6IEFsd2F5cyBjb21wbGFpbiBhYm91dCB1bnJlc29sdmVkCgl0eXBlLgoKCSogdHJlZS5jIChsdmFsdWVfcF8xKTogQW4gSU5ESVJFQ1RfUkVGIHRvIGEgZnVuY3Rpb24gaXMgYW4gbHZhbHVlLgoJKiBjYWxsLmMgKGJ1aWxkX29iamVjdF9jYWxsKTogQWxzbyBzdXBwb3J0IHJlZmVyZW5jZXMgdG8gZnVuY3Rpb25zLgoJKiB0eXBlY2suYyAoY29udmVydF9mb3JfaW5pdGlhbGl6YXRpb24pOiBEb24ndCBkZWNheSBhIGZ1bmN0aW9uCglpZiB0aGUgdGFyZ2V0IGlzIGEgcmVmZXJlbmNlIHRvIGZ1bmN0aW9uLgoKCSogc2VhcmNoLmMgKGFkZF9jb252ZXJzaW9ucyk6IEdldCBhbGwgdGhlIG92ZXJsb2FkcyBmcm9tIGEgY2xhc3MuCgoJKiBkZWNsLmMgKGdyb2tfY3Rvcl9wcm9wZXJ0aWVzKTogQ29tcGxhaW4gYWJvdXQgYW55IGNvbnN0cnVjdG9yCgl0aGF0IHdpbGwgdGFrZSBhIHNpbmdsZSBhcmcgb2YgdGhlIGNsYXNzIHR5cGUgYnkgdmFsdWUuCgoJKiB0eXBlY2syLmMgKGJ1aWxkX2Z1bmN0aW9uYWxfY2FzdCk6IENhbid0IGNyZWF0ZSBvYmplY3RzIG9mCglhYnN0cmFjdCBjbGFzc2VzIHRoaXMgd2F5LgoJKiBjdnQuYyAob2NwX2NvbnZlcnQpOiBMaWtld2lzZS4KCgkqIGRlY2wuYyAoZ3Jva2ZuZGVjbCk6IE1lbWJlciBmdW5jdGlvbnMgb2YgbG9jYWwgY2xhc3NlcyBhcmUgbm90CglwdWJsaWMuCgoxOTk4LTExLTE4ICBNYXJrIE1pdGNoZWxsICA8bWFya0BtYXJrbWl0Y2hlbGwuY29tPgoKCSogTWFrZS1sYW5nLmluIChjYzFwbHVzKTogQWRkIGRlcGVuZGVuY3kgb24gaGFzaC5vLgoKMTk5OC0xMS0xOCAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogc2VhcmNoLmMgKGdldF9hYnN0cmFjdF92aXJ0dWFscyk6IENvbXBsYWluIGFib3V0IHZpcnR1YWxzIHdpdGgKCW5vIGZpbmFsIG92ZXJyaWRlci4KCSogdHlwZWNrMi5jIChhYnN0cmFjdF92aXJ0dWFsc19lcnJvcik6IFJlbW92ZSBoYW5kbGluZyBmb3IgdmlydHVhbHMKCXdpdGggbm8gZmluYWwgb3ZlcnJpZGVyLgoJKiBjbGFzcy5jIChvdmVycmlkZV9vbmVfdnRhYmxlKTogRG9uJ3Qgc2V0IERFQ0xfQUJTVFJBQ1RfVklSVFVBTF9QCglvbiB2aXJ0dWFscyB3aXRoIG5vIGZpbmFsIG92ZXJyaWRlci4KCgkqIGxleC5jIChyZWluaXRfcGFyc2VfZm9yX2Jsb2NrKTogQWRkIGEgc3BhY2UgYWZ0ZXIgdGhlIGluaXRpYWwgJzonLgoKCSogY2xhc3MuYyAoZmluaXNoX3N0cnVjdF8xKTogRG9uJ3QgcmVtb3ZlIHplcm8td2lkdGggYml0LWZpZWxkcyB1bnRpbAoJYWZ0ZXIgbGF5b3V0X3R5cGUuCgoJKiBmcmllbmQuYyAoZG9fZnJpZW5kKTogRG9uJ3Qgc2V0X21hbmdsZWRfbmFtZV9mb3JfZGVjbC4KCgkqIGNsYXNzLmMgKGZpbmlzaF9zdHJ1Y3RfYW5vbik6IENvbXBsYWluIGFib3V0IG5vbi1maWVsZHMuCgkqIGRlY2wyLmMgKGJ1aWxkX2Fub25fdW5pb25fdmFycyk6IExpa2V3aXNlLgoKCSogZGVjbC5jIChncm9rZGVjbGFyYXRvcik6IE5vcm1hbCBkYXRhIG1lbWJlcnMgY2FuJ3QgaGF2ZSB0aGUgc2FtZQoJbmFtZSBhcyB0aGUgY2xhc3MsIGVpdGhlci4KCSogY2xhc3MuYyAoZmluaXNoX3N0cnVjdF9hbm9uKTogTmVpdGhlciBjYW4gbWVtYmVycyBvZiBhbgoJYW5vbnltb3VzIHVuaW9uLgoKMTk5OC0xMS0xNyAgTWFyayBNaXRjaGVsbCAgPG1hcmtAbWFya21pdGNoZWxsLmNvbT4KCgkqIGNwLXRyZWUuaCAoVFlQRV9BTElBU19TRVQpOiBEb2N1bWVudCBsYW5ndWFnZS1kZXBlbmRlbnQgdXNlcy4KCShUWVBFX0JJTkZPKTogTGlrZXdpc2UuCgkoSVNfQUdHUl9UWVBFKTogVHdlYWsuCgkoU0VUX0lTX0FHR1JfVFlQRSk6IE5ldyBtYWNyby4KCShDTEFTU19UWVBFX1ApOiBUd2Vhay4KCShsYW5nX3R5cGUpOiBHcm91cCBtYXJrIGJpdGZpZWxkcyB0b2dldGhlci4gIFJlbW92ZSBsaW5lbnVtLgoJKENMQVNTVFlQRV9TT1VSQ0VfTElORSk6IFJlbW92ZSBtYWNyby4KCShDTEFTU1RZUEVfTUFSS0VEX04pOiBOZXcgbWFjcm8uCgkoU0VUX0NMQVNTVFlQRV9NQVJLRURfTik6IExpa2V3aXNlLgoJKENMRUFSX0NMQVNTVFlQRV9NQVJLRURfTik6IExpa2V3aXNlLgoJKENMQVNTX1RZUEVfTUFSS0VEXyopOiBVc2UgdGhlbS4KCShTRVRfQ0xBU1NUWVBFX01BUktFRF8qKTogTGlrZXdpc2UuCgkoQ0xFQVJfQ0xBU1NUWVBFX01BUktFRF8qKTogTGlrZXdpc2UuCgkoVEVNUExBVEVfVEVNUExBVEVfUEFSTV9URU1QTEFURV9JTkZPKTogTGlrZXdpc2UuCgkoVFlQRV9URU1QTEFURV9JTkZPKTogSGFuZGxlIFRFTVBMQVRFX1RFTVBMQVRFX1BBUk1zIGFzIHdlbGwuCgkoVFlQRU5BTUVfVFlQRV9GVUxMTkFNRSk6IFVzZSBUWVBFX0JJTkZPIHJhdGhlciB0aGFuIENMQVNTVFlQRV9TSVpFLgoJKiBjbGFzcy5jIChjbGFzc19jYWNoZV9vYnN0YWNrKTogTmV3IHZhcmlhYmxlLgoJKGNsYXNzX2NhY2hlX2ZpcnN0b2JqKTogTGlrZXdpc2UuCgkoZmluaXNoX3N0cnVjdCk6IERvbid0IHNldCBDTEFTU1RZUEVfU09VUkNFX0xJTkUuCgkocHVzaGNsYXNzKTogRnJlZSB0aGUgY2FjaGUsIHdoZW4gYXBwcm9wcmlhdGUuCgkocG9wY2xhc3MpOiBUaWR5LgoJKG1heWJlX3B1c2hfY2FjaGVfb2JzdGFjayk6IFVzZSBjbGFzc19jYWNoZV9vYnN0YWNrLgoJKiBkZWNsLmMgKGluY2x1ZGUgaGFzaC5oKS4KCSh0eXBlbmFtZV9oYXNoKTogTmV3IGZ1bmN0aW9uLgoJKHR5cGVuYW1lX2NvbXBhcmUpOiBMaWtld2lzZS4KCShidWlsZF90eXBlbmFtZV90eXBlKTogQ2hlY2sgdGhlIGhhc2ggdGFibGUgdG8gYXZvaWQgY3JlYXRpbmcKCWR1cGxpY2F0ZXMuCgkoYnVpbGRfcHRybWVtZnVuY190eXBlKTogVXNlIFNFVF9JU19BR0dSX1RZUEUuCgkoZ3Jva2RlY2xhcmF0b3IpOiBVc2UgQ0xBU1NfVFlQRV9QLgoJKHhyZWZfYmFzZXR5cGVzKTogTGlrZXdpc2UuCgkoc3RhcnRfZnVuY3Rpb24pOiBMaWtld2lzZS4gIERvbid0IHB1dCBjdXJyZW50X2NsYXNzX3JlZiBvbiB0aGUKCXBlcm1hbmVudCBvYnN0YWNrLgoJKiBlcnJvci5jIChkdW1wX3R5cGVfcmVhbCk6IFVzZSBURU1QTEFURV9URU1QTEFURV9QQVJNX1RFTVBMQVRFX0lORk8KCWFuZCBUWVBFX1RJX0FSR1MuCgkqIGxleC5jIChub3RlX2dvdF9zZW1pY29sb24pOiBVc2UgQ0xBU1NfVFlQRV9QLgoJKG1ha2VfbGFuZ190eXBlKTogRG9uJ3QgY3JlYXRlIFRZUEVfTEFOR19TUEVDSUZJQyBhbmQgYXNzb2NpYXRlZAoJZmllbGRzIGZvciB0eXBlcyBvdGhlciB0aGFuIGNsYXNzIHR5cGVzLiAgRG8gY2xlYXIgVFlQRV9BTElBU19TRVQKCWZvciB0eXBlcyBvdGhlciB0aGFuIGNsYXNzIHR5cGVzLCB0aG91Z2guCgkqIG1ldGhvZC5jIChidWlsZF9vdmVybG9hZF9pZGVudGlmaWVyKTogVXNlIENMQVNTX1RZUEVfUCBhbmQKCVRFTVBMQVRFX1RFTVBMQVRFX1BBUk1fVEVNUExBVEVfSU5GTy4KCSogcHQuYyAocHJvY2Vzc190ZW1wbGF0ZV9wYXJtKTogRG9uJ3Qgc2V0CglDTEFTU1RZUEVfR09UX1NFTUlDT0xPTi4KCShsb29rdXBfdGVtcGxhdGVfY2xhc3MpOiBVc2UgVEVNUExBVEVfVEVNUExBVEVfUEFSTV9URU1QTEFURV9JTkZPLgoJQ29lcmNlIGFyZ3VtZW50cyBvbiB0aGUgbW9tZW50YXJ5IG9ic3RhY2suCgkoZm9yX2VhY2hfdGVtcGxhdGVfcGFybSk6IFVzZSBURU1QTEFURV9URU1QTEFURV9QQVJNX1RFTVBMQVRFX0lORk8uCgkoaW5zdGFudGlhdGVfY2xhc3NfdGVtcGxhdGUpOiBDYWxjdWxhdGUgdGVtcGxhdGUgYXJndW1lbnRzIG9uIHRoZQoJbW9tZW50YXJ5IG9ic3RhY2suICBUaWR5LgoJKHRzdWJzdF90ZW1wbGF0ZV9hcmdfdmVjdG9yKTogVXNlIG1ha2VfdGVtcF92ZWMuCgkodHN1YnN0X2FnZ3JfdHlwZSk6IFB1dCB0ZW1wbGF0ZSBhcmd1bWVudHMgb24gdGhlIG1vbWVudGFyeQoJb2JzdGFjay4KCSh0c3Vic3RfZGVjbCk6IExpa2V3aXNlLgoJKHRzdWJzdCk6IENvcHkgdGhlIGFycmF5IGJvdW5kcyBpbmRleCB0byB0aGUgcGVybWFuZW50IG9ic3RhY2sKCWJlZm9yZSBidWlsZGluZyBpbmRleCB0eXBlcy4gIFVzZSBuZXcgbWFjcm9zLgoJKHVuaWZ5KTogVXNlIG5ldyBtYWNyb3MuCgkoZG9fdHlwZV9pbnN0YW50aWF0aW9uKTogTGlrZXdpc2UuCgkqIHNlYXJjaC5jIChsb29rdXBfZm5maWVsZHNfMSk6IFVzZSBuZXcgbWFjcm9zLgoJKGRmc19wdXNoZGVjbHMpOiBCdWlsZCBlbnZlbG9wZXMgb24gdGhlIGNhY2hlIG9ic3RhY2suCgkoZGZzX2NvbXByZXNzX2RlY2xzKTogVXNlIG5ldyBtYWNyb3MuCgkocHVzaF9jbGFzc19kZWNscyk6IEJ1aWxkIG9uIHRoZSBjYWNoZSBvYnN0YWNrLgoJKiBzZW1hbnRpY3MuYyAoZmluaXNoX3R5cGVvZik6IERvbid0IHNldCBDTEFTU1RZUEVfR09UX1NFTUlDT0xPTi4KCSogc2lnbi5jIChidWlsZF9zaWduYXR1cmVfcG9pbnRlcl9vcl9yZWZlcmVuY2VfdHlwZSk6IFVzZQoJU0VUX0lTX0FHR1JfVFlQRS4KCSogdHJlZS5jIChtYWtlX2JpbmZvKTogQ2hlY2sgQ0xBU1NfVFlQRV9QLgoJKGNvcHlfdGVtcGxhdGVfdGVtcGxhdGVfcGFybSk6IEFkanVzdC4KCShtYWtlX3RlbXBfdmVjKTogVXNlIHB1c2hfZXhwcmVzc2lvbl9vYnN0YWNrLgoJKiB0eXBlY2suYyAoY29tcGxldGVfdHlwZSk6IFVzZSBuZXcgbWFjcm9zLgoJKGNvbXB0eXBlcyk6IExpa2V3aXNlLgoKMTk5OC0xMS0xNyAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogcHQuYyAodHN1YnN0KTogQWRkIGRpYWdub3N0aWNzIGZvciBpbnZhbGlkIGFycmF5LCByZWZlcmVuY2UKCWFuZCBwb2ludGVyIHRvIG1lbWJlciB0eXBlcy4KCjE5OTgtMTEtMTYgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIHR5cGVjazIuYyAobXlfZnJpZW5kbHlfYWJvcnQpOiBEb24ndCBmYXRhbCB0d2ljZSBpbiBhIHJvdy4KCgkqIHR5cGVjay5jIChjX2V4cGFuZF9zdGFydF9jYXNlKTogVXNlIGJ1aWxkX2V4cHJfdHlwZV9jb252ZXJzaW9uLgoJU2ltcGxpZnkuCgoJKiBwYXJzZS55IChzdHJ1Y3RzcCk6IEZpeCBjdXQtYW5kLXBhc3RlIGVycm9yLgoKCSogaW5pdC5jIChidWlsZF9uZXcpOiBDb21wbGFpbiBhYm91dCBub24taW50ZWdyYWwgc2l6ZS4KCgkqIHBhcnNlLnkgKHVuYXJ5X2V4cHIpOiBDb21wbGFpbiBhYm91dCBkZWZpbmluZyB0eXBlcyBpbiBzaXplb2YuCgoJKiB0eXBlY2suYyAoZXhwcl9zaXplb2YpOiBDb21wbGFpbiBhYm91dCBzaXplb2YgYW4gb3ZlcmxvYWRlZCBmbi4KCgkqIHJ0dGkuYyAoYnVpbGRfeF90eXBlaWQpOiBDb21wbGFpbiBhYm91dCB0eXBlaWQgd2l0aG91dAoJaW5jbHVkaW5nIDx0eXBlaW5mbz4uCgkoZ2V0X3R5cGVpZCk6IExpa2V3aXNlLiAgQ29tcGxhaW4gYWJvdXQgdHlwZWlkIG9mIGluY29tcGxldGUgdHlwZS4KCShnZXRfdGluZm9fZm5fZHluYW1pYyk6IExpa2V3aXNlLgoJKGdldF90eXBlaWRfMSk6IE5vdCBzdGF0aWMgYW55bW9yZS4KCSogZXhjZXB0LmMgKGJ1aWxkX2VoX3R5cGVfdHlwZSk6IFVzZSBnZXRfdHlwZWlkXzEuCgoJKiBydHRpLmMgKGJ1aWxkX2R5bmFtaWNfY2FzdF8xKTogR2l2ZSBlcnJvcnMgZm9yIGR5bmFtaWNfY2FzdCB0bwoJYW1iaWd1b3VzIG9yIHByaXZhdGUgYmFzZXMuICBGaXggd2FybmluZyBmb3IgcmVmZXJlbmNlIGNhc3QuCgoxOTk4LTExLTE2ICBNYXJrIE1pdGNoZWxsICA8bWFya0BtYXJrbWl0Y2hlbGwuY29tPgoKCSogY3AtdHJlZS5oIChERUNMX1RFTVBMQVRFX0lOU1RBTlRJQVRFRCk6IE5ldyBtYWNyby4KCSogZGVjbC5jIChkdXBsaWNhdGVfZGVjbHMpOiBSZW1vdmUgc3BlY2lhbC1jYXNlIGNvZGUgdG8gZGVhbCB3aXRoCgl0ZW1wbGF0ZSBmcmllbmRzLCBhbmQganVzdCBkbyB0aGUgb2J2aW91cyB0aGluZy4KCSogcHQuYyAocmVnaXN0ZXJfc3BlY2lhbGl6YXRpb24pOiBUd2VhayBmb3IgY2xhcml0eSwgYW5kIGFsc28gdG8KCWNsZWFyIERFQ0xfSU5JVElBTCBmb3IgYW4gaW5zdGFudGlhdGlvbiBiZWZvcmUgaXQgaXMgbWVyZ2VkIHdpdGggYQoJc3BlY2lhbGl6YXRpb24uCgkoY2hlY2tfZXhwbGljaXRfc3BlY2lhbGl6YXRpb24pOiBGaXggaW5kZW50YXRpb24uCgkodHN1YnN0X2ZyaWVuZF9mdW5jdGlvbik6IEhhbmRsZSBib3RoIGRlZmluaXRpb25zIGluIGZyaWVuZAoJZGVjbGFyYXRpb24gYW5kIG91dHNpZGUgZnJpZW5kIGRlY2xhcmF0aW9ucy4KCSh0c3Vic3RfZGVjbCk6IERvbid0IGNsZWFyIERFQ0xfSU5JVElBTCBmb3IgYW4gaW5zdGFudGlhdGlvbi4KCShyZWdlbmVyYXRlX2RlY2xfZnJvbV90ZW1wbGF0ZSk6IFR3ZWFrIGFjY29yZGluZ2x5LgoJKGluc3RhbnRpYXRlX2RlY2wpOiBMaWtld2lzZS4KCjE5OTgtMTEtMTYgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIGRlY2wuYyAoY3BsdXNfZXhwYW5kX2V4cHJfc3RtdCk6IFByb21vdGUgd2FybmluZyBhYm91dCBuYWtlZAoJbWVtYmVyIGZ1bmN0aW9uIHJlZmVyZW5jZSB0byBlcnJvci4KCSogY3Z0LmMgKG9jcF9jb252ZXJ0KTogQ29tcGxhaW4gYWJvdXQgY29udmVydGluZyBhbiBvdmVybG9hZGVkCglmdW5jdGlvbiB0byB2b2lkLgoKCSogaW5pdC5jIChidWlsZF9vZmZzZXRfcmVmKTogSnVzdCByZXR1cm4gYSBsb25lIHN0YXRpYyBtZW1iZXIKCWZ1bmN0aW9uLgoKCSogZGVjbC5jIChjcF9maW5pc2hfZGVjbCk6IE9ubHkgY29tcGxhaW4gYWJvdXQgcmVhbCBDT05TVFJVQ1RPUnMsCglub3QgaW50ZXJuYWwgb25lcy4KCgkqIHR5cGVjay5jIChidWlsZF9iaW5hcnlfb3Bfbm9kZWZhdWx0KTogSW1wcm92ZSBlcnJvciBoYW5kbGluZy4KCgkqIGRlY2wuYyAoZ3Jva2ZuZGVjbCk6IENvbXBsYWluIGFib3V0IG1ha2luZyAnbWFpbicgYSB0ZW1wbGF0ZS4KCgkqIHR5cGVjay5jIChzdHJpbmdfY29udl9wKTogRG9uJ3QgY29udmVydCBmcm9tIHdjaGFyX3RbXSB0byBjaGFyKi4KCgkqIGNhbGwuYyAoYnVpbGRfbWV0aG9kX2NhbGwpOiBIYW5kbGUgYSBCSVRfTk9UX0VYUFIgYXJvdW5kIGEKCVRZUEVfREVDTCBpbiBhIHRlbXBsYXRlLgoKMTk5OC0xMS0xNSAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogdHlwZWNrMi5jIChteV9mcmllbmRseV9hYm9ydCk6IEFkZCBVUkwgaW4gdGhlIG90aGVyIGNhc2UsIHRvby4KCgkqIGRlY2wuYyAoc3RydWN0IGNwX2Z1bmN0aW9uKTogQWRkIG5hbWVkX2xhYmVsX3VzZXMuCgkocHVzaF9jcF9mdW5jdGlvbl9jb250ZXh0KTogU2F2ZSBpdC4KCShwb3BfY3BfZnVuY3Rpb25fY29udGV4dCk6IFJlc3RvcmUgaXQuCgkoZGVmaW5lX2xhYmVsKTogQWxzbyBjb21wbGFpbiBhYm91dCBqdW1waW5nIGludG8gdGhlIHNjb3BlIG9mCglub24tUE9EIG9iamVjdHMgdGhhdCBkb24ndCBoYXZlIGNvbnN0cnVjdG9ycy4KCSogdHJlZS5jIChwb2RfdHlwZV9wKTogTmV3IGZuLgoKCSogcHQuYyAoaW5zdGFudGlhdGVfY2xhc3NfdGVtcGxhdGUpOiBDbGVhciBUWVBFX0JFSU5HX0RFRklORUQgc29vbmVyLgoJKiBydHRpLmMgKHN5bnRoZXNpemVfdGluZm9fZm4pOiBDYWxsIGltcG9ydF9leHBvcnRfZGVjbCBoZXJlLgoJKGdldF90aW5mb19mbik6IE5vdCBoZXJlLgoJKiByZXBvLmMgKHJlcG9fZ2V0X2lkKTogQWJvcnQgaWYgd2UgZ2V0IGNhbGxlZCBmb3IgYW4gaW5jb21wbGV0ZQoJdHlwZS4KCjE5OTgtMTEtMTMgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQG1hcmttaXRjaGVsbC5jb20+CgoJKiBleGNlcHQuYyAoZXhwYW5kX3Rocm93KTogTWFrZSBzdXJlIGZpcnN0IGFyZ3VtZW50IHRvCglfX2NwX3B1c2hfZXhjZXB0aW9uIGlzIG9mIHR5cGUgYHZvaWQqJyB0byBhdm9pZCBzcHVyaW91cyBlcnJvcgoJbWVzc2FnZXMuCgoxOTk4LTExLTExICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBwdC5jICh0cnlfb25lX292ZXJsb2FkKTogVGFrZSBvcmlnX3RhcmdzIGFnYWluLiAgT25seSBjaGVjayBmb3IKCW1pc21hdGNoZXMgYWdhaW5zdCB0aGVtOyB3ZSBkb24ndCBjYXJlIHdoYXQgYSBwcmV2aW91cyBjYWxsIGZvdW5kLgoJKHJlc29sdmVfb3ZlcmxvYWRlZF91bmlmaWNhdGlvbik6IEFkanVzdC4KCgkqIHNlYXJjaC5jIChsb29rdXBfZmllbGQpOiBEb24ndCByZXR1cm4gYW55dGhpbmcgZm9yIGEgbm9uLXR5cGUKCWZpZWxkIGZyb20gYSBkZXBlbmRlbnQgdHlwZS4KCSogZGVjbC5jIChncm9rZGVjbGFyYXRvcik6IFJlc29sdmUgU0NPUEVfUkVGcyBvZiB0aGUgY3VycmVudCBjbGFzcwoJaW4gYW4gYXJyYXkgZGVjbGFyYXRvci4KCShzdGFydF9kZWNsKTogUHVzaCBpbnRvIHRoZSBjbGFzcyBiZWZvcmUgbG9va2luZyBmb3IgdGhlIGZpZWxkLgoKMTk5OC0xMS0wOCAgTWFyayBNaXRjaGVsbCAgPG1hcmtAbWFya21pdGNoZWxsLmNvbT4KCgkqIG1ldGhvZC5jIChidWlsZF9vdmVybG9hZF92YWx1ZSk6IEhhbmRsZSBSRUZFUkVOQ0VfVFlQRS4KCjE5OTgtMTEtMDggIE1hcnRpbiB2b24gTPZ3aXMgIDxsb2V3aXNAaW5mb3JtYXRpay5odS1iZXJsaW4uZGU+CgoJKiBkZWNsLmMgKGdyb2tkZWNsYXJhdG9yKTogQWxsb3cgbmFtZXNwYWNlLXNjb3BlZCBtZW1iZXJzIGlmIHRoZXkKCWFyZSBmcmllbmRzLgoKMTk5OC0xMS0wOCAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogcHQuYyAodHN1YnN0X2RlY2wpOiBEb24ndCBtZXNzIHdpdGggdGhlIGdsb2JhbCB2YWx1ZSBvZiBhbgoJdW4tbWFuZ2xlZCBERUNMX0FTU0VNQkxFUl9OQU1FLgoKMTk5OC0xMS0wMyAgQ2hyaXN0b3BoZXIgRmF5bG9yICA8Y2dmQGN5Z251cy5jb20+CgoJKiBkZWNsLmMgKGluaXRfZGVjbF9wcm9jZXNzaW5nKTogUmVtb3ZlIENZR1dJTiBjb25kaXRpb25hbAoJc2luY2UgQ1lHV0lOIGlzIG5vdyBhYmxlIHRvIGRlYWwgd2l0aCB0cmFwcGluZyBzaWduYWxzLgoKU2F0IE5vdiAgNyAxNTo0ODowMiAxOTk4ICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBjcC10cmVlLmg6IERvbid0IGluY2x1ZGUgZ2Fuc2lkZWNsLmguCgkqIGV4Y2VwdGlvbi5jYzogSW5jbHVkZSBnYW5zaWRlY2wuaCAoc2luY2Ugd2UgZG9uJ3QgaW5jbHVkZSBjb25maWcuaCkKCSogZysrc3BlYy5jOiBEb24ndCBpbmNsdWRlIGdhbnNpZGVjbC5oLgoKMTk5OC0xMS0wNiAgTWFyayBNaXRjaGVsbCAgPG1hcmtAbWFya21pdGNoZWxsLmNvbT4KCgkqIGNwLXRyZWUuaCAobGFuZ19kZWNsX2ZsYWdzKTogQWRkIGRlZmluZWRfaW5fY2xhc3MuICBEZWNyZWFzZQoJc2l6ZSBvZiBkdW1teS4KCShERUNMX0RFRklORURfSU5fQ0xBU1NfUCk6IE5ldyBtYWNyby4KCShURU1QTEFURV9QQVJNU19GT1JfSU5MSU5FKTogRG9jdW1lbnQuCgkoY2hlY2tfc3RhdGljX3ZhcmlhYmxlX2RlZmluaXRpb24pOiBOZXcgZnVuY3Rpb24uCgkqIGRlY2wuYyAoY3BfZmluaXNoX2RlY2wpOiBTZXQgREVDTF9ERUZJTkVEX0lOX0NMQVNTX1AsIGlmCglhcHByb3ByaWF0ZS4KCShjaGVja19zdGF0aWNfdmFyaWFibGVfZGVmaW5pdGlvbik6IFNwbGl0IG91dCBmcm9tIC4uLgoJKGdyb2tkZWNsYXJhdG9yKTogSGVyZS4KCSogcHQuYyAoY2hlY2tfZGVmYXVsdF90bXBsX2FyZ3MpOiBOZXcgZnVuY3Rpb24sIHNwbGl0IG91dCBmcm9tIC4uLgoJKHB1c2hfdGVtcGxhdGVfZGVjbF9yZWFsKTogSGVyZS4KCShpbnN0YW50aWF0ZV90ZW1wbGF0ZSk6IEZpeCBjb21tZW50LgoKMTk5OC0xMS0wNCAgTWFyayBNaXRjaGVsbCAgPG1hcmtAbWFya21pdGNoZWxsLmNvbT4KCgkqIGNwLXRyZWUuaCAoQ1BfVFlQRV9DT05TVF9QKTogTWFrZSB7MCwxfS12YWx1ZWQuCgkoQ1BfVFlQRV9WT0xBVElMRV9QKTogTGlrZXdpc2UuCgkoQ1BfVFlQRV9SRVNUUklDVF9QKTogTGlrZXdpc2UuCgoxOTk4LTExLTAzICBNYXJrIE1pdGNoZWxsICA8bWFya0BtYXJrbWl0Y2hlbGwuY29tPgoKCSogcHQuYyAodHN1YnN0KTogVXNlIGJ1aWxkX2luZGV4X3R5cGUsIG5vdCBidWlsZF9pbmRleF8yX3R5cGUuCgoxOTk4LTExLTAyICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBjbGFzcy5jIChpbnN0YW50aWF0ZV90eXBlKTogQmUgbW9yZSBoZWxwZnVsLgoKCSogZGVjbDIuYyAoaW1wb3J0X2V4cG9ydF9kZWNsKTogQ2FsbCBpbXBvcnRfZXhwb3J0X2NsYXNzLgoKCSogY3AtdHJlZS5oIChFTVBUWV9DT05TVFJVQ1RPUl9QKTogQ2hlY2sgIVRSRUVfSEFTX0NPTlNUUlVDVE9SLgoJKiBkZWNsMi5jIChidWlsZF9leHByX2Zyb21fdHJlZSk6IFByb3BhZ2F0ZSBUUkVFX0hBU19DT05TVFJVQ1RPUi4KCSogcHQuYyAodHN1YnN0X2NvcHkpOiBMaWtld2lzZS4KCjE5OTgtMTEtMDIgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQG1hcmttaXRjaGVsbC5jb20+CgoJKiBpbml0LmMgKGV4cGFuZF92ZWNfaW5pdCk6IEZpeCBvZmYtYnktb25lIGVycm9yLgoKMTk5OC0xMS0wMiAgQWxleGFuZHJlIE9saXZhICA8b2xpdmFAZGNjLnVuaWNhbXAuYnI+CgoJKiBwYXJzZS55IChhcHBhcmVudF90ZW1wbGF0ZV90eXBlKTogTmV3IHR5cGUuCgkobmFtZWRfY29tcGxleF9jbGFzc19oZWFkX3NhbnNfYmFzZXR5cGUpOiBVc2UgaXQuCgkqIE1ha2VmaWxlLmluIChDT05GTElDVFMpOiBPbmUgbmV3IGNvbmZsaWN0LgoJKiBwYXJzZS5jOiBSZWdlbmVyYXRlZC4KCjE5OTgtMTEtMDEgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQG1hcmttaXRjaGVsbC5jb20+CgoJKiBjcC10cmVlLmggKENPTVBBUkVfU1RSSUNUKTogTmV3IG1hY3JvLgoJKENPTVBBUkVfQkFTRSk6IExpa2V3aXNlLgoJKENPTVBBUkVfUkVMQVhFRCk6IExpa2V3aXNlLgoJKENPTVBBUkVfUkVERUNMQVJBVElPTik6IExpa2V3aXNlLgoJKHNhbWVfdHlwZV9wKTogTGlrZXdpc2UuCgkoc2FtZV9vcl9iYXNlX3R5cGVfcCk6IExpa2V3aXNlLgoJKiBjYWxsLmMgKHN0YW5kYXJkX2NvbnZlcnNpb24pOiBVc2UgdGhlbSwgaW4gcGxhY2Ugb2YgY29tcHR5cGVzCgl3aXRoIG51bWVyaWMgYXJndW1lbnRzLgoJKHJlZmVyZW5jZV9iaW5kaW5nKTogTGlrZXdpc2UuCgkoY29udmVydF9saWtlKTogTGlrZXdpc2UuCgkoYnVpbGRfb3Zlcl9jYWxsKTogTGlrZXdpc2UuCgkoaXNfc3Vic2VxKTogTGlrZXdpc2UuCgkoaXNfcHJvcGVybHlfZGVyaXZlZF9mcm9tKTogTGlrZXdpc2UuCgkoY29tcGFyZV9pY3MpOiBMaWtld2lzZS4KCShqb3VzdCk6IExpa2V3aXNlLgoJKiBjbGFzcy5jIChkZWxldGVfZHVwbGljYXRlX2ZpZWxkc18xKTogTGlrZXdpc2UuCgkocmVzb2x2ZXNfdG9fZml4ZWRfdHlwZV9wKTogTGlrZXdpc2UuCgkoaW5zdGFudGlhdGVfdHlwZSk6IExpa2V3aXNlLiAgUmVtb3ZlICNpZiAwJ2QgY29kZS4KCSogZGVjbC5jIChkZWNsc19tYXRjaCk6IExpa2V3aXNlLiAgVXNlIENPTVBBUkVfUkVERUNMQVJBVElPTiBoZXJlLgoJKHB1c2hkZWNsKTogTGlrZXdpc2UuCgkobG9va3VwX25hbWVfcmVhbCk6IExpa2V3aXNlLgoJKGdyb2tkZWNsYXJhdG9yKTogTGlrZXdpc2UuICBDaGVjayBmb3IgaWxsZWdhbCBhcnJheSBkZWNsYXJhdGlvbnMuCgkoZ3Jva3Bhcm1zKTogTGlrZXdpc2UuCgkoZ3Jva19vcF9wcm9wZXJ0aWVzKTogTGlrZXdpc2UuCgkqIGRlY2wyLmMgKGNoZWNrX2NsYXNzZm4pOiBMaWtld2lzZS4KCSogZnJpZW5kLmMgKGlzX2ZyaWVuZCk6IExpa2V3aXNlLgoJKG1ha2VfZnJpZW5kX2NsYXNzKTogTGlrZXdpc2UuCgkqIGluaXQuYyAoZXhwYW5kX2FnZ3JfaW5pdCk6IExpa2V3aXNlLgoJKGV4cGFuZF92ZWNfaW5pdCk6IExpa2V3aXNlLgoJKiBwdC5jIChpc19tZW1iZXJfdGVtcGxhdGVfY2xhc3MpOiBSZW1vdmUgZGVjbGFyYXRpb24uCgkoaXNfc3BlY2lhbGl6YXRpb25fb2YpOiBVc2UgQ09NUEFSRV8qIGFuZCBuZXcgbWFjcm9zLgoJKGNvbXBfdGVtcGxhdGVfcGFybXMpOiBMaWtld2lzZS4KCShjb252ZXJ0X25vbnR5cGVfYXJndW1lbnQpOiBMaWtld2lzZS4KCShjb2VyY2VfdGVtcGxhdGVfdGVtcGxhdGVfcGFybXMpOiBMaWtld2lzZS4KCSh0ZW1wbGF0ZV9hcmdzX2VxdWFsKTogTGlrZXdpc2UuCgkobG9va3VwX3RlbXBsYXRlX2NsYXNzKTogTGlrZXdpc2UuCgkodHlwZV91bmlmaWNhdGlvbl9yZWFsKTogTGlrZXdpc2UuCgkodW5pZnkpOiBMaWtld2lzZS4KCShnZXRfYmluZGluZ3NfcmVhbCk6IExpa2V3aXNlLgoJKiBzZWFyY2guYyAoY292YXJpYW50X3JldHVybl9wKTogTGlrZXdpc2UuCgkoZ2V0X21hdGNoaW5nX3ZpcnR1YWwpOiBMaWtld2lzZS4KCSogc2lnLmMgKG1hdGNoX21ldGhvZF90eXBlcyk6IExpa2V3aXNlLgoJKiB0cmVlLmMgKHZlY19iaW5mb19tZW1iZXIpOiBMaWtld2lzZS4KCShjcF90cmVlX2VxdWFsKTogTGlrZXdpc2UuCgkqIHR5cGVjay5jIChjb21tb25fdHlwZSk6IExpa2V3aXNlLgoJKGNvbXBfYXJyYXlfdHlwZXMpOiBMaWtld2lzZS4gIEdldCBpc3N1ZXMgaW52b2x2aW5nIHVua25vd24gYXJyYXkKCWJvdW5kcyByaWdodC4KCShjb21wdHlwZXMpOiBVcGRhdGUgY29tbWVudHMuICBVc2UgbmV3IGZsYWdzLgoJKGNvbXBfdGFyZ2V0X3R5cGVzKTogVXNlIG5ldyBtYWNyb3MuCgkoY29tcHBhcm1zKTogTGlrZXdpc2UuCgkoY29tcF90YXJnZXRfcGFybXMpOiBMaWtld2lzZS4KCShzdHJpbmdfY29udl9wKTogTGlrZXdpc2UuCgkoYnVpbGRfY29tcG9uZW50X3JlZik6IExpa2V3aXNlLgoJKGJ1aWxkX2luZGlyZWN0X3JlZik6IExpa2V3aXNlLgoJKGJ1aWxkX2NvbmRpdGlvbmFsX2V4cHIpOiBMaWtld2lzZS4KCShidWlsZF9zdGF0aWNfY2FzdCk6IExpa2V3aXNlLgoJKGJ1aWxkX3JlaW50ZXJwcmV0X2Nhc3QpOiBMaWtld2lzZS4KCShidWlsZF9jb25zdF9jYXN0KTogTGlrZXdpc2UuCgkoYnVpbGRfbW9kaWZ5X2V4cHIpOiBMaWtld2lzZS4KCShjb252ZXJ0X2Zvcl9hc3NpZ25tZW50KTogTGlrZXdpc2UuCgkoY29tcF9wdHJfdHR5cGVzX3JlYWwpOiBMaWtld2lzZS4KCShwdHJfcmVhc29uYWJseV9zaW1pbGFyKTogTGlrZXdpc2UuCgkoY29tcF9wdHJfdHR5cGVzX2NvbnN0KTogTGlrZXdpc2UuCgoxOTk4LTEwLTMxICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBydHRpLmMgKGJ1aWxkX2R5bmFtaWNfY2FzdF8xKTogRml4IGN1dC1hbmQtcGFzdGUgZXJyb3IuCgoxOTk4LTEwLTMwICBNYXJrIE1pdGNoZWxsICA8bWFya0BtYXJrbWl0Y2hlbGwuY29tPgoKCSogZGVjbDIuYyAoZGVsZXRlX3Nhbml0eSk6IFBhc3MgaW50ZWdlcl96ZXJvX25vZGUsIG5vdAoJaW50ZWdlcl90d29fbm9kZSwgdG8gYnVpbGRfdmVjX2RlbGV0ZS4KCSogaW5pdC5jIChidWlsZF9hcnJheV9laF9jbGVhbnVwKTogUmVtb3ZlLgoJKGV4cGFuZF92ZWNfaW5pdF90cnlfYmxvY2spOiBOZXcgZnVuY3Rpb24uCgkoZXhwYW5kX3ZlY19pbml0X2NhdGNoX2NsYXVzZSk6IExpa2V3aXNlLgoJKGJ1aWxkX3ZlY19kZWxldGVfMSk6IERvbid0IGRlYWwgd2l0aCBjYXNlIHRoYXQgYXV0b19kZWxldGVfdmVjCgltaWdodCBiZSBpbnRlZ2VyX3R3b19ub2RlIGFueW1vcmUuCgkoZXhwYW5kX3ZlY19pbml0KTogUmV3b3JrIGZvciBpbml0aWFsaXphdGlvbi1jb3JyZWN0bmVzcyBhbmQKCWV4Y2VwdGlvbi1jb3JyZWN0bmVzcy4KCSogdHlwZWNrMi5jIChwcm9jZXNzX2luaXRfY29uc3RydWN0b3IpOiBNYWtlIG11dHVhbCBleGNsdXNpdml0eQoJb2YgY2FzZXMgbW9yZSBvYnZpb3VzLgoKMTk5OC0xMC0yOSAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogZGVjbC5jIChsb29rdXBfbmFtZV9yZWFsKTogT0ssIG9ubHkgd2FybiBpZiBub3QgbGV4aW5nLgoJU2ltcGxpZnkgc3VnZ2VzdGVkIGZpeC4KCgkqIGNwLXRyZWUuaCAoSURFTlRJRklFUl9NQVJLRUQpOiBOZXcgbWFjcm8uCgkqIHNlYXJjaC5jIChsb29rdXBfY29udmVyc2lvbnMpOiBVc2UgYnJlYWR0aF9maXJzdF9zZWFyY2guCgkoYWRkX2NvbnZlcnNpb25zKTogQXZvaWQgYWRkaW5nIHR3byBjb252ZXJzaW9ucyB0byB0aGUgc2FtZSB0eXBlLgoJKGJyZWFkdGhfZmlyc3Rfc2VhcmNoKTogV29yayB3aXRoIGJhc2UgYmluZm9zLCByYXRoZXIKCXRoYW4gYmluZm9zIGFuZCBiYXNlIGluZGljZXMuCgkoZ2V0X3ZpcnR1YWxfZGVzdHJ1Y3Rvcik6IEFkanVzdC4KCSh0cmVlX2hhc19hbnlfZGVzdHJ1Y3Rvcl9wKTogQWRqdXN0LgoJKGdldF9tYXRjaGluZ192aXJ0dWFsKTogQWRqdXN0LgoKCSogcHQuYyAocHVzaF90ZW1wbGF0ZV9kZWNsX3JlYWwpOiBHZW5lcmFsaXplIGNoZWNrIGZvciBpbmNvcnJlY3QKCW51bWJlciBvZiB0ZW1wbGF0ZSBwYXJtcy4KCShpc19tZW1iZXJfdGVtcGxhdGVfY2xhc3MpOiAjaWYgMC4KCjE5OTgtMTAtMjkgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgoJKiBNYWtlZmlsZS5pbiAoY2MxcGx1cyk6IFB1dCBDWFhfT0JKUywgYW5kIHRoZW5jZSBAZXh0cmFfY3h4X29ianNALAoJbGFzdC4KCjE5OTgtMTAtMjggIFphY2sgV2VpbmJlcmcgIDx6YWNrQHJhYmkucGh5cy5jb2x1bWJpYS5lZHU+CgoJKiBsZXguYzogQ2FsbCBjaGVja19uZXdsaW5lIGZyb20gbGFuZ19pbml0IGFsd2F5cy4gIEFmdGVyCgljYWxsaW5nIGNwcF9zdGFydF9yZWFkLCBzZXQgeXlfY3VyIGFuZCB5eV9saW0gdG8gcmVhZCBmcm9tIHRoZQoJY3BwbGliIHRva2VuIGJ1ZmZlci4KCjE5OTgtMTAtMjggIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIGNsYXNzLmMgKGluc3RhbnRpYXRlX3R5cGUpOiBEb24ndCBjb25zaWRlciB0ZW1wbGF0ZXMgZm9yIGEgbm9ybWFsCgltYXRjaC4KCgkqIGNsYXNzLmMgKGZpbmlzaF9zdHJ1Y3RfMSk6IERvbid0IGNvbXBsYWluIGFib3V0IG5vbi1jb3B5Cglhc3NpZ25tZW50IG9wcyBpbiB1bmlvbiBtZW1iZXJzLgoKCSogY2xhc3MuYyAoYnVpbGRfdnRhYmxlKTogRG9uJ3QgcGFzcyBhdF9lb2YgdG8gaW1wb3J0X2V4cG9ydF92dGFibGUuCgkocHJlcGFyZV9mcmVzaF92dGFibGUpOiBMaWtld2lzZS4KCShmaW5pc2hfc3RydWN0XzEpOiBEb24ndCBjYWxsIGltcG9ydF9leHBvcnRfY2xhc3MuCgkqIGRlY2wyLmMgKGZpbmlzaF92dGFibGVfdmFyZGVjbCk6IERvIGltcG9ydC9leHBvcnQgc3R1ZmYuCgkoZmluaXNoX3ByZXZ0YWJsZV92YXJkZWNsKTogTG9zZS4KCShmaW5pc2hfZmlsZSk6IERvbid0IGNhbGwgaXQuCgkqIHB0LmMgKGluc3RhbnRpYXRlX2NsYXNzX3RlbXBsYXRlKTogTGlrZXdpc2UuCgkqIGNwLXRyZWUuaDogUmVtb3ZlIGl0LgoKCSogaW5pdC5jIChidWlsZF9kZWxldGUpOiBSZXNldCBUWVBFX0hBU19ERVNUUlVDVE9SIGhlcmUuCgkqIGRlY2wuYyAoZmluaXNoX2Z1bmN0aW9uKTogTm90IGhlcmUuCgkoc3RhcnRfZnVuY3Rpb24pOiBEbyBzZXQgREVDTF9JTklUSUFMLgoKCSogcHQuYyAocHVzaF90ZW1wbGF0ZV9kZWNsX3JlYWwpOiBDb21wbGFpbiBhYm91dCBkZWZhdWx0IHRlbXBsYXRlCglhcmdzIGZvciBlbmNsb3NpbmcgY2xhc3Nlcy4KCgkqIGNhbGwuYyAoYWRkX2Z1bmN0aW9uX2NhbmRpZGF0ZSk6IFRyZWF0IGNvbnZlcnNpb24gZnVuY3Rpb25zCglhcyBjb21pbmcgZnJvbSB0aGUgYXJndW1lbnQncyBjbGFzcy4KCSogY3AtdHJlZS5oIChERUNMX0NPTlZfRk5fUCk6IE5ldyBmbi4KCShERUNMX0RFU1RSVUNUT1JfUCk6IEFsc28gY2hlY2sgREVDTF9MQU5HVUFHRS4KCSogY2xhc3MuYyAoYWRkX21ldGhvZCk6IFVzZSBERUNMX0NPTlZfRk5fUC4KCSogZGVjbDIuYyAoY2hlY2tfY2xhc3Nmbik6IExpa2V3aXNlLgoJKiBlcnJvci5jIChkdW1wX2Z1bmN0aW9uX25hbWUpOiBMaWtld2lzZS4KCShkdW1wX2Z1bmN0aW9uX2RlY2wpOiBMaWtld2lzZS4KCSogcHQuYyAoZm5fdHlwZV91bmlmaWNhdGlvbik6IExpa2V3aXNlLgoJKiBzZWFyY2guYyAoYWRkX2NvbnZlcnNpb25zKTogTGlrZXdpc2UuCgoxOTk4LTEwLTI3ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBsZXguYyAoZG9faWRlbnRpZmllcik6IEFsc28gZ2VuZXJhdGUgTE9PS1VQX0VYUFIgZm9yIFJFU1VMVF9ERUNMLgoJKiBtZXRob2QuYyAoaGFja19pZGVudGlmaWVyKTogQWxzbyBjaGVjayBmb3IgdXNpbmcgUkVTVUxUX0RFQ0wKCWZyb20gb3V0ZXIgY29udGV4dC4KCjE5OTgtMTAtMjcgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQG1hcmttaXRjaGVsbC5jb20+CgoJKiBkZWNsLmMgKGdyb2tkZWNsYXJhdG9yKTogVXNlIHR5cGVfcXVhbHMsIHJhdGhlciB0aGFuIGNvbnN0cCwKCWNvbnNpc3RlbnRseS4KCjE5OTgtMTAtMjcgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIGNhbGwuYyAoc3RhbmRhcmRfY29udmVyc2lvbik6IGluc3RhbnRpYXRlX3R5cGUgaGVyZS4KCShyZWZlcmVuY2VfYmluZGluZyk6IEFuZCBoZXJlLgoJKGltcGxpY2l0X2NvbnZlcnNpb24pOiBOb3QgaGVyZS4KCShidWlsZF9vcF9kZWxldGVfY2FsbCk6IE5vIG5lZWQgdG8gY29ucyB1cCBhbiBPVkVSTE9BRC4KCSogY3Z0LmMgKGNwX2NvbnZlcnRfdG9fcG9pbnRlcik6IGluc3RhbnRpYXRlX3R5cGUgaGVyZS4KCShjb252ZXJ0X3RvX3JlZmVyZW5jZSk6IEFuZCBoZXJlLgoJKiBkZWNsLmMgKGdyb2tfcmVmZXJlbmNlX2luaXQpOiBOb3QgaGVyZS4KCShncm9rcGFybXMpOiBPciBoZXJlLgoJKiB0eXBlY2syLmMgKGRpZ2VzdF9pbml0KTogT3IgaGVyZS4KCSogdHlwZWNrLmMgKGRlY2F5X2NvbnZlcnNpb24pOiBUYWtlIHRoZSBhZGRyZXNzIG9mIG92ZXJsb2FkZWQKCWZ1bmN0aW9ucywgdG9vLgoJKHJlcXVpcmVfaW5zdGFudGlhdGVkX3R5cGUpOiBMb3NlLgoJKGNvbnZlcnRfYXJndW1lbnRzKTogRG9uJ3QgaGFuZGxlIHVua25vd24gdHlwZXMgaGVyZS4KCShidWlsZF9jX2Nhc3QpOiBMaWtld2lzZS4KCShidWlsZF9iaW5hcnlfb3ApOiBHdXQuCgkoYnVpbGRfY29uZGl0aW9uYWxfZXhwcik6IERvbid0IHJlcXVpcmVfaW5zdGFudGlhdGVkX3R5cGUuCgkoYnVpbGRfbW9kaWZ5X2V4cHIpOiBMaWtld2lzZS4KCShidWlsZF9zdGF0aWNfY2FzdCk6IERvbid0IGluc3RhbnRpYXRlX3R5cGUuCgkoYnVpbGRfcmVpbnRlcnByZXRfY2FzdCk6IExpa2V3aXNlLgoJKGJ1aWxkX2NvbnN0X2Nhc3QpOiBMaWtld2lzZS4KCShjb252ZXJ0X2Zvcl9pbml0aWFsaXphdGlvbik6IExpa2V3aXNlLgoJKGJ1aWxkX3B0cm1lbWZ1bmMpOiBVc2UgdHlwZV91bmtub3duX3AuCgkoY29udmVydF9mb3JfYXNzaWdubWVudCk6IEFsc28gZG8gZGVmYXVsdF9jb252ZXJzaW9uIG9uIG92ZXJsb2FkZWQKCWZ1bmN0aW9ucy4gIEhhbmQgdGhlbSBvZmYgdG8gb2NwX2NvbnZlcnQuCgoxOTk4LTEwLTI2ICBNYXJrIE1pdGNoZWxsICA8bWFya0BtYXJrbWl0Y2hlbGwuY29tPgoKCSogZXJyb3IuYyAoZHVtcF9kZWNsKTogRGVhbCB3aXRoIFRFTVBMQVRFX0RFQ0xzIHRoYXQgYXJlCglWQVJfREVDTHMuICBIYW5kbGUgdnRhYmxlcyB3aG9zZSBERUNMX0NPTlRFWFQgaXMgbm90IGEgdHlwZS4KCgkqIGNsYXNzLmMgKGZpbmlzaF9zdHJ1Y3RfMSk6IFVzZSBidWlsZF9jcGx1c19hcnJheV90eXBlIHRvIGJ1aWxkCglhcnJheSB0eXBlcy4KCSogZGVjbC5jIChpbml0X2RlY2xfcHJvY2Vzc2luZyk6IExpa2V3aXNlLgoJKiBleGNlcHQuYyAoZXhwYW5kX2VuZF9laF9zcGVjKTogTGlrZXdpc2UuCgkqIHNlYXJjaC5jIChleHBhbmRfdXBjYXN0X2ZpeHVwcyk6IFNpbXBsaWZ5IHZlcnkgc2xpZ2h0bHkuCgoxOTk4LTEwLTI2ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBkZWNsLmMgKGdyb2tkZWNsYXJhdG9yKTogQ29tcGxhaW4gYWJvdXQgYSB2YXJpYWJsZSB1c2luZwoJY29uc3RydWN0b3Igc3ludGF4IGNvbWluZyBiYWNrIG51bGwgZnJvbSBzdGFydF9kZWNsLgoKCSogZnJpZW5kLmMgKG1ha2VfZnJpZW5kX2NsYXNzKTogQ29tcGxhaW4gYWJvdXQgdHJ5aW5nIHRvIG1ha2UKCWEgbm9uLWNsYXNzIHR5cGUgYSBmcmllbmQuCgoJKiBkZWNsLmMgKGdyb2tmbmRlY2wpOiBTZXQgREVDTF9JTklUSUFMIGZvciBhIGRlZm4gaGVyZS4KCShzdGFydF9mdW5jdGlvbik6IE5vdCBoZXJlLgoKMTk5OC0xMC0yNiAgQnJlbmRhbiBLZWhvZSAgPGJyZW5kYW5AY3lnbnVzLmNvbT4KCgkqIGRlY2wuYyAoZ3Jva2RlY2xhcmF0b3IpOiBEaXNhbGxvdyBgZXhwbGljaXQnIGluIGEgZnJpZW5kIGRlY2xhcmF0aW9uLgoKMTk5OC0xMC0yNiAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogdHlwZWNrMi5jIChwcm9jZXNzX2luaXRfY29uc3RydWN0b3IpOiBPbmx5IHNraXAgYW5vbnltb3VzIGZpZWxkcwoJaWYgdGhleSBhcmUgYml0ZmllbGRzLgoKCSogY3AtdHJlZS5kZWYgKFRZUEVPRl9UWVBFKTogTmV3IGNvZGUuCgkqIGVycm9yLmMgKGR1bXBfdHlwZV9yZWFsKTogSGFuZGxlIGl0LgoJKiBwdC5jICh0c3Vic3QpOiBMaWtld2lzZS4KCSogdHJlZS5jIChzZWFyY2hfdHJlZSk6IExpa2V3aXNlLgoJKiBzZW1hbnRpY3MuYyAoZmluaXNoX3R5cGVvZik6IE5ldyBmbi4KCSogcGFyc2UueSAodHlwZXNwZWMpOiBVc2UgaXQuCgkqIGNwLXRyZWUuaDogRGVjbGFyZSBpdC4KCjE5OTgtMTAtMjYgIE1hbmZyZWQgSG9sbHN0ZWluICA8bWFuZnJlZEBzLWRpcmVrdG5ldC5kZT4KCgkqIGNwLXRyZWUuaCAoRk9STUFUX1ZCQVNFX05BTUUpOiBNYWtlIGRlZmluaXRpb24gdW5jb25kaXRpb25hbC4KCjE5OTgtMTAtMjYgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIHR5cGVjay5jIChjb252ZXJ0X2FyZ3VtZW50cyk6IERvbid0IGhhbmRsZSBwbWYgcmVmZXJlbmNlcwoJc3BlY2lhbGx5LgoKCSogaW5pdC5jIChidWlsZF9tZW1iZXJfY2FsbCk6IERvbid0IHRyeSB0byBjb252ZXJ0IHRvIHRoZSBiYXNlIHR5cGUKCWlmIGl0J3MgYW1iaWd1b3VzIG9yIHBlZGFudGljLgoKCSogdHlwZWNrMi5jIChjaGVja19mb3JfbmV3X3R5cGUpOiBPbmx5IGRlcGVuZCBvbiBwZWRhbnRpYyBmb3IKCUMtc3R5bGUgY2FzdHMuCgoxOTk4LTEwLTI1ICBNYXJrIE1pdGNoZWxsICA8bWFya0BtYXJrbWl0Y2hlbGwuY29tPgoKCSogZGVjbC5jIChncm9rZGVjbGFyYXRvcik6IFNldCBERUNMX05PTkNPTlZFUlRJTkdfUCBmb3IgYWxsCglub24tY29udmVydGluZyBjb25zdHJ1Y3RvcnMuCgoxOTk4LTEwLTI0ICBNYXJ0aW4gdm9uIEz2d2lzICA8bG9ld2lzQGluZm9ybWF0aWsuaHUtYmVybGluLmRlPgoKCSogZ3h4aW50LnRleGk6IENvcnJlY3QgZG9jdW1lbnRhdGlvbiBmb3IgbiwgTiwgUSwgYW5kIEIuCgoxOTk4LTEwLTIzICBNYXJ0aW4gdm9uIEz2d2lzICA8bG9ld2lzQGluZm9ybWF0aWsuaHUtYmVybGluLmRlPgoKCSogcGFyc2UueSAoY29uZGl0aW9uKTogQ29udmVydCBWQVJfREVDTCBmcm9tIHJlZmVyZW5jZSB0byBpbmRpcmVjdAoJcmVmZXJlbmNlLgoKMTk5OC0xMC0yMyAgQW5kcmV3IE1hY0xlb2QgIDxhbWFjbGVvZEBjeWdudXMuY29tPgoKCSogZXhjZXB0aW9uLmNjIChfX2NwX3BvcF9leGNlcHRpb24pOiBGcmVlIHRoZSBvcmlnaW5hbCBleGNlcHRpb24KCXZhbHVlLCBub3QgdGhlIHBvdGVudGlhbGx5IGNvZXJjZWQgb25lLgoKMTk5OC0xMC0yMyAgTWFyayBNaXRjaGVsbCAgPG1hcmtAbWFya21pdGNoZWxsLmNvbT4KCgkqIE1ha2VmaWxlLmluIChoYXNoLmgpOiBSdW4gZ3BlcmYgd2hlbiBuZWNlc3NhcnkuCgoJKiBjcC10cmVlLmggKENQX1RZUEVfUkVBRE9OTFkpOiBSZW1vdmUuCgkoQ1BfVFlQRV9WT0xBVElMRSk6IExpa2V3aXNlLgoJKENQX1RZUEVfUVVBTFMpOiBOZXcgbWFjcm8uCgkoQ1BfVFlQRV9DT05TVF9QKTogTGlrZXdpc2UuCgkoQ1BfVFlQRV9WT0xBVElMRV9QKTogTGlrZXdpc2UuCgkoQ1BfVFlQRV9SRVNUUklDVF9QKTogTGlrZXdpc2UuCgkoQ1BfVFlQRV9DT05TVF9OT05fVk9MQVRJTEVfUCk6IExpa2V3aXNlLgoJKGNwX2J1aWxkX3R5cGVfdmFyaWFudCk6IFJlbmFtZSB0byAuLi4KCShjcF9idWlsZF9xdWFsaWZpZWRfdHlwZSk6IE5ldyBmdW5jdGlvbi4KCShjX2FwcGx5X3R5cGVfcXVhbHNfdG9fZGVjbCk6IERlY2xhcmUuCgkoU0lHTkFUVVJFX1BPSU5URVJfTkFNRV9GT1JNQVQpOiBNb2RpZnkgdG8gYWxsb3cgYHJlc3RyaWN0Jy4KCShTSUdOQVRVUkVfUkVGRVJFTkNFX05BTUVfRk9STUFUKTogTGlrZXdpc2UuCgkoY3BfdHlwZV9xdWFsX2Zyb21fcmlkKTogTmV3IGZ1bmN0aW9uLgoJKGNvbXBwYXJtcyk6IFJlbW92ZSB1bnVzZWQgcGFyYW1ldGVyLiAgQWxsIGNhbGxlcnMgY2hhbmdlZC4KCShjcF90eXBlX3F1YWxzKTogTmV3IGZ1bmN0aW9uLgoJKGF0X2xlYXN0X2FzX3F1YWxpZmllZF9wKTogTGlrZXdpc2UuCgkobW9yZV9xdWFsaWZpZWRfcCk6IExpa2V3aXNlLgoKCSogY2FsbC5jIChzdGFuZGFyZF9jb252ZXJzaW9uKTogUmVwbGFjZSBjYWxscyB0bwoJY3BfYnVpbGRfdHlwZV92YXJpYW50IHdpdGggY3BfYnVpbGRfcXVhbGlmaWVkX3R5cGUuICBVc2UKCUNQX1RZUEVfUVVBTFMgdG8gZ2V0IHF1YWxpZmllcnMgYW5kIGF0X2xlYXN0X2FzX3F1YWxpZmllZF9wIHRvCgljb21wYXJlIHRoZW0uICBVc2UgQ1BfVFlQRV8qIG1hY3JvcyB0byBjaGVjayBxdWFsaWZpZXJzLgoJKHJlZmVyZW5jZV9iaW5kaW5nKTogTGlrZXdpc2UuCgkoaW1wbGljaXRfY29udmVyc2lvbik6IExpa2V3aXNlLgoJKGFkZF9idWlsdGluX2NhbmRpZGF0ZXMpOiBMaWtld2lzZS4KCShidWlsZF9vdmVyX2NhbGwpOiBMaWtld2lzZS4KCSogY2xhc3MuYyAob3ZlcnJpZGVzKTogQ29tcGFyZSBhbGwgcXVhbGlmaWVycywgbm90IGp1c3QgYGNvbnN0JywKCW9uIG1ldGhvZCBkZWNsYXJhdGlvbnMuCgkqIGN2dC5jIChjb252ZXJ0X3RvX3JlZmVyZW5jZSk6IE1vcmUgQ1BfVFlQRV9RVUFMUyBjb252ZXJzaW9uLCBldGMuCgkoY29udmVydF9wb2ludGVyX3RvX3JlYWwpOiBMaWtld2lzZS4KCSh0eXBlX3Byb21vdGVzX3RvKTogTGlrZXdpc2UuCgkqIGRlY2wuYyAoY2hlY2tfZm9yX3VuaW5pdGlhbGl6ZWRfY29uc3RfdmFyKTogTmV3IGZ1bmN0aW9uLgoJKGluaXRfZGVjbF9wcm9jZXNzaW5nKTogTW9yZSBDUF9UWVBFX1FVQUxTIGNvbnZlcnNpb24sIGV0Yy4KCShjcF9maW5pc2hfZGVjbCk6IFVzZSBjaGVja19mb3JfdW5pbml0aWFsaXplZF9jb25zdF92YXIuCgkoZ3Jva2RlY2xhcmF0b3IpOiBNb3JlIENQX1RZUEVfUVVBTFMgY29udmVyc2lvbiwgZXRjLiAgVXBkYXRlIHRvCgloYW5kbGUgYHJlc3RyaWN0Jy4KCShncm9rX2N0b3JfcHJvcGVydGllcyk6IExpa2V3aXNlLgoJKGdyb2tfb3BfcHJvcGVydGllcyk6IExpa2V3aXNlLgoJKHN0YXJ0X2Z1bmN0aW9uKTogTGlrZXdpc2UuCgkocmV2ZXJfc3RhdGljX21lbWJlcl9mbik6IExpa2V3aXNlLgoJKiBkZWNsMi5jIChncm9rX21ldGhvZF9xdWFscyk6IExpa2V3aXNlLgoJKGdyb2tmaWVsZCk6IExpa2V3aXNlLgoJKiBlcnJvci5jIChkdW1wX3JlYWRvbmx5X29yX3ZvbGF0aWxlKTogUmVuYW1lIHRvIC4uLgoJKGR1bXBfcXVhbGlmaWVycyk6IE5ldyBmdW5jdGlvbi4gIEhhbmRsZSBgcmVzdHJpY3QnLgoJKGR1bXBfdHlwZV9yZWFsKTogVXNlIGl0LgoJKGR1bXBfYWdncl90eXBlKTogTGlrZXdpc2UuCgkoZHVtcF90eXBlX3ByZWZpeCk6IExpa2V3aXNlLgoJKGR1bXBfdHlwZV9zdWZmaXgpOiBMaWtld2lzZS4KCShkdW1wX2Z1bmN0aW9uX2RlY2wpOiBMaWtld2lzZS4KCShjdl9hc19zdHJpbmcpOiBMaWtld2lzZS4KCSogZ3h4LmdwZXJmOiBBZGQgX19yZXN0cmljdCBhbmQgX19yZXN0cmljdF9fLgoJKiBneHhpbnQudGV4aTogRG9jdW1lbnQgYHUnIGFzIHVzZWQgZm9yIGBfX3Jlc3RyaWN0JywgYW5kIGEgZmV3CglvdGhlciBwcmV2aW91c2x5IHVuZG9jdW1lbnRlZCBjb2Rlcy4KCSogaGFzaC5oOiBSZWdlbmVyYXRlZC4KCSogaW5pdC5jIChleHBhbmRfYWdncl9pbml0KTogTW9yZSBDUF9UWVBFX1FVQUxTIGNvbnZlcnNpb24sIGV0Yy4KCShidWlsZF9tZW1iZXJfY2FsbCk6IExpa2V3aXNlLgoJKGJ1aWxkX25ld18xKTogTGlrZXdpc2UuCgkqIGxleC5jIChpbml0X3BhcnNlKTogQWRkIGVudHJ5IGZvciBSSURfUkVTVFJJQ1QuCgkoY29uc191cF9kZWZhdWx0X2Z1bmN0aW9uKTogTW9yZSBDUF9UWVBFX1FVQUxTIGNvbnZlcnNpb24sIGV0Yy4KCShjcF90eXBlX3F1YWxfZnJvbV9yaWQpOiBEZWZpbmUuCgkqIGxleC5oIChlbnVtIHJpZCk6IEFkZCBSSURfUkVTVFJJQ1QuCgkqIG1ldGhvZC5jIChwcm9jZXNzX21vZGlmaWVycyk6IERlYWwgd2l0aCBgcmVzdHJpY3QnLgoJKiBwYXJzZS55IChwcmltYXJ5KTogTW9yZSBDUF9UWVBFX1FVQUxTIGNvbnZlcnNpb24sIGV0Yy4KCSogcGFyc2UuYzogUmVnZW5lcmF0ZWQuCgkqIHB0LmMgKGNvbnZlcnRfbm9udHlwZV9hcmd1bWVudCk6IE1vcmUgQ1BfVFlQRV9RVUFMUyBjb252ZXJzaW9uLCBldGMuCgkodHN1YnN0X2FnZ3JfdHlwZSk6IExpa2V3aXNlLgoJKHRzdWJzdCk6IExpa2V3aXNlLgoJKGNoZWNrX2N2X3F1YWxzX2Zvcl91bmlmeSk6IExpa2V3aXNlLgoJKHVuaWZ5KTogTGlrZXdpc2UuCgkqIHJ0dGkuYyAoaW5pdF9ydHRpX3Byb2Nlc3NpbmcpOiBMaWtld2lzZS4KCShidWlsZF9oZWFkb2YpOiBMaWtld2lzZS4KCShnZXRfdGluZm9fdmFyKTogTGlrZXdpc2UuCgkoYnVpZGxfZHluYW1pY19jYXN0XzEpOiBMaWtld2lzZS4gIEZpeCBgdm9sYXRpbGUnIGhhbmRsaW5nLgoJKGV4cGFuZF9jbGFzc19kZXNjKTogTGlrZXdpc2UuCgkoZXhwYW5kX2F0dHJfZGVzYyk6IExpa2V3aXNlLgoJKHN5bnRoZXNpemVfdGluZm9fZm4pOiBMaWtld2lzZS4KCSogc2VhcmNoLmMgKGNvdmFyaWFudF9yZXR1cm5fcCk6IExpa2V3aXNlLiAgRml4IGB2b2xhdGlsZScgaGFuZGxpbmcuCgkoZ2V0X21hdGNoaW5nX3ZpcnR1YWwpOiBMaWtld2lzZS4KCShleHBhbmRfdXBjYXN0X2ZpeHVwcyk6IExpa2V3aXNlLgoJKiBzaWcuYyAoYnVpbGRfc2lnbmF0dXJlX3BvaW50ZXJfb3JfcmVmZXJlbmNlX25hbWUpOiBUYWtlCgl0eXBlX3F1YWxzLCBub3QgY29uc3RwIGFuZCB2b2xhdGlsZXAuCgkoYnVpbGRfc2lnbmF0dXJlX3BvaW50ZXJfb3JfcmVmZXJlbmNlX3R5cGUpOiBMaWtld2lzZS4KCShtYXRjaF9tZXRob2RfdHlwZXMpOiBNb3JlIENQX1RZUEVfUVVBTFMgY29udmVyc2lvbiwgZXRjLgoJKGJ1aWxkX3NpZ25hdHVyZV9wb2ludGVyX2NvbnN0cnVjdG9yKTogTGlrZXdpc2UuCgkoYnVpbGRfc2lnbmF0dXJlX21ldGhvZF9jYWxsKTogTGlrZXdpc2UuCgkqIHRyZWUuYyAoYnVpbGRfY3BsdXNfYXJyYXlfdHlwZSk6IExpa2V3aXNlLgoJKGNwX2J1aWxkX3R5cGVfdmFyaWFudCk6IFJlbmFtZSB0byAuLi4KCShjcF9idWlsZF9xdWFsaWZpZWRfdHlwZSk6IE5ldyBmdW5jdGlvbi4gIERlYWwgd2l0aCBgX19yZXN0cmljdCcuCgkoY2Fub25pY2FsX3R5cGVfdmFyaWFudCk6IE1vcmUgQ1BfVFlQRV9RVUFMUyBjb252ZXJzaW9uLCBldGMuCgkoYnVpbGRfZXhjZXB0aW9uX3ZhcmlhbnQpOiBMaWtld2lzZS4KCShtYXBjYXIpOiBMaWtld2lzZS4KCSogdHlwZWNrLmMgKHF1YWxpZl90eXBlKTogTGlrZXdpc2UuCgkoY29tbW9uX3R5cGUpOiBMaWtld2lzZS4KCShjb21wdHlwZXMpOiBMaWtld2lzZS4KCShjb21wX2N2X3RhcmdldF90eXBlcyk6IExpa2V3aXNlLgoJKGF0X2xlYXN0X2FzX3F1YWxpZmllZF9wKTogRGVmaW5lLgoJKG1vcmVfcXVhbGlmaWVkX3ApOiBMaWtld2lzZS4KCShjb21wX2N2X3F1YWxpZmljYXRpb24pOiBNb3JlIENQX1RZUEVfUVVBTFMgY29udmVyc2lvbiwgZXRjLgoJKGNvbXBwYXJtcyk6IExpa2V3aXNlLgoJKGlubGluZV9jb252ZXJzaW9uKTogTGlrZXdpc2UuCgkoc3RyaW5nX2NvbnZfcCk6IExpa2V3aXNlLgoJKGJ1aWxkX2NvbXBvbmVudF9yZWYpOiBMaWtld2lzZS4KCShidWlsZF9pbmRpcmVjdF9yZWYpOiBMaWtld2lzZS4KCShidWlsZF9hcnJheV9yZWYpOiBMaWtld2lzZS4KCShidWlsZF91bmFyeV9vcCk6IExpa2V3aXNlLgoJKGJ1aWxkX2NvbmRpdGlvbmFsX2V4cHIpOiBMaWtld2lzZS4KCShidWlsZF9zdGF0aWNfY2FzdCk6IExpa2V3aXNlLgoJKGJ1aWxkX2NfY2FzdCk6IExpa2V3aXNlLgoJKGJ1aWxkX21vZGlmeV9leHByKTogTGlrZXdpc2UuCgkoY29udmVydF9Gb3JfYXNzaWdubWVudCk6IExpa2V3aXNlLgoJKGNvbXBfcHRyX3R0eXBlc19yZWFsKTogTGlrZXdpc2UuCgkoY3BfdHlwZV9xdWFscyk6IE5ldyBmdW5jdGlvbi4KCjE5OTgtMTAtMjMgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIGNwLXRyZWUuaCAoQ1BfVFlQRV9SRUFET05MWSk6IE5ldyBtYWNybyB0byBoYW5kbGUgYXJyYXlzLgoJKENQX1RZUEVfVk9MQVRJTEUpOiBMaWtld2lzZS4KCSogZGVjbC5jIChncm9rZGVjbGFyYXRvcik6IFVzZSB0aGVtLgoJKiB0cmVlLmMgKGNhbm9uaWNhbF90eXBlX3ZhcmlhbnQpOiBMaWtld2lzZS4KCjE5OTgtMTAtMjIgIE1hcnRpbiB2b24gTPZ3aXMgIDxsb2V3aXNAaW5mb3JtYXRpay5odS1iZXJsaW4uZGU+CgoJKiBwYXJzZS55IChuYW1lZF9jbGFzc19oZWFkKTogUHVzaCBpbnRvIGNsYXNzIHdoaWxlIHBhcnNpbmcgdGhlCgliYXNlIGNsYXNzIGxpc3QuCgkqIGRlY2wyLmMgKHB1c2hfc2NvcGUsIHBvcF9zY29wZSk6IE5ldyBmdW5jdGlvbnMuCgkqIGNwLXRyZWUuaDogRGVjbGFyZSB0aGVtLgoJKiBpbml0LmMgKGJ1aWxkX25ld18xKTogRGVsYXkgY2xlYW51cCB1bnRpbCBlbmQgb2YgZnVsbCBleHByZXNzaW9uLgoKMTk5OC0xMC0yMSAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogdHlwZWNrLmMgKGJ1aWxkX2NvbXBvbmVudF9yZWYpOiBVc2Ugb2YgYSB0eXBlIGhlcmUgaXMgYW4gZXJyb3IuCgoxOTk4LTEwLTE5ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJUmV2YW1wIHJlZmVyZW5jZXMgdG8gbWVtYmVyIGZ1bmN0aW9ucy4KCSogbWV0aG9kLmMgKGhhY2tfaWRlbnRpZmllcik6IENhbGwgYnVpbGRfY29tcG9uZW50X3JlZiBmb3IgYQoJcmVmZXJlbmNlIHRvIGEgbWVtYmVyIGZ1bmN0aW9uLgoJKiB0eXBlY2suYyAoYnVpbGRfY29tcG9uZW50X3JlZik6IE9ubHkgcmV0dXJuIGEgc2luZ2xlIGZ1bmN0aW9uCglpZiBpdCdzIHN0YXRpYy4gIE90aGVyd2lzZSwgcmV0dXJuIGEgQ09NUE9ORU5UX1JFRi4KCShidWlsZF94X2Z1bmN0aW9uX2NhbGwpOiBIYW5kbGUgYSBDT01QT05FTlRfUkVGLgoJKGJ1aWxkX3VuYXJ5X29wKTogSGFuZGxlIGFsbCB1bmtub3duLXR5cGUgdGhpbmdzLgoJKiBkZWNsMi5jIChhcmdfYXNzb2MpOiBIYW5kbGUgQ09NUE9ORU5UX1JFRi4KCSogY2xhc3MuYyAoaW5zdGFudGlhdGVfdHlwZSk6IENvbXBsYWluIGlmIHRoZSBmdW5jdGlvbiB3ZSBnZXQgaXMgYQoJbm9uc3RhdGljIG1lbWJlciBmdW5jdGlvbi4gIFJlbW92ZSBjb2RlIGZvciBmaW5kaW5nICJjb21wYXRpYmxlIgoJZnVuY3Rpb25zLgoJKiBwdC5jICh0c3Vic3RfY29weSk6IEhhbmRsZSBOT1BfRVhQUi4KCSogdHJlZS5jIChidWlsZF9kdW1teV9vYmplY3QpOiBOZXcgZm4uCgkobWF5YmVfZHVtbXlfb2JqZWN0KTogTmV3IGZuLgoJKGlzX2R1bW15X29iamVjdCk6IE5ldyBmbi4KCSogY3AtdHJlZS5oOiBEZWNsYXJlIHRoZW0uCgkqIGN2dC5jIChjcF9jb252ZXJ0X3RvX3BvaW50ZXIpOiBVc2UgbWF5YmVfZHVtbXlfb2JqZWN0LgoJKiBlcnJvci5jIChkdW1wX2V4cHIsIGNhc2UgT0ZGU0VUX1JFRik6IFVzZSBpc19kdW1teV9vYmplY3QuCgkqIGluaXQuYyAoYnVpbGRfbWVtYmVyX2NhbGwpOiBVc2UgbWF5YmVfZHVtbXlfb2JqZWN0IGFuZAoJaXNfZHVtbXlfb2JqZWN0LgoJKGJ1aWxkX29mZnNldF9yZWYpOiBVc2UgbWF5YmVfZHVtbXlfb2JqZWN0LgoJKHJlc29sdmVfb2Zmc2V0X3JlZik6IFVzZSBpc19kdW1teV9vYmplY3QuCgkqIHR5cGVjay5jIChidWlsZF94X2Z1bmN0aW9uX2NhbGwpOiBDYWxsIGJ1aWxkX2R1bW15X29iamVjdC4KCSh1bmFyeV9jb21wbGV4X2x2YWx1ZSk6IENhbGwgaXNfZHVtbXlfb2JqZWN0LgoKCSogdHlwZWNrLmMgKGJ1aWxkX2NvbXBvbmVudF9hZGRyKTogTWFrZSBzdXJlIGZpZWxkIGlzIGEgZmllbGQuCgoJKiBjYWxsLmMgKGJ1aWxkX25ld19vcCk6IERlbGV0ZSBvYnNvbGV0ZSBjb2RlLgoKCSogcHQuYyAodHN1YnN0LCBURU1QTEFURSpQQVJNKik6IEFib3J0IGlmIHdlIGRvbid0IGhhdmUgYW55IGFyZ3MuCgoxOTk4LTEwLTE4ICBNYXJ0aW4gdm9uIEz2d2lzICA8bG9ld2lzQGluZm9ybWF0aWsuaHUtYmVybGluLmRlPgoKCSogZGVjbDIuYyAodmFsaWRhdGVfbm9ubWVtYmVyX3VzaW5nX2RlY2wpOiBGaXggdXNpbmctZGlyZWN0aXZlcyBvZgoJc3RkIGlmIHN0ZCBpcyBpZ25vcmVkLgoKMTk5OC0xMC0xOCAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogZGVjbC5jIChncm9rdmFyZGVjbCk6IEZpeCB0aGlua28uCgoJKiBkZWNsLmMgKGdyb2tkZWNsYXJhdG9yKTogRW1iZWRkZWQgYXR0cnMgYmluZCB0byB0aGUgcmlnaHQsCglub3QgdGhlIGxlZnQuCgoJKiBwYXJzZS55IChmbi5kZWYyKTogRml4ICdhdHRycycgZm9ybWF0LgoKMTk5OC0xMC0xOCAgQWxhc3RhaXIgSi4gSG91Z2h0b24gIDxhamg4QGRvYy5pYy5hYy51az4KCgkqIE1ha2VmaWxlLmluIChDT05GTElDVFMpOiBVcGRhdGUuCgkqIHBhcnNlLnkgKGV4cHJfb3JfZGVjbGFyYXRvcl9pbnRlcm4pOiBOZXcgcnVsZS4KCShleHByX29yX2RlY2xhcmF0b3IsIGRpcmVjdF9ub3R5cGVfZGVjbGFyYXRvciwgcHJpbWFyeSwKCWZ1bmN0aW9uYWxfY2FzdCk6IFVzZSBpdC4KCShub3R5cGVfZGVjbGFyYXRvcl9pbnRlcm4pOiBOZXcgcnVsZS4KCShub3R5cGVfZGVjbGFyYXRvciwgY29tcGxleF9ub3R5cGVfZGVjbGFyYXRvcik6IFVzZSBpdC4KCjE5OTgtMTAtMTcgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIGRlY2wuYyAoZ3Jva2ZuZGVjbCk6IFNldCBERUNMX0NPTlRFWFQgdG8gbmFtZXNwYWNlIGlmIGFwcHJvcHJpYXRlLgoJKGdyb2t2YXJkZWNsKTogTGlrZXdpc2UuCgpTYXQgT2N0IDE3IDIzOjI3OjIwIDE5OTggIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIGNsYXNzLmMgKG1ha2VfbWV0aG9kX3ZlYyk6IENhc3QgMXN0IGFyZ3VtZW50IG9mIGBiemVybycgdG8gKFBUUikuCgkoYWRkX21ldGhvZCk6IExpa2V3aXNlIGZvciBhcmd1bWVudHMgMSAmIDIgb2YgYGJjb3B5Jy4KCgkqIGRlY2wuYyAoc2lnbmFsX2NhdGNoKTogTWFyayB3aXRoIEFUVFJJQlVURV9OT1JFVFVSTi4KCgkqIHB0LmMgKHByb2Nlc3NfcGFydGlhbF9zcGVjaWFsaXphdGlvbik6IENhc3QgMXN0IGFyZ3VtZW50IG9mCglgYnplcm8nIHRvIChQVFIpLgoKCSogdHJlZS5jIChidWlsZF9iYXNlX2ZpZWxkcyk6IENhc3QgYGJhc2VfYWxpZ24nIHRvIChpbnQpIHdoZW4KCWNvbXBhcmluZyBhZ2FpbnN0IG9uZS4KCjE5OTgtMTAtMTYgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQG1hcmttaXRjaGVsbC5jb20+CgoJKiBkZWNsLmMgKGxvb2t1cF9uYW1lX3JlYWwpOiBIYW5kbGUgdGVtcGxhdGUgcGFyYW1ldGVycyBmb3IgbWVtYmVyCgl0ZW1wbGF0ZXMgd2hlcmUgc2FpZCBwYXJhbWV0ZXJzIGhhdmUgdGhlIHNhbWUgbmFtZSBhcyB0aGUKCXN1cnJvdW5kaW5nIGNsYXNzLgoKCSogZGVjbC5jIChleHBhbmRfc3RhdGljX2luaXQpOiBCdWlsZCBjbGVhbnVwcyBiZWZvcmUgZW50ZXJpbmcgdGhlCglhbm9ueW1vdXMgZnVuY3Rpb24gdXNlZCB0byBkbyB0aGVtIHRvIGF2b2lkIGFjY2Vzcy1jaGVja2luZwoJY29uZnVzaW9uLgoKCSogZGVjbC5jIChncm9rZm5kZWNsKTogQWRkIGJhY2sgY2FsbCB0byBjcGx1c19kZWNsX2F0dHJpYnV0ZXMKCWFjY2lkZW50YWxseSByZW1vdmVkIGJ5IHByZXZpb3VzIGNoYW5nZSwgYW5kIG1ha2UgREVDTF9SVEwgaGVyZS4KCSogY2xhc3MuYyAoYWRkX21ldGhvZCk6IERvbid0IG1ha2UgREVDTF9SVEwgaGVyZS4KCgkqIHB0LmMgKGZvcl9lYWNoX3RlbXBsYXRlX3Bhcm0pOiBEb24ndCBleGFtaW5lIHVuaW5zdGFudGlhdGVkCglkZWZhdWx0IGFyZ3VtZW50cy4KCjE5OTgtMTAtMTYgIERhdmUgQnJvbGxleSAgPGJyb2xsZXlAY3lnbnVzLmNvbT4KCgkqIGxleC5jIChyZWFsX3l5bGV4KTogRml4IHVuYWxpZ25lZCBhY2Nlc3Mgb2Ygd2NoYXJfdC4KCjE5OTgtMTAtMTYgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQG1hcmttaXRjaGVsbC5jb20+CgoJKiBjbGFzcy5jIChhZGRfbWV0aG9kKTogRml4IGRvY3VtZW50YXRpb24gdG8gcmVmbGVjdCBwcmV2aW91cwoJY2hhbmdlcy4gIENoZWNrIGZvciBkdXBsaWNhdGUgbWV0aG9kIGRlY2xhcmF0aW9ucyBoZXJlLgoJKiBkZWNsLmMgKGRlY2xzX21hdGNoKTogSGFuZGxlIEZVTkNUSU9OX0RFQ0wgdnMgVEVNUExBVEVfREVDTAoJY29ycmVjdGx5OyBzdWNoIHRoaW5ncyBuZXZlciBtYXRjaC4KCShncm9rZm5kZWNsKTogRG9uJ3QgbG9vayBmb3IgZHVwbGljYXRlIG1ldGhvZHMgaGVyZS4KCSogZGVjbDIuYyAoY2hlY2tfY2xhc3Nmbik6IERvbid0IGFzc3VtZSBuYW1lcyBhcmUgbWFuZ2xlZC4KCURvbid0IGFkZCBib2d1cyBtZW1iZXIgZnVuY3Rpb24gZGVjbGFyYXRpb25zIHRvIGEgY2xhc3MgYmVmb3JlIHRoZQoJY2xhc3MgdHlwZSBpcyBjb21wbGV0ZS4KCShncm9rZmllbGQpOiBSZWZvcm1hdCBlcnJvciBtZXNzYWdlLgoJKiBtZXRob2QuYyAoc2V0X21hbmdsZWRfbmFtZV9mb3JfZGVjbCk6IERvbid0IG1hbmdsZSBuYW1lcyB3aGlsZQoJcHJvY2Vzc2luZ190ZW1wbGF0ZV9kZWNsLgoKMTk5OC0xMC0xNiAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogdHlwZWNrLmMgKGJ1aWxkX2luZGlyZWN0X3JlZik6IENvbXBsYWluIGFib3V0IGEgcG9pbnRlciB0byBkYXRhCgltZW1iZXIsIHRvby4KCSogdHlwZWNrMi5jIChidWlsZF9tX2NvbXBvbmVudF9yZWYpOiBEb24ndCBpbmRpcmVjdCBhIHBvaW50ZXIgdG8KCWRhdGEgbWVtYmVyLgoJKiBpbml0LmMgKHJlc29sdmVfb2Zmc2V0X3JlZik6IERvbid0IHVuZG8gdGhlIGFib3ZlLgoKCSogY3AtdHJlZS5oIChERUNMX0NfQklUX0ZJRUxELCBTRVRfREVDTF9DX0JJVF9GSUVMRCk6IE5ldyBtYWNyb3MuCgkoc3RydWN0IGxhbmdfZGVjbF9mbGFncyk6IEFkZCBgYml0ZmllbGQnLgoJKiBjbGFzcy5jIChmaW5pc2hfc3RydWN0XzEpOiBVc2UgREVDTF9DX0JJVF9GSUVMRCBpbnN0ZWFkIG9mCglERUNMX0JJVF9GSUVMRC4KCSogZGVjbDIuYyAoZ3Jva2JpdGZpZWxkLCBncm9rX2FsaWdub2YpOiBMaWtld2lzZS4KCSogaW5pdC5jIChidWlsZF9vZmZzZXRfcmVmKTogTGlrZXdpc2UuCgkqIHR5cGVjay5jIChidWlsZF9jb21wb25lbnRfYWRkciwgZXhwcl9zaXplb2YpOiBMaWtld2lzZS4KCSogY3Z0LmMgKGJ1aWxkX3VwX3JlZmVyZW5jZSk6IERvbid0IGNyYXNoIGlmIHRha2luZyB0aGUgYWRkcmVzcwoJcmV0dXJucyBlcnJvcl9tYXJrX25vZGUuCgoJKiBkZWNsLmMgKGdyb2tmbmRlY2wpOiBBbHNvIGNoZWNrIGN0eXBlIHdoZW4gY2hlY2tpbmcgZm9yIDo6bWFpbigpLgoKMTk5OC0xMC0xNSAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogZGVjbC5jIChncm9rZm5kZWNsKTogOjptYWluIGFuZCBfX2J1aWx0aW5fKiBnZXQgQyBsaW5rYWdlLgoJRG8gbWFuZ2xpbmcgaGVyZS4KCShncm9rZGVjbGFyYXRvcik6IEluc3RlYWQgb2YgaGVyZS4KCSogZnJpZW5kLmMgKGRvX2ZyaWVuZCk6IExvc2Ugc3BlY2lhbCBoYW5kbGluZyBvZiA6Om1haW4gYW5kCglfX2J1aWx0aW5fKi4KCSogY3AtdHJlZS5oIChERUNMX01BSU5fUCk6IENoZWNrIGZvciBDIGxpbmthZ2UuCgoJKiBzcGV3LmMgKHl5bGV4KTogQ2xlYXIgbG9va2luZ19mb3JfdHlwZW5hbWUgaWYgd2UgZ290CgknZW51bSB7IC4uLiB9OycuCgoxOTk4LTEwLTE1ICBNYXJrIE1pdGNoZWxsICA8bWFya0BtYXJrbWl0Y2hlbGwuY29tPgoKCSogY2xhc3MuYyAobWF5YmVfd2Fybl9hYm91dF9vdmVybHlfcHJpdmF0ZV9jbGFzcyk6IEltcHJvdmUgZXJyb3IKCW1lc3NhZ2VzIGZvciBjbGFzcyB3aXRoIG9ubHkgcHJpdmF0ZSBjb25zdHJ1Y3RvcnMuCgoJKiBjcC10cmVlLmRlZiAoVFlQRU5BTUVfVFlQRSk6IEFkZCB0byBkb2N1bWVudGF0aW9uLgoJKiBjcC10cmVlLmggKFRZUEVOQU1FX1RZUEVfRlVMTE5BTUUpOiBEb2N1bWVudC4KCShidWlsZF90eXBlbmFtZV90eXBlKTogTmV3IGZ1bmN0aW9uLgoJKiBkZWNsLmMgKGJ1aWxkX3R5cGVuYW1lX3R5cGUpOiBCcm9rZW4gb3V0IGZyb20gLi4uCgkobWFrZV90eXBlbmFtZV90eXBlKTogVXNlIGl0LgoJKiBzZWFyY2guYyAobG9va3VwX2ZpZWxkKTogTGlrZXdpc2UuCgoxOTk4LTEwLTE0ICBCZW5qYW1pbiBLb3NuaWsgIDxia296QHJoaW5vLmN5Z251cy5jb20+CgoJKiBwdC5jIChjb252ZXJ0X25vbnR5cGVfYXJndW1lbnQpOiBDaGVjayBhZ2FpbnN0IHR5cGVfcmVmZXJyZWRfdG8uCgkqIGRlY2wuYyAoZ3Jva3ZhcmRlY2wpOiBDaGVjayBmb3IgZGVjbGFyYXRvciBuYW1lIGJlZm9yZSBidWlsZGluZwoJREVDTF9BU1NFTUJMRVJfTkFNRS4KCjE5OTgtMTAtMTQgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQG1hcmttaXRjaGVsbC5jb20+CgoJKiBwdC5jIChsb29rdXBfdGVtcGxhdGVfY2xhc3MpOiBBZGQgY29tbWVudC4KCShpbnN0YW50aWF0ZV9jbGFzc190ZW1wbGF0ZSk6IERvbid0IG1hcmsgdGhlIF9UWVBFIG5vZGUgZm9yCgltZW1iZXIgY2xhc3MgdGVtcGxhdGVzIGFzIGFuIGluc3RhbnRpYXRpb24uCgoxOTk4LTEwLTE0ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBkZWNsLmMgKGdyb2tmbmRlY2wpOiBGaXggbXkgdGhpbmtvLgoKMTk5OC0xMC0xMyAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogdGluZm8yLmNjIChmYXN0X2NvbXBhcmUpOiBSZW1vdmUuCgkoYmVmb3JlKTogSnVzdCB1c2Ugc3RyY21wLgoJKiB0aW5mby5jYyAob3BlcmF0b3I9PSk6IEp1c3QgdXNlIHN0cmNtcC4KCjE5OTgtMTAtMTMgIEtsYXVzLUdlb3JnIEFkYW1zICA8S2xhdXMtR2VvcmcuQWRhbXNAY2hlbWllLnVuaS1rYXJsc3J1aGUuZGU+CgoJKiBkZWNsLmMgKGdyb2tmbmRlY2wpOiBEb24ndCBjaGVjayBmb3IgbGlua2FnZSBpbiBgZXh0ZXJuICJDIicKCWRlY2xhcmF0aW9ucy4KCjE5OTgtMTAtMTMgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQG1hcmttaXRjaGVsbC5jb20+CgoJKiBjcC10cmVlLmggKHNwZWNpYWxpemF0aW9uc19vZl9zYW1lX3RlbXBsYXRlX3ApOiBSZW1vdmUuCgkqIHNlYXJjaC5jIChnZXRfdGVtcGxhdGVfYmFzZSk6IERvbid0IHVzZSBpdC4KCShnZXRfdGVtcGxhdGVfYmFzZV9yZWN1cnNpdmUpOiBMaWtld2lzZS4KCSogcHQuYyAoc3BlY2lhbGl6YXRpb25zX29mX3NhbWVfdGVtcGxhdGVfcCk6IFJlbW92ZS4KCSh1bmlmeSk6IERvbid0IHVzZSBpdC4KCShsb29rdXBfdGVtcGxhdGVfY2xhc3MpOiBGaW5kIHRoZSBjb3JyZWN0IHBhcmVudCB3aGVuIHNldHRpbmcKCUNMQVNTVFlQRV9USV9URU1QTEFURS4KCjE5OTgtMTAtMTIgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIHRpbmZvLmNjIChvcGVyYXRvcj09KTogQWx3YXlzIGNvbXBhcmUgbmFtZXMuCgoxOTk4LTEwLTEyICBIZXJtYW4gdGVuIEJydWdnZSAgPEhhai5UZW4uQnJ1Z2dlQG5ldC5IQ0Mubmw+CgoJKiBkZWNsLmMgKHN0YXJ0X2Z1bmN0aW9uKTogRml4IGN1dC1hbmQtcGFzdGUgZXJyb3IuCgoxOTk4LTEwLTEyICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBpbmMvdHlwZWluZm86IEFkZCAjcHJhZ21hIGludGVyZmFjZS4KCShvcGVyYXRvciE9KTogSnVzdCBjYWxsIG9wZXJhdG9yPT0uCgkqIHRpbmZvLmNjOiBBZGQgI3ByYWdtYSBpbXBsZW1lbnRhdGlvbi4KCShvcGVyYXRvcj09KTogTW92ZSBmcm9tIGluYy90eXBlaW5mbyBhbmQgdGluZm8yLmNjLgoJQ2hlY2sgX19DT01NT05fVU5SRUxJQUJMRSBpbnN0ZWFkIG9mIF9XSU4zMi4KCgkqIHR5cGVjazIuYyAobXlfZnJpZW5kbHlfYWJvcnQpOiBBZGQgVVJMLgoKMTk5OC0xMC0xMiAgQWxhc3RhaXIgSi4gSG91Z2h0b24gIDxhamg4QGRvYy5pYy5hYy51az4KCgkqIGRlY2wuYyAoc3RhcnRfbWV0aG9kKTogQWRkZWQgZXh0cmEgcGFyYW1ldGVyIGZvciBhdHRyaWJ1dGVzLgoJKiBjcC10cmVlLmggKHN0YXJ0X21ldGhvZCk6IFVwZGF0ZSBwcm90b3R5cGUuCgkqIHBhcnNlLnkgKGZuLmRlZjIpOiBVcGRhdGUgc3RhcnRfbWV0aG9kIHBhcmFtZXRlciBsaXN0LgoKMTk5OC0xMC0xMSAgTWFyayBNaXRjaGVsbCAgPG1hcmtAbWFya21pdGNoZWxsLmNvbT4KCgkqIGNwLXRyZWUuaCAoc3BlY2lhbGl6YXRpb25zX29mX3NhbWVfdGVtcGxhdGVfcCk6IERlY2xhcmUuCgkqIHB0LmMgKHNwZWNpYWxpemF0aW9uc19vZl9zYW1lX3RlbXBsYXRlX3ApOiBOZXcgZnVuY3Rpb24uCgkodW5pZnkpOiBVc2UgaXQuCgkqIHNlYXJjaC5jIChnZXRfdGVtcGxhdGVfYmFzZSk6IFVzZSBpdC4KCShnZXRfdGVtcGxhdGVfYmFzZV9yZWN1cnNpdmUpOiBMaWtld2lzZS4KCjE5OTgtMTAtMTAgIE1hbmZyZWQgSG9sbHN0ZWluICA8bWFuZnJlZEBzLWRpcmVrdG5ldC5kZT4KCgkqIGRlY2wyLmMgKHN0YXJ0X29iamVjdHMpOiBBZGQgbmV3IHZhcmlhYmxlIGBqb2luZXInIGFuZAoJaW5pdGlhbGl6ZSBpdCBwcm9wZXJseS4KCjE5OTgtMTAtMDkgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQG1hcmttaXRjaGVsbC5jb20+CgoJKiBzZWFyY2guYyAoZXhwYW5kX3VwY2FzdF9maXh1cHMpOiBUd2VhayB0byBtYXRjaCAxOTk4LTEwLTA3CgljaGFuZ2UgdG8gdnRhYmxlIHR5cGVzLgoKCSogY3Z0LmMgKG9jcF9jb252ZXJ0KTogQXZvaWQgaW5maW5pdGUgcmVjdXJzaW9uIGNhdXNlZCBieQoJMTk5OC0xMC0wMyBjaGFuZ2UuCgoxOTk4LTEwLTA4ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBwdC5jIChyZXNvbHZlX292ZXJsb2FkZWRfdW5pZmljYXRpb24pOiBOZXcgZm4uCgkodHJ5X29uZV9vdmVybG9hZCk6IExpa2V3aXNlLgoJKHVuaWZ5KTogRG9uJ3QgZmFpbCBvbiB1bmtub3duIHR5cGUuCgkodHlwZV91bmlmaWNhdGlvbl9yZWFsKTogTGlrZXdpc2UuICBVc2UgcmVzb2x2ZV9vdmVybG9hZGVkX3VuaWZpY2F0aW9uCgl0byBoYW5kbGUgYW4gb3ZlcmxvYWRlZCBhcmd1bWVudC4KCSh0ZW1wbGF0ZV9hcmdzX2VxdWFsKTogU3BsaXQgb3V0Li4uCgkoY29tcF90ZW1wbGF0ZV9hcmdzKTogRnJvbSBoZXJlLgoJKGRldGVybWluZV9zcGVjaWFsaXphdGlvbik6IEFsc28gYWxsb3cgYSB0ZW1wbGF0ZSB3aXRoIG1vcmUKCXBhcm1zIHRoYW4gd2VyZSBleHBsaWNpdGx5IHNwZWNpZmllZC4KCSogY3AtdHJlZS5oOiBBZGQgdGVtcGxhdGVfYXJnc19lcXVhbC4KCSogY2FsbC5jIChyZXNvbHZlX2FyZ3MpOiBSZW1vdmUgVEVNUExBVEVfSURfRVhQUiBjb2RlLgoKVGh1IE9jdCAgOCAxNTo1ODozMCAxOTk4ICBBbnRob255IEdyZWVuICA8Z3JlZW5AY3lnbnVzLmNvbT4KCgkqIHNlbWFudGljcy5jIChmaW5pc2hfYXNtX3N0bXQpOiBSZXZlcnQgbXkgMTk5OC0wOS0yOAoJY2hhbmdlLgoKVGh1IE9jdCAgOCAwNjowMDoxOSAxOTk4ICBKZWZmcmV5IEEgTGF3ICAobGF3QGN5Z251cy5jb20pCgoJKiB0eXBlY2suYyAodW5zaWduZWRfdHlwZSk6IE9ubHkgcmV0dXJuIFRJdHlwZSBub2RlcyB3aGVuCglIT1NUX0JJVFNfUEVSX1dJREVfSU5UIGlzID49IDY0IGJpdHMuCgkoc2lnbmVkX3R5cGUpOiBMaWtld2lzZS4KCSogZGVjbC5jIChpbnRUSV90eXBlX25vZGUsIHVuc2lnbmVkX2ludFRJX3R5cGVfbm9kZSk6IE9ubHkgZGVjbGFyZQoJd2hlbiBIT1NUX0JJVFNfUEVSX1dJREVfSU5UIGlzID49IDY0IGJpdHMuCgkoaW5pdF9kZWNsX3Byb2Nlc3NpbmcpOiBPbmx5IGNyZWF0ZSBUSXR5cGUgbm9kZXMgd2hlbgoJSE9TVF9CSVRTX1BFUl9XSURFX0lOVCBpcyA+PSA2NCBiaXRzLgoJKiBjcC10cmVlLmggKGludFRJX3R5cGVfbm9kZSwgdW5zaWduZWRfaW50VElfdHlwZV9ub2RlKTogT25seSBkZWNsYXJlCgl3aGVuIEhPU1RfQklUU19QRVJfV0lERV9JTlQgaXMgPj0gNjQgYml0cy4KCldlZCBPY3QgIDcgMTI6MzI6NDQgMTk5OCAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogTWFrZWZpbGUuaW4gKGhhc2guaCk6IEFkZCAtTCBLUi1DIC1GICcsIDAsIDAnIGZsYWdzIHRvIGdwZXJmLgoJKGd4eC5ncGVyZik6IFVwZGF0ZSBjb21tZW50cyBkZXNjcmliaW5nIGludm9jYXRpb24gZmxhZ3MuCgkoaGFzaC5oKTogUmVnZW5lcmF0ZSB1c2luZyBncGVyZiAyLjcuMSAoMTk5ODEwMDYgZWdjcykuCgoxOTk4LTEwLTA3ICBNYXJrIE1pdGNoZWxsICA8bWFya0BtYXJrbWl0Y2hlbGwuY29tPgoKCSogY2xhc3MuYyAoZmluaXNoX3N0cnVjdF8xKTogQWRkIGNvbW1lbnRhcnkgb24gcHJldmlvdXMgY2hhbmdlLgoKCSogY3AtdHJlZS5oICh2dGJsX3B0cl90eXBlX25vZGUpOiBOZXcgdmFyaWFibGUuCgkqIGNsYXNzLmMgKGJ1aWxkX3Z0YmxfcmVmKTogRG9uJ3QgaW5kaXJlY3QgdGhyb3VnaCB0aGUgdnB0cjsgaXQncwoJYWxyZWFkeSBvZiB0aGUgcmlnaHQgdHlwZS4KCShmaW5pc2hfc3RydWN0XzEpOiBNYWtlIHRoZSB2cHRyIGJlIG9mIHR5cGUgdnRibF9wdHJfdHlwZV9ub2RlLgoJU2ltcGxpZnkgY29kZSB0byBncm93IHZ0YWJsZS4KCSogZGVjbC5jICh2dGJsX3B0cl90eXBlX25vZGUpOiBEZWZpbmUuCgkoaW5pdF9kZWNsX3Byb2Nlc3NpbmcpOiBJbml0aWFsaXplIGl0LgoKMTk5OC0xMC0wNiAgTWFyayBNaXRjaGVsbCAgPG1hcmtAbWFya21pdGNoZWxsLmNvbT4KCgkqIGNwLXRyZWUuZGVmIChQVFJNRU1fQ1NUKTogTmV3IHRyZWUgbm9kZS4KCSogY3AtdHJlZS5oIChwdHJtZW1fY3N0KTogTmV3IHR5cGUuCgkobGFuZ190eXBlKTogUmVtb3ZlIGxvY2FsX3R5cGVkZWNscy4KCShkdW1teSk6IEluY3JlYXNlIHRvIDEyIGJpdHMgZnJvbSAxMS4KCShDTEFTU1RZUEVfTE9DQUxfVFlQRURFQ0xTKTogUmVtb3ZlLgoJKFBUUk1FTV9DU1RfQ0xBU1MpOiBOZXcgbWFjcm8uCgkoUFRSTUVNX0NTVF9NRU1CRVIpOiBMaWtld2lzZS4KCShjdXJyZW50X2FjY2Vzc19zcGVjaWZpZXIpOiBOZXcgdmFyaWFibGUuCgkoY3VycmVudF9jbGFzc190eXBlKTogUmVtb3ZlIGR1cGxpY2F0ZSBkZWNsYXJhdGlvbi4KCShmaW5pc2hfc3RydWN0KTogQ2hhbmdlIHByb3RvdHlwZS4KCSh1bnJldmVyc2VfbWVtYmVyX2RlY2xhcmF0aW9ucyk6IE5ldyBmdW5jdGlvbi4KCShwdXNoZGVjbF9jbGFzc19sZXZlbCk6IENoYW5nZSBwcm90b3R5cGUuCgkoZ3Jva19lbnVtX2RlY2xzKTogUmVtb3ZlLgoJKGZpeHVwX2Fub255bW91c191bmlvbik6IE5ldyBmdW5jdGlvbi4KCShncm9rX3hfY29tcG9uZW50cyk6IENoYW5nZSBwcm90b3R5cGUuCgkodHN1YnN0X2NoYWluKTogUmVtb3ZlLgoJKGZpbmlzaF9tZW1iZXJfdGVtcGxhdGVfZGVjbCk6IExpa2V3aXNlLgoJKGNoZWNrX2V4cGxpY2l0X3NwZWNpYWxpemF0aW9uKTogRml4IGluZGVudGF0aW9uLgoJKGZpbmlzaF9jbGFzc19kZWZpbml0aW9uKTogQ2hhbmdlIHByb3RvdHlwZS4KCShmaW5pc2hfbWVtYmVyX2NsYXNzX3RlbXBsYXRlKTogTGlrZXdpc2UuCgkoZmluaXNoX21lbWJlcl9kZWNsYXJhdGlvbik6IE5ldyBmdW5jdGlvbi4KCShjaGVja19tdWx0aXBsZV9kZWNsYXJhdG9ycyk6IExpa2V3aXNlLgoJKiBjbGFzcy5jIChjbGFzc19zdGFja19ub2RlX3QpOiBOZXcgdHlwZS4KCShjdXJyZW50X2NsYXNzX2Jhc2UpOiBSZW1vdmUuCgkoY3VycmVudF9jbGFzc19zdGFjayk6IENoYW5nZSB0eXBlLgoJKGN1cnJlbnRfYWNjZXNzX3NwZWNpZmllcik6IE5ldyB2YXJpYWJsZS4KCShncm93X21ldGhvZCk6IFJlbW92ZS4KCShjaGVja19tZW1iZXJfZGVjbF9pc19zYW1lX2luX2NvbXBsZXRlX3Njb3BlKTogQnJlYWsgb3V0IGZyb20KCWZpbmlzaF9zdHJ1Y3QuCgkobWFrZV9tZXRob2RfdmVjKTogTmV3IGZ1bmN0aW9uLgoJKGZyZWVfbWV0aG9kX3ZlYyk6IExpa2V3aXNlLgoJKGFkZF9pbXBsaWNpdGx5X2RlY2xhcmVkX21lbWJlcnMpOiBCcmVhayBvdXQgZnJvbSBmaW5pc2hfc3RydWN0XzEuCgkoZnJlZV9tZXRob2RfdmVjcyk6IE5ldyB2YXJpYWJsZS4KCShhZGRfbWV0aG9kKTogUmV3b3JrIGZvciBkaXJlY3QgdXNlIGZyb20gcGFyc2VyLgoJKGhhbmRsZV91c2luZ19kZWNsKTogV2F0Y2ggZm9yIE5VTExfVFJFRSB3aGlsZSBpdGVyYXRpbmcgdGhyb3VnaAoJQ0xBU1NUWVBFX01FVEhPRF9WRUMuCgkoZmluaXNoX3N0cnVjdF9tZXRob2RzKTogRG9uJ3QgYnVpbGQgQ0xBU1NUWVBFX01FVEhPRF9WRUMgaGVyZTsKCWp1c3QgZG8gc29tZSBlcnJvci1jaGVja2luZy4KCSh3YXJuX2hpZGRlbik6IENoYW5nZSBpdGVyYXRpb24gdGhyb3VnaCBDTEFTU1RZUEVfTUVUSE9EX1ZFQy4KCShmaW5pc2hfc3RydWN0XzEpOiBTaW1wbGlmeS4gIFVzZSBhZGRfaW1wbGljaXRseV9kZWNsYXJlZF9tZW1iZXJzLgoJKGZpbmlzaF9zdHJ1Y3QpOiBDaGFuZ2UgcHJvdG90eXBlLiAgU2ltcGxpZnk7IGZpZWxkcyBhbmQgbWV0aG9kcwoJYXJlIGFscmVhZHkgc2V0IHVwIGF0IHRoaXMgcG9pbnQuCgkoaW5pdF9jbGFzc19wcm9jZXNzaW5nKTogU2V0IHVwIGN1cnJlbnRfY2xhc3Nfc3RhY2suCgkocHVzaGNsYXNzKTogU2F2ZSBjdXJyZW50X2FjY2Vzc19zcGVjaWZpZXIuCgkocG9wY2xhc3MpOiBSZXN0b3JlIGl0LgoJKGN1cnJlbnRseV9vcGVuX2NsYXNzKTogU2ltcGxpZnkuCgkoYnVpbGRfc2VsZl9yZWZlcmVuY2UpOiBSZW1vdmUgdXNlIG9mIENMQVNTVFlQRV9MT0NBTF9UWVBFREVDTFMuCgkqIGRlY2wuYyAoc2F2ZWRfc2NvcGUpOiBBZGQgYWNjZXNzX3NwZWNpZmllci4KCShtYXliZV9wdXNoX3RvX3RvcF9sZXZlbCk6IFNhdmUgaXQuCgkocG9wX2Zyb21fdG9wX2xldmVsKTogUmVzdG9yZSBpdC4KCShtYXliZV9wcm9jZXNzX3RlbXBsYXRlX3R5cGVfZGVjbGFyYXRpb24pOiBVc2UKCWZpbmlzaF9tZW1iZXJfZGVjbGFyYXRpb24uCgkocHVzaHRhZyk6IExpa2V3aXNlLgoJKHB1c2hkZWNsX2NsYXNzX2xldmVsKTogRG9uJ3QgcmV0dXJuIGEgdmFsdWUuCgkoZml4dXBfYW5vbnltb3VzX3VuaW9uKTogQnJlYWsgb3V0IGZyb20gZ3Jva194X2NvbXBvbmVudHMuCgkoc2hhZG93X3RhZyk6IFVzZSBpdC4KCSh4cmVmX3RhZyk6IENvbXBsYWluIGFib3V0IHVzaW5nIGFuIGVsYWJvcmF0ZWQgdHlwZSBzcGVjaWZpZXIgdG8KCXJlZmVyZW5jZSBhIHRlbXBsYXRlIHR5cGUgcGFyYW1ldGVyIG9yIHR5cGVkZWYgbmFtZS4KCSh4cmVmX2Jhc2V0eXBlcyk6IERvbid0IHNldCBDTEFTU1RZUEVfTE9DQUxfVFlQRURFQ0xTLgoJKGN1cnJlbnRfbG9jYWxfZW51bSk6IFJlbW92ZS4KCShidWlsZF9lbnVtZXJhdG9yKTogQ2FsbCBmaW5pc2hfbWVtYmVyX2RlY2xhcmF0aW9uLgoJKGdyb2tfZW51bV9kZWNscyk6IFJlbW92ZS4KCSogZGVjbDIuYyAoZ3Jva194X2NvbXBvbmVudHMpOiBTaW1wbGlmeS4KCShjaGVja19jbGFzc2ZuKTogQ2hhbmdlIGl0ZXJhdGlvbiB0aHJvdWdoIENMQVNTVFlQRV9NRVRIT0RfVkVDLgoJKGdyb2tmaWVsZCk6IERvbid0IHNldCBDTEFTU1RZUEVfTE9DQUxfVFlQRURFQ0xTLgoJKG1lcmdlX2Z1bmN0aW9ucyk6IEFkZCB0byBjb21tZW50LgoJKGFyZ19hc3NvY190eXBlKTogUHJvdG90eXBlLgoJKGFyZ19hc3NvYyk6IFBhc3MgYXMgbWFueSBhcmd1bWVudHMgYXMgdGhlcmUgYXJlIHBhcmFtZXRlcnMuCgkqIGVycm9yLmMgKGR1bXBfZXhwcik6IEhhbmRsZSBQVFJNRU1fQ1NULiAgSW1wcm92ZSBoYW5kbGluZyBvZgoJT0ZGU0VUX1JFRi4KCSogZXhwci5jIChjcGxzX2V4cGFuZF9leHByKTogUmVtb3ZlIGRlYWQgY29kZS4gIEhhbmRsZQoJUFRSTUVNX0NTVC4KCSogZnJpZW5kLmMgKGRvX2ZyaWVuZCk6IExvb2t1cCBmcmllbmRzIHdoZW4gaW4gbmVzdGVkIGNsYXNzZXMuCglDaGFuZ2UgY29tbWVudHMuCgkqIGluaXQuYyAoYnVpbGRfb2Zmc2V0X3JlZik6IERvIGxvb2t1cCBldmVuIGZvciBjbGFzc2VzIHRoYXQgYXJlCglvbmx5IHBhcnRpYWxseSBkZWZpbmVkLgoJKGRlY2xfY29uc3RhbnRfdmFsdWUpOiBSZW1vdmUgZGVhZCBjb2RlLgoJKiBtZXRob2QuYyAoYnVpbGRfb3ZlcmxvYWRfdmFsdWUpOiBSZW1vdmUgaGFjayB3aGVyZSBieSBUWVBFIHdhcwoJbm90IGEgVFlQRS4gIEhhbmRsZSBQVFJNRU1fQ1NULgoJKGJ1aWxkX3RlbXBsYXRlX3Bhcm1fbmFtZXMpOiBEb24ndCBwYXNzIGEgUEFSTV9ERUNMIHdoZXJlIGEgVFlQRQoJc2hvdWxkIGdvLgoJKiBwYXJzZS55IChjb21wb25lbnRzLCBub3R5cGVfY29tcG9uZW50cywgY29tcG9uZW50X2RlY2wsCgljb21wb25lbnRfZGVjbF8xLCBjb21wb25lbnRfZGVjbGFyYXRvciwgY29tcG9uZW50X2RlY2xhcmF0b3IwKToKCU5vdyBhbGwgYXJlIGl0eXBlIHJhdGhlciB0aGFuIHR0eXBlLiAgUmV3b3JrIHRvIGFkZCBtZW1iZXJzIHRvCgljbGFzc2VzIG9uIHRoZSBmbHkuCgkodHlwZXNxcGVjcXVhbF9yZXNlcnZlZCk6IFVzZSBjaGVja19tdWx0aXBsZV9kZWNsYXJhdG9ycy4KCShzdHJ1Y3RzcCk6IFVwZGF0ZSBjbGFzcyB0byBmaW5pc2hfY2xhc3NfZGVmaW5pdGlvbi4KCShkb194cmVmX2RlZm4pOiBVbnNwbGl0IGludG8gbmFtZWRfY2xhc3NfaGVhZC4KCShhY2Nlc3Nfc3BlY2lmaWVyKTogU2V0IGN1cnJlbnRfYWNjZXNzX3NwZWNpZmllci4KCSogcHQuYyAoc2V0X2N1cnJlbnRfYWNjZXNzX2Zyb21fZGVjbCk6IE5ldyBmdW5jdGlvbi4KCShmaW5pc2hfbWVtYmVyX3RlbXBsYXRlX2RlY2wpOiBEb24ndCB0YWtlIHRoZSBwYXJhbWV0ZXJzLgoJKGNvbXBfdGVtcGxhdGVfYXJncyk6IE1ha2UgbW9yZSByb2J1c3QuCgkobG9va3VwX3RlbXBsYXRlX2NsYXNzKTogRG9uJ3QgdXNlIGN1cnJlbnRfbG9jYWxfZW51bS4KCShmb3JfZWFjaF90ZW1wbGF0ZV9wYXJtKTogSGFuZGxlIFBUUk1FTV9DU1QuCgkoaW5zdGFudGlhdGVfY2xhc3NfdGVtcGxhdGUpOiBVc2Ugc2V0X2N1cnJlbnRfYWNjZXNzX2Zyb21fZGVjbCwKCWZpbmlzaF9tZW1iZXJfZGVjbGFyYXRpb24gYW5kIHVucmV2ZXJzZV9tZW1iZXJfZGVjbGFyYXRpb25zLiAgU2V0CglsaW5lbm8vaW5wdXRfZmlsZW5hbWUgYmVmb3JlIGdlbmVyYXRpbmcgaW1wbGljaXQgbWVtYmVyIGZ1bmN0aW9ucy4KCSh0eXBlX3VuaWZpY2F0aW9uX3JlYWwpOiBEb24ndCBhc3N1bWUgYmFjay11bmlmaWNhdGlvbiBoYXBwZW5zCglvbmx5IGZvciB0aGUgbGFzdCBhcmd1bWVudC4KCShyZWdlbmVyYXRlX2RlY2xfZnJvbV90ZW1wbGF0ZSk6IENhbGwgcHVzaGNsYXNzIGEgYml0IGVhcmxpZXIuCgkodHN1YnN0X2NoYWluKTogUmVtb3ZlLgoJKHRzdWJzdF9lbnVtKTogVXNlIHNldF9jdXJyZW50X2FjY2Vzc19mcm9tX2RlY2wuCgkoc2V0X21hbmdsZWRfbmFtZV9mb3JfdGVtcGxhdGVfZGVjbCk6IEZpeCBpbmRlbnRhdGlvbi4KCSogc2VhcmNoLmMgKGxvb2t1cF9mbmZpZWxkc18xKTogQ2hhbmdlIGl0ZXJhdGlvbiB0aHJvdWdoCglDTEFTU1RZUEVfTUVUSE9EX1ZFQy4KCShkZnNfcHVzaGRlY2xzKTogTGlrZXdpc2UuCgkoZGZzX2NvbXByZXNzX2RlY2xzKTogTGlrZXdpc2UuCgkoYWRkX2NvbnZlcnNpb25zKTogTGlrZXdpc2UuCgkqIHNlbWFudGljcy5jIChmaW5pc2hfY2xhc3NfZGVmaW5pdGlvbik6IERvbid0IHRha2UgY29tcG9uZW50cy4KCUNoYW5nZSBjYWxsIHRvIGZpbmlzaF9zdHJ1Y3QuCgkoZmluaXNoX21lbWJlcl9kZWNsYXJhdGlvbik6IE5ldyBmdW5jdGlvbi4KCShmaW5pc2hfbWVtYmVyX2NsYXNzX3RlbXBsYXRlKTogRG9uJ3QgdGFrZSB0ZW1wbGF0ZSBwYXJhbWV0ZXJzLgoJQ2hhbmdlIGNhbGwgdG8gZ3Jva194X2NvbXBvbmVudHMuICBDYWxsIGZpbmlzaF9tZW1iZXJfdGVtcGxhdGVfZGVjbC4KCShjaGVja19tdWx0aXBsZV9kZWNsYXJhdG9ycyk6IE5ldyBmdW5jdGlvbi4KCSogc2lnLmMgKGFwcGVuZF9zaWduYXR1cmVfZmllbGRzKTogV29yayBmcm9tIHRoZSBUWVBFX01FVEhPRFMsIG5vdAoJYSBwYXNzZWQgaW4gZmllbGRsaXN0LgoJKiB0cmVlLmMgKHNlYXJjaF90cmVlKTogSGFuZGxlIFBUUk1FTV9DU1QuCgkobWFwY2FyKTogTGlrZXdpc2UuCgkqIHR5cGVjay5jICh1bmFyeV9jb21wbGV4X2x2YWx1ZSk6IEJ1aWxkIFBUUk1FTV9DU1RzLCBub3QKCUlOVEVHRVJfQ1NUcywgZm9yIHBvaW50ZXItdG8tZGF0YSBtZW1iZXJzLgoKCSogY2FsbC5jIChyZXNvbHZlX2FyZ3MpOiBSZXNvbHZlIHRlbXBsYXRlIHNwZWNpYWxpemF0aW9ucywgaWYKCXBvc3NpYmxlLgoKVHVlIE9jdCAgNiAwNzo1NzoyNiAxOTk4ICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBNYWtlZmlsZS5pbiAoc3Bldy5vKTogRGVwZW5kIG9uIHRvcGxldi5oLgoKCSogY2FsbC5jIChjb21wYXJlX2ljcyk6IEluaXRpYWxpemUgdmFyaWFibGVzIGBkZXJlZl9mcm9tX3R5cGUyJywKCWBkZXJlZl90b190eXBlMScgYW5kIGBkZXJlZl90b190eXBlMicuCgoJKiBleGNlcHQuYyAoZ2V0X2VoX3R5cGUpOiBIaWRlIHByb3RvdHlwZSBhbmQgZGVmaW5pdGlvbi4KCShwcm9jZXNzX3N0YXJ0X2NhdGNoX2Jsb2NrX29sZCk6IFJlbW92ZSB1bnVzZWQgc3RhdGljIHByb3RvdHlwZS4KCgkqIHB0LmMgKHRzdWJzdF9kZWNsKTogSW5pdGlhbGl6ZSB2YXJpYWJsZSBgYXJndmVjJy4KCgkqIHNwZXcuYzogSW5jbHVkZSB0b3BsZXYuaC4KCjE5OTgtMTAtMDUgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIHB0LmMgKGluc3RhbnRpYXRlX2RlY2wpOiBEbyBzYXZlIGFuZCByZXN0b3JlIGZpbGUgcG9zaXRpb24uCgoxOTk4LTEwLTA1ICBNYXJ0aW4gdm9uIEz2d2lzICA8bG9ld2lzQGluZm9ybWF0aWsuaHUtYmVybGluLmRlPgoKCSogbWV0aG9kLmMgKGJ1aWxkX2RlY2xfb3ZlcmxvYWRfcmVhbCk6IENsZWFyCgludW1lcmljX291dHB1dF9uZWVkX2JhciBhZnRlciBfXy4KCjE5OTgtMTAtMDUgIE5hdGhhbiBTaWR3ZWxsICA8bmF0aGFuQGFjbS5vcmc+CgoJKiBjYWxsLmMgKGJ1aWxkX25ld19tZXRob2RfY2FsbCk6IElzc3VlICdpbmNvbXBsZXRlIHR5cGUnIGVycm9yLAoJaWYgY2xhc3MgaXMgbm90IGRlZmluZWQuCgoxOTk4LTEwLTA1ICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBjYWxsLmMgKGJ1aWxkX29iamVjdF9jYWxsKTogTW92ZSBkZWNsYXJhdGlvbiBvZiB2YXJpYWJsZQoJYGZuJyBpbnRvIHRoZSBzY29wZSB3aGVyZSBpdCBpcyB1c2VkLiAgRG9uJ3QgYWNjZXNzIHZhcmlhYmxlCglgZm4nIHdoZW4gaXQgaXMgdW5pbml0aWFsaXplZCwgaW5zdGVhZCB1c2UgYGZucycuCgoxOTk4LTEwLTA0ICBUaGVvZG9yZSBQYXBhZG9wb3VsbyAgPFRoZW9kb3JlLlBhcGFkb3BvdWxvQHNvcGhpYS5pbnJpYS5mcj4KCgkqIGVycmZuLmMgKGNwX3RoaW5nKTogUHJpbnQgYnVmIGFzIGEgc3RyaW5nIG5vdCBhcyBhIHByaW50ZiBmb3JtYXQKCXRvIGF2b2lkIHByb2JsZW1zIHdpdGggdGhlIG9wZXJhdG9yJS4gIENvbnNlcXVlbnRseSwgYCUlJyBzZXF1ZW5jZXMKCWluIGZvcm1hdCBhcmUgY29waWVkIGFzIGAlJyBpbiBidWYuCgoxOTk4LTEwLTA0ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBwdC5jIChwb3BfdGluc3RfbGV2ZWwpOiBDYWxsIGV4dHJhY3RfaW50ZXJmYWNlX2luZm8uCgkoaW5zdGFudGlhdGVfZGVjbCk6IERvbid0IHNhdmUgYW5kIHJlc3RvcmUgZmlsZSBwb3NpdGlvbi4KCgkqIGRlY2wuYyAoY3BfZmluaXNoX2RlY2wpOiBNYWtlIHN0YXRpY3MgaW4gZXh0ZXJuIGlubGluZXMgYW5kCgl0ZW1wbGF0ZXMgY29tbW9uLCBpZiBwb3NzaWJsZSBhbmQgdGhlIHRhcmdldCBkb2Vzbid0IHN1cHBvcnQgd2VhawoJc3ltYm9scy4KCgkqIGRlY2wuYyAoZ3Jva2RlY2xhcmF0b3IpOiBSZW1vdmUgcmVkdW5kYW50IGNhbGxzIHRvCglidWlsZF90eXBlX3ZhcmlhbnQgYW5kIHNvbWUgZHVwbGljYXRlZCBjb2RlLgoJKiBzaWcuYyAoYnVpbGRfc2lnbmF0dXJlX3JlZmVyZW5jZV90eXBlKTogT25seSB0YWtlIHRoZSB0eXBlIHBhcm0uCgkoYnVpbGRfc2lnbmF0dXJlX3BvaW50ZXJfdHlwZSk6IExpa2V3aXNlLgoJKiB0cmVlLmMgKGJ1aWxkX2NwbHVzX21ldGhvZF90eXBlKTogQWRqdXN0LgoJKiBjcC10cmVlLmg6IFVwZGF0ZS4KCjE5OTgtMTAtMDQgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQG1hcmttaXRjaGVsbC5jb20+CgoJKiBjYWxsLmMgKGJ1aWxkX292ZXJfY2FsbCk6IE1ha2UgcGVkd2FybnMgYWJvdXQgZHJvcHBlZCBxdWFsaWZpZXJzCglpbnRvIGZ1bGwtZmxlZGdlZCBlcnJvcnMuCgkqIGN2dC5jIChjb252ZXJ0X3RvX3JlZmVyZW5jZSk6IExpa2V3aXNlLgoJKiB0eXBlY2suYyAoY29udmVydF9mb3JfYXNzaWdubWVudCk6IExpa2V3aXNlLgoKCSogc2VhcmNoLmMgKGV4cGFuZF91cGNhc3RfdnRhYmxlcyk6IEluIGFkZGl0aW9uIHRvIHVuc2V0dGluZwoJVFJFRV9SRUFET05MWSwgcmVtb3ZlIHRvcC1sZXZlbCBjb25zdCB0eXBlIHF1YWxpZmllci4KCjE5OTgtMTAtMDMgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQG1hcmttaXRjaGVsbC5jb20+CgoJKiBjbGFzcy5jIChjdXJyZW50X2NsYXNzX3B0ciwgY3VycmVudF9jbGFzc19yZWYpOiBDbGFyaWZ5Cglkb2N1bWVudGF0aW9uLgoJKiBjdnQuYyAob2NwX2NvbnZlcnQpOiBEb24ndCBleHBlY3QgZm9sZCB0byByZW1vdmUgYWxsIHRyaXZpYWwKCU5PUCB0eXBlIGNvbnZlcnNpb25zLgoJKiBkZWNsLmMgKGRlY2xzX21hdGNoKTogVXNlIGNvbXB0eXBlcyBkaXJlY3RseTsgaWdub3JlCglxdWFsaWZpZXJzIG9uIHRoZSBERUNMLgoJKGR1cGxpY2F0ZV9kZWNscyk6IFJlbW92ZSBxdWFsaWZpZXIgY2hlY2tzIG9uIERFQ0wuCgkoZ3Jva2RlY2xhcmF0b3IpOiBNYWtlIHRoZSB0eXBlIGJ1aWx0IHVwIGluY2x1ZGUgdG9wLWxldmVsCglxdWFsaWZpZXJzLgoJKiBkZWNsMi5jIChkb19kdG9ycyk6IEZpeCBzcGVsbGluZyBlcnJvci4KCSogZXJyb3IuYyAoZHVtcF9zaW1wbGVfZGVjbCk6IERvbid0IGxvb2sgYXQgcXVhbGlmaWVycyBvbiB0aGUgZGVjbAoJd2hlbiBwcmludGluZyB0eXBlIGluZm9ybWF0aW9uLgoJKiBpbml0LmMgKGJ1aWxkX25ld18xKTogQWRkIGRvY3VtZW50YXRpb24uICBEZWFsIHdpdGggdGhlIGZhY3QKCXRoYXQgdHlwZSBvZiBhbGxvY2F0ZWQgbWVtb3J5IG5vdyBjb250YWlucyBxdWFsaWZpZXJzLgoJKiBsZXguYyAoaXNfZ2xvYmFsKTogSW1wcm92ZSBlcnJvci1yZWNvdmVyeS4KCSogc2lnLmMgKGJ1aWxkX21lbWJlcl9mdW5jdGlvbl9wb2ludGVyKTogRG9uJ3QgY2FzdCBhd2F5IGNvbnN0CglvbiBmaWVsZHMgb2Ygc2lndGFibGVfZW50cnlfdHlwZS4KCSogdHJlZS5jIChsdmFsdWVfdHlwZSk6IERvbid0IGxvb2sgYXQgdG9wLWxldmVsIHF1YWxpZmllcnMgb24KCWV4cHJlc3Npb25zLgoJKiB0eXBlY2suYyAoZGVjYXlfY29udmVyc2lvbik6IExpa2V3aXNlLgoJKGJ1aWxkX2NvbXBvbmVudF9yZWYpOiBNYWtlIHN1cmUgdGhlIHR5cGUgb2YgdGhlIENPTVBPTkVOVF9SRUYKCWNvbnRhaW5zIHRvcC1sZXZlbCBxdWFsaWZpZXJzLCBhcyBhcHByb3ByaWF0ZS4gIEltcHJvdmUKCWVycm9yLWhhbmRsaW5nLgoJKGJ1aWxkX2luZGlyZWN0X3JlZik6IFNpbXBsaWZ5LiAgRG9uJ3Qgc3RyaXAgdG9wLWxldmVsIHF1YWxpZmllcnMuCgkoYnVpbGRfYXJyYXlfcmVmKTogTGlrZXdpc2UuCgkoYnVpbGRfdW5hcnlfb3ApOiBJbXByb3ZlIGVycm9yLXJlY292ZXJ5LgoJKHVuYXJ5X2NvbXBsZXhfbHZhbHVlKTogTWFrZSB0YWtpbmcgdGhlIGFkZHJlc3MgYSBib3VuZCBtZW1iZXIKCWZ1bmN0aW9uIGFuIGVycm9yLCBub3QgYSBzb3JyeS4KCShidWlsZF9jb25kaXRpb25hbF9leHByKTogTG9vayBhdCB0aGUgdHlwZSBxdWFsaWZpZXJzLCBub3QgdGhlCglxdWFsaWZpZXJzIG9uIHRoZSBleHByZXNzaW9uIGl0c2VsZi4KCjE5OTgtMTAtMDMgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIGRlY2wyLmMgKG1lcmdlX2Z1bmN0aW9ucyk6IFJlbW92ZSBkdXBsaWNhdGVzLgoKCSogZGVjbDIuYzogQWRkIC1me25vLSx9aW1wbGljaXQtaW5saW5lLXRlbXBsYXRlcy4KCShpbXBvcnRfZXhwb3J0X2RlY2wpOiBDaGVjayBpdC4KCgkqIGRlY2wuYyAobG9va3VwX25hbWVfcmVhbCk6IFRlbXBsYXRlIHBhcm1zIGFsc28gdGFrZSBwcmVjZWRlbmNlCglvdmVyIGltcGxpY2l0IHR5cGVuYW1lLiAgT25seSB3YXJuIGlmIHl5bGV4LgoKCSogdHlwZWNrLmMgKGJ1aWxkX2NvbmRpdGlvbmFsX2V4cHIpOiBPbmx5IGZvbGQgaWYgaWZleHAgaXMgYW4KCUlOVEVHRVJfQ1NULgoKCSogZGVjbDIuYyAoZmluaXNoX3Z0YWJsZV92YXJkZWNsKTogQ2hlY2sgREVDTF9JTlRFUkZBQ0VfS05PV04KCWluc3RlYWQgb2YgbGlua2FnZS4KCjE5OTgtMTAtMDEgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIGNwLXRyZWUuaCAoRk9STUFUX1ZCQVNFX05BTUUpOiBOZXcgbWFjcm8uCgkqIGNsYXNzLmMgKGJ1aWxkX3ZiYXNlX3BvaW50ZXIpOiBVc2UgaXQuCgkqIHJ0dGkuYyAoZXhwYW5kX2NsYXNzX2Rlc2MpOiBMaWtld2lzZS4KCSogdHJlZS5jIChidWlsZF92YmFzZV9wb2ludGVyX2ZpZWxkcyk6IExpa2V3aXNlLgoKVGh1IE9jdCAgMSAxMDo0Mzo0NSAxOTk4ICBOaWNrIENsaWZ0b24gIDxuaWNrY0BjeWdudXMuY29tPgoKCSogZGVjbC5jIChzdGFydF9kZWNsKTogQWRkIGludm9jYXRpb24gb2YKCVNFVF9ERUZBVUxUX0RFQ0xfQVRUUklCVVRFUywgaWYgZGVmaW5lZC4KCShzdGFydF9mdW5jdGlvbik6IEFkZCBpbnZvY2F0aW9uIG9mCglTRVRfREVGQVVMVF9ERUNMX0FUVFJJQlVURVMsIGlmIGRlZmluZWQuCgoJKiBsZXguYzogUmVwbGFjZSBvY2N1cnJlbmNlcyBvZiBIQU5ETEVfU1lTVl9QUkFHTUEgd2l0aAoJSEFORExFX0dFTkVSSUNfUFJBR01BUy4KCjE5OTgtMDktMjggIEFudGhvbnkgR3JlZW4gIDxncmVlbkBjeWdudXMuY29tPgoKCSogc2VtYW50aWNzLmMgKGZpbmlzaF9hc21fc3RtdCk6IEFsd2F5cyBwZXJtaXQgdm9sYXRpbGUgYXNtcy4KCjE5OTgtMDktMjggIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQG1hcmttaXRjaGVsbC5jb20+CgoJKiBkZWNsLmMgKGdyb2tkZWNsYXJhdG9yKTogVGlnaHRlbiBjaGVja3MgZm9yIGludmFsaWQKCWRlc3RydWN0b3JzLiAgSW1wcm92ZSBlcnJvci1tZXNzYWdlcyBhbmQgZXJyb3ItcmVjb3ZlcnkuCgkqIGRlY2wyLmMgKGNoZWNrX2NsYXNzZm4pOiBEb24ndCBhc3N1bWUgdGhhdCBtYW5nbGVkIGRlc3RydWN0b3IKCW5hbWVzIGNvbnRhaW4gdHlwZSBpbmZvcm1hdGlvbi4KCjE5OTgtMDktMjUgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIHNlYXJjaC5jIChnZXRfYmFzZV9kaXN0YW5jZSk6IFJlbW92ZSBhc3NlcnQuCgoJKiBkZWNsMi5jIChidWlsZF9hbm9uX3VuaW9uX3ZhcnMpOiBEb24ndCBwcm9jZXNzIGEgZmllbGQgd2l0aCBubwoJbmFtZS4KCShmaW5pc2hfYW5vbl91bmlvbik6IEFsc28gY29tcGxhaW4gYWJvdXQgbG9jYWwgYW5vbiB1bmlvbnMgd2l0aCBubwoJbWVtYmVycy4KCjE5OTgtMDktMjUgIE1hcnRpbiB2b24gTPZ3aXMgIDxsb2V3aXNAaW5mb3JtYXRpay5odS1iZXJsaW4uZGU+CgoJKiBkZWNsLmMgKGxvb2t1cF9uYW1lc3BhY2VfbmFtZSk6IElmIHRoZSBuYW1lIGlzIGEgbmFtZXNwYWNlLAoJcmV0dXJuIGl0IGltbWVkaWF0ZWx5LgoKRnJpIFNlcCAyNSAxMTo0NTozOCAxOTk4ICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBjcC10cmVlLmggKGRlZmluZV9jYXNlX2xhYmVsKTogUmVtb3ZlIHVudXNlZCBwYXJhbWV0ZXIuCgkoY2hlY2tfamF2YV9tZXRob2QpOiBMaWtld2lzZS4KCShncm9rY2xhc3Nmbik6IExpa2V3aXNlLgoJKGV4cGFuZF9hZ2dyX2luaXQpOiBMaWtld2lzZS4KCShidWlsZF94X2RlbGV0ZSk6IExpa2V3aXNlLgoJKG1heWJlX2VuZF9tZW1iZXJfdGVtcGxhdGVfcHJvY2Vzc2luZyk6IExpa2V3aXNlLgoJKHVuc2hhcmVfYmFzZV9iaW5mb3MpOiBBZGQgcHJvdG90eXBlLgoJKHN0cmluZ19jb252X3ApOiBMaWtld2lzZS4KCShteV9mcmllbmRseV9hYm9ydCk6IE1hcmsgd2l0aCBBVFRSSUJVVEVfTk9SRVRVUk4uCgoJKiBjdnQuYyAoYnVpbGRfdXBfcmVmZXJlbmNlKTogUmVtb3ZlIHVudXNlZCBwYXJhbWV0ZXIKCWBjaGVja2NvbnN0JywgYWxsIGNhbGxlcnMgY2hhbmdlZC4KCShidWlsZF90eXBlX2NvbnZlcnNpb24pOiBNYXJrIHBhcmFtZXRlciBgY29kZScgd2l0aAoJQVRUUklCVVRFX1VOVVNFRC4KCShidWlsZF9leHByX3R5cGVfY29udmVyc2lvbik6IEluaXRpYWxpemUgdmFyaWFibGUgYGNvbnYnLgoKCSogZGVjbC5jIChwdXNoX25hbWVzcGFjZSk6IEluaXRpYWxpemUgdmFyaWFibGUgYGQnLgoJKGRlZmluZV9jYXNlX2xhYmVsKTogUmVtb3ZlIHVudXNlZCBwYXJhbWV0ZXIgYGRlY2wnLCBhbGwgY2FsbGVycwoJY2hhbmdlZC4KCgkqIGRlY2wyLmMgKGxhbmdfZGVjb2RlX29wdGlvbik6IElmICFVU0VfQ1BQTElCLCBtYXJrIHBhcmFtZXRlcgoJYGFyZ2MnIHdpdGggQVRUUklCVVRFX1VOVVNFRC4KCShncm9rY2xhc3Nmbik6IFJlbW92ZSB1bnVzZWQgcGFyYW1ldGVyIGBjbmFtZScsIGFsbCBjYWxsZXJzCgljaGFuZ2VkLgoJKGNoZWNrX2phdmFfbWV0aG9kKTogTGlrZXdpc2UgZm9yIHBhcmFtZXRlciBgY3R5cGUnLgoJKGNvcHlfYXNzaWdubWVudF9hcmdfcCk6IE1hcmsgcGFyYW1ldGVyIGB2aXJ0dWFscCcgd2l0aAoJQVRUUklCVVRFX1VOVVNFRC4KCShmaW5pc2hfcHJldnRhYmxlX3ZhcmRlY2wpOiBMaWtld2lzZSBmb3IgcGFyYW1ldGVyIGBwcmV2Jy4KCgkqIGV4cHIuYyAoZXh0cmFjdF9pbml0KTogTGlrZXdpc2UgZm9yIHBhcmFtZXRlcnMgYGRlY2wnIGFuZCBgaW5pdCcuCgoJKiBpbml0LmMgKGV4cGFuZF9hZ2dyX2luaXRfMSk6IFJlbW92ZSB1bnVzZWQgcGFyYW1ldGVyCglgYWxpYXNfdGhpcycsIGFsbCBjYWxsZXJzIGNoYW5nZWQuCgkoZXhwYW5kX2FnZ3JfaW5pdCk6IExpa2V3aXNlLgoJKGV4cGFuZF9kZWZhdWx0X2luaXQpOiBMaWtld2lzZS4KCShidWlsZF9uZXdfMSk6IEluaXRpYWxpemUgdmFyaWFibGUgYHN1c3AnLgoJKGJ1aWxkX3hfZGVsZXRlKTogUmVtb3ZlIHVudXNlZCBwYXJhbWV0ZXIgYHR5cGUnLCBhbGwgY2FsbGVycwoJY2hhbmdlZC4KCgkqIGxleC5jIChzZXRfdHlwZWRlY2xfaW50ZXJmYWNlX2luZm8pOiBNYXJrIHBhcmFtZXRlciBgcHJldicgd2l0aAoJQVRUUklCVVRFX1VOVVNFRC4KCShyZWFkZXNjYXBlKTogVXNlICh1bnNpZ25lZCkgdmFsdWUgaW4gc2hpZnQuCgkocmVhbF95eWxleCk6IExpa2V3aXNlLiAgTGlrZXdpc2UuICBBbHNvIGNhc3QgYHNpemVvZicgdG8gaW50IHdoZW4KCWNvbXBhcmluZyB0byBhIHNpZ25lZCBxdWFudGl0eS4KCgkqIHB0LmMgKG1heWJlX2VuZF9tZW1iZXJfdGVtcGxhdGVfcHJvY2Vzc2luZyk6IFJlbW92ZSB1bnVzZWQKCXBhcmFtZXRlciBgZGVjbCcsIGFsbCBjYWxsZXJzIGNoYW5nZWQuCgkoY2hlY2tfZXhwbGljaXRfc3BlY2lhbGl6YXRpb24pOiBBZGQgYnJhY2VzIGFyb3VuZCBlbXB0eSBib2R5IGluCglhbiBlbHNlLXN0YXRlbWVudC4KCShjdXJyZW50X3RlbXBsYXRlX2FyZ3MpOiBJbml0aWFsaXplIHZhcmlhYmxlIGBhcmdzJy4KCShsb29rdXBfdGVtcGxhdGVfY2xhc3MpOiBMaWtld2lzZSBmb3IgdmFyaWFibGUgYHByZXZfbG9jYWxfZW51bScuCgkodHN1YnN0X2RlY2wpOiBMaWtld2lzZSBmb3IgdmFyaWFibGUgYHInLgoJKHNldF9tYW5nbGVkX25hbWVfZm9yX3RlbXBsYXRlX2RlY2wpOiBJbml0aWFsaXplIHZhcmlhYmxlCglgY29udGV4dCcuCgoJKiBzcGV3LmMgKHNjYW5fdG9rZW5zKTogQ2hhbmdlIHR5cGUgb2YgcGFyYW1ldGVyIGBuJyB0byB1bnNpZ25lZC4KCUxpa2V3aXNlIGZvciB2YXJpYWJsZSBgaScuCgkoeXlsZXgpOiBJbml0aWFsaXplIHZhcmlhYmxlIGB0cnJyJy4KCgkqIHR5cGVjay5jIChjb21wcGFybXMpOiBNYXJrIHZhcmlhYmxlIGBzdHJpY3QnIHdpdGgKCUFUVFJJQlVURV9VTlVTRUQuCgoJKiB4cmVmLmMgKHNpbXBsaWZ5X3R5cGUpOiBDYXN0IGFyZ3VtZW50IG9mIGN0eXBlIGZ1bmN0aW9uIHRvCglgdW5zaWduZWQgY2hhcicuCgoxOTk4LTA5LTI0ICBNYXJrIE1pdGNoZWxsICA8bWFya0BtYXJrbWl0Y2hlbGwuY29tPgoKCSogY3AtdHJlZS5oIChsYW5ndWFnZV9sdmFsdWVfdmFsaWQpOiBSZW1vdmUuCgkqIGRlY2wuYyAoZ3Jva2RlY2xhcmF0b3IpOiBEb24ndCBkaXNhbGxvdyByZWZlcmVuY2VzIHRvIGZ1bmN0aW9ucy4KCSogdHJlZS5jIChsdmFsdWVfcF8xKTogTmV3IGZ1bmN0aW9uLCBjb21iaW5pbmcgZHVwbGljYXRlZAoJY29kZSBmcm9tIC4uLgoJKGx2YWx1ZV9wKTogVXNlIGl0LgoJKHJlYWxfbHZhbHVlX3ApOiBMaWtld2lzZS4KCSogdHlwZWNrLmMgKGxhbmd1YWdlX2x2YWx1ZV92YWxpZCk6IFJlbW92ZS4KCShidWlsZF9tb2RpZnlfZXhwcik6IFRyZWF0IEZVTkNUSU9OX1RZUEVzIGFzIHJlYWRvbmx5LCBldmVuIHRob3VnaAoJdGhleSBkb24ndCBoYXZlIFRSRUVfUkVBRE9OTFkgc2V0LgoJKiB0eXBlY2syLmMgKHJlYWRvbmx5X2Vycm9yKTogQWRkIGNhc2UgZm9yIEZVTkNUSU9OX0RFQ0xzLgoKMTk5OC0wOS0yNCAgQmVuamFtaW4gS29zbmlrICA8YmtvekBsb29ueS5jeWdudXMuY29tPgoKCSogc3Bldy5jICh5eWxleCk6IEdpdmUgZGlhZ25vc3RpYy4KCSogaGFzaC5oIChpc19yZXNlcnZlZF93b3JkKTogQWRkIGV4cG9ydC4KCSogZ3h4LmdwZXJmOiBMaWtld2lzZS4KCSogbGV4LmggKHJpZCk6IEFkZCBSSURfRVhQT1JULgoJKiBsZXguYyAoaW5pdF9wYXJzZSk6IExpa2V3aXNlLgoKVHVlIFNlcCAyMiAyMTowMToxOSAxOTk4ICBHZXJhbGQgUGZlaWZlciAgPHBmZWlmZXJAZGJhaS50dXdpZW4uYWMuYXQ+CgoJKiBmcmllbmQuYyAoZG9fZnJpZW5kKTogTWFrZSB3YXJuaW5nIGEgZnVsbCBzZW50ZW5jZS4KCjE5OTgtMDktMjIgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQG1hcmttaXRjaGVsbC5jb20+CgoJKiBwYXJzZS55IChjb21wb25lbnRfZGVjbF9saXN0KTogSW1wcm92ZSBlcnJvci1yZWNvdmVyeS4KCjE5OTgtMDktMjIgIEJlbmphbWluIEtvc25payAgPGJrb3pAbG9vbnkuY3lnbnVzLmNvbT4KCgkqIGRlY2wuYyAobWFrZV90eXBlbmFtZV90eXBlKTogTW92ZSBlcnJvciB0byBwb2ludCB3aGVyZSBuYW1lCgl2YXJpYWJsZSBjYW4gYmUgdXNlZCBieSBkdW1wX3R5cGUuCgoxOTk4LTA5LTIyICBNYXJrIE1pdGNoZWxsICA8bWFya0BtYXJrbWl0Y2hlbGwuY29tPgoKCSogZGVjbC5jIChncm9rZm5kZWNsKTogSW1wcm92ZSBlcnJvci1yZWNvdmVyeS4KCSogZGVjbDIuYyAoZ3Jva2ZpZWxkKTogTGlrZXdpc2UuCgkqIHB0LmMgKGZpbmlzaF9tZW1iZXJfdGVtcGxhdGVfZGVjbCk6IExpa2V3aXNlLgoKMTk5OC0wOS0yMCAgTWFydGluIHZvbiBM9ndpcyAgPGxvZXdpc0BpbmZvcm1hdGlrLmh1LWJlcmxpbi5kZT4KCgkqIG1ldGhvZC5jIChoYWNrX2lkZW50aWZpZXIpOiBGaW5kaW5nIG11bHRpcGxlIG1lbWJlcnMgaXMgYWx3YXlzCglhbiBlcnJvci4KCjE5OTgtMDktMjEgIFBlciBCb3RobmVyICA8Ym90aG5lckBjeWdudXMuY29tPgoKCSogTWFrZS1sYW5nLmluIChjKystZmlsdCk6ICBMaW5rIGxpYmliZXJ0eS5hIGFmdGVyIGN4eG1haW4uby4KCk1vbiBTZXAgMjEgMDE6NTM6MDUgMTk5OCAgRmVsaXggTGVlICA8ZmxlZUBjeWdudXMuY29tPgoKCSogbGV4LmMgKGluaXRfbGV4KTogVXNlIGdldGVudiAoIkxBTkciKSwgbm90IEdFVF9FTlZJUk9OTUVOVCAoKS4KCjE5OTgtMDktMjAgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQG1hcmttaXRjaGVsbC5jb20+CgoJKiBjbGFzcy5jIChtYXliZV93YXJuX2Fib3V0X292ZXJseV9wcml2YXRlX2NsYXNzKTogUmVmb3JtYXQuCgoxOTk4LTA5LTE3ICBBbmRyZXcgTWFjTGVvZCAgPGFtYWNsZW9kQGN5Z251cy5jb20+CgoJKiBleGNlcHRpb24uY2MgKF9fY3BsdXNfdHlwZV9tYXRjaGVyKTogUmVhbGlnbiBzb21lIGNvZGUuCgoxOTk4LTA5LTE2ICBNYXJrIE1pdGNoZWxsICA8bWFya0BtYXJrbWl0Y2hlbGwuY29tPgoKCSogTWFrZS1sYW5nLmluICh0aW5mby5vKTogVXNlIENYWEZMQUdTIHdoZW4gY29tcGlsaW5nLgoJKHRpbmZvMi5vKTogTGlrZXdpc2UuCgkoZXhjZXB0aW9uLm8pOiBMaWtld2lzZS4KCShuZXcubyk6IExpa2V3aXNlLgoJKG9wbmV3Lm8pOiBMaWtld2lzZS4KCShvcG5ld250Lm8pOiBMaWtld2lzZS4KCShvcHZuZXcubyk6IExpa2V3aXNlLgoJKG9wdm5ld250Lm8pOiBMaWtld2lzZS4KCShvcGRlbC5vKTogTGlrZXdpc2UuCgkob3BkZWxudC5vKTogTGlrZXdpc2UuCgkob3B2ZGVsLm8pOiBMaWtld2lzZS4KCShvcHZkZWxudC5vKTogTGlrZXdpc2UuCgoxOTk4LTA5LTE2ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEBjeWdudXMuY29tPgoKCSogZGVjbC5jIChpbml0X2RlY2xfcHJvY2Vzc2luZyk6IEtpbGwgX19idWlsdGluX2ZwIGFuZCBfX2J1aWx0aW5fc3AuCgoxOTk4LTA5LTE1ICBBbGV4YW5kcmUgT2xpdmEgIDxvbGl2YUBkY2MudW5pY2FtcC5icj4KCgkqIGNhbGwuYyAoYnVpbGRfZmllbGRfY2FsbCk6IEhhbmRsZSBzdGF0aWMgZGF0YSBtZW1iZXJzIHRvby4KCgkqIHR5cGVjay5jIChjb21wdHlwZXMpOiBXaGVuIGNvbXBhcmluZyBwb2ludGVyIHR5cGVzLCBjaGVjawoJd2hldGhlciByZWZlcnJlZCB0eXBlcyBtYXRjaCBldmVuIGluIHN0cmljdGVzdCBtb2Rlcy4KCjE5OTgtMDktMTUgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQG1hcmttaXRjaGVsbC5jb20+CgoJKiBjcC10cmVlLmg6IFJldmVydCBwcmV2aW91cyBjaGFuZ2UuCgkoZmluaXNoX3N0cnVjdF9tZXRob2RzKTogUmVtb3ZlIGRlY2xhcmF0aW9uLgoJKiBjbGFzcy5jOiBSZXZlcnQgcHJldmlvdXMgY2hhbmdlLgoJKG1heWJlX3dhcm5fYWJvdXRfb3Zlcmx5X3ByaXZhdGVfY2xhc3MpOiBOZXcgZnVuY3Rpb24uCgkoZmluaXNoX3N0cnVjdF9tZXRob2RzKTogRGVjbGFyZSBoZXJlLCBhbmQgbWFrZSBzdGF0aWMuICBSZW1vdmUKCXVubmVjZXNzYXJ5IHBhcmFtZXRlcnMuICBUaWR5IHNsaWdodGx5LiAgVXNlCgltYXliZV93YXJuX2Fib3V0X292ZXJseV9wcml2YXRlX2NsYXNzLgoJKGZpbmlzaF9zdHJ1Y3RfMSk6IEFkanVzdC4gIFJlbW92ZSBjaGVjayBmb3IgcHJpdmF0ZSBjb25zdHJ1Y3RvcnMsCglub3cgZG9uZSBlbHNld2hlcmUuCgkoZmluaXNoX3N0cnVjdCk6IEFkanVzdC4KCjE5OTgtMDktMTUgIEFuZHJldyBNYWNMZW9kICA8YW1hY2xlb2RAY3lnbnVzLmNvbT4KCgkqIGV4Y2VwdC5jIChleHBhbmRfc3RhcnRfY2F0Y2hfYmxvY2spOiBObyBuZWVkIHRvIGNoZWNrIGZvciBuZXcKCWV4Y2VwdGlvbiBtb2RlbC4KCShwcm9jZXNzX3N0YXJ0X2NhdGNoX2Jsb2NrX29sZCk6IERlbGV0ZWQuCgkocHJvY2Vzc19zdGFydF9jYXRjaF9ibG9jayk6IEFkZCBjYWxsIHRvIHN0YXJ0X2RlY2xfMSgpLgoJKGV4cGFuZF9lbmRfY2F0Y2hfYmxvY2spOiBBZGQgY2FsbCB0byBlbmRfY2F0Y2hfaGFuZGxlcigpLgoJKiBleGNlcHRpb24uY2MgKF9fY3BsdXNfdHlwZV9tYXRjaGVyKTogT25seSBjaGVjayB0aGUgZXhjZXB0aW9uCglsYW5ndWFnZSBpZiB0aGVyZSBpcyBhbiBleGNlcHRpb24gdGFibGUuCgoxOTk4LTA5LTE1ICBBbmRyZXcgTWFjTGVvZCAgPGFtYWNsZW9kQGN5Z251cy5jb20+CgoJKiBzZWFyY2guYyAoZXhwYW5kX2luZGlyZWN0X3Z0YmxzX2luaXQpOiBNYXJrIHRlbXBvcmFyeSBzdGFjayBzbG90cwoJYXMgdXNlZCB0byBwcmV2ZW50IGNvbmZsaWN0cyB3aXRoIHZpcnR1YWwgZnVuY3Rpb24gdGFibGVzLgoKMTk5OC0wOS0xNCAgTWFyayBNaXRjaGVsbCAgPG1hcmtAbWFya21pdGNoZWxsLmNvbT4KCgkqIGNwLXRyZWUuaCAobGFuZ190eXBlKTogQWRkIGhhc19ub25fcHJpdmF0ZV9zdGF0aWNfbWVtX2ZuLgoJKENMQVNTVFlQRV9IQVNfTk9OX1BSSVZBVEVfU1RBVElDX01FTV9GTik6IE5ldyBtYWNybywgdG8gYWNjZXNzIGl0LgoJKiBjbGFzcy5jIChtYXliZV9jbGFzc190b29fcHJpdmF0ZV9wKTogTmV3IGZ1bmN0aW9uLgoJKGZpbmlzaF9zdHJ1Y3RfbWV0aG9kcyk6IFVzZSBpdC4KCShmaW5pc2hfc3RydWN0XzEpOiBMaWtld2lzZS4KCShmaW5pc2hfc3RydWN0KTogU2V0IENMQVNTVFlQRV9IQVNfTk9OX1BSSVZBVEVfU1RBVElDX01FTV9GTiBpZgoJYXBwcm9wcmlhdGUuCgoJKiBwdC5jIChjaGVja19zcGVjaWFsaXphdGlvbl9zY29wZSk6IEZpeCBzcGVsbGluZyBlcnJvci4KCShjaGVja19leHBsaWNpdF9zcGVjaWFsaXphdGlvbik6IFJlbW92ZSBjb2RlIHRvIGhhbmRsZSBleHBsaWNpdAoJc3BlY2lhbGl6YXRpb25zIGluIGNsYXNzIHNjb3BlOyB0aGV5IGFyZSBub3cgY29ycmVjdGx5IGRpYWdub3NlZAoJYXMgZXJyb3JzLgoKMTk5OC0wOS0xMCAgTWFyayBNaXRjaGVsbCAgPG1hcmtAbWFya21pdGNoZWxsLmNvbT4KCgkqIGRlY2wuYyAocHVzaGRlY2wpOiBEb24ndCBjb3B5IHR5cGVzIGlmIHRoZQoJREVDTF9BQlNUUkFDVF9PUklHSU4gb2YgdGhlIG5ldyBkZWNsIG1hdGNoZXMgdGhlIFRZUEVfTkFNRSBvZiB0aGUKCXR5cGUuCgoxOTk4LTA5LTA5ICBLcmlhbmcgTGVyZHN1d2FuYWtpaiAgPGxlcmRzdXdhQHNjZi1mcy51c2MuZWR1PgoKCSogY2xhc3MuYyAoZ2V0X2VuY2xvc2luZ19jbGFzcyk6IE5ldyBmdW5jdGlvbi4KCShpc19iYXNlX29mX2VuY2xvc2luZ19jbGFzcyk6IExpa2V3aXNlLgoJKiBjcC10cmVlLmggKGdldF9lbmNsb3NpbmdfY2xhc3MpOiBEZWNsYXJlLgoJKGlzX2Jhc2Vfb2ZfZW5jbG9zaW5nX2NsYXNzKTogTGlrZXdpc2UuCgkqIHB0LmMgKGNvZXJjZV90ZW1wbGF0ZV9wYXJtcyk6IFVzZSB0aGVtLgoKMTk5OC0wOS0wOSAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogZysrc3BlYy5jIChsYW5nX3NwZWNpZmljX2RyaXZlcik6IENoZWNrIHdoZXRoZXIgTUFUSF9MSUJSQVJZIGlzCgludWxsIHRvIGRlY2lkZSB3aGV0aGVyIHRvIHVzZSBpdC4KCgkqIGVycm9yLmMgKGR1bXBfdHlwZV9yZWFsKTogSGFuZGxlIE5BTUVTUEFDRV9ERUNMLgoJKiBwYXJzZS55IChiYXNlX2NsYXNzLjEpOiBBdm9pZCBjcmFzaCBvbiBlcnJvci4KCjE5OTgtMDktMDggIE1hcnRpbiB2b24gTPZ3aXMgIDxsb2V3aXNAaW5mb3JtYXRpay5odS1iZXJsaW4uZGU+CgoJKiBkZWNsLmMgKG1ha2VfdHlwZW5hbWVfdHlwZSk6IElmIGNvbnRleHQgaXMgYSBuYW1lc3BhY2UsIHRoZSBjb2RlCglpcyBpbiBlcnJvci4KCjE5OTgtMDktMDggIE11bWl0IEtoYW4gIDxraGFuQHhyYXlsaXRoLndpc2MuZWR1PgoKCSogcGFyc2UueSAobm9tb2RzX2luaXRkY2wwKTogU2V0IHVwIHRoZSBwYXJzZXIgc3RhY2sgY29ycmVjdGx5LgoKMTk5OC0wOS0wOCAgTWFyayBNaXRjaGVsbCAgPG1hcmtAbWFya21pdGNoZWxsLmNvbT4KCgkqIGNwLXRyZWUuaCAoYW5vbnltb3VzX25hbWVzcGFjZV9uYW1lKTogRGVjbGFyZS4KCSogZGVjbC5jOiBEZWZpbmUgaXQuCgkocHVzaF9uYW1lc3BhY2UpOiBVc2UgYW5vbnltb3VzX25hbWVzcGFjZV9uYW1lLCByYXRoZXIgdGhhbiBsb2NhbAoJc3RhdGljIGFub25fbmFtZS4KCSogZXJyb3IuYyAoZHVtcF9kZWNsKTogSWYgYSBuYW1lc3BhY2UgaXMgbmFtZWQKCWFub255bW91c19uYW1lc3BhY2VfbmFtZSwgY2FsbCBpdCB7YW5vbnltb3VzfS4KCgkqIGRlY2wuYyAoZ3Jva3Bhcm1zKTogRGlzdGluZ3Vpc2ggYmV0d2VlbiByZWZlcmVuY2VzIGFuZCBwb2ludGVycwoJaW4gZXJyb3IgbWVzc2FnZS4KCjE5OTgtMDktMDggIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgkgICAgTWFyayBNaXRjaGVsbCAgPG1hcmtAbWFya21pdGNoZWxsLmNvbT4KCgkqIHB0LmMgKHByb2Nlc3NfcGFydGlhbF9zcGVjaWFsaXphdGlvbik6IENvbnNpc3RlbnRseSBhbGxvY2F0ZQoJYW5kIHplcm8gdHBkLnBhcm1zIGJhc2VkIG9uIG50cGFybXMuICBVc2UgdHBkMi5wYXJtcywgbm90Cgl0cGQucGFybXMsIHdoZXJlIGFwcHJvcHJpYXRlLgoKU3VuIFNlcCAgNiAwMDowMDo1MSAxOTk4ICBKZWZmcmV5IEEgTGF3ICAobGF3QGN5Z251cy5jb20pCgoJKiBNYWtlZmlsZS5pbiAoSU5DTFVERVMpOiBVcGRhdGUgYWZ0ZXIgcmVjZW50IHRvcGxldmVsIGdjYwoJcmVvcmdhbml6YXRpb25zLgoKMTk5OC0wOS0wNSAgTWFyayBNaXRjaGVsbCAgPG1hcmtAbWFya21pdGNoZWxsLmNvbT4KCgkqIGNwLXRyZWUuaCAoVElfUEVORElOR19TUEVDSUFMSVpBVElPTl9GTEFHKTogUmVtb3ZlLgoJKiBjbGFzcy5jIChmaW5pc2hfc3RydWN0KTogUmVtb3ZlIGhhY2tlcnkgdG8gZGVhbCB3aXRoIGV4cGxpY2l0CglzcGVjaWFsaXphdGlvbnMgaW4gY2xhc3Mgc2NvcGUuCgkqIGRlY2wuYyAoZ3Jva2ZuZGVjbCk6IEltcHJvdmUgZXJyb3ItcmVjb3ZlcnkuCgkqIGRlY2wyLmMgKGdyb2tmaWVsZCk6IExpa2V3aXNlLgoJKiBwdC5jIChjaGVja19zcGVjaWFsaXphdGlvbl9zY29wZSk6IE5ldyBmdW5jdGlvbi4KCShiZWdpbl9zcGVjaWFsaXphdGlvbik6IENhbGwgaXQuCgkocHJvY2Vzc19wYXJ0aWFsX3NwZWNpYWxpemF0aW9uKTogTmV3IGZ1bmN0aW9uLCBzcGxpdCBvdXQgZnJvbQoJcHVzaF90ZW1wbGF0ZV9kZWNsLiAgQ2hlY2sgcGFydGlhbCBzcGVjaWFsaXphdGlvbnMgbW9yZQoJc3RyaW5nZW50bHkuCgkocHVzaF90ZW1wbGF0ZV9kZWNsKTogQ2FsbCBpdC4KCShjaGVja19leHBsaWNpdF9zcGVjaWFsaXphdGlvbik6IERvbid0IGF0dGVtcHQgdG8gaGFuZGxlIGV4cGxpY2l0CglzcGVjaWFsaXphdGlvbnMgaW4gY2xhc3Mgc2NvcGUuCgkodGVtcGxhdGVfcGFybV9kYXRhKTogRG9jdW1lbnQuICBBZGQgY3VycmVudF9hcmcgYW5kCglhcmdfdXNlc190ZW1wbGF0ZV9wYXJtcy4KCShtYXJrX3RlbXBsYXRlX3Bhcm0pOiBTZXQgaXQuCgkodHN1YnN0X2FyZ190eXBlcyk6IFJlbW92ZSB1bnVzZWQgdmFyaWFibGUuCgkqIHNlbWFudGljcy5jIChiZWdpbl9jbGFzc19kZWZpbml0aW9uKTogVHdlYWsuCgoxOTk4LTA5LTA0ICBNYXJrIE1pdGNoZWxsICA8bWFya0BtYXJrbWl0Y2hlbGwuY29tPgoKCSogaW5jL3R5cGVpbmZvICh0eXBlX2luZm86OnR5cGVfaW5mbyhjb25zdCBjaGFyKikpOiBNYWtlCglgZXhwbGljaXQnLgoKCSogY3AtdHJlZS5oIChoYXNoX3RyZWVfY29uc19zaW1wbGUpOiBOZXcgbWFjcm8uCgkqIHB0LmMgKHRzdWJzdF9hcmdfdHlwZXMpOiBOZXcgZnVuY3Rpb24uICBVc2UgaGFzaF90cmVlX2NvbnMuCgkoY29lcmNlX3RlbXBsYXRlX3Bhcm1zKTogVXNlIG1ha2VfdGVtcF92ZWMsIGluc3RlYWQgb2YKCW1ha2VfdHJlZV92ZWMuICBEb2N1bWVudCB0aGlzIGJlaGF2aW9yLgoJKGxvb2t1cF90ZW1wbGF0ZV9jbGFzcyk6IExpa2V3aXNlLgoJKHRzdWJzdCwgY2FzZXMgTUVUSE9EX1RZUEUsIEZVTkNUSU9OX1RZUEUpOiBVc2UgdHN1YnN0X2FyZ190eXBlcy4KCVJlbW92ZSBkZWFkIGNvZGUgKGFuZCBhZGQgYXNzZXJ0aW9uIHRvIGNoZWNrIGl0cyBkZWFkbmVzcykuICBGaXgKCWJ1ZyB3LnIudC4gZXhjZXB0aW9uIHNwZWNpZmljYXRpb25zLgoKMTk5OC0wOS0wMyAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogZGVjbDIuYyAoaW1wb3J0X2V4cG9ydF92dGFibGUpOiBBbHdheXMgbWFrZSBhcnRpZmljaWFscyBjb21kYXQuCgkoaW1wb3J0X2V4cG9ydF9kZWNsKTogTGlrZXdpc2UuCgkqIHB0LmMgKG1hcmtfZGVjbF9pbnN0YW50aWF0ZWQpOiBMaWtld2lzZS4KCjE5OTgtMDktMDMgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQG1hcmttaXRjaGVsbC5jb20+CgoJKiBjcC10cmVlLmggKGZpbmlzaF9nbG9iYWxseV9xdWFsaWZpZWRfbWVtYmVyX2NhbGxfZXhwcik6CglSZW5hbWUgdG8gLi4uCgkoZmluaXNoX3F1YWxpZmllZF9jYWxsX2V4cHIpLgoJKiBzZW1hbnRpY3MuYzogTGlrZXdpc2UuCgkqIHBhcnNlLnkgKHByaW1hcnkpOiBVc2UgaXQuCgkqIG1ldGhvZC5jIChoYWNrX2lkZW50aWZpZXIpOiBSZW1vdmUgcmVkdW5kYW50IGNvZGUuCgoJKiBpbml0LmMgKHJlc29sdmVfb2Zmc2V0X3JlZik6IENhbGwgY29udmVydF9mcm9tX3JlZmVyZW5jZSB0bwoJaGFuZGxlIG1lbWJlcnMgb2YgcmVmZXJlbmNlIHR5cGUuICBJbXByb3ZlIGVycm9yIHJlY292ZXJ5LgoKMTk5OC0wOS0wMyAgQmVuamFtaW4gS29zbmlrICA8YmtvekBjeWdudXMuY29tPgoKCSogY3AtdHJlZS5oOiBEZWNsYXJlIHdhcm5fbm9udGVtcGxhdGVfZnJpZW5kLgoJKiBkZWNsMi5jIChsYW5nX2RlY29kZV9vcHRpb24pOiBTZXQuCgkqIGxhbmctb3B0aW9ucy5oOiBBZGQgLVdub24tdGVtcGxhdGUtZnJpZW5kLgoJKiBmcmllbmQuYyAoZG9fZnJpZW5kKTogVXNlIHRvIHRvZ2dsZSBub24tdGVtcGxhdGUgZnVuY3Rpb24gd2FybmluZy4KCjE5OTgtMDktMDMgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQG1hcmttaXRjaGVsbC5jb20+CgoJKiBkZWNsLmMgKGZpbmlzaF9lbnVtKTogRG9uJ3QgcmVzb2x2ZSBDT05TVF9ERUNMcyB0byB0aGVpcgoJY29ycmVzcG9uZGluZyBJTlRFR0VSX0NTVHMgd2hlbiBwcm9jZXNzaW5nX3RlbXBsYXRlX2RlY2wuCgkqIHB0LmMgKHRzdWJzdF9lbnVtKTogVHdlYWsgYWNjb3JkaW5nbHkuCgoxOTk4LTA5LTAzICBCZW5qYW1pbiBLb3NuaWsgIDxia296QHJoaW5vLmN5Z251cy5jb20+CgoJKiBkZWNsLmMgKHB1c2hkZWNsX2NsYXNzX2xldmVsKTogQWRkIHdhcm5pbmcgaGVyZS4KCShwdXNoZGVjbCk6IFR3ZWFrLgoKMTk5OC0wOS0wMiAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogY3Z0LmMgKGNvbnZlcnRfcG9pbnRlcl90b19yZWFsKTogVGlkeS4KCSogc2VhcmNoLmMgKGdldF9iYXNlX2Rpc3RhbmNlX3JlY3Vyc2l2ZSk6IFNpbXBsaWZ5LgoJKGdldF9iYXNlX2Rpc3RhbmNlKTogTGlrZXdpc2UuCgoJKiBwdC5jICh1bmlmeSk6IE9ubHkgc3BlY2lhbC1jYXNlIElOVEVHRVJfVFlQRSBpZiBpdCB1c2VzIHRlbXBsYXRlCglwYXJtcy4KCldlZCBTZXAgMDIgMDk6MjU6MjkgMTk5OCAgTmljayBDbGlmdG9uICA8bmlja2NAY3lnbnVzLmNvbT4KCgkqIGxleC5jIChjaGVja19uZXdsaW5lKTogIENhbGwgSEFORExFX1BSQUdNQSBiZWZvcmUKCUhBTkRMRV9TWVNWX1BSQUdNQSBpZiBib3RoIGFyZSBkZWZpbmVkLiAgR2VuZXJhdGUgd2FybmluZyBtZXNzYWdlcwoJaWYgdW5rbm93biBwcmFnbWFzIGFyZSBlbmNvdW50ZXJlZC4KCShoYW5kbGVfc3lzdl9wcmFnbWEpOiBJbnRlcnByZXQgcmV0dXJuIGNvZGUgZnJvbQoJaGFuZGxlX3ByYWdtYV90b2tlbiAoKS4gIFJldHVybiBzdWNjZXNzL2ZhaWx1cmUgaW5kaWNhdGlvbiByYXRoZXIKCXRoYW4gbmV4dCB1bnByb2Nlc3NlZCBjaGFyYWN0ZXIuCgkocHJhZ21hX2dldGMpOiBOZXcgZnVuY3Rpb246IHJldHJpZXZlcyBjaGFyYWN0ZXJzIGZyb20gdGhlCglpbnB1dCBzdHJlYW0uICBEZWZpbmVkIHdoZW4gSEFORExFX1BSQUdNQSBpcyBkZWZpbmVkLgoJKHByYWdtYV91bmdldGMpOiBOZXcgZnVuY3Rpb246IHJlcGxhY2VzIGNoYXJhY3RlcnMgYmFjayBpbnRvIHRoZQoJaW5wdXQgc3RyZWFtLiAgRGVmaW5lZCB3aGVuIEhBTkRMRV9QUkFHTUEgaXMgZGVmaW5lZC4KCjE5OTgtMDktMDEgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIGRlY2wyLmMgKG91dHB1dF92dGFibGVfaW5oZXJpdCk6IFVzZSAlY0RJR0lUIGluIHRoZSBvcGVyYW5kcy4KCSogY2xhc3MuYyAoYnVpbGRfdnRhYmxlX2VudHJ5X3JlZik6IExpa2V3aXNlLgoKMTk5OC0wOS0wMSAgTWFyayBNaXRjaGVsbCAgPG1hcmtAbWFya21pdGNoZWxsLmNvbT4KCgkqIGNwLXRyZWUuaCAoREVDTF9GUklFTkRfUFNFVURPX1RFTVBMQVRFX0lOU1RBTlRJQVRJT04pOiBOZXcgbWFjcm8uCgkqIGRlY2wyLmMgKGltcG9ydF9leHBvcnRfZGVjbCk6IExpa2V3aXNlLgoJKiBwdC5jIChpbnN0YW50aWF0ZV9kZWNsKTogVXNlIGl0LgoKMTk5OC0wOS0wMSAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogZGVjbC5jIChsb29rdXBfbmFtZV9yZWFsKTogQWxzbyBkbyBpbXBsaWNpdCB0eXBlbmFtZSB0aGluZyBmb3IKCWFydGlmaWNpYWwgVFlQRV9ERUNMcy4KCSogc2VhcmNoLmMgKGxvb2t1cF9maWVsZCk6IExpa2V3aXNlLgoJKGxvb2t1cF9mbmZpZWxkcywgbG9va3VwX2ZpZWxkKTogQWRqdXN0IGZvciBpbXBsaWNpdCB0eXBlbmFtZSBrbHVkZ2UuCgkqIHNlbWFudGljcy5jIChiZWdpbl9jb25zdHJ1Y3Rvcl9kZWNsYXJhdG9yKTogVXNlIGVudGVyX3Njb3BlX29mLgoJKGVudGVyX3Njb3BlX29mKTogRXh0cmFjdCB0eXBlIGZyb20gaW1wbGljaXQgdHlwZW5hbWUuCgkoYmVnaW5fY2xhc3NfZGVmaW5pdGlvbik6IExpa2V3aXNlLgoJKiBsZXguYyAoaWRlbnRpZmllcl90eXBlKTogSGFuZGxlIGltcGxpY2l0IHR5cGVuYW1lIHdoZW4gY2hlY2tpbmcKCWZvciBTRUxGTkFNRS4KCgkqIGNwLXRyZWUuaDogRGVjbGFyZSBmbGFnX3N0cmljdF9wcm90b3R5cGUuCgkqIGxleC5jIChkb19zY29wZWRfaWQsIGRvX2lkZW50aWZpZXIpOiBEb24ndCBpbXBsaWNpdGx5X2RlY2xhcmUgaWYKCS1mc3RyaWN0LXByb3RvdHlwZS4KCSogZGVjbC5jIChpbml0X2RlY2xfcHJvY2Vzc2luZyk6IElmIC1me25vLC19c3RyaWN0LXByb3RvdHlwZSB3YXNuJ3QKCXNwZWNpZmllZCwgc2V0IGl0IHRvIHRoZSB2YWx1ZSBvZiBwZWRhbnRpYy4KCjE5OTgtMDktMDEgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQG1hcmttaXRjaGVsbC5jb20+CgoJKiBkZWNsMi5jIChhcmdfYXNzb2MpOiBIYW5kbGUgdGVtcGxhdGUtaWQgZXhwcmVzc2lvbnMgYXMgYXJndW1lbnRzLgoKMTk5OC0wOC0zMSAgTWFyayBNaXRjaGVsbCAgPG1hcmtAbWFya21pdGNoZWxsLmNvbT4KCgkqIGRlY2wuYyAoZmluaXNoX2VudW0pOiBIYW5kbGUgbWVtYmVyIGVudW1zIG9mIGNsYXNzZXMgZGVjbGFyZWQgaW4KCXRlbXBsYXRlIGZ1bmN0aW9ucy4KCgkqIGRlY2wyLmMgKGdyb2tfeF9jb21wb25lbnRzKTogU3RyaXAgYXR0cmlidXRlcyBiZWZvcmUgY2FsbGluZwoJZ3Jva3R5cGVuYW1lLgoKMTk5OC0wOC0zMSAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogY3AtdHJlZS5oLCBkZWNsMi5jOiBSZW1vdmUgc3VwcG9ydCBmb3IgLWZhbGwtdmlydHVhbCwKCS1mZW51bS1pbnQtZXF1aXZhbGVuY2UgYW5kIC1mbm8tbm9ubnVsbC1vYmplY3RzLgoJKiBjbGFzcy5jIChjaGVja19mb3Jfb3ZlcnJpZGUpOiBSZW1vdmUgc3VwcG9ydCBmb3IgLWZhbGwtdmlydHVhbC4KCShmaW5pc2hfc3RydWN0XzEpOiBMaWtld2lzZS4KCSogY2FsbC5jIChidWlsZF9uZXdfb3ApOiBSZW1vdmUgc3VwcG9ydCBmb3IgLWZlbnVtLWludC1lcXVpdmFsZW5jZS4KCSogdHlwZWNrLmMgKGJ1aWxkX2JpbmFyeV9vcF9ub2RlZmF1bHQpOiBMaWtld2lzZS4KCSogY3Z0LmMgKG9jcF9jb252ZXJ0KTogTGlrZXdpc2UuCgkqIGNhbGwuYyAoYnVpbGRfdmZpZWxkX3JlZik6IFJlbW92ZSBzdXBwb3J0IGZvciAtZm5vLW5vbm51bGwtb2JqZWN0cy4KCSogY2xhc3MuYyAoYnVpbGRfdmJhc2VfcGF0aCk6IExpa2V3aXNlLgoKU3VuIEF1ZyAzMCAyMjoxNjozMSAxOTk4ICBILkouIEx1ICAoaGpsQGdudS5vcmcpCgoJKiBNYWtlZmlsZS5pbiAoSU5URVJGQUNFKTogTmV3LCBzZXQgdG8gMS4KCjE5OTgtMDgtMzAgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQG1hcmttaXRjaGVsbC5jb20+CgoJKiBlcnJvci5jIChkdW1wX2RlY2wpOiBVc2UgQ1BfREVDTF9DT05URVhULCBub3QgREVDTF9DT05URVhULCB3aGVuCgljb21wYXJpbmcgd2l0aCBnbG9iYWxfbmFtZXNwYWNlLgoJKGR1bXBfYWdncl90eXBlKTogTGlrZXdpc2UuCgoJKiBkZWNsLmMgKGdyb2tmbmRlY2wpOiBJc3N1ZSBlcnJvciBvbiBkZWNsYXJhdGlvbiBvZiBmcmllbmQKCXRlbXBsYXRlcyB3aXRoIGV4cGxpY2l0IHRlbXBsYXRlIGFyZ3VtZW50cy4KCgkqIHB0LmMgKGNvbnZlcnRfdGVtcGxhdGVfYXJndW1lbnQpOiBOZXcgZnVuY3Rpb24sIHNwbGl0IG91dAoJZnJvbS4uLgoJKGNvZXJjZV90ZW1wbGF0ZV9wYXJtcyk6IEhlcmUuCgkodHN1YnN0KTogQXR0ZW1wdCBiZXR0ZXIgZXJyb3ItcmVjb3ZlcnkuCgoxOTk4LTA4LTI4ICBCZW5qYW1pbiBLb3NuaWsgIDxia296QGxvb255LmN5Z251cy5jb20+CgoJKiBwdC5jIChkZWNsX3RlbXBsYXRlX3Bhcm1fcCk6IEFkZCBjaGVja3MgZm9yCglURU1QTEFURV9URU1QTEFURV9QQVJNLgoKMTk5OC0wOC0yOCAgTWFyayBNaXRjaGVsbCAgPG1hcmtAbWFya21pdGNoZWxsLmNvbT4KCgkqIGxleC5jIChkb19pZGVudGlmaWVyKTogRml4IHRoaW5rbyBpbiBwcmV2aW91cyBjaGFuZ2UuCgoxOTk4LTA4LTI4ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBzZWFyY2guYyAoZGZzX3NlYXJjaCwgYmluZm9fZm9yX3Z0YWJsZSwgZGZzX2Jmdl9oZWxwZXIpOiBOZXcgZm5zLgoJKiBkZWNsMi5jIChvdXRwdXRfdnRhYmxlX2luaGVyaXQpOiBDYWxsIGJpbmZvX2Zvcl92dGFibGUuCgoxOTk4LTA4LTI4ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEBjeWdudXMuY29tPgoKCUFkZCBzdXBwb3J0IGZvciBkaXNjYXJkaW5nIHVudXNlZCB2aXJ0dWFsIGZ1bmN0aW9ucy4KCSogbGFuZy1vcHRpb25zLmg6IEFkZCAtZnZ0YWJsZS1nYy4KCSogY3AtdHJlZS5oOiBBZGQgZmxhZ192dGFibGVfZ2MuCgkqIGRlY2wyLmMgKG91dHB1dF92dGFibGVfaW5oZXJpdCk6IE5ldyBmbi4KCShmaW5pc2hfdnRhYmxlX3ZhcmRlY2wpOiBDYWxsIGl0LgoJKiBjbGFzcy5jIChidWlsZF92dGFibGVfZW50cnlfcmVmKTogTmV3IGZuLgoJKGJ1aWxkX3Z0YmxfcmVmKTogQ2FsbCBpdC4KCjE5OTgtMDgtMjggIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQG1hcmttaXRjaGVsbC5jb20+CgoJKiBjcC10cmVlLmggKGJ1aWxkX2VudW1lcmF0b3IpOiBUYWtlIHRoZSBlbnVtZXJhdGlvbiB0eXBlIGFzIGEKCXBhcmFtZXRlci4KCSogZGVjbC5jIChmaW5pc2hfZW51bSk6IERvbid0IHNldCB0aGUgVFJFRV9UWVBFIGZvciB0aGUKCWVudW1lcmF0aW9uIGNvbnN0YW50IHZhbHVlcyBpZiB3ZSdyZSBwcm9jZXNzaW5nX3RlbXBsYXRlX2RlY2xzLgoJRG9uJ3Qgc2V0IHRoZSB0eXBlIGZvciB0aGUgQ09OU1RfREVDTHMgZWl0aGVyOyB0aGF0J3MgZG9uZSBpbgoJYnVpbGRfZW51bWVyYXRvci4KCShidWlsZF9lbnVtZXJhdG9yKTogVGFrZSB0aGUgZW51bWVyYXRpb24gdHlwZSBhcyBhCglwYXJhbWV0ZXIuCgkqIGxleC5jIChkb19pZGVudGlmaWVyKTogRG9uJ3QgcmVzb2x2ZSBlbnVtZXJhdGlvbiBjb25zdGFudHMgd2hpbGUKCXByb2Nlc3NpbmcgdGVtcGxhdGUgZGVjbGFyYXRpb25zLCBldmVuIGlmIHRoZXkgaGFwcGVuIHRvIGJlCglURU1QTEFURV9QQVJNX0lOREVYcy4KCgkqIHBhcnNlLnkgKGN1cnJlbnRfZW51bV90eXBlKTogTmV3IHZhcmlhYmxlLgoJKHByaW1hcnkpOiBEb24ndCBhbGxvdyBzdGF0ZW1lbnQtZXhwcmVzc2lvbiBpbiBsb2NhbCBjbGFzc2VzIGp1c3QKCWFzIHdlIGRvbid0IGluIGdsb2JhbCBjbGFzc2VzLgoJKHN0cnVjdHNwKTogVXNlIGN1cnJlbnRfZW51bV90eXBlLgoJKGVudW1fbGlzdCk6IExpa2V3aXNlLgoJKiBwdC5jICh0c3Vic3RfZW51bSk6IERvbid0IGNoZWNrIGZvciBOT1BfRVhQUnMgaW50cm9kdWNlZCBieQoJZmluaXNoX2VudW07IHRoZXkgbm8gbG9uZ2VyIG9jY3VyLgoKCSogY3AtdHJlZS5oIChmaW5pc2hfYmFzZV9zcGVjaWZpZXIpOiBOZXcgZnVuY3Rpb24uCgkqIHBhcnNlLnkgKGJhc2VfY2xhc3MpOiBVc2UgaXQuCgkqIHNlbWFudGljcy5jIChmaW5pc2hfYmFzZV9zcGVjaWZpZXIpOiBEZWZpbmUgaXQuCgoJKiBwYXJzZS55IChzdHJ1Y3RzcCk6IFdhcm4gb24gdXNlIG9mIHR5cGVuYW1lIG91dHNpZGUgb2YgdGVtcGxhdGUKCWRlY2xhcmF0aW9ucy4KCjE5OTgtMDgtMjcgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIGxleC5jIChoYW5kbGVfY3BfcHJhZ21hKTogUmVtb3ZlICNwcmFnbWEgdnRhYmxlLgoJKiBsYW5nLW9wdGlvbnMuaDogUmVtb3ZlICtlIG9wdGlvbnMuCgkqIGRlY2wyLmMgKGxhbmdfZGVjb2RlX29wdGlvbik6IExpa2V3aXNlLgoJKGltcG9ydF9leHBvcnRfdnRhYmxlKTogRG9uJ3QgY2hlY2sgd3JpdGVfdmlydHVhbHMuCgkoZmluaXNoX3Z0YWJsZV92YXJkZWNsLCBmaW5pc2hfZmlsZSk6IExpa2V3aXNlLgoJKiBzZWFyY2guYyAoZGZzX2RlYnVnX21hcmspOiBMaWtld2lzZS4KCSogc2VtYW50aWNzLmMgKGJlZ2luX2NsYXNzX2RlZmluaXRpb24pOiBMaWtld2lzZS4KCSogY2xhc3MuYyAoYnVpbGRfdnRhYmxlLCBmaW5pc2hfdnRibHMsIGZpbmlzaF9zdHJ1Y3RfMSk6IExpa2V3aXNlLgoKCSogY2FsbC5jIChidWlsZF9vdmVyX2NhbGwpOiBDaGVjayBmbGFnX2VsaWRlX2NvbnN0cnVjdG9ycy4KCSogZGVjbDIuYzogZmxhZ19lbGlkZV9jb25zdHJ1Y3RvcnMgZGVmYXVsdHMgdG8gMS4KCSogdHlwZWNrLmMgKGNvbnZlcnRfYXJndW1lbnRzKTogUmVtb3ZlIHJldHVybl9sb2MgcGFybS4KCShidWlsZF9mdW5jdGlvbl9jYWxsX3JlYWwpOiBBZGp1c3QuCgoJKiBzZWFyY2guYzogVGVhciBvdXQgYWxsIG1pX21hdHJpeCBhbmQgbWVtb2l6ZSBjb2RlLgoJKGxvb2t1cF9maWVsZCwgbG9va3VwX2ZuZmllbGRzKTogVXNlIHNjcmF0Y2hfdHJlZV9jb25zLgoJKiBsYW5nLW9wdGlvbnMuaDogUmVtb3ZlIGRvY3VtZW50YXRpb24gZm9yIC1maGFuZGxlLWV4Y2VwdGlvbnMsCgktZm1lbW9pemUtbG9va3VwcyBhbmQgLWZzYXZlLW1lbW9pemVkLgoJKiBjcC10cmVlLmg6IExvc2UgbWlfbWF0cml4IGFuZCBtZW1vaXplIHN1cHBvcnQuCgkqIGRlY2wyLmM6IElnbm9yZSAtZm1lbW9pemUtbG9va3VwcyBhbmQgLWZzYXZlLW1lbW9pemVkLgoJKiBjbGFzcy5jOiBMb3NlIHN0cnVjdCBjbGFzc19sZXZlbC4KCShwdXNoY2xhc3MsIHBvcGNsYXNzKTogTG9zZSBtZW1vaXplIHN1cHBvcnQuCgkqIGluaXQuYyAoYnVpbGRfb2Zmc2V0X3JlZik6IExpa2V3aXNlLgoKCU5ldmVyIGNoYW5nZSBCSU5GT19JTkhFUklUQU5DRV9DSEFJTi4KCSogaW5pdC5jIChlbWl0X2Jhc2VfaW5pdCk6IENoYW5nZSBtb2RpZmljYXRpb24gb2YKCUJJTkZPX0lOSEVSSVRBTkNFX0NIQUlOIHRvIGFuIGFzc2VydC4KCSogc2VhcmNoLmMgKGdldF9iYXNlX2Rpc3RhbmNlX3JlY3Vyc2l2ZSk6IExpa2V3aXNlLgoJKGdldF9iYXNlX2Rpc3RhbmNlKTogTGlrZXdpc2UuCgkobG9va3VwX21lbWJlcik6IExpa2V3aXNlLgoJKGNvbnZlcnRfcG9pbnRlcl90b19zaW5nbGVfbGV2ZWwpOiBMaWtld2lzZS4KCShsb29rdXBfZmllbGQpOiBMaWtld2lzZS4gIExvc2Ugc2V0dGluZyBUUkVFX1ZJQV8qIG9uIFRSRUVfTElTVHMuCgkobG9va3VwX2ZuZmllbGRzKTogTGlrZXdpc2UuCgkqIHRyZWUuYyAocHJvcGFnYXRlX2JpbmZvX29mZnNldHMpOiBEb24ndCBjYWxsIHVuc2hhcmVfYmFzZV9iaW5mb3MuCgkodW5zaGFyZV9iYXNlX2JpbmZvcyk6IERvbid0IGNhbGwgcHJvcGFnYXRlX2JpbmZvX29mZnNldHMuCgkobGF5b3V0X2Jhc2V0eXBlcyk6IENhbGwgcHJvcGFnYXRlX2JpbmZvX29mZnNldHMgaW5zdGVhZCBvZgoJdW5zaGFyZV9iYXNlX2JpbmZvcy4KCSogZGVjbC5jICh4cmVmX2Jhc2V0eXBlcyk6IENhbGwgdW5zaGFyZV9iYXNlX2JpbmZvcy4KCSogcHQuYyAoaW5zdGFudGlhdGVfY2xhc3NfdGVtcGxhdGUpOiBMaWtld2lzZS4KCSogdHJlZS5jIChyZXZlcnNlX3BhdGgpOiBSZW1vdmUgJ2NvcHknIHBhcm07IGFsd2F5cyBtYWtlIGEKCXRlbXBvcmFyeSBjb3B5LgoJKiBjbGFzcy5jIChidWlsZF92YmFzZV9wYXRoKTogSnVzdCBjYWxsIGl0LgoJKiBzZWFyY2guYyAoY29tcHV0ZV9hY2Nlc3MpOiBMaWtld2lzZS4gIERvbid0IHJlLXJldmVyc2UuCgoxOTk4LTA4LTI3ICBNYXJrIE1pdGNoZWxsICA8bWFya0BtYXJrbWl0Y2hlbGwuY29tPgoKCSogY2xhc3MuYyAoYnVpbGRfdmJhc2VfcGF0aCk6IFVzZSByZXZlcnNlX3BhdGguCgkoZmluaXNoX2Jhc2Vfc3RydWN0KTogTW92ZSB3YXJuaW5ncyBmb3IgaW5hY2Nlc3NpYmxlIGJhc2VzIHRvCglsYXlvdXRfYmFzZXR5cGVzLgoJKG1vZGlmeV9vbmVfdnRhYmxlKTogUmVtb3ZlIGNoZWNrIG9mIFRSRUVfVVNFRCAoYmluZm8pLgoJKGZpeHVwX3Z0YWJsZV9kZWx0YXMxKTogTGlrZXdpc2UuCgkqIGNwLXRyZWUuaCAoQklORk9fSU5IRVJJVEFOQ0VfQ0hBSU4pOiBEb2N1bWVudCBoZXJlLgoJKHhyZWZfdGFnKTogUmVtb3ZlIGJpbmZvcyBwYXJhbWV0ZXIuCgkobWFrZV9iaW5mbyk6IFJlbW92ZSBjaGFpbiBwYXJhbWV0ZXIuCgkocmV2ZXJzZV9wYXRoKTogQWRkIGNvcHkgcGFyYW1ldGVyLgoJKiBkZWNsLmMgKGluaXRfZGVjbF9wcm9jZXNzaW5nKTogQ2hhbmdlIGNhbGxzIHRvIHhyZWZfdGFnLgoJKHhyZWZfdGFnKTogUmVtb3ZlIGJpbmZvcyBwYXJhbWV0ZXIuCgkoeHJlZl9iYXNldHlwZXMpOiBDaGFuZ2UgY2FsbHMgdG8gbWFrZV9iaW5mby4KCSogZGVjbDIuYyAoZ3Jva194X2NvbXBvbmVudHMpOiBDaGFuZ2UgY2FsbHMgdG8geHJlZl90YWcuCgkoaGFuZGxlX2NsYXNzX2hlYWQpOiBMaWtld2lzZS4KCSogZnJpZW5kLmMgKGRvX2ZyaWVuZCk6IExpa2V3aXNlLgoJKiBsZXguYyAobWFrZV9sYW5nX3R5cGUpOiBDaGFuZ2UgY2FsbHMgdG8gbWFrZV9iaW5mby4KCSogcGFyc2UueSAoc3RydWN0c3ApOiBDaGFuZ2UgY2FsbHMgdG8geHJlZl90YWcuCgkobmFtZWRfY29tcGxleF9jbGFzc19oZWFkX3NhbnNfYmFzZXR5cGUpOiBMaWtld2lzZS4KCShuYW1lZF9jbGFzc19oZWFkKTogTGlrZXdpc2UuCgkqIHJ0dGkuYyAoaW5pdF9ydHRpX3Byb2Nlc3NpbmcpOiBMaWtld2lzZS4KCSogc2VhcmNoLmMgKGNvbXB1dGVfYWNjZXNzKTogQ2hhbmdlIGNhbGxzIHRvIHJldmVyc2VfcGF0aC4KCShkZnNfZ2V0X3ZiYXNlX3R5cGVzKTogQ2hhbmdlIGNhbGxzIHRvIG1ha2VfYmluZm8uCgkoZ2V0X3ZiYXNlX3R5cGVzKTogUmVtb3ZlIGRlYWQgY29kZS4KCSogdHJlZS5jICh1bnNoYXJlX2Jhc2VfYmluZm9zKTogQ2hhbmdlIGNhbGxzIHRvIG1ha2VfYmluZm8uCgkobGF5b3V0X2Jhc2V0eXBlcyk6IFdhcm4gaGVyZSBhYm91dCBpbmFjY2Vzc2libGUgYmFzZXMuCgkobWFrZV9iaW5mbyk6IFJlbW92ZSBjaGFpbiBwYXJhbWV0ZXIuCgkocmV2ZXJzZV9wYXRoKTogQWRkIGNvcHkgcGFyYW1ldGVyLgoKMTk5OC0wOC0yNyAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogY2xhc3MuYzogI2lmIDAgY29tcGxldGVfdHlwZV9wLgoJKiBpbml0LmMgKGJ1aWxkX2phdmFfY2xhc3NfcmVmLCBidWlsZF9uZXdfMSk6IFJlbW92ZSB1bnVzZWQgbG9jYWxzLgoJKiBtZXRob2QuYyAocHJvY2Vzc19vdmVybG9hZF9pdGVtKTogTGlrZXdpc2UuCgkqIHR5cGVjay5jIChjb21wX3RhcmdldF90eXBlcyk6IExpa2V3aXNlLgoKCVN0b3Agc2hhcmluZyBiaW5mb3MgZm9yIGluZGlyZWN0IHZpcnR1YWwgYmFzZXMuCgkqIHRyZWUuYyAocHJvcGFnYXRlX2JpbmZvX29mZnNldHMpOiBVbnNoYXJlIHZiYXNlcywgdG9vLgoJKGxheW91dF9iYXNldHlwZXMpOiBMaWtld2lzZS4KCSh1bnNoYXJlX2Jhc2VfYmluZm9zKTogQ29weSB2YmFzZXMsIHRvby4KCSogY3AtdHJlZS5oIChCSU5GT19WSUFfUFVCTElDLCBCSU5GT19CQVNFSU5JVF9NQVJLRUQsCglCSU5GT19WQkFTRV9JTklUX01BUktFRCk6IFJlbW92ZSBvYnNvbGV0ZSBtYWNyb3MuCgkoQklORk9fUFVTSERFQ0xTX01BUktFRCwgU0VUX0JJTkZPX1BVU0hERUNMU19NQVJLRUQsCglDTEVBUl9CSU5GT19QVVNIREVDTFNfTUFSS0VEKTogTmV3IG1hY3Jvcy4KCSogc2VhcmNoLmMgKGxvb2t1cF9maWVsZCwgbG9va3VwX2ZuZmllbGRzLCBsb29rdXBfbWVtYmVyKTogUmVtb3ZlCglyZWZlcmVuY2UgdG8gQklORk9fVklBX1BVQkxJQy4KCShtYXJrZWRfcHVzaGRlY2xzX3AsIHVubWFya2VkX3B1c2hkZWNsc19wKTogTmV3IGZucy4KCShwdXNoX2NsYXNzX2RlY2xzKTogVXNlIHRoZW0uCgkoZGZzX3B1c2hkZWNscyk6IFVzZSBTRVRfQklORk9fUFVTSERFQ0xTX01BUktFRC4KCShkZnNfY29tcHJlc3NfZGVjbHMpOiBVc2UgQ0xFQVJfQklORk9fUFVTSERFQ0xTX01BUktFRC4KCjE5OTgtMDgtMjcgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQG1hcmttaXRjaGVsbC5jb20+CgoJKiBkZWNsLmMgKGJ1aWxkX2VudW1lcmF0b3IpOiBTZXQgREVDTF9DT05URVhUIGZvciB0aGUKCUNPTlNUX0RFQ0xzLgoKMTk5OC0wOC0yNiAgTWFyayBNaXRjaGVsbCAgPG1hcmtAbWFya21pdGNoZWxsLmNvbT4KCgkqIGNwLXRyZWUuaCAoZmluaXNoX2VudW0pOiBDaGFuZ2UgcHJvdG90eXBlLgoJKiBkZWNsLmMgKGZpbmlzaF9lbnVtKTogVXNlIFRZUEVfVkFMVUVTLCByYXRoZXIgdGhhbiB0YWtpbmcgYQoJVkFMVUVTIHBhcmFtZXRlci4gIERvbid0IHRyeSB0byBjb21wdXRlIG1pbnMvbWF4cyBpZgoJcHJvY2Vzc2luZ190ZW1wbGF0ZV9kZWNsLgoJKiBwYXJzZS55IChzdHJ1Y3RzcCk6IFVzZSBuZXcgY2FsbGluZyBzZXF1ZW5jZSBmb3IgZmluaXNoX2VudW0uCgkqIHB0LmMgKHRzdWJzdF9lbnVtKTogTGlrZXdpc2UuICBUYWtlIHRoZSBuZXcgdHlwZSBhcyBpbnB1dC4KCShsb29rdXBfdGVtcGxhdGVfY2xhc3MpOiBSZW1vdmUgdW51c2VkIHZhcmlhYmxlcy4gIFR3ZWFrLgoJUmVnaXN0ZXIgZW51bXMgb24gaW5zdGFudGlhdGlvbiBsaXN0IGJlZm9yZSBzdWJzdGl0dXRpbmcKCWVudW1lcmF0aW9uIGNvbnN0YW50cy4KCSh0c3Vic3RfZGVjbCk6IFJlbW92ZSB1bnVzZWQgdmFyaWFibGVzLgoJKHJlZ2VuZXJhdGVfZGVjbF9mcm9tX3RlbXBsYXRlKTogTGlrZXdpc2UuCgoJKiBkZWNsLmMgKGR1cGxpY2F0ZV9kZWNscyk6IERvbid0IG9ibGl0ZXJhdGUgdGhlCglERUNMX1RFTVBMQVRFX0lORk8gZm9yIGEgdGVtcGxhdGUgaWYgd2UncmUgbm90IHJlcGxhY2luZyBpdCB3aXRoCglhbnl0aGluZy4KCgkqIGxleC5jIChkb19pZGVudGlmaWVyKTogRml4IHR5cG8gaW4gY29tbWVudC4KCldlZCBBdWcgMjYgMTA6NTQ6NTEgMTk5OCAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogZXJyZm4uYzogUmVtb3ZlIHN0ZGFyZy5oL3ZhcmFyZ3MuaC4KCSogdHJlZS5jOiBMaWtld2lzZS4KCjE5OTgtMDgtMjUgIEJyZW5kYW4gS2Vob2UgIDxicmVuZGFuQGN5Z251cy5jb20+CgoJKiBwdC5jICh0c3Vic3RfY29weSk6IE9ubHkgZG8gdHlwZW5hbWUgb3ZlcmxvYWRpbmcgb24gYW4KCUlERU5USUZJRVJfTk9ERSB0aGF0IGhhcHBlbnMgdG8gbG9vayBsaWtlIGEgdHlwZW5hbWUgaWYgaXQgYWN0dWFsbHkKCWhhcyBhIHR5cGUgZm9yIHVzIHRvIHVzZS4KCjE5OTgtMDgtMjUgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIHR5cGVjay5jIChjb21wX2N2X3RhcmdldF90eXBlcyk6IFNwbGl0IG91dC4uLgoJKGNvbXBfdGFyZ2V0X3R5cGVzKTogRnJvbSBoZXJlLiAgRG9uJ3QgYWxsb3cgY3YtcXVhbCBjaGFuZ2VzIHVuZGVyCglhIHBvaW50ZXIgaWYgbnB0cnMgPT0gMC4gIEZpeCBPRkZTRVRfVFlQRSBoYW5kbGluZy4KCShidWlsZF9wdHJtZW1mdW5jKTogUGFzcyAxIHRvIG5wdHJzLgoJKiBjdnQuYyAocGVyZm9ybV9xdWFsaWZpY2F0aW9uX2NvbnZlcnNpb25zKTogVXNlIGNvbXBfcHRyX3R0eXBlcy4KCjE5OTgtMDgtMjUgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQG1hcmttaXRjaGVsbC5jb20+CgoJKiBzZWFyY2guYyAoZGVwZW5kZW50X2Jhc2VfcCk6IERvbid0IGNvbXBhcmUgYSBiaW5mbyB0bwoJY3VycmVudF9jbGFzc190eXBlOyB1c2UgdGhlIFRSRUVfVFlQRSBvZiB0aGUgYmluZm8gaW5zdGVhZC4KCgkqIGNwLXRyZWUuaCAoQ0xBU1NfVFlQRV9QKTogUmV2aXNlIGRlZmluaXRpb24uCgoxOTk4LTA4LTI1ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBkZWNsLmMgKGR1cGxpY2F0ZV9kZWNscyk6IERvbid0IGNvbXBsYWluIGFib3V0IGRpZmZlcmVudAoJZXhjZXB0aW9ucyBmcm9tIGFuIGludGVybmFsIGRlY2wgZXZlbiBpZiBwZWRhbnRpYy4KCgkqIHR5cGVjay5jIChjb252ZXJ0X2Zvcl9hc3NpZ25tZW50KTogQ29udmVydGluZyBmcm9tIHBtIG9mIHZiYXNlCgl0byBkZXJpdmVkIGlzIGFuIGVycm9yLCBub3QgYSBzb3JyeS4KCgkqIGNhbGwuYyAoYnVpbGRfb3Zlcl9jYWxsKTogVXNlIGNvbnZlcnRfcG9pbnRlcl90b19yZWFsIGZvciAndGhpcycuCgkqIGNsYXNzLmMgKGZpeGVkX3R5cGVfb3JfbnVsbCk6IFJlbmFtZSBmcm9tCglyZXNvbHZlc190b19maXhlZF90eXBlX3AuICBSZXR1cm4gdGhlIGR5bmFtaWMgdHlwZSBvZiB0aGUKCWV4cHJlc3Npb24sIGlmIGZpeGVkLCBvciBudWxsLgoJKHJlc29sdmVzX3RvX2ZpeGVkX3R5cGVfcCk6IFVzZSBpdC4gIFJldHVybiAwIGlmIHRoZSBkeW5hbWljIHR5cGUKCWRvZXMgbm90IG1hdGNoIHRoZSBzdGF0aWMgdHlwZS4KCShidWlsZF92YmFzZV9wYXRoKTogUmVuYW1lICdhbGlhc190aGlzJyB0byAnbm9ubnVsbCcuICBVc2UKCXJlc29sdmVzX3RvX2ZpeGVkX3R5cGVfcCBhZ2Fpbi4KCjE5OTgtMDgtMjQgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQG1hcmttaXRjaGVsbC5jb20+CgoJKiBwdC5jICh0c3Vic3RfZGVjbCk6IE1vdmUgc3BlY2lhbCBjYXNlIGNvZGUgZm9yIGRlYWxpbmcgd2l0aAoJdHJpY2t5IGZyaWVuZCB0ZW1wbGF0ZXMgaGVyZSBmcm9tIC4uLgoJKHJlZ2VuZXJhdGVfZGVjbF9mcm9tX3RlbXBsYXRlKTogSGVyZS4KCjE5OTgtMDgtMjQgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIGRlY2wuYyAoc3RhcnRfZGVjbCk6IFJlbW92ZSByZWR1bmRhbnQgbGlua2FnZSBjaGVjay4KCjE5OTgtMDgtMjQgIEdhdmluIFJvbWlnLUtvY2ggIDxnYXZpbkBjeWdudXMuY29tPgoKCSogdHlwZWNrLmMgKGNfZXhwYW5kX3JldHVybik6IEhhbmRsZSB0aGUgY2FzZSB0aGF0IHZhbHR5cGUKCWlzIHdpZGVyIHRoYW4gdGhlIGZ1bmN0aW9ucyByZXR1cm4gdHlwZS4KCjE5OTgtMDgtMjQgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQG1hcmttaXRjaGVsbC5jb20+CgoJKiBjcC10cmVlLmggKENMQVNTX1RZUEVfUCk6IE5ldyBtYWNyby4KCSogZGVjbC5jIChncm9rZGVjbGFyYXRvcik6IFVzZSBpdCBpbnN0ZWFkIG9mIElTX0FHR1JfVFlQRS4KCSogcHQuYyAocHJvY2Vzc190ZW1wbGF0ZV9wYXJtKTogVW5kbyBwcmV2aW91cyBjaGFuZ2UuCgoxOTk4LTA4LTI0ICBCZW5qYW1pbiBLb3NuaWsgIDxia296QGN5Z251cy5jb20+CgoJKiBjcC10cmVlLmg6IERlY2xhcmUuCgkqIHB0LmMgKGRlY2xfdGVtcGxhdGVfcGFybV9wKTogTmV3IGZ1bmN0aW9uLgoJKiBkZWNsLmMgKHB1c2hkZWNsKTogQ2hlY2sgZGVjbHMgZm9yIHJlZGVjbGFyaW5nIHRlbXBsYXRlIHBhcm1zLgoJKHhyZWZfdGFnKTogTWFrZSByZWRlY2xhcmF0aW9uIGFuIGVycm9yLCBwcmludCBkZWNsLgoJKiBkZWNsMi5jIChncm9rZmllbGQpOiBDaGVjayBmaWVsZF9kZWNscyBmb3IgcmVkZWNsYXJhdGlvbiBhcyB3ZWxsLgoKMTk5OC0wOC0yNCAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogcGFyc2UueSAocHJpbWFyeSk6IEZpeCB1cCB0aGUgdHlwZSBvZiBzdHJpbmcgY29uc3RhbnRzLgoKMTk5OC0wOC0yNCAgTWFyayBNaXRjaGVsbCAgPG1hcmtAbWFya21pdGNoZWxsLmNvbT4KCgkqIHR5cGVjay5jIChjb252ZXJ0X2Zvcl9pbml0aWFsaXphdGlvbik6IE1vdmUgY2hlY2sgZm9yIG9kZCB1c2VzCglvZiBOVUxMIHRvIGF2b2lkIGR1cGxpY2F0ZSB3YXJuaW5ncy4KCjE5OTgtMDgtMjQgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIHRyZWUuYyAobHZhbHVlX3R5cGUpOiBGaXggZm9yIGFycmF5cy4KCSogdHlwZWNrLmMgKHN0cmluZ19jb252X3ApOiBOZXcgZm4uCgkoY29udmVydF9mb3JfYXNzaWdubWVudCk6IFVzZSBpdC4KCShidWlsZF91bmFyeV9vcCk6IFVzZSBsdmFsdWVfdHlwZS4KCSogY2FsbC5jIChzdGFuZGFyZF9jb252ZXJzaW9uLCBjb252ZXJ0X2xpa2UpOiBVc2Ugc3RyaW5nX2NvbnZfcC4KCShhZGRfZnVuY3Rpb25fY2FuZGlkYXRlKTogVXNlIGx2YWx1ZV90eXBlLgoJKiBjdnQuYyAoY29udmVydF90b19yZWZlcmVuY2UpOiBMaWtld2lzZS4KCSogZGVjbDIuYyAobGFuZ19kZWNvZGVfb3B0aW9uKTogSWdub3JlIC10cmFkaXRpb25hbC4KCSogZGVjbC5jIChpbml0X2RlY2xfcHJvY2Vzc2luZyk6IGZsYWdfd3JpdGFibGVfc3RyaW5ncyBpbmhpYml0cwoJZmxhZ19jb25zdF9zdHJpbmdzLgoKMTk5OC0wOC0yNCAgQW5kcmV3IE1hY0xlb2QgIDxhbWFjbGVvZEBjeWdudXMuY29tPgoKCSogbGFuZy1vcHRpb25zLmggKGxhbmdfb3B0aW9ucyk6IEFkZCBmY29uc3Qtc3RyaW5ncyB0byB0aGUgbGlzdAoJb2YgdmFsaWQgb3B0aW9ucy4KCSogZGVjbDIuYyAobGFuZ19mX29wdGlvbnMsIGxhbmdfZGVjb2RlX29wdGlvbik6IExpa2V3aXNlLgoKMTk5OC0wOC0yNCAgTmF0aGFuIFNpZHdlbGwgIDxuYXRoYW5AYWNtLm9yZz4KCgkqIGxleC5jIChyZWFsX3l5bGV4KTogRG9uJ3Qgd2FybiBhYm91dCBsb25nIGxvbmcgY29uc3RhbnRzIGlmCgl3ZSdyZSBhbGxvd2luZyBsb25nIGxvbmcuCgoxOTk4LTA4LTI0ICBNYXJ0aW4gdm9uIEz2d2lzICA8bG9ld2lzQGluZm9ybWF0aWsuaHUtYmVybGluLmRlPgoKCSogZGVjbC5jIChwdXNoZGVjbCk6IFVzZSBJREVOVElGSUVSX05BTUVTUEFDRV9WQUxVRSBpbnN0ZWFkIG9mCglhY2Nlc3NpbmcgYmluZGluZ3MgZGlyZWN0bHkuCgoJKiBzZWFyY2guYyAobXlfdHJlZV9jb25zKTogUmVpbXBsZW1lbnQuCgoJKiBsYW5nLXNwZWNzLmg6IFJlbW92ZSBfX0hPTk9SX1NURC4KCSogaW5jL2V4Y2VwdGlvbiwgaW5jL25ldywgaW5jL25ldy5oLCBpbmMvdHlwZWluZm86IExpa2V3aXNlLgoKMTk5OC0wOC0yMyAgTWFyayBNaXRjaGVsbCAgPG1hcmtAbWFya21pdGNoZWxsLmNvbT4KCgkqIGRlY2wuYyAoZ3Jva2RlY2xhcmF0b3IpOiBDb21wbGFpbiBhYm91dCBpbi1jbGFzcyBpbml0aWFsaXphdGlvbgoJb2YgYWdncmVnYXRlcyBhbmQvb3IgcmVmZXJlbmNlcy4KCSogcHQuYyAocHJvY2Vzc190ZW1wbGF0ZV9wYXJtKTogQ2xlYXIgSVNfQUdHUl9UWVBFIGZvcgoJVEVNUExBVEVfVFlQRV9QQVJNcy4KCgkqIGRlY2wyLmMgKGdyb2tfYXJyYXlfZGVjbCk6IEFkZCBjb21tZW50LgoJKG1hcmtfdXNlZCk6IERvbid0IGluc3RhbnRpYXRlIGFuIGV4cGxpY2l0IGluc3RhbnRpYXRpb24uCgkqIGZyaWVuZC5jIChtYWtlX2ZyaWVuZF9jbGFzcyk6IFJlbW92ZSBib2d1cyBjb21tZW50LiAgRml4IGNoZWNrCglmb3IgcGFydGlhbCBzcGVjaWFsaXphdGlvbnMuCgkqIHB0LmMgKGNoZWNrX2V4cGxpY2l0X3NwZWNpYWxpemF0aW9uKTogRG9uJ3QKCVNFVF9ERUNMX0VYUExJQ0lUX0lOU1RBTlRJQVRJT04gaGVyZS4KCShtYXJrX2RlY2xfaW5zdGFudGlhdGVkKTogT3IgaGVyZS4KCShkb19kZWNsX2luc3RhbnRpYXRpb24pOiBEbyBpdCBoZXJlLCBpbnN0ZWFkLiAgQWRkIGNoZWNrcyBmb3IKCWR1cGxpY2F0ZSBleHBsaWNpdCBpbnN0YW50aWF0aW9ucywgZXRjLiAgVGlkeS4KCShkb190eXBlX2luc3RhbnRpYXRpb24pOiBMaWtld2lzZS4KCShpbnN0YW50aWF0ZV9kZWNsKTogSW1wcm92ZSBjb21tZW50cy4gIENvbXBsYWluIGFib3V0IGV4cGxpY2l0CglpbnN0YW50aWF0aW9ucyB3aGVyZSBubyBkZWZpbml0aW9uIGlzIGF2YWlsYWJsZS4KCgkqIGNwLXRyZWUuaCAoYW5zaV9udWxsX25vZGUpOiBSZW1vdmUuCgkqIGNhbGwuYyAoYnVpbGRfb3Zlcl9jYWxsKTogV2FybiBhYm91dCBjb252ZXJ0aW5nIE5VTEwgdG8gYW4KCWFyaXRobWV0aWMgdHlwZS4KCSogY3Z0LmMgKGJ1aWxkX2V4cHJfdHlwZV9jb252ZXJzaW9uKTogTGlrZXdpc2UuICBVc2UKCW51bGxfcHRyX2NzdF9wIGluc3RlYWQgb2YgZXhwYW5kaW5nIGl0IGlubGluZS4KCSogZGVjbC5jIChhbnNpX251bGxfbm9kZSk6IFJlbW92ZS4KCShpbml0X2RlY2xfcHJvY2Vzc2luZyk6IE1ha2UgbnVsbF9ub2RlIGFsd2F5cyBoYXZlIGludGVncmFsIHR5cGUuCgkqIGV4Y2VwdC5jIChidWlsZF90aHJvdyk6IFdhcm4gYWJvdXQgY29udmVydGluZyBOVUxMIHRvIGFuCglhcml0aG1ldGljIHR5cGUuCgkqIGxleC5jIChpbml0X3BhcnNlKTogUmVtb3ZlIGhhbmRsaW5nIG9mIGFuc2lfbnVsbF9ub2RlLgoJKiBwdC5jICh0eXBlX3VuaWZpY2F0aW9uX3JlYWwpOiBEb24ndCBjb252ZXJ0IE5VTEwgdG8gdm9pZCogdHlwZS4KCSogdHlwZWNrLmMgKGJ1aWxkX2JpbmFyeV9vcF9ub2RlZmF1bHQpOiBGaXggTlVMTCB3YXJuaW5ncy4KCShjb252ZXJ0X2Zvcl9hc3NpZ25tZW50KTogV2FybiBhYm91dCBjb252ZXJ0aW5nIE5VTEwgdG8gYW4KCWFyaXRobWV0aWMgdHlwZS4KCShjb252ZXJ0X2Zvcl9pbml0aWFsaXphdGlvbik6IExpa2V3aXNlLgoKMTk5OC0wOC0yMCAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogdHJlZS5jIChzZWFyY2hfdHJlZSwgbm9fbGlua2FnZV9oZWxwZXIsIG5vX2xpbmthZ2VfY2hlY2spOiBOZXcgZm4uCgkqIHB0LmMgKGNvZXJjZV90ZW1wbGF0ZV9wYXJtcyk6IFVzZSBub19saW5rYWdlX2NoZWNrLgoJKiBkZWNsLmMgKGdyb2t2YXJkZWNsKTogTGlrZXdpc2UuCgkoZ3Jva2ZuZGVjbCk6IExpa2V3aXNlLiAgTWVtYmVycyBvZiBhbm9ueW1vdXMgdHlwZXMgaGF2ZSBubyBsaW5rYWdlLgoKCSogbWV0aG9kLmMgKHByb2Nlc3Nfb3ZlcmxvYWRfaXRlbSk6IFJlbW92ZSB1c2VsZXNzIGNvZGUuCgoxOTk4LTA4LTIwICBQZXIgQm90aG5lciAgPGJvdGhuZXJAY3lnbnVzLmNvbT4KCglIYW5kbGUgbmV3J2luZyBvZiBKYXZhIGNsYXNzZXMuCgkqIGluaXQuYyAoYnVpbGRfY2xhc3NfY2xhc3NyZWYpOiAgTmV3IGZ1bmN0aW9uLgoJKGJ1aWxkX25ld18xKTogIElmIHR5cGUgaXMgVFlQRV9GT1JfSkFWQTogIENhbGwgX0p2X0FsbG9jT2JqZWN0OwoJY29uc3RydWN0b3IgZG9lcyBub3QgcmV0dXJuIHRoaXM7ICBkb24ndCBuZWVkIHRvIGV4Y2VwdGlvbi1wcm90ZWN0LgoKCSogcHQuYyAobG9va3VwX3RlbXBsYXRlX2NsYXNzKTogIENvcHkgVFlQRV9GT1JfSkFWQSBmbGFnLgoJKiBkZWNsMi5jIChhY2NlcHRhYmxlX2phdmFfdHlwZSk6ICBIYW5kbGUgdGVtcGxhdGUtZGVyaXZlZCB0eXBlcy4KCjE5OTgtMDgtMjAgIFBlciBCb3RobmVyICA8Ym90aG5lckBjeWdudXMuY29tPgoKCSogZGVjbDIuYyAoaW1wb3J0X2V4cG9ydF92dGFibGUpOiAgU3VwcHJlc3MgdnRhYmxlcyBmb3IgSmF2YSBjbGFzc2VzLgoKMTk5OC0wOC0yMCAgTWFyayBNaXRjaGVsbCAgPG1hcmtAbWFya21pdGNoZWxsLmNvbT4KCgkqIGRlY2wuYyAoZHVwbGljYXRlX2RlY2xzKTogQWx3YXlzIG1lcmdlIHRoZSBvbGQgYW5kIG5ldyBwYXR0ZXJucwoJZm9yIHRlbXBsYXRlcywgcmVnYXJkbGVzcyBvZiB3aGV0aGVyIG9yIG5vdCB0aGUgbmV3IG9uZSBoYXMKCURFQ0xfSU5JVElBTC4gIERvbid0IHRocm93IGF3YXkgc3BlY2lhbGl6YXRpb25zLiAgTWVyZ2UKCURFQ0xfU0FWRURfVFJFRS4KCSogcHQuYyAodHN1YnN0X2RlY2wpOiBVc2UgdGhlIHJpZ2h0IHBhdHRlcm4gd2hlbiBjYWxjdWxhdGluZyB0aGUKCWNvbXBsZXRlIGFyZ3MgZm9yIGEgbmV3IHRlbXBsYXRlIGluc3RhbmNlLgoJKGRvX2RlY2xfaW5zdGFudGlhdGlvbik6IEZpeCB0eXBvIGluIGNvbW1lbnQuCgkocmVnZW5lcmF0ZV9kZWNsX2Zyb21fdGVtcGxhdGUpOiBEZWFsIHdpdGggdHJpY2t5IGZyaWVuZCB0ZW1wbGF0ZQoJY2FzZS4KCShpbnN0YW50aWF0ZV9kZWNsKTogTGlrZXdpc2UuCgpUaHUgQXVnIDIwIDA5OjA5OjQ1IDE5OTggIEplZmZyZXkgQSBMYXcgIChsYXdAY3lnbnVzLmNvbSkKCgkqIGluaXQuYyAoYnVpbGRfYnVpbHRpbl9kZWxldGVfY2FsbCk6IEFkZCBtaXNzaW5nIGFzc2VtYmxlX2V4dGVybmFsCgljYWxsLgoKMTk5OC0wOC0yMCAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogcGFyc2UueSAobm90eXBlX3VucXVhbGlmaWVkX2lkKTogQWxzbyBhY2NlcHQgfkE8aW50Pi4KCjE5OTgtMDgtMTkgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQG1hcmttaXRjaGVsbC5jb20+CgoJKiB0eXBlY2suYyAoYnVpbGRfYmluYXJ5X29wX25vZGVmYXVsdCk6IFdhcm4gb24gdXNlIG9mIE5VTEwgaW4KCWFyaXRobWV0aWMuCgkqIGV4Y2VwdC5jIChidWlsZF90aHJvdyk6IFdhcm4gd2hlbiBOVUxMIGlzIHRocm93biwgZXZlbiB3aXRoCgktYW5zaS4gIFVzZSBhbnNpX251bGxfbm9kZSwgcmF0aGVyIHRoYW4gaW50ZWdlcl96ZXJvX25vZGUsIGluIHRoZQoJdGhyb3duIGV4cHJlc3Npb24uCgoJKiBjcC10cmVlLmggKGFuc2lfbnVsbF9ub2RlKTogTmV3IHZhcmlhYmxlLgoJKiBkZWNsLmMgKGFuc2lfbnVsbF9ub2RlKTogTmV3IHZhcmlhYmxlLgoJKGluaXRfZGVjbF9wcm9jZXNzaW5nKTogSW5pdGlhbGl6ZSBpdHMgdHlwZS4KCSogbGV4LmMgKGluaXRfcGFyc2UpOiBJbml0aWFsaXplIGl0cyB2YWx1ZS4gIFVzZSBhbnNpX251bGxfbm9kZQoJZm9yIG51bGxfbm9kZSBpbiBub24tQU5TSSBtb2RlLgoJKiB0eXBlY2suYyAoYnVpbGRfYmluYXJ5X29wX25vZGVmYXVsdCk6IFVzZSBhbnNpX251bGxfbm9kZSBpbgoJcGxhY2Ugb2YgbnVsbF9ub2RlIHRvIGF2b2lkIHNwdXJpb3VzIGVycm9ycy4KCjE5OTgtMDgtMTcgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQG1hcmttaXRjaGVsbC5jb20+CgoJKiBjcC10cmVlLmggKGVudGVyX3Njb3BlX29mKTogTmV3IGZ1bmN0aW9uLgoJKiBwYXJzZS55IChjb21wbGV4X2RpcmVjdF9ub3R5cGVfZGVjbGFyYXRvcik6IFVzZSBpdC4KCSogc2VtYW50aWNzLmMgKGVudGVyX3Njb3BlX29mKTogTmV3IGZ1bmN0aW9uLgoKMTk5OC0wOC0xNyAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogZGVjbC5jIChncm9rcGFybXMpOiBObywgaGVyZS4KCgkqIGRlY2wuYyAoZ3Jva2RlY2xhcmF0b3IpOiBDYXRjaCBwYXJtIHdpdGggcG9pbnRlciB0byBhcnJheSBvZgoJdW5rbm93biBib3VuZCBoZXJlLi4uCgkqIG1ldGhvZC5jIChwcm9jZXNzX292ZXJsb2FkX2l0ZW0pOiAuLi5ub3QgaGVyZS4KCgkqIGd4eGludC50ZXhpOiBSZW1vdmUgb2Jzb2xldGUgZG9jdW1lbnRhdGlvbiBvZiBvdmVybG9hZGluZyBjb2RlLgoKCSogZGVjbC5jIChmaW5pc2hfZW51bSk6IEFsc28gc2V0IFRZUEVfU0laRV9VTklULgoJKiBjbGFzcy5jIChmaW5pc2hfc3RydWN0X2JpdHMpOiBMaWtld2lzZS4KCgkqIHRyZWUuYyAobHZhbHVlX3R5cGUpOiBGaXggZm9yIGFycmF5cy4KCSogdHlwZWNrLmMgKGJ1aWxkX3VuYXJ5X29wKTogVXNlIGx2YWx1ZV90eXBlLgoJKiBjYWxsLmMgKGFkZF9mdW5jdGlvbl9jYW5kaWRhdGUpOiBMaWtld2lzZS4KCSogY3Z0LmMgKGNvbnZlcnRfdG9fcmVmZXJlbmNlKTogTGlrZXdpc2UuCgoJKiBkZWNsMi5jIChsYW5nX2RlY29kZV9vcHRpb24pOiBJZ25vcmUgLXRyYWRpdGlvbmFsLgoKCSogaW5pdC5jIChidWlsZF9vZmZzZXRfcmVmKTogRG9uJ3QgbWVzcyB3aXRoIGVycm9yX21hcmtfbm9kZS4KCSogbGV4LmMgKGRvX3Njb3BlZF9pZCk6IFVzZSBjcF9lcnJvci4KCgkqIHJ0dGkuYyAoZ2V0X3RpbmZvX2ZuKTogRG9uJ3QgbWVzcyB3aXRoIHRoZSBjb250ZXh0IGZvciBub3cuCgoxOTk4LTA4LTE3ICBCZW5qYW1pbiBLb3NuaWsgIDxia296QGxvb255LmN5Z251cy5jb20+CgoJKiBkZWNsLmMgKGdyb2tkZWNsYXJhdG9yKTogQWxsb3cgYW5vbnltb3VzIHR5cGVzIHRvIGJlIGN2LXF1YWxpZmllZC4KCk1vbiBBdWcgMTcgMTA6NDA6MTggMTk5OCAgSmVmZnJleSBBIExhdyAgKGxhd0BjeWdudXMuY29tKQoKCSogY3AtdHJlZS5oIChzZXRfaWRlbnRpZmllcl9sb2NhbF92YWx1ZSk6IFByb3ZpZGUgcHJvdG90eXBlLgoKCSogZGVjbDIuYyAoZG9fbmFtZXNwYWNlX2FsaWFzKTogUmVtb3ZlIHVudXNlZCB2YXJpYWJsZXMgYGJpbmRpbmcnCglhbmQgYG9sZCcuCgpGcmkgQXVnIDE0IDE2OjQyOjI3IDE5OTggIE5pY2sgQ2xpZnRvbiAgPG5pY2tjQGN5Z251cy5jb20+CgoJKiBNYWtlZmlsZS5pbjogUmVuYW1lIEJCSVNPTiB0byBCSVNPTiBzbyB0aGF0IGl0IGNhbiBiZSBwcm9wZXJseQoJaW5oZXJpdGVkIGZyb20gdGhlIHBhcmVudCBtYWtlZmlsZS4KCjE5OTgtMDgtMTMgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIGxhbmctb3B0aW9ucy5oOiBBZGQgLWZpbml0LXByaW9yaXR5LgoJKiBkZWNsMi5jOiBMaWtld2lzZS4gIENoZWNrIGZsYWdfaW5pdF9wcmlvcml0eSBpbnN0ZWFkIG9mCglVU0VfSU5JVF9QUklPUklUWS4KCgkqIGRlY2wyLmMgKHNldHVwX2luaXRwKTogTmV3IGZuLgoJKHN0YXJ0X29iamVjdHMsIGZpbmlzaF9vYmplY3RzLCBkb19jdG9ycyk6IEhhbmRsZSBpbml0X3ByaW9yaXR5LgoJKGRvX2R0b3JzLCBmaW5pc2hfZmlsZSk6IExpa2V3aXNlLgoKMTk5OC0wOC0xMyAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogcHQuYyAodHN1YnN0X2NvcHkpOiBIdXNoIHdhcm5pbmcuCgoJKiBydHRpLmMgKGdldF90aW5mb19mbik6IEFsc28gc2V0IERFQ0xfSUdOT1JFRF9QLgoKMTk5OC0wOC0xMiAgTWFyayBNaXRjaGVsbCAgPG1hcmtAbWFya21pdGNoZWxsLmNvbT4KCgkqIHB0LmMgKHByaW50X3RlbXBsYXRlX2NvbnRleHQpOiBEb24ndCBhYm9ydCB3aGVuIGluc3RhbnRpYXRpbmcgYQoJc3ludGhlc2l6ZWQgbWV0aG9kLgoKCSogZGVjbC5jIChncm9rZGVjbGFyYXRvcik6IElzc3VlIGVycm9ycyBvbiBuYW1lc3BhY2UgcXVhbGlmaWVkCglkZWNsYXJhdG9ycyBpbiBwYXJhbWV0ZXIgbGlzdHMgb3IgaW4gY2xhc3Mgc2NvcGUuCgoxOTk4LTA4LTA5ICBNYXJrIE1pdGNoZWxsICA8bWFya0BtYXJrbWl0Y2hlbGwuY29tPgoKCSogcHQuYyAoY2hlY2tfZXhwbGljaXRfc3BlY2lhbGl6YXRpb24pOiBEb24ndCBhYm9ydCBvbiBib2d1cwoJZXhwbGljaXQgaW5zdGFudGlhdGlvbnMuCgoxOTk4LTA4LTA3ICBNYXJrIE1pdGNoZWxsICA8bWFya0BtYXJrbWl0Y2hlbGwuY29tPgoKCSogdHlwZWNrLmMgKHJlcXVpcmVfY29tcGxldGVfdHlwZSk6IFVzZSBjb21wbGV0ZV90eXBlX29yX2Vsc2UuCgkoY29tcGxldGVfdHlwZV9vcl9lbHNlKTogQWx3YXlzIHJldHVybiBOVUxMX1RSRUUgb24gZmFpbHVyZSwgYXMKCWRvY3VtZW50ZWQuCgoJKiBwdC5jICh0c3Vic3RfYWdncl90eXBlKTogUHJvdG90eXBlLgoJKHRzdWJzdF9kZWNsKTogTmV3IGZ1bmN0aW9uLCBzcGxpdCBvdXQgZnJvbSB0c3Vic3QuICBTZXQKCWlucHV0X2ZpbGVuYW1lIGFuZCBsaW5lbm8gYXMgYXBwcm9wcmlhdGUuCgkocG9wX3RpbnN0X2xldmVsKTogUmVzdG9yZSB0aGUgZmlsZSBhbmQgbGluZSBudW1iZXIgc2F2ZWQgaW4KCXB1c2hfdGluc3RfbGV2ZWwuCgkoaW5zdGFudGlhdGVfY2xhc3NfdGVtcGxhdGUpOiBTZXQgaW5wdXRfZmlsZW5hbWUgYW5kIGxpbmVubyBhcwoJYXBwcm9wcmlhdGUuCgkodHN1YnN0KTogTW92ZSBfREVDTCBwcm9jZXNzaW5nIHRvIHRzdWJzdF9kZWNsLiAgTWFrZSBzdXJlIHRoZQoJY29udGV4dCBmb3IgYSBUWVBFTkFNRV9UWVBFIGlzIGNvbXBsZXRlLgoKCSogZGVjbDIuYyAoZ3Jva2JpdGZpZWxkKTogSXNzdWUgZXJyb3JzIG9uIGJpdGZpZWxkcyBkZWNsYXJlZCB3aXRoCglmdW5jdGlvbiB0eXBlLgoJKGRvX2R0b3JzKTogQXMgaW4gZG9fY3RvcnMsIHByZXRlbmQgdG8gYmUgYSBtZW1iZXIgb2YgdGhlIHNhbWUKCWNsYXNzIGFzIGEgc3RhdGljIGRhdGEgbWVtYmVyIHdoaWxlIGdlbmVyYXRpbmcgYSBjYWxsIHRvIGl0cwoJZGVzdHJ1Y3Rvci4KCgkqIGN2dC5jIChjcF9jb252ZXJ0X3RvX3BvaW50ZXIpOiBIYW5kbGUgTlVMTCBwb2ludGVyCgljb252ZXJzaW9ucywgZXZlbiBpbiBjb21wbGV4IHZpcnR1YWwgYmFzZSBjbGFzcyBoaWVyYXJjaGllcy4KCjE5OTgtMDgtMDYgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQG1hcmttaXRjaGVsbC5jb20+CgoJKiBjcC10cmVlLmggKEVOVU1fVEVNUExBVEVfSU5GTyk6IE5ldyBtYWNyby4KCShUWVBFX1RFTVBMQVRFX0lORk8pOiBMaWtld2lzZS4KCShTRVRfVFlQRV9URU1QTEFURV9JTkZPKTogTGlrZXdpc2UuCgkoRU5VTV9USV9URU1QTEFURSk6IExpa2V3aXNlLgoJKEVOVU1fVElfQVJHUyk6IExpa2V3aXNlLgoJKGxvb2t1cF9uZXN0ZWRfdHlwZV9ieV9uYW1lKTogUmVtb3ZlLgoJKiBkZWNsLmMgKG1heWJlX3Byb2Nlc3NfdGVtcGxhdGVfdHlwZV9kZWNsYXJhdGlvbik6IEhhbmRsZSBlbnVtcy4KCShzdGFydF9lbnVtKTogRG9uJ3QgY2hlY2sgZm9yIHByaW1hcnktdGVtcGxhdGUgZW51bSBkZWNsYXJhdGlvbnMKCWhlcmUuCgkoZmluaXNoX2VudW0pOiBDbGVhbiB1cCwgZG9jdW1lbnQuICBNYWtlIHN1cmUgdGVtcGxhdGUgZW51bQoJY29uc3RhbnRzIGdldCB0aGUgY29ycmVjdCB0eXBlLgoJKGJ1aWxkX2VudW1lcmF0b3IpOiBDb3B5IGluaXRpYWxpemVycyBmb3IgdGVtcGxhdGUgZW51bWVyYXRpb25zLAoJdG9vLgoJKGdyb2tfZW51bV9kZWNscyk6IERvY3VtZW50LgoJKiBsZXguYyAoZG9faWRlbnRpZmllcik6IERvY3VtZW50IHVzZSBvZiBMT09LVVBfRVhQUiBhIGJpdAoJYmV0dGVyLiAgQnVpbGQgTE9PS1VQX0VYUFJzIGZvciBsb2NhbCB2YXJpYWJsZXMsIGV2ZW4gaWYgdGhleSBhcmUKCVRSRUVfUEVSTUFORU5ULgoJKiBwdC5jICh0c3Vic3RfZW51bSk6IFJlbW92ZSBmaWVsZF9jaGFpbiBwYXJhbWV0ZXIuCgkodGVtcGxhdGVfY2xhc3NfZGVwdGgpOiBJbmNsdWRlIHRoZSBkZXB0aCBvZiBzdXJyb3VuZGluZyBmdW5jdGlvbgoJY29udGV4dHMuCgkocHVzaF90ZW1wbGF0ZV9kZWNsKTogQ2hlY2sgZm9yIHByaW1hcnktdGVtcGxhdGUgZW51bSBkZWNsYXJhdGlvbnMKCWhlcmUuICBEZWFsIHdpdGggZW51bWVyYXRpb24gdGVtcGxhdGVzLgoJKGxvb2t1cF90ZW1wbGF0ZV9jbGFzcyk6IExpa2V3aXNlLgoJKGZvcl9lYWNoX3RlbXBsYXRlX3Bhcm0pOiBMaWtld2lzZS4KCShpbnN0YW50aWF0ZV9jbGFzc190ZW1wbGF0ZSk6IERvbid0IGNhbGwgdHN1YnN0X2VudW0gZGlyZWN0bHksCgljYWxsIHRzdWJzdCBpbnN0ZWFkLCB0byBpbnN0YW50aWF0ZSBlbnVtcy4gIERlYWwgd2l0aCBhbGwKCWZpZWxkX2NoYWluIGlzc3VlcyBoZXJlLCBub3QgaW4gdHN1YnN0X2VudW0uCgkobG9va3VwX25lc3RlZF90eXBlX2J5X25hbWUpOiBSZW1vdmUuCgkodHN1YnN0X2FnZ3JfdHlwZSk6IFJldmlzZSBoYW5kbGluZyBvZiBlbnVtZXJhdGlvbiB0eXBlcy4KCSh0c3Vic3QpOiBMaWtld2lzZS4KCSh0c3Vic3RfY29weSk6IExpa2V3aXNlLgoJKHRzdWJzdF9leHByKTogQ2FsbCB0c3Vic3QsIG5vdCB0c3Vic3RfZW51bSBmb3IgVEFHX0RFRk5zLgoKMTk5OC0wOC0wNCAgTWFyayBNaXRjaGVsbCAgPG1hcmtAbWFya21pdGNoZWxsLmNvbT4KCgkqIGRlY2wuYyAocHVzaHRhZyk6IERvbid0IG1hbmdsZSB0aGUgbmFtZSBvZiBhIFRZUEVfREVDTCBpZiBpdAoJdXNlcyB0ZW1wbGF0ZSBwYXJhbWV0ZXJzLgoJKiBtZXRob2QuYyAoYnVpbGRfdGVtcGxhdGVfcGFybV9uYW1lcyk6IFVzZSB0aGUgZnVsbCBzZXQgb2YKCXRlbXBsYXRlIGFyZ3VtZW50cyBmb3IgdHN1YnN0J2luZy4KCShidWlsZF9vdmVybG9hZF9pZGVudGlmaWVyKTogUGFzcyB0aGUgZnVsbCBzZXQgb2YgdGVtcGxhdGUKCWFyZ3VtZW50cyB0byBidWlsZF90ZW1wbGF0ZV9wYXJtX25hbWVzLCBub3QganVzdCB0aGUKCWlubmVybW9zdF9hcmdzLgoJKiBwdC5jIChUTVBMX0FSR1NfREVQVEgpOiBEZWZpbmUgdXNpbmcKCVRNUExfQVJHU19IQVZFX01VTFRJUExFX0xFVkVMUywgZm9yIGNsYXJpdHkuCgkoTlVNX1RNUExfQVJHUyk6IE5ldyBtYWNyby4KCShhZGRfb3V0ZXJtb3N0X3RlbXBsYXRlX2FyZ3MpOiBEZWFsIHdpdGggdGhlIGNhc2Ugd2hlcmUgdGhlIG91dGVyCglhcmdzIHdpbGwgYmUgY29tcGxldGVseSBkaXNjYXJkZWQuCgkoY29lcmNlX3RlbXBsYXRlX3Bhcm1zKTogVXNlIHRoZSBmdWxsIHNldCBvZiB0ZW1wbGF0ZSBhcmd1bWVudHMKCWZvciB0c3Vic3QnaW5nLiAgU2ltcGxpZnkuICBBZGQgc29tZSBhc3NlcnRzLiAgSW1wcm92ZQoJZXJyb3IgbWVzc2FnZXMuCgkobG9va3VwX3RlbXBsYXRlX2NsYXNzKTogUGFzcyB0aGUgZnVsbCBzZXQgb2YgdGVtcGxhdGUgYXJndW1lbnRzCgl0byBjb2VyY2VfdGVtcGxhdGVfcGFybXMuCgkodHN1YnN0KTogQWRkIGFzc2VydGlvbi4KCShkb190eXBlX2luc3RhbnRpYXRpb24pOiBEb24ndCBpbnN0YW50aWF0ZSBtZW1iZXIgdGVtcGxhdGUKCWNsYXNzZXMuCgoJKiBpbml0LmMgKGJ1aWxkX29mZnNldF9yZWYpOiBEZWFsIHdpdGggYSBURU1QTEFURV9JRF9FWFBSIHdob3NlCgluYW1lIGlzIGEgTE9PS1VQX0VYUFIsIHJhdGhlciB0aGFuIGFuIElERU5USUZJRVJfTk9ERS4KCjE5OTgtMDgtMDMgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIG1ldGhvZC5jIChzZXRfbWFuZ2xlZF9uYW1lX2Zvcl9kZWNsKTogQ2hhbmdlIHJldHVybiB0eXBlIHRvIHZvaWQuCgoJKiBkZWNsLmMgKGxvb2t1cF9uYW1lX3JlYWwpOiBBIG5hbWVzcGFjZS1sZXZlbCBkZWNsIHRha2VzIHByaW9yaXR5CglvdmVyIGltcGxpY2l0IHR5cGVuYW1lLiAgQXZvaWQgZG9pbmcgdGhlIHNhbWUgbG9va3VwIHR3aWNlLgoKCSogc2VhcmNoLmMgKGRlcGVuZGVudF9iYXNlX3ApOiBOZXcgZm4uCgkoZGZzX3B1c2hkZWNscywgZGZzX2NvbXByZXNzX2RlY2xzKTogVXNlIGl0LgoKCSogdHlwZWNrLmMgKGdldF9tZW1iZXJfZnVuY3Rpb25fZnJvbV9wdHJmdW5jKTogRG9uJ3QgdHJ5IHRvIGhhbmRsZQoJdmlydHVhbCBmdW5jdGlvbnMgaWYgdGhlIHR5cGUgZG9lc24ndCBoYXZlIGFueS4KCjE5OTgtMDgtMDMgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQG1hcmttaXRjaGVsbC5jb20+CgoJKiBkZWNsMi5jIChncm9rZmllbGQpOiBEb24ndCBtYW5nbGUgdGhlIG5hbWUgb2YgYSBUWVBFX0RFQ0wgaWYgaXQKCXVzZXMgdGVtcGxhdGUgcGFyYW1ldGVycy4KCjE5OTgtMDgtMDIgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQG1hcmttaXRjaGVsbC5jb20+CgoJKiBjcC10cmVlLmRlZiAoTE9PS1VQX0VYUFIpOiBEb2N1bWVudC4gIFJlbW92ZSBzZWNvbmQgYXJndW1lbnQuCgkqIGNwLXRyZWUuaCAoREVDTF9USV9URU1QTEFURSk6IEltcHJvdmUgZG9jdW1lbnRhdGlvbi4KCSogbGV4LmMgKGRvX2lkZW50aWZpZXIpOiBEb24ndCB1c2UgYSBzZWNvbmQgYXJndW1lbnQsIG9yIGEgdHlwZSwKCXdoZW4gYnVpbGRpbmcgTE9PS1VQX0VYUFJzLgoJKGRvX2lkZW50aWZpZXIpOiBMaWtld2lzZS4KCShkb19zY29wZWRfaWQpOiBMaWtld2lzZS4KCSogbWV0aG9kLmMgKGhhY2tfaWRlbnRpZmllcik6IEltcHJvdmUgZXJyb3IgbWVzc2FnZS4KCSogcHQuYyAobG9va3VwX3RlbXBsYXRlX2Z1bmN0aW9uKTogRG9uJ3QgbmVlZGxlc3NseSBjYWxsCgljb3B5X3RvX3Blcm1hbmVudCBvciBidWlsZF9taW4uCgkodHN1YnN0X2NvcHkpOiBSZW1vdmUgI2lmIDAnZCBjb2RlLiAgdHN1YnN0IGludG8gTE9PS1VQX0VYUFJzIGlmCgluZWNlc3NhcnkuCgkoZG9fZGVjbF9pbnN0YW50aWF0aW9uKTogSW1wcm92ZSBlcnJvciBtZXNzYWdlLgoJKiB0cmVlLmMgKG1hcGNhciwgY2FzZSBMT09LVVBfRVhQUik6IERvbid0IGJlIHNvcnJ5OyBtYWtlIGEgY29weS4KCShidWlsZF9taW4pOiBDb3B5IHRoZSB0eXBlIHRvIHRoZSBwZXJtYW5lbnQgb2JzdGFjaywgdG9vLgoKMTk5OC0wOC0wMSAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogaW5pdC5jIChpbml0X2luaXRfcHJvY2Vzc2luZyk6IFJlbW92ZSBCSSogaGFuZGxpbmcuCgkoYnVpbGRfYnVpbHRpbl9jYWxsKTogUmVtb3ZlLgoJKGJ1aWxkX2J1aWx0aW5fZGVsZXRlX2NhbGwpOiBOZXcgZm4uCgkoYnVpbGRfZGVsZXRlKTogVXNlIGl0LgoKMTk5OC0wNy0zMSAgTWFyayBNaXRjaGVsbCAgPG1hcmtAbWFya21pdGNoZWxsLmNvbT4KCgkqIGNwLXRyZWUuaCAoUFJPQ0VTU0lOR19SRUFMX1RFTVBMQVRFX0RFQ0xfUCk6IE5ldyBtYWNyby4KCShtYXliZV9jaGVja190ZW1wbGF0ZV90eXBlKTogTmV3IGZ1bmN0aW9uLgoJKiBkZWNsLmMgKG1heWJlX3Byb2Nlc3NfdGVtcGxhdGVfdHlwZV9kZWNsYXJhdGlvbik6IE5ldyBmdW5jdGlvbiwKCXNwbGl0IG91dCBmcm9tIHB1c2h0YWcgIENhbGwgbWF5YmVfY2hlY2tfdGVtcGxhdGVfdHlwZS4KCShwdXNodGFnKTogVXNlIGl0LiAgVXNlIFBST0NFU1NJTkdfUkVBTF9URU1QTEFURV9ERUNMX1AuCgkoeHJlZl90YWcpOiBVc2UgUFJPQ0VTU0lOR19SRUFMX1RFTVBMQVRFX0RFQ0xfUC4KCSogZnJpZW5kLmMgKGRvX2ZyaWVuZCk6IFVzZSBQUk9DRVNTSU5HX1JFQUxfVEVNUExBVEVfREVDTF9QLgoJKiBwdC5jICh0ZW1wbGF0ZV9jbGFzc19kZXB0aF9yZWFsKTogR2VuZXJhbGl6YXRpb24gb2YgLi4uCgkodGVtcGxhdGVfY2xhc3NfZGVwdGgpOiBVc2UgaXQuCgkocmVnaXN0ZXJfc3BlY2lhbGl6YXRpb24pOiBVc2UgZHVwbGljYXRlX2RlY2xzIGZvciBkdXBsaWNhdGUKCWRlY2xhcmF0aW9ucyBvZiBzcGVjaWFsaXphdGlvbnMuCgkobWF5YmVfY2hlY2tfdGVtcGxhdGVfdHlwZSk6IE5ldyBmdW5jdGlvbi4KCShwdXNoX3RlbXBsYXRlX2RlY2xfcmVhbCk6IEZpeCBjb21tZW50LgoJKGNvbnZlcnRfbm9udHlwZV9hcmd1bWVudCk6IExpa2V3aXNlLgoJKGxvb2t1cF90ZW1wbGF0ZV9jbGFzcyk6IExpa2V3aXNlLiAgQXZvaWQgYW4gaW5maW5pdGUgbG9vcCBvbgoJZXJyb25lb3VzIGNvZGUuCgkodHN1YnN0X2ZyaWVuZF9mdW5jdGlvbik6IEZpeCBjb21tZW50LgoJKHRzdWJzdCwgY2FzZSBGVU5DVElPTl9ERUNMKTogRGVhbCB3aXRoIGEgREVDTF9USV9URU1QTEFURSB0aGF0IGlzCglhbiBJREVOVElGSUVSX05PREUuCgkqIHNlbWFudGljcy5jIChiZWdpbl9mdW5jdGlvbl9kZWZpbml0aW9uKTogVXNlCglyZXNldF9zcGVjaWFsaXphdGlvbiB0byBub3RlIHRoYXQgdGVtcGxhdGUgaGVhZGVycyBkb24ndCBhcHBseQoJZGlyZWN0bHkgdG8gZGVjbGFyYXRpb25zIGFmdGVyIHRoZSBvcGVuaW5nIGN1cmx5IGZvciBhIGZ1bmN0aW9uLgoKMTk5OC0wNy0yOSAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogZGVjbC5jIChwdXNoX292ZXJsb2FkZWRfZGVjbCk6IFVzZSBjdXJyZW50X25hbWVzcGFjZSBpbnN0ZWFkIG9mCglERUNMX0NPTlRFWFQgKGRlY2wpIHRvIGRldGVybWluZSB3aGVyZSB3ZSBnby4KCgkqIGRlY2wuYyAobG9va3VwX25hbWVfcmVhbCk6IEZpeCB0eXBvLgoKMTk5OC0wNy0yOCAgTWFyayBNaXRjaGVsbCAgPG1hcmtAbWFya21pdGNoZWxsLmNvbT4KCgkqIGZyaWVuZC5jIChpc19mcmllbmQpOiBCZSBsZW5pZW50IHdpdGggbWVtYmVyIGZ1bmN0aW9ucyB0byBkZWFsCgl3aXRoIG5lc3RlZCBmcmllbmRzLgoKMTk5OC0wNy0yOCAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogY2xhc3MuYyAoZmluaXNoX3N0cnVjdF8xKTogQ29udmVydCBpbnRlZ2VyX3plcm9fbm9kZSB0bwoJc3NpemV0eXBlIGJlZm9yZSBwYXNzaW5nIGl0IHRvIHNldF9ydHRpX2VudHJ5LgoJKiB0eXBlY2syLmMgKGluaXRpYWxpemVyX2NvbnN0YW50X3ZhbGlkX3ApOiBBbGxvdyBjb252ZXJzaW9uIG9mIDAKCW9mIGFueSBzaXplIHRvIGEgcG9pbnRlci4KCjE5OTgtMDctMjcgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQG1hcmttaXRjaGVsbC5jb20+CgoJKiBjcC10cmVlLmggKFRJX1VTRVNfVEVNUExBVEVfUEFSTVMpOiBSZW1vdmUuCgkoYnVpbGRfdGVtcGxhdGVfZGVjbF9vdmVybG9hZCk6IFJlbW92ZS4KCShzZXRfbWFuZ2xlZF9uYW1lX2Zvcl9kZWNsKTogTmV3IGZ1bmN0aW9uLgoJKGlubmVybW9zdF9hcmdzKTogUmVtb3ZlIGlzX3NwZWMgcGFyYW1ldGVyLgoJKG1vc3Rfc3BlY2lhbGl6ZWQsIG1vc3Rfc3BlY2lhbGl6ZWRfY2xhc3MpOiBSZW1vdmUgZGVjbGFyYXRpb25zLgoJKGxvb2t1cF90ZW1wbGF0ZV9jbGFzcyk6IEFkZCBlbnRlcmluZ19zY29wZSBwYXJhbWV0ZXIuCgkobWF5YmVfcHJvY2Vzc19wYXJ0aWFsX3NwZWNpYWxpemF0aW9uKTogTmV3IGZ1bmN0aW9uLgoJKGZpbmlzaF90ZW1wbGF0ZV9kZWNsKTogTGlrZXdpc2UuCgkoZmluaXNoX3RlbXBsYXRlX3R5cGUpOiBMaWtld2lzZS4KCSogY2xhc3MuYyAoZmluaXNoX3N0cnVjdCk6IENsZWFuIHVwIHByb2Nlc3Npbmcgb2YgbWVtYmVyIHRlbXBsYXRlCglzcGVjaWFsaXphdGlvbnMuCgkqIGRlY2wuYyAocHVzaHRhZyk6IEZpeCBmb3JtYXR0aW5nLgoJKGxvb2t1cF90YWcpOiBJbXByb3ZlIGhhbmRsaW5nIG9mIHBzZXVkby1nbG9iYWwgbGV2ZWxzLgoJKG1ha2VfdHlwZW5hbWVfdHlwZSk6IEFkanVzdCBjYWxsIHRvIGxvb2t1cF90ZW1wbGF0ZV9jbGFzcy4KCShzaGFkb3dfdGFnKTogVXNlIG1heWJlX3Byb2Nlc3NfcGFydGlhbF9zcGVjaWFsaXphdGlvbi4KCSh4cmVmX3RhZyk6IEltcHJvdmUgaGFuZGxpbmcgb2YgbWVtYmVyIGZyaWVuZHMuCgkoc3RhcnRfZnVuY3Rpb24pOiBDYWxsIHB1c2hfbmVzdGVkX2NsYXNzIGJlZm9yZQoJcHVzaF90ZW1wbGF0ZV9kZWNsLiAgRG9uJ3QgY2FsbCBwdXNoX3RlbXBsYXRlX2RlY2wgZm9yCglzcGVjaWFsaXphdGlvbnMuCgkqIGRlY2wyLmMgKGdyb2tfeF9jb21wb25lbnRzKTogRG9uJ3QgY2FsbCB4cmVmX3RhZyBmb3IKCXRlbXBsYXRlIGluc3RhbnRpYXRpb25zLiAgSGFuZGxlIFVOSU9OX1RZUEVzIGxpa2UgUkVDT1JEX1RZUEVzLgoJKGdyb2tjbGFzc2ZuKTogVXNlIHNldF9tYW5nbGVkX25hbWVfZm9yX2RlY2wuCgkoYXJnX2Fzc29jX2NsYXNzKTogQWRqdXN0IGNhbGwgdG8gaW5uZXJtb3N0X2FyZ3MuCgkobWFya191c2VkKTogRG9uJ3QgY2FsbCBpbnN0YW50aWF0ZV9kZWNsIGZvciBhIFRFTVBMQVRFX0RFQ0wuCgkqIGVycm9yLmMgKGR1bXBfZnVuY3Rpb25fbmFtZSk6IEltcHJvdmUgcHJpbnRpbmcgb2YgdGVtcGxhdGUKCWZ1bmN0aW9uIG5hbWVzLgoJKiBmcmllbmQuYyAoaXNfZnJpZW5kKTogRG9uJ3QgY29tcGFyZSB0eXBlcyBvZiBkZWNscyB0byBkZXRlcm1pbmUKCWZyaWVuZHNoaXAsIHVubGVzcyBmbGFnX2d1aWRpbmdfZGVjbHMuCgkobWFrZV9mcmllbmRfY2xhc3MpOiBQYXJ0aWFsIHNwZWNpYWxpemF0aW9ucyBjYW5ub3QgYmUgZnJpZW5kcy4KCShkb19mcmllbmQpOiBVc2Ugc2V0X21hbmdsZWRfbmFtZV9mb3JfZGVjbC4gIENhbGwKCXB1c2hfdGVtcGxhdGVfZGVjbF9yZWFsIGluc3RlYWQgb2YgcHVzaF90ZW1wbGF0ZV9kZWNsLgoJKiBtZXRob2QuYyAoYnVpbGRfZGVjbF9vdmVybG9hZF9yZWFsKTogUmVtb3ZlIHByb3RvdHlwZS4gIEdpdmUgaXQKCWV4dGVybmFsIGxpbmthZ2UuCgkoYnVpbGRfb3ZlcmxvYWRfaWRlbnRpZmllcik6IEFkanVzdCBjYWxsIHRvIGlubmVybW9zdF9hcmdzLgoJKGJ1aWxkX3RlbXBsYXRlX2RlY2xfb3ZlcmxvYWQpOiBSZW1vdmUuCgkoc2V0X21hbmdsZWRfbmFtZV9mb3JfZGVjbCk6IE5ldyBmdW5jdGlvbi4KCSogcGFyc2UueSAoLmZpbmlzaF90ZW1wbGF0ZV90eXBlKTogTmV3IG5vbi10ZXJtaW5hbC4KCSh0ZW1wbGF0ZV9kZWYpOiBVc2UgZmluaXNoX3RlbXBsYXRlX2RlY2wuICBVc2UgdGVtcGxhdGVfZXh0ZGVmCglpbnN0ZWFkIG9mIGV4dGRlZi4KCSh0ZW1wbGF0ZV9leHRkZWYsIHRlbXBsYXRlX2RhdGFkZWYpOiBOZXcgbm9uLXRlcm1pbmFscywgY29udGFpbmluZwoJb25seSB0aG9zZSBydWxlcyBmb3IgdGhpbmdzIHdoaWNoIGNhbiBiZSB0ZW1wbGF0ZXMuCgkoZGF0YWRlZik6IFRpZHkuCgkodGVtcGxhdGVfdHlwZSwgc2VsZl90ZW1wbGF0ZV90eXBlKTogVXNlIC5maW5pc2hfdGVtcGxhdGVfdHlwZS4KCShuYW1lZF9jbGFzc19oZWFkKTogVXNlIG1heWJlX3Byb2Nlc3NfcGFydGlhbF9zcGVjaWFsaXphdGlvbi4KCSogcHQuYyAobWFuZ2xlX2NsYXNzX25hbWVfZm9yX3RlbXBsYXRlKTogUmVtb3ZlIGNvbnRleHQgcGFyYW1ldGVyLgoJKGdldF9jbGFzc19iaW5kaW5ncyk6IFJlbW92ZSBvdXRlcl9hcmdzIHBhcmFtZXRlci4KCShjb21wbGV0ZV90ZW1wbGF0ZV9hcmdzKTogUmVtb3ZlLgoJKGFkZF9vdXRlcm1vc3RfdGVtcGxhdGVfYXJncyk6IE5ldyBmdW5jdGlvbi4KCShyZWdpc3Rlcl9zcGVjaWFsaXphdGlvbik6IFJldHVybiB0aGUgc3BlY2lhbGl6YXRpb24uCgkodW5yZWdpc3Rlcl9zcGVjaWFsaXphdGlvbik6IE5ldyBmdW5jdGlvbi4KCSh0c3Vic3RfdGVtcGxhdGVfcGFybXMpOiBMaWtld2lzZS4KCShtb3N0X3NwZWNpYWxpemVkLCBtb3N0X3NwZWNpYWxpemVkX2NsYXNzKTogUHJvdG90eXBlIGhlcmUgYXMKCXN0YXRpYy4KCShvcmlnaW5hbF90ZW1wbGF0ZSk6IFJlbmFtZSB0byBtb3N0X2dlbmVyYWxfdGVtcGxhdGUuCgkodHN1YnN0X3RlbXBsYXRlX3Bhcm1zKTogTmV3IGZ1bmN0aW9uLgoJKHNldF9tYW5nbGVkX25hbWVfZm9yX3RlbXBsYXRlX2RlY2wpOiBMaWtld2lzZS4KCShUTVBMX0FSR1NfREVQVEgpOiBOZXcgbWFjcm8uCgkoVE1QTF9BUkdTX0hBVkVfTVVMVElQTEVfTEVWRUxTKTogQWRqdXN0LgoJKFRNUExfQVJHU19MRVZFTCk6IE5ldyBtYWNyby4KCShTRVRfVE1QTF9BUkdTX0xFVkVMKTogTGlrZXdpc2UuCgkoVE1QTF9BUkcpOiBMaWtld2lzZS4KCShTRVRfVE1QTF9BUkcpOiBMaWtld2lzZS4KCShUTVBMX0FSR1NfREVQVEgpOiBMaWtld2lzZS4KCShmaW5pc2hfbWVtYmVyX3RlbXBsYXRlX2RlY2wpOiBVc2UgZmluaXNoX3RlbXBsYXRlX2RlY2wuCgkobWF5YmVfcHJvY2Vzc19wYXJ0aWFsX3NwZWNpYWxpemF0aW9uKTogTmV3IGZ1bmN0aW9uLCBzcGxpdCBvdXQKCWZyb20gdHN1YnN0LgoJKGlubGluZV9uZWVkc190ZW1wbGF0ZV9wYXJtcyk6IFVzZSBUTVBMX1BBUk1TX0RFUFRILgoJKG1heWJlX2JlZ2luX21lbWJlcl90ZW1wbGF0ZV9wcm9jZXNzaW5nKTogVXNlIG5ldyBtYWNyb3MuCgkoaXNfbWVtYmVyX3RlbXBsYXRlKTogTGlrZXdpc2UuCgkoaXNfbWVtYmVyX3RlbXBsYXRlX2NsYXNzKTogTGlrZXdpc2UuCgkoYWRkX3RvX3RlbXBsYXRlX2FyZ3MpOiBMaWtld2lzZS4gIERlYWwgd2l0aCBtdWx0aXBsZSBsZXZlbHMgb2YKCWFyZ3MuCgkobWF5YmVfcHJvY2Vzc19wYXJ0aWFsX3NwZWNpYWxpemF0aW9uKTogTmV3IGZ1bmN0aW9uLgoJKHJldHJpZXZlX3NwZWNpYWxpemF0aW9uKTogQWRkIGNvbnNpc3RlbmN5IGNoZWNrLgoJKGRldGVybWluZV9zcGVjaWFsaXphdGlvbik6IFJldHVybiBmdWxsIGFyZ3VtZW50IGxpc3QuCgkoY2hlY2tfZXhwbGljaXRfc3BlY2lhbGl6YXRpb24pOiBUd2VhayBmcmllbmQgaGFuZGxpbmcuICBVc2UgZnVsbAoJYXJndW1lbnQgbGlzdHMuICBTaW1wbGlmeS4KCShjdXJyZW50X3RlbXBsYXRlX2FyZ3MpOiBVc2UgbmV3IG1hY3Jvcy4KCShwdXNoX3RlbXBsYXRlX2RlY2xfcmVhbCk6IENoYW5nZSBpbGwtbmFtZWQgbWFpbmFyZ3MgdG8gc3BlY2FyZ3MuCglDaGVjayB0aGF0IGEgcGFydGlhbCBzcGVjaWFsaXphdGlvbiBhY3R1YWxseSBzcGVjaWFsaXplcyBhdCBsZWFzdAoJb25lIHBhcmFtZXRlci4gICBJbXByb3ZlIGZyaWVuZCBoYW5kbGluZy4gIE1vZGlmeSBmb3IgZnVsbAoJdGVtcGxhdGUgYXJndW1lbnRzLgoJKGNsYXNzdHlwZV9tYW5nbGVkX25hbWUpOiBEb24ndCBtYW5nbGUgdGhlIG5hbWVzIG9mCglzcGVjaWFsaXphdGlvbnMuCgkobG9va3VwX3RlbXBsYXRlX2NsYXNzKTogQWRkIGVudGVyaW5nX3Njb3BlIHBhcmFtZXRlci4gIFVzZSBpdCB0bwoJYXZvaWQgZmluZGluZyBhIHRlbXBsYXRlIHR5cGUgd2hlbiBhbiBpbnN0YW50aWF0aW9uIGlzIHJlcXVpcmVkLgoJU2ltcGxpZnkuICBVc2UgZnVsbCB0ZW1wbGF0ZSBhcmd1bWVudHMuCgkodHN1YnN0X2ZyaWVuZF9mdW5jdGlvbik6IFVzZSB1bnJlZ2lzdGVyX3NwZWNpYWxpemF0aW9uLiAgVXNlIG5ldwoJbWFjcm9zLiAgVXNlIGZ1bGwgdGVtcGxhdGUgYXJndW1lbnRzLgoJKHRzdWJzdF9mcmllbmRfY2xhc3MpOiBTdWJzdGl0dXRlLCB1c2luZyB0c3Vic3RfdGVtcGxhdGVfcGFybXMsCglpbnRvIHRoZSB0ZW1wbGF0ZSBwYXJhbWV0ZXJzIGJlZm9yZSBwYXNzaW5nIHRoZW0gdG8KCXJlZGVjbGFyZV9jbGFzc190ZW1wbGF0ZS4KCShpbnN0YW50aWF0ZV9jbGFzc190ZW1wbGF0ZSk6IFNpbXBsaWZ5LiAgVXNlIGZ1bGwgdGVtcGxhdGUKCWFyZ3VtZW50cy4gIEFkanVzdCBjYWxscyB0byBnZXRfY2xhc3NfYmluZGluZ3MuICBVc2UKCVNFVF9JREVOVElGSUVSX1RZUEVfVkFMVUUgd2hlcmUgbmVlZGVkLiAgSW1wcm92ZSBmcmllbmQgaGFuZGxpbmcuCgkoaW5uZXJtb3N0X2FyZ3MpOiBVc2UgbmV3IG1hY3Jvcy4KCSh0c3Vic3RfYWdncl90eXBlKTogTmV3IGZ1bmN0aW9uLCBzcGxpdCBvdXQgZnJvbSB0c3Vic3QuCgkodHN1YnN0KTogVXNlIHRzdWJzdF9hZ2dyX3R5cGUsIHRzdWJzdF90ZW1wbGF0ZV9wYXJtcywgbmV3IGNhbGxpbmcKCWNvbnZlbnRpb25zIGZvciBsb29rdXBfdGVtcGxhdGVfY2xhc3MuICBSZWZpbmUgaGFuZGxpbmcgb2YgcGFydGlhbAoJaW5zdGFudGlhdGlvbnMuICAgUmVtb3ZlIGNhbGxzIHRvIGNvbXBsZXRlX3RlbXBsYXRlX2FyZ3MuCglTaW1wbGlmeS4gIEFkZCBjb25zaXN0ZW5jeSBjaGVja3MuICBVc2Ugc2V0X21hbmdsZWRfbmFtZV9mb3JfZGVjbAoJYW5kIHNldF9tYW5nbGVkX25hbWVfZm9yX3RlbXBsYXRlX2RlY2wuCgkodHN1YnN0X2NvcHkpOiBVc2UgdHN1YnN0X2FnZ3JfdHlwZS4KCShpbnN0YW50aWF0ZV90ZW1wbGF0ZSk6IFVzZSBmdWxsIHRlbXBsYXRlIGFyZ3VtZW50cy4KCShtb3JlX3NwZWNpYWxpemVkKTogSW1wcm92ZSBmb3JtYXR0aW5nLgoJKG1vcmVfc3BlY2lhbGl6ZWRfY2xhc3MpOiBBZGp1c3QgY2FsbHMgdG8gZ2V0X2NsYXNzX2JpbmRpbmdzLgoJKGdldF9iaW5kaW5nc19yZWFsKTogRG9uJ3QgY2FsbCBjb21wbGV0ZV90ZW1wbGF0ZV9hcmdzLgoJKG1vc3Rfc3BlY2lhbGl6ZWQpOiBEb24ndCBvdmVyd3JpdGUgaW5wdXQ7IGNyZWF0ZSBhIG5ldyBsaXN0LgoJKG1vc3Rfc3BlY2lhbGl6ZWRfY2xhc3MpOiBVc2UgbW9zdF9nZW5lcmFsX3RlbXBsYXRlLgoJKHJlZ2VuZXJhdGVfZGVjbF9mcm9tX3RlbXBsYXRlKTogVXNlIHVucmVnaXN0ZXJfc3BlY2lhbGl6YXRpb24uCglVc2UgZnVsbCB0ZW1wbGF0ZSBhcmd1bWVudHMuCgkoaW5zdGFudGlhdGVfZGVjbCk6IFVzZSBmdWxsIHRlbXBsYXRlIGFyZ3VtZW50cy4KCShzZXRfbWFuZ2xlZF9uYW1lX2Zvcl90ZW1wbGF0ZV9kZWNsKTogTmV3IGZ1bmN0aW9uLgoJKiBzZW1hbnRpY3MuYyAoYmVnaW5fY2xhc3NfZGVmaW5pdGlvbik6IFVzZQoJbWF5YmVfcHJvY2Vzc19wYXJ0aWFsX3NwZWNpYWxpemF0aW9uLgoJKGZpbmlzaF9tZW1iZXJfY2xhc3NfdGVtcGxhdGUpOiBOZXcgZnVuY3Rpb24uCgkoZmluaXNoX3RlbXBsYXRlX2RlY2wpOiBMaWtld2lzZS4KCShmaW5pc2hfdGVtcGxhdGVfdHlwZSk6IExpa2V3aXNlLgoJKHR5cGVjay5jKTogRG9uJ3QgY3Jhc2ggYWZ0ZXIgaXNzdWluZyBhIGNvbXBpbGVyX2Vycm9yLgoJKiBNYWtlZmlsZS5pbiAoQ09ORkxJQ1RTKTogQWRqdXN0OyB3ZSByZW1vdmVkIGEgcy9yIGNvbmZsaWN0LgoKMTk5OC0wNy0yNyAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogdHlwZWNrMi5jIChidWlsZF9mdW5jdGlvbmFsX2Nhc3QpOiBIYW5kbGUgZGVmYXVsdC1pbml0aWFsaXphdGlvbi4KCgkqIGNhbGwuYyAoYnVpbGRfb3Zlcl9jYWxsKTogUGFzcyAxIHRvIHBvcGNsYXNzLgoKCSogcGFyc2UueSAoZGlyZWN0X25vdHlwZV9kZWNsYXJhdG9yKTogQWRkIHByZWNlZGVuY2UgZGVjbGFyYXRpb24KCXRvIG5vdHlwZV91bnF1YWxpZmllZF9pZCBjYXNlLgoJKiBNYWtlZmlsZS5pbiAoRVhQRUNUKTogQWRqdXN0LgoKCSogdHJlZS5jIChvdmxfbWVtYmVyKTogRml4IGZvciBzaW5nbGUgZnVuY3Rpb24gaW4gT1ZMLgoKMTk5OC0wNy0yNyAgRGF2ZSBCcm9sbGV5ICA8YnJvbGxleUBjeWdudXMuY29tPgoKCSogYy1sZXguYyAoeXlsZXgpOiBGaXggYm91bmRhcnkgY29uZGl0aW9ucyBpbiBjaGFyYWN0ZXIgbGl0ZXJhbCBhbmQKCXN0cmluZyBsaXRlcmFsIGxvb3BzLgoKMTk5OC0wNy0yNCAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogZGVjbC5jIChsb29rdXBfbmFtZV9yZWFsKTogT0ssIGRvIHJldHVybiB0aGUgZnJvbV9vYmogdmFsdWUKCXVubGVzcyBnb3Rfb2JqZWN0IGRlcGVuZHMgb24gdGVtcGxhdGUgcGFybXMuCgoJKiBwYXJzZS55IChuZXN0ZWRfbmFtZV9zcGVjaWZpZXJfMSk6IFB1bGwgb3V0IHRoZSBUWVBFX01BSU5fVkFSSUFOVC4KCgkqIHB0LmMgKGNvZXJjZV90ZW1wbGF0ZV9wYXJtcyk6IEFsc28gY29tcGxhaW4gYWJvdXQgbG9jYWwgZW51bXMuCgoJKiBjcC10cmVlLmg6IEFkZCBwcm90b3R5cGUgZm9yIHNldF9pZGVudGlmaWVyX2xvY2FsX3ZhbHVlLgoJKiBkZWNsLmMgKHNldF9pZGVudGlmaWVyX2xvY2FsX3ZhbHVlX3dpdGhfc2NvcGUpOiBNYWtlIHN0YXRpYywKCXByb3RvdHlwZS4KCSogc2VhcmNoLmMgKGNvdmFyaWFudF9yZXR1cm5fcCk6IExpa2V3aXNlLgoJKiBleGNlcHQuYyAoYnVpbGRfdGVybWluYXRlX2hhbmRsZXIsIGFsbG9jX2VoX29iamVjdCk6IExpa2V3aXNlLgoKCSogY2FsbC5jIChidWlsZF9tZXRob2RfY2FsbCk6IE9ubHkgcHVsbCBvdXQgdGhlIHR5cGUgb2YgYSBkZXN0cnVjdG9yCglpZiBpdCdzIGEgdGVtcGxhdGUgdHlwZSBwYXJtLgoJKiBkZWNsLmMgKGxvb2t1cF9uYW1lX3JlYWwpOiBOZXZlciByZXR1cm4gdGhlIGZyb21fb2JqIHZhbHVlLgoKMTk5OC0wNy0yMyAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogZXhjZXB0LmMgKHByb2Nlc3Nfc3RhcnRfY2F0Y2hfYmxvY2tfb2xkKTogQ2FsbCBzdGFydF9kZWNsXzEgZm9yCgljYXRjaCBwYXJtLgoJKiBkZWNsLmMgKHN0YXJ0X2RlY2xfMSk6IEF2b2lkIGR1cGxpY2F0ZSBlcnJvci4KCgkqIGluaXQuYyAoZXhwYW5kX2RlZmF1bHRfaW5pdCk6IE9ubHkgcGVyZm9ybSB0aGUgaW5pdGlhbGl6YXRpb24gaWYKCWl0IHdpbGwgZG8gc29tZXRoaW5nLgoKMTk5OC0wNy0yMyAgSC5KLiBMdSAgKGhqbEBnbnUub3JnKQoKCSogcGFyc2UueSAoYmFzZV9jbGFzcyk6IENoZWNrIGZvciBpbnZhbGlkIGJhc2UgY2xhc3MuCgoxOTk4LTA3LTIzICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBkZWNsMi5jIChpbXBvcnRfZXhwb3J0X3RlbXBsYXRlKTogRm9sZCBpbi4uLgoJKGltcG9ydF9leHBvcnRfY2xhc3MpOiAuLi50byBoZXJlLiAgSGFuZGxlIGRsbGltcG9ydC9leHBvcnQuCgoJKiBjbGFzcy5jIChidWlsZF92dGFibGUpOiBQYXNzIGF0X2VvZiB0byBpbXBvcnRfZXhwb3J0X3Z0YWJsZS4KCShwcmVwYXJlX2ZyZXNoX3Z0YWJsZSk6IExpa2V3aXNlLgoJKiBkZWNsMi5jIChpbXBvcnRfZXhwb3J0X2NsYXNzKTogU3BsaXQgb3V0Li4uCgkoZmluaXNoX3ByZXZ0YWJsZV92YXJkZWNsKTogRnJvbSBoZXJlLgoJKiBjbGFzcy5jIChmaW5pc2hfc3RydWN0XzEpOiBDYWxsIGltcG9ydF9leHBvcnRfY2xhc3MgaWYgYXRfZW9mLgoKCSogZGVjbC5jIChzdGFydF9mdW5jdGlvbik6ICNpZiAwIG15c3RlcmlvdXMgY29kZSBJIHdyb3RlIGFuZCBoYXZlCglmb3Jnb3R0ZW4gd2h5LgoJKiBydHRpLmMgKGdldF90aW5mb19mbik6IElmIHRoaXMgaXMgZm9yIGEgY2xhc3MgdHlwZSwgc2V0CglERUNMX0NPTlRFWFQuCgoxOTk4LTA3LTIyICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBpbmMvZXhjZXB0aW9uOiBDaGFuZ2UgdGVybWluYXRlIGFuZCB1bmV4cGVjdGVkIHRvICgpLgoKCSogcGFyc2UueSAobmFtZWRfY2xhc3NfaGVhZF9zYW5zX2Jhc2V0eXBlX2RlZm4pOiBBCgluYW1lZF9jbGFzc19oZWFkX3NhbnNfYmFzZXR5cGUgZm9sbG93ZWQgYnkgJ3snIG9yICc6JyBpcyBhIGRlZm4uCgoxOTk4LTA3LTIxICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiB0cmVlLmMgKGNhbm9uaWNhbF90eXBlX3ZhcmlhbnQpOiBOZXcgZm4gdG8gaGFuZGxlIGFycmF5cy4KCSogY3AtdHJlZS5oIChDQU5PTklDQUxfVFlQRV9WQVJJQU5UKTogUmVtb3ZlLgoJKiBwdC5jICh1bmlmeSwgZGVmYXVsdCBjYXNlKTogQWxzbyBmb2xkIGFyZy4gIEZpeCBhcnJheSBib3VuZHMgY2FzZS4KCSogbWV0aG9kLmMgKHByb2Nlc3Nfb3ZlcmxvYWRfaXRlbSk6IFVzZSBidWlsZF9vdmVybG9hZF92YWx1ZSBmb3IKCWFycmF5cy4KCjE5OTgtMDctMjAgIERhdmUgQnJvbGxleSAgPGJyb2xsZXlAY3lnbnVzLmNvbT4KCgkqIGxleC5jIChtYmNoYXIuaCk6ICNpbmNsdWRlIGl0LgoJKEdFVF9FTlZJUk9OTUVOVCk6IE5ldyBtYWNyby4KCShpbml0X3BhcnNlKTogU2V0IGNoYXJhY3RlciBzZXQgYmFzZWQgb24gTEFORyBlbnZpcm9ubWVudCB2YXJpYWJsZS4KCShyZWFsX3l5bGV4KTogSGFuZGxlIG11bHRpYnl0ZSBjaGFyYWN0ZXJzIGluIGNoYXJhY3RlciBsaXRlcmFscy4KCShyZWFsX3l5bGV4KTogSGFuZGxlIG11bHRpYnl0ZSBjaGFyYWN0ZXJzIGluIHN0cmluZyBsaXRlcmFscy4KCjE5OTgtMDctMTkgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIGxleC5jIChkb19pZGVudGlmaWVyKTogTG9vayBmb3IgY2xhc3MgdmFsdWUgZXZlbiBpZiB3ZSBkb24ndAoJaGF2ZSBhIGdsb2JhbCB2YWx1ZS4gIERvIGltcGxpY2l0IGRlY2xhcmF0aW9uIGlmIHBhcnNpbmcgaXMgMi4KCSogc2VtYW50aWNzLmMgKGZpbmlzaF9jYWxsX2V4cHIpOiBQYXNzIDIgaWYgd2UncmUgZG9pbmcgS29lbmlnCglsb29rdXAuCgoxOTk4LTA3LTE5ICBNYXJrIE1pdGNoZWxsICA8bWFya0BtYXJrbWl0Y2hlbGwuY29tPgoKCSogZGVjbC5jIChwdXNodGFnKTogUmV2ZXJ0IHByZXZpb3VzIGNoYW5nZS4KCSogcHQuYyAobG9va3VwX3RlbXBsYXRlX2NsYXNzKTogRG9uJ3QgcHV0IG91dCBkZWJ1Z2dpbmcKCWluZm9ybWF0aW9uIGZvciB0eXBlcyB0aGF0IHVzZSB0ZW1wbGF0ZSBwYXJhbWV0ZXJzLgoKCSogZGVjbC5jIChwdXNodGFnKTogRG9uJ3QgcHV0IG91dCBkZWJ1Z2dpbmcgaW5mb3JtYXRpb24gZm9yCgljb21waWxlci1nZW5lcmF0ZWQgdHlwZWRlZnMuCgoJKiBlcnJvci5jIChkdW1wX3R5cGVfcmVhbCk6IERvbid0IGNyYXNoIHdoZW4gcHJlc2VudGVkIHdpdGgKCWludFFJX3R5cGVfbm9kZSBvciB0aGUgbGlrZS4KCgkqIHNlbWFudGljcy5jIChmaW5pc2hfdHJhbnNsYXRpb25fdW5pdCk6IEZpeCBzcGVsbGluZyBlcnJvciBpbgoJY29tbWVudC4KCjE5OTgtMDctMTcgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIGRlY2wuYyAobG9va3VwX25hbWVfcmVhbCk6IFB1bGwgb3V0IHNpbmdsZSBmdW5jdGlvbiBoZXJlLgoJKHNlbGVjdF9kZWNsKTogTm90IGhlcmUuCgkodW5xdWFsaWZpZWRfbmFtZXNwYWNlX2xvb2t1cCk6IFVzZSBDUF9ERUNMX0NPTlRFWFQuCgoJKiBkZWNsLmMgKHF1YWxpZnlfbG9va3VwKTogVHdlYWsgYWdhaW4uCgoJKiBwdC5jIChsb29rdXBfdGVtcGxhdGVfY2xhc3MpOiBEb24ndCBtZXNzIHdpdGggdGhlIGNvbnRleHQgb2YgdGhlCglpbnN0YW50aWF0aW9uLgoJKiBkZWNsMi5jIChjdXJyZW50X2RlY2xfbmFtZXNwYWNlKTogUmVtb3ZlIHNwZWNpYWwgaGFuZGxpbmcgZm9yCgl0ZW1wbGF0ZXMuCgoJKiBwdC5jICh0c3Vic3QsIGNhc2UgRlVOQ1RJT05fREVDTCk6IEZpeCBnZXR0aW5nIGNvbXBsZXRlIGFyZ3MgZm9yCglhIG1lbWJlciB0ZW1wbGF0ZSBzcGVjaWFsaXphdGlvbi4KCgkqIHRyZWUuYyAob3ZsX21lbWJlcik6IFVzZSBkZWNsc19tYXRjaCB0byBjb21wYXJlIGZ1bmN0aW9ucy4KCSogZGVjbC5jIChkZWNsc19tYXRjaCk6IENoZWNrIHRoZSBjb250ZXh0IG9mIGEgZnVuY3Rpb24uCgoJKiBwYXJzZS55IChwcmltYXJ5KTogVXNlIG5vdHlwZV91bnF1YWxpZmllZF9pZCBpbnN0ZWFkIG9mIElERU5USUZJRVIKCWluIEtvZW5pZyBsb29rdXAgc3VwcG9ydCBydWxlcy4KCSogc2VtYW50aWNzLmMgKGZpbmlzaF9jYWxsX2V4cHIpOiBIYW5kbGUgdGhlIG5ldyBjYXNlcy4KCgkqIHR5cGVjay5jIChidWlsZF94X2Z1bmN0aW9uX2NhbGwpOiBIYW5kbGUgb3ZlcmxvYWRlZCBtZXRob2RzLgoKCSogZGVjbC5jIChncm9rdmFyZGVjbCk6IERvbid0IGNhbGwgYnVpbGRfc3RhdGljX25hbWUgZm9yIGV4dGVybiAiQyIuCgoxOTk4LTA3LTE2ICBNYXJrIE1pdGNoZWxsICA8bWFya0BtYXJrbWl0Y2hlbGwuY29tPgoKCSogc2VtYW50aWNzLmMgKGZpbmlzaF9vYmplY3RfY2FsbF9leHByKTogUmV2ZXJ0IHByZXZpb3VzIGNoYW5nZS4KCSogY2FsbC5jIChidWlsZF9uZXdfbWV0aG9kX2NhbGwpOiBMaWtld2lzZS4gIEluc3RlYWQsIGNvbnZlcnQKCVRZUEVfREVDTHMgdG8gSURFTlRJRklFUnMgaGVyZSwgaW4gdGhlIHByZXNlbmNlIG9mIHRlbXBsYXRlcy4KCjE5OTgtMDctMTYgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIGRlY2wuYyAocXVhbGlmeV9sb29rdXApOiBIYW5kbGUgdGVtcGxhdGVzLgoKCSogZGVjbDIuYyAoZG9fdXNpbmdfZGlyZWN0aXZlKTogRG9uJ3QgcGFzcyBhbmNlc3Rvci4KCSogZGVjbC5jIChwdXNoX3VzaW5nX2RpcmVjdGl2ZSk6IENhbGN1bGF0ZSBhbmNlc3Rvci4KCgkqIGRlY2wyLmMgKGRvX25vbm1lbWJlcl91c2luZ19kZWNsKTogQWxsb3cgZm9yIHR5cGUgc2hhZG93aW5nLgoJKiBkZWNsLmMgKHB1c2hkZWNsKTogTW92ZSB0eXBlIHNoYWRvd2luZyBoYW5kbGluZyBmcm9tIGhlcmUuLi4KCShkdXBsaWNhdGVfZGVjbHMpOiAuLi50byBoZXJlLgoJKiBkZWNsLmMgKHNldF9pZGVudGlmaWVyX2xvY2FsX3ZhbHVlX3dpdGhfc2NvcGUpOiBOZXcgZm4uCgkocHVzaGRlY2wpOiBVc2UgaXQuCgkoc2V0X2lkZW50aWZpZXJfbG9jYWxfdmFsdWUsIGxvb2t1cF90eXBlX2N1cnJlbnRfbGV2ZWwpOiBOZXcgZm5zLgoJKiBkZWNsMi5jIChkb19sb2NhbF91c2luZ19kZWNsKTogSGFuZGxlIHR5cGVzIGFuZCBiaW5kaW5nIGxldmVsCglzdHVmZiBwcm9wZXJseS4KCgkqIGluaXQuYyAoYnVpbGRfb2Zmc2V0X3JlZik6IERvbid0IGNhbGwgbWFya191c2VkIG9uIGFuIE9WRVJMT0FELgoJKiBkZWNsLmMgKHNlbGVjdF9kZWNsKTogRXh0cmFjdCBhIGxvbmUgZnVuY3Rpb24gZnJvbSBhbiBPVkVSTE9BRC4KCShsb29rdXBfbmFtZXNwYWNlX25hbWUpOiBMaWtld2lzZS4KCSogdHlwZWNrLmMgKGJ1aWxkX3VuYXJ5X29wKTogTm90IGhlcmUgYW55bW9yZS4KCgkqIGRlY2wyLmMgKGRvX2NsYXNzX3VzaW5nX2RlY2wpOiBNYWtlIHN1cmUgd2UgZ2V0IGFuIGlkZW50aWZpZXIuCgkqIGNsYXNzLmMgKGhhbmRsZV91c2luZ19kZWNsKTogSWdub3JlIFRZUEVfREVDTHMuCgoJKiBkZWNsLmMgKHF1YWxpZnlfbG9va3VwKTogTmV3IGZuLgoJKGxvb2t1cF9uYW1lX3JlYWwpOiBVc2UgaXQuCgoxOTk4LTA3LTE2ICBNYXJ0aW4gdi4gTG9ld2lzICA8bG9ld2lzQGluZm9ybWF0aWsuaHUtYmVybGluLmRlPgoKCSogZGVjbDIuYyAoYWRkX3VzaW5nX25hbWVzcGFjZSk6IFdoZW4gZGlyZWN0bHkgdXNpbmcgYSBuYW1lc3BhY2UKCXRoYXQgd2FzIGluZGlyZWN0IGJlZm9yZSwgcHJvbW90ZSBpdC4KCgkqIGNwLXRyZWUuaCAoTE9PS1VQX1BSRUZFUl9UWVBFUywgTE9PS1VQX1BSRUZFUl9OQU1FU1BBQ0VTLAoJTE9PS1VQX1BSRUZFUl9CT1RILCBMT09LVVBfTkFNRVNQQUNFU19PTkxZLCBMT09LVVBfVFlQRVNfT05MWSwKCUxPT0tVUF9RVUFMSUZJRVJTX09OTFksIExPT0tVUF9URU1QTEFURVNfRVhQRUNURUQpOiBOZXcgbWFjcm9zLgoJKiBkZWNsLmMgKHNlbGVjdF9kZWNsKTogUmVwbGFjZSB0d28gZmxhZyBwYXJhbWV0ZXJzIGJ5IG9uZS4KCSh1bnF1YWxpZmllZF9uYW1lc3BhY2VfbG9va3VwKTogTGlrZXdpc2UsIHBhc3MgZmxhZy4KCShsb29rdXBfZmxhZ3MpOiBOZXcgZnVuY3Rpb24uCgkobG9va3VwX25hbWVfcmVhbCk6IENvbXB1dGUgZmxhZ3MsIHBhc3MgdGhlbS4KCShsb29rdXBfbmFtZXNwYWNlX25hbWUpOiBDYWxsIHdpdGggemVyby1mbGFnLgoJKiBkZWNsMi5jIChhbWJpZ3VvdXNfZGVjbCk6IEFkZCBmbGFnIHBhcmFtZXRlciwgY29tcGxhaW4gb25seQoJYWNjb3JkaW5nIHRvIGZsYWdzLgoJKGxvb2t1cF91c2luZ19uYW1lc3BhY2UsIHF1YWxpZmllZF9sb29rdXBfdXNpbmdfbmFtZXNwYWNlKToKCUFkZCBmbGFnIHBhcmFtZXRlciwgcGFzcyB0aGVtIHRocm91Z2guCgkqIGxleC5jIChkb19zY29wZWRfaWQpOiBDYWxsIHdpdGggemVyby1mbGFnLgoKMTk5OC0wNy0xNiAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogdHlwZWNrLmMgKGNvbnZlcnRfZm9yX2Fzc2lnbm1lbnQpOiBVc2UgY29tcHR5cGVzLgoKMTk5OC0wNy0xNiAgTWFyayBNaXRjaGVsbCAgPG1hcmtAbWFya21pdGNoZWxsLmNvbT4KCgkqIHNlbWFudGljcy5jIChmaW5pc2hfb2JqZWN0X2NhbGxfZXhwcik6IE1vdmUgdGVzdCBmb3IgdGhlCglmdW5jdGlvbiBjYWxsZWQgYmVpbmcgYSBUWVBFX0RFQ0wgdG8gLi4uCgkqIGNhbGwuYyAoYnVpbGRfbmV3X21ldGhvZF9jYWxsKTogSGVyZS4KCjE5OTgtMDctMTUgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIGRlY2wyLmMgKGFyZ19hc3NvY19jbGFzcyk6IEFsc28gbG9vayBhdCB0ZW1wbGF0ZSBhcmd1bWVudHMsIGlmIGFueS4KCShhcmdfYXNzb2MpOiBIYW5kbGUgZXJyb3JfbWFya19ub2RlIGFuZCBtdWx0aXBsZSBsZXZlbHMgb2YgVFJFRV9MSVNULgoKCSogbGV4LmMgKGxvb2tpbmdfZm9yX3R5cGVuYW1lKTogRG9uJ3QgaW5pdGlhbGl6ZS4KCgkqIGRlY2wyLmMgKGFtYmlndW91c19kZWNsKTogQ2xhcmlmeSBlcnJvciBtZXNzYWdlLgoKCSogZGVjbC5jIChwdXNoX3VzaW5nX2RpcmVjdGl2ZSk6IEl0ZXJhdGUgb3ZlciBuYW1lc3BhY2VzIHVzZWQKCWluZGlyZWN0bHkuCgoxOTk4LTA3LTE1ICBNYXJ0aW4gdi4gTPZ3aXMgIDxsb2V3aXNAaW5mb3JtYXRpay5odS1iZXJsaW4uZGU+CgoJKiBkZWNsMi5jIChhZGRfdXNpbmdfbmFtZXNwYWNlKTogSXRlcmF0ZSBvdmVyIG5hbWVzcGFjZXMgdXNlZAoJaW5kaXJlY3RseS4KCgkqIGRlY2wuYyAobG9va3VwX25hbWVfcmVhbCk6IEFjY2VwdCBuYW1lc3BhY2UgYWxpYXNlcyBhcyBsb2NhbHMuCgkoY2F0X25hbWVzcGFjZV9sZXZlbHMpOiBJZ25vcmUgYWxpYXNlcy4KCShkdXBsaWNhdGVfZGVjbHMpOiBJZ25vcmUgZHVwbGljYXRlIGFsaWFzZXMuCgkqIGRlY2wyLmMgKGRvX25hbWVzcGFjZV9hbGlhcyk6IFByb2Nlc3MgYmxvY2sgbGV2ZWwgbmFtZXNwYWNlCglhbGlhc2VzLiAgU3RvcmUgYWxpYXMgd2l0aCBwdXNoZGVjbC4gIFJlbW92ZSBvZHIgZXJyb3JzLgoJKiBwYXJzZS55IChuYW1lc3BhY2VfYWxpYXMpOiBOZXcgbm9uLXRlcm1pbmFsLgoJKGV4dGRlZik6IFVzZSBpdC4KCjE5OTgtMDctMTUgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIGRlY2wyLmMgKGFyZ19hc3NvY190eXBlKTogSGFuZGxlIE1FVEhPRF9UWVBFIGxpa2UgRlVOQ1RJT05fVFlQRS4KCUhhbmRsZSBURU1QTEFURV9UWVBFX1BBUk0uCgkoYXJnX2Fzc29jKTogUmV3cml0ZS4KCgkqIHB0LmMgKGNvbXBsZXRlX3RlbXBsYXRlX2FyZ3MpOiBEb24ndCBsb29rIGF0IHRoZSBjb250ZXh0IHVubGVzcwoJd2UgaGF2ZSB0by4KCgkqIG1ldGhvZC5jIChidWlsZF9kZWNsX292ZXJsb2FkX3JlYWwpOiBGaXggbmFtZXNwYWNlIGhhbmRsaW5nLgoKCSogdHlwZWNrLmMgKGJ1aWxkX3VuYXJ5X29wKTogRXh0cmFjdCBhIGxvbmUgZnVuY3Rpb24gZnJvbSBhbgoJT1ZFUkxPQUQuCgoJKiBjYWxsLmMgKGJ1aWxkX3Njb3BlZF9tZXRob2RfY2FsbCk6IEhhbmRsZSBnZXR0aW5nIGEgbmFtZXNwYWNlCglmb3IgYmFzZXR5cGUgaW4gYSBkZXN0cnVjdG9yIGNhbGwuCgkoY2hlY2tfZHRvcl9uYW1lKTogSGFuZGxlIGVudW1zLgoKCSogcGFyc2UueSAodXNpbmdfZGlyZWN0aXZlKTogTmV3IG5vbnRlcm1pbmFsLgoJKGV4dGRlZiwgc2ltcGxlX3N0bXQpOiBVc2UgaXQuCgoxOTk4LTA3LTE0ICBNYXJ0aW4gdm9uIEz2d2lzICA8bG9ld2lzQGluZm9ybWF0aWsuaHUtYmVybGluLmRlPgoKCSogZGVjbDIuYyAoYWRkX2Z1bmN0aW9uKTogTW92ZSBlcnJvciBtZXNzYWdlIC4uLgoJKGFyZ19hc3NvY19uYW1lc3BhY2UpOiAuLi4gZnJvbSBoZXJlLgoKMTk5OC0wNy0xNCAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogcGFyc2UueSAobmFtZXNwYWNlX3F1YWxpZmllcik6IEZpeCBtdWx0aXBsZSBsZXZlbCBoYW5kbGluZy4KCSogZGVjbDIuYyAobmFtZXNwYWNlX2FuY2VzdG9yKTogVXNlIENQX0RFQ0xfQ09OVEVYVC4KCShhcmdfYXNzb2MpOiBEb24ndCBza2lwIHRoZSBmaXJzdCBhcmd1bWVudCBvZiBhIGZ1bmN0aW9uLgoKVHVlIEp1bCAxNCAyMDowOToyMiAxOTk4ICBKZWZmcmV5IEEgTGF3ICAobGF3QGN5Z251cy5jb20pCgoJKiBzZWFyY2guYyAobXlfdHJlZV9jb25zKTogQ2xlYW4gdXAuCgoxOTk4LTA3LTE0ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBjYWxsLmMgKGpvdXN0KTogRG9uJ3Qgd2FybiBhYm91dCAiY29uZnVzaW5nIiBjb252ZXJzaW9ucyB0byB0aGUKCXNhbWUgdHlwZS4KCjE5OTgtMDctMTQgIE1hcnRpbiB2b24gTPZ3aXMgIDxsb2V3aXNAaW5mb3JtYXRpay5odS1iZXJsaW4uZGU+CgoJKiBjbGFzcy5jIChwdXNoX25lc3RlZF9jbGFzcyk6IENvbXBsYWluIGFib3V0IG5hbWVzcGFjZXMuCgkqIGRlY2wuYyAoc3RhcnRfZGVjbCk6IEVudGVyIHRoZSBvYmplY3QncyBuYW1lc3BhY2UuCgkoY3BfZmluaXNoX2RlY2wpOiBMZWF2ZSBpdC4KCShncm9rZGVjbGFyYXRvcik6IExpa2V3aXNlLgoJKiBkZWNsMi5jIChjaGVja19kZWNsX25hbWVzcGFjZSk6IE5ldyBmdW5jdGlvbi4KCShmaW5pc2hfZmlsZSk6IENhbGwgaXQuCgkqIHBhcnNlLnkgKGNvbXBsZXhfZGlyZWN0X25vdHlwZV9kZWNsYXJhdG9yKTogU2V0IGNvbXBsZXhpdHkKCW9mIG5hbWVzcGFjZS1xdWFsaWZpZWQgaWRzIHRvIC0xLCBlbnRlciB0aGUgbmFtZXNwYWNlLgoKCSogbWV0aG9kLmMgKGJ1aWxkX3RlbXBsYXRlX2RlY2xfb3ZlcmxvYWQpOiBFeHBlY3QgX0RFQ0wgYXMgZmlyc3QKCXBhcmFtZXRlci4gIFB1dCBjb250ZXh0IHRlbXBvcmFyaWx5IGludG8gY3VycmVudF9uYW1lc3BhY2UuCgkqIHB0LmMgKGNoZWNrX2V4cGxpY2l0X3NwZWNpYWxpemF0aW9uKTogQ2hhbmdlIGNhbGxlci4KCSh0c3Vic3QpOiBMaWtld2lzZS4KCgkqIGluaXQuYyAoYnVpbGRfb2Zmc2V0X3JlZik6IENhbGwgbWFya191c2VkIGFuZAoJY29udmVydF9mcm9tX3JlZmVyZW5jZSBmb3IgbmFtZXNwYWNlIG1lbWJlcnMuCgpNb24gSnVsIDEzIDIzOjI1OjI4IDE5OTggIE1hcnRpbiB2b24gTPZ3aXMgIDxsb2V3aXNAaW5mb3JtYXRpay5odS1iZXJsaW4uZGU+CgoJKiBzZWFyY2guYyAobXlfdHJlZV9jb25zKTogVGhlIGJpdGZpZWxkIGlzIGF0IGluZGV4IDIuCgpNb24gSnVsIDEzIDE3OjIxOjAxIDE5OTggIE5pY2sgQ2xpZnRvbiAgPG5pY2tjQGN5Z251cy5jb20+CgoJKiBsYW5nLW9wdGlvbnMuaDogRm9ybWF0IGNoYW5nZWQgdG8gd29yayB3aXRoIG5ldyAtLWhlbHAgc3VwcG9ydAoJaW4gZ2NjL3RvcGxldi5jCgoxOTk4LTA3LTEyICBNYXJ0aW4gdm9uIEz2d2lzICA8bG9ld2lzQGluZm9ybWF0aWsuaHUtYmVybGluLmRlPgoKCSogZGVjbDIuYyAoYnVpbGRfZXhwcl9mcm9tX3RyZWUpOiBDaGFuZ2UgY2FsbHMgb2YgZG9faWRlbnRpZmllci4KCURvIEtvZW5pZyBsb29rdXAgaW4gQ0FMTF9FWFBSLgoJKGFyZ19hc3NvYyk6IEhhbmRsZSBlcnJvcl9tYXJrLgoJKiBsZXguYyAoaXNfZ2xvYmFsKTogTmV3IGZ1bmN0aW9uLgoJKGRvX2lkZW50aWZpZXIpOiBFeHBlY3QgYXJndW1lbnRzIGZvciBLb2VuaWcgbG9va3VwLgoJKiBwYXJzZS55IChwcmltYXJ5KTogQWRkIHJ1bGVzIGZvciBjYWxscyBvZiB1bnF1YWxpZmllZCBmdW5jdGlvbiBjYWxscy4KCShkb19pZCk6IENoYW5nZSBjYWxsIG9mIGRvX2lkZW50aWZpZXIuCgkqIHB0LmMgKGZpbmlzaF9zdG10X2V4cHIpOiBMaWtld2lzZS4KCSogc2VtYW50aWNzLmMgKGZpbmlzaF9pZF9leHByKTogTGlrZXdpc2UuCgkoZmluaXNoX2NhbGxfZXhwcik6IEFkZCBpbnRlZ2VyIHBhcmFtZXRlciB0byBpbmRpY2F0ZQoJYXJndW1lbnQtZGVwZW5kZW50IGxvb2t1cC4KCgkqIGRlY2wuYyAoc3RydWN0IGJpbmRpbmdfbGV2ZWwpOiBOZXcgZmllbGQgdXNpbmdfZGlyZWN0aXZlcy4KCShwdXNoX3VzaW5nX2RlY2wpOiBOb3Qgc29ycnkgYW55bW9yZS4KCShwdXNoX3VzaW5nX2RpcmVjdGl2ZSk6IE5ldyBmdW5jdGlvbi4KCShsb29rdXBfdGFnKTogVXNlIENQX0RFQ0xfQ09OVEVYVCB0byBpdGVyYXRlLgoJKHVucXVhbGlmaWVkX25hbWVzcGFjZV9sb29rdXApOiBOZXcgZnVuY3Rpb24sIGNvZGUgZnJvbSAuLi4KCShsb29rdXBfbmFtZV9yZWFsKTogLi4uIGhlcmUuCgkqIGRlY2wyLmMgKGxvb2t1cF91c2luZ19uYW1lc3BhY2UpOiBQYXNzIHVzaW5nIGxpc3QgaW5zdGVhZCBvZgoJaW5pdGlhbCBzY29wZS4KCSh2YWxpZGF0ZV9ub25tZW1iZXJfdXNpbmdfZGVjbCk6IE5ldyBmdW5jdGlvbi4KCShkb19ub25tZW1iZXJfdXNpbmdfZGVjbCk6IE5ldyBmdW5jdGlvbi4KCShkb190b3BsZXZlbF91c2luZ19kZWNsKTogVXNlIHRoZW0uCgkoZG9fbG9jYWxfdXNpbmdfZGVjbCk6IE5ldyBmdW5jdGlvbi4KCShkb191c2luZ19kaXJlY3RpdmUpOiBTdXBwb3J0IGJsb2NrLWxldmVsIGRpcmVjdGl2ZXMuCgkqIHBhcnNlLnkgKHNpbXBsZV9zdG10KTogU3VwcG9ydCB1c2luZyBkZWNsYXJhdGlvbnMgYW5kCglkaXJlY3RpdmVzLgoJKG5hbWVzcGFjZV9xdWFsaWZpZXIsIG5hbWVzcGFjZV91c2luZ19kZWNsKTogTmV3IG5vbi10ZXJtaW5hbHMuCgoJKiB4cmVmLmMgKGNsYXNzbmFtZSk6IE5ldyBmdW5jdGlvbi4KCShHTlVfeHJlZl9oaWVyKTogQ2hhbmdlIGNsYXNzIGFuZCBiYXNlIHBhcmFtZXRlcnMgdG8gdHJlZS4KCSogZGVjbC5jICh4cmVmX2Jhc2V5cGVzKTogQ2hhbmdlIGNhbGxlci4KCSogZnJpZW5kLmMgKG1ha2VfZnJpZW5kX2NsYXNzKTogTGlrZXdpc2UuCgoxOTk4LTA3LTEyICBLcmlhbmcgTGVyZHN1d2FuYWtpaiAgPGxlcmRzdXdhQHNjZi1mcy51c2MuZWR1PgoKCSogdHlwZWNrLmMgKGNvbXB0eXBlcywgY2FzZSBURU1QTEFURV9URU1QTEFURV9QQVJNKTogQWRkIHBhcmFtZXRlcgoJY29tcGFyaXNvbi4KCgkqIHB0LmMgKGZvcl9lYWNoX3RlbXBsYXRlX3Bhcm0sIGNhc2UgVEVNUExBVEVfREVDTCk6IElmIGl0IGlzIGEKCXRlbXBsYXRlIHRlbXBsYXRlIHBhcmFtZXRlciwgcmVjb3JkIGl0cyB1c2UuCgkoZm9yX2VhY2hfdGVtcGxhdGVfcGFybSwgY2FzZSBURU1QTEFURV9URU1QTEFURV9QQVJNKTogVHJhdmVyc2UKCWl0cyB0ZW1wbGF0ZSBhcmd1bWVudHMgaWYgZXhpc3RzLgoKCSogcHQuYyAoY29lcmNlX3RlbXBsYXRlX3RlbXBsYXRlX3Bhcm1zKTogTmV3IGZ1bmN0aW9uIGVxdWl2YWxlbnQKCXRvIGNvZXJjZV90ZW1wbGF0ZV9wYXJtcyB3aGVuIElTX1RNUExfUEFSTSBpcyB0cnVlLgoJKGNvZXJjZV90ZW1wbGF0ZV9wYXJtcyk6IFVzZSBpdC4gIFJlbW92ZSB0aGUgSVNfVE1QTF9QQVJNIHBhcmFtZXRlciwKCWFsbCBjYWxsZXJzIGNoYW5nZWQuCgoJKGNvZXJjZV90ZW1wbGF0ZV9wYXJtcyk6IEFjY2VzcyBBUkdMSVNUIHByb3Blcmx5IHdoZW4gY3JlYXRpbmcgYQoJbmV3IHZlY3Rvci4gIE9ubHkgYWNjZXB0IGltcGxpY2l0IFRZUEVfREVDTCBhcyB2YWxpZCBhcmd1bWVudCBmb3IKCWEgdGVtcGxhdGUgdGVtcGxhdGUgcGFyYW1ldGVyIHdoZW4gaXQgaXMgYSBiYXNlIGNsYXNzIG9mCgljdXJyZW50X2NsYXNzX3R5cGUuICBEb24ndCBkaXNwbGF5IGVycm9yIG1lc3NhZ2Ugd2hlbiBDT01QTEFJTiBpcwoJZmFsc2UuCgoxOTk4LTA3LTEyICBLbGF1cyBLYWVtcGYgIChra2FlbXBmQHByb2dpcy5kZSkKCgkqIHJlcG8uYyAoZ2V0X2Jhc2VfZmlsZW5hbWUpOiBVc2UgZmlsZV9uYW1lX25vbmRpcmVjdG9yeS4KCShvcGVuX3JlcG9fZmlsZSk6IExpa2V3aXNlLgoJKiBjcC10cmVlLmggKGZpbGVfbmFtZV9ub25kaXJlY3RvcnkpOiBBZGQgcHJvdG90eXBlLgoKMTk5OC0wNy0xMiAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogZnJpZW5kLmMgKGRvX2ZyaWVuZCk6IFB1bGwgdGhlIGlkZW50aWZpZXIgb3V0IG9mIGRlY2xhcmF0b3IuCglVc2UgY3BfZXJyb3IgYW5kIGZyaWVuZHMuCgkqIGRlY2wyLmMgKHF1YWxpZmllZF9sb29rdXBfdXNpbmdfbmFtZXNwYWNlKTogRml4IGNhbGwgdG8KCXB1cnBvc2VfbWVtYmVyLgoJKiBkZWNsLmMgKGxvb2t1cF9uYW1lX3JlYWwpOiBEb24ndCBjYWxsIGNvbXBsZXRlX3R5cGUgb24gYSBuYW1lc3BhY2UuCgkoZ3Jva3ZhcmRlY2wpOiBVc2UgREVDTF9DTEFTU19TQ09QRV9QLgoJKiBjdnQuYyAoY29udmVydF9wb2ludGVyX3RvX3JlYWwpOiBDaGVjayBmb3IgZXJyb3JfbWFya19ub2RlIHNvb25lci4KCSogY2xhc3MuYyAod2Fybl9oaWRkZW4pOiBGaXggZm9yIE9WRVJMT0FELgoJRnJvbSBncmFoYW1zQHJjcC5jby51azoKCSogY3AtdHJlZS5oIChERUZBUkdfTk9ERV9DSEVDSyk6IE5ldyBtYWNyby4KCShERUZBUkdfTEVOR1RILCBERUZBUkdfUE9JTlRFUik6IFVzZSBpdC4KClN1biBKdWwgMTIgMDE6MjA6NTcgMTk5OCAgSmVmZnJleSBBIExhdyAgKGxhd0BjeWdudXMuY29tKQoKCSogZysrLjEgKC10cmFkaXRpb25hbCk6IFJlbW92ZSBkdXBsaWNhdGVkIGRvY3VtZW50YXRpb24uCgoxOTk4LTA3LTExICBNYXJrIE1pdGNoZWxsICA8bWFya0BtYXJrbWl0Y2hlbGwuY29tPgoKCSogbWV0aG9kLmMgKGZsdXNoX3JlcGVhdHMpOiBBZGQgbnJlcGVhdHMgcGFyYW1ldGVyLgoJKGlzc3VlX25yZXBlYXRzKTogTGlrZXdpc2UuCgkoaXNfYmFja19yZWZlcmVuY2VhYmxlX3R5cGUpOiBOZXcgZnVuY3Rpb24uICBEb24ndCBiYWNrLXJlZmVyZW5jZQoJVEVNUExBVEVfVFlQRV9QQVJNcyBhcyB3ZWxsIGFzIHNpbXBsZSB0eXBlcyBsaWtlIGludGVnZXJzLgoJKGJ1aWxkX21hbmdsZWRfbmFtZV9mb3JfdHlwZSk6IExpa2V3aXNlLgoJKGJ1aWxkX21hbmdsZWRfbmFtZV9mb3JfdHlwZV93aXRoX0djb2RlKTogTGlrZXdpc2UuCgkobGFzdHR5cGUpOiBSZW1vdmUuCgkobnJlcGVhdHMpOiBMaWtld2lzZS4KCShOcmVwZWF0cyk6IExpa2V3aXNlLgoJKHN0YXJ0X3NxdWFuZ2xpbmcpOiBEb24ndCBjbGVhciB0aGUgdmFyaWFibGVzIHJlbW92ZWQgYWJvdmUuCgkoZW5kX3NxdWFuZ2xpbmcpOiBMaWtld2lzZS4KCShmbHVzaF9yZXBlYXRzKTogVGlkeS4gIFVzZSBucmVwZWF0cyBwYXJhbWV0ZXIgcmF0aGVyIHRoYW4KCU5yZXBlYXRzIGdsb2JhbC4KCShpc3N1ZV9ucmVwZWF0cyk6IExpa2V3aXNlLCBidXQgd2l0aCBucmVwZWF0cyBnbG9iYWwuICBVc2UKCWlzX2JhY2tyZWZlcmVuY2VhYmxlX3R5cGUuCgkoYnVpbGRfb3ZlcmxvYWRfbmVzdGVkX25hbWUpOiBUaWR5LiAgQWRkIGNvbW1lbnQuICBVc2UKCWJ1aWxkX21hbmdsZWRfbmFtZV9mb3JfdHlwZS4KCShidWlsZF91bmRlcnNjb3JlX2ludCk6IENvbW1lbnQuCgkoYnVpbGRfb3ZlcmxvYWRfc2NvcGVfcmVmKTogVXNlIGJ1aWxkX21hbmdsZWRfbmFtZV9mb3JfdHlwZS4KCShidWlsZF9vdmVybG9hZF9pbnQpOiBMaWtld2lzZS4KCShidWlsZF90ZW1wbGF0ZV90ZW1wbGF0ZV9wYXJtX25hbWVzKTogVGlkeS4KCShidWlsZF90ZW1wbGF0ZV9wYXJtX25hbWVzKTogVXNlIGJ1aWxkX21hbmdsZWRfbmFtZV9mb3JfdHlwZS4KCShidWlsZF9vdmVybG9hZF9pZGVudGlmaWVyKTogQWRkIGNvbW1lbnRzLgoJKGJ1aWxkX21hbmdsZWRfbmFtZV9mb3JfdHlwZV93aXRoX0djb2RlKTogU3BsaXQgb3V0IGZyb20KCWJ1aWxkX21hbmdsZWRfbmFtZS4KCShidWlsZF9tYW5nbGVkX25hbWVfZm9yX3R5cGUpOiBVc2UgaXQuCgkoYnVpbGRfbWFuZ2xlZF9uYW1lKTogUmV3b3JrIHRvIHVzZSBidWlsZF9tYW5nbGVkX25hbWVfZm9yX3R5cGUKCWFuZCB0byBub3QgdXNlIGdsb2JhbCBucmVwZWF0cy9OcmVwZWF0cy4gIFRpZHkuCgkocHJvY2Vzc19tb2RpZmllcnMpOiBUaWR5LgoJKGNoZWNrX2J0eXBlKTogVXNlIGlzX2JhY2tyZWZlcmVuY2VhYmxlX3R5cGUuICBBZGQgY29tbWVudC4KCVJlbmFtZSBgbm9kZScgdG8gYHR5cGUnLgoJKHByb2Nlc3Nfb3ZlcmxvYWRfaXRlbSk6IFNldCBudW1lcmljX291dHB1dF9uZWVkX2JhciBoZXJlLgoJVXNlIGJ1aWxkX21hbmdsZWRfbmFtZV9mb3JfdHlwZS4gIFRpZHkuCgkoYnVpbGRfZGVjbF9vdmVybG9hZF9yZWFsKTogVGlkeS4gIERvbid0IHVzZSBOcmVwZWF0cy4gIFVzZQoJYnVpbGRfbWFuZ2xlZF9uYW1lX2Zvcl90eXBlLgoKCSogcHQuYyAocHVzaF90ZW1wbGF0ZV9kZWNsX3JlYWwpOiBEb24ndCBsb29rIGF0IERFQ0xfVEVNUExBVEVfSU5GTwoJZm9yIFRZUEVfREVDTHMuCgoxOTk4LTA3LTA4ICBWbGFkaW1pciBOLiBNYWthcm92ICA8dm1ha2Fyb3ZAY3lnbnVzLmNvbT4KCgkqIGNwLXRyZWUuaCAod2Fybl9sb25nX2xvbmcpOiBEZWZpbmUuCgkqIGRlY2wuYyAoZ3Jva2RlY2xhcmF0b3IpOiBBZGQgZmxhZyBgd2Fybl9sb25nX2xvbmcnIGFzIGd1YXJkIGZvcgoJd2FybmluZyAiQU5TSSBDKysgZG9lcyBub3Qgc3VwcG9ydCBgbG9uZyBsb25nJyIuCgkqIGRlY2wyLmMgKHdhcm5fbG9uZ19sb25nKTogRGVmaW5lLgoJKGxhbmdfZGVjb2RlX29wdGlvbik6IFBhcnNlIC1XbG9uZy1sb25nLCAtV25vLWxvbmctbG9uZyBvcHRpb25zLgoKMTk5OC0wNy0wNyAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogZGVjbC5jICh4cmVmX3RhZyk6IEhhbmRsZSBhdHRyaWJ1dGVzIGJldHdlZW4gJ2NsYXNzJyBhbmQgbmFtZS4KCSogcGFyc2UueSAoYWdncik6IExpa2V3aXNlLgoJKiBzZW1hbnRpY3MuYyAoZmluaXNoX2NsYXNzX2RlZmluaXRpb24pOiBMaWtld2lzZS4KCSogTWFrZWZpbGUuaW4gKEVYUEVDVEVEKTogQWRqdXN0LgoKCSogY3AtdHJlZS5oOiBEZWNsYXJlIGZsYWdfb3B0aW9uYWxfZGlhZ3MgYW5kIHdhcm5fbXVsdGljaGFyLgoJKiBkZWNsMi5jOiBEZWZpbmUgdGhlbS4KCShsYW5nX2RlY29kZV9vcHRpb24pOiBIYW5kbGUgdGhlbS4KCSogbGFuZy1vcHRpb25zLmg6IEFkZCAtZm9wdGlvbmFsLWRpYWdzLgoJKiBjbGFzcy5jIChmaW5pc2hfc3RydWN0KTogRG9uJ3QgY29tcGxhaW4gYWJvdXQgbXVsdGlwbGUgbWVhbmluZ3Mgb2YKCW5hbWUgaWYgLWZuby1vcHRpb25hbC1kaWFncy4KCSogZGVjbC5jIChwdXNoZGVjbF9jbGFzc19sZXZlbCk6IExpa2V3aXNlLgoJKiBsZXguYyAocmVhbF95eWxleCk6IENoZWNrIHdhcm5fbXVsdGljaGFyLgoKMTk5OC0wNy0wNiAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogZGVjbC5jIChsb29rdXBfdGFnKTogVXNlIENQX0RFQ0xfQ09OVEVYVC4KCgkqIHRyZWUuYyAobWFrZV9iaW5mbyk6IEZpeCBsZW5ndGguCgoxOTk4LTA2LTMwICBCZW5qYW1pbiBLb3NuaWsgIDxia296QGJsaXNzLm5hYmkubmV0PgoKCSogZGVjbDIuYyAobGFuZ19kZWNvZGVfb3B0aW9uKTogUmVtb3ZlIHdhcm5fdGVtcGxhdGVfZGVidWdnaW5nLgoJKiBsYW5nLW9wdGlvbnMuaDogTGlrZXdpc2UuCgpNb24gSnVuIDI5IDIwOjE3OjQwIDE5OTggIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIGV4Y2VwdC5jIChidWlsZF9laF90eXBlX3R5cGVfcmVmKTogUmVtb3ZlIHVudXNlZCB2YXJpYWJsZSBgc3VzcCcuCgkocHJvY2Vzc19zdGFydF9jYXRjaF9ibG9jayk6IExpa2V3aXNlIGZvciB2YXJpYWJsZXMKCWBmYWxzZV9sYWJlbF9ydHgnLCBgY2FsbF9ydHgnIGFuZCBgcmV0dXJuX3ZhbHVlX3J0eCcuCgoxOTk4LTA2LTI5ICBCcmVuZGFuIEtlaG9lICA8YnJlbmRhbkBjeWdudXMuY29tPgoKCSogdHJlZS5jIChidWlsZF9zcmNsb2MpOiBNYWtlIHN1cmUgd2UgYWxsb2NhdGUgdGhpcyBub2RlIG9uIHRoZQoJcGVybWFuZW50IG9ic3RhY2suCgpTYXQgSnVuIDI3IDIzOjM0OjE4IDE5OTggIEZyZWQgRmlzaCAgPGZuZkBuaW5lbW9vbnMuY29tPgoKCSogZysrc3BlYy5jIChORUVEX01BVEhfTElCUkFSWSk6IERlZmluZSB0byAxIGlmIG5vdCBhbHJlYWR5IGRlZmluZWQuCgkobGFuZ19zcGVjaWZpY19kcml2ZXIpOiBJbml0aWFsaXplIG5lZWRfbWF0aCB3aXRoIE5FRURfTUFUSF9MSUJSQVJZLgoJKGxhbmdfc3BlY2lmaWNfZHJpdmVyKTogT25seSBhZGQgLWxtIGF1dG9tYXRpY2FsbHkgaWYgbmVlZF9tYXRoIGlzCglub256ZXJvLgoKU2F0IEp1biAyNyAxMjoyMjo1NiAxOTk4ICBKZWZmcmV5IEEgTGF3ICAobGF3QGN5Z251cy5jb20pCgoJKiBNYWtlLWxhbmcuaW4gKGcrKyk6IERlcGVuZCBvbiBta3N0ZW1wLm8uICBMaW5rIGluIG1rc3RlbXAubwoKU2F0IEp1biAyNyAwNzozNjowOSAxOTk4ICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBNYWtlZmlsZS5pbiAoRVhQUl9IKTogTmV3IGRlcGVuZGVuY3kgdmFyaWFibGUuCgkoZGVjbDIubyk6IERlcGVuZCBvbiAkKEVYUFJfSCkuCgkodHlwZWNrLm8pOiBMaWtld2lzZS4KCShpbml0Lm8pOiBMaWtld2lzZS4KCShleHByLm8pOiBMaWtld2lzZS4KCjE5OTgtMDYtMjUgIEJlbmphbWluIEtvc25payAgPGJrb3pAbGlzYS5jeWdudXMuY29tPgoKCSogZGVjbC5jIChzdGFydF9lbnVtKTogUHV0IGxvY2FsIGVudW1zIG9uIHBlcm1hbmVudF9vYnN0YWNrLgoKMTk5OC0wNi0yNSAgTWFyayBNaXRjaGVsbCAgPG1hcmtAbWFya21pdGNoZWxsLmNvbT4KCgkqIGNwLXRyZWUuaCAoY19nZXRfYWxpYXNfc2V0KTogRGVjbGFyZS4KCSogZGVjbC5jIChpbml0X2RlY2xfcHJvY2Vzc2luZyk6IFNldCBsYW5nX2dldF9hbGlhc19zZXQuCgoxOTk4LTA2LTI1ICBBbmRyZXcgTWFjTGVvZCAgPGFtYWNsZW9kQGN5Z251cy5jb20+CgoJKiBjcC10cmVlLmggKG1hcmtfYWxsX3J1bnRpbWVfbWF0Y2hlcyk6IEFkZCBmdW5jdGlvbiBwcm90b3R5cGUuCgkqIGV4Y2VwdC5jIChtYXJrX2FsbF9ydW50aW1lX21hdGNoZXMpOiBTZXQgVFJFRV9TWU1CT0xfUkVGRVJFTkNFRAoJZmxhZyBmb3IgYWxsIGZ1bmN0aW9uIGRlY2xzIHdoaWNoIGFyZSBpbiB0aGUgZXhjZXB0aW9uIHRhYmxlLgoJKiBleGNlcHRpb24uY2MgKF9fY3BsdXNfdHlwZV9tYXRjaGVyKTogQ2hlY2sgZm9yIENBVENIX0FMTF9UWVBFIG1hdGNoLgoJKiBkZWNsMi5jIChmaW5pc2hfZmlsZSk6IENhbGwgbWFya19hbGxfcnVudGltZV9tYXRjaGVzIHRvIG1ha2Ugc3VyZQoJY29kZSBpcyBlbWl0dGVkIGZvciBhbnkgcmVmZXJlbmNlZCBydHRpIGZ1bmN0aW9uLgoKMTk5OC0wNi0yNSAgRGF2ZSBCcm9sbGV5ICA8YnJvbGxleUBjeWdudXMuY29tPgoKCSogbGFuZy1zcGVjcy5oOiBVc2UgbmV3IHwgc3ludGF4IHRvIGVsaW1pbmF0ZQoJc3RyaW5nIGNvbmNhdGVuYXRpb24uCgoxOTk4LTA2LTI1ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBjcC10cmVlLmggKENQX0RFQ0xfQ09OVEVYVCk6IE5ldyBtYWNyby4KCSogZGVjbDIuYyAoaXNfbmFtZXNwYWNlX2FuY2VzdG9yLCBsb29rdXBfdXNpbmdfbmFtZXNwYWNlKTogVXNlIGl0LgoJKiBtZXRob2QuYyAoYnVpbGRfb3ZlcmxvYWRfbmVzdGVkX25hbWUpOiBMaWtld2lzZS4KCSogc2lnLmMgKGJ1aWxkX3NpZ25hdHVyZV9wb2ludGVyX29yX3JlZmVyZW5jZV90eXBlKTogRG9uJ3Qgc2V0CglERUNMX0NPTlRFWFQuCgoxOTk4LTA2LTI0ICBNYXJ0aW4gdi4gTPZ3aXMgIDxsb2V3aXNAaW5mb3JtYXRpay5odS1iZXJsaW4uZGU+CgoJU2V0IERFQ0xfQ09OVEVYVCBmb3IgZ2xvYmFscyB0byBOVUxMX1RSRUUgaW5zdGVhZCBvZiBnbG9iYWxfbmFtZXNwYWNlLgoJKiBjcC10cmVlLmggKEZST0JfQ09OVEVYVCk6IE5ldyBtYWNyby4KCShERUNMX01BSU5fUCk6IDo6bWFpbiBzaG91bGQgaGF2ZSBhIERFQ0xfQ09OVEVYVCBvZiBOVUxMX1RSRUUuCgkqIGRlY2wuYyAobmFtZXNwYWNlX2JpbmRpbmcpOiBSZXBsYWNlIE5VTExfVFJFRSB3aXRoCglnbG9iYWxfbmFtZXNwYWNlLgoJKHNldF9uYW1lc3BhY2VfYmluZGluZywgcG9wX25hbWVzcGFjZSwgbG9va3VwX25hbWVfcmVhbCk6IExpa2V3aXNlLgoJKiBkZWNsMi5jIChpc19uYW1lc3BhY2VfYW5jZXN0b3IsIGxvb2t1cF91c2luZ19uYW1lc3BhY2UpOgoJTGlrZXdpc2UuCgkqIGRlY2wuYyAocHVzaHRhZyk6IFVzZSBGUk9CX0NPTlRFWFQuCgkocHVzaGRlY2wsIG1ha2VfdHlwZW5hbWVfdHlwZSwgZGVmaW5lX2Z1bmN0aW9uLCBncm9rZGVjbGFyYXRvcik6CglMaWtld2lzZS4KCSogZGVjbDIuYyAoc2V0X2RlY2xfbmFtZXNwYWNlLCBkb19uYW1lc3BhY2VfYWxpYXMpOiBMaWtld2lzZS4KCSogcHQuYyAocHVzaF90ZW1wbGF0ZV9kZWNsX3JlYWwsIGxvb2t1cF90ZW1wbGF0ZV9jbGFzcywgdHN1YnN0KToKCUxpa2V3aXNlLgoJKiBkZWNsMi5jIChkZWNsX25hbWVzcGFjZSk6IFJldHVybiBnbG9iYWxfbmFtZXNwYWNlIGlmIG5vIGNvbnRleHQuCgkqIG1ldGhvZC5jIChidWlsZF9vdmVybG9hZF9uZXN0ZWRfbmFtZSk6IEV4cGVjdCBudWxsIGFzIGNvbnRleHQuCgkqIHB0LmMgKG1hbmdsZV9jbGFzc19uYW1lX2Zvcl90ZW1wbGF0ZSk6IERvIG5vdGhpbmcgZm9yIG51bGwKCWNvbnRleHRzLgoJKGxvb2t1cF90ZW1wbGF0ZV9jbGFzcyk6IEFsbG93IGZvciBudWxsIGlkX2NvbnRleHQuCgoxOTk4LTA2LTI1ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEBjeWdudXMuY29tPgoKCSogbWV0aG9kLmMgKGVtaXRfdGh1bmspOiBTZXQgY3VycmVudF9mdW5jdGlvbl9pc190aHVuayBmb3IgdGhlCglBU01fT1VUUFVUX01JX1RIVU5LIGNhc2UgYXMgd2VsbC4KCjE5OTgtMDYtMjMgIEFuZHJldyBNYWNMZW9kICA8YW1hY2xlb2RAY3lnbnVzLmNvbT4KCgkqIGV4Y2VwdGlvbi5jYyAoX19jcGx1c190eXBlX21hdGNoZXIpOiBHZXQgYSBtYXRjaF9pbmZvIHBvaW50ZXIKCWluc3RlYWQgb2YgYW4gZXhjZXB0aW9uIHRhYmxlIGVudHJ5IGFzIGEgcGFyYW1ldGVyLgoKMTk5OC0wNi0yMyAgQW5kcmV3IE1hY0xlb2QgIDxhbWFjbGVvZEBjeWdudXMuY29tPgoKCSogcGFyc2UueSAoZnVuY3Rpb25fdHJ5X2Jsb2NrKTogRG9uJ3QgY2FsbCBzdGFydF9jYXRjaF9oYW5kbGVyLgoJKiBleGNlcHQuYyAoY2FsbF9laF9pbmZvKTogUmVtb3ZlIGNvZXJjZWQgZmllbGQgZnJvbSBkZWNsYXJhdGlvbi4KCShidWlsZF9laF90eXBlX3R5cGVfcmVmKTogTmV3IGZ1bmN0aW9uIHRvIGNyZWF0ZSBhbiBhZGRyZXNzIG9mIGEKCXJ0dGkgZnVuY3Rpb24gZm9yIHRoZSBuZXcgc3R5bGUgZXhjZXB0aW9uIHRhYmxlcy4KCShleHBhbmRfc3RhcnRfY2F0Y2hfYmxvY2spOiBTcGxpdCBmdW5jdGlvbiwgdGhpcyBjb250YWlucyB0aGUKCWNvbW1vbiBwYXJ0LgoJKHByb2Nlc3Nfc3RhcnRfY2F0Y2hfYmxvY2tfb2xkKTogTmV3IGZ1bmN0aW9uIHRvIHBlcmZvcm0gdGhlIHJlc3QKCW9mIGV4cGFuZF9zdGFydF9jYXRjaF9ibG9jayB1bmRlciBvbGQgc3R5bGUgZXhjZXB0aW9ucy4KCShwcm9jZXNzX3N0YXJ0X2NhdGNoX2Jsb2NrX29sZCk6IE5ldyBmdW5jdGlvbiB0byBwZXJmb3JtIHRoZSByZXN0CglvZiBleHBhbmRfc3RhcnRfY2F0Y2hfYmxvY2sgdW5kZXIgbmV3IHN0eWxlIGV4Y2VwdGlvbnMuCgkoZXhwYW5kX2VuZF9jYXRjaF9ibG9jayk6IE9ubHkgcG9wIHRoZSBmYWxzZSBsYWJlbCBvZmYgdGhlIHN0YWNrIHVuZGVyCgl0aGUgb2xkIHN0eWxlIG9mIGV4Y2VwdGlvbnMuCgkqIHNlbWFudGljcy5jIChmaW5pc2hfdHJ5X2Jsb2NrKTogRG9uJ3QgY2FsbCBzdGFydF9jYXRjaF9oYW5kbGVyLgoJKiBleGNlcHRpb24uY2MgKHN0cnVjdCBjcF9laF9pbmZvKTogQWRkIG9yaWdpbmFsX3ZhbHVlIGZpZWxkLgoJKF9fY3BsdXNfdHlwZV9tYXRjaGVyKTogUGVyZm9ybSB0eXBlIG1hdGNoaW5nIG9uIHRoZSBvcmlnaW5hbCBleGNlcHRpb24KCXZhbHVlLCBhbmQgaWYgd2UgaGF2ZSBhIG1hdGNoLCBzZXQgdGhlIGN1cnJlbnQgdmFsdWUuCgkoX19jcF9wdXNoX2V4Y2VwdGlvbik6IFNldCB0aGUgb3JpZ2luYWwgZXhjZXB0aW9uIHZhbHVlLgoKMTk5OC0wNi0yMyAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogY2FsbC5jIChqb3VzdCk6IEZpeCBjb25mdXNpbmcgY29udmVyc2lvbiB3YXJuaW5nLgoKCSogY2FsbC5jIChidWlsZF9vcF9kZWxldGVfY2FsbCk6IEFkZCBwbGFjZW1lbnQgcGFybS4gIENoZWNrCglMT09LVVBfU1BFQ1VMQVRJVkVMWS4KCSogY3AtdHJlZS5oLCBkZWNsMi5jLCBpbml0LmM6IEFkanVzdC4KCSogZGVjbC5jIChmaW5pc2hfZnVuY3Rpb24pOiBVc2UgaXQuCgoJKiBwdC5jICh0c3Vic3QpOiBEaWFnbm9zZSBjcmVhdGluZyB2b2lkIGZpZWxkcyBvciB2YXJpYWJsZXMuCgpNb24gSnVuIDIyIDA4OjUwOjI2IDE5OTggIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIGNhbGwuYyAoYnVpbGRfc2NvcGVkX21ldGhvZF9jYWxsKTogUmVtb3ZlIHVudXNlZCB2YXJpYWJsZSBgdG1wJy4KCgkqIGNwLXRyZWUuaCAoY2hlY2tfZHRvcl9uYW1lKTogQWRkIHByb3RvdHlwZS4KCgkqIGluaXQuYyAoZXhwYW5kX21lbWJlcl9pbml0KTogUmVtb3ZlIHVudXNlZCB2YXJpYWJsZXMKCWBwdHJfdHlwZV9ub2RlJywgYHBhcm0nIGFuZCBgcnZhbCcuCgoJKiBwdHJlZS5jIChwcmludF9sYW5nX3R5cGUpOiBVc2UgSE9TVF9XSURFX0lOVF9QUklOVF9ERUMgc3BlY2lmaWVyCglpbiBjYWxsIHRvIGZwcmludGYuCgkobGFuZ19wcmludF94bm9kZSk6IExpa2V3aXNlLgoKCSogdHlwZWNrMi5jIChlbnVtX25hbWVfc3RyaW5nKTogQ2FzdCBhcmd1bWVudCB0byBzcHJpbnRmIHRvIGxvbmcKCWFuZCB1c2UgJWxkIHNwZWNpZmllci4KCgkqIHhyZWYuYyAoR05VX3hyZWZfZW5kX3Njb3BlKTogVXNlIEhPU1RfV0lERV9JTlRfUFJJTlRfREVDCglzcGVjaWZpZXIgaW4gY2FsbCB0byBmcHJpbnRmLgoJKEdOVV94cmVmX21lbWJlcik6IENhc3QgYXJndW1lbnQgdG8gc3ByaW50ZiB0byBpbnQuCgpGcmkgSnVuIDE5IDIzOjIyOjQyIDE5OTggIEJydW5vIEhhaWJsZSAgPGJydW5vQGxpbnVpeC5tYXRoZW1hdGlrLnVuaS1rYXJsc3J1aGUuZGU+CgoJKiB0eXBlY2syLmMgKHBvcF9pbml0X2xldmVsKTogV2FybiBhYm91dCBpbXBsaWNpdCB6ZXJvIGluaXRpYWxpemF0aW9uCglvZiBzdHJ1Y3QgbWVtYmVycy4KClRodSBKdW4gMTggMDk6MzI6MzIgMTk5OCAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogY3AtdHJlZS5oOiBQcm90b3R5cGUgZnVuY3Rpb24gYGNoZWNrX2phdmFfbWV0aG9kJy4KCjE5OTgtMDYtMTcgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIGNsYXNzLmMgKGZpbmlzaF9zdHJ1Y3QpOiBNYWtlIGNvbmZsaWN0aW5nIHVzZSBvZiBpZCBhIHBlZHdhcm4uCgkqIGRlY2wuYyAocHVzaGRlY2xfY2xhc3NfbGV2ZWwpOiBMaWtld2lzZS4KCjE5OTgtMDYtMTcgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQG1hcmttaXRjaGVsbC5jb20+CgoJKiBwdC5jIChjb252ZXJ0X25vbnR5cGVfYXJndW1lbnQpOiBJc3N1ZSBhbiBlcnJvciB3aGVuIHByZXNlbnRlZAoJd2l0aCBhbiBpbnRlZ2VyIChyZWFsKSBjb25zdGFudCB0aGF0IGNhbm5vdCBiZSBzaW1wbGlmaWVkIHRvIGFuCglJTlRfQ1NUIChSRUFMX0NTVCkuCgoJKiBjcC10cmVlLmggKGNfZ2V0X2FsaWFzX3NldCk6IFJlbW92ZSBkZWNsYXJhdGlvbiBhZGRlZCBpbgoJMTk5OC0wNi0xMyBjaGFuZ2UgdGhhdCBzaG91bGQgbmV2ZXIgaGF2ZSBiZWVuIGNoZWNrZWQgaW4uCgoxOTk4LTA2LTE3ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiB0eXBlY2suYyAoYnVpbGRfYmluYXJ5X29wX25vZGVmYXVsdCk6IENoYW5nZSAlIGluIGZvcm1hdCBzdHJpbmdzCgl0byAlJS4KCgkqIGRlY2wuYyAoZ3Jva3ZhcmRlY2wpOiBEb24ndCBidWlsZF9zdGF0aWNfbmFtZSBmb3IgZGVjbHMgdGhhdAoJYXJlbid0IGF0IG5hbWVzcGFjZSBzY29wZS4KCgkqIGluaXQuYyAocGVyZm9ybV9tZW1iZXJfaW5pdCk6IENhdGNoIGRlZmF1bHQtaW5pdGlhbGl6YXRpb24gb2YKCXJlZmVyZW5jZXMuCgoxOTk4LTA2LTE3ICBNYXJrIE1pdGNoZWxsICA8bWFya0BtYXJrbWl0Y2hlbGwuY29tPgoKCSogZXJyZm4uYyAoY3BfdGhpbmcpOiBIYW5kbGUgdGhlIGAlJScgZm9ybWF0dGluZyBzZXF1ZW5jZS4KCjE5OTgtMDYtMTcgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIG1ldGhvZC5jIChoYWNrX2lkZW50aWZpZXIpOiBDb21wbGFpbiBhYm91dCBnZXR0aW5nIGEgbmFtZXNwYWNlCglvciBjbGFzcyB0ZW1wbGF0ZS4KCSogdHlwZWNrLmMgKGRlY2F5X2NvbnZlcnNpb24pOiBSZW1vdmUgY2hlY2sgZm9yIG5hbWVzcGFjZXMuCgkqIHR5cGVjazIuYyAoaW5jb21wbGV0ZV90eXBlX2Vycm9yKTogTGlrZXdpc2UuCgkqIHBhcnNlLnkgKHRlbXBsYXRlX2FyZyk6IEFkZCBQVFlQRU5BTUUgZXhwYW5zaW9uLgoKMTk5OC0wNi0xNiAgQW5kcmV3IE1hY0xlb2QgIDxhbWFjbGVvZEBjeWdudXMuY29tPgoKCSogZGVjbC5jIChncm9rdmFyZGVjbCk6IERvbid0IGJ1aWxkIGV4dGVybmFsIGFzc2VtYmxlciBuYW1lcyBmb3IKCVRZUEVOQU1FcyBpbiBvdGhlciBuYW1lc3BhY2VzIGFzIHRoZXJlIGlzIG5vIGRlY2xhcmF0b3IuCgkqIGVycm9yLmMgKGNwX2ZpbGVfb2YsIGNwX2xpbmVfb2YpOiBEb24ndCBleHRyYWN0IGZpbGUgb3IgbGluZSBudW1iZXIKCWluZm8gZnJvbSBERUNMX0NPTlRFWFQgaWYgaXQgaXMgTlVMTC4KCjE5OTgtMDYtMTYgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIGNhbGwuYyAoY2hlY2tfZHRvcl9uYW1lKTogU3BsaXQgb3V0LgoJKGJ1aWxkX3Njb3BlZF9tZXRob2RfY2FsbCk6IFVzZSBpdC4KCShidWlsZF9tZXRob2RfY2FsbCk6IFVzZSBpdC4KCSogaW5pdC5jIChidWlsZF9vZmZzZXRfcmVmKTogVXNlIGl0LgoKCSogdHlwZWNrLmMgKGJ1aWxkX3N0YXRpY19jYXN0KTogRml4IGhhbmRsaW5nIG9mIHBvaW50ZXJzIHRvIG1lbWJlcnMuCgoJKiBkZWNsLmMgKGZpbmlzaF9mdW5jdGlvbik6IEp1c3QgcmV0dXJuIG5vdGhpbmcgZnJvbSBhIGNvbnN0cnVjdG9yLgoJKiB0eXBlY2suYyAoY19leHBhbmRfcmV0dXJuKTogQ29tcGxhaW4gYWJvdXQgcmV0dXJuaW5nIGEgdm9pZAoJZXhwcmVzc2lvbiBmcm9tIGEgZGVzdHJ1Y3Rvci4KCjE5OTgtMDYtMTMgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQG1hcmttaXRjaGVsbC5jb20+CgoJKiBjbGFzcy5jIChhbHRlcl9hY2Nlc3MpOiBBY2NlcHQgYSBCSU5GTyBleHBsYWluaW5nIGhvdyB0byBnZXQKCWZyb20gdGhlIGVudGl0eSB3aG9zZSBhY2Nlc3NlZCBpcyBiZWluZyBhbHRlcmVkIHRvIHRoZSB0eXBlIGRvaW5nCgl0aGUgYWx0ZXJpbmcuCgkoaGFuZGxlX3VzaW5nX2RlY2wpOiBOZXcgZnVuY3Rpb24gY29udGFpbmluZyBjb2RlIHNwbGl0IG91dCBmcm9tIC4uLgoJKGZpbmlzaF9zdHJ1Y3RfMSk6IEhlcmUuCgoJKiBjcC10cmVlLmggKGNvbXBsZXRlX3R5cGVfb3JfZWxzZSk6IERlY2xhcmUuCgkqIGluaXQuYyAoYnVpbGRfbmV3XzEsIGJ1aWxkX2RlbGV0ZSk6IFVzZSBpdC4KCSogdHlwZWNrLmMgKHJlcXVpcmVfY29tcGxldGVfdHlwZSk6IFVzZSBjb21wbGV0ZV90eXBlLCByYXRoZXIgdGhhbgoJZXhwYW5kaW5nIGl0IGlubGluZS4KCShjb21wbGV0ZV90eXBlX29yX2Vsc2UpOiBOZXcgZnVuY3Rpb24uCgkoYnVpbGRfY29tcG9uZW50X3JlZik6IFVzZSBpdC4KCShwb2ludGVyX2ludF9zdW0pOiBNYWtlIHN1cmUgdGhlIHR5cGUgcG9pbnRlZCB0byBpcyBjb21wbGV0ZS4KCShwb2ludGVyX2RpZmYpOiBMaWtld2lzZS4KCgkqIHB0LmMgKGZvcl9lYWNoX3RlbXBsYXRlX3Bhcm0pOiBUcmF2ZXJzZSB0aGUgVFlQRV9DT05URVhUIGZvcgoJdHlwZXMuCgoJKiBzZWFyY2guYyAoZ2V0X21hdGNoaW5nX3ZpcnR1YWwpOiBOb3RlIHRoYXQgbWVtYmVyIHRlbXBsYXRlcwoJY2Fubm90IG92ZXJyaWRlIHZpcnR1YWwgZnVuY3Rpb25zLgoKMTk5OC0wNi0xMiAgQnJlbmRhbiBLZWhvZSAgPGJyZW5kYW5AY3lnbnVzLmNvbT4KCgkqIHB0LmMgKGNoZWNrX2V4cGxpY2l0X3NwZWNpYWxpemF0aW9uKTogSWYgREVDTEFSQVRPUiB0dXJuZWQgaW50bwoJYW4gZXJyb3JfbWFya19ub2RlIGZyb20gbG9va3VwX3RlbXBsYXRlX2Z1bmN0aW9uLCByZXR1cm4gdGhlIHNhbWUuCgkoZGV0ZXJtaW5lX3NwZWNpYWxpemF0aW9uKTogQWxzbyBtYWtlIHN1cmUgVEVNUExBVEVfSUQgaXNuJ3QgYW4KCWVycm9yX21hcmtfbm9kZSwgYmVmb3JlIHdlIHRyeSB0byByZWFkIGl0cyBvcGVyYW5kcy4KCSogZGVjbC5jIChncm9rZGVjbGFyYXRvcik6IElmIHdlIGdvdCBhbiBlcnJvcl9tYXJrX25vZGUgZnJvbQoJY2hlY2tfZXhwbGljaXRfc3BlY2lhbGl6YXRpb24sIGp1c3QgcmV0dXJuIGl0IHJpZ2h0IGJhY2suCgoxOTk4LTA2LTEyICBNYXJrIE1pdGNoZWxsICA8bWFya0BtYXJrbWl0Y2hlbGwuY29tPgoKCSogY2xhc3MuYyAoaW5zdGFudGlhdGVfdHlwZSk6IERvbid0IHRyZWF0IHRlbXBsYXRlLWlkcyB0aGF0IGRvbid0CglzcGVjaWZ5IGFueSB0ZW1wbGF0ZSBhcmd1bWVudHMgYXMgZXF1aXZhbGVudCB0byBvcmRpbmFyeQoJaWRlbnRpZmllcnMuICBVc2UgT0ZGU0VUX1JFRiBpbnN0ZWFkIG9mIFNDT1BFX1JFRiB0byByZWZlciB0bwoJcG9pbnRlci10by1tZW1iZXJzIGZvciBtZW1iZXIgdGVtcGxhdGVzLiAgVGlkeSBzbGlnaHRseS4KCSogY3AtdHJlZS5kZWYgKFRFTVBMQVRFX0lEX0VYUFIpOiBSZXZpc2UgZG9jdW1lbnRhdGlvbi4KCSogaW5pdC5jIChidWlsZF9vZmZzZXRfcmVmKTogSGFuZGxlIHRlbXBsYXRlLWlkcyBsaWtlIG9yZGluYXJ5CglpZGVudGlmaWVycywgZm9yIHRoZSBtb3N0IHBhcnQsIGJ1dCBzdG9yZSBhIFRFTVBMQVRFX0lEX0VYUFIgaW4gdGhlCglvZmZzZXQgcGFydCBvZiB0aGUgT0ZGU0VUX1JFRi4KCSogdHlwZWNrLmMgKGJ1aWxkX3VuYXJ5X29wKTogQ2hhbmdlIGNoZWNrIGZvciB1bmtub3duIHR5cGVzIHRvCglsb29rIGZvciBPRkZTRVRfUkVGcywgbm90IFNDT1BFX1JFRnMuCgoxOTk4LTA2LTExICBNYXJrIE1pdGNoZWxsICA8bWFya0BtYXJrbWl0Y2hlbGwuY29tPgoKCSogcHQuYyAoaXNfbWVtYmVyX3RlbXBsYXRlX2NsYXNzKTogTmV3IGZ1bmN0aW9uLgoJKHB1c2hfdGVtcGxhdGVfZGVjbF9yZWFsKTogVXNlIGl0LgoKMTk5OC0wNi0xMSAgQmVuamFtaW4gS29zbmlrICA8YmtvekBlbG1vLmN5Z251cy5jb20+CgoJKiBmcmllbmQuYyAoZG9fZnJpZW5kKTogQWRkIHN1cHBvcnQgZm9yIG5lc3RlZCBjbGFzc2VzIHVzaW5nCgltZW1iZXIgZnVuY3Rpb25zIG9mIHRoZSBlbmNsb3NpbmcgY2xhc3MgYXMgZnJpZW5kcy4KCjE5OTgtMDYtMTAgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQG1hcmttaXRjaGVsbC5jb20+CgoJKiBjYWxsLmMgKGNvbnZlcnRfZGVmYXVsdF9hcmcpOiBNYWtlIGdsb2JhbCwgbm90IHN0YXRpYy4KCShjb252ZXJ0X2FyZ19mb3JfZWxsaXBzaXMpOiBTcGxpdCBvdXQgZnJvbSAuLi4KCShidWlsZF9vdmVyX2NhbGwpOiBIZXJlLgoJKiBjcC10cmVlLmggKGNvbnZlcnRfZGVmYXVsdF9hcmcpOyBEZWNsYXJlLgoJKGNvbnZlcnRfYXJnX3RvX2VsbGlwc2lzKTogTGlrZXdpc2UuCgkoZG9fbWVtYmVyX2luaXQpOiBSZW1vdmUuCgkqIGluaXQuYyAoZG9fbWVtYmVyX2luaXQpOiBSZW1vdmU7IHRoaXMgY29kZSBpcyBkZWFkLgoJKGV4cGFuZF9tZW1iZXJfaW5pdCk6IFJlbW92ZSBtdWNoIG9mIHRoaXMgY29kZTsgaXQgaXMgZGVhZC4KCSogdHlwZWNrLmMgKGNvbnZlcnRfYXJndW1lbnRzKTogVXNlIGNvbnZlcnRfZGVmYXVsdF9hcmcgYW5kCgljb252ZXJ0X2FyZ19mb3JfZWxsaXBzaXMsIHJhdGhlciB0aGFuIGR1cGxpY2F0aW5nIGhlcmUuCgoJKiBjYWxsLmMgKGNvbnZlcnRfbGlrZSk6IERvbid0IGZhaWwgc2lsZW50bHkgaWYKCWJ1aWxkX3VzZXJfdHlwZV9jb252ZXJzaW9uIGZhaWxzLiAgQWx3YXlzIHJldHVybiBlcnJvcl9tYXJrX25vZGUKCWZvciBmYWlsdXJlLgoKMTk5OC0wNi0xMCAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogc2VhcmNoLmMgKGNvdmFyaWFudF9yZXR1cm5fcCk6IENvbXBsYWluIGFib3V0IGFtYmlndW91cyBiYXNlLgoKCSogdHlwZWNrLmMgKGJ1aWxkX2NvbXBvbmVudF9yZWYpOiBEaWFnbm9zZSByZWYgdG8gbmVzdGVkIHR5cGUuCgoxOTk4LTA2LTEwICBCcmVuZGFuIEtlaG9lICA8YnJlbmRhbkBjeWdudXMuY29tPgoKCSogZGVjbC5jIChncm9rcGFybXMpOiBDaGVjayB0aGF0IElOSVQgaXNuJ3QgYW4gZXJyb3JfbWFya19ub2RlCgliZWZvcmUgZ2l2aW5nIGVycm9yIGFib3V0IGludmFsaWQgdHlwZSBmb3IgZGVmYXVsdCBhcmcuCgoxOTk4LTA2LTEwICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBjYWxsLmMgKGJ1aWxkX21ldGhvZF9jYWxsKTogRml4IHRoaW5rby4KCjE5OTgtMDYtMTAgIERhdmUgQnJvbGxleSAgPGJyb2xsZXlAY3lnbnVzLmNvbT4KCgkqIGRlY2wyLmMgKGxhbmdfZGVjb2RlX29wdGlvbik6IE5ldyBhcmdjL2FyZ3YgaW50ZXJmYWNlLgoJKiBjcC10cmVlLmggKGxhbmdfZGVjb2RlX29wdGlvbik6IE5ldyBhcmdjL2FyZ3YgaW50ZXJmYWNlLgoJKiBsYW5nLXNwZWNzLmggKGRlZmF1bHRfY29tcGlsZXJzKTogT25seSBjYWxsIGNwcCBpZiAtRSwgLU0gb3IgLU1NIGlzCglzcGVjaWZpZWQgZm9yIGNwcGxpYi1lbmFibGVkIGNvbXBpbGVycy4KCSogbGV4LmMgKGxhbmdfaW5pdCk6IERvbid0IGNoZWNrX25ld2xpbmUgZm9yIGNwcGxpYi4KCShpbml0X3BhcnNlKTogRG9uJ3QgaW5pdGlhbGl6ZSBjcHBsaWIgaGVyZS4KCjE5OTgtMDYtMTAgIEJyZW5kYW4gS2Vob2UgIDxicmVuZGFuQGN5Z251cy5jb20+CgoJKiB0eXBlY2suYyAoYnVpbGRfY29tcG9uZW50X3JlZik6IE1ha2Ugc3VyZSBGSUVMRCBoYXMgYSBsYW5nX3NwZWNpZmljCglwaWVjZSBiZWZvcmUgY2hlY2tpbmcgREVDTF9NVVRBQkxFX1AuCgoxOTk4LTA2LTEwICBKb2huIENhcnIgIDxqZmNAbWl0LmVkdT4KCgkqIHRyZWUuYyAoZGVidWdfYmluZm8pOiBNYWtlIHByaW50ZiBmb3JtYXQgbWF0Y2ggYXJndW1lbnRzLgoKCSogZXJyb3IuYyAoT0JfUFVUSSk6IE1ha2UgcHJpbnRmIGZvcm1hdCBtYXRjaCBhcmd1bWVudHMuCgoxOTk4LTA2LTEwICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBpbml0LmMgKHBlcmZvcm1fbWVtYmVyX2luaXQpOiBIYW5kbGUgZGVmYXVsdC1pbml0aWFsaXphdGlvbi4KCgkqIGV4Y2VwdC5jIChidWlsZF90aHJvdyk6IEhhbmRsZSB0aHJvd2luZyBOVUxMLgoKCSogdHlwZWNrLmMgKGJ1aWxkX3hfZnVuY3Rpb25fY2FsbCk6IFVzZSByZXNvbHZlX29mZnNldF9yZWYuCgoJKiBzZWFyY2guYyAoY29tcHV0ZV9hY2Nlc3MpOiBPbmx5IHN0cmlwIGFuIGFub255bW91cyB1bmlvbgoJZm9yIGEgRklFTERfREVDTC4KCgkqIGNhbGwuYyAoYWRkX2J1aWx0aW5fY2FuZGlkYXRlcyk6IFR3ZWFrLgoKCSogY3Z0LmMgKGJ1aWxkX2V4cHJfdHlwZV9jb252ZXJzaW9uKTogUmVzdG9yZSBjb2RlIGZvciBjb252ZXJzaW9uCglmcm9tIGNsYXNzIHR5cGVzLgoJKiBkZWNsMi5jIChkZWxldGVfc2FuaXR5KTogVXNlIGl0LiAgQ2xlYW4gdXAuCgoJKiB0eXBlY2suYyAoY29tcF9wdHJfdHR5cGVzX3JlYWwpOiBGaXggY3YtcXVhbCBjb21wYXJpc29ucy4KCjE5OTgtMDYtMTAgIEJyYW5rbyBDaWJlaiAgPGJyYW5rby5jaWJlakBoZXJtZXMuc2k+CgoJKiB0eXBlY2suYyAoY19leHBhbmRfcmV0dXJuKTogRG9uJ3Qgd2FybiBhYm91dCB2b2lkIGV4cHJlc3Npb25zIG9uCglyZXR1cm4gc3RhdGVtZW50cyBpbiBmdW5jdGlvbnMgcmV0dXJuaW5nIHZvaWQuCgoxOTk4LTA2LTA5ICBNYXJrIE1pdGNoZWxsICA8bWFya0BtYXJrbWl0Y2hlbGwuY29tPgoKCSogcHQuYyAoZm5fdHlwZV91bmlmaWNhdGlvbik6IFJldmlzZSBkb2N1bWVudGF0aW9uLiAgVGlkeS4KCSh0eXBlX3VuaWZpY2F0aW9uKTogTGlrZXdpc2UuCgoxOTk4LTA2LTA5ICBBbmRyZXcgTWFjTGVvZCAgPGFtYWNsZW9kQGN5Z251cy5jb20+CgoJKiBzZW1hbnRpY3MuYyAoZmluaXNoX3RyeV9ibG9jayk6IFJlbmFtZSBleHBhbmRfc3RhcnRfY2F0Y2gsIGFuZCBkZWxldGUKCWV4cGFuZF9lbmRfY2F0Y2guCgkqIHBhcnNlLnkgKGZ1bmN0aW9uX3RyeV9ibG9jayk6IFJlbmFtZSBleHBhbmRfc3RhcnRfY2F0Y2gsIGFuZCBkZWxldGUKCWV4cGFuZF9lbmRfY2F0Y2guCgkqIGV4Y2VwdC5jIChleHBhbmRfZW5kX2VoX3NwZWMpOiBSZW5hbWUgZXhwYW5kX3N0YXJ0X2NhdGNoLCBhbmQgZGVsZXRlCglleHBhbmRfZW5kX2NhdGNoLgoKMTk5OC0wNi0wOSAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogc2VhcmNoLmMgKGxvb2t1cF9tZW1iZXIpOiBOZXcgZm4uCgkqIGNsYXNzLmMgKGZpbmlzaF9zdHJ1Y3RfMSk6IFVzZSBpdC4KCSogZGVjbC5jIChsb29rdXBfbmFtZV9yZWFsKTogVXNlIGl0LgoKTW9uIEp1biAgOCAyMDo0NTo1MiAxOTk4ICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBNYWtlZmlsZS5pbiAoZGVjbDIubyk6IERlcGVuZCBvbiBkd2FyZjJvdXQuaCBhbmQgZHdhcmZvdXQuaC4KCgkqIGNwLXRyZWUuaDogQWRkIHByb3RvdHlwZSBmb3IgYG1heWJlX3ByaW50X3RlbXBsYXRlX2NvbnRleHQnIGFuZAoJYG1heWJlX21ha2Vfb25lX29ubHknLgoKCSogZGVjbC5jIChhdXRvX2Z1bmN0aW9uKTogUmVtb3ZlIHVudXNlZCB2YXJpYWJsZSBgZGVjbCcuCgoJKiBkZWNsMi5jOiBJbmNsdWRlIGR3YXJmMm91dC5oIGFuZCBkd2FyZm91dC5oLgoKCSogbGV4LmM6IFJlbW92ZSByZWR1bmRhbnQgZGVjbGFyYXRpb25zIG9mIGBzZXRfZmxvYXRfaGFuZGxlcicgYW5kCglgYXNtX291dF9maWxlJy4KCjE5OTgtMDYtMDggIEFuZHJldyBNYWNMZW9kICA8YW1hY2xlb2RAY3lnbnVzLmNvbT4KCgkqIGV4Y2VwdC5jIChpbml0X2V4Y2VwdGlvbl9wcm9jZXNzaW5nKTogUmVtb3ZlIE5FV19FSF9NT0RFTCBjb21waWxlCgl0aW1lIGZsYWcuICBDYWxsIF9fY3BfZWhfaW5mbyBpbnN0ZWFkIG9mIF9fY3BfZXhjZXB0aW9uX2luZm8uCgkqIGV4Y2VwdGlvbi5jYyAoc3RydWN0IGNwX2VoX2luZm8pOiBSZW1vdmUgTkVXX0VIX01PREVMIGZsYWcuCgkoX19jcF9leGNlcHRpb25faW5mbyk6IFJldHVybiBvZmZzZXQgaW50byBjcF9laF9pbmZvIHN0cnVjdHVyZSB0bwoJbWF0Y2ggd2hhdCB1c2UgdG8gYmUgdGhlIHN0YXJ0IG9mIHRoaXMgc3RydWN0dXJlLgoJKF9fY3BfZWhfaW5mbyk6IE5ldyBmdW5jdGlvbiB0byByZXR1cm4gYSBwb2ludGVyIHRvIGNwX2VoX2luZm8gc3RydWN0LgoJKF9fY3BsdXNfdHlwZV9tYXRjaGVyLCBfX2NwX3B1c2hfZXhjZXB0aW9uKTogUmVtb3ZlIE5FV19FSF9NT0RFTAoJY29tcGlsZSB0aW1lIGZsYWcuCgkoX191bmNhdGNoX2V4Y2VwdGlvbiwgX19jaGVja19laF9zcGVjLCBzdGQ6OnVuY2F1Z2h0X2V4Y2VwdGlvbik6IENhbGwKCV9fY3BfZWhfaW5mbyBpbnN0ZWFkIG9mIF9fY3BfZXhjZXB0aW9uX2luZm8uCgoxOTk4LTA2LTA4ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBkZWNsLmMgKGNwX2ZpbmlzaF9kZWNsKTogRGlzYWJsZSBpbmxpbmluZyBvZiBleHRlcm4gaW5saW5lcwoJd2l0aCBzdGF0aWMgdmFyaWFibGVzLgoKMTk5OC0wNi0wOCAgTWFyayBNaXRjaGVsbCAgPG1hcmtAbWFya21pdGNoZWxsLmNvbT4KCgkqIGluaXQuYyAoYnVpbGRfb2Zmc2V0X3JlZik6IENvcnJlY3QgcHJldmlvdXMgY2hhbmdlIHRvIHVzZSBidWlsZCwKCW5vdCBidWlsZF9taW4uCgoxOTk4LTA2LTA3ICBNYXJrIE1pdGNoZWxsICA8bWFya0BtYXJrbWl0Y2hlbGwuY29tPgoKCSogY2xhc3MuYyAoaW5zdGFudGlhdGVfdHlwZSk6IEhhbmRsZSBwb2ludGVyLXRvLW1lbWJlcnMgd2hlcmUgdGhlCgltZW1iZXIgaXMgYSB0ZW1wbGF0ZS4KCSogaW5pdC5jIChidWlsZF9vZmZzZXRfcmVmKTogTGlrZXdpc2UuCgkqIHR5cGVjay5jIChidWlsZF91bmFyeV9vcCk6IExpa2V3aXNlLgoKMTk5OC0wNi0wNyAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAY3lnbnVzLmNvbT4KCgkqIGxleC5jIChsYW5nX2luaXRfb3B0aW9ucyk6IE5ldyBmdW5jdGlvbi4KCShsYW5nX2luaXQpOiBSZW1vdmUgZmxhZ19leGNlcHRpb25zID09IDIgaGFjay4KCjE5OTgtMDYtMDUgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIHNlYXJjaC5jIChlbnZlbG9wZV9hZGRfZGVjbCk6IFR3ZWFrIGZvciBpbXBsaWNpdCB0eXBlbmFtZS4KCgkqIGNhbGwuYyAoam91c3QpOiBBbHNvIHdhcm4gYWJvdXQgY29uZnVzaW5nIGNvbnZlcnNpb24gb3AvY29uc3RydWN0b3IKCW92ZXJsb2FkIHJlc29sdXRpb24uCgoJKiBzcGV3LmMgKHl5bGV4KTogQWxzbyByZXR1cm4gdGhlIFRZUEVfREVDTCBpZiBnb3Rfb2JqZWN0LgoJRG9uJ3QgY2xlYXIgZ290X29iamVjdCBhZnRlciAnficuCgkqIGNhbGwuYyAoYnVpbGRfc2NvcGVkX21ldGhvZF9jYWxsKTogVHdlYWsgZGVzdHJ1Y3RvciBoYW5kbGluZy4KCShidWlsZF9tZXRob2RfY2FsbCk6IExpa2V3aXNlLgoJKiBwdC5jICh0c3Vic3RfY29weSwgY2FzZSBNRVRIT0RfQ0FMTF9FWFBSKTogRG9uJ3QgbWVzcyB3aXRoCglUWVBFX01BSU5fVkFSSUFOVCBmb3IgZGVzdHJ1Y3RvcnMuCgkqIHNlbWFudGljcy5jIChmaW5pc2hfb2JqZWN0X2NhbGxfZXhwcik6IENvbXBsYWluIGFib3V0IGNhbGxpbmcgYQoJVFlQRV9ERUNMLgoKMTk5OC0wNi0wNSAgUGVyIEJvdGhuZXIgIDxib3RobmVyQGN5Z251cy5jb20+CgoJKiBnKytzcGVjLmMgKGxhbmdfc3BlY2lmaWNfcHJlX2xpbmssIGxhbmdfc3BlY2lmaWNfZXh0cmFfb2ZpbGVzKToKCURlZmluZSAtIHVwZGF0ZSBuZWVkZWQgYnkgZ2NjLmMgY2hhbmdlLgoKMTk5OC0wNi0wNSAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogZXJyb3IuYyAoY3BfcHJpbnRlcnMpOiBVc2UgJ28nIGluc3RlYWQgb2YgJ18nIGZvciB0aGUgbnVsbCBlbnRyeS4KCjE5OTgtMDYtMDUgIE1hcnRpbiB2LiBMb2V3aXMgIDxsb2V3aXNAaW5mb3JtYXRpay5odS1iZXJsaW4uZGU+CgoJKiBjcC10cmVlLmggKERFQ0xfTkFNRVNQQUNFX0FMSUFTLCBPUklHSU5BTF9OQU1FU1BBQ0UpOiBEZWNsYXJlLgoJKiBkZWNsLmMgKGxvb2t1cF9uYW1lX3JlYWwpOiBBZGQgbmFtZXNwYWNlc19vbmx5IHBhcmFtZXRlci4KCUlmIHNldCwgcmV0dXJuIG9ubHkgTkFNRVNQQUNFX0RFQ0xzLgoJKHNlbGVjdF9kZWNsKTogTGlrZXdpc2UuCgkoaWRlbnRpZmllcl90eXBlX3ZhbHVlKTogR2l2ZSBhZGRpdGlvbmFsIHBhcmFtZXRlci4KCShsb29rdXBfbmFtZV9ub25jbGFzcyk6IExpa2V3aXNlLgoJKGxvb2t1cF9uYW1lKTogTGlrZXdpc2UuCgkoZmluZF9iaW5kaW5nKTogU2tpcCBuYW1lc3BhY2UgYWxpYXNlcy4KCShiaW5kaW5nX2Zvcl9uYW1lKTogTGlrZXdpc2UuCgkocHVzaF9uYW1lc3BhY2UpOiBDaGVjayBmb3IgbmFtZXNwYWNlIGFsaWFzZXMuCgkobG9va3VwX25hbWVfbmFtZXNwYWNlX29ubHkpOiBOZXcgZnVuY3Rpb24uCgkoYmVnaW5fb25seV9uYW1lc3BhY2VfbmFtZXMsIGVuZF9vbmx5X25hbWVzcGFjZV9uYW1lcyk6IE5ldyBmdW5jdGlvbnMuCgkqIGRlY2wyLmMgKHNldF9kZWNsX25hbWVzcGFjZSk6IFNraXAgbmFtZXNwYWNlIGFsaWFzZXMuCgkoZG9fdXNpbmdfZGlyZWN0aXZlKTogTGlrZXdpc2UuCgkoZG9fbmFtZXNwYWNlX2FsaWFzKTogUHJvZHVjZSBuYW1lc3BhY2UgYWxpYXNlcywgZml4IGFsaWFzCglyZWRlY2xhcmF0aW9uLgoJKiBlcnJvci5jIChkdW1wX2RlY2wpOiBTdXBwb3J0IFNDT1BFX1JFRi4KCSogcGFyc2UueSAoZXh0ZGVmKTogV3JhcCBsb29rdXAgd2l0aCBuYW1lc3BhY2Vfb25seSBmb3IgbmFtZXNwYWNlCglhbGlhc2VzIGFuZCB1c2luZyBkZWNsYXJhdGlvbnMuCgoxOTk4LTA2LTA0ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiB0cmVlLmMgKHJlYWxseV9vdmVybG9hZGVkX2ZuKTogT25seSBzZWUgdGhyb3VnaCBvbmUgVFJFRV9MSVNULgoKCSogZXJyb3IuYyAoZHVtcF9leHByKTogQ2xlYW4gdXAgTkVXX0VYUFIgY2FzZS4KCjE5OTgtMDYtMDQgIE1hcnRpbiB2b24gTPZ3aXMgIDxsb2V3aXNAaW5mb3JtYXRpay5odS1iZXJsaW4uZGU+CgoJU3VnZ2VzdGVkIGJ5IEJyZW5kYW4gS2Vob2UKCSogZGVjbDIuYyAoZG9fdG9wbGV2ZWxfdXNpbmdfZGVjbCk6IFdoZW4gZGVjbCBpcyBhIFRZUEVfREVDTCwKCXRyZWF0IGl0IGFzIHVzaW5nIDo6ZGVjbC4KCgkqIGRlY2wyLmMgKGFyZ19hc3NvY190eXBlKTogUHJvY2VzcyB1bmtub3duX3R5cGVfbm9kZSBhbmQgT0ZGU0VUX1RZUEUuCgoJKiB0cmVlLmMgKG1hcGNhcik6IFN1cHBvcnQgTkVXX0VYUFIuCgoJKiBlcnJvci5jIChkdW1wX2V4cHIpOiBTdXBwb3J0IE5FV19FWFBSLgoKMTk5OC0wNi0wMyAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogbWV0aG9kLmMgKG1ha2VfdGh1bmspOiBVc2Ugb3ZlcmxvYWQgbWFjaGluZXJ5IHRvIG1ha2UgbmFtZS4KCSogc2VhcmNoLmMgKGNvdmFyaWFudF9yZXR1cm5fcCk6IE5ldyBmbi4KCShnZXRfbWF0Y2hpbmdfdmlydHVhbCk6IFVzZSBpdC4KCgkqIGluaXQuYyAoYnVpbGRfbmV3XzEpOiBGaXggY2hlY2sgZm9yIHZvaWQuCgoxOTk4LTA2LTAxICBQZXIgQm90aG5lciAgPGJvdGhuZXJAY3lnbnVzLmNvbT4KCgkqIGNwLXRyZWUuaCAoVFlQRV9GT1JfSkFWQSk6ICBOZXcgbWFjcm8uCgkqIGRlY2wuYywgY3AtdHJlZS5oIChqYXZhX2J5dGVfdHlwZV9ub2RlLCBqYXZhX3Nob3J0X3R5cGVfbm9kZSwKCWphdmFfaW50X3R5cGVfbm9kZSwgamF2YV9sb25nX3R5cGVfbm9kZSwgamF2YV9mbG9hdF90eXBlX25vZGUsCglqYXZhX2RvdWJsZV90eXBlX25vZGUsIGphdmFfY2hhcl90eXBlX25vZGUsIGphdmFfYm9vbGVhbl90eXBlX25vZGUpOgoJTmV3ICJwcmltaXRpdmUiIHR5cGVzLCB3aXRoIHByZWRlZmluZWQgbmFtZXMgX19qYXZhX2J5dGUgZXRjLgoJKHJlY29yZF9idWlsdGluX2phdmFfdHlwZSk6ICBOZXcgZnVuY3Rpb24uCgkoaW5pdF9kZWNsX3Byb2Nlc3NpbmcpOiAgTWFrZSBKYXZhIHR5cGVzIHdpdGggcmVjb3JkX2J1aWx0aW5famF2YV90eXBlLgoJKHB1c2h0YWcsIGdyb2tkZWNsYXJhdG9yKTogIFNldCBUWVBFX0ZPUl9KQVZBIGlmIGluIGV4dGVybiAiSkFWQSIuCgkoeHJlZl9iYXNleXBlcyk6ICBJZiBiYXNlIGNsYXNzIHdhcyBUWVBFX0ZPUl9KQVZBLCBzbyBpcyB0aGlzIGNsYXNzLgoJKGdyb2tmbmRlY2wpOiAgQ2FsbCBjaGVja19qYXZhX21ldGhvZCBmb3IgSmF2YSBjbGFzc2VzLgoJKiBtZXRob2QuYyAoaXNfamF2YV90eXBlKTogIFJlbW92ZWQuICBSZXBsYWNlZCB3aXRoIFRZUEVfRk9SX0pBVkEuCgkocHJvY2Vzc19vdmVybG9hZF9pdGVtKTogIE1hdGNoIHR5cGVzIGFnYWluc3Qgc3BlY2lmaWMKCWphdmFfWFhfdHlwZV9ub2RlIHR5cGVzLCByYXRoZXIgdGhhbiB1c2luZyBpc19qYXZhX3R5cGUuCgkqIGNsYXNzLmMgKGZpbmlzaF9zdHJ1Y3RfMSk6ICBEb24ndCBhZGQgZGVmYXVsdCBjb3B5IGNvbnN0cnVjdG9yCglvciBvcGVyYXRvcj0gaWYgVFlQRV9GT1JfSkFWQS4KCShwb3BfbGFuZ19jb25leHQpOiAgUmVzdG9yZSBzdHJpY3RfcHJvdG90eXAgcHJvcGVyIGlmIEphdmEuCgkqIGRlY2wyLmMgKGFjY2VwdGFibGVfamF2YV90eXBlLCBjaGVja19qYXZhX21ldGhvZCk6ICBOZXcgZnVuY3Rpb25zLgoJKiBwdC5jIChpbnN0YW50aWF0ZV9jbGFzc190ZW1wbGF0ZSk6ICBDb3B5IFRZUEVfRk9SX0pBVkEgZnJvbSBwYXR0ZXJuLgoJKHRzdWJzdCk6ICBNb3ZlIGNvbW1vbiBzdGF0ZW1lbnQgYWZ0ZXIgaWYgc3RhdGVtZW50LgoJKiB0eXBlY2suYyAoY29tcHR5cGVzKTogIElmIHN0cmljdCwgVFlQRV9GT1JfSkFWQSBtdXN0IG1hdGNoLgoKMTk5OC0wNi0wMSAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogcHQuYyAoZm9yX2VhY2hfdGVtcGxhdGVfcGFybSk6IFVzZSBmaXJzdF9ydGxfb3AuCgoJKiB0cmVlLmMgKGJ1aWxkX2NwbHVzX2FycmF5X3R5cGVfMSk6IEFsc28gY2hlY2sgaW5kZXhfdHlwZSBmb3IKCXRlbXBsYXRlIHBhcm1zLgoKMTk5OC0wNS0zMSAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogcHQuYyAodHN1YnN0KTogQWx3YXlzIGNvcHkgQklORk9fQkFTRVRZUEVTLgoKMTk5OC0wNS0yOSAgc2NvdHQgc255ZGVyICA8c255ZGVyQGQwc2dpZi5mbmFsLmdvdj4KCgkqIHRyZWUuYyAobGF5b3V0X2Jhc2V0eXBlcyk6IElmIHdlIGNoYW5nZSBUWVBFX1NJWkUsIGNoYW5nZQoJVFlQRV9TSVpFX1VOSVQgdG9vLgoKMTk5OC0wNS0yOSAgTWFyayBNaXRjaGVsbCAgPG1hcmtAbWFya21pdGNoZWxsLmNvbT4KCgkqIGRlY2wuYyAoZ3Jva2RlY2xhcmF0b3IpOiBEb24ndCBjb21wbGFpbiBhYm91dCBpbi1jbGFzcwoJaW5pdGlhbGl6YXRpb24gb2Ygc3RhdGljIGNvbnN0cyBpZiB3ZSBkb24ndCByZWFsbHkga25vdyB0aGUgdHlwZQoJb2YgdGhlIHZhcmlhYmxlLgoKMTk5OC0wNS0yOSAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogY3AtdHJlZS5oIChERUNMX0RFU1RSVUNUT1JfUCk6IE5ldyBtYWNyby4KCSogbWV0aG9kLmMgKGJ1aWxkX2Rlc3RydWN0b3JfbmFtZSk6IE5ldyBmbi4KCSogZGVjbDIuYyAobWF5YmVfcmV0cm9maXRfaW5fY2hyZyk6IFNwbGl0IG91dC4uLgoJKGdyb2tjbGFzc2ZuKTogRnJvbSBoZXJlLiAgUmVvcmdhbml6ZS4KCSogZGVjbC5jIChncm9rX2N0b3JfcHJvcGVydGllcyk6IE1ha2Ugc3VyZSBjdG9ycyBmb3IgdHlwZXMgd2l0aAoJdmJhc2VzIGhhdmUgdGhlIGluX2NocmcgcGFybS4KCSogcHQuYyAoaW5zdGFudGlhdGVfY2xhc3NfdGVtcGxhdGUpOiBVcGRhdGUKCVRZUEVfVVNFU19WSVJUVUFMX0JBU0VDTEFTU0VTIGZyb20gdHN1YnN0ZWQgYmFzZXMuICBEb24ndCBjYWxsCglncm9rXypfcHJvcGVydGllcy4KCSh0c3Vic3QpOiBDYWxsIGdyb2tfY3Rvcl9wcm9wZXJ0aWVzIGFuZCBtYXliZV9yZXRyb2ZpdF9pbl9jaHJnLgoKMTk5OC0wNS0yOCAgTWFyayBNaXRjaGVsbCAgPG1hcmtAbWFya21pdGNoZWxsLmNvbT4KCgkqIHB0LmMgKGluc3RhbnRpYXRlX2RlY2wpOiBNYWtlIHRlc3QgZm9yIHdoZXRoZXIgb3Igbm90IHN0YXRpYwoJdmFyaWFibGVzIHNob3VsZCBiZSBpbnN0YW50aWF0ZWQgZWFybHkgbWF0Y2ggaXRzIGNvbW1lbnQuCgoxOTk4LTA1LTI4ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBkZWNsLmMgKHN0YXJ0X2RlY2wpOiBBbHdheXMgcGVkd2FybiBhYm91dCB2YWN1b3VzbHkgcmVkZWNsYXJpbmcKCWEgbWVtYmVyLgoJKHN0YXJ0X2Z1bmN0aW9uKTogQ2FsbCBjaGVja19kZWZhdWx0X2FyZ3MuCgkqIGRlY2wyLmMgKGdyb2tmaWVsZCk6IERvbid0IGNhbGwgY2hlY2tfZGVmYXVsdF9hcmdzLgoJKGNoZWNrX2RlZmF1bHRfYXJncyk6IFVzZSBjcF9lcnJvcl9hdC4KCSogbGV4LmMgKGRvX3BlbmRpbmdfZGVmYXJncyk6IENhbGwgY2hlY2tfZGVmYXVsdF9hcmdzLgoKMTk5OC0wNS0yNyAgQnJlbmRhbiBLZWhvZSAgPGJyZW5kYW5AY3lnbnVzLmNvbT4KCgkqIGNhbGwuYyAoYnVpbGRfbWV0aG9kX2NhbGwpOiBNYWtlIHN1cmUgZ2V0X3R5cGVfdmFsdWUgcmV0dXJucwoJc29tZXRoaW5nIGJlZm9yZSB3ZSB0cnkgdG8gdXNlIGl0cyBUWVBFX01BSU5fVkFSSUFOVC4KCShidWlsZF9zY29wZWRfbWV0aG9kX2NhbGwpOiBMaWtld2lzZS4KCjE5OTgtMDUtMjcgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIHR5cGVjazIuYyAoZGlnZXN0X2luaXQpOiBDb21wbGFpbiBhYm91dCBnZXR0aW5nIGEgVFJFRV9MSVNUIHRvCglpbml0aWFsaXplIGFuIGFycmF5LgoKCSogc2VhcmNoLmMgKGV4cGFuZF91cGNhc3RfZml4dXBzKTogRG9uJ3Qgc2V0IERFQ0xfQ09OVEVYVCBhbmQKCURFQ0xfVklSVFVBTF9QLgoKCSogZnJpZW5kLmMgKGRvX2ZyaWVuZCk6IENsYXJpZnkgdGVtcGxhdGUgd2FybmluZy4KCjE5OTgtMDUtMjcgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQG1hcmttaXRjaGVsbC5jb20+CgoJKiBkZWNsLmMgKHNoYWRvd19sYWJlbCk6IERvbid0IHRyZWF0IGRlY2xzIGFzIGlkZW50aWZpZXJzLgoJKG1heWJlX3B1c2hfdG9fdG9wX2xldmVsKTogQ2xlYXIgc2hhZG93ZWRfbGFiZWxzLgoKCSogcHQuYyAoaW5zdGFudGlhdGVfZGVjbCk6IFJlc2V0IGxpbmVubyBhbmQgZmlsZW5hbWUgYWZ0ZXIgY2FsbGluZwoJcmVnZW5lcmF0ZV9kZWNsX2Zyb21fdGVtcGxhdGUuCgoJKiBkZWNsLmMgKGdyb2tkZWNsYXJhdG9yKTogRG9uJ3QgdHJ5IHRvIHVzZSBUWVBFX09CU1RBQ0sgb24gYW4KCWVycm9yX21hcmtfbm9kZS4KCjE5OTgtMDUtMjcgIEtldmluIEJ1aHIgIDxidWhyQHN0YXQud2lzYy5lZHU+CgoJKiBwYXJzZS55IChiYXNlX2NsYXNzKTogVXNlIGlzX2FnZ3JfdHlwZSwgbm90IElTX0FHR1JfVFlQRS4KCjE5OTgtMDUtMjYgIEtyaWFuZyBMZXJkc3V3YW5ha2lqICA8bGVyZHN1d2FAc2NmLnVzYy5lZHU+CgoJKiBwdC5jIChwcm9jZXNzX3RlbXBsYXRlX3Bhcm0pOiBBY2NlcHQgVFlQRU5BTUVfVFlQRSBub2Rlcy4KCShjb252ZXJ0X25vbnR5cGVfYXJndW1lbnQpOiBIYW5kbGUgY2FzZXMgd2hlbiBub250eXBlIHRlbXBsYXRlCglwYXJhbWV0ZXJzIGJlY29tZSBjbGFzc2VzIGFmdGVyIHN1YnN0aXR1dGlvbi4KCjE5OTgtMDUtMjYgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQG1hcmttaXRjaGVsbC5jb20+CgoJKiBmcmllbmQuYyAoaXNfZnJpZW5kKTogVXNlIGNvbXB0eXBlcywgcmF0aGVyIHRoYW4gPT0gdG8gY29tcGFyZQoJdHlwZXMuICBNb2RpZnkgZm9yIG5ldyByZXByZXNlbnRhdGlvbiBvZiB0ZW1wbGF0ZSBmcmllbmRzLgoJKG1ha2VfZnJpZW5kX2NsYXNzKTogTGlrZXdpc2UuCgkqIHB0LmMgKHRzdWJzdF9mcmllbmRfY2xhc3MpOiBVbmRvIDE5OTgtMDUtMjEgY2hhbmdlLiAgVHdlYWsuCgkoaW5zdGFudGlhdGVfY2xhc3NfdGVtcGxhdGUpOiBEZWFsIHdpdGggdGVtcGxhdGUgZnJpZW5kcy4KCgkqIGRlY2wuYyAoc3RvcmVfcGFybV9kZWNscyk6IFJlbW92ZSByZWR1bmRhbnQgY2FsbCB0bwoJZXhwYW5kX21haW5fZnVuY3Rpb24uCgoxOTk4LTA1LTI2ICBCZW5qYW1pbiBLb3NuaWsgIDxia296QGxvb255LmN5Z251cy5jb20+CgoJKiBkZWNsLmMgKHN0YXJ0X2RlY2wpOiBDaGVjayBmb3IgREVDTF9MQU5HX1NQRUNJRklDIGJlZm9yZQoJREVDTF9VU0VfVEVNUExBVEUuCgoxOTk4LTA1LTI2ICBQZXIgQm90aG5lciAgPGJvdGhuZXJAY3lnbnVzLmNvbT4KCgkqIGxhbmd1YWdlX2FzX3N0cmluZzogIEhhbmRsZSBsYW5nX2phdmEuCgoxOTk4LTA1LTI2ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBkZWNsLmMgKHB1c2hkZWNsKTogRG9uJ3QgY29weSB0aGUgdHlwZV9kZWNsLgoKMTk5OC0wNS0yNiAgTWFydGluIHYuIEz2d2lzICA8bG9ld2lzQGluZm9ybWF0aWsuaHUtYmVybGluLmRlPgoKCSogY2xhc3MuYyAocHVzaGNsYXNzKTogQWx3YXlzIHN0b3JlIFRZUEVfTUFJTl9WQVJJQU5UIGluCgljdXJyZW50X2NsYXNzX3R5cGUuCgkqIGRlY2wuYyAoZ3Jva2RlY2xhcmF0b3IpOiBQdXQgdHlwZWRlZnMgb24gdGhlIHR5cGUncyBvYnN0YWNrLgoKCSogcGFyc2UueSAoY29tcGxleF9kaXJlY3Rfbm90eXBlX2RlY2xhcmF0b3IpOiBVc2UgJDEgdG8gYWNjZXNzCglzY29wZSBvZiBub3R5cGVfcXVhbGlmaWVkX2lkLgoKMTk5OC0wNS0yNiAgRGF2ZSBCcm9sbGV5ICA8YnJvbGxleUBjeWdudXMuY29tPgoKCSogbGV4LmMgKHBhcnNlX29wdGlvbnMseXlfY3VyLHl5X2xpbSk6IEFkZCBmb3IgY3BwbGliLgoJKGluaXRfcGFyc2UpOiBJbml0aWFsaXplIGNwcGxpYiBpbnRlcmZhY2UuCgoJKiBNYWtlZmlsZS5pbiAoQ1hYX09CSlMpOiBNYWtlIHN1cmUgZGVwZW5kZW5jaWVzIG5ldmVyIGVuZCB3aXRoIGFuCgllbXB0eSBjb250aW51YXRpb24uCgoxOTk4LTA1LTI2ICBNYXJrIE1pdGNoZWxsICA8bWFya0BtYXJrbWl0Y2hlbGwuY29tPgoKCSogZGVjbC5jIChwdXNodGFnKTogQXZvaWQgY3Jhc2hpbmcgb24gZXJyb25lb3VzIGlucHV0LgoKMTk5OC0wNS0yNSAgTWFydGluIHYuIEz2d2lzICA8bG9ld2lzQGluZm9ybWF0aWsuaHUtYmVybGluLmRlPgoKCSogZGVjbC5jIChwdXNoX25hbWVzcGFjZSk6IE9ubHkgcHJvZHVjZSBvbmUgdW5pcXVlIG5hbWUgZm9yCglhbm9ueW1vdXMgbmFtZXNwYWNlcy4KCShnZXRfdW5pcXVlX25hbWUpOiBSZW1vdmUuCgoxOTk4LTA1LTI1ICBNYXJrIE1pdGNoZWxsICA8bWFya0BtYXJrbWl0Y2hlbGwuY29tPgoKCSogY2FsbC5jICh0b3VybmV5KTogRG9uJ3QgZG8gYW55IGV4dHJhIGNvbXBhcmlzb25zLgoKCSogZGVjbDIuYyAoYnVpbGRfYW5vbl91bmlvbl92YXJzKTogRG9uJ3QgY3Jhc2ggb24gZW1wdHkgc3ViLXVuaW9ucy4KCgkqIGNwLXRyZWUuaCAocHJvY2Vzc2luZ190ZW1wbGF0ZV9wYXJtbGlzdCk6IERlY2xhcmUuCgkqIGRlY2wuYyAocHVzaHRhZyk6IERvbid0IGNhbGwgcHVzaF90ZW1wbGF0ZV9kZWNsIHdoZW4gd2UKCXNob3VsZG4ndC4KCSogcHQuYyAocHJvY2Vzc2luZ190ZW1wbGF0ZV9wYXJtbGlzdCk6IE5ldyB2YXJpYWJsZS4KCShUTVBMX0FSR1NfSEFWRV9NVUxUSVBMRV9MRVZFTFMpOiBOZXcgbWFjcm8uCgkoY29tcGxldGVfdGVtcGxhdGVfYXJncyk6IFVzZSBpdC4KCShhZGRfdG9fdGVtcGxhdGVfYXJncyk6IExpa2V3aXNlLgoJKGlubmVybW9zdF9hcmdzKTogTGlrZXdpc2UuCgkodHN1YnN0KTogTGlrZXdpc2UuCgkoYmVnaW5fdGVtcGxhdGVfcGFybV9saXN0KTogVXNlIHByb2Nlc3NpbmdfdGVtcGxhdGVfcGFybWxpc3QuCgkoZW5kX3RlbXBsYXRlX3Bhcm1fbGlzdCk6IExpa2V3aXNlLgoKCSogY3AtdHJlZS5oIChBTk9OX1VOSU9OX1RZUEVfUCk6IE5ldyBtYWNyby4KCSogZGVjbC5jIChncm9rZGVjbGFyYXRvcik6IFVzZSBpdC4KCSogZGVjbDIuYyAoZ3Jva194X2NvbXBvbmVudHMpOiBMaWtld2lzZS4KCSogaW5pdC5jIChpbml0aWFsaXppbmdfY29udGV4dCk6IExpa2V3aXNlLgoJKiBtZXRob2QuYyAoZG9fYnVpbGRfY29weV9jb25zdHJ1Y3Rvcik6IExpa2V3aXNlLgoJKGRvX2J1aWxkX2Fzc2lnbl9yZWYpOiBMaWtld2lzZS4KCSogc2VhcmNoLmMgKGNvbXB1dGVfYWNjZXNzKTogTGlrZXdpc2UuCgkqIHR5cGVjay5jIChidWlsZF9jb21wb25lbnRfcmVmKTogTGlrZXdpc2UuCgoJKiBkZWNsLmMgKGdyb2tkZWNsYXJhdG9yKTogRG9uJ3QgZ2l2ZSBhIGN2LXF1YWxpZmllZCB2ZXJzaW9uIG9mIGFuCgl1bm5hbWVkIHR5cGUgYSB0eXBlZGVmIG5hbWUgImZvciBsaW5rYWdlIHB1cnBvc2VzIi4KCgkqIHB0LmMgKGxvb2t1cF90ZW1wbGF0ZV9jbGFzcyk6IERvbid0IGxvb2sgYXQKCUlERU5USUZJRVJfQ0xBU1NfVkFMVUUgd2hlbiB0aGVyZSdzIG5vIGN1cnJlbnRfY2xhc3NfdHlwZS4KCgkqIG1ldGhvZC5jIChidWlsZF9vdmVybG9hZF9pbnQpOiBIYW5kbGUgZXJyb3IgY2FzZXMgZ3JhY2VmdWxseS4KCgkqIHB0LmMgKGluc3RhbnRpYXRlX2RlY2wpOiBIYW5kbGUgc3RhdGljIG1lbWJlciB2YXJpYWJsZXMKCWNvcnJlY3RseS4KCgkqIHB0LmMgKHRzdWJzdCk6IFVzZSB0aGUgdHN1YnN0J2QgdHlwZSB3aGVuIHByb2R1Y2luZyBuZXcKCVRFTVBMQVRFX1BBUk1fSU5ERVggbm9kZXMuCgoxOTk4LTA1LTI0ICBNYXJrIE1pdGNoZWxsICA8bWFya0BtYXJrbWl0Y2hlbGwuY29tPgoKCSogdHJlZS5jIChjcF90cmVlX2VxdWFsKTogSGFuZGxlIHBvaW50ZXJzIHRvIG1lbWJlciBmdW5jdGlvbnMuCgoJKiBjYWxsLmMgKG1heWJlX2hhbmRsZV9pbXBsaWNpdF9vYmplY3QpOiBIYW5kbGUgUVVBTF9DT05Wcy4gIE1ha2UKCXN1cmUgdGhlIHR5cGUgb2YgdGhlIFJFRl9CSU5EIGlzIGEgcmVmZXJlbmNlIHR5cGUuCgkobWF5YmVfaGFuZGxlX3JlZl9iaW5kLCBjb21wYXJlX2ljcyk6IFJlbmFtZSByZWZlcmVuY2VfdHlwZSB0bwoJdGFyZ2V0X3R5cGUgZm9yIGNsYXJpdHkuCgoJKiBwYXJzZS55ICh4Y29uZCk6IE1vdmUgY2FsbCB0byBjb25kaXRpb25fY29udmVyc2lvbiAuLi4KCSogc2VtYW50aWNzLmMgKGZpbmlzaF9mb3JfY29uZCk6IEhlcmUuCgkqIHBhcnNlLmM6IFJlZ2VuZXJhdGVkLgoKMTk5OC0wNS0yNCAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogZGVjbC5jIChwdXNoX25hbWVzcGFjZSk6IE5hbWVzcGFjZXMgaGF2ZSB0eXBlIHZvaWQuCgkqIHR5cGVjazIuYyAoaW5jb21wbGV0ZV90eXBlX2Vycm9yKTogQ29tcGxhaW4gYWJvdXQgbmFtZXNwYWNlCgl1c2VkIGFzIGV4cHJlc3Npb24uCgkqIHR5cGVjay5jIChkZWNheV9jb252ZXJzaW9uKTogTGlrZXdpc2UuCgoxOTk4LTA1LTI0ICBNYXJ0aW4gdm9uIEz2d2lzICA8bG9ld2lzQGluZm9ybWF0aWsuaHUtYmVybGluLmRlPgoKCSogZXJyb3IuYyAoZHVtcF9leHByKTogU3VwcG9ydCBuYW1lc3BhY2VzLgoKMTk5OC0wNS0yMyAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogY3AtdHJlZS5kZWY6IEFkZCBTUkNMT0MuCgkqIGNwLXRyZWUuaDogQWRkIHN0cnVjdCB0cmVlX3NyY2xvYyBhbmQgYWNjZXNzb3IgbWFjcm9zLgoJKiB0cmVlLmMgKGJ1aWxkX3NyY2xvYywgYnVpbGRfc3JjbG9jX2hlcmUpOiBOZXcgZm5zLgoJKiBwdC5jIChhZGRfcGVuZGluZ190ZW1wbGF0ZSk6IFVzZSBidWlsZF9zcmNsb2NfaGVyZS4KCShwdXNoX3RpbnN0X2xldmVsKTogVXBkYXRlIGxhc3RfdGVtcGxhdGVfZXJyb3JfdGljayBiZWZvcmUgZXJyb3JpbmcuCgkoaW5zdGFudGlhdGVfZGVjbCk6IFJlc3RvcmUgbGluZW5vIGFuZCBpbnB1dF9maWxlbmFtZSBiZWZvcmUKCWNhbGxpbmcgYWRkX3BlbmRpbmdfdGVtcGxhdGUuCgkqIGRlY2wyLmMgKGZpbmlzaF9maWxlKTogU2V0IHVwIGxpbmVubyBhbmQgaW5wdXRfZmlsZW5hbWUgZm9yCglwZW5kaW5nIHRlbXBsYXRlcy4KCjE5OTgtMDUtMjIgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIGRlY2wuYyAobGFuZ19wcmludF9lcnJvcl9mdW5jdGlvbik6IE5ldyBmbi4KCShpbml0X2RlY2xfcHJvY2Vzc2luZyk6IFNldCBwcmludF9lcnJvcl9mdW5jdGlvbiB0byB1c2UgaXQuCgkqIGVycmZuLmMgKGNwX3RoaW5nKTogRG9uJ3QgY2FsbCBtYXliZV9wcmludF90ZW1wbGF0ZV9jb250ZXh0IGhlcmUuCgoJKiBjYWxsLmMgKG1heWJlX2hhbmRsZV9yZWZfYmluZCk6IFByb3BhZ2F0ZSBJQ1NfVVNFUl9GTEFHIGFuZAoJSUNTX0JBRF9GTEFHLgoKCSogY3Z0LmMgKG9jcF9jb252ZXJ0KTogRG9uJ3Qgc2V0IExPT0tVUF9OT19DT05WRVJTSU9OIGZvcgoJY29weS1pbml0aWFsaXphdGlvbi4KCgkqIGNsYXNzLmMgKGJ1aWxkX3Z0YWJsZV9lbnRyeSk6IFVzZSBpbnRfZml0c190eXBlX3AuCgkoYnVpbGRfdnRhYmxlKTogUGFzcyBhIHNpZ25lZCBvZmZzZXQgdG8gYnVpbGRfdnRhYmxlX2VudHJ5LgoJKHByZXBhcmVfZnJlc2hfdnRhYmxlLCBtb2RpZnlfb25lX3Z0YWJsZSwgZml4dXBfdnRhYmxlX2RlbHRhczEsCglzZXRfcnR0aV9lbnRyeSk6IExpa2V3aXNlLgoKMTk5OC0wNS0yMiAgUGVyIEJvdGhuZXIgIDxib3RobmVyQGN5Z251cy5jb20+CgoJKiBjcC10cmVlLmg6ICBBZGQgY29tbWVudHMgZG9jdW1lbnRpbmcgd2hpY2ggTEFOR19GTEFHUyBhcmUgdXNlZC4KCShDX1RZUEVfVkFSSUFCTEVfU0laRSwgQ19ERUNMX1ZBUklBQkxFX1NJWkUpOiAgUmVtb3ZlZCwgbm90IHVzZWQuCgoxOTk4LTA1LTIyICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBwdC5jIChwcmludF90ZW1wbGF0ZV9jb250ZXh0KTogVXNlIGZwcmludGYgaW5zdGVhZCBvZiBjcF9lcnJvci4KCgkqIHB0LmMgKGRldGVybWluZV9zcGVjaWFsaXphdGlvbik6IEp1c3QgcmV0dXJuIGFuIGVycm9yX21hcmtfbm9kZS4KCUFsc28gcHJpbnQgdGhlIGRlY2wgd2Ugd2FudCBpbiBlcnJvciBtZXNzYWdlcy4gIElmIHdlIGNvbXBsYWluLAoJcmV0dXJuIGVycm9yX21hcmtfbm9kZS4KCSh0c3Vic3RfZnJpZW5kX2Z1bmN0aW9uKTogU2V0IGxpbmVubyBhbmQgaW5wdXRfZmlsZW5hbWUgc28KCWVycm9yIG1lc3NhZ2VzIHdpbGwgYmUgdXNlZnVsLgoJKGluc3RhbnRpYXRlX3RlbXBsYXRlKTogSnVzdCByZXR1cm4gYW4gZXJyb3JfbWFya19ub2RlLgoJKGNoZWNrX2V4cGxpY2l0X3NwZWNpYWxpemF0aW9uKTogRG9uJ3QgbWVzcyB3aXRoIGEgcmV0dXJuZWQKCWVycm9yX21hcmtfbm9kZS4KCgkqIHB0LmMgKHByaW50X3RlbXBsYXRlX2NvbnRleHQpOiBBZGQgbmV3IGFyZ3VtZW50LgoJKG1heWJlX3ByaW50X3RlbXBsYXRlX2NvbnRleHQpOiBOZXcgZm4uCgkocHVzaF90aW5zdF9sZXZlbCk6IEluY3JlbWVudCB0aW5zdF9sZXZlbF90aWNrLgoJKHBvcF90aW5zdF9sZXZlbCk6IExpa2V3aXNlLgoJKiBlcnJmbi5jIChjcF90aGluZyk6IENhbGwgbWF5YmVfcHJpbnRfdGVtcGxhdGVfY29udGV4dC4gIFVzZQoJeHJlYWxsb2MgaW5zdGVhZCBvZiB4bWFsbG9jLgoKCSogdHlwZWNrLmMgKGJ1aWxkX3VuYXJ5X29wLCBDT05WRVJUX0VYUFIpOiBQcm9wYWdhdGUgVFJFRV9DT05TVEFOVC4KCjE5OTgtMDUtMjEgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIHB0LmMgKHRzdWJzdF9mcmllbmRfY2xhc3MpOiBEb24ndCBjYWxsIHJlZGVjbGFyZV9jbGFzc190ZW1wbGF0ZQoJaWYgdGhlIHRlbXBsYXRlIHdlIGxvb2tlZCB1cCBpcyB0aGUgc2FtZSBhcyB0aGUgb25lIHdlIGFscmVhZHkKCWhhdmUuCgpUaHUgTWF5IDIxIDExOjU0OjQ0IDE5OTggIERhdmUgQnJvbGxleSAgPGJyb2xsZXlAY3lnbnVzLmNvbT4KCgkqIGxleC5jOiAoaGFuZGxlX3N5c3ZfcHJhZ21hKTogRklMRSogcGFyYW1ldGVyIG5vdCB1c2VkLgoJKGNwcF9yZWFkZXIscGFyc2VfaW4pOiBBZGQgZm9yIGNwcGxpYi4KCShjaGVja19uZXdsaW5lKTogQ2FsbCBoYW5kbGVfc3lzdl9wcmFnbWEgd2l0aCBuZXcgaW50ZXJmYWNlLgoJKGNoZWNrX25ld2xpbmUpOiBDYWxsIEdFVF9ESVJFQ1RJVkVfTElORSwgbm90IGdldF9kaXJlY3RpdmVfbGluZS4KCgkqIGlucHV0LmM6ICh5eV9jdXIseXlfbGltLHl5X2dldF90b2tlbixHRVRDKTogQWRkIGZvciBjcHBsaWIuCgkoc3ViX2dldGNoKTogQ2FsbCBHRVRDIGZvciBjcHBsaWIuCgoJKiBjcC10cmVlLmg6IChnZXRfZGlyZWN0aXZlX2xpbmUpOiBEaWZmZXJlbnQgcHJvdG90eXBlIGZvciBjcHBsaWIuCgkoR0VUX0RJUkVDVElWRV9MSU5FKTogTWFjcm8gd3JhcHBlciBmb3IgZ2V0X2RpcmVjdGl2ZV9saW5lLgoKCSogTWFrZWZpbGUuaW4gKENYWF9PQkpTKTogQWRkIEBleHRyYV9jeHhfb2Jqc0AgZm9yIGNwcGxpYi4KCjE5OTgtMDUtMjEgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIGRlY2wyLmMgKG1heWJlX21ha2Vfb25lX29ubHkpOiBOZXcgZm4uCgkoaW1wb3J0X2V4cG9ydF92dGFibGUpOiBVc2UgaXQuCgkoaW1wb3J0X2V4cG9ydF9kZWNsKTogTGlrZXdpc2UuCgkqIHB0LmMgKG1hcmtfZGVjbF9pbnN0YW50aWF0ZWQpOiBMaWtld2lzZS4KCjE5OTgtMDUtMjEgIE1hcmsgTWl0Y2hlbGwgIDxtbWl0Y2hlbGxAdXNhLm5ldD4KCgkqIGRlY2wyLmMgKGZpbmRfcmVwcmVzZW50YXRpdmVfbWVtYmVyKTogUmVuYW1lIHRvIC4uLgoJKGJ1aWxkX2Fub25fdW5pb25fdmFycyk6IE5ldyBmdW5jdGlvbi4KCShmaW5pc2hfYW5vbl91bmlvbik6IEZpeCBzdHVwaWRpdHkgb2YgcHJldmlvdXMgY2hhbmdlLgoKMTk5OC0wNS0yMCAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogZGVjbC5jIChncm9rZm5kZWNsKTogSGFuZGxlIGRlZmluaXRpb24gb2Ygc3BlY2lhbGl6YXRpb24gaW4KCWZyaWVuZCBkZWNsYXJhdGlvbi4KCgkqIGVycm9yLmMgKGR1bXBfZGVjbCk6IEZpeCBMT09LVVBfRVhQUiBoYW5kbGluZy4KCjE5OTgtMDUtMjAgIE1hcmsgTWl0Y2hlbGwgIDxtbWl0Y2hlbGxAdXNhLm5ldD4KCgkqIGNsYXNzLmMgKGRlbGV0ZV9kdXBsaWNhdGVfZmllbGRzXzEpOiBVc2UgREVDTF9ERUNMQVJFU19UWVBFX1AKCXRvIGxvb2sgZm9yIHR5cGUgZGVjbGFyYXRpb25zLgoJKGZpbmlzaF9zdHJ1Y3QpOiBEZWFsIHdpdGggdGVtcGxhdGVzIG9uIHRoZSBDTEFTU1RZUEVfVEFHUyBsaXN0LgoJKiBjcC10cmVlLmggKERFQ0xfREVDTEFSRVNfVFlQRV9QKTogTmV3IG1hY3JvLgoJKGZpbmlzaF9tZW1iZXJfY2xhc3NfdGVtcGxhdGUpOiBEZWNsYXJlLgoJKiBkZWNsLmMgKHB1c2h0YWcpOiBQdXQgbWVtYmVyIGNsYXNzIHRlbXBsYXRlcyBvbiB0aGUKCUNMQVNTVFlQRV9UQUdTIGxpc3QsIGp1c3QgYXMgZm9yIG9yZGluYXJ5IG1lbWJlciBjbGFzc2VzLgoJKHB1c2hkZWNsX2NsYXNzX2xldmVsKTogVXNlIERFQ0xfREVDTEFSRVNfVFlQRV9QLgoJKGxvb2t1cF90YWcpOiBMb29rIGZvciBJREVOVElGSUVSX0NMQVNTX1ZBTFVFcywganVzdCBhcyB3aXRoCglJREVOVElGSUVSX05BTUVTUEFDRV9WQUxVRXMuCgkqIHBhcnNlLnkgKGNvbXBvbmVudF9kZWNsKTogTW92ZSBjb2RlIHRvIC4uLgoJKiBzZW1hbnRpY3MuYyAoZmluaXNoX21lbWJlcl9jbGFzc190ZW1wbGF0ZSk6IE5ldyBmdW5jdGlvbi4KCURvbid0IHB1dCBtZW1iZXIgY2xhc3MgdGVtcGxhdGVzIG9uIHRoZSBsaXN0IG9mIGNvbXBvbmVudHMgZm9yIGEKCWNsYXNzLgoJKiBwYXJzZS5jOiBSZWdlbmVyYXRlZC4KCSogcHQuYyAoY2xhc3N0eXBlX21hbmdsZWRfbmFtZSk6IERvbid0IHRyeSBERUNMX0NPTlRFWFQgb24gdHlwZXMuCglJbiBmYWN0LCBkb24ndCB1c2UgREVDTF9DT05URVhUIGF0IGFsbCBoZXJlLgoKMTk5OC0wNS0yMCAgTWFydGluIHZvbiBMb2V3aXMgIDxsb2V3aXNAaW5mb3JtYXRpay5odS1iZXJsaW4uZGU+CgoJKiBkZWNsLmMgKHJlY29yZF91bmtub3duX3R5cGUpOiBOZXcgZnVuY3Rpb24uCgkoaW5pdF9kZWNsX3Byb2Nlc3NpbmcpOiBDYWxsIGl0IGZvciB0aGUgdW5rbm93biBhbmQgZ2xvYmFsIHR5cGUKCW5vZGVzLgoKMTk5OC0wNS0yMCAgTWFyayBNaXRjaGVsbCAgPG1taXRjaGVsbEB1c2EubmV0PgoKCSogZGVjbDIuYyAoZmluZF9yZXByZXNlbnRhdGl2ZV9tZW1iZXIpOiBOZXcgZnVuY3Rpb24uCgkoZmluaXNoX2Fub25fdW5pb24pOiBVc2UgaXQuCgoJKiBjcC10cmVlLmggKE1BSU5fTkFNRV9QKTogTmV3IG1hY3JvLgoJKERFQ0xfTUFJTl9QKTogTGlrd2lzZS4KCSogZGVjbC5jIChwdXNoZGVjbCk6IEF2b2lkIGNyYXNoaW5nIG9uIHJlZGVmaW5pdGlvbnMgb2YgYG1haW4nLgoJKGdyb2tmbmRlY2wpOiBVc2UgdGhlIG5ldyBtYWNyb3MuCgkoZ3Jva2RlY2xhcmF0b3IpOiBMaWtld2lzZS4KCShzdGFydF9mdW5jdGlvbik6IExpa2V3aXNlLgoJKHN0b3JlX3Bhcm1fZGVjbHMpOiBMaWtld2lzZS4KCShmaW5zaF9mdW5jdGlvbik6IExpa2V3aXNlLgoJKiBmcmllbmQuYyAoZG9fZnJpZW5kKTogTGlrZXdpc2UuCgkqIHR5cGVjay5jIChidWlsZF9mdW5jdGlvbl9jYWxsX3JlYWwpOiBMaWtld2lzZS4KCShidWlsZF91bmFyeV9vcCk6IExpa2V3aXNlLgoKV2VkIE1heSAyMCAwMjoxNjowMSAxOTk4ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBkZWNsMi5jIChzdGFydF9vYmplY3RzLCBmaW5pc2hfb2JqZWN0cywgZG9fZHRvcnMsCglkb19jdG9ycyk6IFNwbGl0IG91dCBmcm9tLi4uCgkoZmluaXNoX2ZpbGUpOiAuLi5oZXJlLgoKVHVlIE1heSAxOSAyMDozNjoyMyAxOTk4ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiB0cmVlLmMgKGlzX292ZXJsb2FkZWRfZm4pOiBEb24ndCBhYm9ydCBvbiBwbGFjZWhvbGRlcnMgZnJvbQoJcHVzaF9jbGFzc19kZWNscy4KClR1ZSBNYXkgMTkgMTU6MTY6MjIgMTk5OCAgQnJlbmRhbiBLZWhvZSAgPGJyZW5kYW5AY3lnbnVzLmNvbT4KCgkqIGNsYXNzLmMgKGlzX2VtcHR5X2NsYXNzKTogUmV0dXJuIDAgaWYgVFlQRSBpcyBhbiBlcnJvcl9tYXJrX25vZGUuCgoJKiBlcnJvci5jIChkdW1wX2V4cHIpOiBIYW5kbGUgYW4gQVJST1dfRVhQUi4KClR1ZSBNYXkgMTkgMTU6MTM6MzkgMTk5OCAgTWFyayBNaXRjaGVsbCAgPG1taXRjaGVsbEB1c2EubmV0PgoKCSogZGVjbC5jIChzYXZlYWJsZV9vYnN0YWNrKTogRGVjbGFyZS4KCShwdXNoZGVjbCk6IENvcHkgVFlQRV9ERUNMcyB0byB0aGUgc2FtZSBvYnN0YWNrIGFzIHRoZSB0eXBlIHRoZXkKCWRlY2xhcmUsIGlmIG5lY2Vzc2FyeS4KClR1ZSBNYXkgMTkgMTQ6NTA6MjcgMTk5OCAgTWFyayBNaXRjaGVsbCAgPG1taXRjaGVsbEB1c2EubmV0PgoKCSogY2FsbC5jIChjb21wYXJlX3F1YWwpOiBSZW1vdmUuCgkoaXNfc3Vic2VxKTogVHdlYWsuCgkoaXNfcHJvcGVybHlfZGVyaXZlZF9mcm9tKTogTmV3IGZ1bmN0aW9uLgoJKG1heWJlX2hhbmRsZV9yZWZfYmluZCk6IExpa2V3aXNlLgoJKG1heWJlX2hhbmRsZV9pbXBsaWNpdF9vYmplY3QpOiBMaWtld2lzZS4KCShjb21wYXJlX2ljcyk6IE1vZGlmeSBzdWJzdGFudGlhbGx5IHRvIGJyaW5nIGludG8gY29uZm9ybWFuY2Ugd2l0aAoJdGhlIHN0YW5kYXJkLgoJKiBjcC10cmVlLmggKFRZUEVfUFRSTUVNRlVOQ19PQkpFQ1RfVFlQRSk6IE5ldyBtYWNyby4KCShjb21wX2N2X3F1YWxpZmljYXRpb24pOiBEZWNsYXJlLgoJKGNvbXBfY3ZfcXVhbF9zaWduYXR1cmUpOiBMaWtld2lzZS4KCSogdHlwZWNrLmMgKGNvbXBfY3ZfcXVhbGlmaWNhdGlvbik6IExpa2V3aXNlLgoJKGNvbXBfY3ZfcXVhbF9zaWduYXR1cmUpOiBMaWtld2lzZS4KClR1ZSBNYXkgMTkgMTA6MDU6MDIgMTk5OCAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogTWFrZWZpbGUuaW4gKHBhcnNlLm8pOiBEZXBlbmQgb24gdG9wbGV2LmguCgoJKiBjbGFzcy5jICh0eXBlY29kZV9wKTogUmVtb3ZlIHByb3RvdHlwZSBhbmQgZGVmaW5pdGlvbi4KCgkqIGNwLXRyZWUuaCAoY3VycmVudGx5X29wZW5fY2xhc3MsIGlzX2VtcHR5X2NsYXNzLCBtZW1iZXJfcCk6CglBZGQgcHJvdG90eXBlLgoKCSogZGVjbC5jIChwdXNoX292ZXJsb2FkZWRfZGVjbF90b3BfbGV2ZWwpOiBSZW1vdmUgcHJvdG90eXBlIGFuZAoJZGVmaW5pdGlvbi4KCgkqIGVycmZuLmMgKGNwX2Vycm9yKTogQ2FzdCBmdW5jdGlvbiBwb2ludGVyIGBlcnJvcicgdG8gKGVycm9yZm4gKikKCWluIGNhbGwgdG8gYGNwX3RoaW5nJy4KCShjcF93YXJuaW5nKTogTGlrZXdpc2UgZm9yIGZ1bmN0aW9uIHBvaW50ZXIgYHdhcm5pbmcnLgoKCSogZXhjZXB0LmMgKGRvX2Z1bmN0aW9uX2NhbGwpOiBSZW1vdmUgcHJvdG90eXBlIGFuZCBkZWZpbml0aW9uLgoJKGNhbGxfZWhfaW5mbyk6IFdyYXAgdmFyaWFibGUgYHQxJyBpbiBtYWNybyBORVdfRUhfTU9ERUwuCgoJKiBtZXRob2QuYyAoaXNfamF2YV90eXBlKTogQWRkIHByb3RvdHlwZSBhbmQgbWFrZSBpdCBzdGF0aWMuCgoJKiBwYXJzZS55OiBJbmNsdWRlIHRvcGxldi5oLgoKCSogcHQuYyAodHlwZV91bmlmaWNhdGlvbik6IFJlbW92ZSB1bnVzZWQgdmFyaWFibGUgYGFyZycuCgkoaW5zdGFudGlhdGVfZGVjbCk6IExpa2V3aXNlIGZvciBgc2F2ZV90aScuCgoJKiB0cmVlLmMgKHByb3BhZ2F0ZV9iaW5mb19vZmZzZXRzKTogTGlrZXdpc2UgZm9yIGBiYXNlX2JpbmZvcycuCgpUdWUgTWF5IDE5IDAyOjQzOjI1IDE5OTggIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIGluaXQuYyAoYnVpbGRfbWVtYmVyX2NhbGwpOiBIYW5kbGUgdGVtcGxhdGVfaWRzLgoJKiBwYXJzZS55IChwcmltYXJ5KTogQWRkIGdsb2JhbF9zY29wZSB0ZW1wbGF0ZV9pZC4KCk1vbiBNYXkgMTggMjM6MjI6NTIgMTk5OCAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogZGVjbDIuYyAoZ2V0X3NlbnRyeSk6IFVzZSBlbmRfdGVtcG9yYXJ5X2FsbG9jYXRpb24uCglEb24ndCBkZWNsYXJlIHBlcm1hbmVudF9vYnN0YWNrLgoKTW9uIE1heSAxOCAxMjoyODo0NCAxOTk4ICBNYXJrIE1pdGNoZWxsICA8bW1pdGNoZWxsQHVzYS5uZXQ+CgoJKiBwYXJzZS55ICguZmluaXNoX25ld19wbGFjZW1lbnQpOiBOZXcgbm9uLXRlcm1pbmFsLgoJKHVuYXJ5X2V4cHIsIG5ld190eXBlX2lkKTogVXNlIGl0LgoJKiBwYXJzZS5jOiBSZWdlbmVyYXRlZC4KCk1vbiBNYXkgMTggMTI6MjA6MjcgMTk5OCAgQnJlbmRhbiBLZWhvZSAgPGJyZW5kYW5AY3lnbnVzLmNvbT4KCgkqIHB0LmMgKHJlZGVjbGFyZV9jbGFzc190ZW1wbGF0ZSk6IFNheSB3aGVyZSB0aGUgb3JpZ2luYWwgZGVmaW5pdGlvbgoJb2YgdGhlIHRlbXBsYXRlLXBhcmFtZXRlcidzIGRlZmF1bHQgYXJndW1lbnQgYXBwZWFyZWQuCgpNb24gTWF5IDE4IDAzOjAwOjU3IDE5OTggIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIGNhbGwuYyAoYnVpbGRfb3Zlcl9jYWxsKTogVHdlYWsgZW1wdHkgY2xhc3MgaGFuZGxpbmcuCgoJKiBkZWNsLmMgKG1ha2VfdHlwZW5hbWVfdHlwZSk6IFVzZSBjdXJyZW50bHlfb3Blbl9jbGFzcy4KCgkqIGNsYXNzLmMgKGluc3RhbnRpYXRlX3R5cGUpOiBEb24ndCBhYm9ydCBvbiBUUkVFX05PTkxPQ0FMX0ZMQUcuCgpNb24gTWF5IDE4IDAxOjQzOjAxIDE5OTggIE1hcnRpbiB2LiBMb2V3aXMgIDxsb2V3aXNAaW5mb3JtYXRpay5odS1iZXJsaW4uZGU+CgoJKiBkZWNsLmMgKGxvb2t1cF9uYW1lX3JlYWwpOiBEb24ndCBsb29rIGF0IElERU5USUZJRVJfTE9DQUxfVkFMVUUKCWZvciBhIHR5cGUgdW5sZXNzIGl0IGlzIG9uZS4KCgkqIGNsYXNzLmMgKGZpbmlzaF9zdHJ1Y3RfMSk6IFVzZSBPVkxfQ1VSUkVOVCBpbiBlcnJvciBtZXNzYWdlLgoKTW9uIE1heSAxOCAwMToyNDowOCAxOTk4ICBKZWZmcmV5IEEgTGF3ICAobGF3QGN5Z251cy5jb20pCgoJKiBNYWtlZmlsZS5pbiAocHJvZ3JhbV90cmFuc2Zvcm1fbmFtZSwgb2JqZGlyKTogRGVmaW5lLgoKCSogTWFrZWZpbGUuaW4gKEJJU09OKTogVXNlIGJpc29uIGZyb20gdGhlIGJ1aWxkIHRyZWUgaWYgaXQgZXhpc3RzLgoJKEZMRVgpOiBMaWtld2lzZS4KClN1biBNYXkgMTcgMTQ6NTI6MDggMTk5OCAgTWFydGluIHYuIExvZXdpcyAgPGxvZXdpc0BpbmZvcm1hdGlrLmh1LWJlcmxpbi5kZT4KCgkqIHR5cGVjay5jICh0eXBlX3Vua25vd25fcCk6IFJldHVybiB0cnVlIGZvciBUUkVFX0xJU1QgYWxzby4KCgkqIGNhbGwuYyAoYnVpbGRfbWV0aG9kX2NhbGwpOiBVc2UgVFlQRV9NQUlOX1ZBUklBTlQgb24gdHlwZWRlZnMuCgpTdW4gTWF5IDE3IDE0OjUxOjQxIDE5OTggIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIGNhbGwuYyAoYnVpbGRfc2NvcGVkX21ldGhvZF9jYWxsKTogTGlrZXdpc2UuCgpTdW4gTWF5IDE3IDEzOjUzOjQ4IDE5OTggIE1hcmsgTWl0Y2hlbGwgIDxtbWl0Y2hlbGxAdXNhLm5ldD4KCgkqIGluaXQuYyAoYnVpbGRfbmV3XzEpOiBDYWxsIHN1c3BlbmRfbW9tZW50YXJ5IGFyb3VuZCB0aGUgY3JlYXRpb24KCW9mIHZhbHVlcyB0aGF0IG11c3QgYmUgc2F2ZWQgZm9yIGV4Y2VwdGlvbiBoYW5kbGluZy4KCSogcGFyc2UueSAoLmJ1aWxkX25ld19wbGFjZW1lbnQpOiBOZXcgbm9uLXRlcm1pbmFsLgoJKHVuYXJ5X2V4cHIsIG5ld19wbGFjZW1lbnQpOiBVc2UgaXQuCgkqIHBhcnNlLmM6IFJlZ2VuZXJhdGVkLgoKU3VuIE1heSAxNyAxMjozMjowOCAxOTk4ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBkZWNsLmMgKGR1cGxpY2F0ZV9kZWNscyk6IFVzZSBDQU5PTklDQUxfVFlQRV9WQVJJQU5UIHRvIGNvbXBhcmUKCW9sZCBhbmQgbmV3IHR5cGVzLgoKCSogcHQuYyAodHN1YnN0KTogTWFrZSBzdXJlIHRoYXQgQklORk9fVFlQRSBvZiBuZXcgYmluZm9zIGlzIHRoZQoJY2Fub25pY2FsIHR5cGUuCgoJKiBjYWxsLmMgKGJ1aWxkX292ZXJfY2FsbCk6IERvbid0IHVzZSBJU19TSUdOQVRVUkUgb24gYSBuYW1lc3BhY2UuCgpGcmkgTWF5IDE1IDIwOjI4OjAwIDE5OTggIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIGRlY2wuYyAoc3RhcnRfZGVjbCk6IFJldmVydCBwcm9ibGVtIGNoYW5nZS4KCgkqIE1ha2VmaWxlLmluIChDT05GTElDVFMpOiBGaXguCgpGcmkgTWF5IDE1IDE1OjM0OjAyIDE5OTggIEJlbmphbWluIEtvc25payAgPGJrb3pAcmhpbm8uY3lnbnVzLmNvbT4KCgkqIGRlY2wuYyAoZHVwbGljYXRlX2RlY2xzKTogQ2xlYW4gdXAsIGFkZCBERUNMX0RBVEFfQVJFQSBiaXRzLgoKRnJpIE1heSAxNSAwMDo0NjowNSAxOTk4ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBjbGFzcy5jIChmaW5pc2hfc3RydWN0XzEpOiBVc2UgQklORk9fU0laRS4KCgkqIGRlY2wuYyAoc3RhcnRfZGVjbCk6IFVzZSAndGVtJy4KClRodSBNYXkgMTQgMTY6MzA6NDcgMTk5OCAgQW5kcmV3IE1hY0xlb2QgIDxhbWFjbGVvZEBjeWdudXMuY29tPgoKCSogZXhjZXB0aW9uLmNjOiBJbmNsdWRlIGVoLWNvbW1vbi5oLgoJKHN0cnVjdCBjcF9laF9pbmZvKTogQWRkIGVoX2luZm8gc3RydWN0IHdpdGggTkVXX0VIX01PREVMLgoJKF9fY3BsdXNfdHlwZV9tYXRjaGVyKTogRmlyc3Qgc3RhYiBhdCBuZXcgQysrIHJ1bnRpbWUgdHlwZSBtYXRjaGVyLgoJKF9fY3BfcHVzaF9leGNlcHRpb24pOiBJbml0aWFsaXplIGVoX2luZm8gc3RydWN0IGFzIHdlbGwuCgkqIGV4Y2VwdC5jOiBSZW1vdmUgbG9jYWwgc3RydWN0cyBhbmQgaW5jbHVkZSBlaC1jb21tb24uaC4KCShpbml0X2V4Y2VwdGlvbl9wcm9jZXNzaW5nKTogU2V0IGxhbmd1YWdlIGFuZCB2ZXJzaW9uIGNvZGVzLgoJKGNhbGxfZWhfaW5mbyk6IEFkZCBwcmVzZW5jZSBvZiBlaF9pbmZvIHRvIHJ1bnRpbWUgZGVzY3JpcHRpb24gb2YKCXN0cnVjdCBjcF9laF9pbmZvLgoJKGV4cGFuZF9lbmRfZWhfc3BlYyk6IENhbGwgc3RhcnRfY2F0Y2hfYmxvY2soKSBhbmQgZW5kX2NhdGNoX2Jsb2NrKCkuCgkqIHNlbWFudGljcy5jIChmaW5pc2hfdHJ5X2Jsb2NrKTogQ2FsbCBzdGFydF9jYXRjaF9ibG9jaygpIGFuZAoJZW5kX2NhdGNoX2Jsb2NrKCkuCgkqIHBhcnNlLnkgKGZ1bmN0aW9uX3RyeV9ibG9jayk6IENhbGwgc3RhcnRfY2F0Y2hfYmxvY2soKSBhbmQKCWVuZF9jYXRjaF9ibG9jaygpLgoKVGh1IE1heSAxNCAxMjoyNzozNCAxOTk4ICBCcmVuZGFuIEtlaG9lICA8YnJlbmRhbkBjeWdudXMuY29tPgoKCSogdHlwZWNrLmMgKG9yaWdpbmFsX3R5cGUpOiBOZXcgZnVuY3Rpb24uCgkoY29tbW9uX3R5cGUpOiBVc2UgaXQgdG8gZ2V0IHRoZSBERUNMX09SSUdJTkFMX1RZUEUgZm9yIFQxIGFuZCBUMiwKCXRvIHNlZSBpZiB0aGV5J3JlIGFjdHVhbGx5IHRoZSBzYW1lLgoJKiBjcC10cmVlLmggKG9yaWdpbmFsX3R5cGUpOiBEZWNsYXJlLgoKV2VkIE1heSAxMyAxMjo1NDozMCAxOTk4ICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBNYWtlZmlsZS5pbiAobGV4Lm8pOiBEZXBlbmQgb24gb3V0cHV0LmguCgoJKiBjYWxsLmMgKGFkZF9mdW5jdGlvbl9jYW5kaWRhdGUpOiBSZW1vdmUgdW51c2VkIHZhcmlhYmxlIGBjYW5kJy4KCShhZGRfY29udl9jYW5kaWRhdGUpOiBMaWtld2lzZS4KCShidWlsZF9idWlsdGluX2NhbmRpZGF0ZSk6IExpa2V3aXNlLgoKCSogY3AtdHJlZS5oOiBBZGQgcHJvdG90eXBlIGZvciBgdHlwZXNfb3ZlcmxhcF9wJy4KCgkqIGRlY2wuYyAoc2lnbmFsX2NhdGNoKTogTWFyayBwYXJhbWV0ZXIgYHNpZycgd2l0aCBBVFRSSUJVVEVfVU5VU0VELgoKCSogZGVjbDIuYyAobWVyZ2VfZnVuY3Rpb25zKTogUmVtb3ZlIHVudXNlZCB2YXJpYWJsZXMgYHRtcCcgYW5kCglgdGVtcG4nLgoKCSogZXJyb3IuYyAoZXhwcl9hc19zdHJpbmcpOiBNYXJrIHBhcmFtZXRlciBgdicgd2l0aCBBVFRSSUJVVEVfVU5VU0VELgoJKGNvZGVfYXNfc3RyaW5nKTogTGlrZXdpc2UuCgkobGFuZ3VhZ2VfYXNfc3RyaW5nKTogTGlrZXdpc2UuCgkocGFybV9hc19zdHJpbmcpOiBMaWtld2lzZS4KCShvcF9hc19zdHJpbmcpOiBMaWtld2lzZS4KCShhc3NvcF9hc19zdHJpbmcpOiBMaWtld2lzZS4KCShjdl9hc19zdHJpbmcpOiBMaWtld2lzZS4KCgkqIGxleC5jOiBJbmNsdWRlIG91dHB1dC5oLgoKCSogcHQuYyAodHlwZV91bmlmaWNhdGlvbik6IENhc3QgZmlyc3QgYXJndW1lbnQgb2YgYGJ6ZXJvJyB0byBhIGNoYXIqLgoKCSogc2VhcmNoLmMgKGRmc19ub19vdmVybGFwX3lldCk6IE1hcmsgcGFyYW1ldGVyIGB0JyB3aXRoCglBVFRSSUJVVEVfVU5VU0VELgoKCSogdGluZm8uY2MgKF9fY2xhc3NfdHlwZV9pbmZvOjpkY2FzdCk6IENoYW5nZSB0aGUgdHlwZSBvZiB2YXJpYWJsZQoJYGknIGZyb20gaW50IHRvIHNpemVfdC4KCgkqIHR5cGVjay5jIChsYW5ndWFnZV9sdmFsdWVfdmFsaWQpOiBNYXJrIHBhcmFtZXRlciBgZXhwJyB3aXRoCglBVFRSSUJVVEVfVU5VU0VELgoKVHVlIE1heSAxMiAyMTozNzo0OSAxOTk4ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBlcnJvci5jIChkdW1wX3NpbXBsZV9kZWNsKTogVXNlIERFQ0xfQ0xBU1NfU0NPUEVfUCBhbmQvb3IKCURFQ0xfTkFNRVNQQUNFX1NDT1BFX1AuCgkobGFuZ19kZWNsX25hbWUpOiBMaWtld2lzZS4KCSogcHQuYyAodHN1YnN0X2ZyaWVuZF9mdW5jdGlvbiwgdHN1YnN0KTogTGlrZXdpc2UuCgkqIGRlY2wuYyAocHVzaGRlY2wsIHJlZGVjbGFyYXRpb25fZXJyb3JfbWVzc2FnZSwgc3RhcnRfZGVjbCwKCWNwX2ZpbmlzaF9kZWNsLCBzdGFydF9mdW5jdGlvbik6IExpa2V3aXNlLgoJKiBjbGFzcy5jIChmaW5pc2hfc3RydWN0XzEpOiBMaWtld2lzZS4KCSogY2FsbC5jIChidWlsZF9vdmVyX2NhbGwpOiBMaWtld2lzZS4KCShjb21wYXJlX2ljcyk6IFVzZSBERVJJVkVEX0ZST01fUC4KClR1ZSBNYXkgMTIgMDc6MjQ6MTggMTk5OCAgTWFyayBNaXRjaGVsbCAgPG1taXRjaGVsbEB1c2EubmV0PgoKCSogY3AtdHJlZS5oIChDQU5PTklDQUxfVFlQRV9WQVJJQU5UKTogTmV3IG1hY3JvLgoJKiBtZXRob2QuYyAoYnVpbGRfbWFuZ2xlZF9uYW1lKTogVXNlIGl0LgoJKGJ1aWxkX2RlY2xfb3ZlcmxvYWRfcmVhbCk6IExpa2V3aXNlLgoKCSogZXJyb3IuYyAoZHVtcF9zaW1wbGVfZGVjbCk6IE5ldyBmdW5jdGlvbiwgYnJva2VuIG91dCBmcm9tIC4uLgoJKGR1bXBfZGVjbCk6IFVzZSBpdC4KCk1vbiBNYXkgMTEgMTE6Mzg6MDcgMTk5OCAgTWFyayBNaXRjaGVsbCAgPG1taXRjaGVsbEB1c2EubmV0PgoKCSogcHRyZWUuYyAobGFuZ19wcmludF94bm9kZSk6IEFkZCBtaXNzaW5nIGBicmVhaycuCgoJKiBwdC5jICh0c3Vic3QpOiBSZW1vdmUgZHVwbGljYXRlIGNoZWNrIGZvciBJREVOVElGSUVSX05PREUuCgoJKiBjYWxsLmMgKGFkZF90ZW1wbGF0ZV9jYW5kaWRhdGUpOiBBZGp1c3QgZm9yIGNoYW5nZXMgdG8KCWZuX3R5cGVfdW5pZmljYXRpb24uCgkoYWRkX3RlbXBsYXRlX2NhbmRpZGF0ZV9yZWFsKTogTGlrZXdpc2UuCgkoYWRkX3RlbXBsYXRlX2NvbnZfY2FuZGlkYXRlKTogTGlrZXdpc2UuCgkoYnVpbGRfdXNlcl90eXBlX2NvbnZlcnNpb25fMSk6IExpa2V3aXNlLgoJKGJ1aWxkX25ld19mdW5jdGlvbl9jYWxsKTogTGlrZXdpc2UuCgkoYnVpbGRfb2JqZWN0X2NhbGwpOiBMaWtld2lzZS4KCShidWlsZF9uZXdfb3ApOiBMaWtld2lzZS4KCShidWlsZF9uZXdfbWV0aG9kX2NhbGwpOiBMaWtld2lzZS4KCSogY2xhc3MuYyAoaW5zdGFudGlhdGVfdHlwZSk6IExpa2V3aXNlLgoJKiBjcC10cmVlLmggKHVuaWZpY2F0aW9uX2tpbmRfdCk6IE5ldyB0eXBlLgoJKGZuX3R5cGVfdW5pZmljYXRpb24pOiBBZGp1c3QgcHJvdG90eXBlLgoJKHR5cGVfdW5pZmljYWl0b24pOiBMaWtld2lzZS4KCSogcHQuYyAoVU5JRllfQUxMT1dfTk9ORSk6IE5ldyBtYWNyby4KCShVTklGWV9BTExPV19NT1JFX0NWX1FVQUwpOiBMaWtld2lzZS4KCShVTklGWV9BTExPV19MRVNTX0NWX1FVQUwpOiBMaWtld2lzZS4KCShVTklGWV9BTExPV19ERVJJVkVEKTogTGlrZXdpc2UuCgkodW5pZnkpOiBDaGFuZ2UgcHJvdG90eXBlLgoJKG1heWJlX2FkanVzdF90eXBlc19mb3JfZGVkdWN0aW9uKTogTmV3IGZ1bmN0aW9uLgoJKGNoZWNrX2N2X3F1YWxzX2Zvcl91bmlmeSk6IExpa2V3aXNlLgoJKGRldGVybWluZV9zcGVjaWFsaXphdGlvbik6IEFkanVzdC4KCShmbl90eXBlX3VuaWZpY2F0aW9uKTogTGlrZXdpc2UuCgkodHlwZV91bmlmaWNhdGlvbik6IExpa2V3aXNlLgoJKHR5cGVfdW5pZmljYXRpb25fcmVhbCk6IExpa2V3aXNlLiAgVXNlCgltYXliZV9hZGp1c3RfdHlwZXNfZm9yX2RlZHVjdGlvbi4gIEZpeCBtaXNoYW5kbGluZyBvZgoJYmFjay11bmlmaWNhdGlvbiBvZiB0ZW1wbGF0ZSBmdW5jdGlvbnMgcGFzc2VkIGFzIGFyZ3VtZW50cy4gIFBhc3MKCWFwcHJvcHJpYXRlIGNvbWJpbmF0aW9uIG9mIFVOSUZZX0FMTE9XXyogdG8gdW5pZnkuCgkodW5pZnkpOiBSZW1vdmUgdW51c2VkIE5UUEFSTVMgcGFyYW1ldGVyLiAgVXNlCgljaGVja19jdl9xdWFsc19mb3JfdW5pZnkuICBSZW1vdmUgYm9ndXMgY29kZSB0aGF0IGFsbG93ZWQKCXRvby1nZW5lcm91cyB1bmlmaWNhdGlvbiBpbiBvcmRlciB0byBhZGhlcmUgbW9yZSBjbG9zZWx5IHRvIHN0YW5kYXJkLgoJKGdldF9iaW5kaW5nc19yZWFsKTogQWRqdXN0LgoJKGdldF9jbGFzc19iaW5kaW5ncyk6IExpa2V3aXNlLgoKCSogbWV0aG9kLmMgKGJ1aWxkX292ZXJsb2FkX2lkZW50aWZpZXIpOiBPbmx5IHVzZSB0aGUgaW5uZXJtb3N0Cgl0ZW1wbGF0ZSBhcmd1bWVudHMgd2hlbiBtYW5nbGluZy4KCSogcHQuYyAodHN1YnN0X3RlbXBsYXRlX2FyZ3VtZW50X3ZlY3Rvcik6IE5ldyBmdW5jdGlvbi4KCShjb21wbGV0ZV90ZW1wbGF0ZV9hcmdzKTogRGVhbCB3aXRoIHRoZSBzaXR1YXRpb24gd2hlcmUgdGhlCglleHRyYV9hcmdzIGNvbnRhaW4gbW9yZSB0aGFuIG9uZSBsZXZlbCBvZiBhcmd1bWVudHMuCgkobG9va3VwX3RlbXBsYXRlX2NsYXNzKTogRGVhbCB3aXRoIG1lbWJlciB0ZW1wbGF0ZSBjbGFzc2VzLCB3aGljaAoJbWF5IGhhdmUgbW9yZSB0aGFuIG9uZSBsZXZlbCBvZiBhcmd1bWVudHMuCgkodHN1YnN0KTogRG9uJ3QgdHNidXN0IGludG8gdGhlIFRSRUVfVFlQRSBvZiBhbiBJREVOVElGSUVSX05PREUuCglJbXByb3ZlIGhhbmRsaW5nIG9mIG1lbWJlciB0ZW1wbGF0ZSBjbGFzc2VzLiAgVXNlCglERUNMX1BSSU1BUllfVEVNUExBVEUgaW5zdGVhZCBvZiBpbmxpbmUgZXhwYW5zaW9uLiAgVXNlCgl0c3Vic3RfdGVtcGxhdGVfYXJndW1lbnRfdmVjdG9yIHdoZXJlIGFwcHJvcHJpYXRlLgoJKHJlZ2VuZXJhdGVfZGVjbF9mcm9tX3RlbXBsYXRlKTogQnJlYWsgb3V0IGZyb20gLi4uCgkoaW5zdGFudGlhdGVfZGVjbCk6IEhlcmUuCgoJKiBsZXguYyAoeXlwcmludCk6IFJlbW92ZSBUWVBFTkFNRV9FTExJUFNJUy4KCSogcGFyc2UuaDogUmVnZW5lcmF0ZWQuCgkqIHBhcnNlLmM6IFJlYWxseSByZWdlbmVyYXRlZC4KCgkqIGNwLXRyZWUuaCAoZmluaXNoX3VuYXJ5X29wX2V4cHIpOiBOZXcgZnVuY3Rpb24uCgkoZmluaXNoX2lkX2V4cHIpOiBMaWtld2lzZS4KCShiZWdpbl9uZXdfcGxhY2VtZW50KTogTGlrZXdpc2UuCgkoZmluaXNoX25ld19wbGFjZW1lbnQpOiBMaWtld2lzZS4KCShmaW5pc2hfZGVjbGFyYXRvcik6IExpa2V3aXNlLgoJKGZpbmlzaF90cmFuc2xhdGlvbl91bml0KTogTGlrZXdpc2UuCgkoZmluaXNoX3Bhcm1saXN0KTogTGlrZXdpc2UuCgkoYmVnaW5fY2xhc3NfZGVmaW5pdGlvbik6IExpa2V3aXNlLgoJKGZpbmlzaF9jbGFzc19kZWZpbml0aW9uKTogTGlrZXdpc2UuCgkoZmluaXNoX2RlZmF1bHRfYXJncyk6IExpa2V3aXNlLgoJKGZpbmlzaF9pbmxpbmVfZGVmaW5pdGlvbnMpOiBMaWtld2lzZS4KCSogcGFyc2UueSAoR0NDX0FTTV9LRVlXT1JEKTogUmVtb3ZlLgoJKFRZUEVOQU1FX0VMTElQU0lTKTogTGlrZXdpc2UuCgkqIHBhcnNlLmM6IFJlZ2VuZXJhdGVkLgoJVXNlIG5ldyBmdW5jdGlvbnMgaW4gc2VtYW50aWNzLmMgaW4gdGhlIGFjdGlvbnMgZm9yIG1hbnkgcnVsZXMuCgkqIGd4eC5ncGVyZiAoR0NDX0FTTV9LRVlXT1JEKTogSnVzdCB1c2UgQVNNX0tFWVdPUkQuCgkqIGhhc2guaDogUmVnZW5lcmF0ZWQuCgkqIHNlbWFudGljcy5jIChmaW5pc2hfZXhwcl9zdG10KTogQWxsb3cgTlVMTCBleHByLgoJKGZpbmlzaF91bmFyeV9vcF9leHByKTogTmV3IGZ1bmN0aW9uLCBjb250YWluaW5nCgljb2RlIHByZXZpb3VzbHkgaW4gcGFyc2UueS4KCShmaW5pc2hfaWRfZXhwcik6IExpa2V3aXNlLgoJKGJlZ2luX25ld19wbGFjZW1lbnQpOiBMaWtld2lzZS4KCShmaW5pc2hfbmV3X3BsYWNlbWVudCk6IExpa2V3aXNlLgoJKGZpbmlzaF9kZWNsYXJhdG9yKTogTGlrZXdpc2UuCgkoZmluaXNoX3RyYW5zbGF0aW9uX3VuaXQpOiBMaWtld2lzZS4KCShmaW5pc2hfcGFybWxpc3QpOiBMaWtld2lzZS4KCShiZWdpbl9jbGFzc19kZWZpbml0aW9uKTogTGlrZXdpc2UuCgkoZmluaXNoX2NsYXNzX2RlZmluaXRpb24pOiBMaWtld2lzZS4KCShmaW5pc2hfZGVmYXVsdF9hcmdzKTogTGlrZXdpc2UuCgkoZmluaXNoX2lubGluZV9kZWZpbml0aW9ucyk6IExpa2V3aXNlLgoKU3VuIE1heSAxMCAyMzo0MzoxMyAxOTk4ICBNYXJrIE1pdGNoZWxsICA8bW1pdGNoZWxsQHVzYS5uZXQ+CgoJKiB0eXBlY2suYyAoYnVpbGRfY19jYXN0KTogRG9uJ3QgZGVjYXkgYXJyYXlzIGFuZCBmdW5jdGlvbnMgdG8KCXBvaW50ZXIgdHlwZSB3aGVuIGNvbnZlcnRpbmcgdG8gYSBjbGFzcyB0eXBlLgoKU3VuIE1heSAxMCAyMjo1Mzo1NiAxOTk4ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBjcC10cmVlLmggKERFQ0xfTkFNRVNQQUNFX1NDT1BFX1ApOiBOZXcgbWFjcm8uCgkoREVDTF9DTEFTU19TQ09QRV9QKTogTGlrZXdpc2UuCgpTdW4gTWF5IDEwIDIyOjQ4OjIyIDE5OTggIEguSi4gTHUgIChoamxAZ251Lm9yZykKCgkqIGNsYXNzLmMgKGZpbmlzaF9zdHJ1Y3RfMSk6IFVzZSBPVkxfQ1VSUkVOVCBvbiBUUkVFX1ZFQ19FTFQuCgkqIGRlY2wyLmMgKGNvbnN0cnVjdG9yX25hbWVfZnVsbCk6IExpa2V3aXNlLgoKU3VuIE1heSAxMCAyMjo0ODoxMiAxOTk4ICBNaWtlIFN0dW1wICA8bXJzQHdycy5jb20+CgoJKiB0cmVlLmMgKG1hcGNhcik6IEFkZCBPVkVSTE9BRCBzdXBwb3J0LgoKCSogaW5pdC5jIChyZXNvbHZlX29mZnNldF9yZWYpOiBXZSBtdXN0IHVzZSBiYXNldHlwZV9wYXRoIGJlZm9yZSB3ZQoJZGVzdHJveSBpdCB3aXRoIGEgY2FsbCB0byBjb252ZXJ0X3BvaW50ZXJfdG8uCgpTYXQgTWF5ICA5IDE0OjQ0OjM3IDE5OTggIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIGNsYXNzLmMgKGN1cnJlbnRseV9vcGVuX2NsYXNzKTogTmV3IGZuLgoJKiBkZWNsLmMgKGxvb2t1cF9uYW1lX3JlYWwpOiBVc2UgaXQuCgkqIHNlYXJjaC5jIChsb29rdXBfZmllbGQpOiBMaWtld2lzZS4KCkZyaSBNYXkgIDggMjM6MzI6NDIgMTk5OCAgTWFydGluIHZvbiBMb2V3aXMgIDxsb2V3aXNAaW5mb3JtYXRpay5odS1iZXJsaW4uZGU+CgoJKiBjcC10cmVlLmRlZiAoT1ZFUkxPQUQpOiBOZXcgbm9kZS4KCSogY3AtdHJlZS5oIChCSU5ESU5HX1RZUEUsIFNFVF9JREVOVElGSUVSX0dMT0JBTF9WQUxVRSwKCVNFVF9JREVOVElGSUVSX05BTUVTUEFDRV9WQUxVRSk6IERlZmluZS4KCShOQU1FU1BBQ0VfQklORElORyk6IFJlbW92ZS4KCShJREVOVElGSUVSX0dMT0JBTF9WQUxVRSwgSURFTlRJRklFUl9OQU1FU1BBQ0VfVkFMVUUpOiBVc2UKCW5hbWVzcGFjZV9iaW5kaW5nLgoJKE9WTF9GVU5DVElPTiwgT1ZMX0NIQUlOLCBPVkxfQ1VSUkVOVCwgT1ZMX05FWFQsIE9WTF9VU0VEKToKCURlZmluZS4KCSh0cmVlX292ZXJsb2FkKTogTmV3IHN0cnVjdC4KCShJREVOVElGSUVSX1RZUEVfVkFMVUUpOiBVc2UgaWRlbnRpZmllcl90eXBlX3ZhbHVlLgoJKFJFQUxfSURFTlRJRklFUl9UWVBFX1ZBTFVFKTogRGVmaW5lLgoJKElERU5USUZJRVJfSEFTX1RZUEVfVkFMVUUpOiBVc2UgSURFTlRJRklFUl9UWVBFX1ZBTFVFLgoJKGxhbmdfZGVjbF9mbGFncyk6IFJlbW92ZSBpbl9uYW1lc3BhY2UuCgkobGFuZ19kZWNsKTogUmVtb3ZlIGNoYWluLgoJKERFQ0xfQ0hBSU4sIERFQ0xfTkFNRVNQQUNFKTogUmVtb3ZlLgoJKGZsYWdfaG9ub3Jfc3RkKTogRGVjbGFyZSBleHRlcm4uCgkoaWRlbnRpZmllcl90eXBlX3ZhbHVlLCBwdXNoZGVjbF9uYW1lc3BhY2VfbGV2ZWwsIHB1c2hfdXNpbmdfZGVjbCwKCW5hbWVzcGFjZV9iaW5kaW5nLCBzZXRfbmFtZXNwYWNlX2JpbmRpbmcsCglsb29rdXBfZnVuY3Rpb25fbm9uY2xhc3MsIGNhdF9uYW1lc3BhY2VfbGV2ZWxzLAoJc2V0X2RlY2xfbmFtZXNwYWNlLCBsb29rdXBfYXJnX2RlcGVuZGVudCwgYmluZGluZ19pbml0LCBvdmxfY29ucywKCXNjcmF0Y2hfb3ZsX2NvbnMsIG92bF9tZW1iZXIsIGJ1aWxkX292ZXJsb2FkKTogRGVjbGFyZS4KCShkZWNsX2xpc3RfbGVuZ3RoLCBnZXRfbmFtZXNwYWNlX2lkLCBjdXJyZW50X25hbWVzcGFjZV9pZCwKCW92ZXJsb2FkZWRfZ2xvYmFsc19wKTogUmVtb3ZlLgoJKGxvb2t1cF91c2luZ19uYW1lc3BhY2UsIHF1YWxpZmllZF9sb29rdXBfdXNpbmdfbmFtZXNwYWNlKTogQ2hhbmdlCglyZXR1cm4gdHlwZS4KCShwdXNoX3NjcmF0Y2hfb2JzdGFjayk6IE5ldyBtYWNyby4KCSogY2FsbC5jIChhZGRfZnVuY3Rpb25fY2FuZGlkYXRlKTogU3BlY2lhbC1jYXNlIHR5cGUgb2YgT1ZFUkxPQUQgbm9kZS4KCShidWlsZF91c2VyX2NvbnZlcnNpb25zXzEpOiBJdGVyYXRlIHVzaW5nIE9WTF9ORVhUIGZvciBjdG9ycywKCWNvbnZzLCBmbnMuCgkoYnVpbGRfbmV3X2Z1bmN0aW9uX2NhbGwpOiBJdGVyYXRlIHVzaW5nIE9WTF9DSEFJTi4KCVByaW50IERFQ0xfTkFNRSBpbiB3aGVuIHJlcG9ydGluZyBhbWJpZ3VpdGllcy4KCShidWlsZF9vYmplY3RfY2FsbCk6IEl0ZXJhdGUgdXNpbmcgT1ZMX05FWFQgZm9yIGZucywgY29udnMuCgkoYnVpbGRfbmV3X29wKTogQ2FsbCBsb29rdXBfZnVuY3Rpb25fbm9uY2xhc3MuCglJdGVyYXRlIHVzaW5nIE9WTF9ORVhULgoJKGJ1aWxkX29wX2RlbGV0ZV9jYWxsKTogQ2hhbmdlIGRldGVjdGlvbiBvZiBtZW1iZXJzLgoJRG8gbm90IHdyYXAgVFJFRV9MSVNUIGFyb3VuZCBmaWVsZHMgYW5kIHNpbmdsZSBnbG9iYWwgZnVuY3Rpb25zLgoJKGJ1aWxkX292ZXJfY2FsbCk6IERvbid0IHB1c2ggYSBjbGFzcyBsZXZlbCBpZiB0aGUgY29udGV4dCBpcyBhCgluYW1lc3BhY2UuCgkoYnVpbGRfbmV3X21ldGhvZF9jYWxsKTogSXRlcmF0ZSB1c2luZyBPVkxfTkVYVC4KCSogY2xhc3MuYyAoYWRkX21ldGhvZCk6IENoYWluIG92ZXJsb2FkZWQgbWVtYmVycyB1c2luZwoJYnVpbGRfb3ZlcmxvYWQuICBSZW1vdmUgY29weWluZyBvZiBtZXRob2QuCgkoZ3Jvd19tZXRob2QpOiBXaGVuIGl0ZXJhdGluZyB0aHJvdWdoIHRoZSBvYnN0YWNrLCBleHBlY3QgT1ZFUkxPQUQKCW5vZGVzLiAgQ2hhaW4gb3ZlcmxvYWQgbWVtYmVycy4KCShmaW5pc2hfc3RydWN0X21ldGhvZHMpOiBDaGFpbiBvdmVybG9hZCBtZW1iZXJzLiAgVW5wYWNrIE9WRVJMT0FECglub2RlcyBpbiBjYWxsIHRvIGdldF9iYXNlbGlua3MuCgkoZHVwbGljYXRlX3RhZ19lcnJvcik6IEV4cGVjdCBPVkVSTE9BRCBub2RlcyB3aGVuIHVuY2hhaW5pbmcuCgkoZmluaXNoX3N0cnVjdF8xKTogSXRlcmF0ZSBvdmVyIGN0b3IgdXNpbmcgT1ZMX05FWFQuICBIYW5kbGUKCWZkZWNscyB0aGF0IGFyZSBPVkVSTE9BRCBub2Rlcy4KCSh2YWxpZGF0ZV9saHMpOiBOZXcgZnVuY3Rpb24uCgkoaW5zdGFudGlhdGVfdHlwZSk6IERvIG5vdCBjb3B5IE9WRVJMT0FEIG5vZGVzLiAgUmVtb3ZlIGRlYWQKCWNvZGUuICBVc2UgREVDTF9OQU1FIGluIGVycm9yIG1lc3NhZ2VzLiAgU3BsaXQgY29kZSBiZXR3ZWVuIGdsb2JhbAoJYW5kIG1lbWJlciBmdW5jdGlvbiBwcm9jZXNzaW5nLgoJKiBkZWNsLmMgKGdsb2JhbF90eXBlX25vZGUpOiBOZXcgc3RhdGljIHZhcmlhYmxlLgoJKGluX3N0ZCk6IE5ldyBnbG9iYWwuCgkoc3RydWN0IGJpbmRpbmdfbGV2ZWwpOiBOZXcgZmllbGQgdXNpbmdzLgoJKHJlc3VtZV9iaW5kaW5nX2xldmVsKTogQXNzZXJ0IHRoYXQgd2UgYXJlIG5vdCBpbiBhIGNsYXNzLgoJKHRvcGxldmVsX2JpbmRpbmdzX3ApOiBKdXN0IGNoZWNrIGZvciBuYW1lc3BhY2VfcCBvcgoJcHNldWRvX2dsb2JhbC4KCShyZXN1bWVfbGV2ZWwpOiBSZW1vdmUuCgkoZmluZF9iaW5kaW5nKTogTmV3IGZ1bmN0aW9uLgoJKGJpbmRpbmdfZm9yX25hbWUpOiBDYWxsIGl0LgoJKG5hbWVzcGFjZV9iaW5kaW5nLCBzZXRfbmFtZXNwYWNlX2JpbmRpbmcpOiBOZXcgZnVuY3Rpb25zLgoJKHB1c2hfbmFtZXNwYWNlKTogQXNzb2NpYXRlIGJpbmRpbmcgbGV2ZWwgd2l0aCBuZXcgbmFtZXNwYWNlLAoJcmVzdW1lX2JpbmRpbmdfbGV2ZWwgZm9yIGV4aXN0aW5nIG5hbWVzcGFjZS4gIFJlbW92ZSBvbGQgY29kZS4KCUZha2Ugc3RkIGJ5IGNvdW50aW5nLgoJKHN0b3JlX2JpbmRpbmdzKTogVXNlIFJFQUxfSURFTlRJRklFUl9UWVBFX1ZBTFVFLgoJKG1heWJlX3B1c2hfdG9fdG9wX2xldmVsKTogU2F2ZSBjdXJyZW50IG5hbWVzcGFjZS4KCShwb3BfZnJvbV90b3BfbGV2ZWwpOiBSZXN0b3JlIHNhdmVkIG5hbWVzcGFjZS4KCShwb3BfbmFtZXNwYWNlKTogQ2FsbCBzdXNwZW5kX2JpbmRpbmdfbGV2ZWwuICBSZW1vdmUgb2xkIGNvZGUuCgkoY2F0X25hbWVzcGFjZV9sZXZlbHMpOiBOZXcgZnVuY3Rpb24uCgkoc2V0X2lkZW50aWZpZXJfdHlwZV92YWx1ZV93aXRoX3Njb3BlKTogRm9yIG5hbWVzcGFjZSBiaW5kaW5ncywKCXNldCBCSU5ESU5HX1RZUEUsIGFuZCB1c2UgZ2xvYmFsX3R5cGVfbm9kZS4KCVVzZSBSRUFMX0lERU5USUZJRVJfVFlQRV9WQUxVRSBvdGhlcndpc2UuCgkoaWRlbnRpZmllcl90eXBlX3ZhbHVlKTogTmV3IGZ1bmN0aW9uLgoJKHB1c2h0YWcpOiBJZiBubyBjb250ZXh0LCB1c2UgY3VycmVudF9uYW1lc3BhY2UuCgkoZHVwbGljYXRlX2RlY2xzKTogRG9uJ3QgcHJvY2VzcyBERUNMX0NIQUlOLgoJKHB1c2hkZWNsKTogU2V0IERFQ0xfQ09OVEVYVCB0byBjdXJyZW50X25hbWVzcGFjZSwgaWYgaXQgaXMgbm90CglhbHJlYWR5IHNldC4gIE5ldmVyIHJlc2V0IGl0IHRvIE5VTExfVFJFRS4gIExvb2t1cCBnbG9iYWwgdmFyaWFibGVzCglpbiB0aGVpciBuYW1lc3BhY2UuICBQdXNoIG92ZXJsb2FkZWQgdGVtcGxhdGVzIGlmIHRoZXkgYXJlIG9uCgluYW1lc3BhY2UgbGV2ZWwuCgkocHVzaGRlY2xfbmFtZXNwYWNlX2xldmVsKTogTmV3IGZ1bmN0aW9uLgoJKHB1c2hkZWNsX3RvcF9sZXZlbCk6IEltcGxlbWVudCB1c2luZyBwdXNoZGVjbF9uYW1lc3BhY2VfbGV2ZWwuCgkocHVzaGRlY2xfdXNpbmdfZGVjbCk6IE5ldyBmdW5jdGlvbi4KCShvdmVybG9hZGVkX2dsb2JhbHNfcCk6IFJlbW92ZS4KCShwdXNoX292ZXJsb2FkZWRfZGVjbCk6IENyZWF0ZSBPVkVSTE9BRCBub2RlcywgYW5kIGl0ZXJhdGUgdGhyb3VnaAoJdGhlbS4gIFVzZSBuYW1lc3BhY2VfYmluZGluZyBhbmQgc2V0X25hbWVzcGFjZV92YWx1ZS4KCShyZWRlY2xhcmF0aW9uX2Vycm9yX21lc3NhZ2UpOiBDb21wbGFpbiBpZiB0aGUgZGVjbGFyYXRpb25zIGNvbWUKCWZyb20gZGlmZmVyZW50IG5hbWVzcGFjZXMuCgkobG9va3VwX3RhZyk6IE9uIG5hbWVzcGFjZSBsZXZlbCwgbG9vayBpbiB0aGUgQklORElOR19UWVBFLgoJKGxvb2t1cF9uYW1lc3BhY2VfbmFtZSk6IFBhc3MgdHJlZV9iaW5kaW5ncyBmcm9tIHN0YWNrLiAgUmVtb3ZlCglvbGQgY29kZS4KCShzZWxlY3RfZGVjbCk6IE5ldyBmdW5jdGlvbi4KCShsb29rdXBfbmFtZV9yZWFsKTogQ2FsbCBpdCBmb3IgcXVhbGlmaWVkIGFuZCB1bnF1YWxpZmllZCBsb29rdXAuCglQYXNzIHRyZWVfYmluZGluZ3MgZnJvbSB0aGUgc3RhY2suCglJZiBwcmVmZXJfdHlwZSBpcyAxLCBhbHNvIGFjY2VwdCBuYW1lc3BhY2VzLgoJKGxvb2t1cF9mdW5jdGlvbl9ub25jbGFzcyk6IE5ldyBmdW5jdGlvbi4KCShpbml0X2RlY2xfcHJvY2Vzc2luZyk6IFNldCB0aGUgYmluZGluZyBsZXZlbCBvZiB0aGUgZ2xvYmFsCgluYW1lc3BhY2UgdG8gZ2xvYmFsX2JpbmRpbmdfbGV2ZWwuCglCdWlsZCBhIHByb3BlciB0eXBlIGxpc3QgZm9yIF9fYnVpbHRpbl9hcHBseS4KCUluaXRpYWxpemUgc3RkX25vZGUgdG8gImZha2Ugc3RkIiBpZiBmbGFnX2hvbm9yX3N0ZCBpcyBzZXQuCglJbml0aWFsaXplIGdsb2JhbF90eXBlX25vZGUuCglBbGxvY2F0ZWQgYmFkX2FsbG9jIGluIG5hbWVzcGFjZSBzdGQgaWYgZmxhZ19ob25vcl9zdGQuCgkoZGVmaW5lX2Z1bmN0aW9uKTogU2V0IHRoZSBERUNMX0NPTlRFWFQgdG8gdGhlIGN1cnJlbnRfbmFtZXNwYWNlLgoJKHN0YXJ0X2RlY2wpOiBBIG5hbWVzcGFjZSBpcyBub3QgY29uc2lkZXJlZCBhcyBhIGNvbnRleHQgaGVyZS4gIElmCgl0aGUgREVDTF9DT05URVhUIGlzIGEgbmFtZXNwYWNlLCBwdXNoIHRoZSBkZWNsLgoJKGNwX2ZpbmlzaF9kZWNsKTogQ2hlY2sgZm9yIG5hbWVzcGFjZXMgdXNlZCBhcyBpbml0aWFsaXplcnMuCgkoZ3Jva2ZuZGVjbCk6IEFkZCBuYW1lc3BhY2UgcGFyYW1ldGVyLiAgUmVtb3ZlIHByb2Nlc3Npbmcgb2YKCURFQ0xfQ0hBSU4uCgkoZ3Jva3ZhcmRlY2wpOiBBZGQgbmFtZXNwYWNlIHBhcmFtZXRlci4KCShncm9rZGVjbGFyYXRvcik6IFByb2Nlc3MgU0NPUEVzIHRoYXQgYXJlIG5hbWVzcGFjZXMuICBGb3IKCW1hbmdsaW5nLCB0ZW1wb3JhcmlseSBzZXQgdGhlIERFQ0xfQ09OVEVYVCBvbiBhbm9ueW1vdXMgc3RydWN0cy4KCShzdGFydF9mdW5jdGlvbik6IENoZWNrIGZvciBjb250ZXh0cyB0aGF0IGFyZSBuYW1lc3BhY2VzLgoJU2V0IGNvbnRleHQgZm9yIGRlY2xhcmF0aW9ucyB0aGF0IGhhdmUgbm90IGJlZW4gcHVzaGVkLgoJKHN0b3JlX3Bhcm1fZGVjbHMpOiBDaGVjayBmb3IgOjptYWluIG9ubHkuCgkoZmluaXNoX2Z1bmN0aW9uKTogTGlrZXdpc2UuCgkoc3RhcnRfbWV0aG9kKTogQ2hlY2sgZm9yIGNvbnRleHRzIHRoYXQgYXJlIG5hbWVzcGFjZXMuCgkoc3RhcnRfbWV0aG9kKTogUmVtb3ZlIERFQ0xfQ0hBSU4gcHJvY2Vzc2luZy4KCSogZGVjbDIuYyAoZmxhZ19ob25vcl9zdGQpOiBEZWNsYXJlLgoJKGxhbmdfZGVjb2RlX29wdGlvbik6IFNldCBpdCBpZiAtZmhvbm9yLXN0ZCBvciAtZm5ldy1hYmkgaXMgZ2l2ZW4uCgkoZGVjbF9uYW1lc3BhY2VfbGlzdCk6IE5ldyBzdGF0aWMgZ2xvYmFsLgoJKGdyb2tfeF9jb21wb25lbnRzKTogSWdub3JlIG5hbWVzcGFjZXMgYXMgdHlwZSBjb250ZXh0cy4KCShjaGVja19jbGFzc2ZuKTogRXhwZWN0IE9WRVJMT0FEIG5vZGVzLgoJKGdyb2tmaWVsZCk6IFJlbW92ZSBERUNMX0NIQUlOIHByb2Nlc3NpbmcuCgkoZmluaXNoX2ZpbGUpOiBDYWxsIGNhdF9uYW1lc3BhY2VfbGV2ZWxzLgoJKG1lcmdlX2Z1bmN0aW9ucyk6IE5ldyBmdW5jdGlvbi4KCShhbWJpZ3VvdXNfZGVjbCk6IFJld3JpdGUuCgkobG9va3VwX3VzaW5nX25hbWVzcGFjZSk6IFByb2R1Y2UgdHJlZV9iaW5kaW5ncy4KCShxdWFsaWZpZWRfbG9va3VwX3VzaW5nX25hbWVzcGFjZSk6IExpa2V3aXNlLgoJKHNldF9kZWNsX25hbWVzcGFjZSwgZGVjbF9uYW1lc3BhY2UsIGN1cnJlbnRfZGVjbF9uYW1lc3BhY2UsCglwdXNoX2RlY2xfbmFtZXNwYWNlLCBwb3BfZGVjbF9uYW1lc3BhY2UpOiBOZXcgZnVuY3Rpb25zLgoJKGFyZ19sb29rdXApOiBOZXcgc3RydWN0LgoJKGFkZF9mdW5jdGlvbiwgYXJnX2Fzc29jX25hbWVzcGFjZSwgYXJnX2Fzc29jX2NsYXNzLAoJYXJnX2Fzc29jX3R5cGUsIGFyZ19hc3NvY19hcmdzLCBhcmdfYXNzb2MsIGxvb2t1cF9hcmdfZGVwZW5kZW50KToKCU5ldyBmdW5jdGlvbnMuCgkoZ2V0X25hbWVzcGFjZV9pZCwgY3VycmVudF9uYW1lc3BhY2VfaWQpOiBSZW1vdmUuCgkoZG9fdG9wbGV2ZWxfdXNpbmdfZGVjbCk6IFJld3JpdGUuCgkoZG9fY2xhc3NfdXNpbmdfZGVjbCk6IENvbXBsYWluIGFib3V0IG5hbWVzcGFjZSBxdWFsaWZpZXJzLgoJKGRvX3VzaW5nX2RpcmVjdGl2ZSk6IFNvcnJ5IGlmIG5vdCBvbiBuYW1lc3BhY2UgbGV2ZWwuICBDb21wbGFpbgoJYWJvdXQgdW5rbm93biBuYW1lc3BhY2VzLgoJKiBlcnJvci5jIChkdW1wX2FnZ3JfdHlwZSk6IENoZWNrIGZvciBuYW1lc3BhY2UgY29udGV4dHMuCgkqIGV4Y2VwdC5jIChpbml0X2V4Y2VwdGlvbl9wcm9jZXNzaW5nKTogUHVzaCB0ZXJtaW5hdGUgaW50byBzdGQuCgkqIGZyaWVuZC5jIChpc19mcmllbmQpOiBBIG5hbWVzcGFjZSBpcyBub3QgYSBjb250ZXh0LCBoZXJlLgoJKiBpbml0LmMgKGV4cGFuZF9tZW1iZXJfaW5pdCk6IFJlbW92ZSBERUNMX0NIQUlOIHByb2Nlc3NpbmcuCgkoYnVpbGRfb2Zmc2V0X3JlZik6IFByb2Nlc3MgT1ZFUkxPQUQgbm9kZXMuCgkqIGxhbmctc3BlY3MuaCAoX19IT05PUl9TVEQpOiBEZWZpbmUgaWYgLWZuZXctYWJpIG9yIC1maG9ub3Itc3RkLgoJKiBsZXguYyAoaWRlbnRpZmllcl90eXBlKTogTG9vcCB1c2luZyBPVkxfQ0hBSU4uCgkoc2VlX3R5cGVuYW1lKTogU2V0IGxvb2tpbmdfZm9yX3R5cGVuYW1lIHRvIDIuCgkocmVhbF95eWxleCk6IExpa2V3aXNlLgoJKGRvX2lkZW50aWZpZXIpOiBFeHBlY3QgT1ZFUkxPQUQgbm9kZXMgaW5zdGVhZCBvZiBUUkVFX0xJU1RzLgoJKGRvX3Njb3BlZF9pZCk6IEV4cGVjdCBPVkVSTE9BRCBub2Rlcy4KCUNoYW5nZSBjYWxsaW5nIGNvbnZlbnRpb24gZm9yIHF1YWxpZmllZF9sb29rdXBfdXNpbmdfbmFtZXNwYWNlLgoJKGJ1aWxkX2xhbmdfZGVjbCk6IERvbid0IHNldCBpbl9uYW1lc3BhY2UgYW55bW9yZS4KCSogbWV0aG9kLmMgKHR5cGV2ZWNfc2l6ZSk6IE5ldyBnbG9iYWwuCgkoYnVpbGRfb3ZlcmxvYWRfbmVzdGVkX25hbWUpOiBSZXR1cm4gaWYgZ2xvYmFsX25hbWVzcGFjZS4KCU90aGVyd2lzZSwgYWx3YXlzIGV4cGVjdCBhIGRlY2xhcmF0aW9uIGNvbnRleHQuCgkoYnVpbGRfcXVhbGlmaWVkX25hbWUpOiBMaWtld2lzZS4KCU1ha2Ugc3VyZSB3ZSBkb24ndCB3cml0ZSBiZXlvbmQgdHlwZXZlY19zaXplLgoJKGJ1aWxkX2RlY2xfb3ZlcmxvYWRfcmVhbCk6IExpa2V3aXNlLgoJQWxsb2NhdGUgb25lIGV4dHJhIHNsb3QgZm9yIHRoZSBuYW1lc3BhY2UuCgkoaGFja19pZGVudGlmaWVyKTogTWFyayBjb2RlIGRlYWQuCglQcm9jZXNzIE9WRVJMT0FEIGFuZCBOQU1FU1BBQ0VfREVDTCBub2Rlcy4KCSogcGFyc2UueSAocHJvZ3JhbSk6IFBvcCBuYW1lc3BhY2VzIHVudGlsIGluIGdsb2JhbCBuYW1lc3BhY2UuCgkoZXh0ZGVmKTogSW4gYSB1c2luZy1kZWNsYXJhdGlvbiwgZG9uJ3QgZGlzY2FyZCB0aGUgaWRlbnRpZmllciBpZgoJdGhlcmUgaXMgbm8gZGVjbGFyYXRpb24uCgkobGVmdF9jdXJseSk6IElnbm9yZSB0eXBlIGNvbnRleHRzIHdoaWNoIGFyZSBuYW1lc3BhY2VzLgoJKHR5cGVuYW1lX3N1YjIpOiBVc2UgSURFTlRJRklFUl9UWVBFX1ZBTFVFIHRvIHJldHJpZXZlIHRoZSB0eXBlCgl1c2VkIGFzIHNjb3BlLgoJKiBwdC5jICh0ZW1wbGF0ZV9jbGFzc19kZXB0aCk6IEV4cGVjdCB0eXBlcyB0byBiZSBuYW1lc3BhY2VzLgoJKGRldGVybWluZV9zcGVjaWFsaXphdGlvbik6IFNpbXBsaWZ5IGJ5IGV4cGVjdGluZyBPVkVSTE9BRCBub2Rlcy4KCShwdXNoX3RlbXBsYXRlX2RlY2wpOiBQdXNoIGludG8gbmFtZXNwYWNlIGxldmVsLgoJUmVzZXQgY3R4IGlmIGl0IGlzIGEgbmFtZXNwYWNlLgoJU2V0IERFQ0xfQ09OVEVYVCB0byBjdXJyZW50X25hbWVzcGFjZSBpZiBub3Qgc2V0IGFscmVhZHkuCglJZ25vcmUgcmVhbCBjb250ZXh0cyB0aGF0IGFyZSBuYW1lc3BhY2VzLgoJKG1hbmdsZV9jbGFzc19uYW1lX2Zvcl90ZW1wbGF0ZSk6IFNraXAgZ2xvYmFsX25hbWVzcGFjZS4KCU1hbmdsZSBvdGhlciBuYW1lc3BhY2VzIGFzIGRlY2xhcmF0aW9ucy4KCShsb29rdXBfdGVtcGxhdGVfZnVuY3Rpb24pOiBTZXQgdHlwZSBvZiBPVkVSTE9BRCBub2RlcyB0byB1bmtub3duLgoJKGxvb2t1cF90ZW1wbGF0ZV9jbGFzcyk6IFB1c2ggaW50byBuYW1lc3BhY2Ugb2YgY29udGV4dC4KCUlmIHRoZSBjb250ZXh0IGlzIGEgbmFtZXNwYWNlLCBzZXQgaXQgdG8gZ2xvYmFsX25hbWVzcGFjZS4KCVVzZSBpZF9jb250ZXh0IGZvciBtYW5nbGluZy4KCShmb3JfZWFjaF90ZW1wbGF0ZV9wYXJtKTogSGFuZGxlIE9WRVJMT0FEIGFuZCBOQU1FU1BBQ0VfREVDTCBub2Rlcy4KCSh0c3Vic3RfZnJpZW5kX2Z1bmN0aW9uKTogSWdub3JlIG5hbWVzcGFjZSBjb250ZXh0cy4KCVB1c2ggaW50byBuYW1lc3BhY2UgbGV2ZWwuCgkodHN1YnN0KTogSGFuZGxlIE5BTUVTUEFDRV9ERUNMIG5vZGVzLgoJUmVtb3ZlIERFQ0xfQ0hBSU4gcHJvY2Vzc2luZy4KCSh0eXBlX3VuaWZpY2F0aW9uX3JlYWwpOiBSZWNvZ25pemUgT1ZFUkxPQUQgaW5zdGVhZCBvZiBUUkVFX0xJU1Qgbm9kZXMuCgkqIHB0cmVlLmMgKHByaW50X2xhbmdfaWRlbnRpZmllcik6IFByaW50IGJpbmRpbmdzLgoJKGxhbmdfcHJpbnRfeG5vZGUpOiBQcmludCBPVkVSTE9BRCBub2Rlcy4KCSogcnR0aS5jIChpbml0X3J0dGlfcHJvY2Vzc2luZyk6IFB1c2ggdHlwZV9pbmZvIGludG8gc3RkLgoJKiBzZWFyY2guYyAobG9va3VwX2ZuZmllbGRzX2hlcmUpOiBFeHBlY3QgT1ZFUkxPQUQgbm9kZXMuCgkobG9va3VwX2ZuZmllbGRzXzEsIGdldF92aXJ0dWFsc19uYW1lZF90aGlzLCBnZXRfbWF0Y2hpbmdfdmlydHVhbCwKCWRmc19kZWJ1Z19tYXJrLCBkZnNfcHVzaGRlY2xzLCBkZnNfY29tcHJlc3NfZGVjbHMsIGFkZF9jb252ZXJzaW9ucywKCWxvb2t1cF9mbmZpZWxkc19oZXJlKTogTGlrZXdpc2UuCglQcm9jZXNzIGFsbCBub2RlcywgaW5zdGVhZCBvZiBnb2luZyB0aHJvdWdoIFRSRUVfQ0hBSU4uCgkqIHNpZy5jIChidWlsZF9zaWduYXR1cmVfcG9pbnRlcl9vcl9yZWZlcmVuY2VfdHlwZSk6IFNldCBjb250ZXh0Cgl0byBnbG9iYWxfbmFtZXNwYWNlLgoJKGJ1aWxkX3NpZ25hdHVyZV90YWJsZV9jb25zdHJ1Y3Rvcik6IEV4cGVjdCBPVkVSTE9BRCBub2Rlcy4KCSogc3Bldy5jICh5eWxleCk6IFNhdmUgb2xkIHNldHRpbmcgb2YgbG9va2luZ19mb3JfdHlwZW5hbWUuCgkqIHRyZWUuYyAoZGVjbF9saXN0X2xlbmd0aCk6IFJlbW92ZS4KCShiaW5kaW5nX2luaXQpOiBOZXcgZnVuY3Rpb24uCgkoY291bnRfZnVuY3Rpb25zKTogUmV3cml0ZS4KCShpc19vdmVybG9hZGVkX2ZuKTogRXhwZWN0IE9WRVJMT0FEIG5vZGVzLgoJKHJlYWxseV9vdmVybG9hZGVkX2ZuLCBnZXRfZmlyc3RfZm4sIGx2YWx1ZV90eXBlKTogTGlrZXdpc2UuCgkob3ZsX2NvbnMsIHNjcmF0Y2hfb3ZsX2NvbnMsIGJ1aWxkX292ZXJsb2FkLCBidWlsZF9vdmVybG9hZF9hZnRlciwKCW92bF9tZW1iZXIpOiBOZXcgZnVuY3Rpb25zLgoJKiB0eXBlY2suYyAocmVxdWlyZV9jb21wbGV0ZV90eXBlKTogRXhwZWN0IE9WRVJMT0FEIG5vZGVzLgoJKHR5cGVfdW5rbm93bl9wKTogTGlrZXdpc2UuCgkocmVxdWlyZV9pbnN0YW50aWF0ZWRfdHlwZSk6IExpa2V3aXNlLgoJKGJ1aWxkX2NvbXBvbmVudF9yZWYpOiBEZWNsYXJlIGNvZGUgZGVhZC4KCShidWlsZF94X2Z1bmN0aW9uX2NhbGwpOiBDcmVhdGUgYW5kIGV4cGVjdCBPVkVSTE9BRCBub2Rlcy4KCShidWlsZF9mdW5jdGlvbl9jYWxsX3JlYWwpOiBDaGVjayBmb3IgOjptYWluIG9ubHkuCgkoYnVpbGRfdW5hcnlfb3ApOiBMaWtld2lzZS4gIEV4cGVjdCBPVkVSTE9BRCBub2Rlcy4KCShjb252ZXJ0X2Zvcl9hc3NpZ25tZW50KTogQ2hlY2sgZm9yIFRSRUVfTElTVCBiZWZvcmUgYWNjZXNzaW5nCglUUkVFX1ZBTFVFLgoJKiBkZWNsLmMgKGR1cGxpY2F0ZV9kZWNscyk6IENoZWNrIGZvciBuYW1lc3BhY2UgYmluZGluZ3MgaW5zdGVhZAoJb2YgZ2xvYmFsIGJpbmRpbmdzLgoJKHB1c2hkZWNsLCBwdXNoX292ZXJsb2FkZWRfZGVjbCwgbG9va3VwX3RhZywgbG9va3VwX25hbWVfcmVhbCwKCWxvb2t1cF9uYW1lX2N1cnJlbnRfbGV2ZWwsIHN0YXJ0X2RlY2wsIHhyZWZfdGFnLAoJZmluaXNoX2VudW0pOiBMaWtld2lzZS4KCSogaW5pdC5jIChidWlsZF9vZmZzZXRfcmVmKTogTGlrZXdpc2UuCgkqIHNlYXJjaC5jIChsb29rdXBfZmllbGQpOiBMaWtld2lzZS4KCShsb29rdXBfZm5maWVsZHMpOiBMaWtld2lzZS4KCShkZnNfZGVidWdfbWFyayk6IExpa2V3aXNlLgoJKiBkZWNsLmMgKHBvcGxldmVsKTogVXNlIFNFVF9JREVOVElGSUVSX1RZUEVfVkFMVUUuCgkocG9wbGV2ZWxfY2xhc3MsIHBvcF9mcm9tX3RvcF9sZXZlbCk6IExpa2V3aXNlLgoJKiBkZWNsMi5jIChmaW5pc2hfbWV0aG9kKTogTGlrZXdpc2UuCgkqIGNsYXNzLmMgKGJ1aWxkX3Z0YWJsZSk6IFVzZSBTRVRfSURFTlRJRklFUl9HTE9CQUxfVkFMVUUuCgkqIGRlY2wuYyAocmVjb3JkX2J1aWx0aW5fdHlwZSk6IExpa2V3aXNlLgoJKGluaXRfZGVjbF9wcm9jZXNzaW5nLCBncm9rZm5kZWNsKTogTGlrZXdpc2UuCgkqIGxleC5jIChnZXRfdGltZV9pZGVudGlmaWVyLCBkb19pZGVudGlmaWVyLCBkb19zY29wZWRfaWQpOiBMaWtld2lzZS4KCShtYWtlX2xhbmdfdHlwZSk6IExpa2V3aXNlLgoJKiBwYXJzZS55IChtYWtlX3RodW5rKTogTGlrZXdpc2UuCgkqIHB0LmMgKHRzdWJzdCk6IExpa2V3aXNlLgoJKiB0cmVlLmMgKGRlYnVnX2JpbmZvKTogTGlrZXdpc2UuCgkqIGV4Y2VwdGlvbi5jYywgbmV3LmNjLCBuZXcxLmNjLCBuZXcyLmNjLCB0aW5mby5jYywgdGluZm8uaCwKCXRpbmZvMi5jYywgaW5jL25ldy5oOiBBZGQgc3RkIHF1YWxpZmljYXRpb25zLgoJKiBpbmMvbmV3OiBXcmFwIHdpdGggbmFtZXNwYWNlIHN0ZCBpZiBfX0hPTk9SX1NURC4KCSogaW5jL3R5cGVpbmZvOiBMaWtld2lzZS4KCkZyaSBNYXkgIDggMDA6NDM6NTAgMTk5OCAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogY2FsbC5jIChidWlsZF91c2VyX3R5cGVfY29udmVyc2lvbl8xKTogSGFuZGxlIHNlY29uZF9jb252Cglwcm9wZXJseSBmb3IgdGVtcGxhdGVzLgoKVGh1IE1heSAgNyAxNzowOToyNSAxOTk4ICBBbmRyZXcgTWFjTGVvZCAgPGFtYWNsZW9kQGN5Z251cy5jb20+CgoJKiBtZXRob2QuYyAoYnVpbGRfZGVjbF9vdmVybG9hZF9yZWFsKTogU2V0IFRSRUVfVVNFRCBmbGFnIHRvCgl6ZXJvIGZvciBidWlsZF90eXBlX3ZhcmlhbnRzIG5vZGVzIGFzIHdlbGwuCgpXZWQgTWF5ICA2IDE5OjI3OjA5IDE5OTggIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIHB0LmMgKHRzdWJzdCk6IERvbid0IHRzdWJzdCB0aGUgdHlwZSBvZiBhbiBJREVOVElGSUVSX05PREUuCgpXZWQgTWF5ICA2IDE2OjQ5OjQ4IDE5OTggIEppbSBXaWxzb24gIDx3aWxzb25AY3lnbnVzLmNvbT4KCgkqIE1ha2VmaWxlLmluIChjYWxsLm8sIGNsYXNzLm8sIGRlY2wubywgZGVjbDIubywgZXJyZm4ubywgZXJyb3IubywKCWV4Y2VwdC5vLCBleHByLm8sIGZyaWVuZC5vLCBpbml0Lm8sIGxleC5vLCBtZXRob2QubywgcHQubywgcmVwby5vLAoJcnR0aS5vLCBzZWFyY2gubywgc2VtYW50aWNzLm8sIHNpZy5vLCB0cmVlLm8sIHR5cGVjay5vLCB0eXBlY2syLm8sCgl4cmVmLm8pOiBBZGQgdG9wbGV2LmggZGVwZW5kZW5jaWVzLgoKV2VkIE1heSAgNiAxNjo0NDo1OCAxOTk4ICBKZWZmcmV5IEEgTGF3ICAobGF3QGN5Z251cy5jb20pCgoJKiBlcnJmbi5jIChjcF9lcnJvciwgY3Bfd2FybmluZyk6IFJlbW92ZSBkZWNsYXJhdGlvbnMgZm9yCgllcnJvciBhbmQgd2FybmluZyByZXNwZWN0aXZlbHkuCgpXZWQgTWF5ICA2IDE0OjI4OjE4IDE5OTggIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIGVycm9yLmM6IENvbnZlcnQgdG8gdXNpbmcgY3R5cGUgbWFjcm9zIGRlZmluZWQgaW4gc3lzdGVtLmguCgkqIG1ldGhvZC5jOiBMaWtld2lzZS4KCSogeHJlZi5jOiBMaWtld2lzZS4KCSogbGV4LmM6IExpa2V3aXNlLiAgQWxzbyByZW1vdmUgcmVkdW5kYW50IHN5c3RlbSBoZWFkZXIgc3R1ZmYuCgpXZWQgTWF5ICA2IDA2OjM2OjQxIDE5OTggIFJvYmVydCBMaXBlICA8cm9iZXJ0bEBkZ2lpLmNvbT4KCgkqIGNhbGwuYywgY2xhc3MuYywgZGVjbC5jLCBkZWNsMi5jLCBlcnJmbi5jLCBlcnJvci5jLCBleGNlcHQuYywKCWV4cHIuYywgZnJpZW5kLmMsIGluaXQuYywgbGV4LmMsIG1ldGhvZC5jLCBwdC5jLCByZXBvLmMsIHJ0dGkuYywKCXNlYXJjaC5jLCBzZW1hbnRpY3MuYywgc2lnLmMsIHRyZWUuYywgdHlwZWNrLmMsIHR5cGVjazIuYywKCXhyZWYuYzogQWRkIGluY2x1ZGUgb2YgdG9wbGV2LmguCgpXZWQgTWF5ICA2IDAyOjMzOjM5IDE5OTggIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIHRyZWUuYyAocGVybV9tYW5pcCk6IEFsc28gcmVnZW5lcmF0ZSB0aGUgUlRMIG9mIGFuIGV4dGVybi4KCShjb3B5X3RvX3Blcm1hbmVudCk6IFVzZSBlbmRfdGVtcG9yYXJ5X2FsbG9jYXRpb24uCgpUdWUgTWF5ICA1IDIzOjU0OjA0IDE5OTggIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIGluaXQuYyAoZXhwYW5kX3ZlY19pbml0KTogVGhlIGluaXRpYWxpemF0aW9uIG9mIGVhY2ggYXJyYXkKCWVsZW1lbnQgaXMgYSBmdWxsLWV4cHJlc3Npb24uCgpUdWUgTWF5ICA1IDE4OjI0OjEzIDE5OTggIEFuZHJldyBNYWNMZW9kICA8YW1hY2xlb2RAY3lnbnVzLmNvbT4KCgkqIG1ldGhvZC5jIChidWlsZF9tYW5nbGVkX25hbWUpOiBBZGQgYSBjYWxsIHRvIGJ1aWxkX3R5cGVfdmFyaWFudAoJdG8gZ2V0IHRoZSByaWdodCB0eXBlLgoKVHVlIE1heSAgNSAwMToyNTowMyAxOTk4ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBNYWtlZmlsZS5pbjogQWRkIC5TVUZGSVhFUy4KCgkqIGNwLXRyZWUuZGVmOiBSZW1vdmUgTkFNRVNQQUNFX0RFQ0wuCgpTdW4gTWF5ICAzIDAxOjMyOjE0IDE5OTggIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIGNhbGwuYyAoYnVpbGRfb3Zlcl9jYWxsKTogRG8gZXZhbHVhdGUgYXJnIGV2ZW4gaWYgaXQgaGFzIGVtcHR5CgljbGFzcyB0eXBlLgoJKiBkZWNsLmMgKHN0YXJ0X2Z1bmN0aW9uKTogRG9uJ3QgcHVzaCBhIG1lbWJlciBmdW5jdGlvbi4KClRodSBBcHIgMzAgMTg6NTk6MjMgMTk5OCAgSmltIFdpbHNvbiAgPHdpbHNvbkBjeWdudXMuY29tPgoKCSogTWFrZWZpbGUuaW4gKGcrK0ZBUS5pbmZvKTogUHV0IC1vIG9wdGlvbiBiZWZvcmUgaW5wdXQgZmlsZS4KClRodSBBcHIgMzAgMTM6MDU6MzMgMTk5OCAgQW5kcmV3IE1hY0xlb2QgIDxhbWFjbGVvZEBjeWdudXMuY29tPgoKCSogZ3h4aW50LnRleGk6IEFkZCBpbmZvIGZvciBzcXVhbmdsaW5nIGNvZGVzIEsgYW5kIEIuCgpUdWUgQXByIDI4IDEzOjIyOjAxIDE5OTggIE1hcmsgTWl0Y2hlbGwgIDxtbWl0Y2hlbGxAdXNhLm5ldD4KCgkqIHNlbWFudGljcy5jIChiZWdpbl9zdG10X2V4cHIpOiBBdm9pZCBkdXBsaWNhdGluZyB0aGUgZWZmZWN0IG9mCgl0aGUgZXhwcmVzc2lvbiBpbiB0ZW1wbGF0ZXMuCgkoZmluaXNoX3N0bXRfZXhwcik6IExpa2V3aXNlLgoKMTk5OC0wNC0yOCAgQnJlbmRhbiBLZWhvZSAgPGJyZW5kYW5AY3lnbnVzLmNvbT4KCgkqIGRlY2wyLmMgKGFtYmlndW91c19kZWNsKTogRml4IE5BTUUgcGFybSB0byBiZSBhIHRyZWUsIG5vdCBpbnQuCgpNb24gQXByIDI3IDEzOjU4OjEwIDE5OTggIE1hcmsgTWl0Y2hlbGwgIDxtbWl0Y2hlbGxAdXNhLm5ldD4KCgkqIGRlY2wuYyAobWF5YmVfcHVzaF90b190b3BfbGV2ZWwpOiBBbHdheXMgY2xlYXIKCWN1cnJlbnRfdGVtcGxhdGVfcGFybXMgYW5kIHByb2Nlc3NpbmdfdGVtcGxhdGVfZGVjbC4KCShwdXNodGFnKTogUmVtb3ZlIGNoZWNrIG9mIGN1cnJlbnRfY2xhc3NfdHlwZSBhbmQgc29tZSBjb21tZW50cywKCXNpbmNlIG1heWJlX3B1c2hfdG9fdG9wX2xldmVsIG5vIGxvbmdlciBjcmVhdGVzIGNvbmZ1c2lvbi4KClN1biBBcHIgMjYgMTI6MTA6MTggMTk5OCAgTWFyayBNaXRjaGVsbCAgPG1taXRjaGVsbEB1c2EubmV0PgoKCSogY3AtdHJlZS5oIChDTEFTU1RZUEVfSVNfVEVNUExBVEUpOiBOZXcgbWFjcm8uCgkoREVDTF9DTEFTU19URU1QTEFURV9QKTogTGlrZXdpc2UuCgkoREVDTF9QUklNQVJZX1RFTVBMQVRFKTogTGlrZXdpc2UuCgkoUFJJTUFSWV9URU1QTEFURV9QKTogVXNlIGl0LgoJKHB1c2hfdGVtcGxhdGVfZGVjbF9yZWFsKTogTmV3IGZ1bmN0aW9uLgoJKHJlZGVjbGFyZV9jbGFzc190ZW1wbGF0ZSk6IFRha2UgbmV3IHRlbXBsYXRlIHBhcmFtZXRlcnMgYXMKCWlucHV0LgoJKGlzX3NwZWNpYWxpemF0aW9uX29mKTogTmV3IGZ1bmN0aW9uLgoJKGNvbXBfdGVtcGxhdGVfYXJncyk6IERlY2xhcmUuCgkqIGRlY2wuYyAocHVzaHRhZyk6IEhhbmRsZSBmcmllbmQgdGVtcGxhdGUgY2xhc3Nlcy4KCSh4cmVmX3RhZyk6IExpa2V3aXNlLiAgVXNlIG5ldyBjYWxsaW5nIGNvbnZlbnRpb24gZm9yCglyZWRlY2xhcmVfY2xhc3NfdGVtcGxhdGUuCgkqIGRlY2wyLmMgKGdyb2tfeF9jb21wb25lbnRzKTogSGFuZGxlIGZyaWVuZCB0ZW1wbGF0ZXMuCgkqIGZyaWVuZC5jIChpc19mcmllbmQpOiBVc2UgaXNfc3BlY2lhbGl6YXRpb25fb2Ygd2hlcmUKCWFwcHJvcHJpYXRlLiAgRGVhbCB3aXRoIGZyaWVuZCBjbGFzcyB0ZW1wbGF0ZXMuCgkobWFrZV9mcmllbmRfY2xhc3MpOiBMZXQgYSBjbGFzcyB0ZW1wbGF0ZSBiZSBmcmllbmRzIHdpdGggaXRzZWxmLgoJKiBwdC5jIChjb21wX3RlbXBsYXRlX2FyZ3MpOiBSZW1vdmUgZGVjbGFyYXRpb24uCgkodHN1YnN0X2ZyaWVuZF9jbGFzcyk6IE5ldyBmdW5jdGlvbi4KCShwdXNoX3RlbXBsYXRlX2RlY2xfcmVhbCk6IE5ldyBmdW5jdGlvbi4KCShwdXNoX3RlbXBsYXRlX2RlY2wpOiBVc2UgaXQuCgkocmVkZWNsYXJlX2NsYXNzX3RlbXBsYXRlKTogQWRqdXN0IGZvciBuZXcgY2FsbGluZyBjb252ZW50aW9uLgoJKGNvbXBfdGVtcGxhdGVfYXJncyk6IEdpdmUgaXQgZXh0ZXJuYWwgbGlua2FnZS4KCShpbnN0YW50aWF0ZV9jbGFzc190eXBlKTogVXNlIHRzdWJzdF9mcmllbmRfY2xhc3MgdG8gZGVhbAoJd2l0aCBmcmllbmQgdGVtcGxhdGVzLgoJKiB0eXBlY2suYyAoY29tcHR5cGVzKTogVXNlIGNvbXBfdGVtcGxhdGVfYXJncywgcmF0aGVyIHRoYW4KCWV4cGFuZGluZyBpdCBpbmxpbmUuCgkqIHBhcnNlLnkgKGNvbXBvbmVudF9kZWNsKTogSGFuZGxlIGEgbmVzdGVkIHRlbXBsYXRlIHR5cGUKCWxpa2Ugb3RoZXIgY29tcG9uZW50IHR5cGUgZGVjbGFyYXRpb25zLgoKCSogcHQuYyAoY2hlY2tfZXhwbGljaXRfc3BlY2lhbGl6YXRpb24pOiBIYW5kbGUgb3ZlcmxvYWRlZAoJY29uc3RydWN0b3JzIGNvcnJlY3RseS4KCgkqIHB0LmMgKG1hYnliZV9nZXRfdGVtcGxhdGVfZGVjbF9mcm9tX3R5cGVfZGVjbCk6IE5ldyBmdW5jdGlvbi4KCShsb29rdXBfdGVtcGxhdGVfY2xhc3MpOiBVc2UgaXQuCgpUaHUgQXByIDIzIDIxOjE5OjA2IDE5OTggIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIGNwLXRyZWUuZGVmOiBBZGQgV1JBUFBFUi4gIFVTRVJfQ09OViBub3cgb25seSBoYXMgdHdvIG9wcy4KCSogY3AtdHJlZS5oOiBBZGQgV1JBUFBFUiBzdXBwb3J0LgoJKiBjYWxsLmMgKGFkZF9jYW5kaWRhdGUpOiBTcGxpdCBvdXQgZnJvbSBhZGRfKl9jYW5kaWRhdGUgZm5zLgoJKGJ1aWxkX292ZXJfY2FsbCk6IFRha2UgdGhlIGNhbmRpZGF0ZSBpbnN0ZWFkIG9mIGZ1bmN0aW9uIGFuZCBhcmdzLgoJRW5mb3JjZSBhY2Nlc3MgY29udHJvbCBoZXJlLiAgRW1pdCBvdmVybG9hZCB3YXJuaW5ncyBoZXJlLgoJKGFkZF93YXJuaW5nKTogTmV3IGZuLgoJKGpvdXN0KTogQWRkIFdBUk4gcGFybS4gIElmIG5vdCBzZXQsIGNhbGwgYWRkX3dhcm5pbmcgaW5zdGVhZCBvZgoJcHJpbnRpbmcgYSB3YXJuaW5nLiAgUmUtZW5hYmxlIHNvbWUgd2FybmluZ3MuCgkodG91cm5leSk6IFBhc3MgaXQuCgkoY29udmVydF9saWtlKTogQWRqdXN0LgoJKGJ1aWxkX25ld19vcCk6IEFkanVzdC4KCShidWlsZF9uZXdfZnVuY3Rpb25fY2FsbCk6IEFkanVzdC4KCShidWlsZF91c2VyX3R5cGVfY29udmVyc2lvbl8xKTogQWRqdXN0LgoJKFVTRVJfQ09OVl9GTik6IEFkanVzdC4KCSogdHJlZS5jIChidWlsZF9leHByX3dyYXBwZXIsIGJ1aWxkX2V4cHJfcHRyX3dyYXBwZXIsCglidWlsZF9pbnRfd3JhcHBlcik6IE5ldyBmbnMuCgpUaHUgQXByIDIzIDE4OjI3OjUzIDE5OTggIE1hcmsgUC4gTWl0Y2hlbGwgIDxtbWl0Y2hlbGxAdXNhLm5ldD4KCgkqIHB0LmMgKHVuaWZ5KTogRml4IHR5cG8gaW4gcHJldmlvdXMgY2hhbmdlLgoKVGh1IEFwciAyMyAwOTozMjo1OCAxOTk4ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBlcnJvci5jIChkdW1wX3R5cGVfcmVhbCk6IERlY2xhcmUgY2Fub25pY2FsX25hbWUuCgoJKiB0eXBlY2suYyAoY29tcF90YXJnZXRfdHlwZXMpOiBGaXggUE1Gcy4KCldlZCBBcHIgMjIgMTM6MjQ6NDggMTk5OCAgTWFyayBNaXRjaGVsbCAgPG1taXRjaGVsbEB1c2EubmV0PgoKCSogY2xhc3MuYyAoZmluaXNoX3N0cnVjdCk6IFNldCBUUkVFX1BSSVZBVEUgYW5kIFRSRUVfUFJPVEVDVEVEIGZvcgoJdGhlIERFQ0xfUkVTVUxUcyBvZiBhIG1lbWJlciBURU1QTEFURV9ERUNMLCBub3QganVzdCB0aGUKCVRFTVBMQVRFX0RFQ0wuCgoJKiBwdC5jICh0c3Vic3QpOiBEZWNyZWFzZSB0aGUgdGVtcGxhdGUtbGV2ZWwgb2YKCVRFTVBMQVRFX1RFTVBMQVRFX1BBUk1TLiAgTGlrZXdpc2UgZm9yIHRoZSBERUNMX0lOSVRJQUwgb2YgYQoJVEVNUExBVEVfUEFSTV9JTkRFWC4KCSh0ZW1wbGF0ZV9kZWNsX2xldmVsKTogTmV3IGZ1bmN0aW9uLgoJKHVuaWZ5KTogTWFrZSBzdXJlIHRvIHJlY29yZCB1bmlmaWNhdGlvbnMgZm9yIHRlbXBsYXRlCglwYXJhbWV0ZXJzLCBldmVuIHdoZW4gdGhlIHBhcmFtZXRlcnMgZXhhY3RseSBtYXRjaCB0aGUgYXJndW1lbnRzLgoJQ29tYmluZSBkdXBsaWNhdGVkIGNvZGUgZm9yIFRFTVBMQVRFX1RFTVBMQVRFX1BBUk1zIGFuZAoJVEVNUExBVEVfVFlQRV9QQVJNUy4gIERvbid0IHRyeSB0byB1bmlmeSB0ZW1wbGF0ZSBwYXJhbWV0ZXJzIHRoYXQKCWFyZW4ndCBmcm9tIHRoZSBsZXZlbCB3ZSdyZSBjdXJyZW50bHkgd29ya2luZyBvbi4KClR1ZSBBcHIgMjEgMjI6MDA6MDQgMTk5OCAgTWFyayBNaXRjaGVsbCAgPG1taXRjaGVsbEB1c2EubmV0PgoKCSogZXJyZm4uYyAoY3BfdGhpbmcpOiBVc2UgeHJlYWxsb2MsIG5vdCB4bWFsbG9jLCB0byBjb3B5IG1lbW9yeS4KCgkqIGRlY2wyLmMgKGNoZWNrX21lbWJlcl90ZW1wbGF0ZSk6IFNldCBERUNMX0lHTk9SRUQgZm9yIG1lbWJlcgoJY2xhc3MgdGVtcGxhdGVzLCB0b28uCgoJKiBkZWNsMi5jIChncm9rZmllbGQpOiBSZW1hbmdsZSB0aGUgbmFtZSBvZiBhIG1lbWJlciBUWVBFX0RFQ0wuCgpUdWUgQXByIDIxIDE4OjU5OjExIDE5OTggIEJlbmphbWluIEtvc25payAgPGJrb3pAcmhpbm8uY3lnbnVzLmNvbT4KCgkqIGRlY2wuYyAoZHVwbGljYXRlX2RlY2xzKTogT25seSBjaGVjayBERUNMX0ZSSUVORF9QIGlmIGZ1bmN0aW9uLgoKVHVlIEFwciAyMSAxNDoyMjowMCAxOTk4ICBKZWZmcmV5IEEgTGF3ICAobGF3QGN5Z251cy5jb20pCgoJKiBjcC10cmVlLmggKGludFRJX3R5cGVfbm9kZSwgdW5zaWduZWRfaW50VElfdHlwZV9ub2RlKTogRGVjbGFyZS4KCSogZGVjbC5jIChpbnRUSV90eXBlX25vZGUsIHVuc2lnbmVkX2ludFRJX3R5cGVfbm9kZSk6IERlZmluZS4KCShpbml0X2RlY2xfcHJvY2Vzc2luZyk6IEhhbmRsZSBUSSB0eXBlcy4KCSogdHlwZWNrLmMgKHVuc2lnbmVkX3R5cGUsIHNpZ25lZF90eXBlKTogSGFuZGxlIFRJIHR5cGVzLgoKU2F0IEFwciAxOCAxNToyNToyMSAxOTk4ICBKaW0gV2lsc29uICA8d2lsc29uQGN5Z251cy5jb20+CgoJKiBnKytzcGVjLmMgKGxhbmdfc3BlY2lmaWNfZHJpdmVyKTogTmV3IGFyZ3VtZW50IGluX2FkZGVkX2xpYnJhcmllcy4KCU5ldyBsb2NhbCBhZGRlZF9saWJyYXJpZXMuICBJbmNyZW1lbnQgY291bnQgd2hlbiBhZGQgbGlicmFyeSB0bwoJYXJnbGlzdC4KCkZyaSBBcHIgMTcgMjE6MjU6MDAgMTk5OCAgTWFyayBNaXRjaGVsbCAgPG1taXRjaGVsbEB1c2EubmV0PgoKCSogY3AtdHJlZS5oICh0eXBlX2FzX3N0cmluZ19yZWFsKTogTmV3IGZ1bmN0aW9uLgoJKiBwdC5jIChtYW5nbGVfY2xhc3NfbmFtZV9mb3JfdGVtcGxhdGUpOiBVc2UgaXQuCgkqIGVycm9yLmMgKGR1bXBfYWdncl90eXBlKTogQ2hhbmdlIHByb3RvdHlwZS4KCShkdW1wX3R5cGVfcHJlZml4KTogTGlrZXdpc2UuCgkoZHVtcF90eXBlX3N1ZmZpeCk6IExpa2V3aXNlLgoJKGR1bXBfdHlwZV9yZWFsKTogQ29udmVydCBmcm9tIGR1bXBfdHlwZS4gIElmIGRlc2lyZWQsIHRoZQoJImNhbm9uaWNhIiBuYW1lIG9mIGEgdHlwZWRlZiwgaS5lLiwgdGhlIG5hbWUgb2YgdGhlIHVuZGVybHlpbmcKCXR5cGUsIGNhbiBiZSBwcmludGVkLgoJKGR1bXBfdHlwZSk6IENhbGwgZHVtcF90eXBlX3JlYWwuCgpGcmkgQXByIDE3IDE0OjMwOjQ1IDE5OTggIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIGRlY2wyLmMgKGxhbmdfZGVjb2RlX29wdGlvbik6IC1mbmV3LWFiaSBpbXBsaWVzIC1mdnRhYmxlLXRodW5rcy4KCgkqIHR5cGVjay5jIChjb21wX3RhcmdldF90eXBlcyk6IFR3ZWFrIHBlZGFudGljIGNhc2UuCgkoY29tcF90YXJnZXRfcGFybXMpOiBUd2VhayBwZWRhbnRpYyBjYXNlLiAgQ2xlYW4gdXAgc29tZXdoYXQuCglSZXR1cm4gLTEgb3IgMSBpbnN0ZWFkIG9mIDEgb3IgMi4KCShjb21wcGFybXMpOiBSZW1vdmUgU1RSSUNUIGhhbmRsaW5nLgoJKGNvbnZlcnRfZm9yX2Fzc2lnbm1lbnQpOiBGaXggaGFuZGxpbmcgb2YgcG1mcy4KCkZyaSBBcHIgMTcgMTQ6MDQ6MTYgMTk5OCAgTWFyayBNaXRjaGVsbCAgPG1taXRjaGVsbEB1c2EubmV0PgoKCSogdHlwZWNrLmMgKGNvbXBfdGFyZ2V0X3R5cGVzKTogSGFuZGxlIHJlZmVyZW5jZXMgbGlrZSBwb2ludGVycy4KCShjb21wX3RhcmdldF9wYXJtcyk6IE5vdGUgdGhhdCByZXR1cm4gY29kZSBmcm9tIGNvbXBfdGFyZ2V0X3R5cGVzCgljYW4gYmUgbmVnYXRpdmUgdG8gaW5kaWNhdGUgZmFpbHVyZS4KCkZyaSBBcHIgMTcgMDk6MTA6NTIgMTk5OCAgQW5kcmVhcyBTY2h3YWIgIDxzY2h3YWJAaXNzYW4uaW5mb3JtYXRpay51bmktZG9ydG11bmQuZGU+CgoJKiBNYWtlLWxhbmcuaW4gKGMrKy5hbGwuYnVpbGQpOiBEb24ndCBkZXBlbmQgb24gJChERU1BTkdMRVJfUFJPRyksCgl3aGljaCByZXF1aXJlcyBhIHdvcmtpbmcgdGFyZ2V0IGNvbXBpbGVyIHRvIGJ1aWxkLgoKRnJpIEFwciAxNyAwODo1NzozNSAxOTk4ICBKZWZmcmV5IEEgTGF3ICAobGF3QGN5Z251cy5jb20pCgoJKiB0cmVlLmMgKGF2b2lkX292ZXJsYXApOiBBZGQgcHJvdG90eXBlLgoKCSogc3Bldy5jIChudW1fdG9rZW5zKTogQWRkIHByb3RvdHlwZS4KCShudGhfbm9rZW4sIGFkZF90b2tlbiwgY29uc3VtZV90b2tlbiwgZGVidWdfeXljaGFyKTogTGlrZXdpc2UuCgoJKiBzZWFyY2guYyAoZGZzX2NoZWNrX292ZXJsYXApOiBBZGQgcHJvdG90eXBlLgoJKGRmc19ub19vdmVybGFwX3lldCk6IExpa2V3aXNlLgoKCSogcHQuYyAob3JpZ2luYWxfdGVtcGxhdGUpOiBBZGQgcHJvdG90eXBlLgoJKGlubGluZV9uZWVkc190ZW1wbGF0ZV9wYXJtcyk6IExpa2V3aXNlLgoJKHB1c2hfaW5saW5lX3RlbXBsYXRlX3Bhcm1zX3JlY3Vyc2l2ZSk6IExpa2V3aXNlLgoJKHJldHJpZXZlX3NwZWNpYWxpemF0aW9uLCByZWdpc3Rlcl9zcGVjaWFsaXphdGlvbik6IExpa2V3aXNlLgoJKHByaW50X2NhbmRpZGF0ZXMsIHJlZHVjZV90ZW1wbGF0ZV9wYXJtX2xldmVsKTogTGlrZXdpc2UuCgkoYnVpbGRfdGVtcGxhdGVfZGVjbCwgbWFya190ZW1wbGF0ZV9wYXJtKTogTGlrZXdpc2UuCgkodHN1YnN0X2ZyaWVuZF9mdW5jdGlvbiwgZ2V0X2JpbmRpbmdzX3JlYWwpOiBMaWtld2lzZS4KCgkqIG1ldGhvZC5jIChzdGFydF9zcXVhbmdsaW5nKTogQWRkIHByb3RvdHlwZS4KCShlbmRfc3F1YW5nbGluZywgY2hlY2tfa3R5cGUsIGlzc3VlX2t0eXBlKTogTGlrZXdpc2UuCgkoYnVpbGRfb3ZlcmxvYWRlZF9zY29wZV9yZWYsIGNoZWNrX2J0eXBlKTogTGlrZXdpc2UuCgkoYnVpbGRfbWFuZ2xlZF90ZW1wbGF0ZV9wYXJtX2luZGV4KTogTGlrZXdpc2UuCgoJKiBsZXguYyAoaW5pdF9jcHBfcGFyc2UpOiBBZGQgcHJvdG90eXBlLgoJKGhhbmRsZV9jcF9wcmFnbWEsIGhhbmRsZV9zeXN2X3ByYWdtYSk6IExpa2V3aXNlLgoJKHJlZHVjZV9jbXAsIHRva2VuX2NtcCk6IExpa2V3aXNlLgoKCSogZXhjZXB0LmMgKGNhbGxfZWhfaW5mbyk6IEFkZCBwcm90b3R5cGUuCgkocHVzaF9laF9pbmZvLCBnZXRfZWhfaW5mbywgZ2V0X2VoX3ZhbHVlLCBnZXRfZWhfdHlwZSk6IExpa2V3aXNlLgoJKGdldF9laF9jYXVnaHQsIGdldF9laF9oYW5kbGVycywgZG9fcG9wX2V4Y2VwdGlvbik6IExpa2V3aXNlLgoKCSogZGVjbDIuYyAoaXNfbmFtZXNwYWNlX2FuY2VzdG9yKTogQWRkIHByb3RvdHlwZS4KCShuYW1lc3BhY2VfYW5jZXN0b3IsIGFkZF91c2luZ19uYW1lc3BhY2UpOiBMaWtld2lzZS4KCShhbWJpZ3VvdXNfZGVjbCk6IExpa2V3aXNlLgoKCSogZGVjbC5jIChpbmRlbnQpOiBBZGQgcHJvdG90eXBlLgoKCSogY2FsbC5jIChhZGRfdGVtcGxhdGVfY2FuZGlkYXRlX3JlYWwpOiBBZGQgcHJvdG90eXBlLgoKRnJpIEFwciAxNyAwMTo1NzoxMiAxOTk4ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBkZWNsMi5jIChidWlsZF9leHByX2Zyb21fdHJlZSk6IEp1c3QgcmV0dXJuIGEgUE1GLgoKRnJpIEFwciAxNyAwMDo0NToxMiAxOTk4ICBNYXJrIE1pdGNoZWxsICA8bW1pdGNoZWxsQHVzYS5uZXQ+CgoJKiB0eXBlY2syLmMgKHByb2Nlc3NfaW5pdF9jb25zdHJ1Y3Rvcik6IERvbid0IHN0cmlwIGN2LXF1YWxpZmllcnMKCXdoZW4gZG9pbmcgaW5pdGlhbGl6YXRpb25zLgoKCSogcHQuYyAodW5pZnkpOiBVc2UgY29tcHR5cGVzIHRvIGNvbXBhcmUgdHlwZSBhcmdzLgoKRnJpIEFwciAxNyAwMDoyNDoyMiAxOTk4ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBkZWNsLmMgKGR1cGxpY2F0ZV9kZWNscyk6IEZpeCBjaGVjayBmb3Igd2hlbiBpdCdzIHNhZmUgdG8gZnJlZQoJdGhlIG5ldyBkZWNsLgoKCSogcHQuYyAobWFuZ2xlX2NsYXNzX25hbWVfZm9yX3RlbXBsYXRlKTogRG9uJ3QgcGFzcyBhIHR5cGVkZWYgdHlwZQoJdG8gdHlwZV9hc19zdHJpbmcuCgpUaHUgQXByIDE2IDE3OjQ3OjMwIDE5OTggIEplZmZyZXkgQSBMYXcgIChsYXdAY3lnbnVzLmNvbSkKCgkqIHB0LmMgKGJ1aWxkX3RlbXBsYXRlX3Bhcm1faW5kZXgpOiBBZGQgcHJvdG90eXBlLgoKCSogc2VhcmNoLmMgKG15X3RyZWVfY29ucyk6IERvbid0IGNsZWFyIHdvcmRzIG91dHNpZGUgdGhlCgluZXdseSBhbGxvY2F0ZWQgbm9kZS4KCldlZCBBcHIgMTUgMTU6MzQ6NDQgMTk5OCAgRGF2ZSBCcm9sbGV5ICA8YnJvbGxleUBjeWdudXMuY29tPgoKCSogbGV4LmMgKGluaXRfcGFyc2UpOiBOb3cgcmV0dXJucyBjaGFyKiBjb250YWluaW5nIHRoZSBmaWxlbmFtZS4KCldlZCBBcHIgMTUgMTM6MjA6MDYgMTk5OCAgSm9obiBDYXJyICA8amZjQG1pdC5lZHU+CgkJCSAgSmVmZiBMYXcgICA8bGF3QGN5Z251cy5jb20+CgoJKiBlcnJmbi5jOiBSZXdvcmsgdG8gYXZvaWQgcHJvYmxlbXMgd2hlbiBIT1NUX1dJREVfSU5UIGlzIGxvbmdlcgoJdGhhbiBhIHBvaW50ZXIuCgpTdW4gQXByIDEyIDIyOjMxOjE5IDE5OTggIFJpY2hhcmQgS2VubmVyICA8a2VubmVyQHZsc2kxLnVsdHJhLm55dS5lZHU+CgoJKiBjdnQuYyAoY3BfY29udmVydF90b19wb2ludGVyKTogVXNlIFRZUEVfUFJFQ0lTSU9OLgoKRnJpIEFwciAxMCAxMjoxNjo0OSAxOTk4ICBCZW5qYW1pbiBLb3NuaWsgIDxia296QGxvb255LmN5Z251cy5jb20+CgoJKiBkZWNsLmMgKGR1cGxpY2F0ZV9kZWNscyk6IERvbid0IHdhcm4gZm9yIHJlZHVuZGFudCBkZWNscyBpZgoJZnJpZW5kOiBsZXQgYWRkX2ZyaWVuZCB0YWtlIGNhcmUgb2YgaXQuCgpUaHUgQXByICA5IDAyOjQwOjQ4IDE5OTggIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIHNpZy5jIChidWlsZF9zaWduYXR1cmVfcG9pbnRlcl9jb25zdHJ1Y3Rvcik6IERvbid0IHNldAoJVFJFRV9IQVNfQ09OU1RSVUNUT1IgZm9yIGEgc2lnbmF0dXJlIHBvaW50ZXIuCgkqIGN2dC5jIChvY3BfY29udmVydCk6IERvbid0IGZvcmNlIGEgdGVtcG9yYXJ5IGZvciBpbnRlcm5hbCBzdHJ1Y3RzLgoJKiBpbml0LmMgKHJlc29sdmVfb2Zmc2V0X3JlZik6IFdhcm4gYWJvdXQgaW1wbGljaXQgJiBvbiBwbWZzCgloZXJlLCB0b28uCgkqIHR5cGVjay5jIChidWlsZF91bmFyeV9vcCk6IE9ubHkgYWxsb3cgdGFraW5nIHRoZSBhZGRyZXNzIG9mIGEKCXJlYWwgY29uc3RydWN0b3IuCgkqIHR5cGVjazIuYyAoZGlnZXN0X2luaXQpOiBTaW1wbGlmeS4KCShzdG9yZV9pbml0X3ZhbHVlKTogRG9uJ3QgcGVkd2FybiBhYm91dCB1c2luZyB7IH0gZm9yIHBtZnMuCgpUaHUgQXByICA5IDIyOjE2OjU3IDE5OTggIFBlciBCb3RobmVyICA8Ym90aG5lckBjeWdudXMuY29tPgoKCSogY3AtdHJlZS5oIChzdGFydF9kZWNsKTogIFVwZGF0ZSBwcm90b3R5cGUuCgkqIGRlY2wuYyAoc3RhcnRfZGVjbCk6ICBMaWtlIHRoZSBDIHZlcnNpb24sIG5ldyBwYXJhbWV0ZXJzCglmb3IgdGhlIGF0dHJpYnV0ZXMuICBDYWxsIGNwbHVzX2RlY2xfYXR0cmlidXRlcyBoZXJlLAoJKHB1c2hkZWNsKTogIExpa2UgQyB2ZXJzaW9uLCBkbyBidWlsZF90eXBlX2NvcHkgaWYgVFlQRV9ERUNMLAoJKGdyb2tkZWNsYXJhdG9yKTogIFBhc3MgTlVMTCBmb3IgbmV3IHN0YXJ0X2RlY2wgYXJndW1lbnRzLgoJKiBwdC5jICh0c3Vic3RfZXhwcik6ICBMaWtld2lzZS4KCSogcGFyc2UueTogIE1lcmdlIGNwbHVzX2RlY2xfYXR0cmlidXRlIGNhbGxzIGludG8gc3RhcnRfZGVjbCBjYWxscy4KCSogdHlwZWNrLmMgKGNvbW1vbl90eXBlKTogQ2hlY2sgVFlQRV9NQUlOX1ZBUklBTlQuCgkqIGxleC5jIChidWlsZF9sYW5nX2RlY2wpOiBBZGQgbGFuZ19uYW1lX2phdmEuCgkqIGNsYXNzLmMgKHB1c2hfbGFuZ19jb250ZXh0KTogQWRkIGxhbmdfbmFtZV9qYXZhLgoJKiBtZXRob2QuYyAoYnVpbGRfbWFuZ2xlZF9uYW1lKTogQ2hlY2sgZm9yIGlzX2phdmFfdHlwZS4KClRodSBBcHIgIDkgMjI6MTY6NTcgMTk5OCAgQmVuamFtaW4gS29zbmlrICA8YmtvekBsb29ueS5jeWdudXMuY29tPgoKCSogZGVjbC5jIChncm9rZGVjbGFyYXRvcik6IENoZWNrIFRZUEVfTUFJTl9WQVJJQU5ULgoJKiBjYWxsLmMgKGJ1aWxkX3Njb3BlZF9tZXRob2RfY2FsbCk6IENoZWNrIGZvciBUUkVFX0NPREUgZm9yCglWT0lEX1RZUEUgaW5zdGVhZCBvZiB0eXBlID09ICB2b2lkX3R5cGVfbm9kZS4KCShidWlsZF9tZXRob2RfY2FsbCk6IExpa2V3aXNlLgoJKiBkZWNsLmMgKGxvb2t1cF9uYW1lX3JlYWwpOiBMaWtld2lzZS4KCShncm9rZGVjbGFyYXRvcik6IExpa2V3aXNlLgoJKHN0YXJ0X2RlY2wpOiBMaWtld2lzZS4KCShncm9rcGFybXMpOiBMaWtld2lzZS4KCShzdGFydF9mdW5jdGlvbik6IExpa2V3aXNlLgoJKGZpbmlzaF9mdW5jdGlvbik6IExpa2V3aXNlLgoJKHN0YXJ0X21ldGhvZCk6IExpa2V3aXNlLgoKVGh1IEFwciAgOSAwMDoxODo0NCAxOTk4ICBEYXZlIEJyb2xsZXkgIChicm9sbGV5QGN5Z251cy5jb20pCgoJKiBsZXguYyAoZmlucHV0KTogTmV3IHZhcmlhYmxlLgoJKGluaXRfY3BwX3BhcnNlKTogIFJlbmFtZWQgZnJvbSBpbml0X3BhcnNlLgoJKGluaXRfcGFyc2UpOiBIYW5kbGUgIVVTRV9DUFBMSUIuICBDYWxsIGluaXRfY3BwX3BhcnNlIHdoZW4gZmluaXNoZWQuCgkoZmluaXNoX3BhcnNlKTogTmV3IGZ1bmN0aW9uLgoJKiBjcC10cmVlLmggKGluaXRfbGV4LCBpbml0X3BhcnNlKTogUmVtb3ZlIGRlY2xhcmF0aW9ucy4KCk1vbiBBcHIgIDYgMDI6MjU6MDUgMTk5OCAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogY2FsbC5jIChidWlsZF9jYWxsKTogU3RpbGwgZXZhbHVhdGUgdGhlIGFjdHVhbCBhcmd1bWVudC4KCSogY2xhc3MuYyAoaXNfZW1wdHlfY2xhc3MpOiBVcGRhdGUgZm9yIC1mbmV3LWFiaS4KCgkqIGRlY2wyLmM6IC1mbmV3LWFiaSBpbXBsaWVzIC1mc3F1YW5nbGUuCgoJKiBtZXRob2QuYyAoZG9fYnVpbGRfYXNzaWduX3JlZik6IERvbid0IGRvIGFueXRoaW5nIHRvIGNvcHkKCWFuIGVtcHR5IGNsYXNzLgoJKGRvX2J1aWxkX2NvcHlfY29uc3RydWN0b3IpOiBMaWtld2lzZS4KCSogY2FsbC5jIChidWlsZF9vdmVyX2NhbGwpOiBMaWtld2lzZS4KClNhdCBBcHIgIDQgMTg6NDM6NTggMTk5OCAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogdHJlZS5jIChhdm9pZF9vdmVybGFwKTogUmV0dXJuIGEgdmFsdWUuCgpTYXQgQXByICA0IDEyOjUyOjM1IDE5OTggIEplZmZyZXkgQSBMYXcgIChsYXdAY3lnbnVzLmNvbSkKCgkqIG1ldGhvZC5jIChjaGVja19idHlwZSk6IEFkZCBtaXNzaW5nIGFyZ3VtZW50IHRvIHhyZWFsbG9jLgoJKGNoZWNrX2t0eXBlKTogTGlrZXdpc2UuCgpGcmkgQXByICAzIDAyOjIyOjU5IDE5OTggIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCglJbXBsZW1lbnQgZW1wdHkgYmFzZSBvcHRpbWl6YXRpb24uCgkqIGNsYXNzLmMgKGZpbmlzaF9zdHJ1Y3RfMSk6IEFkZCB2YmFzZSBmaWVsZHMgZWFybGllci4gIFNldAoJQ0xBU1NUWVBFX1NJWkUgb2YgYW4gZW1wdHkgYmFzZSB0byAwLiAgVHlwZXMgd2l0aCBiYXNlcyBjYW4gYmUgZW1wdHkuCgkqIHNlYXJjaC5jIChkZnNfY2hlY2tfb3ZlcmxhcCwgZGZzX25vX292ZXJsYXBfeWV0KTogTmV3IGZucy4KCSh0eXBlc19vdmVybGFwX3ApOiBOZXcgZm4uCgkqIHRyZWUuYyAoYXZvaWRfb3ZlcmxhcCk6IE5ldyBmbi4KCShidWlsZF9iYXNlX2ZpZWxkcyk6IFVzZSBpdCB0byBhdm9pZCBvdmVybGFwcGluZyBlbXB0eSBiYXNlcy4KCSogY3AtdHJlZS5oLCBkZWNsMi5jLCBsYW5nLW9wdGlvbnMuaDogQWRkIC1mbmV3LWFiaS4KCgkqIGRlY2wuYyAoY3BsdXNfZXhwYW5kX2V4cHJfc3RtdCk6IFN0cmlwIHVudXNlZCBJTkRJUkVDVF9SRUZzLgoKCVJlLWltcGxlbWVudCBhbGxvY2F0aW9uIG9mIGJhc2UgY2xhc3Mgc3Vib2JqZWN0cy4KCSogdHJlZS5jICh1bnNoYXJlX2Jhc2VfYmluZm9zKTogTmV3IGZuLgoJKGxheW91dF9iYXNldHlwZXMpOiBVc2UgaXQuICBOb3cgaGFuZGxlcyBvZmZzZXRzIG9mIGJvdGggdmlydHVhbCBhbmQKCW5vbi12aXJ0dWFsIGJhc2VzLCBhZnRlciBsYXlvdXRfdHlwZS4KCShsYXlvdXRfdmJhc2V0eXBlcyk6IFJlbW92ZS4KCShidWlsZF9iYXNlX2ZpZWxkcyk6IEdlbmVyYXRlIEZJRUxEX0RFQ0xzIGZvciBlYWNoIG5vbi12aXJ0dWFsIGJhc2UuCgkoYnVpbGRfdmJhc2VfcG9pbnRlcl9maWVsZHMpOiBTcGxpdCBvdXQgZnJvbSBvbGQgbGF5b3V0X2Jhc2V0eXBlcy4KCSogY2xhc3MuYyAoZmluaXNoX2Jhc2Vfc3RydWN0KTogTG9zZSBvZmZzZXQgaGFuZGxpbmcgY29kZS4KCU1vdmUgbm9udmR0b3Igd2FybmluZyBoZXJlLiAgRG9uJ3QgbWVzcyB3aXRoIHRfYmluZm8gYW55bW9yZS4KCShmaW5pc2hfc3RydWN0XzEpOiBEb24ndCBtZXNzIHdpdGggdF9iaW5mbyBhbnltb3JlLiAgVXNlIGZucyBhYm92ZS4KCSogY3AtdHJlZS5oOiBBZGp1c3QuCgpUaHUgQXByICAyIDE0OjI1OjEzIDE5OTggIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIGNwLXRyZWUuaDogTG9zZSBDTEFTU1RZUEVfVkJBU0VfU0laRSwgc29tZSB1bnVzZWQgc3R1ZmYuCgkqIGRlY2wuYywgZGVjbDIuYywgcHQuYywgcHRyZWUuYywgbGV4LmM6IExpa2V3aXNlLgoJKiBjbGFzcy5jIChkdXBsaWNhdGVfdGFnX2Vycm9yKTogTGlrZXdpc2UuCgkoZmluaXNoX3N0cnVjdF8xKTogU2V0IENMQVNTVFlQRV9TSVpFLCBDTEFTU1RZUEVfTU9ERSwgQ0xBU1NUWVBFX0FMSUdOLgoJKiB0cmVlLmMgKGxheW91dF92YmFzZXR5cGVzKTogVXBkYXRlIGZyb20gbGF5b3V0X3JlY29yZCwgcmVtb3ZlCgl2YXJfc2l6ZSBzdXBwb3J0LCB1c2UgQ0xBU1NUWVBFX1NJWkUgaW5zdGVhZCBvZiBDTEFTU1RZUEVfVkJBU0VfU0laRS4KCShsYXlvdXRfYmFzZXR5cGVzKTogTGlrZXdpc2UuCgpXZWQgQXByICAxIDE4OjIyOjI1IDE5OTggIEplZmZyZXkgQSBMYXcgIChsYXdAY3lnbnVzLmNvbSkKCgkqIGNsYXNzLmMsIE1ha2Ugc3VyZSBzeXN0ZW0uaCBpcyBpbmNsdWRlZCBqdXN0IGFmdGVyIGNvbmZpZy5oLgoJRGVsZXRlIGxpbmdlcmluZyBzdGRpbyBhbmQgZXJybm8gcmVmZXJlbmNlcyB0b28uCgkqIGRlY2wuYywgZXJyZm4uYywgcGFyc2UueSwgcHRyZWUuYyBzZWFyY2guYywgeHJlZi5jOiBMaWtld2lzZS4KCldlZCBBcHIgIDEgMTU6Mzg6MzYgMTk5OCAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogZnJpZW5kLmMgKGlzX2ZyaWVuZCk6IEZpeCBhY2Nlc3MgY29udHJvbCBmb3IgbG9jYWwgY2xhc3Nlcy4KCgkqIGNsYXNzLmMgKGlzX2VtcHR5X2NsYXNzKTogTmV3IGZuLgoJKiBjYWxsLmMgKGJ1aWxkX2NhbGwpOiBEb24ndCBwYXNzIGVtcHR5IGNsYXNzIG9iamVjdHMgdG8gYSBmdW5jdGlvbi4KCldlZCBBcHIgIDEgMTQ6NTg6MzUgMTk5OCAgTWFyayBNaXRjaGVsbCAgPG1taXRjaGVsbEB1c2EubmV0PgoKCSogY2FsbC5jIChidWlsZF9vdmVyX2NhbGwpOiBEbyBuYW1lIHJlc29sdXRpb24gZm9yIGRlZmF1bHQKCWFyZ3VtZW50cyBvZiBmdW5jdGlvbiB0ZW1wbGF0ZXMgaW4gdGhlIHNjb3BlIG9mIHRoZSB0ZW1wbGF0ZXMuCgpUdWUgTWFyIDMxIDEzOjQzOjU3IDE5OTggIEplZmZyZXkgQSBMYXcgIChsYXdAY3lnbnVzLmNvbSkKCgkqIGNhbGwuYzogSW5jbHVkZSBzeXN0ZW0uaC4gIFJlbW92ZSBpbmNsdWRlcywgZGVjbGFyYXRpb25zIGFuZAoJZGVmaW5lcyBwcm92aWRlZCBieSBzeXN0ZW0uaC4KCSogY2xhc3MuYywgY3Z0LmMsIGRlY2wuYywgZGVjbDIuYywgZXJyZm4uYyBlcnJvci5jOiBMaWtld2lzZS4KCSogZXhjZXB0LmMsIGV4cHIuYyBmcmllbmQuYywgZysrc3BlYy5jLCBpbml0LmMsIGlucHV0LmM6IExpa2V3aXNlLgoJKiBsZXguYywgcGFyc2UueSwgcHQuYywgcHRyZWUuYyByZXBvLmMgcnR0aS5jLCBzZWFyY2guYzogTGlrZXdpc2UuCgkqIHNlbWFudGljcy5jLCBzaWcuYywgc3Bldy5jLCB0cmVlLmMsIHR5cGVjay5jOiBMaWtld2lzZS4KCSogdHlwZWNrMi5jLCB4cmVmLmM6IExpa2V3aXNlLgoJKiBNYWtlZmlsZS5pbjogRGVwZW5kZW5jaWVzIHVwZGF0ZWQgYXMgYXBwcm9wcmlhdGUuCgkqIE1ha2UtbGFuZy5pbjogTGlrZXdpc2UuCgpNb24gTWFyIDMwIDEyOjE1OjAwIDE5OTggIE1hcmsgTWl0Y2hlbGwgIDxtbWl0Y2hlbGxAdXNhLm5ldD4KCgkqIHB0LmMgKGZuX3R5cGVfdW5pZmljYXRpb24pOiBBbGxvdyBpbmNvbXBsZXRlIHVuaWZpY2F0aW9uIHdpdGhvdXQKCWFuIGltbWVkaWF0ZSBlcnJvciBtZXNzYWdlLgoKTW9uIE1hciAzMCAwODo1NTo0MiAxOTk4ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiB0cmVlLmMgKG1lbWJlcl9wKTogTmV3IGZuLgoJKiBkZWNsMi5jIChmaW5pc2hfZmlsZSk6IE9ubHkgc2V0IERFQ0xfU1RBVElDX0ZVTkNUSU9OX1AgZm9yCglpbml0aWFsaXppbmcgY2xhc3MgbWVtYmVycy4KCgkqIGNwLXRyZWUuZGVmIChURU1QTEFURV9QQVJNX0lOREVYKTogQ2xhc3MgJ3gnLgoJKiBwdHJlZS5jIChsYW5nX3ByaW50X3hub2RlKTogSGFuZGxlIFRFTVBMQVRFX1BBUk1fSU5ERVguCgoJKiBjYWxsLmMgKGJ1aWxkX21ldGhvZF9jYWxsKTogSGFuZGxlIG5vbi1zY29wZWQgZGVzdHJ1Y3RvcnMsIHRvby4KCSogcHQuYyAodHN1YnN0X2NvcHkpOiBMaWtld2lzZS4KCgkqIHB0LmMgKHByaW50X3RlbXBsYXRlX2NvbnRleHQpOiBTcGxpdCBvdXQuLi4KCShwdXNoX3RpbnN0X2xldmVsKTogLi4uZnJvbSBoZXJlLgoKCSogZnJpZW5kLmMgKGlzX2ZyaWVuZCk6IERvbid0IHBhc3MgYSB0eXBlIHRvIGRlY2xfZnVuY3Rpb25fY29udGV4dC4KCgkqIHR5cGVjay5jIChjb252ZXJ0X2Zvcl9pbml0aWFsaXphdGlvbik6IEFsd2F5cyBoYW5kIG9mZgoJY29udmVyc2lvbnMgdG8gY2xhc3MgdHlwZS4KClN1biBNYXIgMjkgMjA6MDE6NTkgMTk5OCAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogZnJpZW5kLmMgKGlzX2ZyaWVuZCk6IExvY2FsIGNsYXNzZXMgaGF2ZSB0aGUgc2FtZSBhY2Nlc3MgYXMgdGhlCgllbmNsb3NpbmcgZnVuY3Rpb24uCgpTdW4gTWFyIDI5IDAwOjQ3OjMyIDE5OTggIEplZmZyZXkgQSBMYXcgIChsYXdAY3lnbnVzLmNvbSkKCgkqIHR5cGVjay5jIChleHBhbmRfdGFyZ2V0X2V4cHIpOiBEZWxldGUgZGVhZCBmdW5jdGlvbi4KCgkqIHNlYXJjaC5jOiBQdXQgdmFyaW91cyBwcm90b3R5cGVzIGluc2lkZSAjaWZkZWYgTUlfTUFUUklYLgoKCSogcmVwby5jIChzYXZlX3N0cmluZyk6IERlbGV0ZSBkZWFkIGZ1bmN0aW9uLgoKCSogbWV0aG9kLmMgKHRodW5rX3ByaW50YWJsZV9uYW1lKTogRGVsZXRlIGRlYWQgZnVuY3Rpb24uCgoJKiBsZXguYyAoeXluZXh0Y2gpOiBEZWxldGUgZGVhZCBmdW5jdGlvbi4KCgkqIGV4cHIuYyAodHJlZV9leHRyYWN0X2FnZ3JfaW5pdCk6ICNpZiAwIG91dC4KCgkqIGV4Y2VwdC5jIChkb191bndpbmQpOiBEZWxldGUgZGVhZCBmdW5jdGlvbi4KCShlYXN5X2V4cGFuZF9hc20pOiBMaWtld2lzZS4KCgkqIGN2dC5jIChidWlsZF9jb252ZXJzaW9uX3R5cGVfMSk6IERlbGV0ZSBkZWFkIGZ1bmN0aW9uLgoKCSogY3AtdHJlZS5oIChwdXNoX2V4cHJlc3Npb25fb2JzdGFjayk6IERlY2xhcmUuCgoJKiBjYWxsLmMgKHNvdXJjZV90eXBlKTogI2lmIDAgb3V0LgoKCSogY2xhc3MuYyAoYWx0ZXJfYWNjZXNzKTogUmVtb3ZlIHVudXNlZCBsYWJlbC4gIEFkZCBicmFjZXMKCWFyb3VuZCBlbXB0eSBlbHNlIGNsYXVzZS4KCgkqIGxleC5jICh5eXByaW50KTogRml4IGFyZ3VtZW50IHRvIHByaW50Zi4KClNhdCBNYXIgMjggMTc6NDM6NTIgMTk5OCAgTWFyayBNaXRjaGVsbCAgPG1taXRjaGVsbEB1c2EubmV0PgoKCSogcHQuYyAodHN1YnN0KTogQ2xlYXIgVFJFRV9VU0VEIGZvciBuZXcgRlVOQ1RJT05fREVDTHMuCgoJKiBwdC5jIChpbnN0YW50aWF0ZV9jbGFzc190ZW1wbGF0ZSk6IE1ha2Ugc3VyZSB0ZW1wbGF0ZQoJYXJndW1lbnRzIGFyZSBwZXJtYW5lbnQuCgkqIGluaXQuYyAocmVzb2x2ZV9vZmZzZXRfcmVmKTogRG9uJ3QgZ28gbG9va2luZyBhcm91bmQgaW4KCXRlbXBsYXRlIHR5cGVzLgoKCSogc2VtYW50aWNzLmM6IEFkZCByb3V0aW5lcyB0byBoYW5kbGUgZXhwcmVzc2lvbnMsIGFuZCBzb21lCglkZWNsYXJhdGlvbiBwcm9jZXNzaW5nLgoJKiBwYXJzZS55OiBVc2UgdGhlbS4KCShjdXJyZW50X2NsYXNzX2RlcHRoKTogTW92ZSBkZWNsYXJhdGlvbiB0byBjcC10cmVlLmguCgkqIHBhcnNlLmM6IFJlZ2VuZXJhdGVkLgoJKiBjcC10cmVlLmg6IFVzZSB0aGVtLgoJKGN1cnJlbnRfY2xhc3NfZGVwdGgpOiBEZWNsYXJlLgoJKiBwdC5jICh0c3Vic3RfY29weSk6IFVzZSBiZWdpbl9zdG10X2V4cHIgYW5kIGZpbmlzaF9zdG10X2V4cHIuCgpGcmkgTWFyIDI3IDIwOjIzOjE4IDE5OTggIE1hcmsgTWl0Y2hlbGwgIDxtbWl0Y2hlbGxAdXNhLm5ldD4KCgkqIGVycm9yLmMgKGR1bXBfZGVjbCk6IEJlIGEgYml0IG1vcmUgZXhwbGljaXQgd2l0aCB0ZW1wbGF0ZQoJdHlwZSBhcmd1bWVudHMsIHdoZW4gdmVyYm9zZS4KCkZyaSBNYXIgMjcgMTg6MTY6NDAgMTk5OCAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogaW5jL2V4Y2VwdGlvbjogUmVvcmRlciBjbG9zaW5nIGJyYWNlcy4KCkZyaSBNYXIgMjcgMTM6MjI6MTggMTk5OCAgTWFyayBNaXRjaGVsbCAgPG1taXRjaGVsbEB1c2EubmV0PgoKCSogcHQuYyAocmVkZWNsYXJlX2NsYXNzX3RlbXBsYXRlKTogTmV3IGZ1bmN0aW9uLgoJKiBjcF90cmVlLmggKHJlZGVjbGFyZV9jbGFzc190ZW1wbGF0ZSk6IERlY2xhcmUgaXQuCgkqIGRlY2wuYyAoeHJlZl90YWcpOiBVc2UgaXQuCgpUaHUgTWFyIDI2IDExOjE2OjMwIDE5OTggIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIGNhbGwuYyAoYnVpbGRfb3Zlcl9jYWxsKTogQ2hlY2sgSVNfQUdHUl9UWVBFLCBub3QKCVRZUEVfTEFOR19TUEVDSUZJQy4KCSogdHlwZWNrLmMgKGNvbnZlcnRfYXJndW1lbnRzKTogTGlrZXdpc2UuCgoJKiBkZWNsLmMgKGdyb2tkZWNsYXJhdG9yKTogUmVtb3ZlIGNvbnN0IGFuZCB2b2xhdGlsZSBmcm9tIHR5cGUgYWZ0ZXIKCXNldHRpbmcgY29uc3RwIGFuZCB2b2xhdGlsZXAuCgoJKiBjbGFzcy5jIChmaW5pc2hfc3RydWN0XzEpOiBEb24ndCB3YXJuIGFib3V0IGJvb2wgYml0ZmllbGQgbGFyZ2VyCgl0aGFuIG9uZSBiaXQuCgpUaHUgTWFyIDI2IDEwOjI1OjUyIDE5OTggIE1hcmsgTWl0Y2hlbGwgIDxtbWl0Y2hlbGxAdXNhLm5ldD4KCgkqIHB0LmMgKGNvbnZlcnRfbm9udHlwZV9hcmd1bWVudCk6IFNUUklQX05PUFMgd2hlcmUgYXBwcm9wcmlhdGUuCgpUaHUgTWFyIDI2IDEwOjI0OjA1IDE5OTggIE1hcmsgTWl0Y2hlbGwgIDxtbWl0Y2hlbGxAdXNhLm5ldD4KCgkqIGNhbGwuYyAoYnVpbGRfb2JqZWN0X2NhbGwpOiBDb21wbGFpbiBhYm91dCBhbWJpZ3VvdXMgb3BlcmF0b3IoKSwKCXJhdGhlciB0aGF0IGNyYXNoaW5nLgoJKGJ1aWxkX25ld19vcCk6IExpa2V3aXNlLgoJKGJ1aWxkX29wX2RlbGV0ZV9jYWxsKTogTGlrZXdpc2UuCgpUaHUgTWFyIDI2IDEwOjIzOjI0IDE5OTggIE1hcmsgTWl0Y2hlbGwgIDxtbWl0Y2hlbGxAdXNhLm5ldD4KCgkqIGN2dC5jIChwZXJmb3JtX3F1YWxpZmljYXRpb25fY29udmVyc2lvbnMpOiBVc2UgY29tcF90YXJnZXRfdHlwZXMKCWluc3RlYWQgb2YgY29tcF9wdHJfdHR5cGVzLgoKV2VkIE1hciAyNSAxNjoxMDo1MCAxOTk4ICBNYXJrIE1pdGNoZWxsICA8bW1pdGNoZWxsQHVzYS5uZXQ+CgoJKiBjcC10cmVlLmggKGVuZm9yY2VfYWNjZXNzKTogRGVjbGFyZS4KCSogY2FsbC5jIChlbmZvcmNlX2FjY2Vzcyk6IE1ha2UgaXQgZXh0ZXJuLCBub3Qgc3RhdGljLgoJKiBjbGFzcy5jIChhbHRlcl9hY2Nlc3MpOiBVc2UgZW5mb3JjZV9hY2Nlc3M7IG1vZGlmeSBjb2RlIGZvciBJU08KCWNvbXBsaWFuY2UsIHJhdGhlciB0aGFuIEFSTSBydWxlcy4KCldlZCBNYXIgMjUgMTI6MTA6NDUgMTk5OCAgS3JpYW5nIExlcmRzdXdhbmFraWogIDxsZXJkc3V3YUBzY2YudXNjLmVkdT4KCgkqIGNwLXRyZWUuaDogRml4IHR5cG8uCgpXZWQgTWFyIDI1IDAyOjAxOjAyIDE5OTggIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIGV4cHIuYyAoY3BsdXNfZXhwYW5kX2V4cHIpOiBPbmx5IGRvIFBDQ19TVEFUSUNfU1RSVUNUX1JFVFVSTiB0aGluZwoJaWYgKGFnZ3JlZ2F0ZV92YWx1ZV9wICh0eXBlKSkuCgoJKiBkZWNsMi5jIChjb25zdHJ1Y3Rvcl9uYW1lX2Z1bGwpOiBIYW5kbGUgVFlQRU5BTUVfVFlQRS4KClR1ZSBNYXIgMjQgMTY6MTI6MDEgMTk5OCAgTWFyayBNaXRjaGVsbCAgPG1taXRjaGVsbEB1c2EubmV0PgoKCSogdHJlZS5jIChtYXBjYXIpOiBXaGVuIGRlYWxpbmcgd2l0aCBhIERFQ0wsIHVzZSBpdCdzIGNvbnN0YW50Cgl2YWx1ZSwgaWYgYW55LgoJKiBwdC5jIChsb29rdXBfdGVtcGxhdGVfY2xhc3MpOiBEb24ndCBtYW5nbGUgdGhlIG5hbWVzIG9mIHRlbXBsYXRlCgljbGFzc2VzIHdob3NlIGFyZ3VtZW50cyBhcmUgdW5rbm93bi4KCgkqIHB0LmMgKHRzdWJzdF9leHByKTogSGFuZGxlIEdPVE9fU1RNVCBjb3JyZWN0bHkuCgpUdWUgTWFyIDI0IDEyOjIxOjU1IDE5OTggIEJlbmphbWluIEtvc25payAgPGJrb3pAbGlzYS5jeWdudXMuY29tPgoKCSogZGVjbC5jIChpbml0X2RlY2xfcHJvY2Vzc2luZyk6IFNldCBUWVBFX1BSRUNJU09OIGZvciBib29scyB0byAxLgoKVHVlIE1hciAyNCAxMjoyMTo0OCAxOTk4ICBKaW0gV2lsc29uICA8d2lsc29uQGN5Z251cy5jb20+CgoJKiBkZWNsLmMgKGluaXRfZGVjbF9wcm9jZXNzaW5nKTogSW5pdGlhbGl6ZSBUWVBFX01BWF9WQUxVRSBmb3IKCWJvb2xlYW5fdHlwZV9ub2RlIHRvIDEuCgpUdWUgTWFyIDI0IDEwOjIzOjQ3IDE5OTggIE1hcmsgTWl0Y2hlbGwgIDxtbWl0Y2hlbGxAdXNhLm5ldD4KCgkqIGVycm9yLmMgKGR1bXBfZXhwcik6IFJlbW92ZSB1bnVzZWQgdmFyaWFibGUgYGwnLgoKCSogcHQuYyAoZm9yX2VhY2hfdGVtcGxhdGVfcGFybSk6IE5ldyBmdW5jdGlvbiwgY3JlYXRlZCBieQoJY29udmVydGluZyB1c2VzX3RlbXBsYXRlX3Bhcm1zLgoJKHRyZWVfZm5fdCk6IE5ldyB0eXBlZGVmLgoJKHVzZXNfdGVtcGxhdGVfcGFybXMpOiBVc2UgaXQuCgkobWFya190ZW1wbGF0ZV9wYXJtKTogTmV3IGZ1bmN0aW9uLgoJKHB1c2hfdGVtcGxhdGVfZGVjbCk6IENoZWNrIHRoYXQgdGhlIGFyZ3VtZW50IGxpc3Qgb2YgYSBwYXJ0aWFsCglzcGVjaWFsaXphdGlvbiB1c2VzIGFsbCB0aGUgdGVtcGxhdGUgcGFyYW1ldGVycy4KCgkqIE1ha2UtbGFuZy5pbiAoYysrZmlsdCk6IERvbid0IGRlbGV0ZSBjeHhtYWluLmMgYWZ0ZXIgd2UncmUgZG9uZQoJd2l0aCBpdDsgd2UgbWlnaHQgd2FudCBpdCBmb3IgZGVidWdnaW5nLgoJKiBjcC10cmVlLmggKHR5cGVfdW5pZmljYXRpb24pOiBDaGFuZ2UgaW50ZXJmYWNlLgoJKiBjbGFzcy5jIChmaW5pc2hfc3RydWN0XzEpOiBTa2lwIG5lc3RlZCB0ZW1wbGF0ZSB0eXBlcywganVzdCBsaWtlCglvcmRpbmFyeSBuZXN0ZWQgdHlwZXMuCgkoaW5zdGFudGlhdGVfdHlwZSk6IFVzZSBuZXcgaW50ZXJmYWNlIHRvIHR5cGVfdW5pZmljYXRpb24uCgkqIGxleC5jIChpbml0X2xleCk6IEFkZCBfX3N6IGFzIG9wbmFtZSBmb3Igc2l6ZW9mLgoJKiBtZXRob2QuYyAoYnVpbGRfb3ZlcmxvYWRfc2NvcGVfcmVmKTogTmV3IGZ1bmN0aW9uLgoJKGJ1aWxkX292ZXJsb2FkX2ludCk6IEhhbmRsZSBjb21wbGV4IGV4cHJlc3Npb25zLiAgU2V0CgludW1lcmljX291dHB1dF9uZWVkX2JhciBpZiBuZWNlc3NhcnkuCgkoYnVpbGRfb3ZlcmxvYWRfdmFsdWUpOiBIYW5kbGUgbm9uLVBBUk1fREVDTCBub2RlczsgdGhpcwoJcm91dGluZSBpcyBub3cgdXNlZCBieSBidWlsZF9vdmVybG9hZF9pbnQuICBSZW1vdmUgc29tZQoJYXNzaWdubWVudHMgdG8gbnVtZXJpY19vdXRwdXRfbmVlZF9iYXIuICBVc2UKCWJ1aWxkX292ZXJsb2FkX3Njb3BlX3JlZi4KCShidWlsZF9xdWFsaWZpZWRfbmFtZSk6IE5vdGUgdGhhdCBzb21lIHRlbXBsYXRlIG1hbmdsZWQgbmFtZXMgZW5kCgl3aXRoIGRpZ2l0cywgYW5kIHNldCBudW1lcmljX291dHB1dF9uZWVkX2JhciBhcHByb3ByaWF0ZWx5LiAgVXNlCglidWlsZF91bmRlcnNjb3JlX2ludC4KCSogcHQuYyAodW5pZnkpOiBDaGFuZ2UgaW50ZXJmYWNlLgoJKHR5cGVfdW5pZmljYXRpb25fcmVhbCk6IExpa2V3aXNlLgoJKGRldGVybWluZV9zcGVjaWFsaXphdGlvbik6IFVzZSBuZXcgaW50ZXJmYWNlcy4KCSh0c3Vic3QpOiBEZWFsIGdyYWNlZnVsbHkgd2l0aCBzaXR1YXRpb25zIGluIHdoaWNoIHRoZSBhcmd1bWVudAoJdmVjdG9yIGlzIG5vdCBmdWxseSBmaWxsZWQuCgkoZm5fdHlwZV91bmlmaWNhdGlvbik6IFVzZSBuZXcgaW50ZXJmYWNlcy4KCSh0eXBlX3VuaWZpY2F0aW9uKTogTGlrZXdpc2UuICBSZW1vdmUgTk9QX0VYUFIgaGFjay4KCSh0eXBlX3VuaWZpY2F0aW9uX3JlYWwpOiBMaWtld2lzZS4KCSh1bmlmeSk6IExpa2V3aXNlLiAgRGVhbCB3aXRoIHVuaWZpY2F0aW9uIG9mIGNvbXBsZXggZXhwcmVzc2lvbnMuCgpNb24gTWFyIDIzIDEyOjI0OjM3IDE5OTggIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIHB0LmMgKGNvbXBsZXRlX3RlbXBsYXRlX2FyZ3MpOiBJbml0aWFsaXplIHNraXAgcHJvcGVybHkuCgoJKiBkZWNsLmMgKG1ha2VfdHlwZW5hbWVfdHlwZSk6IFJldmVydC4KCShtYWtlX2ltcGxpY2l0X3R5cGVuYW1lKTogUmVtb3ZlLgoJKGxvb2t1cF9uYW1lX3JlYWwpOiBEb24ndCBjYWxsIGl0LiAgQ2FsbCBsb29rdXBfZmllbGQgaWYgd2Ugc2VlIGEKCVRZUEVfREVDTCBmcm9tIGEgdGVtcGxhdGUgYmFzZS4KCSogc2VhcmNoLmMgKGxvb2t1cF9maWVsZCk6IERvIGltcGxpY2l0IHR5cGVuYW1lIHN0dWZmLgoKU3VuIE1hciAyMiAwMDo1MDo0MiAxOTk4ICBOaWNrIENsaWZ0b24gIDxuaWNrY0BjeWdudXMuY29tPgoJCQkgIEdlb2ZmIE5vZXIgICAgPG5vZXJAY3lnbnVzLmNvbT4KCgkqIE1ha2VmaWxlLmluOiBWYXJpb3VzIGZpeGVzIGZvciBidWlsZGluZyBjeWd3aW4zMiBuYXRpdmUgdG9vbGNoYWlucy4KCSogTWFrZS1sYW5nLmluOiBMaWtld2lzZS4KCkZyaSBNYXIgMjAgMTg6MDc6MzkgMTk5OCAgS3JpYW5nIExlcmRzdXdhbmFraWogIDxsZXJkc3V3YUBzY2YudXNjLmVkdT4KCgkqIHB0LmMgKHRzdWJzdCwgVEVNUExBVEVfVEVNUExBVEVfUEFSTSk6IFNpbXBsaWZ5LgoKRnJpIE1hciAyMCAxMDo0MjowNyAxOTk4ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBkZWNsLmMgKG1ha2VfaW1wbGljaXRfdHlwZW5hbWUpOiBSZXdyaXRlIHJlbW92ZWQgY29kZS4KCShtYWtlX3R5cGVuYW1lX3R5cGUpOiBDYWxsIGl0IGlmIHRoZSB0eXBlIHdlIGxvb2sgdXAgY29tZXMgZnJvbQoJYSBiYXNlIHRoYXQgdXNlcyB0ZW1wbGF0ZSBwYXJtcy4KCgkqIHB0LmMgKGNvbXBsZXRlX3RlbXBsYXRlX2FyZ3MpOiBSZXdyaXRlLgoJKHRzdWJzdCwgRlVOQ1RJT05fREVDTCk6IFVzZSBpdC4KCkZyaSBNYXIgMjAgMDg6MTI6NDMgMTk5OCAgSC5KLiBMdSAgKGhqbEBnbnUub3JnKQoKCSogc2VtYW50aWNzLmMgKGZpbmlzaF9hc21fc3RtdCk6IEZpeCBjb21iaW5lIHN0cmluZ3MuICBDYWxsCgljX2V4cGFuZF9hc21fb3BlcmFuZHMgKCkgaWYgb3V0cHV0X29wZXJhbmRzLCBpbnB1dF9vcGVyYW5kcyBvcgoJY2xvYmJlcnMgaXMgbm90IE5VTExfVFJFRS4KCkZyaSBNYXIgMjAgMDA6MTA6MTkgMTk5OCAgS3JpYW5nIExlcmRzdXdhbmFraWogIDxsZXJkc3V3YUBzY2YudXNjLmVkdT4KCgkqIHB0LmMgKGNvbXBsZXRlX3RlbXBsYXRlX2FyZ3MpOiBOZXcgZnVuY3Rpb24uCgkoZ2V0X2JpbmRpbmdzKTogRGVhbCB3aXRoIHNwZWNpYWxpemF0aW9ucyBvZiBmdW5jdGlvbiB0ZW1wbGF0ZXMKCXdpdGggcmV0dXJuIHR5cGUgY29udGFpbmluZyBwYXJhbWV0ZXJzIGZyb20gb3V0ZXIgY2xhc3MKCXRlbXBsYXRlcy4KCSh0c3Vic3QsIFRFTVBMQVRFX1RFTVBMQVRFX1BBUk0pOiBXaGVuIHJlZHVjaW5nIHBhcmFtZXRlciBsZXZlbCwKCXN1YnN0aXR1dGUgYXJndW1lbnRzIGFuZCBjb21wb3NlIGEgbmV3IHR5cGUuCgpUaHUgTWFyIDE5IDE5OjAxOjQ4IDE5OTggIE1hcmsgTWl0Y2hlbGwgIDxtbWl0Y2hlbGxAdXNhLm5ldD4KCgkqIHB0LmMgKHRzdWJzdCk6IENsZWFyIERFQ0xfUEVORElOR19JTkxJTkVfSU5GTyBmb3IgbmV3CglGVU5DVElPTl9ERUNMcy4KClRodSBNYXIgMTkgMTE6NTE6NTggMTk5OCAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogZGVjbC5jIChtYWtlX2ltcGxpY2l0X3R5cGVuYW1lKTogTG9zZSB1c2VsZXNzIGNvZGUuCgoJKiBjYWxsLmMgKHN0YW5kYXJkX2NvbnZlcnNpb24pOiBIYW5kbGUgQSogLT4gY29uc3QgQSogcHJvcGVybHkuCgoJKiBwdC5jIChnZXRfYmluZGluZ3NfcmVhbCk6IFJlbmFtZSBmcm9tIGdldF9iaW5kaW5ncy4gIEFkZAoJY2hlY2tfcmV0dHlwZSBwYXJtLgoJKGdldF9iaW5kaW5ncyk6IFBhc3MgMS4KCShnZXRfYmluZGluZ3Nfb3ZlcmxvYWQpOiBQYXNzIDAuCgpXZWQgTWFyIDE5IDA5OjA4OjEyIDE5OTggIE1hcmsgTWl0Y2hlbGwgIDxtbWl0Y2hlbGxAdXNhLm5ldD4KCgkqIHB0LmMgKGNoZWNrX2V4cGxpY2l0X3NwZWNpYWxpemF0aW9uKTogV2hlbiByZXZlcnRpbmcgYSBzdGF0aWMKCW1lbWJlciBmdW5jdGlvbiwgYWxzbyByZW1vdmUgdGhlIGB0aGlzJyBwYXJhbWV0ZXIgZnJvbQoJbGFzdF9mdW5jdGlvbl9wYXJtcy4KClRodSBNYXIgMTkgMDI6Mjc6NDggMTk5OCAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogcHQuYyAodHN1YnN0X2NvcHksIENPTlNUX0RFQ0wpOiBEb24ndCBib3RoZXIgdHN1YnN0aW5nCglhIGZ1bmN0aW9uIGNvbnRleHQuCgoJKiBkZWNsLmMgKHN0b3JlX2JpbmRpbmdzKTogVXNlIGZyZWVfYmluZGluZ192ZWNzLgoJKHBvcF9mcm9tX3RvcF9sZXZlbCk6IExpa2V3aXNlLgoKV2VkIE1hciAxOCAxMjo0MTo0MyAxOTk4ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBkZWNsLmMgKG1ha2VfaW1wbGljaXRfdHlwZW5hbWUpOiBPbmx5IGNoYW5nZSB0aGUgdHlwZSBvZiBhCglUWVBFTkFNRV9UWVBFLgoKV2VkIE1hciAxOCAxMDowOTo1MSAxOTk4ICBNYXJrIE1pdGNoZWxsICA8bW1pdGNoZWxsQHVzYS5uZXQ+CgoJKiBzZW1hbnRpY3MuYzogTmV3IGZpbGUsIGNvbnRhaW5pbmcgcm91dGluZXMgdG8gcGVyZm9ybSB0aGUKCXNlbWFudGljIHBoYXNlIG9mIHBhcnNpbmcuCgkqIHBhcnNlLnk6IFVzZSBpdC4KCSogcHQuYyAodHN1YnN0X2V4cHIpOiBMaWtld2lzZS4KCSogY3AtdHJlZS5oOiBEZWNsYXJlIHRoZSB2YXJpb3VzIGZ1bmN0aW9ucyBpbiBzZW1hbnRpY3MuYy4KCVByb3ZpZGUgbWFjcm9zIHRvIGFjY2VzcyBfU1RNVCB0cmVlIG5vZGVzLgoJKiBjcC10cmVlLmRlZjogQWRkIEFTTV9TVE1UIHRyZWUgbm9kZS4KCSogTWFrZWZpbGUuaW4sIE1ha2UtbGFuZy5pbjogQWRkIGRlcGVuZGVuY2llcyBvbiBhbmQgZm9yCglzZW1hbnRpY3MuYy4KCldlZCBNYXIgMTggMDA6MjQ6MTAgMTk5OCAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogcHQuYyAocHVzaF90ZW1wbGF0ZV9kZWNsKTogT25seSBjaGVjayBwcmltYXJ5IHRlbXBsYXRlcy4KCgkqIHB0LmMgKGNoZWNrX2V4cGxpY2l0X3NwZWNpYWxpemF0aW9uKTogQ29tcGxhaW4gYWJvdXQgZGVmYXVsdCBhcmdzCglpbiBleHBsaWNpdCBzcGVjaWFsaXphdGlvbi4KCgkqIHBhcnNlLnkgKG5vbW9kc19pbml0ZGNsMCk6IEFsc28gY2FsbCBjcF9maW5pc2hfZGVjbCBmb3IgYQoJY29uc3RydWN0b3JfZGVjbGFyYXRvci4KClR1ZSBNYXIgMTcgMTQ6NDQ6NTQgMTk5OCAgTWFyayBNaXRjaGVsbCAgPG1taXRjaGVsbEB1c2EubmV0PgoKCSogdHlwZWNrMi5jIChidWlsZF94X2Fycm93KTogRG9uJ3QgY3Jhc2ggd2hlbiBhbiBhZ2dyZWdhdGUgdHlwZQoJaGFzIG5vIG92ZXJsb2FkZWQgb3BlcmF0b3IgLT4uCgoJKiBjYWxsLmMgKGJ1aWxkX2ZpZWxkX2NhbGwpOiBEb24ndCBjcmFzaCB3aGVuIHByZXNlbnRlZCB3aXRoIGEKCWZpZWxkIHRoYXQgaXMgYWN0dWFsbHkgYSBuZXN0ZWQgdHlwZS4KCgkqIGRlY2wuYyAocHVzaHRhZyk6IERlYWwgd2l0aCBmcmllbmQgY2xhc3MgaW5qZWN0aW9uIGluIGxvY2FsCgljbGFzc2VzLgoKCSogY2FsbC5jIChidWlsZF9vYmplY3RfY2FsbCk6IERvbid0IGNyYXNoIGlmIE9CSiBpcyBhCglwb2ludGVyLXRvLW1lbWJlci1mdW5jdGlvbi4KClR1ZSBNYXIgMTcgMTE6NDA6MjYgMTk5OCAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogcHQuYyAocHVzaF90ZW1wbGF0ZV9kZWNsKTogQ29tcGxhaW4gYWJvdXQgdGVtcGxhdGUgd2l0aCBDIGxpbmthZ2UsCglhbm9ueW1vdXMgdGVtcGxhdGUgY2xhc3MuCgpNb24gTWFyIDE2IDEyOjEwOjM5IDE5OTggIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIGNsYXNzLmMgKHB1c2hjbGFzcyk6IE9ubHkgdXNlIHRoZSBtaV9tYXRyaXggc3R1ZmYgI2lmZGVmIE1JX01BVFJJWC4KCSogc2VhcmNoLmM6IExpa2V3aXNlLgoKCSogbGV4LmMgKGRvX3BlbmRpbmdfZGVmYXJncyk6IE9ubHkgY2FsbAoJbWF5YmVfe2JlZ2luLGVuZH1fbWVtYmVyX3RlbXBsYXRlX3Byb2Nlc3NpbmcgZm9yIEZVTkNUSU9OX0RFQ0xzLgoKCSogcGFyc2UueSAoaW5pdGRjbDBfaW5uYXJkcyk6IE1vdmUgbWF5YmVhc20gYmFjayBpbnRvIGluaXRkY2wwIGV0IGFsLgoKTW9uIE1hciAxNiAxMDo0NzoyMiAxOTk4ICBNYXJrIE1pdGNoZWxsICA8bW1pdGNoZWxsQHVzYS5uZXQ+CgoJKiBwYXJzZS55OiBEZWFsIHdpdGggQ09OU1RSVUNUT1JTIGluIG5ld19pbml0aWFsaXplcnMuCgpNb24gTWFyIDE2IDEwOjU0OjIxIDE5OTggIE1hcmsgTWl0Y2hlbGwgIDxtbWl0Y2hlbGxAdXNhLm5ldD4KCgkqIHB0LmMgKHRzdWJzdF9jb3B5KTogRGVhbCB3aXRoIEJJTkRfRVhQUiBpbiBhIHdheSB0aGF0IG1vcmUKCWNsb3NlbHkgbWltaWNzIHRoZSBiZWhhdmlvciBpbiBwYXJzZS55LgoJKHRzdWJzdF9leHByKTogUmV0dXJuIHRoZSByZXN1bHRpbmcgQkxPQ0sgd2hlbiBtYWtpbmcgYSB0c3Vic3QnaW5nCglpbnRvIGEgY29tcG91bmQgc3RhdGVtZW50LgoKU3VuIE1hciAxNSAwMjowNzoyNiAxOTk4ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBjcC10cmVlLmggKFRFTVBMQVRFX1BBUk1TX0ZPUl9JTkxJTkUpOiBOZXcgbWFjcm8uCgkqIHB0LmMgKGlubGluZV9uZWVkc190ZW1wbGF0ZV9wYXJtcyk6IE5ldyBmbi4KCShvcmlnaW5hbF90ZW1wbGF0ZSk6IE5ldyBmbi4KCShwdXNoX2lubGluZV90ZW1wbGF0ZV9wYXJtc19yZWN1cnNpdmUpOiBOZXcgZm4uCgkobWF5YmVfYmVnaW5fbWVtYmVyX3RlbXBsYXRlX3Byb2Nlc3NpbmcpOiBVc2UgdGhlbS4KCShtYXliZV9lbmRfbWVtYmVyX3RlbXBsYXRlX3Byb2Nlc3NpbmcpOiBMaWtld2lzZS4KCShpc19tZW1iZXJfb3JfZnJpZW5kX3RlbXBsYXRlKTogUmVuYW1lIHRvIGlzX21lbWJlcl90ZW1wbGF0ZS4KCU1lbWJlciBmdW5jdGlvbnMgb2YgbG9jYWwgY2xhc3NlcyBhcmUgbmV2ZXIgbWVtYmVyIHRlbXBsYXRlcy4KClN1biBNYXIgMTUgMDE6MTQ6MjIgMTk5OCAgS3JpYW5nIExlcmRzdXdhbmFraWogIDxsZXJkc3V3YUBzY2YudXNjLmVkdT4KCgkqIGxleC5jIChkb19pZGVudGlmaWVyKTogSGFuZGxlIFRFTVBMQVRFX0RFQ0wgdGhhdCB3YXMKCWFkZGVkIGluIHRoZSBjbGFzcyBzY29wZSB0byBjYXRjaCByZWRlZmluaXRpb24gZXJyb3IuCgoJKiBwdC5jIChyZWR1Y2VfdGVtcGxhdGVfcGFybV9sZXZlbCk6IEFsc28gY29weQoJdGhlIERFQ0xfVEVNUExBVEVfUEFSTVMgZmllbGQuCgpTdW4gTWFyIDE1IDEwOjU0OjA4IDE5OTggIE1hcmsgTWl0Y2hlbGwgIDxtbWl0Y2hlbGxAdXNhLm5ldD4KCgkqIHB0LmMgKHRzdWJzdCk6IENsZWFyIFRZUEVfUkVGRVJFTkNFX1RPIHdoZW4gY3JlYXRpbmcgYQoJcmVkdWNlZC1sZXZlbCB0ZW1wbGF0ZSB0eXBlIHBhcmFtZXRlci4KClN1biBNYXIgMTUgMTI6MjY6MDIgMTk5OCAgTWFuZnJlZCBIb2xsc3RlaW4gIDxtYW5mcmVkQHMtZGlyZWt0bmV0LmRlPgoKCSogY3AtdHJlZS5oIChzdHJ1Y3QgbGFuZ19kZWNsX2ZsYWdzKTogQWRkIG5lZWRzX2ZpbmFsX292ZXJyaWRlci4KCShERUNMX05FRURTX0ZJTkFMX09WRVJSSURFUl9QKTogTmV3IG1hY3JvLgoJKiBjbGFzcy5jIChvdmVycmlkZV9vbmVfdnRhYmxlKTogU2V0IERFQ0xfTkVFRFNfRklOQUxfT1ZFUlJJREVSX1AuCgkqIGRlY2wuYyAoZHVwbGljYXRlX2RlY2xzKTogUHJvcGFnYXRlIGl0LgoJKiB0eXBlY2syLmMgKGFic3RyYWN0X3ZpcnR1YWxzX2Vycm9yKTogVXNlIHR3byBsb29wcyB0byBlbWl0CglhYnN0cmFjdCB2aXJ0dWFsIGZ1bmN0aW9ucyBhbmQgdmlydHVhbCBmdW5jdGlvbnMgd2hpY2ggbmVlZCBhCglmaW5hbCBvdmVycmlkZXIgc2VwYXJhdGVseS4KClRodSBNYXIgMTIgMDk6Mzk6NDAgMTk5OCAgTWFuZnJlZCBIb2xsc3RlaW4gIDxtYW5mcmVkQHMtZGlyZWt0bmV0LmRlPgoKCSogbGFuZy1zcGVjcy5oOiBQcm9wZXJseSBwdXQgYnJhY2tldHMgYXJvdW5kIGFycmF5IGVsZW1lbnRzIGluCglpbml0aWFsaXplci4KCgkqIHR5cGVjay5jIChidWlsZF9iaW5hcnlfb3Bfbm9kZWZhdWx0KTogQ29ycmVjdGx5IHBsYWNlIHBhcmVucyBhcm91bmQKCSYmIGFuZCB8fCBpbiBleHByZXNzaW9uLgoKVGh1IE1hciAxMiAwOToyNjowNCAxOTk4ICBNYW5mcmVkIEhvbGxzdGVpbiAgPG1hbmZyZWRAcy1kaXJla3RuZXQuZGU+CgoJKiBjYWxsLmMgKGRlZmF1bHRfcGFybV9jb252ZXJzaW9ucyk6IFJlbW92ZSBwcm90b3R5cGUgZGVmaW5pdGlvbi4KCShidWlsZF9tZXRob2RfY2FsbCk6IFJlbW92ZSB1bnVzZWQgdmFyaWFibGUgcmVzdWx0LgoKCSogY3Z0LmMgKG9jcF9jb252ZXJ0KTogUmVtb3ZlIHVudXNlZCB2YXJpYWJsZSBjb252ZXJzaW9uLgoKCSogZGVjbDIuYyAoYW1iaWd1b3VzX2RlY2wpOiBBZGQgZXhwbGljaXQgcGFyYW1ldGVyIGRlZmluaXRpb24gZm9yIG5hbWUuCgoJKiBleGNlcHQuYyAoZG9fdW53aW5kKTogI2lmIDAgZGVmaW5pdGlvbiBvZiB1bnVzZWQgdmFyaWFibGVzIGZjYWxsCglhbmQgbmV4dF9wYy4KCgkqIGV4cHIuYyAoZXh0cmFjdF9zY2FsYXJfaW5pdCk6ICNpZiAwIHByb3RvdHlwZSBhbmQgZnVuY3Rpb24KCWRlZmluaXRpb24uCgoJKiBpbml0LmMgKGV4cGFuZF9hZ2dyX2luaXRfMSk6IFJlbW92ZSB1bnVzZWQgdmFyaWFibGUgaW5pdF90eXBlLgoJKGJ1aWxkX25ld18xKTogUmVtb3ZlIHVudXNlZCB2YXJpYWJsZSB0LgoKCSogcHQuYyAoaW5zdGFudGlhdGVfY2xhc3NfdGVtcGxhdGUpOiBSZW1vdmUgdW51c2VkIHZhcmlhYmxlIG5ld3RhZzsKCWNhc3QgY2FsbGVkIGZ1bmN0aW9uIHJldHVybiB2YWx1ZSB0byB2b2lkLgoJKGRvX2RlY2xfaW5zdGFudGlhdGlvbik6IFJlbW92ZSB1bnVzZWQgdmFyaWFibGVzIG5hbWUgYW5kIGZuLgoKCSogdHJlZS5jIChnZXRfdHlwZV9kZWNsKTogQWRkIGRlZmF1bHQgcmV0dXJuIHRvIHNodXQgdXAgY29tcGlsZXIgZnJvbQoJY29tcGxhaW5pbmcgY29udHJvbCByZWFjaGVzIGVuZCBvZiBub24tdm9pZCBmdW5jdGlvbi4KCgkqIHR5cGVjay5jIChidWlsZF94X2NvbmRpdGlvbmFsX2V4cHIpOiBSZW1vdmUgdW51c2VkIHZhcmlhYmxlIHJ2YWwuCgpUaHUgTWFyIDEyIDA5OjEyOjE1IDE5OTggIE1hbmZyZWQgSG9sbHN0ZWluICA8bWFuZnJlZEBzLWRpcmVrdG5ldC5kZT4KCgkqIGNhbGwuYyAoZGVmYXVsdF9wYXJtX2NvbnZlcnNpb25zKTogUmVtb3ZlIHByb3RvdHlwZSBkZWZpbml0aW9uLgoJKGJ1aWxkX21ldGhvZF9jYWxsKTogUmVtb3ZlIHVudXNlZCB2YXJpYWJsZSByZXN1bHQuCgkoYnVpbGRfb3Zlcl9jYWxsKTogQWRkIGRlZmF1bHQgY2FzZSBpbiBlbnVtZXJhdGlvbiBzd2l0Y2guCgpUaHUgTWFyIDEyIDA4OjM5OjEzIDE5OTggIE1hbmZyZWQgSG9sbHN0ZWluICA8bWFuZnJlZEBzLWRpcmVrdG5ldC5kZT4KCgkqIGRlY2wyLmMgKGxhbmdfZGVjb2RlX29wdGlvbik6IENoYW5nZSBqJ3MgdHlwZSB0byBzaXplX3QuCgoJKiB0cmVlLmMgKGxheW91dF92YmFzZXR5cGVzKTogcmVjb3JkX2FsaWduIGFuZCBkZXNpcmVkX2FsaWduIGFyZSBvZgoJdHlwZSB1bnNpZ25lZCBpbnQ7IGNvbnN0X3NpemUgYW5kIG5vbnZpcnR1YWxfY29uc3Rfc2l6ZSBsaWtld2lzZS4KCldlZCBNYXIgMTEgMDc6MjU6MjAgMTk5OCAgTWFyayBNaXRjaGVsbCAgPG1taXRjaGVsbEB1c2EubmV0PgoKCSogcGFyc2UueSAobmV3X2luaXRpYWxpemVyKTogTWFrZSBzdXJlIGFsbCBpbml0aWFsaXplcnMgYXJlCglsaXN0cy4KClR1ZSBNYXIgMTAgMDc6MzI6MzYgMTk5OCAgTWFyayBNaXRjaGVsbCAgPG1taXRjaGVsbEB1c2EubmV0PgoKCSogZGVjbDIuYyAoaW1wb3J0X2V4cG9ydF9kZWNsKTogTWFyayB0aW5mbyBmdW5jdGlvbnMgZm9yCgljdi1xdWFsaWZpZWQgdmVyc2lvbnMgb2YgY2xhc3MgdHlwZXMgYXMgREVDTF9OT1RfUkVBTExZX0VYVEVSTi4KCkZyaSBNYXIgIDYgMjM6Mjc6MzUgMTk5OCAgSmVmZnJleSBBIExhdyAgKGxhd0BjeWdudXMuY29tKQoKCSogbWV0aG9kLmM6IEZpeCB0eXBvLgoKRnJpIE1hciAgNiAxMDowNjo1OSAxOTk4ICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBtZXRob2QuYzogSW5jbHVkZSAic3lzdGVtLmgiIHRvIGdldCBzdGRsaWIuaCwgc3RkaW8uaCwKCWN0eXBlLmgsIHN0cmluZy5oLCBldGMuCgkoaXNzdWVfbnJlcGVhdHMpOiBBZGQgZGVmYXVsdCBjYXNlIGluIGVudW1lcmF0aW9uIHN3aXRjaC4KCShjaGVja19idHlwZSk6IExpa2V3aXNlLgoJKHByb2Nlc3Nfb3ZlcmxvYWRfaXRlbSk6IExpa2V3aXNlLgoKCSogTWFrZWZpbGUuaW4gKG1ldGhvZC5vKTogRGVwZW5kIG9uIHN5c3RlbS5oLgoKV2VkIE1hciAgNCAyMjoyNjo1MyAxOTk4ICBBbmRyZWFzIFNjaHdhYiAgPHNjaHdhYkBpc3Nhbi5pbmZvcm1hdGlrLnVuaS1kb3J0bXVuZC5kZT4KCgkqIGxleC5jIChkb19zY29wZWRfaWQpOiBGaXggcGFyZW50aGVzaXppbmcuCgpXZWQgTWFyICA0IDEyOjExOjUzIDE5OTggIE1pY2hhZWwgVGllbWFubiAgPHRpZW1hbm5AYXhvbi5jeWdudXMuY29tPgoKCSogcnR0aS5jIChnZXRfdGluZm9fZm5fZHluYW1pYyk6IElmIHRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIGFuCglGTEFHX1JUVEkgaXMgdW5zZXQsIGluaXRpYWxpemUgdHlwZSBpbmZvIG1hY2hpbmVyeSBhbmQgY29udGludWUKCXdpdGggRkxBR19SVFRJIGVuYWJsZWQuCgkoZ2V0X3R5cGVpZCk6IExpa2V3aXNlLgoKV2VkIE1hciAgNCAxMTo0Nzo1NSAxOTk4ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiB0eXBlY2suYyAodW5hcnlfY29tcGxleF9sdmFsdWUpOiAmRDo6aSBoYXMgdHlwZSBCOjoqIGlmIGkgY29tZXMKCWZyb20gQi4KCldlZCBNYXIgIDQgMTE6Mjg6MDggMTk5OCAgTWFyayBNaXRjaGVsbCAgPG1taXRjaGVsbEB1c2EubmV0PgoKCSogcHQuYyAoZmluaXNoX21lbWJlcl90ZW1wbGF0ZV9kZWNsKTogRGVhbCBtb3JlIGdyYWNlZnVsbHkgd2l0aAoJaW52YWxpZCBkZWNsYXJhdGlvbnMuCgpUdWUgTWFyICAzIDAxOjM4OjE3IDE5OTggIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIGN2dC5jLCBkZWNsLmMsIGRlY2wyLmMsIGluaXQuYywgcnR0aS5jLCB0eXBlY2suYywgdHlwZWNrMi5jLAoJY3AtdHJlZS5oOiBDbGVhbiB1cCBtb3JlIG9sZCBvdmVybG9hZGluZyBjb2RlLCBvbGQgUlRUSSBjb2RlLCBhbmQKCXNvbWUgZm9ybWF0dGluZyBxdWlya3MuCgoJKiBjYWxsLmMsIGNsYXNzLmMsIGNwLXRyZWUuaCwgY3Z0LmMsIGRlY2wuYywgaW5pdC5jLCBsZXguYywKCW1ldGhvZC5jLCBwdC5jLCBwdHJlZS5jLCB0eXBlY2suYzogUmVtb3ZlIHN1cHBvcnQgZm9yCgktZm5vLWFuc2ktb3ZlcmxvYWRpbmcgYW5kIG92ZXJsb2FkaW5nIE1FVEhPRF9DQUxMX0VYUFIuCgkqIGNsYXNzLmg6IFJlbW92ZS4KCSogTWFrZWZpbGUuaW46IEFkanVzdC4KCgkqIHB0LmMgKHVuaWZ5KTogRG9uJ3QgYWxsb3cgcmVkdWNlZCBjdi1xdWFscyB3aGVuIHN0cmljdC4KCgkqIGNhbGwuYywgY2xhc3MuYywgcHQuYywgY3AtdHJlZS5oOiBSZW1vdmUgbnN1YnN0cyBwYXJtIGZyb20KCSp0eXBlX3VuaWZpY2F0aW9uKiBhbmQgdW5pZnkuCgpNb24gTWFyICAyIDEyOjExOjA2IDE5OTggIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIHBhcnNlLnkgKGV4cGxpY2l0X3RlbXBsYXRlX3R5cGUpOiBSZW1vdmUgVEVNUExBVEUga2V5d29yZC4KCShuZXN0ZWRfbmFtZV9zcGVjaWZpZXIpOiBBbmQgYWRkIGl0IGJlZm9yZSB0aGlzIHVzZS4KCSh0eXBlbmFtZV9zdWIwKTogQW5kIHRoaXMgdXNlLiAgQWxzbyBhZGQgdXNlIHdpdGhvdXQgdGhlIGtleXdvcmQuCgkodHlwZW5hbWVfc3ViMSk6IExpa2V3aXNlLgoJKiBwdC5jIChpbnN0YW50aWF0ZV9jbGFzc190ZW1wbGF0ZSk6IERvbid0IGFjdHVhbGx5IGluc3RhbnRpYXRlCglhbnl0aGluZyBpZiBvdXIgdHlwZSB1c2VzIHRlbXBsYXRlIHBhcm1zLgoKTW9uIE1hciAgMiAxMTowNDo1OSAxOTk4ICBKaW0gV2lsc29uICA8d2lsc29uQGN5Z251cy5jb20+CgoJKiBkZWNsLmMgKHN0YXJ0X2Z1bmN0aW9uKTogRG9uJ3QgY2FsbCB0ZW1wb3JhcnlfYWxsb2NhdGlvbiBmb3IgYQoJbmVzdGVkIGZ1bmN0aW9uLgoKU3VuIE1hciAgMSAyMTowNjozNyAxOTk4ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBwdC5jIChpbnN0YW50aWF0ZV9jbGFzc190ZW1wbGF0ZSk6IERvbid0IG1lc3Mgd2l0aCBmcmllbmRzIGlmCglvdXIgdHlwZSB1c2VzIHRlbXBsYXRlIHBhcm1zLgoKU2F0IEZlYiAyOCAxMjowNjo0NCAxOTk4ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBwYXJzZS55IChuZXN0ZWRfbmFtZV9zcGVjaWZpZXIpOiBVc2UgZXhwbGljaXRfdGVtcGxhdGVfdHlwZS4KCSh0eXBlbmFtZV9zdWIpOiBBbGxvdyBhIHRlbXBsYXRlX3R5cGUsIGFuIGV4cGxpY2l0X3RlbXBsYXRlX3R5cGUsCglvciBhbiBpbXBsaWNpdCB0ZW1wbGF0ZSB0eXBlIGF0IHRoZSBlbmQuCgkqIGxleC5jICh5eXByaW50KTogSGFuZGxlIGEgUFRZUEVOQU1FIGJlaW5nIGEgVEVNUExBVEVfREVDTC4KCSogZGVjbC5jIChtYWtlX3R5cGVuYW1lX3R5cGUpOiBIYW5kbGUgdGVtcGxhdGUtaWQgd2hlcmUgdGhlIG5hbWUKCWlzIGEgVEVNUExBVEVfREVDTC4KCSogY2FsbC5jIChidWlsZF9zY29wZWRfbWV0aG9kX2NhbGwpOiBIYW5kbGUgbWVtYmVyIHRlbXBsYXRlCglkZXN0cnVjdG9yIGNhbGwuCgkqIHB0LmMgKHRzdWJzdF9jb3B5LCBNRVRIT0RfQ0FMTF9FWFBSKTogRG9uJ3QgYXNzdW1lIGEgbWVtYmVyCglkZXN0cnVjdG9yIGlzIHJlcHJlc2VudGVkIGJ5IHRoZSB0eXBlLgoKCSogY3AtdHJlZS5oIChUWVBFTkFNRV9UWVBFX0ZVTExOQU1FKTogTmV3IG1hY3JvLgoJKiBwYXJzZS55IChuZXN0ZWRfbmFtZV9zcGVjaWZpZXIpOiBBZGQgJ3RlbXBsYXRlJyBjYXNlLgoJKGV4cGxpY2l0X3RlbXBsYXRlX3R5cGUpOiBOZXcgcnVsZS4KCSh0eXBlbmFtZV9zdWIpOiBVc2UgaXQuCgkqIGRlY2wuYyAobWFrZV90eXBlbmFtZV90eXBlKTogSGFuZGxlIGdldHRpbmcgYSB0ZW1wbGF0ZS1pZCBmb3IgTkFNRS4KCSogcHQuYyAodHN1YnN0KTogTGlrZXdpc2UuCgpGcmkgRmViIDI3IDExOjE3OjUwIDE5OTggIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIHB0LmMgKGFkZF90b190ZW1wbGF0ZV9hcmdzKTogRml4IHRoaW5rby4KCShpbnN0YW50aWF0ZV9jbGFzc190ZW1wbGF0ZSk6IENhbGwgaXQgbGF0ZXIuCgoJKiBwdC5jIChnZXRfY2xhc3NfYmluZGluZ3MpOiBBZGQgb3V0ZXJfYXJncyBwYXJtLgoJKG1vc3Rfc3BlY2lhbGl6ZWRfY2xhc3MpOiBMaWtld2lzZS4KCShpbnN0YW50aWF0ZV9jbGFzc190ZW1wbGF0ZSk6IFBhc3MgaXQuCgkobW9yZV9zcGVjaWFsaXplZF9jbGFzcyk6IExpa2V3aXNlLgoJKGxvb2t1cF90ZW1wbGF0ZV9jbGFzcyk6IEdldCBjb250ZXh0IGZyb20gdGVtcGxhdGUgaWYgbm9uZQoJd2FzIHNwZWNpZmllZC4KCShmaW5pc2hfbWVtYmVyX3RlbXBsYXRlX2RlY2wpOiBEb24ndCBkbyBhbnl0aGluZyB3aXRoIGEKCXBhcnRpYWwgc3BlY2lhbGl6YXRpb24uCgkqIGRlY2wyLmMgKGNoZWNrX21lbWJlcl90ZW1wbGF0ZSk6IFVzZSBJU19BR0dSX1RZUEUgaW5zdGVhZCBvZgoJQUdHUkVHQVRFX1RZUEVfUC4KCSogY2xhc3MuYyAoZmluaXNoX3N0cnVjdCk6IE1lbWJlciBjbGFzcyB0ZW1wbGF0ZXMgaGF2ZSBhbHJlYWR5IGJlZW4KCWNoZWNrZWQgZm9yIG5hbWUgY2xhc2hlcy4KCSogZGVjbC5jIChwdXNoZGVjbF93aXRoX3Njb3BlKTogSGFuZGxlIHB1c2hpbmcgYXQgY2xhc3MgbGV2ZWwuCgpGcmkgRmViIDI3IDAyOjI1OjE2IDE5OTggIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIHB0LmMgKHRzdWJzdCwgVEVNUExBVEVfREVDTCk6IFN1cHBvcnQgbWVtYmVyIGNsYXNzIHRlbXBsYXRlcy4KCSh0c3Vic3QsICpfUEFSTSk6IFN1cHBvcnQgbXVsdGlwbGUgbGV2ZWxzIG9mIHRlbXBsYXRlIGNsYXNzZXMuCgkoaW5zdGFudGlhdGVfY2xhc3NfdGVtcGxhdGUpOiBMb29rIHVwIHRoZSBwYXR0ZXJuIGZyb20gdGhlCglvcmlnaW5hbCB0ZW1wbGF0ZS4KCShsb29rdXBfdGVtcGxhdGVfY2xhc3MpOiBIYW5kbGUgZ2V0dGluZyBhIHRlbXBsYXRlIGZvciBkMS4KCShwdXNoX3RlbXBsYXRlX2RlY2wpOiBDb3JyZWN0IHNldHRpbmcgb2YgJ3ByaW1hcnknLgoJKHJlZHVjZV90ZW1wbGF0ZV9wYXJtX2xldmVsKTogQWRkICdsZXZlbHMnIHBhcm0uCgkoZmluaXNoX21lbWJlcl90ZW1wbGF0ZV9kZWNsKTogU3VwcG9ydCBtZW1iZXIgY2xhc3MgdGVtcGxhdGVzLgoJKHRlbXBsYXRlX2NsYXNzX2RlcHRoKTogSGFuZGxlIG11bHRpcGxlIGxldmVscy4KCSogcGFyc2UueSAoY29tcG9uZW50X2RlY2xfMSwgZm4uZGVmMik6IFJlbW92ZSBtZW1iZXIgdGVtcGxhdGUgY2FzZS4KCShjb21wb25lbnRfZGVjbCk6IEFkZCBtZW1iZXIgdGVtcGxhdGUgY2FzZXMuCgkqIGRlY2wyLmMgKGNoZWNrX21lbWJlcl90ZW1wbGF0ZSk6IFdlIG5vdyBoYW5kbGUgbWVtYmVyIHRlbXBsYXRlCgljbGFzc2VzLgoJKiBkZWNsLmMgKHB1c2h0YWcpOiBIYW5kbGUgbWVtYmVyIHRlbXBsYXRlcy4KCSogbWV0aG9kLmMgKGRvX2lubGluZV9mdW5jdGlvbl9oYWlyKTogRG9uJ3QgdG91Y2gKCUlERU5USUZJRVJfR0xPQkFMX1ZBTFVFLgoJKiBpbml0LmMgKGJ1aWxkX29mZnNldF9yZWYpOiBJZiBuYW1lIGlzbid0IGFuIGlkZW50aWZpZXIsIGp1c3QKCXJldHVybiBpdC4KCSogc3Bldy5jICh5eWxleCk6IEhhbmRsZSBQVFlQRU5BTUUgbGlrZSBUWVBFTkFNRS4KCgkqIHR5cGVjay5jIChnZXRfZGVsdGFfZGlmZmVyZW5jZSk6IERvIGFkanVzdCBmb3IgY29udmVyc2lvbnMgdG8KCWFuZCBmcm9tIHZpcnR1YWwgYmFzZS4KCldlZCBGZWIgMjUgMDk6NTE6MjkgMTk5OCAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogdHlwZWNrLmMgKGdldF9kZWx0YV9kaWZmZXJlbmNlKTogR2l2ZSBoYXJkIGVycm9yIGZvciBjb252ZXJzaW9uCglmcm9tIHZpcnR1YWwgYmFzZS4KCgkqIGNwLXRyZWUuaDogVHdlYWsgZm9ybWF0dGluZy4KCldlZCBGZWIgMjUgMDA6MzU6MzMgMTk5OCAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogZGVjbC5jIChwdXNoX25hbWVzcGFjZSk6IEhhbmRsZSByZWRlY2xhcmF0aW9uIGVycm9yLgoKCSogY3AtdHJlZS5oIChJREVOVElGSUVSX05BTUVTUEFDRV9WQUxVRSk6IE5ldyBtYWNyby4KCShJREVOVElGSUVSX05BTUVTUEFDRV9CSU5ESU5HUyk6IE5ldyBtYWNyby4KCShOQU1FU1BBQ0VfQklORElORyk6IE5ldyBtYWNyby4KCShJREVOVElGSUVSX0dMT0JBTF9WQUxVRSk6IFVzZSBOQU1FU1BBQ0VfQklORElORy4KCSogKi5jOiBVc2UgdGhlbS4KCgkqIHB0LmMgKHB1c2hfdGVtcGxhdGVfZGVjbCk6IFVzZSBpbm5lcm1vc3RfYXJncy4KCgkqIGRlY2wuYyAoZ2V0X3VuaXF1ZV9uYW1lKTogVHdlYWsgZnJvbSBlYXJsaWVyIGluIHRoZSBuYW1lLgoKVHVlIEZlYiAyNCAyMjoxNTowNCAxOTk4ICBNYXJ0aW4gdm9uIExvZXdpcyAgPGxvZXdpc0BpbmZvcm1hdGlrLmh1LWJlcmxpbi5kZT4KCgkqIGNwLXRyZWUuZGVmOiBBZGQgQ1BMVVNfQklORElORyBub2RlLgoJKiBjcC10cmVlLmggKHRyZWVfYmluZGluZyk6IE5ldyBzdHJ1Y3QuCgkoQklORElOR19TQ09QRSwgQklORElOR19WQUxVRSk6IE5ldyBtYWNyb3MuCgkoY3VycmVudF9uYW1lc3BhY2UsIGdsb2JhbF9uYW1lc3BhY2UpOiBEZWNsYXJlIGV4dGVybi4KCShzdHJ1Y3QgbGFuZ19kZWNsX2ZsYWdzKTogTmV3IGZpZWxkIGluX25hbWVzcGFjZS4KCShERUNMX05BTUVTUEFDRV9VU0lORywgREVDTF9OQU1FU1BBQ0VfVVNFUlMpOiBOZXcgbWFjcm9zLgoJKERFQ0xfTkFNRVNQQUNFLCBTRVRfREVDTF9OQU1FU1BBQ0UpOiBOZXcgbWFjcm9zLgoJKFRSRUVfSU5ESVJFQ1RfVVNJTkcpOiBOZXcgbWFjcm8uCgkqIGRlY2wyLmMgKGN1cnJlbnRfbmFtZXNwYWNlLCBnbG9iYWxfbmFtZXNwYWNlKTogRGVjbGFyZS4gIFRoZQoJdmFsdWUgaXMgYSBOQU1FU1BBQ0VfREVDTCBub3csIG5vdCBhIFRSRUVfTElTVC4KCShpc19uYW1lc3BhY2VfYW5jZXN0b3IsIG5hbWVzcGFjZV9hbmNlc3Rvcik6IE5ldyBzdGF0aWMgZnVuY3Rpb25zLgoJKGFkZF91c2luZ19uYW1lc3BhY2UsIGFtYmlndW91c19kZWNsKTogTGlrZXdpc2UuCgkobG9va3VwX3VzaW5nX25hbWVzcGFjZSk6IE5ldyBzdXBwb3J0IGZ1bmN0aW9uIGZvciBsb29rdXBfbmFtZS4KCShxdWFsaWZpZWRfbG9va3VwX3VzaW5nX25hbWVzcGFjZSk6IE5ldyBzdXBwb3J0IGZ1bmN0aW9uIGZvcgoJZG9fc2NvcGVkX2lkIGFuZCBsb29rdXBfbmFtZXNwYWNlX25hbWUuCgkoZ2V0X25hbWVzcGFjZV9pZCk6IE1hcmsgYXMgb2Jzb2xldGUuCgkoY3VycmVudF9uYW1lc3BhY2VfaWQpOiBMaWtld2lzZS4KCShkb19uYW1lc3BhY2VfYWxpYXMpOiBJbXBsZW1lbnQuCgkoZG9fdXNpbmdfZGlyZWN0aXZlKTogSW1wbGVtZW50IGFzIGNhbGwgdG8gYWRkX3VzaW5nX25hbWVzcGFjZS4KCSogZGVjbC5jIChiaW5kaW5nX2Zvcl9uYW1lKTogTmV3IGZ1bmN0aW9uLgoJKHB1c2hfbmFtZXNwYWNlLCBwb3BfbmFtZXNwYWNlKTogSW1wbGVtZW50LgoJKHB1c2hfZGVjbCk6IERvbid0IGluc3RhbGwgYSBGVU5DVElPTl9ERUNMIGluIHRoZSBnbG9iYWwgYnJhbmNoLgoJKGxvb2t1cF9uYW1lc3BhY2VfbmFtZSk6IEltcGxlbWVudCB1c2luZyBxdWFsaWZpZWQgbG9va3VwLgoJKGxvb2t1cF9uYW1lX3JlYWwpOiBGb3IgZ2xvYmFsIHNjb3BpbmcsIGxvb2t1cCBpbgoJZ2xvYmFsX25hbWVzcGFjZS4gIEZvciBuYW1lc3BhY2Ugc2NvcGluZywgbG9va3VwIGluIGdpdmVuCgluYW1lc3BhY2UuICBGb3IgdW5zY29wZWQgbG9va3VwLCBpdGVyYXRlIG92ZXIgbmFtZXNwYWNlLAoJY29uc2lkZXJpbmcgdXNpbmcgZGlyZWN0aXZlcy4KCShpbml0X2RlY2xfcHJvY2Vzc2luZyk6IEluaXRpYWxpemUgZ2xvYmFsX25hbWVzcGFjZS4KCShncm9rdmFyZGVjbCk6IEJ1aWxkIGFzc2VtYmxlciBuYW1lIGFzIHN0YXRpYyBuYW1lIGZvciBnbG9iYWxzLgoJKGdyb2tkZWNsYXJhdG9yKTogUmVtb3ZlIG9sZCBuYW1lc3BhY2UgbWFuZ2xpbmcuCgkoeHJlZl90YWcpOiBXaGVuIGluc3RhbGxpbmcgYSBnbG9iYWwgYmluZGluZyBmb3IgdGhlCgl0YWcsIG1ha2Ugc3VyZSB3ZSBoYXZlIGFuIGlkZW50aWZpZXIuCgkqIG1ldGhvZC5jIChidWlsZF9vdmVybG9hZF9uZXN0ZWRfbmFtZSk6IE1hbmdsZSBuYW1lc3BhY2VzLgoJKGJ1aWxkX3F1YWxpZmllZF9uYW1lKTogTGlrZXdpc2UuCgkoYnVpbGRfZGVjbF9vdmVybG9hZF9yZWFsKTogTGlrZXdpc2UuCgkqIGxleC5jIChidWlsZF9sYW5nX2RlY2wpOiBTZXQgbmFtZXNwYWNlIGZvciBuZXcgZGVjbGFyYXRpb24gdG8KCWN1cnJlbnRfbmFtZXNwYWNlLgoJKGRvX3Njb3BlZF9pZCk6IEZpbmQgZ2xvYmFsIG5hbWVzIGluIGdsb2JhbCBvciBjdXJyZW50CgluYW1lc3BhY2UsIG9yIHVzaW5nIHF1YWxpZmllZCBuYW1lc3BhY2UgbG9va3VwLCBkZXBlbmRpbmcgb24KCWNvbnRleHQuCgkqIGluaXQuYyAoYnVpbGRfbWVtYmVyX2NhbGwpOiBXaGVuIHNjb3BlIGlzIG5hbWVzcGFjZSwgdXNlCglidWlsZF94X2Z1bmN0aW9uX2NhbGwgaW5zdGVhZC4KCShidWlsZF9vZmZzZXRfcmVmKTogV2hlbiBzY29wZSBpcyBuYW1lc3BhY2UsIGNvbGxhcHNlIHByb2Nlc3NpbmcKCXRvIGxvb2t1cF9uYW1lc3BhY2VfbmFtZSBpbnN0ZWFkLgoJKiBlcnJvci5jIChkdW1wX2RlY2wpOiBTdXBwb3J0IE5BTUVTUEFDRV9ERUNMLgoJKiBkZWNsLmMgKHB1c2hkZWNsKTogQmluZCBnbG9iYWxzIHRvIGN1cnJlbnQgbmFtZXNwYWNlLgoJKHB1c2hfb3ZlcmxvYWRlZF9kZWNsKTogTGlrZXdpc2UuCgkobG9va3VwX3RhZyk6IExpa2V3aXNlLgoJKGxvb2t1cF9uYW1lX2N1cnJlbnRfbGV2ZWwpOiBMaWtld2lzZS4KCSh4cmVmX3RhZyk6IExpa2V3aXNlLgoJKHN0YXJ0X2Z1bmN0aW9uKTogTGlrZXdpc2UuCgkqIGxleC5jIChkb19pZGVudGlmaWVyKTogTGlrZXdpc2UuCgkoaWRlbnRpZmllcl90eXBlZGVjbF92YWx1ZSk6IExpa2V3aXNlLgoJKHJlYWxfeXlsZXgpOiBMaWtld2lzZS4KCSogbWV0aG9kLmMgKGRvX2lubGluZV9mdW5jdGlvbl9oYWlyKTogTGlrZXdpc2UuCgkqIHBhcnNlLnkgKHVuc2NvcGVkKTogTGlrZXdpc2UuCgkqIHB0LmMgKGNoZWNrX2V4cGxpY2l0X3NwZWNpYWxpemF0aW9uKTogTGlrZXdpc2UuCgkobG9va3VwX3RlbXBsYXRlX2NsYXNzKTogTGlrZXdpc2UuCgkqIHJ0dGkuYyAoY2FsbF92b2lkX2ZuKTogTGlrZXdpc2UuCgkqIHNpZy5jIChidWlsZF9zaWd0YWJsZSk6IExpa2V3aXNlLgoJKiBwdHJlZS5jIChsYW5nX3ByaW50X3hub2RlKTogTmV3IGZ1bmN0aW9uLgoKVHVlIEZlYiAyNCAwMTo0MDoyNCAxOTk4ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBwdC5jIChpbnN0YW50aWF0ZV9jbGFzc190ZW1wbGF0ZSk6IERvbid0IGluc3RhbnRpYXRlIGlmIHBlZGFudGljCglhbmQgdGhlIGFyZ3MgdXNlIHRlbXBsYXRlIHBhcm1zLgoKCSogcHQuYyAocHVzaF90aW5zdF9sZXZlbCk6IElmIHRoZSBpbnN0YW50aWF0aW9uIHVzZXMgdGVtcGxhdGUgcGFybXMsCglmYWlsIHNpbGVudGx5LgoJKiBkZWNsLmMgKHhyZWZfYmFzZXR5cGVzKTogRG8gY2FsbCBjb21wbGV0ZV90eXBlIGZvciBiYXNldHlwZXMKCXRoYXQgaW52b2x2ZSB0ZW1wbGF0ZSBwYXJhbWV0ZXJzLgoKVHVlIEZlYiAyNCAwMDozNjo0MyAxOTk4ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiB0eXBlY2syLmMgKHByb2Nlc3NfaW5pdF9jb25zdHJ1Y3Rvcik6IEZpeCBsYWJlbGVkIGluaXQgY2hlY2suCgpNb24gRmViIDIzIDA1OjA4OjU1IDE5OTggIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIHB0LmMsIGNhbGwuYywgZGVjbC5jLCBtZXRob2QuYywgY3AtdHJlZS5oOiBSZW1vdmUgdW51c2VkIE5BUkdTCglhcmd1bWVudCB0byB0c3Vic3QgYW5kIGZyaWVuZHMuCgoJKiBwdC5jICh0c3Vic3QsIEZVTkNUSU9OX0RFQ0wpOiBUaWR5LgoKCSogdHlwZWNrLmMgKGJ1aWxkX3hfZnVuY3Rpb25fY2FsbCk6IEhhbmRsZSBzdGF0aWMgbWVtYmVyIGZ1bmN0aW9uCgl0ZW1wbGF0ZXMgbGlrZSBub24tdGVtcGxhdGVzLiAgSGFuZGxlIGZyaWVuZCB0ZW1wbGF0ZXMgbGlrZSBub3JtYWwKCWZ1bmN0aW9uIHRlbXBsYXRlcy4KCSogcHQuYyAodHN1YnN0LCAqX1BBUk0pOiBEb24ndCB1c2Ugb3JpZ19sZXZlbC4KCShnZXRfYmluZGluZ3MpOiBEb24ndCBjYWxsIGFkZF90b190ZW1wbGF0ZV9hcmdzLgoJKGluc3RhbnRpYXRlX3RlbXBsYXRlKTogTGlrZXdpc2UuCgkodHN1YnN0LCBGVU5DVElPTl9ERUNMKTogQ2FsbCBhZGRfdG9fdGVtcGxhdGVfYXJncyBhcyBhcHByb3ByaWF0ZS4KCSogcHRyZWUuYyAocHJpbnRfbGFuZ190eXBlKTogUHJpbnQgaW5kZXgvbGV2ZWwgZm9yIHRlbXBsYXRlIHBhcm1zLgoKTW9uIEZlYiAyMyAwMjo1MjoyOSAxOTk4ICBNYXJrIE1pdGNoZWxsICA8bW1pdGNoZWxsQHVzYS5uZXQ+CgoJKiBNYWtlLWxhbmcuaW4gKGNjMXBsdXMpOiBOb3RlIHRoYXQgY2MxcGx1cyBkZXBlbmRzIG9uCgljcC9jcC10cmVlLmggYW5kIGNwL2NwLXRyZWUuZGVmLgoKCSogY3AtdHJlZS5kZWYgKFRFTVBMQVRFX0NPTlNUX1BBUk0pOiBSZW1vdmUuCgkoVEVNUExBVEVfUEFSTV9JTkRFWCk6IE5ldyB0cmVlIGNvZGUsIHVzZWQgdG8gaW5kaWNhdGUgYQoJcG9zaXRpb24gaW4gYSB0ZW1wbGF0ZSBwYXJhbWV0ZXIgbGlzdC4KCSogY3AtdHJlZS5oICh0ZW1wbGF0ZV9wYXJtX2luZGV4KTogTmV3IHN0cnVjdHVyZSwgdXNlZCBhcyB0aGUgdHJlZQoJc3RydWN0dXJlIGZvciBhIFRFTVBMQVRFX1BBUk1fSU5ERVguCgkoVEVNUExBVEVfUEFSTV9JRFgpOiBOZXcgbWFjcm8uCgkoVEVNUExBVEVfUEFSTV9MRVZFTCk6IExpa2V3aXNlLgoJKFRFTVBMQVRFX1BBUk1fREVTQ0VOREFOVFMpOiBMaWtld2lzZS4KCShURU1QTEFURV9QQVJNX09SSUdfTEVWRUwpOiBMaWtld2lzZS4KCShURU1QTEFURV9QQVJNX0RFQ0wpOiBMaWtld2lzZS4KCShURU1QTEFURV9UWVBFX1BBUk1fSU5ERVgpOiBMaWtld2lzZS4KCShURU1QTEFURV9UWVBFX09SSUdfTEVWRUwpOiBMaWtld2lzZS4KCShURU1QTEFURV9UWVBFX0RFQ0wpOiBMaWtld2lzZS4KCShURU1QTEFURV9DT05TVF9JRFgpOiBSZW1vdmUuCgkoVEVNUExBVEVfQ09OU1RfTEVWRUwpOiBMaWtld2lzZS4KCShURU1QTEFURV9DT05TVF9TRVRfSU5GTyk6IExpa2V3aXNlLgoJKFRFTVBMQVRFX1RZUEVfU0VUX0lORk8pOiBMaWtld2lzZS4KCShURU1QTEFURV9UWVBFX0lEWCk6IFJlZGVmaW5lIGluIHRlcm1zIG9mIFRFTVBMQVRFX1BBUk1fSU5ERVgKCW5vZGUuCgkoVEVNUExBVEVfVFlQRV9MRVZFTCk6IExpa2V3aXNlLgoJKiBkZWNsLmMgKGRlY2xzX21hdGNoKTogQ2FsbCBjb21wX3RlbXBsYXRlX3Bhcm1zLCByYXRoZXIgdGhhbgoJZXhwYW5kaW5nIGl0IGlubGluZS4KCShkdXBsaWNhdGVfZGVjbHMpOiBJZiB0d28gdGVtcGxhdGUgZGVjbGFyYXRpb25zIGFyZSBiZWluZyBtZXJnZWQsCgl0aGVuIHRoZWlyIFRFTVBMQVRFX0lORk9zIHNob3VsZCBiZSBtZXJnZWQgYXMgd2VsbC4KCShncm9rZm5kZWNsKTogU2F2ZSB0ZW1wbGF0ZS1pZCBpbmZvcm1hdGlvbiB3aGVuIGRlY2xhcmluZyBhIGZyaWVuZAoJd2l0aCBleHBsaWNpdCB0ZW1wbGF0ZSBhcmd1bWVudHMuICBQYXNzIGFyZ3VtZW50cyB0bwoJY2hlY2tfZXhwbGljaXRfc3BlY2lhbGl6YXRpb24gdmlhIGNvcnJlY3QgY29udmVudGlvbjsgYXQgc29tZQoJcG9pbnQgY2hlY2tfZXhwbGljaXRfc3BlY2lhbGl6YXRpb24gY2hhbmdlZCwgYnV0IHRoZXNlIGNhbGwtc2l0ZXMKCWRpZCBub3QuCgkoZ3Jva2RlY2xhcmF0b3IpOiBUaWR5IHVwIHNsaWdodGx5LgoJKiBkZWNsMi5jIChjaGVja19jbGFzc2ZuKTogVGlkeSB1cCBzbGlnaHRseS4gIERvbid0IGFzc3VtZSB0aGF0Cgl0d28gdGVtcGxhdGUgZnVuY3Rpb25zIHdpdGggdGhlIHNhbWUgREVDTF9BU1NFTUJMRVJfTkFNRSB0aGUgc2FtZSwKCXNpbmNlIHRoZSBuYW1lcyBhcmUgbm90IHlldCBtYW5nbGVkLgoJKiBlcnJvci5jIChkdW1wX2RlY2wpOiBVc2UgVEVNUExBVEVfUEFSTV9JTkRFWCBpbnN0ZWFkIG9mCglURU1QTEFURV9DT05TVF9QQVJNLgoJKGR1bXBfZXhwcik6IExpa2V3aXNlLiAgVXNlIHRoZSBURU1QTEFURV9QQVJNX0RFQ0wgdG8gZ2V0IGF0IHRoZQoJZGVjbCBmb3IgYSBub24tdHlwZSBwYXJhbWV0ZXIsIHJhdGhlciB0aGFuIHByaW50aW5nIGA8dHBhcm0gLi4uPicuCgkqIGZyaWVuZC5jIChpc19mcmllbmQpOiBIYW5kbGUgVEVNUExBVEVfREVDTCBmcmllbmRzLgoJKGRvX2ZyaWVuZCk6IERlYWwgd2l0aCB0ZW1wbGF0ZSBmcmllbmRzLgoJKiBsZXguYyAoZG9fcGVuZGluZ19pbmxpbmVzKTogQ2FsbAoJbWF5YmVfYmVnaW5fbWVtYmVyX3RlbXBsYXRlX3Byb2Nlc3NpbmcsIHJhdGhlciB0aGFuCgljb25kaXRpb25hbGx5IGNhbGxpbmcgYmVnaW5fbWVtYmVyX3RlbXBsYXRlX3Byb2Nlc3NpbmcuCgkocHJvY2Vzc19uZXh0X2lubGluZSk6IExpa2V3aXNlLiAgQ2FsbAoJbWF5YmVfZW5kX21lbWJlcl90ZW1wbGF0ZV9wcm9jZXNzaW5nLCByYXRoZXIgdGhhbgoJY29uZGl0aW9uYWxseSBjYWxsaW5nIGVuZF9tZW1iZXJfdGVtcGxhdGVfcHJvY2Vzc2luZy4KCShkb19wZW5kaW5nX2RlZmFyZ3MpOiBMaWtld2lzZS4KCShkb19pZGVudGlmaWVyKTogVXNlIFRFTVBMQVRFX1BBUk1fSU5ERVggaW5zdGVhZCBvZgoJVEVNUExBVEVfQ09OU1RfUEFSTS4KCSogbWV0aG9kLmMgKGJ1aWxkX21hbmdsZWRfdGVtcGxhdGVfcGFybV9pbmRleCk6IE5ldyBmdW5jdGlvbi4KCShidWlsZF9vdmVybG9hZF92YWx1ZSk6IFVzZSBpdC4KCShidWlsZF9vdmVybG9hZF9uYW1lKTogTGlrZXdpc2UuCgkqIHB0LmMgKGZpbmlzaF9tZW1iZXJfdGVtcGxhdGVfZGVjbCk6IEFsbG93IGZyaWVuZCBkZWNsYXJhdGlvbnMuCgkodGVtcGxhdGVfY2xhc3NfZGVwdGgpOiBOZXcgZnVuY3Rpb24uCgkoaXNfbWVtYmVyX3RlbXBsYXRlKTogUmVuYW1lLCBhbmQgbW9kaWZ5LCB0byBiZWNvbWUuLi4KCShpc19tZW1iZXJfb3JfZnJpZW5kX3RlbXBsYXRlKTogTmV3IGZ1bmN0aW9uLgoJKGVuZF9tZW1iZXJfdGVtcGxhdGVfcHJvY2Vzc2luZyk6IFJlbmFtZSwgYW5kIG1vZGlmeSwgdG8gYmVjb21lLi4uCgkobWF5YmVfZW5kX21lbWJlcl90ZW1wbGF0ZV9wcm9jZXNzaW5nKS4KCShidWlsZF90ZW1wbGF0ZV9wYXJtX2luZGV4KTogTmV3IGZ1bmN0aW9uLgoJKHJlZHVjZV90ZW1wbGF0ZV9wYXJtX2xldmVsKTogTmV3IGZ1bmN0aW9uLgoJKHByb2Nlc3NfdGVtcGxhdGVfcGFybSk6IE1vZGlmeSB0byB1c2UgYnVpbGRfdGVtcGxhdGVfcGFybV9pbmRleC4KCShwdXNoX3RlbXBsYXRlX2RlY2wpOiBEZWFsIHdpdGggZnJpZW5kIHRlbXBsYXRlcy4KCSh1c2VzX3RlbXBsYXRlX3Bhcm1zKTogVXNlIFRFTVBMQVRFX1BBUk1fSU5ERVggaW5zdGVhZCBvZgoJVEVNUExBVEVfQ09OU1RfUEFSTS4KCSh0c3Vic3RfZnJpZW5kX2Z1bmN0aW9uKTogTmV3IGZ1bmN0aW9uLgoJKGluc3RhbnRpYXRlX2NsYXNzX3RlbXBsYXRlKTogR2VuZXJhdGUgdGhlIERFQ0xfRlJJRU5ETElTVAoJZm9yIGEgbmV3IGluc3RhbnRpYXRpb24gYnkgdXNpbmcgdHN1YnN0X2ZyaWVuZF9mdW5jdGlvbiByYXRoZXIKCXRoYW4ganVzdCB0c3Vic3QuCgkodHN1YnN0KTogRG9uJ3QgdHN1YnN0IGludG8gYSB0eXBlIHdoaWNoIGlzIGEgVEVNUExBVEVfREVDTC4KCVVzZSBURU1QTEFURV9QQVJNX0lOREVYIGluc3RlYWQgb2YgVEVNUExBVEVfQ09OU1RfUEFSTSwgYW5kIHRoZQoJYXBwcm9wcmlhdGUgbmV3IG1hY3Jvcy4gIFVzZSByZWR1Y2VfdGVtcGxhdGVfcGFybV9sZXZlbCB0bwoJZ2VuZXJhdGUgbG93ZXItbGV2ZWwgdGVtcGxhdGUgcGFyYW1ldGVycy4gIEhhbmRsZSB0c3Vic3QnaW5nIGludG8KCVRFTVBMQVRFX0RFQ0xTIHRoYXQgZGVjbGFyZSBURU1QTEFURV9URU1QTEFURV9QQVJNUy4gIERvbid0IGZvcmdldAoJdG8gdHN1YnN0IHRoZSBERUNMX0NPTlRFWFQgYW5kIERFQ0xfQ0xBU1NfQ09OVEVYVCBvZiBuZXdseSBjcmVhdGVkCgl0ZW1wbGF0ZXMuICBTaW1pbGFybHkgZm9yIHRoZSB0ZW1wbGF0ZSBwYXJhbWV0ZXJzIGZvciBhIG5ldwoJdGVtcGxhdGUuCgkodHN1YnN0X2NvcHkpOiBUaWR5IHVwIHNsaWdodGx5LiAgVXNlIFRFTVBMQVRFX1BBUk1fSU5ERVggaW5zdGVhZAoJb2YgVEVNUExBVEVfQ09OU1RfUEFSTS4gIEhhbmRsZSBUWVBFX0RFQ0xzIGJ5IHRzdWJzdGluZyBpbnRvIHRoZW0uCgkodW5pZnkpOiBVc2UgVEVNUExBVEVfUEFSTV9JTkRFWCBpbnN0ZWFkIG9mIFRFTVBMQVRFX0NPTlNUX1BBUk0uCgkoZ2V0X2JpbmRpbmdzKTogQ2FsbCBhZGRfdG9fdGVtcGxhdGVfYXJncyBpZiBuZWNlc3NhcnkuCgkoaW5zdGFudGlhdGVfZGVjbCk6IEhhbmRsZSBpbnN0YW50aWF0aW9ucyBvZiBmcmllbmQgdGVtcGxhdGVzLgoJKiBzZWFyY2guYyAobG9va3VwX2ZpZWxkXzEpOiBEb24ndCB0cmVhdCB0aGUgVFlQRV9GSUVMRFMgb2YgYQoJVEVNUExBVEVfVFlQRV9QQVJNIGFzIGEgbGlzdCBvZiBmaWVsZHM7IGl0J3Mgbm90IQoJKiBzcGV3LmMgKHl5bGV4KTogRG8gYSBsaXR0bGUgbWFudWFsIGNvbnN0YW50IHByb3BhZ2F0aW9uIHRvCgljbGFyaWZ5IHRoZSBjb2RlLgoKU3VuIEZlYiAyMiAxOTo1MzoyOSAxOTk4ICBKZWZmcmV5IEEgTGF3ICAobGF3QGN5Z251cy5jb20pCgoJKiBlcnJvci5jOiBJbmNsdWRlIHN5cy90eXBlcy5oLgoKVGh1IEZlYiAxOSAxNDo0OTowOSAxOTk4ICBKZWZmcmV5IEEgTGF3ICAobGF3QGN5Z251cy5jb20pCgoJKiBtZXRob2QuYyAoYnVpbGRfbWFuZ2xlZF9uYW1lKTogU3RhcnQgQ1BQIGRpcmVjdGl2ZXMgaW4gY29sdW1uIHplcm8uCgpUaHUgRmViIDE5IDEwOjM2OjQ4IDE5OTggIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIHR5cGVjazIuYyAocHJvY2Vzc19pbml0X2NvbnN0cnVjdG9yKTogU29ycnkgYWJvdXQgbm9uLXRyaXZpYWwKCWxhYmVsZWQgaW5pdGlhbGl6ZXJzLgoJKiBwYXJzZS55IChpbml0bGlzdCk6IFJlLWVuYWJsZSBsYWJlbGVkIGluaXRpYWxpemVycy4KClRodSBGZWIgMTkgMTA6MTU6NTUgMTk5OCAgS3JpYW5nIExlcmRzdXdhbmFraWogIDxsZXJkc3V3YUBzY2YudXNjLmVkdT4KCgkqIHB0LmMgKGNvZXJjZV90ZW1wbGF0ZV9wYXJtcyk6IEFkZCBhIG5ldyBwYXJhbWV0ZXIsIGlzX3RtcGxfcGFybSwKCWFsbCBjYWxsZXJzIGNoYW5nZWQuICBSZWx5IG9uIHRoZSBuZXcgcGFyYW1ldGVyIGluc3RlYWQgb2YgYXJnCgliZWluZyBhIFRSRUVfTElTVCB3aGVuIGRldGVybWluZSB3aGV0aGVyIHdlIGFyZSB3b3JraW5nIGluc2lkZQoJdGVtcGxhdGUgdGVtcGxhdGUgcGFyYW1ldGVyLiAgQ2xlYW4gdXAgaXNfdHlwZSB0ZXN0LgoKVGh1IEZlYiAxOSAxMDowNDoxMiAxOTk4ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBjdnQuYyAoY3BfY29udmVydF90b19wb2ludGVyKTogUHJlc2VydmUgVFJFRV9DT05TVEFOVC4KCSogdHlwZWNrMi5jIChpbml0aWFsaXplcl9jb25zdGFudF92YWxpZF9wKTogQWxsb3cgY29udmVyc2lvbnMKCWJldHdlZW4gcG9pbnRlcnMgYW5kIHJlZmVyZW5jZXMuCgoxOTk4LTAyLTE5ICBCcmVuZGFuIEtlaG9lICA8YnJlbmRhbkBjeWdudXMuY29tPgoKCSogdHlwZWNrLmMgKGJ1aWxkX3VuYXJ5X29wKTogT25seSB3YXJuIGFib3V0IGluY3IvZGVjciBhIHBvaW50ZXIKCWlmIHBlZGFudGljIHx8IHdhcm5fcG9pbnRlcl9hcml0aC4KClRodSBGZWIgMTkgMDk6Mzc6MjEgMTk5OCAgS3JpYW5nIExlcmRzdXdhbmFraWogIDxsZXJkc3V3YUBzY2YudXNjLmVkdT4KCgkqIHB0LmMgKHVuaWZ5KTogSGFuZGxlIFRFTVBMQVRFX0RFQ0wuCgoxOTk4LTAyLTE4ICBCcmVuZGFuIEtlaG9lICA8YnJlbmRhbkBjeWdudXMuY29tPgoKCSogY3AtdHJlZS5oIChzdHJpcF9hdHRycyk6IFJlbW92ZSBkZWNsLgoKMTk5OC0wMi0xOCAgRG91ZyBFdmFucyAgPGRldmFuc0BjeWdudXMuY29tPgoKCSogZGVjbC5jIChkdXBsaWNhdGVfZGVjbHMpOiBDYWxsIG1lcmdlX21hY2hpbmVfZGVjbF9hdHRyaWJ1dGVzLgoJVXBkYXRlIG9sZGRlY2wncyBhdHRyaWJ1dGVzIHRvby4KCShzdHJpcF9hdHRycyk6IFJlbW92ZSBmdW5jdGlvbi4KCSogdHlwZWNrLmMgKGNvbW1vbl90eXBlKTogQ2FsbCBtZXJnZV9tYWNoaW5lX3R5cGVfYXR0cmlidXRlcy4KClR1ZSBGZWIgMTcgMTQ6MDc6NTIgMTk5OCAgTWFyayBNaXRjaGVsbCAgPG1taXRjaGVsbEB1c2EubmV0PgoKCSogcGFyc2UueSAoaW5pdGRjbDBfaW5uYXJkcyk6IE5ldyBncmFtbWFyIHN5bWJvbC4KCShub21vZHNfaW5pdGRlY2xzLCBub21vZHNfaW5pdGRjbDApOiBDaGFuZ2UgdHlwZSBmcm9tIGl0eXBlIHRvCglub25lLCBzaW5jZSB0aGUgcmVzdWx0aW5nIHZhbHVlIGlzIG5ldmVyIHVzZWQuCgkocGFyc2VfZGVjbCk6IE5ldyBmdW5jdGlvbi4KCShkYXRhZGVmKTogUmVtb3ZlIHJlZHVuZGFudCBhY3Rpb25zLgoJKGluaXRkY2wwLCBub3R5cGVfaW5pdGRjbDAsIG5vbW9kc19pbml0ZGNsMCk6IFVzZSBpbml0ZGNsMF9pbm5hcmRzLgoJKiBwYXJzZS5jOiBSZWdlbmVyYXRlZC4KClR1ZSBGZWIgMTcgMTE6NTQ6MTYgMTk5OCAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogcGFyc2UueSAoc2ltcGxlX3N0bXQpOiBVc2UgZ2V0ZGVjbHMoKSB0byBjaGVjayBmb3IgZGVjbC4KClNhdCBGZWIgMTQgMTE6NTA6NTEgMTk5OCAgTWFuZnJlZCBIb2xsc3RlaW4gIDxtYW5mcmVkQHMtZGlyZWt0bmV0LmRlPgoKCSogTWFrZS1sYW5nLmluIChERU1BTkdMRVJfSU5TVEFMTF9OQU1FLCBERU1BTkdMRVJfQ1JPU1NfTkFNRSk6IE5ldwoJbWFjcm9zLgoJKGMrKy5pbnN0YWxsLWNvbW1vbik6IEluc3RhbGwgYysrZmlsdCBwcm9wZXJseSBhcyBuYXRpdmUgb3IgYXMgY3Jvc3MKCXZhcmlhbnQuCgkoYysrLnVuaW5zdGFsbCk6IEFkZCBjKytmaWx0LgoKRnJpIEZlYiAxMyAxNDo1NTozNyAxOTk4ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBjYWxsLmMgKHN0YW5kYXJkX2NvbnZlcnNpb24pOiBGaXggbXVsdGktbGV2ZWwgcHRyIGNvbnZlcnNpb25zLgoKRnJpIEZlYiAxMyAxNDowNjoyMiAxOTk4ICBNaWtlIFN0dW1wICA8bXJzQHdycy5jb20+CgoJKiBpbml0LmMgKGJ1aWxkX25ldyk6IFByb3BhZ2F0ZSBlcnJvcl9tYXJrX25vZGUgdXAuCgpGcmkgRmViIDEzIDEzOjI0OjMyIDE5OTggIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIHBhcnNlLnkgKHNpbXBsZV9zdG10KTogSWYgdGhlIGNvbmRpdGlvbiBpc24ndCBhIGRlY2xhcmF0aW9uLAoJc3RhcnQgdGhlIGNvbnRyb2xsZWQgYmxvY2sgYWZ0ZXIgdGhlIHRlc3QuCgpGcmkgRmViIDEzIDAyOjI2OjEwIDE5OTggIEFuZHJlYXMgU2Nod2FiICA8c2Nod2FiQGlzc2FuLmluZm9ybWF0aWsudW5pLWRvcnRtdW5kLmRlPgoKCSogY2FsbC5jIChidWlsZF9vdmVyX2NhbGwpOiBDb252ZXJ0IGJ1aWx0aW4gYWJzLCBsYWJzIGFuZCBmYWJzIHRvCgl0cmVlLWNvZGVzLgoJKiBkZWNsLmMgKGluaXRfZGVjbF9wcm9jZXNzaW5nKTogUmUtZW5hYmxlIGFicywgbGFicyBhbmQgZmFicyBhcwoJYnVpbHRpbnMuCgpGcmkgRmViIDEzIDAxOjM2OjQyIDE5OTggIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIGNhbGwuYyAoc3RhbmRhcmRfY29udmVyc2lvbik6IEEgQkFTRV9DT05WIHJlcGxhY2VzIGFuIFJWQUxVRV9DT05WLgoKRnJpIEZlYiAxMyAwMDoyMTo1OSAxOTk4ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBjcC10cmVlLmg6IEFkZCBhY2Nlc3NfcHJvdGVjdGVkX3ZpcnR1YWxfbm9kZS4KCSogY2xhc3MuYyAoaW5pdF9jbGFzc19wcm9jZXNzaW5nKTogSW5pdGlhbGl6ZSBpdC4KCSogZGVjbC5jICh4cmVmX2Jhc2V0eXBlcyk6IFVzZSBpdC4KCSogcGFyc2UueSAoYmFzZV9jbGFzc19hY2Nlc3NfbGlzdCk6IExpa2V3aXNlLgoKCSogTWFrZS1sYW5nLmluIChERU1BTkdMRVJfUFJPRyk6IEFkZCAkKGV4ZWV4dCkuCgkoYysrLmluc3RhbGwtY29tbW9uKTogSW5zdGFsbCBjKytmaWx0LgoKVGh1IEZlYiAxMiAxMjo0Njo1MSAxOTk4ICBCZW5qYW1pbiBLb3NuaWsgIDxia296QHJoaW5vLmN5Z251cy5jb20+CgoJKiBkZWNsLmMgKHNoYWRvd190YWcpOiBHaXZlIGVycm9yIGZvciB0eXBlZGVmLWluZyBidWlsdC1pbiB0eXBlcy4KCldlZCBGZWIgMTEgMjM6Mjg6MDUgMTk5OCAgTWFyayBNaXRjaGVsbCAgPG1taXRjaGVsbEB1c2EubmV0PgoKCSogY2FsbC5jIChyZWZlcmVuY2VfYmluZGluZyk6IFVzZSBjb21wdHlwZXMgd2hlbiBjb21wYXJpbmcKCVRZUEVfTUFJTl9WQVJJQU5UUyB0byBoYW5kbGUgbm9uLWNhbm9uaWNhbCBhcnJheS9pbmRleCB0eXBlcy4KCldlZCBGZWIgMTEgMTY6NDI6MDQgMTk5OCAgTWFyayBNaXRjaGVsbCAgPG1taXRjaGVsbEB1c2EubmV0PgoKCSogdHJlZS5jIChpc19vdmVybG9hZGVkX2ZuKTogVXNlIHJlYWxseV9vdmVybG9hZGVkX2ZuLgoJKHJlYWxseV9vdmVybG9hZGVkX2ZuKTogTW92ZSBjaGVjayBoZXJlIGZyb20gaXNfb3ZlcmxvYWRlZF9mbi4KCShnZXRfZmlyc3RfZm4pOiBVc2UgcmVhbGx5X292ZXJsb2FkZWRfZm4gYW5kIGlzX292ZXJsb2FkZWRfZm4uCgpXZWQgRmViIDExIDE1OjU0OjE4IDE5OTggIE1hcmsgTWl0Y2hlbGwgIDxtbWl0Y2hlbGxAdXNhLm5ldD4KCgkqIHR5cGVjay5jIChidWlsZF9wdHJtZW1mdW5jKTogVHlwZS1jaGVjayBwb2ludGVyLXRvLW1lbWJlcgoJY29udmVyc2lvbnMuCgpNb24gRmViICA5IDIyOjIzOjMxIDE5OTggIE1hcmsgTWl0Y2hlbGwgIDxtbWl0Y2hlbGxAdXNhLm5ldD4KCgkqIGNwLXRyZWUuaCAocHVzaF90ZW1wbGF0ZV9kZWNsKTogUmV0dXJuIHRoZSBkZWNsIHBhc3NlZCBpbiwgb3IgYW4KCWVxdWl2YWxlbnQgZHVwbGljYXRlLgoJKiBkZWNsLmMgKHB1c2h0YWcpOiBVc2UgdGhlIHJldHVybiB2YWx1ZSBmcm9tIHB1c2hfdGVtcGxhdGVfZGVjbC4KCShkdXBsaWNhdGVfZGVjbHMpOiBXaGVuIGR1cGxpY2F0aW5nIGEgdGVtcGxhdGUgZGVjbGFyYXRpb24sIG1lcmdlCgl0aGUgREVDTF9URU1QTEFURV9SRVNVTFRzIGFzIHdlbGwuCgkobWFrZV9pbXBsaWNpdF90eXBlbmFtZSk6IERvbid0IHRyeSB0byBkaXZlIGludG8gdHlwZW5hbWUgdHlwZXMgdG8KCWZpbmQgYSBjb250ZXh0IGZvciBtYWtpbmcgYSBuZXcgaW1wbGljaXQgdHlwZW5hbWUuCgkoc3RhcnRfZGVjbCk6IFVzZSB0aGUgcmV0dXJuIHZhbHVlIGZyb20gcHVzaF90ZW1wbGF0ZV9kZWNsLgoJKGdyb2tkZWNsYXJhdG9yKTogQ29tcGxhaW4gYWJvdXQgZGVjbGFyYXRpb25zIGxpc3QgYGNvbnN0IG9wZXJhdG9yCglpbnQnLiAgU2luY2Ugd2UgZG9uJ3QgY29ycmVjdGx5IGhhbmRsZSBpbi1jbGFzcyBpbml0aWFsaXphdGlvbnMgb2YKCW5vbi1zdGF0aWMgZGF0YSBtZW1iZXJzLCBjb21wbGFpbiBhYm91dCB0aGlzIChub3cgaWxsZWdhbCkKCXByYWN0aWNlLiAgSXNzdWUgYW4gZXJyb3IgZm9yIGluaXRpYWxpemF0aW9ucyBvZiBub24tY29uc3Qgc3RhdGljcwoJc2luY2UgdGhhdCBpcyBpbGxlZ2FsIGFzIHdlbGwsIGFuZCBzaW5jZSB3ZSBkb24ndCBoYW5kbGUgdGhhdCBjYXNlCgljb3JyZWN0bHkgZWl0aGVyLgoJKHN0YXJ0X2Z1bmN0aW9uKTogVXNlIHRoZSByZXR1cm4gdmFsdWUgZnJvbSBwdXNoX3RlbXBsYXRlX2RlY2wuCgkoc3RhcnRfbWV0aG9kKTogTGlrZXdpc2UuCgkqIGRlY2wyLmMgKGdyb2tmaWVsZCk6IExpa2V3aXNlLiAgU2luY2UgdGhlIGNoYW5nZSB0bwoJZ3Jva2RlY2xhcmF0b3IgZW5zdXJlcyB0aGF0IGFsbCBpbml0aWFsaXplZCBmaWVsZHMgYXJlIGluIGZhY3QKCXN0YXRpYywgcmVtb3ZlIGEgcmVkdW5kYW50IHRlc3QgZm9yIFRSRUVfUFVCTElDLgoJKiBwYXJzZS55IChpbml0bGlzdCk6IERpc2FibGUgbGFiZWxlZCBpbml0aWFsaXplcnMgc2luY2UgdGhleSBkbwoJbm90IHdvcmsgYXMgcGVyIHRoZSBkb2N1bWVudGF0aW9uLCBhbmQgc2luY2UgdGhleSBkbyBub3QgdXNlIHRoZQoJc2FtZSBzeW50YXggYXMgdGhlIEMgZnJvbnQgZW5kLgoJKiBwdC5jIChwdXNoX3RlbXBsYXRlX2RlY2wpOiBSZXR1cm4gdGhlIGRlY2wgcGFzc2VkIGluLCBvciBhbgoJZXF1aXZhbGVudCBkdXBsaWNhdGUuCgkobG9va3VwX3RlbXBsYXRlX2NsYXNzKTogV2hlbiBzZWFyY2hpbmcgaW4gYSBuZXN0ZWQgY29udGV4dCwKCXVzZSB0aGUgcmlnaHQgYXJndW1lbnRzLgoJKHVzZXNfdGVtcGxhdGVfcGFybXMpOiBIYW5kbGUgdGhlIERFQ0xfSU5JVElBTCBmb3IgYSBDT05TVF9ERUNMLgoJKiB0eXBlY2suYyAoYnVpbGRfY29tcG9uZW50X3JlZik6IEFzc2lnbiB0aGUgY29ycmVjdCB0eXBlIHRvIHRoZQoJcmVzdWx0IG9mIGJ1aWxkX3Zmbl9yZWYuCgpUdWUgRmViIDEwIDIzOjU2OjQ2IDE5OTggIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIHB0LmMgKGNvbnZlcnRfbm9udHlwZV9hcmd1bWVudCk6IEZpeCB0eXBvLgoJKGNoZWNrX2V4cGxpY2l0X3NwZWNpYWxpemF0aW9uKTogQWxsb3cgb2xkLXN0eWxlIHNwZWNpYWxpemF0aW9uCglvZiBjbGFzcyB0ZW1wbGF0ZSBtZW1iZXJzLgoKVHVlIEZlYiAxMCAyMDozNjo1MiAxOTk4ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgkJCSAgTWFuZnJlZCBIb2xsc3RlaW4gIDxtYW5mcmVkQHMtZGlyZWt0bmV0LmRlPgoKCSogZGVjbC5jIChncm9rZGVjbGFyYXRvcik6IFVzZSBERUNMX1VTRV9URU1QTEFURSBpbnN0ZWFkCgl3aGVuIGRlY2lkaW5nIHRvIG92ZXJyaWRlIERFQ0xfQVNTRU1CTEVSX05BTUUuCgpUdWUgRmViIDEwIDE1OjMwOjU1IDE5OTggIEFuZHJldyBNYWNMZW9kICA8YW1hY2xlb2RAdG9ycGVkby50by5jeWdudXMuY29tPgoKCSogZGVjbDIuYyAobGFuZ19mX29wdGlvbnMpOiBBZGQgLWZzcXVhbmdsZSB0byBvcHRpb24gcHJvY2Vzc2luZyBsaXN0LgoJKiBjcC10cmVlLmggKGZsYWdfZG9fc3F1YW5nbGluZyk6IEFkZCBkZWNsYXJhdGlvbi4KCSogbGFuZy1vcHRpb25zLmg6IEFkZCAtZnNxdWFuZ2xlIGFuZCAtZm5vLXNxdWFuZ2xlLgoJKiBtZXRob2QuYzogQWRkIG1hY3JvcyBhbmQgc3RhdGljIHZhcmlhYmxlcyBmb3Igc3F1YW5nbGluZy4KCShidWlsZF9vdmVybG9hZF9uYW1lKTogUmVuYW1lIHRvIGJ1aWxkX21hbmdsZWRfbmFtZSwgYWRkIGxvZ2ljIGZvciBCCgljb21wcmVzc2lvbiwgYW5kIHNwbGl0IGludG8gcHJvY2Vzc19tb2RpZmllcnMgYW5kCglwcm9jZXNzX292ZXJsb2FkX2l0ZW0uCgkocHJvY2Vzc19tb2RpZmllcnMpOiBOZXcgZnVuY3Rpb24sIHRvIGhhbmRsZSBjb25zdGFudCwgcmVmZXJlbmNlLAoJYW5kIHBvaW50ZXIgdHlwZXMuCgkocHJvY2Vzc19vdmVybG9hZF9pdGVtKTogTmV3IGZ1bmN0aW9uLCBoYW5kbGVzIGlzc3VlIG9mIHR5cGUgY29kZXMuCgkoYnVpbGRfb3ZlcmxvYWRfbmFtZSk6IE5ldyBmdW5jdGlvbiwgc3RhcnQgc3F1YW5nbGluZyBhbmQgY2FsbAoJYnVpbGRfbWFuZ2xlZF9uYW1lLgoJKEFMTE9DQVRFX1RZUEVWRUMsIERFQUxMT0NBVEVfVFlQRVZFQyk6IFJlbW92ZSBtYWNybyBhbmQgZXhwYW5kIGlubGluZS4KCShzdGFydF9zcXVhbmdsaW5nKTogTmV3IGZ1bmN0aW9uIHRvIGluaXRpYWxpemUgc3F1YW5nbGluZyBzdHJ1Y3RzLgoJKGVuZF9zcXVhbmdsaW5nKTogTmV3IGZ1bmN0aW9uIHRvIGRlc3Ryb3kgc3F1YW5nbGluZyBzdHJ1Y3RzLgoJKG5yZXBlYXRzKTogUmVuYW1lIHZhcmlhYmxlIHRvIE5yZXBlYXRzLgoJKGlzc3VlX25yZXBlYXRzKTogTmV3IGZ1bmN0aW9uIGZvciBpc3N1aW5nICduJyB0eXBlIHJlcGVhdHMuCgkoY2hlY2tfa3R5cGUpOiBOZXcgZnVuY3Rpb24gdG8gY2hlY2sgZm9yIHR5cGUgSyBuYW1lIGNvbXByZXNzaW9uLgoJKGJ1aWxkX292ZXJsb2FkX25lc3RlZF9uYW1lKTogQWRkIGEgY2hlY2sgZm9yIEsgbmFtZSBjb21wcmVzc2lvbi4KCShidWlsZF9xdWFsaWZpZWRfbmFtZSk6IEFkZCBhIGNoZWNrIGZvciBLIG5hbWUgY29tcHJlc3Npb24gYW5kIGRvbid0Cgl1c2UgREVDTF9BU1NFTUJMRVJfTkFNRSB3aGVuIHNxdWFuZ2xpbmcgaXMgb24uCgkoY2hlY2tfYnR5cGUpOiBOZXcgZnVuY3Rpb24sIGNoZWNrcyBmb3IgQiB0eXBlIGNvbXByZXNzaW9uLgoJKGJ1aWxkX3N0YXRpY19uYW1lLCBidWlsZF9kZWNsX292ZXJsb2FkX3JlYWwpOiBJbml0aWF0ZSBzcXVhbmdsaW5nLgoJKGJ1aWxkX3R5cGVuYW1lX292ZXJsb2FkLCBidWlsZF9vdmVybG9hZF93aXRoX3R5cGUpOiBJbml0aWF0ZQoJc3F1YW5nbGluZwoKU3VuIEZlYiAgOCAyMzo0NzozOCAxOTk4ICBzY290dCBzbnlkZXIgIDxzc3NAZDBsaW51eDAxLmZuYWwuZ292PgoKCSogbWV0aG9kLmMgKG1ha2VfdGh1bmspOiBBdm9pZCBuYW1lIGJ1ZmZlciBvdmVyZmxvdy4KClNhdCBGZWIgIDcgMTY6NDg6NTQgMTk5OCAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogcHQuYyAoaW5zdGFudGlhdGVfZGVjbCk6IENhbGwgY3BfZmluaXNoX2RlY2wgZm9yIHZhcnMgZXZlbiBpZiB3ZQoJZG9uJ3QgZGVmaW5lIHRoZW0geWV0LgoKCSogcGFyc2UueSAobm9tb2RzX2luaXRkY2wwKTogQWRkIGNvbnN0cnVjdG9yX2RlY2xhcmF0b3IgY2FzZS4KCkZyaSBGZWIgIDYgMjE6MzI6MjUgMTk5OCAgUmljaGFyZCBLZW5uZXIgIDxrZW5uZXJAdmxzaTEudWx0cmEubnl1LmVkdT4KCgkqIGNvbmZpZy1sYW5nLmluIChkaWZmX2V4Y2x1ZGVzKTogVXNlIGJhc2VuYW1lIG9ubHkuCgpUaHUgRmViICA1IDE5OjEwOjQwIDE5OTggIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIHRpbmZvMi5jYzogQWRkIHRpbmZvIGZvciBzaWduZWQgY2hhci4KClRodSBGZWIgIDUgMTQ6Mzg6MjMgMTk5OCAgTWlrZSBTdHVtcCAgPG1yc0B3cnMuY29tPgoKCSogc2VhcmNoLmMgKGNvbXB1dGVfYWNjZXNzKTogSGFuZGxlIHByb3RlY3RlZCBjb25zdHJ1Y3RvcnMgaW4gZGVyaXZlZAoJY2xhc3NlcyBhcyBhY2Nlc3NpYmxlLgoKV2VkIEZlYiAgNCAwMToyNjo0OSAxOTk4ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBleHByLmMgKGNwbHVzX2V4cGFuZF9leHByLCBQQ0NfU1RBVElDX1NUUlVDVF9SRVRVUk4gY29kZSk6CglDYWxsIGNvbnZlcnRfZnJvbV9yZWZlcmVuY2Ugc29vbmVyLgoKVHVlIEZlYiAgMyAyMzo1MDo1MiAxOTk4ICBNYXJrIE1pdGNoZWxsICA8bW1pdGNoZWxsQHVzYS5uZXQ+CgoJKiBjdnQuYyAob2NwX2NvbnZlcnQpOiBPYnRhaW4gdGhlIGNvbnN0YW50IHZhbHVlcyBmcm9tIGNvbnN0YW50CglkZWNscyBldmVuIGlmIHRoZSBkZXN0aW5hdGlvbiB0eXBlIGlzIHRoZSBzYW1lIGFzIHRoZSB0eXBlIG9mIHRoZQoJZGVjbC4KCgkqIGRlY2wyLmMgKGZpbmlzaF9maWxlKTogTWFrZSBzdXJlIHRoYXQgc3RhdGljIGlubGluZXMgd2l0aAoJZGVmaW5pdGlvbnMgYXJlIG5vdCBtYXJrZWQgREVDTF9FWFRFUk5BTCBiZWZvcmUgcmV0dXJuaW5nLgoKVHVlIEZlYiAgMyAyMjo0Mzo0MiAxOTk4ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBkZWNsLmM6IExvc2UgYXJnX2xvb2tpbmdfZm9yX3RlbXBsYXRlLgoJKGxvb2t1cF9uYW1lX3JlYWwpOiBMaWtld2lzZS4KCSogcGFyc2UueTogTG9zZSBwcm9jZXNzaW5nX3RlbXBsYXRlX2FyZywgdGVtcGxhdGVfYXJnMS4KCShwcmltYXJ5KTogTGlrZXdpc2UuCgkqIHNwZXcuYyAoeXlsZXgpOiBTZXQgbGFzdGlkZGVjbCBmb3IgUFRZUEVOQU1FcywgdG9vLgoKVHVlIEZlYiAgMyAyMjowNDowMSAxOTk4ICBLcmlhbmcgTGVyZHN1d2FuYWtpaiAgPGxlcmRzdXdhQHNjZi51c2MuZWR1PgoKCSogZXJyb3IuYyAoZHVtcF9kZWNsKTogRml4IHR5cGUgb2YgZGVmYXVsdCBhcmd1bWVudHMgZm9yIHRlbXBsYXRlCgl0ZW1wbGF0ZSBwYXJhbWV0ZXJzIGFuZCBub250eXBlIHRlbXBsYXRlIHBhcmFtZXRlcnMuCgkqIHBhcnNlLnkgKHRlbXBsYXRlX3Bhcm0pOiBIYW5kbGUgaW52YWxpZCBkZWZhdWx0IHRlbXBsYXRlCgl0ZW1wbGF0ZSBhcmd1bWVudHMgaGVyZS4KCgkqIHBhcnNlLnkgKHRlbXBsYXRlX3Bhcm0pOiBVc2UgdGVtcGxhdGVfYXJnIGluc3RlYWQgb2YgUFRZUEVOQU1FCglmb3IgZGVmYXVsdCB0ZW1wbGF0ZSB0ZW1wbGF0ZSBhcmd1bWVudC4KCSogcHQuYyAoY29lcmNlX3RlbXBsYXRlX3Bhcm1zKTogTWVyZ2UgZGVmYXVsdCB0ZW1wbGF0ZSBhcmd1bWVudAoJY29kZXMuICBDYW4gdHJlYXQgUkVDT1JEX1RZUEUgYXMgdGVtcGxhdGUgbmFtZSBpZiBpdCBpcyBpbXBsaWNpdGx5CgljcmVhdGVkLiAgRml4IGFyZ3VtZW50IGluZGV4IGluIGVycm9yIG1lc3NhZ2UuCgkqIHR5cGVjay5jIChjb21wdHlwZXMpOiBNZXJnZSB0ZW1wbGF0ZSBhcmd1bWVudCBjb21wYXJpc29uIGNvZGVzIGluCglURU1QTEFURV9URU1QTEFURV9QQVJNIGFuZCBSRUNPUkRfVFlQRS4KClR1ZSBKYW4gIDYgMDE6NDI6NDQgMTk5OCAgTXVtaXQgS2hhbiAgPGtoYW5AeHJheWxpdGgud2lzYy5lZHU+CgoJKiBsZXguYyAoZmlsZV9uYW1lX25vbmRpcmVjdG9yeSk6IEFsc28gY2hlY2sgZm9yICcvJy4KCk1vbiBGZWIgIDIgMTE6MjQ6MjIgMTk5OCAgTWFyayBNaXRjaGVsbCAgPG1taXRjaGVsbEB1c2EubmV0PgoKCSogcGFyc2UueSAocHJpbWFyeSk6IERlYWwgd2l0aCBzdGF0ZW1lbnQtZXhwcmVzc2lvbnMgaW4KCXRlbXBsYXRlcy4KCSogcHQuYyAodHN1YnN0X2NvcHkpOiBIYW5kbGUgQklORF9FWFBSLgoJKiB0cmVlLmMgKG1hcGNhcik6IExpa2V3aXNlLgoKCSogY2FsbC5jIChhZGRfdGVtcGxhdGVfY2FuZGlkYXRlX3JlYWwpOiBQYXNzIGV4dHJhIHBhcmFtZXRlciB0bwoJZm5fdHlwZV91bmlmaWNhdGlvbi4KCSogY3AtdHJlZS5oIChmbl90eXBlX3VuaWZpY2F0aW9uKTogQWRkIHBhcmFtZXRlci4KCSogcHQuYyAoZm5fdHlwZV91bmlmaWNhdGlvbik6IEFkZCBhZGRpdGlvbmFsIHBhcmFtZXRlciB0byBkZWFsIHdpdGgKCXN0YXRpYyBtZW1iZXIgZnVuY3Rpb25zLgoJKGdldF9iaW5kaW5ncyk6IERlYWwgd2l0aCBzdGF0aWMgbWVtYmVyIGZ1bmN0aW9ucy4KCgkqIGNwLXRyZWUuaCAoREVDTF9OT05TVEFUSUNfTUVNQkVSX0ZVTkNUSU9OX1ApOiBOZXcgbWFjcm8uCgkocmV2ZXJ0X3N0YXRpY19tZW1iZXJfZm4pOiBEZWNsYXJlLgoJKiBkZWNsLmMgKHJldmVydF9zdGF0aWNfbWVtYmVyX2ZuKTogUmVtb3ZlIGRlY2xhcmF0aW9uLiAgQ2hhbmdlCglsaW5rYWdlIGZyb20gaW50ZXJuYWwgdG8gZXh0ZXJuYWwuCgkoY3BfZmluaXNoX2RlY2wpOiBEZWFsIHdpdGggdmlydHVhbCBmdW5jdGlvbnMgaW4gY2xhc3NlcyBsb2NhbCB0bwoJdGVtcGxhdGUgZnVuY3Rpb25zLgoJKiBkZWNsMi5jIChmaW5pc2hfZmlsZSk6IERvbid0IGZvcmdldCB0byBlbWl0IGluY3JlbWVudC9kZWNyZW1lbnQKCWV4cHJlc3Npb25zIGluIGluaXRpYWxpemVycyBmb3IgZmlsZS1zY29wZSB2YXJpYWJsZXMuCgkqIHBhcnNlLnkgKHR5cGVuYW1lX3N1YjIpOiBJZiB0aGUgdHlwZW5hbWUgZG9lc24ndCBuYW1lcyBhCgl0ZW1wbGF0ZSwgcmF0aGVyIHRoYW4gYSB0eXBlLCBpc3N1ZSBhbiBlcnJvciBtZXNzYWdlLgoJKiBwdC5jIChjaGVja19leHBsaWNpdF9zcGVjaWFsaXphdGlvbik6IEhhbmRsZSBzcGVjaWFsaXphdGlvbnMgb2YKCXN0YXRpYyBtZW1iZXIgZnVuY3Rpb25zLgoJKGNvZXJjZV90ZW1wbGF0ZV9wYXJtcyk6IEhhbmRsZSBvZmZzZXQgcmVmZXJlbmNlcyB0byBsaXN0cyBvZgoJbWVtYmVyIGZ1bmN0aW9ucy4KCSogc2VhcmNoLmMgKG5vdGVfZGVidWdfaW5mb19uZWVkZWQpOiBEb24ndCBjcmFzaCB3aGVuIGhhbmRlZCBhCgl0eXBlIHdoaWNoIGlzIGJlaW5nIGRlZmluZWQuCgkqIHR5cGVjay5jIChjb21wbGV0ZV90eXBlKTogRG9uJ3QgY3Jhc2ggd2hlbiBoYW5kZWQgTlVMTF9UUkVFOwoJdGhhdCBjYW4gaGFwcGVuIHdpdGggc29tZSBpbGxlZ2FsIGNvZGUuCgpNb24gRmViICAyIDAwOjU3OjM4IDE5OTggIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIGNhbGwuYyAodXNlcl9oYXJzaG5lc3MpOiBJbml0aWFsaXplIGBjb2RlJyB0byAwLgoJKGJ1aWxkX21ldGhvZF9jYWxsKTogSW5pdGlhbGl6ZSBgY2FuZGlkYXRlcycsIGBjcCcgYW5kIGBsZW4nIHRvIDAuCgkobnVsbF9wdHJfY3N0X3ApOiBBZGQgcGFyZW50aGVzZXMgYXJvdW5kICYmIHdpdGhpbiB8fC4KCShzdGFuZGFyZF9jb252ZXJzaW9uKTogTGlrZXdpc2UuCgkoel9jYW5kaWRhdGUpOiBMaWtld2lzZS4KCShidWlsZF91c2VyX3R5cGVfY29udmVyc2lvbl8xKTogSW5pdGlhbGl6ZSBgYXJncycgdG8gTlVMTF9UUkVFLgoJKGJ1aWxkX29iamVjdF9jYWxsKTogTGlrZXdpc2UgZm9yIGBtZW1fYXJncycuCgkoYnVpbGRfbmV3X29wKTogTGlrZXdpc2UgZm9yIGBtZW1fYXJnbGlzdCcuICBBZGQgYHJldHVybicgZnJvbQoJZGVmYXVsdCBjYXNlIGluIGVudW1lcmF0aW9uIHN3aXRjaC4KCgkqIGNsYXNzLmMgKGJ1aWxkX3Z0YWJsZV9lbnRyeSk6IEFkZCBleHBsaWNpdCBicmFjZXMgdG8gYXZvaWQKCWFtYmlndW91cyBgZWxzZScuCgkoYnVpbGRfY2xhc3NfaW5pdF9saXN0KTogTGlrZXdpc2UuCgkoZmluaXNoX3N0cnVjdF8xKTogSW5pdGlhbGl6ZSBgd2lkdGgnIHRvIDAuCgkoaW5zdGFudGlhdGVfdHlwZSk6IEluaXRpYWxpemUgYG5hbWUnIHRvIE5VTExfVFJFRS4gIEFkZAoJZXhwbGljaXQgYnJhY2VzIHRvIGF2b2lkIGFtYmlndW91cyBgZWxzZScuCgoJKiBjdnQuYyAoY29udmVydF90b19hZ2dyKTogQWRkIGV4cGxpY2l0IGJyYWNlcyB0byBhdm9pZCBhbWJpZ3VvdXMKCWBlbHNlJy4KCgkqIGRlY2wuYyAoZ3Jva19yZWZlcmVuY2VfaW5pdCk6IEVsaW1pbmF0ZSB1bnVzZWQgcGFyYW1ldGVyLCBhbGwKCWNhbGxlcnMgY2hhbmdlZC4KCShyZWNvcmRfYnVpbHRpbl90eXBlKTogSW5pdGlhbGl6ZSBgdGRlY2wnIHRvIE5VTExfVFJFRS4KCShpbml0X2RlY2xfcHJvY2Vzc2luZyk6IEluaXRpYWxpemUgYHZiX29mZl9pZGVudGlmaWVyJyB0byBOVUxMX1RSRUUuCgkoY3BfZmluaXNoX2RlY2wpOiBJbml0aWFsaXplIGB0dHlwZScgdG8gTlVMTF9UUkVFLgoJKGdyb2tkZWNsYXJhdG9yKTogQWRkIHBhcmVudGhlc2VzIGFyb3VuZCAmJiB3aXRoaW4gfHwuICBBZGQKCWV4cGxpY2l0IGJyYWNlcyB0byBhdm9pZCBhbWJpZ3VvdXMgYGVsc2UnLgoJKGdyb2twYXJtcyk6IEluaXRpYWxpemUgYHR5cGUnIHRvIE5VTExfVFJFRS4KCSh4cmVmX3RhZyk6IFJlbW92ZSB1bnVzZWQgbGFiZWwgYGp1c3RfcmV0dXJuJy4KCShmaW5pc2hfZW51bSk6IEluaXRpYWxpemUgYG1pbm5vZGUnIGFuZCBgbWF4bm9kZScgdG8gTlVMTF9UUkVFLgoJKGZpbmlzaF9mdW5jdGlvbik6IEluaXRpYWxpemUgYGNvbmQnIGFuZCBgdGhlbmNsYXVzZScgdG8gTlVMTF9UUkVFLgoJKGhhY2tfaW5jb21wbGV0ZV9zdHJ1Y3R1cmVzKTogQWRkIHBhcmVudGhlc2VzIGFyb3VuZCBhc3NpZ25tZW50Cgl1c2VkIGFzIHRydXRoIHZhbHVlLgoKCSogZGVjbDIuYyAoY29lcmNlX2RlbGV0ZV90eXBlKTogSGlkZSBkZWZpbml0aW9uIG9mIGBlMycuCgoJKiBlcnJvci5jOiBJbmNsdWRlIDxzdGRsaWIuaD4uCgkoZHVtcF9leHByKTogQ2hhbmdlIHRoZSB0eXBlIG9mIGBpJyB0byBzaXplX3QuICBSZW1vdmUgdW51c2VkCglsYWJlbCBgZXJyb3InLgoKCSogZXhjZXB0LmMgKGluaXRfZXhjZXB0aW9uX3Byb2Nlc3NpbmcpOiBSZW1vdmUgdW51c2VkIHZhcmlhYmxlIGBkJy4KCShleHBhbmRfdGhyb3cpOiBMaWtld2lzZSBmb3IgYGxhYmVsJy4KCgkqIGZyaWVuZC5jIChhZGRfZnJpZW5kcyk6IEFkZCBleHBsaWNpdCBicmFjZXMgdG8gYXZvaWQgYW1iaWd1b3VzCglgZWxzZScuCgoJKiBpbml0LmMgKHNvcnRfbWVtYmVyX2luaXQpOiBJbml0aWFsaXplIGBsYXN0X2ZpZWxkJyB0byBOVUxMX1RSRUUuCgkoc29ydF9iYXNlX2luaXQpOiBMaWtld2lzZSBmb3IgYGJpbmZvJy4KCShleHBhbmRfbWVtYmVyX2luaXQpOiBMaWtld2lzZSBmb3IgYHJ2YWwnLgoJKGJ1aWxkX21lbWJlcl9jYWxsKTogQWRkIHBhcmVudGhlc2VzIGFyb3VuZCBhc3NpZ25tZW50IHVzZWQgYXMKCXRydXRoIHZhbHVlLgoJKGJ1aWxkX29mZnNldF9yZWYpOiBBZGQgZXhwbGljaXQgYnJhY2VzIHRvIGF2b2lkIGFtYmlndW91cyBgZWxzZScuCgkoYnVpbGRfbmV3KTogSW5pdGlhbGl6ZSBgbmVsdHMnIHRvIE5VTExfVFJFRS4gIEluaXRpYWxpemUKCWBvbGRfaW1tZWRpYXRlX3NpemVfZXhwYW5kJyB0byAwLgoJKGJ1aWxkX25ld18xKTogSW5pdGlhbGl6ZSBgbmVsdHMnIGFuZCBgYWxsb2Nfbm9kZScgdG8gTlVMTF9UUkVFLgoJKGJ1aWxkX3ZlY19kZWxldGVfMSk6IFJlbW92ZSB1bnVzZWQgdmFyaWFibGUgYGJsb2NrJy4KCShleHBhbmRfdmVjX2luaXQpOiBJbml0aWFsaXplIGBpdHlwZScgdG8gTlVMTF9UUkVFLgoKCSogbGV4LmM6IEluY2x1ZGUgPHN0cmluZ3MuaD4gaWYgd2UgZG9uJ3QgaGF2ZSA8c3RyaW5nLmg+LiAgUHJvdGVjdAoJZGVjbGFyYXRpb24gb2YgYGluZGV4JyBhbmQgYHJpbmRleCcgd2l0aCBhdXRvY29uZiBtYWNyb3MuCgkocmVpbml0X3BhcnNlX2Zvcl9leHByKTogUmVtb3ZlIHVudXNlZCB2YXJpYWJsZXMKCWBsb29rX2Zvcl9zZW1pY29sb24nIGFuZCBgbG9va19mb3JfbGJyYWMnLgoJKGNvbnNfdXBfZGVmYXVsdF9mdW5jdGlvbik6IEluaXRpYWxpemUgYGFyZ3MnIHRvIE5VTExfVFJFRS4KCShyZWFkZXNjYXBlKTogSW5pdGlhbGl6ZSBgZmlyc3RkaWcnIHRvIDAuCgkocmVhbF95eWxleCk6IEFkZCBwYXJlbnRoZXNlcyBhcm91bmQgYXNzaWdubWVudCB1c2VkIGFzIHRydXRoIHZhbHVlLgoKCSogbWV0aG9kLmM6IEluY2x1ZGUgPHN0cmluZ3MuaD4gaWYgd2UgZG9uJ3QgaGF2ZSA8c3RyaW5nLmg+LgoJUHJvdGVjdCBkZWNsYXJhdGlvbiBvZiBgaW5kZXgnIHdpdGggYXV0b2NvbmYgbWFjcm8uCgoJKiBwYXJzZS55IChwcmltYXJ5KTogQWRkIGV4cGxpY2l0IGJyYWNlcyB0byBhdm9pZCBhbWJpZ3VvdXMgYGVsc2UnLgoJSW5pdGlhbGl6ZSBgdHlwZScgdG8gTlVMTF9UUkVFLgoJKHN0cnVjdHNwKTogUmVtb3ZlIHVudXNlZCB2YXJpYWJsZSBgaWQnLgoKCSogcHQuYyAoY29lcmNlX3RlbXBsYXRlX3Bhcm1zKTogQWRkIGV4cGxpY2l0IGJyYWNlcyB0byBhdm9pZAoJYW1iaWd1b3VzIGBlbHNlJy4KCShsb29rdXBfdGVtcGxhdGVfY2xhc3MpOiBJbml0aWFsaXplIGB0ZW1wbGF0ZScgdG8gTlVMTF9UUkVFLgoJKGluc3RhbnRpYXRlX2NsYXNzX3RlbXBsYXRlKTogUmVtb3ZlIHVudXNlZCB2YXJpYWJsZSBgbmFtZScgYW5kIGBlJy4KCSh0c3Vic3QpOiBMaWtld2lzZSBmb3IgYGknLiAgSW5pdGlhbGl6ZSBgbGFzdCcgdG8gTlVMTF9UUkVFLgoJKGRvX3BvcGxldmVsKTogSW5pdGlhbGl6ZSBgc2F2ZWRfd2Fybl91bnVzZWQnIHRvIDAuCgkodHlwZV91bmlmaWNhdGlvbik6IFJlbW92ZSB1bnVzZWQgdmFyYWJsZSBgcGFybScuCgkodW5pZnkpOiBMaWtld2lzZSBmb3IgYGonLgoKCSogcmVwby5jIChpbml0X3JlcG8pOiBBZGQgcGFyZW50aGVzZXMgYXJvdW5kIGFzc2lnbm1lbnQgdXNlZCBhcwoJdHJ1dGggdmFsdWUuCgkoZmluaXNoX3JlcG8pOiBSZW1vdmUgdW51c2VkIHZhcmFibGUgYHAnLgoKCSogc2VhcmNoLmMgKGdldF9iaW5mbyk6IEluaXRpYWxpemUgYHR5cGUnIHRvIE5VTExfVFJFRS4KCShnZXRfYmFzZV9kaXN0YW5jZSk6IExpa2V3aXNlLgoJKGxvb2t1cF9maWVsZCk6IEluaXRpYWxpemUgYHJ2YWxfYmluZm9faCcsIGB0eXBlJywgYGJhc2V0eXBlX3BhdGgnCglhbmQgYG5ld192JyB0byBOVUxMX1RSRUUuCgkobG9va3VwX2ZuZmllbGRzKTogTGlrZXdpc2UgZm9yIGBydmFsX2JpbmZvX2gnLgoJKGJyZWFkdGhfZmlyc3Rfc2VhcmNoKTogQWRkIHBhcmVudGhlc2VzIGFyb3VuZCBhc3NpZ25tZW50IHVzZWQgYXMKCXRydXRoIHZhbHVlLgoJKGdldF90ZW1wbGF0ZV9iYXNlKTogSW5pdGlhbGl6ZSBgdHlwZScgdG8gTlVMTF9UUkVFLgoKCSogc2lnLmMgKGFwcGVuZF9zaWduYXR1cmVfZmllbGRzKTogSW5pdGlhbGl6ZSBgbGFzdF9tZnB0cicgdG8KCU5VTExfVFJFRS4KCShidWlsZF9zaWduYXR1cmVfdGFibGVfY29uc3RydWN0b3IpOiBMaWtld2lzZSBmb3IKCWBsYXN0X3Joc19maWVsZCcsIGBwZm4nIGFuZCBgdnRfb2ZmJy4KCShidWlsZF9zaWd0YWJsZSk6IExpa2V3aXNlIGZvciBgaW5pdCcuCgoJKiB0cmVlLmMgKGJyZWFrX291dF9jYWxscyk6IEluaXRpYWxpemUgYHQyJyB0byBOVUxMX1RSRUUuCgkocHJvcGFnYXRlX2JpbmZvX29mZnNldHMpOiBMaWtld2lzZSBmb3IgYGRlbHRhJy4KCShoYXNoX3RyZWVfY29ucyk6IEluaXRpYWxpemUgaGFzaGNvZGUgdG8gMC4KCShjYW5fZnJlZSk6IExpa2V3aXNlIGZvciBgc2l6ZScuCgkoY3BfdHJlZV9lcXVhbCk6IEFkZCBleHBsaWNpdCBicmFjZXMgdG8gYXZvaWQgYW1iaWd1b3VzIGBlbHNlJy4KCgkqIHR5cGVjay5jIChjb252ZXJ0X3NlcXVlbmNlKTogSGlkZSBwcm90b3R5cGUuCgkoY29tbW9uX3R5cGUpOiBBZGQgZXhwbGljaXQgYnJhY2VzIHRvIGF2b2lkIGFtYmlndW91cyBgZWxzZScuCgkoY29tcF90YXJnZXRfdHlwZXMpOiBMaWtld2lzZS4KCShidWlsZF94X2Z1bmN0aW9uX2NhbGwpOiBJbml0aWFsaXplIGBjdHlwZXB0cicgdG8gTlVMTF9UUkVFLgoJKGJ1aWxkX2Z1bmN0aW9uX2NhbGxfcmVhbCk6IEFkZCBleHBsaWNpdCBicmFjZXMgdG8gYXZvaWQgYW1iaWd1b3VzCglgZWxzZScuCgkoY29udmVydF9hcmd1bWVudHMpOiBJbml0aWFsaXplIGBjYWxsZWRfdGhpbmcnIHRvIDAuCgkoY29udmVydF9mb3JfaW5pdGlhbGl6YXRpb24pOiBJbml0aWFsaXplIGBzYXZldycgYW5kIGBzYXZlZScgdG8gMC4KCgkqIHR5cGVjazIuYyAoaW5jb21wbGV0ZV90eXBlX2Vycm9yKTogSW5pdGlhbGl6ZSBgZXJybXNnJyB0byAwLgoJKGRpZ2VzdF9pbml0KTogSW5pdGlhbGl6ZSBgb2xkX3RhaWxfY29udGVudHMnIHRvIE5VTExfVFJFRS4KCShidWlsZF94X2Fycm93KTogTGlrZXdpc2UgZm9yIGBsYXN0X3J2YWwnLgoKCSogeHJlZi5jIChHTlVfeHJlZl9kZWNsKTogSW5pdGlhbGl6ZSBgY2xzJyB0byAwLgoKU3VuIEZlYiAgMSAxMjo0NTozNCAxOTk4ICBKIm9ybiBSZW5uZWNrZSAgPGFteWxhYXJAY3lnbnVzLmNvLnVrPgoKCSogZGVjbC5jIChpbml0X2RlY2xfcHJvY2Vzc2luZyk6IFVzZSBzZXRfc2l6ZXR5cGUuCgkqIGRlY2wyLmMgKHNpemV0eXBlKTogRG9uJ3QgZGVjbGFyZS4KCSogdHlwZWNrLmMgKGNfc2l6ZW9mKTogQ29udmVydCByZXN1bHQgb2YgKl9ESVZfRVhQUiB0byBzaXpldHlwZS4KCShjX3NpemVvZl9ub3dhcm4sIGJ1aWxkX2JpbmFyeV9vcF9ub2RlZmF1bHQpOiBMaWtld2lzZS4KCShidWlsZF9jb21wb25lbnRfYWRkciwgdW5hcnlfY29tcGxleF9sdmFsdWUpOiBMaWtld2lzZS4KCSogcnR0aS5jIChleHBhbmRfY2xhc3NfZGVzYyk6IExpa2V3aXNlLgoJKiBjbGFzcy5jIChnZXRfdmZpZWxkX29mZnNldCk6IExpa2V3aXNlLgoKVGh1IEphbiAyOSAxMDozOTozMCAxOTk4ICBNYXJrIE1pdGNoZWxsICA8bW1pdGNoZWxsQHVzYS5uZXQ+CgoJKiBwdC5jIChjb252ZXJ0X25vbnR5cGVfYXJndW1lbnQpOiBNb3ZlIGNoZWNrIGZvciBpc19vdmVybG9hZGVkX2ZuCgllYXJseSB0byBhdm9pZCBib2d1cyBlcnJvci4gIEhhbmRsZSBvdmVybG9hZGVkIGZ1bmN0aW9uCgluYW1lcyBwcm92aWRlZCBhcyB0ZW1wbGF0ZSBhcmd1bWVudHMgY29ycmVjdGx5LgoJKGNvZXJjZV90ZW1wbGF0ZV9wYXJtcyk6IERvbid0IG1pc2hhbmRsZSBvdmVybG9hZGVkIGZ1bmN0aW9ucyB3aGVuCglkZWFsaW5nIHdpdGggdGVtcGxhdGUgdGVtcGxhdGUgcGFyYW1ldGVycy4KCShsb29rdXBfdGVtcGxhdGVfY2xhc3MpOiBJc3N1ZSBhbiBlcnJvciBtZXNzYWdlLCByYXRoZXIgdGhhbgoJY3Jhc2hpbmcsIHdoZW4gdGhlIFRZUEVfREVDTCBwcm92aWRlZCBpcyBub3QgYSB0ZW1wbGF0ZSB0eXBlLgoKV2VkIEphbiAyOCAyMzoxNDo0NCAxOTk4ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBjbGFzcy5jIChpbnN0YW50aWF0ZV90eXBlKTogRG9uJ3QganVzdCByZXR1cm4gYSBrbm93biB0eXBlIGlmCglpdCdzIHdyb25nLgoKV2VkIEphbiAyOCAxMTowNDowNyAxOTk4ICBNYXJrIE1pdGNoZWxsICA8bW1pdGNoZWxsQHVzYS5uZXQ+CgoJKiBjbGFzcy5jIChpbnN0YW50aWF0ZV90eXBlKTogUmVtb3ZlIGhhbmRsaW5nIG9mIEZVTkNUSU9OX0RFQ0wKCXNpbmNlIHRoYXQgY29kZSBjb3VsZCBuZXZlciBiZSByZWFjaGVkLgoKCSogZXJyb3IuYyAoZHVtcF9kZWNsKTogQXZvaWQgYWJvcnRpbmcgaW4gdGhlIG1pZHN0IG9mIHByaW50aW5nIGFuCgllcnJvciBtZXNzYWdlIGFib3V0IGFuIGlsbGVnYWwgdGVtcGxhdGUgZGVjbGFyYXRpb24uCgoJKiBwYXJzZS55IChzdHJ1Y3RzcCk6IFByaW50IGFuIGVycm9yIG1lc3NhZ2UsIHJhdGhlciB0aGFuIGNyYXNoaW5nLAoJd2hlbiBhIGNsYXNzLWhlYWQgZG9lcyBub3QgbmFtZSBhIGNsYXNzLgoKCSogcHQuYyAoY29udmVydF9ub250eXBlX2FyZ3VtZW50KTogIEFsbG93IFJFQUxfVFlQRSBhbmQgQ09NUExFWF9UWVBFCgl0ZW1wbGF0ZSBhcmd1bWVudHMgYXMgYSBnKysgZXh0ZW5zaW9uLgoKCSogY3AtdHJlZS5kZWYgKEFMSUdOT0ZfRVhQUik6IE5ldyB0cmVlIGNvZGUuCgkqIGRlY2wyLmMgKGdyb2tfYWxpZ25vZik6IElmIHByb2Nlc3NpbmdfdGVtcGxhdGVfZGVjbCwganVzdCBzdG9yZQoJdGhlIGV4cHJlc3Npb24uCgkqIHR5cGVjay5jIChjX2FsaWdub2YpOiBMaWtld2lzZS4KCSogZGVjbDIuYyAoYnVpbGRfZXhwcl9mcm9tX3RyZWUpOiBIYW5kbGUgQUxJR05PRl9FWFBSLgoJKiBlcnJvci5jIChkdW1wX2V4cHIpOiBMaWtld2lzZS4KCSogcHQuYyAodHN1YnN0X2NvcHkpOiBMaWtld2lzZS4KCSogdHJlZS5jIChjcF90cmVlX2VxdWFsKTogTGlrZXdpc2UuCgkqIHB0LmMgKHVzZXNfdGVtcGxhdGVfcGFybXMpOiBDb3JyZWN0bHkgZGV0ZXJtaW5lIHdoZXRoZXIgb3Igbm90IGEKCVNJWkVPRl9FWFBSL0FMSUdOT0ZfRVhQUiB1c2VzIHRlbXBsYXRlIHBhcmFtZXRlcnMgc28gdGhhdCBjb25zdGFudAoJZm9sZGluZyBjYW4gYmUgZG9uZS4KCgkqIGNwLXRyZWUuaCAoZ3Jva19lbnVtX2RlY2xzKTogUmVtb3ZlIHR5cGUgcGFyYW1ldGVyLgoJKiBkZWNsLmMgKGdyb2tfZW51bV9kZWNscyk6IExpa2V3aXNlLgoJKiBkZWNsMi5jIChncm9rX3hfY29tcG9uZW50cyk6IENhbGwgZ3Jva19lbnVtX2RlY2xzCgl1bmNvbmRpdGlvbmFsbHksIHNpbmNlIGl0IHdpbGwgZG8gbm90aGluZyBpZiB0aGVyZSBpcyBubwoJY3VycmVudF9sb2NhbF9lbnVtLiAgVXNlIHRoZSBuZXcgY2FsbGluZyBzZXF1ZW5jZS4KCSogcHQuYyAodHN1YnN0X2VudW0pOiBVc2UgdGhlIG5ldyBjYWxsaW5nIHNlcXVlbmNlIGZvcgoJZ3Jva19lbnVtX2RlY2xzLgoKCSogZGVjbC5jIChzdGFydF9mdW5jdGlvbik6IE1ha2UgbWVtYmVyIGZ1bmN0aW9ucyBvZiBsb2NhbCBjbGFzc2VzCglpbiBleHRlcm4gaW5saW5lIGZ1bmN0aW9ucyBoYXZlIGNvbWRhdCBsaW5rYWdlIGhlcmUuLi4KCShncm9rZGVjbGFyYXRvcik6IFJhdGhlciB0aGFuIGhlcmUuCgpXZWQgSmFuIDI4IDEwOjU1OjQ3IDE5OTggIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIHB0LmMgKGNvbnZlcnRfbm9udHlwZV9hcmd1bWVudCk6IFVzZSBkZWNsX2NvbnN0YW50X3ZhbHVlLgoKVHVlIEphbiAyNyAxNjo0MjoyMSAxOTk4ICBNYXJrIE1pdGNoZWxsICA8bW1pdGNoZWxsQHVzYS5uZXQ+CgoJKiBjYWxsLmMgKGFkZF90ZW1wbGF0ZV9jYW5kaWRhdGVfcmVhbCk6IE5ldyBmdW5jdGlvbi4KCShhZGRfdGVtcGxhdGVfY2FuZGlkYXRlKTogVXNlIGl0LgoJKGFkZF90ZW1wbGF0ZV9jb252X2NhbmRpZGF0ZSk6IExpa2V3aXNlLgoJKGpvdXN0KTogUGFzcyBleHRyYSBhcmd1bWVudCB0byBtb3JlX3NwZWNpYWxpemVkLgoJKiBjbGFzcy5jIChpbnN0YW50aWF0ZV90eXBlKTogSGFuZGxlIGEgc2luZ2xlIEZVTkNUSU9OX0RFQ0wuCgkoaXNfbG9jYWxfY2xhc3MpOiBSZW1vdmUuCgkoZmluaXNoX3N0cnVjdCk6IENoZWNrIFRJX1BFTkRJTkdfU1BFQ0lBTElaQVRJT05fRkxBRy4KCSogY3AtdHJlZS5oIChpc19sb2NhbF9jbGFzcyk6IFJlbW92ZS4KCShwZXJmb3JtX2FycmF5X3RvX3BvaW50ZXJfY29udmVyc2lvbik6IExpa2V3aXNlLgoJKGZpbmlzaF9tZW1iZXJfdGVtcGxhdGVfZGVjbCk6IEFkZC4KCShjaGVja19leHBsaWNpdF9zcGVjaWFsaXphdGlvbik6IFJldHVybiBhIHRyZWUsIG5vdCBhbiBpbnQuCgkobW9yZV9zcGVjaWFsaXplZCk6IFRha2UgYWRkaXRpb25hbCBhcmd1bWVudC4KCShnZXRfYmluZGluZ3MpOiBMaWtld2lzZS4KCShUSV9QRU5ESU5HX1NQRUNJQUxJWkFUSU9OX0ZMQUcpOiBOZXcgbWFjcm8uCgkqIGN2dC5jIChwZXJmb3JtX3F1YWxpZmljYXRpb25fY29udmVyc2lvbnMpOiBVc2UgY29tcF9wdHJfdHR5cGVzLgoJKHBlcmZvcm1fYXJyYXlfdG9fcG9pbnRlcl9jb252ZXJzaW9uKTogUmVtb3ZlLgoJKiBkZWNsLmMgKHNhdmVkX3Njb3BlKTogQWRkIHByb2Nlc3Npbmdfc3BlY2lhbGl6YXRpb24sCglwcm9jZXNzaW5nX2V4cGxpY2l0X2luc3RhbnRpYXRpb24gZmllbGRzLgoJKG1heWJlX3B1c2hfdG9fdG9wX2xldmVsKTogU2F2ZSB0aGVtLgoJKHBvcF9mcm9tX3RvcF9sZXZlbCk6IFJlc3RvcmUgdGhlbS4KCShncm9rZm5kZWNsKTogVXNlIG5ldyByZXR1cm4gdmFsdWUgZnJvbQoJY2hlY2tfZXhwbGljaXRfc3BlY2lhbGl6YXRpb24uCgkoc3RhcnRfZGVjbCk6IERvbid0IGNoZWNrIGZsYWdfZ3VpZGluZ19kZWNscyBiZWZvcmUgcHVzaGluZwoJZGVjbHMuCgkoY3BfZmluaXNoX2RlY2wpOiBSZW1vdmUgcHJldmlvdXMgKGJvZ3VzKSBjaGFuZ2UuCgkoZ3Jva19kZWNsYXJhdG9yKTogVXNlIGRlY2xfZnVuY3Rpb25fY29udGV4dCByYXRoZXIgdGhhbgoJaXNfbG9jYWxfY2xhc3MuCgkqIGRlY2wyLmMgKGZpbmlzaF9maWxlKTogUGFzcyBleHRyYSBhcmd1bWVudCB0byBnZXRfYmluZGluZ3MuCgkoYnVpbGRfZXhwcl9mcm9tX3RyZWUpOiBMZXQgYnVpbGRfeF9jb21wb25lbnRfcmVmIGNoZWNrCgl2YWxpZGl0eSBvZiBhcmd1bWVudHMgcmF0aGVyIHRoYW4gZG9pbmcgaXQgaGVyZS4KCSogbGV4LmMgKGNvbnNfdXBfZGVmYXVsdF9mdW5jdGlvbik6IFJlbW92ZSBjb2RlIGZvb2xpbmcgd2l0aAoJcHJvY2Vzc2luZ19zcGVjaWFsaXphdGlvbiwgcHJvY2Vzc2luZ19leHBsaWNpdF9pbnN0YW50aWF0aW9uCglmbGFncywgYXMgdGhhdCBpcyBub3cgZG9uZSBpbiB7bWF5YmVfcHVzaF90b3AscG9wX2Zyb219X3RvcF9sZXZlbC4KCSogbWV0aG9kLmMgKGJ1aWxkX292ZXJsb2FkX2lkZW50aWZpZXIpOiBNYW5nbGUgbG9jYWwgY2xhc3NlcyBpbgoJdGVtcGxhdGUgZnVuY3Rpb25zIGNvcnJlY3RseS4KCSogcGFyc2UueSAoZmluaXNoX21lbWJlcl90ZW1wbGF0ZV9kZWNsKTogTW92ZSB0byBwdC5jLgoJKiBwdC5jIChmaW5pc2hfbWVtYmVyX3RlbXBsYXRlX2RlY2wpOiBNb3ZlZCBoZXJlIGZyb20gcGFyc2UueS4KCShwcmludF9jYW5kaWRhdGVzKTogTmV3IGZ1bmN0aW9uLgoJKGRldGVybWluZV9zcGVjaWFsaXphdGlvbik6IENoYW5nZSBpbnRlcmZhY2UuICBQcm9wZXJseSBsb29rIGZvcgoJbW9zdCBzcGVjaWFsaXplZCB2ZXJzaW9ucyBvZiB0ZW1wbGF0ZSBjYW5kaWRhdGVzLgoJKGNoZWNrX2V4cGxpY2l0X3NwZWNpYWxpemF0aW9uKTogRnVsbHkgcHJvY2VzcyBleHBsaWNpdAoJaW5zdGFudGlhdGlvbnMuCgkocHVzaF90ZW1wbGF0ZV9kZWNsKTogQXZvaWQgbG9va2luZyBhdCBDTEFTU1RZUEUgZmllbGRzIGluCglGVU5DVElPTl9ERUNMUy4KCShkZXRlcm1pbmVfb3ZlcmxvYWRlZF9mdW5jdGlvbik6IFJlbW92ZS4KCShjb252ZXJ0X25vbnR5cGVfYXJndW1lbnQpOiBDaGFuZ2UgbmFtZSBmcm9tCgljb252ZXJ0X25vbnR5cGVfcGFyYW1ldGVyLiAgVXNlIGRldGVybWluZV9vdmVybG9hZGVkX2Z1bmN0aW9uCglpbnN0ZWFkIG9mIGluc3RhbnRpYXRlX3R5cGUuCgkobWFuZ2xlX2NsYXNzX25hbWVfZm9yX3RlbXBsYXRlKTogSGFuZGxlIHR5cGUgY29udGV4dHMgYXMgd2VsbCBhcwoJZnVuY3Rpb24gY29udGV4dHMuCgkoY2xhc3N0eXBlX21hbmdsZWRfbmFtZSk6IExpa2V3aXNlLgoJKGxvb2t1cF90ZW1wbGF0ZV9jbGFzcyk6IExpa2V3aXNlLgoJKHRzdWJzdCk6IExpa2V3aXNlLgoJKG1vcmVfc3BlY2lhbGl6ZWQpOiBUYWtlIGV4cGxpY2l0IHRlbXBsYXRlIGFyZ3VtZW50cyBhcyBhCglwYXJhbWV0ZXIuCgkobW9zdF9zcGVjaWFsaXplZCk6IExpa2V3aXNlLgoJKGdldF9iaW5kaW5ncyk6IExpa2V3aXNlLiAgQ2hlY2sgdGhhdCByZXR1cm4gdHlwZXMgbWF0Y2ggYmVmb3JlCglwcm9jbGFpbWluZyBhIGZ1bmN0aW9uIGEgbWF0Y2guCgkoZG9fZGVjbF9pbnN0YW50aWF0aW9uKTogUmVtb3ZlIGNvZGUgc2VhcmNoaW5nIGZvciBmdW5jdGlvbiB0bwoJaW5zdGFudGlhdGU7IHRoYXQgaXMgbm93IGRvbmUgaW4gY2hlY2tfZXhwbGljaXRfc3BlY2lhbGl6YXRpb24uCgkoYWRkX21heWJlX3RlbXBsYXRlKTogUGFzcyBleHRyYSBhcmd1bWVudCB0byBnZXRfYmluZGluZ3MuCgkqIHRyZWUuYyAocmVhbGx5X292ZXJsb2FkZWRfZm4pOiBVc2UgaXNfb3ZlcmxvYWRlZF9mbiB0byBzaW1wbGlmeQoJaW1wbGVtZW50YXRpb24uCgkqIHR5cGVjay5jIChidWlsZF9jb21wb25lbnRfcmVmKTogQ2hlY2sgZm9yIGludmFsaWQgYXJndW1lbnRzLgoKVHVlIEphbiAyNyAwMTo0NDowMiAxOTk4ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBleHByLmMgKGNwbHVzX2V4cGFuZF9leHByLCBBR0dSX0lOSVRfRVhQUik6IERvbid0IGNoZWNrIHRoYXQKCXJldHVybl90YXJnZXQgYW5kIGNhbGxfdGFyZ2V0IGFyZSBlcXVpdmFsZW50LgoKCSogcHQuYyAodHlwZV91bmlmaWNhdGlvbl9yZWFsKTogSnVzdCBhY2NlcHQgZnVuY3Rpb24gcGFybXMgdGhhdAoJZG9uJ3QgdXNlIGFueSB0ZW1wbGF0ZSBwYXJtcy4KClN1biBKYW4gMjUgMDM6MzA6MDAgMTk5OCAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogZGVjbC5jIChjcF9maW5pc2hfZGVjbCk6IFdoZW4gYmFpbGluZyBvbiBhIGNvbWRhdCB2YXJpYWJsZSwgYWxzbwoJdW5zZXQgREVDTF9OT1RfUkVBTExZX0VYVEVSTi4KCgkqIHBhcnNlLnkgKHR5cGVuYW1lX3N1YiopOiBGaXggc3RkOjouCgpTYXQgSmFuIDI0IDEyOjEzOjU0IDE5OTggIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIGVycm9yLmMgKGR1bXBfZGVjbCk6IEZpeCB0eXBlIGRlZmF1bHQgdGVtcGxhdGUgYXJncy4KCShkdW1wX3R5cGUpOiBIYW5kIFRFTVBMQVRFX0RFQ0wgb2ZmIHRvIGR1bXBfZGVjbC4KCkZyaSBKYW4gMjMgMTg6MzQ6MzcgMTk5OCAgTXVtaXQgS2hhbiAgPGtoYW5AeHJheWxpdGgud2lzYy5lZHU+CgoJKiBsZXguYyAoRElSX1NFUEFSQVRPUik6IERlZmluZSB0byBiZSAnLycgaWYgbm90IGFscmVhZHkgZGVmaW5lZC4KCShmaWxlX25hbWVfbm9uZGlyZWN0b3J5KTogVXNlLgoKV2VkIEphbiAyMSAxMDoyOTo1NyAxOTk4ICBLcmlhbmcgTGVyZHN1d2FuYWtpaiAgPGxlcmRzdXdhQHNjZi51c2MuZWR1PgoKCSogcHQuYyAoY29lcmNlX3RlbXBsYXRlX3Bhcm1zKTogRG9uJ3QgYWNjZXNzIGVsZW1lbnRzIG9mIEFSR0xJU1QKCXRoYXQgYXJlIG5vdCByZWFsbHkgcHJlc2VudC4gIFN1YnN0aXR1dGUgZGVmYXVsdCBhcmd1bWVudHMgaW4KCXRlbXBsYXRlIHRlbXBsYXRlIGFyZ3VtZW50cy4gIENvcnJlY3RseSBjb252ZXJ0IFRFTVBMQVRFX0RFQ0wgdG8KCVRFTVBMQVRFX1RFTVBMQVRFX1BBUk0uCgkoY29tcF90ZW1wbGF0ZV9hcmdzKTogVEVNUExBVEVfREVDTCBhbmQgVEVNUExBVEVfVEVNUExBVEVfUEFSTQoJYXJlIG5vIGxvbmdlciB0cmVhdGVkIHNwZWNpYWxseSBoZXJlLgoJKiBwYXJzZS55ICh0ZW1wbGF0ZV90ZW1wbGF0ZV9wYXJtKTogRml4IGNvcHkgZXJyb3IuCgkqIGRlY2wuYyAoZ3Jva2RlY2xhcmF0b3IpOiBXYXJuIGFib3V0IG1pc3NpbmcgYHR5cGVuYW1lJyBmb3IgbmVzdGVkCgl0eXBlIGNyZWF0ZWQgZnJvbSB0ZW1wbGF0ZSB0ZW1wbGF0ZSBwYXJhbWV0ZXJzLgoJKiBwYXJzZS55IChiYWRfcGFybSk6IExpa2V3aXNlCgoJKiBjbGFzcy5jIChmaW5pc2hfc3RydWN0KTogSGFuZGxlIFRFTVBMQVRFX1RFTVBMQVRFX1BBUk0uCgkocHVzaF9uZXN0ZWRfY2xhc3MpOiBMaWtld2lzZS4KCSogY3AtdHJlZS5kZWYgKFRFTVBMQVRFX1RFTVBMQVRFX1BBUk0pOiBOZXcgdHJlZSBjb2RlLgoJKiBjcC10cmVlLmggKERFQ0xfVEVNUExBVEVfVEVNUExBVEVfUEFSTV9QKTogTmV3IG1hY3JvLgoJKGNvcHlfdGVtcGxhdGVfdGVtcGxhdGVfcGFybSk6IERlY2xhcmUuCgkqIGRlY2wuYyAoYXJnX2xvb2tpbmdfZm9yX3RlbXBsYXRlKTogTmV3IHZhcmlhYmxlLgoJKGxvb2t1cF9uYW1lX3JlYWwpOiBIYW5kbGUgVEVNUExBVEVfVEVNUExBVEVfUEFSTS4KCVRyeSB0byByZXR1cm4gVEVNUExBVEVfREVDTCBvciBURU1QTEFURV9URU1QTEFURV9QQVJNCglub2RlIGlmIGFyZ19sb29raW5nX2Zvcl90ZW1wbGF0ZSBpcyBub256ZXJvLgoJKHB1c2hkZWNsKTogSGFuZGxlIFRFTVBMQVRFX1RFTVBMQVRFX1BBUk0uCgkoZ3Jva19vcF9wcm9wZXJ0aWVzLCB4cmVmX3RhZywgeHJlZl9iYXNldHlwZXMpOiBMaWtld2lzZS4KCShncm9rZGVjbGFyYXRvcik6IEhhbmRsZSBURU1QTEFURV9ERUNMLgoJKiBkZWNsMi5jIChjb25zdHJ1Y3Rvcl9uYW1lX2Z1bGwpOiBIYW5kbGUgVEVNUExBVEVfVEVNUExBVEVfUEFSTS4KCSogZXJyb3IuYyAoZHVtcF90eXBlKTogQWRkIFRFTVBMQVRFX0RFQ0wgYW5kIFRFTVBMQVRFX1RFTVBMQVRFX1BBUk0uCgkoZHVtcF90eXBlX3ByZWZpeCwgZHVtcF90eXBlX3N1ZmZpeCk6IEhhbmRsZSBURU1QTEFURV9URU1QTEFURV9QQVJNLgoJKGR1bXBfZGVjbCk6IEhhbmRsZSB1bm5hbWVkIHRlbXBsYXRlIHR5cGUgcGFyYW1ldGVycy4KCUhhbmRsZSB0ZW1wbGF0ZSB0ZW1wbGF0ZSBwYXJhbWV0ZXJzLgoJKGR1bXBfZnVuY3Rpb25fbmFtZSk6IEhhbmRsZSB0ZW1wbGF0ZSB0ZW1wbGF0ZSBwYXJhbWV0ZXJzLgoJKiBpbml0LmMgKGlzX2FnZ3JfdHlwZWRlZiwgaXNfYWdncl90eXBlLCBnZXRfYWdncl9mcm9tX3R5cGVkZWYpOgoJSGFuZGxlIFRFTVBMQVRFX1RFTVBMQVRFX1BBUk0uCgkqIG1ldGhvZC5jIChidWlsZF90ZW1wbGF0ZV90ZW1wbGF0ZV9wYXJtX25hbWVzKTogTmV3IGZ1bmN0aW9uLgoJKGJ1aWxkX3RlbXBsYXRlX3Bhcm1fbmFtZXMpOiBIYW5kbGUgVEVNUExBVEVfREVDTC4KCShidWlsZF9vdmVybG9hZF9uZXN0ZWRfbmFtZSwgYnVpbGRfb3ZlcmxvYWRfbmFtZSk6CglIYW5kbGUgVEVNUExBVEVfVEVNUExBVEVfUEFSTS4KCSogcGFyc2UueSAobWF5YmVfaWRlbnRpZmllcik6IE5ldyBub250ZXJtaW5hbC4KCSh0ZW1wbGF0ZV90eXBlX3Bhcm0pOiBVc2UgaXQuCgkodGVtcGxhdGVfdGVtcGxhdGVfcGFybSwgdGVtcGxhdGVfYXJnMSk6IE5ldyBub250ZXJtaW5hbC4KCSh0ZW1wbGF0ZV9wYXJtKTogQWRkIHRlbXBsYXRlX3RlbXBsYXRlX3Bhcm0gcnVsZXMuCgkodGVtcGxhdGVfYXJnKTogU2V0IHByb2Nlc3NpbmdfdGVtcGxhdGVfYXJnLgoJKHRlbXBsYXRlX2FyZzEpOiBSdWxlcyBtb3ZlZCBmcm9tIHRlbXBsYXRlX2FyZy4KCShwcmltYXJ5LCBub25uZXN0ZWRfdHlwZSk6IFNldCBhcmdfbG9va2luZ19mb3JfdGVtcGxhdGUgaWYgd2UgYXJlCglwcm9jZXNzaW5nIHRlbXBsYXRlIGFyZ3VtZW50cy4KCSogcHQuYyAoYmVnaW5fbWVtYmVyX3RlbXBsYXRlX3Byb2Nlc3NpbmcpOiBIYW5kbGUgVEVNUExBVEVfREVDTC4KCShwcm9jZXNzX3RlbXBsYXRlX3Bhcm0pOiBIYW5kbGUgdGVtcGxhdGUgdGVtcGxhdGUgcGFyYW1ldGVycy4KCShjb2VyY2VfdGVtcGxhdGVfcGFybXMsIGNvbXBfdGVtcGxhdGVfYXJncyk6IExpa2V3aXNlLgoJKG1hbmdsZV9jbGFzc19uYW1lX2Zvcl90ZW1wbGF0ZSwgbG9va3VwX3RlbXBsYXRlX2NsYXNzKTogTGlrZXdpc2UuCgkodXNlc190ZW1wbGF0ZV9wYXJtcyk6IEhhbmRsZSBURU1QTEFURV9ERUNMIGFuZAoJVEVNUExBVEVfVEVNUExBVEVfUEFSTS4KCShjdXJyZW50X3RlbXBsYXRlX2FyZ3MpOiBIYW5kbGUgVEVNUExBVEVfREVDTC4KCSh0c3Vic3QsIHRzdWJzdF9jb3B5LCB1bmlmeSk6IEhhbmRsZSBURU1QTEFURV9URU1QTEFURV9QQVJNLgoJKiBzZWFyY2guYyAoZGZzX3dhbGssIGRmc19yZWNvcmRfaW5oZXJpdGFuY2UpOgoJSGFuZGxlIFRFTVBMQVRFX1RFTVBMQVRFX1BBUk0uCgkqIHRyZWUuYyAoY29weV90ZW1wbGF0ZV90ZW1wbGF0ZV9wYXJtKTogTmV3IGZ1bmN0aW9uLgoJKG1hcGNhcik6IEhhbmRsZSBURU1QTEFURV9URU1QTEFURV9QQVJNLgoJKiB0eXBlY2suYyAoY29tcHR5cGVzKTogSGFuZGxlIFRFTVBMQVRFX1RFTVBMQVRFX1BBUk0uCgpNb24gSmFuIDE5IDIyOjQwOjAzIDE5OTggIE1hcmsgTWl0Y2hlbGwgIDxtbWl0Y2hlbGxAdXNhLm5ldD4KCgkqIGRlY2wuYyAoc3RhcnRfZGVjbCk6IERvbid0IGFsbG93IGR1cGxpY2F0ZSBkZWZpbml0aW9ucyBvZiBzdGF0aWMKCWRhdGEgbWVtYmVycy4KCgkqIGNhbGwuYyAoYnVpbGRfdXNlcl90eXBlX2NvbnZlcnNpb25fMSk6IEhhbmRsZSB1c2VyLWRlZmluZWQKCXRlbXBsYXRlIGNvbnZlcnNpb24gb3BlcmF0b3JzIGNvcnJlY3RseS4KCgkqIGRlY2wyLmMgKGJ1aWxkX2V4cHJfZnJvbV90cmVlKTogSXNzdWUgYW4gZXJyb3IgbWVzc2FnZSBpZiB0aGUKCW9iamVjdCBpbiBhIENPTVBPTkVOVF9SRUYgaXMgYSBURU1QTEFURV9ERUNMLgoKCSogdHlwZWNrLmMgKGluY29tcGxldGVfdHlwZV9lcnJvcik6IEhhbmRsZSBURU1QTEFURV9UWVBFX1BBUk1zLgoKCSogY2xhc3MuYyAoaXNfbG9jYWxfY2xhc3MpOiBOZXcgZnVuY3Rpb24uCgkqIGNwLXRyZWUuaCAoaXNfbG9jYWxfY2xhc3MpOiBEZWNsYXJlIGl0LgoJKGxhc3RfdHJlZSk6IExpa2V3aXNlLgoJKGJlZ2luX3RyZWUpOiBMaWtld2lzZS4KCShlbmRfdHJlZSk6IExpa2V3aXNlLgoJKGxvb2t1cF90ZW1wbGF0ZV9jbGFzcyk6IENoYW5nZSBwcm90b3R5cGUuCgkqIGRlY2wuYyAoY3BfZmluaXNoX2RlY2wpOiBDaGVjayBmb3IgTlVMTCB3aGVyZSBuZWNlc3NhcnkuCglDb25zaWRlciBGVU5DVElPTl9ERUNMUyB0byBkZWNsYXJlIG9iamVjdHMgd2l0aCB0b3AtbGV2ZWwgYmluZGluZywKCXdoZW4gY2FsbGluZyBtYWtlX2RlY2xfcnRsLgoJKGdyb2tkZWNsYXJhdG9yKTogR2l2ZSBtZW1iZXJzIG9mIGxvY2FsIGNsYXNzZXMgaW50ZXJuYWwgbGlua2FnZS4KCShzdGFydF9mdW5jdGlvbik6IFJlbW92ZSBkZWNsYXJhdGlvbiBvZiBsYXN0X3RyZWUuCgkoZmluaXNoX2Z1bmN0aW9uKTogU2V0IGZsYWdfa2VlcF9pbmxpbmVfZnVuY3Rpb25zIGFyb3VuZCBjYWxsIHRvCglyZXN0X29mX2NvbXBpbGF0aW9uIGlmIHdlIGFyZSBwcm9jZXNzaW5nIGEgbWVtYmVyIGZ1bmN0aW9uIGluIGEKCWxvY2FsIGNsYXNzLgoJKHN0YXJ0X21ldGhvZCk6IENhbGwgcHVzaF90ZW1wbGF0ZV9kZWNsIGZvciBtZW1iZXIgZnVuY3Rpb25zIG9mCglsb2NhbCBjbGFzc2VzIGluIHRlbXBsYXRlIGZ1bmN0aW9ucy4KCSogZGVjbDIuYyAoaW1wb3J0X2V4cG9ydF9kZWNsKTogRG9uJ3QgZ2l2ZSBleHRlcm5hbCBsaW5rYWdlIHRvCglpbnN0YW50aWF0aW9ucyBvZiB0ZW1wbGF0ZXMgd2l0aCBpbnRlcm5hbCBsaW5rYWdlLgoJKiBwYXJzZS55IChsYXN0X3RyZWUpOiBSZW1vdmUgZGVjbGFyYXRpb24uCgkodGVtcGxhdGVfdHlwZSk6IFBhc3MgZXh0cmEgcGFyYW1ldGVyIHRvIGxvb2t1cF90ZW1wbGF0ZV9jbGFzcy4KCShzZWxmX3RlbXBsYXRlX3R5cGUpOiBMaWtld2lzZS4KCShzdHJ1Y3RzcCk6IE1vdmUgY2FsbCB0byByZXNldF9zcGVjaWFsaXphdGlvbiBpbnRvIGxlZnRfY3VybHkuCgkobGVmdF9jdXJseSk6IENhbGwgcmVzZXRfc3BlY2lhbGl6YXRpb24sIGFuZCBiZWdpbl90cmVlLgoJKiBwdC5jIChzYXZlZF90cmVlcyk6IE5ldyB2YXJpYWJsZS4KCShtYW5nbGVfY2xhc3NfbmFtZV9mb3JfdGVtcGxhdGUpOiBDaGFuZ2UgcHJvdG90eXBlLiAgVXNlCglhZGRpdGlvbmFsIGZ1bmN0aW9uIGNvbnRleHQgdG8gbmFtZSBsb2NhbCBjbGFzc2VzIGluIHRlbXBsYXRlcwoJY29ycmVjdGx5LgoJKGNsYXNzdHlwZV9tYW5nbGVkX25hbWUpOiBQYXNzIHRoZSBjb250ZXh0LgoJKHB1c2hfdGVtcGxhdGVfZGVjbCk6IEhhbmRsZSBsb2NhbCBjbGFzc2VzIGFuZCB0ZW1wbGF0ZXMsIGFuZAoJbWVtYmVyIGZ1bmN0aW9ucyBmb3Igc3VjaCBjbGFzc2VzLgoJKGNvbnZlcnRfbm9udHlwZV9wYXJhbWV0ZXIpOiBGaXggaGFuZGxpbmcgb2YgcG9pbnRlci10by1tZW1iZXIKCWNvbnN0YW50cy4KCShsb29rdXBfdGVtcGxhdGVfY2xhc3MpOiBIYW5kbGUgbG9jYWwgY2xhc3NlcyBpbiB0ZW1wbGF0ZXMuCgkodHN1YnN0KTogTGlrZXdpc2UuICBEb24ndCBhc3N1bWUgdGhhdCB0ZW1wbGF0ZSBpbnN0YW50aWF0aW9ucwoJaGF2ZSBleHRlcm5hbCBsaW5rYWdlOyBwYXkgYXR0ZW50aW9uIHRvIHRoZSB0ZW1wbGF0ZSBkZWNsYXJhdGlvbi4KCShtYXJrX2RlY2xfaW5zdGFudGlhdGVkKTogTGlrZXdpc2UuCgkoYmVnaW5fdHJlZSk6IE5ldyBmdW5jdGlvbi4KCShlbmRfdHJlZSk6IExpa2V3aXNlLgoKCSogZGVjbC5jICh4cmVmX2Jhc2V0eXBlcyk6IERvbid0IGNhbGwgY29tcGxldGVfdHlwZSBmb3IgYmFzZXR5cGVzCgl0aGF0IGludm9sdmUgdGVtcGxhdGUgcGFyYW1ldGVyczsgdGhhdCBjYW4gbGVhZCB0byBpbmZpbml0ZQoJcmVjdXJzaW9uIHVubmVjZXNzYXJpbHkuCgoJKiBwdC5jIChyZWdpc3Rlcl9zcGVjaWFsaXphdGlvbik6IERvIG5vdCByZWdpc3RlciBzcGVjaWFsaXphdGlvbnMKCXRoYXQgYXJlbid0IHJlYWR5IHRvIGJlIHJlZ2lzdGVyZWQgeWV0LgoJKGNoZWNrX2V4cGxpY2l0X3NwZWNpYWxpemF0aW9uKTogSGFuZGxlIGV4cGxpY2l0IHNwZWNpYWxpemF0aW9uIG9mCgljb25zdHJ1Y3RvcnMgYW5kIGRlc3RydWN0b3JzLgoJKGJ1aWxkX3RlbXBsYXRlX2RlY2wpOiBOZXcgZnVuY3Rpb24uCgkocHVzaF90ZW1wbGF0ZV9kZWxjKTogSGFuZGxlIG91dC1vZi1jbGFzcyBzcGVjaWFsaXphdGlvbnMgb2YKCW1lbWJlciB0ZW1wbGF0ZXMuCgoJKiBwdC5jIChjaGVja19leHBsaWNpdF9zcGVjaWFsaXphdGlvbik6IFNldCB1cCB0aGUgdGVtcGxhdGUKCWluZm9ybWF0aW9uIGJlZm9yZSByZWdpc3RlcmluZyB0aGUgc3BlY2lhbGl6YXRpb24uCgkoY29lcmNlX3RlbXBsYXRlX3Bhcm1zKTogRml4IHRoaW5rby4KCSh0c3Vic3QpOiBIYW5kbGUgc3BlY2lhbGl6YXRpb25zIG9mIG1lbWJlciB0ZW1wbGF0ZXMgY29ycmVjdGx5LgoKCSogY2xhc3MuYyAoZmluaXNoX3N0cnVjdF9tZXRob2RzKTogUmVtb3ZlIGNhbGxzIHRvCgljaGVja19leHBsaWNpdF9zcGVjaWFsaXphdGlvbiBmcm9tIGhlcmUuCgkoZmluaXNoX3N0cnVjdCk6IEFuZCBpbnNlcnQgdGhlbSBoZXJlLgoJKiBjcC10cmVlLmggKHBlcmZvcm1fcXVhbGlmaWNhdGlvbl9jb252ZXJzaW9ucyk6IE5ldyBmdW5jdGlvbi4KCShwZXJmb3JtX2FycmF5X3RvX3BvaW50ZXJfY29udmVyc2lvbik6IExpa2V3aXNlLgoJKGJlZ2luX2V4cGxpY2l0X2luc3RhbnRpYXRpb24pOiBMaWtld2lzZS4KCShlbmRfZXhwbGljaXRfaW5zdGFudGlhdGlvbik6IExpa2V3aXNlLgoJKGRldGVybWluZV9zcGVjaWFsaXphdGlvbik6IFJlbmFtZWQgZnJvbQoJZGV0ZXJtaW5lX2V4cGxpY2l0X3NwZWNpYWxpemF0aW9uLgoJKGNvbXBfdGVtcGxhdGVfcGFybXMpOiBOZXcgZnVuY3Rpb24uCgkocHJvY2Vzc2luZ19leHBsaWNpdF9pbnN0YW50aWF0aW9uKTogTmV3IHZhcmlhYmxlLgoJKiBjdnQuYyAocGVyZm9ybV9xdWFsaWZpY2F0aW9uX2NvbnZlcnNpb25zKTogTmV3IGZ1bmN0aW9uLgoJKHBlcmZvcm1fYXJyYXlfdG9fcG9pbnRlcl9jb252ZXJzaW9uKTogTGlrZXdpc2UuCgkqIGRlY2wuYyAoZHVwbGljYXRlX2RlY2xzKTogRG9uJ3QgY29uc2lkZXIgdGVtcGxhdGUgZnVuY3Rpb25zCglhbGlrZSB1bmxlc3MgdGhleSBoYXZlIHRoZSBzYW1lIHBhcmFtZXRlcnMuICBSZWZpbmUgaGFuZGxpbmcgb2YKCWluc3RhbnRpYXRpb24vc3BlY2lhbGl6YXRpb24gbWlzbWF0Y2hlcy4KCShzdGFydF9kZWNsKTogRG9uJ3QgY2FsbCBwdXNoZGVjbCBmb3IgdGVtcGxhdGUgc3BlY2lhbGl6YXRpb25zLAoJc2luY2UgdGhleSBkb24ndCBhZmZlY3Qgb3ZlcmxvYWRpbmcuCgkoc3RhcnRfZnVuY3Rpb24pOiBMaWtld2lzZS4KCShncm9rZm5kZWNsKTogQ2FsbCBjaGVja19leHBsaWNpdF9zcGVjaWFsaXphdGlvbiBhIGxpdHRsZSBsYXRlci4KCURvbid0IGNhbGwgZHVwbGljYXRlX2RlY2xzIGZvciBtZW1iZXJtIHRlbXBsYXRlIHNwZWNpYWxpemF0aW9ucy4KCShncm9rZGVjbGFyYXRvcik6IERvbid0IHVwZGF0ZSB0ZW1wbGF0ZV9jb3VudCBmb3IgY2xhc3NlcyB0aGF0IGFyZQoJdGhlbXNlbHZlcyBzcGVjaWFsaXphdGlvbnMuICBSZW1vdmUgdXNlIG9mIGAyJyBhcyBwYXJhbWV0ZXIgdG8KCWdyb2tmbmRlY2wgc2luY2UgdGhhdCB2YWx1ZSBpc24ndCB1c2VkLgoJKiBsZXguYyAoY29uc191cF9kZWZhdWx0X2Z1bmN0aW9uKTogU2F2ZSBhbmQgcmVzdG9yZQoJcHJvY2Vzc2luZ19leHBsaWNpdF9pbnN0YW50aWF0aW9uIGFyb3VuZCBjYWxscyB0byBncm9rZmllbGQuCgkqIHBhcnNlLnkgKGZpbmlzaF9tZW1iZXJfdGVtcGxhdGVfZGVjbCk6IE5ldyBmdW5jdGlvbi4KCShjb21wb25lbnRfZGVjbF8xKTogVXNlIGl0LgoJKGZuLmRlZjIpOiBMaWtld2lzZS4KCSh0ZW1wbGF0ZV9hcmdfbGlzdF9vcHQpOiBOZXcgbm9udGVybWluYWwuCgkodGVtcGxhdGVfdHlwZSk6IFVzZSBpdC4KCShzZWxmX3RlbXBsYXRlX3R5cGUpOiBMaWtld2lzZS4KCSh0ZW1wbGF0ZV9pZCk6IExpa2V3aXNlLgoJKG9iamVjdF90ZW1wbGF0ZV9pZCk6IExpa2V3aXNlLgoJKG5vdHlwZV90ZW1wbGF0ZV9kZWNsYXJhdG9yKTogTGlrd2lzZS4KCShiZWdpbl9leHBsaWNpdF9pbnN0YW50aWF0aW9uKTogTGlrZXdpc2UuCgkoZW5kX2V4cGxpY2l0X2luc3RhbnRpYXRpb24pOiBMaWtld2lzZS4KCShleHBsaWNpdF9pbnN0YW50aWF0aW9uKTogVXNlIHRoZW0uCgkqIHB0LmMgKGNvZXJjZV90ZW1wbGF0ZV9wYXJtcyk6IEFkZCBwYXJhbWV0ZXJzLgoJKHByb2Nlc3NpbmdfZXhwbGljaXRfaW5zdGFudGlhdGlvbik6IE5ldyB2YXJpYWJsZS4KCShjb252ZXJ0X25vbnR5cGVfcGFyYW1ldGVyKTogTmV3IGZ1bmN0aW9uLgoJKGRldGVybWluZV9vdmVybG9hZGVkX2Z1bmN0aW9uKTogTGlrZXdpc2UuCgkoYmVnaW5fZXhwbGljaXRfaW5zdGFudGlhdGlvbik6IExpa2V3aXNlLgoJKGVuZF9leHBsaWNpdF9pbnN0YW50aWF0aW9uKTogTGlrZXdpc2UuCgkocmV0cmlldmVfc3BlY2lhbGl6YXRpb24pOiBMaWtld2lzZS4KCShyZWdpc3Rlcl9zcGVjaWFsaXphdGlvbik6IExpa2V3aXNlLgoJKHByb2Nlc3NpbmdfZXhwbGljaXRfc3BlY2lhbGl6YXRpb24pOiBSZW1vdmVkLgoJKGRldGVybWluZV9zcGVjaWFsaXphdGlvbik6IEhhbmRsZSBzcGVjaWFsaXphdGlvbnMgb2YgbWVtYmVyCglmdW5jdGlvbnMgb2YgdGVtcGxhdGUgY2xhc3MgaW5zdGFudGlhdGlvbnMuCgkoY2hlY2tfZXhwbGljaXRfc3BlY2lhbGl6YXRpb24pOiBSZWZpbmUgdG8gY29uZm9ybSB0byBzdGFuZGFyZC4KCShjb21wX3RlbXBsYXRlX3Bhcm1zKTogTmV3IGZ1bmN0aW9uLgoJKGNvZXJjZV90ZW1wbGF0ZV9wYXJtcyk6IENhbGwgY29udmVydF9ub250eXBlX3BhcmFtZXRlci4KCSh0c3Vic3QpOiBSZWZpbmUgaGFuZGxpbmcgb2YgbWVtYmVyIHRlbXBsYXRlcy4gIFVzZQoJcmVnaXN0ZXJfc3BlY2lhbGl6YXRpb24uCgkoaW5zdGFudGlhdGVfdGVtcGxhdGUpOiBVc2UgcmV0cmlldmVfc3BlY2lhbGl6YXRpb24uCgkoZG9fZGVjbF9pbnN0YW50aWF0aW9uKTogTGlrZXdpc2UuCgkoaW5zdGFudGlhdGVfZGVjbCk6IExpa2V3aXNlLgoJKHR5cGVfdW5pZmljYXRpb24pOiBJbXByb3ZlIGhhbmRsaW5nIG9mIGV4cGxpY2l0IHRlbXBsYXRlCglhcmd1bWVudHMuCgkqIHRyZWUuYyAobWFwY2FyKTogUmV0dXJuIGVycm9yX21hcmtfbm9kZSwgcmF0aGVyIHRoYW4gYWJvcnRpbmcsCglvbiBWQVJfREVDTFMsIEZVTkNUSU9OX0RFQ0xTLCBhbmQgQ09OU1RfREVDTFMuCgkqIHR5cGVjay5jIChidWlsZF91bmFyeV9vcCk6IENhbGwgZGV0ZXJtaW5lX3NwZWNpYWxpemF0aW9uLCByYXRoZXIKCXRoYW4gZGV0ZXJtaW5lX2V4cGxpY2l0X3NwZWNpYWxpemF0aW9uLgoKTW9uIEphbiAxOSAxMzoxODo1MSAxOTk4ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBjdnQuYyAoYnVpbGRfdXBfcmVmZXJlbmNlKTogQSBUQVJHRVRfRVhQUiBoYXMgc2lkZSBlZmZlY3RzLgoKRnJpIEphbiAxNiAxMTo0MDo1MCAxOTk4ICBCcnVubyBIYWlibGUgIDxicnVub0BsaW51aXgubWF0aGVtYXRpay51bmkta2FybHNydWhlLmRlPgoKCSogZXJyb3IuYyAoZHVtcF9kZWNsKTogRm9yIGVudW0gdGFncywgb3V0cHV0IHRoZSB0YWcsIG5vdCBpdHMgdmFsdWUuCgoxOTk4LTAxLTEzICBCcmVuZGFuIEtlaG9lICA8YnJlbmRhbkBjeWdudXMuY29tPgoKCSogZGVjbC5jIChpbml0X2RlY2xfcHJvY2Vzc2luZyk6IE9ubHkgY2FsbCBpbml0X3J0dGlfcHJvY2Vzc2luZwoJRkxBR19SVFRJIGlzIHNldC4KCk1vbiBKYW4gMTIgMDE6MzU6MTggMTk5OCAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogaW5pdC5jIChidWlsZF9uZXdfMSk6IFNwbGl0IG91dCBmcm9tIGJ1aWxkX25ldy4KCShidWlsZF9uZXcpOiBKdXN0IHJldHVybiBhIE5FV19FWFBSLgoJKiBleHByLmMgKGNwbHVzX2V4cGFuZF9leHByKTogSGFuZGxlIE5FV19FWFBSLgoKCSogZGVjbDIuYyAoZ2V0X3RlbXBfcmVndmFyKTogVHdlYWsuCgoJKiBjcC10cmVlLmggKFRSRUVfQ0FMTFNfTkVXKTogQ29tbWVudCBvdXQuCgkqIGNsYXNzLmMgKHJlc29sdmVzX3RvX2ZpeGVkX3R5cGVfcCk6IFJlbW92ZSB1c2UuCgkqIG1ldGhvZC5jIChidWlsZF9vcGZuY2FsbCk6IExpa2V3aXNlLgoJKiBjYWxsLmMgKGJ1aWxkX25ld19vcCk6IExpa2V3aXNlLgoKV2VkIEphbiAgNyAyMzo0NzoxMyAxOTk4ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBleGNlcHRpb24uY2MgKF9fZWhfYWxsb2MsIF9fZWhfZnJlZSk6IE5ldyBmbnMuCgkoX19jcF9wdXNoX2V4Y2VwdGlvbiwgX19jcF9wb3BfZXhjZXB0aW9uKTogVXNlIHRoZW0uCgkoX191bmNhdGNoX2V4Y2VwdGlvbik6IENhbGwgdGVybWluYXRlIGhlcmUgaWYgbm8gZXhjZXB0aW9uLgoJKiBleGNlcHQuYyAoYnVpbGRfdGVybWluYXRlX2hhbmRsZXIpOiBOZXcgZm4uCgkoZXhwYW5kX3N0YXJ0X2NhdGNoX2Jsb2NrKTogVXNlIGl0LgoJKGV4cGFuZF9leGNlcHRpb25fYmxvY2tzKTogTGlrZXdpc2UuCgkoYWxsb2NfZWhfb2JqZWN0KTogTmV3IGZuLgoJKGV4cGFuZF90aHJvdyk6IFVzZSBpdC4gIFByb3RlY3QgZXhjZXB0aW9uIGluaXQgd2l0aCB0ZXJtaW5hdGUuCgkqIHR5cGVjay5jIChidWlsZF9tb2RpZnlfZXhwcik6IFJlbW92ZSBjb2RlIHRoYXQgaWdub3JlcyB0cml2aWFsCgltZXRob2RzLgoKTW9uIERlYyAyMiAxMTozNjoyNyAxOTk3ICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBjYWxsLmMgKGFkZF9idWlsdGluX2NhbmRpZGF0ZSk6IEFkZCBkZWZhdWx0IGNhc2UgaW4gZW51bWVyYXRpb24KCXN3aXRjaC4KCShidWlsZF9uZXdfb3ApOiBMaWtld2lzZS4KCShjb252ZXJ0X2xpa2UpOiBMaWtld2lzZS4KCSogY3Z0LmMgKGJ1aWxkX2V4cHJfdHlwZV9jb252ZXJzaW9uKTogTGlrZXdpc2UuCgkqIHRyZWUuYyAocmVhbF9sdmFsdWVfcCk6IExpa2V3aXNlLgoJKGx2YWx1ZV9wKTogTGlrZXdpc2UuCgkoY3BfdHJlZV9lcXVhbCk6IExpa2V3aXNlLgoJKiB0eXBlY2suYyAoY29tcHR5cGVzKTogTGlrZXdpc2UuCgkoYnVpbGRfY29tcG9uZW50X3JlZik6IExpa2V3aXNlLgoJKGJ1aWxkX2Z1bmN0aW9uX2NhbGxfcmVhbCk6IExpa2V3aXNlLgoJKGJ1aWxkX2JpbmFyeV9vcF9ub2RlZmF1bHQpOiBMaWtld2lzZS4KCShidWlsZF91bmFyeV9vcCk6IExpa2V3aXNlLgoJKGJ1aWxkX21vZGlmeV9leHByKTogTGlrZXdpc2UuCgkqIHR5cGVjazIuYyAoaW5pdGlhbGl6ZXJfY29uc3RhbnRfdmFsaWRfcCk6IExpa2V3aXNlLgoKU3VuIERlYyAyMSAxNTo1OTowMCAxOTk3ICBOaWNrIENsaWZ0b24gIDxuaWNrY0BjeWdudXMuY29tPgoKCSogZGVjbDIuYyAobGFuZ19kZWNvZGVfb3B0aW9uKTogQWRkIHN1cHBvcnQgZm9yIC1XdW5rbm93bi1wcmFnbWFzLgoKVGh1IERlYyAxOCAxNDo1MTo1MCAxOTk3ICBNYXJrIE1pdGNoZWxsICA8bW1pdGNoZWxsQHVzYS5uZXQ+CgoJKiBwdC5jIChjb2VyY2VfdGVtcGxhdGVfcGFybXMpOiBNYWtlIHN1cmUgdG8gZGlnZXN0X2luaXQgaWYKCXBvc3NpYmxlLgoKCSogZGVjbC5jIChkdXBsaWNhdGVfZGVjbHMpOiBNYWtlIHRoZSBuZXdkZWNsIHZpcnR1YWwgaWYgdGhlCglvbGRkZWNsIHdhcywganVzdCBhcyBpcyBkb25lIHdpdGggb3RoZXIgYXR0cmlidXRlcyBvZiBvbGRkZWNsLgoKVGh1IERlYyAxOCAxNDo0MzoxOSAxOTk3ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiB0eXBlY2suYyAodW5hcnlfY29tcGxleF9sdmFsdWUpOiBJZ25vcmUgb3AwIHdoZW4gdGFraW5nIHRoZQoJYWRkcmVzcyBvZiBhbiBPRkZTRVRfUkVGLgoKCSogY3AtdHJlZS5kZWY6IEFkZCBBR0dSX0lOSVRfRVhQUi4KCSogZXJyb3IuYywgdHJlZS5jLCB0eXBlY2suYzogUmVwbGFjZSB1c2VzIG9mIE5FV19FWFBSIHdpdGgKCUFHR1JfSU5JVF9FWFBSIHdoZXJlIGFwcHJvcHJpYXRlLgoJKiBleHByLmMgKGNwbHVzX2V4cGFuZF9leHByKTogTGlrZXdpc2UuICBTaW1wbGlmeS4KCgkqIGRlY2wyLmMgKGZpbmlzaF9maWxlKTogUmVtb3ZlIGNhbGwgdG8gcmVnaXN0ZXJfZXhjZXB0aW9uX3RhYmxlLgoKV2VkIERlYyAxNyAxNzowODo1MiAxOTk3ICBCZW5qYW1pbiBLb3NuaWsgIDxia296QHJoaW5vLmN5Z251cy5jb20+CgoJKiBwdC5jIChpbnN0YW50aWF0ZV9jbGFzc190ZW1wbGF0ZSk6IERvbid0IGRvIGluamVjdGlvbiB3aGVuCglwcm9jZXNzaW5nX3RlbXBsYXRlX2RlY2wgaXMgdHJ1ZSwgYXMgcG9sbHV0ZXMgY3VycmVudF9iaW5kaW5nX2xldmVsCglmb3IgYmFzZSBjbGFzc2VzLgoKV2VkIERlYyAxNyAyMToxNzozOSAxOTk3ICBQZXRlciBTY2htaWQgIDxzY2htaWRAbHRvaS5pYXAucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCgkqIHB0LmMgKG1heWJlX2ZvbGRfbm9udHlwZV9hcmcpOiBBZGQgcHJvdG90eXBlLgoKVHVlIERlYyAxNiAxMDozMToyMCAxOTk3ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiB0cmVlLmMgKG1hcGNhcik6IEhhbmRsZSBUUllfQ0FUQ0hfRVhQUiBldCBhbC4KCSogZXJyb3IuYyAoZHVtcF9leHByKTogTGlrZXdpc2UuCgpNb24gRGVjIDE1IDEyOjIyOjA0IDE5OTcgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIHR5cGVjay5jIChidWlsZF9mdW5jdGlvbl9jYWxsX3JlYWwpOiBSZW1vdmUgImlubGluZSBjYWxsZWQgYmVmb3JlCglkZWZpbml0aW9uIiBwZWR3YXJuLgoKCSogcHQuYyAoY29lcmNlX3RlbXBsYXRlX3Bhcm1zKTogVXNlIG1heWJlX2ZvbGRfbm9udHlwZV9hcmcuCgpTdW4gRGVjIDE0IDIyOjM0OjIwIDE5OTcgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIGN2dC5jIChjcF9jb252ZXJ0X3RvX3BvaW50ZXIpOiBGaXggYmFzZSBjb252ZXJzaW9uIG9mIHBtJ3MuCgoJKiBwdC5jICh0eXBlX3VuaWZpY2F0aW9uX3JlYWwpOiBDaGFuZ2UgX19udWxsIHRvIHR5cGUgdm9pZCogd2l0aAoJYSB3YXJuaW5nLgoKU3VuIERlYyAxNCAyMDozODozNSAxOTk3ICBNYXJrIE1pdGNoZWxsICA8bW1pdGNoZWxsQHVzYS5uZXQ+CgoJKiBjYWxsLmMgKGltcGxpY2l0X2NvbnZlcnNpb24pOiBEb24ndCBjYWxsCglidWlsZF91c2VyX3R5cGVfY29udmVyc2lvbl8xIHdpdGggYSBOVUxMIGV4cHIsIHNpbmNlIGl0IHdpbGwKCWNyYXNoLgoKCSogcHQuYyAodW5pZnkpOiBEb24ndCB0cnkgdG8gdW5pZnkgYXJyYXkgYm91bmRzIGlmIGVpdGhlciBhcnJheSBpcwoJdW5ib3VuZGVkLgoKRnJpIERlYyAxMiAxNjowOToxNCAxOTk3ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBlcnJmbi5jIChjcF9wZWR3YXJuLCBjcF9wZWR3YXJuX2F0LCBjcF9lcnJvcl9hdCwgY3Bfd2FybmluZ19hdCk6CglSZXBsYWNlIGV4dGVybiBkZWNscyB3aXRoIGNhc3RzLgoKCSogZGVjbC5jIChleHBhbmRfc3RhcnRfZWFybHlfdHJ5X3N0bXRzKTogRG9uJ3QgbWVzcyB3aXRoIGEgc2VxdWVuY2UuCglVcGRhdGUgbGFzdF9wYXJtX2NsZWFudXBfaW5zbi4KCShzdG9yZV9hZnRlcl9wYXJtcyk6IFJlbW92ZS4KCSogY3AtdHJlZS5oOiBBZGp1c3QuCgpUaHUgRGVjIDExIDIyOjE4OjM3IDE5OTcgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIGRlY2wyLmMgKGNvbWRhdF9saW5rYWdlKTogQWxzbyBzZXQgREVDTF9DT01EQVQuCgkoZmluaXNoX2ZpbGUpOiBDaGVjayBERUNMX0NPTURBVCBpbnN0ZWFkIG9mIHdlYWt8b25lX29ubHkuCgkoaW1wb3J0X2V4cG9ydF92dGFibGUpOiBVc2UgbWFrZV9kZWNsX29uZV9vbmx5IGluc3RlYWQgb2YKCWNvbWRhdF9saW5rYWdlIGZvciB3aW4zMiB0d2Vhay4KCShpbXBvcnRfZXhwb3J0X2RlY2wpOiBMaWtld2lzZS4KCSogcHQuYyAobWFya19kZWNsX2luc3RhbnRpYXRlZCk6IExpa2V3aXNlLgoKCSogZGVjbDIuYyAoZmluaXNoX2ZpbGUpOiBMb3NlIGhhbmRsaW5nIG9mIHRlbXBsYXRlcyBpbiBwZW5kaW5nX3N0YXRpY3MuCgpUaHUgRGVjIDExIDIxOjEyOjA5IDE5OTcgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIGRlY2wyLmMgKGZpbmlzaF9maWxlKTogTG9zZSBjYWxsIHRvIGV4cGFuZF9idWlsdGluX3Rocm93LgoJKiBleGNlcHQuYyAoZXhwYW5kX2J1aWx0aW5fdGhyb3cpOiBSZW1vdmUuCgkqIGNwLXRyZWUuaDogUmVtb3ZlIHB0cl9wdHJfdHlwZV9ub2RlLgoJKiBkZWNsLmM6IExpa2V3aXNlLgoKVGh1IERlYyAxMSAyMDo0MzozMyAxOTk3ICBUZWVtdSBUb3JtYSAgPHRvdEB0cmVtYS5jb20+CgoJKiBkZWNsLmMgKHB0cl9wdHJfdHlwZV9ub2RlKTogRGVmaW5lLgoJKGluaXRfZGVjbF9wcm9jZXNzaW5nKTogSW5pdGlhbGl6ZSBpdC4KCSogY3AtdHJlZS5oOiBEZWNsYXJlIGl0LgoJKiBleGNlcHRpb24uY2MgKF9fY3BfZXhjZXB0aW9uX2luZm8pOiBVc2UgX19nZXRfZWhfaW5mby4KCShfX2NwX3B1c2hfZXhjZXB0aW9uKTogTGlrZXdpc2UuCgkoX19jcF9wb3BfZXhjZXB0aW9uKTogTGlrZXdpc2UuCgoJRnJvbSBTY290dCBTbnlkZXIgPHNueWRlckBkMHNnaWYuZm5hbC5nb3Y+OgoJKiBleGNlcHQuYyAoZXhwYW5kX2J1aWx0aW5fdGhyb3cpOiBVc2UgZ2V0X3NhdmVkX3BjX3JlZiBpbnN0ZWFkIG9mCglzYXZlZF9wYy4KCShpbml0X2V4Y2VwdGlvbl9wcm9jZXNzaW5nKTogUmVtb3ZlZCBzYXZlZF9wYyBpbml0aWFsaXphdGlvbi4KCldlZCBEZWMgMTAgMTE6MDQ6NDUgMTk5NyAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogcHQuYyAoaW5zdGFudGlhdGVfZGVjbCk6IERlZmVyIGFsbCB0ZW1wbGF0ZXMgYnV0IGlubGluZSBmdW5jdGlvbnMuCgpNb24gRGVjICA4IDIzOjE3OjEzIDE5OTcgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIGluaXQuYyAoZXhwYW5kX3ZlY19pbml0KTogRG9uJ3QgZm9sZCBhIGxpc3Qgb2YgcGFyYW1ldGVycy4KCgkqIGRlY2wuYyAoY29weV9hcmdzX3ApOiBIYW5kbGUgY29weSBlbGlzaW9uIGZvciB0eXBlcyB3aXRoIHZpcnR1YWwKCWJhc2VzLgoJKiBjYWxsLmMgKGJ1aWxkX292ZXJfY2FsbCk6IExpa2V3aXNlLgoKU3VuIERlYyAgNyAyMjozODoxMiAxOTk3ICBNYXJrIE1pdGNoZWxsICA8bW1pdGNoZWxsQHVzYS5uZXQ+CgoJKiBwdC5jIChsb29rdXBfdGVtcGxhdGVfZnVuY3Rpb24pOiBDb3B5IHRoZSB0ZW1wbGF0ZSBhcmd1bWVudHMsCglub3QganVzdCB0aGUgbGlzdCBjb250YWluaW5nIHRoZW0sIHRvIHRoZSBwZXJtYW5lbnQgb2JzdGFjay4KClN1biBEZWMgIDcgMTU6NTM6MDYgMTk5NyAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogZXhjZXB0LmMgKGV4cGFuZF9zdGFydF9jYXRjaF9ibG9jayk6IHN1c3BlbmRfbW9tZW50YXJ5IGZvciB0aGUKCXRlcm1pbmF0ZSBoYW5kbGVyLgoKCSogZXJyb3IuYyAoZHVtcF9kZWNsKTogSGFuZGxlIExPT0tVUF9FWFBSLgoKU3VuIERlYyAgNyAxNTo0NTowNyAxOTk3ICBNYXJrIE1pdGNoZWxsICA8bW1pdGNoZWxsQHVzYS5uZXQ+CgoJKiBydHRpLmMgKGJ1aWxkX2R5bmFtaWNfY2FzdCk6IENvcHkgdGhlIGNhc3QtdG8gdHlwZSB0byB0aGUKCXBlcm1hbmVudCBvYnN0YWNrIGlmIHdlIGFyZSBwcm9jZXNzaW5nIGEgdGVtcGxhdGUgZGVjbC4KCSogdHlwZWNrLmMgKGJ1aWxkX3N0YXRpY19jYXN0KTogTGlrZXdpc2UuCgkoYnVpbGRfY29uc3RfY2FzdCk6IExpa2V3aXNlLgoJKGJ1aWxkX3JlaW50ZXJwcmV0X2Nhc3QpOiBMaWtld2lzZS4KCgkqIHB0LmMgKGNvZXJjZV90ZW1wbGF0ZV9wYXJtcyk6IENvZXJjZSBzb21lIGV4cHJlc3Npb25zLCBldmVuCgl3aGVuIHByb2Nlc3NpbmdfdGVtcGxhdGVfZGVjbC4KClN1biBEZWMgIDcgMDE6NDY6MzMgMTk5NyAgQnJ1bm8gSGFpYmxlICA8YnJ1bm9AbGludWl4Lm1hdGhlbWF0aWsudW5pLWthcmxzcnVoZS5kZT4KCgkqIHR5cGVjay5jIChidWlsZF9iaW5hcnlfb3Bfbm9kZWZhdWx0LCBwb2ludGVyX2RpZmYpOiBTeW1tZXRyaWMKCWhhbmRsaW5nIG9mIHBvaW50ZXIgZGlmZmVyZW5jZSBleHByZXNzaW9ucy4KCgkqIHR5cGVjay5jIChjb21wX3RhcmdldF90eXBlcyk6IENvbXBhcmlzb24gb2YgZnVuY3Rpb24vbWV0aG9kIHR5cGVzCglpcyBpbmRlcGVuZGVudCBvZiBucHRycy4KClN1biBEZWMgIDcgMDE6NDA6MjcgMTk5NyAgTWFyayBNaXRjaGVsbCAgPG1taXRjaGVsbEB1c2EubmV0PgoKCSogcHQuYyAodHN1YnN0KTogQXZvaWQgY3JlYXRpbmcgcG9pbnRlciB0byByZWZlcmVuY2UgYW5kCglyZWZlcmVuY2UgdG8gcmVmZXJlbmNlIHR5cGVzLgoKU2F0IERlYyAgNiAwMToyOTozNyAxOTk3ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBwYXJzZS55IChkb19pZCk6IE5ldyBub250ZXJtaW5hbC4KCSh0ZW1wbGF0ZV9pZCk6IFVzZSBpdC4KCkZyaSBEZWMgIDUgMDE6MTc6MzQgMTk5NyAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogcGFyc2UueSAodGVtcGxhdGVfaWQpOiBkb19pZGVudGlmaWVyIGZvciBQRlVOQ05BTUVzLCB0b28uCgkqIHNwZXcuYyAoeXlsZXgpOiBEb24ndCBkb19pZGVudGlmaWVyIGhlcmUuCgkqIGRlY2wyLmMgKGJ1aWxkX2V4cHJfZnJvbV90cmVlKTogUmV2ZXJ0IGxhc3QgY2hhbmdlLgoKCSogZGVjbDIuYyAoYnVpbGRfZXhwcl9mcm9tX3RyZWUpOiBFeHBhbmQgdGhlIG5hbWUgZm9yIGEgbWV0aG9kIGNhbGwuCgkqIHBhcnNlLnkgKG9iamVjdF90ZW1wbGF0ZV9pZCk6IERvbid0IHRyeSB0byB0YWtlIHRoZSBERUNMX05BTUUuCgpXZWQgRGVjICAzIDIwOjAyOjM5IDE5OTcgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIGluaXQuYyAoYnVpbGRfbmV3KTogVXNlIGEgVEFSR0VUX0VYUFIgaW5zdGVhZCBvZiBTQVZFX0VYUFIgZm9yCglhbGxvY19leHByLgoJKiBjYWxsLmMgKGJ1aWxkX29wX2RlbGV0ZV9jYWxsKTogQWRqdXN0LgoKCSogZXhjZXB0LmMgKGV4cGFuZF9lbmRfY2F0Y2hfYmxvY2spOiBMb3NlIHJldGhyb3cgcmVnaW9uLgoJKGV4cGFuZF9zdGFydF9jYXRjaF9ibG9jayk6IExpa2V3aXNlLgoJKGV4cGFuZF9lbmRfY2F0Y2hfYmxvY2spOiBEb24ndCBleHBhbmRfbGVmdG92ZXJfY2xlYW51cHMuCgpXZWQgRGVjICAzIDEzOjI0OjA0IDE5OTcgIEJlbmphbWluIEtvc25payAgPGJrb3pAcmhpbm8uY3lnbnVzLmNvbT4KCgkqIHB0LmMgKHRzdWJzdCk6IFJlbW92ZSB0cmVlX2NvbnMgY2FsbCAocGxhY2VzIHJlZHVuZGFudCBpbmZvIGludG8KCURFQ0xfVEVNUExBVEVfSU5TVEFOVElBVElPTikuCgpXZWQgRGVjICAzIDExOjQ0OjUyIDE5OTcgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIHRyZWUuYyAoaXNfb3ZlcmxvYWRlZF9mbik6IEhhbmRsZSBnZXR0aW5nIGEgZm4gdGVtcGxhdGUuCgkocmVhbGx5X292ZXJsb2FkZWRfZm4pOiBMaWtld2lzZS4KCSogZXJyb3IuYyAoZHVtcF9kZWNsKTogSGFuZGxlIFRFTVBMQVRFX0lEX0VYUFJzIGJldHRlci4KCSogcHQuYyAoY2hlY2tfZXhwbGljaXRfc3BlY2lhbGl6YXRpb24pOiBUd2Vhay4KCShkZXRlcm1pbmVfZXhwbGljaXRfc3BlY2lhbGl6YXRpb24pOiBUd2Vhay4KCgkqIHRyZWUuYywgY3AtdHJlZS5oIChnZXRfdGFyZ2V0X2V4cHIpOiBOZXcgZm4uCgpXZWQgRGVjICAzIDA4OjQ3OjI3IDE5OTcgIFBhdWwgRWdnZXJ0ICA8ZWdnZXJ0QHR3aW5zdW4uY29tPgoKCSogcHQuYyAoY2hlY2tfZXhwbGljaXRfc3BlY2lhbGl6YXRpb24pOiBGaXggbWlzc3BlbGxpbmcgaW4KCWRpYWdub3N0aWM6IGBwcmVjZWVkZWQnLgoJKiB0eXBlY2suYyAoZ2V0X2RlbHRhX2RpZmZlcmVuY2UpOiBGaXggbWlzc3BlbGxpbmcgaW4gZGlhZ25vc3RpYzoKCWBjb252ZXJzaW9uYScuCgoxOTk3LTEyLTAyICBNYXJrIE1pdGNoZWxsICA8bW1pdGNoZWxsQHVzYS5uZXQ+CgoJKiBwdC5jIChkZXRlcm1pbmVfZXhwbGljaXRfc3BlY2lhbGl6YXRpb24pOiBBdm9pZCBhbiBpbnRlcm5hbAoJZXJyb3IgZm9yIGJhZCBzcGVjaWFsaXphdGlvbnMuCgoJKiBtZXRob2QuYyAoYnVpbGRfb3ZlcmxvYWRfdmFsdWUpOiBIYW5kbGUgU0NPUEVfUkVGLgoKVHVlIERlYyAgMiAxOToxODo1MCAxOTk3ICBNaWtlIFN0dW1wICA8bXJzQHdycy5jb20+CgoJKiBjbGFzcy5jIChwcmVwYXJlX2ZyZXNoX3Z0YWJsZSk6IEVuYWJsZSBldmVuIG1vcmUgY29tcGxleCBNSQoJdnRhYmxlIG5hbWVzLgoKVHVlIERlYyAgMiAwMTozNzoxOSAxOTk3ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBleGNlcHRpb24uY2MgKF9fY2hlY2tfZWhfc3BlYyk6IE9wdGltaXplIGEgYml0LgoKCSogZXhjZXB0aW9uLmNjIChfX2NwX3BvcF9leGNlcHRpb24pOiBMb3NlIGhhbmRsZXIgYXJnLgoJKiBleGNlcHQuYyAoZG9fcG9wX2V4Y2VwdGlvbik6IExpa2V3aXNlLgoJKHB1c2hfZWhfY2xlYW51cCk6IExldCB0aGUgY2xlYW51cCBtZWNoYW5pc20gc3VwcGx5IHRoZSBoYW5kbGVyLgoJKGV4cGFuZF9lbmRfY2F0Y2hfYmxvY2spOiBMaWtld2lzZS4KCkZyaSBOb3YgMjggMDE6NTg6MTQgMTk5NyAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogcHQuYyAoY2hlY2tfZXhwbGljaXRfc3BlY2lhbGl6YXRpb24pOiBDb21wbGFpbiBhYm91dCB1c2luZyBhCgl0ZW1wbGF0ZS1pZCBmb3IgYSBub24tc3BlY2lhbGl6YXRpb24uCgpGcmkgTm92IDI4IDEyOjM1OjE5IDE5OTcgIFNjb3R0IENocmlzdGxleSAgPHNjb3R0Y0BuZXQtY29tbXVuaXR5LmNvbT4KCgkqIHJlcG8uYzogUHJvdG90eXBlIHJpbmRleCBvbmx5IGlmIG5lZWRlZC4KCSogeHJlZi5jOiBMaWtld2lzZS4KCkZyaSBOb3YgMjggMDE6NTY6MzUgMTk5NyAgQnJ1bm8gSGFpYmxlICA8YnJ1bm9AbGludWl4Lm1hdGhlbWF0aWsudW5pLWthcmxzcnVoZS5kZT4KCgkqIGVycm9yLmMgKGR1bXBfZGVjbCk6IEhhbmRsZSBURU1QTEFURV9JRF9FWFBSLgoKVGh1IE5vdiAyNyAwMDo1OTo0NiAxOTk3ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiB0eXBlY2suYyAoYnVpbGRfY29uc3RfY2FzdCk6IEhhbmRsZSByZWZlcmVuY2VzIGhlcmUgaW5zdGVhZCBvZgoJaGFuZGluZyBvZmYgdG8gY29udmVydF90b19yZWZlcmVuY2UuCgoJKiBleGNlcHQuYzogTG9zZSBVbmV4cGVjdGVkLCBTZXRUZXJtaW5hdGUsIFNldFVuZXhwZWN0ZWQsCglUZXJtaW5hdGVGdW5jdGlvbkNhbGwuCgkoaW5pdF9leGNlcHRpb25fcHJvY2Vzc2luZyk6IExpa2V3aXNlLiAgVGVybWluYXRlIGV0IGFsIGFyZSBub3cKCXRoZSBmbnMsIG5vdCBBRERSX0VYUFJzLgoJKHZhcmlvdXMpOiBMb3NlIHJlZHVuZGFudCBhc3NlbWJsZV9leHRlcm5hbCBjYWxscy4KCShkb191bndpbmQpOiBzL0J1aWx0aW5SZXR1cm5BZGRyZXNzL2J1aWx0aW5fcmV0dXJuX2FkZHJlc3NfZm5kZWNsLy4KCgkqIGNwLXRyZWUuaCAoc3RydWN0IGxhbmdfZGVjbF9mbGFncyk6IEFkZCBjb21kYXQuCgkoREVDTF9DT01EQVQpOiBOZXcgbWFjcm8uCgkqIGRlY2wuYyAoZHVwbGljYXRlX2RlY2xzKTogUHJvcGFnYXRlIGl0LgoJKGNwX2ZpbmlzaF9kZWNsKTogSGFuZGxlIGl0LgoJKiBkZWNsMi5jIChpbXBvcnRfZXhwb3J0X2RlY2wpOiBKdXN0IHNldCBERUNMX0NPTURBVCBvbiBWQVJfREVDTHMuCgoJKiBjbGFzcy5jOiBSZW1vdmUgc3RhdGljIHBlbmRpbmdfaGFyZF92aXJ0dWFscy4KCShhZGRfdmlydHVhbF9mdW5jdGlvbik6IFRha2UgcG9pbnRlcnMgdG8gcGVuZGluZ192aXJ0dWFscwoJYW5kIHBlbmRpbmdfaGFyZF92aXJ0dWFscy4KCShmaW5pc2hfc3RydWN0XzEpOiBQYXNzIHRoZW0uICBEZWNsYXJlIHBlbmRpbmdfaGFyZF92aXJ0dWFscy4KCldlZCBOb3YgMjYgMjA6Mjg6NDkgMTk5NyAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogZGVjbDIuYyAoaW1wb3J0X2V4cG9ydF92dGFibGUpOiBJZiB3ZSBzdXBwb3J0IG9uZV9vbmx5IGJ1dCBub3QKCXdlYWsgc3ltYm9scywgbWFyayBpbnN0YW50aWF0ZWQgdGVtcGxhdGUgdnRhYmxlcyBvbmVfb25seS4KCShpbXBvcnRfZXhwb3J0X2RlY2wpOiBMaWtld2lzZSBmb3IgdGluZm8gZnVuY3Rpb25zLgoJKGZpbmlzaF92dGFibGVfdmFyZGVjbCk6IEFsc28gd3JpdGUgb3V0IHZ0YWJsZXMgZnJvbSBleHBsaWNpdGx5CglpbnN0YW50aWF0ZWQgdGVtcGxhdGUgY2xhc3Nlcy4KCSogcHQuYyAobWFya19jbGFzc19pbnN0YW50aWF0ZWQpOiBSZXZlcnQgbGFzdCBjaGFuZ2UuCgoJKiBleGNlcHQuYyAoZXhwYW5kX3Rocm93KTogQ2FsbCBtYXJrX3VzZWQgb24gdGhlIGRlc3RydWN0b3IuCgpXZWQgTm92IDI2IDE1OjEzOjQ4IDE5OTcgIEplZmZyZXkgQSBMYXcgIChsYXdAY3lnbnVzLmNvbSkKCgkqIGxleC5jIChsYW5nX2luaXQpOiBFbmFibGUgZmxhZ19leGNlcHRpb25zIGJ5IGRlZmF1bHQgaWYgbm8KCWNvbW1hbmQgbGluZSBzd2l0Y2ggd2FzIHNwZWNpZmllZC4KCjE5OTctMTEtMjYgIE1hcmsgTWl0Y2hlbGwgIDxtbWl0Y2hlbGxAdXNhLm5ldD4KCgkqIHB0LmMgKHVuaWZ5KTogSGFuZGxlIGB2b2lkJyB0ZW1wbGF0ZSBwYXJhbWV0ZXJzIGluCglzcGVjaWFsaXphdGlvbnMuCgpXZWQgTm92IDI2IDAxOjExOjI0IDE5OTcgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIHJ0dGkuYyAoYnVpbGRfZHluYW1pY19jYXN0KTogSGFuZGxlIHRlbXBsYXRlIGNhc2UgaGVyZS4KCShidWlsZF9keW5hbWljX2Nhc3RfMSk6IE5vdCBoZXJlLgoKCSogdHlwZWNrMi5jIChkaWdlc3RfaW5pdCk6IE1ha2UgY29waWVzIHdoZXJlIGFwcHJvcHJpYXRlLgoKCSogZGVjbDIuYyAoZGVsZXRlX3Nhbml0eSk6IHJlc29sdmVfb2Zmc2V0X3JlZi4KCgkqIGV4Y2VwdC5jOiBDYWxsIHRlcm1pbmF0ZSB3aXRob3V0IGNhY2hpbmcgc28gbWFueSBiaXRzLgoKCSogZXhjZXB0LmMgKGV4cGFuZF9zdGFydF9jYXRjaF9ibG9jayk6IEZpeCBjYXRjaGluZyBhIHJlZmVyZW5jZQoJdG8gcG9pbnRlci4KClR1ZSBOb3YgMjUgMTE6Mjg6MjEgMTk5NyAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogaW5pdC5jIChidWlsZF9uZXcpOiBDb3B5IHNpemUgdG8gdGhlIHNhdmVhYmxlIG9ic3RhY2suCgoJKiBpbml0LmMgKGJ1aWxkX25ldyk6IFN0aWNrIGEgQ0xFQU5VUF9QT0lOVF9FWFBSIGluc2lkZSB0aGUKCVRSWV9DQVRDSF9FWFBSIGZvciBub3cuCgpNb24gTm92IDI0IDEyOjE1OjU1IDE5OTcgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIHR5cGVjay5jIChtYXJrX2FkZHJlc3NhYmxlKTogRG9uJ3QgYXNzdW1lIGEgRlVOQ1RJT05fREVDTAoJaGFzIERFQ0xfTEFOR19TUEVDSUZJQy4KCgkqIGV4Y2VwdGlvbi5jYyAoc3RydWN0IGNwX2VoX2luZm8pOiBBZGQgaGFuZGxlcnMgZmllbGQuCgkoX19jcF9wdXNoX2V4Y2VwdGlvbik6IEluaXRpYWxpemUgaXQuCgkoX19jcF9wb3BfZXhjZXB0aW9uKTogRGVjcmVtZW50IGl0LiAgRG9uJ3QgcG9wIHVubGVzcyBpdCdzIDAuCgkoX190aHJvd19iYWRfZXhjZXB0aW9uKTogUmVtb3ZlLgoJKiBleGNlcHQuYyAoY2FsbF9laF9pbmZvKTogQWRkIGhhbmRsZXJzIGZpZWxkLgoJKGdldF9laF9oYW5kbGVycyk6IE5ldyBmbi4KCShwdXNoX2VoX2NsZWFudXApOiBJbmNyZW1lbnQgaGFuZGxlcnMuCgpGcmkgTm92IDIxIDEyOjIyOjA3IDE5OTcgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIGV4Y2VwdC5jIChleHBhbmRfc3RhcnRfZWhfc3BlYyk6IFVzZSB0aGUgdHJ5L2NhdGNoIGNvZGUuCgkoZXhwYW5kX2VuZF9laF9zcGVjKTogTGlrZXdpc2UuICBDYWxsIF9fY2hlY2tfZWhfc3BlYyBpbnN0ZWFkIG9mCglkb2luZyBldmVyeXRoaW5nIGlubGluZS4KCShpbml0X2V4Y2VwdGlvbl9wcm9jZXNzaW5nKTogdGhyb3dfdHlwZV9tYXRjaCBub3cgdGFrZXMKCWNvbnN0IHZvaWQgcG9pbnRlcnMuCgkqIGV4Y2VwdGlvbi5jYyAoX19jaGVja19laF9zcGVjKTogTmV3IGZuLgoJKiBpbmMvZXhjZXB0aW9uOiBOZWl0aGVyIHRlcm1pbmF0ZSBub3IgdW5leHBlY3RlZCByZXR1cm4uCgkqIGRlY2wuYzogTWFrZSBjb25zdF9wdHJfdHlwZV9ub2RlIHB1YmxpYy4KCSogdGluZm8yLmNjIChfX3Rocm93X3R5cGVfbWF0Y2hfcnR0aSk6IFRha2UgdGhlIHR5cGVpbmZvcyBjb25zdGx5LgoKCSogZXhjZXB0LmMgKGV4cGFuZF9zdGFydF9jYXRjaF9ibG9jayk6IFdlIG9ubHkgbmVlZCB0aGUgcmV0aHJvdwoJcmVnaW9uIGZvciBub24tc2psaiBleGNlcHRpb25zLgoJKGV4cGFuZF9lbmRfY2F0Y2hfYmxvY2spOiBMaWtld2lzZS4gIFVzZSBvdXRlcl9jb250ZXh0X2xhYmVsX3N0YWNrLgoKVGh1IE5vdiAyMCAxNDo0MDoxNyAxOTk3ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBNYWtlLWxhbmcuaW4gKENYWF9MSUIyRlVOQ1MpOiBBZGQgbmV3IG9wIG5ldyBhbmQgb3AgZGVsZXRlIG9ianMuCgkodmFyaW91cy5vKTogTGlrZXdpc2UuCgkqIGluYy9uZXc6IEFkZCBwbGFjZW1lbnQgZGVsZXRlcy4gIEFkZCB0aHJvdyBzcGVjcyBmb3IgZGVmYXVsdCBuZXcuCgkqIG5ldy5jYyAoc2V0X25ld19oYW5kbGVyKTogTW92ZSBoZXJlIGZyb20gbGliZ2NjMi4KCSogbmV3MS5jYyAobmV3IChub3Rocm93KSk6IENhdGNoIGEgYmFkX2FsbG9jIHRocm93biBmcm9tIHRoZSBoYW5kbGVyLgoJKG5ldyk6IE1vdmUgZnJvbSBsaWJnY2MyLiAgVGhyb3cgYmFkX2FsbG9jLgoJKiBuZXcyLmNjOiBNb3ZlIHRoZSByZXN0IG9mIHRoZSBvcCBuZXdzIGFuZCBvcCBkZWxldGVzIGZyb20gbGliZ2NjMi4KCSogZGVjbC5jIChpbml0X2RlY2xfcHJvY2Vzc2luZyk6IFVwZGF0ZSBleGNlcHRpb24gc3BlY3Mgb24gbmV3IGFuZAoJZGVsZXRlLgoKCSogbWV0aG9kLmMgKGJ1aWxkX2RlY2xfb3ZlcmxvYWRfcmVhbCk6IERvbid0IG1lc3Mgd2l0aCBnbG9iYWwKCXBsYWNlbWVudCBkZWxldGUuCgoJKiBpbml0LmMgKGJ1aWxkX25ldyk6IENoZWNrIGZvciBudWxsIHRocm93IHNwZWMsIG5vdCBub3Rocm93X3QuCgoJKiBkZWNsLmMgKGR1cGxpY2F0ZV9kZWNscyk6IERvbid0IGNvbXBsYWluIGFib3V0IGRpZmZlcmVudCBleGNlcHRpb25zCglmcm9tIGFuIGludGVybmFsIGRlY2xhcmF0aW9uLgoKCSogY2FsbC5jIChidWlsZF9vcF9kZWxldGVfY2FsbCk6IEZpeCBjaGVjayBmb3IgbWVtYmVyIGZucyBhZ2Fpbi4KCgkqIGRlY2wyLmMgKGltcG9ydF9leHBvcnRfZGVjbCk6IEludGVyZmFjZSBoYWNrZXJ5IGFmZmVjdHMKCXZpcnR1YWwgc3ludGhlc2l6ZWQgbWV0aG9kcy4KCldlZCBOb3YgMTkgMTg6MjQ6MTQgMTk5NyAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogZGVjbC5jIChzdGFydF9kZWNsKTogRG9uJ3QganVzdCBjb21wbGFpbiBhYm91dCBhIG1pc21hdGNoZWQKCXNjb3BlLCBmaXggaXQuCgoJKiBkZWNsLmMgKG1ha2VfaW1wbGljaXRfdHlwZW5hbWUpOiBIYW5kbGUgY2FzZSB3aGVyZSB0IGlzIG5vdAoJYWN0dWFsbHkgZnJvbSBjb250ZXh0LgoJKiB0cmVlLmMgKGdldF90eXBlX2RlY2wpOiBMb3NlIGlkZW50aWZpZXIgY2FzZS4KCSogc3Bldy5jICh5eWxleCk6IExvc2UgdXNlbGVzcyBjYWxsIHRvIGlkZW50aWZpZXJfdHlwZWRlY2xfdmFsdWUuCgkqIHBhcnNlLnkgKG5vbm5lc3RlZF90eXBlKTogSnVzdCB1c2UgbG9va3VwX25hbWUuCgkoY29tcGxleF90eXBlX25hbWUpOiBKdXN0IHVzZSBJREVOVElGSUVSX0dMT0JBTF9WQUxVRS4KCldlZCBOb3YgMTkgMTE6NDU6MDcgMTk5NyAgTWljaGFlbCBUaWVtYW5uICA8dGllbWFubkBheG9uLmN5Z251cy5jb20+CgoJKiBlcnJvci5jIChkdW1wX2Z1bmN0aW9uX25hbWUpOiBUZXN0IERFQ0xfTEFOR19TUEVDSUZJQyBpbiBjYXNlCglUIHdhcyBidWlsdCBpbiBDIGxhbmd1YWdlIGNvbnRleHQgKGZvciBleGFtcGxlLCBieQoJb3V0cHV0X2Z1bmNfc3RhcnRfcHJvZmlsZXIpLgoKV2VkIE5vdiAxOSAxMDozOToyNyAxOTk3ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBkZWNsLmMgKG1ha2VfaW1wbGljaXRfdHlwZW5hbWUpOiBOZXcgZm4uCgkobG9va3VwX25hbWVfcmVhbCk6IFVzZSBpdC4gIFVzZSBjdXJyZW50X2NsYXNzX3R5cGUgYXMgdGhlIGNvbnRleHQuCgpNb24gTm92IDE3IDIzOjQyOjAzIDE5OTcgIEJydW5vIEhhaWJsZSAgPGhhaWJsZUBpbG9nLmZyPgoKCSogcHQuYyAoZG9fcG9wbGV2ZWwpOiBEb24ndCBwcm9oaWJpdCBqdW1wcyBpbnRvIHRoaXMgY29udG91ci4KCk1vbiBOb3YgMTcgMDI6MDE6MjggMTk5NyAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogZnJpZW5kLmMgKGRvX2ZyaWVuZCk6IFdhcm4gYWJvdXQgbm9uLXRlbXBsYXRlIGZyaWVuZHMgaW4gdGVtcGxhdGVzLgoKCSogY2FsbC5jIChidWlsZF9vcF9kZWxldGVfY2FsbCk6IEZpeCBoYW5kbGluZyBvZiBpbmhlcml0ZWQgZGVsZXRlLgoKCSogc2VhcmNoLmMgKGRmc19yZWNvcmRfaW5oZXJpdGFuY2UpOiBJZ25vcmUgdGVtcGxhdGUgdHlwZSBwYXJtcy4KClNhdCBOb3YgMTUgMDA6MzA6NTEgMTk5NyAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogY2FsbC5jIChidWlsZF9uZXdfb3ApOiBGaXggY29weSBlcnJvci4KCShidWlsZF9vcF9uZXdfY2FsbCk6IE5ldyBmbi4KCShidWlsZF9vcF9kZWxldGVfY2FsbCk6IE5ldyBmbi4KCSogY3AtdHJlZS5oOiBEZWNsYXJlIHRoZW0uCgkqIGluaXQuYyAoYnVpbGRfbmV3KTogVXNlIHRoZW0uICBTdXBwb3J0IHBsYWNlbWVudCBkZWxldGUuCgkoYnVpbGRfeF9kZWxldGUpOiBVc2UgYnVpbGRfb3BfZGVsZXRlX2NhbGwuCgkoYnVpbGRfZGVsZXRlKTogTGlrZXdpc2UuCgkqIGRlY2wyLmMgKGRlbGV0ZV9zYW5pdHkpOiBMaWtld2lzZS4KCShjb2VyY2VfZGVsZXRlX3R5cGUpOiBEb24ndCBjb21wbGFpbiBhYm91dCBwbGFjZW1lbnQgZGVsZXRlLgoKVGh1IE5vdiAxMyAwMTo1MjozNiAxOTk3ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBjYWxsLmMgKGJ1aWxkX25ld19mdW5jdGlvbl9jYWxsKTogUmVtb3ZlIHVudXNlZCAnb2JqJyBwYXJtLgoJKiBjcC10cmVlLmgsIHR5cGVjay5jOiBBZGp1c3QuCgoJKiBpbml0LmMgKGJ1aWxkX25ldyk6IE1ha2UgdGhlIGNsZWFudXAgbGFzdCBsb25nZXIuCgkoZXhwYW5kX3ZlY19pbml0KTogQ2FsbCBkb19wZW5kaW5nX3N0YWNrX2FkanVzdC4KCldlZCBOb3YgMTIgMTE6MDQ6MzMgMTk5NyAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogcHQuYyAoZG9fdHlwZV9pbnN0YW50aWF0aW9uKTogRml4IHR5cG8uCgkobWFya19jbGFzc19pbnN0YW50aWF0ZWQpOiBJZiB3ZSBzdXBwb3J0IG9uZV9vbmx5IGJ1dCBub3Qgd2VhawoJc3ltYm9scywgZG9uJ3QgbWFyayB0aGlzIGFzIGtub3duLgoKCSogaW5pdC5jIChidWlsZF9uZXcpOiBIYW5kbGUgdmVjIGRlbGV0ZSBpbiBFSCBjbGVhbnVwLgoKV2VkIE5vdiAxMiAwODoxMTo1NSAxOTk3ICBCZW5qYW1pbiBLb3NuaWsgIDxia296QHJoaW5vLmN5Z251cy5jb20+CgoJKiBjYWxsLmMgKGJ1aWxkX21ldGhvZF9jYWxsKTogQ2FsbCBjb21wbGV0ZV90eXBlIGJlZm9yZSBjaGVja2luZwoJZm9yIGRlc3RydWN0b3IuCgpTdW4gTm92ICA5IDAxOjI5OjU1IDE5OTcgIEppbSBXaWxzb24gICh3aWxzb25AY3lnbnVzLmNvbSkKCgkqIGRlY2wuYyAoYWRkX2Jsb2NrX2N1cnJlbnRfbGV2ZWwpOiBEZWxldGUuCgkqIGluaXQuYyAoYnVpbGRfdmVjX2RlbGV0ZV8xKTogRGVsZXRlIGJ1aWxkX2Jsb2NrIGFuZAoJYWRkX2Jsb2NrX2N1cnJlbnRfbGV2ZWwgY2FsbHMuCgpXZWQgTm92IDEyIDAwOjQ4OjE2IDE5OTcgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIGluaXQuYyAoYnVpbGRfbmV3KTogSGFuZGxlIGZyZWVpbmcgYWxsb2NhdGVkIG1lbW9yeSB3aGVuIHRoZQoJY29uc3RydWN0b3IgdGhyb3dzLgoKCSogY2FsbC5jIChidWlsZF9uZXdfbWV0aG9kX2NhbGwpOiBGaXggZmxhZ3MgYXJnLgoKCSogcHQuYyAoZG9fdHlwZV9pbnN0YW50aWF0aW9uKTogRG9uJ3QgdHJ5IHRvIGluc3RhbnRpYXRlCgltZW1iZXIgdGVtcGxhdGVzLgoJKG1hcmtfZGVjbF9pbnN0YW50aWF0ZWQpOiBJZiB3ZSBzdXBwb3J0IG9uZV9vbmx5IGJ1dCBub3QKCXdlYWsgc3ltYm9scywgbWFyayB0aGlzIG9uZV9vbmx5LgoJKiBkZWNsMi5jIChpbXBvcnRfZXhwb3J0X3Z0YWJsZSk6IERvbid0IGRlZmVyIGhhbmRsaW5nIG9mIHZ0YWJsZXMKCWlmIE1VTFRJUExFX1NZTUJPTF9TUEFDRVMuCgpUdWUgTm92IDExIDEyOjAyOjEyIDE5OTcgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIGV4Y2VwdC5jIChleHBhbmRfZW5kX2NhdGNoX2Jsb2NrKTogTG9zZSBjYWxsIHRvIF9fc2pwb3BudGhyb3cuCgpUdWUgTm92IDExIDAyOjUzOjQ0IDE5OTcgIEphc29uIE1lcnJpbGwgIDxqYXNvbkBsYXNoZXIuY3lnbnVzLmNvbT4KCgkqIGV4Y2VwdC5jIChkb19wb3BfZXhjZXB0aW9uKTogUmV0dXJuIGEgdmFsdWUuCgpNb24gTm92IDEwIDIwOjI1OjMxIDE5OTcgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIGNhbGwuYyAoYnVpbGRfbmV3X21ldGhvZF9jYWxsKTogSGFuZGxlIGdldHRpbmcgYQoJVEVNUExBVEVfSURfRVhQUiBhcm91bmQgYSBURU1QTEFURV9ERUNMLiAgRG9uJ3QgbG9vayBmb3IgYSBmaWVsZAoJaWYgd2UgZ290IHRlbXBsYXRlIHBhcm1zLgoJKiB0eXBlY2suYyAoYnVpbGRfeF9mdW5jdGlvbl9jYWxsKTogUmVtZW1iZXIgdGhlIFRFTVBMQVRFX0lEX0VYUFIsCglub3QganVzdCB0aGUgYXJncy4KCSogZGVjbDIuYyAoYnVpbGRfZXhwcl9mcm9tX3RyZWUpOiBUd2VhayBsYXN0IGNoYW5nZS4KCSogcHQuYyAodHN1YnN0X2NvcHkpOiBVc2UgZ2V0X2ZpcnN0X2ZuIGluc3RlYWQgb2YgVFJFRV9WQUxVRS4KCShtYXliZV9mb2xkX25vbnR5cGVfYXJnKTogU3BsaXQgb3V0IGZyb20gdHN1YnN0X2NvcHkuCgkqIHRyZWUuYyAoZ2V0X2ZpcnN0X2ZuKTogSnVzdCByZXR1cm4gYSBURU1QTEFURV9JRF9FWFBSLgoKTW9uIE5vdiAxMCAyMDowODozOCAxOTk3ICBLcmlhbmcgTGVyZHN1d2FuYWtpaiAgPGxlcmRzdXdhQHNjZi1mcy51c2MuZWR1PgoKCSogcHQuYyAodHN1YnN0X2NvcHkpOiBIYW5kbGUgZXhwbGljaXQgdGVtcGxhdGUgYXJndW1lbnRzIGluCglmdW5jdGlvbiBjYWxscy4KCSogdHlwZWNrLmMgKGJ1aWxkX3hfZnVuY3Rpb25fY2FsbCk6IExpa2V3aXNlLgoJKiBkZWNsMi5jIChidWlsZF9leHByX2Zyb21fdHJlZSk6IExvb2t1cCBmdW5jdGlvbiBuYW1lIGlmIGl0CgloYXNuJ3QgYmVlbiBkb25lLgoKCSogcHQuYyAodHN1YnN0KTogSW5zdGFudGlhdGUgdGVtcGxhdGUgZnVuY3Rpb25zIHByb3Blcmx5IHdoZW4KCXRlbXBsYXRlIHBhcmFtZXRlciBkb2VzIG5vdCBhcHBlYXIgaW4gZnVuY3Rpb24gYXJndW1lbnRzIGFuZCByZXR1cm4KCXR5cGUuCgkoY29tcF90ZW1wbGF0ZV9hcmdzKTogSGFuZGxlIG1lbWJlciB0ZW1wbGF0ZXMgcmVxdWlyZWQgYnkgdHN1YnN0LgoKTW9uIE5vdiAxMCAyMDowODozOCAxOTk3ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBkZWNsLmMgKGdyb2tkZWNsYXJhdG9yKTogVHdlYWsgY29uZGl0aW9ucyBmb3IgcGVkd2FybiBpbgoJcHJldmlvdXMgY2hhbmdlLgoKTW9uIE5vdiAxMCAyMDowODoyOSAxOTk3ICBCcnVubyBIYWlibGUgIDxicnVub0BsaW51aXgubWF0aGVtYXRpay51bmkta2FybHNydWhlLmRlPgoKCSogcHQuYyAoY29lcmNlX3RlbXBsYXRlX3Bhcm1zKTogVHdlYWsgZXJyb3IgbWVzc2FnZS4KCgkqIGRlY2wuYyAoZ3Jva2RlY2xhcmF0b3IpOiBJZiAtV3JldHVybi10eXBlLCB3YXJuIGV2ZXJ5dGltZSBhCglyZXR1cm4gdHlwZSBkZWZhdWx0cyB0byBgaW50JywgZXZlbiBpZiB0aGVyZSBhcmUgc3RvcmFnZS1jbGFzcwoJc3BlY2lmaWVycy4KCk1vbiBOb3YgMTAgMDM6MDQ6MjAgMTk5NyAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCUNvbXBsZXRlIG5lc3RlZCBleGNlcHRpb24gc3VwcG9ydC4KCSogZXhjZXB0LmMgKGRvX3BvcF9leGNlcHRpb24pOiBTcGxpdCBvdXQuLi4KCShwdXNoX2VoX2NsZWFudXApOiBGcm9tIGhlcmUuICBIYW5kbGUgdGhlIEVIIHJlZ2lvbiBieSBoYW5kLgoJKGV4cGFuZF9zdGFydF9jYXRjaF9ibG9jayk6IEFkZCBhIG5ldyBsZXZlbCBmb3IgdGhlIGNhdGNoIHBhcm0uCglNb3ZlIHRoZSByZXRocm93IHJlZ2lvbiBvdXRzaWRlIHRoZSB0d28gY2xlYW51cCByZWdpb25zLgoJUHJvdGVjdCB0aGUgaW5pdGlhbGl6ZXIgZm9yIHRoZSBjYXRjaCBwYXJtIHdpdGggdGVybWluYXRlLgoJKGV4cGFuZF9lbmRfY2F0Y2hfYmxvY2spOiBMaWtld2lzZS4gIEVuZCB0aGUgcmVnaW9uIGZvciB0aGUgZWhfY2xlYW51cC4KCSogZXhjZXB0aW9uLmNjIChfX2NwX3BvcF9leGNlcHRpb24pOiBOb3cgdGFrZXMgdHdvIHBhcm1zLiAgSGFuZGxlCglwb3BwaW5nIG9mZiB0aGUgbWlkZGxlIG9mIHRoZSBzdGFjay4KCSogdHJlZS5jIChsdmFsdWVfcCwgcmVhbF9sdmFsdWVfcCk6IEhhbmRsZSBUUllfQ0FUQ0hfRVhQUiwKCVdJVEhfQ0xFQU5VUF9FWFBSLCBhbmQgVU5TQVZFX0VYUFIuCgkoYnVpbGRfY3BsdXNfbmV3KTogT25seSB3cmFwIENBTExfRVhQUnMuCgkqIGluaXQuYyAoZXhwYW5kX2RlZmF1bHRfaW5pdCk6IEhhbmRsZSBhIFRSWV9DQVRDSF9FWFBSIGFyb3VuZAoJdGhlIGNvbnN0cnVjdG9yIGNhbGwuCgpTdW4gTm92ICA5IDE4OjAwOjI2IDE5OTcgIFJpY2hhcmQgS2VubmVyICA8a2VubmVyQHZsc2kxLnVsdHJhLm55dS5lZHU+CgoJKiBNYWtlLWxhbmcuaW4gKGMrKy5kaXN0ZGlyKTogTWFrZSBpbmMgc3ViZGlyZWN0b3J5LgoKRnJpIE5vdiAgNyAxMTo1NzoyOCAxOTk3ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBkZWNsMi5jIChmaW5pc2hfZmlsZSk6IFB1dCBiYWNrIHNvbWUgY29kZS4KClRodSBOb3YgIDYgMTE6Mjg6MTQgMTk5NyAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogZGVjbDIuYyAoZmluaXNoX2ZpbGUpOiBSZW1vdmUgcmVkdW5kYW50IGNvZGUuCgkqIG1ldGhvZC5jIChlbWl0X3RodW5rKTogRG9uJ3QgbGV0IHRoZSBiYWNrZW5kIGRlZmVyIGdlbmVyaWMgdGh1bmtzLgoKV2VkIE5vdiAgNSAyMzo1Mjo1MCAxOTk3ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBleGNlcHQuYyAoY2FsbF9laF9pbmZvKTogU3BsaXQgb3V0Li4uCgkocHVzaF9laF9pbmZvKTogRnJvbSBoZXJlLgoJKGV4cGFuZF9idWlsdGluX3Rocm93KTogVXNlIGl0LgoJKGV4cGFuZF9zdGFydF9jYXRjaF9ibG9jayk6IE1vdmUgcmVnaW9uIHN0YXJ0IGJhY2suCgpUdWUgTm92ICA0IDEzOjQ1OjEwIDE5OTcgIERvdWcgRXZhbnMgIDxkZXZhbnNAY2FudWNrLmN5Z251cy5jb20+CgoJKiBsZXguYyAoTVVMVElCWVRFX0NIQVJTKTogI3VuZGVmIGlmIGNyb3NzIGNvbXBpbGluZy4KCShyZWFsX3l5bGV4KTogUmVjb3JkIHdpZGUgc3RyaW5ncyB1c2luZyB0YXJnZXQgZW5kaWFubmVzcywgbm90IGhvc3QuCgoxOTk3LTExLTAzICBCcmVuZGFuIEtlaG9lICA8YnJlbmRhbkBsaXNhLmN5Z251cy5jb20+CgoJKiByZXBvLmMgKHJpbmRleCk6IEFkZCBkZWNsIHVuY29uZGl0aW9uYWxseS4KCShnZXRfYmFzZV9maWxlbmFtZSwgb3Blbl9yZXBvX2ZpbGUpOiBEb24ndCBjYXN0IHJpbmRleC4KCSogeHJlZi5jIChyaW5kZXgpOiBBZGQgZGVjbCB1bmNvbmRpdGlvbmFsbHkuCgkoaW5kZXgpOiBSZW1vdmUgdW51c2VkIGRlY2wuCgkob3Blbl94cmVmX2ZpbGUpOiBEb24ndCBjYXN0IHJpbmRleC4KClN1biBOb3YgIDIgMTU6MDQ6MTIgMTk5NyAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogY2xhc3MuYyAoYnVpbGRfdmJhc2VfcGF0aCk6IFByb3BhZ2F0ZSB0aGUgcmVzdWx0IHR5cGUgcHJvcGVybHkuCgoxOTk3LTExLTAxICBCcmVuZGFuIEtlaG9lICA8YnJlbmRhbkBsaXNhLmN5Z251cy5jb20+CgoJKiBleGNlcHQuYyAoZXhwYW5kX2J1aWx0aW5fdGhyb3cpIFshRFdBUkYyX1VOV0lORF9JTkZPXTogUmVwbGFjZQoJcmVtYWluaW5nIHVzZSBvZiBzYXZlZF90aHJvd190eXBlIHdpdGggYSBjYWxsIHRvIGdldF9laF90eXBlLgoKMTk5Ny0xMC0zMSAgQnJlbmRhbiBLZWhvZSAgPGJyZW5kYW5AbGlzYS5jeWdudXMuY29tPgoKCSogbGV4LmMgKEZJTEVfTkFNRV9OT05ESVJFQ1RPUlkpOiBEZWxldGUgbWFjcm8uCgkoZmlsZV9uYW1lX25vbmRpcmVjdG9yeSk6IE5ldyBmdW5jdGlvbiwgZG9pbmcgdGhlIHNhbWUgYXMgdGhlIG1hY3JvLgoJKHNldF90eXBlZGVjbF9pbnRlcmZhY2VfaW5mbyk6IFVzZSBpdCBpbnN0ZWFkIG9mIHRoZSBtYWNyby4KCShjaGVja19uZXdsaW5lKTogTGlrZXdpc2UuCgkoaGFuZGxlX2NwX3ByYWdtYSk6IExpa2V3aXNlLgoKCSogcmVwby5jIChnZXRfYmFzZV9maWxlbmFtZSk6IENhc3QgcmVzdWx0IG9mIHJpbmRleCB0byBjaGFyKi4KCShvcGVuX3JlcG9fZmlsZSk6IExpa2V3aXNlLgoJKiB4cmVmLmMgKG9wZW5feHJlZl9maWxlKTogTGlrZXdpc2UuCgkqIGVycm9yLmMgKGR1bXBfY2hhcik6IE1ha2UgaXRzIGFyZyBpbnQsIG5vdCBjaGFyLgoKCSogZXhjZXB0LmMgKHB1c2hfZWhfaW5mbyk6IFBhc3MgdGhlIG51bWJlciBvZiBmaWVsZHMgLSAxIGRvd24sIG5vdAoJdGhlIGV4YWN0IG51bWJlciBvZiBmaWVsZHMuCgpGcmkgT2N0IDMxIDAxOjQ3OjU3IDE5OTcgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCglTdXBwb3J0IGZvciBuZXN0ZWQgZXhjZXB0aW9ucy4KCSogdGluZm8yLmNjIChfX2lzX3BvaW50ZXIpOiBOZXcgZm4uCgkqIGV4Y2VwdGlvbi5jYyAoc3RydWN0IGNwX2VoX2luZm8pOiBEZWZpbmUuCgkoX19jcF9leGNlcHRpb25faW5mbywgX191bmNhdGNoX2V4Y2VwdGlvbik6IE5ldyBmbnMuCgkoX19jcF9wdXNoX2V4Y2VwdGlvbiwgX19jcF9wb3BfZXhjZXB0aW9uKTogTmV3IGZucy4KCSogZXhjZXB0LmM6IExvc2Ugc2F2ZWRfdGhyb3dfe3R5cGUsdmFsdWUsY2xlYW51cCxpbl9jYXRjaH0uCglMb3NlIGVtcHR5X2ZuZGVjbC4KCShpbml0X2V4Y2VwdGlvbl9wcm9jZXNzaW5nKTogTGlrZXdpc2UuICBfX2VoX3BjIGlzIG5vdyBleHRlcm5hbC4KCShwdXNoX2VoX2luZm8pOiBOZXcgZm4uCgkoZ2V0X2VoX3tpbmZvLHZhbHVlLHR5cGUsY2F1Z2h0fSk6IE5ldyBmbnMuCgkocHVzaF9laF9jbGVhbnVwKTogSnVzdCBjYWxsIF9fY3BfcG9wX2V4Y2VwdGlvbi4KCShleHBhbmRfc3RhcnRfY2F0Y2hfYmxvY2spOiBVc2UgcHVzaF9laF9pbmZvLiAgU3RhcnQgdGhlIGVoIHJlZ2lvbgoJc29vbmVyLgoJKGV4cGFuZF9lbmRfZWhfc3BlYyk6IFVzZSBwdXNoX2VoX2luZm8uCgkoZXhwYW5kX3Rocm93KTogQ2FsbCBfX2NwX3B1c2hfZXhjZXB0aW9uIHRvIHNldCB1cCB0aGUgZXhjZXB0aW9uIGluZm8uCglKdXN0IHBhc3MgdGhlIGRlc3RydWN0b3Igb3IgMCBhcyB0aGUgY2xlYW51cC4gIENhbGwgX191bmNhdGNoX2V4Y2VwdGlvbgoJd2hlbiB3ZSByZXRocm93LgoJKGV4cGFuZF9idWlsdGluX3Rocm93KTogRG9uJ3QgcmVmZXIgdG8gZW1wdHlfZm5kZWNsLgoKVGh1IE9jdCAyMyAwMjowMTozMCAxOTk3ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBwdC5jIChpbnN0YW50aWF0ZV9kZWNsKTogU0VUX0RFQ0xfSU1QTElDSVRfSU5TVEFOVElBVElPTiBvbiBuZXcgZGVjbC4KCjE5OTctMTAtMjIgIEJyZW5kYW4gS2Vob2UgIDxicmVuZGFuQGN5Z251cy5jb20+CgoJKiBtZXRob2QuYyAoYnVpbGRfdGVtcGxhdGVfcGFybV9uYW1lcywgYnVpbGRfZGVjbF9vdmVybG9hZF9yZWFsKToKCUFkZCBzdGF0aWMgdG8gZGVmaW5pdGlvbnMuCgkqIHB0LmMgKGFkZF90b190ZW1wbGF0ZV9hcmdzLCBub3RlX3RlbXBsYXRlX2hlYWRlciwKCXByb2Nlc3NpbmdfZXhwbGljaXRfc3BlY2lhbGl6YXRpb24sIHR5cGVfdW5pZmljYXRpb25fcmVhbCk6IExpa2V3aXNlLgoJKHtkZXRlcm1pbmUsY2hlY2t9X2V4cGxpY2l0X3NwZWNpYWxpemF0aW9uKTogVXNlIGEgc2luZ2xlIHN0cmluZyBmb3IKCWVycm9yIG1lc3NhZ2VzLgoKTW9uIE9jdCAyMCAxMjowNjozNCAxOTk3ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBleGNlcHQuYyAoZXhwYW5kX2V4Y2VwdGlvbl9ibG9ja3MpOiBDYWxsIGRvX3BlbmRpbmdfc3RhY2tfYWRqdXN0LgoJKGV4cGFuZF9lbmRfY2F0Y2hfYmxvY2spOiBMaWtld2lzZS4KCShleHBhbmRfZW5kX2VoX3NwZWMpOiBMaWtld2lzZS4KCk1vbiBPY3QgMjAgMTE6NDQ6MjAgMTk5NyAgTWFyayBNaXRjaGVsbCAgPG1taXRjaGVsbEB1c2EubmV0PgoKCSogZGVjbC5jIChkdXBsaWNhdGVfZGVjbHMpOiBIYW5kbGUgdGVtcGxhdGUgc3BlY2lhbGl6YXRpb25zCgljb3JyZWN0bHkuCgkqIGVycm9yLmMgKGR1bXBfZnVuY3Rpb25fbmFtZSk6IEZpeCBwcmludGluZyBvZiBzcGVjaWFsaXphdGlvbnMgb2YKCW1lbWJlciBmdW5jdGlvbnMgdGhhdCBhcmUgbm90IG1lbWJlciB0ZW1wbGF0ZXMuCgkqIGNwLXRyZWUuaCAocHJvY2Vzc2luZ19zcGVjaWFsaXphdGlvbik6IE1ha2UgZ2xvYmFsLgoJKiBwdC5jIChwcm9jZXNzaW5nX3NwZWNpYWxpemF0aW9uKTogTGlrZXdpc2UuCgkqIGxleC5jIChjb25zX3VwX2RlZmF1bHRfZnVuY3Rpb24pOiBTYXZlIGFuZCByZXN0b3JlCglwcm9jZXNzaW5nX3NwZWNpYWxpemF0aW9uIHRvIGF2b2lkIGNvbmZ1c2lvbi4KCk1vbiBPY3QgMjAgMTA6NTI6MjIgMTk5NyAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogZGVjbC5jIChpbml0X2RlY2xfcHJvY2Vzc2luZyk6IEdpdmUgbnVsbF9ub2RlIHVua25vd24qIHR5cGUuCgkqIHR5cGVjay5jIChjb21wX3RhcmdldF90eXBlcyk6IEhhbmRsZSBVTktOT1dOX1RZUEUuCgkoY29tbW9uX3R5cGUpOiBMaWtld2lzZS4KCSogZXJyb3IuYyAoYXJnc19hc19zdHJpbmcpOiBSZWNvZ25pemUgbnVsbF9ub2RlLgoKU3VuIE9jdCAxOSAwOToxMzowMSAxOTk3ICBSaWNoYXJkIEtlbm5lciAgPGtlbm5lckB2bHNpMS51bHRyYS5ueXUuZWR1PgoKCSogdHlwZWNrLmMgKHJhdGlvbmFsaXplX2NvbmRpdGlvbmFsX2V4cHIpOiBIYW5kbGUge01JTixNQVh9X0VYUFIuCgkodW5hcnlfY29tcGxleF9sdmFsdWUpOiBDYWxsIGl0IGZvciB7TUlOLE1BWH1fRVhQUi4KCgkqIGRlY2wuYyAoaW5pdF9kZWNsX3Byb2Nlc3NpbmcpOiBDYWxsIHVzaW5nX2VoX2Zvcl9jbGVhbnVwcy4KCgkqIE1ha2UtbGFuZy5pbiAoZysrKTogSW5jbHVkZSBwcmVmaXguby4KClRodSBPY3QgMTYgMTU6MzE6MDkgMTk5NyAgSnVkeSBHb2xkYmVyZyAgPGp1ZHlnb2xkQHNhbndhZnAuY29tPgoKCSogcHQuYyAoZGV0ZXJtaW5lX2V4cGxpY2l0X3NwZWNpYWxpemF0aW9uKTogSW5pdGlhbGl6ZSAiZHVtbXkiCgl0byBrZWVwIFB1cmlmeSBxdWlldC4KClRodSBPY3QgMTYgMDA6MTQ6NDggMTk5NyAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogbWV0aG9kLmMgKGJ1aWxkX292ZXJsb2FkX3ZhbHVlKTogSGFuZGxlIFRFTVBMQVRFX0NPTlNUX1BBUk1zIGhlcmUuCgkoYnVpbGRfb3ZlcmxvYWRfaW50KTogTm90IGhlcmUuCgpXZWQgT2N0IDE1IDAwOjM1OjI4IDE5OTcgIE1pa2UgU3R1bXAgIDxtcnNAd3JzLmNvbT4KCgkqIGNsYXNzLmMgKGJ1aWxkX3R5cGVfcGF0aG5hbWUpOiBSZW1vdmUuCgkocHJlcGFyZV9mcmVzaF92dGFibGUpOiBGaXggcHJvYmxlbSB3aXRoIGNvbXBsZXggTUkgdnRhYmxlIG5hbWVzLgoKMTk5Ny0xMC0xNCAgQnJlbmRhbiBLZWhvZSAgPGJyZW5kYW5AbGlzYS5jeWdudXMuY29tPgoKCSogcGFyc2UueSAodW5hcnlfZXhwcik6IEdpdmUgYSBwZWR3YXJuIGlmIHNvbWVvbmUgdHJpZXMgdG8gdXNlIHRoZQoJJiZsYWJlbCBHTlUgZXh0ZW5zaW9uLgoKVHVlIE9jdCAxNCAxMjowMTowMCAxOTk3ICBNYXJrIE1pdGNoZWxsICA8bW1pdGNoZWxsQHVzYS5uZXQ+CgoJKiBkZWNsLmMgKHB1c2h0YWcpOiBVbnNldCBERUNMX0FTU0VNQkxFUl9OQU1FIGJlZm9yZSBzZXR0aW5nIGl0LAoJc28gYXMgdG8gYXZvaWQgaW5jb3JyZWN0IG1hbmdsaW5ncy4KCSogbWV0aG9kLmMgKGJ1aWxkX2RlY2xfb3ZlcmxvYWRfcmVhbCk6IERvbid0IG1hbmdsZSByZXR1cm4gdHlwZXMKCWZvciBjb25zdHJ1Y3RvcnMuCgpUdWUgT2N0IDE0IDExOjQ2OjE0IDE5OTcgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIGNwLXRyZWUuaCAoc2NyYXRjaGFsbG9jLCBidWlsZF9zY3JhdGNoX2xpc3QsIG1ha2Vfc2NyYXRjaF92ZWMsCglzY3JhdGNoX3RyZWVfY29ucyk6IERlZmluZSBhcyBtYWNyb3MgZm9yIG5vdy4KCSogY2FsbC5jLCBjbGFzcy5jLCBjdnQuYywgZGVjbC5jLCBkZWNsMi5jLCBleGNlcHQuYywgZXhwci5jLCBpbml0LmMsCglsZXguYywgbWV0aG9kLmMsIHBhcnNlLnksIHB0LmMsIHJ0dGkuYywgc2VhcmNoLmMsIHRyZWUuYywgdHlwZWNrLmMsCgl0eXBlY2syLmM6IFVzZSB0aGVtIGFuZCB0aGUgZXhwcmVzc2lvbl9vYnN0YWNrIHZhcmlhbnRzLgoKTW9uIE9jdCAxMyAxNzo0MToyNiAxOTk3ICBCZW5qYW1pbiBLb3NuaWsgIDxia296QHJoaW5vLmN5Z251cy5jb20+CgoJKiBkZWNsLmMgKHN0b3JlX3JldHVybl9pbml0KTogQWxsb3cgY2xhc3NlcyB3aXRoIGV4cGxpY2l0IGN0b3JzIHRvCgliZSB1c2VkIHdpdGggdGhlIG5hbWVkIHJldHVybiB2YWx1ZXMgZXh0ZW5zaW9uLgoKRnJpIE9jdCAxMCAxMjoyMToxMSAxOTk3ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBwdC5jIChpbnN0YW50aWF0ZV9kZWNsKTogRml4IHByZXZpb3VzIGNoYW5nZS4KClRodSBPY3QgIDkgMTI6MDg6MjEgMTk5NyAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogcHQuYyAodHN1YnN0KTogRml4IHRoaW5rby4KCShpbnN0YW50aWF0ZV9kZWNsKTogUmVhbGx5IHVzZSB0aGUgb3JpZ2luYWwgdGVtcGxhdGUuCgoJKiBjYWxsLmMgKGJ1aWxkX25ld19tZXRob2RfY2FsbCk6IFVzZSBzaW1wbGUgY29uc3RydWN0b3JfbmFtZSBmb3IKCWVycm9yIG1lc3NhZ2VzLgoKV2VkIE9jdCAgOCAyMjo0NDo0MiAxOTk3ICBKZWZmcmV5IEEgTGF3ICA8bGF3QGN5Z251cy5jb20+CgoJKiBtZXRob2QuYyAoYnVpbGRfdW5kZXJzY29yZV9pbnQpOiBEb24ndCB1c2UgQU5TSSBzcGVjaWZpYwoJZmVhdHVyZXMuCgpXZWQgT2N0ICA4IDAwOjE4OjIyIDE5OTcgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIGRlY2wyLmMgKGZpbmlzaF9wcmV2dGFibGVfdmFyZGVjbCk6IENoZWNrIERFQ0xfUkVBTExZX0VYVEVSTgoJZm9yIG91ciBrZXkgbWV0aG9kOyBpdCBtaWdodCBoYXZlIGJlZW4gaW5saW5lZCBieSAtTzMuCgpUdWUgT2N0ICA3IDIzOjAwOjEyIDE5OTcgIE1hcmsgTWl0Y2hlbGwgIDxtbWl0Y2hlbGxAdXNhLm5ldD4KCgkqIGRlY2wuYyAobWFrZV90eXBlbmFtZV90eXBlKTogRG8gbm90IHRyeSB0byBjYWxsIGxvb2t1cF9maWVsZCBmb3IKCW5vbi1hZ2dyZWdhdGUgdHlwZXMuCgpUdWUgT2N0ICA3IDIyOjUyOjEwIDE5OTcgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIHR5cGVjay5jIChidWlsZF9yZWludGVycHJldF9jYXN0KTogVHdlYWsuCgpUdWUgT2N0ICA3IDIyOjQ1OjMxIDE5OTcgIEFsZXhhbmRyZSBPbGl2YSAgPG9saXZhQGRjYy51bmljYW1wLmJyPgoKCSogdHlwZWNrLmMgKGJ1aWxkX3JlaW50ZXJwcmV0X2Nhc3QpOiBDb252ZXJ0aW5nIGEgdm9pZCBwb2ludGVyCgl0byBmdW5jdGlvbiBwb2ludGVyIHdpdGggYSByZWludGVycHJldF9jYXN0IHByb2R1Y2VzIGEgd2FybmluZwoJaWYgLXBlZGFudGljIGlzIGlzc3VlZC4KClR1ZSBPY3QgIDcgMjI6NDM6NDMgMTk5NyAgQnJ1bm8gSGFpYmxlICA8YnJ1bm9AbGludWl4Lm1hdGhlbWF0aWsudW5pLWthcmxzcnVoZS5kZT4KCgkqIHR5cGVjay5jIChjX2V4cGFuZF9yZXR1cm4pOiBEb24ndCB3YXJuIGFib3V0IHJldHVybmluZyBhCglyZWZlcmVuY2UtdHlwZSB2YXJpYWJsZSBhcyBhIHJlZmVyZW5jZS4KClR1ZSBPY3QgIDcgMjE6MTE6MjIgMTk5NyAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogbWV0aG9kLmMgKGJ1aWxkX3N0YXRpY19uYW1lKTogRml4IHR5cG8uCgoxOTk3LTEwLTA3ICBCcmVuZGFuIEtlaG9lICA8YnJlbmRhbkBsaXNhLmN5Z251cy5jb20+CgoJKiBkZWNsLmMgKGR1cGxpY2F0ZV9kZWNscyk6IE1ha2Ugc3VyZSBERUNMX0xBTkdfU1BFQ0lGSUMgaXMgc2V0IG9uCglPTERERUNMIGJlZm9yZSB3ZSB0cnkgdG8gZG8gREVDTF9VU0VfVEVNUExBVEUuCgpUdWUgT2N0ICA3IDAwOjQ4OjM2IDE5OTcgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIGRlY2wuYyAoZHVwbGljYXRlX2RlY2xzKTogRG9uJ3Qgd2FybiBhYm91dCB0ZW1wbGF0ZSBpbnN0YW5jZXMuCgoJKiB0eXBlY2suYyAobWFya19hZGRyZXNzYWJsZSk6IExvc2UgYW5jaWVudCBjb2RlIHRoYXQgdW5zZXRzCglERUNMX0VYVEVSTkFMLgoKCSogcHQuYyAoZG9fZGVjbF9pbnN0YW50aWF0aW9uKTogTG9zZSBzdXBwb3J0IGZvciBpbnN0YW50aWF0aW5nCglub24tdGVtcGxhdGVzLgoKCSogY2FsbC5jIChidWlsZF9uZXdfZnVuY3Rpb25fY2FsbCk6IEZpeCBoYW5kbGluZyBvZiBudWxsIGV4cGxpY2l0Cgl0ZW1wbGF0ZSBhcmdzLgoJKGJ1aWxkX25ld19tZXRob2RfY2FsbCk6IExpa2V3aXNlLgoKTW9uIE9jdCAgNiAyMzo0NDozNCAxOTk3ICBNYXJrIE1pdGNoZWxsICA8bW1pdGNoZWxsQHVzYS5uZXQ+CgoJKiBtZXRob2QuYyAoYnVpbGRfdW5kZXJzY29yZV9pbnQpOiBGaXggdHlwby4KCjE5OTctMTAtMDYgIEJyZW5kYW4gS2Vob2UgIDxicmVuZGFuQGxpc2EuY3lnbnVzLmNvbT4KCgkqIHRyZWUuYyAocHJpbnRfbGFuZ19zdGF0aXN0aWNzKTogI2lmIDAgY2FsbCB0bwoJcHJpbnRfaW5saW5lX29ic3RhY2tfc3RhdGlzdGljcyB1bnRpbCBpdHMgZGVmaW5pdGlvbiBpcyBjaGVja2VkIGluLgoKTW9uIE9jdCAgNiAwOToyNzoyOSAxOTk3ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBkZWNsMi5jIChmaW5pc2hfZmlsZSk6IE1vdmUgZHVtcF90cmVlX3N0YXRpc3RpY3MgdG8gZW5kLgoKCSogcHQuYyAoaW5zdGFudGlhdGVfZGVjbCk6IExvb2sgZm9yIHRoZSBvcmlnaW5hbCB0ZW1wbGF0ZS4KCSh0c3Vic3QpOiBTZXQgREVDTF9JTVBMSUNJVF9JTlNUQU5USUFUSU9OIG9uIHBhcnRpYWwgaW5zdGFudGlhdGlvbnMKCW9mIG1lbWJlciB0ZW1wbGF0ZXMuCgpXZWQgT2N0ICAxIDA4OjQxOjM4IDE5OTcgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIE1ha2VmaWxlLmluIChnKytGQVEuKik6IE5ldyBydWxlcy4KCShDT05GTElDVFMpOiBVcGRhdGUuCgkqIGcrK0ZBUS50ZXhpOiBNb3ZlZCBmcm9tIGxpYmcrKy4KCgkqIHBhcnNlLnkgKFBGVU5DTkFNRSk6IE9ubHkgc3BlY2lmeSB0aGUgdHlwZSBvbmNlLgoKMTk5Ny0xMC0wMSAgQnJlbmRhbiBLZWhvZSAgPGJyZW5kYW5AbGFzaGVyLmN5Z251cy5jb20+CgoJKiBsZXguYyAocmVhbF95eWxleCk6IENsZWFuIHVwIHRoZSBjb2RlIHRvIGZ1bGx5IGJlaGF2ZSB0aGUgd2F5Cgl0aGUgYy1sZXguYyBwYXJzZXIgZG9lcyBmb3IgY29tcGxleCBhbmQgcmVhbCBudW1iZXJzLgoKVHVlIFNlcCAzMCAwODo1MTozNiAxOTk3ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBtZXRob2QuYyAoYnVpbGRfZGVjbF9vdmVybG9hZF9yZWFsKTogUmVmb3JtYXQuCgpUdWUgU2VwIDMwIDAwOjE4OjI2IDE5OTcgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIG1ldGhvZC5jIChzeW50aGVzaXplX21ldGhvZCk6IElmIGF0X2VvZiwgZGV0ZXJtaW5lIG91ciBsaW5rYWdlLgoKMTk5Ny0wOS0yOSAgUGF1bCBFZ2dlcnQgIDxlZ2dlcnRAdHdpbnN1bi5jb20+CgoJKiBsZXguYyAocmVhbF95eWxleCk6IFRyZWF0IGAkJyBqdXN0IGxpa2UgYF8nLCBleGNlcHQgaXNzdWUgYQoJZGlhZ25vc3RpYyBpZiAhZG9sbGFyc19pbl9pZGVudCBvciBpZiBwZWRhbnRpYy4KCgkqIGxhbmctc3BlY3MuaCAoQGMrKyk6IC1hbnNpIG5vIGxvbmdlciBpbXBsaWVzIC0kLgoKCSogZGVjbDIuYyAobGFuZ19kZWNvZGVfb3B0aW9uKToKCS10cmFkaXRpb25hbCBhbmQgLWFuc2kgbm93IGRvIG5vdCBtZXNzIHdpdGgKCWRvbGxhcnNfaW5faWRlbnQuCgpNb24gU2VwIDI5IDE5OjU3OjUxIDE5OTcgIEguSi4gTHUgIDxoamxAZ251LmFpLm1pdC5lZHU+CgoJKiBNYWtlZmlsZS5pbiAocGFyc2UubywgZGVjbC5vKTogQWxzbyBkZXBlbmQgb24KCSQoc3JjZGlyKS8uLi9leGNlcHQuaCAkKHNyY2RpcikvLi4vb3V0cHV0LmguCgkoZGVjbDIubyk6IEFsc28gZGVwZW5kIG9uICQoc3JjZGlyKS8uLi9leHByLmggLi4vaW5zbi1jb2Rlcy5oCgkkKHNyY2RpcikvLi4vZXhjZXB0LmggJChzcmNkaXIpLy4uL291dHB1dC5oLgoJKHR5cGVjay5vLCBpbml0Lm8pOiBBbHNvIGRlcGVuZCBvbiAkKHNyY2RpcikvLi4vZXhwci5oCgkuLi9pbnNuLWNvZGVzLmguCgoJKiBjYWxsLmMsIGNwLXRyZWUuaCwgZGVjbC5jLCB0cmVlLmM6IEZpbmlzaCBwcm90b3R5cGluZy4KCgkqIGV4cHIuYyAoY3BsdXNfZXhwYW5kX2V4cHIpOiBNYWtlIGl0IHN0YXRpYy4KCgkqIGRlY2wyLmMsIGluaXQuYywgdHlwZWNrLmM6IEluY2x1ZGUgImV4cHIuaCIuCgkoZXhwYW5kX2V4cHIpOiBVc2UgcHJvcGVyIHZhbHVlcyB3aGVuIGNhbGxpbmcgdGhlIGZ1bmN0aW9uLgoKTW9uIFNlcCAyOSAxMTowNTo1NCAxOTk3ICBBbGV4YW5kcmUgT2xpdmEgIDxvbGl2YUBkY2MudW5pY2FtcC5icj4KCgkqIGxhbmctb3B0aW9ucy5oOiBOZXcgLVdvbGQtc3R5bGUtY2FzdCBmbGFnLgoJKiBjcC10cmVlLmggKHdhcm5fb2xkX3N0eWxlX2Nhc3QpOiBOZXcgdmFyaWFibGUuCgkqIGRlY2wyLmMgKHdhcm5fb2xkX3N0eWxlX2Nhc3QpOiBMaWtld2lzZS4KCShsYW5nX2RlY29kZV9vcHRpb24pOiBTdXBwb3J0IC1Xb2xkLXN0eWxlLWNhc3QuCgkocmVwYXJzZV9hYnNkY2xfYXNfY2FzdHMpOiBQcm9kdWNlIG9sZC1zdHlsZS1jYXN0IHdhcm5pbmcuCgpNb24gU2VwIDI5IDA5OjIwOjUzIDE5OTcgIEJlbmphbWluIEtvc25payAgPGJrb3pAcmhpbm8uY3lnbnVzLmNvbT4KCgkqIGRlY2wuYyAoY3BfZmluaXNoX2RlY2wpOiBBbGxvdyBleHBhbmRfYWdncl9pbml0IHRvIHNldAoJVFJFRV9VU0VELCByZXNldCB2YWx1ZSBiYXNlZCBvbiBhbHJlYWR5X3VzZWQuCgoJKiBpbml0LmMgKGV4cGFuZF9tZW1iZXJfaW5pdCk6IFJldmVydCBjaGFuZ2UuCgpNb24gU2VwIDI5IDA4OjU3OjUzIDE5OTcgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIGNwLXRyZWUuaCwgZGVjbC5jLCBkZWNsMi5jLCBwdC5jOgoJTG9zZSBERUNMX0NfU1RBVElDIGFuZCBERUNMX1BVQkxJQy4gIERvbid0IHByZXRlbmQgc3RhdGljcyBhcmUgcHVibGljLgoKCSogZGVjbDIuYyAobGFuZ19kZWNvZGVfb3B0aW9uKTogQWRkIG1pc3NpbmcgOy4KClNhdCBTZXAgMjcgMTY6MjI6NDggMTk5NyAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogZnJpZW5kLmMgKGRvX2ZyaWVuZCk6IERpc2FibGUgaW5qZWN0aW9uIGZvciBhbGwgdGVtcGxhdGUtZGVyaXZlZAoJZGVjbHMuCgkqIGRlY2wyLmMgKGxhbmdfZGVjb2RlX29wdGlvbik6IEhhbmRsZSAtZmd1aWRpbmctZGVjbHMuCgkqIHBhcnNlLnkgKG5vdHlwZV90ZW1wbGF0ZV9kZWNsYXJhdG9yKTogTmV3IG5vbnRlcm1pbmFsLgoJKGRpcmVjdF9ub3R5cGVfZGVjbGFyYXRvcik6IFVzZSBpdC4KCShjb21wbGV4X2RpcmVjdF9ub3R5cGVfZGVjbGFyYXRvcik6IExpa2V3aXNlLgoJKG9iamVjdF90ZW1wbGF0ZV9pZCk6IEFjY2VwdCBhbnkga2luZCBvZiBpZGVudGlmaWVyIGFmdGVyIFRFTVBMQVRFLgoJKG5vdHlwZV9xdWFsaWZpZWRfaWQpOiBEb24ndCBhZGQgdGVtcGxhdGUgZGVjbGFyYXRvcnMgaGVyZS4KClNhdCBTZXAgMjcgMTY6MjE6NTggMTk5NyAgTWFyayBNaXRjaGVsbCAgPG1taXRjaGVsbEB1c2EubmV0PgoKCSogY2FsbC5jIChhZGRfdGVtcGxhdGVfY2FuZGlkYXRlKTogQWRkIGV4cGxpY2l0X3RhcmdzIHBhcmFtZXRlci4KCShidWlsZF9zY29wZWRfbWV0aG9kX2NhbGwpOiBVc2UgaXQuCgkoYnVpbGRfb3ZlcmxvYWRfY2FsbF9yZWFsKTogTGlrZXdpc2UuCgkoYnVpbGRfdXNlcl90eXBlX2NvbnZlcnNpb25fMSk6IExpa2V3aXNlLgoJKGJ1aWxkX25ld19mdW5jdGlvbl9jYWxsKTogTGlrZXdpc2UuCgkoYnVpbGRfb2JqZWN0X2NhbGwpOiBMaWtld2lzZS4KCShidWlsZF9uZXdfb3ApOiBMaWtld2lzZS4KCShidWlsZF9uZXdfbWV0aG9kX2NhbGwpOiBMaWtld2lzZS4KCShidWlsZF9uZXdfZnVuY3Rpb25fY2FsbCk6IEhhbmRsZSBURU1QTEFURV9JRF9FWFBSLgoJKGJ1aWxkX25ld19tZXRob2RfY2FsbCk6IExpa2V3aXNlLgoKCSogY2xhc3MuYyAoZmluaXNoX3N0cnVjdF9tZXRob2RzKTogQWRkIHNwZWNpYWxpemF0aW9uIHBhc3MgdG8KCWRldGVybWluZSB3aGljaCBtZXRob2RzIHdlcmUgc3BlY2lhbGl6aW5nIHdoaWNoIG90aGVyIG1ldGhvZHMuCgkoaW5zdGFudGlhdGVfdHlwZSk6IEhhbmRsZSBURU1QTEFURV9JRF9FWFBSLgoKCSogY3AtdHJlZS5kZWYgKFRFTVBMQVRFX0lEX0VYUFIpOiBOZXcgdHJlZSBjb2RlLgoKCSogY3AtdHJlZS5oIChuYW1lX21hbmdsaW5nX3ZlcnNpb24pOiBOZXcgdmFyaWFibGUuCgkoZmxhZ19ndWlkaW5nX2RlY2xzKTogTGlrZXdpc2UuCgkoYnVpbGRfdGVtcGxhdGVfZGVjbF9vdmVybG9hZCk6IE5ldyBmdW5jdGlvbi4KCShiZWdpbl9zcGVjaWFsaXphdGlvbik6IExpa2V3aXNlLgoJKHJlc2V0X3NwZWNpYWxpemF0aW9uKTogTGlrZXdpc2UuCgkoZW5kX3NwZWNpYWxpemF0aW9uKTogTGlrZXdpc2UuCgkoZGV0ZXJtaW5lX2V4cGxpY2l0X3NwZWNpYWxpemF0aW9uKTogTGlrZXdpc2UuCgkoY2hlY2tfZXhwbGljaXRfc3BlY2lhbGl6YXRpb24pOiBMaWtld2lzZS4KCShsb29rdXBfdGVtcGxhdGVfZnVuY3Rpb24pOiBMaWtld2lzZS4KCShmbl90eXBlX3VuaWZpY2F0aW9uKTogQWRkIGV4cGxpY2l0X3RhcmdzIHBhcmFtZXRlci4KCSh0eXBlX3VuaWZpY2F0aW9uKTogTGlrZXdpc2UuCgoJKiBkZWNsLmMgKGR1cGxpY2F0ZV9kZWNscyk6IEFkZCBzbWFydHMgZm9yIGV4cGxpY2l0CglzcGVjaWFsaXphdGlvbnMuCgkoZ3Jva2RlY2xhcmF0b3IpOiBIYW5kbGUgVEVNUExBVEVfSURfRVhQUiwgYW5kIGZ1bmN0aW9uCglzcGVjaWFsaXphdGlvbnMuCgkoZ3Jva2ZuZGVjbCk6IENhbGwgY2hlY2tfZXhwbGljaXRfc3BlY2lhbGl6YXRpb24uCgoJKiBkZWNsMi5jIChsYW5nX2RlY29kZV9vcHRpb24pOiBIYW5kbGUgLWZuYW1lLW1hbmdsaW5nLXZlcnNpb24uCgkoYnVpbGRfZXhwcl9mcm9tX3RyZWUpOiBIYW5kbGUgVEVNUExBVEVfSURfRVhQUi4KCShjaGVja19jbGFzc2ZuKTogSGFuZGxlIHNwZWNpYWxpemF0aW9ucy4KCgkqIGVycm9yLmMgKGR1bXBfZnVuY3Rpb25fbmFtZSk6IFByaW50IHNwZWNpYWxpemF0aW9uIGFyZ3VtZW50cy4KCgkqIGZyaWVuZC5jIChkb19mcmllbmQpOiBEb24ndCBjYWxsIHB1c2hkZWNsIGZvciB0ZW1wbGF0ZQoJaW5zdGFudGlhdGlvbnMuCgoJKiBpbml0LmMgKGJ1aWxkX21lbWJlcl9jYWxsKTogSGFuZGxlIFRFTVBMQVRFX0lEX0VYUFIuCgoJKiBsYW5nLW9wdGlvbnMuaDogQWRkIC1mbmFtZS1tYW5nbGluZy12ZXJzaW9uLCAtZmd1aWRpbmctZGVjbHMsCglhbmQgLWZuby1ndWlkaW5nLWRlY2xzLgoKCSogbGV4LmMgKGlkZW50aWZpZXJfdHlwZSk6IFJldHVybiBQRlVOQ05BTUUgZm9yIHRlbXBsYXRlIGZ1bmN0aW9uCgluYW1lcy4KCgkqIG1ldGhvZC5jIChidWlsZF9kZWNsX292ZXJsb2FkX3JlYWwpOiBOZXcgZnVuY3Rpb24uCgkoYnVpbGRfdGVtcGxhdGVfcGFybV9uYW1lcyk6IE5ldyBmdW5jdGlvbi4KCShidWlsZF9vdmVybG9hZF9pZGVudGlmaWVyKTogVXNlIGl0LgoJKGJ1aWxkX3VuZGVyc2NvcmVfaW50KTogTmV3IGZ1bmN0aW9uLgoJKGJ1aWxkX292ZXJsb2FkX2ludCk6IFVzZSBpdC4gIEFkZCBsZXZlbHMgZm9yIHRlbXBsYXRlCglwYXJhbWV0ZXJzLgoJKGJ1aWxkX292ZXJsb2FkX25hbWUpOiBMaWtld2lzZS4gIEFsc28sIGhhbmRsZSBUWVBFTkFNRV9UWVBFcy4KCShidWlsZF9vdmVybG9hZF9uZXN0ZWRfbmFtZXMpOiBIYW5kbGUgdGVtcGxhdGUgdHlwZSBwYXJhbWV0ZXJzLgoJKGJ1aWxkX3RlbXBsYXRlX2RlY2xfb3ZlcmxvYWQpOiBOZXcgZnVuY3Rpb24uCgoJKiBwYXJzZS55IChZWVNUWVBFKTogTmV3IG50eXBlIG1lbWJlci4KCShuZXN0ZWRfbmFtZV9zcGVjaWZpZXIpOiBVc2UgaXQuCgkobmVzdGVkX25hbWVfc3BlY2lmaWVyXzEpOiBMaWtld2lzZS4KCShQRlVOQ05BTUUpOiBOZXcgdG9rZW4uCgkodGVtcGxhdGVfaWQsIG9iamVjdF90ZW1wbGF0ZV9pZCk6IE5ldyBub24tdGVybWluYWxzLgoJKHRlbXBsYXRlX3Bhcm1fbGlzdCk6IE5vdGUgc3BlY2lhbGl6YXRpb25zLgoJKHRlbXBsYXRlX2RlZik6IExpa2V3aXNlLgoJKHN0cnVjdHNwKTogTGlrZXdpc2UuCgkoZm4uZGVmMik6IEhhbmRsZSBtZW1iZXIgdGVtcGxhdGUgc3BlY2lhbGl6YXRpb25zLgoJKGNvbXBvbmVudF9kZWNsXzEpOiBMaWtld2lzZS4KCShkaXJlY3Rfbm90eXBlX2RlY2xhcmF0b3IpOiBIYW5kbGUgdGVtcGxhdGUtaWRzLgoJKGNvbXBvbmVudF9kZWNsXzEpOiBMaWtld2lzZS4KCShkaXJlY3Rfbm90eXBlX2RlY2xhcmF0b3IpOiBIYW5kbGUgdGVtcGxhdGUtaWRzLgoJKHByaW1hcnkpOiBIYW5kbGUgVEVNUExBVEVfSURfRVhQUiwgYW5kIHRlbXBsYXRlLWlkcy4KCgkqIHB0LmMgKHByb2Nlc3Npbmdfc3BlY2lhbGl6YXRpb25zKTogTmV3IHZhcmlhYmxlLgoJKHRlbXBsYXRlX2hlYWRlcl9jb3VudCk6IExpa2V3aXNlLgoJKHR5cGVfdW5pZmljYXRpb25fcmVhbCk6IE5ldyBmdW5jdGlvbi4KCShwcm9jZXNzaW5nX2V4cGxpY2l0X3NwZWNpYWxpemF0aW9uKTogTGlrZXdpc2UuCgkobm90ZV90ZW1wbGF0ZV9oZWFkZXIpOiBMaWtld2lzZS4KCShpc19tZW1iZXJfdGVtcGxhdGUpOiBIYW5kbGUgc3BlY2lhbGl6YXRpb25zLgoJKGVuZF90ZW1wbGF0ZV9kZWNsKTogQ2FsbCByZXNldF9zcGVjaWFsaXphdGlvbi4KCShwdXNoX3RlbXBsYXRlX2RlY2wpOiBIYW5kbGUgbWVtYmVyIHRlbXBsYXRlIHNwZWNpYWxpemF0aW9ucy4KCSh0c3Vic3QpOiBMaWtld2lzZS4KCSh0c3Vic3RfY29weSk6IEhhbmRsZSBURU1QTEFURV9JRF9FWFBSLgoJKGluc3RhbnRpYXRlX3RlbXBsYXRlKTogSGFuZGxlIHNwZWNpYWxpemF0aW9ucy4KCShpbnN0YW50aWF0ZV9kZWNsKTogTGlrZXdpc2UuCgkoZm5fdHlwZV91bmlmaWNhdGlvbik6IEhhbmRsZSBleHBsaWNpdF90YXJncy4KCSh0eXBlX3VuaWZpY2F0aW9uKTogTGlrZXdpc2UuICBBbGxvdyBpbmNvbXBsZXRlIHVuaWZpY2F0aW9uCgl3aXRob3V0IGFuIGVycm9yIG1lc3NhZ2UsIGlmIGFsbG93X2luY29tcGxldGUuCgkoZ2V0X2JpbmRpbmdzKTogVXNlIG5ldyBjYWxsaW5nIHNlcXVlbmNlIGZvciBmbl90eXBlX3VuaWZpY2F0aW9uLgoKCSogc3Bldy5jICh5eWxleCk6IEhhbmRsZSBQRlVOQ05BTUUuCgoJKiB0cmVlLmMgKGlzX292ZXJsb2FkZWRfZm4pOiBIYW5kbGUgVEVNUExBVEVfSURfRVhQUi4KCShyZWFsbHlfb3ZlcmxvYWRlZF9mbik6IExpa2V3aXNlLgoJKGdldF9maXJzdF9mbik6IEhhbmRsZSBmdW5jdGlvbiB0ZW1wbGF0ZXMuCgoJKiB0eXBlY2suYyAoYnVpbGRfeF9mdW5jdGlvbl9jYWxsKTogVXNlIHJlYWxseV9vdmVybG9hZGVkX2ZuLgoJSGFuZGxlIFRFTVBMQVRFX0lEX0VYUFIuCgkoYnVpbGRfeF91bmFyeV9vcCk6IExpa2V3aXNlLgoJKGJ1aWxkX3VuYXJ5X29wKTogTGlrZXdpc2UuCgkobWFya19hZGRyZXNzYWJsZSk6IFRlbXBsYXRlcyB3aG9zZSBhZGRyZXNzIGlzIHRha2VuIGFyZSBtYXJrZWQKCWFzIHVzZWQuCgoxOTk3LTA5LTI1ICBBbmRyZWFzIFNjaHdhYiAgPHNjaHdhYkBpc3Nhbi5pbmZvcm1hdGlrLnVuaS1kb3J0bXVuZC5kZT4KCgkqIGRlY2wuYyAoaW5pdF9kZWNsX3Byb2Nlc3NpbmcpOiBEZWNsYXJlIF9fYnVpbHRpbl9jb25zdGFudF9wIGFzCglhY2NlcHRpbmcgYW55IGtpbmQgb2YgdHlwZSwgbm90IG9ubHkgaW50LgoKRnJpIFNlcCAyNiAwMDoyMjo1NiAxOTk3ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBzZWFyY2guYyAoZ2V0X21hdGNoaW5nX3ZpcnR1YWwpOiBOb3RpY2UgdmlydHVhbCBiYXNlcyB3aGVuIHNvcnJ5aW5nCglhYm91dCBjb3ZhcmlhbnQgcmV0dXJucy4KCgkqIHBhcnNlLnkgKG1lbWJlcl9pbml0KTogQWxzbyBpbXBseSB0eXBlbmFtZSBoZXJlLiAgUmVtb3ZlIGFuY2llbnQKCWV4dGVuc2lvbiBmb3IgaW5pdGlhbGl6aW5nIGJhc2UgbWVtYmVycy4KClRodSBTZXAgMjUgMTE6MTE6MTMgMTk5NyAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCUhhbmRsZSBtdWx0aS1sZXZlbCB0eXBlbmFtZXMgYW5kIGltcGxpY2l0IHR5cGVuYW1lIGluIGJhc2UgbGlzdC4KCSogcGFyc2UueSAodHlwZW5hbWVfc3VieyxbMC0yXX0pOiBOZXcgcnVsZXMuCgkoc3RydWN0c3AsIHJ1bGUgVFlQRU5BTUVfS0VZV09SRCk6IFVzZSB0eXBlbmFtZV9zdWIuCgkobm9ubmVzdGVkX3R5cGUpOiBOZXcgcnVsZS4KCShjb21wbGV0ZV90eXBlX25hbWUpOiBVc2UgaXQuCgkoYmFzZV9jbGFzcy4xKTogVXNlIHR5cGVuYW1lX3N1YiBhbmQgbm9ubmVzdGVkX3R5cGUuCgkobmVzdGVkX25hbWVfc3BlY2lmaWVyKTogRG9uJ3QgZWxpZGUgc3RkOjogaGVyZS4KCSogZGVjbC5jIChtYWtlX3R5cGVuYW1lX3R5cGUpOiBIYW5kbGUgZ2V0dGluZyBhIHR5cGUgZm9yIE5BTUUuCgkobG9va3VwX25hbWVfcmVhbCk6IFR1cm4gc3RkOjogaW50byA6OiBoZXJlLgoKCVJ2YWx1ZSBjb252ZXJzaW9ucyB3ZXJlIHJlbW92ZWQgaW4gTG9uZG9uLgoJKiBjYWxsLmMgKGlzX3N1YnNlcSk6IERvbid0IGNvbnNpZGVyIGx2YWx1ZSB0cmFuc2Zvcm1hdGlvbnMuCgkoYnVpbGRfY29udik6IExWQUxVRV9DT05WIGFuZCBSVkFMVUVfQ09OViBnZXQgSURFTlRJVFlfUkFOSy4KCShqb3VzdCk6IFJlLWVuYWJsZSA/OiBrbHVkZ2UuCgoxOTk3LTA5LTIyICBCcmVuZGFuIEtlaG9lICA8YnJlbmRhbkBsaXNhLmN5Z251cy5jb20+CgoJKiBkZWNsLmMgKHN0YXJ0X2Z1bmN0aW9uKTogVXAgd2FybmluZyBvZiBubyByZXR1cm4gdHlwZSB0byBiZSBhCglwZWR3YXJuLgoKTW9uIFNlcCAyMiAxNDoxNTozNCAxOTk3ICBCZW5qYW1pbiBLb3NuaWsgIDxia296QHJoaW5vLmN5Z251cy5jb20+CgoJKiBpbml0LmMgKGV4cGFuZF9tZW1iZXJfaW5pdCk6IERvbid0IHNldCBUUkVFX1VTRUQuCgkqIGRlY2wuYyAoY3BfZmluaXNoX2RlY2wpOiBNYXJrIGRlY2xzIHVzZWQgaWYgdHlwZSBoYXMgVFJFRV9VU0VECglzZXQsZG9uJ3QgY2xlYXIgVFJFRV9VU0VEIHdob2xlc2FsZS4KClNhdCBTZXAgMjAgMTU6MzE6MDAgMTk5NyAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogY2FsbC5jIChidWlsZF9vdmVyX2NhbGwpOiBEbyByZXF1aXJlX2NvbXBsZXRlX3R5cGUgYmVmb3JlCglidWlsZF9jcGx1c19uZXcuCgpUaHUgU2VwIDE4IDE2OjQ3OjUyIDE5OTcgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIHNlYXJjaC5jIChsb29rdXBfZmllbGQpOiBDYWxsIGNvbXBsZXRlX3R5cGUgaW4gYWxsIGNhc2VzLgoKCSogZGVjbC5jIChmaW5pc2hfZnVuY3Rpb24pOiBKdXN0IHdhcm4gYWJvdXQgZmxvd2luZyBvZmYgdGhlIGVuZC4KCldlZCBTZXAgMTcgMTA6MzE6MjUgMTk5NyAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogZGVjbC5jIChncm9rcGFybXMpOiBEb24ndCBiYXNoIGEgcGVybWFuZW50IGxpc3Qgbm9kZSBpZiB3ZSdyZQoJaW4gYSBmdW5jdGlvbi4KCjE5OTctMDktMTcgIEJyZW5kYW4gS2Vob2UgIDxicmVuZGFuQGxpc2EuY3lnbnVzLmNvbT4KCgkqIE1ha2VmaWxlLmluIChDT05GTElDVFMpOiBGaXggcy9yIGNvbmZsaWN0IGNvdW50IHRvIDE4LgoKVHVlIFNlcCAxNiAxNDowNjo1NiAxOTk3ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBjYWxsLmMgKGJ1aWxkX25ld19vcCk6IEdpdmUgYmV0dGVyIGVycm9yIGZvciBzeW50YWN0aWNhbGx5Cgljb3JyZWN0LCBidXQgc2VtYW50aWNhbGx5IGludmFsaWQsIHVzZSBvZiB1bmRlY2xhcmVkIHRlbXBsYXRlLgoKCSogY2FsbC5jIChjb21wYXJlX3F1YWwpOiBIYW5kbGUgcG1mcy4KCgkqIGRlY2wuYyAoc3RvcmVfcGFybV9kZWNscyk6IGxhc3RfcGFybV9jbGVhbnVwX2luc24gaXMgdGhlIGluc24KCWFmdGVyIHRoZSBleGNlcHRpb24gc3BlYy4KCk1vbiBTZXAgMTUgMTE6NTI6MTMgMTk5NyAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogY2FsbC5jIChudWxsX3B0cl9jc3RfcCk6IEludGVnZXIgdHlwZSwgbm90IGludGVncmFsIHR5cGUuCgoJKiBjYWxsLmMgKGpvdXN0KTogRGlzYWJsZSB3YXJuaW5ncyB1bnRpbCB0aGV5IGNhbiBiZSBtb3ZlZCB0byB0aGUKCXJpZ2h0IHBsYWNlLgoKRnJpIFNlcCAxMiAxNjoxMToxMyAxOTk3ICBQZXIgQm90aG5lciAgPGJvdGhuZXJAY3lnbnVzLmNvbT4KCgkqIE1ha2VmaWxlLmluLCBjb25maWctbGFuZy5pbjogIENvbnZlcnQgdG8gYXV0b2NvbmYuCgpUaHUgU2VwIDExIDE3OjE0OjU1IDE5OTcgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIGRlY2wuYyAobG9va3VwX25hbWVfcmVhbCk6IEFkZCBpbXBsaWNpdCAndHlwZW5hbWUnIHRvIHR5cGVzIGZyb20KCWJhc2UgY2xhc3Nlcy4KCgkqIHB0LmMgKG1vc3Rfc3BlY2lhbGl6ZWRfY2xhc3MpOiBGaXggdHlwby4KCSh0c3Vic3QpOiBNb3ZlIGNvbnN0YW50IGZvbGRpbmcgdG8gVFJFRV9WRUMgY2FzZS4KClRodSBTZXAgMTEgMTA6MDg6NDUgMTk5NyAgTWFyayBNaXRjaGVsbCAgPG1taXRjaGVsbEB1c2EubmV0PgoKCSogcHQuYyAoZG9fcG9wbGV2ZWwpOiBEb24ndCB3YXJuIGFib3V0IHVudXNlZCBsb2NhbCB2YXJpYWJsZXMKCXdoaWxlIHByb2Nlc3NpbmdfdGVtcGxhdGVfZGVjbCBzaW5jZSB3ZSBkb24ndCBhbHdheXMga25vdyB3aGV0aGVyCglvciBub3QgdGhleSB3aWxsIG5lZWQgY29uc3RydWN0aW5nL2Rlc3RydWN0aW5nLgoKCSogcHQuYyAodXNlc190ZW1wbGF0ZV9wYXJtcyk6IENoZWNrIHRoZSB2YWx1ZXMgb2YgYW4gZW51bWVyYXRpb24KCXR5cGUgdG8gbWFrZSBzdXJlIHRoZXkgZG9uJ3QgZGVwZW5kIG9uIHRlbXBsYXRlIHBhcm1zLgoKCSogZGVjbC5jIChtYWtlX3R5cGVuYW1lX3R5cGUpOiBEb24ndCBsb29rdXAgdGhlIGZpZWxkIGlmIHRoZQoJY29udGV4dCB1c2VzIHRlbXBsYXRlIHBhcm1zLCBldmVuIGlmIHdlJ3JlIG5vdAoJcHJvY2Vzc2luZ190ZW1wbGF0ZV9kZWNsIGF0IHRoZSBtb21lbnQuCgoJKiBwdC5jIChjb2VyY2VfdGVtcGxhdGVfcGFybXMpOiBBdm9pZCBsb29raW5nIGF0IHRoZQoJVFlQRV9MQU5HX0RFQ0wgcG9ydGlvbiBvZiBhIHR5cGVuYW1lIHR5cGUsIHNpbmNlIHRoZXJlIHdvbid0IGJlCglvbmUuCgkodHN1YnN0KTogRG8gY29uc3RhbnQgZm9sZGluZyBhcyBuZWNlc3NhcnkgdG8gbWFrZSBzdXJlIHRoYXQKCWFyZ3VtZW50cyBwYXNzZWQgdG8gbG9va3VwX3RlbXBsYXRlX2NsYXNzIHJlYWxseSBhcmUgY29uc3RhbnRzLgoKV2VkIFNlcCAxMCAxMToyMTo1NSAxOTk3ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBleGNlcHQuYyAoZXhwYW5kX2J1aWx0aW5fdGhyb3cpOiAjaWZuZGVmIERXQVJGMl9VTldJTkRfSU5GTy4KCSogZGVjbDIuYyAoZmluaXNoX2ZpbGUpOiBPbmx5IHJlZ2lzdGVyIGV4Y2VwdGlvbiB0YWJsZXMgaWYgd2UKCW5lZWQgdG8uCgoJKiBkZWNsLmMgKGluaXRfZGVjbF9wcm9jZXNzaW5nKTogQWRkIF9fYnVpbHRpbl9bZnNdcC4KClR1ZSBTZXAgIDkgMTk6NDk6MzggMTk5NyAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogcHQuYyAodW5pZnkpOiBKdXN0IHJldHVybiAwIGZvciBhIFRZUEVOQU1FX1RZUEUuCgpUdWUgU2VwICA5IDE3OjU3OjI1IDE5OTcgIE1hcmsgTWl0Y2hlbGwgIDxtbWl0Y2hlbGxAdXNhLm5ldD4KCgkqIGVycm9yLmMgKGR1bXBfZGVjbCk6IEF2b2lkIGNyYXNoaW5nIHdoZW4gcHJlc2VudGVkIHdpdGggYQoJdW5pbml0aWFsaXplZCBjb25zdGFudCwgYXMgY2FuIG9jY3VyIHdpdGggYSB0ZW1wbGF0ZSBwYXJhbWV0ZXIuCgkoZHVtcF9leHByKTogTWFrZSBzdXJlIHRoYXQgdGhlcmUgYXJlIGVub3VnaCBsZXZlbHMgb2YKCWN1cnJlbnRfdGVtcGxhdGVfcGFybXMgYmVmb3JlIHdlIHN0YXJ0IGRpdmluZyB0aHJvdWdoIHRoZW0uCgoxOTk3LTA5LTA5ICBCcmVuZGFuIEtlaG9lICA8YnJlbmRhbkBsaXNhLmN5Z251cy5jb20+CgoJKiB0eXBlY2suYyAoYnVpbGRfaW5kaXJlY3RfcmVmKTogSGVlZCBGTEFHX1ZPTEFUSUxFIHNpbWlsYXIgdG8KCWMtdHlwZWNrLmMuCgpUdWUgU2VwICA5IDA5OjM2OjM5IDE5OTcgIEJlbmphbWluIEtvc25payAgPGJrb3pAcmhpbm8uY3lnbnVzLmNvbT4KCgkqIGV4Y2VwdC5jIChleHBhbmRfdGhyb3cpOiBDYWxsIGJ1aWxkX2RlbGV0ZSBmb3IgYWxsCglleGNlcHRpb24gdHlwZXMsIG5vdCBqdXN0IG9iamVjdHMgd2l0aCBkZXN0cnVjdG9ycy4KCk1vbiBTZXAgIDggMDI6MzM6MjAgMTk5NyAgSm9keSBHb2xkYmVyZyAgPGpvZHlnQGlkdC5uZXQ+CgoJKiBkZWNsLmMgKGN1cnJlbnRfbG9jYWxfZW51bSk6IFJlbW92ZSBzdGF0aWMuCgkqIHB0LmMgKHRzdWJzdF9lbnVtKTogU2F2ZSBhbmQgcmVzdG9yZSB2YWx1ZSBvZiBjdXJyZW50X2xvY2FsX2VudW0KCWluIGNhc2UgdGVtcGxhdGUgaXMgZXhwYW5kZWQgaW4gZW51bSBkZWNsLgoJKGluc3RhbnRpYXRlX2NsYXNzX3RlbXBsYXRlKTogVXNlIG5ldyB0c3Vic3RfZW51bSBzaWduYXR1cmUuCgkodHN1YnN0X2V4cHIpOiBMaWtld2lzZS4KCk1vbiBTZXAgIDggMDE6MjE6NDMgMTk5NyAgTWFyayBNaXRjaGVsbCAgPG1taXRjaGVsbEB1c2EubmV0PgoKCSogcHQuYyAoYmVnaW5fbWVtYmVyX3RlbXBsYXRlX3Byb2Nlc3NpbmcpOiBUYWtlIGEgZnVuY3Rpb24gYXMKCWFyZ3VtZW50LCBub3QgYSBzZXQgb2YgdGVtcGxhdGUgYXJndW1lbnRzLiAgVXNlIHRoZSB0ZW1wbGF0ZQoJcGFyYW1ldGVycywgcmF0aGVyIHRoYW4gdGhlIGFyZ3VtZW50cy4gIEhhbmRsZSBub24tdHlwZSBwYXJhbWV0ZXJzCgljb3JyZWN0bHkuICBQdXNoIGEgYmluZGluZyBsZXZlbCBmb3IgdGhlIHBhcmFtZXRlcnMgc28gdGhhdCBtdWx0aXBsZQoJbWVtYmVyIHRlbXBsYXRlcyB1c2luZyB0aGUgc2FtZSBwYXJhbWV0ZXIgbmFtZXMgY2FuIGJlIGRlY2xhcmVkLgoJKGVuZF9tZW1iZXJfdGVtcGxhdGVfcHJvY2Vzc2luZyk6IFBvcCB0aGUgYmluZGluZyBsZXZlbC4KCShwdXNoX3RlbXBsYXRlX2RlY2wpOiBNYXJrIG1lbWJlciB0ZW1wbGF0ZXMgYXMgc3RhdGljIHdoZW4KCWFwcHJvcHJpYXRlLgoKCSogbGV4LmMgKGRvX3BlbmRpbmdfaW5saW5lcyk6IFBhc3MgdGhlIGZ1bmN0aW9uLCBub3QgaXRzIHRlbXBsYXRlCglhcmd1bWVudHMsIHRvIGJlZ2luX21lbWJlcl90ZW1wbGF0ZV9wcm9jZXNzaW5nLgoJKHByb2Nlc3NfbmV4dF9pbmxpbmUpOiBMaWtld2lzZS4KCShkb19wZW5kaW5nX2RlZmFyZ3MpOiBMaWtld2lzZS4KCgkqIGVycm9yLmMgKGR1bXBfZXhwcik6IE9idGFpbiB0aGUgY29ycmVjdCBkZWNsYXJhdGlvbiBmb3IgYQoJVEVNUExBVEVfQ09OU1RfUEFSTS4KCgkqIGNhbGwuYyAoYWRkX3RlbXBsYXRlX2NvbnZfY2FuZGlkYXRlKTogTmV3IGZ1bmN0aW9uLgoJKGJ1aWxkX29iamVjdF9jYWxsKTogSGFuZGxlIG1lbWJlciB0ZW1wbGF0ZXMsIGFzIGRvbmUgaW4gdGhlIG90aGVyCglidWlsZF8gZnVuY3Rpb25zLgoKU2F0IFNlcCAgNiAxMDoyMDoyNyAxOTk3ICBNYXJrIE1pdGNoZWxsICA8bW1pdGNoZWxsQHVzYS5uZXQ+CgoJKiBkZWNsLmMgKHJlcGxhY2VfZGVmYWcpOiBVbmRvIHByZXZpb3VzIGNoYW5nZS4KCSogbGV4LmMgKGRvX3BlbmRpbmdfZGVmYXJncyk6IERlYWwgd2l0aCBtZW1iZXIgdGVtcGxhdGVzLgoKCSogcHQuYyAoaXNfbWVtYmVyX3RlbXBsYXRlKTogQXZvaWQgY3Jhc2hpbmcgd2hlbiBwYXNzZWQgYQoJbm9uLWZ1bmN0aW9uIGFyZ3VtZW50LgoKRnJpIFNlcCAgNSAxNzoyNzozOCAxOTk3ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBjbGFzcy5jIChncm93X21ldGhvZCk6IFJlbW92ZSBjaGVjayBmb3IgcmVkZWNsYXJhdGlvbi4KCkZyaSBTZXAgIDUgMDE6Mzc6MTcgMTk5NyAgTWFyayBNaXRjaGVsbCAgPG1taXRjaGVsbEB1c2EubmV0PgoKCSogY3AtdHJlZS5oIChJTk5FUk1PU1RfVEVNUExBVEVfUEFSTVMpOiBOZXcgbWFjcm8uCgkoREVDTF9JTk5FUk1PU1RfVEVNUExBVEVfUEFSTVMpOiBMaWtld2lzZS4KCShQUklNQVJZX1RFTVBMQVRFX1ApOiBVc2UgaXQuCgkqIGNhbGwuYyAoYnVpbGRfb3ZlcmxvYWRfY2FsbF9yZWFsKTogVXNlIGl0LgoJKiBjbGFzcy5jIChpbnN0YW50aWF0ZV90eXBlKTogTGlrZXdpc2UuCgkqIGRlY2wuYyAoZGVjbHNfbWF0Y2gpOiBMaWtld2lzZS4KCSogbWV0aG9kLmMgKGJ1aWxkX292ZXJsb2FkX2lkZW50aWZpZXIpOiBMaWtld2lzZS4KCSogcHQuYyAocHVzaF90ZW1wbGF0ZV9kZWNsKTogTGlrZXdpc2UuCgkoY2xhc3N0eXBlX21hbmdsZWRfbmFtZSk6IExpa2V3aXNlLgoJKGxvb2t1cF90ZW1wbGF0ZV9jbGFzcyk6IExpa2V3aXNlLgoKCSogY3AtdHJlZS5oIChERUNMX05UUEFSTVMpOiBDaGFuZ2UgbmFtZSBmcm9tIERFQ0xfTlRfUEFSTVMgdG8KCURFQ0xfTlRQQVJNUyB0byBjb25mb3JtIHRvIHVzYWdlIGVsc2V3aGVyZS4KCSogY2FsbC5jIChhZGRfdGVtcGxhdGVfY2FuZGlkYXRlKTogTGlrZXdpc2UuCgkqIGNsYXNzLmMgKGluc3RhbnRpYXRlX3R5cGUpOiBMaWtld2lzZS4KCSogcHQuYyAoaW5zdGFudGlhdGVfdGVtcGxhdGUpOiBMaWtld2lzZS4KCShnZXRfYmluZGluZ3MpOiBMaWtld2lzZS4KCgkqIGNsYXNzLmMgKGdyb3dfbWV0aG9kKTogVXNlIERFQ0xfRlVOQ1RJT05fVEVNUExBVEVfUCBpbnN0ZWFkIG9mCglpc19tZW1iZXJfdGVtcGxhdGUuCgoJKiBwdC5jICh1bmlmeSk6IFVuZG8gY2hhbmdlcyB0byBhbGxvdyBtdWx0aXBsZSBsZXZlbHMgb2YgdGVtcGxhdGUKCXBhcmFtZXRlcnMuCgkodHlwZV91bmlmaWNhdGlvbik6IExpa2V3aXNlLgoJKGZuX3R5cGVfdW5pZmljYXRpb24pOiBMaWtld2lzZS4KCShnZXRfY2xhc3NfYmluZGluZ3MpOiBMaWtld2lzZS4KCSogY3AtdHJlZS5oIChMaWtld2lzZSkuCgoJKiBkZWNsLmMgKHJlcGxhY2VfZGVmYXJnKTogQ2hlY2sgdGhhdCB0aGUgdHlwZSBvZiB0aGUgZGVmYXVsdAoJcGFyYW1ldGVyIGRvZXMgbm90IGludmxvdmUgYSB0ZW1wbGF0ZSB0eXBlIGJlZm9yZSBjb21wbGFpbmluZwoJYWJvdXQgdGhlIGluaXRpYWxpemF0aW9uLgoKCSogZXJyb3IuYyAoZHVtcF9leHByKTogRGVhbCB3aXRoIHRlbXBsYXRlIGNvbnN0YW50IHBhcmFtZXRlcnMgaW4KCW1lbWJlciB0ZW1wbGF0ZXMgY29ycmVjdGx5LgoKCSogcHQuYyAoaXNfbWVtYmVyX3RlbXBsYXRlKTogRGVhbCB3aXRoIGNsYXNzIHNwZWNpYWxpemF0aW9ucwoJY29ycmVjdGx5LgoJKHRzdWJzdCk6IEhhbmRsZSAicGFydGlhbCBpbnN0YW50aWF0aW9uIiBvZiBtZW1iZXIgdGVtcGxhdGVzCgljb3JyZWN0bHkuCgpXZWQgU2VwICAzIDEyOjMwOjI0IDE5OTcgIE1hcmsgTWl0Y2hlbGwgIDxtbWl0Y2hlbGxAdXNhLm5ldD4KCgkqIHB0LmMgKHR5cGVfdW5pZmljYXRpb24pOiBDaGFuZ2UgY2FsbGluZyBzZXF1ZW5jZSB0byBhbGxvdyBmb3IKCW11bHRpcGxlIGxldmVscyBvZiB0ZW1wbGF0ZSBwYXJhbWV0ZXJzLgoJKHRzdWJzdF9leHByKTogTGlrZXdpc2UuCgkodHN1YnN0KTogTGlrZXdpc2UuCgkodHN1YnN0X2NvcHkpOiBMaWtld2lzZS4KCShpbnN0YW50aWF0ZV90ZW1wbGF0ZSk6IExpa2V3aXNlLgoJKHVuaWZ5KTogTGlrZXdpc2UuCgkqIGNhbGwuYyAoYnVpbGRfb3ZlcmxvYWRfY2FsbF9yZWFsKTogVXNlIGl0LgoJKGFkZF9idWlsdGluX2NhbmRpZGF0ZSk6IFVzZSBpdC4KCShidWlsZF9uZXdfbWV0aG9kX2NhbGwpOiBVc2UgaXQuCgkqIGNsYXNzLmMgKGluc3RhbnRpYXRlX3R5cGUpOiBVc2UgaXQuCgkqIGRlY2wuYyAoZ3Jva2RlY2xhcmF0b3IpOiBVc2UgaXQuCgkqIGRlY2wyLmMgKGZpbmlzaF9maWxlKTogVXNlIGl0LgoJKiBtZXRob2QuYyAoYnVpbGRfb3ZlcmxvYWRfaWRlbnRpZmllcik6IFVzZSBpdC4KCgkqIGNhbGwuYyAoYWRkX3RlbXBsYXRlX2NhbmRpZGF0ZSk6ICBBZGQgYWRkaXRpb25hbCBwYXJhbWV0ZXIgZm9yCgl0aGUgZnVuY3Rpb24gcmV0dXJuIHR5cGUuICBDYWxsIGZuX3R5cGVfdW5pZmljYXRpb24gaXN0ZWFkIG9mCgl0eXBlX3VuaWZpY2F0aW9uLgoJKGJ1aWxkX3VzZXJfdHlwZV9jb252ZXJzaW9uXzEpOiBIYW5kbGUgbWVtYmVyIHRlbXBsYXRlcy4KCShidWlsZF9uZXdfZnVuY3Rpb25fY2FsbCk6IExpa2V3aXNlLgoJKGJ1aWxkX25ld19vcCk6IExpa2V3aXNlLgoJKGJ1aWxkX25ld19tZXRob2RfY2FsbCk6IExpa2V3aXNlLgoKCSogY2xhc3MuYyAoZ3Jvd19tZXRob2QpOiBEb24ndCBnaXZlIGFuIGVycm9yIG1lc3NhZ2UgaW5kaWNhdGluZwoJdGhhdCB0d28gbWVtYmVyIHRlbXBsYXRlcyB3aXRoIHRoZSBzYW1lIG5hbWUgYXJlIGFtYmlndW91cy4KCShmaW5pc2hfc3RydWN0KTogVHJlYXQgbWVtYmVyIHRlbXBsYXRlIGZ1bmN0aW9ucyBqdXN0IGxpa2UgbWVtYmVyCglmdW5jdGlvbnMuCgoJKiBjcC10cmVlLmggKGNoZWNrX21lbWJlcl90ZW1wbGF0ZSk6IEFkZCBkZWNsYXJhdGlvbi4KCShiZWdpbl9tZW1iZXJfdGVtcGxhdGVfcHJvY2Vzc2luZyk6IExpa2V3aXNlLgoJKGVuZF9tZW1iZXJfdGVtcGxhdGVfcHJvY2Vzc2luZyk6IExpa2V3aXNlLgoJKGZuX3R5cGVfdW5pZmljYXRpb24pOiBMaWtld2lzZS4KCShpc19tZW1iZXJfdGVtcGxhdGUpOiBMaWtld2lzZS4KCSh0c3Vic3QpOiBDaGFuZ2UgcHJvdG90eXBlLgoJKHRzdWJzdF9leHByKTogTGlrZXdpc2UuCgkodHN1YnN0X2NvcHkpOiBMaWtld2lzZS4KCShpbnN0YW50aWF0ZV90ZW1wbGF0ZSk6IExpa2V3aXNlLgoJKGdldF9iaW5kaW5ncyk6IExpa2V3aXNlLgoKCSogZGVjbC5jIChkZWNsc19tYXRjaCk6IEhhbmRsZSBtdWx0aXBsZSBsZXZlbHMgb2YgdGVtcGxhdGUKCXBhcmFtZXRlcnMuCgkocHVzaGRlY2wpOiBIYW5kbGUgdGVtcGxhdGUgdHlwZSBwYXJhbXMganVzdCBsaWtlIG90aGVyIHR5cGUKCWRlY2xhcmF0aW9ucy4KCShwdXNoX2NsYXNzX2xldmVsX2JpbmRpbmcpOiBSZXR1cm4gaW1tZWRpYXRlbHkgaWYgdGhlCgljbGFzc19iaW5kaW5nX2xldmVsIGlzIE5VTEwuCgkoZ3Jva2ZuZGVjbCk6IElmIGNoZWNrX2NsYXNzZm4oKSByZXR1cm5zIGEgbWVtYmVyX3RlbXBsYXRlLCB1c2UKCXRoZSByZXN1bHQgb2YgdGhlIHRlbXBsYXRlLCBub3QgdGhlIHRlbXBsYXRlIGl0c2VsZi4KCgkqIGRlY2wyLmMgKGNoZWNrX21lbWJlcl90ZW1wbGF0ZSk6IE5ldyBmdW5jdGlvbi4gIENoZWNrIHRvIHNlZQoJdGhhdCB0aGUgZW50aXR5IGRlY2xhcmVkIHRvIGJlIGEgbWVtYmVyIHRlbXBsYXRlIGNhbiBiZSBvbmUuCgkoY2hlY2tfY2xhc3Nmbik6IEFsbG93IHJlZGVjbGFyYXRpb24gb2YgbWVtYmVyIHRlbXBsYXRlIGZ1bmN0aW9ucwoJd2l0aCBkaWZmZXJlbnQgdHlwZXM7IHRoZSBuZXcgZnVuY3Rpb25zIGNhbiBiZSBzcGVjaWFsaXphdGlvbnMgb3IKCWV4cGxpY2l0IGluc3RhbnRpYXRpb25zLgoKCSogZXJyb3IuYyAoZHVtcF9kZWNsKTogSGFuZGxlIG11bHRpcGxlIGxldmVscyBvZiB0ZW1wbGF0ZQoJcGFyYW1ldGVycy4KCShkdW1wX2Z1bmN0aW9uX2RlY2wpOiBVcGRhdGUgdG8gaGFuZGxlIGZ1bmN0aW9uIHRlbXBsYXRlcy4KCgkqIGxleC5jIChkb19wZW5kaW5nX2lubGluZXMpOiBTZXQgdXAgdGVtcGxhdGUgcGFyYW1ldGVyIGNvbnRleHQKCWZvciBtZW1iZXIgdGVtcGxhdGVzLgoJKHByb2Nlc3NfbmV4dF9pbmxpbmUpOiBMaWtld2lzZS4KCgkqIG1ldGhvZC5jIChidWlsZF9vdmVybG9hZF9pZGVudGlmaWVyKTogQWRqdXN0IGZvciBtdWx0aXBsZSBsZXZlbHMKCW9mIHRlbXBsYXRlIHBhcmFtZXRlcnMuCgoJKiBwYXJzZS55IChmbi5kZWYyKTogQWRkIG1lbWJlciB0ZW1wbGF0ZXMuCgkoY29tcG9uZW50X2RlY2xfMSk6IExpa2V3aXNlLgoKCSogcHQuYyAoYmVnaW5fbWVtYmVyX3RlbXBsYXRlX3Byb2Nlc3NpbmcpOiBOZXcgZnVuY3Rpb24uCgkoZW5kX21lbWJlcl90ZW1wbGF0ZV9wcm9jZXNzaW5nKTogTGlrZXdpc2UuCgkoaXNfbWVtYmVyX3RlbXBsYXRlKTogTGlrZXdpc2UuCgkoZm5fdHlwZV91bmlmaWNhdGlvbik6IExpa2V3aXNlLgoJKGN1cnJlbnRfdGVtcGxhdGVfcGFybXMpOiBSZXR1cm4gYSB2ZWN0b3Igb2YgYWxsIHRoZSB0ZW1wbGF0ZQoJcGFybXMsIG5vdCBqdXN0IHRoZSBpbm5lcm1vc3QgbGV2ZWwgb2YgcGFybXMuCgkocHVzaF90ZW1wbGF0ZV9kZWNsKTogRGVhbCB3aXRoIHRoZSBwb3NzaWJpbGl0eSBvZiBtZW1iZXIKCXRlbXBsYXRlcy4KCShsb29rdXBfdGVtcGxhdGVfY2xhc3MpOiBMaWtld2lzZS4KCSh1c2VzX3RlbXBsYXRlX3Bhcm1zKTogTGlrZXdpc2UuCgkodHN1YnN0KTogTW9kaWZ5IHByb2Nlc3NpbmcgdG8gVEVNUExBVEVfVFlQRV9QQVJNIGFuZAoJVEVNUExBVEVfQ09OU1RfUEFSTSB0byBkZWFsIHdpdGggbXVsdGlwbGUgbGV2ZWxzIG9mIHRlbXBsYXRlCglhcmd1bWVudHMuICAgQWRkIHByb2Nlc3Npbmcgb2YgVEVNUExBVEVfREVDTCB0byBwcm9kdWNlIG5ldwoJVEVNUExBVEVfREVDTHMgZnJvbSBvbGQgb25lcy4KCShkb19kZWNsX2luc3RhbnRpYXRpb24pOiBIYW5kbGUgbWVtYmVyIHRlbXBsYXRlcy4KCgkqIHNlYXJjaC5jIChsb29rdXBfZm5maWVsZHNfMSk6IEhhbmRsZSBtZW1iZXIgdGVtcGxhdGUgY29udmVyc2lvbgoJb3BlcmF0b3JzLgoKCSogdHJlZS5jIChjcF90cmVlX2VxdWFsKTogQ2hlY2sgdGhlIGxldmVscywgYXMgd2VsbCBhcyB0aGUKCWluZGljZXMsIG9mIFRFTVBMQVRFX0NPTlNUX1BBUk1zLgoKCSogdHlwZWNrLmMgKGNvbXB0eXBlcyk6IENoZWNrIHRoZSBsZXZlbHMsIGFzIHdlbGwgYXMgdGhlIGluZGljZXMsCglmbyBURU1QTEFURV9UWVBFX1BBUk1zLgoJKGJ1aWxkX3hfZnVuY3Rpb25fY2FsbCk6IFRyZWF0IG1lbWJlciB0ZW1wbGF0ZXMgbGlrZSBtZW1iZXIKCWZ1bmN0aW9ucy4KCldlZCBTZXAgIDMgMTE6MDk6MjUgMTk5NyAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogdHlwZWNrLmMgKGNfZXhwYW5kX3JldHVybik6IEFsd2F5cyBjb252ZXJ0X2Zvcl9pbml0aWFsaXphdGlvbgoJYmVmb3JlIGNoZWNraW5nIGZvciByZXR1cm5pbmcgYSBwb2ludGVyIHRvIGxvY2FsLgoKCSogcHQuYyAodHlwZV91bmlmaWNhdGlvbik6IElmIHN0cmljdCBhbmQgdGhlIGZ1bmN0aW9uIHBhcm0gZG9lc24ndAoJdXNlIHRlbXBsYXRlIHBhcm1zLCBqdXN0IGNvbXBhcmUgdHlwZXMuCgpXZWQgU2VwICAzIDEwOjM1OjQ5IDE5OTcgIEtsYXVzIEVzcGVubGF1YiAgPGtlc3BlbmxhQHN0dWRlbnQuaW5mb3JtYXRpay51bmktdWxtLmRlPgoKCSogbWV0aG9kLmMgKGJ1aWxkX292ZXJsb2FkZWRfdmFsdWUpOiBSZXBsYWNlIGRpcmVjdCBjYWxsCgl0byB0aGUgZmxvYXRpbmcgcG9pbnQgZW11bGF0b3Igd2l0aCBSRUFMX1ZBTFVFX1RPX0RFQ0lNQUwgbWFjcm8uCgpXZWQgU2VwICAzIDAwOjAyOjUzIDE5OTcgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIHR5cGVjay5jIChjb252ZXJ0X2FyZ3VtZW50cyk6IERvbid0IGFyYml0cmFyaWx5IGNob29zZSB0aGUgZmlyc3QKCW9mIGEgc2V0IG9mIG92ZXJsb2FkZWQgZnVuY3Rpb25zLgoKVHVlIFNlcCAgMiAxMjowOToxMyAxOTk3ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBsZXguYyAocmVhbF95eWxleCk6IERvbid0IGVsaWRlIF9fRlVOQ1RJT05fXy4KCgkqIG1ldGhvZC5jIChidWlsZF9vdmVybG9hZF92YWx1ZSk6IEFkZCBpbl90ZW1wbGF0ZSBwYXJtLgoJKGJ1aWxkX292ZXJsb2FkX2ludCk6IExpa2V3aXNlLgoJKGJ1aWxkX292ZXJsb2FkX2lkZW50aWZpZXIpOiBQYXNzIGl0LgoKCSogZGVjbC5jIChkdXBsaWNhdGVfZGVjbHMpOiBEb24ndCBiYXNoIGEgcHJldmlvdXMgdGVtcGxhdGUKCWRlZmluaXRpb24gd2l0aCBhIHJlZGVjbGFyYXRpb24uCgoJKiBwdC5jICh1bmlmeSk6IGZsb2F0IGRvZXNuJ3QgbWF0Y2ggZG91YmxlLgoKCSogcHQuYyAoZG9fdHlwZV9pbnN0YW50aWF0aW9uKTogSGFuZGxlIGdldHRpbmcgYSBfVFlQRSBvciBhCglUWVBFX0RFQ0wuICBIYW5kbGUgZ2V0dGluZyBub24tdGVtcGxhdGUgdHlwZXMuCgkqIHBhcnNlLnkgKGV4cGxpY2l0X2luc3RhbnRpYXRpb24pOiBVc2UgdHlwZXNwZWMgaW5zdGVhZCBvZgoJYWdnciB0ZW1wbGF0ZV90eXBlLgoKVHVlIFNlcCAgMiAxMDoyNzowOCAxOTk3ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEBjeWdudXMuY29tPgoKCSogdHlwZWNrLmMgKGJ1aWxkX3B0cm1lbWZ1bmMxKTogQ2xlYW4gdXAgcHRyLT5pbnQgY2FzdCB3YXJuaW5ncy4KCk1vbiBTZXAgIDEgMTM6MTk6MDQgMTk5NyAgRXVnZW5lIE1hbWNoaXRzICA8ZXVnaW5AaXBzLnJhcy5ydT4KCgkqIGNhbGwuYyAoYWRkX2J1aWx0aW5fY2FuZGlkYXRlKTogQWRkIG1pc3NpbmcgVFJFRV9UWVBFLgoJKGNvbXBhcmVfaWNzKTogTGlrZXdpc2UuCgpNb24gU2VwICAxIDEzOjE5OjA0IDE5OTcgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIGNhbGwuYyAoam91c3QpOiBXYXJuIGFib3V0IGNob29zaW5nIG9uZSBjb252ZXJzaW9uIG9wIG92ZXIKCWFub3RoZXIgYmVjYXVzZSBvZiAndGhpcycgYXJndW1lbnQgd2hlbiB0aGUgb3RoZXIgcmV0dXJuIHR5cGUgaXMKCWJldHRlci4KCShzb3VyY2VfdHlwZSk6IE5ldyBmbi4KCgkqIGNhbGwuYyAoYnVpbGRfbmV3X29wKTogU3RyaXAgbGVhZGluZyBSRUZfQklORCBmcm9tIGZpcnN0IG9wZXJhbmQKCXRvIGJ1aWx0aW4gb3BlcmF0b3IuCgoJKiBkZWNsMi5jIChtYXJrX3Z0YWJsZV9lbnRyaWVzKTogTWFyayBhYm9ydF9mbmRlY2wgYXMgdXNlZCB3aGVuIHdlCgl1c2UgaXRzIFJUTC4KClRodSBBdWcgMjggMDk6NDU6MjMgMTk5NyAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogY2FsbC5jIChudWxsX3B0cl9jc3RfcCk6IFJlbW92ZSBzdXBwb3J0IGZvciAodm9pZCopMC4KCldlZCBBdWcgMjcgMDI6MDM6MzQgMTk5NyAgSmVmZnJleSBBIExhdyAgPGxhd0BjeWdudXMuY29tPgoKCSogdHlwZWNrLmMgKGV4cGFuZF90YXJnZXRfZXhwcik6IE1ha2UgZGVmaW5pdGlvbiBtYXRjaCBkZWNsYXJhdGlvbi4KCgkqIGNsYXNzLmMgKGdldF9iYXNlZm5kZWNscyk6IE1ha2UgZGVmaW5pdGlvbiBtYXRjaCBkZWNsYXJhdGlvbi4KCk1vbiBBdWcgMjUgMTQ6MzA6MDIgMTk5NyAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogaW5wdXQuYyAoc3ViX2dldGNoKTogRXZlbnR1YWxseSBnaXZlIHVwIGFuZCByZWxlYXNlIHRoZSBpbnB1dCBmaWxlLgoKCSogZGVjbC5jIChjcF9maW5pc2hfZGVjbCk6IElmICNwIGkvaSwgcHV0IGlubGluZSBzdGF0aWNzIGluIHRoZQoJcmlnaHQgcGxhY2UuCgoJKiBjYWxsLmMgKGpvdXN0KTogVHdlYWsgbWVzc2FnZS4KClNhdCBBdWcgMjMgMTg6MDI6NTkgMTk5NyAgTWFyayBNaXRjaGVsbCAgPG1taXRjaGVsbEB1c2EubmV0PgoKCSogZXJyb3IuYyAodHlwZV9hc19zdHJpbmcpOiBQdXQgY29uc3Qvdm9sYXRpbGUgb24gdGVtcGxhdGUgdHlwZQoJcGFyYW1ldGVycyB3aGVyZSBhcHByb3ByaWF0ZS4KClNhdCBBdWcgMjMgMTc6NDc6MjIgMTk5NyAgSmVmZnJleSBBIExhdyAgPGxhd0BjeWdudXMuY29tPgoKCSogY2FsbC5jIChzdHJpY3RseV9iZXR0ZXIpOiBNYWtlIGFyZ3VtZW50cyB1bnNpZ25lZCBpbnRzLgoKVGh1IEF1ZyAyMSAxODo0ODo0NCAxOTk3ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBsZXguYyAocmVhbF95eWxleCk6IFJlZmVyIHRvIF9fY29tcGxleCBpbnN0ZWFkIG9mIGNvbXBsZXguCgpUaHUgQXVnIDIxIDIyOjI1OjQ2IDE5OTcgIEoib3JuIFJlbm5lY2tlICA8YW15bGFhckBjeWdudXMuY28udWs+CgoJKiBsZXguYyAocmVhbF95eWxleCk6IERvbid0IHVzZSBnZXRjIGRpcmVjdGx5LgoKV2VkIEF1ZyAyMCAxNzoyNTowOCAxOTk3ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBjYWxsLmMgKGlzX3N1YnNlcSk6IERvbid0IHRyeSB0byBiZSBjbGV2ZXIuCgpXZWQgQXVnIDIwIDAzOjEzOjM2IDE5OTcgIEguSi4gTHUgIChoamxAZ251LmFpLm1pdC5lZHUpCgoJKiBwYXJzZS55LCBwdC5jOiBJbmNsdWRlICJleGNlcHQuaCIuCgkqIGNhbGwuYywgY2xhc3MuYywgY2xhc3MuaCwgY3AtdHJlZS5oLCBjdnQuYywgZGVjbC5jLCBkZWNsMi5jLAoJZXJyb3IuYywgZXhjZXB0LmMsIGV4cHIuYywgZnJpZW5kLmMsIGcrK3NwZWMuYywgaW5pdC5jLCBpbnB1dC5jLAoJbGV4LmMsIGxleC5oLCBtZXRob2QuYywgcGFyc2UueSwgcHQuYywgcmVwby5jLCBydHRpLmMsIHNlYXJjaC5jLAoJc2lnLmMsIHNwZXcuYywgdHJlZS5jLCB0eXBlY2suYywgdHlwZWNrMi5jLCB4cmVmLmM6IEZpbmlzaAoJcHJvdG90eXBpbmcuCgpXZWQgQXVnIDIwIDAxOjM0OjQwIDE5OTcgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIGRlY2wyLmMgKG1hcmtfdnRhYmxlX2VudHJpZXMpOiBJbnN0ZWFkIG9mIHJlcGxhY2luZyBwdXJlCgl2aXJ0dWFscyB3aXRoIGEgcmVmZXJlbmNlIHRvIF9fcHVyZV92aXJ0dWFsLCBjb3B5IHRoZSBkZWNsIGFuZAoJY2hhbmdlIHRoZSBSVEwuCgpUdWUgQXVnIDE5IDAyOjI2OjA3IDE5OTcgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIHB0LmMgKGxvb2t1cF9uZXN0ZWRfdHlwZV9ieV9uYW1lKTogSGFuZGxlIHR5cGVkZWYgd2llcmRuZXNzLgoKCSogdHlwZWNrMi5jIChteV9mcmllbmRseV9hYm9ydCk6IFJlcG9ydCBidWdzIHRvIGVnY3MtYnVnc0BjeWdudXMuY29tLgoKCSogcHQuYyAoaW5zdGFudGlhdGVfY2xhc3NfdGVtcGxhdGUpOiBDYWxsIHJlcG9fdGVtcGxhdGVfdXNlZAoJYmVmb3JlIGZpbmlzaF9wcmV2dGFibGVfdmFyZGVjbC4KCgkqIGNhbGwuYyAoaXNfc3Vic2VxKTogTmV3IGZuLgoJKGNvbXBhcmVfaWNzKTogVXNlIGl0LgoKCSogcmVwby5jIChmaW5pc2hfcmVwbyk6IERvbid0IGNyYXNoIG9uIG5vIGFyZ3MuCgoJKiBwYXJzZS55IChuYW1lZF9jb21wbGV4X2NsYXNzX2hlYWRfc2Fuc19iYXNldHlwZSk6IEhhbmRsZQoJZXhwbGljaXQgZ2xvYmFsIHNjb3BlLgoJKiBkZWNsMi5jIChoYW5kbGVfY2xhc3NfaGVhZCk6IE5ldyBmbi4KCgkqIHB0LmMgKHVuaWZ5KTogQWRkIENPTlNUX0RFQ0wgY2FzZS4KClRodSBBdWcgMTQgMTA6MDU6MTMgMTk5NyAgQnJlbmRhbiBLZWhvZSAgPGJyZW5kYW5AbGlzYS5jeWdudXMuY29tPgoKCSogcnR0aS5jIChwZXJtYW5lbnRfb2JzdGFjayk6IEZpeCBkZWNsIHRvIG5vdCBiZSBhIHBvaW50ZXIuCgoJKiBjcC10cmVlLmggKHJlcG9ydF90eXBlX21pc21hdGNoKTogQWRkIHByb3RvdHlwZS4KCSogY2FsbC5jIChidWlsZF9vdmVybG9hZF9jYWxsX3JlYWwpOiBSZW1vdmUgZXJyb25lb3VzIGZvdXJ0aAoJYXJndW1lbnQgdG8gcmVwb3J0X3R5cGVfbWlzbWF0Y2guCgkoYnVpbGRfdXNlcl90eXBlX2NvbnZlcnNpb25fMSk6IFJlbW92ZSBlcnJvbmVvdXMgc2Vjb25kIGFyZyB0bwoJdG91cm5leS4KCShidWlsZF9uZXdfZnVuY3Rpb25fY2FsbCk6IExpa2V3aXNlLgoJKGJ1aWxkX29iamVjdF9jYWxsKTogTGlrZXdpc2UuCgkoYnVpbGRfbmV3X29wKTogTGlrZXdpc2UuCgkoYnVpbGRfbmV3X21ldGhvZF9jYWxsKTogTGlrZXdpc2UuCgpXZWQgQXVnIDEzIDE5OjE5OjI1IDE5OTcgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIGVycm9yLmMgKGR1bXBfZGVjbCk6IERvbid0IGJvdGhlciBwcm9jZXNzaW5nIGEgZnVuY3Rpb24gd2l0aCBubwoJREVDTF9MQU5HX1NQRUNJRklDLgoKCSogbWV0aG9kLmMgKGVtaXRfdGh1bmspOiBDYWxsIGluaXRfZnVuY3Rpb25fc3RhcnQgaW4gdGhlIG1hY3JvIGNhc2UuCgpXZWQgQXVnIDEzIDEwOjQ2OjE5IDE5OTcgIEguSi4gTHUgIChoamxAZ251LmFpLm1pdC5lZHUpCgoJKiBkZWNsMi5jIChERUZBVUxUX1ZUQUJMRV9USFVOS1MpOiBEZWZpbmUgdG8gYmUgMCBpZiBub3QKCWRlZmluZWQgYW5kIHVzZWQgdG8gc2V0IGZsYWdfdnRhYmxlX3RodW5rcy4KClR1ZSBBdWcgMTIgMjA6MTM6NTcgMTk5NyAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogcGFyc2UueTogRG9uJ3QgY2xlYXIgdGhlIGlubGluZXMgZnJvbSB0aGVpciBvYnN0YWNrIHVudGlsIHRoZXkndmUKCWFsbCBiZWVuIHByb2Nlc3NlZC4KCgkqIGRlY2wuYyAoZHVwbGljYXRlX2RlY2xzKTogRG9uJ3QgY29tcGxhaW4gYWJvdXQgZXhjZXB0aW9uCglzcGVjaWZpY2F0aW9uIG1pc21hdGNoIGlmIGZsYWdfZXhjZXB0aW9ucyBpcyBvZmYuCgpNb24gQXVnIDExIDE1OjAxOjU2IDE5OTcgIE1hcmMgTGVobWFubiAgPHBjZ0Bnb29mLmNvbT4KCgkqIE1ha2UtbGFuZy5pbiAoYysrLmRpc3RjbGVhbik6IFJlbW92ZSBnKysuYyBvbiBtYWtlIGRpc3RjbGVhbi4KClN1biBBdWcgMTAgMTI6MDY6MDkgMTk5NyAgUGF1bCBFZ2dlcnQgIDxlZ2dlcnRAdHdpbnN1bi5jb20+CgoJKiBjcC10cmVlLmg6IFJlcGxhY2UgU1RESU9fUFJPVE8gd2l0aCBQUk9UTyBpbiBpbmNsdWRlIGZpbGVzLgoJKiBjdnQuYywgZXJyb3IuYywgZXhjZXB0LmMsIGV4cHIuYywgZnJpZW5kLmMsIGluaXQuYywgcnR0aS5jOgoJSW5jbHVkZSA8c3RkaW8uaD4gYmVmb3JlIGluY2x1ZGUgZmlsZXMgdGhhdCBmb3JtZXJseSB1c2VkIFNURElPX1BST1RPLgoKCSogZGVjbC5jLCBnKytzcGVjLmMsIGxleC5jLCBtZXRob2QuYywgcmVwby5jOgoJSW5jbHVkZSAiY29uZmlnLmgiIGZpcnN0LCBhcyBwZXIgYXV0b2NvbmYgbWFudWFsLgoKRnJpIEF1ZyAgOCAxMTo0Nzo0OCAxOTk3ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBkZWNsLmMgKGR1cGxpY2F0ZV9kZWNscyk6IFR3ZWFrIHdvcmRpbmcuCgkqIGxleC5jIChkb19wZW5kaW5nX2RlZmFyZ3MpOiBEb24ndCBkaWUgaWYgd2Ugc2VlIGEgZGVmYXVsdCBhcmcKCXRoYXQgaXNuJ3QgYSBERUZBVUxUX0FSRy4KCSogZXJyb3IuYyAoZHVtcF9leHByKTogSGFuZGxlIERFRkFVTFRfQVJHLgoKCSogZGVjbDIuYyAobGFuZ19kZWNvZGVfb3B0aW9uKTogSGFuZGxlIC1maGFuZGxlLWV4Y2VwdGlvbnMuCgkqIGxhbmctb3B0aW9ucy5oOiBBZGQgLWZoYW5kbGUtZXhjZXB0aW9ucy4KCgkqIGNsYXNzLmMgKGJ1aWxkX3Z0YWJsZSk6IFZ0YWJsZXMgYXJlIGFydGlmaWNpYWwuCgkocHJlcGFyZV9mcmVzaF92dGFibGUpOiBMaWtld2lzZS4KCldlZCBBdWcgIDYgMTE6MDI6MzYgMTk5NyAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogY3Z0LmMgKG9jcF9jb252ZXJ0KTogQWZ0ZXIgY29udmVydGluZyB0byB0aGUgdGFyZ2V0IHR5cGUsIHNldAoJTE9PS1VQX05PX0NPTlZFUlNJT04uCgoJKiBjYWxsLmMgKGpvdXN0KTogV2FybiBhYm91dCBwb3RlbnRpYWxseSBjb25mdXNpbmcgcHJvbW90aW9uIHJ1bGVzCgl3aXRoIC1Xc2lnbi1wcm9tby4KCSogY3AtdHJlZS5oLCBsYW5nLW9wdGlvbnMuaCwgZGVjbDIuYzogU3VwcG9ydCAtV3NpZ24tcHJvbW8uCgpUdWUgQXVnICA1IDE1OjE1OjA3IDE5OTcgIE1pY2hhZWwgTWVpc3NuZXIgIDxtZWlzc25lckBjeWdudXMuY29tPgoKCSogZXhjZXB0aW9uLmNjOiBEZWNsYXJlIF9fdGVybWluYXRlX2Z1bmMgd2l0aCBub3JldHVybiBhdHRyaWJ1dGUuCgpGcmkgQXVnICAxIDAzOjE4OjE1IDE5OTcgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIHBhcnNlLnk6IEJyZWFrIG91dCBlYXRfc2F2ZWRfaW5wdXQsIGhhbmRsZSBlcnJvcnMuCgkoZnVuY3Rpb25fdHJ5X2Jsb2NrKTogVXNlIGNvbXBzdG10IGluc3RlYWQgb2YgY29tcHN0bXRfb3JfZXJyb3IuCgpUaHUgSnVsIDMxIDE3OjE0OjA0IDE5OTcgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIHRyZWUuYyAoYnVpbGRfY3BsdXNfbmV3KTogRG9uJ3Qgc2V0IFRSRUVfQUREUkVTU0FCTEUuCgpGcmkgSnVsICA0IDAxOjQ1OjE2IDE5OTcgIEFuZHJlYXMgU2Nod2FiICA8c2Nod2FiQGlzc2FuLmluZm9ybWF0aWsudW5pLWRvcnRtdW5kLmRlPgoKCSogTWFrZS1sYW5nLmluIChjcGxpYjIudHh0LCBjcGxpYjIucmVhZHkpOiBJbnN0ZWFkIG9mIGNoZWNraW5nIGZvcgoJZXhpc3RlbmNlIG9mIGNjMXBsdXMgY2hlY2sgd2hldGhlciAkKExBTkdVQUdFUykgY29udGFpbnMgQysrLgoKV2VkIEp1bCAzMCAxMzowNDoyMSAxOTk3ICBBbmRyZWFzIFNjaHdhYiAgPHNjaHdhYkBpc3Nhbi5pbmZvcm1hdGlrLnVuaS1kb3J0bXVuZC5kZT4KCgkqIG1ldGhvZC5jIChkb19idWlsZF9jb3B5X2NvbnN0cnVjdG9yKTogV2hlbiBjb3B5aW5nIGFuIGFub255bW91cwoJdW5pb24gbWVtYmVyIGxvb3AgYXJvdW5kIHRvIGhhbmRsZSBuZXN0ZWQgYW5vbnltb3VzIHVuaW9ucy4gIFVzZQoJdGhlIG9mZnNldCBvZiB0aGUgbWVtYmVyIHJlbGF0aXZlIHRvIHRoZSBvdXRlciBzdHJ1Y3R1cmUsIG5vdCB0aGUKCXVuaW9uLgoKVHVlIEp1bCAyOSAyMToxNzoyOSAxOTk3ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBjYWxsLmMgKHJlc29sdmVfYXJncyk6IE5ldyBmbi4KCShidWlsZF9uZXdfZnVuY3Rpb25fY2FsbCk6IFVzZSBpdC4KCShidWlsZF9vYmplY3RfY2FsbCk6IExpa2V3aXNlLgoJKGJ1aWxkX25ld19tZXRob2RfY2FsbCk6IExpa2V3aXNlLgoKTW9uIEp1bCAyOCAxNjowMjozNiAxOTk3ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBjYWxsLmMgKGJ1aWxkX292ZXJfY2FsbCk6IHRzdWJzdCBhbGwgZGVmYXVsdCBwYXJtcyBmcm9tIHRlbXBsYXRlcy4KCldlZCBKdWwgMjMgMTM6MzY6MjUgMTk5NyAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogZGVjbC5jIChzdHJ1Y3QgY3BfZnVuY3Rpb24pOiBBZGQgc3RhdGljX2xhYmVsbm8uCgkocHVzaF9jcF9mdW5jdGlvbl9jb250ZXh0KTogU2F2ZSBpdC4KCShwb3BfY3BfZnVuY3Rpb25fY29udGV4dCk6IFJlc3RvcmUgaXQuCgpUdWUgSnVsIDIyIDE0OjQzOjI5IDE5OTcgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIHR5cGVjay5jIChidWlsZF9jb21wb25lbnRfcmVmXzEpOiBDb252ZXJ0IGZyb20gcmVmZXJlbmNlLgoKVHVlIEp1bCAyMiAxMTowNjoyMyAxOTk3ICBCcmVuZGFuIEtlaG9lICA8YnJlbmRhbkBsaXNhLmN5Z251cy5jb20+CgoJKiBwYXJzZS55IChjdXJyZW50X2RlY2xzcGVjcywgcHJlZml4X2F0dHJpYnV0ZXMpOiBJbml0aWFsaXplIHRvCglOVUxMX1RSRUUuCgoJKiBwYXJzZS55IChpbml0ZGNsMCk6IE1ha2Ugc3VyZSBDVVJSRU5UX0RFQ0xTUEVDUyBpcyBub24tbmlsCgliZWZvcmUgd2UgdHJ5IHRvIGZvcmNlIGl0IHRvIGJlIGEgVFJFRV9MSVNULgoJKGRlY2wpOiBNYWtlIHN1cmUgJDEudCBpcyBub24tbmlsLgoKU3VuIEp1bCAyMCAxMTo1MzowNyAxOTk3ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBwdC5jICh1c2VzX3RlbXBsYXRlX3Bhcm1zKTogSGFuZGxlIHRlbXBsYXRlIGZpcnN0LXBhcnNlIGNvZGVzLgoKCSogZGVjbC5jIChjcF9maW5pc2hfZGVjbCk6IE9ubHkgd2FybiBhYm91dCB1c2VyLWRlZmluZWQgc3RhdGljcy4KCkZyaSBKdWwgMTggMTc6NTY6MDggMTk5NyAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogcHQuYyAodW5pZnkpOiBIYW5kbGUgQk9PTEVBTl9UWVBFLgoKCSogY3AtdHJlZS5oOiBMb3NlIFBBUk1fREVGQVVMVF9GUk9NX1RFTVBMQVRFLgoJKiBwdC5jICh0c3Vic3QpOiBEb24ndCBzZXQgaXQuCgkqIGNhbGwuYyAoYnVpbGRfb3Zlcl9jYWxsKTogVXNlIHVzZXNfdGVtcGxhdGVfcGFybXMuCgpUaHUgSnVsIDE3IDE4OjA2OjMwIDE5OTcgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIG1ldGhvZC5jIChidWlsZF9vdmVybG9hZF9uZXN0ZWRfbmFtZSk6IFVzZSBzdGF0aWNfbGFiZWxubwoJaW5zdGVhZCBvZiB2YXJfbGFiZWxuby4KCShidWlsZF9xdWFsaWZpZWRfbmFtZSk6IE5ldyBmbi4KCShidWlsZF9vdmVybG9hZF9uYW1lKTogU3BsaXQgb3V0IGZyb20gaGVyZS4KCShidWlsZF9zdGF0aWNfbmFtZSk6IFVzZSBidWlsZF9xdWFsaWZpZWRfbmFtZS4KCSogZGVjbC5jIChjcF9maW5pc2hfZGVjbCk6IFN0YXRpY3MgaW4gZXh0ZXJuIGlubGluZSBmdW5jdGlvbnMKCWhhdmUgY29tZGF0IGxpbmthZ2UuCgkoc3RhcnRfZnVuY3Rpb24pOiBJbml0aWFsaXplIHN0YXRpY19sYWJlbG5vLgoKVGh1IEp1bCAxNyAxMToyMDoxNyAxOTk3ICBCZW5qYW1pbiBLb3NuaWsgIDxia296QHJoaW5vLmN5Z251cy5jb20+CgoJKiBjbGFzcy5jIChmaW5pc2hfc3RydWN0X21ldGhvZHMpOiBBZGQgY2hlY2sgb2Ygd2Fybl9jdG9yX2R0b3JfcHJpdmFjeQoJYmVmb3JlICJhbGwgbWVtYmVyIGZ1bmN0aW9ucyBpbiBjbGFzcyBbXSBhcmUgcHJpdmF0ZSIuCgpXZWQgSnVsIDE2IDIzOjQ3OjA4IDE5OTcgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIGxleC5jIChkb19zY29wZWRfaWQpOiBjb252ZXJ0X2Zyb21fcmVmZXJlbmNlLgoJKiBpbml0LmMgKGJ1aWxkX29mZnNldF9yZWYpOiBMaWtld2lzZS4KCldlZCBKdWwgMTYgMTI6MzQ6MjkgMTk5NyAgQmVuamFtaW4gS29zbmlrICA8YmtvekBsaXNhLmN5Z251cy5jb20+CgoJKiBlcnJvci5jIChkdW1wX2V4cHIpOiBDaGVjayBUUkVFX09QRVJBTkQgYmVmb3JlIGR1bXBfZXhwcl9saXN0LgoKTW9uIEp1bCAxNCAwMzoyMzo0NiAxOTk3ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiB0eXBlY2suYyAoZ2V0X21lbWJlcl9mdW5jdGlvbl9mcm9tX3B0cmZ1bmMpOiBQcm9tb3RlIGluZGV4CgliZWZvcmUgc2F2aW5nIGl0LgoKU3VuIEp1bCAxMyAwMDoxMTo1MiAxOTk3ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiB0cmVlLmMgKGxheW91dF9iYXNldHlwZXMpOiBNb3ZlIG5vbi12aXJ0dWFsIGRlc3RydWN0b3Igd2FybmluZy4KCSogZGVjbC5jICh4cmVmX2Jhc2V0eXBlcyk6IFJlbW92ZSBub24tdmlydHVhbCBkZXN0cnVjdG9yIHdhcm5pbmcuCgpTYXQgSnVsIDEyIDEyOjQ3OjEyIDE5OTcgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIGRlY2wuYyAoZ3Jva2RlY2xhcmF0b3IpOiBDYWxsIGFkZF9kZWZhcmdfZm4gZm9yIHRoZSBmdW5jdGlvbgoJdHlwZSwgdG9vLgoJKiBsZXguYyAoYWRkX2RlZmFyZ19mbik6IEFkanVzdC4KCShkb19wZW5kaW5nX2RlZmFyZ3MpOiBBZGp1c3QuICBEb24ndCBza2lwIHRoZSBmaXJzdCBwYXJtLgoKRnJpIEp1bCAxMSAwMTozOTo1MCAxOTk3ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBkZWNsLmMgKGJ1aWxkX2VudW1lcmF0b3IpOiBHbG9iYWwgZW51bWVyYXRvcnMgYXJlIGFsc28gcmVhZG9ubHkuCgoJKiBydHRpLmMgKGJ1aWxkX2R5bmFtaWNfY2FzdF8xKTogUmVuYW1lZCBmcm9tIGJ1aWxkX2R5bmFtaWNfY2FzdC4KCShidWlsZF9keW5hbWljX2Nhc3QpOiBDYWxsIGl0IGFuZCBjb252ZXJ0X2Zyb21fcmVmZXJlbmNlLgoKCSogbGV4LmMgKGFkZF9kZWZhcmdfZm4pOiBOZXcgZm4uCgkoc25hcmZfZGVmYXJnKTogRG9uJ3QgYWRkIHRvIGRlZmFyZ190eXBlcy4KCShkb19wZW5kaW5nX2RlZmFyZ3MpOiBMb3NlIGRlZmFyZ190eXBlcy4gIEFsbCBmbnMgd2UgcHJvY2VzcyBub3cKCWhhdmUgZGVmYXJncy4KCSogZGVjbC5jIChncm9rZm5kZWNsKTogQ2FsbCBhZGRfZGVmYXJnX2ZuLgoKCSogTWFrZWZpbGUuaW4gKENPTkZMSUNUUyk6IEV4cGVjdCAxOCBzL3IgY29uZmxpY3RzLgoJKiBjcC10cmVlLmRlZjogQWRkIERFRkFVTFRfQVJHLgoJKiBzcGV3LmMgKHl5bGV4KTogQ2FsbCBzbmFyZl9kZWZhcmcgYXMgYXBwcm9wcmlhdGUuCgkqIHBhcnNlLnk6IE5ldyB0b2tlbnMgREVGQVJHIGFuZCBERUZBUkdfTUFSS0VSLgoJKGRlZmFyZ19hZ2FpbiwgcGVuZGluZ19kZWZhcmdzLCBkZWZhcmcsIGRlZmFyZzEpOiBOZXcgcnVsZXMuCgkoc3RydWN0c3ApOiBVc2UgcGVuZGluZ19kZWZhcmdzLgoJKHBhcm1zLCBmdWxsX3Bhcm0pOiBVc2UgZGVmYXJnLgoJKiBsZXguYyAoaW5pdF9sZXgpOiBJbml0aWFsaXplIGlubGluZV90ZXh0X2ZpcnN0b2JqLgoJKGRvX3BlbmRpbmdfaW5saW5lcyk6IE5ldmVyIHBhc3MgdGhlIG9ic3RhY2sgdG8gZmVlZF9pbnB1dC4KCShwcm9jZXNzX25leHRfaW5saW5lKTogQ2FsbCBlbmRfaW5wdXQgaW5zdGVhZCBvZiByZXN0b3JlX3BlbmRpbmdfaW5wdXQuCgkoY2xlYXJfaW5saW5lX3RleHRfb2JzdGFjaywgcmVpbml0X3BhcnNlX2Zvcl9leHByLCBkb19wZW5kaW5nX2RlZmFyZ3MsCglmaW5pc2hfZGVmYXJnLCBmZWVkX2RlZmFyZywgc25hcmZfZGVmYXJnLCBtYXliZV9zbmFyZl9kZWZhcmcpOiBOZXcgZm5zLgoJKiBpbnB1dC5jIChlbmRfaW5wdXQpOiBOZXcgZm4uCgkoc3ViX2dldGNoKTogQXQgdGhlIGVuZCBvZiBzb21lIGZlZCBpbnB1dCwganVzdCBrZWVwIHJldHVybmluZyBFT0YKCXVudGlsIHNvbWVvbmUgY2FsbHMgZW5kX2lucHV0LgoJUmVtb3ZlICdvYnN0YWNrJyBmaWVsZCBmcm9tIHN0cnVjdCBpbnB1dF9zb3VyY2UuCgkqIGRlY2wuYyAoZ3Jva3Bhcm1zKTogSGFuZGxlIERFRkFVTFRfQVJHLgoJKHJlcGxhY2VfZGVmYXJnKTogTmV3IGZuLgoJKiBjcC10cmVlLmggKERFRkFSR19MRU5HVEgsIERFRkFSR19QT0lOVEVSKTogTmV3IG1hY3Jvcy4KCldlZCBKdWwgIDkgMTM6NDQ6MTIgMTk5NyAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogY2FsbC5jIChpbXBsaWNpdF9jb252ZXJzaW9uKTogSWYgbm90aGluZyBlbHNlIHdvcmtzLCB0cnkgYmluZGluZwoJYW4gcnZhbHVlIHRvIGEgcmVmZXJlbmNlLgoKV2VkIEp1bCAgOSAxMzowNDozOCAxOTk3ICBHZW9mZnJleSBOb2VyICA8bm9lckBjeWdudXMuY29tPgoKCSogZGVjbC5jIChpbml0X2RlY2xfcHJvY2Vzc2luZyk6IEZpeCBKdW4gMzAgcGF0Y2ggLS0gbW92ZQoJaWZuZGVmIGZvciBDeWd3aW4zMiB0byBpbmNsdWRlIFNJR1NFR1YuCgpUaHUgSnVsICAzIDAxOjQ0OjA1IDE5OTcgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIGNsYXNzLmMgKGZpbmlzaF9zdHJ1Y3RfMSk6IE9ubHkgY29tcGxhaW4gYWJvdXQgcG9pbnRlcnMgd2l0aG91dAoJY29weSBzdHVmZiBpZiB0aGVyZSBhcmUgYW55IGNvbnN0cnVjdG9ycy4KCgkqIHJ0dGkuYyAoYnVpbGRfZHluYW1pY19jYXN0KTogQ2FsbCBjb21wbGV0ZV90eXBlIG9uIHRoZSB0eXBlcy4KCgkqIGRlY2wuYyAoZ3Jva2ZuZGVjbCk6IElmIHRoZSBmdW5jdGlvbiB3ZSBjaG9zZSBkb2Vzbid0IGFjdHVhbGx5CgltYXRjaCwgZGllLgoKCSogZGVjbDIuYyAoZ3Jva2NsYXNzZm4pOiBEb24ndCBzcGVjaWZ5ICdjb25zdCBpbnQnIGZvciB0aGUKCWFydGlmaWNpYWwgZGVzdHJ1Y3RvciBwYXJtLgoKCSogcHQuYyAodHlwZV91bmlmaWNhdGlvbik6IElmIHdlIGFyZSBjYWxsZWQgcmVjdXJzaXZlbHksIG5vdGhpbmcKCWRlY2F5cy4KCk1vbiBKdW4gMzAgMTc6NTM6MjEgMTk5NyAgR2VvZmZyZXkgTm9lciAgPG5vZXJAY3lnbnVzLmNvbT4KCgkqIGRlY2wuYyAoaW5pdF9kZWNsX3Byb2Nlc3NpbmcpOiBTdG9wIHRyeWluZyB0byBjYXRjaCBzaWduYWxzCglvdGhlciB0aGFuIFNJR0FCUlQgc2luY2UgdGhlIEN5Z3dpbjMyIGxpYnJhcnkgZG9lc24ndCBzdXBwb3J0Cgl0aGVtIGNvcnJlY3RseSB5ZXQuICBUaGlzIGZpeGVzIGEgc2l0dWF0aW9uIGluIHdoaWNoIGcrKyBjYXVzZXMKCWEgaGFuZyBvbiBTSUdTRUdWcyBhbmQgb3RoZXIgc3VjaCBzaWduYWxzIGluIG91ciBXaW4zMi1ob3N0ZWQKCXRvb2xzLgoKTW9uIEp1biAzMCAxNDo1MDowMSAxOTk3ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiB0cmVlLmMgKG1hcGNhciwgY2FzZSBDQUxMX0VYUFIpOiBIYW5kbGUgYWxsIHRoZSBwYXJzZSBub2RlIGRhdGEuCgpGcmkgSnVuIDI3IDE1OjE4OjQ5IDE5OTcgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIHR5cGVjazIuYyAoc3RvcmVfaW5pdF92YWx1ZSk6IEFsd2F5cyByZXR1cm4gdGhlIHZhbHVlIGlmIG91cgoJdHlwZSBuZWVkcyBjb25zdHJ1Y3RpbmcuCgoJKiBtZXRob2QuYyAoaGFja19pZGVudGlmaWVyKTogQ29udmVydCBjbGFzcyBzdGF0aWNzIGZyb20KCXJlZmVyZW5jZSwgdG9vLgoKVGh1IEp1biAyNiAxMTo0NDo0NiAxOTk3ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBNYWtlLWxhbmcuaW4gKGNwbGliMi5yZWFkeSk6IEFkZCAkKExBTkdVQUdFUykgZGVwZW5kZW5jeS4KClRodSBKdW4gMTkgMTY6NDk6MjggMTk5NyAgTWlrZSBTdHVtcCAgPG1yc0BjeWdudXMuY29tPgoKCSogdHlwZWNrLmMgKGNfZXhwYW5kX3JldHVybik6IE1ha2Ugc3VyZSB3ZSBjbGVhbiB1cCB0ZW1wb3JhcmllcyBhdAoJdGhlIGVuZCBvZiByZXR1cm4geDsKClRodSBKdW4gMTkgMTI6Mjg6NDMgMTk5NyAgQnJlbmRhbiBLZWhvZSAgPGJyZW5kYW5AbGlzYS5jeWdudXMuY29tPgoKCSogbGV4LmMgKGNoZWNrX2Zvcl9taXNzaW5nX3NlbWljb2xvbik6IEFsc28gY2hlY2sgZm9yIENWX1FVQUxJRklFUi4KClR1ZSBKdW4gMTcgMTg6MzU6NTcgMTk5NyAgTWlrZSBTdHVtcCAgPG1yc0BjeWdudXMuY29tPgoKCSogZXhjZXB0LmMgKGV4cGFuZF9idWlsdGluX3Rocm93KTogQWRkIHN1cHBvcnQKCS1mbm8tc2psai1leGNlcHRpb25zIC1mUElDIGV4Y2VwdGlvbiBoYW5kbGluZyBvbiB0aGUgU1BBUkMuCgpNb24gSnVuIDE2IDAxOjI0OjM3IDE5OTcgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIHJlcG8uYyAoZXh0cmFjdF9zdHJpbmcpOiBOdWxsLXRlcm1pbmF0ZS4KCgkqIGNwLXRyZWUuaCAoVElfU1BFQ19JTkZPKTogTmV3IG1hY3JvLgoJKENMQVNTVFlQRV9USV9TUEVDX0lORk8pOiBOZXcgbWFjcm8uCgkqIHB0LmMgKHB1c2hfdGVtcGxhdGVfZGVjbCk6IENvcnJlY3RseSBkZXRlcm1pbmUgIyBvZiB0ZW1wbGF0ZSBwYXJtcwoJZm9yIHBhcnRpYWwgc3BlY3MuCgoJKiBjYWxsLmMgKGNvbXBhcmVfaWNzKTogUmVhbGx5IGZpeCAndGhpcycgY29udmVyc2lvbnMuCgoJKiBwdC5jIChkb19kZWNsX2luc3RhbnRpYXRpb24pOiBEb24ndCBjcmFzaCBvbiBleHBsaWNpdCBpbnN0IG9mCglub24tdGVtcGxhdGUgZm4uCgoJKiBwdC5jIChwdXNoX3RlbXBsYXRlX2RlY2wpOiBDb21wbGFpbiBhYm91dCBtaXNtYXRjaCBpbiAjIG9mCgl0ZW1wbGF0ZSBwYXJtcyBiZXR3ZWVuIGEgY2xhc3MgdGVtcGxhdGUgYW5kIGEgbWVtYmVyIHRlbXBsYXRlLgoKU3VuIEp1biAxNSAwMjozODoyMCAxOTk3ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBtZXRob2QuYyAoc3ludGhlc2l6ZV9tZXRob2QpOiBZb3UgY2FuJ3QgY2FsbAoJZnVuY3Rpb25fY2Fubm90X2lubGluZV9wIGFmdGVyIGZpbmlzaF9mdW5jdGlvbi4KCSogZGVjbC5jIChmaW5pc2hfZnVuY3Rpb24pOiBUdXJuIG9uIGZsYWdfaW5saW5lX2Z1bmN0aW9ucyBhbmQgdHVybgoJb2ZmIERFQ0xfSU5MSU5FIGJlZm9yZSBoYW5kaW5nIGEgc3ludGhlc2l6ZWQgbWV0aG9kIHRvIHRoZQoJYmFja2VuZC4KClRodSBKdW4gMTIgMTc6MzU6MjggMTk5NyAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogbWV0aG9kLmMgKHN5bnRoZXNpemVfbWV0aG9kKTogUmVtb3ZlIEp1bHkgMzAgY2hhbmdlIHRvIG5ldmVyIHNldAoJREVDTF9JTkxJTkUgaWYgYXRfZW9mLgoKVGh1IEp1biAxMiAxNToyNTowOCAxOTk3ICBNaWtlIFN0dW1wICA8bXJzQGN5Z251cy5jb20+CgoJKiB4cmVmLmMgKEdOVV94cmVmX21lbWJlcik6IEVuc3VyZSB0aGF0IHRoZSBub2RlIGhhcyBhCglkZWNsX2xhbmdfc3BlY2lmaWMgcGFydCBiZWZvcmUgY2hlY2tpbmcgREVDTF9GUklFTkRfUC4KClRodSBKdW4gMTIgMTI6MzY6MDUgMTk5NyAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogcHQuYyAoaW5zdGFudGlhdGVfY2xhc3NfdGVtcGxhdGUpOiBEaWFnbm9zZSBub24tY2xhc3MgdHlwZXMgdXNlZAoJYXMgYmFzZXMuCgpXZWQgSnVuIDExIDE3OjMzOjQwIDE5OTcgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIHR5cGVjay5jIChidWlsZF9jb25kaXRpb25hbF9leHByKTogVXNlIGNvbnZlcnRfZm9yX2luaXRpYWxpemF0aW9uCglpbnN0ZWFkIG9mIGNvbnZlcnRfYW5kX2NoZWNrLgoKV2VkIEp1biAxMSAxMjozMTozMyAxOTk3ICBCcmVuZGFuIEtlaG9lICA8YnJlbmRhbkBsaXNhLmN5Z251cy5jb20+CgoJKiBwYXJzZS55ICh0eXBlc3BlYyk6IERvbid0IHBlZHdhcm4gZm9yIHR5cGVvZi4KClR1ZSBKdW4gMTAgMDA6MjI6MDkgMTk5NyAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogcmVwby5jIChmaW5pc2hfcmVwbyk6IE9ubHkgY2hlY2sgY2hhbmdlcyBpZiB3ZSB3b3VsZCB3cml0ZSBhCglyZXBvIGZpbGUuCgoJKiBjYWxsLmMgKGNvbXBhcmVfaWNzKTogRml4IGhhbmRsaW5nIG9mICd0aGlzJyBjb252ZXJzaW9ucy4KCgkqIHB0LmMgKGRvX2RlY2xfaW5zdGFudGlhdGlvbik6IFN1cHBvcnQgc3RhdGljIGRhdGEgdG9vLiAgUmVuYW1lCglmcm9tIGRvX2Z1bmN0aW9uX2luc3RhbnRpYXRpb24uCgkqIGNwLXRyZWUuaDogQWRqdXN0LgoJKiBwYXJzZS55OiBBZGp1c3QuCgoJKiByZXBvLmMgKGV4dHJhY3Rfc3RyaW5nKTogTmV3IGZuLgoJKGdldF9iYXNlX2ZpbGVuYW1lKTogVXNlIGl0LgoJKGluaXRfcmVwbyk6IENvbXBhcmUgb2xkIGFyZ3Mgd2l0aCBjdXJyZW50IGFyZ3MuCgpNb24gSnVuICA5IDE0OjI1OjMwIDE5OTcgIE1pa2UgU3R1bXAgIDxtcnNAY3lnbnVzLmNvbT4KCgkqIE1ha2VmaWxlLmluLCBNYWtlLWxhbmcuaW46IFByb3RlY3QgQy1scyB3aXRoIGEgY29tbWVudAoJY2hhcmFjdGVyLCBpZGVhIGZyb20gUGF1bCBFZ2dlcnQgPGVnZ2VydEB0d2luc3VuLmNvbT4uCgpNb24gSnVuICA5IDAxOjUyOjAzIDE5OTcgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIHR5cGVjay5jIChjX2V4cGFuZF9yZXR1cm4pOiBCZSBtb3JlIHBlcnNpc3RlbnQgaW4gbG9va2luZyBmb3IKCXJldHVybmVkIHRlbXBzLgoKCSogY3Z0LmMgKGJ1aWxkX3VwX3JlZmVyZW5jZSk6IFVzZSBOT1BfRVhQUiBmb3Igc3dpdGNoaW5nIGZyb20KCXBvaW50ZXIgdG8gcmVmZXJlbmNlLgoKCSogY2xhc3MuYyAoYnVpbGRfdmJhc2VfcGF0aCk6IERvbid0IGRvIGFueXRoaW5nIGlmIFBBVEggaGFzIG5vIHN0ZXBzLgoKU3VuIEp1biAgOCAwMzowNzowNSAxOTk3ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBpbml0LmMgKGJ1aWxkX21lbWJlcl9jYWxsLCBidWlsZF9vZmZzZXRfcmVmKToKCVVzZSBkb19zY29wZWRfaWQgaW5zdGVhZCBvZiBkb19pZGVudGlmaWVyLgoKCSogY3Z0LmMgKGNvbnZlcnQpOiBSZW1vdmUgYm9nb3NpdHkuCgpTYXQgSnVuICA3IDIwOjUwOjE3IDE5OTcgIEJyZW5kYW4gS2Vob2UgIDxicmVuZGFuQGxpc2EuY3lnbnVzLmNvbT4KCgkqIGN2dC5jIChidWlsZF91cF9yZWZlcmVuY2UpOiBEbyBjaGVja3Mgb2YgQVJHVFlQRSBhbmQKCVRBUkdFVF9UWVBFIGJlZm9yZSB0cnlpbmcgdG8gdXNlIGdldF9iaW5mby4KCkZyaSBKdW4gIDYgMTc6MzY6MzkgMTk5NyAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogY3Z0LmMgKGJ1aWxkX3VwX3JlZmVyZW5jZSk6IENhbGwgZ2V0X2JpbmZvIHRvIGdldCBhY2Nlc3MgY29udHJvbC4KCgkqIGRlY2wyLmMgKGltcG9ydF9leHBvcnRfZGVjbCk6IElmIHdlIGRvbid0IHN1cHBvcnQgd2Vha3MsIGxlYXZlCglzdGF0aWNzIHVuZGVmaW5lZC4KCkZyaSBKdW4gIDYgMTU6NTU6NDkgMTk5NyAgTWlrZSBTdHVtcCAgPG1yc0BjeWdudXMuY29tPgoKCSogZXhjZXB0LmMgKGV4cGFuZF9idWlsdGluX3Rocm93KTogQWRkIHN1cHBvcnQgZm9yIG1hY2hpbmVzIHRoYXQKCWNhbm5vdCBhY2Nlc3MgZ2xvYmFscyBhZnRlciB0aHJvdydzIGVwaWxvZ3VlIHdoZW4KCS1mbm8tc2psai1leGNlcHRpb25zIGlzIHVzZWQuCgpUaHUgSnVuICA1IDE2OjI4OjQzIDE5OTcgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIHBhcnNlLnk6ICdzdGQ6OicgYmVjb21lcyAnOjonLgoJKiBsZXguYyAocmVhbF95eWxleCk6IFJlbW92ZSAnbmFtZXNwYWNlJyB3YXJuaW5nLgoJKiBpbml0LmMgKGJ1aWxkX21lbWJlcl9jYWxsKTogSWdub3JlICdzdGQ6OicuCgkoYnVpbGRfb2Zmc2V0X3JlZik6IExpa2V3aXNlLgoJKiBkZWNsMi5jIChkb191c2luZ19kaXJlY3RpdmUpOiBJZ25vcmUgJ3VzaW5nIG5hbWVzcGFjZSBzdGQ7Jy4KCShkb190b3BsZXZlbF91c2luZ19kZWNsKTogSWdub3JlICd1c2luZyBzdGQ6OndoYXRldmVyJy4KCSogZGVjbC5jIChwdXNoX25hbWVzcGFjZSk6IEp1c3Qgc29ycnkuCgkocG9wX25hbWVzcGFjZSk6IE5vcC4KCShpbml0X2RlY2xfcHJvY2Vzc2luZyk6IERlY2xhcmUgc3RkIG5hbWVzcGFjZS4KClR1ZSBKdW4gIDMgMTg6MDg6MjMgMTk5NyAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogc2VhcmNoLmMgKHB1c2hfY2xhc3NfZGVjbHMpOiBBIG5hbWUgd2hpY2ggYW1iaWd1b3VzbHkgcmVmZXJzIHRvCglzZXZlcmFsIGluc3RhbnRpYXRpb25zIG9mIHRoZSBzYW1lIHRlbXBsYXRlIGp1c3QgcmVmZXJzIHRvIHRoZQoJdGVtcGxhdGUuCgpUdWUgSnVuICAzIDEyOjMwOjQwIDE5OTcgIEJlbmphbWluIEtvc25payAgPGJrb3pAY2lyZGFuLmN5Z251cy5jb20+CgoJKiBkZWNsLmMgKGJ1aWxkX2VudW1lcmF0b3IpOiBGaXggcHJvYmxlbSB3aXRoIHVuc2lnbmVkIGxvbmcKCWVudW1lcmF0ZWQgdmFsdWVzIGJlaW5nIHNtYXNoZWQgdG8gaW50cywgY2F1c2luZyBvdmVyZmxvdwoJd2hlbiBjb21wdXRpbmcgbmV4dCBlbnVtZXJhdGVkIHZhbHVlIChmb3IgZW51bSB2YWx1ZXMgYXJvdW5kCglNQVhfVkFMKS4KCk1vbiBKdW4gIDIgMTc6NDA6NTYgMTk5NyAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogdHlwZWNrLmMgKGJ1aWxkX2NvbXBvbmVudF9yZWYpOiBPbmx5IGNhbGwgbWFya191c2VkIG9uIGEgZGVjbC4KClRodSBNYXkgMjkgMTU6NTQ6MTcgMTk5NyAgQnJlbmRhbiBLZWhvZSAgPGJyZW5kYW5AbGlzYS5jeWdudXMuY29tPgoKCSogdHlwZWNrLmMgKGJ1aWxkX2NfY2FzdCk6IE1ha2UgdGhlIGNoZWNrIGZvciBhIHB0ciB0byBmdW5jdGlvbgoJbW9yZSBzcGVjaWZpYyBiZWZvcmUgcG9zc2libGUgZGVmYXVsdF9jb252ZXJzaW9uIGNhbGwuCgpUaHUgTWF5IDI5IDEzOjAyOjA2IDE5OTcgIE1pa2UgU3R1bXAgIDxtcnNAY3lnbnVzLmNvbT4KCgkqIGV4Y2VwdC5jIChleHBhbmRfZXhjZXB0aW9uX2Jsb2Nrcyk6IFNpbXBsaWZ5IGFuZCBmaXggYW5kIG1ha2UKCXN1cmUgd2UgZG9uJ3QgZW5kIGEgcmVnaW9uIGluIGEgc2VxdWVuY2UsIGFzIGV4cGFuZF9lbmRfYmluZGluZ3MKCWRvZXNuJ3QgbGlrZSBpdC4KCldlZCBNYXkgMjggMTc6MDg6MDMgMTk5NyAgTWlrZSBTdHVtcCAgPG1yc0BjeWdudXMuY29tPgoKCSogZXhjZXB0LmMgKGluaXRfZXhjZXB0aW9uX3Byb2Nlc3NpbmcpOiBNYXJrIHRlcm1pbmF0ZSBhcyBub3QKCXJldHVybmluZyBzbyB0aGF0IHRoZSBvcHRpbWl6ZXIgY2FuIG9wdGltaXplIGJldHRlci4KClR1ZSBNYXkgMjcgMTk6NDk6MTkgMTk5NyAgTWlrZSBTdHVtcCAgPG1yc0BjeWdudXMuY29tPgoKCSogY3Z0LmMgKGNvbnZlcnQpOiBEb24ndCBkbyBhbnkgZXh0cmEgd29yaywgaWYgd2UgY2FuIGF2b2lkIGl0CgllYXNpbHkuCgpUdWUgTWF5IDI3IDE4OjIxOjQ3IDE5OTcgIE1pa2UgU3R1bXAgIDxtcnNAY3lnbnVzLmNvbT4KCgkqICouW2NoeV06IENoYW5nZSBjcF9jb252ZXJ0IHRvIG9jcF9jb252ZXJ0LCBjaGFuZ2UgY29udmVydCB0bwoJY3BfY29udmVydC4gIGNvbnZlcnQgaXMgbm93IHJlc2VydmVkIGZvciB0aGUgYmFja2VuZCwgYW5kIGRvZXNuJ3QKCWhhdmUgdGhlIHNlbWFudGljcyBhIGZyb250ZW5kIHBlcnNvbiBzaG91bGQgZXZlciB3YW50LgoKRnJpIE1heSAyMyAxMDo1ODozMSAxOTk3ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBsYW5nLXNwZWNzLmg6IERlZmluZSBfX0VYQ0VQVElPTlMgaWYgZXhjZXB0aW9ucyBhcmUgZW5hYmxlZC4KCUxvc2UgLXRyYWRpdGlvbmFsIHN1cHBvcnQuCgpUaHUgTWF5IDIyIDE1OjQxOjI4IDE5OTcgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIHJ0dGkuYyAoZ2V0X3RpbmZvX3Zhcik6IFVzZSBUWVBFX1BSRUNJU0lPTiAoc2l6ZXR5cGUpLgoKCSogcGFyc2UueSAoc2VsZl9yZWZlcmVuY2UpOiBEbyBpdCBmb3IgdGVtcGxhdGVzLCB0b28uCgkqIGNsYXNzLmMgKHB1c2hjbGFzcyk6IERvbid0IG92ZXJsb2FkX3RlbXBsYXRlX25hbWU7IHRoZSBhbGlhcwoJZ2VuZXJhdGVkIGJ5IGJ1aWxkX3NlbGZfcmVmZXJlbmNlIHNlcnZlcyB0aGUgc2FtZSBwdXJwb3NlLgoKCSogdHJlZS5jIChsaXN0X2hhc2gpOiBNYWtlIHN0YXRpYywgdGFrZSBtb3JlIGFyZ3MuCgkobGlzdF9oYXNoX2xvb2t1cCk6IExpa2V3aXNlLgoJKGxpc3RfaGFzaF9hZGQpOiBNYWtlIHN0YXRpYy4KCShsaXN0X2hhc2hfY2Fub24pOiBMb3NlLgoJKGhhc2hfdHJlZV9jb25zKTogT25seSBidWlsZCBhIG5ldyBub2RlIGlmIG9uZSBpc24ndCBhbHJlYWR5IGluIHRoZQoJaGFzaHRhYmxlLgoJKGhhc2hfdHJlZV9jaGFpbik6IFVzZSBoYXNoX3RyZWVfY29ucy4KCSogY3AtdHJlZS5oOiBBZGp1c3QuCgkqIGRlY2wuYyAoZ3Jva2ZuZGVjbCk6IEp1c3QgY2hlY2sgSURFTlRJRklFUl9HTE9CQUxfVkFMVUUgaW5zdGVhZAoJb2YgY2FsbGluZyBsb29rdXBfbmFtZS4KCldlZCBNYXkgMjEgMTg6MjQ6MTkgMTk5NyAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogcHQuYyAoaW5zdGFudGlhdGVfY2xhc3NfdGVtcGxhdGUpOiBUWVBFX1ZBTFVFUyBmb3IgYW4gZW51bQoJZG9lc24ndCByZWZlciB0byB0aGUgQ09OU1RfREVDTHMuCgpUdWUgTWF5IDIwIDIxOjA5OjMyIDE5OTcgIEJvYiBNYW5zb24gIDxtYW5zb25AY2hhcm1lZC5jeWdudXMuY29tPgoKCSogcnR0aS5jIChnZXRfdGluZm9fdmFyKTogRWl0aGVyIElOVF9UWVBFX1NJWkUgb3IgMzIsIHdoaWNoZXZlcgoJaXMgYmlnZ2VyLgoJKGV4cGFuZF9jbGFzc19kZXNjKTogQ29udmVydCB0aGUgbGFzdCBhcmd1bWVudCB0byBhIHNpemV0eXBlLgoKVHVlIE1heSAyMCAxMzo1NTo1NyAxOTk3ICBCcmVuZGFuIEtlaG9lICA8YnJlbmRhbkBsaXNhLmN5Z251cy5jb20+CgoJKiBneHguZ3BlcmYgKF9fY29tcGxleCwgX19jb21wbGV4X18sIF9faW1hZywgX19pbWFnX18sIF9fcmVhbCwKCV9fcmVhbF9fKTogQWRkIHJlc3dvcmRzLgoJKiBoYXNoLmg6IFJlZ2VuZXJhdGUuCgkqIGxleC5oIChyaWQpOiBBZGQgUklEX0NPTVBMRVguCgkoUklEX0xBU1RfTU9ESUZJRVIpOiBTZXQgdG8gUklEX0NPTVBMRVguCgkqIGxleC5jIChpbml0X2xleCk6IEFkZCBidWlsZGluZyBvZiBSSURfQ09NUExFWC4KCShyZWFsX3l5bGV4KTogR2VuZXJhbCBjbGVhbnVwIGluIGxpbmUgd2l0aCB3aGF0IGMtbGV4LmMgYWxzbyBoYXMsCglzYW5zIHRoZSBjcnVmdCBmb3IgdHJhZGl0aW9uYWw7IGFkZCBoYW5kbGluZyBvZiBTUEVDX0lNQUcsIGNvbXBsZXgKCXR5cGVzLCBhbmQgaW1hZ2luYXJ5IG51bWVyaWMgY29uc3RhbnRzLgoJKiBwYXJzZS55IChSRUFMUEFSVCwgSU1BR1BBUlQpOiBBZGQgdG9rZW5zLgoJKHVuYXJ5X2V4cHIpOiBBZGQgUkVBTFBBUlQgYW5kIElNQUdQQVJUIHJ1bGVzLgoJKiBjcC10cmVlLmggKGNvbXBsZXhfe2ludGVnZXIsZmxvYXQsZG91YmxlLGxvbmd9X3R5cGVfbm9kZSk6IERlY2xhcmUuCgkqIGRlY2wuYyAoY29tcGxleF97aW50ZWdlcixmbG9hdCxkb3VibGUsbG9uZ31fdHlwZV9ub2RlKTogRGVmaW5lCgl0eXBlcy4KCShpbml0X2RlY2xfcHJvY2Vzc2luZyk6IFNldCB1cCB0aGUgdHlwZXMuCgkoZ3Jva2RlY2xhcmF0b3IpOiBBZGQgaGFuZGxpbmcgb2YgUklEX0NPTVBMRVguICBTZXQgYW5kIHVzZQoJREVGQVVMVEVEX0lOVCBpbnN0ZWFkIG9mIEVYUExJQ0lUX0lOVCB3aGVuIHdlIGRlZmF1bHQgdG8gaW50IHR5cGUuCgkqIGNhbGwuYyAoYnVpbGRfbmV3X29wKTogQWRkIFJFQUxQQVJUX0VYUFIgYW5kIElNQUdQQVJUX0VYUFIgY2FzZXMuCgkqIGN2dC5jIChjcF9jb252ZXJ0KTogSGFuZGxlIENPTVBMRVhfVFlQRS4KCSogZXJyb3IuYyAoZHVtcF90eXBlX3ByZWZpeCwgZHVtcF90eXBlLCBkdW1wX3R5cGVfc3VmZml4KTogQWRkCglDT01QTEVYX1RZUEUgY2FzZS4KCSogbWV0aG9kLmMgKGJ1aWxkX292ZXJsb2FkX25hbWUpOiBBZGQgaGFuZGxpbmcgb2YgdGhlIGRpZmZlcmVudAoJQ09NUExFWF9UWVBFcywgcHJlZml4aW5nIHRoZW0gd2l0aCBgSicuCgkqIHB0LmMgKHByb2Nlc3NfdGVtcGxhdGVfcGFybSk6IERvbid0IGxldCB0aGVtIHVzZSBhIENPTVBMRVhfVFlQRQoJYXMgYSB0ZW1wbGF0ZSBwYXJtLgoJKHVzZXNfdGVtcGxhdGVfcGFybXMsIHRzdWJzdCwgdW5pZnkpOiBBZGQgQ09NUExFWF9UWVBFIGNhc2UuCgkqIHRyZWUuYyAobHZhbHVlX3ApOiBBZGQgUkVBTFBBUlRfRVhQUiBhbmQgSU1BR1BBUlRfRVhQUiBjYXNlcy4KCShtYXBjYXIpOiBIYW5kbGUgQ09NUExFWF9DU1QuCgkqIHR5cGVjay5jIChidWlsZF9iaW5hcnlfb3Bfbm9kZWZhdWx0KTogSGFuZGxlIENPTVBMRVhfVFlQRS4KCShjb21tb25fdHlwZSk6IEFkZCBjb2RlIGZvciBjb21wbGV4IHR5cGVzLgoJKGJ1aWxkX3VuYXJ5X29wKTogQWRkIFJFQUxQQVJUX0VYUFIgYW5kIElNQUdQQVJUX0VYUFIgY2FzZXMuCgkoY29udmVydF9mb3JfYXNzaWdubWVudCk6IExpa2V3aXNlLgoJKG1hcmtfYWRkcmVzc2FibGUpOiBBZGQgUkVBTFBBUlRfRVhQUiBhbmQgSU1BR1BBUlRfRVhQUiBjYXNlcy4KCk1vbiBNYXkgMTkgMTI6MjY6MjcgMTk5NyAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogcHQuYyAodHN1YnN0KTogRG9uJ3QgcGFzcyB0aGUgTUlOVVNfRVhQUiBmb3IgYW4gYXJyYXkgZG9tYWluIHRvCgl0c3Vic3RfZXhwciwgYXMgaXQgbWlnaHQgdHJ5IHRvIGRvIG92ZXJsb2FkIHJlc29sdXRpb24uCgpTYXQgTWF5IDE3IDEwOjQ4OjMxIDE5OTcgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIHB0LmMgKGluc3RhbnRpYXRlX2NsYXNzX3RlbXBsYXRlKTogT29wcy4KCkZyaSBNYXkgMTYgMTQ6MjM6NTcgMTk5NyAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogY3AtdHJlZS5kZWY6IEFkZCBUQUdfREVGTi4KCSogcHQuYyAodHN1YnN0X2VudW0pOiBOZXcgZm4uCgkoaW5zdGFudGlhdGVfY2xhc3NfdGVtcGxhdGUpOiBVc2UgaXQuCgkodHN1YnN0X2V4cHIpOiBTdXBwb3J0IFRBR19ERUZOLgoJKHRzdWJzdCk6IFN1cHBvcnQgbG9jYWwgZW51bXMuCgkodHN1YnN0X2NvcHkpOiBMaWtld2lzZS4KCSogZGVjbC5jIChmaW5pc2hfZW51bSk6IExpa2V3aXNlLgoJKHN0YXJ0X2VudW0pOiBJZiB0aGlzIGlzIGEgbG9jYWwgZW51bSwgc3dpdGNoIHRvIHBlcm1hbmVudF9vYnN0YWNrLgoKV2VkIE1heSAxNCAxOTowODoyOCAxOTk3ICBNaWtlIFN0dW1wICA8bXJzQGN5Z251cy5jb20+CgoJKiBkZWNsLmMgKHN0b3JlX3Bhcm1fZGVjbHMpOiBTZXQgbGFzdF9wYXJtX2NsZWFudXBfaW5zbiBoZXJlLgoJKGZpbmlzaF9mdW5jdGlvbik6IFB1dCB0aGUgYmFzZSBpbml0IGNvZGUgZm9yIGNvbnN0cnVjdG9ycyBqdXN0CglhZnRlciB0aGUgcGFybSBjbGVhbnVwIGluc25zLgoJKHN0cnVjdCBjcF9mdW5jdGlvbik6IEFkZCBsYXN0X3Bhcm1fY2xlYW51cF9pbnNuLgoJKHB1c2hfY3BfZnVuY3Rpb25fY29udGV4dCk6IExpa2V3aXNlLgoJKHBvcF9jcF9mdW5jdGlvbl9jb250ZXh0KTogTGlrZXdpc2UuCgpUdWUgTWF5IDEzIDE1OjUxOjIwIDE5OTcgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIHB0LmMgKHRzdWJzdF9jb3B5KTogSGFuZGxlIEJJVF9OT1RfRVhQUi4KCldlZCBNYXkgIDcgMTE6MTc6NTkgMTk5NyAgQnJlbmRhbiBLZWhvZSAgPGJyZW5kYW5AbGlzYS5jeWdudXMuY29tPgoKCSogbWV0aG9kLmMgKGVtaXRfdGh1bmspIFtBU01fT1VUUFVUX01JX1RIVU5LXTogQnVpbGQgdXAgdGhlIFJUTAoJZm9yIFRIVU5LX0ZOREVDTCBiZWZvcmUgd2Ugc3dpdGNoIHRvIHRlbXBvcmFyeSBhbGxvY2F0aW9uLgoKTW9uIE1heSAgNSAxNDo0Njo1MyAxOTk3ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBjYWxsLmMgKGJ1aWxkX25ld19vcCk6IEhhbmRsZSBudWxsIGFyZzIgZm9yID86LgoKVGh1IE1heSAgMSAxODoyNjozNyAxOTk3ICBNaWtlIFN0dW1wICA8bXJzQGN5Z251cy5jb20+CgoJKiBleGNlcHQuYyAoZXhwYW5kX2V4Y2VwdGlvbl9ibG9ja3MpOiBFbnN1cmUgdGhhdCB3ZSBmbG93IHRocm91Z2gKCXRoZSBlbmQgb2YgdGhlIGV4Y2VwdGlvbiByZWdpb24gZm9yIHRoZSBleGNlcHRpb24gc3BlY2lmaWNhdGlvbi4KCU1vdmUgZXhjZXB0aW9uIHJlZ2lvbiBmb3IgdGhlIGV4Y2VwdGlvbiBzcGVjaWZpY2F0aW9uIGluLCBzbyB0aGF0CglpdCBkb2Vzbid0IHByb3RlY3QgdGhlIHBhcm0gY2xlYW51cC4gIFJlbW92ZSBzb21lIG9ic29sZXRlIGNvZGUuCgkqIGRlY2wuYyAoc3RvcmVfcGFybV9kZWNscyk6IExpa2V3aXNlLgoJKGZpbmlzaF9mdW5jdGlvbik6IExpa2V3aXNlLgoKVHVlIEFwciAyOSAxNTozODo1NCAxOTk3ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBpbml0LmMgKGJ1aWxkX25ldyk6IEZpeCBub3Rocm93IGhhbmRsaW5nLgoKVHVlIEFwciAyOSAxNDoyOTo1MCAxOTk3ICBCcmVuZGFuIEtlaG9lICA8YnJlbmRhbkBsaXNhLmN5Z251cy5jb20+CgoJKiBpbml0LmMgKGVtaXRfYmFzZV9pbml0KTogRG9uJ3Qgd2FybiBhYm91dCB0aGUgaW5pdGlhbGl6YXRpb24KCWxpc3QgZm9yIGFuIGFydGlmaWNpYWwgbWVtYmVyLgoKRnJpIEFwciAyNSAxNzo0Nzo1OSAxOTk3ICBCcmVuZGFuIEtlaG9lICA8YnJlbmRhbkBsaXNhLmN5Z251cy5jb20+CgoJKiBleHByLmMgKGRvX2Nhc2UpOiBIYW5kbGUgIVNUQVJUIGNhc2UgZm9yIHRoZSBlcnJvciBtc2cuCgpGcmkgQXByIDI1IDExOjU1OjIzIDE5OTcgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIGRlY2wyLmMsIGxhbmctb3B0aW9ucy5oOiBOZXcgb3B0aW9uIC1XZWZmYysrLgoJKiBjbGFzcy5jLCBkZWNsLmMsIGluaXQuYywgdHlwZWNrLmM6IE1vdmUgRWZmZWN0aXZlIEMrKyB3YXJuaW5ncwoJdG8gLVdlZmZjKysuCgoJKiBkZWNsMi5jIChmaW5pc2hfcHJldnRhYmxlX3ZhcmRlY2wpOiBDaGFuZ2UgTk9fTElOS0FHRV9IRVVSSVNUSUNTCgl0byBNVUxUSVBMRV9TWU1CT0xfU1BBQ0VTLgoKV2VkIEFwciAyMyAxODowNjo1MCAxOTk3ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBtZXRob2QuYyAoZW1pdF90aHVuaywgZ2VuZXJpYyBjYXNlKTogU2V0IGN1cnJlbnRfZnVuY3Rpb25faXNfdGh1bmsuCgoJKiBtZXRob2QuYyAoZW1pdF90aHVuaywgbWFjcm8gY2FzZSk6IFNldCB1cCBERUNMX1JFU1VMVC4KCgkqIHR5cGVjay5jIChjX2V4cGFuZF9yZXR1cm4pOiBEb24ndCBjb21wbGFpbiBhYm91dCByZXR1cm5pbmcgdm9pZAoJdG8gdm9pZCBpbiBhbiBhcnRpZmljaWFsIGZ1bmN0aW9uLgoJKiBtZXRob2QuYyAobWFrZV90aHVuayk6IENoYW5nZSBzZXR0aW5ncyBvZiBSRUFET05MWS9WT0xBVElMRSwKCWRvbid0IHNldCBERUNMX1JFU1VMVCwgc2V0IERFQ0xfQVJUSUZJQ0lBTC4KCShlbWl0X3RodW5rLCBnZW5lcmljIGNvZGUpOiBBbHNvIHNldCB1cCBERUNMX0xBTkdfU1BFQ0lGSUMuCgpXZWQgQXByIDIzIDE0OjQzOjA2IDE5OTcgIE1pa2UgU3R1bXAgIDxtcnNAY3lnbnVzLmNvbT4KCgkqIGluaXQuYyAoaW5pdF9kZWNsX3Byb2Nlc3NpbmcpOiBBZGQgc3VwcG9ydCBmb3Igc2V0am1wL2xvbmdqbXAgYmFzZWQKCWV4Y2VwdGlvbiBoYW5kbGluZy4KCSogZXhjZXB0LmMgKGluaXRfZXhjZXB0aW9uX3Byb2Nlc3NpbmcpOiBMaWtld2lzZS4KCShleHBhbmRfZW5kX2NhdGNoX2Jsb2NrKTogTGlrZXdpc2UuCgkoZXhwYW5kX2V4Y2VwdGlvbl9ibG9ja3MpOiBMaWtld2lzZS4KCShleHBhbmRfdGhyb3cpOiBMaWtld2lzZS4KCSogZXhjZXB0aW9uLmNjIChfX2RlZmF1bHRfdGVybWluYXRlKTogTGlrZXdpc2UuCgoJKiBpbml0LmMgKHBlcmZvcm1fbWVtYmVyX2luaXQpOiBVc2UgbmV3IG1ldGhvZCBvZiBleHByIGxldmVsCgljbGVhbnVwcywgaW5zdGVhZCBvZiBjbGVhbnVwc190aGlzX2NhbGwgYW5kIGZyaWVuZHMuCgkoZW1pdF9iYXNlX2luaXQpOiBMaWtld2lzZS4KCShleHBhbmRfYWdncl92YmFzZV9pbml0XzEpOiBMaWtld2lzZS4KCShleHBhbmRfdmVjX2luaXQpOiBMaWtld2lzZS4KCSogZGVjbC5jIChjcF9maW5pc2hfZGVjbCk6IExpa2V3aXNlLgoJKGV4cGFuZF9zdGF0aWNfaW5pdCk6IExpa2V3aXNlLgoJKHN0b3JlX3Bhcm1fZGVjbHMpOiBMaWtld2lzZS4KCShjcGx1c19leHBhbmRfZXhwcl9zdG10KTogTGlrZXdpc2UuCgkqIGRlY2wyLmMgKGZpbmlzaF9maWxlKTogTGlrZXdpc2UuCgoJKiBNYWtlLWxhbmcuaW4gKGV4Y2VwdGlvbi5vKTogT2sgdG8gY29tcGlsZSB3aXRoIC1PIG5vdy4KCgkqIGRlY2wuYyAobWF5YmVfYnVpbGRfY2xlYW51cF8xKTogV2Ugbm8gbG9uZ2VyIGhhdmUgdG8gdW5zYXZlLCBhcwoJd2Uga25vdyBpdCB3aWxsIGJlIGRvbmUgbGF0ZXIgYnkgdGhlIGJhY2tlbmQuCgoJKiBkZWNsMi5jIChsYW5nX2Zfb3B0aW9ucyk6IFJlbW92ZSBzdXBwb3J0IGZvciBzaG9ydCB0ZW1wcy4KCSogbGFuZy1vcHRpb25zLmg6IExpa2V3aXNlLgoKV2VkIEFwciAyMyAwNDoxMjowNiAxOTk3ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiB0cmVlLmMgKHZhcmFyZ3NfZnVuY3Rpb25fcCk6IE5ldyBmbi4KCSogbWV0aG9kLmMgKGVtaXRfdGh1bmspOiBSZXBsYWNlIGJyb2tlbiBnZW5lcmljIGNvZGUgd2l0aCBjb2RlIHRvCglnZW5lcmF0ZSBhIGhlYXZ5d2VpZ2h0IHRodW5rIGZ1bmN0aW9uLgoKVHVlIEFwciAyMiAwMjo0NToxOCAxOTk3ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBwdC5jIChwcm9jZXNzX3RlbXBsYXRlX3Bhcm0pOiBwZWR3YXJuIGFib3V0IGZsb2F0aW5nLXBvaW50IHBhcm1zLgoKCSogZGVjbC5jIChncm9rZGVjbGFyYXRvcik6IGlubGluZSBubyBsb25nZXIgaW1wbGllcyBzdGF0aWMuCgoJKiBzcGV3LmMgKHl5bGV4KTogQWx3YXlzIHJldHVybiB0aGUgVFlQRV9ERUNMIGlmIHdlIGdvdCBhIHNjb3BlLgoKTW9uIEFwciAyMSAxNTo0MjoyNyAxOTk3ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBjbGFzcy5jIChjaGVja19mb3Jfb3ZlcnJpZGUpOiBUaGUgc2lnbmF0dXJlIG9mIGFuIG92ZXJyaWRpbmcKCWZ1bmN0aW9uIGlzIG5vdCBjaGFuZ2VkLgoKCSogY2FsbC5jIChidWlsZF9vdmVyX2NhbGwpOiBNb3ZlIHNldHRpbmcgb2YgY29udiBpbnRvIHRoZSBsb29wLgoJTm90ZTogdGhpcyBjaGFuZ2UsIGFsb25nIHdpdGggdGhlIHJlbGF0ZWQgY2hhbmdlcyBvZiB0aGUgMTh0aCB0aHJ1Cgl0aGUgMjB0aCBvZiBBcHJpbCwgZml4IGFuIGluZmluaXRlIGxvb3AgcHJvYmxlbSBpbiBjb252ZXJzaW9ucy4KClN1biBBcHIgMjAgMTY6MjQ6MjkgMTk5NyAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogY2FsbC5jIChidWlsZF91c2VyX3R5cGVfY29udmVyc2lvbl8xKTogUmVhbGx5IGlnbm9yZSBydmFsdWUKCWNvbnZlcnNpb25zIHdoZW4gbG9va2luZyBmb3IgYSBSRUZFUkVOQ0VfVFlQRS4KCgkqIGN2dC5jIChidWlsZF91cF9yZWZlcmVuY2UpOiBFdmlzY2VyYXRlLCB1c2UgYnVpbGRfdW5hcnlfb3AuCgkqIGNwLXRyZWUuaCAoVFJFRV9SRUZFUkVOQ0VfRVhQUik6ICNpZiAwLgoJKiB0eXBlY2suYyAoZGVjYXlfY29udmVyc2lvbik6IERvbid0IHNldCBUUkVFX1JFRkVSRU5DRV9FWFBSLgoJKGJ1aWxkX3VuYXJ5X29wKTogTGlrZXdpc2UuCgkqIGNhbGwuYyAoYnVpbGRfb3Zlcl9jYWxsKTogU2VlIHRocm91Z2ggYSBDT05WRVJUX0VYUFIgYXJvdW5kIHRoZQoJQUREUl9FWFBSIGZvciBvbiBhIHRlbXBvcmFyeS4KCSogdHlwZWNrLmMgKGNfZXhwYW5kX3JldHVybik6IFNlZSB0aHJvdWdoIGEgQ09OVkVSVF9FWFBSIGFyb3VuZAoJdGhlIEFERFJfRVhQUiBmb3IgYSBsb2NhbCB2YXJpYWJsZS4KCkZyaSBBcHIgMTggMTI6MTE6MzMgMTk5NyAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogY2FsbC5jIChidWlsZF91c2VyX3R5cGVfY29udmVyc2lvbl8xKTogSWYgd2UncmUgdHJ5aW5nIHRvCgljb252ZXJ0IHRvIGEgUkVGRVJFTkNFX1RZUEUsIG9ubHkgY29uc2lkZXIgbHZhbHVlIGNvbnZlcnNpb25zLgoJKGJ1aWxkX25ld19mdW5jdGlvbl9jYWxsKTogUHJpbnQgY2FuZGlkYXRlcy4KCShpbXBsaWNpdF9jb252ZXJzaW9uKTogVHJ5IGEgdGVtcCBiaW5kaW5nIGlmIHRoZSBsdmFsdWUgY29udiBpcyBCQUQuCgkocmVmZXJlbmNlX2JpbmRpbmcpOiBCaW5kaW5nIGEgdGVtcG9yYXJ5IG9mIGEgcmVmZXJlbmNlLXJlbGF0ZWQgdHlwZQoJaXMgQkFELgoKVGh1IEFwciAxNyAxNDozNzoyMiAxOTk3ICBCcmVuZGFuIEtlaG9lICA8YnJlbmRhbkBsaXNhLmN5Z251cy5jb20+CgoJKiBpbmMvdHlwZWluZm8gKHR5cGVfaW5mbzo6YmVmb3JlKTogQWRkIGN2LXF1YWxpZmllci1zZXEuCgkqIHRpbmZvMi5jYyAodHlwZV9pbmZvOjpiZWZvcmUpOiBMaWtld2lzZS4KCk1vbiBBcHIgMTQgMTI6Mzg6MTcgMTk5NyAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogY2FsbC5jIChpbXBsaWNpdF9jb252ZXJzaW9uKTogT29wcy4KCkZyaSBBcHIgMTEgMDI6MTg6MzAgMTk5NyAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogY2FsbC5jIChpbXBsaWNpdF9jb252ZXJzaW9uKTogVHJ5IHRvIGZpbmQgYSByZWZlcmVuY2UgY29udmVyc2lvbgoJYmVmb3JlIGJpbmRpbmcgYSBjb25zdCByZWZlcmVuY2UgdG8gYSB0ZW1wb3JhcnkuCgpXZWQgQXByICAyIDEyOjUxOjM2IDE5OTcgIE1pa2UgU3R1bXAgIDxtcnNAY3lnbnVzLmNvbT4KCgkqIGV4Y2VwdGlvbi5jYyAoX19kZWZhdWx0X3VuZXhwZWN0ZWQpOiBDYWxsIHRlcm1pbmF0ZSBieSBkZWZhdWx0LAoJc28gdGhhdCBpZiB0aGUgdXNlciBvdmVycmlkZXMgdGVybWluYXRlLCB0aGUgY29ycmVjdCBmdW5jdGlvbiB3aWxsCgliZSBjYWxsZWQuCgpXZWQgTWFyIDE5IDE0OjE0OjQ1IDE5OTcgIE1pa2UgU3R1bXAgIDxtcnNAY3lnbnVzLmNvbT4KCgkqIHBhcnNlLnkgKGxlZnRfY3VybHkpOiBBdm9pZCB0cnlpbmcgdG8gdXNlIGFueSBmaWVsZHMgb2YKCWVycm9yX21hcmtfbm9kZSwgYXMgdGhlcmUgYXJlbid0IGFueS4KClRodSBNYXIgMTMgMTY6MzM6MjIgMTk5NyAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogbGV4LmMgKGRvX2lkZW50aWZpZXIpOiBBdm9pZCBicmVha2luZyBvbiBvdmVybG9hZGVkIG1ldGhvZHMKCWFzIGRlZmF1bHQgYXJndW1lbnRzLgoKV2VkIE1hciAxMiAxMzo1NToxMCAxOTk3ICBIYW5zLVBldGVyIE5pbHNzb24gIDxIYW5zLVBldGVyLk5pbHNzb25AYXhpcy5zZT4KCgkqIGNhbGwuYyAoYWRkX3RlbXBsYXRlX2NhbmRpZGF0ZSk6IEluaXRpYWxpemUgdGhlIHZhcmlhYmxlICJkdW1teSIuCgpNb24gTWFyIDEwIDE1OjEzOjE0IDE5OTcgIEJyZW5kYW4gS2Vob2UgIDxicmVuZGFuQGNhbnVjay5jeWdudXMuY29tPgoKCSogZGVjbC5jIChzdGFydF9kZWNsKTogTWFrZSBzdXJlIFRZUEUgaXNuJ3QgYW4gZXJyb3JfbWFya19ub2RlCgliZWZvcmUgd2UgdHJ5IHRvIHVzZSBUWVBFX1NJWkUgYW5kIFRSRUVfQ09OU1RBTlQgb24gaXQuCgpGcmkgTWFyICA3IDEzOjE5OjM2IDE5OTcgIEJyZW5kYW4gS2Vob2UgIDxicmVuZGFuQGxpc2EuY3lnbnVzLmNvbT4KCgkqIGNwLXRyZWUuaCAoY29tcF9wdHJfdHR5cGVzLCBtb3JlX3NwZWNpYWxpemVkKTogQWRkIGRlY2wuCgkoZGVidWdfYmluZm8pOiBEZWxldGUgZGVjbCwgbm90IG5lZWRlZC4KCgkqIHRyZWUuYyAoZm5hZGRyX2Zyb21fdnRhYmxlX2VudHJ5LCBmdW5jdGlvbl9hcmdfY2hhaW4sCglwcm9tb3Rlc190b19hZ2dyX3R5cGUpOiBEZWxldGUgZm5zLgoJKiBjcC10cmVlLmggKEZOQUREUl9GUk9NX1ZUQUJMRV9FTlRSWSwKCVNFVF9GTkFERFJfRlJPTV9WVEFCTEVfRU5UUlksIEZVTkNUSU9OX0FSR19DSEFJTiwKCVBST01PVEVTX1RPX0FHR1JfVFlQRSk6IERlbGV0ZSBhbHRlcm5hdGVzIHRvICNpZiAxLgoKCSogZGVjbC5jIChwZW5kaW5nX2ludmFsaWRfeHJlZnssX2ZpbGUsX2xpbmV9KTogRGVsZXRlIHVudXNlZCB2YXJzLgoKCSogZnJpZW5kLmMgKGlzX2ZyaWVuZF90eXBlKTogRGVsZXRlIGZuLgoJKiBjcC10cmVlLmggKGlzX2ZyaWVuZF90eXBlKTogRGVsZXRlIGRlY2wuCgoJKiBkZWNsLmMgKG9yaWdpbmFsX3Jlc3VsdF9ydHgsIGRvdWJsZV9mdHlwZV9kb3VibGUsCglkb3VibGVfZnR5cGVfZG91YmxlX2RvdWJsZSwgaW50X2Z0eXBlX2ludCwgbG9uZ19mdHlwZV9sb25nLAoJZmxvYXRfZnR5cGVfZmxvYXQsIGxkb3VibGVfZnR5cGVfbGRvdWJsZSwgbGFzdF9kdG9yX2luc24pOiBNYWtlIHN0YXRpYy4KCSogdHlwZWNrLmMgKG9yaWdpbmFsX3Jlc3VsdF9ydHgsIHdhcm5fc3ludGgpOiBEZWxldGUgZXh0ZXJuIGRlY2xzLgoKCSogZGVjbC5jIChwdXNoX292ZXJsb2FkZWRfZGVjbHssX3RvcF9sZXZlbH0pOiBNYWtlIHN0YXRpYywgYWRkaW5nCglmd2QgZGVjbHMuCgkqIGNwLXRyZWUuaCAocHVzaF9vdmVybG9hZGVkX2RlY2x7LF90b3BfbGV2ZWx9KTogRGVsZXRlIGRlY2xzLgoKCSogZGVjbC5jIChwdXNoZGVjbF9ub25jbGFzc19sZXZlbCk6ICNpZiAwLCB1bnVzZWQuCgkqIGNwLXRyZWUuaCAocHVzaGRlY2xfbm9uY2xhc3NfbGV2ZWwpOiAjaWYgMCBkZWNsLgoKCSogbGV4LmMgKHJlaW5pdF9sYW5nX3NwZWNpZmljKTogI2lmIDAsIHVudXNlZC4KCSogY3AtdHJlZS5oIChyZWluaXRfbGFuZ19zcGVjaWZpYyk6ICNpZiAwIGRlY2wuCgoJKiBkZWNsLmMgKHJldmVydF9zdGF0aWNfbWVtYmVyX2ZuKTogTWFrZSBzdGF0aWMsIGFkZGluZyBmd2QgZGVjbC4KCSogY3AtdHJlZS5oIChyZXZlcnRfc3RhdGljX21lbWJlcl9mbik6IERlbGV0ZSBkZWNsLgoKCSogY2xhc3MuYyAocm9vdF9sYW5nX2NvbnRleHRfcCk6IERlbGV0ZSBmbi4KCSogY3AtdHJlZS5oIChyb290X2xhbmdfY29udGV4dF9wKTogRGVsZXRlIGRlY2wuCgoJKiBkZWNsLmMgKHNldF9jdXJyZW50X2xldmVsX3RhZ3NfdHJhbnNwYXJlbmN5KTogI2lmIDAsIHVudXNlZC4KCSogY3AtdHJlZS5oIChzZXRfY3VycmVudF9sZXZlbF90YWdzX3RyYW5zcGFyZW5jeSk6ICNpZiAwIGRlY2wuCgoJKiBsZXguYyAoc2V0X3ZhcmRlY2xfaW50ZXJmYWNlX2luZm8pOiBNYWtlIHN0YXRpYy4KCSogY3AtdHJlZS5oIChzZXRfdmFyZGVjbF9pbnRlcmZhY2VfaW5mbyk6IERlbGV0ZSBkZWNsLgoKCSogY2FsbC5jIChmaW5kX3Njb3BlZF90eXBlKTogTWFrZSBzdGF0aWMuCgkqIGNwLXRyZWUuaCAoZmluZF9zY29wZWRfdHlwZSk6IERlbGV0ZSBkZWNsLgoKCSogc2VhcmNoLmMgKGNvbnZlcnRfcG9pbnRlcl90b192YmFzZSk6IE1ha2Ugc3RhdGljLgoJKiBjcC10cmVlLmggKGNvbnZlcnRfcG9pbnRlcl90b192YmFzZSk6IERlbGV0ZSBkZWNsLgoKCSogZGVjbC5jIChjb25zdF9wdHJfdHlwZV9ub2RlKTogTGlrZXdpc2UuCgkqIGNwLXRyZWUuaCAoY29uc3RfcHRyX3R5cGVfbm9kZSk6IERlbGV0ZSBkZWNsLgoKCSogdHlwZWNrLmMgKGNvbW1vbl9iYXNlX3R5cGUpOiBNYWtlIHN0YXRpYy4KCSogY3AtdHJlZS5oIChjb21tb25fYmFzZV90eXBlcyk6IERlbGV0ZSBlcnJvbmVvdXMgZGVjbC4KCgkqIHB0LmMgKGNsYXNzdHlwZV9tYW5nbGVkX25hbWUpOiBNYWtlIHN0YXRpYy4KCSogY3AtdHJlZS5oIChjbGFzc3R5cGVfbWFuZ2xlZF9uYW1lKTogRGVsZXRlIGRlY2wuCgoJKiBsZXguYyAoY2hlY2tfbmV3bGluZSk6IE1ha2Ugc3RhdGljLgoJKiBjcC10cmVlLmggKGNoZWNrX25ld2xpbmUpOiBEZWxldGUgZGVjbC4KCgkqIHR5cGVjay5jIChidWlsZF94X2FycmF5X3JlZik6IERlbGV0ZSBmbiwgc2FtZSBpZGVhIGFzCglncm9rX2FycmF5X2RlY2wuCgkqIGNwLXRyZWUuaCAoYnVpbGRfeF9hcnJheV9yZWYpOiBEZWxldGUgZGVjbC4KCgkqIGxleC5jIChjb3B5X2RlY2xfbGFuZ19zcGVjaWZpYyk6IERlbGV0ZSBmbiwgc2FtZSBpZGVhIGFzCgljb3B5X2xhbmdfZGVjbC4KCSogY3AtdHJlZS5oIChjb3B5X2RlY2xfbGFuZ19zcGVjaWZpYyk6ICNpZiAwIGRlY2wuCgoJKiBjbGFzcy5jIChidWlsZF92dGFibGVfZW50cnkpOiBNYWtlIHN0YXRpYy4KCSogY3AtdHJlZS5oIChidWlsZF92dGFibGVfZW50cnkpOiBEZWxldGUgZGVjbC4KCgkqIGNsYXNzLmMgKGJ1aWxkX3ZiYXNlX3BvaW50ZXIpOiBNYWtlIHN0YXRpYy4KCSogY3AtdHJlZS5oIChidWlsZF92YmFzZV9wb2ludGVyKTogRGVsZXRlIGRlY2wuCgoJKiBzaWcuYyAoYnVpbGRfc3B0cl9yZWYpOiBBZGQgZm9yd2FyZCBkZWNsIGFuZCBtYWtlIHN0YXRpYy4KCSogY3AtdHJlZS5oIChidWlsZF9zcHRyX3JlZik6IERlbGV0ZSBkZWNsLgoKCSogY2FsbC5jIChidWlsZF9uZXdfbWV0aG9kX2NhbGwpOiBBZGQgZm9yd2FyZCBkZWNsIGFuZCBtYWtlIHN0YXRpYy4KCSogY3AtdHJlZS5oIChidWlsZF9uZXdfbWV0aG9kX2NhbGwpOiBEZWxldGUgZGVjbC4KCgkqIGNhbGwuYyAoYnVpbGRfb2JqZWN0X2NhbGwpOiBNYWtlIHN0YXRpYy4KCSogY2xhc3MuYyAoY2hlY2tfZm9yX292ZXJyaWRlLCBjb21wbGV0ZV90eXBlX3AsIG1hcmtfb3ZlcnJpZGVycyk6CglMaWtld2lzZS4KCSogZGVjbC5jIChjcF9mdW5jdGlvbl9jaGFpbik6IExpa2V3aXNlLgoJKiBsZXguYyAoc2V0X3R5cGVkZWNsX2ludGVyZmFjZV9pbmZvLCByZWluaXRfcGFyc2VfZm9yX2Jsb2NrKToKCUxpa2V3aXNlLgoJKiBwdC5jIChjb21wX3RlbXBsYXRlX2FyZ3MsIGdldF9jbGFzc19iaW5kaW5ncywgcHVzaF90aW5zdF9sZXZlbCk6CglMaWtld2lzZS4KCSogdHJlZS5jIChidWlsZF9jcGx1c19hcnJheV90eXBlXzEpOiBMaWtld2lzZS4KCSogdHlwZWNrLmMgKGNvbXBfcHRyX3R0eXBlc197Y29uc3QscmVhbCxyZWludGVycHJldH0pOiBMaWtld2lzZS4KCShjb21wX3RhcmdldF9wYXJtcyk6IExpa2V3aXNlLgoKCSogaW5pdC5jIChidWlsZF9idWlsdGluX2NhbGwpOiBNYWtlIHN0YXRpYy4KCSogY3AtdHJlZS5oIChidWlsZF9idWlsdGluX2NhbGwpOiBEZWxldGUgZGVjbC4KCgkqIHR5cGVjay5jIChiaW5hcnlfb3BfZXJyb3IpOiBEZWxldGUgZGVjbC4KCSogY3AtdHJlZS5oIChiaW5hcnlfb3BfZXJyb3IpOiBMaWtld2lzZS4KClRodSBNYXIgIDYgMTY6MTM6NTIgMTk5NyAgQnJlbmRhbiBLZWhvZSAgPGJyZW5kYW5AbGlzYS5jeWdudXMuY29tPgoKCSogY2FsbC5jIChidWlsZF9tZXRob2RfY2FsbCk6IENvbXBhcmUgYWdhaW5zdCBlcnJvcl9tYXJrX25vZGUKCWRpcmVjdGx5LCByYXRoZXIgdGhhbiB0aGUgRVJST1JfTUFSSyB0cmVlIGNvZGUuCgkqIGN2dC5jIChjcF9jb252ZXJ0KTogTGlrZXdpc2UuCgkqIGRlY2wuYyAocHJpbnRfYmluZGluZ19sZXZlbCk6IExpa2V3aXNlLgoJKGR1cGxpY2F0ZV9kZWNscyk6IExpa2V3aXNlLgoJKGdyb2tkZWNsYXJhdG9yKTogTGlrZXdpc2UuCgkoZ3Jva2RlY2xhcmF0b3IpOiBMaWtld2lzZS4KCSogaW5pdC5jIChleHBhbmRfYWdncl9pbml0XzEpOiBMaWtld2lzZS4KCShkZWNsX2NvbnN0YW50X3ZhbHVlKTogTGlrZXdpc2UuCgkqIG1ldGhvZC5jIChidWlsZF9vcGZuY2FsbCk6IExpa2V3aXNlLgoJKGhhY2tfaWRlbnRpZmllcik6IExpa2V3aXNlLgoJKiB0eXBlY2suYyAoYnVpbGRfbW9kaWZ5X2V4cHIpOiBMaWtld2lzZS4KCgkqIHR5cGVjay5jIChidWlsZF9jX2Nhc3QpOiBEb24ndCBkZWNsIFRZUEUgYXMgcmVnaXN0ZXIgdHJlZS4KClN1biBNYXIgIDIgMDI6NTQ6MzYgMTk5NyAgQnJ1bm8gSGFpYmxlICA8YnJ1bm9AbGludWl4Lm1hdGhlbWF0aWsudW5pLWthcmxzcnVoZS5kZT4KCgkqIHB0LmMgKHVuaWZ5KTogU3RyaXAgTk9QX0VYUFIgd3JhcHBlcnMgYmVmb3JlIHVuaWZ5aW5nIGludGVnZXIgdmFsdWVzLgoKCSogcHQuYyAoY29lcmNlX3RlbXBsYXRlX3Bhcm1zKTogQWRkIG5ldyBlcnJvciBtZXNzYWdlLgoKCSogbWV0aG9kLmMgKGJ1aWxkX292ZXJsb2FkX3ZhbHVlKTogSW1wbGVtZW50IG5hbWUgbWFuZ2xpbmcgZm9yCglmbG9hdGluZy1wb2ludCB0ZW1wbGF0ZSBhcmd1bWVudHMuCgoJKiBtZXRob2QuYyAoYnVpbGRfb3ZlcmxvYWRfaW50LCBpY2F0LCBkaWNhdCk6IEZpeCBtYW5nbGluZyBvZiB0ZW1wbGF0ZQoJYXJndW1lbnRzIHdob3NlIGFic29sdXRlIHZhbHVlIGRvZXNuJ3QgZml0IGluIGEgc2lnbmVkIHdvcmQuCgpNb24gTWFyICAzIDEyOjE0OjU0IDE5OTcgIEJyZW5kYW4gS2Vob2UgIDxicmVuZGFuQGxpc2EuY3lnbnVzLmNvbT4KCgkqIGZyaWVuZC5jOiBOZXcgZmlsZTsgcHV0IGFsbCBvZiB0aGUgZnJpZW5kIHN0dWZmIGluIGhlcmUuCgkqIGluaXQuYzogSW5zdGVhZCBvZiBoZXJlLgoJKiBNYWtlZmlsZS5pbiAoQ1hYX09CSlMpOiBBZGQgZnJpZW5kLm8uCgkoZnJpZW5kLm8pOiBBZGQgZGVwZW5kZW5jaWVzLgoJKiBNYWtlLWxhbmcuaW4gKENYWF9TUkNTKTogQWRkICQoc3JjZGlyKS9jcC9mcmllbmQuYy4KClN1biBNYXIgIDIgMTE6MDQ6NDMgMTk5NyAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogY2FsbC5jIChidWlsZF9zY29wZWRfbWV0aG9kX2NhbGwpOiBDb21wbGFpbiBpZiB0aGUgc2NvcGUgaXNuJ3QgYQoJYmFzZS4KCldlZCBGZWIgMjYgMTE6MzE6MDYgMTk5NyAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogcGFyc2UueSAobGVmdF9jdXJseSk6IERvbid0IGNyYXNoIG9uIGVycm9uZW91cyB0eXBlLgoKCSogaW5pdC5jIChidWlsZF9kZWxldGUpOiBGaXggdHlwZSBvZiByZWYuCgpUdWUgRmViIDI1IDEyOjQxOjQ4IDE5OTcgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIHNlYXJjaC5jIChnZXRfdmJhc2VfMSk6IFJlbmFtZWQgZnJvbSBnZXRfdmJhc2UuCgkoZ2V0X3ZiYXNlKTogV3JhcHBlciwgbm93IG5vbi1zdGF0aWMuCgkoY29udmVydF9wb2ludGVyX3RvX3ZiYXNlKTogTm93IHN0YXRpYy4KCgkqIGNhbGwuYyAoYnVpbGRfc2NvcGVkX21ldGhvZF9jYWxsKTogQWNjZXB0IGEgYmluZm8gZm9yIEJBU0VUWVBFLgoJKiBpbml0LmMgKGJ1aWxkX2RlbGV0ZSk6IFBhc3Mgb25lLgoJKGJ1aWxkX3BhcnRpYWxfY2xlYW51cF9mb3IpOiBVc2UgYnVpbGRfc2NvcGVkX21ldGhvZF9jYWxsLgoJKiBkZWNsLmMgKGZpbmlzaF9mdW5jdGlvbik6IFBhc3MgYSBiaW5mby4KCk1vbiBGZWIgMjQgMTU6MDA6MTIgMTk5NyAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogY2FsbC5jIChidWlsZF9vdmVyX2NhbGwpOiBPbmx5IHN5bnRoZXNpemUgbm9uLXRyaXZpYWwgY29weSBjdG9ycy4KCgkqIHR5cGVjay5jIChidWlsZF9jX2Nhc3QpOiBMb3NlIG90aGVyIHJlZmVyZW5jZSB0byBmbGFnLgoKCSogY2FsbC5jIChidWlsZF9maWVsZF9jYWxsKTogRG9uJ3QgbG9vayBmb3IgW2NkXXRvcl9pZGVudGlmaWVyLgoJKiBkZWNsMi5jIChkZWxldGVfc2FuaXR5KTogUmVtb3ZlIG1lYW5pbmdsZXNzIHVzZSBvZgoJTE9PS1VQX0hBU19JTl9DSEFSR0UuCgkqIGRlY2wuYyAoZmluaXNoX2Z1bmN0aW9uKTogVXNlIGJ1aWxkX3Njb3BlZF9tZXRob2RfY2FsbCBpbnN0ZWFkCglvZiBidWlsZF9kZWxldGUgZm9yIHJ1bm5pbmcgdmJhc2UgZHRvcnMuCgkqIGluaXQuYyAoYnVpbGRfZGVsZXRlKTogQ2FsbCBvdmVybG9hZCByZXNvbHV0aW9uIGNvZGUgaW5zdGVhZCBvZgoJZHVwbGljYXRpbmcgaXQgYmFkbHkuCgpUaHUgRmViIDIwIDE1OjEyOjE1IDE5OTcgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIGNhbGwuYyAoYnVpbGRfb3Zlcl9jYWxsKTogQ2FsbCBtYXJrX3VzZWQgYmVmb3JlIHRyeWluZyB0byBlbGlkZQoJdGhlIGNhbGwuCgoJKiBkZWNsLmMgKGltcGxpY2l0bHlfZGVjbGFyZSk6IERvbid0IHNldCBERUNMX0FSVElGSUNJQUwuCgpXZWQgRmViIDE5IDExOjE4OjUzIDE5OTcgIEJyZW5kYW4gS2Vob2UgIDxicmVuZGFuQGxpc2EuY3lnbnVzLmNvbT4KCgkqIHR5cGVjay5jIChidWlsZF9tb2RpZnlfZXhwcik6IEFsd2F5cyBwZWR3YXJuIGZvciBhIGNhc3QgdG8KCW5vbi1yZWZlcmVuY2UgdXNlZCBhcyBhbiBsdmFsdWUuCgpXZWQgRmViIDE5IDEwOjM1OjM3IDE5OTcgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIGN2dC5jIChjcF9jb252ZXJ0X3RvX3BvaW50ZXIpOiBDb252ZXJ0IGZyb20gMCB0byBhIHBtZiBwcm9wZXJseS4KClR1ZSBGZWIgMTggMTU6NDA6NTcgMTk5NyAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogcGFyc2UueSAoaGFuZGxlcik6IEZpeCB0ZW1wbGF0ZSB0eXBvLgoKU3VuIEZlYiAxNiAwMjoxMjoyOCAxOTk3ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBlcnJvci5jIChsYW5nX2RlY2xfbmFtZSk6IE5ldyBmbi4KCSogdHJlZS5jIChsYW5nX3ByaW50YWJsZV9uYW1lKTogVXNlIGl0LgoKRnJpIEZlYiAxNCAxNjo1NzowNSAxOTk3ICBNaWtlIFN0dW1wICA8bXJzQGN5Z251cy5jb20+CgoJKiBnKytzcGVjLmM6IEluY2x1ZGUgY29uZmlnLmggc28gdGhhdCB3ZSBjYW4gY2F0Y2ggYnplcm8gI2RlZmluZXMKCWZyb20gdGhlIGNvbmZpZyBmaWxlLgoKVHVlIEZlYiAxMSAxMzo1MDo0OCAxOTk3ICBNaWtlIFN0dW1wICA8bXJzQGN5Z251cy5jb20+CgoJKiBuZXcxLmNjOiBJbmNsdWRlIGEgZGVjbGFyYXRpb24gZm9yIG1hbGxvYywgdG8gYXZvaWQgd2FybmluZywgYW5kCglhdm9pZCBsb3NzaW5nIG9uIHN5c3RlbXMgdGhhdCByZXF1aXJlIG9uZSAob25lcyB0aGF0IGRlZmluZSBtYWxsb2MKCWluIHhtLmgpLgoKTW9uIEZlYiAxMCAyMjo1MToxMyAxOTk3ICBCcnVubyBIYWlibGUgIDxicnVub0BsaW51aXgubWF0aGVtYXRpay51bmkta2FybHNydWhlLmRlPgoKCSogZGVjbDIuYyAobWF4X3RpbnN0X2RlcHRoKTogTmV3IHZhcmlhYmxlLgoJKGxhbmdfZGVjb2RlX29wdGlvbik6IFBhcnNlICItZnRlbXBsYXRlLWRlcHRoLU5OIiBjb21tYW5kIGxpbmUKCW9wdGlvbi4KCSogcHQuYyAobWF4X3RpbnN0X2RlcHRoKTogVmFyaWFibGUgbW92ZWQuCgkqIGxhbmctb3B0aW9ucy5oOiBEZWNsYXJlICItZnRlbXBsYXRlLWRlcHRoLU5OIiBjb21tYW5kIGxpbmUgb3B0aW9uCglhcyBsZWdhbC4KCkZyaSBGZWIgIDcgMTU6NDM6MzQgMTk5NyAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogZGVjbC5jICh4cmVmX2Jhc2V0eXBlcyk6IEFsbG93IGEgYmFzZSBjbGFzcyB0aGF0IGRlcGVuZHMgb24KCXRlbXBsYXRlIHBhcm1zIHRvIGJlIGluY29tcGxldGUuCgoJKiBkZWNsMi5jIChidWlsZF9leHByX2Zyb21fdHJlZSk6IFN1cHBvcnQgdHlwZWlkKHR5cGUpLgoJKiBydHRpLmMgKGdldF90eXBlaWQpOiBTdXBwb3J0IHRlbXBsYXRlcy4KCShleHBhbmRfc2lfZGVzYywgZXhwYW5kX2NsYXNzX2Rlc2MpOiBGaXggc3RyaW5nIGxlbmd0aC4KCShleHBhbmRfcHRyX2Rlc2MsIGV4cGFuZF9hdHRyX2Rlc2MsIGV4cGFuZF9nZW5lcmljX2Rlc2MpOiBMaWtld2lzZS4KClR1ZSBGZWIgIDQgMTE6Mjg6MjQgMTk5NyAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogcHQuYyAodW5pZnksIGNhc2UgVEVNUExBVEVfQ09OU1RfUEFSTSk6IFVzZSBjcF90cmVlX2VxdWFsLgoKCSogcHQuYyAodHN1YnN0KTogUHV0IGl0IGJhY2sgZm9yIC1mbm8tYW5zaS1vdmVybG9hZGluZy4KCk1vbiBGZWIgIDMgMTg6NDE6MTIgMTk5NyAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogcHQuYyAodHN1YnN0LCBjYXNlIEZVTkNUSU9OX0RFQ0wpOiBMb3NlIG9ic29sZXRlIGNvZGUgdGhhdAoJc21hc2hlcyB0b2dldGhlciB0ZW1wbGF0ZSBhbmQgbm9uLXRlbXBsYXRlIGRlY2xzIG9mIHRoZSBzYW1lCglzaWduYXR1cmUuCgpUaHUgSmFuIDMwIDE5OjE4OjAwIDE5OTcgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIHB0LmMgKHRzdWJzdCk6IERvbid0IHJlY3Vyc2UgZm9yIHRoZSB0eXBlIG9mIGEgVFlQRU5BTUVfVFlQRS4KCldlZCBKYW4gMjkgMTE6NDA6MzUgMTk5NyAgQnJlbmRhbiBLZWhvZSAgPGJyZW5kYW5AbGlzYS5jeWdudXMuY29tPgoKCSogZGVjbC5jIChkdXBsaWNhdGVfZGVjbHMpOiBOZXh0IHJvdXRlLCBwZWR3YXJuIGFib3V0IGRpZmZlcmVudAoJZXhjZXB0aW9ucyBpZiAtcGVkYW50aWMgKm9yKiBvbGRkZWNsICFERUNMX0lOX1NZU1RFTV9IRUFERVIuCgpUdWUgSmFuIDI4IDIwOjQzOjI5IDE5OTcgIEJyZW5kYW4gS2Vob2UgIDxicmVuZGFuQGxpc2EuY3lnbnVzLmNvbT4KCgkqIGNwLXRyZWUuaCAoSEFTX0RFRkFVTFRfSU1QTEVNRU5UQVRJT04pOiBEZWxldGUgbWFjcm8uCgkoc3RydWN0IGxhbmdfdHlwZSk6IERlbGV0ZSBoYXNfZGVmYXVsdF9pbXBsZW1lbnRhdGlvbiBtZW1iZXIuCglJbmNyZWFzZSBkdW1teSB0byAyMS4KCSogZGVjbC5jIChzdGFydF9tZXRob2QpOiBEZWxldGUgdXNhZ2UuCgoJKiBjcC10cmVlLmggKGJ1aWxkX2NhbGwsIG51bGxfcHRyX2NzdF9wLCBpbl9mdW5jdGlvbl9wLAoJc3RvcmVfYWZ0ZXJfcGFybXMsIHN0YXJ0X2RlY2xfMSwgYXV0b19mdW5jdGlvbik6IEFkZCBkZWNscy4KCShnZXRfYXJnbGlzdF9sZW5faW5fYnl0ZXMsIGRlY2xhcmVfaW1wbGljaXRfZXhjZXB0aW9uLAoJaGF2ZV9leGNlcHRpb25zX3AsIG1ha2VfdHlwZV9kZWNsLCB0eXBlZGVjbF9mb3JfdGFnLAoJc3RvcmVfaW5fcGFybXMsIHBvcF9pbXBsaWNpdF90cnlfYmxvY2tzLCBwdXNoX2V4Y2VwdGlvbl9jbGVhbnVwLAoJYnVpbGRfY29tcG9uZW50X3R5cGVfZXhwciwgY3BsdXNfZXhjZXB0aW9uX25hbWUsCgl7bWFrZSxjbGVhcn1fYW5vbl9wYXJtX25hbWUsIGRvbnRfc2VlX3R5cGVuYW1lKTogUmVtb3ZlZCBkZWNscy4KCSogY2FsbC5jIChidWlsZF90aGlzKTogTWFrZSBzdGF0aWMuCgkoaXNfY29tcGxldGUpOiBMaWtld2lzZS4KCShpbXBsaWNpdF9jb252ZXJzaW9uKTogTGlrZXdpc2UuCgkocmVmZXJlbmNlX2JpbmRpbmcpOiBMaWtld2lzZS4KCShzdGFuZGFyZF9jb252ZXJzaW9uKTogTGlrZXdpc2UuCgkoc3RyaXBfdG9wX3F1YWxzKTogTGlrZXdpc2UuCgkobm9uX3JlZmVyZW5jZSk6IExpa2V3aXNlLgoJKGJ1aWxkX2NvbnYpOiBMaWtld2lzZS4KCSh1c2VyX2hhcnNobmVzcyk6IExpa2V3aXNlLgoJKHJhbmtfZm9yX2lkZWFsKTogTGlrZXdpc2UuCgkqIGRlY2wuYyAoc3RhcnRfZGVjbF8xKTogRGVsZXRlIGZvcndhcmQgZGVjbC4KCShwdXNoX2RlY2xfbGV2ZWwpOiBNYWtlIHN0YXRpYy4KCShyZXN1bWVfYmluZGluZ19sZXZlbCk6IE1ha2Ugc3RhdGljLgoJKG5hbWVzcGFjZV9iaW5kaW5nc19wKTogTWFrZSBzdGF0aWMuCgkoZGVjbGFyZV9uYW1lc3BhY2VfbGV2ZWwpOiBNYWtlIHN0YXRpYy4KCShsb29rdXBfbmFtZV9yZWFsKTogTWFrZSBzdGF0aWMuCgkoZHVwbGljYXRlX2RlY2xzKTogTWFrZSBzdGF0aWMuICBUYWtlIHJlZ2lzdGVyIG9mZiBORVdERUNMIGFuZAoJT0xEREVDTCBwYXJtIGRlY2xzLgoJKiBkZWNsMi5jIChnZXRfc2VudHJ5KTogTWFrZSBzdGF0aWMuCgkodGVtcF9uYW1lX3ApOiBEZWxldGUgZm4uCgkqIGV4Y2VwdC5jIChhdXRvX2Z1bmN0aW9uKTogRGVsZXRlIGRlY2wuCgkqIGxleC5jIChoYW5kbGVfe2NwLHN5c3Z9X3ByYWdtYSk6IE1ha2Ugc3RhdGljLgoJKGhhbmRsZV9zeXN2X3ByYWdtYSkgW0hBTkRMRV9TWVNWX1BSQUdNQV06IEFkZCBmb3J3YXJkIGRlY2wuCgkqIG1ldGhvZC5jIChkb19idWlsZF97Y29weV9jb25zdHJ1Y3Rvcixhc3NpZ25fcmVmfSk6IE1ha2Ugc3RhdGljLgoJKiBwdC5jICh0c3Vic3RfZXhwcl92YWx1ZXMpOiBNYWtlIHN0YXRpYy4KCSogcnR0aS5jIChjb21iaW5lX3N0cmluZ3MpOiBEZWxldGUgZGVjbC4KClR1ZSBKYW4gMjggMTY6NDA6NDAgMTk5NyAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogcHQuYyAocHVzaF90ZW1wbGF0ZV9kZWNsKTogSGFuZGxlIGdldHRpbmcgYSB0eXBlZGVmLgoKCSogY2FsbC5jIChidWlsZF9uZXdfZnVuY3Rpb25fY2FsbCk6IENvbXBsYWluIGFib3V0IHZvaWQgYXJnLgoKVHVlIEphbiAyOCAxNToyNTowOSAxOTk3ICBCcmVuZGFuIEtlaG9lICA8YnJlbmRhbkBsaXNhLmN5Z251cy5jb20+CgoJKiBkZWNsLmMgKGR1cGxpY2F0ZV9kZWNscyk6IEdpdmUgcGVkd2FybiBvZiBkaWZmZXJlbnQgZXhjZXB0aW9ucwoJaWYgLXBlZGFudGljLCBpbnN0ZWFkIG9mIG9sZGRlY2wgIURFQ0xfSU5fU1lTVEVNX0hFQURFUi4KCk1vbiBKYW4gMjcgMTk6MjE6MjkgMTk5NyAgTWlrZSBTdHVtcCAgPG1yc0BjeWdudXMuY29tPgoKCSogZXhjZXB0LmMgKGV4cGFuZF90aHJvdyk6IERvbid0IGV4cGFuZCB0aGUgY2xlYW51cCB0cmVlIGhlcmUsCglzaW5jZSB3ZSBhcmUgbm90IGdvaW5nIHRvIHdyaXRlIHRoZSBydGwgb3V0LiAgRml4ZXMgcHJvYmxlbSB3aXRoCgktZyAtTyBvbiBTUEFSQy4KCk1vbiBKYW4gMjcgMTY6MjQ6MzUgMTk5NyAgU2VhbiBNY05laWwgIDxzZWFuQG1jbmVpbC5jb20+CgoJKiBNYWtlLWxhbmcuaW46IEFkZCAkKGV4ZWV4dCkgYXMgbmVjZXNzYXJ5LgoKTW9uIEphbiAyNyAxMzoyMDozOSAxOTk3ICBNaWtlIFN0dW1wICA8bXJzQGN5Z251cy5jb20+CgoJKiBwYXJzZS55IChoYW5kbGVyX3NlcSk6IE11c3QgaGF2ZSBhdCBsZWFzdCBvbmUgY2F0Y2ggY2xhdXNlLgoKU2F0IEphbiAyNSAxMjowMDowNSAxOTk3ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBjYWxsLmMgKGFkZF9idWlsdGluX2NhbmRpZGF0ZSk6IFJlc3RvcmUgPzogaGFjay4KCgkqIGRlY2wuYyAoZ3Jva19vcF9wcm9wZXJ0aWVzKTogTW9yZSB3YXJuaW5ncy4KClNhdCBKYW4gMjUgMDg6NTA6MDMgMTk5NyAgQnJlbmRhbiBLZWhvZSAgPGJyZW5kYW5AbGlzYS5jeWdudXMuY29tPgoKCSogZGVjbC5jIChkdXBsaWNhdGVfZGVjbHMpOiBPbiBzZWNvbmQgdGhvdWdodCwgZG8gaXQgYXMgYSBwZWR3YXJuCglzdGlsbCBidXQgb25seSBpZiAhREVDTF9JTl9TWVNURU1fSEVBREVSIChvbGRkZWNsKS4KCgkqIGRlY2wuYyAoZHVwbGljYXRlX2RlY2xzKTogU2NhbGUgYmFjayB0byBhIHdhcm5pbmcsIGFuZCBvbmx5IGRvCgknZW0gaWYgLXBlZGFudGljLgoKRnJpIEphbiAyNCAxNzo1Mjo1NCAxOTk3ICBNaWtlIFN0dW1wICA8bXJzQGN5Z251cy5jb20+CgoJKiBkZWNsLmMgKGR1cGxpY2F0ZV9kZWNscyk6IHBlZHdhcm4gbWlzbWF0Y2hlZCBleGNlcHRpb24KCXNwZWNpZmljYXRpb25zLgoKVGh1IEphbiAyMyAxODoxODo1NCAxOTk3ICBNaWtlIFN0dW1wICA8bXJzQGN5Z251cy5jb20+CgoJKiBjYWxsLmMgKGJ1aWxkX25ld19tZXRob2RfY2FsbCk6IERvbid0IGRpc3BsYXkgdGhlIGludmlzaWJsZQoJYXJndW1lbnQgZm9yIGNvbnRyb2xsaW5nIHZpcnR1YWwgYmFzZXMuCgpUaHUgSmFuIDIzIDE2OjQ4OjEwIDE5OTcgIE1pa2UgU3R1bXAgIDxtcnNAY3lnbnVzLmNvbT4KCgkqIG5ldzogQWRkIG5vdGhyb3cgbmV3IGFuZCBkZWxldGUsIGJhZF9hbGxvYyBhbmQgdGhyb3cgc3BlY2lmaWNhdGlvbnMKCWZvciBkZWxldGUuCgkqIGRlY2wuYyAoaW5pdF9kZWNsX3Byb2Nlc3NpbmcpOiBBZGQgdGhyb3cgc3BlY2lmaWNhdGlvbiBmb3IgZGVsZXRlLgoJKiBuZXcuY2MgKG5vdGhyb3cpOiBEZWZpbmUuCgkqIGxleC5jIChyZWFsX3l5bGV4KTogUmVtb3Zpbmcgd2FybmluZyB0aGF0IHRocm93IGFuZCBmcmllbmRzIGFyZQoJa2V5d29yZHMuCgkqIG5ldzEuY2MgKG9wZXJhdG9yIG5ldyAoc2l6ZV90IHN6LCBjb25zdCBub3Rocm93X3QmKSk6IERlZmluZS4KCSogbmV3Mi5jYyAob3BlcmF0b3IgbmV3W10gKHNpemVfdCBzeiwgY29uc3Qgbm90aHJvd190Jik6IERlZmluZS4KCSogTWFrZS1sYW5nLmluOiBBZGQgbmV3ezEsMn0ue2NjLG99LgoKVGh1IEphbiAyMyAxNjozOTowNiAxOTk3ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBsZXguYyAoY29uc191cF9kZWZhdWx0X2Z1bmN0aW9uKTogRml4IHJldHVybiB0eXBlIG9mIHN5bnRoIG9wPS4KCgkqIGluaXQuYyAoZW1pdF9iYXNlX2luaXQpOiBBZGQgd2FybmluZ3MgZm9yIHVuaW5pdGlhbGl6ZWQgbWVtYmVycwoJYW5kIGJhc2VzLgoKCSogZGVjbC5jICh4cmVmX2Jhc2V0eXBlcyk6IEFkZCB3YXJuaW5nIGZvciBub24tcG9seW1vcnBoaWMgdHlwZQoJd2l0aCBkZXN0cnVjdG9yIHVzZWQgYXMgYmFzZSB0eXBlLgoKCSogZGVjbC5jIChncm9rX29wX3Byb3BlcnRpZXMpOiBBZGQgd2FybmluZyBmb3Igb3A9IHJldHVybmluZyB2b2lkLgoJKiB0eXBlY2suYyAoY19leHBhbmRfcmV0dXJuKTogQWRkIHdhcm5pbmcgZm9yIG9wPSByZXR1cm5pbmcgYW55dGhpbmcKCW90aGVyIHRoYW4gKnRoaXMuCgoJKiBjbGFzcy5jIChmaW5pc2hfc3RydWN0XzEpOiBBZGQgd2FybmluZyBmb3IgY2xhc3Mgd2l0aCBwb2ludGVycwoJYnV0IG5vdCBjb3B5IGN0b3Igb3IgY29weSBvcD0uCgoJKiBjcC10cmVlLmggKFRJX1BFTkRJTkdfVEVNUExBVEVfRkxBRyk6IE5ldyBtYWNyby4KCSogcHQuYyAoYWRkX3BlbmRpbmdfdGVtcGxhdGUpOiBVc2UgaXQgaW5zdGVhZCBvZiBMQU5HX0ZMQUdfMC4KCShpbnN0YW50aWF0ZV90ZW1wbGF0ZSk6IElmIC1mZXh0ZXJuYWwtdGVtcGxhdGVzLCBhZGQgdGhpcwoJaW5zdGFudGlhdGlvbiB0byBwZW5kaW5nX3RlbXBsYXRlcy4KCgkqIGRlY2wyLmMgKGNvcHlfYXNzaWdubWVudF9hcmdfcCk6IERpc2FibGUgb2xkIGhhY2sgdG8gc3VwcG9ydAoJQm9vY2ggY29tcG9uZW50cy4KClR1ZSBKYW4gMjEgMTg6MzI6MDQgMTk5NyAgTWlrZSBTdHVtcCAgPG1yc0BjeWdudXMuY29tPgoKCSogY3Z0LmMgKGNwX2NvbnZlcnQpOiBwZWR3YXJuIGVudW0gdG8gcG9pbnRlciBjb252ZXJzaW9ucy4KCk1vbiBKYW4gMjAgMTc6NTk6NTEgMTk5NyAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogY2FsbC5jIChzdGFuZGFyZF9jb252ZXJzaW9uKTogSGFuZGxlIGdldHRpbmcgcmVmZXJlbmNlcy4gIFRhY2sKCW9uIFJWQUxVRV9DT05WIGhlcmUuICBEbyBpdCBmb3Igbm9uLWNsYXNzIHR5cGVzLCB0b28uCgkocmVmZXJlbmNlX2JpbmRpbmcpOiBQYXNzIHJlZmVyZW5jZXMgdG8gc3RhbmRhcmRfY29udmVyc2lvbi4KCShpbXBsaWNpdF9jb252ZXJzaW9uKTogTGlrZXdpc2UuCgkoYWRkX2J1aWx0aW5fY2FuZGlkYXRlKTogRGlzYWJsZSBvbmUgPzoga2x1ZGdlLgoJKGNvbnZlcnRfbGlrZSk6IEhhbmRsZSBSVkFMVUVfQ09OVnMgZm9yIG5vbi1jbGFzcyB0eXBlcy4KCShqb3VzdCk6IERpc2FibGUgdGhlIG90aGVyID86IGtsdWRnZS4KCk1vbiBKYW4gMjAgMTQ6NTM6MTMgMTk5NyAgQnJlbmRhbiBLZWhvZSAgPGJyZW5kYW5AbGlzYS5jeWdudXMuY29tPgoKCSogZGVjbC5jIChpbml0X2RlY2xfcHJvY2Vzc2luZyk6IEFkZCBjb2RlIHRvIGJ1aWxkIHVwIGNvbW1vbgoJZnVuY3Rpb24gdHlwZXMgYmVmb3JlaGFuZCwgdG8gYXZvaWQgY3JlYXRpb24gdGhlbiByZW1vdmFsIG9mCgl0aGluZ3MgYWxyZWFkeSBpbiB0aGUgaGFzaCB0YWJsZS4KCk1vbiBKYW4gMjAgMTQ6NDM6NDkgMTk5NyAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogZGVjbC5jIChmaW5pc2hfZnVuY3Rpb24pOiBBbHNvIHplcm8gb3V0IERFQ0xfSU5DT01JTkdfUlRMIGZvcgoJdGhlIGFyZ3VtZW50cy4KCgkqIGVycm9yLmMgKGR1bXBfZXhwciwgVEVNUExBVEVfQ09OU1RfUEFSTSk6IERvbid0IHJlcXVpcmUKCWN1cnJlbnRfdGVtcGxhdGVfcGFybXMuCgpGcmkgSmFuIDE3IDEwOjI1OjQyIDE5OTcgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIHNlYXJjaC5jIChsb29rdXBfZmllbGQpOiBEb24ndCByZXR1cm4gYSBmdW5jdGlvbiwgY2hlY2sgd2FudF90eXBlLgoKVGh1IEphbiAxNiAxODoxNDozNSAxOTk3ICBCcmVuZGFuIEtlaG9lICA8YnJlbmRhbkBsaXNhLmN5Z251cy5jb20+CgoJKiBpbml0LmMgKGJ1aWxkX25ldyk6IE1ha2Ugc3VyZSBQTEFDRU1FTlQgaGFzIGEgdHlwZS4KClRodSBKYW4gMTYgMTc6NDA6MjggMTk5NyAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogaW5pdC5jIChidWlsZF9uZXcpOiBTdXBwb3J0IG5ldyAobm90aHJvdykuCgpXZWQgSmFuIDE1IDEyOjM4OjE0IDE5OTcgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIHB0LmMgKGluc3RhbnRpYXRlX2RlY2wpOiBBbHNvIGRvIHB1c2hfdG9fdG9wX2xldmVsIGJlZm9yZSBzZXR0aW5nCgl1cCBERUNMX0lOSVRJQUwuCgoJKiBjcC10cmVlLmggKFBBUk1fREVGQVVMVF9GUk9NX1RFTVBMQVRFKTogTmV3IG1hY3JvLgoJKiBwdC5jICh0c3Vic3QpOiBEZWZlciBpbnN0YW50aWF0aW9uIG9mIGRlZmF1bHQgYXJncy4KCSogY2FsbC5jIChidWlsZF9vdmVyX2NhbGwpOiBVbnRpbCBoZXJlLgoKV2VkIEphbiAxNSAxMDowODoxMCAxOTk3ICBCcmVuZGFuIEtlaG9lICA8YnJlbmRhbkBsaXNhLmN5Z251cy5jb20+CgoJKiBzZWFyY2guYyAobG9va3VwX2ZpZWxkKTogTWFrZSBzdXJlIHdlIGhhdmUgYW4KCUlERU5USUZJRVJfQ0xBU1NfVkFMVUUgYmVmb3JlIHdlIHRyeSB0byByZXR1cm4gaXQuCgpUaHUgSmFuICA5IDA3OjE5OjAxIDE5OTcgIEJyZW5kYW4gS2Vob2UgIDxicmVuZGFuQGxpc2EuY3lnbnVzLmNvbT4KCgkqIGNhbGwuYyAoYnVpbGRfbWV0aG9kX2NhbGwpOiBEZWxldGUgdW51c2VkIHZhciBQQVJNLgoJKGJ1aWxkX292ZXJsb2FkX2NhbGxfcmVhbCk6IExpa2V3aXNlLgoJKGJ1aWxkX29iamVjdF9jYWxsKTogRGVsZXRlIHVudXNlZCB2YXIgUC4KCShidWlsZF9uZXdfb3ApOiBMaWtld2lzZS4KCSogZGVjbC5jIChidWlsdGluX3R5cGVfdGRlc2NzX3thcnIsIGxlbiwgbWF4fSk6ICNpZiAwIG91dCBzdGF0aWMKCXZhciBkZWZpbml0aW9ucywgd2hpY2ggYXJlIG5ldmVyIHVzZWQuCgkoc2hhZG93X3RhZyk6IERlbGV0ZSB1bnVzZWQgdmFyIEZOLgoJKiBleHByLmMgKGNwbHVzX2V4cGFuZF9leHByKTogRGVsZXRlIHVudXNlZCB2YXIgT1JJR0lOQUxfVEFSR0VULgoJKiBpbml0LmMgKGJ1aWxkX25ldyk6IERlbGV0ZSB1bnVzZWQgdmFyIEFMTE9DX1RFTVAuCgkqIG1ldGhvZC5jIChoYWNrX2lkZW50aWZpZXIpOiBEZWxldGUgdW51c2VkIHZhciBDT05URVhULgoJKGRvX2J1aWxkX2NvcHlfY29uc3RydWN0b3IpOiBEZWxldGUgdW51c2VkIHZhciBOQU1FLgoJKHN5bnRoZXNpemVfbWV0aG9kKTogRGVsZXRlIHVudXNlZCB2YXIgQkFTRS4KCSogcHQuYyAobG9va3VwX3RlbXBsYXRlX2NsYXNzKTogRGVsZXRlIHVudXNlZCB2YXIgQ09ERV9UWVBFX05PREUuCgkqIHJ0dGkuYyAoYnVpbGRfaGVhZG9mKTogRGVsZXRlIHVudXNlZCB2YXIgVlBUUi4KCShnZXRfdHlwZWlkKTogRGVsZXRlIHVudXNlZCB2YXIgVC4KCSogdHlwZWNrLmMgKGJ1aWxkX2NvbmRpdGlvbmFsX2V4cHIpOiBEZWxldGUgdW51c2VkIHZhcnMgT1JJR19PUDEKCWFuZCBPUklHX09QMi4KCShidWlsZF9wdHJtZW1mdW5jKTogRGVsZXRlIHVudXNlZCB2YXJzIFUgYW5kIE5JTkRFWC4KCSogdHlwZWNrMi5jIChidWlsZF9mdW5jdGlvbmFsX2Nhc3QpOiBEZWxldGUgdW51c2VkIHZhciBCSU5GTy4KCldlZCBKYW4gIDggMTM6MDk6NTQgMTk5NyAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogc2VhcmNoLmMgKGxvb2t1cF9maWVsZCk6IFVzZSBJREVOVElGSUVSX0NMQVNTX1ZBTFVFIHRvIGxvb2sgdXAKCXRoaW5ncyBpbiBhIHR5cGUgYmVpbmcgZGVmaW5lZC4KCSogZGVjbC5jIChmaW5pc2hfZW51bSk6IFJldmVyc2UgdGhlIHZhbHVlcyBzbyB0aGF0IHRoZXkgYXJlIGluCgl0aGUgY29ycmVjdCBvcmRlci4KCgkqIHB0LmMgKGluc3RhbnRpYXRlX2NsYXNzX3RlbXBsYXRlKTogRG9uJ3QgaW5pdGlhbGl6ZQoJQklORk9fQkFTRVRZUEVTIHVudGlsIHRoZSB2ZWN0b3IgaXMgZmlsbGVkIG91dC4KCSh1bmlmeSk6IERvbid0IGFib3J0IG9uIGNvbmZsaWN0aW5nIGJpbmRpbmdzLCBqdXN0IGZhaWwuCgkoaW5zdGFudGlhdGVfZGVjbCk6IERvIHB1c2hfdGluc3RfbGV2ZWwgYmVmb3JlIGFueSB0c3Vic3RpbmcuCgoJKiBtZXRob2QuYyAoYnVpbGRfb3ZlcmxvYWRfdmFsdWUpOiBIYW5kbGUgZ2V0dGluZyBhCglURU1QTEFURV9DT05TVF9QQVJNIGZvciBhIHBvaW50ZXIuCgpUdWUgSmFuICA3IDE0OjAwOjU4IDE5OTcgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIGluaXQuYyAoZXhwYW5kX21lbWJlcl9pbml0KTogRG9uJ3QgZ2l2ZSAnbm90IGEgYmFzZScgZXJyb3IgZm9yCgl0ZW1wbGF0ZXMuCgoJKiBwdC5jIChpbnN0YW50aWF0ZV9kZWNsKTogQ2FsbCBpbXBvcnRfZXhwb3J0X2RlY2wgbGF0ZXIuCgoJKiBwdC5jIChpbnN0YW50aWF0ZV9jbGFzc190ZW1wbGF0ZSk6IFJldHVybiBhIHZhbHVlLgoKCSogcGFyc2UueSAoZXh0ZW5zaW9uKTogTmV3IHJ1bGUgZm9yIF9fZXh0ZW5zaW9uX18uCgkoZXh0ZGVmLCB1bmFyeV9leHByLCBkZWNsLCBjb21wb25lbnRfZGVjbCk6IFVzZSBpdC4KClR1ZSBKYW4gIDcgMDk6MjA6MjggMTk5NyAgTWlrZSBTdHVtcCAgPG1yc0BjeWdudXMuY29tPgoKCSogY2xhc3MuYyAoYmFzZV9iaW5mbyk6IFJlbW92ZSB1bnVzZWQgYmFzZV9oYXNfdmlydHVhbCBtZW1iZXIuCgkoZmluaXNoX2Jhc2Vfc3RydWN0KTogTGlrZXdpc2UuCgkoZmluaXNoX3N0cnVjdF8xKTogTGlrZXdpc2UuCgpUdWUgRGVjIDMxIDIwOjI1OjUwIDE5OTYgIE1pa2UgU3R1bXAgIDxtcnNAY3lnbnVzLmNvbT4KCgkqIHNlYXJjaC5jIChleHBhbmRfdXBjYXN0X2ZpeHVwcyk6IEZpeCBib2d1cyBjb2RlIGdlbmVyYXRpb24KCXByb2JsZW0gd2hlcmUgdGhlIGdlbmVyYXRlZCBjb2RlIHVzZXMgdGhlIHdyb25nIGluZGV4IGludG8gdGhlCglydW50aW1lIGJ1aWx0IHZ0YWJsZSBvbiB0aGUgc3RhY2suICBPbGQgY29kZSBjb3VsZCBjbG9iYmVyIHJhbmRvbQoJc3RhY2sgdmFsdWVzLgoKVHVlIERlYyAzMSAxNToxNjo1NiAxOTk2ICBNaWtlIFN0dW1wICA8bXJzQGN5Z251cy5jb20+CgoJKiBpbml0LmMgKHBlcmZvcm1fbWVtYmVyX2luaXQpOiBNYWtlIHN1cmUgdGhlIHBhcnRpYWwgRUggY2xlYW51cHMKCWxpdmUgb24gdGhlIGZ1bmN0aW9uX29ic3RhY2suCgpGcmkgRGVjIDI3IDEwOjMxOjQwIDE5OTYgIFBhdWwgRWdnZXJ0ICA8ZWdnZXJ0QHR3aW5zdW4uY29tPgoKCSogTWFrZS1sYW5nLmluIChnKytzcGVjLm8pOiBEb24ndCB1c2UgJDwgd2l0aCBhbiBleHBsaWNpdCB0YXJnZXQ7Cgl0aGlzIGlzbid0IHBvcnRhYmxlIHRvIHNvbWUgdmVyc2lvbnMgb2YgYG1ha2UnIChlLmcuIFNvbGFyaXMgMi41LjEpLgoKVHVlIERlYyAyNCAxMDoyNDowMyAxOTk2ICBKZWZmcmV5IEEgTGF3ICA8bGF3QGN5Z251cy5jb20+CgoJKiBkZWNsLmMgKGdyb2t2YXJkZWNsKTogQXZvaWQgQU5TSSBzdHlsZSBpbml0aWFsaXphdGlvbi4KClN1biBEZWMgMjIgMDQ6MjI6MDYgMTk5NiAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogcHQuYyAodHN1YnN0KTogVHdlYWsgYXJnIHR5cGVzIGZvciBhIEZVTkNUSU9OX1RZUEUuCgpGcmkgRGVjIDIwIDE3OjA5OjI1IDE5OTYgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIHB0LmMgKGluc3RhbnRpYXRlX2NsYXNzX3RlbXBsYXRlKTogQ2FsbCBncm9rX3tjdG9yLG9wfV9wcm9wZXJ0aWVzLgoKRnJpIERlYyAyMCAxMjoxNzoxMiAxOTk2ICBCcmVuZGFuIEtlaG9lICA8YnJlbmRhbkBsaXNhLmN5Z251cy5jb20+CgoJKiBnKytzcGVjLmMgKGxhbmdfc3BlY2lmaWNfZHJpdmVyKTogUHV0IG1pc3NpbmcgaHlwaGVuIGluIGZyb250IG9mCglhcmd1bWVudHMgd2UgY29tcGFyZSBhZ2FpbnN0LiAgU3RhcnQgdGhlIGNvdW50IG9mIEkgYXQgMSwgbm90IDAsCglzaW5jZSBhcmd2WzBdIGlzIHN0aWxsIHRoZSBjb21tYW5kLgoKVGh1IERlYyAxOSAxMTo1Mzo1NyAxOTk2ICBTdGFuIFNoZWJzICA8c2hlYnNAYW5kcm9zLmN5Z251cy5jb20+CgoJKiBsYW5nLXNwZWNzLmg6IEFjY2VwdCAuY3AgYXMgYW4gQysrIGV4dGVuc2lvbi4KCk1vbiBEZWMgMTYgMjI6NDM6MzEgMTk5NiAgQnJlbmRhbiBLZWhvZSAgPGJyZW5kYW5AbGlzYS5jeWdudXMuY29tPgoKCSogY3AtdHJlZS5oIChwdHJfcmVhc29uYWJseV9zaW1pbGFyKTogQWRkIGRlY2wuCgpUaHUgRGVjIDEyIDE1OjAwOjM1IDE5OTYgIEJyZW5kYW4gS2Vob2UgIDxicmVuZGFuQGxpc2EuY3lnbnVzLmNvbT4KCgkqIGRlY2wuYyAoZ3Jva3ZhcmRlY2wpOiBDaGFuZ2UgU1BFQ0JJVFMgcGFybSB0byBiZSB0aGUgU1BFQ0JJVFNfSU4KCXBvaW50ZXIuICBOZXcgbG9jYWwgU1BFQ0JJVFMgd2l0aCB0aGUgcGFybSdzIHZhbHVlLgoJKGdyb2tkZWNsYXJhdG9yKTogUGFzcyAmc3BlY2JpdHMgZG93bi4KCgkqIHBhcnNlLnkgKGV4cHJfbm9fY29tbWFzKTogTWFrZSBzdXJlICQkIGlzIG5vdCBhbiBlcnJvcl9tYXJrX25vZGUKCWJlZm9yZSB3ZSB0cnkgdG8gZG8gQ19TRVRfRVhQX09SSUdJTkFMX0NPREUgb24gaXQuCgoJKiBzZWFyY2guYyAoZW52ZWxvcGVfYWRkX2RlY2wpOiBDaGVjayB0aGF0IHRoZSBDTEFTU1RZUEVfQ0lEIG9mCglDT05URVhUIGlzIG5vdCAwIGJlZm9yZSB3ZSB0cnkgdG8gdXNlIFRZUEVfREVSSVZFU19GUk9NLgoKCSogZGVjbC5jIChjcGx1c19leHBhbmRfZXhwcl9zdG10KTogT25seSBleHBhbmQgdGhlIGV4cHIgaWYgRVhQIGlzCglub3QgYW4gZXJyb3JfbWFya19ub2RlLgoKU2F0IERlYyAgNyAxNzoyMDoyMiAxOTk2ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBjcC10cmVlLmggKFRZUEVfTUFJTl9ERUNMKTogVXNlIFRZUEVfU1RVQl9ERUNMLgoJKiAqLmM6IFVzZSBUWVBFX01BSU5fREVDTCBpbnN0ZWFkIG9mIFRZUEVfTkFNRSB3aGVyZSBhcHByb3ByaWF0ZS4KCkZyaSBEZWMgIDYgMTQ6NDA6MDkgMTk5NiAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogZGVjbC5jIChncm9rZGVjbGFyYXRvcik6IFdoZW4gZ2l2aW5nIGFuIGFub255bW91cyBzdHJ1Y3QgYSBuYW1lLAoJcmVwbGFjZSBUWVBFX05BTUUgaW5zdGVhZCBvZiBUWVBFX0lERU5USUZJRVIgKHNvIFRZUEVfU1RVQl9ERUNMIGlzCglub3QgYWZmZWN0ZWQpLgoKCSogdHlwZWNrMi5jIChidWlsZF9tX2NvbXBvbmVudF9yZWYpOiBJZiBjb21wb25lbnQgaXMgYSBwb2ludGVyCgl0byBkYXRhIG1lbWJlciwgcmVzb2x2ZSB0aGUgT0ZGU0VUX1JFRiBub3cuCgoJKiBjYWxsLmMgKGNvbnZlcnRfbGlrZSk6IERvbid0IGdvIGludG8gaW5maW5pdGUgcmVjdXJzaW9uLgoKCSogcHQuYyAoY29lcmNlX3RlbXBsYXRlX3Bhcm1zKTogVXNlIHRzdWJzdF9leHByIGZvciBub24tdHlwZSBhcmdzLgoKCSogY2xhc3MuYyAoZmluaXNoX3N0cnVjdF8xKTogU2V0IERFQ0xfQVJUSUZJQ0lBTCBvbiB0aGUgdnB0ci4KCSogdHJlZS5jIChsYXlvdXRfYmFzZXR5cGVzKTogQW5kIG9uIHRoZSB2YmFzZSBwdHIuCgpUaHUgRGVjICA1IDAyOjExOjI4IDE5OTYgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIGRlY2wuYyAoQk9PTF9UWVBFX1NJWkUpOiBEZWZpbmUgaW4gdGVybXMgb2YgUE9JTlRFUl9TSVpFIG9yCglDSEFSX1RZUEVfU0laRSBzbyBib29sIGlzIGFsd2F5cyB0aGUgc2FtZSBzaXplIGFzIGFub3RoZXIgdHlwZS4KCgkqIGRlY2wuYyAocHVzaHRhZyk6IFNldCBERUNMX0lHTk9SRURfUCBmb3IgRFdBUkYsIHRvby4KClR1ZSBEZWMgIDMgMjM6MTg6MzcgMTk5NiAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogZGVjbDIuYyAoZ3Jva194X2NvbXBvbmVudHMpOiBSZW1vdmUgc3ludGhlc2l6ZWQgbWV0aG9kcyBmcm9tCglUWVBFX01FVEhPRFMgb2YgYW4gYW5vbnltb3VzIHVuaW9uLCBjb21wbGFpbiBhYm91dCBtZW1iZXIKCWZ1bmN0aW9ucy4KCSogZGVjbC5jIChzaGFkb3dfdGFnKTogV2lwZSBvdXQgbWVtb3J5IG9mIHN5bnRoZXNpemVkIG1ldGhvZHMgaW4KCWFub255bW91cyB1bmlvbnMuCgkoZmluaXNoX2Z1bmN0aW9uKTogSnVzdCBjbGVhciB0aGUgREVDTF9SVEwgb2Ygb3VyIGFyZ3VtZW50cy4KCkZyaSBOb3YgMjkgMjE6NTQ6MTcgMTk5NiAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogZGVjbDIuYyAoZmluaXNoX2ZpbGUpOiBFbWl0IERXQVJGIGRlYnVnZ2luZyBpbmZvIGZvciBzdGF0aWMgZGF0YQoJbWVtYmVycy4KCgkqIHB0LmMgKHRzdWJzdCk6IElmIHQgaXMgYSBzdHViIGRlY2wsIHJldHVybiB0aGUgc3R1YiBkZWNsIGZvciB0eXBlLgoKV2VkIE5vdiAyNyAxNDo0NzoxNSAxOTk2ICBCb2IgTWFuc29uICA8bWFuc29uQGNoYXJtZWQuY3lnbnVzLmNvbT4KCgkqIHR5cGVjay5jIChidWlsZF9jb21wb25lbnRfcmVmKTogRG9uJ3QgZGllIGlmIENPTVBPTkVOVCBpc24ndCBhCglJREVOVElGSUVSX05PREUuCgpXZWQgTm92IDI3IDE2OjA1OjE5IDE5OTYgIE1pY2hhZWwgTWVpc3NuZXIgIDxtZWlzc25lckB0aWt0b2suY3lnbnVzLmNvbT4KCgkqIE1ha2UtbGFuZy5pbiAoZysrLWNyb3NzJChleGVleHQpKTogRml4IHR5cG8uCgpXZWQgTm92IDI3IDA4OjE0OjAwIDE5OTYgIEJyZW5kYW4gS2Vob2UgIDxicmVuZGFuQGxpc2EuY3lnbnVzLmNvbT4KCglNYWtlIHRoZSBnKysgZHJpdmVyIG5vdyBiZSBhIHN0YW5kYWxvbmUgcHJvZ3JhbSwgcmF0aGVyIHRoYW4gb25lCgl0aGF0IHRyaWVzIHRvIHJ1biB0aGUgZ2NjIGRyaXZlciBhZnRlciBtdW5naW5nIHVwIHRoZSBvcHRpb25zLgoJKiBNYWtlLWxhbmcuaW4gKGcrKy5jLCBnKytzcGVjLm8pOiBOZXcgcnVsZXMuCgkoZysrLm8pOiBOZXcgcnVsZSwgYmFzZWQgb24gZ2NjLm8gd2l0aCAtRExBTkdfU1BFQ0lGSUNfRFJJVkVSCglhZGRlZC4KCShnKyskKGV4ZWV4dCkpOiBOZXcgcnVsZSwgYmFzZWQgb24geGdjYyBydWxlLgoJKGcrKy1jcm9zcyQoZXhlZXh0KSk6IE5vdyBqdXN0IGNvcGllcyBnKyskKGV4ZWV4dCkgb3Zlci4KCSogZysrc3BlYy5jOiBOZXcgZmlsZS4KCSogZysrLmM6IFJlbW92ZWQgZmlsZS4KClR1ZSBOb3YgMjYgMTk6MDE6MDkgMTk5NiAgTWlrZSBTdHVtcCAgPG1yc0BjeWdudXMuY29tPgoKCSogY3Z0LmMgKGJ1aWxkX3VwX3JlZmVyZW5jZSk6IEFycmFuZ2UgZm9yIGFueSB0ZW1wb3JhcnkgdmFsdWVzCgl0aGF0IGhhdmUgYmVlbiBrZWVwIGluIHJlZ2lzdGVycyB1bnRpbCBub3cgdG8gYmUgcHV0IGludG8gbWVtb3J5LgoKTW9uIE5vdiAyNSAxNToxNjo0MSAxOTk2ICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBNYWtlLWxhbmcuaW4gKGMrKy5zdGFnZVsxMjM0XSk6IERlcGVuZCB1cG9uIHN0YWdlWzEtNF0tc3RhcnQsIHNvCgl0aGF0IG1ha2UgLWozIGJvb3RzdHJhcCB3b3JrcyBiZXR0ZXIuCgpTdW4gTm92IDI0IDAyOjA5OjM5IDE5OTYgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIGRlY2wuYyAocHVzaHRhZyk6IERvIHB1c2hkZWNsIGZvciBhbm9uIHRhZ3MuCgpUaHUgTm92IDIxIDE2OjMwOjI0IDE5OTYgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIHR5cGVjay5jIChjX2V4cGFuZF9yZXR1cm4pOiBGaXggbG9naWMuCgkodW5hcnlfY29tcGxleF9sdmFsdWUpOiBBdm9pZCB1bnVzZWQgd2FybmluZyBvbiBhZGRyZXNzIG9mIElOSVRfRVhQUi4KCldlZCBOb3YgMjAgMTg6NDc6MzEgMTk5NiAgQm9iIE1hbnNvbiAgPG1hbnNvbkBjaGFybWVkLmN5Z251cy5jb20+CgoJKiBnKysuYyAobWFpbik6IE1ha2Ugc3VyZSBhcmdsaXN0IGhhcyBhIGZpbmFsIE5VTEwgZW50cnkuICBBZGQKCVBFWEVDVVRFX0xBU1QgdG8gdGhlIGZsYWdzIHBhc3NlZCB0byBwZXhlY3V0ZSwgYXMgb3RoZXJ3aXNlCglzdGRpbi9zdGRvdXQgb2YgdGhlIGludm9rZWQgcHJvZ3JhbSBhcmUgcmVkaXJlY3RlZCB0bwoJbm93aGVyZXN2aWxsZS4KClR1ZSBOb3YgMTkgMTY6MTI6NDQgMTk5NiAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogZGVjbC5jIChpbXBsaWNpdGx5X2RlY2xhcmUpOiBTZXQgREVDTF9BUlRJRklDSUFMLgoKVHVlIE5vdiAxOSAxNTo0ODoxOSAxOTk2ICBNaWtlIFN0dW1wICA8bXJzQGN5Z251cy5jb20+CgoJKiBpbml0LmMgKHJlc29sdmVfb2Zmc2V0X3JlZik6IEhhbmRsZSBvYmoudmZuIGJldHRlci4KCSogdHlwZWNrLmMgKGJ1aWxkX2NvbXBvbmVudF9yZWYpOiBTZXQgVFJFRV9UWVBFIG9uIHJlc3VsdCBmcm9tCglidWlsZF92Zm5fcmVmLgoKVHVlIE5vdiAxOSAxMzoxNDozMyAxOTk2ICBNaWtlIFN0dW1wICA8bXJzQGN5Z251cy5jb20+CgoJKiB0eXBlY2suYyAoY29udmVydF9mb3JfYXNzaWdubWVudCk6IEFsc28gaGFuZGxlIGFuYWNocm9uaXN0aWMKCWltcGxpY2l0IGNvbnZlcnNpb25zIGZyb20gKDo6KikoKSB0byBjdiB2b2lkKi4KCSogY3Z0LmMgKGNwX2NvbnZlcnRfdG9fcG9pbnRlcik6IExpa2V3aXNlLgoKTW9uIE5vdiAxOCAxNzowNToyNiAxOTk2ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBsZXguYyAoaGFuZGxlX2NwX3ByYWdtYSk6IEZpeCBib2d1cyB3YXJuaW5nLgoKTW9uIE5vdiAxOCAxNjoxMDo0MyAxOTk2ICBNaWtlIFN0dW1wICA8bXJzQGN5Z251cy5jb20+CgoJKiBjdnQuYyAoY3BfY29udmVydF90b19wb2ludGVyKTogQXZvaWQgdGhpbmtpbmcgYSBQT0lOVEVSX1RZUEUKCShNRVRIT0RfVFlQRSkgaXMgYSBUWVBFX1BUUk1FTUZVTkNfUC4KClRodSBOb3YgMTQgMjM6MTg6MTcgMTk5NiAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogY2xhc3MuYyAoZmluaXNoX3N0cnVjdF8xKTogU3VwcG9ydCBEV0FSRjJfREVCVUcuCgkqIHNlYXJjaC5jIChkZnNfZGVidWdfbWFyayk6IExpa2V3aXNlLgoJKiBkZWNsMi5jIChmaW5pc2hfdnRhYmxlX3ZhcmRlY2wpOiBMaWtld2lzZS4KCSogZGVjbC5jIChwdXNodGFnLCBmaW5pc2hfZW51bSk6IExpa2V3aXNlLgoJKiBsZXguYyAoY2hlY2tfbmV3bGluZSk6IFVzZSBkZWJ1Z18qIGluc3RlYWQgb2YgY2FsbGluZyAqb3V0CglmdW5jdGlvbnMgZGlyZWN0bHkuCgpUaHUgTm92IDE0IDE1OjIxOjQ2IDE5OTYgIEJyZW5kYW4gS2Vob2UgIDxicmVuZGFuQGxpc2EuY3lnbnVzLmNvbT4KCgkqIE1ha2UtbGFuZy5pbiAoY3BsaWIyLnJlYWR5KTogQWRkIGVsc2UgY2xhdXNlIHRvIGF2b2lkIHByb2JsZW1zCglvbiBzb21lIHBpY2t5IGhvc3RzLgoKV2VkIE5vdiAxMyAxMjozMjowNyAxOTk2ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBjbGFzcy5jIChmaW5pc2hfc3RydWN0XzEpOiBBIGNsYXNzIGhhcyBhIG5vbi10cml2aWFsIGNvcHkKCWNvbnN0cnVjdG9yIGlmIGl0IGhhcyB2aXJ0dWFsIGZ1bmN0aW9ucy4KCgkqIGN2dC5jIChjcF9jb252ZXJ0KTogQWx3YXlzIGNhbGwgYSBjb25zdHJ1Y3Rvci4KCgkqIGNhbGwuYyAocmVmZXJlbmNlX2JpbmRpbmcpOiBTdGlsbCB0YWNrIG9uIGEgUkVGX0JJTkQKCWZvciBiYWQgY29udmVyc2lvbnMuCgkoYnVpbGRfdXNlcl90eXBlX2NvbnZlcnNpb25fMSk6IFByb3BhZ2F0ZSBJQ1NfQkFEX0ZMQUcuCgoJKiB0eXBlY2suYyAoY29udmVydF9hcmd1bWVudHMpOiBQYXNzIExPT0tVUF9PTkxZQ09OVkVSVElORy4KCShjX2V4cGFuZF9yZXR1cm4pOiBMaWtld2lzZS4KCSogdHlwZWNrMi5jIChkaWdlc3RfaW5pdCk6IExpa2V3aXNlIGZvciB7IH0uCgkqIGluaXQuYyAoZXhwYW5kX2FnZ3JfaW5pdF8xKTogS2VlcCB0aGUgQ09OU1RSVUNUT1IgaGFuZGxpbmcuCgkqIGN2dC5jIChjcF9jb252ZXJ0KTogSGFuZGxlIGZhaWx1cmUgYmV0dGVyLgoKV2VkIE5vdiAxMyAxMTo1MToyMCAxOTk2ICBCcmVuZGFuIEtlaG9lICA8YnJlbmRhbkBsaXNhLmN5Z251cy5jb20+CgoJKiBnKysuYyAobWFpbik6IEFsc28gc2V0IFBFWEVDVVRFX1NFQVJDSCwgdG8gbWFrZSB0aGUgaW52b2NhdGlvbgoJb2YgR0NDIGJlIHBhdGgtcmVsYXRpdmUuCgpXZWQgTm92IDEzIDExOjI3OjE2IDE5OTYgIE1pY2hhZWwgTWVpc3NuZXIgIDxtZWlzc25lckB0aWt0b2suY3lnbnVzLmNvbT4KCgkqIE1ha2UtbGFuZy5pbiAoZysrLWNyb3NzKTogRysrLWNyb3NzIGRvZXNuJ3QgbmVlZCB2ZXJzaW9uLm8sIGJ1dAoJaXQgZG9lcyBuZWVkIGNob29zZS10ZW1wLm8gYW5kIHBleGVjdXRlLm8uCgpXZWQgTm92IDEzIDA3OjUzOjM4IDE5OTYgIEJyZW5kYW4gS2Vob2UgIDxicmVuZGFuQGxpc2EuY3lnbnVzLmNvbT4KCgkqIGcrKy5jIChlcnJvcikgWyFIQVZFX1ZQUklOVEZdOiBQdXQgZXJyb3IgYmFjayBmb3IgdGhlIG9ubHkgdGltZQoJdGhhdCB3ZSBzdGlsbCB1c2UgaXQuCgkoUF90bXBkaXIsIFJfT0ssIFdfT0ssIFhfT0spIFtfX01TRE9TX19dOiBEZWxldGUgdW5uZWNlc3NhcnkgbWFjcm9zLgoKV2VkIE5vdiAxMyAwMjowMDoyNiAxOTk2ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBpbml0LmMgKGV4cGFuZF9kZWZhdWx0X2luaXQpOiBBdm9pZCBjYWxsaW5nIGNvbnN0cnVjdG9ycyB0bwoJaW5pdGlhbGl6ZSByZWZlcmVuY2UgdGVtcHMuCgoJKiBjdnQuYyAoY29udmVydF90b19yZWZlcmVuY2UpOiBGaXguCgpUdWUgTm92IDEyIDE5OjEwOjA3IDE5OTYgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIGN2dC5jIChjcF9jb252ZXJ0KTogU2ltcGxpZnkgZm9yIGZsYWdfYW5zaV9vdmVybG9hZGluZy4KCShjb252ZXJ0X3RvX3JlZmVyZW5jZSk6IExpa2V3aXNlLgoJKiB0eXBlY2suYyAoY29udmVydF9mb3JfaW5pdGlhbGl6YXRpb24pOiBMaWtld2lzZS4KCSogaW5pdC5jIChleHBhbmRfZGVmYXVsdF9pbml0KTogTGlrZXdpc2UuCgkoZXhwYW5kX2FnZ3JfaW5pdF8xKTogTGlrZXdpc2UuCgkqIGNwLXRyZWUuaCAoQ09OVl9OT05DT05WRVJUSU5HKTogTG9zZS4KCSogdHlwZWNrLmMgKGJ1aWxkX2NfY2FzdCk6IExvc2UgYWxsb3dfbm9uY29udmVydGluZyBwYXJtLgoJKiAqLmM6IEFkanVzdC4KCSogY2FsbC5jIChidWlsZF91c2VyX3R5cGVfY29udmVyc2lvbl8xKTogQXNzdW1lIExPT0tVUF9PTkxZQ09OVkVSVElORy4KClR1ZSBOb3YgMTIgMTY6Mjk6MDQgMTk5NiAgQnJlbmRhbiBLZWhvZSAgPGJyZW5kYW5AY2FudWNrLmN5Z251cy5jb20+CgoJKiBwdC5jICh0c3Vic3RfZXhwcik6IFJldmVyc2UgYXJncyB0byBleHBhbmRfc3RhcnRfY2F0Y2hfYmxvY2suCgpUdWUgTm92IDEyIDE1OjI2OjE3IDE5OTYgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIGluaXQuYyAoZXhwYW5kX2FnZ3JfaW5pdF8xKTogRG9uJ3QgY3Jhc2ggb24gbm9uLWNvbnN0cnVjdG9yCglUQVJHRVRfRVhQUi4KClR1ZSBOb3YgMTIgMTQ6MDA6NTAgMTk5NiAgQnJlbmRhbiBLZWhvZSAgPGJyZW5kYW5AbGlzYS5jeWdudXMuY29tPgoKCSogZysrLmM6IEluY2x1ZGUgZ2Fuc2lkZWNsLmguCgkoVlBST1RPLCBQVlBST1RPLCBWQV9TVEFSVCk6IERlbGV0ZS4KCShjaG9vc2VfdGVtcF9iYXNlX3RyeSwgY2hvb3NlX3RlbXBfYmFzZSwgcGVycm9yX2V4ZWMsCglydW5fZG9zKSBbX19NU0RPU19fXTogRGVsZXRlIGZucy4KCShwZmF0YWxfd2l0aF9uYW1lKTogRGVsZXRlIGZuLgoJKHRlbXBfZmlsZW5hbWUpOiBEZWNsYXJlIGxpa2UgaW4gZ2NjLmMuCgkocGV4ZWN1dGUsIHB3YWl0LCBjaG9vc2VfdGVtcF9iYXNlKTogRGVjbGFyZSBmcm9tIGdjYy5jLgoJKGVycm9yX2NvdW50LCBzaWduYWxfY291bnQpOiBEZWZpbmUuCgkoZXJyb3IpOiBEZWxldGUgYm90aCBkZWZpbml0aW9ucy4KCShQRVhFQ1VURV97RklSU1QsTEFTVCxTRUFSQ0gsVkVSQk9TRX0pOiBEZWZpbmUgZnJvbSBnY2MuYy4KCShwZmF0YWxfcGV4ZWN1dGUpOiBBZGQgZm4gZnJvbSBnY2MuYy4KCShtYWluKTogUmVuYW1lIGxvY2FsIFZFUkJPU0UgdmFyIHRvIFZFUkJPU0VfRkxBRy4gIFJld3JpdGUgdGhlCgljb2RlIHRvIHVzZSB0aGUgcGV4ZWN1dGUgc3R1ZmYgYWxzbyB1c2VkIGJ5IGdjYy5jLgoJKE1JTl9GQVRBTF9TVEFUVVMpOiBEZWZpbmUuCgkqIE1ha2UtbGFuZy5pbiAoZysrKTogQWRkIGRlcGVuZGVuY3kgb24gYW5kIGxpbmtpbmcgd2l0aAoJY2hvb3NlLXRlbXAubyBhbmQgcGV4ZWN1dGUuby4KCgkqIGNwLXRyZWUuaDogSW5jbHVkZSBnYW5zaWRlY2wuaC4KCShTVERJT19QUk9UTyk6IERlbGV0ZSAjdW5kZWYvI2RlZmluZS4KCSogY3Z0LmMgKE5VTEwpOiBEZWxldGUgI3VuZGVmLyNkZWZpbmUuCgkqIGV4cHIuYyAoTlVMTCk6IExpa2V3aXNlLgoJKiBpbml0LmMgKE5VTEwpOiBMaWtld2lzZS4KCSogcnR0aS5jIChOVUxMKTogTGlrZXdpc2UuCgkqIHhyZWYuYyAoTlVMTCk6IExpa2V3aXNlLgoKCSogY3AtdHJlZS5oIChidWlsZF91c2VyX3R5cGVfY29udmVyc2lvbik6IEFkZCBwcm90b3R5cGUuCgkqIGNhbGwuYyAoYnVpbGRfdXNlcl90eXBlX2NvbnZlcnNpb24pOiBEZWxldGUgcHJvdG90eXBlLiAgQ29ycmVjdAoJZGVjbCBvZiBGTEFHUyBhcmcgdG8gYmUgYW4gaW50LgoJKiBjdnQuYyAoYnVpbGRfdXNlcl90eXBlX2NvbnZlcnNpb24pOiBMaWtld2lzZS4KClR1ZSBOb3YgMTIgMTI6MTY6MjAgMTk5NiAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogY3AtdHJlZS5kZWY6IEFkZCBUUllfQkxPQ0sgYW5kIEhBTkRMRVIuCgkqIGV4Y2VwdC5jIChleHBhbmRfc3RhcnRfY2F0Y2hfYmxvY2spOiBTdXBwb3J0IHRlbXBsYXRlcy4KCSogcGFyc2UueSAodHJ5X2Jsb2NrLCBoYW5kbGVyX3NlcSk6IExpa2V3aXNlLgoJKiBwdC5jICh0c3Vic3RfZXhwcik6IFN1cHBvcnQgVFJZX0JMT0NLIGFuZCBIQU5ETEVSLgoKTW9uIE5vdiAxMSAxMzo1NzozMSAxOTk2ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBwdC5jIChjdXJyZW50X3RlbXBsYXRlX2FyZ3MpOiBOZXcgZm4uCgkocHVzaF90ZW1wbGF0ZV9kZWNsKTogVXNlIGl0LgoJKiBkZWNsLmMgKGdyb2tkZWNsYXJhdG9yKTogVXNlIGl0LgoKCSogZGVjbDIuYyAoYnVpbGRfZXhwcl9mcm9tX3RyZWUpOiBEZXJlZmVyZW5jZSByZWYgdmFycy4KCgkqIGRlY2wuYyAoZ3Jva2RlY2xhcmF0b3IpOiBHZW5lcmFsaXplIGhhbmRsaW5nIG9mIFRZUEVOQU1FX1RZUEVzIGluCgl0aGUgZGVjbC1zcGVjaWZpZXItc2VxLgoKCSogZGVjbC5jIChncm9rX29wX3Byb3BlcnRpZXMpOiBEb24ndCBmb3JjZSB0aGUgdHlwZSBvZiBhIGNvbnZlcnNpb24KCW9wIHRvIGJlIGNvbXBsZXRlLiAgRG9uJ3Qgd2FybiBhYm91dCBjb252ZXJ0aW5nIHRvIHRoZSBzYW1lIHR5cGUKCWZvciB0ZW1wbGF0ZSBpbnN0YW50aWF0aW9ucy4KCgkqIGRlY2wyLmMgKGZpbmlzaF9maWxlKTogRG9uJ3QgY2FsbCBpbnN0YW50aWF0ZV9kZWNsIG9uIHN5bnRoZXNpemVkCgltZXRob2RzLgoKTW9uIE5vdiAxMSAxMzoyMDozNCAxOTk2ICBCb2IgTWFuc29uICA8bWFuc29uQGNoYXJtZWQuY3lnbnVzLmNvbT4KCgkqIHR5cGVjay5jIChnZXRfZGVsdGFfZGlmZmVyZW5jZSk6IFJlbW92ZSBwcmV2aW91cyBib2d1c25lc3MuCglEb24ndCBnaXZlIGVycm9ycyBpZiBmb3JjZSBpcyBzZXQuCgpGcmkgTm92ICA4IDE3OjM4OjQ0IDE5OTYgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIGRlY2wyLmMgKGZpbmlzaF9maWxlKTogRG9uJ3QgZW1pdCBkZWJ1ZyBpbmZvLgoJKiBkZWNsLmMgKHB1c2hkZWNsKTogTG9zZSBvYnNvbGV0ZSBjb2RlLgoJKGdyb2tkZWNsYXJhdG9yKTogU3RpbGwgZG8gdGhlIGxvbmcgbG9uZyB0aGluZyBhZnRlciBjb21wbGFpbmluZy4KCSogc2VhcmNoLmMgKG5vdGVfZGVidWdfaW5mb19uZWVkZWQpOiBEb24ndCBkbyBhbnl0aGluZyBpZiB3ZSdyZSBpbiBhCgl0ZW1wbGF0ZS4KCSogbWV0aG9kLmMgKHN5bnRoZXNpemVfbWV0aG9kKTogRm9yIG5vbi1sb2NhbCBjbGFzc2VzLAoJcHVzaF90b190b3BfbGV2ZWwgZmlyc3QuCgpGcmkgTm92ICA4IDExOjUyOjI4IDE5OTYgIEJvYiBNYW5zb24gIDxtYW5zb25AY2hhcm1lZC5jeWdudXMuY29tPgoKCSogdHlwZWNrLmMgKGdldF9kZWx0YV9kaWZmZXJlbmNlKTogQWRkIG5vX2Vycm9yIHBhcmFtZXRlci4KCShidWlsZF9wdHJtZW1mdW5jKTogQ2FsbCBnZXRfZGVsdGFfZGlmZmVyZW5jZSB3aXRoIG5vX2Vycm9yIHNldDsKCXdlIGRvbid0IHdhbnQgZXJyb3IgbWVzc2FnZXMgd2hlbiBjb252ZXJ0aW5nIHVucmVsYXRlZAoJcG9pbnRlci10by1tZW1iZXIgZnVuY3Rpb25zLgoKVGh1IE5vdiAgNyAxMToxNjoyNCAxOTk2ICBNaWtlIFN0dW1wICA8bXJzQGN5Z251cy5jb20+CgoJKiBlcnJvci5jIChkdW1wX2V4cHIpOiBJbXByb3ZlIHRoZSB3b3JkaW5nIG9uIGVycm9yIG1lc3NhZ2VzIHRoYXQKCWludm9sdmUgcG9pbnRlciB0byBtZW1iZXIgZnVuY3Rpb25zLgoKVHVlIE5vdiAgNSAxNzoxMjowNSAxOTk2ICBNaWtlIFN0dW1wICA8bXJzQGN5Z251cy5jb20+CgoJKiBjdnQuYyAoY3BfY29udmVydF90b19wb2ludGVyKTogTW92ZSBjb2RlIGZvciBjb252ZXJzaW9ucyBmcm9tCgkoOjoqKSgpIHRvIHZvaWQqIG9yICgqKSgpIHVwIGEgYml0LCBzbyB0aGF0IHdlIGNhbiBjb252ZXJ0IGZyb20KCU1FVEhPRF9UWVBFcyBhcyB3ZWxsLgoKVHVlIE5vdiAgNSAxNDo1NDoxNyAxOTk2ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBydHRpLmMgKGdldF90aW5mb19mbik6IE1ha2Ugc3VyZSAndHlwZScgaXMgcGVybWFuZW50LgoJVGhlcmUgYXJlIG5vICdtZW1iZXInIHR5cGVzLgoJKGdldF90aW5mb19mbl9keW5hbWljKTogRGlhZ25vc2UgdHlwZWlkIG9mIG92ZXJsb2FkZWQgZm4uCgkoYnVpbGRfeF90eXBlaWQpOiBIYW5kbGUgZXJyb3JzLgoKTW9uIE5vdiAgNCAxNzo0MzoxMiAxOTk2ICBNaWtlIFN0dW1wICA8bXJzQGN5Z251cy5jb20+CgoJKiB0eXBlY2suYyAoY29udmVydF9mb3JfYXNzaWdubWVudCk6IEhhbmRsZSBhbmFjaHJvbmlzdGljIGltcGxpY2l0Cgljb252ZXJzaW9ucyBmcm9tICg6OiopKCkgdG8gdm9pZCogb3IgKCopKCkuCgkqIGN2dC5jIChjcF9jb252ZXJ0X3RvX3BvaW50ZXIpOiBMaWtld2lzZS4KCShjcF9jb252ZXJ0X3RvX3BvaW50ZXJfZm9yY2UpOiBSZW1vdmUgY3BfY29udmVydF90b19wb2ludGVyCgljb252ZXJzaW9ucyBmcm9tIGhlcmUuCgkqIGRlY2wyLmMgKGxhbmdfZGVjb2RlX29wdGlvbik6IEFkZCAtV3tuby0sfXBtZi1jb252ZXJzaW9ucy4KCSogbGFuZy1vcHRpb25zLmg6IExpa2V3aXNlLgoJKiBkZWNsMi5jICh3YXJuX3BtZjJwdHIpOiBEZWZpbmUuCgkqIGNwLXRyZWUuaDogRGVjbGFyZSBpdC4KCSogdHlwZWNrMi5jIChkaWdlc3RfaW5pdCk6IEFsbG93IHBtZnMgZG93biBpbnRvCgljb252ZXJ0X2Zvcl9pbml0aWFsaXphdGlvbi4KClN1biBOb3YgIDMgMDk6NDM6MDAgMTk5NiAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogdHlwZWNrLmMgKGNfZXhwYW5kX3JldHVybik6IEZpeCBmb3IgcmV0dXJuaW5nIG92ZXJsb2FkZWQgZm4uCgpGcmkgTm92ICAxIDA4OjUzOjE3IDE5OTYgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIGNwLXRyZWUuaCAoRElSRUNUX0JJTkQpOiBDaGFuZ2UgZnJvbSBJTkRJUkVDVF9CSU5ELgoJKiBkZWNsLmMgKGdyb2tfcmVmZXJlbmNlX2luaXQpOiBQYXNzIERJUkVDVF9CSU5ELgoJKiBjdnQuYyAoYnVpbGRfdXBfcmVmZXJlbmNlKTogRG9uJ3QgbWFyayAndGhpcycgYWRkcmVzc2FibGUuICBVc2UKCURJUkVDVF9CSU5ELgoJKiBjYWxsLmMgKGNvbnZlcnRfbGlrZSk6IERvbid0IHBhc3MgSU5ESVJFQ1RfQklORC4KCSogdHlwZWNrLmMgKGNvbnZlcnRfYXJndW1lbnRzKTogTGlrZXdpc2UuCgkqIHR5cGVjay5jIChtYXJrX2FkZHJlc3NhYmxlKTogQWxsb3cgJnRoaXMgaWYgZmxhZ190aGlzX2lzX3ZhcmlhYmxlLgoKVGh1IE9jdCAzMSAxNzowODo0OSAxOTk2ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiB0eXBlY2suYyAobWFya19hZGRyZXNzYWJsZSk6IFN1cHBvcnQgVEFSR0VUX0VYUFIsIHVuaWZ5IHdpdGgKCXNpbWlsYXIgY29kZSBpbiBidWlsZF91cF9yZWYuCgkqIGN2dC5jIChidWlsZF91cF9yZWZlcmVuY2UpOiBEcmFzdGljYWxseSBzaW1wbGlmeS4KCk1vbiBPY3QgMjggMTI6NDU6MDUgMTk5NiAgSmVmZnJleSBBIExhdyAgPGxhd0BjeWdudXMuY29tPgoKCSogdHlwZWNrLmMgKHNpZ25lZF9vcl91bnNpZ25lZF90eXBlKTogSWYgdGhlIGdpdmVuIHR5cGUgYWxyZWFkeQoJYXMgdGhlIGNvcnJlY3Qgc2lnbmVkbmVzcywgdGhlbiBqdXN0IHJldHVybiBpdC4KCgkqIHR5cGVjay5jICh7dW4sfXNpZ25lZF90eXBlKTogSWYgY2FuJ3QgZG8gYW55dGhpbmcsIGNhbGwKCXNpZ25lZF9vcl91bnNpZ25lZF90eXBlLgoKVGh1IE9jdCAyNCAxNDoyMTo1OSAxOTk2ICBCb2IgTWFuc29uICA8bWFuc29uQGNoYXJtZWQuY3lnbnVzLmNvbT4KCgkqIGRlY2wyLmMgKGNvcHlfYXNzaWdubWVudF9hcmdfcCk6IERvbid0IGJ1eSB0aGUgZmFybSBpZgoJY3VycmVudF9jbGFzc190eXBlIGlzIE5VTEwuCgpXZWQgT2N0IDIzIDAwOjQzOjEwIDE5OTYgIEphc29uIE1lcnJpbGwgIDxqYXNvbkBnZXJiaWwuY3lnbnVzLmNvbT4KCgkqIGNsYXNzLmMgKGZpbmlzaF9zdHJ1Y3RfMSk6IEF2b2lkIGVtcHR5IHN0cnVjdHMgYnkgYWRkaW5nIGEgZmllbGQKCXNvIGxheW91dF90eXBlIGdldHMgdGhlIG1vZGUgcmlnaHQuCgoJKiB0eXBlY2suYyAoY19leHBhbmRfcmV0dXJuKTogRHJhc3RpY2FsbHkgc2ltcGxpZnkuCgpNb24gT2N0IDIxIDIyOjM0OjAyIDE5OTYgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIHR5cGVjay5jIChkZWNheV9jb252ZXJzaW9uKTogSGFuZGxlIG92ZXJsb2FkZWQgbWV0aG9kcy4KCkZyaSBPY3QgMTggMTY6MDM6NDggMTk5NiAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogY2FsbC5jIChidWlsZF9vdmVyX2NhbGwpOiBBIFRBUkdFVF9FWFBSIGhhcyBzaWRlLWVmZmVjdHMuCgpUaHUgT2N0IDE3IDExOjMxOjU5IDE5OTYgIE1pa2UgU3R1bXAgIDxtcnNAY3lnbnVzLmNvbT4KCgkqIGN2dC5jIChjb252ZXJ0X3RvX3BvaW50ZXJfZm9yY2UpOiBBZGQgY29kZSB0byBzdXBwb3J0IHBvaW50ZXIgdG8KCW1lbWJlciBmdW5jdGlvbiB0byBwb2ludGVyIHRvIGZ1bmN0aW9uIGNvbnZlcnNpb25zLgoJKiBpbml0LmMgKHJlc29sdmVfb2Zmc2V0X3JlZik6IEFkZCBjb2RlIHRvIGFsbG93IGZha2VkIHVwIG9iamVjdHMsCglpZ25vcmluZyB0aGVtIGlmIHRoZXkgYXJlIG5vdCB1c2VkLCBhbmQgZ2l2aW5nIGFuIGVycm9yLCBpZiB0aGV5CglhcmUgbmVlZGVkLgoJKiB0eXBlY2suYyAoZ2V0X21lbWJlcl9mdW5jdGlvbl9mcm9tX3B0cmZ1bmMpOiBGb2xkIGUxIHRvIGltcHJvdmUKCWNvZGUsIGFuZCBzbyB0aGF0IHdlIGNhbiBnaXZlIGFuIGVycm9yLCBpZiB3ZSBuZWVkZWQgYW4gb2JqZWN0LAoJYW5kIG9uZSB3YXMgbm90IHByb3ZpZGVkLgoJKGJ1aWxkX2NfY2FzdCk6IERvbid0IGNhbGwgZGVmYXVsdF9jb252ZXJzaW9uIHdoZW4gd2Ugd2FudCB0bwoJY29udmVydCB0byBwb2ludGVyIHRvIGZ1bmN0aW9uIGZyb20gYSBNRVRIT0RfVFlQRS4KCk1vbiBPY3QgMTQgMDA6Mjg6NTEgMTk5NiAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogTWFrZS1sYW5nLmluIChjcGxpYjIucmVhZHkpOiBGaXggbG9naWMuCgoJKiBkZWNsLmMgKHNoYWRvd190YWcpOiBPbmx5IGNvbXBsYWluIGFib3V0IG5vbi1hcnRpZmljaWFsIGZ1bmN0aW9uCgltZW1iZXJzLgoKCSogY2xhc3MuYyAoZmluaXNoX3N0cnVjdF8xKTogQWRkIHN5bnRoZXNpemVkIG1ldGhvZHMgdG8gVFlQRV9NRVRIT0RTLgoKRnJpIE9jdCAxMSAxNjoxMjo0MCAxOTk2ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBleHByLmMgKGNwbHVzX2V4cGFuZF9leHByKTogUHJlLXR3ZWFrIGNhbGxfdGFyZ2V0IGxpa2UKCWV4cGFuZF9pbmxpbmVfZnVuY3Rpb24gd291bGQuCgoJKiBwdC5jIChtYXJrX2RlY2xfaW5zdGFudGlhdGVkKTogSWYgZXh0ZXJuX3AsIGNhbGwKCW1hcmtfaW5saW5lX2Zvcl9vdXRwdXQuCgpUaHUgT2N0IDEwIDE1OjU4OjA4IDE5OTYgIE1pa2UgU3R1bXAgIDxtcnNAY3lnbnVzLmNvbT4KCgkqIHR5cGVjay5jICh1bmFyeV9jb21wbGV4X2x2YWx1ZSk6IEFkZCBjb2RlIHRvIGhhbmRsZSBpbnRlcm1lZGlhdGUKCXBtZCBjb252ZXJzaW9ucy4KCgkqIHR5cGVjay5jIChnZXRfZGVsdGFfZGlmZmVyZW5jZSk6IEZpeCB3b3JkaW5nLCBhcyB3ZSBjYW4gYmUgdXNlZAoJZm9yIHBvaW50ZXIgdG8gZGF0YSBtZW1iZXJzLgoKVHVlIE9jdCAgOCAxMjo0Mzo1MSAxOTk2ICBCb2IgTWFuc29uICA8bWFuc29uQGNoYXJtZWQuY3lnbnVzLmNvbT4KCgkqIHB0LmMgKHRzdWJzdCk6IElmIHRoZSBmdW5jdGlvbiBkZWNsIGlzbid0IGEgbWVtYmVyIG9mIHRoaXMKCXRlbXBsYXRlLCByZXR1cm4gYSBjb3B5IG9mIHRoZSBkZWNsIChpbmNsdWRpbmcgY29weWluZyB0aGUKCWxhbmctc3BlY2lmaWMgcGFydCkgc28gd2UgZG9uJ3QgaG9zZSBvdXJzZWx2ZXMgbGF0ZXIuCgpUaHUgT2N0ICAzIDE2OjI0OjI4IDE5OTYgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIGNsYXNzLmMgKGZpbmlzaF9zdHJ1Y3QpOiBSZW1vdmUgRFdBUkYtc3BlY2lmaWMgdGFnIGhhbmRsaW5nLgoJKiBkZWNsLmMgKHB1c2h0YWcpOiBMaWtld2lzZS4KCShmaW5pc2hfZnVuY3Rpb24pOiBBbHdheXMgY2xlYXIgREVDTF9BUkdVTUVOVFMgb24gZnVuY3Rpb24gZGVjbHMgd2l0aAoJbm8gc2F2ZWQgUlRYLgoJKiBkZWNsMi5jIChmaW5pc2hfZmlsZSk6IEVtaXQgRFdBUkYgZGVidWdnaW5nIGluZm8gZm9yIHN0YXRpYyBkYXRhCgltZW1iZXJzLgoKV2VkIE9jdCAgMiAyMTo1ODowMSAxOTk2ICBCb2IgTWFuc29uICA8bWFuc29uQGNoYXJtZWQuY3lnbnVzLmNvbT4KCgkqIGRlY2wuYyAoZHVwbGljYXRlX2RlY2xzKTogTWFrZSBzdXJlIHRoZSBvbGQgREVDTF9MQU5HX1NQRUNJRklDCglpc24ndCB0aGUgc2FtZSBhcyB0aGUgbmV3IG9uZSBiZWZvcmUgd2Ugd2hhY2sgaXQuCgpNb24gU2VwIDMwIDEzOjM4OjI0IDE5OTYgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIGNsYXNzLmMsIGNwLXRyZWUuaCwgY3Z0LmMsIGRlY2wuYywgZGVjbDIuYywgZ3h4LmdwZXJmLCBoYXNoLmgsCglsZXguYywgbWV0aG9kLmMsIHBhcnNlLnksIHR5cGVjay5jLCB0eXBlY2syLmM6IFJlbW92ZQoJd2Fybl90cmFkaXRpb25hbCBhbmQgd2Fybl9zdHJpY3RfcHJvdG90eXBlczsgcmVtb3ZlIGFuY2llbnQKCSdvdmVybG9hZCcgY29kZTsgcmVtb3ZlIHJlZmVyZW5jZXMgdG8gZmxhZ190cmFkaXRpb25hbC4KCk1vbiBTZXAgMzAgMTI6NTg6NDAgMTk5NiAgTWlrZSBTdHVtcCAgPG1yc0BjeWdudXMuY29tPgoKCSogaW5wdXQuYyAoc3ViX2dldGNoKTogSGFuZGxlIDgtYml0IGNoYXJhY3RlcnMgaW4gc3RyaW5nIGxpdGVyYWxzLgoKU3VuIFNlcCAyOSAwMzoxMjowMSAxOTk2ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiB0cmVlLmMgKG1hcGNhcik6IEhhbmRsZSBDT05TVFJVQ1RPUnMuCgkoY29weV90b19wZXJtYW5lbnQpOiBIYW5kbGUgZXhwcmVzc2lvbl9vYnN0YWNrIHByb3Blcmx5LgoKCSogTWFrZS1sYW5nLmluIChjcGxpYjIudHh0KTogQWxzbyBkZXBlbmQgb24gdGhlIGhlYWRlcnMuCgoJKiBydHRpLmMgKGdldF90aW5mb192YXIpOiBEb24ndCBhc3N1bWUgdGhhdCBQT0lOVEVSX1NJWkUgPT0KCUlOVF9UWVBFX1NJWkUuCgkoZXhwYW5kX2NsYXNzX2Rlc2MpOiBVc2UgVVNJdHlwZSBmb3Igb2Zmc2V0IGZpZWxkLgoJKiB0aW5mby5oIChzdHJ1Y3QgX19jbGFzc190eXBlX2luZm8pOiBMaWtld2lzZS4KCgkqIG1ldGhvZC5jIChidWlsZF9vdmVybG9hZF9pbnQpOiBUWVBFX1BSRUNJU0lPTiBzaG91bGQgYmUgYXBwbGllZAoJdG8gdHlwZXMuCgpTYXQgU2VwIDI4IDE0OjQ0OjUwIDE5OTYgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIGNhbGwuYyAoYnVpbGRfbmV3X29wKTogQSBDT05EX0VYUFIgaW52b2x2aW5nIHZvaWQgbXVzdCBiZSBhCglidWlsdGluLgoKRnJpIFNlcCAyNyAxNjo0MDozMCAxOTk2ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiB0eXBlY2suYyAoYnVpbGRfeF9jb21wb25lbnRfcmVmKTogTmV3IGZuLgoJKGJ1aWxkX29iamVjdF9yZWYpOiBVc2UgaXQuCgkqIHBhcnNlLnkgKHByaW1hcnkpOiBVc2UgaXQuCgkqIGRlY2wyLmMgKGJ1aWxkX2V4cHJfZnJvbV90cmVlKTogVXNlIGl0LgoJKiBjcC10cmVlLmg6IERlY2xhcmUgaXQuCgoJKiBkZWNsLmMgKHN0YXJ0X2RlY2wpOiBWYXJpYWJsZS1zaXplZCBhcnJheXMgY2Fubm90IGJlIGluaXRpYWxpemVkLgoJKiBlcnJvci5jIChkdW1wX3R5cGVfc3VmZml4KTogSGFuZGxlIHZhcmlhYmxlIGFycmF5cy4KCkZyaSBTZXAgMjcgMTM6MTQ6MDUgMTk5NiAgQnJlbmRhbiBLZWhvZSAgPGJyZW5kYW5AbGlzYS5jeWdudXMuY29tPgoKCSogTWFrZS1sYW5nLmluIChleGNlcHRpb24ubyk6IFB1dCBiYWNrIGNvbXBpbGluZyBpdCB3aXRoIC1mUElDLgoKRnJpIFNlcCAyNyAwMzowMDowOSAxOTk2ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBkZWNsLmMgKGxvb2t1cF9uYW1lX3JlYWwpOiBEb24ndCB0cnkgdG8gbG9vayB1cCBhbnl0aGluZyBpbiBhCglUWVBFTkFNRV9UWVBFLgoKCSogdGluZm8yLmNjIChfX3Rocm93X3R5cGVfbWF0Y2hfcnR0aSk6IE9vcHMuCgpUaHUgU2VwIDI2IDIyOjExOjA1IDE5OTYgIEJyZW5kYW4gS2Vob2UgIDxicmVuZGFuQGxpc2EuY3lnbnVzLmNvbT4KCgkqIE1ha2UtbGFuZy5pbiAoZXhjZXB0aW9uLm8pOiBVc2UgLWZuby1QSUMgZm9yIG5vdy4KClRodSBTZXAgMjYgMTA6NTk6MDAgMTk5NiAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogcnR0aS5jIChidWlsZF9keW5hbWljX2Nhc3QpOiBQYXNzIHRpbmZvIGZucyByYXRoZXIgdGhhbgoJY2FsbGluZyB0aGVtLgoJKGdldF90aW5mb19mbl9keW5hbWljKTogRXh0cmFjdGVkIGZyb20gYnVpbGRfdHlwZWlkLgoJKiB0aW5mbzIuY2MgKF9fZHluYW1pY19jYXN0KTogQWRqdXN0LgoKCSogcnR0aS5jIChidWlsZF90eXBlaWQpOiBVc2UgcmVzb2x2ZXNfdG9fZml4ZWRfdHlwZV9wLgoJKGJ1aWxkX3hfdHlwZWlkKTogTGlrZXdpc2UuCgoJKiBwYXJzZS55OiBDYWxsIGJ1aWxkX3hfdHlwZWlkIGluc3RlYWQgb2YgYnVpbGRfdHlwZWlkLgoJKiBjcC10cmVlLmRlZjogQWRkIFRZUEVJRF9FWFBSLgoJKiBwdC5jICh0c3Vic3RfY29weSk6IEhhbmRsZSB0eXBlaWQuCgkqIGRlY2wyLmMgKGJ1aWxkX2V4cHJfZnJvbV90cmVlKTogTGlrZXdpc2UuCgkqIHJ0dGkuYyAoYnVpbGRfeF90eXBlaWQpOiBUaHJvdyBiYWRfdHlwZWlkIGZyb20gaGVyZS4KCShidWlsZF90eXBlaWQpOiBOb3QgaGVyZS4KCSogY3AtdHJlZS5oOiBEZWNsYXJlIGJ1aWxkX3hfdHlwZWlkLgoKV2VkIFNlcCAyNSAxNzoyNjoxNiAxOTk2ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBjYWxsLmMgKGNvbnZlcnRfbGlrZSk6IFB1bGwgb3V0IGNvbnN0YW50IHZhbHVlcy4KCgkqIHRyZWUuYyAobWFwY2FyKTogVXNlIGJ1aWxkX2NwbHVzX2FycmF5X3R5cGUsIG5vdCBidWlsZF9hcnJheV90eXBlLgoKV2VkIFNlcCAyNSAxNzoyODo1MyAxOTk2ICBNaWNoYWVsIE1laXNzbmVyICA8bWVpc3NuZXJAdGlrdG9rLmN5Z251cy5jb20+CgoJKiBkZWNsLmMgKGluaXRfZGVjbF9wcm9jZXNzaW5nKTogQ3JlYXRlIHNob3J0IGludCB0eXBlcyBiZWZvcmUKCWNyZWF0aW5nIHNpemVfdCBpbiBjYXNlIGEgbWFjaGluZSBkZXNjcmlwdGlvbiBuZWVkcyB0byB1c2UKCXVuc2lnbmVkIHNob3J0IGZvciBzaXplX3QuCgpUdWUgU2VwIDI0IDE4OjE4OjQ0IDE5OTYgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIE1ha2UtbGFuZy5pbiAoZXhjZXB0aW9uLm8pOiBUdXJuIG9mZiBwaWMuCgoJKiB0aW5mbzIuY2MgKF9fdGhyb3dfdHlwZV9tYXRjaF9ydHRpKTogRml4IGN2LXZhcmlhbnRzIG9mIHRoZSBzYW1lCgl0eXBlLCBtdWx0aS1sZXZlbCBwdHIgY29udmVyc2lvbnMuCgoJKiBydHRpLmMgKGNhbGxfdm9pZF9mbik6IFJlbmFtZWQgYW5kIGdlbmVyaWNpemVkIGZyb20gdGhyb3dfYmFkX2Nhc3QuCgkodGhyb3dfYmFkX2Nhc3QpOiBVc2UgaXQuCgkodGhyb3dfYmFkX3R5cGVpZCk6IE5ldyBmbi4KCShidWlsZF90eXBlaWQpOiBUaHJvdyBiYWRfdHlwZWlkIGFzIG5lZWRlZC4KCVVzZSBidWlsZF9jYWxsLgoJKHN5bnRoZXNpemVfdGluZm9fZm4pOiBIYW5kbGUgZnVuY3Rpb25zIGFuZCBhcnJheXMgYmVmb3JlIGNoZWNraW5nCglmb3IgY3YtcXVhbHMuCgoJKiBSZW1vdmUgLmggZnJvbSBzdGFuZGFyZCBDKysgaGVhZGVycywgYWRkIG5ldy5oLCBtb3ZlIGludG8gaW5jCglzdWJkaXJlY3RvcnkuCgoJKiBleGNlcHRpb24qOiBSZW1vdmUgcG9pbnRlciBmcm9tIG9iamVjdCwgY29uc3RydWN0b3JzLiAgQWRkCglkZWZhdWx0IGV4Y2VwdGlvbjo6d2hhdCB0aGF0IHVzZXMgdHlwZV9pbmZvOjpuYW1lLiAgQWRkCglfX3Rocm93X2JhZF90eXBlaWQuCgoJKiBpbml0LmMgKGJ1aWxkX25ldyk6IERvbid0IGFkZCBhIGNvb2tpZSB0byBuZXcgKHZvaWQgKikgVFsyXS4KCk1vbiBTZXAgMjMgMTU6MjE6NTMgMTk5NiAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogTWFrZS1sYW5nLmluOiBCdWlsZGluZyBDKysgY29kZSBkZXBlbmRzIG9uIGNjMXBsdXMuCgpNb24gU2VwIDIzIDEyOjM4OjQwIDE5OTYgIEJyZW5kYW4gS2Vob2UgIDxicmVuZGFuQGxpc2EuY3lnbnVzLmNvbT4KCgkqIGRlY2wuYyAoc3RydWN0IHNhdmVkX3Njb3BlKTogRGVjbGFyZSBQUk9DRVNTSU5HX1RFTVBMQVRFX0RFQ0wgYXMKCWEgSE9TVF9XSURFX0lOVCwgbm90IGEgdHJlZS4KCk1vbiBTZXAgMjMgMTI6MzY6MDIgMTk5NiAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogZXhjZXB0aW9uLmNjOiBEb24ndCBpbmNsdWRlIDxzdGRsaWIuaD4uCgoJKiBNYWtlLWxhbmcuaW4gKGMrKy5jbGVhbik6IFJlbW92ZSBjcGxpYjIuKi4KCk1vbiBTZXAgMjMgMDk6NDI6MTkgMTk5NiAgRG91ZyBFdmFucyAgPGRqZUBjYW51Y2suY3lnbnVzLmNvbT4KCgkqIHBhcnNlLnkgKGNvbXBvbmVudF9kZWNsXzEsIGNvbXBvbmVudF9jb3N0cnVjdG9yX2RlY2xhcmF0b3IgY2FzZSk6CglQYXNzIGF0dHJpYnV0ZXMvcHJlZml4X2F0dHJpYnV0ZXMgaW4gdHJlZSBsaXN0LgoKTW9uIFNlcCAyMyAwMToxODo1MCAxOTk2ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiB0aW5mb3ssMn0uY2M6ICNpbmNsdWRlIDxzdGRkZWYuaD4gaW5zdGVhZCBvZiA8c3RkbGliLmg+LgoKU3VuIFNlcCAyMiAwNTozMToyMiAxOTk2ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBsZXguYyAoZG9faWRlbnRpZmllcik6IERvbid0IGRvIGRlZmVycmVkIGxvb2t1cCBpbiBhIHRlbXBsYXRlCgloZWFkZXIuCgoJKiB0eXBlY2syLmMgKHN0b3JlX2luaXRfdmFsdWUpOiBPb3BzLgoKCSogbmV3LntoLGNjfSwgZXhjZXB0aW9uLntoLGNjfSwgdHlwZWluZm8uaCwgdGluZm97Mi5jYywuY2MsLmh9OgoJTmV3IGZpbGVzIGZvciBDKysgbGFuZy1zdXBwb3J0IGxpYnJhcnkuCgkqIE1ha2UtbGFuZy5pbiAoQ1hYX0VYVFJBX0hFQURFUlMpOiBEZWZpbmUuCgkoQ1hYX0xJQjJGVU5DUyk6IERlZmluZS4KCUFuZCBydWxlcyBmb3IgYnVpbGRpbmcgdGhlIEMrKyBsYW5nLXN1cHBvcnQgY29kZS4KCSogY29uZmlnLWxhbmcuaW4gKGhlYWRlcnMpOiBEZWZpbmUuCgkobGliMmZ1bmNzKTogRGVmaW5lLgoKU2F0IFNlcCAyMSAxOToxNzoyOCAxOTk2ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBkZWNsMi5jIChidWlsZF9leHByX2Zyb21fdHJlZSk6IElmIENPTlNUUlVDVE9SIGhhcyBhIHR5cGUsIGNhbGwKCWRpZ2VzdF9pbml0LgoJKiBwdC5jICh0c3Vic3RfY29weSk6IENvbXB1dGUgdHlwZSBmb3IgQ09OU1RSVUNUT1IuCgkqIHR5cGVjazIuYyAoc3RvcmVfaW5pdF92YWx1ZSk6IENoZWNrIGZvciBpbml0aWFsaXppbmcgcG1mIHdpdGggeyB9CgloZXJlLgoJKHByb2Nlc3NfaW5pdF9jb25zdHJ1Y3Rvcik6IE5vdCBoZXJlLgoKVGh1IFNlcCAxOSAxNjo0MTowNyAxOTk2ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBwdC5jIChiZWdpbl90ZW1wbGF0ZV9wYXJtX2xpc3QpOiBJbmNyZW1lbnQKCXByb2Nlc3NpbmdfdGVtcGxhdGVfZGVjbCBoZXJlLgoJKGVuZF90ZW1wbGF0ZV9wYXJtX2xpc3QpOiBOb3QgaGVyZS4KCShwcm9jZXNzX3RlbXBsYXRlX3Bhcm0pOiBObyBuZWVkIHRvIGFkZCAxIHRvIGl0IG5vdy4KCSogKi5jOiBVc2UgcHJvY2Vzc2luZ190ZW1wbGF0ZV9kZWNsIGluc3RlYWQgb2YgY3VycmVudF90ZW1wbGF0ZV9wYXJtcwoJdG8gY2hlY2sgZm9yIGJlaW5nIGluIGEgdGVtcGxhdGUuCgoJKiBwdC5jICh1c2VzX3RlbXBsYXRlX3Bhcm1zKTogSGFuZGxlIFNDT1BFX1JFRi4gIEZpeCBDT05TVFJVQ1RPUi4KCSh0c3Vic3RfY29weSk6IEhhbmRsZSBDT05TVFJVQ1RPUi4KCShpbnN0YW50aWF0ZV9kZWNsKTogU2V0IHVwIGNvbnRleHQgcHJvcGVybHkgZm9yIHZhcmlhYmxlcy4KCSogZGVjbDIuYyAoYnVpbGRfZXhwcl9mcm9tX3RyZWUpOiBIYW5kbGUgQ09OU1RSVUNUT1IuCgkqIGNsYXNzLmMgKGZpbmlzaF9zdHJ1Y3QpOiBSZXZlcnNlIENMQVNTVFlQRV9UQUdTLgoKV2VkIFNlcCAxOCAxMzozMDoyMCAxOTk2ICBCcmVuZGFuIEtlaG9lICA8YnJlbmRhbkBsaXNhLmN5Z251cy5jb20+CgoJKiBsZXguYyAoZW51bSB0cmVlX25vZGVfa2luZCkgW0dBVEhFUl9TVEFUSVNUSUNTXTogUHV0IHRoZSBlbnVtIGJhY2suCgpXZWQgU2VwIDE4IDA0OjI0OjA3IDE5OTYgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIG1ldGhvZC5jIChtYWtlX3RodW5rKTogQ2FsbCBjb21kYXRfbGlua2FnZSBiZWZvcmUgc2V0dGluZyB0aGUKCVRSRUVfQ09ERS4KCgkqIGRlY2wyLmMgKGNvbWRhdF9saW5rYWdlKTogVXNlIG1ha2VfZGVjbF9vbmVfb25seS4KCShpbXBvcnRfZXhwb3J0X2RlY2wpOiBMaWtld2lzZS4KCSogZGVjbC5jIChpbml0X2RlY2xfcHJvY2Vzc2luZyk6IENoZWNrIHN1cHBvcnRzX29uZV9vbmx5IGluc3RlYWQgb2YKCVNVUFBPUlRTX1dFQUsuCgpTYXQgU2VwIDE0IDA4OjM0OjQxIDE5OTYgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIGRlY2wyLmMgKGdyb2tmaWVsZCk6IFRpZ2h0ZW4gY2hlY2tpbmcgZm9yIGFjY2VzcyBkZWNscy4KCgkqIGRlY2wuYyAobWFrZV90eXBlbmFtZV90eXBlKTogUmVzb2x2ZSByZWZlcmVuY2VzIHRvCgljdXJyZW50X2NsYXNzX3R5cGUuICBTZXQgQ0xBU1NUWVBFX0dPVF9TRU1JQ09MT04uCgkobG9va3VwX25hbWVfcmVhbCk6IFR5cGVzIHRoYXQgZGVwZW5kIG9uIGEgdGVtcGxhdGUgcGFyYW1ldGVyIGdldAoJYW4gaW1wbGljaXQgJ3R5cGVuYW1lJyB1bmxlc3MgdGhleSdyZSBpbiB0aGUgY3VycmVudCBzY29wZS4KCShzdGFydF9kZWNsXzEpOiBXZSBkb24ndCBjYXJlIGFib3V0IGluY29tcGxldGUgdHlwZXMgdGhhdCBkZXBlbmQKCW9uIGEgdGVtcGxhdGUgcGFybS4KCShncm9rZGVjbGFyYXRvcik6IFJlc29sdmUgJ3R5cGVuYW1lJ3MgaW4gdGhlIHR5cGUgc3BlY2lmaWVyIHRoYXQKCXJlZmVyIHRvIG1lbWJlcnMgb2YgdGhlIGN1cnJlbnQgc2NvcGUuCgoJKiBjYWxsLmMgKGJ1aWxkX292ZXJfY2FsbCk6IFJlbW92ZSAnaW5saW5lIGNhbGxlZCBiZWZvcmUKCWRlZmluaXRpb24nIGRpYWdub3N0aWMuCgkoYnVpbGRfbWV0aG9kX2NhbGwpOiBMaWtld2lzZS4KCSogZGVjbC5jIChkdXBsaWNhdGVfZGVjbHMpOiBEb3duZ3JhZGUgJ3VzZWQgYmVmb3JlIGRlY2xhcmVkCglpbmxpbmUnIHRvIGEgd2FybmluZywgb25seSB3aXRoIC1XaW5saW5lLgoKRnJpIFNlcCAxMyAxNzozMTo0MCAxOTk2ICBTdGFuIFNoZWJzICA8c2hlYnNAYW5kcm9zLmN5Z251cy5jb20+CgoJKiBtcHctbWFrZS5zZWQ6IEZpeCBpbmNsdWRlIHBhdGhzLCBhZGQgQERBU0hfQ19GTEFHQCB0byBjb21waWxlLgoKV2VkIFNlcCAxMSAyMjozODoxMyAxOTk2ICBHZXJhbGQgQmF1bWdhcnRuZXIgIDxnYkBjcy5wdXJkdWUuZWR1PgoKCSogY2FsbC5jIChidWlsZF9tZXRob2RfY2FsbCk6IFdoZW4gY2FsbGluZyBhIHNpZ25hdHVyZQoJZGVmYXVsdCBpbXBsZW1lbnRhdGlvbiwgYXMgaW4gb3RoZXIgY2FzZXMsIGxldCBpbnN0YW5jZV9wdHIgc2ltcGx5CgliZSBpbnN0YW5jZS4KCldlZCBTZXAgMTEgMjI6MTQ6NDQgMTk5NiAgTWlrZSBTdHVtcCAgPG1yc0BjeWdudXMuY29tPgoKCSogcGFyc2UueSAoc2ltcGxlX3N0bXQpOiBDbGVhbnVwIGFuZCB1c2UgZG9fcG9wbGV2ZWwgKCkuCgpXZWQgU2VwIDExIDIyOjEwOjQ4IDE5OTYgIE1pa2UgU3R1bXAgIDxtcnNAY3lnbnVzLmNvbT4KCgkqIGV4Y2VwdC5jIChleHBhbmRfc3RhcnRfY2F0Y2hfYmxvY2spOiBBZGQgYSBwdXNobGV2ZWwgc28gdGhhdCAtZwoJd29ya3Mgb24gaHBwYSBhbmQgU1BBUkMuCgpXZWQgU2VwIDExIDEwOjE4OjA2IDE5OTYgIEJyZW5kYW4gS2Vob2UgIDxicmVuZGFuQGxpc2EuY3lnbnVzLmNvbT4KCgkqIHR5cGVjay5jIChidWlsZF9pbmRpcmVjdF9yZWYpOiBDYXRjaCBQVFIgYmVpbmcgYW4gZXJyb3JfbWFya19ub2RlLgoKTW9uIFNlcCAgOSAxOTo1MToxNCAxOTk2ICBHZXJhbGQgQmF1bWdhcnRuZXIgIDxnYkBjcy5wdXJkdWUuZWR1PgoKCSogY2FsbC5jIChidWlsZF9vdmVyX2NhbGwpOiBDaGVjayBmaXJzdCB3aGV0aGVyIERFQ0xfQ09OVEVYVCBleGlzdHMKCWJlZm9yZSB0ZXN0aW5nIHdoZXRoZXIgaXQncyBhIHNpZ25hdHVyZS4KClN1biBTZXAgIDggMTY6MDY6NTcgMTk5NiAgR2VyYWxkIEJhdW1nYXJ0bmVyICA8Z2JAY3MucHVyZHVlLmVkdT4KCgkqIGNhbGwuYyAoYnVpbGRfbmV3X21ldGhvZF9jYWxsKTogRG9uJ3QgY29tcGxhaW4gYWJvdXQgc2lnbmF0dXJlCglwb2ludGVycyBhbmQgcmVmZXJlbmNlcyBub3QgYmVpbmcgYW4gYWdnciB0eXBlLgoJKGJ1aWxkX3RoaXMpOiBJZiBhIHNpZ25hdHVyZSBwb2ludGVyIG9yIHJlZmVyZW5jZSB3YXMgcGFzc2VkIGluLAoJanVzdCByZXR1cm4gaXQuCgkoYnVpbGRfbmV3X21ldGhvZF9jYWxsKTogSWYgaW5zdGFuY2UgaXMgYSBzaWduYXR1cmUgcG9pbnRlciwgc2V0CgliYXNldHlwZSB0byB0aGUgc2lnbmF0dXJlIHR5cGUgb2YgaW5zdGFuY2UuCgkqIHNpZy5jIChidWlsZF9zaWduYXR1cmVfbWV0aG9kX2NhbGwpOiBEZWxldGVkIGJhc2V0eXBlIGFuZAoJaW5zdGFuY2UgcGFyYW1ldGVycywgdGhleSBjYW4gYmUgZm91bmQgYXMgdGhlIERFQ0xfQ09OVEVYVCBvZgoJZnVuY3Rpb24gYW5kIGFzIHRoZSBmaXJzdCBhcmd1bWVudCBwYXNzZWQgaW4uCgkqIGNwLXRyZWUuaDogQ2hhbmdlZCBkZWNsYXJhdGlvbiBvZiBidWlsZF9zaWduYXR1cmVfbWV0aG9kX2NhbGwuCgkqIGNhbGwuYyAoYnVpbGRfbWV0aG9kX2NhbGwpOiBEZWxldGVkIGZpcnN0IHR3byBhcmd1bWVudHMgaW4gY2FsbAoJb2YgYnVpbGRfc2lnbmF0dXJlX21ldGhvZF9jYWxsLgoJKGJ1aWxkX292ZXJfY2FsbCk6IEFkZGVkIGNhbGwgdG8gYnVpbGRfc2lnbmF0dXJlX21ldGhvZF9jYWxsLgoKVGh1IFNlcCAgNSAxNjo1MToyOCAxOTk2ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiB0eXBlY2suYyAoYnVpbGRfY19jYXN0KTogRG9uJ3QgdGFjayBhIG5vbl9sdmFsdWVfZXhwciBvbnRvIGEKCXRhcmdldF9leHByLgoKVGh1IFNlcCAgNSAxMDowNTozOCAxOTk2ICBCcmVuZGFuIEtlaG9lICA8YnJlbmRhbkBsaXNhLmN5Z251cy5jb20+CgoJKiBjdnQuYyAoY29udmVydF90b19yZWZlcmVuY2UpOiBVc2UgJSNULCBub3QgJSNELCBmb3IgZXJyb3IuCgpXZWQgU2VwICA0IDE3OjE2OjA5IDE5OTYgIEJvYiBNYW5zb24gIDxtYW5zb25AY2hhcm1lZC5jeWdudXMuY29tPgoKCSogZXhjZXB0LmMgKGV4cGFuZF9zdGFydF90cnlfc3RtdHMpOiBNb3ZlIHRvIGV4Y2VwdC5jIGluIHRoZSBiYWNrZW5kLgoJKGV4cGFuZF9lbmRfdHJ5X3N0bXRzKTogUmVtb3ZlLgoKCSogaW5pdC5jIChwZXJmb3JtX21lbWJlcl9pbml0KTogVXNlIGFkZF9wYXJ0aWFsX2VudHJ5ICgpIGluc3RlYWQKCW9mIGRpcmVjdGx5IG1hbmlwdWxhdGluZyBsaXN0cy4KCShlbWl0X2Jhc2VfaW5pdCk6IExpa2V3aXNlLgoKV2VkIFNlcCAgNCAxMjoxNDozNiAxOTk2ICBNaWtlIFN0dW1wICA8bXJzQGN5Z251cy5jb20+CgoJKiBleGNlcHQuYyAoZXhwYW5kX2V4Y2VwdGlvbl9ibG9ja3MpOiBBbHdheXMgbWFrZSBzdXJlIFVTRSBhbmQKCUNMT0JCRVIgaW5zbnMgdGhhdCBjYW1lIGF0IHRoZSBlbmQgc3RpbGwgZG8sIHRoZSBiYWNrZW5kIHJlbGllcwoJdXBvbiB0aGlzLgoKV2VkIFNlcCAgNCAwNzo0NDo0OCAxOTk2ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBjYWxsLmMgKGJ1aWxkX292ZXJfY2FsbCk6IFdlIGNhbiBvbmx5IHVzZSBhIFRBUkdFVF9FWFBSIG9mIHRoZQoJcmlnaHQgdHlwZS4KClR1ZSBTZXAgIDMgMTk6MjY6MDUgMTk5NiAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogY3Z0LmMgKGNvbnZlcnRfdG9fcmVmZXJlbmNlKTogUmV2ZXJ0IGxhc3QgY2hhbmdlLCBkb24ndCBjb21wbGFpbgoJYWJvdXQgdGVtcCB3aXRob3V0IHRhcmdldCBkZWNsLgoKVHVlIFNlcCAgMyAxMDoyMjo1NiAxOTk2ICBNaWtlIFN0dW1wICA8bXJzQGN5Z251cy5jb20+CgoJKiBkZWNsLmMgKGdyb2tkZWNsYXJhdG9yKTogRG9uJ3QgY29yZSBkdW1wIHdoZW4gdm9pZCgpIGlzIGdpdmVuLgoKVHVlIFNlcCAgMyAwMjozODo1NiAxOTk2ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBkZWNsLmMgKGNvcHlfYXJnc19wKTogRG9uJ3QgY3Jhc2guCgpGcmkgQXVnIDMwIDE0OjI2OjU3IDE5OTYgIE1pa2UgU3R1bXAgIDxtcnNAY3lnbnVzLmNvbT4KCgkqIHB0LmMgKHRzdWJzdCk6IEFuZCBzdXBwb3J0IHRlbXBsYXRlIGFyZ3MgaW5zaWRlIHRoZSBleGNlcHRpb24KCXNwZWNpZmljYXRpb24uCgoJKiBwdC5jICh0c3Vic3QpOiBBZGQgc3VwcG9ydCBmb3IgZXhjZXB0aW9uIHNwZWNpZmljYXRpb25zIGluCgl0ZW1wbGF0ZSBmdW5jdGlvbnMuCgpGcmkgQXVnIDMwIDEwOjAxOjU1IDE5OTYgIE1pa2UgU3R1bXAgIDxtcnNAY3lnbnVzLmNvbT4KCgkqIGNwLXRyZWUuZGVmIChERUNMX1NUTVQpOiBFbGltaW5hdGUgdGhlIHRocm93IHNwZWMgZmllbGQsIG9ubHkgMwoJZmllbGRzIG5vdy4KCSogY3AtdHJlZS5oIChzdGFydF9kZWNsKTogRWxpbWluYXRlIHRoZSB0aHJvdyBzcGVjIHBhcmFtZXRlci4KCShzdGFydF9mdW5jdGlvbik6IExpa2V3aXNlLgoJKHN0YXJ0X21ldGhvZCk6IExpa2V3aXNlLgoJKGdyb2tmaWVsZCk6IExpa2V3aXNlLgoJKG1ha2VfY2FsbF9kZWNsYXJhdG9yKTogQWRkIHRocm93IHNwZWMgcGFyYW1ldGVyLgoJKHNldF9xdWFsc19hbmRfc3BlYyk6IEFkZCByb3V0aW5lLgoJKiBsZXguYyAoc2V0X3F1YWxzX2FuZF9zcGVjKTogTGlrZXdpc2UuCgkqIGRlY2wuaCAoZ3Jva2RlY2xhcmF0b3IpOiBFbGltaW5hdGUgdGhlIHRocm93IHNwZWMgcGFyYW1ldGVyLgoJKiBkZWNsLmMgKHNoYWRvd190YWcpOiBFbGltaW5hdGUgdGhlIHRocm93IHNwZWMgcGFyYW1ldGVyIHRvCglncm9rZGVjbGFyYXRvci4KCShncm9rdHlwZW5hbWUpOiBMaWtld2lzZS4KCShzdGFydF9kZWNsKTogRWxpbWluYXRlIHRoZSB0aHJvdyBzcGVjIHBhcmFtZXRlci4gIEVsaW1pbmF0ZSB0aGUKCXRocm93IHNwZWMgcGFyYW1ldGVyIHRvIGdyb2tkZWNsYXJhdG9yLiAgRWxpbWluYXRlIHRoZSB0aHJvdyBzcGVjCglmaWVsZCBpbiBERUNMX1NUTVQuCgkoY3BfZmluaXNoX2RlY2wpOiBFbGltaW5hdGUgdGhlIHRocm93IHNwZWMgZmllbGQgaW4gREVDTF9TVE1ULgoJKGdyb2tmbmRlY2wpOiBSZW1vdmUgdXNlbGVzcyBzZXQgb2YgcmFpc2VzLgoJKGdyb2tkZWNsYXJhdG9yKTogRWxpbWluYXRlIHRoZSB0aHJvdyBzcGVjIHBhcmFtZXRlci4gIEVsaW1pbmF0ZQoJdGhlIHRocm93IHNwZWMgcGFyYW1ldGVyIHRvIHN0YXJ0X2RlY2wuICBQdWxsIHRoZSB0aHJvdyBzcGVjIG91dAoJb2YgdGhlIGNhbGwgZGVjbGFyYXRvci4KCShncm9rcGFybXMpOiBFbGltaW5hdGUgdGhlIHRocm93IHNwZWMgcGFyYW1ldGVyIHRvIGdyb2tkZWNsYXJhdG9yLgoJKHN0YXJ0X2Z1bmN0aW9uKTogRWxpbWluYXRlIHRoZSB0aHJvdyBzcGVjIHBhcmFtZXRlci4gIEVsaW1pbmF0ZQoJdGhlIHRocm93IHNwZWMgcGFyYW1ldGVyIHRvIGdyb2tkZWNsYXJhdG9yLgoJKHN0YXJ0X21ldGhvZCk6IExpa2V3aXNlLgoJKiBkZWNsMi5jIChncm9rZmllbGQpOiBMaWtld2lzZS4KCShncm9rYml0ZmllbGQpOiBFbGltaW5hdGUgdGhlIHRocm93IHNwZWMgcGFyYW1ldGVyIHRvIGdyb2tkZWNsYXJhdG9yLgoJKGdyb2tvcHR5cGVuYW1lKTogTGlrZXdpc2UuCgkoZmluaXNoX2ZpbGUpOiBFbGltaW5hdGUgdGhlIHRocm93IHNwZWMgcGFyYW1ldGVyIHRvCglzdGFydF9mdW5jdGlvbi4gIEFkZCB0aHJvdyBzcGVjIHRvIG1ha2VfY2FsbF9kZWNsYXJhdG9yLgoJKiBleGNlcHQuYyAoaW5pdF9leGNlcHRpb25fcHJvY2Vzc2luZyk6IEFkZCB0aHJvdyBzcGVjIHRvCgltYWtlX2NhbGxfZGVjbGFyYXRvci4gIEVsaW1pbmF0ZSB0aGUgdGhyb3cgc3BlYyBwYXJhbWV0ZXIgdG8KCXN0YXJ0X2RlY2wuCgkoZXhwYW5kX3N0YXJ0X2NhdGNoX2Jsb2NrKTogRWxpbWluYXRlIHRoZSB0aHJvdyBzcGVjIHBhcmFtZXRlciB0bwoJZ3Jva2RlY2xhcmF0b3IuCgkoZXhwYW5kX2J1aWx0aW5fdGhyb3cpOiBBZGQgdGhyb3cgc3BlYyB0byBtYWtlX2NhbGxfZGVjbGFyYXRvci4KCUVsaW1pbmF0ZSB0aGUgdGhyb3cgc3BlYyBwYXJhbWV0ZXIgdG8gc3RhcnRfZnVuY3Rpb24uCgkoc3RhcnRfYW5vbl9mdW5jKTogTGlrZXdpc2UuCgkqIGxleC5jIChtYWtlX2NhbGxfZGVjbGFyYXRvcik6IEFkZCB0aHJvdyBzcGVjIHBhcmFtZXRlci4KCShzZXRfcXVhbHNfYW5kX3NwZWMpOiBOZXcgcm91dGluZS4KCShjb25zX3VwX2RlZmF1bHRfZnVuY3Rpb24pOiBBZGQgdGhyb3cgc3BlYyB0byBtYWtlX2NhbGxfZGVjbGFyYXRvci4KCUVsaW1pbmF0ZSB0aGUgdGhyb3cgc3BlYyBwYXJhbWV0ZXIgdG8gZ3Jva2ZpZWxkLgoJKiBtZXRob2QuYyAoc3ludGhlc2l6ZV9tZXRob2QpOiBFbGltaW5hdGUgdGhlIHRocm93IHNwZWMgcGFyYW1ldGVyCgl0byBzdGFydF9mdW5jdGlvbi4KCSogcHQuYyAocHJvY2Vzc190ZW1wbGF0ZV9wYXJtKTogRWxpbWluYXRlIHRoZSB0aHJvdyBzcGVjIHBhcmFtZXRlcgoJdG8gZ3Jva2RlY2xhcmF0b3IuCgkodHN1YnN0KTogQWRkIHRocm93IHNwZWMgdG8gbWFrZV9jYWxsX2RlY2xhcmF0b3IuCgkodHN1YnN0X2V4cHIpOiBFbGltaW5hdGUgdGhlIHRocm93IHNwZWMgcGFyYW1ldGVyIHRvIHN0YXJ0X2RlY2wuCgkoZG9fZnVuY3Rpb25faW5zdGFudGlhdGlvbik6IEVsaW1pbmF0ZSB0aGUgdGhyb3cgc3BlYyBwYXJhbWV0ZXIgdG8KCWdyb2tkZWNsYXJhdG9yLiAgRWxpbWluYXRlIHRoZSB0aHJvdyBzcGVjIHBhcmFtZXRlciB0bwoJc3RhcnRfZnVuY3Rpb24uCgkqIHJ0dGkuYyAoc3ludGhlc2l6ZV90aW5mb19mbik6IEVsaW1pbmF0ZSB0aGUgdGhyb3cgc3BlYyBwYXJhbWV0ZXIKCXRvIHN0YXJ0X2Z1bmN0aW9uLgoJKiBwYXJzZS55IChkYXRhZGVmKTogUmVtb3ZlIG5vbi13aW5uaW5nIG9wdGltaXphdGlvbi4KCShkZWNsKTogTGlrZXdpc2UuCgkoZm5kZWYpOiBSZW1vdmUgYW1iaWd1b3VzIGVycm9yIHByb2R1Y3Rpb25zIHVuY292ZXJlZCBieSBncmFtbWFyCglmaXhpbmcuCgkoY29uc3RydWN0b3JfZGVjbGFyYXRvcik6IEFkZCBleGNlcHRpb25fc3BlY2lmaWNhdGlvbl9vcHQgaGVyZS4KCShjb21wb25lbnRfY29uc3RydWN0b3JfZGVjbGFyYXRvcik6IExpa2V3aXNlLgoJKGRpcmVjdF9hZnRlcl90eXBlX2RlY2xhcmF0b3IpOiBMaWtld2lzZS4KCShjb21wbGV4X2RpcmVjdF9ub3R5cGVfZGVjbGFyYXRvcik6IExpa2V3aXNlLgoJKGRpcmVjdF9hYnN0cmFjdF9kZWNsYXJhdG9yKTogTGlrZXdpc2UuCgkoZm4uZGVmMSk6IFJlbW92ZSBleGNlcHRpb25fc3BlY2lmaWNhdGlvbl9vcHQuCgkoZm4uZGVmMik6IExpa2V3aXNlLgoJKGNvbmRpdGlvbik6IExpa2V3aXNlLgoJKGluaXRkY2wwKTogTGlrZXdpc2UuCgkoaW5pdGRjbCk6IExpa2V3aXNlLgoJKG5vdHlwZV9pbml0ZGNsMCk6IExpa2V3aXNlLgoJKG5vbW9kc19pbml0ZGNsMCk6IExpa2V3aXNlLgoJKGNvbXBvbmVudF9kZWNsXzEpOiBMaWtld2lzZS4KCShjb21wb25lbnRfZGVjbGFyYXRvcik6IExpa2V3aXNlLgoJKGFmdGVyX3R5cGVfY29tcG9uZW50X2RlY2xhcmF0b3IwKTogTGlrZXdpc2UuCgkoYWZ0ZXJfdHlwZV9jb21wb25lbnRfZGVjbGFyYXRvcik6IExpa2V3aXNlLgoJKG5vdHlwZV9jb21wb25lbnRfZGVjbGFyYXRvcik6IExpa2V3aXNlLgoKV2VkIEF1ZyAyOCAwMTo0MDozMCAxOTk2ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBjYWxsLmMgKGJ1aWxkX292ZXJfY2FsbCk6IEFsc28gdXNlIGFuIElOSVRfRVhQUiB3aGVuCglpbml0aWFsaXppbmcgYW55dGhpbmcgZnJvbSBhbiBydmFsdWUuCgoJKiBjYWxsLmMgKGJ1aWxkX292ZXJfY2FsbCk6IENhbGwgc3RhYmlsaXplX3JlZmVyZW5jZSB3aGVuIGJ1aWxkaW5nCglhbiBJTklUX0VYUFIgaW5zdGVhZCBvZiBjYWxsaW5nIHRoZSBjb3B5IGN0b3IuCgoJKiBjYWxsLmMgKGpvdXN0KTogRXh0ZW5kIHRoZSBwcmV2aW91cyBjaGFuZ2UgdG8gYWxsIGNvbXBhcmlzb25zLgoKCSogZGVjbDIuYywgbWV0aG9kLmMsIGxleC5jOiBVc2UgTUFLRV9ERUNMX09ORV9PTkxZIGFuZAoJTk9fTElOS0FHRV9IRVVSSVNUSUNTLgoKCSogZGVjbDIuYyAoZmluaXNoX2ZpbGUpOiBFbWl0IGFueSBzdGF0aWNzIHRoYXQgd2VyZW4ndCBhbHJlYWR5LgoKCSogdHlwZWNrLmMgKGJ1aWxkX3N0YXRpY19jYXN0KTogSW1wbGVtZW50LgoJKiB0cmVlLmMgKGJ1aWxkX2NwbHVzX25ldyk6IEhhbmRsZSBnZXR0aW5nIGEgVEFSR0VUX0VYUFIuCgkqIGRlY2wuYyAoZ3Jva3Bhcm1zKTogVXNlIGNhbl9jb252ZXJ0X2FyZyBpbnN0ZWFkIG9mCglpbXBsaWNpdF9jb252ZXJzaW9uIGRpcmVjdGx5LgoJKGNvcHlfYXJnc19wKTogTmV3IGZuLgoJKiBjdnQuYyAoY29udmVydF90b19yZWZlcmVuY2UpOiBEb24ndCBjb21wbGFpbiBhYm91dCB0ZW1wIHdpdGgKCXN0YXRpY19jYXN0LgoJKGJ1aWxkX3VwX3JlZmVyZW5jZSk6IEhhbmRsZSBUQVJHRVRfRVhQUnMuCgkqIGNhbGwuYyAoYnVpbGRfb3Zlcl9jYWxsKTogRWxpZGUgdW5uZWNlc3NhcnkgdGVtcHMuCgkoY2FuX2NvbnZlcnQqKTogVXNlIG5ldyBvdmVybG9hZGluZyBjb2RlLgoKVHVlIEF1ZyAyNyAxMzoxMjoyMSAxOTk2ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBjYWxsLmM6IE1vdmUgVFlQRV9QVFIqX01BQ1JPUyAuLi4KCSogY3AtdHJlZS5oOiBUbyBoZXJlLgoJKiB0eXBlY2suYyAoYnVpbGRfcmVpbnRlcnByZXRfY2FzdCk6IEltcGxlbWVudC4KCgkqIGNhbGwuYyAoYWRkX2J1aWx0aW5fY2FuZGlkYXRlKTogVXNlIFRZUEVfUFRST0JfUCBpbnN0ZWFkIG9mCglwdHJfY29tcGxldGVfb2IuCgkoam91c3QpOiBJZiB3ZSdyZSBjb21wYXJpbmcgYSBmdW5jdGlvbiB0byBhIGJ1aWx0aW4gYW5kIHRoZSB3b3JzdAoJY29udmVyc2lvbiBmb3IgdGhlIGJ1aWx0aW4gaXMgd29yc2UgdGhhbiB0aGUgd29yc3QgY29udmVyc2lvbiBmb3IgdGhlCglmdW5jdGlvbiwgdGFrZSB0aGUgZnVuY3Rpb24uCgoJKiB0eXBlY2suYyAoYnVpbGRfY29uc3RfY2FzdCk6IEltcGxlbWVudC4KCShjb21wX3B0cl90dHlwZXNfY29uc3QpOiBMaWtlIGNvbXBfcHRyX3R0eXBlcywgZm9yIGNvbnN0X2Nhc3QuCgkoY29tcF9wdHJfdHR5cGVzX3JlaW50ZXJwcmV0KTogTGlrZSBjcHQsIGZvciByZWludGVycHJldF9jYXN0LgoKVHVlIEF1ZyAyNyAxMzoxNDo1OCAxOTk2ICBCb2IgTWFuc29uICA8bWFuc29uQGNoYXJtZWQuY3lnbnVzLmNvbT4KCgkqIHJ0dGkuYyAoYnVpbGRfZHluYW1pY19jYXN0KTogRG9uJ3QgdHJ5IHRvIGRlcmVmZXJlbmNlIGV4cHJ0eXBlCgl0b28gZWFybHkuICBNYWtlIHN1cmUgd2UgZXhwbG9kZSBpZiBleHBydHlwZSB0dXJucyBvdXQgdG8gYmUgYQoJTlVMTF9UUkVFIHdoZW4gaXQgc2hvdWxkbid0IGJlLgoKVHVlIEF1ZyAyNyAxMDo1NjoyMSAxOTk2ICBNaWtlIFN0dW1wICA8bXJzQGN5Z251cy5jb20+CgoJKiBjcC10cmVlLmg6IE5ldyByb3V0aW5lIG1ha2VfY2FsbF9kZWNsYXJhdG9yLgoJKiBsZXguYyAobWFrZV9jYWxsX2RlY2xhcmF0b3IpOiBEZWZpbmUgaXQuCgkqIGV4Y2VwdC5jIChpbml0X2V4Y2VwdGlvbl9wcm9jZXNzaW5nKTogVXNlIGl0LgoJKGV4cGFuZF9idWlsdGluX3Rocm93KTogTGlrZXdpc2UuCgkoc3RhcnRfYW5vbl9mdW5jKTogTGlrZXdpc2UuCgkqIGRlY2wyLmMgKGZpbmlzaF9maWxlKTogTGlrZXdpc2UuCgkqIGxleC5jIChjb25zX3VwX2RlZmF1bHRfZnVuY3Rpb24pOiBMaWtld2lzZS4KCSogcGFyc2UueTogTGlrZXdpc2UuCgkqIHB0LmMgKHRzdWJzdCk6IExpa2V3aXNlLgoKTW9uIEF1ZyAyNiAxNzo0MDowMyAxOTk2ICBNaWtlIFN0dW1wICA8bXJzQGN5Z251cy5jb20+CgoJKiBkZWNsMi5jIChncm9rdHlwZWZpZWxkKTogUmVtb3ZlIHVudXNlZCBjb2RlLgoKTW9uIEF1ZyAyNiAxNzowMDozMyAxOTk2ICBNaWtlIFN0dW1wICA8bXJzQGN5Z251cy5jb20+CgoJKiBneHguZ3BlcmY6IENoYW5nZSBUWVBFX1FVQUwgaW50byBDVl9RVUFMSUZJRVIuCgkqIHBhcnNlLnk6IExpa2V3aXNlLiAgQ2hhbmdlIG1heWJlX3R5cGVfcXVhbCBpbnRvIG1heWJlX2N2X3F1YWxpZmllci4KCUNoYW5nZSB0eXBlX3F1YWxzIGludG8gY3ZfcXVhbGlmaWVycy4gIENoYW5nZSBub25lbXB0eV90eXBlX3F1YWxzIGludG8KCW5vbmVtcHR5X2N2X3F1YWxpZmllcnMuCgkqIGhhc2guaDogUmVidWlsZC4KCgkqIGxleC5jIChtYWtlX3BvaW50ZXJfZGVjbGFyYXRvcik6IENoYW5nZSB0eXBlX3F1YWxzIGludG8KCWN2X3F1YWxpZmllcnMuCgkobWFrZV9yZWZlcmVuY2VfZGVjbGFyYXRvcik6IExpa2V3aXNlLgoKVGh1IEF1ZyAyMiAwMTowOToyMiAxOTk2ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBkZWNsLmMgKHN0YXJ0X2Z1bmN0aW9uKTogT25seSBjaGVjayBpbnRlcmZhY2VfKiBmb3IgdGVtcGxhdGVzCgl3aXRoIGZsYWdfYWx0X2V4dGVybmFsX3RlbXBsYXRlcy4KCgkqIGNhbGwuYyAoYnVpbGRfbmV3X29wKTogQ2hlY2sgZm9yIGNvbXBhcmlzb24gb2YgZGlmZmVyZW50IGVudW0gdHlwZXMuCgkoYnVpbGRfb3Zlcl9jYWxsKTogRml4IGFyZyAjIG91dHB1dC4KCgkqIHR5cGVjay5jIChidWlsZF9jb21wb25lbnRfcmVmKTogSGFuZGxlIHByZS1mb3VuZCBUWVBFX0RFQ0wuCgpXZWQgQXVnIDIxIDAwOjEzOjE1IDE5OTYgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIGNhbGwuYyAoYnVpbGRfbmV3X29wKTogQ2hlY2sgZm9yIGVycm9uZW91cyBhcmdzLgoKCSogY2FsbC5jIChidWlsZF9uZXdfbWV0aG9kX2NhbGwpOiBBZGQgbWlzc2luZyBhcmdzIHRvIGNwX2Vycm9yLgoKCSogdHJlZS5jIChlcnJvcl90eXBlKTogRG9uJ3QgcHJpbnQgcmVmZXJlbmNlLXRvLWFycmF5LgoKCSogdHlwZWNrLmMgKGNvbnZlcnRfZm9yX2Fzc2lnbm1lbnQpOiBEb24ndCBzYXkgY29udHJhdmFyaWFuY2UgZm9yCglyZW1vdmluZyBjb25zdC4KClR1ZSBBdWcgMjAgMTM6MjM6MDAgMTk5NiAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogY2FsbC5jIChidWlsZF9vdmVyX2NhbGwpOiBEaWFnbm9zZSBiYWQgY29udnMgZm9yIGB0aGlzJy4KCgkqIGxleC5jIChjb25zX3VwX2RlZmF1bHRfZnVuY3Rpb24pOiBTZXQgREVDTF9BUlRJRklDSUFMCglvbiBfY3Rvcl9hcmcuCgoJKiBjYWxsLmMgKGNvbnZlcnRfbGlrZSk6IEhhbmRsZSBiYWQgY29udnMuCgkoYnVpbGRfb3Zlcl9jYWxsKTogSGFuZGxlIGJhZCBjb252cyBiZXR0ZXIuCgoJKiBkZWNsMi5jOiAtZmFuc2ktb3ZlcmxvYWRpbmcgaXMgbm93IHRoZSBkZWZhdWx0LgoKCSogY2FsbC5jIChidWlsZF9uZXdfbWV0aG9kX2NhbGwpOiBDaGVjayBmb3IgZXJyb25lb3VzIGFyZ3MuCgoJKiBwdC5jIChpbnN0YW50aWF0ZV9jbGFzc190ZW1wbGF0ZSk6IFByb3BhZ2F0ZQoJVFlQRV9VU0VTX01VTFRJUExFX0lOSEVSSVRBTkNFLgoKVHVlIEF1ZyAyMCAxMzowOTo1NyAxOTk2ICBNaWtlIFN0dW1wICA8bXJzQGN5Z251cy5jb20+CgoJKiBjYWxsLmMgKGVuZm9yY2VfYWNjZXNzKTogQWRkIHN0YXRpYyB0byByb3V0aW5lLgoKU3VuIEF1ZyAxOCAxNDozNTo1NCAxOTk2ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBjYWxsLmMgKGJ1aWxkX3VzZXJfdHlwZV9jb252ZXJzaW9uXzEpOiBGaXggYmFkIGhhbmRsaW5nLgoJKGNvbXBhcmVfaWNzKTogTGlrZXdpc2UuCgpTYXQgQXVnIDE3IDIxOjU0OjExIDE5OTYgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIGNhbGwuYyAoc3RhbmRhcmRfY29udmVyc2lvbik6IE9vcHMuCgpTYXQgQXVnIDE3IDE2OjI4OjExIDE5OTYgIEdlb2ZmcmV5IE5vZXIgIDxub2VyQGN5Z251cy5jb20+CgoJKiBnKysuYzogVXBkYXRlIHRlc3QgZm9yIHdpbjMyICgmJiAhIGN5Z3dpbjMyKS4KClNhdCBBdWcgMTcgMDM6NDU6MzEgMTk5NiAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogdHlwZWNrLmMgKGNvbXBfcHRyX3R0eXBlc19yZWFsKTogSGFuZGxlIE9GRlNFVF9UWVBFcyBwcm9wZXJseS4KCShwdHJfcmVhc29uYWJseV9zaW1pbGFyKTogTmV3IGZuLgoJKiBjYWxsLmMgKEJBRF9SQU5LKTogTmV3IHJhbmsuCgkoSUNTX0JBRF9GTEFHKTogTmV3IG1hY3JvLgoJKHN0YW5kYXJkX2NvbnZlcnNpb24pOiBIYW5kbGUgYWxtb3N0LXJpZ2h0IHBvaW50ZXIgY29udmVyc2lvbnMuCgkocmVmZXJlbmNlX2JpbmRpbmcpOiBIYW5kbGUgYmFkIHJ2YWx1ZSBiaW5kaW5ncy4KCShhZGRfKl9jYW5kaWRhdGUpOiBTdHVmZi4KCShidWlsZF9vdmVyX2NhbGwpOiBQYXNzIGJhZCBjb252ZXJzaW9ucyB0byBjb252ZXJ0X2Zvcl9pbml0aWFsaXphdGlvbi4KCShjb21wYXJlX2ljcyk6IEhhbmRsZSBiYWQgY29udnMuCgkoam91c3QpOiBMaWtld2lzZS4KCkZyaSBBdWcgMTYgMTU6MDI6MTkgMTk5NiAgQm9iIE1hbnNvbiAgPG1hbnNvbkBjaGFybWVkLmN5Z251cy5jb20+CgoJKiBpbml0LmMgKGV4cGFuZF92ZWNfaW5pdCk6IFVzZSBwdHJkaWZmX3R5cGVfbm9kZSBpbnN0ZWFkIG9mCglpbnRlZ2VyX3R5cGVfbm9kZSB3aGVuIGNvbXB1dGluZyBwb2ludGVyIG9mZnNldHMuCgpGcmkgQXVnIDE2IDAxOjI4OjMyIDE5OTYgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIHRyZWUuYyAobHZhbHVlX3R5cGUpOiBOZXcgZm4uCgkoZXJyb3JfdHlwZSk6IE5ldyBmbi4KCSogY2FsbC5jIChvcF9lcnJvcik6IFVzZSBlcnJvcl90eXBlLgoJKGFkZF9jb252X2NhbmRpZGF0ZSk6IFVzZSBsdmFsdWVfdHlwZS4KCShhZGRfYnVpbHRpbl9jYW5kaWRhdGVzKTogTGlrZXdpc2UuCgkqIGVycm9yLmMgKGFyZ3NfYXNfc3RyaW5nKTogVXNlIGVycm9yX3R5cGUuCgpUaHUgQXVnIDE1IDE3OjI3OjEzIDE5OTYgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIHB0LmMgKGluc3RhbnRpYXRlX2RlY2wpOiBFdmFsdWF0ZSBERUNMX0lOSVRJQUwgb2YgYSBWQVJfREVDTCBoZXJlLgoJKHRzdWJzdCk6IE5vdCBoZXJlLgoKCSogZGVjbC5jIChpbml0X2RlY2xfcHJvY2Vzc2luZyk6IFdpdGggLWFuc2ksIF9fbnVsbCdzIHR5cGUgaXMgdGhlCglzaWduZWQgaW50ZWdyYWwgdHlwZSB3aXRoIHRoZSBzYW1lIG51bWJlciBvZiBiaXRzIGFzIGEgcG9pbnRlci4KCUludHJvZHVjZSBhIG5ldyB2YXJpYWJsZSBudWxsX25vZGUgZm9yIGl0LgoJKiBjcC10cmVlLmg6IEFkanVzdC4KCSogY2FsbC5jIChudWxsX3B0cl9jc3RfcCk6IEFkanVzdC4KClRodSBBdWcgMTUgMTc6MDk6NTQgMTk5NiAgTWlrZSBTdHVtcCAgPG1yc0BjeWdudXMuY29tPgoKCSogZXhjZXB0LmMgKGRvX3Vud2luZCk6IE1hcmsgJWk3IGFzIHVzZWQgb24gdGhlIFNQQVJDIHNvIHdlIGNhbgoJb3B0aW1pemUuCgpUaHUgQXVnIDE1IDAxOjM2OjQ5IDE5OTYgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIGRlY2wyLmMgKGltcG9ydF9leHBvcnRfZGVjbCk6IElnbm9yZSAjcHJhZ21hIGludGVyZmFjZSBmb3IgdGluZm8KCWZucyBvZiBjbGFzc2VzIHdpdGhvdXQgdmlydHVhbCBmdW5jdGlvbnMuCgoJKiBjYWxsLmMgKGFkZF9mdW5jdGlvbl9jYW5kaWRhdGUpOiBIYW5kbGUgYHRoaXMnIHNwZWNpYWxseS4KCShjb21wYXJlX2ljcyk6IExpa2V3aXNlLgoKVHVlIEF1ZyAxMyAxMjoxNjoxMCAxOTk2ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiB0eXBlY2suYyAoYnVpbGRfY29uZGl0aW9uYWxfZXhwcik6IEZpeCBoYW5kbGluZyBvZiBfX251bGwuCgoJKiBkZWNsMi5jIChjb21kYXRfbGlua2FnZSk6IE5ldyBmbi4KCShpbXBvcnRfZXhwb3J0X3Z0YWJsZSk6IFVzZSBpdC4KCShpbXBvcnRfZXhwb3J0X2RlY2wpOiBVc2UgaXQuCgkqIG1ldGhvZC5jIChtYWtlX3RodW5rKTogVXNlIGl0LgoKTW9uIEF1ZyAxMiAwMDowOToxOCAxOTk2ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBwdC5jIChlbmRfdGVtcGxhdGVfZGVjbCk6IElmIHdlIGRvbid0IGFjdHVhbGx5IGhhdmUgcGFybXMsIHJldHVybi4KCSogcGFyc2UueSAodGVtcGxhdGVfaGVhZGVyKTogQWNjZXB0ICd0ZW1wbGF0ZSA8PicuCgoJKiBlcnJmbi5jOiBBbGxvdyA1IGFyZ3MuCgpTdW4gQXVnIDExIDE1OjIwOjU4IDE5OTYgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIHRyZWUuYyAobWFrZV90ZW1wX3ZlYyk6IE5ldyBmbi4KCSogcHQuYyAocHVzaF90ZW1wbGF0ZV9kZWNsKTogSGFuZGxlIHBhcnRpYWwgc3BlY3MuCgkoaW5zdGFudGlhdGVfY2xhc3NfdGVtcGxhdGUpOiBMaWtld2lzZS4KCShtb3JlX3NwZWNpYWxpemVkKTogVXNlIGdldF9iaW5kaW5ncy4KCShtb3JlX3NwZWNpYWxpemVkX2NsYXNzKTogTmV3IGZuLgoJKGdldF9jbGFzc19iaW5kaW5ncyk6IE5ldyBmbi4KCShtb3N0X3NwZWNpYWxpemVkX2NsYXNzKTogTmV3IGZuLgoJKGRvX2Z1bmN0aW9uX2luc3RhbnRpYXRpb24pOiBMaXN0IGNhbmRpZGF0ZXMgZm9yIGFtYmlndW91cyBjYXNlLgoJKiBkZWNsLmMgKGR1cGxpY2F0ZV9kZWNscyk6IExvc2UgcmVmZXJlbmNlIHRvIERFQ0xfVEVNUExBVEVfTUVNQkVSUy4KCShzaGFkb3dfdGFnKTogQ2FsbCBwdXNoX3RlbXBsYXRlX2RlY2wgZm9yIHBhcnRpYWwgc3BlY2lhbGl6YXRpb25zLgoJKiBwYXJzZS55OiBMaWtld2lzZS4KCSogY3AtdHJlZS5oIChERUNMX1RFTVBMQVRFX1NQRUNJQUxJWkFUSU9OUyk6IFJlcGxhY2VzCglERUNMX1RFTVBMQVRFX01FTUJFUlMuCgkqIGNhbGwuYyAocHJpbnRfel9jYW5kaWRhdGVzKTogUmVkdWNlIGR1cGxpY2F0aW9uLgoKRnJpIEF1ZyAgOSAxNDozNjowOCAxOTk2ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBkZWNsMi5jIChsYW5nX2RlY29kZV9vcHRpb24pOiBBbGxvdyAtZmFuc2ktb3ZlcmxvYWRpbmcuCgpUaHUgQXVnICA4IDE3OjA0OjE4IDE5OTYgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIHB0LmMgKGdldF9iaW5kaW5ncyk6IE5ldyBmbi4KCShtb3N0X3NwZWNpYWxpemVkKTogTGlrZXdpc2UuCgkoZG9fZnVuY3Rpb25faW5zdGFudGlhdGlvbik6IFVzZSB0aGVtLgoJKGFkZF9tYXliZV90ZW1wbGF0ZSk6IE5ldyBmbi4KCSogY3AtdHJlZS5oIChERUNMX01BWUJFX1RFTVBMQVRFKTogTmV3IG1hY3JvLgoJKiBjYWxsLmMgKGJ1aWxkX25ld19vcCk6IEhhbmRsZSBndWlkaW5nIGRlY2xzLgoJKGJ1aWxkX25ld19mdW5jdGlvbl9jYWxsKTogTGlrZXdpc2UuCgkqIGRlY2wyLmMgKGZpbmlzaF9maWxlKTogTGlrZXdpc2UuCgoJKiBkZWNsMi5jIChtYXJrX3VzZWQpOiBEbyBzeW50aGVzaXMgaGVyZS4KCSogY2FsbC5jIChidWlsZF9tZXRob2RfY2FsbCk6IE5vdCBoZXJlLgoJKGJ1aWxkX292ZXJfY2FsbCk6IE9yIGhlcmUuCgkqIHR5cGVjay5jIChidWlsZF9mdW5jdGlvbl9jYWxsX3JlYWwpOiBPciBoZXJlLgoJKiB0cmVlLmMgKGJvdF9tYW5pcCk6IENhbGwgbWFya191c2VkIG9uIGZ1bmN0aW9ucyB1c2VkIGluIGRlZmF1bHQKCWFyZ3MuCgpUaHUgQXVnICA4IDE3OjQ4OjE2IDE5OTYgIE1pY2hhZWwgTWVpc3NuZXIgIDxtZWlzc25lckB0aWt0b2suY3lnbnVzLmNvbT4KCgkqIGRlY2wyLmMgKGltcG9ydF9leHBvcnRfdnRhYmxlKTogRGVsZXRlIGNvZGUgdGhhdCBkaXNhYmxlZCB2dGFibGUKCWhldXJpc3RpYyBvbiBzeXN0ZW1zIHdpdGggQVNNX09VVFBVVF9FWFRFUk5BTC4KCldlZCBBdWcgIDcgMTI6NDQ6MTEgMTk5NiAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogdHlwZWNrLmMgKGJ1aWxkX3hfZnVuY3Rpb25fY2FsbCk6IEhhbmRsZSBzdGF0aWMgY2FsbCBjb250ZXh0CgliZXR0ZXIuCgoJKiBkZWNsLmMgKGZpbmlzaF9mdW5jdGlvbik6IFNldCB0aGUgREVDTF9DT05URVhUIG9mIHRoZSByZXN1bHQgdG8KCXRoZSBmdW5jdGlvbiwgbm90IGl0cyBvdXRlciBibG9jay4KCgkqIGNhbGwuYyAoYnVpbGRfZmllbGRfY2FsbCk6IFBhc3MgZmllbGRzIG9uIHRvIGJ1aWxkX29wZm5jYWxsCglyZWdhcmRsZXNzIG9mIFRZUEVfT1ZFUkxPQURTX0NBTExfRVhQUi4KCShidWlsZF9tZXRob2RfY2FsbCk6IFBhc3Mgb24gdG8gYnVpbGRfbmV3X21ldGhvZF9jYWxsIHNvb25lci4KCgkqIHR5cGVjay5jIChidWlsZF9wdHJtZW1mdW5jKTogSnVzdCByZXR1cm4gd2hhdCBpbnN0YW50aWF0ZV90eXBlCglnaXZlcyB1cy4KCSogY2xhc3MuYyAoaW5zdGFudGlhdGVfdHlwZSk6IERvbid0IHB1dCBhIFBPSU5URVJfVFlQRSB0bwoJTUVUSE9EX1RZUEUgb24gYW4gZXhwcmVzc2lvbi4gIEFsc28gbWFrZSBhIGNvcHkgb2YgcmhzIGluc3RlYWQgb2YKCW1vZGlmeWluZyBpdC4KClR1ZSBBdWcgIDYgMTI6NTg6NDYgMTk5NiAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogY2FsbC5jIChjb21wYXJlX2ljcyk6IEhhbmRsZSBxdWFsX2NvbnYgYWZ0ZXIgbHZhbHVlX2NvbnYuCgkoYWRkX2J1aWx0aW5fY2FuZGlkYXRlKTogRG9uJ3QgdGFrZSBlbnVtcyBmb3IgKysuCgkoYnVpbGRfbmV3X21ldGhvZF9jYWxsKTogSGFuZGxlIG5vbi1hZ2dyZWdhdGVzIGFuZCBmaWVsZCBjYWxscy4KCU1vdmUgbmV3IG92ZXJsb2FkaW5nIGNvZGUgZnJvbS4uLgoJKiBjdnQuYzogSGVyZS4KCgkqIGRlY2wuYyAoZ3Jva3Bhcm1zKTogRG9uJ3QgY2hlY2sgZGVmYXVsdCBhcmdzIGluIHRlbXBsYXRlcy4KCk1vbiBBdWcgIDUgMTc6MTc6MDYgMTk5NiAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogY3Z0LmMgKGJ1aWxkX25ld19vcCk6IEZpeCBhcmdzIHRvIGJ1aWxkX3VuYXJ5X29wLgoJKGFkZF9idWlsdGluX2NhbmRpZGF0ZXMpOiBEb24ndCBjYWxsIHR5cGVfcHJvbW90ZXNfdG8gb24gZmxvYXQuCgoJKiBkZWNsLmMgKGdyb2twYXJtcyk6IENoZWNrIHRoZSB0eXBlIG9mIHRoZSBkZWZhdWx0IGFyZy4KCgkqIGN2dC5jIChidWlsZF9uZXdfb3ApOiBQYXNzIG5vbi1vdmVybG9hZGVkIGNhc2VzIG9uIHJhdGhlciB0aGFuCglyZXR1cm5pbmcgTlVMTF9UUkVFLgoKCSogdHlwZWNrLmMgKGJ1aWxkX3hfYmluYXJ5X29wKTogQXZvaWQgZG9pbmcgZXh0cmEgd29yay4KCShidWlsZF94X3VuYXJ5X29wKTogTGlrZXdpc2UuCgkoYnVpbGRfeF9jb25kaXRpb25hbF9leHByKTogTGlrZXdpc2UuCgkqIGN2dC5jIChidWlsZF9vdmVyX2NhbGwpOiBSZXR1cm4uCgkoYWRkX2J1aWx0aW5fY2FuZGlkYXRlKTogRml4IE1FTUJFUl9SRUYuCgkoYnVpbGRfbmV3X29wKTogTGlrZXdpc2UuCgpNb24gQXVnICA1IDE3OjA3OjQ3IDE5OTYgIE1pa2UgU3R1bXAgIDxtcnNAY3lnbnVzLmNvbT4KCgkqIG1ldGhvZC5jIChidWlsZF9vdmVybG9hZF9uYW1lKTogUHV0IGJ1ZyBmaXggaW50byBjb2RlIGJ1dCBsZWF2ZQoJZGlzYWJsZWQgZm9yIG5vdyBzbyB3ZSBjYW4gYmUgYnVnIGNvbXBhdGlibGUgd2l0aCBvbGRlciByZWxlYXNlcwoJdGhhdCBkbyByZXBlYXRzIGluY29ycmVjdGx5LiAgSW4gdGhlIGZ1dHVyZSwgd2UgY2FuIGVuYWJsZSBpdC4KCk1vbiBBdWcgIDUgMTM6NDY6MjggMTk5NiAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogY3Z0LmMgKGNvbnZlcnRfbGlrZSk6IERvbid0IGNhbGwgYnVpbGRfY3BsdXNfbmV3IHR3aWNlLgoKCSogY2FsbC5jLCBjcC10cmVlLmgsIGN2dC5jLCBkZWNsMi5jLCBpbml0LmMsIG1ldGhvZC5jLCBwdC5jLCB0eXBlY2suYzoKCUNvbnRyb2wgbmV3IG92ZXJsb2FkaW5nIGNvZGUgd2l0aCAtZmFuc2ktb3ZlcmxvYWRpbmcuCgpTdW4gQXVnICA0IDE1OjI5OjExIDE5OTYgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIGN2dC5jIChidWlsZF9vdmVyX2NhbGwpOiBDYWxsIGJ1aWxkX2NwbHVzX25ldy4KCSogY2FsbC5jIChidWlsZF9tZXRob2RfY2FsbCk6IExpa2V3aXNlLgoJKiB0eXBlY2suYyAoYnVpbGRfZnVuY3Rpb25fY2FsbF9yZWFsKTogTGlrZXdpc2UuCgkoYnVpbGRfY29uZGl0aW9uYWxfZXhwcik6IElmIGJvdGggb3BlcmFuZHMgYXJlIFRBUkdFVF9FWFBScywgd3JhcAoJdGhlIENPTkRfRVhQUiBpbiBhIFRBUkdFVF9FWFBSIHNvIHRoZXkgdXNlIHRoZSBzYW1lIHNsb3QuCgoJKiBjdnQuYyAoYnVpbGRfdXBfcmVmZXJlbmNlKTogUHJvcGFnYXRlIElORElSRUNUX0JJTkQgdG8KCXJlY3Vyc2l2ZSBjYWxscy4KCSogdHlwZWNrLmMgKGNvbXBsZXRlX3R5cGUpOiBQcm9wYWdhdGUKCVRZUEVfTkVFRFNfe0NPTlNUUlVDVElORyxERVNUUlVDVE9SfS4KClNhdCBBdWcgIDMgMTQ6MDU6MDcgMTk5NiAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogY3Z0LmMgKGpvdXN0KTogTW9yZSA/OiBrbHVkZ2luZy4gIFNpZ2guCgkoYnVpbGRfb3Zlcl9jYWxsKTogRG9uJ3QgdHJ5IHRvIHN5bnRoZXNpemUgZ2xvYmFsIGZucy4KCgkqIHNlYXJjaC5jIChsb29rdXBfY29udmVyc2lvbnMpOiBVc2UgYmluZm8gbWFya2luZy4KClNhdCBBdWcgIDMgMTI6MzM6NDIgMTk5NiAgQm9iIE1hbnNvbiAgPG1hbnNvbkBjaGFybWVkLmN5Z251cy5jb20+CgoJKiBzZWFyY2guYyAoYnVpbGRfbWlfbWF0cml4KTogVXNlIHRoZSBjb3JyZWN0IHZhbHVlIG9mIGNpZAoJd2hlbiBkZXRlcm1pbmluZyB0aGUgbmV3IG1pX3NpemUuCgpTYXQgQXVnICAzIDAxOjI3OjQxIDE5OTYgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIGN2dC5jIChhZGRfYnVpbHRpbl9jYW5kaWRhdGVzKTogRG8gY29uc2lkZXIgdHlwZSBjb252ZXJzaW9uIG9wcwoJZm9yIHRoZSBmaXJzdCBwYXJtcyBvZiArPSBldCBhbC4KCShzdHJpcF90b3BfcXVhbHMpOiBOZXcgZm4uCgkocmVmZXJlbmNlX2JpbmRpbmcpOiBVc2UgaXQgaW5zdGVhZCBvZiBUWVBFX01BSU5fVkFSSUFOVC4KCShpbXBsaWNpdF9jb252ZXJzaW9uKTogTGlrZXdpc2UuCgkoYWRkX2J1aWx0aW5fY2FuZGlkYXRlcyk6IEJlIGNhcmVmdWwgYWJvdXQgYXJyYXlzLgoJKGJ1aWxkX25ld19tZXRob2RfY2FsbCk6IEhhbmRsZSB2dGFibGUgb3B0aW1pemF0aW9uLgoKRnJpIEF1ZyAgMiAwMToyNjo1OSAxOTk2ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBjcC10cmVlLmggKExPT0tVUF9OT19URU1QX0JJTkQpOiBOZXcgZmxhZy4KCSogY3Z0LmMgKHJlZmVyZW5jZV9iaW5kaW5nKTogVXNlIGl0LgoJKGltcGxpY2l0X2NvbnZlcnNpb24pOiBVc2UgaXQuCgkoYWRkX2J1aWx0aW5fY2FuZGlkYXRlLCBDT05EX0VYUFIpOiBVc2UgaXQuCgoJKiBjdnQuYyAoYnVpbGRfbmV3X2Z1bmN0aW9uX2NhbGwpOiBDaGVjayBmb3IgZXJyb3IgYXJncy4KCgkqIHR5cGVjay5jIChjb21wdHlwZXMpOiBKdXN0IGNoZWNrIERFUklWRURfRlJPTV9QLCBub3QgVU5JUVVFTFkuCgoJKiBneHguZ3BlcmY6IEFkZCBfX251bGwuCgkqIGhhc2guaDogUmVnZW5lcmF0ZS4KCSogbGV4Lmg6IEFkZCBSSURfTlVMTC4KCSogbGV4LmMgKGluaXRfbGV4KTogQ3JlYXRlIG51bGxfcG9pbnRlcl9ub2RlIGhlcmUsIHN0aWNrIGl0IGluCglSSURfTlVMTC4KCSogZGVjbC5jIChpbml0X2RlY2xfcHJvY2Vzc2luZyk6IFN0aWxsIHNldCBpdHMgdHlwZSBoZXJlLgoJKiBjdnQuYyAoY3BfY29udmVydF90b19wb2ludGVyKTogRG9uJ3QgcHJvZHVjZSBudWxsX3BvaW50ZXJfbm9kZS4KCShjb252ZXJ0X3RvX3BvaW50ZXJfZm9yY2UpOiBMaWtld2lzZS4KCShudWxsX3B0cl9jc3RfcCk6IENoZWNrIGZvciBudWxsX3BvaW50ZXJfbm9kZTsgb25seSBhY2NlcHQgKHZvaWQqKTAKCWlmICghIHBlZGFudGljKS4KCSogY2FsbC5jIChjb252ZXJ0X2hhcnNobmVzcyk6IFVzZSBudWxsX3B0cl9jc3RfcC4KCSogdHlwZWNrLmMgKGNvbnZlcnRfZm9yX2Fzc2lnbm1lbnQpOiBMaWtld2lzZS4gIERvbid0IHByb2R1Y2UKCW51bGxfcG9pbnRlcl9ub2RlLgoKCSogZXJyb3IuYyAoYXJnc19hc19zdHJpbmcpOiBIYW5kbGUgbGlzdHMgb2YgYWN0dWFsIGFyZ3MsIHRvby4KCSogY3Z0LmMgKG51bGxfcHRyX2NzdCk6IFN1cHBvcnQgKHZvaWQqKTAgZm9yIG5vdy4KCShidWlsZF91c2VyX3R5cGVfY29udmVyc2lvbl8xKTogSW1wcm92ZSBkaWFnbm9zdGljcy4KCShidWlsZF9uZXdfZnVuY3Rpb25fY2FsbCk6IExpa2V3aXNlLgoJKGJ1aWxkX29iamVjdF9jYWxsKTogTGlrZXdpc2UuCgkoYnVpbGRfbmV3X21ldGhvZF9jYWxsKTogTGlrZXdpc2UuICBNb3ZlIGNhbGwgYmVmb3JlIGRlZiBkaWFnbm9zdGljLi4uCgkoYnVpbGRfb3Zlcl9jYWxsKTogSGVyZS4KCgkqIGN2dC5jIChidWlsZF9uZXdfbWV0aG9kX2NhbGwpOiBEb24ndCBjb21wbGFpbiBhYm91dCBubyBtYXRjaCBpZgoJTE9PS1VQX1NQRUNVTEFUSVZFTFkuCgkoYnVpbGRfb3Zlcl9jYWxsKTogRml4ICd0aGlzJyBmb3IgdmlydHVhbCBmbi4KCShidWlsZF9uZXdfbWV0aG9kX2NhbGwpOiBBZGQgZGlhZ25vc3RpYy4KClRodSBBdWcgIDEgMTY6NDU6MDkgMTk5NiAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogY3Z0LmMgKGFkZF9mdW5jdGlvbl9jYW5kaWRhdGUpOiBFeHBlY3QgJ3RoaXMnIGFuZCAnaW5fY2hyZycgZm9yCgljb25zdHJ1Y3RvcnMgdG8gYmUgcGFzc2VkIGluLgoJKGJ1aWxkX292ZXJfY2FsbCk6IExpa2V3aXNlLgoJKGJ1aWxkX3VzZXJfdHlwZV9jb252ZXJzaW9uXzEpOiBQYXNzIHRoZW0gaW4uCgkoY29udmVydF9saWtlKTogTGlrZXdpc2UuCgkoYnVpbGRfb2JqZWN0X2NhbGwpOiBIYW5kbGUgb3ZlcmxvYWRlZCBjb252ZXJzaW9ucy4KCShidWlsZF9vdmVyX2NhbGwpOiBQYXNzIHRoZSByaWdodCBhcmdzIHRvIGJ1aWxkX3Zmbl9yZWYuCgkoc3RhbmRhcmRfY29udmVyc2lvbik6IEZpeCBwbWYgY29udnMuCgkoam91c3QpOiBIYW5kbGUgY29tcGFyaW5nIHN0YXRpY3MgYW5kIG5vbi1zdGF0aWNzLgoJKGJ1aWxkX25ld19tZXRob2RfY2FsbCk6IE5ldyBmbi4KCSogY2FsbC5jIChidWlsZF9tZXRob2RfY2FsbCk6IENhbGwgaXQgaWYgTkVXX09WRVIuCgpUaHUgQXVnICAxIDE2OjA2OjE0IDE5OTYgIE1pa2UgU3R1bXAgIDxtcnNAY3lnbnVzLmNvbT4KCgkqIGxleC5jIChkb19pZGVudGlmaWVyKTogRG9uJ3QgdXNlICVPIG9uIElERU5USUZJRVJfT1BOQU1FX1BzLCB1c2UKCSVEIGluc3RlYWQuCgpUaHUgQXVnICAxIDE1OjI0OjAyIDE5OTYgIE1pa2UgU3R1bXAgIDxtcnNAY3lnbnVzLmNvbT4KCgkqIGV4Y2VwdC5jIChleHBhbmRfdGhyb3cpOiBVc2UgbWF5YmVfYnVpbGRfY2xlYW51cF9hbmRfZGVsZXRlCglpbnN0ZWFkIG9mIGp1c3QgbWF5YmVfYnVpbGRfY2xlYW51cCBzbyB0aGF0IHdlIGRlYWxsb2NhdGUgdGhlCgl0aHJvd24gb2JqZWN0LgoKVGh1IEF1ZyAgMSAxNToxODowMCAxOTk2ICBCcmVuZGFuIEtlaG9lICA8YnJlbmRhbkBsaXNhLmN5Z251cy5jb20+CgoJKiBkZWNsMi5jIChmaW5pc2hfcHJldnRhYmxlX3ZhcmRlY2wpOiBNYWtlIG5vbi1zdGF0aWMgZm9yIHB0LmMncyB1c2UuCgkqIGNwLXRyZWUuaCAoZmluaXNoX3ByZXZ0YWJsZV92YXJkZWNsKTogQWRkIGRlY2wuCgpUaHUgQXVnICAxIDExOjUzOjUxIDE5OTYgIEJvYiBNYW5zb24gIDxtYW5zb25AY2hhcm1lZC5jeWdudXMuY29tPgoKCSogcHQuYyAoaW5zdGFudGlhdGVfY2xhc3NfdGVtcGxhdGUpOiBDYWxsIGNvbXBsZXRlX3R5cGUuICBBbHNvLCBpZgoJd2UncmUgYXQgdGhlIGVuZCBvZiB0aGUgZmlsZSBhbmQgd2UganVzdCBpbnN0YW50aWF0ZWQgYSB0ZW1wbGF0ZQoJY2xhc3Mgd2l0aCBhIHZ0YWJsZSwgY2FsbCBmaW5pc2hfcHJldnRhYmxlX3ZhcmRlY2wuCgoJKiBlcnJvci5jIChkdW1wX2RlY2wpOiBEb24ndCBleHBsb2RlIChvciBleHBsb2RlIG1vcmUgZ3JhY2VmdWxseQoJYXMgYXBwcm9wcmlhdGUpIGlmIHRoZSBvYmplY3QgYmVpbmcgZHVtcGVkIGhhcyBhIG51bGwgdHlwZS4KCShkdW1wX2V4cHIpOiBMaWtld2lzZS4KCgkqIHNlYXJjaC5jIChidWlsZF9taV9tYXRyaXgpOiBFbnN1cmUgdGhhdCBtaV9zaXplIGlzIGxhcmdlIGVub3VnaCwKCWJ5IGNvdW50aW5nIHRoZSBudW1iZXIgb2Ygbm9kZXMgdGhhdCB3ZSdsbCBuZWVkIGJlZm9yZSBhbGxvY2F0aW5nCgl0aGUgYXJyYXkuCgkobG9va3VwX2ZuZmllbGRzKTogRml4IGNvbW1lbnQuCgkoYnJlYWR0aF9maXJzdF9zZWFyY2gpOiBGaXggY29tbWVudC4KCldlZCBKdWwgMzEgMDk6NTc6MDUgMTk5NiAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogcHQuYyAoaW5zdGFudGlhdGVfY2xhc3NfdGVtcGxhdGUpOiBQcm9wYWdhdGUgVFlQRV9QQUNLRUQgYW5kCglUWVBFX0FMSUdOLgoJKiBjbGFzcy5jIChmaW5pc2hfc3RydWN0KTogQ2FsbCBjcGx1c19kZWNsX2F0dHJpYnV0ZXMgaGVyZS4KCShmaW5pc2hfc3RydWN0XzEpOiBOb3QgaGVyZS4KCSogY3AtdHJlZS5oOiBBZGp1c3QuCgoJKiBwdC5jICh0eXBlX3VuaWZpY2F0aW9uKTogTmV3IHBhcmFtZXRlciBTVFJJQ1QuCgkodW5pZnkpOiBJZiBTVFJJQ1QsIGRvbid0IGFsbG93IGN2IGFkZGl0aW9uIG9yIGJhc2UgZGVkdWN0aW9uLgoJKiBjYWxsLmMsIGNsYXNzLmMsIGN2dC5jLCBjcC10cmVlLmg6IEFkanVzdC4KClR1ZSBKdWwgMzAgMTM6MDY6MTMgMTk5NiAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogc2VhcmNoLmMgKGdldF90ZW1wbGF0ZV9iYXNle19yZWN1cnNpdmV9KTogTmV3IGZucy4KCSogcHQuYyAobW9yZV9zcGVjaWFsaXplZCk6IE5ldyBmbi4KCShkb19mdW5jdGlvbl9pbnN0YW50aWF0aW9uKTogVXNlIGl0LgoJKHVuaWZ5KTogSGFuZGxlIGJhc2UgZGVkdWN0aW9uLgoJKiBjdnQuYyAoam91c3QpOiBVc2UgbW9yZV9zcGVjaWFsaXplZC4KCURvbid0IGFyYml0cmFyaWx5IGNob29zZSBiZXR3ZWVuIG5vbi1idWlsdGluIGNhbmRpZGF0ZXMuCgkoYnVpbGRfb3Zlcl9jYWxsKTogQ2FsbCByZXF1aXJlX2NvbXBsZXRlX3R5cGUuCgoJKiBkZWNsLmMgKHN0YXJ0X2Z1bmN0aW9uKTogU3RhdGljcyBhcmUgc3RhdGljIGV2ZW4gaW4gYSAjcHJhZ21hCglpbnRlcmZhY2UgZmlsZS4KCgkqIGRlY2wyLmMgKGltcG9ydF9leHBvcnRfdnRhYmxlKTogRGlzYWJsZSB2dGFibGUgaGV1cmlzdGljIG9uCglzeXN0ZW1zIHdpdGggQVNNX09VVFBVVF9FWFRFUk5BTC4KCgkqIGN2dC5jIChjb21wYXJlX2ljcyk6IEZpeCBjb21wYXJpc29uIG9mIFBNRU1fQ09OViBhbmQgQkFTRV9DT05WLgoJKHN0YW5kYXJkX2NvbnZlcnNpb24pOiBObyBzdGQgY29udiB0byBlbnVtIHR5cGUuCgoJKiBjdnQuYyAoc3RhbmRhcmRfY29udmVyc2lvbik6IEZpeCBvcmRlciBvZiBhcmdzIHRvIERFUklWRURfRlJPTV9QCglmb3IgcHRtJ3MuCgoJKiBjdnQuYyAocmVmZXJlbmNlX2JpbmRpbmcpOiBCaW5kIGRpcmVjdGx5IHRvIGEgYmFzZSBzdWJvYmplY3Qgb2YKCWEgY2xhc3MgcnZhbHVlLgoKCSogY3Z0LmMgKGJ1aWxkX25ld19vcCk6IEVuZm9yY2UgYWNjZXNzIGNvbnRyb2wuCgpUdWUgSnVsIDMwIDA5OjIyOjUzIDE5OTYgIEJvYiBNYW5zb24gIDxtYW5zb25AY2hhcm1lZC5jeWdudXMuY29tPgoKCSogdHlwZWNrMi5jIChwcm9jZXNzX2luaXRfY29uc3RydWN0b3IpOiBXaGVuIHNjYW5uaW5nIHRoZQoJdW5pb24gZm9yIGEgbmFtZWQgZmllbGQsIHNraXAgdGhpbmdzIHRoYXQgYXJlbid0IEZJRUxEX0RFQ0xzLgoKCSogbWV0aG9kLmMgKHN5bnRoZXNpemVfbWV0aG9kKTogRG9uJ3Qgc2NhbiBmbmRlY2wncyBydGwgaWYKCXdlJ3JlIGF0IHRoZSBlbmQgb2YgdGhlIGZpbGU7IGp1c3QgYXNzdW1lIHRoZSBmdW5jdGlvbiBjYW4ndAoJYmUgaW5saW5lZC4KCk1vbiBKdWwgMjkgMTU6NDg6MzAgMTk5NiAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogY3Z0LmMgKGJ1aWxkX2J1aWx0aW5fY2FuZGlkYXRlKTogU3RpY2sgYSBkdW1teSBjb252ZXJzaW9uIGluIGlmCglpdCBmYWlsZWQuCgoJKiBjdnQuYyAoYnVpbGRfdXNlcl90eXBlX2NvbnZlcnNpb25fMSk6IEhhbmRsZSBvdmVybG9hZGVkCgljb252ZXJzaW9uIG9wcy4KCgkqIGN2dC5jIChhZGRfYnVpbHRpbl9jYW5kaWRhdGVzKTogRG9uJ3QgY29uc2lkZXIgdHlwZSBjb252ZXJzaW9uCglvcGVyYXRvcnMgZm9yIHRoZSBmaXJzdCBwYXJhbWV0ZXIgb2Ygb3BlcmF0b3I9LgoKTW9uIEp1bCAyOSAxNTozMzo1NSAxOTk2ICBCb2IgTWFuc29uICA8bWFuc29uQGNoYXJtZWQuY3lnbnVzLmNvbT4KCgkqIHR5cGVjay5jIChjb21wbGV0ZV90eXBlKTogT25seSBjYWxsIGxheW91dF90eXBlIGlmIHdlJ3JlIG5vdAoJZXhwYW5kaW5nIGEgdGVtcGxhdGUuCgpNb24gSnVsIDI5IDE0OjQwOjM4IDE5OTYgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIGN2dC5jIChjb21wYXJlX2ljcyk6IE9vcHMuCgoJKiBjdnQuYyAob3BfZXJyb3IpOiBPb3BzLgoKCSogY3AtdHJlZS5kZWY6IEFkZCBSVkFMVUVfQ09OViwgcmVuYW1lIEVYQUNUX0NPTlYgdG8gSURFTlRJVFlfQ09OVi4KCSogY3Z0LmM6IEFkZCBJREVOVElUWV9SQU5LIGJlZm9yZSBvdGhlcnMuICBVc2UgcmVhbF9sdmFsdWVfcC4KCShidWlsZF9jb252KTogVXNlIHRoZW0uCgkoaW1wbGljaXRfY29udmVyc2lvbik6IFVzZSB0aGVtLgoJKGNvbnZlcnRfbGlrZSk6IEhhbmRsZSB0aGVtLgoJKGJ1aWxkX25ld19vcCk6IEhhbmRsZSBidWlsdGluIENPTkRfRVhQUiBhZ2Fpbi4KCShhZGRfYnVpbHRpbl9jYW5kaWRhdGVzKTogU3RyaXAgY3YtcXVhbHMuICBGaXggb29wcy4gIEluY2x1ZGUgZW51bXMKCWluIGxpc3RzIG9mIHR5cGVzIGZvciBDT05EX0VYUFIuCgkoYWRkX2J1aWx0aW5fY2FuZGlkYXRlKTogQWRkIGVudW0gY2FuZGlkYXRlcyBmb3IgQ09ORF9FWFBSLgoKTW9uIEp1bCAyOSAxMjowNTo0MCAxOTk2ICBCb2IgTWFuc29uICA8bWFuc29uQGNoYXJtZWQuY3lnbnVzLmNvbT4KCgkqIHR5cGVjay5jIChidWlsZF9tb2RpZnlfZXhwcik6IEFsd2F5cyBhdHRlbXB0IHRvIGJ1aWxkIGEgY2FsbCB0bwoJdGhlIGFzc2lnbm1lbnQgb3BlcmF0b3IsIGV2ZW4gaWYgd2UncmUgdXNpbmcgYSBkZWZhdWx0IG9uZS4KCShjb252ZXJ0X2Zvcl9pbml0aWFsaXphdGlvbik6IENhbGwgY29tcGxldGVfdHlwZS4KCk1vbiBKdWwgMjkgMTE6MjU6MDggMTk5NiAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogY3Z0LmMgKHJlZmVyZW5jZV9iaW5kaW5nKTogQSBSRUZfQklORCBnZXRzIHRoZSByZWZlcmVuY2UgdHlwZS4KCShpbXBsaWNpdF9jb252ZXJzaW9uKTogTGlrZXdpc2UuCgkoY29udmVydF9saWtlKTogTGlrZXdpc2UuCgkoY29tcGFyZV9pY3MpOiBMaWtld2lzZS4KCShjb21wYXJlX3F1YWwpOiBMaWtld2lzZS4KCShwcmludF96X2NhbmRpZGF0ZXMpOiBIYW5kbGUgbm8gY2FuZGlkYXRlcy4KCShidWlsZF9uZXdfb3ApOiBEb24ndCBoYW5kbGUgYnVpbHRpbiBDT05EX0VYUFIgZm9yIG5vdy4KClNhdCBKdWwgMjcgMTE6Mjc6NDcgMTk5NiAgU3RhbiBTaGVicyAgPHNoZWJzQGFuZHJvcy5jeWdudXMuY29tPgoKCSogY3Z0LmMgKGJ1aWxkX2J1aWx0aW5fY2FuZGlkYXRlKTogSW5pdCBsb2NhbCB2YXIgaW4gYW4gQU5TSSB3YXkuCgpGcmkgSnVsIDI2IDAxOjA3OjIyIDE5OTYgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIGN2dC5jIChqb3VzdCk6IElmIHRoZSBjYW5kaWRhdGVzIGFyZSB0aGUgc2FtZSwgYXJiaXRyYXJpbHkgcGljayBvbmUuCgoJKiBjdnQuYyAoYnVpbGRfYnVpbHRpbl9jYW5kaWRhdGUpOiBPb3BzLgoJKGJ1aWxkX25ld19vcCk6IE9vcHMuCgoJKiBtZXRob2QuYyAoYnVpbGRfb3BmbmNhbGwpOiBQYXNzIENPTkRfRVhQUiBvbi4KCSogY3Z0LmMgKGJ1aWxkX2J1aWx0aW5fY2FuZGlkYXRlKTogUmVvcmdhbml6ZSwgc3VwcG9ydCBDT05EX0VYUFIuCgkoYWRkX2J1aWx0aW5fY2FuZGlkYXRleyxzfSk6IExpa2V3aXNlLgoJKGFkZF9idWlsdGluX2NhbmRpZGF0ZXMpOiBMaWtld2lzZS4KCShwcmludF96X2NhbmRpZGF0ZXMsIG9wX2Vycm9yLCBidWlsZF9uZXdfb3ApOiBMaWtld2lzZS4KCSh0eXBlX2RlY2F5c190byk6IE5ldyBmbi4KCSogbGV4LmMgKGluaXRfbGV4KTogSnVzdCBzYXkgPzogZm9yIENPTkRfRVhQUi4KClRodSBKdWwgMjUgMDk6MzM6MzMgMTk5NiAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogdHlwZWNrLmMgKGNvbXBsZXRlX3R5cGUpOiBDYWxsIGxheW91dF90eXBlIHJhdGhlciB0aGFuIGJ1aWxkaW5nCglhIG5ldyBhcnJheSB0eXBlLgoKCSogY3Z0LmMgKGFkZF9idWlsdGluX2NhbmRpZGF0ZSk6IFBvaW50ZXIgYXJpdGhtZXRpYyBjYW5kaWRhdGVzCglvbmx5IHVzZSBwdHJkaWZmX3QuCgpXZWQgSnVsIDI0IDEyOjQ1OjA4IDE5OTYgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIGN2dC5jOiBBbHdheXMgY29tcGlsZSB0aGUgbmV3IG92ZXJsb2FkaW5nIGNvZGUgKGJ1dCBkb24ndCB1c2UgaXQpLgoJKGltcGxpY2l0X2NvbnZlcnNpb24pOiBBZGQgYSBCQVNFX0NPTlYgd2hlbiBjb252ZXJ0aW5nIHRvCgl0aGUgc2FtZSBjbGFzcyB0eXBlLgoJKGNvbnZlcnRfbGlrZSk6IEhhbmRsZSBCQVNFX0NPTlYuCgpUdWUgSnVsIDIzIDEyOjQ2OjMwIDE5OTYgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIGN2dC5jIChidWlsZF9uZXdfb3ApOiBTdXBwb3J0IHtNQVgsTUlOfV9FWFBSLgoJKGFkZF9idWlsdGluX2NhbmRpZGF0ZSk6IExpa2V3aXNlLgoKCU5FV19PVkVSIGNoYW5nZXM6CgkqIHR5cGVjay5jIChidWlsZF94X2Z1bmN0aW9uX2NhbGwpOiBUcnkgYW4gb3BlcmF0b3IgZnVuY3Rpb24KCXdoZW5ldmVyIHdlIGNhbGwgYW4gb2JqZWN0IG9mIGNsYXNzIHR5cGUuCgkqIG1ldGhvZC5jIChidWlsZF9vcGZuY2FsbCk6IFBhc3MgQ0FMTF9FWFBScyB0aHJvdWdoLgoJKiBjdnQuYyAoaW1wbGljaXRfY29udmVyc2lvbik6IERvIGNvbnN0LXJlZiBjYXNlIGZpcnN0LgoJKGFkZF9jb252X2NhbmRpZGF0ZSwgYnVpbGRfb2JqZWN0X2NhbGwsIG9wX2Vycm9yKTogTmV3IGZucy4KCShwdHJfY29tcGxldGVfb2IsIFRZUEVfUFRST0JfUCk6IHZvaWQgaXMgbm90IGFuIG9iamVjdCB0eXBlLgoJKHthZGQsYnVpbGR9X2J1aWx0aW5fY2FuZGlkYXRleyxzfSwgcHJpbnRfel9jYW5kaWRhdGVzKTogRGlzcGxheQoJYnVpbHRpbiBjYW5kaWRhdGVzLgoJKGJ1aWxkX25ld19vcCk6IEhhbmRsZSBDQUxMX0VYUFIuICBEb24ndCB0cnkgdG8gZGVjYXkgdm9pZC4KCUZhbGwgYmFjayBvbiBwcmVpbmNyZW1lbnQgaGFuZGxpbmcuICBVc2Ugb3BfZXJyb3IuCglIYW5kbGUgd2Fybl9zeW50aC4KCShjb252ZXJ0X2xpa2UpOiBQYXNzIElORElSRUNUX0JJTkQuICBEb24ndCB0cnkgdG8gZG8gYW55dGhpbmcgd2l0aAoJYW4gZXJyb3JfbWFya19ub2RlLgoJKGJ1aWxkX292ZXJfY2FsbCk6IEhhbmRsZSBQUk9NT1RFX1BST1RPVFlQRVMgYW5kIGVsbGlwc2lzIHByb21vdGlvbnMKCXByb3Blcmx5LgoKTW9uIEp1bCAyMiAxNjoyMTo1NSAxOTk2ICBCb2IgTWFuc29uICA8bWFuc29uQGNoYXJtZWQuY3lnbnVzLmNvbT4KCgkqIHB0LmMgKHRzdWJzdF9leHByKTogSGFuZGxlIENPTlRJTlVFX1NUTVQuCgpNb24gSnVsIDIyIDE1OjM4OjU4IDE5OTYgIE1pa2UgU3R1bXAgIDxtcnNAY3lnbnVzLmNvbT4KCgkqIHR5cGVjay5jIChidWlsZF9jb21wb25lbnRfcmVmXzEpOiBVc2UgYnVpbGRfY29tcG9uZW50X3JlZgoJaW5zdGVhZCBvZiBvcGVuIGNvZGluZyBpdCBoZXJlLgoKTW9uIEp1bCAyMiAxMjoxODo1NCAxOTk2ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBnKysuYyAobWFpbik6IERvbid0IGxpbmsgd2l0aCAtbGcrKy4KCglORVdfT1ZFUiBjaGFuZ2VzOgoJKiBjdnQuYyAoY29udmVydF90b19yZWZlcmVuY2UpOiBEb24ndCB1c2UgY29udmVydF9mcm9tX3JlZmVyZW5jZSBvbgoJcmVzdWx0IG9mIGJ1aWxkX3R5cGVfY29udmVyc2lvbi4KCShjcF9jb252ZXJ0KTogT25seSBjYWxsIGJ1aWxkX21ldGhvZF9jYWxsIGZvciBjdG9ycyBpZgoJYnVpbGRfdHlwZV9jb252ZXJzaW9uIGZhaWxlZC4KCShwdHJfY29tcGxldGVfb2IpOiBOZXcgZnVuY3Rpb24uCgkoVFlQRV9QVFJ7LE9CLE1FTX1fUCk6IE5ldyBtYWNyb3MuCgkoe2FkZCxidWlsZH1fYnVpbHRpbl9jYW5kaWRhdGV7LHN9KTogTmV3IGZ1bmN0aW9ucy4KCShwcmludF96X2NhbmRpZGF0ZXMpOiBIYW5kbGUgYnVpbHRpbnMuCgkoYnVpbGRfdXNlcl90eXBlX2NvbnZlcnNpb25fMSk6IERvbid0IHVzZSBjb252ZXJzaW9uIGZucyBmb3IKCWNvbnZlcnRpbmcgdG8gYSBiYXNlIHR5cGUuCgkoYnVpbGRfdXNlcl90eXBlX2NvbnZlcnNpb25fMSk6IFNldCBJQ1NfVVNFUl9GTEFHIG9uIEFNQklHX0NPTlZzLgoJKGJ1aWxkX3VzZXJfdHlwZV9jb252ZXJzaW9uKTogVXNlIGNvbnZlcnRfZnJvbV9yZWZlcmVuY2UuCgkoYnVpbGRfbmV3X29wKTogTmV3IGZ1bmN0aW9uLgoJKGJ1aWxkX292ZXJfY2FsbCk6IEZpeCBoYW5kbGluZyBvZiBtZXRob2RzLgoJKGNvbXBhcmVfaWNzKTogSGFuZGxlIEFNQklHX0NPTlYgcHJvcGVybHkuCgkqIHR5cGVjazIuYzogSW5jcmVtZW50IGFib3J0IGNvdW50LgoJKiBtZXRob2QuYyAoYnVpbGRfb3BmbmNhbGwpOiBGb3J3YXJkIG1vc3QgcmVxdWVzdHMgdG8gYnVpbGRfbmV3X29wLgoJKiBjcC10cmVlLmggKElTX09WRVJMT0FEX1RZUEUpOiBUd2Vhay4KCkZyaSBKdWwgMTkgMTc6NTk6MjkgMTk5NiAgQnJlbmRhbiBLZWhvZSAgPGJyZW5kYW5AbGlzYS5jeWdudXMuY29tPgoKCSogZXJyb3IuYyAoZHVtcF9leHByLCBjYXNlIENPTlNUUlVDVE9SLCBjYXNlIENBU1RfRVhQUik6IFRha2Ugb3V0CglpbnZhbGlkIHNlY29uZCBhcmd1bWVudCB0byBkdW1wX2V4cHJfbGlzdC4KCkZyaSBKdWwgMTkgMTQ6MDQ6MDUgMTk5NiAgTWlrZSBTdHVtcCAgPG1yc0BjeWdudXMuY29tPgoKCSogZGVjbC5jIChsb29rdXBfbmFtZV9yZWFsKTogTWFrZSBzdXJlIHdlIGRvIG9iai0+WDo6aSBjb3JyZWN0bHkuCgpUaHUgSnVsIDE4IDE0OjQ4OjIzIDE5OTYgIEJvYiBNYW5zb24gIDxtYW5zb25AY2hhcm1lZC5jeWdudXMuY29tPgoKCSogZGVjbDIuYyAoaW1wb3J0X2V4cG9ydF92dGFibGUpOiBBU01fT1VUUFVUX0VYVEVSTkFMLCBub3QKCUFTU0VNQkxFX0VYVEVSTkFMLgoKTW9uIEp1bCAxNSAxNzo0ODo0MyAxOTk2ICBNaWtlIFN0dW1wICA8bXJzQGN5Z251cy5jb20+CgoJKiB0eXBlY2syLmMgKHByb2Nlc3NfaW5pdF9jb25zdHJ1Y3Rvcik6IE5ldyBwZWR3YXJuIGZvciB1c2luZyB7IH0KCXRvIGluaXRpYWxpemUgYSBwb2ludGVyIHRvIG1lbWJlciBmdW5jdGlvbi4KCSogdHlwZWNrLmMgKGJ1aWxkX3B0cm1lbWZ1bmMxKTogQXZvaWQgdXNlIG9mIGRpZ2VzdF9pbml0IHNvIHRoYXQKCXdlIGNhbiBhdm9pZCB0aGUgbmV3IGVycm9yLgoKTW9uIEp1bCAxNSAxNTo0MjowMyAxOTk2ICBNaWtlIFN0dW1wICA8bXJzQGN5Z251cy5jb20+CgoJKiB0eXBlY2suYyAoYnVpbGRfcHRybWVtZnVuYzEpOiBOZXcgZnVuY3Rpb24gdG8gaGlkZSBkZXRhaWxzIG9mCglwb2ludGVyIHRvIG1lbWJlciBmdW5jdGlvbnMgYmV0dGVyLgoKTW9uIEp1bCAxNSAxNDoyMzowMiAxOTk2ICBNaWtlIFN0dW1wICA8bXJzQGN5Z251cy5jb20+CgoJKiBpbml0LmMgKHJlc29sdmVfb2Zmc2V0X3JlZik6IFJlc29sdmUgT0ZGU0VUX1JFRnMgdGhhdCBhcmUKCW1ldGhvZHMgaW50byB0aGUgYWN0dWFsIG1ldGhvZCwgYXMgd2Uga25vdyB0aGUgaW1wbGllZCBvYmplY3QgaXMKCW5vdCB1c2VkLgoKTW9uIEp1bCAxNSAxMzowODoyOSAxOTk2ICBCcmVuZGFuIEtlaG9lICA8YnJlbmRhbkBsaXNhLmN5Z251cy5jb20+CgoJKiBwYXJzZS55IChtYXliZWNvbW1hX3dhcm4pOiBPbmx5IGVtaXQgdGhlIHBlZHdhcm4gaWYgd2UncmUgbm90CglpbnNpZGUgYSBzeXN0ZW0gaGVhZGVyLgoKRnJpIEp1bCAxMiAxNjozMDowNSAxOTk2ICBCb2IgTWFuc29uICA8bWFuc29uQGNoYXJtZWQuY3lnbnVzLmNvbT4KCgkqIGNhbGwuYyAoYnVpbGRfbWV0aG9kX2NhbGwpOiBDYWxsIGNvbXBsZXRlX3R5cGUgb24gdGhlCglpbnN0YW5jZSB0eXBlLgoKVGh1IEp1bCAxMSAxNzoxNjo0MCAxOTk2ICBNaWtlIFN0dW1wICA8bXJzQGN5Z251cy5jb20+CgoJKiB0eXBlY2suYyAoYnVpbGRfY29tcG9uZW50X3JlZik6IEFsd2F5cyBidWlsZCB1cCBhbiBPRkZTRVRfUkVGCglmb3Igb2JqX3B0ci0+ZnVuYyBzbyB0aGF0IHdlIGNhbiBrbm93IHdoaWNoIG9iamVjdCB0byB1c2UgaW4gYQoJbWV0aG9kIGNhbGwuCgpXZWQgSnVsIDEwIDE5OjM2OjM3IDE5OTYgIE1pa2UgU3R1bXAgIDxtcnNAY3lnbnVzLmNvbT4KCgkqIHR5cGVjay5jIChidWlsZF9wdHJtZW1mdW5jKTogUmVtb3ZlIHNvcnJ5LCBub3cgd2UgY2FuIGNhc3QKCWFyb3VuZCB0aGluZ3MuICBBbHNvIGltcHJvdmUgbWFpbnRhaW5hYmlsaXR5LgoKV2VkIEp1bCAxMCAxODoyMDoxMSAxOTk2ICBCb2IgTWFuc29uICA8bWFuc29uQGNoYXJtZWQuY3lnbnVzLmNvbT4KCgkqIGRlY2wuYyAoZ3Jva2RlY2xhcmF0b3IpOiBDaGVjayBmb3Igb3ZlcmZsb3cgd2hlbiBldmFsdWF0aW5nIGFuCglhcnJheSBkaW1lbnNpb24uCgpXZWQgSnVsIDEwIDE3OjI2OjE5IDE5OTYgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIGN2dC5jIChjcF9jb252ZXJ0KTogRG9uJ3QgY2hlY2sgZm9yIGFtYmlndWl0eSB3aXRoIGNvbnN0cnVjdG9yCglpZiBORVdfT1ZFUi4KCgkqIHR5cGVjay5jIChidWlsZF94X2Z1bmN0aW9uX2NhbGwpOiBQYXNzIGZ1bmN0aW9uIG92ZXJsb2FkCglxdWVzdGlvbnMgdG8gbmV3IG92ZXJsb2FkaW5nIGNvZGUgaWYgTkVXX09WRVIuCgkqIGluaXQuYyAoZXhwYW5kX2FnZ3JfaW5pdF8xKTogT25seSBjaGVjayBmb3IgdHlwZSBjb252ZXJzaW9uIG9wcwoJaWYgd2UncmUgZG9pbmcgY29weS1pbml0aWFsaXphdGlvbiAoaS5lLiBMT09LVVBfT05MWUNPTlZFUlRJTkcpLgoJRG9uJ3QgY2hlY2sgZm9yIGFtYmlndWl0eSB3aXRoIGNvbnN0cnVjdG9yIGlmIE5FV19PVkVSLgoJKiBjdnQuYyAoY29udmVydF90b19yZWZlcmVuY2UpOiBEZXJlZmVyZW5jZSB0aGUgcmVzdWx0IG9mIGEgdHlwZQoJY29udmVyc2lvbiBvcGVyYXRvci4KCShidWlsZF9jb252KTogUHJvcGFnYXRlIElDU19VU0VSX0ZMQUcuCgkoaW1wbGljaXRfY29udmVyc2lvbik6IENhbGwgaW5zdGFudGlhdGVfdHlwZS4KCVBhc3MgTE9PS1VQX09OTFlDT05WRVJUSU5HIGluc3RlYWQgb2YgTE9PS1VQX05PUk1BTC4KCShhZGRfZnVuY3Rpb25fY2FuZGlkYXRlKTogRml4IGN2LXF1YWxzIG9uIGFyZ3R5cGUuCgkocHJpbnRfel9jYW5kaWRhdGVzKTogTmV3IGZ1bmN0aW9uLgoJKGJ1aWxkX25ld19mdW5jdGlvbl9jYWxsKTogQ2FsbCBpdC4KCShidWlsZF91c2VyX3R5cGVfY29udmVyc2lvbl8xKTogSWYgTE9PS1VQX09OTFlDT05WRVJUSU5HLCBkb24ndAoJY29uc2lkZXIgbm9uLWNvbnZlcnRpbmcgY29uc3RydWN0b3JzLgoJQ2FsbCBwcmludF96X2NhbmRpZGF0ZXMuCglSZXR1cm4gYW4gQU1CSUdfQ09OViBmb3IgYW4gYW1iaWd1b3VzIGNvbnZlcnNpb24uCgkoYnVpbGRfdXNlcl90eXBlX2NvbnZlcnNpb24pOiBIYW5kbGUgQU1CSUdfQ09OVi4KCShjb252ZXJ0X2xpa2UpOiBGaXggdGVzdCBmb3IgYnVpbGRpbmcgVEFSR0VUX0VYUFIuCglDYWxsIGluc3RhbnRpYXRlX3R5cGUuCglIYW5kbGUgQU1CSUdfQ09OViBhbmQgTFZBTFVFX0NPTlYuCgkoYnVpbGRfb3Zlcl9jYWxsKTogSGFuZGxlIDAgYXJncyBhbmQgZWxsaXBzaXMuCgkqIGNwLXRyZWUuZGVmOiBBZGQgQU1CSUdfQ09OVi4KClR1ZSBKdWwgIDkgMTc6NDg6NDggMTk5NiAgTWlrZSBTdHVtcCAgPG1yc0BjeWdudXMuY29tPgoKCSogZGVjbC5jIChsb29rdXBfbmFtZV9yZWFsKTogSWYgd2UgZmluZCBtZW0gaW4gb2JqIHdoZW4gcGFyc2luZwoJYG9iai0+bWVtJywgbWFrZSBzdXJlIHdlIHJldHVybiB0aGUgcmlnaHQgdmFsdWUuCgpUdWUgSnVsICA5IDE2OjExOjI4IDE5OTYgIEJvYiBNYW5zb24gIDxtYW5zb25AY2hhcm1lZC5jeWdudXMuY29tPgoKCSogc2VhcmNoLmMgKGdldF9iYXNlX2Rpc3RhbmNlKTogQ2FsbCBjb21wbGV0ZV90eXBlLgoKVHVlIEp1bCAgOSAxMjo0NjozNCAxOTk2ICBNaWtlIFN0dW1wICA8bXJzQGN5Z251cy5jb20+CgoJKiBkZWNsLmMgKHN0b3JlX2JpbmRpbmdzKTogTWFrZSBzdGF0aWMuCgpNb24gSnVsICA4IDE2OjQyOjMxIDE5OTYgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIGluaXQuYyAoZXhwYW5kX2FnZ3JfaW5pdF8xKTogRG9uJ3QgY2hlY2sgdHlwZSBjb252ZXJzaW9ucyBpZgoJTkVXX09WRVIuCgoJKiBjdnQuYyAoel9jYW5kaWRhdGUpOiBQdXQgYmFjayB0ZW1wbGF0ZSBmaWVsZC4KCShhZGRfZnVuY3Rpb25fY2FuZGlkYXRlKTogU2V0IGl0LgoJKGFkZF90ZW1wbGF0ZV9jYW5kaWRhdGUpOiBMaWtld2lzZS4KCShqb3VzdCk6IFVzZSBpdC4KCShjb21wYXJlX3F1YWwpOiBIYW5kbGUgcmVmZXJlbmNlcyBhbmQgcG9pbnRlcnMgdG8gbWVtYmVycy4KCShjb21wYXJlX2ljcyk6IEhhbmRsZSByZWZlcmVuY2UgYmluZGluZ3MuCgoJKiBkZWNsLmMgKGR1cGxpY2F0ZV9kZWNscyk6IFByb3BhZ2F0ZSBERUNMX09ORV9PTkxZLgoKTW9uIEp1bCAgOCAxNjoxODo1NiAxOTk2ICBCb2IgTWFuc29uICA8bWFuc29uQGNoYXJtZWQuY3lnbnVzLmNvbT4KCgkqIGNhbGwuYyAoY29tcHV0ZV9jb252ZXJzaW9uX2Nvc3RzKTogQ2FsbCBjb21wbGV0ZV90eXBlLgoKCSogdHJlZS5jICh2ZWNfYmluZm9fbWVtYmVyKTogVXNlIGNvbXB0eXBlcyBpbnN0ZWFkIG9mIGNvbXBhcmluZwoJcG9pbnRlcnMsIHNvIHdlIGNhbiBoYW5kbGUgdGVtcGxhdGUgcGFyYW1ldGVycy4KCkZyaSBKdWwgIDUgMTY6NTE6NTMgMTk5NiAgQm9iIE1hbnNvbiAgPG1hbnNvbkBjaGFybWVkLmN5Z251cy5jb20+CgoJKiBjdnQuYyAoY3BfY29udmVydF90b19wb2ludGVyKTogV2UgaGF2ZSB0byBjYWxsIGNvbXBsZXRlX3R5cGUKCWhlcmU7IGxldCdzIG1ha2UgaXQgZXhwbGljaXQgaW5zdGVhZCBvZiBhIHNpZGUgZWZmZWN0IG9mIGFuCgllcnJvciBjaGVjay4KCldlZCBKdWwgIDMgMTY6Mjk6NTEgMTk5NiAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogY3Z0LmMgKHpfY2FuZGlkYXRlKTogUmVtb3ZlIHRlbXBsYXRlIGZpZWxkLgoJKHJlZmVyZW5jZV9iaW5kaW5nKTogSGFuZGxlIGJpbmRpbmcgdG8gdGVtcG9yYXJ5LgoJKGltcGxpY2l0X2NvbnZlcnNpb24pOiBMaWtld2lzZS4KCShhZGRfZnVuY3Rpb25fY2FuZGlkYXRlKTogSGFuZGxlIGFydGlmaWNpYWwgY29uc3RydWN0b3IgcGFybXMuCglIYW5kbGUgZnVuY3Rpb25zIHdpdGggdG9vIGZldyBwYXJtcy4KCShhZGRfdGVtcGxhdGVfY2FuZGlkYXRlKTogTmV3IGZ1bmN0aW9uLgoJKGJ1aWxkX3VzZXJfdHlwZV9jb252ZXJzaW9uXzEpOiBIYW5kbGUgY29uc3RydWN0b3JzLgoJKGNvbnZlcnRfbGlrZSk6IExpa2V3aXNlLgoJKGJ1aWxkX292ZXJfY2FsbCk6IExpa2V3aXNlLgoJKGJ1aWxkX25ld19mdW5jdGlvbl9jYWxsKTogU3VwcG9ydCB0ZW1wbGF0ZXMuCgkoY29tcGFyZV9pY3MpOiBGaXggcmVmZXJlbmNlLCBpbmhlcml0YW5jZSBoYW5kbGluZy4KCk1vbiBKdWwgIDEgMjI6NTg6MTggMTk5NiAgQm9iIE1hbnNvbiAgPG1hbnNvbkBjaGFybWVkLmN5Z251cy5jb20+CgoJKiBkZWNsLmM6IEFkZCBzaWduZWRfc2l6ZV96ZXJvX25vZGUuCgkoaW5pdF9kZWNsX3Byb2Nlc3NpbmcpOiBCdWlsZCBpdC4KCSogY2xhc3MuYyAocHJlcGFyZV9mcmVzaF92dGFibGUpOiBVc2UgaXQgaW5zdGVhZCBvZiBzaXplX3plcm9fbm9kZQoJd2hlbiB3ZSdyZSB0cnlpbmcgdG8gbWFrZSBhIG5lZ2F0aXZlIGRlbHRhLgoKTW9uIEp1bCAgMSAxNzo1NjoxOSAxOTk2ICBCcmVuZGFuIEtlaG9lICA8YnJlbmRhbkBsaXNhLmN5Z251cy5jb20+CgoJU3RvcCBkb2luZyB0aGlzIGRhbW4gaW5kZXg9PXN0cmNociB2YXJpYWJsZSBuYW1lIGNvbmZ1c2lvbi4KCSogY2xhc3MuYyAoYWRkX3ZpcnR1YWxfZnVuY3Rpb24pOiBDaGFuZ2UgbG9jYWwgdmFyIElOREVYIHRvIGJlCgluYW1lZCBJRFguCgkoYWRkX21ldGhvZCk6IExpa2V3aXNlLgoJKiBsZXguYyAocHJpbnRfcGFyc2Vfc3RhdGlzdGljcyk6IExpa2V3aXNlLgoJKiBzZWFyY2guYyAobWFrZV9tZW1vaXplZF90YWJsZV9lbnRyeSk6IExpa2V3aXNlLgoJKGxvb2t1cF9mbmZpZWxkc19oZXJlKTogTGlrZXdpc2UuCgkobG9va3VwX2ZpZWxkKTogTGlrZXdpc2UuCgkobG9va3VwX2ZuZmllbGRzKTogTGlrZXdpc2UuCgkoZ2V0X2Jhc2VsaW5rcyk6IExpa2V3aXNlLgoJKiBzaWcuYyAoYnVpbGRfc2lnbmF0dXJlX3RhYmxlX2NvbnN0cnVjdG9yKTogTGlrZXdpc2UuCgkoYnVpbGRfc2lnbmF0dXJlX21ldGhvZF9jYWxsKTogTGlrZXdpc2UuCgkqIHR5cGVjay5jIChidWlsZF94X2FycmF5X3JlZik6IENoYW5nZSBJTkRFWCBwYXJtIHRvIGJlIG5hbWVkIElEWC4KCShnZXRfbWVtYmVyX2Z1bmN0aW9uX2Zyb21fcHRyZnVuYyk6IExpa2V3aXNlLgoJKGJ1aWxkX3B0cm1lbWZ1bmMpOiBDaGFuZ2UgbG9jYWwgdmFyIElOREVYIHRvIGJlIElEWC4KCShjX2V4cGFuZF9zdGFydF9jYXNlKTogTGlrZXdpc2UuCgpTYXQgSnVuIDI5IDE0OjA1OjQ2IDE5OTYgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIGN2dC5jIChjcF9jb252ZXJ0X3RvX3BvaW50ZXIpOiBNb3ZlIHVzZXItZGVmaW5lZCB0eXBlIGNvbnZlcnNpb24KCWhhbmRsaW5nIHRvIGJlZm9yZSBleHRyYWN0aW9uIG9mIFRZUEVfUFRSTUVNRlVOQ19GTl9UWVBFLgoJKGNvbnZlcnRfdG9fcmVmZXJlbmNlKTogVXNlIGJ1aWxkX3R5cGVfY29udmVyc2lvbiB0byBjb252ZXJ0IHRvCgl0aGUgcmVmZXJlbmNlIHR5cGUgZGlyZWN0bHkuCgkoc3RhbmRhcmRfY29udmVyc2lvbik6IEZpeCB2b2lkKiBjYXNlLCBub24tY29udmVyc2lvbnMuCgkocmVmZXJlbmNlX2JpbmRpbmcpOiBGaXggZXhwciA9PSAwIGNhc2UsIG5vbi1jb252ZXJzaW9ucy4KCShjb252ZXJ0X2xpa2UpOiBTdXBwb3J0IFJFRl9CSU5ELgoJKGNvbXBhcmVfcXVhbCk6IFNwbGl0IG91dCBmcm9tIGNvbXBhcmVfaWNzLgoJKGNvbXBhcmVfaWNzKTogVXNlIGl0LCBoYW5kbGUgaWNzZXMgd2l0aCBvbmx5IGEgcXVhbF9jb252LgoKCSogaW5pdC5jIChleHBhbmRfdmVjX2luaXQpOiBEb24ndCBjcmFzaCBpZiBkZWNsIGlzIE5VTEwuCgpGcmkgSnVuIDI4IDExOjUyOjUxIDE5OTYgIFN0YW4gU2hlYnMgIDxzaGVic0BhbmRyb3MuY3lnbnVzLmNvbT4KCgkqIG1wdy1jb25maWcuaW46IE5ldyBmaWxlLCBjb25maWd1cnkgZm9yIE1hYyBNUFcuCgkqIG1wdy1tYWtlLnNlZDogTmV3IGZpbGUsIG1ha2VmaWxlIGVkaXRpbmcgZm9yIE1QVy4KClRodSBKdW4gMjcgMTU6MTg6MzAgMTk5NiAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogcHQuYyAoaW5zdGFudGlhdGVfY2xhc3NfdGVtcGxhdGUpOiBDYWxsIHJlcG9fdGVtcGxhdGVfdXNlZC4KCgkqIHNlYXJjaC5jIChsb29rdXBfY29udmVyc2lvbnMpOiBPbmx5IGxvb2t1cCBjb252ZXJzaW9ucyBpbgoJY29tcGxldGUgdHlwZXMuCgpUaHUgSnVuIDI3IDEyOjU5OjUzIDE5OTYgIEJyZW5kYW4gS2Vob2UgIDxicmVuZGFuQGxpc2EuY3lnbnVzLmNvbT4KCgkqIGNwLXRyZWUuZGVmOiBSZW5hbWVkIGZyb20gdHJlZS5kZWYsIHRvIGF2b2lkIGNvbmZ1c2lvbiB3aXRoCglnY2MncyB0cmVlLmRlZi4KCSogY3AtdHJlZS5oLCBsZXguYzogSW5jbHVkZSBjcC10cmVlLmRlZi4KCSogTWFrZWZpbGUuaW4gKENYWF9UUkVFX0gpOiBSZWZlcmVuY2UgY3AtdHJlZS5kZWYuCgpXZWQgSnVuIDI2IDE4OjI5OjQ3IDE5OTYgIEJvYiBNYW5zb24gIDxtYW5zb25AY2hhcm1lZC5jeWdudXMuY29tPgoKCSogaW5pdC5jIChidWlsZF92ZWNfZGVsZXRlXzEpOiBDYWxsIGNvbXBsZXRlX3R5cGUuCgpNb24gSnVuIDI0IDE3OjE3OjMyIDE5OTYgIE1pa2UgU3R1bXAgIDxtcnNAY3lnbnVzLmNvbT4KCgkqIGV4Y2VwdC5jIChzdGFydF9hbm9uX2Z1bmMpOiBNYWtlIHN1cmUgYW5vbnltb3VzIGZ1bmN0aW9ucyBhcmUKCW5ldmVyIGV4dGVybmFsLgoKRnJpIEp1biAyMSAxNToxMDo1OCAxOTk2ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBkZWNsLmMgKGZpbmlzaF9mdW5jdGlvbik6IElmIGZ1bmN0aW9uX2RlcHRoID4gMSwgc2V0IG5lc3RlZC4KCgkqIGRlY2wyLmMgKGdyb2tiaXRmaWVsZCk6IFJldmVydCBCb2IncyBjaGFuZ2UuCgkqIGNsYXNzLmMgKGZpbmlzaF9zdHJ1Y3RfMSk6IEZpeCBoYW5kbGluZyBvZiBuYW1lZCBiaXRmaWVsZCB3aWR0aHMuCgpUaHUgSnVuIDIwIDIzOjM1OjM4IDE5OTYgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIHB0LmMgKGFkZF9wZW5kaW5nX3RlbXBsYXRlKTogSGFuZGxlIHR5cGVzLgoJKGxvb2t1cF90ZW1wbGF0ZV9jbGFzcyk6IFdpdGggLWZleHRlcm5hbC10ZW1wbGF0ZXMsIGp1c3QgYWRkIHRoZSBjbGFzcwoJdG8gcGVuZGluZ190ZW1wbGF0ZXMgaW5zdGVhZCBvZiBpbnN0YW50aWF0aW5nIGl0IG5vdy4KCSogZGVjbDIuYyAoZmluaXNoX2ZpbGUpOiBIYW5kbGUgdHlwZXMgaW4gcGVuZGluZ190ZW1wbGF0ZXMuCgpUaHUgSnVuIDIwIDE0OjA4OjQwIDE5OTYgIEJvYiBNYW5zb24gIDxtYW5zb25AY2hhcm1lZC5jeWdudXMuY29tPgoKCSogZGVjbDIuYyAoZ3Jva2JpdGZpZWxkKTogSGFuZGxlIGNvbnN0YW50IGRlY2xzIGFwcHJvcHJpYXRlbHkuCglHaXZlIGFuIGFwcHJvcHJpYXRlIGVycm9yIG1lc3NhZ2Ugbm93IGluc3RlYWQgb2Ygc3Bld2luZyBjb3JlCglsYXRlci4KClRodSBKdW4gMjAgMTM6MDE6NTEgMTk5NiAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogZGVjbDIuYzogRG9uJ3QgdHVybiBvbiB0aHVua3MgYnkgZGVmYXVsdCBmb3Igbm93LgoKV2VkIEp1biAxOSAxMTozNzowNCAxOTk2ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiB0eXBlY2suYyAoY29tcGxldGVfdHlwZSk6IEhhbmRsZSBlcnJvcl9tYXJrX25vZGUuCgkoY29tbW9uX3R5cGUsIE9GRlNFVF9UWVBFKTogSGFuZGxlIHRlbXBsYXRlX3R5cGVfcGFybXMuCgpUdWUgSnVuIDE4IDEwOjAyOjE1IDE5OTYgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIHB0LmMgKGluc3RhbnRpYXRlX2RlY2wpOiBJZiBhdF9lb2YsIGNhbGwgaW1wb3J0X2V4cG9ydF9kZWNsCglyZWdhcmRsZXNzIG9mIERFQ0xfSU5MSU5FLgoKCSogdHlwZWNrLmMgKG1hcmtfYWRkcmVzc2FibGUpOiBTZXQgVFJFRV9BRERSRVNTQUJMRSBvbiBDT05TVFJVQ1RPUnMuCgoJKiBjbGFzcy5jIChmaW5pc2hfc3RydWN0X2JpdHMpOiBDb3B5IFRZUEVfU0laRS4KCgkqIHJ0dGkuYyAoYnVpbGRfZHluYW1pY19jYXN0KTogU3VwcG9ydCB0ZW1wbGF0ZXMuCgkqIHRyZWUuZGVmOiBTdXBwb3J0IERZTkFNSUNfQ0FTVF9FWFBSLgoJKiBwdC5jICh0c3Vic3RfY29weSk6IExpa2V3aXNlLgoJKiBkZWNsMi5jIChidWlsZF9leHByX2Zyb21fdHJlZSk6IExpa2V3aXNlLgoKTW9uIEp1biAxNyAxNToyMzozNiAxOTk2ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiB0eXBlY2suYyAoYnVpbGRfc3RhdGljX2Nhc3QpOiBTdXBwb3J0IHRlbXBsYXRlcy4KCShidWlsZF9jb25zdF9jYXN0KTogTGlrZXdpc2UuCgkqIHRyZWUuZGVmOiBTdXBwb3J0IENPTlNUL1NUQVRJQ19DQVNUX0VYUFIuCgkqIHB0LmMgKHRzdWJzdF9jb3B5KTogTGlrZXdpc2UuCgkqIGRlY2wyLmMgKGJ1aWxkX2V4cHJfZnJvbV90cmVlKTogTGlrZXdpc2UuCgpTdW4gSnVuIDE2IDEyOjMzOjU3IDE5OTYgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIGRlY2wyLmMgKGZpbmlzaF92dGFibGVfdmFyZGVjbCk6IERvbid0IHRydXN0CglUUkVFX1NZTUJPTF9SRUZFUkVOQ0VEIGZvciB2dGFibGVzIG9mIGxvY2FsIGNsYXNzZXMuCgpGcmkgSnVuIDE0IDE4OjEzOjM2IDE5OTYgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIHB0LmMgKHRzdWJzdF9jb3B5KTogSGFuZGxlIG9wZXJhdG9yIFQuCgpXZWQgSnVuIDEyIDE3OjUyOjQwIDE5OTYgIEJyZW5kYW4gS2Vob2UgIDxicmVuZGFuQGxpc2EuY3lnbnVzLmNvbT4KCgkqIGluaXQuYyAoYnVpbGRfZGVsZXRlKTogTW92ZSBjcmVhdGlvbiBvZiBQQVJNUyBpbnNpZGUgdGVzdCBvZgoJVFlQRV9IQVNfREVTVFJVQ1RPUiwgc2luY2UgaXQncyBuZXZlciB1c2VkIG91dHNpZGUgb2YgdGhhdCBibG9jay4KClR1ZSBKdW4gMTEgMTU6MDk6MTggMTk5NiAgQm9iIE1hbnNvbiAgPG1hbnNvbkBjaGFybWVkLmN5Z251cy5jb20+CgoJKiB0eXBlY2suYyAoYnVpbGRfY29uZGl0aW9uYWxfZXhwcik6IERvbid0IGFzc3VtZSB0aGF0Cgl0aGUgYXJndW1lbnRzIHRvID86IGFyZSBhbHdheXMgcG9pbnRlcnMgb3IgcmVjb3Jkcy4KClR1ZSBKdW4gMTEgMTM6NTY6MjMgMTk5NiAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogZGVjbDIuYyAoaW1wb3J0X2V4cG9ydF9kZWNsKTogU3RpbGwgZW1pdCBzdGF0aWMvd2Vhay9jb21kYXQKCWNvcGllcyBvZiBpbmxpbmUgdGVtcGxhdGUgZnVuY3Rpb25zIHdpdGggLWZuby1pbXBsaWNpdC10ZW1wbGF0ZXMuCgpUdWUgSnVuIDExIDExOjQyOjEzIDE5OTYgIEJvYiBNYW5zb24gIDxtYW5zb25AY2hhcm1lZC5jeWdudXMuY29tPgoKCSogaW5pdC5jIChidWlsZF9kZWxldGUpOiBEZXRlcm1pbmUgdGhlIGNvbXBsZXRlIGJhc2V0eXBlCglwYXRoIHRvIHRoZSBkZXN0cnVjdG9yIHdlJ3JlIGNhbGxpbmcuCgpGcmkgSnVuICA3IDE1OjMwOjEwIDE5OTYgIEJvYiBNYW5zb24gIDxtYW5zb25AY2hhcm1lZC5jeWdudXMuY29tPgoKCSogZGVjbC5jIChidWlsZF9lbnVtZXJhdG9yKTogQWx3YXlzIGNvcHkgdGhlIElOVEVHRVJfQ1NUIHVzZWQgdG8KCWluaXRpYWxpemUgdGhlIGVudW0sIGJlY2F1c2Ugd2UgcmVhbGx5IGFuZCB0cnVseSBkb24ndCBrbm93IHdoZXJlCglpdCBjYW1lIGZyb20uCgkoc3RhcnRfZW51bSk6IERvbid0IGNvcHkgaW50ZWdlcl96ZXJvX25vZGUgYmVjYXVzZQoJYnVpbGRfZW51bWVyYXRvciB3aWxsIGRvIGl0LgoKRnJpIEp1biAgNyAxMToxMTowOSAxOTk2ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBkZWNsLmMgKGZpbmlzaF9mdW5jdGlvbik6IERvIGFjY2VzcyBjb250cm9sIG9uIGJhc2UgZGVzdHJ1Y3RvcnMuCgoJKiBwdC5jICh0c3Vic3QsIGNhc2UgRlVOQ1RJT05fREVDTCk6IFNldCB1cAoJSURFTlRJRklFUl9HTE9CQUxfVkFMVUUgZm9yIG1lbWJlciBmdW5jdGlvbnMgc28gcHVzaGRlY2wgZG9lc24ndAoJaG9zZSB1cy4KCkZyaSBKdW4gIDcgMTA6Mzc6MzMgMTk5NiAgTWlrZSBTdHVtcCAgPG1yc0BjeWdudXMuY29tPgoKCSogY3Z0LmMgKGJ1aWxkX3VwX3JlZmVyZW5jZSk6IElmIHdlIGhhdmUgYWxyZWFkeSBleHRlbmRlZCB0aGUKCWxpZmV0aW1lIG9mIHRoZSB0ZW1wb3JhcnksIGRvbid0IHRyeSBpdCBhZ2Fpbi4KCSogdHlwZWNrLmMgKGNfZXhwYW5kX3JldHVybik6IERvbid0IHRyeSBhbmQgY29udmVydCB0aGUgcmV0dXJuCgl2YWx1ZSB0d2ljZSB3aGVuIHdlIHdhbnQgYSByZWZlcmVuY2UsIG9uY2UgaXMgZW5vdWdoLgoKVHVlIEp1biAgNCAxNTo0MTo0NSAxOTk2ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBwdC5jICh0c3Vic3RfZXhwciwgY2FzZSBERUNMX1NUTVQpOiBEb24ndCBwYXNzCglMT09LVVBfT05MWUNPTlZFUlRJTkcgYXQgYWxsIGZvciBub3cuCgoJKiBzZWFyY2guYyAoYWRkX2NvbnZlcnNpb25zKTogUHV0IHRoZSBjb252ZXJzaW9uIGZ1bmN0aW9uIGluCglUUkVFX1ZBTFVFLCB0aGUgYmFzZXR5cGUgaW4gVFJFRV9QVVJQT1NFLgoJKiBjdnQuYyAoYnVpbGRfdHlwZV9jb252ZXJzaW9uKTogQWRqdXN0LgoJKiBjdnQuYyAoYnVpbGRfZXhwcl90eXBlX2NvbnZlcnNpb24pOiBBZGp1c3QuCgkqIGNhbGwuYyAodXNlcl9oYXJzaG5lc3MpOiBBZGp1c3QuCgpNb24gSnVuICAzIDE1OjMwOjUyIDE5OTYgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIG1ldGhvZC5jIChlbWl0X3RodW5rKTogUHJldGVuZCB0aGlzIGlzIGEgRlVOQ1RJT05fREVDTCBmb3IgdGhlCgliYWNrZW5kJ3MgYmVuZWZpdC4KCk1vbiBKdW4gMTAgMTg6NTg6MTkgMTk5NiAgTWlrZSBTdHVtcCAgPG1yc0BjeWdudXMuY29tPgoKCSogZXhjZXB0LmMgKGV4cGFuZF9zdGFydF9jYXRjaF9ibG9jayk6IEFkZCBhIGR1bW15IHJlZ2lvbiwgaWYgd2UKCWdldCBhbiBlcnJvciwgc28gdGhhdCB3ZSBjYW4gYXZvaWQgY29yZSBkdW1waW5nIGxhdGVyLgoKRnJpIE1heSAzMSAxNDo1NjoxMyAxOTk2ICBNaWtlIFN0dW1wICA8bXJzQGN5Z251cy5jb20+CgoJKiBjcC10cmVlLmggKE9GRlNFVF9SRUYpOiBSZW1vdmUuCgkqIHRyZWUuZGVmIChDUF9PRkZTRVRfUkVGKTogUmVuYW1lIHRvIE9GRlNFVF9SRUYuCgkqIGV4cHIuYyAoY3BsdXNfZXhwYW5kX2V4cHIpOiBDbGVhbnVwIGNhbGxlcnMgb2YgZXhwYW5kX2V4cHIuCgkqIGluaXQuYyAoZXhwYW5kX2FnZ3JfaW5pdF8xKTogTGlrZXdpc2UuCgkoYnVpbGRfbmV3KTogTGlrZXdpc2UuCgkqIHR5cGVjay5jIChleHBhbmRfdGFyZ2V0X2V4cHIpOiBMaWtld2lzZS4KCkZyaSBNYXkgMzEgMTQ6MjI6MDggMTk5NiAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogdHlwZWNrLmMgKGJ1aWxkX21vZGlmeV9leHByKTogRG9uJ3QgdXNlIFRSRUVfVkFMVUUgb24gYQoJVEFSR0VUX0VYUFIuCgpXZWQgTWF5IDI5IDE3OjA0OjMzIDE5OTYgIE1pa2UgU3R1bXAgIDxtcnNAY3lnbnVzLmNvbT4KCgkqIGN2dC5jIChidWlsZF91cF9yZWZlcmVuY2UpOiBSZWRvIGhvdyBhbmQgd2hlbiB0ZW1wb3JhcmllcyBhcmUKCWNyZWF0ZWQuCgkqIGRlY2wuYyAoZ3Jva19yZWZlcmVuY2VfaW5pdCk6IERvbid0IHRyeSBhbmQgYmUgc21hcnQgYWJvdXQKCXJ1bm5pbmcgY2xlYW51cHMuCgpXZWQgTWF5IDI5IDE2OjAyOjA4IDE5OTYgIE1pa2UgU3R1bXAgIDxtcnNAY3lnbnVzLmNvbT4KCgkqIGN2dC5jIChidWlsZF91cF9yZWZlcmVuY2UpOiBBZGQgTlVMTF9UUkVFIHRvIGFsbCBjYWxscyB0byBidWlsZAoJKFRBUkdFVF9FWFBSLi4uKSwgbm93IHRoYXQgaXQgaGFzIDQgYXJndW1lbnRzLgoJKiB0cmVlLmMgKGJ1aWxkX2NwbHVzX25ldyk6IExpa2V3aXNlLgoKVGh1IE1heSAyMyAxNjo0MDozMCAxOTk2ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBlcnJvci5jIChkdW1wX2V4cHIsIGNhc2UgQ0FTVF9FWFBSKTogSGFuZGxlIFQoKSBwcm9wZXJseS4KCgkqIHB0LmMgKGluc3RhbnRpYXRlX2RlY2wpOiBEb24ndCBjYWxsIHB1c2gvcG9wX2NwX2Z1bmN0aW9uX2NvbnRleHQuCgkqIGRlY2wuYyAoc3RydWN0IHNhdmVkX3Njb3BlKTogUmVtb3ZlIG5hbWVkX2xhYmVscywKCXtiYXNlLG1lbWJlcn1faW5pdF9saXN0LgoJKG1heWJlX3B1c2hfdG9fdG9wX2xldmVsKTogRG9uJ3Qgc2V0IHRoZW0uICBDYWxsCglwdXNoX2NwX2Z1bmN0aW9uX2NvbnRleHQgaWYgYXBwcm9wcmlhdGUuCgkocG9wX2Zyb21fdG9wX2xldmVsKTogTGlrZXdpc2UuCgoJKiBtZXRob2QuYyAoZG9fYnVpbGRfYXNzaWduX3JlZik6IFJlbW92ZSBvYnNvbGV0ZSBjaGVjayBvZgoJVFlQRV9IQVNfQVNTSUdOX1JFRiAoYmFzZXR5cGUpLgoKCSogZGVjbC5jIChncm9rZm5kZWNsKTogRGlhZ25vc2UgdXNlciBkZWZpbml0aW9uIG9mCglpbXBsaWNpdGx5LWRlY2xhcmVkIG1ldGhvZHMuCgpUaHUgTWF5IDIzIDEyOjEzOjA4IDE5OTYgIEJvYiBNYW5zb24gIDxtYW5zb25AY2hhcm1lZC5jeWdudXMuY29tPgoKCSogbWV0aG9kLmMgKGRvX2J1aWxkX2NvcHlfY29uc3RydWN0b3IpOiBBZGQgY29kZSB0byBnaXZlCgltZWFuaW5nZnVsIGVycm9yIG1lc3NhZ2VzIGluc3RlYWQgb2YgY3Jhc2hpbmcuCgkoZG9fYnVpbGRfYXNzaWduX3JlZik6IERvbid0IHN5bnRoZXNpemUgYXNzaWdubWVudCBvcGVyYXRvcnMgZm9yCgljbGFzc2VzIGNvbnRhaW5pbmcgcmVmZXJlbmNlIG9yIGNvbnN0IG1lbWJlcnMuCgoJKiBjbGFzcy5jIChzdHJ1Y3QgYmFzZV9pbmZvKTogUmVtb3ZlIGNhbnRfc3ludGhfY29weV9jdG9yCglhbmQgY2FudF9zeW50aF9hc25fcmVmLgoJKGZpbmlzaF9iYXNlX3N0cnVjdCk6IFJlbW92ZSB0aGUgY29kZSB0aGF0IHRyaWVzIHRvIGNvbmRpdGlvbmFsaXplCglzeW50aGVzaXMgb2YgY29weSBjb25zdHJ1Y3RvcnMgJiBhc3NpZ25tZW50IG9wZXJhdG9ycyBiYXNlZCBvbgoJYWNjZXNzIHBlcm1pc3Npb25zLiAgSW5zdGVhZCwgbGV0IGl0IGZhaWwgd2hlbiBpdCB0cmllcyB0bwoJc3ludGhlc2l6ZSB0aGUgY29weSBjb25zdHJ1Y3Rvci4gIFRoaXMgd2lsbCBnaXZlIG1lYW5pbmdmdWwgZXJyb3IKCW1lc3NhZ2VzIGluc3RlYWQgb2Ygc2lsZW50bHkgZ2VuZXJhdGluZyBjb2RlIHRvIHBlcmZvcm0gYSBiaXRjb3B5LgoKV2VkIE1heSAyMiAxMTo0NToxOSAxOTk2ICBCb2IgTWFuc29uICA8bWFuc29uQGNoYXJtZWQuY3lnbnVzLmNvbT4KCgkqIGxleC5jIChyZWFsX3l5bGV4KTogUmVtb3ZlIG9sZC1uLWNydWZ0eSAjaWYgMCBjb2RlIGZvcgoJZGV0ZXJtaW5pbmcgdHlwZXMgZm9yIGNvbnN0YW50IHZhbHVlcy4KCgkqIGRlY2wuYyAoc3RydWN0IG5hbWVkX2xhYmVsX2xpc3QpOiBVc2UgaW5zdGVhZCBvZiBzdHVmZmluZwoJcmFuZG9tIGl0ZW1zIGludG8gYSBUUkVFX0xJU1Qgbm9kZS4KCShuYW1lZF9sYWJlbF91c2VzKTogVXNlIHRoZSBuZXcgc3RydWN0LgoJKHBvcGxldmVsKTogTGlrZXdpc2UuCgkobG9va3VwX2xhYmVsKTogTGlrZXdpc2UuCgkoZGVmaW5lX2xhYmVsKTogQWRkIGFuIGVycm9yIG1lc3NhZ2UgdG8gdGVsbCB0aGUgdXNlciB0aGUgbGluZQoJd2hlcmUgdGhlIGdvdG8gaXMgbG9jYXRlZCBpbiBhZGRpdGlvbiB0byB0aGUgZGVzdGluYXRpb24gb2YgdGhlCglnb3RvLgoJKGluaXRfZGVjbF9wcm9jZXNzaW5nKTogVXNlIE5VTEwgaW5zdGVhZCBvZiBOVUxMX1RSRUUgdG8gaW5pdGlhbGl6ZQoJbmFtZWRfbGFiZWxfdXNlcy4KCShmaW5pc2hfZnVuY3Rpb24pOiBMaWtld2lzZS4KCgkoc3RhcnRfZGVjbCk6IENvbXBsYWluIGFib3V0IGRlZmluaW5nIGEgc3RhdGljIGRhdGEgbWVtYmVyCglpbiBhIGRpZmZlcmVudCB0eXBlIGZyb20gd2hpY2ggaXQgd2FzIGRlY2xhcmVkLgoKV2VkIE1heSAyMiAwOTozMzoyMyAxOTk2ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBjdnQuYyAoYnVpbGRfZXhwcl90eXBlX2NvbnZlcnNpb24pOiBBZGp1c3QuCgpUdWUgTWF5IDIxIDExOjIxOjU2IDE5OTYgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIGNhbGwuYyAoYnVpbGRfbWV0aG9kX2NhbGwpOiBBbHdheXMgY29udmVydCAndGhpcycgdG8gdGhlCglhcHByb3ByaWF0ZSB0eXBlLgoKCSogc2VhcmNoLmMgKGFkZF9jb252ZXJzaW9ucyk6IFB1dCB0aGUgY29udmVyc2lvbiBmdW5jdGlvbiBpbgoJVFJFRV9WQUxVRSwgdGhlIHR5cGUgaW4gVFJFRV9QVVJQT1NFLgoJKiBjdnQuYyAoYnVpbGRfdHlwZV9jb252ZXJzaW9uKTogQWRqdXN0LgoJKiBjYWxsLmMgKHVzZXJfaGFyc2huZXNzKTogQWRqdXN0LgoKCSogbWV0aG9kLmMgKGVtaXRfdGh1bmspOiBDYWxsIHRlbXBvcmFyeV9hbGxvY2F0aW9uIGFuZAoJcGVybWFuZW50X2FsbG9jYXRpb24gYXJvdW5kIHRoZSBBU01fT1VUUFVUX01JX1RIVU5LIGNhc2UsIHRvby4KCgkqIHRyZWUuYyAoYnVpbGRfY3BsdXNfYXJyYXlfdHlwZSk6IEhhbmRsZSB0d2Vha2luZyBvZgoJVFlQRV9NQUlOX1ZBUklBTlQgaGVyZS4KCSogdHlwZWNrLmMgKGNvbW1vbl90eXBlKTogTm90IGhlcmUuCgoJKiB0eXBlY2suYyAoY29tcGxldGVfdHlwZSk6IE9ubHkgdHJ5IHRvIGNvbXBsZXRlIGFuIGFycmF5IHR5cGUgaWYKCWl0IGhhcyBhIGRvbWFpbi4KCk1vbiBNYXkgMjAgMTQ6NTU6NTkgMTk5NiAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogZGVjbC5jIChncm9rdmFyZGVjbCk6IENhbGwgY29tcGxldGVfdHlwZS4KCShncm9rZGVjbGFyYXRvcik6IENhbGwgY29tcGxldGVfdHlwZSBmb3IgUEFSTV9ERUNMcy4KCkZyaSBNYXkgMTcgMTY6NDE6MTcgMTk5NiAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogcHQuYyAoaW5zdGFudGlhdGVfY2xhc3NfdGVtcGxhdGUpOiBSZS1zZXQKCUNMQVNTVFlQRV9HT1RfU0VNSUNPTE9OIGFmdGVyIGNhbGxpbmcgZmluaXNoX3N0cnVjdF8xLgoKRnJpIE1heSAxNyAxNDo1Njo1NSAxOTk2ICBNaWtlIFN0dW1wICA8bXJzQGN5Z251cy5jb20+CgoJKiBjcC10cmVlLmggKGNwX2V4cGFuZF9kZWNsX2NsZWFudXApOiBSZW1vdmUsIHRoZSBiYWNrZW5kIGlzIG5vdwoJc21hcnQgZW5vdWdoIHRvIGRvIGl0IHJpZ2h0LgoJKiB0cmVlLmMgKGNwX2V4cGFuZF9kZWNsX2NsZWFudXApOiBMaWtld2lzZS4KCSogZGVjbC5jIChjcF9maW5pc2hfZGVjbCk6IFVzZSBleHBhbmRfZGVjbF9jbGVhbnVwIGluc3RlYWQgb2YKCWNwX2V4cGFuZF9kZWNsX2NsZWFudXAuCgkoc3RvcmVfcGFybV9kZWNscyk6IExpa2V3aXNlLgoJKGhhY2tfaW5jb21wbGV0ZV9zdHJ1Y3R1cmVzKTogTGlrZXdpc2UuCgkqIGV4Y2VwdC5jIChwdXNoX2VoX2NsZWFudXApOiBMaWtld2lzZS4KCkZyaSBNYXkgMTcgMTM6MTM6NTEgMTk5NiAgTWlrZSBTdHVtcCAgPG1yc0BjeWdudXMuY29tPgoKCSogZXhwci5jIChleHBhbmRfZXhwciwgY29uZCBVTlNBVkVfRVhQUik6IE1vdmUgZnJvbSB0aGUgQysrCglmcm9udGVuZCB0byB0aGUgYmFja2VuZCB3aGVyZSBpdCBiZWxvbmdzLgoJKiB0cmVlLmMgKHVuc2F2ZV9leHByKTogTGlrZXdpc2UuCgkodW5zYXZlX2V4cHJfbm93KTogTGlrZXdpc2UuCgkqIHRyZWUuZGVmIChVTlNBVkVfRVhQUik6IExpa2V3aXNlLgoJKiBjcC10cmVlLmggKHVuc2F2ZV9leHByKTogTGlrZXdpc2UuCgkodW5zYXZlX2V4cHJfbm93KTogTGlrZXdpc2UuCgpGcmkgTWF5IDE3IDExOjAyOjQxIDE5OTYgIE1pa2UgU3R1bXAgIDxtcnNAY3lnbnVzLmNvbT4KCgkqIGluaXQuYyAoZW1pdF9iYXNlX2luaXQpOiBNYWtlIHN1cmUgdGhlIHBhcnRpYWwgRUggY2xlYW51cHMgbGl2ZQoJb24gdGhlIGZ1bmN0aW9uX29ic3RhY2suCgpUaHUgTWF5IDE2IDE1OjI5OjMzIDE5OTYgIEJvYiBNYW5zb24gIDxtYW5zb25AY2hhcm1lZC5jeWdudXMuY29tPgoKCSogZXhwci5jIChkb19jYXNlKTogRG9uJ3QgdHJ5IHRvIGRlcmVmZXJlbmNlIG51bGwgVFJFRV9UWVBFcwoJd2hlbiBjaGVja2luZyBmb3IgcG9pbnRlciB0eXBlcy4KClRodSBNYXkgMTYgMTM6Mzg6NTggMTk5NiAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogcHQuYyAoaW5zdGFudGlhdGVfY2xhc3NfdGVtcGxhdGUpOiBSZW1vdmUgb2Jzb2xldGUgY2hlY2sgZm9yCglhY2Nlc3MgZGVjbGFyYXRpb25zLgoKVGh1IE1heSAxNiAxMzozNDoxNSAxOTk2ICBNaWtlIFN0dW1wICA8bXJzQGN5Z251cy5jb20+CgoJKiBjYWxsLmMgKGJ1aWxkX292ZXJsb2FkX2NhbGwpOiBTaW1wbGlmeSBjYWxscyB0bwoJYnVpbGRfb3ZlcmxvYWRfY2FsbCBieSByZW1vdmluZyBsYXN0IHBhcmFtZXRlci4KCShidWlsZF9tZXRob2RfY2FsbCk6IExpa2V3aXNlLgoJKiBjcC10cmVlLmg6IExpa2V3aXNlLgoJKiBtZXRob2QuYyAoYnVpbGRfb3BmbmNhbGwpOiBMaWtld2lzZS4KCSogdHlwZWNrLmMgKGJ1aWxkX3hfZnVuY3Rpb25fY2FsbCk6IExpa2V3aXNlLgoKVGh1IE1heSAxNiAxMzoxNTo0MyAxOTk2ICBNaWtlIFN0dW1wICA8bXJzQGN5Z251cy5jb20+CgoJKiBjYWxsLmMgKGRlZmF1bHRfcGFybV9jb252ZXJzaW9ucyk6IEZhY3RvciBvdXQgY29tbW9uIGNvZGUuCgkoYnVpbGRfbWV0aG9kX2NhbGwpOiBVc2UgaXQuCgkoYnVpbGRfb3ZlcmxvYWRfY2FsbF9yZWFsKTogVXNlIGl0LgoKV2VkIE1heSAxNSAxNDo0NjoxNCAxOTk2ICBNaWtlIFN0dW1wICA8bXJzQGN5Z251cy5jb20+CgoJKiBjYWxsLmMgKGJ1aWxkX21ldGhvZF9jYWxsKTogQWxsb3cgaW1wbGljaXQgJiBvbiBNRVRIT0RfVFlQRXMsCglidXQgcGVkd2FybiBhcyB0aGUgY29kZSBpcyBib2d1cy4KCSogdHlwZWNrLmMgKGRlY2F5X2NvbnZlcnNpb24pOiBMaWtld2lzZS4KCShidWlsZF9mdW5jdGlvbl9jYWxsX3JlYWwpOiBVc2UgYnVpbGRfYWRkcl9mdW5jIGluc3RlYWQgb2YKCWRlZmF1bHRfY29udmVyc2lvbi4gIERvbid0IGFsbG93IHBvaW50ZXItdG8tbWV0aG9kIGZ1bmN0aW9ucyBkb3duCgloZXJlLgoJKGJ1aWxkX3VuYXJ5X29wKTogVXNlIHJlYWwgcG9pbnRlci10by1tZW1iZXIgZnVuY3Rpb25zIGluc3RlYWQgb2YKCWZha2Ugb25lcy4KCShidWlsZF9wdHJtZW1mdW5jKTogVXNlIGJ1aWxkX2FkZHJfZnVuYyBpbnN0ZWFkIG9mIGJ1aWxkX3VuYXJ5X29wLgoJKGNvbnZlcnRfZm9yX2Fzc2lnbm1lbnQpOiBSZW1vdmVkIHNvbWUgb2Jzb2xldGUgY29kZS4KCSogZGVjbDIuYyAocmVwYXJzZV9hYnNkY2xfYXNfZXhwcik6IFBhc3MgY3VycmVudF9jbGFzc19yZWYgdG8KCWJ1aWxkX3hfZnVuY3Rpb25fY2FsbCBpbnN0ZWFkIG9mIGN1cnJlbnRfY2xhc3NfcHRyLiAgT25seSBjYWxsCglkaWdlc3RfaW5pdCBvbmNlIG9uIGFuIGluaXRpYWxpemVyLCB3ZSBkbyB0aGlzIGp1c3QgY2hlY2tpbmcKCVRSRUVfVFlQRS4KCShidWlsZF9leHByX2Zyb21fdHJlZSk6IFBhc3MgY3VycmVudF9jbGFzc19yZWYgdG8KCWJ1aWxkX3hfZnVuY3Rpb25fY2FsbCBpbnN0ZWFkIG9mIGN1cnJlbnRfY2xhc3NfcHRyLgoJKiBpbml0LmMgKGJ1aWxkX21lbWJlcl9jYWxsKTogTGlrZXdpc2UuCgkqIHBhc2UueTogTGlrZXdpc2UuCgkqIGVycm9yLmMgKGR1bXBfZXhwcik6IEhhbmRsZSBPRkZTRVRfUkVGcyBiZXR0ZXIuCgkqIHB0LmMgKHVuaWZ5KTogSGFuZGxlIHBvaW50ZXItdG8tbWVtYmVyIGZ1bmN0aW9ucyBiZXR0ZXIuCgkqIGRlY2wuYyAoZmluaXNoX2Z1bmN0aW9uKTogQ2xlYXIgb3V0IGN1cnJlbnRfY2xhc3NfcmVmIGp1c3QgbGlrZQoJd2UgZG8gZm9yIGN1cnJlbnRfY2xhc3NfcHRyLgoKCSogdHlwZWNrLmMgKGdldF9kZWx0YV9kaWZmZXJlbmNlKTogSGFuZGxlIHZpcnR1YWwgYmFzZXMgYmV0dGVyLgoKVHVlIE1heSAxNCAxNjozNzozNyAxOTk2ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBzaWcuYyAoYnVpbGRfc2lnbmF0dXJlX3RhYmxlX2NvbnN0cnVjdG9yKTogVXNlIHRoZSBkZWx0YSBmb3IKCXRoZSBvcmlnaW5hbCBiYXNldHlwZSBmb3IgdGhpcyB2aXJ0dWFsIGZ1bmN0aW9uIHdpdGggdGh1bmtzLgoJKGJ1aWxkX3NpZ25hdHVyZV9tZXRob2RfY2FsbCk6IFdlIHN0aWxsIG5lZWQgdG8gYWRqdXN0ICd0aGlzJwoJd2l0aCB0aHVua3MuCgpUdWUgTWF5IDE0IDE2OjI3OjI1IDE5OTYgIE1pa2UgU3R1bXAgIDxtcnNAY3lnbnVzLmNvbT4KCgkqIGNhbGwuYyAoYnVpbGRfYWRkcl9mdW5jKTogTmV3IHJvdXRpbmUuICBVc2VkIHRvIGdldCB0aGUgYHJlYWwnCglhZGRyZXNzIG9mIGEgZnVuY3Rpb24gb3IgYSBtZXRob2QuICBOZWVkZWQgdG8gYXZvaWQgZ2V0dGluZyBhCglwb2ludGVyLXRvLW1lbWJlciBmdW5jdGlvbi4KCShidWlsZF9jYWxsKTogTmV3IHJvdXRpbmUgdG8gYnVpbGQgQ0FMTF9FWFBScy4KCShidWlsZF9tZXRob2RfY2FsbCk6IFVzZSBpdC4KCSogY3Z0LmMgKGNvbnZlcnRfdG9fYWdncik6IExpa2V3aXNlLgoJKiB0eXBlY2suYyAoYnVpbGRfZnVuY3Rpb25fY2FsbF9yZWFsKTogTGlrZXdpc2UuCgkqIHNpZy5jIChidWlsZF9zaWduYXR1cmVfdGFibGVfY29uc3RydWN0b3IpOiBVc2UgYnVpbGRfYWRkcl9mdW5jLgoJKiBjcC10cmVlLmggKGJ1aWxkX2NhbGwsIGJ1aWxkX2FkZHJfZnVuYyk6IERlY2xhcmUgdGhlbS4KClR1ZSBNYXkgMTQgMTI6NDc6NDcgMTk5NiAgTWlrZSBTdHVtcCAgPG1yc0BjeWdudXMuY29tPgoKCSogY3AtdHJlZS5oIChMT09LVVBfQUdHUik6IFJlbW92ZSwgdW51c2VkLgoJKiBwYXJzZS55OiBSZW1vdmUgdXNlcyBvZiBMT09LVVBfQUdHUi4KClR1ZSBNYXkgMTQgMTI6MDc6NTEgMTk5NiAgTWlrZSBTdHVtcCAgPG1yc0BjeWdudXMuY29tPgoKCSogKi5bY2h5XTogUmVuYW1lIGN1cnJlbnRfY2xhc3NfZGVjbCB0byBjdXJyZW50X2NsYXNzX3B0ciwgYW5kCglDX0NfRCB0byBjdXJyZW50X2NsYXNzX3JlZi4KCk1vbiBNYXkgMTMgMTY6NTU6MjMgMTk5NiAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogY2FsbC5jIChjb252ZXJ0X2hhcnNobmVzcyk6IFRpZ2h0ZW4gdXAgcG9pbnRlciBjb252ZXJzaW9ucy4KClNhdCBNYXkgMTEgMDQ6MzM6NTAgMTk5NiAgRG91ZyBFdmFucyAgPGRqZUBjYW51Y2suY3lnbnVzLmNvbT4KCgkqIGRlY2wyLmMgKGZpbmlzaF92dGFibGVfdmFyZGVjbCk6IFN1cnJvdW5kIERFQ0xfT05FX09OTFkgd2l0aCBpZmRlZi4KCShmaW5pc2hfZmlsZSk6IExpa2V3aXNlLgoKRnJpIE1heSAxMCAxMTowOTo1NyAxOTk2ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBjdnQuYyAoY29udmVydF9mbl9wdHIpOiBXZSBkb24ndCB1c2UgdGh1bmtzIGZvciBwbWZzLgoKCSogbWV0aG9kLmMgKGVtaXRfdGh1bmspOiBTZXQgZmxhZ19vbWl0X2ZyYW1lX3BvaW50ZXIgaW4gZGVmYXVsdAoJY29kZS4KClRodSBNYXkgIDkgMTg6MTg6MzAgMTk5NiAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogZGVjbDIuYzogVHVybiBvbiB0aHVua3MgYnkgZGVmYXVsdCB3aGVyZSBzdXBwb3J0ZWQuCgpUdWUgTWF5ICA3IDIwOjM5OjU3IDE5OTYgIE1pa2UgU3R1bXAgIDxtcnNAY3lnbnVzLmNvbT4KCgkqIGNwLXRyZWUuaCAoYnVpbGRfb3ZlcmxvYWRfY2FsbF9tYXliZSk6IFJlbW92ZWQuCgkqIGNhbGwuYyAoYnVpbGRfb3ZlcmxvYWRfY2FsbF9yZWFsKTogSW52ZXJ0IG1lYW5pbmcgb2YgbGFzdCBhcmcgdG8KCWJlIHJlcXVpcmVfY29tcGxldGUuCgkoYnVpbGRfb3ZlcmxvYWRfY2FsbCk6IExpa2V3aXNlLgoJKiB0eXBlY2suYyAoYnVpbGRfeF9mdW5jdGlvbl9jYWxsKTogVXNlIGJ1aWxkX292ZXJsb2FkX2NhbGxfcmVhbAoJaW5zdGVhZCBvZiBidWlsZF9vdmVybG9hZF9jYWxsX21heWJlLgoKTW9uIE1heSAgNiAwMToyMzozMiAxOTk2ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBkZWNsMi5jIChmaW5pc2hfZmlsZSk6IERvbid0IHRyeSB0byBlbWl0IGZ1bmN0aW9ucyB0aGF0IGhhdmVuJ3QKCWJlZW4gY29tcGlsZWQuCgpGcmkgTWF5ICAzIDA5OjMwOjEzIDE5OTYgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIGRlY2wyLmMgKGZpbmlzaF92dGFibGVfdmFyZGVjbCk6IE9vcHMuCgoJKiBkZWNsLmMgKG1heWJlX3B1c2hfdG9fdG9wX2xldmVsKTogRG8gc2F2ZSBwcmV2aW91c19jbGFzc18qLgoJQWxzbyBzdG9yZSB0aGUgYmluZGluZ3MgZnJvbSBwcmV2aW91c19jbGFzc192YWx1ZXMuCgkocG9wX2Zyb21fdG9wX2xldmVsKTogUmVzdG9yZSB0aGVtLgoKVGh1IE1heSAgMiAyMTo1Njo0OSAxOTk2ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBkZWNsMi5jIChmaW5pc2hfdnRhYmxlX3ZhcmRlY2wpOiBPbmx5IHdyaXRlIG91dCB2dGFibGUgaWYgaXRzCglzeW1ib2wgaGFzIGJlZW4gcmVmZXJlbmNlZC4KCShmaW5pc2hfZmlsZSk6IFJlLWpvaW4gc3ludGhlc2lzL3Z0YWJsZSBsb29wIHdpdGggaW5saW5lIGVtaXNzaW9uCglsb29wLCBkaXNhYmxlIGlubGluaW5nIHdoZW4gYW4gaW5saW5lIGlzIG91dHB1dC4KClRodSBNYXkgIDIgMTc6MjA6MDIgMTk5NiAgTWlrZSBTdHVtcCAgPG1yc0BjeWdudXMuY29tPgoKCSogZXhjZXB0LmMgKGluaXRfZXhjZXB0aW9uX3Byb2Nlc3NpbmcpOiBTZXR1cCBzYXZlZF9pbl9jYXRjaC4KCShwdXNoX2VoX2NsZWFudXApOiBSZXNldCBfX2VoX2luX2NhdGNoLgoJKGV4cGFuZF9zdGFydF9jYXRjaF9ibG9jayk6IFNldCBfX2VoX2luX2NhdGNoLgoKVGh1IE1heSAgMiAxNjoyMToxNyAxOTk2ICBNaWtlIFN0dW1wICA8bXJzQGN5Z251cy5jb20+CgoJKiBleGNlcHQuYyAocHVzaF9laF9jbGVhbnVwKTogQWRkIHRyYWNraW5nIGZvciB3aGV0aGVyIG9yIG5vdCB3ZQoJaGF2ZSBhbiBhY3RpdmUgZXhjZXB0aW9uIG9iamVjdC4KCShleHBhbmRfYnVpbHRpbl90aHJvdyk6IFVzZSBpdCB0byBtYWtlIHN1cmUgYSByZXRocm93IHdpdGhvdXQgYW4KCWV4Y2VwdGlvbiBvYmplY3QgaXMgY2F1Z2h0LgoKVGh1IE1heSAgMiAxMToyNjo0MSAxOTk2ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBkZWNsLmMgKG1heWJlX3B1c2hfdG9fdG9wX2xldmVsKTogQ2xlYXIgb3V0IGNsYXNzLWxldmVsIGJpbmRpbmdzCgljYWNoZS4KCldlZCBNYXkgIDEgMTE6MjY6NTIgMTk5NiAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogZGVjbDIuYyAoZmluaXNoX2ZpbGUpOiBBbHNvIHVzZSBzZW50cmllcyBmb3IgdmFycyB3aXRoCglERUNMX09ORV9PTkxZIG9yIERFQ0xfV0VBSyBzZXQgKHNob3VsZCBhbnkgc3VjaCBoYXBwZW4gdG8gYmUKCWNyZWF0ZWQpLgoKCSogbGV4LmMgKGhhbmRsZV9jcF9wcmFnbWEpOiBEaXNhYmxlICNwcmFnbWEKCWludGVyZmFjZS9pbXBsZW1lbnRhdGlvbiBpZiBTVVBQT1JUU19PTkVfT05MWSA+IDEuCgpUdWUgQXByIDMwIDExOjI1OjQ2IDE5OTYgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIG1ldGhvZC5jIChlbWl0X3RodW5rKTogV3JhcCBkZWZhdWx0IGNhc2UgaW4KCXRlbXBvcmFyeS9wZXJtYW5lbnRfYWxsb2NhdGlvbi4KCgkqIG1ldGhvZC5jIChtYWtlX3RodW5rKTogVXNlIERFQ0xfT05FX09OTFkuCgkoZW1pdF90aHVuayk6IENhbGwgYXNzZW1ibGVfZW5kX2Z1bmN0aW9uLgoKTW9uIEFwciAyOSAxNTozODoyOSAxOTk2ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBkZWNsMi5jIChpbXBvcnRfZXhwb3J0X3Z0YWJsZSk6IFVzZSBERUNMX09ORV9PTkxZLgoJKGltcG9ydF9leHBvcnRfZGVjbCk6IExpa2V3aXNlLgoJKGZpbmlzaF9wcmV2dGFibGVfdmFyZGVjbCk6IERpc2FibGUgdnRhYmxlIGhhY2sgaWYKCVNVUFBPUlRTX09ORV9PTkxZID4gMS4KCk1vbiBBcHIgMjkgMTQ6MzI6NDcgMTk5NiAgTWlrZSBTdHVtcCAgPG1yc0BjeWdudXMuY29tPgoKCSogdHlwZWNrLmMgKGJ1aWxkX21vZGlmeV9leHByKTogUFJFSU5DUkVNRU5UX0VYUFIgYW5kCglQUkVERUNSRU1FTlRfRVhQUnMgdGFrZSB0d28gYXJndW1lbnRzLCBub3Qgb25lLgoKTW9uIEFwciAyOSAwMDoyNzo1MyAxOTk2ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBjbGFzcy5jIChidWlsZF92dGFibGVfZW50cnkpOiBEb24ndCBidWlsZCB0aHVua3MgZm9yIGFic3RyYWN0Cgl2aXJ0dWFscy4KCgkqIGxleC5jIChyZWFsX3l5bGV4KTogRml4IGhhbmRsaW5nIG9mIF9fUFJFVFRZX0ZVTkNUSU9OX18gbGlrZSBDCglmcm9udGVuZC4KClNhdCBBcHIgMjcgMTY6NDU6MzUgMTk5NiAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogY2xhc3MuYyAoc2V0X3J0dGlfZW50cnkpOiBVc2Ugc2l6ZV96ZXJvX25vZGUuCgkoYnVpbGRfdnRhYmxlKTogTGlrZXdpc2UuCgpTYXQgQXByIDI3IDE0OjQ4OjU3IDE5OTYgIEphc29uIE1lcnJpbGwgIDxqYXNvbkBwaHlkZWF1eC5jeWdudXMuY29tPgoKCSogY2xhc3MuYyAoZmluaXNoX3N0cnVjdF8xKTogUGFzcyBzaXplX3plcm9fbm9kZSB0byBzZXRfcnR0aV9lbnRyeS4KCShwcmVwYXJlX2ZyZXNoX3Z0YWJsZSk6IExpa2V3aXNlLgoKRnJpIEFwciAyNiAxMzoxNDoxNCAxOTk2ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBtZXRob2QuYyAoZW1pdF90aHVuayk6IENhbGwgbWFya191c2VkIG9uIHRoZSB0YXJnZXQgZnVuY3Rpb24uCgoJKiBjYWxsLmMgKGJ1aWxkX21ldGhvZF9jYWxsKTogRG9uJ3Qgd2FybiBhYm91dCBwZW5kaW5nIHRlbXBsYXRlcy4KClRodSBBcHIgMjUgMTQ6NTU6NDQgMTk5NiAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogZGVjbDIuYyAoZmluaXNoX2ZpbGUpOiBGaXggbGlzdCB3YWxraW5nIGxvZ2ljLgoKCSogdHlwZWNrMi5jIChjaGVja19mb3JfbmV3X3R5cGUpOiBPbmx5IHdhcm4gaWYgLXBlZGFudGljLgoKV2VkIEFwciAyNCAxNTo0MToxNSAxOTk2ICBCb2IgTWFuc29uICA8bWFuc29uQGNoYXJtZWQuY3lnbnVzLmNvbT4KCgkqIGNsYXNzLmMgKGZpbmlzaF9zdHJ1Y3RfMSk6IFJlbW92ZSBvbGQgY29kZSBmb3IKCWRvbnRfYWxsb3dfdHlwZV9kZWZpbml0aW9ucy4KCSogY3AtdHJlZS5oOiBMaWtld2lzZS4KCSogc3Bldy5jOiBNYWtlIHN1cmUgY3AtdHJlZS5oIGlzIGluY2x1ZGVkIGJlZm9yZSBwYXJzZS5oLCBzbyB0aGUKCWRlZmluaXRpb24gb2YgZmxhZ2dlZF90eXBlX3RyZWUgaXMgZm91bmQgYmVmb3JlIGl0IGlzIHVzZWQuCgkqIGxleC5jOiBMaWtld2lzZS4KCSogcGFyc2UueTogQWRkZWQgdGhlIGZ0eXBlIG1lbWJlciB0byB0aGUgdHlwZSB1bmlvbiwgYW5kIGNoYW5nZWQgYQoJbnVtYmVyIG9mIHJ1bGVzIHRvIHVzZSBpdCBpbnN0ZWFkIG9mIHR0eXBlLiAgQWRkZWQgY2FsbHMgdG8KCWNoZWNrX2Zvcl9uZXdfdHlwZSgpIGFzIGFwcHJvcHJpYXRlLgoJKiB0eXBlY2syLmMgKGNoZWNrX2Zvcl9uZXdfdHlwZSk6IE5ldyBmdW5jdGlvbiBmb3IgY2hlY2tpbmcKCWlmIGEgbmV3bHkgZGVmaW5lZCB0eXBlIGFwcGVhcnMgaW4gdGhlIHNwZWNpZmllZCB0cmVlLgoJKiBjcC10cmVlLmg6IEFkZCBuZXcgdHlwZSBmbGFnZ2VkX3R5cGVfdHJlZS4gIEFkZCBhIHByb3RvdHlwZQoJZm9yIGNoZWNrX2Zvcl9uZXdfdHlwZSgpLgoKV2VkIEFwciAyNCAwMDozNjoyMSAxOTk2ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBkZWNsMi5jIChmaW5pc2hfZmlsZSk6IE9ubHkgdXNlIGEgc2VudHJ5IGlmIHRoZSBkZWNsIGlzIHB1YmxpYy4KCgkqIHB0LmMgKHRzdWJzdF9leHByLCBERUNMX1NUTVQpOiBJZiB3ZSBkb24ndCBoYXZlIGFuIGluaXRpYWxpemVyLAoJZG9uJ3QgcGFzcyBMT09LVVBfT05MWUNPTlZFUlRJTkcuCgpUdWUgQXByIDIzIDE3OjE4OjQ3IDE5OTYgIEJvYiBNYW5zb24gIDxtYW5zb25AY2hhcm1lZC5jeWdudXMuY29tPgoKCSogdHlwZWNrLmMgKGNvbW1vbl90eXBlKTogRml4IHRoZSBBUlJBWV9UWVBFIGNhc2Ugc28gaXQKCXByb3Blcmx5IGtlZXBzIHRyYWNrIG9mIGNvbnN0IGFuZCB2b2xhdGlsZSB0eXBlIG1vZGlmaWVycy4KClR1ZSBBcHIgMjMgMTA6NTI6NTYgMTk5NiAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogdHJlZS5jIChjcF90cmVlX2VxdWFsKTogQysrIHZlcnNpb24gb2Ygc2ltcGxlX2NzdF9lcXVhbC4KCSogcHQuYyAoY29tcF90ZW1wbGF0ZV9hcmdzKTogVXNlIGl0LgoKCSogcnR0aS5jIChnZXRfdGluZm9fZm4sIGJ1aWxkX2R5bmFtaWNfY2FzdCwgZXhwYW5kXypfZGVzYyk6IENhbGwKCWFzc2VtYmxlX2V4dGVybmFsIGZvciBhcnRpZmljaWFsIGZ1bmN0aW9uIGRlY2xzLgoKCSogZGVjbC5jIChjcF9maW5pc2hfZGVjbCk6IE9vcHMuCgpNb24gQXByIDIyIDE3OjI4OjI3IDE5OTYgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIGRlY2wyLmMgKGltcG9ydF9leHBvcnRfZGVjbCk6IFB1dCBzdGF0aWMgZGF0YSBtZW1iZXIgdGVtcGxhdGVzCglpbnRvIGNvbW1vbiBzdG9yYWdlLCBvciBtYWtlIHRoZW0gd2VhaywgZGVwZW5kaW5nIG9uIHdoZXRoZXIgdGhleQoJYXJlIGR5bmFtaWNhbGx5IG9yIHN0YXRpY2FsbHkgaW5pdGlhbGl6ZWQuCgkoZ2V0X3NlbnRyeSk6IE5ldyBmdW5jdGlvbi4KCShmaW5pc2hfZmlsZSk6IERvIGltcG9ydF9leHBvcnRfZGVjbCBmb3Igc3RhdGljIGRhdGEgbWVtYmVycyBiZWZvcmUKCWJ1aWxkaW5nIHRoZSBpbml0L2ZpbmkgZnVuY3Rpb25zLiAgRG9uJ3QgaW5pdC9maW5pIGEgdmFyaWFibGUgdGhhdCdzCglFWFRFUk5BTC4gIFVzZSBhIHNlbnRyeSBmb3IgdmFyaWFibGVzIGluIGNvbW1vbi4gIEZpeCBtaXNtYXRjaGluZwoJcHVzaC9wb3BfdGVtcF9zbG90cy4KCSogZGVjbC5jIChjcF9maW5pc2hfZGVjbCk6IElmIERFQ0xfTk9UX1JFQUxMWV9FWFRFUk4sIGRvIHRoZQoJZXhwYW5kX3N0YXRpY19pbml0IHRoYW5nLgoJKiBtZXRob2QuYyAoZ2V0X2lkXzIpOiBOZXcgZnVuY3Rpb24uCgpNb24gQXByIDIyIDE1OjMyOjQ1IDE5OTYgIEJvYiBNYW5zb24gIDxtYW5zb25AY2hhcm1lZC5jeWdudXMuY29tPgoKCSogcGFyc2UueSAoZW1wdHlfcGFybXMpOiBNYWtlIHN1cmUgd2UgdXNlIEMrKy1zdHlsZSBwcm90b3R5cGVzCgl3aGVuIHdlJ3JlIGRlY2xhcmluZyBtZW1iZXIgZnVuY3Rpb25zLgoKU3VuIEFwciAyMSAxMDowODoyMiAxOTk2ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBNYWtlZmlsZS5pbiAoQ09ORkxJQ1RTKTogMTYgcy9yIGNvbmZsaWN0cy4KCSogcGFyc2UueSAoc2VsZl90ZW1wbGF0ZV90eXBlKTogTmV3IG5vbnRlcm1pbmFsLgoKVGh1IEFwciAxOCAwODo1Njo1NCAxOTk2ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBkZWNsLmMgKG1ha2VfdHlwZW5hbWVfdHlwZSk6IEhhbmRsZSBnZXR0aW5nIGEgVFlQRV9ERUNMIGZvciBhCgluYW1lLgoJKiBwYXJzZS55IChiYXNlX2NsYXNzLjEpOiBBbGxvdyAndHlwZW5hbWUgZm9vOjpiYXInLgoKCSogbGV4LmMgKGNoZWNrX25ld2xpbmUpOiBSZW1vdmUgI3ByYWdtYSBjb2RlIHRoYXQgcGxheXMgd2l0aCB0aGUKCWlucHV0IHN0cmVhbSwgc2luY2Ugd2Ugbm93IGRlYWwgd2l0aCB0b2tlbnMuICBDbGVhciBuZXh0Y2hhciB3aGVuCgl3ZSdyZSBkb25lLgoJKGhhbmRsZV9jcF9wcmFnbWEpOiBVc2UgcmVhbF95eWxleC4KCShoYW5kbGVfc3lzdl9wcmFnbWEpOiBEb24ndCBkbyBza2lwbGluZSBoZXJlLiAgT25seSBjYWxsIHJlYWxfeXlsZXgKCWluIG9uZSBwbGFjZS4KCgkqIGxleC5jIChjaGVja19mb3JfbWlzc2luZ19zZW1pY29sb24pOiBIYW5kbGUgU0VMRk5BTUUuCgoJKiBsZXguYyAoaGFuZGxlX2NwX3ByYWdtYSk6IEZpeCAiI3ByYWdtYSBpbXBsZW1lbnRhdGlvbiIuCgpXZWQgQXByIDE3IDE2OjUxOjMzIDE5OTYgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIHBhcnNlLnk6IE5ldyB0b2tlbiBTRUxGTkFNRSBmb3IgcG90ZW50aWFsIGNvbnN0cnVjdG9yLgoJKiBzcGV3LmMgKHl5bGV4KTogSGFuZGxlIGl0LgoJKiBsZXguYyAoaWRlbnRpZmllcl90eXBlKTogUHJvZHVjZSBpdC4KCgkqIHBhcnNlLnkgKGNvbXBsZXRlX3R5cGVfbmFtZSk6IEluIDo6IGNhc2UsIGRvbid0IHB1c2ggY2xhc3MgYmluZGluZy4KCShjb21wbGV4X3R5cGVfbmFtZSk6IExpa2V3aXNlLgoKV2VkIEFwciAxNyAxNTowMjo0MCAxOTk2ICBNaWtlIFN0dW1wICA8bXJzQGN5Z251cy5jb20+CgoJKiB0eXBlY2suYyAoYnVpbGRfcmVpbnRlcnByZXRfY2FzdCk6IEhhbmRsZSBwb2ludGVyIHRvIG1lbWJlcgoJZnVuY3Rpb25zLgoKV2VkIEFwciAxNyAxMjoyODoyNiAxOTk2ICBCcmVuZGFuIEtlaG9lICA8YnJlbmRhbkBsaXNhLmN5Z251cy5jb20+CgoJKiBsZXguYyAoaGFuZGxlX2NwX3ByYWdtYSk6IE5ldyBmdW5jdGlvbiwgd2l0aCBkZWNsLCBkb2luZyB0aGUgY2MxcGx1cwoJcHJhZ21hcy4KCShjaGVja19uZXdsaW5lKTogUHV0IHRoZSB2dGFibGUvdW5pdC9pbXBsZW1lbnRhdGlvbi9pbnRlcmZhY2UgcHJhZ21hCgljb2RlIGludG8gaGFuZGxlX2NwX3ByYWdtYSwgcmVwbGFjaW5nIGl0IHdpdGggYSBjYWxsLgoJKGhhbmRsZV9zeXN2X3ByYWdtYSk6IEdpdmUgaW50IHJldHVybiB0eXBlLCBhbmQgdGFrZSBGSU5QVVQgYW5kIFRPS0VOCglhcmdzLiAgR2V0IHRoZSBuZXh0IHRva2VuIGFmdGVyIGhhbmRsaW5nIHRoZSBwcmFnbWEgdG9rZW4uCgpXZWQgQXByIDE3IDEwOjI4OjM0IDE5OTYgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIGN2dC5jIChjcF9jb252ZXJ0X3RvX3BvaW50ZXIpOiBBdm9pZCBkb2luZyBiYXNlIGFuYWx5c2lzIG9uIHBtZnMuCgkoY29udmVydF90b19wb2ludGVyX2ZvcmNlKTogTGlrZXdpc2UuCgoJKiBpbml0LmMgKGJ1aWxkX25ldyk6IEZpeCBhcnJheSBuZXcgd2l0aG91dCAtZmNoZWNrLW5ldy4KClR1ZSBBcHIgMTYgMTM6NDQ6NTggMTk5NiAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogY3AtdHJlZS5oLCBjYWxsLmMsIGNsYXNzLmMsIGRlY2wuYywgcGFyc2UueSwgcHQuYywgcnR0aS5jLAoJdHJlZS5jOiBMb3NlIFRZUEVfTkVTVEVEX05BTUUuCgoJKiBwYXJzZS55IChuZXN0ZWRfbmFtZV9zcGVjaWZpZXJfMSk6IERvbid0IHRyZWF0IG5vbi1pZGVudGlmaWVycwoJYXMgaWRlbnRpZmllcnMuCgoJKiB0cmVlLmRlZjogQWRkIFZFQ19JTklUX0VYUFIuCgkqIGV4cHIuYyAoY3BsdXNfZXhwYW5kX2V4cHIpOiBIYW5kbGUgaXQuCgkqIGluaXQuYyAoYnVpbGRfbmV3KTogVXNlIGl0IGluc3RlYWQgb2YgdGhlIFJUTF9FWFBSIG5hc3RpbmVzcyBhbmQKCXRoZSBleHRyYSBmaWxlLXNjb3BlIHN5bWJvbCBuYXN0aW5lc3MuCgpNb24gQXByIDE1IDE2OjIxOjI5IDE5OTYgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIG1ldGhvZC5jIChtYWtlX3RodW5rKTogVGh1bmtzIGFyZSBzdGF0aWMuCgkoZW1pdF90aHVuayk6IFVzZSBBU01fT1VUUFVUX01JX1RIVU5LIGlmIGl0J3MgZGVmaW5lZC4KCgkqIGRlY2wyLmMgKG1hcmtfdnRhYmxlX2VudHJpZXMpOiBFbWl0IHRodW5rcyBhcyBuZWVkZWQuCgkoZmluaXNoX2ZpbGUpOiBEb24ndCBlbWl0IHRoZW0gaGVyZS4KClN1biBBcHIgMTQgMTE6MzQ6MzkgMTk5NiAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogcnR0aS5jIChidWlsZF9keW5hbWljX2Nhc3QpOiBIYW5kbGUgbnVsbCBwb2ludGVycy4KCShpZm5vbm51bGwpOiBOZXcgZnVuY3Rpb24uCgpGcmkgQXByIDEyIDA5OjA4OjI3IDE5OTYgIEJvYiBNYW5zb24gIDxtYW5zb25AY2hhcm1lZC5jeWdudXMuY29tPgoKCSogY2FsbC5jIChidWlsZF9tZXRob2RfY2FsbCk6IFJlbWVtYmVyIHRoZSBvcmlnaW5hbCBiYXNldHlwZSB3ZQoJd2VyZSBjYWxsZWQgd2l0aC4gIEdpdmUgYW4gZXJyb3IgbWVzc2FnZSBpbnN0ZWFkIG9mIHRyeWluZwoJKGluY29ycmVjdGx5KSB0byBjYWxsIGEgbm9uLXN0YXRpYyBtZW1iZXIgZnVuY3Rpb24gdGhyb3VnaCBhCglub24taW5oZXJpdGVkIGNsYXNzLgoKCSogc2VhcmNoLmMgKGV4cGFuZF91cGNhc3RfZml4dXBzKTogTWFyayB0aGUgbmV3IGZpeHVwIGFzCglERUNMX0FSVElGSUNJQUwuCgpUaHUgQXByIDExIDAzOjU3OjA5IDE5OTYgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIGluaXQuYyAoYnVpbGRfbmV3KTogVXNlIGEgVEFSR0VUX0VYUFIgZm9yIGFsbG9jX2V4cHIuCgoJKiBjbGFzcy5jIChzZXRfcnR0aV9lbnRyeSk6IEZpeCBmb3IgdGh1bmtzLgoKCSogZGVjbDIuYyAoaW1wb3J0X2V4cG9ydF9kZWNsKTogU3RpbGwgZW1pdCB0eXBlaW5mbyBmbnMgZm9yCgljdi12YXJpYW50cyBvZiBidWlsdGluIHR5cGVzLgoKCSogcnR0aS5jIChleHBhbmRfY2xhc3NfZGVzYyk6IFNldCB1cCBiYXNlX2luZm9fdHlwZV9ub2RlIGhlcmUuCgkoaW5pdF9ydHRpX3Byb2Nlc3NpbmcpOiBJbnN0ZWFkIG9mIGhlcmUuCgpXZWQgQXByIDEwIDE0OjE3OjEzIDE5OTYgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIHJ0dGkuYyAoaW5pdF9ydHRpX3Byb2Nlc3NpbmcpOiBEbyBpbml0IHJlZ2FyZGxlc3Mgb2YgLWZydHRpLgoJKGJ1aWxkX3R5cGVpZCk6IE9ubHkgY29tcGxhaW4gYWJvdXQgdGFraW5nIGR5bmFtaWMgdHlwZWlkIHdpdGhvdXQKCS1mcnR0aS4KCgkqIGRlY2wyLmM6IGZsYWdfcnR0aSBkZWZhdWx0cyB0byAxLgoKCSogcnR0aS5jIChnZXRfdGluZm9fdmFyKTogVGhlIGdlbmVyYWwgY2xhc3MgY2FzZSBpcyBub3cgc21hbGxlci4KCShpbml0X3J0dGlfcHJvY2Vzc2luZyk6IFBhY2sgdGhlIGxhdHRlciB0aHJlZSBmaWVsZHMgb2YgYmFzZV9pbmZvCglpbnRvIDMyIGJpdHMuCgpXZWQgQXByIDEwIDEzOjUwOjE0IDE5OTYgIE1pa2UgU3R1bXAgIDxtcnNAY3lnbnVzLmNvbT4KCgkqIGluaXQuYyAoZXhwYW5kX21lbWJlcl9pbml0KTogRG9uJ3QgZHVtcCBpZiBuYW1lIGlzIE5VTExfVFJFRS4KCldlZCBBcHIgMTAgMTI6NTY6MDIgMTk5NiAgTWlrZSBTdHVtcCAgPG1yc0BjeWdudXMuY29tPgoKCSogc2VhcmNoLmMgKG1ha2VfbWVtb2l6ZWRfdGFibGVfZW50cnkpOiBVbmRlZmVyIHRoZSBwb3AsIGlmIG5lY2Vzc2FyeS4KCShwdXNoX21lbW9pemVkX2NvbnRleHQpOiBTcGxpdCBvdXQgY29kZSB0byB1bmRlZmVyIHBvcF90eXBlX2xldmVsIHRvCgkoY2xlYXJfbWVtb2l6ZWRfY2FjaGUpOiBoZXJlLgoJKHBvcF9tZW1vaXplZF9jb250ZXh0KTogV2UgY2FuIG9ubHkgaGFuZGxlIG9uZSBsYXllciBvZiBkZWZlcnJhbCBvZgoJcG9wX3R5cGVfbGV2ZWwgc28gY2xlYXIgdGhlIGNhY2hlLCBpZiB0aGVyZSB3YXMgYSBwcmV2aW91cyBsZXZlbC4KClR1ZSBBcHIgIDkgMjM6MDY6MDkgMTk5NiAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogcnR0aS5jIChpbml0X3J0dGlfcHJvY2Vzc2luZyk6IEJ1aWxkIHVwIGJhc2VfaW5mb190eXBlX25vZGUuCgkoZXhwYW5kX2NsYXNzX2Rlc2MpOiBVc2Ugb25lIHBvaW50ZXIgdG8gYW4gYXJyYXkgb2YgYmFzZV9pbmZvCglzdHJ1Y3RzLCBwYXNzZWQgdXNpbmcgYSBDT05TVFJVQ1RPUi4KClR1ZSBBcHIgIDkgMTQ6MjA6NTcgMTk5NiAgTWlrZSBTdHVtcCAgPG1yc0BjeWdudXMuY29tPgoKCSogY2xhc3MuYyAoYnVpbGRfdmJhc2VfcGF0aCk6IFJlbW92ZSBibG9jayBleHRlcm4gZm9yCglmbGFnX2Fzc3VtZV9ub25udWxsX29iamVjdHMgaGVyZS4KCShidWlsZF92Zm5fcmVmKTogU3BsaXQgb3V0IGZ1bmN0aW9uYWxpdHkgaW50byBidWlsZF92dGJsX3JlZi4KCShidWlsZF92dGJsX3JlZik6IE5ldyByb3V0aW5lLgoJKGJ1aWxkX3Z0YWJsZSk6IFNldCB1cCBydHRpIGluZm8gaGVyZS4KCShhZGRfdmlydHVhbF9mdW5jdGlvbik6IE5vdGUgaW4gQ0xBU1NUWVBFX1JUVEkgdGhlIGJlc3QKCXBsYWNlIHdoZXJlIHdlIGNhbiBnZXQgdGhlIHJ0dGkgcG9pbnRlcnMgZnJvbSB0byBhdm9pZCBoYXZpbmcgdG8KCXNlYXJjaCBhcm91bmQgZm9yIGEgcGxhY2UuCgkoZmluaXNoX2Jhc2Vfc3RydWN0KTogTGlrZXdpc2UuCgkoZmluaXNoX3N0cnVjdF8xKTogTGlrZXdpc2UuICBOZXZlciBjcmVhdGUgdG90YWxseSBuZXcgdnRhYmxlcwoJd2l0aCB0b3RhbGx5IG5ldyB2dGFibGUgcG9pbnRlcnMgZm9yIHJ0dGkuICBEaXNhYmxlIGNvZGUgdG8gbGF5b3V0Cgl2dGFibGUgcG9pbnRlcnMgYmV0dGVyIHVudGlsIHdlIHdhbnQgdG8gYnJlYWsgYmluYXJ5Cgljb21wYXRpYmlsaXR5LgoJKiBydHRpLmMgKGJ1aWxkX2hlYWRvZl9zdWIpOiBOZXcgcm91dGluZSB0byBjb252ZXJ0IGRvd24gdG8gYQoJc3ViLW9iamVjdCB0aGF0IGhhcyBhbiBydHRpIHBvaW50ZXIgaW4gdGhlIHZ0YWJsZS4KCShidWlsZF9oZWFkb2YpOiBVc2UgaXQuICBBbHNvLCB1c2UgYnVpbGRfdnRibF9yZWYgbm93IHRvIGJlIG1vcmUKCW1haW50YWluYWJsZS4KCShidWlsZF9keW5hbWljX2Nhc3QpOiBNYWtlIHN1cmUgd2UgaGF2ZSBzYXZlZCBpdCwgaWYgd2UgbmVlZCB0by4KCSogc2VhcmNoLmMgKGRmc19pbml0X3ZiYXNlX3BvaW50ZXJzKTogRGlzYWJsZSBjb2RlIHRoYXQgZGVhbHMgd2l0aAoJYSBtb3JlIGVmZmljaWVudCB2dGFibGUgbGF5b3V0LCBlbmFibGUgbGF0ZXIuCgkqIGNhbGwuYyAoZmxhZ19hc3N1bWVfbm9ubnVsbF9vYmplY3RzKTogTW92ZWQgZGVjbGFyYXRpb24gdG8KCSogY3AtdHJlZS5oOiBoZXJlLiAgRGVjbGFyZSBidWlsZF92dGJsX3JlZi4KCSogcHQuYyAoaW5zdGFudGlhdGVfY2xhc3NfdGVtcGxhdGUpOiBVc2UgTlVMTF9UUkVFIGluc3RlYWQgb2YgMCBpbgoJZnVuY3Rpb24gY2FsbHMgdGhhdCB3YW50IGEgdHJlZS4KClR1ZSBBcHIgIDkgMTI6MTA6MjYgMTk5NiAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogcnR0aS5jIChidWlsZF9keW5hbWljX2Nhc3QpOiBIYW5kbGUgZG93bmNhc3RpbmcgdG8gWCogZ2l2ZW4KCW90aGVyIFggc3Vib2JqZWN0cyBpbiB0aGUgbW9zdCBkZXJpdmVkIHR5cGUuICBBY2suCgoJKiBydHRpLmMgKGJ1aWxkX2R5bmFtaWNfY2FzdCk6IE5vIG5lZWQgdG8gc3RyaXAgY3YtcXVhbHMgaGVyZSwKCWdldF90eXBlaWQgd2lsbCBkbyBpdCBmb3IgdXMuCgkoZ2V0X3R5cGVpZF8xKTogQnJlYWsgb3V0IGNhbGwtYnVpbGRpbmcgZm9yIGV4cGFuZF8qX2Rlc2MgdG8gdXNlLgoJKGdldF90eXBlaWQpOiBDYWxsIGl0LgoJKGV4cGFuZF8qX2Rlc2MpOiBMaWtld2lzZS4KCSogZGVjbC5jIChpbml0X2RlY2xfcHJvY2Vzc2luZyk6IERvbid0IHNldCBUWVBFX0JVSUxUX0lOIG9uIGNoYXIgKgoJYW5kIHZvaWQgKi4KCShpbml0X2RlY2xfcHJvY2Vzc2luZyk6IExvc2UgYnVpbHRpbl90eXBlX3RkZXNjcyBsb3NzYWdlLgoJKiBkZWNsMi5jIChmaW5pc2hfdnRhYmxlX3ZhcmRlY2wpOiBSZW1vdmUgb2Jzb2xldGUgY29kZS4KCk1vbiBBcHIgIDggMTc6MjM6MjMgMTk5NiAgQm9iIE1hbnNvbiAgPG1hbnNvbkBjaGFybWVkLmN5Z251cy5jb20+CgoJKiBwdC5jICh0c3Vic3QpOiBXaGVuIGNhbGxpbmcgc2V0X25lc3RlZF90eXBlbmFtZSwgdXNlCglUWVBFX05FU1RFRF9OQU1FIChjdXJyZW50X2NsYXNzX3R5cGUpIGluc3RlYWQgb2YKCWN1cnJlbnRfY2xhc3NfbmFtZS4KCgkqIGRlY2wuYyAocHVzaGRlY2wpOiBMaWtld2lzZS4KCShwdXNoZGVjbF9jbGFzc19sZXZlbCk6IExpa2V3aXNlLgoJKGdyb2tkZWNsYXJhdG9yKTogVXNlIE5VTExfVFJFRSBpbnN0ZWFkIG9mIDAgaW4gdGhlIGNhbGwgdG8KCXNldF9uZXN0ZWRfdHlwZW5hbWUuCgpTdW4gQXByICA3IDEwOjQ0OjMxIDE5OTYgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIHJ0dGkuYyAoc3ludGhlc2l6ZV90aW5mb19mbik6IEhhbmRsZSBhcnJheXMuCgoJKiBjcC10cmVlLmggKERFQ0xfUkVBTExZX0VYVEVSTik6IE5ldyBtYWNyby4KClNhdCBBcHIgIDYgMTM6NTY6MjcgMTk5NiAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogcnR0aS5jICh0aHJvd19iYWRfY2FzdCk6IFVzZSBlbnRyeSBwb2ludCBfX3Rocm93X2JhZF9jYXN0LgoJKGluaXRfcnR0aV9wcm9jZXNzaW5nKTogTG9zZSBiYWRfY2FzdF90eXBlLgoJKGJ1aWxkX2R5bmFtaWNfY2FzdCk6IFVzZSB0aHJvd19iYWRfY2FzdC4KCgkqIHJ0dGkuYyAoc3ludGhlc2l6ZV90aW5mb19mbik6IEhhbmRsZSBlbnVtcyBhbmQgcG1mcy4KCgkqIGRlY2wyLmMgKGZpbmlzaF9maWxlKTogRG9uJ3Qgc3ludGhlc2l6ZSBhcnRpZmljaWFsIGZ1bmN0aW9ucwoJdGhhdCBhcmUgZXh0ZXJuYWwgYW5kIG5vdCBpbmxpbmUuCgoJKiBydHRpLmMgKGdldF90aW5mb19mbik6IElmIGF0X2VvZiwgY2FsbCBpbXBvcnRfZXhwb3J0X2RlY2wuCgoJKiBkZWNsMi5jIChmaW5pc2hfZmlsZSk6IEhhbmRsZSBoYXZpbmcgbmV3IGlubGluZXMgYWRkZWQgdG8KCXNhdmVkX2lubGluZXMgYnkgc3ludGhlc2lzLgoKCSogcnR0aS5jIChnZXRfYmFkX2Nhc3Rfbm9kZSk6IERvbid0IHJlcXVpcmUgPHR5cGVpbmZvPi4KCkZyaSBBcHIgIDUgMTc6MDI6MDkgMTk5NiAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCVJUVEkgcmV3cml0ZSB0byBpbml0aWFsaXplIG5vZGVzIGFzIG5lZWRlZCwgbm90IHJlcXVpcmUgdGhhdAoJdXNlcnMgI2luY2x1ZGUgPHR5cGVpbmZvPiwgY29tcGxldGUgZnVuY3Rpb25hbGl0eSBhbmQgcmVkdWNlIHdhc3RlZAoJc3BhY2UuCgkqIHJ0dGkuYyAoaW5pdF9ydHRpX3Byb2Nlc3NpbmcpOiBOZXcgZm4uCgkoYnVpbGRfdHlwZWlkKTogVGhlIHZ0YWJsZSBlbnRyeSBpcyBub3cgYSBmdW5jdGlvbi4KCShnZXRfdGluZm9fdmFyKTogTmV3IGZuLgoJKGdldF90aW5mb19mbik6IExpa2V3aXNlLgoJKGdldF90eXBlaWQpOiBVc2UgaXQuCgkoYnVpbGRfZHluYW1pY19jYXN0KTogRGVjbGFyZSBhbmQgdXNlIGVudHJ5IHBvaW50IF9fZHluYW1pY19jYXN0LgoJKGJ1aWxkXypfZGVzYyk6IFJlbmFtZSB0byBleHBhbmRfKl9kZXNjIGFuZCByZXdyaXRlIHRvIHVzZSBlbnRyeQoJcG9pbnRzIF9fcnR0aV8qLgoJKGFkZF91bmluc3RhbnRpYXRlZF9kZXNjLCBnZXRfZGVmX3RvX2ZvbGxvdywgYnVpbGRfdF9kZXNjKTogTG9zZS4KCShzeW50aGVzaXplX3RpbmZvX2ZuKTogTmV3IGZuLgoJKiBtZXRob2QuYyAoYnVpbGRfdF9kZXNjX292ZXJsb2FkKTogTG9zZS4KCShidWlsZF9vdmVybG9hZF93aXRoX3R5cGUpOiBNb3JlIGdlbmVyaWMuCgkqIGRlY2wuYyAoaW5pdF9kZWNsX3Byb2Nlc3NpbmcpOiBDYWxsIGluaXRfcnR0aV9wcm9jZXNzaW5nLgoJKiBjbGFzcy5jIChzZXRfcnR0aV9lbnRyeSk6IFVzZSBnZXRfdGluZm9fZm4uCgkqIGRlY2wyLmMgKG1hcmtfdnRhYmxlX2VudHJpZXMpOiBNYXJrIHRoZSBydHRpIGZ1bmN0aW9uLgoJKGZpbmlzaF9wcmV2dGFibGVfdmFyZGVjbCk6IERvbid0IGJ1aWxkX3RfZGVzYy4KCShpbXBvcnRfZXhwb3J0X2RlY2wpOiBIYW5kbGUgdGluZm8gZnVuY3Rpb25zLgoJKGZpbmlzaF9maWxlKTogTGlrZXdpc2UuCgkqIHR5cGVjay5jIChpbmxpbmVfY29udmVyc2lvbik6IE5ldyBmbi4KCShidWlsZF9mdW5jdGlvbl9jYWxsX3JlYWwpOiBVc2UgaXQuCgkqIGNwLXRyZWUuaDogQWRkIGRlY2xzLgoKCSogbWV0aG9kLmMgKGhhY2tfaWRlbnRpZmllcik6IEFsc28gY29udmVydCBjb21wb25lbnRfcmVmcyBmcm9tCglyZWZlcmVuY2VzLgoKCSogbGV4LmMgKGNvbnNfdXBfZGVmYXVsdF9mdW5jdGlvbik6IFVzZSB0aGUgdHlwZSwgbm90IHRoZSBuYW1lLCBpbgoJZGVjbHNwZWNzLgoKCSogZGVjbDIuYyAoaW1wb3J0X2V4cG9ydF92dGFibGUpOiBGaXggd2VhayB2dGFibGVzLgoKRnJpIEFwciAgNSAxMzozMDoxNyAxOTk2ICBCb2IgTWFuc29uICA8bWFuc29uQGNoYXJtZWQuY3lnbnVzLmNvbT4KCgkqIHNlYXJjaC5jIChnZXRfYmFzZV9kaXN0YW5jZV9yZWN1cnNpdmUpOiBGaXggYWNjZXNzIGNoZWNrcyBmb3IKCXByb3RlY3RlZCBiYXNlcy4KCkZyaSBBcHIgIDUgMTE6MDI6MDYgMTk5NiAgQnJlbmRhbiBLZWhvZSAgPGJyZW5kYW5AbGlzYS5jeWdudXMuY29tPgoKCSogY2FsbC5jICh1bmFyeV9jb21wbGV4X2x2YWx1ZSk6IERlbGV0ZSB1bm5lZWRlZCBkZWNsLCBpdCdzIGluCgljcC10cmVlLmguCgkoY29udmVydF9oYXJzaG5lc3MpOiBBZGQgcHJvdG90eXBlcyB3cmFwcGVkIGJ5IFBST1RPLgoJKiBkZWNsMi5jIChncm9rX2Z1bmN0aW9uX2luaXQpOiBMaWtld2lzZS4KCShkb190b3BsZXZlbF91c2luZ19kZWNsKTogQ2hhbmdlIHRvIHZvaWQgcmV0dXJuIHR5cGUuCgkqIGNsYXNzLmMgKGJ1aWxkX3Z0YWJsZV9lbnRyeSk6IFJlbW92ZSBkZWNsIG9mIG1ha2VfdGh1bmsuCgkobWVyZ2Vfb3ZlcnJpZGVzKTogRml4IG9yZGVyIG9mIGFyZyBkZWZpbml0aW9ucy4KCShmaW5pc2hfdnRibHMpOiBMaWtld2lzZS4KCShmaXh1cF92dGFibGVfZGVsdGFzKTogTGlrZXdpc2UuCgkobW9kaWZ5X2FsbF9kaXJlY3RfdnRhYmxlcyk6IExpa2V3aXNlLgoJKG1vZGlmeV9hbGxfaW5kaXJlY3RfdnRhYmxlcyk6IExpa2V3aXNlLgoJKiBzZWFyY2guYyAoZ2V0X2Jhc2VfZGlzdGFuY2VfcmVjdXJzaXZlKTogTGlrZXdpc2UuCgkoZ2V0X2Fic3RyYWN0X3ZpcnR1YWxzXzEpOiBMaWtld2lzZS4KCShmaXh1cF92aXJ0dWFsX3VwY2FzdF9vZmZzZXRzKTogTGlrZXdpc2UuCgkobG9va3VwX2ZuZmllbGRzXzEpOiBBZGQgcHJvdG90eXBlcyB3cmFwcGVkIGJ5IFBST1RPLgoJKiBpbml0LmMgKHBlcmZvcm1fbWVtYmVyX2luaXQpOiBGaXggb3JkZXIgb2YgYXJnIGRlZmluaXRpb25zLgoJKGV4cGFuZF9hZ2dyX2luaXRfMSk6IEFkZCBwcm90b3R5cGVzIHdyYXBwZWQgYnkgUFJPVE8uCgkqIGNwLXRyZWUuaCAobWFrZV90aHVuayk6IEFkZCBkZWNsLgoJKG92ZXJsb2FkX3RlbXBsYXRlX25hbWUsIHB1c2hfdGVtcGxhdGVfZGVjbCk6IEFkZCBkZWNscy4KCShkb190b3BsZXZlbF91c2luZ19kZWNsKTogQ2hhbmdlIHRvIHZvaWQgcmV0dXJuIHR5cGUuCgkodmVjX2JpbmZvX21lbWJlcik6IEFkZCBkZWNsLgoKVGh1IEFwciAgNCAxMzozMzoxMCAxOTk2ICBCcmVuZGFuIEtlaG9lICA8YnJlbmRhbkBsaXNhLmN5Z251cy5jb20+CgoJKiB0eXBlY2suYyAobWFya19hZGRyZXNzYWJsZSwgY29udmVydF9mb3JfYXNzaWdubWVudCwKCWNvbnZlcnRfZm9yX2luaXRpYWxpemF0aW9uLCBwb2ludGVyX2ludF9zdW0sIHBvaW50ZXJfZGlmZiwKCXVuYXJ5X2NvbXBsZXhfbHZhbHVlKTogQWRkIHByb3RvdHlwZXMgd3JhcHBlZCBieSBQUk9UTy4KCShjb252ZXJ0X3NlcXVlbmNlKTogI2lmIDAgZm4gZGVjbCwgc2luY2UgZGVmaW5pdGlvbiBhbHNvIGlzLgoKVGh1IEFwciAgNCAxMTowMDo1MyAxOTk2ICBNaWtlIFN0dW1wICA8bXJzQGN5Z251cy5jb20+CgoJKiBydHRpLmMgKGJ1aWxkX2R5bmFtaWNfY2FzdCk6IE1ha2Ugc3VyZSB3ZSBzdHJpcCBxdWFsaWZpZXJzIG9uCgljYXN0IHRvIHBvaW50ZXIgdHlwZXMgZm9yIHR5cGUgc2VhcmNoaW5nLgoKV2VkIEFwciAgMyAxNzoxMDo1NyAxOTk2ICBCcmVuZGFuIEtlaG9lICA8YnJlbmRhbkBsaXNhLmN5Z251cy5jb20+CgoJKiB0eXBlY2suYyAoZ2V0X2RlbHRhX2RpZmZlcmVuY2UpOiBVc2UgY3BfZXJyb3IsIG5vdCBlcnJvciwgaW4gdGhlCgljYXNlIHdoZXJlIEJJTkZPID09IDAuCgpXZWQgQXByICAzIDEyOjAxOjAyIDE5OTYgIE1pa2UgU3R1bXAgIDxtcnNAY3lnbnVzLmNvbT4KCgkqIGNhbGwuYyAoYnVpbGRfbWV0aG9kX2NhbGwpOiBGaXggd29yZGluZyBvZiBlcnJvciBtZXNzYWdlcyBzbwoJY29uc3RydWN0b3JzIGNvbWUgb3V0IHJpZ2h0LgoKVHVlIEFwciAgMiAxNjowNjo1OSAxOTk2ICBCb2IgTWFuc29uICA8bWFuc29uQGNoYXJtZWQuY3lnbnVzLmNvbT4KCgkqIGRlY2wuYyAocHVzaF9vdmVybG9hZGVkX2RlY2wpOiBEb24ndCB3YXJuIGFib3V0IGhpZGRlbgoJY29uc3RydWN0b3JzIHdoZW4gYm90aCB0aGUgdHlwZSBhbmQgdGhlIGZ1bmN0aW9uIGFyZSBkZWNsYXJlZAoJaW4gYSBzeXN0ZW0gaGVhZGVyIGZpbGUuCgpNb24gQXByICAxIDA5OjAzOjEzIDE5OTYgIEJvYiBNYW5zb24gIDxtYW5zb25AY2hhcm1lZC5jeWdudXMuY29tPgoKCSogY2xhc3MuYyAoZmluaXNoX3N0cnVjdF8xKTogUHJvcGFnYXRlIHRoZSBUWVBFX1BBQ0tFRAoJZmxhZyBmb3IgdGhlIHR5cGUgdG8gdGhlIHR5cGUncyBmaWVsZHMuCgpTYXQgTWFyIDMwIDEyOjE0OjMzIDE5OTYgIEJyZW5kYW4gS2Vob2UgIDxicmVuZGFuQGxpc2EuY3lnbnVzLmNvbT4KCgkqIHBhcnNlLnkgKGNvbXBsZXhfcGFybWxpc3QsIEVMTElQU0VTKTogVGFrZSBvdXQgQVJNLWJhc2VkIHdhcm5pbmcuCgpGcmkgTWFyIDI5IDE1OjUxOjM2IDE5OTYgIEJvYiBNYW5zb24gIDxtYW5zb25AY2hhcm1lZC5jeWdudXMuY29tPgoKCSogY2xhc3MuYyAoYmFzZV9pbmZvLCBmaW5pc2hfYmFzZV9zdHJ1Y3QpOiBSZXBsYWNlCgluZWVkc192aXJ0dWFsX2R0b3Igd2l0aCBiYXNlX2hhc192aXJ0dWFsLgoKCShmaW5pc2hfc3RydWN0XzEpOiBSZW1vdmUgdGhlIG9sZCBjb2RlIHRoYXQgdHJpZWQgdG8gbWFrZSBkZWZhdWx0CglkZXN0cnVjdG9ycyB2aXJ0dWFsLiAgVXNlIGJhc2VfaGFzX3ZpcnR1YWwgd2hlbiBjaGVja2luZyBpZiB3ZSBuZWVkCgl0byBhZGQgYSB2dGFibGUgZW50cnkgZm9yIHRoZSBydHRpIGNvZGUuCgpGcmkgTWFyIDI5IDE0OjAyOjM2IDE5OTYgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIHB0LmMgKHB1c2hfdGVtcGxhdGVfZGVjbCk6IENvbXBsYWluIGFib3V0IHRlbXBsYXRlIGRlY2wgd2l0aAoJaW5hcHByb3ByaWF0ZSBkZWNsYXJhdGlvbi4KCkZyaSBNYXIgMjkgMTI6MTU6MzUgMTk5NiAgQm9iIE1hbnNvbiAgPG1hbnNvbkBjaGFybWVkLmN5Z251cy5jb20+CgoJKiB0eXBlY2suYyAoYnVpbGRfeF91bmFyeV9vcCk6IFJlbW92ZSBib2d1cyBjaGVjayBmb3IgdGFraW5nCgl0aGUgYWRkcmVzcyBvZiBhIG1lbWJlciBmdW5jdGlvbi4KCkZyaSBNYXIgMjkgMTE6NTY6MDIgMTk5NiAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogcGFyc2UueSAoY29uc3RydWN0b3JfZGVjbGFyYXRvcik6IE9ubHkgcHVzaCB0aGUgY2xhc3MgaWYKCXdlIGFyZSBub3QgYWxyZWFkeSBpbiB0aGUgY2xhc3MuCgpGcmkgTWFyIDI5IDA5OjQxOjAyIDE5OTYgIEplZmZyZXkgQS4gTGF3ICA8bGF3QGN5Z251cy5jb20+CgoJKiBtZXRob2QuYyAoZW1pdF90aHVuayk6IFJlbW92ZSBjdXJyZW50X2NhbGxfaXNfaW5kaXJlY3Qgbm9uc2Vuc2UuCglBZGQgYWRkaXRpb25hbCBhcmd1bWVudCB0byBJTklUX0NVTVVMQVRJVkVfQVJHUy4KClRodSBNYXIgMjggMTY6NDE6MzkgMTk5NiAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogZGVjbC5jIChzaGFkb3dfdGFnKTogRml4IGVycm9yIGFib3V0IGFub24gdW5pb24gd2l0aCBtZXRob2RzLgoKCSogcGFyc2UueSAoc2VsZl9yZWZlcmVuY2UpOiBPbmx5IGdlbmVyYXRlIGEgc2VsZi1yZWZlcmVuY2UgaWYgdGhpcwoJaXMgYSBub24tdGVtcGxhdGUgY2xhc3MuCgkob3B0LmNvbXBvbmVudF9kZWNsX2xpc3QpOiBPbmx5IHVzZSBpdCBpZiBpdCB3YXMgZ2VuZXJhdGVkLgoKCSogcGFyc2UueSAoY29tcG9uZW50X2RlY2xfMSk6IFVzZSBjb25zdHJ1Y3Rvcl9kZWNsYXJhdG9yLgoJKGZuLmRlZjIpOiBMaWtld2lzZS4KCShub3R5cGVfY29tcG9uZW50X2RlY2xhcmF0b3IwKTogTGlrZXdpc2UuCgpUaHUgTWFyIDI4IDE1OjExOjM1IDE5OTYgIEJvYiBNYW5zb24gIDxtYW5zb25AY2hhcm1lZC5jeWdudXMuY29tPgoKCSogdHlwZWNrLmMgKGJ1aWxkX3hfdW5hcnlfb3ApOiBBZGQgY2hlY2tzIGZvciB0YWtpbmcgdGhlIGFkZHJlc3MKCW9mIGEgVEFSR0VUX0VYUFIgb3Igb2YgYSBtZW1iZXIgZnVuY3Rpb24sIGFuZCBnaXZlIGFwcHJvcHJpYXRlCgl3YXJuaW5ncy4KClRodSBNYXIgMjggMTQ6NDk6MjYgMTk5NiAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogcHQuYyAocHJvY2Vzc190ZW1wbGF0ZV9wYXJtKTogQWxsb3cgdGVtcGxhdGUgdHlwZSBwYXJtcyB0byBiZQoJdXNlZCBhcyB0eXBlcyBmb3IgdGVtcGxhdGUgY29uc3QgcGFybXMuCgpXZWQgTWFyIDI3IDE1OjUxOjE5IDE5OTYgIE1pa2UgU3R1bXAgIDxtcnNAY3lnbnVzLmNvbT4KCgkqIGluaXQuYyAoZXhwYW5kX3ZlY19pbml0KTogRW5zdXJlIHRoZSBlaCBjbGVhbnVwcyBhcmUgb24gdGhlCglmdW5jdGlvbl9vYnN0YWNrLgoKV2VkIE1hciAyNyAxMDoxNDozMCAxOTk2ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBkZWNsLmMgKGxvb2t1cF9uYW1lX3JlYWwpOiBCZSBldmVuIG1vcmUgcGlja3kgYWJvdXQgdGhlCglhbWJpZ3VvdXMgbG9va3VwIHdhcm5pbmcuCgkoZ3Jva2RlY2xhcmF0b3IpOiBUd2VhayBTQ09QRV9SRUYgY29uc3RydWN0b3IgZGVjbGFyYXRvcnMgaGVyZS4KCSogcGFyc2UueSAoY29uc3RydWN0b3JfZGVjbGFyYXRvcik6IFJhdGhlciB0aGFuIGhlcmUuCgoJKiBwYXJzZS55IChjb25zdHJ1Y3Rvcl9kZWNsYXJhdG9yKTogTmV3IG5vbnRlcm1pbmFsLgoJKGZuLmRlZjEpOiBVc2UgaXQuCgkoZXhwbGljaXRfaW5zdGFudGlhdGlvbik6IExpa2V3aXNlLgoKVHVlIE1hciAyNiAxMzo0MTozMyAxOTk2ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJQWRkIGltcGxpY2l0IGRlY2xhcmF0aW9uIG9mIGNsYXNzIG5hbWUgYXQgY2xhc3Mgc2NvcGUuCgkqIGRlY2wuYyAobG9va3VwX25hbWVfcmVhbCk6IFJlc3RyaWN0IHBlZHdhcm4gYWJvdXQgYW1iaWd1b3VzIGxvb2t1cC4KCSogcGFyc2UueSAoc2VsZl9yZWZlcmVuY2UpOiBOZXcgbm9udGVybWluYWwuCgkob3B0LmNvbXBvbmVudF9kZWNsX2xpc3QpOiBVc2UgaXQuCgkoZm4uZGVmMSk6IEFkZCBuZXN0ZWRfbmFtZV9zcGVjaWZpZXIgdHlwZV9uYW1lIGNhc2VzLgoJKiBjbGFzcy5jIChidWlsZF9zZWxmX3JlZmVyZW5jZSk6IE5ldyBmdW5jdGlvbi4KCShmaW5pc2hfc3RydWN0KTogSGFuZGxlIGFjY2Vzc19kZWZhdWx0IGxhdGVyLCBtb3ZlIHNlbGYtcmVmZXJlbmNlCglkZWNsIHRvIHRoZSBlbmQuCgkqIHB0LmMgKGxvb2t1cF90ZW1wbGF0ZV9jbGFzcyk6IEhhbmRsZSBnZXR0aW5nIGEgVFlQRV9ERUNMLgoJKiBjcC10cmVlLmg6IEFkanVzdC4KCgkqIHB0LmMgKGRvX2Z1bmN0aW9uX2luc3RhbnRpYXRpb24pOiBTZXBhcmF0ZSBoYW5kbGluZyBvZiBtZW1iZXIKCWZ1bmN0aW9ucyBhbmQgbm9uLW1lbWJlciBmdW5jdGlvbnMgcHJvcGVybHkuCgpNb24gTWFyIDI1IDE0OjIzOjIyIDE5OTYgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIHB0LmMgKHByb2Nlc3NfdGVtcGxhdGVfcGFybSk6IEltcHJvdmUgZXJyb3IgZm9yICd2b2xhdGlsZSBjbGFzcyBLJy4KCgkqIGNsYXNzLmMgKGZpbmlzaF9zdHJ1Y3RfMSk6IENoZWNrIHRoZSByaWdodCBzbG90IGZvciBkZXN0cnVjdG9ycy4KCgkqIGRlY2wuYyAoc3RhcnRfZW51bSk6IENvbXBsYWluIGFib3V0IGVudW0gdGVtcGxhdGVzLgoKTW9uIE1hciAyNSAxMzoyNTozMSAxOTk2ICBNaWtlIFN0dW1wICA8bXJzQGN5Z251cy5jb20+CgoJKiBpbml0LmMgKHJlc29sdmVfb2Zmc2V0X3JlZik6IE9mZnNldCBwb2ludGVycyB0byBtZW1iZXIgZGF0YSBieSBvbmUuCgkqIHR5cGVjay5jICh1bmFyeV9jb21wbGV4X2x2YWx1ZSk6IExpa2V3aXNlLgoKTW9uIE1hciAyNSAxMzozMDo0MiAxOTk2ICBCb2IgTWFuc29uICA8bWFuc29uQGNoYXJtZWQuY3lnbnVzLmNvbT4KCgkqIHR5cGVjay5jIChjX2V4cGFuZF9yZXR1cm4pOiBDaGVjayBmb3IgYSByZXR1cm5lZCBsb2NhbAoJYXJyYXkgbmFtZSwgc2ltaWxhciB0byB0aGUgY2hlY2sgZm9yIGFuIEFERFJfRVhQUi4KCk1vbiBNYXIgMjUgMTM6MDc6MTkgMTk5NiAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogZGVjbC5jIChjcF9maW5pc2hfZGVjbCk6IERvbid0IGJ1aWxkIGNsZWFudXBzIGZvciBzdGF0aWMKCXZhcmlhYmxlcyBoZXJlLgoKRnJpIE1hciAyMiAxNzo1Nzo1NSAxOTk2ICBNaWtlIFN0dW1wICA8bXJzQGN5Z251cy5jb20+CgoJKiB0eXBlY2suYyAoYnVpbGRfbW9kaWZ5X2V4cHIpOiBGaXggZXJyb3IgbWVzc2FnZXMgdG8gYmUgbW9yZQoJYWNjdXJhdGUuCgkqIGNwLXRyZWUuaCAoYXNzb3BfYXNfc3RyaW5nKTogUGFyYWxsZWwgdG8gb3BfYXNfc3RyaW5nLCBidXQgZm9yCglhc3NpZ25tZW50IG9wZXJhdG9ycy4KCSogZXJyb3IuYyAoYXNzb3BfYXNfc3RyaW5nKTogTGlrZXdpc2UuICBBZGQgc3VwcG9ydCBmb3IgYCVRJyBmb3IKCWFzc2lnbm1lbnQgb3BlcmF0b3JzLgoKRnJpIE1hciAyMiAxMzo0ODoyOSAxOTk2ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBkZWNsLmMgKGdyb2tkZWNsYXJhdG9yKTogQ2FsbCBiYWRfc3BlY2lmaWVycyBmb3IgdHlwZWRlZnMuICBBbHNvCglnaXZlIGFuIGVycm9yIGlmIGluaXRpYWxpemVkLiAgcGVkd2FybiBhYm91dCBuZXN0ZWQgdHlwZSB3aXRoIHRoZQoJc2FtZSBuYW1lIGFzIGl0cyBlbmNsb3NpbmcgY2xhc3MuCgoJKiBwdC5jICh0c3Vic3QsIGNhc2UgVFlQRV9ERUNMKTogU2V0IERFQ0xfQ09OVEVYVC4KCgkqIHR5cGVjay5jIChyZXF1aXJlX2NvbXBsZXRlX3R5cGUpOiBCZSBzdXJlIHRvIGluc3RhbnRpYXRlIHRoZQoJTUFJTl9WQVJJQU5UIG9mIHRoZSB0eXBlLgoKCSogZGVjbDIuYyAoZmluaXNoX2ZpbGUpOiBJbnN0YW50aWF0ZSBwZW5kaW5nIHRlbXBsYXRlcyBiZWZvcmUKCXByb2Nlc3Npbmcgc3RhdGljIGNvbnN0cnVjdG9ycyBhbmQgZGVzdHJ1Y3RvcnMuCgoJKiBwdC5jIChpbnN0YW50aWF0ZV9kZWNsKTogRG9uJ3QgaW5zdGFudGlhdGUgZnVuY3Rpb25zIGF0IHRvcGxldmVsCgl1bmxlc3MgYXRfZW9mLgoKRnJpIE1hciAyMiAwOTozMDoxNyAxOTk2ICBCb2IgTWFuc29uICA8bWFuc29uQGJlYXV0eS5jeWdudXMuY29tPgoKCSogZGVjbDIuYyAoZGVsZXRlX3Nhbml0eSk6IElmIGVycm9yX21hcmtfbm9kZSBpcyBwYXNzZWQKCWluIGFzIGFuIGV4cHJlc3Npb24sIHF1aXQgd2hpbGUgd2UncmUgYWhlYWQuCgoJKiBkZWNsLmMgKGdyb2tkZWNsYXJhdG9yKTogR2l2ZSBhbiBlcnJvciBtZXNzYWdlIGlmIGBmcmllbmQnCglpcyBjb21iaW5lZCB3aXRoIGFueSBzdG9yYWdlIGNsYXNzIHNwZWNpZmllcnMuCgpXZWQgTWFyIDIwIDE0OjUxOjU1IDE5OTYgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIHBhcnNlLnkgKG5hbWVkX2NvbXBsZXhfY2xhc3NfaGVhZF9zYW5zX2Jhc2V0eXBlKTogRG9uJ3QgY3Jhc2ggb24KCWRlZmluaXRpb24gb2Ygbm9uZXhpc3RlbnQgbmVzdGVkIHR5cGUuCgoJKiBlcnJvci5jIChkdW1wX2RlY2wsIGNhc2UgVFlQRV9ERUNMKTogRml4IGRlY2lzaW9uIGZvciB3aGV0aGVyIG9yCglub3QgdG8gc2F5ICd0eXBlZGVmJy4KCldlZCBNYXIgMjAgMDA6MTE6NDcgMTk5NiAgQnJlbmRhbiBLZWhvZSAgPGJyZW5kYW5AbGlzYS5jeWdudXMuY29tPgoKCSogY3AtdHJlZS5oIChzdHJ1Y3QgbGFuZ190eXBlKTogTWFrZSBzZWFyY2hfc2xvdCBhIHRyZWUsIG5vdCBhIGNoYXIqLgoJKiBzZWFyY2guYyAoZGZzX3dhbGssIGRmc19pbml0X3ZiYXNlX3BvaW50ZXJzLAoJZXhwYW5kX3VwY2FzdF9maXh1cHMpOiBSZW1vdmUgY2FzdCBvZiBDTEFTU1RZUEVfU0VBUkNIX1NMT1QuCgkoZGZzX2ZpbmRfdmJhc2VzKTogUmVtb3ZlIGNhc3QgZm9yIENMQVNTVFlQRV9TRUFSQ0hfU0xPVCBpbml0LgoKVHVlIE1hciAxOSAxNzo1NjowMyAxOTk2ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBleGNlcHQuYyAoYnVpbGRfdGhyb3cpOiBTdXBwb3J0IG1pbmltYWwgcGFyc2UuCgkqIHB0LmMgKHRzdWJzdF9jb3B5KTogU3VwcG9ydCBUSFJPV19FWFBSLgoJKiBkZWNsMi5jIChidWlsZF9leHByX2Zyb21fdHJlZSk6IExpa2V3aXNlLgoKCSogcHQuYyAobWFuZ2xlX2NsYXNzX25hbWVfZm9yX3RlbXBsYXRlKTogQWx3YXlzIGFsbG9jYXRlCglzY3JhdGNoX2ZpcnN0b2JqLgoKVHVlIE1hciAxOSAxNjozNDozMSAxOTk2ICBCb2IgTWFuc29uICA8bWFuc29uQGJlYXV0eS5jeWdudXMuY29tPgoKCSogY3Z0LmMgKGNwX2NvbnZlcnRfdG9fcG9pbnRlcik6IEdpdmUgYW4gYXBwcm9wcmlhdGUgZXJyb3IKCXdoZW4gdHJ5aW5nIHRvIGNhc3QgZnJvbSBhbiBpbmNvbXBsZXRlIHR5cGUuCgpUdWUgTWFyIDE5IDE2OjAwOjMzIDE5OTYgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIHB0LmMgKGluc3RhbnRpYXRlX2NsYXNzX3RlbXBsYXRlKTogRG9uJ3QgYm90aGVyIHNldHRpbmcgdXAKCUNMQVNTVFlQRV9UQUdTIGV4cGxpY2l0bHksIGFzIHRoZSBuZXN0ZWQgdHlwZXMgd2lsbCBhZGQKCXRoZW1zZWx2ZXMuCgpUdWUgTWFyIDE5IDE1OjQ4OjQzIDE5OTYgIEJvYiBNYW5zb24gIDxtYW5zb25AYmVhdXR5LmN5Z251cy5jb20+CgoJKiBkZWNsLmMgKHNoYWRvd190YWcpOiBSZW1vdmUgb2xkIGVycm9yIGNoZWNrIGZvciB1c2FnZSBvZgoJYW4gZW51bSB3aXRob3V0IGEgcHJldmlvdXMgZGVjbGFyYXRpb24uCgkoeHJlZl90YWcpOiBBZGQgZXJyb3IgbWVzc2FnZSBhYm91dCB1c2FnZSBvZiBlbnVtcyB3aXRob3V0IGEKCXByZXZpb3VzIGRlY2xhcmF0aW9uLgoKVHVlIE1hciAxOSAwOToyMTozNSAxOTk2ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBsZXguYyAoZG9faWRlbnRpZmllcik6IE9ubHkgZG8gbmFtZSBjb25zaXN0ZW5jeSBjaGVjayBpZiB3ZSdyZQoJcGFyc2luZy4KCgkqIHB0LmMgKHB1c2hfdGVtcGxhdGVfZGVjbCk6IERvbid0IGNyYXNoIGlmIHdlIGdldCBhIG1lbWJlciBkZWZuCgl0aGF0IGRvZXNuJ3QgbWF0Y2guCgoJKiBkZWNsLmMgKHhyZWZfdGFnX2Zyb21fdHlwZSk6IE5ldyBmdW5jdGlvbiB0byBkbyBhbiB4cmVmIHdpdGhvdXQKCWFsd2F5cyBoYXZpbmcgdG8gZmlndXJlIG91dCBjb2RlX3R5cGVfbm9kZS4KCSogY3AtdHJlZS5oOiBEZWNsYXJlIGl0LgoJKiBwdC5jIChpbnN0YW50aWF0ZV9jbGFzc190ZW1wbGF0ZSk6IFVzZSBpdCBmb3IgZnJpZW5kIGNsYXNzZXMuCgkobG9va3VwX3RlbXBsYXRlX2NsYXNzKTogVXNlIGl0LgoKCSogdHlwZWNrMi5jIChidWlsZF9mdW5jdGlvbmFsX2Nhc3QpOiBQdWxsIG91dCBhIHNpbmdsZSBwYXJtIGJlZm9yZQoJcGFzc2luZyBpdCB0byBidWlsZF9jX2Nhc3QuCgpUdWUgTWFyIDE5IDA5OjA3OjE1IDE5OTYgIEJvYiBNYW5zb24gIDxtYW5zb25AYmVhdXR5LmN5Z251cy5jb20+CgoJKiBleHByLmMgKGRvX2Nhc2UpOiBHaXZlIGFuIGVycm9yIG1lc3NhZ2UgaWYgYSBwb2ludGVyIGlzCglnaXZlbiBhcyBhIGNhc2UgdmFsdWUuCgpNb24gTWFyIDE4IDIxOjU3OjU0IDE5OTYgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIHR5cGVjay5jIChidWlsZF9jX2Nhc3QpOiBEb24ndCBwdWxsIHNpbmdsZSBURU1QTEFURV9ERUNMIG91dCBvZgoJYW4gb3ZlcmxvYWQgbGlzdC4KCgkqIGxleC5jIChjb25zX3VwX2RlZmF1bHRfZnVuY3Rpb24pOiBSZWFsbHksIG5vdywgaW50ZXJmYWNlIGhhY2tlcnkKCWRvZXMgbm90IGFwcGx5IHRvIHN5bnRoZXNpemVkIG1ldGhvZHMuCgpNb24gTWFyIDE4IDE4OjIwOjU3IDE5OTYgIE1pa2UgU3R1bXAgIDxtcnNAY3lnbnVzLmNvbT4KCgkqIGNhbGwuYyAoYnVpbGRfbWV0aG9kX2NhbGwpOiBDdG9ycyBhbmQgZHRvcnMgbm93IGhhdmUgc3BlY2lhbCBuYW1lcwoJd2l0aCByZXNwZWN0IHRvIGxvb2t1cHMuCgkqIGNsYXNzLmMgKGFkZF9tZXRob2QpOiBMaWtld2lzZS4KCShncm93X21ldGhvZCk6IExpa2V3aXNlLgoJKGZpbmlzaF9zdHJ1Y3RfbWV0aG9kcyk6IExpa2V3aXNlLgoJKHdhcm5faGlkZGVuKTogTGlrZXdpc2UuCgkoZmluaXNoX3N0cnVjdF8xKTogTGlrZXdpc2UuCgkqIGN2dC5jIChjb252ZXJ0X3RvX3JlZmVyZW5jZSk6IExpa2V3aXNlLgoJKGNvbnZlcnRfdG9fYWdncik6IExpa2V3aXNlLgoJKGNwX2NvbnZlcnQpOiBMaWtld2lzZS4KCSogZGVjbDIuYyAoY2hlY2tfY2xhc3Nmbik6IExpa2V3aXNlLgoJKiBpbml0LmMgKGV4cGFuZF9tZW1iZXJfaW5pdCk6IExpa2V3aXNlLgoJKGV4cGFuZF9kZWZhdWx0X2luaXQpOiBMaWtld2lzZS4KCShleHBhbmRfYWdncl9pbml0XzEpOiBMaWtld2lzZS4KCShidWlsZF9vZmZzZXRfcmVmKTogTGlrZXdpc2UuCgkoYnVpbGRfbmV3KTogTGlrZXdpc2UuCgkoYnVpbGRfZGVsZXRlKTogTGlrZXdpc2UuCgkqIGxleC5jIChkb19pbmxpbmVfZnVuY3Rpb25faGFpcik6IExpa2V3aXNlLgoJKiBzZWFyY2guYyAobG9va3VwX2ZpZWxkXzEpOiBMaWtld2lzZS4KCShsb29rdXBfZm5maWVsZHNfaGVyZSk6IExpa2V3aXNlLgoJKGxvb2t1cF9maWVsZCk6IExpa2V3aXNlLgoJKGxvb2t1cF9mbmZpZWxkcyk6IExpa2V3aXNlLgoJKGdldF92aXJ0dWFsX2Rlc3RydWN0b3IpOiBMaWtld2lzZS4KCShkZnNfZGVidWdfbWFyayk6IExpa2V3aXNlLgoJKGRmc19wdXNoZGVjbHMpOiBMaWtld2lzZS4KCShkZnNfY29tcHJlc3NfZGVjbHMpOiBMaWtld2lzZS4KCSogdHJlZS5jIChsYXlvdXRfYmFzZXR5cGVzKTogTGlrZXdpc2UuCgkqIHR5cGVjay5jIChidWlsZF9jb21wb25lbnRfcmVmKTogTGlrZXdpc2UuCgkoYnVpbGRfeF9mdW5jdGlvbl9jYWxsKTogTGlrZXdpc2UuCgkoYnVpbGRfbW9kaWZ5X2V4cHIpOiBMaWtld2lzZS4KCShjb252ZXJ0X2Zvcl9pbml0aWFsaXphdGlvbik6IExpa2V3aXNlLgoJKGJ1aWxkX2Z1bmN0aW9uYWxfY2FzdCk6IExpa2V3aXNlLgoJKiBjcC10cmVlLmggKENMQVNTVFlQRV9GSVJTVF9DT05WRVJTSU9OKTogTGlrZXdpc2UuCgkoQ1RPUl9OQU1FKTogTmV3LgoJKERUT1JfTkFNRSk6IE5ldy4KCSogZGVjbC5jIChjdG9yX2lkZW50aWZpZXIpOiBOZXcuCgkoZHRvcl9pZGVudGlmaWVyKTogTmV3LgoJKGluaXRfZGVjbF9wcm9jZXNzaW5nKTogU2V0IHRoZW0uCgpNb24gTWFyIDE4IDE4OjAwOjUxIDE5OTYgIE1pa2UgU3R1bXAgIDxtcnNAY3lnbnVzLmNvbT4KCgkqIHR5cGVjay5jIChidWlsZF9jb21wb25lbnRfcmVmKTogRG9uJ3QgZ2V0IGNvbmZ1c2VkIGJ5IGZpZWxkcyB3aG9zZQoJY29udGV4dCBoYXMgbm8gdHlwZSBuYW1lLCBsaWtlIHBvaW50ZXIgdG8gbWVtYmVyIGZ1bmN0aW9ucy4KCk1vbiBNYXIgMTggMTM6MTk6MDMgMTk5NiAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogZGVjbC5jIChncm9rZGVjbGFyYXRvcik6IEhhbmRsZSB0eXBlZGVmIHdpdGhvdXQgZGVjbGFyYXRvci4KCgkqIHB0LmMgKHRzdWJzdCk6IEhhbmRsZSBTQ09QRV9SRUYgaW4gZGVjbGFyYXRvci4KCgkqIHBhcnNlLnkgKGJhZF9wYXJtKTogQ2F0Y2ggYW5vdGhlciBjYXNlIG9mIG1pc3NpbmcgYHR5cGVuYW1lJy4KCgkqIGxleC5jICh5eXByaW50KTogSGFuZGxlIFRZUEVfREVDTHMuCgoJKiBkZWNsLmMgKHN0YXJ0X2Z1bmN0aW9uKTogRG9uJ3QgdHJ5IHRvIGJlIGNsZXZlci4KCgkqIGxleC5jOiBMb3NlIGNvbXBpbGVyX2Vycm9yX3dpdGhfZGVjbC4KCSogdHlwZWNrMi5jOiBMb3NlIGVycm9yX3dpdGhfYWdncl90eXBlLgoJKGluY29tcGxldGVfdHlwZV9lcnJvcik6IFVzZSBjcF8qIGluc3RlYWQgb2Ygb2xkIGZ1bmN0aW9ucy4KCShyZWFkb25seV9lcnJvcik6IExpa2V3aXNlLgoJKiB0eXBlY2suYyAoY29udmVydF9hcmd1bWVudHMpOiBMaWtld2lzZS4KCSogc2VhcmNoLmMgKGxvb2t1cF9uZXN0ZWRfZmllbGQpOiBMaWtld2lzZS4KCSogbWV0aG9kLmMgKG1ha2VfdGh1bmspOiBMaWtld2lzZS4KCSogZGVjbC5jIChncm9rcGFybXMpOiBMaWtld2lzZS4KCSogY3AtdHJlZS5oOiBVcGRhdGUuCgoJKiB0cmVlLmMgKG1pbl90cmVlX2NvbnMpOiBDYWxsIGNvcHlfdG9fcGVybWFuZW50IGZvciB0aGUgcHVycG9zZQoJYW5kIHZhbHVlLgoKTW9uIE1hciAxOCAxMToyNTo1MiAxOTk2ICBCb2IgTWFuc29uICA8bWFuc29uQGJlYXV0eS5jeWdudXMuY29tPgoKCSogbWV0aG9kLmMgKGJ1aWxkX29wZm5jYWxsKTogV2hlbiBkZWxldGluZyBhIHBvaW50ZXIgdG8gYW4KCWFycmF5LCBidWlsZCBhIG5ldyBwb2ludGVyIHRvIHRoZSB0cmVlIHBhc3QgYW55IEFSUkFZX1RZUEUKCW5vZGVzLgoKTW9uIE1hciAxOCAxMDoxMTo0NiAxOTk2ICBCcmVuZGFuIEtlaG9lICA8YnJlbmRhbkBsaXNhLmN5Z251cy5jb20+CgoJKiBkZWNsLmMgKGxvb2t1cF9uYW1lX3JlYWwpOiBJbml0aWFsaXplIGxvY2FsIHZhciBUWVBFIHRvIE5VTExfVFJFRS4KCkZyaSBNYXIgMTUgMTE6MDM6NTcgMTk5NiAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogcHQuYyAoaW5zdGFudGlhdGVfZGVjbCk6IE9ubHkgY2FsbCBpbXBvcnRfZXhwb3J0X2RlY2wgaWYgYXRfZW9mCglhbmQgISBERUNMX0lOTElORS4KCgkqIGRlY2wuYyAoZmluaXNoX2Z1bmN0aW9uKTogRG9uJ3Qgc2V0IG5lc3RlZCBiYXNlZCBvbgoJaGFja19kZWNsX2Z1bmN0aW9uX2NvbnRleHQuCgkqIHBhcnNlLnkgKGZ1bmN0aW9uX3RyeV9ibG9jayk6IENoZWNrIGZvciBuZXN0ZWQgZnVuY3Rpb24uCgkocGVuZGluZ19pbmxpbmVzKTogTGlrZXdpc2UuCgoJKiBkZWNsMi5jIChidWlsZF9leHByX2Zyb21fdHJlZSk6IElmIGEgdW5hcnkgb3AgYWxyZWFkeSBoYXMgYQoJdHlwZSwganVzdCByZXR1cm4gaXQuCgoJKiBkZWNsMi5jIChmaW5pc2hfcHJldnRhYmxlX3ZhcmRlY2wpOiBVc2UgQURKVVNUX1ZUQUJMRV9MSU5LQUdFLgoKCSogZGVjbDIuYyAod2Fsa192dGFibGVzKTogdmFyZGVjbF9mbiByZXR1cm5zIGludDsgcmV0dXJuIDEgaWYgaXQgZG9lcy4KCShmaW5pc2hfZmlsZSk6IENoZWNrIHRoZSByZXR1cm4gdmFsdWUgb2Ygd2Fsa192dGFibGVzLgoJKGZpbmlzaF9wcmV2dGFibGVfdmFyZGVjbCk6IFJldHVybiBpbnQuCgkoZmluaXNoX3Z0YWJsZV92YXJkZWNsKTogTGlrZXdpc2UuCgkocHJ1bmVfdnRhYmxlX3ZhcmRlY2wpOiBMaWtld2lzZS4KCSogbGV4LmMgKHNldF92YXJkZWNsX2ludGVyZmFjZV9pbmZvKTogTGlrZXdpc2UuCgkqIGNwLXRyZWUuaDogQWRqdXN0IHJldHVybiB0eXBlcy4KCgkqIGNsYXNzLmMgKGRlbGV0ZV9kdXBsaWNhdGVfZmllbGRzXzEpOiBEb24ndCBjb21wbGFpbiBhYm91dAoJZHVwbGljYXRlIG5lc3RlZCB0eXBlcyBpZiB0aGV5J3JlIHRoZSBzYW1lIHR5cGUuCgkoZmluaXNoX3N0cnVjdCk6IFJlbW92ZSBjaGVjayBmb3IgZHVwbGljYXRlLgoJKiBkZWNsMi5jIChncm9rZmllbGQpOiBEb24ndCBjaGVjayBmb3IgdHlwZWRlZiBvZiBhbm9ueW1vdXMgdHlwZS4KClRodSBNYXIgMTQgMTA6MDA6MTkgMTk5NiAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogY3AtdHJlZS5oOiBMb3NlIFNJR05BVFVSRV9HUk9LS0lOR19UWVBFREVGLgoKCSogZGVjbC5jIChncm9rZGVjbGFyYXRvcik6IExvc2Ugc3BlY2lhbCBoYW5kbGluZyBvZiBjbGFzcy1sZXZlbAoJdHlwZWRlZi4gIExvc2UgU0lHTkFUVVJFX0dST0tLSU5HX1RZUEVERUYuICBTZXQKCVNJR05BVFVSRV9IQVNfT1BBUVVFX1RZUEVERUNMUyBsYXRlci4KCgkqIGN2dC5jIChjb252ZXJ0X3BvaW50ZXJfdG9fcmVhbCk6IFJldGFpbiBjdi1xdWFscyBpbiBjb252ZXJzaW9uLgoKCSogcHQuYyAodHN1YnN0X2NvcHkpOiBTdHJpcCBjdi1xdWFscyBmcm9tIGRlc3RydWN0b3IgbmFtZSB0eXBlcy4KCgkqIHNlYXJjaC5jIChjb21wdXRlX2FjY2Vzcyk6IEZpeCBoYW5kbGluZyBvZiBhbm9ueW1vdXMgdW5pb24KCW1lbWJlcnMuCgkqIGNsYXNzLmMgKGZpbmlzaF9zdHJ1Y3RfYW5vbik6IFByb3BhZ2F0ZSBUUkVFX3tQUklWQVRFLFBST1RFQ1RFRH0KCWZyb20gYW5vbnltb3VzIHVuaW9ucyB0byB0aGVpciBtZW1iZXJzLgoKCSogdHlwZWNrLmMgKGJ1aWxkX3hfZnVuY3Rpb25fY2FsbCk6IEZvciBzdGF0aWMgbWVtYmVyIGZ1bmN0aW9ucywKCWhhbmQgb2ZmIHRvIGJ1aWxkX21lbWJlcl9jYWxsLgoKV2VkIE1hciAxMyAxNDowMzozNCAxOTk2ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiB0eXBlY2suYyAoYnVpbGRfY29tcG9uZW50X3JlZik6IEhhbmRsZSBPRkZTRVRfUkVGcy4KCgkqIGluaXQuYyAoZXhwYW5kX3ZlY19pbml0KTogRml4IGluaXQgPT0gMCBjYXNlLgoKVHVlIE1hciAxMiAxNDozNjowMiAxOTk2ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBpbml0LmMgKGJ1aWxkX25ldyk6IHBlZHdhcm4gYWJvdXQgaW5pdCBhbmQgYXJyYXkgbmV3LgoJKGV4cGFuZF92ZWNfaW5pdCk6IEhhbmRsZSBsaXN0cywgdXNlIGNvbnZlcnRfZm9yX2luaXRpYWxpemF0aW9uLgoKCSogdHlwZWNrLmMgKGNvbnZlcnRfZm9yX2luaXRpYWxpemF0aW9uKTogUGFzcyBMT09LVVBfTk9fQ09OVkVSU0lPTgoJd2hlbiBjb252ZXJ0aW5nIHRvIGFuIGFnZ3JlZ2F0ZSB0eXBlLgoJKiBjdnQuYyAoY3BfY29udmVydCk6IFBhc3MgaXQgdGhyb3VnaC4KCgkqIHR5cGVjay5jIChidWlsZF9jb25kaXRpb25hbF9leHByKTogSGFuZGxlIHVzZXItZGVmaW5lZAoJY29udmVyc2lvbnMgdG8gc2xpZ2h0bHkgZGlmZmVyZW50IHR5cGVzLgoKCSogZGVjbC5jIChncm9rZGVjbGFyYXRvcik6IEZvcmNlIGFuIGFycmF5IHR5cGUgaW4gYSBwYXJtIHRvIGJlCglwZXJtYW5lbnQuCgoJKiBkZWNsMi5jIChkb191c2luZ19kaXJlY3RpdmUpOiBTb3JyeS4KCShkb19uYW1lc3BhY2VfYWxpYXMpOiBMaWtld2lzZS4KCSogbGV4LmMgKHJlYWxfeXlsZXgpOiBXYXJuIGFib3V0IHVzaW5nIHRoZSBgbmFtZXNwYWNlJyBrZXl3b3JkLgoKU3VuIE1hciAxMCAyMjoyNjowOSAxOTk2ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBwYXJzZS55IChkYXRhZGVmKTogTW92ZSBjYWxsIHRvIG5vdGVfbGlzdF9nb3Rfc2VtaWNvbG9uIHVwLgoKRnJpIE1hciAgOCAxMTo0NzoyNiAxOTk2ICBNaWtlIFN0dW1wICA8bXJzQGN5Z251cy5jb20+CgoJKiB0cmVlLmMgKHVuc2F2ZV9leHByKTogRG9uJ3QgdW5zYXZlLCBVTlNBVkVfRVhQUnMuCgpGcmkgTWFyICA4IDExOjI5OjA2IDE5OTYgIE1pa2UgU3R1bXAgIDxtcnNAY3lnbnVzLmNvbT4KCgkqIGRlY2wuYyAoY3BfZmluaXNoX2RlY2wpOiBUaGUgZXhjZXB0aW9uIHJlZ2lvbnMgaGF2ZSB0byBiZQoJbmVzdGVkLCBub3Qgb3ZlcmxhcHBpbmcuICBXZSBzdGFydCB0aGUgZXhjZXB0aW9uIHJlZ2lvbiBmb3IgYQoJZGVjbCwgYWZ0ZXIgaXQgaGFzIGJlZW4gZnVsbHkgYnVpbHQsIGFuZCBhbGwgdGVtcG9yYXJpZXMgZm9yIGl0CgloYXZlIGJlZW4gY2xlYW5lZCB1cC4KClRodSBNYXIgIDcgMTc6NDY6MDYgMTk5NiAgTWlrZSBTdHVtcCAgPG1yc0BjeWdudXMuY29tPgoKCSogdHJlZS5jICh2ZWNfYmluZm9fbWVtYmVyKTogRG9uJ3QgY29yZSBkdW1wIGlmIHdlIGhhdmUgbm8gYmFzZXMuCgpUaHUgTWFyICA3IDE0OjExOjQ5IDE5OTYgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIHRyZWUuZGVmOiBBZGQgUkVUVVJOX0lOSVQuCgkqIHB0LmMgKGluc3RhbnRpYXRlX2RlY2wpOiBIYW5kbGUgUkVUVVJOX0lOSVQuCgkqIGRlY2wuYyAoc3RvcmVfcmV0dXJuX2luaXQpOiBIYW5kbGUgbWluaW1hbF9wYXJzZV9tb2RlLgoKCSogdHJlZS5jIChjcF9idWlsZF90eXBlX3ZhcmlhbnQpOiBKdXN0IHJldHVybiBhbiBlcnJvcl9tYXJrX25vZGUuCgkqIGRlY2wuYyAobWFrZV90eXBlbmFtZV90eXBlKTogRG9uJ3QgdHJ5IHRvIGdldCB0aGUgZmlsZSBhbmQgbGluZQoJb2YgYW4gaWRlbnRpZmllci4KCSogdHlwZWNrLmMgKGNvbXB0eXBlcyk6IEhhbmRsZSBUWVBFTkFNRV9UWVBFLgoKV2VkIE1hciAgNiAxODo0Nzo1MCAxOTk2ICBQZXIgQm90aG5lciAgPGJvdGhuZXJAa2FsZXNzaW4uY3lnbnVzLmNvbT4KCgkqIGRlY2wuYyAocG9wbGV2ZWwpOiBNYWtlIHN1cmUgd2UgY2xlYXIgb3V0IGFuZCByZXN0b3JlIG9sZCBsb2NhbAoJbm9uLVZBUl9ERUNMIHZhbHVlcyBieSBkZWZhdWx0IHdoZW4gdGhleSBnbyBvdXQgb2Ygc2NvcGUuCgpXZWQgTWFyICA2IDA5OjU3OjM2IDE5OTYgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIG1ldGhvZC5jIChidWlsZF9vdmVybG9hZF92YWx1ZSk6IFVzZSBERUNMX0FTU0VNQkxFUl9OQU1FIGluCglyZWZlcnJpbmcgdG8gYWRkcmVzc2VzIG9mIHZhcmlhYmxlcyBhbmQgZnVuY3Rpb25zLgoKCSogZXJyb3IuYyAoZHVtcF9leHByKTogU3VwcG9ydCBTSVpFT0ZfRVhQUi4KCgkqIGluaXQuYyAoZG9fZnJpZW5kKTogVXNlIHRoZSByZXR1cm4gdmFsdWUgb2YgY2hlY2tfY2xhc3Nmbi4KCgkqIHR5cGVjay5jIChjb252ZXJ0X2FyZ3VtZW50cyk6IENhbGwgY29tcGxldGVfdHlwZS4KCgkqIG1ldGhvZC5jIChoYWNrX2lkZW50aWZpZXIpOiBBZnRlciBnaXZpbmcgYW4gZXJyb3IsIHNldCB2YWx1ZSB0bwoJZXJyb3JfbWFya19ub2RlLgoKVHVlIE1hciAgNSAxNjowMDoxNSAxOTk2ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiB0cmVlLmMgKGhhY2tfZGVjbF9mdW5jdGlvbl9jb250ZXh0KTogS2x1ZGdlIGFyb3VuZCBERUNMX0NPTlRFWFQKCWxvc3NhZ2UgZm9yIGxvY2FsIGNsYXNzZXMuCgkqIGNwLXRyZWUuaDogRGVjbGFyZSBpdC4KCSogZGVjbC5jIChsb29rdXBfbmFtZV9yZWFsKTogRXZpbCwgcGFpbmZ1bCBoYWNrIGZvciBsb2NhbCBjbGFzc2VzLgoJKGdyb2tmbmRlY2wpOiBTZXQgREVDTF9DTEFTU19DT05URVhUIGFuZCBERUNMX05PX1NUQVRJQ19DSEFJTiBoZXJlLgoJVXNlIGhhY2tfZGVjbF9mdW5jdGlvbl9jb250ZXh0LgoJKGdyb2tkZWNsYXJhdG9yKTogRG9uJ3Qgc2V0IERFQ0xfTk9fU1RBVElDX0NIQUlOIGhlcmUuCgkoc3RhcnRfZnVuY3Rpb24pOiBVc2UgaGFja19kZWNsX2Z1bmN0aW9uX2NvbnRleHQuCgkoZmluaXNoX2Z1bmN0aW9uKTogTGlrZXdpc2UuCgkqIG1ldGhvZC5jIChzeW50aGVzaXplX21ldGhvZCk6IExpa2V3aXNlLgoJKiBsZXguYyAocHJvY2Vzc19uZXh0X2lubGluZSk6IExpa2V3aXNlLgoJKGRvX3BlbmRpbmdfaW5saW5lcyk6IExpa2V3aXNlLgoJKiBkZWNsMi5jIChmaW5pc2hfZmlsZSk6IFVuc2V0IERFQ0xfU1RBVElDX0ZVTkNUSU9OX1Agd2hlbiB3ZSdyZQoJZG9uZSB3aXRoIGl0LgoKTW9uIE1hciAgNCAyMjozODozOSAxOTk2ICBHZXJhbGQgQmF1bWdhcnRuZXIgIDxnYkBhbGV4YW5kZXIuY3MucHVyZHVlLmVkdT4KCgkqIHNpZy5jIChidWlsZF9zaWduYXR1cmVfcG9pbnRlcl9vcl9yZWZlcmVuY2VfdHlwZSk6IEFsaWduCglzaWduYXR1cmUgcG9pbnRlcnMvcmVmZXJlbmNlcyBvbiA4LWJ5dGUgYm91bmRhcmllcyBzbyB0aGV5IGNhbiBiZQoJZ3JhYmJlZCAyIHdvcmRzIGF0IGEgdGltZSBvbiBhIFNQQVJDLgoKVHVlIE1hciAgNSAxMDoyMTowMSAxOTk2ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBtZXRob2QuYyAoaGFja19pZGVudGlmaWVyKTogUmVxdWlyaW5nIGEgc3RhdGljIGNoYWluIGlzIG5vdyBhCgloYXJkIGVycm9yLgoJKiBkZWNsLmMgKGdyb2tkZWNsYXJhdG9yKTogU2V0IERFQ0xfTk9fU1RBVElDX0NIQUlOIG9uIG5lc3RlZAoJZnVuY3Rpb25zLgoKTW9uIE1hciAgNCAyMDowMzozMyAxOTk2ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBpbml0LmMgKGJ1aWxkX29mZnNldF9yZWYpOiBDYWxsIGNvbXBsZXRlX3R5cGUuCgoJKiBkZWNsLmMgKHBvcF9mcm9tX3RvcF9sZXZlbCk6IEFsd2F5cyBwb3AgcHJldmlvdXNfY2xhc3NfdHlwZS4KCgkqIHBhcnNlLnk6IEhhbmRsZSBtdWx0aXBsZSBkZWNscyBpbiBhIGZvci1pbml0LXN0YXRlbWVudC4KCSogcHQuYyAodHN1YnN0X2V4cHIpOiBMaWtld2lzZS4KCgkqIHB0LmMgKHRzdWJzdCk6IFVzZSB0c3Vic3RfZXhwciBmb3IgdGhlIHNlY29uZCBvcGVyYW5kIG9mIGFuCglBUlJBWV9SRUYuCgoJKiBkZWNsLmMgKG1heWJlX3B1c2hfdG9fdG9wX2xldmVsKTogRG9uJ3Qgc2F2ZSBwcmV2aW91c19jbGFzc190eXBlLgoJKHBvcGxldmVsX2NsYXNzKTogU2V0IGl0IGhlcmUuCgkocG9wX2Zyb21fdG9wX2xldmVsKTogUG9wIGl0IGhlcmUgaWYgd2UncmUgcmV0dXJuaW5nIHRvIGNsYXNzIHNjb3BlLgoJKiBjbGFzcy5jIChwdXNoY2xhc3MpOiBEb24ndCBzZXQgaXQgaGVyZS4KCgkqIGRlY2wuYyAobWF5YmVfcHVzaF90b190b3BfbGV2ZWwpOiBTYXZlIGN1cnJlbnRfdGVtcGxhdGVfcGFybXMsCglhbmQgY2xlYXIgaXQgaWYgIXBzZXVkby4KCShwb3BfZnJvbV90b3BfbGV2ZWwpOiBSZXN0b3JlIGl0LgoKCSogZGVjbDIuYyAoZmluaXNoX2ZpbGUpOiBQdXNoIHRoZSBkdW1teSBlYWNoIHRpbWUgd2Ugd2FsayB0aGUgbGlzdAoJb2YgdnRhYmxlcy4KCgkqIGVycm9yLmMgKGR1bXBfZXhwcik6IFN1cHBvcnQgTE9PS1VQX0VYUFIgYW5kIGFjdHVhbGx5IGRvCglzb21ldGhpbmcgZm9yIENBU1RfRVhQUi4KCk1vbiBGZWIgMTkgMTQ6NDk6MTggMTk5NiAgUnVzdHkgUnVzc2VsbCAgPHJ1c3R5QGFkZWxhaWRlLm1hcHRlay5jb20uYXU+CgoJKiBjdnQuYyAoY3BfY29udmVydCk6IFdhcm4gYWJvdXQgaW1wbGljaXQgY29udmVyc2lvbiBvZiB0aGUKCWFkZHJlc3Mgb2YgYSBmdW5jdGlvbiB0byBib29sLCBhcyBpdCBpcyBhbHdheXMgdHJ1ZS4KCkZyaSBGZWIgMjMgMjM6MDY6MDEgMTk5NiAgUnVzdHkgUnVzc2VsbCAgPHJ1c3R5QGFkZWxhaWRlLm1hcHRlay5jb20uYXU+CgoJKiB0eXBlY2suYyAoY19leHBhbmRfcmV0dXJuKTogRml4IHdhcm5pbmcgZm9yIGxvY2FsIGV4dGVybnMgcmV0dXJuZWQuCgpNb24gTWFyICA0IDE1OjAzOjExIDE5OTYgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIHRyZWUuYyAobWFwY2FyKTogUHJvcGFnYXRlIGNvbnN0IGFuZCB2b2xhdGlsZSBwcm9wZXJseS4KCgkqIHR5cGVjay5jIChjb21wbGV0ZV90eXBlKTogQmUgc3VyZSB0byBpbnN0YW50aWF0ZSB0aGUKCU1BSU5fVkFSSUFOVCBvZiB0aGUgdHlwZS4KCgkqIG1ldGhvZC5jIChzeW50aGVzaXplX21ldGhvZCk6IENsYXNzIGludGVyZmFjZSBoYWNrZXJ5IGRvZXMgbm90CglhcHBseSB0byBzeW50aGVzaXplZCBtZXRob2RzLgoKTW9uIE1hciAgNCAxNDowNToyMyAxOTk2ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBwdC5jIChjb21wX3RlbXBsYXRlX2FyZ3MpOiBVc2UgY29tcHR5cGVzIHJhdGhlciB0aGFuIGp1c3QKCWNoZWNraW5nIGZvciBURU1QTEFURV9UWVBFX1BBUk0gZXF1aXZhbGVuY2UuCgoJKiB0eXBlY2suYyAoYnVpbGRfeF9mdW5jdGlvbl9jYWxsKTogQ2FsbCBjb21wbGV0ZV90eXBlIGJlZm9yZQoJY2hlY2tpbmcgVFlQRV9PVkVSTE9BRFNfQ0FMTF9FWFBSLgoKTW9uIE1hciAgNCAxODo0ODozMCAxOTk2ICBNYW5mcmVkIEhvbGxzdGVpbiAgIDxtYW5mcmVkQGx0cy5zZWwuYWxjYXRlbC5kZT4KCgkqIGcrKy5jIChtYWluKTogQ2hlY2sgYWxzbyBmb3IgbmV3IGRlZmluZSBBTFRfTElCTS4KCkZyaSBNYXIgIDEgMTM6MDk6MzMgMTk5NiAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogcHQuYyAoaW5zdGFudGlhdGVfY2xhc3NfdGVtcGxhdGUpOiBJZiB3ZSBkb24ndCBoYXZlIGEgcGF0dGVybgoJeWV0LCB0aGF0J3MgT0suCgkoY29lcmNlX3RlbXBsYXRlX3Bhcm1zKTogSWYgd2Ugc2VlIGEgbG9jYWwgY2xhc3MsIGJhaWwuCgoJKiBkZWNsLmMgKGdyb2tfcmVmZXJlbmNlX2luaXQpOiBNYWtlIHN1cmUgdGhlcmUncyBhIHR5cGUgYmVmb3JlCgljaGVja2luZyBpdHMgY29kZS4KCgkqIHB0LmMgKGRvX2Z1bmN0aW9uX2luc3RhbnRpYXRpb24pOiBBdm9pZCBjcmFzaGluZyBvbiBpbnZhbGlkIGRlY2xzLgoJKHB1c2hfdGVtcGxhdGVfZGVjbCk6IExpa2V3aXNlLgoKCSogcGFyc2UueSAobmFtZWRfY2xhc3NfaGVhZCk6IFNldAoJQ0xBU1NUWVBFX1RFTVBMQVRFX1NQRUNJQUxJWkFUSU9OIGhlcmUgaWYgd2UgaGF2ZSBiYXNldHlwZXMuCgoJKiBkZWNsLmMgKHhyZWZfdGFnKTogRGlhZ25vc2UgcmVkZWNsYXJhdGlvbiBvZiB0ZW1wbGF0ZQoJdHlwZS1wYXJhbWV0ZXIgbmFtZS4KCgkqIGVycm9yLmMgKGR1bXBfdHlwZSk6IEhhbmRsZSBhbm9ueW1vdXMgdGVtcGxhdGUgdHlwZSBwYXJtcy4KCgkqIHB0LmMgKGluc3RhbnRpYXRlX3RlbXBsYXRlKTogVXNlIFRZUEVfTUFJTl9ERUNMIGluc3RlYWQgb2YKCVRZUEVfU1RVQl9ERUNMLgoJKGNvZXJjZV90ZW1wbGF0ZV9wYXJtcyk6IExpa2V3aXNlLgoKVGh1IEZlYiAyOSAxNjoyNjowMSAxOTk2ICBNaWtlIFN0dW1wICA8bXJzQGN5Z251cy5jb20+CgoJKiBjbGFzcy5jIChpbnN0YW50aWF0ZV90eXBlLCBjYXNlIHtBUlJBWSxJTkRJUkVDVH1fUkVGLAoJY2FzZSBBRERSX0VYUFIpOiBEb24ndCBtb2RpZnkgcmhzIGlmIGEgc3ViaW5zdGFudGlhdGlvbiBmYWlscy4KClRodSBGZWIgMjkgMDg6MjA6MjUgMTk5NiAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogcHQuYyAoaW5zdGFudGlhdGVfdGVtcGxhdGUpOiBUYWtlIHRoZSBNQUlOX1ZBUklBTlQgb2YgdGhlIHR5cGUKCWJlZm9yZSB0cnlpbmcgdG8gZ2V0IGl0cyBTVFVCX0RFQ0wuCgkoY29lcmNlX3RlbXBsYXRlX3Bhcm1zKTogTGlrZXdpc2UuCgoJKiBwYXJzZS55ICh0ZW1wbGF0ZV90eXBlX3Bhcm0pOiBJZiB0aGV5IGRpZG4ndCB1c2UgJ2NsYXNzJywKCXByZXRlbmQgdGhleSBkaWQgYWZ0ZXIgZ2l2aW5nIGFuIGVycm9yLgoKCSogcHQuYyAoY29lcmNlX3RlbXBsYXRlX3Bhcm1zKTogRGlhZ25vc2UgdXNlIG9mIGxvY2FsIGNsYXNzLgoKCSogZGVjbC5jIChncm9rX3JlZmVyZW5jZV9pbml0KTogVXNlIGluc3RhbnRpYXRlX3R5cGUuCgoJKiBlcnJvci5jIChkdW1wX2V4cHIpOiBIYW5kbGUgVEVNUExBVEVfREVDTHMuCgoJKiBwYXJzZS55IChuYW1lZF9jbGFzc19oZWFkKTogRGlhZ25vc2UgbWlzbWF0Y2hpbmcgdHlwZXMgYW5kIHRhZ3MuCgoJKiBkZWNsLmMgKHB1c2hkZWNsKTogVHlwZSBkZWNscyBhbmQgY2xhc3MgdGVtcGxhdGVzIGNsYXNoIHdpdGgKCWFydGlmaWNpYWwgdHlwZSBkZWNscywgbm90IGhpZGUgdGhlbS4KCgkqIGRlY2wuYyAocmVkZWNsYXJhdGlvbl9lcnJvcl9tZXNzYWdlKTogRGlhZ25vc2UgcmVkZWZpbml0aW9uIG9mCgl0ZW1wbGF0ZXMgcHJvcGVybHkuCgkoZHVwbGljYXRlX2RlY2xzKTogRGlhZ25vc2UgZGlzYWxsb3dlZCBvdmVybG9hZHMgZm9yIHRlbXBsYXRlCglmdW5jdGlvbnMsIHRvby4KCgkqIGRlY2wuYyAoc3RhcnRfZGVjbCk6IENhbGwgY29tcGxldGVfdHlwZSBiZWZvcmUgY2hlY2tpbmcgZm9yIGEKCWRlc3RydWN0b3IuCgoJKiBwdC5jICh0c3Vic3QpOiBVc2UgdHN1YnN0X2V4cHIgb24gdGhlIGVsdHMgb2YgYSBWRUMuCgoJKiBkZWNsLmMgKHhyZWZfdGFnKTogQSBURU1QTEFURV9UWVBFX1BBUk0gaXMgYSBtYXRjaC4KCldlZCBGZWIgMjggMDk6Mjg6NDQgMTk5NiAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogZGVjbC5jIChncm9rX29wX3Byb3BlcnRpZXMpOiBEb24ndCBjaGVjayBmb3Igb3BlcmF0b3IrKyhpbnQpIGluCglhIHRlbXBsYXRlLgoKCSogdHJlZS5jIChwZXJtX21hbmlwKTogUmV0dXJuIGEgY29weSBvZiB2YXJpYWJsZSBhbmQgZnVuY3Rpb24KCWRlY2xzIHdpdGggZXh0ZXJuYWwgbGlua2FnZS4KCgkqIHRyZWUuZGVmOiBDaGFuZ2Ugc29tZSBvZiB0aGUgbWluIHRyZWUgY29kZXMgdG8gdHlwZSAiMSIuCgkqIHB0LmMgKHVzZXNfdGVtcGxhdGVfcGFybXMpOiBIYW5kbGUgJ2UncywgcmV0dXJuIDEgZm9yIExPT0tVUF9FWFBScy4KCSogbWV0aG9kLmMgKGJ1aWxkX292ZXJsb2FkX2ludCk6IEVtaXQgc29tZXRoaW5nIGFyYml0cmFyeSBmb3IKCWFueXRoaW5nIGJ1dCBhbiBJTlRFR0VSX0NTVCBpZiB3ZSdyZSBpbiBhIHRlbXBsYXRlLgoKCSogZGVjbC5jIChjcF9maW5pc2hfZGVjbCk6IENhbGwgY29tcGxldGVfdHlwZSBiZWZvcmUgZGVjaWRpbmcKCXdoZXRoZXIgb3Igbm90IHRvIGxheSBvdXQgdGhlIGRlY2wuCgoJKiBsZXguYyAoZG9faWRlbnRpZmllcik6IENoZWNrIGZvciBERUNMX0lOSVRJQUwgYmVmb3JlIHVzaW5nIGl0LgoKVHVlIEZlYiAyNyAxNjozNTozMiAxOTk2ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiB0eXBlY2syLmMgKGJ1aWxkX3hfYXJyb3cpOiBDYWxsIGNvbXBsZXRlX3R5cGUuCgoJKiBwdC5jIChhZGRfcGVuZGluZ190ZW1wbGF0ZSk6IEJyb2tlbiBvdXQuCgkobG9va3VwX3RlbXBsYXRlX2NsYXNzKTogSWYgLWZleHRlcm5hbC10ZW1wbGF0ZXMsIGNhbGwgaXQgZm9yIGFsbAoJdGhlIG1ldGhvZHMgb2YgaW1wbGVtZW50ZWQgdHlwZXMuCgkoaW5zdGFudGlhdGVfY2xhc3NfdGVtcGxhdGUpOiBJbnN0ZWFkIG9mIGluc3RhbnRpYXRpbmcgdGhlbSBoZXJlLgoJKGluc3RhbnRpYXRlX2RlY2wpOiBIYW5kbGUgLWZleHRlcm5hbC10ZW1wbGF0ZXMgZWFybGllci4KClR1ZSBGZWIgMjcgMTU6NTE6MzIgMTk5NiAgQnJlbmRhbiBLZWhvZSAgPGJyZW5kYW5AbGlzYS5jeWdudXMuY29tPgoKCSogc2VhcmNoLmMsIGxleC5jLCBkZWNsLmMsIGNsYXNzLmMsIGNwLXRyZWUuaDogRG9uJ3Qgd3JhcCB0aGUKCW1lbW9pemVkIGxvb2t1cCBzdHVmZiBpbnNpZGUgR0FUSEVSX1NUQVRJU1RJQ1MuCgpUdWUgRmViIDI3IDEwOjM4OjA4IDE5OTYgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIGRlY2wuYyAoc3RhcnRfZGVjbCk6IENvbXBsYWluIGFib3V0IGFycmF5IG9mIGluY29tcGxldGUgdHlwZQoJaGVyZS4KCShncm9rZGVjbGFyYXRvcik6IE5vdCBoZXJlLgoKCSogcGFyc2UueSAodGVtcGxhdGVfcGFybSk6IEV4cGFuZCBmdWxsX3Bhcm0gaW5saW5lIHNvIHdlIGNhbiBzZXQKCXRoZSBydWxlJ3MgcHJlY2VkZW5jZS4KCgkqIHB0LmMgKHRzdWJzdF9leHByKTogSWYgd2UncmUgaW4gYSB0ZW1wbGF0ZSwganVzdCBkbyB0c3Vic3RfY29weS4KCSh0c3Vic3QpOiB0c3Vic3RfZXhwciB0aGUgREVDTF9JTklUSUFMIG9mIEZJRUxEX0RFQ0xzLgoJKiBkZWNsMi5jIChncm9rYml0ZmllbGQpOiBEb24ndCBjaGVjayBmb3IgaW50ZWdlciBjb25zdGFudCBoZXJlLgoJKiBjbGFzcy5jIChmaW5pc2hfc3RydWN0XzEpOiBDaGVjayBoZXJlLgoKCSogZGVjbC5jIChkZWZpbmVfbGFiZWwpOiBNYWtlIHRoZSBtaW4gZGVjbCBnbyBvbiBwZXJtYW5lbnRfb2JzdGFjay4KCgkqIHB0LmMgKHVuaWZ5KTogRG9uJ3QgaGFuZGxlIENPTlNUX0RFQ0xzLgoJKHVzZXNfdGVtcGxhdGVfcGFybXMpOiBEb24ndCBjaGVjayBERUNMX0lOSVRJQUwgb24gYSBDT05TVF9ERUNMLgoJKHRzdWJzdF9jb3B5KTogTGlrZXdpc2UuCgoJKiBsZXguYyAoZG9faWRlbnRpZmllcik6IERvIHB1bGwgdGhlIERFQ0xfSU5JVElBTCBvdXQgb2YgYQoJQ09OU1RfREVDTCBmb3IgYSB0ZW1wbGF0ZSBwYXJtLgoKTW9uIEZlYiAyNiAxMjo0ODoxOCAxOTk2ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBkZWNsLmMgKGdyb2tkZWNsYXJhdG9yKTogQ29tcGxhaW4gYWJvdXQgYXJyYXkgb2YgaW5jb21wbGV0ZSB0eXBlCgloZXJlLgoJKHN0YXJ0X2RlY2xfMSk6IE5vdCBoZXJlLgoKCSogcHQuYyAodHN1YnN0KTogSGFuZGxlIHBvaW50ZXItdG8tZnVuY3Rpb24gZGVjbGFyYXRvcnMuCgoJKiBtZXRob2QuYyAoaGFja19pZGVudGlmaWVyKTogSWYgcGVkYW50aWMsIGRpYWdub3NlIGxvY2FsIGNsYXNzCgltZXRob2RzIHRoYXQgcmVxdWlyZSBhIHN0YXRpYyBjaGFpbi4KCgkqIGRlY2wuYyAoZ3Jva19vcF9wcm9wZXJ0aWVzKTogTm8gbG9uZ2VyIHN0YXRpYy4KCSogY3AtdHJlZS5oOiBEZWNsYXJlIGl0LgoJKiBwdC5jICh0c3Vic3QpOiBDYWxsIGl0IGZvciBvcGVyYXRvcnMuCglVc2UgdHN1YnN0X2NvcHkgZm9yIFRSRUVfVkVDcy4KCgkqIHBhcnNlLnkgKHRlbXBsYXRlX2FyZyk6IFRoZSBleHByIGhhcyBwcmVjZWRlbmNlIGxpa2UgJz4nLgoKRnJpIEZlYiAyMyAxNDo1MTo1MiAxOTk2ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBwdC5jIChjb2VyY2VfdGVtcGxhdGVfcGFybXMpOiBEb24ndCBjb2VyY2UgYW4gZXhwcmVzc2lvbiB1c2luZwoJdGVtcGxhdGUgcGFybXMuCgkodXNlc190ZW1wbGF0ZV9wYXJtcyk6IEFsc28gY2hlY2sgREVDTF9JTklUSUFMIGluIENPTlNUX0RFQ0xzLgoJKHRzdWJzdCk6IERvbid0IHVzZSBidWlsZF9pbmRleF8yX3R5cGUgaWYgdGhlIG1heF92YWx1ZSB1c2VzIHRlbXBsYXRlCglwYXJtcy4KCSogbWV0aG9kLmMgKGJ1aWxkX292ZXJsb2FkX2ludCk6IEVtaXQgc29tZXRoaW5nIGFyYml0cmFyeSBmb3IgYW4KCWV4cHJlc3Npb24gdXNpbmcgdGVtcGxhdGUgcGFybXMuCgoJKiBwYXJzZS55ICh0ZW1wbGF0ZV9jbG9zZV9icmFja2V0KTogTmV3IG5vbi10ZXJtaW5hbCB0byBjYXRjaCB1c2UKCW9mICc+PicgaW5zdGVhZCBvZiAnPiA+JyBpbiB0ZW1wbGF0ZSBjbGFzcyBuYW1lcy4KCSh0ZW1wbGF0ZV90eXBlKTogVXNlIGl0LgoJKiBNYWtlZmlsZS5pbiAoQ09ORkxJQ1RTKTogQ2F1c2VzIG9uZSBtb3JlIHIvciBjb25mbGljdC4KCgkqIHRyZWUuZGVmOiBBZGQgQ0FTVF9FWFBSLgoJKiB0eXBlY2syLmMgKGJ1aWxkX2Z1bmN0aW9uYWxfY2FzdCk6IFVzZSBDQVNUX0VYUFIgaW5zdGVhZCBvZgoJQ09OVkVSVF9FWFBSIGZvciBtaW5pbWFsX3BhcnNlX21vZGUuCgkqIHR5cGVjay5jIChidWlsZF9jX2Nhc3QpOiBMaWtld2lzZS4KCSogcHQuYyAodHN1YnN0X2NvcHkpOiBMaWtld2lzZS4KCSogZGVjbDIuYyAoYnVpbGRfZXhwcl9mcm9tX3RyZWUpOiBMaWtld2lzZS4KCSogZXJyb3IuYyAoZHVtcF9leHByKTogTGlrZXdpc2UuCgpGcmkgRmViIDIzIDEwOjM2OjQ2IDE5OTYgIEJyZW5kYW4gS2Vob2UgIDxicmVuZGFuQGxpc2EuY3lnbnVzLmNvbT4KCgkqIGV4Y2VwdC5jIChTZXRUZXJtaW5hdGUsIFNldFVuZXhwZWN0ZWQpOiBQdXQgYmFjayBnbG9iYWwgdmFycy4KCShpbml0X2V4Y2VwdGlvbl9wcm9jZXNzaW5nKTogUHV0IGJhY2sgZGVjbC9pbml0IG9mCglzZXRfdW5leHBlY3RlZF9mbmRlY2wgYW5kIHNldF90ZXJtaW5hdGVfZm5kZWNsLCBuZWVkZWQgdG8gZ2V0IHRoZQoJZm5zIGZyb20gbGlic3RkYysrLgoKCSogZGVjbC5jIChzdHJ1Y3QgYmluZGluZ19sZXZlbCk6IERlbGV0ZSBBQ0NFUFRfQU5ZIGJpdGZpZWxkLgoJKGRlY2xhcmVfdW5pbnN0YW50aWF0ZWRfdHlwZV9sZXZlbCwgdW5pbnN0YW50aWF0ZWRfdHlwZV9sZXZlbF9wKToKCURlbGV0ZSB1bnVzZWQgZm5zLgoJKiBjcC10cmVlLmggKGRlY2xhcmVfdW5pbnN0YW50aWF0ZWRfdHlwZV9sZXZlbCwKCXVuaW5zdGFudGlhdGVkX3R5cGVfbGV2ZWxfcCk6IERlbGV0ZSBwcm90b3R5cGVzLgoKVGh1IEZlYiAyMiAxOTozNjoxNSAxOTk2ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBwdC5jICh0c3Vic3RfZXhwcik6IEFkZCBkZWZhdWx0IHJldHVybi4KClRodSBGZWIgMjIgMTY6NDc6MjQgMTk5NiAgQnJlbmRhbiBLZWhvZSAgPGJyZW5kYW5AbGlzYS5jeWdudXMuY29tPgoKCSogZXJyb3IuYyAoZm5kZWNsX2FzX3N0cmluZyk6IERlbGV0ZSB1bnVzZWQgYXJnIENOQU1FLgoJKiBzaWcuYyAoYnVpbGRfc2lnbmF0dXJlX3RhYmxlX2NvbnN0cnVjdG9yLAoJYnVpbGRfc2lnbmF0dXJlX21ldGhvZF9jYWxsKTogRml4IGNhbGxzLgoKCSogY2xhc3MuYyAodGhlX251bGxfdnRhYmxlX2VudHJ5KTogRGVsZXRlIHZhciBkZWZpbml0aW9uLgoJKGluaXRfY2xhc3NfcHJvY2Vzc2luZyk6IERlbGV0ZSB0cmVlIHRoZV9udWxsX3Z0YWJsZV9lbnRyeSBpbml0LgoJKiBkZWNsLmMgKG5vX3ByaW50X3tmdW5jdGlvbnMsIGJ1aWx0aW5zfSk6IERlY2xhcmUgYXMgc3RhdGljLgoJKF9fdHBfZGVzY190eXBlX25vZGUpOiAjaWYgMCB2YXIgZGVmaW5pdGlvbi4KCShpbml0X3R5cGVfZGVzYyk6ICNpZiAwIGluaXQgb2YgX190cF9kZXNjX3R5cGVfbm9kZS4KCSh2Yl9vZmZfaWRlbnRpZmllcik6IE1vdmUgdmFyIGRlY2wgaW50byBpbml0X2RlY2xfcHJvY2Vzc2luZy4KCShjdXJyZW50X2Z1bmN0aW9uX2Fzc2lnbnNfdGhpcyk6IERlY2xhcmUgYXMgc3RhdGljLgoJKGludF9mdHlwZV9wdHJfcHRyX2ludCwgdm9pZF9mdHlwZV9wdHJfaW50X2ludCk6IERlbGV0ZSB2YXIgZGVjbHMuCgkoaW5pdF9kZWNsX3Byb2Nlc3NpbmcpOiBEZWxldGUgaW5pdCBvZiB2b2lkX2Z0eXBlX3B0cl9wdHJfaW50LgoJTW92ZSBkZWNscyBvZiBzdHJpbmdfZnR5cGVfcHRyX3B0ciBhbmQgaW50X2Z0eXBlX3N0cmluZ19zdHJpbmcgaGVyZS4KCSogZGVjbDIuYyAoZGVsZXRlX3Nhbml0eSk6IERlbGV0ZSBkZWZpbml0aW9uL21vZCBvZiBsb2NhbCB2YXIgRUxUX1NJWkUuCgkqIGluaXQuYyAoQklfaGVhZGVyX3R5cGUsIEJJX2hlYWRlcl9zaXplKTogRGVjbGFyZSBhcyBzdGF0aWMuCgkqIHB0LmMgKHRlbXBsYXRlX2NsYXNzZXMpOiBEZWxldGUgdW51c2VkIHZhci4KCShhZGRfcGVuZGluZ190ZW1wbGF0ZSk6IERlbGV0ZSBkZWNsIGZvciBub24tZXhpc3RlbnQgZm4uCgkobG9va3VwX3RlbXBsYXRlX2NsYXNzKTogRGVsZXRlIHZhcnMgQ09ERSBhbmQgVEFHX0NPREUuCgkoaW5zdGFudGlhdGVfdGVtcGxhdGUpOiBEZWxldGUgdW51c2VkIHZhciBUQVJHUy4KCSogY3AtdHJlZS5oICh2Yl9vZmZfaWRlbnRpZmllciwgY3VycmVudF9mdW5jdGlvbl9hc3NpZ25zX3RoaXMpOgoJRGVsZXRlIGRlY2xzLgoJKF9fdHBfZGVzY190eXBlX25vZGUpOiAjaWYgMCB2YXIgZGVjbC4KCShmbmRlY2xfYXNfc3RyaW5nKTogRml4IHByb3RvdHlwZS4KClRodSBGZWIgMjIgMTU6NTY6MTkgMTk5NiAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogdHJlZS5kZWY6IEFkZCBHT1RPX1NUTVQuCgkqIHB0LmMgKHRzdWJzdF9leHByKTogU3VwcG9ydCBnb3RvIGFuZCBsYWJlbHMuCgkqIGRlY2wuYyAoZGVmaW5lX2xhYmVsKTogU3VwcG9ydCBtaW5pbWFsIHBhcnNpbmcuCgkqIHBhcnNlLnkgKHNpbXBsZV9zdG10KTogTGlrZXdpc2UuCgpUaHUgRmViIDIyIDE1OjMwOjEyIDE5OTYgIEJyZW5kYW4gS2Vob2UgIDxicmVuZGFuQGxpc2EuY3lnbnVzLmNvbT4KCgkqIHhyZWYuYyAoR05VX3hyZWZfbWVtYmVyKTogT25seSBkZWZpbmUvc2V0IHZhciBJIGlmCglYUkVGX1NIT1JUX01FTUJFUl9OQU1FUyBpcyBkZWZpbmVkLCB0byBtYXRjaCB3aGVuIGl0J3MgYWN0dWFsbHkKCXVzZWQuCgkoR05VX3hyZWZfZW5kX3Njb3BlKTogRGVsZXRlIHVudXNlZCBmaWZ0aCBhcmcgVFJOUy4KCShHTlVfeHJlZl9lbmQpOiBGaXggY2FsbC4KCSogZGVjbC5jIChwb3BsZXZlbCwgcG9wbGV2ZWxfY2xhc3MsIGZpbmlzaF9tZXRob2QpOiBGaXggY2FsbHMuCgkqIGNwLXRyZWUuaCAoR05VX3hyZWZfZW5kX3Njb3BlKTogRml4IHByb3RvdHlwZS4KCgkqIHRyZWUuYyAoYnVpbGRfZXhjZXB0aW9uX3ZhcmlhbnQpOiBEZWxldGUgdW51c2VkIHZhcnMgSSwgQSwgVCwKCVQyLCBhbmQgQ05BTUUuCgkobGF5b3V0X3ZiYXNldHlwZXMpOiBEZWxldGUgdW51c2VkIHZhciBOT05WSVJUVUFMX1ZBUl9TSVpFLgoJKG1hcGNhcik6IERlbGV0ZSB1bnVzZWQgdmFyIENPREUuCgkoYnVpbGRfY3BsdXNfbmV3KTogRGVsZXRlIHVudXNlZCBhcmcgV0lUSF9DTEVBTlVQX1AuCgkoYnJlYWtfb3V0X2NsZWFudXBzKTogRml4IGNhbGwuCgkoYm90X21hbmlwKTogTGlrZXdpc2UuCgkqIGNhbGwuYyAoYnVpbGRfbWV0aG9kX2NhbGwpOiBMaWtld2lzZS4KCSogY3Z0LmMgKGJ1aWxkX3VwX3JlZmVyZW5jZSwgY29udmVydF90b19yZWZlcmVuY2UsIGNwX2NvbnZlcnQpOgoJTGlrZXdpc2UuCgkqIHR5cGVjay5jICh1bmFyeV9jb21wbGV4X2x2YWx1ZSwgYnVpbGRfbW9kaWZ5X2V4cHIsCgljb252ZXJ0X2Zvcl9pbml0aWFsaXphdGlvbik6IExpa2V3aXNlLgoJKiB0eXBlY2syLmMgKGJ1aWxkX2Z1bmN0aW9uYWxfY2FzdCk6IExpa2V3aXNlLgoJKiBjcC10cmVlLmggKGJ1aWxkX2NwbHVzX25ldyk6IEZpeCBwcm90b3R5cGUuCgoJKiByZXBvLmMgKG9wZW5fcmVwb19maWxlKTogRGVsZXRlIHVudXNlZCB2YXIgUS4KCShyZXBvX2NvbXBpbGVfZmxhZ3MsIHJlcG9fdGVtcGxhdGVfZGVjbGFyZWQsCglyZXBvX3RlbXBsYXRlX2RlZmluZWQsIHJlcG9fY2xhc3NfZGVmaW5lZCwgcmVwb19pbmxpbmVfdXNlZCwKCXJlcG9fdnRhYmxlX3VzZWQsIHJlcG9fdGluZm9fdXNlZCk6ICNpZiAwIHVudXNlZCBmbnMuCgkocmVwb19nZXRfaWQsIHJlcG9fdnRhYmxlX3VzZWQpOiBEZWNsYXJlIGFzIHN0YXRpYy4KCSogY3AtdHJlZS5oIChtYXJrX3tkZWNsLGNsYXNzfV9pbnN0YW50aWF0ZWQsIGZpbmlzaF9yZXBvKTogQWRkCglwcm90b3R5cGVzLgoKVGh1IEZlYiAyMiAxNDo1MzozNSAxOTk2ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBwYXJzZS55IChwZW5kaW5nX2lubGluZXMpOiBBZGQgZnVuY3Rpb25fdHJ5X2Jsb2NrIGNhc2UuCgoJKiBwdC5jICh1bmlmeSk6IEZpeCBmb3IgdGVtcGxhdGUgY29uc3QgcGFybXMuCgpUaHUgRmViIDIyIDEzOjI0OjE1IDE5OTYgIEJyZW5kYW4gS2Vob2UgIDxicmVuZGFuQGxpc2EuY3lnbnVzLmNvbT4KCgkqIGxleC5jIChleHRyYWN0X2ludGVyZmFjZV9pbmZvKTogRGVsZXRlIGZvcndhcmQgZGVjbC4KCShkZWZhdWx0X2NvcHlfY29uc3RydWN0b3JfYm9keSwgZGVmYXVsdF9hc3NpZ25fcmVmX2JvZHkpOiBEZWxldGUKCWRlY2xzIGZvciBub24tZXhpc3RlbnQgZnVuY3Rpb25zLgoJKHN5bnRoX2ZpcnN0b2JqLCBpbmxpbmVfdGV4dF9maXJzdG9ianMpOiBEZWxldGUgdW51c2VkIHZhcnMuCgkoaW5pdF9sZXgpOiBEZWxldGUgc2V0dGluZyB0aGVtLgoJKGNvbnNfdXBfZGVmYXVsdF9mdW5jdGlvbik6IERlbGV0ZSB1bnVzZWQgdmFycyBGVU5DX0JVRiwKCUZVTkNfTEVOLCBhbmQgQ09NUExFWC4gIERlbGV0ZSBjb2RlIHNldHRpbmcgQ09NUExFWC4gIERlbGV0ZSBvbGQKCSNpZiAwJ2Qgc3ludGggY29kZS4KCSh0b3BsZXZlbCwgZXhwcmVzc2lvbl9vYnN0YWNrKTogRGVsZXRlIHVudXNlZCBleHRlcm4gZGVjbHMuCgkodHJlZV9ub2RlX2tpbmQpOiBEZWxldGUgdW51c2VkIGVudW0uCgkodHJlZV9ub2RlX2NvdW50cywgdHJlZV9ub2RlX3NpemVzKTogV3JhcCB3aXRoICNpZmRlZgoJR0FUSEVSX1NUQVRJU1RJQ1MuCgkodHJlZV9ub2RlX2tpbmRfbmFtZXMpOiBEZWxldGUgdW51c2VkIGV4dGVybiBkZWNsLgoJKHN5bnRoX29ic3RhY2spOiBEZWxldGUgdW51c2VkIHZhci4KCShpbml0X2xleCk6IERvbid0IHNldCBpdC4KCShpbml0X3BhcnNlKTogQWRkIGRlY2wgYmVmb3JlIHVzZS4KCShyZWR1Y2VfY291bnQpOiBPbmx5IGRlZmluZSAjaWZkZWYgR0FUSEVSX1NUQVRJU1RJQ1MgJiYgUkVEVUNFX0xFTkdUSC4KCShjdXJyZW50X3VuaXRfe25hbWUsIGxhbmd1YWdlfSk6IERlbGV0ZSB1bnVzZWQgdmFycy4KCShjaGVja19uZXdsaW5lKTogRG9uJ3QgYm90aGVyIHNldHRpbmcgdGhlbSwganVzdCBhY2NlcHQgdGhlICNwcmFnbWEuCgkqIGNwLXRyZWUuaCAoaW5pdF9yZXBvLCBwZWVrX3l5bGV4KTogQWRkIHByb3RvdHlwZXMuCgkoY3VycmVudF91bml0X3tuYW1lLCBsYW5ndWFnZX0pOiBEZWxldGUgZGVjbHMuCgoJKiBzZWFyY2guYzogV3JhcCBhbGwgb2YgdGhlIG1lbW9pemVkIGZ1bmN0aW9ucywgbWFjcm9zLCBhbmQKCXZhcmlhYmxlcyBpbnNpZGUgI2lmZGVmIEdBVEhFUl9TVEFUSVNUSUNTLgoJKGxvb2t1cF9maWVsZCwgbG9va3VwX2ZuZmllbGRzKTogTGlrZXdpc2UuCgkoaW5pdF9zZWFyY2hfcHJvY2Vzc2luZyk6IExpa2V3aXNlLgoJKHJlaW5pdF9zZWFyY2hfc3RhdGlzdGljcyk6IFdyYXAgd2hvbGUgZnVuY3Rpb24uCgkqIGxleC5jIChyZWluaXRfbGFuZ19zcGVjaWZpYyk6IFdyYXAgY2FsbCB0byByZWluaXRfc2VhcmNoX3N0YXRpc3RpY3MuCgoJKiBkZWNsLmMgKGZpbmlzaF9mdW5jdGlvbik6IE9ubHkgY2FsbCBwb3BfbWVtb2l6ZWRfY29udGV4dCBpZgoJR0FUSEVSX1NUQVRJU1RJQ1MgaXMgZGVmaW5lZC4KCShzdGFydF9mdW5jdGlvbik6IExpa2V3aXNlIGZvciBwdXNoX21lbW9pemVkX2NvbnRleHQuCgkqIGNsYXNzLmMgKHB1c2hjbGFzcywgcG9wY2xhc3MpOiBMaWtld2lzZS4KCgkqIGNwLXRyZWUuaCAoQ0xBU1NUWVBFX01UQUJMRV9FTlRSWSk6IE1vdmUgZGVmaW5pdGlvbiBmcm9tIGhlcmUuLi4KCSogc2VhcmNoLmMgKENMQVNTVFlQRV9NVEFCTEVfRU5UUlkpOiAuLi4gdG8gaGVyZS4KCgkqIGN2dC5jIChjcF9jb252ZXJ0KTogRGVsZXRlIHVudXNlZCBsb2NhbCB2YXIgRk9STS4KCSogY3AtdHJlZS5oIChjYW5fY29udmVydCwgY2FuX2NvbnZlcnRfYXJnLCByZWFsX2x2YWx1ZV9wKTogQWRkCglwcm90b3R5cGVzLgoKVGh1IEZlYiAyMiAxMzoxOTo0NCAxOTk2ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBwdC5jIChkb19wb3BsZXZlbCk6IE9vcHM7IHJlYWxseSByZXR1cm4gd2hhdCB3ZSBnZXQgZnJvbQoJcG9wbGV2ZWwgdGhpcyB0aW1lLgoKVGh1IEZlYiAyMiAxMTo0MTo0NCAxOTk2ICBCcmVuZGFuIEtlaG9lICA8YnJlbmRhbkBsaXNhLmN5Z251cy5jb20+CgoJKiBjcC10cmVlLmggKGlzX2FnZ3JfdHlwZSk6IEFkZCBwcm90b3R5cGUuCgoJKiBjcC10cmVlLmggKHtwdXNoLHBvcH1fY3BfZnVuY3Rpb25fY29udGV4dCk6IEFkZCBkZWNscy4KCSogbWV0aG9kLmMgKHtwdXNoLHBvcH1fY3BfZnVuY3Rpb25fY29udGV4dCk6IERlbGV0ZSBkZWNscy4KCSogZXhjZXB0LmMgKHN0YXJ0X2VoX3Vud2luZGVyLCBlbmRfZWhfdW53aW5kZXIpOiBEZWNsYXJlIGFzIHZvaWQuCgkoU2V0VW5leHBlY3RlZCwgU2V0VGVybWluYXRlKTogRGVsZXRlIHVudXNlZCB2YXJzLgoJKGluaXRfZXhjZXB0aW9uX3Byb2Nlc3NpbmcpOiBEb24ndCBzZXQgU2V0VW5leHBlY3RlZCBvcgoJU2V0VGVybWluYXRlLiAgRG9uJ3Qgc2V0IFNFVF9VTkVYUEVDVEVEX0ZOREVDTCBvciBTRVRfVEVSTUlOQVRFX0ZOREVDTC4KCShvdXRwdXRfZXhjZXB0aW9uX3RhYmxlX2VudHJ5KTogRGVsZXRlIHVudXNlZCBhcnJheSBMQUJFTC4KCShleHBhbmRfaW50ZXJuYWxfdGhyb3cpOiBEZWxldGUgdW51c2VkIHZhciBQQVJBTVMuCgkoZXhwYW5kX3N0YXJ0X2NhdGNoX2Jsb2NrKTogRGVsZXRlIHVudXNlZCB2YXIgQ0xFQU5VUC4KCShlbWl0X2V4Y2VwdGlvbl90YWJsZSk6IERlbGV0ZSB1bnVzZWQgdmFyIEVIX05PREVfREVDTC4KCShleHBhbmRfYnVpbHRpbl90aHJvdyk6IERlbGV0ZSB1bnVzZWQgdmFycyBVTldJTkRfQU5EX1RIUk9XIGFuZAoJR09UT19VTldJTkRfQU5EX1RIUk9XLiAgRG9uJ3Qgc2V0IHRoZW0uCgkoZW5kX2VoX3Vud2luZGVyKTogQWRkIHRvcCBkZWNsLgoJKHBvcF9ydGxfZnJvbV9wZXJtKTogRGVsZXRlIHVudXNlZCBkZWNsIG9mIFBFUk1BTkVOVF9PQlNUQUNLLgoJKGV4Y2VwdGlvbl9zZWN0aW9uLCBwdXNoX3J0bF9wZXJtLCBkb19mdW5jdGlvbl9jYWxsLAoJbGFuZ19pbnRlcmltX2VoLCBwdXNoX2VoX2NsZWFudXAsIGVoX291dGVyX2NvbnRleHQsCglleHBhbmRfZW5kX2VoX3NwZWMsIGVuZF9laF91bndpbmRlcik6IERlY2xhcmUgYXMgc3RhdGljLgoJKHNhdmVkX3BjLCBzYXZlZF90aHJvd190eXBlLCBzYXZlZF90aHJvd192YWx1ZSwgc2F2ZWRfY2xlYW51cCwKCXRocm93X3VzZWQpOiBMaWtld2lzZS4KCSogY3AtdHJlZS5oIChleHBhbmRfZW5kX2VoX3NwZWMpOiBEZWxldGUgcHJvdG90eXBlLgoKCSogc2VhcmNoLmMgKGRmc19tYXJrLCBkZnNfbWFya192dGFibGVfcGF0aCwKCWRmc191bm1hcmtfdnRhYmxlX3BhdGgsIGRmc19tYXJrX25ld192dGFibGUsCglkZnNfdW5tYXJrX25ld192dGFibGUsIGRmc19jbGVhcl9zZWFyY2hfc2xvdCwKCWRmc19zZWFyY2hfc2xvdF9ub25lbXB0eV9wLCBiZnNfbWFya2VkcCwgYmZzX3VubWFya2VkcCwKCWJmc19tYXJrZWRfdnRhYmxlX3BhdGhwLCBiZnNfdW5tYXJrZWRfdnRhYmxlX3BhdGhwLAoJYmZzX21hcmtlZF9uZXdfdnRhYmxlcCwgYmZzX3VubWFya2VkX25ld192dGFibGVwKTogI2lmIDAgdW51c2VkCglmdW5jdGlvbnMuCgkobl9maWVsZHNfc2VhcmNoZWQsIG5fY2FsbHNfbG9va3VwX2ZpZWxkLCBuX2NhbGxzX2xvb2t1cF9maWVsZF8xLAoJbl9jYWxsc19sb29rdXBfZm5maWVsZHMsIG5fY2FsbHNfbG9va3VwX2ZuZmllbGRzXzEsCgluX2NhbGxzX2dldF9iYXNlX3R5cGUsIG5fb3V0ZXJfZmllbGRzX3NlYXJjaGVkLCBuX2NvbnRleHRzX3NhdmVkKToKCU9ubHkgZGVmaW5lICNpZmRlZiBHQVRIRVJfU1RBVElTVElDUy4KCShyZWluaXRfc2VhcmNoX3N0YXRpc3RpY3MpOiBPbmx5IGluaXQgc29tZSB2YXJzIGlmIEdBVEhFUl9TVEFUSVNUSUNTCglpcyBkZWZpbmVkLgoJKHZiYXNlX2RlY2wpOiBEZWxldGUgdmFyIGRlZmluaXRpb24uCgkoaW5pdF9zZWFyY2gpOiBEZWxldGUgb2xkIGRlY2wuCgkoaW5pdF92YmFzZV9wb2ludGVycyk6IERlbGV0ZSBidWlsZGluZyBvZiBWQkFTRV9ERUNMLCBzaW5jZSBpdCdzCgluZXZlciBhY3R1YWxseSB1c2VkLgoJKGV4cGFuZF9pbmRpcmVjdF92dGJsc19pbml0KTogRGVsZXRlIGluaXQgb2YgVkJBU0VfREVDTC4KCShnZXRfYmFzZV9kaXN0YW5jZV9yZWN1cnNpdmUpOiBEZWxldGUgdW51c2VkIGZvdXJ0aCBhcmcKCUJBU0VUWVBFX1BBVEguICBGaXggY2FsbCAuCgkoZ2V0X2Jhc2VfZGlzdGFuY2UpOiBGaXggY2FsbC4KCShwdXNoX2NsYXNzX2RlY2xzKTogRGVsZXRlIHVudXNlZCB2YXIgSUQuCgkobWFrZV9tZW1vaXplZF90YWJsZV9lbnRyeSk6IERlY2xhcmUgYXMgc3RhdGljLgoJKGJyZWFkdGhfZmlyc3Rfc2VhcmNoKTogRGVjbGFyZSBhcyBzdGF0aWMuCgkodHJlZV9oYXNfYW55X2Rlc3RydWN0b3JfcCk6IERlY2xhcmUgYXMgc3RhdGljLgoJKHBvcF9jbGFzc19kZWNscyk6IERlbGV0ZSB1bnVzZWQgYXJnIHBvcF9jbGFzc19kZWNscy4KCSogY2xhc3MuYyAocG9wY2xhc3MpOiBGaXggY2FsbCB0byBwb3BfY2xhc3NfZGVjbHMuCgkqIGNwLXRyZWUuaCAobWFrZV9tZW1vaXplZF90YWJsZV9lbnRyeSwgYnJlYWR0aF9maXJzdF9zZWFyY2gsCgl0cmVlX2hhc19hbnlfZGVzdHJ1Y3Rvcl9wKTogRGVsZXRlIHByb3RvdHlwZXMuCgoJKiBydHRpLmMgKGJ1aWxkX3B0bWZfZGVzYyk6IERlbGV0ZSB1bnVzZWQgYXJnIFRZUEUuCgkoYnVpbGRfdF9kZXNjKTogRml4IGNhbGwuICBEZWxldGUgdW51c2VkIHZhcnMgRUxFTVMgYW5kIFRULgoJKGJ1aWxkX2R5bmFtaWNfY2FzdCk6IERlbGV0ZSB1bnVzZWQgbG9jYWwgdmFycyBUTVAxIGFuZCBSRVRWQUwuCgkoYnVpbGRfdXNlcl9kZXNjKTogRGVsZXRlIHVudXNlZCB2YXIgVC4KCShidWlsZF9jbGFzc19kZXNjKTogRGVsZXRlIHVudXNlZCB2YXJzIFQgYW5kIE9GRi4KCShidWlsZF90X2Rlc2MpOiBEZWxldGUgdW51c2VkIHZhciBOQU1FX1NUUklORy4KCShidWlsZF9oZWFkb2YpOiBNYWtlIHN0YXRpYy4KCShnZXRfYmFkX2Nhc3Rfbm9kZSk6IExpa2V3aXNlLgoJKGdldF9kZWZfdG9fZm9sbG93KTogTGlrZXdpc2UuCgkqIGNwLXRyZWUuaCAoaW5pdF90eXBlX2Rlc2MpOiBBZGQgcHJvdG90eXBlLgoJKGJ1aWxkX2hlYWRvZik6IFJlbW92ZSBwcm90b3R5cGUuCgpUaHUgRmViIDIyIDAwOjU0OjIyIDE5OTYgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIHB0LmMgKHRzdWJzdCk6IE9ubHkgbG9vayBmb3IgbWF0Y2hpbmcgZGVjbHMgYXQgZmlsZSBzY29wZSBmb3IKCW5vbi1tZW1iZXIgZnVuY3Rpb25zLgoKCSogY2FsbC5jIChidWlsZF9zY29wZWRfbWV0aG9kX2NhbGwpOiBIYW5kbGUgc2NvcGVkIGRlc3RydWN0b3IKCWNhbGxzIGluIHRlbXBsYXRlcy4KCgkqIGRlY2wuYyAoKl90b3BfbGV2ZWwpOiBBbHNvIHNhdmUgcHJldmlvdXNfY2xhc3NfdmFsdWVzLgoKCSogcHQuYyAodHN1YnN0X2V4cHIpOiBTdXBwb3J0IGRvIHt9IHdoaWxlIGxvb3BzLgoJKiBwYXJzZS55IChzaW1wbGVfc3RtdCk6IExpa2V3aXNlLgoJKiB0cmVlLmRlZjogTGlrZXdpc2UuCgoJKiBtZXRob2QuYyAoYnVpbGRfb3ZlcmxvYWRfaWRlbnRpZmllcik6IEZvciBhIGNsYXNzIG5lc3RlZCBpbiBhCgl0ZW1wbGF0ZSBjbGFzcywgZG9uJ3QgbWFuZ2xlIGluIHRoZSB0ZW1wbGF0ZSBwYXJtcyBmcm9tIG91cgoJY29udGV4dC4KCgkqIGxleC5jLCBjcC10cmVlLmg6IFJlbW92ZSBzdXBwb3J0IGZvciB0ZW1wbGF0ZSBpbnN0YW50aWF0aW9ucyBpbgoJdGhlIHBlbmRpbmdfaW5saW5lcyBjb2RlLgoJKiBwdC5jOiBSZW1vdmUgZGVhZCBmdW5jdGlvbnMgYW5kIHVudXNlZCBhcmd1bWVudHMuCgkodXNlc190ZW1wbGF0ZV9wYXJtcyk6IFRZUEVOQU1FX1RZUEVzIGFsd2F5cyB1c2UgdGVtcGxhdGUgcGFybXMuCgkqIHBhcnNlLnk6IFN0b3AgcGFzc2luZyBhbnl0aGluZyB0byBlbmRfdGVtcGxhdGVfZGVjbC4KCSogdHJlZS5jIChwcmludF9sYW5nX3N0YXRpc3RpY3MpOiBPbmx5IHByaW50IHRpbnN0IGluZm8gI2lmZGVmCglHQVRIRVJfU1RBVElTVElDUy4KCldlZCBGZWIgMjEgMTY6NTc6MzMgMTk5NiAgQnJlbmRhbiBLZWhvZSAgPGJyZW5kYW5AbGlzYS5jeWdudXMuY29tPgoKCSogaW5pdC5jIChleHBhbmRfcmVjdXJzaXZlX2luaXR7LF8xfSk6IERlbGV0ZSBkZWNscy4KCShzb3J0X21lbWJlcl9pbml0KTogRGVsZXRlIHVudXNlZCB2YXIgSU5JVC4KCShlbWl0X2Jhc2VfaW5pdCk6IERlbGV0ZSB1bnVzZWQgdmFyIFguCgkoYnVpbGRfb2Zmc2V0X3JlZik6IERlbGV0ZSB1bnVzZWQgdmFyIENOQU1FLgoJKHNvcnRfbWVtYmVyX2luaXQpOiBEZWxldGUgdW51c2VkIHZhciBGSUVMRFNfVE9fVU5NQVJLLgoJKGVtaXRfYmFzZV9pbml0KTogRGVsZXRlIHVudXNlZCBsb2NhbCB2YXIgQkFTRS4gIERlbGV0ZSBleHRlcm4KCWRlY2wgb2YgSU5fQ0hBUkdFX0lERU5USUZJRVIuCgkoYnVpbGRfZGVsZXRlKTogRGVsZXRlIHVudXNlZCBsb2NhbCB2YXIgVklSVFVBTF9TSVpFLgoKCSogaW5pdC5jIChidWlsZF92ZWNfZGVsZXRlKTogRGVsZXRlIHVudXNlZCB0aGlyZCBhcmcgRUxUX1NJWkUuCgkoYnVpbGRfZGVsZXRlKTogRml4IGNhbGwuCgkqIGRlY2wyLmMgKGRlbGV0ZV9zYW5pdHkpOiBMaWtld2lzZS4KCSogY3AtdHJlZS5oIChidWlsZF92ZWNfZGVsZXRlKTogVXBkYXRlIHByb3RvdHlwZS4KCgkqIHR5cGVjay5jIChjb21tb25fYmFzZV90eXBlKTogRGVsZXRlIHVudXNlZCB2YXIgVE1QLgoJKGJ1aWxkX2JpbmFyeV9vcCk6IERlbGV0ZSBsb2NhbCB2YXIgQVJHU19TQVZFLgoJKGJ1aWxkX2FycmF5X3JlZik6IERlbGV0ZSB1bnVzZWQgdmFyIElUWVBFLgoJKGNfZXhwYW5kX3JldHVybik6IERlbGV0ZSB1bnVzZWQgdmFyIFVTRV9URU1QLgoKCSogdHlwZWNrLmMgKGNvbXBleGNlcHR0eXBlcyk6IERlbGV0ZSB1bnVzZWQgYXJnIFNUUklDVC4KCShjb21wdHlwZXMpOiBGaXggY2FsbHMuCgkqIGRlY2wuYyAoZHVwbGljYXRlX2RlY2xzKTogTGlrZXdpc2UuCgkqIGNwLXRyZWUuaCAoY29tcGV4Y2VwdHR5cGVzKTogRGVsZXRlIGV4dHJhIGFyZy4KCgkqIGRlY2wyLmMgKGNoZWNrX2NsYXNzZm4pOiBEZWxldGUgdW51c2VkIHNlY29uZCBhcmcgQ05BTUUuCgkqIGRlY2wuYyAoc3RhcnRfZGVjbCwgZ3Jva2ZuZGVjbCk6IEZpeCBjYWxscy4KCSogaW5pdC5jIChkb19mcmllbmQpOiBMaWtld2lzZS4KCSogY3AtdHJlZS5oIChjaGVja19jbGFzc2ZuKTogVXBkYXRlIHByb3RvdHlwZS4KCgkqIGNwLXRyZWUuaCAoc2lnbmF0dXJlX2Vycm9yLCBpbXBvcnRfZXhwb3J0X3Z0YWJsZSwKCWFwcGVuZF9zaWduYXR1cmVfZmllbGRzLCBpZF9pbl9jdXJyZW50X2NsYXNzLCBtYXJrX3VzZWQsCgljb3B5X2Fzc2lnbm1lbnRfYXJnX3ApOiBBZGQgZGVjbHMuCgkqIGRlY2wyLmMgKG1hcmtfdXNlZCk6IERlbGV0ZSBkZWNsLgoKCSogY2xhc3MuYyAobl8qKTogV3JhcCB3aXRoICNpZmRlZiBHQVRIRVJfU1RBVElTVElDUy4KCgkqIGNsYXNzLmMgKGdldF92dGFibGVfZW50cnkpOiBEaXNhYmxlIHVudXNlZCBmdW5jdGlvbi4KCShkb2luZ19oYXJkX3ZpcnR1YWxzKTogRGVsZXRlIHVudXNlZCBzdGF0aWMgZ2xvYmFsIHZhci4KCShmaW5pc2hfc3RydWN0XzEpOiBEb24ndCBpbml0IERPSU5HX0hBUkRfVklSVFVBTFMuCgkocHJlcGFyZV9mcmVzaF92dGFibGUpOiBEZWxldGUgdW51c2VkIHZhcnMgUEFUSCBhbmQgUkVTVUxULgoJKG92ZXJyaWRlcyk6IERlbGV0ZSB1bnVzZWQgdmFycyBSRVRUWVBFIGFuZCBCQVNFX1JFVFRZUEUuCgkobW9kaWZ5X29uZV92dGFibGUpOiBEZWxldGUgdW51c2VkIHZhciBPTERfUlRUSS4KCShmaW5pc2hfc3RydWN0X2Fub24pOiBEZWxldGUgdW51c2VkIHZhcnMgT0ZGU0VUIGFuZCBYLgoJKGZpbmlzaF9zdHJ1Y3RfYml0cyk6IERlbGV0ZSB1bnVzZWQgdmFyIE1FVEhPRF9WRUMuCgkoZ2V0X2Jhc2VmbmRlY2xzKTogRGVsZXRlIHVudXNlZCB2YXIgUFVSUE9TRS4gIERlbGV0ZSB1bnVzZWQKCWZvci1zY29wZSBsb2NhbCB2YXJpYWJsZSBNRVRIT0RTLgoKCSogY2FsbC5jICh1c2VyX2hhcnNobmVzcyk6IERlbGV0ZSB1bnVzZWQvdW5uZWVkZWQgYXJnIFBBUk0uCgkoaWRlYWxfY2FuZGlkYXRlKTogRGVsZXRlIHVudXNlZCBhcmdzIEJBU0VUWVBFIGFuZCBQQVJNUy4KCShidWlsZF9tZXRob2RfY2FsbCk6IERlbGV0ZSB1bnVzZWQgYXJncyBwYXNzZWQgaW50byBpZGVhbF9jYW5kaWRhdGUuCgkoYnVpbGRfb3ZlcmxvYWRfY2FsbF9yZWFsKTogTGlrZXdpc2UuICBEZWxldGUgdW51c2VkIHZhciBPVkVSTE9BRF9OQU1FLgoJKiBjcC10cmVlLmggKHN5bnRoZXNpemVfbWV0aG9kKTogQWRkIGRlY2wuCgoJKiBkZWNsLmMgKG5vdGVfbGV2ZWxfZm9yX2Zvcik6IEdpdmUgdm9pZCByZXR1cm4gdHlwZS4KCShwdXNoZGVjbF9ub25jbGFzc19sZXZlbCk6IExpa2V3aXNlLgoJKGZpbmlzaF9mdW5jdGlvbik6IERlbGV0ZSB1bnVzZWQgdmFycyBWRklFTERTIGFuZCBBTExPQ0FURURfVEhJUy4KCShwb3BsZXZlbCk6IERlbGV0ZSB1bnVzZWQgdmFyIElNUExJQ0lUX1RSWV9CTE9DSy4KCShzdXNwZW5kX2JpbmRpbmdfbGV2ZWwpOiBEZWxldGUgdW51c2VkIHZhciBMRVZFTC4KCShkdXBsaWNhdGVfZGVjbHMpOiBEZWxldGUgdW51c2VkIHZhciBDVFlQRS4KCShkdXBsaWNhdGVfZGVjbHMpOiBEZWxldGUgdW51c2VkIHZhciBQUkVWSU9VU19DX0RFQ0wuCgkoaW5pdF9kZWNsX3Byb2Nlc3NpbmcpOiBEZWxldGUgdW51c2VkIHZhcnMgRkxPQVRfRU5ETElOSyBhbmQKCVBUUl9FTkRMSU5LLgoJKGdyb2tkZWNsYXJhdG9yKTogRGVsZXRlIHVudXNlZCB2YXIgQy4KCShncm9rZGVjbGFyYXRvcik6IERlbGV0ZSB1bnVzZWQgdmFyIFNJWkVfVkFSSUVTLgoJKGdyb2twYXJtcyk6IERlbGV0ZSB1bnVzZWQgdmFyIFNBV19WT0lELgoJKHN0YXJ0X2Z1bmN0aW9uKTogRGVsZXRlIHVudXNlZCB2YXIgT0xEREVDTC4KCShjcGx1c19leHBhbmRfZXhwcl9zdG10KTogRGVsZXRlIHVudXNlZCB2YXIKCVJFTU9WRV9JTVBMSUNJVF9JTU1FRElBVEVMWS4KCgkqIGNwLXRyZWUuaCAocHVzaGRlY2xfbm9uY2xhc3NfbGV2ZWwpOiBGaXggcHJvdG90eXBlLgoKCSogTWFrZWZpbGUuaW4gKENPTkZMSUNUUyk6IFVwZGF0ZSB0byAxMiBzaGlmdC9yZWR1Y2UuCgpXZWQgRmViIDIxIDAwOjA2OjE3IDE5OTYgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIHRyZWUuYyAoYnVpbGRfbWluKTogU2V0IFRSRUVfQ09NUExFWElUWSB0byBsaW5lbm8uCgkoYnVpbGRfbWluX250KTogTGlrZXdpc2UuCgkqIHB0LmMgKGRvX3B1c2hsZXZlbCk6IEVtaXQgbGluZSBub3RlLgoJKGRvX3BvcGxldmVsKTogUmV0dXJuIHdoYXQgd2UgZ2V0IGZyb20gcG9wbGV2ZWwuCgkodHN1YnN0X2V4cHIpOiBTZXQgbGluZW5vIGZyb20gVFJFRV9DT01QTEVYSVRZIGluIHN0bXQgbm9kZXMuCgkqIHBhcnNlLnk6IFVzZSBkb19wdXNobGV2ZWwgYW5kIGRvX3BvcGxldmVsLgoJKiBjcC10cmVlLmg6IERlY2xhcmUgZG9fcG9wbGV2ZWwuCgoJKiBjcC10cmVlLmg6IERlY2xhcmUgYXRfZW9mLgoJKiBkZWNsLmMgKGNwX2ZpbmlzaF9kZWNsKTogUGFzcyBpdCB0byByZXN0X29mX2RlY2xfY29tcGlsYXRpb24uCgkqIGRlY2wyLmMgKGltcG9ydF9leHBvcnRfZGVjbCk6IFJlbmFtZWQgZnJvbSBpbXBvcnRfZXhwb3J0X2lubGluZS4KCShmaW5pc2hfZmlsZSk6IENhbGwgaXQgdG8gZG8gaW50ZXJmYWNlIGhhbmRsaW5nIGZvciBzdGF0aWNzLgoJKiBwdC5jICh0c3Vic3RfY29weSk6IENhbGwgbWFya191c2VkIG9uIHZhcmlhYmxlcyBhbmQgZnVuY3Rpb25zCgl1c2VkIGhlcmUuCgoJKiBkZWNsMi5jIChmaW5pc2hfZmlsZSk6IERvbid0IGVtaXQgc3RhdGljcyB3ZSBjYW4ndCBnZW5lcmF0ZS4KCSogcHQuYyAoaW5zdGFudGlhdGVfZGVjbCk6IERvbid0IHNldCBpbnRlcmZhY2Ugb24gaW5zdGFudGlhdGlvbnMKCXdlIGNhbid0IGdlbmVyYXRlLgoKCSogY3AtdHJlZS5oIChzdHJ1Y3QgdGluc3RfbGV2ZWwpOiBDaGFuZ2UgJ2NsYXNzbmFtZScgdG8gJ2RlY2wnLgoJKiB0cmVlLmMgKHByaW50X2xhbmdfc3RhdGlzdGljcyk6IFByaW50IG1heCB0ZW1wbGF0ZSBkZXB0aC4KCSogcHQuYyAocHVzaF90aW5zdF9sZXZlbCk6IER1bXAgZW50aXJlIGluc3RhbnRpYXRpb24gY29udGV4dC4KCShpbnN0YW50aWF0ZV9jbGFzc190ZW1wbGF0ZSk6IFVzZSBpdCBhbmQgcG9wX3RpbnN0X2xldmVsLgoJKGluc3RhbnRpYXRlX2RlY2wpOiBMaWtld2lzZS4KCgkqIGNhbGwuYyBjbGFzcy5jIGNwLXRyZWUuaCBkZWNsLmMgZGVjbDIuYyBlcnJvci5jIGxleC5jIG1ldGhvZC5jCglwdC5jIHB0cmVlLmMgdHJlZS5kZWY6IFJlbW92ZSBhbGwgdHJhY2VzIG9mIFVOSU5TVEFOVElBVEVEX1BfVFlQRS4KClR1ZSBGZWIgMjAgMTg6MjE6NTEgMTk5NiAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogY2FsbC5jIGNsYXNzLmMgY3AtdHJlZS5oIGN2dC5jIGRlY2wuYyBkZWNsMi5jIGVycm9yLmMgZXhwci5jCglpbml0LmMgbGV4LmMgbWV0aG9kLmMgcGFyc2UueSBwdC5jIHJlcG8uYyBzZWFyY2guYyBzcGV3LmMgdHJlZS5jCgl0cmVlLmRlZiB0eXBlY2suYyB0eXBlY2syLmMgeHJlZi5jOiBNYXNzaXZlLCBzeXN0ZW1pYyBjaGFuZ2VzIGZvcgoJdGhlIG5ldyB0ZW1wbGF0ZSBpbXBsZW1lbnRhdGlvbi4KClR1ZSBGZWIgMjAgMTc6MTQ6MjkgMTk5NiAgQnJlbmRhbiBLZWhvZSAgPGJyZW5kYW5AbGlzYS5jeWdudXMuY29tPgoKCSogZGVjbDIuYyAoY2hlY2tfY3BfY2FzZV92YWx1ZSk6IFVzZSBTVFJJUF9UWVBFX05PUFMuCgpUaHUgRmViIDE1IDE4OjQ0OjQyIDE5OTYgIE1pa2UgU3R1bXAgIDxtcnNAY3lnbnVzLmNvbT4KCgkqIGRlY2wuYyAoY3BfZmluaXNoX2RlY2wpOiBEZWxheSBlbWl0dGluZyB0aGUgZGVidWcgaW5mb3JtYXRpb24gZm9yCglhIHR5cGVkZWYgdGhhdCBoYXMgYmVlbiBpbnN0YWxsZWQgYXMgdGhlIGNhbm9uaWNhbCB0eXBlZGVmLCBpZiB0aGUKCXR5cGUgaGFzIG5vdCB5ZXQgYmVlbiBkZWZpbmVkLgoKVGh1IEZlYiAxNSAwOTozOTowOCAxOTk2ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBkZWNsMi5jIChncm9rZmllbGQpOiBTdGlsbCBjYWxsIHBvcF9uZXN0ZWRfY2xhc3MgZm9yIGFjY2VzcyBkZWNscy4KCldlZCBGZWIgMTQgMTc6MzA6MDQgMTk5NiAgQnJlbmRhbiBLZWhvZSAgPGJyZW5kYW5AbGlzYS5jeWdudXMuY29tPgoKCSogZGVjbC5jIChsb29rdXBfbGFiZWwpOiBDYWxsIGxhYmVsX3J0eC4KCgkqIGRlY2wuYyAobWFrZV9iaW5kaW5nX2xldmVsKTogTmV3IGZ1bmN0aW9uLgoJKHB1c2hsZXZlbCwgcHVzaGxldmVsX2NsYXNzKTogQ2FsbCBpdCBpbnN0ZWFkIG9mIGV4cGxpY2l0CglkdXBsaWNhdGUgY2FsbHMgdG8geG1hbGxvYy4KCgkqIGRlY2wuYyAoaW5pdF9kZWNsX3Byb2Nlc3NpbmcpOiBEZWxldGUgdXNlbGVzcyBidWlsZF9wb2ludGVyX3R5cGUKCWNhbGwuCgoJKiBkZWNsLmMgKGZsb2F0X2Z0eXBlX2Zsb2F0LCBsZG91YmxlX2Z0eXBlX2xkb3VibGUpOiBBZGQgZGVmaW5pdGlvbnMuCgkoc2l6ZXRfZnR5cGVfc3RyaW5nKTogRGVsZXRlIHZhcmlhYmxlLgoJKGluaXRfZGVjbF9wcm9jZXNzaW5nKTogQWRkIGJ1aWx0LWluIGZ1bmN0aW9ucyBmYWJzZiwgZmFic2wsCglzcXJ0Ziwgc3FydGwsIHNpbmYsIHNpbiwgc2lubCwgY29zZiwgY29zLCBjb3NsLiAgTmV3IGxvY2FsCgl2YXJpYWJsZSBzdHJsZW5fZnR5cGUsIHVzZWQgZm9yIHN0cmxlbi4KCldlZCBGZWIgMTQgMTY6MjE6MjUgMTk5NiAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogZGVjbC5jIChwdXNoX3RvX3RvcF9sZXZlbCk6IFN0YXJ0IGZyb20gY3VycmVudF9iaW5kaW5nX2xldmVsCglhZ2FpbiBmb3Igbm93OyB0aGUgc3RsIGhhY2tzIGRlcGVuZCBvbiBnKysgYmVpbmcgYnJva2VuIGluIHRoaXMKCXdheSwgYW5kIGl0J2xsIGJlIGZpeGVkIGluIHRoZSB0ZW1wbGF0ZSByZXdyaXRlLgoKCSogdHJlZS5kZWY6IEFkZCBVU0lOR19ERUNMLgoJKiBkZWNsMi5jIChkb19jbGFzc191c2luZ19kZWNsKTogSW1wbGVtZW50LgoJKGdyb2tmaWVsZCk6IFBhc3MgYWNjZXNzIGRlY2xzIG9mZiB0byBkb19jbGFzc191c2luZ19kZWNsIGluc3RlYWQgb2YKCWdyb2tkZWNsYXJhdG9yLgoJKiBlcnJvci5jIChkdW1wX2RlY2wpOiBIYW5kbGUgVVNJTkdfREVDTHMuCgkqIGRlY2wuYyAoZ3Jva2RlY2xhcmF0b3IpOiBSZW1vdmUgY29kZSBmb3IgaGFuZGxpbmcgYWNjZXNzIGRlY2xzLgoJKiBjbGFzcy5jIChmaW5pc2hfc3RydWN0XzEpOiBBZGp1c3QgYWNjb3JkaW5nbHksIHRyZWF0IHVzaW5nLWRlY2xzCglhcyBhY2Nlc3MgZGVjbHMgZm9yIG5vdy4KCShmaW5pc2hfc3RydWN0KTogRG9uJ3QgY2hlY2sgVVNJTkdfREVDTHMgZm9yIG90aGVyIHVzZXMgb2YgdGhlIG5hbWUuCgoJKiBzZWFyY2guYyAoZ2V0X21hdGNoaW5nX3ZpcnR1YWwpOiBVc2UgY3BfZXJyb3JfYXQuCgpXZWQgRmViIDE0IDEwOjM2OjU4IDE5OTYgIEJyZW5kYW4gS2Vob2UgIDxicmVuZGFuQGxpc2EuY3lnbnVzLmNvbT4KCgkqIHR5cGVjay5jIChjb21wdHlwZXMpOiBEZWZhdWx0IENPTVBfVFlQRV9BVFRSSUJVVEVTIHRvIDEsIHRvCgltYXRjaCBjLXR5cGVjay5jLgoJKHNlbGZfcHJvbW90aW5nX2FyZ3NfcCk6IE1vdmUgdGhlIGNoZWNrIHRoYXQgVFlQRSBpcyBub24tbmlsCgliZWZvcmUgdHJ5aW5nIHRvIGxvb2sgYXQgaXRzIG1haW4gdmFyaWFudC4KCSh1bnNpZ25lZF90eXBlLCBzaWduZWRfdHlwZSk6IEFkZCBjaGVja2luZyBvZiBESS9TSS9ISS9RSSBub2Rlcy4KCgkqIGNwLXRyZWUuaCAoREVDTF9XQUlUSU5HX0ZSSUVORFMsIFNFVF9ERUNMX1dBSVRJTkdfRlJJRU5EUyk6CglEZWxldGUgbWFjcm9zLgoJKiBpbml0LmMgKHhyZWZfZnJpZW5kLCBlbWJyYWNlX3dhaXRpbmdfZnJpZW5kcyk6IERlbGV0ZSBmdW5jdGlvbnMuCgkoZG9fZnJpZW5kKTogRGVsZXRlIGNhbGwgdG8geHJlZl9mcmllbmQuCgkqIGNsYXNzLmMgKGZpbmlzaF9zdHJ1Y3RfMSk6IERlbGV0ZSBjYWxsIHRvIGVtYnJhY2Vfd2FpdGluZ19mcmllbmRzLgoKCSogdHlwZWNrLmMgKGNvbnZlcnRfc2VxdWVuY2UpOiAjaWYgMCB1bnVzZWQgZnVuY3Rpb24uCgoJKiBjcC10cmVlLmggKERFQ0xfSU5fTUVNT1JZX1ApOiBOZXcgbWFjcm8gdy8gdGhlIGNoZWNrIHRoYXQgdXNlZCB0bwoJYmUgaW4gZGVjbF9pbl9tZW1vcnlfcC4KCShkZWNsX2luX21lbW9yeV9wKTogRGVsZXRlIGRlY2wuCgkqIGV4cHIuYyAoZGVjbF9pbl9tZW1vcnlfcCk6IERlbGV0ZSBmbi4KCSogdHlwZWNrLmMgKG1hcmtfYWRkcmVzc2FibGUpOiBVc2UgREVDTF9JTl9NRU1PUllfUC4KCgkqIGRlY2wuYyAoY3BfZmluaXNoX2RlY2wpOiBVc2UgREVDTF9JTl9NRU1PUllfUC4KClR1ZSBGZWIgMTMgMTI6NTE6MjEgMTk5NiAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogY2xhc3MuYyAoZmluaXNoX3N0cnVjdF8xKTogQ2hlY2sgZm9yIGEgcHVyZS1zcGVjaWZpZXIgb24gYQoJbm9uLXZpcnR1YWwgZnVuY3Rpb24gaGVyZS4KCgkqIGRlY2wyLmMgKGdyb2tfZnVuY3Rpb25faW5pdCk6IERvbid0IGNoZWNrIHdoZXRoZXIgdGhlIGZ1bmN0aW9uCglpcyB2aXJ0dWFsIGhlcmUuCgkoZ3Jva2ZpZWxkKTogRG9uJ3QgY2FsbCBjaGVja19mb3Jfb3ZlcnJpZGUgaGVyZS4KCgkqIGRlY2wuYyAocHVzaF90b190b3BfbGV2ZWwpOiBTdGFydCBmcm9tIGlubmVyX2JpbmRpbmdfbGV2ZWwsCgljaGVjayBjbGFzc19zaGFkb3dlZCBpbiBjbGFzcyBsZXZlbHMuCgpNb24gRmViIDEyIDE3OjQ2OjU5IDE5OTYgIE1pa2UgU3R1bXAgIDxtcnNAY3lnbnVzLmNvbT4KCgkqIGRlY2wuYyAocmVzdW1lX2xldmVsKTogSWdub3JlIHRoaW5ncyB0aGF0IGRvbid0IGhhdmUgbmFtZXMsIGluc3RlYWQKCW9mIGNvcmUgZHVtcGluZy4KCk1vbiBGZWIgMTIgMTU6NDc6NDQgMTk5NiAgQnJlbmRhbiBLZWhvZSAgPGJyZW5kYW5AbGlzYS5jeWdudXMuY29tPgoKCSogZGVjbDIuYyAoZ3Jva2ZpZWxkKTogU2V0IERFQ0xfVklOREVYIHByb3Blcmx5IGZvciBGVU5DVElPTl9ERUNMcy4KClNhdCBGZWIgMTAgMTc6NTk6NDUgMTk5NiAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogY2xhc3MuYyAoZmluaXNoX3N0cnVjdF8xKTogU2V0IERFQ0xfVklOREVYIHByb3Blcmx5IG9uIGEKCXN5bnRoZXNpemVkIGR0b3IuCgoJKiBwYXJzZS55IChjb21wbGV0ZV90eXBlX25hbWUpOiBCaW5kIGdsb2JhbF9zY29wZSBlYXJsaWVyLgoJKGNvbXBsZXhfdHlwZV9uYW1lKTogTGlrZXdpc2UuCgkocXVhbGlmaWVkX3R5cGVfbmFtZSk6IFJlbW92ZS4KClRodSBGZWIgIDggMTU6MTU6MTQgMTk5NiAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogZGVjbC5jIChncm9rZm5kZWNsKTogTW92ZSBjb2RlIHRoYXQgbG9va3MgZm9yIHZpcnR1YWxzIGluIGJhc2UKCWNsYXNzZXMuLi4KCSogY2xhc3MuYyAoY2hlY2tfZm9yX292ZXJyaWRlKTogLi4uIHRvIGEgbmV3IGZ1bmN0aW9uLgoJKGZpbmlzaF9zdHJ1Y3RfMSk6IENhbGwgaXQuCgoJKiBjcC10cmVlLmg6IERlY2xhcmUgd2Fybl9zaWduX2NvbXBhcmUuCgoJKiB0eXBlY2suYyAoYnVpbGRfYmluYXJ5X29wX25vZGVmYXVsdCk6IENoZWNrIHdhcm5fc2lnbl9jb21wYXJlCglyYXRoZXIgdGhhbiBleHRyYV93YXJuaW5ncyB0byBkZWNpZGUgd2hldGhlciB0byB3YXJuIGFib3V0Cgljb21wYXJpc29uIG9mIHNpZ25lZCBhbmQgdW5zaWduZWQuCgoJKiBkZWNsMi5jIChsYW5nX2RlY29kZV9vcHRpb24pOiBIYW5kbGUgd2Fybl9zaWduX2NvbXBhcmUuICAtV2FsbAoJaW1wbGllcyAtV3NpZ24tY29tcGFyZS4gIC1XYWxsIGRvZXNuJ3QgaW1wbHkgLVcuCgpXZWQgRmViICA3IDE1OjI3OjU3IDE5OTYgIE1pa2UgU3R1bXAgIDxtcnNAY3lnbnVzLmNvbT4KCgkqIHR5cGVjay5jIChidWlsZF9jb21wb25lbnRfcmVmKTogRml4IHRvIGhhbmRsZSBhbm9uIHVuaW9ucyBpbiBiYXNlCgljbGFzc2VzIGFzIHdlbGwuCgpXZWQgRmViICA3IDE0OjI5OjEyIDE5OTYgIEJyZW5kYW4gS2Vob2UgIDxicmVuZGFuQGxpc2EuY3lnbnVzLmNvbT4KCgkqIGNsYXNzLmMgKHJlc29sdmVzX3RvX2ZpeGVkX3R5cGVfcCk6IERlbGV0ZSBjb2RlIGRlYWxpbmcgd2l0aAoJYSBXSVRIX0NMRUFOVVBfRVhQUiwgc2luY2Ugd2UgZG9uJ3QgZ2VuZXJhdGUgdGhlbSBhbnkgbW9yZS4KCSogY3Z0LmMgKGJ1aWxkX3VwX3JlZmVyZW5jZSk6IExpa2V3aXNlLgoJKiBkZWNsLmMgKGdyb2tfcmVmZXJlbmNlX2luaXQpOiBMaWtld2lzZS4KCShjcF9maW5pc2hfZGVjbCk6IExpa2V3aXNlLgoJKiBlcnJvci5jIChkdW1wX2V4cHIpOiBMaWtld2lzZS4KCSogdHJlZS5jIChyZWFsX2x2YWx1ZV9wKTogTGlrZXdpc2UuCgkobHZhbHVlX3ApOiBMaWtld2lzZS4KCShidWlsZF9jcGx1c19uZXcpOiBMaWtld2lzZS4KCSh1bnNhdmVfZXhwcl9ub3cpOiBMaWtld2lzZS4KCSogdHlwZWNrLmMgKHVuYXJ5X2NvbXBsZXhfbHZhbHVlLCBidWlsZF9tb2RpZnlfZXhwciwKCWNfZXhwYW5kX3JldHVybik6IExpa2V3aXNlLgoKVHVlIEZlYiAgNiAxMzozOToyMiAxOTk2ICBCcmVuZGFuIEtlaG9lICA8YnJlbmRhbkBsaXNhLmN5Z251cy5jb20+CgoJTWFrZSB0aGUgQysrIGZyb250LWVuZCBwYXkgYXR0ZW50aW9uIHRvIGF0dHJpYnV0ZXMgZm9yIHN0cnVjdHVyZXMuCgkqIGNsYXNzLmMgKGZpbmlzaF9zdHJ1Y3QpOiBOZXcgYXJndW1lbnQgQVRUUklCVVRFUywgcGFzc2VkIGRvd24gaW50bwoJZmluaXNoX3N0cnVjdF8xLgoJKGZpbmlzaF9zdHJ1Y3RfMSk6IE5ldyBhcmd1bWVudCBBVFRSSUJVVEVTOyBjYWxsIGNwbHVzX2RlY2xfYXR0cmlidXRlcy4KCVRha2Ugb3V0IG9sZCByb3VuZF91cF9zaXplIHVzZSBhbmQgc2V0dGluZyB0aGUgREVDTF9BTElHTiBwb3NzaWJseQoJdXNpbmcgaXQuICBUYWtlIG91dCBzZXR0aW5nIG9mIFRZUEVfQUxJR04gdG8gcm91bmRfdXBfc2l6ZSwgd2hpY2gKCWNhbiBvdmVycmlkZSB3aGF0IHRoZSBhdHRyaWJ1dGUgc2V0LgoJKiBjcC10cmVlLmggKGZpbmlzaF9zdHJ1Y3QpOiBVcGRhdGUgcHJvdG90eXBlLgoJKiBwYXJzZS55ICh0ZW1wbGF0ZV9pbnN0YW50aWF0ZV9vbmNlKTogUGFzcyBhIE5VTExfVFJFRSBmb3IgdGhlCglhdHRyaWJ1dGVzIHRvIGZpbmlzaF9zdHJ1Y3QuCgkoc3RydWN0c3ApOiBGb3IgYSBDTEFTUyBkZWNsLCBhZGQgbWF5YmVfYXR0cmlidXRlIHRvIHJ1bGUgYW5kIHBhc3MgdGhhdAoJdmFsdWUgZG93biBpbnRvIGZpbmlzaF9zdHJ1Y3QuCgkqIE1ha2VmaWxlLmluIChDT05GTElDVFMpOiBTd2l0Y2ggdG8gNyBzaGlmdC9yZWR1Y2UgY29uZmxpY3RzLgoKVHVlIEZlYiAgNiAxMzoxMjoxNSAxOTk2ICBQZXIgQm90aG5lciAgPGJvdGhuZXJAa2FsZXNzaW4uY3lnbnVzLmNvbT4KCgkqIGRlY2wuYyAocG9wbGV2ZWwpOiAgUmUtd29yZCBkZWFkIGZvciBsb2NhbCBoYW5kbGluZy4KCShwdXNoZGVjbCk6ICBSZW1vdmUgdXNlbGVzcyBERUNMX0RFQURfRk9SX0xPQ0FMIHRlc3QuCgkoY3BfZmluaXNoX2RlY2wpOiAgSWYgaXNfZm9yX3Njb3BlLCBjaGVjayBmb3IgZHVwbGljYXRlcyBzbwoJd2UgY2FuIGRpc2FibGUgaXNfZm9yX3Njb3BlLiAgT3RoZXJ3aXNlLCBwcmVzZXJ2ZV90ZW1wX3Nsb3RzLgoKCSogbGV4LmMgKGRvX2lkZW50aWZpZXIpOiAgVXNlIGdsb2JhbCBiaW5kaW5nIGluIHByZWZlcmVuY2Ugb2YKCWRlYWQgZm9yIGxvY2FsIHZhcmlhYmxlLgoKTW9uIEZlYiAgNSAxNzo0Njo0NiAxOTk2ICBNaWtlIFN0dW1wICA8bXJzQGN5Z251cy5jb20+CgoJKiBpbml0LmMgKGluaXRpYWxpemluZ19jb250ZXh0KTogSGFuZGxlIGFub24gdW5pb24gY2hhbmdlcywgdGhlCgljb250ZXh0IHdoZXJlIGZpZWxkcyBvZiBhbm9uIHVuaW9ucyBjYW4gYmUgaW5pdGlhbGl6ZWQgbm93IGhhcyB0byBiZQoJZm91bmQgYnkgd2Fsa2luZyB1cCB0aGUgVFlQRV9DT05URVhUIGNoYWluLgoKRnJpIEZlYiAgMiAxNDo1NDowNCAxOTk2ICBEb3VnIEV2YW5zICA8ZGplQGNoYXJtZWQuY3lnbnVzLmNvbT4KCgkqIGRlY2wuYyAoc3RhcnRfZGVjbCk6ICNpZmRlZiBvdXQgY29kZSB0byBzZXQgREVDTF9DT01NT04KCWlmIEFTTV9PVVRQVVR7LF9BTElHTkVEfV9CU1MgaXMgZGVmaW5lZC4KCShvYnNjdXJlX2NvbXBsZXhfaW5pdCk6IElmIGJzcyBpcyBzdXBwb3J0ZWQsIGFsd2F5cyBzZXQKCURFQ0xfSU5JVElBTCB0byBlcnJvcl9tYXJrX25vZGUuCgpUaHUgRmViICAxIDE2OjE5OjU2IDE5OTYgIEJyZW5kYW4gS2Vob2UgIDxicmVuZGFuQGxpc2EuY3lnbnVzLmNvbT4KCgkqIGluaXQuYyAoaXNfZnJpZW5kKTogTWFrZSBzdXJlIHRoZXJlJ3MgYSBjb250ZXh0IGJlZm9yZSB3ZSBzZWUgaWYKCWl0J3MgYW4gYWdnciB0eXBlLgoKVGh1IEZlYiAgMSAxNTo0NDo1MyAxOTk2ICBNaWtlIFN0dW1wICA8bXJzQGN5Z251cy5jb20+CgoJKiBpbml0LmMgKGlzX2ZyaWVuZCk6IENsYXNzZXMgYXJlIG5vdCBmcmllbmRseSB3aXRoIG5lc3RlZCBjbGFzc2VzLgoKVGh1IEZlYiAgMSAxNToyNzozNyAxOTk2ICBEb3VnIEV2YW5zICA8ZGplQGNoYXJtZWQuY3lnbnVzLmNvbT4KCgkqIGxleC5jIChjaGVja19uZXdsaW5lKTogUGFzcyBsYXN0IGNoYXJhY3RlciByZWFkIHRvIEhBTkRMRV9QUkFHTUEsCglhbmQgcmVjb3JkIGl0cyByZXN1bHQuCgpUaHUgRmViICAxIDA5OjI3OjAxIDE5OTYgIE1pa2UgU3R1bXAgIDxtcnNAY3lnbnVzLmNvbT4KCgkqIGNsYXNzLmMgKGZpbmlzaF9zdHJ1Y3RfYW5vbik6IFN3aXRjaCBhcm91bmQgY29kZSB0byBub3QgbW92ZSBhbm9uCgl1bmlvbiBlbGVtZW50cyBhcm91bmQsIG5vciBtZXNzIHVwIHRoZWlyIGNvbnRleHRzLCBub3Igb2Zmc2V0cywKCWluc3RlYWQgd2Ugbm93IGJ1aWxkIHVwIHRoZSByaWdodCBudW1iZXIgb2YgQ09NUE9ORU5UX1JFRnMgZm9yIGFsbAoJdGhlIGFub24gdW5pb25zIHRoYXQgbWF5IGJlIHByZXNlbnQgYXQgYnVpbGRfY29tcG9uZW50X3JlZiB0aW1lLgoJKiB0eXBlY2suYyAobG9va3VwX2Fub25fZmllbGQpOiBOZXcgcm91dGluZSB0byBoYW5kbGUgZmllbGQgbG9va3VwCglvbiBmaWVsZHMgd2l0aG91dCBuYW1lcy4gIFdlIGZpbmQgdGhlbSwgYmFzZWQgdXBvbiB0aGVpciB1bmlxdWUgdHlwZQoJaW5zdGVhZC4KCSogdHlwZWNrLmMgKGJ1aWxkX2NvbXBvbmVudF9yZWYpOiBBbGxvdyBGSUVMRF9ERUNMIGNvbXBvbmVudHMuCglIYW5kbGUgZmluZGluZyBjb21wb25lbnRzIGluIGFub255bW91cyB1bmlvbnMsIGFuZCBlbnN1cmUgdGhhdCBhCglDT01QT05FTlRfUkVGIGlzIGJ1aWx0IGZvciBlYWNoIGxldmVsIGFzIG5lY2Vzc2FyeS4KClR1ZSBKYW4gMzAgMTg6MTg6MjMgMTk5NiAgTWlrZSBTdHVtcCAgPG1yc0BjeWdudXMuY29tPgoKCSogY3Z0LmMgKGJ1aWxkX3VwX3JlZmVyZW5jZSk6IE1ha2UgdGhlIElORElSRUNUX0JJTkQgY2FzZSBjb21lIGFmdGVyCgljb2RlIHRoYXQgZW5zdXJlcyB0aGF0IGNvcHkgY3RvcnMgYXJlIHVzZWQgaWYgYXBwcm9wcmlhdGUuCgpUdWUgSmFuIDMwIDE3OjM1OjE0IDE5OTYgIEJyZW5kYW4gS2Vob2UgIDxicmVuZGFuQGxpc2EuY3lnbnVzLmNvbT4KCgkqIGluaXQuYyAoYnVpbGRfdmVjX2RlbGV0ZSk6IE9ubHkgZ2l2ZSBhbiBlcnJvciBpZiBiYXNlIGlzbid0IGFuCgllcnJvcl9tYXJrX25vZGUuCgpNb24gSmFuIDI5IDE3OjA5OjA2IDE5OTYgIE1pa2UgU3R1bXAgIDxtcnNAY3lnbnVzLmNvbT4KCgkqIHNwZXcuYyAoZG9fYWdncik6IGBuZXcgc3RydWN0IFM7JyBpc24ndCBhIGZvcndhcmQgZGVjbGFyYXRpb24uCgkoeXlsZXgpOiBJZiB3ZSBzZWUgYG5ldycsIGtlZXAgc2x1cnBpbmcuCgpUaHUgSmFuIDI1IDE4OjMxOjM2IDE5OTYgIE1pa2UgU3R1bXAgIDxtcnNAY3lnbnVzLmNvbT4KCgkqIGNsYXNzLmMgKGZpbmlzaF9zdHJ1Y3RfMSk6IE1vdmUgY29kZSBmb3IgaGFuZGxpbmcgYW5vbiB1bmlvbnMuLi4KCShmaW5pc2hfc3RydWN0X2Fub24pOiB0byBoZXJlLiAgRml4dXAgc28gdGhhdCB3ZSBkbyB0aGUgb2Zmc2V0CgljYWxjdWxhdGlvbnMgcmlnaHQsIGFuZCBzbyB0aGF0IHRoZSBmaWVsZHMgYXJlIHBoeXNpY2FsbHkgbW92ZWQgdG8KCXRoZSBjb250YWluZXJzJ3MgY2hhaW4uCgpUaHUgSmFuIDI1IDE4OjI3OjM3IDE5OTYgIEJyZW5kYW4gS2Vob2UgIDxicmVuZGFuQGxpc2EuY3lnbnVzLmNvbT4KCgkqIGRlY2wuYyAoZ3Jva2RlY2xhcmF0b3IpOiBBdm9pZCB0cnlpbmcgdG8gZ2V0IGFuIG9wZXJhbmQgb2ZmIGFuCglpZGVudGlmaWVyIG5vZGUuCgpXZWQgSmFuIDI0IDExOjI1OjMwIDE5OTYgIEppbSBXaWxzb24gIDx3aWxzb25AY2hlc3RudXQuY3lnbnVzLmNvbT4KCgkqIHR5cGVjay5jIChwb2ludGVyX2ludF9zdW0pOiBVc2UgVFlQRV9QUkVDSVNJT04gKHNpemV0eXBlKSBub3QKCVBPSU5URVJfU0laRSB0byBhZ3JlZSB3aXRoIGV4cHIuYy4KClRodSBKYW4gMjUgMTM6MDE6MjMgMTk5NiAgTWlrZSBTdHVtcCAgPG1yc0BjeWdudXMuY29tPgoKCSogc2VhcmNoLmMgKGxvb2t1cF9maWVsZCk6IERvbid0IHJlcG9ydCBhbWJpZ3VpdGllcyBpZiBwcm90ZWN0IGlzIDAsCglpbnN0ZWFkIHJldHVybiBOVUxMX1RSRUUuCgpXZWQgSmFuIDI0IDEzOjAxOjI2IDE5OTYgIE1pa2UgU3R1bXAgIDxtcnNAY3lnbnVzLmNvbT4KCgkqIGNsYXNzLmMgKGZpbmlzaF9zdHJ1Y3RfMSk6IENhbGwgd2Fybl9oaWRkZW4gaWYgd2Ugd2FudCB3YXJuaW5ncwoJYWJvdXQgb3ZlcmxvYWRlZCB2aXJ0dWFsIGZ1bmN0aW9ucy4KCSh3YXJuX2hpZGRlbik6IE5ldyByb3V0aW5lIHRvIHdhcm4gb2YgdmlydHVhbCBmdW5jdGlvbnMgdGhhdCBhcmUKCWhpZGRlbiBieSBvdGhlciB2aXJ0dWFsIGZ1bmN0aW9ucywgdGhhdCBhcmUgbm90IG92ZXJyaWRkZW4uCgkoZ2V0X2Jhc2VmbmRlY2xzKTogTmV3IHJvdXRpbmUsIHVzZWQgYnkgd2Fybl9oaWRkZW4uCgkobWFya19vdmVycmlkZXJzKTogTmV3IHJvdXRpbmUsIHVzZWQgYnkgd2Fybl9oaWRkZW4uCgkqIHNlYXJjaC5jIChnZXRfbWF0Y2hpbmdfdmlydHVhbCk6IFJlbW92ZSBvbGQgd2FybmluZyB0aGF0IGp1c3QKCWlzbid0IHZlcnkgdXNlZnVsLgoKVHVlIEphbiAyMyAxMjoyNjoxMCAxOTk2ICBCcmVuZGFuIEtlaG9lICA8YnJlbmRhbkBsaXNhLmN5Z251cy5jb20+CgoJKiBkZWNsLmMgKG91dHB1dF9idWlsdGluX3RkZXNjX2VudHJpZXMpOiAjaWYgMCB0aGUgZnVuY3Rpb24gZGVmaW5pdGlvbi4KCgkqIHR5cGVjay5jIChudWxsX3B0cl9jc3RfcCk6IERlbGV0ZSB1bnVzZWQgZm4uCgkoYnVpbGRfZnVuY3Rpb25fY2FsbF9tYXliZSk6IERlbGV0ZSB1bnVzZWQgZm4uCgoJKiBleHByLmMgKGV4dHJhY3RfaW5pdCk6ICNpZiAwIHRoZSBjb2RlIGFmdGVyIHVuY29uZGl0aW9uYWwgcmV0dXJuIDAKCWZvciBub3cuCgoJRGVsZXRlIG9sZCBjYWRpbGxhYyBjb2RlLgoJKiBlZHNlbC5jOiBSZW1vdmUgZmlsZS4KCSogTWFrZS1sYW5nLmluIChDWFhfU1JDUyk6IFRha2UgZWRzZWwuYyBvZmYgdGhlIGxpc3QuCgkqIE1ha2VmaWxlLmluIChDWFhfT0JKUyk6IERlbGV0ZSBlZHNlbC5vLgoJKGVkc2VsLm8pOiBEZWxldGUgcnVsZS4KCSogY3AtdHJlZS5oIChmbGFnX2NhZGlsbGFjKTogRGVsZXRlIHZhciBkZWNsLgoJKiBsYW5nLW9wdGlvbnMuaDogRGVsZXRlICItZmNhZGlsbGFjIiBhbmQgIi1mbm8tY2FkaWxsYWMiLgoJKiBkZWNsMi5jIChmbGFnX2NhZGlsbGFjKTogRGVsZXRlIHZhciBkZWZpbml0aW9uLgoJKGxhbmdfZGVjb2RlX29wdGlvbik6IERlbGV0ZSBoYW5kbGluZyBvZiAtZmNhZGlsbGFjIGFuZCAtZm5vLWNhZGlsbGFjLgoJKGdyb2tmaWVsZCk6IERlbGV0ZSBjb2RlIGRlcGVuZGluZyBvbiBmbGFnX2NhZGlsbGFjLgoJKGZpbmlzaF9hbm9uX3VuaW9uKTogTGlrZXdpc2UuCgkqIGNsYXNzLmMgKGZpbmlzaF9zdHJ1Y3RfMSk6IExpa2V3aXNlLgoJKHB1c2hjbGFzcyk6IExpa2V3aXNlLgoJKHBvcGNsYXNzKTogTGlrZXdpc2UuCgkocHVzaF9sYW5nX2NvbnRleHQpOiBMaWtld2lzZS4KCShwb3BfbGFuZ19jb250ZXh0KTogTGlrZXdpc2UuCgkqIGRlY2wuYyAoaW5pdF9kZWNsX3Byb2Nlc3NpbmcpOiBMaWtld2lzZS4KCShzdGFydF9kZWNsKTogTGlrZXdpc2UuCgkoY3BfZmluaXNoX2RlY2wpOiBMaWtld2lzZS4KCSh4cmVmX3RhZyk6IExpa2V3aXNlLgoJKGZpbmlzaF9lbnVtKTogTGlrZXdpc2UuCgkoc3RhcnRfZnVuY3Rpb24pOiBMaWtld2lzZS4KCShmaW5pc2hfZnVuY3Rpb24pOiBMaWtld2lzZS4KCShmaW5pc2hfc3RtdCk6IExpa2V3aXNlLgoJKiBsZXguYyAobGFuZ19pbml0KTogTGlrZXdpc2UuCgkoY2hlY2tfbmV3bGluZSk6IExpa2V3aXNlLgoKCSogbGV4LmMgKGRvX3BlbmRpbmdfaW5saW5lcyk6IERlbGV0ZSBzeW50aGVzaXplZCBtZXRob2Qga2x1ZGdlLgoKCURlbGV0ZSBkZWZ1bmN0LCBhbmNpZW50IGdhcmJhZ2UgY29sbGVjdGlvbiBpbXBsZW1lbnRhdGlvbi4KCSogcnR0aS5jOiBOZXcgZmlsZSB3aXRoIHRoZSBSVFRJIHN0dWZmIGZyb20gZ2MuYy4KCSogZ2MuYzogUmVtb3ZlZCBmaWxlIChtb3ZlZCB0aGUgcmVtYWluaW5nIHN0dWZmIGludG8gcnR0aS5jKS4KCSogTWFrZWZpbGUuaW4gKENYWF9PQkpTKTogUmVwbGFjZSBnYy5vIHdpdGggcnR0aS5vLgoJKHJ0dGkubyk6IE5ldyBydWxlLCByZXBsYWNpbmcgZ2Muby4KCSogTWFrZS1sYW5nLmluIChDWFhfU1JDUyk6IFJlcGxhY2UgZ2MuYyB3aXRoIHJ0dGkuYy4KCSogY3AtdHJlZS5oOiBEZWxldGUgZ2MtcmVsYXRlZCBmbiBkZWNscy4KCShERUNMX0dDX09GRlNFVCk6IERlbGV0ZSBtYWNyby4KCShmbGFnX2djKTogRGVsZXRlIGV4dGVybiBkZWNsLgoJKiBkZWNsLmMgKGN1cnJlbnRfZnVuY3Rpb25fb2JzdGFja19pbmRleCk6IERlbGV0ZSB2YXIgZGVjbC4KCShjdXJyZW50X2Z1bmN0aW9uX29ic3RhY2tfdXNhZ2UpOiBEZWxldGUgdmFyIGRlY2wuCgkoc3RhcnRfZnVuY3Rpb24pOiBEZWxldGUgY2xlYXJpbmcgb2YgY3VycmVudF9mdW5jdGlvbl9vYnN0YWNrX2luZGV4CglhbmQgY3VycmVudF9mdW5jdGlvbl9vYnN0YWNrX3VzYWdlLgoJKGluaXRfZGVjbF9wcm9jZXNzaW5nKTogRGVsZXRlIGNvZGUgcmVseWluZyBvbiAtZmdjLgoJRGVsZXRlIGNhbGwgdG8gaW5pdF9nY19wcm9jZXNzaW5nLgoJKGNwX2ZpbmlzaF9kZWNsKTogRGVsZXRlIGNhbGxzIHRvIGJ1aWxkX3N0YXRpY19nY19lbnRyeSBhbmQKCXR5cGVfbmVlZHNfZ2NfZW50cnkuICBEZWxldGUgZ2MgY29kZSBzZXR0aW5nIERFQ0xfR0NfT0ZGU0VULgoJKHN0b3JlX3Bhcm1fZGVjbHMpOiBEZWxldGUgLWZnYyBjYWxscyB0byBjcF9leHBhbmRfZGVjbF9jbGVhbnVwCglhbmQgdG8gZXhwYW5kX2V4cHIgb2YgYSBfX2djX21haW4gY2FsbC4KCShtYXliZV9nY19jbGVhbnVwKTogRGVsZXRlIHZhciBkZWNsLgoJKGZpbmlzaF9mdW5jdGlvbik6IERlbGV0ZSBjYWxsIHRvIGV4cGFuZF9nY19wcm9sb2d1ZV9hbmRfZXBpbG9ndWUuCgkqIGRlY2wyLmMgKGZsYWdfZ2MpOiBEZWxldGUgdmFyIGRlY2wuCgkobGFuZ19mX29wdGlvbnMpOiBEZWxldGUgb2ZmZXJpbmcgb2YgLWZnYy4KCShsYW5nX2RlY29kZV9vcHRpb24pOiBEZWxldGUgLWZnYyBhbmQgLWZuby1nYyBoYW5kbGluZy4KCShnZXRfdGVtcF9yZWd2YXIpOiBEZWxldGUgZ2MgY29kZS4KCSogaW5pdC5jIChidWlsZF9uZXcpOiBEZWxldGUgZ2MgY29kZS4KCSogbGV4LmMgKGluaXRfbGV4KTogRGVsZXRlIGNoZWNraW5nIG9mIGZsYWdfZ2MuCgoJKiB0eXBlY2suYyAoY29udmVydF9hcmd1bWVudHMpOiBEZWxldGUgZ2MgY29kZS4KCShidWlsZF9jb21wb25lbnRfYWRkcik6IERlbGV0ZSAtZmdjIHdhcm5pbmcuCgkoYnVpbGRfbW9kaWZ5X2V4cHIpOiBEZWxldGUgZ2MgY29kZS4KCgkqIGRlY2wyLmMgKGJ1aWxkX3B1c2hfc2NvcGUpOiBEZWxldGUgZm4uCgkqIGNwLXRyZWUuaCAoYnVpbGRfcHVzaF9zY29wZSk6IERlbGV0ZSBkZWNsLgoKCSogc2VhcmNoLmMgKGNsZWFyX3NlYXJjaF9zbG90cyk6IERlbGV0ZSBmbi4KCSogY3AtdHJlZS5oIChjbGVhcl9zZWFyY2hfc2xvdHMpOiBEZWxldGUgZGVjbC4KCgkqIHNlYXJjaC5jICh0cmVlX25lZWRzX2NvbnN0cnVjdG9yX3ApOiBEZWxldGUgZm4uCgkqIGNwLXRyZWUuaCAodHJlZV9uZWVkc19jb25zdHJ1Y3Rvcl9wKTogRGVsZXRlIGRlY2wuCgoJKiB0cmVlLmMgKGlkX2NtcCk6IERlbGV0ZSBmbi4KCgkqIHRyZWUuYyAoc2V0X2ZuYWRkcl9mcm9tX3Z0YWJsZV9lbnRyeSk6IERlbGV0ZSBmbi4KCSogY3AtdHJlZS5oIChzZXRfZm5hZGRyX2Zyb21fdnRhYmxlX2VudHJ5KTogRGVsZXRlIGRlY2wuCgoJKiB0cmVlLmMgKGRlY2xfdmFsdWVfbWVtYmVyKTogRGVsZXRlIGZuLgoJKiBjcC10cmVlLmggKGRlY2xfdmFsdWVfbWVtYmVyKTogRGVsZXRlIGRlY2wuCgoJKiB0cmVlLmMgKGxpc3RfaGFzaF9sb29rdXBfb3JfY29ucyk6IERlbGV0ZSBmbi4KCSogY3AtdHJlZS5oIChsaXN0X2hhc2hfbG9va3VwX29yX2NvbnMpOiBEZWxldGUgZGVjbC4KCgkqIG1ldGhvZC5jIChjcGx1c19leGNlcHRpb25fbmFtZSk6IERlbGV0ZSBmbi4KCShFWENFUFRJT05fTkFNRV97UFJFRklYLCBMRU5HVEh9KTogRGVsZXRlIG1hY3Jvcy4KCgkqIHNwZXcuYyAoc2hpZnRfdG9rZW5zKTogRGVsZXRlIGZuLgoKTW9uIEphbiAyMiAxNzo0OTozMyAxOTk2ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBleGNlcHQuYyAoaW5pdF9leGNlcHRpb25fcHJvY2Vzc2luZyk6IFBhc3MgMSB0byBuZWVkc19wb3AgaW4gY2FsbHMKCXRvIGNwX2ZpbmlzaF9kZWNsLgoJKiBwYXJzZS55OiBMaWtld2lzZS4KCk1vbiBKYW4gMjIgMTc6MzQ6MjkgMTk5NiAgQnJlbmRhbiBLZWhvZSAgPGJyZW5kYW5AbGlzYS5jeWdudXMuY29tPgoKCSogdHJlZS5jIChidWlsZF9jcGx1c19zdGF0aWNmbl90eXBlKTogRGVsZXRlIGZ1bmN0aW9uIGRlZmluaXRpb247CgluZXZlciB1c2VkLgoJKiBjcC10cmVlLmggKGJ1aWxkX2NwbHVzX3N0YXRpY2ZuX3R5cGUpOiBEZWxldGUgZGVjbC4KCgkqIHRyZWUuYyAodmlydHVhbF9tZW1iZXIpOiBEZWxldGUgZnVuY3Rpb24gZGVmaW5pdGlvbjsgbmV2ZXIgdXNlZC4KCSogY3AtdHJlZS5oICh2aXJ0dWFsX21lbWJlcik6IERlbGV0ZSBkZWNsLgoKRnJpIEphbiAxOSAxODowMzoxNCAxOTk2ICBNaWtlIFN0dW1wICA8bXJzQGN5Z251cy5jb20+CgoJKiB0eXBlY2suYyAoYnVpbGRfY29tcG9uZW50X3JlZik6IEhhbmRsZSBnZXR0aW5nIHZiYXNlIHBvaW50ZXJzCglvdXQgb2YgY29tcGxleCBtdWx0aXBsZSBpbmhlcml0YW5jZSBiZXR0ZXIuCgpGcmkgSmFuIDE5IDE2OjI3OjQwIDE5OTYgIE1pa2UgU3R1bXAgIDxtcnNAY3lnbnVzLmNvbT4KCgkqIHR5cGVjay5jIChidWlsZF9vYmplY3RfcmVmKTogTWFrZSBzdXJlIHdlIHVzZSB0aGUgcmVhbCB0eXBlLCBub3QKCWFueSByZWZlcmVuY2UgdHlwZS4KCkZyaSBKYW4gMTkgMTY6MDE6NDcgMTk5NiAgTWlrZSBTdHVtcCAgPG1yc0BjeWdudXMuY29tPgoKCSogdHJlZS5jIChidWlsZF9leGNlcHRpb25fdmFyaWFudCk6IERvbid0IGNyZWF0ZSBuZXcgdHlwZXMgaWYgd2UKCWRvbid0IGhhdmUgdG8sIGFsc28gYnVpbGQgbmV3IHR5cGVzIG9uIHRoZSByaWdodCBvYnN0YWNrLgoKRnJpIEphbiAxOSAxNDowOTo0NCAxOTk2ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBkZWNsLmMgKHN0b3JlX2JpbmRpbmdzKTogU3BsaXQgb3V0IGZyb20gcHVzaF90b190b3BfbGV2ZWwuCgkocHVzaF90b190b3BfbGV2ZWwpOiBDYWxsIGl0IGZvciBiLT50eXBlX3NoYWRvd2VkIG9uIGNsYXNzIGJpbmRpbmcKCWxldmVscy4KCkZyaSBKYW4gMTkgMTM6NTM6MTQgMTk5NiAgTWlrZSBTdHVtcCAgPG1yc0BjeWdudXMuY29tPgoKCSogc2VhcmNoLmMgKGV4cGFuZF91cGNhc3RfZml4dXBzKTogRml4IHNvIHRoYXQgb2Zmc2V0cyBzdG9yZWQgaW4KCXZiYXNlX29mZnNldHMgYXJlIGFsd2F5cyByaWdodC4gIEZpeGVzIGEgcHJvYmxlbSB3aGVyZSB2aXJ0dWFsIGJhc2UKCXVwY2FzdGluZyBhbmQgZG93bmNhc3RpbmcgY291bGQgYmUgd3JvbmcgZHVyaW5nIGNvbnZlcnNpb25zIG9uIHRoaXMKCWR1cmluZyB2aXJ0dWFsIGZ1bmN0aW9uIGRpc3BhdGNoIGF0IGN0b3IvZHRvciB0aW1lIHdoZW4gZHluYW1pYwoJdnRhYmxlIGZpeHVwcyBmb3IgZGVsdGFzIGFyZSBuZWVkZWQuICBUaGlzIG9ubHkgc291bmRzIGVhc2llciB0aGFuCglpdCBpcy4gIDotKQoJKGZpeHVwX3ZpcnR1YWxfdXBjYXN0X29mZnNldHMpOiBDaGFuZ2UgdG8gcmVmbGVjdCBuZXcgY2FsbGluZwoJY29udmVudGlvbiBmb3IgZXhwYW5kX3VwY2FzdF9maXh1cHMuCgpGcmkgSmFuIDE5IDEyOjIzOjA4IDE5OTYgIEJyZW5kYW4gS2Vob2UgIDxicmVuZGFuQGxpc2EuY3lnbnVzLmNvbT4KCgkqIGRlY2wyLmMgKGdyb2tiaXRmaWVsZCk6IFN0cmlwIHRoZSBOT1BzIGZyb20gV0lEVEggYmVmb3JlIHdlCgljaGVjayB0aGF0IGl0J3MgdXNhYmxlIGFzIHRoZSBiaXRmaWVsZCB3aWR0aC4KCldlZCBKYW4gMTcgMjE6MjI6NDAgMTk5NiAgQnJlbmRhbiBLZWhvZSAgPGJyZW5kYW5AbGlzYS5jeWdudXMuY29tPgoKCSogZGVjbDIuYyAoZ3Jva2ZpZWxkKTogQ2FsbCBjcGx1c19kZWNsX2F0dHJpYnV0ZXMgd2l0aCB0aGUgYXR0cmxpc3QuCglQYXNzIGEgbnVsbCB0cmVlIHRvIGdyb2tkZWNsYXJhdG9yIGZvciBpdHMgQVRUUkxJU1QgYXJnLCBzaW5jZSBpdCdzCglvbmx5IGV2ZXIgdXNlZCBmb3IgZnVuY3Rpb25zIGluIGl0LgoKV2VkIEphbiAxNyAxMjoxMDozOCAxOTk2ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBwYXJzZS55IChxdWFsaWZpZWRfdHlwZV9uYW1lKTogVXNlIHRoZSBUWVBFX0RFQ0wsIG5vdCB0aGUgdHlwZS4KCShuZXN0ZWRfdHlwZSk6IExpa2V3aXNlLgoJKG5lc3RlZF9uYW1lX3NwZWNpZmllcik6IFVzZSBsYXN0aWRkZWNsLgoKCSogZGVjbC5jIChncm9rZGVjbGFyYXRvcik6IEFkanVzdCBhY2NvcmRpbmdseS4KCSogaW5pdC5jIChleHBhbmRfbWVtYmVyX2luaXQpOiBMaWtld2lzZS4KCSogcGFyc2UueSAoYmFzZV9jbGFzcyk6IExpa2V3aXNlLgoJKiB0eXBlY2syLmMgKGJ1aWxkX2Z1bmN0aW9uYWxfY2FzdCk6IExpa2V3aXNlLgoKCSogdHlwZWNrMi5jIChidWlsZF9mdW5jdGlvbmFsX2Nhc3QpOiBGaWxsIGluIG5hbWUgYWZ0ZXIgd2UndmUKCWNoZWNrZWQgZm9yIG5vbi1hZ2dyIHR5cGUuCgpXZWQgSmFuIDE3IDEwOjE4OjAxIDE5OTYgIE1pa2UgU3R1bXAgIDxtcnNAY3lnbnVzLmNvbT4KCgkqIGRlY2wyLmMgKHdhcm5fcG9pbnRlcl9hcml0aCk6IERlZmF1bHQgdG8gb24uCgpUdWUgSmFuIDE2IDEyOjQ1OjM4IDE5OTYgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIGxleC5jIChpc19yaWQpOiBOZXcgZnVuY3Rpb24uCgkqIGRlY2wuYyAoZ3Jva2RlY2xhcmF0b3IpOiBEaWFnbm9zZSByZXNlcnZlZCB3b3JkcyB1c2VkIGFzCglkZWNsYXJhdG9yLWlkcy4KClR1ZSBKYW4gMTYgMTE6Mzk6NDAgMTk5NiAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogdHJlZS5jIChnZXRfZGVjbF9saXN0KTogRG9uJ3QgbG9zZSBjdi1xdWFscy4KCgkqIGRlY2wuYyAoZ3Jva2RlY2xhcmF0b3IpOiBGaXggU0NPUEVfUkVGIGhhbmRsaW5nIGFuZCBkaWFnbm9zZQoJdHlwZXNwZWNzIHVzZWQgYXMgZGVjbGFyYXRvci1pZHMuCgpUdWUgSmFuIDE2IDExOjA5OjQyIDE5OTYgIE1pa2UgU3R1bXAgIDxtcnNAY3lnbnVzLmNvbT4KCgkqIGRlY2wuYyAocG9wbGV2ZWwpOiBXaGVuIHBvcHBpbmcgYSBsZXZlbCwgZG9uJ3QgZ2l2ZSBhIHdhcm5pbmcgZm9yCglhbnkgc3ViYmxvY2tzIHRoYXQgYWxyZWFkeSBleGlzdC4KClR1ZSBKYW4gMTYgMDA6MjU6MzMgMTk5NiAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogdHlwZWNrLmMgKGJ1aWxkX29iamVjdF9yZWYpOiBGaW5pc2ggd2hhdCBJIHN0YXJ0ZWQuCgoJKiBwYXJzZS55IChxdWFsaWZpZWRfdHlwZV9uYW1lKTogRG9uJ3QgY2hlY2sgVFlQRV9CVUlMVF9JTi4KCgkqIGRlY2wyLmMgKGNvbnN0cnVjdG9yX25hbWVfZnVsbCk6IEhhbmRsZSBURU1QTEFURV9UWVBFX1BBUk1zLgoKCSogZGVjbC5jIChncm9rZGVjbGFyYXRvcik6IEFsc28gYWNjZXB0IFRFTVBMQVRFX1RZUEVfUEFSTSBhcyBhCglzY29wZS4KCk1vbiBKYW4gMTUgMTY6MTk6MzIgMTk5NiAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogZGVjbC5jICh4cmVmX3RhZyk6IEhhbmRsZSBwYXNzaW5nIGEgdHlwZSBpbiBkaXJlY3RseS4KCgkqIHBhcnNlLnkgKHF1YWxpZmllZF90eXBlX25hbWUpOiBQdWxsIG91dCB0aGUgdHlwZS4KCShuZXN0ZWRfdHlwZSk6IExpa2V3aXNlLgoJVGFrZSB0eXBlcyBkaXJlY3RseSBpbnN0ZWFkIG9mIGFzIGlkZW50aWZpZXJzLgoJKiBjYWxsLmMgKGJ1aWxkX3Njb3BlZF9tZXRob2RfY2FsbCk6IFRha2UgdHlwZXMgZGlyZWN0bHkgaW5zdGVhZCBvZgoJYXMgaWRlbnRpZmllcnMuCgkqIGRlY2wuYyAoeHJlZl9iYXNldHlwZXMpOiBMaWtld2lzZS4KCSogaW5pdC5jIChleHBhbmRfbWVtYmVyX2luaXQpOiBMaWtld2lzZS4KCShidWlsZF9tZW1iZXJfY2FsbCk6IExpa2V3aXNlLgoJKGJ1aWxkX29mZnNldF9yZWYpOiBMaWtld2lzZS4KCSogdHlwZWNrMi5jIChidWlsZF9zY29wZWRfcmVmKTogTGlrZXdpc2UsIHJlbW92ZSBib2d1cyBjb2RlLgoJKiBtZXRob2QuYyAoZG9fYnVpbGRfYXNzaWduX3JlZik6IExpa2V3aXNlLgoJKiBkZWNsLmMgKGdyb2tkZWNsYXJhdG9yKTogSGFuZGxlIGEgdHlwZSBhcHBlYXJpbmcgYXMgdGhlCglkZWNsYXJhdG9yLWlkIGZvciBjb25zdHJ1Y3RvcnMuCgkqIG1ldGhvZC5jIChkb19idWlsZF9jb3B5X2NvbnN0cnVjdG9yKTogY3VycmVudF9iYXNlX2luaXRfbGlzdCBub3cKCXVzZXMgdGhlIHR5cGVzIGRpcmVjdGx5LCBub3QgdGhlaXIgbmFtZXMuCgkqIGluaXQuYyAoc29ydF9iYXNlX2luaXQpOiBMaWtld2lzZS4KCShleHBhbmRfbWVtYmVyX2luaXQpOiBMaWtld2lzZS4KCSogaW5pdC5jIChpc19hZ2dyX3R5cGUpOiBOZXcgZnVuY3Rpb24sIGxpa2UgaXNfYWdncl90eXBlZGVmLgoKTW9uIEphbiAxNSAwODo0NTowMSAxOTk2ICBKZWZmcmV5IEEgTGF3ICA8bGF3QGN5Z251cy5jb20+CgoJKiB0cmVlLmMgKGxheW91dF9iYXNldHlwZXMpOiBDYWxsIGJ1aWxkX2xhbmdfZmllbGRfZGVjbCBpbnN0ZWFkCglvZiBidWlsZF9sYW5nX2RlY2wgaWYgZmlyc3QgYXJnIGlzIGEgRklFTERfREVDTC4KClRodSBKYW4gMTEgMTQ6NTU6MDcgMTk5NiAgQnJlbmRhbiBLZWhvZSAgPGJyZW5kYW5AbGlzYS5jeWdudXMuY29tPgoKCSogZGVjbC5jIChjcF9maW5pc2hfZGVjbCk6IE9ubHkgY2xlYXIgVFJFRV9VU0VEIGlmIERFQ0xfTkFNRSBpcwoJbm9uLWVtcHR5LgoJKiBleGNlcHQuYyAoZXhwYW5kX3N0YXJ0X2NhdGNoX2Jsb2NrKTogU2V0IFRSRUVfVVNFRCB0byBhdm9pZAoJd2FybmluZ3MgYWJvdXQgdGhlIGNhdGNoIGhhbmRsZXIuCgpNb24gSmFuICA4IDE3OjM1OjEyIDE5OTYgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIHR5cGVjay5jIChidWlsZF9tb2RpZnlfZXhwcik6IFVzZSBhIENPTVBPVU5EX0VYUFIgaW5zdGVhZCBvZgoJZXhwYW5kX3RhcmdldF9leHByLgoKVGh1IEphbiAgNCAxMjozMDozMiAxOTk2ICBCcmVuZGFuIEtlaG9lICA8YnJlbmRhbkBsaXNhLmN5Z251cy5jb20+CgoJRml4IGFjY2VzcyBjb250cm9sIHRvIHVzZSB0cmVlcyByYXRoZXIgdGhhbiBpbnRlZ2Vycy4KCSogY2xhc3MuYyAoYWNjZXNzX3tkZWZhdWx0LCBwdWJsaWMsIHByb3RlY3RlZCwgcHJpdmF0ZSwKCWRlZmF1bHRfdmlydHVhbCwgcHVibGljX3ZpcnR1YWwsIHByaXZhdGVfdmlydHVhbH1fbm9kZSk6IEFkZAoJZGVmaW5pdGlvbnMuCgkoaW5pdF9jbGFzc19wcm9jZXNzaW5nKTogRG8gY3JlYXRpb24gb2YgdGhvc2Ugbm9kZXMuCgkqIGNwLXRyZWUuaCAoYWNjZXNzX3R5cGUpOiBEZWxldGUgZW51bSBkZWNsLgoJKGFjY2Vzc197ZGVmYXVsdCwgcHVibGljLCBwcm90ZWN0ZWQsIHByaXZhdGUsIGRlZmF1bHRfdmlydHVhbCwKCXB1YmxpY192aXJ0dWFsLCBwcml2YXRlX3ZpcnR1YWx9X25vZGUpOiBBZGQgZGVjbHMuCgkoY29tcHV0ZV9hY2Nlc3MpOiBDaGFuZ2UgcmV0dXJuIHR5cGUuCgkqIHNlYXJjaC5jIChjb21wdXRlX2FjY2Vzcyk6IEhhdmUgdHJlZSByZXR1cm4gdHlwZSwgaW5zdGVhZCBvZiBlbnVtLgoJKGxvb2t1cF9maWVsZCk6IERlY2xhcmUgVEhJU19WIGFuZCBORVdfViB0byBiZSB0cmVlIG5vZGVzLgoJKiBsZXguYyAocmVhbF95eWxleCk6IFVzZSB5eWx2YWwudHR5cGUgZm9yIGdpdmluZyB0aGUgdmFsdWUgb2YgdGhlCglhY2Nlc3NfKiBub2RlIGZvciBlYWNoIG9mIFJJRF97UFVCTElDLCBQUklWQVRFLCBQUk9URUNURUR9LgoJKiBwYXJzZS55IChWSVNTUEVDKTogTWFrZSB0dHlwZSByYXRoZXIgdGhhbiBpdHlwZS4KCShiYXNlX2NsYXNzX2FjY2Vzc19saXN0KTogTGlrZXdpc2UuCgkqICouW2N5XTogQ2hhbmdlIGFsbCByZWZzIG9mIGBhY2Nlc3NfcHVibGljJyB0byBgYWNjZXNzX3B1YmxpY19ub2RlJywKCWV0Yy4KCSogY2FsbC5jIChidWlsZF9tZXRob2RfY2FsbCk6IE1ha2UgQUNDRVNTIGJlIGEgdHJlZS4KCSogY2xhc3MuYyAoYWx0ZXJfYWNjZXNzLCBmaW5pc2hfc3RydWN0XzEsIGZpbHRlcl9zdHJ1Y3QpOiBMaWtld2lzZS4KCSogY3Z0LmMgKGNvbnZlcnRfdG9fYWdncik6IExpa2V3aXNlLgoJKiBpbml0LmMgKGJ1aWxkX29mZnNldF9yZWYsIHJlc29sdmVfb2Zmc2V0X3JlZiwgYnVpbGRfZGVsZXRlKToKCUxpa2V3aXNlLgoJKiBtZXRob2QuYyAoaGFja19pZGVudGlmaWVyKTogTGlrZXdpc2UuCgkqIHR5cGVjay5jIChidWlsZF9jb21wb25lbnRfcmVmXzEsIGJ1aWxkX2NvbXBvbmVudF9yZWYpOiApOiBMaWtld2lzZS4KClRodSBKYW4gIDQgMTE6MDI6MjAgMTk5NiAgTWlrZSBTdHVtcCAgPG1yc0BjeWdudXMuY29tPgoKCSogdHlwZWNrLmMgKHBvaW50ZXJfaW50X3N1bSwgcG9pbnRlcl9kaWZmKTogTWFrZSBjb2RlIGFncmVlIHdpdGggQwoJZnJvbnRlbmQsIGFuZCBtYWtlIGl0IG1vcmUgY29uc2lzdGVudCB3aXRoIHJlc3BlY3QgdG8KCXdhcm5fcG9pbnRlcl9hcml0aC4KClR1ZSBKYW4gIDIgMDA6MTM6MzggMTk5NiAgUnVzdHkgUnVzc2VsbCAgPHJ1c3R5QGFkZWxhaWRlLm1hcHRlay5jb20uYXU+CgoJKiBkZWNsLmMgKHB1c2hkZWNsKTogQ2hlY2sgZm9yIGR1cGxpY2F0ZSBwYXJhbWV0ZXIgbmFtZXMuCgpXZWQgSmFuICAzIDA5OjI1OjQ4IDE5OTYgIE1pa2UgU3R1bXAgIDxtcnNAY3lnbnVzLmNvbT4KCgkqIGRlY2wuYyAoZXhwYW5kX3N0YXRpY19pbml0KTogQ2FsbCBhc3NlbWJsZV9leHRlcm5hbCBmb3IgYXRleGl0LgoKV2VkIEphbiAgMyAwNzo1NToxOSAxOTk2ICBNaWtlIFN0dW1wICA8bXJzQGN5Z251cy5jb20+CgoJKiBleGNlcHQuYyAoZG9fdW53aW5kKTogUmVtb3ZlIHNvbWUgZ2VuZXJhdGVkIGRlYWQgY29kZS4KCShlaF9vdXRlcl9jb250ZXh0KTogTmV3IHJvdXRpbmUsIGZhY3RvciBvdXQgc29tZSBjb21tb24gY29kZSBmcm9tCglleHBhbmRfYnVpbHRpbl90aHJvdyBhbmQgZW5kX2VoX3Vud2luZGVyLiAgQWRkIGNvZGUgdG8gZG8gcmV0dXJuCglhZGRyZXNzIG1hc2tpbmcgZm9yIHRoZSBQQS4KCShleHBhbmRfYnVpbHRpbl90aHJvdyk6IFVzZSBlaF9vdXRlcl9jb250ZXh0IGluc3RlYWQgb2Ygb3BlbiBjb2RpbmcKCWl0IGhlcmUuCgkoZW5kX2VoX3Vud2luZGVyKTogTGlrZXdpc2UuCgpUdWUgSmFuICAyIDE3OjAwOjU2IDE5OTYgIE1pa2UgU3R1bXAgIDxtcnNAY3lnbnVzLmNvbT4KCgkqIGV4Y2VwdC5jIChleHBhbmRfdGhyb3cpOiBDYWxsIGFzc2VtYmxlX2V4dGVybmFsIGZvciBfX2VtcHR5LCBpZiB3ZQoJdXNlIGl0LgoKVGh1IERlYyAyOCAxMToxMzoxNSAxOTk1ICBNaWtlIFN0dW1wICA8bXJzQGN5Z251cy5jb20+CgoJKiBleGNlcHQuYyAoZXhwYW5kX2J1aWx0aW5fdGhyb3cpOiBVc2UgUkVUVVJOX0FERFJfT0ZGU0VUIGluc3RlYWQgb2YKCU5PUk1BTF9SRVRVUk5fQUREUl9PRkZTRVQuCgkoZW5kX2VoX3Vud2luZGVyKTogTGlrZXdpc2UuCgpXZWQgRGVjIDI3IDIyOjE4OjE2IDE5OTUgIE1pa2UgU3R1bXAgIDxtcnNAY3lnbnVzLmNvbT4KCgkqIGdjLmMgKGJ1aWxkX2R5bmFtaWNfY2FzdCk6IE1ha2Ugc3VyZSB3ZSBkb24ndCBjYXN0IGF3YXkgY29uc3QKCXdoZW4gZGVhbGluZyB3aXRoIHJlZmVyZW5jZXMsIGFuZCBtYWtlIHN1cmUgd2UgaGFuZGxlIGR5bmFtaWMKCWNhc3RpbmcgdG8gYSBjdiBxdWFsaWZpZWQgcmVmZXJlbmNlLgoKVGh1IERlYyAyMSAyMzo1MDozNSAxOTk1ICBNaWtlIFN0dW1wICA8bXJzQGN5Z251cy5jb20+CgoJKiBleGNlcHQuYyAoc3RydWN0IGVoX2NvbnRleHQpOiBOZXcgc3RydWN0dXJlIHRvcCBob2xkIGVoIGNvbnRleHQKCWluZm9ybWF0aW9uLgoJKHB1c2hfZWhfY29udGV4dCk6IE5ldyByb3V0aW5lLgoJKHBvcF9laF9jb250ZXh0KTogTGlrZXdpc2UuCgkqIGRlY2wuYyAocHVzaF9jcF9mdW5jdGlvbl9jb250ZXh0KTogVXNlIHRoZW0uCgkocG9wX2NwX2Z1bmN0aW9uX2NvbnRleHQpOiBMaWtld2lzZS4KCldlZCBEZWMgMjAgMTI6NDI6NTEgMTk5NSAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogZGVjbDIuYyAoZmluaXNoX2ZpbGUpOiBBbHNvIHBydW5lIHVuaW50ZXJlc3RpbmcgZnVuY3Rpb25zIGluIHRoZQoJaW5saW5lIGVtaXNzaW9uIGxvb3AuCgpXZWQgRGVjIDIwIDAyOjMyOjA3IDE5OTUgIEplZmZyZXkgQSBMYXcgIDxsYXdAY3lnbnVzLmNvbT4KCgkqIHNpZy5jIChidWlsZF9zaWduYXR1cmVfdGFibGVfY29uc3RydWN0b3IpOiBNYXJrIGZ1bmN0aW9ucwoJaW4gdGhlIHNpZ25hdHVyZSBhcyByZWZlcmVuY2VkLgoKVHVlIERlYyAxOSAyMjozNjo1NiAxOTk1ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBkZWNsMi5jIChmaW5pc2hfZmlsZSk6IERvIGFsbCB0aGUgdnRhYmxlL3N5bnRoZXNpcyBzdHVmZiBiZWZvcmUKCXRoZSBpbmxpbmUgZW1pc3Npb24gc3R1ZmYuCgpNb24gRGVjIDE4IDE1OjUxOjMzIDE5OTUgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIGNwLXRyZWUuaCwgZGVjbDIuYyAoZmxhZ193ZWFrKTogTmV3IGZsYWcgdG8gY29udHJvbCB0aGUgdXNlIG9mCgl3ZWFrIHN5bWJvbHMuCgkqIGxhbmctb3B0aW9ucy5oOiBBZGQgLWZ7bm8tLH13ZWFrLgoJKiBkZWNsLmMgKGluaXRfZGVjbF9wcm9jZXNzaW5nKTogSWYgdGhlIHRhcmdldCBkb2VzIG5vdCBzdXBwb3J0IHdlYWsKCXN5bWJvbHMsIGRvbid0IHVzZSB0aGVtLgoJKiBkZWNsMi5jLCBwdC5jOiBzL1NVUFBPUlRTX1dFQUsvZmxhZ193ZWFrLy4KClN1biBEZWMgMTcgMjE6MTM6MjMgMTk5NSAgUnVzdHkgUnVzc2VsbCAgPHJ1c3R5QGFkZWxhaWRlLm1hcHRlay5jb20uYXU+CgoJKiBpbml0LmMgKGV4cGFuZF9tZW1iZXJfaW5pdCk6IHdhcm5pbmcgZm9yIGJhc2UgaW5pdCBhZnRlciBtZW1iZXJzLgoKRnJpIERlYyAxNSAxNTozMjoxOCAxOTk1ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBjdnQuYyAoYnVpbGRfZXhwcl90eXBlX2NvbnZlcnNpb24pOiBEb24ndCBjb252ZXJ0IHRvIGEgcmVmZXJlbmNlCgl0eXBlLgoKVGh1IERlYyAxNCAxNjowNTo1OCAxOTk1ICBNaWtlIFN0dW1wICA8bXJzQGN5Z251cy5jb20+CgoJKiBtZXRob2QuYyAocmVwb3J0X3R5cGVfbWlzbWF0Y2gpOiBJbXByb3ZlIHdvcmRpbmcgZm9yIHZvbGF0aWxlCgltaXNtYXRjaGVzLgoKVGh1IERlYyAxNCAxNDoxNjoyNiAxOTk1ICBNaWtlIFN0dW1wICA8bXJzQGN5Z251cy5jb20+CgoJKiBpbml0LmMgKGV4cGFuZF9hZ2dyX2luaXRfMSk6IFVzZSBleHBhbmRfYWdncl9pbml0XzEgaW5zdGVhZCBvZgoJZXhwYW5kX2Fzc2lnbm1lbnQsIGFzIHRoZSBsYXRlciBkb2Vzbid0IGhhbmRsZSB0aGluZ3MgdGhhdCBoYXZlCgljb3B5IGNvbnN0cnVjdG9ycyB3ZWxsLiAgVGhlIGNvbXBpbGVyIHdvdWxkIGRvIGJpdHdpc2UgY29weWluZywKCWluc3RlYWQgb2YgY3RvciBjYWxsaW5nIGluIHNvbWUgY2FzZXMuCgpXZWQgRGVjIDEzIDE3OjA1OjU0IDE5OTUgIFBhdWwgRWdnZXJ0ICA8ZWdnZXJ0QHR3aW5zdW4uY29tPgoKCSogZysrLmMgKG15X3N0cmVycm9yKTogUmV0dXJuICJjYW5ub3QgYWNjZXNzIiBpZiBlcnJubyBpcyAwLgoJKHBmYXRhbF93aXRoX25hbWUsIHBlcnJvcl9leGVjKTogRG9uJ3QgYXNzdW1lIHRoYXQKCXRoZSByZXR1cm5lZCB2YWx1ZSBmcm9tIG15X3N0cmVycm9yIGNvbnRhaW5zIG5vICclJ3MuCgkoY29uY2F0KTogUmVtb3ZlLgoJKHN5c19uZXJyb3IpOiBEZWNsYXJlIG9ubHkgaWYgSEFWRV9TVFJFUlJPUiBpcyBub3QgZGVmaW5lZC4KCldlZCBEZWMgMTMgMTY6MjI6MzggMTk5NSAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCUxvc2UgQ0xBU1NUWVBFX01FVEhPRFMvREVDTF9ORVhUX01FVEhPRCBjaGFpbjsgbWFrZQoJVFlQRV9NRVRIT0RTL1RSRUVfQ0hBSU4gbWVhbiB3aGF0IHRoZXkgdXNlZCB0by4KCSogZGVjbDIuYyAoY29uc3RydWN0b3JfbmFtZV9mdWxsKTogUmVmZXIgdG8gQ0xBU1NUWVBFX01FVEhPRF9WRUMKCWluc3RlYWQgb2YgVFlQRV9NRVRIT0RTLgoJKiBkZWNsLmMgKGR1cGxpY2F0ZV9kZWNscyk6IExvc2UgcmVmZXJlbmNlcyB0byBERUNMX05FWFRfTUVUSE9ELgoJKiB0cmVlLmMgKHRyZWVfY29weV9sYW5nX2RlY2xfZm9yX2RlZmVycmVkX291dHB1dCk6IExpa2V3aXNlLgoJKiBjcC10cmVlLmggKENMQVNTVFlQRV9NRVRIT0RTKTogTG9zZS4KCShDTEFTU1RZUEVfTUVUSE9EX1ZFQyk6IFBvaW50IHRvIGxhbmdfc3BlYy0+bWV0aG9kcyBpbnN0ZWFkIG9mCglUWVBFX01FVEhPRFMuCgkoc3RydWN0IGxhbmdfZGVjbCk6IExvc2UgbmV4dF9tZXRob2QgZmllbGQuCgkoREVDTF9ORVhUX01FVEhPRCk6IExvc2UuCgkqIGNsYXNzLmMgKGZpbmlzaF9zdHJ1Y3RfbWV0aG9kcyk6IERvbid0IG1lc3Mgd2l0aCBUWVBFX01FVEhPRFMuCgkoZmluaXNoX3N0cnVjdCk6IEp1c3QgdXNlIFRZUEVfTUVUSE9EUzsgd2UgZG9uJ3QgbmVlZCBmbl9maWVsZHMKCWFueW1vcmUuCgkoZmluaXNoX3N0cnVjdF9tZXRob2RzKTogRG9uJ3QgbWVzcyB3aXRoIHRoZSBUUkVFX0NIQUlOcyBpbgoJZm5fZmllbGRzLgoKCSogc2VhcmNoLmMgKGFkZF9jb252ZXJzaW9ucyk6IERvbid0IHVzZSBUUkVFX0NIQUlOIHRvIHRyYXZlcnNlIG1ldGhvZAoJdmVjdG9yLgoKCSogY2FsbC5jIChidWlsZF9tZXRob2RfY2FsbCk6IFN5bnRoZXNpemUgaGVyZSBldmVuIHdoZW4gbm90IGlubGluaW5nLgoJKiB0eXBlY2suYyAoYnVpbGRfZnVuY3Rpb25fY2FsbF9yZWFsKTogTGlrZXdpc2UuCgpXZWQgRGVjIDEzIDE1OjAyOjM5IDE5OTUgIElhbiBMYW5jZSBUYXlsb3IgIDxpYW5AY3lnbnVzLmNvbT4KCgkqIGNwL2xleC5jIChjaGVja19uZXdsaW5lKTogSWYgREJYX0RFQlVHR0lOR19JTkZPIGFuZCB3cml0ZV9zeW1ib2xzCgk9PSBEQlhfREVCVUcsIGNhbGwgZGJ4b3V0X3N0YXJ0X25ld19zb3VyY2VfZmlsZSBhbmQKCWRieG91dF9yZXN1bWVfcHJldmlvdXNfc291cmNlX2ZpbGUgd2hlbiBhcHByb3ByaWF0ZS4KClR1ZSBEZWMgMTIgMjA6Mzg6NTUgMTk5NSAgTWlrZSBTdHVtcCAgPG1yc0BjeWdudXMuY29tPgoKCSogZXhjZXB0LmMgKHN0YXJ0X2Fub25fZnVuYyk6IFB1c2ggdG8gdGhlIHRvcCBsZXZlbC4KCShlbmRfYW5vbl9mdW5jKTogUG9wIGZyb20gdGhlIHRvcCBsZXZlbC4KCk1vbiBEZWMgMTEgMTg6NTY6MTQgMTk5NSAgTWlrZSBTdHVtcCAgPG1yc0BjeWdudXMuY29tPgoKCSogY3AtdHJlZS5oIChidWlsZF9jbGVhbnVwKTogTmV3IHJvdXRpbmUgdG8gYnVpbGQgY2xlYW51cHMuCgkqIGRlY2wuYyAoZXhwYW5kX3N0YXRpY19pbml0KTogVXNlIGJ1aWxkX2NsZWFudXAgdG8gYnVpbGQgYSBjbGVhbnVwCgljYWxsIGF0IGN0b3IgdGltZSBhbmQgdXNlIGF0ZXhpdCB0byBydW4gaXQgbGF0ZXIuCgkqIGRlY2wyLmMgKGJ1aWxkX2NsZWFudXApOiBOZXcgcm91dGluZSwgdGFrZW4gZnJvbSBmaW5pc2hfZmlsZS4KCShmaW5pc2hfZmlsZSk6IFVzZSBidWlsZF9jbGVhbnVwIGluc3RlYWQsIGFuZCBkb24ndCBwdXQgZnVuY3Rpb24KCWxvY2FsIHN0YXRpY3MgaW4gZ2xvYmFsIGR0b3IgbGlzdC4KCldlZCBEZWMgIDYgMTQ6MzQ6MjkgMTk5NSAgTWlrZSBTdHVtcCAgPG1yc0BjeWdudXMuY29tPgoKCSogZXhjZXB0LmMgKGV4cGFuZF90aHJvdyk6IEVuc3VyZSB0aGF0IHdlIGhhdmUgY2xlYW51cHMsIGlmIHdlIHRyeQoJYW5kIGV4cGFuZCBjbGVhbnVwcy4KCldlZCBEZWMgIDYgMTE6NDg6MjEgMTk5NSAgTWlrZSBTdHVtcCAgPG1yc0BjeWdudXMuY29tPgoKCSogZXhjZXB0LmMgKGV4cGFuZF90aHJvdyk6IEFkZCBsb2dpYyB0byBtYW5hZ2UgZHluYW1pYyBjbGVhbnVwcyBmb3IKCXRoZSBFSCBvYmplY3QuCgkoZXhwYW5kX2VuZF9jYXRjaF9ibG9jayk6IFVzZSB0aGUgbWFnaWMgb2YgZXhwYW5kX2dvdG8sIGluc3RlYWQgb2YKCWVtaXRfanVtcCBzbyB0aGF0IHdlIGdldCB0aGUgY2xlYW51cCBmb3IgYW55IGNhdGNoIGNsYXVzZSBwYXJhbWV0ZXIKCWFuZCB0aGUgY2xlYW51cCBmb3IgdGhlIGV4Y2VwdGlvbiBvYmplY3QuICBVcGRhdGUgdG8gcmVmbGVjdCBsYWJlbAoJY2hhbmdlcy4KCShwdXNoX2VoX2NsZWFudXApOiBOZXcgcm91dGluZSB0byByZWdpc3RlciBhIGNsZWFudXAgZm9yIGFuCglleGNlcHRpb24gb2JqZWN0LgoJKGVtcHR5X2ZuZGVjbCk6IFVzZWQgdG8gZGVmYXVsdCBjbGVhbnVwIGFjdGlvbnMgdG8KCW5vdGhpbmcuCgkoaW5pdF9leGNlcHRpb25fcHJvY2Vzc2luZyk6IFNldHVwIGVtcHR5X2ZuZGVjbC4gIFNldHVwCglzYXZlZF9jbGVhbnVwLgoJKGV4cGFuZF9zdGFydF9jYXRjaF9ibG9jayk6IFVwZGF0ZSB0byByZWZsZWN0IGxhYmVsIGNoYW5nZXMuICBDYWxsCglwdXNoX2VoX29iamVjdCB0byByZWdpc3RlciB0aGUgY2xlYW51cCBmb3IgdGhlIEVIIG9iamVjdC4KCShzdGFydF9hbm9uX2Z1bmMpOiBOZXcgcm91dGluZSB0byBzdGFydCBidWlsZGluZyBsYW1iZGEgZXhwcmVzc2lvbnMKCWZyb20gdHJlZXMuCgkoZW5kX2Fub25fZnVuYyk6IE5ldyByb3V0aW5lIHRvIGVuZCB0aGVtLgoJKHN0cnVjdCBsYWJlbE5vZGUpOiBDaGFuZ2Ugc28gdGhhdCB3ZSBjYW4gdXNlIHRyZWUgbGFiZWxzLCBvciBydHgKCWxhYmVscy4KCShzYXZlZF9jbGVhbnVwKTogT2JqZWN0IHRvIGNoZWNrIGZvciBkeW5hbWljIGNsZWFudXBzIGZvciB0aGUKCWV4Y2VwdGlvbiBoYW5kbGluZyBvYmplY3QuCgkocHVzaF9sYWJlbF9lbnRyeSk6IENoYW5nZSBzbyB0aGF0IHdlIGNhbiB1c2UgdHJlZSBsYWJlbHMsIG9yIHJ0eAoJbGFiZWxzLgoJKHBvcF9sYWJlbF9lbnRyeSk6IExpa2V3aXNlLgoJKHRvcF9sYWJlbF9lbnRyeSk6IExpa2V3aXNlLgoJKGV4cGFuZF9zdGFydF9hbGxfY2F0Y2gpOiBVc2UgdHJlZSBsYWJlbCBpbnN0ZWFkIG9mIHJ0eCBsYWJlbCwgc28KCXRoYXQgd2UgY2FuIGdldCB0aGUgbWFnaWMgb2YgZXhwYW5kX2dvdG8uCgkoZXhwYW5kX2VuZF9hbGxfY2F0Y2gpOiBVcGRhdGUgdG8gcmVmbGVjdCBsYWJlbCBjaGFuZ2VzLgoKCSogY2xhc3MuYyAoYnVpbGRfdmZuX3JlZik6IFJlbW92ZSBidWlsZGluZ19jbGVhbnVwIGxvZ2ljLCBhcyB3ZSBub3cKCXVzZSBVTlNBVkVfRVhQUnMuCgkqIHR5cGVjay5jIChnZXRfbWVtYmVyX2Z1bmN0aW9uX2Zyb21fcHRyZnVuYyk6IFJlbW92ZSByZW1uYW50cyBvZgoJYnVpbGRpbmdfY2xlYW51cCBsb2dpYywgYXMgd2Ugbm93IHVzZSBVTlNBVkVfRVhQUnMuCgkqIGNwLXRyZWUuaCAodW5zYXZlX2V4cHIpOiBEZWNsYXJlIGl0LgoJKiBkZWNsLmMgKGJ1aWxkaW5nX2NsZWFudXApOiBSZW1vdmUuCgkobWF5YmVfYnVpbGRfY2xlYW51cCk6IFJlbW92ZSBidWlsZGluZ19jbGVhbnVwIGxvZ2ljLCBhbmQgdXNlCglVTlNBVkVfRVhQUiBpbnN0ZWFkLgoKU3VuIERlYyAgMyAwMTozNDo1OCAxOTk1ICBNaWtlIFN0dW1wICA8bXJzQGN5Z251cy5jb20+CgoJKiBnYy5jIChidWlsZF90X2Rlc2MpOiBVcGRhdGUgZXJyb3IgbWVzc2FnZSB0byBzYXkgPHR5cGVpbmZvPi4KClRodSBOb3YgMzAgMTI6MzA6MDUgMTk5NSAgQnJlbmRhbiBLZWhvZSAgPGJyZW5kYW5AbGlzYS5jeWdudXMuY29tPgoKCSogZGVjbC5jIChwdXNoZGVjbCk6IE9ubHkgd2FybiBhYm91dCBzaGFkb3dpbmcgYSBsb2NhbCB2YXJpYWJsZSBpZgoJd2Fybl9zaGFkb3cgaXMgdHJ1ZS4KClN1biBOb3YgMjYgMTY6MDY6NTUgMTk5NSAgUnVzdHkgUnVzc2VsbCAgPHJ1c3R5QGFkZWxhaWRlLm1hcHRlay5jb20uYXU+CgoJKiB0eXBlY2suYyAoYnVpbGRfYmluYXJ5X29wX25vZGVmYXVsdCk6IEFkZGVkIHdhcm5pbmcgYWJvdXQKCWNvbXBhcmlzb25zIGJldHdlZW4gZGlmZmVyZW50IGVudW0gdHlwZXMgd2l0aCAtV2FsbCwgdW5sZXNzCgktZmVudW0taW50LWVxdWl2IHNldC4KCldlZCBOb3YgMjIgMTU6NDQ6MDIgMTk5NSAgTWlrZSBTdHVtcCAgPG1yc0BjeWdudXMuY29tPgoKCSogY2xhc3MuYyAoZmluaXNoX3N0cnVjdF8xKTogU2tpcCBkb3duIHRvIHRoZSBpbm5lciB0eXBlIGluCgltdWx0aWRpbWVuc2lvbmFsIGFycmF5cy4gIEVuc3VyZXMgY3RvcnMgd2lsbCBiZSBtYWRlIGZvciB0eXBlcyB0aGF0CgluZWVkIGNvbnN0cnVjdGluZy4KCldlZCBOb3YgMjIgMTQ6MTk6MjIgMTk5NSAgTWlrZSBTdHVtcCAgPG1yc0BjeWdudXMuY29tPgoKCSogZGVjbC5jIChsYXN0X2R0b3JfaW5zbik6IE5ldyB0byB0cmFjayB0aGUgbGFzdCBjb21waWxlciBnZW5lcmF0ZWQKCWluc24gaW4gYSBkdG9yLgoJKHN0b3JlX3Bhcm1fZGVjbHMpOiBTZXQgaXQuCgkoZmluaXNoX2Z1bmN0aW9uKTogVXNlIGl0IHRvIHNlZSBpZiB0aGUgZHRvciBpcyBlbXB0eS4gIEF2b2lkIGRvaW5nCgl2dGFibGUgc2V0dXAgYWxsIHRoZSB0aW1lLCBpZiB3ZSBjYW4uCgkoc3RydWN0IGNwX2Z1bmN0aW9uKTogQWRkIGxhc3RfZHRvcl9pbnNuLgoJKHB1c2hfY3BfZnVuY3Rpb25fY29udGV4dCk6IFNhdmUgaXQuCgkocG9wX2NwX2Z1bmN0aW9uX2NvbnRleHQpOiBSZXN0b3JlIGl0LgoKV2VkIE5vdiAyMiAxMTo1MjoxOSAxOTk1ICBQYXVsIFJ1c3NlbGwgIDxSdXN0eS5SdXNzZWxsQGFkZWxhaWRlLm1hcHRlay5jb20uYXU+CgoJKiB0eXBlY2suYyAoYnVpbGRfdW5hcnlfb3ApOiBTZXQgVFJFRV9OT19VTlVTRURfV0FSTklORyB0byBhdm9pZAoJd2FybmluZ3MuCgpUdWUgTm92IDIxIDE3OjE1OjIzIDE5OTUgIE1pa2UgU3R1bXAgIDxtcnNAY3lnbnVzLmNvbT4KCgkqIHR5cGVjay5jIChleHBhbmRfdGFyZ2V0X2V4cHIpOiBNYWtlIHN1cmUgdGFyZ2V0cyBnZXQgcHV0IGludG8gdGhlCgljdXJyZW50IHRlbXBfc2xvdF9sZXZlbCwgc28gdGhhdCB0aGUgZnJlZV90ZW1wX3Nsb3RzIGNhbGwgd2lsbCByZXVzZQoJdGhlbS4KClR1ZSBOb3YgMjEgMTM6MzI6MDMgMTk5NSAgTWlrZSBTdHVtcCAgPG1yc0BjeWdudXMuY29tPgoKCSogY2xhc3MuYyAoZmluaXNoX3N0cnVjdF8xKTogRGVsYXkgZGVsdGEgZml4dXBzIGZvciB2aXJ0dWFsIGJhc2VzCgl1bnRpbCBhZnRlciB3ZSBoYXZlIGRvbmUgdGhlIGhhcmQgdmlydHVhbHMsIHRvIGF2b2lkIGEgYm9ndXMgYGV2ZXJ5Cgl2aXJ0dWFsIGZ1bmN0aW9uIG11c3QgaGF2ZSBhIHVuaXF1ZSBmaW5hbCBvdmVycmlkZXInIGZvciB2aXJ0dWFsCglmdW5jdGlvbnMgdGhhdCBhcmUgb25seSBvdmVycmlkZGVuIGJ5IGhhcmQgdmlydHVhbHMuCgpUaHUgTm92ICA5IDEzOjM1OjMwIDE5OTUgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIHB0LmMgKGRvX2Z1bmN0aW9uX2luc3RhbnRpYXRpb24pOiBEb24ndCB0cnkgdG8gZmluZCBhIGZpbGUtc2NvcGUKCXRlbXBsYXRlIGZvciBhIG1lbWJlciBmdW5jdGlvbi4KClR1ZSBOb3YgMTQgMDY6MjA6MzUgMTk5NSAgTWlrZSBTdHVtcCAgPG1yc0BjeWdudXMuY29tPgoKCSogZysrLmMgKG1haW4pOiBBZGQgaGFuZGxpbmcgb2YgLW5vZGVmYXVsdGxpYnMuCgpNb24gTm92IDEzIDE1OjQ1OjM0IDE5OTUgIE1pa2UgU3R1bXAgIDxtcnNAY3lnbnVzLmNvbT4KCgkqIGNwLXRyZWUuaCAoSU5ESVJFQ1RfQklORCk6IEFkZCBhIHdheSBmb3IgdGhlIGZyb250ZW5kIHRvCglkaXN0aW5ndWlzaCBiZXR3ZWVuIGRpcmVjdCBiaW5kaW5ncyBvZiByZWZlcmVuY2UgdmFyaWFibGVzLCBhbmQKCWluZGlyZWN0IGJpbmRpbmdzIG9mIHJlZmVyZW5jZSB2YXJpYWJsZXMuCgkqIGN2dC5jIChidWlsZF91cF9yZWZlcmVuY2UpOiBVc2UgaXQuCgkqIHR5cGVjay5jIChjb252ZXJ0X2FyZ3VtZW50cyk6IFVzZSBpdCB0byBpbmRpY2F0ZSB0aGlzIGlzIGFuCglpbmRpcmVjdCBiaW5kaW5nLgoJKiBkZWNsLmMgKGNwX2ZpbmlzaF9kZWNsKTogRW5zdXJlIHRoYXQgd2UgcmV1c2Ugc3RhY2sgc2xvdHMgYXMgZmFzdAoJYXMgdGhleSBhcmUgdW51c2VkLgoJKGV4cGFuZF9zdGF0aWNfaW5pdCk6IExpa2V3aXNlLgoJKGNwbHVzX2V4cGFuZF9leHByX3N0bXQpOiBMaWtld2lzZS4KCSogZGVjbDIuYyAoZmluaXNoX2ZpbGUpOiBMaWtld2lzZS4KCSogaW5pdC5jIChwZXJmb3JtX21lbWJlcl9pbml0KTogTGlrZXdpc2UuCgkoZW1pdF9iYXNlX2luaXQpOiBMaWtld2lzZS4KCShleHBhbmRfYWdncl92YmFzZV9pbml0XzEpOiBMaWtld2lzZS4KCkZyaSBOb3YgMTAgMDk6MTg6MDkgMTk5NSAgQnJlbmRhbiBLZWhvZSAgPGJyZW5kYW5AbGlzYS5jeWdudXMuY29tPgoKCSogZGVjbC5jIChwdXNoX25hbWVzcGFjZSk6IFJld3JpdGUgdG8gdXNlIGJ1aWxkX2xhbmdfZGVjbCwgc28gd2UKCWdldCBhIERFQ0xfTEFOR19TUEVDSUZJQyBub2RlLgoJKiBjcC10cmVlLmggKGxhbmdfZGVjbF9mbGFncyk6IEFkZCBuZXcgbWVtYmVyIGBsZXZlbCcuCgkoTkFNRVNQQUNFX0xFVkVMKTogRG9uJ3QgdXNlIGRlY2wuYXJndW1lbnRzLCBpbnN0ZWFkIHVzZSB0aGUKCWRlY2xfZmxhZ3MgbGV2ZWwgbWVtYmVyLgoKTW9uIE5vdiAgNiAxODozNjoxMyAxOTk1ICBCcmVuZGFuIEtlaG9lICA8YnJlbmRhbkBsaXNhLmN5Z251cy5jb20+CgoJKiBjYWxsLmMgKGJ1aWxkX21ldGhvZF9jYWxsKTogTWFrZSBzdXJlIGluc3RhbmNlIGhhcyBhCglUWVBFX0xBTkdfU1BFQ0lGSUMgbm9kZSBiZWZvcmUgd2UgZGl2ZSBpbnRvIGl0LgoKU2F0IE5vdiAgNCAyMDowMTo1MiAxOTk1ICBKYXNvbiBNb2xlbmRhICA8Y3Jhc2hAcGh5ZGVhdXguY3lnbnVzLmNvbT4KCgkqIG1ldGhvZC5jIChtYWtlX3RodW5rKTogVXNlIFRSRUVfU0VUX0NPREUgdG8gc2V0IHRodW5rJ3MgdHJlZSBjb2RlLgoKVGh1IE5vdiAgMiAxNzo1Njo1NyAxOTk1ICBNaWtlIFN0dW1wICA8bXJzQGN5Z251cy5jb20+CgoJKiBkZWNsLmMgKGR1cGxpY2F0ZV9kZWNscyk6IFdoZW4gc21hc2hpbmcgZGVjbHMsIHNtYXNoIHN0YXRpY25lc3MgaW4KCXRoZSB1c3VhbCB3YXkuCgpUaHUgTm92ICAyIDE2OjQ0OjAyIDE5OTUgIE1pa2UgU3R1bXAgIDxtcnNAY3lnbnVzLmNvbT4KCgkqIGRlY2wuYyAocG9wbGV2ZWwpOiBIYW5kbGUgdGhlIG1lcmdpbmcgb2Ygc3ViYmxvY2tzIG9mIGNsZWFudXBzCgl3aGVuIGZpbmlzaGluZyBibG9ja3MgdGhhdCBoYXZlIGFscmVhZHkgYmVlbiBjcmVhdGVkICh1c3VhbGx5IGR1ZSB0bwoJdGhlIGZpeHVwIGdvdG8gY29kZSkuICBGaXhlcyBiYWQgZGVidWdnaW5nIGluZm9ybWF0aW9uLgoKV2VkIE5vdiAgMSAxMjozMzo1MyAxOTk1ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBtZXRob2QuYyAoaGFja19pZGVudGlmaWVyKTogRG9uJ3QgYWJvcnQgd2hlbiB3ZSBnZXQgYSBUUkVFX0xJU1QKCXRoYXQncyBub3QgYSBsaXN0IG9mIG92ZXJsb2FkZWQgZnVuY3Rpb25zLgoKV2VkIE5vdiAgMSAxMTozODo1OCAxOTk1ICBCcmVuZGFuIEtlaG9lICA8YnJlbmRhbkBsaXNhLmN5Z251cy5jb20+CgoJKiBkZWNsMi5jIChtYXJrX3Z0YWJsZV9lbnRyaWVzKTogQ2hlY2sgREVDTF9MQU5HX1NQRUNJRklDIG9uIGZuCgliZWZvcmUgdHJ5aW5nIHRvIHVzZSBERUNMX0FCU1RSQUNUX1ZJUlRVQUxfUC4KClR1ZSBPY3QgMzEgMTE6NTY6NTUgMTk5NSAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogZGVjbDIuYyAobWFya191c2VkKTogTmV3IGZ1bmN0aW9uIGZvciBob29raW5nIGludG8gc2V0dGluZyBvZgoJVFJFRV9VU0VEIG9uIGRlY2xzLgoJKiBjYWxsLmMgKGJ1aWxkX21ldGhvZF9jYWxsKTogVXNlIGl0LgoJKiBjbGFzcy5jIChpbnN0YW50aWF0ZV90eXBlKTogTGlrZXdpc2UuCgkqIGluaXQuYyAoYnVpbGRfb2Zmc2V0X3JlZik6IExpa2V3aXNlLiAgRG9uJ3QgY2FsbCBhc3NlbWJsZV9leHRlcm5hbAoJZm9yIGFsbCBsaWtlLW5hbWVkIGZ1bmN0aW9ucy4KCSogbWV0aG9kLmMgKGhhY2tfaWRlbnRpZmllcik6IExpa2V3aXNlLgoJKGVtaXRfdGh1bmspOiBEb24ndCBjYWxsIGFzc2VtYmxlX2V4dGVybmFsLgoJKG1ha2VfdGh1bmspOiBDcmVhdGUgdGh1bmsgYXMgYSBGVU5DVElPTl9ERUNMIHNvIHRoYXQgaXQKCWdldHMgdGhlIHJpZ2h0IG1vZGUgYW5kIEVOQ09ERV9TRUNUSU9OX0lORk8gd29ya3MuCgoJKiBwYXJzZS55OiBVc2UgbWFya191c2VkLiAgUGFzcyBvcGVyYXRvciBuYW1lcyB0byBkb19pZGVudGlmaWVyLgoJKiBsZXguYyAoZG9faWRlbnRpZmllcik6IEhhbmRsZSBvcGVyYXRvciBuYW1lcy4KCgkqIGRlY2wyLmMgKGdyb2tjbGFzc2ZuKTogVHdlYWsgX19pbl9jaHJnIGF0dHJpYnV0ZXMuCgpUaHUgT2N0IDI2IDE2OjQ1OjU4IDE5OTUgIEJyZW5kYW4gS2Vob2UgIDxicmVuZGFuQGxpc2EuY3lnbnVzLmNvbT4KCgkqIGVycmZuLmM6IEluY2x1ZGUgc3RkaW8uaC4KCShjcF9zcHJpbnRmKTogVGFrZSBvdXQgZGVjbCBvZiBzcHJpbnRmLCBhbmQgY2FzdCBzcHJpbnRmIHRvIGVycm9yZm4qLgoKV2VkIE9jdCAyNSAxODo1ODo0MSAxOTk1ICBNaWtlIFN0dW1wICA8bXJzQGN5Z251cy5jb20+CgoJKiB0eXBlY2syLmMgKGRpZ2VzdF9pbml0KTogQWx3YXlzIGNvbnZlcnQgaW5pdGlhbGl6ZXJzIHRvIHRoZQoJcmlnaHQgdHlwZS4KCldlZCBPY3QgMjUgMTM6MjU6MjQgMTk5NSAgTWlrZSBTdHVtcCAgPG1yc0BjeWdudXMuY29tPgoKCSogaW5pdC5jIChtZW1iZXJfaW5pdF9va19vcl9lbHNlKTogRG9uJ3QgYWxsb3cgbWVtYmVyIGluaXRpYWxpemVycwoJZm9yIGluZGlyZWN0IG1lbWJlcnMsIGFzIGl0IGlzIGludmFsaWQuCgpXZWQgT2N0IDI1IDExOjM1OjI4IDE5OTUgIEJyZW5kYW4gS2Vob2UgIDxicmVuZGFuQGxpc2EuY3lnbnVzLmNvbT4KCgkqIGRlY2wuYyAoZ3Jva2RlY2xhcmF0b3IpOiBEb24ndCBhbGxvdyBgZnJpZW5kIHNpZ25lZCAoKScuCgpGcmkgT2N0IDIwIDEwOjMwOjU5IDE5OTUgIE1pa2UgU3R1bXAgIDxtcnNAY3lnbnVzLmNvbT4KCgkqIHBhcnNlLnkgKGZvci5pbml0LnN0YXRlbWVudCk6IENhdGNoIGNvbXBvdW5kIHN0YXRlbWVudHMgaW5zaWRlIGZvcgoJaW5pdGlhbGl6YXRpb25zLCBpZiB3ZSdyZSBiZWluZyBwZWRhbnRpYy4KCkZyaSBPY3QgMjAgMTA6MDM6NDIgMTk5NSAgTWlrZSBTdHVtcCAgPG1yc0BjeWdudXMuY29tPgoKCSogZGVjbC5jIChsb29rdXBfdGFnKTogUmV0dXJuIE5VTExfVFJFRSBpZiB3ZSBkb24ndCBmaW5kIHdoYXQgd2UgYXJlCglsb29raW5nIGZvci4KClRodSBPY3QgMTkgMTQ6MjY6MTAgMTk5NSAgTWlrZSBTdHVtcCAgPG1yc0BjeWdudXMuY29tPgoKCSogZXJyb3IuYyAoZHVtcF9leHByKTogRG9uJ3QgY29yZSBkdW1wIHdoZW4gYSBib29sZWFuIGV4cHJlc3Npb24gaXMKCXVzZWQgYXMgYSBkZWZhdWx0IGFyZ3VtZW50LgoKVGh1IE9jdCAxOSAxMDozNjozMCAxOTk1ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBjbGFzcy5jIChmaW5pc2hfc3RydWN0X2JpdHMpOiBDaGVjayBhZ2dyZWdhdGVfdmFsdWVfcCBpbnN0ZWFkIG9mCglSRVRVUk5fSU5fTUVNT1JZLgoKV2VkIE9jdCAxOCAxODoxMjozMiAxOTk1ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBjbGFzcy5jIChmaW5pc2hfc3RydWN0X2JpdHMpOiBBbHNvIHNldCBUUkVFX0FERFJFU1NBQkxFIG9uIGEKCUJMS21vZGUgdHlwZSB0aGF0IHdvdWxkIG90aGVyd2lzZSBiZSByZXR1cm5lZCBpbiByZWdpc3RlcnMuCgpNb24gT2N0IDE2IDEyOjMyOjE5IDE5OTUgIEJyZW5kYW4gS2Vob2UgIDxicmVuZGFuQGxpc2EuY3lnbnVzLmNvbT4KCgkqIGcrKy5jIChXSVRITElCQyk6IE5ldyBtYWNyby4KCShtYWluKTogRGVjbGFyZSBzYXdfbGliYy4gIFVzZSBXSVRITElCQyBpZiBgLWxjJyB3YXMgdXNlZDsgc2V0CglzYXdfbGliYyBhbmQgcGFzcyBpdCBhdCB0aGUgZW5kIGlmIGl0IHdhcyBzZXQuCgpXZWQgT2N0IDExIDE2OjMwOjM0IDE5OTUgIEJyZW5kYW4gS2Vob2UgIDxicmVuZGFuQGxpc2EuY3lnbnVzLmNvbT4KCgkqIHBhcnNlLnkgKGZuLmRlZjEpOiBDYWxsIHNwbGl0X3NwZWNzX2F0dHJzIGluCglkZWNsbW9kcyBub3R5cGVfZGVjbGFyYXRvciBjYXNlLgoKU2VlIENoYW5nZUxvZy4xIGZvciBlYXJsaWVyIGNoYW5nZXMuCg==