MTk5OS0xMi0zMSAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGNwLXRyZWUuaCAoVkZfTk9STUFMX1ZBTFVFKTogUmVtb3ZlLgoJKiBjbGFzcy5jIChzdHJ1Y3QgYmFzZV9pbmZvKTogUmVtb3ZlIHZmaWVsZCwgdmZpZWxkcywgYW5kIHJ0dGkuCgkoc2V0X3ByaW1hcnlfYmFzZSk6IE5ldyBmdW5jdGlvbiwgc3BsaXQgb3V0IGZyb20gLi4uCgkoZmluaXNoX2Jhc2Vfc3RydWN0KTogLi4uIGhlcmUuICBSZW5hbWUgdG8gLi4uCgkoZGV0ZXJtaW5lX3ByaW1hcnlfYmFzZSk6IC4uLiB0aGlzLiAgU2ltcGxpZnkuCgkoY3JlYXRlX3Z0YWJsZV9wdHIpOiBUd2VhayBhY2NvcmRpbmdseS4KCShmaW5pc2hfc3RydWN0XzEpOiBTaW1wbGlmeS4KCgkqIGNwLXRyZWUuaCAoQ0xBU1NUWVBFX1ZCQVNFQ0xBU1NFUyk6IFVwZGF0ZSBkb2N1bWVudGF0aW9uLgoJKENMQVNTVFlQRV9OX0JBU0VDTEFTU0VTKTogTGlrZXdpc2UuCgkoQklORk9fRk9SX1ZCQVNFKTogTmV3IG1hY3JvLgoJKGdldF92YmFzZV90eXBlcyk6IENoYW5nZSBwcm90b3R5cGUuCgkqIGNsYXNzLmMgKGJ1aWxkX3ZiYXNlX3BhdGgpOiBVc2UgQklORk9fRk9SX1ZCQVNFLgoJKHByZXBhcmVfZnJlc2hfdnRhYmxlKTogTGlrZXdpc2UuCgkoZmluaXNoX3Z0YmxzKTogTGlrZXdpc2UuCgkoZ2V0X2NsYXNzX29mZnNldF8xKTogTGlrZXdpc2UuCgkobW9kaWZ5X2FsbF9pbmRpcmVjdF92dGFibGVzKTogTGlrZXdpc2UuCgkoYnVpbGRfdmJhc2VfcG9pbnRlcl9maWVsZHMpOiBMaWtld2lzZS4KCSogZGVjbC5jICh4cmVmX2Jhc2V0eXBlcyk6IERvbid0IHNldCBDTEFTU1RZUEVfVkJBU0VDTEFTU0VTIGhlcmUuCgkqIGluaXQuYyAoc29ydF9iYXNlX2luaXQpOiBVc2UgQklORk9fRk9SX1ZCQVNFLgoJKGV4cGFuZF9tZW1iZXJfaW5pdCk6IExpa2V3aXNlLgoJKiBzZWFyY2guYyAoZ2V0X2Jhc2VfZGlzdGFuY2UpOiBMaWtld2lzZS4KCShsb29rdXBfZmllbGRfcXVldWVfcCk6IExpa2V3aXNlLgoJKHZpcnR1YWxfY29udGV4dCk6IExpa2V3aXNlLgoJKGdldF92YmFzZV90eXBlcyk6IERvbid0IHJldHVybiBhIHZhbHVlLiAgU2V0CglDTEFTU1RZUEVfVkJBU0VDTEFTU0VTIGhlcmUuCgkqIHR5cGVjay5jIChnZXRfZGVsdGFfZGlmZmVyZW5jZSk6IFVzZSBCSU5GT19GT1JfVkJBU0UuCgoxOTk5LTEyLTMwICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogY2xhc3MuYyAoZml4dXBfaW5saW5lX21ldGhvZHMpOiBDbGVhciBDTEFTU1RZUEVfSU5MSU5FX0ZSSUVORFMuCgoxOTk5LTEyLTI5ICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogY2xhc3MuYyAoY3JlYXRlX3Z0YWJsZV9wdHIpOiBQdXQgdGhlIHZ0YWJsZSBhdCB0aGUgYmVnaW5uaW5nIG9mCgl0aGUgY2xhc3MsIG5vdCB0aGUgZW5kLCBpbiB0aGUgbmV3IEFCSS4KCSogdHJlZS5jIChwcm9wYWdhdGVfYmluZm9fb2Zmc2V0cyk6IERvIHRoZSByaWdodCB0aGluZyBmb3IgdGhlIG5ldwoJQUJJLgoKMTk5OS0xMi0yOSAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGNwLXRyZWUuaCAobGFuZ190eXBlKTogQWRkIG5lYXJseV9lbXB0eV9wLiAgQWRqdXN0IGR1bW15LgoJKENMQVNTVFlQRV9ORUFSTFlfRU1QVFlfUCk6IE5ldyBtYWNyby4KCSogY2xhc3MuYyAoY2hlY2tfYmFzZXMpOiBVcGRhdGUgQ0xBU1NUWVBFX05FQVJMWV9FTVBUWV9QLgoJKGNoZWNrX2ZpZWxkX2RlY2xzKTogTGlrZXdpc2UuCgkoY2hlY2tfYmFzZXNfYW5kX21lbWJlcnMpOiBMaWtld2lzZS4KCjE5OTktMTItMjggIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjcC10cmVlLmggKGRvX2lubGluZV9mdW5jdGlvbl9oYWlyKTogUmVtb3ZlLgoJKiBjbGFzcy5jIChsYXlvdXRfY2xhc3NfdHlwZSk6IE5ldyBmdW5jdGlvbiwgc3BsaXQgb3V0IGZyb20KCWZpbmlzaF9zdHJ1Y3RfMS4KCShmaXh1cF9wZW5kaW5nX2lubGluZSk6IExpa2V3aXNlLgoJKGZpeHVwX2lubGluZV9tZXRob2RzKTogTmV3IGZ1bmN0aW9uLgoJKiBtZXRob2QuYyAoZml4dXBfcGVuZGluZ19pbmxpbmUpOiBSZW1vdmUuCgkoZG9faW5saW5lX2Z1bmN0aW9uX2hhaXIpOiBMaWtld2lzZS4KCgkqIGRlY2wuYyAoQk9PTF9UWVBFX1NJWkUpOiBCb29scyBhbHdheXMgaGF2ZSBzaXplIGAxJyB1bmRlciB0aGUKCW5ldyBBQkkuCgoJKiBjcC10cmVlLmggKGxhbmdfdHlwZSk6IFJlcGxhY2UgYWJzdHJhY3RfdmlydHVhbHMgd2l0aCBwdXJlX3ZpcnR1YWxzLgoJKENMQVNTVFlQRV9BQlNUUkFDVF9WSVJUVUFMUyk6IFJlbmFtZSB0byAuLi4KCShDTEFTU1RZUEVfUFVSRV9WSVJUVUFMUyk6IC4uLiB0aGlzLgoJKGxhbmdfZGVjbF9mbGFncyk6IFJlcGxhY2UgYWJzdHJhY3RfdmlydHVhbCB3aXRoIHB1cmVfdmlydHVhbC4KCShERUNMX0FCU1RSQUNUX1ZJUlRVQUxfUCk6IFJlbmFtZSB0byAuLi4KCShERUNMX1BVUkVfVklSVFVBTF9QKTogLi4uIHRoaXMuCgkoZ2V0X2Fic3RyYWN0X3ZpcnR1YWxzKTogUmVuYW1lIHRvIC4uLgoJKGdldF9wdXJlX3ZpcnR1YWxzKTogLi4uIHRoaXMuCgkqIGNhbGwuYyAoYnVpbGRfbmV3X21ldGhvZF9jYWxsKTogUmVwbGFjZSBERUNMX1BVUkVfVklSVFVBTF9QIHdpdGgKCURFQ0xfQUJTVFJBQ1RfVklSVFVBTF9QLiAgUmVwbGFjZSBDTEFTU1RZUEVfQUJTVFJBQ1RfVklSVFVBTFMgd2l0aAoJQ0xBU1NUWVBFX1BVUkVfVklSVFVBTFMuCgkqIGNsYXNzLmMgKGJ1aWxkX3Z0YWJsZV9lbnRyeSk6IExpa2V3aXNlLgoJKGZpbmlzaF9zdHJ1Y3RfYml0cyk6IExpa2V3aXNlLiAgQ2FsbCBnZXRfcHVyZV92aXJ0dWFscywgbm90CglnZXRfYWJzdHJhY3RfdmlydHVhbHMuCgkoYnVpbGRfdnRibF9pbml0aWFsaXplcik6IExpa2V3aXNlLgoJKG92ZXJyaWRlX29uZV92dGFibGUpOiBMaWtld2lzZS4KCShjaGVja19tZXRob2RzKTogTGlrZXdpc2UuCgkqIGRlY2wuYyAoZHVwbGljYXRlX2RlY2xzKTogTGlrZXdpc2UuCgkocmVkZWNsYXJhdGlvbl9lcnJvcl9tZXNzYWdlKTogTGlrZXdpc2UuCgkobGFuZ19tYXJrX3RyZWUpOiBMaWtld2lzZS4KCSogZGVjbDIuYyAoZ3Jva19mdW5jdGlvbl9pbml0KTogTGlrZXdpc2UuCgkoaW1wb3J0X2V4cG9ydF92dGFibGUpOiBMaWtld2lzZS4KCShpbXBvcnRfZXhwb3JfY2xhc3MpOiBMaWtld2lzZS4KCSogdHlwZWNrMi5jIChhYnN0cmFjdF92aXJ0dWFsc19lcnJvcik6IExpa2V3aXNlLgoJKiB4cmVmLmMgKEdOVV94cmVmX21lbWJlcik6IExpa2V3aXNlLgoJKiBzZWFyY2guYyAoZ2V0X2Fic3RyYWN0X3ZpcnR1YWxzKTogUmVuYW1lIHRvIGdldF9wdXJlX3ZpcnR1YWxzLgoKMTk5OS0xMi0yNiAgWmFjayBXZWluYmVyZyAgPHphY2tAd29sZXJ5LmN1bWIub3JnPgoKCSogY3AtdHJlZS5oOiBSZXBsYWNlIEVOQUJMRV9DSEVDS0lORyB3aXRoIEVOQUJMRV9UUkVFX0NIRUNLSU5HCgl0aHJvdWdob3V0LgoKMTk5OS0xMi0yNiAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGRlY2wuYyAoc3RvcmVfcmV0dXJuX2luaXQpOiBVc2UgbW9kZSBvZiBvbGQgUlRMIGdlbmVyYXRlZCBmb3IKCURFQ0xfUkVTVUxULCBub3QgdGhlIG1vZGUgb2YgREVDTF9SRVNVTFQgaXRzZWxmLgoJKiBzZW1hbnRpY3MuYyAoZmluaXNoX25hbWVkX3JldHVybl92YWx1ZSk6IFNldCBERUNMX1VOSU5MSU5BQkxFCglmb3IgZnVuY3Rpb25zIHRoYXQgdXNlZCBuYW1lZCByZXR1cm4gdmFsdWVzLgoKMTk5OS0xMi0yNCAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIHNlbWFudGljcy5jIChleHBhbmRfYm9keSk6IFVzZQoJbm90ZV9kZWZlcnJhbF9vZl9kZWZpbmVkX2lubGluZV9mdW5jdGlvbi4KCjE5OTktMTItMjIgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBkdW1wLmMgKGRlcXVldWVfYW5kX2R1bXApOiBIYW5kbGUgQ1RPUl9TVE1Ucy4KCjE5OTktMTItMjIgIEFsZXhhbmRyZSBPbGl2YSAgPG9saXZhQGxzZC5pYy51bmljYW1wLmJyPgoKCSogZXJyb3IuYyAoZHVtcF9kZWNsKTogU3VwcG9ydCBuYW1lZCByZXR1cm4gdmFsdWVzLgoKMTk5OS0xMi0yMCAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGNwLXRyZWUuaCAoQ0xBU1NUWVBFX1ZGSUVMRF9QQVJFTlQpOiBVcGRhdGUgY29tbWVudHMuCgkoQ0xBU1NUWVBFX0hBU19QUklNQVJZX0JBU0VfUCk6IE5ldyBtYWNyby4KCShDTEFTU1RZUEVfUFJJTUFSWV9CSU5GTyk6IExpa2V3aXNlLgoJKiBjbGFzcy5jIChjaGVja19tZXRob2RzKTogRG9uJ3Qgc2V0IFRZUEVfSEFTX0NPTVBMRVhfSU5JVF9SRUYsCglUWVBFX05FRURTX0NPTlNUUlVDVElORywgYW5kIENMQVNTVFlQRV9OT05fQUdHUkVHQVRFIGhlcmUuCgkoY2hlY2tfYmFzZXNfYW5kX21lbWJlcnMpOiBTZXQgdGhlbSBoZXJlIGluc3RlYWQuCgkoY3JlYXRlX3Z0YWJsZV9wdHIpOiBOZXcgZnVuY3Rpb24sIHNwbGl0IG91dCBmcm9tIC4uLgoJKGZpbmlzaF9zdHJ1Y3RfMSk6IC4uLiBoZXJlLiAgVXNlIGl0LiAgVGlkeS4gIFVzZQoJQ0xBU1NUWVBFX0hBU19QUklNQVJZX0JBU0VfUCBhbmQgQ0xBU1NUWVBFX1BSSU1BUllfQklORk8uCgkqIHNlYXJjaC5jIChkZnNfaW5pdF92YmFzZV9wb2ludGVycyk6IEhhbmRsZSBzZWVpbmcgVFlQRV9WRklFTEQgYXMKCXRoZSBmaXJzdCBmaWVsZCBpbiB0aGUgY2xhc3MuCgkqIHRyZWUuYyAobGF5b3V0X2Jhc2V0eXBlcyk6IFVzZSBDTEFTU1RZUEVfTl9CQVNFQ0xBU1NFUy4gIEhhbmRsZQoJc2VlaW5nIFRZUEVfVkZJRUxEIGFzIHRoZSBmaXJzdCBmaWVsZCBpbiB0aGUgY2xhc3MuCgoJKiBjcC10cmVlLmggKFRZUEVfVklSVFVBTF9QKTogUmVuYW1lIHRvIC4uLgoJKFRZUEVfUE9MWU1PUlBISUNfUCk6IC4uLiB0aGlzLgoJKFRZUEVfVVNFU19DT01QTEVYX0lOSEVSSVRBTkNFKTogUmVuYW1lIHRvIC4uLgoJKFRZUEVfQkFTRV9DT05WU19NQVlfUkVRVUlSRV9DT0RFX1ApOiAuLi4gdGhpcy4KCShUUkVFX0NBTExTX05FVyk6IFJlbW92ZS4KCShUUkVFX01BTkdMRUQpOiBMaWtld2lzZS4KCSogY2FsbC5jIChidWlsZF92ZmllbGRfcmVmKTogVXNlIFRZUEVfQkFTRV9DT05WU19NQVlfUkVRVUlSRV9DT0RFX1AsCglhbmQgVFlQRV9QT0xZTU9SUEhJQ19QLgoJKiBjbGFzcy5jIChjaGVja19iYXNlcyk6IExpa2V3aXNlLgoJKGZpbmlzaF9iYXNlX3N0cnVjdCk6IExpa2V3aXNlLgoJKGZpbmlzaF9zdHJ1Y3RfYml0cyk6IExpa2V3aXNlLgoJKGNoZWNrX2Zvcl9vdmVycmlkZSk6IExpa2V3aXNlLgoJKGZpbmlzaF9zdHJ1Y3RfMSk6IExpa2V3aXNlLgoJKGdldF92ZmllbGRfbmFtZSk6IExpa2V3aXNlLgoJKiBkZWNsLmMgKHhyZWZfYmFzZXR5cGVzKTogTGlrZXdpc2UuCgkqIGRlY2wyLmMgKGltcG9ydF9leHBvcnRfY2xhc3MpOiBMaWtld2lzZS4KCShpbXBvcnRfZXhwb3J0X2RlY2wpOiBMaWtld2lzZS4KCSogZXJyb3IuYyAoZHVtcF9mdW5jdGlvbl9kZWNsKTogTGlrZXdpc2UuCgkqIHB0LmMgKGluc3RhbnRpYXRlX2NsYXNzX3RlbXBsYXRlKTogTGlrZXdpc2UuCgkqIHJlcG8uYyAocmVwb19pbmxpbmVfdXNlZCk6IExpa2V3aXNlLgoJKiBydHRpLmMgKGJ1aWxkX2hlYWRvZik6IExpa2V3aXNlLgoJKGdldF90aW5mb19mbl9keW5hbWljKTogTGlrZXdpc2UuCgkoYnVpbGRfeF90eXBlaWQpOiBMaWtld2lzZS4KCShnZXRfdGluZm9fdmFyKTogTGlrZXdpc2UuCgkoYnVpbGRfZHluYW1pY19jYXN0XzEpOiBMaWtld2lzZS4KCShzeW50aGVzaXplX3RpbmZvX2ZuKTogTGlrZXdpc2UuCgkqIHNlYXJjaC5jIChsb29rdXBfZmllbGRfMSk6IExpa2V3aXNlLgoJKGRmc19kZWJ1Z19tYXJrKTogTGlrZXdpc2UuCgkobWF5YmVfc3VwcHJlc3NfZGVidWdfaW5mbyk6IExpa2V3aXNlLgoJKiB0eXBlY2suYyAoYnVpbGRfY29tcG9uZW50X3JlZik6IExpa2V3aXNlLgoJKGJ1aWxkX2NvbXBvbmVudF9hZGRyKTogTGlrZXdpc2UuCgkqIHR5cGVjazIuYyAocHJvY2Vzc19pbml0X2NvbnN0cnVjdG9yKTogTGlrZXdpc2UuCgoxOTk5LTEyLTIwICBOYXRoYW4gU2lkd2VsbCAgPG5hdGhhbkBhY20ub3JnPgoKCSogdHlwZWNrLmMgKHN0cmlwX2FsbF9wb2ludGVyX3F1YWxzKTogTmV3IHN0YXRpYyBmdW5jdGlvbi4KCShidWlsZF9zdGF0aWNfY2FzdCk6IFVzZSBpdC4gRG9uJ3QgdXNlIGF0X2xlYXN0X2FzX3F1YWxpZmllZF9wLgoKMTk5OS0xMi0xNiAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGNwLXRyZWUuaCAoY3BfdHJlZV9pbmRleCk6IEFkZCBDUFRJX0RTT19IQU5ETEUuCgkoZHNvX2hhbmRsZV9ub2RlKTogTmV3IG1hY3JvLgoJKGZsYWdfdXNlX2N4YV9hdGV4aXQpOiBOZXcgdmFyaWFibGUuCgkoZGVjbGFyZV9nbG9iYWxfdmFyKTogTmV3IGZ1bmN0aW9uLgoJKHN0YXJ0X2Fub25fZnVuYyk6IFJlbW92ZSBkZWNsYXJhdGlvbi4KCShlbmRfYW5vbl9mdW5jKTogTGlrZXdpc2UuCgkqIGRlY2wuYyAoZ2V0X2F0ZXhpdF9ub2RlKTogTmV3IGZ1bmN0aW9uLCBzcGxpdCBvdXQgZnJvbQoJZGVzdHJveV9sb2NhbF9zdGF0aWMuICBIYW5kbGUgZmxhZ191c2VfY3hhX2F0ZXhpdC4KCShnZXRfZHNvX2hhbmRsZV9ub2RlKTogTGlrZXdpc2UuCgkoc3RhcnRfY2xlYW51cF9mbik6IFJlbmFtZWQgZnJvbSBzdGFydF9hbm9uX2Z1bmMuICBNb3ZlZCBoZXJlIGZyb20KCWV4Y2VwdC5jLiAgSGFuZGxlIGZsYWdfdXNlX2N4YV9hdGV4aXQuCgkoZW5kX2NsZWFudXBfZm4pOiBSZW5hbWVkIGZyb20gZW5kX2Fub25fZnVuYy4gIE1vdmVkIGhlcmUgZnJvbQoJZXhjZXB0LmMuCgkoZGVjbGFyZV9nbG9iYWxfdmFyKTogTmV3IHZhcmlhYmxlLgoJKGRlc3Ryb3lfbG9jYWxfc3RhdGljKTogSGFuZGxlIGZsYWdfdXNlX2N4YV9hdGV4aXQuCgkqIGRlY2wyLmMgKGZsYWdfdXNlX2N4YV9hdGV4aXQpOiBOZXcgdmFyaWFibGUuCgkobGFuZ19mX29wdGlvbnMpOiBMaWtld2lzZS4KCSogZXhjZXB0LmMgKHN0YXJ0X2Fub25fZnVuYyk6IFJlbW92ZS4KCShlbmRfYW5vbl9mdW5jKTogTGlla3dpc2UuCgkqIGxhbmctb3B0aW9ucy5oOiBBZGQgLWZ1c2UtY3hhLWF0ZXhpdCBhbmQgLWZuby11c2UtY3hhLWF0ZXhpdC4KCSogcnR0aS5jIChnZXRfdGluZm9fdmFyKTogVXNlIGRlY2xhcmVfZ2xvYmFsX3Zhci4KCjE5OTktMTItMTYgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjbGFzcy5jIChjaGVja19maWVsZF9kZWNscyk6IERvbid0IHJldHVybiBhIHZhbHVlLgoJKGF2b2lkX292ZXJsYXApOiBNb3ZlZCBoZXJlIGZyb20gdHJlZS5jLgoJKGJ1aWxkX2Jhc2VfZmllbGRzKTogTGlrZXdpc2UuCgkoY2hlY2tfYmFzZXMpOiBOZXcgZnVuY3Rpb24sIHNwbGl0IG91dCBmcm9tIGZpbmlzaF9iYXNlX3N0cnVjdC4KCShjaGVja19iYXNlc19hbmRfbWVtYmVycyk6IE5ldyBmdW5jdGlvbiwgc3BsaXQgb3V0IGZyb20KCWZpbmlzaF9zdHJ1Y3RfMS4KCShzdHJ1Y3QgYmFzZV9pbmZvKTogUmVtb3ZlIGNhbnRfaGF2ZV9kZWZhdWx0X2N0b3IsCgljYW50X2hhdmVfY29uc3RfY3RvciwgY2FudF9oYXZlX2Fzbl9yZWYuCgkoZmluaXNoX2Jhc2Vfc3RydWN0KTogU3BsaXQgc2VtYW50aWMgYW5hbHlzaXMgaW50byBjaGVja19iYXNlcy4KCShmaW5pc2hfc3RydWN0X21ldGhvZHMpOiBGaXggYm9ndXMgYXNzZXJ0aW9uLgoJKGNoZWNrX2ZpZWxkX2RlY2xzKTogQ2FsbCBmaW5pc2hfc3RydWN0X2Fub24gaGVyZS4KCShidWlsZF92YmFzZV9wb2ludGVyX2ZpZWxkcyk6IFVzZSBDTEFTU1RZUEVfTl9CQVNFQ0xBU1NFUy4KCShmaW5pc2hfc3RydWN0XzEpOiBVc2UgY2hlY2tfYmFzZXNfYW5kX21lbWJlcnMuICBSZW9yZ2FuaXplLgoJKiBjcC10cmVlLmggKENMQVNTVFlQRV9WQkFTRUNMQVNTRVMpOiBJbXByb3ZlIGRvY3VtZW50YXRpb24uCgkoYnVpbGRfYmFzZV9maWVsZHMpOiBEb24ndCBkZWNsYXJlLgoJKiB0cmVlLmMgKGF2b2lkX292ZXJsYXApOiBSZW1vdmUuCgkoYnVpbGRfYmFzZV9maWVsZHMpOiBMaWtld2lzZS4KCgkqIG9wdGltaXplLmMgKHN0cnVjdCBpbmxpbmVfZGF0YSk6IFJlbW92ZSBzY29wZV9zdG10LgoJKHJlbWFwX2Jsb2NrKTogRG9uJ3QgdXNlIGluc2VydF9ibG9ja19hZnRlcl9ub3RlLiAgRG9uJ3QgdXBkYXRlCglzY29wZV9zdG10LgoJKGV4cGFuZF9jYWxsX2lubGluZSk6IERvbid0IHVwZGF0ZSBzY29wZV9zdG10LgoJKG9wdGltaXplX2Z1bmN0aW9uKTogRG9uJ3QgaW5pdGlhbGl6ZSBzY29wZV9zdG10LgoJKiBzZW1hbnRpY3MuYyAoZXhwYW5kX3N0bXQpOiBTZXQgTk9URV9CTE9DSyBmb3IgbmV3bHkgZW1pdHRlZAoJTk9URV9JTlNOX0JMT0NLX0JFRy9OT1RFX0lOU05fQkxPQ0tfRU5EIG5vdGVzLgoKMTk5OS0xMi0xNSAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGNsYXNzLmMgKGhhbmRsZV91c2luZ19kZWNsKTogR2V0IFRZUEVfRklFTERTIGFuZCBUWVBFX01FVEhPRFMKCW91dCBvZiB0aGUgY2xhc3MsIHJhdGhlciB0aGFuIHRha2luZyB0aGVtIGFzIHBhcmFtZXRlcnMuCgkoYnVpbGRfdmJhc2VfcG9pbnRlcl9maWVsZHMpOiBNb3ZlIGhlcmUgZnJvbSB0cmVlLmMuCgkoYnVpbGRfdnRibF9vcl92YmFzZV9maWVsZCk6IE5ldyBmdW5jdGlvbi4KCShjaGVja19tZXRob2RzKTogTGlrZXdpc2UuCgkocmVtb3ZlX3plcm9fd2lkdGhfYml0ZmllbGRzKTogTGlrZXdpc2UuCgkoYWRkX3ZpcnR1YWxfZnVuY3Rpb24pOiBVc2UgdHJlZV9jb25zIGluc3RlYWQgb2YgdGVtcF90cmVlX2NvbnMuCgkoZGVsZXRlX2R1cGxpY2F0ZV9maWVsZHNfMSk6IFRpZHkuICBEb24ndCBkZWxldGUgZHVwbGljYXRlCglVU0lOR19ERUNMcyBoZXJlLgoJKGZpbmlzaF9zdHJ1Y3RfbWV0aG9kcyk6IEhhbmRsZSB0aGUgY2FzZSB3aGVyZSB0aGVyZSBhcmUgbm8KCW1ldGhvZHMgaGVyZS4KCShnZXRfYmFzZWZuZGVjbHMpOiBVc2UgdHJlZV9jb25zIGluc3RlYWQgb2YgdGVtcF90cmVlX2NvbnMuCgkoY2hlY2tfZmllbGRfZGVjbHMpOiBDYWxsIGRlbGV0ZV9kdXBsaWNhdGVfZmllbGRzIGhlcmUuCgkoZmluaXNoX3N0cnVjdF8xKTogVGlkeS4gIFVzZSBjaGVja19tZXRob2RzIGFuZAoJcmVtb3ZlX3plcm9fd2lkdGhfYml0ZmllbGRzLgoJKiBjcC10cmVlLmggKGJ1aWxkX3ZiYXNlX3BvaW50ZXJfZmllbGRzKTogUmVtb3ZlLgoJKiBkZWNsLmMgKGdyb2tkZWNsYXJhdG9yKTogVXNlIHRyZWVfY29ucyBpbnN0ZWFkIG9mCgl0ZW1wX3RyZWVfY29ucy4KCSogZGVjbDIuYyAocXVhbGlmaWVkX2xvb2t1cF91c2luZ19uYW1lc3BhY2UpOiBVc2UgdHJlZV9jb25zCglpbnN0ZWFkIG9mIHRlbXBfdHJlZV9jb25zLgoJKiBsZXguYyAoY29uc191cF9kZWZhdWx0X2Z1bmN0aW9uKTogUmVtb3ZlIGRlYWQgY29kZS4KCSogbWV0aG9kLmMgKGZpeHVwX3BlbmRpbmdfaW5saW5lKTogTmV3IGZ1bmN0aW9uLCBzcGxpdCBvdXQgZnJvbQkuLi4KCShkb19pbmxpbmVfZnVuY3Rpb25faGFpcik6IC4uLiBoZXJlLgoJKiB0cmVlLmMgKGJ1aWxkX3ZiYXNlX3BvaW50ZXJfZmllbGRzKTogUmVtb3ZlLgoKMTk5OS0xMi0xNSAgSmFzb24gTWVycmlsbCAgPGphc29uQGNhc2V5LmN5Z251cy5jb20+CgoJKiB0cmVlLmMgKHdhbGtfdHJlZSk6IFdhbGsgb3BlcmFuZCBzdWJ0cmVlcyBpbiBmb3J3YXJkIG9yZGVyLgoJKiBvcHRpbWl6ZS5jIChleHBhbmRfY2FsbF9pbmxpbmUpOiBMaWtld2lzZS4KCShvcHRpbWl6ZV9mdW5jdGlvbik6IEluaXRpYWxpemUgaWQtPnNjb3BlX3N0bXQgdG8gc29tZXRoaW5nIHVzZWZ1bC4KCShyZW1hcF9ibG9jayk6IEFzc3VtZSBpZC0+c2NvcGVfc3RtdCBoYXMgYSB1c2VmdWwgdmFsdWUuCgoxOTk5LTEyLTE1ICBOYXRoYW4gU2lkd2VsbCAgPG5hdGhhbkBhY20ub3JnPgoKCSogdHlwZWNrLmMgKGJ1aWxkX2NfY2FzdCk6IEV4cGFuZCB3YXJuaW5nIG1lc3NhZ2UuIE1vdmUgcG9pbnRlcgoJYWxpZ25tZW50IHdhcm5pbmcgdG8gYWZ0ZXIgdGhlIGNhc3QuIERvbid0IHdhcm4gYWJvdXQgcG9pbnRlcgoJYWxpZ25tZW50IHdoZW4gZ2l2ZW4gYSBwb2ludGVyIHRvIGluY29tcGxldGUuCgoxOTk5LTEyLTE1ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEBjeWdudXMuY29tPgoKCSogY3AtdHJlZS5oIChtYWtlX2FnZ3JfdHlwZSk6IERlY2xhcmUuCgkqIGxleC5jIChjcF9tYWtlX2xhbmdfdHlwZSk6IERvbid0IFNFVF9JU19BR0dSX1RZUEUuCgkobWFrZV9hZ2dyX3R5cGUpOiBOZXcuCgoJKiBkZWNsLmMgKGJ1aWxkX3R5cGVuYW1lX3R5cGUsIGluaXRfZGVjbF9wcm9jZXNzaW5nKTogVXNlIGl0LgoJKGJ1aWxkX3B0cm1lbWZ1bmNfdHlwZSwgeHJlZl90YWcpOiBMaWtld2lzZS4KCSogZXhjZXB0LmMgKGNhbGxfZWhfaW5mbyk6IExpa2V3aXNlLgoJKiBpbml0LmMgKGluaXRfaW5pdF9wcm9jZXNzaW5nKTogTGlrZXdpc2UuCgkqIHB0LmMgKHByb2Nlc3NfdGVtcGxhdGVfcGFybSwgbG9va3VwX3RlbXBsYXRlX2NsYXNzKTogTGlrZXdpc2UuCgkqIHJ0dGkuYyAoZXhwYW5kX2NsYXNzX2Rlc2MpOiBMaWtld2lzZS4KCSogc2VtYW50aWNzLmMgKGJlZ2luX2NsYXNzX2RlZmluaXRpb24sIGZpbmlzaF90eXBlb2YpOiBMaWtld2lzZS4KCSogdHJlZS5jIChjb3B5X3RlbXBsYXRlX3RlbXBsYXRlX3Bhcm0pOiBMaWtld2lzZS4KCjE5OTktMTItMTUgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIGNwLXRyZWUuZGVmIChURU1QTEFURV9QQVJNX0lOREVYKTogQ2FsY3VsYXRlIHNpemUgdXNpbmcKCXNpemVvZiAoc3RydWN0IHRyZWVfY29tbW9uKS4KCjE5OTktMTItMTQgIEphc29uIE1lcnJpbGwgIDxqYXNvbkBjYXNleS5jeWdudXMuY29tPgoKCSogb3B0aW1pemUuYyAoZXhwYW5kX2NhbGxfaW5saW5lKTogU2V0IEJMT0NLX0FCU1RSQUNUX09SSUdJTiBvbiB0aGUKCW91dGVybW9zdCBibG9jayB0byBwb2ludCB0byB0aGUgaW5saW5lZCBmdW5jdGlvbiBkZWNsLgoKCSogZXJyb3IuYyAoZHVtcF9kZWNsKTogb3BlcmF0b3I9PSwgbm90IG9wZXJhdG9yID09LgoJKG9wX3RvX3N0cmluZyk6IExpa2V3aXNlLgoKCSogZGVjbC5jIChjb21wdXRlX2FycmF5X2luZGV4X3R5cGUpOiBIYW5kbGUgbnVsbCBuYW1lLgoKCSogZGVjbDIuYyAoYW1iaWd1b3VzX2RlY2wpOiBGaXggdG8gbWF0Y2ggY29tbWVudC4KCShsb29rdXBfdXNpbmdfbmFtZXNwYWNlKTogQWRqdXN0LgoKCSogZGVjbDIuYyAoaW1wb3J0X2V4cG9ydF9jbGFzcyk6IERvbid0IGlnbm9yZSBkbGxpbXBvcnQuCgoxOTk5LTEyLTE0ICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogY2xhc3MuYyAoY2hlY2tfZmllbGRfZGVjbHMpOiBTcGxpdCBvdXQgZnJvbSAuLi4KCShmaW5pc2hfc3RydWN0XzEpOiAuLi4gaGVyZS4gIFVzZSBpdC4gIFRpZHkuCgoJKiBjcC10cmVlLmggKHJlbWFwX3NhdmVfZXhwcik6IEFkZCB3YWxrX3N1YnRyZWVzIHBhcmFtZXRlci4KCSogb3B0aW1pemUuYyAoY29weV9ib2R5X3IpOiBQYXNzIGl0LgoJKiB0cmVlLmMgKHJlbWFwX3NhdmVfZXhwcik6IENsZWFyIHdhbGtfc3VidHJlZXMgZm9yIGFuCglhbHJlYWR5LWhhbmRsZWQgU0FWRV9FWFBSLgoJKGNwX3Vuc2F2ZV9yKTogUGFzcyB3YWxrX3N1YnRyZWVzIHRvIHJlbWFwX3NhdmVfZXhwci4KCgkqIGR1bXAuYyAoZGVxdWV1ZV9hbmRfZHVtcCk6IER1bXAgREVDTF9OQU1FU1BBQ0VfQUxJQVMuCgkqIGlyLnRleGkgKERFQ0xfTkFNRVNQQUNFX0FMSUFTKTogRG9jdW1lbnQgaXQuCgoJKiBlcnJvci5jIChkdW1wX2V4cHIpOiBIYW5kbGUgRVhQUl9XSVRIX0ZJTEVfTE9DQVRJT04uCgoxOTk5LTEyLTE0ICBNdW1pdCBLaGFuICA8a2hhbkB4cmF5bGl0aC53aXNjLmVkdT4KCgkqIGNsYXNzLmMgKGZpbmlzaF9iYXNlX3N0cnVjdCk6IEFsbG93IG11bHRpcGxlIENPTSBiYXNlIGNsYXNzZXMKCWFzIHdlbGwgYXMgbm9uLUNPTSBiYXNlcyBhcyBsb25nIGFzIGl0J3Mgbm90IHRoZSBsZWZ0bW9zdC4KCjE5OTktMTItMTMgIE11bWl0IEtoYW4gIDxraGFuQHhyYXlsaXRoLndpc2MuZWR1PgoKCSogbGV4LmMgKHNhdmluZ19wYXJzZV90b19vYnN0YWNrKTogTmV3IGdsb2JhbC4KCShyZWluaXRfcGFyc2VfZm9yX2Jsb2NrKTogVXNlLgoJKHJlaW5pdF9wYXJzZV9mb3JfZXhwcik6IFVzZS4KCShjaGVja19uZXdsaW5lKTogVXNlLgoKMTk5OS0xMi0xMyAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIG9wdGltaXplLmMgKGluaXRpYWxpemVfaW5saW5lZF9wYXJhbWV0ZXJzKTogVGFrZSBGTiB0byB3aGljaCB0aGUKCXBhcmFtZXRlcnMgYmVsb25nIGFzIGFuIGFyZ3VtZW50LgoJKGV4cGFuZF9jYWxsX2lubGluZSk6IEV4cGFuZCBjYWxscyBpbnRvIHRoZSBwYXJhbWV0ZXIKCWluaXRpYWxpemF0aW9ucyBiZWZvcmUgcHVzaGluZyB0aGUgZnVuY3Rpb24gb250byB0aGUgbGlzdCBvZgoJZnVuY3Rpb25zIHdlIGFyZSBwcmVzZW50bHkgZXhwYW5kaW5nLgoKMTk5OS0xMi0xMSAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogY2xhc3MuYyAoZ2V0X3Z0YWJsZV9uYW1lKTogVXNlIGEgbGl0ZXJhbCBmb3JtYXQgc3RyaW5nIGFuZAoJVlRBQkxFX05BTUVfUFJFRklYIG1hY3JvIGluc3RlYWQgb2YgVlRBQkxFX05BTUVfRk9STUFULgoJKHByZXBhcmVfZnJlc2hfdnRhYmxlKTogTGlrZXdpc2UuCgoJKiBjcC10cmVlLmggKFZUQUJMRV9OQU1FX1BSRUZJWCk6IERlZmluZSB0aGlzIGluc3RlYWQgb2YKCVZUQUJMRV9OQU1FX0ZPUk1BVC4KCgkqIGRlY2wuYyAobWFrZV9ydGxfZm9yX2xvY2FsX3N0YXRpYyk6IFJlbW92ZSB1bnVzZWQgdmFyaWFibGUgYHR5cGUnLgoKCSogaW5pdC5jIChidWlsZF92ZWNfaW5pdCk6IEluaXRpYWxpemUgdmFyaWFibGUgYHRyeV9ib2R5Jy4KCgkqIGxleC5jICh5eWVycm9yKTogRG9uJ3QgY2FsbCBhIHZhcmlhZGljIGZ1bmN0aW9uIHdpdGggYQoJbm9uLWxpdGVyYWwgZm9ybWF0IHN0cmluZy4KCgkqIG9wdGltaXplLmMgKG9wdGltaXplX2Z1bmN0aW9uKTogQ2FsbCBtZW1zZXQsIG5vdCBiemVyby4KCgkqIHB0LmMgKGZvcl9lYWNoX3RlbXBsYXRlX3Bhcm1fcik6IEFkZCBzdGF0aWMgcHJvdG90eXBlLgoKMTk5OS0xMi0wOSAgQW5kcmVhcyBKYWVnZXIgIDxhakBzdXNlLmRlPgoKCSogZXhjZXB0LmMgKGV4cGFuZF90aHJvdyk6IEFkZCBzdGF0aWMgYXR0cmlidXRlIHRvIG1hdGNoCglwcm90b3R5cGUuCgoJKiBNYWtlZmlsZS5pbiAoc2VtYW50aWNzLm8pOiBBZGQgZGVwZW5kZW5jeSBvbiBvdXRwdXQuaC4KCSogc2VtYW50aWNzLmM6IEluY2x1ZGUgb3V0cHV0LmggZm9yIGRlY2xhcmF0aW9uIG9mCgltYWtlX2Z1bmN0aW9uX3J0bC4KCjE5OTktMTItMDkgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBkZWNsLmMgKGluaXRfZGVjbF9wcm9jZXNzaW5nKTogUmVlbmFibGUgaW5saW5pbmcgb24gdHJlZXMuCgkoZmluaXNoX2Z1bmN0aW9uKTogTGlrZXdpc2UuCgkqIGV4cHIuYyAoY3BsdXNfZXhwYW5kX2V4cHIpOiBEb24ndCBoYW5kbGUgQUdHUl9JTklUX0VYUFIgaGVyZS4KCSogc2VtYW50aWNzLmMgKHNpbXBsaWZ5X2FnZ3JfaW5pdF9leHBycyk6IE5ldyBmdW5jdGlvbi4KCShleHBhbmRfYm9keSk6IFVzZSBpdC4KCSogdHJlZS5jICh3YWxrX3RyZWUpOiBTcGVjaWFsLWNhc2UgVEFSR0VUX0VYUFJzIHNpbmNlIHRoZXkKCXNvbWV0aW1lcyBwcmVzZW50IHRoZSBzYW1lIHN1Yi10cmVlIHR3aWNlLgoKCSogZHVtcC5jIChkZXF1ZXVlX2FuZF9kdW1wKTogQWJicmV2aWF0ZSBgY2xhc3MnIGFzIGBjbHMnLCBub3QKCWBjc2wnLgoKCSogc2VtYW50aWNzLmMgKGZpbmlzaF9zd2l0Y2hfY29uZCk6IERvIGNvbnZlcnNpb25zIGhlcmUsIG5vdCAuLi4KCSogdHlwZWNrLmMgKGNfZXhwYW5kX3N0YXJ0X2Nhc2UpOiBIZXJlLgoKCSogc2VtYW50aWNzLmMgKGRvX3BvcGxldmVsKTogUmVtb3ZlIHVudXNlZCB2YXJpYWJsZS4KCjE5OTktMTItMDYgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiB0cmVlLmMgKHdhbGtfdHJlZSk6IERvbid0IHJlY3Vyc2UgaW50byBERUNMX0lOSVRJQUwgb3IgREVDTF9TSVpFCgl1bmxlc3Mgd2UncmUgZGVjbGFyaW5nIHRoZSB2YXJpYWJsZSBpbiBxdWVzdGlvbi4KCjE5OTktMTItMDYgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBkZWNsLmMgKGluaXRfZGVjbF9wcm9jZXNzaW5nKTogI2lmIDAgbGFzdCBwYXRjaC4KCShmaW5pc2hfZnVuY3Rpb24pOiBMaWtld2lzZS4KCjE5OTktMTItMDUgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBkZWNsLmMgKGluaXRfZGVjbF9wcm9jZXNzaW5nKTogU2V0IGZsYWdfaW5saW5lX3RyZWVzIGlmCgkhZmxhZ19ub19pbmxpbmUuCgoJKiBjcC10cmVlLmggKGNhbGxzX3NldGptcF9wKTogRGVjbGFyZS4KCSogZGVjbC5jIChmaW5pc2hfZnVuY3Rpb24pOiBNYXJrIGZ1bmN0aW9ucyB0aGF0IGNhbGwgc2V0am1wIGFzCgl1bmlubGluYWJsZS4KCSogb3B0aW1pemUuYyAoY2FsbHNfc2V0am1wX3IpOiBOZXcgZnVuY3Rpb24uCgkoY2FsbHNfc2V0am1wX3ApOiBMaWtld2lzZS4KCjE5OTktMTItMDQgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBvcHRpbWl6ZS5jIChleHBhbmRfY2FsbF9pbmxpbmUpOiBXcmFwIHRoZSBleHBhbmRlZCBjYWxsIGluIGFuCglFWFBSX1dJVEhfRklMRV9MT0NBVElPTiBub2RlIHRvIGdldCBjb3JyZWN0IGxpbmUgbnVtYmVycyBmb3IKCWlubGluZWQgZnVuY3Rpb25zLgoKCSogb3B0aW1pemUuYyAoaW5saW5lX2RhdGEpOiBSZW1vdmUgZm5zX3RvcC4gIEFkZCBzY29wZV9zdG10LiAgQWRkCglpbl90YXJnZXRfY2xlYW51cF9wLgoJKHJlbWFwX2RlY2wpOiBOZXcgZnVuY3Rpb24uCgkocmVtYXBfYmxvY2spOiBMaWtld2lzZS4KCShjb3B5X3Njb3BlX3N0bXQpOiBMaWtld2lzZS4KCShjb3B5X2JvZHlfcik6IFVzZSByZW1hcF9kZWNsIGFuZCBjb3B5X3Njb3BlX3N0bXQuCgkoY29weV9ib2R5KTogVXNlIFZBUlJBWV9UT1BfVFJFRS4KCShpbml0aWFsaXplX2lubGluZWRfcGFyYW1ldGVycyk6IExpa2V3aXNlLgoJKGRlY2xhcmVfcmV0dXJuX3ZhcmlhYmxlKTogTGlrZXdpc2UuCgkoaW5saW5hYmxlX2Z1bmN0aW9uX3ApOiBDaGVjayBmbGFnX2lubGluZV90cmVlcy4KCShleHBhbmRfY2FsbF9pbmxpbmUpOiBIYW5kbGUgU0NPUEVfU1RNVHMgYW5kIFRBUkdFVF9FWFBScwoJc3BlY2lhbGx5LiAgVXNlIFZBUlJBWV9QVVNIX1RSRUUuICBDcmVhdGUgYSBCTE9DSyBmb3IgdGhlCglwYXJhbWV0ZXJzIG9mIHRoZSBpbmxpbmVkIGZ1bmN0aW9uLgoJKG9wdGltaXplX2Z1bmN0aW9uKTogUHJldmVudCByZWN1cnNpb24gaW50byBwYXJ0aWFsbHkgY29tcGxldGUKCWZ1bmN0aW9ucy4KCgkqIGNwLXRyZWUuZGVmIChTQ09QRV9TVE1UKTogVGFrZSBvbmUgb3BlcmFuZC4KCSogY3AtdHJlZS5oIChTQ09QRV9TVE1UX0JMT0NLKTogTmV3IG1hY3JvLgoJKFNDT1BFX05VTExJRklFRF9QKTogUmVkZWZpbmUuCgkoU0NPUEVfTk9fQ0xFQU5VUFNfUCk6IE5ldyBtYWNyby4KCShhZGRfc2NvcGVfc3RtdCk6IENoYW5nZSBwcm90b3R5cGUuCgkqIGRlY2wuYyAocG9wbGV2ZWwpOiBUaWR5LiAgV2FybiBhYm91dCB1bnVzZWQgdmFyaWFibGVzIGhlcmUuCglSZWNvcmQgU0NPUEVfU1RNVF9CTE9DS3MuCgkoZmluaXNoX2Z1bmN0aW9uKTogS2VlcCBERUNMX0lOSVRJQUwgZm9yIGZ1bmN0aW9ucyB0aGF0IG1pZ2h0IGJlCglpbmxpbmVkLgoJKiBpci50ZXhpOiBEb2N1bWVudCBTQ09QRV9OT19DTEVBTlVQU19QLgoJKiBzZW1hbnRpY3MuYzogSW5jbHVkZSBydGwuaC4KCShhZGRfc2NvcGVfc3RtdCk6IFJldHVybiB0aGUgbmV3IHNjb3BlIHN0YXRlbWVudCBhbmQsIGZvciBhbgoJZW5kLW9mLXNjb3BlIHN0YXRlbWVudCwgaXRzIG1hdGNoaW5nIGJlZ2luIHN0YXRlbWVudC4gIERvbid0IHNldAoJU0NPUEVfTlVMTElGSUVEX1AuCgkoZG9fcHVzaGxldmVsKTogU2ltcGxpZnksIG5vdyB0aGF0IHdlIGFyZSBhbHdheXMKCWZ1bmN0aW9uLWF0LWEtdGltZS4KCShkb19wb3BsZXZlbCk6IExpa2V3aXNlLiAgUmVjb3JkIFNDT1BFX1NUTVRfQkxPQ0tzLgoJKGV4cGFuZF9zdG10KTogRG9uJ3QgY2FsbCBleHBhbmRfc3RhcnRfYmluZGluZ3Mgb3IKCWV4cGFuZF9lbmRfYmluZGluZ3MgZm9yIGEgc2NvcGUgd2l0aCBTQ09QRV9OT19DTEVBTlVQU19QIHNldC4KCSogdHJlZS5jIChjb3B5X3RyZWVfcik6IENsZWFyIFNDT1BFX1NUTVRfQkxPQ0sgcmF0aGVyIHRoYW4gc2V0dGluZwoJU0NPUEVfTlVMTElGSUVEX1AuCgkqIE1ha2VmaWxlLmluIChzZW1hbnRpY3Mubyk6IERlcGVuZCBvbiBSVExfSC4KCgkqIGRlY2wyLmMgKHBlbmRpbmdfc3RhdGljc191c2VkKTogTWFrZSBpdCBhIG1hY3JvLgoJKHNhdmVkX2lubGluZXNfdXNlZCk6IExpa2V3aXNlLgoJKGZpbmlzaF9zdGF0aWNfZGF0YV9tZW1iZXJfZGVjbCk6IFVzZSBWQVJSQVlfUFVTSF9UUkVFLgoJKG1hcmtfaW5saW5lX2Zvcl9vdXRwdXQpOiBMaWtld2lzZS4KCShzc2RmX2RlY2xzX3VzZWQpOiBSZW1vdmUuCgkoc3RhcnRfc3RhdGljX3N0b3JhZ2VfZHVyYXRpb25fZnVuY3Rpb24pOiBVc2UgVkFSUkFZX1BVU0hfVFJFRS4KCShnZW5lcmF0ZV9jdG9yX29yX2R0b3JfZnVuY3Rpb24pOiBBZGp1c3QgYWNjb3JkaW5nbHkuCgoxOTk5LTExLTI0ICBHZW9mZnJleSBLZWF0aW5nICA8Z2VvZmZrQGN5Z251cy5jb20+CgkgICAgR3JlZyBNY0dhcnkgIDxna21AZ251Lm9yZz4KCgkqIGRlY2wuYyAoZHVwbGljYXRlX2RlY2xzKTogTWVyZ2UKCURFQ0xfTk9fSU5TVFJVTUVOVF9GVU5DVElPTl9FTlRSWV9FWElULAoJREVDTF9OT19DSEVDS19NRU1PUllfVVNBR0UsIERFQ0xfTk9fTElNSVRfU1RBQ0suCgoxOTk5LTEyLTAyICBNaWtlIFN0dW1wICA8bXJzQHdycy5jb20+CgoJKiBpbml0LmMgKHBlcmZvcm1fbWVtYmVyX2luaXQpOiBIYW5kbGUgcGFyc2UgZXJyb3JzIGJldHRlci4KCjE5OTktMTItMDEgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjcC10cmVlLmggKG1pbl90cmVlX2NvbnMpOiBSZW1vdmUuCgkoc2NyYXRjaF9vdmxfY29ucyk6IExpa2V3aXNlLgoJKiBkZWNsLmMgKHNhdmVhYmxlX29ic3RhY2spOiBEb24ndCBkZWNsYXJlLgoJKGR1cGxpY2F0ZV9kZWNscyk6IFR3ZWFrIGVycm9yLW1lc3NhZ2UuCgkoaW5pdGlhbGl6ZV9sb2NhbF92YXIpOiBFeHBsaWNpdGx5IG1hcmsgdGhlIGRlZmluaXRpb24gYXMgc3RhdGljLgoJKGZpbmlzaF9mdW5jdGlvbik6IENhbGwgcGVybWFuZW50X2FsbG9jYXRpb24sIGp1c3Qgc28KCXRoYXQgdGhlIG1pZGRsZS1lbmQgc2VlcyB0aGUgb2JzdGFja3MgaXQgZXhwZWN0cy4KCShtYXJrX2NwX2Z1bmN0aW9uX2NvbnRleHQpOiBMaWtld2lzZS4KCSogaW5pdC5jIChidWlsZF9uZXcpOiBEb24ndCB1c2UgbWluX3RyZWVfY29ucy4KCSogbGV4LmMgKHBlcm1hbmVudF9vYnN0YWNrKTogRG9uJ3QgZGVjbGFyZS4KCShjdXJyZW50X29ic3RhY2ssIHNhdmVhYmxlX29ic3RhY2spOiBMaWtld2lzZS4KCSogc3Bldy5jIChjdXJyZW50X29ic3RhY2ssIHNhdmVhYmxlX29ic3RhY2spOiBMaWtld2lzZS4KCSogdHJlZS5jIChjdXJyZW50X29ic3RhY2ssIHNhdmVhYmxlX29ic3RhY2spOiBMaWtld2lzZS4KCShzY3JhdGNoX292bF9jb25zKTogUmVtb3ZlLgoJKGJ1aWxkX21pbl9udCk6IERvbid0IG1lc3Mgd2l0aCBvYnN0YWNrcy4KCShidWlsZF9taW4pOiBMaWtld2lzZS4KCShtaW5fdHJlZV9jb25zKTogUmVtb3ZlCgkqIHR5cGVjay5jIChidWlsZF9jb21wb25lbnRfcmVmKTogRG9uJ3QgdXNlIHNjcmF0Y2hfb3ZsX2NvbnMuCgkoYnVpbGRfeF9mdW5jdGlvbl9jYWxsKTogTGlrZXdpc2UuCgkoYnVpbGRfY19jYXN0KTogRG9uJ3QgdXNlIG1pbl90cmVlX2NvbnMuCgoxOTk5LTExLTI5ICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogcHQuYyAodHN1YnN0X2RlY2wpOiBSb2J1c3RpZnkuCgoxOTk5LTExLTI3ICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogZGVjbDIuYyAoZmluaXNoX2ZpbGUpOiBDYWxsIGV4cGFuZF9ib2R5IGZvciBpbmxpbmUgZnVuY3Rpb25zCgl0aGF0IHdpbGwgYmUgd3JpdHRlbiBvdXQgYnV0IHRoYXQgZG8gbm90IHlldCBoYXZlIFJUTC4KCSogc2VtYW50aWNzLmMgKGV4cGFuZF9ib2R5KTogRG8gbm90IGdlbmVyYXRlIFJUTCBGb3IgaW5saW5lCglmdW5jdGlvbnMgdGhhdCBkbyBub3QgeWV0IG5lZWQgdG8gYmUgd3JpdHRlbiBvdXQuCgoxOTk5LTExLTI1ICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogTWFrZS1sYW5nLmluIChDWFhfU1JDUyk6IEFkZCBvcHRpbWl6ZS5jLgoJKiBNYWtlZmlsZS5pbiAoQ1hYX09CSlMpOiBBZGQgb3B0aW1pemUuby4KCShDWFhfVFJFRV9IKTogQWRkIHNwbGF5LXRyZWUuaCwgc3lzdGVtLmgsIGFuZCAkKENPTkZJR19IKS4KCShzcGV3Lm8sIGxleC5vLCBkZWNsLm8sIGRlY2wyLm8sIHR5cGVjazIubywgdHlwZWNrLm8pOiBBZGp1c3QuCgkoY2xhc3MubywgY2FsbC5vLCBmcmllbmQubywgaW5pdC5vLCBtZXRob2QubywgY3Z0Lm8pOiBMaWtld2lzZS4KCShzZWFyY2gubywgdHJlZS5vLCBwdHJlZS5vLCBydHRpLm8sIGV4Y2VwdC5vLCBleHByLm8pOiBMaWtld2lzZS4KCSh4cmVmLm8sIHB0Lm8sIGVycm9yLm8sIGVycmZuLm8sIHJlcG8ubywgc2VtYW50aWNzLm8pOiBMaWtld2lzZS4KCShkdW1wLm8pOiBMaWtld2lzZS4KCShvcHRpbWl6ZS5vKTogTmV3IHRhcmdldC4KCSogY2xhc3MuYzogRG9uJ3QgaW5jbHVkZSBzcGxheS10cmVlLmguCgkqIGNwLXRyZWUuZGVmIChDVE9SX0NPTVBMRVRFKTogUmVuYW1lIHRvIENUT1JfU1RNVC4KCSogY3AtdHJlZS5oOiBJbmNsdWRlIHNwbGF5LXRyZWUuaC4KCShERUNMX1VOSU5MSU5BQkxFKTogTmV3IG1hY3JvLgoJKENUT1JfQkVHSU5fUCwgQ1RPUl9FTkRfUCk6IE5ldyBtYWNyb3MuCgkoZmxhZ19pbmxpbmVfdHJlZXMpOiBOZXcgdmFyaWFibGUuCgkobG9jYWxfdmFyaWFibGVfcCk6IE5ldyBmdW5jdGlvbi4KCShub25zdGF0aWNfbG9jYWxfZGVjbF9wKTogTGlrZXdpc2UuCgkob3B0aW1pemVfZnVuY3Rpb24pOiBMaWtld2lzZS4KCShjcGx1c191bnNhdmVfZXhwcl9ub3cpOiBSZW1vdmUuCgkoY29weV90cmVlX3IpOiBEZWNsYXJlLgoJKHJlbWFwX3NhdmVfZXhwcik6IExpa2V3aXNlLgoJKiBkZWNsLmMgKGxvY2FsX3ZhcmlhYmxlX3ApOiBEb24ndAoJbWFrZSBpdCBzdGF0aWMuCgkobG9jYWxfdmFyaWFibGVfcF93YWxrZm4pOiBOZXcgZnVuY3Rpb24uCgkobWFrZV9ydGxfZm9yX2xvY2FsX3N0YXRpYyk6IFJlbW92ZSBjb2RlIHRvIHRyeSB0byBhdm9pZCB3cml0aW5nCglvdXQgc3RhdGljIGNvbnN0YW50cy4KCShlbWl0X2xvY2FsX3Zhcik6IEZpeCBpbmRlbnRhdGlvbi4KCShub25zdGF0aWNfbG9jYWxfZGVjbF9wKTogTmV3IGZ1bmN0aW9uLgoJKGNoZWNrX2RlZmF1bHRfYXJndW1lbnQpOiBVc2UgbG9jYWxfdmFyaWFibGVfcF93YWxrZm4sIG5vdAoJbG9jYWxfdmFyaWFibGVfcCwgd2hlbiB3YWxraW5nIHRoZSB0cmVlLgoJKHN0YXJ0X2Z1bmN0aW9uKTogU2V0IHRoZSBERUNMX0NPTlRFWFQgZm9yIGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkCglsYWJlbHMuCgkoZmluaXNoX2NvbnN0cnVjdG9yX2JvZHkpOiBVc2UgQ1RPUl9TVE1UIHRvIG1hcmsgdGhlIGVuZCBvZiBhCgljb25zdHJ1Y3Rvci4KCSogZGVjbDIuYzogRG9uJ3QgaW5jbHVkZSBzcGxheS10cmVlLmguCgkoZmxhZ19pbmxpbmVfdHJlZXMpOiBEZWZpbmUuCgkqIGR1bXAuYzogRG9uJ3QgaW5jbHVkZQoJc3BsYXktdHJlZS5oLgoJKiBleGNlcHQuYyAoZXhwYW5kX2VuZF9jYXRjaF9ibG9jayk6IEZpeCBjb21tZW50IGZvcm1hdHRpbmcuCgkoZXhwYW5kX2VuZF9laF9zcGVjKTogU2V0IERFQ0xfQ09OVEVYVCBvbiB0ZW1wb3JhcnkgdmFyaWFibGVzLgoJKGV4cGFuZF90aHJvdyk6IFRpZHkgY29tbWVudC4KCSogaW5pdC5jIChidWlsZF92ZWNfZGVsZXRlXzEpOiBVc2UgY3JlYXRlX3RlbXBvcmFyeV92YXIuCgkqIGxleC5jIChjcGx1c190cmVlX2NvZGVfdHlwZSk6IE1ha2UgaXQgc3RhdGljLgoJKGNwbHVzX3RyZWVfY29kZV9sZW5ndGgpOiBMaWtld2lzZS4KCShjcGx1c190cmVlX2NvZGVfbmFtZSk6IExpa2V3aXNlLgoJKiBvcHRpbWl6ZS5jOiBOZXcgZmlsZS4KCSogc2VtYW50aWNzLmMgKGZpbmlzaF9nb3RvX3N0bXQpOiBTZXQgREVDTF9VTkxJTkFCTEUgZm9yIGZ1bmN0aW9ucwoJd2l0aCBjb21wdXRlZCBnb3Rvcy4KCShzZXR1cF92dGJsX3B0cik6IE1hcmsgdGhlIGJlZ2lubmluZ3Mgb2YgY29uc3RydWN0b3JzIHdpdGgKCUNUT1JfU1RNVC4KCShleHBhbmRfc3RtdCk6IEhhbmRsZSBDVE9SX1NUTVQsIG5vdCBDVE9SX0NPTVBMRVRFLgoJKGV4cGFuZF9ib2R5KTogQ2FsbCBvcHRpbWl6ZV9mdW5jdGlvbi4gIFNhdmUgYm9kaWVzIGlmIHdlJ3JlIGRvaW5nCglpbmxpbmluZyBvbiB0cmVlcy4KCSogdHJlZS5jOiBEb24ndCBpbmNsdWRlIHNwbGF5LXRyZWUuaC4gIEluY2x1ZGUgaW5zbi1jb25maWcuaCBhbmQKCWludGVncmF0ZS5oLgoJKGNvcHlfdHJlZV9yKTogTWFrZSBpdCBwdWJsaWMuCgkoc3RhdGVtZW50X2NvZGVfcCk6IE5ldyBmdW5jdGlvbi4KCShtYXJrX2xvY2FsX2Zvcl9yZW1hcF9yKTogTGlrZXdpc2UuCgkoY3BfdXNhdmVfcik6IExpa2V3aXNlLgoJKGNwX3Vuc2F2ZSk6IExpa2V3aXNlLgoJKGJ1aWxkX2NwbHVzX25ldyk6IFNldCBERUNMX0NPTlRFWFQgZm9yIHRlbXBvcmFyeSB2YXJpYWJsZXMuCgkod2Fsa190cmVlKTogV2FsayBpbnRvIGBzJyBjbGFzcyBub2Rlcy4gIFdhbGsgc3RhdGVtZW50IGNoYWlucy4KCShjb3B5X3RyZWVfcik6IEhhbmRsZSAncycgY2xhc3Mgbm9kZXMuICBSZXN0b3JlIGNoYWlucyBmb3IKCXN0YXRlbWVudHMuICBOdWxsaWZ5IHNjb3Blcy4gIERvbid0IGNvcHkgdHlwZXMuCgkoaW5pdF90cmVlKTogU2V0IGxhbmdfdW5zYXZlIHRvIGNwX3Vuc2F2ZS4KCShyZW1hcF9zYXZlX2V4cHIpOiBEZWZpbmUuCgkqIGlyLnRleGk6IERvY3VtZW50IENUT1JfU1RNVC4KCjE5OTktMTEtMjQgIEphc29uIE1lcnJpbGwgIDxqYXNvbkBjYXNleS5jeWdudXMuY29tPgoKCSogc2VhcmNoLmMgKG5vdGVfZGVidWdfaW5mb19uZWVkZWQpOiBEbyBwZXJmb3JtIHRoaXMgb3B0aW1pemF0aW9uCglmb3IgZHdhcmYyLgoJKG1heWJlX3N1cHByZXNzX2RlYnVnX2luZm8pOiBMaWtld2lzZS4gIFN0YXJ0IGJ5IGNsZWFyaW5nCglUWVBFX0RFQ0xfU1VQUFJFU1NfREVCVUcuCgoxOTk5LTExLTI0ICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogcHQuYyAodHN1YnN0X2RlY2wpOiBDb3B5IFRSRUVfQVNNX1dSSVRURU4gZm9yIFZBUl9ERUNMcy4KCgkqIGRlY2wyLmMgKGZpbmlzaF92dGFibGVfdmFyZGVjbCk6IERvbid0IHBydW5lIHZ0YWJsZXMgaGVyZS4KCjE5OTktMTEtMjMgIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIGRlY2wuYyAocHVzaGRlY2wsIGdyb2tkZWNsYXJhdG9yKTogRG9uJ3QgY2FsbCBhIHZhcmlhZGljCglmdW5jdGlvbiB3aXRoIGEgbm9uLWxpdGVyYWwgZm9ybWF0IHN0cmluZy4KCgkqIGxleC5jIChkb19pZGVudGlmaWVyKTogTGlrZXdpc2UuCgoJKiB0eXBlY2suYyAoYnVpbGRfdW5hcnlfb3ApOiBMaWtld2lzZS4KCjE5OTktMTEtMjMgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjcC10cmVlLmggKERFQ0xfTkVFREVEX1ApOiBUd2VhayB0byBtYXRjaCBkb2N1bWVudGF0aW9uLgoKMTk5OS0xMS0yMiAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGNwLXRyZWUuZGVmIChDVE9SX0NPTVBMRVRFKTogTmV3IHRyZWUgbm9kZS4KCSogZGVjbC5jIChmaW5pc2hfY29uc3RydWN0b3JfYm9keSk6IEFkZCBpdCwgdG8gbWFyayB0aGUgZW5kIG9mIHRoZQoJY29uc3RydWN0b3IuCgkoZmluaXNoX2Z1bmN0aW9uKTogRG9uJ3QgY2FsbCBlbmRfcHJvdGVjdF9wYXJ0aWFscyBoZXJlLgoJKiBpci50ZXhpIChDVE9SX0NPTVBMRVRFKTogRG9jdW1lbnQgaXQuCgkqIHNlbWFudGljcy5jIChleHBhbmRfc3RtdCk6IEhhbmRsZSBpdC4KCgkqIGNwLXRyZWUuZGVmIChGVU5DVElPTl9OQU1FKTogTmV3IHRyZWUgbm9kZS4KCSogY3AtdHJlZS5oIChjdXJyZW50X2Z1bmN0aW9uX25hbWVfZGVjbGFyZWQpOiBUd2VhayBkb2N1bWVudGF0aW9uLgoJKGxhbmdfZGVjbF9mbGFncyk6IEFkZCBwcmV0dHlfZnVuY3Rpb25fcCwgYWRqdXN0IGR1bW15LgoJKERFQ0xfUFJFVFRZX0ZVTkNUSU9OX1ApOiBOZXcgbWFjcm8uCgkqIGRlY2wuYyAoY3BfZmluaXNoX2RlY2wpOiBIYW5kbGUgZGVjbGFyYXRpb25zIG9mIF9fRlVOQ1RJT05fXywKCWV0Yy4sIGluIGEgdGVtcGxhdGUgZnVuY3Rpb24uICBVc2UgYXRfZnVuY3Rpb25fc2NvcGVfcCBpbnN0ZWFkIG9mCglleHBhbmRpbmcgaXQgaW5saW5lLgoJKiBwdC5jICh0c3Vic3RfZGVjbCk6IEhhbmRsZSBERUNMX1BSRVRUWV9GVU5DVElPTl9QIGRlY2xhcmF0aW9ucwoJc3BlY2lhbGx5LgoJKHRzdWJzdCk6IEhhbmRsZSBGVU5DVElPTl9OQU1FLgoJKHRzdWJzdF9jb3B5KTogTGlrZXdpc2UuCgkoaW5zdGFudGlhdGVfZGVjbCk6IFByZXZlbnQgcmVkZWNsYXJhdGlvbnMgb2YgX19QUkVUVFlfRlVOQ1RJT05fXywKCWV0Yy4gaW4gaW5zdGFudGlhdGlvbi4KCSogc2VtYW50aWNzLmMgKGJlZ2luX2NvbXBvdW5kX3N0bXQpOiBEZWNsYXJlIF9fRlVOQ1RJT05fXywgZXRjLiwKCWV2ZW4gaW4gdGVtcGxhdGUgZnVuY3Rpb25zLgoJKHNldHVwX3Z0YmxfcHRyKTogRG9uJ3QgZGVjbGFyZSBfX1BSRVRUWV9GVU5DVElPTiBpbiB0aGUKCWNvbmRpdGlvbmFsIHNjb3BlIGF0IHRoZSB0b3Agb2YgYSBkZXN0cnVjdG9yLgoKCSogZXJyb3IuYyAoZHVtcF9mdW5jdGlvbl9kZWNsKTogVXNlIGBbIHdpdGggLi4uIF0nIHN5bnRheCBmb3IKCXNwZWNpYWxpemF0aW9ucyB0b28uCgoxOTk5LTExLTIyICBOYXRoYW4gU2lkd2VsbCAgPG5hdGhhbkBhY20ub3JnPgoKCSogc2VtYW50aWNzLmMgKGZpbmlzaF91bmFyeV9vcF9leHByKTogT25seSBzZXQgVFJFRV9ORUdBVEVEX0lOVAoJd2hlbiBhY3R1YWxseSBuZWdhdGl2ZS4KCgkqIHR5cGVjay5jIChjb252ZXJ0X2Zvcl9hc3NpZ25tZW50KTogRXhwYW5kIGNvbW1lbnQgYWJvdXQKCXN0cmFuZ2UgTlVMTCBjaGVjaywgbW92ZWQgZnJvbSAuLi4KCShjb252ZXJ0X2Zvcl9pbml0aWFsaXphdGlvbik6IC4uLiBoZXJlLiBSZW1vdmUgdW5uZWVkZWQKCWNvZGUuCgoxOTk5LTExLTIxICBBbGV4YW5kcmUgT2xpdmEgIDxvbGl2YUBsc2QuaWMudW5pY2FtcC5icj4KCgkqIGNwLXRyZWUuaCAoYnVpbGRfdmVjX2RlbGV0ZSk6IFJlbW92ZSBgYXV0b19kZWxldGUnIGFyZ3VtZW50LgoJKiBpbml0LmMgKGJ1aWxkX3ZlY19kZWxldGUsIGJ1aWxkX3ZlY19kZWxldGVfMSk6IExpa2V3aXNlLgoJQWx3YXlzIGRlc3RydWN0IHZpcnR1YWwgYmFzZXMgb2YgYXJyYXkgY29tcG9uZW50cywgYnV0IG5ldmVyCglkZWxldGUgdGhlbS4KCShidWlsZF92ZWNfaW5pdCk6IEFkanVzdCBpbnZvY2F0aW9ucy4KCShidWlsZF9kZWxldGUpOiBMaWtld2lzZS4KCSogZGVjbDIuYyAoZGVsZXRlX3Nhbml0eSk6IExpa2V3aXNlLgoKMTk5OS0xMS0xOSAgTmF0aGFuIFNpZHdlbGwgIDxuYXRoYW5AYWNtLm9yZz4KCgkqIGNwLXRyZWUuaCAoZ3Jva19tZXRob2RfcXVhbHMpOiBSZXR1cm4gdGhpcyBwb2ludGVyIHF1YWxpZmllcnMuCgkqIGRlY2wuYyAoZ3Jva2RlY2xhcmF0b3IpOiBBZGp1c3QgY2FsbHMgdG8gZ3Jva19tZXRob2RfcXVhbHMuCgkqIGRlY2wyLmMgKGdyb2tfbWV0aG9kX3F1YWxzKTogQWNjZXB0IGByZXN0cmljdCcgYXMgYXBwbHlpbmcgdG8KCXRoZSBvYmplY3QgcG9pbnRlci4gUmV0dXJuIHN1Y2ggcXVhbGlmaWVycy4KCShncm9rY2xhc3Nmbik6IEFwcGx5IHRoaXMgcG9pbnRlciBxdWFsaWZpZXJzLiBDbGVhbnVwIHVudXNlZAoJdmFyaWFibGVzLgoKMTk5OS0xMS0xOCAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGV4Y2VwdC5jIChleHBhbmRfZW5kX2NhdGNoX2Jsb2NrKTogRml4IHR5cG8uCgkoZXhwYW5kX2V4Y2VwdGlvbl9ibG9ja3MpOiBTaW1wbGlmeS4gIERvbid0IGNhbGwKCWV4cGFuZF9sZWZ0b3Zlcl9jbGVhbnVwcy4KCjE5OTktMTEtMTUgIEphc29uIE1lcnJpbGwgIDxqYXNvbkBjYXNleS5jeWdudXMuY29tPgoKCSogY3AtdHJlZS5oLCBkZWNsLmMgKGNvbXB1dGVfYXJyYXlfaW5kZXhfdHlwZSk6IE1ha2Ugbm9uc3RhdGljLgoJKiBwdC5jICh0c3Vic3QsIGNhc2UgSU5URUdFUl9UWVBFKTogQ2FsbCBpdC4KCUNoZWNrIHVzZXNfdGVtcGxhdGVfcGFybXMuCgoJKiBjbGFzcy5jIChmaW5pc2hfc3RydWN0KTogSWYgd2UncmUgYSBsb2NhbCBjbGFzcyBpbiBhIHRlbXBsYXRlCglmdW5jdGlvbiwgYWRkIGEgVEFHX0RFRk4uCgkqIHB0LmMgKGxvb2t1cF90ZW1wbGF0ZV9jbGFzcyk6IElmIHRoaXMgaXMgYSBsb2NhbCBjbGFzcyBpbiBhCgl0ZW1wbGF0ZSBmdW5jdGlvbiwgY2FsbCBwdXNodGFnLgoJKHRzdWJzdF9leHByLCBjYXNlIFRBR19ERUZOKTogSGFuZGxlIGNsYXNzZXMsIHRvby4KCglFbWl0IGRlYnVnIGluZm8gd2l0aCB0aGUgdnRhYmxlLgoJKiBzZWFyY2guYyAobWF5YmVfc3VwcHJlc3NfZGVidWdfaW5mbyk6IE5ldyBmdW5jdGlvbi4uLgoJKiBjbGFzcy5jIChmaW5pc2hfc3RydWN0XzEpOiAuLi5zcGxpdCBvdXQgZnJvbSBoZXJlLgoJKiBjcC10cmVlLmg6IERlY2xhcmUgaXQuCgkqIGRlY2wyLmMgKGZpbmlzaF92dGFibGVfdmFyZGVjbCk6IE92ZXJyaWRlIFRZUEVfREVDTF9TVVBQUkVTU19ERUJVRwoJaWYgd2UncmUgd3JpdGluZyBvdXQgdGhlIHZ0YWJsZS4KCSogZGVjbC5jLCBzZWFyY2guYyAoZGZzX2RlYnVnX21hcmssIGRmc19kZWJ1Z191bm1hcmtlZF9wLAoJbm90ZV9kZWJ1Z19pbmZvX25lZWRlZCk6ICNpZiAwIG91dC4KCjE5OTktMTEtMTQgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjcC10cmVlLmggKERFQ0xfTE9DQUxfRlVDTlRJT05fUCk6IE5ldyBtYWNyby4KCSogY2FsbC5jIChlcXVhbF9mdW5jdGlvbnMpOiBVc2UgREVDTF9MT0NBTF9GVUNOVElPTl9QLCBub3QKCVRSRUVfUEVSTUFORU5ULgoJKiBkZWNsLmMgKHB1c2hkZWNsKTogU2V0IERFQ0xfTE9DQUxfRlVOQ1RJT05fUC4KCSogZGVjbDIuYyAobG9va3VwX2FyZ19kZXBlbmRlbnQpOiBVc2UgaXQuCgoJKiBjcC10cmVlLmggKGNwX2ZpbmlzaF9kZWNsKTogQ2hhbmdlIHByb3RvdHlwZS4KCShmaW5pc2hfc3RhdGljX2RhdGFfbWVtYmVyX2RlY2wpOiBMaWtld2lzZS4KCShwdXNoX3Blcm1hbmVudF9vYnN0YWNrKTogUmVtb3ZlIGRlY2xhcmF0aW9uLgoJKHB1c2hfZXhwcmVzc2lvbl9vYnN0YWNrKTogTGlrZXdpc2UuCgkocHVzaF9zY3JhdGNoX29ic3RhY2spOiBMaWtld2lzZS4KCShERUNMX1RFTVBMQVRFX1BBUk1fUCk6IFJvYnVzdGlmeS4KCShTRVRfREVDTF9URU1QTEFURV9QQVJNX1ApOiBOZXcgbWFjcm8uCgkqIGNsYXNzLmMgKGFkZF9tZXRob2QpOiBEb24ndCBtYW5pcHVsYXRlIG9ic3RhY2tzLgoJKGZpbmlzaF92dGJscyk6IExpa2V3aXNlLgoJKiBjdnQuYyAoYnVpbGRfdXBfcmVmZXJlbmNlKTogQWRqdXN0IGNhbGxzIHRvIGNwX2ZpbmlzaF9kZWNsLgoJKiBkZWNsLmMgKGJpbmRpbmdfZm9yX25hbWUpOiBEb24ndCBtYW5pcHVsYXRlIG9ic3RhY2tzLgoJKG1heWJlX3B1c2hfdG9fdG9wX2xldmVsKTogTGlrZXdpc2UuCgkocG9wX2Zyb21fdG9wX2xldmVsKTogTGlrZXdpc2UuCgkoZHVwbGljYXRlX2RlY2xzKTogTGlrZXdpc2UuCgkocHVzaGRlY2wpOiBMaWtld2lzZS4KCShpbXBsaWNpdGx5X2RlY2xhcmUpOiBMaWtld2lzZS4KCShidWlsZF90eXBlbmFtZV90eXBlKTogTGlrZXdpc2UuCgkoc3RhcnRfZGVjbCk6IExpa2V3aXNlLgoJKGNwX2ZpbmlzaF9kZWNsKTogTGlrZXdpc2UuCgkoZmluaXNoX2RlY2wpOiBMaWtld2lzZS4KCShkZXN0cm95X2xvY2FsX3N0YXRpYyk6IExpa2V3aXNlLgoJKGV4cGFuZF9zdGF0aWNfaW5pdCk6IExpa2V3aXNlLgoJKGNvbXBsZXRlX2FycmF5X3R5cGUpOiBMaWtld2lzZS4KCShncm9rdmFyZGVjbCk6IExpa2V3aXNlLgoJKGJ1aWxkX3B0cm1lbWZuY190eXBlKTogTGlrZXdpc2UuCgkoZ3Jva2RlY2xhcmF0b3IpOiBMaWtld2lzZS4KCSh4cmVmX3RhZyk6IExpa2V3aXNlLgoJKHhyZWZfYmFzZXR5cGVzKTogTGlrZXdpc2UuCgkoc3RhcnRfZW51bSk6IExpa2V3aXNlLgoJKGZpbmlzaF9lbnVtKTogTGlrZXdpc2UuCgkoc3RhcnRfZnVuY3Rpb24pOiBMaWtld2lzZS4KCShmaW5pc2hfZnVuY3Rpb24pOiBMaWtld2lzZS4KCShzdGFydF9tZXRob2QpOiBBZGp1c3QgY2FsbCB0byBjcF9maW5pc2hfZGVjbC4KCSogZGVjbDIuYyAoZmluaXNoX3N0YXRpY19kYXRhX21lbWJlcl9kZWNsKTogRG9uJ3QgbWFuaXB1bGF0ZQoJb2JzdGFja3MuCgkoZ3Jva2ZpZWxkKTogTGlrZXdpc2UuCgkoZ3Jva2JpdGZpZWxkKTogTGlrZXdpc2UuCgkoZ2V0X3RlbXBfbmFtZSk6IExpa2V3aXNlLgoJKGdldF9zZW50cnkpOiBMaWtld2lzZS4KCShmbmlzaF9maWxlKTogTGlrZXdpc2UuCgkobG9va3VwX2FyZ19kZXBlbmRlbnQpOiBMaWtld2lzZS4KCSogZXhjZXB0LmMgKGNhbGxfZWhfaW5mbyk6IExpa2V3aXNlLgoJKHB1c2hfZWhfaW5mbyk6IExpa2V3aXNlLgoJKGRvX3BvcF9leGNlcHRpb24pOiBMaWtld2lzZS4KCShpbml0aWFsaXplX2hhbmRsZXJfcGFybSk6IExpa2V3aXNlLgoJKGV4cGFuZF9lbmRfZWhfc3BlYyk6IExpa2V3aXNlLgoJKGFsbG9jX2VoX29iamVjdCk6IExpa2V3aXNlLgoJKGV4cGFuZF90aHJvdyk6IExpa2V3aXNlLgoJKiBleHByLmMgKGV4dHJhY3Rfc2NhbGFyX2luaXQpOiBMaWtld2lzZS4KCSogaW5pdC5jIChidWlsZF9qYXZhX2NsYXNzX3JlZik6IExpa2V3aXNlLgoJKiBsZXguYyAoZ2V0X3RpbWVfaWRlbnRpZmllcik6IExpa2V3aXNlLgoJKHNuYXJmX2RlZmFyZyk6IExpa2V3aXNlLgoJKGFkZF9kZWZhcmdfZm4pOiBMaWtld2lzZS4KCShpc19nbG9iYWwpOiBTaW1wbGlmeS4KCShkb19pZGVudGlmaWVyKTogRG9uJ3QgY2hlY2sgVFJFRV9QRVJNQU5FTlQuCgkqIG1ldGhvZC5jIChlbWl0X3RodW5rKTogRG9uJ3QgbWFuaXB1bGF0ZSBvYnN0YWNrcy4KCSogcGFyc2UueSAoY29uZGl0aW9uKTogQWRqdXN0IGNhbGwgdG8gY3BfZmluaXNoX2RlY2wuCgkocHJpbWFyeSk6IExpa2V3aXNlLgoJKGluaXRkY2wpOiBMaWtld2lzZS4KCShpbml0ZGNsMF9pbm5hcmRzKTogTGlrZXdpc2UuCgkobm9tb2RzX2luaXRkY2wwKTogTGlrZXdpc2UuCgkqIHB0LmMgKHB1c2hfaW5saW5lX3RlbXBsYXRlX3Bhcm1zX3JlY3Vyc2l2ZSk6IFVzZQoJU0VUX0RFQ0xfVEVNUExBVEVfUEFSTV9QLgoJKHByb2Nlc3NfdGVtcGxhdGVfcGFybSk6IExpa2V3aXNlLgoJKGxvb2t1cF90ZW1wbGF0ZV9jbGFzcyk6IERvbid0IG1hbmlwdWxhdGUgb2JzdGFja3MuCgkoaW5zdGFudGlhdGVfY2xhc3NfdGVtcGxhdGUpOiBBZGp1c3QgY2FsbCB0bwoJZmluaXNoX3N0YXRpY19kYXRhX21lbWJlcl9kZWNsLgoJKHRzdWJzdF9kZWNsKTogRG9uJ3QgbWFuaXB1bGF0ZSBvYnN0YWNrcy4KCSh0c3Vic3RfZXhwcik6IExpa2V3aXNlLgoJKGluc3RhbnRpYXRlX3RlbXBsYXRlKTogTGlrZXdpc2UuCgkoaW5zdGFudGlhdGVfZGVjbCk6IEFkanVzdCBjYWxscyB0byBjcF9maW5pc2hfZGVjbC4KCSogcnR0aS5jIChjYWxsX3ZvaWRfZm4pOiBEb24ndCBtYW5pcHVsYXRlIG9ic3RhY2tzLgoJKGdldF90aW5mb192YXIpOiBMaWtld2lzZS4KCShnZXRfdGluZm9fZm5fdW51c2VkKTogTGlrZXdpc2UuCgkoYnVpbGRfZHluYW1pY19jYXN0XzEpOiBMaWtld2lzZS4KCShleHBhbmRfc2lfZGVzYyk6IExpa2V3aXNlLgoJKGV4cGFuZF9jbGFzc19kZXNjKTogTGlrZXdpc2UuCgkoZXhwYW5kX3B0cl9kZXNjKTogTGlrZXdpc2UuCgkoZXhwYW5kX2F0dHJfZGVzYyk6IExpa2V3aXNlLgoJKGV4cGFuZF9nZW5lcmljX2Rlc2MpOiBMaWtld2lzZS4KCShzeW50aGVzaXplX3RpbmZvX2ZuKTogTGlrZXdpc2UuCgkqIHNlYXJjaC5jIChleHBhbmRfdXBjYXN0X2ZpeHVwcyk6IExpa2V3aXNlLgoJKiBzZW1hbnRpY3MuYyAoZmluaXNoX2FzbV9zdG10KTogTGlrZXdpc2UuCgkoZmluaXNoX25hbWVkX3JldHVybl92YWx1ZSk6IExpa2V3aXNlLgoJKGJlZ2luX2NsYXNzX2RlZmluaXRpb24pOiBMaWtld2lzZS4KCShmaW5pc2hfY2xhc3NfZGVmaW5pdGlvbik6IExpa2V3aXNlLgoJKGZpbmlzaF90eXBlb2YpOiBMaWtld2lzZS4KCSogdHJlZS5jIChidWlsZF9jcGx1c19tZXRob2RfdHlwZSk6IExpa2V3aXNlLgoJKHJldmVyc2VfcGF0aCk6IExpa2V3aXNlLgoJKGNvcHlfdGVtcGxhdGVfdGVtcGxhdGVfcGFybSk6IExpa2V3aXNlLgoJKGJ1aWxkX2V4cHJfcHRyX3dyYXBwZXIpOiBMaWtld2lzZS4KCShwdXNoX2V4cHJlc3Npb25fb2JzdGFjayk6IFJlbW92ZS4KCShwdXNoX3Blcm1hbmVudF9vYnN0YWNrKTogTGlrZXdpc2UuCgkqIHR5cGVjay5jIChtYXJrX2FkZHJlc3NhYmxlKTogTGlrZXdpc2UuCgoxOTk5LTExLTEzICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogY2FsbC5jIChidWlsZF9jb25kaXRpb25hbF9leHByKTogVXNlIGJ1aWxkX3RhcmdldF9leHByX3dpdGhfdHlwZS4KCShjb252ZXJ0X2xpa2UpOiBMaWtld2lzZS4KCShidWlsZF9vdmVyX2NhbGwpOiBMaWtld2lzZS4KCSogY3AtdHJlZS5oIChidWlsZF90YXJnZXRfZXhwcik6IFJlbW92ZS4KCShidWlsZF90YXJnZXRfZXhwcl93aXRoX3R5cGUpOiBOZXcgZnVuY3Rpb24uCgkqIGN2dC5jIChidWlsZF91cF9yZWZlcmVuY2UpOiBVc2UgZ2V0X3RhcmdldF9leHByLgoJKiBkZWNsLmMgKGJ1aWxkX3RhcmdldF9leHByKTogTW92ZSB0byAuLi4KCSogdHJlZS5jIChidWlsZF90YXJnZXRfZXhwcik6IEhlcmUuICBNYWtlIGl0IHN0YXRpYy4KCShidWlsZF90YXJnZXRfZXhwcl93aXRoX3R5cGUpOiBOZXcgZnVuY3Rpb24uICBTZXQgREVDTF9DT05URVhUIG9uCgl0aGUgdGVtcG9yYXJ5IFZBUl9ERUNMcy4KCShnZXRfdGFyZ2V0X2V4cHIpOiBVc2UgaXQuCgoxOTk5LTExLTEzICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBkZWNsLmMgKGR1cGxpY2F0ZV9kZWNscyk6IFByb3BhZ2F0ZSBERUNMX0RFRkVSX09VVFBVVC4KCSogZGVjbDIuYyAoY29tZGF0X2xpbmthZ2UpOiBTZXQgREVDTF9ERUZFUl9PVVRQVVQuCgkqIHJ0dGkuYyAoZ2V0X3RpbmZvX2ZuX3VudXNlZCk6IFNwbGl0IG91dCBmcm9tIGdldF90aW5mb19mbi4KCSogY2xhc3MuYyAoc2V0X3J0dGlfZW50cnkpOiBVc2UgaXQuCgoxOTk5LTExLTEyICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogZGVjbC5jIChjcGx1c19leHBhbmRfZXhwcl9zdG10KTogRG9uJ3QgY2FsbCBicmVha19vdXRfY2xlYW51cHMKCWhlcmUuCgkqIHNlbWFudGljcy5jIChmaW5pc2hfZXhwcl9zdG10KTogQ2FsbCBpdCBoZXJlIGluc3RlYWQuICBNb3ZlCglkZWZhdWx0X2NvbnZlcnNpb24gbG9naWMgdG8gc2VtYW50aWMtYW5hbHlzaXMgdGltZS4KCjE5OTktMTEtMTIgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIHJ0dGkuYyAoc3ludGhlc2l6ZV90aW5mb19mbik6IFNldCBERUNMX0RFRkVSX09VVFBVVC4KCkZyaSBOb3YgMTIgMTI6NTY6MzIgTVNUIDE5OTkJRGllZ28gTm92aWxsbyA8ZG5vdmlsbG9AY3lnbnVzLmNvbT4KCgkqIGluaXQuYyAoaW5pdF9pbml0X3Byb2Nlc3NpbmcpOiBSZS1pbnN0YXRlZCBOb3YgMTEgcGF0Y2ggYWZ0ZXIKCWFwcHJvdmFsLgoKRnJpIE5vdiAxMiAxMDo0MjowMiBNU1QgMTk5OQlEaWVnbyBOb3ZpbGxvIDxkbm92aWxsb0BjeWdudXMuY29tPgoKCSogaW5pdC5jIChpbml0X2luaXRfcHJvY2Vzc2luZyk6IFVuZG8gcGF0Y2ggZnJvbSBOb3YgMTEsIDE5OTkuCglQYXRjaCBoYWQgbm90IGJlZW4gYXBwcm92ZWQgeWV0LgoKMTk5OS0xMS0xMiAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGRlY2wuYyAoY29tcHV0ZV9hcnJheV9pbmRleF90eXBlKTogTmV3IGZ1bmN0aW9uLCBzcGxpdCBvdXQgZnJvbQoJZ3Jva2RlY2xhcmF0b3IuCgkoY3JlYXRlX2FycmF5X3R5cGVfZm9yX2RlY2wpOiBMaWtld2lzZS4KCShncm9rZGVjbGFyYXRvcik6IFVzZSB0aGVtLgoKCSogc2VtYW50aWNzLmMgKGV4cGFuZF9zdG10KTogRG9uJ3Qgc3VzcGVuZF9tb21lbnRhcnkgb3IKCXJlc3VtZV9tb21lbnRhcnkuCgpUaHUgTm92IDExIDEyOjQyOjExIE1TVCAxOTk5CURpZWdvIE5vdmlsbG8gPGRub3ZpbGxvQGN5Z251cy5jb20+CgoJKiBpbml0LmMgKGluaXRfaW5pdF9wcm9jZXNzaW5nKTogSGVhZGVyIGluZm9ybWF0aW9uIGZvcgoJYXJyYXlzIGFsbG9jYXRlZCB2aWEgYG5ldycgc2hvdWxkIGhhdmUgdGhlIHNhbWUgYWxpZ25tZW50IHVzZWQgYnkKCW1hbGxvYy4KCjE5OTktMTEtMTAgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBlcnJvci5jIChkdW1wX2Z1bmN0aW9uX25hbWUpOiBEb24ndCBjcmFzaCBpZiBnaXZlbiBhIGZyaWVuZAoJcHNldWRvLWluc3RhbnRpYXRpb24uCgoJKiBjcC10cmVlLmggKGJ1aWxkX2VudW1lcmF0b3IpOiBDaGFuZ2UgcHJvdG90eXBlLgoJKiBkZWNsLmMgKGVudW1fbmV4dF92YWx1ZSk6IFJlbW92ZS4KCShlbnVtX292ZXJmbG93KTogTGlrZXdpc2UuCgkoaW5pdF9kZWNsX3Byb2Nlc3NpbmcpOiBEb24ndCByZWdpc3RlciBlbnVtX25leHRfdmFsdWUgYXMgYSByb290LgoJKHN0YXJ0X2VudW0pOiBDbGVhciBUWVBFX1ZBTFVFUyBmb3IgYSByZWRlZmluZWQgZW51bS4KCShmaW5pc2hfZW51bSk6IFJlc2V0IHRoZSB0eXBlIG9mIGVudW1lcmF0aW9uIGNvbnN0YW50cy4KCShidWlsZF9lbnVtZXJhdG9yKTogRml4IGluZGVudGF0aW9uLiAgRG9uJ3QgY29weSBDT05TVF9ERUNMcyB3aGVuCgl3ZSBkb24ndCBuZWVkIHRvLiAgTWFpbnRhaW4gdGhlIFRZUEVfVkFMVUVTIGxpc3QgYW5kIGxvb2sgdGhlcmUKCWZvciB0aGUgcHJldmlvdXNseSBkZWZpbmVkIGVudW1lcmF0aW9uIGNvbnN0YW50LiAgTGV0IGVudW1lcmF0aW9uCgljb25zdGFudHMgaGF2ZSB0aGUgdHlwZSBvZiB0aGVpciB2YWx1ZXMgdW50aWwgdGhlIGVudW1lcmF0aW9uIHR5cGUKCWlzIGNvbXBsZXRlLgoJKiBwYXJzZS55IChlbnVtbGlzdF9vcHQsIGVudW1saXN0LCBlbnVtZXJhdG9yKTogRG9uJ3QgcmV0dXJuIGEgdmFsdWUuCgkoc3RydWN0c3ApOiBBZGp1c3QuCgkqIHBhcnNlLmM6IFJlZ2VuZXJhdGVkLgoJKiBwdC5jICh0c3Vic3RfZW51bSk6IEFkanVzdCBhY2NvcmRpbmcgdG8gYnVpbGRfZW51bWVyYXRvciBjaGFuZ2VzLgoKV2VkIE5vdiAxMCAxMjo0MzoyMSAxOTk5ICBQaGlsaXBwZSBEZSBNdXl0ZXIgIDxwaGRtQG1hY3FlbC5iZT4KCQkJICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBjcC10cmVlLmg6IFRlc3QgYEdDQ19WRVJTSU9OJywgbm90IGBIQVZFX0dDQ19WRVJTSU9OJy4KCjE5OTktMTEtMDkgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjcC10cmVlLmggKGxhbmd1YWdlX2Z1bmN0aW9uKTogUmVtb3ZlIHhfbGFzdF9kdG9yX2luc24gYW5kCgl4X2xhc3RfcGFybV9jbGVhbnVwX2luc24uCgkqIGRlY2wuYyAobGFzdF9kdG9yX2luc24pOiBSZW1vdmUuCgkobGFzdF9wYXJtX2NsZWFudXBfaW5zbik6IExpa2V3aXNlLgoJKGV4cGFuZF9zdGFydF9lYXJseV90cnlfc3RtdHMpOiBEb24ndCBzZXQgdGhlbS4KCShzdG9yZV9wYXJtX2RlY2xzKTogTGlrZXdpc2UuCgkoc2F2ZV9mdW5jdGlvbl9kYXRhKTogT3Igc2F2ZSB0aGVtLgoJKG1hcmtfbGFuZ19mdW5jdGlvbik6IE9yIG1hcmsgdGhlbS4KCjE5OTktMTEtMDggIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBkZWNsLmMgKHN0b3JlX3Bhcm1fZGVjbHMpOiBHZW5lcmF0ZSBjbGVhbnVwIGNvZGUgYXQKCXNlbWFudGljLWFuYWx5c2lzIHRpbWUuICBEZXN0cm95IG9iamVjdHMgaW4gdGhlIGNvcnJlY3Qgb3JkZXIuCgoxOTk5LTExLTA3ICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogY3AtdHJlZS5oIChiZWdpbl9uZXdfcGxhY2VtZW50KTogUmVtb3ZlLgoJKGZpbmlzaF9uZXdfcGxhY2VtZW50KTogTGlrZXdpc2UuCgkqIGNsYXNzLmMgKGZpbmlzaF9zdHJ1Y3RfMSk6IERvbid0IHN1c3BlbmRfbW9tZW50YXJ5IG9yCglyZXN1bWVfbW9tZW50YXJ5LgoJKiBkZWNsLmMgKGdyb2tkZWNsYXJhdG9yKTogTGlrZXdpc2UuCgkobWF5YmVfYnVpbGRfY2xlYW51cF8xKTogTGlrZXdpc2UuCgkqIGV4Y2VwdC5jIChwdXNoX2VoX2NsZWFudXApOiBMaWtld2lzZS4KCShidWlsZF90ZXJtaW5hdGVfaGFuZGxlcik6IExpa2V3aXNlLgoJKiBpbml0LmMgKGJ1aWxkX25ld18xKTogTGlrZXdpc2UuCgkqIHBhcnNlLnkgKHBhcnNlX2RlY2wpOiBDaGFuZ2UgcHJvdG90eXBlLgoJKGluaXRkZWNscywgbm90eXBlX2luaXRkZWNscywgaW5pdGRjbCk6IERvbid0IHJldHVybiBpbnQuCgkoaW5pdGRjbDAsIG5vdHlwZV9pbml0ZGNsMCwgaW5pdGRjbDBfaW5uYXJkcyk6IExpa2V3aXNlLgoJKC5iZWdpbl9uZXdfcGxhY2VtZW50KTogUmVtb3ZlLgoJKC5maW5pc2hfbmV3X3BsYWNlbWVudCk6IExpa2V3aXNlLgoJKG5vbm1vbWVudGFyeV9leHByKTogTGlrZXdpc2UuCgkoc3VzcGVuZF9tb20pOiBMaWtld2lzZS4KCShjb25kaXRpb24pOiBEb24ndCBzdXNwZW5kX21vbWVudGFyeSwgcmVzdW1lX21vbWVudGFyeSwgb3Iga2VlcAoJdHJhY2sgb2YgbmVlZCB0byByZXN1bWUuCgkodW5hcnlfZXhwcik6IExpa2V3aXNlLgoJKG5ld19wbGFjZW1lbnQpOiBMaWtld2lzZS4KCShkZWNsKTogTGlrZXdpc2UuCgkoc3RydWN0c3ApOiBMaWtld2lzZS4KCShuZXdfdHlwZV9pZCk6IExpa2V3aXNlLgoJKG1heWJlX3Bhcm1saXN0KTogTGlrZXdpc2UuCgkoZGlyZWN0X2FmdGVyX3R5cGVfZGVjbGFyYXRpb24pOiBMaWtld2lzZS4KCShkaXJlY3RfbmV3X2RlY2xhcmF0b3IpOiBMaWtld2lzZS4KCShkaXJlY3RfYWJzdHJhY3RfZGVjbGFyYXRpb24pOiBMaWtld2lzZS4KCSogcGFyc2UuYzogUmVnZW5lcmF0ZWQuCgkqIHB0LmMgKHRzdWJzdF9leHByKTogRG9uJ3Qgc3VzcGVuZF9tb21lbnRhcnkgb3IgcmVzdW1lX21vbWVudGFyeS4KCSogc2VtYW50aWNzLmMgKGJlZ2luX25ld19wbGFjZW1lbnQpOiBSZW1vdmUuCgkoZmluaXNoX25ld19wbGFjZW1lbnQpOiBMaWtld2lzZS4KCjE5OTktMTEtMDUgIE1hcnRpbiB2LiBM9ndpcyAgPGxvZXdpc0BpbmZvcm1hdGlrLmh1LWJlcmxpbi5kZT4KCgkqIGNwLXRyZWUuaCAoVkFSX1RFTVBMX1RZUEVfT1JfRlVOQ1RJT05fREVDTF9DSEVDSyk6IE5ldyBtYWNyby4KCShERUNMX1RFTVBMQVRFX0lORk8pOiBVc2UgaXQuCgkqIGRlY2wuYyAod2Fybl9leHRlcm5fcmVkZWNsYXJlZF9zdGF0aWMpOiBEbyBub3RoaW5nIGZvcgoJVEVNUExBVEVfREVDTHMuCgkqIGRlY2wyLmMgKG1hcmtfdXNlZCk6IEV4cGxpY2l0bHkgY2hlY2sgZm9yIGZ1bmN0aW9uIG9yIHZhcmlhYmxlLgoJKiBzZW1hbnRpY3MuYyAoZmluaXNoX3VuYXJ5X29wX2V4cHIpOiBDaGVjayB3aGV0aGVyIHJlc3VsdCBpcyBhbHNvCglhbiBJTlRFR0VSX0NTVC4KCjE5OTktMTEtMDUgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBNYWtlZmlsZS5pbiAodHlwZWNrMi5vKTogRGVwZW5kIG9uIG91dHB1dC5oLgoJKiB0eXBlY2syLmM6IEluY2x1ZGUgb3V0cHV0LmguCgoJKiBkZWNsLmMgKGZsYWdfYW5zaSk6IFJlbW92ZSBkZWNsYXJhdGlvbi4KCgkqIHB0LmMgKHRpbnN0X2xldmVsX3RpY2spOiBNYWtlIGl0IHN0YXRpYy4KCShsYXN0X3RlbXBsYXRlX2Vycm9yX3RpY2spOiBMaWtld2lzZS4KCgkqIGNwLXRyZWUuaCAobWFwY2FyKTogUmVtb3ZlIGRlY2xhcmF0aW9uLgoJKHNlYXJjaF90cmVlKTogTGlrZXdpc2UuCgkod2Fsa190cmVlX2ZuKTogTmV3IHR5cGVkZWYuCgkod2Fsa190cmVlKTogTmV3IGZ1bmN0aW9uLgoJKiB0cmVlLmMgKGJvdF9tYW5pcCk6IENoYW5nZSBwcm90b3R5cGUuICBBZGp1c3QgdG8gYmUgY2FsbGVkIHZpYQoJd2Fsa190cmVlLgoJKGJvdF9yZXBsYWNlKTogTGlrZXdpc2UuCgkobm9fbGlua2FnZV9oZWxwZXIpOiBMaWtld2lzZS4KCShjb3B5X3RyZWVfcik6IE5ldyBmdW5jdGlvbi4KCShzZWFyY2hfdHJlZSk6IFJlbmFtZSwgYW5kIGFkanVzdCwgdG8gYmVjb21lIC4uLgoJKHdhbGtfdHJlZSk6IE5ldyBmdW5jdGlvbi4KCShtYXBjYXIpOiBSZW1vdmUuCgkodGFyZ2V0X3JlbWFwKTogUmVtb3ZlLgoJKHRhcmdldF9yZW1hcF9jb3VudCk6IExpa2V3aXNlLgoJKGJyZWFrX291dF90YXJnZXRfZXhwcnMpOiBVc2Ugd2Fsa190cmVlLgoJKiBkZWNsLmMgKGxvY2FsX3ZhcmlhYmxlX3ApOiBDaGFuZ2UgcHJvdG90eXBlLgoJKGNoZWNrX2RlZmF1bHRfYXJndW1lbnQpOiBVc2Ugd2Fsa190cmVlLgoJKiBwdC5jIChmb3JfZWFjaF90ZW1wbGF0ZV9wYXJtX3IpOiBOZXcgZnVuY3Rpb24sIHNwbGl0IG91dCBmcm9tIC4uLgoJKGZvcl9lYWNoX3RlbXBsYXRlX3Bhcm0pOiBIZXJlLiAgVXNlIGl0LCB2aWEgd2Fsa190cmVlLgoKMTk5OS0xMS0wMyAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGNsYXNzLmMgKGNoZWNrX2JpdGZpZWxkX2RlY2wpOiBOZXcgZnVuY3Rpb24sIHNwbGl0IG91dCBmcm9tCglmaW5pc2hfc3R1Y3RfMS4KCShjaGVja19maWVsZF9kZWNsKTogTGlrZXdpc2UuICBSZWN1cnNpdmVseSBleGFtaW5lIG1lbWJlcnMgb2YKCWFub255bW91cyBzdHJ1Y3RzLgoJKGZpbmlzaF9zdHJ1Y3RfMSk6IFVzZSB0aGVtLgoJKiBjcC10cmVlLmggKEFOT05fVU5JT05fVFlQRV9QKTogTmV3IG1hY3JvLgoKMTk5OS0xMS0wMiAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGRlY2wuYyAoZ3Jva2ZuZGVjbCk6IFJlbW92ZSBkZWFkIGNvZGUuCgoJKiBkdW1wLmMgKGRlcXVldWVfYW5kX2R1bXApOiBGaXggdGhpbmtvIGZvciBjYXRjaC1jbGF1c2VzLgoKMTk5OS0xMS0wMiAgU2NvdHQgU255ZGVyICA8c255ZGVyQGZuYWwuZ292PgoKCSogZGVjbDIuYyAoYnVpbGRfZXhwcl9mcm9tX3RyZWUpOiBIYW5kbGUgUkVBTFBBUlRfRVhQUiBhbmQKCUlNQUdQQVJUX0VYUFIuCgkqIHB0LmMgKHRzdWJzdF9jb3B5KTogTGlrZXdpc2UuCgoxOTk5LTExLTAxICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBkZWNsMi5jIChtYXliZV9tYWtlX29uZV9vbmx5KTogQWx3YXlzIG1ha2UgdGhpbmdzIGNvbWRhdCBvbgoJRUxGIHRhcmdldHMsIHRvby4KCjE5OTktMTAtMzEgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBkZWNsLmMgKGZpbmlzaF9mdW5jdGlvbik6IENhbGwgZnJlZV9hZnRlcl9wYXJzaW5nIGZvciBmdW5jdGlvbnMKCXdlIGFyZSBub3QgaW1tZWRpYXRlbHkgdHVybmluZyBpbnRvIFJUTC4KCjE5OTktMTAtMzEgIEJyZW5kYW4gS2Vob2UgIDxicmVuZGFuQGN5Z251cy5jb20+CgoJKiBjcC10cmVlLmggKGZsYWdfZHVtcF90cmFuc2xhdGlvbl91bml0KTogQWRkIGRlY2wuCgpTYXQgT2N0IDMwIDIyOjQyOjUwIDE5OTkgIFN0ZXBoZW4gTCBNb3NoaWVyIDxtb3NoaWVyQG1lZGlhb25lLm5ldD4KCgkqIGxleC5jICh5eWxleCk6IEFjY2VwdCAnZicgaW4gbWFudGlzc2Egb2YgaGV4IGZsb2F0IGNvbnN0YW50LgoKMTk5OS0xMC0zMCAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGRlY2wuYyAocG9wX2NwX2Z1bmN0aW9uX2NvbnRleHQpOiBEb24ndCBjYWxsIGZyZWUgb24gYSBOVUxMCglwb2ludGVyLgoJKiBzZW1hbnRpY3MuYzogSW5jbHVkZSBnZ2MuaC4KCShleHBhbmRfYm9keSk6IERvIGdhcmJhZ2UtY29sbGVjdGlvbiBhZnRlciBwcm9jZXNzaW5nIGEgdGVtcGxhdGUKCWZ1bmN0aW9uLiAgQ2xlYXIgREVDTF9TQVZFRF9UUkVFIGFmdGVyIGdlbmVyYXRpbmcgUlRMIGZvciBhCglmdW5jdGlvbi4KCSogTWFrZWZpbGUuaW4gKHNlbWFudGljcy5vKTogRGVwZW5kIG9uIGdnYy5oLgoKMTk5OS0xMC0yOSAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGNwLXRyZWUuaCAobWFrZV90eXBlbmFtZV90eXBlKTogQ2hhbmdlIHByb3RvdHlwZS4KCSogZGVjbC5jIChtYWtlX3R5cGVuYW1lX3R5cGUpOiBPbmx5IGNvbXBsYWluIGlmIHNvIHJlcXVlc3RlZC4KCSogcGFyc2UueSAobmVzdGVkX25hbWVfc3BlY2lmaWVyKTogQWRqdXN0IGNhbGxzLgoJKHR5cGVuYW1lX3N1YjApOiBMaWtld2lzZS4KCSh0eXBlbmFtZV9zdWIxKTogTGlrZXdpc2UuCgkqIHBhcnNlLmM6IFJlZ2VuZXJhdGVkLgoJKiBwdC5jIChjb252ZXJ0X3RlbXBsYXRlX2FyZ3VtZW50KTogUGFzcyBjb21wbGFpbiB0bwoJbWFrZV90eXBlbmFtZV90eXBlLgoJKHRzdWJzdCk6IExpa2V3aXNlLgoKMTk5OS0xMC0yOCAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIHNlbWFudGljcy5jIChmaW5pc2hfaGFuZGxlcik6IEVuZCB0aGUgc2NvcGUgb2YgdGhlIGhhbmRsZXIKCWJlZm9yZSBhdHRhY2hpbmcgaXQgdG8gdGhlIHN0YXRlbWVudC10cmVlLgoKMTk5OS0xMC0yOCAgSWFuIExhbmNlIFRheWxvciAgPGlhbkB6ZW1idS5jb20+CgoJKiBydHRpLmMgKGJ1aWxkX2R5bmFtaWNfY2FzdF8xKTogR2l2ZSBhIGJldHRlciBlcnJvciBtZXNzYWdlIGZvcgoJYW4gYXR0ZW1wdCB0byBkeW5hbWljX2Nhc3QgZnJvbSBhIG5vbi1wb2x5bW9ycGhpYyB0eXBlLgoKMTk5OS0xMC0yNyAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGNwLXRyZWUuaCAobWFrZV90ZW1wX3ZlYyk6IFJlbW92ZS4KCShtYWtlX3NjcmF0Y2hfdmVjKTogTGlrZXdpc2UuCgkqIGNhbGwuYyAoYWRkX2Z1bmN0aW9uX2NhbmRpZGF0ZSk6IFVzZSBtYWtlX3RyZWVfdmVjLgoJKGFkZF9jb252X2NhbmRpZGF0ZSk6IExpa2V3aXNlLgoJKGJ1aWxkX2J1aWx0aW5fY2FuZGlkYXRlKTogTGlrZXdpc2UuCgkoYWRkX3RlbXBsYXRlX2NhbmRpZGF0ZV9yZWFsKTogTGlrZXdpc2UuCgkqIGNsYXNzLmMgKHJlc29sdmVfYWRkcmVzc19vZl9vdmVybG9hZGVkX2Z1bmN0aW9uKTogTGlrZXdpc2UuCgkqIGRlY2wuYyAoc3RhcnRfZnVuY3Rpb24pOiBEb24ndCBmb29sIHdpdGggdGhlIG1vbWVudGFyeSBvYnN0YWNrLgoJKGZpbmlzaF9mdW5jdGlvbik6IExpa2V3aXNlLgoJKiBpbml0LmMgKGV4cGFuZF9kaXJlY3RfdnRibHNfaW5pdCk6IExpa2V3aXNlLgoJKGJlZ2luX2luaXRfc3RtdHMpOiBMaWtld2lzZS4KCShmaW5pc2hfaW5pdF9zdG10cyk6IExpa2V3aXNlLgoJKiBwdC5jIChhZGRfdG9fdGVtcGxhdGVfYXJncyk6IFVzZSBtYWtlX3RyZWVfdmVjLgoJKGNoZWNrX2V4cGxpY2l0X3NwZWNpYWxpemF0aW9uKTogTGlrZXdpc2UuCgkoY29lcmNlX3RlbXBsYXRlX3Bhcm1zKTogTGlrZXdpc2UuCgkobG9va3VwX3RlbXBsYXRlX2NsYXNzKTogRG9uJ3QgZm9vbCB3aXRoIHRoZSBtb21lbnRhcnkgb2JzdGFjay4KCShpbnN0YW50aWF0ZV9jbGFzc190ZW1wbGF0ZSk6IExpa2V3aXNlLgoJKHRzdWJzdF90ZW1wbGF0ZV9hcmdfdmVjdG9yKTogVXNlIG1ha2VfdHJlZV92ZWMuCgkodHN1YnN0X2FnZ3JfdHlwZSk6IERvbid0IGZvb2wgd2l0aCB0aGUgbW9tZW50YXJ5IG9ic3RhY2suCgkodHN1YnN0X2RlY2wpOiBMaWtld2lzZS4gIFVzZSBtYWtlX3RyZWVfdmVjLgoJKHRyeV9vbmVfb3ZlcmxvYWQpOiBMaWtld2lzZS4KCSh0cnlfY2xhc3NfdW5pZmljYXRpb24pOiAgRG9uJ3QgZm9vbCB3aXRoIHRoZSBtb21lbnRhcnkgb2JzdGFjay4KCShnZXRfYmluZGluZ3NfcmVhbCk6IFVzZSBtYWtlX3RyZWVfdmVjLgoJKHNldF9tYW5nbGVkX25hbWVfZm9yX3RlbXBsYXRlX2RlY2wpOiBMaWtld2lzZS4KCSogcnR0aS5jIChzeW50aGVzaXplX3RpbmZvX2ZuKTogRG9uJ3QgZm9vbCB3aXRoIHRoZSBtb21lbnRhcnkgb2JzdGFjay4KCSogc2VtYW50aWNzLmMgKGZpbmlzaF9leHByX3N0bXQpOiBMaWtld2lzZS4KCShmaW5pc2hfZG9fc3RtdCk6IExpa2V3aXNlLgoJKGZpbmlzaF9mb3JfZXhwcik6IExpa2V3aXNlLgoJKGZpbmlzaF9zd2l0Y2hfY29uZCk6IExpa2V3aXNlLgoJKGRvX3B1c2hsZXZlbCk6IExpa2V3aXNlLgoJKGRvX3BvcGxldmVsKTogTGlrZXdpc2UuCgkqIHRyZWUuYyAobWFrZV90ZW1wX3ZlYyk6IFJlbW92ZS4KCgkqIGR1bXAuYyAoZGVxdWV1ZV9hbmRfZHVtcCk6IER1bXAgSEFORExFUnMgYW5kIFNBVkVfRVhQUnMuICBEdW1wCglDTEVBTlVQX1AgZm9yIGEgVFJZX0JMT0NLLgoJKiBpci50ZXhpOiBEb2N1bWVudCBTQVZFX0VYUFIuCgpUdWUgT2N0IDI2IDIzOjI5OjU2IDE5OTkgIEplZmZyZXkgQSBMYXcgIChsYXdAY3lnbnVzLmNvbSkKCgkqIGNhbGwuYyAoYnVpbGRfb3Zlcl9jYWxsKTogIENoZWNrIHRoYXQgdGhlIGJ1aWx0LWluIGZ1bmN0aW9uIGlzCglvZiBjbGFzcyBCVUlMVF9JTl9OT1JNQUwgYmVmb3JlIHRyeWluZyB0byByZWNvbmdpemUgaXQgYXMgQlVJTFRfSU5fQUJTLgoJKiB0eXBlY2suYyAoYnVpbGRfZnVuY3Rpb25fY2FsbF9yZWFsKTogU2ltaWxhcmx5LgoKMTk5OS0xMC0yNiAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGRlY2wuYyAocG9wbGV2ZWwpOiBEb24ndCBzZXQgQkxPQ0tfVFlQRV9UQUdTLiAgRG9uJ3QgY2FsbAoJcmVtZW1iZXJfZW5kX25vdGUuCgoxOTk5LTEwLTI0ICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogZGVjbC5jIChwdXNoX292ZXJsb2FkZWRfZGVjbF8xKTogVXNlIHB1c2hkZWNsLgoKCSogZGVjbC5jIChhdXRvX2Z1bmN0aW9uKTogUmVwbGFjZSAjaWZkZWYnZCBfX2lubGluZSB3aXRoIGp1c3QKCXBsYWluIGlubGluZS4KCSogbGV4LmMgKG15X2dldF9ydW5fdGltZSk6IExpa2Vpc2UuCgkoeXlwcmludCk6IExpa2V3aXNlLgoJKGlkZW50aWZpZXJfdHlwZSk6IExpa2V3aXNlLgoJKiBtZXRob2QuYyAoc3RhcnRfc3F1YW5nbGluZyk6IExpa2V3aXNlLgoJKGVuZF9zcXVhbmdsaW5nKTogTGlrZXdpc2UuCgkoaWNhdCk6IExpa2V3aXNlLgoJKG9sZF9iYWNrcmVmX2luZGV4KTogTGlrZXdpc2UuCgkoZmx1c2hfcmVwZWF0cyk6IExpa2V3aXNlLgoJKGlzc3VlX2t0eXBlKTogTGlrZXdpc2UuCgkqIHBhcnNlLnkgKGVtcHR5X3Bhcm1zKTogTGlrZXdpc2UuCgkqIHBhcnNlLmM6IFJlZ2VuZXJhdGVkLgoKMTk5OS0xMC0yMSAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGR1bXAuYyAoZGVxdWV1ZV9hbmRfZHVtcCk6IFJlcGxhY2Ugc2V2ZXJhbCB1c2VzIG9mCglxdWV1ZV9hbmRfZHVtcF9pbmRleCB3aXRoIGR1bXBfY2hpbGQuCgoxOTk5LTEwLTIxICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBleHByLmM6IEluY2x1ZGUgdG1fcC5oLgoKMTk5OS0xMC0yMSAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGNwLXRyZWUuaCAoU0NPUEVfUEFSVElBTF9QKTogTmV3IG1hY3JvLgoJKHB1c2hsZXZlbF90ZW1wb3JhcnkpOiBSZW1vdmUuCgkoYWRkX3Njb3BlX3N0bXQpOiBOZXcgZnVuY3Rpb24uCgkqIGRlY2wuYyAocHVzaGxldmVsX3RlbXBvcmFyeSk6IFJlbW92ZS4KCShwb3BsZXZlbCk6IFVzZSBhZGRfc2NvcGVfc3RtdC4KCShzdGFydF9kZWNsXzEpOiBMaWtld2lzZS4KCSogc2VtYW50aWNzLmMgKGFkZF9zY29wZV9zdG10KTogTmV3IGZ1bmN0aW9uLgoJKGRvX3B1c2hsZXZlbCk6IFVzZSBpdC4KCShkb19wb3BsZXZlbCk6IFVzZSBpdC4KCShleHBhbmRfc3RtdCk6IENoZWNrIFNDT1BFX1BBUlRJQUxfUC4KCgkqIGNwLXRyZWUuZGVmIChFTVBUWV9DTEFTU19FWFBSKTogTmV3IHRyZWUgbm9kZS4KCSogY2FsbC5jIChidWlsZF9jYWxsKTogVXNlIEVNUFRZX0NMQVNTX0VYUFIgaW5zdGVhZCBvZiBSVExfRVhQUi4KCSogZXhwci5jIChjcGx1c19leHBhbmRfZXhwcik6IEV4cGFuZCBpdC4KCSogaXIudGV4aTogRG9jdW1lbnQgRU1QVFlfQ0xBU1NfRVhQUi4KCjE5OTktMTAtMjAgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjcC10cmVlLmggKERFQ0xfTkFNRVNQQUNFX1NDT1BFX1ApOiBEb24ndCB0cmVhdCB0ZW1wbGF0ZQoJcGFyYW1ldGVycyBhcyBoYXZpbmcgbmFtZXNwYWNlIHNjb3BlLgoKMTk5OS0xMC0xOSAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIG1ldGhvZC5jIChQQVJNX0NBTl9CRV9BUlJBWV9UWVBFKTogUmVtb3ZlLgoJKG1hbmdsaW5nX2ZsYWdzKTogTmV3IHR5cGUuCgkoYnVpbGRfb3ZlcmxvYWRfaW50KTogQ2hhbmdlIHByb3RvdHlwZS4KCShidWlsZF9vdmVybG9hZF92YWx1ZSk6IExpa2V3aXNlLgoJKG51bWVyaWNfb3V0cHV0X25lZWRfYmFyKTogSW1wcm92ZSBjb21tZW50LgoJKG1hbmdsZV9leHByZXNzaW9uKTogTmV3IGZ1bmN0aW9uLCBicm9rZW4gb3V0IGZyb20gLi4uCgkoYnVpbGRfb3ZlcmxvYWRfaW50KTogSGVyZS4KCShidWlsZF9vdmVybG9hZF92YWx1ZSk6IEFkanVzdCBmb3IgdXNlIG9mIG1hbmdsaW5nIGZsYWdzLiAgRG9uJ3QKCXdhcm4gYWJvdXQgcmVhbC12YWx1ZWQgdGVtcGxhdGUgcGFyYW1ldGVycyBoZXJlLiAgRG8gaGFuZGxlCgljb21wbGV4IGV4cHJlc3Npb25zIGludm9sdmluZyByZWFsLXZhbHVlZCB0ZW1wbGF0ZSBwYXJhbWV0ZXJzLgoJKGJ1aWxkX3RlbXBsYXRlX3Bhcm1fbmFtZXMpOiBFbmNhc2Ugbm9uLXR5cGUgdGVtcGxhdGUgcGFyYW1ldGVycwoJaW4gdW5kZXJzY29yZXMsIGlmIG5lY2Vzc2FyeS4KCShwcm9jZXNzX292ZXJsb2FkX2l0ZW0pOiBSZW1vdmUgY29uZGl0aW9uYWwgb24KCVBBUk1fQ0FOX0JFX0FSUkFZX1RZUEUuCgoxOTk5LTEwLTE3ICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogZHVtcC5jIChkZXF1ZXVlX2FuZF9kdW1wKTogSGFuZGxlIENMRUFOVVBfUE9JTlRfRVhQUi4KCgkqIGlyLnRleGk6IENsZWFuIHVwIGRvY3VtZW50YXRpb24gb2YgUkVUVVJOX0lOSVQuCgoxOTk5LTEwLTE1ICBHcmVnIE1jR2FyeSAgPGdrbUBnbnUub3JnPgoKCSogbGV4LmMgKGxhbmdfaW5pdF9vcHRpb25zKTogU2V0IGZsYWdfYm91bmRzX2NoZWNrIGFzICJ1bnNwZWNpZmllZCIuCgkobGFuZ19pbml0KTogU2V0IGRlZmF1bHQgZm9yIGZsYWdfYm91bmRzX2NoZWNrIGlmIHN0aWxsICJ1bnNwZWNpZmllZCIuCgoxOTk5LTEwLTEzICBBbmRyZXcgSGFsZXkgIDxhcGhAY3lnbnVzLmNvbT4KCgkqIGNsYXNzLmMgKGZpbmlzaF9zdHJ1Y3RfMSk6IEZvcmNlIGFsaWdubWVudCBvZiBub24tYml0ZmllbGRzIHRvCglCSVRTX1BFUl9VTklULgoKV2VkIE9jdCAxMyAyMjowMTozNSAxOTk5ICBKIm9ybiBSZW5uZWNrZSA8YW15bGFhckBjeWdudXMuY28udWs+CgoJKiB0eXBlY2syLmMgKHByb2Nlc3NfaW5pdF9jb25zdHJ1Y3Rvcik6IEhhbmRsZSBlbXB0eSBjb25zdHJ1Y3RvcnMuCgoxOTk5LTEwLTEzICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBkZWNsLmMgKGxhbmdfbWFya190cmVlKTogTWFyayBOQU1FU1BBQ0VfTEVWRUwuCgoJKiBwdC5jICh0c3Vic3QsIGNhc2UgSU5URUdFUl9UWVBFKTogQmUgbW9yZSBleHBsaWNpdCBpbiB6ZXJvLXNpemUKCWFycmF5IGVycm9yLgoKMTk5OS0xMC0xMyAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGRlY2wuYyAobWFrZV9ydGxfZm9yX2xvY2FsX3N0YXRpYyk6IERvbid0IGNyZWF0ZSByZWdpc3RlciBSVEwKCWZvciBhZGRyZXNzYWJsZSBjb25zdGFudHMuCgoxOTk5LTEwLTEzICBOYXRoYW4gU2lkd2VsbCAgPG5hdGhhbkBhY20ub3JnPgoKCSogY3AtdHJlZS5oIChidWlsZF94X3ZhX2FyZyk6IFByb3RvdHlwZSBuZXcgZnVuY3Rpb24uCgkqIGNhbGwuYyAoYnVpbGRfeF92YV9hcmcpOiBEZWZpbmUgaXQuCgkqIHBhcnNlLnkgKHVuYXJ5X2V4cHIpOiBDYWxsIGJ1aWxkX3hfdmFfYXJnLgoKCSogY3AtdHJlZS5oIChjb252ZXJ0X3R5cGVfZnJvbV9lbGxpcHNpcyk6IFByb3RvdHlwZSBuZXcgZnVuY3Rpb24uCgkqIGNhbGwuYyAoY29udmVydF90eXBlX2Zyb21fZWxsaXBzaXMpOiBEZWZpbmUgaXQuCgkqIGRlY2wuYyAoaW5pdF9kZWNsX3Byb2Nlc3NpbmcpOiBTZXQgbGFuZ190eXBlX3Byb21vdGVzX3RvLgoKCSogdHJlZS5jIChsdmFsdWVfcF8xKTogQWNjZXB0IFZBX0FSR19FWFBSIHdpdGggYWdncmVnYXRlcy4KCjE5OTktMTAtMTEgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIGNsYXNzLmMgKGZpeGVkX3R5cGVfb3JfbnVsbCk6IEFsd2F5cyBzZXQgKm5vbm51bGwuCgoxOTk5LTEwLTEwICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBjcC10cmVlLmg6IFVzZSBIQVZFX0dDQ19WRVJTSU9OIGluc3RlYWQgb2YgZXhwbGljaXRseSB0ZXN0aW5nCglfX0dOVUNfXyBhbmQgX19HTlVDX01JTk9SX18uCgoxOTk5LTEwLTA5ICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogY3AtdHJlZS5oIChtYWtlX3J0bF9mb3JfbG9jYWxfc3RhdGljKTogTmV3IGZ1bmN0aW9uLgoJKiBkZWNsLmMgKG1ha2VfcnRsX2Zvcl9ub25sb2NhbF9kZWNsKTogTW92ZSBjb2RlIHRvIGNyZWF0ZSBSVEwgZm9yCglsb2NhbCBzdGF0aWNzIC4uLgoJKG1ha2VfcnRsX2Zvcl9sb2NhbF9zdGF0aWMpOiBIZXJlLgoJKiBzZW1hbnRpY3MuYyAoZXhwYW5kX3N0bXQpOiBVc2UgbWFrZV9ydGxfZm9yX2xvY2FsX3N0YXRpYy4KCjE5OTktMTAtMDggIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIG1ldGhvZC5jOiBJbmNsdWRlIHRtX3AuaC4KCjE5OTktMTAtNyAgIEZyYW56IFNpcmwgIDxGcmFuei5TaXJsLWtlcm5lbEBsYXV0ZXJiYWNoLmNvbT4KCgkqIGNwLXRyZWUuaCAoY3BfbWFrZV9sYWtlX3R5cGUpOiBSZW5hbWVkIGZyb20gbWFrZV9sYW5nX3R5cGUuCgkqIGxleC5jIChjcF9tYWtlX2xha2VfdHlwZSk6IExpa2V3aXNlLgoJKiB0cmVlLmMgKGluaXRfdHJlZSk6IEluaXQgbWFrZV9sYW5nX3R5cGVfZm4uCgoxOTk5LTEwLTA3ICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogcHQuYyAodHN1YnN0X2V4cHIpOiBTZXQgREVDTF9URU1QTEFURV9JTlNUQU5USUFURUQgZm9yIGEgY2F0Y2gKCXBhcmFtZXRlci4KCgkqIHNlbWFudGljcy5jIChleHBhbmRfc3RtdCk6IERvbid0IHByZXRlbmQgdG8gaGF2ZSBhc21zcGVjcyBmb3IKCWxvY2FsIHN0YXRpY3MgaWYgd2UgZG9uJ3QgcmVhbGx5IGhhdmUgdGhlbS4KCgkqIGlyLnRleGk6IEltcHJvdmUgZG9jdW1lbnRhdGlvbiBmb3IgU1RNVF9FWFBSLiAgRGVzY3JpYmUKCUNMRUFOVVBfUE9JTlRfRVhQUi4KCjE5OTktMTAtMDcgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIGNsYXNzLmMgKGJ1aWxkX3Z0YWJsZV9lbnRyeV9yZWYpOiBVc2UgZmluaXNoX2FzbV9zdG10LgoKMTk5OS0xMC0wNyAgR3JlZyBNY0dhcnkgIDxna21AZ251Lm9yZz4KCgkqIGNsYXNzLmMgKGZpbmlzaF9zdHJ1Y3RfMSk6IFVzZSBzaW1wbGVyIG1ldGhvZCBvZgoJcmVtb3ZpbmcgZWxlbWVudHMgb2YgYSBzaW5nbHktbGlua2VkIGxpc3Qgd2hpY2ggZG9lc24ndAoJbG9zZSBmb3IgY2xhc3NlcyB3aXRob3V0IGRhdGEgbWVtYmVycy4KCjE5OTktMTAtMDcgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBmcmllbmQuYyAobWFrZV9mcmllbmRfY2xhc3MpOiBSb2J1c3RpZnkuCgoJKiBzZW1hbnRpY3MuYyAoZmluaXNoX29iamVjdF9jYWxsX2V4cHIpOiBSZWplY3QgY2FsbHMgdG8gdGVtcGxhdGUKCXR5cGVzLgoKMTk5OS0xMC0wNiAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGR1bXAuYyAoZGVxdWV1ZV9hbmRfZHVtcCk6IER1bXAgYWxsIHRocmVlIG9wZXJhbmRzIHRvIGEgQ09ORF9FWFBSLgoKCSogY3AtdHJlZS5oIChDTEFTU1RZUEVfVkZJRUxEKTogUmVtb3ZlLgoJKiBjYWxsLmMgKGJ1aWxkX3ZmaWVsZF9yZWYpOiBVc2UgVFlQRV9WRklFTEQsIG5vdAoJQ0xBU1NUWVBFX1ZGSUVMRC4KCSogY2xhc3MuYyAoZ2V0X3ZmaWVsZF9vZmZzZXQpOiBMaWtld2lzZS4KCShmaW5pc2hfYmFzZV9zdHJ1Y3QpOiBMaWtld2lzZS4KCShtb2RpZnlfb25lX3Z0YWJsZSk6IExpa2V3aXNlLgoJKGZpeHVwX3Z0YWJsZV9kZWx0YXMpOiBMaWtld2lzZS4KCShmaW5pc2hfc3RydWN0XzEpOiBMaWtld2lzZS4KCSogaW5pdC5jIChleHBhbmRfdmlydHVhbF9pbml0KTogTGlrZXdpc2UuCgkqIHNlYXJjaC5jIChsb29rdXBfZmllbGRfMSk6IExpa2V3aXNlLgoJKGV4cGFuZF91cGNhc3RfZml4dXBzKTogTGlrZXdpc2UuCgkqIHR5cGVjay5jIChidWlsZF9jb21wb25lbnRfcmVmKTogTGlrZXdpc2UuCgkoYnVpbGRfYmluYXJ5X29wX25vZGVmYXVsdCk6IExpa2V3aXNlLgoKCSogZHVtcC5jIChkcXVldWVfYW5kX2R1bXApOiBEdW1wIFRZUEVfVkZJRUxELgoJKiBpci50ZXhpOiBEb2N1bWVudCBUWVBFX1ZGSUVMRC4KCjE5OTktMTAtMDYgIEJyZW5kYW4gS2Vob2UgIDxicmVuZGFuQGN5Z251cy5jb20+CgoJKiBkZWNsLmMgKGdyb2tkZWNsYXJhdG9yKTogT25seSB3YXJuIGFib3V0IG5vbnplcm8gYXJyYXlzIGlmCgkhaW5fc3lzdGVtX2hlYWRlciAobGludXggc29ja2V0Yml0cy5oIGNhbiBnaXZlIHRoaXMgZm9yCglfX2Ntc2dfZGF0YSwgd2hpY2ggaXMgdXNpbmcgYSBHTlUgZXh0ZW5zaW9uKS4KCjE5OTktMTAtMDUgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBkZWNsMi5jIChzdGFydF9zdGF0aWNfc3RvcmFnZV9kdXJhdGlvbl9mdW5jdGlvbik6IFB1c2ggdGhlCglmdW5jdGlvbiBkZWNsYXJhdGlvbiBzbyBpdCBlbmRzIHVwIGluIG5hbWVzcGFjZSBzY29wZS4KCgkqIGR1bXAuYyAoRFVNUF9DSElMRFJFTik6IFJlbW92ZS4KCShEVU1QX0JJTkZPKTogQWRqdXN0LgoJKHN0cnVjdCBkdW1wX25vZGVfaW5mbyk6IFJlbW92ZSBkdW1wX2NoaWxkcmVuX3AuCgkocXVldWVfYW5kX2R1bXBfdHlwZSk6IFJlbW92ZSBkdW1wX2NoaWxkcmVuX3AgcGFyYW1ldGVyLgoJKHF1ZXVlKTogRG9uJ3Qgc2V0IGR1bXBfY2hpbGRyZW5fcC4KCShkdW1wX2NoaWxkKTogUGFzcyBEVU1QX05PTkUsIGluc3RlYWQgb2YgRFVNUF9DSElMRFJFTiwgdG8KCXF1ZXVlX2FuZF9kdW1wX2luZGV4LgoJKGRlcXVldWVfYW5kX2R1bXApOiBVbmNvbmRpdGlvbmFsbHkgcHJpbnQgY2hpbGRyZW4uICBBZGp1c3QgY2FsbHMKCXRvIGZ1bmN0aW9ucyBtZW50aW9uZWQgYWJvdmUuCgkoZHVtcF9ub2RlKTogIFBhc3MgRFVNUF9OT05FLCBpbnN0ZWFkIG9mIERVTVBfQ0hJTERSRU4gdG8gcXVldWUuCgoJKiBpci50ZXhpOiBEb2N1bWVudCBCSU5EX0VYUFIsIExPT1BfRVhQUiwgYW5kIEVYSVRfRVhQUi4KCSogZHVtcC5jIChkZXF1ZXVlX2FuZF9kdW1wKTogRHVtcCB0aGVtLgoKCSogbWV0aG9kLmMgKHN5bnRoZXNpemVfbWV0aG9kKTogQ2FsbCBzZXR1cF92dGJsX3B0ciBmb3IgZGVzdHJ1Y3RvcnMuCgoJKiBkZWNsLmMgKHN0YXJ0X2Z1bmN0aW9uKTogU2V0IGN1cnJlbnRfaW5fY2hhcmdlX3Bhcm0gZm9yCgljb25zdHJ1Y3RvcnMsIHRvbywgd2hlcmUgYXBwcm9wcmlhdGUuCgkqIHNlYXJjaC5jIChmaXh1cF9hbGxfdmlydHVhbF91cGNhc3Rfb2Zmc2V0cyk6IE5ldyBmdW5jdGlvbi4KCShleHBhbmRfaW5kaXJlY3RfdnRibHNfaW5pdCk6IFVzZSBpdC4KCjE5OTktMTAtMDQgIE5hdGhhbiBTaWR3ZWxsICA8bmF0aGFuQGFjbS5vcmc+CgoJKiBkZWNsMi5jIChncm9rX2FsaWdub2YpOiBEb24ndCBkZWNheSBsdmFsdWVzLgoKCSogaW5pdC5jIChidWlsZF9uZXcpOiBSZW1vdmUgdW51c2VkIHZhcmlhYmxlLgoKMTk5OS0xMC0wNCAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGNwLXRyZWUuaCAoc3RydWN0IGxhbmd1YWdlX2Z1bmN0aW9uKTogUmVtb3ZlIHN0YXRpY19sYWJlbG5vLgoJKHN0YXRpY19sYWJlbG5vKTogUmVtb3ZlIG1hY3JvLgoJKiBtZXRob2QuYyAoYnVpbGRfb3ZlcmxvYWRfbmVzdGVkX25hbWUpOiBNYWtlIHN0YXRpY19sYWJlbG5vCglzdGF0aWMgaGVyZS4KCgkqIHB0LmMgKGluc3RhbnRpYXRlX2RlY2wpOiBVc2UgREVDTF9TQVZFRF9UUkVFLCBub3QgREVDTF9JTklUSUFMLAoJdG8gZGVjaWRlIHdoZXRoZXIgb3Igbm90IGEgZnVuY3Rpb24gaXMgZGVmaW5lZC4KCgkqIGNhbGwuYyAoYnVpbGRfb3Zlcl9jYWxsKTogRG9uJ3Qgc2V0IFRSRUVfU0lERV9FRkZFQ1RTIGZvcgoJc2l0dWF0aW9ucyB3aGVyZSBtYWtlX25vZGUgd2lsbCBkbyBpdCBhdXRvbWF0aWNhbGx5LgoJKiBkZWNsLmMgKGdyb2tfcmVmZXJlbmNlX2luaXQpOiBMaWtld2lzZS4KCShleHBhbmRfc3RhdGljX2luaXQpOiBMaWtld2lzZS4KCShkb19zdGF0aWNfaW5pdGlhbGl6YXRpb24pOiBMaWtld2lzZS4KCSogaW5pdC5jIChwZXJmb3JtX21lbWJlcl9pbml0KTogTGlrZXdpc2UuCgkoZXhwYW5kX2FnZ3JfaW5pdF8xKTogTGlrZXdpc2UuCgkoYnVpbGRfbmV3XzEpOiBMaWtld2lzZS4KCSogbWV0aG9kLmMgKGRvX2J1aWxkX2NvcHlfY29uc3RydWN0b3IpOiBMaWtld2lzZS4KCShkb19idWlsZF9hc3NpZ25fcmVmKTogTGlrZXdpc2UuCgkqIHNlYXJjaC5jIChleHBhbmRfdXBjYXN0X2ZpeHVwcyk6IExpa2V3aXNlLgoJKiBzZW1hbnRpY3MuYyAoZmluaXNoX3N0bXRfZXhwcik6IExpa2V3aXNlLgoJKiB0eXBlY2suYyAoYnVpbGRfdW5hcnlfb3ApOiBMaWtld2lzZS4KCShjaGVja19yZXR1cm5fZXhwcik6IExpa2V3aXNlLgoKMTk5OS0xMC0wNCAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogaW5pdC5jIChidWlsZF92ZWNfZGVsZXRlXzEpOiBGb2xkIENPTkRfRVhQUnMuCgoxOTk5LTEwLTAzICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogY3AtdHJlZS5kZWYgKFZFQ19JTklUX0VYUFIpOiBSZW1vdmUuCgkqIGNwLXRyZWUuaCAoc3RydWN0IHN0bXRfdHJlZSk6IE5ldyB0eXBlLgoJKHN0cnVjdCBzYXZlZF9zY29wZSk6IFJlbW92ZSBmaXJzdG9iai4gIEFkZCB4X3NhdmVkX3RyZWUsCgl4X3N0bXRfdHJlZS4KCShjbGFzc19jYWNoZV9maXJzdG9iaik6IFJlbW92ZS4KCShzdHJ1Y3QgbGFuZ3VhZ2VfZnVuY3Rpb24pOiBSZW1vdmUgc3RtdHNfYXJlX2Z1bGxfZXhwcnNfcCwKCXhfbGFzdF90cmVlLCBhbmQgeF9sYXN0X2V4cHJfdHlwZS4gIEFkZCB4X3N0bXRfdHJlZS4KCShjdXJyZW50X3N0bXRfdHJlZSk6IE5ldyBtYWNyby4KCShsYXN0X3RyZWUpOiBBZGp1c3QuCgkobGFzdF9leHByX3R5cGUpOiBMaWtld2lzZS4KCShkb2luZ19zZW1hbnRpY19hbmFseXNpc19wKTogU2ltcGxpZnkuCgkoc3RtdHNfYXJlX2Z1bGxfZXhwcnNfcCk6IEFkanVzdC4KCShiZWdpbl90cmVlKTogUmVtb3ZlIHByb3RvdHlwZS4KCShlbmRfdHJlZSk6IExpa2V3aXNlLgoJKGJlZ2luX3N0bXRfdHJlZSk6IENoYW5nZSBwcm90b3R5cGUuCgkoZmluaXNoX3N0bXRfdHJlZSk6IExpa2V3aXNlLgoJKGJ1aWxkaW5nX3N0bXRfdHJlZSk6IFNpbXBsaWZ5LgoJKiBkZWNsLmMgKG1hcmtfc3RtdF90cmVlKTogTmV3IGZ1bmN0aW9uLgoJKG1hcmtfc2F2ZWRfc2NvcGUpOiBVc2UgaXQuCgkoc3RhcnRfZnVuY3Rpb24pOiBSZWFycmFuZ2Ugc2xpZ2h0bHkgdG8gY2FsbCBiZWdpbl9zdG10X3RyZWUKCWVhcmxpZXIuCgkoc2F2ZV9mdW5jdGlvbl9kYXRhKTogVHdlYWsuCgkoZmluaXNoX2Z1bmN0aW9uKTogQWRqdXN0IGNhbGwgdG8gZmluaXNoX3N0bXRfdHJlZS4KCShtYXJrX2xhbmdfZnVuY3Rpb24pOiBVc2UgbWFya19zdG10X3RyZWUuCgkqIGV4cHIuYyAoY3BsdXNfZXhwYW5kX2V4cHIpOiBEb24ndCBoYW5kbGUgVkVDX0lOSVRfRVhQUi4KCSogaW5pdC5jIChidWlsZF9uZXdfMSk6IFJlbW92ZSBjcmVhdGlvbiBvZiBWRUNfSU5JVF9FWFBSLgoJKGJ1aWxkX3ZlY19pbml0KTogUmVtb3ZlIGNyZWF0aW9uIG9mIHN0YW5kLWluIGluaXRpYWxpemVyLgoJKiBwdC5jIChiZWdpbl90cmVlKTogUmVtb3ZlLgoJKGVuZF90cmVlKTogTGlrZXdpc2UuCgkqIHNlbWFudGljcy5jIChTRVRfTEFTVF9TVE1UKTogTmV3IG1hY3JvLiAgVXNlIGl0IHRocm91Z2hvdXQuCgkoYmVnaW5fY29tcG91bmRfc3RtdCk6IEhhbmRsZSBhIGNvbXBvdW5kLXN0YXRlbWVudCBvdXRzaWRlIG9mIGEKCWZ1bmN0aW9uLgoJKGJlZ2luX3N0bXRfZXhwcik6IEhhbmRsZSBhIHN0YXRlbWVudC1leHByZXNzaW9uIG91dHNpZGVmIG9mIGEKCWZ1bmN0aW9uLgoJKGZpbmlzaF9zdG10X2V4cHIpOiBMaWtld2lzZS4KCShiZWdpbl9jbGFzc19kZWZpbml0aW9uKTogRG9uJ3QgY2FsbCBiZWdpbl90cmVlLgoJKGZpbmlzaF9pbmxpbmVfZGVmaW5pdGlvbnMpOiBEb24ndCBjYWxsIGVuZF90cmVlLgoJKGJlZ2luX3N0bXRfdHJlZSk6IFRha2UgYSBwb2ludGVyIHRvIHRyZWUsIG5vdCBhIGZ1bmN0aW9uIGFzIGlucHV0LgoJKGZpbmlzaF9zdG10X3RyZWUpOiBMaWtld2lzZS4KCSogdHJlZS5jIChzZWFyY2hfdHJlZSk6IERvbid0IGhhbmRsZSBWRUNfSU5JVF9FWFBSLgoJKG1hcGNhcik6IExpa2V3aXNlLgoKCSogcGFyc2UueSAoc2ltcGxlX3N0bXQpOiBEb24ndCBjYWxsIGZpbmlzaF9zdG10IHVubmVjZXNzYXJpbHkuCgkqIHBhcnNlLmM6IFJlZ2VuZXJhdGVkLgoKCSogZHVtcC5jIChkcXVldWVfYW5kX2R1bXApOiBEdW1wIGJpdGZpZWxkbmVzcy4KCgkqIHRyZWUuYyAobHZhbHVlX3BfMSk6IFVzZSBERUNMX0NfQklUX0ZJRUxEIHRvIGNoZWNrIGZvcgoJYml0ZmllbGRzLCByYXRoZXIgdGhhbiBERUNMX0JJVF9GSUVMRC4KCSogaXIudGV4aTogRG9jdW1lbnQgaG93IHRvIHRlbGwgd2hldGhlciBvciBub3QgYSBmaWVsZCBpcyBhCgliaXRmaWVsZC4KCgkqIGxleC5jIChtYWtlX2xhbmdfdHlwZSk6IEZpeCB0eXBvIGluIGNvbW1lbnQuCgoxOTk5LTEwLTAxICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiB0eXBlY2suYyAoZGVjYXlfY29udmVyc2lvbik6IFN0cmlwIGN2LXF1YWxzIGZyb20gbm9uLWNsYXNzIHJ2YWx1ZXMuCgoxOTk5LTEwLTAxICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogcHQuYyAodHN1YnN0X2RlY2wpOiBJZiB0aGUgdHlwZSBvZiBhIHRlbXBsYXRlIGluc3RhbnRpYXRpb24gaXMKCWJvZ3VzLCBzbyBpcyB0aGUgd2hvbGUgaW5zdGFudGlhdGlvbi4KCjE5OTktMDktMzAgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBkZWNsLmMgKGluaXRpYWxpemVfbG9jYWxfdmFyKTogSGFuZGxlIHN0YXRpYyB2YXJpYWJsZXMgaGVyZS4KCShjcF9maW5pc2hfZGVjbCk6IFR3ZWFrIGhhbmRsaW5nIG9mIGZ1bmN0aW9uLXNjb3BlIHN0YXRpYwoJdmFyaWFibGVzLgoJKiBzZW1hbnRpY3MuYyAoZXhwYW5kX3N0bXQpOiBIYW5kbGUgREVDTF9TVE1UcyBmb3Igc3RhdGljCgl2YXJpYWJsZXMuCgoJKiBtZXRob2QuYyAoZW1pdF90aHVuayk6IERvbid0IGNyYXNoIHdoZW4gLWZzeW50YXgtb25seS4KCgkqIGNwLXRyZWUuaCAobGFuZ19kZWNsX2ZsYWdzKTogQWRkIGdsb2JhbF9jdG9yX3AgYW5kCglnbG9iYWxfZHRvcl9wLiAgQWRkIGluaXRfcHJpb3JpdHkuCgkoREVDTF9BQ0NFU1MpOiBBZGp1c3QgYWNjb3JkaW5nbHkuCgkoREVDTF9HTE9CQUxfQ1RPUl9QLCBERUNMX0dMT0JBTF9EVE9SX1ApOiBOZXcgbWFjcm9zLgoJKEdMT0JBTF9JTklUX1BSSU9SSVRZKTogTGlrZXdpc2UuCgkqIGRlY2wuYyAobGFuZ19tYXJrX3RyZWUpOiBBZGp1c3QgYWNjb3JkaW5nbHkuCgkoc3RhcnRfb2JqZWN0cyk6IFNldCBERUNMX0dMT0JBTF9DVE9SX1AsIERFQ0xfR0xPQkFMX0RUT1JfUCwKCWFuZCBHTE9CQUxfSU5JVF9QUklPUklUWS4KCSogZHVtcC5jIChkZXF1ZXVlX2FuZF9kdW1wKTogUHJpbnQgdGhlbS4KCSogaXIudGV4aTogRG9jdW1lbnQgdGhlbS4KCgkqIGRlY2wyLmMgKHN0cnVjdCBwcmlvcml0eV9pbmZvX3MpOiBSZW1vdmUgaW5pdGlhbGl6YXRpb25fc2VxdWVuY2UKCWFuZCBkZXN0cnVjdGlvbl9zZXF1ZW5jZS4KCShzdGFydF9zdGF0aWNfc3RvcmFnZV9kdXJhdGlvbl9mdW5jdGlvbik6IFJldHVybiB0aGUgYm9keSBvZiB0aGUKCWZ1bmN0aW9uLiAgQ29udmVydCBmb3IgZnVuY3Rpb24tYXQtYS10aW1lIG1vZGUuCgkoZ2VuZXJhdGVfaW5pdHNfZm9yX3ByaW9yaXR5KTogUmVtb3ZlLgoJKGZpbmlzaF9zdGF0aWNfc3RvcmFnZV9kdXJhdGlvbl9mdW5jdGlvbik6IENoYW5nZSBwcm90b3R5cGUuCglBZGp1c3QgZm9yIGZ1bmN0aW9uLWF0LWEtdGltZSBtb2RlLgoJKGRvX3N0YXRpY19pbml0aWFsaXphdGlvbik6IExpa2V3aXNlLgoJKGRvX3N0YXRpY19kZXN0cnVjdGlvbik6IExpa2V3aXNlLgoJKGRvX3N0YXRpY19pbml0aWFsaXphdGlvbl9hbmRfZGVzdHJ1Y3Rpb24pOiBSZW1vdmUuCgkoc3RhcnRfc3RhdGljX2luaXRpYWxpemF0aW9uX29yX2Rlc3RydWN0aW9uKTogTmV3IGZ1bmN0aW9uLgoJKGZpbmlzaF9zdGF0aWNfaW5pdGlhbGl6YXRpb25fb3JfZGVzdHJ1Y3Rpb24pOiBMaWtld2lzZS4KCShnZXRfcHJpb3JpdHlfaW5mbyk6IERvbid0IG1hbmlwdWxhdGlvbiBpbml0aWFsaXphdGlvbl9zZXF1ZW5jZSBvcgoJZGVzdHJ1Y3Rpb25fc2VxdWVuY2UuCgkocHJ1bmVfdmFyc19uZWVkaW5nX25vX2luaXRpYWxpemF0aW9uKTogTmV3IGZ1bmN0aW9uLgoJKHdyaXRlX291dF92YXJzKTogTGlrZXdpc2UuCgkoZmluaXNoX2ZpbGUpOiBVc2UgdGhlIHZhcmlvdXMgbmV3IGZ1bmN0aW9ucyBpbnN0ZWFkIG9mIHRoZSBvbGQuCgpUaHUgU2VwIDMwIDAwOjEzOjI3IDE5OTkgIERpcmsgWm9sbGVyICA8ZHV6QHJ0c2ZmbS5jb20+CgoJKiBjcC10cmVlLmggKHdhcm5fZmxvYXRfZXF1YWwpOiBEZWNsYXJlLgoJKiBkZWNsMi5jICh3YXJuX2Zsb2F0X2VxdWFsKTogRGVmaW5lLgoJKGxhbmdfZGVjb2RlX29wdGlvbik6IFJlY29nbml6ZSAtV1tuby1dZmxvYXQtZXF1YWwuCgkqIHR5cGVjay5jIChidWlsZF9iaW5hcnlfb3Bfbm9kZWZhdWx0KTogQ29uZGl0aW9uYWxseSB3YXJuCglhYm91dCBlcXVhbGl0eSB0ZXN0cyBvZiBmbG9hdGluZyBwb2ludCB0eXBlcy4KCjE5OTktMDktMjkgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCglTdXBwb3J0IG5vcm1hbCB0eXBlX2luZm8tYmFzZWQgRUggbWVjaGFuaXNtcyB3aXRoIC1mbm8tcnR0aS4KCSogZXhjZXB0LmMgKGJ1aWxkX2VoX3R5cGVfdHlwZSk6IFJlbW92ZSBzcGVjaWFsIC1mbm8tcnR0aSBoYW5kbGluZy4KCShidWlsZF9laF90eXBlX3R5cGVfcmVmKTogTGlrZXdpc2UuCgkoYnVpbGRfZWhfdHlwZSk6IFJlbW92ZS4KCShleHBhbmRfdGhyb3cpOiBDYWxsIGJ1aWxkX2VoX3R5cGVfdHlwZSwgbm90IGJ1aWxkX2VoX3R5cGUuCgkqIGRlY2wyLmMgKGltcG9ydF9leHBvcnRfZGVjbCk6IERvbid0IGFzc29jaWF0ZSB0aGUgdGluZm8gZm4gd2l0aAoJdGhlIHZ0YWJsZSBpZiAtZm5vLXJ0dGkuCgkqIGRlY2wuYyAoaW5pdF9kZWNsX3Byb2Nlc3NpbmcpOiBBbHdheXMgaW5pdF9ydHRpX3Byb2Nlc3NpbmcuCgoJKiBydHRpLmMgKGdldF90eXBlaWQpOiBEb24ndCBjb21wbGFpbiBhYm91dCAtZm5vLXJ0dGkuCgoJKiBjbGFzcy5jIChjbGFzc19jYWNoZV9vYnN0YWNrLCBjbGFzc19vYnN0YWNrKTogUmVtb3ZlLgoJKGluaXRfY2xhc3NfcHJvY2Vzc2luZyk6IERvbid0IGluaXRpYWxpemUgY2xhc3Nfb2JzdGFjay4KCShwdXNoX2NhY2hlX29ic3RhY2spOiBSZW1vdmUuCgkocHVzaGNsYXNzKTogRG9uJ3QgY2FsbCBpdC4KCSogY3AtdHJlZS5oOiBSZW1vdmUgcHJvdG90eXBlIGZvciBwdXNoX2NhY2hlX29ic3RhY2suCgkqIGRlY2wuYyAoZGVjbF9vYnN0YWNrLCBkZWNsX3N0YWNrLCBwdXNoX2RlY2xfbGV2ZWwpOiBSZW1vdmUuCgkocHVzaGxldmVsX2NsYXNzKTogRG9uJ3QgcHVzaF9kZWNsX2xldmVsLgoJKHBvcGxldmVsX2NsYXNzKTogRG9uJ3QgcG9wX3N0YWNrX2xldmVsLgoJKHB1c2hfY2xhc3NfbGV2ZWxfYmluZGluZyk6IERvbid0IHB1c2hfY2FjaGVfb2JzdGFjay4KCShpbml0X2RlY2xfcHJvY2Vzc2luZyk6IERvbid0IGluaXRpYWxpemUgZGVjbF9vYnN0YWNrLgoJKiBzZWFyY2guYyAocHVzaF9jbGFzc19kZWNscyk6IERvbid0IHB1c2hfY2FjaGVfb2JzdGFjay4KCSogdHJlZS5jIChsaXN0X2hhc2hfYWRkKTogUHV0IGhhc2ggbm9kZSBvbiBwZXJtYW5lbnRfb2JzdGFjay4KCShoYXNoX3RyZWVfY29ucyk6IERvbid0IG1lc3Mgd2l0aCBvYnN0YWNrcy4KCShwcmludF9sYW5nX3N0YXRpc3RpY3MpOiBEb24ndCBwcmludCBzdGF0cyBmb3IgY2xhc3Nfb2JzdGFjayBhbmQKCWRlY2xfb2JzdGFjay4KCjE5OTktMDktMjkgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBkdW1wLmMgKGRlcXVldWVfYW5kX2R1bXApOiBEdW1wIERFQ0xfRVhURVJOQUwuCgkqIGlyLnRleGk6IERvY3VtZW50IERFQ0xfRVhURVJOQUwuCgoJKiBkdW1wLmMgKGRlcXVldWVfYW5kX2R1bXApOiBJbXByb3ZlIHN1cHBvcnQgZm9yIGR1bXBpbmcgVEhVTktfREVDTHMuCgkqIGlyLnRleGk6IERvY3VtZW50IFRIVU5LX0RFQ0xzLgoKCSogY3AtdHJlZS5oIChUTVBMX0FSR1NfSEFWRV9NVUxUSVBMRV9MRVZFTFMpOiBNb3ZlIGhlcmUgZnJvbSBwdC5jLgoJKFRNUExfQVJHU19ERVBUSCwgVE1QTF9BUkdTX0xFVkVMLCBTRVRfVE1QTF9BUkdTX0xFVkVMKTogTGlrZXdpc2UuCgkoVE1QTF9BUkcsIFNFVF9UTVBMX0FSRywgTlVNX1RNUExfQVJHUywgVE1QTF9QQVJNU19ERVBUSCk6IExpa2V3aXNlLgoJKiBlcnJvci5jIChkdW1wX3RlbXBsYXRlX2JpbmRpbmdzKTogUmVtb3ZlIHVudXNlZCBwYXJhbWV0ZXIuCglIYW5kbGUgbXVsdGlwbGUgbGV2ZWxzIG9mIHRlbXBsYXRlIHBhcmFtZXRlcnMuCgkoZHVtcF90ZW1wbGF0ZV9kZWNsKTogVXNlIGBwYXJtcycsIG5vdCBgYXJncycsIGZvciB0ZW1wbGF0ZQoJcGFyYW1ldGVycy4gIEZpeCB0aGlua28uCgkoZHVtcF9mdW5jdGlvbl9kZWNsKTogVXNlIERFQ0xfVEVNUExBVEVfSU5TVEFOVElBVElPTi4gIERvbid0IHBhc3MKCWZsYWdzIHRvIGR1bXBfdGVtcGxhdGVfYmluZGluZ3MuCgkqIHB0LmMgKFRNUExfQVJHU19IQVZFX01VTFRJUExFX0xFVkVMUyk6IE1vdmUgdG8gY3AtdHJlZS5oLgoJKFRNUExfQVJHU19ERVBUSCwgVE1QTF9BUkdTX0xFVkVMLCBTRVRfVE1QTF9BUkdTX0xFVkVMKTogTGlrZXdpc2UuCgkoVE1QTF9BUkcsIFNFVF9UTVBMX0FSRywgTlVNX1RNUExfQVJHUywgVE1QTF9QQVJNU19ERVBUSCk6IExpa2V3aXNlLgoJKHRzdWJzdF9jb3B5KTogQ2xhcmlmeSB2YXJpYWJsZSBuYW1lLgoJKG1vc3RfZ2VuZXJhbF90ZW1wbGF0ZSk6IFJvYnVzdGlmeS4KCjE5OTktMDktMjkgIE5hdGhhbiBTaWR3ZWxsICA8bmF0aGFuQGFjbS5vcmc+CgoJKiBlcnJvci5jIChkdW1wX3RlbXBsYXRlX3Bhcm1zKTogRG9uJ3QgdXNlIFRTX1BFREFOVElDX05BTUUKCXRvIGNoYW5nZSBwcmltYXJ5IHRlbXBsYXRlIHJlbmRlcmluZy4KCjE5OTktMDktMjkgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjcC10cmVlLmggKFVQVF9URU1QTEFURSk6IFJlbW92ZS4KCShVUFRfUEFSTVMpOiBMaWtld2lzZS4KCShERUNMX05FRURFRF9QKTogTmV3IG1hY3JvLgoJKiBkZWNsMi5jIChmaW5pc2hfdnRhYmxlX3ZhcmRlY2wpOiBVc2UgaXQuCgkoZmluaXNoX29iamVjdHMpOiBEb24ndCBjcmFzaCB3aXRoIC1mc3ludGF4LW9ubHkuCgkoZmluaXNoX2ZpbGUpOiBVc2UgREVDTF9ORUVERURfUC4gIERvbid0IHBydW5lIHZ0YWJsZXMgd2hlbgoJLWZzeW50YXgtb25seS4KCSogcHQuYyAodHN1YnN0X2ZyaWVuZF9mdW5jdGlvbik6IFJlbW92ZSBGSVhNRSB0aGF0IHRhbGtzIGFib3V0CglvYnN0YWNrcy4KCSh0c3Vic3RfZXhwcik6IENvcnJlY3QgaGFuZGxpbmcgb2YgZnVuY3Rpb24gdHJ5LWJsb2Nrcy4KCSogc2VtYW50aWNzLmM6IEluY2x1ZGUgZmxhZ3MuaC4KCShleHBhbmRfYm9keSk6IERvbid0IGRvIFJUTCBnZW5lcmF0aW9uIGlmIC1mc3ludGF4LW9ubHkuCgkqIE1ha2VmaWxlLmluIChzZW1hbnRpY3Mubyk6IERlcGVuZHMgb24gZmxhZ3MuaC4KCjE5OTktMDktMjggIEdhYnJpZWwgRG9zIFJlaXMgIDxnZHJAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIHB0LmMgKG1vc3RfZ2VuZXJhbF90ZW1wbGF0ZSk6IEFkanVzdCBkZWNsYXJhdGlvbi4KCgkqIGNwLXRyZWUuaDogKG1vc3RfZ2VuZXJhbF90ZW1wbGF0ZSk6IERlY2xhcmUuCgoJKiBlcnJvci5jIChkdW1wX3RlbXBsYXRlX3ZhbHVlKTogUmVuYW1lIHRvIC4uLgoJKGR1bXBfdGVtcGxhdGVfYXJndW1lbnQpOiBUaGlzLgoJKGR1bXBfdGVtcGxhdGVfYXJndW1lbnRfbGlzdCk6IE5ldyBmdW5jdGlvbi4KCShkdW1wX3R5cGUpOiBVc2UgaXQuCgkoZHVtcF90ZW1wbGF0ZV9wYXJhbWV0ZXIpOiBOZXcgZnVuY3Rpb24uCgkoZHVtcF90ZW1wbGF0ZV9kZWNsKTogVXNlIGl0LgoJKGR1bXBfdGVtcGxhdGVfYmluZGluZ3MpOiBOZXcgZnVuY3Rpb24uCgkoZHVtcF9mdW5jdGlvbl9kZWNsKTogVXNlIGl0LiBQcmV0dHkgcHJpbnQgZnVuY3Rpb24gdGVtcGxhdGUKCWluc3RhbnRpYXRpb25zLgoKMTk5OS0wOS0yOCAgTmF0aGFuIFNpZHdlbGwgIDxuYXRoYW5AYWNtLm9yZz4KCgkqIGRlY2wuYyAoZ3Jva2RlY2xhcmF0b3IpOiBEaXN0aW5ndWlzaCBwYXJhbWV0ZXIgY29udGV4dCBmb3IKCWRpYWdub3N0aWNzLiBUaWR5IHVwIG1pc3NpbmcgdHlwZSBkaWFnbm9zdGljLgoJRGlhZ25vc2UgYGV4cGxpY2l0JyBpbiBvbmUgcGxhY2UuIERpYWdub3NlIGBtdXRhYmxlJyBpbiBvbmUgcGxhY2UuCgoxOTk5LTA5LTI4ICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogaXIudGV4aTogSW1wcm92ZSBkb2N1bWVudGF0aW9uIGZvciBUQVJHRVRfRVhQUi4KCjE5OTktMDktMjcgIE5hdGhhbiBTaWR3ZWxsICA8bmF0aGFuQGFjbS5vcmc+CgoJQXVnbWVudCBzdHJpbmdpZmljYXRpb24gb2YgdHJlZXMuCgkqIGNwLXRyZWUuaCAodHJlZV9zdHJpbmdfZmxhZ3MpOiBOZXcgZXJyb3Igc3RyaW5naWZ5aW5nIGVudW1lcmF0aW9uLgoJKGZuZGVjbF9hc19zdHJpbmcsIHR5cGVfYXNfc3RyaW5nX3JlYWwsIGFyZ3NfYXNfc3RyaW5nLAoJY29kZV9hc19zdHJpbmcsIGxhbmd1YWdlX2FzX3N0cmluZywgcGFybV9hc19zdHJpbmcsCglvcF9hc19zdHJpbmcsIGFzc29wX2FzX3N0cmluZywgY3ZfYXNfc3RyaW5nKTogUmVtb3ZlLgoJKHR5cGVfYXNfc3RyaW5nLCBkZWNsX2FzX3N0cmluZywgZXhwcl9hc19zdHJpbmcpOiBBZGp1c3QgcHJvdG90eXBlLgoJKGNvbnRleHRfYXNfc3RyaW5nKTogRGVjbGFyZSBuZXcgZnVuY3Rpb24uCgkqIGVycm9yLmMgKGNwX3ByaW50ZXJzKTogTW92ZSBkZWZpbml0aW9uLgoJKE9CX1VOUFVUKTogUmVtb3ZlLgoJKE9CX0VORF9URU1QTEFURV9JRCk6IEFkanVzdC4KCShpbnRlcmVzdGluZ19zY29wZV9wKTogUmVtb3ZlLgoJKGR1bXBfc2NvcGUpOiBOZXcgc3RhdGljIGZ1bmN0aW9uLgoJKGR1bXBfcXVhbGlmaWVycyk6IEFkanVzdCBwcm90b3R5cGUsIHJlaW1wbGVtZW50LgoJKGR1bXBfdGVtcGxhdGVfdmFsdWUpOiBVc2UgdHJlZV9zdHJpbmdfZmxhZ3MuCgkoZHVtcF90eXBlX3JlYWwpOiBNb3ZlIGJhY2sgdG8gZHVtcF90eXBlLgoJKGR1bXBfdHlwZSk6IEFkanVzdCBwcm90b3R5cGUuIFVzZSB0cmVlX3N0cmluZ19mbGFncy4KCShkdW1wX2FnZ3JfdHlwZSk6IExpa2V3aXNlLiBVc2UgZHVtcF90ZW1wbGF0ZV9wYXJtcy4KCShkdW1wX3R5cGVfcHJlZml4KTogQWRqdXN0IHByb3RvdHlwZS4gVXNlIHRyZWVfc3RyaW5nX2ZsYWdzLgoJUmV0dXJuIHBhZCBmbGFnLgoJKGR1bXBfdHlwZV9zdWZmaXgpOiBBZGp1c3QgcHJvdG90eXBlLiBVc2UgdHJlZV9zdHJpbmdfZmxhZ3MuCgkoZHVtcF9zaW1wbGVfZGVjbCk6IExpa2V3aXNlLgoJKGR1bXBfZGVjbCk6IExpa2V3aXNlLiBVc2UgZHVtcF90ZW1wbGF0ZV9kZWNsLgoJKGR1bXBfdGVtcGxhdGVfZGVjbCk6IE5ldyBzdGF0aWMgZnVuY3Rpb24gYnJva2VuIG91dCBvZiBkdW1wX2RlY2wuCgkoZHVtcF9mdW5jdGlvbl9kZWNsKTogQWRqdXN0IHByb3RvdHlwZS4gVXNlIHRyZWVfc3RyaW5nX2ZsYWdzLgoJKGR1bXBfcGFyYW1ldGVycyk6IExpa2V3aXNlLiBQcmVmaXggc3BhY2UuCgkoZHVtcF9leGNlcHRpb25fc3BlYyk6IEFkanVzdCBwcm90b3R5cGUuIFVzZSB0cmVlX3N0cmluZ19mbGFncy4KCShkdW1wX2Z1bmN0aW9uX25hbWUpOiBMaWtld2lzZS4gVXNlIGR1bXBfdGVtcGxhdGVfcGFybXMuCgkoZHVtcF90ZW1wbGF0ZV9wYXJtcyk6IE5ldyBzdGF0aWMgZnVuY3Rpb24gYnJva2VuIG91dCBvZgoJZHVtcF9mdW5jdGlvbl9uYW1lLgoJKGR1bXBfZXhwcl9saXN0KTogQWRqdXN0IHByb3RvdHlwZS4gVXNlIHRyZWVfc3RyaW5nX2ZsYWdzLgoJKGR1bXBfZXhwcik6IExpa2V3aXNlLgoJKGZuZGVjbF9hc19zdHJpbmcpOiBSZW1vdmVkCgkodHlwZV9hc19zdHJpbmdfcmVhbCk6IFJlbW92ZWQKCShkdW1wX2JpbmFyeV9vcCk6IEFkanVzdCBwcm90b3R5cGUuIFVzZSB0cmVlX3N0cmluZ19mbGFncy4KCShkdW1wX3VuYXJ5X29wKTogTGlrZXdpc2UuCgkodHlwZV9hc19zdHJpbmcpOiBMaWtld2lzZS4KCShleHByX2FzX3N0cmluZyk6IExpa2V3aXNlLgoJKGRlY2xfYXNfc3RyaW5nKTogTGlrZXdpc2UuCgkoY29udGV4dF9hc19zdHJpbmcpOiBOZXcgZnVuY3Rpb24uCgkobGFuZ19kZWNsX25hbWUpOiBBZGp1c3QuCgkoZGVjbF90b19zdHJpbmcpOiBOZXcgc3RhdGljIHByaW50IGNhbGxiYWNrLgoJKGV4cHJfdG9fc3RyaW5nKTogTGlrZXdpc2UuCgkoZm5kZWNsX3RvX3N0cmluZyk6IExpa2V3aXNlLgoJKGNvZGVfYXNfc3RyaW5nKTogUmVuYW1lZCB0byAuLi4KCShjb2RlX3RvX3N0cmluZyk6IC4uLiBoZXJlLiBBZGp1c3QuCgkobGFuZ3VhZ2VfYXNfc3RyaW5nKTogUmVuYW1lZCB0byAuLi4KCShsYW5ndWFnZV90b19zdHJpbmcpOiAuLi4gaGVyZS4gQWRqdXN0LgoJKHBhcm1fYXNfc3RyaW5nKTogUmVuYW1lZCB0byAuLi4KCShwYXJtX3RvX3N0cmluZyk6IC4uLiBoZXJlLgoJKG9wX2FzX3N0cmluZyk6IFJlbmFtZWQgdG8gLi4uCgkob3BfdG9fc3RyaW5nKTogLi4uIGhlcmUuCgkoYXNzb3BfYXNfc3RyaW5nKTogUmVuYW1lZCB0byAuLi4KCShhc3NvcF90b19zdHJpbmcpOiAuLi4gaGVyZS4KCSh0eXBlX3RvX3N0cmluZyk6IE5ldyBzdGF0aWMgcHJpbnQgY2FsbGJhY2suCgkoYXJnc19hc19zdHJpbmcpOiBSZW5hbWVkIHRvIC4uLgoJKGFyZ3NfdG9fc3RyaW5nKTogLi4uIGhlcmUuIEFkanVzdC4KCShjdl9hc19zdHJpbmcpOiBSZW5hbWVkIHRvIC4uLgoJKGN2X3RvX3N0cmluZyk6IC4uLiBoZXJlLiBBZGp1c3QuCgkqIHB0LmMgKG1hbmdsZV9jbGFzc19uYW1lX2Zvcl90ZW1wbGF0ZSk6IFVzZSB0cmVlX3N0cmluZ19mbGFncy4KCShwcmludF90ZW1wbGF0ZV9jb250ZXh0KTogTGlrZXdpc2UuCgoxOTk5LTA5LTI2ICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogY3AtdHJlZS5oIChleHBhbmRfdGhyb3cpOiBSZW1vdmUgcHJvdG90eXBlLgoJKiBleGNlcHQuYyAoZXhwYW5kX3Rocm93KTogTWFrZSBpdCBzdGF0aWMuICBVc2UgdHJlZS1nZW5lcmF0aW9uCglmdW5jdGlvbnMsIHJhdGhlciB0aGFuIFJUTC1nZW5lcmF0aW9uIGZ1bmN0aW9ucy4KCShidWlsZF90aHJvdyk6IFVzZSBpdC4KCSogZXhwci5jOiBJbmNsdWRlIGV4Y2VwdC5oLgoJKGNwbHVzX2V4cGFuZF9leHByKTogRG9uJ3QgY2FsbCBleHBhbmRfdGhyb3cgaGVyZS4KCSogTWFrZWZpbGUuaW4gKGV4cHIubyk6IERlcGVuZCBvbiBleGNlcHQuaC4KCSogaXIudGV4aTogVXBkYXRlIGRvY3VtZW50YXRpb24gZm9yIFRIUk9XX0VYUFIuCgoJKiBkZWNsLmMgKHN0YXJ0X2Z1bmN0aW9uKTogU2V0IHhfZG9udF9zYXZlX3BlbmRpbmdfc2l6ZXMgcmF0aGVyCgl0aGFuIGNhbGxpbmcgZ2V0X3BlbmRpbmdfc2l6ZXMuCgkqIGluaXQuYyAoYnVpbGRfbmV3KTogRG9uJ3Qgc2F2ZSBhbmQgcmVzdG9yZQoJaW1tZWRpYXRlX3NpemVfZXhwYW5kOyBpbnN0ZWFkLCBhc3NlcnQgdGhhdCBpdCBoYXMgdGhlIGV4cGVjdGVkCgl2YWx1ZSBhbHJlYWR5LgoKMTk5OS0wOS0yNiAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogbGV4LmMgKGNvbXBpbGVyX2Vycm9yKTogQWRkIG1pc3NpbmcgY2FsbCB0byB2YV9lbmQoKS4KCjE5OTktMDktMjUgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBkdW1wLmMgKGRlcXVldWVfYW5kX2R1bXApOiBIYW5kbGUgUkVTVUxUX0RFQ0wuCgkqIGlyLnRleGk6IERvY3VtZW50IFJFU1VMVF9ERUNMIGFuZCBERUNMX1JFU1VMVC4KCgkqIGNwLXRyZWUuaCAoY2hlY2tfcmV0dXJuX2V4cHIpOiBOZXcgZnVuY3Rpb24uCgkqIGRlY2wuYyAoZmluaXNoX2NvbnN0cnVjdG9yX2JvZHkpOiBOZXcgZnVuY3Rpb24uCgkocHVzaGRlY2wpOiBQdXQgZ2xvYmFsIGZyaWVuZCBmdW5jdGlvbnMgaW4gbmFtZXNwYWNlIGJpbmRpbmcKCWxldmVsLCBub3QgdGhlIGNsYXNzIGJpbmRpbmcgbGV2ZWwuCgkoZmluaXNoX2Rlc3RydWN0b3JfYm9keSk6IE1ha2Ugc3VyZSB0aGUgZHRvcl9sYWJlbCBpcyBhbHdheXMKCWRlZmluZWQuICBGaXggdHlwbyBpbiBjb21tZW50LgoJKGZpbmlzaF9mdW5jdGlvbik6IE1vdmUgZ2VuZXJhdGlvbiBvZiBjb25zdHJ1Y3Rvci10ZXJtaW5hdGlvbiBjb2RlCgl0byBzZW1hbnRpYy1hbmFseXNpcyB0aW1lLiAgTW92ZSBnZW5lcmF0aW9uIG9mIGltcGxpY2l0IGBtYWluJwoJcmV0dXJuIHZhbHVlIHRvIHNlbWFudGljLWFuYWx5c2lzIHRpbWUuCgkqIHNlbWFudGljcy5jIChmaW5pc2hfcmV0dXJuX3N0bXQpOiBHZW5lcmF0ZSBnb3RvJ3MgdG8KCWN0b3JfbGFiZWwvZHRvcl9sYWJlbCBoZXJlLiAgVXNlIGNoZWNrX3JldHVybl9leHByIHRvIGRvIHNlbWFudGljCglhbmFseXNpcyBvbiB0aGUgcmV0dXJuZWQgZXhwcmVzc2lvbi4KCSogdHlwZWNrLmMgKG1heWJlX3dhcm5fYWJvdXRfcmV0dXJuaW5nX2FkZHJlc3Nfb2ZfbG9jYWwpOiBOZXcKCWZ1bmN0aW9uIHNwbGl0IG91dCBmcm9tIGNfZXhwYW5kX3JldHVybi4KCShjaGVja19yZXR1cm5fZXhwcik6IExpa2V3aXNlLgoJKGNfZXhwYW5kX3JldHVybik6IEp1c3QgZ2VuZXJhdGUgdGhlIFJUTCBmb3IgdGhlIHJldHVybi4KCjE5OTktMDktMjQgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjcC10cmVlLmggKENQVElfQ0xFQU5VUF9UWVBFKTogTmV3IG1hY3JvLgoJKGNsZWFudXBfdHlwZSk6IExpa2V3aXNlLgoJKHNlYXJjaF90cmVlKTogQ2hhbmdlIHByb3RvdHlwZS4KCSogZGVjbC5jIChsb2NhbF92YXJpYWJsZV9wKTogQWRqdXN0IGZvciBuZXcgaW50ZXJmYWNlIHRvCglzZWFyY2hfdHJlZS4KCShjaGVja19kZWZhdWx0X2FyZ3VtZW50KTogTGlrZXdpc2UuCgkqIGVycm9yLmMgKGR1bXBfZXhwcik6IEhhbmRsZSBJTklUX0VYUFIuCgkqIGV4Y2VwdC5jIChleHBhbmRfdGhyb3cpOiBEb24ndCBtYWtlIGNsZWFudXBfdHlwZSBhIGxvY2FsIHN0YXRpYy4KCSogZXhwci5jIChjcGx1c19leHBhbmRfZXhwcik6IERvbid0IGhhbmRsZSBORVdfRVhQUi4KCSogaW5pdC5jIChidWlsZF9uZXcpOiBDYWxsIGJ1aWxkX25ld18xIGRpcmVjdGx5LCByYXRoZXIgdGhhbgoJYnVpbGRpbmcgYSBORVdfRVhQUi4KCShidWlsZF9uZXdfMSk6IFRpZHkuICBEb24ndCBidWlsZCBhIFZFQ19JTklUX0VYUFIgZXhjZXB0IHdoZW4KCXByb2Nlc3NpbmcgZmlsZS1zY29wZSBpbml0aWFsaXplcnMuCgkqIGxleC5jIChpbml0X3BhcnNlKTogQWRkIGFuIG9wbmFtZV90YWIgZW50cnkgZm9yIElOSVRfRVhQUi4KCSogdHJlZS5jOiBJbmNsdWRlIHNwbGF5LXRyZWUuaAoJKG5vX2xpbmthZ2VfaGVscGVyKTogQWRqdXN0IGZvciBuZXcgaW50ZXJmYWNlIHRvIHNlYXJjaF90cmVlLgoJKHNlYXJjaF90cmVlKTogUGFzcyBhcm91bmQgcG9pbnRlcnMgdG8gdHJlZSBub2RlcywgcmF0aGVyIHRoYW4gdGhlCglub2RlcyB0aGVtc2VsdmVzLiAgSGFuZGxlIFZFQ19JTklUX0VYUFIuCgkobm9fbGlua2FnZV9jaGVjayk6IEFkanVzdCBmb3IgbmV3IGludGVyZmFjZSB0byBzZWFyY2hfdHJlZS4KCShtYXBjYXIpOiBIYW5kbGUgVkVDX0lOSVRfRVhQUi4KCSh0YXJnZXRfcmVtYXApOiBOZXcgdmFyaWFibGUuCgkoYm90X21hbmlwKTogVXNlIGl0LgoJKGJvdF9yZXBsYWNlKTogTmV3IGZ1bmN0aW9uLgoJKGJyZWFrX291dF90YXJnZXRfZXhwcnMpOiBVc2UgaXQgdG8gcmVtYXAgYWxsIHZhcmlhYmxlcyB1c2VkIGluIGEKCWRlZmF1bHQgYXJndW1lbnQgZXhwcmVzc2lvbi4KCSogdHlwZWNrLmMgKGJ1aWxkX21vZGlmeV9leHByKTogRG9uJ3QgY3Jhc2ggd2hlbiBvdXRzaWRlIGEKCWZ1bmN0aW9uIGFuZCBwcmVzZW50ZWQgd2l0aCBhbiBJTklUX0VYUFIgYXNzaWdubWVudAoJKiBNYWtlZmlsZS5pbiAodHJlZS5vKTogRGVwZW5kIG9uIHNwbGF5LXRyZWUuaC4KCkZyaSBTZXAgMjQgMTA6NDg6MTAgMTk5OSAgQmVybmQgU2NobWlkdCAgPGJlcm5kc0BjeWdudXMuY28udWs+CgoJKiBkZWNsLmMgKGR1cGxpY2F0ZV9kZWNscyk6IFVzZSBERUNMX0JVSUxUX0lOX0NMQVNTIHJhdGhlciB0aGFuCglERUNMX0JVSUxUX0lOLgoJKGJ1aWx0aW5fZnVuY3Rpb24pOiBOZXcgYXJnIENMQVNTLiAgQXJnIENPREUgbm93IG9mIHR5cGUgaW50LiAgQWxsCgljYWxsZXJzIGNoYW5nZWQuCglTZXQgdGhlIGJ1aWx0aW4ncyBERUNMX0JVSUxUX0lOX0NMQVNTLgoKMTk5OS0wOS0yNCAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGRlY2wuYyAocHVzaGRlY2wpOiBEb24ndCBtYWtlIGxvY2FsIGRlY2xhcmF0aW9ucyBvZiBleHRlcm4KCXZhcmlhYmxlcyBnaXZlIHRoZSB2YXJpYWJsZSBhIERFQ0xfQ09OVEVYVCBmb3IgdGhlIGZ1bmN0aW9uLgoJKG1ha2VfcnRsX2Zvcl9ub25sb2NhbF9kZWNsKTogRG9uJ3QgZnVzcyB3aXRoIG9ic3RhY2tzLiAgU2ltcGxpZnkuCglEb24ndCBhY2NpZGVudGFsbHkgbWFrZSBSVEwgZm9yIGxvY2FsIGRlY2xhcmF0aW9ucy4KCShlbWl0X2xvY2FsX3Zhcik6IEhhbmRsZSBkZWNsYXJhdGlvbnMgd2l0aCBhc20tc3BlY2lmaWVycyBoZXJlLgoKMTk5OS0wOS0yMyAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGlyLnRleGk6IEltcHJvdmUgZG9jdW1lbnRhdGlvbiBmb3IgVEFSR0VUX0VYUFJzLiAgRGlzY3VzcwoJU1RNVF9JU19GVUxMX0VYUFJfUC4KCgkqIGNwLXRyZWUuaCAobGFuZ3VhZ2VfZnVuY3Rpb24pOiBBZGQgY2Fubm90X2lubGluZS4KCSogZGVjbC5jIChzdGFydF9mdW5jdGlvbik6IFJlc3RvcmUgY3VycmVudF9mdW5jdGlvbl9jYW5ub3RfaW5saW5lCglmcm9tIHRoZSBzYXZlZCB2YWx1ZS4KCShzYXZlX2Z1bmN0aW9uX2RhdGEpOiBTYXZlIGN1cnJlbnRfZnVuY3Rpb25fY2Fubm90X2lubGluZS4KCSogZGVjbDIuYyAoc3RhcnRfb2JqZWN0cyk6IENoYW5nZSBwcm90b3R5cGUuICBCdWlsZCB0aGUgZnVuY3Rpb24KCWluIGZ1bmN0aW9uLWF0LWEtdGltZSBtb2RlLgoJKGZpbmlzaF9vYmplY3RzKTogTGlrZXdpc2UuCgkoZ2VuZXJhdGVfY3Rvcl9vcl9kdG9yX2Z1bmN0aW9uKTogQWRqdXN0IGFjY29yZGluZ2x5LgoKCSogY3AtdHJlZS5oIChERUNMX0FOT05fVU5JT05fRUxFTVMpOiBOZXcgbWFjcm8uCgkqIGRlY2wyLmMgKGZpbmlzaF9hbm9uX3VuaW9uKTogU2V0IERFQ0xfQU5PTl9VTklPTl9FTEVNUy4KCURvbid0IGNhbGwgZXhwYW5kX2Fub25fdW5pb25fZGVjbCBoZXJlCgkqIHNlbWFudGljcy5jIChleGFwbmRfc3RtdCk6IENhbGwgaXQgaGVyZSwgaW5zdGVhZC4KCSogdHlwZWNrLmMgKG1hcmtfYWRkcmVzc2FibGUpOiBBZGRyZXNzZWQgdmFyaWFibGVzIGFyZSBpbXBsaWNpdGx5Cgl1c2VkLgoKMTk5OS0wOS0yMyAgTWFydGluIHYuIEz2d2lzICA8bG9ld2lzQGluZm9ybWF0aWsuaHUtYmVybGluLmRlPgoKCSogY3AtdHJlZS5oIChWQVJfT1JfRlVOQ1RJT05fREVDTF9DSEVDSyk6IE5ldyBtYWNyby4KCShSRUNPUkRfT1JfVU5JT05fVFlQRV9DSEVDSywgTEFOR19JREVOVElGSUVSX0NBU1QpOiBMaWtld2lzZS4KCShERUZBUkdfTk9ERV9DSEVDSyk6IFJlbW92ZTsgcmVwbGFjZSB3aXRoIERFRkFVTFRfQVJHX0NIRUNLLgoJKiBjcC10cmVlLmg6IEFkZCB0cmVlIGNoZWNraW5nIG1hY3JvcyB0byB2YXJpb3VzIHRyZWUgYWNjZXNzCgltYWNyb3MuCgkqIHB0cmVlLmMgKHByaW50X2xhbmdfZGVjbCk6IFRlc3QgZm9yIGZ1bmN0aW9uIG9yIHZhcmlhYmxlCgliZWZvcmUgYWNjZXNzaW5nIHRlbXBsYXRlIGluZm8uCgoxOTk5LTA5LTIzICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBsZXguYzogR2V0IFdDSEFSX1RZUEVfU0laRSBmcm9tIHdjaGFyX3R5cGVfbm9kZS4KCSogbGFuZy1zcGVjcy5oOiBJZiAtZnNob3J0LXdjaGFyLCBvdmVycmlkZSBfX1dDSEFSX1RZUEVfXy4KCSogZGVjbDIuYyAobGFuZ19mX29wdGlvbnMpOiBBZGQgLWZzaG9ydC13Y2hhci4KCSogY3AtdHJlZS5oOiBEZWNsYXJlIGZsYWdfc2hvcnRfd2NoYXIuCgkqIGRlY2wuYyAoaW5pdF9kZWNsX3Byb2Nlc3NpbmcpOiBJZiAtZnNob3J0LXdjaGFyLCB1c2UgJ3Nob3J0IHVuc2lnbmVkCglpbnQnIGZvciB3Y2hhcl90LgoKMTk5OS0wOS0yMyAgTWFydGluIHYuIEz2d2lzICA8bG9ld2lzQGluZm9ybWF0aWsuaHUtYmVybGluLmRlPgoKCSogaXIudGV4aTogRml4IGZvcm1hdHRpbmcgZXJyb3JzIGFuZCB0eXBvcy4KCjE5OTktMDktMjIgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBpci50ZXhpOiBEb2N1bWVudCBDTEVBTlVQX1NUTVQsIFNDT1BFX1NUTVQsIGFuZCBTVEFSVF9DQVRDSF9TVE1ULgoKCSogZGVjbC5jIChwdXNoZGVjbCk6IERvIGNyZWF0ZSBhIGJpbmRpbmcgZm9yIGV4dGVybiAiQyIgZnVuY3Rpb25zLAoJYnV0IG5vdCBmb3IgdGhlaXIgREVDTF9BU1NFTUJMRVJfTkFNRXMuCgkobG9va3VwX25hbWVfY3VycmVudF9sZXZlbCk6IEZpeCBmb3JtYXR0aW5nLgoJKHhyZWZfdGFnKTogTGlrZXdpc2UuCgkqIGRlY2wyLmMgKHN0YXJ0X29iamVjdHMpOiBNYXJrIHN0YXRpYyBjb25zdHJ1Y3RvcnMgYW5kCglkZXN0cnVjdG9ycyBhcyB1c2VkLgoKMTk5OS0wOS0yMiAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogZGVjbC5jIChkZWZpbmVfY2FzZV9sYWJlbCk6IERvbid0IGNyYXNoIGlmIHdlJ3JlIG5vdCBpbiBhIHN3aXRjaC4KCgkqIGRlY2wyLmMgKGxhbmdfZGVjb2RlX29wdGlvbik6IERvbid0IGJvdGhlciBleHBsaWNpdGx5IGlnbm9yaW5nIGZsYWdzLgoJKiBsYW5nLW9wdGlvbnMuaDogUmVzdG9yZSAtZnRoaXMtaXMtdmFyaWFibGUuICBSZW1vdmUgaGVscCBzdHJpbmdzCglmb3IgdW5zdXBwb3J0ZWQgZmxhZ3MuCgoxOTk5LTA5LTIxICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBkZWNsMi5jIChsYW5nX2RlY29kZV9vcHRpb24pOiBBY2NlcHQgYW5kIGlnbm9yZSAtZmluaXQtcHJpb3JpdHkuCglBY2NlcHQgYW5kIHdhcm4gYWJvdXQgLWZ0aGlzLWlzLXZhcmlhYmxlLgoKMTk5OS0wOS0yMSAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGR1bXAuYyAoZGVxdWV1ZV9hbmRfZHVtcCk6IEhhbmRsZSBTVEFSVF9DQVRDSF9TVE1ULAoJQ0xFQU5VUF9TVE1ULCBhbmQgU0NPUEVfU1RNVC4KCgkqIGRlY2wyLmMgKGxhbmdfZGVjb2RlX29wdGlvbik6IEFkanVzdCwgaW4gdGhlIHdha2Ugb2YgcmVjZW50CgljaGFuZ2VzIHRvIG9wdGlvbiBwcm9jZXNzaW5nLgoKMTk5OS0wOS0yMSAgTWFydGluIHYuIEz2d2lzICA8bG9ld2lzQGluZm9ybWF0aWsuaHUtYmVybGluLmRlPgoKCSogdHlwZWNrLmMgKGdldF9tZW1iZXJfZnVuY3Rpb25fZnJvbV9wdHJmdW5jKTogQWxsb3cgZXh0cmFjdGlvbiBvZgoJZnVuY3Rpb24gcG9pbnRlciBmcm9tIHBtZnMgd2l0aCBubyBvYmplY3QgZ2l2ZW4uCgkoY29udmVydF9mb3JfYXNzaWdubWVudCk6IERvIG5vdCByZXR1cm4gZXJyb3Igd2hlbiBjb252ZXJ0aW5nCglwbWZzLgoKMTk5OS0wOS0yMSAgQWxleCBTYW11ZWwgIDxzYW11ZWxAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGxleC5jIChpbnRlcm5hbF9maWxlbmFtZSk6IE5ldyB2YXJpYWJsZS4KCShJTlRFUk5BTF9GSUxFTkFNRSk6IE5ldyBtYWNyby4KCShpbml0X3BhcnNlKTogQWxsb2NhdGUgaW50ZXJuYWxfZmlsZW5hbWUgYW5kIG1hcmsgYXMgcm9vdC4gIFVzZSBpdAoJaW5zdGVhZCBvZiBhIHN0cmluZyBjb25zdGFudC4KCjE5OTktMDktMjEgIE5hdGhhbiBTaWR3ZWxsICA8bmF0aGFuQGFjbS5vcmc+CgoJUmVpbXBsZW1lbnQgZHluYW1pYyBjYXN0IGFuZCBjYXRjaCBtYXRjaGluZy4KCSogY3AtdHJlZS5oIChnZXRfZHluYW1pY19jYXN0X2Jhc2VfdHlwZSk6IFByb3RvdHlwZSBuZXcgZnVuY3Rpb24KCSogc2VhcmNoLmMgKGR5bmFtaWNfY2FzdF9iYXNlX3JlY3Vyc2UpOiBOZXcgZnVuY3Rpb24uCgkoZ2V0X2R5bmFtaWNfY2FzdF9iYXNlX3R5cGUpOiBOZXcgZnVuY3Rpb24gZm9yIGR5bmFtaWMgY2FzdC4KCSogcnR0aS5jIChidWlsZF9keW5hbWljX2Nhc3RfMSk6IERldGVybWluZSBzb3VyY2UgYW5kIHRhcmdldAoJY2xhc3MgcmVsYXRpb25zaGlwLiBDYWxsIF9fZHluYW1pY19jYXN0XzIuCgkqIHRpbmZvLmggKF9fdXNlcl90eXBlX2luZm86OnVwY2FzdCk6IE5ldyBjYXRjaCBkaXNwYXRjaGVyLgoJKF9fdXNlcl90eXBlX2luZm86OmR5bmNhc3QpOiBOZXcgZHluYW1pYyBjYXN0IGRpc3BhdGNoZXIuCgkoX191c2VyX3R5cGVfaW5mbzo6c3ViX2tpbmQpOiBOZXcgbmVzdGVkIGVudW1lcmF0aW9uLgoJKF9fdXNlcl90eXBlX2luZm86OmNvbnRhaW5lZF9wKTogc3ViX2tpbmQgcHJlZGljYXRlLgoJKF9fdXNlcl90eXBlX2luZm86OmNvbnRhaW5lZF9wdWJsaWNfcCk6IExpa2V3aXNlLgoJKF9fdXNlcl90eXBlX2luZm86OmNvbnRhaW5lZF9ub25wdWJsaWNfcCk6IExpa2V3aXNlLgoJKF9fdXNlcl90eXBlX2luZm86OmNvbnRhaW5lZF9ub252aXJ0dWFsX3A6IExpa2V3aXNlLgoJKF9fdXNlcl90eXBlX2luZm86OnVwY2FzdF9yZXN1bHQpOiBOZXcgbmVzdGVkIHN0cnVjdC4KCShfX3VzZXJfdHlwZV9pbmZvOjpkeW5jYXN0X3Jlc3VsdCk6IE5ldyBuZXN0ZWQgc3RydWN0LgoJKCo6OmRvX3VwY2FzdCk6IE5ldyBjYXRjaCBmdW5jdGlvbi4KCSgqOjpkb19keW5jYXN0KTogTmV3IGR5bmFtaWMgY2FzdCBmdW5jdGlvbi4KCShfX3VzZXJfdHlwZV9pbmZvOjpmaW5kX3B1YmxpY19zdWJvYmopOiBOZXcgZHluYW1pYyBjYXN0CgloZWxwZXIgZGlzcGF0Y2hlci4KCSgqOjpkb19maW5kX3B1YmxpY19zdWJvYmopOiBOZXcgZHluYW1pYyBjYXN0IGhlbHBlciBmdW5jdGlvbi4KCSogdGluZm8uY2MgKF9fdXNlcl90eXBlX2luZm86OnVwY2FzdCk6IERlZmluZSBjYXRjaCBkaXNwYXRjaGVyLgoJKF9fdXNlcl90eXBlX2luZm86OmR5bmNhc3QpOiBEZWZpbmUgZHluYW1pYyBjYXN0IGRpc3BhdGNoZXIuCgkoKjo6ZG9fdXBjYXN0KTogRGVmaW5lIGNhdGNoIGZ1bmN0aW9uLgoJKCo6OmRvX2R5bmNhc3QpOiBEZWZpbmUgZHluYW1pYyBjYXN0IGZ1bmN0aW9uLgoJKCo6OmRvX2ZpbmRfcHVibGljX3N1Ym9iaik6IERlZmluZSBkeW5hbWljIGNhc3QgaGVscGVyIGZ1bmN0aW9uLgoJKiB0aW5mbzIuY2MgKF9fdGhyb3dfdHlwZV9tYXRjaF9ydHRpXzIpOiBVc2UgdXBjYXN0LgoJKF9fZHluYW1pY19jYXN0KTogQmFja3dhcmRzIGNvbXBhdGliaWxpdHkgd3JhcHBlci4gVXNlIGR5bmNhc3QuCgkoX19keW5hbWljX2Nhc3RfMik6IE5ldyBkeW5hbWljIGNhc3QgcnVudGltZS4KCjE5OTktMDktMjAgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjcC10cmVlLmggKGZpbmlzaF9zdG10X2V4cHIpOiBDaGFuZ2UgcHJvdG90eXBlLgoJKiBleHByLmMgKGNwbHVzX2V4cGFuZF9leHByKTogQWRqdXN0IGNhbGwgYWNjb3JkaW5nbHkuCgkqIGluaXQuYyAoZmluaXNoX2luaXRfc3RtdHMpOiBMaWtld2lzZS4KCSogcGFyc2UueSAocHJpbWFyeSk6IExpa2V3aXNlLgoJKiBwdC5jICh0c3Vic3RfY29weSk6IExpa2V3aXNlLgoJKiBzZW1hbnRpY3MuYyAoZmluaXNoX3N0bXRfZXhwcik6IERvbid0IHRha2UgdHdvIHBhcmFtZXRlcnMuCglEb24ndCByZW1vdmUgZ2VuZXJhdGVkIEJMT0NLcyBmcm9tIHRoZSBibG9jay10cmVlLgoKCVJlbW92ZSBzdXBwb3J0IGZvciBhc3NpZ25pbmcgdG8gYHRoaXMnLgoJKiBORVdTOiBOb3RlIHRoYXQgZmFjdC4KCSogY2xhc3MuYyAoYnVpbGRfdmJhc2VfcGF0aCk6IERvbid0IGNoZWNrIGZsYWdfdGhpc19pc192YXJpYWJsZS4KCSogY3AtdHJlZS5oIChFWFBSX1NUTVRfQVNTSUdOU19USElTKTogUmVtb3ZlLgoJKGxhbmd1YWdlX2Z1bmN0aW9uKTogUmVtb3ZlIGFzc2lnbnNfdGhpcywganVzdF9hc3NpZ25lZF90aGlzLCBhbmQKCXhfYmFzZV9pbml0X2V4cHIuICBBZGQgeF92Y2FsbHNfcG9zc2libGVfcC4gIEFkZCB2dGJsc19zZXRfdXBfcC4KCShiYXNlX2luaXRfZXhwcik6IFJlbW92ZS4KCShjdXJyZW50X3ZjYWxsc19wb3NzaWJsZV9wKTogTmV3IG1hY3JvLgoJKHZ0YmxzX3NldF91cF9wKTogTGlrZXdpc2UuCgkoZW1pdF9iYXNlX2luaXQpOiBDaGFuZ2UgcHJvdG90eXBlLgoJKiBkZWNsLmMgKGZpbmlzaF9kZXN0cnVjdG9yX2JvZHkpOiBOZXcgZnVuY3Rpb24sIHNwbGl0IG91dCBmcm9tCglmaW5pc2hfZnVuY3Rpb24uCgkoY3VycmVudF9mdW5jdGlvbl9hc3NpZ25zX3RoaXMpOiBSZW1vdmUuCgkoY3VycmVudF9mdW5jdGlvbl9qdXN0X2Fzc2lnbmVkX3RoaXMpOiBMaWtld2lzZS4KCShzdGFydF9mdW5jdGlvbik6IERvbid0IHNldCB0aGVtLgoJKGZpbmlzaF9mdW5jdGlvbik6IERvbid0IGNoZWNrIHRoZW0uICBEb24ndCBlbWl0CgliYXNlLWluaXRpYWxpemF0aW9uIGNvZGUgaGVyZS4gIEdlbmVyYXRlIGNvZGUgZm9yIGRlc3RydWN0b3JzIHdoZW4KCWRvaW5nIHNlbWFudGljIGFuYWx5c2lzLgoJKGZpbmlzaF9zdG10KTogRG9uJ3QgY2hlY2sgY3VycmVudF9mdW5jdGlvbl9qdXN0X2Fzc2lnbmVkX3RoaXMuCgkqIGRlY2wyLmMgKGxhbmdfZl9vcHRpb25zKTogUmVtb3ZlIHRoaXMtaXMtdmFyaWFibGUuCgkobGFuZ19kZWNvZGVfb3B0aW9uKTogTGlrZXdpc2UuCgkoZ3Jva2NsYXNzZm4pOiBEb24ndCBjaGVjayBmbGFnX3RoaXNfaXNfdmFyaWFibGUuCgkqIGluaXQuYyAoZW1pdF9iYXNlX2luaXQpOiBSZXR1cm4gdGhlIGV4cHJlc3Npb24gZ2VuZXJhdGVkLgoJKGNvbnN0cnVjdF92aXJ0dWFsX2Jhc2VzKTogRG9uJ3QgcHVzaC9wb3Agb2JzdGFja3MuICBGaXgKCXR5cG8uCgkoYnVpbGRfbmV3XzEpOiBEb24ndCBjaGVjayBmbGFnX3RoaXNfaXNfdmFyaWFibGUuCgkoZ2V0X3RlbXBfcmVndmFyKTogRG9uJ3Qgc2V0IERFQ0xfUkVHSVNURVIuCgkoYnVpbGRfdmVjX2luaXQpOiBEb24ndCBjYWxsIHVzZV92YXJpYWJsZS4KCSogbGFuZy1vcHRpb25zLmg6IFJlbW92ZSAiLWZ0aGlzLWlzLXZhcmlhYmxlIiBhbmQKCSItZm5vLXRoaXMtaXMtdmFyaWFibGUiLgoJKiBwdC5jICh0c3Vic3RfZXhwcik6IERvbid0IGNoZWNrIEVYUFJfU1RNVF9BU1NJR05TX1RISVMuCgkqIHNlYXJjaC5jIChleHBhbmRfdXBjYXN0X2ZpeHVwcyk6IFVzZSBmaW5pc2hfZXhwcl9zdG10LCBub3QKCWV4cGFuZF9leHByX3N0bXQuCgkqIHNlbWFudGljcy5jIChmaW5pc2hfZXhwcl9zdG10X3JlYWwpOiBSZW5hbWUgdG8gLi4uCgkoZmluaXNoX2V4cHJfc3RtdCk6IFRoaXMuICBSZW1vdmUgYXNzaWduZWRfdGhpcyBwYXJhbWV0ZXIuCgkoYmVnaW5faWZfc3RtdCk6IENhbGwgZG9fcHVzaGxldmVsIGJlZm9yZSBzdGFydGluZyB0aGUgc3RhdGVtZW50LgoJKGJlZ2luX2NvbXBvdW5kX3N0bXQpOiBEb24ndCBkZWNsYXJlIF9fRlVOQ1RJT05fXyBpbiBzY29wZS1sZXNzCglibG9ja3MuCgkoc2V0dXBfdnRibF9wdHIpOiBFbWl0IGluaXRpYWxpemF0aW9uIGNvZGUgZm9yIGJhc2VzIGFuZCBtZW1iZXJzCglhdCBzZW1hbnRpYy1hbmFseXNpcyB0aW1lLiAgRW1pdCBjb2RlIHRvIGluaXRpYWxpemUgdnRhYmxlcyBpbgoJZGVzdHJ1Y3RvcnMgaGVyZS4KCShleHBhbmRfc3RtdCk6IFVzZSBmaW5pc2hfZXhwcl9zdG10LCBub3QgZmluaXNoX2V4cHJfc3RtdF9yZWFsLgoJRG9uJ3QgaGFuZGxlIENUT1JfSU5JVElBTElaRVIgYW55IG1vcmUuCgkqIHR5cGVjay5jIChidWlsZF9tb2RpZnlfZXhwcik6IERvbid0IGNoZWNrIGZvciBhc3NpZ25tZW50cyB0bwoJdGhpcy4KCShjX2V4cGFuZF9yZXR1cm4pOiBEb24ndCBzdWdnZXN0IGFzc2lnbmluZyB0byBgdGhpcycuCgoJKiBNYWtlZmlsZS5pbiAoZGVjbC5vKTogRGVwZW5kIG9uIFJUTF9ILgoJKGRlY2wyLm8pOiBMaWtld2lzZS4KCShjbGFzcy5vKTogTGlrZXdpc2UuCgkoY2FsbC5vKTogTGlrZXdpc2UuCgkobWV0aG9kLm8pOiBMaWtld2lzZS4KCShzZWFyY2gubyk6IExpa2V3aXNlLgoJKHRyZWUubyk6IExpa2V3aXNlLgoJKHB0Lm8pOiBMaWtld2lzZS4KCgkqIGRlY2wuYyAoZHVwbGljYXRlX2RlY2xzKTogV2hlbiBhIGJ1aWx0aW4gZnVuY3Rpb24gaXMgcmVkZWNsYXJlZAoJYXMgc3RhdGljLCBtYWtlIHN1cmUgaXQgaXMgbWFuZ2xlZCBjb3JyZWN0bHkuCgoJKiBpci50ZXhpIChDVE9SX0lOSVRJQUxJWkVSKTogUmVtb3ZlIG1lbnRpb24uICBGaXggdHlwby4gIEFkZAoJZGV0YWlsIGFib3V0IHRoZSBzdGF0ZW1lbnQtdHJlZS4KCjE5OTktMDktMjAgIE5hdGhhbiBTaWR3ZWxsICA8bmF0aGFuQGFjbS5vcmc+CgoJKiBwYXJzZS55IChwcmltYXJ5KTogVXNlIGJ1aWxkX2Z1bmN0aW9uYWxfY2FzdCBmb3IgQ1ZfUVVBTElGSUVSLgoKMTk5OS0wOS0yMCAgTmljayBDbGlmdG9uICA8bmlja2NAY3lnbnVzLmNvbT4KCgkqIGRlY2wyLmMgKGxhbmdfZGVjb2RlX29wdGlvbik6IEV4dGVuZCBjb21tZW50LgoKTW9uIFNlcCAyMCAxMDo0OTowNSAxOTk5ICBCZXJuZCBTY2htaWR0ICA8YmVybmRzQGN5Z251cy5jby51az4KCgkqIHR5cGVjay5jOiBJbmNsdWRlICJ0bV9wLmgiLgoKMTk5OS0wOS0xOSAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGlyLnRleGk6IE5ldyBmaWxlLgoKMTk5OS0wOS0xOSAgUGF1bCBCdXJjaGFyZCA8YnVyY2hhcmRAcG9ib3guY29tPgoKCSogc2VtYW50aWNzLmMgKGV4cGFuZF9zdG10KTogSW5pdGlhbGl6ZSByZXR1cm4gdmFsdWUuCgoxOTk5LTA5LTE4ICBQYXVsIEJ1cmNoYXJkIDxidXJjaGFyZEBwb2JveC5jb20+CgoJKiBneHhpbnQudGV4aTogRysrIG5vdyBpbXBsZW1lbnRzIG5hbWVzcGFjZXMuCgoxOTk5LTA5LTE4ICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogZGVjbC5jIChwb3BfbGFiZWwpOiBEb24ndCB3YXJuIGFib3V0IHVudXNlZCBsYWJlbHMgbW9yZSB0aGFuCglvbmNlLgoJKiBzZW1hbnRpY3MuYyAoZmluaXNoX2dvdG9fc3RtdCk6IEFsd2F5cyBtYXJrZWQgdXNlZCBsYWJlbHMgYXMKCXVzZWQuCgoJKiBkZWNsLmMgKGxheW91dF92YXJfZGVjbCk6IENoYW5nZSBwcm90b3R5cGUuICBDYWxsIGxheW91dF9kZWNsCglldmVuIHdoZW4gdGhlIGRlY2xhcmF0aW9uIGlzIGV4dGVybmFsLgoJKGNwX2ZpbmlzaF9kZWNsKTogQWRqdXN0IGNhbGwgdG8gbGF5b3V0X3Zhcl9kZWNsLgoJKiBwdC5jICh0c3Vic3RfZXhwcik6IE1ha2Ugc3VyZSB0byBpbml0aWFsaXplIHN0bXQgYmVmb3JlIHVzaW5nIGl0LgoKMTk5OS0wOS0xOCAgTWFydGluIHZvbiBMb2V3aXMgIDxsb2V3aXNAaW5mb3JtYXRpay5odS1iZXJsaW4uZGU+CgoJKiB0eXBlY2suYyAoZ2V0X21lbWJlcl9mdW5jdGlvbl9mcm9tX3B0cmZ1bmMpOiBBbHdheXMgY29uc2lkZXIKCXZpcnR1YWxpdHkgaW5zaWRlIG1lbWJlciBwb2ludGVyLgoKMTk5OS0wOS0xNyAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCglUdXJuIG9uIGZ1bmN0aW9uLWF0LWEtdGltZSBwcm9jZXNzaW5nLgoJKiBjcC10cmVlLmggKGRvaW5nX3NlbWFudGljX2FuYWx5c2lzX3ApOiBOZXcgbWFjcm8uCgkoU0ZfREVGQVVMVCk6IERlZmluZSB0byB6ZXJvLCBub3QgU0ZfRVhQQU5ELgoJKHN0YXJ0X2hhbmRsZXJfcGFybXMpOiBDaGFuZ2UgcHJvdG90eXBlLgoJKGV4cGFuZF9zdGFydF9jYXRjaF9ibG9jayk6IExpa2V3aXNlLgoJKGV4cGFuZF9lbmRfY2F0Y2hfYmxvY2spOiBMaWtld2lzZS4KCShleHBhbmRfc3RhcnRfZWhfc3BlYyk6IExpa2V3aXNlLgoJKGV4cGFuZF9lbmRfZWhfc3BlYyk6IERlY2xhcmUuCgkoZmluaXNoX2hhbmRsZXJfcGFybXMpOiBDaGFuZ2UgcHJvdG90eXBlLgoJKGJlZ2luX2NhdGNoX2Jsb2NrKTogRGVjbGFyZS4KCShmaW5pc2hfaGFuZGxlcik6IENoYW5nZSBwcm90b3R5cGUuCgkoZG9fcHVzaGxldmVsKTogRGVjbGFyZS4KCShkb19wb3BsZXZlbCk6IExpa2V3aXNlLgoJKiBkZWNsLmMgKHB1c2hsZXZlbCk6IERvbid0IGNyZWF0ZQoJYmluZGluZyBsZXZlbHMgd2hlbiBub3QgZG9pbmcgc2VtYW50aWMgYW5hbHlzaXMuCgkocG9wbGV2ZWwpOiBEb24ndCBwb3AgdGhlbS4KCShwdXNoZGVjbCk6IEFzc2VydCB0aGF0IHdlIGFyZSBuZXZlciBjYWxsZWQgd2hlbiBub3QgZG9pbmcKCXNlbWFudGljIGFuYWx5c2lzLgoJKHB1c2hkZWNsX3RvcF9sZXZlbCk6IFVzZSBwdXNoX3RvX3RvcF9sZXZlbC4KCShtYWtlX2xhYmVsX2RlY2wpOiBEb24ndCBmaWRkbGUgd2l0aCBvYnN0YWNrcy4gIE1ha2UgUlRMIEZvciB0aGUKCWxhYmVsIHdoZW4gZXhwYW5kaW5nLgoJKGNwX2ZpbmlzaF9kZWNsKTogT25seSBpbmplY3QgZm9yLXNjb3BlIHZhcmlhYmxlcyB3aGVuIGRvaW5nCglzZW1hbnRpYyBhbmFseXNpcy4gIEFkZCBjb21tZW50cy4KCShzdGFydF9oYW5kbGVyX3Bhcm1zKTogUmV0dXJuIHRoZSBoYW5kbGVyIHBhcm0uCgkoc3RhcnRfZnVuY3Rpb24pOiBSZW9yZ2FuaXplLiAgRG9uJ3QgY2xlYXIgREVDTF9JTklUSUFMIGlmIGl0IGlzCglhbHJlYWR5IHNldC4gIFJlaW5pdGlhbGl6ZSBmcm9tIHNhdmVkIGZ1bmN0aW9uIGRhdGEgaWYgYXZhaWxhYmxlLgoJRG9uJ3QgcHVzaGxldmVsIHdoZW4gbm90IGRvaW5nIHNlbWFudGljIGFuYWx5c2lzLgoJKHN0b3JlX3Bhcm1fZGVjbHMpOiBPbmx5IGdlbmVyYXRlIFJUTCB3aGVuIGV4cGFuZGluZy4gIE9ubHkKCXB1c2hkZWNsIHdoZW4gZG9pbmcgc2VtYW50aWMgYW5hbHlzaXMuICBTZXQKCWN1cnJlbnRfZWhfc3BlY190cnlfYmxvY2sgaWYgYXBwcm9wcmlhdGUuCgkoZmluaXNoX2Z1bmN0aW9uKTogU2ltcGxpZnkuICBVc2UgZG9fcHVzaGxldmVsIGFuZCBkb19wb3BsZXZlbC4KCUNvbWJpbmUgY29tbW9uIGNvZGUuICBEb24ndCBwb3BsZXZlbCB3aGVuIG5vdCBkb2luZyBzZW1hbnRpYwoJYW5hbHlzaXMuCgkocHVzaF9jcF9mdW5jdGlvbl9jb250ZXh0KTogRG9uJ3QgZXhwYW5kIGZ1bmN0aW9ucyB3aXRob3V0IGFuCglleHBsaWNpdCBjYWxsIHRvIGV4cGFuZF9ib2R5LgoJKG1hcmtfbGFuZ19mdW5jdGlvbik6IE1ha2UgZWhfc3BlY190cnlfYmxvY2sgYW5kCgl4X3Njb3BlX3N0bXRfc3RhY2suCgkqIGV4Y2VwdC5jIChleHBhbmRfZW5kX2VoX3NwZWMpOiBEb24ndAoJZGVjbGFyZS4KCShwcm9jZXNzX3N0YXJ0X2NhdGNoX2Jsb2NrKTogTGlrZXdpc2UuCgkocHVzaF9laF9jbGVhbnVwKTogVXNlIGZpbmlzaF9kZWNsX2NsZWFudXAuCgkoaW5pdGlhbGl6ZV9oYW5kbGVyX3Bhcm0pOiBOZXcgZnVuY3Rpb24uCgkoZXhwYW5kX3N0YXJ0X2NhdGNoX2Jsb2NrKTogVXNlIGl0LgoJKGV4cGFuZF9lbmRfY2F0Y2hfYmxvY2spOiBVc2UgdHJlZS1nZW5lcmF0aW9uIGZ1bmN0aW9ucywgbm90CglSVEwtZ2VuZXJhdGlvbiBmdW5jdGlvbnMuCgkoZXhwYW5kX3N0YXJ0X2VoX3NwZWMpOiBMaWtld2lzZS4KCShleHBhbmRfZW5kX2VoX3NwZWMpOiBMaWtld2lzZS4KCShleHBhbmRfZXhjZXB0aW9uX2Jsb2Nrcyk6IFNpbXBsaWZ5LgoJKHN0YXJ0X2Fub25fZnVuYyk6IFVzZSBkb19wdXNobGV2ZWwuCgkoZW5kX2Fub25fZnVuYyk6IFVzZSBkb19wb3BsdmVsLiAgQ2FsbCBleHBhbmRfYm9keSBmb3IgdGhlCglmdW5jdGlvbi4KCSogZXhwci5jIChkb19jYXNlKTogRG9uJ3QgY2FsbCBkZWZpbmVfY2FzZV9sYWJlbC4KCSogaW5pdC5jIChjcmVhdGVfdGVtcG9yYXJ5X3Zhcik6IFNldCBERUNMX0NPTlRFWFQgZm9yIGxvY2FsCgl2YXJpYWJsZXMuCgkqIG1ldGhvZC5jIChlbWl0X3RodW5rKTogQ2FsbCBleHBhbmRfYm9keSBmb3IgdGhlCgl0aHVuay4KCShzeXRoZXNpemVfbWV0aG9kKTogTGlrZXdpc2UuCgkqIHBhcnNlLnkgKGhhbmRsZXJfYXJncyk6IEdpdmUgaXQgdHR5cGUuCgkoZWF0X3NhdmVkX2lucHV0KTogQ2FsbCBleHBhbmRfYm9keS4KCShiYXNlX2luaXQpOiBVc2UgZG9fcHVzaGxldmVsLgoJKHBlbmRpbmdfaW5saW5lKTogQ2FsbCBleHBhbmRfYm9keS4KCShoYW5kbGVyKTogQWRqdXN0IGNhbGxzIHRvIGZpbmlzaF9oYW5kbGVyX3Bhcm1zIGFuZAoJZmluaXNoX2hhbmRsZXIuCgkoaGFuZGxlcl9hcmdzKTogRG9uJ3QgY2FsbCBleHBhbmRfc3RhcnRfY2F0Y2hfYmxvY2suICBSZXR1cm4gdGhlCgljYXRjaCBwYXJhbWV0ZXIuICAqIHB0LmMgKHRzdWJzdF9leHByKTogQWRqdXN0IEhBTkRMRVIgaGFuZGxpbmcuCgkqIHBhcnNlLmM6IFJlZ2VuZXJhdGVkLgoJKiBydHRpLmMgKHN5bnRoZXNpemVfdGluZm9fZm4pOiBDYWxsIGZpbmlzaF9mdW5jdGlvbi4KCSogc2VtYW50aWNzLmMgKGRvX3B1c2hsZXZlbCk6IEdpdmUgaXQgZXh0ZXJuYWwgbGlua2FnZS4gIEJ1aWxkCglTQ09QRV9TVE1Ucy4KCShkb19wb3BsZXZlbCk6IExpa2V3aXNlLgoJKGZpbmlzaF9jYXNlX2xhYmVsKTogQ2FsbCBkZWZpbmVfY2FzZV9sYWJlbCB3aGVuIGRvaW5nIHNlbWFudGljCglhbmFseXNpcy4KCShmaW5pc2hfZ290b19zdG10KTogQ3JlYXRlIFJUTCBmb3IgbGFiZWxzLgoJKGZpbmlzaF9mdW5jdGlvbl90cnlfYmxvY2spOiBTZXQgaW5fZnVuY3Rpb25fdHJ5X2hhbmRsZXIKCXVuY29uZGl0aW9uYWxseS4KCShmaW5pc2hfZnVuY3Rpb25faGFuZGxlcl9zZXF1ZW5jZSk6IFVuc2V0IGl0LgoJKGZpbmlzaF9oYW5kbGVyX3Bhcm1zKTogVXNlIGV4cGFuZF9zdGFydF9jYXRjaF9ibG9jayBldmVuIHdoZW4KCWJ1aWxkaW5nIGEgc3RhdGVtZW50LXRyZWUuCgkoYmVnaW5fY2F0Y2hfYmxvY2spOiBOZXcgZnVuY3Rpb24uCgkoZmluaXNoX2hhbmRsZXIpOiBNb3ZlIGEgbGl0dGxlIFJUTC1nZW5lcmF0aW9uIGxvZ2ljIGhlcmUuCgkoZmluaXNoX2RlY2xfY2xlYW51cCk6IEFsbG93IGNsZWFudXBzIGZvciBlbXB0eSBkZWNsYXJhdGlvbnMuCgkoZmluaXNoX25hbWVkX3JldHVybl92YWx1ZSk6IERvbid0IHB1c2hkZWNsIHdoZW4gbm90IGRvaW5nCglzZW1hbnRpYyBhbmFseXNpcy4KCShleHBhbmRfc3RtdCk6IERvbid0IGRvIHNlbWFudGljIGFuYWx5c2lzIGZvciB2YXJpYWJsZQoJZGVjbGFyYXRpb25zLiAgSGFuZGxlIFNUQVJUX0NBVENIX1NUTVQuICBDYWxsIGV4cGFuZF9sYWJlbAoJZGlyZWN0bHkgZm9yIGEgTEFCRUxfU1RNVC4gIFR3ZWFrIGhhbmRsaW5nIG9mIEdPVE9fU1RNVC4gIEFkanVzdAoJSEFORExFUnMuICBIYW5kbGUgU0NPUEVfU1RNVCwgQ1RPUl9JTklUSUFMSVpFUiwgYW5kIFJFVFVSTl9JTklULgoJKGV4cGFuZF9ib2R5KTogTGV0IGV4cGFuZF9zdG10IGhhbmRsZSBDVE9SX0lOSVRJQUxJWkVSLAoJUkVUVVJOX0lOSVQgYW5kIGZ1bmN0aW9uIHRyeSBibG9ja3MuCgoJKiBjcC10cmVlLmggKGxhbmd1YWdlX2Z1bmN0aW9uKTogQWRkIHhfZWhfc3BlY190cnlfYmxvY2suICBBZGQKCXhfc2NvcGVfc3RtdF9zdGFjay4gIEFkZCB4X2luX2NoYXJnZV9wYXJtLgoJKGN1cnJlbnRfZWhfc3BlY190cnlfYmxvY2spOiBOZXcgbWFjcm8uCgkoY3VycmVudF9zY29wZV9zdG10X3N0YWNrKTogTGlrZXdpc2UuCgkoY3VycmVudF9pbl9jaGFyZ2VfcGFybSk6IExpa2V3aXNlLgoJKiBkZWNsLmMgKHN0YXJ0X2Z1bmN0aW9uKTogSW5pdGlhbGl6ZSBjdXJyZW50X2luX2NoYXJnZV9wYXJtLgoJKGZpbmlzaF9mdW5jdGlvbik6IFVzZSBjdXJyZW50X2luX2NoYXJnZV9wYXJtIHJhdGhlciB0aGFuIGxvb2tpbmcKCXVwIF9faW5fY2hyZy4KCSogc2VhcmNoLmMgKGV4cGFuZF9pbmRpcmVjdF92dGJsc19pbml0KTogTGlrZXdpc2UuCgoJKiBjcC10cmVlLmRlZiAoQ0xFQU5VUF9TVE1UKTogRml4IHNwZWxsaW5nIGluIGR1bXBzLgoJKFRSWV9CTE9DSyk6IExpa2V3aXNlLgoJKEhBTkRMRVIpOiBMaWtld2lzZS4KCShTVEFSVF9DQVRDSF9TVE1UKTogTmV3IHRyZWUgbm9kZS4KCShTQ09QRV9TVE1UKTogTGlrZXdpc2UuCgkqIGNwLXRyZWUuaCAoU0NPUEVfQkVHSU5fUCk6IE5ldyBtYWNyby4KCShTQ09QRV9OVUxMSUZJRURfUCk6IExpa2V3aXNlLgoJKHN0cnVjdCBsYW5nX2RlY2xfZmxhZ3MpOiBBZGQgcGVuZGluZ19pbmxpbmVfcC4gIEFkanVzdCBkdW1teS4KCShzdHJ1Y3QgbGFuZ19kZWNsKTogQWRkIHNhdmVkX2xhbmd1YWdlX2Z1bmN0aW9uLgoJKERFQ0xfUEVORElOR19JTkxJTkVfSU5GTyk6IEFkanVzdCBkb2N1bWVudGF0aW9uLgoJKERFQ0xfUEVORElOR19JTkxJTkVfUCk6IE5ldyBtYWNyby4KCShUWVBFX1RJX0FSR1MpOiBGaXggdHlwbyBpbiBjb21tZW50LgoJKERFQ0xfU0FWRURfVFJFRSk6IEFkZCB0byBkb2N1bWVudGF0aW9uLgoJKERFQ0xfU0FWRURfRlVOQ1RJT05fREFUQSk6IE5ldyBtYWNyby4KCShTVEFSVF9DQVRDSF9UWVBFKTogTGlrZXdpc2UuCgkoU0NPUEVfRU5EX1ApOiBOZXcgbWFjcm8uCgkoZGVjbGFyZV9wYXJtX2xldmVsKTogRG9uJ3QgZGVjbGFyZS4KCSogZGVjbC5jIChtYXJrX2xhbmdfZnVuY3Rpb24pOiBOZXcgZnVuY3Rpb24sIHNwbGl0IG91dCBmcm9tCgltYXJrX2NwX2Z1bmN0aW9uX2NvbnRleHQuCgkoc2F2ZV9mdW5jdGlvbl9kYXRhKTogTmV3IGZ1bmN0aW9uLgoJKGRlY2xhcmVfcGFybV9sZXZlbCk6IFJlbW92ZS4KCShmaW5pc2hfZnVuY3Rpb24pOiBVc2Ugc2F2ZV9mdW5jdGlvbl9kYXRhIHRvIHNxdWlycmVsIGF3YXkKCWltcG9ydGFudCBzdHVmZiBmb3IgbGF0ZXIgdXNlLgoJKG1hcmtfY3BfZnVuY3Rpb25fY29udGV4dCk6IFVzZSBtYXJrX2Z1bmN0aW9uX2RhdGEuCgkobGFuZ19tYXJrX3RyZWUpOiBMaWtld2lzZS4KCSogbGV4LmMgKGJlZ2luX2RlZmluaXRpb25fb2ZfaW5jbGFzc19pbmxpbmUpOiBTZXQKCURFQ0xfUEVORElOR19JTkxJTkVfUC4KCShzdG9yZV9wZW5kaW5nX2lubGluZSk6IENsZWFyIGl0LgoJKiBwdC5jICh0c3Vic3RfZGVjbCk6IExpa2V3aXNlLgoKMTk5OS0wOS0xNyAgTmF0aGFuIFNpZHdlbGwgIDxuYXRoYW5AYWNtLm9yZz4KCgkqIGNhbGwuYyAocGVyZm9ybV9pbXBsaWNpdF9jb252ZXJzaW9uKTogRGVhbCB3aXRoIGVycm9yX21hcmtfbm9kZS4KCjE5OTktMDktMTcgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBkZWNsLmMgKHdhcm5fZXh0ZXJuX3JlZGVjbGFyZWRfc3RhdGljKTogRG9uJ3QgZ2V0IGNvbmZ1c2VkIGJ5CglzdGF0aWMgbWVtYmVyIGZ1bmN0aW9ucy4KCShkdXBsaWNhdGVfZGVjbHMpOiBNZXJnZSBERUNMX1RISVNfU1RBVElDLgoKCSogZGVjbC5jIChleHBhbmRfc3RhdGljX2luaXQpOiBNYWtlIHN1cmUgYXNzaWdubWVudHMgdG8gbG9jYWwKCXN0YXRpY3MgYWN0dWFsbHkgb2NjdXIuCgoxOTk5LTA5LTE3ICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogY3AtdHJlZS5oIChwb3BsZXZlbF9jbGFzcyk6IERlY2xhcmUuCgkqIGNsYXNzLmMgKHBvcGNsYXNzKTogVXNlIHBvcGxldmVsX2NsYXNzLCBub3QgcG9wbGV2ZWwuCgkqIGRlY2wuYyAocG9wbGV2ZWxfY2xhc3MpOiBEb24ndCBtYWtlIGl0IHN0YXRpYy4gIERvbid0IHJldHVybiBhCgl2YWx1ZS4KCShwb3BsZXZlbCk6IERvbid0IGNhbGwgcG9wbGV2ZWxfY2xhc3M7IGFib3J0IGluIGEgY2xhc3MKCWJpbmRpbmcgbGV2ZWwgaXMgc2Vlbi4KCSogc2VtYW50aWNzLmMgKGZpbmlzaF90cmFuc2xhdGlvbl91bml0KTogVXNlIHBvcF9ldmVyeXRoaW5nLgoJKiBwYXJzZS55IChtZW1iZXJfaW5pdCk6IEFsbG93IGVycm9ycy4KCShwZW5kaW5nX2lubGluZSk6IENhbGwgZmluaXNoX2Z1bmN0aW9uLgoJKiBwYXJzZS5jOiBSZWdlbmVyYXRlZC4KCSogTWFrZWZpbGUuaW4gKENPTkZMSUNUUyk6IEFkanVzdC4KCjE5OTktMDktMTcgIEdhYnJpZWwgRG9zIFJlaXMgIDxnZHJAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGVycm9yLmM6IFJlZHVjZSBjb2RlIGR1cGxpY2F0aW9uLgoJKGR1bXBfdGVtcGxhdGVfdmFsdWUpOiBOZXcgZnVuY3Rpb24uCgkoZHVtcF90eXBlX3JlYWwpOiBVc2UgaXQuCgkoZHVtcF9kZWNsKTogTGlrZXdpc2UuCgkoZHVtcF9mdW5jdGlvbl9uYW1lKTogTGlrZXdpc2UuCgkoZHVtcF9mdW5jdGlvbl9kZWNsKTogRG9uJ3QgYmUgdG9vIHRhbGthdGl2ZSBhYm91dCBmdW5jdGlvbiByZXR1cm4KCXR5cGUgdmFyaWV0eS4KCjE5OTktMDktMTYgIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIGxleC5jIChpbml0X2NwcF9wYXJzZSk6IENhbGwgeGNhbGxvYywgbm90IG1hbGxvYy9iemVyby4KCgkqIHhyZWYuYyAoU0FMTE9DKTogQ2FsbCB4c3RyZHVwLCBub3QgeG1hbGxvYy9zdHJjcHkuCgoxOTk5LTA5LTE2ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBkZWNsMi5jIChmaW5pc2hfZmlsZSk6IEFsc28gY2FsbCBjaGVja19nbG9iYWxfZGVjbGFyYXRpb25zIGZvcgoJdGhlIHBlbmRpbmdfc3RhdGljcyBsaXN0LgoKMTk5OS0wOS0xNSAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogbGV4LmMgKGNwX3ByYWdtYV9pbXBsZW1lbnRhdGlvbik6IEFsbG93ICNwcmFnbWEgaW1wbGVtZW50YXRpb24KCWluIGhlYWRlciBmaWxlcy4KCjE5OTktMDktMTUgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgoJKiBsZXguYyAobWFya19pbXBsX2ZpbGVfY2hhaW4pOiBGb2xsb3cgdGhlIG5leHQgY2hhaW4uCgoxOTk5LTA5LTE1ICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogZGVjbC5jICh3YXJuX2V4dGVybl9yZWRlY2xhcmVkX3N0YXRpYyk6IFNpbXBsaWZ5LiAgQ2F0Y2gKCXByb2JsZW1zIHdpdGggZXh0ZXJuICJDIiBmdW5jdGlvbnMgcmVkZWNsYXJlZCBhcyBzdGF0aWMuCgkoZHVwbGljYXRlX2RlY2xzKTogV2hlbiBhIGJ1aWx0aW4gaXMgcmVkZWNsYXJlZCBzdGF0aWMsIG1ha2UgdGhlCgluZXcgZnVuY3Rpb24gaGF2ZSBpbnRlcm5hbCBsaW5rYWdlLgoKMTk5OS0wOS0xNSAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGRlY2wyLmMgKGJ1aWxkX2V4cHJfZnJvbV90cmVlKTogSGFuZGxlIFZBX0FSR19FWFBSLgoJKiBwdC5jICh0c3Vic3RfY29weSk6IExpa2V3aXNlLgoJKiB0cmVlLmMgKHNlYXJjaF90cmVlKTogTGlrZXdpc2UuCgkobWFwY2FyKTogTGlrZXdpc2UuCgoxOTk5LTA5LTE1ICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiB0eXBlY2syLmMgKGFjayk6IERvbid0IGRlY2xhcmUgcHJvZ25hbWUuCgoxOTk5LTA5LTE0ICBBbGV4YW5kcmUgT2xpdmEgIDxvbGl2YUBsc2QuaWMudW5pY2FtcC5icj4KCgkqIGxleC5jIChjcF9wcmFnbWFfaW50ZXJmYWNlLCBjcF9wcmFnbWFfaW1wbGVtZW50YXRpb24pOiBDb3B5CglmaWxlbmFtZXMgd2l0aCBnZ2NfYWxsb2Nfc3RyaW5nLgoKMTk5OS0wOS0xNCAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGRlY2wuYyAoYnVpbGRfdGFyZ2V0X2V4cHIpOiBTZXQgVFJFRV9TSURFX0VGRkVDVFMgb24gdGhlCglUQVJHRVRfRVhQUi4KCSogY2FsbC5jIChidWlsZF9vdmVyX2NhbGwpOiBEb24ndCBzZXQgVFJFRV9TSURFX0VGRkVDVFMgb24KCXRoZSBUQVJHRVRfRVhQUi4KCSogY3Z0LmMgKGJ1aWxkX3VwX3JlZmVyZW5jZSk6IExpa2V3aXNlLgoJKiB0cmVlLmMgKGJ1aWxkX2NwbHVzX25ldyk6IExpa2V3aXNlLgoJKGdldF90YXJnZXRfZXhwcik6IExpa2V3aXNlLgoKVHVlIFNlcCAxNCAwMTo0NToxMCAxOTk5ICBNYXJjIEVzcGllIDxlc3BpZUBjdnMub3BlbmJzZC5vcmc+CgoJKiBNYWtlZmlsZS5pbjogIFByZXBlbmQgJChTSEVMTCkgdG8gbW92ZS1pZi1jaGFuZ2UgY2FsbHMuCgoxOTk5LTA5LTEzICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogY3AtdHJlZS5oIChidWlsZF90YXJnZXRfZXhwcik6IE5ldyBmdW5jdGlvbi4KCSogY2FsbC5jIChidWlsZF9jb25kaXRpb25hbF9leHByKTogVXNlIGJ1aWxkX3RhcmdldF9leHByLgoJKGNvbnZlcnRfbGlrZSk6IExpa2V3aXNlLgoJKGJ1aWxkX292ZXJfY2FsbCk6IExpa2V3aXNlLgoJKiBjdnQuYyAoYnVpbGRfdXBfcmVmZXJlbmNlKTogTGlrZXdpc2UuCgkqIGRlY2wuYyAoYnVpbGRfY2xlYW51cF9vbl9zYWZlX29ic3RhY2spOiBGb2xkIGludG8gLi4uCgkoZGVzdHJveV9sb2NhbF92YXIpOiBIZXJlLgoJKGJ1aWxkX3RhcmdldF9leHByKTogTmV3IGZ1bmN0aW9uLgoJKiB0cmVlLmMgKGJ1aWxkX2NwbHVzX25ldyk6IFVzZSBpdC4KCShnZXRfdGFyZ2V0X2V4cHIpOiBMaWtld2lzZS4KCjE5OTktMDktMTMgIE5hdGhhbiBTaWR3ZWxsICA8bmF0aGFuQGFjbS5vcmc+CgoJKiB0eXBlY2suYyAoZXhwcl9zaXplb2YpOiBEb24ndCBkZWNheSBhcnJheXMgYW5kIGZ1bmN0aW9ucy4KCVJlbW92ZSBtaXNsZWFkaW5nIGNvbW1lbnQuCgkoYnVpbGRfY29tcG91bmRfZXhwcik6IERvbid0IGRlY2F5IGFycmF5cy4KCjE5OTktMDktMTMgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIGNhbGwuYyAoYnVpbGRfY29uZGl0aW9uYWxfZXhwcik6IEFsd2F5cyB1c2UgYSBUQVJHRVRfRVhQUiBmb3IKCWNsYXNzIHJ2YWx1ZXMgYWdhaW4uCgpTdW4gU2VwIDEyIDIzOjI5OjA3IDE5OTkgIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIE1ha2UtbGFuZy5pbiAoZysrc3BlYy5vKTogRGVwZW5kIG9uIHN5c3RlbS5oIGFuZCBnY2MuaC4KCgkqIGcrK3NwZWMuYzogSW5jbHVkZSBnY2MuaC4KCShsYW5nX3NwZWNpZmljX2RyaXZlcik6IENvbnN0aWZ5IGEgY2hhciouICBDYWxsIHhjYWxsb2MsIG5vdAoJeG1hbGxvYy9iemVyby4gIEFsbCBjYWxscyB0byB0aGUgZnVuY3Rpb24gcG9pbnRlciBwYXJhbWV0ZXIgbm93CglleHBsaWNpdGx5IGNhbGwgYGZhdGFsJy4KCjE5OTktMDktMTIgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjYWxsLmMgKGltcGxpY2l0X2NvbnZlcnNpb24pOiBSb2J1c3RpZnkuICBIYW5kbGUgT0ZGU0VUX1JFRnMuCgkqIGN2dC5jIChvY3BfY29udmVydCk6IENvbXBsZXRlIHRoZSBmcm9tIGFuZCBkZXN0aW5hdGlvbiB0eXBlcy4KCUFkanVzdCB3YXJuaW5nIGFib3V0IGZ1bmN0aW9ucyBhbHdheXMgYmVpbmcgYHRydWUnIGluIGNvbmRpdGlvbmFscy4KCSogZGVjbC5jIChkdXBsaWNhdGVfZGVjbHMpOiBEb24ndCBwbGF5IGZ1bm55IGdhbWVzIHdpdGggYWJvcnQuCgkqIGVycm9yLmMgKGR1bXBfZXhwcik6IEhhbmRsZSBPVkVSTE9BRHMuCgkqIHNwZXcuYyAocHJvYmVfb2JzdGFjayk6IFJlbW92ZS4KCSogdHlwZWNrLmMgKGNvbmRpdGlvbl9jb252ZXJzaW9uKTogVXNlIHBlcmZvcm1faW1wbGljaXRfY29udmVyc2lvbi4KCjE5OTktMDktMTIgIEJlcm5kIFNjaG1pZHQgIDxiZXJuZHNAY3lnbnVzLmNvLnVrPgoKCSogY3AtdHJlZS5oIChhdXRvX2Z1bmN0aW9uLCBkZWZpbmVfZnVuY3Rpb24pOiBBZGp1c3QgcHJvdG90eXBlcy4KCSogZGVjbC5jIChkZWZpbmVfZnVuY3Rpb24pOiBMb3NlIEZVTkNUSU9OX0NPREUgYXJnLiAgQWxsIGNhbGxlcnMKCWNoYW5nZWQuCgkoYXV0b19mdW5jdGlvbik6IExpa2V3aXNlLCBmb3IgQ09ERSBhcmcuCglNb3ZlIGNvZGUgdG8gc2V0IERFQ0xfQlVJTFRfSU4gYW5kIERFQ0xfRlVOQ1RJT05fQ09ERSB0by4uLgoJKGJ1aWx0aW5fZnVuY3Rpb24pOiAuLi4gaGVyZS4KCjE5OTktMDktMTEgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBkZWNsLmMgKGFkZF9kZWNsX3RvX2xldmVsKTogUmVtb3ZlIFRSRUVfUEVSTUFORU5UIGFzc2VydGlvbi4KCShpbml0X2RlY2xfcHJvY2Vzc2luZyk6IERvbid0IHNldCBUUkVFX1BFUk1BTkVOVCBmb3IgdGhlCgllcnJvcl9tYXJrX25vZGUuCgkoc3RhcnRfZGVjbCk6IERvbid0IHJlYnVpbGQgbm9uLXBlcm1hbmVudCBBUlJBWV9UWVBFcy4KCShncm9rZGVjbGFyYXRvcik6IExpa2V3aXNlLgoJKGdyb2twYXJtcyk6IERvbid0IGNoZWNrIFRSRUVfUEVSTUFORU5UIHdoZW4gYnVpbGRpbmcgdXAgbGlzdHMuCgkqIGRlY2wyLmMgKGdyb2tmaWVsZCk6IERvbid0IGFzc2VydCBUUkVFX1BFUk1BTkVOVC4KCShtYXJrX2lubGluZV9mb3Jfb3V0cHV0KTogTGlrZXdpc2UuCgkqIGV4cHIuYyAoY3BsdXNfZXhwYW5kX2V4cHIpOiBEb24ndCBjaGVjayBUUkVFX1BFUk1BTkVOVC4KCSogaW5pdC5jIChidWlsZF9vZmZzZXRfcmVmKTogRG9uJ3QgY2hlY2sgVFJFRV9QRVJNQU5FTlQuCgkqIGxleC5jIChjaGVja19uZXdsaW5lKTogRG9uJ3QgY2hlY2sgZ2djX3A7IGl0IGlzIGFsd2F5cyBvbmUuCgkqIHB0LmMgKHByb2Nlc3NfdGVtcGxhdGVfcGFybSk6IERvbid0IGNoZWNrIFRSRUVfUEVSTUFORU5ULgoJKiBzcGV3LmMgKHl5bGV4KTogRG9uJ3QgY29weV9ub2RlIG9yIHByb2JlX29ic3RhY2tzIGZvcgoJbm9uLXBlcm1hbmVudCBDT05TVEFOVHMgYW5kIFNUUklOR3MuCgkqIHRyZWUuYyAoYnVpbGRfY3BsdXNfYXJyYXlfdHlwZV8xKTogRG9uJ3QgZnVzcyB3aXRoCglUUkVFX1BFUk1BTkVOVCBvbiBBUlJBWV9UWVBFcy4KCgkqIGNwLXRyZWUuZGVmIChDTEVBTlVQX1NUTVQpOiBOZXcgbm9kZS4KCSogY3AtdHJlZS5oIChsYW5ndWFnZV9mdW5jdGlvbik6IEFkZCBuYW1lX2RlY2xhcmVkLgoJKGN1cnJlbnRfZnVuY3Rpb25fbmFtZV9kZWNsYXJlZCk6IE5ldyBtYWNyby4KCShDTEVBTlVQX0RFQ0wpOiBOZXcgbWFjcm8uCgkoQ0xFQU5VUF9FWFBSKTogTGlrZXdpc2UuCgkoZW1pdF9sb2NhbF92YXIpOiBMaWtld2lzZS4KCShmaW5pc2hfZGVjbF9jbGVhbnVwKTogTmV3IGZ1bmN0aW9uLgoJKiBjdnQuYyAoYnVpbGRfdXBfcmVmZXJlbmNlKTogU2ltcGxpZnkuCgkob2NwX2NvbnZlcnQpOiBSZW1vdmUgZGVhZCBjb2RlLgoJKiBkZWNsLmMgKHN0YXJ0X2RlY2wpOiBSZW1vdmUgY2FsbCB0byBhZGRfZGVjbF9zdG10LgoJKGdyb2tfcmVmZXJlbmNlX2luaXQpOiBBZGp1c3QsIHRvIGhhbmRsZSBiaW5kaW5ncyB0ZW1wb3JhcmllcyB0bwoJcmVmZXJlbmNlcy4gIFJlbW92ZSBkZWFkIGNvZGUuCgkoaW5pdGlhbGl6ZV9sb2NhbF92YXIpOiBEb24ndCBnZW5lcmF0ZSBSVEwgZm9yCglkZWNsYXJhdGlvbnMgaGVyZSwgb3IgYnVpbGQgY2xlYW51cHMgaGVyZS4gIERvbid0IGZ1c3Mgd2l0aAoJb2JzdGFja3MuICBSZXBsYWNlIGV4cGFuZF9zdGFydF90YXJnZXRfdGVtcHMgY2FsbHMgd2l0aCBleHBsaWNpdAoJc2V0dGluZyBvZiBzdG1zX2FyZV9mdWxsX2V4cHJzX3AuCgkoZGVzdHJveV9sb2NhbF92YXIpOiBOZXcgZnVuY3Rpb24uCgkoZW1pdF9sb2NhbF92YXIpOiBMaWtld2lzZS4KCShjcF9maW5pc2hfZGVjbCk6IFVzZSB0aGVtLCBhcyBhcHByb3ByaWF0ZS4KCShzdGFydF9mdW5jdGlvbik6IEFubm91bmNlIHRlbXBsYXRlIGZ1bmN0aW9ucy4KCShzdG9yZV9wYXJtX2RlY2xzKTogRG9uJ3QgY2FsbCBkZWNsYXJlX2Z1bmN0aW9uX25hbWUgaGVyZS4KCShmaW5pc2hfc3RtdCk6IERvbid0IHN0YXJ0IGVtaXQgYmFzZS1pbml0aWFsaXphdGlvbiBjb2RlIHdoZW4ganVzdAoJYnVpbGRpbmcgdGhlIHN0YXRlbWVudC10cmVlLgoJKiBpbml0LmMgKGNyZWF0ZV90ZW1wb3JhcnlfdmFyKTogTW92ZSBhZGRfZGVjbF9zdG10IGNhbGwgLi4uCgkoZ2V0X3RlbXBfcmVndmFyKTogSGVyZS4KCSogcHQuYyAodHN1YnN0X2V4cHIpOiBNYWtlIERFQ0xfSU5JVElBTCBsb29rIGxpa2Ugd2hhdAoJY3BfZmluaXNoX2RlY2wgd291bGQgZXhwZWN0LiAgRG9uJ3QgY2FsbCBhZGRfZGVjbF9zdG10LgoJKiBzZW1hbnRpY3MuYyAoYmVnaW5fY29tcG91bmRfc3RtdCk6IENhbGwgZGVjbGFyZV9mdW5jdGlvbl9uYW1lLAoJaWYgYXBwcm9wcmlhdGUuCgkoZmluaXNoX2RlY2xfY2xlYW51cCk6IE5ldyBmdW5jdGlvbi4KCShleHBhbmRfc3RtdCk6IFVzZSBlbWl0X2xvY2FsX3ZhciB0byBvdXRwdXQgdmFyaWFibGVzLgoJKGV4cGFuZF9ib2R5KTogU2V0IGN1cnJlbnRfZnVuY3Rpb25fbmFtZV9kZWNsYXJlZC4KCjE5OTktMDktMTAgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjcC10cmVlLmggKGZpbmlzaF9jbGVhbnVwX3RyeV9ibG9jayk6IE5ldyBmdW5jdGlvbi4KCSogc2VtYW50aWNzLmMgKGZpbmlzaF9jbGVhbnVwX3RyeV9ibG9jayk6IEFkZCBjb21tZW50LgoKRnJpIFNlcCAxMCAxMDozMjozMiAxOTk5ICBCZXJuZCBTY2htaWR0ICA8YmVybmRzQGN5Z251cy5jby51az4KCgkqIGNwLXRyZWUuaDogRGVsZXRlIGRlY2xhcmF0aW9ucyBmb3IgYWxsIHRyZWUgbm9kZXMgbm93IG1vdmVkIHRvCglnbG9iYWxfdHJlZXMuCgkqIGRlY2wuYzogRGVsZXRlIHRoZWlyIGRlZmluaXRpb25zLgoJKFNIT1JUX1RZUEVfU0laRSwgSU5UX1RZUEVfU0laRSwgTE9OR19UWVBFX1NJWkUsIExPTkdfTE9OR19UWVBFX1NJWkUsCglGTE9BVF9UWVBFX1NJWkUsIERPVUJMRV9UWVBFX1NJWkUsIExPTkdfRE9VQkxFX1RZUEVfU0laRSk6IERvbid0Cglwcm92aWRlIGRlZmF1bHRzLgoJKGluaXRfZGVjbF9wcm9jZXNzaW5nKTogQ2FsbCBidWlsZF9jb21tb25fdHJlZV9ub2RlcyBhbmQKCWJ1aWxkX2NvbW1vbl90cmVlX25vZGVzXzIgaW5zdGVhZCBvZiBidWlsZGluZyB0aGVpciBub2RlcyBoZXJlLgoJRG9uJ3QgYWRkIGdjIHJvb3RzIGZvciB0aGVtLgoKMTk5OS0wOS0xMCAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGNwLXRyZWUuaCAobGFuZ3VhZ2VfZnVuY3Rpb24pOiBSZW5hbWUgZXhwYW5kaW5nX3AgdG8KCXhfZXhwYW5kaW5nX3AuICBSZW5hbWUgbmFtZWRfbGFiZWxfdXNlcyB0byB4X25hbWVkX2xhYmVsX3VzZXMuCgkoZXhwYW5kaW5nX3ApOiBBZGp1c3QgYWNjb3JkaW5nbHkuCgkoVFJFRV9WSUFfUFJJVkFURSk6IEZpeCB0eXBvIGluIGNvbW1lbnQuCgkoREVDTF9SRUZFUkVOQ0VfU0xPVCk6IFJlbW92ZS4KCShTRVRfREVDTF9SRUZFUkVOQ0VfU0xPVCk6IExpa2V3aXNlLgoJKiBkZWNsLmMgKG5hbWVkX2xhYmVsX3VzZXMpOiBBZGp1c3QuIFJlbW92ZSBjaGlja2VuIGNvbW1lbnQuCgkocHVzaF9vdmVybG9hZGVkX2RlY2wpOiBEb24ndCB0cnVuY2F0ZSB0aGUgY2hhaW4gb2YgYmluZGluZ3Mgd2hlbgoJYWRkaW5nIGFuIG92ZXJsb2FkZWQgZnVuY3Rpb24uCgkoZ3Jva19yZWZlcmVuY2VfaW5pdCk6IERvbid0IHVzZSBERUNMX1JFRkVSRU5DRV9TTE9ULgoJKGluaXRpYWxpemVfbG9jYWxfdmFyKTogRml4IHR5cG8gaW4gY29tbWVudC4KCShzdG9yZV9wYXJtX2RlY2xzKTogRG9uJ3Qgc2V0IERFQ0xfUkVGRVJFTkNFX1NMT1QuICBUaWR5IHVwLgoJKiBkZWNsMi5jIChzdGFydF9vYmplY3RzKTogTWFrZSB0aGUgZmFjdCB0aGF0IHdlIGFyZSBleHBhbmRpbmcKCXRoZSBnZW5lcmF0ZWQgZnVuY3Rpb24gcmlnaHQgYXdheSBleHBsaWNpdC4KCShzdGFydF9zdGF0aWNfc3RvcmFnZV9kdXJhdGlvbl9mdW5jdGlvbik6IExpa2V3aXNlLgoJKGZpbmlzaF9maWxlKTogRml4IHR5cG8gaW4gY29tbWVudC4KCSogaW5pdC5jIChidWlsZF92ZWNfaW5pdCk6IENvcnJlY3QgYnVncyBpbiBoYW5kbGluZyBjbGVhbnVwcy4KCSogc2VtYW50aWNzLmMgKG1heWJlX2NvbnZlcnRfY29uZCk6IE5ldyBmdW5jdGlvbi4KCShGSU5JU0hfQ09ORCk6IEFsd2F5cyBzdG9yZSB0aGUgY29uZGl0aW9uLCBldmVuIGlmIHRoZXJlJ3MKCWEgZGVjbGFyYXRpb24uCgkoZmluaXNoX2lmX3N0bXRfY29uZCk6IFVzZSBtYXliZV9jb252ZXJ0X2NvbmQuCgkoZmluaXNoX3doaWxlX3N0bXRfY29uZCk6IExpa2V3aXNlLgoJKGZpbmlzaF9kb19zdG10KTogTGlrZXdpc2UuCgkoZmluaXNoX2Zvcl9jb25kKTogTGlrZXdpc2UuCgkoZXhwYW5kX2NvbmQpOiBBZGp1c3QuCgoJKiBjcC10cmVlLmggKEZOX1RSWV9CTE9DS19QKTogTmV3IG1hY3JvLgoJKiBpbml0LmMgKHBlcmZvcm1fbWVtYmVyX2luaXQpOiBSZW1vdmUgb2JzdGFjayBtYWNoaW5hdGlvbnMuCgkoZXhwYW5kX2NsZWFudXBfZm9yX2Jhc2UpOiBMaWtld2lzZS4KCShmaW5pc2hfaW5pdF9zdG10cyk6IE1hcmsgdGhlIHN0YXRlbWVudC1leHByZXNzaW9uIGFzIHVzZWQuCgkqIG1ldGhvZC5jIChlbWl0X3RodW5rKTogVXNlIHRyZWUtZ2VuZXJhdGluZyBmdW5jdGlvbnMsIG5vdAoJUlRMLgoJKGRvX2J1aWxkX2NvcHlfY29uc3RydWN0b3IpOiBMaWtld2lzZS4KCShkb19idWlsZF9hc3NpZ25fcmVmKTogTGlrZXdpc2UuCgkoc3ludGhlc2l6ZV9tZXRob2QpOiBMaWtld2lzZS4gIEtlZXAgdHJhY2sgb2YgbGluZSBudW1iZXJzLgoJKiBwdC5jICh0c3Vic3RfZXhwcik6IEhhbmRsZSB2YXJpb3VzIGtpbmRzIG9mIHRyeSBibG9ja3MuCgkqIHNlbWFudGljcy5jIChleHBhbmRfc3RtdHMpOiBSZW1vdmUuCgkoYmVnaW5fZnVuY3Rpb25fdHJ5X2Jsb2NrKTogU2V0IEZOX1RSWV9CTE9DS19QLgoJKGZpbmlzaF9mdW5jdGlvbl90cnlfYmxvY2spOiBCZSBjYXJlZnVsIHJlY2hhaW5pbmcKCWZ1bmN0aW9uIHRyeSBibG9ja3MuCgkoZXhwYW5kX3N0bXQpOiBMb29wIHRocm91Z2ggYWxsIHRoZSBzdGF0ZW1lbnRzIGF0IGEgZ2l2ZW4gbGV2ZWwuCgkoZXhhcG5kX2JvZHkpOiBCZSBjYXJlZnVsIHdpdGggbGluZS1udW1iZXJzIGhlcmUgdG9vLiAgUHJlcGFyZSBmb3IKCWJlaW5nIGNhbGxlZCBkaXJlY3RseSBmcm9tIHRoZSBwYXJzZXIuCgoJKiBjcC10cmVlLmggKGZpbmlzaF9mdW5jdGlvbik6IEFkanVzdCBwcm90b3R5cGUuCgkqIGRlY2wuYyAoZmluaXNoX2Z1bmN0aW9uKTogUmV0dXJuIHRoZSBmdW5jdGlvbiBjb21waWxlZC4KCSogcHQuYyAoaW5zdGFudGlhdGVfZGVjbCk6IERvbid0IHBsYXkgZ2FtZXMgd2l0aCBvYnN0YWNrcy4KCSogdHJlZS5jIChtYXBjYXIpOiBIYW5kbGUgT0ZGU0VUX1JFRiBhbmQgQklUX0ZJRUxEX1JFRi4KCShzZWFyY2hfdHJlZSk6IExpa2V3aXNlLgoJKiB0eXBlY2suYzogRml4IHR5cG8gaW4gY29tbWVudC4KCSogdHlwZWNrMi5jIChzdG9yZV9pbml0X3ZhbHVlKTogQWRkIGNvbW1lbnQuCgoJKiBjcC10cmVlLmggKENQVElfQVRFWElUKTogTmV3IG1hY3JvLgoJKGF0ZXhpdF9ub2RlKTogTGlrZXdpc2UuCgkqIGRlY2wuYyAoZGVzdHJveV9sb2NhbF9zdGF0aWMpOiBOZXcgZnVuY3Rpb24sIGJyb2tlbiBvdXQgZnJvbSAuLi4KCShleHBhbmRfc3RhdGljX2luaXQpOiBIZXJlLgoKCSogcnR0aS5jIChnZXRfdGluZm9fdmFyKTogVGhlc2Ugc2hvdWxkIGFsd2F5cyBiZSBnbG9iYWwKCShleHBhbmRfc2lfZGVzYyk6IFVzZSB0cmVlLCBub3QgUlRMLCBmdW5jdGlvbnMgdG8gZ2VuZXJhdGUgY29kZS4KCShleHBhbmRfY2xhc3NfZGVzYyk6IExpa2V3aXNlLgoJKGV4cGFuZF9wdHJfZGVzYyk6IExpa2V3aXNlLgoJKGV4cGFuZF9hdHRyX2Rlc2MpOiBMaWtld2lzZS4KCShleHBhbmRfZ2VuZXJpY19kZXNjKTogTGlrZXdpc2UuCgkoc3ludGhlc2l6ZV90aW5mb19mbik6IExpa2V3aXNlLgoKMTk5OS0wOS0wOSAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIHNlbWFudGljcy5jIChSRUNIQUlOX1NUTVRTKTogUmVtb3ZlIGBsYXN0JyBwYXJhbWV0ZXIuCgkoUkVDSEFJTl9TVE1UU19GUk9NX0xBU1QpOiBSZW1vdmUuICBSZXBsYWNlIGFsbCB1c2VzIHdpdGgKCVJFQ0hBSU5fU1RNVFMuCgkoUkVDSEFJTl9TVE1TVF9GUk9NX0NIQUlOKTogTGlrZXdpc2UuCgoJKiBwYXJzZS55IChzaW1wbGVfc3RtdCk6IEZpeCB0eXBvIGluIGxhc3QgY2hhbmdlLgoKCSogY3AtdHJlZS5oIChFWFBSX1NUTVRfQVNTSUdOU19USElTKTogTmV3IG1hY3JvLgoJKFNUTVRfSVNfRlVMTF9FWFBSX1ApOiBMaWtld2lzZS4KCShTVE1UX0xJTkVOT19GT1JfRk5fUCk6IExpa2V3aXNlLgoJKHByZXBfc3RtdCk6IE5ldyBmdW5jdGlvbi4KCShidWlsZGluZ19zdG10X3RyZWUpOiBUd2VhayBmb3Igc2FmZXR5LgoJKiBwdC5jICh0c3Vic3RfZXhwcik6IFVzZSBwcmVwX3N0bXQgdGhyb3VnaG91dC4KCShhZGRfdHJlZSk6IE1vdmUgaXQgdG8gc2VtYW50aWNzLmMKCSogc2VtYW50aWNzLmMgKGFkZF90cmVlKTogTW92ZSBpdCBoZXJlLgoJKGZpbmlzaF9leHByX3N0bXRfcmVhbCk6IE5ldyBmdW5jdGlvbi4KCShmaW5pc2hfZXhwcl9zdG10KTogVXNlIGl0LgoJKGZpbmlzaF9pZl9zdG10X2NvbmQpOiBVc2UgRklOSVNIX0NPTkQuCgkoZmluaXNoX3doaWxlX3N0bXRfY29uZCk6IExpa2V3aXNlLgoJKGZpbmlzaF9mb3JfY29uZCk6IExpa2V3aXNlLgoJKGZpbmlzaF9zdG10X3RyZWUpOiBUd2VhayBsaW5lLW51bWJlciBoYW5kbGluZy4KCShwcmVwX3N0bXQpOiBOZXcgZnVuY3Rpb24uCgkoZXhwYW5kX3N0bXQpOiBVc2UgaXQuCgoJKiBjcC10cmVlLmggKGJlZ2luX3N3aXRjaF9zdG10KTogQWRqdXN0IHByb3RvdHlwZS4KCShmaW5pc2hfc3dpdGNoX2NvbmQpOiBMaWtld2lzZS4KCSogcGFyc2UueSAoc2ltcGxlX3N0bXQpOiBBZGp1c3QgYWNjb3JkaW5nbHkuCgkqIHBhcnNlLmM6IFJlZ2VuZXJhdGVkLgoJKiBwdC5jICh0c3Vic3RfZXhwcik6IEFkanVzdCBhY2NvcmRpbmdseS4KCSogc2VtYW50aWNzLmMgKGV4cGFuZF9jb25kKTogTmV3IGZ1bmN0aW9uLgoJKEZJTklTSF9DT05EKTogTmV3IG1hY3JvLgoJKGJlZ2luX3N3aXRjaF9zdG10KTogQnVpbGQgdGhlIFNXSVRDSF9TVE1UIGhlcmUuCgkoZmluaXNoX3N3aXRjaF9zdG10X2NvbmQpOiBOb3QgaGVyZS4KCShleHBhbmRfc3RtdCk6IEFkanVzdCBjYWxscyB0byBiZWdpbl9zd2l0Y2hfc3RtdCBhbmQKCWZpbmlzaF9zd2l0Y2hfY29uZC4gIFVzZSBleHBhbmRfY29uZCB0aHJvdWdob3V0LgoKCSogZHVtcC5jIChkZXF1ZXVlX2FuZF9kdW1wKTogRHVtcCB0eXBlcyBmb3IgY29uc3RhbnRzLgoJRGVzY3JpYmUgREVDTF9BUkdfVFlQRSBtb3JlIGludHVpdGl2ZWx5LgoJSGFuZGxlIEFSUkFZX1JFRi4KCgkqIGRlY2wuYyAobGFuZ19tYXJrX3RyZWUpOiBNYXJrIFRZUEVfTEFOR19TUEVDSUZJQy4KCShsYW5nX2NsZWFudXBfdHJlZSk6IFJlbW92ZS4KCSogbGV4LmMgKG1ha2VfbGFuZ190eXBlKTogVXNlIGdnY19hbGxvYyB0byBhbGxvY2F0ZQoJVFlQRV9MQU5HX1NQRUNJRklDLgoKCVJlb3JnYW5pemUgcGVyLWZ1bmN0aW9uIGRhdGEuCgkqIGNwLXRyZWUuaCAoc2F2ZWRfc2NvcGUpOiBBZGQgZnVuY3Rpb25fZGVjbCwgYmluZGluZ3MuCgkobGFuZ3VhZ2VfZnVuY3Rpb24pOiBSZW5hbWUgYmluZGluZ19sZXZlbCB0byBiaW5kaW5ncy4KCShjcF9mdW5jdGlvbl9jaGFpbik6IFVzZSB0aGUgY3VycmVudF9mdW5jdGlvbiwgbm90IHRoZQoJb3V0ZXJfZnVuY3Rpb25fY2hhaW4uCgkoY3VycmVudF9jbGFzc19wdHIpOiBNYWtlIGl0IHdvcmssIGV2ZW4gd2hlbiB0aGVyZSdzIG5vCgljdXJyZW50IGZ1bmN0aW9uLgoJKGN1cnJlbnRfY2xhc3NfcmVmKTogTGlrZXdpc2UuCgkoU0ZfREVGQVVMVCwgU0ZfUFJFX1BBUlNFRCwgU0ZfSU5DTEFTU19JTkxJTkUsIFNGX0VYUEFORCk6IE5ldwoJbWFjcm9zLgoJKGNsZWFyX3RlbXBfbmFtZSk6IFJlbW92ZS4KCSogZGVjbC5jIChjaGVja19mdW5jdGlvbl90eXBlKTogTmV3IGZ1bmN0aW9uLCBicm9rZW4gb3V0IGZyb20KCXN0YXJ0X2Z1bmN0aW9uLgoJKGN1cnJlbnRfYmluZGluZ19sZXZlbCk6IEFkanVzdCBkZWZpbml0aW9uLgoJKHB1c2hsZXZlbCk6IFNpbXBsaWZ5LgoJKHBvcGxldmVsKTogRG9uJ3QgdXNlIG5hbWVkX2xhYmVsX3VzZXMgd2hlbiB3ZSdyZSBvdXRzaWRlCglhIGZ1bmN0aW9uIHNjb3BlLgoJKG1hcmtfc2F2ZWRfc2NvcGUpOiBNYXJrIGZ1bmN0aW9uX2RlY2wgYW5kIGJpbmRpbmdzLgoJKG1heWJlX3B1c2hfdG9fdG9wX2xldmVsKTogRG9uJ3QgdW5jb25kaXRpb25hbGx5IHB1c2ggYSBuZXcKCWZ1bmN0aW9uIGNvbnRleHQuICBTYXZlIGJpbmRpbmdzIGFuZCB0aGUgY3VycmVudF9mdW5jdGlvbl9kZWNsLgoJRG9uJ3QgY2xlYXIgbmFtZWRfbGFiZWxzLgoJKHBvcF9mcm9tX3RvcF9sZXZlbCk6IFBvcCBmdW5jdGlvbiBjb250ZXh0IGlmIGFwcHJvcHJpYXRlLgoJKGluaXRfZGVjbF9wcm9jZXNzaW5nKTogU2V0IGluaXRfbGFuZ19zdGF0dXMgYW5kIGZyZWVfbGFuZ19zdGF0dXMsCglyYXRoZXIgdGhhbiBzYXZlX2xhbmdfc3RhdHVzIGFuZCByZXN0b3JlX2xhbmdfc3RhdHVzLgoJKHN0YXJ0X2Z1bmN0aW9uKTogVGFrZSBTRl8qIGZsYWdzLiAgRG9uJ3QgY2xlYXIgcGVyLWZ1bmN0aW9uIGRhdGEuCglSZW9yZGVyIGFuZCBzaW1wbGlmeSB0byB1c2UgbmV3IHBlci1mdW5jdGlvbiBkYXRhIGNvZGUuICBBZGQKCWFzc2VydHMuCgkoc3RvcmVfcGFybV9kZWNscyk6IERvbid0IGNhbGwgaW5pdF9mdW5jdGlvbl9zdGFydCBoZXJlLgoJKGZpbmlzaF9mdW5jdGlvbik6IEFkanVzdCBmb3IgbmV3IGhhbmRsaW5nIG9mIHBlci1mdW5jdGlvbiBkYXRhLgoJKHB1c2hfY3BfZnVuY3Rpb25fY29udGV4dCk6IFNpbXBsaWZ5LgoJKG1hcmtfY3BfZnVuY3Rpb25fY29udGV4dCk6IENoYW5nZSBiaW5kaW5nX2xldmVsIHRvIGJpbmRpbmdzLgoJKiBkZWNsMi5jIChjbGVhcl90ZW1wX25hbWUpOiBSZW1vdmUuCgkoc3RhcnRfb2JqZWN0cyk6IFVzZSBTRiBmbGFncyB0byBzdGFydF9mdW5jdGlvbi4KCShzdGFydF9zdGF0aWNfc3RvcmFnZV9kdXJhdGlvbl9mdW5jdGlvbik6IExpa2V3aXNlLgoJKiBleGNlcHQuYyAoc3RhcnRfYW5vbl9mdW5jKTogUmVtb3ZlIHJlZHVuZGFudCBjYWxscyB0bwoJcHVzaF9mdW5jdGlvbl9jb250ZXh0X3RvLiAgVXNlIFNGIGZsYWdzIHRvIHN0YXJ0IGZ1bmN0aW9uLgoJKGVuZF9hbm9uX2Z1bmMpOiBSZW1vdmUgcmVkdW5kYW50IGNhbGwgdG8gcG9wX2Z1bmN0aW9uX2NvbnRleHQKCWZyb20uCgkqIGxleC5jIChyZWluaXRfcGFyc2VfZm9yX2Z1bmN0aW9uKTogRG9uJ3QgaW5pdGlhbGl6ZSBwZXItZnVuY3Rpb24KCWRhdGEuCgkqIG1ldGhvZC5jIChlbWl0X3RodW5rKTogQ2xlYXIgY3VycmVudF9mdW5jdGlvbiBhZnRlciBjYWxsaW5nCglhc3NlbWJsZV9lbmRfZnVuY3Rpb24uICBVc2UgU0YgZmxhZ3MgZm9yIHN0YXJ0X2Z1bmN0aW9uLgoJKHN5bnRoZXNpemVfbWV0aG9kKTogVXNlIFNGIGZsYWdzIGZvciBzdGFydF9mdW5jdGlvbi4KCSogcGFyc2UuYzogUmVnZW5lcmF0ZWQuCgkqIHBhcnNlLnkgKGZuLmRlZnBlbik6IExpa2V3aXNlLgoJKHBlbmRpbmdfaW5saW5lKTogQ2xlYXIgY3VycmVudF9mdW5jdGlvbiwgZXZlbiBpZiBzb21ldGhpbmcgZ29lcwoJd3JvbmcuCgkqIHB0LmMgKGluc3RhbnRpYXRlX2RlY2wpOiBVc2UgU0YgZmxhZ3MgdG8gc3RhcnRfZnVuY3Rpb24uCglEb24ndCBzYXZlIGFuZCByZXN0b3JlIGV4cGFuZGluZ19wLgoJKGFkZF90cmVlKTogSGFuZGxlIHRoZSBjYXNlIHdoZXJlIHdlIGFyZSBvdXRzaWRlIGFueSBmdW5jdGlvbi4KCShlbmRfdHJlZSk6IExpa2V3aXNlLgoJKiBydHRpLmMgKHN5dGhlc2l6ZV90aW5mb19mbik6IFVzZSBTRiBmbGFncyB0byBzdGFydF9mdW5jdGlvbi4KCSogc2VtYW50aWNzLmMgKGJlZ2luX2Z1bmN0aW9uX2RlZmluaXRpb24pOiBMaWtld2lzZS4KCShleHBhbmRfYm9keSk6IExpa2V3aXNlLgoKMTk5OS0wOS0wOSAgTmF0aGFuIFNpZHdlbGwgIDxuYXRoYW5AYWNtLm9yZz4KCgkqIGNwLXRyZWUuaCAoY29udmVydF90b192b2lkKTogUHJvdG90eXBlIG5ldyBmdW5jdGlvbi4KCShyZXF1aXJlX2NvbXBsZXRlX3R5cGVfaW5fdm9pZCk6IFJlbW92ZSBwcm90b3R5cGUuCgkqIGN2dC5jIChjb252ZXJ0X3RvX3ZvaWQpOiBOZXcgZnVuY3Rpb24uCgkob2NwX2NvbnZlcnQpOiBVc2UgY29udmVydF90b192b2lkLgoJKiBkZWNsLmMgKGNwbHVzX2V4cGFuZF9leHByX3N0bXQpOiBMaWtld2lzZSwgZm9yIGNvbXBsZXRlCglleHByZXNzaW9ucy4KCSogdHlwZWNrLmMgKHJlcXVpcmVfY29tcGxldGVfdHlwZV9pbl92b2lkKTogUmVtb3ZlIGZ1bmN0aW9uLgoJKGJ1aWxkX2NvbXBvdW5kX2V4cHIpOiBVc2UgY29udmVydF90b192b2lkLgoJKGJ1aWxkX3N0YXRpY19jYXN0KTogTGlrZXdpc2UuCgkoYnVpbGRfY19jYXN0KTogTGlrZXdpc2UuCgkqIHNlbWFudGljcy5jIChmaW5pc2hfZXhwcl9zdG10KTogRG8gbm90IGRlY2F5IGZ1bGwgZXhwcmVzc2lvbnMuCgoJKiB0eXBlY2suYyAoYnVpbGRfeF9jb21wb3VuZF9leHByKTogQWRkIEZJWE1FLgoKMTk5OS0wOS0wOCAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGNwLXRyZWUuaCAoc2NyYXRjaF90cmVlX2NvbnMpOiBSZW1vdmUuCgkqIGNhbGwuYzogUmVwbGFjZSBhbGwgdXNlcyBvZiBleHByX3RyZWVfY29ucywgc2F2ZWFibGVfdHJlZV9jb25zLAoJYW5kIHBlcm1fdHJlZV9jb25zIHdpdGggcGxhaW4gdHJlZV9jb25zLgoJKiBjbGFzcy5jOiBMaWtld2lzZS4KCSogZGVjbC5jOiBMaWtld2lzZS4KCSogZGVjbDIuYzogTGlrZXdpc2UuCgkqIGV4Y2VwdC5jOiBMaWtld2lzZS4KCSogZXhwci5jOiBMaWtld2lzZS4KCSogaW5pdC5jOiBMaWtld2lzZS4KCSogbGV4LmM6IExpa2V3aXNlLgoJKiBtZXRob2QuYzogTGlrZXdpc2UuCgkqIHBhcnNlLnk6IExpa2V3aXNlLgoJKiBwdC5jOiBMaWtld2lzZS4KCSogcmVwby5jOiBMaWtld2lzZS4KCSogcnR0aS5jOiBMaWtld2lzZS4KCSogc2VhcmNoLmM6IExpa2V3aXNlLgoJKiB0eXBlY2suYzogTGlrZXdpc2UuCgkqIHBhcnNlLmM6IFJlZ2VuZXJhdGVkLgoJKiB0cmVlLmMgKGJ1aWxkX3NyY2xvYyk6IFNpbXBsaWZ5LgoKMTk5OS0wOS0wOCAgQnJ1Y2UgS29yYiAgYXV0b2dlbkBsaW51eGJveC5jb20KCgkqIE1ha2VmaWxlLmluOiBHaXZlIHRoZSBncGVyZiB1c2VyIGEgaGludCBhYm91dCB3aHkgImdwZXJmIC1GIiBmYWlscy4KCjE5OTktMDktMDggIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjcC10cmVlLmggKGxhbmdfZGVjbF9mbGFncyk6IFJlbW92ZSBwZXJtYW5lbnRfYXR0ci4KCVJlbW92ZSBuZXh0LgoJKExBTkdfREVDTF9QRVJNQU5FTlQpOiBSZW1vdmUuCgkqIGRlY2wuYyAoZHVwbGljYXRlX2RlY2xzKTogRG9uJ3QgbWVzcyBhYm91dCB3aXRoIG9ic3RhY2tzIHRyeWluZwoJdG8gZnJlZSBtZW1vcnkuCgkobGFuZ19tYXJrX3RyZWUpOiBNYXJrIERFQ0xfTEFOR19TUEVDSUZJQy4KCSogbGV4LmMgKGZyZWVfbGFuZ19kZWNsX2NoYWluKTogUmVtb3ZlLgoJKGJ1aWxkX2xhbmdfZGVjbCk6IERvbid0IHVzZSBvYnN0YWNrcy4KCShyZXRyb2ZpdF9sYW5nX2RlY2wpOiBMaWtld2lzZS4KCShjb3B5X2xhbmdfZGVjbCk6IExpa2V3aXNlLgoKCSogY3AtdHJlZS5oIChzYXZlZF9zY29wZSk6IFJlbW92ZSBvbGRfYmluZGluZ19sZXZlbCBhbmQKCWZ1bmN0aW9uX2RlY2wuICBUaWR5IHVwLgoJKiBkZWNsLmMgKG1hcmtfc2F2ZWRfc2NvcGUpOiBEb24ndCBzZXQgdGhlbS4KCShtYXliZV9wdXNoX3RvX3RvcF9sZXZlbCk6IENsZWFyIG1lbW9yeS4KCgkqIGRlY2wuYyAobGF5b3V0X3Zhcl9kZWNsKTogQ2hhbmdlIHByb3RvdHlwZS4gIERvbid0IGNvbXBsZXRlCgl0eXBlcyBmb3IgZXh0ZXJuYWwgb2JqZWN0cy4KCShjaGVja19pbml0aWFsaXplcik6IExpa2V3aXNlLiAgVGlkeS4KCShpbml0aWFsaXplX2xvY2FsX3Zhcik6IENvbXBsZXRlIHR5cGVzIGhlcmUuCgkoY3BfZmluaXNoX2RlY2wpOiBOb3QgaGVyZS4gIFJlb3JnYW5pemUgYSBsaXR0bGUuCgkoZ3Jva3ZhcmRlY2wpOiBEb24ndCBjb21wbGV0ZSB0eXBlcyBoZXJlLgoKCSogZGVjbC5jIChzdGFydF9mdW5jdGlvbik6IENsZWFyIGxhc3RfZHRvcl9pbnNuIGFuZAoJbGFzdF9wYXJtX2NsZWFudXBfaW5zbi4KCShwdXNoX2NwX2Z1bmN0aW9uX2NvbnRleHQpOiBKdXN0IGNvcHkgb3ZlciBhIGxpdHRsZSBvZgoJdGhlIG9sZCBjb250ZXh0LCBub3QgYWxsIG9mIGl0LgoKCSogY3AtdHJlZS5oIChjb3B5X3RvX3Blcm1hbmVudCk6IFJlbW92ZS4KCShwZXJtYW5lbnRfcCk6IExpa2V3aXNlLgoJKiBkZWNsLmMgKGJ1aWxkaW5nX3R5cGVuYW1lX3R5cGUpOiBEb24ndCB1c2UgY29weV90b19wZXJtYW5lbnQuCgkoc3RhcnRfZGVjbCk6IExpa2V3aXNlLgoJKGdyb2tfcmVmZXJlbmNlX2luaXQpOiBMaWtld2lzZS4KCShjcF9maW5pc2hfZGVjbCk6IExpa2V3aXNlLgoJKiBpbml0LmMgKGJ1aWxkX25ld18xKTogRG9uJ3QgdXNlIG1hcGNhci4KCShidWlsZF92ZWNfZGVsZXRlXzEpOiBEb24ndCB1c2UgY29weV90b19wZXJtYW5lbnQuCgkoYnVpbGRfdmVjX2luaXQpOiBMaWtld2lzZS4KCSogcGFyc2UueSAocHJpbWFyeSk6IExpa2V3aXNlLgoJKiBwYXJzZS5jOiBSZWdlbmVyYXRlZC4KCSogcHQuYyAocHVzaF90ZW1wbGF0ZV9kZWNsX3JlYWwpOiBEb24ndCB1c2UgY29weV90b19wZXJtYW5lbnQuCgkobG9va3VwX3RlbXBsYXRlX2NsYXNzKTogTGlrZXdpc2UuCgkodHN1YnN0X2ZyaWVuZF9mdW5jdGlvbik6IExpa2V3aXNlLgoJKGluc3RhbnRpYXRlX2NsYXNzX3RlbXBsYXRlKTogTGlrZXdpc2UuCgkodHN1YnN0X2RlY2wpOiBMaWtld2lzZS4KCSh0c3Vic3QpOiBMaWtld2lzZS4KCShpbnN0YW50aWF0ZV90ZW1wbGF0ZSk6IExpa2V3aXNlLgoJKHVuaWZ5KTogTGlrZXdpc2UuCgkqIHJ0dGkuYyAoZ2V0X3RpbmZvX2ZuKTogTGlrZXdpc2UuCgkoYnVpbGRfZHluYW1pY19jYXN0KTogTGlrZXdpc2UuCgkqIHNlbWFudGljcy5jIChmaW5pc2hfaWZfc3RtdF9jb25kKTogTGlrZXdpc2UuCgkoZmluaXNoX3doaWxlX3N0bXRfY29uZCk6IExpa2V3aXNlLgoJKGZpbmlzaF9kb19zdG10KTogTGlrZXdpc2UuCgkoZmluaXNoX2Zvcl9jb25kKTogTGlrZXdpc2UuCgkoZmluaXNoX2Zvcl9leHByKTogTGlrZXdpc2UuCgkoZmluaXNoX2NsZWFudXApOiBMaWtld2lzZS4KCShhZGRfZGVjbF9zdG10KTogTGlrZXdpc2UuCgkoZmluaXNoX25hbWVkX3JldHVybl92YWx1ZSk6IExpa2V3aXNlLgoJKGZpbmlzaF9xdWFsaWZpZWRfY2FsbF9leHByKTogTGlrZXdpc2UuCgkqIHRyZWUuYyAocGVybV9tYW5pcCk6IFJlbW92ZS4KCShidWlsZF9leGNlcHRpb25fdmFyaWFudCk6IERvbid0IHVzZSBjb3B5X3RvX3Blcm1hbmVudC4KCShwZXJtYW5lbnRfcCk6IFJlbW92ZS4KCShjb3B5X3RvX3Blcm1hbWVudCk6IFJlbW92ZS4KCShidWlsZF9taW5fbnQpOiBEb24ndCB1c2UgY29weV90b19wZXJtYW5lbnQuCgkoYnVpbGRfbWluKTogTGlrZXdpc2UuCgkobWluX3RyZWVfY29ucyk6IExpa2V3aXNlLgoJKiB0eXBlY2tjLmMgKGJ1aWxkX3N0YXRpY19jYXN0KTogTGlrZXdpc2UuCgkoYnVpbGRfcmVpbnRlcnByZXRfY2FzdCk6IExpa2V3aXNlLgoJKGJ1aWxkX2NvbnN0X2Nhc3QpOiBMaWtld2lzZS4KCjE5OTktMDktMDcgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBkZWNsLmMgKGdnY19wKTogU2V0IGl0IHRvIDEuCgkobWFya19zYXZlZF9zY29wZSk6IEFkZCBwcm90b3R5cGUuCgoxOTk5LTA5LTA3ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEBjeWdudXMuY29tPgoKCSogY3AtdHJlZS5oIChDX1BST01PVElOR19JTlRFR0VSX1RZUEVfUCk6IERlbGV0ZS4KCSogdHlwZWNrLmMgKHNlbGZfcHJvbW90aW5nX2FyZ3NfcCk6IERlbGV0ZS4KCjE5OTktMDktMDcgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIHNlYXJjaC5jIChiaW5mb19mb3JfdnRhYmxlKTogVXNlIENMQVNTVFlQRV9WRklFTERfUEFSRU5ULgoJKGRmc19iZnZfcXVldWVfcCwgZGZzX2Jmdl9oZWxwZXIsIHN0cnVjdCBiZnZfaW5mbyk6IFJlbW92ZS4KCjE5OTktMDktMDcgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBNYWtlZmlsZS5pbiAodHJlZS5vKTogRGVwZW5kIG9uIGdnYy5oLgoJKiBjbGFzcy5jIChtYWtlX21ldGhvZF92ZWMpOiBSZW1vdmUuCgkoZnJlZV9tZXRob2RfdmVjKTogTGlrZXdpc2UuCgkoZnJlZV9tZXRob2RfdmVjcyk6IFJlbW92ZS4KCShhZGRfbWV0aG9kKTogRG9uJ3QgdXNlIHRoZW0uCgkqIGNwLXRyZWUuZGVmIChQVFJNRU1fQ1NUKTogTWFrZSBpdCBsb25nZXIuCgkoVEVNUExBVEVfUEFSTV9JTkRFWCk6IE1ha2UgaXQgc2hvcnRlci4KCSogY3AtdHJlZS5oIChCSU5ESU5HX0hBU19MRVZFTF9QKTogTmV3IG1hY3JvLgoJKHRlbXBsYXRlX3Bhcm1faW5kZXgpOiBSZW1vdmUgUlRMIGZpZWxkLgoJKHB0cm1lbV9jc3QpOiBBZGQgUlRMIGZpZWxkLgoJKGZpbmlzaF9mdW5jdGlvbik6IFJlbW92ZWQgcGFyYW1ldGVyLgoJKHByb2Nlc3NfbmV4dF9pbmxpbmUpOiBDaGFuZ2UgcHJvdG90eXBlLgoJKGluaXRfY3BsdXNfdW5zYXZlKTogUmVuYW1lIHRvIGluaXRfdHJlZS4KCShiaW5kaW5nX2luaXQpOiBSZW1vdmUuCgkqIGRlY2wuYyAoZnJlZV9iaW5kaW5nX25vZGVzKTogUmVtb3ZlLgoJKHB1c2hfYmluZGluZyk6IERvbid0IHVzZSB0aGVtLiAgU2V0IEJJTkRJTkdfSEFTX0xFVkVMX1AuCgkocG9wX2JpbmRpbmcpOiBEb24ndCB1c2UgZnJlZV9iaW5kaW5nX25vZGVzLgoJKGZyZWVfYmluZGluZ192ZWNzKTogUmVtb3ZlLgoJKHN0b3JlX2JpbmRpbmdzKTogRG9uJ3QgdXNlIHRoZW0uCgkocG9wX2Zyb21fdG9wX2xldmVsKTogTGlrZXdpc2UuCgkobG9va3VwX25hbWVzcGFjZV9uYW1lKTogU2ltcGxpZnkuCgkoYnVpbGRfdHlwZW5hbWVfdHlwZSk6IERvbid0IHVzZSBvYnN0YWNrX2ZyZWUuCgkodW5xdWFsaWZpZWRfbmFtZXNwYWNlX2xvb2t1cCk6IFNpbXBsaWZ5LgoJKGxvb2t1cF9uYW1lX3JlYWwpOiBTaW1wbGlmeS4KCShzdGFydF9mdW5jdGlvbik6IFJlbW92ZSBjb21tZW50IGFib3V0IGxlYWtzLgoJKGZpbmlzaF9mdW5jdGlvbik6IFJlbW92ZWQgbmVzdGVkIHBhcmFtZXRlci4gIENhbGwKCWV4cGFuZF9lbmRfYmluZGluZ3MgZXZlbiB3aGVuIGJ1aWxkaW5nX3N0bXRfdHJlZS4KCUNhbGwgZ2djX3B1c2hfY29udGV4dCBhbmQgZ2djX3BvcF9jb250ZXh0IGFyb3VuZAoJcmVzdF9vZl9jb21waWxhdGlvbiwgaWYgbmVjZXNzYXJ5LgoJKG1hcmtfY3BfZnVuY3Rpb25fY29udGV4dCk6IEhhbmRsZSBhIE5VTEwgbGFuZ3VhZ2UtY29udGV4dC4KCShsYW5nX21hcmtfZmFsc2VfbGFiZWxfc3RhY2spOiBGaXggdHlwby4KCShsYW5nX21hcmtfdHJlZSk6IEhhbmRsZSBDUExVU19CSU5ESU5HLCBPVkVSTE9BRCwKCVRFTVBMQVRFX1BBUk1fSU5ERVguICBIYW5kbGUgdGhlIGZ1bm55IFRZUEVfTEFOR19TUEVDSUZJQyBvbgoJcG9pbnRlciB0byBtZXRob2QgdHlwZXMuCgkobGFuZ19jbGVhbnVwX3RyZWUpOiBVc2UgZnJlZSB0byBmcmVlIFRZUEVfTEFOR19TUEVDSUZJQy4KCSogZGVjbDIuYyAoZmluaXNoX29iamVjdHMpOiBBZGp1c3QgY2FsbCB0byBmaW5pc2hfZnVuY3Rpb24uCgkoZmluaXNoX3N0YXRpY19zdG9yZV9kdXJhdGlvbl9mdW5jdGlvbik6IExpa2V3aXNlLgoJKGRvX25vbm1lbWJlcl91c2luZ19kZWNsKTogUmVtb3ZlIGNhbGwgdG8gYmluZGluZ19pbml0LgoJKiBleGNlcHQuYyAoZW5kX2Fub25fZnVuYyk6IEFkanVzdCBjYWxsIHRvIGZpbmlzaF9mdW5jdGlvbi4KCSogbGV4LmMgKG1hcmtfaW1wbF9maWxlX2NoYWluKTogTmV3IGZ1bmN0aW9uLgoJKGluaXRfcGFyc2UpOiBDYWxsIGluaXRfdHJlZSwgbm90IGluaXRfY3BsdXNfdW5zYXZlLgoJQWRkIEdDIHJvb3RzLgoJKGNwX3ByYW1nYV9pbnRlcmZhY2UpOiBVc2UgeG1hbGxvYywgbm90IHBlcm1hbGxvYy4KCShjcF9wcmFnbWFfaW1wbGVtZW50YXRpb24pOiBMaWtld2lzZS4KCShiZWdpbl9kZWZpbml0aW9uX29mX2luY2xhc3NfaW5saW5lKTogU2ltcGxpZnkuCgkocHJvY2Vzc19uZXh0X2lubGluZSk6IEFkanVzdCBwcm90b3R5cGUuCgkoZG9fc2NvcGVkX2lkKTogRG9uJ3QgY2FsbCBiaW5kaW5nX2luaXQuCgkobWFrZV9sYW5nX3R5cGUpOiBBbGxvY2F0ZSBUWVBFX0xBTkdfU1BFQ0lGSUMgd2l0aCB4bWFsbG9jLgoJKiBtZXRob2QuYyAoZW1pdF90aHVuayk6IEFkanVzdCBjYWxsIHRvIGZpbmlzaF9mdW5jdGlvbi4KCShzeW50aGVzaXplX21ldGhvZCk6IExpa2V3aXNlLgoJKiBwYXJzZS55ICgldW5pb24pOiBBZGQgYSBuZXcgYHBpJyB2YXJpYW50LgoJKFBSRV9QQVJTRURfRlVOQ1RJT05fREVDTCk6IFVzZSBpdC4KCShmbi5kZWZwZW4pOiBMaWtld2lzZS4KCShmbmRlZik6IEFkanVzdCBjYWxsIHRvIGZpbmlzaF9mdW5jdGlvbi4KCSogcHQuYyAoaW5zdGFudGlhdGVfZGVjbCk6IExpa2V3aXNlLgoJKiBydHRpLmMgKHN5bnRoZWlzemVfdGluZm9fZm4pOiBMaWtld2lzZS4KCSogc2VtYW50aWNzLmMgKGV4cGFuZF9ib2R5KTogTGlrZXdpc2UuCgkqIHRyZWUuYzogSW5jbHVkZSBnZ2MuaC4KCShtYXJrX2xpc3RfaGFzaCk6IE5ldyBmdW5jdGlvbi4KCShiaW5kaW5nX2luaXQpOiBSZW1vdmUuCgkoaW5pdF9jcGx1c191bnNhdmUpOiBSZW5hbWUgdG8gLi4uCgkoaW5pdF90cmVlKTogVGhpcy4gIEFkZCBHQyByb290cy4KCjE5OTktMDktMDUgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJR2V0IHJlYWR5IGZvciBnYXJiYWdlIGNvbGxlY3Rpb24uCgkqIE1ha2VmaWxlLmluIChDWFhfVFJFRV9IKTogQWRkIHZhcnJheS5oCgkobGV4Lm8pOiBEZXBlbmQgb24gZ2djLmguCgkoZGVjbC5vKTogTGlrZXdpc2UuCgkoZGVjbDIubyk6IExpa2V3aXNlLgoJKG1ldGhvZC5vKTogTGlrZXdpc2UuCgkoc2VhcmNoLm8pOiBMaWtld2lzZS4KCShwdC5vKTogTGlrZXdpc2UuCgkocmVwby5vKTogTGlrZXdpc2UuCgkqIGNsYXNzLmM6IEluY2x1ZGUgZ2djLmguCgkoY3VycmVudF9jbGFzc19uYW1lKTogUmVtb3ZlLgoJKGN1cnJlbnRfY2xhc3NfdHlwZSk6IExpa2V3aXNlLgoJKGN1cnJlbnRfYWNjZXNzX3NwZWNpZmllcik6IExpa2V3aXNlLgoJKHByZXZpb3VzX2NsYXNzX3R5cGUpOiBMaWtld2lzZS4KCShwcmV2aW91c19jbGFzc192YWx1ZXMpOiBMaWtld2lzZS4KCShjbGFzc19jYWNoZV9maXJzdG9iaik6IExpa2V3aXNlLgoJKGN1cnJlbnRfbGFuZ19iYXNlKTogTGlrZXdpc2UuCgkoY3VycmVudF9sYW5nX3N0YWNrKTogTGlrZXdpc2UuCgkoY3VycmVudF9sYW5nX3N0YWNrc2l6ZSk6IExpa2V3aXNlLgoJKGxhbmdfbmFtZV9jKTogTGlrZXdpc2UuCgkobGFuZ19uYW1lX2NwbHVzcGx1cyk6IExpa2V3aXNlLgoJKGxhbmdfbmFtZV9qYXZhKTogTGlrZXdpc2UuCgkoY3VycmVudF9sYW5nX25hbWUpOiBMaWtld2lzZS4KCShiYXNlX2xheW91dF9kZWNsKTogTGlrZXdpc2UuCgkoYWNjZXNzX2RlZmF1bHRfbm9kZSk6IExpa2V3aXNlLgoJKGFjY2Vzc19wdWJsaWNfbm9kZSk6IExpa2V3aXNlLgoJKGFjY2Vzc19wcm90ZWN0ZWRfbm9kZSk6IExpa2V3aXNlLgoJKGFjY2Vzc19wcml2YXRlX25vZGUpOiBMaWtld2lzZS4KCShhY2Nlc3NfZGVmYXVsdF92aXJ0dWFsX25vZGUpOiBMaWtld2lzZS4KCShhY2Nlc3NfcHVibGljX3ZpcnR1YWxfbm9kZSk6IExpa2V3aXNlLgoJKGFjY2Vzc19wcm90ZWN0ZWRfdmlydHVhbF9ub2RlKTogTGlrZXdpc2UuCgkoYWNjZXNzX3ByaXZhdGVfdmlydHVhbF9ub2RlKTogTGlrZXdpc2UuCgkoc2lnbmVkX3plcm9fbm9kZSk6IExpa2V3aXNlLgoJKGluaXRfY2xhc3NfcHJvY2Vzc2luZyk6IERvbid0IGJ1aWxkIGJhc2VfbGF5b3V0X2RlY2wuCgkocHVzaF9sYW5nX2NvbnRleHQpOiBBZGp1c3Qgbm93IHRoYXQgY3VycmVudF9sYW5nX2Jhc2UgaXMgYSB2YXJyYXkuCgkocG9wX2xhbmdfY29udGV4dCk6IExpa2V3aXNlLgoJKiBjcC10cmVlLmg6IEluY2x1ZGUgdmFycmF5LmguCgkoY3BfZ2xvYmFsX3RyZWVzKTogQWRkIGFjY2Vzc19kZWZhdWx0LCBhY2Nlc3NfcHVibGljLAoJYWNjZXNzX3Byb3RlY3RlZCwgYWNjZXNzX3ByaXZhdGUsIGFjY2Vzc19kZWZhdWx0X3ZpcnR1YWwsCglhY2Nlc3NfcHVibGljX3ZpcnR1YWwsIGFjY2Vzc19wcm90ZWN0ZWRfdmlydHVhbCwKCWFjY2Vzc19wcml2YXRlX3ZpcnR1YWwsIGN0b3JfaWRlbnRpZmllciwgZGVsdGEyX2lkZW50aWZpZXIsCglkZWx0YV9pZGVudGlmaWVyLCBkdG9yX2lkZW50aWZpZXIsIGluX2NoYXJnZV9pZGVudGlmaWVyLAoJaW5kZXhfaWRlbnRpZmllciwgbmVsdHNfaWRlbnRpZmllciwgdGhpc19pZGVudGlmaWVyLAoJcGZuX2lkZW50aWZpZXIsIHBmbl9vcl9kZWx0YTJfaWRlbnRpZmllciwgdnB0cl9pZGVudGlmaWVyLAoJbGFuZ19uYW1lX2MsIGxhbmdfbmFtZV9jcGx1c3BsdXMsIGxhbmdfbmFtZV9qYXZhLAoJZW1wdHlfZXhjZXB0X3NwZWMsIG51bGwsIGpjbGFzcywgbWludXNfb25lLCB0ZXJtaW5hdGUuCgkoc2F2ZWRfc2NvcGUpOiBNb3ZlIGhlcmUgZnJvbSBkZWNsLmMuICBEZWZpbmUgZ2xvYmFscyBpbiB0ZXJtcyBvZgoJc2F2ZWRfc2NvcGU6IGN1cnJlbnRfbmFtZXNwYWNlLCBjdXJyZW50X2NsYXNzX25hbWUsCgljdXJyZW50X2NsYXNzX3R5cGUsIGN1cnJlbnRfYWNjZXNzX3NwZWNpZmllciwgY3VycmVudF9sYW5nX3N0YWNrLAoJY3VycmVudF9sYW5nX2Jhc2UsIGN1cnJlbnRfbGFuZ19uYW1lLCBjdXJyZW50X2Z1bmN0aW9uX3Bhcm1zLAoJY3VycmVudF90ZW1wbGF0ZV9wYXJtcywgcHJvY2Vzc2luZ190ZW1wbGF0ZV9kZWNsLAoJcHJvY2Vzc2luZ19zcGVjaWFsaXphdGlvbiwgcHJvY2Vzc2luZ19leHBsaWNpdF9pbnN0YW50aWF0aW9uLAoJcHJldmlvdXNfY2xhc3NfdHlwZSwgcHJldmlvdXNfY2xhc3NfdmFsdWVzLCBjbGFzc19jYWNoZV9maXJzdG9iai4KCShzY29wZV9jaGFpbik6IE5ldyB2YXJpYWJsZS4KCShpbml0X3B0KTogTmV3IGZ1bmN0aW9uLgoJKiBkZWNsLmMgKGN1cnJlbnRfbmFtZXNwYWNlKTogUmVtb3ZlLgoJKHRoaXNfaWRlbnRpZmllciwgaW5fY2hhcmdlX2lkZW50aWZpZXIsIGN0b3JfaWRlbnRpZmllcik6IExpa2V3aXNlLgoJKGR0b3JfaWRlbnRpZmllciwgcGZuX2lkZW50aWZpZXIsIGluZGV4X2lkZW50aWZpZXIpOiBMaWtld2lzZS4KCShkZWx0YV9pZGVudGlmaWVyLCBkZWx0YTJfaWRlbnRpZmllcik6IExpa2V3aXNlLgoJKHBmbl9vcl9kZWx0YTJfaWRlbnRpZmllciwgdGFnX2lkZW50aWZpZXIpOiBMaWtld2lzZQoJKHZ0X29mZl9pZGVudGlmaWVyLCBlbXB0eV9leGNlcHRfc3BlYywgbnVsbF9ub2RlKTogTGlrZXdpc2UuCgkoY3VycmVudF9mdW5jdGlvbl9wYXJtcywgY3VycmVudF9sYW5nX2Jhc2UpOiBSZW1vdmUuCgkoY3VycmVudF9sYW5nX3N0YWNrLCBwcmV2aW91c19jbGFzc192YWx1ZXMpOiBSZW1vdmUuCgkoY2xhc3NfYmluZGluZ19sZXZlbCk6IE1hY3JvaXplLgoJKHNhdmVkX3Njb3BlKTogUmVtb3ZlLgoJKGN1cnJlbnRfc2F2ZWRfc2NvcGUpOiBSZW5hbWUgdG8gc2NvcGVfY2hhaW4uCgkobWFya19zYXZlZF9zY29wZSk6IEFkanVzdCBmb3IgbmV3IHNjb3BlIHN0cnVjdHVyZS4KCShtYXliZV9wdXNoX3RvX3RvcF9sZXZlbCk6IExpa2V3aXNlLgoJKHBvcF9mcm9tX3RvcF9sZXZlbCk6IExpa2V3aXNlLgoJKGR1cGxpY2F0ZV9kZWNscyk6IEFkanVzdCBub3cgdGhhdCBjdXJyZW50X2xhbmdfYmFzZSBpcyBhIHZhcnJheS4KCShidWlsZF90eXBlbmFtZV90eXBlKTogQ2FsbCBnZ2NfYWRkX3RyZWVfaGFzaF90YWJsZV9yb290LgoJKGluaXRfZGVjbF9wcm9jZXNzaW5nKTogQ2FsbCBpbml0X3B0LiAgQ2FsbCBwdXNoX3RvX3RvcF9sZXZlbCB0bwoJc2V0IHVwIGdsb2JhbHMuICBBZGQgR0Mgcm9vdHMuCgkoeHJlZl9iYXNldHlwZXMpOiBBZGp1c3Qgbm93IHRoYXQgY3VycmVudF9sYW5nX2Jhc2UgaXMgYSB2YXJyYXkuCgkqIGRlY2wuaCAodGhpc19pZGVudGlmaWVyKTogUmVtb3ZlLgoJKGluX2NoYXJnZV9pZGVudGlmaWVyKTogTGlrZXdpc2UuCgkqIGRlY2wyLmM6IERvbid0IGluY2x1ZGUgdmFycmF5LmguCgkoY3VycmVudF9uYW1lc3BhY2UpOiBSZW1vdmUuCgkoaW5pdF9kZWNsMik6IEFkZCBHQyByb290cy4KCSogZXhjZXB0LmMgKFRlcm1pbmF0ZSk6IFJlbW92ZS4KCShpbml0X2V4Y2VwdGlvbl9wcm9jZXNzaW5nKTogVXNlIHRlcm1pbmF0ZV9ub2RlIGluc3RlYWQuCgkoYnVpbGRfdGVybWluYXRlX2hhbmRsZXIpOiBMaWtld2lzZS4KCSogaW5pdC5jIChuY19uZWx0c19maWVsZF9pZCk6IFJlbW92ZS4KCShtaW51c19vbmUpOiBMaWtld2lzZS4KCShpbml0X2luaXRfcHJvY2Vzc2luZyk6IFVzZSBtaW51c19vbmVfbm9kZSBhbmQgbmVsdHNfaWRlbnRpZmllcgoJaW5zdGVhZC4gIEFkZCBHQyByb290cy4KCShqY2xhc3Nfbm9kZSk6IFJlbW92ZS4KCShidWlsZF9uZXdfMSk6IFVzZSBuZWx0c19pZGVudGlmaWVyLgoJKGJ1aWxkX3ZlY19pbml0KTogTGlrZXdpc2UuCgkoYnVpbGRfdmVjX2RlbGV0ZSk6IExpa2V3aXNlLgoJKiBsZXguYzogSW5jbHVkZSBnZ2MuaC4KCShkZWZhcmdfZm4pOiBNb3ZlIGRlY2xhcmF0aW9uIGVhcmx5LgoJKGRlZmFyZ19wYXJtcyk6IExpa2V3aXNlLgoJKGluaXRfcGFyc2UpOiBBZGQgR0Mgcm9vdHMuCgkoaGFuZGxlX2NwX3ByYWdtYSk6IFJlbW92ZSByZWR1bmRhbnQgZGVjbGFyYXRpb24gb2YKCXBlbmRpbmdfdnRhYmxlcy4KCSogbWV0aG9kLmM6IEluY2x1ZGUgZ2djLmguCgkoYnR5cGVsaXN0KTogTWFrZSBpdCBhIHZhcnJheS4gIEFsbCB1c2VzIGNoYW5nZWQuCgkoa3R5cGVsaXN0KTogTGlrZXdpc2UuCgkoaW5pdF9tZXRob2QpOiBBZGQgR0Mgcm9vdHMuCgkqIHB0LmM6IERvbid0IGluY2x1ZGUgdmFycmF5LmguICBJbmNsdWRlIGdnYy5oLgoJKGN1cnJlbnRfdGVtcGxhdGVfcGFybXMpOiBSZW1vdmUuCgkocHJvY2Vzc2luZ190ZW1wbGF0ZV9kZWNsKTogTGlrZXdpc2UuCgkocHJvY2Vzc2luZ19zcGVjaWFsaXphdGlvbik6IExpa2V3aXNlLgoJKHByb2Nlc3NpbmdfZXhwbGljaXRfaW5zdGFudGlhdGlvbik6IExpa2V3aXNlLgoJKGluaXRfcHQpOiBOZXcgZnVuY3Rpb24uCgkqIHJlcG8uYzogSW5jbHVkZSBnZ2MuaC4KCShpbml0X3JlcG8pOiBBZGQgR0Mgcm9vdHMuCgkqIHNlYXJjaC5jOiBEb24ndCBpbmNsdWRlIHZhcnJheS5oLgoJKF92cHRyX25hbWUpOiBSZW1vdmUuCgkobG9va3VwX2ZpZWxkXzEpOiBVc2UgdnRwcl9pZGVudGlmaWVyIGluc3RlYWQuCgkoZXhwYW5kX2luZGlyZWN0X3Z0YmxzX2luaXQpOiBSZW1vdmUgcmVkdW5kYW50IGRlY2xhcmF0aW9uIG9mCglpbl9jaGFyZ2VfaWRlbnRpZmllci4KCShpbml0X3NlYXJjaF9wcm9jZXNzaW5nKTogVXNlIHZwdHJfaWRlbnRpZmllci4KCjE5OTktMDktMDUgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgkgICAgQmVybmQgU2NobWlkdCA8YmVybmRzQGN5Z251cy5jby51az4KCSAgICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogTWFrZWZpbGUuaW4gKHBhcnNlLm8pOiBEZXBlbmQgb24gZ2djLmguCgkoZGVjbDIubyk6IERlcGVuZCBvbiBnZ2MuaC4KCShpbml0Lm8pOiBEZXBlbmQgb24gZ2djLmguCgkqIGNwLXRyZWUuaCAoaW5pdF9kZWNsMik6IERlY2xhcmUuCgkoY3BfcGFyc2VfaW5pdCk6IExpa2V3aXNlLgoJKiBkZWNsLmMgKGdnY19wKTogRGVmaW5lIHRvIHplcm8uCgkobWFya19zYXZlZF9zY29wZSk6IE5ldyBmdW5jdGlvbi4KCShpbml0X2RlY2xfcHJvY2Vzc2luZyk6IENhbGwgY3BfcGFyc2VfaW5pdCwgYW5kIGNwX2RlY2wyLgoJUmVnaXN0ZXIgR0Mgcm9vdHMuCgkoZXhwYW5kX3N0YXRpY19pbml0KTogQWRkIEdDIHJvb3RzLgoJKiBkZWNsMi5jOiBJbmNsdWRlIGdnYy5oLgoJKGluaXRfZGVjbDIpOiBOZXcgZnVuY3Rpb24uCgkqIGluaXQuYzogSW5jbHVkZSBnZ2MuaC4KCShpbml0X2luaXRfcHJvY2Vzc2luZyk6IEFkZCBHQyByb290cy4KCSogcGFyc2UueTogSW5jbHVkZSBnZ2MuaC4KCShjcF9wYXJzZV9pbml0KTogTmV3IGZ1bmN0aW9uLgoKMTk5OS0wOS0wNCAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGRlY2wuYyAoaW5pdF9kZWNsX3Byb2Nlc3NpbmcpOiBTZXQgbWFya19sYW5nX3N0YXR1cy4KCShsYW5nX21hcmtfZmFsc2VfbGFiZWxfc3RhY2spOiBBZGp1c3QgcHJvdG90eXBlLgoJKiBkZWNsMi5jIChncm9rX2Z1bmN0aW9uX2luaXQpOiBSZW1vdmUgZXh0cmFuZW91cyBkZWNsYXJhdGlvbiBvZgoJYWJvcnRfZm5kZWNsLgoKCSogTWFrZS1sYW5nLmluIChjYzFwbHVzKTogUmVtb3ZlIGRlcGVuZGVuY3kgb24gR0dDLgoJKiBNYWtlZmlsZS5pbiAoT0JKUyk6IERvbid0IG1lbnRpb24gZ2djLXNpbXBsZS5vLgoJKE9CSkRFUFMpOiBEb24ndCBtZW50aW9uIGdnYy1zaW1wbGUuby4KCgkqIE1ha2UtbGFuZy5pbiAoY2MxcGx1cyk6IERlcGVuZCBvbiAkKEdHQykuCgkqIE1ha2VmaWxlLmluIChPQkpTKTogQWRkIGdnYy1zaW1wbGUuby4KCShPQkpERVBTKTogTGlrZXdpc2UuCgkqIGNwLXRyZWUuaCAobGFuZ3VhZ2VfZnVuY3Rpb24pOiBSZW5hbWUgbWVtYmVycyB0byBgeF8nIHZlcnNpb25zOwoJd2Ugbm93IGhhdmUgeF9uYW1lZF9sYWJlbHMsIHhfY3Rvcl9sYWJlbCwgeF9kdG9yX2xhYmVsLAoJeF9iYXNlX2luaXRfbGlzdCwgeF9tZW1iZXJfaW5pdF9saXN0LCB4X2Jhc2VfaW5pdF9leHByLAoJeF9jdXJyZW50X2NsYXNzX3B0ciwgeF9jdXJyZW50X2NsYXNzX3JlZiwgeF9sYXN0X3RyZWUsCgl4X2xhc3RfZXhwcl90eXBlLCB4X2xhc3RfZHRvcl9pbnNuLCB4X2xhc3RfcGFybV9jbGVhbnVwX2luc24sIGFuZAoJeF9yZXN1bHRfcnR4LgoJKGR0b3JfbGFiZWwsIGN0b3JfbGFiZWwsIGN1cnJlbnRfYmFzZV9pbml0X2xpc3QsCgljdXJyZW50X21lbWJlcl9pbml0X2xpc3QsIGJhc2VfaW5pdF9leHByLCBjdXJyZW50X2NsYXNzX3B0ciwKCWN1cnJlbnRfY2xhc3NfcmVmLCBsYXN0X3RyZWUsIGxhc3RfZXhwcl90eXBlKTogQWRqdXN0IGFjY29yZGluZ2x5LgoJKiBkZWNsLmM6IEluY2x1ZGUgZ2djLmguCgkobGFzdF9kdG9yX2luc24pOiBBZGp1c3QgdG8gdXNlIHhfIG5hbWVzLgoJKGxhc3RfcGFybV9jbGVhbnVwX2luc24pOiBMaWtld2lzZS4KCShvcmlnaW5hbF9yZXN1bHRfcnR4KTogTGlrZXdpc2UuCgkobmFtZWRfbGFiZWxzKTogTGlrZXdpc2UuCgkobWFya19iaW5kaW5nX2xldmVsKTogTmV3IGZ1bmN0aW9uLgoJKG1hcmtfY3BfZnVuY3Rpb25fY29udGV4dCk6IExpa2V3aXNlLgoJKG1hcmtfZmFsc2VfbGFiZWxfc3RhY2spOiBMaWtld2lzZS4KCShsYW5nX21hcmtfdHJlZSk6IExpa2V3aXNlLgoJKGxhbmdfY2xlYW51cF90cmVlKTogTGlrZXdpc2UuCgoxOTk5LTA5LTAzICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogTWFrZWZpbGUuaW4gKENYWF9UUkVFX0gpOiBJbmNsdWRlIGZ1bmN0aW9uLmguCgkoZGVjbC5vKTogRG9uJ3QgZGVwZW5kIG9uIGZ1bmN0aW9uLmguCgkoZGVjbDIubyk6IExpa2V3aXNlLgoJKHR5cGVjay5vKTogTGlrZXdpc2UuCgkoaW5pdC5vKTogTGlrZXdpc2UuCgkobWV0aG9kLm8pOiBMaWtld2lzZS4KCSogY3AtdHJlZS5oOiBJbmNsdWRlIGZ1bmN0aW9uLmguCgkoY3BfZnVuY3Rpb24pOiBSZW5hbWUgdG8gbGFuZ3VhZ2VfZnVuY3Rpb24uICBSZW1vdmUgbmV4dC4KCShjcF9mdW5jdGlvbl9jaGFpbik6IE1ha2UgaXQgYSBtYWNybywgbm90IGEgdmFyaWFibGUuCgkocHVzaF9jcF9mdW5jdGlvbl9jb250ZXh0KTogRG9uJ3QgZGVjbGFyZS4KCShwb3BfY3BfZnVuY3Rpb25fY29udGV4dCk6IExpa2V3aXNlLgoJKiBkZWNsLmM6IERvbid0IGluY2x1ZGUgZnVuY3Rpb24uaC4KCShwdXNoX2NwX2Z1bmN0aW9uX2NvbnRleHQpOiBNYWtlIGl0IHN0YXRpYy4gIE1ha2UgaXQgc3VpdGFibGUgZm9yCglhIHNhdmVfbGFuZ19zdGF0dXMgY2FsbGJhY2suCgkocG9wX2NwX2Z1bmN0aW9uX2NvbnRleHQpOiBMaWtld2lzZS4KCShtYXliZV9wdXNoX3RvX3RvcF9sZXZlbCk6IENhbGwgcHVzaF9mdW5jdGlvbl9jb250ZXh0X3RvLCBub3QKCXB1c2hfY3BfZnVuY3Rpb25fY29udGV4dC4KCShwb3BfZnJvbV90b3BfbGV2ZWwpOiBDYWxsIHBvcF9mdW5jdGlvbl9jb250ZXh0X2Zyb20sIG5vdAoJcG9wX2NwX2Z1bmN0aW9uX2NvbnRleHQuCgkoaW5pdF9kZWNsX3Byb2Nlc3NpbmcpOiAgU2V0IHNhdmVfbGFuZ19zdGF0dXMgYW5kCglyZXN0b3JlX2xhbmdfc3RhdHVzLiAgQ2FsbCBwdXNoX2Z1bmN0aW9uX2NvbnRleHRfdG8sIG5vdAoJcHVzaF9jcF9mdW5jdGlvbl9jb250ZXh0LgoJKGNwX2Z1bmN0aW9uX2NoYWluKTogUmVtb3ZlLgoJKiBkZWNsMi5jOiBEb24ndCBpbmNsdWRlIGZ1bmN0aW9uLmguCgkqIGV4Y2VwdC5jOiBEb24ndCBpbmNsdWRlIGZ1bmN0aW9uLmguCgkoc3RhcnRfYW5vbl9mdW5jKTogQ2FsbCBwdXNoX2Z1bmN0aW9uX2NvbnRleHRfdG8sIG5vdAoJcHVzaF9jcF9mdW5jdGlvbl9jb250ZXh0LgoJKGVuZF9hbm9uX2Z1bmMpOiAgQ2FsbCBwb3BfZnVuY3Rpb25fY29udGV4dF9mcm9tLCBub3QKCXBvcF9jcF9mdW5jdGlvbl9jb250ZXh0LgoJKiBpbml0LmM6IERvbid0IGluY2x1ZGUgZnVuY3Rpb24uaC4KCSogbGV4LmMgKGJlZ2luX2RlZmluaXRpb25fb2ZfaW5jbGFzc19pbmxpbmUpOiBDYWxsCglwdXNoX2Z1bmN0aW9uX2NvbnRleHRfdG8sIG5vdCBwdXNoX2NwX2Z1bmN0aW9uX2NvbnRleHQuCgkocHJvY2Vzc19uZXh0X2lubGluZSk6ICBDYWxsIHBvcF9mdW5jdGlvbl9jb250ZXh0X2Zyb20sIG5vdAoJcG9wX2NwX2Z1bmN0aW9uX2NvbnRleHQuCgkqIG1ldGhvZC5jOiBEb24ndCBpbmNsdWRlIGZ1bmN0aW9uLmguCgkoc3ludGhlc2l6ZV9tZXRob2QpOiBDYWxsIHB1c2hfZnVuY3Rpb25fY29udGV4dF90bywgbm90CglwdXNoX2NwX2Z1bmN0aW9uX2NvbnRleHQuICBDYWxsIHBvcF9mdW5jdGlvbl9jb250ZXh0X2Zyb20sIG5vdAoJcG9wX2NwX2Z1bmN0aW9uX2NvbnRleHQuCgkqIHR5cGVjay5jOiBEb24ndCBpbmNsdWRlIGZ1bmN0aW9uLmguCgoJKiBkZWNsLmMgKGV4cGFuZF9zdGF0aWNfaW5pdCk6IFR3ZWFrIGhhbmRsaW5nIG9mIHN0YXRpYwoJaW5pdGlhbGl6YXRpb25zIGZvciBvYmplY3RzIHdpdGhvdXQgY29uc3RydWN0b3JzLgoKMTk5OS0wOS0wMyAgTmF0aGFuIFNpZHdlbGwgIDxuYXRoYW5AYWNtLm9yZz4KCgkqIHR5cGVjay5jIChidWlsZF9pbmRpcmVjdF9yZWYpOiBSZWplY3QgZGVyZWZlcmVuY2Ugb2YgcG9pbnRlciB0bwoJdm9pZC4KCjE5OTktMDktMDIgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjcC10cmVlLmggKGNwX2Z1bmN0aW9uKTogTW92ZSBoZXJlLCBmcm9tIGRlY2wuYy4KCShjcF9mdW5jdGlvbl9jaGFpbik6IERlY2xhcmUuCgkoZHRvcl9sYWJlbCk6IE5ldyBtYWNybywgaW5zdGVhZCBvZiB2YXJpYWJsZS4KCShjdG9yX2xhYmVsKTogTGlrZXdpc2UuCgkoY3VycmVudF9iYXNlX2luaXRfbGlzdCk6IExpa2V3aXNlLgoJKGN1cnJlbnRfbWVtYmVyX2luaXRfbGlzdCk6IExpa2V3aXNlLgoJKGJhc2VfaW5pdF9leHByKTogTGlrZXdpc2UuCgkoY3VycmVudF9jbGFzc19wdHIpOiBMaWtld2lzZS4KCShjdXJyZW50X2NsYXNzX3JlZik6IExpa2V3aXNlLgoJKGxhc3RfdHJlZSk6IExpa2V3aXNlLgoJKGxhc3RfZXhwcl90eXBlKTogTGlrZXdpc2UuCgkoY3VycmVudF9mdW5jdGlvbl9yZXR1cm5zX3ZhbHVlKTogTGlrZXdpc2UuCgkoY3VycmVudF9mdW5jdGlvbl9yZXR1cm5zX251bGwpOiBMaWtld2lzZS4KCShjdXJyZW50X2Z1bmN0aW9uX2p1c3RfYXNzaWduZWRfdGhpcyk6IExpa2V3aXNlLgoJKGN1cnJlbnRfZnVuY3Rpb25fcGFybXNfc3RvcmVkKTogTGlrZXdpc2UuCgkodGVtcF9uYW1lX2NvdW50ZXIpOiBMaWtld2lzZS4KCShzdGF0aWNfbGFiZWxubyk6IExpa2V3aXNlLgoJKGV4cGFuZGluZ19wKTogTGlrZXdpc2UuCgkoc3RtdHNfYXJlX2Z1bGxfZXhwcnNfcCk6IExpa2V3aXNlLgoJKGluX2Z1bmN0aW9uX3RyeV9oYW5kbGVyKTogTGlrZXdpc2UuCgkobGFuZ190eXBlKTogUmVtb3ZlIG5lc3RlZCB0eXBlX2ZsYWdzLiAgQWxsIHVzZXMgY2hhbmdlZC4KCSogY2FsbC5jIChjdG9yX2xhYmVsKTogUmVtb3ZlLgoJKGR0b3JfbGFiZWwpOiBMaWtld2lzZS4KCSogY2xhc3MuYyAoY3VycmVudF9jbGFzc19wdHIpOiBSZW1vdmUuCgkoY3VycmVudF9jbGFzc19yZWYpOiBMaWtld2lzZS4KCSogZGVjbC5jIChzdGF0aWNfbGFiZWxubyk6IFJlbW92ZS4KCShkdG9yX2xhYmVsKTogTGlrZXdpc2UuCgkobGFzdF9kdG9yX2luc24pOiBOZXcgbWFjcm8sIGluc3RlYWQgb2YgdmFyaWFibGUuCgkobGFzdF9wYXJtX2NsZWFudXBfaW5zbik6IExpa2V3aXNlLgoJKG9yaWdpbmFsX3Jlc3VsdF9ydHgpOiBMaWtld2lzZS4KCShpbl9mdW5jdGlvbl90cnlfaGFuZGxlcik6IFJlbW92ZS4KCShuYW1lZF9sYWJlbF91c2VzKTogTmV3IG1hY3JvLCBpbnN0ZWFkIG9mIHZhcmlhYmxlLgoJKG5hbWVkX2xhYmVscyk6IExpa2V3aXNlLgoJKGN1cnJlbnRfZnVuY3Rpb25fcmV0dXJuc192YWx1ZSk6IFJlbW92ZS4KCShjdXJyZW50X2Z1bmN0aW9uX3JldHVybnNfbnVsbCk6IExpa2V3aXNlLgoJKGN1cnJlbnRfZnVuY3Rpb25fYXNzaWduc190aGlzKTogTmV3IG1hY3JvLCBpbnN0ZWFkIG9mIHZhcmlhYmxlLgoJKGN1cnJlbnRfZnVuY3Rpb25fanVzdF9hc3NpZ25lZF90aGlzKTogTGlrZXdpc2UuCgkoY3VycmVudF9iaW5kaW5nX2xldmVsKTogTGlrZXdpc2UuCgkoaW5pdF9kZWNsX3Byb2Nlc3NpbmcpOiBDYWxsIHB1c2hfY3BfZnVuY3Rpb25fY29udGV4dC4KCShjcF9mdW5jdGlvbik6IE1vdmUgdG8gY3AtdHJlZS5oCgkoY3BfZnVuY3Rpb25fY2hhaW4pOiBNYWtlIGl0IGdsb2JhbC4KCSh0ZW1wX25hbWVfY291bnRlcik6IFJlbW92ZS4KCShwdXNoX2NwX2Z1bmN0aW9uX2NvbnRleHQpOiBTaW1wbGlmeS4KCShwb3BfY3BfZnVuY3Rpb25fY29udGV4dCk6IExpa2V3aXNlLgoJKiBkZWNsMi5jICh0ZW1wX25hbWVfY291bnRlcik6IFJlbW92ZS4KCSogaW5pdF9jIChjdXJyZW50X2Jhc2VfaW5pdF9saXN0KTogTGlrZXdpc2UuCgkoY3VycmVudF9tZW1iZXJfaW5pdF9saXN0KTogTGlrZXdpc2UuCgkoYmFzZV9pbml0X2V4cHIpOiBMaWtld2lzZS4KCSogbWV0aG9kLmMgKHN0YXRpY19sYWJlbG5vKTogTGlrZXdpc2UuCgkqIHB0LmMgKGxhc3RfdHJlZSk6IExpa2V3aXNlLgoJKiBzZW1hbnRpY3MuYyAoZXhwYW5kaW5nX3ApOiBMaWtld2lzZS4KCShzdG10c19hcmVfZnVsbF9leHByc19wKTogTGlrZXdpc2UuCgkobGFzdF9leHByX3R5cGUpOiBMaWtld2lzZS4KCSogdHlwZWNrLmMgKGR0b3JfbGFiZWwpOiBMaWtld2lzZS4KCShjdG9yX2xhYmVsKTogTGlrZXdpc2UuCgoxOTk5LTA5LTAxICBBbGV4IFNhbXVlbCAgPHNhbXVlbEBjb2Rlc291cmNlcnkuY29tPgoKCSogZGVjbDIuYyAoYXJnX2Fzc29jX3RlbXBsYXRlX2FyZyk6IE5ldyBwcm90b3R5cGUuICBOZXcgZnVuY3Rpb24uCgkoYXJnX2Fzc29jX2NsYXNzKTogVXNlIGFyZ19hc3NvY190ZW1wbGF0ZV9hcmcgZm9yIHRlbXBsYXRlCglhcmd1bWVudHMuCgkoYXJnX2Fzc29jKTogTGlrZXdpc2UuCgkqIHB0LmMgKG1hbmdsZV9jbGFzc19uYW1lX2Zvcl90ZW1wbGF0ZSk6IEFsbG93IG1lbWJlciB0ZW1wbGF0ZQoJdGVtcGxhdGUgYXJndW1lbnRzLgoKMTk5OS0wOS0wMiAgTmF0aGFuIFNpZHdlbGwgIDxuYXRoYW5AYWNtLm9yZz4KCgkqIGNhbGwuYyAoYnVpbGRfY29uZGl0aW9uYWxfZXhwcik6IFdhcm4gb24gZW51bSBtaXNtYXRjaGVzLgoJKGNvbnZlcnRfYXJnX3RvX2VsbGlwc2lzKTogTW92ZSBub24tcG9kIGNoZWNrIHRvIGFmdGVyCgljb252ZXJzaW9uLgoKMTk5OS0wOS0wMSAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogZ3h4LmdwZXJmIChoYXNoLCBpc19yZXNlcnZlZF93b3JkKTogQWRkIHByb3RvdHlwZXMuCgoJKiBpbml0LmMgKGJ1aWxkX3ZlY19pbml0KTogSW5pdGlhbGl6ZSB2YXJpYWJsZSBgdHJ5X2Jsb2NrJy4KCgkqIGxleC5jIChpbml0X3BhcnNlKTogQ2FsbCBtZW1jcHksIG5vdCBiY29weSwgdG8gYXZvaWQgY2FzdHMuCglMaWtld2lzZSBmb3IgYnplcm8vbWVtc2V0LgoJKHRva2VuX2dldGNoLCB0b2tlbl9wdXRfYmFjayk6IEFkZCBzdGF0aWMgcHJvdG90eXBlcy4gIFJlbW92ZQoJYGlubGluZScgZnJvbSB0aGUgZGVmaW5pdGlvbnMuCgkocmV0cm9maXRfbGFuZ19kZWNsKTogQ2FsbCBtZW1zZXQsIG5vdCBiemVybywgdG8gYXZvaWQgY2FzdHMuCgoxOTk5LTA5LTAxICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogY3AtdHJlZS5oIChsYW5nX3R5cGUpOiBNb3ZlIGFsaWduIGludG8gdHlwZV9mbGFncy4KCShDTEFTU1RZUEVfQUxJR04pOiBBZGp1c3QgYWNjb3JkaW5nbHkuCgkqIGNhbGwuYyAoZGlyZWN0X3JlZmVyZW5jZV9iaW5kaW5nKTogUmVtb3ZlIG1pc2xlYWRpbmcgY29tbWVudC4KCjE5OTktMDgtMzAgIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIHBhcnNlLnkgKGxhbmd1YWdlX3N0cmluZyk6IENvbnN0aWZ5LgoKMTk5OS0wOC0zMCAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogcmVwby5jIChnZXRwd2QpOiBEb24ndCBwcm90b3R5cGUuCgkqIHhyZWYuYyAoZ2V0cHdkKTogTGlrZXdpc2UKCjE5OTktMDgtMzAgIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIE1ha2VmaWxlLmluIChMSUJTLCBMSUJERVBTKTogTGluayB3aXRoICYgZGVwZW5kIG9uIGxpYmliZXJ0eS5hLgoJUmVtb3ZlIGhhY2tzIGZvciBzdHVmZiB3aGljaCBub3cgY29tZXMgZnJvbSBsaWJpYmVydHkuCgoxOTk5LTA4LTMwICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBjcC10cmVlLmggKElTX0FHR1JfVFlQRV8yKTogRml4IHR5cG8uCgoxOTk5LTA4LTMwICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogY3AtdHJlZS5oIChiZWdpbl9pbml0X3N0bXRzKTogRGVjbGFyZS4KCShmaW5pc2hfaW5pdF9zdG10cyk6IExpa2V3aXNlLgoJKiBjdnQuYyAoYnVpbGRfdXBfcmVmZXJlbmNlKTogV3JhcCB0aGUgZGVjbGFyYXRpb24gb2YgYSB0ZW1wb3JhcnkKCWluIGEgc3RhdGVtZW50LWV4cHJlc3Npb24gc28gdGhhdCB3ZSB3aWxsIHNlZSBpdCB3aGVuIGV4cGFuZGluZwoJdHJlZSBzdHJ1Y3R1cmUgbGF0ZXIuCgkqIGluaXQuYyAoYmVnaW5faW5pdF9zdG10cyk6IERvbid0IG1ha2UgaXQgc3RhdGljLgoJKGZpbmlzaF9pbml0X3N0bXRzKTogTGlrZXdpc2UuCgoJKiBjcC10cmVlLmggKHN0YXJ0X2hhbmRsZXJfcGFybXMpOiBOZXcgZnVuY3Rpb24uCgkoZXhwYW5kX3N0YXJ0X2NhdGNoX2Jsb2NrKTogVGFrZSBvbmx5IG9uZSBwYXJhbWV0ZXIuCgkoc3RhcnRfaGFuZGxlcl9wYXJtcyk6IE5ldyBmdW5jdGlvbi4KCSogZGVjbC5jIChzdGFydF9oYW5kbGVyX3Bhcm1zKTogRGVmaW5lIGl0LgoJKiBleGNlcHQuYyAocHJvY2Vzc19zdGFydF9jYXRjaF9ibG9jayk6IFRha2Ugb25seSBvbmUgcGFyYW1ldGVyLgoJRG9uJ3QgY2FsbCBncm9rZGVjbGFyYXRvciBoZXJlLgoJKGV4cGFuZF9zdGFydF9jYXRjaF9ibG9jayk6IERvbid0IGNhbGwgZ3Jva2RlY2xhcmF0b3IgaGVyZSwKCWVpdGhlci4KCSogcGFyc2UueSAoaGFuZGxlcl9hcmdzKTogQWRqdXN0IGNhbGwgdG8KCWV4cGFuZF9zdGFydF9jYXRjaF9ibG9jay4gIFVzZSBzdGFydF9oYW5kbGVyX3Bhcm1zLgoJKiBwdC5jIChwdXNoX3RlbXBsYXRlX2RlY2xfcmVhbCk6IE1ha2UgcGVybWFuZW50IGxpc3RzIGhhdmUKCXBlcm1hbmVudCBlbGVtZW50cy4KCSh0c3Vic3RfZXhwcik6IEFkanVzdCBjYWxscyB0byBleHBhbmRfc3RhcnRfY2F0Y2hfYmxvY2sKCWFwcHJvcHJpYXRlbHkuCgkqIHNlbWFudGljcy5jIChleHBhbmRfc3RtdCk6IExpa2V3aXNlLgoKMTk5OS0wOC0yOSAgQWxleCBTYW11ZWwgIDxzYW11ZWxAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIHB0LmMgKHB1c2hfdGVtcGxhdGVfZGVjbF9yZWFsKTogVXNlIHRlbXBsYXRlIGRlY2xhcmF0aW9uIGZyb20KCWNsYXNzIHR5cGUgaWYgaXQgZXhpc3RzLgoKMTk5OS0wOC0yOSAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGNwLXRyZWUuaCAoVFlQRV9ORUVEU19DT05TVFJVQ1RJTkcpOiBSZW1vdmUgI2lmIDAnZCBkZWZpbml0aW9uLgoJKG1heWJlX2luamVjdF9mb3Jfc2NvcGVfdmFyKTogRGVjbGFyZSBpdC4KCShpbml0aWFsaXplX2xvY2FsX3Zhcik6IExpa2V3aXNlLgoJKiBkZWNsLmMgKG1heWJlX2luamVjdF9mb3Jfc2NvcGVfdmFyKTogTWFrZSBpdCBnbG9iYWwuCgkoaW5pdGlhbGl6ZV9sb2NhbF92YXIpOiBMaWtld2lzZS4gIE1vdmUgY2xlYW51cCBoYW5kbGluZyBoZXJlLAoJZnJvbSBjcF9maW5pc2hfZGVjbC4KCShtYWtlX3J0bF9mb3Jfbm9ubG9jYWxfZGVjbCk6IFVzZQoJcHVzaF9vYnN0YWNrc19ub2NoYW5nZS9wb3Bfb2JzdGFja3MsIHJhdGhlciB0aGFuCgllbmRfdGVtcG9yYXJ5X2FsbG9jYXRpb24vcmVzdW1lX3RlbXBvcmFyeV9hbGxvY2F0aW9uLgoJKGNwX2ZpbmlzaF9kZWNsKTogVHJ5IHRvIGNvbXBsZXRlIHRoZSB0eXBlIG9mIGEgdmFyaWFibGUgd2hlbiBpdAoJaXMgZGVjbGFyZWQuICBNb3ZlIGNsZWFudXAtaGFuZGxpbmcgdG8gaW5pdGlhbGl6ZV9sb2NhbF92YXIuCgkoZXhwYW5kX3N0YXRpY19pbml0KTogVXNlIHRyZWUtYnVpbGRpbmcgY29kZSwgcmF0aGVyIHRoYW4KCVJUTC1idWlsZGluZyBjb2RlLgoJKiBkZWNsMi5jIChnZXRfdGVtcF9uYW1lKTogQXNzZXJ0IG5vbi1pbml0aWFsaXplZG5lc3Mgb2YKCXRlbXBvcmFyaWVzLgoJKiBpbml0LmMgKGNyZWF0ZV90ZW1wb3JhcnlfdmFyKTogTW92ZSBSVEwtYXNzaWduaW5nIGNvZGUgdG8gLi4uCgkoZ2V0X3RlbXBfcmVndmFyKTogSGVyZS4KCSogcHQuYyAodHNidXN0X2V4cHIpOiBGaXggaW5kZW50YXRpb24uICBDYWxsIGNwX2ZpbmlzaF9kZWNsIGhlcmUuCgkqIHNlbWFudGljcy5jIChleHBhbmRfc3RtdCk6IERvbid0IGNhbGwgY3BfZmluaXNoX2RlY2wgaGVyZS4gIEp1c3QKCWNhbGwgaW5pdGlhbGl6ZV9sb2NhbF92YXIgdG8gZ2VuZXJhdGUgaW5pdGlhbGl6YXRpb24gY29kZS4KCjE5OTktMDgtMjkgIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIGNwLXRyZWUuaCAoZm5kZWNsX2FzX3N0cmluZywgdHlwZV9hc19zdHJpbmcsCgl0eXBlX2FzX3N0cmluZ19yZWFsLCBhcmdzX2FzX3N0cmluZywgZGVjbF9hc19zdHJpbmcsCglleHByX2FzX3N0cmluZywgY29kZV9hc19zdHJpbmcsIGxhbmd1YWdlX2FzX3N0cmluZywKCXBhcm1fYXNfc3RyaW5nLCBvcF9hc19zdHJpbmcsIGFzc29wX2FzX3N0cmluZywgY3ZfYXNfc3RyaW5nLAoJbGFuZ19kZWNsX25hbWUsIGNwX2ZpbGVfb2YsIGxhbmdfcHJpbnRhYmxlX25hbWUpOiBDb25zdGlmeSBhIGNoYXIqLgoKCSogZXJyZm4uYyAoY3BfcHJpbnRlcik6IExpa2V3aXNlLgoKCSogZXJyb3IuYyAoY3BfcHJpbnRlciwgZm5kZWNsX2FzX3N0cmluZywgdHlwZV9hc19zdHJpbmdfcmVhbCwKCXR5cGVfYXNfc3RyaW5nLCBleHByX2FzX3N0cmluZywgZGVjbF9hc19zdHJpbmcsIGxhbmdfZGVjbF9uYW1lLAoJY3BfZmlsZV9vZiwgY29kZV9hc19zdHJpbmcsIGxhbmd1YWdlX2FzX3N0cmluZywgcGFybV9hc19zdHJpbmcsCglvcF9hc19zdHJpbmcsIGFzc29wX2FzX3N0cmluZywgYXJnc19hc19zdHJpbmcsIGN2X2FzX3N0cmluZyk6CglMaWtld2lzZS4KCgkqIHRyZWUuYyAobGFuZ19wcmludGFibGVfbmFtZSk6IExpa2V3aXNlLgoKMTk5OS0wOC0yOCAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAY3lnbnVzLmNvbT4KCgkqIGRlY2wyLmMgKGFyZ19hc3NvY19jbGFzcyk6IEJhaWwgaWYgdGhlIGNsYXNzIGlzIGEgYnVpbHRpbiB0eXBlLgoKMTk5OS0wOC0yOCAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGNwLXRyZWUuaCAoc3RyaXBfYXJyYXlfdHlwZXMpOiBOZXcgZnVuY3Rpb24uCgkqIGRlY2wuYyAobWF5YmVfZGVkdWNlX3NpemVfZnJvbV9hcnJheV9pbml0KTogTmV3IGZ1bmN0aW9uLCBzcGxpdAoJb3V0IGZyb20gY3BfZmluaXNoX2RlY2wuCgkobGF5b3V0X3Zhcl9kZWNsKTogTGlrZXdpc2UuCgkobWF5YmVfY29tbW9uaXplX3Zhcik6IExpa2V3aXNlLgoJKG1heWJlX2luamVjdF9mb3Jfc2NvcGVfdmFyKTogTGlrZXdpc2UuCgkoaW5pdGlhbGl6ZV9sb2NhbF92YXIpOiBMaWtld2lzZS4KCShidWlsZF9jbGVhbnVwX29uX3NhZmVfb2JzdGFjayk6IExpa2V3aXNlLgoJKGNoZWNrX2luaXRpYWxpemVyKTogTGlrZXdpc2UuCgkobWFrZV9ydGxfZm9yX25vbmxvY2FsX2RlY2wpOiBMaWtld2lzZS4KCShjcF9maW5pc2hfZGVjbCk6IFVzZSB0aGVtLgoJKiB0eXBlY2suYyAoc3RyaXBfYXJyYXlfdHlwZXMpOiBOZXcgZnVuY3Rpb24uCgoJKiBjcC10cmVlLmRlZiAoTEFCRUxfU1RNVCk6IE5ldyB0cmVlIG5vZGUuCgkqIGNwLXRyZWUuaCAoTEFCRUxfU1RNVF9MQUJFTCk6IE5ldyBtYWNyby4KCShzaGFkb3dfbGFiZWwpOiBSZW1vdmUuCgkoZGVjbGFyZV9sb2NhbF9sYWJlbCk6IE5ldyBmdW5jdGlvbi4KCShmaW5pc2hfbGFiZWxfZGVjbCk6IExpa2V3aXNlLgoJKiBkZWNsLmMgKG1ha2VfbGFiZWxfZGVjbCk6IE5ldyBmdW5jdGlvbiwgc3BsaXQgb3V0IGZyb20KCWxvb2t1cF9sYWJlbC4KCShzaGFkb3dlZF9sYWJlbHMpOiBSZW1vdmUuCgkoYmluZGluZ19sZXZlbCk6IEFkZCBzaGFkb3dlZF9sYWJlbHMuCgkoY2xlYXJfYmluZGluZ19sZXZlbCk6IFJlbW92ZS4KCShwdXNoX2JpbmRpbmdfbGV2ZWwpOiBKdXN0IGJ6ZXJvIHRoZSBuZXcgYmluZGluZyBsZXZlbC4KCShwdXNobGV2ZWwpOiBGaXggaW5kZW50YXRpb24uCgkocG9wX2xhYmVsKTogTmV3IGZ1bmN0aW9uLgoJKHBvcF9sYWJlbHMpOiBMaWtld2lzZSwgc3BsaXQgb3V0IGZyb20gcG9wbGV2ZWwuCgkocG9wbGV2ZWwpOiBQb3AgbG9jYWwgbGFiZWxzLiAgVXNlIHBvcF9sYWJlbHMuCgkobWF5YmVfcHVzaF90b190b3BfbGV2ZWwpOiBEb24ndCBjbGVhciBzaGFkb3dlZF9sYWJlbHMuCgkobG9va3VwX2xhYmVsKTogVXNlIG1ha2VfbGFiZWxfZGVjbC4KCShzaGFkb3dfbGFiZWwpOiBSZW1vdmUuCgkoZGVjbGFyZV9sb2NhbF9sYWJlbCk6IE5ldyBmdW5jdGlvbi4KCShkZWZpbmVfbGFiZWwpOiBTaW1wbGlmeS4KCShzdGFydF9mdW5jdGlvbik6IERvbid0IGNsZWFyIHNoYWRvd2VkX2xhYmVscy4KCShjcF9mdW5jdGlvbik6IFJlbW92ZSBzaGFkb3dlZF9sYWJlbHMuCgkocHVzaF9jcF9mdW5jdGlvbl9jb250ZXh0KTogRG9uJ3Qgc2F2ZSBzaGFkb3dlZF9sYWJlbHMuCgkocG9wX2NwX2Z1bmN0aW9uX2NvbnRleHQpOiBEb24ndCByZXN0b3JlIGl0LgoJKiBkdW1wLmMgKGRlcXVldWVfYW5kX2R1bXApOiBIYW5kbGUgTEFCRUxfU1RNVC4KCSogcGFyc2UueSAobGFiZWxfZGVjbCk6IFVzZSBmaW5pc2hfbGFiZWxfZGVjbC4KCSogcHQuYyAodHN1YnN0X2V4cHIpOiBIYW5kbGUgTEFCRUxfU1RNVHMsIGFuZCBsb2NhbCBsYWJlbAoJZGVjbGFyYXRpb25zLgoJKiBzZW1hbnRpY3MuYyAoZmluaXNoX2xhYmVsX3N0bXQpOiBBZGQgYSBMQUJFTF9TVE1UIHdoZW4KCWJ1aWxkaW5nX3N0bXRfdHJlZS4KCShmaW5pc2hfbGFiZWxfZGVjbCk6IE5ldyBmdW5jdGlvbi4KCShleHBhbmRfc3RtdCk6IEhhbmRsZSBMQUJFTF9TVE1UcyBhbmQgbG9jYWwgbGFiZWwgZGVjbGFyYXRpb25zLgoKMTk5OS0wOC0yNiAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGRlY2wuYyAobG9va3VwX2xhYmVsKTogQnVpbGQgbGFiZWxzIG9uIHRoZSBwZXJtYW5lbnQgb2JzdGFjawoJd2hlbiBidWlsZGluZyBzdGF0ZW1lbnQgdHJlZXMuICBEb24ndCBidWlsZCBSVEwgZm9yIGxhYmVscyB3aGVuCglidWlsZGluZyBzdGF0ZW1lbnQgdHJlZXMuCgkqIHNlbWFudGljcy5jIChmaW5pc2hfZ290b19zdG10KTogVXNlIExBQkVMX0RFQ0xzIGV2ZW4gd2hlbgoJYnVpbGRpbmcgc3RhdGVtZW50IHRyZWVzLgoJKGZpbmlzaF9sYWJlbF9zdG10KTogTGlrZXdpc2UuCgkoZXhwYW5kX3N0bXQpOiBBZGp1c3QgYWNjb3JkaW5nbHkuCgkqIHB0LmMgKHRzdWJzdF9leHByKTsgTGlrZXdpc2UuCgkoZG9fZGVjbF9pbnN0YW50aWF0aW9uKTogUm9idXN0aWZ5LgoKCSogY3AtdHJlZS5oIChBR0dSX0lOSVRfVklBX0NUT1JfUCk6IE5ldyBtYWNyby4KCSogdHJlZS5jIChidWlsZF9jcGx1c19uZXcpOiBTZXQgaXQuCgkqIGV4cHIuYyAoY3BsdXNfZXhwYW5kX2V4cHIpOiBVc2UgaXQuCgkqIGR1bXAuYyAoZGVxdWVfYW5kX2R1bXApOiBIYW5kbGUgQUdHUl9JTklUX0VYUFIuCgoJKiBkZWNsLmMgKHN0b3JlX3Bhcm1fZGVjbHMpOiBSZXNldCBpbW1lZGlhdGVfc2l6ZV9leHBhbmQuCgkoZmluaXNoX2Z1bmN0aW9uKTogTGlrZXdpc2UuCgoJKiB0cmVlLmMgKGNwbHVzX3Vuc2F2ZV9leHByX25vdyk6IERvbid0IHJldHVybiBhIHZhbHVlLgoKCSogc2VtYW50aWNzLmMgKGRvX3BvcGxldmVsKTogQWx3YXlzIGluaXRpYWxpemUgdGhlIHJldHVybiB2YWx1ZS4KCjE5OTktMDgtMjYgIEdhdmluIFJvbWlnLUtvY2ggIDxnYXZpbkBjeWdudXMuY29tPgoKCSogY3AtdHJlZS5oIChjcGx1c191bnNhdmVfZXhwcl9ub3cpIDogQ29ycmVjdCByZXR1cm4gdHlwZS4KCSogdHJlZS5oIChjcGx1c191bnNhdmVfZXhwcl9ub3cpIDogU2FtZS4KCjE5OTktMDgtMjUgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBkZWNsLmMgKGdyb2tkZWNsYXJhdG9yKTogQW1lbmQgY29tbWVudC4KCSogZXhjZXB0LmMgKGV4cGFuZF9zdGFydF9jYXRjaF9ibG9jayk6IENhbGwgcHVzaF90ZW1wbGF0ZV9kZWNsIGZvcgoJY2F0Y2gtYmxvY2sgcGFyYW1ldGVycy4KCSogbWV0aG9kLmMgKHN5bnRoZXNpemVfbWV0aG9kKTogQnVpbGQgYW4gZW1wdHkgY29tcG91bmQgc3RhdGVtZW50Cglmb3IgdGhlIGJvZHkgb2YgYSBjb25zdHJ1Y3Rvci4KCjE5OTktMDgtMjUgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIHRyZWUuYyAoY3BfYnVpbGRfcXVhbGlmaWVkX3R5cGVfcmVhbCk6IElmIHdlJ3JlIGFza2luZyBmb3IgdGhlCglzYW1lIHF1YWxzIHdlIGFscmVhZHkgaGF2ZSwganVzdCByZXR1cm4uCgoxOTk5LTA4LTI1ICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogY3AtdHJlZS5kZWYgKFNVQk9CSkVDVCk6IE5ldyB0cmVlIG5vZGUuCgkqIGNwLXRyZWUuaCAoQ0xFQU5VUF9QKTogTmV3IG1hY3JvLgoJKFNVQk9CSkVDVF9DTEVBTlVQKTogTGlrZXdpc2UuCgkoa2VlcF9uZXh0X2xldmVsKTogQWRkIHBhcmFtZXRlci4KCShnZXRfdGVtcF9yZWd2YXIpOiBEb24ndCBkZWNsYXJlLgoJKGVtaXRfYmFzZV9pbml0KTogUmVtb3ZlIHBhcmFtZXRlci4KCShleHBhbmRfYWdncl9pbml0KTogUmVuYW1lIHRvIGJ1aWxkX2FnZ3JfaW5pdC4KCShleHBhbmRfdmVjX2luaXQpOiBSZW5hbWUgdG8gYnVpbGRfdmVjX2luaXQuCgkoZG9fcHVzaGxldmVsKTogUmVtb3ZlLgoJKGRvX3BvcGxldmVsKTogTGlrZXdpc2UuCgkoZmluaXNoX2NsZWFudXApOiBOZXcgZnVuY3Rpb24uCgkoZmluaXNoX3N1Ym9iamVjdCk6IExpa2V3aXNlLgoJKHN0bXRzX2FyZV9mdWxsX2V4cHJzX3ApOiBOZXcgdmFyaWFibGUuCgkqIGRlY2wuYyAoa2VlcF9uZXh0X2xldmVsKTogQWRkIHBhcmFtZXRlci4KCShjcF9maW5pc2hfZGVjbCk6IFVzZSBidWlsZF9hZ2dyX2luaXQsIG5vdAoJZXhwYW5kX2FnZ3JfaW5pdC4gIFVzZSBmaW5pc2hfZXhwcl9zdG10IHRvIGV4cGFuZCB0aGUgY29kZS4KCShleHBhbmRfc3RhdGljX2luaXQpOiBVc2UgdHJlZS1nZW5lcmF0aW5nLCBub3QgUlRMLWdlbmVyYXRpbmcsCglmdW5jdGlvbnMgdG8gaGFuZGxlIHRoZSBpbml0aWFsaXphdGlvbi4KCShzdGFydF9mdW5jdGlvbik6IFJlbW92ZSBkZWFkIGNvZGUuICBBbHdheXMgaGF2ZSBhIG1vbWVudGFyeQoJb2JzdGFjayBpbnNpZGUgdGhlIGZ1bmN0aW9uLCBldmVuIGJlZm9yZSBoaXR0aW5nIHRoZSBmaXJzdCBjdXJseQoJYnJhY2UuCgkoY3BsdXNfZXhwYW5kX2V4cHJfc3RtdCk6IE1vdmUgY2FsbHMgdG8KCWV4cGFuZF97c3RhcnQsZW5kfV90YXJnZXRfdGVtcHMgaW50byBzZW1hbnRpY3MuYy4KCShjcF9mdW5jdGlvbik6IEFkZCBzdG10c19hcmVfZnVsbF9leHByc19wLgoJKHB1c2hfY3BfZnVuY3Rpb25fY29udGV4dCk6IFNhdmUgaXQuCgkocG9wX2NwX2Z1bmN0aW9uX2NvbnRleHQpOiBSZXN0b3JlIGl0LgoJKiBkZWNsMi5jIChnZXRfdGVtcF9yZWd2YXIpOiBNb3ZlIHRvIGluaXQuYy4KCShkb19zdGF0aWNfaW5pdGlhbGl6YXRpb24pOiBVc2UgYnVpbGRfe2FnZ3IsdmVjfV9pbml0LgoJKGRvX3N0YXRpY19kZXN0cnVjdGlvbik6IEZpeCB0eXBvIGluIGNvbW1lbnQuCgkqIGR1bXAuYyAoZGVxdWV1ZV9hbmRfZHVtcCk6IEhhbmRsZSBJTklUX0VYUFIuCgkqIGV4Y2VwdC5jIChleHBhbmRfdGhyb3cpOiBVc2UgY3JlYXRlX3RlbXBvcmFyeV92YXIuCgkqIGV4cHIuYyAoY3BsdXNfZXhwYW5kX2V4cHIpOiBVc2UgYnVpbGRfe2FnZ3IsdmVjfV9pbml0LgoJKiBpbml0LmMgKGV4cGFuZF92ZWNfaW5pdF90cnlfYmxvY2spOiBSZW1vdmUuCgkoZXhwYW5kX3ZlY19pbml0X2NhdGNoX2NsYXVzZSk6IExpa2V3aXNlLgoJKGdldF90ZW1wX3JlZ3Zhcik6IE5ldyBmdW5jdGlvbi4KCShiZWdpbl9pbml0X3N0bXRzKTogTGlrZXdpc2UuCgkoZmluaXNoX2luaXRfc3RtdHMpOiBMaWtld2lzZS4KCShwZXJmb3JtX21lbWJlcl9pbml0KTogVXNlIGJ1aWxkX3thZ2dyLHZlY31faW5pdC4gIEJ1aWxkIHVwIHRyZWUKCXN0cnVjdHVyZSBoZXJlLgoJKGVtaXRfYmFzZV9pbml0KTogTGlrZXdpc2UuICBSZW1vdmUgdW51c2VkIHBhcmFtZXRlci4KCShleHBhbmRfdmlydHVhbF9pbml0KTogTGlrZXdpc2UuCgkoZXhwYW5kX2NsZWFudXBfZm9yX2Jhc2UpOiBVc2UgZmluaXNoX3N1Ym9iamVjdC4KCShleHBhbmRfYWdncl92YmFzZV9pbml0XzEpOiBTaW1wbGlmeS4KCShjb25zdHJ1Y3RfdmlydHVhbF9iYXNlcyk6IFVzZSB0cmVlLWdlbmVyYXRpbmcgZnVuY3Rpb25zIHRvIGJ1aWxkCgl1cCBpbml0aWFsaXphdGlvbi4KCShleHBhbmRfYWdncl9pbml0KTogTGlrZXdpc2UuICBSZW5hbWUgdG8gYnVpbGRfYWdncl9pbml0LgoJKGV4cGFuZF9kZWZhdWx0X2luaXQpOiBMaWtld2lzZS4KCShleHBhbmRfYWdncl9pbml0XzEpOiBMaWtld2lzZS4KCShleHBhbmRfdmVjX2luaXQpOiBSZW5hbWUgdG8gYnVpbGRfdmVjX2luaXQuCgkqIG1ldGhvZC5jIChkb19idWlsZF9jb3B5X2NvbnN0cnVjdG9yKTogVXNlIHRyZWUtZ2VuZXJhdGluZwoJZnVuY3Rpb25zLiAgRG9uJ3QgY2FsbCBjbGVhcl9sYXN0X2V4cHIuCgkoZG9fYnVpbGRfYXNzaWduX3JlZik6IExpa2V3aXNlLgoJKHN5bnRoZXNpemVfbWV0aG9kKTogQ2FsbCBjbGVhcl9sYXN0X2V4cHIgaGVyZS4KCSogcGFyc2UueSAoYmFzZV9pbml0KTogRG9uJ3QgY2FsbCBjbGVhcl9sYXN0X2V4cHIgaGVyZS4KCShub2RlY2xzKTogTGlrZXdpc2UuCgkqIHB0LmMgKHRzdWJzdF9leHByKTogSGFuZGxlIGEgVFJZX0JMT0NLIHdpdGggQ0xFQU5VUF9QIHNldC4KCSogc2VtYW50aWNzLmMgKGRvX3B1c2hsZXZlbCk6IE1vdmUgdG8gaGVyZS4KCShkb19wb3BsZXZlbCk6IExpa2V3aXNlLgoJKHN0bXRzX2FyZV9mdWxsX2V4cHJzX3ApOiBOZXcgdmFyaWFibGUuCgkoZmluaXNoX2V4cHJfc3RtdCk6IEhhbmRsZSBsb2dpYyBmb3IgdGVtb3ByYXJ5IGNsZWFudXAgaGVyZS4KCShmaW5pc2hfZm9yX3N0bXQpOiBVc2UgZmluaXNoX2V4cHJfc3RtdC4KCShmaW5pc2hfY2xlYW51cCk6IE5ldyBmdW5jdGlvbi4KCShmaW5pc2hfZnVuY3Rpb25fdHJ5X2Jsb2NrKTogRml4IGluZGVudGF0aW9uLgoJKGZpbmlzaF9zdWJvYmplY3QpOiBOZXcgZnVuY3Rpb24uCgkoc2V0dXBfdnRibF9wdHIpOiBDYWxsIGtlZXBfbmV4dF9sZXZlbCBoZXJlLgoJKGZpbmlzaF9zdG10X2V4cHIpOiBIYW5kbGUgYSBibG9jayB3aXRoIG5vIHNjb3BlIGluc2lkZSB0aGUKCXN0YXRlbWVudC1leHByZXNzaW9uLgoJKGV4cGFuZF9zdG10KTogSGFuZGxlIGEgVFJZX0JMT0NLIHdpdGggQ0xFQU5VUF9QIHNldC4gIEhhbmRsZQoJU1VCT0JKRUNULgoJKiB0cmVlLmMgKHNlYXJjaF90cmVlKTogSGFuZGxlIElOSVRfRVhQUi4KCShtYXBjYXIpOiBMaWtld2lzZS4KCSogdHlwZWNrLmMgKGJ1aWxkX21vZGlmeV9leHByKTogRG9uJ3QgYnVpbGQgYW4gUlRMX0VYUFIuCgkqIHR5cGVjazIuYyAoc3RvcmVfaW5pdF92YWx1ZSk6IENoYW5nZSBleHBhbmRfYWdncl9pbml0IHRvCglidWlsZF9hZ2dyX2luaXQgaW4gY29tbWVudC4KCjE5OTktMDgtMjUgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBkdW1wLmMgKGRlcXVldWVfYW5kX2R1bXApOiBEdW1wIFRBUkdFVF9FWFBScy4KCjE5OTktMDgtMjUgIE5hdGhhbiBTaWR3ZWxsICA8bmF0aGFuQGFjbS5vcmc+CgoJKiBkZWNsMi5jIChoYW5kbGVfY2xhc3NfaGVhZCk6IEJlIGdyYWNlZnVsIGFib3V0IGFkZGl0aW9uYWwKCXNjb3BlIHF1YWxpZmllcnMuIEFkanVzdCBjb21tZW50cyB0byByZWZsZWN0IHJlYWxpdHkuCgoxOTk5LTA4LTI0ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBjYWxsLmMgKGJ1aWxkX2NvbmRpdGlvbmFsX2V4cHIpOiBGaXggdHlwby4KCSogdHlwZWNrLmMgKGJ1aWxkX21vZGlmeV9leHByLCBDT05EX0VYUFIpOiBNYWtlIHN1cmUgd2UndmUgZ290IGFuCglsdmFsdWUgYmVmb3JlIHRyeWluZyB0byBtZXNzIHdpdGggdGhlIHNpZGVzLgoKCSogZXJyb3IuYyAoZHVtcF9leHByLCBDT05WRVJUX0VYUFIpOiBIYW5kbGUgKHZvaWQpIHByb3Blcmx5LgoKTW9uIEF1ZyAyMyAyMjoxNzoyMCAxOTk5ICBNdW1pdCBLaGFuICA8a2hhbkB4cmF5bGl0aC53aXNjLmVkdT4KCgkqIGcrK3NwZWMuYyAobGFuZ19zcGVjaWZpY19kcml2ZXIpOiBBZGQgcm9vbSBmb3IgTlVMTCBpbiBhcmdsaXN0LgoKMTk5OS0wOC0yMyAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogZXhjZXB0aW9uLmNjIChfX2NwbHVzX3R5cGVfbWF0Y2hlcik6IENhbGwgX190aHJvd190eXBlX21hdGNoX3J0dGlfMi4KCVJldHVybiBhcmJpdHJhcnkgcG9pbnRlciBvciBOVUxMLgoJKGNoZWNrX2VoX3NwZWMpOiBDYWxsIF9fdGhyb3dfdHlwZV9tYXRjaF9ydHRpXzIuCgkqIHRpbmZvLmggKCo6OmRjYXN0KTogUmV0dXJuIGludC4gIEFkZCB2YWxwIHBhcm0uCgkqIHRpbmZvLmNjICgqOjpkY2FzdCk6IExpa2V3aXNlLiAgQWRqdXN0IHRvIGFsbG93IGZvciBudWxsIHBvaW50ZXJzLgoJKiB0aW5mbzIuY2MgKF9fdGhyb3dfdHlwZV9tYXRjaF9ydHRpXzIpOiBMaWtld2lzZS4KCShfX3Rocm93X3R5cGVfbWF0Y2hfcnR0aSk6IE5vdyBqdXN0IGEgd3JhcHBlci4KCgkqIGV4Y2VwdC5jOiBMb3NlIENhdGNoTWF0Y2gsIEZpcnN0RXhjZXB0aW9uTWF0Y2gsIGFuZCBVbndpbmQuCgkoaW5pdF9leGNlcHRpb25fcHJvY2Vzc2luZyk6IERvbid0IGluaXRpYWxpemUgdGhlbS4KCjE5OTktMDgtMjMgIFBhdWwgQnVyY2hhcmQgPGJ1cmNoYXJkQHBvYm94LmNvbT4KCgkqIGRlY2wuYyAoY2hlY2tfZGVmYXVsdF9hcmd1bWVudCk6IEZpeCB0eXBvLgoKMTk5OS0wOC0yMiAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGNwLXRyZWUuZGVmIChTVE1UX0VYUFIpOiBGaXggdHlwbyBpbiBub2RlIG5hbWUuCgoJKiBkdW1wLmMgKGR1bXBfbmV4dF9zdG10KTogTmV3IGZ1bmN0aW9uLgoJKGRlcXVldWVfYW5kX2R1bXApOiBVc2UgaXQuCgoJKiBwdC5jICh0c3Vic3RfY29weSk6IE1ha2Ugc3VyZSB0byBpbml0aWFsaXplIHJldHVybiB2YWx1ZSBmb3IgYQoJU1RNVF9FWFBSLCBldmVuIHdoZW4gcHJvY2Vzc2luZ190ZW1wbGF0ZV9kZWNsLgoJKiBzZW1hbnRpY3MuYyAoZmluaXNoX3N0bXRfZXhwcik6IEEgc3RhdGVtZW50LWV4cHJlc3Npb24gd2hvc2UKCWxhc3Qgc3RhdGVtZW50IGlzIG5vdCBhbiBleHByZXNzaW9uLXN0YXRlbWVudCBoYXMgdHlwZSBgdm9pZCcuCgoxOTk5LTA4LTIwICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogc2VtYW50aWNzLmMgKGZpbmlzaF9zdG10X2V4cHIpOiBGaXggdHlwbyBpbiBjb21tZW50LgoJKiB0cmVlLmMgKHNlYXJjaF90cmVlKTogSGFuZGxlIEVYSVRfRVhQUiwgTE9PUF9FWFBSLgoJKG1hcGNhcik6IExpa2V3aXNlLgoJKiBpbml0LmMgKGJ1aWxkX3ZlY19kZWxldGVfMSk6IE1ha2UgdGhlIGNoaWxkcmVuIG9mIGEgcGVybWFuZW50CglCSU5EX0VYUFIgcGVybWFuZW50LgoJKiBwdC5jIChyZWdpc3Rlcl9zcGVjaWFsaXphdGlvbik6IERvbid0IHJlZ2lzdGVyIGEgc3BlY2lhbGl6YXRpb24KCW1vcmUgdGhhbiBvbmNlLgoKMTk5OS0wOC0xOCAgQW5kcmV3IEhhbGV5ICA8YXBoQGN5Z251cy5jb20+CgoJKiBtZXRob2QuYyAocHJvY2Vzc19vdmVybG9hZF9pdGVtKTogQ2FsbCBidWlsZF9tYW5nbGVkX0M5eF9uYW1lICgpCglmb3IgYWxsIGludGVnZXIgcGFyYW1ldGVyIHR5cGVzIGxhcmdlciB0aGFuIGxvbmcgbG9uZy4KCjE5OTktMDgtMTkgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBwdC5jIChyZWRlY2xhcmVfY2xhc3NfdGVtcGxhdGUpOiBNZXJnZSBkZWZhdWx0IHRlbXBsYXRlCglhcmd1bWVudHMgaW4gYm90aCBkaXJlY3Rpb25zLgoKCSogdHlwZWNrLmMgKGNvbW1vbl90eXBlKTogVW5kbyAxOTk5LTA4LTE4IGNoYW5nZS4gIFJlbW92ZQoJY29tcGlsZXJfZXJyb3IgbWVzc2FnZS4KCjE5OTktMDgtMTkgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIGNwLXRyZWUuaDogRGVjbGFyZSBmbGFnX3VzZV9yZXBvc2l0b3J5LgoJKiBwdC5jIChkb19kZWNsX2luc3RhbnRpYXRpb24pOiBEb24ndCBjb21wbGFpbiBhYm91dCBkdXBsaWNhdGUKCWluc3RhbnRpYXRpb24gd2l0aCAtZnJlcG8uCgkoZG9fdHlwZV9pbnN0YW50aWF0aW9uKTogTGlrZXdpc2UuCgoJKiBwdC5jIChwdXNoX3RlbXBsYXRlX2RlY2xfcmVhbCk6IENvbXBsYWluIGFib3V0IGV2ZXJ5dGhpbmcKCXRoYXQgaXNuJ3QgYSB2YWxpZCB0ZW1wbGF0ZS4KCgkqIGRlY2wyLmMgKGltcG9ydF9leHBvcnRfZGVjbCk6IElmIC1mbmV3LWFiaSwgY2xhc3MgbGlua2FnZSBkb2Vzbid0CglhZmZlY3QgaW5saW5lcy4KCjE5OTktMDgtMTkgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjcC10cmVlLmRlZiAoUFNFVURPX0RUT1JfRVhQUik6IE5ldyB0cmVlIGNvZGUuCgkqIGRlY2wyLmMgKGJ1aWxkX2V4cHJfZnJvbV90cmVlKTogSGFuZGxlIGl0LgoJKiBlcnJvci5jIChkdW1wX2V4cHIpOiBMaWtld2lzZS4KCSogcHQuYyAoZm9yX2VhY2hfdGVtcGxhdGVfcGFybSk6IExpa2V3aXNlLgoJKHRzdWJzdF9jb3B5KTogTGlrZXdpc2UuCgkqIHRyZWUuYyAoc2VhcmNoX3RyZWUpOiBMaWtld2lzZS4KCSogc2VtYW50aWNzLmMgKGZpbmlzaF9wc2V1ZG9fZGVzdHJ1Y3Rvcl9jYWxsKTogQ3JlYXRlIGl0LgoKMTk5OS0wOC0xOCAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIHNlYXJjaC5jIChzZXR1cF9jbGFzc19iaW5kaW5ncyk6IFJvYnVzdGlmeS4KCSogdHlwZWNrLmMgKGNvbW1vbl90eXBlKTogVXNlIHNhbWVfdHlwZV9wLCBub3QgcG9pbnRlciBlcXVhbGl0eSwKCXRvIGNvbXBhcmUgdHlwZXMuCgoJKiBjcC10cmVlLmggKGJ1aWxkX2xhbmdfZmllbGRfZGVjbCk6IFJlbW92ZS4KCSogY2xhc3MuYyAoYnVpbGRfdnRhYmxlKTogUmVwbGFjZSBjYWxscyB0byBidWlsZF9sYW5nX2ZpZWxkX2RlY2wKCXdpdGggYnVpbGRfbGFuZ19kZWNsLgoJKHByZXBhcmVfZnJlc2hfdnRhYmxlKTogTGlrZXdpc2UuCgkoZmluaXNoX3N0cnVjdF8xKTogTGlrZXdpc2UuCgkoaW5pdF9jbGFzc19wcm9jZXNzaW5nKTogTGlrZXdpc2UuCgkqIGRlY2wuYyAocHVzaF91c2luZ19kZWNsKTogTGlrZXdpc2UuCgkoaW5pdF9kZWNsX3Byb2Nlc3NpbmcpOiBMaWtld2lzZS4KCShncm9rdmFyZGVjbCk6IExpa2V3aXNlLgoJKGJ1aWxkX3B0cm1lbWZ1bmNfdHlwZSk6IExpa2V3aXNlLgoJKGdyb2tkZWNsYXJhdG9yKTogTGlrZXdpc2UuCgkoYnVpbGRfZW51bWVyYXRvcik6IExpa2V3aXNlLgoJKiBkZWNsMi5jIChncm9rX3hfY29tcG9uZW50cyk6IExpa2V3aXNlLgoJKGRvX2NsYXNzX3VzaW5nX2RlY2wpOiBMaWtld2lzZS4KCSogZXhjZXB0LmMgKGNhbGxfZWhfaW5mbyk6IExpa2V3aXNlLgoJKiBpbml0LmMgKGluaXRfaW5pdF9wcm9jZXNzaW5nKTogTGlrZXdpc2UuCgkqIHJ0dGkuYyAoZXhwYW5kX2NsYXNzX2RlY2wpOiBMaWtld2lzZS4KCSogdHJlZS5jIChidWlsZF9iYXNlX2ZpZWxkcyk6IExpa2V3aXNlLgoJKGJ1aWxkX3ZiYXNlX3BvaW50ZXJfZmllbGRzKTogTGlrZXdpc2UuCgkqIGxleC5jIChidWlsZF9sYW5nX2RlY2wpOiBCdWlsZCBkZWNsYXJhdGlvbnMgb24gdGhlIHBlcm1hbmVudAoJb2JzdGFjayBpZiB3ZSdyZSBidWlsZGluZyBzdGF0bWVlbnQgdHJlZXMuCgkocmV0cm9maXRfbGFuZ19kZWNsKTogSGFuZGxlIGJvdGggdGhlIGZ1bGwgbGFuZ19kZWNsIGFuZCBhbHNvIHRoZQoJc21hbGxlciBsYW5nX2RlY2xfZmxhZ3MgaGVyZS4KCShidWlsZF9sYW5nX2ZpZWxkX2RlY2wpOiBSZW1vdmUuCgkqIHB0LmMgKHB1c2hfdGVtcGxhdGVfZGVjbF9yZWFsKTogSXNzdWUgZXJyb3JzIGZvciB2YXJpYWJsZQoJZGVjbGFyYXRpb25zIHRoYXQgYXJlIG5vdCBzdGF0aWMgbWVtYmVycy4KCjE5OTktMDgtMTggIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgoJKiB0cmVlLmMgKHNlYXJjaF90cmVlKTogSGFuZGxlIFRSVVRIX3tBTkQsT1IsWE9SfV9FWFBSIHRvby4KCShtYXBjYXIpOiBMaWtld2lzZS4KCjE5OTktMDgtMTcgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjcC10cmVlLmggKGJhY2tfZW5kX2hvb2spOiBOZXcgdmFyaWFibGUuCgkqIGRlY2wyLmMgKGJhY2tfZW5kX2hvb2spOiBEZWZpbmUgaXQuCgkoZmluaXNoX2ZpbGUpOiBJZiBpdCdzIG5vbi1OVUxMLCBjYWxsIGl0LgoKCSogZGVjbC5jIChhZGRfZGVjbF90b19sZXZlbCk6IE5ldyBmdW5jdGlvbi4KCShwdXNoX2xvY2FsX2JpbmRpbmcpOiBVc2UgaXQuCgkoZmluZF9iaW5kaW5nKTogRml4IHR5cG8gaW4gY29tbWVudC4KCShwdXNoZGVjbCk6IFVzZSBhZGRfZGVjbF90b19sZXZlbC4gIFB1dCB0ZW1wbGF0ZXMgb24gdGhlCgljb3JyZXNwb25kaW5nIG5hbWVzcGFjZS1zY29wZSBiaW5kaW5nIGxldmVscy4KCSogZHVtcC5jIChkZXF1ZXVlX2FuZF9kdW1wKTogUHJpbnQgdGhlIHNwZWNpYWxpemF0aW9ucyBvZiBhCgl0ZW1wbGF0ZS4KCSogcHQuYyAocHVzaF90ZW1wbGF0ZV9kZWNsX3JlYWwpOiBEb24ndCBwdXNoIGEgdGVtcGxhdGUgbXVsdGlwbGUKCXRpbWVzLgoKMTk5OS0wOC0xNyAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGNwLXRyZWUuaCAoQ0FMTF9ERUNMQVJBVE9SX1BBUk1TKTogTmV3IG1hY3JvLgoJKENBTExfREVDTEFSQVRPUl9RVUFMUyk6IExpa2V3aXNlLgoJKENBTExfREVDQVJBVE9SX0VYQ0VQVElPTl9TUEVDKTogTGlrZXdpc2UuCgkqIGRlY2wuYyAoZ3Jva2RlY2xhcmF0b3IpOiBBZGp1c3QgdG8gdXNlIHRoZW0uCgkqIGRlY2wyLmMgKGdyb2tmaWVsZCk6IExpa2V3aXNlLgoJKHJlcGFyc2VfYWJzZGNsX2FzX2Nhc3RzKTogTGlrZXdpc2UuCgkqIGxleC5jIChtYWtlX2NhbGxfZGVjbGFyYXRvcik6IExpa2V3aXNlLgoJKHNldF9xdWFsc19hbmRfc3BlYyk6IExpa2V3aXNlLgoJKiBwdC5jICh0c3Vic3QpOiBMaWtld2lzZS4KCSogdHJlZS5jIChtYXBjYXIpOiBSZW1vdmUgc3BlY2lhbCBoYWNrIHRvIGhhbmRsZSB0aGlyZCBvcGVyYW5kIG9mCglhIENBTExfRVhQUi4KCjE5OTktMDgtMTYgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjcC10cmVlLmggKENBTl9IQVZFX0ZVTExfTEFOR19ERUNMX1ApOiBOZXcgbWFjcm8uCgkqIGNsYXNzLmMgKGJ1aWxkX3Z0YWJsZSk6IFVzZSBidWlsZF9sYW5nX2ZpZWxkX2RlY2wgdG8gYnVpbGQgdGhlCglWQVJfREVDTHMgZm9yIHZ0YWJsZXMuCgkocHJlcGFyZV9mcmVzaF92dGFibGUpOiBMaWtld2lzZS4KCSogZGVjbC5jIChkdXBsaWNhdGVfZGVjbHMpOiBPbmx5IGNvcHkgREVDTF9TQVZFRF9UUkVFIGlmCglDQU5fSEFWRV9GVUxMX0xBTkdfREVDTF9QLgoJKHB1c2hfdXNpbmdfZGVjbCk6IFVzZSBidWlsZF9sYW5nX2RlY2wgdG8gYnVpbGQgVVNJTkdfREVDTHMuCgkoZ3Jva2RlY2xhcmF0b3IpOiBVc2UgYnVpbGRfbGFuZ19kZWNsIHRvIGJ1aWxkIFRZUEVfREVDTHMuCgkqIGxleC5jIChyZXRyb2ZpdF9sYW5nX2RlY2wpOiBDaGVjayBDQU5fSEFWRV9GVUxMX0xBTkdfREVDTF9QLgoJKGJ1aWxkX2xhbmdfZmllbGRfZGVjbCk6IExpa2V3aXNlLgoJKGNvcHlfbGFuZ19kZWNsKTogVXNlIENBTl9IQVZFX0ZVTExMQU5HX0RFQ0xfUCB0byBkZWNpZGUgaG93IG11Y2gKCXRvIGNvcHkuCgoJKiBjcC10cmVlLmRlZiAoU1RNVF9FWFBSKTogTmV3IHRyZWUgbm9kZS4KCSogY3AtdHJlZS5oIChTVE1UX0VYUFJfU1RNVCk6IE5ldyBtYWNyby4KCShzdG9yZV9yZXR1cm5faW5pdCk6IENoYW5nZSBwcm90b3R5cGUuCgkoZmluaXNoX25hbWVkX3JldHVybl92YWx1ZSk6IE5ldyBmdW5jdGlvbi4KCShleHBhbmRfc3RtdCk6IExpa2V3aXNlLgoJKGV4cGFuZF9ib2R5KTogTGlrZXdpc2UuCgkoYmVnaW5fc3RtdF90cmVlKTogTGlrZXdpc2UuCgkoZmluaXNoX3N0bXRfdHJlZSk6IExpa2V3aXNlLgoJKGV4cGFuZGluZ19wKTogTmV3IHZhcmlhYmxlLgoJKGxhc3RfZXhwcl90eXBlKTogTGlrZXdpc2UuCgkoYnVpbGRpbmdfc3RtdF90cmVlKTogTmV3IG1hY3JvLgoJKiBkZWNsLmMgKHN0YXJ0X2Z1bmN0aW9uKTogVXNlIGJ1aWxkaW5nX3N0bXRfdHJlZSwgbm90Cglwcm9jZXNzaW5nX3RlbXBsYXRlX2RlY2wsIHdoZXJlIGFwcHJvcHJpYXRlLgoJKHN0b3JlX3Bhcm1fZGVjbHMpOiBMaWtld2lzZS4KCShzdG9yZV9yZXR1cm5faW5pdCk6IE1vdmUgbW9zdCBvZiB0aGUgYm9keSB0byBzZW1hbnRpY3MuYy4KCShmaW5pc2hfZnVuY3Rpb24pOiBVc2UgYnVpbGRpbmdfc3RtdF90cmVlLgoJKGZpbmlzaF9zdG10KTogQ2xlYXIgbGFzdF9leHByX3R5cGUgaGVyZS4KCShjcF9mdW5jdGlvbik6IEFkZCBleHBhbmRpbmdfcCwgbGFzdF90cmVlLCBsYXN0X2V4cHJfdHlwZS4KCShwdXNoX2NwX2Z1bmN0aW9uX2NvbnRleHQpOiBTYXZlIHRoZW0uCgkocG9wX2NwX2Z1bmN0aW9uX2NvbnRleHQpOiBSZXN0b3JlIHRoZW0uCgkqIGRlY2wyLmMgKHNldHVwX3Z0YmxfcHRyKTogTW92ZSB0byBzZW1hbnRpY3MuYy4KCSogZXJyb3IuYyAoZHVtcF9leHByKTogSGFuZGxlIFNUTVRfRVhQUi4KCSogZXhjZXB0LmMgKGV4cGFuZF9zdGFydF9jYXRjaF9ibG9jayk6IFVzZSBidWlsZGluZ19zdG10X3RyZWUuCglVc2UgYWRkX2RlY2xfc3RtdC4KCSogZXhwci5jIChjcGx1c19leHBhbmRfZXhwcik6IEhhbmRsZSBTVE1UX0VYUFIuCgkoZG9fY2FzZSk6IE1vdmUgYWRkX3RyZWUgY2FsbCB0byBzZW1hbnRpY3MuYy4KCSogcGFyc2UueSAocmV0dXJuX2luaXQpOiBVc2UgZmluaXNoX25hbWVkX3JldHVybl92YWx1ZS4KCShmb3IuaW5pdC5zdGF0ZW1lbnQpOiBVc2UgZmluaXNoX2V4cHJfc3RtdC4KCSogcGFyc2UuYzogUmVnZW5lcmF0ZWQuCgkqIHB0LmMgKGRvX3B1c2hsZXZlbCk6IE1vdmUgdG8gc2VtYW50aWNzLmMuCgkoZG9fcG9wbGV2ZWwpOiBMaWtld2lzZS4KCSh0c3Vic3RfY29weSk6IEhhbmRsZSBTVE1UX0VYUFIgaW5zdGVhZCBvZiBCSU5EX0VYUFIuCgkodHN1YnN0X2V4cHIpOiBEb24ndCBleHBhbmQgYWxsIHRoZSB3YXkgdG8gUlRMIGhlcmUuICBIYW5kbGUKCVJFVFVSTl9JTklUIGFuZCBDVE9SX0lOSVRJQUxJWkVSLgoJKGluc3RhbnRpYXRlX2RlY2wpOiBDYWxsIGV4cGFuZF9ib2R5IGFmdGVyIHRzdWJzdCdpbmcgaW50bwoJREVDTF9TQVZFRF9UUkVFLgoJKiBzZW1hbnRpY3MuYyAoZXhwYW5kX3N0bXRzKTogTmV3IGZ1bmN0aW9uLgoJKGV4cGFuZGluZ19wKTogTmV3IHZhcmlhYmxlLgoJKGxhc3RfZXhwcl90eXBlKTogTGlrZXdpc2UuCgkoZmluaXNoX2V4cHJfc3RtdCk6IFVzZSBidWlsZGluZ19zdG10X3RyZWUuCgkoYmVnaW5faWZfc3RtdCk6IExpa2V3aXNlLgoJKGZpbmlzaF9pZl9zdG10X2NvbmQpOiBMaWtld2lzZS4KCShmaW5pc2hfdGhlbl9jbGF1c2UpOiBMaWtld2lzZS4KCShiZWdpbl9lbHNlX2NsYXVzZSk6IExpa2V3aXNlLgoJKGZpbmlzaF9lbHNlX2NsYXVzZSk6IExpa2V3aXNlLgoJKGJlZ2luX3doaWxlX3N0bXQpOiBMaWtld2lzZS4KCShmaW5pc2hfd2hpbGVfc3RtdF9jb25kKTogTGlrZXdpc2UuCgkoZmluaXNoX3doaWxlX3N0bXQpOiBMaWtld2lzZS4KCShmaW5pc2hfZG9fYm9keSk6IExpa2V3aXNlLgoJKGZpbmlzaF9kb19zdG10KTogTGlrZXdpc2UuCgkoZmluaXNoX3JldHVybl9zdG10KTogTGlrZXdpc2UuCgkoYmVnaW5fZm9yX3N0bXQpOiBMaWtld2lzZS4KCShmbmlzaF9mb3JfaW5pdF9zdG10KTogTGlrZXdpc2UuCgkoZmluaXNoX2Zvcl9jb25kKTogTGlrZXdpc2UuCgkoZmluaXNoX2Zvcl9leHByKTogTGlrZXdpc2UuCgkoZmluaXNoX2Zvcl9zdG10KTogTGlrZXdpc2UuCgkoZmluaXNoX2JyZWFrX3N0bXQpOiBMaWtld2lzZS4KCShmaW5pc2hfY29udGludWVfc3RtdCk6IExpa2V3aXNlLgoJKGZpbmlzaF9zd2l0Y2hfY29uZCk6IExpa2V3aXNlLgoJKGZpbmlzaF9zd2l0Y2hfc3RtdCk6IExpa2V3aXNlLgoJKGZpbmlzaF9jYXNlX2xhYmVsKTogQ2FsbCBhZGRfdHJlZSBoZXJlIGlmIG5lY2Vzc2FyeS4KCShmaW5pc2hfZ290b19zdGF0ZW1lbnQpOiBVc2UgYnVpbGRpbmdfc3RtdF90cmVlLgoJKGJlZ2luX3RyeV9ibG9jayk6IExpa2V3aXNlLgoJKGJlZ2luX2Z1bmN0aW9uX3RyeV9ibG9jayk6IExpa2V3aXNlLgoJKGZpbmlzaF90cnlfYmxvY2spOiBMaWtld2lzZS4KCShmaW5pc2hfZnVuY3Rpb25fdHJ5X2Jsb2NrKTogTGlrZXdpc2UuCgkoZmluaXNoX2hhbmRsZXJfc2VxdWVuY2UpOiBMaWtld2lzZS4KCShmaW5pc2hfZnVuY3Rpb25faGFuZGxlcl9zZXF1ZW5jZSk6IExpa2V3aXNlLgoJKGJlZ2luX2hhbmRsZXIpOiBMaWtld2lzZS4KCShmaW5pc2hfaGFuZGxlcl9wYXJtcyk6IExpa2V3aXNlLgoJKGZpbmlzaF9oYW5kbGVyKTogTGlrZXdpc2UuCgkoYmVnaW5fY29tcG91bmRfc3RtdCk6IExpa2V3aXNlLgoJKGZpbmlzaF9jb21wb3VuZF9zdG10KTogTGlrZXdpc2UuCgkoZmluaXNoX2FzbV9zdG10KTogTGlrZXdpc2UuCgkoZmluaXNoX2xhYmVsX3N0bXQpOiBMaWtld2lzZS4KCShmaW5pc2hfbmFtZWRfcmV0dXJuX3ZhbHVlKTogTmV3IGZ1bmN0aW9uLgoJKHNldHVwX3Z0YmxfcHRyKTogTW92ZWQgaGVyZSBmcm9tIGRlY2wyLmMuCgkoZG9fcHVzaGxldmVsKTogTW92ZWQgaGVyZSBmcm9tIHB0LmMuCgkoZG9fcG9wbGV2ZWwpOiBMaWtld2lzZS4KCShiZWdpbl9zdG10X2V4cHIpOiBVc2UgYnVpbGRpbmdfc3RtdF90cmVlLgoJKGZpbmlzaF9zdG10X2V4cHIpOiBMaWtld2lzZS4gIEJ1aWxkIGEgU1RNVF9FWFBSLCBub3QgYSBCSU5EX0VYUFIsCgl3aGVuIGJ1aWxkaW5nX3N0bXRfdHJlZS4KCShiZWdpbl9zdG10X3RyZWUpOiBOZXcgZnVuY3Rpb24uCgkoZmluaXNoX3N0bXRfdHJlZSk6IExpa2V3aXNlLgoJKGV4cGFuZF9zdG10KTogTGlrZXdpc2UuCgkoZXhwYW5kX2JvZHkpOiBMaWtld2lzZS4KCSogdHJlZS5jIChidWlsZF9jcGx1c19tZXRob2RfdHlwZSk6IE1ha2Ugc3VyZSB0aGUgYXJndW1lbnQgdHlwZXMKCWVuZCB1cCBvbiB0aGUgc2FtZSBvYnN0YWNrIGFzIHRoZSBNRVRIT0RfVFlQRS4KCShzZWFyY2hfdHJlZSk6IEhhbmRsZSBDT01QT1VORF9FWFBSLCBNT0RJRllfRVhQUiwKCVRIUk9XX0VYUFIsIFNUTVRfRVhQUi4KCShtYXBjYXIpOiBCcmVhayBvdXQgY29tbW9uIGNhc2VzLiAgSGFuZGxlIENPTVBPVU5EX0VYUFIsCglNT0RJRllfRVhQUiwgVEhST1dfRVhQUiwgU1RNVF9FWFBSLCBSVExfRVhQUi4gIEFib3J0LCByYXRoZXIgdGhhbgoJc29ycnksIGlmIGFuIHVuc3VwcG9ydGVkIG5vZGUgaXMgZW5jb3VudGVyZWQuCgkqIHR5cGVjay5jIChyZXF1aXJlX2NvbXBsZXRlX3R5cGVfaW5fdm9pZCk6IEhhbmRsZSBCSU5EX0VYUFIuCgkoY19leHBhbmRfcmV0dXJuKTogRG9uJ3QgY2FsbCBhZGRfdHJlZSBoZXJlLgoKMTk5OS0wOC0xNSAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIHB0LmMgKGNoZWNrX2RlZmF1bHRfdG1wbF9hcmdzKTogRG9uJ3QgY2hlY2sgaW4gbG9jYWwgc2NvcGVzLgoJKHRzdWJzdF9kZWNsKTogTWFrZSBzdXJlIHRoZSBkZWNsYXJhdGlvbiBpcyBvbiBhIHNhdmVhYmxlCglvYnN0YWNrLiAgQ2xlYXIgREVDTF9ERUFEX0ZPUl9MT0NBTCB3aGVuIG1ha2luZyBhIGNvcHkgb2YgYSBsb2NhbAoJdmFyaWFibGUuCgkodHN1YnN0X2V4cHIpOiBBZGp1c3Qgbm93IHRoYXQgREVDTF9TVE1UcyByZWFsbHkgY29udGFpbiBERUNMcy4KCjE5OTktMDgtMTQgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCglTcGVlZCB1cCBLb2VuaWcgbG9va3VwLgoJKiBkZWNsLmMgKHVucXVhbGlmaWVkX25hbWVzcGFjZV9sb29rdXApOiBOb25zdGF0aWMuICBBZGQgc3BhY2VwIHBhcm0KCXRvIHJldHVybiBuYW1lc3BhY2VzIHdlJ3ZlIGxvb2tlZCBhdC4KCSogZGVjbDIuYyAobG9va3VwX3VzaW5nX25hbWVzcGFjZSk6IExpa2V3aXNlLgoJKGFkZF9mdW5jdGlvbik6IERvbid0IGNhbGwgb3ZsX21lbWJlci4KCShsb29rdXBfYXJnX2RlcGVuZGVudCk6IEluaXRpYWxpemUgay5uYW1lc3BhY2VzIHRvIHRoZSBsaXN0IG9mCgluYW1lc3BhY2VzIHNlZW4gaW4gdW5xdWFsaWZpZWQgbG9va3VwLgoJKiBjYWxsLmMgKGVxdWFsX2Z1bmN0aW9ucyk6IE1vdmUgaGVyZSBmcm9tIHRyZWUuYy4KCShqb3VzdCk6IFVzZSBpdCB0byBoYW5kbGUgZHVwbGljYXRlIGNhbmRpZGF0ZXMuCgkqIHRyZWUuYyAob3ZsX21lbWJlcik6IFVzZSA9PS4KCjE5OTktMDgtMTMgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjcC10cmVlLmRlZiAoREVDTF9TVE1UKTogTWFrZSBpdCBzbWFsbGVyLgoJKiBjcC10cmVlLmggKGxhbmdfZGVjbF9mbGFncyk6IE1vdmUgc2F2ZWRfdHJlZSB0byAuLi4KCShsYW5nX2RlY2wpOiAuLi4gaGVyZS4gIEFkZCBuZXh0LgoJKERFQ0xfU0FWRURfVFJFRSk6IEFkanVzdCBhY2NvcmRpbmdseS4KCShERUNMX0lNUExJQ0lUX1RZUEVERUZfUCk6IE5ldyBtYWNyby4KCShTRVRfREVDTF9JTVBMSUNJVF9UWVBFREVGX1ApOiBMaWtld2lzZS4KCShERUNMX1NUTVRfREVDTCk6IExpa2V3aXNlLgoJKGNyZWF0ZV9pbXBsaWNpdF90eXBlZGVmKTogTmV3IGZ1bmN0aW9uLgoJKG1heWJlX3B1c2hfZGVjbCk6IExpa2V3aXNlLgoJKHRzdWJzdF9kZWZhdWx0X2FyZ3VtZW50KTogTmV3IGZ1bmN0aW9uLgoJKGF0X2Z1bmN0aW9uX3Njb3BlX3ApOiBMaWtld2lzZS4KCShhZGRfZGVjbF9zdG10KTogTGlrZXdpc2UuCgkocHVzaF9wZXJtYW5lbnRfb2JzdGFjayk6IExpa2V3aXNlLgoJKiBjYWxsLmMgKGNvbnZlcnRfZGVmYXVsdF9hcmcpOiBVc2UgdHN1YnN0X2RlZmF1bHRfYXJndW1lbnQuCgkqIGNsYXNzLmMgKGFkZF9tZXRob2QpOiBVc2UgcHVzaF9wZXJtYW5lbnRfb2JzdGFjay4KCShidWlsZF9zZWxmX3JlZmVyZW5jZSk6IENyZWF0ZSBhIFRFTVBMQVRFX0RFQ0wgZm9yIHRoZQoJc2VsZi1yZWZlcmVuY2UsIGlmIG5lY2Vzc2FyeS4KCSogZGVjbC5jIChwc2V1ZG9fZ2xvYmFsX2xldmVsX3ApOiBPbmx5IGxvb2sgYXQgdGhlIGN1cnJlbnQgYmluZGluZwoJbGV2ZWwuCgkocHVzaF9iaW5kaW5nKTogVXNlIHB1c2hfcGVybWFuZW50X29ic3RhY2suCgkoY3JlYXRlX2ltcGxpY2l0X3R5cGVkZWYpOiBOZXcgZnVuY3Rpb24uCgkocHVzaHRhZyk6IFVzZSBpdC4KCShkdXBsaWNhdGVfZGVjbHMpOiBVc2UgcHVzaF9wZXJtYW5lbnRfb2JzdGFjay4KCShtYXliZV9wdXNoX2RlY2wpOiBOZXcgZnVuY3Rpb24uCgkoc3RhcnRfZGVjbCk6IFVzZSBpdC4gIFJlbW92ZSBkZWFkIGNvZGUuICBVc2UgYWRkX2RlY2xfc3RtdC4KCShzdGFydF9kZWNsXzEpOiBSZW1vdmUgZGVhZCBjb2RlLgoJKGNwX2ZpbmlzaF9kZWNsKTogUmVtb3ZlIERFQ0xfU1RNVCBoYW5kbGluZyBoZXJlLiAgRG9uJ3QgdXNlCglwc2V1ZG9fZ2xvYmFsX2xldmVsX3AuCgkoZ3Jva3ZhcmRlY2wpOiBDcmVhdGUgREVDTF9MQU5HX1NQRUNJRklDIGZvciBhIFZBUl9ERUNMIGluIGEKCXRlbXBsYXRlLgoJKGdyb2tkZWNsYXJhdG9yKTogTGlrZXdpc2UsIGZvciBUWVBFX0RFQ0xzLiAgRG9uJ3QgdXNlCglwc2V1ZG9fZ2xvYmFsX2xldmVsX3AuCgkqIGRlY2wyLmMgKGdyb2tmaWVsZCk6IENhbGwgcHVzaF90ZW1wbGF0ZV9kZWNsIGZvciBhIFRZUEVfREVDTCBpbgoJYSB0ZW1wbGF0ZS4KCShnZXRfc2VudHJ5KTogVXNlIHB1c2hfcGVybWFuZW50X29ic3RhY2suCgkqIGR1bXAuYyAoZGVxdWV1ZV9hbmRfZHVtcCk6IEVuYWJsZSBERUNMX1NUTVQuCgkqIGV4Y2VwdC5jIChjYWxsX2VoX2luZm8pOiBVc2UgcHVzaF9wZXJtYW5lbnRfb2JzdGFjay4KCShidWlsZF9laF90eXBlX3JlZik6IExpa2V3aXNlLgoJKGRvX3BvcF9leGNlcHRpb24pOiBMaWtld2lzZS4KCShleHBhbmRfZWhfc3BlYyk6IExpa2V3aXNlLgoJKGFsbG9jX2VoX29iamVjdCk6IExpa2V3aXNlLgoJKGV4cGFuZF90aHJvdyk6IExpa2V3aXNlLgoJKiBpbml0LmMgKGJ1aWxkX2phdmFfY2xhc3NfcmVmKTogTGlrZXdpc2UuCgkqIGxleC5jIChnZXRfdGltZV9pZGVudGlmaWVyKTogTGlrZXdpc2UuCgkoZnJlZV9sYW5nX2RlY2xfY2hhaW4pOiBDb3JyZWN0IHR5cGUuCgkocmV0cm9maXRfbGFuZ19kZWNsKTogQWRqdXN0IGFjY29yZGluZ2x5LgoJKGJ1aWxkX2xhbmdfZmllbGRfZGVjbCk6IExpa2V3aXNlLgoJKiBsZXguaCAoZnJlZV9sYW5nX2RlY2xfY2hhaW4pOiBMaWtld2lzZS4KCSogcGFyc2UueSAobGFuZ19leHRkZWYpOiBEb24ndCB1c2UgcHNldWRvX2dsb2JhbF9sZXZlbF9wLgoJKiBwYXJzZS5jOiBSZWdlbmVyYXRlZC4KCSogcHQuYyAodHN1YnN0X2RlZmF1bHRfYXJndW1lbnRzKTogTmV3IGZ1bmN0aW9uLgoJKHJldHJpZXZlX2xvY2FsX3NwZWNpYWxpemF0aW9uKTogTGlrZXdpc2UuCgkocmVnaXN0ZXJfbG9jYWxfc3BlY2lhbGl6YXRpb24pOiBMaWtld2lzZS4KCShwdXNoX3RlbXBsYXRlX2RlY2xfcmVhbCk6IFVzZSBERUNMX0lNUExJQ0lUX1RZUEVERUZfUC4gIEp1c3QgdXNlCglwc2V1ZG9fZ2xvYmFsX2xldmVsX3AgdG8gZGV0ZXJtaW5lIHdoZXRoZXIgb3Igbm90IGEgdGVtcGxhdGUgaXMKCXByaW1hcnkuCgkobG9va3VwX3RlbXBsYXRlX2NsYXNzKTogTGlrZXdpc2UuICBVc2UgY3JlYXRlX2ltcGxpY2l0X3R5cGVkZWYuCgkoaW5zdGFudGlhdGVfY2xhc3NfdGVtcGxhdGUpOiBDYWxsIHRzdWJzdF9kZWZhdWx0X2FyZ3VtZW50cyBmb3IKCW1lbWJlciBmdW5jdGlvbnMsIGlmIGFwcHJvcHJpYXRlLgoJKHRzdWJzdF9kZWZhdWx0X2FyZ3VtZW50KTogTmV3IGZ1bmN0aW9uLgoJKHRzdWJzdF9kZWNsKTogVXNlIGl0LiAgQ2hhbmdlIFRZUEVfREVDTCBoYW5kbGluZyB0byBtYXRjaCBWQVJfREVDTHMuCgkqIHNlYXJjaC5jIChhdF9mdW5jdGlvbl9zY29wZV9wKTogTmV3IGZ1bmN0aW9uLgoJKiBzZW1hbnRpY3MuYyAoZmluaXNoX2FzbV9zdG10KTogVXNlIHB1c2hfcGVybWFuZW50X29ic3RhY2suCgkoZmluaXNoX2xhYmVsX3N0bXQpOiBMaWtld2lzZS4KCShhZGRfZGVjbF9zdG10KTogTmV3IGZ1bmN0aW9uLgoJKGJlZ2luX2NsYXNzX2RlZmluaXRpb24pOiBMaWtld2lzZS4KCShmaW5pc2hfdHlwZW9mKTogTGlrZXdpc2UuCgkqIHRyZWUuYyAoY29weV90ZW1wbGF0ZV90ZW1wbGF0ZV9wYXJtKTogTGlrZXdpc2UuCgkoY29weV90b19wZXJtYW5lbnQpOiBMaWtld2lzZS4KCShwdXNoX3Blcm1hbmVudF9vYnN0YWNrKTogRGVmaW5lLgoJKG1hcmtfYWRkcmVzc2FibGUpOiBVc2UgaXQuCgkqIHR5cGVjay5jIChtYXJrX2FkZHJlc3NhYmxlKTogTGlrZXdpc2UuCgoxOTk5LTA4LTEzICBHYXZpbiBSb21pZy1Lb2NoICA8Z2F2aW5AY3lnbnVzLmNvbT4KCgkqIGNwLXRyZWUuaCAoaW5pdF9jcGx1c191bnNhdmUpOiBOZXcuCgkoY3BsdXNfdW5zYXZlX2V4cHJfbm93KTogTmV3LgoJKiBsZXguYyAoaW5pdF9wYXJzZSk6IENhbGwgaW5pdF9jcGx1c191bnNhdmUuCgkqIHRyZWUuYyAoaW5pdF9jcGx1c191bnNhdmUpOiBOZXcuCgkoY3BsdXNfdW5zYXZlX2V4cHJfbm93KTogTmV3LgoKMTk5OS0wOC0xMyAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIHB0LmMgKHRzdWJzdCk6IEJhY2sgb3V0IDE5OTktMDgtMDYgcGF0Y2guICBVc2UgZm9sZCBhbmQKCWRlY2xfY29uc3RhbnRfdmFsdWUgdG8gc2ltcGxpZnkgYXJyYXkgYm91bmRzLgoKMTk5OS0wOC0xMSAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogbGFuZy1vcHRpb25zLmg6IEFkZCAtZm1zLWV4dGVuc2lvbnMuCgkqIGNwLXRyZWUuaDogRGVjbGFyZSBmbGFnX21zX2V4dGVuc2lvbnMuCgkqIGRlY2wyLmM6IERlZmluZSBpdC4KCSogY2xhc3MuYyAoaW5zdGFudGlhdGVfdHlwZSk6IERvbid0IGNvbXBsYWluIGFib3V0IHRha2luZyB0aGUgYWRkcmVzcwoJb2YgYSBib3VuZCBtZW1iZXIgZnVuY3Rpb24gaWYgLWZtcy1leHRlbnNpb25zLgoJKiB0eXBlY2suYyAoYnVpbGRfdW5hcnlfb3ApOiBMaWtld2lzZS4KCSogZGVjbC5jIChncm9rZGVjbGFyYXRvcik6IE9yIGFib3V0IGltcGxpY2l0IGludC4KCSogaW5pdC5jIChyZXNvbHZlX29mZnNldF9yZWYpOiBPciBhYm91dCBpbXBsaWNpdCAnJicuCgoxOTk5LTA4LTExICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogY3AtdHJlZS5oIChtaW5pbWFsX3BhcnNlX21vZGUpOiBSZW1vdmUuCgkoZmluaXNoX2xhYmVsX3N0bXQpOiBOZXcgZnVuY3Rpb24uCgkqIGRlY2wuYyAoc2F2ZWRfc2NvcGUpOiBSZW1vdmUgbWluaW1hbCBwYXJzZSBtb2RlLgoJKG1heWJlX3B1c2hfdG9fdG9wX2xldmVsKTogRG9uJ3Qgc2F2ZSBpdC4KCShwb3BfZnJvbV90b3BfbGV2ZWwpOiBEb24ndCByZXN0b3JlIGl0LgoJKGRlZmluZV9sYWJlbCk6IFNwbGl0IG91dCB0ZW1wbGF0ZS1oYW5kbGluZyBjb2RlIHRvIHNlbWFudGljcy5jLgoJKHN0YXJ0X2RlY2wpOiBEb24ndCB1c2UgbWluaW1hbF9wYXJzZV9tb2RlLgoJKGNwX2ZpbmlzaF9kZWNsKTogTGlrZXdpc2UuCgkoc3RhcnRfZnVuY3Rpb24pOiBEb24ndCBpbmNyZW1lbnQgaXQuCgkoc3RvcmVfcmV0dXJuX2luaXQpOiBEb24ndCB1c2UgaXQuCgkoZmluaXNoX2Z1bmN0aW9uKTogRG9uJ3QgZGVjcmVtZW50IGl0LgoJKiBwYXJzZS55IChsYWJlbF9jb2xvbik6IFVzZSBmaW5pc2hfbGFiZWxfc3RtdCB0aHJvdWdob3V0LgoJKiBwYXJzZS5jOiBSZWdlbmVyYXRlZC4KCSogcHQuYyAobWluaW1hbF9wYXJzZV9tb2RlKTogRG9uJ3QgZGVmaW5lIGl0LgoJKHRzdWJzdF9leHByKTogVXNlIGZpbmlzaF9sYWJlbF9zdG10LgoJKiBzZW1hbnRpY3MuYyAoZmluaXNoX2xhYmVsX3N0bXQpOiBOZXcgZnVuY3Rpb24uCgoJKiBkdW1wLmMgKHF1ZXVlKTogQmUgY2FyZWZ1bCB3aGVuIGNvbXB1dGluZyBiaXRtYXNrcy4KCShkZXF1ZXVlX2FuZF9kdW1wKTogRGVzY3JpYmUgYmluZm9zIGFzIGJpbmZvcywgbm90IGFzCgl2ZWN0b3JzLgoKCSogcGFyc2UueSAocGVkYW50aWMpOiBHaXZlIGl0IGl0eXBlLiAgQWRqdXN0IHVzYWdlIGFjY29yZGluZ2x5Cgl0aHJvdWdob3V0LgoJKiBwYXJzZS5jOiBSZWdlbmVyYXRlZC4KCgkqIE1ha2UtbGFuZy5pbiAoQ1hYX1NSQ1MpOiBSZW1vdmUgc2lnLmMuCgkqIE1ha2VmaWxlLmluIChDWFhfT0JKUyk6IFJlbW92ZSBzaWcuby4KCShzaWcubyk6IFJlbW92ZS4KCSogY3AtdHJlZS5oIChDUFRJX09QQVFVRV9UWVBFKTogUmVtb3ZlLgoJKENQVElfU0lHTkFUVVJFX1RZUEUpOiBMaWtld2lzZS4KCShDUFRJX1NJR1RBQkxFX0VOVFJZX1RZUEUpOiBMaWtld2lzZS4KCShvcGFxdWVfdHlwZV9ub2RlKTogTGlrZXdpc2UuCgkoc2lnbmF0dXJlX3R5cGVfbm9kZSk6IExpa2V3aXNlLgoJKHNpZ3RhYmxlX2VudHJ5X3R5cGUpOiBMaWtld2lzZS4KCShmbGFnX2hhbmRsZV9zaWduYXR1cmVzKTogTGlrZXdpc2UuCgkobGFuZ190eXBlKTogUmVtb3ZlIGlzX3NpZ25hdHVyZSwgaXNfc2lnbmF0dXJlX3BvaW50ZXIsCglpc19zaWduYXR1cmVfcmVmZXJlbmNlLCBoYXNfb3BhcXVlX3R5cGVkZWNscywKCXNpZ3RhYmxlc19oYXNfYmVlbl9nZW5lcmF0ZWQuICBBZGp1c3QgZHVtbXkuICBSZW1vdmUgc2lnbmF0dXJlLAoJc2lnbmF0dXJlX3BvaW50ZXJfdG8sIHNpZ25hdHVyZV9yZWZlcmVuY2VfdG8uCgkoSVNfU0lHTkFUVVJFKTogUmVtb3ZlLgoJKFNFVF9TSUdOQVRVUkUpOiBSZW1vdmUuCgkoQ0xFQVJfU0lHTkFUVVJFKTogUmVtb3ZlLgoJKElTX1NJR05BVFVSRV9QT0lOVEVSKTogUmVtb3ZlLgoJKElTX1NJR05BVFVSRV9SRUZFUkVOQ0UpOiBSZW1vdmUuCgkoU0lHTkFUVVJFX0hBU19PUEFRVUVfVFlQRURFQ0xTKTogUmVtb3ZlLgoJKFNJR1RBQkxFX0hBU19CRUVOX0dFTkVSQVRFRCk6IFJlbW92ZS4KCShDTEFTU1RZUEVfU0lHTkFUVVJFKTogUmVtb3ZlLgoJKFNJR05BVFVSRV9UWVBFKTogUmVtb3ZlLgoJKFNJR05BVFVSRV9NRVRIT0RfVkVDKTogUmVtb3ZlLgoJKFNJR05BVFVSRV9QT0lOVEVSX1RPKTogUmVtb3ZlLgoJKFNJR05BVFVSRV9SRUZFUkVOQ0VfVE8pOiBSZW1vdmUuCgkobGFuZ19kZWNsX2ZsYWdzKTogUmVtb3ZlIGlzX2RlZmF1bHRfaW1wbGVtZW50YXRpb24uICBSZW5hbWUKCW1lbWZ1bmNfcG9pbnRlcl90byB0byBzYXZlZF90cmVlLgoJKElTX0RFRkFVTFRfSU1QTEVNRU5UQVRJT04pOiBSZW1vdmUuCgkoREVDTF9NRU1GVU5DX1BPSU5URVJfVE8pOiBSZW1vdmUuCgkoREVDTF9NRU1GVU5DX1BPSU5USU5HX1RPKTogUmVtb3ZlLgoJKERFQ0xfU0FWRURfVFJFRSk6IEFkanVzdCBkZWZpbml0aW9uLgoJKHRhZ190eXBlcyk6IFJlbW92ZSBzaWduYXR1cmVfdHlwZV9ub2RlLgoJKFNJR05BVFVSRV9GSUVMRF9OQU1FKTogUmVtb3ZlLgoJKFNJR05BVFVSRV9GSUVMRF9OQU1FX0ZPUk1BVCk6IExpa2V3aXNlLgoJKFNJR05BVFVSRV9PUFRSX05BTUUpOiBMaWtld2lzZS4KCShTSUdOQVRVUkVfU1BUUl9OQU1FKTogTGlrZXdpc2UuCgkoU0lHTkFUVVJFX1BPSU5URVJfTkFNRSk6IExpa2V3aXNlLgoJKFNJR05BVFVSRV9QT0lOVEVSX05BTUVfRk9STUFUKTogTGlrZXdpc2UuCgkoU0lHTkFUVVJFX1JFRkVSRU5DRV9OQU1FKTogTGlrZXdpc2UuCgkoU0lHTkFUVVJFX1JFRkVSTkVDRV9OQU1FX0ZPUk1BVCk6IExpa2V3aXNlLgoJKFNJR1RBQkxFX1BUUl9UWVBFKTogTGlrZXdpc2UuCgkoU0lHVEFCTEVfTkFNRV9GT1JNQVQpOiBMaWtld2lzZS4KCShTSUdUQUJMRV9OQU1FX0ZPUk1BVF9MT05HKTogTGlrZXdpc2UuCgkoU0lHVEFCTEVfVEFHX05BTUUpOiBMaWtld2lzZS4KCShTSUdUQUJMRV9WQl9PRkZfTkFNRSk6IExpa2V3aXNlLgoJKFNJR1RBQkxFX1ZUX09GRl9OQU1FKTogTGlrZXdpc2UuCgkoZmluaXNoX2Jhc2Vfc3BlY2lmaWVycyk6IENoYW5nZSBwcm90b3R5cGUuCgkoYnVpbGRfc2lnbmF0dXJlX3BvaW50ZXJfdHlwZSk6IFJlbW92ZS4KCShidWlsZF9zaWduYXR1cmVfcmVmZXJlbmNlX3R5cGUpOiBSZW1vdmUuCgkoYnVpbGRfc2lnbmF0dXJlX3BvaW50ZXJfY29uc3RydWN0b3IpOiBSZW1vdmUuCgkoYnVpbGRfc2lnbmF0dXJlX21ldGhvZF9jYWxsKTogUmVtb3ZlLgoJKGJ1aWxkX29wdHJfcmVmKTogTGlrZXdpc2UuCgkoYXBwZW5kX3NpZ25hdHVyZV9maWVsZHMpOiBMaWtld2lzZS4KCShzaWduYXR1cmVfZXJyb3IpOiBMaWtld2lzZS4KCSogY2FsbC5jIChidWlsZF90aGlzKTogUmVtb3ZlIHNpZ25hdHVyZSBzdXBwb3J0LgoJKGJ1aWxkX292ZXJfY2FsbCk6IExpa2V3aXNlLgoJKGJ1aWxkX25ld19tZXRob2RfY2FsbCk6IExpa2V3aXNlLgoJKiBjbGFzcy5jIChhZGRfaW1wbGljaXRseV9kZWNsYXJlZF9tZW1iZXJzKTogTGlrZXdpc2UuCgkoZmluaXNoX3N0cnVjdF8xKTogTGlrZXdpc2UuCgkoZmluaXNoX3N0cnVjdCk6IExpa2V3aXNlLgoJKiBjdnQuYyAoY3BfY29udmVydF90b19wb2ludGVyKTogTGlrZXdpc2UuCgkoY29udmVydF90b19wb2ludGVyX2ZvcmNlKTogTGlrZXdpc2UuCgkob2NwX2NvbnZlcnQpOiBMaWtld2lzZS4KCSogZGVjbC5jIChzaWd0YWJsZV9kZWNsX3ApOiBSZW1vdmUuCgkoaW5pdF9kZWNsX3Byb2Nlc3NpbmcpOiBSZW1vdmUgc3VwcG9ydCBmb3Igc2lnbmF0dXJlcy4KCShjcF9maW5pc2hfZGVjbCk6IExpa2V3aXNlLgoJKGdyb2tkZWNsYXJhdG9yKTogTGlrZXdpc2UuCgkoZ3Jva3Bhcm1zKTogTGlrZXdpc2UuCgkoeHJlZl90YWcpOiBMaWtld2lzZS4KCShzdGFydF9mdW5jdGlvbik6IExpa2V3aXNlLgoJKHN0YXJ0X21ldGhvZCk6IExpa2V3aXNlLgoJKiBkZWNsMi5jIChmaW5pc2hfc2lndGFibGVfdmFyZGVjbCk6IFJlbW92ZS4KCShmbGFnX2hhbmRsZV9zaWduYXR1cmVzKTogUmVtb3ZlLgoJKGxhbmdfZl9vcHRpb25zKTogUmVtb3ZlIGhhbmRsZS1zaWduYXR1cmVzLgoJKGdyb2tmaWVsZCk6IFJlbW92ZSBzdXBwb3J0IGZvciBzaWduYXR1cmVzLgoJKGdyb2tiaXRmaWVsZCk6IExpa2V3aXNlLgoJKGZpbmlzaF9maWxlKTogTGlrZXdpc2UuCgkocmVwYXJzZV9hYnNkY2xfYXNfY2FzdHMpOiBMaWtld2lzZS4KCSogZXJyb3IuYyAoZHVtcF90eXBlX3JlYWwpOiBMaWtld2lzZS4KCShkdW1wX2Z1bmN0aW9uX2RlY2wpOiBMaWtld2lzZS4KCSogZnJpZW5kLmMgKG1ha2VfZnJpZW5kX2NsYXNzKTogTGlrZXdpc2UuCgkqIGd4eC5ncGVyZjogUmVtb3ZlIF9fc2lnbmF0dXJlX18sIHNpZ25hdHVyZSwgX19zaWdvZl9fLCBzaWdvZi4KCSogaGFzaC5oOiBSZWdlbmVyYXRlZC4KCSogaW5pdC5jIChidWlsZF9uZXdfMSk6IFJlbW92ZSBzdXBwb3J0IGZvciBzaWduYXR1cmVzLgoJKiBsYW5nLW9wdGlvbnMuaDogUmVtb3ZlIC1maGFuZGxlLXNpZ25hdHVyZXMsCgktZm5vLWhhbmRsZS1zaWduYXR1cmVzLgoJKiBsZXguYyAoaW5pdF9wYXJzZSk6IFJlbW92ZSBzdXBwb3J0IGZvciBzaWduYXR1cmVzLgoJKHl5cHJpbnQpOiBMaWtld2lzZS4KCSogbGV4LmggKHJpZCk6IFJlbW92ZSBSSURfU0lHTkFUVVJFLgoJKiBtZXRob2QuYyAoYnVpbGRfZGVjbF9vdmVybG9hZF9yZWFsKTogUmVtb3ZlIHN1cHBvcnQgZm9yCglzaWduYXR1cmVzLgoJKGhhY2tfaWRlbnRpZmllcik6IExpa2V3aXNlLgoJKiBwYXJzZS55IChiYXNlX2NsYXNzKTogTGlrZXdpc2UuCgkoYmFzZV9jbGFzcy4xKTogTGlrZXdpc2UuCgkoYWNjZXNzX3NwZWNpZmllcik6IExpa2V3aXNlLgoJKiBzZWFyY2guYyAobG9va3VwX21lbWJlcik6IExpa2V3aXNlLgoJKiBzZW1hbnRpY3MuYyAoZmluaXNoX3F1YWxpZmllZF9vYmplY3RfY2FsbF9leHByKTogTGlrZXdpc2UuCgkoZmluaXNoX3RlbXBsYXRlX3R5cGVfcGFybSk6IExpa2V3aXNlLgoJKGJlZ2luX2NsYXNzX2RlZmluaXRpb24pOiBMaWtld2lzZS4KCShmaW5pc2hfYmFzZV9zcGVjaWZpZXIpOiBMaWtld2lzZS4KCSogc2lnLmM6IFJlbW92ZS4KCSogdHJlZS5jIChidWlsZF9jcGx1c19tZXRob2RfdHlwZSk6IFJlbW92ZSBzdXBwb3J0IGZvciBzaWduYXR1cmVzLgoJKiB0eXBlY2suYyAocmVxdWlyZV9jb21wbGV0ZV90eXBlKTogTGlrZXdpc2UuCgkoY19zaXplb2YpOiBMaWtld2lzZS4KCShjX2FsaWdub2YpOiBMaWtld2lzZS4KCShidWlsZF9vYmplY3RfcmVmKTogTGlrZXdpc2UuCgkoYnVpbGRfY29tcG9uZW50X3JlZik6IExpa2V3aXNlLgoJKGJ1aWxkX2luZGlyZWN0X3JlZik6IExpa2V3aXNlLgoJKGJ1aWxkX2NfY2FzdCk6IExpa2V3aXNlLgoJKGJ1aWxkX21vZGlmeV9leHByKTogTGlrZXdpc2UuCgkoY29udmVydF9mb3JfaW5pdGlhbGl6YXRpb24pOiBMaWtld2lzZS4KCSogdHlwZWNrMi5jIChzaWduYXR1cmVfZXJyb3IpOiBSZW1vdmUuCgkoc3RvcmVfaW5pdF92YWx1ZSk6IFJlbW92ZSBzdXBwb3J0IGZvciBzaWduYXR1cmVzLgoJKGRpZ2VzdF9pbml0KTogTGlrZXdpc2UuCgkoYnVpbGRfeF9hcnJvdyk6IExpa2V3aXNlLgoJKGJ1aWxkX2Z1bmN0aW9uYWxfY2FzdCk6IExpa2V3aXNlLgoJKiB4cmVmLmMgKEdOVV94cmVmX2RlY2wpOiBMaWtld2lzZS4KCjE5OTktMDgtMTAgIE1hcnRpbiB2LiBMb2V3aXMgIDxtYXJ0aW5AbWlyYS5pc2RuLmNzLnR1LWJlcmxpbi5kZT4KCgkqIGxleC5jIChkb19pZGVudGlmaWVyKTogUmVtb3ZlIHVubmVjZXNzYXJ5IGxvb2t1cCBvZiBjbGFzcyBmaWVsZC4KCjE5OTktMDgtMDkgIE1hcnRpbiB2LiBMb2V3aXMgIDxtYXJ0aW5AbWlyYS5pc2RuLmNzLnR1LWJlcmxpbi5kZT4KCgkqIGRlY2wyLmMgKHNldF9kZWNsX25hbWVzcGFjZSk6IERvIG5vdCBjb21wbGFpbiBhYm91dCBub24tbWF0Y2hpbmcKCWRlY2xzIGlmIHByb2Nlc3NpbmcgYSB0ZW1wbGF0ZS4KCjE5OTktMDgtMDkgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBkZWNsLmMgKGJ1aWxkX3B0cm1lbWZ1bmNfdHlwZSk6IEhhbmRsZSBxdWFsaWZpZWQKCXBvaW50ZXItdG8tbWVtYmVyIHR5cGVzIGhlcmUuCgkqIHRyZWUuYyAoY3BfYnVpbGRfcXVhbGlmaWVkX3R5cGVfcmVhbCk6IFNpbXBsaWZ5IGhhbmRsaW5nIGhlcmUuCgoxOTk5LTA4LTA5ICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBsZXguYyAobGFuZ19pZGVudGlmeSk6IExpa2V3aXNlLgoKMTk5OS0wOC0wOSAgQmVybmQgU2NobWlkdCAgPGJlcm5kc0BjeWdudXMuY28udWs+CgoJKiBNYWtlZmlsZS5pbjogVXBkYXRlIGRlcGVuZGVuY2llcy4KCSogY2xhc3MuYyAoZmluaXNoX3N0cnVjdF8xKTogRG9uJ3QgaW5pdGlhbGl6ZSBERUNMX1NBVkVEX0lOU05TIHdpdGgKCU5VTExfUlRYLgoJKiBkZWNsLmM6IEluY2x1ZGUgImZ1bmN0aW9uLmgiCgkoY2xlYW51cF9sYWJlbCwgcmV0dXJuX2xhYmVsKTogRGVsZXRlIGRlY2xhcmF0aW9ucy4KCShzdG9yZV9wYXJtX2RlY2xzKTogIERvbid0IGluaXRpYWxpemUgREVDTF9TQVZFRF9JTlNOUyB3aXRoIE5VTExfUlRYLgoJKGZpbmlzaF9mdW5jdGlvbik6IFJlbmFtZSBsYXN0X3Bhcm1faW5zbiB2YXJpYWJsZSB0bwoJZm5fbGFzdF9wYXJtX2luc24uICBEb24ndCBjb21wYXJlIERFQ0xfU0FWRURfSU5TTlMgdG8gTlVMTF9SVFguCgkqIGRlY2wyLmM6IEluY2x1ZGUgImZ1bmN0aW9uLmgiLgoJKHJ0bF9leHByX2NoYWluKTogRGVsZXRlIGRlY2xhcmF0aW9uLgoJKiBtZXRob2QuYzogSW5jbHVkZSAiZnVuY3Rpb24uaCIKCSogdHJlZS5jIChidWlsZF92YmFzZV9wb2ludGVyX2ZpZWxkcyk6IERvbid0IGluaXRpYWxpemUKCURFQ0xfU0FWRURfSU5TTlMgd2l0aCBOVUxMX1JUWC4KCSogdHlwZWNrLmM6IEluY2x1ZGUgImZ1bmN0aW9uLmgiCgoxOTk5LTA4LTA5ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBzZW1hbnRpY3MuYyAoYmVnaW5fZnVuY3Rpb25fdHJ5X2Jsb2NrLCBmaW5pc2hfZnVuY3Rpb25fdHJ5X2Jsb2NrLAoJZmluaXNoX2Z1bmN0aW9uX2hhbmRsZXJfc2VxdWVuY2UpOiBOZXcgZm5zLgoJKiBwYXJzZS55IChmdW5jdGlvbl90cnlfYmxvY2spOiBVc2UgdGhlbS4KCSogcHQuYyAoaW5zdGFudGlhdGVfZGVjbCk6IExpa2V3aXNlLgoKCSogY3AtdHJlZS5oOiBEZWNsYXJlIGluX2Z1bmN0aW9uX3RyeV9oYW5kbGVyLgoJKiBkZWNsLmM6IERlZmluZSBpdC4KCShzdGFydF9mdW5jdGlvbik6IENsZWFyIGl0LgoJKHN0cnVjdCBjcF9mdW5jdGlvbiwgcHVzaF9jcF9mdW5jdGlvbl9jb250ZXh0KTogU2F2ZSBpdC4KCShwb3BfY3BfZnVuY3Rpb25fY29udGV4dCk6IFJlc3RvcmUgaXQuCgkqIHBhcnNlLnkgKGZ1bmN0aW9uX3RyeV9ibG9jayk6IFNldCBhbmQgY2xlYXIgaXQuCgkqIGV4Y2VwdC5jIChleHBhbmRfZW5kX2NhdGNoX2Jsb2NrKTogUmV0aHJvdyBpZiB3ZSByZWFjaCB0aGUgZW5kCglvZiBhIGZ1bmN0aW9uLXRyeS1ibG9jayBoYW5kbGVyIGluIGEgY3RvciBvciBkdG9yLgoJKiB0eXBlY2suYyAoY19leHBhbmRfcmV0dXJuKTogQ29tcGxhaW4gYWJvdXQgcmV0dXJuaW5nIGZyb20gYQoJZnVuY3Rpb24tdHJ5LWJsb2NrIGhhbmRsZXIgb2YgYSBjdG9yLgoKCSogcGFyc2UueSAoZnVuY3Rpb25fdHJ5X2Jsb2NrKTogQ2FsbCBlbmRfcHJvdGVjdF9wYXJ0aWFscwoJYmVmb3JlIGV4cGFuZF9zdGFydF9hbGxfY2F0Y2guCgoxOTk5LTA4LTA4ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBkZWNsLmMgKHN0cnVjdCBiaW5kaW5nX2xldmVsKTogQWRkIGVoX3JlZ2lvbiBmaWVsZC4KCShwdXNoX2JpbmRpbmdfbGV2ZWwpOiBTZXQgaXQuCgkoZGVmaW5lX2xhYmVsKTogQ29tcGxhaW4gYWJvdXQganVtcGluZyBpbnRvIGFuIEVIIGJsb2NrLgoKCSogcHRyZWUuYyAocHJpbnRfbGFuZ190eXBlKTogUHJpbnQgdGhlIHJlYWwgdHlwZSBvZiBhIFBNRi4KCVByaW50IHdoYXQgZXhjZXB0aW9ucyBhIGZuIHR5cGUgdGhyb3dzLgoKMTk5OS0wOC0wNyAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogY2xhc3MuYyAoY291bnRfZmllbGRzLCBhZGRfZmllbGRzX3RvX3ZlYyk6IEFkZCBzdGF0aWMgcHJvdG90eXBlLgoKCSogY3AtdHJlZS5oIChvcG5hbWVfdGFiLCBhc3NpZ25vcF90YWIsIG9wZXJhdG9yX25hbWVfc3RyaW5nLAoJZ2V0X2lkXzIsIGNvbXBvc2l0ZV9wb2ludGVyX3R5cGUsIGR1bXBfbm9kZV90b19maWxlKTogQ29uc3RpZnkgYQoJY2hhciouCgoJKiBkZWNsLmMgKG5hbWVkX2xhYmVsX2xpc3QsIGNwX2ZpbmlzaF9kZWNsLCBncm9rZGVjbGFyYXRvcik6CglDb25zdGlmeSBhIGNoYXIqLgoKCSogZGVjbDIuYyAoZmluaXNoX3N0YXRpY19kYXRhX21lbWJlcl9kZWNsLCBncm9rZmllbGQpOiBDb25zdGlmeSBhCgljaGFyKi4KCgkqIGR1bXAuYyAocXVldWVfYW5kX2R1bXBfaW5kZXgsIGR1bXBfaW50LCBkdW1wX3N0cmluZywKCWR1bXBfc3RyaW5nX2ZpZWxkLCBkZXF1ZXVlX2FuZF9kdW1wLCBkdW1wX25vZGVfdG9fZmlsZSk6IENvbnN0aWZ5CglhIGNoYXIqLgoJKGR1bXBfc3RtdCk6IEFkZCBzdGF0aWMgcHJvdG90eXBlLgoKCSogZXJyZm4uYyAoY3BfdGhpbmcpOiBDb25zdGlmeSBhIGNoYXIqLgoKCSogZXJyb3IuYyAoZHVtcF91bmFyeV9vcCwgZHVtcF9iaW5hcnlfb3AsIGFnZ3JfdmFyaWV0eSwKCWR1bXBfYWdncl90eXBlLCBkdW1wX2dsb2JhbF9pb3JkLCBkdW1wX2RlY2wsIGR1bXBfZnVuY3Rpb25fbmFtZSwKCWR1bXBfZXhwcik6IENvbnN0aWZ5IGEgY2hhciouCgoJKiBsZXguYyAoZXh0ZW5kX3Rva2VuX2J1ZmZlcl90bywgcHJhZ21hX2dldGMsIHByYWdtYV91bmdldGMsCglyZWFkX2xpbmVfbnVtYmVyKTogQWRkIHN0YXRpYyBwcm90b3R5cGUuCgkob3BuYW1lX3RhYiwgYXNzaWdub3BfdGFiLCBvcGVyYXRvcl9uYW1lX3N0cmluZyk6IENvbnN0aWZ5IGEgY2hhciouCgkocmVhbF95eWxleCk6IE1vdmUgbGFiZWwgYGxldHRlcicgaW50byB0aGUgc2NvcGUgd2hlcmUgaXQgaXMgdXNlZC4KCgkqIG1ldGhvZC5jIChidWlsZF9tYW5nbGVkX3RlbXBsYXRlX3Bhcm1faW5kZXgsIGJ1aWxkX292ZXJsb2FkX2ludCwKCWJ1aWxkX2RlY2xfb3ZlcmxvYWRfcmVhbCwgZ2V0X2lkXzIpOiBDb25zdGlmeSBhIGNoYXIqLgoKCSogc2VhcmNoLmMgKGNoZWNrX2ZpbmFsX292ZXJyaWRlcik6IE1ha2Ugc3RhdGljLgoKCSogdHlwZWNrLmMgKGNvbXBvc2l0ZV9wb2ludGVyX3R5cGUpOiBDb25zdGlmeSBhIGNoYXIqLgoKMTk5OS0wOC0wNiAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogcHQuYyAobWF5YmVfZ2V0X3RlbXBsYXRlX2RlY2xfZnJvbV90eXBlX2RlY2wpOiBNYWtlIHN1cmUgdGhhdAoJd2UncmUgbG9va2luZyBhdCBhIGNsYXNzLgoKCSogZGVjbC5jIChsb29rdXBfbmFtZV9yZWFsKTogU2V0IHRoZSBjb21wbGFpbiBmbGFnIGlmIHdlJ3JlCglsb29raW5nIGZvciBhIG5hbWVzcGFjZSBtZW1iZXIuCgoJKiBsZXguYyAocmVhbF95eWxleCk6IFdlIGNhbiBoYXZlIGEgbnVtYmVyIHdpdGggbm8gZGlnaXRzLgoKCSogY3Z0LmMgKGNwX2NvbnZlcnRfdG9fcG9pbnRlcik6IERvbid0IGZvcmNlIHBtZiBjb252ZXJzaW9ucy4KCgkqIHNlYXJjaC5jIChiaW5mb19mcm9tX3ZiYXNlKTogTmV3IGZuLgoJKiBjcC10cmVlLmg6IERlY2xhcmUgaXQuCgkqIGN2dC5jIChjcF9jb252ZXJ0X3RvX3BvaW50ZXIpOiBVc2UgaXQgdG8gZGlhZ25vc2UgY29udmVyc2lvbgoJZnJvbSBwb2ludGVyIHRvIG1lbWJlciBvZiB2aXJ0dWFsIGJhc2UuCgkqIHR5cGVjay5jIChnZXRfZGVsdGFfZGlmZmVyZW5jZSk6IExpa2V3aXNlLgoKMTk5OS0wOC0wNiAgQWxleGFuZHJlIE9saXZhICA8b2xpdmFAZGNjLnVuaWNhbXAuYnI+CgoJKiBwdC5jICh0c3Vic3QpOiBVc2UgYnVpbGRfaW5kZXhfdHlwZSB0byBidWlsZCBpbi10ZW1wbGF0ZSBhcnJheQoJaW5kZXggdHlwZS4gIEZpeGVzIGcrKy5vbGl2YS9kd2FyZjEuQy4KCSogZGVjbC5jIChncm9rZGVjbGFyYXRvcik6IExpa2V3aXNlLCBqdXN0IGZvciBjb25zaXN0ZW5jeSwgYXMgaXQKCWRvZXNuJ3Qgc2VlbSB0byB0cmlnZ2VyIHRoZSBidWcgd2l0aG91dCBpdC4KCjE5OTktMDgtMDYgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIHR5cGVjazIuYyAoYWRkX2V4Y2VwdGlvbl9zcGVjaWZpZXIpOiBVc2UgY29tcGxldGVfdHlwZS4KCjE5OTktMDgtMDYgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBlcnJvci5jIChkdW1wX2V4cHIpOiBIYW5kbGUgRVhBQ1RfRElWX0VYUFIuCgkoZHVtcF9iaW5hcnlfb3ApOiBCdWxsZXRwcm9vZi4KCSogbGV4LmMgKGluaXRfcGFyc2UpOiBTZXQgb3BuYW1lX3RhYltFWEFDVF9ESVZfRVhQUl0uCgkqIHRyZWUuYyAoc2VhcmNoX3RyZWUpOiBEb24ndCBlbnVtZXJhdGUgYWxsIHRoZSBub2RlcyBvZiBjbGFzc2VzCglgMScsIGAyJywgYW5kIGA8JzsgaGFuZGxlIHRoZW0gZ2VuZXJpY2FsbHkuICBEb24ndCBiZSBzb3JyeSBhYm91dAoJInVucmVjb2duaXplZCB0cmVlIGNvZGVzIjsganVzdCBhYm9ydC4KCShub19saW5rYWdlX2NoZWNrKTogRG9uJ3QgZG8gbGlua2FnZSBjaGVja3MgZm9yIHRlbXBsYXRlcy4KCgkqIHRyZWUuYyAoY3BfYnVpbGRfcXVhbGlmaWVkX3R5cGVfcmVhbCk6IEhhbmRsZQoJcG9pbnRlci10by1tZW1iZXItZnVuY3Rpb24gdHlwZXMgY29ycmVjdGx5LgoKMTk5OS0wOC0wNSAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogZGVjbC5jIChwdXNoZGVjbCk6IE9ubHkgZ2l2ZSBhbiBlcnJvciBmb3Igc2hhZG93aW5nIGEgcGFybQoJZnJvbSAqdGhpcyogZnVuY3Rpb24uCgpUaHUgQXVnICA1IDAyOjQwOjQyIDE5OTkgIEplZmZyZXkgQSBMYXcgIChsYXdAY3lnbnVzLmNvbSkKCgkqIHR5cGVjazIuYzogVXBkYXRlIFVSTHMgYW5kIG1haWwgYWRkcmVzc2VzLgoKMTk5OS0wOC0wNCAgTmF0aGFuIFNpZHdlbGwgIDxuYXRoYW5AYWNtLm9yZz4KCgkqIGNwLXRyZWUuaCAoZW1wdHlfZXhjZXB0X3NwZWMpOiBOZXcgZ2xvYmFsIHZhci4KCShjb21wZXhjZXB0dHlwZXMpOiBSZW1vdmUgcHJvdG90eXBlLgoJKGNvbXBfZXhjZXB0X3NwZWNzKTogUHJvdG90eXBlIG5ldyBnbG9iYWwgZnVuY3Rpb24uCgkoYWRkX2V4Y2VwdGlvbl9zcGVjaWZpZXIpOiBQcm90b3R5cGUgbmV3IGdsb2JhbCBmdW5jdGlvbi4KCSogZGVjbC5jIChlbXB0eV9leGNlcHRfc3BlYyk6IERlZmluZSBuZXcgZ2xvYmFsIHZhci4KCShkdXBsaWNhdGVfZGVjbHMpOiBVc2UgY29tcF9leGNlcHRfc3BlY3MsIHJld29yZCBlcnJvciBtZXNzYWdlLgoJKGluaXRfZGVjbF9wcm9jZXNzaW5nKTogSW5pdGlhbGl6ZSBlbXB0eV9leGNlcHRfc3BlYy4KCUFkanVzdCBidWlsZF9leGNlcHRpb25fdmFyaWFudCBjYWxscy4KCSogcGFyc2UueSAoZXhjZXB0aW9uX3NwZWNpZmljYXRpb25fb3B0KTogVXNlIGVtcHR5X2V4Y2VwdF9zcGVjLgoJKGFuc2lfcmFpc2VfaWRlbnRpZmllcik6IENhbGwgY2hlY2tfZm9yX25ld190eXBlLgoJKGFuc2lfcmFpc2VfaWRlbnRpZmllcnMpOiBVc2UgYWRkX2V4Y2VwdGlvbl9zcGVjaWZpZXIuCgkqIHB0LmMgKHRzdWJzdCk6IFVzZSBhZGRfZXhjZXB0aW9uX3NwZWNpZmllciB0byBidWlsZCBleGNlcHRpb24KCXNwZWNpZmllci4KCSogc2VhcmNoLmMgKGNoZWNrX2ZpbmFsX292ZXJyaWRlcik6IE5ldyBzdGF0aWMgZnVuY3Rpb24sIGJyb2tlbgoJb3V0IG9mIGdldF9tYXRjaGluZ192aXJ0dWFsLiBDaGVjayB0aHJvdyBzcGVjaWZpZXJzLCByZXdvcmQKCWRpYWdub3N0aWNzLgoJKGdldF9tYXRjaGluZ192aXJ0dWFsKTogVXNlIGNoZWNrX2ZpbmFsX292ZXJyaWRlci4KCSogdHJlZS5jIChidWlsZF9leGNlcHRpb25fdmFyaWFudCk6IFVzZSBjb21wX2V4Y2VwdF9zcGVjcy4KCSogdHlwZWNrLmMgKGNvbXBleGNlcHR0eXBlcyk6IFJlbW92ZS4KCShjb21wX2V4Y2VwdF90eXBlcyk6IE5ldyBzdGF0aWMgZnVuY3Rpb24sIGhlbHBlciBmb3IKCWNvbXBfZXhjZXB0X3NwZWNzLiBDb21wYXJlIHR3byB0eXBlcyBhcyBleGNlcHRpb24gc3BlY2lmaWVycy4KCShjb21wX2V4Y2VwdF9zcGVjcyk6IE5ldyBnbG9iYWwgZnVuY3Rpb24sIGNvbXBhcmUgdHdvIGV4Y2VwdGlvbgoJc3BlY2lmaWVycy4KCShjb21wdHlwZXMpOiBBZGp1c3QgZm9yIGNvbXBfZXhjZXB0X3NwZWNzLgoJKiB0eXBlY2syLmMgKGFkZF9leGNlcHRpb25fc3BlY2lmaWVyKTogTmV3IGdsb2JhbCBmdW5jdGlvbi4KCgkqIGNsYXNzLmMgKGNoZWNrX2Zvcl9vdmVycmlkZSk6IFJld29yZCBlcnJvciBtZXNzYWdlLgoKMTk5OS0wOC0wMyAgTmF0aGFuIFNpZHdlbGwgIDxuYXRoYW5AYWNtLm9yZz4KCgkqIGNhbGwuYyAoY29udmVydF9hcmdfdG9fZWxsaXBzaXMpOiBVc2UgcG9kX3R5cGVfcC4KCSogY3AtdHJlZS5oIChzdHJ1Y3QgbGFuZ190eXBlKTogQWRkZWQgbm9uX3BvZF9jbGFzcyBmbGFnLgoJKENMQVNTVFlQRV9OT05fUE9EX1ApOiBOZXcgbWFjcm8gdG8gYWNjZXNzIGl0LgoJKiBjbGFzcy5jIChmaW5pc2hfc3RydWN0XzEpOiBEZXRlcm1pbmUgbm9uLVBPRG5lc3MuCglDaGVjayBmb3IgYXJyYXlzIG9mIHBvaW50ZXJzICgtV2VmZmMrKykuCglSZW1vdmUgYXJyYXkgaW5zcGVjdGlvbiBkdXBsaWNhdGVkIGNvZGUuCgkqIHRyZWUuYyAocG9kX3R5cGVfcCk6IERldGVjdCBub24tcG9kIG5vbi1hZ2dyZWdhdGUgdHlwZXMuCglVc2UgQ0xBU1NUWVBFX05PTl9QT0RfUC4KCjE5OTktMDgtMDMgIE5hdGhhbiBTaWR3ZWxsICA8bmF0aGFuQGFjbS5vcmc+CgoJKiBjbGFzcy5jIChkdXBsaWNhdGVfdGFnX2Vycm9yKTogUHJlc2VydmUgdGVtcGxhdGUgaW5mb3JtYXRpb24uCgoxOTk5LTA4LTAzICBOYXRoYW4gU2lkd2VsbCAgPG5hdGhhbkBhY20ub3JnPgoKCSogZGVjbC5jIChzdGFydF9lbnVtKTogU2hvdyBsb2NhdGlvbiBvZiBwcmV2aW91cyBkZWZpbml0aW9uLgoJKiBwYXJzZS55IChlbnVtbGlzdF9vcHQpOiBOZXcgcmVkdWN0aW9uLgoJKHN0cnVjdHNwKTogU2ltcGxpZnkgZW51bSBydWxlcyB0byB1c2UgZW51bWxpc3Rfb3B0LgoKMTk5OS0wOC0wMyAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogbGV4LmMgKHl5cHJpbnQpOiBIYW5kbGUgUEZVTkNOQU1FLgoKCSogZGVjbDIuYyAoYnVpbGRfZXhwcl9mcm9tX3RyZWUsIGNhc2UgTUVUSE9EX0NBTExfRVhQUik6IE9ubHkKCWJ1aWxkX2V4cHJfZnJvbV90cmVlIG9uIHRoZSBhcmdzIG9mIGEgVEVNUExBVEVfSURfRVhQUi4KCjE5OTktMDgtMDMgIE11bWl0IEtoYW4gIDxraGFuQHhyYXlsaXRoLndpc2MuZWR1PgoKCSogZGVjbC5jIChzdGFydF9kZWNsKTogU2V0IGF0dHJpYnV0ZXMgYmVmb3JlIGR1cGxpY2F0ZV9kZWNscyBjYWxsLgoKMTk5OS0wOC0wMiAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIE1ha2UtbGFuZy5pbiAoQ1hYX1NSQ1MpOiBBZGQgZHVtcC5jLgoJKiBNYWtlZmlsZS5pbiAoQ1hYX09CSlMpOiBBZGQgZHVtcC5vLgoJKGR1bXAubyk6IE5ldyB0YXJnZXQuCgkqIGNwLXRyZWUuaCAoREVDTF9DT05WX0ZOX1ApOiBEb2N1bWVudC4KCShERUNMX09WRVJMT0FERURfT1BFUkFUT1JfUCk6IE5ldyBmdW5jdGlvbi4KCShUWVBFX1BUUk1FTV9DTEFTU19UWVBFKTogTmV3IG1hY3JvLgoJKFRZUEVfUFRSTUVNX1BPSU5URURfVE9fVFlQRSk6IExpa2V3aXNlLgoJKFBUUk1FTV9DU1RfQ0xBU1MpOiBVc2UgVFlQRV9QVFJNRU1fQ0xBU1NfVFlQRS4KCShBU01fVk9MQVRJTEVfUCk6IE5ldyBtYWNyby4KCShTVE1UX0xJTkVOTyk6IExpa2V3aXNlLgoJKGNwX25hbWVzcGFjZV9kZWNscyk6IE5ldyBmdW5jdGlvbi4KCShkdW1wX25vZGVfdG9fZmlsZSk6IE5ldyBmdW5jdGlvbi4KCSogZGVjbC5jIChjcF9uYW1lc3BhY2VfZGVjbHMpOiBOZXcgZnVuY3Rpb24uCgkod2Fsa19uYW1lc3BhY2VzX3IpOiBVc2UgaXQuCgkod3JhcHVwX2dsb2JhbHNfZm9yX25hbWVzcGFjZSk6IExpa2V3aXNlLgoJKiBkZWNsMi5jIChmbGFnX2R1bXBfdHJhbnNsYXRpb25fdW5pdCk6IE5ldyB2YXJpYWJsZS4KCShsYW5nX2RlY29kZV9vcHRpb24pOiBIYW5kbGUgLWZkdW1wLXRyYW5zbGF0aW9uLXVuaXQuCgkoZmluaXNoX2ZpbGUpOiBJZiBmbGFnX2R1bXBfdHJhbnNsYXRpb25fdW5pdCBpcyBzZXQsIGR1bXAgdGhlCgl0cmFuc2xhdGlvbiB1bml0LgoJKiBkdW1wLmM6IE5ldyBmaWxlLgoJKiBsYW5nLW9wdGlvbnMuaDogQWRkIC1mZHVtcC10cmFuc2xhdGlvbi11bml0LgoJKiBwdC5jICh0c3Vic3RfdGVtcGxhdGVfcGFybXMpOiBSb2J1c3RpZnkuCgkodHN1YnN0X2RlY2wpOiBVc2UgREVDTF9PVkVSTE9BREVEX09QRVJBVE9SX1AuCgkodHN1YnN0X2V4cHIpOiBVc2UgU1RNVF9MSU5FTk8uCgkqIHNlbWFudGljcy5jIChmaW5pc2hfYXNtX3N0bXQpOiBFbGltaW5hdGUgZHVwbGljYXRlIGNvZGUuICBDaGVjawoJZm9yIGludmFsaWQgY3YtcXVhbGlmaWVycyBldmVuIHdoaWxlIGJ1aWxkaW5nIHRlbXBsYXRlcy4KCjE5OTktMDgtMDIgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgoJKiBjYWxsLmM6IEluY2x1ZGUgZGVmYXVsdHMuaCBpbnN0ZWFkIG9mIGV4cHIuaC4KCSogZGVjbC5jOiBMaWtld2lzZS4KCSogcHQuYzogTGlrZXdpc2UuCgkqIHR5cGVjay5jOiBJbmNsdWRlIGRlZmF1bHRzLmguCgoxOTk5LTA4LTAyICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogbGV4LmMgKGVycm9yY291bnQsIHNvcnJ5Y291bnQpOiBEb24ndCBkZWNsYXJlLgoJKiByZXBvLmMgKGVycm9yY291bnQsIHNvcnJ5Y291bnQpOiBMaWtld2lzZS4KCSogdHlwZWNrMi5jIChlcnJvcmNvdW50LCBzb3JyeWNvdW50KTogTGlrZXdpc2UuCgoxOTk5LTA4LTAyICBKYWt1YiBKZWxpbmVrICA8ampAdWx0cmEubGludXguY3o+CgoJKiBjYWxsLmMgKGNvbnZlcnRfZGVmYXVsdF9hcmcsIGJ1aWxkX292ZXJfY2FsbCk6IENoYW5nZSBhbGwgdXNlcyBvZgoJUFJPTU9URV9QUk9UT1RZUEVTLCBzbyB0aGF0IGl0IHRlc3RzIGl0IGFzIGEgQyBleHByZXNzaW9uLgoJRW5zdXJlIGV4cHIuaCBpcyBpbmNsdWRlZC4KCSogZGVjbC5jIChncm9rcGFyYW1zKTogRGl0dG8uCgkqIHB0LmMgKHRzdWJzdF9kZWNsKTogRGl0dG8uCgkqIHR5cGVjay5jIChjb252ZXJ0X2FyZ3VtZW50cyk6IERpdHRvLgoKMTk5OS0wOC0wMiAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogY2xhc3MuYyAobWFya19vdmVycmlkZXJzKTogRml4IG9yZGVyIG9mIGFyZ3MgdG8gb3ZlcnJpZGVzLgoJKHdhcm5faGlkZGVuKTogTGlrZXdpc2UuICBGaXggZm9yIGhhdmluZyB2aXJ0dWFsIGFuZCBub24tdmlydHVhbAoJZnVuY3Rpb25zIHdpdGggdGhlIHNhbWUgbmFtZS4KCjE5OTktMDgtMDIgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgoJKiBjcC10cmVlLmggKFRZUEVfUFRSTUVNRlVOQ19QKTogQ2hlY2sgVFlQRV9MQU5HX1NQRUNJRklDIG5vbi1udWxsLgoKMTk5OS0wOC0wMSAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGNhbGwuYyAoYnVpbGRfY29uZGl0aW9uYWxfZXhwcik6IEZpeCB0eXBvIGluIGNvbW1lbnQuCgoxOTk5LTA4LTAxICBCZXJuZCBTY2htaWR0ICA8YmVybmRzQGN5Z251cy5jby51az4KCgkqIGRlY2wuYyAoZmluaXNoX3N0bXQpOiBEb24ndCBkZWNsYXJlIGFuZCB0ZXN0IGNvbmRfc3RhY2ssIGxvb3Bfc3RhY2ssCgljYXNlX3N0YWNrOyB1c2UgaW5fY29udHJvbF96b25lX3AuCgkqIHR5cGVjay5jIChjX2V4cGFuZF9yZXR1cm4pOiBMaWtld2lzZS4KCjE5OTktMDctMzEgIEJlcm5kIFNjaG1pZHQgIDxiZXJuZHNAY3lnbnVzLmNvLnVrPgoKCSogZXhjZXB0LmMgKGNhdGNoX2NsYXVzZXMpOiBEZWxldGUgZGVjbGFyYXRpb24uCgoxOTk5LTA3LTMwICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogY2FsbC5jIChidWlsZF9jb25kaXRpb25hbF9leHByKTogQ2FsbCBjb252ZXJ0X2Zyb21fcmVmZXJlbmNlIHRvCglhdm9pZCByZWZlcmVuY2Uvbm9uLXJlZmVyZW5jZSB0eXBlIGNvbmZ1c2lvbi4gIEZpeCB0eXBvLgoKMTk5OS0wNy0zMCAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAY3lnbnVzLmNvbT4KCgkqIHR5cGVjazIuYyAoaW5pdGlhbGl6ZXJfY29uc3RhbnRfdmFsaWRfcCk6IE1vdmVkIHRvIGMtY29tbW9uLmMuCgkqIGNwLXRyZWUuaCAoaW5pdGlhbGl6ZXJfY29uc3RhbnRfdmFsaWRfcCk6IFJlbW92ZS4KCjE5OTktMDctMjggIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjYWxsLmMgKGNvbmRpdGlvbmFsX2NvbnZlcnNpb24pOiBEb24ndCBidWlsZCBCQVNFX0NPTlZzIGZvcgoJY29udmVyc2lvbnMgYmV0d2VlbiB0aGluZ3MgdGhhdCBoYXZlIHRoZSBzYW1lIHR5cGUuCgkoYnVpbGRfY29uZGl0aW9uYWxfZXhwcik6IFR3ZWFrLgoJKGNvbnZlcnRfbGlrZSk6IFNvbWUgQkFTRV9DT05WcyByZWFsbHkgZG8gcmVxdWlyZSB0aGUgZ2VuZXJhdGlvbgoJb2YgY29kZS4KCgkqIGluaXQuYyAocGVyZm9ybV9tZW1iZXJfaW5pdCk6IERvbid0IGdvIHRocm91Z2ggYnVpbGRfbW9kaWZ5X2V4cHIKCWZvciBzaW1wbGUgaW5pdGlhbGl6YXRpb25zLgoKMTk5OS0wNy0yNyAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogY3AtdHJlZS5oIChERUNMX1ZJUlRVQUxfQ09OVEVYVCk6IE5ldyBtYWNyby4KCSogdHlwZWNrLmMgKGV4cGFuZF9wdHJtZW1mdW5jX2NzdCk6IENhbGN1bGF0ZSBkZWx0YSBjb3JyZWN0bHkgZm9yCgl2aXJ0dWFsIGZ1bmN0aW9ucyBhbmQgTUkuICBTaW1wbGlmeS4KCgkqIG1ldGhvZC5jOiBSZW1vdmUgcHJvdG90eXBlIGZvciBsYXJnZXN0X3VuaW9uX21lbWJlci4KCSogcHQuYyAoZGV0ZXJtaW5lX3NwZWNpYWxpemF0aW9uKTogRml4IHVuaW5pdGlhbGl6ZWQgd2FybmluZy4KCSogbGV4LmMgKHJlYWxfeXlsZXgpOiBMaWtld2lzZS4KCjE5OTktMDctMjcgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjbGFzcy5jIChvdmVycmlkZV9vbmVfdnRhYmxlKTogQWRqdXN0IHRoZSB1c2Ugb2YgQklORk9fVklSVFVBTFMKCWhlcmUgdG9vLgoKCSogY3AtdHJlZS5oIChCSU5GT19WSVJUVUFMUyk6IERvY3VtZW50IG5ldyBmb3JtYXQuCgkqIGNsYXNzLmMgKG1vZGlmeV9vbmVfdnRhYmxlKTogQ2hhbmdlIHByb3RvdHlwZSBhY2NvcmRpbmdseS4KCShtb2RpZnlfYWxsX3Z0YWJsZXMpOiBMaWtld2lzZS4KCShtb2RpZnlfYWxsX2RpcmVjdF92dGFibGVzKTogTGlrZXdpc2UuCgkobW9kaWZ5X2FsbF9pbmRpcmVjdF92dGFibGVzKTogTGlrZXdpc2UuCgkoYnVpbGRfdnRhYmxlX2VudHJ5X2Zvcl9mbik6IE5ldyBmdW5jdGlvbi4KCShzZXRfcnR0aV9lbnRyeSk6IFNpbXBsaWZ5IGZvciBuZXcgQklORk9fVklSVFVBTFMgZm9ybWF0LgoJKG1vZGlmeV92dGFibGVfZW50cnkpOiBMaWtld2lzZS4KCShhZGRfdmlydHVhbF9mdW5jdGlvbik6IExpa2V3aXNlLgoJKGJ1aWxkX3Z0YmxfaW5pdGlhbGl6ZXIpOiBOZXcgZnVuY3Rpb24uCgkoZmluaXNoX3Z0YmxzKTogU2ltcGxpZnkgZm9yIG5ldyBCSU5GT19WSVJUVUFMUyBmb3JtYXQuCgkoZml4dXBfdnRhYmxlX2RlbHRhczEpOiBMaWtld2lzZS4KCShmaXh1cF92dGFibGVfZGVsdGFzKTogTGlrZXdpc2UuCgkob3ZlcnJpZGVfb25lX3Z0YWJsZSk6IExpa2V3aXNlLgoJKGZpbmlzaF9zdHJ1Y3RfMSk6IExpa2V3aXNlLgoKCSogZXJyb3IuYyAoZHVtcF9leHByKTogTGlrZXdpc2UuCgkqIHNlYXJjaC5jIChnZXRfYWJzdHJhY3RfdmlydHVhbHNfMSk6IExpa2V3aXNlLgoJKGdldF9hYnN0cmFjdF92aXJ0dWFscyk6IExpa2V3aXNlLgoJKGV4cGFuZF91cGNhc3RfZml4dXBzKTogTGlrZXdpc2UuCgkqIHRyZWUuYyAoZGVidWdfYmluZm8pOiBMaWtld2lzZS4KCSogZGVjbDIuYyAobWFya192dGFibGVfZW50cmllcyk6IERvbid0IGJhc2ggYWJzdHJhY3QgdmlydHVhbHMgdG8KCV9fcHVyZV92aXJ0dWFsIGhlcmUuCgoxOTk5LTA3LTI2ICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogdHJlZS5jIChidWlsZF9jcGx1c19uZXcpOiBBZGp1c3QgY2FsbCB0byBhYnN0cmFjdF92aXJ0dWFsc19lcnJvcgoJYXMgcGVyIDE5OTktMDctMjYgY2hhbmdlLgoKCSogdHlwZWNrLmMgKGNfc2l6ZW9mKTogRG9uJ3QgYWxsb3cgbm9uLXN0YXRpYyBkYXRhIG1lbWJlcnMuCgkoZXhwcl9zaXplb2YpOiBMaWtld2lzZS4KCjE5OTktMDctMjYgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIGlucHV0LmMgKGZlZWRfaW5wdXQpOiBPbmx5IHRvdWNoIGxpbmVubyBhbmQgaW5wdXRfZmlsZW5hbWUKCWlmICFVU0VfQ1BQTElCLiAgU2F2ZSB0aGUgb2xkIHZhbHVlcyBiZWZvcmUgc2V0dGluZyB0aGUgbmV3IG9uZXMuCgoJKiBpbnB1dC5jIChmZWVkX2lucHV0KTogQWRkIGZpbGUsIGxpbmUgcGFybXMuCgkqIGxleC5jIChiZWdpbl9kZWZpbml0aW9uX29mX2luY2xhc3NfaW5saW5lLCBmZWVkX2RlZmFyZyk6IEFkanVzdC4KCShyZWFsX3l5bGV4KTogQ2hlY2sgbGluZW1vZGUgYmVmb3JlIGlucHV0X3JlZGlyZWN0ZWQoKS4KCgkqIHR5cGVjay5jIChjX2V4cGFuZF9yZXR1cm4pOiBEb3duZ3JhZGUgcGVkd2FybiBhYm91dCByZXR1cm5pbmcgTlVMTAoJZnJvbSBvcCBuZXcgdG8gd2FybmluZy4KCjE5OTktMDctMjYgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjcC10cmVlLmggKG5jcF9jb252ZXJ0KTogUmVuYW1lIHRvIHBlcmZvcm1faW1wbGljaXRfY29udmVyc2lvbi4KCSogY2FsbC5jOiBBbGwgdXNlcyBjaGFuZ2VkLgoJKiB0eXBlY2suYzogTGlrZXdpc2UuCgoxOTk5LTA3LTI2ICBOYXRoYW4gU2lkd2VsbCAgPG5hdGhhbkBhY20ub3JnPgoKCSogZXhjZXB0aW9uLmNjIChfX2NwbHVzX3R5cGVfbWF0Y2hlcik6IE1hdGNoIF9fZWhfbWF0Y2hlcgoJcHJvdG90eXBlLgoKMTk5OS0wNy0yNiAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGNwLXRyZWUuaCAoQ1BfSU5URUdSQUxfVFlQRV9QKTogTmV3IG1hY3JvLgoJKEFSSVRITUVUSUNfVFlQRV9QKTogQWRqdXN0IGRlZmluaXRpb24gZm9yIHN0YW5kYXJkIGNvbmZvcm1hbmNlLgoJKHN0cmlwX3RvcF9xdWFscyk6IERlY2xhcmUuCgkobmNwX2NvbnZlcnQpOiBMaWtld2lzZS4KCSh0eXBlX2FmdGVyX3VzdWFsX2FyaXRobWV0aWNfY29udmVyc2lvbnMpOiBMaWtld2lzZS4KCShjb21wb3NpdGVfcG9pbnRlcl90eXBlKTogTGlrZXdpc2UuCgkqIGNhbGwuYyAoc3RyaXBfdG9wX3F1YWxzKTogRG9uJ3QgbWFrZSBpdCBzdGF0aWMuCgkocHJvbW90ZWRfYXJpdGhtZXRpY190eXBlX3ApOiBOZXcgZnVuY3Rpb24uCgkoY29uZGl0aW9uYWxfY29udmVyc2lvbik6IExpa2V3aXNlLgoJKG51bGxfcHRyX2NzdF9wKTogQWxsb3cgYGZhbHNlJyBhcyBhIE5VTEwgcG9pbnRlciBjb25zdGFudC4KCShzdGFuZGFyZF9jb252ZXJzaW9uKTogVXNlIHNhbWVfdHlwZV9wLiAgRG9uJ3QgYnVpbGQgQkFTRV9DT05WcwoJZm9yIGNvbnZlcnRpbmcgYSB0eXBlIHRvIGl0c2VsZi4KCShyZWZlcmVuY2VfYmluZGluZyk6IEhvbm9yIExPT0tVUF9OT19URU1QX0JJTkQuCgkoaW1wbGljaXRfY29udmVyc2lvbik6IE1ha2Ugc3VyZSB0aGUgZnJvbSBhbmQgdG8gdHlwZXMgYXJlCgljb21wbGV0ZS4KCShhZGRfYnVpbHRpbl9jYW5kaWRhdGUpOiBDb3JyZWN0IGhhbmRsaW5nIG9mID86IG9wZXJhdG9yLgoJKGFkZF9idWlsdGluX2NhbmRpZGF0ZXMpOiBJbXByb3ZlIGRvY3VtZW50YXRpb24uCgkoYnVpbGRfY29uZGl0aW9uYWxfZXhwcik6IE5ldyBmdW5jdGlvbi4KCShjYW5fY29udmVydCk6IEltcGxlbWVudCBpbiB0ZXJtcyBvZiBjYW5fY29udmVydF9hcmcuCgkobmNwX2NvbnZlcnQpOiBOZXcgZnVuY3Rpb24uCgkqIHR5cGVjay5jICh0eXBlX2FmdGVyX3VzdWFsX2FyaXRobWV0aWNfY29udmVyc2lvbnMpOiBOZXcKCWZ1bmN0aW9uLCBzcGxpdCBvdXQgZnJvbSBjb21tb25fdHlwZS4KCShjb21wb3NpdGVfcG9pbnRlcl90eXBlKTogTmV3IGZ1bmN0aW9uLCBzcGxpdCBvdXQgZnJvbQoJYnVpbGRfY29uZGl0aW9uYWxfZXhwci4KCShjb21tb25fdHlwZSk6IFVzZSB0eXBlX2FmdGVyX3VzdWFsX2FyaXRobWV0aWNfY29udmVyc2lvbnMuCglSZW1vdmUgcmVkdW5kYW50IGF0dHJpYnV0ZSBtZXJnaW5nLgoJKGNvbXB0eXBlcyk6IFRpZHkuICBIYW5kbGUgQ09NUExFWF9UWVBFLgoJKGJ1aWxkX2JpbmFyeV9vcF9ub2RlZmF1bHQpOiBVc2UgbnVsbF9wdHJfY3N0X3AuCgkoYnVpbGRfY29uZGl0aW9uYWxfZXhwcik6IFJlbW92ZS4KCShjb252ZXJ0X2Zvcl9hc3NpZ25tZW50KTogVXNlIG5ldyBjb252ZXJzaW9uIGZ1bmN0aW9ucy4KCgkqIGNwLXRyZWUuaCAoYWJzdHJhY3RfdmlydHVhbHNfZXJyb3IpOiBDaGFuZ2UgZGVjbGFyYXRpb24uCgkqIHR5cGVjazIuYyAoYWJzdHJhY3RfdmlydHVhbHNfZXJyb3IpOiBDaGVjayB0byBzZWUgaWYgYW4gZXJyb3IKCW9jY3VycmVkLCBhbmQgcmV0dXJuIGEgYm9vbGVhbiB2YWx1ZSBhY2NvcmRpbmdseS4KCShidWlsZF9mdW5jdGlvbmFsX2Nhc3QpOiBBZGp1c3QgYWNjb3JkaW5nbHkuCgkqIGNsYXNzLmMgKGZpbmlzaF9zdHJ1Y3RfMSk6IExpa2V3aXNlLgoJKiBjdnQuYyAob2NwX2NvbnZlcnQpOiBMaWtld2lzZS4KCSogZGVjbC5jIChjcF9maW5pc2hfZGVjbCk6IExpa2V3aXNlLgoJKGdyb2twYXJhbXMpOiBMaWtld2lzZS4KCShncm9rX29wX3Byb3BlcnRpZXMpOiBMaWtld2lzZS4KCShzdGFydF9mdW5jdGlvbik6IExpa2V3aXNlLgoJKiBpbml0LmMgKGJ1aWxkX25ld18xKTogTGlrZXdpc2UuCgoJKiBwdC5jICh1bmlmeSk6IERvbid0IGdldCBjb25mdXNlZCBieSBwb2ludGVycy10by1tZW1iZXIgZnVuY3Rpb25zLgoKCSogc2VhcmNoLmMgKGJ1aWxkX2NwbHVzX25ldyk6IFJvYnVzdGlmeS4KCjE5OTktMDctMjQgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgoJKiBneHguZ3BlcmYgKF9fYnVpbHRpbl92YV9hcmcpOiBOZXcuCgkqIHBhcnNlLnkgKFZBX0FSRyk6IE5ldyB0b2tlbi4KCSh1bmFyeV9leHByKTogUmVjb2duaXplIGl0LgoKU3VuIEp1bCAyNSAxNToyNDoyMSAxOTk5ICBKZWZmcmV5IEEgTGF3ICAobGF3QGN5Z251cy5jb20pCgoJKiBnKytGQVEudGV4aTogRGVsZXRlZCBwZXIgSm9lIEJ1Y2sncyByZXF1ZXN0LgoJKiBNYWtlZmlsZS5pbjogQ29ycmVzcG9uZGluZyBjaGFuZ2VzLgoKMTk5OS0wNy0yMyAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogbGV4LmM6IFN5bmMgd2l0aCBDIGZyb250ZW5kLgoJKHdoaXRlc3BhY2VfY3IpOiBOZXcgZm4uCgkoc2tpcF93aGl0ZV9zcGFjZSk6IFVzZSBpdC4KCShpbml0X3BhcnNlKTogUmVvcmRlci4KCSh5eXByaW50KTogU3VwcG9ydCBDT05TVEFOVC4KCShwcmFnbWFfZ2V0YywgcHJhZ21hX3VuZ2V0Yyk6IEJyaW5nIGJhY2suCgkocmVhZF9saW5lX251bWJlcik6IENoYW5nZSBpbl9zeXN0ZW1faGVhZGVyIGRpcmVjdGx5LgoJKGhhbmRsZV9nZW5lcmljX3ByYWdtYSwgaGFuZGxlX2NwX3ByYWdtYSwgeXllcnJvcik6IE1vdmUgdXAgaW4gZmlsZS4KCShwYXJzZV9mbG9hdCk6IFVwZGF0ZSB0byBDIHZlcnNpb24uCgkoeXlsZXgpOiBIYW5kbGUgJyQnIHVuZGVyIHRoZSBsZXR0ZXIgY2FzZS4KCVJlbW92ZSBsb29raW5nX2Zvcl90eXBlbmFtZSBoYW5kbGluZy4KCVN1cHBvcnQgaGV4IGZsb2F0aW5nIHBvaW50IGNvbnN0YW50cy4KCUZvbGxvdyBDJ3MgbGVhZCBmb3IgY2hvb3NpbmcgdHlwZSBvZiBpbnRlZ2VyIGNvbnN0YW50cy4KCVJlYXJyYW5nZSBzdHVmZiB0byBtYXRjaCBDIGZyb250ZW5kLgoJKHl5dW5nZXRjLCByZWluaXRfcGFyc2VfZm9yX2Jsb2NrLCB5eWxleCk6IFN1cHBvcnQgaW5kZW50X2xldmVsLgoJKiBzcGV3LmMgKHl5bGV4KTogQ2xlYXIgbG9va2luZ19mb3JfdHlwZW5hbWUgaWYgd2Ugc2VlIGEgVFlQRVNQRUMuCgoxOTk5LTA3LTIzICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogY2FsbC5jIChyZWZlcmVuY2VfYmluZGluZyk6IFR3ZWFrLgoJKG1heWJsZV9oYW5kbGVfaW1wbGljaXRfb2JqZWN0KTogVXNlIGRpcmVjdF9yZWZlcmVuY2VfYmluZGluZyB0bwoJY3JlYXRlIHRoZSByaWdodCBpbXBsaWNpdCBjb252ZXJzaW9uIHNlcXVlbmNlLgoKMTk5OS0wNy0yMiAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIHB0LmMgKGNvbnZlcnRfbm9udHlwZV9hcmd1bWVudCk6IERvbid0IGNhbGwgZGVjbF9jb25zdGFudF92YWx1ZQoJaWYgd2UncmUgY29udmVydGluZyB0byBhIHJlZmVyZW5jZSB0eXBlLgoKCSogY2FsbC5jIChORUVEX1RFTVBPUkFSWV9QKTogTmV3IG1hY3JvLgoJKHN0YW5kYXJkX2NvbnZlcnNpb24pOiBTZXQgaXQsIGZvciBkZXJpdmVkLXRvLWJhc2UgY29udmVyc2lvbnMuCgkocmVmZXJlbmNlX3JlbGF0ZWRfcCk6IE5ldyBmdW5jdGlvbi4KCShyZWZlcmVuY2VfY29tcGF0aWJsZV9wKTogTGlrZXdpc2UuCgkoY29udmVydF9jbGFzc190b19yZWZlcmVuY2UpOiBMaWtld2lzZS4KCShkaXJlY3RfcmVmZXJlbmNlX2JpbmRpbmcpOiBMaWtld2lzZS4KCShyZWZlcmVuY2VfYmluZGluZyk6IFJld29yayBmb3Igc3RhbmRhcmRzLWNvbXBsaWFuY2UuCgkoY29udmVydF9saWtlKTogQWRqdXN0IGFjY29yZGluZ2x5LgoJKG1heWJlX2hhbmRsZV9yZWZfYmluZCk6IFNpbXBsaWZ5OyB0aGUgcmlnaHQgY29udmVyc2lvbiBzZXF1ZW5jZXMKCWFyZSBub3cgYnVpbHQgdXAgaW4gcmVmZXJlbmNlX2JpbmRpbmcuCgkoaW5pdGlhbGl6ZV9yZWZlcmVuY2UpOiBOZXcgZnVuY3Rpb24uCgkqIGNwLXRyZWUuaCAoSUNTX1VTRVJfRkxBRyk6IERvY3VtZW50LgoJKElDU19USElTX0ZMQUcpOiBMaWtld2lzZS4KCShJQ1NfQkFEX0ZMQUcpOiBMaWtld2lzZS4KCShORUVEX1RFTVBPUkFSWV9QKTogTGlrZXdpc2UuCgkoY3BfbHZhbHVlX2tpbmQpOiBOZXcgdHlwZS4KCShyZWFsX2x2YWx1ZV9wKTogUmV0dXJuIGl0LgoJKiBlcnJvci5jIChkdW1wX2V4cHIpOiBQcm92aWRlIG1vcmUgYWNjdXJhdGUgcmVwcmVzZW50YXRpb24gZm9yCglBR0dSX0lOSVRfRVhQUnMuCgkqIGluaXQuYyAoZXhwYW5kX2RlZmF1bHRfaW5pdCk6IERvIG5vdCB0cnkgdG8gcGVyZm9ybSBpbXBsaWNpdAoJY29udmVyc2lvbnMgZm9yIGEgYnJhY2UtZW5jbG9zZWQgaW5pdGlhbGl6ZXIuCgkqIHNlYXJjaC5jIChsb29rdXBfY29udmVyc2lvbnMpOiBEb2N1bWVudC4KCSogdHJlZS5jIChsdmFsdWVfcF8xKTogUmV0dXJuIGEgY3BfbHZhbHVlX2tpbmQuICBDYWxjdWxhdGUKCWFwcHJvcHJpYXRlbHkuCgkocmVhbF9sdmFsdWVfcCk6IEFkanVzdCBhY2NvcmRpbmdseS4KCShsdmFsdWVfcCk6IExpa2V3aXNlLgoJKGJ1aWxkX2NwbHVzX25ldyk6IERvbid0IGFsbG93IHRoZSBjcmVhdGlvbiBvZiBhbiBhYnN0cmFjdCBjbGFzcy4KCSogdHlwZWNrLmMgKGNvbnZlcnRfZm9yX2luaXRpYWxpemF0aW9uKTogVXNlIGluaXRpYWxpemVfcmVmZXJlbmNlLgoKMTk5OS0wNy0yMSAgR2F2aW4gUm9taWctS29jaCAgPGdhdmluQGN5Z251cy5jb20+CgoJKiBsZXguYyAocmVhbF95eWxleCkgOiBDb3JyZWN0IHRoZSB0ZXN0IGZvciBvdmVyZmxvdyB3aGVuIGxleGluZwoJaW50ZWdlciBsaXRlcmFscy4KCjE5OTktMDctMjAgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIGRlY2wuYyAod2Fybl9leHRlcm5fcmVkZWNsYXJlZF9zdGF0aWMpOiBDaGVjayBERUNMX0FSVElGSUNJQUwsCglub3QgREVDTF9CVUlMVF9JTiwgdG8gZGV0ZXJtaW5lIGlmIGEgZnVuY3Rpb24gaXMgaW50ZXJuYWxseSBkZWNsYXJlZC4KCShkdXBsaWNhdGVfZGVjbHMpOiBMaWtld2lzZS4gIEltcHJvdmUgaGFuZGxpbmcgb2YgYnVpbHRpbnMuCgkocHVzaF9vdmVybG9hZGVkX2RlY2wpOiBSZW1vdmUgc3BlY2lhbCBoYW5kbGluZyBvZiBidWlsdGlucy4KCgkqIGNwLXRyZWUuaCAoQU5PTl9BR0dSX1RZUEVfUCk6IFVzZSBDTEFTU19UWVBFX1AuCgoJKiBkZWNsLmMgKGdyb2tkZWNsYXJhdG9yKTogUHVsbCBvdXQgZGVjbF9jb25zdGFudF92YWx1ZSBpbgoJdGVtcGxhdGVzLCB0b28uCgoJKiBjbGFzcy5jIChmaW5pc2hfc3RydWN0LCBmaW5pc2hfc3RydWN0XzEpOiBSZW1vdmUgJ3dhcm5fYW5vbicgcGFybS4KCSogY3AtdHJlZS5oLCBwdC5jLCBzZW1hbnRpY3MuYzogQWRqdXN0LgoJKiBtZXRob2QuYyAobGFyZ2VzdF91bmlvbl9tZW1iZXIpOiBSZW1vdmUuCgoJKiBsYW5nLXNwZWNzLmggKGMrKy1jcHAtb3V0cHV0KTogUGFzcyAtZnByZXByb2Nlc3NlZC4KCgkqIGxleC5jICh0b2tlbl9nZXRjaCwgdG9rZW5fcHV0X2JhY2spOiBOZXcgZm5zLgoJKHJlYWxfeXlsZXgpOiBVc2UgdGhlbS4KCgkqIGxleC5jIChsYW5nX2luaXQpOiBHZW5lcmFsaXplLgoJKGxhbmdfaW5pdF9vcHRpb25zKTogVGVsbCBjcHBsaWIgdGhpcyBpcyBDKysuCgkobmV4dGNoYXIpOiBSZW1vdmUuICBSZXBsYWNlIHVzZXMgd2l0aCBwdXRfYmFjay4KCShza2lwX3doaXRlX3NwYWNlKTogSGFuZGxlIGxpbmVtb2RlIGhlcmUuICBPcHRpbWl6ZSBmb3IgY3BwbGliLgoJKGV4dGVuZF90b2tlbl9idWZmZXJfdG8pOiBOZXcgZm4uCgkoZXh0ZW5kX3Rva2VuX2J1ZmZlcik6IFVzZSBpdC4KCShyZWFkX2xpbmVfbnVtYmVyLCBjaGVja19uZXdsaW5lKTogSnVzdCBkZWFsIHdpdGggdG9rZW5zLgoJKHJlYWxfeXlsZXgpOiBNb3JlIGNwcGxpYiBvcHRpbWl6YXRpb25zLiAgU2ltcGxpZnkuICBEb24ndCBwcm9kdWNlCglFWFRFUk5fTEFOR19TVFJJTkcsIExFRlRfUklHSFQgb3IgUEFSRU5fU1RBUl9QQVJFTiBoZXJlLgoJKiBzcGV3LmMgKHl5bGV4KTogUHJvZHVjZSBMRUZUX1JJR0hUIGFuZCBFWFRFUk5fTEFOR19TVFJJTkcuCgkqIHBhcnNlLnkgKFBBUkVOX1NUQVJfUEFSRU4pOiBSZW1vdmUuCgkqIGlucHV0LmM6IERvbid0IHVzZSB0aGUgcHV0YmFjayBtYWNoaW5lcnkgd2l0aCBjcHBsaWIuCgkoc3ViX2dldGNoKTogRm9sZCBiYWNrIGludG8gZ2V0Y2guCgkoZ2V0Y2gpOiBEb24ndCBoYW5kbGUgbGluZW1vZGUgaGVyZS4KCShmZWVkX2lucHV0KTogVW5nZXQgYW55IHRleHQgaW4gdGhlIHRva2VuIGJ1ZmZlci4KCgkqIGxleC5jCShzZXRfdHlwZWRlY2xfaW50ZXJmYWNlX2luZm8sIHNldF92YXJkZWNsX2ludGVyZmFjZV9pbmZvLAoJbmV4dHl5Y2hhciwgbmV4dHl5bHZhbCk6IFJlbW92ZS4KCjE5OTktMDctMjAgIE1pY2hhZWwgVGllbWFubiAgPHRpZW1hbm5AaG9sb2RlY2suY3lnbnVzLmNvbT4KCSAgICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBsZXguYyAoaW5kZW50X2xldmVsKTogTmV3IHZhcmlhYmxlLgoJKGluaXRfcGFyc2UpOiBTZXQgY3BwX3Rva2VuIHRvIENQUF9ESVJFQ1RJVkUuCgkoY29uc3VtZV9zdHJpbmcpOiBNYWtlIHRoaXMgc21hcnQgYWJvdXQgVVNFX0NQUExJQi4KCSh5eXVuZ2V0Yyk6IFVzZSBwdXRfYmFjayBmdW5jdGlvbi4KCShwcmFnbWFfZ2V0YywgcHJhZ21hX3VuZ2V0Yyk6IEZ1bmN0aW9ucyBkZWxldGVkLgoJKGNoZWNrX25ld2xpbmUpOiBSZXdyaXRlIHRvIGJlIGludGVsbGlnZW50IGFib3V0IFVTRV9DUFBMSUIuCglBbHNvLCBjYWxsIEhBTkRMRV9QUkFHTUEgd2l0aCBnZXRjaCwgeXl1bmdldGMsIG5vdCBwcmFnbWFfZ2V0YyBhbmQKCXByYWdtYV91bmdldGMuCgkocmVhbF95eWxleCk6IFJld3JpdGUgdG8gYmUgaW50ZWxsaWdlbnQgYWJvdXQgVVNFX0NQUExJQi4KCUFsc28sIGNsZWFuIHVwIGNhc2VzIHdoZXJlIHdlIHJlZHVuZGFudGx5IHNldCB0b2tlbl9idWZmZXJbMF0uCgkocmVhZF9saW5lX251bWJlcik6IE5ldyBmbi4KCSogaW5wdXQuYyAoZmVlZF9pbnB1dCk6IFVzZSBpbnRlZ3JhdGVkIGNwcGxpYiBpZiBVU0VfQ1BQTElCLgoJKGVuZF9pbnB1dCk6IENhbGwgY3BwX3BvcF9idWZmZXIgaWYgVVNFX0NQUExJQi4KCShzdWJfZ2V0Y2gpOiBDb25kaXRpb25hbGl6ZSBvdXQgY29kZSB0aGF0J3Mgbm90IGFwcHJvcHJpYXRlIGlmCglVU0VfQ1BQTElCLgoJKHB1dF9iYWNrKTogUmV3cml0ZSBpbiBjYXNlIFVTRV9DUFBMSUIgaXMgZGVmaW5lZC4KCShpbnB1dF9yZWRpcmVjdGVkKTogRGl0dG8uCgpUdWUgSnVsIDIwIDExOjI0OjE5IDE5OTkgIEJlcm5kIFNjaG1pZHQgIDxiZXJuZHNAY3lnbnVzLmNvLnVrPgoKCSogY3AtdHJlZS5oOiBEZWxldGUgbG90cyBvZiBkZWNsYXJhdGlvbnMgb2YgdHJlZSBub2RlczsgcmVwbGFjZWQgYnkKCWNfZ2xvYmFsX3RyZWVzIGFuZCBhY2Nlc3NvciBtYWNyb3MgZGVmaW5lZCBpbiBjLWNvbW1vbi5oLgoJKGNwX3RyZWVfaW5kZXgpOiBOZXcgZW51bWVyYXRpb24uCgkoY3BfZ2xvYmFsX3RyZWVzKTogRGVjbGFyZSBuZXcgYXJyYXkuICBBZGQgYWNjZXNzb3IgbWFjcm9zIGZvciBpdCwgYW5kCglkZWxldGUgZGVjbGFyYXRpb25zIG9mIHRyZWUgbm9kZXMgcmVwbGFjZWQgYnkgaXQuCgkoYnVpbHRpbl9mdW5jdGlvbik6IERlbGV0ZSBtYWNybywgYWRkIGRlY2xhcmF0aW9uIGZvciBuZXcgZnVuY3Rpb24uCglJbmNsdWRlIGMtY29tbW9uLmguCgkqIGRlY2wuYzogRGVsZXRlIGRlZmluaXRpb25zIGZvciB0cmVlIG5vZGVzIHRoYXQgd2VyZSByZXBsYWNlZCBieQoJY3BfZ2xvYmFsX3RyZWVzIGFuZCBjX2dsb2JhbF90cmVlcy4KCShpbml0X2RlY2xfcHJvY2Vzc2luZyk6IENhbGwgY19jb21tb25fbm9kZXNfYW5kX2J1aWx0aW5zOyBkZWxldGUgY29kZQoJdG8gZ2VuZXJhdGUgdGhlIGNvbW1vbiBidWlsdGlucyBoZXJlLgoJKGJ1aWx0aW5fZnVuY3Rpb24pOiBOZXcgZnVuY3Rpb24uCgkqIGRlY2wyLmMgKGFib3J0X2ZuZGVjbCk6IERlbGV0ZSBkZWNsYXJhdGlvbi4KCSogZXhjZXB0LmMgKGV4cGFuZF9idWlsdGluX3JldHVybl9hZGRyZXNzKTogRGVsZXRlIGRlY2xhcmF0aW9uLgoJKGJ1aWx0aW5fcmV0dXJuX2FkZHJlc3NfZm5kZWNsKTogRGVsZXRlIHZhcmlhYmxlLgoJKGNvbnN0X3B0cl90eXBlX25vZGUpOiBEZWxldGUgZGVjbGFyYXRpb24uCgkqIGxleC5jIChjb25zX3VwX2RlZmF1bHRfZnVuY3Rpb24pOiBEZWxldGUgZGVjbGFyYXRpb24gb2YKCXZvaWRfbGlzdF9ub2RlLgoJKiBwYXJzZS55ICh2b2lkX2xpc3Rfbm9kZSk6IERlbGV0ZSBkZWNsYXJhdGlvbi4KCSogcnR0aS5jICh0eXBlX2luZm9fdHlwZV9ub2RlLCB0aW5mb19mbl9pZCwgdGluZm9fZm5fdHlwZSk6CglEZWxldGUgdmFyaWFibGVzLgoJKGNvbnN0X3N0cmluZ190eXBlX25vZGUpOiBEZWxldGUgZGVjbGFyYXRpb24uCgkqIHNlYXJjaC5jIChhYm9ydF9mbmRlY2wpOiBEZWxldGUgZGVjbGFyYXRpb24uCgkqIE1ha2VmaWxlLmluOiBVcGRhdGUgZGVwZW5kZW5jaWVzLgoKMTk5OS0wNy0xOSAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIHB0LmMgKGNoZWNrX2RlZmF1bHRfdG1wbF9hcmdzKTogTW92ZSB0ZXN0IGZvciBtaXNzaW5nIGRlZmF1bHQKCWFyZ3VtZW50cyBoZXJlLCBmcm9tIC4uLgoJKGVuZF90ZW1wbGF0ZV9wYXJtX2xpc3QpOiBIZXJlLgoKMTk5OS0wNy0xOCAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGRlY2wuYyAobG9va3VwX25lc3RlZF90eXBlKTogUmVtb3ZlLgoJKHB1c2h0YWcpOiBEb24ndCBjYWxsIGl0LgoKU2F0IEp1bCAxNyAyMzo1MTozMCAxOTk5ICBKZWZmcmV5IEEgTGF3ICAobGF3QGN5Z251cy5jb20pCgoJKiBNYWtlZmlsZS5pbiAoSU5URVJGQUNFKTogQnVtcCB0byAyLgoKMTk5OS0wNy0xNyAgQWxleGFuZHJlIE9saXZhICA8b2xpdmFAZGNjLnVuaWNhbXAuYnI+CgoJKiB0eXBlY2syLmMgKG15X2ZyaWVuZGx5X2Fib3J0KTogVXBkYXRlZCBVUkwgd2l0aCBidWcgcmVwb3J0aW5nCglpbnN0cnVjdGlvbnMgdG8gZ2NjLmdudS5vcmcuICBSZW1vdmVkIGUtbWFpbCBhZGRyZXNzLgoKMTk5OS0wNy0xNyAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIHB0LmMgKGRldGVybWluZV9zcGVjaWFsaXphdGlvbik6IFRpZ2h0ZW4gZXJyb3ItY2hlY2tpbmcuCgkoZW5kX3RlbXBsYXRlX3Bhcm1fbGlzdCk6IExpa2V3aXNlLgoKMTk5OS0wNy0xNCAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIHB0LmMgKGNoZWNrX2RlZmF1bHRfdG1wbF9hcmdzKTogSGFuZGxlIGZyaWVuZHMgZGVmaW5lZCBpbiB0aGUKCWNsYXNzIGp1c3QgbGlrZSBtZW1iZXIgZnVuY3Rpb25zIGRlZmluZWQgaW4gdGhlIGNsYXNzLgoKMTk5OS0wNy0wOSAgTWljaGFlbCBUaWVtYW5uICA8dGllbWFubkBoYXBweS5jeWdudXMuY29tPgoJICAgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIGNwLXRyZWUuaCAoc3RydWN0IGxhbmdfZGVjbCk6IEFkZGVkIGZpZWxkIGZvciBzdG9yaW5nIHNvcnRlZAoJRklFTERfREVDTHMgKHVzZWQgaW4gVFlQRV9ERUNMcykuCgkoREVDTF9QRU5ESU5HX0lOTElORV9JTkZPKTogQWRqdXN0ZWQgdG8gdXNlICd1JyB1bmlvbi4KCShERUNMX1NPUlRFRF9GSUVMRFMpOiBOZXcgbWFjcm8uCgkqIGNsYXNzLmMgKG1ldGhvZF9uYW1lX2NtcCk6IE5ldyBmdW5jdGlvbi4KCShmaW5pc2hfc3RydWN0X21ldGhvZHMpOiBNb2RpZmllZCB0byBzdXBwb3J0IHNvcnRpbmcgYW5kIHNlYXJjaGluZwoJbWV0aG9kcy4KCShmaW5pc2hfc3RydWN0X2Fub24pOiBDaGFuZ2VkIGNvZGUgaW4gaW5uZXIgbG9vcCB0byB1c2UgRUxUIHJhdGhlcgoJdGhhbiBVRUxUICh3aGljaCByZXF1aXJlZCBhbiBleHRyYSBpbmRpcmVjdGlvbiBmb3IgZXZlcnkgcmVmZXJlbmNlKS4KCShmaWVsZF9kZWNsX2NtcCk6IE5ldyBmdW5jdGlvbiB0byBzdXBwb3J0IHNvcnRpbmcgRklFTERfREVDTHMuCgkoZmluaXNoX3N0cnVjdF8xKTogU29ydCBmaWVsZHMuCgkqIHNlYXJjaC5jIChsb29rdXBfZmllbGRfMSk6IFVzZSBERUNMX1NPUlRFRF9GSUVMRFMgaWYgd2UgaGF2ZSB0aGVtLgoJKGxvb2t1cF9mbmZpZWxkc18xKTogU2VhcmNoIHNvcnRlZCBtZXRob2RzIGluIE1FVEhPRF9WRUMuCglBbHNvLCBzd2l0Y2ggdG8gdXNpbmcgYXJyYXkgaW5kZXhpbmcgcmF0aGVyIHRoYW4gYSBjaGFuZ2luZyBwb2ludGVyLgoJKiBwdHJlZS5jIChwcmludF9sYW5nX2RlY2wpOiBIYW5kbGUgVFlQRV9ERUNMcyB0aGF0IGhhdmUKCURFQ0xfU09SVEVEX0ZJRUxEUy4KCjE5OTktMDctMDkgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIGRlY2wyLmMgKHJlcGFyc2VfYWJzZGNsX2FzX2Nhc3RzKTogRG9uJ3Qgd2FybiBhYm91dCBvbGQtc3R5bGUKCWNhc3RzIGluIHN5c3RlbSBoZWFkZXJzIG9yIGV4dGVybiAiQyIgYmxvY2tzLgoKCSogcHQuYyAoZG9fZGVjbF9pbnN0YW50aWF0aW9uKTogRG93bmdyYWRlIGR1cGxpY2F0ZSBpbnN0YW50aWF0aW9uCgllcnJvcnMgdG8gcGVkd2Fybi4KCjE5OTktMDctMDkgIE1pY2hhZWwgVGllbWFubiAgPHRpZW1hbm5AaGFwcHkuY3lnbnVzLmNvbT4KCgkqIGRlY2wyLmMgKHdyaXRlX3ZpcnR1YWxzKTogRGVsZXRlZCBkZWNsYXJhdGlvbi4KCSogY3AtdHJlZS5oICh3cml0ZV92aXJ0dWFscyk6IERlbGV0ZWQgZXh0ZXJuIGRlY2xhcmF0aW9uLgoJKiBjbGFzcy5jIChmaW5pc2hfc3RydWN0XzEpOiBSZW1vdmVkICNpZiAwJ2QgY29kZSB0aGF0IG1lbnRpb25zCgl3cml0ZV92aXJ0dWFscy4KCSogc2VtYW50aWNzLmMgKGJlZ2luX2NsYXNzX2RlZmluaXRpb24pOiBSZXdyaXRlIGNvZGUgdG8gbm90IGRlcGVuZAoJb24gd3JpdGVfdmlydHVhbHMuCgoJKiBsZXguYyAoY3BfcHJhZ21hX2ludGVyZmFjZSk6IE5ldyBmdW5jdGlvbi4KCShjcF9wcmFnbWFfaW1wbGVtZW50YXRpb24pOiBMaWtld2lzZS4KCShoYW5kbGVfY3BfcHJhZ21hKTogQ2FsbCB0aGVtLgoKCSogdHlwZWNrLmMgKGNvbXB0eXBlcyk6IFNpbXBsaWZ5IEMgY29kZSBpbiBsb29rX2hhcmQuCgoJKiB4cmVmLmMgKFBBTExPQyk6IFVzZSB4Y2FsbG9jLCBub3QgY2FsbG9jLgoJKFNBTExPQyk6IFVzZSB4bWFsbG9jLCBub3QgbWFsbG9jLgoKCSogcnR0aS5jIChzeW50aGVzaXplX3RpbmZvX2ZuKTogQWRkIG1pc3NpbmcgY2FsbCB0byBwb3BfbW9tZW50YXJ5LgoKCSogc2VhcmNoLmMgKG5vdGVfZGVidWdfaW5mb19uZWVkZWQpOiBEb24ndCBzZWFyY2ggaWYgV1JJVEVfU1lNQk9MUwoJaXMgTk9fREVCVUcuCgoJKiBkZWNsLmMgKGR1cGxpY2F0ZV9kZWNscyk6IElmIGEgcmVkZWNsYXJhdGlvbiBkb2Vzbid0IG1hdGNoIHRoZQoJaW5pdGlhbCBkZWNsYXJhdGlvbiwgdGhlbiBkb24ndCBzYXZlIHRoZSBpbmxpbmUgaW5mbyBhbmQgYnkgYWxsCgltZWFucyBkb24ndCBtYXJrIHRoZSBmdW5jdGlvbiBhcyBhIGJ1aWx0aW4gZnVuY3Rpb24uCgoJKiBkZWNsLmMgKGxvb2t1cF9uYW1lX3JlYWwpOiBTZXQgTk9OQ0xBU1MgdG8gMSBpZgoJQ1VSUkVOVF9DTEFTU19UWVBFIGlzIDAuCgoJKiBjbGFzcy5jIChkdXBsaWNhdGVfdGFnX2Vycm9yKTogU2V0IFRZUEVfTk9OQ09QSUVEX1BBUlRTIHRvCglOVUxMX1RSRUUuCgoJKiBwdHJlZS5jIChwcmludF9sYW5nX3R5cGUpOiBBZGRlZCB2dGFibGUtbmVlZHMtd3JpdGluZy4KCldlZCBKdWwgIDcgMDE6MjY6NDcgMTk5OSAgQWxleGFuZHJlIE9saXZhICA8b2xpdmFAZGNjLnVuaWNhbXAuYnI+CgoJKiBkZWNsMi5jIChtYXJrX3Z0YWJsZV9lbnRyaWVzKTogRml4IGNoZWNrIGZvciBydHRpIG9mZnNldC4KCjE5OTktMDctMDYgIEdhdmluIFJvbWlnLUtvY2ggIDxnYXZpbkBjeWdudXMuY29tPgoKCSogdHlwZWNrLmMgKHVuc2lnbmVkX3R5cGUsc2lnbmVkX3R5cGUsc2lnbmVkX29yX3Vuc2lnbmVkX3R5cGUpIDoKCU1lcmdlZCBpbnRvIGMtY29tbW9uLgoKMTk5OS0wNy0wNSAgRGF2ZSBCcm9sbGV5ICA8YnJvbGxleUBjeWdudXMuY29tPgoKCSogbGV4LmMgKGVycm9yY291bnQpOiBEZWNsYXJlIGl0LgoJKGZpbmlzaF9wYXJzZSk6IFVwZGF0ZSBlcnJvcmNvdW50IGZvciB3aGVuIHVzaW5nIENQUExJQi4KCjE5OTktMDctMDUgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjcC10cmVlLmggKElTX0FHR1JfVFlQRSk6IEluY2x1ZGUgaW5zdGFudGlhdGVkIHRlbXBsYXRlIHRlbXBsYXRlCglwYXJhbWV0ZXJzLgoJKElNUExJQ0lUX1RZUEVOQU1FX1RZUEVfREVDTF9QKTogTmV3IG1hY3JvLgoJKiBkZWNsLmMgKHB1c2hfY2xhc3NfYmluZGluZyk6IFVzZSBpdC4KCShsb29rdXBfbmFtZV9yZWFsKTogTGlrZXdpc2UuCgoxOTk5LTA3LTAyICBHYXZpbiBSb21pZy1Lb2NoICA8Z2F2aW5AY3lnbnVzLmNvbT4KCgkqIGNwLXRyZWUuaCAod2lkZXN0X2ludGVnZXJfbGl0ZXJhbF90eXBlX25vZGUsCgl3aWRlc3RfdW5zaWduZWRfbGl0ZXJhbF90eXBlKSA6IE5ldy4KCSogZGVjbC5jICh3aWRlc3RfaW50ZWdlcl9saXRlcmFsX3R5cGVfbm9kZSwKCXdpZGVzdF91bnNpZ25lZF9saXRlcmFsX3R5cGUpIDogTmV3LgoJKGluaXRfZGVjbF9wcm9jZXNzaW5nKTogSGFuZGxlL3VzZSB0aGUgdHdvIG5ldyB0eXBlcy4KCSogbGV4LmMgKHJlYWxfeXlsZXgpOiBTYW1lLgoJKiB0eXBlY2suYyAodW5zaWduZWRfdHlwZSxzaWduZWRfdHlwZSxzaWduZWRfb3JfdW5zaWduZWRfdHlwZSkgOgoJU2FtZS4KCjE5OTktMDctMDEgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBkZWNsLmMgKGdyb2tkZWNsYXJhdG9yKTogRG9uJ3QgZ2l2ZSBuYW1lcyAiZm9yIGxpbmthZ2UgcHVycG9zZXMiCgl0byBhbm9ueW1vdXMgY3YtcXVhbGlmaWVkIHR5cGVzLgoKMTk5OS0wNy0wMSAgR2F2aW4gUm9taWctS29jaCAgPGdhdmluQGN5Z251cy5jb20+CgoJKiBsZXguYyAocmVhbF95eWxleCkgOiBDaGFuZ2UgaW50ZWdlciBsaXRlcmFsIG92ZXJmbG93IGhhbmRsaW5nIHRvCgliZSBsaWtlIGMtbGV4LmMuCgoJKiBsZXguYyAocmVhbF95eWxleCk6IEltcHJvdmUgJ2ludGVnZXIgY29uc3RhbnQgb3V0IG9mIHJhbmdlJyBtZXNzYWdlcy4KCjE5OTktMDYtMjggIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgoJKiBkZWNsLmMgKGNwX2ZpbmlzaF9kZWNsKTogRml4IHR5cG8gaW4gY3Bfd2FybmluZ19hdCBjYWxsLgoKMTk5OS0wNi0yOCAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogZXJyb3IuYyAoZHVtcF90eXBlX3JlYWwpOiBIYW5kbGUgVFJFRV9MSVNUIGFnYWluLgoKCSogdHlwZWNrLmMgKGNvbXBfdGFyZ2V0X3Bhcm1zKTogRG9uJ3QgY29tcGxhaW4gYWJvdXQKCWNvbnZlcnRpbmcgZnJvbSAoKSB0byAoLi4uKSBpZiAhZmxhZ19zdHJpY3RfcHJvdG90eXBlLgoKCSogZGVjbC5jIChncm9rZGVjbGFyYXRvcik6IFVwZGF0ZSB0aGUgbmFtZXMgb2YgYWxsIHZhcmlhbnRzIHdoZW4KCWRlLWFub255bWl6aW5nLgoKMTk5OS0wNi0yMSAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGluaXQuYyAoZXhwYW5kX2FnZ3JfdmJhc2VfaW5pdCk6IFJlbmFtZSB0bwoJY29uc3RydWN0X3ZpcnR1YWxfYmFzZXMuICBDb25kaXRpb25hbGl6ZSBjb25zdHJ1Y3Rpb24gaGVyZSwKCXJhdGhlciB0aGFuIC4uLgoJKGVtaXRfYmFzZV9pbml0KTogSGVyZS4KCjE5OTktMDYtMTkgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBzZW1hbnRpY3MuYyAoZmluaXNoX2FzbV9zdG10KTogQXBwbHkgZGVjYXkgY29udmVyc2lvbnMgdG8KCWlucHV0IG9wZXJhbmRzLgoKCSogZGVjbC5jIChleHBhbmRfc3RhdGljX2luaXQpOiBXaGVuIGJ1aWxkaW5nIGFuIGFub255bW91cyBmdW5jdGlvbgoJZm9yIHVzZSB3aXRoIGF0ZXhpdCwgY29tcHV0ZSBpdHMgYm9keSBiZWZvcmUgYW5kIGFmdGVyIGVudGVyaW5nCgl0aGUgZnVuY3Rpb24uCgoJKiBlcnJvci5jIChkdW1wX2V4cHIpOiBIYW5kbGUgQklORF9FWFBSLCBMT09QX0VYUFIsIGFuZAoJRVhJVF9FWFBSLgoKMTk5OS0wNi0xOCAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGluaXQuYyAoZXhwYW5kX2FnZ3JfdmJhc2VfaW5pdCk6IEFkZCBmbGFnIHBhcmFtZXRlci4KCShidWlsZF9wYXJ0aWFsX2NsZWFudXBfZm9yKTogUmVtb3ZlLCBpbmxpbmluZyBpbnRvIC4uCgkoZXhwYW5kX2NsZWFudXBfZm9yX2Jhc2UpOiAuLi4gaGVyZS4gIFRha2UgZmxhZyBwYXJhbWV0ZXIuCgkoZW1pdF9iYXNlX2luaXQpOiBQYXNzIHRoZSBpbl9jaHJnIHBhcmFtZXRlciB0bwoJZW1pdF9hZ2dyX3ZiYXNlX2luaXQuCgkoZW1pdF9hZ2dyX3ZiYXNlX2luaXQpOiBQYXNzIGl0IHRvIGV4cGFuZF9jbGVhbnVwX2Zvcl9iYXNlLgoKMTk5OS0wNi0xNiAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGRlY2wyLmMgKGltcG9ydF9leHBvcnRfZGVjbCk6IFVzZSBzYW1lX3R5cGVfcCwgcmF0aGVyIHRoYW4KCXJlbHlpbmcgb24gcG9pbnRlci1lcXVhbGl0eSBmb3IgdHlwZXMuCgoJKiBtZXRob2QuYyAoZG9fYnVpbGRfY29weV9jb25zdHJ1Y3Rvcik6IFNpbXBsaWZ5LgoKCSogY2FsbC5jIChidWlsZF9tZXRob2RfY2FsbCk6IFJlbW92ZSBib2d1cyBjb2RlIGZvciB0d28tYXJndW1lbnQKCWRlbGV0ZS4KCSogaW5pdC5jIChidWlsZF9uZXdfMSk6IEV4cGFuZCBvbiBjb21tZW50LCBhbmQgcmVtb3ZlIGRlYWQgY29kZS4KCgkqIGluaXQuYyAoZXhwYW5kX2NsZWFudXBfZm9yX2Jhc2UpOiBOZXcgZnVuY3Rpb24sIHNwbGl0IG91dAoJZnJvbSAuLi4KCShlbWl0X2Jhc2VfaW5pdCk6IEhlcmUuCgkoZXhwYW5kX2FnZ3JfdmJhc2VfaW5pdCk6IFVzZSBpdC4KCjE5OTktMDYtMTUgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjcC10cmVlLmggKGNsYXNzX2NhY2hlX2ZpcnN0b2JqKTogRGVjbGFyZS4KCShtYXliZV9wdXNoX2NhY2hlX29ic3RhY2spOiBSZW5hbWUgdG8gcHVzaF9jYWNoZV9vYnN0YWNrLgoJKiBjbGFzcy5jIChwZXJtYW5lbnRfb2JzdGFjayk6IFJlbW92ZSBkZWNsYXJhdGlvbi4KCShjbGFzc19jYWNoZV9maXJzdG9iaik6IE1ha2UgaXQgZ2xvYmFsLgoJKGFkZF9tZXRob2QpOiBEb24ndCB1c2UgcGVybWFuZW50X29ic3RhY2sgZGlyZWN0bHkuCgkocHVzaGNsYXNzKTogT25seSBmcmVlIHRoZSBjbGFzc19jYWNoZV9vYnN0YWNrIGlmIHdlIGtub3cgaG93IGZhcgoJYmFjayB0byBmcmVlIGl0LgoJKG1heWJlX3B1c2hfY2FjaGVfb2JzdGFjayk6IFJlbmFtZSB0byBwdXNoX2NhY2hlX29ic3RhY2suCgkqIGRlY2wuYzogUmVtb3ZlIGRlYWQgY29tbWVudC4KCShzYXZlZF9zY29wZSk6IEFkZCBjbGFzc19jYWNoZV9maXJzdG9iai4KCShwdXNoX3RvX3RvcF9sZXZlbCk6IFNhdmUgaXQuCgkocG9wX2Zyb21fdG9wX2xldmVsKTogUmVzdG9yZSBpdC4KCShwdXNoX2NsYXNzX2xldmVsX2JpbmRpbmcpOiBVc2UgcHVzaF9jYWNoZV9vYnN0YWNrLCBub3QKCW1heWJlX3B1c2hfY2FjaGVfb2JzdGFjay4KCSogc2VhcmNoLmMgKHB1c2hfY2xhc3NfZGVjbHMpOiBMaWtld2lzZS4KCjE5OTktMDYtMTQgIE1hcnRpbiB2b24gTPZ3aXMgIDxsb2V3aXNAaW5mb3JtYXRpay5odS1iZXJsaW4uZGU+CgoJKiBwdC5jICh0c3Vic3RfZnJpZW5kX2Z1bmN0aW9uKTogUHVzaCBpbnRvIG5hbWVzcGFjZSBvZiBmcmllbmQKCWZ1bmN0aW9uIGJlZm9yZSBwdXNoZGVjbCdpbmcgaXQuCgoxOTk5LTA2LTE0ICBOYXRoYW4gU2lkd2VsbCAgPG5hdGhhbkBhY20ub3JnPgoKCSogY2FsbC5jIChidWlsZF9uZXdfb3ApOiBSZW1vdmUgUkVGX0JJTkQgZnJvbSBhbGwgb3BlcmFuZHMuCgoxOTk5LTA2LTEzICBBbGV4YW5kcmUgT2xpdmEgIDxvbGl2YUBkY2MudW5pY2FtcC5icj4KCgkqIGluaXQuYyAoYnVpbGRfbmV3XzEpOiBMb29rIHVwIG9wZXJhdG9yIGRlbGV0ZSBldmVuIGlmIHRoZXJlIHdhcwoJbm8gZXhwbGljaXQgbmV3IHBsYWNlbWVudC4KCjE5OTktMDYtMDggIE5hdGhhbiBTaWR3ZWxsICA8bmF0aGFuQGFjbS5vcmc+CgoJKiBleGNlcHQuYyAoY29tcGxldGVfcHRyX3JlZl9vcl92b2lkX3B0cl9wKTogTmV3IGZ1bmN0aW9uLCBicm9rZW4gb3V0CglvZiAuLi4KCShidWlsZF90aHJvdyk6IC4uLiBoZXJlLiBDYWxsIGl0LgoJKHByb2Nlc3Nfc3RhcnRfY2F0Y2hfYmxvY2spOiBDYWxsIGl0LgoKMTk5OS0wNi0wNyAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIHNlYXJjaC5jIChjb252ZXJ0X3BvaW50ZXJfdG9fc2luZ2xlX2xldmVsKTogUmVpbXBsZW1lbnQgd2l0aG91dAoJdXNpbmcgZ2V0X2JpbmZvLgoKMTk5OS0wNi0wNiAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIG1ldGhvZC5jIChpc19iYWNrX3JlZmVyZW5jZWFibGVfdHlwZSk6IEJhY2stcmVmZXJlbmNlIGJvb2xzIHdoZW4KCW5vdCBzcXVhbmdsaW5nLgoKMTk5OS0wNi0wNyAgRGF2ZSBCcm9sbGV5ICA8YnJvbGxleUBjeWdudXMuY29tPgoKCSogbGV4LmMgKHJlYWxfeXlsZXgpOiBSZXBsYWNlIHVudXNlZCBieXRlcyBmcm9tIGJhZCBtdWx0aWJ5dGUgY2hhci4KCSogaW5wdXQuYyAocHV0YmFja19idWZmZXIpOiBOZXcgc3RydWN0dXJlIHR5cGUuCgkocHV0YmFjayk6IFJlcGxhY2VzIHB1dGJhY2tfY2hhciBtZW1iZXIuCgkocHV0YmFjayk6IFJlcGxhY2VzIHB1dGJhY2tfY2hhciBzdGF0aWMgdmFyaWFibGUuCgkoZmVlZF9pbnB1dCk6IFVzZSBwdXRiYWNrLgoJKGVuZF9pbnB1dCk6IFVzZSBwdXRiYWNrLgoJKHN1Yl9nZXRjaCk6IFVzZSBwdXRiYWNrLgoJKHB1dF9iYWNrKTogVXNlIHB1dGJhY2suCgoxOTk5LTA2LTA1ICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogZGVjbC5jIChncm9rZGVjbGFyYXRvcik6IEZpeCB0eXBvIGluIGxhc3QgY2hhbmdlLgoKMTk5OS0wNi0wNCAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogc2VtYW50aWNzLmMgKGZpbmlzaF9pZl9zdG10X2NvbmQpOiBDb3B5IGNvbmQgdG8gcGVybWFuZW50X29ic3RhY2suCgkoZmluaXNoX3doaWxlX3N0bXRfY29uZCwgZmluaXNoX2RvX3N0bXQsIGZpbmlzaF9mb3JfY29uZCk6IExpa2V3aXNlLgoKMTk5OS0wNi0wNCAgTmF0aGFuIFNpZHdlbGwgIDxuYXRoYW5AYWNtLm9yZz4KCgkqIGV4Y2VwdC5jIChidWlsZF90aHJvdyk6IENoZWNrIHRocm93IGV4cHJlc3Npb24gdmFsaWRpdHkuCgoxOTk5LTA2LTAzICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogZGVjbC5jIChncm9rZGVjbGFyYXRvcik6IERvbid0IHRyZWF0IGFyYml0cmFyeSB0eXBlcyBhcyB1bnNpZ25lZAoJanVzdCBiZWNhdXNlIGZsYWdfc2lnbmVkX2JpdGZpZWxkcyBpcyBmYWxzZS4KCjE5OTktMDYtMDMgIE5hdGhhbiBTaWR3ZWxsICA8bmF0aGFuQGFjbS5vcmc+CgoJKiBzZW1hbnRpY3MuYyAoYmVnaW5fY2xhc3NfZGVmaW5pdGlvbik6IFVwZGF0ZSB0aGUgc3RydWN0J3MKCWxvY2F0aW9uIGhlcmUgLi4uCgkqIGNsYXNzLmMgKGZpbmlzaF9zdHJ1Y3QpOiAuLi4gcmF0aGVyIHRoYW4gaGVyZS4KCgkqIGRlY2wuYyAobWFrZV90eXBlbmFtZV90eXBlKTogRG9uJ3QgcmVseSBvbiB1bmluaXRpYWxpemVkCgl2YXJpYWJsZS4KCjE5OTktMDUtMzEgIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIE1ha2VmaWxlLmluIChBTExfQ0ZMQUdTKTogQWRkICctVyAtV2FsbCcuCgoxOTk5LTA1LTMxICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogdHJlZS5jIChidWlsZF9jcGx1c19hcnJheV90eXBlXzEpOiBVc2UgcHVzaF9vYnN0YWNrc19ub2NoYW5nZQoJYW5kIGZyaWVuZHMgcmF0aGVyIHRoYW4gbWVzc2luZyB3aXRoIGN1cnJlbnRfb2JzdGFjayBkaXJlY3RseS4KCShjcF9idWlsZF9xdWFsaWZpZWRfdHlwZV9yZWFsKTogUmV3b3JrIEFSUkFZX1RZUEUKCWFsbG9jYXRpb24gdG8gbWF0Y2ggcHJhY3RpY2UgdGhyb3VnaG91dCB0aGUgcmVzdCBvZiB0aGUKCWNvbXBpbGVyLgoKMTk5OS0wNS0zMCAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGxleC5jIChtYWtlX2xhbmdfdHlwZSk6IENyZWF0ZSBUWVBFX0JJTkZPIGZvcgoJVEVNUExBVEVfVFlQRV9QQVJNcyBqdXN0IGxpa2UgZm9yIG5vbi10ZW1wbGF0ZSB0eXBlcy4KCgkqIGRlY2wuYyAoc3RhcnRfZGVjbCk6IE1vdmUgY2hlY2tzIG9uIGluaXRpYWxpemF0aW9uIHRvIC4uLgoJKGNwX2ZpbmlzaF9kZWNsKTogSGVyZS4gIFRpZHkgZm9ybWF0dGluZyBzbGlnaHRseS4KCjE5OTktMDUtMjggIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBkZWNsLmMgKGFkZF9iaW5kaW5nKTogRG9uJ3QgY29tcGxhaW4gYWJvdXQgYSByZWRlY2xhcmF0aW9uIG9mIGEKCXNlbWFudGljYWxseSBpZGVudGljYWwgdHlwZWRlZiBpbiBhIGxvY2FsIHNjb3BlLgoKMTk5OS0wNS0yOCAgTmF0aGFuIFNpZHdlbGwgIDxuYXRoYW5AYWNtLm9yZz4KCgkqIGRlY2wuYyAoY29tcGxldGVfYXJyYXlfdHlwZSk6IEFsbG9jYXRlIG9mZiBzYW1lIG9ic3RhY2suIEZpeAoJRE9fREVGQVVMVCBjb21tZW50IHRvIG1hdGNoIHJlYWxpdHkuCgoJKiBmcmllbmQuYyAobWFrZV9mcmllbmRfY2xhc3MpOiBGaXggZGlhZ25vc3RpYyB0eXBvLgoKMTk5OS0wNS0yOCAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGRlY2wuYyAobG9va3VwX25hbWVzcGFjZV9uYW1lKTogSGFuZGxlIGdldHRpbmcgYQoJVEVNUExBVEVfSURfRVhQUi4KCShleHBhbmRfc3RhdGljX2luaXQpOiBEb24ndCBjYWxsIHB1c2hkZWNsIGZvciBpbXBsaWNpdGx5IGRlY2xhcmVkCglgYXRleGl0JyB1c2VkIHRvIHJlZ2lzdGVyIGRlc3RydWN0b3JzLgoKMTk5OS0wNS0yNSAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGNsYXNzLmMgKGZpbmlzaF92dGJscyk6IENvcHkgQklORk9fVklSVFVBTHMgYmVmb3JlIHVzaW5nIGl0IHRvCglpbml0aWFsaXplIGEgdnRhYmxlLgoKCSogY3AtdHJlZS5oIChOQU1FU1BBQ0VfTEVWRUwpOiBSZWZvcm1hdC4KCShsYW5nX2RlY2xfZmxhZ3MpOiBEb2N1bWVudCBNRU1GVU5DX1BPSU5URVJfVE8uICBTYXZlIGZvdXIgYnl0ZXMKCWJ5IGNvbWJpbmluZyBURU1QTEFURV9JTkZPIGFuZCBMRVZFTCBpbnRvIGEgc2luZ2xlIHVuaW9uLgoJKERFQ0xfVEVNUExBVEVfSU5GTyk6IFJlZm9ybWF0LgoJKERFQ0xfU0FWRURfVFJFRSk6IERvY3VtZW50LgoJKERFQ0xfVEVNUExBVEVfSU5KRUNUKTogUmVtb3ZlLgoJKiBjbGFzcy5jIChmaW5pc2hfc3RydWN0KTogUmVtb3ZlIGNvZGUgdG8gZGVhbCB3aXRoCglERUNMX1RFTVBMQVRFX0lOSkVDVC4KCgkqIGRlY2wuYyAobWF5YmVfcHJvY2Vzc190ZW1wbGF0ZV90eXBlX2RlY2xhcmF0aW9uKTogSGFuZGxlIGFsbCBuZXcKCXR5cGVzIGluIHRlbXBsYXRlcyB1bmlmb3JtbHkuCgkqIG1ldGhvZC5jIChidWxpZF9vdmVybG9hZF9pZGVudGlmaWVyKTogVXNlIENQX0RFQ0xfQ09OVEVYVCwgbm90CglERUNMX0NPTlRFWFQuCgkqIHB0LmMgKGxvb2t1cF90ZW1wbGF0ZV9jbGFzcyk6IEluamVjdCB0ZW1wbGF0ZSBpbnN0YW50aWF0aW9ucyBvZgoJZm9yd2FyZC1kZWNsYXJhdGlvbnMuCgkoaW5zdGFudGlhdGVfY2xhc3NfdGVtcGxhdGUpOiBSZW1vdmUgY29kZSBwcm9jZXNzaW5nCglERUNMX1RFTVBMQVRFX0lOSkVDVC4KCgkqIHB0LmMgKGxvb2t1cF90ZW1wbGF0ZV9jbGFzcyk6IFR3ZWFrIGxvb2t1cCB0byBmaW5kIG1lbWJlcgoJdGVtcGxhdGVzLgoKCSogcHQuYyAodHN1YnN0X2V4cHIsIGNhc2UgQVNNX1NUTVQpOiBEb24ndCB0c3Vic3QgaW50bwoJQVNNX0NWX1FVQUwuCgkqIHNlbWFudGljcy5jIChmaW5pc2hfYXNtX3N0bXQpOiBNYWtlIHN0cmluZ3MgcGVybWFuZW50IGlmIHRoZXkncmUKCXVzZWQgaW4gYSB0ZW1wbGF0ZS4KCjE5OTktMDUtMjUgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIHR5cGVjay5jIChjYXN0c19hd2F5X2NvbnN0bmVzcywgY2FzdHNfYXdheV9jb25zdG5lc3Nfcik6IFN0cmlwIGJvdGgKCXBhcnRzIG9mIHBvaW50ZXIgdG8gZGF0YSBtZW1iZXIgdHlwZXMuCgoxOTk5LTA1LTI0ICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogZGVjbDIuYyAobWFya192dGFibGVfZW50cmllcyk6IERvbid0IG1ha2UgYSBjb3B5IG9mIGEgZnVuY3Rpb24sCglhbmQgdGhlbiBtYWtlIGl0IGxvb2sgbGlrZSBgYWJvcnQnLiAgSnVzdCB1c2UgYGFib3J0JyBpbnN0ZWFkLgoKCSogdHlwZWNrLmMgKGJ1aWxkX3N0YXRpY19jYXN0KTogRG9uJ3QgYWxsb3cgc3RhdGljX2Nhc3RzIHRoYXQgY2FzdAoJYXdheSBjb25zdG5lc3MuCgkoY2FzdHNfYXdheV9jb25zdG5lc3Nfcik6IE5ldyBmdW5jdGlvbi4KCShjYXN0c19hd2F5X2NvbnN0bmVzcyk6IExpa2V3aXNlLgoKCSogZGVjbC5jIChsb29rdXBfdGFnKTogUmVtb3ZlIGNvZGUgbm8gbG9uZ2VyIG5lZWRlZCBhZnRlcgoJbmFtZS1sb29rdXAgaW1wcm92ZW1lbnRzLgoJKiBkZWNsMi5jIChoYW5kbGVfY2xhc3NfaGVhZCk6IE1ha2UgZXJyb3ItcmVjb3ZlcnkgbW9yZSByb2J1c3QuCgkqIGZyaWVuZC5jIChtYWtlX2ZyaWVuZF9jbGFzcyk6IFJlamVjdCB0ZW1wbGF0ZWQgdHlwZW5hbWUgdHlwZXMuCgkqIGxleC5jIChpc19nbG9iYWwpOiBBIHRlbXBsYXRlIHBhcmFtZXRlciBpc24ndCBnbG9iYWwuCgkqIHBhcnNlLnkgKGNsYXNzX2hlYWQpOiBSb2J1c3RpZnkuCgkqIHBhcnNlLmM6IFJlZ2VuZXJhdGVkLgoKMTk5OS0wNS0yMiAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIHB0LmMgKGZvcl9lYWNoX3RlbXBsYXRlX3Bhcm0pOiBXYWxrIGludG8gVFlQRU5BTUVfVFlQRXMsCglJTkRJUkVDVF9SRUZzLCBhbmQgQ09NUE9ORU5UX1JFRnMuICBIYW5kbGUgRklFTERfREVDTHMuCgoJKiBjcC10cmVlLmggKHB1c2hfbmVzdGVkX25hbWVzcGFjZSk6IERlY2xhcmUuCgkocG9wX25lc3RlZF9uYW1lc3BhY2UpOiBMaWtld2lzZS4KCSogZGVjbC5jIChwdXNoX25lc3RlZF9uYW1lc3BhY2UpOiBOZXcgZnVuY3Rpb24uCgkocG9wX25lc3RlZF9uYW1lc3BhY2UpOiBMaWtld2lzZS4KCSogcHQuYyAoaW5zdGFudGlhdGVfY2xhc3NfdGVtcGxhdGUpOiBVc2UgdGhlbS4KCgkqIHRyZWUuYyAobWFwY2FyKTogSGFuZGxlIE5PTl9MVkFMVUVfRVhQUi4KCgkqIGNwLXRyZWUuaCAoY3BsdXNfZXhwYW5kX2NvbnN0YW50KTogRGVjbGFyZS4KCSogY3Z0LmMgKGNvbnZlcnRfdG9fcG9pbnRlcik6IEV4cGFuZCBQVFJNRU1fQ1NUcyB3aGVuIHRoZXkncmUKCWNvbnZlcnRlZCBmcm9tIG9uZSBwb2ludGVyLXRvLW9iamVjdCB0eXBlIHRvIGFub3RoZXIuCgkqIGV4cHIuYyAoY3BsdXNfZXhwYW5kX2NvbnN0YW50KTogRG9uJ3QgbWFrZSBpdCBzdGF0aWMuCgkqIHR5cGVjay5jIChidWlsZF9jb21wb25lbnRfcmVmKTogRG9uJ3QgY3Jhc2ggd2hlbiBwcmVzZW50ZWQgd2l0aAoJYSBjb21wb25lbnQgd2hpY2ggaXMgYSBURU1QTEFURV9ERUNMLgoJKGJ1aWxkX3B0cm1lbWZ1bmMpOiBUaWR5LiAgQ2xhcmlmeSBjb21tZW50LiAgTWFrZSBzdXJlIHRoYXQgZXZlbiBhCgljYXN0IGZyb20gYSBwb2ludGVyLXRvLW1lbWJlciBjb25zdGFudCB0byBpdHMgb3duIHR5cGUgZG9lcyBub3QKCXJlc3VsdCBpbiBhIHZhbGlkIG5vbi10eXBlIHRlbXBsYXRlIGFyZ3VtZW50LgoKMTk5OS0wNS0yMSAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCSAgICBOYXRoYW4gU2lkd2VsbCAgPG5hdGhhbkBhY20ub3JnPgoKCSogTWFrZS1sYW5nLmluIChjYzFwbHVzKTogTWFrZSBpdCBkZXBlbmQgb24gZ3h4LmdwZXJmLgoJKiBjcC10cmVlLmg6IEZpeCB0eXBvIGluIGRvY3VtZW50YXRpb24gb24gcG9pbnRlcnMtdG8tbWVtYmVycy4KCShjcF9idWlsZF9xdWFsaWZpZWRfdHlwZSk6IE1ha2UgaXQgYSBtYWNyby4KCShjcF9idWlsZF9xdWFsaWZpZWRfdHlwZV9yZWFsKTogRGVjbGFyZS4KCSogZGVjbC5jIChncm9rZGVjbGFyYXRvcik6IFJlbW92ZSBtaXNsZWFkaW5nIGNvbW1lbnQuICBBdm9pZAoJcHJvYmxlbSB3aXRoIHRlbXBsYXRlIHBhcmFtZXRlcnMgYW5kIHJlc3RyaWN0LXF1YWxpZmljYXRpb24uCgkqIGd4eC5ncGVyZjogUmVwbGFjZSBOT1JJRCB3aXRoIFJJRF9VTlVTRUQgdGhyb3VnaG91dC4KCSogaGFzaC5oOiBSZWdlbmVyYXRlZC4KCSogbGV4LmggKHJpZCk6IE1vdmUgUklEX0ZJUlNUX01PRElGSUVSIGFuZCBSSURfTEFTVF9NT0RJRklFUiBpbnRvCgl0aGUgZW51bWVyYXRpb24uCgkoTk9SSUQpOiBSZW1vdmUgZGVmaW5pdGlvbi4KCSogcHQuYyAodHN1YnN0X2FnZ3JfdHlwZSk6IFVzZSBjcF9idWlsZF9xdWFsaWZpZWRfdHlwZV9yZWFsLgoJKHRzdWJzdCk6IExpa2V3aXNlLiAgUmVtb3ZlIHNwZWNpYWwgaGFuZGxpbmcgZm9yIEZVTkNUSU9OX1RZUEVzLgoJKGZuX3R5cGVfdW5pZmljYXRpb24pOiBDaGVjayB0aGF0IHRoZSBmdW5jdGlvbiB0eXBlIHJlc3VsdGluZyBmcm9tCgl0aGUgZGVkdWN0aW9uIGlzIGxlZ2FsLgoJKGNoZWNrX2N2X3F1YWxzX2Zvcl91bmlmeSk6IERvbid0IGhhbmRsZSBGVU5DVElPTl9UWVBFcyBzcGVjaWFsbHkuCgkodW5pZnkpOiBVc2UgY3BfYnVpbGRfcXVhbGlmaWVkX3R5cGVfcmVhbC4KCSogdHJlZS5jIChidWlsZF9jcGx1c19hcnJheV90eXBlXzEpOiBIYW5kbGUgZXJyb3JfbWFya3MgYXMgaW5wdXRzLgoJKGNwX2J1aWxkX3F1YWxpZmllZF90eXBlKTogUmVuYW1lIHRvIC4uLgoJKGNwX2J1aWxkX3F1YWxpZmllZF90eXBlX3JlYWwpOiBBZGQgYWRkaXRpb25hbCBDT01QTEFJTiBwYXJhbWV0ZXIKCWFuZCBtb2RpZnkgYXBwcm9wcmlhdGVseS4KCgkqIHR5cGVjay5jIChidWlsZF9wdHJtZW1mdW5jKTogSGFuZGxlIFBUUk1FTV9DU1RzIGNhcmVmdWxseSB0bwoJcmV2ZWFsIG9wdGltaXphdGlvbiBvcHBvcnR1bml0aWVzLgoKCSogcHQuYyAodHN1YnN0KTogRG9uJ3QgaXNzdWUgZXJyb3IgbWVzc2FnZXMgd2hlbiB3ZSdyZSBub3QKCWNvbXBsYWluaW5nLCBldmVuIGlmIHdlIHNlZSBhIHF1YWxpZmllZCBmdW5jdGlvbiB0eXBlLgoJKGNoZWNrX2N2X3F1YWxzX2Zvcl91bmlmeSk6IERvbid0IGFsbG93IGEgcXVhbGlmaWVkIGZ1bmN0aW9uCgl0eXBlLgoKMTk5OS0wNS0yMCAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogY2xhc3MuYyAoaW5zdGFudGlhdGVfdHlwZSk6IERvd25ncmFkZSBlcnJvcnMgZm9yIG9iamVjdC1kZXBlbmRlbnQKCW1lbWZuIHJlZnMgdG8gcGVkd2Fybi4KCjE5OTktMDUtMjAgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBkZWNsLmMgKGdyb2tkZWNsYXJhdG9yKTogRG9uJ3QgdHJlYXQgW10gYXMgaW5kaWNhdGluZyBhCgl6ZXJvLXNpemVkIGFycmF5IGluIGEgdHlwZWRlZi4KCgkqIGNhbGwuYyAoYnVpbGRfb2JqZWN0X2NhbGwpOiBEb24ndCBsb29rIGF0IERFQ0xfTkFNRSBmb3IgYSB0eXBlLgoJKHB0LmMpOiBPciBDUF9UWVBFX1FVQUxTIGZvciBhbiBFUlJPUl9NQVJLLgoJKHR5cGVjay5jKTogT3IgVFlQRV9NQUlOX1ZBUklBTlQgZm9yIGEgdHlwZS4KCgkqIHB0LmMgKGZvcl9lYWNoX3RlbXBsYXRlX3Bhcm0pOiBSZXdvcmsgdG8gbWF0Y2ggZG9jdW1lbnRhdGlvbi4KCURvbid0IGJlIGZvb2xlZCBieSBhIENPTVBPTkVOVF9SRUYgd2l0aCBubyBUUkVFX1RZUEUuCgoxOTk5LTA1LTIwICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBjbGFzcy5jIChmaW5pc2hfc3RydWN0XzEpOiBTdGlsbCBjaGVjayBmb3IgQU5PTl9BR0dSX1RZUEVfUC4KCgkqIGNsYXNzLmMgKGZpbmlzaF9iYXNlX3N0cnVjdCk6IEFsbG93IG5vbi1DT00gYmFzZXMgZm9yIENPTSBjbGFzc2VzCglleGNlcHQgYXQgdGhlIGxlZnRtb3N0IHBvc2l0aW9uLgoJKG1vZGlmeV9vbmVfdnRhYmxlLCBmaXh1cF92dGFibGVfZGVsdGFzMSwgb3ZlcnJpZGVfb25lX3Z0YWJsZSk6CglQYXNzIHRoZSBiaW5mbydzIGNsYXNzLCBub3QgdGhlIG1vc3QgZGVyaXZlZCwgdG8gc2tpcF9ydHRpX3N0dWZmLgoJKiBzZWFyY2guYyAoZ2V0X2Fic3RyYWN0X3ZpcnR1YWxzLCBleHBhbmRfdXBjYXN0X2ZpeHVwcyk6IExpa2V3aXNlLgoKCSogdHJlZS5jIChsdmFsdWVfcF8xKTogQSBOT1BfRVhQUiBjYW4gYmUgYW4gbHZhbHVlLgoJKGJ1aWxkX2NwbHVzX25ldyk6IE1ha2Ugc3VyZSB0aGF0IHdoYXQgd2UgcmV0dXJuIGlzIG9mIHRoZSByaWdodCB0eXBlLgoKMTk5OS0wNS0yMCAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGNwLXRyZWUuaCAobWFrZV9wdHJtZW1fY3N0KTogTmV3IGZ1bmN0aW9uLgoJKiBleHByLmMgKGNwbHVzX2V4cGFuZF9jb25zdGFudCk6IFNwbGl0IG91dCBmcm9tIC4uLgoJKGNwbHVzX2V4cGFuZF9leHByKTogSGVyZS4gIFVzZSBjcGx1c19leHBhbmRfY29uc3RhbnQuCgkoaW5pdF9jcGx1c19leHBhbmQpOiBTZXQgbGFuZ19leHBhbmRfY29uc3RhbnQuCgkqIHB0LmMgKGNvbnZlcnRfbm9udHlwZV9hcmd1bWVudCk6IFVzZSBtYWtlX3B0cm1lbV9jc3QuCgoJKiB0cmVlLmMgKG1ha2VfcHRybWVtX2NzdCk6IERlZmluZS4KCSogdHlwZWNrLmMgKHVuYXJ5X2NvbXBsZXhfbHZhbHVlKTogVXNlIG1ha2VfcHRybWVtX2NzdC4KCSogdHlwZWNrMi5jIChpbml0aWFsaXplcl9jb25zdGFudF92YWxpZF9wKTogVXNlIG1ha2VfcHRybWVtX2NzdC4KCjE5OTktMDUtMTkgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBwdC5jIChidWlsZF90ZW1wbGF0ZV9kZWNsKTogQ29weSBERUNMX05PTkNPTlZFUlRJTkdfUC4KCgkqIGRlY2wyLmMgKHN0YXJ0X3N0YXRpY19zdG9yYWdlX2R1cmF0aW9uX2Z1bmN0aW9uKTogRml4IGNvbW1lbnQuCgkoZmluaXNoX2ZpbGUpOiBDcmVhdGUgc3RhdGljIHN0b3JhZ2UgZHVyYXRpb24gZnVuY3Rpb25zIGxhemlseS4KCjE5OTktMDUtMTkgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCglJbXBsZW1lbnQgYW5vbnltb3VzIHN0cnVjdHMuCgkqIGNwLXRyZWUuaCAoQU5PTl9BR0dSX1RZUEVfUCk6IFJlbmFtZSBmcm9tIEFOT05fVU5JT05fVFlQRV9QLgoJKiBjbGFzcy5jLCBkZWNsLmMsIGRlY2wyLmMsIGluaXQuYywgcHQuYywgc2VhcmNoLmMsIHR5cGVjay5jOiBBZGp1c3QuCgkqIGNsYXNzLmMgKGZpbmlzaF9zdHJ1Y3RfMSk6IFJlbW92ZSByZWR1bmRhbnQgY2hlY2sgZm9yIGFub24gc3RydWN0LgoJKiBkZWNsLmMgKGZpeHVwX2Fub255bW91c19hZ2dyKTogUmVuYW1lZCBmcm9tIGZpeHVwX2Fub255bW91c191bmlvbi4KCShjaGVja190YWdfZGVjbCk6IENoZWNrIGZvciBhbm9ueW1vdXMgc3RydWN0IGhlcmUuCgkqIGRlY2wyLmMgKGJ1aWxkX2Fub25fdW5pb25fdmFycyk6IENhdGNoIGFub24gc3RydWN0IGF0IGZpbGUgc2NvcGUuCgkqIGluaXQuYyAoc29ydF9tZW1iZXJfaW5pdCwgZW1pdF9iYXNlX2luaXQpOiBIYW5kbGUgZ2V0dGluZyBmaWVsZHMKCWFzIHdlbGwgYXMgbmFtZXMgaW4gY3VycmVudF9tZW1iZXJfaW5pdF9saXN0LgoJKHBlcmZvcm1fbWVtYmVyX2luaXQpOiBIYW5kbGUgZ2V0dGluZyBhbiBhbm9uIGFnZ3IuCgkqIG1ldGhvZC5jIChkb19idWlsZF9hc3NpZ25fcmVmKTogRG9uJ3QgZGVzY2VuZCBpbnRvIGFub24gYWdncnMuCgkoZG9fYnVpbGRfY29weV9jb25zdHJ1Y3Rvcik6IExpa2V3aXNlLgoKMTk5OS0wNS0xOSAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIHRyZWUuYyAoY3BfYnVpbGRfcXVhbGlmaWVkX3R5cGUpOiBEb24ndCBhbGxvdyBxdWFsaWZpZWQgZnVuY3Rpb24KCXR5cGVzLgoKV2VkIE1heSAxOSAwMjo1MDo1MyAxOTk5ICBBcnZpbmQgU2Fua2FyIDxhcnZpbmRzQG1pdC5lZHU+CgoJKiBneHhpbnQudGV4aTogRml4IHR5cG8uCgoxOTk5LTA1LTE5ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBjYWxsLmMgKGZpbmRfc2NvcGVkX3R5cGUsIHJlc29sdmVfc2NvcGVfdG9fbmFtZSk6IExvc2UuCgkqIGNsYXNzLmMgKGZpbmlzaF9zdHJ1Y3RfMSk6IFVzZSBDTEFTU19UWVBFX1AuCgkqIHB0cmVlLmMgKHByaW50X2xhbmdfdHlwZSk6IExpa2V3aXNlLgoJKiB0eXBlY2suYyAoYnVpbGRfbW9kaWZ5X2V4cHIsIGNfZXhwYW5kX2FzbV9vcGVyYW5kcyk6IFVzZQoJSVNfQUdHUl9UWVBFX0NPREUuCgkqIHR5cGVjazIuYyAoZGlnZXN0X2luaXQpOiBMaWtld2lzZS4KCjE5OTktMDUtMTggIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIGNhbGwuYyAoam91c3QpOiBDb21wYXJlIHRoZSB0eXBlcyBvZiB0aGUgY29udiBvcHMsIG5vdCB0aGUKCXRhcmdldCB0eXBlcyBvZiB0aGUgY29udmVyc2lvbnMuCgpUdWUgTWF5IDE4IDAwOjIxOjM0IDE5OTkgIFphY2sgV2VpbmJlcmcgIDx6YWNrQHJhYmkucGh5cy5jb2x1bWJpYS5lZHU+CgoJKiBsYW5nLXNwZWNzLmg6IERlZmluZSBfX0dOVUNfXyBhbmQgX19HTlVDX01JTk9SX18gb25seSBpZiAtbm8tZ2NjCgl3YXMgbm90IGdpdmVuLgoKMTk5OS0wNS0xNyAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGNwLXRyZWUuZGVmIChURU1QTEFURV9JRF9FWFBSKTogVXBkYXRlIGRvY3VtZW50YXRpb24uCgkqIGRlY2wuYyAoZ3Jva2ZuZGVjbCk6IERvbid0IGFsbG93IGlubGluZSBkZWNsYXJhdGlvbnMgb2YgZnJpZW5kCgl0ZW1wbGF0ZSBzcGVjaWFsaXphdGlvbnMsIG9yIGZyaWVuZCB0ZW1wbGF0ZSBzcGVjaWFsaXphdGlvbnMgd2l0aAoJZGVmYXVsdCBhcmd1bWVudHMuCgkqIHB0LmMgKHRzdWJzdCk6IEhhbmRsZSBzdWJzdGl0dXRpb24gaW50byBhcnJheSB0eXBlcyB0aGF0IGRvZXMKCW5vdCB5aWVsZCBhIGZpeGVkIHVwcGVyIGJvdW5kLCBldmVuIHdoZW4gbm90IHByb2Nlc3NpbmcgYQoJdGVtcGxhdGUuCgkodHN1YnN0X2NvcHkpOiBEZWFsIHdpdGggdGhlIGZhY3QgdGhhdCB0aGUgc2Vjb25kIG9wZXJhbmQgdG8gYQoJVEVNUExBVEVfSURfRVhQUiBtYXkgYmUgTlVMTF9UUkVFLCBhIFRSRUVfTElTVCwgb3IgYSBUUkVFX1ZFQy4KCSogc2VhcmNoLmMgKG1hcmtlZF9wdXNoZGVjbHNfcCk6IERvbid0IGRlc2NlbmQgaW50bwoJVEVNUExBVEVfVFlQRV9QQVJNcyBhbmQgdGhlIGxpa2UuCgkodW5tYXJrZWRfcHVzaGRlY2xzX3ApOiBMaWtld2lzZS4KCgkqIGNhbGwuYyAoYnVpbGRfb3Zlcl9jYWxsKTogRG9uJ3QgdGhyb3cgYXdheQoJaW5pdGlhbGl6YXRpb25zL2NvcGllcyBvZiBlbXB0eSBjbGFzc2VzOyB1c2UgTU9ESUZZX0VYUFIgYW5kCglJTklUX0VYUFIgYXMgZm9yIG5vbi1lbXB0eSBjbGFzc2VzLgoJKiBjbGFzcy5jIChmaW5pc2hfc3RydWN0XzEpOiBQdXQgdGhlIHBhZGRpbmcgYnl0ZSBmb3IgYW4gZW1wdHkKCWNsYXNzIG9uIHRoZSBUWVBFX05PTkNPUElFRF9QQVJUUyBsaXN0IGZvciB0aGUgY2xhc3MuCgoxOTk5LTA1LTE2ICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogZGVjbDIuYyAoYnVpbGRfZXhwcl9mcm9tX3RyZWUpOiBIYW5kbGUgQ09NUE9ORU5UX1JFRnMgdGhhdAoJaW5kaWNhdGUgYSByZWZlcmVuY2UgdG8gYSBmaWVsZCB0aGF0IGlzIGEgcXVhbGlmaWVkIG5hbWUuCgoxOTk5LTA1LTE2ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBkZWNsMi5jIChmaW5pc2hfb2JqZWN0cyk6IERvbid0IHVzZSAuP3RvcnMuKiBpZiB3ZSBkb24ndCBoYXZlCglBU01fT1VUUFVUX0NPTlNUUlVDVE9SLgoKCSogZnJpZW5kLmMgKGRvX2ZyaWVuZCk6IEFkZCBhdHRybGlzdCBhcmcuICBSZW1vdmUgc3VwcG9ydCBmb3IKCWdldHRpbmcgYSBub24tZGVjbCBhcyAnZGVjbCcuCgkqIGRlY2wuYyAoZ3Jva2ZuZGVjbCk6IFJlbW92ZSBhdHRybGlzdCBhcmcuICBEb24ndCBzZXQgYXR0cnMgb3IKCXJ0bC4KCShncm9rZGVjbGFyYXRvcik6IEFkanVzdC4KCSogY3AtdHJlZS5oOiBBZGp1c3QuCgoxOTk5LTA1LTE2ICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogY3AtdHJlZS5oIChwZXJtYW5lbnRfcCk6IE5ldyBmdW5jdGlvbi4KCSogaW5pdC5jIChidWlsZF9uZXdfMSk6IFVzZSBtYXBjYXIsIG5vdCBjb3B5X25vZGUsIHRvIGNvcHkgYQoJcG9zc2libHkgY29tcGxleCB0cmVlIG5vZGUuCgkqIHRyZWUuYyAobWFwY2FyKTogQWRqdXN0IGNvbW1lbnRzLCBhbmQgZm9sbG93IGNvZGluZyBzdGFuZGFyZHMgaW4KCWNvbmRpdGlvbmFsLgoJKHBlcm1hbmVudF9wKTogTmV3IGZ1bmN0aW9uLgoKMTk5OS0wNS0xMyAgUGVyIEJvdGhuZXIgIDxib3RobmVyQGN5Z251cy5jb20+CgoJKiBjbGFzcy5jIChwdXNoX2xhbmdfY29udGV4dCk6ICBUdXJuIG9mZiBERUNMX0lHTk9SRURfUCBmb3IKCXByaW1pdGl2ZSBKYXZhIHR5cGVzLCBpZiB3ZSBhY3R1YWxseSBzZWUgYGV4dGVybiAiSmF2YSInLgoKMTk5OS0wNS0xMCAxODoyMSAtMDQwMCAgWmFjayBXZWluYmVyZyAgPHphY2tAcmFiaS5waHlzLmNvbHVtYmlhLmVkdT4KCgkqIGxhbmctc3BlY3MuaDogUGFzcyAtJCB0byB0aGUgcHJlcHJvY2Vzc29yLgoKMTk5OS0wNS0xMCAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogaW5pdC5jIChidWlsZF9vZmZzZXRfcmVmKTogV3JhcCBiYXNlbGlua3MgaW4gT0ZGU0VUX1JFRiwgdG9vLgoJRG9uJ3QgYm90aGVyIHdyYXBwaW5nIGFuIE9GRlNFVF9UWVBFIGFyb3VuZCB1bmtub3duX3R5cGVfbm9kZS4KCShyZXNvbHZlX29mZnNldF9yZWYpOiBEb24ndCBoYW5kbGUgYSByYXcgYmFzZWxpbmsuCgkqIGN2dC5jIChidWlsZF9leHByX3R5cGVfY29udmVyc2lvbik6IExpa2V3aXNlLgoJKiB0eXBlY2suYyAoZGVjYXlfY29udmVyc2lvbiwgYnVpbGRfY19jYXN0LCBjb252ZXJ0X2Zvcl9hc3NpZ25tZW50LAoJY29udmVydF9mb3JfaW5pdGlhbGl6YXRpb24pOiBMaWtld2lzZS4KCSogY2xhc3MuYyAoaW5zdGFudGlhdGVfdHlwZSk6IEhhbmRsZSBzZWVpbmcgYSBiYXNlbGluayB1bmRlciBhbgoJT0ZGU0VUX1JFRi4KCSogZXJyb3IuYyAoZHVtcF9leHByKTogTGlrZXdpc2UuCgkqIHB0LmMgKGZvcl9lYWNoX3RlbXBsYXRlX3Bhcm0pOiBMaWtld2lzZS4KCShyZXNvbHZlX292ZXJsb2FkZWRfdW5pZmljYXRpb24pOiBMaWtld2lzZS4KCSogdHJlZS5jIChpc19vdmVybG9hZGVkX2ZuLCByZWFsbHlfb3ZlcmxvYWRlZF9mbik6IExpa2V3aXNlLgoJKiB0eXBlY2suYyAoZXhwcl9zaXplb2YpOiBBbHNvIGNvbXBsYWluIGFib3V0IG90aGVyIHBlcm11dGF0aW9ucwoJb2Ygb3ZlcmxvYWRlZCBmdW5jdGlvbnMuCgoxOTk5LTA1LTA3ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBpbml0LmMgKHJlc29sdmVfb2Zmc2V0X3JlZik6IERvbid0IHJldHVybiBhIHJhdyBtZXRob2QuCglVc2UgQkFTRUxJTktfUC4KCSogdHlwZWNrLmMgKGRlY2F5X2NvbnZlcnNpb24pOiBEb24ndCBoYW5kbGUgYSByYXcgbWV0aG9kLgoJUmVzb2x2ZSBhbGwgT0ZGU0VUX1JFRnMuCgkoZ2V0X21lbWJlcl9mdW5jdGlvbl9mcm9tX3B0cmZ1bmMpOiAwIGlzIGEgdmFsaWQgdnRhYmxlIGluZGV4LgoJKGJ1aWxkX2JpbmFyeV9vcF9ub2RlZmF1bHQpOiBIYW5kbGUgcmVzb2x2aW5nIG92ZXJsb2FkZWQgZm5zLiAgVXNlCglzYW1lX3R5cGVfcCBmb3IgcG1mIGJpdHMuICBEb24ndCB1c2UgYnVpbGRfYmluYXJ5X29wIHRvIGNvbXBhcmUKCXJhdyBwb2ludGVycyB0byBtZXRob2RzLgoJKGNvbnZlcnRfZm9yX2Fzc2lnbm1lbnQpOiBDaGVjayBmb3IgT0ZGU0VUX1JFRiwgbm90IE9GRlNFVF9UWVBFLAoJdG8gZGVjaWRlIHdoZW4gdG8gY2FsbCByZXNvbHZlX29mZnNldF9yZWYuCgkoYnVpbGRfY19jYXN0LCBjb252ZXJ0X2Zvcl9pbml0aWFsaXphdGlvbik6IExpa2V3aXNlLgoJKiBjdnQuYyAoYnVpbGRfZXhwcl90eXBlX2NvbnZlcnNpb24pOiBMaWtld2lzZS4KCjE5OTktMDUtMDYgIE5hdGhhbiBTaWR3ZWxsICA8bmF0aGFuQGFjbS5vcmc+CgoJKiBjYWxsLmMgKGJ1aWxkX25ld19tZXRob2RfY2FsbCk6IFVzZSBUWVBFX01BSU5fVkFSSUFOVCBvZiBjbGFzcy4KCjE5OTktMDUtMDUgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBkZWNsMi5jIChzdGFydF9vYmplY3RzKTogRG9uJ3QgbGV0IHN0YXRpYyBjb25zdHJ1Y3RvcnMgYW5kCglkZXN0cnVjdG9ycyBnZXQgaW5saW5lZC4KCgkqIHBhcnNlLnkgKG5lc3RlZF9uYW1lX3NwZWNpZmllcik6IE1ha2Ugc3VyZSBvcmRpbmFyeSB0eXBlcyBhcmUKCWNvbXBsZXRlLCBqdXN0IGxpa2UgdGVtcGxhdGUgdHlwZXMuCgkqIHBhcnNlLmM6IFJlZ2VuZXJhdGVkLgoKCSogcHQuYyAoY2hlY2tfZXhwbGljaXRfc3BlY2lhbGl6YXRpb24pOiBJbXByb3ZlIGVycm9yIG1lc3NhZ2VzLgoKMTk5OS0wNS0wNCAgTWFydGluIHZvbiBM9ndpcyAgPGxvZXdpc0BpbmZvcm1hdGlrLmh1LWJlcmxpbi5kZT4KCgkqIHR5cGVjay5jIChzdHJpbmdfY29udl9wKTogVXNlIHNhbWVfdHlwZV9wIHRvIGNoZWNrIHdoZXRoZXIgd2UKCXRyeSB0byBjb252ZXJ0IGJldHdlZW4gY2hhciBhbmQgd2NoYXJfdC4KCjE5OTktMDUtMDMgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBzZWFyY2guYyAobG9va3VwX2ZpZWxkX3IpOiBTZXQgdGhlIFRSRUVfVFlQRSBvZiBhbiBhbWJpZ3VvdXMKCWxvb2t1cCB0byBlcnJvcl9tYXJrX25vZGUgaGVyZS4KCShsb29rdXBfbWVtYmVyKTogUmV2aXNlIGRvY3VtZW50YXRpb24uICBBZGQgY29tbWVudHMuICBEb24ndCBzZXQKCXRoZSBUUkVFX1RZUEUgdG8gZXJyb3JfbWFya19ub2RlIGhlcmUsIGFuZCBkb24ndCBidWlsZCB1cCBhbiBleHRyYQoJVFJFRV9MSVNUIGZvciBhbWJpZ3VvdXMgbG9va3Vwcy4KCShzZXR1cF9jbGFzc19iaW5kaW5ncyk6IEFkanVzdCBhY2NvcmRpbmdseS4KCShwdXNoX2NsYXNzX2RlY2xzKTogUmV2aXNlIG91dC1vZi1kYXRlIGNvbW1lbnRzLgoKCSogdHlwZWNrLmMgKGJ1aWxkX2NvbnN0X2Nhc3QpOiBUaWdodGVuIGNoZWNrcyBmb3IgbGVnYWxpdHkuCgoxOTk5LTA1LTAyICBNYXJ0aW4gdm9uIEz2d2lzICA8bG9ld2lzQGluZm9ybWF0aWsuaHUtYmVybGluLmRlPgoKCSogaW5pdC5jIChidWlsZF9tZW1iZXJfY2FsbCk6IExvb2t1cCBuYW1lcyBjb21pbmcgZnJvbQoJbmFtZXNwYWNlLXNjb3BlZCBMT09LVVBfRVhQUi4KCjE5OTktMDUtMDMgIEppbSBCbGFuZHkgIDxqaW1iQHp3aW5nbGkuY3lnbnVzLmNvbT4KCgkqIGd4eGludC50ZXhpOiBBZGQgZG9jdW1lbnRhdGlvbiBmb3IgJ0knLgoKMTk5OS0wNS0wMiAgTWFydGluIHZvbiBM9ndpcyAgPGxvZXdpc0BpbmZvcm1hdGlrLmh1LWJlcmxpbi5kZT4KCgkqIHRpbmZvLmNjIChvcGVyYXRvcj09KTogUXVhbGlmeSB0eXBlX2luZm8gd2l0aCBzdGQ6Oi4KCjE5OTktMDUtMDIgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+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+CgoJKiBwdC5jIChwcm9jZXNzX3RlbXBsYXRlX3Bhcm0pOiBJZ25vcmUgdG9wLWxldmVsIHF1YWxpZmllcnMgb24KCW5vbi10eXBlIHBhcmFtZXRlcnMuCgoJKiBkZWNsLmMgKHN0YXJ0X2Z1bmN0aW9uKTogVXNlIGN1cnJlbnRfZnVuY3Rpb25fcGFybXMgaW4gdGhlIGNhbGwKCXRvIHJlcXVpcmVfY29tcGxldGVfdHlwZV9mb3JfcGFybXMsIG5vdCB0aGUgcHJvYmFibHkgZW1wdHkKCURFQ0xfQVJHVU1FTlRTLgoKMTk5OS0wMS0xNCAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogc2VtYW50aWNzLmMgKGZpbmlzaF9hc21fc3RtdCk6IERvbid0IHdhcm4gYWJvdXQgcmVkdW5kYW50IHZvbGF0aWxlLgoKCSogZGVjbDIuYyAoaW1wb3J0X2V4cG9ydF9jbGFzcyk6IE1VTFRJUExFX1NZTUJPTF9TUEFDRVMgb25seSBtZWFucwoJdGhhdCB3ZSBkb24ndCBzdXBwcmVzcyB0aGUgb3RoZXIgY29waWVzLgoJKiBsZXguYyAoaGFuZGxlX2NwX3ByYWdtYSk6IExpa2V3aXNlLgoKMTk5OS0wMS0xMyAgTWFyayBNaXRjaGVsbCAgPG1hcmtAbWFya21pdGNoZWxsLmNvbT4KCgkqIGRlY2wuYyAoZ3Jva2RlY2xhcmF0b3IpOiBVbmRvIDE5OTgtMTItMTQgY2hhbmdlLgoJKiB0cmVlLmMgKGJ1aWxkX2NwbHVzX2FycmF5X3R5cGVfMSk6IExpa2V3aXNlLgoJKiBwdC5jIChpbnN0YW50aWF0ZV9jbGFzc190ZW1wbGF0ZSk6IFJlbW92ZSBtaXNsZWFkaW5nIGNvbW1lbnQuCgkodHN1YnN0X2FnZ3JfdHlwZSk6IFN1YnN0aXR1dGUgaWYgdGhlcmUgYXJlIHRlbXBsYXRlIHBhcmFtZXRlcnMsCglyZWdhcmRsZXNzIG9mIHdoZXRoZXIgb3Igbm90IHRoZXkgdXNlIHRlbXBsYXRlIGFyZ3VtZW50cy4KCSh1bmlmeSk6IExpa2V3aXNlLCBidXQgZm9yIHVuaWZpY2F0aW9uLgoKMTk5OS0wMS0xMiAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAY3lnbnVzLmNvbT4KCgkqIGNwLXRyZWUuaCAoZmxhZ19wZXJtaXNzaXZlKTogRGVjbGFyZSBleHRlcm4uCgoxOTk5LTAxLTA2ICBNYXJrIE1pdGNoZWxsICA8bWFya0BtYXJrbWl0Y2hlbGwuY29tPgoKCSogY3AtdHJlZS5oIChJREVOVElGSUVSX1RZUEVOQU1FX1ApOiBVc2UgT1BFUkFUT1JfVFlQRU5BTUVfRk9STUFUCgloZXJlLgoJKGxhbmdfdHlwZSk6IEFkZCBpc19wYXJ0aWFsX2luc3RhbnRpYXRpb24uICBEZWNyZWFzZSB3aWR0aCBvZgoJZHVtbXkuCgkoUEFSVElBTF9JTlNUQU5USUFUSU9OX1ApOiBOZXcgbWFjcm8uCgkoT1BFUkFUT1JfVFlQRU5BTUVfUCk6IFJlbW92ZS4KCSogZGVjbC5jICh1bmFyeV9vcF9wKTogVXNlIElERU5USUZJRVJfVFlQRU5BTUVfUCwgbm90CglPUEVSQVRPUl9UWVBFTkFNRV9QLgoJKGdyb2tfb3BfcHJvcGVydGllcyk6IExpa2V3aXNlLgoJKiBmcmllbmQuYyAoZG9fZnJpZW5kKTogSGFuZGxlIGZyaWVuZHMgdGhhdCBhcmUgbWVtYmVyIGZ1bmN0aW9ucwoJY29ycmVjdGx5LgoJKiBsZXguYyAoaW5pdF9wYXJzZSk6IFVzZSBPUEVSQVRPUl9UWVBFTkFNRV9GT1JNQVQuCgkqIHB0LmMgKGluc3RhbnRpYXRlX2NsYXNzX3RlbXBsYXRlKTogUmV3b3JrIGZvciBjbGFyaXR5LiAgQXZvaWQKCWxlYXZpbmcgVFlQRV9CRUlOR19ERUZJTkVEIHNldCBpbiBvYnNjdXJlIGNhc2VzLiAgRG9uJ3QgZG8KCWFueSBtb3JlIHBhcnRpYWwgaW5zdGFudGlhdGlvbiB0aGFuIGlzIGFic29sdXRlbHkgbmVjZXNzYXJ5IGZvcgoJaW1wbGljaXQgdHlwZW5hbWUuICBTZXQgUEFSVElBTF9JTlNUQU5USUFUSU9OX1AuCgkodHN1YnN0X2RlY2wpOiBVc2UgSURFTlRJRklFUl9UWVBFTkFNRV9QLgoJKiBzZW1hbnRpY3MuYyAoYmVnaW5fY2xhc3NfZGVmaW5pdGlvbik6IEhhbmRsZSBwYXJ0aWFsCglzcGVjaWFsaXphdGlvbnMgb2YgYSB0eXBlIHRoYXQgd2FzIHByZXZpb3VzbHkgcGFydGlhbGx5CglpbnN0YW50aWF0ZWQuCgpXZWQgSmFuICA2IDAzOjE4OjUzIDE5OTkgIE1hcmsgRWxicmVjaHQgIDxzbm93YmFsbDNAdXNhLm5ldC4KCgkqIGcrK3NwZWMuYyAoTElCU1REQ1hYKTogUHJvdmlkZSBkZWZhdWx0IGRlZmluaXRpb24uCgkobGFuZ19zcGVjaWZpY19kcml2ZXIpOiBVc2UgTElCU1REQ1hYIGluc3RlYWQgb2YgIi1sc3RkYysrIi4KClR1ZSBKYW4gIDUgMjI6MTE6MjUgMTk5OSAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogTWFrZS1sYW5nLmluIChnKysubyk6IERlcGVuZCBvbiBwcmVmaXguaC4KCjE5OTktMDEtMDQgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIHRyZWUuYyAoYm91bmRfcG1mX3ApOiBOZXcgZm4uCgkqIHR5cGVjay5jIChidWlsZF9jX2Nhc3QpOiBVc2UgaXQuCgoJKiBkZWNsLmMgKGdyb2tfb3BfcHJvcGVydGllcyk6IFVzZSBzYW1lX3R5cGVfcC4K