V2VkIERlYyAxOCAxNToyNzowOSAxOTk2ICBUb20gVHJvbWV5ICA8dHJvbWV5QGN5Z251cy5jb20+CgoJKiBhdXRvbWFrZS5pbiAocmVhZF9hbV9maWxlKTogU29ydCBjb25maWd1cmVfdmFycyBiZWZvcmUgYWRkaW5nIHRvCglvdXRwdXRfdmFycy4KCShoYW5kbGVfeWFjY19sZXhfY3h4KTogU29ydCBkZV9hbnNpX29iamVjdHMuCgkoaGFuZGxlX21hbl9wYWdlcyk6IFNvcnQgJXNlY3Rpb24ga2V5cy4KClR1ZSBEZWMgMTAgMDA6NDE6MTcgMTk5NiAgVG9tIFRyb21leSAgPHRyb21leUBjeWdudXMuY29tPgoKCSogYXV0b21ha2UuaW4gKEFDX1NVQlNUX1BBVFRFUk4pOiBDaGVjayBmb3IgYWxwaGFudW1lcmljIHZhcmlhYmxlCgluYW1lcyBvbmx5LiAgVGVzdCBzdWJzdC50ZXN0LgoJKHNjYW5fb25lX2NvbmZpZ3VyZV9maWxlKTogU2tpcCBBQ19ERUZVTiBsaW5lcy4gIFRlc3QKCWRlZnVuMi50ZXN0LgoKTW9uIERlYyAgOSAwODoxODo0MiAxOTk2ICBUb20gVHJvbWV5ICA8dHJvbWV5QGN5Z251cy5jb20+CgoJKiBhdXRvbWFrZS5pbiAoZmlsZV9jb250ZW50c193aXRoX3RyYW5zZm9ybSk6IFVzZSBuZSwgbm90ICE9LCB0bwoJY29tcGFyZSBzdHJpbmdzLiAgQ29tcGFyZSBhZ2FpbnN0IGNvcnJlY3Qgc3RyaW5nLiAgRnJvbSBKaW0KCU1leWVyaW5nLgoJKGhhbmRsZV90ZXhpbmZvKTogVXNlIHJtIC1mIHRvIHJlbW92ZSBpbmZvIGZpbGVzLiAgRnJvbSBHb3JkCglNYXR6aWdrZWl0LgoKCSogUmVsZWFzZWQgMS4xbC4KCgkqIGF1dG9tYWtlLmluIChoYW5kbGVfdGV4aW5mbyk6IFB1dCAucHMgb24gQHN1ZmZpeGVzLgoKU3VuIERlYyAgOCAxMjoyOTo1MiAxOTk2ICBUb20gVHJvbWV5ICA8dHJvbWV5QGN5Z251cy5jb20+CgoJKiBhdXRvbWFrZS5pbiAoYW1faW5zdGFsbF92YXIpOiBEaXJlY3Rvcnkgd2l0aCAnZXhlYycgaW4gaXRzIG5hbWUKCWlzIGluc3RhbGxlZCBieSBpbnN0YWxsLWV4ZWMuCgoJKiBzdWJkaXJzLmFtIChtYWludGFpbmVyLWNsZWFuLXJlY3Vyc2l2ZSk6IE1ha2UgY29tbWFuZHMgcXVpZXQuCgkqIHRleGluZm9zLmFtOiBNYWtlIGNvbW1hbmRzIHF1aWV0LgoJKiBzY3JpcHRzLmFtOiBNYWtlIGNvbW1hbmRzIHF1aWV0LgoJKiBwcm9ncy5hbTogTWFrZSBjb21tYW5kcyBxdWlldC4KCSogbHRsaWJzLmFtOiBNYWtlIGNvbWFtbmRzIHF1aWV0LgoJKiBsaXNwLmFtOiBNYWtlIGNvbW1hbmRzIHF1aWV0LgoJKiBsaWJzLmFtOiBNYWtlIGNvbW1hbmRzIHF1aWV0LgoJKiBoZWFkZXIuYW06IE1ha2UgY29tbWFuZHMgcXVpZXQuCgkqIGRhdGEuYW06IE1ha2UgY29tbWFuZHMgcXVpZXQuCgoJKiBhdXRvbWFrZS5pbiAodmFyaWFibGVfdmFsdWVfYXNfbGlzdCk6IEhhbmRsZSA6PSBzdWJzdGl0dXRpb24KCXJlZmVyZW5jZXMuCgkoYW1fY29uZl9saW5lX2Vycm9yKTogVGFrZSBmaWxlIGFyZ3VtZW50LiAgQ2hhbmdlZCBhbGwgY2FsbGVycy4KCShzY2FuX29uZV9jb25maWd1cmVfZmlsZSk6IFNraXAgY29uZmlnIGhlYWRlciBvZiBbJDFdLgoJKHNjYW5fZGVwZW5kZW5jeV9maWxlKTogRG9uJ3QgYWRkIHRvcF9idWlsZGRpciB0byByZWdleCBpZiBpdCBpcwoJIi4iLiAgRG9uJ3QgaW5jbHVkZSB0b3BfYnVpbGRkaXIgaW4gb3V0cHV0IGlmIGl0IGlzICIuIi4KCShzY2FuX29uZV9jb25maWd1cmVfZmlsZSk6IFNraXAgdmVyc2lvbiBvZiBbJDJdLgoKU2F0IERlYyAgNyAxMTozNDozOSAxOTk2ICBUb20gVHJvbWV5ICA8dHJvbWV5QGN5Z251cy5jb20+CgoJKiBhdXRvbWFrZS5pbiAoc2Nhbl9vbmVfY29uZmlndXJlX2ZpbGUpOiBOZXcgc3ViLgoJKHNjYW5fY29uZmlndXJlKTogU2NhbiBhY2xvY2FsLm00IGFzIHdlbGwgYXMgY29uZmlndXJlLmluLgoJKGhhbmRsZV9jb25maWd1cmUpOiBNYWtlZmlsZS5pbiBub3cgZGVwZW5kcyBvbiAkKEFDTE9DQUwpLCBiZWNhdXNlCglhdXRvbWFrZSBzY2FucyBpdC4KCgkqIGF1dG9tYWtlLmluIChoYW5kbGVfY29uZmlndXJlKTogUHV0IGZ1bGwgcGF0aCB0byBmaWxlIG9udG8KCUByZXdyaXR0ZW5faW5wdXRzLiAgVGVzdCBvdXRwdXQ0LnRlc3QuCgoJKiBhdXRvbWFrZS5pbiAoaGFuZGxlX2NvbmZpZ3VyZSk6IFB1dCBwcm9wZXIgbmFtZSBvbnRvIEBpbnB1dHMuCglUZXN0IG91dHB1dDMudGVzdC4KCgkqIGF1dG9tYWtlLmluIChoYW5kbGVfY29uZmlndXJlKTogUGFzcyBjb3JyZWN0IGFyZ3MgdG8gYXV0b21ha2UKCWludm9jYXRpb25zLiAgVGVzdCByZW1ha2UyLnRlc3QuCgoJKiBhdXRvbWFrZS5pbiAoaGFuZGxlX2NvbmZpZ3VyZSk6IENoZWNrIGRpcm5hbWUgb2YgJGZpbGUsIG5vdCBvZgoJJGxvY2FsLiAgVGVzdCBvdXRwdXQyLnRlc3QuCgoJKiBhdXRvbWFrZS5pbiAoaGFuZGxlX2RlcGVuZGVuY2llcyk6IEFkZGVkIHNvbWUgbWlzc2luZyAiOyJzIGluCgl0cmFuc2Zvcm1zLgoJKGdldF9vYmplY3RfZXh0ZW5zaW9uKTogRGl0dG8uCgkoaGFuZGxlX3RhZ3MpOiBEaXR0by4KCShoYW5kbGVfdGVzdHMpOiBEaXR0by4KCShyZWFkX2FtX2ZpbGUpOiBEaXR0by4KCShhbV9pbnN0YWxsX3Zhcik6IERpdHRvLgoJKGZpbGVfY29udGVudHNfd2l0aF90cmFuc2Zvcm0pOiBEaWUgaWYgdHJhbnNmb3JtIG1pc3NpbmcgdHJhaWxpbmcKCSI7Ii4KCgkqIGF1dG9tYWtlLmluIChhbV9pbnN0YWxsX3Zhcik6IFF1b3RlICQgaW4gcmVnZXhwIHN1YnN0aXR1dGlvbi4KCUZyb20gVWxyaWNoIERyZXBwZXIuCgpGcmkgRGVjICA2IDE4OjU0OjEwIDE5OTYgIFRvbSBUcm9tZXkgIDx0cm9tZXlAY3lnbnVzLmNvbT4KCgkqIGF1dG9tYWtlLmluIChoYW5kbGVfY29uZmlndXJlKTogUmVxdWlyZSBhY3R1YWwgaW5wdXQgZmlsZXMsIG5vdAoJcmV3cml0dGVuIGlucHV0IGZpbGVzLiAgRnJvbSBVbHJpY2ggRHJlcHBlci4KClRodSBEZWMgIDUgMDI6NTI6MjAgMTk5NiAgVG9tIFRyb21leSAgPHRyb21leUBjeWdudXMuY29tPgoKCVN1Z2dlc3Rpb24gZnJvbSBNYXJrIEdhbGFzc2k6CgkqIHRleGluZm9zLmFtIChEVklQUyk6IE5ldyBtYWNyby4KCSguZHZpLnBzKTogTmV3IHJ1bGUuCgoJKiBhdXRvbWFrZS5pbiAoaGFuZGxlX2RlcGVuZGVuY2llcyk6IENoZWNrIHRvIG1ha2Ugc3VyZQoJLS1idWlsZC1kaXJlY3Rvcnkgc3BlY2lmaWVkIGJlZm9yZSBzZWFyY2hpbmcgZm9yIC5QIGZpbGVzLgoJKGhhbmRsZV9jb25maWd1cmUpOiBDb3JyZWN0bHkgaGFuZGxlICI6IiBzeW50YXggd2hlbiBydW5uaW5nCgljb25maWcuc3RhdHVzLgoKCSogcmVtYWtlLmFtOiBSZW1vdmVkIHJ1bGVzIHRvIHJlZ2VuZXJhdGUgTWFrZWZpbGUgYW5kIE1ha2VmaWxlLmluOwoJbm93IGhhbmRsZWQgYnkgaGFuZGxlX2NvbmZpZ3VyZS4KCgkqIHJlbWFrZS1zdWJkLmFtOiBSZW1vdmVkLgoKCSogYXV0b21ha2UuaW4gKHNjYW5fY29uZmlndXJlKTogSGFuZGxlIG11bHRpcGxlICI6InMgaW4gQUNfT1VUUFVUCglhcmcuCgkocGFyc2VfYXJndW1lbnRzKTogRGl0dG8uCgkoaGFuZGxlX2NvbmZpZ3VyZSk6IERpdHRvLgoJKCVvdGhlcl9vdXRwdXRfZmlsZXMpOiBSZW1vdmVkLgoJKHJld3JpdGVfaW5wdXRzX2ludG9fZGVwZW5kZW5jaWVzKTogTmV3IHN1Yi4KCShoYW5kbGVfY29uZmlndXJlKTogVXNlIGl0LgoJKGhhbmRsZV9jb25maWd1cmUpOiBEaXR0by4KCglGcm9tIEdvcmQgTWF0emlna2VpdDoKCSogYXV0b21ha2UuaW4gKGdlbmVyYXRlX21ha2VmaWxlKTogSGFuZGxlICI6IiBpbiBBQ19PVVRQVVQgYXJnLgoJKGhhbmRsZV9jb25maWd1cmUpOiBEaXR0by4KCgkqIGF1dG9tYWtlLmluIChoYW5kbGVfc2luZ2xlX3RyYW5zZm9ybV9saXN0KTogLlMgaXMgYXNzZW1ibHkKCXNvdXJjZS4gIEZyb20gQW50aG9ueSBHcmVlbi4KCgkqIGF1dG9tYWtlLmluIChoYW5kbGVfc2luZ2xlX3RyYW5zZm9ybV9saXN0KTogQ29ycmVjdGx5IHJld3JpdGUKCUMrKyBhbmQgRm9ydHJhbiBzb3VyY2UgdG8gb2JqZWN0cyBlbmRpbmcgaW4gIi5vIi4gIFRlc3QKCWN4eG8udGVzdC4KCgkqIGF1dG9tYWtlLmluOiBCZXR0ZXIgZXJyb3IgbWVzc2FnZSBpZiBmaWxlIG1pc3NpbmcuCgoJKiBhY2xvY2FsLmluIChAb2Jzb2xldGVfbWFjcm9zKTogdWRfR05VX0dFVFRFWFQgaXMgb2Jzb2xldGUuCgkqIGF1dG9tYWtlLmluIChoYW5kbGVfZ2V0dGV4dCk6IFVzZSBBTV9HTlVfR0VUVEVYVCwgbm90Cgl1ZF9HTlVfR0VUVEVYVC4KCShzY2FuX2NvbmZpZ3VyZSk6IERpdHRvLiAgdWRfR05VX0dFVFRFWFQgaXMgbm93IG9ic29sZXRlLgoKV2VkIERlYyAgNCAwMDo0MToyMyAxOTk2ICBUb20gVHJvbWV5ICA8dHJvbWV5QGN5Z251cy5jb20+CgoJKiBhdXRvbWFrZS5pbiAoc2Nhbl9jb25maWd1cmUpOiBTa2lwIGVtcHR5IGVsZW1lbnRzIHdoZW4gYWRkaW5nIHRvCglsaWJzb3VyY2VzLiAgUGVybCA0IGJ1ZyByZXBvcnRlZCBieSBHcmVnIEEgV29vZHMuCgoJKiBNYWtlZmlsZS5hbSAocGVybDQtY2hlY2spOiBOZXcgdGFyZ2V0LgoJKGN2cy1kaXN0KTogUnVuIHBlcmw0LWNoZWNrLgoKCVBlcmwgNCBmaXhlcy4gIFJlcG9ydGVkIGJ5IEdyZWcgQS4gV29vZHM6CgkqIGF1dG9tYWtlLmluIChmaWxlX2NvbnRlbnRzX3dpdGhfdHJhbnNmb3JtKTogSWYgdHJhbnNmb3JtIGNhdXNlZAoJYWxsIGNoYXJzIHRvIGdvIGF3YXksIHRoZW4gc2tpcCByZXN0IG9mIGxvb3AuCgkoaGFuZGxlX3RleGluZm8pOiBEb24ndCB1c2UgIm5leHQiIGluIGFyZyB0bwoJZmlsZV9jb250ZW50c193aXRoX3RyYW5zZm9ybS4KCShoYW5kbGVfZGVwZW5kZW5jaWVzKTogRGl0dG8uCgkoaGFuZGxlX3Rlc3RzKTogRGl0dG8uCgoJKiBtNC9yZWdleC5tNCAoQU1fV0lUSF9SRUdFWCk6IENoZWNrIGZvciBHTlUgcmVnZXggaW4gbGliYy4gIEZyb20KCUFuZHJlYXMgU2Nod2FiLgoKCSogYXV0b21ha2UuaW4gKHBhcnNlX2FyZ3VtZW50cyk6IFJlbW92ZWQgLS1zdHJpY3RuZXNzLgoJKGhhbmRsZV9kaXN0X3dvcmtlcik6IERvbid0IHVzZSAtLXN0cmljdG5lc3MuCgkoaGFuZGxlX2NvbmZpZ3VyZSk6IERpdHRvLgoJKGluaXRpYWxpemVfZ2xvYmFsX2NvbnN0YW50cyk6IERvbid0IG1lbnRpb24gLS1zdHJpY3RuZXNzLgoKCSogYXV0b21ha2UuaW4gKGhhbmRsZV9tZXJnZV90YXJnZXRzKTogVXNlIGFsbC1yZWN1cnNpdmUtYW0gaW5zdGVhZAoJb2YgYWxsLXJlY3Vyc2l2ZS1oYWNrLiAgVGhlIGxhdHRlciBpcyB1Z2x5LCBhY2NvcmRpbmcgdG8gSm9lbAoJV2ViZXIuCgoJKiBhdXRvbWFrZS5pbiAoaGFuZGxlX2VtYWNzX2xpc3ApOiBQdXNoICQoRUxDRklMRVMpIG9udG8gQGFsbC4KCgkqIGF1dG9tYWtlLmluIChkb19vbmVfY2xlYW5fdGFyZ2V0KTogQWxsb3cgLWxvY2FsIHZlcnNpb24gb2YgY2xlYW4KCXRhcmdldHMuCgpUdWUgRGVjICAzIDE4OjU4OjQwIDE5OTYgIFRvbSBUcm9tZXkgIDx0cm9tZXlAY3lnbnVzLmNvbT4KCgkqIGF1dG9tYWtlLmluIChoYW5kbGVfZGVwZW5kZW5jaWVzKTogU2tpcCBDLW9ubHkgbGluZXMgaW4KCWRlcGVuZDIuYW0gd2hlbiBhcHByb3ByaWF0ZS4KCSogZGVwZW5kMi5hbSAoLmRlcHMvJS5QKTogT21pdCBtb2RpZmljYXRpb24gb2YgJG8gaWYgbGFuZ3VhZ2UgaXMKCW5vdCBDLgoKVHVlIERlYyAgMyAxMToyOTowMSAxOTk2ICBHb3Jkb24gTWF0emlna2VpdCAgPGdvcmRAZ251LmFpLm1pdC5lZHU+CgoJKiBjb21waWxlLWtyLmFtOiBRdW90ZSBhcmd1bWVudHMgdG8gZWNoby4KCgkqIHByb2dzLmFtOiBGaXggdXAgcHJvYmxlbXMgd2hlbiBMSUJUT09MIGlzIG5vdCBkZWZpbmVkIChieQogCXNldHRpbmcgc2hlbGwgdmFyaWFibGUgaW5zdHByb2cgdG8gdGhlIGluc3RhbGxhdGlvbiBwcm9ncmFtKS4KCgkqIGFjbG9jYWwuaW4gKHNjYW5fZmlsZSk6IEFsbG93IHRoZSBhY2luY2x1ZGUubTQgZmlsZSB0byBvdmVycmlkZQoJYW55IG90aGVyIG1hY3JvIGZpbGVzIChidXQgc3RpbGwgcHJldmVudCBtdWx0aXBsZSBkZWZpbml0aW9ucwoJd2l0aGluIGFjaW5jbHVkZS5tNCkuCgpUdWUgRGVjICAzIDEwOjQwOjQ4IDE5OTYgIFRvbSBUcm9tZXkgIDx0cm9tZXlAY3lnbnVzLmNvbT4KCglGcm9tIFVscmljaCBEcmVwcGVyOgoJKiBhdXRvbWFrZS5pbiAoaGFuZGxlX2VtYWNzX2xpc3ApOiBUeXBvIGZpeC4KCShzY2FuX2NvbmZpZ3VyZSk6IE9ubHkgcmVjb2duaXplIFZFUlNJT04gYWZ0ZXIgd2hpdGVzcGFjZS4KCgkqIHRleGluZm9zLmFtOiBpbnN0YWxsLWluZm8gcmVxdWlyZXMgcGF0aCB0byBpbmZvIGZpbGUuCgoJKiBwcm9ncy5hbTogVXNlIEBMSUJUT09MQCwgbm90ICQoTElCVE9PTCkuCgoJKiBhdXRvbWFrZS5pbiAoYW1faW5zdGFsbF92YXIpOiBJZiAtbHRsaWJzIHBhc3NlZCwgc3Vic3RpdHV0ZQoJQExJQlRPT0xALgoKTW9uIERlYyAgMiAxMzo1MToxMSAxOTk2ICBHb3Jkb24gTWF0emlna2VpdCAgPGdvcmRAZ251LmFpLm1pdC5lZHU+CgoJKiBhdXRvbWFrZS5pbiAoZ2V0X29iamVjdF9leHRlbnNpb24pOiBVbnNoaWZ0IGFuc2kya25yIG9udG8gdGhlCiAJYWxsIHRhcmdldCwgc28gdGhhdCBpdCBidWlsZHMgYmVmb3JlIGFueSBvdGhlciB0YXJnZXRzLgoJW2RlX2Fuc2lfb2JqZWN0c106IERlbGV0ZSwgc2luY2UgdW5zaGlmdGluZyBhbnNpMmtuciBpcyBhbiBlYXNpZXIKCXNvbHV0aW9uLgoKTW9uIERlYyAgMiAxMjoxMzoyNyAxOTk2ICBUb20gVHJvbWV5ICA8dHJvbWV5QGN5Z251cy5jb20+CgoJKiBSZWxlYXNlZCAxLjFpLgoKCUZyb20gSmFub3MgRmFya2FzOgoJKiBhdXRvbWFrZS5pbiAoaGFuZGxlX3RleGluZm8pOiBNdXN0IHF1b3RlICQgZm9yIG1ha2UuCgpTdW4gRGVjICAxIDE1OjA4OjA5IDE5OTYgIFRvbSBUcm9tZXkgIDx0cm9tZXlAY3lnbnVzLmNvbT4KCgkqIGF1dG9tYWtlLmluIChoYW5kbGVfY29uZmlndXJlKTogQ29ycmVjdGx5IGhhbmRsZSBjb21tb24gY2FzZSBvZgoJbXVsdGlwbGUgbm9uLU1ha2VmaWxlcyBpbiBBQ19PVVRQVVQuICBSZXF1aXJlIGFsbCBpbnB1dCBmaWxlcyB3aGVuCgl1c2luZyAiOiIgc3ludGF4LgoKU3VuIE5vdiAyNCAwMDozMzo1MCAxOTk2ICBUb20gVHJvbWV5ICA8dHJvbWV5QGN5Z251cy5jb20+CgoJKiBhdXRvbWFrZS5pbiAoaGFuZGxlX3NvdXJjZV90cmFuc2Zvcm0pOiBEb24ndCBkZWZpbmUKCUVYVFJBX3Byb2dfU09VUkNFUyB1bm5lY2Vzc2FyaWx5LiAgVGVzdCBleHRyYTIudGVzdC4KCgkqIGF1dG9tYWtlLmluIChpbml0aWFsaXplX3Blcl9pbnB1dCk6IE5ldyB2YXJpYWJsZXMKCWluY2x1ZGVkX2dlbmVyaWNfY29tcGlsZSwgaW5jbHVkZWRfa25yX2NvbXBpbGUsCglpbmNsdWRlZF9saWJ0b29sX2NvbXBpbGUuCgkoZ2V0X29iamVjdF9leHRlbnNpb24pOiBVc2UgdGhlbS4KCgkqIGF1dG9tYWtlLmluIChoYW5kbGVfc2luZ2xlX3RyYW5zZm9ybV9saXN0KTogUmVtb3ZlZAoJT2JqZWN0aXZlLUMvQysrIHN1cHBvcnQgKGRpZG4ndCByZWFsbHkgd29yayBhbnl3YXkpLgoJKGhhbmRsZV9zaW5nbGVfdHJhbnNmb3JtX2xpc3QpOiBIYW5kbGUgYXNzZW1ibHkgc3BlY2lhbGx5LgoKCSogYXV0b21ha2UuaW4gKGhhbmRsZV95YWNjX2xleF9jeHgpOiBTZXQgLS1tb2RlPWNvbXBpbGUgb3IKCS0tbW9kZT1saW5rIHdoZW4gcnVubmluZyBsaWJ0b29sLgoKCSogbHRsaWJzLmFtOiBTZXQgLS1tb2RlPWluc3RhbGwgd2hlbiBydW5uaW5nIGxpYnRvb2wuCgkodW5pbnN0YWxsLUBESVJAUFJPR1JBTVMpOiBTZXQgLS1tb2RlPXVuaW5zdGFsbCB3aGVuIHJ1bm5pbmcKCWxpYnRvb2wuCgkqIGxpYnRvb2wuYW0gKC5jLmxvKTogU2V0IC0tbW9kZT1jb21waWxlIHdoZW4gcnVubmluZyBsaWJ0b29sLgoJKiBwcm9ncy5hbTogU2V0IC0tbW9kZT1pbnN0YWxsIHdoZW4gcnVubmluZyBsaWJ0b29sLgoKCUZpeCBmb3IgYnVnIHJlcG9ydGVkIGJ5IEZyYW7nb2lzIFBpbmFyZDoKCSogYXV0b21ha2UuaW4gKGRvX2NoZWNrX21lcmdlX3RhcmdldCk6IE5ldyBzdWIuCgkoZG9fb25lX21lcmdlX3RhcmdldCk6IE5vIGxvbmdlciBoYW5kbGUgYGNoZWNrJy4KCShoYW5kbGVfbWVyZ2VfdGFyZ2V0cyk6IFVzZSBkb19jaGVja19tZXJnZV90YXJnZXQuCgkoaW5pdGlhbGl6ZV9wZXJfaW5wdXQpOiBTZXQgQGNoZWNrX3Rlc3RzLgoJKGhhbmRsZV90ZXN0cyk6IFB1c2ggb250byBAY2hlY2tfdGVzdHMsIG5vdCBAY2hlY2suCgoJKiBhdXRvbWFrZS5pbiAoYW1faW5zdGFsbF92YXIpOiBUeXBvIGZpeC4KCShoYW5kbGVfY29uZmlndXJlKTogUmVxdWlyZSAkaW5wdXRzWzBdLgoKRnJpIE5vdiAyMiAwMDowMTo0NSAxOTk2ICBUb20gVHJvbWV5ICA8dHJvbWV5QGN5Z251cy5jb20+CgoJKiBhdXRvbWFrZS5pbiAoaGFuZGxlX2xpYl9vYmplY3RzKTogRml4ZWQgZXJyb3IgbWVzc2FnZQoJcHJvY2Vzc2luZy4KClRodSBOb3YgMjEgMjI6Mjk6MzAgMTk5NiAgVG9tIFRyb21leSAgPHRyb21leUBjeWdudXMuY29tPgoKCSogYXV0b21ha2UuaW4gKHNjYW5fY29uZmlndXJlKTogQUNfRlVOQ19GTk1BVENIIGRvZXNuJ3QgYWRkIHRvCglMSUJPQkpTLgoJKGhhbmRsZV9jb25maWd1cmUpOiBTdXBwb3J0IG11bHRpLSI6IiBtb2RlIGZvciBBQ19PVVRQVVQuCgoJKiBtNC9oZWFkZXIubTQ6IE5ldyBmaWxlLgoKCSogYXV0b21ha2UuaW4gKHNjYW5fY29uZmlndXJlKTogUmVjb2duaXplIEFNX0NPTkZJR19IRUFERVIuCgpXZWQgTm92IDIwIDAwOjIzOjQyIDE5OTYgIFRvbSBUcm9tZXkgIDx0cm9tZXlAY3lnbnVzLmNvbT4KCgkqIGFjaW5zdGFsbDogQWxsb3cgY29tbWVudGFyeSBhdCBlbmQgb2YgInNlcmlhbCIgbGluZS4gIEZyb20gR29yZAoJTWF0emlna2VpdC4KCgkqIGF1dG9tYWtlLmluIChoYW5kbGVfeWFjY19sZXhfY3h4KTogT25seSByZXBsYWNlIG91dHB1dCBoZWFkZXIgaWYKCWl0IGhhcyBjaGFuZ2VkLgoKVHVlIE5vdiAxOSAxOTowMzozMCAxOTk2ICBUb20gVHJvbWV5ICA8dHJvbWV5QGN5Z251cy5jb20+CgoJKiBhdXRvbWFrZS5pbiAoYW1fcHJpbWFyeV9wcmVmaXhlcyk6IEFsbG93IGNvbmZpZ3VyZSB2YXJpYWJsZXMgdG8KCWJlIG5hbWVkIGFmdGVyIHByaW1hcnkuCgkoYW1faW5zdGFsbF92YXIpOiBEaXR0by4KCgkqIGF1dG9tYWtlLmluIChpbml0aWFsaXplX3Blcl9pbnB1dCk6IEluaXRpYWxpemUgb3V0cHV0X2hlYWRlci4KCShnZW5lcmF0ZV9tYWtlZmlsZSk6IFNldCB1cCBvdXRwdXRfaGVhZGVyOyBwcmludCBpdCBiZWZvcmUKCW91dHB1dF9ydWxlcy4KCShoYW5kbGVfZm9vdGVyKTogUHV0IC5TVUZGSVhFUyBpbnRvIG91dHB1dF9oZWFkZXIsIGZvciBBSVguCgpNb24gTm92IDE4IDE5OjExOjUzIDE5OTYgIEdvcmRvbiBNYXR6aWdrZWl0ICA8Z29yZEBnbnUuYWkubWl0LmVkdT4KCgkqIGF1dG9tYWtlLmluOiBBZGRlZCBhIGxvdCBvZiBsaWJ0b29sIHN1cHBvcnQuICBOZXcgdmFyaWFibGUKCXByb2dfTERGTEFHUyB0byBwYXNzIGxpbmtlciBmbGFncy4gIFVzZSBsaWJ0b29saXplIHRvIGluc3RhbGwKCWxpYnRvb2wgc3VwcG9ydCBmaWxlcy4KCk1vbiBOb3YgMTggMTM6Mjk6NTUgMTk5NiAgVG9tIFRyb21leSAgPHRyb21leUBjeWdudXMuY29tPgoKCSogYXV0b21ha2UuaW4gKGhhbmRsZV9saWJfb2JqZWN0cyk6IFB1c2ggQExJQk9CSlNAIGFuZCBAQUxMT0NBQAoJb250byBkZXBlbmRlbmN5IGxpc3QuCgoJKiBhY2xvY2FsLmluIChvYnNvbGV0ZV9tYWNyb3MpOiBJbmNsdWRlIEFNX1NBTklUWV9DSEVDS19DQzsgbm93CglwYXJ0IG9mIGF1dG9jb25mIHByb3Blci4KCSogbTQvY2NzYW5pdHkubTQ6IFJlbW92ZWQuCgpTdW4gTm92IDE3IDEyOjI1OjE3IDE5OTYgIFRvbSBUcm9tZXkgIDx0cm9tZXlAY3lnbnVzLmNvbT4KCgkqIGF1dG9tYWtlLmluIChjaGVja190eXBvcyk6IENoZWNrIHRvIG1ha2Ugc3VyZSBFWFRSQV8gdmFyaWFibGVzCglkb24ndCBjb250YWluIGNvbmZpZ3VyZSBzdWJzLgoJKGhhbmRsZV9kaXN0X3dvcmtlcik6IFJlbW92ZWQgRVhUUkFfRElTVF9ESVJTOyBub3QgbmVlZGVkLgoKRnJpIE5vdiAxNSAxODo1ODowNCAxOTk2ICBUb20gVHJvbWV5ICA8dHJvbWV5QGN5Z251cy5jb20+CgoJKiB0YWdzLXN1YmQuYW06IFJlbW92ZWQuCgoJKiB0YWdzLmFtICh0YWdzLXJlY3Vyc2l2ZSk6IFJlbW92ZWQuCgkoVEFHUyk6IERlcGVuZCBvbiBARElSU0AsIEBDT05GSUdALiAgVXNlIEBDT05GSUdAIGluIHJ1bGUuCgkoSUQpOiBGcm9tIHRhZ3Mtc3ViZC5hbS4KCQoJKiBhY2xvY2FsLmluIChvYnNvbGV0ZV9tYWNyb3MpOiBJbmNsdWRlIEFNX0ZVTkNfRk5NQVRDSC4KCSogYXV0b21ha2UuaW4gKHNjYW5fY29uZmlndXJlKTogUmVjb2duaXplIEFDX0ZVTkNfRk5NQVRDSC4KCSogbTQvZm5tYXRjaC5tNDogUmVtb3ZlZCAobm93IGluIGF1dG9jb25mKS4KCgkqIGF1dG9tYWtlLmluIChpbml0aWFsaXplX3Blcl9pbnB1dCk6IEluaXQgZGVfYW5zaV9vYmplY3RzLgoJKGhhbmRsZV9zaW5nbGVfdHJhbnNmb3JtX2xpc3QpOiBFcnJvciBpZiBleHRlbnNpb24gdW5yZWNvZ25pemVkLgoJU2V0IGVsZW1lbnRzIG9mIGRlX2Fuc2lfb2JqZWN0cy4KCShnZXRfb2JqZWN0X2V4dGVuc2lvbik6IERvbid0IHB1c2ggQU5TSTJLTlIgb250byBAYWxsLgoJKGhhbmRsZV95YWNjX2xleF9jeHgpOiBQdXQgQU5TSTJLTlIgaW50byBkZXBlbmRlbmN5IG9mIGFsbCAuX28KCWZpbGVzLgoJKHByZXR0eV9wcmludF9pbnRlcm5hbCk6IEluaXRpYWxpemUgJGJvbCBkZXBlbmRpbmcgb24gdGhlIGNvbHVtbi4KCkZyaSBOb3YgMTUgMTY6MjI6MTUgMTk5NiAgR29yZG9uIE1hdHppZ2tlaXQgIDxnb3JkQGdudS5haS5taXQuZWR1PgoKCSogbGlicmFyeS5hbTogRml4ZWQgcmVmZXJlbmNlcyB0byBMSUJSQVJZIGFjY29yZGluZyB0byBuZXcgc2NoZW1lLgoKCSogbGlicy5hbSwgbGlicy1jbGVhbi5hbTogUmVtb3ZlZCByZWZlcmVuY2VzIHRvIExJQkZJTEVTLgoKCSogYXV0b21ha2UudGV4aSAoQSBMaWJyYXJ5KTogZG9jIGZpeAoKCSogYXV0b21ha2UuaW4gKGhhbmRsZV9saWJyYXJpZXMpOiBEZWxldGVkIHJlZmVyZW5jZXMgdG8gKkxJQkZJTEVTLAoJc2luY2Ugd2Ugbm93IGhhdmUgdGhlIGZ1bGwgbGlicmFyeSBuYW1lIGluIHRoZSAqTElCUkFSSUVTCgl2YXJpYWJsZS4KCShhbV9pbnN0YWxsX3Zhcik6IFJlbW92ZWQgYC1uby1hbGwnIG9wdGlvbiwgd2hpY2ggd2FzIG9ubHkgcmVxdWlyZWQKCWZvciB0aGUgTElCRklMRVMgaGFjay4KCkZyaSBOb3YgMTUgMTY6Mzk6MjkgMTk5NiAgVG9tIFRyb21leSAgPHRyb21leUBjeWdudXMuY29tPgoKCSogYXV0b21ha2UuaW46IEFwcGxpZWQgbGlidG9vbC1yZWxhdGVkIHBhdGNoZXMgZnJvbSBHb3JkLgoJKHNjYW5fY29uZmlndXJlKTogU2V0IENDIGNvbmZpZ3VyZSB2YXIgaWYgQU1fUFJPR19MSUJUT09MIHNlZW4uCglBbHNvIGluZGljYXRlIHRoYXQgQUNfQ0FOT05JQ0FMX0hPU1Qgd2FzIHJ1bi4KCgkqIE1ha2VmaWxlLmFtIChwa2dkYXRhX0RBVEEpOiBSZW1vdmVkIGFjbG9jYWwubTQuCgpUaHUgTm92IDE0IDIzOjExOjA5IDE5OTYgIFRvbSBUcm9tZXkgIDx0cm9tZXlAY3lnbnVzLmNvbT4KCgkqIGF1dG9tYWtlLmluIChoYW5kbGVfeWFjY19sZXhfY3h4KTogRG9uJ3QgYXV0by1kZWZpbmUgWUFDQywgTEVYLAoJQ1hYLCBDQy4KCgkqIGRlamFnbnUuYW06IFByaW50IHdhcm5pbmcgaWYgcnVudGVzdCBtaXNzaW5nLgoKCUZyb20gSm9lcmctTWFydGluIFNjaHdhcno6CgkqIGF1dG9tYWtlLmluIChoYW5kbGVfYWNsb2NhbF9tNCk6IEZpbmQgYWNsb2NhbC5tNCBpbiBzcmNkaXIuCgkocmVxdWlyZV9maWxlX2ludGVybmFsKTogVW5saW5rIGZpbGUgYmVmb3JlIGNyZWF0aW5nIGl0LgoKCSogZGVwZW5kMi5hbSAoLmRlcHMvJS5QKTogRG9uJ3QgcHJpbnQgY29tbWFuZHMgd2hlbiBydW5uaW5nLgoKTW9uIE5vdiAxMSAxMDozNTowOCAxOTk2ICBUb20gVHJvbWV5ICA8dHJvbWV5QGN5Z251cy5jb20+CgoJKiBhdXRvbWFrZS5pbiAoaGFuZGxlX3NpbmdsZV90cmFuc2Zvcm1fbGlzdCk6IFNpbXBsaWZpZWQgQysrCgltYXRjaGluZyBleHByZXNzaW9uLgoKRnJpIE5vdiAgOCAwOTo0OTowOSAxOTk2ICBUb20gVHJvbWV5ICA8dHJvbWV5QGN5Z251cy5jb20+CgoJKiBSZWxlYXNlZCAxLjFnLgoKCSogY29tcGlsZS1rci5hbSAoJChPQkpFQ1RTKSk6IFJlbW92ZWQuCgoJKiBhdXRvbWFrZS5pbiAoZ2V0X29iamVjdF9leHRlbnNpb24pOiBEZWZpbmUgQU5TSTJLTlIuICBQdXNoIG9udG8KCUBhbGwgaWYgYW5zaTJrbnIgaXMgaW4gdGhpcyBkaXJlY3RvcnkuCgoJKiBjb25maWd1cmUuaW46IERvbid0IHJ1biBBQ19BUkdfUFJPR1JBTSwgQUNfUFJPR19NQUtFX1NFVC4KCgkqIG00L2luaXQubTQ6IFJ1biBBTV9TQU5JVFlfQ0hFQ0suCgoJKiBtNC9zYW5pdHkubTQ6IE5ldyBmaWxlLgoKCSogYXV0b21ha2UuaW4gKGhhbmRsZV9kaXN0X3dvcmtlcik6IEluIEN5Z251cyBtb2RlLCBwb3NzaWJseSBmaW5kCglmaWxlcyB0byBkaXN0IGluIGJ1aWxkIGRpciwgbm90IHNyY2Rpci4KCSglb21pdF9kZXBlbmRlbmNpZXMpOiBOZXcgZ2xvYmFsLgoJKHNjYW5fZGVwZW5kZW5jeV9maWxlKTogSGFuZGxlIE9NSVRfREVQRU5ERU5DSUVTLgoJKHNjYW5fY29uZmlndXJlKTogUHV0IHJ4LmgsIHJlZ2V4Lmggb24gJW9taXRfZGVwZW5kZW5jaWVzLiAgRGl0dG8KCWxpYmludGwuaC4KCShoYW5kbGVfdGVzdHMpOiBSZW1vdmUgQ1lHTlVTIHN0cmluZ3MgaW4gQ3lnbnVzIG1vZGUuCgkoaGFuZGxlX3RleGluZm8pOiBEaXR0by4KCgkqIHRleGluZm9zLmFtIChkaXN0LWluZm8pOiBOZXcgdGFyZ2V0LgoKCSogYXV0b21ha2UuaW4gKGhhbmRsZV9kaXN0X3dvcmtlcik6IFVzZSBESVNURklMRVMsIG5vdAoJREVQX0RJU1RGSUxFUy4KCShpbml0aWFsaXplX3Blcl9pbnB1dCk6IEluaXRpYWxpemUgZGlzdF90YXJnZXRzLgoJKGhhbmRsZV90ZXhpbmZvKTogRG9uJ3QgY29tcHV0ZSBAaW5mb3NfbGlzdDsgZG9uJ3QgZGVmaW5lIG9yIHVzZQoJSU5GT1MuICBQdXQgZGlzdC1pbmZvIG9udG8gQGRpc3RfdGFyZ2V0cy4KCShoYW5kbGVfZGlzdF93b3JrZXIpOiBIYW5kbGUgQGRpc3RfdGFyZ2V0cy4gIERvbid0IHVzZSB0aGUgImVjaG8KCXRyaWNrIiBmb3IgZXhwYW5kaW5nIERJU1RGSUxFUyBhbnkgbW9yZS4KCgkqIGRpc3QtdmFycy5hbSAoREVQX0RJU1RGSUxFUyk6IFJlbW92ZWQuCgkoRElTVEZJTEVTKTogRG9uJ3QgaW5jbHVkZSBJTkZPUy4KCgkqIGF1dG9tYWtlLmluIChoYW5kbGVfdGV4aW5mbyk6IEhhbmRsZSBDeWdudXMgbW9kZS4KCSogdGV4aW5mb3MuYW0gKC50ZXhpLmluZm8sIC50ZXhpbmZvLmluZm8pOiBIYW5kbGUgQ3lnbnVzIG1vZGUuCgoJKiBhdXRvbWFrZS5pbiAoaGFuZGxlX3NpbmdsZV90cmFuc2Zvcm1fbGlzdCk6IE5ldyBzdWIuCgkoaGFuZGxlX3NvdXJjZV90cmFuc2Zvcm0pOiBVc2UgaXQuCgkoaGFuZGxlX2J1aWx0X3NvdXJjZXMpOiBOZXcgc3ViLgoKVGh1IE5vdiAgNyAxNDo0OToxNiAxOTk2ICBUb20gVHJvbWV5ICA8dHJvbWV5QGN5Z251cy5jb20+CgoJKiByZW1ha2UuYW0gKCQoc3JjZGlyKS9NYWtlZmlsZS5pbik6IFBhc3MgQEFSR1NAIHRvIGF1dG9tYWtlLgoJKiByZW1ha2Utc3ViZC5hbSAoJChzcmNkaXIpL01ha2VmaWxlLmluKTogUGFzcyBAQVJHU0AgdG8KCWF1dG9tYWtlLgoJKiBhdXRvbWFrZS5pbiAoaGFuZGxlX2NvbmZpZ3VyZSk6IFBhc3MgLS1jeWdudXMgd2hlbiBydW5uaW5nCglhdXRvbWFrZSBhZ2Fpbi4KCgkqIHJlbWFrZS1oZHIuYW0gKCQoc3JjZGlyKS9zdGFtcC1oLmluKTogRGVwZW5kIG9uIEBGSUxFU0AsIG5vdAoJQUNDT05GSUcsIENPTkZJR19UT1AsIENPTkZJR19CT1QuCgkqIGF1dG9tYWtlLmluIChoYW5kbGVfYWNsb2NhbF9tNCk6IEFsd2F5cyBmaW5kIGFjbG9jYWwubTQgaW4KCXRvcF9zcmNkaXIuCgkoaGFuZGxlX2NvbmZpZ3VyZSk6IERvbid0IGRlZmluZSBBQ0NPTkZJRywgQ09ORklHX1RPUCwgQ09ORklHX0JPVDsKCWluc3RlYWQgc3Vic3RpdHV0ZSBmaWxlcyBkaXJlY3RseS4KCldlZCBOb3YgIDYgMTA6MjI6MjYgMTk5NiAgVG9tIFRyb21leSAgPHRyb21leUBjeWdudXMuY29tPgoKCSogcmVtYWtlLWhkci5hbSAoc3RhbXAtaCk6IExvb2sgaW4gdG9wX2J1aWxkZGlyIGZvcgoJY29uZmlnLnN0YXR1cy4KCSgkKHNyY2Rpcikvc3RhbXAtaC5pbik6IExvb2sgaW4gdG9wX3NyY2RpciBmb3IgY29uZmlndXJlLmluLgoKVGh1IE9jdCAzMSAxMDo1NTo1OSAxOTk2ICBUb20gVHJvbWV5ICA8dHJvbWV5QGN5Z251cy5jb20+CgoJKiB0ZXhpbmZvcy5hbSAoLnRleGkuZHZpKTogU2V0IE1BS0VJTkZPIHdoZW4gcnVubmluZyB0ZXhpMmR2aS4KCUZyb20gSmltIE1leWVyaW5nLgoKCSogYXV0b21ha2UuaW4gKGhhbmRsZV90ZXhpbmZvKTogUHVzaCBpbnN0YWxsLWluZm8tYW0sIG5vdAoJaW5zdGFsbC1pbmZvLgoJKGhhbmRsZV9tZXJnZV90YXJnZXRzKTogSGFuZGxlIG5vLWluc3RhbGxpbmZvIG9wdGlvbi4KCgkqIHRleGluZm9zLmFtIChpbnN0YWxsLWluZm8tYW0pOiBSZW5hbWVkIGZyb20gaW5zdGFsbC1pbmZvLgoKCSogYXV0b21ha2UuaW4gKGhhbmRsZV9zdWJkaXJzKTogSW5jbHVkZSBpbnN0YWxsLWluZm8tcmVjdXJzaXZlIGlmCgluby1pbnN0YWxsaW5mbyBnaXZlbi4KCgkqIHN1YmRpcnMuYW06IEluY2x1ZGUgSU5TVEFMTElORk8gdG9rZW4uCgoJKiBhdXRvbWFrZS5pbiAoaGFuZGxlX3RleGluZm8pOiBFeHBsaWNpdGx5IGRlZmluZSBNQUtFSU5GTywKCVRFWEkyRFZJLgoJKGN5Z251c19tb2RlKTogTmV3IGdsb2JhbC4KCShoYW5kbGVfZGlzdF93b3JrZXIpOiBQYXNzIC0tY3lnbnVzIHRvIGF1dG9tYWtlLgoJKGluaXRpYWxpemVfZ2xvYmFsX2NvbnN0YW50cyk6IERvY3VtZW50IC0tY3lnbnVzLgoJKGNoZWNrX2N5Z251cyk6IE5ldyBzdWIuCgkoaGFuZGxlX3RleGluZm8pOiBEb24ndCByZXF1aXJlIHRleGluZm8udGV4IGluIEN5Z251cyBtb2RlLgoKCSogdGV4aS12YXJzLmFtOiBSZW1vdmVkLgoKCSogZGVqYWdudS5hbSAoY2hlY2stREVKQUdOVSk6IERvbid0IGRlZmluZSByb290bWUuCgoJKiBhdXRvbWFrZS5pbiAoaGFuZGxlX3Rlc3RzKTogRGVmaW5lIEVYUEVDVCwgUlVOVEVTVC4KCgkqIGRlamFnbnUuYW0gKEVYUEVDVCk6IFJlbW92ZWQuCgkoUlVOVEVTVCk6IFJlbW92ZWQuCgoJKiBhdXRvbWFrZS5pbiAoZGVmaW5lX3Byb2dyYW1fdmFyaWFibGUpOiBOZXcgc3ViLgoKTW9uIE9jdCAyOCAxMDo0Mzo0OCAxOTk2ICBUb20gVHJvbWV5ICA8dHJvbWV5QGN5Z251cy5jb20+CgoJKiBhdXRvbWFrZS5pbiAoaGFuZGxlX2RlcGVuZGVuY2llcyk6IFVzZSAtTSwgbm90IC1NTSwgZm9yIEMrKwoJZGVwZW5kZW5jaWVzLgoKVGh1IE9jdCAyNCAyMDoyMTo1MCAxOTk2ICBUb20gVHJvbWV5ICA8dHJvbWV5QGN5Z251cy5jb20+CgoJKiBhdXRvbWFrZS5pbiAoY2hlY2tfbGlib2Jqc19zb3VyY2VzKTogTmV3IHN1Yi4gIFRlc3QKCWxpYm9iajQudGVzdC4KCShoYW5kbGVfc291cmNlX3RyYW5zZm9ybSk6IERvbid0IGNoZWNrIGZvciBhdXRvLWRpc2NvdmVyZWQgc291cmNlCglmaWxlcyBoZXJlLgoJKGhhbmRsZV9wcm9ncmFtcyk6IFJ1biBjaGVja19saWJvYmpzX3NvdXJjZXMgaGVyZS4KCShoYW5kbGVfbGlicmFyaWVzKTogRGl0dG8uCgoJKiBhdXRvbWFrZS5pbiAoZGVmaW5lX2NvbmZpZ3VyZV92YXJpYWJsZSk6IE5ldyBmdW5jdGlvbi4KCShnZXRfb2JqZWN0X2V4dGVuc2lvbik6IFVzZSBkZWZpbmVfY29uZmlndXJlX3ZhcmlhYmxlLgoJKGhhbmRsZV95YWNjX2xleF9jeHgpOiBEaXR0by4KCShoYW5kbGVfZW1hY3NfbGlzcCk6IERpdHRvLgoJKGNvbmZpZ3VyZV92YXJzKTogTmV3IGdsb2JhbC4KCShBQ19DSEVDS19QQVRURVJOKTogTmV3IGdsb2JhbC4KCShzZWVuX3JhbmxpYiwgc2Vlbl9wcm9nX2NjLCBzZWVuX3Byb2dfY3h4LCBzZWVuX3Byb2dfbGV4KToKCVJlbW92ZWQuCgkoaGFuZGxlX3lhY2NfbGV4X2N4eCk6IFVzZSBjb25maWd1cmVfdmFycywgbm90IHNlZW5fcHJvZ18qLgoJKEFDX1NVQlNUX1BBVFRFUk4pOiBOZXcgZ2xvYmFsLgoJKHNjYW5fY29uZmlndXJlKTogVXNlIEFDX1NVQlNUX1BBVFRFUk47IGRvbid0IHNldCBzZWVuX3Byb2dfKi4KCShoYW5kbGVfbGlicmFyaWVzKTogRG9uJ3QgdXNlIHNlZW5fcmFubGliLgoJKHJlYWRfYW1fZmlsZSk6IFJ1biBkZWZpbmVfY29uZmlndXJlX3ZhcmlhYmxlIG9uIGVhY2ggZGlzY292ZXJlZAoJdmFyaWFibGUuCgpNb24gT2N0IDIxIDIzOjA2OjQ5IDE5OTYgIFRvbSBUcm9tZXkgIDx0cm9tZXlAY3lnbnVzLmNvbT4KCgkqIGF1dG9tYWtlLmluIChzY2FuX2NvbmZpZ3VyZSk6IEhhbmRsZSBBTV9JTklUX0dVSUxFX01PRFVMRS4KCShoYW5kbGVfbGlicmFyaWVzKTogUGFzcyBjb25maWd1cmUgc3Vic3RpdHV0aW9ucyBkaXJlY3RseSBvbiB0bwoJTElCRklMRVMuCgoJKiBhdXRvbWFrZS5pbiAoQU1fUEFDS0FHRV9WRVJTSU9OX1BBVFRFUk4pOiBOZXcgZ2xvYmFsLgoJKHNjYW5fY29uZmlndXJlKTogVXNlIGl0LiAgVGVzdCB2ZXJzaW9uLnRlc3QuCgpTdW4gT2N0IDIwIDEyOjA4OjQ2IDE5OTYgIFRvbSBUcm9tZXkgIDx0cm9tZXlAY3lnbnVzLmNvbT4KCgkqIGF1dG9tYWtlLmluIChoYW5kbGVfZGlzdF93b3JrZXIpOiBFeHBsaWNpdGx5IHBhc3MgZGlzdGRpciB0bwoJZGlzdC1ob29rIG1ha2UuICBGcm9tIFRhdHUgWWxvbmVuLgoKCSogbTQvc3RydG9kLm00OiBVc2UgY29ycmVjdCBjYWNoZSB2YXJpYWJsZS4KClRodSBPY3QgMTcgMTM6NDU6MjAgMTk5NiAgVG9tIFRyb21leSAgPHRyb21leUBjeWdudXMuY29tPgoKCUxpc3AgZml4ZXMgZnJvbSBFcmljayBCcmFuZGVyaG9yc3Q6CgkqIG00L2xpc3BkaXIubTQ6IERlZmluZSBsaXNwZGlyLCBub3QgTElTUERJUi4KCSogbGlzcC5hbTogQWRkZWQgbWlzc2luZyBcLgoKRnJpIE9jdCAxMSAwMDo0NDo0OSAxOTk2ICBUb20gVHJvbWV5ICA8dHJvbWV5QGN5Z251cy5jb20+CgoJKiBhdXRvbWFrZS5pbiAoaGFuZGxlX3NvdXJjZV90cmFuc2Zvcm0pOiBPbmx5IHJld3JpdGUgYywgeWFjYywgbGV4Cgl0byB1c2UgZGUtYW5zaS1maWNhdGlvbi4KCShzY2FuX2NvbmZpZ3VyZSk6IEhhbmRsZSBtdWx0aS1saW5lIEFDX1JFUExBQ0VfRlVOQ1MuICBUZXN0CglsaWJvYmo1LnRlc3QuCgoJKiBhdXRvbWFrZS5pbiAoaGFuZGxlX2xpYl9vYmplY3RzKTogQWRkZWQgJGxleF9zZWVuIGFyZ3VtZW50LgoJRXJyb3IgaWYgbGV4IGZpbGUgdXNlZCBidXQgTEVYTElCIG5vdCBzZWVuLgoJKGhhbmRsZV9wcm9ncmFtcyk6IERpdHRvLgoJKGhhbmRsZV95YWNjX2xleF9jeHgpOiBEZWZpbmUgTEVYTElCIHZhcmlhYmxlLgoJKGhhbmRsZV9saWJfb2JqZWN0cyk6IERvbid0IGFsbG93IExFWExJQiB0byBlbmQgdXAgb24gZGVwZW5kZW5jeQoJbGlzdC4KClRodSBPY3QgMTAgMTY6MTI6MzggMTk5NiAgVG9tIFRyb21leSAgPHRyb21leUBjeWdudXMuY29tPgoKCSogYXV0b21ha2UuaW4gKGhhbmRsZV9nZXR0ZXh0KTogTW92ZWQgY2hlY2sgZm9yIFNVQkRJUlMgYW5kCglBQk9VVC1OTFMgaGVyZS4KCgkqIGF1dG9tYWtlLmluIChoYW5kbGVfY29uZmlndXJlKTogUnVuIG1raW5zdGFsbGRpcnMgdW5kZXIKCSQoU0hFTEwpLgoJKGhhbmRsZV95YWNjX2xleF9jeHgpOiBSdW4gaW50ZXJsb2NrIHVuZGVyICQoU0hFTEwpLgoKCSogcmVtYWtlLXN1YmQuYW0gKE1ha2VmaWxlKTogUnVuIGNvbmZpZy5zdGF0dXMgdW5kZXIgJChTSEVMTCkuCgkqIHJlbWFrZS1oZHIuYW0gKHN0YW1wLWgpOiBSdW4gY29uZmlnLnN0YXR1cyB1bmRlciAkKFNIRUxMKS4KCSogcmVtYWtlLmFtIChNYWtlZmlsZSk6IFJ1biBjb25maWcuc3RhdHVzIHVuZGVyICQoU0hFTEwpLgoJKGNvbmZpZy5zdGF0dXMpOiBEaXR0by4KCgkqIGF1dG9tYWtlLmluIChyZWFkX2FtX2ZpbGUpOiBSZW1vdmVkIFVOTUFJTlQgY29kZS4KCShmaWxlX2NvbnRlbnRzX3dpdGhfdHJhbnNmb3JtKTogRGl0dG8uCgkqIG00L21haW50YWluZXIubTQ6IFJlbW92ZWQgYm9ndXMgVU5NQUlOVCBjb2RlLgoKCSogYXV0b21ha2UuaW4gKGhhbmRsZV9lbWFjc19saXNwKTogRGVmaW5lIEVNQUNTIHZhcmlhYmxlLgoJKGhhbmRsZV9lbWFjc19saXNwKTogTWFrZSBzdXJlIEVNQUNTIGlzIGluIGVudmlyb25tZW50IHdoZW4KCWVsaXNwLWNvbXAgaXMgcnVuLgoKCSogZWxpc3AtY29tcDogRXhpdCB3aXRoIHN0YXR1cyAxIGlmIHVzYWdlIGJhZC4KCVVzZSAiZW1hY3MgLXEiLiAgVXNlIEVNQUNTIGVudmlyb25tZW50IHZhcmlhYmxlIGlmIHNldCAodW5sZXNzIHNldAoJdG8gdCkuCgoJKiBtNC9saXNwZGlyLm00OiBVbnNldCBFTUFDUyBpZiBpdCBpcyBzZXQgdG8gYHQnLgoKCSogYXV0b21ha2UuaW4gKGhhbmRsZV9kaXN0X3dvcmtlcik6IEFsbG93IEVYVFJBX0RJU1QgaXRlbXMgdG8gYmUKCWluIHN1YmRpcnMuCgkoZG9fb25lX21lcmdlX3RhcmdldCk6IFVzZSBhbGwtYW0sIG5vdCBhbGwsIGluIHN1YmRpcnMgY2FzZS4KCShoYW5kbGVfbWVyZ2VfdGFyZ2V0cyk6IEFsd2F5cyBnZW5lcmF0ZSBhbGwtYW0gaW4gc3ViZGlycyBjYXNlLgoKCSogcmVtYWtlLmFtIChNYWtlZmlsZSk6IERlcGVuZCBvbiBCVUlMVF9TT1VSQ0VTLgoJKiByZW1ha2Utc3ViZC5hbSAoTWFrZWZpbGUpOiBEZXBlbmQgb24gQlVJTFRfU09VUkNFUy4KCSogZGVwZW5kLmFtICguZGVwcy8uUCk6IERvbid0IGRlcGVuZCBvbiBCVUlMVF9TT1VSQ0VTLgoKCSogYXV0b21ha2UuaW4gKGhhbmRsZV95YWNjX2xleF9jeHgpOiBIYW5kbGUgeS50YWIuaCBpbiBub24teWx3cmFwCgljYXNlLgoKCSogeWx3cmFwOiBCdWcgZml4LiAgRnJvbSBKaW0gTWV5ZXJpbmcuCgpXZWQgT2N0ICA5IDIyOjUxOjE2IDE5OTYgIFRvbSBUcm9tZXkgIDx0cm9tZXlAY3lnbnVzLmNvbT4KCgkqIG00L21rdGltZS5tNDogRG9uJ3QgZGVmaW5lIEFDX0hFQURFUl9TWVNfVElNRV9IOyBpbnN0ZWFkIGp1c3QKCWNoZWNrIGRpcmVjdGx5IGZvciBoZWFkZXIuCgpNb24gT2N0ICA3IDEzOjA4OjE1IDE5OTYgIFRvbSBUcm9tZXkgIDx0cm9tZXlAY3lnbnVzLmNvbT4KCgkqIGF1dG9tYWtlLmluIChzY2FuX2NvbmZpZ3VyZSk6IGZwX1dJVEhfRE1BTExPQyBhbmQgZnBfV0lUSF9SRUdFWAoJYXJlIG9ic29sZXRlLgoKU3VuIE9jdCAgNiAwMDo0MzowMSAxOTk2ICBUb20gVHJvbWV5ICA8dHJvbWV5QGN5Z251cy5jb20+CgoJKiBhdXRvbWFrZS5pbiAoQUNfQ09ORklHX0FVWF9ESVJfUEFUVEVSTik6IE5ldyBnbG9iYWwuCgkoQU1fSU5JVF9BVVRPTUFLRV9QQVRURVJOKTogTmV3IGdsb2JhbC4KCShzY2FuX2NvbmZpZ3VyZSk6IFVzZSB0aGVtLgoKCSogYWNsb2NhbC5pbiAoYWRkX2ZpbGUpOiBTZWFyY2ggY29udGVudHMgb2YgaW5jbHVkZWQgZmlsZXMuICBUZXN0CglyZXEudGVzdC4KCShzY2FuX200X2ZpbGVzKTogRG9uJ3Qgc2tpcCBhY2luY2x1ZGUubTQgd2hlbiBjb25zdHJ1Y3RpbmcKCXNlYXJjaC4gIFRlc3QgYWNzaWxlbnQudGVzdC4KCShzY2FuX200X2ZpbGVzKTogU2NhbiBhY2luY2x1ZGUubTQuCgoJKiBhY2xvY2FsLmluIChhZGRfZmlsZSk6IFJlbW92ZWQgZGVidWdnaW5nIHByaW50LgoJKHNjYW5fY29uZmlndXJlKTogU2V0ICRmaWxlX2NvbnRlbnRzIHdoZW4gc2Nhbm5pbmcgYWNpbmNsdWRlLm00LgoJVGVzdCBhY2luY2x1ZGUudGVzdC4KCgkqIGNvbmZpZ3VyZS5pbjogVXBwZWQgdG8gMS4xZy4KCgkqIFJlbGVhc2VkIDEuMWYuCgoJKiB0ZXhpbmZvcy5hbTogUnVuIDogYWZ0ZXIgaW5zdGFsbC1pbmZvLgoKCSogYWNsb2NhbC5pbiAocGFyc2VfYXJndW1lbnRzKTogQmV0dGVyIGVycm9yIG1lc3NhZ2UuCgkqIGF1dG9tYWtlLmluIChwYXJzZV9hcmd1bWVudHMpOiBCZXR0ZXIgZXJyb3IgbWVzc2FnZS4KCgkqIHJlbWFrZS5hbSAoTWFrZWZpbGUpOiBEZXBlbmQgb24gJChzcmNkaXIpL01ha2VmaWxlLmluLCB0byB3b3JrCglhcm91bmQgYnJva2VuIG1ha2VzLiAgRnJvbSBEYXZpZCBBLiBTd2llcmN6ZWsuCgkqIHJlbWFrZS1zdWJkLmFtIChNYWtlZmlsZSk6IERpdHRvLgoKU2F0IE9jdCAgNSAxMToyOTo0OCAxOTk2ICBUb20gVHJvbWV5ICA8dHJvbWV5QGN5Z251cy5jb20+CgoJKiBhdXRvbWFrZS5pbiAoZ2VuZXJhdGVfbWFrZWZpbGUpOiBQdXQgQlVJTFRfU09VUkNFUyBvbnRvIEBhbGwgaWYKCWFwcHJvcHJpYXRlLgoJKGhhbmRsZV9zb3VyY2VfdHJhbnNmb3JtKTogRXJyb3IgaWYgZGlzY292ZXJlZCBzb3VyY2UgZmlsZSBpcwoJbWVudGlvbmVkLgoJKGRvX29uZV9tZXJnZV90YXJnZXQpOiBNb3ZlIGFsbC12cy1jaGVjayB0ZXN0IGhlcmUuCgoJKiBtNC9vYnN0YWNrLm00OiBOZXcgZmlsZS4KCSogbTQvZXJyb3IubTQ6IE5ldyBmaWxlLgoKCSogYXV0b21ha2UuaW4gKHNjYW5fY29uZmlndXJlKTogU3VwcG9ydCBBTV9GVU5DX01LVElNRSwKCUFNX0ZVTkNfRVJST1JfQVRfTElORSwgQU1fRlVOQ19PQlNUQUNLLgoKCSogdGV4aW5mby50ZXg6IE5ldyB2ZXJzaW9uIGZyb20gdGV4aW5mbyAzLjkuCgoJKiBhdXRvbWFrZS5pbiAoaGFuZGxlX3lhY2NfbGV4X2N4eCk6IFVwZGF0ZWQgZm9yIG5ldyB5bHdyYXAuCglBbHNvLCBoYW5kbGUgeS50YWIuaCBmaWxlIHdoZW4gInlhY2MgLWQiIGlzIHVzZWQuCgkoZG9fb25lX21lcmdlX3RhcmdldCk6IFVzZSBwcmV0dHlfcHJpbnRfcnVsZS4KCgkqIHlsd3JhcDogQ2hhbmdlZCB1c2FnZS4KCgkqIG00L21rdGltZS5tNDogTmV3IGZpbGUuCgoJKiBtNDogUmVuYW1lZCBhbGwgLm00IGZpbGVzIHRvIGZpdCBpbnRvIDE0LWNoYXIgbGltaXRzLgoKCSogbTQvTWFrZWZpbGUuYW0gKEVYVFJBX0RJU1QpOiBOZXcgbWFjcm8uCgoJKiBhY2xvY2FsLmluICgkYWNfZGVmdW5fcngsICVtYXAsICVmaWxlX2NvbnRlbnRzKTogTmV3IGdsb2JhbHMuCgkoc2Nhbl9tNF9maWxlcyk6IFVzZSAkYWNfZGVmdW5fcnguCgkoYWRkX2ZpbGUpOiBEaXR0by4KCVJ1biBzY2FuX200X2ZpbGVzLgoJKHNjYW5fY29uZmlndXJlKTogU2NhbiBhY2luY2x1ZGUubTQgYmVmb3JlIGFueXRoaW5nIGVsc2UuCgkoc2Nhbl9maWxlKTogTmV3IHN1Yi4KCShjaGVja19hY2luY2x1ZGUpOiBOZXcgc3ViLgoJKGFkZF9maWxlKTogUmV3cm90ZS4KCgkqIHByb2dzLWNsZWFuLmFtLCBwcm9ncy5hbTogUmVuYW1lZCBmcm9tIHByb2dyYW1zLWNsZWFuLmFtLAoJcHJvZ3JhbXMuYW0uCgkqIGxpYnMtY2xlYW4uYW0sIGxpYnMuYW06IFJlbmFtZWQgZnJvbSBsaWJyYXJpZXMtY2xlYW4uYW0sCglsaWJyYXJpZXMuYW0uCgkqIHRleGktdmFyczogUmVuYW1lZCBmcm9tIHRleGluZm9zLXZhcnMuYW0uCgkqIGNvbXAtdmFycy5hbTogUmVuYW1lZCBmcm9tIGNvbXBpbGUtdmFycy5hbS4KCSogdGV4aS12ZXJzLmFtOiBSZW5hbWVkIGZyb20gdGV4aS12ZXJzaW9uLmFtLgoKCSogYXV0b21ha2UuaW4gKHJlcXVpcmVfZmlsZV9pbnRlcm5hbCk6IEdpdmUgZXJyb3IgaWYgc3ltbGluayBjYW4ndAoJYmUgbWFkZS4KCShyZXF1aXJlX2NvbmZpZ19maWxlKTogRXJyb3IgbWVzc2FnZSByZWZlcmVuY2VzIGNvbmZpZ3VyZS5pbi4KCShoYW5kbGVfeWFjY19sZXhfY3h4KTogRml4IG9yZGVyIG9mIGFyZ3VtZW50cyB0byB5bHdyYXA7IGZyb20KCUpvZXJnLU1hcnRpbiBTY2h3YXJ6LgoJKGhhbmRsZV90ZXhpbmZvKTogVXNlIHRleGktdmVycywgbm90IHRleGktdmVyc2lvbi4KCShnZXRfb2JqZWN0X2V4dGVuc2lvbik6IFVzZSBjb21wLXZhcnMsIG5vdCBjb21waWxlLXZhcnMuCgkoaGFuZGxlX3RleGluZm8pOiBVc2UgdGV4aS12YXJzLCBub3QgdGV4aW5mb3MtdmFycy4KCShoYW5kbGVfbGlicmFyaWVzKTogVXNlIGBsaWJzJyBwcmVmaXgsIG5vdCBgbGlicmFyaWVzJy4KCShoYW5kbGVfcHJvZ3JhbXMpOiBVc2UgYHByb2dzJyBwcmVmaXgsIG5vdCBgcHJvZ3JhbXMnLgoKRnJpIE9jdCAgNCAwMToxNDowOCAxOTk2ICBUb20gVHJvbWV5ICA8dHJvbWV5QGN5Z251cy5jb20+CgoJKiBhY2xvY2FsLmluIChzY2FuX200X2ZpbGVzKTogTmV3IHN1Yi4KCgkqIG00L0FNX0ZVTkNfU1RSVE9ELm00IChhbV9jdl9mdW5jX3N0cnRvZF9uZWVkc19saWJtKTogU2V0CglhbV9jdl9mdW5jX3N0cnRvZF9uZWVkc19saWJtLCBzbyB3ZSBjYW4gYXZvaWQgbGlua2luZyB3aXRoIC1sbQoJZXZlcnl3aGVyZS4KClRodSBPY3QgIDMgMjA6MTE6MTYgMTk5NiAgVG9tIFRyb21leSAgPHRyb21leUBjeWdudXMuY29tPgoKCSogdGV4aW5mb3MuYW0gKHVuaW5zdGFsbC1pbmZvKTogUnVuIGluc3RhbGwtaW5mbyAtLXJlbW92ZS4KCgkqIGF1dG9tYWtlLmluIChyZWFkX2FtX2ZpbGUpOiBEZWZpbmUgYWxsIHZhcmlhYmxlcyBhZnRlciByZWFkaW5nCgkuYW0gZmlsZS4gIFRlc3QgdnBhdGgudGVzdC4gIFJlcG9ydGVkIGJ5IEFudGhvbnkgR3JlZW4uCgpNb24gU2VwIDMwIDA4OjMxOjUxIDE5OTYgIFRvbSBUcm9tZXkgIDx0cm9tZXlAY3lnbnVzLmNvbT4KCgkqIHRleGluZm9zLmFtOiBSdW4gaW5zdGFsbC1pbmZvLgoKCSogYXV0b21ha2UuaW4gKHZhcmlhYmxlX3ZhbHVlX2FzX2xpc3QpOiBKdXN0IHJldHVybiBpZiBjb21tZW50CglzZWVuLiAgUmVwb3J0IGZyb20gTWFyayBHYWxhc3NpLgoJKGhhbmRsZV9vcHRpb25zKTogRG9uJ3QgYm90aGVyIHdpdGggZXhwbGljaXQgY29tbWVudCBjaGVja2luZy4KClR1ZSBTZXAgMjQgMDk6MTU6NDYgMTk5NiAgVG9tIFRyb21leSAgPHRyb21leUBjcmVjaGUuY3lnbnVzLmNvbT4KCgkqIGF1dG9tYWtlLmluIChyZWFkX2FtX2ZpbGUpOiBDbGVhbmVkIHVwIGRlamFnbnUgdmFyaWFibGVzLgoKTW9uIFNlcCAyMyAwMDowNDo0OCAxOTk2ICBUb20gVHJvbWV5ICA8dHJvbWV5QGNyZWNoZS5jeWdudXMuY29tPgoKCSogYXV0b21ha2UuaW4gKHBhcnNlX2FyZ3VtZW50cyk6IE5ldyB1c2FnZSB0byBjb25mb3JtIHRvIEdOVQoJc3RhbmRhcmRzLgoKCSogYWNsb2NhbC5pbiAocGFyc2VfYXJndW1lbnRzKTogTmV3IHVzYWdlIHRvIGNvbmZvcm0gdG8gR05VCglzdGFuZGFyZHMuCgoJKiBhdXRvbWFrZS5pbiAoaGFuZGxlX3NjcmlwdHMpOiBQdXNoIG5ldyB0YXJnZXQgb250byBAY2hlY2suCgkqIHNjcmlwdHMuYW0gKGNoZWNrLUBESVJAU0NSSVBUUyk6IE5ldyB0YXJnZXQuCgoJKiBhdXRvbWFrZS5pbiAoaW5pdGlhbGl6ZV9nbG9iYWxfY29uc3RhbnRzKTogRGVmaW5lICVkaXN0LAoJZGlzdF9oZWFkZXIsIGRpc3RfdHJhaWxlci4KCShoYW5kbGVfZGlzdCk6IE1ha2UgZGlzdC1hbGwgdGFyZ2V0LgoJKGdlbmVyYXRlX21ha2VmaWxlKTogUnVuIGNoZWNrX3R5cG9zIGxhdGVyLgoJKGV4YW1pbmVfdmFyaWFibGUpOiBOZXcgc3ViLgoJKGhhbmRsZV90YWdzKTogRXhhbWluZSBUQUdTX0RFUEVOREVOQ0lFUy4gIFRlc3Qgc3BlbGwzLnRlc3QuCglFcnJvciBpZiBUQUdTX0RFUEVOREVOQ0lFUyBidXQgbm8gc291cmNlcyB1c2VkLgoJKGhhbmRsZV9jb25maWd1cmUpOiBFeGFtaW5lIENPTkZJR1VSRV9ERVBFTkRFTkNJRVMuCgpTYXQgU2VwIDIxIDEzOjU5OjE1IDE5OTYgIFRvbSBUcm9tZXkgIDx0cm9tZXlAY3JlY2hlLmN5Z251cy5jb20+CgoJKiBhdXRvbWFrZS5pbiAoYW1faW5zdGFsbF92YXIpOiBNb3JlIGVycm9yIGNoZWNraW5nLgoKRnJpIFNlcCAyMCAwOTowNjozNyAxOTk2ICBUb20gVHJvbWV5ICA8dHJvbWV5QGNyZWNoZS5jeWdudXMuY29tPgoKCSogdGFncy5hbSAoVEFHUyk6IE1pbm9yIGNsZWFudXAuCgoJKiBjbGVhbi5hbSAoZGlzdGNsZWFuLWdlbmVyaWMpOiBEb24ndCByZW1vdmUgQ09ORklHX0hFQURFUi4KCgkqIHJlbWFrZS1oZHIuYW0gKG1vc3RseWNsZWFuLWhkciwgY2xlYW4taGRyLCBkaXN0Y2xlYW4taGRyLAoJbWFpbnRhaW5lci1jbGVhbi1oZHIpOiBOZXcgdGFyZ2V0cy4KCgkqIGF1dG9tYWtlLmluIChoYW5kbGVfY29uZmlndXJlKTogRGVmaW5lIENPTkZJR19IRUFERVIgY29ycmVjdGx5Cgl3aGVuIGl0IGlzIGluIGN1cnJlbnQgZGlyZWN0b3J5LgoJKGhhbmRsZV9jb25maWd1cmUpOiBQdXNoICJoZHIiIG9uIEBjbGVhbi4KCgkqIHJlbWFrZS1oZHIuYW0gKHN0YW1wLWgpOiBSdW4gY29uZmlnLnN0YXR1cyBpbiB0b3BfYnVpbGRkaXIuCgkoJChzcmNkaXIpL3N0YW1wLWguaW4pOiBSdW4gYXV0b2hlYWRlciBpbiB0b3Bfc3JjZGlyLgoKCSogYXV0b21ha2UuaW4gKHNjYW5fY29uZmlndXJlKTogQ2hlY2sgZm9yIGluc3RhbGwuc2ggaGVyZS4KCShiYXNlbmFtZSk6IE5ldyBzdWIuCgkoaGFuZGxlX2NvbmZpZ3VyZSk6IEhhbmRsZSBjYXNlIHdoZXJlIGNvbmZpZy5oIGlzIGluIHN1YmRpci4KCShoYW5kbGVfY29uZmlndXJlKTogTWFrZSBzdGFtcC1pbi5oIGZvciB1c2VyIGlmIGl0IGRvZXNuJ3QgYWxyZWFkeQoJZXhpc3QuCgkodG91Y2gpOiBOZXcgc3ViLgoKVHVlIFNlcCAxNyAyMzozNToxNCAxOTk2ICBUb20gVHJvbWV5ICA8dHJvbWV5QGNyZWNoZS5jeWdudXMuY29tPgoKCSogTWFrZWZpbGUuYW0gKEVYVFJBX0RJU1QpOiBJbmNsdWRlIHBrZ2RhdGFfREFUQS4KCgkqIGRpc3QtdmFycy5hbSAoRElTVEZJTEVTKTogRG9uJ3QgZGlzdHJpYnV0ZSBCVUlMVF9TT1VSQ0VTIG9yCglEQVRBLgoJKERFUF9ESVNURklMRVMpOiBEaXR0by4KCk1vbiBTZXAgMTYgMjI6Mjg6NTYgMTk5NiAgVG9tIFRyb21leSAgPHRyb21leUBjcmVjaGUuY3lnbnVzLmNvbT4KCgkqIGF1dG9tYWtlLmluIChjaGVja190eXBvcyk6IFJlbmFtZWQuCgkoY2hlY2tfdHlwb3MpOiBDaGVjayBmb3IgX0xEQURELCBfTElCQURELCBhbmQgX0RFUEVOREVOQ0lFUy4KCSh2YXJpYWJsZV9kZWZpbmVkKTogTm90ZSB2YXJpYWJsZSBhcyBiZWluZyAic2VlbiIuCgkoaGFuZGxlX2xpYl9vYmplY3RzKTogRG9uJ3QgcHVzaCBjb25maWd1cmUgc3Vic3RpdHV0aW9ucyBvbnRvCglfREVQRU5ERU5DSUVTLgoKU3VuIFNlcCAxNSAyMjo0NTo0MyAxOTk2ICBUb20gVHJvbWV5ICA8dHJvbWV5QGNyZWNoZS5jeWdudXMuY29tPgoKCSogYXV0b21ha2UuaW4gKGluaXRpYWxpemVfcGVyX2lucHV0KTogSW5pdCBjb250ZW50X3NlZW4uCgkodmFyaWFibGVfdmFsdWVfYXNfbGlzdCk6IFNldCBjb250ZW50X3NlZW4gZW50cnkuCgkoZGVmaW5lX3ZhcmlhYmxlKTogRGl0dG8uCgkoZGVmaW5lX3ByZXR0eV92YXJpYWJsZSk6IERpdHRvLgoJKGNoZWNrX3NvdXJjZV90eXBvcyk6IE5ldyBzdWIuCgkoZ2VuZXJhdGVfbWFrZWZpbGUpOiBDYWxsIGl0LgoKVGh1IFNlcCAxMiAxNTowMzoxOSAxOTk2ICBUb20gVHJvbWV5ICA8dHJvbWV5QGNyZWNoZS5jeWdudXMuY29tPgoKCSogYXV0b21ha2UuaW4gKGhhbmRsZV9zb3VyY2VfdHJhbnNmb3JtKTogUmVtb3ZlZCBleHRyYW5lb3VzCglzcGFjZS4gIFRlc3QgaW1wbGljaXQudGVzdC4KCShyZWFkX2FtX2ZpbGUpOiBNYWtlIHN1cmUgImNhbm9uaWNhbCIgdmFyaWFibGVzIGFyZSBtZW50aW9uZWQgaW4KCSVjb250ZW50cy4KCShzY2FuX2NvbmZpZ3VyZSk6IEFDX0NIRUNLX1RPT0wgc2V0cyAkc2Vlbl9jYW5vbmljYWwgdG8KCSRBQ19DQU5PTklDQUxfSE9TVCBjb25kaXRpb25hbGx5LgoJKGhhbmRsZV9mb290ZXIpOiBEb24ndCB1c2UgZGVmaW5lX3ByZXR0eV92YXJpYWJsZSBpbiBhbGwgY2FzZXMuCgpXZWQgU2VwIDExIDExOjU0OjQ0IDE5OTYgIFRvbSBUcm9tZXkgIDx0cm9tZXlAY3JlY2hlLmN5Z251cy5jb20+CgoJKiBjbGVhbi5hbSAoZGlzdGNsZWFuLWdlbmVyaWMpOiBSZW1vdmUgQ09ORklHX0NMRUFOX0ZJTEVTIGhlcmUsCglwZXIgR05VL0duaXRzIHN0YW5kYXJkcy4KCgkqIGxpYnJhcmllcy5hbSAoaW5zdGFsbC1ARElSQExJQlJBUklFUyk6IFVzZSB0d28gbG9vcHMsIHNvIG5ldwoJTk9STUFMX0lOU1RBTEwgYW5kIFBPU1RfSU5TVEFMTCB2YXJpYWJsZXMgY2FuIHdvcmsgd2hlbiBlbXB0eS4KCgkqIGF1dG9tYWtlLmluIChoYW5kbGVfb3B0aW9ucyk6IFJld3JvdGUgdmVyc2lvbiBoYW5kbGluZy4gIE5vdwoJcmV0dXJucyBlcnJvciBpbmRpY2F0b3IuCgkoTUFDUk9fUEFUVEVSTiwgQk9HVVNfTUFDUk9fUEFUVEVSTik6IEhhbmRsZSBgOj0nIGRlZmluaXRpb25zLgoJKFJVTEVfUEFUVEVSTik6IEV4Y2x1ZGUgYDo9JyBmcm9tIGJlaW5nIGEgcnVsZS4KCgkqIG00L0FNX1BST0dfQ0NfU1REQy5tNCAoYWNfc2F2ZV9DQyk6IEJ1ZyBmaXggZnJvbSBKaW0gTWV5ZXJpbmcuCgoJKiBhdXRvbWFrZS5pbiAodmFyaWFibGVfdmFsdWVfYXNfbGlzdCk6IEFsd2F5cyB1c2UgYW1fbGluZV9lcnJvci4KCShkZWZpbmVfdmFyaWFibGUpOiBOZXcgc3ViLgoJKGdldF9vYmplY3RfZXh0ZW5zaW9uKTogVXNlIGRlZmluZV92YXJpYWJsZS4KCShoYW5kbGVfeWFjY19sZXhfY3h4KTogRGl0dG8uCgkoaGFuZGxlX3NvdXJjZV90cmFuc2Zvcm0pOiBEaXR0by4KCShoYW5kbGVfcHJvZ3JhbXMpOiBEaXR0by4KCShoYW5kbGVfbGlicmFyaWVzKTogRGl0dG8uCgkoaGFuZGxlX3RleGluZm8pOiBEaXR0by4KCShoYW5kbGVfbWFuX3BhZ2VzKTogRGl0dG8uCgkoaGFuZGxlX2RlcGVuZGVuY2llcyk6IERpdHRvLgoJKGhhbmRsZV9hY2xvY2FsX200KTogRGl0dG8uCgkoZGVmaW5lX3ByZXR0eV92YXJpYWJsZSk6IE5ldyBzdWIuCgkoaGFuZGxlX3NvdXJjZV90cmFuc2Zvcm0pOiBVc2UgZGVmaW5lX3ByZXR0eV92YXJpYWJsZS4KCShoYW5kbGVfbGliX29iamVjdHMpOiBEaXR0by4KCShoYW5kbGVfbGlicmFyaWVzKTogRGl0dG8uCgkoaGFuZGxlX2Rpc3QpOiBEaXR0by4KCShoYW5kbGVfZGVwZW5kZW5jaWVzKTogRGl0dG8uCgkoaGFuZGxlX2NvbmZpZ3VyZSk6IERpdHRvLgoJKGhhbmRsZV9mb290ZXIpOiBEaXR0by4KCShoYW5kbGVfZW1hY3NfbGlzcCk6IERpdHRvLgoJKGFtX2luc3RhbGxfdmFyKTogRGl0dG8uCgoJKiBSZWxlYXNlZCB2ZXJzaW9uIDEuMWUuCgoJKiBhdXRvbWFrZS5pbiAoJEdOSVRTX1ZFUlNJT05fUEFUVEVSTik6IEhhbmRsZSBub24tYWxwaGEKCXJlbGVhc2VzLgoKCSogY29uZmlndXJlLmluOiBWZXJzaW9uIDEuMWUuCgoJKiBhdXRvbWFrZS5pbiAoaGFuZGxlX3RleGluZm8pOiBEaXN0cmlidXRlIC5pbmZvIGZpbGUuCgpTdW4gU2VwICA4IDA5OjAwOjM3IDE5OTYgIFRvbSBUcm9tZXkgIDx0cm9tZXlAY3JlY2hlLmN5Z251cy5jb20+CgoJKiBNYWtlZmlsZS5hbSAoRVhUUkFfRElTVCk6IE5ldyBtYWNyby4KCShtYWludGFpbmVyLWNsZWFuKTogRG9uJ3QgcnVuICJtYWtlIGNoZWNrIi4KCShwYXRoY2hrKTogTmV3IHRhcmdldC4KCgkqIGF1dG9tYWtlLmluIChjaGVja19nbml0c19zdGFuZGFyZHMpOiBPbmx5IGNoZWNrIHZlcnNpb24gbnVtYmVyCglzeW50YXggYXQgdG9wIGxldmVsLgoJKCRwYWNrYWdlX3ZlcnNpb25fbGluZSk6IE5ldyB2YXJpYWJsZS4KCShzY2FuX2NvbmZpZ3VyZSk6IFNldCBpdC4KCShjaGVja19nbml0c19zdGFuZGFyZHMpOiBVc2UgYW1fY29uZl9saW5lX2Vycm9yLgoJKHNjYW5fY29uZmlndXJlKTogUmVtb3ZlIGV4dHJhbmVvdXMgd2hpdGVzcGFjZSBmcm9tIHZlcnNpb24KCW51bWJlci4KCShoYW5kbGVfZGlzdCk6IEhhbmRsZSBkaXN0Y2hlY2staG9vay4KCgkqIG00L0FNX1BST0dfQ0NfU1REQy5tNDogQXBwbGllZCBwYXRjaCBmcm9tIEppbSBNZXllcmluZy4KCgkqIGF1dG9tYWtlLmluIChzY2FuX2NvbmZpZ3VyZSk6IEhhbmRsZSBBTV9XSVRIX1JFR0VYLgoJKGhhbmRsZV9saWJfb2JqZWN0cyk6IFJlcXVpcmUgLmggZmlsZXMgaW4gJWxpYnNvdXJjZXMgYnV0IGRvbid0CglnZW5lcmF0ZSBkZXBlbmRlbmNpZXMgZm9yIHRoZW0uCgkoc2Nhbl9jb25maWd1cmUpOiBBbHNvIHJlcXVpcmUgcnguaCBhbmQgcmVnZXguaC4KCgkqIG00L01ha2VmaWxlLmFtIChtNGRhdGFfREFUQSk6IERvbid0IGluY2x1ZGUgQU1fUFJPR19MSUJUT09MLAoJQU1fRkVBVFVSRV9DVFlQRSwgQU1fRkVBVFVSRV9FUlJOTywgQU1fRkVBVFVSRV9FWElULAoJQU1fU1lTVEVNX0hFQURFUi4KCgkqIHRleGktdmVyc2lvbi5hbTogVXNlICJjcDsgcm0iIGFuZCBub3QgIm12IiwgdG8gd29yayBhcm91bmQKCWJyb2tlbiBtdnMuCgoJKiBhdXRvbWFrZS5pbiAoJHBhY2thZ2VfdmVyc2lvbik6IE5ldyBnbG9iYWwuCgkoc2Nhbl9jb25maWd1cmUpOiBTZXQgaXQuCgkoY2hlY2tfZ25pdHNfc3RhbmRhcmRzKTogVmVyaWZ5IHZlcnNpb24gc3RyaW5nOyByZXF1aXJlCglSRUFETUUtYWxwaGEgaWYgYWxwaGEgdmVyc2lvbi4KCShzY2FuX2NvbmZpZ3VyZSk6IFJlY29nbml6ZSBBTV9GVU5DX0ZOTUFUQ0gsCglBTV9SRVBMQUNFX0dOVV9HRVRPUFQuCgoJKiBNYWtlZmlsZS5hbSAoaW5zdGFsbGNoZWNrLWxvY2FsKTogQ2hlY2sgYWxsIHNjcmlwdHMuCgpTYXQgU2VwICA3IDE5OjIyOjMyIDE5OTYgIFRvbSBUcm9tZXkgIDx0cm9tZXlAY3JlY2hlLmN5Z251cy5jb20+CgoJKiB0YWdzLWNsZWFuLmFtOiBEbyBkZWxldGlvbnMgaGVyZSBhZ2Fpbi4KClRodSBTZXAgIDUgMDk6MDY6MjMgMTk5NiAgVG9tIFRyb21leSAgPHRyb21leUBjcmVjaGUuY3lnbnVzLmNvbT4KCgkqIGF1dG9tYWtlLmluICh1c2FnZSk6IEluY2x1ZGUgYnVnLXJlcG9ydGluZyBpbmZvcm1hdGlvbi4KCShoYW5kbGVfbGliX29iamVjdHMpOiBFcnJvciBpZiBMSUJPQkpTIHNlZW4gYnV0IG5ldmVyIHNldC4KCgkqIGFjbG9jYWwuaW4gKCRhY2Rpcik6IFVzZSBAZGF0YWRpckAvYWNsb2NhbC4KCSh1c2FnZSk6IEluY2x1ZGUgYnVnLXJlcG9ydGluZyBpbmZvcm1hdGlvbi4KCldlZCBTZXAgIDQgMTE6MzY6MDYgMTk5NiAgVG9tIFRyb21leSAgPHRyb21leUBjcmVjaGUuY3lnbnVzLmNvbT4KCgkqIGF1dG9tYWtlLmluIChoYW5kbGVfc291cmNlX3RyYW5zZm9ybSk6IC5kZXBzIG5vIGxvbmdlciBpbgoJc3JjZGlyLgoJKGhhbmRsZV9saWJfb2JqZWN0cyk6IERpdHRvLgoJKGhhbmRsZV9kaXN0X3dvcmtlcik6IFBhc3MgLS1idWlsZC1kaXIgdG8gYXV0b21ha2UuCgkoJGJ1aWxkX2RpcmVjdG9yeSk6IE5ldyBnbG9iYWwuCgkocGFyc2VfYXJndW1lbnRzKTogSGFuZGxlIC0tYnVpbGQtZGlyLgoJKGluaXRpYWxpemVfZ2xvYmFsX2NvbnN0YW50cyk6IEluY2x1ZGUgLS1idWlsZC1kaXIgaW4gaGVscC4KCShzY2FuX2RlcGVuZGVuY3lfZmlsZSk6IE5ldyBzdWIuCgkoaGFuZGxlX2RlcGVuZGVuY2llcyk6IFVzZSBpdC4gIEFsc28sIHVzZSAkYnVpbGRfZGlyZWN0b3J5LgoJKGluaXRpYWxpemVfZ2xvYmFsX2NvbnN0YW50cyk6IEFkZGVkIC0tc3JjZGlyLW5hbWUuCgkocGFyc2VfYXJndW1lbnRzKTogRGl0dG8uCgkoaGFuZGxlX2Rpc3Rfd29ya2VyKTogRGl0dG8uCgkoJHNyY2Rpcl9uYW1lKTogTmV3IGdsb2JhbC4KCSgkc3JjZGlyX3J4KTogTmV3IGdsb2JhbC4KCShwYXJzZV9hcmd1bWVudHMpOiBTZXQgaXQuCgoJKiBkZXBlbmQyLmFtOiBSZW1vdmVkIGFsbCBtZW50aW9uIG9mICQoc3JjZGlyKS4KCgkqIGRlcGVuZC5hbSAoTUtERVApOiBVc2UgZ2NjIC1NLCBub3QgZ2NjIC1NTS4KCVJlbW92ZWQgYWxsIG1lbnRpb24gb2YgJChzcmNkaXIpOyBkZXBlbmRlbmNpZXMgbm93IHB1dCBpbnRvIGJ1aWxkCglkaXIuCgoJKiBkZXBlbmQyLmFtICgkKHNyY2RpcikvLmRlcHMvJS5QKTogRml4ZWQgY29tcHV0YXRpb24gb2YgYHRvcCcuCglEb24ndCBkbyB3b3JrIHNpbGVudGx5LgoKCSogYXV0b21ha2UuaW4gKGhhbmRsZV9tZXJnZV90YXJnZXRzKTogRXJyb3IgaWYgaW52YWxpZCB1bmluc3RhbGwKCXRhcmdldHMgYXJlIGdpdmVuLgoJKHJlYWRfYW1fZmlsZSk6IEZpeCBmb3IgdGVzdCBibG9jay50ZXN0LgoKVHVlIFNlcCAgMyAxODo1MDozMiAxOTk2ICBUb20gVHJvbWV5ICA8dHJvbWV5QGNyZWNoZS5jeWdudXMuY29tPgoKCSogdGV4aW5mb3MuYW0gKGluc3RhbGwtaW5mbyk6IEFkZGVkIE5PUk1BTF9JTlNUQUxMLgoJKiBzY3JpcHRzLmFtIChpbnN0YWxsLUBESVJAU0NSSVBUUyk6IEFkZGVkIE5PUk1BTF9JTlNUQUxMLgoJKiBwcm9ncmFtcy5hbSAoaW5zdGFsbC1ARElSQFBST0dSQU1TKTogQWRkZWQgTk9STUFMX0lOU1RBTEwuCgkqIGxpc3AuYW0gKGluc3RhbGwtQERJUkBMSVNQKTogQWRkZWQgTk9STUFMX0lOU1RBTEwuCgkqIGxpYnJhcmllcy5hbSAoaW5zdGFsbC1ARElSQExJQlJBUklFUyk6IEFkZGVkIE5PUk1BTF9JTlNUQUxMLgoJQWxzbywgdXNlIFBPU1RfSU5TVEFMTCB3aGVuIHJ1bm5pbmcgcmFubGliLgoJKiBoZWFkZXIuYW0gKGluc3RhbGwtQERJUkBIRUFERVJTKTogQWRkZWQgTk9STUFMX0lOU1RBTEwuCgkqIGRhdGEuYW0gKGluc3RhbGwtQERJUkBEQVRBKTogQWRkZWQgTk9STUFMX0lOU1RBTEwuCgoJKiBhdXRvbWFrZS5pbiAoaGFuZGxlX21hbl9wYWdlcyk6IEFkZGVkIE5PUk1BTF9JTlNUQUxMIGludm9jYXRpb24uCgkoaGFuZGxlX21lcmdlX3RhcmdldHMpOiBEaXR0by4KCShoYW5kbGVfbWVyZ2VfdGFyZ2V0cyk6IEVycm9yIGlmIFBSRV9JTlNUQUxMLCBQT1NUX0lOU1RBTEwsIG9yCglOT1JNQUxfSU5TVEFMTCBkZWZpbmVkLgoKCSogbTQvQU1fUFJPR19JTlNUQUxMLm00OiBJTlNUQUxMX1NDUklQVCBkZWZhdWx0cyB0bwoJJHtJTlNUQUxMX1BST0dSQU19LiAgRnJvbSBGcmFu529pcyBQaW5hcmQuCgpUdWUgQXVnIDI3IDA4OjI1OjA1IDE5OTYgIFRvbSBUcm9tZXkgIDx0cm9tZXlAY3JlY2hlLmN5Z251cy5jb20+CgoJKiBhdXRvbWFrZS5pbiAoZmlsZV9jb250ZW50c193aXRoX3RyYW5zZm9ybSk6IENvcnJlY3RseSByZW1vdmUKCUAoVU4pP01BSU5UQCBmcm9tIGlucHV0IHdoZW4gbWFpbnRhaW5lciBtb2RlIG5vdCBhY3RpdmUuCgkoaGFuZGxlX2FjbG9jYWxfbTQpOiBIYW5kbGUgbm8tbWFpbnRhaW5lci1tb2RlIGNhc2UuCgoJKiByZW1ha2UtaGRyLmFtICgkKENPTkZJR19IRUFERVIpKTogUmVtb3ZlZCBATUFJTlRALgoKCSogbTQvQU1fU0FOSVRZX0NIRUNLX0NDLm00OiBOZXcgZmlsZSAoZnJvbSBKaW0gTWV5ZXJpbmcpLgoKTW9uIEF1ZyAyNiAyMTozNzozMiAxOTk2ICBUb20gVHJvbWV5ICA8dHJvbWV5QGNyZWNoZS5jeWdudXMuY29tPgoKCSogYXV0b21ha2UuaW4gKGhhbmRsZV9saWJfb2JqZWN0cyk6IEJ1ZyBmaXggZnJvbSBTdGV2ZSBNIFJvYmJpbnMuCgkoaGFuZGxlX2xpYnJhcmllcyk6IERvbid0IGluY2x1ZGUgbGlicmFyaWVzIGZyb20gRVhUUkFfTElCUkFSSUVTCglpbiBMSUJGSUxFUyBkZWZpbml0aW9uLiAgUmVwb3J0ZWQgYnkgU3RldmUgTSBSb2JiaW5zLiAgVGVzdAoJYWxsbGliLnRlc3QuCgoJKiBhdXRvbWFrZS5pbiAodmFyaWFibGVfdmFsdWVfYXNfbGlzdCk6IE5ldyBzdWIuCgkoaGFuZGxlX3NvdXJjZV90cmFuc2Zvcm0pOiBVc2UgaXQuCgkoaGFuZGxlX2xpYl9vYmplY3RzKTogRGl0dG8uCgkoaGFuZGxlX2xpYnJhcmllcyk6IERpdHRvLgoJKGhhbmRsZV90ZXhpbmZvKTogRGl0dG8uCgkoaGFuZGxlX21hbl9wYWdlcyk6IERpdHRvLgoJKGFtX2luc3RhbGxfdmFyKTogRGl0dG8uCgkoaGFuZGxlX29wdGlvbnMpOiBEaXR0by4KClNhdCBBdWcgMjQgMDk6MzA6NDYgMTk5NiAgVG9tIFRyb21leSAgPHRyb21leUBjcmVjaGUuY3lnbnVzLmNvbT4KCglSZXBvcnRlZCBieSBKaW0gTWV5ZXJpbmc6CgkqIGF1dG9tYWtlLmluIChnZXRfb2JqZWN0X2V4dGVuc2lvbik6IExvb2sgaW4gIi4vIiBmb3IgYW5zaTJrbnIgaWYKCW5vIHBhdGggZm91bmQuCgkoaGFuZGxlX2FjbG9jYWxfbTQpOiBQcm90ZWN0IGFjbG9jYWwubTQgcnVsZSB3aXRoIEBNQUlOVEAuCgoJKiByZW1ha2UuYW0gKC5QSE9OWSk6IE5ldyB0YXJnZXQuCgoJKiBtNC9BTV9NQUlOVEFJTkVSX01PREUubTQ6IEFsc28gZGVmaW5lIFVOTUFJTlQuCgoJKiBhdXRvbWFrZS5pbiAoY2hlY2tfZ251X3N0YW5kYXJkcyk6IERpc2FsbG93IG5vLWluc3RhbGxtYW4sCgluby1pbnN0YWxsaW5mby4KCShyZWFkX2FtX2ZpbGUpOiBTZWQgb3V0IFVOTUFJTlQgdG9vLgoJKGZpbGVfY29udGVudHNfd2l0aF90cmFuc2Zvcm0pOiBEaXR0by4KCgkqIGFjaW5zdGFsbDogTmV3IGZpbGUuCgoJKiBtNC9BTV9JTklUX0FVVE9NQUtFLm00OiBEZWZpbmUgUEFDS0FHRSBhbmQgVkVSU0lPTi4KCgkqIG00L0FNX1dJVEhfUkVHRVgubTQ6IE5ldyB2ZXJzaW9uIGZyb20gRnJhbudvaXMgUGluYXJkLgoKCSogbTQvQU1fVFlQRV9QVFJESUZGX1QubTQ6IFVzZSBhbV9jdiwgbm90IGFjX2N2LgoJKiBtNC9BTV9DX1BST1RPVFlQRVMubTQ6IERpdHRvLgoJKiBtNC9BTV9GVU5DX1NUUlRPRC5tNDogRGl0dG8uCgkqIG00L0FNX1BST0dfQ0NfU1REQy5tNDogRGl0dG8uCgkqIG00L0FNX1BST0dfTElCVE9PTC5tNDogRGl0dG8uCgpGcmkgQXVnIDIzIDIyOjIzOjUwIDE5OTYgIFRvbSBUcm9tZXkgIDx0cm9tZXlAY3JlY2hlLmN5Z251cy5jb20+CgoJKiBtNC9NYWtlZmlsZS5hbSAobTRkYXRhZGlyKTogTmV3IG1hY3JvCgkobTRkYXRhX0RBVEEpOiBSZW5hbWVkLgoKCSogTWFrZWZpbGUuYW0gKGN2cy1kaXN0KTogRGVwZW5kIG9uIGRpc3RjaGVjayB0YXJnZXQuCgpNb24gQXVnIDE5IDE1OjM3OjMyIDE5OTYgIFRvbSBUcm9tZXkgIDx0cm9tZXlAY3JlY2hlLmN5Z251cy5jb20+CgoJKiBhdXRvbWFrZS5pbiAoaW5pdGlhbGl6ZV9nbG9iYWxfY29uc3RhbnRzKTogW2NvbW1vbl9maWxlc10KCUluY2x1ZGUgYWNpbmNsdWRlLm00LgoKCSogbTQvQU1fUFJPR19DQ19TVERDLm00OiBQYXRjaCBmcm9tIEppbSBNZXllcmluZy9LYXZlaCBHaGF6aS4KClNhdCBBdWcgMTcgMTE6Mjc6MTQgMTk5NiAgVG9tIFRyb21leSAgPHRyb21leUBjcmVjaGUuY3lnbnVzLmNvbT4KCgkqIGF1dG9tYWtlLmluIChoYW5kbGVfZGVwZW5kZW5jaWVzKTogUHVzaCBgZGVwZW5kJy1jbGVhbiB0YXJnZXRzCglvbiBAY2xlYW4uCgkqIGRlcGVuZC5hbSAobW9zdGx5Y2xlYW4tZGVwZW5kLCBjbGVhbi1kZXBlbmQsIGRpc3RjbGVhbi1kZXBlbmQsCgltYWludGFpbmVyLWNsZWFuLWRlcGVuZCk6IE5ldyB0YXJnZXRzLgoKVHVlIEF1ZyAxMyAxNzo1Mzo1OCAxOTk2ICBUb20gVHJvbWV5ICA8dHJvbWV5QGNyZWNoZS5jeWdudXMuY29tPgoKCSogdGV4aW5mb3MuYW0gKC50ZXhpbmZvLmluZm8pOiBOZXcgdGFyZ2V0LgoJKC50ZXhpbmZvLmR2aSk6IE5ldyB0YXJnZXQuCgoJRnJvbSBKaW0gTWV5ZXJpbmc6CgkqIGF1dG9tYWtlLmluIChoYW5kbGVfdGV4aW5mbyk6IFVzZSBgLmluZm9bLTAtOV0qJyBhcyBwYXR0ZXJuIHRvCgltYXRjaCBpbmZvIGZpbGVzLgoJKGhhbmRsZV90ZXhpbmZvKTogSGFuZGxlIGAudGV4aW5mbycgZmlsZXMuCgpNb24gQXVnIDEyIDEwOjI4OjQ2IDE5OTYgIFRvbSBUcm9tZXkgIDx0cm9tZXlAY3JlY2hlLmN5Z251cy5jb20+CgoJKiBhdXRvbWFrZS5pbiAocmVxdWlyZV9maWxlX2ludGVybmFsKTogU3BlY2lhbC1jYXNlIGAuJyB3aGVuCglmaW5kaW5nIGZpbGVzIHRvIGRpc3RyaWJ1dGUuICBUZXN0IGxpYm9iajIudGVzdC4KCgkqIGFjbG9jYWwuaW4gKGFkZF9maWxlKTogRml4ZWQgcmVnZXhwIGZvciBtYXRjaGluZyBBQ19ERUZVTi4gIFRlc3QKCW9yZGVyLnRlc3QuCgoJKiBtNC9BTV9IRUFERVJfVElPQ0dXSU5TWl9ORUVEU19TWVNfSU9DVEwubTQ6IE5ldyBmaWxlLgoJKiBtNC9BTV9TWVNfUE9TSVhfVEVSTUlPUy5tNDogTmV3IGZpbGUuCgoJKiBjb21waWxlLWtyLmFtOiBSZW1vdmVkIGR1cGxpY2F0ZSBhbnNpMmtuciBydWxlcy4KClN1biBBdWcgMTEgMDA6MjA6MTYgMTk5NiAgVG9tIFRyb21leSAgPHRyb21leUBjcmVjaGUuY3lnbnVzLmNvbT4KCgkqIGF1dG9tYWtlLmluIChoYW5kbGVfeWFjY19sZXhfY3h4KTogQnVnIGZpeCBmcm9tIEpvc2ggTWFjRG9uYWxkLgoJKGhhbmRsZV95YWNjX2xleF9jeHgpOiBQdXQgQysrIGV4dGVuc2lvbnMgb24gc3VmZml4IGxpc3QuCgkobWtkaXIpOiBSZW1vdmVkLgoKCSogYXV0b21ha2UuaW4gKGluaXRpYWxpemVfZ2xvYmFsX2NvbnN0YW50cyk6IFtjb21tb25fZmlsZXNdCglJbmNsdWRlIGludGVybG9jayBhbmQgeWx3cmFwLgoKCSogUmVsZWFzZWQgdmVyc2lvbiAxLjFjLgoKCSogYWNsb2NhbC5pbiAob2Jzb2xldGVfbWFjcm9zKTogbWRfVFlQRV9QVFJESUZGX1QgYW5kCgl1ZF9QQVRIX0xJU1BESVIgYXJlIG9ic29sZXRlIG5hbWVzLgoKCSogbTQvQU1fTENfTUVTU0FHRVMubTQsIG00L0FNX1dJVEhfTkxTLm00LCBtNC9BTV9HTlVfR0VUVEVYVC5tNDoKCVJlbW92ZWQuCgoJKiBhdXRvbWFrZS5pbiAoaGFuZGxlX2xpYl9vYmplY3RzKTogQ2hhbmdlZCBpbnRlcmZhY2UuICBOb3cKCWdlbmVyYXRlcyBfREVQRU5ERU5DSUVTIHZhcmlhYmxlIGlmIGFwcHJvcHJpYXRlLgoJKGhhbmRsZV9lbWFjc19saXNwKTogVXNlIEFNX1BBVEhfTElTUERJUi4KCShzY2FuX2NvbmZpZ3VyZSk6IERpdHRvLgoKCSogTWFrZWZpbGUuYW0gKENMRUFORklMRVMpOiBSZW1vdmVkLgoKCSogYXV0b21ha2UuaW4gKGhhbmRsZV9jb25maWd1cmUpOiBEZWZpbmUgQ09ORklHX0NMRUFOX0ZJTEVTLgoKCSogY2xlYW4uYW0gKGNsZWFuLWdlbmVyaWMpOiBSZW1vdmUgJChDT05GSUdfQ0xFQU5fRklMRVMpLgoKCSogY29tcGlsZS12YXJzLmFtIChDQywgQ0ZMQUdTLCBDT01QSUxFLCBMSU5LKTogUmVtb3ZlZC4KCgkqIGF1dG9tYWtlLmluIChoYW5kbGVfeWFjY19sZXhfY3h4KTogUmVxdWlyZSB5bHdyYXAgaW4KCW11bHRpLWxleC95YWNjIGNhc2UuCgkoaGFuZGxlX3NvdXJjZV90cmFuc2Zvcm0pOiBDaGFuZ2VkIHJldHVybiByZXN1bHQuCgkoaGFuZGxlX3Byb2dyYW1zKTogVXNlIGxpbmtlciByZXR1cm5lZCBieQoJaGFuZGxlX3NvdXJjZV90cmFuc2Zvcm0uCgkoc2Vlbl9wcm9nX2NjLCBzZWVuX3Byb2dfY3h4KTogTmV3IGdsb2JhbHMuCgkoc2Nhbl9jb25maWd1cmUpOiBSZWNvZ25pemUgQUNfUFJPR19DQyBhbmQgQUNfUFJPR19DWFguCgkoaGFuZGxlX3lhY2NfbGV4X2N4eCk6IEVycm9yIG1lc3NhZ2UgaWYgQUNfUFJPR19DWFggb3IKCUFDX1BST0dfWUFDQyBtaXNzaW5nLgoJKHNlZW5fZGVjbF95eXRleHQsIHNlZW5fcHJvZ19sZXgpOiBOZXcgZ2xvYmFscy4KCShzY2FuX2NvbmZpZ3VyZSk6IFNldCB0aGVtLgoJKGhhbmRsZV95YWNjX2xleF9jeHgpOiBXYXJuIGFib3V0IG1pc3NpbmcgQUNfUFJPR19MRVggb3IKCUFDX0RFQ0xfWVlURVhULgoJKGhhbmRsZV95YWNjX2xleF9jeHgpOiBVc2UgJChMRVhfT1VUUFVUX1JPT1QpLgoJKGluaXRpYWxpemVfcGVyX2lucHV0KTogSW5pdGlhbGl6ZSBzZWVuX2Nfc291cmNlLgoJKGhhbmRsZV95YWNjX2xleF9jeHgpOiBEZWZpbmUgQ0MsIENGTEFHUywgQ09NUElMRSwgTElOSyBvbmx5IHdoZW4KCUMgc291cmNlIHNlZW4uCgkoaGFuZGxlX3NvdXJjZV90cmFuc2Zvcm0pOiBTZXQgc2Vlbl9jX3NvdXJjZS4KCgkqIGludGVybG9jazogQ2hhbmdlZCB1c2FnZS4KCgkqIHlsd3JhcDogTmV3IGZpbGUuCgoJKiBhdXRvbWFrZS5pbiAoaGFuZGxlX3lhY2NfbGV4X2N4eCk6IFJlbmFtZWQuCgoJKiBhdXRvbWFrZS5pbiAoaGFuZGxlX2RlcGVuZGVuY2llcyk6IEhhbmRsZSAlY3h4X2V4dGVuc2lvbnMuCglJbmNsdWRlIGRlcGVuZDIuYW0gd2hlbiBhcHByb3ByaWF0ZS4KCgkqIGRlcGVuZDIuYW06IE5ldyBmaWxlOyBjb250ZW50cyBmcm9tIGRlcGVuZC5hbSBidXQgdGVtcGxhdGl6ZWQuCgoJKiBhdXRvbWFrZS5pbiAoaW5pdGlhbGl6ZV9wZXJfaW5wdXQpOiBJbml0aWFsaXplCgklY3h4X2V4dGVuc2lvbnMuCgkoaGFuZGxlX3NvdXJjZV90cmFuc2Zvcm0pOiBTZXQgJWN4eF9leHRlbnNpb25zLgoKU2F0IEF1ZyAxMCAxMDoyOTozMCAxOTk2ICBUb20gVHJvbWV5ICA8dHJvbWV5QGNyZWNoZS5jeWdudXMuY29tPgoKCSogaW50ZXJsb2NrOiBOZXcgZmlsZS4KCgkqIGF1dG9tYWtlLmluIChoYW5kbGVfeWFjY19sZXgpOiBOZXcgc3ViLgoJKGhhbmRsZV9zb3VyY2VfdHJhbnNmb3JtKTogUmVtb3ZlZCBtb3N0IHlhY2MvbGV4IGhhbmRsaW5nLgoJKGluaXRpYWxpemVfcGVyX2lucHV0KTogSW5pdCB5YWNjX3NvdXJjZXMsIGxleF9zb3VyY2VzLgoJKGdlbmVyYXRlX21ha2VmaWxlKTogUnVuIGhhbmRsZV95YWNjX2xleC4KCShoYW5kbGVfbWVyZ2VfdGFyZ2V0cyk6IFVzZSBgc2NhbGFyJyBhbmQgbm90ICQjIHRvIGZpbmQgbGVuZ3RoIG9mCglhcnJheS4KCgkqIG00L0FNX0ZFQVRVUkVfRVhJVC5tNDogV3JvdGUuCgkqIG00L0FNX0ZFQVRVUkVfQ1RZUEUubTQ6IFdyb3RlLgoJKiBtNC9BTV9GRUFUVVJFX0VSUk5PLm00OiBXcm90ZS4KCgkqIGFjbG9jYWwuaW4gKG1hY3JvX3NlZW4pOiBOZXcgZ2xvYmFsLgoJKGFkZF9maWxlKTogU2V0IG1hY3JvX3NlZW4gZW50cnkuICBPbmx5IHB1c2ggcmVxdWlyZWQgbWFjcm8gb24KCUBybGlzdCBpZiBub3QgYWxyZWFkeSBzZWVuLiAgVGVzdCBkZWZ1bi50ZXN0LgoKCSogYXV0b21ha2UuaW4gKGdldF9vYmplY3RfZXh0ZW5zaW9uKTogSGFuZGxlIGRpcmVjdG9yeSBwcmVmaXggb24KCWBhbnNpMmtucicgb3B0aW9uLgoKCSoga3ItZXh0cmEuYW06IE5ldyBmaWxlLgoKCSoga3ItdmFycy5hbTogUmVtb3ZlZC4KCgkqIGF1dG9tYWtlLmluIChoYW5kbGVfb3B0aW9ucyk6IEhhbmRsZSBkaXJlY3RvcnkgcHJlZml4IG9uCglgYW5zaTJrbnInIG9wdGlvbi4KCgkqIGF1dG9tYWtlLmluIChzY2FuX2NvbmZpZ3VyZSk6IFJlY29nbml6ZSBBTV9GVU5DX1NUUlRPRC4KCgkqIGFjbG9jYWwuaW4gKGFkZF9maWxlKTogRXJyb3IgaWYgbWFjcm8gaXMgZHVwbGljYXRlZC4gIFRlc3QKCWR1cC50ZXN0LgoKRnJpIEF1ZyAgOSAwOToxODo0NiAxOTk2ICBUb20gVHJvbWV5ICA8dHJvbWV5QGNyZWNoZS5jeWdudXMuY29tPgoKCSogYXV0b21ha2UuaW4gKGhhbmRsZV9wcm9ncmFtcyk6IFN1YnN0aXR1dGUgQFhMSU5LQC4gIE1ha2Ugc3VyZQoJbGlua2VyIHZhcmlhYmxlIGlzIHRyYW5zZm9ybWVkIG5hbWUuCgkqIHByb2dyYW0uYW0gKEBQUk9HUkFNQCk6IFVzZSBAWExJTktAIHRvIGxpbmsuCgoJKiBhdXRvbWFrZS5pbiAoaGFuZGxlX3NjcmlwdHMpOiBGaXhlZCBjYWxsIHRvCglhbV9wcmltYXJ5X3ByZWZpeGVzLgoJKGhhbmRsZV9saWJyYXJpZXMpOiBCZXR0ZXIgZXJyb3IgbWVzc2FnZSB3aGVuIEFDX1BST0dfUkFOTElCCglyZXF1aXJlZC4KCgkqIGF1dG9tYWtlLmluIChoYW5kbGVfbGlicmFyaWVzKTogQ2Fub25pY2FsaXplIGxpYnJhcnkgbmFtZS4gIFRlc3QKCWNhbm9uNC50ZXN0LgoJKiBsaWJyYXJ5LmFtIChsaWJATElCUkFSWUAuYSk6IFVzZSBAWExJQlJBUllAIHdoZXJlIGFwcHJvcHJpYXRlLgoJKGxpYkBMSUJSQVJZQC5hKTogTG9vayBhdCBfREVQRU5ERU5DSUVTIHZhcmlhYmxlLgoKVGh1IEF1ZyAgOCAxMDo1NzoyMSAxOTk2ICBUb20gVHJvbWV5ICA8dHJvbWV5QGNyZWNoZS5jeWdudXMuY29tPgoKCSogYXV0b21ha2UuaW4gKGhhbmRsZV9zY3JpcHRzKTogQ29ycmVjdGx5IGNvbXB1dGUKCSRzY3JpcHRzX2luc3RhbGxlZC4gIFRlc3Qgc2NyaXB0cy50ZXN0LgoKV2VkIEF1ZyAgNyAxMjoxMzoxNSAxOTk2ICBUb20gVHJvbWV5ICA8dHJvbWV5QGNyZWNoZS5jeWdudXMuY29tPgoKCSogYW5zaTJrbnIuYzogTmV3IHZlcnNpb24uCgpUdWUgQXVnICA2IDEwOjU4OjM3IDE5OTYgIFRvbSBUcm9tZXkgIDx0cm9tZXlAY3JlY2hlLmN5Z251cy5jb20+CgoJKiBhdXRvbWFrZS5pbiAoaGFuZGxlX3NvdXJjZV90cmFuc2Zvcm0pOiBIYW5kbGUgbW9yZSBDKysgZmlsZQoJZXh0ZW5zaW9ucy4gICJIYW5kbGUiIE9iamVjdGl2ZSBDLiAgSGFuZGxlIG1vcmUgRk9SVFJBTgoJZXh0ZW5zaW9ucy4KCgkqIGNvbXBpbGUtdmFycy5hbSAoTEVYKTogUmVtb3ZlZC4KCShZQUNDKTogUmVtb3ZlZC4KCgkqIGF1dG9tYWtlLmluIChoYW5kbGVfc291cmNlX3RyYW5zZm9ybSk6IENvcnJlY3RseSBoYW5kbGUgbGV4Cglzb3VyY2UuICBUZXN0IGxleC50ZXN0LgoJKGhhbmRsZV9zb3VyY2VfdHJhbnNmb3JtKTogU2tpcCBtb3JlIEMrKyBoZWFkZXJzLiAgR2VuZXJhdGUgbWFjcm8KCWRlZmluaXRpb25zIGZvciBZQUNDIGFuZCBMRVggb24gZmlyc3QgdXNlLgoKCSogYWNsb2NhbC5pbiAocGFyc2VfYXJndW1lbnRzKTogTWVudGlvbiBHTlUuCgkqIGF1dG9tYWtlLmluIChwYXJzZV9hcmd1bWVudHMpOiBNZW50aW9uIEdOVS4KCk1vbiBBdWcgIDUgMDA6MTI6NDUgMTk5NiAgVG9tIFRyb21leSAgPHRyb21leUBjcmVjaGUuY3lnbnVzLmNvbT4KCgkqIGF1dG9tYWtlLmluIChoYW5kbGVfcHJvZ3JhbXMpOiBEZWZpbmUgcHJvZ3JhbV9MSU5LLgoJKiBwcm9ncmFtLmFtIChAUFJPR1JBTUApOiBVc2UgcHJvZ3JhbV9MSU5LIHRvIGxpbmsuCgoJKiBSZWxlYXNlZCB2ZXJzaW9uIDEuMWIKCgkqIGF1dG9tYWtlLmluIChzY2FuX2NvbmZpZ3VyZSk6IEFNX0lOSVRfQVVUT01BS0Ugc2V0cwoJc2Vlbl9wcm9nX2luc3RhbGwgdG8gYDInLgoKCSogY29uZmlndXJlLmluOiBEb24ndCBydW4gQU1fUFJPR19JTlNUQUxMLgoKCSogYXV0b21ha2UuaW4gKHBhcnNlX2FyZ3VtZW50cyk6IFVzZSAkUEFDS0FHRS4KCSgkUEFDS0FHRSk6IE5ldyBnbG9iYWwuCgkoJGFtX2NfcHJvdG90eXBlcyk6IFJlbmFtZWQuCgkoZ2V0X29iamVjdF9leHRlbnNpb24pOiBVc2UgYW1fY19wcm90b3R5cGVzLgoJKHNjYW5fY29uZmlndXJlKTogRGl0dG8uCgkoc2Nhbl9jb25maWd1cmUpOiBVc2UgQU1fTUFJTlRBSU5FUl9NT0RFLgoJKHNjYW5fY29uZmlndXJlKTogV2FybiBhYm91dCBvYnNvbGV0ZSBtYWNyb3MuCgoJKiBhY2xvY2FsLmluIChwYXJzZV9hcmd1bWVudHMpOiBVc2UgJFBBQ0tBR0UuCgkoJFBBQ0tBR0UpOiBOZXcgZ2xvYmFsLgoKCSogTWFrZWZpbGUuYW0gKENMRUFORklMRVMpOiBBZGRlZCBhY2xvY2FsLgoJKEVUQUdTX0FSR1MpOiBBZGRlZCBhY2xvY2FsLmluLgoJKFRBR1NfREVQRU5ERU5DSUVTKTogRGl0dG8uCgkobWFpbnRhaW5lci1jaGVjayk6IERlcGVuZCBvbiBhY2xvY2FsLgoJKG1haW50YWluZXItY2hlY2spOiBDaGVjayBhY2xvY2FsLgoJKGJpbl9TQ1JJUFRTKTogSW5jbHVkZSBhY2xvY2FsLgoKCSogYXV0b21ha2UuaW4gKHNjYW5fY29uZmlndXJlKTogSGFuZGxlIEFNX0lOSVRfQVVUT01BS0UuCgkoc2Nhbl9jb25maWd1cmUpOiBVc2UgQU1fUFJPR19JTlNUQUxMLgoKCSogY29uZmlndXJlLmluOiBVc2UgQU1fSU5JVF9BVVRPTUFLRS4KCgkqIGF1dG9tYWtlLmluIChrZXllZF9hY2xvY2FsX3dhcm5pbmcpOiBXYXJuaW5nIHRlbGxzIGFib3V0CglhY2xvY2FsLgoJKGhhbmRsZV9hY2xvY2FsX200KTogTmV3IHN1Yi4KCShoYW5kbGVfY29uZmlndXJlKTogVXNlIGl0LgoKCSogYWNsb2NhbC5pbiAob3V0cHV0X2ZpbGUpOiBOZXcgZ2xvYmFsLgoJKHVzYWdlKTogSGFuZGxlIC0tb3V0cHV0LgoJKHBhcnNlX2FyZ3VtZW50cyk6IEhhbmRsZSAtLW91dHB1dC4KCgkqIG00L0FNX0lOSVRfQVVUT01BS0UubTQ6IE5ldyBmaWxlLgoKCSogbTQvQU1fUFJPR19DQ19TVERDLm00OiBSZXF1aXJlIEFDX1BST0dfQ0MuCglEb24ndCB0b3VjaCBDRkxBR1MuCgoJKiBhdXRvbWFrZS5pbiAoaGFuZGxlX2Rpc3Rfd29ya2VyKTogUmV2ZXJ0ZWQgZXJyb25lb3VzICItY2htb2QiLgoJKGhhbmRsZV90ZXhpbmZvKTogRG9uJ3QgZ2VuZXJhdGUgYC5pbmZvLVswLTldJyBhcyBhIGZpbGVuYW1lLgoKCSogdGV4aW5mb3MuYW0gKC50ZXhpLmluZm8pOiBGb3JjZSAuaW5mbyBmaWxlIHRvIGJlIGJ1aWx0IGluCglzcmNkaXIuICBGcm9tIEZyYW5jLG9pcyBQaW5hcmQuCgoJRnJvbSBKaW0gTWV5ZXJpbmc6CgkqIG00L0FNX1BST0dfQ0NfU1REQy5tNDogKGZwX1BST0dfQ0NfU1REQyk6IEluY2x1ZGUgc3lzL3N0YXQuaCBpbgoJdGVzdCBwcm9ncmFtIHNvIHRoYXQgRFlOSVgvcHR4IFY0LjEuMyBkb2Vzbid0IHVzZSBgLVhjCgktRF9fRVhURU5TSU9OU19fJyAtLSB3aXRoIHRob3NlIG9wdGlvbnMgb24gdGhhdCBzeXN0ZW0sIHN5cy9zdGF0LmgKCWdldHMgY29tcGlsZSBlcnJvcnMuICBXaXRoIGhlbHAgZnJvbSBNYXJjdXMgRGFuaWVscy4KCgkqIGF1dG9tYWtlLmluIChpbml0aWFsaXplX2dsb2JhbF9jb25zdGFudHMpOiBQdXQgZWxpc3AtY29tcCBpbnRvCglAY29tbW9uX2ZpbGVzLiAgQnVnIGZyb20gR2xlbm4gQW1lcmluZS4KClN1biBBdWcgIDQgMTI6NTI6NDMgMTk5NiAgVG9tIFRyb21leSAgPHRyb21leUBjcmVjaGUuY3lnbnVzLmNvbT4KCgkqIGF1dG9tYWtlLmluIChoYW5kbGVfZGlzdF93b3JrZXIpOiBVc2UgZmdyZXAsIG5vdCBncmVwLgoKCSogbTQvQU1fQ19QUk9UT1RZUEVTLm00OiBDaGFuZ2VzIGZyb20gRnJhbudvaXMgUGluYXJkLgoKCSogYXV0b21ha2UuaW4gKGhhbmRsZV9lbWFjc19saXNwKTogSW5jbHVkZSBsaXNwLWNsZWFuLmFtIGluCglvdXRwdXQuCgkoaW5pdGlhbGl6ZV9nbG9iYWxfY29uc3RhbnRzKTogW2luc3RhbGxfbWFuX2Zvcm1hdF0gRG9uJ3QgaGlkZQoJInVnbGluZXNzIiBhdCBpbnN0YWxsIHRpbWUuCgoJKiBsaXNwLWNsZWFuLmFtOiBOZXcgZmlsZS4KCgkqIHRhZ3MtY2xlYW4uYW0gKG1haW50YWluZXItY2xlYW4tdGFncyk6IFJlbW92ZSBUQUdTIGFuZCBJRCBoZXJlLgoKCSogYXV0b21ha2UuaW4gKGhhbmRsZV9tYW5fcGFnZXMpOiBQYXRjaCBmcm9tIEphbm9zIEZhcmthcyB0byBmaXgKCWJ1ZyB3aGVuIGluc3RhbGxpbmcgbWFuIHBhZ2VzLiAgVGVzdCBtYW4udGVzdC4KCShpbml0aWFsaXplX2dsb2JhbF9jb25zdGFudHMpOiBbaW5zdGFsbF9tYW5fZm9ybWF0XSBNYWtlIHN1cmUgbWFuCglwYWdlIGNhbiBhY3R1YWxseSBiZSBmb3VuZCBpbiBlaXRoZXIgc291cmNlIG9yIGJ1aWxkIGRpcnMuCgkoaGFuZGxlX2Rpc3Rfd29ya2VyKTogVXNlICI3NTUiIHBlcm1pc3Npb25zIG9uIGRpc3RkaXIuCgoJKiBhdXRvbWFrZS5pbiAoaGFuZGxlX2Rpc3QpOiBBbGxvdyBjaG1vZCdzIHRvIGZhaWwuCgkoYW1fcHJpbWFyeV9wcmVmaXhlcyk6IE5ldyBmdW5jdGlvbi4KCShhbV9pbnN0YWxsX3Zhcik6IFVzZSBpdC4KCShoYW5kbGVfbGlicmFyaWVzKTogVXNlIGl0LiAgVGVzdCBsaWJmaWxlcy50ZXN0LgoJKGhhbmRsZV9kaXN0KTogRm9yIGRpc3QtdGFyWiwgYXNzdW1lIHRyYWRpdGlvbmFsICJ0YXIiIGFuZAoJImNvbXByZXNzIi4KCgkqIG00L0FNX0ZVTkNfU1RSVE9ELm00OiBOZXcgZmlsZS4KCgkqIGF1dG9tYWtlLmluIChoYW5kbGVfZGlzdCk6IE9ubHkgZ2VuZXJhdGUgYGRpc3RkaXInIHZhcmlhYmxlIGlmCglpdCBkb2Vzbid0IGFscmVhZHkgZXhpc3QuCgoJRml4IGZvciBidWcgcmVwb3J0ZWQgYnkgSGFybGFuIFN0ZW5uLiAgVGVzdCB0YWdzLnRlc3QuCgkqIGF1dG9tYWtlLmluIChpbml0aWFsaXplX3Blcl9pbnB1dCk6IERlZmluZSBkaXJfaG9sZHNfc291cmNlcy4KCShoYW5kbGVfdGFncyk6IENoZWNrIGRpcl9ob2xkc19oZWFkZXJzLgoJKGhhbmRsZV9oZWFkZXJzKTogU2V0IGRpcl9ob2xkc19oZWFkZXJzLgoKCSogYXV0b21ha2UuaW4gKGhhbmRsZV90ZXhpbmZvKTogR2VuZXJhdGUgInZlcnNpb24udGV4aSIgZGVwZW5kZW5jeQoJZm9yIC5kdmkgZmlsZS4gIEJ1ZyByZXBvcnRlZCBieSBHbGVubiBBbWVyaW5lLiAgVGVzdCB2dGV4aTIudGVzdC4KCgkqIGF1dG9tYWtlLmluIChoYW5kbGVfY29uZmlndXJlKTogUmVxdWlyZSBmaWxlICRpbnB1dCwgbm90CgkiJGxvY2FsLmluIi4gIEZyb20gTnl1bCBMYXN6bG8uICBUZXN0IGNvbG9uLnRlc3QuCgpTdW4gSnVsIDI4IDExOjE0OjUyIDE5OTYgIFRvbSBUcm9tZXkgIDx0cm9tZXlAY3JlY2hlLmN5Z251cy5jb20+CgoJKiBhY2xvY2FsLmluOiBOZXcgZmlsZS4KCSogY29uZmlndXJlLmluOiBHZW5lcmF0ZSBtNC9NYWtlZmlsZSwgYWNsb2NhbC4KCSogTWFrZWZpbGUuYW0gKFNVQkRJUlMpOiBJbmNsdWRlIG00LgoJKiBtNC9NYWtlZmlsZS5hbTogTmV3IGZpbGUuCgpGcmkgSnVsIDE5IDEwOjEyOjI3IDE5OTYgIFRvbSBUcm9tZXkgIDx0cm9tZXlAY3JlY2hlLmN5Z251cy5jb20+CgoJKiBhdXRvbWFrZS5pbiAoaW5pdGlhbGl6ZV9nbG9iYWxfY29uc3RhbnRzKTogUHV0IGFuc2kya25yLmMgYW5kCglhbnNpMmtuci4xIGludG8gY29tbW9uX2ZpbGVzLiAgQnVnIHJlcG9ydCBmcm9tIEZyYW7nb2lzIFBpbmFyZC4KCk1vbiBKdWwgMTUgMTA6Mjg6MjkgMTk5NiAgVG9tIFRyb21leSAgPHRyb21leUBjcmVjaGUuY3lnbnVzLmNvbT4KCgkqIGluc3RhbGwtc2g6IFVwZGF0ZWQgY29weXJpZ2h0IG5vdGljZS4KCkZyaSBKdWwgIDUgMDg6MjM6MDAgMTk5NiAgVG9tIFRyb21leSAgPHRyb21leUBjcmVjaGUuY3lnbnVzLmNvbT4KCgkqIHN1YmRpcnMuYW0gKG1haW50YWluZXItY2xlYW4tcmVjdXJzaXZlKTogRG9uJ3QgYmUgc28gbm9pc3kuCglSZXBvcnQgZnJvbSBKb3NoIE1hY0RvbmFsZC4KCglCdWdzIGZyb20gR29yZCBNYXR6aWdrZWl0OgoJKiBhdXRvbWFrZS5pbiAoaGFuZGxlX2Zvb3Rlcik6IFB1c2ggY29udGVudHMgb2YgJChTVUZGSVhFUyksIG5vdAoJYCQoU1VGRklYRVMpJy4KCShoYW5kbGVfZGlzdCk6IElnbm9yZSBjaG1vZCByZXR1cm4gcmVzdWx0cy4KCgkqIHByb2dyYW1zLWNsZWFuLmFtIChjbGVhbi1ARElSQFBST0dSQU1TKTogV29yayBhcm91bmQgZmFpbGluZwoJU29sYXJpcyAicm0gLWYiLiAgQnVnIGZyb20gS2F2ZWggUi4gR2hhemkuCgkqIGxpYnJhcmllcy1jbGVhbi5hbSAoY2xlYW4tQERJUkBMSUJSQVJJRVMpOiBMaWtld2lzZS4KCkZyaSBKdW4gMjEgMTA6NDI6MDYgMTk5NiAgVG9tIFRyb21leSAgPHRyb21leUBjcmVjaGUuY3lnbnVzLmNvbT4KCgkqIHRleGluZm9zLmFtIChpbnN0YWxsLWluZm8pOiBVc2UgImlmIiwgbm90ICImJiIsIHRvIGF2b2lkCglpbnN0YWxsIHByb2JsZW0gd2hlbiBnbG9iIGRvZXNuJ3QgbWF0Y2guCgoJKiBhdXRvbWFrZS5pbiAoaW5pdGlhbGl6ZV9nbG9iYWxfY29uc3RhbnRzKTogW1VTQUdFXSBBZGRlZAoJLS1uby1mb3JjZS4KCShmb3JjZV9nZW5lcmF0aW9uKTogTmV3IGdsb2JhbC4KCShwYXJzZV9hcmd1bWVudHMpOiBIYW5kbGUgLS1uby1mb3JjZS4KCShnZW5lcmF0ZV9tYWtlZmlsZSk6IEhhbmRsZSAtLW5vLWZvcmNlLgoKCSogTWFrZWZpbGUuYW0gKG1haW50YWluZXItY2hlY2spOiBFbnN1cmUgYWxsIGludm9jYXRpb25zIG9mCglta2luc3RhbGxkaXJzIGFyZSBjb3JyZWN0LgoKVHVlIEp1biAxOCAxMDo1Mzo1NCAxOTk2ICBUb20gVHJvbWV5ICA8dHJvbWV5QGNyZWNoZS5jeWdudXMuY29tPgoKCSogYXV0b21ha2UuaW4gKGhhbmRsZV90ZXN0cyk6IERvbid0IGRpcmVjdGx5IGdlbmVyYXRlIHNpdGUuZXhwLgoKU3VuIEp1biAxNiAyMjoyMToxNiAxOTk2ICBIYXJsYW4gU3Rlbm4gIDxoYXJsYW5AYnJvd24ucGZjcy5jb20+CgkKCSogYXV0b21ha2UuaW46IAlUcmVhdCBhbiBpbml0aWFsIGAjJyBvbiBhIHdvcmQgaW4gQVVUT01BS0VfT1BUSU9OUwoJYXMgYSBjb21tZW50IHN0YXJ0LiAgQWRkIHN1cHBvcnQgZm9yIGEgZGlzdC10YXJaIHRhcmdldC4KClR1ZSBKdW4gMTEgMjI6MTQ6MjEgMTk5NiAgTWFyY3VzIERhbmllbHMgIDxtYXJjdXNAc2F5cmUuc3lzYy5wZHguZWR1PgoKCSogZGVwZW5kLmFtICgkKHNyY2RpcikvLmRlcHMvJS5QKTogQ29udmVydCBhYnNvbHV0ZSAkKHRvcF9zcmNkaXIpCglwYXRocyBpbnRvIHJlbGF0aXZlIHBhdGhzLgoKTW9uIEp1biAxMCAyMToxMToyMCAxOTk2ICBUb20gVHJvbWV5ICA8dHJvbWV5QGNyZWNoZS5jeWdudXMuY29tPgoKCSogdGV4aW5mby50ZXg6IE5ldyB2ZXJzaW9uLgoKCSogYXV0b21ha2UuaW46IExvb2sgZm9yIEFNX1BST0dfTElCVE9PTC4gIEZyb20gR29yZCBNYXR6aWdrZWl0LgoJKGluaXRpYWxpemVfZ2xvYmFsX2NvbnN0YW50cyk6IEFkZGVkIGxpYnRvb2wgdG8KCUBjb21tb25fc29tZXRpbWVzLgoJKGhhbmRsZV9zb3VyY2VfdHJhbnNmb3JtKTogUGFzcyBZRkxBR1MgdG8geWFjYyBhbmQgTEZMQUdTIHRvIGxleC4KClN1biBKdW4gIDkgMTc6NDU6NDggMTk5NiAgVG9tIFRyb21leSAgPHRyb21leUBjcmVjaGUuY3lnbnVzLmNvbT4KCgkqIHRleGluZm9zLmFtIChpbnN0YWxsLWluZm8pOiBEb24ndCBpbnN0YWxsIH4gZmlsZXMuICBCdWcgcmVwb3J0Cglmcm9tIEdyZWcgTWNHYXJ5LgoJKiBhdXRvbWFrZS5pbiAoaGFuZGxlX3RleGluZm8pOiBEb24ndCBwdXNoICcuaW5mbyonIG9udG8KCUBpbmZvc19saXN0LgoKCSogYXV0b21ha2UuaW4gKGhhbmRsZV9nZXR0ZXh0KTogRW5zdXJlIHBvIGFuZCBpbnRsIGluIFNVQkRJUlMgd2hlbgoJdXNpbmcgZ2V0dGV4dC4KCShoYW5kbGVfZGlzdCk6IFBhc3MgLS13aXRoLWluY2x1ZGVkLWdldHRleHQgdG8gY29uZmlndXJlIGlmIHVzaW5nCglnZXR0ZXh0LgoKCSogY29tcGlsZS1rci5hbSAoLl9jLl9vKTogUGFzcyAtYyB0byAkKENPTVBJTEUpLgoJKC5jLl9vKTogRGl0dG8uCgkqIGNvbXBpbGUuYW0gKC5jLm8pOiBQYXNzIC1jIHRvICQoQ09NUElMRSkuCgkqIGNvbXBpbGUtdmFycy5hbSAoQ09NUElMRSk6IERvbid0IGluY2x1ZGUgLWMuCgoJKiByZW1ha2UuYW0gKCQoc3JjZGlyKS9NYWtlZmlsZS5pbik6IFBhc3MgLS1zdHJpY3RuZXNzIHRvCglhdXRvbWFrZS4KCSogYXV0b21ha2UuaW4gKGhhbmRsZV9jb25maWd1cmUpOiBTdXBwbHkgLS1zdHJpY3RuZXNzIGFyZyB0bwoJYXV0b21ha2UuCgpGcmkgSnVuICA3IDEyOjMxOjMxIDE5OTYgIFRvbSBUcm9tZXkgIDx0cm9tZXlAY3JlY2hlLmN5Z251cy5jb20+CgoJKiBhdXRvbWFrZS5pbiAoaGFuZGxlX3Rlc3RzKTogRml4IHF1b3Rpbmcgb24gYHB3ZGAuCgkoaGFuZGxlX29wdGlvbnMpOiBSZWNvZ25pemUgbm8taW5zdGFsbGluZm8gb3B0aW9uLgoJKGhhbmRsZV9tYW5fcGFnZXMpOiBEb24ndCBwdXQgbWFuIGRpcmVjdG9yeSBvbiBAaW5zdGFsbGRpcnMgaWYKCW5vLWluc3RhbGxtYW4gaXMgc3BlY2lmaWVkLgoJKGhhbmRsZV90ZXhpbmZvKTogSGFuZGxlIG5vLWluc3RhbGxpbmZvIG9wdGlvbi4KCShoYW5kbGVfb3B0aW9ucyk6IENvbXBhcmUgdmVyc2lvbiBhZ2FpbnN0ICRudW1fdmVyc2lvbiwgbm90CgkkVkVSU0lPTi4KCShoYW5kbGVfc291cmNlX3RyYW5zZm9ybSk6IEdlbmVyYXRlIHJ1bGVzIGZvciBvdXRwdXQgb2YgbGV4LAoJeWFjYy4gIEJ1ZyByZXBvcnQgZnJvbSBUaG9tYXMgTW9yZ2FuLiAgVGVzdCB5YWNjLnRlc3QuCgkoaGFuZGxlX2Rpc3QpOiAiZGlzdGNoZWNrIiBub3cgcnVucyAibWFrZSBkdmkiLgoJKGhhbmRsZV90ZXN0cyk6IFN1cHBvcnQgJChURVNUU19FTlZJUk9OTUVOVCkuICBJZGVhIGZyb20gVWxyaWNoCglEcmVwcGVyLgoKCSogZGVqYWdudS5hbSAoY2hlY2stREVKQUdOVSk6IERlcGVuZCBvbiBzaXRlLmV4cC4KClN1biBKdW4gIDIgMTA6MzM6MTAgMTk5NiAgVG9tIFRyb21leSAgPHRyb21leUBjcmVjaGUuY3lnbnVzLmNvbT4KCgkqIGF1dG9tYWtlLmluIChoYW5kbGVfZW1hY3NfbGlzcCk6IE5ldyBmdW5jdGlvbi4KCShpbml0aWFsaXplX2dsb2JhbF9jb25zdGFudHMpOiBBZGRlZCBlbGlzcC1jb21wIHRvCglAY29tbW9uX3NvbWV0aW1lcy4KCShzZWVuX2xpc3BkaXIpOiBOZXcgZ2xvYmFsLgoJKHNjYW5fY29uZmlndXJlKTogSGFuZGxlIHVkX1BBVEhfTElTUERJUi4KCgkqIGVsaXNwLWNvbXA6IE5ldyBmaWxlLgoKCSogbGlzcC5hbTogTmV3IGZpbGUuCgoJKiBhdXRvbWFrZS5pbiAoZ2VuZXJhdGVfbWFrZWZpbGUpOiBSdW4gaGFuZGxlX2VtYWNzX2xpc3AuCgoJKiBhY2xvY2FsLm00ICh1ZF9QQVRIX0xJU1BESVIpOiBOZXcgbWFjcm8sIGZyb20gVWxyaWNoIERyZXBwZXIuCgoJKiBhdXRvbWFrZS5pbiAoaW5pdGlhbGl6ZV9nbG9iYWxfY29uc3RhbnRzKTogUmVtb3ZlZCB2ZXJzaW9uLnRleGkKCWZyb20gY29tbW9uX3NvbWV0aW1lcy4KCShpbml0aWFsaXplX2dsb2JhbF9jb25zdGFudHMpOiBBZGRlZCB0ZXhpbmZvLnRleCB0byBjb21tb25fZmlsZXMuCglUZXN0IHRleGluZm8udGVzdC4KCShoYW5kbGVfdGVzdHMpOiBBbGxvdyBkZWphZ251LSBhbmQgYXV0b21ha2Utc3R5bGUgdGVzdCBzdWl0ZXMgdG8KCWNvZXhpc3QuICBUZXN0IGRlamFnbnUudGVzdC4KCShpbml0aWFsaXplX2dsb2JhbF9jb25zdGFudHMpOiBOZXcgY29uc3RhbnRzIEFDX0NBTk9OSUNBTF9IT1NULAoJQUNfQ0FOT05JQ0FMX1NZU1RFTS4KCShzY2FuX2NvbmZpZ3VyZSk6IFVzZSBuZXcgY29uc3RhbnRzLgoJKGhhbmRsZV90ZXN0cyk6IFB1dCB0YXJnZXQgc3BlY2lmaWMgaW5mb3JtYXRpb24gaW50byBzaXRlLmV4cCBpZgoJQUNfQ0FOT05JQ0FMXyogdXNlZC4KCShyZWFkX2FtX2ZpbGUpOiBHZW5lcmF0ZSBzb21lIGV4dHJhIHZhcmlhYmxlcyB3aGVuIEFDX0NBTk9OSUNBTF8qCgl1c2VkLgoJKGhhbmRsZV9vcHRpb25zKTogQWxsb3cgdmVyc2lvbiBudW1iZXIgdG8gaGF2ZSBsZXR0ZXJzIGFwcGVuZGVkLgoJKGhhbmRsZV90ZXN0cyk6IEVycm9yIGlmIFJVTlRFU1QsIFJVTlRFU1RGTEFHUyBkZWZpbmVkIGJ1dCBkZWphZ251CglvcHRpb24gbm90IHNwZWNkLgoJKGluaXRpYWxpemVfZ2xvYmFsX2NvbnN0YW50cyk6IGluc3RhbGxfbWFuX2Zvcm1hdCBjaGFuZ2VkIHRvCgloYW5kbGUgYnVpbHQgbWFuIHBhZ2VzLgoKV2VkIE1heSAyOSAxMDozNTowMSAxOTk2ICBUb20gVHJvbWV5ICA8dHJvbWV5QGNyZWNoZS5jeWdudXMuY29tPgoKCSogY29uZmlnLmd1ZXNzLCBjb25maWcuc3ViOiBOZXcgdmVyc2lvbnMuCgpUdWUgTWF5IDI4IDE5OjI3OjExIDE5OTYgIFRvbSBUcm9tZXkgIDx0cm9tZXlAY3JlY2hlLmN5Z251cy5jb20+CgoJKiBjb25maWd1cmUuaW4gKFZFUlNJT04pOiBVcHBlZCB0byAxLjAuCgpTYXQgTWF5IDI1IDEwOjE5OjUzIDE5OTYgIFRvbSBUcm9tZXkgIDx0cm9tZXlAY3JlY2hlLmN5Z251cy5jb20+CgoJKiBhdXRvbWFrZS5pbiAoaGFuZGxlX3Rlc3RzKTogSGFuZGxlIGRlamFnbnUuCgkoaGFuZGxlX29wdGlvbnMpOiBSZWNvZ25pemUgZGVqYWdudSBvcHRpb24uCgoJKiBkZWphZ251LmFtOiBOZXcgZmlsZS4KClRodSBNYXkgMjMgMTA6MDE6MTMgMTk5NiAgVG9tIFRyb21leSAgPHRyb21leUBjcmVjaGUuY3lnbnVzLmNvbT4KCgkqIGF1dG9tYWtlLmluIChoYW5kbGVfZGlzdCk6IFJ1biBpbnN0YWxsY2hlY2sgdGFyZ2V0IGZyb20KCWRpc3RjaGVjay4KCgkqIGNvbmZpZ3VyZS5pbiAoVkVSU0lPTik6IFVwcGVkIHRvIDAuMzQuCgoJKiBhdXRvbWFrZS5pbiAoc2Nhbl9jb25maWd1cmUpOiBBbHdheXMgYWxsb3cgdXBncmFkaW5nIHRvCglmcF9QUk9HX0lOU1RBTEwuICBUZXN0IGZwaW5zdGFsbC50ZXN0LgoKV2VkIE1heSAyMiAxNDo0NToyOCAxOTk2ICBKb3NodWEgQ293YW4gIDxqY293YW5AaGVybWl0LnJlc2xpZmUub2tzdGF0ZS5lZHU+CgoJKGhhbmRsZV9kaXN0KTogTWFrZSBgZGlzdGNoZWNrJyBjaGVjayBgaW5zdGFsbCcgdGFyZ2V0LCB0b28uCgpXZWQgTWF5IDIyIDA5OjQ5OjI3IDE5OTYgIFRvbSBUcm9tZXkgIDx0cm9tZXlAY3JlY2hlLmN5Z251cy5jb20+CgoJKiBhdXRvbWFrZS5pbiAoaW5pdGlhbGl6ZV9wZXJfaW5wdXQpOiBEb24ndCBpbml0aWFsaXplCgkkb3V0cHV0X2RpcmVjdG9yeSBoZXJlOyBpbml0aWFsaXplIGl0IGdsb2JhbGx5LiAgRnJvbSBKb3NodWEKCUNvd2FuLiAgVGVzdCBvdXRkaXIudGVzdC4KClNhdCBNYXkgMTggMTA6NTc6NDAgMTk5NiAgVG9tIFRyb21leSAgPHRyb21leUBjcmVjaGUuY3lnbnVzLmNvbT4KCgkqIGF1dG9tYWtlLmluIChoYW5kbGVfdGVzdHMpOiBEb24ndCBwdXNoIFRFU1RTIG9udG8gZGlzdF9jb21tb24uCgkoaW5pdGlhbGl6ZV9nbG9iYWxfY29uc3RhbnRzKTogUHV0IGluc3RhbGwtc2ggYW5kIG1raW5zdGFsbGRpcnMKCWludG8gQGNvbW1vbl9maWxlcy4gIFRlc3QgaW5zaDIudGVzdC4KCkZyaSBNYXkgMTcgMDk6MDI6MDIgMTk5NiAgVG9tIFRyb21leSAgPHRyb21leUBjcmVjaGUuY3lnbnVzLmNvbT4KCgkqIGF1dG9tYWtlLmluIChoYW5kbGVfc291cmNlX3RyYW5zZm9ybSk6IERvbid0IGdlbmVyYXRlIF9PQkpFQ1RTCgl3aGVuIG5vIHNvdXJjZSBmaWxlcyBzcGVjaWZpZWQuICBUZXN0IG51bWJlci50ZXN0LgoKCUZyb20gSm9lcmctTWFydGluIFNjaHdhcno6CgkqIGF1dG9tYWtlLmluIChzZWVuX3BhY2thZ2UsIHNlZW5fdmVyc2lvbik6IE5ldyBnbG9iYWxzLgoJKHNjYW5fY29uZmlndXJlKTogTG9vayBmb3IgUEFDS0FHRT0gYW5kIFZFUlNJT049LgoKCSogYXV0b21ha2UuaW4gKGhhbmRsZV9vcHRpb25zKTogUmVjb2duaXplIGRpc3QtemlwLgoJKGhhbmRsZV9kaXN0KTogSGFuZGxlIGRpc3QtemlwLgoJKGhhbmRsZV9vcHRpb25zKTogVXNlICcgJywgbm90IFxzKywgd2l0aCBzcGxpdC4gIFRlc3QKCWJhY2tzbC50ZXN0LgoJKGhhbmRsZV9zb3VyY2VfdHJhbnNmb3JtKTogTGlrZXdpc2UuCgkoaGFuZGxlX2xpYl9vYmplY3RzKTogTGlrZXdpc2UuCgkoaGFuZGxlX2xpYnJhcmllcyk6IExpa2V3aXNlLgoJKGhhbmRsZV90ZXhpbmZvKTogTGlrZXdpc2UuCgkoaGFuZGxlX21hbl9wYWdlcyk6IExpa2V3aXNlLgoJKGhhbmRsZV9zdWJkaXJzKTogTGlrZXdpc2UuCgkoaGFuZGxlX2dldHRleHQpOiBMaWtld2lzZS4KCShoYW5kbGVfZm9vdGVyKTogTGlrZXdpc2UuCgkoaGFuZGxlX3Rlc3RzKTogTGlrZXdpc2UuCgkoc2Nhbl9jb25maWd1cmUpOiBMaWtld2lzZS4KCShhbV9pbnN0YWxsX3Zhcik6IExpa2V3aXNlLgoKCSogTWFrZWZpbGUuYW0gKFRBR1NfREVQRU5ERU5DSUVTKTogTmV3IG1hY3JvLgoKCSogdGFncy5hbSAodGFncy1yZWN1cnNpdmUpOiBOZXcgdGFyZ2V0LgoJKFRBR1MpOiBEZXBlbmQgb24gaXQuCgoJKiBhdXRvbWFrZS5pbiAoaGFuZGxlX3RhZ3MpOiBQdXQgdGFncy1yZWN1cnNpdmUgb24gQHBob255LgoKCSogdGFncy1zdWJkLmFtIChUQUdTKTogRGVwZW5kIG9uIEhFQURFUlMsIFNPVVJDRVMsCglUQUdTX0RFUEVOREVOQ0lFUy4KCSogdGFncy5hbSAoVEFHUyk6IERlcGVuZCBvbiBIRUFERVJTLCBTT1VSQ0VTLCBUQUdTX0RFUEVOREVOQ0lFUy4KClRodSBNYXkgMTYgMDk6MjE6NDggMTk5NiAgVG9tIFRyb21leSAgPHRyb21leUBjcmVjaGUuY3lnbnVzLmNvbT4KCgkqIHJlbWFrZS5hbSAoY29uZmlndXJlKTogRGVwZW5kIG9uICQoQ09ORklHVVJFX0RFUEVOREVOQ0lFUykuCgoJKiBhdXRvbWFrZS5pbiAoc2Nhbl9jb25maWd1cmUpOiBMb29rIGZvciBpbnN0YWxsLXNoIGFuZAoJbWtpbnN0YWxsZGlycyBoZXJlLgoJKGluaXRpYWxpemVfZ2xvYmFsX2NvbnN0YW50cyk6IE1vdmVkIG1kYXRlLXNoIGZyb20KCWNvbW1vbl9zb21ldGltZXMgdG8gY29tbW9uX2ZpbGVzLiAgVGVzdCBtZGF0ZTIudGVzdC4KClR1ZSBNYXkgMTQgMjE6NTI6MDEgMTk5NiAgVG9tIFRyb21leSAgPHRyb21leUBjcmVjaGUuY3lnbnVzLmNvbT4KCgkqIGF1dG9tYWtlLmluIChzZWVuX21haW50X21vZGUpOiBOZXcgZ2xvYmFsLgoJKHNjYW5fY29uZmlndXJlKTogSGFuZGxlIGptX01BSU5UQUlORVJfTU9ERS4KCShyZWFkX2FtX2ZpbGUpOiBIYW5kbGUgc2Vlbl9tYWludF9tb2RlLgoJKGZpbGVfY29udGVudHNfd2l0aF90cmFuc2Zvcm0pOiBIYW5kbGUgc2Vlbl9tYWludF9tb2RlLgoJKGhhbmRsZV9zb3VyY2VfdHJhbnNmb3JtKTogQ2hhbmdlZCBpbnRlcmZhY2UsIGFsbCBjYWxsZXJzLgoKCUZyb20gSmltIE1leWVyaW5nOgoJKiByZW1ha2UtaGRyLmFtLCByZW1ha2Utc3ViZC5hbSwgcmVtYWtlLmFtLCB0ZXhpLXZlcnNpb24uYW06CglIYW5kbGUgQE1BSU5UQC4KCSogYWNsb2NhbC5tNCAoam1fTUFJTlRBSU5FUl9NT0RFKTogTmV3IG1hY3JvLgoKCSogYXV0b21ha2UuaW4gKGhhbmRsZV9jb25maWd1cmUpOiBDaGVjayAkY29uZmlnX2F1eF9kaXIgYWdhaW5zdAoJZW1wdHkgc3RyaW5nLiAgRnJvbSBNYXJra3UgUm9zc2kuICBUZXN0IG1raW5zdGFsbC50ZXN0LgoKRnJpIE1heSAxMCAxNDozODo0NyAxOTk2ICBHb3JkIE1hdHppZ2tlaXQgIDxnb3JkQGdudS5haS5taXQuZWR1PgoKCSogYXV0b21ha2UuaW4gKGRpc3RjaGVjayk6IEFkZGVkIG5ldyBydWxlIHRvIHRvcCBsZXZlbAoJTWFrZWZpbGUuaW4uCgpXZWQgTWF5ICA4IDIxOjU3OjIxIDE5OTYgIEdvcmQgTWF0emlna2VpdCAgPGdvcmRAZ251LmFpLm1pdC5lZHU+CgoJKiBhdXRvbWFrZS5pbiAoc2Nhbl9jb25maWd1cmUpOiBNYWtlIHN1cmUgdGhhdCBnbV9QUk9HX0xJQlRPT0wKCXNldHMgc2Vlbl9yYW5saWIuCgkoZ2VuZXJhdGVfbWFrZWZpbGUpOiBsaWJ0b29sLCBjb25maWcuc3ViLCBhbmQgY29uZmlnLmd1ZXNzIHNob3VsZAoJb25seSBldmVyIGFwcGVhciBpbiB0aGUgdG9wIGRpcmVjdG9yeSBvZiBhIHBhY2thZ2UuCgpUdWUgTWF5IDE0IDEwOjI0OjMwIDE5OTYgIFRvbSBUcm9tZXkgIDx0cm9tZXlAY3JlY2hlLmN5Z251cy5jb20+CgoJKiBhdXRvbWFrZS5pbiAoaW5pdGlhbGl6ZV9nbG9iYWxfY29uc3RhbnRzKTogQWRkZWQgbGlidmVyc2lvbi5pbgoJdG8gQGNvbW1vbl9maWxlcy4KCgkqIGNvbmZpZ3VyZS5pbiAoVkVSU0lPTik6IFVwcGVkIHRvIDAuMzMuCgoJKiBhdXRvbWFrZS5pbiAoYW1faW5zdGFsbF92YXIpOiBGaXhlZCBwcm9ibGVtIGluIEVYVFJBXyBoYW5kbGluZy4KCVRlc3QgZXh0cmEudGVzdC4KCk1vbiBNYXkgMTMgMTA6NDE6NDEgMTk5NiAgVG9tIFRyb21leSAgPHRyb21leUBjcmVjaGUuY3lnbnVzLmNvbT4KCgkqIGluc3RhbGwtc2ggKHRyYW5zZm9ybWJhc2VuYW1lKTogQ29ycmVjdCBtaXNzcGVsbGluZyBvZgoJdHJhbnNmb3JtYmFzZW5hbWUuICBGcm9tIElhbiBMYW5jZSBUYXlsb3IuCgpTYXQgQXByIDI3IDExOjM5OjEwIDE5OTYgIFRvbSBUcm9tZXkgIDx0cm9tZXlAY3JlY2hlLmN5Z251cy5jb20+CgoJKiBhdXRvbWFrZS5pbiAoaGFuZGxlX2NvbmZpZ3VyZSk6IFNldCBta2luc3RhbGxkaXJzIHZhcmlhYmxlCgloZXJlLgoJKGhhbmRsZV9kaXN0X3dvcmtlcik6IEV4cGxpY2l0bHkgc2V0IGRpc3RkaXIgaW4gc3ViZGlyIG1ha2VzLgoJKGhhbmRsZV9kaXN0KTogSGFuZGxlIHNlcGFyYXRlIGRpc3RkaXIgdGFyZ2V0LgoJKGhhbmRsZV9kaXN0X3dvcmtlcik6IE9ubHkgZ2VuZXJhdGUgZGlzdGRpciB0YXJnZXQuCgoJKiB0ZXhpbmZvcy5hbSAoaW5zdGFsbC1pbmZvKTogVXNlICQobWtpbnN0YWxsZGlycykuCgkqIHNjcmlwdHMuYW0gKGluc3RhbGwtQERJUkBTQ1JJUFRTKTogVXNlICQobWtpbnN0YWxsZGlycykuCgkqIHByb2dyYW1zLmFtIChpbnN0YWxsLUBESVJAUFJPR1JBTVMpOiBVc2UgJChta2luc3RhbGxkaXJzKS4KCSogbGlicmFyaWVzLmFtIChpbnN0YWxsLUBESVJATElCUkFSSUVTKTogVXNlICQobWtpbnN0YWxsZGlycykuCgkqIGhlYWRlci5hbSAoaW5zdGFsbC1ARElSQEhFQURFUlMpOiBVc2UgJChta2luc3RhbGxkaXJzKS4KCSogZGF0YS5hbSAoaW5zdGFsbC1ARElSQERBVEEpOiBVc2UgJChta2luc3RhbGxkaXJzKS4KCgkqIGF1dG9tYWtlLmluIChyZWFkX2FtX2ZpbGUpOiBTZXQgbWtpbnN0YWxsZGlycyB2YXJpYWJsZS4KCShoYW5kbGVfbWFuX3BhZ2VzKTogVXNlIGl0LgoJKGhhbmRsZV9pbnN0YWxsZGlycyk6IERpdHRvLgoKRnJpIEFwciAyNiAxNToxMDo0OCAxOTk2ICBUb20gVHJvbWV5ICA8dHJvbWV5QGNyZWNoZS5jeWdudXMuY29tPgoKCSogYXV0b21ha2UuaW4gKGhhbmRsZV9tYW5fcGFnZXMpOiBGaXggbWtpbnN0YWxsZGlycyBpbnZvY2F0aW9uLgoKVGh1IEFwciAyNSAxODo0MDowNiAxOTk2ICBUb20gVHJvbWV5ICA8dHJvbWV5QGNyZWNoZS5jeWdudXMuY29tPgoKCSogYXV0b21ha2UuaW4gKGhhbmRsZV9kaXN0X3dvcmtlcik6IFVzZSAkKFRBUiksIG5vdCB0YXIuCgkoaGFuZGxlX21lcmdlX3RhcmdldHMpOiBNYWtlIHN1cmUgY29uZmlnIGhlYWRlciBpcyBidWlsdCBiZWZvcmUKCXJlY3Vyc2luZyBpbnRvIHN1YmRpcnMuCgkoaGFuZGxlX2xpYnJhcmllcyk6IEdlbmVyYXRlIExJQkZJTEVTIGZvciBjaGVja19MSUJSQVJJRVMuCgkoaGFuZGxlX21lcmdlX3RhcmdldHMpOiBIYW5kbGUgY2FzZSB3aGVyZSBub3RoaW5nIGlzIGluc3RhbGxlZCBidXQKCXNvbWV0aGluZyBtdXN0IGJlIGJ1aWx0IC0tICJtYWtlIGluc3RhbGwiIG11c3Qgc3RpbGwgd29yay4KCgkqIGRpc3QtdmFycy5hbSAoVEFSKTogTmV3IG1hY3JvLgoKCSogYXV0b21ha2UuaW4gKHNjYW5fY29uZmlndXJlKTogU3VwcG9ydCBBQ19SRVBMQUNFX0dOVV9HRVRPUFQuCgkoaGFuZGxlX2NvbmZpZ3VyZSk6IFJlcXVpcmUgc3RhbXAtaC5pbiB3aGVuIGNvbmZpZyBoZWFkZXIgdXNlZC4KClR1ZSBBcHIgMjMgMTc6NTc6MTMgMTk5NiAgQW5kcmVhcyBTY2h3YWIgIDxzY2h3YWJAaXNzYW4uaW5mb3JtYXRpay51bmktZG9ydG11bmQuZGU+CgoJKiBkb2MvbWRhdGUtc2g6IEV4dHJhY3QgdGhlIGxhc3QgZmllbGQgZnJvbSB0aGUgZGF0ZSBvdXRwdXQsIG5vdAogCXRoZSBzaXh0aCwgd2hpY2ggd2lsbCBmYWlsIHdoZW4gdGhlIHRpbWV6b25lIG5hbWUgaGFzIG1vcmUgdGhhbgogCW9uZSB3b3JkIG9yIGlzIG1pc3NpbmcuCgpXZWQgQXByIDI0IDIwOjI5OjI2IDE5OTYgIFRvbSBUcm9tZXkgIDx0cm9tZXlAY3JlY2hlLmN5Z251cy5jb20+CgoJKiBhdXRvbWFrZS5pbiAoYW1faW5zdGFsbF92YXIpOiBVc2UgZGVsZXRlLCBub3QgdW5kZWYsIHRvIHJlbW92ZQoJRVhUUkEgZW50cnkuICBGcm9tIEdvcmQgTWF0emlna2VpdC4KCk1vbiBBcHIgMjIgMTc6NDg6NTAgMTk5NiAgVG9tIFRyb21leSAgPHRyb21leUBjcmVjaGUuY3lnbnVzLmNvbT4KCgkqIGF1dG9tYWtlLmluIChyZWFkX2FtX2ZpbGUpOiBIYW5kbGUgY2FzZSB3aGVyZSBsYXN0IGxpbmUgZG9lc24ndAoJZW5kIGluIG5ld2xpbmUuCgpUdWUgQXByICA5IDIyOjUzOjE2IDE5OTYgIFRvbSBUcm9tZXkgIDx0cm9tZXlAY3JlY2hlLmN5Z251cy5jb20+CgoJKiBhdXRvbWFrZS5pbiAodmFyaWFibGVfZGVmaW5lZCk6IE5ldyBmdW5jdGlvbi4KCShyZWFkX2FtX2ZpbGUpOiBFbnN1cmUgYSBibGFuayBsaW5lIGNvbWVzIGJlZm9yZSBzdGFydGluZyBjb21tZW50cwoJZnJvbSBNYWtlZmlsZS5hbS4KCShpbml0aWFsaXplX3Blcl9pbnB1dCk6IEluaXRpYWxpemUgJXRhcmdldHMuCgkocmVhZF9hbV9maWxlKTogU2V0IGFwcHJvcHJpYXRlIGVudHJ5IGluICV0YXJnZXRzLgoJTWFueSBjaGFuZ2VzIHRvIHVzZSB2YXJpYWJsZV9kZWZpbmVkLgoJKGNoZWNrX2dudV9zdGFuZGFyZHMpOiBPbmx5IHJlcXVpcmUgQ2hhbmdlTG9nIGF0IHRvcCBsZXZlbC4gIEZyb20KCUdvcmQgTWF0emlna2VpdC4KCShoYW5kbGVfdGVzdHMpOiBjaGVjay1URVNUUyBkZXBlbmRzIG9uICQoVEVTVFMpLiAgRnJvbSBHb3JkCglNYXR6aWdrZWl0LgoKTW9uIEFwciAgOCAyMjo1MTo0MSAxOTk2ICBUb20gVHJvbWV5ICA8dHJvbWV5QGNyZWNoZS5jeWdudXMuY29tPgoKCSogYXV0b21ha2UuaW4gKHBhcnNlX2FyZ3VtZW50cyk6IEFkZGVkIHNob3J0IG9wdGlvbnMuCgkoaW5pdGlhbGl6ZV9nbG9iYWxfY29uc3RhbnRzKTogRGl0dG8uCgpGcmkgQXByICA1IDAwOjIyOjE0IDE5OTYgIFRvbSBUcm9tZXkgIDx0cm9tZXlAY3JlY2hlLmN5Z251cy5jb20+CgoJKiBta2luc3RhbGxkaXJzIChlcnJzdGF0dXMpOiBEb24ndCBuZWNlc3NhcmlseSBkaWUgaWYgbWtkaXIKCWZhaWxzLgoKCSogYXV0b21ha2UuaW4gKGhhbmRsZV9zb3VyY2VfdHJhbnNmb3JtKTogVHlwbyBmaXguCgpUaHUgQXByICA0IDE1OjEwOjUwIDE5OTYgIFRvbSBUcm9tZXkgIDx0cm9tZXlAY3JlY2hlLmN5Z251cy5jb20+CgoJKiBhdXRvbWFrZS5pbiAoaGFuZGxlX2Rpc3Rfd29ya2VyKTogUmVuYW1lZCBkaXN0LWxvY2FsIHRvCglkaXN0LWhvb2suCgkoaGFuZGxlX21lcmdlX3RhcmdldHMpOiBBZGRlZCBpbnN0YWxsLWRhdGEtaG9vayBhbmQKCWluc3RhbGwtZXhlYy1ob29rLgoJKGhhbmRsZV9zb3VyY2VfdHJhbnNmb3JtKTogSGFuZGxlIEVYVFJBX3Byb2dfU09VUkNFUyBmb3JtLgoKCSogYXV0b21ha2UuaW4gKGhhbmRsZV9zY3JpcHRzKTogTmV2ZXIgYWxsb3cgc2NyaXB0c19pbnN0YWxsZWQgdG8KCWJlY29tZSAwLgoKCSogc2NyaXB0cy5hbSAoaW5zdGFsbC1ARElSQFNDUklQVFMpOiBTY3JpcHRzIGNhbiBiZSBmb3VuZCBpbgoJc3JjZGlyLgoKCSogYXV0b21ha2UuaW4gKGdlbmVyYXRlX21ha2VmaWxlKTogRGVyaXZlZCBmaWxlIG5hbWVzIGZyb20gZ2l2ZW4KCWlucHV0OyBkb24ndCBhc3N1bWUgTWFrZWZpbGUuaW4gYW5kIE1ha2VmaWxlLmFtLgoJKGFtX2ZpbGVfbmFtZSwgaW5fZmlsZV9uYW1lKTogTmV3IGdsb2JhbHMuCgkocmVhZF9hbV9maWxlKTogVXNlIHRoZW0uCgoJKiBwcm9ncmFtLmFtIChAUFJPR1JBTUApOiBVc2UgdHJhbnNmb3JtZWQgcHJvZ3JhbSBuYW1lLgoKCSogcmVtYWtlLWhkci5hbSAoc3RhbXAtaCk6IEFjdHVhbGx5IHRvdWNoIHN0YW1wLWguCgpXZWQgQXByICAzIDE1OjE2OjA2IDE5OTYgIFRvbSBUcm9tZXkgIDx0cm9tZXlAY3JlY2hlLmN5Z251cy5jb20+CgoJKiBhdXRvbWFrZS5pbiAocmVxdWlyZV9maWxlX2ludGVybmFsKTogVXNlIGNvcnJlY3QgZmlsZSBmb3IgZXJyb3IKCW1lc3NhZ2VzLiAgVGVzdCBpbnNoLnRlc3QuCgpNb24gQXByICAxIDA5OjQ3OjQ0IDE5OTYgIFRvbSBUcm9tZXkgIDx0cm9tZXlAY3JlY2hlLmN5Z251cy5jb20+CgoJKiB0ZXhpbmZvcy5hbSAoLnRleGkuaW5mbyk6IEJ1aWxkIG91dHB1dCBmaWxlIGluIHNyY2Rpci4KCgkqIGF1dG9tYWtlLmluIChyZXF1aXJlX2ZpbGVfaW50ZXJuYWwpOiBJZiAkZGlyIGlzICIuIix0aGVuIGxvb2sgaW4KCXJlbGF0aXZlIGRpcmVjdG9yeS4KCShoYW5kbGVfdGV4aW5mbyk6IENhbm9uaWNhbGl6ZSBuYW1lIG9mIHRleGkgZmlsZSBiZWZvcmUgbG9va2luZwoJZm9yIGRlcGVuZGVuY3kgdmFyaWFibGUuCgpUaHUgTWFyIDI4IDA4OjMzOjIxIDE5OTYgIFRvbSBUcm9tZXkgIDx0cm9tZXlAY3JlY2hlLmN5Z251cy5jb20+CgoJKiBhdXRvbWFrZS5pbiAocmVxdWlyZV9jb25mX2ZpbGVfd2l0aF9jb25mX2xpbmUpOiBZZXQgYW5vdGhlcgoJZnVuY3Rpb24gb2YgdGhpcyBmb3JtLgoJKGxpYnRvb2xfbGluZSk6IE5ldyB2YXJpYWJsZS4KCShoYW5kbGVfbGlicmFyaWVzKTogSGFuZGxlIGxpYnRvb2wuCgoJKiBsaWJyYXJpZXMtdmFycy5hbTogUmVtb3ZlZC4KCgkqIGF1dG9tYWtlLmluIChzZWVuX2xpYnRvb2wpOiBOZXcgdmFyaWFibGUuCgkoc2Nhbl9jb25maWd1cmUpOiBMb29rIGZvciBnbV9QUk9HX0xJQlRPT0wgb3IgQUNfUFJPR19MSUJUT09MLgoKCSogYXV0b21ha2UuaW4gKGhhbmRsZV9kaXN0X3dvcmtlcik6IEhhbmRsZSBkaXN0LWxvY2FsLgoKCSogTWFrZWZpbGUuYW0gKG1haW50YWluZXItY2hlY2spOiBEbyAibWFrZSBjaGVjayIgYWZ0ZXIgYWxsIHN5bnRheAoJY2hlY2tzLgoKCSogdGV4aS12ZXJzaW9uLmFtIChzdGFtcC1AVlRJQCk6IExvb2sgZm9yIG1kYXRlLXNoIGluIGFwcHJvcHJpYXRlCglkaXJlY3RvcnkuCgoJKiBhdXRvbWFrZS5pbiAoJHNlZW5fYXJnX3Byb2cpOiBOZXcgZ2xvYmFsLgoJKGhhbmRsZV9wcm9ncmFtcyk6IEVycm9yIGlmIEFDX0FSR19QUk9HUkFNIG5vdCBzZWVuLgoJKGhhbmRsZV9zY3JpcHRzKTogRGl0dG8uCgkoaGFuZGxlX2NvbmZpZ3VyZSk6IG1raW5zdGFsbGRpcnMgbm93IGEgY29uZmlnIGZpbGUuCgkoaGFuZGxlX2luc3RhbGxkaXJzKTogRmluZCBta2luc3RhbGxkaXJzIGluIGNvbmZpZ19hdXhfZGlyLgoJKGhhbmRsZV9kaXN0X3dvcmtlcik6IFJlbW92ZWQgRElTVF9TVUJESVJTLgoJKHJlcXVpcmVfZmlsZV9wYXRoKTogTmV3IHZhcmlhYmxlLgoJKHJlcXVpcmVfZmlsZV93aXRoX2NvbmZfbGluZSk6IFNldCBpdC4KCShyZXF1aXJlX2ZpbGVfd2l0aF9saW5lKTogRGl0dG8uCgkocmVxdWlyZV9maWxlKTogRGl0dG8uCgkocmVxdWlyZV9maWxlX2ludGVybmFsKTogSW5jb3Jwb3JhdGVkIGNvZGUgZnJvbQoJcmVxdWlyZV9jb25maWdfZmlsZS4KCShyZXF1aXJlX2NvbmZpZ19maWxlKTogUmV3cm90ZS4KCShyZXF1aXJlX2NvbmZfZmlsZV93aXRoX2xpbmUpOiBOZXcgZnVuY3Rpb24uCgkoaGFuZGxlX3RleGluZm8pOiBVc2UgaXQgZm9yIG1kYXRlLXNoLgoJKGhhbmRsZV90ZXhpbmZvKTogTG9vayBmb3IgbWRhdGUtc2ggaW4gYXBwcm9wcmlhdGUgZGlyZWN0b3J5LgoKVHVlIE1hciAyNiAxMzo0Nzo1NCAxOTk2ICBUb20gVHJvbWV5ICA8dHJvbWV5QGNyZWNoZS5jeWdudXMuY29tPgoKCSogTWFrZWZpbGUuYW0gKGN2cy1kaXN0KTogRmluZCBORVdTIGluIHNyY2Rpci4KCSogYXV0b21ha2UuaW4gKGhhbmRsZV9kaXN0X3dvcmtlcik6IEZpbmQgTkVXUyBpbiBzcmNkaXIuCgkoJFJVTEVfUEFUVEVSTik6IEluY2x1ZGUgY2hhcnMgIiQoKXt9LyIgaW4gYWxsb3dhYmxlIHBhdHRlcm5zIGluIGEKCXJ1bGUuCgkocmVxdWlyZV9jb25maWdfZmlsZSk6IFNldCBjb25maWdfYXV4X3BhdGggd2hlbiBmaWxlIGZvdW5kLgoJKCRjb25maWdfYXV4X2Rpcik6IE5ldyB2YXJpYWJsZS4KCShyZXF1aXJlX2NvbmZpZ19maWxlKTogU2V0IGl0LgoJKGhhbmRsZV9tYW5fcGFnZXMpOiBGaW5kIG1raW5zdGFsbGRpcnMgaW4gY29uZmlnX2F1eF9kaXIuCgpNb24gTWFyIDI1IDE1OjMyOjU3IDE5OTYgIFRvbSBUcm9tZXkgIDx0cm9tZXlAY3JlY2hlLmN5Z251cy5jb20+CgoJKiBkYXRhLmFtIChpbnN0YWxsLUBESVJAREFUQSk6IEFsc28gYWxsb3cgZGF0YSB0byBiZSBpbiBidWlsZAoJZGlyZWN0b3J5LgoKU3VuIE1hciAyNCAxOTo1NjoyOCAxOTk2ICBUb20gVHJvbWV5ICA8dHJvbWV5QGNyZWNoZS5jeWdudXMuY29tPgoKCSogYXV0b21ha2UuaW4gKGFtX2luc3RhbGxfdmFyKTogRG9uJ3QgbG9vayBpbiBFWFRSQV9wcmltYXJ5Cgl2YXJpYWJsZSBhbnkgbW9yZTsgaXQgaXMgaGFuZGxlZCBpbiB0aGUgbWFpbiBsb29wLgoKV2VkIE1hciAyMCAxNjoyMjozNSAxOTk2ICBUb20gVHJvbWV5ICA8dHJvbWV5QGNyZWNoZS5jeWdudXMuY29tPgoKCSogZGF0YS5hbSAoaW5zdGFsbC1ARElSQERBVEEpOiBGaW5kIGRhdGEgaW4gc3JjZGlyLgoKRnJpIE1hciAxNSAxODozMDozMSAxOTk2ICBUb20gVHJvbWV5ICA8dHJvbWV5QGNyZWNoZS5jeWdudXMuY29tPgoKCSogYXV0b21ha2UuaW4gKHJlcXVpcmVfY29uZmlnX2ZpbGUpOiBVc2UgY29ycmVjdCBmaWxlbmFtZSB3aGVuCglsb29raW5nIGZvciBlcnJvcnMuICBBbHNvLCBpbnN0YWxsIGZpbGUgaW4gYC4nIGlmIG5vdCBmb3VuZC4gIEJ1ZwoJcmVwb3J0ZWQgYnkgR29yZCBNYXR6aWdrZWl0LiAgVGVzdCBpbnN0YWxsc2gudGVzdC4KClRodSBNYXIgMTQgMDk6Mjg6MjEgMTk5NiAgVG9tIFRyb21leSAgPHRyb21leUBjcmVjaGUuY3lnbnVzLmNvbT4KCgkqIE1ha2VmaWxlLmFtIChjdnMtZGlmZik6IE5ldyB0YXJnZXQuCgoJRml4IGZvciBidWcgd2hlbiBpbnN0YWxsIHZhciBzdWJzdGl0dXRlcyBlbXB0eS4gIFRlc3QgZW1wdHkudGVzdC4KCSogaGVhZGVyLmFtIChpbnN0YWxsLUBESVJASEVBREVSUyk6IEFsbG93IGVtcHR5IGxpc3Qgb2YgaGVhZGVycy4KCSh1bmluc3RhbGwtQERJUkBIRUFERVJTKTogRGl0dG8uCgkqIHNjcmlwdHMuYW0gKGluc3RhbGwtQERJUkBTQ1JJUFRTKTogQWxsb3cgZW1wdHkgbGlzdCBvZiBzY3JpcHRzLgoJKHVuaW5zdGFsbC1ARElSQFNDUklQVFMpOiBEaXR0by4KCSogbGlicmFyaWVzLmFtIChpbnN0YWxsLUBESVJATElCUkFSSUVTKTogQWxsb3cgZW1wdHkgbGlzdCBvZgoJbGlicmFyaWVzLgoJKHVuaW5zdGFsbC1ARElSQExJQlJBUklFUyk6IERpdHRvLgoJKiBkYXRhLmFtIChpbnN0YWxsLUBESVJAREFUQSk6IEFsbG93IGVtcHR5IGxpc3Qgb2YgZGF0YS4KCSh1bmluc3RhbGwtQERJUkBEQVRBKTogRGl0dG8uCgkqIHByb2dyYW1zLmFtIChpbnN0YWxsLUBESVJAUFJPR1JBTVMpOiBBZGRlZCBtaXNzaW5nIHNlbWljb2xvbi4KCUZyb20gRnJhbudvaXMgUGluYXJkLgoJKGluc3RhbGwtQERJUkBQUk9HUkFNUyk6IEZpeGVkIGJ1ZyB3aGVuIGxpc3Qgb2YgcHJvZ3JhbXMgZW1wdHkuCgkodW5pbnN0YWxsLUBESVJAUFJPR1JBTVMpOiBEaXR0by4KCldlZCBNYXIgMTMgMTk6NTA6MjMgMTk5NiAgVG9tIFRyb21leSAgPHRyb21leUBjcmVjaGUuY3lnbnVzLmNvbT4KCgkqIHRhZ3Mtc3ViZC5hbSAoSUQpOiBOYW1lIG9mIElEIGZpbGUgbXVzdCBiZSBmbHVzaCBhZ2FpbnN0IC1mLgoKCSogY29uZmlndXJlLmluIChWRVJTSU9OKTogVmVyc2lvbiAwLjMyLgoKTW9uIE1hciAxMSAxNzo1MDo1OCAxOTk2ICBUb20gVHJvbWV5ICA8dHJvbWV5QGNyZWNoZS5jeWdudXMuY29tPgoKCSogYXV0b21ha2UuaW4gKHNlZW5fbGluZ3VhcywgYWxsX2xpbmd1YXNfbGluZSk6IE5ldyB2YXJpYWJsZXMuCgkoaGFuZGxlX2dldHRleHQpOiBOZXcgZnVuY3Rpb24uCgkoZ2VuZXJhdGVfbWFrZWZpbGUpOiBSdW4gaXQuCgkoc2Nhbl9jb25maWd1cmUpOiBSZWNvZ25pemUgQUxMX0xJTkdVQVMuCgpNb24gTWFyIDExIDE0OjM0OjM2IDE5OTYgIEdvcmQgTWF0emlna2VpdCAgPGdvcmRAZW5jaS51Y2FsZ2FyeS5jYT4KCgkqIGF1dG9tYWtlLnRleGk6IGRvYyBmaXguCgoJKiBhdXRvbWFrZS5pbiAoYW1faW5zdGFsbF92YXIpOiBBZGRlZCBzdXBwb3J0IGZvciBjaGVjayBhbmQKCWluc3RhbGxjaGVjayBzcGVjaWFsIHByZWZpeGVzLgoKU3VuIE1hciAxMCAxMDo0NDo0MiAxOTk2ICBUb20gVHJvbWV5ICA8dHJvbWV5QGNyZWNoZS5jeWdudXMuY29tPgoKCSogYXV0b21ha2UuaW4gKGhhbmRsZV9zdWJkaXJzKTogRG9uJ3QgZG8gU1VCRElSUyBjaGVjayBmb3IKCWdldHRleHQuCgpUdWUgTWFyICA1IDE4OjEyOjA0IDE5OTYgIFRvbSBUcm9tZXkgIDx0cm9tZXlAY3JlY2hlLmN5Z251cy5jb20+CgoJKiBhdXRvbWFrZS5pbiAoT0JKRUNUX1BBVFRFUk4pOiBSZW1vdmVkLgoJKGFtX2luc3RhbGxfdmFyKTogTm8gZXJyb3IgaWYgbmFtZSBpcyBpbnZhbGlkLgoJKGhhbmRsZV9wcm9ncmFtcyk6IENhbm9uaWNhbGl6ZSBwcm9ncmFtIG5hbWVzLgoJKEJPR1VTX01BQ1JPX1BBVFRFUk4pOiBOZXcgdmFyaWFibGUuCgkocmVhZF9hbV9maWxlKTogRXJyb3IgaWYgYmFkIG1hY3JvIG5hbWUgZ2l2ZW4uCgkocmVxdWlyZV9maWxlX2ludGVybmFsKTogVXNlIGFtX2xpbmVfZXJyb3IsIG5vdCBhbV9jb25mX2Vycm9yLgoKCSogcHJvZ3JhbS5hbSAoQFBST0dSQU1AKTogUmVjb2duaXplIEBQUk9HUkFNQF9ERVBFTkRFTkNJRVMuCgpNb24gTWFyICA0IDE5OjMwOjI0IDE5OTYgIFRvbSBUcm9tZXkgIDx0cm9tZXlAY3JlY2hlLmN5Z251cy5jb20+CgoJKiBhdXRvbWFrZS5pbiAoaGFuZGxlX2xpYl9vYmplY3RzKTogTmV3IGZ1bmN0aW9uLgoJKGhhbmRsZV9saWJyYXJpZXMpOiBVc2UgaXQuCgkoaGFuZGxlX3Byb2dyYW1zKTogRGl0dG8uCgkoaGFuZGxlX2Rpc3Rfd29ya2VyKTogRGVwcmVjYXRlIERJU1RfU1VCRElSUy4KCShhbV9pbnN0YWxsX3Zhcik6IEFsbG93IGV4dGVuZGVkIGRpcmVjdG9yeSBtZWNoYW5pc20gdG8gd29yay4KCVRlc3QgZXhkaXIudGVzdC4KCgkqIGRpc3QtdmFycy5hbSAoRElTVEZJTEVTKTogVXNlIEVYVFJBX0RJU1QuCgkoREVQX0RJU1RGSUxFUyk6IERpdHRvLgoKCSogYXV0b21ha2UuaW4gKE9CSkVDVF9QQVRURVJOKTogTmV3IHZhcmlhYmxlLgoJKGFtX2luc3RhbGxfdmFyKTogVXNlIGl0LgoJKGhhbmRsZV9kaXN0KTogRElTVF9PVEhFUiBpcyBhbiBhbmFjaHJvbmlzbS4KClNhdCBNYXIgIDIgMTc6MDQ6MzggMTk5NiAgVG9tIFRyb21leSAgPHRyb21leUBjcmVjaGUuY3lnbnVzLmNvbT4KCgkqIGF1dG9tYWtlLmluIChoYW5kbGVfZGlzdF93b3JrZXIpOiBPbmx5IGNhdXNlIEF1dG9tYWtlIHRvIGJlCglyZS1ydW4gaWYgbm90IG1ha2luZyBhIGRpc3RyaWJ1dGlvbi4gIEZpeGVzIGJ1ZyByZXBvcnRlZCBieQoJSm9lcmctTWFydGluIFNjaHdhcnouCgkocmVxdWlyZV9maWxlX3dpdGhfbGluZSk6IE5ldyBmdW5jdGlvbi4KCShyZXF1aXJlX2ZpbGUpOiBVc2UgaXQuCgkoYW1fbGluZV9lcnJvcik6IERvbid0IHByaW50IGxpbmUgbnVtYmVyIGlmICRzeW1ib2wgaXMgZW1wdHkuCgkoZ2V0X29iamVjdF9leHRlbnNpb24pOiBVc2UgcmVxdWlyZV9maWxlX3dpdGhfbGluZS4KCShoYW5kbGVfbGlicmFyaWVzKTogVXNlIHJlcXVpcmVfZmlsZV93aXRoX2xpbmUuCgkoaGFuZGxlX3RleGluZm8pOiBVc2UgcmVxdWlyZV9maWxlX3dpdGhfbGluZS4KCShoYW5kbGVfY29uZmlndXJlKTogVXNlIGFtX2NvbmZfbGluZV9lcnJvciBhbmQKCXJlcXVpcmVfZmlsZV93aXRoX2NvbmZfbGluZS4KCShoYW5kbGVfc3ViZGlycyk6IFVzZSByZXF1aXJlX2ZpbGVfd2l0aF9jb25mX2xpbmUuCgkoaGFuZGxlX2NvbmZpZ3VyZSk6IFVzZSByZXF1aXJlX2ZpbGVfd2l0aF9jb25mX2xpbmUuCgkoaGFuZGxlX3Rlc3RzKTogUHVzaCBjaGVjay1URVNUUyBvbiBAcGhvbnkuCgkoYW1fY29uZl9saW5lX2Vycm9yKTogTmV3IGZ1bmN0aW9uLgoJKHJlcXVpcmVfZmlsZV93aXRoX2NvbmZfbGluZSk6IE5ldyBmdW5jdGlvbi4KCShyZXF1aXJlX2ZpbGVfaW50ZXJuYWwpOiBOZXcgZnVuY3Rpb24uCgkocmVxdWlyZV9maWxlX3dpdGhfbGluZSk6IFVzZSBpdC4KCShyZXF1aXJlX2ZpbGUpOiBEaXR0by4KCShhbV9jb25mX2xpbmVfZXJyb3IpOiBIYW5kbGUgZW1wdHkgbGluZSBudW1iZXIuCgkoYWNfZ2V0dGV4dF9saW5lLCBhY19vdXRwdXRfbGluZSk6IE5ldyB2YXJpYWJsZXMuCgkoc2Nhbl9jb25maWd1cmUpOiBTZXQgdGhlbS4KCkZyaSBNYXIgIDEgMDA6MTM6MDQgMTk5NiAgVG9tIFRyb21leSAgPHRyb21leUBjcmVjaGUuY3lnbnVzLmNvbT4KCgkqIGF1dG9tYWtlLmluIChwYXJzZV9hcmd1bWVudHMpOiBEZWZhdWx0IHN0cmljdG5lc3MgaXMgZ251LgoJQ2hhbmdlZCBgbm9ybWFsJyB0byBgZm9yZWlnbicgZXZlcnl3aGVyZS4KCShwYXJzZV9hcmd1bWVudHMpOiBIYW5kbGUgLS1mb3JlaWduLgoJKGluaXRpYWxpemVfZ2xvYmFsX2NvbnN0YW50cyk6IERvY3VtZW50IC0tZm9yZWlnbi4KCShoYW5kbGVfZGVwZW5kZW5jaWVzKTogQmV0dGVyIGVycm9yIG1lc3NhZ2UuCgkoaGFuZGxlX3RleGluZm8pOiBEb24ndCBwdXNoICR2dGV4aSBvbiBAdGV4aXMuCgkoaGFuZGxlX3RleGluZm8pOiBPbmx5IHB1c2ggJHZ0ZXhpIG9uIEB0ZXhpX2RlcHMgaWYgbm90IG51bGwuCgkoaGFuZGxlX2NvbmZpZ3VyZSk6IGluc3RhbGwtc2ggaXMgYSBjb25maWcgZmlsZTsgcmVxdWlyZSBpdCBhcwoJc3VjaC4KCShwYXJzZV9hcmd1bWVudHMpOiBSZW5hbWVkIC0taW5zdGFsbC1taXNzaW5nIHRvIC0tYWRkLW1pc3NpbmcuCgkoYWRkX21pc3NpbmcpOiBSZW5hbWVkIGZyb20gaW5zdGFsbF9taXNzaW5nLgoJKGFtX2luc3RhbGxfdmFyKTogQ2hlY2sgdG8gbWFrZSBzdXJlIGNvbnRlbnRzIG9mIGluc3RhbGwgdmFyaWFibGUKCWFyZSBjb3JyZWN0IGlmIHByaW1hcnkgcmVxdWlyZXMgaXQuICBUZXN0IGJhZHByb2cudGVzdC4KCShpbml0aWFsaXplX2dsb2JhbF9jb25zdGFudHMpOiBJbml0aWFsaXplCgklcHJpbWFyeV91c2VzX3N1Ym9iamVjdHMuCgkoaGFuZGxlX3NvdXJjZV90cmFuc2Zvcm0pOiBTa2lwIGNvbmZpZ3VyZSBzdWJzdGl0dXRpb25zLiAgVGVzdAoJZGVwZW5kLnRlc3QuICBBbHNvLCBza2lwIGVtcHR5IGVsZW1lbnRzLgoKVGh1IEZlYiAyOSAyMjowMDozMCAxOTk2ICBUb20gVHJvbWV5ICA8dHJvbWV5QGNyZWNoZS5jeWdudXMuY29tPgoKCSogdGV4aW5mby50ZXg6IE5ldyB2ZXJzaW9uLgoKCSogYXV0b21ha2UuaW4gKGFtX2luc3RhbGxfdmFyKTogQWxsb3cgZXh0ZW5kZWQgcmFuZ2Ugb2YKCWluc3RhbGxhdGlvbiBkaXJlY3Rvcmllcy4KCgkqIGF1dG9tYWtlLmluIChnZXRfb2JqZWN0X2V4dGVuc2lvbik6IERvbid0IGFsbG93CglAQ09ORklHX0lOQ0xVREVfU1BFQ0AgaW4gdGhlIE1ha2VmaWxlLmluIHdoZW4gY29uZmlnLmggbm90IHVzZWQuCglGcm9tIEdvcmQgTWF0emlna2VpdC4gIFRlc3QgY29uZmluY2wudGVzdC4KCgkqIHRleGluZm9zLmFtIChpbnN0YWxsLWluZm8pOiBDaGFuZ2VkIHVzYWdlIG9mIGluc3RhbGwtaW5mbyAoaW4KCWNvbW1lbnQpLiAgUGVyIEZlYiAyNSBHTlUgU3RhbmRhcmRzIGRvY3VtZW50LgoKV2VkIEZlYiAyOCAwNzo0MDo1NSAxOTk2ICBUb20gVHJvbWV5ICA8dHJvbWV5QGNyZWNoZS5jeWdudXMuY29tPgoKCSogYXV0b21ha2UuaW4gKGhhbmRsZV90ZXN0cyk6IE5ldyBmdW5jdGlvbi4KCShnZW5lcmF0ZV9tYWtlZmlsZSk6IENhbGwgaXQuCgkoaGFuZGxlX3N1YmRpcnMpOiBTa2lwIGRpcmVjdG9yaWVzIHdob3NlIG5hbWVzIGxvb2sgbGlrZSBjb25maWd1cmUKCXN1YnN0aXR1dGlvbnMuCgkoaGFuZGxlX3N1YmRpcnMpOiBSZXF1aXJlIGludGwgYW5kIHBvLCBub3QgQElOVExTVUJAIGFuZCBAUE9TVUJALAoJd2hlbiB1c2luZyBnZXR0ZXh0LgoJKHNjYW5fY29uZmlndXJlKTogQ2xlYXIgaW5fYWNfb3V0cHV0IGlmICJdIiBmb3VuZC4gIFRlc3QKCWFjb3V0cW5sLnRlc3QuCgkocmVxdWlyZV9jb25maWdfZmlsZSk6IE5ldyBmdW5jdGlvbi4KCShnZW5lcmF0ZV9tYWtlZmlsZSk6IFVzZSByZXF1aXJlX2NvbmZpZ19maWxlLgoJKGNvbmZpZ19hdXhfcGF0aCk6IE5ldyB2YXJpYWJsZS4KCShzY2FuX2NvbmZpZ3VyZSk6IENoZWNrIGZvciBBQ19DT05GSUdfQVVYX0RJUi4KCShoYW5kbGVfbWVyZ2VfdGFyZ2V0cyk6IEFkZCBpbnN0YWxsLXN0cmlwIHJ1bGUuCgpUdWUgRmViIDI3IDIwOjAwOjM2IDE5OTYgIFRvbSBUcm9tZXkgIDx0cm9tZXlAY3JlY2hlLmN5Z251cy5jb20+CgoJKiBtZGF0ZS1zaDogTmV3IHZlcnNpb24gZnJvbSBVbHJpY2ggRHJlcHBlci4KCgkqIGF1dG9tYWtlLmluIChoYW5kbGVfc291cmNlX3RyYW5zZm9ybSk6IENoYW5nZWQgZmlsbCBiYWNrIHRvCgllbXB0eSBzdHJpbmcuCgkoaGFuZGxlX2xpYnJhcmllcyk6IERpdHRvLgoJKGhhbmRsZV9kaXN0KTogRGl0dG8uCgkoaGFuZGxlX2RlcGVuZGVuY2llcyk6IERpdHRvLgoJKGhhbmRsZV9mb290ZXIpOiBEaXR0by4KCShoYW5kbGVfcGhvbnkpOiBEaXR0by4KCgkqIE1ha2VmaWxlLmFtIChESVNUX1NVQkRJUlMpOiBSZW1vdmVkLgoJKGluc3RhbGxjaGVjay1sb2NhbCk6IFVzZSBQZXJsLCBub3QgdGVzdCAteC4KCShQRVJMKTogTmV3IG1hY3JvLgoJKG1haW50YWluZXItY2hlY2spOiBVc2UgJChQRVJMKSwgbm90IEBQRVJMQC4KCgkqIGNvbmZpZ3VyZS5pbiAoVkVSU0lPTik6IFVwcGVkIHRvIDAuMzEuCgpTYXQgRmViIDI0IDE4OjAyOjE5IDE5OTYgIFRvbSBUcm9tZXkgIDx0cm9tZXlAY3JlY2hlLmN5Z251cy5jb20+CgoJKiBhdXRvbWFrZS5pbiAoc2Nhbl9jb25maWd1cmUpOiBBQ19DSEVDS19UT09MIHJlcXVpcmVzIGNvbmZpZy5zdWIKCWFuZCBjb25maWcuZ3Vlc3MuCgoJKiBhdXRvbWFrZS5pbjogVXNlIGtleWVkX2FjbG9jYWxfd2FybmluZyB3aGVuIHdhcm5pbmcgYWJvdXQKCWZwX1BST0dfSU5TVEFMTC4KCShnZXRfb2JqZWN0X2V4dGVuc2lvbik6IFVzZSBrZXllZF9hY2xvY2FsX3dhcm5pbmcgd2hlbiB3YXJuaW5nCglhYm91dCBmcF9DX1BST1RPVFlQRVMuCgkoa2V5ZWRfYWNsb2NhbF93YXJuaW5nKTogTmV3IGZ1bmN0aW9uLgoKCSogTWFrZWZpbGUuYW0gKHBrZ2RhdGFfREFUQSk6IEluc3RhbGwgYWNsb2NhbC5tNC4KCSogYWNsb2NhbC5tNDogSW5jbHVkZSBmcF9DX1BST1RPVFlQRVMsIGZwX1BST0dfQ0NfU1REQy4KCgkqIGF1dG9tYWtlLmluIChnZXRfb2JqZWN0X2V4dGVuc2lvbik6IE9ubHkgZ2l2ZSBlcnJvciBhYm91dAoJZnBfQ19QUk9UT1RZUEVTIG9uY2UuCgoJKiBhdXRvbWFrZS5pbiAoc2Vlbl9yYW5saWIpOiBOZXcgdmFyaWFibGUuCgkoc2Nhbl9jb25maWd1cmUpOiBSZWNvZ25pemVkIEFDX1BST0dfUkFOTElCLgoJKGhhbmRsZV9saWJyYXJpZXMpOiBFcnJvciBpZiByYW5saWIgbm90IGNoZWNrZWQgZm9yLgoKCSogYXV0b21ha2UuaW4gKGRlZmF1bHRfc3RyaWN0bmVzcyk6IERlZmF1bHQgdG8gR05VLgoJKGRlZmF1bHRfc3RyaWN0bmVzc19uYW1lKTogRGl0dG8uCgpXZWQgRmViIDIxIDE4OjE1OjAyIDE5OTYgIFRvbSBUcm9tZXkgIDx0cm9tZXlAY3JlY2hlLmN5Z251cy5jb20+CgoJKiBhdXRvbWFrZS5pbiAocmVhZF9hbV9maWxlKTogUmVtb3ZlZCBAa3JAIHN1cHBvcnQuCgkoZ2V0X29iamVjdF9leHRlbnNpb24pOiBEaXR0by4KCgkqIE1ha2VmaWxlLmFtIChwa2dkYXRhX0RBVEEpOiBJbmNsdWRlIGFuc2kya25yLmMgYW5kIGFuc2kya25yLjEuCgpUdWUgRmViIDIwIDE3OjI1OjE4IDE5OTYgIFRvbSBUcm9tZXkgIDx0cm9tZXlAY3JlY2hlLmN5Z251cy5jb20+CgoJKiBkZXBlbmQuYW0gKCQoc3JjZGlyKS8uZGVwcy8lLlApOiBSZWdleHAgZml4LgoKTW9uIEZlYiAxOSAxOTo1MzowOSAxOTk2ICBUb20gVHJvbWV5ICA8dHJvbWV5QGNyZWNoZS5jeWdudXMuY29tPgoKCSogcmVtYWtlLmFtICgkKHNyY2RpcikvTWFrZWZpbGUuaW4pOiBEZXBlbmQgb24gY29uZmlndXJlLmluLgoJKiByZW1ha2Utc3ViZC5hbSAoJChzcmNkaXIpL01ha2VmaWxlLmluKTogRGVwZW5kIG9uIGNvbmZpZ3VyZS5pbi4KCgkqIGF1dG9tYWtlLmluIChoYW5kbGVfc2NyaXB0cyk6IEVuc3VyZSAkc2NyaXB0c19pbnN0YWxsZWQgc2V0IHRvCglib29sZWFuIHZhbHVlLiAgVGVzdCBwcm9naW5zdC50ZXN0LgoKCSogTWFrZWZpbGUuYW0gKGluc3RhbGxjaGVjay1sb2NhbCk6IE5ldyB0YXJnZXQuCgoJKiBhdXRvbWFrZS5pbiAocmVxdWlyZV9maWxlKTogTm8gZXJyb3IgaWYgbWlzc2luZyBmaWxlIGlzCglpbnN0YWxsZWQuCgpTdW4gRmViIDE4IDE3OjEwOjAwIDE5OTYgIFRvbSBUcm9tZXkgIDx0cm9tZXlAY3JlY2hlLmN5Z251cy5jb20+CgoJKiBhdXRvbWFrZS5pbiAoaGFuZGxlX3NjcmlwdHMpOiBTQ1JJUFRTIG5vIGxvbmdlciBhdXRvbWF0aWNhbGx5CgljbGVhbmVkLiAgTm93IHBvc3NpYmxlIHRvIGluc3RhbGwgc2NyaXB0cyBpbiBwa2dkYXRhZGlyLgoJKCRzZWVuX2Nhbm9uaWNhbCk6IE5ldyB2YXJpYWJsZS4KCShnZW5lcmF0ZV9tYWtlZmlsZSk6IENoZWNrIGZvciBjb25maWcuZ3Vlc3MgYW5kIGNvbmZpZy5zdWIgaGVyZTsKCWZpeGVzIGJ1ZyByZXBvcnRlZCBieSBHb3JkIE1hdHppZ2tlaXQuCgoJKiBNYWtlZmlsZS5hbSAocGtnZGF0YV9TQ1JJUFRTKTogTmV3IHZhcmlhYmxlLgoJKENMRUFORklMRVMpOiBOZXcgbWFjcm8uCgoJKiBzY3JpcHRzLWNsZWFuLmFtOiBSZW1vdmVkLgoKU2F0IEZlYiAxNyAwMDoxNToyMCAxOTk2ICBUb20gVHJvbWV5ICA8dHJvbWV5QGNyZWNoZS5jeWdudXMuY29tPgoKCSogYXV0b21ha2UuaW4gKGFtX2luc3RhbGxfdmFyKTogRXJyb3IgaWYgcHJpbWFyeSB2YXJpYWJsZSBhY3R1YWxseQoJZGVmaW5lZC4KCShhbV9pbnN0YWxsX3Zhcik6IFNraXAgZWxlbWVudHMgdGhhdCBsb29rIGxpa2UgY29uZmlndXJlCglzdWJzdGl0dXRpb25zLgoJKGFtX2luc3RhbGxfdmFyKTogIkVYVFJBIiBpcyBhIHZhbGlkIHByZWZpeC4KCShhbV9pbnN0YWxsX3Zhcik6IFB1c2ggY29udGVudHMgRVhUUkFfUFJJTUFSWSBvbnRvIEByZXN1bHQuCgkoaGFuZGxlX21lcmdlX3RhcmdldHMpOiBUcmVhdCAiYWxsIiB0YXJnZXQgbGlrZSAiaW5zdGFsbCIuCgkoaGFuZGxlX3N1YmRpcnMpOiBEb24ndCBwdXNoIGFsbC1yZWN1cnNpdmUuCgoJKiBoZWFkZXIuYW0gKGluc3RhbGwtQERJUkBIRUFERVJTKTogRG9uJ3QgZGVwZW5kIG9uIGFsbC4KCSogZGF0YS5hbSAoaW5zdGFsbC1ARElSQERBVEEpOiBEb24ndCBkZXBlbmQgb24gYWxsLgoJKiBsaWJyYXJpZXMuYW0gKGluc3RhbGwtQERJUkBMSUJSQVJJRVMpOiBEb24ndCBkZXBlbmQgb24gYWxsLgoJKiBwcm9ncmFtcy5hbSAoaW5zdGFsbC1ARElSQFBST0dSQU1TKTogRG9uJ3QgZGVwZW5kIG9uIGFsbC4KCSogc2NyaXB0cy5hbSAoaW5zdGFsbC1ARElSQFNDUklQVFMpOiBEb24ndCBkZXBlbmQgb24gYWxsLgoKCSogYXV0b21ha2UuaW4gKGFtX2luc3RhbGxfdmFyKTogUHVzaCBnZW5lcmF0ZWQgaW5zdGFsbCB0YXJnZXRzCglvbnRvIEBwaG9ueS4KCgkqIHN1YmRpcnMuYW06IE5vIGxvbmdlciBkZXBlbmQgb24gTWFrZWZpbGUgYW5kICQoQ09ORklHX0hFQURFUikuCgkqIGF1dG9tYWtlLmluIChoYW5kbGVfbWVyZ2VfdGFyZ2V0cyk6IENvcnJlY3RseSBoYW5kbGUgcmVjdXJzaXZlCgljYWxscyBvZiB1bmluc3RhbGwsIGluc3RhbGwtZXhlYywgYW5kIGluc3RhbGwtZGF0YS4KCShoYW5kbGVfbWVyZ2VfdGFyZ2V0cyk6IFB1dCBNYWtlZmlsZSwgYW5kIHBvc3NpYmx5ICRjb25maWdfbmFtZSwKCW9udG8gQGFsbC4KCShoYW5kbGVfbWVyZ2VfdGFyZ2V0cyk6IFB1c2ggJ2FsbCcgb250byBAaW5zdGFsbCBhcyBhcHByb3ByaWF0ZS4KCkZyaSBGZWIgMTYgMTg6Mjc6MDQgMTk5NiAgVG9tIFRyb21leSAgPHRyb21leUBjcmVjaGUuY3lnbnVzLmNvbT4KCgkqIGF1dG9tYWtlLmluIChoYW5kbGVfY29uZmlndXJlKTogY29uZmlnLnN0YXR1cyBpcyBpbgoJJCh0b3BfYnVpbGRkaXIpLCBub3QgJCh0b3Bfc3JjZGlyKS4gIFJlcG9ydGVkIGJ5IEFudGhvbnkgR3JlZW4uCgoJKiBhdXRvbWFrZS5pbiAoc2Nhbl9jb25maWd1cmUpOiBSZWNvZ25pemUgKEFDfGZwKV9GVU5DX0ZOTUFUQ0guCgpUaHUgRmViIDE1IDE5OjEyOjQ1IDE5OTYgIFRvbSBUcm9tZXkgIDx0cm9tZXlAY3JlY2hlLmN5Z251cy5jb20+CgoJKiBhdXRvbWFrZS5pbjogKHNlZW5fcHJvZ195YWNjKTogTmV3IHZhcmlhYmxlLgoJKHNjYW5fY29uZmlndXJlKTogTG9vayBmb3IgeWFjYy4KCShoYW5kbGVfc291cmNlX3RyYW5zZm9ybSk6IFNraXBwIEMrKyBoZWFkZXIgZmlsZXMuCgkoaGFuZGxlX3NvdXJjZV90cmFuc2Zvcm0pOiAuY3h4IGlzIGEgQysrIHNvdXJjZSBmaWxlLgoKV2VkIEZlYiAxNCAwODozNjowMiAxOTk2ICBUb20gVHJvbWV5ICA8dHJvbWV5QGNyZWNoZS5jeWdudXMuY29tPgoKCSogZGVwZW5kLmFtICgkKHNyY2RpcikvLmRlcHMvLlApOiBVc2UgImVjaG8iLCBub3QgIjoiLgoKCUltcGxlbWVudGVkIC0tdmVyYm9zZSBmZWF0dXJlOyBpZGVhIGZyb20gR3JlZyBXb29kczoKCSogYXV0b21ha2UuaW4gKHZlcmJvc2UpOiBOZXcgZ2xvYmFsLgoJKGdlbmVyYXRlX21ha2VmaWxlKTogUHJpbnQgY3JlYXRpbmcgbWVzc2FnZSBpZiB2ZXJib3NlLgoJKGdyZXBfZm9yX3ZlcnNfdGV4aSk6IFByaW50IG1lc3NhZ2UgaWYgdmVyYm9zZS4KCShoYW5kbGVfZGVwZW5kZW5jaWVzKTogRGl0dG8uCgkoc2Nhbl9jb25maWd1cmUpOiBEaXR0by4KCShyZWFkX2FtX2ZpbGUpOiBEaXR0by4KCShwYXJzZV9hcmd1bWVudHMpOiBBZGRlZCAtLXZlcmJvc2UuCgkoaW5pdGlhbGl6ZV9nbG9iYWxfY29uc3RhbnRzKTogRGl0dG8uCgoJKiBhdXRvbWFrZS5pbiAoZ2V0X29iamVjdF9leHRlbnNpb24pOiBVc2UgYW1fbGluZV9lcnJvci4KCShoYW5kbGVfc291cmNlX3RyYW5zZm9ybSk6IERpdHRvLgoJKGhhbmRsZV9saWJyYXJpZXMpOiBEaXR0by4KCShoYW5kbGVfdGV4aW5mbyk6IERpdHRvLgoJKGhhbmRsZV9tYW5fcGFnZXMpOiBEaXR0by4KCShoYW5kbGVfZGlzdCk6IERpdHRvLgoJKGhhbmRsZV9kaXN0KTogRGl0dG8uCgkoaGFuZGxlX3N1YmRpcnMpOiBEaXR0by4KCShoYW5kbGVfY29uZmlndXJlKTogRGl0dG8uCgkoaGFuZGxlX21lcmdlX3RhcmdldHMpOiBEaXR0by4KCShhbV9pbnN0YWxsX3Zhcik6IERpdHRvLgoJKGFtX2xpbmVfZXJyb3IpOiBBbGxvdyBhY3R1YWwgbGluZSBudW1iZXIgYXMgYXJndW1lbnQuCgkoaGFuZGxlX2NvbmZpZ3VyZSk6IFVzZSBhbV9saW5lX2Vycm9yLgoJKHNjYW5fY29uZmlndXJlKTogU2V0IGNvbmZpZ19oZWFkZXJfbGluZS4KCShjb25maWdfaGVhZGVyX2xpbmUpOiBOZXcgZ2xvYmFsLgoJVXNlIEBQRVJMQCB0byBmaW5kIHBlcmwgZHVyaW5nIGV4ZWMuICBGcm9tIEdyZWcgV29vZHMuCgpUdWUgRmViIDEzIDIyOjA2OjUxIDE5OTYgIFRvbSBUcm9tZXkgIDx0cm9tZXlAY3JlY2hlLmN5Z251cy5jb20+CgoJKiBhdXRvbWFrZS5pbiAoaW5pdGlhbGl6ZV9wZXJfaW5wdXQpOiBJbml0ICVjb250ZW50X2xpbmVzLgoJKHJlYWRfYW1fZmlsZSk6IFNldCBhcHByb3ByaWF0ZSBjb250ZW50X2xpbmVzIGVsZW1lbnRzIHdoaWxlCglyZWFkaW5nLgoJKGFtX2xpbmVfZXJyb3IpOiBOZXcgZnVuY3Rpb24uCgkocmVhZF9hbV9maWxlKTogVXNlIGl0LgoJKGhhbmRsZV9vcHRpb25zKTogRGl0dG8uCgoJKiBhdXRvbWFrZS5pbiAoc2Nhbl9jb25maWd1cmUpOiBIYW5kbGUgY2FzZSB3aGVyZSBtb3JlIHRoYW4gb25lIC5vCglpcyBwdXQgaW50byBMSUJPQkpTIGF0IG9uY2UuICBUZXN0IGxpYm9iai50ZXN0LgoKTW9uIEZlYiAxMiAyMDozOToyOCAxOTk2ICBUb20gVHJvbWV5ICA8dHJvbWV5QGNyZWNoZS5jeWdudXMuY29tPgoKCSogYXV0b21ha2UuaW4gKHNjYW5fY29uZmlndXJlKTogSWdub3JlICJcIiBpbiBBQ19PVVRQVVQgbGluZS4KCVRlc3QgYWNvdXR0YnMudGVzdC4KCShoYW5kbGVfc3ViZGlycyk6IFJlc3RvcmVkIGludGwsIHBvIHdhcm5pbmdzLgoKCSogYXV0b21ha2UuaW4gKHNjYW5fY29uZmlndXJlKTogRGVsZXRlIGV2ZXJ5dGhpbmcgYWZ0ZXIgIiwiIG9yCgkiKSIuICBUZXN0IGFjb3V0bm9xLnRlc3QuCgkoaGFuZGxlX2Rpc3QpOiBVc2UgJHJlbGF0aXZlX2Rpciwgbm90IG5vbmV4aXN0ZW50ICRzdWJkaXIuCgkoaGFuZGxlX3N1YmRpcnMpOiAncG8nIGFuZCAnaW50bCcgYXJlIHNvbWV0aW1lcyBzdWJzdGl0dXRlZCBpbnRvCglTVUJESVJTOyBkb24ndCB3YXJuIGFib3V0IHRoZWlyIGFic2VuY2UuCgpTdW4gRmViIDExIDE2OjU1OjE1IDE5OTYgIFRvbSBUcm9tZXkgIDx0cm9tZXlAY3JlY2hlLmN5Z251cy5jb20+CgoJKiBhdXRvbWFrZS5pbiAoaGFuZGxlX3RleGluZm8pOiBSZW1vdmVkIGJvZ3VzIGVycm9yIG1lc3NhZ2UuCgoJKiBhdXRvbWFrZS5pbiAoaGFuZGxlX3RleGluZm8pOiBQdXNoICQoSU5GT19ERVBTKSwgbm90ICdpbmZvJywKCW9udG8gQGFsbC4KCShoYW5kbGVfb3B0aW9ucyk6IEhhbmRsZSB2ZXJzaW9uIG51bWJlci4KCgkqIGF1dG9tYWtlLmluICgkbWFpbnRfY2hhcnNldCwgJGRpc3RfY2hhcnNldCk6IE5ldyB2YXJpYWJsZXMuCgkoaW5pdGlhbGl6ZV9wZXJfaW5wdXQpOiBJbml0ICRsb2NhbF9tYWludF9jaGFyc2V0LgoJKGhhbmRsZV9kaXN0KTogSGFuZGxlIERJU1RfQ0hBUlNFVCBhbmQgTUFJTlRfQ0hBUlNFVC4KCShnZW5lcmF0ZV9tYWtlZmlsZSk6IERvbid0IHByaW50ICJjcmVhdGluZy4uLiIuCgpTYXQgRmViIDEwIDE2OjQ1OjA3IDE5OTYgIFRvbSBUcm9tZXkgIDx0cm9tZXlAY3JlY2hlLmN5Z251cy5jb20+CgoJKiBhdXRvbWFrZS5pbiAoZ2V0X29iamVjdF9leHRlbnNpb24pOiBTdWJzdGl0dXRlCglAQ09ORklHX0lOQ0xVREVfU1BFQ0AgaWYgQ09ORklHX0hFQURFUiBkZWZpbmVkLgoJKGhhbmRsZV9zb3VyY2VfdHJhbnNmb3JtKTogVXNlICQxLCBub3QgXDEuCgkocHJldHR5X3ByaW50X2ludGVybmFsKTogSGFuZGxlIFRhYnMgaW4gZmlsbCB3aGVuIGNvbXB1dGluZyBpbmRlbnQKCW9uIG5ldyBsaW5lLgoJKGhhbmRsZV9tZXJnZV90YXJnZXRzKTogQWx3YXlzIGdlbmVyYXRlIGluc3RhbGwtZXhlYyBhbmQKCWluc3RhbGwtZGF0YSB0YXJnZXRzLiAgVGVzdCBpbnN0ZXhlYy50ZXN0LgoJRml4ZWQgZXJyb3IgbWVzc2FnZSBpZiBmcF9QUk9HX0lOU1RBTEwgbWlzc2luZy4KCgkqIGNvbXBpbGUtdmFycy5hbSAoREVGUyk6IEluY2x1ZGUgLUkuLCAtSSQoc3JjZGlyKSwgYW5kCglAQ09ORklHX0lOQ0xVREVfU1BFQ0AuCgoJKiBhdXRvbWFrZS5pbiAoc2Nhbl9jb25maWd1cmUpOiBEZWxldGUgZXZlcnl0aGluZyBhZnRlciAiXSIuICBUZXN0CglhY291dHB1dC50ZXN0LgoKCSogY29uZmlndXJlLmluIChBQ19PVVRQVVQpOiBDcmVhdGUgdGVzdHMvTWFrZWZpbGUuCgkqIE1ha2VmaWxlLmFtIChTVUJESVJTKTogTmV3IG1hY3JvLgoKCSogYXV0b21ha2UuaW4gKGhhbmRsZV90ZXhpbmZvKTogUHV0ICR2dGV4aSBvbiB0ZXhpX2RlcHMuICBGcm9tIEppbQoJTWV5ZXJpbmcuCgoJKiBjb25maWd1cmUuaW4gKEFDX09VVFBVVCk6IEVuc3VyZSBhdXRvbWFrZSBpcyBleGVjdXRhYmxlLgoKVGh1IEZlYiAgOCAxNzozMDoyOSAxOTk2ICBUb20gVHJvbWV5ICA8dHJvbWV5QGNyZWNoZS5jeWdudXMuY29tPgoKCSogYXV0b21ha2UuaW4gKGhhbmRsZV9zdWJkaXJzKTogRXJyb3IgaWYgZGlyZWN0b3J5IGluIFNVQkRJUlMgZG9lcwoJbm90IGV4aXN0LgoKCSogYXV0b21ha2UuaW4gKGhhbmRsZV9jb25maWd1cmUpOiBIYW5kbGUgQUNfT1VUUFVUICI6IiBzeW50YXguCgoJRnJvbSBKaW0gTWV5ZXJpbmc6CgkqIGxpYnJhcmllcy5hbSAoaW5zdGFsbC1ARElSQExJQlJBUklFUyk6IERlcGVuZCBvbiBhbGwsIG5vdAoJKEBESVJAX0xJQkZJTEVTKS4KCSogaGVhZGVyLmFtIChpbnN0YWxsLUBESVJASEVBREVSUyk6IERlcGVuZCBvbiBhbGwsIG5vdAoJJChARElSQF9IRUFERVJTKS4KCSogZGF0YS5hbSAoaW5zdGFsbC1ARElSQERBVEEpOiBEZXBlbmQgb24gYWxsLCBub3QgJChARElSQF9EQVRBKS4KCSogc2NyaXB0cy5hbSAoaW5zdGFsbC1ARElSQFNDUklQVFMpOiBEZXBlbmQgb24gYWxsLCBub3QKCSQoQERJUkBfU0NSSVBUUykuCgkqIHByb2dyYW1zLmFtIChpbnN0YWxsLUBESVJAUFJPR1JBTVMpOiBEZXBlbmQgb24gYWxsLCBub3QKCSQoQERJUkBfUFJPR1JBTVMpLgoKCSogYXV0b21ha2UuaW4gKGluaXRpYWxpemVfcGVyX2lucHV0KTogSW5pdGlhbGl6ZQoJJHVzZV9kZXBlbmRlbmNpZXMuCgkoJHNlZW5fcGF0aF94dHJhKTogTmV3IHZhcmlhYmxlLgoJKHNjYW5fY29uZmlndXJlKTogTG9vayBmb3IgQUNfUEFUSF9YVFJBLgoJKGdldF9vYmplY3RfZXh0ZW5zaW9uKTogQWRkIHZhcmlhYmxlcyB0byBvdXRwdXQgaWYgWCBzZWVuLgoKVGh1IEZlYiAgOCAxMDowMjo0NSAxOTk2ICBHcmVnIEEuIFdvb2RzICA8d29vZHNAbW9zdC53ZWlyZC5jb20+CgoJKiBhdXRvbWFrZS5pbiAoaGFuZGxlX3Byb2dyYW1zKTogYWRkIHBrZ2xpYiB0byBsaXN0IG9mCglkaXJlY3RvcmllcyBmb3IgQwoJKHZhcmlvdXMpOiBpbmNsdWRlIGEgdGFiIGFzIGZpbGwgZm9yIGNvbnRpbnVhdGlvbiBsaW5lcwoJcHJpbnRlZCB3aXRoIHByZXR0eV9wcmludCosIGVzcC4gZm9yIG1hY3JvIHZhcmlhYmxlIGFzc2lnbm1lbnRzLgoJWyBjaGFuZ2VkIHRvIDQgc3BhY2VkIGJ5IG1lIF0KCldlZCBGZWIgIDcgMTg6MDA6MjkgMTk5NiAgVG9tIFRyb21leSAgPHRyb21leUBjcmVjaGUuY3lnbnVzLmNvbT4KCgkqIGNvbmZpZ3VyZS5pbiAoVkVSU0lPTik6IFVwcGVkIHRvIDAuMzAuCgoJKiBNYWtlZmlsZS5hbSAoYXV0b21ha2UpOiBSZW1vdmVkLgoJKERJU1RfT1RIRVIpOiBSZW1vdmVkLgoKCSogYXV0b21ha2UuaW4gKGhhbmRsZV9zb3VyY2VfdHJhbnNmb3JtKTogQWxsIGRlcF9maWxlcyBhcmUKCXJlbGF0aXZlIHRvICQoc3JjZGlyKS4KCShoYW5kbGVfbGlicmFyaWVzKTogRGl0dG8uCgkoc2Nhbl9jb25maWd1cmUpOiBUZXN0IGZvciBBQ19QUk9HX0lOU1RBTEwgYXMgd2VsbCBhcwoJZnBfUFJPR19JTlNUQUxMLiAgRG9uJ3QgZXJyb3IgaGVyZS4KCShzZWVuX3Byb2dfaW5zdGFsbCk6IE5vdyBnbG9iYWwuCgkoc2NyaXB0c19pbnN0YWxsZWQpOiBOZXcgZ2xvYmFsLgoJKGhhbmRsZV9zY3JpcHRzKTogU2V0IGl0LgoJR2l2ZSBlcnJvciBpZiBhcHByb3ByaWF0ZSBpbnN0YWxsIG1hY3JvIG5vdCBzZWVuLgoJKGhhbmRsZV9zdWJkaXJzKTogRW5zdXJlICRzZWVuX2dldHRleHQgYmVmb3JlIHJlcXVpcmluZwoJZ2V0dGV4dC1zcGVjaWZpYyBmaWxlcy4KCShoYW5kbGVfY29uZmlndXJlKTogQXV0b21hdGljYWxseSByZWJ1aWxkIAoKICAgICAgICBGcm9tIEppbSBNZXllcmluZzoKCSogYXV0b21ha2UuaW4gKGhhbmRsZV9zb3VyY2VfdHJhbnNmb3JtKTogVXNlIFxXIHdoZW4gcXVvdGluZwoJcmVnZXhwLiAgV2hlbiBibGFoX1NPVVJDRVMgbm90IGV4cGxpY2l0bHkgZGVmaW5lZCwgc3RpbGwgY3JlYXRlCgllbnRyeSBpbiAlZGVwcy4KCSogZGVwZW5kLmFtICgkKHNyY2RpcikvLmRlcHMvJS5QKTogRG9uJ3QgdXNlIFw8IGluIHJlZ2V4cC4KCSogc3ViZGlycy5hbSAobWFpbnRhaW5lci1jbGVhbi1yZWN1cnNpdmUpOiBOb3cgZGVwZW5kcyBvbgoJJChDT05GSUdfSEVBREVSKSBhbmQgTWFrZWZpbGUuCgoJKiBhdXRvbWFrZS5pbiAoaGFuZGxlX3NvdXJjZV90cmFuc2Zvcm0pOiBTa2lwIG1hY3JvIHJlZmVyZW5jZXMuCgpNb24gRmViICA1IDE0OjU4OjU4IDE5OTYgIFRvbSBUcm9tZXkgIDx0cm9tZXlAY3JlY2hlLmN5Z251cy5jb20+CgoJKiBhdXRvbWFrZS5pbiAoaGFuZGxlX3RleGluZm8pOiBJbmNsdWRlICJybSIgd2hlbiBkZWxldGluZyBmaWxlcy4KCgkqIE1ha2VmaWxlLmFtIChtYWludGFpbmVyLWNoZWNrKTogRXhwZWN0IG9ubHkgb25lICR7Li4ufS4KCSogdGV4aW5mb3MuYW0gKGluc3RhbGwtaW5mbyk6IFJlbW92ZSB1bm5lZWRlZCAkey4uLn0uICBGcm9tIEppbQoJTWV5ZXJpbmcuCgoJKiBhdXRvbWFrZS5pbiAoaGFuZGxlX2NvbmZpZ3VyZSk6IE9ubHkgZGVmaW5lIENPTkZJR19IRUFERVIgaWYKCSRjb25maWdfbmFtZS4KCSgkc2Vlbl9nZXR0ZXh0KTogTmV3IHZhcmlhYmxlLgoJKGhhbmRsZV9zdWJkaXJzKTogRG8gYWxsIGdldHRleHQtcmVsYXRlZCBjaGVja2luZyBoZXJlLgoJKHNjYW5fY29uZmlndXJlKTogSnVzdCBzZXQgJHNlZW5fZ2V0dGV4dC4KCShoYW5kbGVfbWFuX3BhZ2VzKTogUHJvcGVybHkgcXVvdGUgJChNQU5TKS4KCldlZCBKYW4gMzEgMDk6NTE6MzAgMTk5NiAgVG9tIFRyb21leSAgKHRyb21leUBnZXJiaWwuY3lnbnVzLmNvbSkKCgkqIGRlcGVuZC5hbTogRG9uJ3QgdXNlIHNyY2RpciBhbnl3aGVyZS4KCSogYXV0b21ha2UuaW4gKGhhbmRsZV9saWJyYXJpZXMpOiBEb24ndCBtYWtlIC5kZXBzIHJlbGF0aXZlIHRvCglzcmNkaXIuCgkoaGFuZGxlX29wdGlvbnMpOiBSZWNvZ25pemUgbm8tZGVwZW5kZW5jaWVzLgoKCSogZGVwZW5kLmFtIChNS0RFUCk6IEZyb20gSmltIE1leWVyaW5nOiBEbyBub3RoaW5nIGlmIHNyY2RpciBpcwoJIi4iLiAgUHJvcGVybHkgcXVvdGUgcmVnZXhwLgoKVHVlIEphbiAzMCAxMjoxOTowOSAxOTk2ICBUb20gVHJvbWV5ICAodHJvbWV5QGdlcmJpbC5jeWdudXMuY29tKQoKCSogYXV0b21ha2UuaW4gKGhhbmRsZV9jb25maWd1cmUpOiBPbmx5IGRlZmluZWQgQ09ORklHX0hFQURFUiBpZgoJJGNvbmZpZ19uYW1lLgoJKHJlYWRfYW1fZmlsZSk6IFF1b3RlIHJlZ2V4cCB3aGVuIHN1YnN0aXR1dGluZyB0b3BfYnVpbGRkaXIuCgkoaGFuZGxlX3NvdXJjZV90cmFuc2Zvcm0sIGhhbmRsZV9saWJyYXJpZXMpOiBMb29rIGluCgkkKHNyY2RpcikvLmRlcHMgZm9yIC5QIGZpbGVzLgoKRnJpIEphbiAyNiAwMDoxNToyNSAxOTk2ICBUb20gVHJvbWV5ICA8dHJvbWV5QGNyZWNoZS5jeWdudXMuY29tPgoKCSogYXV0b21ha2UuaW4gKGFtX2NvbmZfZXJyb3IpOiBOZXcgZnVuY3Rpb24uCgkoc2Nhbl9jb25maWd1cmUpOiBVc2UgaXQuCgkoc2Nhbl9jb25maWd1cmUpOiBBIGNvbW1hIGFsc28gZW5kcyBBQ19PVVRQVVQgbWFjcm8uCgoJKiBhdXRvbWFrZS5pbiAocmVhZF9hbV9maWxlKTogQ29tcHV0ZSB0b3BfYnVpbGRkaXIgd2hlbiBpbmNsdWRpbmcKCWhlYWRlci12YXJzLmFtLgoJKGhhbmRsZV9jb25maWd1cmUpOiBVc2UgJHRvcF9idWlsZGRpciwgbm90ICR0b3BfcmVsZGlyLgoJKG90aGVyX2lucHV0X2ZpbGVzKTogTmV3IHZhcmlhYmxlLgoJKGRpcm5hbWUpOiBGaXhlZCBidWcgd2hlcmUgZGlybmFtZSBvZiAnYS9iL2MnIHdhcyAnYScsIG5vdCAnYS9iJy4KCglDaGFuZ2VzIGZyb20gR29yZCBNYXR6aWdrZWl0IHRvIGVuYWJsZWQgaGllcmFyY2hpZXMgZGVlcGVyIHRoYW4gMjoKCSogYXV0b21ha2UuaW4gKGlucHV0X2ZpbGVzLCBzZWVuX21ha2Vfc2V0KTogRGVjbGFyZSBnbG9iYWxseS4KCShwYXJzZV9hcmd1bWVudHMpOiBVc2UgaW5wdXRfZmlsZXMsIG5vdCBtYWtlX2xpc3QuCglPbmx5IHNjYW4gY29uZmlndXJlLmluIG9uY2UuCgkoaGFuZGxlX2Rpc3QpOiBVc2UgU1VCRElSUyB0byBkZXRlcm1pbmUgd2hlbiB0byBtYWtlCglzdWJkaXJlY3RvcmllcyBhbmQgcmVjdXJpc3ZlbHkgZGlzdC4gIFVzZSAkKHRvcGRpciksIG5vdCAiLi4iLCB0bwoJZmluZCB0b3Agb2YgZGlzdCB0cmVlLgoJKGhhbmRsZV9jb25maWd1cmUpOiBDaGVjayBmb3IgQUNfUFJPR19NQUtFX1NFVCBoZXJlLiAgRG9uJ3QgcmVxdWlyZQoJY29uZmlndXJlLmluIChkb25lIGVsc2V3aGVyZSkuCgkoc2Nhbl9jb25maWd1cmUpOiBzZWVuX21ha2Vfc2V0IGlzIGdsb2JhbC4gIEFsbG93IGFyYml0cmFyeSBzcGFjZQoJaW4gTElCT0JKUyBhc3NpZ25tZW50LgoJKHRvcF9idWlsZGRpcik6IE5ldyB2YXJpYWJsZS4KCSogaGVhZGVyLXZhcnMuYW0gKHRvcF9idWlsZGRpcik6IE5ldyB2YXJpYWJsZS4KCSogcmVtYWtlLXN1YmQuYW0gKE1ha2VmaWxlKTogTG9vayBpbiB0b3BfYnVpbGRkaXIsIG5vdCAuLiwgd2hlbgoJcmVtYWtpbmcuCgkqIGF1dG9tYWtlLmluIChoYW5kbGVfbWVyZ2VfdGFyZ2V0cyk6IFJ1biAnYWxsJyBiZWZvcmUKCWNoZWNrLXJlY3Vyc2l2ZS4KCgkqIGF1dG9tYWtlLmluIChmaWxlX2NvbnRlbnRzX3dpdGhfdHJhbnNmb3JtKTogQ2hhbmdlZCBlcnJvcgoJbWVzc2FnZS4KCShoYW5kbGVfY29uZmlndXJlKTogRGVmaW5lICRjb250ZW50c3snQ09ORklHX0hFQURFUid9LgoKCSogdGV4aS12ZXJzaW9uLmFtOiBNYW55IGNoYW5nZXMgdG8gc3VwcG9ydCBtdWx0aXBsZSAudGV4aSBmaWxlcy4KCVJlcGxhY2VkICJ2ZXJzaW9uLnRleGkiIHdpdGggIkBWVEVYSUAiLiAgUmVwbGFjZWQgInZ0aSIgd2l0aAoJIkBWVElAIi4KCSogYXV0b21ha2UuaW4gKGhhbmRsZV9jb25maWd1cmUpOiBpbnN0YWxsLnNoIGlzIGFuIGFuYWNocm9uaXNtLgoJKGhhbmRsZV90ZXhpbmZvKTogR2VuZXJhbGl6ZWQgZm9yIG11bHRpcGxlIC50ZXhpIGZpbGVzLiAgSGFuZGxlCgknY2xlYW4taW5mbycgaW50ZXJuYWxseS4KCSogdGV4aS1jbGVhbi5hbTogUmVtb3ZlZC4KCSogTWFrZWZpbGUuYW06IFVwZGF0ZWQgZm9yIHJlbW92YWwuCgpXZWQgSmFuIDI0IDIyOjU1OjMyIDE5OTYgIFRvbSBUcm9tZXkgIDx0cm9tZXlAY3JlY2hlLmN5Z251cy5jb20+CgoJKiBhdXRvbWFrZS5pbiAoZ3JlcF9mb3JfdmVyc190ZXhpKTogTmV3IGZ1bmN0aW9uLgoJKGhhbmRsZV90ZXhpbmZvKTogVXNlIGdyZXBfZm9yX3ZlcnNfdGV4aSwgbm90IHN5c3RlbSgiZ3JlcCIpLgoJKGhhbmRsZV90ZXhpbmZvKTogQ2hhbmdlcyB0byBnZW5lcmFsaXplIHRvIG11bHRpcGxlIC50ZXhpIGZpbGVzLgoKVHVlIEphbiAyMyAxNDoyMjoxNiAxOTk2ICBUb20gVHJvbWV5ICA8dHJvbWV5QGNyZWNoZS5jeWdudXMuY29tPgoKCUZpeGVzIGZyb20gR29yZCBNYXR6aWdrZWl0OgoJKiBsaWJyYXJpZXMuYW0gKGluc3RhbGwtQERJUkBMSUJSQVJJRVMpOiBVc2UgdG9wX3NyY2Rpciwgbm90Cgl0b3BzcmNkaXIuCgkqIGhlYWRlci5hbTogTmV3IGZpbGUuCgkqIE1ha2VmaWxlLmFtIChwa2dkYXRhX0RBVEEpOiBJbnN0YWxsIGhlYWRlci5hbS4KCSogYXV0b21ha2UuaW4gKGhhbmRsZV9oZWFkZXJzKTogVXNlIGhlYWRlci5hbSwgbm90IGRhdGEuYW0uCgkoYW1faW5zdGFsbF92YXIpOiBBbGxvdyBwYXR0ZXJuIHRvIGJlIGNvbXBpbGVkIG11bHRpcGxlIHRpbWVzLgoKCSogY29uZmlnLmd1ZXNzLCBjb25maWcuc3ViOiBOZXcgZmlsZXMuCgkqIE1ha2VmaWxlLmFtIChwa2dkYXRhX0RBVEEpOiBJbnN0YWxsIGNvbmZpZy5ndWVzcyBhbmQKCWNvbmZpZy5zdWIuCgkqIGF1dG9tYWtlLmluIChzY2FuX2NvbmZpZ3VyZSk6IFJlY29nbml6ZSBBQ19DQU5PTklDQUxfSE9TVCBhbmQKCUFDX0NBTk9OSUNBTF9TWVNURU0uCgpTdW4gSmFuIDIxIDE1OjUxOjQ4IDE5OTYgIFRvbSBUcm9tZXkgIDx0cm9tZXlAY3JlY2hlLmN5Z251cy5jb20+CgoJKiBhdXRvbWFrZS5pbiAoaGFuZGxlX3RleGluZm8pOiBVc2UgaW5mb19URVhJTkZPUywgbm90IFRFWElORk9TLgoJKGhhbmRsZV9tYW5fcGFnZXMpOiBVc2UgbWFuX01BTlMsIG5vdCBNQU5TLgoKCSogTWFrZWZpbGUuYW0gKGluZm9fVEVYSU5GT1MpOiBSZW5hbWVkLgoKCSogYXV0b21ha2UuaW4gKHNjYW5fY29uZmlndXJlKTogUmVtb3ZlIGNvbW1lbnRzIGZyb20gaW5wdXQgbGluZS4KCShhbV92YXJpYWJsZSk6IFJlbW92ZWQuCgoJKiByZW1ha2UtaGRyLmFtIChzdGFtcC1oKTogVXNlIG5ldyBtYWNybyBDT05GSUdfSEVBREVSX0lOLgoKCSogYXV0b21ha2UuaW4gKGNvbmZpZ19uYW1lLCBjb25maWdfaGVhZGVyKTogTmV3IGdsb2JhbHMuCgkoc2Nhbl9jb25maWd1cmUpOiBMb29rIGZvciBBQ19DT05GSUdfSEVBREVSLgoJKGhhbmRsZV9jb25maWd1cmUpOiBIYW5kbGUgbW9yZSB1c2VzIG9mIEFDX0NPTkZJR19IRUFERVIuCgpTYXQgSmFuIDIwIDE1OjU0OjI0IDE5OTYgIFRvbSBUcm9tZXkgIDx0cm9tZXlAY3JlY2hlLmN5Z251cy5jb20+CgoJKiBhdXRvbWFrZS5pbiAoaGFuZGxlX2Rpc3Rfd29ya2VyKTogQnVnIGZpeC4KCkZyaSBKYW4gMTkgMDA6NTA6MjkgMTk5NiAgVG9tIFRyb21leSAgPHRyb21leUBjcmVjaGUuY3lnbnVzLmNvbT4KCgkqIGF1dG9tYWtlLmluIChyZXF1aXJlX2ZpbGUpOiBJbnN0YWxsIG1pc3NpbmcgZmlsZXMgb25seSBhY2NvcmRpbmcKCXRvIGRlc2lyZWQgc3RyaWN0bmVzcy4KCShpbml0aWFsaXplX3Blcl9pbnB1dCk6IERvbid0IGluaXQgbGlic291cmNlcy4KCShzY2FuX2NvbmZpZ3VyZSk6IFJlaW5pdCBsaWJzb3VyY2VzLgoJKGhhbmRsZV9saWJyYXJpZXMpOiBTZWFyY2ggX0xJQkFERCBmb3IgQExJQk9CSlNAIGFuZCBAQUxMT0NBQC4KCShmcF9jX3Byb3RvdHlwZXMpOiBOZXcgZ2xvYmFsLgoJKHNjYW5fY29uZmlndXJlKTogU2V0IGl0LgoJKGdldF9vYmplY3RfZXh0ZW5zaW9uKTogRXJyb3IgaWYgZnBfQ19QUk9UT1RZUEVTIG5vdCBpbgoJY29uZmlndXJlLmluIHdoZW4gdXNpbmcgYW5zaTJrbnIuCgkoaGFuZGxlX3NvdXJjZV90cmFuc2Zvcm0pOiBTa2lwIGhlYWRlciBmaWxlcy4KCgkqIGF1dG9tYWtlLmluIChoYW5kbGVfZGlzdF93b3JrZXIpOiBFeHBsaWNpdGx5IG1ha2UgJ2Rpc3QnIGluCglzdWJkaXJzLgoKVGh1IEphbiAxOCAwMDoyNTo1NiAxOTk2ICBUb20gVHJvbWV5ICA8dHJvbWV5QGNyZWNoZS5jeWdudXMuY29tPgoKCUZyb20gRnJhbudvaXMgUGluYXJkOgoJKiBhdXRvbWFrZS5pbiAoaGFuZGxlX3NvdXJjZV90cmFuc2Zvcm0pOiBUcmFuc2Zvcm0gJG8gZmlsZSBpbnRvIC5QCglmaWxlLgoJKGhhbmRsZV9kaXN0X3dvcmtlcik6IEhhbmRsZSBjYXNlIHdoZXJlIERJU1RGSUxFUyBpbmNsdWRlcwoJd2lsZGNhcmQuICBCdWcgZml4IGluIHN1YmRpciBjYXNlLgoKCSogYXV0b21ha2UuaW4gKHBhcnNlX2FyZ3VtZW50cyk6IEluaXRpYWxpemUgc3RyaWN0bmVzcyB0bwoJJ25vcm1hbCcuCgpTdW4gSmFuIDE0IDEzOjU0OjE2IDE5OTYgIFRvbSBUcm9tZXkgIDx0cm9tZXlAY3JlY2hlLmN5Z251cy5jb20+CgoJKiBhdXRvbWFrZS5pbiAoc2Nhbl9jb25maWd1cmUpOiBMb29rIGZvciBOTFMgc3VwcG9ydC4KCglDaGFuZ2VzIGZyb20gRnJhbudvaXMgUGluYXJkOgoJKiB0ZXhpbmZvcy5hbSAoaW5zdGFsbC1pbmZvKTogQ29ycmVjdGx5IGluc3RhbGwgd2hlbiBidWlsZCBkaXIgaXMKCW5vdCBzcmNkaXIuCgkqIHRhZ3Mtc3ViZC5hbSAoSUQpOiBJbmRlbnRhdGlvbiBjaGFuZ2UuCgkqIGtyLXZhcnMuYW0gKG8pOiBVc2UgIi5AVUBvIiwgbm90ICJAVUBvIi4KCSogZGVwZW5kLmFtICgkKHNyY2RpcikvLmRlcHMvJS5QKTogUmVtb3ZlIHRlbXBvcmFyeSBmaWxlLgoJKiBhdXRvbWFrZS5pbiAoaGFuZGxlX2Rpc3Rfd29ya2VyKTogRml4bGV0cy4KCShoYW5kbGVfZGlzdCk6IFNvcnQga2V5cyBnb2luZyBpbnRvIGRpc3RfY29tbW9uLgoKU2F0IEphbiAxMyAwMDoxODowNiAxOTk2ICBUb20gVHJvbWV5ICA8dHJvbWV5QGNyZWNoZS5jeWdudXMuY29tPgoKCSogYXV0b21ha2UuaW4gKGhhbmRsZV9kaXN0X3dvcmtlcik6IElmIEduaXRzLCBkb24ndCBhbGxvdyByZWxlYXNlCgl1bnRpbCBORVdTIGlzIHVwZGF0ZWQuCgoJKiBjb25maWd1cmUuaW4gKFZFUlNJT04pOiBWZXJzaW9uIDAuMjkuCgoJKiBNYWtlZmlsZS5hbSAobWFpbnRhaW5lci1jaGVjayk6IExvb2sgZm9yIHBlcmw0LjAzNiBpbiBwYXRoLgoKCSogZGlzdC12YXJzLmFtIChESVNURklMRVMpOiAgSW5jbHVkZSBCVUlMVF9TT1VSQ0VTLgoJKERFUF9ESVNURklMRVMpOiBEaXR0by4KCgkqIGF1dG9tYWtlLmluIChoYW5kbGVfZGlzdF93b3JrZXIpOiBEZXBlbmQgb24gREVQX0RJU1RGSUxFUy4KCSogZGlzdC12YXJzLmFtIChERVBfRElTVEZJTEVTKTogTmV3IHZhcmlhYmxlLgoKCSogYXV0b21ha2UuaW4gKGhhbmRsZV9vcHRpb25zKTogU3VwcG9ydCBkaXN0LXNoYXIgb3B0aW9uLgoJKGhhbmRsZV9kaXN0X3dvcmtlcik6IE5ldyBmdW5jdGlvbi4KCShoYW5kbGVfZGlzdCk6IFVzZSBpdC4KCgkqIHRleGktdmVyc2lvbi5hbSAobW9zdGx5Y2xlYW4tdnRpKTogUmVtb3ZlIHZlcnNpb24udG1wLCBub3QKCSoudG1wLgoKCSogYXV0b21ha2UuaW4gKGhhbmRsZV9kaXN0KTogQ2htb2QgZGlzdGRpciA3NzcuICBGcm9tIEZyYW7nb2lzCglQaW5hcmQuCgoJKiBhdXRvbWFrZS5pbiAoc2Nhbl9jb25maWd1cmUpOiBOZXcgZnVuY3Rpb24uCgkoaW5pdGlhbGl6ZV9wZXJfaW5wdXQpOiBJbml0IGxpYnNvdXJjZXMuCgkoZ2VuZXJhdGVfbWFrZWZpbGUpOiBSdW4gaGFuZGxlX2NvbmZpZ3VyZSBmaXJzdC4KCShoYW5kbGVfY29uZmlndXJlKTogUnVuIHNjYW5fY29uZmlndXJlLgoJKGhhbmRsZV9jb25maWd1cmUpOiBEb24ndCBsb29rIGZvciBBQ19QUk9HX01BS0VfU0VUIGhlcmUuCgpUaHUgSmFuIDExIDIzOjE0OjE4IDE5OTYgIFRvbSBUcm9tZXkgIDx0cm9tZXlAY3JlY2hlLmN5Z251cy5jb20+CgoJKiBNYWtlZmlsZS5hbSAoQVVUT01BS0VfT1BUSU9OUyk6IE5ldyB2YXJpYWJsZS4KCgkqIGF1dG9tYWtlLmluIChzdHJpY3RuZXNzLCBzdHJpY3RuZXNzX25hbWUpOiBSZW5hbWVkLgoJKGluaXRpYWxpemVfcGVyX2lucHV0KTogU2V0IHN0cmljdG5lc3MsIHN0cmljdG5lc3NfbmFtZS4KCUluaXRpYWxpemUgJW9wdGlvbnMuCgkoZ2VuZXJhdGVfbWFrZWZpbGUpOiBSdW4gaGFuZGxlX29wdGlvbnMuCgkoaGFuZGxlX29wdGlvbnMpOiBOZXcgZnVuY3Rpb24uCgkoaGFuZGxlX21hbl9wYWdlcyk6IE1ha2UgaW5zdGFsbC1tYW4gZGVwZW5kIG9uICQoTUFOUykuICBUdXJuIG9mZgoJbWFuIHBhZ2UgaW5zdGFsbCBpZiBuby1pbnN0YWxsbWFuIG9wdGlvbiBnaXZlbi4KCShyZWFkX2FtX2ZpbGUpOiBEZXByZWNhdGUgQGtyQC4KCShnZXRfb2JqZWN0X2V4dGVuc2lvbik6IExvb2sgYXQgYW5zaTJrbnIgb3B0aW9uLgoJKHBhcnNlX2FyZ3VtZW50cyk6IFRha2UgZ2xvYmFsIHN0cmljdG5lc3MgZnJvbSBjb21tYW5kLWxpbmUKCW9wdGlvbnMuCgpUdWUgSmFuICA5IDExOjI0OjE0IDE5OTYgIFRvbSBUcm9tZXkgIDx0cm9tZXlAY3JlY2hlLmN5Z251cy5jb20+CgoJRml4ZXMgZnJvbSBGcmFu529pcyBQaW5hcmQ6CgkqIGRlcGVuZC5hbSAoJChzcmNkaXIpLy5kZXBzLyUuUCk6IEhhbmRsZSBkZWFuc2lmaWNhdGlvbi4KCSogYXV0b21ha2UuaW4gKGdldF9vYmplY3RfZXh0ZW5zaW9uKTogVXNlICRvLCBub3QgJChrcilvLgoJKGhhbmRsZV9zb3VyY2VfdHJhbnNmb3JtKTogRG9uJ3QgbG9vayBmb3IgJChrciljIGZpbGVzLgoJKiBrci12YXJzLmFtIChvKTogTmV3IG1hY3JvLgoJKGtyKTogUmVtb3ZlZC4KCgkqIGRlcGVuZC5hbSAoREVQX0ZJTEVTKTogUmVtb3ZlZC4KCSogYXV0b21ha2UuaW4gKGhhbmRsZV9zb3VyY2VfdHJhbnNmb3JtKTogUHVzaCAuUCBmaWxlIG9udG8KCWRlcF9maWxlcy4KCShpbml0aWFsaXplX3Blcl9pbnB1dCk6IE5ldyB2YXJpYWJsZSAlZGVwX2ZpbGVzLgoJKGhhbmRsZV9kZXBlbmRlbmNpZXMpOiBHZW5lcmF0ZSBERVBfRklMRVMgaGVyZS4KCk1vbiBKYW4gIDggMjI6Mjc6MzMgMTk5NiAgVG9tIFRyb21leSAgPHRyb21leUBjcmVjaGUuY3lnbnVzLmNvbT4KCgkqIGF1dG9tYWtlLmluIChkb19vbmVfY2xlYW5fdGFyZ2V0KTogT25seSByZW1vdmUgY29uZmlnLnN0YXR1cyBpbgoJdG9wLWxldmVsIGRpcmVjdG9yeS4KCShoYW5kbGVfdGFncyk6IFJlbW92ZWQgJ2lkJyBmcm9tIC5QSE9OWSBsaXN0LiAgRnJvbSBKaW0gTWV5ZXJpbmcuCgoJKiBjbGVhbi5hbSAobWFpbnRhaW5lci1jbGVhbi1nZW5lcmljKTogUmVtb3ZlIEJVSUxUX1NPVVJDRVMuCgoJKiBhdXRvbWFrZS5pbiAoaGFuZGxlX2Rpc3QpOiBNYWtlICJsbiIgcXVpZXQuCgoJKiB0YWdzLXN1YmQuYW0gKElEKTogRGVwZW5kIG9uIEhFQURFUlMgYW5kIFNPVVJDRVMuCgpTYXQgSmFuICA2IDEwOjU4OjIzIDE5OTYgIFRvbSBUcm9tZXkgIDx0cm9tZXlAY2FtYnJpYy5jb2xvcmFkby5lZHU+CgoJKiBhdXRvbWFrZS5pbiAoaGFuZGxlX21lcmdlX3RhcmdldHMpOiAnY2hlY2snIHNob3VsZG4ndCBkZXBlbmQgb24KCSdhbGwnIGF0IHRvcCBsZXZlbC4KCShmaWxlX2NvbnRlbnRzX3dpdGhfdHJhbnNmb3JtKTogTmV3IGZ1bmN0aW9uLgoJKGFtX2luc3RhbGxfdmFyKTogVXNlIGZpbGVfY29udGVudHNfd2l0aF90cmFuc2Zvcm0uCgkoaGFuZGxlX3Byb2dyYW1zKTogRGl0dG8uCgkoaGFuZGxlX2xpYnJhcmllcyk6IERpdHRvLgoJKGhhbmRsZV90ZXhpbmZvKTogRGl0dG8uCgkoaGFuZGxlX21lcmdlX3RhcmdldHMpOiBMZXQgJ2luc3RhbGwnIGRlcGVuZCBvbiAnYWxsJyBpZiBubyBvdGhlcgoJZGVwZW5kZW5jaWVzIGV4aXN0LiAgRnJvbSBKaW0gTWV5ZXJpbmcuCgkoY2hlY2tfZ251X3N0YW5kYXJkcyk6IEdOVSByZXF1aXJlcyBBVVRIT1JTIGZpbGUuICAoU2VlCgltYWludGFpbi50ZXh0KS4KCShyZXF1aXJlX2ZpbGUpOiBQdXQgYm9keSBpbiBsb29wLgoJKGdldF9vYmplY3RfZXh0ZW5zaW9uKTogT25seSBjYWxsIHJlcXVpcmVfZmlsZSBvbmNlLgoJKGhhbmRsZV9jb25maWd1cmUpOiBEaXR0by4KCglGcm9tIEppbSBNZXllcmluZzoKCSogZGVwZW5kLmFtICgkKHNyY2RpcikvLmRlcHMvLlApOiBEZXBlbmQgb24gJChCVUlMVF9TT1VSQ0VTKS4KCSogdGFncy1zdWJkLmFtIChpZCk6IFJlbW92ZWQuCgpGcmkgSmFuICA1IDEwOjMxOjE5IDE5OTYgIFRvbSBUcm9tZXkgIDx0cm9tZXlAY2FtYnJpYy5jb2xvcmFkby5lZHU+CgoJKiBBZGRlZCBjb3B5cmlnaHQgbm90aWNlIHRvIGVhY2ggLmFtIGZpbGUuCgoJKiBhdXRvbWFrZS5pbjogQ2xlYW51cHMgZnJvbSBGcmFu529pcyBQaW5hcmQgdG8gYXZvaWQgJCMuCgkocmVxdWlyZV9hcmd1bWVudCk6IEZpeGVkIHNlbnNlIG9mIHRlc3QuCgkoc2V0X3N0cmljdG5lc3MpOiBCdWcgZml4LgoKVGh1IEphbiAgNCAyMToyMToyOSAxOTk2ICBUb20gVHJvbWV5ICA8dHJvbWV5QGNhbWJyaWMuY29sb3JhZG8uZWR1PgoKCSogTWFrZWZpbGUuYW0gKHBrZ2RhdGFfREFUQSk6IFJlbW92ZWQgb2xkIGRpc3QgZmlsZXMuCgoJKiBkaXN0LXN1YmQtdG9wLmFtLCBkaXN0LXN1YmQuYW0sIGRpc3QuYW06IFJlbW92ZWQuCgoJKiBhdXRvbWFrZS5pbiAoc2V0X3N0cmljdG5lc3MpOiBTZXQgJHN0cmljdG5lc3NfbmFtZS4KCShzdHJpY3RuZXNzX25hbWUpOiBOZXcgdmFyaWFibGUuCgkoaGFuZGxlX2Rpc3QpOiBTdWJzdGFudGlhbGx5IHJld3JvdGUuCgoJKiBjb25maWd1cmUuaW46IFBvaW50IEFDX0lOSVQgYXQgYXV0b21ha2UuaW4uCgoJKiBhdXRvbWFrZS5pbiAoZ2VuZXJhdGVfbWFrZWZpbGUpOiBSZXBvcnQgZXJyb3JzIGFnYWluc3QKCU1ha2VmaWxlLmluLCBub3QgTWFrZWZpbGUuYW0uCgpXZWQgSmFuICAzIDAwOjA1OjQwIDE5OTYgIFRvbSBUcm9tZXkgIDx0cm9tZXlAY2FtYnJpYy5jb2xvcmFkby5lZHU+CgoJKiBtZGF0ZS1zaDogQnVnIGZpeCBmcm9tIEppbSBNZXllcmluZy4KCgkqIGRpc3QuYW0gKGRpc3QpOiBDaGFuZ2VkIGluIHBhcmFsbGVsIHdpdGggZGlzdC1zdWJkLXRvcC5hbS4KCgkqIG1raW5zdGFsbGRpcnM6IFJldmVydGVkLgoKCSogYXV0b21ha2UuaW4gKGluaXRpYWxpemVfZ2xvYmFsX2NvbnN0YW50cyk6IEFsbG93IENPUFlJTkcuTElCCglhZ2Fpbi4KCShjaGVja19nbml0c19zdGFuZGFyZHMpOiBEaXNhbGxvdyBDT1BZSU5HLkxJQi4KCgkqIHRleGluZm9zLmFtIChpbnN0YWxsLWluZm8pOiBPbmx5IGxvb2sgaW4gJChzcmNkaXIpIGZvciBpbmZvCglmaWxlcy4KCgkqIGF1dG9tYWtlLmluIChpbml0aWFsaXplX2dsb2JhbF9jb25zdGFudHMpOiBOZXcgdmFyaWFibGUKCWdlbl9jb3B5cmlnaHQuCgkocmVhZF9hbV9maWxlKTogUHV0IGEgY29weXJpZ2h0IGluIGVhY2ggTWFrZWZpbGUuaW4uCgoJKiBkaXN0LXZhcnMuYW0gKERJU1RGSUxFUyk6IFB1dCBESVNUX0NPTU1PTiBmaXJzdC4KCgkqIGF1dG9tYWtlLmluIChhbV9pbnN0YWxsX3Zhcik6IFB1dCBzcGFjZSBiZWZvcmUgIj0iLgoJKGhhbmRsZV9kaXN0KTogUHV0IFJFQURNRSBmaXJzdCBpbiBESVNUX0NPTU1PTi4KCgkqIE1ha2VmaWxlLmFtIChwa2dkYXRhX0RBVEEpOiBJbmNsdWRlIENPUFlJTkcuCgoJKiBDT1BZSU5HOiBOZXcgZmlsZS4KCgkqIGF1dG9tYWtlLmluIChwYXJzZV9hcmd1bWVudHMpOiBBZGRlZCAtLWdudSBhbmQgLS1nbml0cyBhcwoJc3lub255bXMuCgkoaW5pdGlhbGl6ZV9nbG9iYWxfY29uc3RhbnRzKTogRGl0dG8uCgkoaW5pdGlhbGl6ZV9nbG9iYWxfY29uc3RhbnRzKTogRG9uJ3QgYXV0by1kaXN0cmlidXRlIENPUFlJTkcuTElCLgoJKGluaXRpYWxpemVfZ2xvYmFsX2NvbnN0YW50cyk6IExvb2sgZm9yIFJFQURNRSBmaXJzdC4KCShpbml0aWFsaXplX2dsb2JhbF9jb25zdGFudHMpOiBBdXRvLWRpc3RyaWJ1dGUgQVVUSE9SUywgQkFDS0xPRywKCUFCT1VULUdOVS4KCShjaGVja19nbnVfc3RhbmRhcmRzKTogUmVxdWlyZSBmaWxlIENPUFlJTkcuCgoJRnJvbSBGcmFu529pcyBQaW5hcmQ6CgkqIGF1dG9tYWtlLmluIChmaWxlX2NvbnRlbnRzKTogQ29tbWVudCBvdXQgIndhcm4icy4KCSh1c2FnZSk6IFVzZSA0IGNvbHVtbnMuCgkoVVNBR0VfRk9STUFUKTogRGl0dG8uCgoJKiB0ZXhpbmZvcy5hbSAoaW5zdGFsbC1pbmZvKTogTG9vayBmb3IgaW5mbyBmaWxlIHJlbGF0aXZlIHRvICQkZC4KCgkqIE1ha2VmaWxlLmFtIChjdnMtZGlzdCk6IFN1cHByZXNzIG91dHB1dCBvZiAiZ3JlcCIuCgoJKiBjb25maWd1cmUuaW4gKFZFUlNJT04pOiBWZXJzaW9uIDAuMjguCgoJKiBhdXRvbWFrZS5pbiAocHJldHR5X3ByaW50X2ludGVybmFsKTogRml4IGZvciBQZXJsIDQKCWNvbXBhdGliaWxpdHkuCgoJKiBjb25maWd1cmUuaW4gKFZFUlNJT04pOiBWZXJzaW9uIDAuMjcuCgoJKiBkZXBlbmQuYW0gKCQoc3JjZGlyKS8uZGVwcy8lLlApOiBNdXN0IHJlZ2V4cC1xdW90ZSBzcmNkaXIgaW4gc2VkCglpbnZvY2F0aW9uLgoKCSogYXV0b21ha2UuaW4gKGluaXRpYWxpemVfZ2xvYmFsX2NvbnN0YW50cyk6IERvbid0IHF1b3RlICJAIiBpbgoJJGluc3RhbGxfbWFuX2Zvcm1hdC4KCShoYW5kbGVfbWVyZ2VfdGFyZ2V0cyk6IHVzZSAiQDoiIGFzIGVtcHR5IGNvbW1hbmQsIG5vdCAiOiIuCgpUdWUgSmFuICAyIDIzOjMzOjI0IDE5OTYgIFRvbSBUcm9tZXkgIDx0cm9tZXlAY2FtYnJpYy5jb2xvcmFkby5lZHU+CgoJKiB0ZXhpbmZvcy5hbSAoaW5zdGFsbC1pbmZvKTogTG9vayBpbiAkZCBmb3IgaW5mbyBmaWxlcy4gIEZyb20KCUZyYW7nb2lzIFBpbmFyZC4KCgkqIGRlcGVuZC5hbSAoJChzcmNkaXIpLy5kZXBzLyUuUCk6IEZpeGVkIHJlZ2V4cC4KCgkqIGF1dG9tYWtlLmluIChyZWFkX2FtX2ZpbGUpOiBDb3JyZWN0bHkgZGVhbCB3aXRoIGNvbnRpbnVlZAoJdmFyaWFibGUgZGVmaW5pdGlvbnMuCgpNb24gSmFuICAxIDE1OjQzOjI1IDE5OTYgIFRvbSBUcm9tZXkgIDx0cm9tZXlAY2FtYnJpYy5jb2xvcmFkby5lZHU+CgoJKiBhdXRvbWFrZS5pbiAoaGFuZGxlX21lcmdlX3RhcmdldHMpOiAnY2hlY2snIHRhcmdldCBkZXBlbmRzIG9uCgknYWxsJy4KCShmaWxlX2NvbnRlbnRzKTogRG9uJ3QgYmUgc28gdmVyYm9zZS4KCShyZWFkX2FtX2ZpbGUpOiBEaXR0by4KCShyZWFkX2FtX2ZpbGUpOiBNdXN0IHVzZSBzdWJzdHIgdG8gY2hlY2sgZm9yIHRyYWlsaW5nIFwuCgkoYW1faW5zdGFsbF92YXIpOiBVc2UgcHVzaF9waG9ueV9jbGVhbmVycy4KCShmaWxlX2NvbnRlbnRzKTogU2V0ICR3YXNfcnVsZSB3aGVuIGFzc3VtaW5nIGEgcnVsZSBpcyBzZWVuLgoJKHJlYWRfYW1fZmlsZSk6IERpdHRvLgoJKGRvX29uZV9jbGVhbl90YXJnZXQpOiBSZW1vdmVkIHNwdXJpb3VzIG5ld2xpbmUuCgoJU29tZSBjaGFuZ2VzIGZyb20gRnJhbudvaXMgUGluYXJkOgoJKiBSZW1vdmVkIHRyYWlsaW5nIHdoaXRlc3BhY2UgZnJvbSBhbGwgJy5hbScgZmlsZXMuCgkqIHRhZ3Mtc3ViZC5hbSAoSUQpOiBVc2UgJiYsIG5vdCA7LgoJKFRBR1MpOiBEaXR0by4KCSogYXV0b21ha2UuaW4gKHBhcnNlX2FyZ3VtZW50cyk6IFJlbW92ZWQgdXNlbGVzcyBtZXNzYWdlLgoJKHBhcnNlX2FyZ3VtZW50cyk6IERvbid0IGV4cGxpY2l0bHkgcmVmZXJlbmNlZCBTVERFUlIuCgkocmVxdWlyZV9hcmd1bWVudCk6IERpdHRvLgoJKGFtX2Vycm9yKTogRGl0dG8uCgkoc2V0X3N0cmljdG5lc3MpOiBEaXR0by4KCShmaWxlX2NvbnRlbnRzKTogRGl0dG8uCgkocmVhZF9hbV9maWxlKTogRGl0dG8uCgkoZ2VuZXJhdGVfbWFrZWZpbGUpOiBTdHlsZSB0d2Vha3MuCgkoaGFuZGxlX3Byb2dyYW1zKTogRGl0dG8uCgkoaGFuZGxlX2xpYnJhcmllcyk6IERpdHRvLgoJKGhhbmRsZV90ZXhpbmZvKTogRGl0dG8uCgkoaGFuZGxlX21hbl9wYWdlcyk6IERpdHRvLgoJKGhhbmRsZV90YWdzKTogRGl0dG8uCgkoaGFuZGxlX2Rpc3QpOiBEaXR0by4KCShoYW5kbGVfc3ViZGlycyk6IERpdHRvLgoJKGhhbmRsZV9jb25maWd1cmUpOiBEaXR0by4KCShoYW5kbGVfZm9vdGVyKTogRG9uJ3QgcHV0IG5ld2xpbmUgYmVmb3JlIGZvb3Rlci5hbSBjb250ZW50cy4KCShoYW5kbGVfbWVyZ2VfdGFyZ2V0cyk6IFN0eWxlIHR3ZWFrcy4KCShkb19vbmVfY2xlYW5fdGFyZ2V0KTogRGl0dG8uCgkoZGlybmFtZSk6IERpdHRvLgoJKGFtX3ZhcmlhYmxlKTogRGl0dG8uCglEZWZpbmVkIHNvbWUgbmV3IGNvbnN0YW50cy4KCShnZW5lcmF0ZV9tYWtlZmlsZSk6IERvbid0IGNhbGwgZ2VuZXJhdGVfaGVhZGVyLgoJKGdlbmVyYXRlX2hlYWRlcik6IFJlbW92ZWQuCgkoZmlsZV9jb250ZW50cyk6IFJld3JvdGUuCgkocmVhZF9hbV9maWxlKTogUmV3cm90ZS4KCgkqIGF1dG9tYWtlLmluIChnZW5lcmF0ZV9tYWtlZmlsZSk6IEhhbmRsZSBwaG9ueSB0YXJnZXQuCgkoZG9fb25lX2NsZWFuX3RhcmdldCk6IFByZXR0eS1wcmludCBkZXBlbmRlbmNpZXMuCgkoaGFuZGxlX2luc3RhbGxkaXJzKTogUHJldHR5LXByaW50IHJ1bGUuCgoJKiBNYWtlZmlsZS5hbSAobWFpbnRhaW5lci1jaGVjayk6IE1hZGUgc29tZSBjb21tYW5kcyBzaWxlbnQuCgoJKiBhdXRvbWFrZS5pbiAoaW5pdGlhbGl6ZV9nbG9iYWxfY29uc3RhbnRzKTogRG9uJ3QgaW5zdGFsbCBvcgoJdW5pbnN0YWxsIGNhdCdkIG1hbiBwYWdlcy4KCShpbml0aWFsaXplX3Blcl9pbnB1dCk6IEFkZGVkIHBob255IHRhcmdldC4KCShwdXNoX3Bob255X2NsZWFuZXJzKTogTmV3IGZ1bmN0aW9uLgoJKGdldF9vYmplY3RfZXh0ZW5zaW9uKTogSGFuZGxlIHBob255IHRhcmdldHMuCgkoaGFuZGxlX3RleGluZm8pOiBEaXR0by4KCShoYW5kbGVfbWFuX3BhZ2VzKTogRGl0dG8uCgkoaGFuZGxlX3RhZ3MpOiBEaXR0by4KCShoYW5kbGVfZGlzdCk6IERpdHRvLgoJKGhhbmRsZV9zdWJkaXJzKTogRGl0dG8uCgkoaGFuZGxlX2luc3RhbGxkaXJzKTogRGl0dG8uCgkoaGFuZGxlX21lcmdlX3RhcmdldHMpOiBEaXR0by4KCShoYW5kbGVfY2xlYW4pOiBEaXR0by4KCShkb19vbmVfbWVyZ2VfdGFyZ2V0KTogRGl0dG8uCgkoYW1faW5zdGFsbF92YXIpOiBEaXR0by4KCShoYW5kbGVfcGhvbnkpOiBOZXcgZnVuY3Rpb24uCgkoZ2VuZXJhdGVfbWFrZWZpbGUpOiBDYWxsIGl0LgoJKHByZXR0eV9wcmludF9pbnRlcm5hbCk6IE5ldyBmdW5jdGlvbi4KCShwcmV0dHlfcHJpbnRfcnVsZSk6IERpdHRvLgoKU3VuIERlYyAzMSAxMzowNDo1OSAxOTk1ICBUb20gVHJvbWV5ICA8dHJvbWV5QGNhbWJyaWMuY29sb3JhZG8uZWR1PgoKCSogYXV0b21ha2UuaW4gKGluaXRpYWxpemVfZ2xvYmFsX2NvbnN0YW50cyk6IERvbid0IHByaW50IGJvZHkgb2YKCWxvb3AgYXQgbWFrZSB0aW1lLgoKCUNoYW5nZXMgZnJvbSBGcmFu529pcyBQaW5hcmQ6CgkqIGRlcGVuZC5hbSAoTUtERVApOiBJbmNsdWRlIERFRlMsIElOQ0xVREVTLCBDUFBGTEFHUywgQ0ZMQUdTLgoJKERFUF9GSUxFUyk6IFB1dCBkZXBlbmRlbmN5IGZpbGVzIGluICQoc3JjZGlyKS4KCUxvb2sgaW4gJChzcmNkaXIpIHdoZW4gaW5jbHVkaW5nIGRlcGVuZGVuY3kgZmlsZXMuCgkoJChzcmNkaXIpLy5kZXBzLy5QKTogLmRlcHMvLlAgaXMgaW4gJChzcmNkaXIpLgoJKC5kZXBzLyUuUCk6IE1LREVQIGluY2x1ZGVzIGFsbCBtYWNybyBleHBhbnNpb25zLgoJKiBkaXN0LXN1YmQtdG9wLmFtIChkaXN0KTogR2V0IGFic29sdXRlIHBhdGggZm9yIGRpc3RkaXIuICBEb24ndAoJYmUgc28gdmVyYm9zZS4KCSogZGlzdC1zdWJkLmFtIChkaXN0KTogRG9uJ3QgYmUgc28gdmVyYm9zZS4KCSogZGlzdC5hbSAoZGlzdCk6IERvbid0IGJlIHNvIHZlcmJvc2UuCgoJKiBhdXRvbWFrZS5pbiAoZG9fb25lX2NsZWFuX3RhcmdldCk6IFJlbW92ZSBjb25maWcuc3RhdHVzIGluCgltYWludGFpbmVyLWNsZWFuLiAgRnJvbSBKaW0gTWV5ZXJpbmcuCgoJKiBwcm9ncmFtcy1jbGVhbi5hbSAoY2xlYW4tQERJUkBQUk9HUkFNUyk6IEJ1ZyBmaXguICBGcm9tIEppbQoJTWV5ZXJpbmcuCgoJKiBhdXRvbWFrZS5pbiAoaGFuZGxlX21lcmdlX3RhcmdldHMpOiBBZGQgZHVtbXkgY29tbWFuZCBmb3IgZW1wdHkKCWluc3RhbGwgdGFyZ2V0LiAgRnJvbSBKaW0gTWV5ZXJpbmcuCgpUdWUgRGVjIDEyIDEwOjA2OjI4IDE5OTUgIFRvbSBUcm9tZXkgIDx0cm9tZXlAY2FtYnJpYy5jb2xvcmFkby5lZHU+CgoJKiB0ZXhpbmZvcy5hbSAodW5pbnN0YWxsLWluZm8pOiBCdWcgZml4LgoKCSogTWFrZWZpbGUuYW0gKG1haW50YWluZXItY2hlY2spOiBFcnJvciBpZiAkey4uLn0gdXNlZC4KCSogZGVwZW5kLmFtIChERVBfRklMRVMpOiBQcmVmZXIgJCguLi4pLgoKCSogc2NyaXB0cy5hbSAoaW5zdGFsbC1ARElSQFNDUklQVFMpOiBPbmx5IGluc3RhbGwgc2NyaXB0IGlmIGl0CglleGlzdHMuCgkqIGxpYnJhcmllcy5hbSAoaW5zdGFsbC1ARElSQExJQlJBUklFUyk6IE9ubHkgaW5zdGFsbCBsaWJyYXJ5IGlmCglpdCBleGlzdHMuCgkqIHByb2dyYW1zLmFtIChpbnN0YWxsLUBESVJAUFJPR1JBTVMpOiBPbmx5IGluc3RhbGwgcHJvZ3JhbSBpZiBpdAoJZXhpc3RzLgoKCSogdGV4aW5mb3MtdmFycy5hbSAoVEVYRklMRVMpOiBSZW1vdmVkLgoKCSogTWFrZWZpbGUuYW0gKHBrZ2RhdGFfREFUQSk6IFJlbW92ZWQgbGlicHJvZ3JhbXMuYW0uCgoJKiBhdXRvbWFrZS5pbiAoZG9fb25lX21lcmdlX3RhcmdldCk6IE5ldmVyIGdlbmVyYXRlIHRyYWlsaW5nCgl3aGl0ZXNwYWNlLgoJKHByZXR0eV9wcmludCk6IE5ldyBmdW5jdGlvbi4KCShoYW5kbGVfZm9vdGVyKTogUHJldHR5cHJpbnQgZGVmaW5pdGlvbnMuCgkoYW1faW5zdGFsbF92YXIpOiBEaXR0by4KCShoYW5kbGVfc291cmNlX3RyYW5zZm9ybSk6IERpdHRvLgoJKGhhbmRsZV9kaXN0KTogRGl0dG8uCgkoaGFuZGxlX2xpYnJhcmllcyk6IERpdHRvLgoJKHJlYWRfYW1fZmlsZSk6IFB1dCBjb21tZW50cyBuZWFyZXIgYXBwcm9wcmlhdGUgY29kZS4KCgkqIHRleGktY2xlYW4uYW0gKG1vc3RseWNsZWFuLWluZm8pOiBVc2UgY29udGludWVkIGxpbmVzLCBub3QKCW11bHRpcGxlIHJtJ3MuICBGcm9tIEppbSBNZXllcmluZy4KClN1biBEZWMgMTAgMTE6NTk6MzMgMTk5NSAgVG9tIFRyb21leSAgPHRyb21leUBjYW1icmljLmNvbG9yYWRvLmVkdT4KCgkqIE1ha2VmaWxlLmFtIChwa2dkYXRhX0RBVEEpOiBDYXVzZSBJTlNUQUxMLCBpbnN0YWxsLXNoLCBtZGF0ZS1zaCwKCW1raW5zdGFsbGRpcnMsIHRleGluZm8udGV4IHRvIGJlIGluc3RhbGxlZC4KCSogYXV0b21ha2UuaW4gKHN5bWxpbmtfZXhpc3RzKTogTmV3IGdsb2JhbC4KCShpbnN0YWxsX21pc3NpbmcpOiBEaXR0by4KCShyZXF1aXJlX2ZpbGUpOiBJbnN0YWxsIG1pc3NpbmcgZmlsZXMgaWYgcG9zc2libGUuCgkocGFyc2VfYXJndW1lbnRzKTogSGFuZGxlIC0taW5zdGFsbC1taXNzaW5nIG9wdGlvbi4KCShpbml0aWFsaXplX2dsb2JhbF9jb25zdGFudHMpOiBEb2N1bWVudCAtLWluc3RhbGwtbWlzc2luZy4KCgkqIE1ha2VmaWxlLmFtIChjdnMtZGlzdCk6IERvbid0IHJlbGVhc2UgdW5sZXNzIE5FV1MgdXBkYXRlZC4KCUVuc3VyZSAnY2hlY2tzJyBwYXNzIGJlZm9yZSByZWxlYXNlLgoJKG1haW50YWluZXItY2hlY2spOiBSZW5hbWVkLiAgTG9vayBpbiAkKHNyY2RpcikgZm9yIHNvdXJjZXMuICBGcm9tCglGcmFuYyxvaXMgUGluYXJkLgoJKGN2cy1kaXN0KTogRGVwZW5kIG9uIG1haW50YWluZXItY2hlY2sgaW5zdGVhZCBvZiBleHBsaWNpdGx5CglydW5uaW5nIGNoZWNrLgoKCSogY29uZmlndXJlLmluIChWRVJTSU9OKTogVmVyc2lvbiAwLjI2LgoKCSogTWFrZWZpbGUuYW0gKGNoZWNrLWxvY2FsKTogT25seSBsb29rIGF0IFthLXpdKi5hbS4gIEZpeGVkIHNlbnNlCglvZiAnaWYnIHRlc3QuCgoJKiBkZXBlbmQuYW0gKERFUF9GSUxFUyk6IEJ1ZyBmaXguCgoJKiBhdXRvbWFrZS5pbiAoZG9fb25lX2NsZWFuX3RhcmdldCk6IFR5cG8uCgoJKiBNYWtlZmlsZS5hbSAoY2hlY2stbG9jYWwpOiBSdW4gc3ludGF4IGNoZWNrIHVuZGVyIFBlcmwgNC4KCgkqIGF1dG9tYWtlLmluOiBGaXhlcyBmb3IgUGVybCA0LCBmcm9tIEdvcmQgTWF0emlna2VpdC4KCShoYW5kbGVfc291cmNlX3RyYW5zZm9ybSk6IExvb3AgdmFyaWFibGUgaXMgbm93ICRfLiAgRnJvbSBHb3IKCgkqIE1ha2VmaWxlLmFtIChjaGVjay1sb2NhbCk6IENoZWNrIGZvciAndHJ1ZScgaW4gc291cmNlLgoJKiB0ZXhpbmZvcy5hbSAoaW5zdGFsbC1pbmZvKTogQ2FuJ3QgdXNlICJ0cnVlIiBpbiBhbnkgcnVsZS4KClNhdCBEZWMgIDkgMTA6MTY6NDggMTk5NSAgVG9tIFRyb21leSAgPHRyb21leUBjYW1icmljLmNvbG9yYWRvLmVkdT4KCgkqIE1ha2VmaWxlLmFtIChjdnMtZGlzdCk6IE5ldyB0YXJnZXQuCgoJKiB0YWdzLmFtIChUQUdTKTogVXNlICJ0ZXN0IC16IC4uLiB8fCIgdG8gYXZvaWQgc3B1cmlvdXMKCWZhaWx1cmVzLgoKCSogdGV4aW5mb3MuYW0gKGluc3RhbGwtaW5mbyk6IERvbid0IGRvIGluc3RhbGwtaW5mbyBmb3Igbm93LgoKCSogY2xlYW4uYW0gKGRpc3RjbGVhbi1nZW5lcmljKTogRG9uJ3QgcmVtb3ZlIGNvbmZpZy5zdGF0dXMgaGVyZS4KCSogYXV0b21ha2UuaW4gKGRvX29uZV9jbGVhbl90YXJnZXQpOiBSZW1vdmUgY29uZmlnLnN0YXR1cyBsYXRlciwKCWZvciAnbWFrZSAtajInLiAgRnJvbSBKaW0gTWV5ZXJpbmcuCgpGcmkgRGVjICA4IDE2OjMwOjQ4IDE5OTUgIFRvbSBUcm9tZXkgIDx0cm9tZXlAY2FtYnJpYy5jb2xvcmFkby5lZHU+CgoJKiBjb25maWd1cmUuaW4gKFZFUlNJT04pOiBWZXJzaW9uIDAuMjUuCgoJKiBhdXRvbWFrZS5pbiAoaGFuZGxlX3RleGluZm8pOiBVc2UgIiQ/ID4+IDgiLCBub3QgIiQ/Ii4KCShoYW5kbGVfY29uZmlndXJlKTogQ2hlY2sgZm9yIEFDX1BST0dfTUFLRV9TRVQuCgoJKiBkZXBlbmQuYW0gKERFUF9GSUxFUyk6IEhhbmRsZSBkZUFOU0lmaWNhdGlvbiBjYXNlLiAgRnJvbSBKaW0KCU1leWVyaW5nLgoKCSogYXV0b21ha2UuaW4gKGFtX2luc3RhbGxfdmFyKTogQ2hhbmdlZCBob3cgJ2NsZWFuJyBoYW5kbGVkIGZvcgoJdW5pZm9ybSBuYW1lIHRhcmdldHMuCgkqIE1ha2VmaWxlLmFtIChwa2dkYXRhX0RBVEEpOiBBZGRlZCBuZXcgZmlsZXMuCgkqIGRhdGEtY2xlYW4uYW06IE5ldyBmaWxlLgoJKiBzY3JpcHRzLWNsZWFuLmFtOiBOZXcgZmlsZS4KCSogbGlicmFyaWVzLWNsZWFuLmFtOiBOZXcgZmlsZS4KCSogcHJvZ3JhbXMtY2xlYW4uYW06IE5ldyBmaWxlLgoKV2VkIERlYyAgNiAwMDowNjoxMSAxOTk1ICBUb20gVHJvbWV5ICA8dHJvbWV5QGNhbWJyaWMuY29sb3JhZG8uZWR1PgoKCSogYXV0b21ha2UuaW4gKGFtX2luc3RhbGxfdmFyKTogRXJyb3IgaWYgdmFyaWFibGUgbmFtZQoJIm1pc3NwZWxsZWQiLgoJKGhhbmRsZV9zb3VyY2VfdHJhbnNmb3JtKTogQXV0b21hdGljYWxseSBpbmNsdWRlIC5jIGZpbGUKCWNvcnJlc3BvbmRpbmcgdG8gLnkgb3IgLmwuCgpUdWUgRGVjICA1IDAwOjQ2OjE0IDE5OTUgIFRvbSBUcm9tZXkgIDx0cm9tZXlAY2FtYnJpYy5jb2xvcmFkby5lZHU+CgoJKiBwcm9ncmFtcy5hbTogQ2hhbmdlZCBmb3IgdW5pZm9ybSBuYW1pbmcgc2NoZW1lLgoKCSogYXV0b21ha2UuaW4gKHJlYWRfYW1fZmlsZSk6IEFsbG93ICctJyBhbmQgJy4nIGluIHRhcmdldCBuYW1lcy4KCShnZW5lcmF0ZV9tYWtlZmlsZSk6IERvbid0IHBhc3MgYXJndW1lbnRzIHRvIGhhbmRsZV9saWJyYXJpZXMuCgkoaW5pdGlhbGl6ZV9wZXJfaW5wdXQpOiBEZWZpbmUgQHNvdXJjZXMsIEBvYmplY3RzLgoJKGdlbmVyYXRlX21ha2VmaWxlKTogSW5pdCBAc291cmNlcywgQG9iamVjdHMgaWYgbmVlZGVkLgoJKGhhbmRsZV9zb3VyY2VfdHJhbnNmb3JtKTogUHVzaCBvbnRvIEBzb3VyY2VzLCBAb2JqZWN0cyBoZXJlLgoJKGFtX2luc3RhbGxfdmFyKTogUHVzaCBwcmltYXJ5IG9udG8gQGFsbCwgZm9yIGNvbmZpZ3VyZS10aW1lCgljdXN0b21pemF0aW9uLgoJKGhhbmRsZV9wcm9ncmFtcyk6IFVzZSBuZXcgdW5pZm9ybSBuYW1pbmcgc2NoZW1lLgoKCSogTWFrZWZpbGUuYW0gKGNoZWNrLWxvY2FsKTogTmV3IHRhcmdldC4KCgkqIGF1dG9tYWtlLmluIChoYW5kbGVfbGlicmFyaWVzKTogVXNlIHVuaWZvcm0gbmFtaW5nIHNjaGVtZS4KCgkqIGxpYnJhcmllcy5hbTogUmV3cm90ZSBmb3IgdW5pZm9ybSBuYW1pbmcgc2NoZW1lLgoKCSogc2NyaXB0cy5hbTogVXBkYXRlZCBuYW1lcyBvZiBhbGwgY2xlYW4gdGFyZ2V0cy4KCgkqIGF1dG9tYWtlLmluIChoYW5kbGVfcHJvZ3JhbXMpOiBTcGxpdCBvbiBhbGwgd2hpdGVzcGFjZS4KCShoYW5kbGVfbGlicmFyaWVzKTogRGl0dG8uCgkoaGFuZGxlX3RleGluZm8pOiBEaXR0by4KCShoYW5kbGVfbWFuX3BhZ2VzKTogRGl0dG8uCgkoYW1faW5zdGFsbF92YXIpOiBDaGFuZ2VkIHJldHVybiByZXN1bHQuCgkoYW1faW5zdGFsbF92YXIpOiBDaGFuZ2VkIGludGVyZmFjZS4KCShhbV9pbnN0YWxsX3Zhcik6IFB1c2ggb250byBAY2xlYW5AIGlmIHJlcXVlc3RlZC4KCShoYW5kbGVfc2NyaXB0cyk6IFBhc3MgLWNsZWFuIHRvIGFtX2luc3RhbGxfdmFyLgoKTW9uIERlYyAgNCAxMTo1NTozNiAxOTk1ICBUb20gVHJvbWV5ICA8dHJvbWV5QGNhbWJyaWMuY29sb3JhZG8uZWR1PgoKCSogYXV0b21ha2UuaW4gKGFtX2luc3RhbGxfdmFyKTogUHVzaCB0YXJnZXQgb250byBAYWxsLgoJKGdldF9vYmplY3RfZXh0ZW5zaW9uKTogVXNlICQoLi4uKS4KCShoYW5kbGVfc291cmNlX3RyYW5zZm9ybSk6IERpdHRvLgoJKGhhbmRsZV9wcm9ncmFtcyk6IERpdHRvLgoKCSogYXV0b21ha2UuaW4gKHJlcXVpcmVfYXJndW1lbnQpOiBOZXcgZnVuY3Rpb24uCgkocGFyc2VfYXJndW1lbnRzKTogVXNlIGl0LgoJKHB1c2hfZGlzdF9jb21tb24pOiBOZXcgZnVuY3Rpb24uCgkoZ2VuZXJhdGVfbWFrZWZpbGUpOiBVc2UgaXQuCgkoaGFuZGxlX3RleGluZm8pOiBEaXR0by4KCShoYW5kbGVfZGlzdCk6IERpdHRvLgoJKGhhbmRsZV9jb25maWd1cmUpOiBEaXR0by4KCShyZXF1aXJlX2ZpbGUpOiBEaXR0by4KCShnZW5lcmF0ZV9tYWtlZmlsZSk6IERvbid0IHBhc3MgYXJndW1lbnRzIHRvIGhhbmRsZV9zY3JpcHRzLgoJKGhhbmRsZV9jb25maWd1cmUpOiBSZXF1aXJlIGNvbmZpZ3VyZS5pbi4KCShjaGVja19nbnVfc3RhbmRhcmRzKTogTmV3IGZ1bmN0aW9uLgoJKGNoZWNrX2duaXRzX3N0YW5kYXJkcyk6IERpdHRvLgoJKGdlbmVyYXRlX21ha2VmaWxlKTogQ2hlY2sgc3RhbmRhcmRzLgoKCSogTWFrZWZpbGUuYW0gKGJpbl9TQ1JJUFRTKTogQ2hhbmdlZCBuYW1lIGZyb20gU0NSSVBUUy4KCgkqIGF1dG9tYWtlLmluIChMRU5JRU5ULCBHTlUsIEdOSVRTKTogTmV3IGNvbnN0YW50cy4KCShpbml0aWFsaXplX3Blcl9pbnB1dCk6IE5ldyBmdW5jdGlvbi4KCShnZW5lcmF0ZV9tYWtlZmlsZSk6IFVzZSBpdC4KCShpbml0aWFsaXplX2dsb2JhbF9jb25zdGFudHMpOiBSZW5hbWVkIGZyb20gaW5pdF9nbG9iYWxzLgoJKHJlcXVpcmVfZmlsZSk6IEFkZGVkIHN0cmljdG5lc3MgYXJndW1lbnQuCgkocGFyc2VfYXJndW1lbnRzKTogQWRkZWQgLS1zdHJpY3Qgb3B0aW9uLgoJKHNldF9zdHJpY3RuZXNzKTogTmV3IGZ1bmN0aW9uLgoJKHBhcnNlX2FyZ3VtZW50cyk6IHVzZSBpdC4KCShpbml0aWFsaXplX2dsb2JhbF9jb25zdGFudHMpOiBEb2N1bWVudCAtLXN0cmljdG5lc3MuCgoJKiBhdXRvbWFrZS5pbjogVXNlICR7MSsiJEAifSB0byBwcmVzZXJ2ZSBxdW90aW5nIHdoZW4gcnVubmluZwoJdW5kZXIgc2guCgoJKiB0ZXhpbmZvcy5hbSAoaW5zdGFsbC1pbmZvKTogRG9uJ3QgdXNlICJ0cnVlIi4KCSogdGFncy5hbSAoVEFHUyk6IERvbid0IHVzZSAidHJ1ZSIuCgoJKiBkaXN0LmFtLCBkaXN0LXN1YmQtdG9wLmFtLCByZW1ha2UtaGRyLmFtLCByZW1ha2Utc3ViZC5hbSwKCXJlbWFrZS5hbSwgc3ViZGlycy5hbSwgdGV4aW5mb3MuYW06IFVzZSAiJiYiIGFmdGVyIGNkLgoKCSogcHJvZ3JhbS5hbSAoQFBST0dSQU1AKTogVXNlIExJTksgbWFjcm8uCgkqIGNvbXBpbGUuYW0gKC5jLm8pOiBVc2UgQ09NUElMRSBtYWNyby4KCgkqIGNsZWFuLmFtLCByZW1ha2UtaGRyLmFtLCByZW1ha2UuYW0sIHRleGluZm9zLmFtOiBVc2UgJCguLi4pLCBub3QKCSR7Li4ufS4KCgkqIHN1YmRpcnMuYW0gKFJFQ1VSU0lWRSk6IFJlbW92ZWQgbWFjcm8uCgoJKiBjbGVhbi5hbTogQ2hhbmdlZCB0byBub3QgYmUgc28gdmVyYm9zZS4KCgkqIE1ha2VmaWxlLmFtIChwa2dkYXRhX0RBVEEpOiBJbmNsdWRlIHRleGktY2xlYW4uYW0uCgkqIGF1dG9tYWtlLmluIChoYW5kbGVfdGV4aW5mbyk6IFRyYW5zZm9ybSB0ZXhpLWNsZWFuIGFuZCBwdXQgaW50bwoJb3V0cHV0IHJ1bGVzLgoJKiB0ZXhpbmZvcy12YXJzLmFtIChURVhGSUxFUyk6IFJlbW92ZWQuCgkqIHRleGluZm9zLmFtOiBSZW1vdmVkICdjbGVhbicgdGFyZ2V0cy4KCSogdGV4aS1jbGVhbi5hbTogTmV3IGZpbGUuCgoJKiBNYWtlZmlsZS5hbSAoRVRBR1NfQVJHUyk6IEp1c3QgdXNlICdhdXRvbWFrZS5pbicuCgoJKiB0ZXhpbmZvcy12YXJzLmFtIChURVhGSUxFUyk6IEFkZGVkICoub3AuCgoJKiBkaXN0LXZhcnMuYW0gKERJU1RGSUxFUyk6IFJlbmFtZWQgZnJvbSBESVNUX0ZJTEVTLCBwZXIgR05VCglzdGFuZGFyZHMuCgkqIGRpc3QuYW0gKGRpc3QpOiBVc2UgRElTVEZJTEVTLgoJKiBkaXN0LXN1YmQuYW0gKGRpc3QpOiBVc2UgRElTVEZJTEVTLgoJKiBkaXN0LXN1YmQtdG9wLmFtIChkaXN0KTogVXNlIERJU1RGSUxFUy4KClN1biBEZWMgIDMgMDA6MjQ6MDggMTk5NSAgVG9tIFRyb21leSAgPHRyb21leUBjYW1icmljLmNvbG9yYWRvLmVkdT4KCgkqIE1ha2VmaWxlLmFtIChFVEFHU19BUkdTKTogRGVmaW5lLgoKCSogZGVwZW5kLmFtICguZGVwcy8uUCk6IFVzZSAiOiIsIG5vdCAiZWNobyB0aW1lc3RhbXAiLiAgRnJvbSBKaW0KCU1leWVyaW5nLgoKCSogZGlzdC12YXJzLmFtIChESVNUX0ZJTEVTKTogUmVtb3ZlZCBQQUNLQUdFREFUQS4KCgkqIGF1dG9tYWtlLmluIChoYW5kbGVfc2NyaXB0cyk6IFVzZSBhbV9pbnN0YWxsX3Zhci4KCgkqIHNjcmlwdHMuYW06IFJld3JvdGUgZm9yIG5ldyB1bmlmb3JtIG5hbWluZyBzY2hlbWUuCgoJKiBNYWtlZmlsZS5hbSAocGtnZGF0YV9EQVRBKTogUmVtb3ZlZCBsaWJzY3JpcHRzLmFtLgoKCSogbGlic2NyaXB0cy5hbTogUmVtb3ZlZC4KCgkqIHBhY2thZ2VkYXRhLmFtOiBSZW1vdmVkLgoKCSogTWFrZWZpbGUuYW0gKFBBQ0tBR0VEQVRBKTogUmVtb3ZlZCBwYWNrYWdlZGF0YS5hbS4KCShwa2dkYXRhX0RBVEEpOiBSZW5hbWVkIGZyb20gUEFDS0FHRURBVEEuCgoJKiBhdXRvbWFrZS5pbiAoaGFuZGxlX2RhdGEpOiBVc2UgYW1faW5zdGFsbF92YXIuCgkoaW5pdF9nbG9iYWxzKTogSW5pdCAlZXhlY19kaXJfcC4KCgkqIGRhdGEuYW06IFJld3JvdGUgZm9yIG5ldyB1bmlmb3JtIG5hbWluZyBzY2hlbWUuCgoJKiBhdXRvbWFrZS5pbiAoZ2V0X29iamVjdF9leHRlbnNpb24pOiBOZXcgZnVuY3Rpb24uCgkoaGFuZGxlX3Byb2dyYW1zKTogVXNlIGl0LgoJKGRpcl9ob2xkc19zb3VyY2VzKTogQ2hhbmdlZCBpbnRlcnByZXRhdGlvbi4KCShoYW5kbGVfaGVhZGVycyk6IE5ldyBmdW5jdGlvbi4KCShhbV9pbnN0YWxsX3Zhcik6IE5ldyBmdW5jdGlvbi4KCShnZW5lcmF0ZV9tYWtlZmlsZSk6IENhbGwgaGFuZGxlX2hlYWRlcnMuCgoJKiBoZWFkZXItdmFycy5hbSAocGtnZGF0YWRpcik6IE5ldyBtYWNyby4KCShwa2dsaWJkaXIpOiBEaXR0by4KCShwa2dpbmNsdWRlZGlyKTogRGl0dG8uCgoJKiBhdXRvbWFrZS5pbiAoaGFuZGxlX3NvdXJjZV90cmFuc2Zvcm0pOiBOZXcgZnVuY3Rpb24uCgkoYW1fZXJyb3IpOiBOZXcgZnVuY3Rpb24uCgkoZ2VuZXJhdGVfbWFrZWZpbGUpOiBVc2UgaXQuCgkoaGFuZGxlX3NvdXJjZV90cmFuc2Zvcm0pOiBEaXR0by4KCShoYW5kbGVfdGV4aW5mbyk6IERpdHRvLgoJKGhhbmRsZV9kZXBlbmRlbmNpZXMpOiBEaXR0by4KCShoYW5kbGVfbWVyZ2VfdGFyZ2V0cyk6IERpdHRvLgoJKHJlcXVpcmVfZmlsZSk6IERpdHRvLgoKU2F0IERlYyAgMiAyMTozOTo1NiAxOTk1ICBUb20gVHJvbWV5ICA8dHJvbWV5QGNhbWJyaWMuY29sb3JhZG8uZWR1PgoKCSogYXV0b21ha2UuaW46IFVwZGF0ZWQgRlNGIGFkZHJlc3MuICBGcm9tIEppbSBNZXllcmluZy4KCSogaGVhZGVyLXZhcnMuYW06IFVwZGF0ZWQgRlNGIGFkZHJlc3MuCgoJKiBkaXN0bmFtZS5hbTogUmVtb3ZlZC4KCgkqIGF1dG9tYWtlLmluIChmaWxlX2NvbnRlbnRzKTogU3RyaXAgIiMjIiBjb21tZW50cy4KCSogVmFyaW91cyBmaWxlczogQWRkZWQgIiMjIiBjb21tZW50cyBmb3Igc3RyYW5nZSB0aGluZ3MuCgoJKiBhdXRvbWFrZS5pbiAoaGFuZGxlX3RhZ3MpOiBHZW5lcmF0ZSBUQUdTIHJ1bGUgZm9yIGV2ZXJ5CglkaXJlY3RvcnkuCgoJKiBzdWJkaXJzLmFtIChSRUNVUlNJVkUpOiBJbmNsdWRlIGluc3RhbGxjaGVjay1yZWN1cnNpdmUuCgkqIGF1dG9tYWtlLmluIChpbnN0YWxsY2hlY2spOiBOZXcgdmFyaWFibGUuCgkoZ2VuZXJhdGVfbWFrZWZpbGUpOiBJbml0aWFsaXplIGl0LgoJKGhhbmRsZV9zdWJkaXJzKTogUHVzaCAnaW5zdGFsbGNoZWNrLXJlY3Vyc2l2ZScuCgkoaGFuZGxlX21lcmdlX3RhcmdldHMpOiBIYW5kbGUgaW5zdGFsbGNoZWNrIHRhcmdldC4KClRodSBOb3YgMzAgMjA6MTM6MTYgMTk5NSAgVG9tIFRyb21leSAgPHRyb21leUBjYW1icmljPgoKCSogYXV0b21ha2UuaW4gKCRQQUNLQUdFKTogUmVtb3ZlZC4KCgkqIGhlYWRlci12YXJzLmFtIChBTEwpOiBSZW1vdmVkLgoKCSogYXV0b21ha2UuaW46IFJld29ya2VkICdhbGwnIHRhcmdldCBoYW5kbGluZy4KCgkqIGF1dG9tYWtlLmluIChnZW5lcmF0ZV9tYWtlZmlsZSk6CglEb24ndCB1c2UgQU1fIGZvcm1zIGluIGNhbGwgdG8gYW1fdmFyaWFibGUuCgoJKiBhdXRvbWFrZS5pbjogQ2hhbmdlcyBmb3IgUGVybCA1LCBmcm9tIEdvcmQgTWF0emlna2VpdAoKCSogY2xlYW4uYW0gKE1PU1RMWUNMRUFORklMRVMsIE1BSU5UQUlORVJDTEVBTkZJTEVTKTogTmV3IHZhcmlhYmxlcy4KCgkqIGF1dG9tYWtlLmluIChoYW5kbGVfZm9vdGVyKTogQWxsb3cgU1VGRklYRVMgdmFyaWFibGUuCgoJKiBhdXRvbWFrZS5pbiAoYW1fdmFyaWFibGUpOiBOZXcgZnVuY3Rpb24uCgkoaGFuZGxlX3RleGluZm8pOiBVc2UgaXQuCgkoZ2VuZXJhdGVfbWFrZWZpbGUpOiBVc2UgaXQuCgoJKiBjb25maWd1cmUuaW46IFZlcnNpb24gMC4yNC4KCldlZCBOb3YgMjkgMjM6NTA6MTQgMTk5NSAgVG9tIFRyb21leSAgPHRyb21leUBjYW1icmljPgoKCSogYXV0b21ha2UuaW4gKGhhbmRsZV9saWJyYXJpZXMpOgoJR2VuZXJhdGUgYmxhaF9MSUJBREQgZGVmaW5lcyBpZiByZXF1aXJlZC4KCgkqIGxpYnJhcnkuYW0gKGxpYkBMSUJSQVJZQC5hKTogTG9vayBhdCAkKEBMSUJSQVJZQF9MSUJBREQpCgoJKiBsaWJyYXJpZXMtdmFycy5hbSAoTElCT0JKUywgQUxMT0NBKTogUmVtb3ZlZC4KCgkqIGNvbXBpbGUta3IuYW06ICgkKE9CSkVDVFMpKTogRGVwZW5kIG9uICQoQU5TSTJLTlIpLCBub3QgYW5zaTJrbnIuCgoJKiBjb25maWd1cmUuaW46IFZlcnNpb24gMC4yMwoKCSogZGlzdC1zdWJkLXRvcC5hbSAoZGlzdCk6IERvbid0IGRpZSBpZiBhIHN1YmRpcmVjdG9yeSBhbHJlYWR5IGV4aXN0cy4KCgkqIGRpc3Qtc3ViZC10b3AuYW0sIGRpc3QuYW0gKGRpc3QpOiBHaXZlIGF1dG9tYWtlIC0tb3V0cHV0LWRpciBvcHRpb24uCgoJKiBhdXRvbWFrZS5pbjogTmV3IG9wdGlvbiAtLW91dHB1dC1kaXIKCgkqIGF1dG9tYWtlLmluIChoYW5kbGVfY29uZmlndXJlKTogRml4ZWQgdHlwby4KCgkqIGF1dG9tYWtlLmluIChoYW5kbGVfaW5zdGFsbGRpcnMpOiBBbHdheXMgbWFrZSBpbnN0YWxsZGlycyB0YXJnZXQuCgoJKiBzdWJkaXJzLmFtIChSRUNVUlNJVkUpOiBSZW1vdmVkIHVuaW5zdGFsbC1kYXRhLXJlY3Vyc2l2ZSBhbmQKCXVuaW5zdGFsbC1leGVjLXJlY3Vyc2l2ZS4gIEFkZGVkIGluc3RhbGxkaXJzLXJlY3Vyc2l2ZS4KCgkqIGF1dG9tYWtlLmluIChoYW5kbGVfaW5zdGFsbGRpcnMpOiBIYW5kbGUgaW5zdGFsbGRpcnMtcmVjdXJzaXZlLgoJKGhhbmRsZV9tYW5fcGFnZXMpOiAnYWxsJyBkZXBlbmRzIG9uICQoTUFOUykKCgkqIE1ha2VmaWxlLmFtOiBSZW1vdmVkIG1hbnMuYW0uCgoJKiBhdXRvbWFrZS5pbjogTW9yZSBtYW4tcmVsYXRlZCBmaXhlcwoKCSogYXV0b21ha2UuaW46IEJ1ZyBmaXhlcwoKCSogYXV0b21ha2UuaW46IFJld3JvdGUgbWFuIHBhZ2UgaGFuZGxpbmcuCgoJKiB0ZXhpLXZlcnNpb24uYW0sIHJlbWFrZS1oZHIuYW0sIGRlcGVuZC5hbTogRG9uJ3QgdXNlIHRvdWNoLgoKCSogYXV0b21ha2UuaW4gKGhhbmRsZV9pbnN0YWxsZGlycyk6IE5ldyBmdW5jdGlvbi4KCShAaW5zdGFsbGRpcnMpOiBOZXcgZ2xvYmFsLgoJTWFueSBjaGFuZ2VzIHRvIGRlYWwgd2l0aCBpbnN0YWxsZGlycy4KCgkqIGNsZWFuLmFtIChjbGVhbi1nZW5lcmljKTogQWx3YXlzIHN1cHBseSAnZWxzZScgY2xhdXNlIHRvICdpZicKCgkqIGF1dG9tYWtlLmluIChnZW5lcmF0ZV9oZWFkZXIpOiBEb24ndCB1c2UgaGVhZGVyLmFtLgoJKGhhbmRsZV9kaXN0KTogRG9uJ3QgdXNlIGRpc3Qtc3ViZC12YXJzLmFtLgoKCSogTWFrZWZpbGUuYW0gKFBBQ0tBR0VEQVRBKTogUmVtb3ZlZCBkaXN0LXN1YmQtdmFycy5hbSwgaGVhZGVyLmFtLgoKCSogTWFrZWZpbGUuYW0gKERJU1RDTEVBTkZJTEVTKTogUmVtb3ZlZC4KCgkqIGNsZWFuLmFtIChjbGVhbi1nZW5lcmljKTogQnVnIGZpeC4KCgkqIGNsZWFuLmFtIChjbGVhbi1nZW5lcmljKTogT25seSByZW1vdmUgQ0xFQU5GSUxFUyBpZiBub25lbXB0eQoKCSogdGV4aS12ZXJzaW9uLmFtIChjbGVhbi12dGkpOiBObyBzdWNoIG1hY3JvIGFzIFZUSQoKVHVlIE5vdiAyOCAxOTo1NjowNyAxOTk1ICBUb20gVHJvbWV5ICA8dHJvbWV5QGNhbWJyaWM+CgoJKiBhdXRvbWFrZS5pbjogQnVnIGZpeCBmb3IgbWFpbnRhaW5lci1jbGVhbgoKCSogYXV0b21ha2UuaW4gKGRvX29uZV9jbGVhbl90YXJnZXQpOgoJUHJpbnQgc3BlY2lhbCB0ZXh0IGluIG1haW50YWluZXItY2xlYW4uCgkoaGFuZGxlX2NsZWFuKTogQWx3YXlzIGluY2x1ZGUgY2xlYW4uYW0KCgkqIGNsZWFuLmFtOiBVc2UgLWdlbmVyaWMgY2xlYW4gdGFyZ2V0cy4KCgkqIGNvbXBpbGUuYW06IEFkZGVkIGNsZWFuIHRhcmdldHMuCgoJKiBjb25maWd1cmUuaW46IFZlcnNpb24gMC4yMi4KCgkqIGF1dG9tYWtlLmluIChoYW5kbGVfZGVwZW5kZW5jaWVzKToKCVB1dCB0cmFpbGluZyBuZXdsaW5lIGFmdGVyIGFsbCBkZXBzLgoKCSogYXV0b21ha2UuaW4gKGhhbmRsZV9kZXBlbmRlbmNpZXMpOiBBbm90aGVyIGRlcGVuZGVuY3kgYnVnIGZpeC4KCgkqIGF1dG9tYWtlLmluIChoYW5kbGVfZGVwZW5kZW5jaWVzKToKCUJ1ZyBmaXggd2hlbiBpbmNsdWRpbmcgZGVwZW5kZW5jaWVzLgoKCSogYXV0b21ha2UuaW4gKGhhbmRsZV9jb25maWd1cmUpOgoJVmVyaWZ5IGV4aXN0ZW5jZSBvZiBpbnN0YWxsLXNoLCBta2luc3RhbGxkaXJzCgoJKiBhdXRvbWFrZS5pbiAoaGFuZGxlX3RleGluZm8pOiBJbmNsdWRlIHN0YW1wLXZ0aSBpbiBkaXN0cmlidXRpb24KCgkqIGRpc3Qtc3ViZC12YXJzLmFtLCBkaXN0LXZhcnMuYW0gKERJU1RfRklMRVMpOgoJSW5jbHVkZSBEQVRBLCBQQUNLQUdFREFUQS4KCgkqIE1ha2VmaWxlLmFtOiBOb3RoaW5nCgoJKiBNYWtlZmlsZS5hbSAoRElTVF9PVEhFUik6IERvbid0IGRpc3RyaWJ1dGUgZ2V0dGV4dC1zaAoKCSogYXV0b21ha2UuaW4gKGhhbmRsZV90ZXhpbmZvKTogVHlwbwoKCSogYXV0b21ha2UuaW46IElmIHNjcmlwdCBlbmRzIHVwIGluIHNoZWxsLCBmZWVkIHRvIHBlcmwKCgkqIGF1dG9tYWtlLmluOiBSZXdyb3RlICdjbGVhbicgcnVsZXMuCglEb2N1bWVudGF0aW9uIG1hZGUgYW5kIGluc3RhbGxlZCBmaXJzdC4KCSdhbGwnIGRlcGVuZHMgb24gJ2luZm8nCgpNb24gTm92IDI3IDIzOjU3OjI5IDE5OTUgIFRvbSBUcm9tZXkgIDx0cm9tZXlAY2FtYnJpYz4KCgkqIGNvbmZpZ3VyZS5pbiwgTWFrZWZpbGUuYW06IFR1cm5lZCBvZmYgaW50ZXJuYXRpb25hbGl6YXRpb24uCgoJKiBjbGVhbi1rci5hbTogUmV3cm90ZSBmb3IgbmV3IGNsZWFuIHNjaGVtZS4KCgkqIHRhZ3MtY2xlYW4uYW06IFJlbW92ZSBUQUdTIGluIGRpc3RjbGVhbiwgbm90IG1haW50YWluZXItY2xlYW4KCgkqIE1ha2VmaWxlLmFtIChQQUNLQUdFREFUQSk6IEluY2x1ZGUgdGFncy1jbGVhbi5hbQoKCSogc3ViZGlycy5hbTogUmVtb3ZlZCBib2d1cyBsb2NhbCBjbGVhbiB0YXJnZXRzCgoJKiB0YWdzLWNsZWFuLmFtOiBJbml0aWFsIHJldmlzaW9uCgoJKiB0ZXhpLXZlcnNpb24uYW06IEFkZGVkIGNsZWFuIHRhcmdldHMKCgkqIHRleGluZm9zLmFtOiBGaXhlcyB0byBjbGVhbiB0YXJnZXRzLgoKCSogdGV4aW5mb3MuYW0sIGxpYnNjcmlwdHMuYW0sIHNjcmlwdHMuYW0sIGxpYnJhcmllcy5hbSwgbGlicHJvZ3JhbXMuYW0sIHByb2dyYW1zLmFtOgoJQWRkZWQgY2xlYW4gdGFyZ2V0cwoKCSogY29tcGlsZS1rci5hbSAoYW5zaTJrbnIubyk6IERlcGVuZCBvbiBDT05GSUdfSEVBREVSCgoJKiBhdXRvbWFrZS5pbjogQ29tcGxldGVseSByZXZhbXBlZCBhdXRvbWF0aWMgZGUtQU5TSS1maWNhdGlvbgoKCSogY29tcGlsZS1rci5hbTogKGFuc2kya25yLCAkKE9CSkVDVFMpKTogTmV3IHRhcmdldHMKCgkqIGNvbXBpbGUtdmFycy5hbSAoTElOSyk6IE5ldyBtYWNybwoKCSoga3ItdmFycy5hbTogVHJhaWxpbmcgYmxhbmsgbGluZQoKCSogY29tcGlsZS1rci5hbTogUmV3cm90ZQoKCSogY29tcGlsZS12YXJzLmFtIChDT01QSUxFKTogTmV3IG1hY3JvCgoJKiBjb21waWxlLXZhcnMuYW0gKEFOU0kyS05SKTogUmVtb3ZlZAoKCSogTWFrZWZpbGUuYW0gKFBBQ0tBR0VEQVRBKTogUmVtb3ZlZCBhbGwgc2VkIHNjcmlwdHMuICBBZGRlZCBrci12YXJzLmFtCgoJKiBrci12YXJzLmFtOiBJbml0aWFsIHJldmlzaW9uCgoJKiBhdXRvbWFrZS5pbiAocmVxdWlyZV9maWxlKTogTmV3IGZ1bmN0aW9uLgoJKGhhbmRsZV90ZXhpbmZvKTogUmVxdWlyZSAnbWRhdGUtc2gnCgkoY29tbW9uX3NvbWV0aW1lcyk6IE5ldyB2YXJpYWJsZQoJKHVzYWdlKTogVXNlIGl0LgoKCSogdGV4aS12ZXJzaW9uLmFtIChzdGFtcC12dGkpOiBVc2UgVWxyaWNoJ3MgbWRhdGUtc2ggc2NyaXB0CgoJKiBtZGF0ZS1zaDogSW5pdGlhbCByZXZpc2lvbgoKCSogYXV0b21ha2UuaW4gKGhhbmRsZV9mb290ZXIpOiBEb24ndCBkZWZpbmUgU09VUkNFUyBvciBPQkpFQ1RTIGlmIGVtcHR5CgoJKiBhdXRvbWFrZS5pbiAoZ2VuZXJhdGVfbWFrZWZpbGUpOgoJUHV0IE1ha2VmaWxlLmluLCBNYWtlZmlsZS5hbSBpbiBAZGlzdF9jb21tb24KCShoYW5kbGVfY29uZmlndXJlKTogVXNlIEBkaXN0X2NvbW1vbiBhcyBhcHByb3ByaWF0ZQoKCSogZGlzdC1zdWJkLXZhcnMuYW0sIGRpc3QtdmFycy5hbSAoRElTVF9DT05GKTogUmVtb3ZlZAoKCSogY29uZmlndXJlLmluOiBBYm9ydCBpZiBwZXJsIG5vdCBmb3VuZAoKCSogY29uZmlndXJlLmluOiBMb29rIGZvciBwZXJsCgoJKiBhdXRvbWFrZS5pbjogUmVpbXBsZW1lbnRlZCBpbiBQZXJsCgoJKiBhdXRvbWFrZS5pbjogRml4bGV0CgpTdW4gTm92IDI2IDA4OjA5OjMwIDE5OTUgIFRvbSBUcm9tZXkgIDx0cm9tZXlAY2FtYnJpYz4KCgkqIGF1dG9tYWtlLmluOiBBbHdheXMgcHJpbnQgIi5TVUZGSVhFUzoiIHJ1bGUuCgoJKiBhdXRvbWFrZS5pbjogRGlzdHJpYnV0aW9uIGNvbmZpZy5oLmluIGlmIHJlcXVpcmVkCgoJKiBhdXRvbWFrZS5pbjogQnVnIGZpeCB3aGVuIGluY2x1ZGluZyB0ZXhpLXZlcnNpb24uYW0KCgkqIGF1dG9tYWtlLmluOiBCdWcgZml4IHdoZW4gbG9va2luZyBmb3IgLnRleGkgZmlsZSBpbiAkYW1fcmVsZGlyCgoJKiBkZXBlbmQuYW06IENvbW1lbnQgZml4CgoJKiBhdXRvbWFrZS5pbjogTG9vayBmb3IgLnRleGkgZmlsZSBpbiAkYW1fcmVsZGlyCgoJKiBhdXRvbWFrZS5pbjogRml4bGV0CgoJKiBhdXRvbWFrZS5pbjogQmxhbmsgbGluZSBhZnRlciB0YXJnZXRzIGZyb20gdXNlcidzIE1ha2VmaWxlLmFtCgoJKiBhdXRvbWFrZS5pbjogTW92ZSBmb290ZXIgaXRlbXMgdG8gYWN0dWFsIGZvb3RlcgoKCSogYXV0b21ha2UuaW46IEluY2x1ZGUgc3RhbXAtaC5pbiBpbiBESVNUX0NPTU1PTiBpZiBuZWNlc3NhcnkKCgkqIGF1dG9tYWtlLmluIChjb21tb24pOgoJRG9uJ3QgaW5jbHVkZSBhY2NvbmZpZy5oLCBjb25maWcuaC50b3AsIGNvbmZpZy5oLmJvdAoKCSogTWFrZWZpbGUuYW0gKENPTkZJR19IRUFERVIpOiBSZW5hbWVkIGZyb20gQ09ORklHX0gKCgkqIE1ha2VmaWxlLmFtIChDT05GSUdfSCk6IERlZmluZQoKCSogYWNjb25maWcuaDogSW5pdGlhbCByZXZpc2lvbgoKCSogY29uZmlndXJlLmluOiBVc2UgQUNfQ09ORklHX0hFQURFUi4KCgkqIGF1dG9tYWtlLmluOiBQdXQgYmxhaF9URVhJTkZPUyBpbnRvIERJU1RfQ09NTU9OCgoJKiBhdXRvbWFrZS5pbjogLmluZm8gZmlsZSBleHBsaWNpdGx5IGRlcGVuZHMgb24gcHJpbWFyeSAudGV4aSBmaWxlCgoJKiB0ZXhpbmZvcy5hbSAoaW5zdGFsbC1pbmZvKTogQWx3YXlzIHN1cHBseSAnZWxzZScgY2xhdXNlIHRvICdpZicKCgkqIHRhZ3MuYW0gKFRBR1MpOiBBbHdheXMgc3VwcGx5ICdlbHNlJyBjbGF1c2UgdG8gJ2lmJwoKCSogc3ViZGlycy5hbSAoLk5PRVhQT1JUKTogUmVtb3ZlZCAobm93IGluIGZvb3Rlci5hbSkKCgkqIGF1dG9tYWtlLmluOiBBbHdheXMgaW5jbHVkZSBmb290ZXIuYW0gaW4gb3V0cHV0CgoJKiBtYW5zLmFtIChpbnN0YWxsLW1hbik6IEFsd2F5cyBzdXBwbHkgJ2Vsc2UnIGNsYXVzZSB0byAnaWYnCgoJKiBhdXRvbWFrZS5pbjogTW9yZSB2ZXJzaW9uLnRleGkgZml4ZXMKCgkqIGF1dG9tYWtlLmluOiBPbmx5IGRvIHZlcnNpb24udGV4aSBwcm9jZXNzaW5nIGlmIHJlcXVlc3RlZC4KCgkqIGF1dG9tYWtlLmluOiBNaW5vciBpbnRlcm5hdGlvbmFsaXphdGlvbiBmaXhlcy4KCVN1YnNoZWxsIGNhbiBub3cgZXhpdCB3aXRoIG5vbnplcm8gc3RhdHVzLgoJRml4ZWQgdXAgLnRleGkgaGFuZGxpbmc7IG5vdyB1c2VzIHRleGktdmVyc2lvbi5hbQoJTWFrZSBzdXJlICcuYycgYW5kICcubycgYXJlIGluIC5TVUZGSVhFUyBpZiByZXF1aXJlZC4KCgkqIE1ha2VmaWxlLmFtIChQQUNLQUdFREFUQSk6IEluY2x1ZGUgdGV4aS12ZXJzaW9uLmFtCgkoc3RhbXAtdnRpLCB2ZXJzaW9uLnRleGkpOiBSZW1vdmVkCgkoVEVYSU5GT1MpOiBEb24ndCByZWZlcmVuY2UgdmVyc2lvbi50ZXhpCgoJKiB0ZXhpLXZlcnNpb24uYW06IEluaXRpYWwgcmV2aXNpb24KCgkqIGRpc3QuYW0sIGRpc3Qtc3ViZC10b3AuYW0gKGRpc3QpOgoJW0RJU1RfU1VCRElSU10gRm9sbG93IHN5bWxpbmtzIHdoZW4gY29weWluZy4KCgkqIGRpc3Qtc3ViZC10b3AuYW0gKGRpc3QpOiBSZW1vdmVkIHVubmVlZGVkIHN1YmRpcj0gb3B0aW9uIHRvIG1ha2UKClNhdCBOb3YgMjUgMjM6MjM6MzkgMTk5NSAgVG9tIFRyb21leSAgPHRyb21leUBjYW1icmljPgoKCSogYXV0b21ha2UuaW46IEFkZGVkIC0tYW1kaXIgb3B0aW9uCgoJKiBNYWtlZmlsZS5hbSwgY29uZmlndXJlLmluOiBUdXJuZWQgb24gaW50ZXJuYXRpb25hbGl6YXRpb24KCgkqIE1ha2VmaWxlLmFtOiBTZXQgRURJVElPTgoKCSogY29uZmlndXJlLmluOiBWZXJzaW9uIDAuMjEKCgkqIHRhZ3MuYW0sIHRhZ3Mtc3ViZC5hbTogRG9uJ3QgdXNlIGRvdWJsZS1jb2xvbiBydWxlcwoKCSogYXV0b21ha2UuaW46IFJlZGlkIGluc3RhbGwtZGF0YSwgaW5zdGFsbC1leGVjLCB1bmluc3RhbGwgaGFuZGxpbmcKCgkqIGNvbmZpZ3VyZS5pbjogVHVybiBvZmYgaTE4bgoKRnJpIE5vdiAyNCAyMzo1MTozNyAxOTk1ICBUb20gVHJvbWV5ICA8dHJvbWV5QGNhbWJyaWM+CgoJKiBhdXRvbWFrZS5pbiAoY29tbW9uKTogUmVtb3ZlIE5MUwoKCSogYXV0b21ha2UuaW4gKGNvbW1vbik6IEluY2x1ZGUgQUJPVVQtTkxTLgoKCSogYXV0b21ha2UuaW46IFRlc3QgZm9yIGluc3RhbGwtc2ggYW5kIG1raW5zdGFsbGRpcnMKCgkqIGF1dG9tYWtlLmluOiBCbGFuayBsaW5lIGFmdGVyIE9CSkVDVFM9IGxpbmUKCgkqIGF1dG9tYWtlLmluOiBTdGFydCBzdWJzaGVsbCBpbiBsb29wIGFmdGVyIGNoZWNrIGZvciBNYWtlZmlsZS5hbQoKCSogYXV0b21ha2UuaW46IC0tdXNlLWRlcHMgbm93IHRoZSBkZWZhdWx0CgoJKiBhdXRvbWFrZS5pbiAoYW1fZGlyKTogRG9uJ3QgYXBwbHkgdHJhbnNmb3JtIHRvIGluc3RhbGwgZGlyZWN0b3J5IG5hbWUKCgkqIHBhY2thZ2VkYXRhLmFtOiBEb24ndCBhcHBseSB0cmFuc2Zvcm0gdG8gaW5zdGFsbCBkaXJlY3RvcnkgbmFtZQoKCSogTWFrZWZpbGUuYW0gKFNVQkRJUlMpOiBIb2xkIG9mZiBvbiBpbnRlcm5hdGlvbmFsaXphdGlvbgoKVGh1IE5vdiAyMyAxODowMjozOCAxOTk1ICBUb20gVHJvbWV5ICA8dHJvbWV5QGNhbWJyaWM+CgoJKiBhdXRvbWFrZS5pbjoKCVdyaXRlICdTT1VSQ0VTID0nIGxpbmUgYWZ0ZXIgY29weWluZyBNYWtlZmlsZS5hbSB2YXJpYWJsZXMKCgkqIGF1dG9tYWtlLmluOiBGaXhlZCBidWcgaW4gIi0tIiBvcHRpb24gcHJvY2Vzc2luZwoKCSogc3ViZGlycy5hbTogKCQoUkVDVVJTSVZFKSk6IFJlbW92ZWQgdHJhaWxpbmcgXCBmcm9tIGxhc3QgbGluZQoKCSogTWFrZWZpbGUuYW0gKERJU1RfT1RIRVIpOiBJbmNsdWRlIGdldHRleHQtc2gKCgkqIE1ha2VmaWxlLmFtIChTVUJESVJTKTogRGVmaW5lCgoJKiBjb25maWd1cmUuaW46IEluY2x1ZGUgaW50ZXJuYXRpb25hbGl6YXRpb24gYml0cwoKCSogYXV0b21ha2UuaW46IE1hbnkgY2hhbmdlcyB0byBhdm9pZCBkb3VibGUtY29sb24gcnVsZXMuCgoJKiBzdWJkaXJzLmFtOiAoJChSRUNVUlNJVkUpKTogUHJpbnQgbmFtZSBvZiB0YXJnZXQgYWN0dWFsbHkgdXNlZAoKCSogc3ViZGlycy5hbTogUmVtb3ZlZCAiOjoiIHJ1bGVzCgoJKiBoZWFkZXIuYW06IFJlbW92ZWQgaW5zdGFsbCwgdW5pbnN0YWxsCgoJKiBoZWFkZXIuYW06IEFkZGVkIGluc3RhbGwsIHVuaW5zdGFsbCB0YXJnZXRzCgoJKiBoYWNrLW1ha2Uuc2VkOiBSZXdyaXRlIHRhcmdldHMgbGlrZSAiYWxsLWxvY2FsIiB0byAiYWxsX2xvY2FsIgoKCSogaGVhZGVyLmFtLCBsaWJyYXJpZXMuYW0sIG1hbnMuYW0sIHRleGluZm9zLmFtLCBmb290ZXIuYW06CglSZW1vdmVkICI6OiIgcnVsZXMKCgkqIE1ha2VmaWxlLmFtIChQQUNLQUdFREFUQSk6IEluY2x1ZGUgbGlic2NyaXB0cy5hbQoKCSogbGlicHJvZ3JhbXMuYW06IERvbid0IGluc3RhbGwgbGlic2NyaXB0cyBoZXJlCgoJKiBsaWJzY3JpcHRzLmFtOiBJbml0aWFsIHJldmlzaW9uCgoJKiBzY3JpcHRzLmFtLCBwcm9ncmFtcy5hbSwgbGlicHJvZ3JhbXMuYW06IFJlbW92ZWQgIjo6IiBydWxlcwoKCSogYXV0b21ha2UuaW4gKGFtX2Rpcik6IFJ1biBwYWNrYWdlIG5hbWUgdGhyb3VnaCBuYW1lIHRyYW5zZm9ybS4KCgkqIGF1dG9tYWtlLmluOiBEb24ndCB1c2UgcGFja2FnZWRhdGEuc2VkIG9yIGRhdGEuc2VkCgoJKiBNYWtlZmlsZS5hbSAoUEFDS0FHRURBVEEpOiBSZW1vdmVkIGRhdGEuc2VkLCBwYWNrYWdlZGF0YS5zZWQuICBBZGRlZAoJcGFja2FnZWRhdGEuYW0KCgkqIGRhdGEuYW06IE5vIGxvbmdlciBydW4gdGhyb3VnaCBzZWQKCgkqIHBhY2thZ2VkYXRhLmFtOiBJbml0aWFsIHJldmlzaW9uCgpXZWQgTm92IDIyIDIyOjMxOjAyIDE5OTUgIFRvbSBUcm9tZXkgIDx0cm9tZXlAY2FtYnJpYz4KCgkqIGF1dG9tYWtlLmluOiBObyBibGFuayBsaW5lIGFmdGVyIFVzYWdlCgoJKiBhdXRvbWFrZS5pbjogUmVtb3ZlZCAiTkxTIG51aXNhbmNlcyIgc2VjdGlvbi4KCU5vdyB1bmlmb3JtbHkgdXNlcyAkZWNobyBmb3IgdXNlci12aXNpYmxlIG1lc3NhZ2VzIChpbiBhZHZhbmNlIG9mCglpbnRlcm5hdGlvbmFsaXphdGlvbikKCgkqIHN1YmRpcnMuYW0gKG1haW50YWluZXItY2xlYW4pOiBEb24ndCB1c2UgcmVhbGNsZWFuLWxvY2FsCgoJKiBNYWtlZmlsZS5hbTogVXNlIFBBQ0tBR0VEQVRBLCBub3QgY3VzdG9tIGNvZGUKCgkqIGRhdGEuYW06IFVzZSBATE9OR0AsIG5vdCAkKEBMT05HQCkKCgkqIGF1dG9tYWtlLmluOiBIYW5kbGUgREFUQSBhbmQgUEFDS0FHRURBVEEKCgkqIHBhY2thZ2VkYXRhLnNlZDogSW5pdGlhbCByZXZpc2lvbgoKCSogZGF0YS5hbTogVXNlIEBESVJALCBub3QgJChARElSQCkKCgkqIGRhdGEuc2VkOiBVc2UgJChkYXRhZGlyKSwgbm90IGRhdGFkaXIKCgkqIGRhdGEuc2VkOiBJbml0aWFsIHJldmlzaW9uCgoJKiBkYXRhLmFtOiBXcm90ZSB1bmluc3RhbGwgdGFyZ2V0cwoKCSogZGF0YS5hbTogSW5pdGlhbCByZXZpc2lvbgoKCSogZGlzdC1zdWJkLmFtIChkaXN0KTogRG9uJ3QgbGluayBhIGZpbGUgdGhhdCBoYXMgYWxyZWFkeSBiZWVuIGxpbmtlZAoKCSogZGlzdC1zdWJkLXRvcC5hbSwgZGlzdC5hbSAoZGlzdCk6CglSdW4gYGF1dG9tYWtlIC0taW5jbHVkZS1kZXBzJyBiZWZvcmUgbWFraW5nIGRpc3RyaWJ1dGlvbgoKCSogYXV0b21ha2UuaW46IE1vcmUgZGVwZW5kZW5jeS10cmFja2luZyBidWcgZml4ZXMKCgkqIGRpc3QtdmFycy5hbSAoRElTVF9GSUxFUyk6IFJlYXJyYW5nZWQgdG8gYmUgbGlrZSBkaXN0LXZhcnMtc3ViZC5hbQoKCSogZGlzdC1zdWJkLXZhcnMuYW0gKERJU1RfRklMRVMpOiBJbmNsdWRlIERJU1RfQ09NTU9OCgoJKiB0YWdzLXN1YmQuYW0sIHRhZ3MuYW06IEFkZGVkIHRyYWlsaW5nIGJsYW5rIGxpbmUKCgkqIGRlcGVuZC5hbTogVXNlICIuUCIsIG5vdCAiZW1wdHkuUCIsIGFzIHBsYWNlaG9sZGVyLgoKCSogYXV0b21ha2UuaW46IE9ubHkgaW5jbHVkZSBkZXBlbmQuYW0gaWYgU09VUkNFUyBub3QgZW1wdHkKCgkqIGF1dG9tYWtlLmluOiBBZGRlZCAtLXVzZS1kZXBzIGFuZCAtLWluY2x1ZGUtZGVwcyBvcHRpb25zLgoJSGFuZGxlIGF1dG8tZ2VuZXJhdGluZyBkZXBlbmRlbmNpZXMuCgoJKiBNYWtlZmlsZS5hbSAoYW1fREFUQSk6IEluY2x1ZGUgZGVwZW5kLmFtCgoJKiBkZXBlbmQuYW06IEluaXRpYWwgcmV2aXNpb24KCgkqIGF1dG9tYWtlLmluOiBMb29rIGZvciBhY2NvbmZpZy5oLCBjb25maWcuaC50b3AsIGFuZCBjb25maWcuaC5ib3QKCgkqIGF1dG9tYWtlLmluOiBQdXQgYmxhbmsgbGluZSBhZnRlciAuU1VGRklYRVMKCgkqIHNjcmlwdHMuYW06IEFkZGVkIGJsYW5rIGxpbmUgYXQgZW5kCgoJKiBzY3JpcHRzLmFtOiBSZW1vdmVkIHVubmVjZXNzYXJ5IGNvbW1lbnQKCgkqIHNjcmlwdHMuYW06IFJlbW92ZWQgdW5uZWNlc3Nhcnkgd29ya2Fyb3VuZHMKCgkqIGF1dG9tYWtlLmluOiBEb24ndCBpbmNsdWRlIHByb2dyYW1zLmFtIGlmIFBST0dSQU1TIGVtcHR5CgoJKiBoZWFkZXItdmFycy5hbSAoSU5TVEFMTF9TQ1JJUFQpOiBUeXBvCgoJKiB0ZXhpbmZvcy5hbSwgY29tcGlsZS1rci5hbTogRG9uJ3QgaW5jbHVkZSAuU1VGRklYRVMKCgkqIGF1dG9tYWtlLmluOiBIYW5kbGUgLlNVRkZJWEVTIGhlcmUuCgoJKiBjb25maWd1cmUuaW46IFVzZSBmcF9QUk9HX0lOU1RBTEwKCgkqIGhlYWRlci12YXJzLmFtOiBDaGFuZ2VzIGZvciBhdXRvY29uZiAyLjUuCglOb3cgaW5jbHVkZXMgSU5TVEFMTF9TQ1JJUFRTLgoKCSogdGV4aW5mb3MuYW0gKGluc3RhbGwtaW5mbyk6IEJ1ZyBmaXgKCgkqIGF1dG9tYWtlLmluOgoJSW5jbHVkZSBzY3JpcHRzLmFtIG9yIGxpYnNjcmlwdHMuYW0gaW4gb3V0cHV0IGlmIGFwcHJvcHJpYXRlCgoJKiBwcm9ncmFtcy5hbSAoaW5zdGFsbC1wcm9ncmFtcywgdW5pbnN0YWxsLXByb2dyYW1zKToKCURvbid0IGluc3RhbGwgU0NSSVBUUwoKCSogTWFrZWZpbGUuYW0gKGFtX0RBVEEpOiBJbmNsdWRlIHNjcmlwdHMuYW0KCgkqIHNjcmlwdHMuYW06IEluaXRpYWwgcmV2aXNpb24KClR1ZSBOb3YgMjEgMDk6MTE6MzggMTk5NSAgVG9tIFRyb21leSAgPHRyb21leUBjYW1icmljPgoKCSogYXV0b21ha2UuaW46CglDbGVhbmVkIHVwIGhvdyAicHJvZ19TT1VSQ0VTIiB2YXJpYWJsZSBpcyBmb3VuZCBpbiBpbnB1dC4KCURpdHRvIHByb2dfT0JKRUNUUy4KCVB1dCBzdGF0aWMgc2VkIHNjcmlwdHMgaW50byBzZXBhcmF0ZSwgaW5zdGFsbGVkIGZpbGVzLgoKCSogTWFrZWZpbGUuYW0gKGFtX0RBVEEpOiBJbmNsdWRlIGhhY2stbWFrZS5zZWQgYW5kIG5sLXJlbW92ZS5zZWQKCgkqIGhhY2stbWFrZS5zZWQsIG5sLXJlbW92ZS5zZWQ6IEluaXRpYWwgcmV2aXNpb24KCgkqIHRleGluZm9zLmFtIChpbnN0YWxsLWluZm8pOiBSZXdyb3RlCgoJKiBzdWJkaXJzLmFtIChhbGwtcmVjdXJzaXZlKTogUHV0IHdpdGggb3RoZXIgLXJlY3Vyc2l2ZSBydWxlcwoKCSogY29uZmlndXJlLmluOiBWZXJzaW9uIDAuMjAKCgkqIGF1dG9tYWtlLmluOiBBbm90aGVyIGJ1ZyBmaXgKCgkqIGF1dG9tYWtlLmluOiBCdWcgZml4IHdoZW4gbG9va2luZyBmb3IgdGV4aW5mby50ZXgKCgkqIHRleGluZm8udGV4OiBJbml0aWFsIHJldmlzaW9uCgoJKiBhdXRvbWFrZS5pbjoKCUlmIFRFWElORk9TIGRlZmluZWQgYnV0IHRleGluZm8udGV4IGRvZXMgbm90IGV4aXN0LCBnaXZlIHdhcm5pbmcuCgoJKiBzdWJkaXJzLmFtIChhbGwpOiBSZW5hbWVkIGZyb20gX2FsbC4gIE5vdyB1c2VzIGFsbC1yZWN1cnNpdmUKCShhbGwtcmVjdXJzaXZlKTogRG9uJ3QgZmFpbCBpbW1lZGlhdGVseSBpZiAtayBzcGVjaWZpZWQuCgpNb24gTm92IDIwIDIyOjQ4OjAzIDE5OTUgIFRvbSBUcm9tZXkgIDx0cm9tZXlAY2FtYnJpYz4KCgkqIHN1YmRpcnMuYW0gKF9hbGwpOgoJTmV3IHRhcmdldC4gIE5vdyB1c2UgSmltIE1leWVyaW5nJ3MgZm9ybXVsYXRpb24gb2YgQUlYCgl3b3JrYXJvdW5kLgoJKGluc3RhbGwtZXhlYywgaW5zdGFsbC1kYXRhKTogTmV3IHRhcmdldHMKClNhdCBOb3YgMTggMTk6MDc6MzAgMTk5NSAgVG9tIFRyb21leSAgPHRyb21leUBjYW1icmljPgoKCSogcmVtYWtlLmFtIChNYWtlZmlsZS5pbik6IGF1dG9tYWtlICJNYWtlZmlsZSIsIG5vdCAiTWFrZWZpbGUuYW0iCgoJKiBhdXRvbWFrZS5pbjogVXNlIEBkYXRhZGlyQAoKCSogYXV0b21ha2UuaW46IEFkZGVkIEBjb25maWd1cmVfaW5wdXRAIGxpbmUKCkZyaSBOb3YgMTcgMjM6MzI6NDMgMTk5NSAgVG9tIFRyb21leSAgPHRyb21leUBjYW1icmljPgoKCSogYXV0b21ha2UuaW46ICItLWhlbHAiIG9wdGlvbiBub3cgcHJpbnRzIGF1dG8tcmVjb2duaXplZCBmaWxlIG5hbWVzLgoJQWxsb3cgQU1fIG92ZXJyaWRpbmcgb2YgbW9yZSB2YXJpYWJsZXMuCgoJKiB0ZXhpbmZvcy5hbSAoaW5zdGFsbC1pbmZvKToKCURvbid0IGNkIHRvIHNyY2RpciB0byBhdm9pZCBicmVha2luZyBpbnN0YWxsLXNoCglPdGhlciBidWcgZml4ZXMKCgkqIE1ha2VmaWxlLmFtOiBIYW5kbGUgYXV0b21ha2UudGV4aQoKVGh1IE5vdiAxNiAxODo0Mzo0MyAxOTk1ICBUb20gVHJvbWV5ICA8dHJvbWV5QGNhbWJyaWM+CgoJKiBzdWJkaXJzLmFtIChhbGwpOiBTZXBhcmF0ZWQgb3V0IGR1ZSB0byBBSVggMy4yLjUgYnVnLgoKCSogdGFncy5hbSAoVEFHUyk6IGJ1ZyBmaXgKCgkqIGF1dG9tYWtlLmluOiBVc2UgYW1fZGlyLCBub3QgQU1fRElSLgoJVXNlIHZlcnNpb24sIG5vdCBWRVJTSU9OLgoJQnVnIGZpeCBpbiBUQUdTIGNvZGUuCgoJKiBNYWtlZmlsZS5hbSAoYW1fREFUQSk6IEluY2x1ZGUgdGFncy5hbSBhbmQgdGFncy1zdWJkLmFtCgoJKiBzdWJkaXJzLmFtOiBUQUdTIHRhcmdldCBub3cgaW4gdGFncy5hbQoKCSogZm9vdGVyLmFtOiBUQUdTIGFuZCBJRCB0YXJnZXRzIG5vdyBpbiB0YWdzLXN1YmQuYW0KCgkqIHRhZ3Mtc3ViZC5hbSwgdGFncy5hbTogSW5pdGlhbCByZXZpc2lvbgoKCSogYXV0b21ha2UuaW46IENsZWFuZWQgdXAgQU1fUFJPR1JBTSBjb2RlLgoJSGFuZGxlIFRBR1MgdGFyZ2V0IGJldHRlcgoKCSogcmVtYWtlLmFtLCByZW1ha2Utc3ViZC5hbSAoTWFrZWZpbGUuaW4pOiBCdWcgZml4LgoKCSogYXV0b21ha2UuaW4gKHVzYWdlKTogVXBkYXRlZAoKCSogcmVtYWtlLXN1YmQuYW0sIHJlbWFrZS5hbToKCUFkZGVkIHJ1bGUgd2hlcmUgTWFrZWZpbGUuaW4gZGVwZW5kcyBvbiBNYWtlZmlsZS5hbQoKCSogYXV0b21ha2UuaW46IEVudGlyZSBib2R5IG9mICdmb3InIGxvb3Agbm93IGluIHN1YnNoZWxsCgoJKiBhdXRvbWFrZS5pbiAoY29tbW9uKTogY29uZmlnLmd1ZXNzIGFuZCBjb25maWcuc3ViIGFyZSBjb21tb24gZmlsZXMuCgoJKiBkaXN0LXN1YmQtdG9wLmFtLCBkaXN0LmFtIChkaXN0KTogQnVnIGZpeC4KCgkqIE1ha2VmaWxlLmFtIChESVNUX09USEVSKTogRG9uJ3QgaW5jbHVkZSBUT0RPCgoJKiBhdXRvbWFrZS5pbjogQXV0by1pbmNsdWRlIFRPRE8gYW5kIFRIQU5LUyBmaWxlcy4KCgkqIGRpc3Qtc3ViZC10b3AuYW0sIGRpc3QuYW0gKGRpc3QpOiBEb24ndCBkZXBlbmQgb24gRElTVF9ESVJTCgoJKiBhdXRvbWFrZS5pbjogTW9yZSBidWcgZml4ZXMgaW4gImxvb2sgZm9yIE1ha2VmaWxlLmFtIiBjb2RlLgoKCSogYXV0b21ha2UuaW46IEJ1ZyBmaXggaW4gImxvb2sgZm9yIE1ha2VmaWxlLmFtIiBjb2RlLgoKCSogYXV0b21ha2UuaW46CglJZiBubyBhcmd1bWVudHMgZ2l2ZW4sIGxvb2sgZm9yIGFsbCBNYWtlZmlsZS5hbSdzIGluIHRoaXMKCWRpcmVjdG9yeSBhbmQgaW4gaW1tZWRpYXRlIHN1YmRpcnMKCgkqIGF1dG9tYWtlLmluOiBCdWcgZml4ZXMgZm9yIExEQURELW92ZXJyaWRlIGZlYXR1cmUuCgoJKiBwcm9ncmFtLmFtOiBVc2UgQFBST0dSQU1AX0xEQURELCBhbmQgcHV0IGFmdGVyIExERkxBR1MKCgkqIGF1dG9tYWtlLmluOiBBbGxvdyBgcHJvZ19MREFERCcsIGlmIHNwZWNpZmllZCwgdG8gb3ZlcnJpZGUgTERBREQuCgoJKiBhdXRvbWFrZS5pbjogVXNlIEFNX1BST0dSQU1TLCBub3QgQUxMUFJPR1JBTVMsIGFuZCBpbnZlcnQgc2Vuc2UuCgoJKiBoZWFkZXItdmFycy5hbSAoQUxMKTogVXNlIFBST0dSQU1TLCBub3QgQUxMUFJPR1JBTVMuCgpXZWQgTm92IDE1IDAxOjU0OjQzIDE5OTUgIFRvbSBUcm9tZXkgIDx0cm9tZXlAY2FtYnJpYz4KCgkqIGF1dG9tYWtlLmluOiBObyBsb25nZXIgbG9vayBmb3IgX1NPVVJDRVMgb3IgX09CSkVDVFMKCgkqIGhlYWRlci12YXJzLmFtOgoJUmVtb3ZlICJhdXRvbWF0aWNhbGx5IGNyZWF0ZWQiIGhlYWRlciAobm93IGluIGF1dG9tYWtlKS4KCVVwZGF0ZWQgY29weXJpZ2h0LgoKCSogYXV0b21ha2UuaW46IFB1dCB2ZXJzaW9uIGluZm8gaW4gTWFrZWZpbGUgaGVhZGVyCgpUdWUgTm92IDE0IDIzOjM4OjE3IDE5OTUgIFRvbSBUcm9tZXkgIDx0cm9tZXlAY2FtYnJpYz4KCgkqIGF1dG9tYWtlLmluOiBNaW5vciBjbGVhbnVwcwoKCSogZGlzdC1zdWJkLXRvcC5hbSwgZGlzdC5hbSAoZGlzdCk6CglEb24ndCBsaW5rIG9yIGNvcHkgZmlsZSBpZiBpdCBhbHJlYWR5IGV4aXN0cy4KCgkqIGF1dG9tYWtlLmluOgoJTG9vayBmb3IgX1NPVVJDRVMgKGNvbW1vbiBzb3VyY2VzKSBhbmQgZ2VuZXJhdGUgX09CSkVDVFMuCgoJKiBmb290ZXIuYW0gKElELCBUQUdTKTogSW5jbHVkZSBIRUFERVJTCgoJKiBkaXN0LXZhcnMuYW0sIGRpc3Qtc3ViZC12YXJzLmFtIChESVNUX0ZJTEVTKTogSW5jbHVkZSBIRUFERVJTCgpNb24gTm92IDEzIDIyOjIwOjAyIDE5OTUgIFRvbSBUcm9tZXkgIDx0cm9tZXlAY2FtYnJpYz4KCgkqIGRpc3Qtc3ViZC5hbSAoZGlzdGRpcik6IElzIHJlbGF0aXZlIHRvICIuLiIKCgkqIGRpc3Qtc3ViZC12YXJzLmFtIChQQUNLQUdFLCBWRVJTSU9OKTogRGVmaW5lCgoJKiBkaXN0LXN1YmQuYW0gKGRpc3QpOiBEb24ndCBoYW5kbGUgRElTVF9ESVJTLgoKCSogbWFucy5hbSAodW5pbnN0YWxsLW1hbik6IEFub3RoZXIgYnVnIGZpeC4KCgkqIG1hbnMuYW0gKHVuaW5zdGFsbC1tYW4pOiBCdWcgZml4LgoKCSogZGlzdC5hbSwgZGlzdC1zdWJkLXRvcC5hbSAoZGlzdCk6IEJ1ZyBmaXgKCgkqIE1ha2VmaWxlLmFtIChESVNUX1NVQkRJUlMpOiBOZXcgbWFjcm8KCgkqIGRpc3Qtc3ViZC10b3AuYW0sIGRpc3QuYW0gKGRpc3QpOiBIYW5kbGUgRElTVF9TVUJESVJTCgoJKiBNYWtlZmlsZS5hbSAoRElTVF9PVEhFUik6IEluY2x1ZGUgYXV0b21ha2UuaW4KCgkqIE1ha2VmaWxlLmFtIChESVNUQ0xFQU5GSUxFUyk6IE5ldyBtYWNyby4KCgkqIGF1dG9tYWtlLmluIChjb21tb24pOiBJbmNsdWRlIENPUFlJTkcuTElCCgoJKiBNYWtlZmlsZS5hbSAoYXV0b21ha2UpOiBOZXcgcnVsZS4KCgkqIHRleGluZm9zLmFtIChpbnN0YWxsLWluZm8pOiBDaGFuZ2VkIHBlciBHTlUgc3RhbmRhcmRzCgoJKiByZW1ha2UtaGRyLmFtIChzdGFtcC1oLmluKToKCVVzZSAidG91Y2giLCBub3QgImRhdGUiLCBwZXIgR05VIHN0YW5kYXJkcy4KCgkqIGF1dG9tYWtlLmluIChjb21tb24pOiBJbmNsdWRlIHRleGluZm8udGV4CgpTdW4gTm92IDEyIDIzOjU5OjA4IDE5OTUgIFRvbSBUcm9tZXkgIDx0cm9tZXlAY2FtYnJpYz4KCgkqIGF1dG9tYWtlLmluOiBNb3JlIGZpeGVzIHdoZW4gZmluZGluZyBjb21tb24gZmlsZXMuCgoJKiBNYWtlZmlsZS5hbSAoRElTVF9PVEhFUik6IEFub3RoZXIgcmVtb3ZhbC4KCgkqIGF1dG9tYWtlLmluOiBTcGVjaWFsLWNhc2Ugd2hlbiBhbWRpcj0uCgoJKiBNYWtlZmlsZS5hbSAoRElTVF9PVEhFUik6IFJlbW92ZWQgYXV0by1kZXRlY3RlZCBmaWxlcy4KCgkqIGF1dG9tYWtlLmluOgoJU2VhcmNoIGZvciBjb21tb25seS11c2VkIGZpbGVzIGFuZCBhdXRvLWluY2x1ZGUgdGhlbSBpbiBkaXN0cmlidXRpb24KCgkqIGRpc3QtdmFycy5hbSAoRElTVF9GSUxFUyk6IEluY2x1ZGUgRElTVF9DT01NT04uCgkoRElTVF9DT05GKTogUmVtb3ZlZCBmaWxlcyBzZWFyY2hlZCBmb3IgYnkgYXV0b21ha2UuCgoJKiBhdXRvbWFrZS5pbjogTW9yZSBhcmctcGFyc2luZyBidWcgZml4ZXMuCgoJKiBNYWtlZmlsZS5hbSAoRElTVF9PVEhFUik6IEluY2x1ZGUgaW5zdGFsbC1zaAoKCSogTWFrZWZpbGUuYW0gKERJU1RfT1RIRVIpOiBEb24ndCBpbmNsdWRlIGF1dG8taW5jbHVkZWQgZmlsZXMuCgoJKiBhdXRvbWFrZS5pbjogQnVnIGZpeGVzIHRvIGFyZ3VtZW50IHBhcnNpbmcgY29kZS4KCgkqIGF1dG9tYWtlLmluOiBIYW5kbGUgLS12ZXJzaW9uIGFuZCAtLWhlbHAuCglOTFMgc3R1ZmYgZnJvbSBhdXRvY29uZi4KCgkqIE1ha2VmaWxlLmFtIChhbWRhdGFkaXIpOiBGaXhlZCB0eXBvLgoJKGluc3RhbGwpOiBNYWtlIGluc3RhbGwgZGlyZWN0b3JpZXMKCgkqIE1ha2VmaWxlLmFtOiBVc2UgImluc3RhbGw6OiIsIG5vdCAiaW5zdGFsbDoiCgoJKiBpbnN0YWxsLXNoLCBta2luc3RhbGxkaXJzOiBJbml0aWFsIHJldmlzaW9uCgoJKiBjb25maWd1cmUuaW46IFVzZSBBQ19QUk9HX0lOU1RBTEwKCgkqIGF1dG9tYWtlLmluOiBTZXQgQU1fRElSIGJhc2VkIG9uIGNvbmZpZ3VyZSByZXN1bHRzLgoKCSogTWFrZWZpbGUuYW0gKGluc3RhbGwpOiBOZXcgdGFyZ2V0LgoJKGFtZGF0YWRpcik6IE5ldyB2YXJpYWJsZS4KCgkqIGF1dG9tYWtlLmluOiBVc2UgIiMhIC8iLCBub3QgIiMhLyIuCgoJKiBNYWtlZmlsZS5hbSwgY29uZmlndXJlLmluOiBJbml0aWFsIHJldmlzaW9uCgoJKiBhdXRvbWFrZS5pbjogUmVuYW1lZCBmcm9tICJhdXRvbWFrZSIuCglTZXQgVkVSU0lPTi4KCgkqIGRpc3QuYW0gKFBBQ0tBR0UsIFZFUlNJT04pOiBOb3cgaW4gZGlzdC12YXJzLmFtCgoJKiBhdXRvbWFrZS5pbjogSW5zZXJ0IHJlbWFrZS1zdWJkLmFtIGlmIGFwcHJvcHJpYXRlLgoKCSogc3ViZGlycy5hbSAoVEFHUyk6IEluY2x1ZGUgJChDT05GSUdfSEVBREVSKSB3aGVuIG1ha2luZyB0YWdzLgoKCSogYXV0b21ha2UuaW46IEhhbmRsZSBBTExQUk9HUkFNUyB2YXJpYWJsZS4KCgkqIGhlYWRlci12YXJzLmFtIChBTEwpOiBVc2UgQUxMUFJPR1JBTVMsIG5vdCBQUk9HUkFNUy4KCgkqIGF1dG9tYWtlLmluOiBGaXhsZXQgd2hlbiBwcmludGluZyAic3ViZGlyPURJUiIKCgkqIGF1dG9tYWtlLmluOiBQdXQgInN1YmRpcj1ESVIiIGludG8gc3ViZGlyIE1ha2VmaWxlCgoJKiBhdXRvbWFrZS5pbjogRG9uJ3QgcmVmZXIgdG8gZGlzdG5hbWUuYW0uCglPbmx5IHB1dCBmb290ZXIuYW0gaW4gc3ViZGlyIE1ha2VmaWxlcy4KCgkqIHN1YmRpcnMuYW0gKGlkLCBJRCk6IE5ldyB0YXJnZXQuCgkoLk5PRVhQT1JUKTogQ29waWVkIGZyb20gZm9vdGVycy5hbS4KCgkqIHN1YmRpcnMuYW0gKFRBR1MpOiBCdWcgZml4ZXMuCgoJKiBzdWJkaXJzLmFtIChUQUdTKTogRG9uJ3QgZmFpbCBpZiBhIHN1YmRpciBkb2Vzbid0IGhhdmUgVEFHUyB0YXJnZXQuCgoJKiBzdWJkaXJzLmFtIChtYWludGFpbmVyLWNsZWFuLWxvY2FsKTogUmVtb3ZlIFRBR1MKCgkqIHN1YmRpcnMuYW0gKFRBR1MpOiBNYWtlIHRhZ3MgZmlsZSB0aGF0IGluY2x1ZGVzIGFsbCBzdWJkaXIgdGFncyBmaWxlcwoKCSogc3ViZGlycy5hbTogVXNlIG1haW50YWluZXItY2xlYW4sIHBlciBHTlUgc3RhbmRhcmRzCgoJKiBkaXN0LXN1YmQtdG9wLmFtOiBTb21lIHZhcmlhYmxlcyBkZWZpbmVkIGluIGRpc3QtdmFycy5hbQoKCSogZGlzdC12YXJzLmFtIChQQUNLQUdFLCBWRVJTSU9OKToKCU5ldyB2YXJpYWJsZXMsIGluaXRpYWxpemVkIGJ5IGNvbmZpZ3VyZQoKCSogZm9vdGVyLmFtIChpZCwgSUQpOiBOZXcgdGFyZ2V0cwoJKFRBR1MpOiBQdXQgVEFHUyBmaWxlIGluIGJ1aWxkLCBub3Qgc291cmNlLCBkaXJlY3RvcnkKCgkqIHJlbWFrZS1zdWJkLmFtIChNYWtlZmlsZSk6IERvbid0IGFzc3VtZSBzdWJkaXIgaXMgJ3NyYycKCgkqIGRpc3QuYW06IENoYW5nZWQgdG8gYXNzdW1lIFBBQ0tBR0UgYW5kIFZFUlNJT04gYXJlIHNldCBieSBjb25maWd1cmUuCgoJKiBkaXN0LXN1YmQuYW06IENoYW5nZWQgdG8gY29uZm9ybSB0byBuZXcgdG9wLWxldmVsIGRpc3QgdGFyZ2V0LgoKCSogZGlzdC1zdWJkLXRvcC5hbToKCUNoYW5nZWQgdG8gYXNzdW1lIFBBQ0tBR0UgYW5kIFZFUlNJT04gYXJlIHNldCBieSBjb25maWd1cmUuCgoJKiBjbGVhbi1rci5hbSwgY2xlYW4uYW0gKG1haW50YWluZXItY2xlYW4pOgoJVXBkYXRlZCBydWxlcyBwZXIgR05VIHN0YW5kYXJkcy4KCgkqIGNsZWFuLmFtLCBjbGVhbi1rci5hbSAobWFpbnRhaW5lci1jbGVhbik6IFJlbmFtZWQgZnJvbSByZWFsY2xlYW4uCgpTYXQgTm92ICA1IDE0OjM5OjUwIDE5OTQgIGRqbSAgPGRqbUBjYW1icmljPgoKCSogYXV0b21ha2UuaW4sIHRleGluZm9zLmFtOiBrbHVkZ2UgZm9yIG11bHRpcGxlLXBhcnQgaW5mbyBmaWxlcwoKVGh1IE5vdiAgMyAxMzozMzo0NCAxOTk0ICBkam0gIDxkam1AY2FtYnJpYz4KCgkqIGNsZWFuLmFtLCBjbGVhbi1rci5hbTogcmVtb3ZlIElORk9TCgpXZWQgTm92ICAyIDA2OjE1OjQyIDE5OTQgIGRqbSAgPGRqbUBjYW1icmljPgoKCSogdGV4aW5mb3MuYW06IGFkZCBwYXRoCgoJKiByZW1ha2UuYW0sIHJlbWFrZS1oZHIuYW06IGFjY291bnQgZm9yIFZQQVRIIGxpbWl0YXRpb25zCgpNb24gT2N0IDI0IDIzOjAxOjU5IDE5OTQgIGRqbSAgPGRqbUBjYW1icmljPgoKCSogYXV0b21ha2UuaW4sIGRpc3Qtc3ViZC10b3AuYW0sIGRpc3Qtc3ViZC5hbSwgZGlzdC5hbSwgaGVhZGVyLXZhcnMuYW0sIGxpYnByb2dyYW1zLmFtLCBwcm9ncmFtcy5hbToKCWhhbmRsZSBTQ1JJUFRTIGFuZCBMSUJTQ1JJUFRTIHNpbWlsYXIgdG8gUFJPR1JBTVMKClN1biBPY3QgMjMgMDE6NTA6NDEgMTk5NCAgZGptICA8ZGptQGNhbWJyaWM+CgoJKiB0ZXhpbmZvcy5hbTogaW5zdGFsbC1pbmZvIGRlcGVuZHMgb24gaW5mbyBmaWxlcwoKCSogZGlzdC1zdWJkLXZhcnMuYW0sIGRpc3QtdmFycy5hbTogZGlzdHJpYiBpbmZvIGZpbGVzCgpTdW4gT2N0ICAyIDAyOjAzOjA2IDE5OTQgIGRqbSAgPGRqbUBjYW1icmljPgoKCSogY2xlYW4ta3IuYW0sIGNsZWFuLmFtOiBmaXggdXAgZGlzdGNsZWFuCgoJKiBzdWJkaXJzLmFtOiBmaXggdHlwbwoKCSogY2xlYW4uYW06IGRvIG1vcmUgaW4gZGlzdGNsZWFuCgpTYXQgT2N0ICAxIDIzOjUyOjUxIDE5OTQgIGRqbSAgPGRqbUBjYW1icmljPgoKCSogbGlicmFyaWVzLmFtOiBtYWtlIGluc3RhbGwgZGVwZW5kIG9uIGFsbAoKCSogYXV0b21ha2UuaW46IGZpeCB0eXBvCgpXZWQgU2VwIDI4IDIxOjE1OjI2IDE5OTQgIGRqbSAgPGRqbUBjYW1icmljPgoKCSogZGlzdC1zdWJkLXZhcnMuYW0sIGRpc3QtdmFycy5hbSwgaGVhZGVyLXZhcnMuYW06IGZpeCBkb2MgYnVncwoKCSogYXV0b21ha2UuaW4sIGNvbXBpbGUtdmFycy5hbSwgZGlzdC5hbTogZml4IGRpc3QgZm9yIG5vIHN1YmRpcnMKCgkqIGRpc3Qtc3ViZC10b3AuYW06IEluaXRpYWwgcmV2aXNpb24KCgkqIGF1dG9tYWtlLmluLCBoZWFkZXItdmFycy5hbSwgbGlicmFyaWVzLXZhcnMuYW0sIG1hbnMtdmFycy5hbSwgdGV4aW5mb3MtdmFycy5hbToKCWNlbnRyYWxpemUgcHJlZml4IHZhciBzZXR0aW5nCgoJKiBoZWFkZXItdmFycy5hbTogc2V0IGFsbCB0aGUgc3RkIHZhcnMgYmFzZWQgb24gcHJlZml4CgpUdWUgU2VwIDI3IDAxOjMyOjIyIDE5OTQgIGRqbSAgPGRqbUBjYW1icmljPgoKCSogYXV0b21ha2UuaW46IGRvbid0IGFkZCBrciBzdHVmZiBpZiBub3QgbmVlZGVkCgoJKiBkaXN0LXZhcnMuYW06IGFkZCBjb25maWcgdmFycyB0byBkaXN0CgpNb24gU2VwIDI2IDIzOjA5OjA5IDE5OTQgIGRqbSAgPGRqbUBjYW1icmljPgoKCSogcHJvZ3JhbS5hbTogYWRkIExEQURECgoJKiBjb21waWxlLXZhcnMuYW06IHJlbW92ZSBMREFERCBmcm9tIExERkxBR1MKCgkqIGNsZWFuLmFtOiBtb3ZlIGtuciBzdHVmZiB0byBhbm90aGVyIGZpbGUKCgkqIGF1dG9tYWtlLmluOiB1c2UgZGlmZmVyZW50IGNsZWFuIGZpbGUgZm9yIGFuc2kya25yCgoJKiBjbGVhbi1rci5hbTogSW5pdGlhbCByZXZpc2lvbgoKVGh1IFNlcCAyMiAwMzo0NTowMiAxOTk0ICBkam0gIDxkam1AY2FtYnJpYz4KCgkqIGF1dG9tYWtlLmluLCBkaXN0LXN1YmQuYW0sIGRpc3QuYW06IGZpeCBydWxlcyBhbmQgZGlzdAoKVHVlIFNlcCAyMCAyMToyOTo0MCAxOTk0ICBkam0gIDxkam1AY2FtYnJpYz4KCgkqIGNvbXBpbGUuYW0sIGF1dG9tYWtlLmluOiBzcGxpdCBvdXQga25yCgoJKiBjb21waWxlLWtyLmFtOiBJbml0aWFsIHJldmlzaW9uCgoJKiBsaWJwcm9ncmFtcy5hbTogZml4IHR5cG8KCgkqIGF1dG9tYWtlLmluLCBjbGVhbi5hbSwgY29tcGlsZS12YXJzLmFtLCBoZWFkZXItdmFycy5hbSwgbGlicHJvZ3JhbXMuYW06CgltYWtlIGxpYnByb2dyYW1zIHdvcmsKCgkqIGxpYnByb2dyYW1zLmFtOiBJbml0aWFsIHJldmlzaW9uCgoJKiBhdXRvbWFrZS5pbiwgY29tcGlsZS5hbSwgaGVhZGVyLXZhcnMuYW06IGZpeCBsaXR0bGUgYnVncwoKCSogY29tcGlsZS5hbTogYWxsb3cgcGFyYWxsZWwgSyZSCgoJKiBjbGVhbi5hbTogcmVtb3ZlIGtlcmIgdGVtcHMKCgkqIGF1dG9tYWtlLmluOiBmaXggcmVjb2duaXppbmcgc3RhcnQgb2YgcnVsZXMKCgkqIGRpc3Qtc3ViZC5hbSwgZGlzdC5hbTogZml4IGRpc3QKCgkqIGF1dG9tYWtlLmluLCBjb21waWxlLmFtLCBmb290ZXIuYW0sIHRleGluZm9zLmFtOiBmaXggYW5zaTJrbnIKCk1vbiBTZXAgMTkgMjM6Mzk6MjEgMTk5NCAgZGptICA8ZGptQGNhbWJyaWM+CgoJKiBhdXRvbWFrZS5pbjogd29ya3Mgb24gbTQgdG9vCgoJKiBhdXRvbWFrZS5pbiwgbWFucy5hbTogd29ya3Mgb24gZmlsZXV0aWxzCgoJKiBhdXRvbWFrZS5pbiwgY2xlYW4uYW0sIGNvbXBpbGUuYW0sIGRpc3Qtc3ViZC5hbSwgZGlzdC5hbSwgZm9vdGVyLmFtLCBoZWFkZXItdmFycy5hbSwgaGVhZGVyLmFtLCBsaWJyYXJpZXMuYW0sIGxpYnJhcnkuYW0sIG1hbnMtdmFycy5hbSwgbWFucy5hbSwgcHJvZ3JhbXMuYW0sIHJlbWFrZS1oZHIuYW0sIHJlbWFrZS1zdWJkLmFtLCByZW1ha2UuYW0sIHN1YmRpcnMuYW0sIHRleGluZm9zLmFtOgoJd29ya3Mgb24gZmlsZXV0aWxzIGV4Y2VwdCBmb3IgYWxsCgoJKiBhdXRvbWFrZS5pbjogdmFycyB0aGluZwoKCSogaGVhZGVyLXZhcnMuYW06IEluaXRpYWwgcmV2aXNpb24KCgkqIHRleGluZm9zLXZhcnMuYW0sIG1hbnMtdmFycy5hbSwgbGlicmFyaWVzLXZhcnMuYW0sIGRpc3QtdmFycy5hbSwgZGlzdC1zdWJkLXZhcnMuYW06CgllbnRlcmVkIGludG8gUkNTCgoJKiBjb21waWxlLXZhcnMuYW06IEluaXRpYWwgcmV2aXNpb24KCgkqIGF1dG9tYWtlLmluOiBtYW55IGltcHJvdmVtZW50cwoKCSogZm9vdGVyLmFtOiBJbml0aWFsIHJldmlzaW9uCgoJKiBkaXN0LmFtOiByZW1vdmUgZGlzdG5hbWUKCgkqIGF1dG9tYWtlLmluOiBuYW1lc3BhY2UgY2xlYW51cAoKCSogZGlzdG5hbWUuYW06IEluaXRpYWwgcmV2aXNpb24KCgkqIGF1dG9tYWtlLmluLCBjbGVhbi5hbSwgY29tcGlsZS5hbSwgZGlzdC1zdWJkLmFtLCBkaXN0LmFtLCBoZWFkZXIuYW0sIGxpYnJhcmllcy5hbSwgbGlicmFyeS5hbSwgbWFucy5hbSwgcHJvZ3JhbS5hbSwgcHJvZ3JhbXMuYW0sIHJlbWFrZS1oZHIuYW0sIHJlbWFrZS5hbSwgc3ViZGlycy5hbSwgdGV4aW5mb3MuYW06CgltaWdodCB3b3JrCgoJKiBtYW5zLmFtLCBsaWJyYXJpZXMuYW0sIHRleGluZm9zLmFtLCBsaWJyYXJ5LmFtLCBjb21waWxlLmFtLCBwcm9ncmFtLmFtLCBwcm9ncmFtcy5hbSwgY2xlYW4uYW0sIHN1YmRpcnMuYW0sIHJlbWFrZS1zdWJkLmFtLCByZW1ha2UuYW0sIHJlbWFrZS1oZHIuYW0sIGRpc3QuYW0sIGRpc3Qtc3ViZC5hbSwgaGVhZGVyLmFtLCBhdXRvbWFrZS5pbjoKCUluaXRpYWwgcmV2aXNpb24KCgotLS0tLQoKQ29weXJpZ2h0IDE5OTQsIDE5OTUsIDE5OTYgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCgpDb3B5aW5nIGFuZCBkaXN0cmlidXRpb24gb2YgdGhpcyBmaWxlLCB3aXRoIG9yIHdpdGhvdXQgbW9kaWZpY2F0aW9uLCBhcmUKcGVybWl0dGVkIHByb3ZpZGVkIHRoZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIG5vdGljZSBhcmUgcHJlc2VydmVkLgo=