ZGlmZiAtLWdpdCBhL3J1bnRpbWUvZG9jL2F1dG9jbWQudHh0IGIvcnVudGltZS9kb2MvYXV0b2NtZC50eHQKaW5kZXggMmUzYTQ3Yi4uMTQ2MDVlOCAxMDA2NDQKLS0tIGEvcnVudGltZS9kb2MvYXV0b2NtZC50eHQKKysrIGIvcnVudGltZS9kb2MvYXV0b2NtZC50eHQKQEAgLTEsNCArMSw0IEBACi0qYXV0b2NtZC50eHQqICAgRm9yIFZpbSB2ZXJzaW9uIDcuMGFhLiAgTGFzdCBjaGFuZ2U6IDIwMDQgSnVsIDAxCisqYXV0b2NtZC50eHQqICAgRm9yIFZpbSB2ZXJzaW9uIDcuMGFhLiAgTGFzdCBjaGFuZ2U6IDIwMDQgQXVnIDMwCiAKIAogCQkgIFZJTSBSRUZFUkVOQ0UgTUFOVUFMICAgIGJ5IEJyYW0gTW9vbGVuYWFyCkBAIC0yNCwxMCArMjQsMTAgQEAKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogMS4gSW50cm9kdWN0aW9uCQkJCQkJKmF1dG9jbWQtaW50cm8qCiAKLVlvdSBjYW4gc3BlY2lmeSBjb21tYW5kcyB0byBiZSBleGVjdXRlZCBhdXRvbWF0aWNhbGx5IGZvciB3aGVuIHJlYWRpbmcgb3IKLXdyaXRpbmcgYSBmaWxlLCB3aGVuIGVudGVyaW5nIG9yIGxlYXZpbmcgYSBidWZmZXIgb3Igd2luZG93LCBhbmQgd2hlbiBleGl0aW5nCi1WaW0uICBGb3IgZXhhbXBsZSwgeW91IGNhbiBjcmVhdGUgYW4gYXV0b2NvbW1hbmQgdG8gc2V0IHRoZSAnY2luZGVudCcgb3B0aW9uCi1mb3IgZmlsZXMgbWF0Y2hpbmcgKi5jLiAgWW91IGNhbiBhbHNvIHVzZSBhdXRvY29tbWFuZHMgdG8gaW1wbGVtZW50IGFkdmFuY2VkCitZb3UgY2FuIHNwZWNpZnkgY29tbWFuZHMgdG8gYmUgZXhlY3V0ZWQgYXV0b21hdGljYWxseSB3aGVuIHJlYWRpbmcgb3Igd3JpdGluZworYSBmaWxlLCB3aGVuIGVudGVyaW5nIG9yIGxlYXZpbmcgYSBidWZmZXIgb3Igd2luZG93LCBhbmQgd2hlbiBleGl0aW5nIFZpbS4KK0ZvciBleGFtcGxlLCB5b3UgY2FuIGNyZWF0ZSBhbiBhdXRvY29tbWFuZCB0byBzZXQgdGhlICdjaW5kZW50JyBvcHRpb24gZm9yCitmaWxlcyBtYXRjaGluZyAqLmMuICBZb3UgY2FuIGFsc28gdXNlIGF1dG9jb21tYW5kcyB0byBpbXBsZW1lbnQgYWR2YW5jZWQKIGZlYXR1cmVzLCBzdWNoIGFzIGVkaXRpbmcgY29tcHJlc3NlZCBmaWxlcyAoc2VlIHxnemlwLWV4YW1wbGV8KS4gIFRoZSB1c3VhbAogcGxhY2UgdG8gcHV0IGF1dG9jb21tYW5kcyBpcyBpbiB5b3VyIC52aW1yYyBvciAuZXhyYyBmaWxlLgogCmRpZmYgLS1naXQgYS9ydW50aW1lL2RvYy9lZGl0aW5nLnR4dCBiL3J1bnRpbWUvZG9jL2VkaXRpbmcudHh0CmluZGV4IDRmNTZkZmUuLjQyZmE4YmEgMTAwNjQ0Ci0tLSBhL3J1bnRpbWUvZG9jL2VkaXRpbmcudHh0CisrKyBiL3J1bnRpbWUvZG9jL2VkaXRpbmcudHh0CkBAIC0xLDQgKzEsNCBAQAotKmVkaXRpbmcudHh0KiAgIEZvciBWaW0gdmVyc2lvbiA3LjBhYS4gIExhc3QgY2hhbmdlOiAyMDA0IEp1bCAwNAorKmVkaXRpbmcudHh0KiAgIEZvciBWaW0gdmVyc2lvbiA3LjBhYS4gIExhc3QgY2hhbmdlOiAyMDA0IEF1ZyAyOQogCiAKIAkJICBWSU0gUkVGRVJFTkNFIE1BTlVBTCAgICBieSBCcmFtIE1vb2xlbmFhcgpAQCAtMjksMTYgKzI5LDI2IEBACiAJCQkJCQkJKmN1cnJlbnQtZmlsZSoKIEFzIGxvbmcgYXMgeW91IGRvbid0IHdyaXRlIHRoZSBidWZmZXIsIHRoZSBvcmlnaW5hbCBmaWxlIHJlbWFpbnMgdW5jaGFuZ2VkLgogSWYgeW91IHN0YXJ0IGVkaXRpbmcgYSBmaWxlIChyZWFkIGEgZmlsZSBpbnRvIHRoZSBidWZmZXIpLCB0aGUgZmlsZSBuYW1lIGlzCi1yZW1lbWJlcmVkIGFzIHRoZSAiY3VycmVudCBmaWxlIG5hbWUiLgorcmVtZW1iZXJlZCBhcyB0aGUgImN1cnJlbnQgZmlsZSBuYW1lIi4gIFRoaXMgaXMgYWxzbyBrbm93biBhcyB0aGUgbmFtZSBvZiB0aGUKK2N1cnJlbnQgYnVmZmVyLgogCiAJCQkJCQkJKmFsdGVybmF0ZS1maWxlKgogSWYgdGhlcmUgYWxyZWFkeSB3YXMgYSBjdXJyZW50IGZpbGUgbmFtZSwgdGhlbiB0aGF0IG9uZSBiZWNvbWVzIHRoZSBhbHRlcm5hdGUKLWZpbGUgbmFtZS4gIEFsbCBmaWxlIG5hbWVzIGFyZSByZW1lbWJlcmVkIGluIHRoZSBmaWxlIGxpc3QuICBXaGVuIHlvdSBlbnRlciBhCi1maWxlIG5hbWUsIGZvciBlZGl0aW5nIChlLmcuLCB3aXRoICI6ZSBmaWxlbmFtZSIpIG9yIHdyaXRpbmcgKGUuZy4sIHdpdGggKDp3Ci1maWxlIG5hbWUiKSwgdGhlIGZpbGUgbmFtZSBpcyBhZGRlZCB0byB0aGUgbGlzdC4gIFlvdSBjYW4gdXNlIHRoaXMgbGlzdCB0bwotcmVtZW1iZXIgd2hpY2ggZmlsZXMgeW91IGVkaXRlZCBhbmQgdG8gcXVpY2tseSBzd2l0Y2ggZnJvbSBvbmUgZmlsZSB0bwotYW5vdGhlciB3aXRoIHRoZSBDVFJMLV4gY29tbWFuZCAoZS5nLiwgdG8gY29weSB0ZXh0KS4gIEZpcnN0IHR5cGUgdGhlIG51bWJlcgotb2YgdGhlIGZpbGUgYW5kIHRoZW4gaGl0IENUUkwtXi4gIHtWaTogb25seSBvbmUgYWx0ZXJuYXRlIGZpbGUgbmFtZX0KK2ZpbGUgbmFtZS4gIEl0IGNhbiBsYXRlciBiZSB1c2VkIHdpdGggIiMiIG9uIHRoZSBjb21tYW5kIGxpbmUgfDpfI3wuICBIb3dldmVyLAordGhlIGFsdGVybmF0ZSBmaWxlIG5hbWUgaXMgbm90IGNoYW5nZWQgd2hlbiB8OmtlZXBhbHR8IGlzIHVzZWQuCisKKwkJCQkJCQkqOmtlZXBhbHQqICo6a2VlcGEqCis6a2VlcGFsdCB7Y21kfQkJRXhlY3V0ZSB7Y21kfSB3aGlsZSBrZWVwaW5nIHRoZSBjdXJyZW50IGFsdGVybmF0ZSBmaWxlCisJCQluYW1lLiAgTm90ZSB0aGF0IGNvbW1hbmRzIGludm9rZWQgaW5kaXJlY3RseSAoZS5nLiwKKwkJCXdpdGggYSBmdW5jdGlvbikgbWF5IHN0aWxsIHNldCB0aGUgYWx0ZXJuYXRlIGZpbGUKKwkJCW5hbWUuICB7bm90IGluIFZpfQorCitBbGwgZmlsZSBuYW1lcyBhcmUgcmVtZW1iZXJlZCBpbiB0aGUgZmlsZSBsaXN0LiAgV2hlbiB5b3UgZW50ZXIgYSBmaWxlIG5hbWUsCitmb3IgZWRpdGluZyAoZS5nLiwgd2l0aCAiOmUgZmlsZW5hbWUiKSBvciB3cml0aW5nIChlLmcuLCB3aXRoICg6dyBmaWxlIG5hbWUiKSwKK3RoZSBmaWxlIG5hbWUgaXMgYWRkZWQgdG8gdGhlIGxpc3QuICBZb3UgY2FuIHVzZSB0aGlzIGxpc3QgdG8gcmVtZW1iZXIgd2hpY2gKK2ZpbGVzIHlvdSBlZGl0ZWQgYW5kIHRvIHF1aWNrbHkgc3dpdGNoIGZyb20gb25lIGZpbGUgdG8gYW5vdGhlciB3aXRoIHRoZQorQ1RSTC1eIGNvbW1hbmQgKGUuZy4sIHRvIGNvcHkgdGV4dCkuICBGaXJzdCB0eXBlIHRoZSBudW1iZXIgb2YgdGhlIGZpbGUgYW5kCit0aGVuIGhpdCBDVFJMLV4uICB7Vmk6IG9ubHkgb25lIGFsdGVybmF0ZSBmaWxlIG5hbWV9CiAKIENUUkwtRwkJb3IJCQkJKkNUUkwtRyogKjpmKiAqOmZpKiAqOmZpbGUqCiA6ZltpbGVdCQkJUHJpbnRzIHRoZSBjdXJyZW50IGZpbGUgbmFtZSAoYXMgdHlwZWQpLCB0aGUKZGlmZiAtLWdpdCBhL3J1bnRpbWUvZG9jL2V2YWwudHh0IGIvcnVudGltZS9kb2MvZXZhbC50eHQKaW5kZXggYzI3N2RkZS4uMGI3NTdmMyAxMDA2NDQKLS0tIGEvcnVudGltZS9kb2MvZXZhbC50eHQKKysrIGIvcnVudGltZS9kb2MvZXZhbC50eHQKQEAgLTEsNCArMSw0IEBACi0qZXZhbC50eHQqICAgICAgRm9yIFZpbSB2ZXJzaW9uIDcuMGFhLiAgTGFzdCBjaGFuZ2U6IDIwMDQgSnVsIDI1CisqZXZhbC50eHQqICAgICAgRm9yIFZpbSB2ZXJzaW9uIDcuMGFhLiAgTGFzdCBjaGFuZ2U6IDIwMDQgQXVnIDMwCiAKIAogCQkgIFZJTSBSRUZFUkVOQ0UgTUFOVUFMICAgIGJ5IEJyYW0gTW9vbGVuYWFyCkBAIC0yMjMxLDggKzIyMzEsOSBAQAogPAogCQkJCQkJCSpyZW1vdGVfc2VuZCgpKiAqRTI0MSoKIHJlbW90ZV9zZW5kKHtzZXJ2ZXJ9LCB7c3RyaW5nfSBbLCB7aWR2YXJ9XSkKLQkJU2VuZCB0aGUge3N0cmluZ30gdG8ge3NlcnZlcn0uICBUaGUgc3RyaW5nIGlzIHNlbnQgYXMKLQkJaW5wdXQga2V5cyBhbmQgdGhlIGZ1bmN0aW9uIHJldHVybnMgaW1tZWRpYXRlbHkuCisJCVNlbmQgdGhlIHtzdHJpbmd9IHRvIHtzZXJ2ZXJ9LiAgVGhlIHN0cmluZyBpcyBzZW50IGFzIGlucHV0CisJCWtleXMgYW5kIHRoZSBmdW5jdGlvbiByZXR1cm5zIGltbWVkaWF0ZWx5LiAgQXQgdGhlIFZpbSBzZXJ2ZXIKKwkJdGhlIGtleXMgYXJlIG5vdCBtYXBwZWQgfDptYXB8LgogCQlJZiB7aWR2YXJ9IGlzIHByZXNlbnQsIGl0IGlzIHRha2VuIGFzIHRoZSBuYW1lIG9mIGEKIAkJdmFyaWFibGUgYW5kIGEge3NlcnZlcmlkfSBmb3IgbGF0ZXIgdXNlIHdpdGgKIAkJcmVtb3RlX3JlYWQoKSBpcyBzdG9yZWQgdGhlcmUuCkBAIC0yNTU4LDYgKzI1NTksNyBAQAogCQl7aGF5c3RhY2t9LiBUaGUgc2VhcmNoIGlzIGRvbmUgY2FzZS1zZW5zaXRpdmUuIEZvciBhZHZhbmNlZAogCQlzZWFyY2hlcyB1c2UgfG1hdGNoKCl8LgogCQlJZiB0aGUge25lZWRsZX0gZG9lcyBub3Qgb2NjdXIgaW4ge2hheXN0YWNrfSBpdCByZXR1cm5zIC0xLgorCQlJZiB0aGUge25lZWRsZX0gaXMgZW1wdHkgdGhlIGxlbmd0aCBvZiB7aGF5c3RhY2t9IGlzIHJldHVybmVkLgogCQlTZWUgYWxzbyB8c3RyaWR4KCl8LiBFeGFtcGxlczogPgogCQkgIDplY2hvIHN0cnJpZHgoImFuIGFuZ3J5IGFybWFkaWxsbyIsICJhbiIpCSAgICAgMwogPApkaWZmIC0tZ2l0IGEvcnVudGltZS9kb2MvZmlsZXR5cGUudHh0IGIvcnVudGltZS9kb2MvZmlsZXR5cGUudHh0CmluZGV4IDIxYzQ4ZDMuLmE0Y2M1OTMgMTAwNjQ0Ci0tLSBhL3J1bnRpbWUvZG9jL2ZpbGV0eXBlLnR4dAorKysgYi9ydW50aW1lL2RvYy9maWxldHlwZS50eHQKQEAgLTEsNCArMSw0IEBACi0qZmlsZXR5cGUudHh0KiAgRm9yIFZpbSB2ZXJzaW9uIDcuMGFhLiAgTGFzdCBjaGFuZ2U6IDIwMDQgSnVuIDI0CisqZmlsZXR5cGUudHh0KiAgRm9yIFZpbSB2ZXJzaW9uIDcuMGFhLiAgTGFzdCBjaGFuZ2U6IDIwMDQgQXVnIDMxCiAKIAogCQkgIFZJTSBSRUZFUkVOQ0UgTUFOVUFMICAgIGJ5IEJyYW0gTW9vbGVuYWFyCkBAIC04Miw2ICs4Miw5IEBACiBUaGUgZmlsZXR5cGUgZGV0ZWN0aW9uIGlzIG5vdCBzd2l0Y2hlZCBvZmYgdGhlbi4gIEJ1dCBpZiB5b3UgZG8gc3dpdGNoIG9mZgogZmlsZXR5cGUgZGV0ZWN0aW9uLCB0aGUgaW5kZW50IGZpbGVzIHdpbGwgbm90IGJlIGxvYWRlZCBlaXRoZXIuCiBUaGlzIGFjdHVhbGx5IGxvYWRzIHRoZSBmaWxlICJpbmRvZmYudmltIiBpbiAncnVudGltZXBhdGgnLgorVGhpcyBkaXNhYmxlcyBhdXRvLWluZGVudGluZyBmb3IgZmlsZXMgeW91IHdpbGwgb3Blbi4gIEl0IHdpbGwga2VlcCB3b3JraW5nIGluCithbHJlYWR5IG9wZW5lZCBmaWxlcy4gIFJlc2V0ICdhdXRvaW5kZW50JywgJ2NpbmRlbnQnLCAnc21hcnRpbmRlbnQnIGFuZC9vcgorJ2luZGVudGV4cHInIHRvIGRpc2FibGUgaW5kZW50aW5nIGluIGFuIG9wZW5lZCBmaWxlLgogCiAJCQkJCQkqOmZpbGV0eXBlLW9mZioKIFRvIGRpc2FibGUgZmlsZSB0eXBlIGRldGVjdGlvbiwgdXNlIHRoaXMgY29tbWFuZDogPgpAQCAtMTQ3LDcgKzE1MCw3IEBACiBUaGlzIG1lYW5zIHRoYXQgdGhlIGNvbnRlbnRzIG9mIGNvbXByZXNzZWQgZmlsZXMgYXJlIG5vdCBpbnNwZWN0ZWQuCiAKIAkJCQkJCQkqbmV3LWZpbGV0eXBlKgotSWYgYSBmaWxlIHR5cGUgdGhhdCB5b3Ugd2FudCB0byB1c2UgaXMgbm90IGRldGVjdGVkIHlldCwgdGhlcmUgYXJlIHRocmVlIHdheXMKK0lmIGEgZmlsZSB0eXBlIHRoYXQgeW91IHdhbnQgdG8gdXNlIGlzIG5vdCBkZXRlY3RlZCB5ZXQsIHRoZXJlIGFyZSBmb3VyIHdheXMKIHRvIGFkZCBpdC4gIEluIGFueSB3YXksIGl0J3MgYmV0dGVyIG5vdCB0byBtb2RpZnkgdGhlICRWSU1SVU5USU1FL2ZpbGV0eXBlLnZpbQogZmlsZS4gIEl0IHdpbGwgYmUgb3ZlcndyaXR0ZW4gd2hlbiBpbnN0YWxsaW5nIGEgbmV3IHZlcnNpb24gb2YgVmltLgogCkBAIC0xNTUsNyArMTU4LDcgQEAKICAgIFRoaXMgd29ya3MgYnkgd3JpdGluZyBvbmUgZmlsZSBmb3IgZWFjaCBmaWxldHlwZS4gIFRoZSBkaXNhZHZhbnRhZ2UgaXMgdGhhdAogICAgbWVhbnMgdGhlcmUgY2FuIGJlIG1hbnkgZmlsZXMuICBUaGUgYWR2YW50YWdlIGlzIHRoYXQgeW91IGNhbiBzaW1wbHkgZHJvcAogICAgdGhpcyBmaWxlIGluIHRoZSByaWdodCBkaXJlY3RvcnkgdG8gbWFrZSBpdCB3b3JrLgotCisJCQkJCQkJKmZ0ZGV0ZWN0KgogICAgMS4gQ3JlYXRlIHlvdXIgdXNlciBydW50aW1lIGRpcmVjdG9yeS4gIFlvdSB3b3VsZCBub3JtYWxseSB1c2UgdGhlIGZpcnN0CiAgICAgICBpdGVtIG9mIHRoZSAncnVudGltZXBhdGgnIG9wdGlvbi4gIFRoZW4gY3JlYXRlIHRoZSBkaXJlY3RvcnkgImZ0ZGV0ZWN0IgogICAgICAgaW5zaWRlIGl0LiAgRXhhbXBsZSBmb3IgVW5peDogPgpkaWZmIC0tZ2l0IGEvcnVudGltZS9kb2MvaWZfcGVybC50eHQgYi9ydW50aW1lL2RvYy9pZl9wZXJsLnR4dAppbmRleCA4ODJjZDZhLi4wZDYyN2RhIDEwMDY0NAotLS0gYS9ydW50aW1lL2RvYy9pZl9wZXJsLnR4dAorKysgYi9ydW50aW1lL2RvYy9pZl9wZXJsLnR4dApAQCAtMSw0ICsxLDQgQEAKLSppZl9wZXJsLnR4dCogICBGb3IgVmltIHZlcnNpb24gNy4wYWEuICBMYXN0IGNoYW5nZTogMjAwNCBNYXkgMDEKKyppZl9wZXJsLnR4dCogICBGb3IgVmltIHZlcnNpb24gNy4wYWEuICBMYXN0IGNoYW5nZTogMjAwNCBBdWcgMzAKIAogCiAJCSAgVklNIFJFRkVSRU5DRSBNQU5VQUwgICAgYnkgU3ZlbiBWZXJkb29sYWVnZQpAQCAtMTU2LDYgKzE1Niw4IEBACiAJCQludW1iZXJzIHtibn0sIHJldHVybnMgYSBsaXN0IG9mIHRoZSBidWZmZXJzIG1hdGNoaW5nCiAJCQl7Ym59LCB1c2luZyB0aGUgc2FtZSBydWxlcyBhcyBWaW0ncyBpbnRlcm5hbAogCQkJfGJ1Zm5hbWUoKXwgZnVuY3Rpb24uCisJCQlXQVJOSU5HOiB0aGUgbGlzdCBiZWNvbWVzIGludmFsaWQgd2hlbiB8OmJ3aXBlfCBpcworCQkJdXNlZC4gIFVzaW5nIGl0IGFueXdheSBtYXkgY3Jhc2ggVmltLgogCiAJCQkJCQkJKnBlcmwtV2luZG93cyoKIFZJTTo6V2luZG93cyhbe3dufS4uLl0pCVdpdGggbm8gYXJndW1lbnRzLCByZXR1cm5zIGEgbGlzdCBvZiBhbGwgdGhlIHdpbmRvd3MKQEAgLTE2Myw2ICsxNjUsOCBAQAogCQkJaW4gYSBzY2FsYXIgY29udGV4dC4gIEZvciBhIGxpc3Qgb2Ygd2luZG93IG51bWJlcnMKIAkJCXt3bn0sIHJldHVybnMgYSBsaXN0IG9mIHRoZSB3aW5kb3dzIHdpdGggdGhvc2UKIAkJCW51bWJlcnMuCisJCQlXQVJOSU5HOiB0aGUgbGlzdCBiZWNvbWVzIGludmFsaWQgd2hlbiBhIHdpbmRvdyBpcworCQkJY2xvc2VkLiAgVXNpbmcgaXQgYW55d2F5IG1heSBjcmFzaCBWaW0uCiAKIAkJCQkJCQkqcGVybC1Eb0NvbW1hbmQqCiBWSU06OkRvQ29tbWFuZCh7Y21kfSkJRXhlY3V0ZXMgRXggY29tbWFuZCB7Y21kfS4KZGlmZiAtLWdpdCBhL3J1bnRpbWUvZG9jL2luZGVudC50eHQgYi9ydW50aW1lL2RvYy9pbmRlbnQudHh0CmluZGV4IGZkOTRkMzIuLjVmYzdiMDYgMTAwNjQ0Ci0tLSBhL3J1bnRpbWUvZG9jL2luZGVudC50eHQKKysrIGIvcnVudGltZS9kb2MvaW5kZW50LnR4dApAQCAtMSw0ICsxLDQgQEAKLSppbmRlbnQudHh0KiAgICBGb3IgVmltIHZlcnNpb24gNy4wYWEuICBMYXN0IGNoYW5nZTogMjAwNCBKdWwgMDcKKyppbmRlbnQudHh0KiAgICBGb3IgVmltIHZlcnNpb24gNy4wYWEuICBMYXN0IGNoYW5nZTogMjAwNCBTZXAgMDIKIAogCiAJCSAgVklNIFJFRkVSRU5DRSBNQU5VQUwgICAgYnkgQnJhbSBNb29sZW5hYXIKQEAgLTUxOSw0ICs1MTksMTUgQEAKIAogTWFrZSBzdXJlIHRvIGRvICI6c2V0IGNtZGhlaWdodD0yIiBmaXJzdCB0byBhbGxvdyB0aGUgZGlzcGxheSBvZiB0aGUgbWVzc2FnZS4KIAorCitWSU0JCQkJCQkJKnZpbS1pbmRlbnQqCisKK0ZvciBpbmRlbnRpbmcgVmltIHNjcmlwdHMgdGhlcmUgaXMgb25lIHZhcmlhYmxlIHRoYXQgc3BlY2lmaWVzIHRoZSBhbW91bnQgb2YKK2luZGVudCBmb3IgYSBjb250aW51YXRpb24gbGluZSwgYSBsaW5lIHRoYXQgc3RhcnRzIHdpdGggYSBiYWNrc2xhc2g6ID4KKworCTpsZXQgZzp2aW1faW5kZW50X2NvbnQgPSAmc3cgKiAzCisKK1RocmVlIHRpbWVzIHNoaWZ0d2lkdGggaXMgdGhlIGRlZmF1bHQgdmFsdWUuCisKKwogIHZpbTp0dz03ODp0cz04OmZ0PWhlbHA6bm9ybDoKZGlmZiAtLWdpdCBhL3J1bnRpbWUvZG9jL21lc3NhZ2UudHh0IGIvcnVudGltZS9kb2MvbWVzc2FnZS50eHQKaW5kZXggNjIwNDRlNS4uNDI0NWI2MyAxMDA2NDQKLS0tIGEvcnVudGltZS9kb2MvbWVzc2FnZS50eHQKKysrIGIvcnVudGltZS9kb2MvbWVzc2FnZS50eHQKQEAgLTEsNCArMSw0IEBACi0qbWVzc2FnZS50eHQqICAgRm9yIFZpbSB2ZXJzaW9uIDcuMGFhLiAgTGFzdCBjaGFuZ2U6IDIwMDQgSnVsIDIzCisqbWVzc2FnZS50eHQqICAgRm9yIFZpbSB2ZXJzaW9uIDcuMGFhLiAgTGFzdCBjaGFuZ2U6IDIwMDQgQXVnIDI2CiAKIAogCQkgIFZJTSBSRUZFUkVOQ0UgTUFOVUFMICAgIGJ5IEJyYW0gTW9vbGVuYWFyCkBAIC00MTIsNiArNDEyLDEyIEBACiBkb24ndCB0aHJvdyBhd2F5IGNoYW5nZXMgeW91IHJlYWxseSB3YW50IHRvIGtlZXAuICBZb3UgbWlnaHQgaGF2ZSBmb3Jnb3R0ZW4KIGFib3V0IGEgYnVmZmVyLCBlc3BlY2lhbGx5IHdoZW4gJ2hpZGRlbicgaXMgc2V0LgogCis+CisgIFtObyB3cml0ZSBzaW5jZSBsYXN0IGNoYW5nZV0KKworVGhpcyBhcHBlYXJzIHdoZW4gZXhlY3V0aW5nIGEgc2hlbGwgY29tbWFuZCB3aGlsZSBhdCBsZWFzdCBvbmUgYnVmZmVyIHdhcworY2hhbmdlZC4gIFRvIGF2b2lkIHRoZSBtZXNzYWdlIHJlc2V0IHRoZSAnd2Fybicgb3B0aW9uLgorCiAJCQkJCQkJKkUzOCogID4KICAgTnVsbCBhcmd1bWVudAogCmRpZmYgLS1naXQgYS9ydW50aW1lL2RvYy9vcHRpb25zLnR4dCBiL3J1bnRpbWUvZG9jL29wdGlvbnMudHh0CmluZGV4IGY5NGI1MmEuLjM3NmJiNmIgMTAwNjQ0Ci0tLSBhL3J1bnRpbWUvZG9jL29wdGlvbnMudHh0CisrKyBiL3J1bnRpbWUvZG9jL29wdGlvbnMudHh0CkBAIC0xLDQgKzEsNCBAQAotKm9wdGlvbnMudHh0KglGb3IgVmltIHZlcnNpb24gNy4wYWEuICBMYXN0IGNoYW5nZTogMjAwNCBKdWwgMjQKKypvcHRpb25zLnR4dCoJRm9yIFZpbSB2ZXJzaW9uIDcuMGFhLiAgTGFzdCBjaGFuZ2U6IDIwMDQgQXVnIDMwCiAKIAogCQkgIFZJTSBSRUZFUkVOQ0UgTUFOVUFMCSAgYnkgQnJhbSBNb29sZW5hYXIKQEAgLTE4OCw3ICsxODgsNyBAQAogZG9lc24ndCBhcHBlYXIuCiAKIAkJCSAgICo6c2V0X2VudiogKmV4cGFuZC1lbnYqICpleHBhbmQtZW52aXJvbm1lbnQtdmFyKgotRW52aXJvbm1lbnQgdmFyaWFibGVzIGluIG1vc3Qgc3RyaW5nIG9wdGlvbnMgd2lsbCBiZSBleHBhbmRlZC4gIElmIHRoZQorRW52aXJvbm1lbnQgdmFyaWFibGVzIGluIHNwZWNpZmljIHN0cmluZyBvcHRpb25zIHdpbGwgYmUgZXhwYW5kZWQuICBJZiB0aGUKIGVudmlyb25tZW50IHZhcmlhYmxlIGV4aXN0cyB0aGUgJyQnIGFuZCB0aGUgZm9sbG93aW5nIGVudmlyb25tZW50IHZhcmlhYmxlCiBuYW1lIGlzIHJlcGxhY2VkIHdpdGggaXRzIHZhbHVlLiAgSWYgaXQgZG9lcyBub3QgZXhpc3QgdGhlICckJyBhbmQgdGhlIG5hbWUKIGFyZSBub3QgbW9kaWZpZWQuICBBbnkgbm9uLWlkIGNoYXJhY3RlciAobm90IGEgbGV0dGVyLCBkaWdpdCBvciAnXycpIG1heQpAQCAtMjkwMyw2ICsyOTAzLDcgQEAKIAkJICAgICAgQkFMVElDLCBDSElORVNFQklHNSwgREVGQVVMVCwgRUFTVEVVUk9QRSwgR0IyMzEyLCBHUkVFSywKIAkJICAgICAgSEFOR0VVTCwgSEVCUkVXLCBKT0hBQiwgTUFDLCBPRU0sIFJVU1NJQU4sIFNISUZUSklTLAogCQkgICAgICBTWU1CT0wsIFRIQUksIFRVUktJU0gsIFZJRVROQU1FU0UgQU5TSSBhbmQgQkFMVElDLgorCQkgICAgICBOb3JtYWxseSB5b3Ugd291bGQgdXNlICJjREVGQVVMVCIuCiAKIAkgIFVzZSBhICc6JyB0byBzZXBhcmF0ZSB0aGUgb3B0aW9ucy4KIAktIEEgJ18nIGNhbiBiZSB1c2VkIGluIHRoZSBwbGFjZSBvZiBhIHNwYWNlLCBzbyB5b3UgZG9uJ3QgbmVlZCB0byB1c2UKQEAgLTU3MzAsNyArNTczMSw3IEBACiAJVGFncyBpbiB1bnNvcnRlZCB0YWdzIGZpbGVzLCBhbmQgbWF0Y2hlcyB3aXRoIGRpZmZlcmVudCBjYXNlIHdpbGwgb25seQogCWJlIGZvdW5kIGluIHRoZSByZXRyeS4KIAotCUlmIGEgdGFnIGZpbGUgaW5kaWNhdGVzIHRoYXQgaXMgaXMgY2FzZS1mb2xkIHNvcnRlZCwgdGhlIHNlY29uZCwKKwlJZiBhIHRhZyBmaWxlIGluZGljYXRlcyB0aGF0IGl0IGlzIGNhc2UtZm9sZCBzb3J0ZWQsIHRoZSBzZWNvbmQsCiAJbGluZWFyIHNlYXJjaCBjYW4gYmUgYXZvaWRlZCBmb3IgdGhlICdpZ25vcmVjYXNlJyBjYXNlLiAgVXNlIGEgdmFsdWUKIAlvZiAnMicgaW4gdGhlICIhX1RBR19GSUxFX1NPUlRFRCIgbGluZSBmb3IgdGhpcy4gIEEgdGFnIGZpbGUgY2FuIGJlCiAJY2FzZS1mb2xkIHNvcnRlZCB3aXRoIHRoZSAtZiBzd2l0Y2ggdG8gInNvcnQiIGluIG1vc3QgdW5pY2VzLCBhcyBpbgpkaWZmIC0tZ2l0IGEvcnVudGltZS9kb2Mvb3NfbXNkb3MudHh0IGIvcnVudGltZS9kb2Mvb3NfbXNkb3MudHh0CmluZGV4IDAxMjkwZTkuLjNjNzQ5ZjAgMTAwNjQ0Ci0tLSBhL3J1bnRpbWUvZG9jL29zX21zZG9zLnR4dAorKysgYi9ydW50aW1lL2RvYy9vc19tc2Rvcy50eHQKQEAgLTEsNCArMSw0IEBACi0qb3NfbXNkb3MudHh0KiAgRm9yIFZpbSB2ZXJzaW9uIDcuMGFhLiAgTGFzdCBjaGFuZ2U6IDIwMDEgU2VwIDAzCisqb3NfbXNkb3MudHh0KiAgRm9yIFZpbSB2ZXJzaW9uIDcuMGFhLiAgTGFzdCBjaGFuZ2U6IDIwMDQgQXVnIDMxCiAKIAogCQkgIFZJTSBSRUZFUkVOQ0UgTUFOVUFMICAgIGJ5IEJyYW0gTW9vbGVuYWFyCkBAIC0yMDcsMTggKzIwNywyNCBAQAogOC4gU3ltYm9saWNhbGx5IGxpbmtlZCBmaWxlcwkJCSptc2Rvcy1saW5rZWQtZmlsZXMqCiAKIFdoZW4gdXNpbmcgVmltIHRvIGVkaXQgYSBzeW1ib2xpY2FsbHkgbGlua2VkIGZpbGUgb24gYSB1bml4IE5GUyBmaWxlIHNlcnZlciwKLXlvdSBtYXkgcnVuIGludG8gcHJvYmxlbXMuCi1XaGVuIHdyaXRpbmcgdGhlIGZpbGUsIFZpbSBkb2VzIG5vdCAid3JpdGUgdGhyb3VnaCIgdGhlIHN5bWxpbmsuICBJbnN0ZWFkLCBpdAotZGVsZXRlcyB0aGUgc3ltYm9saWMgbGluayBhbmQgY3JlYXRlcyBhIG5ldyBmaWxlIGluIGl0cyBwbGFjZS4KLSAgIE9uIFVuaXgsIFZpbSBpcyBwcmVwYXJlZCBmb3IgbGlua3MgKHN5bWJvbGljIG9yIGhhcmQpLiAgQSBiYWNrdXAgY29weSBvZgotdGhlIG9yaWdpbmFsIGZpbGUgaXMgbWFkZSBhbmQgdGhlbiB0aGUgb3JpZ2luYWwgZmlsZSBpcyBvdmVyd3JpdHRlbi4gIFRoaXMKLWFzc3VyZXMgdGhhdCBhbGwgcHJvcGVydGllcyBvZiB0aGUgZmlsZSByZW1haW4gdGhlIHNhbWUuICBPbiBub24tVW5peCBzeXN0ZW1zLAotdGhlIG9yaWdpbmFsIGZpbGUgaXMgcmVuYW1lZCBhbmQgYSBuZXcgZmlsZSBpcyB3cml0dGVuLiAgT25seSB0aGUgcHJvdGVjdGlvbgotYml0cyBhcmUgc2V0IGxpa2UgdGhlIG9yaWdpbmFsIGZpbGUuICBIb3dldmVyLCB0aGlzIGRvZXNuJ3Qgd29yayBwcm9wZXJseSB3aGVuCit5b3UgbWF5IHJ1biBpbnRvIHByb2JsZW1zLiAgV2hlbiB3cml0aW5nIHRoZSBmaWxlLCBWaW0gZG9lcyBub3QgIndyaXRlCit0aHJvdWdoIiB0aGUgc3ltbGluay4gIEluc3RlYWQsIGl0IGRlbGV0ZXMgdGhlIHN5bWJvbGljIGxpbmsgYW5kIGNyZWF0ZXMgYSBuZXcKK2ZpbGUgaW4gaXRzIHBsYWNlLgorCitPbiBVbml4LCBWaW0gaXMgcHJlcGFyZWQgZm9yIGxpbmtzIChzeW1ib2xpYyBvciBoYXJkKS4gIEEgYmFja3VwIGNvcHkgb2YgdGhlCitvcmlnaW5hbCBmaWxlIGlzIG1hZGUgYW5kIHRoZW4gdGhlIG9yaWdpbmFsIGZpbGUgaXMgb3ZlcndyaXR0ZW4uICBUaGlzIGFzc3VyZXMKK3RoYXQgYWxsIHByb3BlcnRpZXMgb2YgdGhlIGZpbGUgcmVtYWluIHRoZSBzYW1lLiAgT24gbm9uLVVuaXggc3lzdGVtcywgdGhlCitvcmlnaW5hbCBmaWxlIGlzIHJlbmFtZWQgYW5kIGEgbmV3IGZpbGUgaXMgd3JpdHRlbi4gIE9ubHkgdGhlIHByb3RlY3Rpb24gYml0cworYXJlIHNldCBsaWtlIHRoZSBvcmlnaW5hbCBmaWxlLiAgSG93ZXZlciwgdGhpcyBkb2Vzbid0IHdvcmsgcHJvcGVybHkgd2hlbgogd29ya2luZyBvbiBhbiBORlMtbW91bnRlZCBmaWxlIHN5c3RlbSB3aGVyZSBsaW5rcyBhbmQgb3RoZXIgdGhpbmdzIGV4aXN0LiAgVGhlCiBvbmx5IHdheSB0byBmaXggdGhpcyBpbiB0aGUgY3VycmVudCB2ZXJzaW9uIGlzIG5vdCBtYWtpbmcgYSBiYWNrdXAgZmlsZSwgYnkKICI6c2V0IG5vYmFja3VwIG5vd3JpdGViYWNrdXAiCXwnd3JpdGViYWNrdXAnfAogCitBIHNpbWlsYXIgcHJvYmxlbSBvY2N1cnMgd2hlbiBtb3VudGluZyBhIFVuaXggZmlsZXN5c3RlbSB0aHJvdWdoIFNhbWJhIG9yIGEKK3NpbWlsYXIgc3lzdGVtLiAgV2hlbiBWaW0gY3JlYXRlcyBhIG5ldyBmaWxlIGl0IHdpbGwgZ2V0IHRoZSBkZWZhdWx0IHVzZXIgSUQKK2ZvciB0aGUgbW91bnRlZCBmaWxlIHN5c3RlbS4gIFRoaXMgbWF5IGJlIGRpZmZlcmVudCBmcm9tIHRoZSBvcmlnaW5hbCB1c2VyIElELgorVG8gYXZvaWQgdGhpcyBzZXQgdGhlICdiYWNrdXBjb3B5JyBvcHRpb24gdG8gInllcyIuCisKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogOS4gQ29weS9wYXN0ZSBpbiBhIGRvcyBib3gJCQkqbXNkb3MtY29weS1wYXN0ZSoKIApkaWZmIC0tZ2l0IGEvcnVudGltZS9kb2Mvb3Nfd2luMzIudHh0IGIvcnVudGltZS9kb2Mvb3Nfd2luMzIudHh0CmluZGV4IDI5ZDcwOTYuLjZmOWE1NDEgMTAwNjQ0Ci0tLSBhL3J1bnRpbWUvZG9jL29zX3dpbjMyLnR4dAorKysgYi9ydW50aW1lL2RvYy9vc193aW4zMi50eHQKQEAgLTEsNCArMSw0IEBACi0qb3Nfd2luMzIudHh0KiAgRm9yIFZpbSB2ZXJzaW9uIDcuMGFhLiAgTGFzdCBjaGFuZ2U6IDIwMDQgTWF5IDAxCisqb3Nfd2luMzIudHh0KiAgRm9yIFZpbSB2ZXJzaW9uIDcuMGFhLiAgTGFzdCBjaGFuZ2U6IDIwMDQgQXVnIDMxCiAKIAogCQkgIFZJTSBSRUZFUkVOQ0UgTUFOVUFMICAgIGJ5IEdlb3JnZSBSZWlsbHkKQEAgLTE4NCw4ICsxODQsOSBAQAogICAgcnVucyBvbiB0b3Agb2YgYW4gODB4ODYgZW11bGF0b3IuCiAKIFEuIEhvdyBkbyBJIGNoYW5nZSB0aGUgZm9udD8KLUEuIEluIHRoZSBHVUkgdmVyc2lvbiwgeW91IGNhbiB1c2UgdGhlICdndWlmb250JyBvcHRpb24uCi0gICBJbiB0aGUgY29uc29sZSB2ZXJzaW9uLCB5b3UgbmVlZCB0byBzZXQgdGhlIGZvbnQgb2YgdGhlIGNvbnNvbGUgaXRzZWxmLgorQS4gSW4gdGhlIEdVSSB2ZXJzaW9uLCB5b3UgY2FuIHVzZSB0aGUgJ2d1aWZvbnQnIG9wdGlvbi4gIEV4YW1wbGU6ID4KKwk6c2V0IGd1aWZvbnQ9THVjaWRhX0NvbnNvbGU6aDE1OmNERUZBVUxUCis8ICBJbiB0aGUgY29uc29sZSB2ZXJzaW9uLCB5b3UgbmVlZCB0byBzZXQgdGhlIGZvbnQgb2YgdGhlIGNvbnNvbGUgaXRzZWxmLgogICAgWW91IGNhbm5vdCBkbyB0aGlzIGZyb20gd2l0aGluIFZpbS4KIAogUS4gV2hlbiBJIGNoYW5nZSB0aGUgc2l6ZSBvZiB0aGUgY29uc29sZSB3aW5kb3cgd2l0aCAnOnNldCBsaW5lcz14eCcgb3IKQEAgLTI0OSw2ICsyNTAsMTYgQEAKICAgIHRoaW5ncyBleGlzdC4gIFRoZSBvbmx5IHdheSB0byBmaXggdGhpcyBpbiB0aGUgY3VycmVudCB2ZXJzaW9uIGlzIG5vdAogICAgbWFraW5nIGEgYmFja3VwIGZpbGUsIGJ5ICI6c2V0IG5vYmFja3VwIG5vd3JpdGViYWNrdXAiICAgICB8J3dyaXRlYmFja3VwJ3wKIAorUS4gSSdtIHVzaW5nIFZpbSB0byBlZGl0IGEgZmlsZSBvbiBhIFVuaXggZmlsZSBzZXJ2ZXIgdGhyb3VnaCBTYW1iYS4gIFdoZW4gSQorICAgd3JpdGUgdGhlIGZpbGUsIHRoZSBvd25lciBvZiB0aGUgZmlsZSBpcyBjaGFuZ2VkLiAgV2h5PworQS4gV2hlbiB3cml0aW5nIGEgZmlsZSBWaW0gcmVuYW1lcyB0aGUgb3JpZ2luYWwgZmlsZSwgdGhpcyBpcyBhIGJhY2t1cCAoaW4KKyAgIGNhc2Ugd3JpdGluZyB0aGUgZmlsZSBmYWlscyBoYWxmd2F5KS4gIFRoZW4gdGhlIGZpbGUgaXMgd3JpdHRlbiBhcyBhIG5ldworICAgZmlsZS4gIFNhbWJhIHRoZW4gZ2l2ZXMgaXQgdGhlIGRlZmF1bHQgb3duZXIgZm9yIHRoZSBmaWxlIHN5c3RlbSwgd2hpY2ggbWF5CisgICBkaWZmZXIgZnJvbSB0aGUgb3JpZ2luYWwgb3duZXIuCisgICBUbyBhdm9pZCB0aGlzIHNldCB0aGUgJ2JhY2t1cGNvcHknIG9wdGlvbiB0byAieWVzIi4gIFZpbSB3aWxsIHRoZW4gbWFrZSBhCisgICBjb3B5IG9mIHRoZSBmaWxlIGZvciB0aGUgYmFja3VwLCBhbmQgb3ZlcndyaXRlIHRoZSBvcmlnaW5hbCBmaWxlLiAgVGhlCisgICBvd25lciBpc24ndCBjaGFuZ2VkIHRoZW4uCisKIFEuIEhvdyBkbyBJIGdldCB0byBzZWUgdGhlIG91dHB1dCBvZiAiOm1ha2UiIHdoaWxlIGl0J3MgcnVubmluZz8KIEEuIEJhc2ljYWxseSB3aGF0IHlvdSBuZWVkIGlzIHRvIHB1dCBhIHRlZSBwcm9ncmFtIHRoYXQgd2lsbCBjb3B5IGl0cyBpbnB1dAogICAgKHRoZSBvdXRwdXQgZnJvbSBtYWtlKSB0byBib3RoIHN0ZG91dCBhbmQgdG8gdGhlIGVycm9yZmlsZS4gIFlvdSBjYW4gZmluZCBhCmRpZmYgLS1naXQgYS9ydW50aW1lL2RvYy9waV9uZXRydy50eHQgYi9ydW50aW1lL2RvYy9waV9uZXRydy50eHQKaW5kZXggMDA1MDcyZi4uMDY4ZDQyYiAxMDA2NDQKLS0tIGEvcnVudGltZS9kb2MvcGlfbmV0cncudHh0CisrKyBiL3J1bnRpbWUvZG9jL3BpX25ldHJ3LnR4dApAQCAtMSw0ICsxLDQgQEAKLSpwaV9uZXRydy50eHQgIEZvciBWaW0gdmVyc2lvbiA2LjIuICBMYXN0IGNoYW5nZTogSnVsIDI2LCAyMDA0CisqcGlfbmV0cncudHh0ICBGb3IgVmltIHZlcnNpb24gNi4yLiAgTGFzdCBjaGFuZ2U6IEp1bCAzMCwgMjAwNAogCiAKIAkJVklNIFJFRkVSRU5DRSBNQU5VQUwgICAgYnkgQ2hhcmxlcyBFLiBDYW1wYmVsbCwgSnIuCkBAIC0xNiw3ICsxNiw3IEBACiA0LiAgVHJhbnNwYXJlbnQgRmlsZSBUcmFuc2Zlci4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLnxuZXRydy10cmFuc3BhcmVudHwKIDUuICBFeCBDb21tYW5kcy4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4ufG5ldHJ3LWV4fAogNi4gIFZhcmlhYmxlcyBhbmQgT3B0aW9ucy4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi58bmV0cnctdmFyfAotNy4gIFJlbW90ZSBEaXJlY3RvcnkgQnJvd3Nlci4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi58bmV0cnctYnJvd3NlfAorNy4gIERpcmVjdG9yeSBCcm93c2VyLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi58bmV0cnctYnJvd3NlfAogOC4gIERlYnVnZ2luZy4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi58bmV0cnctZGVidWd8CiA5LiAgSGlzdG9yeS4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLnxuZXRydy1oaXN0b3J5fAogMTAuIENyZWRpdHMuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi58bmV0cnctY3JlZGl0c3wKQEAgLTYyLDMxICs2MiwzMSBAQAogCSAgICBzY3A6ICAgIGc6bmV0cndfc2NwX2NtZCAgPSAic2NwIC1xIgogCSAgIHNmdHA6ICAgZzpuZXRyd19zZnRwX2NtZCAgPSAic2Z0cCIKIAotICAgIFJFQURJTkcKKyAgICBSRUFESU5HCQkJCQkqbmV0cnctcmVhZCogKm5ldHJ3LW5yZWFkKgogCTpOcmVhZCA/CQkJCQlnaXZlIGhlbHAKLQk6TnJlYWQgIm1hY2hpbmU6ZmlsZSIJCQkJdXNlcyByY3AKLQk6TnJlYWQgIm1hY2hpbmUgZmlsZSIJCQkJdXNlcyBmdHAgICB3aXRoIDwubmV0cmM+Ci0JOk5yZWFkICJtYWNoaW5lIGlkIHBhc3N3b3JkIGZpbGUiCQl1c2VzIGZ0cAotCTpOcmVhZCAiZGF2Oi8vbWFjaGluZVs6cG9ydF0vZmlsZSIJCXVzZXMgY2FkYXZlcgotCTpOcmVhZCAiZmV0Y2g6Ly9bdXNlckBdbWFjaGluZS9maWxlIgkJdXNlcyBmZXRjaAotCTpOcmVhZCAiZnRwOi8vW3VzZXJAXW1hY2hpbmVbWzojXXBvcnRdL2ZpbGUiCXVzZXMgZnRwICAgYXV0b2RldGVjdHMgPC5uZXRyYz4KLQk6TnJlYWQgImh0dHA6Ly9bdXNlckBdbWFjaGluZS9maWxlIgkJdXNlcyBodHRwICB1c2VzIHdnZXQKLQk6TnJlYWQgInJjcDovL1t1c2VyQF1tYWNoaW5lL2ZpbGUiCQl1c2VzIHJjcAotCTpOcmVhZCAicnN5bmM6Ly9bdXNlckBdbWFjaGluZVs6cG9ydF0vZmlsZSIJdXNlcyByc3luYwotCTpOcmVhZCAic2NwOi8vW3VzZXJAXW1hY2hpbmVbWzojXXBvcnRdL2ZpbGUiCXVzZXMgc2NwCi0JOk5yZWFkICJzZnRwOi8vW3VzZXJAXW1hY2hpbmUvZmlsZSIJCXVzZXMgc2Z0cAorCTpOcmVhZCAibWFjaGluZTpwYXRoIgkJCQl1c2VzIHJjcAorCTpOcmVhZCAibWFjaGluZSBwYXRoIgkJCQl1c2VzIGZ0cCAgIHdpdGggPC5uZXRyYz4KKwk6TnJlYWQgIm1hY2hpbmUgaWQgcGFzc3dvcmQgcGF0aCIJCXVzZXMgZnRwCisJOk5yZWFkICJkYXY6Ly9tYWNoaW5lWzpwb3J0XS9wYXRoIgkJdXNlcyBjYWRhdmVyCisJOk5yZWFkICJmZXRjaDovL1t1c2VyQF1tYWNoaW5lL3BhdGgiCQl1c2VzIGZldGNoCisJOk5yZWFkICJmdHA6Ly9bdXNlckBdbWFjaGluZVtbOiNdcG9ydF0vcGF0aCIJdXNlcyBmdHAgICBhdXRvZGV0ZWN0cyA8Lm5ldHJjPgorCTpOcmVhZCAiaHR0cDovL1t1c2VyQF1tYWNoaW5lL3BhdGgiCQl1c2VzIGh0dHAgIHVzZXMgd2dldAorCTpOcmVhZCAicmNwOi8vW3VzZXJAXW1hY2hpbmUvcGF0aCIJCXVzZXMgcmNwCisJOk5yZWFkICJyc3luYzovL1t1c2VyQF1tYWNoaW5lWzpwb3J0XS9wYXRoIgl1c2VzIHJzeW5jCisJOk5yZWFkICJzY3A6Ly9bdXNlckBdbWFjaGluZVtbOiNdcG9ydF0vcGF0aCIJdXNlcyBzY3AKKwk6TnJlYWQgInNmdHA6Ly9bdXNlckBdbWFjaGluZS9wYXRoIgkJdXNlcyBzZnRwCiAKLSAgICBXUklUSU5HCisgICAgV1JJVElORwkJCQkJKm5ldHJ3LXdyaXRlKiAqbmV0cnctbndyaXRlKgogCTpOd3JpdGUgPyAgICAJCQkJCWdpdmUgaGVscAotCTpOd3JpdGUgIm1hY2hpbmU6ZmlsZSIJCQkJdXNlcyByY3AKLQk6TndyaXRlICJtYWNoaW5lIGZpbGUiCQkJCXVzZXMgZnRwICAgd2l0aCA8Lm5ldHJjPgotCTpOd3JpdGUgIm1hY2hpbmUgaWQgcGFzc3dvcmQgZmlsZSIJCXVzZXMgZnRwCi0JOk53cml0ZSAiZGF2Oi8vbWFjaGluZVs6cG9ydF0vZmlsZSIJCXVzZXMgY2FkYXZlcgotCTpOd3JpdGUgImZ0cDovL1t1c2VyQF1tYWNoaW5lW1s6I11wb3J0XS9maWxlIgl1c2VzIGZ0cCAgIGF1dG9kZXRlY3RzIDwubmV0cmM+Ci0JOk53cml0ZSAicmNwOi8vW3VzZXJAXW1hY2hpbmUvZmlsZSIJCXVzZXMgcmNwCi0JOk53cml0ZSAicnN5bmM6Ly9bdXNlckBdbWFjaGluZVs6cG9ydF0vZmlsZSIJdXNlcyByc3luYwotCTpOd3JpdGUgInNjcDovL1t1c2VyQF1tYWNoaW5lW1s6I11wb3J0XS9maWxlIgl1c2VzIHNjcAotCTpOd3JpdGUgInNmdHA6Ly9bdXNlckBdbWFjaGluZS9maWxlIgkJdXNlcyBzZnRwCisJOk53cml0ZSAibWFjaGluZTpwYXRoIgkJCQl1c2VzIHJjcAorCTpOd3JpdGUgIm1hY2hpbmUgcGF0aCIJCQkJdXNlcyBmdHAgICB3aXRoIDwubmV0cmM+CisJOk53cml0ZSAibWFjaGluZSBpZCBwYXNzd29yZCBwYXRoIgkJdXNlcyBmdHAKKwk6TndyaXRlICJkYXY6Ly9tYWNoaW5lWzpwb3J0XS9wYXRoIgkJdXNlcyBjYWRhdmVyCisJOk53cml0ZSAiZnRwOi8vW3VzZXJAXW1hY2hpbmVbWzojXXBvcnRdL3BhdGgiCXVzZXMgZnRwICAgYXV0b2RldGVjdHMgPC5uZXRyYz4KKwk6TndyaXRlICJyY3A6Ly9bdXNlckBdbWFjaGluZS9wYXRoIgkJdXNlcyByY3AKKwk6TndyaXRlICJyc3luYzovL1t1c2VyQF1tYWNoaW5lWzpwb3J0XS9wYXRoIgl1c2VzIHJzeW5jCisJOk53cml0ZSAic2NwOi8vW3VzZXJAXW1hY2hpbmVbWzojXXBvcnRdL3BhdGgiCXVzZXMgc2NwCisJOk53cml0ZSAic2Z0cDovL1t1c2VyQF1tYWNoaW5lL3BhdGgiCQl1c2VzIHNmdHAKIAlodHRwOiBub3Qgc3VwcG9ydGVkIQogCiAgICAgRElSRUNUT1JZIExJU1RJTkcKQEAgLTEwMyw3ICsxMDMsNyBAQAogCTpjYWxsIE5ldFVzZXJQYXNzKCJ1aWQiKQkJLS0gcHJvbXB0cyBmb3IgcGFzc3dvcmQKIAk6Y2FsbCBOZXRVc2VyUGFzcygidWlkIiwicGFzc3dvcmQiKQktLSBzZXRzIGdsb2JhbCB1aWQgYW5kIHBhc3N3b3JkCiAKLSAgICBWQVJJQUJMRVMKKyAgICBWQVJJQUJMRVMJCQkJCQkqbmV0cnctdmFyaWFibGVzKgogCWI6bmV0cndfbGFzdGZpbGUgbGFzdCBmaWxlIE5ldHdvcmstcmVhZC93cml0dGVuIHJldGFpbmVkIG9uCiAJCQkgIGEgcGVyLWJ1ZmZlciBiYXNpcwkJKHN1cHBvcnRzIHBsYWluIDpOdyApCiAJczpuZXRyd19saW5lCSAgZHVyaW5nIE53L05ldFdyaXRlLCBob2xkcyBjdXJyZW50IGxpbmUgICBudW1iZXIKQEAgLTEyNiw2ICsxMjYsMjEgQEAKIAlnOm5ldHJ3X3VzZV9udF9yY3A9MCBkb24ndCB1c2UgdGhlIHJjcCBvZiBXaW5OVCwgV2luMjAwMCBhbmQgV2luWFAgKGRlZmF1bHQpCiAJCQkgID0xIHVzZSB0aGUgcmNwIG9mIFdpbk5ULC4uLiBpbiBiaW5hcnkgbW9kZQogCisgICAgUEFUSFMJCQkJCQkJKm5ldHJ3LXBhdGgqCisKKwlQYXRocyB0byBmaWxlcyBhcmUgZ2VuZXJhbGx5IHVzZXItZGlyZWN0b3J5IHJlbGF0aXZlIGZvciBtb3N0IHByb3RvY29scy4KKwlJdCBpcyBwb3NzaWJsZSB0aGF0IHNvbWUgcHJvdG9jb2wgd2lsbCBtYWtlIHBhdGhzIHJlbGF0aXZlIHRvIHNvbWUKKwlhc3NvY2lhdGVkIGRpcmVjdG9yeSwgaG93ZXZlci4KKworCQlleGFtcGxlOiAgdmltIHNjcDovL3VzZXJAaG9zdC9zb21lZmlsZQorCQlleGFtcGxlOiAgdmltIHNjcDovL3VzZXJAaG9zdC9zdWJkaXIxL3N1YmRpcjIvc29tZWZpbGUKKwkKKwl3aGVyZSAic29tZWZpbGUiIGlzIHRoZSAidXNlciIncyBob21lIGRpcmVjdG9yeS4gIElmIHlvdSB3aXNoIHRvIGdldCBhCisJZmlsZSB1c2luZyByb290LXJlbGF0aXZlIHBhdGhzLCB1c2UgdGhlIGZ1bGwgcGF0aDoKKworCQlleGFtcGxlOiAgdmltIHNjcDovL3VzZXJAaG9zdC8vc29tZWZpbGUKKwkJZXhhbXBsZTogIHZpbSBzY3A6Ly91c2VyQGhvc3QvL3N1YmRpcjEvc3ViZGlyMi9zb21lZmlsZQorCiAKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogMi4gTmV0d29yay1PcmllbnRlZCBGaWxlIFRyYW5zZmVyCQkJCSpuZXRydy14ZmVyKgpAQCAtNDk5LDIxICs1MTQsMjYgQEAKID4KIAogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci03LiBSZW1vdGUgRGlyZWN0b3J5IEJyb3dzZXIgKm5ldHJ3LWJyb3dzZSogKm5ldHJ3LWRpciogKm5ldHJ3LWxpc3QqICpuZXRydy1oZWxwKgorNy4gRGlyZWN0b3J5IEJyb3dzZXIJKm5ldHJ3LWJyb3dzZSogKm5ldHJ3LWRpciogKm5ldHJ3LWxpc3QqICpuZXRydy1oZWxwKgogICAgICA/Li4uLi4uLi4uLkhlbHAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi58bmV0cnctaGVscHwKICAgICAgPGNyPi4uLi4uLi5Ccm93c2luZy4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4ufG5ldHJ3LWNyfAotICAgICA8Yy1sPi4uLi4uLlJlZnJlc2hpbmcgdGhlIExpc3RpbmcuLi4uLi4uLi4uLi4uLi4uLi58bmV0cnctYy1sfAogICAgICA8ZGVsPi4uLi4uLkRlbGV0aW5nIEZpbGVzIG9yIERpcmVjdG9yaWVzLi4uLi4uLi4uLi58bmV0cnctZGVsZXRlfAogICAgICAtLi4uLi4uLi4uLkdvaW5nIFVwLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi58bmV0cnctLXwKICAgICAgYS4uLi4uLi4uLi5IaWRpbmcgRmlsZXMgb3IgRGlyZWN0b3JpZXMuLi4uLi4uLi4uLi4ufG5ldHJ3LWF8CisgICAgIGIuLi4uLi4uLi4uQm9va21hcmtpbmcgYSBEaXJlY3RvcnkuLi4uLi4uLi4uLi4uLi4uLnxuZXRydy1ifAorICAgICBCLi4uLi4uLi4uLkNoYW5naW5nIHRvIGEgQm9va21hcmtlZCBEaXJlY3RvcnkuLi4uLi58bmV0cnctQnwKKyAgICAgYy4uLi4uLi4uLi5NYWtlIEJyb3dzaW5nIERpcmVjdG9yeSBUaGUgQ3VycmVudCBEaXIufG5ldHJ3LWN8CisgICAgIGQuLi4uLi4uLi4uTWFrZSBBIE5ldyBEaXJlY3RvcnkuLi4uLi4uLi4uLi4uLi4uLi4uLnxuZXRydy1kfAogICAgICBELi4uLi4uLi4uLkRlbGV0aW5nIEZpbGVzIG9yIERpcmVjdG9yaWVzLi4uLi4uLi4uLi58bmV0cnctRHwKLSAgICAgXGguLi4uLi4uLi5FZGl0IEZpbGUvRGlyZWN0b3J5IEhpZGluZyBMaXN0Li4uLi4uLi4ufG5ldHJ3LWh8CisgICAgIDxjLWg+Li4uLi4uRWRpdCBGaWxlL0RpcmVjdG9yeSBIaWRpbmcgTGlzdC4uLi4uLi4uLnxuZXRydy1ofAogICAgICBpLi4uLi4uLi4uLkxvbmcgTGlzdGluZy4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi58bmV0cnctaXwKLSAgICAgXG0uLi4uLi4uLi5NYWtlIEEgTmV3IERpcmVjdG9yeS4uLi4uLi4uLi4uLi4uLi4uLi4ufG5ldHJ3LW18CisgICAgIDxjLWw+Li4uLi4uUmVmcmVzaGluZyB0aGUgTGlzdGluZy4uLi4uLi4uLi4uLi4uLi4uLnxuZXRydy1jdHJsLWx8CiAgICAgIG8uLi4uLi4uLi4uQnJvd3Npbmcgd2l0aCBhIEhvcml6b250YWwgU3BsaXQuLi4uLi4uLnxuZXRydy1vfAorICAgICBxLi4uLi4uLi4uLkxpc3RpbmcgQm9va21hcmtzLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi58bmV0cnctcXwKICAgICAgci4uLi4uLi4uLi5SZXZlcnNpbmcgU29ydGluZyBPcmRlci4uLi4uLi4uLi4uLi4uLi4ufG5ldHJ3LXJ8CiAgICAgIFIuLi4uLi4uLi4uUmVuYW1pbmcgRmlsZXMgb3IgRGlyZWN0b3JpZXMuLi4uLi4uLi4uLnxuZXRydy1SfAogICAgICBzLi4uLi4uLi4uLlNlbGVjdGluZyBTb3J0aW5nIFN0eWxlLi4uLi4uLi4uLi4uLi4uLi58bmV0cnctc3wKKyAgICAgUy4uLi4uLi4uLi5FZGl0aW5nIHRoZSBTb3J0aW5nIFNlcXVlbmNlLi4uLi4uLi4uLi4ufG5ldHJ3LVN8CiAgICAgIHYuLi4uLi4uLi4uQnJvd3Npbmcgd2l0aCBhIFZlcnRpY2FsIFNwbGl0Li4uLi4uLi4uLnxuZXRydy12fAogICAgICB4Li4uLi4uLi4uLkN1c3RvbWl6aW5nIEJyb3dzaW5nLi4uLi4uLi4uLi4uLi4uLi4uLi58bmV0cncteHwKIApAQCAtNTI1LDE0ICs1NDUsMTUgQEAKIAkgICA/CUNhdXNlcyBOZXRydyB0byBpc3N1ZSBoZWxwCiAJIDxjcj4JTmV0cncgd2lsbCBlbnRlciB0aGUgZGlyZWN0b3J5IG9yIHJlYWQgdGhlIGZpbGUKIAkgPGRlbD4JTmV0cncgd2lsbCBhdHRlbXB0IHRvIHJlbW92ZSB0aGUgZmlsZS9kaXJlY3RvcnkKLQkgPGMtbD4JQ2F1c2VzIE5ldHJ3IHRvIHJlZnJlc2ggdGhlIGRpcmVjdG9yeSBsaXN0aW5nCisJICAgZAlNYWtlIGEgZGlyZWN0b3J5CiAJICAgRAlOZXRydyB3aWxsIGF0dGVtcHQgdG8gcmVtb3ZlIHRoZSBmaWxlKHMpL2RpcmVjdG9yeShpZXMpCiAJICAgUglOZXRydyB3aWxsIGF0dGVtcHQgdG8gcmVuYW1lIHRoZSBmaWxlKHMpL2RpcmVjdG9yeShpZXMpCiAJICAgLQlNYWtlcyBOZXRydyBnbyB1cCBvbmUgZGlyZWN0b3J5CiAJICAgYQlTaG93IGFsbCBvZiBhIGRpcmVjdG9yeSAodGVtcG9yYXJpbHkgaWdub3JlIGc6bmV0cndfbGlzdF9oaWRlKQotCSAgXGgJRWRpdCBmaWxlIGhpZGluZyBsaXN0CisJICAgYwlNYWtlIGN1cnJlbnQgYnJvd3NpbmcgZGlyZWN0b3J5IHRoZSBjdXJyZW50IGRpcmVjdG9yeQorCSA8Yy1oPglFZGl0IGZpbGUgaGlkaW5nIGxpc3QKIAkgICBpCVRvZ2dsZXMgYmV0d2VlbiBsb25nIGFuZCBzaG9ydCBsaXN0aW5nCi0JICBcbQlNYWtlIGEgZGlyZWN0b3J5CisJIDxjLWw+CUNhdXNlcyBOZXRydyB0byByZWZyZXNoIHRoZSBkaXJlY3RvcnkgbGlzdGluZwogCSAgIG8JRW50ZXIgdGhlIGZpbGUvZGlyZWN0b3J5IHVuZGVyIHRoZSBjdXJzb3IgaW4gYSBuZXcgYnJvd3NlcgogCSAgIAl3aW5kb3cuICBBIGhvcml6b250YWwgc3BsaXQgaXMgdXNlZC4KIAkgICByCVJldmVyc2Ugc29ydGluZyBvcmRlcgpAQCAtNTQzLDQ5ICs1NjQsNjMgQEAKIDwKIE5FVFJXIEJST1dTRVIgVkFSSUFCTEVTCQkJCQkqbmV0cnctYnJvd3NlLXZhcioKID4KLQktLS0JCQktLS0tLS0tLS0tLQotCVZhcgkJCUV4cGxhbmF0aW9uCi0JLS0tCQkJLS0tLS0tLS0tLS0KLQlnOm5ldHJ3X2xpc3RfY21kCXN1cHBvcnRzIGxpc3RpbmcKLQlnOm5ldHJ3X2xpc3RfaGlkZQljb21tYSBzZXBhcmF0ZWQgbGlzdCBvZiBwYXR0ZXJucyBmb3IKLQkJCQloaWRpbmcgZmlsZXMKLQlnOm5ldHJ3X2xvY2FsX21rZGlyCXNwZWNpZnkgY29tbWFuZCBmb3IgbWFraW5nIGEgZGlyZWN0b3J5IGxvY2FsbHkKLQlnOm5ldHJ3X2xvY2FsX3JtZGlyCXJlbW92ZSBkaXJlY3RvcnkgY29tbWFuZCAgICAgICAgICBkZWZhdWx0OiBybWRpcgotCWc6bmV0cndfbG9jYWxfcmVuYW1lCXJlbmFtZSBmaWxlL2RpcmVjdG9yeSBjb21tYW5kCi0JCQkJdW5peC1kZWZhdWx0OiBybSAgICB3aW4zMi1kZWZhdWx0OiByZW4KLQlnOm5ldHJ3X21rZGlyX2NtZAlzcGVjaWZ5IGNvbW1hbmQgZm9yIG1ha2luZyBhIGRpcmVjdG9yeSByZW1vdGVseQotCWc6bmV0cndfcm1fY21kCQlzdXBwb3J0cyByZW1vdmluZyBmaWxlcwotCWc6bmV0cndfcm1kaXJfY21kCXN1cHBvcnRzIHJlbW92aW5nIGRpcmVjdG9yaWVzCi0JZzpuZXRyd19ybWZfY21kCQlzdXBwb3J0cyByZW1vdmluZyBzb2Z0bGlua3MgdG8gZGlyZWN0b3JpZXMKLQlnOm5ldHJ3X2hpZGUJCWlmIHRydWUsIHRoZSBoaWRpbmcgbGlzdCBpcyB1c2VkCi0JZzpuZXRyd19zb3J0X2J5CQlzb3J0IGJ5ICJuYW1lIiwgInRpbWUiLCBvciAic2l6ZSIKLQlnOm5ldHJ3X3NvcnRfZGlyZWN0aW9uCXNvcnRpbmcgZGlyZWN0aW9uOiAibm9ybWFsIiBvciAicmV2ZXJzZSIKLQlnOm5ldHJ3X3NvcnRfc2VxdWVuY2UJd2hlbiBzb3J0aW5nIGJ5IG5hbWUsIGZpcnN0IHNvcnQgYnkgdGhlCi0JCQkJY29tbWEtc2VwYXJhdGVkIHBhdHRlcm4gc2VxdWVuY2UKLQlnOm5ldHJ3X3RpbWVmbXQJCXNwZWNpZnkgZm9ybWF0IHN0cmluZyB0byBzdHJmdGltZSgpICBkZWZhdWx0OiAlYwotCWc6bmV0cndfd2luc2l6ZQkJc3BlY2lmeSBpbml0aWFsIHNpemUgb2YgbmV3IG8vdiB3aW5kb3dzCisJLS0tCQkJCS0tLS0tLS0tLS0tCisJVmFyCQkJCUV4cGxhbmF0aW9uCisJLS0tCQkJCS0tLS0tLS0tLS0tCisJZzpuZXRyd19mdHBfYnJvd3NlX3JlamVjdAlmdHAgY2FuIHByb2R1Y2UgYSBudW1iZXIgb2YgZXJyb3JzCisJCQkJCWFuZCB3YXJuaW5ncyB0aGF0IGNhbiBzaG93IHVwIGFzCisJCQkJCSJkaXJlY3RvcmllcyIgYW5kICJmaWxlcyIgaW4gdGhlCisJCQkJCWxpc3RpbmcuICBUaGlzIHBhdHRlcm4gaXMgdXNlZCB0bworCQkJCQlyZW1vdmUgc3VjaCBlbWJlZGRlZCBtZXNzYWdlcy4KKwlnOm5ldHJ3X2tlZXBkaXIJCQlrZWVwIGN1cnJlbnQgZGlyZWN0b3J5IGltbXVuZSBmcm9tIHRoZQorCQkJCQlicm93c2luZyBkaXJlY3RvcnkuICBUaGUgYnJvd3NpbmcKKwkJCQkJZGlyZWN0b3J5IGlzIGNvbnRhaW5lZCBpbiBiOm5ldHJ3X2N1cmRpcgorCWc6bmV0cndfbGlzdF9jbWQJCWNvbW1hbmQgZm9yIGxpc3RpbmcgcmVtb3RlIGRpcmVjdG9yaWVzCisJZzpuZXRyd19saXN0X2hpZGUJCWNvbW1hIHNlcGFyYXRlZCBsaXN0IG9mIHBhdHRlcm5zIGZvcgorCQkJCQloaWRpbmcgZmlsZXMKKwlnOm5ldHJ3X2xvY2FsX21rZGlyCQljb21tYW5kIGZvciBtYWtpbmcgYSBsb2NhbCBkaXJlY3RvcnkKKwlnOm5ldHJ3X2xvY2FsX3JtZGlyCQlyZW1vdmUgZGlyZWN0b3J5IGNvbW1hbmQgKHJtZGlyKQorCWc6bmV0cndfbG9jYWxfcmVuYW1lCQlyZW5hbWUgZmlsZS9kaXJlY3RvcnkgY29tbWFuZAorCQkJCQl1bml4LWRlZmF1bHQ6IHJtICAgIHdpbjMyLWRlZmF1bHQ6IHJlbgorCWc6bmV0cndfbWtkaXJfY21kCQljb21tYW5kIGZvciBtYWtpbmcgYSByZW1vdGUgZGlyZWN0b3J5CisJZzpuZXRyd19ybV9jbWQJCQljb21tYW5kIGZvciByZW1vdmluZyBmaWxlcworCWc6bmV0cndfcm1kaXJfY21kCQljb21tYW5kIGZvciByZW1vdmluZyBkaXJlY3RvcmllcworCWc6bmV0cndfcm1mX2NtZAkJCWNvbW1hbmQgZm9yIHJlbW92aW5nIHNvZnRsaW5rcworCWc6bmV0cndfaGlkZQkJCWlmIHRydWUsIHRoZSBoaWRpbmcgbGlzdCBpcyB1c2VkCisJZzpuZXRyd19zb3J0X2J5CQkJc29ydCBieSAibmFtZSIsICJ0aW1lIiwgb3IgInNpemUiCisJZzpuZXRyd19zb3J0X2RpcmVjdGlvbgkJc29ydGluZyBkaXJlY3Rpb246ICJub3JtYWwiIG9yICJyZXZlcnNlIgorCWc6bmV0cndfc29ydF9zZXF1ZW5jZQkJd2hlbiBzb3J0aW5nIGJ5IG5hbWUsIGZpcnN0IHNvcnQgYnkgdGhlCisJCQkJCWNvbW1hLXNlcGFyYXRlZCBwYXR0ZXJuIHNlcXVlbmNlCisJZzpuZXRyd190aW1lZm10CQkJc3BlY2lmeSBmb3JtYXQgc3RyaW5nIHRvIHN0cmZ0aW1lKCkgKCVjKQorCWc6bmV0cndfd2luc2l6ZQkJCXNwZWNpZnkgaW5pdGlhbCBzaXplIG9mIG5ldyBvL3Ygd2luZG93cwogPAotSU5UUk9EVUNUSU9OIFRPIFJFTU9URSBESVJFQ1RPUlkgQlJPV1NJTkcKK0lOVFJPRFVDVElPTiBUTyBESVJFQ1RPUlkgQlJPV1NJTkcKIAotTmV0cncgc3VwcG9ydHMgdGhlIGJyb3dzaW5nIG9mIGRpcmVjdG9yaWVzIG9uIHJlbW90ZSBob3N0cywgaW5jbHVkaW5nCi1nZW5lcmF0aW5nIGxpc3RpbmcgZGlyZWN0b3JpZXMsIGVudGVyaW5nIGRpcmVjdG9yaWVzLCBlZGl0aW5nIGZpbGVzIHRoZXJlaW4sCi1kZWxldGluZyBmaWxlcy9kaXJlY3RvcmllcywgYW5kIG1vdmluZyAocmVuYW1pbmcpIGZpbGVzIGFuZCBkaXJlY3Rvcmllcy4gIFRoZQotTmV0cncgYnJvd3NlciBnZW5lcmFsbHkgaW1wbGVtZW50cyB0aGUgZmlsZSBleHBsb3JlciBtZXRob2RzIGJ1dCBmb3IgcmVtb3RlCi1kaXJlY3RvcmllcywgYWx0aG91Z2ggZGV0YWlscyAoc3VjaCBhcyBwZXJ0aW5lbnQgZ2xvYmFsIHZhcmlhYmxlIG5hbWVzKQotbmVjZXNzYXJpbHkgZGlmZmVyLgorTmV0cncgc3VwcG9ydHMgdGhlIGJyb3dzaW5nIG9mIGRpcmVjdG9yaWVzIG9uIHRoZSBsb2NhbCBzeXN0ZW0gYW5kIG9uIHJlbW90ZQoraG9zdHMsIGluY2x1ZGluZyBnZW5lcmF0aW5nIGxpc3RpbmcgZGlyZWN0b3JpZXMsIGVudGVyaW5nIGRpcmVjdG9yaWVzLCBlZGl0aW5nCitmaWxlcyB0aGVyZWluLCBkZWxldGluZyBmaWxlcy9kaXJlY3RvcmllcywgbWFraW5nIG5ldyBkaXJlY3RvcmllcywgYW5kIG1vdmluZworKHJlbmFtaW5nKSBmaWxlcyBhbmQgZGlyZWN0b3JpZXMuICBUaGUgTmV0cncgYnJvd3NlciBnZW5lcmFsbHkgaW1wbGVtZW50cyB0aGUKK3ByZXZpb3VzIGV4cGxvcmVyIG1hcHMgYW5kIGNvbW1hbmRzIGZvciByZW1vdGUgZGlyZWN0b3JpZXMsIGFsdGhvdWdoIGRldGFpbHMKKyhzdWNoIGFzIHBlcnRpbmVudCBnbG9iYWwgdmFyaWFibGUgbmFtZXMpIG5lY2Vzc2FyaWx5IGRpZmZlci4KKworVGhlIE5ldHJ3IHJlbW90ZSBmaWxlIGFuZCBkaXJlY3RvcnkgYnJvd3NlciBoYW5kbGVzIHR3byBwcm90b2NvbHM6IHNzaCBhbmQKK2Z0cC4gIFRoZSBwcm90b2NvbCBpbiB0aGUgdXJsLCBpZiBpdCBpcyBmdHAsIHdpbGwgY2F1c2UgbmV0cncgdG8gdXNlIGZ0cAoraW4gaXRzIHJlbW90ZSBicm93c2luZy4gIEFueSBvdGhlciBwcm90b2NvbCB3aWxsIGJlIHVzZWQgZm9yIGZpbGUgdHJhbnNmZXJzLAorYnV0IG90aGVyd2lzZSB0aGUgc3NoIHByb3RvY29sIHdpbGwgYmUgdXNlZCB0byBkbyByZW1vdGUgZGlyZWN0b3J5IGJyb3dzaW5nLgogCiBUbyBlbnRlciB0aGUgbmV0cncgZGlyZWN0b3J5IGJyb3dzZXIsIHNpbXBseSBhdHRlbXB0IHRvIHJlYWQgYSAiZmlsZSIgd2l0aCBhCiB0cmFpbGluZyBzbGFzaCBhbmQgaXQgd2lsbCBiZSBpbnRlcnByZXRlZCBhcyBhIHJlcXVlc3QgdG8gbGlzdCBhIGRpcmVjdG9yeToKIAogCXZpbSBbcHJvdG9jb2xdOi8vW3VzZXJAXWhvc3RuYW1lL3BhdGgvCiAKLVRvIGdldCBuby1wYXNzd29yZCBkaXJlY3RvcnkgbGlzdGluZ3MsIHNjcCwgc3NoIGludGVyYWN0aW9uLCBldGMsIHNlZQotfG5ldHJ3LWxpc3QtaGFja3wuCitJZiB5b3UnZCBsaWtlIHRvIGF2b2lkIGVudGVyaW5nIHRoZSBwYXNzd29yZCBpbiBmb3IgZGlyZWN0b3J5IGxpc3RpbmdzLCBzY3AsCitzc2ggaW50ZXJhY3Rpb24sIGV0Yywgc2VlIHxuZXRydy1saXN0LWhhY2t8LgogCi1SRUZSRVNISU5HIFRIRSBMSVNUSU5HCQkJCQkqbmV0cnctYy1sKgorUkVGUkVTSElORyBUSEUgTElTVElORwkJCQkJKm5ldHJ3LWN0cmwtbCoKIAotVG8gcmVmcmVzaCB0aGUgZGlyZWN0b3J5IGxpc3RpbmcsIHByZXNzIGN0cmwtbCAoPGMtbD4pIG9yIGhpdCB0aGUgPGNyPgotd2hlbiBhdG9wIHRoZSAuLyBkaXJlY3RvcnkgZW50cnkgaW4gdGhlIGxpc3RpbmcuCitUbyByZWZyZXNoIGVpdGhlciBhIGxvY2FsIG9yIHJlbW90ZSBkaXJlY3RvcnkgbGlzdGluZywgcHJlc3MgY3RybC1sICg8Yy1sPikgb3IKK2hpdCB0aGUgPGNyPiB3aGVuIGF0b3AgdGhlIC4vIGRpcmVjdG9yeSBlbnRyeSBpbiB0aGUgbGlzdGluZy4gIE9uZSBtYXkgYWxzbworcmVmcmVzaCBhIGxvY2FsIGRpcmVjdG9yeSBieSB1c2luZyAiOmUgLiIuCiAKIAogR09JTkcgVVAJCQkJCQkqbmV0cnctLSoKQEAgLTU5OCwxMCArNjMzLDEwIEBACiAKIAlzc2ggSE9TVE5BTUUgbHMgLUZMYQogCi13aGVyZSB0aGUgSE9TVE5BTUUgYmVjb21lcyB0aGUgW3VzZXJAXWhvc3RuYW1lIGFzIHJlcXVlc3RlZCBieSB0aGUgYXR0ZW1wdAotdG8gcmVhZC4gIE5hdHVyYWxseSwgdGhlIHVzZXIgbWF5IG92ZXJyaWRlIHRoaXMgY29tbWFuZCB3aXRoIHdoYXRldmVyIGlzCi1wcmVmZXJyZWQuICBUaGUgTmV0TGlzdCBmdW5jdGlvbiB3aGljaCBpbXBsZW1lbnRzIHJlbW90ZSBkaXJlY3RvcnkKLWJyb3dzaW5nIGV4cGVjdHMgdGhhdCBkaXJlY3RvcmllcyB3aWxsIGJlIGZsYWdnZWQgYnkgYSB0cmFpbGluZyBzbGFzaC4KK3doZXJlIHRoZSBIT1NUTkFNRSBiZWNvbWVzIHRoZSBbdXNlckBdaG9zdG5hbWUgYXMgcmVxdWVzdGVkIGJ5IHRoZSBhdHRlbXB0IHRvCityZWFkLiAgTmF0dXJhbGx5LCB0aGUgdXNlciBtYXkgb3ZlcnJpZGUgdGhpcyBjb21tYW5kIHdpdGggd2hhdGV2ZXIgaXMKK3ByZWZlcnJlZC4gIFRoZSBOZXRMaXN0IGZ1bmN0aW9uIHdoaWNoIGltcGxlbWVudHMgcmVtb3RlIGRpcmVjdG9yeSBicm93c2luZworZXhwZWN0cyB0aGF0IGRpcmVjdG9yaWVzIHdpbGwgYmUgZmxhZ2dlZCBieSBhIHRyYWlsaW5nIHNsYXNoLgogCiAKIEJST1dTSU5HIAkJCQkJCQkqbmV0cnctY3IqCkBAIC02MTksMTEgKzY1NCw5IEBACiB0aW1lIGFuZCBkYXRlIG9mIGxhc3QgbW9kaWZpY2F0aW9uIGZvciBsb2NhbCBkaXJlY3Rvcmllcy4KIAogCi1NQUtJTkcgQSBORVcgRElSRUNUT1JZCQkJCQkJKm5ldHJ3LW0qCitNQUtJTkcgQSBORVcgRElSRUNUT1JZCQkJCQkJKm5ldHJ3LWQqCiAKLUFjdHVhbGx5IDxMZWFkZXI+bSwgd2hlcmUgdGhlIDxMZWFkZXI+IGlzLCBieSBkZWZhdWx0LCB0aGUgYmFja3NsYXNoLgotCi1XaXRoIHRoZSAiPExlYWRlcj5tIiBtYXAgb25lIG1heSBtYWtlIGEgbmV3IGRpcmVjdG9yeSBlaXRoZXIgcmVtb3RlbHkgKHdoaWNoCitXaXRoIHRoZSAiZCIgbWFwIG9uZSBtYXkgbWFrZSBhIG5ldyBkaXJlY3RvcnkgZWl0aGVyIHJlbW90ZWx5ICh3aGljaAogZGVwZW5kcyBvbiB0aGUgZ2xvYmFsIHZhcmlhYmxlIGc6bmV0cndfbWtkaXJfY21kKSBvciBsb2NhbGx5ICh3aGljaCBkZXBlbmRzIG9uCiB0aGUgZ2xvYmFsIHZhcmlhYmxlIGc6bmV0cndfbG9jYWxfbWtkaXIpLiAgTmV0cncgd2lsbCBpc3N1ZSBhIHJlcXVlc3QgZm9yIHRoZQogbmV3IGRpcmVjdG9yeSdzIG5hbWUuICBBIGJhcmUgPENSPiBhdCB0aGF0IHBvaW50IHdpbGwgYWJvcnQgdGhlIG1ha2luZyBvZiB0aGUKQEAgLTY3NSw2ICs3MDgsNyBAQAogT25lIG1heSByZW5hbWUgYSBibG9jayBvZiBmaWxlcyBhbmQgZGlyZWN0b3JpZXMgYnkgc2VsZWN0aW5nIHRoZW0gd2l0aAogdGhlIFYgKHxsaW5ld2lzZS12aXN1YWx8KS4KIAorCiBISURJTkcgRklMRVMgT1IgRElSRUNUT1JJRVMJCSpnOm5ldHJ3LWEqICpnOm5ldHJ3X2xpc3RfaGlkZSoKIAogVGhlICJhIiBtYXAgdG9nZ2xlcyB0aGUgbmV0cncgdmltIGZpbGUgYnJvd3NlciAoYm90aCByZW1vdGUgYW5kIGxvY2FsKSBiZXR3ZWVuCkBAIC02ODUsOSArNzE5LDcgQEAKIAogRURJVCBGSUxFIE9SIERJUkVDVE9SWSBISURJTkcgTElTVAkJCQkqbmV0cnctaCoKIAotQWN0dWFsbHkgPExlYWRlcj5oLCB3aGVyZSB0aGUgPExlYWRlcj4gaXMsIGJ5IGRlZmF1bHQsIHRoZSBiYWNrc2xhc2guCi0KLVRoZSAiPExlYWRlcj5oIiBtYXAgYnJpbmdzIHVwIGEgcmVxdWVzdG9yIGFsbG93aW5nIHRoZSB1c2VyIHRvIGNoYW5nZSB0aGUKK1RoZSAiPGN0cmwtaD4iIG1hcCBicmluZ3MgdXAgYSByZXF1ZXN0b3IgYWxsb3dpbmcgdGhlIHVzZXIgdG8gY2hhbmdlIHRoZQogZmlsZS9kaXJlY3RvcnkgaGlkaW5nIGxpc3QuICBUaGUgaGlkaW5nIGxpc3QgY29uc2lzdHMgb2Ygb25lIG9yIG1vcmUgcGF0dGVybnMKIGRlbGltaXRlZCBieSBjb21tYXMuICBGaWxlcyBhbmQvb3IgZGlyZWN0b3JpZXMgc2F0aXNmeWluZyB0aGVzZSBwYXR0ZXJucyB3aWxsCiBiZSBoaWRkZW4gKGllLiBub3Qgc2hvd24pLgpAQCAtNzA3LDYgKzczOSwyMSBAQAogbGlzdGluZyB3aWxsIGF1dG9tYXRpY2FsbHkgYmUgcmVmcmVzaGVkIHRvIHJlZmxlY3QgdGhlIHNlbGVjdGVkIHN0eWxlLgogCiAKK0VESVRJTkcgVEhFIFNPUlRJTkcgU0VRVUVOQ0UJCQkJCSpuZXRydy1TKgorCitXaGVuICJTb3J0ZWQgYnkiIGlzIG5hbWUsIG9uZSBtYXkgc3BlY2lmeSBwcmlvcml0eSB2aWEgdGhlIHNvcnRpbmcKK3NlcXVlbmNlIChnOm5ldHJ3X3NvcnRfc2VxdWVuY2UpLiAgVGhlIHNvcnRpbmcgc2VxdWVuY2UgdHlwaWNhbGx5Citwcmlvcml0aXplcyB0aGUgbmFtZS1saXN0aW5nIGJ5IHN1ZmZpeCwgYWx0aG91Z2ggYW55IHBhdHRlcm4gd2lsbCBkby4KK1BhdHRlcm5zIGFyZSBkZWxpbWl0ZWQgYnkgY29tbWFzLiAgVGhlIGRlZmF1bHQgc29ydGluZyBzZXF1ZW5jZSBpczoKKz4KKwkvJCwqLFwuYmFrJCxcLm8kLFwuaCQsXC5pbmZvJCxcLnN3cCQsXC5vYmokCis8CitUaGUgbG9uZSAqIGlzIHdoZXJlIGFsbCBmaWxlbmFtZXMgbm90IGNvdmVyZWQgYnkgb25lIG9mIHRoZSBvdGhlcgorcGF0dGVybnMgd2lsbCBlbmQgdXAuICBPbmUgbWF5IGNoYW5nZSB0aGUgc29ydGluZyBzZXF1ZW5jZSBieSBtb2RpZnlpbmcKK3RoZSBnOm5ldHJ3X3NvcnRfc2VxdWVuY2UgdmFyaWFibGUgKGVpdGhlciBtYW51YWxseSBvciBpbiB5b3VyIDwudmltcmM+KQorb3IgYnkgdXNpbmcgdGhlICJTIiBtYXAuCisKKwogUkVWRVJTSU5HIFNPUlRJTkcgT1JERVIJCQkJCQkqbmV0cnctcioKIAogT25lIG1heSB0b2dnbGUgYmV0d2VlbiBub3JtYWwgYW5kIHJldmVyc2Ugc29ydGluZyBvcmRlciBieSBwcmVzc2luZyB0aGUKQEAgLTczOCw2ICs3ODUsMzggQEAKIGZpbGUgd2l0aCBtb3ppbGxhLgogCiAKK01BS0lORyBUSEUgQlJPV1NJTkcgRElSRUNUT1JZIFRIRSBDVVJSRU5UIERJUkVDVE9SWQkJKm5ldHJ3LWMqCisKK0J5IGRlZmF1bHQsIGc6bmV0cndfa2VlcGRpciBpcyAwLiAgVGhpcyBzZXR0aW5nIG1lYW5zIHRoYXQgdGhlIGN1cnJlbnQKK2RpcmVjdG9yeSB3aWxsIHRyYWNrIHRoZSBicm93c2luZyBkaXJlY3RvcnkuICBIb3dldmVyLCBzZXR0aW5nIGc6bmV0cndfa2VlcGRpcgordG8gMSAoc2F5LCBpbiB5b3VyIDwudmltcmM+KSB3aWxsIGtlZXAgdGhlIGN1cnJlbnQgZGlyZWN0b3J5IGluZGVwZW5kZW50CitvZiB0aGUgYnJvd3NpbmcgZGlyZWN0b3J5LiAgSW4gdGhhdCBjYXNlLCBpbiBvcmRlciB0byBtYWtlIHRoZSB0d28KK2RpcmVjdG9yaWVzIHRoZSBzYW1lLCB1c2UgdGhlICJjIiBtYXAgKGp1c3QgdHlwZSBjKS4KKworCitCT09LTUFSS0lORyBBIERJUkVDVE9SWQkJCQkJCSpuZXRydy1iKgorCitPbmUgbWF5IGVhc2lseSAiYm9va21hcmsiIGEgZGlyZWN0b3J5IGJ5IHVzaW5nCisKKwl7Y250fWIKKworQW55IGNvdW50IG1heSBiZSB1c2VkLgorCisKK0NIQU5HSU5HIFRPIEEgQk9PS01BUktFRCBESVJFQ1RPUlkJCQkJKm5ldHJ3LUIqCisKK1RvIGNoYW5nZSBkaXJlY3RvcnkgYmFjayB0byBhIGJvb2ttYXJrZWQgZGlyZWN0b3J5LCB1c2UKKworCXtjbnR9QgorCitBbnkgY291bnQgbWF5IGJlIHVzZWQuCisKKworTElTVElORyBCT09LTUFSS1MJCQkJCQkqbmV0cnctcSoKKworUHJlc3NpbmcgInEiIHdpbGwgbGlzdCB0aGUgYm9va21hcmtlZCBkaXJlY3Rvcmllcy4gKHF1ZXJ5KQorCisKIElNUFJPVklORyBESVJFQ1RPUlkgQlJPV1NJTkcJCQkJKm5ldHJ3LWxpc3QtaGFjayoKIAogRXNwZWNpYWxseSB3aXRoIHRoZSByZW1vdGUgZGlyZWN0b3J5IGJyb3dzZXIsIGNvbnN0YW50bHkgZW50ZXJpbmcgdGhlIHBhc3N3b3JkCkBAIC03NjcsMTUgKzg0NiwzMSBAQAogCSAgIG9yCiAJCWh0dHA6Ly92aW0uc291cmNlZm9yZ2UubmV0L3NjcmlwdHMvc2NyaXB0LnBocD9zY3JpcHRfaWQ9MTIwCiAKLQkgICBhbmQgcHV0IGl0IGludG8geW91ciBsb2NhbCBwbHVnaW4gZGlyZWN0b3J5CisJICAgYW5kIHB1dCBpdCBpbnRvIHlvdXIgbG9jYWwgcGx1Z2luIGRpcmVjdG9yeS4KKwkKKwkyLiA8RGVjaG8udmltPiBpdHNlbGYgbmVlZHMgdGhlIDxjZWN1dGlsLnZpbT4gc2NyaXB0LCBzbyB5b3UnbGwgbmVlZAorCSAgIHRvIHB1dCBpdCBpbnRvIHlvdXIgLnZpbS9wbHVnaW4sIHRvby4gIFlvdSBtYXkgb2J0YWluIGl0IGZyb206CiAKLQkyLiBFZGl0IHRoZSA8bmV0cncudmltPiBmaWxlIGFzIGZvbGxvd3M6CisJCWh0dHA6Ly9teXNpdGUudmVyaXpvbi5uZXQvYXN0cm9uYXV0L3ZpbS9pbmRleC5odG1sI1ZpbUZ1bmNzCisJCWFzICJEckMncyBVdGlsaXRpZXMiCiAKKwkzLiBFZGl0IHRoZSA8bmV0cncudmltPiBmaWxlIGJ5IHR5cGluZzoKKworCQl2aW0gbmV0cncudmltCiAJCTpEZWNob09uCisJCTp3cQogCi0JICAgKHRvIHJlc3RvcmUgdG8gbm9ybWFsLCB1c2UgIDpEZWNob09mZiApCisJICAgVG8gcmVzdG9yZSB0byBub3JtYWwgbm9uLWRlYnVnZ2luZyBiZWhhdmlvciwgZWRpdCA8bmV0cncudmltPgorCSAgIGJ5IHR5cGluZwogCi0JMy4gVGhlbiBicmluZyB1cCB2aW0gYW5kIGF0dGVtcHQgYSB0cmFuc2Zlci4gIEEgc2V0IG9mIG1lc3NhZ2VzCisJCXZpbSBuZXRydy52aW0KKwkJOkRlY2hvT2ZmCisJCTp3cQorCisJICAgVGhpcyBjb21tYW5kLCBwcm92aWRlZCBieSA8RGVjaG8udmltPiwgd2lsbCBjb21tZW50IG91dCBhbGwKKwkgICBEZWNoby1kZWJ1Z2dpbmcgc3RhdGVtZW50cyAoRGZ1bmMoKSwgRHJldCgpLCBEZWNobygpLCBEcmVkaXIoKSkuCisKKwk0LiBUaGVuIGJyaW5nIHVwIHZpbSBhbmQgYXR0ZW1wdCBhIHRyYW5zZmVyLiAgQSBzZXQgb2YgbWVzc2FnZXMKIAkgICBzaG91bGQgYXBwZWFyIGNvbmNlcm5pbmcgdGhlIHN0ZXBzIHRoYXQgPG5ldHJ3LnZpbT4gdG9vayBpbgogCSAgIGF0dGVtcHRpbmcgdG8gcmVhZC93cml0ZSB5b3VyIGZpbGUgb3ZlciB0aGUgbmV0d29yay4gIFBsZWFzZQogCSAgIHNlbmQgdGhhdCBpbmZvcm1hdGlvbiB0byA8bmV0cncudmltPidzIG1haW50YWluZXIsCmRpZmYgLS1naXQgYS9ydW50aW1lL2RvYy9yZXBlYXQudHh0IGIvcnVudGltZS9kb2MvcmVwZWF0LnR4dAppbmRleCBmYWYzMTE2Li43ZWYxY2Y5IDEwMDY0NAotLS0gYS9ydW50aW1lL2RvYy9yZXBlYXQudHh0CisrKyBiL3J1bnRpbWUvZG9jL3JlcGVhdC50eHQKQEAgLTEsNCArMSw0IEBACi0qcmVwZWF0LnR4dCogICAgRm9yIFZpbSB2ZXJzaW9uIDcuMGFhLiAgTGFzdCBjaGFuZ2U6IDIwMDQgSnVuIDIyCisqcmVwZWF0LnR4dCogICAgRm9yIFZpbSB2ZXJzaW9uIDcuMGFhLiAgTGFzdCBjaGFuZ2U6IDIwMDQgSnVsIDMwCiAKIAogCQkgIFZJTSBSRUZFUkVOQ0UgTUFOVUFMICAgIGJ5IEJyYW0gTW9vbGVuYWFyCkBAIC0yMCw3ICsyMCw4IEBACiAJCQkJCQkJKi4qCiAuCQkJUmVwZWF0IGxhc3QgY2hhbmdlLCB3aXRoIGNvdW50IHJlcGxhY2VkIHdpdGggW2NvdW50XS4KIAkJCUFsc28gcmVwZWF0IGEgeWFuayBjb21tYW5kLCB3aGVuIHRoZSAneScgZmxhZyBpcwotCQkJaW5jbHVkZWQgaW4gJ2Nwb3B0aW9ucycuCisJCQlpbmNsdWRlZCBpbiAnY3BvcHRpb25zJy4gIERvZXMgbm90IHJlcGVhdCBhCisJCQljb21tYW5kLWxpbmUgY29tbWFuZC4KIAogU2ltcGxlIGNoYW5nZXMgY2FuIGJlIHJlcGVhdGVkIHdpdGggdGhlICIuIiBjb21tYW5kLiAgV2l0aG91dCBhIGNvdW50LCB0aGUKIGNvdW50IG9mIHRoZSBsYXN0IGNoYW5nZSBpcyB1c2VkLiAgSWYgeW91IGVudGVyIGEgY291bnQsIGl0IHdpbGwgcmVwbGFjZSB0aGUKZGlmZiAtLWdpdCBhL3J1bnRpbWUvZG9jL3N5bnRheC50eHQgYi9ydW50aW1lL2RvYy9zeW50YXgudHh0CmluZGV4IGQzMTEyMmIuLjI4ZGU3OWEgMTAwNjQ0Ci0tLSBhL3J1bnRpbWUvZG9jL3N5bnRheC50eHQKKysrIGIvcnVudGltZS9kb2Mvc3ludGF4LnR4dApAQCAtMSw0ICsxLDQgQEAKLSpzeW50YXgudHh0KglGb3IgVmltIHZlcnNpb24gNy4wYWEuICBMYXN0IGNoYW5nZTogMjAwNCBKdWwgMTUKKypzeW50YXgudHh0KglGb3IgVmltIHZlcnNpb24gNy4wYWEuICBMYXN0IGNoYW5nZTogMjAwNCBTZXAgMDEKIAogCiAJCSAgVklNIFJFRkVSRU5DRSBNQU5VQUwJICBieSBCcmFtIE1vb2xlbmFhcgpAQCAtNjY0LDEzICs2NjQsMjEgQEAKICAgICBzeW4gc3luYyBmcm9tc3RhcnQKICAgICBzZXQgZm9sZG1ldGhvZD1zeW50YXgKIAorQ0gJCQkJCQkqY2gudmltKiAqY2gtc3ludGF4KgorCitDL0MrKyBpbnRlcnByZXRlci4gIENoIGhhcyBzaW1pbGFyIHN5bnRheCBoaWdobGlnaHRpbmcgdG8gQyBhbmQgYnVpbGRzIHVwb24KK3RoZSBDIHN5bnRheCBmaWxlLiAgU2VlIHxjLnZpbXwgZm9yIGFsbCB0aGUgc2V0dGluZ3MgdGhhdCBhcmUgYXZhaWxhYmxlIGZvciBDLgorCitCeSBzZXR0aW5nIGEgdmFyaWFibGUgeW91IGNhbiB0ZWxsIFZpbSB0byB1c2UgQ2ggc3ludGF4IGZvciAqLmggZmlsZXMsIGluc3RlYWQKK29mIEMgb3IgQysrOiA+CisJOmxldCBjaF9zeW50YXhfZm9yX2ggPSAxCisKIAogQ0hJTEwJCQkJCQkqY2hpbGwudmltKiAqY2hpbGwtc3ludGF4KgogCiBDaGlsbCBzeW50YXggaGlnaGxpZ2h0aW5nIGlzIHNpbWlsYXIgdG8gQy4gIFNlZSB8Yy52aW18IGZvciBhbGwgdGhlIHNldHRpbmdzCiB0aGF0IGFyZSBhdmFpbGFibGUuICBBZGRpdGlvbmFsbHkgdGhlcmUgaXM6CiAKLWNoaWxsX3N5bnRheF9mb3JfaAl1c2UgQ2ggc3ludGF4IGZvciAqLmggZmlsZXMsIGluc3RlYWQgb2YgQyBvciBDKysKIGNoaWxsX3NwYWNlX2Vycm9ycwlsaWtlIGNfc3BhY2VfZXJyb3JzCiBjaGlsbF9jb21tZW50X3N0cmluZwlsaWtlIGNfY29tbWVudF9zdHJpbmdzCiBjaGlsbF9taW5saW5lcwkJbGlrZSBjX21pbmxpbmVzCkBAIC0xNzc2LDE0ICsxNzg0LDIyIEBACiAKIAk6bGV0IHBlcmxfaW5jbHVkZV9wb2QgPSAxCiAKLVRvIGhhbmRsZSBwYWNrYWdlIHJlZmVyZW5jZXMgaW4gdmFyaWFibGUgYW5kIGZ1bmN0aW9uIG5hbWVzIGRpZmZlcmVudGx5IGZyb20KLXRoZSByZXN0IG9mIHRoZSBuYW1lIChsaWtlICdQa2dOYW1lOjonIGluICckUGtnTmFtZTo6VmFyTmFtZScpOiA+CitUaGUgcmVkdWNlIHRoZSBjb21wbGV4aXR5IG9mIHBhcnNpbmcgKGFuZCBpbmNyZWFzZSBwZXJmb3JtYW5jZSkgeW91IGNhbiBzd2l0Y2gKK29mZiB0d28gZWxlbWVudHMgaW4gdGhlIHBhcnNpbmcgb2YgdmFyaWFibGUgbmFtZXMgYW5kIGNvbnRlbnRzLiA+CiAKLQk6bGV0IHBlcmxfd2FudF9zY29wZV9pbl92YXJpYWJsZXMgPSAxCitUbyBoYW5kbGUgcGFja2FnZSByZWZlcmVuY2VzIGluIHZhcmlhYmxlIGFuZCBmdW5jdGlvbiBuYW1lcyBub3QgZGlmZmVyZW50bHkKK2Zyb20gdGhlIHJlc3Qgb2YgdGhlIG5hbWUgKGxpa2UgJ1BrZ05hbWU6OicgaW4gJyRQa2dOYW1lOjpWYXJOYW1lJyk6ID4KIAotSWYgeW91IHdhbnQgY29tcGxleCB0aGluZ3MgbGlrZSAnQHskeyJmb28ifX0nIHRvIGJlIHBhcnNlZDogPgorCTpsZXQgcGVybF9ub19zY29wZV9pbl92YXJpYWJsZXMgPSAxCiAKLQk6bGV0IHBlcmxfZXh0ZW5kZWRfdmFycyA9IDEKKyhJbiBWaW0gNi54IGl0IHdhcyB0aGUgb3RoZXIgd2F5IGFyb3VuZDogInBlcmxfd2FudF9zY29wZV9pbl92YXJpYWJsZXMiCitlbmFibGVkIGl0LikKKworSWYgeW91IGRvIG5vdCB3YW50IGNvbXBsZXggdGhpbmdzIGxpa2UgJ0B7JHsiZm9vIn19JyB0byBiZSBwYXJzZWQ6ID4KKworCTpsZXQgcGVybF9ub19leHRlbmRlZF92YXJzID0gMQorCit7SW4gVmltIDYueCBpdCB3YXMgdGhlIG90aGVyIHdheSBhcm91bmQ6ICJwZXJsX2V4dGVuZGVkX3ZhcnMiIGVuYWJsZWQgaXQuKQogCiBUaGUgY29sb3Jpbmcgc3RyaW5ncyBjYW4gYmUgY2hhbmdlZC4gQnkgZGVmYXVsdCBzdHJpbmdzIGFuZCBxcSBmcmllbmRzIHdpbGwgYmUKIGhpZ2hsaWdodGVkIGxpa2UgdGhlIGZpcnN0IGxpbmUuIElmIHlvdSBzZXQgdGhlIHZhcmlhYmxlCkBAIC0xODEzLDcgKzE4MjksMTEgQEAKIAogSWYgeW91IHdhbnQgdG8gdXNlIGZvbGRpbmcgd2l0aCBwZXJsLCBzZXQgcGVybF9mb2xkOiA+CiAKLSAgICAgICA6bGV0IHBlcmxfZm9sZCA9IDEKKwk6bGV0IHBlcmxfZm9sZCA9IDEKKworSWYgeW91IHdhbnQgdG8gZm9sZCBibG9ja3MgaW4gaWYgc3RhdGVtZW50cywgZXRjLiBhcyB3ZWxsIHNldCB0aGUgZm9sbG93aW5nOiA+CisKKwk6bGV0IHBlcmxfZm9sZF9ibG9ja3MgPSAxCiAKIAogUEhQMyBhbmQgUEhQNAkJKnBocC52aW0qICpwaHAzLnZpbSogKnBocC1zeW50YXgqICpwaHAzLXN5bnRheCoKQEAgLTIyNjQsNiArMjI4NCwxNyBAQAogdGhlIHN5bnRheCBmaWxlLgogCiAKK1NRTAkJCQkJCSpzcWwudmltKiAqc3FsLXN5bnRheCoKKwkJCQkJKnNxbGluZm9ybWl4LnZpbSogKnNxbGluZm9ybWl4LXN5bnRheCoKKworV2hpbGUgdGhlcmUgaXMgYW4gQU5TSSBzdGFuZGFyZCBmb3IgU1FMLCBtb3N0IGRhdGFiYXNlIGVuZ2luZXMgYWRkIHRoZWlyCitvd24gY3VzdG9tIGV4dGVuc2lvbnMuICBWaW0gY3VycmVudGx5IHN1cHBvcnRzIHRoZSBPcmFjbGUgYW5kIEluZm9ybWl4CitkaWFsZWN0cyBvZiBTUUwuICBWaW0gYXNzdW1lcyAiKi5zcWwiIGZpbGVzIGFyZSBPcmFjbGUgU1FMIGJ5IGRlZmF1bHQuCisKK0lmIHlvdSB3YW50IHRvIHVzZSB0aGUgSW5mb3JtaXggZGlhbGVjdCwgcHV0IHRoaXMgaW4geW91ciBzdGFydHVwIHZpbXJjOiA+CisgICAgOmxldCBnOmZpbGV0eXBlX3NxbCA9ICJzcWxpbmZvcm1peCIgCisKKwogVENTSAkJCQkJCSp0Y3NoLnZpbSogKnRjc2gtc3ludGF4KgogCiBUaGlzIGNvdmVycyB0aGUgc2hlbGwgbmFtZWQgInRjc2giLiAgSXQgaXMgYSBzdXBlcnNldCBvZiBjc2guICBTZWUgfGNzaC52aW18CkBAIC0zNTE0LDYgKzM1NDUsOCBAQAogCQkJIjpjb2xvcnNjaGVtZSIgaW4gYSBjb2xvciBzY2hlbWUgc2NyaXB0LgogCQkJQWZ0ZXIgdGhlIGNvbG9yIHNjaGVtZSBoYXMgYmVlbiBsb2FkZWQgdGhlCiAJCQl8Q29sb3JTY2hlbWV8IGF1dG9jb21tYW5kIGV2ZW50IGlzIHRyaWdnZXJlZC4KKwkJCUZvciBpbmZvIGFib3V0IHdyaXRpbmcgYSBjb2xvcnNjaGVtZSBmaWxlOiA+CisJCQkJOmVkaXQgJFZJTVJVTlRJTUUvY29sb3JzL1JFQURNRS50eHQKIAogOmhpW2dobGlnaHRdCQlMaXN0IGFsbCB0aGUgY3VycmVudCBoaWdobGlnaHQgZ3JvdXBzIHRoYXQgaGF2ZQogCQkJYXR0cmlidXRlcyBzZXQuCmRpZmYgLS1naXQgYS9ydW50aW1lL2RvYy90YWdzIGIvcnVudGltZS9kb2MvdGFncwppbmRleCA5OGE0MGU2Li5lNjM1MjY1IDEwMDY0NAotLS0gYS9ydW50aW1lL2RvYy90YWdzCisrKyBiL3J1bnRpbWUvZG9jL3RhZ3MKQEAgLTE5OTQsNiArMTk5NCw4IEBACiA6anVtcHMJbW90aW9uLnR4dAkvKjpqdW1wcyoKIDprCW1vdGlvbi50eHQJLyo6ayoKIDprZWUJbW90aW9uLnR4dAkvKjprZWUqCis6a2VlcGEJZWRpdGluZy50eHQJLyo6a2VlcGEqCis6a2VlcGFsdAllZGl0aW5nLnR4dAkvKjprZWVwYWx0KgogOmtlZXBqCW1vdGlvbi50eHQJLyo6a2VlcGoqCiA6a2VlcGp1bXBzCW1vdGlvbi50eHQJLyo6a2VlcGp1bXBzKgogOmtlZXBtYXJrcwltb3Rpb24udHh0CS8qOmtlZXBtYXJrcyoKQEAgLTQxNDMsNiArNDE0NSw4IEBACiBjYXRjaC1vcmRlcglldmFsLnR4dAkvKmNhdGNoLW9yZGVyKgogY2F0Y2gtdGV4dAlldmFsLnR4dAkvKmNhdGNoLXRleHQqCiBjYwljaGFuZ2UudHh0CS8qY2MqCitjaC1zeW50YXgJc3ludGF4LnR4dAkvKmNoLXN5bnRheCoKK2NoLnZpbQlzeW50YXgudHh0CS8qY2gudmltKgogY2hhbmdlLWxpc3QtanVtcHMJbW90aW9uLnR4dAkvKmNoYW5nZS1saXN0LWp1bXBzKgogY2hhbmdlLnR4dAljaGFuZ2UudHh0CS8qY2hhbmdlLnR4dCoKIGNoYW5nZWQtNS4xCXZlcnNpb241LnR4dAkvKmNoYW5nZWQtNS4xKgpAQCAtNDY4OSw2ICs0NjkzLDcgQEAKIGZvcnRyYW4udmltCXN5bnRheC50eHQJLypmb3J0cmFuLnZpbSoKIGZyZW5jaC1tYWlsbGlzdAlpbnRyby50eHQJLypmcmVuY2gtbWFpbGxpc3QqCiBmcm9tYm9vawl1c3JfMDEudHh0CS8qZnJvbWJvb2sqCitmdGRldGVjdAlmaWxldHlwZS50eHQJLypmdGRldGVjdCoKIGZ0cAlwaV9uZXRydy50eHQJLypmdHAqCiBmdHBsdWdpbgl1c3JfNDEudHh0CS8qZnRwbHVnaW4qCiBmdHBsdWdpbi1kb2NzCWZpbGV0eXBlLnR4dAkvKmZ0cGx1Z2luLWRvY3MqCkBAIC00NzMwLDcgKzQ3MzUsNyBAQAogZzpleHBsVXNlU2VwYXJhdG9ycwlwaV9leHBsLnR4dAkvKmc6ZXhwbFVzZVNlcGFyYXRvcnMqCiBnOmV4cGxWZXJ0aWNhbAlwaV9leHBsLnR4dAkvKmc6ZXhwbFZlcnRpY2FsKgogZzpleHBsV2luU2l6ZQlwaV9leHBsLnR4dAkvKmc6ZXhwbFdpblNpemUqCi1nOm5ldHJ3X2EJcGlfbmV0cncudHh0CS8qZzpuZXRyd19hKgorZzpuZXRydy1hCXBpX25ldHJ3LnR4dAkvKmc6bmV0cnctYSoKIGc6bmV0cndfbGlzdF9jbWQJcGlfbmV0cncudHh0CS8qZzpuZXRyd19saXN0X2NtZCoKIGc6bmV0cndfbGlzdF9oaWRlCXBpX25ldHJ3LnR4dAkvKmc6bmV0cndfbGlzdF9oaWRlKgogZzpuZXRyd19ybV9jbWQJcGlfbmV0cncudHh0CS8qZzpuZXRyd19ybV9jbWQqCkBAIC01NDM0LDE5ICs1NDM5LDIyIEBACiBuZXRiZWFucy50eHQJbmV0YmVhbnMudHh0CS8qbmV0YmVhbnMudHh0KgogbmV0cncJcGlfbmV0cncudHh0CS8qbmV0cncqCiBuZXRydy0tCXBpX25ldHJ3LnR4dAkvKm5ldHJ3LS0qCituZXRydy1CCXBpX25ldHJ3LnR4dAkvKm5ldHJ3LUIqCiBuZXRydy1ECXBpX25ldHJ3LnR4dAkvKm5ldHJ3LUQqCi1uZXRydy1ICXBpX25ldHJ3LnR4dAkvKm5ldHJ3LUgqCi1uZXRydy1NCXBpX25ldHJ3LnR4dAkvKm5ldHJ3LU0qCiBuZXRydy1SCXBpX25ldHJ3LnR4dAkvKm5ldHJ3LVIqCituZXRydy1TCXBpX25ldHJ3LnR4dAkvKm5ldHJ3LVMqCiBuZXRydy1hY3RpdmF0ZQlwaV9uZXRydy50eHQJLypuZXRydy1hY3RpdmF0ZSoKK25ldHJ3LWIJcGlfbmV0cncudHh0CS8qbmV0cnctYioKIG5ldHJ3LWJyb3dzZQlwaV9uZXRydy50eHQJLypuZXRydy1icm93c2UqCiBuZXRydy1icm93c2UtY21kcwlwaV9uZXRydy50eHQJLypuZXRydy1icm93c2UtY21kcyoKIG5ldHJ3LWJyb3dzZS12YXIJcGlfbmV0cncudHh0CS8qbmV0cnctYnJvd3NlLXZhcioKLW5ldHJ3LWMtbAlwaV9uZXRydy50eHQJLypuZXRydy1jLWwqCituZXRydy1jCXBpX25ldHJ3LnR4dAkvKm5ldHJ3LWMqCiBuZXRydy1jYWRhdmVyCXBpX25ldHJ3LnR4dAkvKm5ldHJ3LWNhZGF2ZXIqCiBuZXRydy1jb250ZW50cwlwaV9uZXRydy50eHQJLypuZXRydy1jb250ZW50cyoKIG5ldHJ3LWNyCXBpX25ldHJ3LnR4dAkvKm5ldHJ3LWNyKgogbmV0cnctY3JlZGl0cwlwaV9uZXRydy50eHQJLypuZXRydy1jcmVkaXRzKgorbmV0cnctY3RybC1sCXBpX25ldHJ3LnR4dAkvKm5ldHJ3LWN0cmwtbCoKK25ldHJ3LWQJcGlfbmV0cncudHh0CS8qbmV0cnctZCoKIG5ldHJ3LWRlYnVnCXBpX25ldHJ3LnR4dAkvKm5ldHJ3LWRlYnVnKgogbmV0cnctZGVsZXRlCXBpX25ldHJ3LnR4dAkvKm5ldHJ3LWRlbGV0ZSoKIG5ldHJ3LWRpcglwaV9uZXRydy50eHQJLypuZXRydy1kaXIqCkBAIC01NDU0LDYgKzU0NjIsNyBAQAogbmV0cnctZmlsZQlwaV9uZXRydy50eHQJLypuZXRydy1maWxlKgogbmV0cnctZml4dXAJcGlfbmV0cncudHh0CS8qbmV0cnctZml4dXAqCiBuZXRydy1mdHAJcGlfbmV0cncudHh0CS8qbmV0cnctZnRwKgorbmV0cnctaAlwaV9uZXRydy50eHQJLypuZXRydy1oKgogbmV0cnctaGVscAlwaV9uZXRydy50eHQJLypuZXRydy1oZWxwKgogbmV0cnctaGlzdG9yeQlwaV9uZXRydy50eHQJLypuZXRydy1oaXN0b3J5KgogbmV0cnctaQlwaV9uZXRydy50eHQJLypuZXRydy1pKgpAQCAtNTQ2MSwxMyArNTQ3MCwxNyBAQAogbmV0cnctbGlzdC1oYWNrCXBpX25ldHJ3LnR4dAkvKm5ldHJ3LWxpc3QtaGFjayoKIG5ldHJ3LW1vdmUJcGlfbmV0cncudHh0CS8qbmV0cnctbW92ZSoKIG5ldHJ3LW5ldHJjCXBpX25ldHJ3LnR4dAkvKm5ldHJ3LW5ldHJjKgorbmV0cnctbnJlYWQJcGlfbmV0cncudHh0CS8qbmV0cnctbnJlYWQqCituZXRydy1ud3JpdGUJcGlfbmV0cncudHh0CS8qbmV0cnctbndyaXRlKgogbmV0cnctbwlwaV9uZXRydy50eHQJLypuZXRydy1vKgogbmV0cnctb3B0aW9ucwlwaV9uZXRydy50eHQJLypuZXRydy1vcHRpb25zKgogbmV0cnctcGFzc3dkCXBpX25ldHJ3LnR4dAkvKm5ldHJ3LXBhc3N3ZCoKK25ldHJ3LXBhdGgJcGlfbmV0cncudHh0CS8qbmV0cnctcGF0aCoKIG5ldHJ3LXByb3RvY29sCXBpX25ldHJ3LnR4dAkvKm5ldHJ3LXByb3RvY29sKgorbmV0cnctcQlwaV9uZXRydy50eHQJLypuZXRydy1xKgogbmV0cnctcglwaV9uZXRydy50eHQJLypuZXRydy1yKgorbmV0cnctcmVhZAlwaV9uZXRydy50eHQJLypuZXRydy1yZWFkKgogbmV0cnctcmVmCXBpX25ldHJ3LnR4dAkvKm5ldHJ3LXJlZioKLW5ldHJ3LXJlbW92ZQlwaV9uZXRydy50eHQJLypuZXRydy1yZW1vdmUqCiBuZXRydy1yZW5hbWUJcGlfbmV0cncudHh0CS8qbmV0cnctcmVuYW1lKgogbmV0cnctcwlwaV9uZXRydy50eHQJLypuZXRydy1zKgogbmV0cnctdHJhbnNwYXJlbnQJcGlfbmV0cncudHh0CS8qbmV0cnctdHJhbnNwYXJlbnQqCkBAIC01NDc1LDYgKzU0ODgsOCBAQAogbmV0cnctdXJscwlwaV9uZXRydy50eHQJLypuZXRydy11cmxzKgogbmV0cnctdglwaV9uZXRydy50eHQJLypuZXRydy12KgogbmV0cnctdmFyCXBpX25ldHJ3LnR4dAkvKm5ldHJ3LXZhcioKK25ldHJ3LXZhcmlhYmxlcwlwaV9uZXRydy50eHQJLypuZXRydy12YXJpYWJsZXMqCituZXRydy13cml0ZQlwaV9uZXRydy50eHQJLypuZXRydy13cml0ZSoKIG5ldHJ3LXgJcGlfbmV0cncudHh0CS8qbmV0cncteCoKIG5ldHJ3LXhmZXIJcGlfbmV0cncudHh0CS8qbmV0cncteGZlcioKIG5ldHJ3LnZpbQlwaV9uZXRydy50eHQJLypuZXRydy52aW0qCkBAIC01OTY2LDYgKzU5ODEsMTAgQEAKIHNwb29uCW9zX3VuaXgudHh0CS8qc3Bvb24qCiBzcHVwLXN5bnRheAlzeW50YXgudHh0CS8qc3B1cC1zeW50YXgqCiBzcHVwLnZpbQlzeW50YXgudHh0CS8qc3B1cC52aW0qCitzcWwtc3ludGF4CXN5bnRheC50eHQJLypzcWwtc3ludGF4Kgorc3FsLnZpbQlzeW50YXgudHh0CS8qc3FsLnZpbSoKK3NxbGluZm9ybWl4LXN5bnRheAlzeW50YXgudHh0CS8qc3FsaW5mb3JtaXgtc3ludGF4Kgorc3FsaW5mb3JtaXgudmltCXN5bnRheC50eHQJLypzcWxpbmZvcm1peC52aW0qCiBzc2NhbmYJZXZhbC50eHQJLypzc2NhbmYqCiBzdGFuZGFyZC1wbHVnaW4JdXNyXzA1LnR4dAkvKnN0YW5kYXJkLXBsdWdpbioKIHN0YW5kYXJkLXBsdWdpbi1saXN0CWhlbHAudHh0CS8qc3RhbmRhcmQtcGx1Z2luLWxpc3QqCmRpZmYgLS1naXQgYS9ydW50aW1lL2RvYy90b2RvLnR4dCBiL3J1bnRpbWUvZG9jL3RvZG8udHh0CmluZGV4IDEzMTNlNDUuLmI3MmM2MmMgMTAwNjQ0Ci0tLSBhL3J1bnRpbWUvZG9jL3RvZG8udHh0CisrKyBiL3J1bnRpbWUvZG9jL3RvZG8udHh0CkBAIC0xLDQgKzEsNCBAQAotKnRvZG8udHh0KiAgICAgIEZvciBWaW0gdmVyc2lvbiA3LjBhYS4gIExhc3QgY2hhbmdlOiAyMDA0IEp1bCAyOAorKnRvZG8udHh0KiAgICAgIEZvciBWaW0gdmVyc2lvbiA3LjBhYS4gIExhc3QgY2hhbmdlOiAyMDA0IEF1ZyAzMQogCiAKIAkJICBWSU0gUkVGRVJFTkNFIE1BTlVBTAkgIGJ5IEJyYW0gTW9vbGVuYWFyCkBAIC0zMCw2ICszMCwxNyBAQAogCQkJCQkJCSprbm93bi1idWdzKgogLS0tLS0tLS0tLS0tLS0tLS0tLS0gS25vd24gYnVncyBhbmQgY3VycmVudCB3b3JrIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKK011bHRpLWJ5dGUgY2hhciBpbiBmaWxlIG5hbWUgY2F1c2VzIHRyb3VibGUgZm9yIG9wZW5pbmcsICJzZW5kIHRvIiBtZW51IGFuZAord3JpdGluZy4gIFBhdGNoZXMgZnJvbSBUYXJvIE11cmFva2E6CisgICAgfi9NYWlsL29sZG1haWwvbXVyYW9rYS9pbi4wMDU3NQorICAgIH4vTWFpbC9vbGRtYWlsL211cmFva2EvaW4uMDA1NzcKKworSXMgdGhlcmUgYSBsaW1pdCBvbiB0aGUgYnVmZmVyIGxpc3QgaW4gdGhlIHZpbWluZm8gZmlsZT8KKyI6biB+Ly50cmFzaGNhbi9ib2d1cyoiIGZpbGxzIGl0LgorCitXaGVuIGd2aW0gaXMgc3RhcnRlZCBmcm9tIHRoZSBjb250ZXh0IG1lbnUgdGhlIHh4ZCBtZW51IGVudHJpZXMgZG9uJ3Qgd29yaworKFZhbGVuY2lhKS4gIHh4ZC5leGUgaXMgbm90IGluICRWSU1SVU5USU1FLgorCiBBYm9ydGluZyBhdCB0aGUgQVRURU5USU9OIHByb21wdCBjYXVzZXMgdHJvdWJsZToKICAgICBidWZmZXIgcmVtYWlucyBhY3RpdmUsIG53aW5kb3dzIGlzbid0IGNsb3NlZCAoZml4ZWQgaW4gYnVmZmVyLmMpCiAgICAgYWx0ZXJuYXRlIGJ1ZmZlciBnZXRzICJyZWFkIGVycm9yIiBmbGFnLgpAQCAtNDQsNiArNTUsMTIgQEAKICAgICBndWlfZG9fZmluZHJlcGwoZmxhZ3MsIGZpbmRfdGV4dCwgcmVwbF90ZXh0LCBkb3duKQogICAgIHNlcnZlckdldFZpbU5hbWVzKGRweSkgIGlmX3hjbWRzcnYuYywgb3NfbXN3aW4uYwogCitXaW4zMjogV2hlbiB0aGUgcGF0aCB0byBhIGZpbGUgaGFzIFJ1c3NpYW4gY2hhcmFjdGVycywgIjpjZCAlOnA6aCIgZG9lc24ndAord29yay4gKFZhbGVyeSBLb25kYWtvZmYpCisKK1dpbjMyOiBXaGVuIGFuIGFyZ3VtZW50IGlzIHR5cGVkIGluIGEgY29uc29sZSBpbiB0aGUgYWN0aXZlIGNvZGVwYWdlLCBhbmQKKydlbmNvZGluZycgaXMgInV0Zi04IiwgZGV0ZWN0IHRoaXMgZnJvbSBpbGxlZ2FsIGNoYXJhY3RlcnMuICBDb252ZXJ0IGZyb20KK2NvbnNvbGUgb3IgYWN0aXZlIGNvZGVwYWdlIHRvIHV0Zi04IHRoZW4uCiAKIEZvciB2ZXJzaW9uIDcuMDoKIC0gICBJbmNsdWRlIG1hbnkgUEFUQ0hFUzoKQEAgLTgxLDYgKzk4LDggQEAKIAlQYXRjaCBmcm9tIFlha292IExlcm5lciwgaW5jbHVkaW5nIHRlc3QgKDIwMDQgSmFuIDcpLgogCVZpbVJlc2l6ZWQJICAgIC0gV2hlbiB0aGUgVmltIHdpbmRvdyBoYXMgYmVlbiByZXNpemVkIChTSUdXSU5DSCkKIAkgIHBhdGNoIGZyb20gWWFrb3YgTGVybmVyLCAyMDAzIEp1bHkgMjQuCisJUGF0Y2ggZm9yIHNwZWNpZnlpbmcgYW4gZXhwcmVzc2lvbiBmb3IgbnVtYmVyZWQgbGlzdHMuIChIdWdvIEhhYXMsCisJMjAwNCBBdWcgNykKICAgICAtLS0gYXdhaXRpbmcgdXBkYXRlZCBwYXRjaCAtLS0KICAgICA3ICAgQWRkIHBhdGNoIGZyb20gV2FsbCBmb3IgdGhpcyBvbmUgKCB+L01haWwvb2xkbWFpbC93YWxsL2luLjAwMDE5ICk6CiAJJ2ZsaXBjYXNlJyB2YXJpYWJsZTogdXBwZXIvbG93ZXJjYXNlIHBhaXJzLgpAQCAtMjMwLDcgKzI0OSw4IEBACiAtICAgU1RJQ0tZIENVUlNPUjogQWRkIGEgd2F5IG9mIHNjcm9sbGluZyB0aGF0IGxlYXZlcyB0aGUgY3Vyc29yIHdoZXJlIGl0IGlzLgogICAgIEVzcGVjaWFsbHkgd2hlbiB1c2luZyB0aGUgc2Nyb2xsYmFyLiAgVHlwaW5nIGEgY3Vyc29yLW1vdmVtZW50IGNvbW1hbmQKICAgICBzY3JvbGxzIGJhY2sgdG8gd2hlcmUgdGhlIGN1cnNvciBpcy4KLTggICBTdXBwb3J0IGZvdXIgY29tcG9zaW5nIGNoYXJhY3RlcnMsIG5lZWRlZCBmb3IgSGVicmV3LiAoUm9uIEFhcm9uKQorOCAgIFN1cHBvcnQgZm91ciBjb21wb3NpbmcvY29tYmluaW5nIGNoYXJhY3RlcnMsIG5lZWRlZCBmb3IgSGVicmV3LiAoUm9uIEFhcm9uKQorICAgIEFkZCB0aGUgJ21heGNvbWJpbmluZycgb3B0aW9uIHRvIHNldCB0aGUgbnIuIG9mIGNvbXBvc2luZyBjaGFyYWN0ZXJzLgogLSAgIEFkZCBhIGZldyBtb3JlIHRoaW5ncyB0byAnZGlmZm9wdCc6ICJob3Jpem9udGFsIiwgInZlcnRpY2FsIiwKICAgICAiZm9sZGNvbHVtbiIuIChCZW5qaSBGaXNoZXIsIDIwMDQgSnVuIDIxKQogLSAgIEZpbGVDaGFuZ2VkU2hlbGxQb3N0IGF1dG9jb21tYW5kIGV2ZW50OiBhZnRlciAobm90KSByZWxvYWRpbmcgYSBjaGFuZ2VkCkBAIC0yNTYsNiArMjc2LDE0IEBACiAgICAgdGhlIHBhcnQgdGhhdCBhbHJlYWR5IG1hdGNoZWQgaXMgZG91YmxlZCB0aGVuLiAgUmVtb3ZlIHRoZSBwYXJ0IG9mIHRoZQogICAgIHdvcmQgdGhhdCB3b3VsZCBiZSBkb3VibGVkLiAgTWFrZSBpdCB3b3JrIGxpbmUgQ1RSTC1OIGluIEluc2VydCBtb2RlLgogLSAgIEFkZCBMdWEgaW50ZXJmYWNlPyAoV29sZmdhbmcgT2VydGwpCistICAgIm9uZW1vcmUiIGZsYWcgaW4gJ3ZpcnR1YWxlZGl0JzogbW92ZSBjdXJzb3IgcGFzdCBlbmQgb2YgbGluZS4gIFBhdGNoIGJ5CisgICAgTWF0dGlhcyBGbG9kaW4gKDIwMDQgSnVsIDMwKQorCitTdXBwb3J0ICI6c2V0IHN5bnRheD1jcHAuZG94eWdlbiI/ICBTdWdnZXN0ZWQgcGF0Y2ggYnkgTWljaGFlbCBHZWRkZXMgKDkgQXVnCisyMDA0KS4gIFNob3VsZCBhbHNvIHdvcmsgZm9yICdmaWxldHlwZScuCisKK1BhdGNoIGZvciAnYnJlYWtpbmRlbnQnIG9wdGlvbjogcmVwZWF0IGluZGVudCBmb3Igd3JhcHBlZCBsaW5lLiAoVmFjbGF2CitTbWlsYXVlciwgMjAwNCBBdWcgMTcpCiAKIAogVmkgaW5jb21wYXRpYmlsaXR5OgpAQCAtMzY1LDYgKzM5Myw5IEBACiAgICAgImx1Y2lkYV9jb25zb2xlOmg4IikuCiA2ICAgV2luMzIgR1VJOiBXaXRoICItdSBOT05FIC1VIE5PTkUiIGFuZCBkb2luZyAiQ1RSTC1XIHYiICJDVFJMLVcgbyIsIHRoZSAiOiIKICAgICBvZiAiOm9ubHkiIGlzIGhpZ2hsaWdodGVkIGxpa2UgdGhlIGN1cnNvci4gIChMaXBlbGlzKQorOCAgIFdoZW4gJ2VuY29kaW5nJyBpcyAidXRmLTgiLCBzaG91bGQgdXNlICdndWlmb250JyBmb3IgYm90aCBub3JtYWwgYW5kIHdpZGUKKyAgICBjaGFyYWN0ZXJzIHRvIG1ha2UgQXNpYW4gbGFuZ3VhZ2VzIHdvcmsuICBXaW4zMiBmb250cyBjb250YWluIGJvdGgKKyAgICB0eXBlIG9mIGNoYXJhY3RlcnMuCiA3ICAgV2hlbiBmb250IHNtb290aGluZyBpcyBlbmFibGVkLCByZWRyYXdpbmcgY2FuIGJlY29tZSB2ZXJ5IHNsb3cuICBUaGUgcmVhc29uCiAgICAgYXBwZWFycyB0byBiZSBkcmF3aW5nIHdpdGggYSB0cmFuc3BhcmVudCBiYWNrZ3JvdW5kLiAgV291bGQgaXQgYmUgcG9zc2libGUKICAgICB0byB1c2UgYW4gb3BhcXVlIGJhY2tncm91bmQgaW4gbW9zdCBwbGFjZXM/CkBAIC0xMDgxLDYgKzExMTIsOCBAQAogCQkJCQkJICAgICpleHRlbnNpb25zLWltcHJvdmVtZW50cyoKIAogRG9jdW1lbnRhdGlvbjoKKzggICBMaXN0IG9mIG9wdGlvbnMgc2hvdWxkIG1lbnRpb24gd2hldGhlciBlbnZpcm9ubWVudCB2YXJpYWJsZXMgYXJlIGV4cGFuZGVkCisgICAgb3Igbm90LgogOCAgIEV4dGVuZCB1c3JfMjcudHh0IGEgYml0LiAoQWRhbSBTZXlmYXJ0aCkKIDcgICBBZGQgYSBzZWN0aW9uIG9uIGRlYnVnZ2luZyBzY3JpcHRzIGluIHRoZSB1c2VyIG1hbnVhbC4KIDkgICBNYWtlIHRoZSBSZWZlcmVuY2UgTWFudWFsIG1vcmUgcHJlY2lzZS4gIEZvciBlYWNoIGNvbW1hbmQgbWVudGlvbjoKQEAgLTI5NzMsNiArMzAwNiw4IEBACiAgICAgdGhlIGJ1ZmZlci4gIEJ1ZmZlciBtYXkgYmUgbW9kaWZpZWQuCiA2ICAgSW4gdGhlIHF1aWNrZml4IHdpbmRvdyBzdGF0dXNsaW5lIGFkZCB0aGUgY29tbWFuZCB1c2VkIHRvIGdldCB0aGUgbGlzdCBvZgogICAgIGVycm9ycywgZS5nLiAiOm1ha2UgZm9vIiwgIjpncmVwIHNvbWV0aGluZyAqLmMiLgorNyAgIEFkZCBhICI6Y3N0cmluZyIgY29tbWFuZC4gIFdvcmtzIGxpa2UgIjpjZmlsZSIgYnV0IHJlYWRzIGZyb20gYSBzdHJpbmcKKyAgICB2YXJpYWJsZS4gIEFsc28gYWNjZXB0IGEgbGlzdCB2YXJpYWJsZT8KIDYgICBQeXRob24gaW50ZXJmYWNlOiBhZGQgdmltLm1lc3NhZ2UoKSBmdW5jdGlvbi4gKE1pY2hhbCBWaXRlY2VrLCAyMDAyIE5vdiA1KQogNyAgIFN1cHBvcnQgdXNpbmcgIjp2ZXJ0IiB3aXRoIFVzZXIgY29tbWFuZHMuICBBZGQgZXhwYW5kYWJsZSBpdGVtcyA8dmVydD4uCiAgICAgRG8gdGhlIHNhbWUgZm9yICI6YnJvd3NlIiBhbmQgIjpjb25maXJtIj8KZGlmZiAtLWdpdCBhL3J1bnRpbWUvZG9jL3VnYW5kYS50eHQgYi9ydW50aW1lL2RvYy91Z2FuZGEudHh0CmluZGV4IGViZGY3YzcuLmI4MTM5YTMgMTAwNjQ0Ci0tLSBhL3J1bnRpbWUvZG9jL3VnYW5kYS50eHQKKysrIGIvcnVudGltZS9kb2MvdWdhbmRhLnR4dApAQCAtMSw0ICsxLDQgQEAKLSp1Z2FuZGEudHh0KiAgICBGb3IgVmltIHZlcnNpb24gNy4wYWEuICBMYXN0IGNoYW5nZTogMjAwNCBNYXkgMTIKKyp1Z2FuZGEudHh0KiAgICBGb3IgVmltIHZlcnNpb24gNy4wYWEuICBMYXN0IGNoYW5nZTogMjAwNCBBdWcgMjkKIAogCiAJCSAgVklNIFJFRkVSRU5DRSBNQU5VQUwgICAgYnkgQnJhbSBNb29sZW5hYXIKQEAgLTIxNCw3ICsyMTQsNyBAQAogVVNBIGFuZCBDYW5hZGE6IENvbnRhY3QgS2liYWFsZSBDaGlsZHJlbidzIEZ1bmQgKEtDRikgaW4gU3VycmV5LCBDYW5hZGEuICBUaGV5CiAJCXRha2UgY2FyZSBvZiB0aGUgQ2FuYWRpYW4gc3BvbnNvcnMgZm9yIHRoZSBjaGlsZHJlbiBpbgogCQlLaWJhYWxlLiAgWW91IGNhbiBzZW5kIHRoZW0gYSBvbmUgdGltZSBkb25hdGlvbiBkaXJlY3RseS4KLQkJUGxlYXNlIHNlbmQgbWUgYSBub3RlIHNvIHRoYXQga25vdyB3aGF0IGhhcyBiZWVuIGRvbmF0ZWQKKwkJUGxlYXNlIHNlbmQgbWUgYSBub3RlIHNvIHRoYXQgSSBrbm93IHdoYXQgaGFzIGJlZW4gZG9uYXRlZAogCQliZWNhdXNlIG9mIFZpbS4gIEFzayBLQ0YgZm9yIGluZm9ybWF0aW9uIGFib3V0IHNwb25zb3JzaGlwLgogCQkJS2liYWFsZSBDaGlsZHJlbidzIEZ1bmQgYy9vIFBhY2lmaWMgQWNhZGVteQogCQkJMTAyMzgtMTY4IFN0cmVldApkaWZmIC0tZ2l0IGEvcnVudGltZS9kb2MvdXNyXzA1LnR4dCBiL3J1bnRpbWUvZG9jL3Vzcl8wNS50eHQKaW5kZXggNDczOTZjYy4uNDIzNDZmMiAxMDA2NDQKLS0tIGEvcnVudGltZS9kb2MvdXNyXzA1LnR4dAorKysgYi9ydW50aW1lL2RvYy91c3JfMDUudHh0CkBAIC0xLDQgKzEsNCBAQAotKnVzcl8wNS50eHQqCUZvciBWaW0gdmVyc2lvbiA3LjBhYS4gIExhc3QgY2hhbmdlOiAyMDA0IEp1biAyNAorKnVzcl8wNS50eHQqCUZvciBWaW0gdmVyc2lvbiA3LjBhYS4gIExhc3QgY2hhbmdlOiAyMDA0IEF1ZyAyNwogCiAJCSAgICAgVklNIFVTRVIgTUFOVUFMIC0gYnkgQnJhbSBNb29sZW5hYXIKIApAQCAtNDI3LDYgKzQyNyw4IEBACiAJOiFta2RpciB+Ly52aW0vcGx1Z2luCiAJOiFjcCAkVklNUlVOVElNRS9tYWNyb3MvbWF0Y2hpdC52aW0gfi8udmltL3BsdWdpbgogCitUaGUgImNwIiBjb21tYW5kIGlzIGZvciBVbml4LCBvbiBNUy1ET1MgeW91IGNhbiB1c2UgImNvcHkiLgorCiBOb3cgY3JlYXRlIGEgImRvYyIgZGlyZWN0b3J5IGluIG9uZSBvZiB0aGUgZGlyZWN0b3JpZXMgaW4gJ3J1bnRpbWVwYXRoJy4gPgogCiAJOiFta2RpciB+Ly52aW0vZG9jCmRpZmYgLS1naXQgYS9ydW50aW1lL2RvYy91c3JfNDEudHh0IGIvcnVudGltZS9kb2MvdXNyXzQxLnR4dAppbmRleCBlMGVhMDI2Li45N2MzOWQ5IDEwMDY0NAotLS0gYS9ydW50aW1lL2RvYy91c3JfNDEudHh0CisrKyBiL3J1bnRpbWUvZG9jL3Vzcl80MS50eHQKQEAgLTEsNCArMSw0IEBACi0qdXNyXzQxLnR4dCoJRm9yIFZpbSB2ZXJzaW9uIDcuMGFhLiAgTGFzdCBjaGFuZ2U6IDIwMDQgTWF5IDA2CisqdXNyXzQxLnR4dCoJRm9yIFZpbSB2ZXJzaW9uIDcuMGFhLiAgTGFzdCBjaGFuZ2U6IDIwMDQgQXVnIDI4CiAKIAkJICAgICBWSU0gVVNFUiBNQU5VQUwgLSBieSBCcmFtIE1vb2xlbmFhcgogCmRpZmYgLS1naXQgYS9ydW50aW1lL2RvYy92ZXJzaW9uNy50eHQgYi9ydW50aW1lL2RvYy92ZXJzaW9uNy50eHQKaW5kZXggMGRlNzkyNS4uNDI2MDg3NyAxMDA2NDQKLS0tIGEvcnVudGltZS9kb2MvdmVyc2lvbjcudHh0CisrKyBiL3J1bnRpbWUvZG9jL3ZlcnNpb243LnR4dApAQCAtMSw0ICsxLDQgQEAKLSp2ZXJzaW9uNy50eHQqICBGb3IgVmltIHZlcnNpb24gNy4wYWEuICBMYXN0IGNoYW5nZTogMjAwNCBKdWwgMjcKKyp2ZXJzaW9uNy50eHQqICBGb3IgVmltIHZlcnNpb24gNy4wYWEuICBMYXN0IGNoYW5nZTogMjAwNCBTZXAgMDEKIAogCiAJCSAgVklNIFJFRkVSRU5DRSBNQU5VQUwgICAgYnkgQnJhbSBNb29sZW5hYXIKQEAgLTEyMCw2ICsxMjAsOCBAQAogfDpkaWZmb2ZmfAkJU3dpdGNoIG9mZiBkaWZmIG1vZGUgaW4gdGhlIGN1cnJlbnQgd2luZG93IG9yIGluIGFsbAogCQkJd2luZG93cy4KIAorfDprZWVwYWx0fAkJRG8gbm90IGNoYW5nZSB0aGUgYWx0ZXJuYXRlIGZpbGUuCisKIAogTmV3IGZ1bmN0aW9uczogfgogCkBAIC0xNDgsNiArMTUwLDEwIEBACiAKIE11UEFEIHNvdXJjZSBzeW50YXgsIGluZGVudCBhbmQgZnRwbHVnaW4uIChEYXZlIFNpbHZpYSkKIAorQUJBQi80IHN5bnRheCBmaWxlLiAoTWFyaXVzIHZhbiBXeWspCisKK1NRTC1JbmZvcm1peCBzeW50YXggZmlsZS4gKERlYW4gTCBIaWxsKQorCiAKIE90aGVyczogfgogCkBAIC0xOTUsNiArMjAxLDIwIEBACiAKIEFkZGVkICduJyBmbGFnIHRvIHNlYXJjaCgpOiBkb24ndCBtb3ZlIHRoZSBjdXJzb3IuIChOaWtvbGFpIFdlaWJ1bGwpCiAKK1doZW4gdW5jb21wcmVzc2luZyBmYWlscyBpbiB0aGUgZ3ppcCBwbHVnaW4sIGdpdmUgYW4gZXJyb3IgbWVzc2FnZSBidXQgZG9uJ3QKK2RlbGV0ZSB0aGUgcmF3IHRleHQuICBIZWxwcyBpZiB0aGUgZmlsZSBoYXMgYSAuZ3ogZXh0ZW5zaW9uIGJ1dCBpcyBub3QKK2FjdHVhbGx5IGNvbXByZXNzZWQuIChBbmRyZXcgUGltbG90dCkKKworV2hlbiBDLCBDKysgb3IgSURMIHN5bnRheCBpcyB1c2VkLCBtYXkgYWRkaXRpb25hbGx5IGxvYWQgZG94eWdlbiBzeW50YXguCitBbHNvIHN1cHBvcnQgc2V0dGluZyB0aGUgZmlsZXR5cGUgdG8gImNkb3h5Z2VuIiBmb3IgQyBwbHVzIGRveHlnZW4gc3ludGF4LgorKE1pY2hhZWwgR2VkZGVzKQorCitUaGUgIjpyZWdpc3RlcnMiIGNvbW1hbmQgbm93IGRpc3BsYXlzIG11bHRpLWJ5dGUgY2hhcmFjdGVycyBwcm9wZXJseS4KKworVk1TOiBJbiB0aGUgdXNhZ2UgbWVzc2FnZSBtZW50aW9uIHRoYXQgYSBzbGFzaCBjYW4gYmUgdXNlZCB0byBtYWtlIGEgZmxhZwordXBwZXIgY2FzZS4gIEFkZCBjb2xvciBzdXBwb3J0IHRvIHRoZSBidWlsdGluIHZ0MzIwIHRlcm1pbmFsIGNvZGVzLgorKFpvbHRhbiBBcnBhZGZmeSkKKwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiBDT01QSUxFIFRJTUUgQ0hBTkdFUwkJCQkJKmNvbXBpbGUtY2hhbmdlcy03KgogCkBAIC0yOTMsNCArMzEzLDIxIEBACiBjb250YWluICJmMiIgdHdpY2UsIG9uZSBvZiB0aGVtIGxlYWRpbmcgdG8gImYxIi4gIEFsc28gdHJpZ2dlciB0aGUgQnVmRmlsZVByZQogYW5kIEJ1ZkZpbGVQb3N0IGV2ZW50cyBmb3IgdGhlIGFsdGVybmF0ZSBidWZmZXIgdGhhdCBnZXRzIHRoZSBvbGQgbmFtZS4KIAorc3RycmlkeCgpIGRpZCBub3Qgd29yayB3ZWxsIHdoZW4gdGhlIG5lZWRsZSBpcyBlbXB0eS4gKENpYXJhbiBNY0NyZWVzaCkKKworR1RLOiBBdm9pZCBhIHBvdGVudGlhbCBoYW5nIGluIGd1aV9tY2hfd2FpdF9mb3JfY2hhcnMoKSB3aGVuIGlucHV0IGFycml2ZXMKK2p1c3QgYmVmb3JlIGl0IGlzIGludm9rZWQKKworVk1TOiBPY2Nhc2lvbmFsbHkgQ1IgY2hhcmFjdGVycyB3ZXJlIGluc2VydGVkIGluIHRoZSBmaWxlLiAgRXhwYW5zaW9uIG9mCitlbnZpcm9ubWVudCB2YXJpYWJsZXMgd2FzIG5vdCBjb3JyZWN0LiAoWm9sdGFuIEFycGFkZmZ5KQorCitVVEYtODogV2hlbiAnZGVsY29tYmluZScgaXMgc2V0ICJkdyIgb25seSBkZWxldGVkIHRoZSBsYXN0IGNvbWJpbmluZyBjaGFyYWN0ZXIKK2Zyb20gdGhlIGZpcnN0IGNoYXJhY3RlciBvZiB0aGUgd29yZC4KKworV2hlbiB1c2luZyAiOnNiYWxsIiBpbiBhbiBhdXRvY29tbWFuZCBvbmx5IHRoZSBmaWxldHlwZSBpbiBvbmUgYnVmZmVyIHdhcworZGV0ZWN0ZWQuICBSZXNldCBkaWRfZmlsZXR5cGUgaW4gZW50ZXJfYnVmZmVyKCkuCisKK1doZW4gdXNpbmcgIjphcmdkbyIgYW5kIHRoZSB3aW5kb3cgYWxyZWFkeSB3YXMgYXQgdGhlIGZpcnN0IGFyZ3VtZW50IGluZGV4LAorYnV0IG5vdCBhY3R1YWxseSBlZGl0aW5nIGl0LCB0aGUgY3VycmVudCBidWZmZXIgd291bGQgYmUgdXNlZCBpbnN0ZWFkLgorCiAgdmltOnR3PTc4OnRzPTg6ZnQ9aGVscDpub3JsOgpkaWZmIC0tZ2l0IGEvcnVudGltZS9maWxldHlwZS52aW0gYi9ydW50aW1lL2ZpbGV0eXBlLnZpbQppbmRleCAxOTY2OWZiLi5lZDg1NmRhIDEwMDY0NAotLS0gYS9ydW50aW1lL2ZpbGV0eXBlLnZpbQorKysgYi9ydW50aW1lL2ZpbGV0eXBlLnZpbQpAQCAtMSw3ICsxLDcgQEAKICIgVmltIHN1cHBvcnQgZmlsZSB0byBkZXRlY3QgZmlsZSB0eXBlcwogIgogIiBNYWludGFpbmVyOglCcmFtIE1vb2xlbmFhciA8QnJhbUB2aW0ub3JnPgotIiBMYXN0IENoYW5nZToJMjAwNCBKdWwgMDYKKyIgTGFzdCBDaGFuZ2U6CTIwMDQgQXVnIDMwCiAKICIgTGlzdGVuIHZlcnkgY2FyZWZ1bGx5LCBJIHdpbGwgc2F5IHRoaXMgb25seSBvbmNlCiBpZiBleGlzdHMoImRpZF9sb2FkX2ZpbGV0eXBlcyIpCkBAIC02Myw2ICs2Myw5IEBACiAiIEEtQS1QIHJlY2lwZQogYXUgQnVmTmV3RmlsZSxCdWZSZWFkICouYWFwCQkJc2V0ZiBhYXAKIAorIiBBQkFCLzQKK2F1IEJ1Zk5ld0ZpbGUsQnVmUmVhZCAqLmFiYXAJCQlzZXRmIGFiYXAKKwogIiBBQkMgbXVzaWMgbm90YXRpb24KIGF1IEJ1Zk5ld0ZpbGUsQnVmUmVhZCAqLmFiYwkJCXNldGYgYWJjCiAKQEAgLTE0MjYsOCArMTQyOSwxOSBAQAogIiBTcXVpZAogYXUgQnVmTmV3RmlsZSxCdWZSZWFkIHNxdWlkLmNvbmYJCXNldGYgc3F1aWQKIAotIiBTUUwgKGFsbCBidXQgdGhlIGZpcnN0IG9uZSBmb3IgT3JhY2xlIERlc2lnbmVyKQotYXUgQnVmTmV3RmlsZSxCdWZSZWFkICouc3FsLCoudHliLCoudHlwLCoudHljLCoucGtiLCoucGtzCXNldGYgc3FsCisiIFNRTCBmb3IgT3JhY2xlIERlc2lnbmVyCithdSBCdWZOZXdGaWxlLEJ1ZlJlYWQgKi50eWIsKi50eXAsKi50eWMsKi5wa2IsKi5wa3MJc2V0ZiBzcWwKKworIiBTUUwKK2F1IEJ1Zk5ld0ZpbGUsQnVmUmVhZCAqLnNxbAkJCWNhbGwgU2V0RmlsZVR5cGVTUUwoKQorCitmdW4hIFNldEZpbGVUeXBlU1FMKCkKKyAgaWYgZXhpc3RzKCJnOmZpbGV0eXBlX3NxbCIpCisgICAgZXhlICJzZXRmICIgLiBnOmZpbGV0eXBlX3NxbAorICBlbHNlCisgICAgc2V0ZiBzcWwKKyAgZW5kaWYKK2VuZGZ1bgogCiAiIFNRTEoKIGF1IEJ1Zk5ld0ZpbGUsQnVmUmVhZCAqLnNxbGoJCQlzZXRmIHNxbGoKZGlmZiAtLWdpdCBhL3J1bnRpbWUvZnRwbHVnaW4vYy52aW0gYi9ydW50aW1lL2Z0cGx1Z2luL2MudmltCmluZGV4IDNkNTA3NTguLmNmNjY4NmMgMTAwNjQ0Ci0tLSBhL3J1bnRpbWUvZnRwbHVnaW4vYy52aW0KKysrIGIvcnVudGltZS9mdHBsdWdpbi9jLnZpbQpAQCAtMSw3ICsxLDcgQEAKICIgVmltIGZpbGV0eXBlIHBsdWdpbiBmaWxlCiAiIExhbmd1YWdlOglDCiAiIE1haW50YWluZXI6CUJyYW0gTW9vbGVuYWFyIDxCcmFtQHZpbS5vcmc+Ci0iIExhc3QgQ2hhbmdlOgkyMDA0IE1heSAxNgorIiBMYXN0IENoYW5nZToJMjAwNCBTZXAgMDEKIAogIiBPbmx5IGRvIHRoaXMgd2hlbiBub3QgZG9uZSB5ZXQgZm9yIHRoaXMgYnVmZmVyCiBpZiBleGlzdHMoImI6ZGlkX2Z0cGx1Z2luIikKQEAgLTM3LDcgKzM3LDcgQEAKIAkgIFwgIkMgSGVhZGVyIEZpbGVzICgqLmgpXHQqLmhcbiIgLgogCSAgXCAiQyBTb3VyY2UgRmlsZXMgKCouYylcdCouY1xuIiAuCiAJICBcICJBbGwgRmlsZXMgKCouKilcdCouKlxuIgotICBlbHNlaWYgJmZ0ID09ICJjaHNjcmlwdCIKKyAgZWxzZWlmICZmdCA9PSAiY2giCiAgICAgbGV0IGI6YnJvd3NlZmlsdGVyID0gIkNoIFNvdXJjZSBGaWxlcyAoKi5jaCAqLmNoZilcdCouY2g7Ki5jaGZcbiIgLgogCSAgXCAiQyBIZWFkZXIgRmlsZXMgKCouaClcdCouaFxuIiAuCiAJICBcICJDIFNvdXJjZSBGaWxlcyAoKi5jKVx0Ki5jXG4iIC4KZGlmZiAtLWdpdCBhL3J1bnRpbWUvaW5kZW50L2x1YS52aW0gYi9ydW50aW1lL2luZGVudC9sdWEudmltCmluZGV4IDM3ZTM5N2UuLjJlYTE2ZGIgMTAwNjQ0Ci0tLSBhL3J1bnRpbWUvaW5kZW50L2x1YS52aW0KKysrIGIvcnVudGltZS9pbmRlbnQvbHVhLnZpbQpAQCAtMSwxMSArMSwxMyBAQAogIiBWaW0gaW5kZW50IGZpbGUKICIgTGFuZ3VhZ2U6CUx1YSBzY3JpcHQKLSIgTWFpbnRhaW5lcjoJTWFyY3VzIEF1cmVsaXVzIEZhcmlhcyA8bWFyY3VzY2ZAdmFudC5jb20uYnI+Ci0iIEZpcnN0IEF1dGhvcjoJTWF4IElzY2hlbmtvIDxtZmlAdWtyLm5ldD4KLSIgTGFzdCBDaGFuZ2U6CTIwMDMgSmFuIDIwCisiIE1haW50YWluZXI6CU1hcmN1cyBBdXJlbGl1cyBGYXJpYXMgPG1hcmN1cy5jZiAnYXQnIGJvbC5jb20uYnI+CisiIEZpcnN0IEF1dGhvcjoJTWF4IElzY2hlbmtvIDxtZmkgJ2F0JyB1a3IubmV0PgorIiBMYXN0IENoYW5nZToJMjAwNCBBdWcgMjkKIAogIiBPbmx5IGRlZmluZSB0aGUgZnVuY3Rpb24gb25jZS4KLWlmIGV4aXN0cygiKkdldEx1YUluZGVudCIpIHwgZmluaXNoIHwgZW5kaWYKK2lmIGV4aXN0cygiKkdldEx1YUluZGVudCIpCisgIGZpbmlzaAorZW5kaWYKIAogc2V0bG9jYWwgaW5kZW50ZXhwcj1HZXRMdWFJbmRlbnQoKQogCkBAIC0yOCwyMSArMzAsMjIgQEAKICAgIiBmdW5jdGlvbiwgaWYsIGZvciwgd2hpbGUsIHJlcGVhdCwgZWxzZSwgZWxzZWlmLCAneycKICAgbGV0IGluZCA9IGluZGVudChsbnVtKQogICBsZXQgZmxhZyA9IDAKLSAgaWYgZ2V0bGluZShsbnVtKSA9fiAnXlxzKlwoZnVuY3Rpb25cPlx8aWZcPlx8Zm9yXD5cfHdoaWxlXD5cfHJlcGVhdFw+XHxlbHNlXD5cfGVsc2VpZlw+XHxkb1w+XCknIHx8IGdldGxpbmUobG51bSkgPX4gJ3tccyokJyB8fCBnZXRsaW5lKGxudW0pID1+ICdccyo9XHMqZnVuY3Rpb24nCi0gICAgbGV0IGluZCA9IGluZCArICZzdworICBsZXQgcHJldmxpbmUgPSBnZXRsaW5lKGxudW0pCisgIGlmIHByZXZsaW5lID1+ICdeXHMqXCUoaWZcPlx8Zm9yXD5cfHdoaWxlXD5cfHJlcGVhdFw+XHxlbHNlXD5cfGVsc2VpZlw+XHxkb1w+XCknIHx8IHByZXZsaW5lID1+ICd7XHMqJCcgfHwgcHJldmxpbmUgPX4gJ1w8ZnVuY3Rpb25cPlxzKlwlKFxrXHxbLjpdXClcey19XHMqKCcKKyAgICBsZXQgaW5kID0gaW5kICsgJnNoaWZ0d2lkdGgKICAgICBsZXQgZmxhZyA9IDEKICAgZW5kaWYKIAogICAiIFN1YnRyYWN0IGEgJ3NoaWZ0d2lkdGgnIGFmdGVyIGxpbmVzIGVuZGluZyB3aXRoCiAgICIgJ2VuZCcgd2hlbiB0aGV5IGJlZ2luIHdpdGggd2hpbGUsIGlmLCBmb3IsIGV0Yy4KLSAgaWYgZmxhZyA9PSAxICYmIGdldGxpbmUobG51bSkgPX4gJ1w8ZW5kXD5cfFw8dW50aWxcPicKLSAgICBsZXQgaW5kID0gaW5kIC0gJnN3CisgIGlmIGZsYWcgPT0gMSAmJiBwcmV2bGluZSA9fiAnXDxlbmRcPlx8XDx1bnRpbFw+JworICAgIGxldCBpbmQgPSBpbmQgLSAmc2hpZnR3aWR0aAogICBlbmRpZgogCiAgICIgU3VidHJhY3QgYSAnc2hpZnR3aWR0aCcgb24gZW5kLCBlbHNlIChhbmQgZWxzZWlmKSwgdW50aWwgYW5kICd9JwogICAiIFRoaXMgaXMgdGhlIHBhcnQgdGhhdCByZXF1aXJlcyAnaW5kZW50a2V5cycuCi0gIGlmIGdldGxpbmUodjpsbnVtKSA9fiAnXlxzKlwoZW5kXHxlbHNlXHx1bnRpbFx8fVwpJwotICAgIGxldCBpbmQgPSBpbmQgLSAmc3cKKyAgaWYgZ2V0bGluZSh2OmxudW0pID1+ICdeXHMqXCUoZW5kXHxlbHNlXHx1bnRpbFx8fVwpJworICAgIGxldCBpbmQgPSBpbmQgLSAmc2hpZnR3aWR0aAogICBlbmRpZgogCiAgIHJldHVybiBpbmQKZGlmZiAtLWdpdCBhL3J1bnRpbWUvaW5kZW50L3ZpbS52aW0gYi9ydW50aW1lL2luZGVudC92aW0udmltCmluZGV4IDBkZTc3NzQuLjA4ZDhlYmYgMTAwNjQ0Ci0tLSBhL3J1bnRpbWUvaW5kZW50L3ZpbS52aW0KKysrIGIvcnVudGltZS9pbmRlbnQvdmltLnZpbQpAQCAtMSw3ICsxLDcgQEAKICIgVmltIGluZGVudCBmaWxlCiAiIExhbmd1YWdlOglWaW0gc2NyaXB0CiAiIE1haW50YWluZXI6CUJyYW0gTW9vbGVuYWFyIDxCcmFtQHZpbS5vcmc+Ci0iIExhc3QgQ2hhbmdlOgkyMDAzIE1heSAyNQorIiBMYXN0IENoYW5nZToJMjAwNCBTZXAgMDIKIAogIiBPbmx5IGxvYWQgdGhpcyBpbmRlbnQgZmlsZSB3aGVuIG5vIG90aGVyIHdhcyBsb2FkZWQuCiBpZiBleGlzdHMoImI6ZGlkX2luZGVudCIpCkBAIC0zNiwxMCArMzYsMTQgQEAKIAogICAiIEFkZCBhICdzaGlmdHdpZHRoJyBhZnRlciA6aWYsIDp3aGlsZSwgOnRyeSwgOmNhdGNoLCA6ZmluYWxseSwgOmZ1bmN0aW9uCiAgICIgYW5kIDplbHNlLiAgQWRkIGl0IHRocmVlIHRpbWVzIGZvciBhIGxpbmUgdGhhdCBzdGFydHMgd2l0aCAnXCcgYWZ0ZXIKLSAgIiBhIGxpbmUgdGhhdCBkb2Vzbid0LgorICAiIGEgbGluZSB0aGF0IGRvZXNuJ3QgKG9yIGc6dmltX2luZGVudF9jb250IGlmIGl0IGV4aXN0cykuCiAgIGxldCBpbmQgPSBpbmRlbnQobG51bSkKICAgaWYgZ2V0bGluZSh2OmxudW0pID1+ICdeXHMqXFwnICYmIHY6bG51bSA+IDEgJiYgZ2V0bGluZShsbnVtKSAhfiAnXlxzKlxcJwotICAgIGxldCBpbmQgPSBpbmQgKyAmc3cgKiAzCisgICAgaWYgZXhpc3RzKCJnOnZpbV9pbmRlbnRfY29udCIpCisgICAgICBsZXQgaW5kID0gaW5kICsgZzp2aW1faW5kZW50X2NvbnQKKyAgICBlbHNlCisgICAgICBsZXQgaW5kID0gaW5kICsgJnN3ICogMworICAgIGVuZGlmCiAgIGVsc2VpZiBnZXRsaW5lKGxudW0pID1+ICdcKF5cfHxcKVxzKlwoaWZcfHdoXCVbaWxlXVx8dHJ5XHxjYXRcJVtjaF1cfGZpbmFcJVtsbHldXHxmdVwlW25jdGlvbl1cfGVsXCVbc2VpZl1cKVw+JwogICAgIGxldCBpbmQgPSBpbmQgKyAmc3cKICAgZWxzZWlmIGdldGxpbmUobG51bSkgPX4gJ15ccyphdWdcJVtyb3VwXScgJiYgZ2V0bGluZShsbnVtKSAhfiAnXlxzKmF1Z1wlW3JvdXBdXHMqIVw9XHNcK0VORCcKZGlmZiAtLWdpdCBhL3J1bnRpbWUvbWFrZW1lbnUudmltIGIvcnVudGltZS9tYWtlbWVudS52aW0KaW5kZXggNjkwYzQ5NC4uZTU0YjMyNyAxMDA2NDQKLS0tIGEvcnVudGltZS9tYWtlbWVudS52aW0KKysrIGIvcnVudGltZS9tYWtlbWVudS52aW0KQEAgLTEsNiArMSw2IEBACiAiIFNjcmlwdCB0byBkZWZpbmUgdGhlIHN5bnRheCBtZW51IGluIHN5bm1lbnUudmltCiAiIE1haW50YWluZXI6CUJyYW0gTW9vbGVuYWFyIDxCcmFtQHZpbS5vcmc+Ci0iIExhc3QgQ2hhbmdlOgkyMDA0IE1heSAyMgorIiBMYXN0IENoYW5nZToJMjAwNCBBdWcgMzAKIAogIiBUaGlzIGlzIHVzZWQgYnkgIm1ha2UgbWVudSIgaW4gdGhlIHNyYyBkaXJlY3RvcnkuCiBlZGl0IDxzZmlsZT46cDpoL3N5bm1lbnUudmltCkBAIC00OSw2ICs0OSw3IEBACiBlbmRmdW4KIAogU3luTWVudSBBQi5BYXA6YWFwCitTeW5NZW51IEFCLkFCQVAvNDphYmFwCiBTeW5NZW51IEFCLkFiYXF1czphYmFxdXMKIFN5bk1lbnUgQUIuQUJDXCBtdXNpY1wgbm90YXRpb246YWJjCiBTeW5NZW51IEFCLkFCRUw6YWJlbApAQCAtMTUzLDcgKzE1NCw2IEBACiBTeW5NZW51IERFLkVsbVwgZmlsdGVyXCBydWxlczplbG1maWx0CiBTeW5NZW51IERFLkVtYmVkaXhcIENvbXBvbmVudFwgRGVzY3JpcHRpb246ZWNkCiBTeW5NZW51IERFLkVSaWNzc29uXCBMQU5HdWFnZTplcmxhbmcKLVN5bk1lbnUgREUuRVNRTC1DOmVzcWxjCiBTeW5NZW51IERFLkVzc2Jhc2VcIHNjcmlwdDpjc2MKIFN5bk1lbnUgREUuRXRlcm1cIGNvbmZpZzpldGVybQogU3luTWVudSBERS5FeGltXCBjb25mOmV4aW0KQEAgLTMwNiw3ICszMDYsNiBAQAogU3luTWVudSBQUS5QaW5lXCBSQzpwaW5lCiBTeW5NZW51IFBRLlBpbmZvXCBSQzpwaW5mbwogU3luTWVudSBQUS5QTC9NOnBsbQotU3luTWVudSBQUS5QTC9TUUw6cGxzcWwKIFN5bk1lbnUgUFEuUExQOnBscAogU3luTWVudSBQUS5QT1wgKEdOVVwgZ2V0dGV4dCk6cG8KIFN5bk1lbnUgUFEuUG9zdGZpeFwgbWFpblwgY29uZmlnOnBmbWFpbgpAQCAtMzkyLDEwICszOTEsMTMgQEAKIFN5bk1lbnUgU2gtUy5TcGVlZHVwOnNwdXAKIFN5bk1lbnUgU2gtUy5TcGxpbnQ6c3BsaW50CiBTeW5NZW51IFNoLVMuU3F1aWRcIGNvbmZpZzpzcXVpZAorU3luTWVudSBTaC1TLlNRTC5FU1FMLUM6ZXNxbGMKIFN5bk1lbnUgU2gtUy5TUUwuTXlTUUw6bXlzcWwKLVN5bk1lbnUgU2gtUy5TUUwuU1FMOnNxbAorU3luTWVudSBTaC1TLlNRTC5QTC9TUUw6cGxzcWwKK1N5bk1lbnUgU2gtUy5TUUwuU1FMXCAoT3JhY2xlKTpzcWwKIFN5bk1lbnUgU2gtUy5TUUwuU1FMXCBGb3JtczpzcWxmb3JtcwogU3luTWVudSBTaC1TLlNRTC5TUUxKOnNxbGoKK1N5bk1lbnUgU2gtUy5TUUwuU1FMLUluZm9ybWl4OnNxbGluZm9ybWl4CiBTeW5NZW51IFNoLVMuU1FSOnNxcgogU3luTWVudSBTaC1TLlNzaC5zc2hfY29uZmlnOnNzaGNvbmZpZwogU3luTWVudSBTaC1TLlNzaC5zc2hkX2NvbmZpZzpzc2hkY29uZmlnCmRpZmYgLS1naXQgYS9ydW50aW1lL3BsdWdpbi9OZXRyd0ZpbGVIYW5kbGVycy52aW0gYi9ydW50aW1lL3BsdWdpbi9OZXRyd0ZpbGVIYW5kbGVycy52aW0KaW5kZXggNjE5MTE1Yi4uN2RhNjQ3OSAxMDA2NDQKLS0tIGEvcnVudGltZS9wbHVnaW4vTmV0cndGaWxlSGFuZGxlcnMudmltCisrKyBiL3J1bnRpbWUvcGx1Z2luL05ldHJ3RmlsZUhhbmRsZXJzLnZpbQpAQCAtMSwxMSArMSwxOCBAQAogIiBOZXRyd0ZpbGVIYW5kbGVyczogY29udGFpbnMgdmFyaW91cyBleHRlbnNpb24tYmFzZWQgZmlsZSBoYW5kbGVycyBmb3IKICIgICAgICAgICAgICAgICAgICAgIG5ldHJ3J3MgYnJvd3NlcnMnIHggY29tbWFuZCAoImVYZWN1dGUgbGF1bmNoZXIiKQogIiBBdXRob3I6CUNoYXJsZXMgRS4gQ2FtcGJlbGwsIEpyLgotIiBEYXRlOgkJSnVsIDA5LCAyMDA0Ci0iIFZlcnNpb246CTEKLSIgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisiIERhdGU6CQlBdWcgMjcsIDIwMDQKKyIgVmVyc2lvbjoJMgogCi0iIE5ldHJ3RmlsZUhhbmRsZXJfaHRtbDogaGFuZGxlcyBodG1sIHdoZW4gdGhlIHVzZXIgaGl0cyAieCIgd2hlbiB0aGUKKyIgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisiIFByZXZlbnQgUmVsb2FkaW5nOiB7e3sxCitpZiBleGlzdHMoImc6bG9hZGVkX25ldHJ3ZmlsZWhhbmRsZXJzIikgfHwgJmNwCisgZmluaXNoCitlbmRpZgorbGV0IGc6bG9hZGVkX25ldHJ3ZmlsZWhhbmRsZXJzPSAidjIiCisKKyIgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisiIE5ldHJ3RmlsZUhhbmRsZXJfaHRtbDogaGFuZGxlcyBodG1sIHdoZW4gdGhlIHVzZXIgaGl0cyAieCIgd2hlbiB0aGUge3t7MQogIiAgICAgICAgICAgICAgICAgICAgICAgIGN1cnNvciBpcyBhdG9wIGEgKi5odG1sIGZpbGUKIGZ1biEgTmV0cndGaWxlSGFuZGxlcl9odG1sKHBhZ2VmaWxlKQogIiAgY2FsbCBEZnVuYygiTmV0cndGaWxlSGFuZGxlcl9odG1sKCIuYTpwYWdlZmlsZS4iKSIpCkBAIC0xNCwxMCArMjEsMTAgQEAKIAogICBpZiBleGVjdXRhYmxlKCJtb3ppbGxhIikKICIgICBjYWxsIERlY2hvKCJleGVjdXRpbmcgIW1vemlsbGEgIi5wYWdlKQotICAgZXhlICIhbW96aWxsYSAiLnBhZ2UKKyAgIGV4ZSAiIW1vemlsbGEgXCIiLnBhZ2UuJyInCiAgIGVsc2VpZiBleGVjdXRhYmxlKCJuZXRzY2FwZSIpCiAiICAgY2FsbCBEZWNobygiZXhlY3V0aW5nICFuZXRzY2FwZSAiLnBhZ2UpCi0gICBleGUgIiFuZXRzY2FwZSAiLnBhZ2UKKyAgIGV4ZSAiIW5ldHNjYXBlIFwiIi5wYWdlLiciJwogICBlbHNlCiAiICAgY2FsbCBEcmV0KCJOZXRyd0ZpbGVIYW5kbGVyX2h0bWwgMCIpCiAgICByZXR1cm4gMApAQCAtMjgsNyArMzUsNyBAQAogZW5kZnVuCiAKICIgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0iIE5ldHJ3RmlsZUhhbmRsZXJfaHRtOiBoYW5kbGVzIGh0bWwgd2hlbiB0aGUgdXNlciBoaXRzICJ4IiB3aGVuIHRoZQorIiBOZXRyd0ZpbGVIYW5kbGVyX2h0bTogaGFuZGxlcyBodG1sIHdoZW4gdGhlIHVzZXIgaGl0cyAieCIgd2hlbiB0aGUge3t7MQogIiAgICAgICAgICAgICAgICAgICAgICAgIGN1cnNvciBpcyBhdG9wIGEgKi5odG0gZmlsZQogZnVuISBOZXRyd0ZpbGVIYW5kbGVyX2h0bShwYWdlZmlsZSkKICIgIGNhbGwgRGZ1bmMoIk5ldHJ3RmlsZUhhbmRsZXJfaHRtKCIuYTpwYWdlZmlsZS4iKSIpCkBAIC0zNywxMCArNDQsMTAgQEAKIAogICBpZiBleGVjdXRhYmxlKCJtb3ppbGxhIikKICIgICBjYWxsIERlY2hvKCJleGVjdXRpbmcgIW1vemlsbGEgIi5wYWdlKQotICAgZXhlICIhbW96aWxsYSAiLnBhZ2UKKyAgIGV4ZSAiIW1vemlsbGEgXCIiLnBhZ2UuJyInCiAgIGVsc2VpZiBleGVjdXRhYmxlKCJuZXRzY2FwZSIpCiAiICAgY2FsbCBEZWNobygiZXhlY3V0aW5nICFuZXRzY2FwZSAiLnBhZ2UpCi0gICBleGUgIiFuZXRzY2FwZSAiLnBhZ2UKKyAgIGV4ZSAiIW5ldHNjYXBlIFwiIi5wYWdlLiciJwogICBlbHNlCiAiICAgY2FsbCBEcmV0KCJOZXRyd0ZpbGVIYW5kbGVyX2h0bSAwIikKICAgIHJldHVybiAwCkBAIC01MSwxNCArNTgsMTUgQEAKIGVuZGZ1bgogCiAiIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotIiBOZXRyd0ZpbGVIYW5kbGVyX2pwZzoKKyIgTmV0cndGaWxlSGFuZGxlcl9qcGc6IHt7ezEKIGZ1biEgTmV0cndGaWxlSGFuZGxlcl9qcGcoanBnZmlsZSkKICIgIGNhbGwgRGZ1bmMoIk5ldHJ3RmlsZUhhbmRsZXJfanBnKGpwZ2ZpbGU8Ii5hOmpwZ2ZpbGUuIj4pIikKIAogICBpZiBleGVjdXRhYmxlKCJnaW1wIikKICAgIGV4ZSAic2lsZW50ISAhZ2ltcCAtcyAiLmE6anBnZmlsZQogICBlbHNlaWYgZXhlY3V0YWJsZShleHBhbmQoIiRTeXN0ZW1Sb290IikuIi9TWVNURU0zMi9NU1BBSU5ULkVYRSIpCi0gICBleGUgInNpbGVudCEgISIuZXhwYW5kKCIkU3lzdGVtUm9vdCIpLiIvU1lTVEVNMzIvTVNQQUlOVCAiLmE6anBnZmlsZQorIiAgIGNhbGwgRGVjaG8oInNpbGVudCEgISIuZXhwYW5kKCIkU3lzdGVtUm9vdCIpLiIvU1lTVEVNMzIvTVNQQUlOVCAiLmVzY2FwZShhOmpwZ2ZpbGUsIiBbXXwnIikpCisgICBleGUgIiEiLmV4cGFuZCgiJFN5c3RlbVJvb3QiKS4iL1NZU1RFTTMyL01TUEFJTlQgXCIiLmE6anBnZmlsZS4nIicKICAgZWxzZQogIiAgIGNhbGwgRHJldCgiTmV0cndGaWxlSGFuZGxlcl9qcGcgMCIpCiAgICByZXR1cm4gMApAQCAtNjksMTQgKzc3LDE0IEBACiBlbmRmdW4KIAogIiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSIgTmV0cndGaWxlSGFuZGxlcl9naWY6CisiIE5ldHJ3RmlsZUhhbmRsZXJfZ2lmOiB7e3sxCiBmdW4hIE5ldHJ3RmlsZUhhbmRsZXJfZ2lmKGdpZmZpbGUpCiAiICBjYWxsIERmdW5jKCJOZXRyd0ZpbGVIYW5kbGVyX2dpZihnaWZmaWxlPCIuYTpnaWZmaWxlLiI+KSIpCiAKICAgaWYgZXhlY3V0YWJsZSgiZ2ltcCIpCiAgICBleGUgInNpbGVudCEgIWdpbXAgLXMgIi5hOmdpZmZpbGUKICAgZWxzZWlmIGV4ZWN1dGFibGUoZXhwYW5kKCIkU3lzdGVtUm9vdCIpLiIvU1lTVEVNMzIvTVNQQUlOVC5FWEUiKQotICAgZXhlICJzaWxlbnQhICEiLmV4cGFuZCgiJFN5c3RlbVJvb3QiKS4iL1NZU1RFTTMyL01TUEFJTlQgIi5hOmdpZmZpbGUKKyAgIGV4ZSAic2lsZW50ISAhIi5leHBhbmQoIiRTeXN0ZW1Sb290IikuIi9TWVNURU0zMi9NU1BBSU5UIFwiIi5hOmdpZmZpbGUuJyInCiAgIGVsc2UKICIgICBjYWxsIERyZXQoIk5ldHJ3RmlsZUhhbmRsZXJfZ2lmIDAiKQogICAgcmV0dXJuIDAKQEAgLTg3LDE0ICs5NSwzMiBAQAogZW5kZnVuCiAKICIgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0iIE5ldHJ3RmlsZUhhbmRsZXJfcG5tOgorIiBOZXRyd0ZpbGVIYW5kbGVyX3BuZzoge3t7MQorZnVuISBOZXRyd0ZpbGVIYW5kbGVyX3BuZyhwbmdmaWxlKQorIiAgY2FsbCBEZnVuYygiTmV0cndGaWxlSGFuZGxlcl9wbmcocG5nZmlsZTwiLmE6cG5nZmlsZS4iPikiKQorCisgIGlmIGV4ZWN1dGFibGUoImdpbXAiKQorICAgZXhlICJzaWxlbnQhICFnaW1wIC1zICIuYTpwbmdmaWxlCisgIGVsc2VpZiBleGVjdXRhYmxlKGV4cGFuZCgiJFN5c3RlbVJvb3QiKS4iL1NZU1RFTTMyL01TUEFJTlQuRVhFIikKKyAgIGV4ZSAic2lsZW50ISAhIi5leHBhbmQoIiRTeXN0ZW1Sb290IikuIi9TWVNURU0zMi9NU1BBSU5UIFwiIi5hOnBuZ2ZpbGUuJyInCisgIGVsc2UKKyIgICBjYWxsIERyZXQoIk5ldHJ3RmlsZUhhbmRsZXJfcG5nIDAiKQorICAgcmV0dXJuIDAKKyAgZW5kaWYKKworIiAgY2FsbCBEcmV0KCJOZXRyd0ZpbGVIYW5kbGVyX3BuZyAxIikKKyAgcmV0dXJuIDEKK2VuZGZ1bgorCisiIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIiBOZXRyd0ZpbGVIYW5kbGVyX3BubToge3t7MQogZnVuISBOZXRyd0ZpbGVIYW5kbGVyX3BubShwbm1maWxlKQogIiAgY2FsbCBEZnVuYygiTmV0cndGaWxlSGFuZGxlcl9wbm0ocG5tZmlsZTwiLmE6cG5tZmlsZS4iPikiKQogCiAgIGlmIGV4ZWN1dGFibGUoImdpbXAiKQogICAgZXhlICJzaWxlbnQhICFnaW1wIC1zICIuYTpwbm1maWxlCiAgIGVsc2VpZiBleGVjdXRhYmxlKGV4cGFuZCgiJFN5c3RlbVJvb3QiKS4iL1NZU1RFTTMyL01TUEFJTlQuRVhFIikKLSAgIGV4ZSAic2lsZW50ISAhIi5leHBhbmQoIiRTeXN0ZW1Sb290IikuIi9TWVNURU0zMi9NU1BBSU5UICIuYTpwbm1maWxlCisgICBleGUgInNpbGVudCEgISIuZXhwYW5kKCIkU3lzdGVtUm9vdCIpLiIvU1lTVEVNMzIvTVNQQUlOVCBcIiIuYTpwbm1maWxlLiciJwogICBlbHNlCiAiICAgY2FsbCBEcmV0KCJOZXRyd0ZpbGVIYW5kbGVyX3BubSAwIikKICAgIHJldHVybiAwCkBAIC0xMDUsMTQgKzEzMSwxNCBAQAogZW5kZnVuCiAKICIgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0iIE5ldHJ3RmlsZUhhbmRsZXJfYm1wOiB2aXN1YWxpemUgYm1wIGZpbGVzCisiIE5ldHJ3RmlsZUhhbmRsZXJfYm1wOiB2aXN1YWxpemUgYm1wIGZpbGVzIHt7ezEKIGZ1biEgTmV0cndGaWxlSGFuZGxlcl9ibXAoYm1wZmlsZSkKICIgIGNhbGwgRGZ1bmMoIk5ldHJ3RmlsZUhhbmRsZXJfYm1wKGJtcGZpbGU8Ii5hOmJtcGZpbGUuIj4pIikKIAogICBpZiBleGVjdXRhYmxlKCJnaW1wIikKICAgIGV4ZSAic2lsZW50ISAhZ2ltcCAtcyAiLmE6Ym1wZmlsZQogICBlbHNlaWYgZXhlY3V0YWJsZShleHBhbmQoIiRTeXN0ZW1Sb290IikuIi9TWVNURU0zMi9NU1BBSU5ULkVYRSIpCi0gICBleGUgInNpbGVudCEgISIuZXhwYW5kKCIkU3lzdGVtUm9vdCIpLiIvU1lTVEVNMzIvTVNQQUlOVCAiLmE6Ym1wZmlsZQorICAgZXhlICJzaWxlbnQhICEiLmV4cGFuZCgiJFN5c3RlbVJvb3QiKS4iL1NZU1RFTTMyL01TUEFJTlQgXCIiLmE6Ym1wZmlsZS4nIicKICAgZWxzZQogIiAgIGNhbGwgRHJldCgiTmV0cndGaWxlSGFuZGxlcl9ibXAgMCIpCiAgICByZXR1cm4gMApAQCAtMTIzLDg0ICsxNDksMTA5IEBACiBlbmRmdW4KIAogIiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSIgTmV0cndGaWxlSGFuZGxlcl9wZGY6IHZpc3VhbGl6ZSBwZGYgZmlsZXMKKyIgTmV0cndGaWxlSGFuZGxlcl9wZGY6IHZpc3VhbGl6ZSBwZGYgZmlsZXMge3t7MQogZnVuISBOZXRyd0ZpbGVIYW5kbGVyX3BkZihwZGYpCi0gICIgY2FsbCBEZnVuYygiTmV0cndGaWxlSGFuZGxlcl9wZGYocGRmPCIuYTpwZGYuIj4pIikKKyIgICIgY2FsbCBEZnVuYygiTmV0cndGaWxlSGFuZGxlcl9wZGYocGRmPCIuYTpwZGYuIj4pIikKICAgaWYgZXhlY3V0YWJsZSgiZ3MiKQogICAgZXhlICJzaWxlbnQhICFncyAiLmE6cGRmCiAgIGVsc2UKLSAgICIgY2FsbCBEcmV0KCJOZXRyd0ZpbGVIYW5kbGVyX3BkZiAwIikKKyIgICAiIGNhbGwgRHJldCgiTmV0cndGaWxlSGFuZGxlcl9wZGYgMCIpCiAgICByZXR1cm4gMAogICBlbmRpZgogCi0gICIgY2FsbCBEcmV0KCJOZXRyd0ZpbGVIYW5kbGVyX3BkZiAxIikKKyIgICIgY2FsbCBEcmV0KCJOZXRyd0ZpbGVIYW5kbGVyX3BkZiAxIikKICAgcmV0dXJuIDEKIGVuZGZ1bgogCiAiIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotIiBOZXRyd0ZpbGVIYW5kbGVyX3N4dzogdmlzdWFsaXplIHN4dyBmaWxlcworIiBOZXRyd0ZpbGVIYW5kbGVyX3N4dzogdmlzdWFsaXplIHN4dyBmaWxlcyB7e3sxCiBmdW4hIE5ldHJ3RmlsZUhhbmRsZXJfc3h3KHN4dykKLSAgIiBjYWxsIERmdW5jKCJOZXRyd0ZpbGVIYW5kbGVyX3N4dyhzeHc8Ii5hOnN4dy4iPikiKQorIiAgIiBjYWxsIERmdW5jKCJOZXRyd0ZpbGVIYW5kbGVyX3N4dyhzeHc8Ii5hOnN4dy4iPikiKQogICBpZiBleGVjdXRhYmxlKCJncyIpCiAgICBleGUgInNpbGVudCEgIWdzICIuYTpzeHcKICAgZWxzZQotICAgIiBjYWxsIERyZXQoIk5ldHJ3RmlsZUhhbmRsZXJfc3h3IDAiKQorIiAgICIgY2FsbCBEcmV0KCJOZXRyd0ZpbGVIYW5kbGVyX3N4dyAwIikKICAgIHJldHVybiAwCiAgIGVuZGlmCiAKLSAgIiBjYWxsIERyZXQoIk5ldHJ3RmlsZUhhbmRsZXJfc3h3IDEiKQorIiAgIiBjYWxsIERyZXQoIk5ldHJ3RmlsZUhhbmRsZXJfc3h3IDEiKQogICByZXR1cm4gMQogZW5kZnVuCiAKICIgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0iIE5ldHJ3RmlsZUhhbmRsZXJfZG9jOiB2aXN1YWxpemUgZG9jIGZpbGVzCisiIE5ldHJ3RmlsZUhhbmRsZXJfZG9jOiB2aXN1YWxpemUgZG9jIGZpbGVzIHt7ezEKIGZ1biEgTmV0cndGaWxlSGFuZGxlcl9kb2MoZG9jKQotICAiIGNhbGwgRGZ1bmMoIk5ldHJ3RmlsZUhhbmRsZXJfZG9jKGRvYzwiLmE6ZG9jLiI+KSIpCisiICAiIGNhbGwgRGZ1bmMoIk5ldHJ3RmlsZUhhbmRsZXJfZG9jKGRvYzwiLmE6ZG9jLiI+KSIpCiAKICAgaWYgZXhlY3V0YWJsZSgib293cml0ZXIiKQogICAgZXhlICJzaWxlbnQhICFvb3dyaXRlciAiLmE6ZG9jCiAgICByZWRyYXchCiAgIGVsc2UKLSAgICIgY2FsbCBEcmV0KCJOZXRyd0ZpbGVIYW5kbGVyX2RvYyAwIikKKyIgICAiIGNhbGwgRHJldCgiTmV0cndGaWxlSGFuZGxlcl9kb2MgMCIpCiAgICByZXR1cm4gMAogICBlbmRpZgogCi0gICIgY2FsbCBEcmV0KCJOZXRyd0ZpbGVIYW5kbGVyX2RvYyAxIikKKyIgICIgY2FsbCBEcmV0KCJOZXRyd0ZpbGVIYW5kbGVyX2RvYyAxIikKICAgcmV0dXJuIDEKIGVuZGZ1bgogCiAiIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotIiBOZXRyd0ZpbGVIYW5kbGVyX3N4dzogdmlzdWFsaXplIHN4dyBmaWxlcworIiBOZXRyd0ZpbGVIYW5kbGVyX3N4dzogdmlzdWFsaXplIHN4dyBmaWxlcyB7e3sxCiBmdW4hIE5ldHJ3RmlsZUhhbmRsZXJfc3h3KHN4dykKLSAgIiBjYWxsIERmdW5jKCJOZXRyd0ZpbGVIYW5kbGVyX3N4dyhzeHc8Ii5hOnN4dy4iPikiKQorIiAgIiBjYWxsIERmdW5jKCJOZXRyd0ZpbGVIYW5kbGVyX3N4dyhzeHc8Ii5hOnN4dy4iPikiKQogCiAgIGlmIGV4ZWN1dGFibGUoIm9vd3JpdGVyIikKICAgIGV4ZSAic2lsZW50ISAhb293cml0ZXIgIi5hOnN4dwogICAgcmVkcmF3IQogICBlbHNlCi0gICAiIGNhbGwgRHJldCgiTmV0cndGaWxlSGFuZGxlcl9zeHcgMCIpCisiICAgIiBjYWxsIERyZXQoIk5ldHJ3RmlsZUhhbmRsZXJfc3h3IDAiKQogICAgcmV0dXJuIDAKICAgZW5kaWYKIAotICAiIGNhbGwgRHJldCgiTmV0cndGaWxlSGFuZGxlcl9zeHcgMSIpCisiICAiIGNhbGwgRHJldCgiTmV0cndGaWxlSGFuZGxlcl9zeHcgMSIpCiAgIHJldHVybiAxCiBlbmRmdW4KIAogIiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSIgTmV0cndGaWxlSGFuZGxlcl94bHM6IHZpc3VhbGl6ZSB4bHMgZmlsZXMKKyIgTmV0cndGaWxlSGFuZGxlcl94bHM6IHZpc3VhbGl6ZSB4bHMgZmlsZXMge3t7MQogZnVuISBOZXRyd0ZpbGVIYW5kbGVyX3hscyh4bHMpCi0gICIgY2FsbCBEZnVuYygiTmV0cndGaWxlSGFuZGxlcl94bHMoeGxzPCIuYTp4bHMuIj4pIikKKyIgICIgY2FsbCBEZnVuYygiTmV0cndGaWxlSGFuZGxlcl94bHMoeGxzPCIuYTp4bHMuIj4pIikKIAogICBpZiBleGVjdXRhYmxlKCJvb2NhbGMiKQogICAgZXhlICJzaWxlbnQhICFvb2NhbGMgIi5hOnhscwogICAgcmVkcmF3IQogICBlbHNlCi0gICAiIGNhbGwgRHJldCgiTmV0cndGaWxlSGFuZGxlcl94bHMgMCIpCisiICAgIiBjYWxsIERyZXQoIk5ldHJ3RmlsZUhhbmRsZXJfeGxzIDAiKQogICAgcmV0dXJuIDAKICAgZW5kaWYKIAotICAiIGNhbGwgRHJldCgiTmV0cndGaWxlSGFuZGxlcl94bHMgMSIpCisiICAiIGNhbGwgRHJldCgiTmV0cndGaWxlSGFuZGxlcl94bHMgMSIpCiAgIHJldHVybiAxCiBlbmRmdW4KIAogIiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyIgTmV0cndGaWxlSGFuZGxlcl9wczogaGFuZGxlcyBQb3N0U2NyaXB0IGZpbGVzIHt7ezEKK2Z1biEgTmV0cndGaWxlSGFuZGxlcl9wcyhwcykKKyIgIGNhbGwgRGZ1bmMoIk5ldHJ3RmlsZUhhbmRsZXJfcHMoKSIpCisgIGlmIGV4ZWN1dGFibGUoImdzIikKKyAgIGV4ZSAic2lsZW50ISAhZ3MgIi5hOnBzCisgICByZWRyYXchCisgIGVsc2VpZiBleGVjdXRhYmxlKCJnaG9zdHNjcmlwdCIpCisgICBleGUgInNpbGVudCEgIWdob3N0c2NyaXB0ICIuYTpwcworICAgcmVkcmF3IQorICBlbHNlaWYgZXhlY3V0YWJsZSgiZ2hvc3RzY3JpcHQiKQorICAgZXhlICJzaWxlbnQhICFnaG9zdHNjcmlwdCAiLmE6cHMKKyAgIHJlZHJhdyEKKyAgZWxzZWlmIGV4ZWN1dGFibGUoImdzd2luMzIiKQorICAgZXhlICJzaWxlbnQhICFnc3dpbjMyIFwiIi5hOnBzLiciJworICAgcmVkcmF3IQorIiAgIGNhbGwgRHJldCgiTmV0cndGaWxlSGFuZGxlcl9wcyAwIikKKyAgIHJldHVybiAwCisgIGVuZGlmCisKKyIgIGNhbGwgRHJldCgiTmV0cndGaWxlSGFuZGxlcl9wcyAxIikKKyAgcmV0dXJuIDEKK2VuZGZ1bgorCisiIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIiAgdmltOiB0cz00IGZkbT1tYXJrZXIKZGlmZiAtLWdpdCBhL3J1bnRpbWUvcGx1Z2luL2d6aXAudmltIGIvcnVudGltZS9wbHVnaW4vZ3ppcC52aW0KaW5kZXggMzliMGNiYy4uMmI5YjUyMyAxMDA2NDQKLS0tIGEvcnVudGltZS9wbHVnaW4vZ3ppcC52aW0KKysrIGIvcnVudGltZS9wbHVnaW4vZ3ppcC52aW0KQEAgLTEsNiArMSw2IEBACiAiIFZpbSBwbHVnaW4gZm9yIGVkaXRpbmcgY29tcHJlc3NlZCBmaWxlcy4KICIgTWFpbnRhaW5lcjogQnJhbSBNb29sZW5hYXIgPEJyYW1AdmltLm9yZz4KLSIgTGFzdCBDaGFuZ2U6IDIwMDQgSmFuIDEyCisiIExhc3QgQ2hhbmdlOiAyMDA0IEp1bCAzMAogCiAiIEV4aXQgcXVpY2tseSB3aGVuOgogIiAtIHRoaXMgcGx1Z2luIHdhcyBhbHJlYWR5IGxvYWRlZApAQCAtNzEsNiArNzEsMTEgQEAKICAgZXhlY3V0ZSAic2lsZW50ICdbLCdddyAiIC4gdG1wZQogICAiIHVuY29tcHJlc3MgdGhlIHRlbXAgZmlsZTogY2FsbCBzeXN0ZW0oImd6aXAgLWRuIHRtcC5neiIpCiAgIGNhbGwgc3lzdGVtKGE6Y21kIC4gIiAiIC4gdG1wZSkKKyAgaWYgIWZpbGVyZWFkYWJsZSh0bXApCisgICAgIiB1bmNvbXByZXNzIGRpZG4ndCB3b3JrISAgS2VlcCB0aGUgY29tcHJlc3NlZCBmaWxlIHRoZW4uCisgICAgZWNob2VyciAiRXJyb3I6IENvdWxkIG5vdCByZWFkIHVuY29tcHJlc3NlZCBmaWxlIgorICAgIHJldHVybgorICBlbmRpZgogICAiIGRlbGV0ZSB0aGUgY29tcHJlc3NlZCBsaW5lczsgcmVtZW1iZXIgdGhlIGxpbmUgbnVtYmVyCiAgIGxldCBsID0gbGluZSgiJ1siKSAtIDEKICAgaWYgZXhpc3RzKCI6bG9ja21hcmtzIikKZGlmZiAtLWdpdCBhL3J1bnRpbWUvcGx1Z2luL25ldHJ3LnZpbSBiL3J1bnRpbWUvcGx1Z2luL25ldHJ3LnZpbQppbmRleCBiZTZiYjQxLi44NGNkYTkzIDEwMDY0NAotLS0gYS9ydW50aW1lL3BsdWdpbi9uZXRydy52aW0KKysrIGIvcnVudGltZS9wbHVnaW4vbmV0cncudmltCkBAIC0xLDE4ICsxLDIwIEBACiAiIG5ldHJ3LnZpbTogSGFuZGxlcyBmaWxlIHRyYW5zZmVyIGFuZCByZW1vdGUgZGlyZWN0b3J5IGxpc3RpbmcgYWNyb3NzIGEgbmV0d29yawotIiBMYXN0IENoYW5nZToJSnVsIDI2LCAyMDA0CisiIExhc3QgQ2hhbmdlOglBdWcgMjcsIDIwMDQKICIgTWFpbnRhaW5lcjoJQ2hhcmxlcyBFLiBDYW1wYmVsbCwgSnIuIFBoRCAgIDxkcmNoaXBOT1NQQU0gYXQgY2FtcGJlbGxmYW1pbHkuYml6PgotIiBWZXJzaW9uOgk0N20KKyIgVmVyc2lvbjoJNDcKICIgTGljZW5zZToJVmltIExpY2Vuc2UgIChzZWUgdmltJ3MgOmhlbHAgbGljZW5zZSkKICIKICIgIEJ1dCBiZSBkb2VycyBvZiB0aGUgd29yZCwgYW5kIG5vdCBvbmx5IGhlYXJlcnMsIGRlbHVkaW5nIHlvdXIgb3duIHNlbHZlcwogIiAgKEphbWVzIDE6MjIgUlNWKQogIiA9LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS0KKyIgR2V0TGF0ZXN0VmltU2NyaXB0czogMTA3NSAxIDpBdXRvSW5zdGFsbDogbmV0cncudmltCiAKLSIgRXhpdCBxdWlja2x5IHdoZW4gYWxyZWFkeSBsb2FkZWQgb3Igd2hlbiAnY29tcGF0aWJsZScgaXMgc2V0LiB7e3sxCisiIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIiBQcmV2ZW50IFJlbG9hZGluZzoge3t7MQogaWYgZXhpc3RzKCJsb2FkZWRfbmV0cnciKSB8fCAmY3AKICAgZmluaXNoCiBlbmRpZgotbGV0IGxvYWRlZF9uZXRydyAgICA9ICJ2NDdtIgorbGV0IGxvYWRlZF9uZXRydyAgICA9ICJ2NDciCiBsZXQgczpzYXZlX2NwbyAgICAgID0gJmNwbwogbGV0IGxvYWRlZF9leHBsb3JlciA9IDEKIHNldCBjcG8mdmltCkBAIC0yNiw3ICsyOCw3IEBACiAgbGV0IGc6bmV0cndfd2luOTVmdHA9IDEKIGVuZGlmCiBpZiAhZXhpc3RzKCJnOm5ldHJ3X2N5Z3dpbiIpCi0gaWYgaGFzKCJ3aW4zMiIpCisgaWYgaGFzKCJ3aW4zMiIpIHx8IGhhcygid2luOTUiKSB8fCBoYXMoIndpbjY0IikgfHwgaGFzKCJ3aW4xNiIpCiAgIGxldCBnOm5ldHJ3X2N5Z3dpbj0gMQogIGVsc2UKICAgbGV0IGc6bmV0cndfY3lnd2luPSAwCkBAIC04OCw4ICs5MCwxMCBAQAogIGxldCBnOm5ldHJ3X2xvY2FsX3JtZGlyPSAicm1kaXIiCiBlbmRpZgogaWYgIWV4aXN0cygiZzpuZXRyd19sb2NhbF9yZW5hbWUiKQotIGlmIGhhcygid2luMzIiKQotICBsZXQgZzpuZXRyd19sb2NhbF9yZW5hbWU9ICJyZW4iCisgaWYgZzpuZXRyd19jeWd3aW4KKyAgbGV0IGc6bmV0cndfbG9jYWxfcmVuYW1lPSAibXYiCisgZWxzZWlmIGhhcygid2luMzIiKSB8fCBoYXMoIndpbjk1IikgfHwgaGFzKCJ3aW42NCIpIHx8IGhhcygid2luMTYiKQorICBsZXQgZzpuZXRyd19sb2NhbF9yZW5hbWU9ICJyZW5hbWUiCiAgZWxzZWlmIGhhcygidW5peCIpCiAgIGxldCBnOm5ldHJ3X2xvY2FsX3JlbmFtZT0gIm12IgogIGVuZGlmCkBAIC0xMDMsNiArMTA3LDI2IEBACiBpZiAhZXhpc3RzKCJnOm5ldHJ3X2hpZGUiKQogIGxldCBnOm5ldHJ3X2hpZGU9IDEKIGVuZGlmCitpZiAhZXhpc3RzKCJnOm5ldHJ3X2Z0cF9icm93c2VfcmVqZWN0IikKKyBsZXQgZzpuZXRyd19mdHBfYnJvd3NlX3JlamVjdD0nXnRvdGFsXHNcK1xkXCskXHxeVHJ5aW5nXHNcK1xkXCsuKiRcfF5LRVJCRVJPU19WXGQgcmVqZWN0ZWRcfF5TZWN1cml0eSBleHRlbnNpb25zIG5vdCcKK2VuZGlmCitpZiAhZXhpc3RzKCJnOm5ldHJ3X2tlZXBkaXIiKQorIGxldCBnOm5ldHJ3X2tlZXBkaXI9IDAKK2VuZGlmCitpZiAhZXhpc3RzKCJzOm5ldHJ3X2NkX2VzY2FwZSIpCisgaWYgaGFzKCJ3aW4zMiIpIHx8IGhhcygid2luOTUiKSB8fCBoYXMoIndpbjY0IikgfHwgaGFzKCJ3aW4xNiIpCisgIGxldCBzOm5ldHJ3X2NkX2VzY2FwZT0iIyUgIgorIGVsc2UKKyAgbGV0IHM6bmV0cndfY2RfZXNjYXBlPSIqJCUnXCIgP2AiCisgZW5kaWYKK2VuZGlmCitpZiAhZXhpc3RzKCJzOm5ldHJ3X2dsb2JfZXNjYXBlIikKKyBpZiBoYXMoIndpbjMyIikgfHwgaGFzKCJ3aW45NSIpIHx8IGhhcygid2luNjQiKSB8fCBoYXMoIndpbjE2IikKKyAgbGV0IHM6bmV0cndfZ2xvYl9lc2NhcGU9ICIiCisgZWxzZQorICBsZXQgczpuZXRyd19nbG9iX2VzY2FwZT0gJ1tdKj9ge34nCisgZW5kaWYKK2VuZGlmCiAKICIgQnVmRW50ZXIgZXZlbnQgaWdub3JlZCBieSBkZWNobyB3aGVuIGZvbGxvd2luZyB2YXJpYWJsZSBpcyB0cnVlCiAiICBIYXMgYSBzaWRlIGVmZmVjdCB0aGF0IGRvYXUgQnVmUmVhZFBvc3QgZG9lc24ndCB3b3JrLCBzbwpAQCAtMTQ2LDcgKzE3MCw3IEBACiAgZW5kaWYKIGVuZGlmCiAKLWlmIGhhcygid2luMzIiKQoraWYgaGFzKCJ3aW4zMiIpIHx8IGhhcygid2luOTUiKSB8fCBoYXMoIndpbjY0IikgfHwgaGFzKCJ3aW4xNiIpCiAgIFwgJiYgZXhpc3RzKCJnOm5ldHJ3X3VzZV9udF9yY3AiKQogICBcICYmIGc6bmV0cndfdXNlX250X3JjcAogICBcICYmIGV4ZWN1dGFibGUoICRTeXN0ZW1Sb290IC4nL3N5c3RlbTMyL3JjcC5leGUnKQpAQCAtMTY4LDcgKzE5Miw3IEBACiAgIiBOZXR3b3JrIEhhbmRsZXI6IHt7ezIKICBhdWdyb3VwIE5ldHdvcmsKICAgYXUhCi0gIGlmIGhhcygid2luMzIiKQorICBpZiBoYXMoIndpbjMyIikgfHwgaGFzKCJ3aW45NSIpIHx8IGhhcygid2luNjQiKSB8fCBoYXMoIndpbjE2IikKICAgIGF1IEJ1ZlJlYWRDbWQgIGZpbGU6Ly8qCQlleGUgInNpbGVudCBkb2F1IEJ1ZlJlYWRQcmUgIi5leHBhbmQoIjxhZmlsZT4iKXxleGUgJ2UgJy5zdWJzdGl0dXRlKGV4cGFuZCgiPGFmaWxlPiIpLCJmaWxlOi8qIiwiIiwiIil8ZXhlICJzaWxlbnQgZG9hdSBCdWZSZWFkUG9zdCAiLmV4cGFuZCgiPGFmaWxlPiIpCiAgIGVsc2UKICAgIGF1IEJ1ZlJlYWRDbWQgIGZpbGU6Ly8vKgkJZXhlICJzaWxlbnQgZG9hdSBCdWZSZWFkUHJlICIuZXhwYW5kKCI8YWZpbGU+Iil8ZXhlICdlIC8nLnN1YnN0aXR1dGUoZXhwYW5kKCI8YWZpbGU+IiksImZpbGU6LyoiLCIiLCIiKXxleGUgInNpbGVudCBkb2F1IEJ1ZlJlYWRQb3N0ICIuZXhwYW5kKCI8YWZpbGU+IikKQEAgLTI0NCw3ICsyNjgsNyBAQAogICAgbGV0IGljaG9pY2UgPSAxCiAgIGVuZGlmCiAgCi0gICIgZ2V0IG5hbWUgb2YgYSB0ZW1wb3JhcnkgZmlsZQorICAiIGdldCBuYW1lIG9mIGEgdGVtcG9yYXJ5IGZpbGUgYW5kIHNldCB1cCBzaGVsbC1xdW90aW5nIGNoYXJhY3RlcgogICBsZXQgdG1wZmlsZT0gdGVtcG5hbWUoKQogIAogIiAgY2FsbCBEZWNobygiaWNob2ljZT0iLmljaG9pY2UuIiByZWFkY21kPCIucmVhZGNtZC4iPiIpCkBAIC0yNjAsOCArMjg0LDggQEAKICAgICBleGUgImxldCBjaG9pY2U9IGE6IiAuIGljaG9pY2UKICIgICAgY2FsbCBEZWNobygibm8gbGFzdGZpbGU6IGNob2ljZTwiIC4gY2hvaWNlIC4gIj4iKQogIAotICAgICIgUmVjb25zdHJ1Y3QgQ2hvaWNlIGlmIGNob2ljZSBzdGFydHMgd2l0aCAnIicKICAgICBpZiBtYXRjaChjaG9pY2UsIj8iKSA9PSAwCisgICAgICIgZ2l2ZSBoZWxwCiAgICAgIGVjaG8gJ05ldFJlYWQgVXNhZ2U6JwogICAgICBlY2hvICc6TnJlYWQgbWFjaGluZTpwYXRoICAgICAgICAgICAgICAgICAgICAgICAgIHVzZXMgcmNwJwogICAgICBlY2hvICc6TnJlYWQgIm1hY2hpbmUgcGF0aCIgICAgICAgICAgICAgICAgICAgICAgIHVzZXMgZnRwICAgd2l0aCA8Lm5ldHJjPicKQEAgLTI3NSw3ICsyOTksOSBAQAogICAgICBlY2hvICc6TnJlYWQgc2NwOi8vW3VzZXJAXW1hY2hpbmVbWzojXXBvcnRdL3BhdGggIHVzZXMgc2NwJwogICAgICBlY2hvICc6TnJlYWQgc2Z0cDovL1t1c2VyQF1tYWNoaW5lW1s6I11wb3J0XS9wYXRoIHVzZXMgc2Z0cCcKICAgICAgYnJlYWsKKwogICAgIGVsc2VpZiBtYXRjaChjaG9pY2UsIl5cIiIpICE9IC0xCisgICAgICIgUmVjb25zdHJ1Y3QgQ2hvaWNlIGlmIGNob2ljZSBzdGFydHMgd2l0aCAnIicKICIgICAgIGNhbGwgRGVjaG8oInJlY29uc3RydWN0aW5nIGNob2ljZSIpCiAgICAgIGlmIG1hdGNoKGNob2ljZSwiXCIkIikgIT0gLTEKICAgICAgICIgY2FzZSAiLi4uIgpAQCAtMzA0LDcgKzMzMCw3IEBACiAgICBsZXQgaWNob2ljZT0gaWNob2ljZSArIDEKICAKICAgICIgZml4IHVwIHdpbmRvd3MgdXJscwotICAgaWYgaGFzKCJ3aW4zMiIpCisgICBpZiBoYXMoIndpbjMyIikgfHwgaGFzKCJ3aW45NSIpIHx8IGhhcygid2luNjQiKSB8fCBoYXMoIndpbjE2IikKICAgICBsZXQgY2hvaWNlID0gc3Vic3RpdHV0ZShjaG9pY2UsJ1xcJywnLycsJ2dlJykKICIgICAgY2FsbCBEZWNobygiZml4aW5nIHVwIHdpbmRvd3MgdXJsIHRvIDwiLmNob2ljZS4iPiB0bXBmaWxlPCIudG1wZmlsZSkKIApAQCAtMzE4LDEyICszNDQsOCBAQAogICAgIiBDaGVjayBpZiBOZXRCcm93c2UoKSBzaG91bGQgYmUgaGFuZGxpbmcgdGhpcyByZXF1ZXN0CiAiICAgY2FsbCBEZWNobygiY2hlY2tpbmcgaWYgbmV0bGlzdDogY2hvaWNlPCIuY2hvaWNlLiI+IG5ldHJ3X2xpc3RfY21kPCIuZzpuZXRyd19saXN0X2NtZC4iPiIpCiAgICBpZiBjaG9pY2UgPX4gIl4uKi8kIgotICAgIGlmIHN0cmxlbihnOm5ldHJ3X2xpc3RfY21kKSA+IDAKLSAgICAga2VlcGp1bXBzIGNhbGwgczpOZXRCcm93c2UoY2hvaWNlKQotIiAgICAgY2FsbCBEcmV0KCJOZXRSZWFkIikKLSAgICBlbHNlCi0gICAgIGVjaG9lcnIgInNvcnJ5LCBjYW4ndCBkbyBhIHJlbW90ZSBsaXN0aW5nOyBzc2ggaXNuJ3QgZXhlY3V0YWJsZSIKLSAgICBlbmRpZgorICAgIGtlZXBqdW1wcyBjYWxsIHM6TmV0QnJvd3NlKGNob2ljZSkKKyIgICAgY2FsbCBEcmV0KCJOZXRSZWFkIikKICAgICByZXR1cm4KICAgIGVuZGlmCiAgCkBAIC0zNjYsNyArMzg4LDcgQEAKICAgICAgbmV3CiAgICAgIHNldGxvY2FsIGZmPXVuaXgKICAgICAgZXhlICJwdXQgPSciLmc6bmV0cndfZnRwbW9kZS4iJyIKLSAgICAgZXhlICJwdXQgPSdnZXQgIi5uZXRyd19mbmFtZS4iICIudG1wZmlsZS4iJyIKKyAgICAgZXhlICJwdXQgPSciLiJnZXQgIi5uZXRyd19mbmFtZS4iICIudG1wZmlsZS4iJyIKICAgICAgaWYgZXhpc3RzKCJnOm5ldHJ3X3BvcnQiKSAmJiBnOm5ldHJ3X3BvcnQgIT0gIiIKICIgICAgICBjYWxsIERlY2hvKCJleGVjdXRpbmc6ICUhIi5nOm5ldHJ3X2Z0cF9jbWQuIiAtaSAiLmc6bmV0cndfbWFjaGluZS4iICIuZzpuZXRyd19wb3J0KQogICAgICAgZXhlIGc6bmV0cndfc2lsZW50eGZlci4iJSEiLmc6bmV0cndfZnRwX2NtZC4iIC1pICIuZzpuZXRyd19tYWNoaW5lLiIgIi5nOm5ldHJ3X3BvcnQKQEAgLTM3Niw3ICszOTgsMTEgQEAKICAgICAgZW5kaWYKICAgICAgIiBJZiB0aGUgcmVzdWx0IG9mIHRoZSBmdHAgb3BlcmF0aW9uIGlzbid0IGJsYW5rLCBzaG93IGFuIGVycm9yIG1lc3NhZ2UgKHRueCB0byBEb3VnIENsYWFyKQogICAgICBpZiBnZXRsaW5lKDEpICF+ICJeJCIKKyAgICAgIGxldCBkZWJ1Z2tlZXA9ICZkZWJ1ZworICAgICAgc2V0IGRlYnVnPW1zZwogICAgICAgZWNob2VyciBnZXRsaW5lKDEpCisgICAgICBleGUgImVjaG9tc2cgJyIuZ2V0bGluZSgxKS4iJyIKKyAgICAgIGxldCAmZGVidWc9IGRlYnVna2VlcAogICAgICBlbmRpZgogICAgICBiZCEKICAgICAgbGV0IHJlc3VsdCA9IHM6TmV0R2V0RmlsZShyZWFkY21kLCB0bXBmaWxlLCBiOm5ldHJ3X21ldGhvZCkKQEAgLTQxMywxMSArNDM5LDEyIEBACiAgICAgIiAtbiAgdW5peCA6IERPTidUIHVzZSA8Lm5ldHJjPiwgZXZlbiB0aG91Z2ggaXQgZXhpc3RzCiAgICAgIiAtbiAgd2luMzI6IHF1aXQgYmVpbmcgb2Jub3hpb3VzIGFib3V0IHBhc3N3b3JkCiAiICAgIGNhbGwgRGVjaG8oJ3BlcmZvcm1pbmcgZnRwIC1pIC1uJykKLSAgICBub3JtIDFHZGQKKyAgICBub3JtISAxR2RkCiAiICAgIGNhbGwgRGVjaG8oImV4ZWN1dGluZzogJSEiLmc6bmV0cndfZnRwX2NtZC4iIC1pIC1uIikKICAgICBleGUgZzpuZXRyd19zaWxlbnR4ZmVyLiIlISIuZzpuZXRyd19mdHBfY21kLiIgLWkgLW4iCiAgICAgIiBJZiB0aGUgcmVzdWx0IG9mIHRoZSBmdHAgb3BlcmF0aW9uIGlzbid0IGJsYW5rLCBzaG93IGFuIGVycm9yIG1lc3NhZ2UgKHRueCB0byBEb3VnIENsYWFyKQogICAgIGlmIGdldGxpbmUoMSkgIX4gIl4kIgorIiAgICAgY2FsbCBEZWNobygiZXJyb3I8Ii5nZXRsaW5lKDEpLiI+IikKICAgICAgZWNob2VyciBnZXRsaW5lKDEpCiAgICAgZW5kaWYKICAgICBiZCEKQEAgLTQ5Niw3ICs1MjMsNyBAQAogICAgIGVuZGlmCiAgCiAgICAgIiBwZXJmb3JtIGNhZGF2ZXIgb3BlcmF0aW9uOgotICAgIG5vcm0gMUdkZAorICAgIG5vcm0hIDFHZGQKICIgICAgY2FsbCBEZWNobygiZXhlY3V0aW5nOiAlISIuZzpuZXRyd19kYXZfY21kKQogICAgIGV4ZSBnOm5ldHJ3X3NpbGVudHhmZXIuIiUhIi5nOm5ldHJ3X2Rhdl9jbWQKICAgICBiZCEKQEAgLTU3MCwxNCArNTk3LDEyIEBACiAiICBjYWxsIERlY2hvKCJjbGVhbnVwIikKICAgaWYgZXhpc3RzKCJiOm5ldHJ3X21ldGhvZCIpCiAgICB1bmxldCBiOm5ldHJ3X21ldGhvZAotICAgdW5sZXQgZzpuZXRyd19tYWNoaW5lCiAgICB1bmxldCBiOm5ldHJ3X2ZuYW1lCiAgIGVuZGlmCiAgIGNhbGwgczpOZXRPcHRpb25SZXN0b3JlKCkKIAogIiAgY2FsbCBEcmV0KCJOZXRSZWFkIikKIGVuZGZ1bgotIiBlbmQgb2YgTmV0UmVhZAogCiAiIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogIiBOZXRHZXRGaWxlOiBGdW5jdGlvbiB0byByZWFkIGZpbGUgImZuYW1lIiB3aXRoIGNvbW1hbmQgInJlYWRjbWQiLiB7e3sxCkBAIC02NDQsMTQgKzY2OSwxNCBAQAogICAgIGVuZGlmCiAgCiAgICAgZXhlIGN1cmJ1Zm5yIC4gImJ3aXBlISIKLSAgICBleGUgImYgIi5jdXJmaWxlbmFtZQorICAgIGV4ZSAiZiAiLmVzY2FwZShjdXJmaWxlbmFtZSwiICIpCiAgICAgIiB0aGUgIjpmIG5ld25hbWUiIGFwcGFyZW50bHkgbGVhdmVzIHRoZSB0ZW1wb3JhcnkgZmlsZSBhcyB0aGUgYWx0ZXJuYXRlCiAgICAgIiBmaWxlIGluIHRoZSBidWZmZXIgbGlzdCAoc2VlIDpscyEpLiAgVGhlIGZvbGxvd2luZyBjb21tYW5kIHdpcGVzIGl0IG91dC4KICAgICBleGUgYnVmbnIoIiMiKS4iYndpcGUhIgogICAgZWxzZQogICAgIGxldCBvbGR1bD0gJnVsCiAgICAgc2V0bG9jYWwgdWw9LTEKLSAgICBleGUgYTpyZWFkY21kLiIgIi52OmNtZGFyZy4iICIuZm5hbWUKKyAgICBleGUgYTpyZWFkY21kLiIgIi52OmNtZGFyZy4iICIuZXNjYXBlKGZuYW1lLCIgIikKICAgICBpZiBkZWxsaW5lID4gMAogICAgICAiIHdpcGUgb3V0IGxhc3QgbGluZSwgd2hpY2ggc2hvdWxkIGJlIGEgYmxhbmsgbGluZSBhbnl3YXkKICAgICAgJGRlbApAQCAtNzY0LDcgKzc4OSw3IEBACiAgICBsZXQgaWNob2ljZT0gaWNob2ljZSArIDEKICAKICAgICIgZml4IHVwIHdpbmRvd3MgdXJscwotICAgaWYgaGFzKCJ3aW4zMiIpCisgICBpZiBoYXMoIndpbjMyIikgfHwgaGFzKCJ3aW45NSIpIHx8IGhhcygid2luNjQiKSB8fCBoYXMoIndpbjE2IikKICAgICBsZXQgY2hvaWNlPSBzdWJzdGl0dXRlKGNob2ljZSwnXFwnLCcvJywnZ2UnKQogICAgICJFUjogc2VlIE5ldFJlYWQoKQogICAgIGV4ZSAnbGNkICcgLiBmbmFtZW1vZGlmeSh0bXBmaWxlLCc6aCcpCkBAIC04MDcsOCArODMyLDggQEAKICAgICBzZXRsb2NhbCBmZj11bml4CiAgICAgZXhlICJwdXQgPSciLmc6bmV0cndfZnRwbW9kZS4iJyIKICIgICAgY2FsbCBEZWNobygiIE5ldFdyaXRlOiBwdXQgPSciLmc6bmV0cndfZnRwbW9kZS4iJyIpCi0gICAgZXhlICJwdXQgPSdwdXQgIi50bXBmaWxlLiIgIi5uZXRyd19mbmFtZS4iJyIKLSIgICAgY2FsbCBEZWNobygicHV0ID0ncHV0ICIudG1wZmlsZS4iICIubmV0cndfZm5hbWUuIiciKQorICAgIGV4ZSAicHV0ID0nIi4icHV0ICIudG1wZmlsZS4iICIubmV0cndfZm5hbWUuIiciCisiICAgIGNhbGwgRGVjaG8oInB1dCA9JyIuInB1dCAiLnRtcGZpbGUuIiAiLm5ldHJ3X2ZuYW1lLiInIikKICAgICBpZiBleGlzdHMoImc6bmV0cndfcG9ydCIpICYmIGc6bmV0cndfcG9ydCAhPSAiIgogIiAgICAgY2FsbCBEZWNobygiZXhlY3V0aW5nOiAlISIuZzpuZXRyd19mdHBfY21kLiIgLWkgIi5nOm5ldHJ3X21hY2hpbmUuIiAiLmc6bmV0cndfcG9ydCkKICAgICAgZXhlIGc6bmV0cndfc2lsZW50eGZlci4iJSEiLmc6bmV0cndfZnRwX2NtZC4iIC1pICIuZzpuZXRyd19tYWNoaW5lLiIgIi5nOm5ldHJ3X3BvcnQKQEAgLTg1MCw3ICs4NzUsNyBAQAogICAgICIgLW4gIHVuaXggOiBET04nVCB1c2UgPC5uZXRyYz4sIGV2ZW4gdGhvdWdoIGl0IGV4aXN0cwogICAgICIgLW4gIHdpbjMyOiBxdWl0IGJlaW5nIG9ibm94aW91cyBhYm91dCBwYXNzd29yZAogIiAgICBjYWxsIERlY2hvKCdwZXJmb3JtaW5nIGZ0cCAtaSAtbicpCi0gICAgbm9ybSAxR2RkCisgICAgbm9ybSEgMUdkZAogIiAgICBjYWxsIERlY2hvKCJleGVjdXRpbmc6ICUhIi5nOm5ldHJ3X2Z0cF9jbWQuIiAtaSAtbiIpCiAgICAgZXhlIGc6bmV0cndfc2lsZW50eGZlci4iJSEiLmc6bmV0cndfZnRwX2NtZC4iIC1pIC1uIgogICAgICIgSWYgdGhlIHJlc3VsdCBvZiB0aGUgZnRwIG9wZXJhdGlvbiBpc24ndCBibGFuaywgc2hvdyBhbiBlcnJvciBtZXNzYWdlICh0bnggdG8gRG91ZyBDbGFhcikKQEAgLTkwNyw3ICs5MzIsNyBAQAogICAgIGVuZGlmCiAgCiAgICAgIiBwZXJmb3JtIGNhZGF2ZXIgb3BlcmF0aW9uOgotICAgIG5vcm0gMUdkZAorICAgIG5vcm0hIDFHZGQKICIgICAgY2FsbCBEZWNobygiZXhlY3V0aW5nOiAlISIuZzpuZXRyd19kYXZfY21kKQogICAgIGV4ZSBnOm5ldHJ3X3NpbGVudHhmZXIuIiUhIi5nOm5ldHJ3X2Rhdl9jbWQKICAgICBiZCEKQEAgLTkzOCw3ICs5NjMsNyBAQAogICAgIG5ldwogICAgIHNldGxvY2FsIGZmPXVuaXgKICAgICBwdXQgPSdwdXQgJy50bXBmaWxlLicgJy5uZXRyd19mbmFtZQotICAgIG5vcm0gMUdkZAorICAgIG5vcm0hIDFHZGQKICIgICAgY2FsbCBEZWNobygiZXhlY3V0aW5nOiAlISIuZzpuZXRyd19zZnRwX2NtZC4nICcudWlkX21hY2hpbmUpCiAgICAgZXhlIGc6bmV0cndfc2lsZW50eGZlci4iJSEiLmc6bmV0cndfc2Z0cF9jbWQuJyAnLnVpZF9tYWNoaW5lCiAgICAgYmQhCkBAIC05NjEsNyArOTg2LDYgQEAKICAKICIgIGNhbGwgRHJldCgiTmV0V3JpdGUiKQogZW5kZnVuCi0iIGVuZCBvZiBOZXRXcml0ZQogCiAiIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogIiAgQnJvd3NpbmcgU3VwcG9ydCBGb3IgUmVtb3RlIERpcmVjdG9yaWVzIEFuZCBGaWxlczogICAge3t7MQpAQCAtOTcwLDEzICs5OTQsMTcgQEAKICIgIGc6bmV0cndfbGlzdF9jbWQgaGFzIGEgc3RyaW5nLCBIT1NUTkFNRSwgdGhhdCBuZWVkcyB0byBiZSBzdWJzdGl0dXRlZAogIiAgd2l0aCB0aGUgcmVxdWVzdGVkIHJlbW90ZSBob3N0bmFtZSBmaXJzdC4KIGZ1biEgPFNJRD5OZXRCcm93c2UoZGlybmFtZSkKLSIgIGNhbGwgRGZ1bmMoIk5ldEJyb3dzZShkaXJuYW1lPCIuYTpkaXJuYW1lLiI+KSIpCisiICBjYWxsIERmdW5jKCJOZXRCcm93c2UoZGlybmFtZTwiLmE6ZGlybmFtZS4iPikgbG9uZ2xpc3Q9Ii5nOm5ldHJ3X2xvbmdsaXN0KQogCiAgICIgc2FuaXR5IGNoZWNrCi0gIGlmICFleGlzdHMoImc6bmV0cndfbGlzdF9jbWQiKSB8fCBnOm5ldHJ3X2xpc3RfY21kID09ICcnCi0gICBlY2hvZXJyICIqKipuZXRydyoqKiB0aGlzIHN5c3RlbSBkb2Vzbid0IHN1cHBvcnQgcmVtb3RlIGRpcmVjdG9yeSBsaXN0aW5nIgotIiAgIGNhbGwgRHJldCgiTmV0QnJvd3NlIDAiKQotICAgcmV0dXJuIDAKKyAgaWYgZXhpc3RzKCJiOm5ldHJ3X21ldGhvZCIpICYmIChiOm5ldHJ3X21ldGhvZCA9fiAnWzIzXScgJiYgIWV4ZWN1dGFibGUoImZ0cCIpKQorICAgZWNob2VyciAiKioqbmV0cncqKiogdGhpcyBzeXN0ZW0gZG9lc24ndCBzdXBwb3J0IHJlbW90ZSBkaXJlY3RvcnkgbGlzdGluZyB2aWEgZnRwIgorIiAgIGNhbGwgRHJldCgiTmV0QnJvd3NlIikKKyAgIHJldHVybgorICBlbHNlaWYgIWV4aXN0cygiZzpuZXRyd19saXN0X2NtZCIpIHx8IGc6bmV0cndfbGlzdF9jbWQgPT0gJycKKyAgIGVjaG9lcnIgIioqKm5ldHJ3KioqIHRoaXMgc3lzdGVtIGRvZXNuJ3Qgc3VwcG9ydCByZW1vdGUgZGlyZWN0b3J5IGxpc3RpbmcgdmlhIHNzaCIKKyIgICBjYWxsIERyZXQoIk5ldEJyb3dzZSIpCisgICByZXR1cm4KICAgZW5kaWYKIAogICAiIG1ha2UgdGhpcyBidWZmZXIgbW9kaWZpYWJsZQpAQCAtOTg0LDEwICsxMDEyLDExIEBACiAKICAgIiBhbmFseXplIGE6ZGlybmFtZSBhbmQgZzpuZXRyd19saXN0X2NtZAogICBsZXQgZGlycGF0ICA9ICdeXChcd1x7LX1cKTovL1woXHdcK0BcKVw9XChbXi9dXCtcKS9cKC4qXCkkJworIiAgY2FsbCBEZWNobygiZGlycGF0PCIuZGlycGF0LiI+IikKICAgaWYgYTpkaXJuYW1lICF+IGRpcnBhdAogICAgZWNob2VyciAiTmV0QnJvd3NlOiBJIGRvbid0IHVuZGVyc3RhbmQgeW91ciBkaXJuYW1lPCIuYTpkaXJuYW1lLiI+IgotIiAgIGNhbGwgRHJldCgiTmV0QnJvd3NlIDAgOiBiYWRseSBmb3JtYXR0ZWQgZGlybmFtZSIpCi0gICByZXR1cm4gMAorIiAgIGNhbGwgRHJldCgiTmV0QnJvd3NlIDogYmFkbHkgZm9ybWF0dGVkIGRpcm5hbWU8Ii5hOmRpcm5hbWUuIj4iKQorICAgcmV0dXJuCiAgIGVuZGlmCiAKICAgbGV0IG1ldGhvZCAgPSBzdWJzdGl0dXRlKGE6ZGlybmFtZSxkaXJwYXQsJ1wxJywnJykKQEAgLTEwMDEsNyArMTAzMCwxNSBAQAogIiAgY2FsbCBEZWNobygic2V0IHVwIHBhdGggICA8Ii5wYXRoICAgLiI+IikKICIgIGNhbGwgRGVjaG8oInNldCB1cCBmbmFtZSAgPCIuZm5hbWUgIC4iPiIpCiAKLSAgbGV0IGxpc3RjbWQgPSBzdWJzdGl0dXRlKGc6bmV0cndfbGlzdF9jbWQsJ1w8SE9TVE5BTUVcPicsdXNlci5tYWNoaW5lLCcnKQorICBpZiBtZXRob2QgPT0gImZ0cCIKKyAgIGxldCBsaXN0Y21kID0gIi1sRiIKKyAgZWxzZQorICAgbGV0IGxpc3RjbWQgPSBzdWJzdGl0dXRlKGc6bmV0cndfbGlzdF9jbWQsJ1w8SE9TVE5BTUVcPicsdXNlci5tYWNoaW5lLCcnKQorICBlbmRpZgorICBpZiBleGlzdHMoImI6bmV0cndfbWV0aG9kIikKKyIgICBjYWxsIERlY2hvKCJzZXR0aW5nIHM6bmV0cndfbWV0aG9kPCIuYjpuZXRyd19tZXRob2QuIj4iKQorICAgbGV0IHM6bmV0cndfbWV0aG9kPSBiOm5ldHJ3X21ldGhvZAorICBlbmRpZgogCiAgICIgb3B0aW9uYWxseSBzb3J0IGJ5IHRpbWUgKC10KSBvciBieSBzaXplICgtUykKICAgaWYgZzpuZXRyd19zb3J0X2J5ID1+ICJedCIKQEAgLTEwMTUsMTMgKzEwNTIsMTIgQEAKICAgZW5kaWYKIAogIiAgY2FsbCBEZWNobygic2V0IHVwIGxpc3RjbWQ8Ii5saXN0Y21kLiI+IikKLQogICBpZiBmbmFtZSA9fiAnQCQnICYmIGZuYW1lICF+ICdeIicKICIgICBjYWxsIERlY2hvKCJhdHRlbXB0IHRyYW5zZmVyIG9mIHN5bWxpbmsgYXMgZmlsZSIpCiAgICBjYWxsIHM6TmV0QnJvd3NlKHN1YnN0aXR1dGUoYTpkaXJuYW1lLCdAJCcsJycsJ2UnKSkKICAgIHJlZHJhdyEKLSIgICBjYWxsIERyZXQoIk5ldEJyb3dzZSAwIDogc3ltbGluayIpCi0gICByZXR1cm4gMAorIiAgIGNhbGwgRHJldCgiTmV0QnJvd3NlIDogc3ltbGluayIpCisgICByZXR1cm4KIAogICBlbHNlaWYgZm5hbWUgIX4gJy8kJyAmJiBmbmFtZSAhfiAnXiInCiAgICAiIGxvb2tzIGxpa2UgYSByZWd1bGFyIGZpbGUsIGF0dGVtcHQgdHJhbnNmZXIKQEAgLTEwMzUsMTUgKzEwNzEsMTUgQEAKIAogICAgIiByZW1vdGUtcmVhZCB0aGUgcmVxdWVzdGVkIGZpbGUgaW50byBjdXJyZW50IGJ1ZmZlcgogICAgZW5ldyEKLSAgIGV4ZSAiZmlsZSAiLm1ldGhvZC4iOi8vIi51c2VyLm1hY2hpbmUuIi8iLmVzY2FwZShwYXRoLCcgJykKKyAgIGV4ZSAiZmlsZSAiLm1ldGhvZC4iOi8vIi51c2VyLm1hY2hpbmUuIi8iLmVzY2FwZShwYXRoLHM6bmV0cndfY2RfZXNjYXBlKQogICAgZXhlICJzaWxlbnQgZG9hdSBCdWZSZWFkUHJlICIuZm5hbWUKICAgIHNpbGVudCBjYWxsIHM6TmV0UmVhZChtZXRob2QuIjovLyIudXNlci5tYWNoaW5lLiIvIi5wYXRoKQogICAgZXhlICJzaWxlbnQgZG9hdSBCdWZSZWFkUG9zdCAiLmZuYW1lCiAgICBrZWVwanVtcHMgMWQKICAgIHNldGxvY2FsIG5vbW9kCiAKLSIgICBjYWxsIERyZXQoIk5ldEJyb3dzZSAwIDogZmlsZTwiLmZuYW1lLiI+IikKLSAgIHJldHVybiAwCisiICAgY2FsbCBEcmV0KCJOZXRCcm93c2UgOiBmaWxlPCIuZm5hbWUuIj4iKQorICAgcmV0dXJuCiAgIGVuZGlmCiAKICAgIiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KQEAgLTEwNTEsOTcgKzEwODcsMTUzIEBACiAiICBjYWxsIERlY2hvKCJQZXJmb3JtIGRpcmVjdG9yeSBsaXN0aW5nLi4uIikKICAgIiBzZXQgdXAgbmV3IGJ1ZmZlciBhbmQgbWFwCiAgIGxldCBidWZuYW1lICAgPSBtZXRob2QuJzovLycudXNlci5tYWNoaW5lLicvJy5wYXRoCi0gIGxldCBidWZuYW1lbnIgPSBidWZucihidWZuYW1lKQorICBsZXQgYnVmbmFtZW5yID0gYnVmZXhpc3RzKGJ1Zm5hbWUpCiAiICBjYWxsIERlY2hvKCJidWZuYW1lPCIuYnVmbmFtZS4iPiBidWZuYW1lbnI9Ii5idWZuYW1lbnIpCi0gIGlmIGJ1Zm5hbWVuciAhPSAtMQorICBpZiBidWZuYW1lbnIgIT0gMAogICAgIiBidWZmZXIgYWxyZWFkeSBleGlzdHMsIHN3aXRjaCB0byBpdCEKKyIgICBjYWxsIERlY2hvKCJidWZmZXIgYWxyZWFkeSBleGlzdHMsIHN3aXRjaGluZyB0byBpdCIpCiAgICBleGUgImIgIi5idWZuYW1lbnIKICAgIGlmIGxpbmUoIiQiKSA+PSA1Ci0iICAgIGNhbGwgRHJldCgiTmV0QnJvd3NlIDEiKQotICAgIHJldHVybiAxCisiICAgIGNhbGwgRHJldCgiTmV0QnJvd3NlIikKKyAgICByZXR1cm4KICAgIGVuZGlmCiAgIGVsc2UKKyIgICBjYWxsIERlY2hvKCJnZW5lcmF0ZSBhIG5ldyBidWZmZXIiKQogICAgZW5ldyEKICAgZW5kaWYKKworICAiIHJlbmFtZSBmaWxlIHRvIHJlZmxlY3Qgd2hlcmUgaXRzIGZyb20KICAgc2V0bG9jYWwgdHM9MzIgYnQ9bm9maWxlIGJoPXdpcGUgbm9ibAotICBleGUgJ2ZpbGUgJy5lc2NhcGUoYnVmbmFtZSwnICcpCisgIGV4ZSAnZmlsZSAnLmVzY2FwZShidWZuYW1lLHM6bmV0cndfY2RfZXNjYXBlKQogIiAgY2FsbCBEZWNobygicmVuYW1pbmcgZmlsZSB0byBidWZuYW1lPCIuYnVmbmFtZS4iPiIpCiAgIHNldGxvY2FsIGJ0PW5vd3JpdGUgYmg9aGlkZSBub2JsCi0gIG5ub3JlbWFwIDxidWZmZXI+IDxzaWxlbnQ+IDxjcj4JOmV4ZSAibm9ybSEgMCI8YmFyPmNhbGwgPFNJRD5OZXRCcm93c2UoPFNJRD5OZXRCcm93c2VDaGdEaXIoZXhwYW5kKCIlIiksPFNJRD5OZXRHZXREaXIoKSkpPGNyPgorCisgICIgc2V0IHVwIGJ1ZmZlci1sb2NhbCBtYXBwaW5ncworIiAgY2FsbCBEZWNobygic2V0IHVwIGJ1ZmZlci1sb2NhbCBtYXBwaW5ncyIpCisgIG5ub3JlbWFwIDxidWZmZXI+IDxzaWxlbnQ+IDxjcj4JOmV4ZSAibm9ybSEgMCI8YmFyPmNhbGwgPFNJRD5OZXRCcm93c2UoPFNJRD5OZXRCcm93c2VDaGdEaXIoZXhwYW5kKCIlIiksPFNJRD5OZXRHZXRXb3JkKCkpKTxjcj4KICAgbm5vcmVtYXAgPGJ1ZmZlcj4gPHNpbGVudD4gPGMtbD4JOmV4ZSAibm9ybSEgMCI8YmFyPmNhbGwgPFNJRD5OZXRCcm93c2UoPFNJRD5OZXRCcm93c2VDaGdEaXIoZXhwYW5kKCIlIiksJy4vJykpPGNyPgogICBubm9yZW1hcCA8YnVmZmVyPiA8c2lsZW50PiAtCQk6ZXhlICJub3JtISAwIjxiYXI+Y2FsbCA8U0lEPk5ldEJyb3dzZSg8U0lEPk5ldEJyb3dzZUNoZ0RpcihleHBhbmQoIiUiKSwnLi4vJykpPGNyPgogICBubm9yZW1hcCA8YnVmZmVyPiA8c2lsZW50PiBhCQk6bGV0IGc6bmV0cndfaGlkZT0hZzpuZXRyd19oaWRlPGJhcj5leGUgIm5vcm0hIDAiPGJhcj5jYWxsIDxTSUQ+TmV0QnJvd3NlKDxTSUQ+TmV0QnJvd3NlQ2hnRGlyKGV4cGFuZCgiJSIpLCcuLycpKTxjcj4KLSAgbm5vcmVtYXAgPGJ1ZmZlcj4gPHNpbGVudD4gPExlYWRlcj5oCTpjYWxsIDxTSUQ+TmV0SGlkZUVkaXQoMCk8Y3I+Ci0gIG5ub3JlbWFwIDxidWZmZXI+IDxzaWxlbnQ+IGkJCTpjYWxsIDxTSUQ+TmV0U2F2ZVBvc24oKTxiYXI+Y2FsbCA8U0lEPk5ldExvbmdMaXN0KDApPGJhcj5jYWxsIDxTSUQ+TmV0UmVzdG9yZVBvc24oKTxjcj4KLSAgbm5vcmVtYXAgPGJ1ZmZlcj4gPHNpbGVudD4gbwkJOmV4ZSBnOm5ldHJ3X3dpbnNpemUuIndpbmNtZCBzIjxiYXI+ZXhlICJub3JtISAwIjxiYXI+Y2FsbCA8U0lEPk5ldEJyb3dzZSg8U0lEPk5ldEJyb3dzZUNoZ0RpcihleHBhbmQoIiUiKSw8U0lEPk5ldEdldERpcigpKSk8Y3I+Ci0gIG5ub3JlbWFwIDxidWZmZXI+IDxzaWxlbnQ+IHIJCTpsZXQgZzpuZXRyd19zb3J0X2RpcmVjdGlvbj0gKGc6bmV0cndfc29ydF9kaXJlY3Rpb24gPX4gJ24nKT8gJ3InIDogJ24nPGJhcj5leGUgIm5vcm0hIDAiPGJhcj5jYWxsIDxTSUQ+TmV0QnJvd3NlKDxTSUQ+TmV0QnJvd3NlQ2hnRGlyKGV4cGFuZCgiJSIpLDxTSUQ+TmV0R2V0RGlyKCkpKTxjcj4KLSAgbm5vcmVtYXAgPGJ1ZmZlcj4gPHNpbGVudD4gcwkJOmxldCBnOm5ldHJ3X3NvcnRfYnk9IChnOm5ldHJ3X3NvcnRfYnkgPX4gJ24nKT8gJ3RpbWUnIDogKGc6bmV0cndfc29ydF9ieSA9fiAndCcpPyAnc2l6ZScgOiAnbmFtZSc8YmFyPmV4ZSAibm9ybSEgMCI8YmFyPmNhbGwgPFNJRD5OZXRCcm93c2UoPFNJRD5OZXRCcm93c2VDaGdEaXIoZXhwYW5kKCIlIiksJy4vJykpPGNyPgotICBubm9yZW1hcCA8YnVmZmVyPiA8c2lsZW50PiB2CQk6ZXhlIGc6bmV0cndfd2luc2l6ZS4id2luY21kIHYiPGJhcj5leGUgIm5vcm0hIDAiPGJhcj5jYWxsIDxTSUQ+TmV0QnJvd3NlKDxTSUQ+TmV0QnJvd3NlQ2hnRGlyKGV4cGFuZCgiJSIpLDxTSUQ+TmV0R2V0RGlyKCkpKTxjcj4KLSAgbm5vcmVtYXAgPGJ1ZmZlcj4gPHNpbGVudD4geAkJOmV4ZSAibm9ybSEgMCI8YmFyPmNhbGwgPFNJRD5OZXRCcm93c2VYKDxTSUQ+TmV0QnJvd3NlQ2hnRGlyKGV4cGFuZCgiJSIpLDxTSUQ+TmV0R2V0RGlyKCkpLDEpPGNyPgotICBubm9yZW1hcCA8YnVmZmVyPiA8c2lsZW50PiA8Mi1sZWZ0bW91c2U+IDpleGUgIm5vcm0hIDAiPGJhcj5jYWxsIDxTSUQ+TmV0QnJvd3NlKDxTSUQ+TmV0QnJvd3NlQ2hnRGlyKGV4cGFuZCgiJSIpLDxTSUQ+TmV0R2V0RGlyKCkpKTxjcj4KKyAgbm5vcmVtYXAgPGJ1ZmZlcj4gPHNpbGVudD4gYgkJOjxjLXU+Y2FsbCA8U0lEPk5ldEJvb2ttYXJrRGlyKDAsZXhwYW5kKCIlIikpPGNyPgorICBubm9yZW1hcCA8YnVmZmVyPiA8c2lsZW50PiBCCQk6PGMtdT5jYWxsIDxTSUQ+TmV0Qm9va21hcmtEaXIoMSxleHBhbmQoIiUiKSk8Y3I+CisgIG5ub3JlbWFwIDxidWZmZXI+IDxzaWxlbnQ+IDxjLWg+CTpjYWxsIDxTSUQ+TmV0SGlkZUVkaXQoMCk8Y3I+CisgIG5ub3JlbWFwIDxidWZmZXI+IDxzaWxlbnQ+IGkJCTpjYWxsIDxTSUQ+TmV0TG9uZ0xpc3QoMCk8Y3I+CisgIG5ub3JlbWFwIDxidWZmZXI+IDxzaWxlbnQ+IG8JCTpleGUgZzpuZXRyd193aW5zaXplLiJ3aW5jbWQgcyI8YmFyPmV4ZSAibm9ybSEgMCI8YmFyPmNhbGwgPFNJRD5OZXRCcm93c2UoPFNJRD5OZXRCcm93c2VDaGdEaXIoZXhwYW5kKCIlIiksPFNJRD5OZXRHZXRXb3JkKCkpKTxjcj4KKyAgbm5vcmVtYXAgPGJ1ZmZlcj4gPHNpbGVudD4gcQkJOjxjLXU+Y2FsbCA8U0lEPk5ldEJvb2ttYXJrRGlyKDIsZXhwYW5kKCIlIikpPGNyPgorICBubm9yZW1hcCA8YnVmZmVyPiA8c2lsZW50PiByCQk6bGV0IGc6bmV0cndfc29ydF9kaXJlY3Rpb249IChnOm5ldHJ3X3NvcnRfZGlyZWN0aW9uID1+ICduJyk/ICdyJyA6ICduJzxiYXI+ZXhlICJub3JtISAwIjxiYXI+Y2FsbCA8U0lEPk5ldEJyb3dzZSg8U0lEPk5ldEJyb3dzZUNoZ0RpcihleHBhbmQoIiUiKSwnLi8nKSk8Y3I+CisgIG5ub3JlbWFwIDxidWZmZXI+IDxzaWxlbnQ+IHMJCTpjYWxsIDxTSUQ+TmV0U2F2ZVdvcmRQb3NuKCk8YmFyPmxldCBnOm5ldHJ3X3NvcnRfYnk9IChnOm5ldHJ3X3NvcnRfYnkgPX4gJ24nKT8gJ3RpbWUnIDogKGc6bmV0cndfc29ydF9ieSA9fiAndCcpPyAnc2l6ZScgOiAnbmFtZSc8YmFyPmV4ZSAibm9ybSEgMCI8YmFyPmNhbGwgPFNJRD5OZXRCcm93c2UoPFNJRD5OZXRCcm93c2VDaGdEaXIoZXhwYW5kKCIlIiksJy4vJykpPGJhcj5jYWxsIDxTSUQ+TmV0UmVzdG9yZVdvcmRQb3NuKCk8Y3I+CisgIG5ub3JlbWFwIDxidWZmZXI+IDxzaWxlbnQ+IFMJCTpjYWxsIDxTSUQ+TmV0U29ydFNlcXVlbmNlKDApPGNyPgorICBubm9yZW1hcCA8YnVmZmVyPiA8c2lsZW50PiB2CQk6ZXhlIGc6bmV0cndfd2luc2l6ZS4id2luY21kIHYiPGJhcj5leGUgIm5vcm0hIDAiPGJhcj5jYWxsIDxTSUQ+TmV0QnJvd3NlKDxTSUQ+TmV0QnJvd3NlQ2hnRGlyKGV4cGFuZCgiJSIpLDxTSUQ+TmV0R2V0V29yZCgpKSk8Y3I+CisgIG5ub3JlbWFwIDxidWZmZXI+IDxzaWxlbnQ+IHgJCTpleGUgIm5vcm0hIDAiPGJhcj5jYWxsIDxTSUQ+TmV0QnJvd3NlWCg8U0lEPk5ldEJyb3dzZUNoZ0RpcihleHBhbmQoIiUiKSw8U0lEPk5ldEdldFdvcmQoKSksMSk8Y3I+CisgIG5ub3JlbWFwIDxidWZmZXI+IDxzaWxlbnQ+IDwyLWxlZnRtb3VzZT4gOmV4ZSAibm9ybSEgMCI8YmFyPmNhbGwgPFNJRD5OZXRCcm93c2UoPFNJRD5OZXRCcm93c2VDaGdEaXIoZXhwYW5kKCIlIiksPFNJRD5OZXRHZXRXb3JkKCkpKTxjcj4KICAgZXhlICdubm9yZW1hcCA8YnVmZmVyPiA8c2lsZW50PiA8ZGVsPgk6ZXhlICJub3JtISAwIjxiYXI+Y2FsbCA8U0lEPk5ldEJyb3dzZVJtKCInLnVzZXIubWFjaGluZS4nIiwiJy5wYXRoLiciKTxjcj4nCiAgIGV4ZSAndm5vcmVtYXAgPGJ1ZmZlcj4gPHNpbGVudD4gPGRlbD4JOmNhbGwgPFNJRD5OZXRCcm93c2VSbSgiJy51c2VyLm1hY2hpbmUuJyIsIicucGF0aC4nIik8Y3I+JworICBleGUgJ25ub3JlbWFwIDxidWZmZXI+IDxzaWxlbnQ+IGQJOmNhbGwgPFNJRD5OZXRNYWtlRGlyKCInLnVzZXIubWFjaGluZS4nIik8Y3I+JwogICBleGUgJ25ub3JlbWFwIDxidWZmZXI+IDxzaWxlbnQ+IEQJOmV4ZSAibm9ybSEgMCI8YmFyPmNhbGwgPFNJRD5OZXRCcm93c2VSbSgiJy51c2VyLm1hY2hpbmUuJyIsIicucGF0aC4nIik8Y3I+JwogICBleGUgJ3Zub3JlbWFwIDxidWZmZXI+IDxzaWxlbnQ+IEQJOmNhbGwgPFNJRD5OZXRCcm93c2VSbSgiJy51c2VyLm1hY2hpbmUuJyIsIicucGF0aC4nIik8Y3I+JwogICBleGUgJ25ub3JlbWFwIDxidWZmZXI+IDxzaWxlbnQ+IFIJOmV4ZSAibm9ybSEgMCI8YmFyPmNhbGwgPFNJRD5OZXRCcm93c2VSZW5hbWUoIicudXNlci5tYWNoaW5lLiciLCInLnBhdGguJyIpPGNyPicKICAgZXhlICd2bm9yZW1hcCA8YnVmZmVyPiA8c2lsZW50PiBSCTpjYWxsIDxTSUQ+TmV0QnJvd3NlUmVuYW1lKCInLnVzZXIubWFjaGluZS4nIiwiJy5wYXRoLiciKTxjcj4nCi0gIGV4ZSAnbm5vcmVtYXAgPGJ1ZmZlcj4gPHNpbGVudD4gPExlYWRlcj5tIDpjYWxsIDxTSUQ+TmV0TWFrZURpcigiJy51c2VyLm1hY2hpbmUuJyIpPGNyPicKICAgbm5vcmVtYXAgPGJ1ZmZlcj4gPwkJCTpoZSBuZXRydy1icm93c2UtY21kczxjcj4KICAgc2V0bG9jYWwgbWEKIAogICAiIFNldCB1cCB0aGUgYmFubmVyCi0iICBjYWxsIERlY2hvKCJleGVjdXRpbmc6IHIhICIubGlzdGNtZC4iICciLnBhdGguIiciKQotICBrZWVwanVtcHMgcHV0ID0nXCIgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09JworIiAgY2FsbCBEZWNobygic2V0IHVwIHRoZSBiYW5uZXI6IHNvcnRieTwiLmc6bmV0cndfc29ydF9ieS4iPiBtZXRob2Q8Ii5tZXRob2QuIj4iKQorICBrZWVwanVtcHMgcHV0ID0nXCIgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09JwogICBrZWVwanVtcHMgcHV0ID0nXCIgTmV0cncgUmVtb3RlIERpcmVjdG9yeSBMaXN0aW5nJwogICBrZWVwanVtcHMgcHV0ID0nXCIgICAnLmJ1Zm5hbWUKLSAgbGV0IGc6bmV0cndfYmFubmVyY250PSA2CisgIGxldCBzOm5ldHJ3X2Jhbm5lcmNudD0gNworICBsZXQgc29ydGJ5PSBnOm5ldHJ3X3NvcnRfYnkKKyAgaWYgZzpuZXRyd19zb3J0X2RpcmVjdGlvbiA9fiAiXnIiCisgICBsZXQgc29ydGJ5PSBzb3J0YnkuIiByZXZlcnNlZCIKKyAgZW5kaWYKKwogICBpZiBnOm5ldHJ3X3NvcnRfYnkgPX4gIl5uIgogICAgIiBzb3J0ZWQgYnkgbmFtZQotICAgbGV0IGc6bmV0cndfYmFubmVyY250PSBnOm5ldHJ3X2Jhbm5lcmNudCArIDEKLSAgIGtlZXBqdW1wcyBwdXQgPSdcIiAgIFNvcnRlZCBieSAgICAgICcuZzpuZXRyd19zb3J0X2J5CisgICBsZXQgczpuZXRyd19iYW5uZXJjbnQ9IHM6bmV0cndfYmFubmVyY250ICsgMQorICAga2VlcGp1bXBzIHB1dCA9J1wiICAgU29ydGVkIGJ5ICAgICAgJy5zb3J0YnkKICAgIGtlZXBqdW1wcyBwdXQgPSdcIiAgIFNvcnQgc2VxdWVuY2U6ICcuZzpuZXRyd19zb3J0X3NlcXVlbmNlCiAgIGVsc2UKICAgICIgc29ydGVkIGJ5IHNpemUgb3IgZGF0ZQotICAga2VlcGp1bXBzIHB1dCA9J1wiICAgU29ydGVkIGJ5ICcuZzpuZXRyd19zb3J0X2J5CisgICBrZWVwanVtcHMgcHV0ID0nXCIgICBTb3J0ZWQgYnkgJy5zb3J0YnkKICAgZW5kaWYKICAgaWYgZzpuZXRyd19saXN0X2hpZGUgIT0gIiIgJiYgZzpuZXRyd19oaWRlCiAgICBrZWVwanVtcHMgcHV0ID0nXCIgICBIaWRpbmc6ICcuZzpuZXRyd19saXN0X2hpZGUKLSAgIGxldCBnOm5ldHJ3X2Jhbm5lcmNudD0gZzpuZXRyd19iYW5uZXJjbnQgKyAxCisgICBsZXQgczpuZXRyd19iYW5uZXJjbnQ9IHM6bmV0cndfYmFubmVyY250ICsgMQogICBlbmRpZgotICBrZWVwanVtcHMgcHV0ID0nXCIgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09JworICBrZWVwanVtcHMgcHV0ID0nXCIgICBRdWljayBIZWxwOiAgICA/OmhlbHAgIC06Z28gdXAgZGlyICBEOmRlbGV0ZSAgUjpyZW5hbWUgIHM6c29ydC1ieSAgeDpleGVjJworICBrZWVwanVtcHMgcHV0ID0nXCIgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09JwogCi0gICIgcmVtb3RlIHJlYWQgdGhlIHJlcXVlc3RlZCBkaXJlY3RvcnkKLSAgZXhlICJzaWxlbnQgciEgIi5saXN0Y21kLiIgJyIucGF0aC4iJyIKLSAga2VlcGp1bXBzIDFkCisgICIgcmVtb3RlIHJlYWQgdGhlIHJlcXVlc3RlZCBkaXJlY3RvcnkgbGlzdGluZworICAiIFVzZSBmdHAgaWYgdGhhdCB3YXMgdGhlIGZpbGUtdHJhbnNmZXIgbWV0aG9kIHNlbGVjdGVkLCBvdGhlcndpc2UgdXNlIHNzaAorICAiIE5vdGUgdGhhdCBub3QgYWxsIGZ0cCBzZXJ2ZXJzIGhvbm9yIHRoZSBvcHRpb25zIGZvciBscworICBpZiBtZXRob2QgPT0gImZ0cCIKKyAgIGNhbGwgTmV0QnJvd3NlRnRwQ21kKHBhdGgsImxzICIubGlzdGNtZCkKKyAgIGtlZXBqdW1wcyAxZAorCisgICBpZiAhZzpuZXRyd19sb25nbGlzdAorIiAgICBjYWxsIERlY2hvKCJnZW5lcmF0ZSBzaG9ydCBsaXN0aW5nIikKKyAgICAiIHNob3J0ZW4gdGhlIGxpc3RpbmcKKyAgICBleGUgImtlZXBqdW1wcyAiLnM6bmV0cndfYmFubmVyY250CisgICAgIiBjbGVhbnVwCisgICAgd2hpbGUgZ2V0bGluZSgiLiIpID1+IGc6bmV0cndfZnRwX2Jyb3dzZV9yZWplY3QKKyAgICAga2VlcGp1bXBzIGQKKyAgICBlbmR3aGlsZQorICAgIGtlZXBqdW1wcyBwdXQ9Jy4uLycKKyAgICBrZWVwanVtcHMgcHV0PScuLycKKyAgICBleGUgJ2tlZXBqdW1wcyBzaWxlbnQgJy5zOm5ldHJ3X2Jhbm5lcmNudC4nLCRzL15cKFwlKFxTXCtcc1wrXClcezd9XFNcK1wpXHNcK1woXFMuKlwpJC9cMi9lJworICAgIGV4ZSAia2VlcGp1bXBzIHNpbGVudCAiLnM6bmV0cndfYmFubmVyY250LicsJGcvIC0+IC9zIyAtPiAuKi8kIy8jJworICAgIGV4ZSAia2VlcGp1bXBzIHNpbGVudCAiLnM6bmV0cndfYmFubmVyY250LicsJGcvIC0+IC9zIyAtPiAuKiQjLyMnCisgICBlbmRpZgorCisgIGVsc2UKKyIgICBjYWxsIERlY2hvKCJ1c2Ugc3NoIikKKyAgIGxldCBzaHE9ICZzaHE/ICZzaHEgOiAoICZzeHE/ICZzeHEgOiAiJyIpCisiICAgY2FsbCBEZWNobygiZXhlIHNpbGVudCByISAiLmxpc3RjbWQuIiAiLnNocS5lc2NhcGUocGF0aCxzOm5ldHJ3X2NkX2VzY2FwZSkuc2hxKQorICAgZXhlICJzaWxlbnQgciEgIi5saXN0Y21kLiIgIi5zaHEuZXNjYXBlKHBhdGgsczpuZXRyd19jZF9lc2NhcGUpLnNocQorICAga2VlcGp1bXBzIDFkCisgIGVuZGlmCiAKICAgIiBtYW5pcHVsYXRlIHRoZSBkaXJlY3RvcnkgbGlzdGluZyAoaGlkZSwgc29ydCkKICAgc2V0bG9jYWwgZnQ9bmV0cndsaXN0Ci0gIGlmIGxpbmUoIiQiKSA+PSBnOm5ldHJ3X2Jhbm5lcmNudAorICBpZiBsaW5lKCIkIikgPj0gczpuZXRyd19iYW5uZXJjbnQKICAgIGlmIGc6bmV0cndfaGlkZSAmJiBnOm5ldHJ3X2xpc3RfaGlkZSAhPSAiIgogICAgIGNhbGwgczpOZXRyd0xpc3RIaWRlKCkKICAgIGVuZGlmCisKICAgIGlmIGc6bmV0cndfbG9uZ2xpc3QKICAgICAiIGRvIGEgbG9uZyBsaXN0aW5nOyB0aGVzZSBzdWJzdGl0dXRpb25zIG5lZWQgdG8gYmUgZG9uZSBwcmlvciB0byBzb3J0aW5nCi0gICAga2VlcGp1bXBzIHNpbGVudCAvXnRvdGFsXHMqXGRcKyQvZAotICAgIGV4ZSAna2VlcGp1bXBzIHNpbGVudCAnLmc6bmV0cndfYmFubmVyY250LicsJHMvIC0+IC4qJC8vZScKLSAgICBleGUgJ2tlZXBqdW1wcyBzaWxlbnQgJy5nOm5ldHJ3X2Jhbm5lcmNudC4nLCRzL15cKFwlKFxTXCtcc1wrXClcezd9XFNcK1wpXHNcK1woXFMuKlwpJC9cMlx0XDEvZScKLSAgICBleGUgZzpuZXRyd19iYW5uZXJjbnQKKyIgICAgY2FsbCBEZWNobygibWFuaXB1bGF0ZSBsb25nIGxpc3RpbmciKQorCisgICAgaWYgbWV0aG9kID09ICJmdHAiCisgICAgICIgY2xlYW51cAorICAgICBleGUgImtlZXBqdW1wcyAiLnM6bmV0cndfYmFubmVyY250CisgICAgIHdoaWxlIGdldGxpbmUoIi4iKSA9fiAnXnRvdGFsXHNcK1xkXCskJyB8fCBnZXRsaW5lKCIuIikgPX4gJ1RyeWluZ1xzXCtcZFwrLiokJworICAgICAga2VlcGp1bXBzIGQKKyAgICAgZW5kd2hpbGUKKyAgICAgZXhlICdrZWVwanVtcHMgJy5zOm5ldHJ3X2Jhbm5lcmNudC4icHV0PScuLyciCisgICAgIGV4ZSAna2VlcGp1bXBzICcuczpuZXRyd19iYW5uZXJjbnQuInB1dD0nLi4vJyIKKyAgICBlbmRpZgorCisgICAgZXhlICdrZWVwanVtcHMgc2lsZW50ICcuczpuZXRyd19iYW5uZXJjbnQuJywkcy8gLT4gLiokLy9lJworICAgIGV4ZSAna2VlcGp1bXBzIHNpbGVudCAnLnM6bmV0cndfYmFubmVyY250LicsJHMvXlwoXCUoXFNcK1xzXCtcKVx7N31cU1wrXClcc1wrXChcUy4qXCkkL1wyXHRcMS9lJworICAgIGV4ZSBzOm5ldHJ3X2Jhbm5lcmNudAogICAgZW5kaWYKKwogICAgaWYgZzpuZXRyd19zb3J0X2J5ID1+ICJebiIKICAgICBjYWxsIHM6U2V0U29ydCgpCi0gICAgZXhlICdrZWVwanVtcHMgc2lsZW50ICcuZzpuZXRyd19iYW5uZXJjbnQuJywkY2FsbCBzOk5ldFNvcnQoKScKLSAgICBleGUgJ2tlZXBqdW1wcyBzaWxlbnQgJy5nOm5ldHJ3X2Jhbm5lcmNudC4nLCRzL15cZFx7M31cLy8vZScKKyAgICBleGUgJ2tlZXBqdW1wcyBzaWxlbnQgJy5zOm5ldHJ3X2Jhbm5lcmNudC4nLCRjYWxsIHM6TmV0U29ydCgpJworICAgIGV4ZSAna2VlcGp1bXBzIHNpbGVudCAnLnM6bmV0cndfYmFubmVyY250LicsJHMvXlxkXHszfVwvLy9lJwogICAgZW5kaWYKICAgIGlmIGc6bmV0cndfbG9uZ2xpc3QKICAgICAiIHNob3J0ZW4gdGhlIGxpc3QgdG8ga2VlcCBpdHMgd2lkdGggPD0gODAgY2hhcmFjdGVycwotICAgIGV4ZSAia2VlcGp1bXBzIHNpbGVudCAiLmc6bmV0cndfYmFubmVyY250LicsJHMvXHRbLWRzdHJ3eF1cKy9cdC9lJworICAgIGV4ZSAia2VlcGp1bXBzIHNpbGVudCAiLnM6bmV0cndfYmFubmVyY250LicsJHMvXHRbLWRzdHJ3eF1cKy9cdC9lJwogICAgZW5kaWYKICAgZW5kaWYKKyAgc2V0bG9jYWwgbm9tb2QKKyAgc2V0bG9jYWwgbm9tYQogCi0gIHNldGxvY2FsIG5vbWEgbm9tb2QKLQotIiAgY2FsbCBEcmV0KCJOZXRCcm93c2UgMSIpCi0gIHJldHVybiAxCisiICBjYWxsIERyZXQoIk5ldEJyb3dzZSIpCisgIHJldHVybgogZW5kZnVuCiAKICIgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkBAIC0xMTg4LDE5ICsxMjgwLDE5IEBACiBlbmRmdW4KIAogIiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSIgIE5ldEdldERpcjogaXQgZ2V0cyB0aGUgZGlyZWN0b3J5IG5hbWVkIHVuZGVyIHRoZSBjdXJzb3IKLWZ1biEgPFNJRD5OZXRHZXREaXIoKQotIiAgY2FsbCBEZnVuYygiTmV0R2V0RGlyKCkgbGluZSMiLmxpbmUoIi4iKSkKKyIgIE5ldEdldFdvcmQ6IGl0IGdldHMgdGhlIGRpcmVjdG9yeSBuYW1lZCB1bmRlciB0aGUgY3Vyc29yCitmdW4hIDxTSUQ+TmV0R2V0V29yZCgpCisiICBjYWxsIERmdW5jKCJOZXRHZXRXb3JkKCkgbGluZSMiLmxpbmUoIi4iKSkKICAgbGV0IGRpcm5hbWU9IGdldGxpbmUoIi4iKQogICBpZiBkaXJuYW1lID1+ICdcdCcKICAgIGxldCBkaXJuYW1lPSBzdWJzdGl0dXRlKGRpcm5hbWUsJ1x0LiokJywnJywnZScpCiAgIGVuZGlmCi0iICBjYWxsIERyZXQoIk5ldEdldERpciA8Ii5kaXJuYW1lLiI+IikKKyIgIGNhbGwgRHJldCgiTmV0R2V0V29yZCA8Ii5kaXJuYW1lLiI+IikKICAgcmV0dXJuIGRpcm5hbWUKIGVuZGZ1bgogCiAiIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotIiBOZXRCcm93c2VSbTogcmVtb3ZlIGEgcmVtb3RlIGZpbGUgb3IgZGlyZWN0b3J5IHt7ezIKKyIgTmV0QnJvd3NlUm06IHJlbW92ZS9kZWxldGUgYSByZW1vdGUgZmlsZSBvciBkaXJlY3Rvcnkge3t7MgogZnVuISA8U0lEPk5ldEJyb3dzZVJtKHVzcmhvc3QscGF0aCkgcmFuZ2UKICIgIGNhbGwgRGZ1bmMoIk5ldEJyb3dzZVJtKHVzcmhvc3Q8Ii5hOnVzcmhvc3QuIj4gcGF0aDwiLmE6cGF0aC4iPikiKQogIiAgY2FsbCBEZWNobygiZmlyc3RsaW5lPSIuYTpmaXJzdGxpbmUuIiBsYXN0bGluZT0iLmE6bGFzdGxpbmUpCkBAIC0xMjEzLDQxICsxMzA1LDUyIEBACiAgICBleGUgY3RyCiAKICAgIG5vcm0hIDAKLSAgIGxldCBybWZpbGU9IGE6cGF0aC5zOk5ldEdldERpcigpCisgICBsZXQgcm1maWxlPSBzOk5ldEdldFdvcmQoKQogIiAgIGNhbGwgRGVjaG8oInJtZmlsZTwiLnJtZmlsZS4iPiIpCiAKICAgIGlmIHJtZmlsZSAhfiAnXiInICYmIChybWZpbGUgPX4gJ0AkJyB8fCBybWZpbGUgIX4gJy8kJykKICAgICAiIGF0dGVtcHQgdG8gcmVtb3ZlIGZpbGUKLSAgICBsZXQgbmV0cndfcm1fY21kPSBzdWJzdGl0dXRlKGc6bmV0cndfcm1fY21kLCdIT1NUTkFNRScsYTp1c3Job3N0LCcnKS4nICcucm1maWxlCi0iICAgIGNhbGwgRGVjaG8oImF0dGVtcHQgdG8gcmVtb3ZlIGZpbGU6IHN5c3RlbSgiLm5ldHJ3X3JtX2NtZC4iKSIpCiAgICAgY2FsbCBpbnB1dHNhdmUoKQogICAgIGxldCBvaz0gaW5wdXQoIkNvbmZpcm0gZGVsZXRpb24gb2YgZmlsZTwiLnJtZmlsZS4iPiAiLCJ5IikKICAgICBjYWxsIGlucHV0cmVzdG9yZSgpCisKICAgICBpZiBvayA9PSAieSIKLSAgICAgbGV0IHJldD0gc3lzdGVtKG5ldHJ3X3JtX2NtZCkKLSIgICAgIGNhbGwgRGVjaG8oInJldHVybmVkPSIucmV0LiIgZXJyY29kZT0iLnY6c2hlbGxfZXJyb3IpCisgICAgIGlmIGV4aXN0cygiczpuZXRyd19tZXRob2QiKSAmJiAoczpuZXRyd19tZXRob2QgPT0gMiB8fCBzOm5ldHJ3X21ldGhvZCA9PSAzKQorICAgICAgc2lsZW50ISBrZWVwanVtcHMgLiwkZAorICAgICAgY2FsbCBOZXRCcm93c2VGdHBDbWQoYTpwYXRoLCJkZWxldGUgIi5ybWZpbGUpCisgICAgIGVsc2UKKyAgICAgIGxldCBuZXRyd19ybV9jbWQ9IHN1YnN0aXR1dGUoZzpuZXRyd19ybV9jbWQsJ0hPU1ROQU1FJyxhOnVzcmhvc3QsJycpLicgIicuZXNjYXBlKGE6cGF0aC5ybWZpbGUsczpuZXRyd19jZF9lc2NhcGUpLiciJworIiAgICAgIGNhbGwgRGVjaG8oImF0dGVtcHQgdG8gcmVtb3ZlIGZpbGU6IHN5c3RlbSgiLm5ldHJ3X3JtX2NtZC4iKSIpCisgICAgICBsZXQgcmV0PSBzeXN0ZW0obmV0cndfcm1fY21kKQorIiAgICAgIGNhbGwgRGVjaG8oInJldHVybmVkPSIucmV0LiIgZXJyY29kZT0iLnY6c2hlbGxfZXJyb3IpCisgICAgIGVuZGlmCiAgICAgZW5kaWYKICAgCiAgICBlbHNlCiAgICAgIiBhdHRlbXB0IHRvIHJlbW92ZSBkaXJlY3RvcnkKLSAgICBsZXQgbmV0cndfcm1kaXJfY21kPSBzdWJzdGl0dXRlKGc6bmV0cndfcm1kaXJfY21kLCdIT1NUTkFNRScsYTp1c3Job3N0LCcnKS4nICcucm1maWxlCi0iICAgIGNhbGwgRGVjaG8oImF0dGVtcHQgdG8gcmVtb3ZlIGRpcjogc3lzdGVtKCIubmV0cndfcm1kaXJfY21kLiIpIikKICAgICBjYWxsIGlucHV0c2F2ZSgpCiAgICAgbGV0IG9rPSBpbnB1dCgiQ29uZmlybSBkZWxldGlvbiBvZiBkaXJlY3Rvcnk8Ii5ybWZpbGUuIj4gIiwieSIpCiAgICAgY2FsbCBpbnB1dHJlc3RvcmUoKQogCiAgICAgaWYgb2sgPT0gInkiCi0gICAgIGxldCByZXQ9IHN5c3RlbShuZXRyd19ybWRpcl9jbWQpCi0iICAgICBjYWxsIERlY2hvKCJyZXR1cm5lZD0iLnJldC4iIGVycmNvZGU9Ii52OnNoZWxsX2Vycm9yKQotCi0gICAgIGlmIHY6c2hlbGxfZXJyb3IgIT0gMAotICAgICAgbGV0IG5ldHJ3X3JtZl9jbWQ9IHN1YnN0aXR1dGUoZzpuZXRyd19ybWZfY21kLCdIT1NUTkFNRScsYTp1c3Job3N0LCcnKS4nICcuc3Vic3RpdHV0ZShybWZpbGUsJy8kJywnJywnZScpCi0iICAgICAgY2FsbCBEZWNobygiMm5kIGF0dGVtcHQgdG8gcmVtb3ZlIGRpcjogc3lzdGVtKCIubmV0cndfcm1mX2NtZC4iKSIpCi0gICAgICBsZXQgcmV0PSBzeXN0ZW0obmV0cndfcm1mX2NtZCkKKyAgICAgaWYgZXhpc3RzKCJzOm5ldHJ3X21ldGhvZCIpICYmIChzOm5ldHJ3X21ldGhvZCA9PSAyIHx8IHM6bmV0cndfbWV0aG9kID09IDMpCisgICAgICBjYWxsIE5ldEJyb3dzZUZ0cENtZChhOnBhdGgsInJtZGlyICIucm1maWxlKQorICAgICBlbHNlCisgICAgICBsZXQgcm1maWxlICAgICAgICAgPSBhOnBhdGgucm1maWxlCisgICAgICBsZXQgbmV0cndfcm1kaXJfY21kPSBzdWJzdGl0dXRlKGc6bmV0cndfcm1kaXJfY21kLCdIT1NUTkFNRScsYTp1c3Job3N0LCcnKS4nICcuIiciLiciJy5ybWZpbGUuJyInLiInIgorIiAgICAgIGNhbGwgRGVjaG8oImF0dGVtcHQgdG8gcmVtb3ZlIGRpcjogc3lzdGVtKCIubmV0cndfcm1kaXJfY21kLiIpIikKKyAgICAgIGxldCByZXQ9IHN5c3RlbShuZXRyd19ybWRpcl9jbWQpCiAiICAgICAgY2FsbCBEZWNobygicmV0dXJuZWQ9Ii5yZXQuIiBlcnJjb2RlPSIudjpzaGVsbF9lcnJvcikKIAogICAgICAgaWYgdjpzaGVsbF9lcnJvciAhPSAwCi0gICAgICAgZWNob2VyciAidW5hYmxlIHRvIHJlbW92ZSBkaXJlY3Rvcnk8Ii5ybWZpbGUuIj4gLS0gaXMgaXQgZW1wdHk/IgorICAgICAgIGxldCBuZXRyd19ybWZfY21kPSBzdWJzdGl0dXRlKGc6bmV0cndfcm1mX2NtZCwnSE9TVE5BTUUnLGE6dXNyaG9zdCwnJykuJyAnLnN1YnN0aXR1dGUocm1maWxlLCcvJCcsJycsJ2UnKQorIiAgICAgICBjYWxsIERlY2hvKCIybmQgYXR0ZW1wdCB0byByZW1vdmUgZGlyOiBzeXN0ZW0oIi5uZXRyd19ybWZfY21kLiIpIikKKyAgICAgICBsZXQgcmV0PSBzeXN0ZW0obmV0cndfcm1mX2NtZCkKKyIgICAgICAgY2FsbCBEZWNobygicmV0dXJuZWQ9Ii5yZXQuIiBlcnJjb2RlPSIudjpzaGVsbF9lcnJvcikKKyAgICAgCisgICAgICAgaWYgdjpzaGVsbF9lcnJvciAhPSAwCisgICAgICAgIGVjaG9lcnIgInVuYWJsZSB0byByZW1vdmUgZGlyZWN0b3J5PCIucm1maWxlLiI+IC0tIGlzIGl0IGVtcHR5PyIKKyAgICAgICBlbmRpZgogICAgICAgZW5kaWYKICAgICAgZW5kaWYKICAgICBlbmRpZgpAQCAtMTI3OSwxNSArMTM4MiwyMSBAQAogICAgZXhlICJrZWVwanVtcHMgIi5jdHIKIAogICAgbm9ybSEgMAotICAgbGV0IG9sZG5hbWU9IGE6cGF0aC5zOk5ldEdldERpcigpCisgICBsZXQgb2xkbmFtZT0gczpOZXRHZXRXb3JkKCkKICIgICBjYWxsIERlY2hvKCJvbGRuYW1lPCIub2xkbmFtZS4iPiIpCiAKICAgIGNhbGwgaW5wdXRzYXZlKCkKLSAgIGxldCBuZXduYW1lPSBpbnB1dCgiTW92aW5nICIuYTp1c3Job3N0LiIncyAiLm9sZG5hbWUuIiB0byA6ICIsb2xkbmFtZSkKKyAgIGxldCBuZXduYW1lPSBpbnB1dCgiTW92aW5nICIub2xkbmFtZS4iIHRvIDogIixvbGRuYW1lKQogICAgY2FsbCBpbnB1dHJlc3RvcmUoKQogCi0gICBsZXQgcmV0PSBzeXN0ZW0ocmVuYW1lX2NtZC4iICIub2xkbmFtZS4iICIubmV3bmFtZSkKLSIgICBjYWxsIERlY2hvKCJleGVjdXRpbmcgc3lzdGVtKCIucmVuYW1lX2NtZC4iICIub2xkbmFtZS4iICIubmV3bmFtZSkKKyAgIGlmIGV4aXN0cygiczpuZXRyd19tZXRob2QiKSAmJiAoczpuZXRyd19tZXRob2QgPT0gMiB8fCBzOm5ldHJ3X21ldGhvZCA9PSAzKQorICAgIGNhbGwgTmV0QnJvd3NlRnRwQ21kKGE6cGF0aCwicmVuYW1lICIub2xkbmFtZS4iICIubmV3bmFtZSkKKyAgIGVsc2UKKyAgICBsZXQgb2xkbmFtZT0gYTpwYXRoLm9sZG5hbWUKKyAgICBsZXQgbmV3bmFtZT0gYTpwYXRoLm5ld25hbWUKKyIgICAgY2FsbCBEZWNobygic3lzdGVtKHJlbmFtZV9jbWQiLicgIicuZXNjYXBlKG9sZG5hbWUsIiAiKS4nIiAiJy5lc2NhcGUobmV3bmFtZSxzOm5ldHJ3X2NkX2VzY2FwZSkuJyInKQorICAgIGxldCByZXQ9IHN5c3RlbShyZW5hbWVfY21kLicgIicuZXNjYXBlKG9sZG5hbWUsczpuZXRyd19jZF9lc2NhcGUpLiciICInLmVzY2FwZShuZXduYW1lLHM6bmV0cndfY2RfZXNjYXBlKS4nIicpCisgICBlbmRpZgogCiAgICBsZXQgY3RyPSBjdHIgKyAxCiAgIGVuZHdoaWxlCkBAIC0xMzA2LDYgKzE0MTUsOSBAQAogIiAgY2FsbCBEZnVuYygiTmV0QnJvd3NlWCgiLmE6Zm5hbWUuIiByZW1vdGU9Ii5hOnJlbW90ZS4iKSIpCiAKICAgbGV0IGV4dGVuPSBzdWJzdGl0dXRlKGE6Zm5hbWUsJy4qXC5cKC5cey19XCknLCdcMScsJ2UnKQorICBpZiBoYXMoIndpbjMyIikgfHwgaGFzKCJ3aW45NSIpIHx8IGhhcygid2luNjQiKSB8fCBoYXMoIndpbjE2IikKKyAgIGxldCBleHRlbj0gc3Vic3RpdHV0ZShleHRlbiwnXi4qJCcsJ1xMJlxFJywnJykKKyAgZW5kaWYKICIgIGNhbGwgRGVjaG8oImV4dGVuPCIuZXh0ZW4uIj4gIi4iTmV0cndGaWxlSGFuZGxlcl8iLmV4dGVuLiIoKTpleGlzdHM9Ii5leGlzdHMoIipOZXRyd0ZpbGVIYW5kbGVyXyIuZXh0ZW4pKQogICBpZiBleHRlbiAhPSAiIiAmJiBleGlzdHMoIipOZXRyd0ZpbGVIYW5kbGVyXyIuZXh0ZW4pCiAKQEAgLTEzNDUsNiArMTQ1Nyw3OSBAQAogZW5kZnVuCiAKICIgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisiIE5ldEJyb3dzZUZ0cENtZDogdW5mb3J0dW5hdGVseSwgbm90IGFsbCBmdHAgc2VydmVycyBob25vciBvcHRpb25zIGZvciBscyB7e3syCisiICBUaGlzIGZ1bmN0aW9uIGFzc3VtZXMgdGhhdCBhIGxvbmcgbGlzdGluZyB3aWxsIGJlIHJlY2VpdmVkLiAgU2l6ZSwgdGltZSwKKyIgIGFuZCByZXZlcnNlIHNvcnRzIHdpbGwgYmUgcmVxdWVzdGVkIG9mIHRoZSBzZXJ2ZXIgYnV0IG5vdCBvdGhlcndpc2UKKyIgIGVuZm9yY2VkIGhlcmUuCitmdW4hIE5ldEJyb3dzZUZ0cENtZChwYXRoLGNtZCkKKyIgIGNhbGwgRGZ1bmMoIk5ldEJyb3dzZUZ0cENtZChwYXRoPCIuYTpwYXRoLiI+IGNtZDwiLmE6Y21kLiI+KSBuZXRyd19tZXRob2Q9Ii5zOm5ldHJ3X21ldGhvZCkKKworICAiIGJlY2F1c2UgV2luWFggZnRwIHVzZXMgdW5peCBzdHlsZSBpbnB1dAorICAiIGN1cmxpbmUgaXMgb25lIG1vcmUgdGhhbiB0aGUgYmFubmVyY250IGluIG9yZGVyIHRvIGFjY291bnQKKyAgIiBmb3IgdGhlIHVud2FudGVkIGZpcnN0IGJsYW5rIGxpbmUgKGRvaW5nIGEgOnB1dCB0byBhbiBlbXB0eQorICAiIGJ1ZmZlciB5aWVsZHMgYSBibGFuayBmaXJzdCBsaW5lKQorICBsZXQgZmZrZWVwPSAmZmYKKyAgc2V0bG9jYWwgbWEKKyAgc2V0bG9jYWwgZmY9dW5peAorICBsZXQgY3VybGluZT0gczpuZXRyd19iYW5uZXJjbnQrMQorICBleGUgInNpbGVudCEga2VlcGp1bXBzICIuY3VybGluZS4iLCRkIgorCisgICAiLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4KKyAgaWYgczpuZXRyd19tZXRob2QgPT0gMgorICAgIiBmdHAgKyA8Lm5ldHJjPjogIE1ldGhvZCAjMgorICAgaWYgYTpwYXRoICE9ICIiCisgICAgcHV0ID0nY2QgJy5hOnBhdGgKKyAgIGVuZGlmCisgICBleGUgInB1dCA9JyIuYTpjbWQuIiciCisKKyAgIGlmIGV4aXN0cygiZzpuZXRyd19wb3J0IikgJiYgZzpuZXRyd19wb3J0ICE9ICIiCisiICAgIGNhbGwgRGVjaG8oImV4ZSAiLmc6bmV0cndfc2lsZW50eGZlci5jdXJsaW5lLiIsJCEiLmc6bmV0cndfZnRwX2NtZC4iIC1pICIuZzpuZXRyd19tYWNoaW5lLiIgIi5nOm5ldHJ3X3BvcnQpCisgICAgZXhlIGc6bmV0cndfc2lsZW50eGZlci5jdXJsaW5lLiIsJCEiLmc6bmV0cndfZnRwX2NtZC4iIC1pICIuZzpuZXRyd19tYWNoaW5lLiIgIi5nOm5ldHJ3X3BvcnQKKyAgIGVsc2UKKyIgICAgY2FsbCBEZWNobygiZXhlICIuZzpuZXRyd19zaWxlbnR4ZmVyLmN1cmxpbmUuIiwkISIuZzpuZXRyd19mdHBfY21kLiIgLWkgIi5nOm5ldHJ3X21hY2hpbmUpCisgICAgZXhlIGc6bmV0cndfc2lsZW50eGZlci5jdXJsaW5lLiIsJCEiLmc6bmV0cndfZnRwX2NtZC4iIC1pICIuZzpuZXRyd19tYWNoaW5lCisgICBlbmRpZgorCisgICAiLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4KKyAgZWxzZWlmIHM6bmV0cndfbWV0aG9kID09IDMKKyAgICIgZnRwICsgbWFjaGluZSxpZCxwYXNzd2QsZmlsZW5hbWU6ICBNZXRob2QgIzMKKyAgICBzZXRsb2NhbCBmZj11bml4CisgICAgaWYgZXhpc3RzKCJnOm5ldHJ3X3BvcnQiKSAmJiBnOm5ldHJ3X3BvcnQgIT0gIiIKKyAgICAgcHV0ID0nb3BlbiAnLmc6bmV0cndfbWFjaGluZS4nICcuZzpuZXRyd19wb3J0CisgICAgZWxzZQorICAgICBwdXQgPSdvcGVuICcuZzpuZXRyd19tYWNoaW5lCisgICAgZW5kaWYKKyAKKyAgICBpZiBleGlzdHMoImc6bmV0cndfZnRwIikgJiYgZzpuZXRyd19mdHAgPT0gMQorICAgICBwdXQgPWc6bmV0cndfdWlkCisgICAgIHB1dCA9ZzpuZXRyd19wYXNzd2QKKyAgICBlbHNlCisgICAgIHB1dCA9J3VzZXIgJy5nOm5ldHJ3X3VpZC4nICcuZzpuZXRyd19wYXNzd2QKKyAgICBlbmRpZgorIAorICAgaWYgYTpwYXRoICE9ICIiCisgICAgcHV0ID0nY2QgJy5hOnBhdGgKKyAgIGVuZGlmCisgICBleGUgInB1dCA9JyIuYTpjbWQuIiciCisgCisgICAgIiBwZXJmb3JtIGZ0cDoKKyAgICAiIC1pICAgICAgIDogdHVybnMgb2ZmIGludGVyYWN0aXZlIHByb21wdGluZyBmcm9tIGZ0cAorICAgICIgLW4gIHVuaXggOiBET04nVCB1c2UgPC5uZXRyYz4sIGV2ZW4gdGhvdWdoIGl0IGV4aXN0cworICAgICIgLW4gIHdpbjMyOiBxdWl0IGJlaW5nIG9ibm94aW91cyBhYm91dCBwYXNzd29yZAorIiAgICBjYWxsIERlY2hvKCJleGUgIi5nOm5ldHJ3X3NpbGVudHhmZXIuY3VybGluZS4iLCQhIi5nOm5ldHJ3X2Z0cF9jbWQuIiAtaSAtbiIpCisgICAgZXhlIGc6bmV0cndfc2lsZW50eGZlci5jdXJsaW5lLiIsJCEiLmc6bmV0cndfZnRwX2NtZC4iIC1pIC1uIgorCisgICAiLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4KKyAgZWxzZQorICAgIGVjaG8gIioqKndhcm5pbmcqKiogdW5hYmxlIHRvIGNvbXBseSB3aXRoIHlvdXIgcmVxdWVzdDwiIC4gY2hvaWNlIC4gIj4iCisgIGVuZGlmCisKKyAgIiByZXN0b3JlIHNldHRpbmdzCisgIGxldCAmZmY9IGZma2VlcAorIiAgY2FsbCBEcmV0KCJOZXRCcm93c2VGdHBDbWQiKQorZW5kZnVuCisKKyIgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAiIE5ldHJ3TGlzdEhpZGU6IHVzZXMgW3JhbmdlXWd+Li4ufmQgdG8gZGVsZXRlIGZpbGVzIHRoYXQgbWF0Y2ggY29tbWEge3t7MgogIiBzZXBhcmF0ZWQgcGF0dGVybnMgZ2l2ZW4gaW4gZzpuZXRyd19saXN0X2hpZGUKIGZ1biEgPFNJRD5OZXRyd0xpc3RIaWRlKCkKQEAgLTEzNjAsNyArMTU0NSw3IEBACiAgICAgbGV0IGxpc3RoaWRlPSAiIgogICAgZW5kaWYKICIgICBjYWxsIERlY2hvKCJwcnVuaW5nIDwiLmhpZGUuIj4gbGlzdGhpZGU8Ii5saXN0aGlkZS4iPiIpCi0gICBleGUgJ2tlZXBqdW1wcyBzaWxlbnQgJy5nOm5ldHJ3X2Jhbm5lcmNudC4nLCRnficuaGlkZS4nfmQnCisgICBleGUgJ2tlZXBqdW1wcyBzaWxlbnQgJy5zOm5ldHJ3X2Jhbm5lcmNudC4nLCRnficuaGlkZS4nfmQnCiAgIGVuZHdoaWxlCiAKICIgIGNhbGwgRHJldCgiTmV0cndMaXN0SGlkZSIpCkBAIC0xMzgwLDE2ICsxNTY1LDM3IEBACiAgIGlmIGE6bW9kZSA9PSAwCiAgICBzaWxlbnQgY2FsbCBzOk5ldEJyb3dzZShzOk5ldEJyb3dzZUNoZ0RpcihleHBhbmQoIiUiKSwnLi8nKSkKICAgZWxzZQotICAgc2lsZW50IGNhbGwgczpMb2NhbEJyb3dzZShzOk5ldEJyb3dzZUNoZ0RpcihleHBhbmQoIiUiKSwnLi8nKSkKKyAgIHNpbGVudCBjYWxsIHM6TG9jYWxCcm93c2UoPFNJRD5Mb2NhbEJyb3dzZUNoZ0RpcihiOm5ldHJ3X2N1cmRpciwiLi8iKSkKICAgZW5kaWYKIAogIiAgY2FsbCBEcmV0KCJOZXRIaWRlRWRpdCIpCiBlbmRmdW4KIAogIiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyIgTmV0U29ydFNlcXVlbmNlOiBhbGxvd3MgdXNlciB0byBlZGl0IHRoZSBzb3J0aW5nIHNlcXVlbmNlCitmdW4hIDxTSUQ+TmV0U29ydFNlcXVlbmNlKG1vZGUpCisiICBjYWxsIERmdW5jKCJOZXRTb3J0U2VxdWVuY2UobW9kZT0iLmE6bW9kZS4iKSIpCisKKyAgY2FsbCBpbnB1dHNhdmUoKQorICBsZXQgbmV3c29ydHNlcT0gaW5wdXQoIkVkaXQgU29ydGluZyBTZXF1ZW5jZTogIixnOm5ldHJ3X3NvcnRfc2VxdWVuY2UpCisgIGNhbGwgaW5wdXRyZXN0b3JlKCkKKworICAiIHJlZnJlc2ggdGhlIGxpc3RpbmcKKyAgbGV0IGc6bmV0cndfc29ydF9zZXF1ZW5jZT0gbmV3c29ydHNlcQorICBpZiBhOm1vZGUgPT0gMAorICAgc2lsZW50IGNhbGwgczpOZXRCcm93c2UoczpOZXRCcm93c2VDaGdEaXIoZXhwYW5kKCIlIiksJy4vJykpCisgIGVsc2UKKyAgIHNpbGVudCBjYWxsIHM6TG9jYWxCcm93c2UoPFNJRD5Mb2NhbEJyb3dzZUNoZ0RpcihiOm5ldHJ3X2N1cmRpciwiLi8iKSkKKyAgZW5kaWYKKworIiAgY2FsbCBEcmV0KCJOZXRTb3J0U2VxdWVuY2UiKQorZW5kZnVuCisKKyIgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAiICBOZXRMb25nTGlzdDoge3t7MgogZnVuISA8U0lEPk5ldExvbmdMaXN0KG1vZGUpCiAiICBjYWxsIERmdW5jKCJOZXRMb25nTGlzdChtb2RlPSIuYTptb2RlLiIpIG5ldHJ3X2xvbmdsaXN0PSIuZzpuZXRyd19sb25nbGlzdCkKKyAgY2FsbCBzOk5ldFNhdmVQb3NuKCkKIAogICBpZiBnOm5ldHJ3X2xvbmdsaXN0ICE9IDAKICAgICIgdHVybiBsb25nIGxpc3Rpbmcgb2ZmCkBAIC0xNDA2LDEzICsxNjEyLDMyIEBACiAgIGlmIGE6bW9kZSA9PSAwCiAgICBzaWxlbnQgY2FsbCA8U0lEPk5ldEJyb3dzZSg8U0lEPk5ldEJyb3dzZUNoZ0RpcihleHBhbmQoIiUiKSwiLi8iKSkKICAgZWxzZQotICAgc2lsZW50IGNhbGwgPFNJRD5Mb2NhbEJyb3dzZSg8U0lEPkxvY2FsQnJvd3NlQ2hnRGlyKGV4cGFuZCgiJSIpLCIuLyIpKQorICAgc2lsZW50IGNhbGwgPFNJRD5Mb2NhbEJyb3dzZSg8U0lEPkxvY2FsQnJvd3NlQ2hnRGlyKGI6bmV0cndfY3VyZGlyLCIuLyIpKQogICBlbmRpZgogCisgIGNhbGwgczpOZXRSZXN0b3JlUG9zbigpCiAiICBjYWxsIERyZXQoIk5ldExvbmdMaXN0IDogZzpuZXRyd19sb25nbGlzdD0iLmc6bmV0cndfbG9uZ2xpc3QpCiBlbmRmdW4KIAogIiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyIgTmV0U2F2ZVdvcmRQb3NuOiB1c2VkIGJ5IHRoZSAicyIgY29tbWFuZCBpbiBib3RoIHJlbW90ZSBhbmQgbG9jYWwKKyIgYnJvd3NpbmcuICBBbG9uZyB3aXRoIE5ldFJlc3RvcmVXb3JkUG9zbigpLCBpdCBrZWVwcyB0aGUgY3Vyc29yIG9uCisiIHRoZSBzYW1lIHdvcmQgZXZlbiB0aG91Z2ggdGhlIHNvcnRpbmcgaGFzIGNoYW5nZWQgaXRzIG9yZGVyIG9mIGFwcGVhcmFuY2UuCitmdW4hIHM6TmV0U2F2ZVdvcmRQb3NuKCkKKyIgIGNhbGwgRGZ1bmMoIk5ldFNhdmVXb3JkUG9zbigpIikKKyAgbGV0IHM6bmV0cndfc2F2ZXdvcmQ9ICdeJy5lc2NhcGUoZ2V0bGluZSgiLiIpLHM6bmV0cndfY2RfZXNjYXBlKS4nJCcKKyIgIGNhbGwgRHJldCgiTmV0U2F2ZVdvcmRQb3NuIDogc2F2ZXdvcmQ8Ii5zOm5ldHJ3X3NhdmV3b3JkLiI+IikKK2VuZGZ1bgorCisiIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIiBOZXRSZXN0b3JlV29yZFBvc246IHVzZWQgYnkgdGhlICJzIiBjb21tYW5kOyBzZWUgTmV0U2F2ZVdvcmRQb3NuKCkgYWJvdmUKK2Z1biEgczpOZXRSZXN0b3JlV29yZFBvc24oKQorIiAgY2FsbCBEZnVuYygiTmV0UmVzdG9yZVdvcmRQb3NuKCkiKQorICBzaWxlbnQhIGNhbGwgc2VhcmNoKHM6bmV0cndfc2F2ZXdvcmQsJ3cnKQorIiAgY2FsbCBEcmV0KCJOZXRSZXN0b3JlV29yZFBvc24iKQorZW5kZnVuCisKKyIgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAiIE5ldE1ha2VEaXI6IHRoaXMgZnVuY3Rpb24gbWFrZXMgYSBkaXJlY3RvcnkgKGJvdGggbG9jYWwgYW5kIHJlbW90ZSkKIGZ1biEgPFNJRD5OZXRNYWtlRGlyKHVzcmhvc3QpCiAiICBjYWxsIERmdW5jKCJOZXRNYWtlRGlyKHVzcmhvc3Q8Ii5hOnVzcmhvc3QuIj4pIikKQEAgLTE0MjMsMzEgKzE2NDgsNDUgQEAKICAgY2FsbCBpbnB1dHNhdmUoKQogICBsZXQgbmV3ZGlybmFtZT0gaW5wdXQoIlBsZWFzZSBnaXZlIGRpcmVjdG9yeSBuYW1lOiAiKQogICBjYWxsIGlucHV0cmVzdG9yZSgpCisiICBjYWxsIERlY2hvKCJuZXdkaXJuYW1lPCIubmV3ZGlybmFtZS4iPiIpCiAKICAgaWYgbmV3ZGlybmFtZSA9PSAiIgogIiAgIGNhbGwgRHJldCgiTmV0TWFrZURpciA6IHVzZXIgYWJvcnRlZCB3aXRoIGJhcmUgPGNyPiIpCiAgICByZXR1cm4KICAgZW5kaWYKLSAgbGV0IG5ld2Rpcm5hbWU9IGVzY2FwZShuZXdkaXJuYW1lLCcgJykKIAogICBpZiBhOnVzcmhvc3QgPT0gIiIKIAogICAgIiBMb2NhbCBta2RpcjoKICAgICIgc2FuaXR5IGNoZWNrcwotICAgaWYgaXNkaXJlY3RvcnkobmV3ZGlybmFtZSkKKyAgIGxldCBmdWxsbmV3ZGlyPSBiOm5ldHJ3X2N1cmRpci4nLycubmV3ZGlybmFtZQorIiAgIGNhbGwgRGVjaG8oImZ1bGxuZXdkaXI8Ii5mdWxsbmV3ZGlyLiI+IikKKyAgIGlmIGlzZGlyZWN0b3J5KGZ1bGxuZXdkaXIpCiAgICAgZWNob2VyciAiKioqd2FybmluZyoqKiA8Ii5uZXdkaXJuYW1lLiI+IGlzIGFscmVhZHkgYSBkaXJlY3RvcnkhIgogIiAgICBjYWxsIERyZXQoIk5ldE1ha2VEaXIgOiBkaXJlY3Rvcnk8Ii5uZXdkaXJuYW1lLiI+IGV4aXN0cyBwcmV2aW91c2x5IikKICAgICByZXR1cm4KICAgIGVuZGlmCi0gICBpZiBmaWxlcmVhZGFibGUobmV3ZGlybmFtZSkKKyAgIGlmIGZpbGVyZWFkYWJsZShmdWxsbmV3ZGlyKQogICAgIGVjaG9lcnIgIioqKndhcm5pbmcqKiogPCIubmV3ZGlybmFtZS4iPiBpcyBhbHJlYWR5IGEgZmlsZSEiCiAiICAgIGNhbGwgRHJldCgiTmV0TWFrZURpciA6IGZpbGU8Ii5uZXdkaXJuYW1lLiI+IGV4aXN0cyBwcmV2aW91c2x5IikKICAgICByZXR1cm4KICAgIGVuZGlmCi0gICBleGUgInNpbGVudCEgISIuZzpuZXRyd19sb2NhbF9ta2Rpci4iICIubmV3ZGlybmFtZQorICAgbGV0IG5ldHJ3X29yaWdkaXI9IHM6TmV0R2V0Y3dkKDEpCisgICBleGUgJ2NkICcuYjpuZXRyd19jdXJkaXIKKyIgICBjYWxsIERlY2hvKCJuZXRyd19vcmlnZGlyPCIubmV0cndfb3JpZ2Rpci4iPiBiOm5ldHJ3X2N1cmRpcjwiLmI6bmV0cndfY3VyZGlyLiI+IikKKyIgICBjYWxsIERlY2hvKCJleGUgc2lsZW50ISAhIi5nOm5ldHJ3X2xvY2FsX21rZGlyLicgIicubmV3ZGlybmFtZS4nIicpCisgICBleGUgInNpbGVudCEgISIuZzpuZXRyd19sb2NhbF9ta2Rpci4nICInLm5ld2Rpcm5hbWUuJyInCisgICBpZiBnOm5ldHJ3X2tlZXBkaXIgfCBleGUgJ2tlZXBqdW1wcyBjZCAnLm5ldHJ3X29yaWdkaXIgfCBlbmRpZgorCiAgICBpZiB2OnNoZWxsX2Vycm9yID09IDAKICAgICAiIHJlZnJlc2ggbGlzdGluZwotICAgIGNhbGwgczpMb2NhbEJyb3dzZSgiLiIpCisiICAgIGNhbGwgRGVjaG8oInJlZnJlc2ggbGlzdGluZyIpCisgICAgbGV0IGxpbmVudW09IGxpbmUoIi4iKQorICAgIG5vcm0hIEgwCisgICAgbGV0IGhsaW5lICA9IGxpbmUoIi4iKQorICAgIGNhbGwgczpMb2NhbEJyb3dzZShzOkxvY2FsQnJvd3NlQ2hnRGlyKGI6bmV0cndfY3VyZGlyLCcuLycpKQorICAgIGV4ZSAibm9ybSEgIi5obGluZS4iRzB6XDxDUj4iCisgICAgZXhlIGxpbmVudW0KICAgIGVsc2UKICAgICBlY2hvZXJyICIqKip3YXJuaW5nKioqIHVuYWJsZSB0byBtYWtlIGRpcmVjdG9yeTwiLm5ld2Rpcm5hbWUuIj4iCiAgICBlbmRpZgpAQCAtMTQ1NiwxMiArMTY5NSwxNyBAQAogICBlbHNlCiAgICAiIFJlbW90ZSBta2RpcjoKICAgIGxldCBta2RpcmNtZCAgPSBzdWJzdGl0dXRlKGc6bmV0cndfbWtkaXJfY21kLCdcPEhPU1ROQU1FXD4nLGE6dXNyaG9zdCwnJykKLSAgIGxldCBuZXdkaXJuYW1lPSBzdWJzdGl0dXRlKGV4cGFuZCgiJSIpLCdeXCUoLlx7LX0vXClcezN9XCguKlwpJCcsJ1wxJywnJykubmV3ZGlybmFtZQorICAgbGV0IG5ld2Rpcm5hbWU9ICInIi4nIicuc3Vic3RpdHV0ZShleHBhbmQoIiUiKSwnXlwlKC5cey19L1wpXHszfVwoLipcKSQnLCdcMScsJycpLm5ld2Rpcm5hbWUuJyInLiInIgogIiAgIGNhbGwgRGVjaG8oImV4ZSBzaWxlbnQhICEiLm1rZGlyY21kLiIgIi5uZXdkaXJuYW1lKQogICAgZXhlICJzaWxlbnQhICEiLm1rZGlyY21kLiIgIi5uZXdkaXJuYW1lCiAgICBpZiB2OnNoZWxsX2Vycm9yID09IDAKICAgICAiIHJlZnJlc2ggbGlzdGluZworICAgIGxldCBsaW5lbnVtPSBsaW5lKCIuIikKKyAgICBub3JtISBIMAorICAgIGxldCBobGluZSAgPSBsaW5lKCIuIikKICAgICBjYWxsIHM6TmV0QnJvd3NlKHM6TmV0QnJvd3NlQ2hnRGlyKGV4cGFuZCgiJSIpLCcuLycpKQorICAgIGV4ZSAibm9ybSEgIi5obGluZS4iRzB6XDxDUj4iCisgICAgZXhlIGxpbmVudW0KICAgIGVsc2UKICAgICBlY2hvZXJyICIqKip3YXJuaW5nKioqIHVuYWJsZSB0byBtYWtlIGRpcmVjdG9yeTwiLm5ld2Rpcm5hbWUuIj4iCiAgICBlbmRpZgpAQCAtMTQ3Miw2ICsxNzE2LDQ2IEBACiBlbmRmdW4KIAogIiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyIgIE5ldEJvb2ttYXJrRGlyOgorIiAgICAwOiBib29rbWFyayB0aGUgY3VycmVudCBkaXJlY3RvcnkKKyIgICAgMTogY2hhbmdlIHRvIHRoZSBib29rbWFya2VkIGRpcmVjdG9yeQorZnVuISA8U0lEPk5ldEJvb2ttYXJrRGlyKGNoZyxjdXJkaXIpCisiICBjYWxsIERmdW5jKCJOZXRCb29rbWFya0RpcihjaGc9Ii5hOmNoZy4iIGN1cmRpcjwiLmE6Y3VyZGlyLiI+KSBjbnQ9Ii52OmNvdW50KQorCisgIGlmIGE6Y2hnID09IDAKKyAgICIgYm9va21hcmsgdGhlIGN1cnJlbnQgZGlyZWN0b3J5CisgICBsZXQgczpuZXRyd19ib29rbWFya2Rpcl97djpjb3VudH09IGE6Y3VyZGlyCisgICBpZiAhZXhpc3RzKCJzOmJvb2ttYXJrbWF4IikKKyAgICBsZXQgczpib29rbWFya21heD0gdjpjb3VudAorICAgZWxzZWlmIHY6Y291bnQgPiBzOmJvb2ttYXJrbWF4CisgICAgbGV0IHM6Ym9va21hcmttYXg9IHY6Y291bnQKKyAgIGVuZGlmCisKKyAgZWxzZWlmIGE6Y2hnID09IDEKKyAgICIgY2hhbmdlIHRvIHRoZSBib29rbWFya2VkIGRpcmVjdG9yeQorICAgaWYgZXhpc3RzKCJzOm5ldHJ3X2Jvb2ttYXJrZGlyX3t2OmNvdW50fSIpCisgICAgZXhlICJlICIuczpuZXRyd19ib29rbWFya2Rpcl97djpjb3VudH0KKyAgIGVsc2UKKyAgICBlY2hvbXNnICJTb3JyeSwgYm9va21hcmsjIi52OmNvdW50LiIgZG9lc24ndCBleGlzdCEiCisgICBlbmRpZgorCisgIGVsc2VpZiBleGlzdHMoInM6Ym9va21hcmttYXgiKQorICAgIiBsaXN0IGJvb2ttYXJrcworIiAgIGNhbGwgRGVjaG8oImxpc3QgYm9va21hcmtzIFswLCIuczpib29rbWFya21heC4iXSIpCisgICBsZXQgY250PSAwCisgICB3aGlsZSBjbnQgPD0gczpib29rbWFya21heAorICAgIGlmIGV4aXN0cygiczpuZXRyd19ib29rbWFya2Rpcl97Y250fSIpCisgICAgIGVjaG8gIk5ldHJ3IEJvb2ttYXJrIyIuY250LiI6ICIuczpuZXRyd19ib29rbWFya2Rpcl97Y250fQorIiAgICAgY2FsbCBEZWNobygiTmV0cncgQm9va21hcmsjIi5jbnQuIjogIi5zOm5ldHJ3X2Jvb2ttYXJrZGlyX3tjbnR9KQorICAgIGVuZGlmCisgICAgbGV0IGNudD0gY250ICsgMQorICAgZW5kd2hpbGUKKyAgZW5kaWYKKyIgIGNhbGwgRHJldCgiTmV0Qm9va21hcmtEaXIiKQorZW5kZnVuCisKKworIiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICIgIEJyb3dzaW5nIFN1cHBvcnQgRm9yIExvY2FsIERpcmVjdG9yaWVzIEFuZCBGaWxlczogICAge3t7MQogCiAiIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpAQCAtMTQ4NCwxMzEgKzE3NjgsMTU0IEBACiAgICByZXR1cm4KICAgZW5kaWYKIAotIiAgIiB1bmZvcnR1bmF0ZSBpbnRlcmFjdGlvbiAtLSB3aGVuIHB1dHRpbmcgRGZ1bmMvRHJldCBhYm92ZQotICAiIG9uZSBjYW4gbm8gbG9uZ2VyIGVudGVyIHRoZSBEQkcgYnVmZmVyLgotIiAgY2FsbCBEZnVuYygiTG9jYWxCcm93c2UoZGlybmFtZTwiLmE6ZGlybmFtZS4iPikiKQorICAiIHVuZm9ydHVuYXRlIGludGVyYWN0aW9uIC0tIHdoZW4gcHV0dGluZyBkZWJ1Z2dpbmcgY2FsbHMKKyAgIiBhYm92ZSBvbmUgY2FuIG5vIGxvbmdlciBlbnRlciB0aGUgREJHIGJ1ZmZlci4KKyIgIGNhbGwgRGZ1bmMoIkxvY2FsQnJvd3NlKGRpcm5hbWU8Ii5hOmRpcm5hbWUuIj4pIGJ1ZiMiLmJ1Zm5yKCIlIikuIiB3aW5ucj0iLndpbm5yKCkpCisiICBjYWxsIERlY2hvKCJ3aW5idWZucjE9Ii53aW5idWZucigxKS4iIHdpbmJ1Zm5yMj0iLndpbmJ1Zm5yKDIpLiIgd2luYnVmbnIzPSIud2luYnVmbnIoMykpCisiICBjYWxsIERyZWRpcigibHMhIikKIAotICBleGUgJ2NkICcuZXNjYXBlKHN1YnN0aXR1dGUoYTpkaXJuYW1lLCdcXCcsJy8nLCdnZScpLCcgJykKLSAgbGV0IGRpcm5hbWU9IHN1YnN0aXR1dGUoZ2V0Y3dkKCksJ1xcJywnLycsJ2dlJykuIi8iCi0iICBjYWxsIERlY2hvKCJkaXJuYW1lPCIuZGlybmFtZS4iPiIpCisgIGlmIHY6dmVyc2lvbiA8IDYwMworICAgZWNob2VyciAidmltIHZlcnNpb248Ii52OnZlcnNpb24uIj4gdG9vIG9sZCBmb3IgYnJvd3Npbmcgd2l0aCBuZXRydyIKKyIgICBjYWxsIERyZXQoIkxvY2FsQnJvd3NlIDogdmltIHZlcnNpb248Ii52OnZlcnNpb24uIj4gdG9vIG9sZCIpCisgICByZXR1cm4KKyAgZW5kaWYKKworICAiIHJlY29yZCBhbmQgY2hhbmdlIGN1cnJlbnQgZGlyZWN0b3J5CisgIGxldCBuZXRyd19vcmlnZGlyPSBzOk5ldEdldGN3ZCgxKQorICBleGUgJ2NkICcuZXNjYXBlKHN1YnN0aXR1dGUoYTpkaXJuYW1lLCdcXCcsJy8nLCdnZScpLHM6bmV0cndfY2RfZXNjYXBlKQorICBsZXQgZGlybmFtZT0gczpOZXRHZXRjd2QoMCkKKyIgIGNhbGwgRGVjaG8oImRpcm5hbWU8Ii5kaXJuYW1lLiI+IGJ1ZiMiLmJ1Zm5yKCIlIikuIiB3aW5ucj0iLndpbm5yKCkpCiAKICAgIiBtYWtlIHRoaXMgYnVmZmVyIG1vZGlmaWFibGUKICAgc2V0bG9jYWwgbWEKIAotICAiIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAiIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAiICBQZXJmb3JtIERpcmVjdG9yeSBMaXN0aW5nOgogIiAgY2FsbCBEZWNobygiUGVyZm9ybSBkaXJlY3RvcnkgbGlzdGluZy4uLiIpCiAgICIgc2V0IHVwIG5ldyBidWZmZXIgYW5kIG1hcAotICBsZXQgZGlybmFtZW5yID0gYnVmbnIoZGlybmFtZSkKLSAgaWYgZGlybmFtZW5yICE9IC0xICYmIGJ1Zm5hbWUoZGlybmFtZW5yKSAhPSBkaXJuYW1lCi0gICAiIHRyeSByZW1vdmluZyB0aGUgdHJhaWxpbmcgIi8iCi0gICBsZXQgZGlybmFtZW5yPSBidWZucihzdWJzdGl0dXRlKGRpcm5hbWUsJy8kJywnJywnZScpKQorICAiIHJlbW92ZSB0aGUgdHJhaWxpbmcgIi8iCisgIGxldCBkaXJuYW1lbnM9IHN1YnN0aXR1dGUoZGlybmFtZSwnLyQnLCcnLCdlJykKKyAgbGV0IGRpcm5hbWVucj0gYnVmbnIoZGlybmFtZW5zLickJykKKyIgIGNhbGwgRGVjaG8oImRpcm5hbWVucj0gYnVmbnIoIi5kaXJuYW1lbnMuIik9Ii5kaXJuYW1lbnIpCisKKyAgaWYgZGlybmFtZW5yICE9IDAgJiYgYnVmbmFtZShkaXJuYW1lbnIpICE9IGRpcm5hbWVucworICAgIiB0cnkga2VlcGluZyB0aGUgdHJhaWxpbmcgc2xhc2gKKyAgIGxldCBkaXJuYW1lbnIgPSBidWZucihkaXJuYW1lLickJykKKyIgICBjYWxsIERlY2hvKCJyZXRyeTogZGlybmFtZW5yPSBidWZucigiLmRpcm5hbWUuIik9Ii5kaXJuYW1lbnIpCiAgIGVuZGlmCiAiICBjYWxsIERlY2hvKCJidWZucihkaXJuYW1lPCIuZGlybmFtZS4iPik9Ii5kaXJuYW1lbnIpCi0iIGNhbGwgRHJlZGlyKCJmaWxlIikKIAotICBpZiBkaXJuYW1lbnIgIT0gLTEgJiYgYnVmZXhpc3RzKGRpcm5hbWUpCisgIGlmIGRpcm5hbWVuciAhPSAtMQogICAgIiBidWZmZXIgYWxyZWFkeSBleGlzdHMgKGhpZGRlbiksIHNvIHN3aXRjaCB0byBpdCEKLSIgY2FsbCBEcmVkaXIoImZpbGUiKQorIiAgIGNhbGwgRGVjaG8oImJ1ZmZlciBhbHJlYWR5IGV4aXN0czogZGlybmFtZW5yPSIuZGlybmFtZW5yLiIgZGlybmFtZTwiLmRpcm5hbWUuIj4gcHJlLWV4aXN0cyIpCisiICAgY2FsbCBEcmVkaXIoImxzISIpCiAgICBleGUgImIgIi5kaXJuYW1lbnIKLSIgY2FsbCBEcmVkaXIoImZpbGUiKQotICAgZXhlICdjZCAnLmVzY2FwZShzdWJzdGl0dXRlKGE6ZGlybmFtZSwnXFwnLCcvJywnZ2UnKSwnICcpCi0iIGNhbGwgRHJlZGlyKCJmaWxlIikKKyAgIGV4ZSAnc2lsZW50ISBjZCAnLmVzY2FwZShzdWJzdGl0dXRlKGE6ZGlybmFtZSwnXFwnLCcvJywnZ2UnKSxzOm5ldHJ3X2NkX2VzY2FwZSkKICIgICBjYWxsIERlY2hvKCJjaGFuZ2VkIGRpcmVjdG9yeSB0bzwiLmRpcm5hbWUuIj4iKQotIiBjYWxsIERyZWRpcigiZmlsZSIpCiAgICBpZiBhOmRpcm5hbWUgIT0gIi4iICYmIGxpbmUoIiQiKSA+PSA1Ci0iICAgIGNhbGwgRHJldCgiTG9jYWxCcm93c2UgOiBidWZmZXIgYWxyZWFkeSBleGlzdHMgd2l0aCBpbmZvIikKKyIgICAgY2FsbCBEcmV0KCJMb2NhbEJyb3dzZSA6IGJ1ZmZlciBhbHJlYWR5IGV4aXN0cyB3aXRoIGluZm8sICMiLmRpcm5hbWVucikKKyAgICBpZiBnOm5ldHJ3X2tlZXBkaXIgfCBleGUgJ2tlZXBqdW1wcyBjZCAnLm5ldHJ3X29yaWdkaXIgfCBlbmRpZgogICAgIHJldHVybgogICAgZW5kaWYKLSIgY2FsbCBEcmVkaXIoImZpbGUiKQogIiAgIGNhbGwgRGVjaG8oImJ1ZmZlciBhbHJlYWR5IGV4aXN0cywgYnV0IG5lZWRzIGxpc3RpbmcgKGJ1ZiMiLmRpcm5hbWVuci4iKSIpCisgICBzZXRsb2NhbCBtYQogICAga2VlcGp1bXBzICVkCi0iIGNhbGwgRHJlZGlyKCJmaWxlIikKLSAgIGlmIGV4cGFuZCgiJTpwIikgIT0gZXNjYXBlKGRpcm5hbWUsJyAnKQotICAgIGV4ZSAnc2lsZW50ISBmaWxlICcuZXNjYXBlKGRpcm5hbWUsJyAnKQotIiAgICBjYWxsIERlY2hvKCJyZW5hbWVkIGZpbGUgdG88Ii5lc2NhcGUoZGlybmFtZSwnICcpLiI+IikKKyAgIGlmIGV4cGFuZCgiJTpwIikgIT0gZGlybmFtZQorICAgIGV4ZSAnc2lsZW50ISBmaWxlICcuZXNjYXBlKGRpcm5hbWUsczpuZXRyd19jZF9lc2NhcGUpCisiICAgIGNhbGwgRGVjaG8oInJlbmFtZWQgZmlsZSB0bzwiLmVzY2FwZShkaXJuYW1lLCcgIycpLiI+IikKICAgIGVuZGlmCi0iIGNhbGwgRHJlZGlyKCJmaWxlIikKICAgZWxzZQotIiAgIGNhbGwgRHJlZGlyKCJscyEiKQotIiAgIGNhbGwgRGVjaG8oImdlbmVyYXRlIG5ldyBidWZmZXIgbmFtZWQ8Ii5lc2NhcGUoZGlybmFtZSwnICcpLiI+IikKKyIgICBjYWxsIERlY2hvKCJnZW5lcmF0ZSBuZXcgYnVmZmVyIG5hbWVkPCIuZXNjYXBlKGRpcm5hbWUsJyAjJykuIj4iKQogICAgc2lsZW50ISBlbmV3IQotICAgZXhlICdzaWxlbnQhIGZpbGUgJy5lc2NhcGUoZGlybmFtZSwnICcpCi0iICAgY2FsbCBEZWNobygicmVuYW1lZCBmaWxlIHRvPCIuZXNjYXBlKGRpcm5hbWUsJyAnKS4iPiIpCisgICBleGUgJ3NpbGVudCEgZmlsZSAnLnN1YnN0aXR1dGUoZXNjYXBlKGRpcm5hbWUsczpuZXRyd19jZF9lc2NhcGUpLCcvJCcsJycsJ2UnKQorIiAgIGNhbGwgRGVjaG8oInJlbmFtZWQgZmlsZSB0bzwiLmVzY2FwZShkaXJuYW1lLHM6bmV0cndfY2RfZXNjYXBlKS4iPiIpCiAgIGVuZGlmCiAgICIgc2V0IHN0YW5kYXJkIGJyb3dzZXIgb3B0aW9ucyBvbiBidWZmZXIKICAgc2V0bG9jYWwgdHM9MzIgYnQ9bm93cml0ZSBiaD1oaWRlIG5vYmwKIAogICAiIHNldCB1cCBhbGwgdGhlIG1hcHMKICIgIGNhbGwgRGVjaG8oIlNldHRpbmcgdXAgbG9jYWwgYnJvd3NlciBtYXBzIikKLSAgbm5vcmVtYXAgPGJ1ZmZlcj4gPHNpbGVudD4gPGNyPgk6ZXhlICJub3JtISAwIjxiYXI+Y2FsbCA8U0lEPkxvY2FsQnJvd3NlKDxTSUQ+TG9jYWxCcm93c2VDaGdEaXIoZ2V0Y3dkKCksPFNJRD5OZXRHZXREaXIoKSkpPGNyPgotICBubm9yZW1hcCA8YnVmZmVyPiA8c2lsZW50PiA8Yy1sPgk6ZXhlICJub3JtISAwIjxiYXI+Y2FsbCA8U0lEPkxvY2FsQnJvd3NlKDxTSUQ+TG9jYWxCcm93c2VDaGdEaXIoZ2V0Y3dkKCksJy4vJykpPGNyPgotICBubm9yZW1hcCA8YnVmZmVyPiA8c2lsZW50PiAtCQk6ZXhlICJub3JtISAwIjxiYXI+Y2FsbCA8U0lEPkxvY2FsQnJvd3NlKDxTSUQ+TG9jYWxCcm93c2VDaGdEaXIoZ2V0Y3dkKCksJy4uLycpKTxjcj4KLSAgbm5vcmVtYXAgPGJ1ZmZlcj4gPHNpbGVudD4gYQkJOmxldCBnOm5ldHJ3X2hpZGU9IWc6bmV0cndfaGlkZTxiYXI+ZXhlICJub3JtISAwIjxiYXI+Y2FsbCA8U0lEPkxvY2FsQnJvd3NlKDxTSUQ+TG9jYWxCcm93c2VDaGdEaXIoZ2V0Y3dkKCksJy4vJykpPGNyPgotICBubm9yZW1hcCA8YnVmZmVyPiA8c2lsZW50PiA8TGVhZGVyPmgJOmNhbGwgPFNJRD5OZXRIaWRlRWRpdCgxKTxjcj4KLSAgbm5vcmVtYXAgPGJ1ZmZlcj4gPHNpbGVudD4gPExlYWRlcj5tCTpjYWxsIDxTSUQ+TmV0TWFrZURpcigiIik8Y3I+CisgIGxldCBiOm5ldHJ3X2N1cmRpcj0gczpOZXRHZXRjd2QoMSkKKyAgbm5vcmVtYXAgPGJ1ZmZlcj4gPHNpbGVudD4gPGNyPgk6ZXhlICJub3JtISAwIjxiYXI+Y2FsbCA8U0lEPkxvY2FsQnJvd3NlKDxTSUQ+TG9jYWxCcm93c2VDaGdEaXIoYjpuZXRyd19jdXJkaXIsPFNJRD5OZXRHZXRXb3JkKCkpKTxjcj4KKyAgbm5vcmVtYXAgPGJ1ZmZlcj4gPHNpbGVudD4gPGMtbD4JOmV4ZSAibm9ybSEgMCI8YmFyPmNhbGwgPFNJRD5Mb2NhbEJyb3dzZSg8U0lEPkxvY2FsQnJvd3NlQ2hnRGlyKGI6bmV0cndfY3VyZGlyLCcuLycpKTxjcj4KKyAgbm5vcmVtYXAgPGJ1ZmZlcj4gPHNpbGVudD4gLQkJOmV4ZSAibm9ybSEgMCI8YmFyPmNhbGwgPFNJRD5Mb2NhbEJyb3dzZSg8U0lEPkxvY2FsQnJvd3NlQ2hnRGlyKGI6bmV0cndfY3VyZGlyLCcuLi8nKSk8Y3I+CisgIG5ub3JlbWFwIDxidWZmZXI+IDxzaWxlbnQ+IGEJCTpsZXQgZzpuZXRyd19oaWRlPSFnOm5ldHJ3X2hpZGU8YmFyPmV4ZSAibm9ybSEgMCI8YmFyPmNhbGwgPFNJRD5Mb2NhbEJyb3dzZSg8U0lEPkxvY2FsQnJvd3NlQ2hnRGlyKGI6bmV0cndfY3VyZGlyLCcuLycpKTxjcj4KKyAgbm5vcmVtYXAgPGJ1ZmZlcj4gPHNpbGVudD4gYgkJOjxjLXU+Y2FsbCA8U0lEPk5ldEJvb2ttYXJrRGlyKDAsYjpuZXRyd19jdXJkaXIpPGNyPgorICBubm9yZW1hcCA8YnVmZmVyPiA8c2lsZW50PiBCCQk6PGMtdT5jYWxsIDxTSUQ+TmV0Qm9va21hcmtEaXIoMSxiOm5ldHJ3X2N1cmRpcik8Y3I+CisgIG5ub3JlbWFwIDxidWZmZXI+IDxzaWxlbnQ+IGMJCTpleGUgImNkICIuYjpuZXRyd19jdXJkaXI8Y3I+CisgIG5ub3JlbWFwIDxidWZmZXI+IDxzaWxlbnQ+IGQJCTpjYWxsIDxTSUQ+TmV0TWFrZURpcigiIik8Y3I+CisgIG5ub3JlbWFwIDxidWZmZXI+IDxzaWxlbnQ+IDxjLWg+CTpjYWxsIDxTSUQ+TmV0SGlkZUVkaXQoMSk8Y3I+CiAgIG5ub3JlbWFwIDxidWZmZXI+IDxzaWxlbnQ+IGkJCTpjYWxsIDxTSUQ+TmV0TG9uZ0xpc3QoMSk8Y3I+Ci0gIG5ub3JlbWFwIDxidWZmZXI+IDxzaWxlbnQ+IG8JCTpleGUgZzpuZXRyd193aW5zaXplLiJ3aW5jbWQgcyI8YmFyPmV4ZSAibm9ybSEgMCI8YmFyPmNhbGwgPFNJRD5Mb2NhbEJyb3dzZSg8U0lEPkxvY2FsQnJvd3NlQ2hnRGlyKGdldGN3ZCgpLDxTSUQ+TmV0R2V0RGlyKCkpKTxjcj4KLSAgbm5vcmVtYXAgPGJ1ZmZlcj4gPHNpbGVudD4gcgkJOmxldCBnOm5ldHJ3X3NvcnRfZGlyZWN0aW9uPSAoZzpuZXRyd19zb3J0X2RpcmVjdGlvbiA9fiAnbicpPyAncicgOiAnbic8YmFyPmV4ZSAibm9ybSEgMCI8YmFyPmNhbGwgPFNJRD5Mb2NhbEJyb3dzZSg8U0lEPkxvY2FsQnJvd3NlQ2hnRGlyKGdldGN3ZCgpLDxTSUQ+TmV0R2V0RGlyKCkpKTxjcj4KLSAgbm5vcmVtYXAgPGJ1ZmZlcj4gPHNpbGVudD4gcwkJOmxldCBnOm5ldHJ3X3NvcnRfYnk9IChnOm5ldHJ3X3NvcnRfYnkgPX4gJ24nKT8gJ3RpbWUnIDogKGc6bmV0cndfc29ydF9ieSA9fiAndCcpPyAnc2l6ZScgOiAnbmFtZSc8YmFyPmV4ZSAibm9ybSEgMCI8YmFyPmNhbGwgPFNJRD5Mb2NhbEJyb3dzZSg8U0lEPkxvY2FsQnJvd3NlQ2hnRGlyKGdldGN3ZCgpLCcuLycpKTxjcj4KLSAgbm5vcmVtYXAgPGJ1ZmZlcj4gPHNpbGVudD4gdgkJOmV4ZSBnOm5ldHJ3X3dpbnNpemUuIndpbmNtZCB2IjxiYXI+ZXhlICJub3JtISAwIjxiYXI+Y2FsbCA8U0lEPkxvY2FsQnJvd3NlKDxTSUQ+TG9jYWxCcm93c2VDaGdEaXIoZ2V0Y3dkKCksPFNJRD5OZXRHZXREaXIoKSkpPGNyPgotICBubm9yZW1hcCA8YnVmZmVyPiA8c2lsZW50PiB4CQk6ZXhlICJub3JtISAwIjxiYXI+Y2FsbCA8U0lEPk5ldEJyb3dzZVgoPFNJRD5Mb2NhbEJyb3dzZUNoZ0RpcihnZXRjd2QoKSw8U0lEPk5ldEdldERpcigpKSwwKTxjcj4KLSAgbm5vcmVtYXAgPGJ1ZmZlcj4gPHNpbGVudD4gPDItbGVmdG1vdXNlPiA6ZXhlICJub3JtISAwIjxiYXI+Y2FsbCA8U0lEPkxvY2FsQnJvd3NlKDxTSUQ+TG9jYWxCcm93c2VDaGdEaXIoZ2V0Y3dkKCksPFNJRD5OZXRHZXREaXIoKSkpPGNyPgotICBleGUgJ25ub3JlbWFwIDxidWZmZXI+IDxzaWxlbnQ+IDxkZWw+CTpleGUgIm5vcm0hIDAiPGJhcj5jYWxsIDxTSUQ+TG9jYWxCcm93c2VSbSgiJy5nZXRjd2QoKS4nLyIpPGNyPicKLSAgZXhlICd2bm9yZW1hcCA8YnVmZmVyPiA8c2lsZW50PiA8ZGVsPgk6Y2FsbCA8U0lEPkxvY2FsQnJvd3NlUm0oIicuZ2V0Y3dkKCkuJy8iKTxjcj4nCi0gIGV4ZSAnbm5vcmVtYXAgPGJ1ZmZlcj4gPHNpbGVudD4gRAk6ZXhlICJub3JtISAwIjxiYXI+Y2FsbCA8U0lEPkxvY2FsQnJvd3NlUm0oIicuZ2V0Y3dkKCkuJy8iKTxjcj4nCi0gIGV4ZSAndm5vcmVtYXAgPGJ1ZmZlcj4gPHNpbGVudD4gRAk6Y2FsbCA8U0lEPkxvY2FsQnJvd3NlUm0oIicuZ2V0Y3dkKCkuJy8iKTxjcj4nCi0gIGV4ZSAnbm5vcmVtYXAgPGJ1ZmZlcj4gPHNpbGVudD4gUgk6ZXhlICJub3JtISAwIjxiYXI+Y2FsbCA8U0lEPkxvY2FsQnJvd3NlUmVuYW1lKCInLmdldGN3ZCgpLicvIik8Y3I+JwotICBleGUgJ3Zub3JlbWFwIDxidWZmZXI+IDxzaWxlbnQ+IFIJOmNhbGwgPFNJRD5Mb2NhbEJyb3dzZVJlbmFtZSgiJy5nZXRjd2QoKS4nLyIpPGNyPicKKyAgbm5vcmVtYXAgPGJ1ZmZlcj4gPHNpbGVudD4gbwkJOmV4ZSBnOm5ldHJ3X3dpbnNpemUuIndpbmNtZCBzIjxiYXI+ZXhlICJub3JtISAwIjxiYXI+Y2FsbCA8U0lEPkxvY2FsQnJvd3NlKDxTSUQ+TG9jYWxCcm93c2VDaGdEaXIoYjpuZXRyd19jdXJkaXIsPFNJRD5OZXRHZXRXb3JkKCkpKTxjcj4KKyAgbm5vcmVtYXAgPGJ1ZmZlcj4gPHNpbGVudD4gcQkJOjxjLXU+Y2FsbCA8U0lEPk5ldEJvb2ttYXJrRGlyKDIsYjpuZXRyd19jdXJkaXIpPGNyPgorICBubm9yZW1hcCA8YnVmZmVyPiA8c2lsZW50PiByCQk6bGV0IGc6bmV0cndfc29ydF9kaXJlY3Rpb249IChnOm5ldHJ3X3NvcnRfZGlyZWN0aW9uID1+ICduJyk/ICdyJyA6ICduJzxiYXI+ZXhlICJub3JtISAwIjxiYXI+Y2FsbCA8U0lEPkxvY2FsQnJvd3NlKDxTSUQ+TG9jYWxCcm93c2VDaGdEaXIoYjpuZXRyd19jdXJkaXIsJy4vJykpPGNyPgorICBubm9yZW1hcCA8YnVmZmVyPiA8c2lsZW50PiBzCQk6Y2FsbCA8U0lEPk5ldFNhdmVXb3JkUG9zbigpPGJhcj5sZXQgZzpuZXRyd19zb3J0X2J5PSAoZzpuZXRyd19zb3J0X2J5ID1+ICduJyk/ICd0aW1lJyA6IChnOm5ldHJ3X3NvcnRfYnkgPX4gJ3QnKT8gJ3NpemUnIDogJ25hbWUnPGJhcj5leGUgIm5vcm0hIDAiPGJhcj5jYWxsIDxTSUQ+TG9jYWxCcm93c2UoPFNJRD5Mb2NhbEJyb3dzZUNoZ0RpcihiOm5ldHJ3X2N1cmRpciwnLi8nKSk8YmFyPmNhbGwgPFNJRD5OZXRSZXN0b3JlV29yZFBvc24oKTxjcj4KKyAgbm5vcmVtYXAgPGJ1ZmZlcj4gPHNpbGVudD4gUwkJOmNhbGwgPFNJRD5OZXRTb3J0U2VxdWVuY2UoMSk8Y3I+CisgIG5ub3JlbWFwIDxidWZmZXI+IDxzaWxlbnQ+IHYJCTpleGUgZzpuZXRyd193aW5zaXplLiJ3aW5jbWQgdiI8YmFyPmV4ZSAibm9ybSEgMCI8YmFyPmNhbGwgPFNJRD5Mb2NhbEJyb3dzZSg8U0lEPkxvY2FsQnJvd3NlQ2hnRGlyKGI6bmV0cndfY3VyZGlyLDxTSUQ+TmV0R2V0V29yZCgpKSk8Y3I+CisgIG5ub3JlbWFwIDxidWZmZXI+IDxzaWxlbnQ+IHgJCTpleGUgIm5vcm0hIDAiPGJhcj5jYWxsIDxTSUQ+TmV0QnJvd3NlWCg8U0lEPkxvY2FsQnJvd3NlQ2hnRGlyKGI6bmV0cndfY3VyZGlyLDxTSUQ+TmV0R2V0V29yZCgpLDApLDApPGNyPgorICBubm9yZW1hcCA8YnVmZmVyPiA8c2lsZW50PiA8Mi1sZWZ0bW91c2U+IDpleGUgIm5vcm0hIDAiPGJhcj5jYWxsIDxTSUQ+TG9jYWxCcm93c2UoPFNJRD5Mb2NhbEJyb3dzZUNoZ0RpcihiOm5ldHJ3X2N1cmRpciw8U0lEPk5ldEdldFdvcmQoKSkpPGNyPgorICBleGUgJ25ub3JlbWFwIDxidWZmZXI+IDxzaWxlbnQ+IDxkZWw+CTpleGUgIm5vcm0hIDAiPGJhcj5jYWxsIDxTSUQ+TG9jYWxCcm93c2VSbSgiJy5iOm5ldHJ3X2N1cmRpci4nIik8Y3I+JworICBleGUgJ3Zub3JlbWFwIDxidWZmZXI+IDxzaWxlbnQ+IDxkZWw+CTpjYWxsIDxTSUQ+TG9jYWxCcm93c2VSbSgiJy5iOm5ldHJ3X2N1cmRpci4nIik8Y3I+JworICBleGUgJ25ub3JlbWFwIDxidWZmZXI+IDxzaWxlbnQ+IEQJOmV4ZSAibm9ybSEgMCI8YmFyPmNhbGwgPFNJRD5Mb2NhbEJyb3dzZVJtKCInLmI6bmV0cndfY3VyZGlyLiciKTxjcj4nCisgIGV4ZSAndm5vcmVtYXAgPGJ1ZmZlcj4gPHNpbGVudD4gRAk6Y2FsbCA8U0lEPkxvY2FsQnJvd3NlUm0oIicuYjpuZXRyd19jdXJkaXIuJyIpPGNyPicKKyAgZXhlICdubm9yZW1hcCA8YnVmZmVyPiA8c2lsZW50PiBSCTpleGUgIm5vcm0hIDAiPGJhcj5jYWxsIDxTSUQ+TG9jYWxCcm93c2VSZW5hbWUoIicuYjpuZXRyd19jdXJkaXIuJyIpPGNyPicKKyAgZXhlICd2bm9yZW1hcCA8YnVmZmVyPiA8c2lsZW50PiBSCTpjYWxsIDxTSUQ+TG9jYWxCcm93c2VSZW5hbWUoIicuYjpuZXRyd19jdXJkaXIuJyIpPGNyPicKICAgZXhlICdubm9yZW1hcCA8YnVmZmVyPiA8c2lsZW50PiA8TGVhZGVyPm0gOmNhbGwgPFNJRD5OZXRNYWtlRGlyKCIiKTxjcj4nCiAgIG5ub3JlbWFwIDxidWZmZXI+ID8JCQk6aGUgbmV0cnctZGlyPGNyPgogCiAgICIgU2V0IHVwIHRoZSBiYW5uZXIKICIgIGNhbGwgRGVjaG8oInNldCB1cCBiYW5uZXIiKQotICBrZWVwanVtcHMgcHV0ID0nXCIgPT09PT09PT09PT09PT09PT0nCisgIGtlZXBqdW1wcyBwdXQgPSdcIiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09JwogICBrZWVwanVtcHMgMWQKLSAga2VlcGp1bXBzIHB1dCA9J1wiIERpcmVjdG9yeSBMaXN0aW5nJworICBrZWVwanVtcHMgcHV0ID0nXCIgRGlyZWN0b3J5IExpc3RpbmcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5ldHJ3ICcuZzpsb2FkZWRfbmV0cncuJyknCiAgIGtlZXBqdW1wcyBwdXQgPSdcIiAgICcuZGlybmFtZQotICBsZXQgZzpuZXRyd19iYW5uZXJjbnQ9IDYKKyAgbGV0IHM6bmV0cndfYmFubmVyY250PSA3CisKKyAgbGV0IHNvcnRieT0gZzpuZXRyd19zb3J0X2J5CisgIGlmIGc6bmV0cndfc29ydF9kaXJlY3Rpb24gPX4gIl5yIgorICAgbGV0IHNvcnRieT0gc29ydGJ5LiIgcmV2ZXJzZWQiCisgIGVuZGlmCiAKICAgaWYgZzpuZXRyd19zb3J0X2J5ID1+ICJebiIKICIgICBjYWxsIERlY2hvKCJkaXJlY3RvcmllcyB3aWxsIGJlIHNvcnRlZCBieSBuYW1lIikKICAgICIgc29ydGVkIGJ5IG5hbWUKLSAgIGxldCBnOm5ldHJ3X2Jhbm5lcmNudD0gZzpuZXRyd19iYW5uZXJjbnQgKyAxCi0gICBrZWVwanVtcHMgcHV0ID0nXCIgICBTb3J0ZWQgYnkgICAgICAnLmc6bmV0cndfc29ydF9ieQorICAgbGV0IHM6bmV0cndfYmFubmVyY250PSBzOm5ldHJ3X2Jhbm5lcmNudCArIDEKKyAgIGtlZXBqdW1wcyBwdXQgPSdcIiAgIFNvcnRlZCBieSAgICAgICcuc29ydGJ5CiAgICBrZWVwanVtcHMgcHV0ID0nXCIgICBTb3J0IHNlcXVlbmNlOiAnLmc6bmV0cndfc29ydF9zZXF1ZW5jZQogICBlbHNlCiAiICAgY2FsbCBEZWNobygiZGlyZWN0b3JpZXMgd2lsbCBiZSBzb3J0ZWQgYnkgc2l6ZSBvciBkYXRlIikKICAgICIgc29ydGVkIGJ5IHNpemUgb3IgZGF0ZQotICAga2VlcGp1bXBzIHB1dCA9J1wiICAgU29ydGVkIGJ5ICcuZzpuZXRyd19zb3J0X2J5CisgICBrZWVwanVtcHMgcHV0ID0nXCIgICBTb3J0ZWQgYnkgJy5zb3J0YnkKICAgZW5kaWYKICAgaWYgZzpuZXRyd19saXN0X2hpZGUgIT0gIiIgJiYgZzpuZXRyd19oaWRlCiAgICBrZWVwanVtcHMgcHV0ID0nXCIgICBIaWRpbmc6ICcuZzpuZXRyd19saXN0X2hpZGUKLSAgIGxldCBnOm5ldHJ3X2Jhbm5lcmNudD0gZzpuZXRyd19iYW5uZXJjbnQgKyAxCisgICBsZXQgczpuZXRyd19iYW5uZXJjbnQ9IHM6bmV0cndfYmFubmVyY250ICsgMQogICBlbmRpZgotICBrZWVwanVtcHMgcHV0ID0nXCIgPT09PT09PT09PT09PT09PT0nCisgIGtlZXBqdW1wcyBwdXQgPSdcIiAgIFF1aWNrIEhlbHA6ICAgID86aGVscCAgLTpnbyB1cCBkaXIgIEQ6ZGVsZXRlICBSOnJlbmFtZSAgczpzb3J0LWJ5ICB4OmV4ZWMnCisgIGtlZXBqdW1wcyBwdXQgPSdcIiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09JwogCiAgICIgZ2VuZXJhdGUgdGhlIHJlcXVlc3RlZCBkaXJlY3RvcnkgbGlzdGluZwogICBjYWxsIExvY2FsQnJvd3NlTGlzdChkaXJuYW1lKQogCiAgICIgbWFuaXB1bGF0ZSB0aGUgZGlyZWN0b3J5IGxpc3RpbmcgKGhpZGUsIHNvcnQpCiAgIHNldGxvY2FsIGZ0PW5ldHJ3bGlzdAotICBpZiBsaW5lKCIkIikgPj0gZzpuZXRyd19iYW5uZXJjbnQKKyAgaWYgbGluZSgiJCIpID49IHM6bmV0cndfYmFubmVyY250CiAgICBpZiBnOm5ldHJ3X2hpZGUgJiYgZzpuZXRyd19saXN0X2hpZGUgIT0gIiIKICAgICBjYWxsIHM6TmV0cndMaXN0SGlkZSgpCiAgICBlbmRpZgogICAgaWYgZzpuZXRyd19zb3J0X2J5ID1+ICJebiIKICAgICBjYWxsIHM6U2V0U29ydCgpCi0gICAgZXhlICdrZWVwanVtcHMgc2lsZW50ICcuZzpuZXRyd19iYW5uZXJjbnQuJywkY2FsbCBzOk5ldFNvcnQoKScKLSAgICBleGUgJ2tlZXBqdW1wcyBzaWxlbnQgJy5nOm5ldHJ3X2Jhbm5lcmNudC4nLCRzL15cZFx7M31cLy8vZScKKyAgICBleGUgJ2tlZXBqdW1wcyBzaWxlbnQgJy5zOm5ldHJ3X2Jhbm5lcmNudC4nLCRjYWxsIHM6TmV0U29ydCgpJworICAgIGV4ZSAna2VlcGp1bXBzIHNpbGVudCAnLnM6bmV0cndfYmFubmVyY250LicsJHMvXlxkXHszfVwvLy9lJwogICAgZWxzZQotICAgIGV4ZSAna2VlcGp1bXBzIHNpbGVudCAnLmc6bmV0cndfYmFubmVyY250LicsJGNhbGwgczpOZXRTb3J0KCknCi0gICAgZXhlICdrZWVwanVtcHMgc2lsZW50ICcuZzpuZXRyd19iYW5uZXJjbnQuJywkcy9eXGRcey19XC8vL2UnCisgICAgZXhlICdrZWVwanVtcHMgc2lsZW50ICcuczpuZXRyd19iYW5uZXJjbnQuJywkY2FsbCBzOk5ldFNvcnQoKScKKyAgICBleGUgJ2tlZXBqdW1wcyBzaWxlbnQgJy5zOm5ldHJ3X2Jhbm5lcmNudC4nLCRzL15cZFx7LX1cLy8vZScKICAgIGVuZGlmCiAgIGVuZGlmCi0gIGV4ZSBnOm5ldHJ3X2Jhbm5lcmNudAorICBleGUgczpuZXRyd19iYW5uZXJjbnQKIAogICBzZXRsb2NhbCBub21hIG5vbW9kCisgIGlmIGc6bmV0cndfa2VlcGRpciB8IGV4ZSAna2VlcGp1bXBzIGNkICcubmV0cndfb3JpZ2RpciB8IGVuZGlmCiAKICIgIGNhbGwgRHJldCgiTG9jYWxCcm93c2UgOiBmaWxlPCIuZXhwYW5kKCIlOnAiKS4iPiIpCiBlbmRmdW4KQEAgLTE2MTgsOCArMTkyNSwxNSBAQAogZnVuISBMb2NhbEJyb3dzZUxpc3QoZGlybmFtZSkKICIgIGNhbGwgRGZ1bmMoIkxvY2FsQnJvd3NlTGlzdChkaXJuYW1lPCIuYTpkaXJuYW1lLiI+KSIpCiAKKyAgbGV0IGRpcm5hbWUgICAgPSBlc2NhcGUoYTpkaXJuYW1lLHM6bmV0cndfZ2xvYl9lc2NhcGUpCiAgIGxldCBkaXJuYW1lbGVuID0gc3RybGVuKGE6ZGlybmFtZSkKLSAgbGV0IGZpbGVsaXN0ICAgPSBnbG9iKGE6ZGlybmFtZS4iKiIpLiJcbiIuZ2xvYihhOmRpcm5hbWUuIi4qIikKKyAgbGV0IGZpbGVsaXN0ICAgPSBnbG9iKGRpcm5hbWUuIioiKQorICBpZiBmaWxlbGlzdCAhPSAiIgorICAgbGV0IGZpbGVsaXN0PSBmaWxlbGlzdC4iXG4iCisgIGVuZGlmCisgIGxldCBmaWxlbGlzdD0gZmlsZWxpc3QuZ2xvYihkaXJuYW1lLiIuKiIpCisiICBjYWxsIERlY2hvKCJkaXJuYW1lPCIuZGlybmFtZS4iPiIpCisiICBjYWxsIERlY2hvKCJkaXJuYW1lbGVuPCIuZGlybmFtZWxlbi4iPiIpCiAiICBjYWxsIERlY2hvKCJmaWxlbGlzdDwiLmZpbGVsaXN0LiI+IikKIAogICB3aGlsZSBmaWxlbGlzdCAhPSAiIgpAQCAtMTY0MCwyNCArMTk1NCwyOSBAQAogICAgIGxldCBmc3ogID0gc3RycGFydCgiICAgICAgICAgICAgICAgIiwxLDE1LXN0cmxlbihzeikpLnN6CiAgICAgbGV0IHBmaWxlPSBwZmlsZS4iXHQiLmZzei4iICIuc3RyZnRpbWUoZzpuZXRyd190aW1lZm10LGdldGZ0aW1lKGZpbGUpKQogICAgZW5kaWYKKwogICAgaWYgICAgIGc6bmV0cndfc29ydF9ieSA9fiAiXnQiCiAgICAgIiBzb3J0IGJ5IHRpbWUgKGhhbmRsZXMgdGltZSB1cCB0byAxIHF1aW50aWxsaW9uIHNlY29uZHMsIFVTKQogIiAgICBjYWxsIERlY2hvKCJnZXRmdGltZSgiLmZpbGUuIik9Ii5nZXRmdGltZShmaWxlKSkKICAgICBsZXQgdCAgPSBnZXRmdGltZShmaWxlKQogICAgIGxldCBmdCA9IHN0cnBhcnQoIjAwMDAwMDAwMDAwMDAwMDAwMCIsMSwxOC1zdHJsZW4odCkpLnQKICIgICAgY2FsbCBEZWNobygiZXhlIGtlZXBqdW1wcyBwdXQgPSciLmZ0LicvJy5maWxlLiInIikKLSAgICBleGUgImtlZXBqdW1wcyBwdXQgPSciLmZ0LicvJy5wZmlsZS4iJyIKKyAgICBsZXQgZnRwZmlsZT0gZnQuJy8nLnBmaWxlCisgICAga2VlcGp1bXBzIHB1dD1mdHBmaWxlCisKICAgIGVsc2VpZiBnOm5ldHJ3X3NvcnRfYnkgPX4gIl5zIgogICAgICIgc29ydCBieSBzaXplIChoYW5kbGVzIGZpbGUgc2l6ZXMgdXAgdG8gMSBxdWludGlsbGlvbiBieXRlcywgVVMpCiAiICAgIGNhbGwgRGVjaG8oImdldGZzaXplKCIuZmlsZS4iKT0iLmdldGZzaXplKGZpbGUpKQogICAgIGxldCBzeiAgID0gZ2V0ZnNpemUoZmlsZSkKICAgICBsZXQgZnN6ICA9IHN0cnBhcnQoIjAwMDAwMDAwMDAwMDAwMDAwMCIsMSwxOC1zdHJsZW4oc3opKS5zegogIiAgICBjYWxsIERlY2hvKCJleGUga2VlcGp1bXBzIHB1dCA9JyIuZnN6LicvJy5maWxlLiInIikKLSAgICBleGUgImtlZXBqdW1wcyBwdXQgPSciLmZzei4nLycucGZpbGUuIiciCisgICAgbGV0IGZzenBmaWxlPSBmc3ouJy8nLnBmaWxlCisgICAga2VlcGp1bXBzIHB1dCA9ZnN6cGZpbGUKKwogICAgZWxzZSAKICAgICAiIHNvcnQgYnkgbmFtZQotIiAgICBjYWxsIERlY2hvKCJleGUga2VlcGp1bXBzIHB1dCA9JyIuZmlsZS4iJyIpCi0gICAgZXhlICJrZWVwanVtcHMgcHV0ID0nIi5wZmlsZS4iJyIKKyIgICAgY2FsbCBEZWNobygiZXhlIGtlZXBqdW1wcyBwdXQgPSciLnBmaWxlLiInIikKKyAgICBrZWVwanVtcHMgcHV0PXBmaWxlCiAgICBlbmRpZgogICBlbmR3aGlsZQogCkBAIC0xNjY3LDEwICsxOTg2LDEwIEBACiAiIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogIiAgTG9jYWxCcm93c2VDaGdEaXI6IGNvbnN0cnVjdHMgYSBuZXcgZGlyZWN0b3J5IGJhc2VkIG9uIHRoZSBjdXJyZW50IHt7ezIKICIgICAgICAgICAgICAgICAgICAgICBkaXJlY3RvcnkgYW5kIGEgbmV3IGRpcmVjdG9yeSBuYW1lCi1mdW4hIDxTSUQ+TG9jYWxCcm93c2VDaGdEaXIoZGlybmFtZSxuZXdkaXIpCi0iICBjYWxsIERmdW5jKCJMb2NhbEJyb3dzZUNoZ0RpcihkaXJuYW1lPCIuYTpkaXJuYW1lLiI+IG5ld2RpcjwiLmE6bmV3ZGlyLiI+KSIpCitmdW4hIDxTSUQ+TG9jYWxCcm93c2VDaGdEaXIoZGlybmFtZSxuZXdkaXIsLi4uKQorIiAgY2FsbCBEZnVuYygiTG9jYWxCcm93c2VDaGdEaXIoZGlybmFtZTwiLmE6ZGlybmFtZS4iPiBuZXdkaXI8Ii5hOm5ld2Rpci4iPikgYTowPSIuYTowKQogCi0gIGxldCBkaXJuYW1lPSBzdWJzdGl0dXRlKGE6ZGlybmFtZSwnXFwnLCcvJywnZ2UnKQorICBsZXQgZGlybmFtZT0gc3Vic3RpdHV0ZShhOmRpcm5hbWUsJ1xcJywnJywnZ2UnKQogICBsZXQgbmV3ZGlyID0gYTpuZXdkaXIKIAogICBpZiBkaXJuYW1lICF+ICcvJCcKQEAgLTE2ODQsNyArMjAwMywxMCBAQAogICAgIiBoYW5kbGluZyBhIGZpbGUKICAgIGxldCBkaXJuYW1lPSBkaXJuYW1lLm5ld2RpcgogIiAgIGNhbGwgRGVjaG8oImhhbmRsaW5nIGEgZmlsZTogZGlybmFtZTwiLmRpcm5hbWUuIj4iKQotICAgZXhlICJlICIuZGlybmFtZQorICAgIiB0aGlzIGxldHMgTmV0QnJvd3NlWCBhdm9pZCB0aGUgZWRpdAorICAgaWYgYTowIDwgMQorICAgIGV4ZSAiZSAiLmVzY2FwZShkaXJuYW1lLHM6bmV0cndfY2RfZXNjYXBlKQorICAgZW5kaWYKIAogICBlbHNlaWYgbmV3ZGlyID09ICcuLycKICAgICIgcmVmcmVzaCB0aGUgZGlyZWN0b3J5IGxpc3QKQEAgLTE3MTQsMTQgKzIwMzYsMjggQEAKICIgIGNhbGwgRGVjaG8oImZpcnN0bGluZT0iLmE6Zmlyc3RsaW5lLiIgbGFzdGxpbmU9Ii5hOmxhc3RsaW5lKQogCiAgICIgcHJlcGFyYXRpb24gZm9yIHJlbW92aW5nIG11bHRpcGxlIGZpbGVzL2RpcmVjdG9yaWVzCi0gIGxldCBjdHI9IGE6Zmlyc3RsaW5lCisgIGxldCBjdHIgICAgICAgICAgID0gYTpmaXJzdGxpbmUKKyAgbGV0IHJldCAgICAgICAgICAgPSAwCisgIGxldCBuZXRyd19vcmlnZGlyID0gczpOZXRHZXRjd2QoMSkKKyAgZXhlICdjZCAnLmI6bmV0cndfY3VyZGlyCiAKICAgIiByZW1vdmUgbXVsdGlwbGUgZmlsZXMgYW5kIGRpcmVjdG9yaWVzCiAgIHdoaWxlIGN0ciA8PSBhOmxhc3RsaW5lCi0gICBleGUgY3RyCisgICBleGUgImtlZXBqdW1wcyAiLmN0cgorCisgICAiIHNhbml0eSBjaGVja3MKKyAgIGlmIGxpbmUoIi4iKSA8IHM6bmV0cndfYmFubmVyY250CisgICAgbGV0IGN0cj0gY3RyICsgMQorICAgIGNvbnRpbnVlCisgICBlbmRpZgorICAgbGV0IGN1cndvcmQ9IHM6TmV0R2V0V29yZCgpCisgICBpZiBjdXJ3b3JkID09ICIuLyIgfHwgY3Vyd29yZCA9PSAiLi4vIgorICAgIGxldCBjdHI9IGN0ciArIDEKKyAgICBjb250aW51ZQorICAgZW5kaWYKIAogICAgbm9ybSEgMAotICAgbGV0IHJtZmlsZT0gYTpwYXRoLnM6TmV0R2V0RGlyKCkKKyAgIGxldCBybWZpbGU9IGE6cGF0aC5jdXJ3b3JkCiAiICAgY2FsbCBEZWNobygicm1maWxlPCIucm1maWxlLiI+IikKIAogICAgaWYgcm1maWxlICF+ICdeIicgJiYgKHJtZmlsZSA9fiAnQCQnIHx8IHJtZmlsZSAhfiAnLyQnKQpAQCAtMTczMCw4ICsyMDY2LDggQEAKICAgICBsZXQgb2s9IGlucHV0KCJDb25maXJtIGRlbGV0aW9uIG9mIGZpbGU8Ii5ybWZpbGUuIj4gIiwieSIpCiAgICAgY2FsbCBpbnB1dHJlc3RvcmUoKQogICAgIGlmIG9rID09ICJ5IgotICAgICBjYWxsIGRlbGV0ZShybWZpbGUpCi0iICAgICBjYWxsIERlY2hvKCJlcnJjb2RlPSIudjpzaGVsbF9lcnJvcikKKyAgICAgbGV0IHJldD0gZGVsZXRlKHJtZmlsZSkKKyIgICAgIGNhbGwgRGVjaG8oImVycmNvZGU9Ii52OnNoZWxsX2Vycm9yLiIgcmV0PSIucmV0KQogICAgIGVuZGlmCiAgIAogICAgZWxzZQpAQCAtMTczOSwxMCArMjA3NSwxMSBAQAogICAgIGNhbGwgaW5wdXRzYXZlKCkKICAgICBsZXQgb2s9IGlucHV0KCJDb25maXJtIGRlbGV0aW9uIG9mIGRpcmVjdG9yeTwiLnJtZmlsZS4iPiAiLCJ5IikKICAgICBjYWxsIGlucHV0cmVzdG9yZSgpCi0gICAgbGV0IHJtZmlsZT0gZXNjYXBlKHN1YnN0aXR1dGUocm1maWxlLCcvJCcsJycsJ2UnKSwnICcpCisgICAgbGV0IHJtZmlsZT0gc3Vic3RpdHV0ZShybWZpbGUsJy8kJywnJywnZScpCiAKICAgICBpZiBvayA9PSAieSIKLSAgICAgY2FsbCBzeXN0ZW0oZzpuZXRyd19sb2NhbF9ybWRpci4iICIucm1maWxlKQorIiAgICAgY2FsbCBEZWNobygiMXN0IGF0dGVtcHQ6IHN5c3RlbSgiLmc6bmV0cndfbG9jYWxfcm1kaXIuJyAiJy5ybWZpbGUuJyIpJykKKyAgICAgY2FsbCBzeXN0ZW0oZzpuZXRyd19sb2NhbF9ybWRpci4nICInLnJtZmlsZS4nIicpCiAiICAgICBjYWxsIERlY2hvKCJ2OnNoZWxsX2Vycm9yPSIudjpzaGVsbF9lcnJvcikKIAogICAgICBpZiB2OnNoZWxsX2Vycm9yICE9IDAKQEAgLTE3NjksOSArMjEwNiwxMCBAQAogICBlbmR3aGlsZQogCiAgICIgcmVmcmVzaCB0aGUgZGlyZWN0b3J5Ci0gIGxldCBjdXJsaW5lPSBsaW5lKCIuIiktMQorICBsZXQgY3VybGluZT0gbGluZSgiLiIpCisgIGlmIGc6bmV0cndfa2VlcGRpciB8IGV4ZSAna2VlcGp1bXBzIGNkICcubmV0cndfb3JpZ2RpciB8IGVuZGlmCiAiICBjYWxsIERlY2hvKCJyZWZyZXNoIHRoZSBkaXJlY3RvcnkiKQotICBjYWxsIDxTSUQ+TG9jYWxCcm93c2UoPFNJRD5Mb2NhbEJyb3dzZUNoZ0RpcihleHBhbmQoIiUiKSwnLi8nKSkKKyAgY2FsbCA8U0lEPkxvY2FsQnJvd3NlKDxTSUQ+TG9jYWxCcm93c2VDaGdEaXIoYjpuZXRyd19jdXJkaXIsJy4vJykpCiAgIGV4ZSBjdXJsaW5lCiAKICIgIGNhbGwgRHJldCgiTG9jYWxCcm93c2VSbSIpCkBAIC0xNzg5LDE1ICsyMTI3LDI2IEBACiAgIHdoaWxlIGN0ciA8PSBhOmxhc3RsaW5lCiAgICBleGUgImtlZXBqdW1wcyAiLmN0cgogCisgICAiIHNhbml0eSBjaGVja3MKKyAgIGlmIGxpbmUoIi4iKSA8IHM6bmV0cndfYmFubmVyY250CisgICAgbGV0IGN0cj0gY3RyICsgMQorICAgIGNvbnRpbnVlCisgICBlbmRpZgorICAgbGV0IGN1cndvcmQ9IHM6TmV0R2V0V29yZCgpCisgICBpZiBjdXJ3b3JkID09ICIuLyIgfHwgY3Vyd29yZCA9PSAiLi4vIgorICAgIGxldCBjdHI9IGN0ciArIDEKKyAgICBjb250aW51ZQorICAgZW5kaWYKKwogICAgbm9ybSEgMAotICAgbGV0IG9sZG5hbWU9IGE6cGF0aC5zOk5ldEdldERpcigpCisgICBsZXQgb2xkbmFtZT0gYTpwYXRoLmN1cndvcmQKICIgICBjYWxsIERlY2hvKCJvbGRuYW1lPCIub2xkbmFtZS4iPiIpCiAKICAgIGNhbGwgaW5wdXRzYXZlKCkKLSAgIGxldCBuZXduYW1lPSBpbnB1dCgiTW92aW5nICIub2xkbmFtZS4iIHRvIDogIixvbGRuYW1lKQorICAgbGV0IG5ld25hbWU9IGlucHV0KCJNb3ZpbmcgIi5vbGRuYW1lLiIgdG8gOiAiLHN1YnN0aXR1dGUob2xkbmFtZSwnLyokJywnJywnZScpKQogICAgY2FsbCBpbnB1dHJlc3RvcmUoKQogCi0gICBsZXQgcmV0PSBzeXN0ZW0oZzpuZXRyd19sb2NhbF9yZW5hbWUuIiAiLm9sZG5hbWUuIiAiLm5ld25hbWUpCisgICBsZXQgcmV0PSBzeXN0ZW0oZzpuZXRyd19sb2NhbF9yZW5hbWUuJyAiJy5vbGRuYW1lLiciICInLm5ld25hbWUuJyInKQogIiAgIGNhbGwgRGVjaG8oImV4ZWN1dGluZyBzeXN0ZW0oIi5nOm5ldHJ3X2xvY2FsX3JlbmFtZS4iICIub2xkbmFtZS4iICIubmV3bmFtZSkKIAogICAgbGV0IGN0cj0gY3RyICsgMQpAQCAtMTgwNiwxMiArMjE1NSwyOSBAQAogICAiIHJlZnJlc2ggdGhlIGRpcmVjdG9yeQogICBsZXQgY3VybGluZT0gbGluZSgiLiIpCiAiICBjYWxsIERlY2hvKCJyZWZyZXNoIHRoZSBkaXJlY3RvcnkgbGlzdGluZyIpCi0gIGNhbGwgPFNJRD5Mb2NhbEJyb3dzZSg8U0lEPkxvY2FsQnJvd3NlQ2hnRGlyKGV4cGFuZCgiJSIpLCcuLycpKQorICBjYWxsIDxTSUQ+TG9jYWxCcm93c2UoPFNJRD5Mb2NhbEJyb3dzZUNoZ0RpcihiOm5ldHJ3X2N1cmRpciwnLi8nKSkKICAgZXhlICJrZWVwanVtcHMgIi5jdXJsaW5lCiAiICBjYWxsIERyZXQoIkxvY2FsQnJvd3NlUmVuYW1lIikKIGVuZGZ1bgogCiAiIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIiBOZXRHZXRjd2Q6IGdldCB0aGUgY3VycmVudCBkaXJlY3RvcnkuCisiICAgQ2hhbmdlIGJhY2tzbGFzaGVzIHRvIGZvcndhcmQgc2xhc2hlcywgaWYgYW55LgorIiAgIElmIGRvZXNjIGlzIHRydWUsIGVzY2FwZSBjZXJ0YWluIHRyb3VibGVzb21lIGNoYXJhY3RlcnMKK2Z1biEgPFNJRD5OZXRHZXRjd2QoZG9lc2MpCisiICBjYWxsIERmdW5jKCJOZXRHZXRjd2QoZG9lc2M9Ii5hOmRvZXNjLiIpIikKKyAgbGV0IGN1cmRpcj0gc3Vic3RpdHV0ZShnZXRjd2QoKSwnXFwnLCcvJywnZ2UnKQorICBpZiBjdXJkaXIgIX4gJy8kJworICAgbGV0IGN1cmRpcj0gY3VyZGlyLicvJworICBlbmRpZgorICBpZiBhOmRvZXNjCisgICBsZXQgY3VyZGlyPSBlc2NhcGUoY3VyZGlyLHM6bmV0cndfY2RfZXNjYXBlKQorICBlbmRpZgorIiAgY2FsbCBEcmV0KCJOZXRHZXRjd2QgPCIuY3VyZGlyLiI+IikKKyAgcmV0dXJuIGN1cmRpcgorZW5kZnVuCisKKyIgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAiIE5ldE1ldGhvZDogIGRldGVybWluZSBtZXRob2Qgb2YgdHJhbnNmZXIge3t7MQogIiAgbWV0aG9kID09IDE6IHJjcAogIgkgICAgIDI6IGZ0cCArIDwubmV0cmM+CkBAIC0xOTgyLDcgKzIzNDgsNyBAQAogICAgaWYgdXNlcmlkICE9ICIiCiAgICAgbGV0IGc6bmV0cndfdWlkPSB1c2VyaWQKICAgIGVuZGlmCi0gICBpZiBoYXMoIndpbjMyIikKKyAgIGlmIGhhcygid2luMzIiKSB8fCBoYXMoIndpbjk1IikgfHwgaGFzKCJ3aW42NCIpIHx8IGhhcygid2luMTYiKQogICAgICIgZG9uJ3QgbGV0IFBDcyB0cnkgPC5uZXRyYz4KICAgICBsZXQgYjpuZXRyd19tZXRob2QgPSAzCiAgICBlbmRpZgpAQCAtMjAwNSw3ICsyMzcxLDYgQEAKICIgIGNhbGwgRGVjaG8oImI6bmV0cndfZm5hbWUgIDwiLmI6bmV0cndfZm5hbWUuIj4iKQogIiAgY2FsbCBEcmV0KCJOZXRNZXRob2QiKQogZW5kZnVuCi0iIGVuZCBvZiBOZXRNZXRob2QKIAogIiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICIgTmV0VXNlclBhc3M6IHNldCB1c2VybmFtZSBhbmQgcGFzc3dvcmQgZm9yIHN1YnNlcXVlbnQgZnRwIHRyYW5zZmVyIHt7ezEKQEAgLTIwMzYsNyArMjQwMSw2IEBACiAgZW5kaWYKICIgIGNhbGwgRHJldCgiTmV0VXNlclBhc3MiKQogZW5kZnVuCi0iIGVuZCBOZXRVc2VyUGFzcwogCiAiIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogIiBOZXRPcHRpb25TYXZlOiBzYXZlIG9wdGlvbnMgYW5kIHNldCB0byAic3RhbmRhcmQiIGZvcm0ge3t7MQpAQCAtMjE2Myw3ICsyNTI3LDcgQEAKICIgICAgICAgICAgImZpbGVzIiB0aGF0IHNhdGlzZnkgZWFjaCBwYXR0ZXJuLCBwdXR0aW5nIHRoZSBwcmlvcml0eSAvIGluCiAiICAgICAgICAgIGZyb250LiAgQW4gIioiIHBhdHRlcm4gaGFuZGxlcyB0aGUgZGVmYXVsdCBwcmlvcml0eS4KIGZ1biEgPFNJRD5TZXRTb3J0KCkKLSIgIGNhbGwgRGZ1bmMoIlNldFNvcnQoKSBiYW5uZXJjbnQ9Ii5nOm5ldHJ3X2Jhbm5lcmNudCkKKyIgIGNhbGwgRGZ1bmMoIlNldFNvcnQoKSBiYW5uZXJjbnQ9Ii5zOm5ldHJ3X2Jhbm5lcmNudCkKICAgaWYgZzpuZXRyd19sb25nbGlzdAogICAgbGV0IHNlcWxpc3QgID0gc3Vic3RpdHV0ZShnOm5ldHJ3X3NvcnRfc2VxdWVuY2UsJ1wkJywnXFwlKFx0XFx8XCRcXCknLCdnZScpCiAgIGVsc2UKQEAgLTIxOTUsMTQgKzI1NTksMTQgQEAKICIgICBjYWxsIERlY2hvKCJwcmlvcml0eT0iLnByaW9yaXR5LiIgc3ByaW9yaXR5PCIuc3ByaW9yaXR5LiI+IHNlcTwiLnNlcS4iPiBzZXFsaXN0PCIuc2VxbGlzdC4iPiIpCiAKICAgIGlmIHNlcSA9PSAnKicKLSAgICBleGUgJ2tlZXBqdW1wcyBzaWxlbnQgJy5nOm5ldHJ3X2Jhbm5lcmNudC4nLCR2L15cZFx7M31cLy9zL14vJy5zcHJpb3JpdHkuJy8nCisgICAgZXhlICdrZWVwanVtcHMgc2lsZW50ICcuczpuZXRyd19iYW5uZXJjbnQuJywkdi9eXGRcezN9XC8vcy9eLycuc3ByaW9yaXR5LicvJwogICAgZWxzZQotICAgIGV4ZSAna2VlcGp1bXBzIHNpbGVudCAnLmc6bmV0cndfYmFubmVyY250LicsJGcvJy5lc2VxLicvcy9eLycuc3ByaW9yaXR5LicvJworICAgIGV4ZSAna2VlcGp1bXBzIHNpbGVudCAnLnM6bmV0cndfYmFubmVyY250LicsJGcvJy5lc2VxLicvcy9eLycuc3ByaW9yaXR5LicvJwogICAgZW5kaWYKICAgIGxldCBwcmlvcml0eSA9IHByaW9yaXR5ICsgMQogICBlbmR3aGlsZQogCi0gIGV4ZSAna2VlcGp1bXBzIHNpbGVudCAnLmc6bmV0cndfYmFubmVyY250LicsJHMvXlwoXGRcezN9XC9cKVwlKFxkXHszfVwvXClcKy9cMS9lJworICBleGUgJ2tlZXBqdW1wcyBzaWxlbnQgJy5zOm5ldHJ3X2Jhbm5lcmNudC4nLCRzL15cKFxkXHszfVwvXClcJShcZFx7M31cL1wpXCsvXDEvZScKIAogIiAgY2FsbCBEcmV0KCJTZXRTb3J0IikKIGVuZGZ1bgpkaWZmIC0tZ2l0IGEvcnVudGltZS9zY3JpcHRzLnZpbSBiL3J1bnRpbWUvc2NyaXB0cy52aW0KaW5kZXggMWI1MDZiMy4uMDdkMDRmZiAxMDA2NDQKLS0tIGEvcnVudGltZS9zY3JpcHRzLnZpbQorKysgYi9ydW50aW1lL3NjcmlwdHMudmltCkBAIC0xLDcgKzEsNyBAQAogIiBWaW0gc3VwcG9ydCBmaWxlIHRvIGRldGVjdCBmaWxlIHR5cGVzIGluIHNjcmlwdHMKICIKICIgTWFpbnRhaW5lcjoJQnJhbSBNb29sZW5hYXIgPEJyYW1AdmltLm9yZz4KLSIgTGFzdCBjaGFuZ2U6CTIwMDQgQXByIDE4CisiIExhc3QgY2hhbmdlOgkyMDA0IFNlcCAwMgogCiAiIFRoaXMgZmlsZSBpcyBjYWxsZWQgYnkgYW4gYXV0b2NvbW1hbmQgZm9yIGV2ZXJ5IGZpbGUgdGhhdCBoYXMganVzdCBiZWVuCiAiIGxvYWRlZCBpbnRvIGEgYnVmZmVyLiAgSXQgY2hlY2tzIGlmIHRoZSB0eXBlIG9mIGZpbGUgY2FuIGJlIHJlY29nbml6ZWQgYnkKQEAgLTUwLDggKzUwLDggQEAKICAgICBsZXQgczpuYW1lID0gc3Vic3RpdHV0ZShzOmxpbmUxLCAnXiMhXHMqXFMqWy9cXF1cKFxpXCtcKS4qJywgJ1wxJywgJycpCiAgIGVuZGlmCiAKLSAgIiBCb3VybmUtbGlrZSBzaGVsbCBzY3JpcHRzOiBzaCBrc2ggYmFzaCBiYXNoMgotICBpZiBzOm5hbWUgPX4gJ15cKGJhc2hcfGJhc2gyXHxrc2hcfHNoXClcPicKKyAgIiBCb3VybmUtbGlrZSBzaGVsbCBzY3JpcHRzOiBiYXNoIGJhc2gyIGtzaCBrc2g5MyBzaAorICBpZiBzOm5hbWUgPX4gJ15cKGJhc2hcZCpcfFx8a3NoXGQqXHxzaFwpXD4nCiAgICAgY2FsbCBTZXRGaWxlVHlwZVNIKHM6bGluZTEpCSIgZGVmaW5lZCBpbiBmaWxldHlwZS52aW0KIAogICAgICIgY3NoIHNjcmlwdHMKQEAgLTIxOSw3ICsyMTksNyBAQAogICAgIHNldCBmdD1yY3Nsb2cKIAogICAgICIgQ1ZTIGNvbW1pdAotICBlbHNlaWYgczpsaW5lMiA9fiAnXkNWUzonCisgIGVsc2VpZiBzOmxpbmUyID1+ICdeQ1ZTOicgfHwgZ2V0bGluZSgiJCIpID1+ICdeQ1ZTOiAnCiAgICAgc2V0IGZ0PWN2cwogCiAgICAgIiBTZW5kLXByCmRpZmYgLS1naXQgYS9ydW50aW1lL3N5bm1lbnUudmltIGIvcnVudGltZS9zeW5tZW51LnZpbQppbmRleCBmNmU1ODIzLi4wODlhNmZlIDEwMDY0NAotLS0gYS9ydW50aW1lL3N5bm1lbnUudmltCisrKyBiL3J1bnRpbWUvc3lubWVudS52aW0KQEAgLTMyLDUyICszMiw1MyBAQAogIiBUaGUgU3RhcnQgT2YgVGhlIFN5bnRheCBNZW51CiAKIGFuIDUwLjEwLjEwMCAmU3ludGF4LkFCLkFhcCA6Y2FsIFNldFN5bigiYWFwIik8Q1I+Ci1hbiA1MC4xMC4xMTAgJlN5bnRheC5BQi5BYmFxdXMgOmNhbCBTZXRTeW4oImFiYXF1cyIpPENSPgotYW4gNTAuMTAuMTIwICZTeW50YXguQUIuQUJDXCBtdXNpY1wgbm90YXRpb24gOmNhbCBTZXRTeW4oImFiYyIpPENSPgotYW4gNTAuMTAuMTMwICZTeW50YXguQUIuQUJFTCA6Y2FsIFNldFN5bigiYWJlbCIpPENSPgotYW4gNTAuMTAuMTQwICZTeW50YXguQUIuQWNlREJcIG1vZGVsIDpjYWwgU2V0U3luKCJhY2VkYiIpPENSPgotYW4gNTAuMTAuMTUwICZTeW50YXguQUIuQWRhIDpjYWwgU2V0U3luKCJhZGEiKTxDUj4KLWFuIDUwLjEwLjE2MCAmU3ludGF4LkFCLkFmTGV4IDpjYWwgU2V0U3luKCJhZmxleCIpPENSPgotYW4gNTAuMTAuMTcwICZTeW50YXguQUIuQWx0ZXJhXCBBSERMIDpjYWwgU2V0U3luKCJhaGRsIik8Q1I+Ci1hbiA1MC4xMC4xODAgJlN5bnRheC5BQi5BbWlnYVwgRE9TIDpjYWwgU2V0U3luKCJhbWlnYSIpPENSPgotYW4gNTAuMTAuMTkwICZTeW50YXguQUIuQU1QTCA6Y2FsIFNldFN5bigiYW1wbCIpPENSPgotYW4gNTAuMTAuMjAwICZTeW50YXguQUIuQW50XCBidWlsZFwgZmlsZSA6Y2FsIFNldFN5bigiYW50Iik8Q1I+Ci1hbiA1MC4xMC4yMTAgJlN5bnRheC5BQi5BTlRMUiA6Y2FsIFNldFN5bigiYW50bHIiKTxDUj4KLWFuIDUwLjEwLjIyMCAmU3ludGF4LkFCLkFwYWNoZVwgY29uZmlnIDpjYWwgU2V0U3luKCJhcGFjaGUiKTxDUj4KLWFuIDUwLjEwLjIzMCAmU3ludGF4LkFCLkFwYWNoZS1zdHlsZVwgY29uZmlnIDpjYWwgU2V0U3luKCJhcGFjaGVzdHlsZSIpPENSPgotYW4gNTAuMTAuMjQwICZTeW50YXguQUIuQXBwbGl4XCBFTEYgOmNhbCBTZXRTeW4oImVsZiIpPENSPgotYW4gNTAuMTAuMjUwICZTeW50YXguQUIuQXJjXCBNYWNyb1wgTGFuZ3VhZ2UgOmNhbCBTZXRTeW4oImFtbCIpPENSPgotYW4gNTAuMTAuMjYwICZTeW50YXguQUIuQXJjaFwgaW52ZW50b3J5IDpjYWwgU2V0U3luKCJhcmNoIik8Q1I+Ci1hbiA1MC4xMC4yNzAgJlN5bnRheC5BQi5BUlQgOmNhbCBTZXRTeW4oImFydCIpPENSPgotYW4gNTAuMTAuMjgwICZTeW50YXguQUIuQVNQXCB3aXRoXCBWQlNjcmlwdCA6Y2FsIFNldFN5bigiYXNwdmJzIik8Q1I+Ci1hbiA1MC4xMC4yOTAgJlN5bnRheC5BQi5BU1BcIHdpdGhcIFBlcmwgOmNhbCBTZXRTeW4oImFzcHBlcmwiKTxDUj4KLWFuIDUwLjEwLjMwMCAmU3ludGF4LkFCLkFzc2VtYmx5LjY4MHgwIDpjYWwgU2V0U3luKCJhc202OGsiKTxDUj4KLWFuIDUwLjEwLjMxMCAmU3ludGF4LkFCLkFzc2VtYmx5LkZsYXQgOmNhbCBTZXRTeW4oImZhc20iKTxDUj4KLWFuIDUwLjEwLjMyMCAmU3ludGF4LkFCLkFzc2VtYmx5LkdOVSA6Y2FsIFNldFN5bigiYXNtIik8Q1I+Ci1hbiA1MC4xMC4zMzAgJlN5bnRheC5BQi5Bc3NlbWJseS5HTlVcIEgtODMwMCA6Y2FsIFNldFN5bigiYXNtaDgzMDAiKTxDUj4KLWFuIDUwLjEwLjM0MCAmU3ludGF4LkFCLkFzc2VtYmx5LkludGVsXCBJQS02NCA6Y2FsIFNldFN5bigiaWE2NCIpPENSPgotYW4gNTAuMTAuMzUwICZTeW50YXguQUIuQXNzZW1ibHkuTWljcm9zb2Z0IDpjYWwgU2V0U3luKCJtYXNtIik8Q1I+Ci1hbiA1MC4xMC4zNjAgJlN5bnRheC5BQi5Bc3NlbWJseS5OZXR3aWRlIDpjYWwgU2V0U3luKCJuYXNtIik8Q1I+Ci1hbiA1MC4xMC4zNzAgJlN5bnRheC5BQi5Bc3NlbWJseS5QSUMgOmNhbCBTZXRTeW4oInBpYyIpPENSPgotYW4gNTAuMTAuMzgwICZTeW50YXguQUIuQXNzZW1ibHkuVHVyYm8gOmNhbCBTZXRTeW4oInRhc20iKTxDUj4KLWFuIDUwLjEwLjM5MCAmU3ludGF4LkFCLkFzc2VtYmx5LlZBWFwgTWFjcm9cIEFzc2VtYmx5IDpjYWwgU2V0U3luKCJ2bWFzbSIpPENSPgotYW4gNTAuMTAuNDAwICZTeW50YXguQUIuQXNzZW1ibHkuWi04MCA6Y2FsIFNldFN5bigiejhhIik8Q1I+Ci1hbiA1MC4xMC40MTAgJlN5bnRheC5BQi5Bc3NlbWJseS54YVwgNjUwMlwgY3Jvc3NcIGFzc2VtYmVyIDpjYWwgU2V0U3luKCJhNjUiKTxDUj4KLWFuIDUwLjEwLjQyMCAmU3ludGF4LkFCLkFTTlwuMSA6Y2FsIFNldFN5bigiYXNuIik8Q1I+Ci1hbiA1MC4xMC40MzAgJlN5bnRheC5BQi5BdGxhcyA6Y2FsIFNldFN5bigiYXRsYXMiKTxDUj4KLWFuIDUwLjEwLjQ0MCAmU3ludGF4LkFCLkF1dG9tYWtlIDpjYWwgU2V0U3luKCJhdXRvbWFrZSIpPENSPgotYW4gNTAuMTAuNDUwICZTeW50YXguQUIuQXZlbnVlIDpjYWwgU2V0U3luKCJhdmUiKTxDUj4KLWFuIDUwLjEwLjQ2MCAmU3ludGF4LkFCLkF3ayA6Y2FsIFNldFN5bigiYXdrIik8Q1I+Ci1hbiA1MC4xMC40NzAgJlN5bnRheC5BQi5BWWFjYyA6Y2FsIFNldFN5bigiYXlhY2MiKTxDUj4KLWFuIDUwLjEwLjQ5MCAmU3ludGF4LkFCLkIgOmNhbCBTZXRTeW4oImIiKTxDUj4KLWFuIDUwLjEwLjUwMCAmU3ludGF4LkFCLkJhYW4gOmNhbCBTZXRTeW4oImJhYW4iKTxDUj4KLWFuIDUwLjEwLjUxMCAmU3ludGF4LkFCLkJBU0lDIDpjYWwgU2V0U3luKCJiYXNpYyIpPENSPgotYW4gNTAuMTAuNTIwICZTeW50YXguQUIuQkNcIGNhbGN1bGF0b3IgOmNhbCBTZXRTeW4oImJjIik8Q1I+Ci1hbiA1MC4xMC41MzAgJlN5bnRheC5BQi5CREZcIGZvbnQgOmNhbCBTZXRTeW4oImJkZiIpPENSPgotYW4gNTAuMTAuNTQwICZTeW50YXguQUIuQmliVGVYIDpjYWwgU2V0U3luKCJiaWIiKTxDUj4KLWFuIDUwLjEwLjU1MCAmU3ludGF4LkFCLkJJTkQuQklORFwgY29uZmlnIDpjYWwgU2V0U3luKCJuYW1lZCIpPENSPgotYW4gNTAuMTAuNTYwICZTeW50YXguQUIuQklORC5CSU5EXCB6b25lIDpjYWwgU2V0U3luKCJiaW5kem9uZSIpPENSPgotYW4gNTAuMTAuNTcwICZTeW50YXguQUIuQmxhbmsgOmNhbCBTZXRTeW4oImJsYW5rIik8Q1I+CithbiA1MC4xMC4xMTAgJlN5bnRheC5BQi5BQkFQLzQgOmNhbCBTZXRTeW4oImFiYXAiKTxDUj4KK2FuIDUwLjEwLjEyMCAmU3ludGF4LkFCLkFiYXF1cyA6Y2FsIFNldFN5bigiYWJhcXVzIik8Q1I+CithbiA1MC4xMC4xMzAgJlN5bnRheC5BQi5BQkNcIG11c2ljXCBub3RhdGlvbiA6Y2FsIFNldFN5bigiYWJjIik8Q1I+CithbiA1MC4xMC4xNDAgJlN5bnRheC5BQi5BQkVMIDpjYWwgU2V0U3luKCJhYmVsIik8Q1I+CithbiA1MC4xMC4xNTAgJlN5bnRheC5BQi5BY2VEQlwgbW9kZWwgOmNhbCBTZXRTeW4oImFjZWRiIik8Q1I+CithbiA1MC4xMC4xNjAgJlN5bnRheC5BQi5BZGEgOmNhbCBTZXRTeW4oImFkYSIpPENSPgorYW4gNTAuMTAuMTcwICZTeW50YXguQUIuQWZMZXggOmNhbCBTZXRTeW4oImFmbGV4Iik8Q1I+CithbiA1MC4xMC4xODAgJlN5bnRheC5BQi5BbHRlcmFcIEFIREwgOmNhbCBTZXRTeW4oImFoZGwiKTxDUj4KK2FuIDUwLjEwLjE5MCAmU3ludGF4LkFCLkFtaWdhXCBET1MgOmNhbCBTZXRTeW4oImFtaWdhIik8Q1I+CithbiA1MC4xMC4yMDAgJlN5bnRheC5BQi5BTVBMIDpjYWwgU2V0U3luKCJhbXBsIik8Q1I+CithbiA1MC4xMC4yMTAgJlN5bnRheC5BQi5BbnRcIGJ1aWxkXCBmaWxlIDpjYWwgU2V0U3luKCJhbnQiKTxDUj4KK2FuIDUwLjEwLjIyMCAmU3ludGF4LkFCLkFOVExSIDpjYWwgU2V0U3luKCJhbnRsciIpPENSPgorYW4gNTAuMTAuMjMwICZTeW50YXguQUIuQXBhY2hlXCBjb25maWcgOmNhbCBTZXRTeW4oImFwYWNoZSIpPENSPgorYW4gNTAuMTAuMjQwICZTeW50YXguQUIuQXBhY2hlLXN0eWxlXCBjb25maWcgOmNhbCBTZXRTeW4oImFwYWNoZXN0eWxlIik8Q1I+CithbiA1MC4xMC4yNTAgJlN5bnRheC5BQi5BcHBsaXhcIEVMRiA6Y2FsIFNldFN5bigiZWxmIik8Q1I+CithbiA1MC4xMC4yNjAgJlN5bnRheC5BQi5BcmNcIE1hY3JvXCBMYW5ndWFnZSA6Y2FsIFNldFN5bigiYW1sIik8Q1I+CithbiA1MC4xMC4yNzAgJlN5bnRheC5BQi5BcmNoXCBpbnZlbnRvcnkgOmNhbCBTZXRTeW4oImFyY2giKTxDUj4KK2FuIDUwLjEwLjI4MCAmU3ludGF4LkFCLkFSVCA6Y2FsIFNldFN5bigiYXJ0Iik8Q1I+CithbiA1MC4xMC4yOTAgJlN5bnRheC5BQi5BU1BcIHdpdGhcIFZCU2NyaXB0IDpjYWwgU2V0U3luKCJhc3B2YnMiKTxDUj4KK2FuIDUwLjEwLjMwMCAmU3ludGF4LkFCLkFTUFwgd2l0aFwgUGVybCA6Y2FsIFNldFN5bigiYXNwcGVybCIpPENSPgorYW4gNTAuMTAuMzEwICZTeW50YXguQUIuQXNzZW1ibHkuNjgweDAgOmNhbCBTZXRTeW4oImFzbTY4ayIpPENSPgorYW4gNTAuMTAuMzIwICZTeW50YXguQUIuQXNzZW1ibHkuRmxhdCA6Y2FsIFNldFN5bigiZmFzbSIpPENSPgorYW4gNTAuMTAuMzMwICZTeW50YXguQUIuQXNzZW1ibHkuR05VIDpjYWwgU2V0U3luKCJhc20iKTxDUj4KK2FuIDUwLjEwLjM0MCAmU3ludGF4LkFCLkFzc2VtYmx5LkdOVVwgSC04MzAwIDpjYWwgU2V0U3luKCJhc21oODMwMCIpPENSPgorYW4gNTAuMTAuMzUwICZTeW50YXguQUIuQXNzZW1ibHkuSW50ZWxcIElBLTY0IDpjYWwgU2V0U3luKCJpYTY0Iik8Q1I+CithbiA1MC4xMC4zNjAgJlN5bnRheC5BQi5Bc3NlbWJseS5NaWNyb3NvZnQgOmNhbCBTZXRTeW4oIm1hc20iKTxDUj4KK2FuIDUwLjEwLjM3MCAmU3ludGF4LkFCLkFzc2VtYmx5Lk5ldHdpZGUgOmNhbCBTZXRTeW4oIm5hc20iKTxDUj4KK2FuIDUwLjEwLjM4MCAmU3ludGF4LkFCLkFzc2VtYmx5LlBJQyA6Y2FsIFNldFN5bigicGljIik8Q1I+CithbiA1MC4xMC4zOTAgJlN5bnRheC5BQi5Bc3NlbWJseS5UdXJibyA6Y2FsIFNldFN5bigidGFzbSIpPENSPgorYW4gNTAuMTAuNDAwICZTeW50YXguQUIuQXNzZW1ibHkuVkFYXCBNYWNyb1wgQXNzZW1ibHkgOmNhbCBTZXRTeW4oInZtYXNtIik8Q1I+CithbiA1MC4xMC40MTAgJlN5bnRheC5BQi5Bc3NlbWJseS5aLTgwIDpjYWwgU2V0U3luKCJ6OGEiKTxDUj4KK2FuIDUwLjEwLjQyMCAmU3ludGF4LkFCLkFzc2VtYmx5LnhhXCA2NTAyXCBjcm9zc1wgYXNzZW1iZXIgOmNhbCBTZXRTeW4oImE2NSIpPENSPgorYW4gNTAuMTAuNDMwICZTeW50YXguQUIuQVNOXC4xIDpjYWwgU2V0U3luKCJhc24iKTxDUj4KK2FuIDUwLjEwLjQ0MCAmU3ludGF4LkFCLkF0bGFzIDpjYWwgU2V0U3luKCJhdGxhcyIpPENSPgorYW4gNTAuMTAuNDUwICZTeW50YXguQUIuQXV0b21ha2UgOmNhbCBTZXRTeW4oImF1dG9tYWtlIik8Q1I+CithbiA1MC4xMC40NjAgJlN5bnRheC5BQi5BdmVudWUgOmNhbCBTZXRTeW4oImF2ZSIpPENSPgorYW4gNTAuMTAuNDcwICZTeW50YXguQUIuQXdrIDpjYWwgU2V0U3luKCJhd2siKTxDUj4KK2FuIDUwLjEwLjQ4MCAmU3ludGF4LkFCLkFZYWNjIDpjYWwgU2V0U3luKCJheWFjYyIpPENSPgorYW4gNTAuMTAuNTAwICZTeW50YXguQUIuQiA6Y2FsIFNldFN5bigiYiIpPENSPgorYW4gNTAuMTAuNTEwICZTeW50YXguQUIuQmFhbiA6Y2FsIFNldFN5bigiYmFhbiIpPENSPgorYW4gNTAuMTAuNTIwICZTeW50YXguQUIuQkFTSUMgOmNhbCBTZXRTeW4oImJhc2ljIik8Q1I+CithbiA1MC4xMC41MzAgJlN5bnRheC5BQi5CQ1wgY2FsY3VsYXRvciA6Y2FsIFNldFN5bigiYmMiKTxDUj4KK2FuIDUwLjEwLjU0MCAmU3ludGF4LkFCLkJERlwgZm9udCA6Y2FsIFNldFN5bigiYmRmIik8Q1I+CithbiA1MC4xMC41NTAgJlN5bnRheC5BQi5CaWJUZVggOmNhbCBTZXRTeW4oImJpYiIpPENSPgorYW4gNTAuMTAuNTYwICZTeW50YXguQUIuQklORC5CSU5EXCBjb25maWcgOmNhbCBTZXRTeW4oIm5hbWVkIik8Q1I+CithbiA1MC4xMC41NzAgJlN5bnRheC5BQi5CSU5ELkJJTkRcIHpvbmUgOmNhbCBTZXRTeW4oImJpbmR6b25lIik8Q1I+CithbiA1MC4xMC41ODAgJlN5bnRheC5BQi5CbGFuayA6Y2FsIFNldFN5bigiYmxhbmsiKTxDUj4KIGFuIDUwLjIwLjEwMCAmU3ludGF4LkMuQyA6Y2FsIFNldFN5bigiYyIpPENSPgogYW4gNTAuMjAuMTEwICZTeW50YXguQy5DKysgOmNhbCBTZXRTeW4oImNwcCIpPENSPgogYW4gNTAuMjAuMTIwICZTeW50YXguQy5DIyA6Y2FsIFNldFN5bigiY3MiKTxDUj4KQEAgLTEzMiwxMiArMTMzLDExIEBACiBhbiA1MC4zMC4zMzAgJlN5bnRheC5ERS5FbG1cIGZpbHRlclwgcnVsZXMgOmNhbCBTZXRTeW4oImVsbWZpbHQiKTxDUj4KIGFuIDUwLjMwLjM0MCAmU3ludGF4LkRFLkVtYmVkaXhcIENvbXBvbmVudFwgRGVzY3JpcHRpb24gOmNhbCBTZXRTeW4oImVjZCIpPENSPgogYW4gNTAuMzAuMzUwICZTeW50YXguREUuRVJpY3Nzb25cIExBTkd1YWdlIDpjYWwgU2V0U3luKCJlcmxhbmciKTxDUj4KLWFuIDUwLjMwLjM2MCAmU3ludGF4LkRFLkVTUUwtQyA6Y2FsIFNldFN5bigiZXNxbGMiKTxDUj4KLWFuIDUwLjMwLjM3MCAmU3ludGF4LkRFLkVzc2Jhc2VcIHNjcmlwdCA6Y2FsIFNldFN5bigiY3NjIik8Q1I+Ci1hbiA1MC4zMC4zODAgJlN5bnRheC5ERS5FdGVybVwgY29uZmlnIDpjYWwgU2V0U3luKCJldGVybSIpPENSPgotYW4gNTAuMzAuMzkwICZTeW50YXguREUuRXhpbVwgY29uZiA6Y2FsIFNldFN5bigiZXhpbSIpPENSPgotYW4gNTAuMzAuNDAwICZTeW50YXguREUuRXhwZWN0IDpjYWwgU2V0U3luKCJleHBlY3QiKTxDUj4KLWFuIDUwLjMwLjQxMCAmU3ludGF4LkRFLkV4cG9ydHMgOmNhbCBTZXRTeW4oImV4cG9ydHMiKTxDUj4KK2FuIDUwLjMwLjM2MCAmU3ludGF4LkRFLkVzc2Jhc2VcIHNjcmlwdCA6Y2FsIFNldFN5bigiY3NjIik8Q1I+CithbiA1MC4zMC4zNzAgJlN5bnRheC5ERS5FdGVybVwgY29uZmlnIDpjYWwgU2V0U3luKCJldGVybSIpPENSPgorYW4gNTAuMzAuMzgwICZTeW50YXguREUuRXhpbVwgY29uZiA6Y2FsIFNldFN5bigiZXhpbSIpPENSPgorYW4gNTAuMzAuMzkwICZTeW50YXguREUuRXhwZWN0IDpjYWwgU2V0U3luKCJleHBlY3QiKTxDUj4KK2FuIDUwLjMwLjQwMCAmU3ludGF4LkRFLkV4cG9ydHMgOmNhbCBTZXRTeW4oImV4cG9ydHMiKTxDUj4KIGFuIDUwLjQwLjEwMCAmU3ludGF4LkZHLkZldGNobWFpbCA6Y2FsIFNldFN5bigiZmV0Y2htYWlsIik8Q1I+CiBhbiA1MC40MC4xMTAgJlN5bnRheC5GRy5Gb2N1c1wgRXhlY3V0YWJsZSA6Y2FsIFNldFN5bigiZm9jZXhlYyIpPENSPgogYW4gNTAuNDAuMTIwICZTeW50YXguRkcuRm9jdXNcIE1hc3RlciA6Y2FsIFNldFN5bigibWFzdGVyIik8Q1I+CkBAIC0yNzksMjQgKzI3OSwyMyBAQAogYW4gNTAuODAuMjIwICZTeW50YXguUFEuUGluZVwgUkMgOmNhbCBTZXRTeW4oInBpbmUiKTxDUj4KIGFuIDUwLjgwLjIzMCAmU3ludGF4LlBRLlBpbmZvXCBSQyA6Y2FsIFNldFN5bigicGluZm8iKTxDUj4KIGFuIDUwLjgwLjI0MCAmU3ludGF4LlBRLlBML00gOmNhbCBTZXRTeW4oInBsbSIpPENSPgotYW4gNTAuODAuMjUwICZTeW50YXguUFEuUEwvU1FMIDpjYWwgU2V0U3luKCJwbHNxbCIpPENSPgotYW4gNTAuODAuMjYwICZTeW50YXguUFEuUExQIDpjYWwgU2V0U3luKCJwbHAiKTxDUj4KLWFuIDUwLjgwLjI3MCAmU3ludGF4LlBRLlBPXCAoR05VXCBnZXR0ZXh0KSA6Y2FsIFNldFN5bigicG8iKTxDUj4KLWFuIDUwLjgwLjI4MCAmU3ludGF4LlBRLlBvc3RmaXhcIG1haW5cIGNvbmZpZyA6Y2FsIFNldFN5bigicGZtYWluIik8Q1I+Ci1hbiA1MC44MC4yOTAgJlN5bnRheC5QUS5Qb3N0U2NyaXB0LlBvc3RTY3JpcHQgOmNhbCBTZXRTeW4oInBvc3RzY3IiKTxDUj4KLWFuIDUwLjgwLjMwMCAmU3ludGF4LlBRLlBvc3RTY3JpcHQuUG9zdFNjcmlwdFwgUHJpbnRlclwgRGVzY3JpcHRpb24gOmNhbCBTZXRTeW4oInBwZCIpPENSPgotYW4gNTAuODAuMzEwICZTeW50YXguUFEuUG92cmF5LlBvdnJheVwgc2NlbmVcIGRlc2NyIDpjYWwgU2V0U3luKCJwb3YiKTxDUj4KLWFuIDUwLjgwLjMyMCAmU3ludGF4LlBRLlBvdnJheS5Qb3ZyYXlcIGNvbmZpZ3VyYXRpb24gOmNhbCBTZXRTeW4oInBvdmluaSIpPENSPgotYW4gNTAuODAuMzMwICZTeW50YXguUFEuUHJpbnRjYXAgOmNhbCBTZXRTeW4oInBjYXAiKTxDUj4KLWFuIDUwLjgwLjM0MCAmU3ludGF4LlBRLlByb2NtYWlsIDpjYWwgU2V0U3luKCJwcm9jbWFpbCIpPENSPgotYW4gNTAuODAuMzUwICZTeW50YXguUFEuUHJvZHVjdFwgU3BlY1wgRmlsZSA6Y2FsIFNldFN5bigicHNmIik8Q1I+Ci1hbiA1MC44MC4zNjAgJlN5bnRheC5QUS5Qcm9ncmVzcyA6Y2FsIFNldFN5bigicHJvZ3Jlc3MiKTxDUj4KLWFuIDUwLjgwLjM3MCAmU3ludGF4LlBRLlByb2xvZyA6Y2FsIFNldFN5bigicHJvbG9nIik8Q1I+Ci1hbiA1MC44MC4zODAgJlN5bnRheC5QUS5QdXJpZnlcIGxvZyA6Y2FsIFNldFN5bigicHVyaWZ5bG9nIik8Q1I+Ci1hbiA1MC44MC4zOTAgJlN5bnRheC5QUS5QeXJleCA6Y2FsIFNldFN5bigicHlyZXgiKTxDUj4KLWFuIDUwLjgwLjQwMCAmU3ludGF4LlBRLlB5dGhvbiA6Y2FsIFNldFN5bigicHl0aG9uIik8Q1I+Ci1hbiA1MC44MC40MjAgJlN5bnRheC5QUS5RdWFrZSA6Y2FsIFNldFN5bigicXVha2UiKTxDUj4KLWFuIDUwLjgwLjQzMCAmU3ludGF4LlBRLlF1aWNrZml4XCB3aW5kb3cgOmNhbCBTZXRTeW4oInFmIik8Q1I+CithbiA1MC44MC4yNTAgJlN5bnRheC5QUS5QTFAgOmNhbCBTZXRTeW4oInBscCIpPENSPgorYW4gNTAuODAuMjYwICZTeW50YXguUFEuUE9cIChHTlVcIGdldHRleHQpIDpjYWwgU2V0U3luKCJwbyIpPENSPgorYW4gNTAuODAuMjcwICZTeW50YXguUFEuUG9zdGZpeFwgbWFpblwgY29uZmlnIDpjYWwgU2V0U3luKCJwZm1haW4iKTxDUj4KK2FuIDUwLjgwLjI4MCAmU3ludGF4LlBRLlBvc3RTY3JpcHQuUG9zdFNjcmlwdCA6Y2FsIFNldFN5bigicG9zdHNjciIpPENSPgorYW4gNTAuODAuMjkwICZTeW50YXguUFEuUG9zdFNjcmlwdC5Qb3N0U2NyaXB0XCBQcmludGVyXCBEZXNjcmlwdGlvbiA6Y2FsIFNldFN5bigicHBkIik8Q1I+CithbiA1MC44MC4zMDAgJlN5bnRheC5QUS5Qb3ZyYXkuUG92cmF5XCBzY2VuZVwgZGVzY3IgOmNhbCBTZXRTeW4oInBvdiIpPENSPgorYW4gNTAuODAuMzEwICZTeW50YXguUFEuUG92cmF5LlBvdnJheVwgY29uZmlndXJhdGlvbiA6Y2FsIFNldFN5bigicG92aW5pIik8Q1I+CithbiA1MC44MC4zMjAgJlN5bnRheC5QUS5QcmludGNhcCA6Y2FsIFNldFN5bigicGNhcCIpPENSPgorYW4gNTAuODAuMzMwICZTeW50YXguUFEuUHJvY21haWwgOmNhbCBTZXRTeW4oInByb2NtYWlsIik8Q1I+CithbiA1MC44MC4zNDAgJlN5bnRheC5QUS5Qcm9kdWN0XCBTcGVjXCBGaWxlIDpjYWwgU2V0U3luKCJwc2YiKTxDUj4KK2FuIDUwLjgwLjM1MCAmU3ludGF4LlBRLlByb2dyZXNzIDpjYWwgU2V0U3luKCJwcm9ncmVzcyIpPENSPgorYW4gNTAuODAuMzYwICZTeW50YXguUFEuUHJvbG9nIDpjYWwgU2V0U3luKCJwcm9sb2ciKTxDUj4KK2FuIDUwLjgwLjM3MCAmU3ludGF4LlBRLlB1cmlmeVwgbG9nIDpjYWwgU2V0U3luKCJwdXJpZnlsb2ciKTxDUj4KK2FuIDUwLjgwLjM4MCAmU3ludGF4LlBRLlB5cmV4IDpjYWwgU2V0U3luKCJweXJleCIpPENSPgorYW4gNTAuODAuMzkwICZTeW50YXguUFEuUHl0aG9uIDpjYWwgU2V0U3luKCJweXRob24iKTxDUj4KK2FuIDUwLjgwLjQxMCAmU3ludGF4LlBRLlF1YWtlIDpjYWwgU2V0U3luKCJxdWFrZSIpPENSPgorYW4gNTAuODAuNDIwICZTeW50YXguUFEuUXVpY2tmaXhcIHdpbmRvdyA6Y2FsIFNldFN5bigicWYiKTxDUj4KIGFuIDUwLjkwLjEwMCAmU3ludGF4LlItU2cuUiA6Y2FsIFNldFN5bigiciIpPENSPgogYW4gNTAuOTAuMTEwICZTeW50YXguUi1TZy5SYWRpYW5jZSA6Y2FsIFNldFN5bigicmFkaWFuY2UiKTxDUj4KIGFuIDUwLjkwLjEyMCAmU3ludGF4LlItU2cuUmF0cG9pc29uIDpjYWwgU2V0U3luKCJyYXRwb2lzb24iKTxDUj4KQEAgLTM2MywxNyArMzYyLDIwIEBACiBhbiA1MC4xMDAuMzgwICZTeW50YXguU2gtUy5TcGVlZHVwIDpjYWwgU2V0U3luKCJzcHVwIik8Q1I+CiBhbiA1MC4xMDAuMzkwICZTeW50YXguU2gtUy5TcGxpbnQgOmNhbCBTZXRTeW4oInNwbGludCIpPENSPgogYW4gNTAuMTAwLjQwMCAmU3ludGF4LlNoLVMuU3F1aWRcIGNvbmZpZyA6Y2FsIFNldFN5bigic3F1aWQiKTxDUj4KLWFuIDUwLjEwMC40MTAgJlN5bnRheC5TaC1TLlNRTC5NeVNRTCA6Y2FsIFNldFN5bigibXlzcWwiKTxDUj4KLWFuIDUwLjEwMC40MjAgJlN5bnRheC5TaC1TLlNRTC5TUUwgOmNhbCBTZXRTeW4oInNxbCIpPENSPgotYW4gNTAuMTAwLjQzMCAmU3ludGF4LlNoLVMuU1FMLlNRTFwgRm9ybXMgOmNhbCBTZXRTeW4oInNxbGZvcm1zIik8Q1I+Ci1hbiA1MC4xMDAuNDQwICZTeW50YXguU2gtUy5TUUwuU1FMSiA6Y2FsIFNldFN5bigic3FsaiIpPENSPgotYW4gNTAuMTAwLjQ1MCAmU3ludGF4LlNoLVMuU1FSIDpjYWwgU2V0U3luKCJzcXIiKTxDUj4KLWFuIDUwLjEwMC40NjAgJlN5bnRheC5TaC1TLlNzaC5zc2hfY29uZmlnIDpjYWwgU2V0U3luKCJzc2hjb25maWciKTxDUj4KLWFuIDUwLjEwMC40NzAgJlN5bnRheC5TaC1TLlNzaC5zc2hkX2NvbmZpZyA6Y2FsIFNldFN5bigic3NoZGNvbmZpZyIpPENSPgotYW4gNTAuMTAwLjQ4MCAmU3ludGF4LlNoLVMuU3RhbmRhcmRcIE1MIDpjYWwgU2V0U3luKCJzbWwiKTxDUj4KLWFuIDUwLjEwMC40OTAgJlN5bnRheC5TaC1TLlN0b3JlZFwgUHJvY2VkdXJlcyA6Y2FsIFNldFN5bigic3RwIik8Q1I+Ci1hbiA1MC4xMDAuNTAwICZTeW50YXguU2gtUy5TdHJhY2UgOmNhbCBTZXRTeW4oInN0cmFjZSIpPENSPgotYW4gNTAuMTAwLjUxMCAmU3ludGF4LlNoLVMuU3VidmVyc2lvblwgY29tbWl0IDpjYWwgU2V0U3luKCJzdm4iKTxDUj4KK2FuIDUwLjEwMC40MTAgJlN5bnRheC5TaC1TLlNRTC5FU1FMLUMgOmNhbCBTZXRTeW4oImVzcWxjIik8Q1I+CithbiA1MC4xMDAuNDIwICZTeW50YXguU2gtUy5TUUwuTXlTUUwgOmNhbCBTZXRTeW4oIm15c3FsIik8Q1I+CithbiA1MC4xMDAuNDMwICZTeW50YXguU2gtUy5TUUwuUEwvU1FMIDpjYWwgU2V0U3luKCJwbHNxbCIpPENSPgorYW4gNTAuMTAwLjQ0MCAmU3ludGF4LlNoLVMuU1FMLlNRTFwgKE9yYWNsZSkgOmNhbCBTZXRTeW4oInNxbCIpPENSPgorYW4gNTAuMTAwLjQ1MCAmU3ludGF4LlNoLVMuU1FMLlNRTFwgRm9ybXMgOmNhbCBTZXRTeW4oInNxbGZvcm1zIik8Q1I+CithbiA1MC4xMDAuNDYwICZTeW50YXguU2gtUy5TUUwuU1FMSiA6Y2FsIFNldFN5bigic3FsaiIpPENSPgorYW4gNTAuMTAwLjQ3MCAmU3ludGF4LlNoLVMuU1FMLlNRTC1JbmZvcm1peCA6Y2FsIFNldFN5bigic3FsaW5mb3JtaXgiKTxDUj4KK2FuIDUwLjEwMC40ODAgJlN5bnRheC5TaC1TLlNRUiA6Y2FsIFNldFN5bigic3FyIik8Q1I+CithbiA1MC4xMDAuNDkwICZTeW50YXguU2gtUy5Tc2guc3NoX2NvbmZpZyA6Y2FsIFNldFN5bigic3NoY29uZmlnIik8Q1I+CithbiA1MC4xMDAuNTAwICZTeW50YXguU2gtUy5Tc2guc3NoZF9jb25maWcgOmNhbCBTZXRTeW4oInNzaGRjb25maWciKTxDUj4KK2FuIDUwLjEwMC41MTAgJlN5bnRheC5TaC1TLlN0YW5kYXJkXCBNTCA6Y2FsIFNldFN5bigic21sIik8Q1I+CithbiA1MC4xMDAuNTIwICZTeW50YXguU2gtUy5TdG9yZWRcIFByb2NlZHVyZXMgOmNhbCBTZXRTeW4oInN0cCIpPENSPgorYW4gNTAuMTAwLjUzMCAmU3ludGF4LlNoLVMuU3RyYWNlIDpjYWwgU2V0U3luKCJzdHJhY2UiKTxDUj4KK2FuIDUwLjEwMC41NDAgJlN5bnRheC5TaC1TLlN1YnZlcnNpb25cIGNvbW1pdCA6Y2FsIFNldFN5bigic3ZuIik8Q1I+CiBhbiA1MC4xMTAuMTAwICZTeW50YXguVFVWLlRBRFMgOmNhbCBTZXRTeW4oInRhZHMiKTxDUj4KIGFuIDUwLjExMC4xMTAgJlN5bnRheC5UVVYuVGFncyA6Y2FsIFNldFN5bigidGFncyIpPENSPgogYW4gNTAuMTEwLjEyMCAmU3ludGF4LlRVVi5UQUsuVEFLXCBjb21wYXJlIDpjYWwgU2V0U3luKCJ0YWtjbXAiKTxDUj4KZGlmZiAtLWdpdCBhL3J1bnRpbWUvc3ludGF4L2FiYXAudmltIGIvcnVudGltZS9zeW50YXgvYWJhcC52aW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmIxMjI5ZgotLS0gL2Rldi9udWxsCisrKyBiL3J1bnRpbWUvc3ludGF4L2FiYXAudmltCkBAIC0wLDAgKzEsMTUyIEBACisiIFZpbSBBQkFQIHN5bnRheCBmaWxlCisiICAgIExhbmd1YWdlOglTQVAgLSBBQkFQLzQKKyIgICAgUmV2aXNpb246CTAuOAorIiAgTWFpbnRhaW5lcjoJTWFyaXVzIHZhbiBXeWsgPG1hcml1c0BlLmNvLnphPgorIiBMYXN0IENoYW5nZToJMjAwNCBBdWcgMzAKKworIiBGb3IgdmVyc2lvbiA1Lng6IENsZWFyIGFsbCBzeW50YXggaXRlbXMKKyIgRm9yIHZlcnNpb24gNi54OiBRdWl0IHdoZW4gYSBzeW50YXggZmlsZSB3YXMgYWxyZWFkeSBsb2FkZWQKK2lmIHZlcnNpb24gPCA2MDAKKyAgc3ludGF4IGNsZWFyCitlbHNlaWYgZXhpc3RzKCJiOmN1cnJlbnRfc3ludGF4IikKKyAgZmluaXNoCitlbmRpZgorCisiIEFsd2F5cyBpZ25vcmUgY2FzZQorc3luIGNhc2UgaWdub3JlCisKKyIgU3ltYm9sIE9wZXJhdG9ycworc3luIG1hdGNoICAgYWJhcFN5bWJvbE9wZXJhdG9yICAgICAgIlsrXC0vPTw+JF0iCitzeW4gbWF0Y2ggICBhYmFwU3ltYm9sT3BlcmF0b3IgICAgICAiXCoiCitzeW4gbWF0Y2ggICBhYmFwU3ltYm9sT3BlcmF0b3IgICAgICAiWzw+XT0iCitzeW4gbWF0Y2ggICBhYmFwU3ltYm9sT3BlcmF0b3IgICAgICAiPD4iCitzeW4gbWF0Y2ggICBhYmFwU3ltYm9sT3BlcmF0b3IgICAgICAiXCpcKiIKK3N5biBtYXRjaCAgIGFiYXBTeW1ib2xPcGVyYXRvciAgICAgICJbKCldIgorc3luIG1hdGNoICAgYWJhcFN5bWJvbE9wZXJhdG9yICAgICAgIls6LFwuXSIKKworIiBMaXRlcmFscworc3luIHJlZ2lvbiAgYWJhcFN0cmluZyBtYXRjaGdyb3VwPWFiYXBTdHJpbmcgc3RhcnQ9IiciIGVuZD0iJyIgY29udGFpbnM9YWJhcFN0cmluZ0VzY2FwZQorc3luIG1hdGNoICAgYWJhcFN0cmluZ0VzY2FwZSBjb250YWluZWQgIicnIgorCitzeW4gbWF0Y2ggICBhYmFwTnVtYmVyCSItXD1cPFxkXCtcPiIKK3N5biByZWdpb24gIGFiYXBIZXggICAgIG1hdGNoZ3JvdXA9YWJhcEhleCBzdGFydD0iWCciIGVuZD0iJyIKKworaWYgdmVyc2lvbiA+PSA2MDAKKyAgc2V0bG9jYWwgaXNrZXl3b3JkPS0sNDgtNTcsXyxBLVosYS16CitlbHNlCisgIHNldCBpc2tleXdvcmQ9LSw0OC01NyxfLEEtWixhLXoKK2VuZGlmCisKKyIgQUJBUCBzdGF0ZW1lbnRzCitzeW4ga2V5d29yZCBhYmFwU3RhdGVtZW50IEFERCBBREQtQ09SUkVTUE9ORElORyBBU1NJR04gQVQgQVVUSE9SSVRZLUNIRUNLCitzeW4ga2V5d29yZCBhYmFwU3RhdGVtZW50IEJBQ0sgQlJFQUstUE9JTlQKK3N5biBrZXl3b3JkIGFiYXBTdGF0ZW1lbnQgQ0FMTCBDQVNFIENIRUNLIENMRUFSIENMT1NFIENOVCBDT0xMRUNUIENPTU1JVCBDT01NVU5JQ0FUSU9OIENPTVBVVEUgQ09OQ0FURU5BVEUgQ09OREVOU0UgQ09OU1RBTlRTIENPTlRJTlVFIENPTlRST0xTIENPTlZFUlQgQ1JFQVRFIENVUlJFTkNZCitzeW4ga2V5d29yZCBhYmFwU3RhdGVtZW50IERBVEEgREVGSU5FIERFTEVURSBERVNDUklCRSBERVRBSUwgRElWSURFIERJVklERS1DT1JSRVNQT05ESU5HIERPCitzeW4ga2V5d29yZCBhYmFwU3RhdGVtZW50IEVESVRPUi1DQUxMIEVMU0UgRUxTRUlGIEVORC1PRi1ERUZJTklUSU9OIEVORC1PRi1QQUdFIEVORC1PRi1TRUxFQ1RJT04gRU5EQVQgRU5EQ0FTRSBFTkRETyBFTkRFWEVDIEVOREZPUk0gRU5ERlVOQ1RJT04gRU5ESUYgRU5ESUZFTkQgRU5ETE9PUCBFTkRNT0RVTEUgRU5ET04gRU5EUFJPVklERSBFTkRTRUxFQ1QgRU5EV0hJTEUgRVhFQyBFWFBPUlQgRVhQT1JUSU5HIEVYVFJBQ1QKK3N5biBrZXl3b3JkIGFiYXBTdGF0ZW1lbnQgRkVUQ0ggRklFTEQtR1JPVVBTIEZJRUxELVNZTUJPTFMgRklFTERTIEZPUk0gRk9STUFUIEZSRUUgRlVOQ1RJT04gRlVOQ1RJT04tUE9PTAorc3luIGtleXdvcmQgYWJhcFN0YXRlbWVudCBHRU5FUkFURSBHRVQKK3N5biBrZXl3b3JkIGFiYXBTdGF0ZW1lbnQgSElERQorc3luIGtleXdvcmQgYWJhcFN0YXRlbWVudCBJRiBJTVBPUlQgSU1QT1JUSU5HIElOREVYIElORk9UWVBFUyBJTklUSUFMSVpBVElPTiBJTlBVVCBJTlNFUlQKK3N5biBrZXl3b3JkIGFiYXBTdGF0ZW1lbnQgTEVBVkUgTElLRSBMT0FEIExPQ0FMIExPT1AKK3N5biBrZXl3b3JkIGFiYXBTdGF0ZW1lbnQgTUVTU0FHRSBNT0RJRlkgTU9EVUxFIE1PVkUgTU9WRS1DT1JSRVNQT05ESU5HIE1VTFRJUExZIE1VTFRJUExZLUNPUlJFU1BPTkRJTkcKK3N5biBrZXl3b3JkIGFiYXBTdGF0ZW1lbnQgTkVXLUxJTkUgTkVXLVBBR0UgTkVXLVNFQ1RJT04KK3N5biBrZXl3b3JkIGFiYXBTdGF0ZW1lbnQgT04gT1ZFUkxBWQorc3luIGtleXdvcmQgYWJhcFN0YXRlbWVudCBQQUNLIFBBUkFNRVRFUlMgUEVSRk9STSBQT1NJVElPTiBQUklOVC1DT05UUk9MIFBST0dSQU0gUFJPVklERSBQVVQKK3N5biBrZXl3b3JkIGFiYXBTdGF0ZW1lbnQgUkFJU0UgUkFOR0VTIFJFQUQgUkVDRUlWRSBSRUZSRVNIIFJFSkVDVCBSRVBMQUNFIFJFUE9SVCBSRVNFUlZFIFJFU1RPUkUgUk9MTEJBQ0sKK3N5biBrZXl3b3JkIGFiYXBTdGF0ZW1lbnQgU0NBTiBTQ1JPTEwgU0VBUkNIIFNFTEVDVCBTRUxFQ1QtT1BUSU9OUyBTRUxFQ1RJT04tU0NSRUVOIFNFVCBTSElGVCBTS0lQIFNPUlQgU1BMSVQgU1RBUlQtT0YtU0VMRUNUSU9OIFNUQVRJQ1MgU1RPUCBTVUJNSVQgU1VCVFJBQ1QgU1VCVFJBQ1QtQ09SUkVTUE9ORElORyBTVU0gU1VNTUFSWSBTVVBQUkVTUyBTWU5UQVgtQ0hFQ0sgU1lOVEFYLVRSQUNFCitzeW4ga2V5d29yZCBhYmFwU3RhdGVtZW50IFRBQkxFUyBUT1AtT0YtUEFHRSBUUkFOU0ZFUiBUUkFOU0xBVEUgVFlQRSBUWVBFLVBPT0wgVFlQRS1QT09MUyBUWVBFUworc3luIGtleXdvcmQgYWJhcFN0YXRlbWVudCBVTlBBQ0sgVVBEQVRFCitzeW4ga2V5d29yZCBhYmFwU3RhdGVtZW50IFdIRU4gV0hJTEUgV0lORE9XIFdSSVRFCisKKyIgTW9yZSBzdGF0ZW1ldHMKK3N5biBrZXl3b3JkIGFiYXBTdGF0ZW1lbnQgT0NDVVJTIFNUUlVDVFVSRSBPQkpFQ1QgUFJPUEVSVFkKK3N5biBrZXl3b3JkIGFiYXBTdGF0ZW1lbnQgQ0FTVElORyBBUFBFTkQgUkFJU0lORyBWQUxVRSBDT0xPUgorc3luIGtleXdvcmQgYWJhcFN0YXRlbWVudCBMSU5FLVNJWkUgTElORS1DT1VOVCBNRVNTQUdFLUlECitzeW4ga2V5d29yZCBhYmFwU3RhdGVtZW50IENIQU5HSU5HIEVYQ0VQVElPTlMgREVGQVVMVCBDSEVDS0JPWCBDT01NRU5UCitzeW4ga2V5d29yZCBhYmFwU3RhdGVtZW50IElEIE5VTUJFUiBGT1IgRElTUExBWS1NT0RFIFRJVExFIE9VVFBVVAorCisiIE1vcmUgbXVsdGktd29yZCBzdGF0ZW1lbnRzCitzeW4gbWF0Y2ggICBhYmFwU3RhdGVtZW50ICJcKFxXXHxeXClcKFdJVEhcV1wrXChIRUFERVJcV1wrTElORVx8RlJBTUVcfEtFWVwpXHxXSVRIXClcKFxXXHwkXCkibXM9cysxLG1lPWUtMQorc3luIG1hdGNoICAgYWJhcFN0YXRlbWVudCAiXChcV1x8XlwpTk9cV1wrU1RBTkRBUkRcV1wrUEFHRVxXXCtIRUFESU5HXChcV1x8JFwpIm1zPXMrMSxtZT1lLTEKK3N5biBtYXRjaCAgIGFiYXBTdGF0ZW1lbnQgIlwoXFdcfF5cKVwoRVhJVFxXXCtGUk9NXFdcK1NURVBcV1wrTE9PUFx8RVhJVFwpXChcV1x8JFwpIm1zPXMrMSxtZT1lLTEKK3N5biBtYXRjaCAgIGFiYXBTdGF0ZW1lbnQgIlwoXFdcfF5cKVwoQkVHSU5cV1wrT0ZcV1wrXChCTE9DS1x8TElORVwpXHxCRUdJTlxXXCtPRlwpXChcV1x8JFwpIm1zPXMrMSxtZT1lLTEKK3N5biBtYXRjaCAgIGFiYXBTdGF0ZW1lbnQgIlwoXFdcfF5cKVwoRU5EXFdcK09GXFdcK1woQkxPQ0tcfExJTkVcKVx8RU5EXFdcK09GXClcKFxXXHwkXCkibXM9cysxLG1lPWUtMQorc3luIG1hdGNoICAgYWJhcFN0YXRlbWVudCAiXChcV1x8XlwpSVNcV1wrSU5JVElBTFwoXFdcfCRcKSJtcz1zKzEsbWU9ZS0xCitzeW4gbWF0Y2ggICBhYmFwU3RhdGVtZW50ICJcKFxXXHxeXClOT1xXXCtJTlRFUlZBTFNcKFxXXHwkXCkibXM9cysxLG1lPWUtMQorc3luIG1hdGNoICAgYWJhcFN0YXRlbWVudCAiXChcV1x8XlwpU0VQQVJBVEVEXFdcK0JZXChcV1x8JFwpIm1zPXMrMSxtZT1lLTEKK3N5biBtYXRjaCAgIGFiYXBTdGF0ZW1lbnQgIlwoXFdcfF5cKVwoVVNJTkdcV1wrXChFRElUXFdcK01BU0tcKVx8VVNJTkdcKVwoXFdcfCRcKSJtcz1zKzEsbWU9ZS0xCitzeW4gbWF0Y2ggICBhYmFwU3RhdGVtZW50ICJcKFxXXHxeXClcKFdIRVJFXFdcK1woTElORVwpXClcKFxXXHwkXCkibXM9cysxLG1lPWUtMQorc3luIG1hdGNoICAgYWJhcFN0YXRlbWVudCAiXChcV1x8XlwpUkFESU9CVVRUT05cV1wrR1JPVVBcKFxXXHwkXCkibXM9cysxLG1lPWUtMQorc3luIG1hdGNoICAgYWJhcFN0YXRlbWVudCAiXChcV1x8XlwpUkVGXFdcK1RPXChcV1x8JFwpIm1zPXMrMSxtZT1lLTEKKworIiBTcGVjaWFsIEFCQVAgc3BlY2lmaWMgdGFibGVzOgorc3luIG1hdGNoICAgYWJhcFNwZWNpYWwgICAgICAgIlwoXFdcfF5cKVwoc3lcfFwocFx8cGFcKVxkXGRcZFxkXHx0XGRcZFxkLlx8aW5ubm5cKVwoXFdcfCRcKSJtcz1zKzEsbWU9ZS0xCitzeW4gbWF0Y2ggICBhYmFwU3BlY2lhbFRhYmxlcyAiXChzeVx8XChwXHxwYVwpXGRcZFxkXGRcfHRcZFxkXGQuXHxpbm5ublwpLSJtZT1lLTEgY29udGFpbmVkCitzeW4gbWF0Y2ggICBhYmFwU3BlY2lhbCAgICAgICAiXChcV1x8XlwpXHdcKy1cd1wrIm1zPXMrMSBjb250YWlucz1hYmFwU3BlY2lhbFRhYmxlcworCisiIFBvaW50ZXIKK3N5biBtYXRjaCAgIGFiYXBTcGVjaWFsICAiPFx3XCs+IgorCisiIEFiYXAgY29uc3RhbnRzOgorc3luIGtleXdvcmQgYWJhcFNwZWNpYWwgIFRSVUUgRkFMU0UgTlVMTCBTUEFDRQorCisiIEluY2x1ZGVzCitzeW4gcmVnaW9uIGFiYXBJbmNsdWRlICAgc3RhcnQ9ImluY2x1ZGUiIGVuZD0iLiIgY29udGFpbnM9YWJhcENvbW1lbnQKKworIiBUeXBlcworc3luIGtleXdvcmQgYWJhcFR5cGVzICAgIGMgbiBpIHAgZiBkIHQgeAorCisiIEF0cml0bWl0aWMgb3BlcmF0b3JzCitzeW4ga2V5d29yZCBhYmFwT3BlcmF0b3IgYWJzIHNpZ24gY2VpbCBmbG9vciB0cnVuYyBmcmFjIGFjb3MgYXNpbiBhdGFuIGNvcyBzaW4gdGFuCitzeW4ga2V5d29yZCBhYmFwT3BlcmF0b3IgY29zaCBzaW5oIHRhbmggZXhwIGxvZyBsb2cxMCBzcXJ0CisKKyIgU3RyaW5nIG9wZXJhdG9ycworc3luIGtleXdvcmQgYWJhcE9wZXJhdG9yIHN0cmxlbiB4c3RybGVuIGNoYXJsZW4gbnVtb2ZjaGFyIGRibWF4bGVuCisKKyIgVGFibGUgb3BlcmF0b3JzCitzeW4ga2V5d29yZCBhYmFwT3BlcmF0b3IgbGluZXMKKworIiBUYWJsZSBvcGVyYXRvcnMgKFNFTEVDVCBvcGVyYXRvcnMpCitzeW4ga2V5d29yZCBhYmFwT3BlcmF0b3IgSU5UTyBGUk9NIFdIRVJFIEdST1VQIEJZIEhBVklORyBPUkRFUiBCWSBTSU5HTEUKK3N5biBrZXl3b3JkIGFiYXBPcGVyYXRvciBBUFBFTkRJTkcgQ09SUkVTUE9ORElORyBGSUVMRFMgT0YgVEFCTEUKK3N5biBrZXl3b3JkIGFiYXBPcGVyYXRvciBMRUZUIFJJR0hUIE9VVEVSIElOTkVSIEpPSU4gQVMgQ0xJRU5UIFNQRUNJRklFRCBCWVBBU1NJTkcgQlVGRkVSIFVQIFRPIFJPV1MgQ09OTkVDVElORworc3luIGtleXdvcmQgYWJhcE9wZXJhdG9yIEVRIE5FIExUIExFIEdUIEdFIE5PVCBBTkQgT1IgWE9SIElOIExJS0UgQkVUV0VFTgorCisiIEFuIGVycm9yPyBOb3Qgc3RyaWN0bHkuLi4gYnV0IGNhbm5vdCB0aGluayBvZiByZWFzb24gdGhpcyBpcyBpbnRlbmRlZC4KK3N5biBtYXRjaCAgIGFiYXBFcnJvciAgICAiXC5cLiIKKworIiBDb21tZW50cworc3luIHJlZ2lvbiAgYWJhcENvbW1lbnQgIHN0YXJ0PSJeXCoiIGVuZD0iJCIgY29udGFpbnM9YWJhcFRvZG8KK3N5biBtYXRjaCAgIGFiYXBDb21tZW50ICAiXCIuKiIgY29udGFpbnM9YWJhcFRvZG8KK3N5biBrZXl3b3JkIGFiYXBUb2RvICAgICBjb250YWluZWQJVE9ETyBOT1RFCisKKyIgRGVmaW5lIHRoZSBkZWZhdWx0IGhpZ2hsaWdodGluZy4KKyIgRm9yIHZlcnNpb24gNS43IGFuZCBlYXJsaWVyOiBvbmx5IHdoZW4gbm90IGRvbmUgYWxyZWFkeQorIiBGb3IgdmVyc2lvbiA1LjggYW5kIGxhdGVyOiBvbmx5IHdoZW4gYW4gaXRlbSBkb2Vzbid0IGhhdmUgaGlnaGxpZ2h0aW5nIHlldAoraWYgdmVyc2lvbiA+PSA1MDggfHwgIWV4aXN0cygiZGlkX2FiYXBfc3ludGF4X2luaXRzIikKKyAgaWYgdmVyc2lvbiA8IDUwOAorICAgIGxldCBkaWRfYWJhcF9zeW50YXhfaW5pdHMgPSAxCisgICAgY29tbWFuZCAtbmFyZ3M9KyBIaUxpbmsgaGkgbGluayA8YXJncz4KKyAgZWxzZQorICAgIGNvbW1hbmQgLW5hcmdzPSsgSGlMaW5rIGhpIGRlZiBsaW5rIDxhcmdzPgorICBlbmRpZgorCisgIEhpTGluayBhYmFwRXJyb3IgICAgICAgICAgRXJyb3IKKyAgSGlMaW5rIGFiYXBDb21tZW50CSAgICAgIENvbW1lbnQKKyAgSGlMaW5rIGFiYXBJbmNsdWRlCSAgICAgIEluY2x1ZGUKKyAgSGlMaW5rIGFiYXBTcGVjaWFsICAgICAgICBTcGVjaWFsCisgIEhpTGluayBhYmFwU3BlY2lhbFRhYmxlcyAgUHJlUHJvYworICBIaUxpbmsgYWJhcFN5bWJvbE9wZXJhdG9yCWFiYXBPcGVyYXRvcgorICBIaUxpbmsgYWJhcE9wZXJhdG9yCSAgICAgIE9wZXJhdG9yCisgIEhpTGluayBhYmFwU3RhdGVtZW50CSAgICBTdGF0ZW1lbnQKKyAgSGlMaW5rIGFiYXBTdHJpbmcJICAgICAgICBTdHJpbmcKKyAgSGlMaW5rIGFiYXBGbG9hdAkgICAgICAgIEZsb2F0CisgIEhpTGluayBhYmFwTnVtYmVyCSAgICAgICAgTnVtYmVyCisgIEhpTGluayBhYmFwSGV4CSAgICAgICAgICBOdW1iZXIKKworICBkZWxjb21tYW5kIEhpTGluaworZW5kaWYKKworbGV0IGI6Y3VycmVudF9zeW50YXggPSAiYWJhcCIKKworIiB2aW06IHRzPTggc3c9MgpkaWZmIC0tZ2l0IGEvcnVudGltZS9zeW50YXgvYXNwdmJzLnZpbSBiL3J1bnRpbWUvc3ludGF4L2FzcHZicy52aW0KaW5kZXggNTAyNzkxYy4uNzRiZjJhMSAxMDA2NDQKLS0tIGEvcnVudGltZS9zeW50YXgvYXNwdmJzLnZpbQorKysgYi9ydW50aW1lL3N5bnRheC9hc3B2YnMudmltCkBAIC0xLDggKzEsOCBAQAogIiBWaW0gc3ludGF4IGZpbGUKICIgTGFuZ3VhZ2U6CU1pY3Jvc29mdCBWQlNjcmlwdCBXZWIgQ29udGVudCAoQVNQKQotIiBNYWludGFpbmVyOglEZXZpbiBXZWF2ZXIgPGt0b2hnQHRyaXRhcmdldC5jb20+Ci0iIFVSTDoJCWh0dHA6Ly90cml0YXJnZXQuY29tL3B1Yi92aW0vc3ludGF4L2FzcHZicy52aW0KLSIgTGFzdCBDaGFuZ2U6CTIwMDMgQXByIDI1CisiIE1haW50YWluZXI6CURldmluIFdlYXZlciA8a3RvaGdAdHJpdGFyZ2V0LmNvbT4gKG5vbi1mdW5jdGlvbmFsKQorIiBVUkw6CQlodHRwOi8vdHJpdGFyZ2V0LmNvbS9wdWIvdmltL3N5bnRheC9hc3B2YnMudmltIChicm9rZW4pCisiIExhc3QgQ2hhbmdlOgkyMDA0IEp1bCAyOQogIiBWZXJzaW9uOgkkUmV2aXNpb24kCiAiIFRoYW5rcyB0byBKYXktSmF5IDx2aW1AamF5LWpheS5uZXQ+IGZvciBhIHN5bnRheCBzeW5jIGhhY2ssIGh1bmdhcmlhbgogIiBub3RhdGlvbiwgYW5kIGV4dHJhIGhpZ2hsaWdodGluZy4KQEAgLTEwOCw3ICsxMDgsNyBAQAogc3luIGtleXdvcmQgQXNwVkJTTWV0aG9kcyBjb250YWluZWQgT3BlblRleHRGaWxlIFJhaXNlIFJlYWQgUmVhZEFsbCBSZWFkTGluZSBSZW1vdmUKIHN5biBrZXl3b3JkIEFzcFZCU01ldGhvZHMgY29udGFpbmVkIFJlbW92ZUFsbCBTa2lwIFNraXBMaW5lIFdyaXRlIFdyaXRlQmxhbmtMaW5lcwogc3luIGtleXdvcmQgQXNwVkJTTWV0aG9kcyBjb250YWluZWQgV3JpdGVMaW5lCi1zeW4gbWF0Y2ggQXNwVkJTTWV0aG9kcyBjb250YWluZWQgIlJlc3BvbnNlXC5cUyoiCitzeW4gbWF0Y2ggQXNwVkJTTWV0aG9kcyBjb250YWluZWQgIlJlc3BvbnNlXC5cdyoiCiAiIENvbG9yaXplIGJvb2xlYW4gY29uc3RhbnRzOgogc3luIGtleXdvcmQgQXNwVkJTTWV0aG9kcyBjb250YWluZWQgdHJ1ZSBmYWxzZQogCmRpZmYgLS1naXQgYS9ydW50aW1lL3N5bnRheC9jaC52aW0gYi9ydW50aW1lL3N5bnRheC9jaC52aW0KaW5kZXggMmU3ODdjOC4uYWRkNzM5NSAxMDA2NDQKLS0tIGEvcnVudGltZS9zeW50YXgvY2gudmltCisrKyBiL3J1bnRpbWUvc3ludGF4L2NoLnZpbQpAQCAtMiw3ICsyLDcgQEAKICIgTGFuZ3VhZ2U6ICAgICBDaAogIiBNYWludGFpbmVyOiAgIFNvZnRJbnRlZ3JhdGlvbiwgSW5jLiA8aW5mb0Bzb2Z0aW50ZWdyYXRpb24uY29tPgogIiBVUkw6CQlodHRwOi8vd3d3LnNvZnRpbnRlZ3JhdGlvbi5jb20vZG93bmxvYWQvdmltL3N5bnRheC9jaC52aW0KLSIgTGFzdCBjaGFuZ2U6CTIwMDQgTWF5IDE2CisiIExhc3QgY2hhbmdlOgkyMDA0IFNlcCAwMQogIgkJQ3JlYXRlZCBiYXNlZCBvbiBjcHAudmltCiAiCiAiIENoIGlzIGEgQy9DKysgaW50ZXJwcmV0ZXIgd2l0aCBtYW55IGhpZ2ggbGV2ZWwgZXh0ZW5zaW9ucwpAQCAtMjYsNyArMjYsNyBAQAogCiAiIENoIGV4dGVudGlvbnMKIAotc3luIGtleXdvcmQJY2hTdGF0ZW1lbnQJbmV3IGRlbGV0ZSB0aGlzCitzeW4ga2V5d29yZAljaFN0YXRlbWVudAluZXcgZGVsZXRlIHRoaXMgZm9yZWFjaAogc3luIGtleXdvcmQJY2hBY2Nlc3MJcHVibGljIHByaXZhdGUKIHN5biBrZXl3b3JkCWNoU3RvcmFnZUNsYXNzCV9fZGVjbHNwZWMoZ2xvYmFsKSBfX2RlY2xzcGVjKGxvY2FsKQogc3luIGtleXdvcmQJY2hTdHJ1Y3R1cmUJY2xhc3MKZGlmZiAtLWdpdCBhL3J1bnRpbWUvc3ludGF4L2xleC52aW0gYi9ydW50aW1lL3N5bnRheC9sZXgudmltCmluZGV4IDI1YzQyM2UuLjZjNjEyMWUgMTAwNjQ0Ci0tLSBhL3J1bnRpbWUvc3ludGF4L2xleC52aW0KKysrIGIvcnVudGltZS9zeW50YXgvbGV4LnZpbQpAQCAtMSw4ICsxLDggQEAKICIgVmltIHN5bnRheCBmaWxlCiAiIExhbmd1YWdlOglMZXgKICIgTWFpbnRhaW5lcjoJRHIuIENoYXJsZXMgRS4gQ2FtcGJlbGwsIEpyLiA8TmRyT2NoaXBTQFBjYW1wYmVsbEFmYW1pbHkuTWJpej4KLSIgTGFzdCBDaGFuZ2U6CVNlcCAwMiwgMjAwMwotIiBWZXJzaW9uOgk0CisiIExhc3QgQ2hhbmdlOglKdWwgMjgsIDIwMDQKKyIgVmVyc2lvbjoJNQogIiBVUkw6CWh0dHA6Ly93d3cuZXJvbHMuY29tL2FzdHJvbmF1dC92aW0vaW5kZXguaHRtbCN2aW1saW5rc19zeW50YXgKICIKICIgT3B0aW9uOgpAQCAtMzIsMTkgKzMyLDIyIEBACiAgIGVuZGlmCiBlbmRpZgogCisiIC0tLSA9PT09PT09PT0gLS0tCiAiIC0tLSBMZXggc3R1ZmYgLS0tCisiIC0tLSA9PT09PT09PT0gLS0tCiAKICJJJ2QgcHJlZmVyIHRvIHVzZSBsZXguKiAsIGJ1dCBpdCBkb2Vzbid0IGhhbmRsZSBmb3J3YXJkIGRlZmluaXRpb25zIHlldAogc3luIGNsdXN0ZXIgbGV4TGlzdEdyb3VwCQljb250YWlucz1sZXhBYmJydkJsb2NrLGxleEFiYnJ2LGxleEFiYnJ2LGxleEFiYnJ2UmVnRXhwLGxleEluY2x1ZGUsbGV4UGF0QmxvY2ssbGV4UGF0LGxleEJyYWNlLGxleFBhdFN0cmluZyxsZXhQYXRUYWcsbGV4UGF0VGFnLGxleFBhdENvbW1lbnQsbGV4UGF0Q29kZUxpbmUsbGV4TW9yZVBhdCxsZXhQYXRTZXAsbGV4U2xhc2hRdW90ZSxsZXhQYXRDb2RlLGNJblBhcmVuLGNVc2VyTGFiZWwsY09jdGFsWmVybyxjQ3BwU2tpcCxjRXJySW5CcmFja2V0LGNFcnJJblBhcmVuLGNPY3RhbEVycm9yLGNDcHBPdXQyLGNDb21tZW50U3RhcnRFcnJvcixjUGFyZW5FcnJvcgogc3luIGNsdXN0ZXIgbGV4TGlzdFBhdENvZGVHcm91cAljb250YWlucz1sZXhBYmJydkJsb2NrLGxleEFiYnJ2LGxleEFiYnJ2LGxleEFiYnJ2UmVnRXhwLGxleEluY2x1ZGUsbGV4UGF0QmxvY2ssbGV4UGF0LGxleEJyYWNlLGxleFBhdFRhZyxsZXhQYXRUYWcsbGV4UGF0Q29tbWVudCxsZXhQYXRDb2RlTGluZSxsZXhNb3JlUGF0LGxleFBhdFNlcCxsZXhTbGFzaFF1b3RlLGNJblBhcmVuLGNVc2VyTGFiZWwsY09jdGFsWmVybyxjQ3BwU2tpcCxjRXJySW5CcmFja2V0LGNFcnJJblBhcmVuLGNPY3RhbEVycm9yLGNDcHBPdXQyLGNDb21tZW50U3RhcnRFcnJvcixjUGFyZW5FcnJvcgogCiAiIEFiYnJldmlhdGlvbnMgU2VjdGlvbgotc3luIHJlZ2lvbiBsZXhBYmJydkJsb2NrCXN0YXJ0PSJeXChbYS16QS1aX11cK1x0XHwle1wpIiBlbmQ9Il4lJSQibWU9ZS0yCXNraXBubAluZXh0Z3JvdXA9bGV4UGF0QmxvY2sgY29udGFpbnM9bGV4QWJicnYsbGV4SW5jbHVkZSxsZXhBYmJydkNvbW1lbnQKK3N5biByZWdpb24gbGV4QWJicnZCbG9jawlzdGFydD0iXlwoXGhcK1xzXHwle1wpIiBlbmQ9Il5cemUlJSQiCXNraXBubAluZXh0Z3JvdXA9bGV4UGF0QmxvY2sgY29udGFpbnM9bGV4QWJicnYsbGV4SW5jbHVkZSxsZXhBYmJydkNvbW1lbnQsbGV4U3RhcnRTdGF0ZQogc3luIG1hdGNoICBsZXhBYmJydgkJIl5cSVxpKlxzIm1lPWUtMQkJCXNraXB3aGl0ZQljb250YWluZWQgbmV4dGdyb3VwPWxleEFiYnJ2UmVnRXhwCiBzeW4gbWF0Y2ggIGxleEFiYnJ2CQkiXiVbc3hdIgkJCQkJY29udGFpbmVkCiBzeW4gbWF0Y2ggIGxleEFiYnJ2UmVnRXhwCSJcc1xTLiokImxjPTEJCQkJY29udGFpbmVkIG5leHRncm91cD1sZXhBYmJydixsZXhJbmNsdWRlCiBzeW4gcmVnaW9uIGxleEluY2x1ZGUJbWF0Y2hncm91cD1sZXhTZXAJc3RhcnQ9Il4leyIgZW5kPSIlfSIJY29udGFpbmVkCWNvbnRhaW5zPUFMTEJVVCxAbGV4TGlzdEdyb3VwCiBzeW4gcmVnaW9uIGxleEFiYnJ2Q29tbWVudAlzdGFydD0iXlxzXCsvXCoiCWVuZD0iXCovIgkJCWNvbnRhaW5zPUBTcGVsbAorc3luIHJlZ2lvbiBsZXhTdGFydFN0YXRlCW1hdGNoZ3JvdXA9bGV4QWJicnYJc3RhcnQ9Il4lXGFcKyIJZW5kPSIkIgkJCWNvbnRhaW5lZAogCiAiJSUgOiBQYXR0ZXJucyB7QWN0aW9uc30KIHN5biByZWdpb24gbGV4UGF0QmxvY2sJbWF0Y2hncm91cD1Ub2RvCXN0YXJ0PSJeJSUkIiBtYXRjaGdyb3VwPVRvZG8gZW5kPSJeJSUkIglza2lwbmwgc2tpcHdoaXRlIGNvbnRhaW5zPWxleFBhdCxsZXhQYXRUYWcsbGV4UGF0Q29tbWVudApAQCAtODEsMTUgKzg0LDE2IEBACiBoaSBkZWYgbGluayBsZXhCcmFjZQlsZXhQYXQKIGhpIGRlZiBsaW5rIGxleEFiYnJ2Q29tbWVudAlsZXhQYXRDb21tZW50CiAKLWhpIGRlZiBsaW5rIGxleEFiYnJ2CVNwZWNpYWxDaGFyCiBoaSBkZWYgbGluayBsZXhBYmJydlJlZ0V4cAlNYWNybworaGkgZGVmIGxpbmsgbGV4QWJicnYJU3BlY2lhbENoYXIKIGhpIGRlZiBsaW5rIGxleENGdW5jdGlvbnMJRnVuY3Rpb24KIGhpIGRlZiBsaW5rIGxleE1vcmVQYXQJU3BlY2lhbENoYXIKLWhpIGRlZiBsaW5rIGxleFBhdAkJRnVuY3Rpb24KIGhpIGRlZiBsaW5rIGxleFBhdENvbW1lbnQJQ29tbWVudAoraGkgZGVmIGxpbmsgbGV4UGF0CQlGdW5jdGlvbgogaGkgZGVmIGxpbmsgbGV4UGF0U3RyaW5nCUZ1bmN0aW9uCiBoaSBkZWYgbGluayBsZXhQYXRUYWcJU3BlY2lhbAogaGkgZGVmIGxpbmsgbGV4U2VwCQlEZWxpbWl0ZXIKK2hpIGRlZiBsaW5rIGxleFN0YXJ0U3RhdGUJU3RhdGVtZW50CiAKIGxldCBiOmN1cnJlbnRfc3ludGF4ID0gImxleCIKIApkaWZmIC0tZ2l0IGEvcnVudGltZS9zeW50YXgvbGhhc2tlbGwudmltIGIvcnVudGltZS9zeW50YXgvbGhhc2tlbGwudmltCmluZGV4IDI1MGNjZmEuLmQ2ZjIxYWUgMTAwNjQ0Ci0tLSBhL3J1bnRpbWUvc3ludGF4L2xoYXNrZWxsLnZpbQorKysgYi9ydW50aW1lL3N5bnRheC9saGFza2VsbC52aW0KQEAgLTQsNyArNCw3IEBACiAiCQkJXGJlZ2lue2NvZGV9IFxlbmR7Y29kZX0gYmxvY2tzCiAiIE1haW50YWluZXI6CQlIYXNrZWxsIENhZmUgbWFpbGluZ2xpc3QgPGhhc2tlbGwtY2FmZUBoYXNrZWxsLm9yZz4KICIgT3JpZ2luYWwgQXV0aG9yOglBcnRodXIgdmFuIExlZXV3ZW4gPGFydGh1cnZsQGNzLnV1Lm5sPgotIiBMYXN0IENoYW5nZToJCTIwMDQgTWF5IDE2CisiIExhc3QgQ2hhbmdlOgkJMjAwNCBBdWcgMzEKICIgVmVyc2lvbjoJCTEuMDEKICIKICIgVGhhbmtzIHRvIElhbiBMeW5hZ2ggZm9yIHRob3VnaHRmdWwgY29tbWVudHMgb24gaW5pdGlhbCB2ZXJzaW9ucyBhbmQKQEAgLTgyLDkgKzgyLDEyIEBACiBpZiBiOmxoc19tYXJrdXAgPT0gInRleCIKICAgICBpZiB2ZXJzaW9uIDwgNjAwCiAJc291cmNlIDxzZmlsZT46cDpoL3RleC52aW0KKwlzZXQgaXNrKz1fCiAgICAgZWxzZQogCXJ1bnRpbWUhIHN5bnRheC90ZXgudmltCiAJdW5sZXQgYjpjdXJyZW50X3N5bnRheAorCSIgVGV4LnZpbSByZW1vdmVzICJfIiBmcm9tICdpc2tleXdvcmQnLCBidXQgd2UgbmVlZCBpdCBmb3IgSGFza2VsbC4KKwlzZXRsb2NhbCBpc2srPV8KICAgICBlbmRpZgogZW5kaWYKIApkaWZmIC0tZ2l0IGEvcnVudGltZS9zeW50YXgvbHVhLnZpbSBiL3J1bnRpbWUvc3ludGF4L2x1YS52aW0KaW5kZXggMGJjZGE2Mi4uNTU1MzcyOCAxMDA2NDQKLS0tIGEvcnVudGltZS9zeW50YXgvbHVhLnZpbQorKysgYi9ydW50aW1lL3N5bnRheC9sdWEudmltCkBAIC0xLDEyICsxLDEwIEBACiAiIFZpbSBzeW50YXggZmlsZQogIiBMYW5ndWFnZToJTHVhIDQuMCBhbmQgTHVhIDUuMAotIiBNYWludGFpbmVyOglNYXJjdXMgQXVyZWxpdXMgRmFyaWFzIDxtYXJjdXNjZkB2YW50LmNvbS5icj4KLSIgRmlyc3QgQXV0aG9yOglDYXJsb3MgQXVndXN0byBUZWl4ZWlyYSBNZW5kZXMgPGNtZW5kZXNAaW5mLnB1Yy1yaW8uYnI+Ci0iIExhc3QgQ2hhbmdlOgkyMDAzIE1heSAwNAorIiBNYWludGFpbmVyOglNYXJjdXMgQXVyZWxpdXMgRmFyaWFzIDxtYXJjdXMuY2YgJ2F0JyBib2wuY29tLmJyPgorIiBGaXJzdCBBdXRob3I6CUNhcmxvcyBBdWd1c3RvIFRlaXhlaXJhIE1lbmRlcyA8Y21lbmRlcyAnYXQnIGluZiBwdWMtcmlvIGJyPgorIiBMYXN0IENoYW5nZToJMjAwNCBBdWcgMjkKICIgT3B0aW9uczoJbHVhX3ZlcnNpb24gPSA0IG9yIDUgW2RlZmF1bHRdCiAiCi0iIFN0aWxsIGhhcyBzb21lIHN5bmNpbmcgcHJvYmxlbXMgKGxvbmcgW1tzdHJpbmdzXV0pLi4uCi0KICIgRm9yIHZlcnNpb24gNS54OiBDbGVhciBhbGwgc3ludGF4IGl0ZW1zCiAiIEZvciB2ZXJzaW9uIDYueDogUXVpdCB3aGVuIGEgc3ludGF4IGZpbGUgd2FzIGFscmVhZHkgbG9hZGVkCiBpZiB2ZXJzaW9uIDwgNjAwCkBAIC0zNyw3ICszNSw3IEBACiBzeW4gcmVnaW9uICBsdWFQYXJlbgkJdHJhbnNwYXJlbnQgc3RhcnQ9JygnIGVuZD0nKScgY29udGFpbnM9QUxMQlVULGx1YUVycm9yLGx1YVRvZG8sbHVhU3BlY2lhbCxsdWFDb25kLGx1YUNvbmRFbHNlaWYsbHVhQ29uZEVuZCxsdWFDb25kU3RhcnQsbHVhQmxvY2ssbHVhUmVwZWF0QmxvY2ssbHVhUmVwZWF0LGx1YVN0YXRlbWVudAogc3luIG1hdGNoICAgbHVhRXJyb3IJCSIpIgogc3luIG1hdGNoICAgbHVhRXJyb3IJCSJ9Igotc3luIG1hdGNoICAgbHVhRXJyb3IJCSJcPFwoZW5kXHxlbHNlXHxlbHNlaWZcfHRoZW5cfHVudGlsXHxpblwpXD4iCitzeW4gbWF0Y2ggICBsdWFFcnJvcgkJIlw8XCUoZW5kXHxlbHNlXHxlbHNlaWZcfHRoZW5cfHVudGlsXHxpblwpXD4iCiAKIAogIiBGdW5jdGlvbiBkZWNsYXJhdGlvbgpAQCAtODAsNyArNzgsNyBAQAogZW5kaWYKIAogIiBQcmUgcHJvY2Vzc29yIGRvZXNuJ3QgZXhpc3Qgc2luY2UgTHVhIDQuMAotIiBzeW4gbWF0Y2ggICBsdWFQcmVQcm9jCSAgIl5ccyokXChkZWJ1Z1x8bm9kZWJ1Z1x8aWZcfGlmbm90XHxlbmRcfGVsc2VcfGVuZGlucHV0XClcPiIKKyIgc3luIG1hdGNoICAgbHVhUHJlUHJvYwkgICJeXHMqJFwlKGRlYnVnXHxub2RlYnVnXHxpZlx8aWZub3RcfGVuZFx8ZWxzZVx8ZW5kaW5wdXRcKVw+IgogCiAiIFN0cmluZ3MKIHN5biBtYXRjaCAgIGx1YVNwZWNpYWwJCWNvbnRhaW5lZCAiXFxbXFxhYmZucnR2XCdcIltcXV1cfFxcXGRceywzfSIKQEAgLTkyLDkgKzkwLDkgQEAKICIgaW50ZWdlciBudW1iZXIKIHN5biBtYXRjaCBsdWFOdW1iZXIJCSJcPFswLTldXCtcPiIKICIgZmxvYXRpbmcgcG9pbnQgbnVtYmVyLCB3aXRoIGRvdCwgb3B0aW9uYWwgZXhwb25lbnQKLXN5biBtYXRjaCBsdWFGbG9hdAkJIlw8WzAtOV1cK1wuWzAtOV0qXChlWy0rXVw9WzAtOV1cK1wpXD1cPiIKK3N5biBtYXRjaCBsdWFGbG9hdAkJIlw8WzAtOV1cK1wuWzAtOV0qXCUoZVstK11cPVswLTldXCtcKVw9XD4iCiAiIGZsb2F0aW5nIHBvaW50IG51bWJlciwgc3RhcnRpbmcgd2l0aCBhIGRvdCwgb3B0aW9uYWwgZXhwb25lbnQKLXN5biBtYXRjaCBsdWFGbG9hdAkJIlwuWzAtOV1cK1woZVstK11cPVswLTldXCtcKVw9XD4iCitzeW4gbWF0Y2ggbHVhRmxvYXQJCSJcLlswLTldXCtcJShlWy0rXVw9WzAtOV1cK1wpXD1cPiIKICIgZmxvYXRpbmcgcG9pbnQgbnVtYmVyLCB3aXRob3V0IGRvdCwgd2l0aCBleHBvbmVudAogc3luIG1hdGNoIGx1YUZsb2F0CQkiXDxbMC05XVwrZVstK11cPVswLTldXCtcPiIKIApAQCAtMTI5LDcgKzEyNyw3IEBACiAgIHN5biBrZXl3b3JkIGx1YUZ1bmMJbG9hZGxpYiBsb2Fkc3RyaW5nIHBhaXJzIHBjYWxsIHJhd2VxdWFsCiAgIHN5biBrZXl3b3JkIGx1YUZ1bmMJcmVxdWlyZSBzZXRmZW52IHNldG1ldGF0YWJsZSB1bnBhY2sgeHBjYWxsCiAgIHN5biBrZXl3b3JkIGx1YUZ1bmMJTFVBX1BBVEggX0xPQURFRCBfUkVRVUlSRUROQU1FCi0iIE5vdCBzdXJlIGlmIGFsbCB0aGVzZSBmdW5jdGlvbnMgbmVlZCB0byBiZSBoaWdobGlnaHRlZC4uLgorICAiIE5vdCBzdXJlIGlmIGFsbCB0aGVzZSBmdW5jdGlvbnMgbmVlZCB0byBiZSBoaWdobGlnaHRlZC4uLgogICBzeW4gbWF0Y2ggICBsdWFGdW5jCS9jb3JvdXRpbmVcLmNyZWF0ZS8KICAgc3luIG1hdGNoICAgbHVhRnVuYwkvY29yb3V0aW5lXC5yZXN1bWUvCiAgIHN5biBtYXRjaCAgIGx1YUZ1bmMJL2Nvcm91dGluZVwuc3RhdHVzLwpkaWZmIC0tZ2l0IGEvcnVudGltZS9zeW50YXgvbWFwbGUudmltIGIvcnVudGltZS9zeW50YXgvbWFwbGUudmltCmluZGV4IGNkYTdjNzUuLjJmYTA0NTcgMTAwNjQ0Ci0tLSBhL3J1bnRpbWUvc3ludGF4L21hcGxlLnZpbQorKysgYi9ydW50aW1lL3N5bnRheC9tYXBsZS52aW0KQEAgLTEsOCArMSw4IEBACiAiIFZpbSBzeW50YXggZmlsZQogIiBMYW5ndWFnZToJTWFwbGUgViAoYmFzZWQgb24gcmVsZWFzZSA0KQogIiBNYWludGFpbmVyOglEci4gQ2hhcmxlcyBFLiBDYW1wYmVsbCwgSnIuIDxOZHJPY2hpcFNAUGNhbXBiZWxsQWZhbWlseS5NYml6PgotIiBMYXN0IENoYW5nZToJTWFyIDEwLCAyMDA0Ci0iIFZlcnNpb246CTQKKyIgTGFzdCBDaGFuZ2U6CUF1ZyAxOSwgMjAwNAorIiBWZXJzaW9uOgk1CiAiIFVSTDoJaHR0cDovL3d3dy5lcm9scy5jb20vYXN0cm9uYXV0L3ZpbS9pbmRleC5odG1sI3ZpbWxpbmtzX3N5bnRheAogIgogIiBQYWNrYWdlIEZ1bmN0aW9uIFNlbGVjdGlvbjoge3t7MQpAQCAtMTcsNiArMTcsOSBAQAogIgogIiAqT1IqIGxldCBtdnBrZ19hbGw9MQogCisiIFRoaXMgc3ludGF4IGZpbGUgY29udGFpbnMgYWxsIHRoZSBrZXl3b3JkcyBhbmQgdG9wLWxldmVsIHBhY2thZ2VzIG9mIE1hcGxlIDkuNQorIiBidXQgb25seSB0aGUgY29udGVudHMgb2YgcGFja2FnZXMgb2YgTWFwbGUgViBSZWxlYXNlIDQsIGFuZCB0aGUgdG9wLWxldmVsCisiIHJvdXRpbmVzIG9mIFJlbGVhc2UgNC4gIDxKYWNxdWVzIENhcmV0dGUgLSBjYXJldHRlQG1jbWFzdGVyLmNhPgogCiAiIEZvciB2ZXJzaW9uIDUueDogQ2xlYXIgYWxsIHN5bnRheCBpdGVtcwogIiBGb3IgdmVyc2lvbiA2Lng6IFF1aXQgd2hlbiBhIHN5bnRheCBmaWxlIHdhcyBhbHJlYWR5IGxvYWRlZApAQCAtNzAsNiArNzMsOSBAQAogZW5kaWYKIAogIiBQYXJlbnRoZXNpcy9jdXJseS9icmFjZSBzYW5pdHkgY2hlY2tlcjoge3t7MQorc3luIGNhc2UgbWF0Y2gKKworIiBwYXJlbnRoZXNpcy9jdXJseS9icmFjZSBzYW5pdHkgY2hlY2tlcgogc3luIHJlZ2lvbiBtdlpvbmUJbWF0Y2hncm91cD1EZWxpbWl0ZXIgc3RhcnQ9IigiIG1hdGNoZ3JvdXA9RGVsaW1pdGVyIGVuZD0iKSIgdHJhbnNwYXJlbnQgY29udGFpbnM9QUxMQlVULG12RXJyb3IsbXZCcmFjZUVycm9yLG12Q3VybHlFcnJvcgogc3luIHJlZ2lvbiBtdlpvbmUJbWF0Y2hncm91cD1EZWxpbWl0ZXIgc3RhcnQ9InsiIG1hdGNoZ3JvdXA9RGVsaW1pdGVyIGVuZD0ifSIgdHJhbnNwYXJlbnQgY29udGFpbnM9QUxMQlVULG12RXJyb3IsbXZCcmFjZUVycm9yLG12UGFyZW5FcnJvcgogc3luIHJlZ2lvbiBtdlpvbmUJbWF0Y2hncm91cD1EZWxpbWl0ZXIgc3RhcnQ9IlxbIiBtYXRjaGdyb3VwPURlbGltaXRlciBlbmQ9Il0iIHRyYW5zcGFyZW50IGNvbnRhaW5zPUFMTEJVVCxtdkVycm9yLG12Q3VybHlFcnJvcixtdlBhcmVuRXJyb3IKQEAgLTc5LDIxICs4NSw0NyBAQAogc3luIG1hdGNoICBtdlBhcmVuRXJyb3IJIltcXX1dIgljb250YWluZWQKIHN5biBtYXRjaCAgbXZDb21tYQkJIlssOzpdIgogc3luIG1hdGNoICBtdlNlbWlFcnJvcgkiWzs6XSIJY29udGFpbmVkCitzeW4gbWF0Y2ggIG12RGNvbG9uCQkiOjoiCiAKLSIgTWFwbGUgViBQYWNrYWdlcywgY2lyY2EgUmVsZWFzZSA0OiB7e3sxCi1zeW4ga2V5d29yZCBtdlBhY2thZ2UJREV0b29scwlkaWZmb3Jtcwlncm91cAluZXR3b3JrcwlwbG90cwlzdGF0cwotc3luIGtleXdvcmQgbXZQYWNrYWdlCUdhbG9pcwlmaW5hbmNlCWludHRyYW5zCW51bWFwcHJveAlwbG90dG9vbHMJc3R1ZGVudAotc3luIGtleXdvcmQgbXZQYWNrYWdlCUdhdXNzSW50CWdlbmZ1bmMJbGllc3ltbQludW10aGVvcnkJcG93c2VyaWVzCXN1bXRvb2xzCi1zeW4ga2V5d29yZCBtdlBhY2thZ2UJTFJFdG9vbHMJZ2VvbWV0cnkJbGluYWxnCW9ydGhvcG9seQlwcm9jZXNzCXRlbnNvcgotc3luIGtleXdvcmQgbXZQYWNrYWdlCWNvbWJpbmF0CWdyb2JuZXIJbG9naWMJcGFkaWMJc2ltcGxleAl0b3RvcmRlcgotc3luIGtleXdvcmQgbXZQYWNrYWdlCWNvbWJzdHJ1Y3QKKyIgTWFwbGUgUGFja2FnZXMsIHVwZGF0ZWQgZm9yIE1hcGxlIDkuNQorc3luIGtleXdvcmQgbXZQYWNrYWdlCWFsZ2N1cnZlcwlBcnJheVRvb2xzCUNhY2hlCWNvZGVnZW4KK3N5biBrZXl3b3JkIG12UGFja2FnZQlDb2RlR2VuZXJhdGlvbglDb2RlVG9vbHMJY29tYmluYXQJY29tYnN0cnVjdAorc3luIGtleXdvcmQgbXZQYWNrYWdlCUNvbnRleHRNZW51CUN1cnZlRml0dGluZwlERXRvb2xzCWRpZmZhbGcKK3N5biBrZXl3b3JkIG12UGFja2FnZQlkaWZmb3JtcwlEaXNjcmV0ZVRyYW5zZm9ybXMJRG9tYWlucwlFeHRlcm5hbENhbGxpbmcKK3N5biBrZXl3b3JkIG12UGFja2FnZQlGaWxlVG9vbHMJZmluYW5jZQlHYXVzc0ludAlnZW5mdW5jCitzeW4ga2V5d29yZCBtdlBhY2thZ2UJZ2VvbTNkCWdlb21ldHJ5CWdmdW4JR3JvZWJuZXIKK3N5biBrZXl3b3JkIG12UGFja2FnZQlncm91cAloYXNobXNldAlJbnRlZ2VyUmVsYXRpb25zCWludHRyYW5zCitzeW4ga2V5d29yZCBtdlBhY2thZ2UJTGFyZ2VFeHByZXNzaW9ucwlMaWJyYXJ5VG9vbHMJbGllc3ltbQlsaW5hbGcKK3N5biBrZXl3b3JkIG12UGFja2FnZQlMaW5lYXJBbGdlYnJhCUxpbmVhckZ1bmN0aW9uYWxTeXN0ZW1zCUxpbmVhck9wZXJhdG9ycworc3luIGtleXdvcmQgbXZQYWNrYWdlCUxpc3RUb29scwlMb2dpYwlMUkV0b29scwlNYXBsZXRzCitzeW4ga2V5d29yZCBtdlBhY2thZ2UJTWF0aGVtYXRpY2FsRnVuY3Rpb25zCU1hdGhNTAlNYXRsYWIKK3N5biBrZXl3b3JkIG12UGFja2FnZQlNYXRyaXhQb2x5bm9taWFsQWxnZWJyYQlNbWFUcmFuc2xhdG9yCW5ldHdvcmtzCitzeW4ga2V5d29yZCBtdlBhY2thZ2UJbnVtYXBwcm94CW51bXRoZW9yeQlPcHRpbWl6YXRpb24JT3JlVG9vbHMKK3N5biBrZXl3b3JkIG12UGFja2FnZQlPcmVfYWxnZWJyYQlPcnRob2dvbmFsU2VyaWVzCW9ydGhvcG9seQlwYWRpYworc3luIGtleXdvcmQgbXZQYWNrYWdlCVBERXRvb2xzCXBsb3RzCXBsb3R0b29scwlQb2x5bm9taWFsSWRlYWxzCitzeW4ga2V5d29yZCBtdlBhY2thZ2UJUG9seW5vbWlhbFRvb2xzCXBvd3Nlcmllcwlwcm9jZXNzCVFEaWZmZXJlbmNlRXF1YXRpb25zCitzeW4ga2V5d29yZCBtdlBhY2thZ2UJUmFuZG9tVG9vbHMJUmF0aW9uYWxOb3JtYWxGb3JtcwlSZWFsRG9tYWluCVJvb3RGaW5kaW5nCitzeW4ga2V5d29yZCBtdlBhY2thZ2UJU2NpZW50aWZpY0NvbnN0YW50cwlTY2llbnRpZmljRXJyb3JBbmFseXNpcwlzaW1wbGV4CitzeW4ga2V5d29yZCBtdlBhY2thZ2UJU2xvZGUJU05BUAlTb2NrZXRzCVNvZnR3YXJlTWV0cmljcworc3luIGtleXdvcmQgbXZQYWNrYWdlCVNvbHZlVG9vbHMJU3ByZWFkCXN0YXRzCVN0cmluZ1Rvb2xzCitzeW4ga2V5d29yZCBtdlBhY2thZ2UJU3R1ZGVudAlzdHVkZW50CXN1bXRvb2xzCVN1bVRvb2xzCitzeW4ga2V5d29yZCBtdlBhY2thZ2UJdGVuc29yCVR5cGVUb29scwlVbml0cwlWYXJpYXRpb25hbENhbGN1bHVzCitzeW4ga2V5d29yZCBtdlBhY2thZ2UJVmVjdG9yQ2FsY3VsdXMJV29ya3NoZWV0CVhNTFRvb2xzCiAKICIgTGFuZ3VhZ2UgU3VwcG9ydDoge3t7MQogc3luIGtleXdvcmQgbXZUb2RvCWNvbnRhaW5lZAlUT0RPCi1zeW4gcmVnaW9uICBtdlN0cmluZwlzdGFydD0rYCsgc2tpcD0rYGArIGVuZD0rYCsJa2VlcGVuZAljb250YWlucz1tdlRvZG8KLXN5biByZWdpb24gIG12RGVsYXlFdmFsCXN0YXJ0PSsnKyBlbmQ9KycrCWtlZXBlbmQgY29udGFpbnM9QUxMQlVULG12RXJyb3IsbXZCcmFjZUVycm9yLG12Q3VybHlFcnJvcixtdlBhcmVuRXJyb3IsbXZTZW1pRXJyb3IKLXN5biBtYXRjaCAgIG12VmFyQXNzaWduCSJbYS16QS1aX11bYS16QS1aXzAtOV0qWyBcdF0qOj0iIGNvbnRhaW5zPW12QXNzaWduCi1zeW4gbWF0Y2ggICBtdkFzc2lnbgkiOj0iCWNvbnRhaW5lZAoraWYgZXhpc3RzKCJnOm1hcGxldmVyc2lvbiIpICYmIGc6bWFwbGV2ZXJzaW9uIDwgOQorIHN5biByZWdpb24gIG12U3RyaW5nCXN0YXJ0PStgKyBza2lwPStgYCsgZW5kPStgKwlrZWVwZW5kCWNvbnRhaW5zPW12VG9kbworIHN5biByZWdpb24gIG12RGVsYXlFdmFsCXN0YXJ0PSsnKyBlbmQ9KycrCWtlZXBlbmQgY29udGFpbnM9QUxMQlVULG12RXJyb3IsbXZCcmFjZUVycm9yLG12Q3VybHlFcnJvcixtdlBhcmVuRXJyb3IsbXZTZW1pRXJyb3IKKyBzeW4gbWF0Y2ggICBtdlZhckFzc2lnbgkiW2EtekEtWl9dW2EtekEtWl8wLTldKlsgXHRdKjo9IiBjb250YWlucz1tdkFzc2lnbgorIHN5biBtYXRjaCAgIG12QXNzaWduCSI6PSIJY29udGFpbmVkCitlbHNlCisgc3luIHJlZ2lvbiAgbXZOYW1lCXN0YXJ0PStgKyBza2lwPStgYCsgZW5kPStgKwlrZWVwZW5kCWNvbnRhaW5zPW12VG9kbworIHN5biByZWdpb24gIG12U3RyaW5nCXN0YXJ0PSsiKyBza2lwPSsiIisgZW5kPSsiKwlrZWVwZW5kCisgc3luIHJlZ2lvbiAgbXZEZWxheUV2YWwJc3RhcnQ9KycrIGVuZD0rJysJa2VlcGVuZCBjb250YWlucz1BTExCVVQsbXZFcnJvcixtdkJyYWNlRXJyb3IsbXZDdXJseUVycm9yLG12UGFyZW5FcnJvcgorIHN5biBtYXRjaCAgIG12RGVsaW0JCSJbOzpdIglkaXNwbGF5Cisgc3luIG1hdGNoICAgbXZBc3NpZ24JIjo9IgorZW5kaWYKIAogIiBMb3dlci1Qcmlvcml0eSBPcGVyYXRvcnM6IHt7ezEKIHN5biBtYXRjaCBtdk9wZXIJIlwuIgpAQCAtMTIwLDE0ICsxNTIsMTYgQEAKIHN5biBtYXRjaCBtdlJhbmdlCSJcLlwuIgogCiAiIE9wZXJhdG9yczoge3t7MQotc3luIGtleXdvcmQgbXZPcGVyCWFuZCBub3Qgb3IKK3N5biBrZXl3b3JkIG12T3BlcglhbmQgbm90IG9yIHhvciBpbXBsaWVzIHVuaW9uIGludGVyc2VjdCBzdWJzZXQgbWludXMgbW9kCiBzeW4gbWF0Y2ggICBtdk9wZXIJIjw+XHxbPD5dPVx8Wzw+XVx8PSIKIHN5biBtYXRjaCAgIG12T3BlcgkiJitcfCYtXHwmXCpcfCZcL1x8JiIKIHN5biBtYXRjaCAgIG12RXJyb3IJIlwuXC5cLiIKIAogIiBNYXBsZVYgU3RhdGVtZW50czogPyBzdGF0ZW1lbnQge3t7MQorCisiIE1hcGxlViBTdGF0ZW1lbnRzOiA/IHN0YXRlbWVudAogIiBTcGxpdCBpbnRvIGJvb2xlYW5zLCBjb25kaXRpb25hbHMsIG9wZXJhdG9ycywgcmVwZWF0LWxvZ2ljLCBldGMKLXN5biBrZXl3b3JkIG12Qm9vbAl0cnVlCWZhbHNlCitzeW4ga2V5d29yZCBtdkJvb2wJdHJ1ZQlmYWxzZQlGQUlMCiBzeW4ga2V5d29yZCBtdkNvbmQJZWxpZgllbHNlCWZpCWlmCXRoZW4KIAogc3luIGtleXdvcmQgbXZSZXBlYXQJYnkJZm9yCWluCXRvCkBAIC0xMzYsMTUgKzE3MCwyNSBAQAogc3luIGtleXdvcmQgbXZTcGVjaWFsCU5VTEwKIHN5biBtYXRjaCAgIG12U3BlY2lhbAkiXFtcXVx8e30iCiAKLXN5biBrZXl3b3JkIG12U3RhdGVtZW50CU9yZGVyCWZhaWwJb3B0aW9ucwlyZWFkCXNhdmUKLXN5biBrZXl3b3JkIG12U3RhdGVtZW50CWJyZWFrCWxvY2FsCXBvaW50CXJlbWVtYmVyCXN0b3AKLXN5biBrZXl3b3JkIG12U3RhdGVtZW50CWRvbmUJbW9kCXByb2MJcmVzdGFydAl3aXRoCi1zeW4ga2V5d29yZCBtdlN0YXRlbWVudAllbmQJbW9kcwlxdWl0CXJldHVybgotc3luIGtleXdvcmQgbXZTdGF0ZW1lbnQJZXJyb3IJbmV4dAoraWYgZXhpc3RzKCJnOm1hcGxldmVyc2lvbiIpICYmIGc6bWFwbGV2ZXJzaW9uIDwgOQorIHN5biBrZXl3b3JkIG12U3RhdGVtZW50CU9yZGVyCWZhaWwJb3B0aW9ucwlyZWFkCXNhdmUKKyBzeW4ga2V5d29yZCBtdlN0YXRlbWVudAlicmVhawlsb2NhbAlwb2ludAlyZW1lbWJlcglzdG9wCisgc3luIGtleXdvcmQgbXZTdGF0ZW1lbnQJZG9uZQltb2QJcHJvYwlyZXN0YXJ0CXdpdGgKKyBzeW4ga2V5d29yZCBtdlN0YXRlbWVudAllbmQJbW9kcwlxdWl0CXJldHVybgorIHN5biBrZXl3b3JkIG12U3RhdGVtZW50CWVycm9yCW5leHQKK2Vsc2UKKyBzeW4ga2V5d29yZCBtdlN0YXRlbWVudAlvcHRpb24Jb3B0aW9ucwlyZWFkCXNhdmUKKyBzeW4ga2V5d29yZCBtdlN0YXRlbWVudAlicmVhawlsb2NhbAlyZW1lbWJlcglzdG9wCisgc3luIGtleXdvcmQgbXZTdGF0ZW1lbnQJZG9uZQltb2QJcHJvYwlyZXN0YXJ0Cisgc3luIGtleXdvcmQgbXZTdGF0ZW1lbnQJZW5kCW1vZHMJcXVpdAlyZXR1cm4KKyBzeW4ga2V5d29yZCBtdlN0YXRlbWVudAllcnJvcgluZXh0CXRyeQljYXRjaAorIHN5biBrZXl3b3JkIG12U3RhdGVtZW50CWZpbmFsbHkJYXNzdW1pbmcJZ2xvYmFsCWV4cG9ydAorIHN5biBrZXl3b3JkIG12U3RhdGVtZW50CW1vZHVsZQlkZXNjcmlwdGlvbgl1c2UKK2VuZGlmCiAKICIgQnVpbHRpbiBDb25zdGFudHM6ID8gY29uc3RhbnRzIHt7ezEKIHN5biBrZXl3b3JkIG12Q29uc3RhbnQJQ2F0YWxhbglJCWdhbW1hCWluZmluaXR5Ci1zeW4ga2V5d29yZCBtdkNvbnN0YW50CUZBSUwJUGkKK3N5biBrZXl3b3JkIG12Q29uc3RhbnQJUGkKIAogIiBDb21tZW50czogIERFQlVHLCBpZiBpbiBhIGNvbW1lbnQsIGlzIHNwZWNpYWxseSBoaWdobGlnaHRlZC4ge3t7MQogc3luIGtleXdvcmQgbXZEZWJ1Zwljb250YWluZWQJREVCVUcKQEAgLTU1Miw2ICs1OTYsNyBAQAogICBIaUxpbmsgbXZQa2dfdG90b3JkZXIJbXZQa2dGdW5jCiAgIEhpTGluayBtdlJhbmdlCQltdk9wZXIKICAgSGlMaW5rIG12U2VtaUVycm9yCW12RXJyb3IKKyAgSGlMaW5rIG12RGVsaW0JCURlbGltaXRlcgogCiAgICIgTWFwbGUtPlN0YW5kYXJkIExpbmtzIHt7ezIKICAgSGlMaW5rIG12QXNzaWduCQlEZWxpbWl0ZXIKQEAgLTU2MSwxNiArNjA2LDE5IEBACiAgIEhpTGluayBtdkNvbmQJCUNvbmRpdGlvbmFsCiAgIEhpTGluayBtdkNvbnN0YW50CQlOdW1iZXIKICAgSGlMaW5rIG12RGVsYXlFdmFsCUxhYmVsCisgIEhpTGluayBtdkRjb2xvbgkJRGVsaW1pdGVyCiAgIEhpTGluayBtdkVycm9yCQlFcnJvcgogICBIaUxpbmsgbXZMaWJyYXJ5CQlTdGF0ZW1lbnQKICAgSGlMaW5rIG12TnVtYmVyCQlOdW1iZXIKICAgSGlMaW5rIG12T3BlcgkJT3BlcmF0b3IKKyAgSGlMaW5rIG12QXNzaWduCQlEZWxpbWl0ZXIKICAgSGlMaW5rIG12UGFja2FnZQkJVHlwZQogICBIaUxpbmsgbXZQa2dGdW5jCQlGdW5jdGlvbgogICBIaUxpbmsgbXZQa3RPcHRpb24JU3BlY2lhbAogICBIaUxpbmsgbXZSZXBlYXQJCVJlcGVhdAogICBIaUxpbmsgbXZTcGVjaWFsCQlTcGVjaWFsCiAgIEhpTGluayBtdlN0YXRlbWVudAlTdGF0ZW1lbnQKKyAgSGlMaW5rIG12TmFtZQkJU3RyaW5nCiAgIEhpTGluayBtdlN0cmluZwkJU3RyaW5nCiAgIEhpTGluayBtdlRvZG8JCVRvZG8KIApkaWZmIC0tZ2l0IGEvcnVudGltZS9zeW50YXgvbmV0cndsaXN0LnZpbSBiL3J1bnRpbWUvc3ludGF4L25ldHJ3bGlzdC52aW0KaW5kZXggOGYzMDkxZC4uYWU2OGM5MSAxMDA2NDQKLS0tIGEvcnVudGltZS9zeW50YXgvbmV0cndsaXN0LnZpbQorKysgYi9ydW50aW1lL3N5bnRheC9uZXRyd2xpc3QudmltCkBAIC0xLDcgKzEsOCBAQAogIiBMYW5ndWFnZSAgIDogTmV0cncgUmVtb3RlLURpcmVjdG9yeSBMaXN0aW5nIFN5bnRheAogIiBNYWludGFpbmVyIDogQ2hhcmxlcyBFLiBDYW1wYmVsbCwgSnIuCi0iIExhc3QgY2hhbmdlOiBKdWwgMDYsIDIwMDQKLSIgVmVyc2lvbiAgICA6IDIKKyIgTGFzdCBjaGFuZ2U6IEF1ZyAyMCwgMjAwNAorIiBWZXJzaW9uICAgIDogNAorIiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAogIiBTeW50YXggQ2xlYXJpbmc6IHt7ezEKIGlmIHZlcnNpb24gPCA2MDAKQEAgLTEwLDI4ICsxMSwzOSBAQAogIGZpbmlzaAogZW5kaWYKIAorIiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICIgRGlyZWN0b3J5IExpc3QgU3ludGF4IEhpZ2hsaWdodGluZzoge3t7MQotc3luIG1hdGNoIG5ldHJ3RGlyCQkJCSJeLiovXCUoXHRcfCRcKSIJY29udGFpbnM9bmV0cndDbGFzc2lmeQotc3luIG1hdGNoIG5ldHJ3Q2xhc3NpZnkJCQkJIlsqPXxAL11cJShcdFx8JFwpIgotc3luIG1hdGNoIG5ldHJ3U3ltTGluawkJCQkiXi4qQFwlKFx0XHwkXCkiCWNvbnRhaW5zPW5ldHJ3Q2xhc3NpZnkKLXN5biBtYXRjaCBuZXRyd0NvbW1lbnQJCQkJJyIuKlwlKFx0XHwkXCknCQljb250YWlucz1uZXRyd0hpZGUsbmV0cndTb3J0QnksbmV0cndTb3J0U2VxCi1zeW4gbWF0Y2ggbmV0cndIaWRlCQkJCSdeIlxzKkhpZGluZzonCQlza2lwd2hpdGUgbmV4dGdyb3VwPW5ldHJ3SGlkZVBhdAotc3luIG1hdGNoIG5ldHJ3U2xhc2gJY29udGFpbmVkCQkJIi8iCi1zeW4gbWF0Y2ggbmV0cndIaWRlUGF0CWNvbnRhaW5lZAkJIlteLF1cKyIJCXNraXB3aGl0ZSBuZXh0Z3JvdXA9bmV0cndIaWRlU2VwCi1zeW4gbWF0Y2ggbmV0cndIaWRlU2VwCWNvbnRhaW5lZCB0cmFuc3BhcmVudAkiLCIJCQlza2lwd2hpdGUgbmV4dGdyb3VwPW5ldHJ3SGlkZVBhdAotc3luIG1hdGNoIG5ldHJ3U29ydEJ5CWNvbnRhaW5lZCB0cmFuc3BhcmVudAkiU29ydGVkIGJ5IgkJc2tpcHdoaXRlIG5leHRncm91cD1uZXRyd0xpc3QKLXN5biBtYXRjaCBuZXRyd1NvcnRTZXEJY29udGFpbmVkIHRyYW5zcGFyZW50CSJTb3J0IHNlcXVlbmNlOiIJc2tpcHdoaXRlIG5leHRncm91cD1uZXRyd0xpc3QKLXN5biBtYXRjaCBuZXRyd0xpc3QJY29udGFpbmVkCQkiLiokIgkJCWNvbnRhaW5zPW5ldHJ3Q29tbWEKLXN5biBtYXRjaCBuZXRyd0NvbW1hCWNvbnRhaW5lZAkJIiwiCitzeW4gY2x1c3RlciBOZXRyd0dyb3VwIGNvbnRhaW5zPW5ldHJ3SGlkZSxuZXRyd1NvcnRCeSxuZXRyd1NvcnRTZXEsbmV0cndRdWlja0hlbHAsbmV0cndWZXJzaW9uCitzeW4gbWF0Y2ggIG5ldHJ3RGlyCQkJCSJeLiovXCUoXHRcfCRcKSIJY29udGFpbnM9bmV0cndDbGFzc2lmeQorc3luIG1hdGNoICBuZXRyd0NsYXNzaWZ5CQkJIlsqPXxAL11cJShcdFx8JFwpIgorc3luIG1hdGNoICBuZXRyd1N5bUxpbmsJCQkJIl4uKkBcJShcdFx8JFwpIgljb250YWlucz1uZXRyd0NsYXNzaWZ5CitzeW4gbWF0Y2ggIG5ldHJ3Q29tbWVudAkJCQknIi4qXCUoXHRcfCRcKScJCWNvbnRhaW5zPUBOZXRyd0dyb3VwCitzeW4gbWF0Y2ggIG5ldHJ3SGlkZQkJCQknXiJccypIaWRpbmc6JwkJc2tpcHdoaXRlIG5leHRncm91cD1uZXRyd0hpZGVQYXQKK3N5biBtYXRjaCAgbmV0cndTbGFzaAljb250YWluZWQJCSIvIgorc3luIG1hdGNoICBuZXRyd0hpZGVQYXQJY29udGFpbmVkCQkiW14sXVwrIgkJc2tpcHdoaXRlIG5leHRncm91cD1uZXRyd0hpZGVTZXAKK3N5biBtYXRjaCAgbmV0cndIaWRlU2VwCWNvbnRhaW5lZCB0cmFuc3BhcmVudAkiLCIJCQlza2lwd2hpdGUgbmV4dGdyb3VwPW5ldHJ3SGlkZVBhdAorc3luIG1hdGNoICBuZXRyd1NvcnRCeQljb250YWluZWQgdHJhbnNwYXJlbnQJIlNvcnRlZCBieSIJCXNraXB3aGl0ZSBuZXh0Z3JvdXA9bmV0cndMaXN0CitzeW4gbWF0Y2ggIG5ldHJ3U29ydFNlcQljb250YWluZWQgdHJhbnNwYXJlbnQJIlNvcnQgc2VxdWVuY2U6Iglza2lwd2hpdGUgbmV4dGdyb3VwPW5ldHJ3TGlzdAorc3luIG1hdGNoICBuZXRyd0xpc3QJY29udGFpbmVkCQkiLiokIgkJCWNvbnRhaW5zPW5ldHJ3Q29tbWEKK3N5biBtYXRjaCAgbmV0cndDb21tYQljb250YWluZWQJCSIsIgorc3luIHJlZ2lvbiBuZXRyd1F1aWNrSGVscCBjb250YWluZWQgbWF0Y2hncm91cD1Db21tZW50IHN0YXJ0PSJRdWljayBIZWxwOlxzXCsiIGVuZD0iJCIgY29udGFpbnM9bmV0cndIZWxwQ21kIGtlZXBlbmQKK3N5biBtYXRjaCAgbmV0cndIZWxwQ21kCWNvbnRhaW5lZAkJIlxTXHplOiIJCXNraXB3aGl0ZSBuZXh0Z3JvdXA9bmV0cndDbWRTZXAKK3N5biBtYXRjaCAgbmV0cndDbWRTZXAJY29udGFpbmVkCQkiOiIJCQluZXh0Z3JvdXA9bmV0cndDbWROb3RlCitzeW4gbWF0Y2ggIG5ldHJ3Q21kTm90ZQljb250YWluZWQJCSIuXHstfVx6ZSAgIgorc3luIG1hdGNoICBuZXRyd1ZlcnNpb24gY29udGFpbmVkCQkiKG5ldHJ3LiopIgogCisiIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogIiBIaWdobGlnaHRpbmcgTGlua3M6IHt7ezEKIGlmICFleGlzdHMoImRpZF9kcmNoaXBfZGJnX3N5bnRheCIpCiAgbGV0IGRpZF9kcmNoaXBfbmV0cndsaXN0X3N5bnRheD0gMQogIGhpIGxpbmsgbmV0cndDbGFzc2lmeQlGdW5jdGlvbgorIGhpIGxpbmsgbmV0cndDbWRTZXAJRGVsaW1pdGVyCiAgaGkgbGluayBuZXRyd0NvbW1lbnQJQ29tbWVudAogIGhpIGxpbmsgbmV0cndEaXIJRGlyZWN0b3J5Ci0gaGkgbGluayBuZXRyd0hpZGVQYXQJU3RyaW5nCi0gaGkgbGluayBuZXRyd0xpc3QJU3RyaW5nCisgaGkgbGluayBuZXRyd0hlbHBDbWQJRnVuY3Rpb24KKyBoaSBsaW5rIG5ldHJ3SGlkZVBhdAlTdGF0ZW1lbnQKKyBoaSBsaW5rIG5ldHJ3TGlzdAlTdGF0ZW1lbnQKKyBoaSBsaW5rIG5ldHJ3VmVyc2lvbglJZGVudGlmaWVyCiAgaGkgbGluayBuZXRyd1N5bUxpbmsJU3BlY2lhbAogCiAgaGkgbGluayBuZXRyd0NvbW1hCW5ldHJ3Q29tbWVudApAQCAtNDAsNCArNTIsNSBAQAogCiAiIEN1cnJlbnQgU3ludGF4OiB7e3sxCiBsZXQgICBiOmN1cnJlbnRfc3ludGF4ID0gIm5ldHJ3bGlzdCIKKyIgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAiIHZpbTogdHM9OCBmZG09bWFya2VyCmRpZmYgLS1naXQgYS9ydW50aW1lL3N5bnRheC9wZXJsLnZpbSBiL3J1bnRpbWUvc3ludGF4L3BlcmwudmltCmluZGV4IDQzODg3MjkuLjMyN2NjMTEgMTAwNjQ0Ci0tLSBhL3J1bnRpbWUvc3ludGF4L3BlcmwudmltCisrKyBiL3J1bnRpbWUvc3ludGF4L3BlcmwudmltCkBAIC0xLDcgKzEsNyBAQAogIiBWaW0gc3ludGF4IGZpbGUKICIgTGFuZ3VhZ2U6CVBlcmwKICIgTWFpbnRhaW5lcjoJTmljayBIaWJtYSA8bl9oaWJtYUB2YW4tbGFhcmhvdmVuLm9yZz4KLSIgTGFzdCBDaGFuZ2U6CTIwMDQgTWF5IDE2CisiIExhc3QgQ2hhbmdlOgkyMDA0IEF1ZyAyOQogIiBMb2NhdGlvbjoJaHR0cDovL3d3dy52YW4tbGFhcmhvdmVuLm9yZy92aW0vc3ludGF4L3BlcmwudmltCiAiCiAiIFBsZWFzZSBkb3dubG9hZCBtb3N0IHJlY2VudCB2ZXJzaW9uIGZpcnN0IGJlZm9yZSBtYWlsaW5nCkBAIC0xNyw4ICsxNyw4IEBACiAiIHBlcmwgc3ludGF4IGhpZ2hsaWdodGluZywgd2l0aCBkZWZhdWx0cyBnaXZlbjoKICIKICIgdW5sZXQgcGVybF9pbmNsdWRlX3BvZAotIiB1bmxldCBwZXJsX3dhbnRfc2NvcGVfaW5fdmFyaWFibGVzCi0iIHVubGV0IHBlcmxfZXh0ZW5kZWRfdmFycworIiB1bmxldCBwZXJsX25vX3Njb3BlX2luX3ZhcmlhYmxlcworIiB1bmxldCBwZXJsX25vX2V4dGVuZGVkX3ZhcnMKICIgdW5sZXQgcGVybF9zdHJpbmdfYXNfc3RhdGVtZW50CiAiIHVubGV0IHBlcmxfbm9fc3luY19vbl9zdWIKICIgdW5sZXQgcGVybF9ub19zeW5jX29uX2dsb2JhbF92YXIKQEAgLTE0NywxNiArMTQ3LDExIEBACiAiIEFuZCBwbGFpbiBpZGVudGlmaWVycwogc3luIG1hdGNoICBwZXJsUGFja2FnZVJlZgkgIlwoXGhcdypcKVw9XCg6Olx8J1wpXEkibWU9ZS0xIGNvbnRhaW5lZAogCi0iIFRvIGhpZ2hsaWdodCBwYWNrYWdlcyBpbiB2YXJpYWJsZXMgYXMgYSBzY29wZSByZWZlcmVuY2UgLSBpLmUuIGluICRwYWNrOjp2YXIsCi0iIHBhY2s6OiBpcyBhIHNjb3BlLCBqdXN0IHNldCAicGVybF93YW50X3Njb3BlX2luX3ZhcmlhYmxlcyIKLSIgSWYgeW91ICp3YW50KiBjb21wbGV4IHRoaW5ncyBsaWtlIEB7JHsiZm9vIn19IHRvIGJlIHByb2Nlc3NlZCwKLSIganVzdCBzZXQgdGhlIHZhcmlhYmxlICJwZXJsX2V4dGVuZGVkX3ZhcnMiLi4uCi0KICIgRklYTUUgdmFsdWUgYmV0d2VlbiB7fSBzaG91bGQgYmUgbWFya2VkIGFzIHN0cmluZy4gaXMgdHJlYXRlZCBhcyBzdWNoIGJ5IFBlcmwuCiAiIEF0IHRoZSBtb21lbnQgaXQgaXMgbWFya2VkIGFzIHNvbWV0aGluZyBncmV5aXNoIGluc3RlYWQgb2YgcmVhZC4gUHJvYmFibHkgdG9kbwogIiB3aXRoIHRyYW5zcGFyZW5jeS4gT3IgbWF5YmUgd2Ugc2hvdWxkIGhhbmRsZSB0aGUgYmFyZSB3b3JkIGluIHRoYXQgY2FzZS4gb3IgbWFrZSBpdCBpbnRvCiAKLWlmIGV4aXN0cygicGVybF93YW50X3Njb3BlX2luX3ZhcmlhYmxlcyIpCitpZiAhZXhpc3RzKCJwZXJsX25vX3Njb3BlX2luX3ZhcmlhYmxlcyIpCiAgIHN5biBtYXRjaCAgcGVybFZhclBsYWluCSJcXFw9XChbQCUkXVx8XCQjXClcJCpcKFxJXGkqXClcPVwoXCg6Olx8J1wpXElcaSpcKSpcPiIgY29udGFpbnM9cGVybFBhY2thZ2VSZWYgbmV4dGdyb3VwPXBlcmxWYXJNZW1iZXIscGVybFZhclNpbXBsZU1lbWJlcixwZXJsTWV0aG9kCiAgIHN5biBtYXRjaCAgcGVybEZ1bmN0aW9uTmFtZQkiXFxcPSZcJCpcKFxJXGkqXClcPVwoXCg6Olx8J1wpXElcaSpcKSpcPiIgY29udGFpbnM9cGVybFBhY2thZ2VSZWYgbmV4dGdyb3VwPXBlcmxWYXJNZW1iZXIscGVybFZhclNpbXBsZU1lbWJlcgogZWxzZQpAQCAtMTY0LDcgKzE1OSw3IEBACiAgIHN5biBtYXRjaCAgcGVybEZ1bmN0aW9uTmFtZQkiXFxcPSZcJCpcKFxJXGkqXClcPVwoXCg6Olx8J1wpXElcaSpcKSpcPiIgbmV4dGdyb3VwPXBlcmxWYXJNZW1iZXIscGVybFZhclNpbXBsZU1lbWJlcgogZW5kaWYKIAotaWYgZXhpc3RzKCJwZXJsX2V4dGVuZGVkX3ZhcnMiKQoraWYgIWV4aXN0cygicGVybF9ub19leHRlbmRlZF92YXJzIikKICAgc3luIGNsdXN0ZXIgcGVybEV4cHIJCWNvbnRhaW5zPXBlcmxTdGF0ZW1lbnRTY2FsYXIscGVybFN0YXRlbWVudFJlZ2V4cCxwZXJsU3RhdGVtZW50TnVtZXJpYyxwZXJsU3RhdGVtZW50TGlzdCxwZXJsU3RhdGVtZW50SGFzaCxwZXJsU3RhdGVtZW50RmlsZXMscGVybFN0YXRlbWVudFRpbWUscGVybFN0YXRlbWVudE1pc2MscGVybFZhclBsYWluLHBlcmxWYXJOb3RJbk1hdGNoZXMscGVybFZhclNsYXNoLHBlcmxWYXJCbG9jayxwZXJsU2hlbGxDb21tYW5kLHBlcmxGbG9hdCxwZXJsTnVtYmVyLHBlcmxTdHJpbmdVbmV4cGFuZGVkLHBlcmxTdHJpbmcscGVybFFRCiAgIHN5biByZWdpb24gcGVybFZhckJsb2NrCW1hdGNoZ3JvdXA9cGVybFZhclBsYWluIHN0YXJ0PSJcKCQjXHxbQCUkXVwpXCQqeyIgc2tpcD0iXFx9IiBlbmQ9In0iIGNvbnRhaW5zPUBwZXJsRXhwciBuZXh0Z3JvdXA9cGVybFZhck1lbWJlcixwZXJsVmFyU2ltcGxlTWVtYmVyCiAgIHN5biByZWdpb24gcGVybFZhckJsb2NrCW1hdGNoZ3JvdXA9cGVybFZhclBsYWluIHN0YXJ0PSImXCQqeyIgc2tpcD0iXFx9IiBlbmQ9In0iIGNvbnRhaW5zPUBwZXJsRXhwcgpAQCAtMzU5LDcgKzM1NCw3IEBACiBzeW4ga2V5d29yZCBwZXJsU3RhdGVtZW50U3ViCXN1YiBjb250YWluZWQKIAogc3luIG1hdGNoICBwZXJsRnVuY3Rpb25Qcm90b3R5cGUJIihbXildKikiIGNvbnRhaW5lZAotaWYgZXhpc3RzKCJwZXJsX3dhbnRfc2NvcGVfaW5fdmFyaWFibGVzIikKK2lmICFleGlzdHMoInBlcmxfbm9fc2NvcGVfaW5fdmFyaWFibGVzIikKICAgIHN5biBtYXRjaCAgcGVybEZ1bmN0aW9uUFJlZgkiXGhcdyo6OiIgY29udGFpbmVkCiAgICBzeW4gbWF0Y2ggIHBlcmxGdW5jdGlvbk5hbWUJIlxoXHcqW146XSIgY29udGFpbmVkCiBlbHNlCmRpZmYgLS1naXQgYS9ydW50aW1lL3N5bnRheC9zaC52aW0gYi9ydW50aW1lL3N5bnRheC9zaC52aW0KaW5kZXggYzhmNmVlMC4uZjg2MjRhZSAxMDA2NDQKLS0tIGEvcnVudGltZS9zeW50YXgvc2gudmltCisrKyBiL3J1bnRpbWUvc3ludGF4L3NoLnZpbQpAQCAtMiwxMSArMiwxMSBAQAogIiBMYW5ndWFnZToJCXNoZWxsIChzaCkgS29ybiBzaGVsbCAoa3NoKSBiYXNoIChzaCkKICIgTWFpbnRhaW5lcjoJCURyLiBDaGFybGVzIEUuIENhbXBiZWxsLCBKci4gIDxOZHJPY2hpcFNAUGNhbXBiZWxsQWZhbWlseS5NYml6PgogIiBQcmV2aW91cyBNYWludGFpbmVyOglMZW5uYXJ0IFNjaHVsdHogPExlbm5hcnQuU2NodWx0ekBlY213Zi5pbnQ+Ci0iIExhc3QgQ2hhbmdlOgkJQXByIDI4LCAyMDA0Ci0iIFZlcnNpb246CQk2OAorIiBMYXN0IENoYW5nZToJCUp1bCAyNiwgMjAwNAorIiBWZXJzaW9uOgkJNjkKICIgVVJMOgkJaHR0cDovL3d3dy5lcm9scy5jb20vYXN0cm9uYXV0L3ZpbS9pbmRleC5odG1sI3ZpbWxpbmtzX3N5bnRheAogIgotIiBVc2luZyB0aGUgZm9sbG93aW5nIFZJTSB2YXJpYWJsZXM6CisiIFVzaW5nIHRoZSBmb2xsb3dpbmcgVklNIHZhcmlhYmxlczoge3t7MQogIiBiOmlzX2tvcm5zaGVsbAlpZiBkZWZpbmVkLCBlbmhhbmNlIHdpdGgga29ybnNoZWxsIHN5bnRheAogIiBiOmlzX2Jhc2gJCWlmIGRlZmluZWQsIGVuaGFuY2Ugd2l0aCBiYXNoIHN5bnRheAogIiAgIGlzX2tvcm5zaGVsbAlpZiBuZWl0aGVyIGI6aXNfa29ybnNoZWxsIG9yIGI6aXNfYmFzaCBpcwpAQCAtMjAsNyArMjAsNyBAQAogIgogIiBUaGlzIGZpbGUgaW5jbHVkZXMgbWFueSBpZGVhcyBmcm9tIMlyaWMgQnJ1bmV0IChlcmljLmJydW5ldEBlbnMuZnIpCiAKLSIgRm9yIHZlcnNpb24gNS54OiBDbGVhciBhbGwgc3ludGF4IGl0ZW1zCisiIEZvciB2ZXJzaW9uIDUueDogQ2xlYXIgYWxsIHN5bnRheCBpdGVtcyB7e3sxCiAiIEZvciB2ZXJzaW9uIDYueDogUXVpdCB3aGVuIGEgc3ludGF4IGZpbGUgd2FzIGFscmVhZHkgbG9hZGVkCiBpZiB2ZXJzaW9uIDwgNjAwCiAgIHN5bnRheCBjbGVhcgpAQCAtMjgsNiArMjgsNyBAQAogICBmaW5pc2gKIGVuZGlmCiAKKyIgaGFuZGxpbmcgL2Jpbi9zaCB3aXRoIGlzX2tvcm5zaGVsbC9pc19zaCB7e3sxCiAiIGI6aXNfc2ggaXMgc2V0IHdoZW4gIiMhIC9iaW4vc2giIGlzIGZvdW5kOwogIiBIb3dldmVyLCBpdCBvZnRlbiBpcyBqdXN0IGEgbWFzcXVlcmFkZSBieSBiYXNoICh0eXBpY2FsbHkgTGludXgpCiAiIG9yIGtvcm5zaGVsbCAodHlwaWNhbGx5IHdvcmtzdGF0aW9ucyB3aXRoIFBvc2l4ICJzaCIpLgpAQCAtNTcsNyArNTgsNyBAQAogIiBzaCBzeW50YXggaXMgY2FzZSBzZW5zaXRpdmUKIHN5biBjYXNlIG1hdGNoCiAKLSIgQ2x1c3RlcnM6IGNvbnRhaW5zPUAuLi4gY2x1c3RlcnMKKyIgQ2x1c3RlcnM6IGNvbnRhaW5zPUAuLi4gY2x1c3RlcnMge3t7MQogIj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIHN5biBjbHVzdGVyIHNoQ2FzZUVzYWNMaXN0CWNvbnRhaW5zPXNoQ2FzZVN0YXJ0LHNoQ2FzZSxzaENhc2VCYXIsc2hDYXNlSW4sc2hDb21tZW50LHNoRGVyZWYsc2hEZXJlZlNpbXBsZSxzaENhc2VDb21tYW5kU3ViLHNoQ2FzZVNpbmdsZVF1b3RlLHNoQ2FzZURvdWJsZVF1b3RlLHNoU3BlY2lhbAogc3luIGNsdXN0ZXIgc2hDYXNlTGlzdAljb250YWlucz1Ac2hDb21tYW5kU3ViTGlzdCxzaENhc2VFc2FjLHNoQ29sb24sc2hDb21tYW5kU3ViLHNoQ29tbWFuZFN1YixzaENvbW1lbnQsc2hEbyxzaEVjaG8sc2hFeHByLHNoRm9yLHNoSGVyZURvYyxzaElmLHNoUmVkaXIsc2hTZXRMaXN0LHNoU291cmNlLHNoU3RhdGVtZW50LHNoVmFyaWFibGUsYmtzaEZ1bmN0aW9uLHNoU3BlY2lhbApAQCAtNzksNyArODAsNyBAQAogc3luIGNsdXN0ZXIgc2hUZXN0TGlzdAljb250YWlucz1zaENoYXJDbGFzcyxzaENvbW1lbnQsc2hDb21tYW5kU3ViLHNoRGVyZWYsc2hEZXJlZlNpbXBsZSxzaERvdWJsZVF1b3RlLHNoRXhwcixzaEV4cHIsc2hOdW1iZXIsc2hPcGVyYXRvcixzaFNpbmdsZVF1b3RlLHNoU3BlY2lhbCxzaFRlc3RPcHIKIAogCi0iIEVjaG86CisiIEVjaG86IHt7ezEKICIgPT09PQogIiBUaGlzIG9uZSBpcyBuZWVkZWQgSU5TSURFIGEgQ29tbWFuZFN1Yiwgc28gdGhhdCBgZWNobyBibGFgIGJlIGNvcnJlY3QKIHN5biByZWdpb24gc2hFY2hvIG1hdGNoZ3JvdXA9c2hTdGF0ZW1lbnQgc3RhcnQ9Ilw8ZWNob1w+IiAgc2tpcD0iXFwkIiBtYXRjaGdyb3VwPXNoT3BlcmF0b3IgZW5kPSIkIiBtYXRjaGdyb3VwPU5PTkUgZW5kPSJbPD47JnwoKV0ibWU9ZS0xIGVuZD0iXGRbPD5dIm1lPWUtMiBlbmQ9IiMibWU9ZS0xIGNvbnRhaW5zPUBzaEVjaG9MaXN0CkBAIC04OCw3ICs4OSw3IEBACiAiIFRoaXMgbXVzdCBiZSBhZnRlciB0aGUgc3RyaW5ncywgc28gdGhhdCBibGEgXCIgYmUgY29ycmVjdAogc3luIHJlZ2lvbiBzaEVtYmVkZGVkRWNobyBjb250YWluZWQgbWF0Y2hncm91cD1zaFN0YXRlbWVudCBzdGFydD0iXDxwcmludFw+IiBza2lwPSJcXCQiIG1hdGNoZ3JvdXA9c2hPcGVyYXRvciBlbmQ9IiQiIG1hdGNoZ3JvdXA9Tk9ORSBlbmQ9Ils8PjsmfGApXSJtZT1lLTEgZW5kPSJcZFs8Pl0ibWU9ZS0yIGVuZD0iIyJtZT1lLTEgY29udGFpbnM9c2hOdW1iZXIsc2hTaW5nbGVRdW90ZSxzaERlcmVmLHNoRGVyZWZTaW1wbGUsc2hTcGVjaWFsVmFyLHNoU3BlY2lhbCxzaE9wZXJhdG9yLHNoRG91YmxlUXVvdGUsc2hDaGFyQ2xhc3MKIAotIiBBbGlhczoKKyIgQWxpYXM6IHt7ezEKICIgPT09PT0KIGlmIGV4aXN0cygiYjppc19rb3Juc2hlbGwiKSB8fCBleGlzdHMoImI6aXNfYmFzaCIpCiAgc3luIG1hdGNoIHNoU3RhdGVtZW50ICJcPGFsaWFzXD4iCkBAIC05Niw4ICs5Nyw4IEBACiAgc3luIHJlZ2lvbiBzaEFsaWFzIG1hdGNoZ3JvdXA9c2hTdGF0ZW1lbnQgc3RhcnQ9Ilw8YWxpYXNcPlxzXCtcKFx3XCs9XClcQD0iIHNraXA9IlxcJCIgZW5kPSI9IgogZW5kaWYKIAotIiBFcnJvciBDb2RlcwotIiA9PT09PT09PT09PQorIiBFcnJvciBDb2Rlczoge3t7MQorIiA9PT09PT09PT09PT0KIHN5biBtYXRjaCAgIHNoRG9FcnJvciAiXDxkb25lXD4iCiBzeW4gbWF0Y2ggICBzaElmRXJyb3IgIlw8ZmlcPiIKIHN5biBtYXRjaCAgIHNoSW5FcnJvciAiXDxpblw+IgpAQCAtMTEwLDI1ICsxMTEsMjUgQEAKIGVuZGlmCiBzeW4gbWF0Y2ggICAgIHNoVGVzdEVycm9yICJdIgogCi0iIE9wdGlvbnMgaW50ZXJjZXB0b3IKLSIgPT09PT09PT09PT09PT09PT09PQorIiBPcHRpb25zIEludGVyY2VwdG9yOiB7e3sxCisiID09PT09PT09PT09PT09PT09PT09CiBzeW4gbWF0Y2ggICBzaE9wdGlvbiAgIlxzW1wtK11bYS16QS1aMC05XVwrXD4ibXM9cysxCiBzeW4gbWF0Y2ggICBzaE9wdGlvbiAgIlxzLS1cU1wrIm1zPXMrMQogCi0iIE9wZXJhdG9yczoKLSIgPT09PT09PT09CisiIE9wZXJhdG9yczoge3t7MQorIiA9PT09PT09PT09CiBzeW4gbWF0Y2ggICBzaE9wZXJhdG9yCSJbISY7fF0iCiBzeW4gbWF0Y2ggICBzaE9wZXJhdG9yCSJcW1tbXjpdXHxcXV0iCiBzeW4gbWF0Y2ggICBzaE9wZXJhdG9yCSIhXD09IgkJc2tpcHdoaXRlIG5leHRncm91cD1zaFBhdHRlcm4KIHN5biBtYXRjaCAgIHNoUGF0dGVybgkiXDxcU1wrXCgpKVwpXEA9Igljb250YWluZWQgY29udGFpbnM9c2hTaW5nbGVRdW90ZSxzaERvdWJsZVF1b3RlLHNoRGVyZWYKIAotIiBTdWJzaGVsbHM6Ci0iID09PT09PT09PQorIiBTdWJzaGVsbHM6IHt7ezEKKyIgPT09PT09PT09PQogc3luIHJlZ2lvbiBzaEV4cHIgIHRyYW5zcGFyZW50IG1hdGNoZ3JvdXA9c2hFeHByUmVnaW9uICBzdGFydD0ieyIgZW5kPSJ9Igljb250YWlucz1Ac2hFeHByTGlzdDIKIHN5biByZWdpb24gc2hTdWJTaCB0cmFuc3BhcmVudCBtYXRjaGdyb3VwPXNoU3ViU2hSZWdpb24gc3RhcnQ9IigiIGVuZD0iKSIJY29udGFpbnM9QHNoU3ViU2hMaXN0CiAKLSIgVGVzdHMKLSI9PT09PT0KKyIgVGVzdHM6IHt7ezEKKyI9PT09PT09CiAic3luIHJlZ2lvbiAgc2hFeHByIHRyYW5zcGFyZW50IG1hdGNoZ3JvdXA9c2hSYW5nZSBzdGFydD0iXFsiIHNraXA9K1xcXFxcfFxcJCsgZW5kPSJcXSIgY29udGFpbnM9QHNoVGVzdExpc3QKIHN5biByZWdpb24gIHNoRXhwciBtYXRjaGdyb3VwPXNoUmFuZ2Ugc3RhcnQ9IlxbIiBza2lwPStcXFxcXHxcXCQrIGVuZD0iXF0iIGNvbnRhaW5zPUBzaFRlc3RMaXN0CiBzeW4gcmVnaW9uICBzaEV4cHIgdHJhbnNwYXJlbnQgbWF0Y2hncm91cD1zaFN0YXRlbWVudCBzdGFydD0iXDx0ZXN0XD4iIHNraXA9K1xcXFxcfFxcJCsgbWF0Y2hncm91cD1OT05FIGVuZD0iWzsmfF0ibWU9ZS0xIGVuZD0iJCIgY29udGFpbnM9QHNoRXhwckxpc3QxCkBAIC0xMzgsMTIgKzEzOSwxMiBAQAogIHN5biByZWdpb24gIHNoRGJsUGFyZW4gbWF0Y2hncm91cD1EZWxpbWl0ZXIgc3RhcnQ9IigoIiBza2lwPStcXFxcXHxcXCQrIGVuZD0iKSkiCWNvbnRhaW5zPUBzaFRlc3RMaXN0CiBlbmRpZgogCi0iIENoYXJhY3RlciBDbGFzcyBpbiBSYW5nZQotIiA9PT09PT09PT09PT09PT09PT09PT09PT0KKyIgQ2hhcmFjdGVyIENsYXNzIEluIFJhbmdlOiB7e3sxCisiID09PT09PT09PT09PT09PT09PT09PT09PT0KIHN5biBtYXRjaCAgIHNoQ2hhckNsYXNzCWNvbnRhaW5lZAkiXFs6XChiYWNrc3BhY2VcfGVzY2FwZVx8cmV0dXJuXHx4ZGlnaXRcfGFsbnVtXHxhbHBoYVx8YmxhbmtcfGNudHJsXHxkaWdpdFx8Z3JhcGhcfGxvd2VyXHxwcmludFx8cHVuY3RcfHNwYWNlXHx1cHBlclx8dGFiXCk6XF0iCiAKLSIgTG9vcHM6IGRvLCBpZiwgd2hpbGUsIHVudGlsCi0iID09PT09CisiIExvb3BzOiBkbywgaWYsIHdoaWxlLCB1bnRpbCB7e3sxCisiID09PT09PQogc3luIHJlZ2lvbiBzaERvCQl0cmFuc3BhcmVudCBtYXRjaGdyb3VwPXNoQ29uZGl0aW9uYWwgc3RhcnQ9Ilw8ZG9cPiIgbWF0Y2hncm91cD1zaENvbmRpdGlvbmFsIGVuZD0iXDxkb25lXD4iIGNvbnRhaW5zPUBzaExvb3BMaXN0CiBzeW4gcmVnaW9uIHNoSWYJCXRyYW5zcGFyZW50IG1hdGNoZ3JvdXA9c2hDb25kaXRpb25hbCBzdGFydD0iXDxpZlw+IiBtYXRjaGdyb3VwPXNoQ29uZGl0aW9uYWwgZW5kPSJcPDtcX3MqdGhlblw+IiBlbmQ9Ilw8ZmlcPiIgICBjb250YWlucz1Ac2hMb29wTGlzdCxzaERibEJyYWNlLHNoRGJsUGFyZW4KIHN5biByZWdpb24gc2hGb3IJbWF0Y2hncm91cD1zaExvb3Agc3RhcnQ9Ilw8Zm9yXD4iIGVuZD0iXDxpblw+IiBlbmQ9Ilw8ZG9cPiJtZT1lLTIJY29udGFpbnM9QHNoTG9vcExpc3Qsc2hEYmxQYXJlbgpAQCAtMTU3LDcgKzE1OCw3IEBACiAgc3luIHJlZ2lvbiBzaFJlcGVhdCAgIG1hdGNoZ3JvdXA9c2hMb29wICAgc3RhcnQ9Ilw8dW50aWxcPiIgZW5kPSJcPGRvXD4ibWU9ZS0yCQljb250YWlucz1Ac2hMb29wTGlzdAogZW5kaWYKIAotIiBDYXNlOiBjYXNlLi4uZXNhYworIiBDYXNlOiBjYXNlLi4uZXNhYyB7e3sxCiAiID09PT0KIHN5biBtYXRjaCAgIHNoQ2FzZUJhcgljb250YWluZWQgc2tpcHdoaXRlICJbXnwiYCcoKV1cey19fCJocz1lCQluZXh0Z3JvdXA9c2hDYXNlLHNoQ2FzZVN0YXJ0LHNoQ2FzZUJhcixzaENvbW1lbnQsc2hDYXNlU2luZ2xlUXVvdGUsc2hDYXNlRG91YmxlUXVvdGUKIHN5biBtYXRjaCAgIHNoQ2FzZVN0YXJ0CWNvbnRhaW5lZCBza2lwd2hpdGUgc2tpcG5sICIoIgkJCW5leHRncm91cD1zaENhc2Usc2hDYXNlQmFyCkBAIC0xNjgsMTEgKzE2OSwxMiBAQAogc3luIHJlZ2lvbiAgc2hDYXNlRG91YmxlUXVvdGUJbWF0Y2hncm91cD1zaE9wZXJhdG9yIHN0YXJ0PSsiKyBza2lwPStcXFxcXHxcXC4rIGVuZD0rIisJY29udGFpbnM9QHNoRGJsUXVvdGVMaXN0LHNoU3RyaW5nU3BlY2lhbAlza2lwd2hpdGUgc2tpcG5sIG5leHRncm91cD1zaENhc2VCYXIJY29udGFpbmVkCiBzeW4gcmVnaW9uICBzaENhc2VDb21tYW5kU3ViCXN0YXJ0PStgKyBza2lwPStcXFxcXHxcXC4rIGVuZD0rYCsJCWNvbnRhaW5zPUBzaENvbW1hbmRTdWJMaXN0CQlza2lwd2hpdGUgc2tpcG5sIG5leHRncm91cD1zaENhc2VCYXIJY29udGFpbmVkCiAKLSIgTWlzYwotIj09PT09CisiIE1pc2M6IHt7ezEKKyI9PT09PT0KIHN5biBtYXRjaCAgIHNoV3JhcExpbmVPcGVyYXRvciAiXFwkIgogc3luIHJlZ2lvbiAgc2hDb21tYW5kU3ViICAgc3RhcnQ9ImAiIHNraXA9IlxcXFxcfFxcLiIgZW5kPSJgIiBjb250YWlucz1Ac2hDb21tYW5kU3ViTGlzdAogCisiICQoKSBhbmQgJCgoKSk6IHt7ezEKICIgJCguLikgaXMgbm90IHN1cHBvcnRlZCBieSBzaCAoQm91cm5lIHNoZWxsKS4gIEhvd2V2ZXIsIGFwcGFyZW50bHkKICIgc29tZSBzeXN0ZW1zIChIUD8pIGhhdmUgYXMgdGhlaXIgL2Jpbi9zaCBhIChsaW5rIHRvKSBLb3JuIHNoZWxsCiAiIChpZS4gUG9zaXggY29tcGxpYW50IHNoZWxsKS4gIC9iaW4va3NoIHNob3VsZCB3b3JrIGZvciB0aG9zZQpAQCAtMjA1LDggKzIwNyw4IEBACiBzeW4gbWF0Y2ggICBzaFNvdXJjZQkiXHNcLlxzIgogc3luIHJlZ2lvbiAgc2hDb2xvbglzdGFydD0iXlxzKjoiIGVuZD0iJFx8IiBlbmQ9IiMibWU9ZS0xIGNvbnRhaW5zPUBzaENvbG9uTGlzdAogCi0iIFN0cmluZyBhbmQgQ2hhcmFjdGVyIGNvbnN0YW50cwotIj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyIgU3RyaW5nIEFuZCBDaGFyYWN0ZXIgQ29uc3RhbnRzOiB7e3sxCisiPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIHN5biBtYXRjaCAgIHNoTnVtYmVyCSItXD1cPFxkXCtcPiIKIHN5biBtYXRjaCAgIHNoU3BlY2lhbAkiXFxcZFxkXGRcfFxcW2FiY2ZucnR2MF0iCWNvbnRhaW5lZAogc3luIHJlZ2lvbiAgc2hTaW5nbGVRdW90ZQltYXRjaGdyb3VwPXNoT3BlcmF0b3Igc3RhcnQ9KycrIGVuZD0rJysJCWNvbnRhaW5zPXNoU3RyaW5nU3BlY2lhbApAQCAtMjE0LDIwICsyMTYsMjEgQEAKIHN5biBtYXRjaCAgIHNoU3RyaW5nU3BlY2lhbAkiW15bOnByaW50Ol1dIgljb250YWluZWQKIHN5biBtYXRjaCAgIHNoU3BlY2lhbAkiXFxbXFxcIlwnYCQoKSNdIgogCi0iIENvbW1lbnRzCi0iPT09PT09PT09CisiIENvbW1lbnRzOiB7e3sxCisiPT09PT09PT09PQogc3luIGNsdXN0ZXIgICAgc2hDb21tZW50R3JvdXAJY29udGFpbnM9c2hUb2RvLEBTcGVsbAogc3luIGtleXdvcmQgICAgc2hUb2RvCWNvbnRhaW5lZAlUT0RPCiBzeW4gbWF0Y2ggICAgICBzaENvbW1lbnQJIiMuKiQiIGNvbnRhaW5zPUBzaENvbW1lbnRHcm91cAogCi0iIEZpbGUgcmVkaXJlY3Rpb24gaGlnaGxpZ2h0ZWQgYXMgb3BlcmF0b3JzCi0iPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisiIEZpbGUgUmVkaXJlY3Rpb24gSGlnaGxpZ2h0ZWQgQXMgT3BlcmF0b3JzOiB7e3sxCisiPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogc3luIG1hdGNoICAgICAgc2hSZWRpcgkiXGRcPT5cKCZbLTAtOV1cKVw9Igogc3luIG1hdGNoICAgICAgc2hSZWRpcgkiXGRcPT4+LVw9Igogc3luIG1hdGNoICAgICAgc2hSZWRpcgkiXGRcPTxcKCZbLTAtOV1cKVw9Igogc3luIG1hdGNoICAgICAgc2hSZWRpcgkiXGQ8PC1cPSIKIAotIiBTaGVsbCBJbnB1dCBSZWRpcmVjdGlvbiAoSGVyZSBEb2N1bWVudHMpCisiIEhlcmUgRG9jdW1lbnRzOiB7e3sxCisiID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiBpZiB2ZXJzaW9uIDwgNjAwCiAgc3luIHJlZ2lvbiBzaEhlcmVEb2MgbWF0Y2hncm91cD1zaFJlZGlyIHN0YXJ0PSI8PFxzKlwqKkVORFthLXpBLVpfMC05XSpcKioiICBtYXRjaGdyb3VwPXNoUmVkaXIgZW5kPSJeRU5EW2EtekEtWl8wLTldKiQiIGNvbnRhaW5zPUBzaERibFF1b3RlTGlzdAogIHN5biByZWdpb24gc2hIZXJlRG9jIG1hdGNoZ3JvdXA9c2hSZWRpciBzdGFydD0iPDwtXHMqXCoqRU5EW2EtekEtWl8wLTldKlwqKiIgbWF0Y2hncm91cD1zaFJlZGlyIGVuZD0iXlxzKkVORFthLXpBLVpfMC05XSokIiBjb250YWlucz1Ac2hEYmxRdW90ZUxpc3QKQEAgLTI5OCwxMyArMzAxLDE2IEBACiAgIHN5biBtYXRjaCAgc2hCZWdpbkxpbmUgIi4qJCIJCWNvbnRhaW5lZAlza2lwbmwJbmV4dGdyb3VwPXNoSGVyZVBheWxvYWQJY29udGFpbnM9QHNoQ29tbWFuZFN1Ykxpc3QKICAgc3luIG1hdGNoICBzaEJlZ2luSGVyZSAiPDwtXD1ccypcU1wrIgljb250YWluZWQJCW5leHRncm91cD1zaEJlZ2luTGluZQogIGVuZGlmCi0gaWYgZXhpc3RzKCJiOmlzX2Jhc2giKQotICBzeW4gbWF0Y2ggc2hSZWRpciAiPDw8IgotIGVuZGlmCiBlbmRpZgogCi0iIElkZW50aWZpZXJzCi0iPT09PT09PT09PT09CisiIEhlcmUgU3RyaW5nczoge3t7MQorIiA9PT09PT09PT09PT09CitpZiBleGlzdHMoImI6aXNfYmFzaCIpCisgc3luIG1hdGNoIHNoUmVkaXIgIjw8PCIKK2VuZGlmCisKKyIgSWRlbnRpZmllcnM6IHt7ezEKKyI9PT09PT09PT09PT09CiBzeW4gbWF0Y2ggIHNoVmFyaWFibGUgIlw8XChbYndnbHNhdl06XClcPVthLXpBLVowLTkuIUBfJSssXSpcemU9IgluZXh0Z3JvdXA9c2hTZXRJZGVudGlmaWVyCiBzeW4gbWF0Y2ggIHNoSWRXaGl0ZVNwYWNlICBjb250YWluZWQJIlxzIgogc3luIG1hdGNoICBzaFNldElkZW50aWZpZXIgY29udGFpbmVkCSI9IgluZXh0Z3JvdXA9c2hQYXR0ZXJuLHNoRGVyZWYsc2hEZXJlZlNpbXBsZSxzaERvdWJsZVF1b3RlLHNoU2luZ2xlUXVvdGUKQEAgLTMyMSw2ICszMjcsNyBAQAogICBzeW4gbWF0Y2ggIHNoU3RhdGVtZW50ICJcPFwoc2V0XHxleHBvcnRcfHVuc2V0XCkkIgogZW5kaWYKIAorIiBGdW5jdGlvbnM6IHt7ezEKICIgaGFuZGxlcyBmdW5jdGlvbnMgd2hpY2ggc3RhcnQ6ICBGdW5jdGlvbiAoKSB7CiAiICAgQXBwYXJlbnRseSBCb3VybmUgc2hlbGwgYWNjZXB0cyBmdW5jdGlvbnMgdG9vLAogIiAgIGV2ZW4gdGhvdWdoIGl0IGlzbid0IGRvY3VtZW50ZWQgYnkgbXkgbWFuIHBhZ2VzCkBAIC0zMzUsOCArMzQyLDggQEAKIHN5biBtYXRjaCBia3NoRnVuY3Rpb25QYXJlbgkiWygpXSIJY29udGFpbmVkCiBzeW4gbWF0Y2ggYmtzaEZ1bmN0aW9uRGVsaW0JIlt7fV0iCWNvbnRhaW5lZAogCi0iIFBhcmFtZXRlciBEZXJlZmVyZW5jaW5nCi0iID09PT09PT09PT09PT09PT09PT09PT09CisiIFBhcmFtZXRlciBEZXJlZmVyZW5jaW5nOiB7e3sxCisiID09PT09PT09PT09PT09PT09PT09PT09PQogc3luIG1hdGNoICBzaERlcmVmU2ltcGxlCSJcJFx3XCsiCiBzeW4gcmVnaW9uIHNoRGVyZWYJbWF0Y2hncm91cD1QcmVQcm9jIHN0YXJ0PSJcJHsiIGVuZD0ifSIJY29udGFpbnM9QHNoRGVyZWZMaXN0LHNoRGVyZWZWYXJBcnJheQogc3luIG1hdGNoICBzaERlcmVmV29yZEVycm9yCSJbXn0kW10iCWNvbnRhaW5lZApAQCAtMzQ2LDggKzM1Myw4IEBACiAgc3luIHJlZ2lvbiBzaERlcmVmCW1hdGNoZ3JvdXA9UHJlUHJvYyBzdGFydD0iXCR7IyNcPSIgZW5kPSJ9Igljb250YWlucz1Ac2hEZXJlZkxpc3QKIGVuZGlmCiAKLSIgYmFzaCA6ICR7IXByZWZpeCp9Ci0iIGJhc2ggOiAkeyNwYXJhbWV0ZXJ9CisiIGJhc2g6ICR7IXByZWZpeCp9IGFuZCAkeyNwYXJhbWV0ZXJ9OiB7e3sxCisiID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogaWYgZXhpc3RzKCJiOmlzX2Jhc2giKQogIHN5biByZWdpb24gc2hEZXJlZgltYXRjaGdyb3VwPVByZVByb2Mgc3RhcnQ9IlwkeyEiIGVuZD0iXCpcPX0iCWNvbnRhaW5zPUBzaERlcmVmTGlzdCxzaERlcmVmT3AKICBzeW4gbWF0Y2ggIHNoRGVyZWZWYXIJY29udGFpbmVkCSJ7XEA8PSFcd1wrIgkJbmV4dGdyb3VwPUBzaERlcmVmVmFyTGlzdApAQCAtMzU3LDkgKzM2NCwxMCBAQAogc3luIG1hdGNoICBzaERlcmVmU3BlY2lhbAljb250YWluZWQJIlwoe1sjIV1cKVxAPD1bWzphbG51bTpdKkBfXVwrIgluZXh0Z3JvdXA9QHNoRGVyZWZWYXJMaXN0LHNoRGVyZWZPcAogc3luIG1hdGNoICBzaERlcmVmVmFyCWNvbnRhaW5lZAkie1xAPD1cd1wrIgkJbmV4dGdyb3VwPUBzaERlcmVmVmFyTGlzdAogCi0iIHNoIGtzaCBiYXNoIDogJHt2YXJbLi4uIF0uLi59ICBhcnJheSByZWZlcmVuY2UKKyIgc2gga3NoIGJhc2ggOiAke3ZhclsuLi4gXS4uLn0gIGFycmF5IHJlZmVyZW5jZToge3t7MQogc3luIHJlZ2lvbiAgc2hEZXJlZlZhckFycmF5ICAgY29udGFpbmVkCW1hdGNoZ3JvdXA9c2hEZXJlZiBzdGFydD0iXFsiIGVuZD0iXSIJY29udGFpbnM9QHNoQ29tbWFuZFN1Ykxpc3QgbmV4dGdyb3VwPXNoRGVyZWZPcCxzaERlcmVmT3BFcnJvcgogCisiIFNwZWNpYWwgJHtwYXJhbWV0ZXIgT1BFUkFUT1Igd29yZH0gaGFuZGxpbmc6IHt7ezEKICIgc2gga3NoIGJhc2ggOiAke3BhcmFtZXRlcjotd29yZH0gICAgd29yZCBpcyBkZWZhdWx0IHZhbHVlCiAiIHNoIGtzaCBiYXNoIDogJHtwYXJhbWV0ZXI6PXdvcmR9ICAgIGFzc2lnbiB3b3JkIGFzIGRlZmF1bHQgdmFsdWUKICIgc2gga3NoIGJhc2ggOiAke3BhcmFtZXRlcjo/d29yZH0gICAgZGlzcGxheSB3b3JkIGlmIHBhcmFtZXRlciBpcyBudWxsCkBAIC0zOTUsMTUgKzQwMywyMCBAQAogIHN5biBtYXRjaCAgc2hEZXJlZlBhdFN0cmluZwljb250YWluZWQJIltefV1cezEsfSIKIGVuZGlmCiAKLSIgQSBidW5jaCBvZiB1c2VmdWwgc2gga2V5d29yZHMKKyIgVXNlZnVsIHNoIEtleXdvcmRzOiB7e3sxCisiID09PT09PT09PT09PT09PT09PT0KIHN5biBrZXl3b3JkIHNoU3RhdGVtZW50IGJyZWFrIGNkIGNoZGlyIGNvbnRpbnVlIGV2YWwgZXhlYyBleGl0IGtpbGwgbmV3Z3JwIHB3ZCByZWFkIHJlYWRvbmx5IHJldHVybiBzaGlmdCB0ZXN0IHRyYXAgdWxpbWl0IHVtYXNrIHdhaXQKIHN5biBrZXl3b3JkIHNoQ29uZGl0aW9uYWwgY29udGFpbmVkIGVsaWYgZWxzZSB0aGVuCiBzeW4ga2V5d29yZCBzaENvbmRFcnJvciBlbGlmIGVsc2UgdGhlbgogCisiIFVzZWZ1bCBrc2ggS2V5d29yZHM6IHt7ezEKKyIgPT09PT09PT09PT09PT09PT09PT0KIGlmIGV4aXN0cygiYjppc19rb3Juc2hlbGwiKSB8fCBleGlzdHMoImI6aXNfYmFzaCIpCiAgc3luIGtleXdvcmQgc2hGdW5jdGlvbglmdW5jdGlvbgogIHN5biBrZXl3b3JkIHNoU3RhdGVtZW50IGF1dG9sb2FkIGJnIGZhbHNlIGZjIGZnIGZ1bmN0aW9ucyBnZXRvcHRzIGhhc2ggaGlzdG9yeSBpbnRlZ2VyIGpvYnMgbGV0IG5vaHVwIHByaW50IHByaW50ZiByIHN0b3Agc3VzcGVuZCB0aW1lIHRpbWVzIHRydWUgdHlwZSB1bmFsaWFzIHdoZW5jZQogCisiIFVzZWZ1bCBiYXNoIEtleXdvcmRzOiB7e3sxCisiID09PT09PT09PT09PT09PT09PT09PQogIGlmIGV4aXN0cygiYjppc19iYXNoIikKICAgc3luIGtleXdvcmQgc2hTdGF0ZW1lbnQgYmluZCBidWlsdGluIGRpcnMgZGlzb3duIGVuYWJsZSBoZWxwIGxvY2FsIGxvZ291dCBwb3BkIHB1c2hkIHNob3B0IHNvdXJjZQogIGVsc2UKQEAgLTQxMSw4ICs0MjQsOCBAQAogIGVuZGlmCiBlbmRpZgogCi0iIFN5bmNzCi0iID09PT09CisiIFN5bmNocm9uaXphdGlvbjoge3t7MQorIiA9PT09PT09PT09PT09PT09CiBpZiAhZXhpc3RzKCJzaF9taW5saW5lcyIpCiAgIGxldCBzaF9taW5saW5lcyA9IDIwMAogZW5kaWYKQEAgLTQzMSw3ICs0NDQsOCBAQAogc3luIHN5bmMgbWF0Y2ggc2hVbnRpbFN5bmMJZ3JvdXBoZXJlCXNoUmVwZWF0CSJcPHVudGlsXD4iCiBzeW4gc3luYyBtYXRjaCBzaFdoaWxlU3luYwlncm91cGhlcmUJc2hSZXBlYXQJIlw8d2hpbGVcPiIKIAotIiBUaGUgZGVmYXVsdCBoaWdobGlnaHRpbmcuCisiIERlZmF1bHQgSGlnaGxpZ2h0aW5nOiB7e3sxCisiID09PT09PT09PT09PT09PT09PT09PQogaGkgZGVmIGxpbmsgc2hBcml0aFJlZ2lvbglzaFNoZWxsVmFyaWFibGVzCiBoaSBkZWYgbGluayBzaENhc2VCYXIJc2hDb25kaXRpb25hbAogaGkgZGVmIGxpbmsgc2hDYXNlSW4Jc2hDb25kaXRpb25hbApAQCAtNTI1LDggKzUzOSw4IEBACiBoaSBkZWYgbGluayBzaFRvZG8JCVRvZG8KIGhpIGRlZiBsaW5rIHNoQWxpYXMJCUlkZW50aWZpZXIKIAotIiBDdXJyZW50IFN5bnRheAotIiA9PT09PT09PT09PT09PQorIiBTZXQgQ3VycmVudCBTeW50YXg6IHt7ezEKKyIgPT09PT09PT09PT09PT09PT09PQogaWYgZXhpc3RzKCJiOmlzX2Jhc2giKQogIGxldCBiOmN1cnJlbnRfc3ludGF4ID0gImJhc2giCiBlbHNlaWYgZXhpc3RzKCJiOmlzX2tvcm5zaGVsbCIpCkBAIC01MzUsNCArNTQ5LDQgQEAKICBsZXQgYjpjdXJyZW50X3N5bnRheCA9ICJzaCIKIGVuZGlmCiAKLSIgdmltOiB0cz0xNgorIiB2aW06IHRzPTE2IGZkbT1tYXJrZXIKZGlmZiAtLWdpdCBhL3J1bnRpbWUvc3ludGF4L3NxbGluZm9ybWl4LnZpbSBiL3J1bnRpbWUvc3ludGF4L3NxbGluZm9ybWl4LnZpbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iNGQwMjM2Ci0tLSAvZGV2L251bGwKKysrIGIvcnVudGltZS9zeW50YXgvc3FsaW5mb3JtaXgudmltCkBAIC0wLDAgKzEsMTk2IEBACisiIFZpbSBzeW50YXggZmlsZQorIiBJbmZvcm1peCBTdHJ1Y3R1cmVkIFF1ZXJ5IExhbmd1YWdlIChTUUwpIGFuZCBTdG9yZWQgUHJvY2VkdXJlIExhbmd1YWdlIChTUEwpCisiIExhbmd1YWdlOglTUUwsIFNQTCAoSW5mb3JtaXggRHluYW1pYyBTZXJ2ZXIgMjAwMCB2OS4yKQorIiBNYWludGFpbmVyOglEZWFuIEhpbGwgPGRoaWxsQGhvdG1haWwuY29tPgorIiBMYXN0IENoYW5nZToJMjAwNCBBdWcgMzAKKworIiBGb3IgdmVyc2lvbiA1Lng6IENsZWFyIGFsbCBzeW50YXggaXRlbXMKKyIgRm9yIHZlcnNpb24gNi54OiBRdWl0IHdoZW4gYSBzeW50YXggZmlsZSB3YXMgYWxyZWFkeSBsb2FkZWQKK2lmIHZlcnNpb24gPCA2MDAKKyAgc3ludGF4IGNsZWFyCitlbHNlaWYgZXhpc3RzKCJiOmN1cnJlbnRfc3ludGF4IikKKyAgZmluaXNoCitlbmRpZgorCitzeW4gY2FzZSBpZ25vcmUKKworCisKKyIgPT09IENvbW1lbnQgc3ludGF4IGdyb3VwID09PQorc3luIHJlZ2lvbiBzcWxDb21tZW50ICAgIHN0YXJ0PSJ7IiAgZW5kPSJ9IiBjb250YWlucz1zcWxUb2RvCitzeW4gbWF0Y2ggc3FsQ29tbWVudAkiLS0uKiQiIGNvbnRhaW5zPXNxbFRvZG8KK3N5biBzeW5jIGNjb21tZW50IHNxbENvbW1lbnQKKworCisKKyIgPT09IENvbnN0YW50IHN5bnRheCBncm91cCA9PT0KKyIgPSBCb29sZWFuIHN1Ymdyb3VwID0KK3N5biBrZXl3b3JkIHNxbEJvb2xlYW4gIHRydWUgZmFsc2UKK3N5biBrZXl3b3JkIHNxbEJvb2xlYW4gIG51bGwKK3N5biBrZXl3b3JkIHNxbEJvb2xlYW4gIHB1YmxpYyB1c2VyCitzeW4ga2V5d29yZCBzcWxCb29sZWFuICBjdXJyZW50IHRvZGF5CitzeW4ga2V5d29yZCBzcWxCb29sZWFuICB5ZWFyIG1vbnRoIGRheSBob3VyIG1pbnV0ZSBzZWNvbmQgZnJhY3Rpb24KKworIiA9IFN0cmluZyBzdWJncm91cCA9CitzeW4gcmVnaW9uIHNxbFN0cmluZwkJc3RhcnQ9KyIrICBlbmQ9KyIrCitzeW4gcmVnaW9uIHNxbFN0cmluZwkJc3RhcnQ9KycrICBlbmQ9KycrCisKKyIgPSBOdW1iZXJzIHN1Ymdyb3VwID0KK3N5biBtYXRjaCBzcWxOdW1iZXIJCSItXD1cPFxkKlwuXD1bMC05X11cPiIKKworCisKKyIgPT09IFN0YXRlbWVudCBzeW50YXggZ3JvdXAgPT09CisiIFNRTAorc3luIGtleXdvcmQgc3FsU3RhdGVtZW50IGFsbG9jYXRlIGFsdGVyCitzeW4ga2V5d29yZCBzcWxTdGF0ZW1lbnQgYmVnaW4KK3N5biBrZXl3b3JkIHNxbFN0YXRlbWVudCBjbG9zZSBjb21taXQgY29ubmVjdCBjcmVhdGUKK3N5biBrZXl3b3JkIHNxbFN0YXRlbWVudCBkYXRhYmFzZSBkZWFsbG9jYXRlIGRlY2xhcmUgZGVsZXRlIGRlc2NyaWJlIGRpc2Nvbm5lY3QgZHJvcAorc3luIGtleXdvcmQgc3FsU3RhdGVtZW50IGV4ZWN1dGUgZmV0Y2ggZmx1c2ggZnJlZSBnZXQgZ3JhbnQgaW5mbyBpbnNlcnQKK3N5biBrZXl3b3JkIHNxbFN0YXRlbWVudCBsb2FkIGxvY2sgb3BlbiBvdXRwdXQKK3N5biBrZXl3b3JkIHNxbFN0YXRlbWVudCBwcmVwYXJlIHB1dAorc3luIGtleXdvcmQgc3FsU3RhdGVtZW50IHJlbmFtZSByZXZva2Ugcm9sbGJhY2sgc2VsZWN0IHNldCBzdGFydCBzdG9wCitzeW4ga2V5d29yZCBzcWxTdGF0ZW1lbnQgdHJ1bmNhdGUgdW5sb2FkIHVubG9jayB1cGRhdGUKK3N5biBrZXl3b3JkIHNxbFN0YXRlbWVudCB3aGVuZXZlcgorIiBTUEwKK3N5biBrZXl3b3JkIHNxbFN0YXRlbWVudCBjYWxsIGNvbnRpbnVlIGRlZmluZQorc3luIGtleXdvcmQgc3FsU3RhdGVtZW50IGV4aXQKK3N5biBrZXl3b3JkIHNxbFN0YXRlbWVudCBsZXQKK3N5biBrZXl3b3JkIHNxbFN0YXRlbWVudCByZXR1cm4gc3lzdGVtIHRyYWNlCisKKyIgPSBDb25kaXRpb25hbCBzdWJncm91cCA9CisiIFNQTAorc3luIGtleXdvcmQgc3FsQ29uZGl0aW9uYWwgZWxpZiBlbHNlIGlmIHRoZW4KK3N5biBrZXl3b3JkIHNxbENvbmRpdGlvbmFsIGNhc2UKKyIgSGlnaGxpZ2h0ICJlbmQgaWYiIHdpdGggb25lIG9yIG1vcmUgc2VwYXJhdGluZyBzcGFjZXMKK3N5biBtYXRjaCAgc3FsQ29uZGl0aW9uYWwgImVuZCBcK2lmIgorCisiID0gUmVwZWF0IHN1Ymdyb3VwID0KKyIgU1FML1NQTAorIiBIYW5kbGUgU1FMIHRyaWdnZXJzJyAiZm9yIGVhY2ggcm93IiBjbGF1c2UgYW5kIFNQTCAiZm9yIiBsb29wCitzeW4gbWF0Y2ggIHNxbFJlcGVhdCAiZm9yXCggXCtlYWNoIFwrcm93XClcPSIKKyIgU1BMCitzeW4ga2V5d29yZCBzcWxSZXBlYXQgZm9yZWFjaCB3aGlsZQorIiBIaWdobGlnaHQgImVuZCBmb3IiLCBldGMuIHdpdGggb25lIG9yIG1vcmUgc2VwYXJhdGluZyBzcGFjZXMKK3N5biBtYXRjaCAgc3FsUmVwZWF0ICJlbmQgXCtmb3IiCitzeW4gbWF0Y2ggIHNxbFJlcGVhdCAiZW5kIFwrZm9yZWFjaCIKK3N5biBtYXRjaCAgc3FsUmVwZWF0ICJlbmQgXCt3aGlsZSIKKworIiA9IEV4Y2VwdGlvbiBzdWJncm91cCA9CisiIFNQTAorc3luIG1hdGNoICBzcWxFeGNlcHRpb24gIm9uIFwrZXhjZXB0aW9uIgorc3luIG1hdGNoICBzcWxFeGNlcHRpb24gImVuZCBcK2V4Y2VwdGlvbiIKK3N5biBtYXRjaCAgc3FsRXhjZXB0aW9uICJlbmQgXCtleGNlcHRpb24gXCt3aXRoIFwrcmVzdW1lIgorc3luIG1hdGNoICBzcWxFeGNlcHRpb24gInJhaXNlIFwrZXhjZXB0aW9uIgorCisiID0gS2V5d29yZCBzdWJncm91cCA9CisiIFNRTAorc3luIGtleXdvcmQgc3FsS2V5d29yZCBhZ2dyZWdhdGUgYWRkIGFzIGF1dGhvcml6YXRpb24gYXV0b2ZyZWUgYnkKK3N5biBrZXl3b3JkIHNxbEtleXdvcmQgY2FjaGUgY2FzY2FkZSBjaGVjayBjbHVzdGVyIGNvbGxhdGlvbgorc3luIGtleXdvcmQgc3FsS2V5d29yZCBjb2x1bW4gY29ubmVjdGlvbiBjb25zdHJhaW50IGNyb3NzCitzeW4ga2V5d29yZCBzcWxLZXl3b3JkIGRhdGFza2lwIGRlYnVnIGRlZmF1bHQgZGVmZXJyZWRfcHJlcGFyZQorc3luIGtleXdvcmQgc3FsS2V5d29yZCBkZXNjcmlwdG9yIGRpYWdub3N0aWNzCitzeW4ga2V5d29yZCBzcWxLZXl3b3JkIGVhY2ggZXNjYXBlIGV4cGxhaW4gZXh0ZXJuYWwKK3N5biBrZXl3b3JkIHNxbEtleXdvcmQgZmlsZSBmb3JlaWduIGZyYWdtZW50IGZyb20gZnVuY3Rpb24KK3N5biBrZXl3b3JkIHNxbEtleXdvcmQgZ3JvdXAgaGF2aW5nCitzeW4ga2V5d29yZCBzcWxLZXl3b3JkIGltbWVkaWF0ZSBpbmRleCBpbm5lciBpbnRvIGlzb2xhdGlvbgorc3luIGtleXdvcmQgc3FsS2V5d29yZCBqb2luIGtleQorc3luIGtleXdvcmQgc3FsS2V5d29yZCBsZWZ0IGxldmVsIGxvZworc3luIGtleXdvcmQgc3FsS2V5d29yZCBtb2RlIG1vZGlmeSBtb3VudGluZyBuZXcgbm8KK3N5biBrZXl3b3JkIHNxbEtleXdvcmQgb2JqZWN0IG9mIG9sZCBvcHRpY2FsIG9wdGlvbgorc3luIGtleXdvcmQgc3FsS2V5d29yZCBvcHRpbWl6YXRpb24gb3JkZXIgb3V0ZXIKK3N5biBrZXl3b3JkIHNxbEtleXdvcmQgcGRxcHJpb3JpdHkgcGxvYWQgcHJpbWFyeSBwcm9jZWR1cmUKK3N5biBrZXl3b3JkIHNxbEtleXdvcmQgcmVmZXJlbmNlcyByZWZlcmVuY2luZyByZWxlYXNlIHJlc2VydmUKK3N5biBrZXl3b3JkIHNxbEtleXdvcmQgcmVzaWRlbmN5IHJpZ2h0IHJvbGUgcm91dGluZSByb3cKK3N5biBrZXl3b3JkIHNxbEtleXdvcmQgc2NoZWR1bGUgc2NoZW1hIHNjcmF0Y2ggc2Vzc2lvbiBzZXQKK3N5biBrZXl3b3JkIHNxbEtleXdvcmQgc3RhdGVtZW50IHN0YXRpc3RpY3Mgc3lub255bQorc3luIGtleXdvcmQgc3FsS2V5d29yZCB0YWJsZSB0ZW1wIHRlbXBvcmFyeSB0aW1lb3V0IHRvIHRyYW5zYWN0aW9uIHRyaWdnZXIKK3N5biBrZXl3b3JkIHNxbEtleXdvcmQgdXNpbmcgdmFsdWVzIHZpZXcgdmlvbGF0aW9ucworc3luIGtleXdvcmQgc3FsS2V5d29yZCB3aGVyZSB3aXRoIHdvcmsKKyIgSGlnaGxpZ2h0ICJvbiIgKGlmIGl0J3Mgbm90IGZvbGxvd2VkIGJ5IHNvbWUgd29yZHMgd2UndmUgYWxyZWFkeSBoYW5kbGVkKQorc3luIG1hdGNoIHNxbEtleXdvcmQgIm9uIFwrXChleGNlcHRpb25cKVxAISIKKyIgU1BMCisiIEhpZ2hsaWdodCAiZW5kIiAoaWYgaXQncyBub3QgZm9sbG93ZWQgYnkgc29tZSB3b3JkcyB3ZSd2ZSBhbHJlYWR5IGhhbmRsZWQpCitzeW4gbWF0Y2ggc3FsS2V5d29yZCAiZW5kIFwrXChpZlx8Zm9yXHxmb3JlYWNoXHx3aGlsZVx8ZXhjZXB0aW9uXClcQCEiCitzeW4ga2V5d29yZCBzcWxLZXl3b3JkIHJlc3VtZSByZXR1cm5pbmcKKworIiA9IE9wZXJhdG9yIHN1Ymdyb3VwID0KKyIgU1FMCitzeW4ga2V5d29yZCBzcWxPcGVyYXRvcglub3QgYW5kIG9yCitzeW4ga2V5d29yZCBzcWxPcGVyYXRvcglpbiBpcyBhbnkgc29tZSBhbGwgYmV0d2VlbiBleGlzdHMKK3N5biBrZXl3b3JkIHNxbE9wZXJhdG9yCWxpa2UgbWF0Y2hlcworc3luIGtleXdvcmQgc3FsT3BlcmF0b3IgdW5pb24gaW50ZXJzZWN0CitzeW4ga2V5d29yZCBzcWxPcGVyYXRvciBkaXN0aW5jdCB1bmlxdWUKKworCisKKyIgPT09IElkZW50aWZpZXIgc3ludGF4IGdyb3VwID09PQorIiA9IEZ1bmN0aW9uIHN1Ymdyb3VwID0KKyIgU1FMCitzeW4ga2V5d29yZCBzcWxGdW5jdGlvbglhYnMgYWNvcyBhc2luIGF0YW4gYXRhbjIgYXZnCitzeW4ga2V5d29yZCBzcWxGdW5jdGlvbgljYXJkaW5hbGl0eSBjYXN0IGNoYXJfbGVuZ3RoIGNoYXJhY3Rlcl9sZW5ndGggY29zIGNvdW50CitzeW4ga2V5d29yZCBzcWxGdW5jdGlvbglleHAgZmlsZXRvYmxvYiBmaWxldG9jbG9iIGhleAorc3luIGtleXdvcmQgc3FsRnVuY3Rpb24JaW5pdGNhcCBsZW5ndGggbG9nbiBsb2cxMCBsb3dlciBscGFkCitzeW4ga2V5d29yZCBzcWxGdW5jdGlvbgltaW4gbWF4IG1vZCBvY3RldF9sZW5ndGggcG93IHJhbmdlIHJlcGxhY2Ugcm9vdCByb3VuZCBycGFkCitzeW4ga2V5d29yZCBzcWxGdW5jdGlvbglzaW4gc3FydCBzdGRldiBzdWJzdHIgc3Vic3RyaW5nIHN1bQorc3luIGtleXdvcmQgc3FsRnVuY3Rpb24JdG9fY2hhciB0YW4gdG9fZGF0ZSB0cmltIHRydW5jIHVwcGVyIHZhcmlhbmNlCisKKworCisiID09PSBUeXBlIHN5bnRheCBncm91cCA9PT0KKyIgU1FMCitzeW4ga2V5d29yZCBzcWxUeXBlCWJsb2IgYm9vbGVhbiBieXRlIGNoYXIgY2hhcmFjdGVyIGNsb2IKK3N5biBrZXl3b3JkIHNxbFR5cGUJZGF0ZSBkYXRldGltZSBkZWMgZGVjaW1hbCBkb3VibGUKK3N5biBrZXl3b3JkIHNxbFR5cGUJZmxvYXQgaW50IGludDggaW50ZWdlciBpbnRlcnZhbCBsaXN0IGx2YXJjaGFyCitzeW4ga2V5d29yZCBzcWxUeXBlCW1vbmV5IG11bHRpc2V0IG5jaGFyIG51bWVyaWMgbnZhcmNoYXIKK3N5biBrZXl3b3JkIHNxbFR5cGUJcmVhbCBzZXJpYWwgc2VyaWFsOCBzbWFsbGZsb2F0IHNtYWxsaW50CitzeW4ga2V5d29yZCBzcWxUeXBlCXRleHQgdmFyY2hhciB2YXJ5aW5nCisKKworCisiID09PSBUb2RvIHN5bnRheCBncm91cCA9PT0KK3N5biBrZXl3b3JkIHNxbFRvZG8gVE9ETyBGSVhNRSBYWFggREVCVUcgTk9URQorCisKKworIiBEZWZpbmUgdGhlIGRlZmF1bHQgaGlnaGxpZ2h0aW5nLgorIiBGb3IgdmVyc2lvbiA1LjcgYW5kIGVhcmxpZXI6IG9ubHkgd2hlbiBub3QgZG9uZSBhbHJlYWR5CisiIEZvciB2ZXJzaW9uIDUuOCBhbmQgbGF0ZXI6IG9ubHkgd2hlbiBhbiBpdGVtIGRvZXNuJ3QgaGF2ZSBoaWdobGlnaHRpbmcgeWV0CitpZiB2ZXJzaW9uID49IDUwOCB8fCAhZXhpc3RzKCJkaWRfc3FsX3N5bl9pbml0cyIpCisgIGlmIHZlcnNpb24gPCA1MDgKKyAgICBsZXQgZGlkX3NxbF9zeW5faW5pdHMgPSAxCisgICAgY29tbWFuZCAtbmFyZ3M9KyBIaUxpbmsgaGkgbGluayA8YXJncz4KKyAgZWxzZQorICAgIGNvbW1hbmQgLW5hcmdzPSsgSGlMaW5rIGhpIGRlZiBsaW5rIDxhcmdzPgorICBlbmRpZgorCisKKyAgIiA9PT0gQ29tbWVudCBzeW50YXggZ3JvdXAgPT09CisgIEhpTGluayBzcWxDb21tZW50CUNvbW1lbnQKKworICAiID09PSBDb25zdGFudCBzeW50YXggZ3JvdXAgPT09CisgIEhpTGluayBzcWxOdW1iZXIJTnVtYmVyCisgIEhpTGluayBzcWxCb29sZWFuCUJvb2xlYW4KKyAgSGlMaW5rIHNxbFN0cmluZwlTdHJpbmcKKworICAiID09PSBTdGF0bWVudCBzeW50YXggZ3JvdXAgPT09CisgIEhpTGluayBzcWxTdGF0ZW1lbnQJU3RhdGVtZW50CisgIEhpTGluayBzcWxDb25kaXRpb25hbAlDb25kaXRpb25hbAorICBIaUxpbmsgc3FsUmVwZWF0CQlSZXBlYXQKKyAgSGlMaW5rIHNxbEtleXdvcmQJCUtleXdvcmQKKyAgSGlMaW5rIHNxbE9wZXJhdG9yCU9wZXJhdG9yCisgIEhpTGluayBzcWxFeGNlcHRpb24JRXhjZXB0aW9uCisKKyAgIiA9PT0gSWRlbnRpZmllciBzeW50YXggZ3JvdXAgPT09CisgIEhpTGluayBzcWxGdW5jdGlvbglGdW5jdGlvbgorCisgICIgPT09IFR5cGUgc3ludGF4IGdyb3VwID09PQorICBIaUxpbmsgc3FsVHlwZQlUeXBlCisKKyAgIiA9PT0gVG9kbyBzeW50YXggZ3JvdXAgPT09CisgIEhpTGluayBzcWxUb2RvCVRvZG8KKworICBkZWxjb21tYW5kIEhpTGluaworZW5kaWYKKworbGV0IGI6Y3VycmVudF9zeW50YXggPSAic3FsaW5mb3JtaXgiCmRpZmYgLS1naXQgYS9ydW50aW1lL3N5bnRheC9zeW5sb2FkLnZpbSBiL3J1bnRpbWUvc3ludGF4L3N5bmxvYWQudmltCmluZGV4IGY4MTZiYzIuLjY1MmNkYmEgMTAwNjQ0Ci0tLSBhL3J1bnRpbWUvc3ludGF4L3N5bmxvYWQudmltCisrKyBiL3J1bnRpbWUvc3ludGF4L3N5bmxvYWQudmltCkBAIC0xLDYgKzEsNiBAQAogIiBWaW0gc3ludGF4IHN1cHBvcnQgZmlsZQogIiBNYWludGFpbmVyOglCcmFtIE1vb2xlbmFhciA8QnJhbUB2aW0ub3JnPgotIiBMYXN0IENoYW5nZToJMjAwMSBNYXkgMjEKKyIgTGFzdCBDaGFuZ2U6CTIwMDQgQXVnIDI4CiAKICIgVGhpcyBmaWxlIHNldHMgdXAgZm9yIHN5bnRheCBoaWdobGlnaHRpbmcuCiAiIEl0IGlzIGxvYWRlZCBmcm9tICJzeW50YXgudmltIiBhbmQgIm1hbnVhbC52aW0iLgpAQCAtNTAsMTUgKzUwLDI1IEBACiAKICAgaWYgcyAhPSAiIgogICAgICIgTG9hZCB0aGUgc3ludGF4IGZpbGUocykKLSIgICBpZiBoYXMoIm1hYyIpCi0iICAgICBleGUgInJ1bnRpbWUhIHN5bnRheDoiIC4gcyAuICIudmltIgotIiAgIGVsc2UKLSAgICAgIGV4ZSAicnVudGltZSEgc3ludGF4LyIgLiBzIC4gIi52aW0iCi0iICAgZW5kaWYKKyAgICBleGUgInJ1bnRpbWUhIHN5bnRheC8iIC4gcyAuICIudmltIgogICBlbmRpZgogZW5kZnVuCiAKIAorIiBIYW5kbGUgYWRkaW5nIGRveHlnZW4gdG8gb3RoZXIgbGFuZ3VhZ2VzIChDLCBDKyssIElETCkKK2F1IFN5bnRheCBjcHAsYyxpZGwgCisJXCBpZiAoZXhpc3RzKCdiOmxvYWRfZG94eWdlbl9zeW50YXgnKSAmJiBiOmxvYWRfZG94eWdlbl9zeW50YXgpCisJXAl8fCAoZXhpc3RzKCdnOmxvYWRfZG94eWdlbl9zeW50YXgnKSAmJiBnOmxvYWRfZG94eWdlbl9zeW50YXgpCisJXCAgIHwgcnVudGltZSBzeW50YXgvZG94eWdlbi52aW0gCisJXCB8IGVuZGlmCisKK2F1IFN5bnRheCAqZG94eWdlbgorCVwgaWYgZXhpc3RzKCJiOmN1cnJlbnRfc3ludGF4IikgfCBmaW5pc2ggfCBlbmRpZgorCVwgfCBsZXQgc3luID0gc3Vic3RpdHV0ZShleHBhbmQoIjxhbWF0Y2g+IiksICdkb3h5Z2VuJCcsICcnLCAnJykKKwlcIHwgaWYgc3luICE9ICcnIHwgZXhlICdydW50aW1lIHN5bnRheC8nLnN5bi4nLnZpbScgfCBlbmRpZgorCVwgfCBpZiBiOmN1cnJlbnRfc3ludGF4ICF+ICdkb3h5Z2VuJyB8IHJ1bnRpbWUgc3ludGF4L2RveHlnZW4udmltIHwgZW5kaWYKKworCiAiIFNvdXJjZSB0aGUgdXNlci1zcGVjaWZpZWQgc3ludGF4IGhpZ2hsaWdodGluZyBmaWxlCiBpZiBleGlzdHMoIm15c3ludGF4ZmlsZSIpICYmIGZpbGVyZWFkYWJsZShleHBhbmQobXlzeW50YXhmaWxlKSkKICAgZXhlY3V0ZSAic291cmNlICIgLiBteXN5bnRheGZpbGUK