ZGlmZiAtLWdpdCBhL3J1bnRpbWUvS1ZpbS5kZXNrdG9wIGIvcnVudGltZS9LVmltLmRlc2t0b3AKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDI1ZWYyMGEuLjAwMDAwMDAKLS0tIGEvcnVudGltZS9LVmltLmRlc2t0b3AKKysrIC9kZXYvbnVsbApAQCAtMSw0NCArMCwwIEBACi0jIEtERSBDb25maWcgRmlsZQotW0Rlc2t0b3AgRW50cnldCi1UeXBlPUFwcGxpY2F0aW9uCi1FeGVjPWt2aW0gLWYgJUYKLUljb249a3ZpbQotTWluaUljb249a3ZpbQotRG9jUGF0aD1rdmltL2luZGV4Lmh0bWwKLUNvbW1lbnQ9Ci1Db21tZW50W3h4XT14eAotVGVybWluYWw9MAotTmFtZT1LVmltCi1OYW1lW2VvXT1WSU0tZmFzYWRvCi1OYW1lW3N2XT1LdmltCi1OYW1lW3h4XT14eAotQ29tbWVudD1UZXh0IEVkaXRvcgotQ29tbWVudFthcl092YXYrdix2LEg2YbYtdmI2LUKLUNvbW1lbnRbYmddPdCi0LXQutGB0YIg0KDQtdC00LDQutGC0L7RgAotQ29tbWVudFtkZV09VGV4dGVkaXRvcgotQ29tbWVudFtlbF09zpTOuc6/z4HOuM+Jz4TOrs+CIM6azrXOuc68zq3Ovc6/z4UKLUNvbW1lbnRbZW9dPVRla3N0cmVkYWt0aWxvCi1Db21tZW50W2V0XT1UZWtzdGlyZWRha3RvcgotQ29tbWVudFtldV09VGVzdHUgRWRpdG9yZWEKLUNvbW1lbnRbZmldPVRla3N0aWVkaXRvcmkKLUNvbW1lbnRbaGVdPdei15XXqNeaINeY16fXodeYCi1Db21tZW50W2lzXT1UZXh0YXJpdGlsbAotQ29tbWVudFtqYV0944OG44Kt44K544OI44Ko44OH44Kj44K/Ci1Db21tZW50W2x0XT1UZWtzdG8gcmVkYWt0b3JpdXMKLUNvbW1lbnRbbXRdPUVkaXR1ciB0YXQtdGVzdAotQ29tbWVudFtwdF9CUl09RWRpdG9yIGRlIFRleHRvCi1Db21tZW50W3JvXT1FZGl0b3IgZGUgdGV4dAotQ29tbWVudFtydV090YDQtdC00LDQutGC0L7RgAotQ29tbWVudFtza109VGV4dG92w70gZWRpdG9yCi1Db21tZW50W3NsXT1VcmVqZXZhbG5payBiZXNlZGlsCi1Db21tZW50W3RhXT3Cr8Kow4MgwqbCvsKhw4zDtMOAwqHDh8O3Ci1Db21tZW50W3RyXT1NZXRpbiBEw7x6ZW5sZXlpY2kKLUNvbW1lbnRbdWtdPdCg0LXQtNCw0LrRgtC+0YAg0YLQtdC60YHRgtGW0LIKLUNvbW1lbnRbdmldPVRyw6xuaCBzb+G6oW4gdsSDbiBi4bqjbgotQ29tbWVudFt4eF09eHgKLUNvbW1lbnRbemhfQ05dPeaWh+acrOe8lui+keWZqAotQ29tbWVudFt6aF9UV1095paH5a2X57eo6Lyv5ZmoCi1NaW1lVHlwZT1hcHBsaWNhdGlvbi9tYXRobWwreG1sO2FwcGxpY2F0aW9uL3hodG1sK3htbDthcHBsaWNhdGlvbi94LXBlcmw7YXBwbGljYXRpb24veC1weXRob247YXBwbGljYXRpb24veC1zaGVsbHNjcmlwdDthdWRpby94LW1wZWd1cmw7YXVkaW8veC1zY3BscztpbWFnZS9zdmcreG1sO21lc3NhZ2UvbmV3czttZXNzYWdlL3JmYzgyMjt0ZXh0L2NhbGVuZGFyO3RleHQvY3NzO3RleHQvZW5nbGlzaDt0ZXh0L2h0bWw7dGV4dC9tcm1sO3RleHQvcGxhaW47dGV4dC9yZGY7dGV4dC9yc3M7dGV4dC9ydGY7dGV4dC9zZ21sO3RleHQvdm5kLndhcC53bWw7dGV4dC94LWFkYXNyYzt0ZXh0L3gtYmlidGV4O3RleHQveC1jaGRyO3RleHQveC1jKytoZHI7dGV4dC94LWNzcmM7dGV4dC94LWMrK3NyYzt0ZXh0L3gtY3N2O3RleHQveC1kaWZmO3RleHQveC1qYXZhO3RleHQveC1rYXRlZmlsZWxpc3Q7dGV4dC94LWxhdGV4O3RleHQveC1sb2c7dGV4dC94LWx5eDt0ZXh0L3gtbWFrZWZpbGU7dGV4dC94bWNkO3RleHQveG1sO3RleHQveC1tb2M7dGV4dC94LW1zd2ludXJsO3RleHQveC1vYmpjc3JjO3RleHQveC1wYXNjYWw7dGV4dC94LXBlcmw7dGV4dC94LXB5dGhvbjt0ZXh0L3gtdGNsO3RleHQveC10ZXg7dGV4dC94LXZjYWxlbmRhcjt0ZXh0L3gtdmNhcmQ7dGV4dC94LXhzbGZvO3RleHQveC14c2x0Ci1YLUtERS1TdGFydHVwTm90aWZ5PXRydWUKLVgtS0RFLUF1dGhvcml6ZUFjdGlvbj1zaGVsbCBhY2Nlc3MKLQpkaWZmIC0tZ2l0IGEvcnVudGltZS9hdXRvbG9hZC9nemlwLnZpbSBiL3J1bnRpbWUvYXV0b2xvYWQvZ3ppcC52aW0KaW5kZXggYTY0NjdiOC4uZjZmN2JjNCAxMDA2NDQKLS0tIGEvcnVudGltZS9hdXRvbG9hZC9nemlwLnZpbQorKysgYi9ydW50aW1lL2F1dG9sb2FkL2d6aXAudmltCkBAIC0xLDYgKzEsNiBAQAogIiBWaW0gYXV0b2xvYWQgZmlsZSBmb3IgZWRpdGluZyBjb21wcmVzc2VkIGZpbGVzLgogIiBNYWludGFpbmVyOiBCcmFtIE1vb2xlbmFhciA8QnJhbUB2aW0ub3JnPgotIiBMYXN0IENoYW5nZTogMjAwNSBKdWwgMjYKKyIgTGFzdCBDaGFuZ2U6IDIwMDYgTWFyIDMxCiAKICIgVGhlc2UgZnVuY3Rpb25zIGFyZSB1c2VkIGJ5IHRoZSBnemlwIHBsdWdpbi4KIApAQCAtODQsOSArODQsMTQgQEAKICAgICAnWywnXWQgXwogICBlbmRpZgogICAiIHJlYWQgaW4gdGhlIHVuY29tcHJlc3NlZCBsaW5lcyAiJ1stMXIgdG1wIgorICAiIFVzZSArK2VkaXQgaWYgdGhlIGJ1ZmZlciB3YXMgZW1wdHksIGtlZXAgdGhlICdmZicgYW5kICdmZW5jJyBvcHRpb25zLgogICBzZXRsb2NhbCBub2JpbgogICBpZiBleGlzdHMoIjpsb2NrbWFya3MiKQotICAgIGV4ZWN1dGUgInNpbGVudCBsb2NrbWFya3MgIiAuIGwgLiAiciAiIC4gdG1wCisgICAgaWYgZW1wdHkKKyAgICAgIGV4ZWN1dGUgInNpbGVudCBsb2NrbWFya3MgIiAuIGwgLiAiciArK2VkaXQgIiAuIHRtcAorICAgIGVsc2UKKyAgICAgIGV4ZWN1dGUgInNpbGVudCBsb2NrbWFya3MgIiAuIGwgLiAiciAiIC4gdG1wCisgICAgZW5kaWYKICAgZWxzZQogICAgIGV4ZWN1dGUgInNpbGVudCAiIC4gbCAuICJyICIgLiB0bXAKICAgZW5kaWYKZGlmZiAtLWdpdCBhL3J1bnRpbWUvYXV0b2xvYWQvbmV0cncudmltIGIvcnVudGltZS9hdXRvbG9hZC9uZXRydy52aW0KaW5kZXggMzk5ZjY3MS4uMDBhM2YzZSAxMDA2NDQKLS0tIGEvcnVudGltZS9hdXRvbG9hZC9uZXRydy52aW0KKysrIGIvcnVudGltZS9hdXRvbG9hZC9uZXRydy52aW0KQEAgLTEsNyArMSw3IEBACiAiIG5ldHJ3LnZpbTogSGFuZGxlcyBmaWxlIHRyYW5zZmVyIGFuZCByZW1vdGUgZGlyZWN0b3J5IGxpc3RpbmcgYWNyb3NzIGEgbmV0d29yawogIiAgICAgICAgICAgIEFVVE9MT0FEIFBPUlRJT04KLSIgRGF0ZToJCU1hciAyMiwgMjAwNgotIiBWZXJzaW9uOgk4MworIiBEYXRlOgkJTWFyIDMxLCAyMDA2CisiIFZlcnNpb246CTg0CiAiIE1haW50YWluZXI6CUNoYXJsZXMgRSBDYW1wYmVsbCwgSnIgPGRyY2hpcE5PU1BBTSBhdCBjYW1wYmVsbGZhbWlseSBkb3QgYml6PgogIiBHZXRMYXRlc3RWaW1TY3JpcHRzOiAxMDc1IDEgOkF1dG9JbnN0YWxsOiBuZXRydy52aW0KICIgQ29weXJpZ2h0OiAgICBDb3B5cmlnaHQgKEMpIDE5OTktMjAwNSBDaGFybGVzIEUuIENhbXBiZWxsLCBKci4ge3t7MQpAQCAtMjMsNyArMjMsNyBAQAogaWYgJmNwIHx8IGV4aXN0cygiZzpsb2FkZWRfbmV0cnciKQogICBmaW5pc2gKIGVuZGlmCi1sZXQgZzpsb2FkZWRfbmV0cncgPSAidjgzIgorbGV0IGc6bG9hZGVkX25ldHJ3ID0gInY4NCIKIGlmIHY6dmVyc2lvbiA8IDcwMAogIGVjaG9obCBXYXJuaW5nTXNnIHwgZWNobyAiKioqbmV0cncqKiogeW91IG5lZWQgdmltIHZlcnNpb24gNy4wIG9yIGxhdGVyIGZvciB2ZXJzaW9uICIuZzpsb2FkZWRfbmV0cncuIiBvZiBuZXRydyIgfCBlY2hvaGwgTm9uZQogIGZpbmlzaApAQCAtNDA0LDggKzQwNCw5IEBACiAgICBjYWxsIHM6TmV0TWV0aG9kKGNob2ljZSkKIAogICAgIiBDaGVjayBpZiBOZXRCcm93c2UoKSBzaG91bGQgYmUgaGFuZGxpbmcgdGhpcyByZXF1ZXN0Ci0iICAgY2FsbCBEZWNobygiY2hlY2tpbmcgaWYgbmV0bGlzdDogY2hvaWNlPCIuY2hvaWNlLiI+IG5ldHJ3X2xpc3RfY21kPCIuZzpuZXRyd19saXN0X2NtZC4iPiIpCisiICAgY2FsbCBEZWNobygiY2hlY2tpbmcgaWYgTmV0QnJvd3NlKCkgc2hvdWxkIGhhbmRsZSBjaG9pY2U8Ii5jaG9pY2UuIj4gd2l0aCBuZXRyd19saXN0X2NtZDwiLmc6bmV0cndfbGlzdF9jbWQuIj4iKQogICAgaWYgY2hvaWNlID1+ICJeLipbXC9dJCIKKyIgICAgY2FsbCBEZWNobygieWVzLCBjaG9pY2UgbWF0Y2hlcyAnXi4qW1wvXSQnIikKICAgICBrZWVwanVtcHMgY2FsbCBzOk5ldEJyb3dzZShjaG9pY2UpCiAiICAgIGNhbGwgRHJldCgiTmV0UmVhZCIpCiAgICAgcmV0dXJuCkBAIC00NTcsNiArNDU4LDcgQEAKICAgIGVsc2VpZiBiOm5ldHJ3X21ldGhvZCAgPT0gMgkJIiByZWFkIHdpdGggZnRwICsgPC5uZXRyYz4KICIgICAgIGNhbGwgRGVjaG8oInJlYWQgdmlhIGZ0cCsubmV0cmMgKG1ldGhvZCAjMikiKQogICAgICBsZXQgbmV0cndfZm5hbWU9IGVzY2FwZShiOm5ldHJ3X2ZuYW1lLGc6bmV0cndfZm5hbWVfZXNjYXBlKQorIiAgICAgY2FsbCBEZWNobygibmV0cndfZm5hbWU8Ii5uZXRyd19mbmFtZS4iPiIpCiAgICAgIG5ldwogICAgICBzZXRsb2NhbCBmZj11bml4CiAgICAgIGV4ZSAicHV0ID0nIi5nOm5ldHJ3X2Z0cG1vZGUuIiciCkBAIC03ODAsNyArNzgyLDcgQEAKICIgICBjYWxsIERlY2hvKCJjYWxsaW5nIE5ldFJlYWRGaXh1cChtZXRob2Q8Ii5hOm1ldGhvZC4iPiBsaW5lMT0iLmxpbmUxLiIgbGluZTI9Ii5saW5lMi4iKSIpCiAgICBjYWxsIE5ldFJlYWRGaXh1cChhOm1ldGhvZCwgbGluZTEsIGxpbmUyKQogIiBlbHNlICIgRGVjaG8KLSIgIGNhbGwgRGVjaG8oIk5ldFJlYWRGaXh1cCgpIG5vdCBjYWxsZWQsIGRvZXNuJ3QgZXhpc3QiKQorIiAgY2FsbCBEZWNobygiTmV0UmVhZEZpeHVwKCkgbm90IGNhbGxlZCwgZG9lc24ndCBleGlzdCAgKGxpbmUxPSIubGluZTEuIiBsaW5lMj0iLmxpbmUyLiIpIikKICAgZW5kaWYKIAogICAiIHVwZGF0ZSB0aGUgQnVmZmVycyBtZW51CkBAIC0xMjM5LDcgKzEyNDEsNiBAQAogICAgZXhlICJzaWxlbnQgZG9hdSBCdWZSZWFkUHJlICIuZm5hbWUKICAgIHNpbGVudCBjYWxsIG5ldHJ3I05ldFJlYWQoMixtZXRob2QuIjovLyIudXNlci5tYWNoaW5lLiIvIi5wYXRoKQogICAgZXhlICJzaWxlbnQgZG9hdSBCdWZSZWFkUG9zdCAiLmZuYW1lCi0gICBrZWVwanVtcHMgMWQKIAogICAgIiBzYXZlIGNlcnRhaW4gd2luZG93LW9yaWVudGVkIHZhcmlhYmxlcyBpbnRvIGJ1ZmZlci1vcmllbnRlZCB2YXJpYWJsZXMKICAgIGNhbGwgczpTZXRCdWZXaW5WYXJzKCkKQEAgLTEzNTIsNyArMTM1Myw3IEBACiAgICBlbmRpZgogICAgbGV0IHc6bmV0cndfYmFubmVyY250PSB3Om5ldHJ3X2Jhbm5lcmNudCArIDEKICAgZW5kaWYKLSAga2VlcGp1bXBzIHB1dCA9J1wiICAgUXVpY2sgSGVscDogICAgPzpoZWxwICAtOmdvIHVwIGRpciAgRDpkZWxldGUgIFI6cmVuYW1lICBzOnNvcnQtYnkgIHg6ZXhlYycKKyAga2VlcGp1bXBzIHB1dCA9J1wiICAgUXVpY2sgSGVscDogPEYxPjpoZWxwICAtOmdvIHVwIGRpciAgRDpkZWxldGUgIFI6cmVuYW1lICBzOnNvcnQtYnkgIHg6ZXhlYycKICAga2VlcGp1bXBzIHB1dCA9J1wiID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PScKIAogICAiIHJlbW90ZSByZWFkIHRoZSByZXF1ZXN0ZWQgZGlyZWN0b3J5IGxpc3RpbmcKQEAgLTI5NDMsNyArMjk0NCw3IEBACiAgICBlbmRpZgogICAgbGV0IHc6bmV0cndfYmFubmVyY250PSB3Om5ldHJ3X2Jhbm5lcmNudCArIDEKICAgZW5kaWYKLSAga2VlcGp1bXBzIHB1dCA9J1wiICAgUXVpY2sgSGVscDogICAgPzpoZWxwICAtOmdvIHVwIGRpciAgRDpkZWxldGUgIFI6cmVuYW1lICBzOnNvcnQtYnkgIHg6ZXhlYycKKyAga2VlcGp1bXBzIHB1dCA9J1wiICAgUXVpY2sgSGVscDogPEYxPjpoZWxwICAtOmdvIHVwIGRpciAgRDpkZWxldGUgIFI6cmVuYW1lICBzOnNvcnQtYnkgIHg6ZXhlYycKICAga2VlcGp1bXBzIHB1dCA9J1wiID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0nCiAgIGxldCB3Om5ldHJ3X2Jhbm5lcmNudD0gdzpuZXRyd19iYW5uZXJjbnQgKyAyCiAKZGlmZiAtLWdpdCBhL3J1bnRpbWUvYXV0b2xvYWQvcGhwY29tcGxldGUudmltIGIvcnVudGltZS9hdXRvbG9hZC9waHBjb21wbGV0ZS52aW0KaW5kZXggNGQ0NDhkYy4uOGNiNGRiMCAxMDA2NDQKLS0tIGEvcnVudGltZS9hdXRvbG9hZC9waHBjb21wbGV0ZS52aW0KKysrIGIvcnVudGltZS9hdXRvbG9hZC9waHBjb21wbGV0ZS52aW0KQEAgLTEsNyArMSw3IEBACiAiIFZpbSBjb21wbGV0aW9uIHNjcmlwdAogIiBMYW5ndWFnZToJUEhQCiAiIE1haW50YWluZXI6CU1pa29sYWogTWFjaG93c2tpICggbWlrbWFjaCBBVCB3cCBET1QgcGwgKQotIiBMYXN0IENoYW5nZToJMjAwNiBNYXIgLS0tCisiIExhc3QgQ2hhbmdlOgkyMDA2IEFwciAwNQogIgogIiAgIFRPRE86CiAiICAgLSBDbGFzcyBhd2FyZSBjb21wbGV0aW9uOgpAQCAtNDcsNDAwICs0Nyw1OTQgQEAKIAkJCSIgV2UgY2FuIGJlIGFsc28gaW5zaWRlIG9mIHBocFN0cmluZyB3aXRoIEhUTUwgdGFncy4gRGVhbCB3aXRoCiAJCQkiIGl0IGxhdGVyICh0aW1lLCBub3QgbGluZXMpLgogCQllbmRpZgotCWVsc2UKLQkJIiBJZiBleGlzdHMgYjpwaHBfbWVudSBpdCBtZWFucyBjb21wbGV0aW9uIHdhcyBhbHJlYWR5IGNvbnN0cnVjdGVkIHdlCi0JCSIgZG9uJ3QgbmVlZCB0byBkbyBhbnl0aGluZyBtb3JlCi0JCWlmIGV4aXN0cygiYjpwaHBfbWVudSIpCi0JCQlyZXR1cm4gYjpwaHBfbWVudQotCQllbmRpZgotCQkiIEluaXRpYWxpemUgYmFzZSByZXR1cm4gbGlzdHMKLQkJbGV0IHJlcyA9IFtdCi0JCSIgYTpiYXNlIGlzIHZlcnkgc2hvcnQgLSB3ZSBuZWVkIGNvbnRleHQKLQkJaWYgZXhpc3RzKCJiOmNvbXBsX2NvbnRleHQiKQotCQkJbGV0IGNvbnRleHQgPSBiOmNvbXBsX2NvbnRleHQKLQkJCXVubGV0ISBiOmNvbXBsX2NvbnRleHQKLQkJZW5kaWYKIAotCQlpZiAhZXhpc3RzKCdnOnBocF9idWlsdGluX2Z1bmN0aW9ucycpCi0JCQljYWxsIHBocGNvbXBsZXRlI0xvYWREYXRhKCkKLQkJZW5kaWYKKwllbmRpZgorCSIgSWYgZXhpc3RzIGI6cGhwX21lbnUgaXQgbWVhbnMgY29tcGxldGlvbiB3YXMgYWxyZWFkeSBjb25zdHJ1Y3RlZCB3ZQorCSIgZG9uJ3QgbmVlZCB0byBkbyBhbnl0aGluZyBtb3JlCisJaWYgZXhpc3RzKCJiOnBocF9tZW51IikKKwkJcmV0dXJuIGI6cGhwX21lbnUKKwllbmRpZgorCSIgSW5pdGlhbGl6ZSBiYXNlIHJldHVybiBsaXN0cworCWxldCByZXMgPSBbXQorCWxldCByZXMyID0gW10KKwkiIGE6YmFzZSBpcyB2ZXJ5IHNob3J0IC0gd2UgbmVlZCBjb250ZXh0CisJaWYgZXhpc3RzKCJiOmNvbXBsX2NvbnRleHQiKQorCQlsZXQgY29udGV4dCA9IGI6Y29tcGxfY29udGV4dAorCQl1bmxldCEgYjpjb21wbF9jb250ZXh0CisJZW5kaWYKIAotCQlsZXQgc2NvbnRleHQgPSBzdWJzdGl0dXRlKGNvbnRleHQsIAotCQkJCVwgJ1wkXD9bYS16QS1aX1x4N2YtXHhmZl1bYS16QS1aXzAtOVx4N2YtXHhmZl0qJCcsICcnLCAnJykKKwlpZiAhZXhpc3RzKCdnOnBocF9idWlsdGluX2Z1bmN0aW9ucycpCisJCWNhbGwgcGhwY29tcGxldGUjTG9hZERhdGEoKQorCWVuZGlmCiAKLQkJaWYgc2NvbnRleHQgPX4gJ1woPVxzKm5ld1x8ZXh0ZW5kc1wpXHNcKyQnCi0JCQkiIENvbXBsZXRlIGNsYXNzIG5hbWUKLQkJCSIgSW50ZXJuYWwgc29sdXRpb24gZm9yIGZpbmRpbmcgY2xhc3NlcyBpbiBjdXJyZW50IGZpbGUuCi0JCQlsZXQgZmlsZSA9IGdldGxpbmUoMSwgJyQnKQotCQkJY2FsbCBmaWx0ZXIoZmlsZSwgCi0JCQkJCVwgJ3Y6dmFsID1+ICJjbGFzc1xcc1xcK1thLXpBLVpfXFx4N2YtXFx4ZmZdW2EtekEtWl8wLTlcXHg3Zi1cXHhmZl0qXFxzKigiJykKLQkJCWxldCBmbmFtZXMgPSBqb2luKG1hcCh0YWdmaWxlcygpLCAnZXNjYXBlKHY6dmFsLCAiIFxcIiknKSkKLQkJCWxldCBqZmlsZSA9IGpvaW4oZmlsZSwgJyAnKQotCQkJbGV0IGludF92YWx1ZXMgPSBzcGxpdChqZmlsZSwgJ2NsYXNzXHNcKycpCi0JCQlsZXQgaW50X2NsYXNzZXMgPSB7fQotCQkJZm9yIGkgaW4gaW50X3ZhbHVlcwotCQkJCWxldCBjX25hbWUgPSBtYXRjaHN0cihpLCAnXlthLXpBLVpfXHg3Zi1ceGZmXVthLXpBLVpfMC05XHg3Zi1ceGZmXSonKQotCQkJCWlmIGNfbmFtZSAhPSAnJwotCQkJCQlsZXQgaW50X2NsYXNzZXNbY19uYW1lXSA9ICcnCi0JCQkJZW5kaWYKLQkJCWVuZGZvcgorCWxldCBzY29udGV4dCA9IHN1YnN0aXR1dGUoY29udGV4dCwgJ1wkXD9bYS16QS1aX1x4N2YtXHhmZl1bYS16QS1aXzAtOVx4N2YtXHhmZl0qJCcsICcnLCAnJykKIAotCQkJIiBQcmVwYXJlIGxpc3Qgb2YgZnVuY3Rpb25zIGZyb20gdGFncyBmaWxlCi0JCQlsZXQgZXh0X2NsYXNzZXMgPSB7fQotCQkJbGV0IGZuYW1lcyA9IGpvaW4obWFwKHRhZ2ZpbGVzKCksICdlc2NhcGUodjp2YWwsICIgXFwiKScpKQotCQkJaWYgZm5hbWVzICE9ICcnCi0JCQkJZXhlICdzaWxlbnQhIHZpbWdyZXAgL14nLmE6YmFzZS4nLipcdGNcKFx0XHwkXCkvaiAnLmZuYW1lcwotCQkJCWxldCBxZmxpc3QgPSBnZXRxZmxpc3QoKQotCQkJCWZvciBmaWVsZCBpbiBxZmxpc3QKLQkJCQkJIiBbOnNwYWNlOl0gdGhpbmc6IHdlIGRvbid0IGhhdmUgdG8gYmUgc28gc3RyaWN0IHdoZW4KLQkJCQkJIiBkZWFsaW5nIHdpdGggdGFncyBmaWxlcyAtIGVudHJpZXMgdGhlcmUgd2VyZSBhbHJlYWR5Ci0JCQkJCSIgY2hlY2tlZCBieSBjdGFncy4KLQkJCQkJbGV0IGl0ZW0gPSBtYXRjaHN0cihmaWVsZFsndGV4dCddLCAnXlteWzpzcGFjZTpdXVwrJykKLQkJCQkJbGV0IGV4dF9jbGFzc2VzW2l0ZW1dID0gJycKLQkJCQllbmRmb3IKKwlpZiBzY29udGV4dCA9fiAnXCg9XHMqbmV3XHxleHRlbmRzXClcc1wrJCcKKwkJIiBDb21wbGV0ZSBjbGFzcyBuYW1lCisJCSIgSW50ZXJuYWwgc29sdXRpb24gZm9yIGZpbmRpbmcgY2xhc3NlcyBpbiBjdXJyZW50IGZpbGUuCisJCWxldCBmaWxlID0gZ2V0bGluZSgxLCAnJCcpCisJCWNhbGwgZmlsdGVyKGZpbGUsIAorCQkJCVwgJ3Y6dmFsID1+ICJjbGFzc1xcc1xcK1thLXpBLVpfXFx4N2YtXFx4ZmZdW2EtekEtWl8wLTlcXHg3Zi1cXHhmZl0qXFxzKigiJykKKwkJbGV0IGZuYW1lcyA9IGpvaW4obWFwKHRhZ2ZpbGVzKCksICdlc2NhcGUodjp2YWwsICIgXFwiKScpKQorCQlsZXQgamZpbGUgPSBqb2luKGZpbGUsICcgJykKKwkJbGV0IGludF92YWx1ZXMgPSBzcGxpdChqZmlsZSwgJ2NsYXNzXHNcKycpCisJCWxldCBpbnRfY2xhc3NlcyA9IHt9CisJCWZvciBpIGluIGludF92YWx1ZXMKKwkJCWxldCBjX25hbWUgPSBtYXRjaHN0cihpLCAnXlthLXpBLVpfXHg3Zi1ceGZmXVthLXpBLVpfMC05XHg3Zi1ceGZmXSonKQorCQkJaWYgY19uYW1lICE9ICcnCisJCQkJbGV0IGludF9jbGFzc2VzW2NfbmFtZV0gPSAnJwogCQkJZW5kaWYKKwkJZW5kZm9yCiAKLQkJCWNhbGwgZXh0ZW5kKGludF9jbGFzc2VzLCBleHRfY2xhc3NlcykKLQotCQkJZm9yIG0gaW4gc29ydChrZXlzKGludF9jbGFzc2VzKSkKLQkJCQlpZiBtID1+ICdeJy5hOmJhc2UKLQkJCQkJY2FsbCBhZGQocmVzLCBtKQotCQkJCWVuZGlmCisJCSIgUHJlcGFyZSBsaXN0IG9mIGZ1bmN0aW9ucyBmcm9tIHRhZ3MgZmlsZQorCQlsZXQgZXh0X2NsYXNzZXMgPSB7fQorCQlsZXQgZm5hbWVzID0gam9pbihtYXAodGFnZmlsZXMoKSwgJ2VzY2FwZSh2OnZhbCwgIiBcXCIpJykpCisJCWlmIGZuYW1lcyAhPSAnJworCQkJZXhlICdzaWxlbnQhIHZpbWdyZXAgL14nLmE6YmFzZS4nLipcdGNcKFx0XHwkXCkvaiAnLmZuYW1lcworCQkJbGV0IHFmbGlzdCA9IGdldHFmbGlzdCgpCisJCQlmb3IgZmllbGQgaW4gcWZsaXN0CisJCQkJIiBbOnNwYWNlOl0gdGhpbmc6IHdlIGRvbid0IGhhdmUgdG8gYmUgc28gc3RyaWN0IHdoZW4KKwkJCQkiIGRlYWxpbmcgd2l0aCB0YWdzIGZpbGVzIC0gZW50cmllcyB0aGVyZSB3ZXJlIGFscmVhZHkKKwkJCQkiIGNoZWNrZWQgYnkgY3RhZ3MuCisJCQkJbGV0IGl0ZW0gPSBtYXRjaHN0cihmaWVsZFsndGV4dCddLCAnXlteWzpzcGFjZTpdXVwrJykKKwkJCQlsZXQgZXh0X2NsYXNzZXNbaXRlbV0gPSAnJwogCQkJZW5kZm9yCisJCWVuZGlmCiAKLQkJCWxldCBpbnRfbGlzdCA9IHJlcworCQljYWxsIGV4dGVuZChpbnRfY2xhc3NlcywgZXh0X2NsYXNzZXMpCiAKLQkJCWxldCBmaW5hbF9tZW51ID0gW10KLQkJCWZvciBpIGluIGludF9saXN0Ci0JCQkJbGV0IGZpbmFsX21lbnUgKz0gW3snd29yZCc6aSwgJ2tpbmQnOidjJ31dCi0JCQllbmRmb3IKKwkJZm9yIG0gaW4gc29ydChrZXlzKGludF9jbGFzc2VzKSkKKwkJCWlmIG0gPX4gJ14nLmE6YmFzZQorCQkJCWNhbGwgYWRkKHJlcywgbSkKKwkJCWVuZGlmCisJCWVuZGZvcgogCi0JCQlyZXR1cm4gZmluYWxfbWVudQorCQlsZXQgaW50X2xpc3QgPSByZXMKIAotCQllbHNlaWYgc2NvbnRleHQgPX4gJ1woLT5cfDo6XCkkJwotCQkJIiBDb21wbGV0ZSB1c2VyIGZ1bmN0aW9ucyBhbmQgdmFyaWFibGVzCi0JCQkiIEludGVybmFsIHNvbHV0aW9uIGZvciBjdXJyZW50IGZpbGUuCi0JCQkiIFRoYXQgc2VlbXMgYXMgdW5uZWNlc3NhcnkgcmVwZWF0aW5nIG9mIGZ1bmN0aW9ucyBidXQgdGhlcmUgYXJlCi0JCQkiIGZldyBub3Qgc28gc3VidGxlIGRpZmZlcmVuY2VzIGFzIG5vdCBhcHBlbmRpbmcgb2YgJCBhbmQgYWRkaXRpb24KLQkJCSIgb2YgJ2tpbmQnIHRhZyAobm90IG5lY2Vzc2FyeSBpbiByZWd1bGFyIGNvbXBsZXRpb24pCi0JCQlpZiBhOmJhc2UgPX4gJ15cJCcKLQkJCQlsZXQgYWRkZG9sbGFyID0gJyQnCisJCWxldCBmaW5hbF9tZW51ID0gW10KKwkJZm9yIGkgaW4gaW50X2xpc3QKKwkJCWxldCBmaW5hbF9tZW51ICs9IFt7J3dvcmQnOmksICdraW5kJzonYyd9XQorCQllbmRmb3IKKworCQlyZXR1cm4gZmluYWxfbWVudQorCisJZWxzZWlmIHNjb250ZXh0ID1+ICdcKC0+XHw6OlwpJCcKKwkJIiBDb21wbGV0ZSB1c2VyIGZ1bmN0aW9ucyBhbmQgdmFyaWFibGVzCisJCSIgSW50ZXJuYWwgc29sdXRpb24gZm9yIGN1cnJlbnQgZmlsZS4KKwkJIiBUaGF0IHNlZW1zIGFzIHVubmVjZXNzYXJ5IHJlcGVhdGluZyBvZiBmdW5jdGlvbnMgYnV0IHRoZXJlIGFyZQorCQkiIGZldyBub3Qgc28gc3VidGxlIGRpZmZlcmVuY2VzIGFzIG5vdCBhcHBlbmRpbmcgb2YgJCBhbmQgYWRkaXRpb24KKwkJIiBvZiAna2luZCcgdGFnIChub3QgbmVjZXNzYXJ5IGluIHJlZ3VsYXIgY29tcGxldGlvbikKKworCQlpZiBzY29udGV4dCA9fiAnLT4kJyAmJiBzY29udGV4dCAhfiAnXCR0aGlzLT4kJworCisJCQkiIEdldCBuYW1lIG9mIHRoZSBjbGFzcworCQkJbGV0IGNsYXNzbmFtZSA9IHBocGNvbXBsZXRlI0dldENsYXNzTmFtZShzY29udGV4dCkKKworCQkJIiBHZXQgbG9jYXRpb24gb2YgY2xhc3MgZGVmaW5pdGlvbiwgd2UgaGF2ZSB0byBpdGVyYXRlIHRocm91Z2ggYWxsCisJCQkiIHRhZ3MgZmlsZXMgc2VwYXJhdGVseSBiZWNhdXNlIHdlIG5lZWQgcmVsYXRpdmUgcGF0aCBmcm9tIGN1cnJlbnQKKwkJCSIgZmlsZSB0byB0aGUgZXhhY3QgZmlsZSAodGFncyBmaWxlIGNhbiBiZSBpbiBkaWZmZXJlbnQgZGlyKQorCQkJaWYgY2xhc3NuYW1lICE9ICcnCisJCQkJbGV0IGNsYXNzbG9jYXRpb24gPSBwaHBjb21wbGV0ZSNHZXRDbGFzc0xvY2F0aW9uKGNsYXNzbmFtZSkKIAkJCWVsc2UKLQkJCQlsZXQgYWRkZG9sbGFyID0gJycKKwkJCQlsZXQgY2xhc3Nsb2NhdGlvbiA9ICcnCiAJCQllbmRpZgotCQkJbGV0IGZpbGUgPSBnZXRsaW5lKDEsICckJykKLQkJCWxldCBqZmlsZSA9IGpvaW4oZmlsZSwgJyAnKQotCQkJbGV0IHNmaWxlID0gc3BsaXQoamZpbGUsICdcJCcpCi0JCQlsZXQgaW50X3ZhcnMgPSB7fQotCQkJZm9yIGkgaW4gc2ZpbGUKLQkJCQlpZiBpID1+ICdeXCRbYS16QS1aX1x4N2YtXHhmZl1bYS16QS1aXzAtOVx4N2YtXHhmZl0qXHMqPVxzKm5ldycKLQkJCQkJbGV0IHZhbCA9IG1hdGNoc3RyKGksICdeW2EtekEtWl9ceDdmLVx4ZmZdW2EtekEtWl8wLTlceDdmLVx4ZmZdKicpLictPicKLQkJCQllbHNlCi0JCQkJCWxldCB2YWwgPSBtYXRjaHN0cihpLCAnXlthLXpBLVpfXHg3Zi1ceGZmXVthLXpBLVpfMC05XHg3Zi1ceGZmXSonKQotCQkJCWVuZGlmCi0JCQkJaWYgdmFsICF+ICcnCi0JCQkJCWxldCBpbnRfdmFyc1thZGRkb2xsYXIudmFsXSA9ICcnCi0JCQkJZW5kaWYKLQkJCWVuZGZvcgotCQkJCi0JCQkiIGN0YWdzIGhhcyBnb29kIHN1cHBvcnQgZm9yIFBIUCwgdXNlIHRhZ3MgZmlsZSBmb3IgZXh0ZXJuYWwKLQkJCSIgdmFyaWFibGVzCi0JCQlsZXQgZm5hbWVzID0gam9pbihtYXAodGFnZmlsZXMoKSwgJ2VzY2FwZSh2OnZhbCwgIiBcXCIpJykpCi0JCQlsZXQgZXh0X3ZhcnMgPSB7fQotCQkJaWYgZm5hbWVzICE9ICcnCi0JCQkJbGV0IHNiYXNlID0gc3Vic3RpdHV0ZShhOmJhc2UsICdeXCQnLCAnJywgJycpCi0JCQkJZXhlICdzaWxlbnQhIHZpbWdyZXAgL14nLnNiYXNlLicuKlx0dlwoXHRcfCRcKS9qICcuZm5hbWVzCi0JCQkJbGV0IHFmbGlzdCA9IGdldHFmbGlzdCgpCi0JCQkJZm9yIGZpZWxkIGluIHFmbGlzdAotCQkJCQlsZXQgaXRlbSA9IG1hdGNoc3RyKGZpZWxkWyd0ZXh0J10sICdeW15bOnNwYWNlOl1dXCsnKQotCQkJCQkiIEFkZCAtPiBpZiBpdCBpcyBwb3NzaWJsZSBvYmplY3QgZGVjbGFyYXRpb24KLQkJCQkJbGV0IGNsYXNzbmFtZSA9ICcnCi0JCQkJCWlmIGZpZWxkWyd0ZXh0J10gPX4gaXRlbS4nXHMqPVxzKm5ld1xzXCsnCi0JCQkJCQlsZXQgaXRlbSA9IGl0ZW0uJy0+JwotCQkJCQkJbGV0IGNsYXNzbmFtZSA9IG1hdGNoc3RyKGZpZWxkWyd0ZXh0J10sIAotCQkJCQkJCQlcICc9XHMqbmV3XHNcK1x6c1thLXpBLVpfMC05XHg3Zi1ceGZmXVwrXHplJykKKworCQkJaWYgZmlsZXJlYWRhYmxlKGNsYXNzbG9jYXRpb24pCisJCQkJbGV0IGNsYXNzZmlsZSA9IHJlYWRmaWxlKGNsYXNzbG9jYXRpb24pCisJCQkJbGV0IGNsYXNzY29udGVudCA9ICcnCisJCQkJbGV0IGNsYXNzY29udGVudCAuPSAiXG4iLnBocGNvbXBsZXRlI0dldENsYXNzQ29udGVudHMoY2xhc3NmaWxlLCBjbGFzc25hbWUpCisJCQkJbGV0IHNjY29udGVudCA9IHNwbGl0KGNsYXNzY29udGVudCwgIlxuIikKKworCQkJCSIgWUVTLCBZRVMsIFlFUyEgLSB3ZSBoYXZlIHdob2xlIGNvbnRlbnQgaW5jbHVkaW5nIGV4dGVuZHMhCisJCQkJIiBOb3cgd2UgbmVlZCB0byBnZXQgdHdvIGVsZW1lbnRzOiBwdWJsaWMgZnVuY3Rpb25zIGFuZCBwdWJsaWMKKwkJCQkiIHZhcnMKKwkJCQkiIE5PLCBOTywgTk8hIC0gdGhpcmQgc2VwYXJhdGUgZmlsdGVyaW5nIGxvb2tpbmcgZm9yIGNvbnRlbnQKKwkJCQkiIDooLCBidXQgYWxsIG9mIHRoZW0gaGF2ZSBkaWZmZXJlbmNlcy4gVG8gc3F1ZWV6ZSB0aGVtIGludG8KKwkJCQkiIG9uZSBpbXBsZW1lbnRhdGlvbiB3b3VsZCByZXF1aXJlIG1hbnkgYWRkaXRpb25hbCBhcmd1bWVudHMKKwkJCQkiIGFuZCBpZnMuIE5vIGdvb2Qgc29sdXRpb24KKwkJCQkiIEZ1bmN0aW9ucyBkZWNsYXJlZCB3aXRoIHB1YmxpYyBrZXl3b3JkIG9yIHdpdGhvdXQgYW55CisJCQkJIiBrZXl3b3JkIGFyZSBwdWJsaWMKKwkJCQlsZXQgZnVuY3Rpb25zID0gZmlsdGVyKGRlZXBjb3B5KHNjY29udGVudCksIAorCQkJCQkJXCAndjp2YWwgPX4gIl5cXHMqXFwocHVibGljXFxzXFwqXFwpXFw/ZnVuY3Rpb24iJykKKwkJCQlsZXQgamZ1bmNzID0gam9pbihmdW5jdGlvbnMsICcgJykKKwkJCQlsZXQgc2Z1bmNzID0gc3BsaXQoamZ1bmNzLCAnZnVuY3Rpb25cc1wrJykKKwkJCQlsZXQgY19mdW5jdGlvbnMgPSB7fQorCQkJCWZvciBpIGluIHNmdW5jcworCQkJCQlsZXQgZl9uYW1lID0gbWF0Y2hzdHIoaSwgCisJCQkJCQkJXCAnXiZcP1x6c1thLXpBLVpfXHg3Zi1ceGZmXVthLXpBLVpfMC05XHg3Zi1ceGZmXSpcemUnKQorCQkJCQlsZXQgZl9hcmdzID0gbWF0Y2hzdHIoaSwgCisJCQkJCQkJXCAnXiZcP1thLXpBLVpfXHg3Zi1ceGZmXVthLXpBLVpfMC05XHg3Zi1ceGZmXSpccyooXHpzLlx7LX1cemUpXF9zKnsnKQorCQkJCQlpZiBmX25hbWUgIT0gJycKKwkJCQkJCWxldCBjX2Z1bmN0aW9uc1tmX25hbWUuJygnXSA9IGZfYXJncwogCQkJCQllbmRpZgotCQkJCQlsZXQgZXh0X3ZhcnNbYWRkZG9sbGFyLml0ZW1dID0gY2xhc3NuYW1lCiAJCQkJZW5kZm9yCi0JCQllbmRpZgotCi0JCQkiIE5vdyB3ZSBoYXZlIGFsbCB2YXJpYWJsZXMgaW4gaW50X3ZhcnMgZGljdGlvbmFyeQotCQkJY2FsbCBleHRlbmQoaW50X3ZhcnMsIGV4dF92YXJzKQotCi0JCQkiIEludGVybmFsIHNvbHV0aW9uIGZvciBmaW5kaW5nIGZ1bmN0aW9ucyBpbiBjdXJyZW50IGZpbGUuCi0JCQlsZXQgZmlsZSA9IGdldGxpbmUoMSwgJyQnKQotCQkJY2FsbCBmaWx0ZXIoZmlsZSwgCi0JCQkJCVwgJ3Y6dmFsID1+ICJmdW5jdGlvblxcc1xcKyZcXD9bYS16QS1aX1xceDdmLVxceGZmXVthLXpBLVpfMC05XFx4N2YtXFx4ZmZdKlxccyooIicpCi0JCQlsZXQgZm5hbWVzID0gam9pbihtYXAodGFnZmlsZXMoKSwgJ2VzY2FwZSh2OnZhbCwgIiBcXCIpJykpCi0JCQlsZXQgamZpbGUgPSBqb2luKGZpbGUsICcgJykKLQkJCWxldCBpbnRfdmFsdWVzID0gc3BsaXQoamZpbGUsICdmdW5jdGlvblxzXCsnKQotCQkJbGV0IGludF9mdW5jdGlvbnMgPSB7fQotCQkJZm9yIGkgaW4gaW50X3ZhbHVlcwotCQkJCWxldCBmX25hbWUgPSBtYXRjaHN0cihpLCAKLQkJCQkJCVwgJ14mXD9cenNbYS16QS1aX1x4N2YtXHhmZl1bYS16QS1aXzAtOVx4N2YtXHhmZl0qXHplJykKLQkJCQlsZXQgZl9hcmdzID0gbWF0Y2hzdHIoaSwgCi0JCQkJCQlcICdeJlw/W2EtekEtWl9ceDdmLVx4ZmZdW2EtekEtWl8wLTlceDdmLVx4ZmZdKlxzKihcenMuXHstfVx6ZSlcX3MqeycpCi0JCQkJbGV0IGludF9mdW5jdGlvbnNbZl9uYW1lLicoJ10gPSBmX2FyZ3MKLQkJCWVuZGZvcgotCi0JCQkiIFByZXBhcmUgbGlzdCBvZiBmdW5jdGlvbnMgZnJvbSB0YWdzIGZpbGUKLQkJCWxldCBleHRfZnVuY3Rpb25zID0ge30KLQkJCWlmIGZuYW1lcyAhPSAnJwotCQkJCWV4ZSAnc2lsZW50ISB2aW1ncmVwIC9eJy5hOmJhc2UuJy4qXHRmXChcdFx8JFwpL2ogJy5mbmFtZXMKLQkJCQlsZXQgcWZsaXN0ID0gZ2V0cWZsaXN0KCkKLQkJCQlmb3IgZmllbGQgaW4gcWZsaXN0Ci0JCQkJCSIgRmlsZSBuYW1lCi0JCQkJCWxldCBpdGVtID0gbWF0Y2hzdHIoZmllbGRbJ3RleHQnXSwgJ15bXls6c3BhY2U6XV1cKycpCi0JCQkJCWxldCBmbmFtZSA9IG1hdGNoc3RyKGZpZWxkWyd0ZXh0J10sICdcdFx6c1xmXCtcemUnKQotCQkJCQlsZXQgcHJvdG90eXBlID0gbWF0Y2hzdHIoZmllbGRbJ3RleHQnXSwgCi0JCQkJCQkJXCAnZnVuY3Rpb25cc1wrJlw/W15bOnNwYWNlOl1dXCtccyooXHMqXHpzLlx7LX1cemVccyopXHMqe1w/JykKLQkJCQkJbGV0IGV4dF9mdW5jdGlvbnNbaXRlbS4nKCddID0gcHJvdG90eXBlLicpIC0gJy5mbmFtZQotCQkJCWVuZGZvcgotCQkJZW5kaWYKLQotCQkJbGV0IGFsbF92YWx1ZXMgPSB7fQotCQkJY2FsbCBleHRlbmQoYWxsX3ZhbHVlcywgaW50X2Z1bmN0aW9ucykKLQkJCWNhbGwgZXh0ZW5kKGFsbF92YWx1ZXMsIGV4dF9mdW5jdGlvbnMpCi0JCQljYWxsIGV4dGVuZChhbGxfdmFsdWVzLCBpbnRfdmFycykgIiBleHRlcm5hbCB2YXJpYWJsZXMgYXJlIGFscmVhZHkgaW4KLQkJCWNhbGwgZXh0ZW5kKGFsbF92YWx1ZXMsIGc6cGhwX2J1aWx0aW5fb2JqZWN0X2Z1bmN0aW9ucykKLQotCQkJZm9yIG0gaW4gc29ydChrZXlzKGFsbF92YWx1ZXMpKQotCQkJCWlmIG0gPX4gJ1woXlx8OjpcKScuYTpiYXNlCi0JCQkJCWNhbGwgYWRkKHJlcywgbSkKLQkJCQllbmRpZgotCQkJZW5kZm9yCi0KLQkJCWxldCBzdGFydF9saXN0ID0gcmVzCi0KLQkJCWxldCBmaW5hbF9saXN0ID0gW10KLQkJCWZvciBpIGluIHN0YXJ0X2xpc3QKLQkJCQlpZiBoYXNfa2V5KGludF92YXJzLCBpKQotCQkJCQlsZXQgY2xhc3MgPSAnICcKLQkJCQkJaWYgYWxsX3ZhbHVlc1tpXSAhPSAnJwotCQkJCQkJbGV0IGNsYXNzID0gaS4nIGNsYXNzICcKKwkJCQkiIFZhcmlhYmxlcyBkZWNsYXJlZCB3aXRoIHZhciBvciB3aXRoIHB1YmxpYyBrZXl3b3JkIGFyZQorCQkJCSIgcHVibGljCisJCQkJbGV0IHZhcmlhYmxlcyA9IGZpbHRlcihkZWVwY29weShzY2NvbnRlbnQpLCAKKwkJCQkJCVwgJ3Y6dmFsID1+ICJeXFxzKlxcKHB1YmxpY1xcfHZhclxcKVxcc1xcK1xcJCInKQorCQkJCWxldCBqdmFycyA9IGpvaW4odmFyaWFibGVzLCAnICcpCisJCQkJbGV0IHN2YXJzID0gc3BsaXQoanZhcnMsICdcJCcpCisJCQkJbGV0IGNfdmFyaWFibGVzID0ge30KKwkJCQlmb3IgaSBpbiBzdmFycworCQkJCQlsZXQgY192YXIgPSBtYXRjaHN0cihpLCAKKwkJCQkJCQlcICdeXHpzW2EtekEtWl9ceDdmLVx4ZmZdW2EtekEtWl8wLTlceDdmLVx4ZmZdKlx6ZScpCisJCQkJCWlmIGNfdmFyICE9ICcnCisJCQkJCQlsZXQgY192YXJpYWJsZXNbY192YXJdID0gJycKIAkJCQkJZW5kaWYKLQkJCQkJbGV0IGZpbmFsX2xpc3QgKz0gW3snd29yZCc6aSwgJ2luZm8nOmNsYXNzLmFsbF92YWx1ZXNbaV0sICdraW5kJzondid9XQotCQkJCWVsc2UKLQkJCQkJbGV0IGZpbmFsX2xpc3QgKz0gCi0JCQkJCQkJXCBbeyd3b3JkJzpzdWJzdGl0dXRlKGksICcuKjo6JywgJycsICcnKSwgCi0JCQkJCQkJXCAgICdpbmZvJzppLmFsbF92YWx1ZXNbaV0sCi0JCQkJCQkJXCAgICdraW5kJzonZid9XQotCQkJCWVuZGlmCi0JCQllbmRmb3IKKwkJCQllbmRmb3IKIAotCQkJcmV0dXJuIGZpbmFsX2xpc3QKKwkJCQlsZXQgYWxsX3ZhbHVlcyA9IHt9CisJCQkJY2FsbCBleHRlbmQoYWxsX3ZhbHVlcywgY19mdW5jdGlvbnMpCisJCQkJY2FsbCBleHRlbmQoYWxsX3ZhbHVlcywgY192YXJpYWJsZXMpCisJCQkJY2FsbCBleHRlbmQoYWxsX3ZhbHVlcywgZzpwaHBfYnVpbHRpbl9vYmplY3RfZnVuY3Rpb25zKQorCisJCQkJZm9yIG0gaW4gc29ydChrZXlzKGFsbF92YWx1ZXMpKQorCQkJCQlpZiBtID1+ICdeJy5hOmJhc2UgJiYgbSAhfiAnOjonCisJCQkJCQljYWxsIGFkZChyZXMsIG0pCisJCQkJCWVsc2VpZiBtID1+ICc6OicuYTpiYXNlCisJCQkJCQljYWxsIGFkZChyZXMyLCBtKQorCQkJCQllbmRpZgorCQkJCWVuZGZvcgorCisJCQkJbGV0IHN0YXJ0X2xpc3QgPSByZXMgKyByZXMyCisKKwkJCQlsZXQgZmluYWxfbGlzdCA9IFtdCisJCQkJZm9yIGkgaW4gc3RhcnRfbGlzdAorCQkJCQlpZiBoYXNfa2V5KGNfdmFyaWFibGVzLCBpKQorCQkJCQkJbGV0IGNsYXNzID0gJyAnCisJCQkJCQlpZiBhbGxfdmFsdWVzW2ldICE9ICcnCisJCQkJCQkJbGV0IGNsYXNzID0gaS4nIGNsYXNzICcKKwkJCQkJCWVuZGlmCisJCQkJCQlsZXQgZmluYWxfbGlzdCArPSAKKwkJCQkJCQkJXCBbeyd3b3JkJzppLCAKKwkJCQkJCQkJXCAgICdpbmZvJzpjbGFzcy5hbGxfdmFsdWVzW2ldLCAKKwkJCQkJCQkJXCAgICdraW5kJzondid9XQorCQkJCQllbHNlCisJCQkJCQlsZXQgZmluYWxfbGlzdCArPSAKKwkJCQkJCQkJXCBbeyd3b3JkJzpzdWJzdGl0dXRlKGksICcuKjo6JywgJycsICcnKSwgCisJCQkJCQkJCVwgICAnaW5mbyc6aS5hbGxfdmFsdWVzW2ldLicpJywKKwkJCQkJCQkJXCAgICdraW5kJzonZid9XQorCQkJCQllbmRpZgorCQkJCWVuZGZvcgorCisJCQkJcmV0dXJuIGZpbmFsX2xpc3QKKworCQkJZW5kaWYKKwogCQllbmRpZgogCiAJCWlmIGE6YmFzZSA9fiAnXlwkJwotCQkJIiBDb21wbGV0ZSB2YXJpYWJsZXMKLQkJCSIgQnVpbHQtaW4gdmFyaWFibGVzIHt7ewotCQkJbGV0IGc6cGhwX2J1aWx0aW5fdmFycyA9IHsnJEdMT0JBTFMnOicnLAotCQkJCQkJCQkJXCAnJF9TRVJWRVInOicnLAotCQkJCQkJCQkJXCAnJF9HRVQnOicnLAotCQkJCQkJCQkJXCAnJF9QT1NUJzonJywKLQkJCQkJCQkJCVwgJyRfQ09PS0lFJzonJywKLQkJCQkJCQkJCVwgJyRfRklMRVMnOicnLAotCQkJCQkJCQkJXCAnJF9FTlYnOicnLAotCQkJCQkJCQkJXCAnJF9SRVFVRVNUJzonJywKLQkJCQkJCQkJCVwgJyRfU0VTU0lPTic6JycsCi0JCQkJCQkJCQlcICckSFRUUF9TRVJWRVJfVkFSUyc6JycsCi0JCQkJCQkJCQlcICckSFRUUF9FTlZfVkFSUyc6JycsCi0JCQkJCQkJCQlcICckSFRUUF9DT09LSUVfVkFSUyc6JycsCi0JCQkJCQkJCQlcICckSFRUUF9HRVRfVkFSUyc6JycsCi0JCQkJCQkJCQlcICckSFRUUF9QT1NUX1ZBUlMnOicnLAotCQkJCQkJCQkJXCAnJEhUVFBfUE9TVF9GSUxFUyc6JycsCi0JCQkJCQkJCQlcICckSFRUUF9TRVNTSU9OX1ZBUlMnOicnLAotCQkJCQkJCQkJXCAnJHBocF9lcnJvcm1zZyc6JycsCi0JCQkJCQkJCQlcICckdGhpcyc6JycKLQkJCQkJCQkJCVwgfQotCQkJIiB9fX0KLQotCQkJIiBJbnRlcm5hbCBzb2x1dGlvbiBmb3IgY3VycmVudCBmaWxlLgotCQkJbGV0IGZpbGUgPSBnZXRsaW5lKDEsICckJykKLQkJCWxldCBqZmlsZSA9IGpvaW4oZmlsZSwgJyAnKQotCQkJbGV0IGludF92YWxzID0gc3BsaXQoamZpbGUsICdcemVcJCcpCi0JCQlsZXQgaW50X3ZhcnMgPSB7fQotCQkJZm9yIGkgaW4gaW50X3ZhbHMKLQkJCQlpZiBpID1+ICdeXCRbYS16QS1aX1x4N2YtXHhmZl1bYS16QS1aXzAtOVx4N2YtXHhmZl0qXHMqPVxzKm5ldycKLQkJCQkJbGV0IHZhbCA9IG1hdGNoc3RyKGksIAotCQkJCQkJCVwgJ15cJFthLXpBLVpfXHg3Zi1ceGZmXVthLXpBLVpfMC05XHg3Zi1ceGZmXSonKS4nLT4nCi0JCQkJZWxzZQotCQkJCQlsZXQgdmFsID0gbWF0Y2hzdHIoaSwgCi0JCQkJCQkJXCAnXlwkW2EtekEtWl9ceDdmLVx4ZmZdW2EtekEtWl8wLTlceDdmLVx4ZmZdKicpCi0JCQkJZW5kaWYKLQkJCQlpZiB2YWwgIT0gJycKLQkJCQkJbGV0IGludF92YXJzW3ZhbF0gPSAnJwotCQkJCWVuZGlmCi0JCQllbmRmb3IKLQotCQkJY2FsbCBleHRlbmQoaW50X3ZhcnMsZzpwaHBfYnVpbHRpbl92YXJzKQotCQkJCi0JCQkiIGN0YWdzIGhhcyBnb29kIHN1cHBvcnQgZm9yIFBIUCwgdXNlIHRhZ3MgZmlsZSBmb3IgZXh0ZXJuYWwKLQkJCSIgdmFyaWFibGVzCi0JCQlsZXQgZm5hbWVzID0gam9pbihtYXAodGFnZmlsZXMoKSwgJ2VzY2FwZSh2OnZhbCwgIiBcXCIpJykpCi0JCQlsZXQgZXh0X3ZhcnMgPSB7fQotCQkJaWYgZm5hbWVzICE9ICcnCi0JCQkJbGV0IHNiYXNlID0gc3Vic3RpdHV0ZShhOmJhc2UsICdeXCQnLCAnJywgJycpCi0JCQkJZXhlICdzaWxlbnQhIHZpbWdyZXAgL14nLnNiYXNlLicuKlx0dlwoXHRcfCRcKS9qICcuZm5hbWVzCi0JCQkJbGV0IHFmbGlzdCA9IGdldHFmbGlzdCgpCi0JCQkJZm9yIGZpZWxkIGluIHFmbGlzdAotCQkJCQlsZXQgaXRlbSA9ICckJy5tYXRjaHN0cihmaWVsZFsndGV4dCddLCAnXlteWzpzcGFjZTpdXVwrJykKLQkJCQkJbGV0IG1fbWVudSA9ICcnCi0JCQkJCSIgQWRkIC0+IGlmIGl0IGlzIHBvc3NpYmxlIG9iamVjdCBkZWNsYXJhdGlvbgotCQkJCQkiIEhvdyB0byBkZXRlY3QgaWYgcHJldmlvdXMgbGluZSBpcyBoZWxwIGxpbmU/Ci0JCQkJCWlmIGZpZWxkWyd0ZXh0J10gPX4gaXRlbS4nXHMqPVxzKm5ld1xzXCsnCi0JCQkJCQlsZXQgaXRlbSA9IGl0ZW0uJy0+JwotCQkJCQkJbGV0IG1fbWVudSA9IG1hdGNoc3RyKGZpZWxkWyd0ZXh0J10sIAotCQkJCQkJCQlcICc9XHMqbmV3XHNcK1x6c1thLXpBLVpfMC05XHg3Zi1ceGZmXVwrXHplJykKLQkJCQkJZW5kaWYKLQkJCQkJbGV0IGV4dF92YXJzW2l0ZW1dID0gbV9tZW51Ci0JCQkJZW5kZm9yCi0JCQllbmRpZgotCi0JCQljYWxsIGV4dGVuZChpbnRfdmFycywgZXh0X3ZhcnMpCi0JCQlsZXQgZzphMCA9IGtleXMoaW50X3ZhcnMpCi0KLQkJCWZvciBtIGluIHNvcnQoa2V5cyhpbnRfdmFycykpCi0JCQkJaWYgbSA9fiAnXlwnLmE6YmFzZQotCQkJCQljYWxsIGFkZChyZXMsIG0pCi0JCQkJZW5kaWYKLQkJCWVuZGZvcgotCi0JCQlsZXQgaW50X2xpc3QgPSByZXMKLQotCQkJbGV0IGludF9kaWN0ID0gW10KLQkJCWZvciBpIGluIGludF9saXN0Ci0JCQkJaWYgaW50X3ZhcnNbaV0gIT0gJycKLQkJCQkJbGV0IGNsYXNzID0gJyAnCi0JCQkJCWlmIGludF92YXJzW2ldICE9ICcnCi0JCQkJCQlsZXQgY2xhc3MgPSBpLicgY2xhc3MgJwotCQkJCQllbmRpZgotCQkJCQlsZXQgaW50X2RpY3QgKz0gW3snd29yZCc6aSwgJ2luZm8nOmNsYXNzLmludF92YXJzW2ldLCAna2luZCc6J3YnfV0KLQkJCQllbHNlCi0JCQkJCWxldCBpbnRfZGljdCArPSBbeyd3b3JkJzppLCAna2luZCc6J3YnfV0KLQkJCQllbmRpZgotCQkJZW5kZm9yCi0KLQkJCXJldHVybiBpbnRfZGljdAotCisJCQlsZXQgYWRkZG9sbGFyID0gJyQnCiAJCWVsc2UKLQkJCSIgQ29tcGxldGUgZXZlcnl0aGluZyBlbHNlIC0gCi0JCQkiICArIGZ1bmN0aW9ucywgIERPTkUKLQkJCSIgICsga2V5d29yZHMgb2YgbGFuZ3VhZ2UgRE9ORQotCQkJIiAgKyBkZWZpbmVzIChjb25zdGFudCBkZWZpbml0aW9ucyksIERPTkUKLQkJCSIgICsgZXh0ZW5kIGtleXdvcmRzIGZvciBwcmVkZWZpbmVkIGNvbnN0YW50cywgRE9ORQotCQkJIiAgKyBjbGFzc2VzIChhZnRlciBuZXcpLCBET05FCi0JCQkiICArIGxpbWl0IGNob2ljZSBhZnRlciAtPiBhbmQgOjogdG8gZnVuY3MgYW5kIHZhcnMgRE9ORQotCi0JCQkiIEludGVybmFsIHNvbHV0aW9uIGZvciBmaW5kaW5nIGZ1bmN0aW9ucyBpbiBjdXJyZW50IGZpbGUuCi0JCQlsZXQgZmlsZSA9IGdldGxpbmUoMSwgJyQnKQotCQkJY2FsbCBmaWx0ZXIoZmlsZSwgJ3Y6dmFsID1+ICJmdW5jdGlvblxcc1xcKyZcXD9bYS16QS1aX1xceDdmLVxceGZmXVthLXpBLVpfMC05XFx4N2YtXFx4ZmZdKlxccyooIicpCi0JCQlsZXQgZm5hbWVzID0gam9pbihtYXAodGFnZmlsZXMoKSwgJ2VzY2FwZSh2OnZhbCwgIiBcXCIpJykpCi0JCQlsZXQgamZpbGUgPSBqb2luKGZpbGUsICcgJykKLQkJCWxldCBpbnRfdmFsdWVzID0gc3BsaXQoamZpbGUsICdmdW5jdGlvblxzXCsnKQotCQkJbGV0IGludF9mdW5jdGlvbnMgPSB7fQotCQkJZm9yIGkgaW4gaW50X3ZhbHVlcwotCQkJCWxldCBmX25hbWUgPSBtYXRjaHN0cihpLCAKLQkJCQkJCVwgJ14mXD9cenNbYS16QS1aX1x4N2YtXHhmZl1bYS16QS1aXzAtOVx4N2YtXHhmZl0qXHplJykKLQkJCQlsZXQgZl9hcmdzID0gbWF0Y2hzdHIoaSwgCi0JCQkJCQlcICdeJlw/W2EtekEtWl9ceDdmLVx4ZmZdW2EtekEtWl8wLTlceDdmLVx4ZmZdKlxzKihccypcenMuXHstfVx6ZVxzKilcX3MqeycpCi0JCQkJbGV0IGludF9mdW5jdGlvbnNbZl9uYW1lLicoJ10gPSBmX2FyZ3MuJyknCi0JCQllbmRmb3IKLQotCQkJIiBQcmVwYXJlIGxpc3Qgb2YgZnVuY3Rpb25zIGZyb20gdGFncyBmaWxlCi0JCQlsZXQgZXh0X2Z1bmN0aW9ucyA9IHt9Ci0JCQlpZiBmbmFtZXMgIT0gJycKLQkJCQlleGUgJ3NpbGVudCEgdmltZ3JlcCAvXicuYTpiYXNlLicuKlx0ZlwoXHRcfCRcKS9qICcuZm5hbWVzCi0JCQkJbGV0IHFmbGlzdCA9IGdldHFmbGlzdCgpCi0JCQkJZm9yIGZpZWxkIGluIHFmbGlzdAotCQkJCQkiIEZpbGUgbmFtZQotCQkJCQlsZXQgaXRlbSA9IG1hdGNoc3RyKGZpZWxkWyd0ZXh0J10sICdeW15bOnNwYWNlOl1dXCsnKQotCQkJCQlsZXQgZm5hbWUgPSBtYXRjaHN0cihmaWVsZFsndGV4dCddLCAnXHRcenNcZlwrXHplJykKLQkJCQkJbGV0IHByb3RvdHlwZSA9IG1hdGNoc3RyKGZpZWxkWyd0ZXh0J10sIAotCQkJCQkJCVwgJ2Z1bmN0aW9uXHNcKyZcP1teWzpzcGFjZTpdXVwrXHMqKFxzKlx6cy5cey19XHplXHMqKVxzKntcPycpCi0JCQkJCWxldCBleHRfZnVuY3Rpb25zW2l0ZW0uJygnXSA9IHByb3RvdHlwZS4nKSAtICcuZm5hbWUKLQkJCQllbmRmb3IKKwkJCWxldCBhZGRkb2xsYXIgPSAnJworCQllbmRpZgorCQlsZXQgZmlsZSA9IGdldGxpbmUoMSwgJyQnKQorCQlsZXQgamZpbGUgPSBqb2luKGZpbGUsICcgJykKKwkJbGV0IHNmaWxlID0gc3BsaXQoamZpbGUsICdcJCcpCisJCWxldCBpbnRfdmFycyA9IHt9CisJCWZvciBpIGluIHNmaWxlCisJCQlpZiBpID1+ICdeXCRbYS16QS1aX1x4N2YtXHhmZl1bYS16QS1aXzAtOVx4N2YtXHhmZl0qXHMqPVxzKm5ldycKKwkJCQlsZXQgdmFsID0gbWF0Y2hzdHIoaSwgJ15bYS16QS1aX1x4N2YtXHhmZl1bYS16QS1aXzAtOVx4N2YtXHhmZl0qJykuJy0+JworCQkJZWxzZQorCQkJCWxldCB2YWwgPSBtYXRjaHN0cihpLCAnXlthLXpBLVpfXHg3Zi1ceGZmXVthLXpBLVpfMC05XHg3Zi1ceGZmXSonKQogCQkJZW5kaWYKLQotCQkJIiBBbGwgZnVuY3Rpb25zCi0JCQljYWxsIGV4dGVuZChpbnRfZnVuY3Rpb25zLCBleHRfZnVuY3Rpb25zKQotCQkJY2FsbCBleHRlbmQoaW50X2Z1bmN0aW9ucywgZzpwaHBfYnVpbHRpbl9mdW5jdGlvbnMpCi0KLQkJCSIgSW50ZXJuYWwgc29sdXRpb24gZm9yIGZpbmRpbmcgY29uc3RhbnRzIGluIGN1cnJlbnQgZmlsZQotCQkJbGV0IGZpbGUgPSBnZXRsaW5lKDEsICckJykKLQkJCWNhbGwgZmlsdGVyKGZpbGUsICd2OnZhbCA9fiAiZGVmaW5lXFxzKigiJykKLQkJCWxldCBqZmlsZSA9IGpvaW4oZmlsZSwgJyAnKQotCQkJbGV0IGludF92YWx1ZXMgPSBzcGxpdChqZmlsZSwgJ2RlZmluZVxzKihccyonKQotCQkJbGV0IGludF9jb25zdGFudHMgPSB7fQotCQkJZm9yIGkgaW4gaW50X3ZhbHVlcwotCQkJCWxldCBjX25hbWUgPSBtYXRjaHN0cihpLCAnXChbIicnXVwpXHpzW2EtekEtWl9ceDdmLVx4ZmZdW2EtekEtWl8wLTlceDdmLVx4ZmZdKlx6ZVwxJykKLQkJCQkiIGxldCBjX3ZhbHVlID0gbWF0Y2hzdHIoaSwgCi0JCQkJIiBcICdcKFsiJyddXClbYS16QS1aX1x4N2YtXHhmZl1bYS16QS1aXzAtOVx4N2YtXHhmZl0qXDFccyosXHMqXHpzLlx7LX1cemVccyopJykKLQkJCQlpZiBjX25hbWUgIT0gJycKLQkJCQkJbGV0IGludF9jb25zdGFudHNbY19uYW1lXSA9ICcnICIgY192YWx1ZQotCQkJCWVuZGlmCi0JCQllbmRmb3IKLQotCQkJIiBQcmVwYXJlIGxpc3Qgb2YgY29uc3RhbnRzIGZyb20gdGFncyBmaWxlCi0JCQlsZXQgZm5hbWVzID0gam9pbihtYXAodGFnZmlsZXMoKSwgJ2VzY2FwZSh2OnZhbCwgIiBcXCIpJykpCi0JCQlsZXQgZXh0X2NvbnN0YW50cyA9IHt9Ci0JCQlpZiBmbmFtZXMgIT0gJycKLQkJCQlleGUgJ3NpbGVudCEgdmltZ3JlcCAvXicuYTpiYXNlLicuKlx0ZFwoXHRcfCRcKS9qICcuZm5hbWVzCi0JCQkJbGV0IHFmbGlzdCA9IGdldHFmbGlzdCgpCi0JCQkJZm9yIGZpZWxkIGluIHFmbGlzdAotCQkJCQlsZXQgaXRlbSA9IG1hdGNoc3RyKGZpZWxkWyd0ZXh0J10sICdeW15bOnNwYWNlOl1dXCsnKQotCQkJCQlsZXQgZXh0X2NvbnN0YW50c1tpdGVtXSA9ICcnCi0JCQkJZW5kZm9yCisJCQlpZiB2YWwgIX4gJycKKwkJCQlsZXQgaW50X3ZhcnNbYWRkZG9sbGFyLnZhbF0gPSAnJwogCQkJZW5kaWYKLQotCQkJIiBBbGwgY29uc3RhbnRzCi0JCQljYWxsIGV4dGVuZChpbnRfY29uc3RhbnRzLCBleHRfY29uc3RhbnRzKQotCQkJIiBUcmVhdCBrZXl3b3JkcyBhcyBjb25zdGFudHMKLQotCQkJbGV0IGFsbF92YWx1ZXMgPSB7fQotCi0JCQkiIE9uZSBiaWcgZGljdGlvbmFyeSBvZiBmdW5jdGlvbnMKLQkJCWNhbGwgZXh0ZW5kKGFsbF92YWx1ZXMsIGludF9mdW5jdGlvbnMpCi0KLQkJCSIgQWRkIGNvbnN0YW50cwotCQkJY2FsbCBleHRlbmQoYWxsX3ZhbHVlcywgaW50X2NvbnN0YW50cykKLQkJCSIgQWRkIGtleXdvcmRzCi0JCQljYWxsIGV4dGVuZChhbGxfdmFsdWVzLCBiOnBocF9rZXl3b3JkcykKLQotCQkJZm9yIG0gaW4gc29ydChrZXlzKGFsbF92YWx1ZXMpKQotCQkJCWlmIG0gPX4gJ14nLmE6YmFzZQotCQkJCQljYWxsIGFkZChyZXMsIG0pCisJCWVuZGZvcgorCQkKKwkJIiBjdGFncyBoYXMgZ29vZCBzdXBwb3J0IGZvciBQSFAsIHVzZSB0YWdzIGZpbGUgZm9yIGV4dGVybmFsCisJCSIgdmFyaWFibGVzCisJCWxldCBmbmFtZXMgPSBqb2luKG1hcCh0YWdmaWxlcygpLCAnZXNjYXBlKHY6dmFsLCAiIFxcIiknKSkKKwkJbGV0IGV4dF92YXJzID0ge30KKwkJaWYgZm5hbWVzICE9ICcnCisJCQlsZXQgc2Jhc2UgPSBzdWJzdGl0dXRlKGE6YmFzZSwgJ15cJCcsICcnLCAnJykKKwkJCWV4ZSAnc2lsZW50ISB2aW1ncmVwIC9eJy5zYmFzZS4nLipcdHZcKFx0XHwkXCkvaiAnLmZuYW1lcworCQkJbGV0IHFmbGlzdCA9IGdldHFmbGlzdCgpCisJCQlmb3IgZmllbGQgaW4gcWZsaXN0CisJCQkJbGV0IGl0ZW0gPSBtYXRjaHN0cihmaWVsZFsndGV4dCddLCAnXlteWzpzcGFjZTpdXVwrJykKKwkJCQkiIEFkZCAtPiBpZiBpdCBpcyBwb3NzaWJsZSBvYmplY3QgZGVjbGFyYXRpb24KKwkJCQlsZXQgY2xhc3NuYW1lID0gJycKKwkJCQlpZiBmaWVsZFsndGV4dCddID1+IGl0ZW0uJ1xzKj1ccypuZXdcc1wrJworCQkJCQlsZXQgaXRlbSA9IGl0ZW0uJy0+JworCQkJCQlsZXQgY2xhc3NuYW1lID0gbWF0Y2hzdHIoZmllbGRbJ3RleHQnXSwgCisJCQkJCQkJXCAnPVxzKm5ld1xzXCtcenNbYS16QS1aXzAtOVx4N2YtXHhmZl1cK1x6ZScpCiAJCQkJZW5kaWYKKwkJCQlsZXQgZXh0X3ZhcnNbYWRkZG9sbGFyLml0ZW1dID0gY2xhc3NuYW1lCiAJCQllbmRmb3IKLQotCQkJbGV0IGludF9saXN0ID0gcmVzCi0KLQkJCWxldCBmaW5hbF9saXN0ID0gW10KLQkJCWZvciBpIGluIGludF9saXN0Ci0JCQkJaWYgaGFzX2tleShpbnRfZnVuY3Rpb25zLCBpKQotCQkJCQlsZXQgZmluYWxfbGlzdCArPSAKLQkJCQkJCQlcIFt7J3dvcmQnOmksIAotCQkJCQkJCVwgICAnaW5mbyc6aS5pbnRfZnVuY3Rpb25zW2ldLAotCQkJCQkJCVwgICAna2luZCc6J2YnfV0KLQkJCQllbHNlaWYgaGFzX2tleShpbnRfY29uc3RhbnRzLCBpKQotCQkJCQlsZXQgZmluYWxfbGlzdCArPSBbeyd3b3JkJzppLCAna2luZCc6J2QnfV0KLQkJCQllbHNlCi0JCQkJCWxldCBmaW5hbF9saXN0ICs9IFt7J3dvcmQnOml9XQotCQkJCWVuZGlmCi0JCQllbmRmb3IKLQotCQkJcmV0dXJuIGZpbmFsX2xpc3QKLQogCQllbmRpZgogCisJCSIgTm93IHdlIGhhdmUgYWxsIHZhcmlhYmxlcyBpbiBpbnRfdmFycyBkaWN0aW9uYXJ5CisJCWNhbGwgZXh0ZW5kKGludF92YXJzLCBleHRfdmFycykKKworCQkiIEludGVybmFsIHNvbHV0aW9uIGZvciBmaW5kaW5nIGZ1bmN0aW9ucyBpbiBjdXJyZW50IGZpbGUuCisJCWxldCBmaWxlID0gZ2V0bGluZSgxLCAnJCcpCisJCWNhbGwgZmlsdGVyKGZpbGUsIAorCQkJCVwgJ3Y6dmFsID1+ICJmdW5jdGlvblxcc1xcKyZcXD9bYS16QS1aX1xceDdmLVxceGZmXVthLXpBLVpfMC05XFx4N2YtXFx4ZmZdKlxccyooIicpCisJCWxldCBmbmFtZXMgPSBqb2luKG1hcCh0YWdmaWxlcygpLCAnZXNjYXBlKHY6dmFsLCAiIFxcIiknKSkKKwkJbGV0IGpmaWxlID0gam9pbihmaWxlLCAnICcpCisJCWxldCBpbnRfdmFsdWVzID0gc3BsaXQoamZpbGUsICdmdW5jdGlvblxzXCsnKQorCQlsZXQgaW50X2Z1bmN0aW9ucyA9IHt9CisJCWZvciBpIGluIGludF92YWx1ZXMKKwkJCWxldCBmX25hbWUgPSBtYXRjaHN0cihpLCAKKwkJCQkJXCAnXiZcP1x6c1thLXpBLVpfXHg3Zi1ceGZmXVthLXpBLVpfMC05XHg3Zi1ceGZmXSpcemUnKQorCQkJbGV0IGZfYXJncyA9IG1hdGNoc3RyKGksIAorCQkJCQlcICdeJlw/W2EtekEtWl9ceDdmLVx4ZmZdW2EtekEtWl8wLTlceDdmLVx4ZmZdKlxzKihcenMuXHstfVx6ZSlcX3MqeycpCisJCQlsZXQgaW50X2Z1bmN0aW9uc1tmX25hbWUuJygnXSA9IGZfYXJncy4nKScKKwkJZW5kZm9yCisKKwkJIiBQcmVwYXJlIGxpc3Qgb2YgZnVuY3Rpb25zIGZyb20gdGFncyBmaWxlCisJCWxldCBleHRfZnVuY3Rpb25zID0ge30KKwkJaWYgZm5hbWVzICE9ICcnCisJCQlleGUgJ3NpbGVudCEgdmltZ3JlcCAvXicuYTpiYXNlLicuKlx0ZlwoXHRcfCRcKS9qICcuZm5hbWVzCisJCQlsZXQgcWZsaXN0ID0gZ2V0cWZsaXN0KCkKKwkJCWZvciBmaWVsZCBpbiBxZmxpc3QKKwkJCQkiIEZpbGUgbmFtZQorCQkJCWxldCBpdGVtID0gbWF0Y2hzdHIoZmllbGRbJ3RleHQnXSwgJ15bXls6c3BhY2U6XV1cKycpCisJCQkJbGV0IGZuYW1lID0gbWF0Y2hzdHIoZmllbGRbJ3RleHQnXSwgJ1x0XHpzXGZcK1x6ZScpCisJCQkJbGV0IHByb3RvdHlwZSA9IG1hdGNoc3RyKGZpZWxkWyd0ZXh0J10sIAorCQkJCQkJXCAnZnVuY3Rpb25cc1wrJlw/W15bOnNwYWNlOl1dXCtccyooXHMqXHpzLlx7LX1cemVccyopXHMqe1w/JykKKwkJCQlsZXQgZXh0X2Z1bmN0aW9uc1tpdGVtLicoJ10gPSBwcm90b3R5cGUuJykgLSAnLmZuYW1lCisJCQllbmRmb3IKKwkJZW5kaWYKKworCQlsZXQgYWxsX3ZhbHVlcyA9IHt9CisJCWNhbGwgZXh0ZW5kKGFsbF92YWx1ZXMsIGludF9mdW5jdGlvbnMpCisJCWNhbGwgZXh0ZW5kKGFsbF92YWx1ZXMsIGV4dF9mdW5jdGlvbnMpCisJCWNhbGwgZXh0ZW5kKGFsbF92YWx1ZXMsIGludF92YXJzKSAiIGV4dGVybmFsIHZhcmlhYmxlcyBhcmUgYWxyZWFkeSBpbgorCQljYWxsIGV4dGVuZChhbGxfdmFsdWVzLCBnOnBocF9idWlsdGluX29iamVjdF9mdW5jdGlvbnMpCisKKwkJZm9yIG0gaW4gc29ydChrZXlzKGFsbF92YWx1ZXMpKQorCQkJaWYgbSA9fiAnXCheXHw6OlwpJy5hOmJhc2UKKwkJCQljYWxsIGFkZChyZXMsIG0pCisJCQllbmRpZgorCQllbmRmb3IKKworCQlsZXQgc3RhcnRfbGlzdCA9IHJlcworCisJCWxldCBmaW5hbF9saXN0ID0gW10KKwkJZm9yIGkgaW4gc3RhcnRfbGlzdAorCQkJaWYgaGFzX2tleShpbnRfdmFycywgaSkKKwkJCQlsZXQgY2xhc3MgPSAnICcKKwkJCQlpZiBhbGxfdmFsdWVzW2ldICE9ICcnCisJCQkJCWxldCBjbGFzcyA9IGkuJyBjbGFzcyAnCisJCQkJZW5kaWYKKwkJCQlsZXQgZmluYWxfbGlzdCArPSBbeyd3b3JkJzppLCAnaW5mbyc6Y2xhc3MuYWxsX3ZhbHVlc1tpXSwgJ2tpbmQnOid2J31dCisJCQllbHNlCisJCQkJbGV0IGZpbmFsX2xpc3QgKz0gCisJCQkJCQlcIFt7J3dvcmQnOnN1YnN0aXR1dGUoaSwgJy4qOjonLCAnJywgJycpLCAKKwkJCQkJCVwgICAnaW5mbyc6aS5hbGxfdmFsdWVzW2ldLAorCQkJCQkJXCAgICdraW5kJzonZid9XQorCQkJZW5kaWYKKwkJZW5kZm9yCisKKwkJcmV0dXJuIGZpbmFsX2xpc3QKIAllbmRpZgorCisJaWYgYTpiYXNlID1+ICdeXCQnCisJCSIgQ29tcGxldGUgdmFyaWFibGVzCisJCSIgQnVpbHQtaW4gdmFyaWFibGVzIHt7eworCQlsZXQgZzpwaHBfYnVpbHRpbl92YXJzID0geyckR0xPQkFMUyc6JycsCisJCQkJCQkJCVwgJyRfU0VSVkVSJzonJywKKwkJCQkJCQkJXCAnJF9HRVQnOicnLAorCQkJCQkJCQlcICckX1BPU1QnOicnLAorCQkJCQkJCQlcICckX0NPT0tJRSc6JycsCisJCQkJCQkJCVwgJyRfRklMRVMnOicnLAorCQkJCQkJCQlcICckX0VOVic6JycsCisJCQkJCQkJCVwgJyRfUkVRVUVTVCc6JycsCisJCQkJCQkJCVwgJyRfU0VTU0lPTic6JycsCisJCQkJCQkJCVwgJyRIVFRQX1NFUlZFUl9WQVJTJzonJywKKwkJCQkJCQkJXCAnJEhUVFBfRU5WX1ZBUlMnOicnLAorCQkJCQkJCQlcICckSFRUUF9DT09LSUVfVkFSUyc6JycsCisJCQkJCQkJCVwgJyRIVFRQX0dFVF9WQVJTJzonJywKKwkJCQkJCQkJXCAnJEhUVFBfUE9TVF9WQVJTJzonJywKKwkJCQkJCQkJXCAnJEhUVFBfUE9TVF9GSUxFUyc6JycsCisJCQkJCQkJCVwgJyRIVFRQX1NFU1NJT05fVkFSUyc6JycsCisJCQkJCQkJCVwgJyRwaHBfZXJyb3Jtc2cnOicnLAorCQkJCQkJCQlcICckdGhpcyc6JycKKwkJCQkJCQkJXCB9CisJCSIgfX19CisKKwkJIiBJbnRlcm5hbCBzb2x1dGlvbiBmb3IgY3VycmVudCBmaWxlLgorCQlsZXQgZmlsZSA9IGdldGxpbmUoMSwgJyQnKQorCQlsZXQgamZpbGUgPSBqb2luKGZpbGUsICcgJykKKwkJbGV0IGludF92YWxzID0gc3BsaXQoamZpbGUsICdcemVcJCcpCisJCWxldCBpbnRfdmFycyA9IHt9CisJCWZvciBpIGluIGludF92YWxzCisJCQlpZiBpID1+ICdeXCRbYS16QS1aX1x4N2YtXHhmZl1bYS16QS1aXzAtOVx4N2YtXHhmZl0qXHMqPVxzKm5ldycKKwkJCQlsZXQgdmFsID0gbWF0Y2hzdHIoaSwgCisJCQkJCQlcICdeXCRbYS16QS1aX1x4N2YtXHhmZl1bYS16QS1aXzAtOVx4N2YtXHhmZl0qJykuJy0+JworCQkJZWxzZQorCQkJCWxldCB2YWwgPSBtYXRjaHN0cihpLCAKKwkJCQkJCVwgJ15cJFthLXpBLVpfXHg3Zi1ceGZmXVthLXpBLVpfMC05XHg3Zi1ceGZmXSonKQorCQkJZW5kaWYKKwkJCWlmIHZhbCAhPSAnJworCQkJCWxldCBpbnRfdmFyc1t2YWxdID0gJycKKwkJCWVuZGlmCisJCWVuZGZvcgorCisJCWNhbGwgZXh0ZW5kKGludF92YXJzLGc6cGhwX2J1aWx0aW5fdmFycykKKwkJCisJCSIgY3RhZ3MgaGFzIHN1cHBvcnQgZm9yIFBIUCwgdXNlIHRhZ3MgZmlsZSBmb3IgZXh0ZXJuYWwgdmFyaWFibGVzCisJCWxldCBmbmFtZXMgPSBqb2luKG1hcCh0YWdmaWxlcygpLCAnZXNjYXBlKHY6dmFsLCAiIFxcIiknKSkKKwkJbGV0IGV4dF92YXJzID0ge30KKwkJaWYgZm5hbWVzICE9ICcnCisJCQlsZXQgc2Jhc2UgPSBzdWJzdGl0dXRlKGE6YmFzZSwgJ15cJCcsICcnLCAnJykKKwkJCWV4ZSAnc2lsZW50ISB2aW1ncmVwIC9eJy5zYmFzZS4nLipcdHZcKFx0XHwkXCkvaiAnLmZuYW1lcworCQkJbGV0IHFmbGlzdCA9IGdldHFmbGlzdCgpCisJCQlmb3IgZmllbGQgaW4gcWZsaXN0CisJCQkJbGV0IGl0ZW0gPSAnJCcubWF0Y2hzdHIoZmllbGRbJ3RleHQnXSwgJ15bXls6c3BhY2U6XV1cKycpCisJCQkJbGV0IG1fbWVudSA9ICcnCisJCQkJIiBBZGQgLT4gaWYgaXQgaXMgcG9zc2libGUgb2JqZWN0IGRlY2xhcmF0aW9uCisJCQkJaWYgZmllbGRbJ3RleHQnXSA9fiBpdGVtLidccyo9XHMqbmV3XHNcKycKKwkJCQkJbGV0IGl0ZW0gPSBpdGVtLictPicKKwkJCQkJbGV0IG1fbWVudSA9IG1hdGNoc3RyKGZpZWxkWyd0ZXh0J10sIAorCQkJCQkJCVwgJz1ccypuZXdcc1wrXHpzW2EtekEtWl8wLTlceDdmLVx4ZmZdXCtcemUnKQorCQkJCWVuZGlmCisJCQkJbGV0IGV4dF92YXJzW2l0ZW1dID0gbV9tZW51CisJCQllbmRmb3IKKwkJZW5kaWYKKworCQljYWxsIGV4dGVuZChpbnRfdmFycywgZXh0X3ZhcnMpCisJCWxldCBnOmEwID0ga2V5cyhpbnRfdmFycykKKworCQlmb3IgbSBpbiBzb3J0KGtleXMoaW50X3ZhcnMpKQorCQkJaWYgbSA9fiAnXlwnLmE6YmFzZQorCQkJCWNhbGwgYWRkKHJlcywgbSkKKwkJCWVuZGlmCisJCWVuZGZvcgorCisJCWxldCBpbnRfbGlzdCA9IHJlcworCisJCWxldCBpbnRfZGljdCA9IFtdCisJCWZvciBpIGluIGludF9saXN0CisJCQlpZiBpbnRfdmFyc1tpXSAhPSAnJworCQkJCWxldCBjbGFzcyA9ICcgJworCQkJCWlmIGludF92YXJzW2ldICE9ICcnCisJCQkJCWxldCBjbGFzcyA9IGkuJyBjbGFzcyAnCisJCQkJZW5kaWYKKwkJCQlsZXQgaW50X2RpY3QgKz0gW3snd29yZCc6aSwgJ2luZm8nOmNsYXNzLmludF92YXJzW2ldLCAna2luZCc6J3YnfV0KKwkJCWVsc2UKKwkJCQlsZXQgaW50X2RpY3QgKz0gW3snd29yZCc6aSwgJ2tpbmQnOid2J31dCisJCQllbmRpZgorCQllbmRmb3IKKworCQlyZXR1cm4gaW50X2RpY3QKKworCWVsc2UKKwkJIiBDb21wbGV0ZSBldmVyeXRoaW5nIGVsc2UgLSAKKwkJIiAgKyBmdW5jdGlvbnMsICBET05FCisJCSIgICsga2V5d29yZHMgb2YgbGFuZ3VhZ2UgRE9ORQorCQkiICArIGRlZmluZXMgKGNvbnN0YW50IGRlZmluaXRpb25zKSwgRE9ORQorCQkiICArIGV4dGVuZCBrZXl3b3JkcyBmb3IgcHJlZGVmaW5lZCBjb25zdGFudHMsIERPTkUKKwkJIiAgKyBjbGFzc2VzIChhZnRlciBuZXcpLCBET05FCisJCSIgICsgbGltaXQgY2hvaWNlIGFmdGVyIC0+IGFuZCA6OiB0byBmdW5jcyBhbmQgdmFycyBET05FCisKKwkJIiBJbnRlcm5hbCBzb2x1dGlvbiBmb3IgZmluZGluZyBmdW5jdGlvbnMgaW4gY3VycmVudCBmaWxlLgorCQlsZXQgZmlsZSA9IGdldGxpbmUoMSwgJyQnKQorCQljYWxsIGZpbHRlcihmaWxlLCAKKwkJCQlcICd2OnZhbCA9fiAiZnVuY3Rpb25cXHNcXCsmXFw/W2EtekEtWl9cXHg3Zi1cXHhmZl1bYS16QS1aXzAtOVxceDdmLVxceGZmXSpcXHMqKCInKQorCQlsZXQgZm5hbWVzID0gam9pbihtYXAodGFnZmlsZXMoKSwgJ2VzY2FwZSh2OnZhbCwgIiBcXCIpJykpCisJCWxldCBqZmlsZSA9IGpvaW4oZmlsZSwgJyAnKQorCQlsZXQgaW50X3ZhbHVlcyA9IHNwbGl0KGpmaWxlLCAnZnVuY3Rpb25cc1wrJykKKwkJbGV0IGludF9mdW5jdGlvbnMgPSB7fQorCQlmb3IgaSBpbiBpbnRfdmFsdWVzCisJCQlsZXQgZl9uYW1lID0gbWF0Y2hzdHIoaSwgCisJCQkJCVwgJ14mXD9cenNbYS16QS1aX1x4N2YtXHhmZl1bYS16QS1aXzAtOVx4N2YtXHhmZl0qXHplJykKKwkJCWxldCBmX2FyZ3MgPSBtYXRjaHN0cihpLCAKKwkJCQkJXCAnXiZcP1thLXpBLVpfXHg3Zi1ceGZmXVthLXpBLVpfMC05XHg3Zi1ceGZmXSpccyooXHMqXHpzLlx7LX1cemVccyopXF9zKnsnKQorCQkJbGV0IGludF9mdW5jdGlvbnNbZl9uYW1lLicoJ10gPSBmX2FyZ3MuJyknCisJCWVuZGZvcgorCisJCSIgUHJlcGFyZSBsaXN0IG9mIGZ1bmN0aW9ucyBmcm9tIHRhZ3MgZmlsZQorCQlsZXQgZXh0X2Z1bmN0aW9ucyA9IHt9CisJCWlmIGZuYW1lcyAhPSAnJworCQkJZXhlICdzaWxlbnQhIHZpbWdyZXAgL14nLmE6YmFzZS4nLipcdGZcKFx0XHwkXCkvaiAnLmZuYW1lcworCQkJbGV0IHFmbGlzdCA9IGdldHFmbGlzdCgpCisJCQlmb3IgZmllbGQgaW4gcWZsaXN0CisJCQkJIiBGaWxlIG5hbWUKKwkJCQlsZXQgaXRlbSA9IG1hdGNoc3RyKGZpZWxkWyd0ZXh0J10sICdeW15bOnNwYWNlOl1dXCsnKQorCQkJCWxldCBmbmFtZSA9IG1hdGNoc3RyKGZpZWxkWyd0ZXh0J10sICdcdFx6c1xmXCtcemUnKQorCQkJCWxldCBwcm90b3R5cGUgPSBtYXRjaHN0cihmaWVsZFsndGV4dCddLCAKKwkJCQkJCVwgJ2Z1bmN0aW9uXHNcKyZcP1teWzpzcGFjZTpdXVwrXHMqKFxzKlx6cy5cey19XHplXHMqKVxzKntcPycpCisJCQkJbGV0IGV4dF9mdW5jdGlvbnNbaXRlbS4nKCddID0gcHJvdG90eXBlLicpIC0gJy5mbmFtZQorCQkJZW5kZm9yCisJCWVuZGlmCisKKwkJIiBBbGwgZnVuY3Rpb25zCisJCWNhbGwgZXh0ZW5kKGludF9mdW5jdGlvbnMsIGV4dF9mdW5jdGlvbnMpCisJCWNhbGwgZXh0ZW5kKGludF9mdW5jdGlvbnMsIGc6cGhwX2J1aWx0aW5fZnVuY3Rpb25zKQorCisJCSIgSW50ZXJuYWwgc29sdXRpb24gZm9yIGZpbmRpbmcgY29uc3RhbnRzIGluIGN1cnJlbnQgZmlsZQorCQlsZXQgZmlsZSA9IGdldGxpbmUoMSwgJyQnKQorCQljYWxsIGZpbHRlcihmaWxlLCAndjp2YWwgPX4gImRlZmluZVxccyooIicpCisJCWxldCBqZmlsZSA9IGpvaW4oZmlsZSwgJyAnKQorCQlsZXQgaW50X3ZhbHVlcyA9IHNwbGl0KGpmaWxlLCAnZGVmaW5lXHMqKFxzKicpCisJCWxldCBpbnRfY29uc3RhbnRzID0ge30KKwkJZm9yIGkgaW4gaW50X3ZhbHVlcworCQkJbGV0IGNfbmFtZSA9IG1hdGNoc3RyKGksICdcKFsiJyddXClcenNbYS16QS1aX1x4N2YtXHhmZl1bYS16QS1aXzAtOVx4N2YtXHhmZl0qXHplXDEnKQorCQkJIiBsZXQgY192YWx1ZSA9IG1hdGNoc3RyKGksIAorCQkJIiBcICdcKFsiJyddXClbYS16QS1aX1x4N2YtXHhmZl1bYS16QS1aXzAtOVx4N2YtXHhmZl0qXDFccyosXHMqXHpzLlx7LX1cemVccyopJykKKwkJCWlmIGNfbmFtZSAhPSAnJworCQkJCWxldCBpbnRfY29uc3RhbnRzW2NfbmFtZV0gPSAnJyAiIGNfdmFsdWUKKwkJCWVuZGlmCisJCWVuZGZvcgorCisJCSIgUHJlcGFyZSBsaXN0IG9mIGNvbnN0YW50cyBmcm9tIHRhZ3MgZmlsZQorCQlsZXQgZm5hbWVzID0gam9pbihtYXAodGFnZmlsZXMoKSwgJ2VzY2FwZSh2OnZhbCwgIiBcXCIpJykpCisJCWxldCBleHRfY29uc3RhbnRzID0ge30KKwkJaWYgZm5hbWVzICE9ICcnCisJCQlleGUgJ3NpbGVudCEgdmltZ3JlcCAvXicuYTpiYXNlLicuKlx0ZFwoXHRcfCRcKS9qICcuZm5hbWVzCisJCQlsZXQgcWZsaXN0ID0gZ2V0cWZsaXN0KCkKKwkJCWZvciBmaWVsZCBpbiBxZmxpc3QKKwkJCQlsZXQgaXRlbSA9IG1hdGNoc3RyKGZpZWxkWyd0ZXh0J10sICdeW15bOnNwYWNlOl1dXCsnKQorCQkJCWxldCBleHRfY29uc3RhbnRzW2l0ZW1dID0gJycKKwkJCWVuZGZvcgorCQllbmRpZgorCisJCSIgQWxsIGNvbnN0YW50cworCQljYWxsIGV4dGVuZChpbnRfY29uc3RhbnRzLCBleHRfY29uc3RhbnRzKQorCQkiIFRyZWF0IGtleXdvcmRzIGFzIGNvbnN0YW50cworCisJCWxldCBhbGxfdmFsdWVzID0ge30KKworCQkiIE9uZSBiaWcgZGljdGlvbmFyeSBvZiBmdW5jdGlvbnMKKwkJY2FsbCBleHRlbmQoYWxsX3ZhbHVlcywgaW50X2Z1bmN0aW9ucykKKworCQkiIEFkZCBjb25zdGFudHMKKwkJY2FsbCBleHRlbmQoYWxsX3ZhbHVlcywgaW50X2NvbnN0YW50cykKKwkJIiBBZGQga2V5d29yZHMKKwkJY2FsbCBleHRlbmQoYWxsX3ZhbHVlcywgZzpwaHBfa2V5d29yZHMpCisKKwkJZm9yIG0gaW4gc29ydChrZXlzKGFsbF92YWx1ZXMpKQorCQkJaWYgbSA9fiAnXicuYTpiYXNlCisJCQkJY2FsbCBhZGQocmVzLCBtKQorCQkJZW5kaWYKKwkJZW5kZm9yCisKKwkJbGV0IGludF9saXN0ID0gcmVzCisKKwkJbGV0IGZpbmFsX2xpc3QgPSBbXQorCQlmb3IgaSBpbiBpbnRfbGlzdAorCQkJaWYgaGFzX2tleShpbnRfZnVuY3Rpb25zLCBpKQorCQkJCWxldCBmaW5hbF9saXN0ICs9IAorCQkJCQkJXCBbeyd3b3JkJzppLCAKKwkJCQkJCVwgICAnaW5mbyc6aS5pbnRfZnVuY3Rpb25zW2ldLAorCQkJCQkJXCAgICdraW5kJzonZid9XQorCQkJZWxzZWlmIGhhc19rZXkoaW50X2NvbnN0YW50cywgaSkKKwkJCQlsZXQgZmluYWxfbGlzdCArPSBbeyd3b3JkJzppLCAna2luZCc6J2QnfV0KKwkJCWVsc2UKKwkJCQlsZXQgZmluYWxfbGlzdCArPSBbeyd3b3JkJzppfV0KKwkJCWVuZGlmCisJCWVuZGZvcgorCisJCXJldHVybiBmaW5hbF9saXN0CisKKwllbmRpZgorCiBlbmRmdW5jdGlvbgogCitmdW5jdGlvbiEgcGhwY29tcGxldGUjR2V0Q2xhc3NOYW1lKHNjb250ZXh0KSAiIHt7eworCSIgR2V0IGNsYXNzIG5hbWUKKwkiIENsYXNzIG5hbWUgY2FuIGJlIGRldGVjdGVkIGluIGZldyB3YXlzOgorCSIgQHZhciAkbXlWYXIgY2xhc3MKKwkiIGxpbmUgYWJvdmUKKwkiIG9yIGxpbmUgaW4gdGFncyBmaWxlCisKKwlsZXQgb2JqZWN0ID0gbWF0Y2hzdHIoYTpzY29udGV4dCwgJ1x6c1thLXpBLVpfMC05XHg3Zi1ceGZmXVwrXHplLT4nKQorCWxldCBpID0gMQorCXdoaWxlIGkgPCBsaW5lKCcuJykKKwkJbGV0IGxpbmUgPSBnZXRsaW5lKGxpbmUoJy4nKS1pKQorCQlpZiBsaW5lID1+ICdeXHMqXCpcL1w/XHMqJCcKKwkJCWxldCBpICs9IDEKKwkJCWNvbnRpbnVlCisJCWVsc2UKKwkJCWlmIGxpbmUgPX4gJ0B2YXJcc1wrXCQnLm9iamVjdC4nXHNcK1thLXpBLVpfMC05XHg3Zi1ceGZmXVwrJworCQkJCWxldCBjbGFzc25hbWUgPSBtYXRjaHN0cihsaW5lLCAnQHZhclxzXCtcJCcub2JqZWN0Lidcc1wrXHpzW2EtekEtWl8wLTlceDdmLVx4ZmZdXCsnKQorCQkJCXJldHVybiBjbGFzc25hbWUKKwkJCWVsc2UKKwkJCQlicmVhaworCQkJZW5kaWYKKwkJZW5kaWYKKwllbmR3aGlsZQorCisJIiBPSywgZmlyc3Qgd2F5IGZhaWxlZCwgbm93IGNoZWNrIHRhZ3MgZmlsZShzKQorCWxldCBmbmFtZXMgPSBqb2luKG1hcCh0YWdmaWxlcygpLCAnZXNjYXBlKHY6dmFsLCAiIFxcIiknKSkKKwlleGUgJ3NpbGVudCEgdmltZ3JlcCAvXicub2JqZWN0LicuKlwkJy5vYmplY3QuJy4qPVxzKm5ld1xzXCsuKlx0dlwoXHRcfCRcKS9qICcuZm5hbWVzCisJbGV0IHFmbGlzdCA9IGdldHFmbGlzdCgpCisJaWYgbGVuKHFmbGlzdCkgPT0gMAorCQlyZXR1cm4gW10KKwllbmRpZgorCSIgSW4gYWxsIHByb3Blcmx5IG1hbmFnZWQgcHJvamVjdHMgaXQgc2hvdWxkIGJlIG9uZSBpdGVtIGxpc3QsIGV2ZW4gaWYgaXQKKwkiICppcyogbG9uZ2VyIHdlIGNhbm5vdCBzb2x2ZSBjb25mbGljdHMsIGFzc3VtZSBpdCBpcyBmaXJzdCBlbGVtZW50CisJbGV0IGNsYXNzbmFtZSA9IG1hdGNoc3RyKHFmbGlzdFswXVsndGV4dCddLCAnPVxzKm5ld1xzXCtcenNbYS16QS1aXzAtOVx4N2YtXHhmZl1cK1x6ZScpCisJcmV0dXJuIGNsYXNzbmFtZQorCitlbmRmdW5jdGlvbgorIiB9fX0KK2Z1bmN0aW9uISBwaHBjb21wbGV0ZSNHZXRDbGFzc0xvY2F0aW9uKGNsYXNzbmFtZSkgIiB7e3sKKwkiIEdldCBjbGFzcyBsb2NhdGlvbgorCWZvciBmbmFtZSBpbiB0YWdmaWxlcygpCisJCWxldCBmaGVhZCA9IGZuYW1lbW9kaWZ5KGZuYW1lLCAiOmgiKQorCQlpZiBmaGVhZCAhPSAnJworCQkJbGV0IHBzZXAgPSAnLycKKwkJCWxldCBmaGVhZCAuPSBwc2VwCisJCWVuZGlmCisJCWxldCBmbmFtZSA9IGVzY2FwZShmbmFtZSwgIiBcXCIpCisJCWV4ZSAnc2lsZW50ISB2aW1ncmVwIC9eJy5hOmNsYXNzbmFtZS4nLipcdGNcKFx0XHwkXCkvaiAnLmZuYW1lCisJCWxldCBxZmxpc3QgPSBnZXRxZmxpc3QoKQorCQkiIEFzIGluIEdldENsYXNzTmFtZSB3ZSBjYW4gbWFuYWdlIG9ubHkgb25lIGVsZW1lbnQKKwkJbGV0IGNsYXNzbG9jYXRpb24gPSBtYXRjaHN0cihxZmxpc3RbMF1bJ3RleHQnXSwgJ1x0XHpzXGZcK1x6ZVx0JykKKwkJIiBBbmQgb25seSBvbmUgY2xhc3MgbG9jYXRpb24KKwkJaWYgY2xhc3Nsb2NhdGlvbiAhPSAnJworCQkJbGV0IHBzZXQgPSAnLycgIiBOb3RlOiBzbGFzaCBpcyBwb3RlbnRpYWwgcHJvYmxlbSEKKwkJCWxldCBjbGFzc2xvY2F0aW9uID0gZmhlYWQuY2xhc3Nsb2NhdGlvbgorCQkJcmV0dXJuIGNsYXNzbG9jYXRpb24KKwkJZW5kaWYKKwllbmRmb3IKKworZW5kZnVuY3Rpb24KKyIgfX19CisKK2Z1bmN0aW9uISBwaHBjb21wbGV0ZSNHZXRDbGFzc0NvbnRlbnRzKGZpbGUsIG5hbWUpICIge3t7CisJbGV0IGNmaWxlID0gam9pbihhOmZpbGUsICJcbiIpCisJIiBXZSB1c2UgbmV3IGJ1ZmZlciBhbmQgKGxhdGVyKSBub3JtYWwhIGJlY2F1c2UgCisJIiB0aGlzIGlzIHRoZSBtb3N0IGVmZmljaWVudCB3YXkuIFRoZSBvdGhlciB3YXkKKwkiIGlzIHRvIGdvIHRocm91Z2ggdGhlIGxvb29uZyBzdHJpbmcgbG9va2luZyBmb3IKKwkiIG1hdGNoaW5nIHt9IAorCWJlbG93IDFuZXcKKwkwcHV0ID1jZmlsZQorCWNhbGwgc2VhcmNoKCdjbGFzc1xzXCsnLmE6bmFtZSkKKwlsZXQgY2ZsaW5lID0gbGluZSgnLicpCisJIiBDYXRjaCBleHRlbmRzCisJaWYgZ2V0bGluZSgnLicpID1+ICdleHRlbmRzJworCQlsZXQgZXh0ZW5kc19jbGFzcyA9IG1hdGNoc3RyKGdldGxpbmUoJy4nKSwgCisJCQkJXCAnY2xhc3Ncc1wrJy5hOm5hbWUuJ1xzXCtleHRlbmRzXHNcK1x6c1thLXpBLVpfMC05XHg3Zi1ceGZmXVwrXHplJykKKwllbHNlCisJCWxldCBleHRlbmRzX2NsYXNzID0gJycKKwllbmRpZgorCW5vcm1hbCEgJQorCWxldCBjbGFzc2MgPSBnZXRsaW5lKGNmbGluZSwgIi4iKQorCWxldCBjbGFzc2NvbnRlbnQgPSBqb2luKGNsYXNzYywgIlxuIikKKworCWJ3ISAlCisJaWYgZXh0ZW5kc19jbGFzcyAhPSAnJworCQlsZXQgY2xhc3Nsb2NhdGlvbiA9IHBocGNvbXBsZXRlI0dldENsYXNzTG9jYXRpb24oZXh0ZW5kc19jbGFzcykKKwkJaWYgZmlsZXJlYWRhYmxlKGNsYXNzbG9jYXRpb24pCisJCQlsZXQgY2xhc3NmaWxlID0gcmVhZGZpbGUoY2xhc3Nsb2NhdGlvbikKKwkJCWxldCBjbGFzc2NvbnRlbnQgLj0gIlxuIi5waHBjb21wbGV0ZSNHZXRDbGFzc0NvbnRlbnRzKGNsYXNzZmlsZSwgZXh0ZW5kc19jbGFzcykKKwkJZW5kaWYKKwllbmRpZgorCisJcmV0dXJuIGNsYXNzY29udGVudAorZW5kZnVuY3Rpb24KKyIgfX19CisKIGZ1bmN0aW9uISBwaHBjb21wbGV0ZSNMb2FkRGF0YSgpICIge3t7CiAiIEtleXdvcmRzL3Jlc2VydmVkIHdvcmRzLCBhbGwgb3RoZXIgc3BlY2lhbCB0aGluZ3Mge3t7CiAiIExhdGVyIGl0IGlzIHBvc3NpYmxlIHRvIGFkZCBzb21lIGhlbHAgdG8gdmFsdWVzLCBvciB0eXBlIG9mCiAiIGRlZmluZWQgdmFyaWFibGUKLWxldCBiOnBocF9rZXl3b3JkcyA9IHsKK2xldCBnOnBocF9rZXl3b3JkcyA9IHsKIFwgJ1BIUF9TRUxGJzonJywKIFwgJ2FyZ3YnOicnLAogXCAnYXJnYyc6JycsCmRpZmYgLS1naXQgYS9ydW50aW1lL2F1dG9sb2FkL3NxbGNvbXBsZXRlLnZpbSBiL3J1bnRpbWUvYXV0b2xvYWQvc3FsY29tcGxldGUudmltCmluZGV4IDEyM2YwMDQuLmIwNDE1YmMgMTAwNjQ0Ci0tLSBhL3J1bnRpbWUvYXV0b2xvYWQvc3FsY29tcGxldGUudmltCisrKyBiL3J1bnRpbWUvYXV0b2xvYWQvc3FsY29tcGxldGUudmltCkBAIC0xLDggKzEsOCBAQAogIiBWaW0gY29tcGxldGlvbiBzY3JpcHQKICIgTGFuZ3VhZ2U6ICAgIFNRTAogIiBNYWludGFpbmVyOiAgRGF2aWQgRmlzaGJ1cm4gPGZpc2hidXJuQGlhbnl3aGVyZS5jb20+Ci0iIFZlcnNpb246ICAgICAxLjAKLSIgTGFzdCBDaGFuZ2U6IFR1ZSBNYXIgMjggMjAwNiA0OjM5OjQ5IFBNCisiIFZlcnNpb246ICAgICAyLjAKKyIgTGFzdCBDaGFuZ2U6IE1vbiBBcHIgMDMgMjAwNiAxMDoyMTozNiBQTQogCiAiIFNldCBjb21wbGV0aW9uIHdpdGggQ1RSTC1YIENUUkwtTyB0byBhdXRvbG9hZGVkIGZ1bmN0aW9uLgogIiBUaGlzIGNoZWNrIGlzIGluIHBsYWNlIGluIGNhc2UgdGhpcyBzY3JpcHQgaXMKQEAgLTIxLDIwICsyMSwyMCBAQAogbGV0IGc6bG9hZGVkX3NxbF9jb21wbGV0aW9uID0gMQogCiAiIE1haW50YWlucyBmaWxlbmFtZSBvZiBkaWN0aW9uYXJ5Ci1sZXQgczpzcWxfZmlsZV90YWJsZSAgICAgICAgICAgICA9ICIiCi1sZXQgczpzcWxfZmlsZV9wcm9jZWR1cmUgICAgICAgICA9ICIiCi1sZXQgczpzcWxfZmlsZV92aWV3ICAgICAgICAgICAgICA9ICIiCitsZXQgczpzcWxfZmlsZV90YWJsZSAgICAgICAgPSAiIgorbGV0IHM6c3FsX2ZpbGVfcHJvY2VkdXJlICAgID0gIiIKK2xldCBzOnNxbF9maWxlX3ZpZXcgICAgICAgICA9ICIiCiAKICIgRGVmaW5lIHZhcmlvdXMgYXJyYXlzIHRvIGJlIHVzZWQgZm9yIGNhY2hpbmcKLWxldCBzOnRibF9uYW1lICAgICAgICAgICAgICAgICAgID0gW10KLWxldCBzOnRibF9hbGlhcyAgICAgICAgICAgICAgICAgID0gW10KLWxldCBzOnRibF9jb2xzICAgICAgICAgICAgICAgICAgID0gW10KLWxldCBzOnN5bl9saXN0ICAgICAgICAgICAgICAgICAgID0gW10KLWxldCBzOnN5bl92YWx1ZSAgICAgICAgICAgICAgICAgID0gW10KK2xldCBzOnRibF9uYW1lICAgICAgICAgICAgICA9IFtdCitsZXQgczp0YmxfYWxpYXMgICAgICAgICAgICAgPSBbXQorbGV0IHM6dGJsX2NvbHMgICAgICAgICAgICAgID0gW10KK2xldCBzOnN5bl9saXN0ICAgICAgICAgICAgICA9IFtdCitsZXQgczpzeW5fdmFsdWUgICAgICAgICAgICAgPSBbXQogIAogIiBVc2VkIGluIGNvbmp1bmN0aW9uIHdpdGggdGhlIHN5bnRheGNvbXBsZXRlIHBsdWdpbgotbGV0IHM6c2F2ZV9pbmMgPSAiIgotbGV0IHM6c2F2ZV9leGMgPSAiIgorbGV0IHM6c2F2ZV9pbmMgICAgICAgICAgICAgID0gIiIKK2xldCBzOnNhdmVfZXhjICAgICAgICAgICAgICA9ICIiCiBpZiBleGlzdHMoJ2c6b21uaV9zeW50YXhfZ3JvdXBfaW5jbHVkZV9zcWwnKQogICAgIGxldCBzOnNhdmVfaW5jID0gZzpvbW5pX3N5bnRheF9ncm91cF9pbmNsdWRlX3NxbAogZW5kaWYKQEAgLTQzLDEyICs0MywyMyBAQAogZW5kaWYKICAKICIgVXNlZCB3aXRoIHRoZSBjb2x1bW4gbGlzdAotbGV0IHM6c2F2ZV9wcmV2X3RhYmxlID0gIiIKK2xldCBzOnNhdmVfcHJldl90YWJsZSAgICAgICA9ICIiCiAKICIgRGVmYXVsdCB0aGUgb3B0aW9uIHRvIHZlcmlmeSB0YWJsZSBhbGlhcwogaWYgIWV4aXN0cygnZzpvbW5pX3NxbF91c2VfdGJsX2FsaWFzJykKICAgICBsZXQgZzpvbW5pX3NxbF91c2VfdGJsX2FsaWFzID0gJ2EnCiBlbmRpZgorIiBEZWZhdWx0IHN5bnRheCBpdGVtcyB0byBwcmVjYWNoZQoraWYgIWV4aXN0cygnZzpvbW5pX3NxbF9wcmVjYWNoZV9zeW50YXhfZ3JvdXBzJykKKyAgICBsZXQgZzpvbW5pX3NxbF9wcmVjYWNoZV9zeW50YXhfZ3JvdXBzID0gWworICAgICAgICAgICAgICAgIFwgJ3N5bnRheCcsCisgICAgICAgICAgICAgICAgXCAnc3FsS2V5d29yZCcsCisgICAgICAgICAgICAgICAgXCAnc3FsRnVuY3Rpb24nLAorICAgICAgICAgICAgICAgIFwgJ3NxbE9wdGlvbicsCisgICAgICAgICAgICAgICAgXCAnc3FsVHlwZScsCisgICAgICAgICAgICAgICAgXCAnc3FsU3RhdGVtZW50JworICAgICAgICAgICAgICAgIFwgXQorZW5kaWYKIAogIiBUaGlzIGZ1bmN0aW9uIGlzIHVzZWQgZm9yIHRoZSAnb21uaWZ1bmMnIG9wdGlvbi4KIGZ1bmN0aW9uISBzcWxjb21wbGV0ZSNDb21wbGV0ZShmaW5kc3RhcnQsIGJhc2UpCkBAIC02MCw2ICs3MSw4IEBACiAgICAgICAgIGxldCBjb21wbF90eXBlID0gYjpzcWxfY29tcGxfdHlwZQogICAgIGVuZGlmCiAKKyAgICAiIEZpcnN0IHBhc3MgdGhyb3VnaCB0aGlzIGZ1bmN0aW9uIGRldGVybWluZXMgaG93IG11Y2ggb2YgdGhlIGxpbmUgc2hvdWxkCisgICAgIiBiZSByZXBsYWNlZCBieSB3aGF0ZXZlciBpcyBjaG9zZW4gZnJvbSB0aGUgY29tcGxldGlvbiBsaXN0CiAgICAgaWYgYTpmaW5kc3RhcnQKICAgICAgICAgIiBMb2NhdGUgdGhlIHN0YXJ0IG9mIHRoZSBpdGVtLCBpbmNsdWRpbmcgIi4iCiAgICAgICAgIGxldCBsaW5lID0gZ2V0bGluZSgnLicpCkBAIC02OCwxNSArODEsMTYgQEAKICAgICAgICAgd2hpbGUgc3RhcnQgPiAwCiAgICAgICAgICAgICBpZiBsaW5lW3N0YXJ0IC0gMV0gPX4gJ1x3JwogICAgICAgICAgICAgICAgIGxldCBzdGFydCAtPSAxCi0gICAgICAgICAgICBlbHNlaWYgbGluZVtzdGFydCAtIDFdID1+ICdcLicgJiYgY29tcGxfdHlwZSA9fiAnY29sdW1uXHx0YWJsZScKLSAgICAgICAgICAgICAgICAiIElmIHRoZSBjb21wbGV0aW9uIHR5cGUgaXMgdGFibGUgb3IgY29sdW1uCi0gICAgICAgICAgICAgICAgIiBUaGVuIGFzc3VtZSB3ZSBhcmUgbG9va2luZyBmb3IgY29sdW1uIGNvbXBsZXRpb24KLSAgICAgICAgICAgICAgICAiIGNvbHVtbl90eXBlIGNhbiBiZSBlaXRoZXIgJ2NvbHVtbicgb3IgJ2NvbHVtbl9jc3YnCi0gICAgICAgICAgICAgICAgaWYgbGFzdHdvcmQgPT0gLTEKKyAgICAgICAgICAgIGVsc2VpZiBsaW5lW3N0YXJ0IC0gMV0gPX4gJ1wuJyAmJiBjb21wbF90eXBlID1+ICdjb2x1bW4nCisgICAgICAgICAgICAgICAgIiBJZiB0aGUgY29tcGxldGlvbiB0eXBlIGlzIGNvbHVtbiB0aGVuIGFzc3VtZSB3ZSBhcmUgbG9va2luZworICAgICAgICAgICAgICAgICIgZm9yIGNvbHVtbiBjb21wbGV0aW9uIGNvbHVtbl90eXBlIGNhbiBiZSBlaXRoZXIgCisgICAgICAgICAgICAgICAgIiAnY29sdW1uJyBvciAnY29sdW1uX2NzdicKKyAgICAgICAgICAgICAgICBpZiBsYXN0d29yZCA9PSAtMSAmJiBjb21wbF90eXBlID09ICdjb2x1bW4nCisgICAgICAgICAgICAgICAgICAgICIgRG8gbm90IHJlcGxhY2UgdGhlIHRhYmxlIG5hbWUgcHJlZml4IG9yIGFsaWFzCisgICAgICAgICAgICAgICAgICAgICIgaWYgY29tcGxldGluZyBvbmx5IGEgc2luZ2xlIGNvbHVtbiBuYW1lCiAgICAgICAgICAgICAgICAgICAgIGxldCBsYXN0d29yZCA9IHN0YXJ0CiAgICAgICAgICAgICAgICAgZW5kaWYKICAgICAgICAgICAgICAgICBsZXQgc3RhcnQgLT0gMQotICAgICAgICAgICAgICAgIGxldCBiOnNxbF9jb21wbF90eXBlID0gJ2NvbHVtbicKICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICBicmVhawogICAgICAgICAgICAgZW5kaWYKQEAgLTkyLDggKzEwNiwxMiBAQAogICAgICAgICByZXR1cm4gbGFzdHdvcmQKICAgICBlbmRpZgogCisgICAgIiBTZWNvbmQgcGFzcyB0aHJvdWdoIHRoaXMgZnVuY3Rpb24gd2lsbCBkZXRlcm1pbmUgd2hhdCBkYXRhIHRvIHB1dCBpbnNpZGUKKyAgICAiIG9mIHRoZSBjb21wbGV0aW9uIGxpc3QKKyAgICAiIHM6cHJlcGVuZGVkIGlzIHNldCBieSB0aGUgZmlyc3QgcGFzcwogICAgIGxldCBiYXNlID0gczpwcmVwZW5kZWQgLiBhOmJhc2UKIAorICAgICIgRGVmYXVsdCB0aGUgY29tcGxldGlvbiBsaXN0IHRvIGFuIGVtcHR5IGxpc3QKICAgICBsZXQgY29tcGxfbGlzdCA9IFtdCiAKICAgICAiIERlZmF1bHQgdG8gdGFibGUgbmFtZSBjb21wbGV0aW9uCkBAIC0xNzgsMzYgKzE5Niw4IEBACiAgICAgICAgIGxldCBzOnRibF9jb2xzICA9IFtdCiAgICAgICAgIGxldCBzOnN5bl9saXN0ICA9IFtdCiAgICAgICAgIGxldCBzOnN5bl92YWx1ZSA9IFtdCi0gICAgICAgIHJldHVybiBbXQogICAgIGVsc2UKLSAgICAgICAgIiBEZWZhdWx0IHRvIGVtcHR5IG9yIG5vdCBmb3VuZAotICAgICAgICBsZXQgY29tcGxfbGlzdCA9IFtdCi0gICAgICAgICIgQ2hlY2sgaWYgd2UgaGF2ZSBhbHJlYWR5IGNhY2hlZCB0aGUgc3ludGF4IGxpc3QKLSAgICAgICAgbGV0IGxpc3RfaWR4ID0gaW5kZXgoczpzeW5fbGlzdCwgY29tcGxfdHlwZSwgMCwgJmlnbm9yZWNhc2UpCi0gICAgICAgIGlmIGxpc3RfaWR4ID4gLTEKLSAgICAgICAgICAgICIgUmV0dXJuIHByZXZpb3VzbHkgY2FjaGVkIHZhbHVlCi0gICAgICAgICAgICBsZXQgY29tcGxfbGlzdCA9IHM6c3luX3ZhbHVlW2xpc3RfaWR4XQotICAgICAgICBlbHNlCi0gICAgICAgICAgICAiIFJlcXVlc3QgdGhlIHN5bnRheCBsaXN0IGl0ZW1zIGZyb20gdGhlIAotICAgICAgICAgICAgIiBzeW50YXggY29tcGxldGlvbiBwbHVnaW4KLSAgICAgICAgICAgIGlmIGNvbXBsX3R5cGUgPT0gJ3N5bnRheCcKLSAgICAgICAgICAgICAgICAiIEhhbmRsZSB0aGlzIHNwZWNpYWwgY2FzZS4gIFRoaXMgYWxsb3dzIHRoZSB1c2VyCi0gICAgICAgICAgICAgICAgIiB0byBpbmRpY2F0ZSB0aGV5IHdhbnQgYWxsIHRoZSBzeW50YXggaXRlbXMgYXZhaWxhYmxlLAotICAgICAgICAgICAgICAgICIgc28gZG8gbm90IHNwZWNpZnkgYSBzcGVjaWZpYyBpbmNsdWRlIGxpc3QuCi0gICAgICAgICAgICAgICAgbGV0IGc6b21uaV9zeW50YXhfZ3JvdXBfaW5jbHVkZV9zcWwgPSAnJwotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgICIgVGhlIHVzZXIgaGFzIHNwZWNpZmllZCBhIHNwZWNpZmljIHN5bnRheCBncm91cAotICAgICAgICAgICAgICAgIGxldCBnOm9tbmlfc3ludGF4X2dyb3VwX2luY2x1ZGVfc3FsID0gY29tcGxfdHlwZQotICAgICAgICAgICAgZW5kaWYKLSAgICAgICAgICAgIGxldCBnOm9tbmlfc3ludGF4X2dyb3VwX2V4Y2x1ZGVfc3FsID0gJycKLSAgICAgICAgICAgIGxldCBzeW5fdmFsdWUgICAgICAgICAgICAgICAgICAgICAgID0gT21uaVN5bnRheExpc3QoKQotICAgICAgICAgICAgbGV0IGc6b21uaV9zeW50YXhfZ3JvdXBfaW5jbHVkZV9zcWwgPSBzOnNhdmVfaW5jCi0gICAgICAgICAgICBsZXQgZzpvbW5pX3N5bnRheF9ncm91cF9leGNsdWRlX3NxbCA9IHM6c2F2ZV9leGMKLSAgICAgICAgICAgICIgQ2FjaGUgdGhlc2UgdmFsdWVzIGZvciBsYXRlciB1c2UKLSAgICAgICAgICAgIGxldCBzOnN5bl9saXN0ICA9IGFkZCggczpzeW5fbGlzdCwgIGNvbXBsX3R5cGUgKQotICAgICAgICAgICAgbGV0IHM6c3luX3ZhbHVlID0gYWRkKCBzOnN5bl92YWx1ZSwgc3luX3ZhbHVlICkKLSAgICAgICAgICAgIGxldCBjb21wbF9saXN0ICA9IHN5bl92YWx1ZQotICAgICAgICBlbmRpZgorICAgICAgICBsZXQgY29tcGxfbGlzdCA9IHM6U1FMQ0dldFN5bnRheExpc3QoY29tcGxfdHlwZSkKICAgICBlbmRpZgogCiAgICAgaWYgYmFzZSAhPSAnJwpAQCAtMjE3LDYgKzIwNywxMCBAQAogICAgICAgICBsZXQgY29tcGxfbGlzdCA9IGZpbHRlcihjb3B5KGNvbXBsX2xpc3QpLCBleHByKQogICAgIGVuZGlmCiAKKyAgICBpZiBleGlzdHMoJ2I6c3FsX2NvbXBsX3NhdmVmdW5jJykgJiYgYjpzcWxfY29tcGxfc2F2ZWZ1bmMgIT0gIiIKKyAgICAgICAgbGV0ICZvbW5pZnVuYyA9IGI6c3FsX2NvbXBsX3NhdmVmdW5jCisgICAgZW5kaWYKKwogICAgIHJldHVybiBjb21wbF9saXN0CiBlbmRmdW5jCiAKQEAgLTIzMiw2ICsyMjYsNzAgQEAKICAgICBlY2hvaGwgTm9uZQogZW5kZnVuY3Rpb24KICAgICAgIAorZnVuY3Rpb24hIHNxbGNvbXBsZXRlI1ByZUNhY2hlU3ludGF4KC4uLikKKyAgICBsZXQgc3luX2dyb3VwX2FyciA9IFtdCisgICAgaWYgYTowID4gMCAKKyAgICAgICAgbGV0IHN5bl9ncm91cF9hcnIgPSBhOjEKKyAgICBlbHNlCisgICAgICAgIGxldCBzeW5fZ3JvdXBfYXJyID0gZzpvbW5pX3NxbF9wcmVjYWNoZV9zeW50YXhfZ3JvdXBzCisgICAgZW5kaWYKKyAgICBpZiAhZW1wdHkoc3luX2dyb3VwX2FycikKKyAgICAgICAgZm9yIGdyb3VwX25hbWUgaW4gc3luX2dyb3VwX2FycgorICAgICAgICAgICAgY2FsbCBzOlNRTENHZXRTeW50YXhMaXN0KGdyb3VwX25hbWUpCisgICAgICAgIGVuZGZvcgorICAgIGVuZGlmCitlbmRmdW5jdGlvbgorCitmdW5jdGlvbiEgc3FsY29tcGxldGUjTWFwKHR5cGUpCisgICAgIiBUZWxsIHRoZSBTUUwgcGx1Z2luIHdoYXQgeW91IHdhbnQgdG8gY29tcGxldGUKKyAgICBsZXQgYjpzcWxfY29tcGxfdHlwZT1hOnR5cGUKKyAgICAiIFJlY29yZCBwcmV2aW91cyBvbW5pZnVuYywgaWYgdGhlIFNRTCBjb21wbGV0aW9uCisgICAgIiBpcyBiZWluZyB1c2VkIGluIGNvbmp1bmN0aW9uIHdpdGggb3RoZXIgZmlsZXR5cGUKKyAgICAiIGNvbXBsZXRpb24gcGx1Z2lucworICAgIGlmICZvbW5pZnVuYyAhPSAiIiAmJiAmb21uaWZ1bmMgIT0gJ3NxbGNvbXBsZXRlI0NvbXBsZXRlJworICAgICAgICAiIFJlY29yZCB0aGUgcHJldmlvdXMgb21uaWZ1bmMsIHRoZSBwbHVnaW4KKyAgICAgICAgIiB3aWxsIGF1dG9tYXRpY2FsbHkgc2V0IHRoaXMgYmFjayBzbyB0aGF0IGl0CisgICAgICAgICIgZG9lcyBub3QgaW50ZXJmZXJlIHdpdGggb3RoZXIgZnRwbHVnaW5zIHNldHRpbmdzCisgICAgICAgIGxldCBiOnNxbF9jb21wbF9zYXZlZnVuYz0mb21uaWZ1bmMKKyAgICBlbmRpZgorICAgICIgU2V0IHRoZSBPTU5JIGZ1bmMgZm9yIHRoZSBTUUwgY29tcGxldGlvbiBwbHVnaW4KKyAgICBsZXQgJm9tbmlmdW5jPSdzcWxjb21wbGV0ZSNDb21wbGV0ZScKK2VuZGZ1bmN0aW9uCisKK2Z1bmN0aW9uISBzOlNRTENHZXRTeW50YXhMaXN0KHN5bl9ncm91cCkKKyAgICBsZXQgc3luX2dyb3VwICA9IGE6c3luX2dyb3VwCisgICAgbGV0IGNvbXBsX2xpc3QgPSBbXQorCisgICAgIiBDaGVjayBpZiB3ZSBoYXZlIGFscmVhZHkgY2FjaGVkIHRoZSBzeW50YXggbGlzdAorICAgIGxldCBsaXN0X2lkeCA9IGluZGV4KHM6c3luX2xpc3QsIHN5bl9ncm91cCwgMCwgJmlnbm9yZWNhc2UpCisgICAgaWYgbGlzdF9pZHggPiAtMQorICAgICAgICAiIFJldHVybiBwcmV2aW91c2x5IGNhY2hlZCB2YWx1ZQorICAgICAgICBsZXQgY29tcGxfbGlzdCA9IHM6c3luX3ZhbHVlW2xpc3RfaWR4XQorICAgIGVsc2UKKyAgICAgICAgIiBSZXF1ZXN0IHRoZSBzeW50YXggbGlzdCBpdGVtcyBmcm9tIHRoZSAKKyAgICAgICAgIiBzeW50YXggY29tcGxldGlvbiBwbHVnaW4KKyAgICAgICAgaWYgc3luX2dyb3VwID09ICdzeW50YXgnCisgICAgICAgICAgICAiIEhhbmRsZSB0aGlzIHNwZWNpYWwgY2FzZS4gIFRoaXMgYWxsb3dzIHRoZSB1c2VyCisgICAgICAgICAgICAiIHRvIGluZGljYXRlIHRoZXkgd2FudCBhbGwgdGhlIHN5bnRheCBpdGVtcyBhdmFpbGFibGUsCisgICAgICAgICAgICAiIHNvIGRvIG5vdCBzcGVjaWZ5IGEgc3BlY2lmaWMgaW5jbHVkZSBsaXN0LgorICAgICAgICAgICAgbGV0IGc6b21uaV9zeW50YXhfZ3JvdXBfaW5jbHVkZV9zcWwgPSAnJworICAgICAgICBlbHNlCisgICAgICAgICAgICAiIFRoZSB1c2VyIGhhcyBzcGVjaWZpZWQgYSBzcGVjaWZpYyBzeW50YXggZ3JvdXAKKyAgICAgICAgICAgIGxldCBnOm9tbmlfc3ludGF4X2dyb3VwX2luY2x1ZGVfc3FsID0gc3luX2dyb3VwCisgICAgICAgIGVuZGlmCisgICAgICAgIGxldCBnOm9tbmlfc3ludGF4X2dyb3VwX2V4Y2x1ZGVfc3FsID0gJycKKyAgICAgICAgbGV0IHN5bl92YWx1ZSAgICAgICAgICAgICAgICAgICAgICAgPSBPbW5pU3ludGF4TGlzdCgpCisgICAgICAgIGxldCBnOm9tbmlfc3ludGF4X2dyb3VwX2luY2x1ZGVfc3FsID0gczpzYXZlX2luYworICAgICAgICBsZXQgZzpvbW5pX3N5bnRheF9ncm91cF9leGNsdWRlX3NxbCA9IHM6c2F2ZV9leGMKKyAgICAgICAgIiBDYWNoZSB0aGVzZSB2YWx1ZXMgZm9yIGxhdGVyIHVzZQorICAgICAgICBsZXQgczpzeW5fbGlzdCAgPSBhZGQoIHM6c3luX2xpc3QsICBzeW5fZ3JvdXAgKQorICAgICAgICBsZXQgczpzeW5fdmFsdWUgPSBhZGQoIHM6c3luX3ZhbHVlLCBzeW5fdmFsdWUgKQorICAgICAgICBsZXQgY29tcGxfbGlzdCAgPSBzeW5fdmFsdWUKKyAgICBlbmRpZgorCisgICAgcmV0dXJuIGNvbXBsX2xpc3QKK2VuZGZ1bmN0aW9uCisKIGZ1bmN0aW9uISBzOlNRTENDaGVjazRkYmV4dCgpCiAgICAgaWYgIWV4aXN0cygnZzpsb2FkZWRfZGJleHQnKQogICAgICAgICBsZXQgbXNnID0gIlRoZSBkYmV4dCBwbHVnaW4gbXVzdCBiZSBsb2FkZWQgZm9yIGR5bmFtaWMgU1FMIGNvbXBsZXRpb24iCmRpZmYgLS1naXQgYS9ydW50aW1lL2F1dG9sb2FkL3Rhci52aW0gYi9ydW50aW1lL2F1dG9sb2FkL3Rhci52aW0KaW5kZXggNDFhMDA2ZS4uMmZjN2VmNiAxMDA2NDQKLS0tIGEvcnVudGltZS9hdXRvbG9hZC90YXIudmltCisrKyBiL3J1bnRpbWUvYXV0b2xvYWQvdGFyLnZpbQpAQCAtMSw2ICsxLDYgQEAKICIgdGFyLnZpbTogSGFuZGxlcyBicm93c2luZyB0YXJmaWxlcwogIiAgICAgICAgICAgIEFVVE9MT0FEIFBPUlRJT04KLSIgRGF0ZToJCQlEZWMgMjQsIDIwMDUKKyIgRGF0ZToJCQlNYXIgMjcsIDIwMDYKICIgVmVyc2lvbjoJCTcKICIgTWFpbnRhaW5lcjoJQ2hhcmxlcyBFIENhbXBiZWxsLCBKciA8ZHJjaGlwTk9TUEFNIGF0IGNhbXBiZWxsZmFtaWx5IGRvdCBiaXo+CiAiIExpY2Vuc2U6CQlWaW0gTGljZW5zZSAgKHNlZSB2aW0ncyA6aGVscCBsaWNlbnNlKQpAQCAtMjUsNiArMjUsNyBAQAogIGZpbmlzaAogZW5kaWYKIGxldCBnOmxvYWRlZF90YXI9ICJ2NyIKKyJjYWxsIERlY2hvKCJsb2FkaW5nIGF1dG9sb2FkL3Rhci52aW0iKQogCiAiIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogIiAgRGVmYXVsdCBTZXR0aW5nczoge3t7MQpAQCAtMzQsNiArMzUsOSBAQAogaWYgIWV4aXN0cygiZzp0YXJfcmVhZG9wdGlvbnMiKQogIGxldCBnOnRhcl9yZWFkb3B0aW9ucz0gIk9QeGYiCiBlbmRpZgoraWYgIWV4aXN0cygiZzp0YXJfY21kIikKKyBsZXQgZzp0YXJfY21kPSAidGFyIgorZW5kaWYKIGlmICFleGlzdHMoImc6dGFyX3dyaXRlb3B0aW9ucyIpCiAgbGV0IGc6dGFyX3dyaXRlb3B0aW9ucz0gInVmIgogZW5kaWYKQEAgLTUwLDE0ICs1NCwxNSBAQAogICBzZXQgcmVwb3J0PTEwCiAKICAgIiBzYW5pdHkgY2hlY2tzCi0gIGlmICFleGVjdXRhYmxlKCJ0YXIiKQotICAgZWNob2hsIEVycm9yIHwgZWNobyAnKioqZXJyb3IqKiogKHRhciNCcm93c2UpICJ0YXIiIG5vdCBhdmFpbGFibGUgb24geW91ciBzeXN0ZW0nCisgIGlmICFleGVjdXRhYmxlKGc6dGFyX2NtZCkKKyAgIGVjaG9obCBFcnJvciB8IGVjaG8gJyoqKmVycm9yKioqICh0YXIjQnJvd3NlKSAiJy5nOnRhcl9jbWQuJyIgbm90IGF2YWlsYWJsZSBvbiB5b3VyIHN5c3RlbScKICAgIGNhbGwgaW5wdXRzYXZlKCl8Y2FsbCBpbnB1dCgiUHJlc3MgPGNyPiB0byBjb250aW51ZSIpfGNhbGwgaW5wdXRyZXN0b3JlKCkKICAgIGxldCAmcmVwb3J0PSByZXBrZWVwCiAiICAgY2FsbCBEcmV0KCJ0YXIjQnJvd3NlIikKICAgIHJldHVybgogICBlbmRpZgogICBpZiAhZmlsZXJlYWRhYmxlKGE6dGFyZmlsZSkKKyIgICBjYWxsIERlY2hvKCdhOnRhcmZpbGU8Jy5hOnRhcmZpbGUuJz4gbm90IGZpbGVyZWFkYWJsZScpCiAgICBpZiBhOnRhcmZpbGUgIX4jICdeXGFcKzovLycKICAgICAiIGlmIGl0cyBhbiB1cmwsIGRvbid0IGNvbXBsYWluLCBsZXQgdXJsLWhhbmRsZXJzIHN1Y2ggYXMgdmltIGRvIGl0cyB0aGluZwogICAgIGVjaG9obCBFcnJvciB8IGVjaG8gIioqKmVycm9yKioqICh0YXIjQnJvd3NlKSBGaWxlIG5vdCByZWFkYWJsZTwiLmE6dGFyZmlsZS4iPiIgfCBlY2hvaGwgTm9uZQpAQCAtODAsMjAgKzg1LDMzIEBACiAgIHNldCBmdD10YXIKIAogICAiIGdpdmUgaGVhZGVyCisiICBjYWxsIERlY2hvKCJwcmludGluZyBoZWFkZXIiKQogICBleGUgIiRwdXQgPSciLidcIicuIiB0YXIudmltIHZlcnNpb24gIi5nOmxvYWRlZF90YXIuIiciCiAgIGV4ZSAiJHB1dCA9JyIuJ1wiJy4iIEJyb3dzaW5nIHRhcmZpbGUgIi5hOnRhcmZpbGUuIiciCiAgIGV4ZSAiJHB1dCA9JyIuJ1wiJy4iIFNlbGVjdCBhIGZpbGUgd2l0aCBjdXJzb3IgYW5kIHByZXNzIEVOVEVSIi4iJyIKICAgMGQKICAgJAogCi0gIGlmIGE6dGFyZmlsZSA9fiMgJ1wuXChnelx8dGd6XCkkJwotICAgZXhlICJzaWxlbnQgciEgZ3ppcCAtZCAtYyAnIi5hOnRhcmZpbGUuIid8IHRhciAtIi5nOnRhcl9icm93c2VvcHRpb25zLiIgLSAiCi0gIGVsc2VpZiBhOnRhcmZpbGUgPX4jICdcLmJ6MiQnCi0gICBleGUgInNpbGVudCByISBiemlwMiAtZCAtYyAnIi5hOnRhcmZpbGUuIid8IHRhciAtIi5nOnRhcl9icm93c2VvcHRpb25zLiIgLSAiCi0gIGVsc2UKLSAgIGV4ZSAic2lsZW50IHIhIHRhciAtIi5nOnRhcl9icm93c2VvcHRpb25zLiIgJyIuYTp0YXJmaWxlLiInIgorICBsZXQgdGFyZmlsZT0gYTp0YXJmaWxlCisgIGlmIGhhcygid2luMzIiKSAmJiBleGVjdXRhYmxlKCJjeWdwYXRoIikKKyAgICIgYXNzdW1pbmcgY3lnd2luCisgICBsZXQgdGFyZmlsZT1zdWJzdGl0dXRlKHN5c3RlbSgiY3lncGF0aCAtdSAiLnRhcmZpbGUpLCdcbiQnLCcnLCdlJykKICAgZW5kaWYKLSAgc2lsZW50ICVnQC8kQGQKKyAgaWYgdGFyZmlsZSA9fiMgJ1wuXChnelx8dGd6XCkkJworIiAgIGNhbGwgRGVjaG8oImV4ZSBzaWxlbnQgciEgZ3ppcCAtZCAtYyAnIi50YXJmaWxlLiInfCB0YXIgLSIuZzp0YXJfYnJvd3Nlb3B0aW9ucy4iIC0gIikKKyAgIGV4ZSAic2lsZW50IHIhIGd6aXAgLWQgLWMgJyIudGFyZmlsZS4iJ3wgdGFyIC0iLmc6dGFyX2Jyb3dzZW9wdGlvbnMuIiAtICIKKyAgZWxzZWlmIHRhcmZpbGUgPX4jICdcLmJ6MiQnCisiICAgY2FsbCBEZWNobygiZXhlIHNpbGVudCByISBiemlwMiAtZCAtYyAnIi50YXJmaWxlLiInfCB0YXIgLSIuZzp0YXJfYnJvd3Nlb3B0aW9ucy4iIC0gIikKKyAgIGV4ZSAic2lsZW50IHIhIGJ6aXAyIC1kIC1jICciLnRhcmZpbGUuIid8IHRhciAtIi5nOnRhcl9icm93c2VvcHRpb25zLiIgLSAiCisgIGVsc2UKKyIgICBjYWxsIERlY2hvKCJleGUgc2lsZW50IHIhICIuZzp0YXJfY21kLiIgLSIuZzp0YXJfYnJvd3Nlb3B0aW9ucy4iICciLnRhcmZpbGUuIiciKQorICAgZXhlICJzaWxlbnQgciEgIi5nOnRhcl9jbWQuIiAtIi5nOnRhcl9icm93c2VvcHRpb25zLiIgJyIudGFyZmlsZS4iJyIKKyAgZW5kaWYKKyAgaWYgdjpzaGVsbF9lcnJvciAhPSAwCisgICBlY2hvaGwgRXJyb3IgfCBlY2hvICcqKiplcnJvcioqKiAodGFyI0Jyb3dzZSkgd2hpbGUgYnJvd3Npbmc7IGNoZWNrIHlvdXIgZzp0YXJfYnJvd3Nlb3B0aW9uczwiLmc6dGFyX2Jyb3dzZW9wdGlvbnMuIj4iCisiICBjYWxsIERyZXQoInRhciNCcm93c2UgOiB3OnRhcmZpbGU8Ii53OnRhcmZpbGUuIj4iKQorICAgcmV0dXJuCisgIGVuZGlmCiAKICAgc2V0bG9jYWwgbm9tYSBub21vZCBybwogICBub3JlbWFwIDxzaWxlbnQ+IDxidWZmZXI+IDxjcj4gOmNhbGwgPFNJRD5UYXJCcm93c2VTZWxlY3QoKTxjcj4KQEAgLTEyMSwxMiArMTM5LDIxIEBACiAgICIgYWJvdXQgdG8gbWFrZSBhIG5ldyB3aW5kb3csIG5lZWQgdG8gdXNlIHc6dGFyZmlsZQogICBsZXQgdGFyZmlsZT0gdzp0YXJmaWxlCiAgIGxldCBjdXJmaWxlPSBleHBhbmQoIiUiKQorICBpZiBoYXMoIndpbjMyIikgJiYgZXhlY3V0YWJsZSgiY3lncGF0aCIpCisgICAiIGFzc3VtaW5nIGN5Z3dpbgorICAgbGV0IHRhcmZpbGU9c3Vic3RpdHV0ZShzeXN0ZW0oImN5Z3BhdGggLXUgIi50YXJmaWxlKSwnXG4kJywnJywnZScpCisgIGVuZGlmCiAKICAgbmV3CiAgIHdpbmNtZCBfCiAgIGxldCBzOnRibGZpbGVfe3dpbm5yKCl9PSBjdXJmaWxlCi0iICBjYWxsIERlY2hvKCJleGUgZSB0YXJmaWxlOiIudGFyZmlsZS4nOicuZm5hbWUpCi0gIGV4ZSAiZSB0YXJmaWxlOiIudGFyZmlsZS4nOicuZm5hbWUKKyIgIGlmIGhhcygidW5peCIpCisiIiAgIGNhbGwgRGVjaG8oImV4ZSBlIHRhcmZpbGU6Ii50YXJmaWxlLic6Jy5mbmFtZSkKKyIgICBleGUgImUgdGFyZmlsZToiLnRhcmZpbGUuJzonLmZuYW1lCisiICBlbHNlaWYgaGFzKCJ3aW4zMiIpCisiICAgY2FsbCB0YXIjUmVhZCgidGFyZmlsZToiLnRhcmZpbGUuJzonLmZuYW1lLDEpCisiICBlbmRpZgorICBjYWxsIHRhciNSZWFkKCJ0YXJmaWxlOiIudGFyZmlsZS4nOicuZm5hbWUsMSkKICAgZmlsZXR5cGUgZGV0ZWN0CiAKICAgbGV0ICZyZXBvcnQ9IHJlcGtlZXAKQEAgLTE0MSw3ICsxNjgsMTIgQEAKICAgc2V0IHJlcG9ydD0xMAogICBsZXQgdGFyZmlsZSA9IHN1YnN0aXR1dGUoYTpmbmFtZSwndGFyZmlsZTpcKC5cey19XCk6LiokJywnXDEnLCcnKQogICBsZXQgZm5hbWUgICA9IHN1YnN0aXR1dGUoYTpmbmFtZSwndGFyZmlsZTouXHstfTpcKC4qXCkkJywnXDEnLCcnKQotIiAgY2FsbCBEZWNobygidGFyZmlsZTwiLnRhcmZpbGUuIj4gZm5hbWU8Ii5mbmFtZS4iPiIpCisgIGlmIGhhcygid2luMzIiKSAmJiBleGVjdXRhYmxlKCJjeWdwYXRoIikKKyAgICIgYXNzdW1pbmcgY3lnd2luCisgICBsZXQgdGFyZmlsZT1zdWJzdGl0dXRlKHN5c3RlbSgiY3lncGF0aCAtdSAiLnRhcmZpbGUpLCdcbiQnLCcnLCdlJykKKyAgZW5kaWYKKyIgIGNhbGwgRGVjaG8oInRhcmZpbGU8Ii50YXJmaWxlLiI+IikKKyIgIGNhbGwgRGVjaG8oImZuYW1lPCIuZm5hbWUuIj4iKQogCiAgIGlmIHRhcmZpbGUgPX4jICdcLlwoZ3pcfHRnelwpJCcKICIgICBjYWxsIERlY2hvKCJleGUgc2lsZW50IHIhIGd6aXAgLWQgLWMgJyIudGFyZmlsZS4iJ3wgdGFyIC1PUHhmIC0gJyIuZm5hbWUuIiciKQpAQCAtMTUxLDcgKzE4Myw3IEBACiAgICBleGUgInNpbGVudCByISBiemlwMiAtZCAtYyAnIi50YXJmaWxlLiInfCB0YXIgLSIuZzp0YXJfcmVhZG9wdGlvbnMuIiAtICciLmZuYW1lLiInIgogICBlbHNlCiAiICAgY2FsbCBEZWNobygiZXhlIHNpbGVudCByISB0YXIgLSIuZzp0YXJfcmVhZG9wdGlvbnMuIiAnIi50YXJmaWxlLiInICciLmZuYW1lLiInIikKLSAgIGV4ZSAic2lsZW50IHIhIHRhciAtIi5nOnRhcl9yZWFkb3B0aW9ucy4iICciLnRhcmZpbGUuIicgJyIuZm5hbWUuIiciCisgICBleGUgInNpbGVudCByISAiLmc6dGFyX2NtZC4iIC0iLmc6dGFyX3JlYWRvcHRpb25zLiIgJyIudGFyZmlsZS4iJyAnIi5mbmFtZS4iJyIKICAgZW5kaWYKICAgbGV0IHc6dGFyZmlsZT0gYTpmbmFtZQogICBleGUgImZpbGUgdGFyZmlsZToiLmZuYW1lCkBAIC0xNzIsOCArMjA0LDggQEAKICAgc2V0IHJlcG9ydD0xMAogCiAgICIgc2FuaXR5IGNoZWNrcwotICBpZiAhZXhlY3V0YWJsZSgidGFyIikKLSAgIGVjaG9obCBFcnJvciB8IGVjaG8gJyoqKmVycm9yKioqICh0YXIjQnJvd3NlKSAidGFyIiBub3QgYXZhaWxhYmxlIG9uIHlvdXIgc3lzdGVtJworICBpZiAhZXhlY3V0YWJsZShnOnRhcl9jbWQpCisgICBlY2hvaGwgRXJyb3IgfCBlY2hvICcqKiplcnJvcioqKiAodGFyI0Jyb3dzZSkgIicuZzp0YXJfY21kLiciIG5vdCBhdmFpbGFibGUgb24geW91ciBzeXN0ZW0nCiAgICBjYWxsIGlucHV0c2F2ZSgpfGNhbGwgaW5wdXQoIlByZXNzIDxjcj4gdG8gY29udGludWUiKXxjYWxsIGlucHV0cmVzdG9yZSgpCiAgICBsZXQgJnJlcG9ydD0gcmVwa2VlcAogIiAgIGNhbGwgRHJldCgidGFyI1dyaXRlIikKZGlmZiAtLWdpdCBhL3J1bnRpbWUvYXV0b2xvYWQvdmltYmFsbC52aW0gYi9ydW50aW1lL2F1dG9sb2FkL3ZpbWJhbGwudmltCmluZGV4IDZmYTlhMGQuLjg2ZjBlODggMTAwNjQ0Ci0tLSBhL3J1bnRpbWUvYXV0b2xvYWQvdmltYmFsbC52aW0KKysrIGIvcnVudGltZS9hdXRvbG9hZC92aW1iYWxsLnZpbQpAQCAtMSw3ICsxLDcgQEAKICIgdmltYmFsbCA6IGNvbnN0cnVjdCBhIGZpbGUgY29udGFpbmluZyBib3RoIHBhdGhzIGFuZCBmaWxlcwogIiBBdXRob3I6IENoYXJsZXMgRS4gQ2FtcGJlbGwsIEpyLgotIiBEYXRlOiAgIE1hciAyMiwgMjAwNgotIiBWZXJzaW9uOiA1CisiIERhdGU6ICAgTWFyIDMxLCAyMDA2CisiIFZlcnNpb246IDYKICIgR2V0TGF0ZXN0VmltU2NyaXB0czogMTUwMiAxIDpBdXRvSW5zdGFsbDogdmltYmFsbC52aW0KICIgQ29weXJpZ2h0OiAoYykgMjAwNC0yMDA2IGJ5IENoYXJsZXMgRS4gQ2FtcGJlbGwsIEpyLgogIiAgICAgICAgICAgIFRoZSBWSU0gTElDRU5TRSBhcHBsaWVzIHRvIFZpbWJhbGwudmltLCBhbmQgVmltYmFsbC50eHQKQEAgLTE1LDcgKzE1LDcgQEAKICBmaW5pc2gKIGVuZGlmCiBsZXQgczprZWVwY3BvICAgICAgICA9ICZjcG8KLWxldCBnOmxvYWRlZF92aW1iYWxsID0gInY1IgorbGV0IGc6bG9hZGVkX3ZpbWJhbGwgPSAidjYiCiBzZXQgY3BvJnZpbQogCiAiID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpAQCAtMTkwLDcgKzE5MCw3IEBACiAiICAgY2FsbCBEZWNobygieWFua2VkICIuZnNpemUuIiBsaW5lcyBpbnRvIHJlZ2lzdGVyLWEiKQogCiAiICAgY2FsbCBEZWNobygiZGlkaGVscDwiLmRpZGhlbHAuIj4gZm5hbWU8Ii5mbmFtZS4iPiIpCi0gICBpZiBkaWRoZWxwID09ICIiICYmIGZuYW1lID1+ICdkb2MvW14vXVwrXC50eHQkJworICAgaWYgYTpyZWFsbHkgJiYgZGlkaGVscCA9PSAiIiAmJiBmbmFtZSA9fiAnZG9jL1teL11cK1wudHh0JCcKICAgIAlsZXQgZGlkaGVscD0gc3Vic3RpdHV0ZShmbmFtZSwnXlwoLipcPGRvY1wpWy9cXF1bXi5dKlwudHh0JCcsJ1wxJywnZScpCiAiCWNhbGwgRGVjaG8oImRpZGhlbHA8Ii5kaWRoZWxwLiI+IikKICAgIGVuZGlmCmRpZmYgLS1naXQgYS9ydW50aW1lL2F1dG9sb2FkL3htbGNvbXBsZXRlLnZpbSBiL3J1bnRpbWUvYXV0b2xvYWQveG1sY29tcGxldGUudmltCmluZGV4IDI1NTFjYWUuLjU4MmRjMTAgMTAwNjQ0Ci0tLSBhL3J1bnRpbWUvYXV0b2xvYWQveG1sY29tcGxldGUudmltCisrKyBiL3J1bnRpbWUvYXV0b2xvYWQveG1sY29tcGxldGUudmltCkBAIC0xLDEzICsxLDEzIEBACiAiIFZpbSBjb21wbGV0aW9uIHNjcmlwdAogIiBMYW5ndWFnZToJWE1MCiAiIE1haW50YWluZXI6CU1pa29sYWogTWFjaG93c2tpICggbWlrbWFjaCBBVCB3cCBET1QgcGwgKQotIiBMYXN0IENoYW5nZToJMjAwNiBNYXIgMTkKKyIgTGFzdCBDaGFuZ2U6CTIwMDYgTWFyIDMxCiAKICIgVGhpcyBmdW5jdGlvbiB3aWxsIGNyZWF0ZSBEaWN0aW9uYXJ5IHdpdGggdXNlcnMgbmFtZXNwYWNlIHN0cmluZ3MgYW5kIHZhbHVlcwogIiBjYW5vbmljYWwgKHN5c3RlbSkgbmFtZXMgb2YgZGF0YSBmaWxlcy4gIE5hbWVzIHNob3VsZCBiZSBsb3dlcmNhc2UsCiAiIGRlc2NyaXB0aXZlIHRvIGF2b2lkIGFueSBmdXR1cmUgY29uZmxpY3RzLiBGb3IgZXhhbXBsZSAneGh0bWwxMHMnIHNob3VsZCBiZQogIiBuYW1lIGZvciBkYXRhIG9mIFhIVE1MIDEuMCBTdHJpY3QgYW5kICd4aHRtbDEwdCcgZm9yIFhIVE1MIDEuMCBUcmFuc2l0aW9uYWwKLSIgVXNlciBpbnRlcmZhY2Ugd2lsbCBiZSBwcm92aWRlZCBieSBYTUxucyBjb21tYW5kIGRlZmluZWQgLi4uCisiIFVzZXIgaW50ZXJmYWNlIHdpbGwgYmUgcHJvdmlkZWQgYnkgWE1MbnMgY29tbWFuZCBkZWZpbmVkIGluIGZ0cGx1Z2luL3htbC52aW0KICIgQ3VycmVudGx5IHN1cHBvcnRlZCBjYW5vbmljYWxzIGFyZToKICIgeGh0bWwxMHMgLSBYSFRNTCAxLjAgU3RyaWN0CiAiIHhzbCAgICAgIC0gWFNMCkBAIC0yMjQsOCArMjI0LDEzIEBACiAJCQlsZXQgYXR0cnMgPSBbJ2VuY29kaW5nJywgJ3ZlcnNpb249IjEuMCInLCAndmVyc2lvbiddCiAJCWVsc2VpZiB0YWcgPX4gJ14hJwogCQkJIiBEb24ndCBtYWtlIGNvbXBsZXRpb24gYXQgYWxsCisJCQkiCiAJCQlyZXR1cm4gW10KIAkJZWxzZQorICAgICAgICAgICAgaWYgIWhhc19rZXkoZzp4bWxkYXRheydfJy5nOnhtbGRhdGFfY29ubmVjdGlvbltiOnhtbF9uYW1lc3BhY2VdfSwgdGFnKQorCQkJCSIgQWJhbmRvbiB3aGVuIGRhdGEgZmlsZSBpc24ndCBjb21wbGV0ZQorIAkJCQlyZXR1cm4gW10KKyAJCQllbmRpZgogCQkJbGV0IGF0dHJzID0ga2V5cyhnOnhtbGRhdGF7J18nLmc6eG1sZGF0YV9jb25uZWN0aW9uW2I6eG1sX25hbWVzcGFjZV19W3RhZ11bMV0pCiAJCWVuZGlmCiAKQEAgLTMyNCw2ICszMjksMTAgQEAKIAkgICAgbGV0IHRhZ3MgPSBrZXlzKGc6eG1sZGF0YXsnXycuZzp4bWxkYXRhX2Nvbm5lY3Rpb25bYjp4bWxfbmFtZXNwYWNlXX0pCiAJCWNhbGwgZmlsdGVyKHRhZ3MsICd2OnZhbCAhfiAiXnZpbXhtbCInKQogCWVsc2UKKwkJaWYgIWhhc19rZXkoZzp4bWxkYXRheydfJy5nOnhtbGRhdGFfY29ubmVjdGlvbltiOnhtbF9uYW1lc3BhY2VdfSwgdGFnKQorCQkJIiBBYmFuZG9uIHdoZW4gZGF0YSBmaWxlIGlzbid0IGNvbXBsZXRlCisJCQlyZXR1cm4gW10KKwkJZW5kaWYKIAkJbGV0IHRhZ3MgPSBnOnhtbGRhdGF7J18nLmc6eG1sZGF0YV9jb25uZWN0aW9uW2I6eG1sX25hbWVzcGFjZV19W29wZW50YWddWzBdCiAJZW5kaWYKIApkaWZmIC0tZ2l0IGEvcnVudGltZS9hdXRvbG9hZC96aXAudmltIGIvcnVudGltZS9hdXRvbG9hZC96aXAudmltCmluZGV4IDk5YmRkNzkuLjY3OTBmNGYgMTAwNjQ0Ci0tLSBhL3J1bnRpbWUvYXV0b2xvYWQvemlwLnZpbQorKysgYi9ydW50aW1lL2F1dG9sb2FkL3ppcC52aW0KQEAgLTc1LDExICs3NSwxNSBAQAogICAwZAogICAkCiAKLSIgIGNhbGwgRGVjaG8oImV4ZSBzaWxlbnQgciEgdW56aXAgLWwgJyIuZXNjYXBlKGE6emlwZmlsZSxzOnppcGZpbGVfZXNjYXBlKS4iJyIpCi0gIGV4ZSAic2lsZW50IHIhIHVuemlwIC1sICIuZXNjYXBlKGE6emlwZmlsZSxzOnppcGZpbGVfZXNjYXBlKQorIiAgY2FsbCBEZWNobygiZXhlIHNpbGVudCByISB1bnppcCAtbCAnIi5hOnppcGZpbGUuIiciKQorICBleGUgInNpbGVudCByISB1bnppcCAtbCAnIi5hOnppcGZpbGUuIiciCisiICBjYWxsIERlY2hvKCJsaW5lIDY6ICIuZ2V0bGluZSg2KSkKKyAgbGV0IG5hbWVjb2w9IHN0cmlkeChnZXRsaW5lKDYpLCdOYW1lJykgKyAxCisiICBjYWxsIERlY2hvKCJuYW1lY29sPSIubmFtZWNvbCkKKyAgNCwkZy9eXHMqLS0tLS9kCisgIDQsJGcvXlxzKlxhL2QKICAgJGQKLSAgc2lsZW50IDQsJHYvXlxzXCtcZFwrXHNcezAsNX1cZC9kCi0gIHNpbGVudCAgNCwkcy9eXCUoLipcKVxzXCtcKFxTXCkvXDEvCisgIGV4ZSAnc2lsZW50IDQsJHMvXi4qXCUnLm5hbWVjb2wuJ2MvLycKIAogICBzZXRsb2NhbCBub21hIG5vbW9kIHJvCiAgIG5vcmVtYXAgPHNpbGVudD4gPGJ1ZmZlcj4gPGNyPiA6Y2FsbCA8U0lEPlppcEJyb3dzZVNlbGVjdCgpPGNyPgpAQCAtMTE0LDE1ICsxMTgsMTUgQEAKIAogICAiIGdldCB6aXBmaWxlIHRvIHRoZSBuZXctd2luZG93CiAgIGxldCB6aXBmaWxlPSBzdWJzdGl0dXRlKHc6emlwZmlsZSwnLnppcCQnLCcnLCdlJykKLSAgbGV0IGN1cmZpbGU9IGVzY2FwZShleHBhbmQoIiUiKSxzOnppcGZpbGVfZXNjYXBlKQorICBsZXQgY3VyZmlsZT0gZXhwYW5kKCIlIikKICIgIGNhbGwgRGVjaG8oInppcGZpbGU8Ii56aXBmaWxlLiI+IikKICIgIGNhbGwgRGVjaG8oImN1cmZpbGU8Ii5jdXJmaWxlLiI+IikKIAogICBuZXcKICAgd2luY21kIF8KICAgbGV0IHM6emlwZmlsZV97d2lubnIoKX09IGN1cmZpbGUKLSIgIGNhbGwgRGVjaG8oImV4ZSBlIHppcGZpbGU6Ii5lc2NhcGUoemlwZmlsZSxzOnppcGZpbGVfZXNjYXBlKS4nOicuZm5hbWUpCi0gIGV4ZSAiZSB6aXBmaWxlOiIuZXNjYXBlKHppcGZpbGUsczp6aXBmaWxlX2VzY2FwZSkuJzonLmZuYW1lCisiICBjYWxsIERlY2hvKCJleGUgZSB6aXBmaWxlOiIuZXNjYXBlKHppcGZpbGUsczp6aXBmaWxlX2VzY2FwZSkuJzonLmVzY2FwZShmbmFtZSxzOnppcGZpbGVfZXNjYXBlKSkKKyAgZXhlICJlIHppcGZpbGU6Ii5lc2NhcGUoemlwZmlsZSxzOnppcGZpbGVfZXNjYXBlKS4nOicuZXNjYXBlKGZuYW1lLHM6emlwZmlsZV9lc2NhcGUpCiAgIGZpbGV0eXBlIGRldGVjdAogCiAgIGxldCAmcmVwb3J0PSByZXBrZWVwCkBAIC0xNDAsOCArMTQ0LDggQEAKICAgbGV0IGZuYW1lICAgPSBzdWJzdGl0dXRlKGE6Zm5hbWUsJ3ppcGZpbGU6Llx7LX06XChbXlxcXS4qXCkkJywnXDEnLCcnKQogIiAgY2FsbCBEZWNobygiemlwZmlsZTwiLnppcGZpbGUuIj4gZm5hbWU8Ii5mbmFtZS4iPiIpCiAKLSIgIGNhbGwgRGVjaG8oImV4ZSByISB1bnppcCAtcCAnIi5lc2NhcGUoemlwZmlsZSxzOnppcGZpbGVfZXNjYXBlKS4iJyAiLmZuYW1lKQotICBleGUgInIhIHVuemlwIC1wICIuZXNjYXBlKHppcGZpbGUsczp6aXBmaWxlX2VzY2FwZSkuIiAiLmZuYW1lCisiICBjYWxsIERlY2hvKCJleGUgciEgdW56aXAgLXAgJyIuemlwZmlsZS4iJyAnIi5mbmFtZS4iJyIpCisgIGV4ZSAic2lsZW50IHIhIHVuemlwIC1wICciLnppcGZpbGUuIicgJyIuZm5hbWUuIiciCiAKICAgIiBjbGVhbnVwCiAgIDBkCkBAIC0xNTQsNyArMTU4LDcgQEAKICIgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAiIHppcCNXcml0ZToge3t7MgogZnVuISB6aXAjV3JpdGUoZm5hbWUpCi0iICBjYWxsIERmdW5jKCJ6aXAjV3JpdGUoZm5hbWU8Ii5hOmZuYW1lLiIpIHppcGZpbGVfIi53aW5ucigpLiI8Ii5zOnppcGZpbGVfe3dpbm5yKCl9LiI+IikKKyIgIGNhbGwgRGZ1bmMoInppcCNXcml0ZShmbmFtZTwiLmE6Zm5hbWUuIj4pIHppcGZpbGVfIi53aW5ucigpLiI8Ii5zOnppcGZpbGVfe3dpbm5yKCl9LiI+IikKICAgbGV0IHJlcGtlZXA9ICZyZXBvcnQKICAgc2V0IHJlcG9ydD0xMAogCkBAIC0yMTEsNiArMjE1LDcgQEAKICAgIGlmIGV4ZWN1dGFibGUoImN5Z3BhdGgiKQogICAgIGxldCBkaXJwYXRoID0gc3Vic3RpdHV0ZShzeXN0ZW0oImN5Z3BhdGggIi5kaXJwYXRoKSwnXG4nLCcnLCdlJykKICAgIGVuZGlmCisiICAgY2FsbCBEZWNobygibWtkaXIoZGlycGF0aDwiLmRpcnBhdGguIj4scCkiKQogICAgY2FsbCBta2RpcihkaXJwYXRoLCJwIikKICAgZW5kaWYKICAgaWYgemlwZmlsZSAhfiAnLycKQEAgLTIxOCwxMyArMjIzLDEzIEBACiAgIGVuZGlmCiAiICBjYWxsIERlY2hvKCJ6aXBmaWxlPCIuemlwZmlsZS4iPiBmbmFtZTwiLmZuYW1lLiI+IikKIAotICBleGUgInchICIuZm5hbWUKKyAgZXhlICJ3ISAiLmVzY2FwZShmbmFtZSxzOnppcGZpbGVfZXNjYXBlKQogICBpZiBleGVjdXRhYmxlKCJjeWdwYXRoIikKICAgIGxldCB6aXBmaWxlID0gc3Vic3RpdHV0ZShzeXN0ZW0oImN5Z3BhdGggIi56aXBmaWxlKSwnXG4nLCcnLCdlJykKICAgZW5kaWYKIAotIiAgY2FsbCBEZWNobygiemlwIC11ICIuemlwZmlsZS4iLnppcCAiLmZuYW1lKQotICBjYWxsIHN5c3RlbSgiemlwIC11ICIuemlwZmlsZS4iLnppcCAiLmZuYW1lKQorIiAgY2FsbCBEZWNobygiemlwIC11ICciLnppcGZpbGUuIi56aXAnICciLmZuYW1lLiInIikKKyAgY2FsbCBzeXN0ZW0oInppcCAtdSAnIi56aXBmaWxlLiIuemlwJyAnIi5mbmFtZS4iJyIpCiAgIGlmIHY6c2hlbGxfZXJyb3IgIT0gMAogICAgZWNob2hsIEVycm9yIHwgZWNobyAiKioqZXJyb3IqKiogKHppcCNXcml0ZSkgc29ycnksIHVuYWJsZSB0byB1cGRhdGUgIi56aXBmaWxlLiIgd2l0aCAiLmZuYW1lIHwgZWNob2hsIE5vbmUKICAgIGNhbGwgaW5wdXRzYXZlKCl8Y2FsbCBpbnB1dCgiUHJlc3MgPGNyPiB0byBjb250aW51ZSIpfGNhbGwgaW5wdXRyZXN0b3JlKCkKZGlmZiAtLWdpdCBhL3J1bnRpbWUvZG9jL2F1dG9jbWQudHh0IGIvcnVudGltZS9kb2MvYXV0b2NtZC50eHQKaW5kZXggNjkzMmU4MS4uMzE3NTE4ZCAxMDA2NDQKLS0tIGEvcnVudGltZS9kb2MvYXV0b2NtZC50eHQKKysrIGIvcnVudGltZS9kb2MvYXV0b2NtZC50eHQKQEAgLTEsNCArMSw0IEBACi0qYXV0b2NtZC50eHQqICAgRm9yIFZpbSB2ZXJzaW9uIDcuMGMuICBMYXN0IGNoYW5nZTogMjAwNiBNYXIgMTUKKyphdXRvY21kLnR4dCogICBGb3IgVmltIHZlcnNpb24gNy4wYy4gIExhc3QgY2hhbmdlOiAyMDA2IEFwciAwNAogCiAKIAkJICBWSU0gUkVGRVJFTkNFIE1BTlVBTCAgICBieSBCcmFtIE1vb2xlbmFhcgpAQCAtNTEwLDYgKzUxMCwxMCBAQAogCQkJCWp1c3QgYmVmb3JlIHRoZSBjaGFuZ2UgaXMgYXBwbGllZCB0byB0aGUgdGV4dC4KIAkJCQlXQVJOSU5HOiBJZiB0aGUgYXV0b2NvbW1hbmQgbW92ZXMgdGhlIGN1cnNvcgogCQkJCXRoZSBlZmZlY3Qgb2YgdGhlIGNoYW5nZSBpcyB1bmRlZmluZWQuCisJCQkJCQkJKkU3ODgqCisJCQkJSXQgaXMgbm90IGFsbG93ZWQgdG8gY2hhbmdlIHRvIGFub3RoZXIgYnVmZmVyCisJCQkJaGVyZS4gIFlvdSBjYW4gcmVsb2FkIHRoZSBidWZmZXIgYnV0IG5vdCBlZGl0CisJCQkJYW5vdGhlciBvbmUuCiAJCQkJCQkJKkZpbGVDaGFuZ2VkU2hlbGwqCiBGaWxlQ2hhbmdlZFNoZWxsCQlXaGVuIFZpbSBub3RpY2VzIHRoYXQgdGhlIG1vZGlmaWNhdGlvbiB0aW1lIG9mCiAJCQkJYSBmaWxlIGhhcyBjaGFuZ2VkIHNpbmNlIGVkaXRpbmcgc3RhcnRlZC4KZGlmZiAtLWdpdCBhL3J1bnRpbWUvZG9jL2RpZmYudHh0IGIvcnVudGltZS9kb2MvZGlmZi50eHQKaW5kZXggM2RmNTEzZS4uMjFiMmYzYSAxMDA2NDQKLS0tIGEvcnVudGltZS9kb2MvZGlmZi50eHQKKysrIGIvcnVudGltZS9kb2MvZGlmZi50eHQKQEAgLTEsNCArMSw0IEBACi0qZGlmZi50eHQqICAgICAgRm9yIFZpbSB2ZXJzaW9uIDcuMGMuICBMYXN0IGNoYW5nZTogMjAwNiBNYXIgMTUKKypkaWZmLnR4dCogICAgICBGb3IgVmltIHZlcnNpb24gNy4wYy4gIExhc3QgY2hhbmdlOiAyMDA2IEFwciAwNAogCiAKIAkJICBWSU0gUkVGRVJFTkNFIE1BTlVBTCAgICBieSBCcmFtIE1vb2xlbmFhcgpAQCAtMjcyLDYgKzI3MiwxMCBAQAogTm90ZSB0aGF0IGRlbGV0ZWQgbGluZXMgYXJlIGRpc3BsYXllZCwgYnV0IG5vdCBjb3VudGVkIGFzIHRleHQgbGluZXMuICBZb3UKIGNhbid0IG1vdmUgdGhlIGN1cnNvciBpbnRvIHRoZW0uICBUbyBmaWxsIHRoZSBkZWxldGVkIGxpbmVzIHdpdGggdGhlIGxpbmVzCiBmcm9tIGFub3RoZXIgYnVmZmVyIHVzZSAiOmRpZmZnZXQiIG9uIHRoZSBsaW5lIGJlbG93IHRoZW0uCisJCQkJCQkJCSpFNzg3KgorV2hlbiB0aGUgYnVmZmVyIHRoYXQgaXMgYWJvdXQgdG8gYmUgbW9kaWZpZWQgaXMgcmVhZC1vbmx5IGFuZCB0aGUgYXV0b2NvbW1hbmQKK3RoYXQgaXMgdHJpZ2dlcmVkIGJ5IHxGaWxlQ2hhbmdlZFJPfCBjaGFuZ2VzIGJ1ZmZlcnMgdGhlIGNvbW1hbmQgd2lsbCBmYWlsLgorVGhlIGF1dG9jb21tYW5kIG11c3Qgbm90IGNoYW5nZSBidWZmZXJzLgogCiBUaGUgW2J1ZnNwZWNdIGFyZ3VtZW50IGFib3ZlIGNhbiBiZSBhIGJ1ZmZlciBudW1iZXIsIGEgcGF0dGVybiBmb3IgYSBidWZmZXIKIG5hbWUgb3IgYSBwYXJ0IG9mIGEgYnVmZmVyIG5hbWUuICBFeGFtcGxlczoKZGlmZiAtLWdpdCBhL3J1bnRpbWUvZG9jL2VkaXRpbmcudHh0IGIvcnVudGltZS9kb2MvZWRpdGluZy50eHQKaW5kZXggN2E2N2E2OS4uZWVjZGQ4NiAxMDA2NDQKLS0tIGEvcnVudGltZS9kb2MvZWRpdGluZy50eHQKKysrIGIvcnVudGltZS9kb2MvZWRpdGluZy50eHQKQEAgLTEsNCArMSw0IEBACi0qZWRpdGluZy50eHQqICAgRm9yIFZpbSB2ZXJzaW9uIDcuMGMuICBMYXN0IGNoYW5nZTogMjAwNiBNYXIgMDYKKyplZGl0aW5nLnR4dCogICBGb3IgVmltIHZlcnNpb24gNy4wYy4gIExhc3QgY2hhbmdlOiAyMDA2IEFwciAwMgogCiAKIAkJICBWSU0gUkVGRVJFTkNFIE1BTlVBTCAgICBieSBCcmFtIE1vb2xlbmFhcgpAQCAtNDIyLDE0ICs0MjIsMTggQEAKIFRoZSBbKytvcHRdIGFyZ3VtZW50IGNhbiBiZSB1c2VkIHRvIGZvcmNlIHRoZSB2YWx1ZSBvZiAnZmlsZWZvcm1hdCcsCiAnZmlsZWVuY29kaW5nJyBvciAnYmluYXJ5JyB0byBhIHZhbHVlIGZvciBvbmUgY29tbWFuZCwgYW5kIHRvIHNwZWNpZnkgdGhlCiBiZWhhdmlvciBmb3IgYmFkIGNoYXJhY3RlcnMuICBUaGUgZm9ybSBpczogPgorCSsre29wdG5hbWV9CitPcjogPgogCSsre29wdG5hbWV9PXt2YWx1ZX0KIAotV2hlcmUge29wdG5hbWV9IGlzIG9uZSBvZjoJCSorK2ZmKiAqKytlbmMqICorK2JpbiogKisrbm9iaW4qCitXaGVyZSB7b3B0bmFtZX0gaXMgb25lIG9mOgkgICAgKisrZmYqICorK2VuYyogKisrYmluKiAqKytub2JpbiogKisrZWRpdCoKICAgICBmZiAgICAgb3IgIGZpbGVmb3JtYXQgICBvdmVycmlkZXMgJ2ZpbGVmb3JtYXQnCiAgICAgZW5jICAgIG9yICBlbmNvZGluZwkgICAgb3ZlcnJpZGVzICdmaWxlZW5jb2RpbmcnCiAgICAgYmluICAgIG9yICBiaW5hcnkJICAgIHNldHMgJ2JpbmFyeScKICAgICBub2JpbiAgb3IgIG5vYmluYXJ5CSAgICByZXNldHMgJ2JpbmFyeScKICAgICBiYWQgICAgICAgICAgICAgICAgICAgICBzcGVjaWZpZXMgYmVoYXZpb3IgZm9yIGJhZCBjaGFyYWN0ZXJzCisgICAgZWRpdAkJICAgIGZvciB8OnJlYWR8IG9ubHk6IGtlZXAgb3B0aW9uIHZhbHVlcyBhcyBpZiBlZGl0aW5nCisgICAgCQkJICAgIGEgZmlsZQogCiB7dmFsdWV9IGNhbm5vdCBjb250YWluIHdoaXRlIHNwYWNlLiAgSXQgY2FuIGJlIGFueSB2YWxpZCB2YWx1ZSBmb3IgdGhlc2UKIG9wdGlvbnMuICBFeGFtcGxlczogPgpAQCAtODk3LDYgKzkwMSw3IEBACiAJCQlUaGUgWyFdIGlzIG5lZWRlZCB0byBvdmVyd3JpdGUgYW4gZXhpc3RpbmcgZmlsZS4KIAkJCVdoZW4gJ2ZpbGV0eXBlJyBpcyBlbXB0eSBmaWxldHlwZSBkZXRlY3Rpb24gaXMgZG9uZQogCQkJd2l0aCB0aGUgbmV3IG5hbWUsIGJlZm9yZSB0aGUgZmlsZSBpcyB3cml0dGVuLgorCQkJV2hlbiB0aGUgd3JpdGUgd2FzIHN1Y2Nlc3NmdWwgJ3JlYWRvbmx5JyBpcyByZXNldC4KIAkJCXtub3QgaW4gVml9CiAKIAkJCQkJCQkqOnVwKiAqOnVwZGF0ZSoKZGlmZiAtLWdpdCBhL3J1bnRpbWUvZG9jL2V2YWwudHh0IGIvcnVudGltZS9kb2MvZXZhbC50eHQKaW5kZXggODE0NjNiNC4uYjgzMGNhMCAxMDA2NDQKLS0tIGEvcnVudGltZS9kb2MvZXZhbC50eHQKKysrIGIvcnVudGltZS9kb2MvZXZhbC50eHQKQEAgLTEsNCArMSw0IEBACi0qZXZhbC50eHQqICAgICAgRm9yIFZpbSB2ZXJzaW9uIDcuMGMuICBMYXN0IGNoYW5nZTogMjAwNiBNYXIgMjkKKypldmFsLnR4dCogICAgICBGb3IgVmltIHZlcnNpb24gNy4wYy4gIExhc3QgY2hhbmdlOiAyMDA2IEFwciAwNAogCiAKIAkJICBWSU0gUkVGRVJFTkNFIE1BTlVBTCAgICBieSBCcmFtIE1vb2xlbmFhcgpAQCAtMTEwLDggKzExMCw4IEBACiAJOmxldCBGbiA9IGZ1bmN0aW9uKCJNeUZ1bmMiKQogCTplY2hvIEZuKCkKIDwJCQkJCQkJKkU3MDQqICpFNzA1KiAqRTcwNyoKLUEgRnVuY3JlZiB2YXJpYWJsZSBtdXN0IHN0YXJ0IHdpdGggYSBjYXBpdGFsLCAiczoiLCAidzoiIG9yICJiOiIuICBZb3UgY2Fubm90Ci1oYXZlIGJvdGggYSBGdW5jcmVmIHZhcmlhYmxlIGFuZCBhIGZ1bmN0aW9uIHdpdGggdGhlIHNhbWUgbmFtZS4KK0EgRnVuY3JlZiB2YXJpYWJsZSBtdXN0IHN0YXJ0IHdpdGggYSBjYXBpdGFsLCAiczoiLCAidzoiLCAidDoiIG9yICJiOiIuICBZb3UKK2Nhbm5vdCBoYXZlIGJvdGggYSBGdW5jcmVmIHZhcmlhYmxlIGFuZCBhIGZ1bmN0aW9uIHdpdGggdGhlIHNhbWUgbmFtZS4KIAogQSBzcGVjaWFsIGNhc2UgaXMgZGVmaW5pbmcgYSBmdW5jdGlvbiBhbmQgZGlyZWN0bHkgYXNzaWduaW5nIGl0cyBGdW5jcmVmIHRvIGEKIERpY3Rpb25hcnkgZW50cnkuICBFeGFtcGxlOiA+CkBAIC01MDQsNyArNTA0LDcgQEAKIEl0IGlzIGFsc28gcG9zc2libGUgdG8gYWRkIGEgZnVuY3Rpb24gd2l0aG91dCB0aGUgImRpY3QiIGF0dHJpYnV0ZSBhcyBhCiBGdW5jcmVmIHRvIGEgRGljdGlvbmFyeSwgYnV0IHRoZSAic2VsZiIgdmFyaWFibGUgaXMgbm90IGF2YWlsYWJsZSB0aGVuLgogCi0JCQkJCQkqbnVtYmVyZWQtZnVuY3Rpb24qCisJCQkJKm51bWJlcmVkLWZ1bmN0aW9uKiAqYW5vbnltb3VzLWZ1bmN0aW9uKgogVG8gYXZvaWQgdGhlIGV4dHJhIG5hbWUgZm9yIHRoZSBmdW5jdGlvbiBpdCBjYW4gYmUgZGVmaW5lZCBhbmQgZGlyZWN0bHkKIGFzc2lnbmVkIHRvIGEgRGljdGlvbmFyeSBpbiB0aGlzIHdheTogPgogCTpsZXQgbXlkaWN0ID0geydkYXRhJzogWzAsIDEsIDIsIDNdfQpAQCAtMTAzMCw2ICsxMDMwLDcgQEAKIAkJKG5vdGhpbmcpIEluIGEgZnVuY3Rpb246IGxvY2FsIHRvIGEgZnVuY3Rpb247IG90aGVyd2lzZTogZ2xvYmFsCiB8YnVmZmVyLXZhcmlhYmxlfCAgICBiOgkgIExvY2FsIHRvIHRoZSBjdXJyZW50IGJ1ZmZlci4KIHx3aW5kb3ctdmFyaWFibGV8ICAgIHc6CSAgTG9jYWwgdG8gdGhlIGN1cnJlbnQgd2luZG93LgorfHRhYnBhZ2UtdmFyaWFibGV8ICAgdDoJICBMb2NhbCB0byB0aGUgY3VycmVudCB0YWIgcGFnZS4KIHxnbG9iYWwtdmFyaWFibGV8ICAgIGc6CSAgR2xvYmFsLgogfGxvY2FsLXZhcmlhYmxlfCAgICAgbDoJICBMb2NhbCB0byBhIGZ1bmN0aW9uLgogfHNjcmlwdC12YXJpYWJsZXwgICAgczoJICBMb2NhbCB0byBhIHw6c291cmNlfCdlZCBWaW0gc2NyaXB0LgpAQCAtMTA2Myw2ICsxMDY0LDExIEBACiBBIHZhcmlhYmxlIG5hbWUgdGhhdCBpcyBwcmVjZWRlZCB3aXRoICJ3OiIgaXMgbG9jYWwgdG8gdGhlIGN1cnJlbnQgd2luZG93LiAgSXQKIGlzIGRlbGV0ZWQgd2hlbiB0aGUgd2luZG93IGlzIGNsb3NlZC4KIAorCQkJCQkJKnRhYnBhZ2UtdmFyaWFibGUqICp0OnZhcioKK0EgdmFyaWFibGUgbmFtZSB0aGF0IGlzIHByZWNlZGVkIHdpdGggInQ6IiBpcyBsb2NhbCB0byB0aGUgY3VycmVudCB0YWIgcGFnZSwKK0l0IGlzIGRlbGV0ZWQgd2hlbiB0aGUgdGFiIHBhZ2UgaXMgY2xvc2VkLiB7bm90IGF2YWlsYWJsZSB3aGVuIGNvbXBpbGVkCit3aXRob3V0IHRoZSArd2luZG93cyBmZWF0dXJlfQorCiAJCQkJCQkqZ2xvYmFsLXZhcmlhYmxlKiAqZzp2YXIqCiBJbnNpZGUgZnVuY3Rpb25zIGdsb2JhbCB2YXJpYWJsZXMgYXJlIGFjY2Vzc2VkIHdpdGggImc6Ii4gIE9taXR0aW5nIHRoaXMgd2lsbAogYWNjZXNzIGEgdmFyaWFibGUgbG9jYWwgdG8gYSBmdW5jdGlvbi4gIEJ1dCAiZzoiIGNhbiBhbHNvIGJlIHVzZWQgaW4gYW55IG90aGVyCkBAIC0xNjI4LDYgKzE2MzQsNyBAQAogCQkJCVN0cmluZwljaGVjayBmb3IgbWFwcGluZ3MgbWF0Y2hpbmcge25hbWV9CiBtYXRjaCgge2V4cHJ9LCB7cGF0fVssIHtzdGFydH1bLCB7Y291bnR9XV0pCiAJCQkJTnVtYmVyCXBvc2l0aW9uIHdoZXJlIHtwYXR9IG1hdGNoZXMgaW4ge2V4cHJ9CittYXRjaGFyZygge25yfSkJCQlMaXN0CWFyZ3VtZW50cyBvZiB8Om1hdGNofAogbWF0Y2hlbmQoIHtleHByfSwge3BhdH1bLCB7c3RhcnR9Wywge2NvdW50fV1dKQogCQkJCU51bWJlcglwb3NpdGlvbiB3aGVyZSB7cGF0fSBlbmRzIGluIHtleHByfQogbWF0Y2hsaXN0KCB7ZXhwcn0sIHtwYXR9Wywge3N0YXJ0fVssIHtjb3VudH1dXSkKQEAgLTE2NDEsNiArMTY0OCw3IEBACiBtb2RlKCkJCQkJU3RyaW5nCWN1cnJlbnQgZWRpdGluZyBtb2RlCiBuZXh0bm9uYmxhbmsoIHtsbnVtfSkJCU51bWJlcglsaW5lIG5yIG9mIG5vbi1ibGFuayBsaW5lID49IHtsbnVtfQogbnIyY2hhcigge2V4cHJ9KQkJU3RyaW5nCXNpbmdsZSBjaGFyIHdpdGggQVNDSUkgdmFsdWUge2V4cHJ9CitwYXRoc2hvcnRlbigge2V4cHJ9KQkJU3RyaW5nCXNob3J0ZW4gZGlyZWN0b3J5IG5hbWVzIGluIGEgcGF0aAogcHJldm5vbmJsYW5rKCB7bG51bX0pCQlOdW1iZXIJbGluZSBuciBvZiBub24tYmxhbmsgbGluZSA8PSB7bG51bX0KIHByaW50Zigge2ZtdH0sIHtleHByMX0uLi4pCVN0cmluZyAgZm9ybWF0IHRleHQKIHB1bXZpc2libGUoKQkJCU51bWJlciAgd2hldGhlciBwb3B1cCBtZW51IGlzIHZpc2libGUKQEAgLTIyNTIsNiArMjI2MCw5IEBACiAJCWV4dGVuc2lvbi4KIAkJT24gTVMtRE9TIGFuZCBNUy1XaW5kb3dzIGl0IG9ubHkgY2hlY2tzIGlmIHRoZSBmaWxlIGV4aXN0cyBhbmQKIAkJaXMgbm90IGEgZGlyZWN0b3J5LCBub3QgaWYgaXQncyByZWFsbHkgZXhlY3V0YWJsZS4KKwkJT24gTVMtV2luZG93cyBhbiBleGVjdXRhYmxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeSBhcyBWaW0gaXMKKwkJYWx3YXlzIGZvdW5kLiAgU2luY2UgdGhpcyBkaXJlY3RvcnkgaXMgYWRkZWQgdG8gJFBBVEggaXQKKwkJc2hvdWxkIGFsc28gd29yayB0byBleGVjdXRlIGl0IHx3aW4zMi1QQVRIfC4KIAkJVGhlIHJlc3VsdCBpcyBhIE51bWJlcjoKIAkJCTEJZXhpc3RzCiAJCQkwCWRvZXMgbm90IGV4aXN0CkBAIC0yNzIwLDEwICsyNzMxLDEwIEBACiAJCU90aGVyd2lzZSB0aGUgYWN0dWFsIGZvbnQgbmFtZSBpcyByZXR1cm5lZCwgb3Ige25hbWV9IGlmIHRoZQogCQlHVUkgZG9lcyBub3Qgc3VwcG9ydCBvYnRhaW5pbmcgdGhlIHJlYWwgbmFtZS4KIAkJT25seSB3b3JrcyB3aGVuIHRoZSBHVUkgaXMgcnVubmluZywgdGh1cyBub3QgeW91IHlvdXIgdmltcmMgb3IKLQkJTm90ZSB0aGF0IHRoZSBHVEsgMiBHVUkgYWNjZXB0cyBhbnkgZm9udCBuYW1lLCB0aHVzIGNoZWNraW5nCi0JCWZvciBhIHZhbGlkIG5hbWUgZG9lcyBub3Qgd29yay4KIAkJZ3ZpbXJjIGZpbGUuICBVc2UgdGhlIHxHVUlFbnRlcnwgYXV0b2NvbW1hbmQgdG8gdXNlIHRoaXMKIAkJZnVuY3Rpb24ganVzdCBhZnRlciB0aGUgR1VJIGhhcyBzdGFydGVkLgorCQlOb3RlIHRoYXQgdGhlIEdUSyAyIEdVSSBhY2NlcHRzIGFueSBmb250IG5hbWUsIHRodXMgY2hlY2tpbmcKKwkJZm9yIGEgdmFsaWQgbmFtZSBkb2VzIG5vdCB3b3JrLgogCiBnZXRmcGVybSh7Zm5hbWV9KQkJCQkJKmdldGZwZXJtKCkqCiAJCVRoZSByZXN1bHQgaXMgYSBTdHJpbmcsIHdoaWNoIGlzIHRoZSByZWFkLCB3cml0ZSwgYW5kIGV4ZWN1dGUKQEAgLTMxMzcsOSArMzE0OCw5IEBACiAJCU5PVEU6IENvbW1hbmQtbGluZSBjb21wbGV0aW9uIGlzIG5vdCBzdXBwb3J0ZWQuCiAKIGlucHV0bGlzdCh7dGV4dGxpc3R9KQkJCQkJKmlucHV0bGlzdCgpKgotCQl7dGV4dGxpc3R9IG11c3QgYmUgYSBsaXN0IG9mIHN0cmluZ3MuICBUaGlzIGxpc3QgaXMgZGlzcGxheWVkLAotCQlvbmUgc3RyaW5nIHBlciBsaW5lLiAgVGhlIHVzZXIgd2lsbCBiZSBwcm9tcHRlZCB0byBlbnRlciBhCi0JCW51bWJlciwgd2hpY2ggaXMgcmV0dXJuZWQuCisJCXt0ZXh0bGlzdH0gbXVzdCBiZSBhIHxMaXN0fCBvZiBzdHJpbmdzLiAgVGhpcyB8TGlzdHwgaXMKKwkJZGlzcGxheWVkLCBvbmUgc3RyaW5nIHBlciBsaW5lLiAgVGhlIHVzZXIgd2lsbCBiZSBwcm9tcHRlZCB0bworCQllbnRlciBhIG51bWJlciwgd2hpY2ggaXMgcmV0dXJuZWQuCiAJCVRoZSB1c2VyIGNhbiBhbHNvIHNlbGVjdCBhbiBpdGVtIGJ5IGNsaWNraW5nIG9uIGl0IHdpdGggdGhlCiAJCW1vdXNlLiAgRm9yIHRoZSBmaXJzdCBzdHJpbmcgMCBpcyByZXR1cm5lZC4gIFdoZW4gY2xpY2tpbmcKIAkJYWJvdmUgdGhlIGZpcnN0IGl0ZW0gYSBuZWdhdGl2ZSBudW1iZXIgaXMgcmV0dXJuZWQuICBXaGVuCkBAIC0zMTk2LDcgKzMyMDcsNyBAQAogCQlleGlzdCwgb3IgaXNuJ3QgYSBkaXJlY3RvcnksIHRoZSByZXN1bHQgaXMgRkFMU0UuICB7ZGlyZWN0b3J5fQogCQlpcyBhbnkgZXhwcmVzc2lvbiwgd2hpY2ggaXMgdXNlZCBhcyBhIFN0cmluZy4KIAotaXNsb2NrZWQoe2V4cHJ9KQkJCQkJKmlzbG9ja2VkKCkqCitpc2xvY2tlZCh7ZXhwcn0pCQkJCQkqaXNsb2NrZWQoKSogKkU3ODYqCiAJCVRoZSByZXN1bHQgaXMgYSBOdW1iZXIsIHdoaWNoIGlzIG5vbi16ZXJvIHdoZW4ge2V4cHJ9IGlzIHRoZQogCQluYW1lIG9mIGEgbG9ja2VkIHZhcmlhYmxlLgogCQl7ZXhwcn0gbXVzdCBiZSB0aGUgbmFtZSBvZiBhIHZhcmlhYmxlLCB8TGlzdHwgaXRlbSBvcgpAQCAtMzQ3OSw2ICszNDkwLDE4IEBACiAJCXRoZSBwYXR0ZXJuLiAgJ3NtYXJ0Y2FzZScgaXMgTk9UIHVzZWQuICBUaGUgbWF0Y2hpbmcgaXMgYWx3YXlzCiAJCWRvbmUgbGlrZSAnbWFnaWMnIGlzIHNldCBhbmQgJ2Nwb3B0aW9ucycgaXMgZW1wdHkuCiAKKworbWF0Y2hhcmcoe25yfSkJCQkJCQkJKm1hdGNoYXJnKCkqCisJCVNlbGVjdHMgdGhlIHtucn0gbWF0Y2ggaXRlbSwgYXMgc2V0IHdpdGggYSB8Om1hdGNofCwgCisJCXw6Mm1hdGNofCBvciB8OjNtYXRjaHwgY29tbWFuZC4KKwkJUmV0dXJuIGEgfExpc3R8IHdpdGggdHdvIGVsZW1lbnRzOgorCQkJVGhlIG5hbWUgb2YgdGhlIGhpZ2hsaWdodCBncm91cCB1c2VkCisJCQlUaGUgcGF0dGVybiB1c2VkLgorCQlXaGVuIHtucn0gaXMgbm90IDEsIDIgb3IgMyByZXR1cm5zIGFuIGVtcHR5IHxMaXN0fC4KKwkJV2hlbiB0aGVyZSBpcyBubyBtYXRjaCBpdGVtIHNldCByZXR1cm5zIFsnJywgJyddLgorCQlUaGlzIGlzIHVzZWYgdG8gc2F2ZSBhbmQgcmVzdG9yZSBhIHw6bWF0Y2h8LgorCisKIG1hdGNoZW5kKHtleHByfSwge3BhdH1bLCB7c3RhcnR9Wywge2NvdW50fV1dKQkJCSptYXRjaGVuZCgpKgogCQlTYW1lIGFzIG1hdGNoKCksIGJ1dCByZXR1cm4gdGhlIGluZGV4IG9mIGZpcnN0IGNoYXJhY3RlciBhZnRlcgogCQl0aGUgbWF0Y2guICBFeGFtcGxlOiA+CkBAIC0zNTk4LDYgKzM2MjEsMTUgQEAKIAkJCWNhbGwgc2V0cG9zKCcuJywgc2F2ZV9jdXJzb3IpCiA8CQlBbHNvIHNlZSB8c2V0cG9zKCl8LgogCitwYXRoc2hvcnRlbih7ZXhwcn0pCQkJCQkqcGF0aHNob3J0ZW4oKSoKKwkJU2hvcnRlbiBkaXJlY3RvcnkgbmFtZXMgaW4gdGhlIHBhdGgge2V4cHJ9IGFuZCByZXR1cm4gdGhlCisJCXJlc3VsdC4gIFRoZSB0YWlsLCB0aGUgZmlsZSBuYW1lLCBpcyBrZXB0IGFzLWlzLiAgVGhlIG90aGVyCisJCWNvbXBvbmVudHMgaW4gdGhlIHBhdGggYXJlIHJlZHVjZWQgdG8gc2luZ2xlIGxldHRlcnMuICBMZWFkaW5nCisJCSd+JyBhbmQgJy4nIGNoYXJhY3RlcnMgYXJlIGtlcHQuICBFeGFtcGxlOiA+CisJCQk6ZWNobyBwYXRoc2hvcnRlbignfi8udmltL2F1dG9sb2FkL215ZmlsZS52aW0nKQorPAkJCX4vLnYvYS9teWZpbGUudmltIH4KKwkJSXQgZG9lc24ndCBtYXR0ZXIgaWYgdGhlIHBhdGggZXhpc3RzIG9yIG5vdC4KKwogcHJldm5vbmJsYW5rKHtsbnVtfSkJCQkJCSpwcmV2bm9uYmxhbmsoKSoKIAkJUmV0dXJuIHRoZSBsaW5lIG51bWJlciBvZiB0aGUgZmlyc3QgbGluZSBhdCBvciBhYm92ZSB7bG51bX0KIAkJdGhhdCBpcyBub3QgYmxhbmsuICBFeGFtcGxlOiA+CkBAIC01MDM2LDcgKzUwNjgsNiBAQAogZ3VpX2F0aGVuYQkJQ29tcGlsZWQgd2l0aCBBdGhlbmEgR1VJLgogZ3VpX2d0awkJCUNvbXBpbGVkIHdpdGggR1RLKyBHVUkgKGFueSB2ZXJzaW9uKS4KIGd1aV9ndGsyCQlDb21waWxlZCB3aXRoIEdUSysgMiBHVUkgKGd1aV9ndGsgaXMgYWxzbyBkZWZpbmVkKS4KLWd1aV9rZGUJCQlDb21waWxlZCB3aXRoIEtERSBHVUkgfEtWaW18CiBndWlfbWFjCQkJQ29tcGlsZWQgd2l0aCBNYWNpbnRvc2ggR1VJLgogZ3VpX21vdGlmCQlDb21waWxlZCB3aXRoIE1vdGlmIEdVSS4KIGd1aV9waG90b24JCUNvbXBpbGVkIHdpdGggUGhvdG9uIEdVSS4KQEAgLTU2NTQsNiArNTY4NSw3IEBACiAJCQkgIGc6CWdsb2JhbCB2YXJpYWJsZXMKIAkJCSAgYjoJbG9jYWwgYnVmZmVyIHZhcmlhYmxlcwogCQkJICB3Oglsb2NhbCB3aW5kb3cgdmFyaWFibGVzCisJCQkgIHQ6CWxvY2FsIHRhYiBwYWdlIHZhcmlhYmxlcwogCQkJICBzOglzY3JpcHQtbG9jYWwgdmFyaWFibGVzCiAJCQkgIGw6CWxvY2FsIGZ1bmN0aW9uIHZhcmlhYmxlcwogCQkJICB2OglWaW0gdmFyaWFibGVzLgpAQCAtNTcxMSw4ICs1NzQzLDggQEAKIAogCQkJTm90ZSB0aGF0IHdoZW4gdHdvIHZhcmlhYmxlcyByZWZlciB0byB0aGUgc2FtZSB8TGlzdHwKIAkJCWFuZCB5b3UgbG9jayBvbmUgb2YgdGhlbSwgdGhlIHxMaXN0fCB3aWxsIGFsc28gYmUKLQkJCWxvY2tlZCB3aGVuIHVzZWQgdGhyb3VnaCB0aGUgb3RoZXIgdmFyaWFibGUuICBFeGFtcGxlOgotCQkJPgorCQkJbG9ja2VkIHdoZW4gdXNlZCB0aHJvdWdoIHRoZSBvdGhlciB2YXJpYWJsZS4KKwkJCUV4YW1wbGU6ID4KIAkJCQk6bGV0IGwgPSBbMCwgMSwgMiwgM10KIAkJCQk6bGV0IGNsID0gbAogCQkJCTpsb2NrdmFyIGwKZGlmZiAtLWdpdCBhL3J1bnRpbWUvZG9jL2d1aS50eHQgYi9ydW50aW1lL2RvYy9ndWkudHh0CmluZGV4IGQ4Mzg2ODAuLmNkMjVjMTkgMTAwNjQ0Ci0tLSBhL3J1bnRpbWUvZG9jL2d1aS50eHQKKysrIGIvcnVudGltZS9kb2MvZ3VpLnR4dApAQCAtMSw0ICsxLDQgQEAKLSpndWkudHh0KiAgICAgICBGb3IgVmltIHZlcnNpb24gNy4wYy4gIExhc3QgY2hhbmdlOiAyMDA2IE1hciAyMAorKmd1aS50eHQqICAgICAgIEZvciBWaW0gdmVyc2lvbiA3LjBjLiAgTGFzdCBjaGFuZ2U6IDIwMDYgQXByIDAyCiAKIAogCQkgIFZJTSBSRUZFUkVOQ0UgTUFOVUFMICAgIGJ5IEJyYW0gTW9vbGVuYWFyCkBAIC0zNiw2ICszNiwxMCBAQAogfGd1aS14MTEtc3RhcnR8LgogCiAJCQkJCSpndWktaW5pdCogKmd2aW1yYyogKi5ndmltcmMqICpfZ3ZpbXJjKgorVGhlIGd2aW1yYyBmaWxlIGlzIHdoZXJlIEdVSS1zcGVjaWZpYyBzdGFydHVwIGNvbW1hbmRzIHNob3VsZCBiZSBwbGFjZWQuICBJdAoraXMgYWx3YXlzIHNvdXJjZWQgYWZ0ZXIgdGhlIHx2aW1yY3wgZmlsZS4gIElmIHlvdSBoYXZlIG9uZSB0aGVuIHRoZSAkTVlHVklNUkMKK2Vudmlyb25tZW50IHZhcmlhYmxlIGhhcyBpdHMgbmFtZS4KKwogV2hlbiB0aGUgR1VJIHN0YXJ0cyB1cCBpbml0aWFsaXphdGlvbnMgYXJlIGNhcnJpZWQgb3V0LCBpbiB0aGlzIG9yZGVyOgogLSBUaGUgJ3Rlcm0nIG9wdGlvbiBpcyBzZXQgdG8gImJ1aWxnaW5fZ3VpIiBhbmQgdGVybWluYWwgb3B0aW9ucyBhcmUgcmVzZXQgdG8KICAgdGhlaXIgZGVmYXVsdCB2YWx1ZSBmb3IgdGhlIEdVSSB8dGVybWluYWwtb3B0aW9uc3wuCkBAIC02Niw2ICs3MCw4IEBACiAgIC0gRm9yIFdpbjMyLCB3aGVuICRIT01FIGlzIG5vdCBzZXQsICIkVklNXF9ndmltcmMiIGlzIHVzZWQuCiAgIC0gV2hlbiBhICJfZ3ZpbXJjIiBmaWxlIGlzIG5vdCBmb3VuZCwgIi5ndmltcmMiIGlzIHRyaWVkIHRvby4gIEFuZCB2aWNlCiAgICAgdmVyc2EuCisgIFRoZSBuYW1lIG9mIHRoZSBmaXJzdCBmaWxlIGZvdW5kIGlzIHN0b3JlZCBpbiAkTVlHVklNUkMsIHVubGVzcyBpdCB3YXMKKyAgYWxyZWFkeSBzZXQuCiAtIElmIHRoZSAnZXhyYycgb3B0aW9uIGlzIHNldCAod2hpY2ggaXMgTk9UIHRoZSBkZWZhdWx0KSB0aGUgZmlsZSAuLy5ndmltcmMKICAgaXMgc291cmNlZCwgaWYgaXQgZXhpc3RzIGFuZCBpc24ndCB0aGUgc2FtZSBmaWxlIGFzIHRoZSBzeXN0ZW0gb3IgdXNlcgogICBndmltcmMgZmlsZS4gIElmIHRoaXMgZmlsZSBpcyBub3Qgb3duZWQgYnkgeW91LCBzb21lIHNlY3VyaXR5IHJlc3RyaWN0aW9ucwpkaWZmIC0tZ2l0IGEvcnVudGltZS9kb2MvaGFuZ3VsaW4udHh0IGIvcnVudGltZS9kb2MvaGFuZ3VsaW4udHh0CmluZGV4IDdlMGVjMWUuLjE4ZmRmNjAgMTAwNjQ0Ci0tLSBhL3J1bnRpbWUvZG9jL2hhbmd1bGluLnR4dAorKysgYi9ydW50aW1lL2RvYy9oYW5ndWxpbi50eHQKQEAgLTEsNCArMSw0IEBACi0qaGFuZ3VsaW4udHh0KiAgRm9yIFZpbSB2ZXJzaW9uIDcuMGMuICBMYXN0IGNoYW5nZTogMjAwNSBNYXIgMjkKKypoYW5ndWxpbi50eHQqICBGb3IgVmltIHZlcnNpb24gNy4wYy4gIExhc3QgY2hhbmdlOiAyMDA2IEFwciAwMgogCiAKIAkJICBWSU0gUkVGRVJFTkNFIE1BTlVBTCAgICBieSBDaGktRGVvayBId2FuZyBhbmQgU3VuZy1IeXVuIE5hbQpAQCAtNDgsNyArNDgsNyBAQAogCiBIYW5ndWwgRm9udHMKIC0tLS0tLS0tLS0tLQotWW91IGNhbiBzZXQgdGV4dCBmb250IHVzaW5nICRIT01FLy5YZGVmYXVsdHMgb3IgJEhPTUUvLmd2aW1yYy4KK1lvdSBjYW4gc2V0IHRleHQgZm9udCB1c2luZyAkSE9NRS8uWGRlZmF1bHRzIG9yIGluIHlvdXIgZ3ZpbXJjIGZpbGUuCiBCdXQgdG8gdXNlIEhhbmd1bCwgeW91IHNob3VsZCBzZXQgJ2d1aWZvbnRzZXQnIGluIHlvdXIgdmltcmMuCiAKICRIT01FLy5YZGVmYXVsdHM6ID4KZGlmZiAtLWdpdCBhL3J1bnRpbWUvZG9jL2hlbHAudHh0IGIvcnVudGltZS9kb2MvaGVscC50eHQKaW5kZXggZDk5ZjIxZi4uMjI5MjIwZiAxMDA2NDQKLS0tIGEvcnVudGltZS9kb2MvaGVscC50eHQKKysrIGIvcnVudGltZS9kb2MvaGVscC50eHQKQEAgLTEsNCArMSw0IEBACi0qaGVscC50eHQqCUZvciBWaW0gdmVyc2lvbiA3LjBjLiAgTGFzdCBjaGFuZ2U6IDIwMDYgTWFyIDI0CisqaGVscC50eHQqCUZvciBWaW0gdmVyc2lvbiA3LjBjLiAgTGFzdCBjaGFuZ2U6IDIwMDYgQXByIDAyCiAKIAkJCVZJTSAtIG1haW4gaGVscCBmaWxlCiAJCQkJCQkJCQkgawpAQCAtODUsNyArODUsNyBAQAogfHVzcl85MC50eHR8ICBJbnN0YWxsaW5nIFZpbQogCiAKLVJFRkVSRU5DRSBNQU5VQUw6IFRoZXNlIGZpbGVzIGV4cGxhaW4gZXZlcnkgZGV0YWlsIG9mIFZpbS4JKnJlZi10b2MqCitSRUZFUkVOQ0UgTUFOVUFMOiBUaGVzZSBmaWxlcyBleHBsYWluIGV2ZXJ5IGRldGFpbCBvZiBWaW0uCSpyZWZlcmVuY2VfdG9jKgogCiBHZW5lcmFsIHN1YmplY3RzIH4KIHxpbnRyby50eHR8CWdlbmVyYWwgaW50cm9kdWN0aW9uIHRvIFZpbTsgbm90YXRpb24gdXNlZCBpbiBoZWxwIGZpbGVzCkBAIC0xOTUsNiArMTk1LDEyIEBACiB8cGlfemlwLnR4dHwJWmlwIGFyY2hpdmUgZXhwbG9yZXIKIAogTE9DQUwgQURESVRJT05TOgkJCQkqbG9jYWwtYWRkaXRpb25zKgorfGNlY3V0aWwudHh0fAlEckNoaXAncyBVdGlsaXRpZXMJCQkJSnVuIDExLCAyMDA0Cit8ZXhhbXBsZS50eHR8CUV4YW1wbGUgZm9yIGEgbG9jYWxseSBhZGRlZCBoZWxwIGZpbGUKK3xtYXRjaGl0LnR4dHwgICBFeHRlbmRlZCAiJSIgbWF0Y2hpbmcKK3x0ZXN0LnR4dHwJVGVzdGluZyB0aGUgaOlscCBj9m1t5W5kIG70dworfHR5cGVjb3JyLnR4dHwJUGx1Z2luIGZvciBjb3JyZWN0aW5nIHR5cGluZyBtaXN0YWtlcworfGhlbHBwLnR4dHwJRHVtbXkgbGluZSB0byBhdm9pZCBhbiBlcnJvciBtZXNzYWdlCiAKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogKmJhcnMqCQlCYXJzIGV4YW1wbGUKZGlmZiAtLWdpdCBhL3J1bnRpbWUvZG9jL2hvd3RvLnR4dCBiL3J1bnRpbWUvZG9jL2hvd3RvLnR4dAppbmRleCBmOGY3NTQzLi5mNmI4MWE4IDEwMDY0NAotLS0gYS9ydW50aW1lL2RvYy9ob3d0by50eHQKKysrIGIvcnVudGltZS9kb2MvaG93dG8udHh0CkBAIC0xLDQgKzEsNCBAQAotKmhvd3RvLnR4dCoJRm9yIFZpbSB2ZXJzaW9uIDcuMGMuICBMYXN0IGNoYW5nZTogMjAwMSBTZXAgMDMKKypob3d0by50eHQqCUZvciBWaW0gdmVyc2lvbiA3LjBjLiAgTGFzdCBjaGFuZ2U6IDIwMDYgQXByIDAyCiAKIAogCQkgIFZJTSBSRUZFUkVOQ0UgTUFOVUFMCSAgYnkgQnJhbSBNb29sZW5hYXIKQEAgLTc1LDcgKzc1LDcgQEAKIHxhdXRvLXNldHRpbmd8CQlzZXQgb3B0aW9ucyBhdXRvbWF0aWNhbGx5CiB8dGVybS1kZXBlbmRlbnQtc2V0dGluZ3N8IHNldCBvcHRpb25zIGRlcGVuZGluZyBvbiB0ZXJtaW5hbCBuYW1lCiB8c2F2ZS1zZXR0aW5nc3wJCXNhdmUgc2V0dGluZ3MKLXw6cXVvdGV8CQljb21tZW50IG15IGV4cmMvdmltcmMvZ3ZpbXJjIGZpbGVzCit8OnF1b3RlfAkJY29tbWVudCBteSAudmltIGZpbGVzCiB8J2hlbHBoZWlnaHQnfAkJY2hhbmdlIHRoZSBkZWZhdWx0IGhlbHAgaGVpZ2h0CiB8J2hpZ2hsaWdodCd8CQlzZXQgdmFyaW91cyBoaWdobGlnaHRpbmcgbW9kZXMKIHwndGl0bGUnfAkJc2V0IHRoZSB3aW5kb3cgdGl0bGUKZGlmZiAtLWdpdCBhL3J1bnRpbWUvZG9jL2luc2VydC50eHQgYi9ydW50aW1lL2RvYy9pbnNlcnQudHh0CmluZGV4IDRlYjRiY2YuLjQxN2E0YjMgMTAwNjQ0Ci0tLSBhL3J1bnRpbWUvZG9jL2luc2VydC50eHQKKysrIGIvcnVudGltZS9kb2MvaW5zZXJ0LnR4dApAQCAtMSw0ICsxLDQgQEAKLSppbnNlcnQudHh0KiAgICBGb3IgVmltIHZlcnNpb24gNy4wYy4gIExhc3QgY2hhbmdlOiAyMDA2IE1hciAyOQorKmluc2VydC50eHQqICAgIEZvciBWaW0gdmVyc2lvbiA3LjBjLiAgTGFzdCBjaGFuZ2U6IDIwMDYgQXByIDA1CiAKIAogCQkgIFZJTSBSRUZFUkVOQ0UgTUFOVUFMICAgIGJ5IEJyYW0gTW9vbGVuYWFyCkBAIC0xMDA0LDEwICsxMDA0LDEyIEBACiBFYWNoIGxpc3QgaXRlbSBjYW4gZWl0aGVyIGJlIGEgc3RyaW5nIG9yIGEgRGljdGlvbmFyeS4gIFdoZW4gaXQgaXMgYSBzdHJpbmcgaXQKIGlzIHVzZWQgYXMgdGhlIGNvbXBsZXRpb24uICBXaGVuIGl0IGlzIGEgRGljdGlvbmFyeSBpdCBjYW4gY29udGFpbiB0aGVzZQogaXRlbXM6Ci0Jd29yZAkJdGhlIGNvbXBsZXRpb24sIG1hbmRhdG9yeQotCWFiYnIJCWFiYnJldmlhdGlvbiBvZiAid29yZCIsIHRvIGJlIHVzZWQgaW4gdGhlIG1lbnUKLQltZW51CQlleHRyYSB0ZXh0IGZvciB0aGUgcG9wdXAgbWVudQotCWluZm8JCW1vcmUgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGl0ZW0KKwl3b3JkCQl0aGUgdGV4dCB0aGF0IHdpbGwgYmUgaW5zZXJ0ZWQsIG1hbmRhdG9yeQorCWFiYnIJCWFiYnJldmlhdGlvbiBvZiAid29yZCI7IHdoZW4gbm90IGVtcHR5IGl0IGlzIHVzZWQgaW4KKwkJCXRoZSBtZW51IGluc3RlYWQgb2YgIndvcmQiCisJbWVudQkJZXh0cmEgdGV4dCBmb3IgdGhlIHBvcHVwIG1lbnUsIGFmdGVyICJ3b3JkIiBvciAiYWJiciIKKwlpbmZvCQltb3JlIGluZm9ybWF0aW9uIGFib3V0IHRoZSBpdGVtLCBjYW4gYmUgZGlzcGxheWVkIGluIGEKKwkJCXByZXZpZXcgd2luZG93CiAJa2luZAkJc2luZ2xlIGxldHRlciBpbmRpY2F0aW5nIHRoZSB0eXBlIG9mIGNvbXBsZXRpb24KIAlpY2FzZQkJd2hlbiBub24temVybyBjYXNlIGlzIHRvIGJlIGlnbm9yZWQ7IHdoZW4gb21pdHRlZAogCQkJdGhlICdpZ25vcmVjYXNlJyBvcHRpb24gaXMgdXNlZApAQCAtMTI5MSw2ICsxMjkzLDE0IEBACiAtIGFmdGVyICQgdmFyaWFibGVzIG5hbWUKICAgLSBpZiB2YXJpYWJsZSB3YXMgZGVjbGFyZWQgYXMgb2JqZWN0IGFkZCAiLT4iLCBpZiB0YWdzIGZpbGUgaXMgYXZhaWxhYmxlIHNob3cKICAgICBuYW1lIG9mIGNsYXNzCisgIC0gYWZ0ZXIgIi0+IiBjb21wbGV0ZSBvbmx5IGZ1bmN0aW9uIGFuZCB2YXJpYWJsZSBuYW1lcyBzcGVjaWZpYyBmb3IgZ2l2ZW4KKyAgICBjbGFzcy4gVG8gZmluZCBjbGFzcyBsb2NhdGlvbiBhbmQgY29udGVudHMgdGFncyBmaWxlIGlzIHJlcXVpcmVkLiBCZWNhdXNlCisgICAgUEhQIGlzbid0IHN0cm9uZ2x5IHR5cGVkIGxhbmd1YWdlIHVzZXIgY2FuIHVzZSBAdmFyIHRhZyB0byBkZWNsYXJlIGNsYXNzOiA+CisKKyAgICAJLyogQHZhciAkbXlWYXIgbXlDbGFzcyAqLworCSRteVZhci0+Cis8CisgICAgU3RpbGwsIHRvIGZpbmQgbXlDbGFzcyBjb250ZW50cyB0YWdzIGZpbGUgaXMgcmVxdWlyZWQuCiAKIC0gZnVuY3Rpb24gbmFtZXMgd2l0aCBhZGRpdG9uYWwgaW5mbzoKICAgLSBpbiBjYXNlIG9mIGJ1aWx0LWluIGZ1bmN0aW9ucyBsaXN0IG9mIHBvc3NpYmxlIGFyZ3VtZW50cyBhbmQgYWZ0ZXIgfCB0eXBlCkBAIC0xMzc1LDYgKzEzODUsMTIgQEAKIHdpdGggZGF0YSBwdWxsZWQgZGlyZWN0bHkgZnJvbSB3aXRoaW4gYSBkYXRhYmFzZS4gIEZvciBkZXRhaWxlZCBpbnN0cnVjdGlvbnMKIGFuZCBhIHR1dG9yaWFsIHNlZSB8b21uaS1zcWwtY29tcGxldGlvbnwuCiAKK1RoZSBTUUwgY29tcGxldGlvbiBwbHVnaW4gY2FuIGJlIHVzZWQgaW4gY29uanVuY3Rpb24gd2l0aCBvdGhlciBjb21wbGV0aW9uCitwbHVnaW5zLiAgRm9yIGV4YW1wbGUsIHRoZSBQSFAgZmlsZXR5cGUgaGFzIGl0J3Mgb3duIGNvbXBsZXRpb24gcGx1Z2luLgorU2luY2UgUEhQIGlzIG9mdGVuIHVzZWQgdG8gZ2VuZXJhdGUgZHluYW1pYyB3ZWJzaXRlIGJ5IGFjY2Vzc2luZyBhIGRhdGFiYXNlLAordGhlIFNRTCBjb21wbGV0aW9uIHBsdWdpbiBjYW4gYWxzbyBiZSBlbmFibGVkLiAgVGhpcyBhbGxvd3MgeW91IHRvIGNvbXBsZXRlCitQSFAgY29kZSBhbmQgU1FMIGNvZGUgYXQgdGhlIHNhbWUgdGltZS4KKwogCiBYTUwJCQkJCQkJKmZ0LXhtbC1vbW5pKgogCkBAIC0xNjM0LDExICsxNjUwLDE1IEBACiAxMC4gSW5zZXJ0aW5nIGEgZmlsZQkJCQkJKmluc2VydGluZy1maWxlKgogCiAJCQkJCQkJKjpyKiAqOnJlKiAqOnJlYWQqCi06cltlYWRdIFtuYW1lXQkJSW5zZXJ0IHRoZSBmaWxlIFtuYW1lXSAoZGVmYXVsdDogY3VycmVudCBmaWxlKSBiZWxvdworOnJbZWFkXSBbKytvcHRdIFtuYW1lXQorCQkJSW5zZXJ0IHRoZSBmaWxlIFtuYW1lXSAoZGVmYXVsdDogY3VycmVudCBmaWxlKSBiZWxvdwogCQkJdGhlIGN1cnNvci4KKwkJCVNlZSB8KytvcHR8IGZvciB0aGUgcG9zc2libGUgdmFsdWVzIG9mIFsrK29wdF0uCiAKLTp7cmFuZ2V9cltlYWRdIFtuYW1lXQlJbnNlcnQgdGhlIGZpbGUgW25hbWVdIChkZWZhdWx0OiBjdXJyZW50IGZpbGUpIGJlbG93Cis6e3JhbmdlfXJbZWFkXSBbKytvcHRdIFtuYW1lXQorCQkJSW5zZXJ0IHRoZSBmaWxlIFtuYW1lXSAoZGVmYXVsdDogY3VycmVudCBmaWxlKSBiZWxvdwogCQkJdGhlIHNwZWNpZmllZCBsaW5lLgorCQkJU2VlIHwrK29wdHwgZm9yIHRoZSBwb3NzaWJsZSB2YWx1ZXMgb2YgWysrb3B0XS4KIAogCQkJCQkJCSo6ciEqICo6cmVhZCEqCiA6cltlYWRdICF7Y21kfQkJRXhlY3V0ZSB7Y21kfSBhbmQgaW5zZXJ0IGl0cyBzdGFuZGFyZCBvdXRwdXQgYmVsb3cKQEAgLTE2NjMsNiArMTY4MywxNCBAQAogdXNlZCwgZm9yIGV4YW1wbGUsIHdoZW4geW91IHdhbnQgdG8gZWRpdCB0aGF0IGZpbGUgaW5zdGVhZDogIjplISAjIi4gIFRoaXMgY2FuCiBiZSBzd2l0Y2hlZCBvZmYgYnkgcmVtb3ZpbmcgdGhlICdhJyBmbGFnIGZyb20gdGhlICdjcG9wdGlvbnMnIG9wdGlvbi4KIAorT2YgdGhlIFsrK29wdF0gYXJndW1lbnRzIG9uZSBpcyBzcGVjaWZpY2FsbHkgZm9yICI6cmVhZCIsIHRoZSArK2VkaXQgYXJndW1lbnQuCitUaGlzIGlzIHVzZWZ1bCB3aGVuIHRoZSAiOnJlYWQiIGNvbW1hbmQgaXMgYWN0dWFsbHkgdXNlZCB0byByZWFkIGEgZmlsZSBpbnRvCit0aGUgYnVmZmVyIGFzIGlmIGVkaXRpbmcgdGhhdCBmaWxlLiAgVXNlIHRoaXMgY29tbWFuZCBpbiBhbiBlbXB0eSBidWZmZXI6ID4KKwk6cmVhZCArK2VkaXQgZmlsZW5hbWUKK1RoZSBlZmZlY3QgaXMgdGhhdCB0aGUgJ2ZpbGVmb3JtYXQnLCAnZmlsZWVuY29kaW5nJywgJ2JvbWInLCBldGMuIG9wdGlvbnMgYXJlCitzZXQgdG8gd2hhdCBoYXMgYmVlbiBkZXRlY3RlZCBmb3IgImZpbGVuYW1lIi4gIE5vdGUgdGhhdCBhIHNpbmdsZSBlbXB0eSBsaW5lCityZW1haW5zLCB5b3UgbWF5IHdhbnQgdG8gZGVsZXRlIGl0LgorCiAJCQkJCQkJKmZpbGUtcmVhZCoKIFRoZSAnZmlsZWZvcm1hdCcgb3B0aW9uIHNldHMgdGhlIDxFT0w+IHN0eWxlIGZvciBhIGZpbGU6CiAnZmlsZWZvcm1hdCcgICAgY2hhcmFjdGVycwkgICBuYW1lCQkJCX4KZGlmZiAtLWdpdCBhL3J1bnRpbWUvZG9jL21ieXRlLnR4dCBiL3J1bnRpbWUvZG9jL21ieXRlLnR4dAppbmRleCA3NGIyZjhlLi4zYjY5MzRiIDEwMDY0NAotLS0gYS9ydW50aW1lL2RvYy9tYnl0ZS50eHQKKysrIGIvcnVudGltZS9kb2MvbWJ5dGUudHh0CkBAIC0xLDQgKzEsNCBAQAotKm1ieXRlLnR4dCogICAgIEZvciBWaW0gdmVyc2lvbiA3LjBjLiAgTGFzdCBjaGFuZ2U6IDIwMDYgTWFyIDI5CisqbWJ5dGUudHh0KiAgICAgRm9yIFZpbSB2ZXJzaW9uIDcuMGMuICBMYXN0IGNoYW5nZTogMjAwNiBBcHIgMDIKIAogCiAJCSAgVklNIFJFRkVSRU5DRSBNQU5VQUwJICBieSBCcmFtIE1vb2xlbmFhciBldCBhbC4KQEAgLTk4NSw3ICs5ODUsNyBAQAogICAgIFRoaXMgd29ya3MgaW4gdGhlIHNhbWUgd2F5IHdoZW4gdXNpbmcgWElNLgogCiAgICAgWW91IGNhbiBzZWxlY3QgY3Vyc29yIGNvbG9yIHdoZW4gc3RhdHVzIGlzIG9uIGJ5IHVzaW5nIGhpZ2hsaWdodCBncm91cAotICAgIEN1cnNvcklNLiAgRm9yIGV4YW1wbGUsIGFkZCB0aGVzZSBsaW5lcyB0byB5b3VyIF9ndmltcmM6ID4KKyAgICBDdXJzb3JJTS4gIEZvciBleGFtcGxlLCBhZGQgdGhlc2UgbGluZXMgdG8geW91ciB8Z3ZpbXJjfDogPgogCiAJaWYgaGFzKCdtdWx0aV9ieXRlX2ltZScpCiAJICAgIGhpZ2hsaWdodCBDdXJzb3IgZ3VpZmc9Tk9ORSBndWliZz1HcmVlbgpkaWZmIC0tZ2l0IGEvcnVudGltZS9kb2Mvb3B0aW9ucy50eHQgYi9ydW50aW1lL2RvYy9vcHRpb25zLnR4dAppbmRleCBmMTc2NTY2Li5iMDRiYjU1IDEwMDY0NAotLS0gYS9ydW50aW1lL2RvYy9vcHRpb25zLnR4dAorKysgYi9ydW50aW1lL2RvYy9vcHRpb25zLnR4dApAQCAtMSw0ICsxLDQgQEAKLSpvcHRpb25zLnR4dCoJRm9yIFZpbSB2ZXJzaW9uIDcuMGMuICBMYXN0IGNoYW5nZTogMjAwNiBNYXIgMjkKKypvcHRpb25zLnR4dCoJRm9yIFZpbSB2ZXJzaW9uIDcuMGMuICBMYXN0IGNoYW5nZTogMjAwNiBBcHIgMDUKIAogCiAJCSAgVklNIFJFRkVSRU5DRSBNQU5VQUwJICBieSBCcmFtIE1vb2xlbmFhcgpAQCAtNjg0LDggKzY4NCw3IEBACiAJb3Igc2VsZWN0ZWQuCiAJVGhpcyBvcHRpb24gaXMgcHJvdmlkZWQgZm9yIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkgd2l0aCB0aGUgVmltCiAJcmVsZWFzZWQgd2l0aCBTdW4gT05FIFN0dWRpbyA0IEVudGVycHJpc2UgRWRpdGlvbi4KLQlOb3RlOiBXaGVuIHRoaXMgb3B0aW9uIGlzIG9uIHNvbWUgcGx1Z2lucyBtYXkgbm90IHdvcmsuICBUaGUgZGlyZWN0b3J5Ci0JYnJvd3NlciBzZXRzIGlmIG9mZi4KKwlOb3RlOiBXaGVuIHRoaXMgb3B0aW9uIGlzIG9uIHNvbWUgcGx1Z2lucyBtYXkgbm90IHdvcmsuCiAKIAkJCQkqJ2FyYWJpYycqIConYXJhYicqIConbm9hcmFiaWMnKiAqJ25vYXJhYicqCiAnYXJhYmljJyAnYXJhYicJCWJvb2xlYW4gKGRlZmF1bHQgb2ZmKQpAQCAtMTQ4OCw4ICsxNDg3LDggQEAKIAl8Zm9sZC1tYXJrZXJ8LgogCiAJCQkqJ2NvbXBhdGlibGUnKiAqJ2NwJyogKidub2NvbXBhdGlibGUnKiAqJ25vY3AnKgotJ2NvbXBhdGlibGUnICdjcCcJYm9vbGVhbgkoZGVmYXVsdCBvbiwgb2ZmIHdoZW4gYSAudmltcmMgb3IgLmd2aW1yYyBmaWxlCi0JCQkJCQkJCWlzIGZvdW5kKQorJ2NvbXBhdGlibGUnICdjcCcJYm9vbGVhbgkoZGVmYXVsdCBvbiwgb2ZmIHdoZW4gYSB8dmltcmN8IG9yIHxndmltcmN8CisJCQkJCQkJCWZpbGUgaXMgZm91bmQpCiAJCQlnbG9iYWwKIAkJCXtub3QgaW4gVml9CiAJVGhpcyBvcHRpb24gaGFzIHRoZSBlZmZlY3Qgb2YgbWFraW5nIFZpbSBlaXRoZXIgbW9yZSBWaS1jb21wYXRpYmxlLCBvcgpAQCAtMTUwNCwxMCArMTUwMywxMCBAQAogCW9wdGlvbnMuICBUaGlzIGRlZmF1bHQgd2FzIGNob3NlbiBmb3IgdGhvc2UgcGVvcGxlIHdobyB3YW50IHRvIHVzZSBWaW0KIAlqdXN0IGxpa2UgVmksIGFuZCBkb24ndCBldmVuICh3YW50IHRvKSBrbm93IGFib3V0IHRoZSAnY29tcGF0aWJsZScKIAlvcHRpb24uCi0JV2hlbiBhICIudmltcmMiIG9yICIuZ3ZpbXJjIiBmaWxlIGlzIGZvdW5kIHdoaWxlIFZpbSBpcyBzdGFydGluZyB1cCwKKwlXaGVuIGEgfHZpbXJjfCBvciB8Z3ZpbXJjfCBmaWxlIGlzIGZvdW5kIHdoaWxlIFZpbSBpcyBzdGFydGluZyB1cCwKIAl0aGlzIG9wdGlvbiBpcyBzd2l0Y2hlZCBvZmYsIGFuZCBhbGwgb3B0aW9ucyB0aGF0IGhhdmUgbm90IGJlZW4KIAltb2RpZmllZCB3aWxsIGJlIHNldCB0byB0aGUgVmltIGRlZmF1bHRzLiAgRWZmZWN0aXZlbHksIHRoaXMgbWVhbnMKLQl0aGF0IHdoZW4gYSAiLnZpbXJjIiBvciAiLmd2aW1yYyIgZmlsZSBleGlzdHMsIFZpbSB3aWxsIHVzZSB0aGUgVmltCisJdGhhdCB3aGVuIGEgfHZpbXJjfCBvciB8Z3ZpbXJjfCBmaWxlIGV4aXN0cywgVmltIHdpbGwgdXNlIHRoZSBWaW0KIAlkZWZhdWx0cywgb3RoZXJ3aXNlIGl0IHdpbGwgdXNlIHRoZSBWaSBkZWZhdWx0cy4gIChOb3RlOiBUaGlzIGRvZXNuJ3QKIAloYXBwZW4gZm9yIHRoZSBzeXN0ZW0td2lkZSB2aW1yYyBvciBndmltcmMgZmlsZSkuICBBbHNvIHNlZQogCXxjb21wYXRpYmxlLWRlZmF1bHR8IGFuZCB8cG9zaXgtY29tcGxpYW5jZXwuCkBAIC0yNzE5LDYgKzI3MTgsOCBAQAogPAlUaGlzIGlzIHNpbWlsYXIgdG8gdGhlIGRlZmF1bHQsIGV4Y2VwdCB0aGF0IHRoZXNlIGNoYXJhY3RlcnMgd2lsbCBhbHNvCiAJYmUgdXNlZCB3aGVuIHRoZXJlIGlzIGhpZ2hsaWdodGluZy4KIAorCWZvciAic3RsIiBhbmQgInN0bG5jIiBvbmx5IHNpbmdsZS1ieXRlIHZhbHVlcyBhcmUgc3VwcG9ydGVkLgorCiAJVGhlIGhpZ2hsaWdodGluZyB1c2VkIGZvciB0aGVzZSBpdGVtczoKIAkgIGl0ZW0JCWhpZ2hsaWdodCBncm91cCB+CiAJICBzdGw6YwkJU3RhdHVzTGluZQkJfGhsLVN0YXR1c0xpbmV8CkBAIC0yODk0LDYgKzI4OTUsNyBAQAogCQlxdWlja2ZpeAkiOmNuIiwgIjpjcmV3IiwgIjptYWtlIiwgZXRjLgogCQlzZWFyY2gJCXNlYXJjaCBmb3IgYSBwYXR0ZXJuOiAiLyIsICJuIiwgIioiLCAiZ2QiLCBldGMuCiAJCQkJKG5vdCBmb3IgYSBzZWFyY2ggcGF0dGVybiBpbiBhICI6IiBjb21tYW5kKQorCQkJCUFsc28gZm9yIHxbc3wgYW5kIHxdc3wuCiAJCXRhZwkJanVtcGluZyB0byBhIHRhZzogIjp0YSIsIENUUkwtVCwgZXRjLgogCQl1bmRvCQl1bmRvIG9yIHJlZG86ICJ1IiBhbmQgQ1RSTC1SCiAJV2hlbiB0aGUgY29tbWFuZCBpcyBwYXJ0IG9mIGEgbWFwcGluZyB0aGlzIG9wdGlvbiBpcyBub3QgdXNlZC4gIEFkZApAQCAtMzMzMiw3ICszMzM0LDcgQEAKIAkJY2FuIHVzZSAiZ3ZpbSAtZiIgb3IgIjpndWkgLWYiIHRvIHN0YXJ0IHRoZSBHVUkgaW4gdGhlCiAJCWZvcmVncm91bmQuICB8Z3VpLWZvcmt8CiAJCU5vdGU6IFNldCB0aGlzIG9wdGlvbiBpbiB0aGUgdmltcmMgZmlsZS4gIFRoZSBmb3JraW5nIG1heSBoYXZlCi0JCWhhcHBlbmVkIGFscmVhZHkgd2hlbiB0aGUgZ3ZpbXJjIGZpbGUgaXMgcmVhZC4KKwkJaGFwcGVuZWQgYWxyZWFkeSB3aGVuIHRoZSB8Z3ZpbXJjfCBmaWxlIGlzIHJlYWQuCiAKIAkgICdpJwlVc2UgYSBWaW0gaWNvbi4gIEZvciBHVEsgd2l0aCBLREUgaXQgaXMgdXNlZCBpbiB0aGUgbGVmdC11cHBlcgogCQljb3JuZXIgb2YgdGhlIHdpbmRvdy4gIEl0J3MgYmxhY2smd2hpdGUgb24gbm9uLUdUSywgYmVjYXVzZSBvZgpAQCAtMzM0MSw3ICszMzQzLDcgQEAKIAkgICdtJwlNZW51IGJhciBpcyBwcmVzZW50LgogCSAgJ00nCVRoZSBzeXN0ZW0gbWVudSAiJFZJTVJVTlRJTUUvbWVudS52aW0iIGlzIG5vdCBzb3VyY2VkLiAgTm90ZQogCQl0aGF0IHRoaXMgZmxhZyBtdXN0IGJlIGFkZGVkIGluIHRoZSAudmltcmMgZmlsZSwgYmVmb3JlCi0JCXN3aXRjaGluZyBvbiBzeW50YXggb3IgZmlsZXR5cGUgcmVjb2duaXRpb24gKHdoZW4gdGhlIC5ndmltcmMKKwkJc3dpdGNoaW5nIG9uIHN5bnRheCBvciBmaWxldHlwZSByZWNvZ25pdGlvbiAod2hlbiB0aGUgfGd2aW1yY3wKIAkJZmlsZSBpcyBzb3VyY2VkIHRoZSBzeXN0ZW0gbWVudSBoYXMgYWxyZWFkeSBiZWVuIGxvYWRlZDsgdGhlCiAJCSI6c3ludGF4IG9uIiBhbmQgIjpmaWxldHlwZSBvbiIgY29tbWFuZHMgbG9hZCB0aGUgbWVudSB0b28pLgogCSAgJ2cnCUdyZXkgbWVudSBpdGVtczogTWFrZSBtZW51IGl0ZW1zIHRoYXQgYXJlIG5vdCBhY3RpdmUgZ3JleS4gIElmCkBAIC0zMzc0LDcgKzMzNzYsNyBAQAogCSAgJ3AnCVVzZSBQb2ludGVyIGNhbGxiYWNrcyBmb3IgWDExIEdVSS4gIFRoaXMgaXMgcmVxdWlyZWQgZm9yIHNvbWUKIAkJd2luZG93IG1hbmFnZXJzLiAgSWYgdGhlIGN1cnNvciBpcyBub3QgYmxpbmtpbmcgb3IgaG9sbG93IGF0CiAJCXRoZSByaWdodCBtb21lbnQsIHRyeSBhZGRpbmcgdGhpcyBmbGFnLiAgVGhpcyBtdXN0IGJlIGRvbmUKLQkJYmVmb3JlIHN0YXJ0aW5nIHRoZSBHVUkuICBTZXQgaXQgaW4geW91ciBndmltcmMuICBBZGRpbmcgb3IKKwkJYmVmb3JlIHN0YXJ0aW5nIHRoZSBHVUkuICBTZXQgaXQgaW4geW91ciB8Z3ZpbXJjfC4gIEFkZGluZyBvcgogCQlyZW1vdmluZyBpdCBhZnRlciB0aGUgR1VJIGhhcyBzdGFydGVkIGhhcyBubyBlZmZlY3QuCiAJICAnRicJQWRkIGEgZm9vdGVyLiAgT25seSBmb3IgTW90aWYuICBTZWUgfGd1aS1mb290ZXJ8LgogCkBAIC0zNDY5LDcgKzM0NzEsNyBAQAogCQkJCSAgICAgIjg6U3BlY2lhbEtleSxAOk5vblRleHQsZDpEaXJlY3RvcnksCiAJCQkJICAgICBlOkVycm9yTXNnLGk6SW5jU2VhcmNoLGw6U2VhcmNoLG06TW9yZU1zZywKIAkJCQkgICAgIE06TW9kZU1zZyxuOkxpbmVOcixyOlF1ZXN0aW9uLAotCQkJCSAgICAgczpTdGF0dXNMaW5lLFM6U3RhdHVzTGluZU5DLGM6VmVydFNwbGl0CisJCQkJICAgICBzOlN0YXR1c0xpbmUsUzpTdGF0dXNMaW5lTkMsYzpWZXJ0U3BsaXQsCiAJCQkJICAgICB0OlRpdGxlLHY6VmlzdWFsLHc6V2FybmluZ01zZyxXOldpbGRNZW51LAogCQkJCSAgICAgZjpGb2xkZWQsRjpGb2xkQ29sdW1uLEE6RGlmZkFkZCwKIAkJCQkgICAgIEM6RGlmZkNoYW5nZSxEOkRpZmZEZWxldGUsVDpEaWZmVGV4dCwKQEAgLTM1NjAsNyArMzU2Miw3IEBACiAJaGlnaGxpZ2h0IGFsbCBvZiB0aGUgbWF0Y2hlZCB0ZXh0LiAgSG93ZXZlciwgdGhpcyBkZXBlbmRzIG9uIHdoZXJlIHRoZQogCXNlYXJjaCBzdGFydHMuICBUaGlzIHdpbGwgYmUgdGhlIGZpcnN0IGxpbmUgaW4gdGhlIHdpbmRvdyBvciB0aGUgZmlyc3QKIAlsaW5lIGJlbG93IGEgY2xvc2VkIGZvbGQuICBBIG1hdGNoIGluIGEgcHJldmlvdXMgbGluZSB3aGljaCBpcyBub3QKLQlkcmF3biBtYXkgbm90IGNvbnRpbnVlIGluIGFuIG5ld2x5IGRyYXduIGxpbmUuCisJZHJhd24gbWF5IG5vdCBjb250aW51ZSBpbiBhIG5ld2x5IGRyYXduIGxpbmUuCiAJTk9URTogVGhpcyBvcHRpb24gaXMgcmVzZXQgd2hlbiAnY29tcGF0aWJsZScgaXMgc2V0LgogCiAJCQkJCQkqJ2hpc3RvcnknKiAqJ2hpJyoKQEAgLTQyNjUsNyArNDI2Nyw3IEBACiAKIAlUaGUgY2hhcmFjdGVycyAnOicgYW5kICcsJyBzaG91bGQgbm90IGJlIHVzZWQuICBVVEYtOCBjaGFyYWN0ZXJzIGNhbgogCWJlIHVzZWQgd2hlbiAnZW5jb2RpbmcnIGlzICJ1dGYtOCIsIG90aGVyd2lzZSBvbmx5IHByaW50YWJsZQotCWNoYXJhY3RlcnMgYXJlIGFsbG93ZWQuCisJY2hhcmFjdGVycyBhcmUgYWxsb3dlZC4gIEFsbCBjaGFyYWN0ZXJzIG11c3QgYmUgc2luZ2xlIHdpZHRoLgogCiAJRXhhbXBsZXM6ID4KIAkgICAgOnNldCBsY3M9dGFiOj4tLHRyYWlsOi0KQEAgLTUzNjksNiArNTM3MSw4IEBACiAJCQkgICBnb2luZyBiYWNrIHRvIHRoZSBvdGhlciB3aW5kb3csIGl0IHN0aWxsIHVzZXMgdGhlCiAJCQkgICBzYW1lIHJlbGF0aXZlIG9mZnNldC4KIAlBbHNvIHNlZSB8c2Nyb2xsLWJpbmRpbmd8LgorCVdoZW4gJ2RpZmYnIG1vZGUgaXMgYWN0aXZlIHRoZXJlIGFsd2F5cyBpcyB2ZXJ0aWNhbCBzY3JvbGwgYmluZGluZywKKwlldmVuIHdoZW4gInZlciIgaXNuJ3QgdGhlcmUuCiAKIAkJCQkJCSonc2VjdGlvbnMnKiAqJ3NlY3QnKgogJ3NlY3Rpb25zJyAnc2VjdCcJc3RyaW5nCShkZWZhdWx0ICJTSE5ISCBIVW5oc2giKQpAQCAtNTk2OSw4ICs1OTczLDkgQEAKIAl8emd8IGFuZCB8end8IGNvbW1hbmRzIGNhbiBiZSB1c2VkIHRvIGFjY2VzcyBlYWNoLiAgVGhpcyBhbGxvd3MgdXNpbmcKIAlhIHBlcnNvbmFsIHdvcmQgbGlzdCBmaWxlIGFuZCBhIHByb2plY3Qgd29yZCBsaXN0IGZpbGUuCiAJV2hlbiBhIHdvcmQgaXMgYWRkZWQgd2hpbGUgdGhpcyBvcHRpb24gaXMgZW1wdHkgVmltIHdpbGwgc2V0IGl0IGZvcgotCXlvdTogVXNpbmcgdGhlIGZpcnN0ICJzcGVsbCIgZGlyZWN0b3J5IGluICdydW50aW1lcGF0aCcgdGhhdCBpcwotCXdyaXRhYmxlIGFuZCB0aGUgZmlyc3QgbGFuZ3VhZ2UgbmFtZSB0aGF0IGFwcGVhcnMgaW4gJ3NwZWxsbGFuZycsCisJeW91OiBVc2luZyB0aGUgZmlyc3QgZGlyZWN0b3J5IGluICdydW50aW1lcGF0aCcgdGhhdCBpcyB3cml0YWJsZS4gIElmCisJdGhlcmUgaXMgbm8gInNwZWxsIiBkaXJlY3RvcnkgeWV0IGl0IHdpbGwgYmUgY3JlYXRlZC4gIEZvciB0aGUgZmlsZQorCW5hbWUgdGhlIGZpcnN0IGxhbmd1YWdlIG5hbWUgdGhhdCBhcHBlYXJzIGluICdzcGVsbGxhbmcnIGlzIHVzZWQsCiAJaWdub3JpbmcgdGhlIHJlZ2lvbi4KIAlUaGUgcmVzdWx0aW5nICIuc3BsIiBmaWxlIHdpbGwgYmUgdXNlZCBmb3Igc3BlbGwgY2hlY2tpbmcsIGl0IGRvZXMgbm90CiAJaGF2ZSB0byBhcHBlYXIgaW4gJ3NwZWxsbGFuZycuCmRpZmYgLS1naXQgYS9ydW50aW1lL2RvYy9vc19kb3MudHh0IGIvcnVudGltZS9kb2Mvb3NfZG9zLnR4dAppbmRleCAwMmNiMDMyLi43ZTc3MTFjIDEwMDY0NAotLS0gYS9ydW50aW1lL2RvYy9vc19kb3MudHh0CisrKyBiL3J1bnRpbWUvZG9jL29zX2Rvcy50eHQKQEAgLTEsNCArMSw0IEBACi0qb3NfZG9zLnR4dCogICAgRm9yIFZpbSB2ZXJzaW9uIDcuMGMuICBMYXN0IGNoYW5nZTogMjAwNiBGZWIgMTQKKypvc19kb3MudHh0KiAgICBGb3IgVmltIHZlcnNpb24gNy4wYy4gIExhc3QgY2hhbmdlOiAyMDA2IE1hciAzMAogCiAKIAkJICBWSU0gUkVGRVJFTkNFIE1BTlVBTCAgICBieSBCcmFtIE1vb2xlbmFhcgpAQCAtNzcsMTAgKzc3LDExIEBACiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIDMuIFN0YW5kYXJkIG1hcHBpbmdzCQkJCSpkb3Mtc3RhbmRhcmQtbWFwcGluZ3MqCiAKLUNUUkwtUGFnZVVwCWN1cnNvciB0byBmaXJzdCBzY3JlZW4gbGluZQkJCSo8Qy1QYWdlVXA+KgotQ1RSTC1QYWdlRG93bgljdXJzb3IgdG8gbGFzdCBzY3JlZW4gbGluZSwgbGFzdCBjaGFyYWN0ZXIJKjxDLVBhZ2VEb3duPioKK1RoZSBtYXBwaW5ncyBmb3IgQ1RSTC1QYWdlVXAgYW5kIENUUkwtUGFnZURvd24gaGF2ZSBiZWVuIHJlbW92ZWQsIHRoZXkgbm93CitqdW1wIHRvIHRoZSBuZXh0IG9yIHByZXZpb3VzIHRhYiBwYWdlIHw8Qy1QYWdlVXA+fCB8PEMtUGFnZURvd24+fAogCi1UaGVzZSBtYXBwaW5ncyBhY2NvbXBsaXNoIHRoaXM6CitJZiB5b3Ugd2FudCB0aGVtIHRvIG1vdmUgdG8gdGhlIGZpcnN0IGFuZCBsYXN0IHNjcmVlbiBsaW5lIHlvdSBjYW4gdXNlIHRoZXNlCittYXBwaW5nczoKIAoga2V5CQlrZXkgY29kZSAgICAgTm9ybWFsL1Zpc3VhbCBtb2RlCSAgICBJbnNlcnQgbW9kZSB+CiBDVFJMLVBhZ2VVcAk8TS1OPjxNLUMtRD4JICAgIEgJCSAgICA8Qy1PPkgKZGlmZiAtLWdpdCBhL3J1bnRpbWUvZG9jL29zX3dpbjMyLnR4dCBiL3J1bnRpbWUvZG9jL29zX3dpbjMyLnR4dAppbmRleCBjODk0ZjBhLi4wODYxMTI3IDEwMDY0NAotLS0gYS9ydW50aW1lL2RvYy9vc193aW4zMi50eHQKKysrIGIvcnVudGltZS9kb2Mvb3Nfd2luMzIudHh0CkBAIC0xLDQgKzEsNCBAQAotKm9zX3dpbjMyLnR4dCogIEZvciBWaW0gdmVyc2lvbiA3LjBjLiAgTGFzdCBjaGFuZ2U6IDIwMDUgTWFyIDI5Cisqb3Nfd2luMzIudHh0KiAgRm9yIFZpbSB2ZXJzaW9uIDcuMGMuICBMYXN0IGNoYW5nZTogMjAwNiBBcHIgMDIKIAogCiAJCSAgVklNIFJFRkVSRU5DRSBNQU5VQUwgICAgYnkgR2VvcmdlIFJlaWxseQpAQCAtODcsNiArODcsMTIgQEAKIHByb2JhYmx5IGdldCB2ZXJ5IHN0cmFuZ2UgYmVoYXZpb3IgZnJvbSBWaW0uICBUaGVyZWZvcmUgVmltIGRvZXMgbm90IG9idGFpbgogdGhlIGRlZmF1bHQgdmFsdWUgb2YgJ3Rlcm0nIGZyb20gdGhlIGVudmlyb25tZW50IHZhcmlhYmxlICJURVJNIi4KIAorJFBBVEgJCQkJCQkJKndpbjMyLVBBVEgqCisKK1RoZSBkaXJlY3Rvcnkgb2YgdGhlIFZpbSBleGVjdXRhYmxlIGlzIGFwcGVuZGVkIHRvICRQQVRILiAgVGhpcyBpcyBtb3N0bHkgdG8KK21ha2UgIiF4eGQnIHdvcmssIGFzIGl0IGlzIGluIHRoZSBUb29scyBtZW51LiAgQW5kIGl0IGFsc28gbWVhbnMgdGhhdCB3aGVuCitleGVjdXRhYmxlKCkgcmV0dXJucyAxIHRoZSBleGVjdXRhYmxlIGNhbiBhY3R1YWxseSBiZSBleGVjdXRlZC4KKwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAzLiBSZXN0b3JlIHNjcmVlbiBjb250ZW50cwkJCQkqd2luMzItcmVzdG9yZSoKIApkaWZmIC0tZ2l0IGEvcnVudGltZS9kb2MvcGF0dGVybi50eHQgYi9ydW50aW1lL2RvYy9wYXR0ZXJuLnR4dAppbmRleCBmNDE1NTc0Li4zYmQ4YzQwIDEwMDY0NAotLS0gYS9ydW50aW1lL2RvYy9wYXR0ZXJuLnR4dAorKysgYi9ydW50aW1lL2RvYy9wYXR0ZXJuLnR4dApAQCAtMSw0ICsxLDQgQEAKLSpwYXR0ZXJuLnR4dCogICBGb3IgVmltIHZlcnNpb24gNy4wYy4gIExhc3QgY2hhbmdlOiAyMDA2IE1hciAyNQorKnBhdHRlcm4udHh0KiAgIEZvciBWaW0gdmVyc2lvbiA3LjBjLiAgTGFzdCBjaGFuZ2U6IDIwMDYgQXByIDAyCiAKIAogCQkgIFZJTSBSRUZFUkVOQ0UgTUFOVUFMICAgIGJ5IEJyYW0gTW9vbGVuYWFyCkBAIC0xMjIwLDYgKzEyMjAsOSBAQAogCQknaWdub3JlY2FzZScgZG9lcyBub3QgYXBwbHksIHVzZSB8L1xjfCBpbiB0aGUgcGF0dGVybiB0bwogCQlpZ25vcmUgY2FzZS4gIE90aGVyd2lzZSBjYXNlIGlzIG5vdCBpZ25vcmVkLgogCisJCUFsc28gc2VlIHxtYXRjaGFyZygpfCwgaXQgcmV0dXJucyB0aGUgaGlnaGxpZ2h0IGdyb3VwIGFuZAorCQlwYXR0ZXJuIG9mIGEgcHJldmlvdXMgOm1hdGNoIGNvbW1hbmQuCisKIAkJQW5vdGhlciBleGFtcGxlLCB3aGljaCBoaWdobGlnaHRzIGFsbCBjaGFyYWN0ZXJzIGluIHZpcnR1YWwKIAkJY29sdW1uIDcyIGFuZCBtb3JlOiA+CiAJCQk6aGlnaGxpZ2h0IHJpZ2h0TWFyZ2luIHRlcm09Ym9sZCBjdGVybWZnPWJsdWUgZ3VpZmc9Ymx1ZQpAQCAtMTIzNSwxMCArMTIzOCwxMCBAQAogCQlDbGVhciBhIHByZXZpb3VzbHkgZGVmaW5lZCBtYXRjaCBwYXR0ZXJuLgogCiAKLToybWF0W2NoXSB7Z3JvdXB9IC97cGF0dGVybn0vCis6Mm1hdFtjaF0ge2dyb3VwfSAve3BhdHRlcm59LwkJCQkJKjoybWF0Y2gqCiA6Mm1hdFtjaF0KIDoybWF0W2NoXSBub25lCi06M21hdFtjaF0ge2dyb3VwfSAve3BhdHRlcm59LworOjNtYXRbY2hdIHtncm91cH0gL3twYXR0ZXJufS8JCQkJCSo6M21hdGNoKgogOjNtYXRbY2hdCiA6M21hdFtjaF0gbm9uZQogCQlKdXN0IGxpa2UgfDptYXRjaHwgYWJvdmUsIGJ1dCBzZXQgYSBzZXBhcmF0ZSBtYXRjaC4gIFRodXMKZGlmZiAtLWdpdCBhL3J1bnRpbWUvZG9jL3BpX3BhcmVuLnR4dCBiL3J1bnRpbWUvZG9jL3BpX3BhcmVuLnR4dAppbmRleCBiM2ZjYjdkLi5hMzRmMzU0IDEwMDY0NAotLS0gYS9ydW50aW1lL2RvYy9waV9wYXJlbi50eHQKKysrIGIvcnVudGltZS9kb2MvcGlfcGFyZW4udHh0CkBAIC0xLDQgKzEsNCBAQAotKnBpX3BhcmVuLnR4dCogIEZvciBWaW0gdmVyc2lvbiA3LjBjLiAgTGFzdCBjaGFuZ2U6IDIwMDYgTWFyIDI5CisqcGlfcGFyZW4udHh0KiAgRm9yIFZpbSB2ZXJzaW9uIDcuMGMuICBMYXN0IGNoYW5nZTogMjAwNiBBcHIgMDMKIAogCiAJCSAgVklNIFJFRkVSRU5DRSBNQU5VQUwgICAgYnkgQnJhbSBNb29sZW5hYXIKQEAgLTM4LDkgKzM4LDEzIEBACiBzeW50YXggaXRlbXMgYXJlIGlnbm9yZWQuICBBbnkgc3ludGF4IGl0ZW1zIHdpdGggInN0cmluZyIgb3IgImNvbW1lbnQiCiBzb21ld2hlcmUgaW4gdGhlaXIgbmFtZSBhcmUgY29uc2lkZXJlZCBzdHJpbmcgb3IgY29tbWVudCBpdGVtcy4KIAotVGhlIHNlYXJjaCBpcyBsaW1pdGVkIHRvIHdoYXQgaXMgdmlzaWJsZSBpbiB0aGUgd2luZG93LiAgVGhlIHBsdWdpbiBkb2Vzbid0Ci1zZWFyY2ggZnVydGhlciB0aGFuIDEwMCBsaW5lcyB0byBhdm9pZCBhIGxvbmcgZGVsYXkgd2hlbiB0aGVyZSBhcmUgY2xvc2VkCi1mb2xkcy4KK1RoZSBzZWFyY2ggaXMgbGltaXRlZCB0byBhdm9pZCBhIGRlbGF5IHdoZW4gbW92aW5nIHRoZSBjdXJzb3IuICBUaGUgbGltaXRzCithcmU6CistIFdoYXQgaXMgdmlzaWJsZSBpbiB0aGUgd2luZG93LgorLSAxMDAgbGluZXMgYWJvdmUgb3IgYmVsb3cgdGhlIGN1cnNvciB0byBhdm9pZCBhIGxvbmcgZGVsYXkgd2hlbiB0aGVyZSBhcmUKKyAgY2xvc2VkIGZvbGRzLgorLSAnc3lubWF4Y29sdW1uJyB0aW1lcyAyIGJ5dGVzIGJlZm9yZSBvciBhZnRlciB0aGUgY3Vyc29yIHRvIGF2b2lkIGEgZGVsYXkKKyAgaW4gYSBsb25nIGxpbmUgd2l0aCBzeW50YXggaGlnaGxpZ2h0aW5nLgogCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICB2aW06dHc9Nzg6dHM9ODpmdD1oZWxwOm5vcmw6CmRpZmYgLS1naXQgYS9ydW50aW1lL2RvYy9waV90YXIudHh0IGIvcnVudGltZS9kb2MvcGlfdGFyLnR4dAppbmRleCBhOTg2ZWU5Li43N2ViMTllIDEwMDY0NAotLS0gYS9ydW50aW1lL2RvYy9waV90YXIudHh0CisrKyBiL3J1bnRpbWUvZG9jL3BpX3Rhci50eHQKQEAgLTEsNiArMSw4IEBACiAqdGFyLnR4dCoJRm9yIFZpbSB2ZXJzaW9uIDcuMGMuICBMYXN0IGNoYW5nZTogMjAwNiBNYXIgMjQKIAotCVRhciBGaWxlIEludGVyZmFjZQorICAgICAgIAkgICAgICAgCSAgICAgICArPT09PT09PT09PT09PT09PT09PT0rCisgICAgICAgCSAgICAgICAJICAgICAgIHwgVGFyIEZpbGUgSW50ZXJmYWNlIHwKKyAgICAgICAJICAgICAgIAkgICAgICAgKz09PT09PT09PT09PT09PT09PT09KwogCiBBdXRob3I6ICBDaGFybGVzIEUuIENhbXBiZWxsLCBKci4gIDxOZHJPY2hpcEBTY2FtcGJlbGxQZmFtaWx5LkFiaXpNPgogCSAgKHJlbW92ZSBOT1NQQU0gZnJvbSBDYW1wYmVsbCdzIGVtYWlsIGZpcnN0KQpAQCAtMTIsNyArMTQsOCBAQAogMS4gQ29udGVudHMJCQkJCSp0YXIqICp0YXItY29udGVudHMqCiAgICAxLiBDb250ZW50cy4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4ufHRhci1jb250ZW50c3wKICAgIDIuIFVzYWdlLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi58dGFyLXVzYWdlfAotICAgMy4gSGlzdG9yeS4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLnx0YXItaGlzdG9yeXwKKyAgIDMuIE9wdGlvbnMuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi58dGFyLW9wdGlvbnN8CisgICA0LiBIaXN0b3J5Li4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4ufHRhci1oaXN0b3J5fAogCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIDIuIFVzYWdlCQkJCQkqdGFyLXVzYWdlKiAqdGFyLW1hbnVhbCoKQEAgLTI0LDcgKzI3LDI1IEBACiAgICB0YXIgYXJjaGl2ZXMgdmlhIHRoZSBwbHVnaW4uCiAKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotMy4gSGlzdG9yeQkJCQkJCSp0YXItaGlzdG9yeSoKKzMuIE9wdGlvbnMJCQkJCQkqdGFyLW9wdGlvbnMqCisKKyAgIFRoZXNlIG9wdGlvbnMgYXJlIHZhcmlhYmxlcyB0aGF0IG9uZSBtYXkgY2hhbmdlLCB0eXBpY2FsbHkgaW4gb25lJ3MKKyAgIDwudmltcmM+IGZpbGUuCisgICAgICAgICAgICAgICAgICAgICAgICAgRGVmYXVsdAorICAgVmFyaWFibGUgICAgICAgICAgICAgICBWYWx1ZSAgIEV4cGxhbmF0aW9uCisgICAqZzp0YXJfYnJvd3Nlb3B0aW9ucyogICJQdGYiICAgdXNlZCB0byBnZXQgYSBsaXN0IG9mIGNvbnRlbnRzCisgICAqZzp0YXJfcmVhZG9wdGlvbnMqICAgICJPUHhmIiAgdXNlZCB0byBleHRyYWN0IGEgZmlsZSBmcm9tIGEgdGFyYmFsbAorICAgKmc6dGFyX2NtZCogICAgICAgICAgICAidGFyIiAgIHRoZSBuYW1lIG9mIHRoZSB0YXIgcHJvZ3JhbQorICAgKmc6dGFyX3dyaXRlb3B0aW9ucyogICAidWYiICAgIHVzZWQgdG8gdXBkYXRlL3JlcGxhY2UgYSBmaWxlCisKKworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Cis0LiBIaXN0b3J5CQkJCQkJKnRhci1oaXN0b3J5KgorCisgICB2NyBNYXIgMjIsIDIwMDYgKiB3b3JrIG9uIG1ha2luZyB0YXIgcGx1Z2luIHdvcmsgYWNyb3NzIG5ldHdvcmsKKyAgICAgIE1hciAyNywgMjAwNiAqIGc6dGFyX2NtZCBub3cgYXZhaWxhYmxlIGZvciB1c2VycyB0byBjaGFuZ2UgdGhlIG5hbWUKKyAgICAgICAgICAgICAgICAgICAgIG9mIHRoZSB0YXIgcHJvZ3JhbSB0byBiZSB1c2VkLiAgQnkgZGVmYXVsdCwgb2YgY291cnNlLAorCQkgICAgIGl0cyAidGFyIi4KICAgIHY2IERlYyAyMSwgMjAwNSAqIHdyaXRpbmcgdG8gZmlsZXMgbm90IGluIGRpcmVjdG9yaWVzIGNhdXNlZCBwcm9ibGVtcyAtCiAgICAgICAgICAgICAgICAgICAgICBmaXhlZCAocG9pbnRlZCBvdXQgYnkgQ2hyaXN0aWFuIFJvYmluc29uKQogICAgdjUgTm92IDIyLCAyMDA1ICogcmVwb3J0IG9wdGlvbiB3b3JrYXJvdW5kIGluc3RhbGxlZApkaWZmIC0tZ2l0IGEvcnVudGltZS9kb2MvcGlfemlwLnR4dCBiL3J1bnRpbWUvZG9jL3BpX3ppcC50eHQKaW5kZXggOGU3MGJiZi4uZWViNWQ3NiAxMDA2NDQKLS0tIGEvcnVudGltZS9kb2MvcGlfemlwLnR4dAorKysgYi9ydW50aW1lL2RvYy9waV96aXAudHh0CkBAIC0xLDE4ICsxLDIwIEBACi0qemlwLnR4dCoJRm9yIFZpbSB2ZXJzaW9uIDcuMGMuICBMYXN0IGNoYW5nZTogMjAwNiBNYXIgMjQKKyp6aXAudHh0KglGb3IgVmltIHZlcnNpb24gNy4wYy4gIExhc3QgY2hhbmdlOiAyMDA2IEFwciAwMwogCi0JWmlwIEZpbGUgSW50ZXJmYWNlCisJCQkJKz09PT09PT09PT09PT09PT09PT09KworCQkJCXwgWmlwIEZpbGUgSW50ZXJmYWNlIHwKKwkJCQkrPT09PT09PT09PT09PT09PT09PT0rCiAKIEF1dGhvcjogIENoYXJsZXMgRS4gQ2FtcGJlbGwsIEpyLiAgPE5kck9jaGlwQFNjYW1wYmVsbFBmYW1pbHkuQWJpek0+CiAJICAocmVtb3ZlIE5PU1BBTSBmcm9tIENhbXBiZWxsJ3MgZW1haWwgZmlyc3QpCi1Db3B5cmlnaHQ6ICAgIENvcHlyaWdodCAoQykgMjAwNSBDaGFybGVzIEUuIENhbXBiZWxsLCBKci4ge3t7MSAqemlwLWNvcHlyaWdodCoKLSAgICAgICAgICAgICAgUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCB0byB1c2UgYW5kIGRpc3RyaWJ1dGUgdGhpcyBjb2RlLAotCSAgICAgIHdpdGggb3Igd2l0aG91dCBtb2RpZmljYXRpb25zLCBwcm92aWRlZCB0aGF0IHRoaXMgY29weXJpZ2h0Ci0JICAgICAgbm90aWNlIGlzIGNvcGllZCB3aXRoIGl0LiBMaWtlIGFueXRoaW5nIGVsc2UgdGhhdCdzIGZyZWUsCi0JICAgICAgemlwLnZpbSwgemlwUGx1Z2luLnZpbSwgYW5kIHBpX3ppcC50eHQgYXJlIHByb3ZpZGVkICphcyBpcyoKLQkgICAgICBhbmQgaXQgY29tZXMgd2l0aCBubyB3YXJyYW50eSBvZiBhbnkga2luZCwgZWl0aGVyIGV4cHJlc3NlZCBvcgotCSAgICAgIGltcGxpZWQuIEJ5IHVzaW5nIHRoaXMgcGx1Z2luLCB5b3UgYWdyZWUgdGhhdCBpbiBubyBldmVudCB3aWxsCi0JICAgICAgdGhlIGNvcHlyaWdodCBob2xkZXIgYmUgbGlhYmxlIGZvciBhbnkgZGFtYWdlcyByZXN1bHRpbmcgZnJvbQotCSAgICAgIHRoZSB1c2Ugb2YgdGhpcyBzb2Z0d2FyZS4KK0NvcHlyaWdodDogQ29weXJpZ2h0IChDKSAyMDA1LDIwMDYgQ2hhcmxlcyBFIENhbXBiZWxsLCBKciB7e3sxICp6aXAtY29weXJpZ2h0KgorICAgICAgICAgICBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkIHRvIHVzZSBhbmQgZGlzdHJpYnV0ZSB0aGlzIGNvZGUsCisJICAgd2l0aCBvciB3aXRob3V0IG1vZGlmaWNhdGlvbnMsIHByb3ZpZGVkIHRoYXQgdGhpcyBjb3B5cmlnaHQKKwkgICBub3RpY2UgaXMgY29waWVkIHdpdGggaXQuIExpa2UgYW55dGhpbmcgZWxzZSB0aGF0J3MgZnJlZSwKKwkgICB6aXAudmltLCB6aXBQbHVnaW4udmltLCBhbmQgcGlfemlwLnR4dCBhcmUgcHJvdmlkZWQgKmFzIGlzKgorCSAgIGFuZCBpdCBjb21lcyB3aXRoIG5vIHdhcnJhbnR5IG9mIGFueSBraW5kLCBlaXRoZXIgZXhwcmVzc2VkIG9yCisJICAgaW1wbGllZC4gQnkgdXNpbmcgdGhpcyBwbHVnaW4sIHlvdSBhZ3JlZSB0aGF0IGluIG5vIGV2ZW50IHdpbGwKKwkgICB0aGUgY29weXJpZ2h0IGhvbGRlciBiZSBsaWFibGUgZm9yIGFueSBkYW1hZ2VzIHJlc3VsdGluZyBmcm9tCisJICAgdGhlIHVzZSBvZiB0aGlzIHNvZnR3YXJlLgogCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIDEuIENvbnRlbnRzCQkJCQkqemlwKiAqemlwLWNvbnRlbnRzKgpkaWZmIC0tZ2l0IGEvcnVudGltZS9kb2Mvc3BlbGwudHh0IGIvcnVudGltZS9kb2Mvc3BlbGwudHh0CmluZGV4IGRiMDIxMGYuLmY3NmFiNTEgMTAwNjQ0Ci0tLSBhL3J1bnRpbWUvZG9jL3NwZWxsLnR4dAorKysgYi9ydW50aW1lL2RvYy9zcGVsbC50eHQKQEAgLTEsNCArMSw0IEBACi0qc3BlbGwudHh0KglGb3IgVmltIHZlcnNpb24gNy4wYy4gIExhc3QgY2hhbmdlOiAyMDA2IE1hciAyNworKnNwZWxsLnR4dCoJRm9yIFZpbSB2ZXJzaW9uIDcuMGMuICBMYXN0IGNoYW5nZTogMjAwNiBBcHIgMDMKIAogCiAJCSAgVklNIFJFRkVSRU5DRSBNQU5VQUwJICBieSBCcmFtIE1vb2xlbmFhcgpAQCAtNTAwLDcgKzUwMCw3IEBACiAJCTpta3NwZWxsIH4vLnZpbS9zcGVsbC9lbiAvdG1wL2VuX1VTIC90bXAvZW5fQ0EgL3RtcC9lbl9BVQogPAkJCVRoaXMgY29tYmluZXMgdGhlIEVuZ2xpc2ggd29yZCBsaXN0cyBmb3IgVVMsIENBIGFuZCBBVQogCQkJaW50byBvbmUgZW4uc3BsIGZpbGUuCi0JCQlVcCB0byBlaWdodCByZWdpb25zIGNhbiBiZSBjb21iaW5lZC4gKkU3NTQqICo3NTUqCisJCQlVcCB0byBlaWdodCByZWdpb25zIGNhbiBiZSBjb21iaW5lZC4gKkU3NTQqICpFNzU1KgogCQkJVGhlIFJFUCBhbmQgU0FMIGl0ZW1zIG9mIHRoZSBmaXJzdCAuYWZmIGZpbGUgd2hlcmUKIAkJCXRoZXkgYXBwZWFyIGFyZSB1c2VkLiB8c3BlbGwtUkVQfCB8c3BlbGwtU0FMfAogCkBAIC0xMDU4LDM2ICsxMDU4LDggQEAKIC0gTWFraW5nIHRoZSB3b3JkIHdpdGggdGhlIGFmZml4IHJhcmUsIGJ5IHVzaW5nIHRoZSB8c3BlbGwtUkFSRXwgZmxhZy4KIC0gRXhjbHVkZSB0aGUgd29yZCB3aXRoIHRoZSBhZmZpeCBmcm9tIGNvbXBvdW5kaW5nLCBieSB1c2luZyB0aGUKICAgfHNwZWxsLUNPTVBPVU5ERk9SQklERkxBR3wgZmxhZy4KLQotLT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS0KLU9MRCBTVFVGRjogVGhpcyBuZWVkcyB0byBiZSByZXdyaXR0ZW4gdG8gdXNlIGFmZml4IGZsYWdzLgotCQkJCQkJCSpzcGVsbC1hZmZpeC1yYXJlKgotQW4gZXh0cmEgaXRlbSBmb3IgVmltIGlzIHRoZSAicmFyZSIgZmxhZy4gIEl0IG11c3QgY29tZSBhZnRlciB0aGUgb3RoZXIKLWZpZWxkcywgYmVmb3JlIGEgY29tbWVudC4gIFdoZW4gdXNlZCB0aGVuIGFsbCB3b3JkcyB0aGF0IHVzZSB0aGUgYWZmaXggd2lsbCBiZQotbWFya2VkIGFzIHJhcmUgd29yZHMuICBFeGFtcGxlczoKLQotCVBGWCBGIDAgbmVuZSAgLiAgIHJhcmUgfgotCVNGWCBGIDAgb2luICAgbiAgIHJhcmUgICAjIGhhcmRseSBldmVyIHVzZWQgfgotCi1Ib3dldmVyLCBpZiB0aGUgd29yZCBhbHNvIGFwcGVhcnMgYXMgYSBnb29kIHdvcmQgaW4gYW5vdGhlciB3YXkgKGUuZy4sIGluCi1hbm90aGVyIHJlZ2lvbikgaXQgd29uJ3QgYmUgbWFya2VkIGFzIHJhcmUuCi0KLQkJCQkJCQkqc3BlbGwtYWZmaXgtbm9jb21wKgotQW5vdGhlciBleHRyYSBpdGVtIGZvciBWaW0gaXMgdGhlICJub2NvbXAiIGZsYWcuICBJdCBtdXN0IGNvbWUgYWZ0ZXIgdGhlIG90aGVyCi1maWVsZHMsIGJlZm9yZSBhIGNvbW1lbnQuICBJdCBjYW4gYmUgZWl0aGVyIGJlZm9yZSBvciBhZnRlciAicmFyZSIuICBXaGVuCi1wcmVzZW50IHRoZW4gYWxsIHdvcmRzIHRoYXQgdXNlIHRoZSBhZmZpeCB3aWxsIG5vdCBiZSBwYXJ0IG9mIGEgY29tcG91bmQgd29yZC4KLUV4YW1wbGU6Ci0JYWZmaXggZmlsZToKLQkJQ09NUE9VTkRGTEFHIGMgfgotCQlTRlggYSBZIDIgfgotCQlTRlggYSAwIHMgICAuIH4KLQkJU0ZYIGEgMCBpemUgLiBub2NvbXAgfgotCWRpY3Rpb25hcnk6Ci0JCXdvcmQvYyB+Ci0JCXV0aWwvYWMgfgotCi1UaGlzIGFsbG93cyBmb3IgIndvcmR1dGlsIiBhbmQgIndvcmR1dGlscyIgYnV0IG5vdCAid29yZHV0aWxpemUiLgotLT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS0KKy0gQWxsb3cgdGhlIHdvcmQgd2l0aCB0aGUgYWZmaXggdG8gYmUgcGFydCBvZiBhIGNvbXBvdW5kIHdvcmQgb24gdGhlIHNpZGUgb2YKKyAgdGhlIGFmZml4IHdpdGggdGhlIHxzcGVsbC1DT01QT1VORFBFUk1JVEZMQUd8LgogCiAJCQkJCQkgICAgKnNwZWxsLVBGWFBPU1RQT05FKgogV2hlbiBhbiBhZmZpeCBmaWxlIGhhcyB2ZXJ5IG1hbnkgcHJlZml4ZXMgdGhhdCBhcHBseSB0byBtYW55IHdvcmRzIGl0J3Mgbm90CkBAIC0xMTQ2LDYgKzExMTgsMTEgQEAKIGEgdHlwaW5nIG1pc3Rha2UgYW55d2F5LiAgV2hlbiB0aGUgc2FtZSB3b3JkIGlzIGZvdW5kIGFzIGdvb2QgaXQgd29uJ3QgYmUKIGhpZ2hsaWdodGVkIGFzIHJhcmUuCiAKK1RoaXMgZmxhZyBjYW4gYWxzbyBiZSB1c2VkIG9uIGFuIGFmZml4LCBzbyB0aGF0IGEgYmFzaWMgd29yZCBpcyBub3QgcmFyZSBidXQKK3RoZSBiYXNpYyB3b3JkIHBsdXMgYWZmaXggaXMgcmFyZSB8c3BlbGwtYWZmaXgtZmxhZ3N8LiAgSG93ZXZlciwgaWYgdGhlIHdvcmQKK2Fsc28gYXBwZWFycyBhcyBhIGdvb2Qgd29yZCBpbiBhbm90aGVyIHdheSAoZS5nLiwgaW4gYW5vdGhlciByZWdpb24pIGl0IHdvbid0CitiZSBtYXJrZWQgYXMgcmFyZS4KKwogCiBCQUQgV09SRFMJCQkJCQkqc3BlbGwtQkFEKgogCkBAIC0xMjQzLDYgKzEyMjAsMTIgQEAKIAogVGhpcyBhbGxvd3MgZm9yIHRoZSB3b3JkICJzdGFydC1lbmQiLCBidXQgbm90ICJzdGFydGVuZCIuCiAKK0FuIGFkZGl0aW9uYWwgaW1wbGllZCBydWxlIGlzIHRoYXQsIHdpdGhvdXQgZnVydGhlciBmbGFncywgYSB3b3JkIHdpdGggYQorcHJlZml4IGNhbm5vdCBiZSBjb21wb3VuZGVkIGFmdGVyIGFub3RoZXIgd29yZCwgYW5kIGEgd29yZCB3aXRoIGEgc3VmZml4CitjYW5ub3QgYmUgY29tcG91bmRlZCB3aXRoIGEgZm9sbG93aW5nIHdvcmQuICBUaHVzIHRoZSBhZmZpeCBjYW5ub3QgYXBwZWFyCitvbiB0aGUgaW5zaWRlIG9mIGEgY29tcG91bmQgd29yZC4gIFRoaXMgY2FuIGJlIGNoYW5nZWQgd2l0aCB0aGUKK3xzcGVsbC1DT01QT1VORFBFUk1JVEZMQUd8LgorCiAJCQkJCQkJKnNwZWxsLU5FRURDT01QT1VORCoKIFRoZSBORUVEQ09NUE9VTkQgZmxhZyBpcyB1c2VkIHRvIHJlcXVpcmUgdGhhdCBhIHdvcmQgaXMgdXNlZCBhcyBwYXJ0IG9mIGEKIGNvbXBvdW5kIHdvcmQuICBUaGUgd29yZCBpdHNlbGYgaXMgbm90IGEgZ29vZCB3b3JkLiAgRXhhbXBsZToKQEAgLTEyODIsMTMgKzEyNjUsMjQgQEAKIAogCQkJCQkJICAgICpzcGVsbC1DT01QT1VOREZPUkJJREZMQUcqCiBUaGUgQ09NUE9VTkRGT1JCSURGTEFHIHNwZWNpZmllcyBhIGZsYWcgdGhhdCBjYW4gYmUgdXNlZCBvbiBhbiBhZmZpeC4gIEl0Ci1tZWFucyB0aGF0IHRoZSB3b3JkIHBsdXMgYWZmaXggY2Fubm90IGJlIHVzZWQgaW4gYSBjb21wb3VuZCB3b3JkLgorbWVhbnMgdGhhdCB0aGUgd29yZCBwbHVzIGFmZml4IGNhbm5vdCBiZSB1c2VkIGluIGEgY29tcG91bmQgd29yZC4gIEV4YW1wbGU6CisJYWZmaXggZmlsZToKKwkJQ09NUE9VTkRGTEFHIGMgfgorCQlDT01QT1VOREZPUkJJREZMQUcgeCB+CisJCVNGWCBhIFkgMiB+CisJCVNGWCBhIDAgcyAgIC4gfgorCQlTRlggYSAwIGl6ZS94IC4gfgorCWRpY3Rpb25hcnk6CisJCXdvcmQvYyB+CisJCXV0aWwvYWMgfgorCitUaGlzIGFsbG93cyBmb3IgIndvcmR1dGlsIiBhbmQgIndvcmR1dGlscyIgYnV0IG5vdCAid29yZHV0aWxpemUiLgogCiAJCQkJCQkgICAgKnNwZWxsLUNPTVBPVU5EUEVSTUlURkxBRyoKIFRoZSBDT01QT1VORFBFUk1JVEZMQUcgc3BlY2lmaWVzIGEgZmxhZyB0aGF0IGNhbiBiZSB1c2VkIG9uIGFuIGFmZml4LiAgSXQKIG1lYW5zIHRoYXQgdGhlIHdvcmQgcGx1cyBhZmZpeCBjYW4gYWxzbyBiZSB1c2VkIGluIGEgY29tcG91bmQgd29yZCBpbiBhIHdheQotd2hlcmUgdGhlIGFmZml4IGVuZHMgdXAgaGFsZndheSB0aGUgd29yZC4KLU5PVCBJTVBMRU1FTlRFRCBZRVQuCit3aGVyZSB0aGUgYWZmaXggZW5kcyB1cCBoYWxmd2F5IHRoZSB3b3JkLiAgV2l0aG91dCB0aGlzIGZsYWcgdGhhdCBpcyBub3QKK2FsbG93ZWQuCiAKIAkJCQkJCSAgICAqc3BlbGwtQ09NUE9VTkRST09UKgogVGhlIENPTVBPVU5EUk9PVCBmbGFnIGlzIHVzZWQgZm9yIHdvcmRzIGluIHRoZSBkaWN0aW9uYXJ5IHRoYXQgYXJlIGFscmVhZHkgYQpAQCAtMTMwOSw5ICsxMzAzLDkgQEAKIAogT25seSBjYXNlLWZvbGRlZCBsZXR0ZXJzIG5lZWQgdG8gYmUgaW5jbHVkZWQuCiAKLUFib3ZlIGFub3RoZXIgd2F5IHRvIHJlc3RyaWN0IGNvbXBvdW5kaW5nIHdhcyBtZW50aW9uZWQgYWJvdmU6IGFkZGluZyAibm9jb21wIgotYWZ0ZXIgYW4gYWZmaXggY2F1c2VzIGFsbCB3b3JkcyB0aGF0IGFyZSBtYWRlIHdpdGggdGhhdCBhZmZpeCBub3QgYmUgYmUgdXNlZAotZm9yIGNvbXBvdW5kaW5nLiB8c3BlbGwtYWZmaXgtbm9jb21wfAorQWJvdmUgYW5vdGhlciB3YXkgdG8gcmVzdHJpY3QgY29tcG91bmRpbmcgd2FzIG1lbnRpb25lZCBhYm92ZTogQWRkaW5nIHRoZQorfHNwZWxsLUNPTVBPVU5ERk9SQklERkxBR3wgZmxhZyB0byBhbiBhZmZpeCBjYXVzZXMgYWxsIHdvcmRzIHRoYXQgYXJlIG1hZGUKK3dpdGggdGhhdCBhZmZpeCBub3QgYmUgYmUgdXNlZCBmb3IgY29tcG91bmRpbmcuCiAKIAogVU5MSU1JVEVEIENPTVBPVU5ESU5HCQkJCQkqc3BlbGwtTk9CUkVBSyoKZGlmZiAtLWdpdCBhL3J1bnRpbWUvZG9jL3NxbC50eHQgYi9ydW50aW1lL2RvYy9zcWwudHh0CmluZGV4IDVkMDdhNWMuLjI5YTBiY2UgMTAwNjQ0Ci0tLSBhL3J1bnRpbWUvZG9jL3NxbC50eHQKKysrIGIvcnVudGltZS9kb2Mvc3FsLnR4dApAQCAtMSw0ICsxLDQgQEAKLSpzcWwudHh0KiAgIAlGb3IgVmltIHZlcnNpb24gNy4wYy4gIExhc3QgY2hhbmdlOiBUdWUgTWFyIDI4IDIwMDYgOTozMzoxNCBQTQorKnNxbC50eHQqICAgCUZvciBWaW0gdmVyc2lvbiA3LjBjLiAgTGFzdCBjaGFuZ2U6IE1vbiBBcHIgMDMgMjAwNiAxMDozNDowMCBQTQogCiBieSBEYXZpZCBGaXNoYnVybgogCkBAIC0yNiw3ICsyNiw4IEBACiAgICAgICAgIDQuMy4zIENvbXBsZXRlIFByb2NlZHVyZXMJCXxzcWwtY29tcGxldGlvbi1wcm9jZWR1cmVzfAogICAgICAgICA0LjMuNCBDb21wbGV0ZSBWaWV3cwkJCXxzcWwtY29tcGxldGlvbi12aWV3c3wKICAgICA0LjQgQ29tcGxldGlvbiBDdXN0b21pemF0aW9uCQl8c3FsLWNvbXBsZXRpb24tY3VzdG9taXphdGlvbnwKLSAgICA0LjUgQ3VzdG9taXppbmcgTWFwcwkJCXxzcWwtY29tcGxldGlvbi1tYXBzfAorICAgIDQuNSBTUUwgTWFwcwkgICAgICAgIAkJfHNxbC1jb21wbGV0aW9uLW1hcHN8CisgICAgNC42IFVzaW5nIHdpdGggb3RoZXIgZmlsZXR5cGVzCQl8c3FsLWNvbXBsZXRpb24tZmlsZXR5cGVzfAogCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIDEuIE5hdmlnYXRpb24JICAgICAgICAJCQkqc3FsLW5hdmlnYXRpb24qCkBAIC0zMjEsNDEgKzMyMiw0OCBAQAogLS0tLS0tLS0tLS0tLS0tCiBUaGUgc3RhdGljIHBvcHVwcyBjcmVhdGVkIGNvbnRhaW4gaXRlbXMgZGVmaW5lZCBieSB0aGUgYWN0aXZlIHN5bnRheCBydWxlcwogd2hpbGUgZWRpdGluZyBhIGZpbGUgd2l0aCBhIGZpbGV0eXBlIG9mIFNRTC4gIFRoZSBwbHVnaW4gZGVmaW5lcyAoYnkgZGVmYXVsdCkKLXZhcmlvdXMgbWFwcyB0byBoZWxwIHRoZSB1c2VyIHJlZmluZSB3aGljaCBsaXN0IG9mIGl0ZW1zIHRoZXkgd2lzaCBkaXNwbGF5ZWQuCit2YXJpb3VzIG1hcHMgdG8gaGVscCB0aGUgdXNlciByZWZpbmUgdGhlIGxpc3Qgb2YgaXRlbXMgdG8gYmUgZGlzcGxheWVkLgogVGhlIGRlZmF1bHRzIHN0YXRpYyBtYXBzIGFyZTogPgotICAgICAgICBpbWFwIDxidWZmZXI+IDxDLUM+YSA8Qy1cPjxDLU8+OmxldCBiOnNxbF9jb21wbF90eXBlPSdzeW50YXgnPENSPjxDLVg+PEMtTz4KLSAgICAgICAgaW1hcCA8YnVmZmVyPiA8Qy1DPnMgPEMtXD48Qy1PPjpsZXQgYjpzcWxfY29tcGxfdHlwZT0nc3FsU3RhdGVtZW50JzxDUj48Qy1YPjxDLU8+Ci0gICAgICAgIGltYXAgPGJ1ZmZlcj4gPEMtQz5mIDxDLVw+PEMtTz46bGV0IGI6c3FsX2NvbXBsX3R5cGU9J3NxbEZ1bmN0aW9uJzxDUj48Qy1YPjxDLU8+Ci0gICAgICAgIGltYXAgPGJ1ZmZlcj4gPEMtQz5rIDxDLVw+PEMtTz46bGV0IGI6c3FsX2NvbXBsX3R5cGU9J3NxbEtleXdvcmQnPENSPjxDLVg+PEMtTz4KLSAgICAgICAgaW1hcCA8YnVmZmVyPiA8Qy1DPm8gPEMtXD48Qy1PPjpsZXQgYjpzcWxfY29tcGxfdHlwZT0nc3FsT3B0aW9uJzxDUj48Qy1YPjxDLU8+Ci0gICAgICAgIGltYXAgPGJ1ZmZlcj4gPEMtQz5UIDxDLVw+PEMtTz46bGV0IGI6c3FsX2NvbXBsX3R5cGU9J3NxbFR5cGUnPENSPjxDLVg+PEMtTz4KKyAgICBpbWFwIDxidWZmZXI+IDxDLUM+YSA8Qy1cPjxDLU8+OmNhbGwgc3FsY29tcGxldGUjTWFwKCdzeW50YXgnKTxDUj48Qy1YPjxDLU8+CisgICAgaW1hcCA8YnVmZmVyPiA8Qy1DPmsgPEMtXD48Qy1PPjpjYWxsIHNxbGNvbXBsZXRlI01hcCgnc3FsS2V5d29yZCcpPENSPjxDLVg+PEMtTz4KKyAgICBpbWFwIDxidWZmZXI+IDxDLUM+ZiA8Qy1cPjxDLU8+OmNhbGwgc3FsY29tcGxldGUjTWFwKCdzcWxGdW5jdGlvbicpPENSPjxDLVg+PEMtTz4KKyAgICBpbWFwIDxidWZmZXI+IDxDLUM+byA8Qy1cPjxDLU8+OmNhbGwgc3FsY29tcGxldGUjTWFwKCdzcWxPcHRpb24nKTxDUj48Qy1YPjxDLU8+CisgICAgaW1hcCA8YnVmZmVyPiA8Qy1DPlQgPEMtXD48Qy1PPjpjYWxsIHNxbGNvbXBsZXRlI01hcCgnc3FsVHlwZScpPENSPjxDLVg+PEMtTz4KKyAgICBpbWFwIDxidWZmZXI+IDxDLUM+cyA8Qy1cPjxDLU8+OmNhbGwgc3FsY29tcGxldGUjTWFwKCdzcWxTdGF0ZW1lbnQnKTxDUj48Qy1YPjxDLU8+CiA8IAogVGhlIHN0YXRpYyBtYXBzICh3aGljaCBhcmUgYmFzZWQgb24gdGhlIHN5bnRheCBoaWdobGlnaHQgZ3JvdXBzKSBmb2xsb3cgdGhpcwogZm9ybWF0OiA+Ci0gICAgaW1hcCA8YnVmZmVyPiA8Qy1DPmsgPEMtXD48Qy1PPjpsZXQgYjpzcWxfY29tcGxfdHlwZT0nc3FsS2V5d29yZCc8Q1I+PEMtWD48Qy1PPgorICAgIGltYXAgPGJ1ZmZlcj4gPEMtQz5rIDxDLVw+PEMtTz46Y2FsbCBzcWxjb21wbGV0ZSNNYXAoJ3NxbEtleXdvcmQnKTxDUj48Qy1YPjxDLU8+CiA8CiBUaGlzIGNvbW1hbmQgYnJlYWtzIGRvd24gYXM6ID4KICAgICBpbWFwICAgICAgICAgICAgICAgICAgIC0gQ3JlYXRlIGFuIGluc2VydCBtYXAKICAgICA8YnVmZmVyPiAgICAgICAgICAgICAgIC0gT25seSBmb3IgdGhpcyBidWZmZXIKLSAgICA8Qy1DPmsgICAgICAgICAgICAgLSBZb3VyIGNob2ljZSBvZiBrZXkgbWFwCisgICAgPEMtQz5rICAgICAgICAgICAgICAgICAtIFlvdXIgY2hvaWNlIG9mIGtleSBtYXAKICAgICA8Qy1cPjxDLU8+ICAgICAgICAgICAgIC0gRXhlY3V0ZSBvbmUgY29tbWFuZCwgcmV0dXJuIHRvIEluc2VydCBtb2RlCi0gICAgOmxldCBiOnNxbF9jb21wbF90eXBlPSAtIENob29zZSB0aGUgaGlnaGxpZ2h0IGdyb3VwJ3MgZW50cmllcyB0byBkaXNwbGF5LgorICAgIDpjYWxsIHNxbGNvbXBsZXRlI01hcCggLSBBbGxvd3MgdGhlIFNRTCBjb21wbGV0aW9uIHBsdWdpbiB0byBwZXJmb3JtIHNvbWUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaG91c2VrZWVwaW5nIGZ1bmN0aW9ucyB0byBhbGxvdyBpdCB0byBiZSB1c2VkIGluCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmp1bmN0aW9uIHdpdGggb3RoZXIgY29tcGxldGlvbiBwbHVnaW5zLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbmRpY2F0ZSB3aGljaCBpdGVtIHlvdSB3YW50IHRoZSBTUUwgY29tcGxldGlvbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbHVnaW4gdG8gY29tcGxldGUuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEluIHRoaXMgY2FzZSB3ZSBhcmUgYXNraW5nIHRoZSBwbHVnaW4gdG8gZGlzcGxheQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtcyBmcm9tIHRoZSBzeW50YXggaGlnaGxpZ2h0IGdyb3VwCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzcWxLZXl3b3JkJy4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWW91IGNhbiB2aWV3IGEgbGlzdCBvZiBoaWdobGlnaHQgZ3JvdXAgbmFtZXMgdG8KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hvb3NlIGZyb20gYnkgZXhlY3V0aW5nIHRoZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOnN5bnRheCBsaXN0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1hbmQgd2hpbGUgZWRpdGluZyBhIFNRTCBmaWxlLgogICAgICdzcWxLZXl3b3JkJyAgICAgICAgICAgLSBEaXNwbGF5IHRoZSBpdGVtcyBmb3IgdGhlIHNxbEtleXdvcmQgaGlnaGxpZ2h0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdyb3VwCi0gICAgPENSPiAgICAgICAgICAgICAgICAgICAtIEV4ZWN1dGUgdGhlIDpsZXQgY29tbWFuZAorICAgICk8Q1I+ICAgICAgICAgICAgICAgICAgLSBFeGVjdXRlIHRoZSA6bGV0IGNvbW1hbmQKICAgICA8Qy1YPjxDLU8+ICAgICAgICAgICAgIC0gVHJpZ2dlciB0aGUgc3RhbmRhcmQgb21uaSBjb21wbGV0aW9uIGtleSBzdHJva2UuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJ5IHNldHRpbmcgdGhlIGI6c3FsX2NvbXBsX3R5cGUgdmFyaWFibGUsIHRoaXMKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5zdHJ1Y3RzIHRoZSBTUUwgY29tcGxldGlvbiBwbHVnaW4gdG8gcG9wdWxhdGUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlIHBvcHVwIHdpdGggaXRlbXMgZnJvbSB0aGUgc3FsS2V5d29yZCBoaWdobGlnaHQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JvdXAuICBUaGUgcGx1Z2luIHdpbGwgYWxzbyBjYWNoZSB0aGlzIHJlc3VsdAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnRpbCBWaW0gaXMgcmVzdGFydGVkLiAgVGhlIHN5bnRheCBsaXN0IGlzIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXRyaWV2ZWQgdXNpbmcgdGhlIHN5bnRheGNvbXBsZXRlIHBsdWdpbi4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUGFzc2luZyBpbiAnc3FsS2V5d29yZCcgaW5zdHJ1Y3RzIHRoZSBTUUwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcGxldGlvbiBwbHVnaW4gdG8gcG9wdWxhdGUgdGhlIHBvcHVwIHdpdGgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbXMgZnJvbSB0aGUgc3FsS2V5d29yZCBoaWdobGlnaHQgZ3JvdXAuICBUaGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGx1Z2luIHdpbGwgYWxzbyBjYWNoZSB0aGlzIHJlc3VsdCB1bnRpbCBWaW0gaXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdGFydGVkLiAgVGhlIHN5bnRheCBsaXN0IGlzIHJldHJpZXZlZCB1c2luZworICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgc3ludGF4Y29tcGxldGUgcGx1Z2luLgogPAotU2V0dGluZyBiOnNxbF9jb21wbF90eXBlID0gJ3N5bnRheCcgaXMgYSBzcGVjaWFsIGNhc2UuICBUaGlzIGluc3RydWN0cyB0aGUKK1VzaW5nIHRoZSAnc3ludGF4JyBrZXl3b3JkIGlzIGEgc3BlY2lhbCBjYXNlLiAgVGhpcyBpbnN0cnVjdHMgdGhlCiBzeW50YXhjb21wbGV0ZSBwbHVnaW4gdG8gcmV0cmlldmUgYWxsIHN5bnRheCBpdGVtcy4gIFNvIHRoaXMgd2lsbCBlZmZlY3RpdmVseQogd29yayBmb3IgYW55IG9mIFZpbSdzIFNRTCBzeW50YXggZmlsZXMuICBBdCB0aGUgdGltZSBvZiB3cml0aW5nIHRoaXMgaW5jbHVkZXMKIDEwIGRpZmZlcmVudCBzeW50YXggZmlsZXMgZm9yIHRoZSBkaWZmZXJlbnQgZGlhbGVjdHMgb2YgU1FMIChzZWUgc2VjdGlvbiAzCkBAIC0zODMsNyArMzkxLDcgQEAKIHBsdWdpbiBpbnN0YWxsZWQsIChodHRwOi8vdmltLnNvdXJjZWZvcmdlLm5ldC9zY3JpcHQucGhwP3NjcmlwdF9pZD0zNTYpLgogCiBEeW5hbWljIG1vZGUgaXMgdXNlZCBieSBzZXZlcmFsIGZlYXR1cmVzIG9mIHRoZSBTUUwgY29tcGxldGlvbiBwbHVnaW4uICAKLUFmdGVyIGluc3RhbGxpbmcgdGhlIGRiZXh0IHBsdWdpbiBzZWUgdGhlIHxkYmV4dC10dXRvcmlhbHwgZm9yIGFkZGl0aW9uYWwKK0FmdGVyIGluc3RhbGxpbmcgdGhlIGRiZXh0IHBsdWdpbiBzZWUgdGhlIGRiZXh0LXR1dG9yaWFsIGZvciBhZGRpdGlvbmFsCiBjb25maWd1cmF0aW9uIGFuZCB1c2FnZS4gIFRoZSBkYmV4dCBwbHVnaW4gYWxsb3dzIHRoZSBTUUwgY29tcGxldGlvbiBwbHVnaW4KIHRvIGRpc3BsYXkgYSBsaXN0IG9mIHRhYmxlcywgcHJvY2VkdXJlcywgdmlld3MgYW5kIGNvbHVtbnMuID4KICAgICAgVGFibGUgTGlzdApAQCAtNDAzLDkgKzQxMSw3IEBACiAgICAgIFN0b3JlZCBQcm9jZWR1cmUgTGlzdCAgLSA8Qy1DPnAKICAgICAgVmlldyBMaXN0ICAgICAgICAgICAgICAtIDxDLUM+dgogICAgICBDb2x1bW4gTGlzdCAgICAgICAgICAgIC0gPEMtQz5jCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgLSAuPEMtWD48Qy1PPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0gSWYgPEMtWD48Qy1PPiBpcyBwcmVzc2VkIGZvbGxvd2luZyBhIHBlcmlvZAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXQgaXMgYXNzdW1lZCB5b3UgYXJlIGFza2luZyBmb3IgYSBjb2x1bW4gbGlzdC4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAtIFdpbmRvd3MgcGxhdGZvcm0gb25seQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0gV2hlbiB2aWV3aW5nIGEgcG9wdXAgd2luZG93IGRpc3BsYXlpbmcgdGhlIGxpc3QKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mIHRhYmxlcywgeW91IGNhbiBwcmVzcyA8Qy1SaWdodD4sIHRoaXMgd2lsbAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVwbGFjZSB0aGUgdGFibGUgY3VycmVudGx5IGhpZ2hsaWdodGVkIHdpdGgKQEAgLTQxOCw3ICs0MjQsNyBAQAogdGhlIHBvcHVwIHdpbmRvdy4gIFRoaXMgbWFrZXMgdGhlIHJlLWRpc3BsYXlpbmcgb2YgdGhlc2UgbGlzdHMgdmVyeQogZmFzdC4gIElmIG5ldyB0YWJsZXMgb3IgY29sdW1ucyBhcmUgYWRkZWQgdG8gdGhlIGRhdGFiYXNlIGl0IG1heSBiZWNvbWUgCiBuZWNlc3NhcnkgdG8gY2xlYXIgdGhlIHBsdWdpbnMgY2FjaGUuICBUaGUgZGVmYXVsdCBtYXAgZm9yIHRoaXMgaXM6ID4KLSAgICAgICAgaW1hcCA8YnVmZmVyPiA8Qy1DPlIgPEMtTz46bGV0IGI6c3FsX2NvbXBsX3R5cGU9J1Jlc2V0Q2FjaGUnPENSPjxDLVg+PEMtTz4KKyAgICBpbWFwIDxidWZmZXI+IDxDLUM+UiA8Qy1cPjxDLU8+OmNhbGwgc3FsY29tcGxldGUjTWFwKCdSZXNldENhY2hlJyk8Q1I+PEMtWD48Qy1PPgogPAogIAogNC4zIFNRTCBUdXRvcmlhbAkJCQkqc3FsLWNvbXBsZXRpb24tdHV0b3JpYWwqCkBAIC00NzIsNyArNDc4LDcgQEAKIGRiZXh0LnZpbSBpcyB3b3JraW5nIGFzIGV4cGVjdGVkLiAgSWYgbm90LCBwbGVhc2UgY29uc3VsdCB0aGUgZGJleHQudHh0IAogZG9jdW1lbnRhdGlvbi4KIAotQXNzdW1pbmcgeW91IGhhdmUgZm9sbG93ZWQgdGhlIHxkYmV4dC10dXRvcmlhbHwgeW91IGNhbiBwcmVzcyA8Qy1DPnQgdG8KK0Fzc3VtaW5nIHlvdSBoYXZlIGZvbGxvd2VkIHRoZSBkYmV4dC10dXRvcmlhbCB5b3UgY2FuIHByZXNzIDxDLUM+dCB0bwogZGlzcGxheSBhIGxpc3Qgb2YgdGFibGVzLiAgVGhlcmUgaXMgYSBkZWxheSB3aGlsZSBkYmV4dCBpcyBjcmVhdGluZyB0aGUgdGFibGUKIGxpc3QuICBBZnRlciB0aGUgbGlzdCBpcyBkaXNwbGF5ZWQgcHJlc3MgPEMtVz4uICBUaGlzIHdpbGwgcmVtb3ZlIGJvdGggdGhlIAogcG9wdXAgd2luZG93IGFuZCB0aGUgdGFibGUgbmFtZSBhbHJlYWR5IGNob3NlbiB3aGVuIHRoZSBsaXN0IGJlY2FtZSBhY3RpdmUuID4KQEAgLTQ5Niw3ICs1MDIsNyBAQAogdG9nZXRoZXIuICBJZiB5b3Ugd2lzaCB0byBlbmFibGUgdGhpcyBmdW5jdGlvbmFsaXR5IG9uIGEgKm5peCBwbGF0Zm9ybSBjaG9vc2UKIGEga2V5IGFuZCBjcmVhdGUgdGhpcyBtYXBwaW5nIChzZWUgfHNxbC1jb21wbGV0aW9uLW1hcHN8IGZvciBmdXJ0aGVyIAogZGV0YWlscyBvbiB3aGVyZSB0byBjcmVhdGUgdGhpcyBpbWFwKTogPgotICAgIGltYXAgPGJ1ZmZlcj4gPHlvdXJfa2V5c3Ryb2tlPiAgPENSPjxDLVw+PEMtTz46bGV0IGI6c3FsX2NvbXBsX3R5cGU9J2NvbHVtbic8Q1I+PEMtWD48Qy1PPgorICAgIGltYXAgPGJ1ZmZlcj4gPHlvdXJfa2V5c3Ryb2tlPiA8Q1I+PEMtXD48Qy1PPjpjYWxsIHNxbGNvbXBsZXRlI01hcCgnY29sdW1uJyk8Q1I+PEMtWD48Qy1PPgogPAogRXhhbXBsZSBvZiB1c2luZyBjb2x1bW4gY29tcGxldGlvbjoKICAgICAgLSBQcmVzcyA8Qy1DPnQgYWdhaW4gdG8gZGlzcGxheSB0aGUgbGlzdCBvZiB0YWJsZXMuICAKQEAgLTYxMSw5ICs2MTcsNjUgQEAKICAgICAgICAgICAgICAgICAgICBNWVRBQkxFTkFNRSAtLT4gTQogPAogIAotNC41IEN1c3RvbWl6aW5nIE1hcHMJCQkJKnNxbC1jb21wbGV0aW9uLW1hcHMqCi0tLS0tLS0tLS0tLS0tLS0tLS0tLQorNC41IFNRTCBNYXBzCSAgICAgICAgCQkJKnNxbC1jb21wbGV0aW9uLW1hcHMqCistLS0tLS0tLS0tLS0KIAorVGhlIGRlZmF1bHQgU1FMIG1hcHMgaGF2ZSBiZWVuIGRlc2NyaWJlZCBpbiBvdGhlciBzZWN0aW9ucyBvZiB0aGlzIGRvY3VtZW50IGluCitncmVhdGVyIGRldGFpbC4gIEhlcmUgaXMgYSBsaXN0IG9mIHRoZSBtYXBzIHdpdGggYSBicmllZiBkZXNjcmlwdGlvbiBvZiBlYWNoLgorCitTdGF0aWMgTWFwcworLS0tLS0tLS0tLS0KK1RoZXNlIGFyZSBtYXBzIHdoaWNoIHVzZSBwb3B1bGF0ZSB0aGUgY29tcGxldGlvbiBsaXN0IHVzaW5nIFZpbSdzIHN5bnRheAoraGlnaGxpZ2h0aW5nIHJ1bGVzLiA+CisgICAgPEMtQz5hCis8ICAgICAgIC0gRGlzcGxheXMgYWxsIFNRTCBzeW50YXggaXRlbXMuID4KKyAgICA8Qy1DPmsgCis8ICAgICAgIC0gRGlzcGxheXMgYWxsIFNRTCBzeW50YXggaXRlbXMgZGVmaW5lZCBhcyAnc3FsS2V5d29yZCcuID4KKyAgICA8Qy1DPmYgCis8ICAgICAgIC0gRGlzcGxheXMgYWxsIFNRTCBzeW50YXggaXRlbXMgZGVmaW5lZCBhcyAnc3FsRnVuY3Rpb24uID4KKyAgICA8Qy1DPm8KKzwgICAgICAgLSBEaXNwbGF5cyBhbGwgU1FMIHN5bnRheCBpdGVtcyBkZWZpbmVkIGFzICdzcWxPcHRpb24nLiA+CisgICAgPEMtQz5UCis8ICAgICAgIC0gRGlzcGxheXMgYWxsIFNRTCBzeW50YXggaXRlbXMgZGVmaW5lZCBhcyAnc3FsVHlwZScuID4KKyAgICA8Qy1DPnMKKzwgICAgICAgLSBEaXNwbGF5cyBhbGwgU1FMIHN5bnRheCBpdGVtcyBkZWZpbmVkIGFzICdzcWxTdGF0ZW1lbnQnLiA+CisKK0R5bmFtaWMgTWFwcworLS0tLS0tLS0tLS0tCitUaGVzZSBhcmUgbWFwcyB3aGljaCB1c2UgcG9wdWxhdGUgdGhlIGNvbXBsZXRpb24gbGlzdCB1c2luZyB0aGUgZGJleHQudmltIHBsdWdpbi4gPgorICAgIDxDLUM+dCAgCis8ICAgICAgIC0gRGlzcGxheXMgYSBsaXN0IG9mIHRhYmxlcy4gPgorICAgIDxDLUM+cAorPCAgICAgICAtIERpc3BsYXlzIGEgbGlzdCBvZiBwcm9jZWR1cmVzLiA+CisgICAgPEMtQz52Cis8ICAgICAgIC0gRGlzcGxheXMgYSBsaXN0IG9mIHZpZXdzLiA+CisgICAgPEMtQz5jCis8ICAgICAgIC0gRGlzcGxheXMgYSBsaXN0IG9mIGNvbHVtbnMgZm9yIGEgc3BlY2lmaWMgdGFibGUuID4KKyAgICA8Qy1DPmwKKzwgICAgICAgLSBEaXNwbGF5cyBhIGNvbW1hIHNlcGFyYXRlZCBsaXN0IG9mIGNvbHVtbnMgZm9yIGEgc3BlY2lmaWMgdGFibGUuID4KKyAgICA8Qy1DPkwKKzwgICAgICAgLSBEaXNwbGF5cyBhIGNvbW1hIHNlcGFyYXRlZCBsaXN0IG9mIGNvbHVtbnMgZm9yIGEgc3BlY2lmaWMgdGFibGUuCisgICAgICAgICAgVGhpcyBzaG91bGQgb25seSBiZSB1c2VkIHdoZW4gdGhlIGNvbXBsZXRpb24gd2luZG93IGlzIGFjdGl2ZS4gPgorICAgIDxDLVJpZ2h0PgorPCAgICAgICAtIERpc3BsYXlzIGEgbGlzdCBvZiBjb2x1bW5zIGZvciB0aGUgdGFibGUgY3VycmVudGx5IGhpZ2hsaWdodGVkIGluCisgICAgICAgICAgdGhlIGNvbXBsZXRpb24gd2luZG93LiAgPEMtUmlnaHQ+IGlzIG5vdCByZWNvZ25pemVkIG9uIG1vc3QgVW5peAorICAgICAgICAgIHN5c3RlbXMsIHNvIHRoaXMgbWFwcyBpcyBvbmx5IGNyZWF0ZWQgb24gdGhlIFdpbmRvd3MgcGxhdGZvcm0uCisgICAgICAgICAgSWYgeW91IHdvdWxkIGxpa2UgdGhlIHNhbWUgZmVhdHVyZSBvbiBVbml4LCBjaG9vc2UgYSBkaWZmZXJlbnQga2V5CisgICAgICAgICAgYW5kIG1ha2UgdGhlIHNhbWUgbWFwIGluIHlvdXIgdmltcmMuCisgICAgICAgICAgVGhpcyBzaG91bGQgb25seSBiZSB1c2VkIHdoZW4gdGhlIGNvbXBsZXRpb24gd2luZG93IGlzIGFjdGl2ZS4gPgorICAgIDxDLUxlZnQ+Cis8ICAgICAgIC0gRGlzcGxheXMgdGhlIGxpc3Qgb2YgdGFibGVzLgorICAgICAgICAgIDxDLUxlZnQ+IGlzIG5vdCByZWNvZ25pemVkIG9uIG1vc3QgVW5peCBzeXN0ZW1zLCBzbyB0aGlzIG1hcHMgaXMKKyAgICAgICAgICBvbmx5IGNyZWF0ZWQgb24gdGhlIFdpbmRvd3MgcGxhdGZvcm0uICBJZiB5b3Ugd291bGQgbGlrZSB0aGUgc2FtZQorICAgICAgICAgIGZlYXR1cmUgb24gVW5peCwgY2hvb3NlIGEgZGlmZmVyZW50IGtleSBhbmQgbWFrZSB0aGUgc2FtZSBtYXAgaW4KKyAgICAgICAgICB5b3VyIHZpbXJjLgorICAgICAgICAgIFRoaXMgc2hvdWxkIG9ubHkgYmUgdXNlZCB3aGVuIHRoZSBjb21wbGV0aW9uIHdpbmRvdyBpcyBhY3RpdmUuID4KKyAgICA8Qy1DPlIKKzwgICAgICAgLSBUaGlzIG1hcHMgcmVtb3ZlcyBhbGwgY2FjaGVkIGl0ZW1zIGFuZCBmb3JjZXMgdGhlIFNRTCBjb21wbGV0aW9uIAorICAgICAgICAgIHRvIHJlZ2VuZXJhdGUgdGhlIGxpc3Qgb2YgaXRlbXMuCisKK0N1c3RvbWl6aW5nIE1hcHMKKy0tLS0tLS0tLS0tLS0tLS0KIFlvdSBjYW4gY3JlYXRlIGFzIG1hbnkgYWRkaXRpb25hbCBrZXkgbWFwcyBhcyB5b3UgbGlrZS4gIEdlbmVyYWxseSwgdGhlIG1hcHMKIHdpbGwgYmUgc3BlY2lmeWluZyBkaWZmZXJlbnQgc3ludGF4IGhpZ2hsaWdodCBncm91cHMuICAKIApAQCAtNjI0LDcgKzY4Niw3IEBACiA8IAogRG8gbm8gZWRpdCBmdHBsdWdpbi9zcWwudmltIGRpcmVjdGx5ISAgSWYgeW91IGNoYW5nZSB0aGlzIGZpbGUgeW91ciBjaGFuZ2VzCiB3aWxsIGJlIG92ZXIgd3JpdHRlbiBvbiBmdXR1cmUgdXBkYXRlcy4gIFZpbSBoYXMgYSBzcGVjaWFsIGRpcmVjdG9yeSBzdHJ1Y3R1cmUKLXRoYXQgYWxsb3dzIHlvdSB0byBtYWtlIGN1c3RvbWl6YXRpb25zIHdpdGhvdXQgY2hhbmdpbmcgdGhlIGZpbGVzIHRoYXQgYXJlCit3aGljaCBhbGxvd3MgeW91IHRvIG1ha2UgY3VzdG9taXphdGlvbnMgd2l0aG91dCBjaGFuZ2luZyB0aGUgZmlsZXMgdGhhdCBhcmUKIGluY2x1ZGVkIHdpdGggdGhlIFZpbSBkaXN0cmlidXRpb24uICBJZiB5b3Ugd2lzaCB0byBjdXN0b21pemUgdGhlIG1hcHMKIGNyZWF0ZSBhbiBhZnRlci9mdHBsdWdpbi9zcWwudmltIChzZWUgfGFmdGVyLWRpcmVjdG9yeXwpIGFuZCBwbGFjZSB0aGUgc2FtZQogbWFwcyBmcm9tIHRoZSBmdHBsdWdpbi9zcWwudmltIGluIGl0IHVzaW5nIHlvdXIgb3duIGtleSBzdHJva2VzLiAgPEMtQz4gd2FzCkBAIC02MzIsNCArNjk0LDQ0IEBACiBwbGF0Zm9ybSB5b3UgY2FuIGFsc28gdXNlIDxDLVNwYWNlPiBvciBBTFQga2V5cy4KICAKIAorNC42IFVzaW5nIHdpdGggb3RoZXIgZmlsZXR5cGVzCQkgICAgICAgICpzcWwtY29tcGxldGlvbi1maWxldHlwZXMqCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworTWFueSB0aW1lcyBTUUwgY2FuIGJlIHVzZWQgd2l0aCBkaWZmZXJlbnQgZmlsZXR5cGVzLiAgRm9yIGV4YW1wbGUgUGVybCwgSmF2YSwKK1BIUCwgSmF2YXNjcmlwdCBjYW4gYWxsIGludGVyYWN0IHdpdGggYSBkYXRhYmFzZS4gIE9mdGVuIHlvdSBuZWVkIGJvdGggdGhlIFNRTAorY29tcGxldGlvbiBhcyB3ZWxsIGFzIHRoZSBjb21wbGV0aW9uIGNhcGFiaWxpdGllcyBmb3IgdGhlIGN1cnJlbnQgbGFuZ3VhZ2UgeW91CithcmUgZWRpdGluZy4KKworVGhpcyBjYW4gYmUgZW5hYmxlZCBlYXNpbHkgd2l0aCB0aGUgZm9sbG93aW5nIHN0ZXBzIChhc3N1bWluZyBhIFBlcmwgZmlsZSk6ID4KKyAgICAxLiAgOmUgdGVzdC5wbAorICAgIDIuICA6c2V0IGZpbGV0eXBlPXNxbAorICAgIDMuICA6c2V0IGZ0PXBlcmwKKworU3RlcCAxCistLS0tLS0KK0JlZ2lucyBieSBlZGl0aW5nIGEgUGVybCBmaWxlLiAgVmltIGF1dG9tYXRpY2FsbHkgc2V0cyB0aGUgZmlsZXR5cGUgdG8KKyJwZXJsIi4gIEJ5IGRlZmF1bHQsIFZpbSBydW5zIHRoZSBhcHByb3ByaWF0ZSBmaWxldHlwZSBmaWxlCitmdHBsdWdpbi9wZXJsLnZpbS4gIElmIHlvdSBhcmUgdXNpbmcgdGhlIHN5bnRheCBjb21wbGV0aW9uIHBsdWdpbiBieSBmb2xsb3dpbmcKK3RoZSBkaXJlY3Rpb25zIGF0IHxmdC1zeW50YXgtb21uaXwgdGhlbiB0aGUgfCdvbW5pZnVuYyd8IG9wdGlvbiBoYXMgYmVlbiBzZXQgdG8KKyJzeW50YXgjQ29tcGxldGUiLiAgUHJlc3NpbmcgPEMtWD48Qy1PPiB3aWxsIGRpc3BsYXkgdGhlIG9tbmkgcG9wdXAgY29udGFpbmluZwordGhlIHN5bnRheCBpdGVtcyBmb3IgUGVybC4KKworU3RlcCAyCistLS0tLS0KK01hbnVhbGx5IHNldHRpbmcgdGhlIGZpbGV0eXBlIHRvICdzcWwnIHdpbGwgYWxzbyBmaXJlIHRoZSBhcHByb3ByaWF0ZSBmaWxldHlwZQorZmlsZXMgZnRwbHVnaW4vc3FsLnZpbS4gIFRoaXMgZmlsZSB3aWxsIGRlZmluZSBhIG51bWJlciBvZiBidWZmZXIgc3BlY2lmaWMKK21hcHMgZm9yIFNRTCBjb21wbGV0aW9uLCBzZWUgfHNxbC1jb21wbGV0aW9uLW1hcHN8LiAgTm93IHRoZXNlIG1hcHMgaGF2ZQorYmVlbiBjcmVhdGVkIGFuZCB0aGUgU1FMIGNvbXBsZXRpb24gcGx1Z2luIGhhcyBiZWVuIGluaXRpYWxpemVkLiAgQWxsIFNRTAorc3ludGF4IGl0ZW1zIGhhdmUgYmVlbiBjYWNoZWQgaW4gcHJlcGFyYXRpb24uICBUaGUgU1FMIGZpbGV0eXBlIHNjcmlwdCBkZXRlY3RzCit3ZSBhcmUgYXR0ZW1wdGluZyB0byB1c2UgdHdvIGRpZmZlcmVudCBjb21wbGV0aW9uIHBsdWdpbnMuICBTaW5jZSB0aGUgU1FMIG1hcHMKK2JlZ2luIHdpdGggPEMtQz4sIHRoZSBtYXBzIHdpbGwgdG9nZ2xlIHRoZSB8J29tbmlmdW5jJ3wgd2hlbiBpbiB1c2UuICBTbyB5b3UKK2NhbiB1c2UgPEMtWD48Qy1PPiB0byBjb250aW51ZSB1c2luZyB0aGUgY29tcGxldGlvbiBmb3IgUGVybCAodXNpbmcgdGhlIHN5bnRheAorY29tcGxldGlvbiBwbHVnaW4pIGFuZCA8Qy1DPiB0byB1c2UgdGhlIFNRTCBjb21wbGV0aW9uIGZlYXR1cmVzLgorCitTdGVwIDMKKy0tLS0tLQorU2V0dGluZyB0aGUgZmlsZXR5cGUgYmFjayB0byBQZXJsIHNldHMgYWxsIHRoZSB1c3VhbCAicGVybCIgcmVsYXRlZCBpdGVtcyBiYWNrCithcyB0aGV5IHdlcmUuCisgICAgIAorCiB2aW06dHc9Nzg6dHM9ODpmdD1oZWxwOm5vcmw6CmRpZmYgLS1naXQgYS9ydW50aW1lL2RvYy9zdGFydGluZy50eHQgYi9ydW50aW1lL2RvYy9zdGFydGluZy50eHQKaW5kZXggYzBmMmEwMy4uNGNhMjEzOSAxMDA2NDQKLS0tIGEvcnVudGltZS9kb2Mvc3RhcnRpbmcudHh0CisrKyBiL3J1bnRpbWUvZG9jL3N0YXJ0aW5nLnR4dApAQCAtMSw0ICsxLDQgQEAKLSpzdGFydGluZy50eHQqICBGb3IgVmltIHZlcnNpb24gNy4wYy4gIExhc3QgY2hhbmdlOiAyMDA2IE1hciAyNgorKnN0YXJ0aW5nLnR4dCogIEZvciBWaW0gdmVyc2lvbiA3LjBjLiAgTGFzdCBjaGFuZ2U6IDIwMDYgQXByIDAyCiAKIAogCQkgIFZJTSBSRUZFUkVOQ0UgTUFOVUFMICAgIGJ5IEJyYW0gTW9vbGVuYWFyCkBAIC00MTMsNyArNDEzLDcgQEAKIAkJcHJvY2VzcyBhbmQgZXhpdHMgdGhlIGN1cnJlbnQgb25lLiAgIi1mIiBzaG91bGQgYmUgdXNlZCB3aGVuCiAJCWd2aW0gaXMgc3RhcnRlZCBieSBhIHByb2dyYW0gdGhhdCB3aWxsIHdhaXQgZm9yIHRoZSBlZGl0CiAJCXNlc3Npb24gdG8gZmluaXNoIChlLmcuLCBtYWlsIG9yIHJlYWRuZXdzKS4gIElmIHlvdSB3YW50IGd2aW0KLQkJbmV2ZXIgdG8gZm9yaywgaW5jbHVkZSAnZicgaW4gJ2d1aW9wdGlvbnMnIGluIHlvdXIgLmd2aW1yYy4KKwkJbmV2ZXIgdG8gZm9yaywgaW5jbHVkZSAnZicgaW4gJ2d1aW9wdGlvbnMnIGluIHlvdXIgfGd2aW1yY3wuCiAJCUNhcmVmdWw6IFlvdSBjYW4gdXNlICItZ2YiIHRvIHN0YXJ0IHRoZSBHVUkgaW4gdGhlIGZvcmVncm91bmQsCiAJCWJ1dCAiLWZnIiBpcyB1c2VkIHRvIHNwZWNpZnkgdGhlIGZvcmVncm91bmQgY29sb3IuICB8Z3VpLWZvcmt8CiAJCXtub3QgaW4gVml9CkBAIC00MzAsNyArNDMwLDcgQEAKIDwJCUFsc28gY29uc2lkZXIgdXNpbmcgYXV0b2NvbW1hbmRzOyBzZWUgfGF1dG9jb21tYW5kfC4KIAkJV2hlbiB7dmltcmN9IGlzIGVxdWFsIHRvICJOT05FIiAoYWxsIHVwcGVyY2FzZSksIGFsbAogCQlpbml0aWFsaXphdGlvbnMgZnJvbSBmaWxlcyBhbmQgZW52aXJvbm1lbnQgdmFyaWFibGVzIGFyZQotCQlza2lwcGVkLCBpbmNsdWRpbmcgcmVhZGluZyB0aGUgLmd2aW1yYyBmaWxlIHdoZW4gdGhlIEdVSQorCQlza2lwcGVkLCBpbmNsdWRpbmcgcmVhZGluZyB0aGUgfGd2aW1yY3wgZmlsZSB3aGVuIHRoZSBHVUkKIAkJc3RhcnRzLiAgTG9hZGluZyBwbHVnaW5zIGlzIGFsc28gc2tpcHBlZC4KIAkJV2hlbiB7dmltcmN9IGlzIGVxdWFsIHRvICJOT1JDIiAoYWxsIHVwcGVyY2FzZSksIHRoaXMgaGFzIHRoZQogCQlzYW1lIGVmZmVjdCBhcyAiTk9ORSIsIGJ1dCBsb2FkaW5nIHBsdWdpbnMgaXMgbm90IHNraXBwZWQuCkBAIC00NDAsNyArNDQwLDcgQEAKIAkJe25vdCBpbiBWaX0KIAogCQkJCQkJCSotVSogKkUyMzAqCi0tVSB7Z3ZpbXJjfQlUaGUgZmlsZSAiZ3ZpbXJjIiBpcyByZWFkIGZvciBpbml0aWFsaXphdGlvbnMgd2hlbiB0aGUgR1VJCistVSB7Z3ZpbXJjfQlUaGUgZmlsZSB7Z3ZpbXJjfSBpcyByZWFkIGZvciBpbml0aWFsaXphdGlvbnMgd2hlbiB0aGUgR1VJCiAJCXN0YXJ0cy4gIE90aGVyIEdVSSBpbml0aWFsaXphdGlvbnMgYXJlIHNraXBwZWQuICBXaGVuIHtndmltcmN9CiAJCWlzIGVxdWFsIHRvICJOT05FIiwgbm8gZmlsZSBpcyByZWFkIGZvciBHVUkgaW5pdGlhbGl6YXRpb25zIGF0CiAJCWFsbC4gIHxndWktaW5pdHwKQEAgLTc2MSw3ICs3NjEsOCBAQAogCiAJCQkgICpWSU1JTklUKiAqLnZpbXJjKiAqX3ZpbXJjKiAqRVhJTklUKiAqLmV4cmMqICpfZXhyYyoKICAgICAgYy4gRm91ciBwbGFjZXMgYXJlIHNlYXJjaGVkIGZvciBpbml0aWFsaXphdGlvbnMuICBUaGUgZmlyc3QgdGhhdCBleGlzdHMKLQlpcyB1c2VkLCB0aGUgb3RoZXJzIGFyZSBpZ25vcmVkLgorCWlzIHVzZWQsIHRoZSBvdGhlcnMgYXJlIGlnbm9yZWQuICBUaGUgJE1ZVklNUkMgZW52aXJvbm1lbnQgdmFyaWFibGUgaXMKKwlzZXQgdG8gdGhlIGZpbGUgdGhhdCB3YXMgZmlyc3QgZm91bmQsIHVubGVzcyAkTVlWSU1SQyB3YXMgYWxyZWFkeSBzZXQuCiAJLSAgVGhlIGVudmlyb25tZW50IHZhcmlhYmxlIFZJTUlOSVQgKHNlZSBhbHNvIHxjb21wYXRpYmxlLWRlZmF1bHR8KSAoKikKIAkgICBUaGUgdmFsdWUgb2YgJFZJTUlOSVQgaXMgdXNlZCBhcyBhbiBFeCBjb21tYW5kIGxpbmUuCiAJLSAgVGhlIHVzZXIgdmltcmMgZmlsZShzKToKQEAgLTkwNSw3ICs5MDYsOCBAQAogbm90IGJlZW4gc2V0IG9yIHJlc2V0IHdpbGwgYmUgY2hhbmdlZC4gIFRoaXMgaGFzIHRoZSBzYW1lIGVmZmVjdCBsaWtlIHRoZQogdmFsdWUgb2YgJ2NvbXBhdGlibGUnIGhhZCB0aGlzIHZhbHVlIHdoZW4gc3RhcnRpbmcgVmltLiAgTm90ZSB0aGF0IHRoaXMKIGRvZXNuJ3QgaGFwcGVuIGZvciB0aGUgc3lzdGVtLXdpZGUgdmltcmMgZmlsZS4gIEl0IGRvZXMgYWxzbyBoYXBwZW4gZm9yIGd2aW1yYwotZmlsZXMuCitmaWxlcy4gIFRoZSAkTVlWSU1SQyBvciAkTVlHVklNUkMgZmlsZSB3aWxsIGJlIHNldCB0byB0aGUgZmlyc3QgZm91bmQgdmltcmMKK2FuZC9vciBndmltcmMgZmlsZS4KIAogQnV0IHRoZXJlIGlzIGEgc2lkZSBlZmZlY3Qgb2Ygc2V0dGluZyBvciByZXNldHRpbmcgJ2NvbXBhdGlibGUnIGF0IHRoZSBtb21lbnQKIGEgLnZpbXJjIGZpbGUgaXMgZm91bmQ6IE1hcHBpbmdzIGFyZSBpbnRlcnByZXRlZCB0aGUgbW9tZW50IHRoZXkgYXJlCmRpZmYgLS1naXQgYS9ydW50aW1lL2RvYy9zeW50YXgudHh0IGIvcnVudGltZS9kb2Mvc3ludGF4LnR4dAppbmRleCAwZDAzN2Q2Li5hMGE1YjhkIDEwMDY0NAotLS0gYS9ydW50aW1lL2RvYy9zeW50YXgudHh0CisrKyBiL3J1bnRpbWUvZG9jL3N5bnRheC50eHQKQEAgLTEsNCArMSw0IEBACi0qc3ludGF4LnR4dCoJRm9yIFZpbSB2ZXJzaW9uIDcuMGMuICBMYXN0IGNoYW5nZTogMjAwNiBNYXIgMjgKKypzeW50YXgudHh0KglGb3IgVmltIHZlcnNpb24gNy4wYy4gIExhc3QgY2hhbmdlOiAyMDA2IEFwciAwNAogCiAKIAkJICBWSU0gUkVGRVJFTkNFIE1BTlVBTAkgIGJ5IEJyYW0gTW9vbGVuYWFyCkBAIC04MSwxNCArODEsMTQgQEAKIAogTk9URTogV2hlbiB1c2luZyByZXZlcnNlIHZpZGVvICgiZ3ZpbSAtZmcgd2hpdGUgLWJnIGJsYWNrIiksIHRoZSBkZWZhdWx0IHZhbHVlCiBvZiAnYmFja2dyb3VuZCcgd2lsbCBub3QgYmUgc2V0IHVudGlsIHRoZSBHVUkgd2luZG93IGlzIG9wZW5lZCwgd2hpY2ggaXMgYWZ0ZXIKLXJlYWRpbmcgdGhlIC5ndmltcmMuICBUaGlzIHdpbGwgY2F1c2UgdGhlIHdyb25nIGRlZmF1bHQgaGlnaGxpZ2h0aW5nIHRvIGJlCityZWFkaW5nIHRoZSB8Z3ZpbXJjfC4gIFRoaXMgd2lsbCBjYXVzZSB0aGUgd3JvbmcgZGVmYXVsdCBoaWdobGlnaHRpbmcgdG8gYmUKIHVzZWQuICBUbyBzZXQgdGhlIGRlZmF1bHQgdmFsdWUgb2YgJ2JhY2tncm91bmQnIGJlZm9yZSBzd2l0Y2hpbmcgb24KLWhpZ2hsaWdodGluZywgaW5jbHVkZSB0aGUgIjpndWkiIGNvbW1hbmQgaW4gdGhlIC5ndmltcmM6ID4KK2hpZ2hsaWdodGluZywgaW5jbHVkZSB0aGUgIjpndWkiIGNvbW1hbmQgaW4gdGhlIHxndmltcmN8OiA+CiAKICAgIDpndWkJCSIgb3BlbiB3aW5kb3cgYW5kIHNldCBkZWZhdWx0IGZvciAnYmFja2dyb3VuZCcKICAgIDpzeW50YXggb24JIiBzdGFydCBoaWdobGlnaHRpbmcsIHVzZSAnYmFja2dyb3VuZCcgdG8gc2V0IGNvbG9ycwogCi1OT1RFOiBVc2luZyAiOmd1aSIgaW4gdGhlIC5ndmltcmMgbWVhbnMgdGhhdCAiZ3ZpbSAtZiIgd29uJ3Qgc3RhcnQgaW4gdGhlCitOT1RFOiBVc2luZyAiOmd1aSIgaW4gdGhlIHxndmltcmN8IG1lYW5zIHRoYXQgImd2aW0gLWYiIHdvbid0IHN0YXJ0IGluIHRoZQogZm9yZWdyb3VuZCEgIFVzZSAiOmd1aSAtZiIgdGhlbi4KIAogCkBAIC0xMDEzLDEwICsxMDEzLDEwIEBACiBmaXhlZCBzb3VyY2UgZm9ybSBpZiB0aGUgZm9ydHJhbl9maXhlZF9zb3VyY2UgdmFyaWFibGUgaGFzIGJlZW4gc2V0LiAgSWYKIG5laXRoZXIgb2YgdGhlc2UgdmFyaWFibGVzIGhhdmUgYmVlbiBzZXQsIHRoZSBzeW50YXggc2NyaXB0IGF0dGVtcHRzIHRvCiBkZXRlcm1pbmUgd2hpY2ggc291cmNlIGZvcm0gaGFzIGJlZW4gdXNlZCBieSBleGFtaW5pbmcgdGhlIGZpcnN0IGZpdmUgY29sdW1ucwotb2YgdGhlIGZpcnN0IDI1IGxpbmVzIG9mIHlvdXIgZmlsZS4gIElmIG5vIHNpZ25zIG9mIGZyZWUgc291cmNlIGZvcm0gYXJlCitvZiB0aGUgZmlyc3QgMjUwIGxpbmVzIG9mIHlvdXIgZmlsZS4gIElmIG5vIHNpZ25zIG9mIGZyZWUgc291cmNlIGZvcm0gYXJlCiBkZXRlY3RlZCwgdGhlbiB0aGUgZmlsZSBpcyBhc3N1bWVkIHRvIGJlIGluIGZpeGVkIHNvdXJjZSBmb3JtLiAgVGhlIGFsZ29yaXRobQogc2hvdWxkIHdvcmsgaW4gdGhlIHZhc3QgbWFqb3JpdHkgb2YgY2FzZXMuICBJbiBzb21lIGNhc2VzLCBzdWNoIGFzIGEgZmlsZSB0aGF0Ci1iZWdpbnMgd2l0aCAyNSBvciBtb3JlIGZ1bGwtbGluZSBjb21tZW50cywgdGhlIHNjcmlwdCBtYXkgaW5jb3JyZWN0bHkgZGVjaWRlCitiZWdpbnMgd2l0aCAyNTAgb3IgbW9yZSBmdWxsLWxpbmUgY29tbWVudHMsIHRoZSBzY3JpcHQgbWF5IGluY29ycmVjdGx5IGRlY2lkZQogdGhhdCB0aGUgZm9ydHJhbiBjb2RlIGlzIGluIGZpeGVkIGZvcm0uICBJZiB0aGF0IGhhcHBlbnMsIGp1c3QgYWRkIGEKIG5vbi1jb21tZW50IHN0YXRlbWVudCBiZWdpbm5pbmcgYW55d2hlcmUgaW4gdGhlIGZpcnN0IGZpdmUgY29sdW1ucyBvZiB0aGUKIGZpcnN0IHR3ZW50eSBmaXZlIGxpbmVzLCBzYXZlICg6dykgYW5kIHRoZW4gcmVsb2FkICg6ZSEpIHRoZSBmaWxlLgpAQCAtMjMwNCw3ICsyMzA0LDcgQEAKIAogU0gJCSpzaC52aW0qICpmdC1zaC1zeW50YXgqICpmdC1iYXNoLXN5bnRheCogKmZ0LWtzaC1zeW50YXgqCiAKLVRoaXMgY292ZXJzIHRoZSAibm9ybWFsIiBVbml4IChCb3VybmUpIHNoLCBiYXNoIGFuZCB0aGUgS29ybiBzaGVsbC4KK1RoaXMgY292ZXJzIHRoZSAibm9ybWFsIiBVbml4IChCb3JuZSkgc2gsIGJhc2ggYW5kIHRoZSBLb3JuIHNoZWxsLgogCiBWaW0gYXR0ZW1wdHMgdG8gZGV0ZXJtaW5lIHdoaWNoIHNoZWxsIHR5cGUgaXMgaW4gdXNlIGJ5IHNwZWNpZnlpbmcgdGhhdAogdmFyaW91cyBmaWxlbmFtZXMgYXJlIG9mIHNwZWNpZmljIHR5cGVzOiA+CkBAIC0yMzI4LDYgKzIzMjgsMTEgQEAKIDwgICBzaDogPgogCWxldCBpc19zaAkgPSAxCiAKK0lmIHRoZXJlJ3Mgbm8gIiMhIC4uLiIgbGluZSwgYW5kIHRoZSB1c2VyIGhhc24ndCBhdmFpbGVkIGhpbXNlbGYvaGVyc2VsZiBvZiBhCitkZWZhdWx0IHNoLnZpbSBzeW50YXggc2V0dGluZyBhcyBqdXN0IHNob3duLCB0aGVuIHN5bnRheC9zaC52aW0gd2lsbCBhc3N1bWUKK3RoZSBCb3JuZSBzaGVsbCBzeW50YXguICBObyBuZWVkIHRvIHF1b3RlIFJGQ3Mgb3IgbWFya2V0IHBlbmV0cmF0aW9uCitzdGF0aXN0aWNzIGluIGVycm9yIHJlcG9ydHMsIHBsZWFzZS4KKwogSWYsIGluIHlvdXIgPC52aW1yYz4sIHlvdSBzZXQgPgogCWxldCBnOnNoX2ZvbGRfZW5hYmxlZD0gMQogPgpAQCAtMzc2MCw3ICszNzY1LDcgQEAKIAloYXZlIHRoZSBzYW1lIGVmZmVjdC4KIAkidW5kZXJjdXJsIiBpcyBhIGN1cmx5IHVuZGVybGluZS4gIFdoZW4gInVuZGVyY3VybCIgaXMgbm90IHBvc3NpYmxlCiAJdGhlbiAidW5kZXJsaW5lIiBpcyB1c2VkLiAgSW4gZ2VuZXJhbCAidW5kZXJjdXJsIiBpcyBvbmx5IGF2YWlsYWJsZSBpbgotCXRoZSBHVUkuCisJdGhlIEdVSS4gIFRoZSBjb2xvciBpcyBzZXQgd2l0aCB8aGlnaGxpZ2h0LWd1aXNwfC4KIAogc3RhcnQ9e3Rlcm0tbGlzdH0JCQkJKmhpZ2hsaWdodC1zdGFydCogKkU0MjIqCiBzdG9wPXt0ZXJtLWxpc3R9CQkJCSp0ZXJtLWxpc3QqICpoaWdobGlnaHQtc3RvcCoKZGlmZiAtLWdpdCBhL3J1bnRpbWUvZG9jL3RhYnBhZ2UudHh0IGIvcnVudGltZS9kb2MvdGFicGFnZS50eHQKaW5kZXggODdiNDJjMC4uZGI1MWQ4NCAxMDA2NDQKLS0tIGEvcnVudGltZS9kb2MvdGFicGFnZS50eHQKKysrIGIvcnVudGltZS9kb2MvdGFicGFnZS50eHQKQEAgLTEsNCArMSw0IEBACi0qdGFicGFnZS50eHQqICAgRm9yIFZpbSB2ZXJzaW9uIDcuMGMuICBMYXN0IGNoYW5nZTogMjAwNiBNYXIgMDMKKyp0YWJwYWdlLnR4dCogICBGb3IgVmltIHZlcnNpb24gNy4wYy4gIExhc3QgY2hhbmdlOiAyMDA2IE1hciAzMQogCiAKIAkJICBWSU0gUkVGRVJFTkNFIE1BTlVBTCAgICBieSBCcmFtIE1vb2xlbmFhcgpAQCAtMTE5LDEyICsxMTksMTQgQEAKIGxhYmVsIHRvIHN3aXRjaCB0byB0aGF0IHRhYiBwYWdlLiAgQ2xpY2sgd2hlcmUgdGhlcmUgaXMgbm8gbGFiZWwgdG8gZ28gdG8gdGhlCiBuZXh0IHRhYiBwYWdlLiAgfCd0YWJsaW5lJ3wKIAotOnRhYm5bZXh0XQkJCQkJKjp0YWJuKiAqOnRhYm5leHQqICpndCoKLWd0CQlHbyB0byB0aGUgbmV4dCB0YWIgcGFnZS4gIFdyYXBzIGFyb3VuZCBmcm9tIHRoZSBsYXN0IHRvIHRoZQorOnRhYm5bZXh0XQkJCQkqOnRhYm4qICo6dGFibmV4dCogKmd0KgorZ3QJCQkJCSpDVFJMLTxQYWdlRG93bj4qICo8Qy1QYWdlRG93bj4qCis8Qy1QYWdlRG93bj4JR28gdG8gdGhlIG5leHQgdGFiIHBhZ2UuICBXcmFwcyBhcm91bmQgZnJvbSB0aGUgbGFzdCB0byB0aGUKIAkJZmlyc3Qgb25lLgogCiA6dGFibltleHRdIHtjb3VudH0KLXtjb3VudH1ndAlHbyB0byB0YWIgcGFnZSB7Y291bnR9LiAgVGhlIGZpcnN0IHRhYiBwYWdlIGhhcyBudW1iZXIgb25lLgore2NvdW50fWd0CQkJCSpDVFJMLTxQYWdlVXA+KiAqPEMtUGFnZVVwPioKKzxDLVBhZ2VVcD4JR28gdG8gdGFiIHBhZ2Uge2NvdW50fS4gIFRoZSBmaXJzdCB0YWIgcGFnZSBoYXMgbnVtYmVyIG9uZS4KIAogCiA6dGFicFtyZXZpb3VzXQkJCQkqOnRhYnAqICo6dGFicHJldmlvdXMqICpnVCoKQEAgLTE5OCw2ICsyMDAsOCBAQAogd2l0aGluIG9uZSB0YWIgcGFnZS4gIE90aGVyIHRhYiBwYWdlcyBjYW4gc2hvdyBkaWZmZXJlbmNlcyBiZXR3ZWVuIG90aGVyCiBmaWxlcy4KIAorVmFyaWFibGVzIGxvY2FsIHRvIGEgdGFiIHBhZ2Ugc3RhcnQgd2l0aCAidDoiLiB8dGFicGFnZS12YXJpYWJsZXwKKwogVGhlIFRhYkxlYXZlIGFuZCBUYWJFbnRlciBhdXRvY29tbWFuZCBldmVudHMgY2FuIGJlIHVzZWQgdG8gZG8gc29tZXRoaW5nIHdoZW4KIHN3aXRjaGluZyBmcm9tIG9uZSB0YWIgcGFnZSB0byBhbm90aGVyLiAgVGhlIGV4YWN0IG9yZGVyIGRlcGVuZHMgb24gd2hhdCB5b3UKIGFyZSBkb2luZy4gIFdoZW4gY3JlYXRpbmcgYSBuZXcgdGFiIHBhZ2UgdGhpcyB3b3JrcyBhcyBpZiB5b3UgY3JlYXRlIGEgbmV3CmRpZmYgLS1naXQgYS9ydW50aW1lL2RvYy90YWdzIGIvcnVudGltZS9kb2MvdGFncwppbmRleCAzMmUyZjBiLi4zZTJkZTQ4IDEwMDY0NAotLS0gYS9ydW50aW1lL2RvYy90YWdzCisrKyBiL3J1bnRpbWUvZG9jL3RhZ3MKQEAgLTEwNDIsNiArMTA0Miw3IEBACiArK2JhZAllZGl0aW5nLnR4dAkvKisrYmFkKgogKytiaW4JZWRpdGluZy50eHQJLyorK2JpbioKICsrYnVpbHRpbl90ZXJtcwl2YXJpb3VzLnR4dAkvKisrYnVpbHRpbl90ZXJtcyoKKysrZWRpdAllZGl0aW5nLnR4dAkvKisrZWRpdCoKICsrZW5jCWVkaXRpbmcudHh0CS8qKytlbmMqCiArK2ZmCWVkaXRpbmcudHh0CS8qKytmZioKICsrbm9iaW4JZWRpdGluZy50eHQJLyorK25vYmluKgpAQCAtMTY1NSw3ICsxNjU2LDYgQEAKIDQ1LjMJdXNyXzQ1LnR4dAkvKjQ1LjMqCiA0NS40CXVzcl80NS50eHQJLyo0NS40KgogNDUuNQl1c3JfNDUudHh0CS8qNDUuNSoKLTc1NQlzcGVsbC50eHQJLyo3NTUqCiA4ZzgJdmFyaW91cy50eHQJLyo4ZzgqCiA5MC4xCXVzcl85MC50eHQJLyo5MC4xKgogOTAuMgl1c3JfOTAudHh0CS8qOTAuMioKQEAgLTE2NzYsNiArMTY3Niw4IEBACiA6LgljbWRsaW5lLnR4dAkvKjouKgogOi8JY21kbGluZS50eHQJLyo6XC8qCiA6MGZpbGUJZWRpdGluZy50eHQJLyo6MGZpbGUqCis6Mm1hdGNoCXBhdHRlcm4udHh0CS8qOjJtYXRjaCoKKzozbWF0Y2gJcGF0dGVybi50eHQJLyo6M21hdGNoKgogOjouCWNtZGxpbmUudHh0CS8qOjouKgogOjo4CWNtZGxpbmUudHh0CS8qOjo4KgogOjplCWNtZGxpbmUudHh0CS8qOjplKgpAQCAtMjkwOSw4ICsyOTExLDggQEAKIDxDLUxlZnRNb3VzZT4JdGFnc3JjaC50eHQJLyo8Qy1MZWZ0TW91c2U+KgogPEMtTW91c2VEb3duPglzY3JvbGwudHh0CS8qPEMtTW91c2VEb3duPioKIDxDLU1vdXNlVXA+CXNjcm9sbC50eHQJLyo8Qy1Nb3VzZVVwPioKLTxDLVBhZ2VEb3duPglvc19kb3MudHh0CS8qPEMtUGFnZURvd24+KgotPEMtUGFnZVVwPglvc19kb3MudHh0CS8qPEMtUGFnZVVwPioKKzxDLVBhZ2VEb3duPgl0YWJwYWdlLnR4dAkvKjxDLVBhZ2VEb3duPioKKzxDLVBhZ2VVcD4JdGFicGFnZS50eHQJLyo8Qy1QYWdlVXA+KgogPEMtUmlnaHQ+CW1vdGlvbi50eHQJLyo8Qy1SaWdodD4qCiA8Qy1SaWdodE1vdXNlPgl0YWdzcmNoLnR4dAkvKjxDLVJpZ2h0TW91c2U+KgogPENSPgltb3Rpb24udHh0CS8qPENSPioKQEAgLTMxMTgsNiArMzEyMCw4IEBACiBDT01TUEVDCXN0YXJ0aW5nLnR4dAkvKkNPTVNQRUMqCiBDUi11c2VkLWZvci1OTAlwYXR0ZXJuLnR4dAkvKkNSLXVzZWQtZm9yLU5MKgogQ1RSTC02CWVkaXRpbmcudHh0CS8qQ1RSTC02KgorQ1RSTC08UGFnZURvd24+CXRhYnBhZ2UudHh0CS8qQ1RSTC08UGFnZURvd24+KgorQ1RSTC08UGFnZVVwPgl0YWJwYWdlLnR4dAkvKkNUUkwtPFBhZ2VVcD4qCiBDVFJMLUEJY2hhbmdlLnR4dAkvKkNUUkwtQSoKIENUUkwtQglzY3JvbGwudHh0CS8qQ1RSTC1CKgogQ1RSTC1DCXBhdHRlcm4udHh0CS8qQ1RSTC1DKgpAQCAtMzk2MSw2ICszOTY1LDcgQEAKIEU3NTIJc3BlbGwudHh0CS8qRTc1MioKIEU3NTMJc3BlbGwudHh0CS8qRTc1MyoKIEU3NTQJc3BlbGwudHh0CS8qRTc1NCoKK0U3NTUJc3BlbGwudHh0CS8qRTc1NSoKIEU3NTYJc3BlbGwudHh0CS8qRTc1NioKIEU3NTcJb3B0aW9ucy50eHQJLypFNzU3KgogRTc1OAlzcGVsbC50eHQJLypFNzU4KgpAQCAtMzk5NCw2ICszOTk5LDkgQEAKIEU3ODMJc3BlbGwudHh0CS8qRTc4MyoKIEU3ODQJdGFicGFnZS50eHQJLypFNzg0KgogRTc4NQlldmFsLnR4dAkvKkU3ODUqCitFNzg2CWV2YWwudHh0CS8qRTc4NioKK0U3ODcJZGlmZi50eHQJLypFNzg3KgorRTc4OAlhdXRvY21kLnR4dAkvKkU3ODgqCiBFNzkJbWVzc2FnZS50eHQJLypFNzkqCiBFODAJbWVzc2FnZS50eHQJLypFODAqCiBFODAwCWFyYWJpYy50eHQJLypFODAwKgpAQCAtNDQyOCw2ICs0NDM2LDcgQEAKIGFsdC1pbnB1dAlkZWJ1Z2dlci50eHQJLyphbHQtaW5wdXQqCiBhbHRlcm5hdGUtZmlsZQllZGl0aW5nLnR4dAkvKmFsdGVybmF0ZS1maWxlKgogYW1pZ2Etd2luZG93CXN0YXJ0aW5nLnR4dAkvKmFtaWdhLXdpbmRvdyoKK2Fub255bW91cy1mdW5jdGlvbglldmFsLnR4dAkvKmFub255bW91cy1mdW5jdGlvbioKIGFudC52aW0Jc3ludGF4LnR4dAkvKmFudC52aW0qCiBhcAltb3Rpb24udHh0CS8qYXAqCiBhcGFjaGUudmltCXN5bnRheC50eHQJLyphcGFjaGUudmltKgpAQCAtNTM5OCw2ICs1NDA3LDEwIEBACiBnOm5ldHJ3X3VzZV9udF9yY3AJcGlfbmV0cncudHh0CS8qZzpuZXRyd191c2VfbnRfcmNwKgogZzpuZXRyd193aW45NWZ0cAlwaV9uZXRydy50eHQJLypnOm5ldHJ3X3dpbjk1ZnRwKgogZzpuZXRyd193aW5zaXplCXBpX25ldHJ3LnR4dAkvKmc6bmV0cndfd2luc2l6ZSoKK2c6dGFyX2Jyb3dzZW9wdGlvbnMJcGlfdGFyLnR4dAkvKmc6dGFyX2Jyb3dzZW9wdGlvbnMqCitnOnRhcl9jbWQJcGlfdGFyLnR4dAkvKmc6dGFyX2NtZCoKK2c6dGFyX3JlYWRvcHRpb25zCXBpX3Rhci50eHQJLypnOnRhcl9yZWFkb3B0aW9ucyoKK2c6dGFyX3dyaXRlb3B0aW9ucwlwaV90YXIudHh0CS8qZzp0YXJfd3JpdGVvcHRpb25zKgogZzp2YXIJZXZhbC50eHQJLypnOnZhcioKIGc7CW1vdGlvbi50eHQJLypnOyoKIGc8CW1lc3NhZ2UudHh0CS8qZzwqCkBAIC02MDUyLDYgKzYwNjUsNyBAQAogbWF0Y2goKQlldmFsLnR4dAkvKm1hdGNoKCkqCiBtYXRjaC1oaWdobGlnaHQJcGF0dGVybi50eHQJLyptYXRjaC1oaWdobGlnaHQqCiBtYXRjaC1wYXJlbnMJdGlwcy50eHQJLyptYXRjaC1wYXJlbnMqCittYXRjaGFyZygpCWV2YWwudHh0CS8qbWF0Y2hhcmcoKSoKIG1hdGNoZW5kKCkJZXZhbC50eHQJLyptYXRjaGVuZCgpKgogbWF0Y2hpdC1pbnN0YWxsCXVzcl8wNS50eHQJLyptYXRjaGl0LWluc3RhbGwqCiBtYXRjaGxpc3QoKQlldmFsLnR4dAkvKm1hdGNobGlzdCgpKgpAQCAtNjQyNiw2ICs2NDQwLDcgQEAKIHBhcHAudmltCXN5bnRheC50eHQJLypwYXBwLnZpbSoKIHBhcmFncmFwaAltb3Rpb24udHh0CS8qcGFyYWdyYXBoKgogcGFzY2FsLnZpbQlzeW50YXgudHh0CS8qcGFzY2FsLnZpbSoKK3BhdGhzaG9ydGVuKCkJZXZhbC50eHQJLypwYXRoc2hvcnRlbigpKgogcGF0dGVybglwYXR0ZXJuLnR4dAkvKnBhdHRlcm4qCiBwYXR0ZXJuLWF0b21zCXBhdHRlcm4udHh0CS8qcGF0dGVybi1hdG9tcyoKIHBhdHRlcm4tbXVsdGktYnl0ZQlwYXR0ZXJuLnR4dAkvKnBhdHRlcm4tbXVsdGktYnl0ZSoKQEAgLTY2MDcsOCArNjYyMiw4IEBACiByZWRvCXVuZG8udHh0CS8qcmVkbyoKIHJlZG8tcmVnaXN0ZXIJdW5kby50eHQJLypyZWRvLXJlZ2lzdGVyKgogcmVmCWludHJvLnR4dAkvKnJlZioKLXJlZi10b2MJaGVscC50eHQJLypyZWYtdG9jKgogcmVmZXJlbmNlCWludHJvLnR4dAkvKnJlZmVyZW5jZSoKK3JlZmVyZW5jZV90b2MJaGVscC50eHQJLypyZWZlcmVuY2VfdG9jKgogcmVnZXhwCXBhdHRlcm4udHh0CS8qcmVnZXhwKgogcmVnZXhwLWNoYW5nZXMtNS40CXZlcnNpb241LnR4dAkvKnJlZ2V4cC1jaGFuZ2VzLTUuNCoKIHJlZ2lzdGVyCXNwb25zb3IudHh0CS8qcmVnaXN0ZXIqCkBAIC02ODc2LDkgKzY4OTEsNyBAQAogc3BlbGwtYWZmaXgtY29tbWVudAlzcGVsbC50eHQJLypzcGVsbC1hZmZpeC1jb21tZW50Kgogc3BlbGwtYWZmaXgtZmxhZ3MJc3BlbGwudHh0CS8qc3BlbGwtYWZmaXgtZmxhZ3MqCiBzcGVsbC1hZmZpeC1tYnl0ZQlzcGVsbC50eHQJLypzcGVsbC1hZmZpeC1tYnl0ZSoKLXNwZWxsLWFmZml4LW5vY29tcAlzcGVsbC50eHQJLypzcGVsbC1hZmZpeC1ub2NvbXAqCiBzcGVsbC1hZmZpeC1ub3Qtc3VwcG9ydGVkCXNwZWxsLnR4dAkvKnNwZWxsLWFmZml4LW5vdC1zdXBwb3J0ZWQqCi1zcGVsbC1hZmZpeC1yYXJlCXNwZWxsLnR4dAkvKnNwZWxsLWFmZml4LXJhcmUqCiBzcGVsbC1hZmZpeC12aW0Jc3BlbGwudHh0CS8qc3BlbGwtYWZmaXgtdmltKgogc3BlbGwtY29tcG91bmQJc3BlbGwudHh0CS8qc3BlbGwtY29tcG91bmQqCiBzcGVsbC1kaWMtZm9ybWF0CXNwZWxsLnR4dAkvKnNwZWxsLWRpYy1mb3JtYXQqCkBAIC02OTEzLDYgKzY5MjYsNyBAQAogc3FsLWNvbXBsZXRpb24tY29sdW1ucwlzcWwudHh0CS8qc3FsLWNvbXBsZXRpb24tY29sdW1ucyoKIHNxbC1jb21wbGV0aW9uLWN1c3RvbWl6YXRpb24Jc3FsLnR4dAkvKnNxbC1jb21wbGV0aW9uLWN1c3RvbWl6YXRpb24qCiBzcWwtY29tcGxldGlvbi1keW5hbWljCXNxbC50eHQJLypzcWwtY29tcGxldGlvbi1keW5hbWljKgorc3FsLWNvbXBsZXRpb24tZmlsZXR5cGVzCXNxbC50eHQJLypzcWwtY29tcGxldGlvbi1maWxldHlwZXMqCiBzcWwtY29tcGxldGlvbi1tYXBzCXNxbC50eHQJLypzcWwtY29tcGxldGlvbi1tYXBzKgogc3FsLWNvbXBsZXRpb24tcHJvY2VkdXJlcwlzcWwudHh0CS8qc3FsLWNvbXBsZXRpb24tcHJvY2VkdXJlcyoKIHNxbC1jb21wbGV0aW9uLXN0YXRpYwlzcWwudHh0CS8qc3FsLWNvbXBsZXRpb24tc3RhdGljKgpAQCAtNzAxNSw2ICs3MDI5LDcgQEAKIHN5c3RlbS12aW1yYwlzdGFydGluZy50eHQJLypzeXN0ZW0tdmltcmMqCiBzfgljaGFuZ2UudHh0CS8qc34qCiB0CW1vdGlvbi50eHQJLyp0KgordDp2YXIJZXZhbC50eHQJLyp0OnZhcioKIHRfIzIJdGVybS50eHQJLyp0XyMyKgogdF8jNAl0ZXJtLnR4dAkvKnRfIzQqCiB0XyUxCXRlcm0udHh0CS8qdF8lMSoKQEAgLTcxNzQsNiArNzE4OSw3IEBACiB0YWItcGFnZS1vdGhlcgl0YWJwYWdlLnR4dAkvKnRhYi1wYWdlLW90aGVyKgogdGFibGluZS1tZW51CXRhYnBhZ2UudHh0CS8qdGFibGluZS1tZW51KgogdGFicGFnZQl0YWJwYWdlLnR4dAkvKnRhYnBhZ2UqCit0YWJwYWdlLXZhcmlhYmxlCWV2YWwudHh0CS8qdGFicGFnZS12YXJpYWJsZSoKIHRhYnBhZ2UudHh0CXRhYnBhZ2UudHh0CS8qdGFicGFnZS50eHQqCiB0YWJwYWdlYnVmbGlzdCgpCWV2YWwudHh0CS8qdGFicGFnZWJ1Zmxpc3QoKSoKIHRhYnBhZ2VucigpCWV2YWwudHh0CS8qdGFicGFnZW5yKCkqCkBAIC03MjEwLDYgKzcyMjYsNyBAQAogdGFyLWNvcHlyaWdodAlwaV90YXIudHh0CS8qdGFyLWNvcHlyaWdodCoKIHRhci1oaXN0b3J5CXBpX3Rhci50eHQJLyp0YXItaGlzdG9yeSoKIHRhci1tYW51YWwJcGlfdGFyLnR4dAkvKnRhci1tYW51YWwqCit0YXItb3B0aW9ucwlwaV90YXIudHh0CS8qdGFyLW9wdGlvbnMqCiB0YXItdXNhZ2UJcGlfdGFyLnR4dAkvKnRhci11c2FnZSoKIHRhci50eHQJcGlfdGFyLnR4dAkvKnRhci50eHQqCiB0Y2wJaWZfdGNsLnR4dAkvKnRjbCoKQEAgLTc2NjMsNiArNzY4MCw3IEBACiB3aW4xNi12YXJpb3VzCWd1aV93MTYudHh0CS8qd2luMTYtdmFyaW91cyoKIHdpbjMyCW9zX3dpbjMyLnR4dAkvKndpbjMyKgogd2luMzItIXN0YXJ0CWd1aV93MzIudHh0CS8qd2luMzItIXN0YXJ0Kgord2luMzItUEFUSAlvc193aW4zMi50eHQJLyp3aW4zMi1QQVRIKgogd2luMzItY29sb3JzCWd1aV93MzIudHh0CS8qd2luMzItY29sb3JzKgogd2luMzItY29tcGlsaW5nCW9zX3dpbjMyLnR4dAkvKndpbjMyLWNvbXBpbGluZyoKIHdpbjMyLWN1cmRpcglvc193aW4zMi50eHQJLyp3aW4zMi1jdXJkaXIqCkBAIC03NjgyLDYgKzc3MDAsNyBAQAogd2luMzJzCW9zX3dpbjMyLnR4dAkvKndpbjMycyoKIHdpbmJ1Zm5yKCkJZXZhbC50eHQJLyp3aW5idWZucigpKgogd2luY29sKCkJZXZhbC50eHQJLyp3aW5jb2woKSoKK3dpbmRvdwl3aW5kb3dzLnR4dAkvKndpbmRvdyoKIHdpbmRvdy1jb250ZW50cwlpbnRyby50eHQJLyp3aW5kb3ctY29udGVudHMqCiB3aW5kb3ctZXhpdAllZGl0aW5nLnR4dAkvKndpbmRvdy1leGl0Kgogd2luZG93LW1vdmUtY3Vyc29yCXdpbmRvd3MudHh0CS8qd2luZG93LW1vdmUtY3Vyc29yKgpkaWZmIC0tZ2l0IGEvcnVudGltZS9kb2MvdG9kby50eHQgYi9ydW50aW1lL2RvYy90b2RvLnR4dAppbmRleCBlNWU5MzRiLi43NWMwNTIyIDEwMDY0NAotLS0gYS9ydW50aW1lL2RvYy90b2RvLnR4dAorKysgYi9ydW50aW1lL2RvYy90b2RvLnR4dApAQCAtMSw0ICsxLDQgQEAKLSp0b2RvLnR4dCogICAgICBGb3IgVmltIHZlcnNpb24gNy4wYy4gIExhc3QgY2hhbmdlOiAyMDA2IE1hciAyOQorKnRvZG8udHh0KiAgICAgIEZvciBWaW0gdmVyc2lvbiA3LjBjLiAgTGFzdCBjaGFuZ2U6IDIwMDYgQXByIDA1CiAKIAogCQkgIFZJTSBSRUZFUkVOQ0UgTUFOVUFMCSAgYnkgQnJhbSBNb29sZW5hYXIKQEAgLTMwLDIyICszMCwyMiBAQAogCQkJCQkJCSprbm93bi1idWdzKgogLS0tLS0tLS0tLS0tLS0tLS0tLS0gS25vd24gYnVncyBhbmQgY3VycmVudCB3b3JrIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLVdoZW4gInNlYXJjaCIgaXMgaW4gJ2ZvbGRvcGVuJyBoYXZlIFtzIGFuZCBdcyBvcGVuIGZvbGRzLgotCiBOZXcgSHVuZ2FyaWFuIGRpY3Rpb25hcnkuIChMYWNpIE5lbWV0aCkKLSAgICB0ZXN0IENPTVBPVU5ERk9SQklERkxBRwotICAgIGltcGxlbWVudCB1c2Ugb2YgQ09NUE9VTkRQRVJNSVRGTEFHCi0gICAgaW1wbGVtZW50IHVzZSBvZiBDSEVDS0NPTVBPVU5EKiBmbGFncywgPGNvbXBvcHRpb25zPgotICAgIGltcGxlbWVudCB1c2luZyBDSEVDS0NPTVBPVU5EUEFUVEVSTjogbWF0Y2ggd29yZHMgd2l0aCBzbF9jb21wcGF0W10uCi0gICAgZXhwbGFpbiB0aGUgdXNlIG9mIGFmZml4IGZsYWdzLCByZXBsYWNlIHxzcGVsbC1hZmZpeC1yYXJlfAorLSAgIFN1cHBvcnQgZmxhZ3Mgb24gYSBzdWZmaXggdXNlZCBmb3Igc2Vjb25kIGxldmVsIGFmZml4ZXMuCisgICAgVGhlIGZsYWdzIG1heSBhbHNvIGJlIHVzZWQgZm9yIGNvbXBvdW5kaW5nLiAgRGVmYXVsdCBpcyBhbiBPUgorICAgIG1lY2hhbmlzbSB3aXRoIHRoZSBmbGFncyBvZiB0aGUgd29yZC4KKyAgICBBZGRpbmcgImNvbXBzZXQiIGZsYWcgb24gdGhlIGFmZml4ZXMgbWVhbnMgdGhlIGNvbXBvdW5kIGZsYWdzIG9mIHRoZSB3b3JkCisgICAgYXJlIG5vdCB1c2VkPwogCi0tICAgU2V0IHVzZXIgdmFyaWFibGVzIHRvIHRoZSBuYW1lcyBvZiB0aGUgYWN0dWFsbHkgdXNlZCB1c2VyIHZpbXJjIGZpbGUsCi0gICAgdGhlIGZpcnN0IGRpcmVjdG9yeSBsb29rZWQgZm9yIHVzZXIgcGx1Z2lucy9zeW50YXggZmlsZXMuCi0gICAgJE1ZVklNUkMgZm9yIC52aW1yYywgJE1ZR1ZJTVJDIGZvciAuZ3ZpbXJjLCAkTVlSVU5USU1FL3BsdWdpbiBmb3IKLSAgICBydW50aW1lIGZpbGVzPwotICAgIEFsc286IHdoZW4gdGhlIGVudmlyb25tZW50IHZhcmlhYmxlIGV4aXN0cywgdXNlIGl0LiAgSWYgaXQgZG9lc24ndAotICAgIGV4aXN0LCBzZXQgaXQuICBSZXF1aXJlcyBnb29kIG5hbWVzOiAkVklNX1VTRVJfVklNUkMgICRWSU1fVVNFUl9ESVIKLSAgICBBZGQgYSBtZW51IGl0ZW0gIlByZWZlcmVuY2VzIiB0aGF0IGRvZXMgInNwICRNWVZJTVJDIi4KKy0gICBpbXBsZW1lbnQgdXNlIG9mIENIRUNLQ09NUE9VTkQqIGZsYWdzLCA8Y29tcG9wdGlvbnM+IGluIC5zcGwgZmlsZQorCistICAgQWRkIENIRUNLQ09NUE9VTkRDQVNFOiB3aGVuIGNvbXBvdW5kaW5nIG1ha2UgbGVhZGluZyBjYXBpdGFsIGxvd2VyIGNhc2UuCisgICAgSG93IGlzIGl0IHN1cHBvc2VkIHRvIHdvcms/CisKKy0gICBpbXBsZW1lbnQgdXNpbmcgQ0hFQ0tDT01QT1VORFBBVFRFUk46IG1hdGNoIHdvcmRzIHdpdGggc2xfY29tcHBhdFtdLgorCitPYmV5ICdzd2l0Y2hidWYnICJ1c2VvcGVuIiB2YWx1ZSBmb3Igd2luZG93cyBpbiBvdGhlciB0YWJzLCBlLmcuIGZvciA6c2J1ZmZlci4KK09yIHVzZSBhbm90aGVyIHZhbHVlLCBlLmcuLCAidXNldGFiIj8KIAogQWRkIG1vcmUgdGVzdHMgZm9yIGFsbCBuZXcgZnVuY3Rpb25hbGl0eSBpbiBWaW0gNy4gIEVzcGVjaWFsbHkgbmV3IGZ1bmN0aW9ucy4KIApAQCAtNjQxLDcgKzY0MSw3IEBACiAgICAgVW54VXRpbHMuemlwIGFyY2hpdmUuCiAgICAgQWx0ZXJuYXRlIG9uZTogaHR0cDovL3d3dy5wcmFtb2R4LjIwbS5jb20vdGVlX2Zvcl93aW4zMi5odG0sIGJ1dCBXYWx0ZXIKICAgICBCcmlzY29lIHNheXMgaXQncyBub3QgYXMgZ29vZC4KLTggICAnZmlsbGNoYXJzJyBkb2Vzbid0IHdvcmsgZm9yIG11bHRpLWJ5dGUgY2hhcmFjdGVycy4KKzggICAic3RsIiBhbmQgInN0bG5jIiBpbiAnZmlsbGNoYXJzJyBkb24ndCB3b3JrIGZvciBtdWx0aS1ieXRlIGNoYXJhY3RlcnMuCiA4ICAgQ29tbWFuZCBsaW5lIGNvbXBsZXRpb246IGJ1ZmZlcnMgImZvby50eHQiIGFuZCAiLi4vYi9mb28udHh0IiwgY29tcGxldGluZwogICAgICI6YnVmIGZvbzxUYWI+IiBkb2Vzbid0IGZpbmQgdGhlIHNlY29uZCBvbmUuIChHZW9yZ2UgVi4gUmVpbGx5KQogNyAgIE91dHB1dCBmb3IgIjpzY3JpcHRuYW1lcyIgYW5kICI6YnJlYWtsaXN0IiBzaG91bGQgc2hvcnRlbiB0aGUgZmlsZSBuYW1lczoKQEAgLTEwOTAsNyArMTA5MCw2IEBACiAKIAogVGFiIHBhZ2VzOgotOSAgIFdpbjMyIEdVSTogbWVudSBmb3IgdGFiIHBhZ2VzIGxpbmUuCiA5ICAgR1VJIGltcGxlbWVudGF0aW9uIGZvciB0aGUgdGFiIHBhZ2VzIGxpbmUgZm9yIG90aGVyIHN5c3RlbXMuCiA4ICAgTWFrZSBHVUkgbWVudSBpbiB0YWIgcGFnZXMgbGluZSBjb25maWd1cmFibGUuICBMaWtlIHRoZSBwb3B1cCBtZW51LgogOCAgIHRhYiBwYWdlcyBpbiB0aGUgc2Vzc2lvbiBmaWxlLCBpZiAidGFicGFnZXMiIGluICdzZXNzaW9ub3B0aW9ucycKQEAgLTExMDYsMjggKzExMDUsMTQgQEAKIAogCiBTcGVsbCBjaGVja2luZzoKLS0gICBJbXBsZW1lbnQgQ09NUE9VTkRGT1JCSURGTEFHIC4KIC0gICBDaGVjayBvdXQgSHVuc3BlbGwgMS4xLjQuCiAgICAgVGhlIG1hbnBhZ2UgZG9lc24ndCBtYXRjaCB0aGUgc291cmNlIGNvZGUuLi4KICAgICBUcnkgdG8gbWFrZSB0aGUgbmV3bHkgYWRkZWQgZmVhdHVyZXMgY29tcGF0aWJsZS4KICAgICB3aGF0IGRvZXMgTUFYTkdSQU1TVUdTIGRvPwogICAgIGlzIENPTVBMRVhQUkVGSVhFUyBuZWNlc3Nhcnkgd2hlbiB3ZSBoYXZlIGZsYWdzIGZvciBhZmZpeGVzPwotLSAgIExvb2sgaW50byBIdW5nYXJpYW4gZGljdGlvbmFyeTogaHVfSFUtMS4wLnRhci5negotICAgIFRoaXMgb25lIGRvZXNuJ3QgbWF0Y2ggd2l0aCBIdW5zcGVsbCAxLjEuNC4KLS0gICBBZGQgQ0hFQ0tDT01QT1VORENBU0U6IHdoZW4gY29tcG91bmRpbmcgbWFrZSBsZWFkaW5nIGNhcGl0YWwgbG93ZXIgY2FzZS4KLSAgICBIb3cgaXMgaXQgc3VwcG9zZWQgdG8gd29yaz8KLS0gICBXaGVuIGNvbXBvdW5kaW5nIEh1bnNwZWxsIGRvZXNuJ3QgYWxsb3cgYWZmaXhlcyBpbnNpZGUgdGhlIGNvbXBvdW5kIHdvcmQsCi0gICAgb25seSBiZWZvcmUgYW5kIGFmdGVyIGl0LiAgQ09NUE9VTkRQRVJNSVRGTEFHIGNhbiBiZSB1c2VkIHRvIGFsbG93IGl0LgotICAgIENoZWNrIE15c3BlbGwgYW5kIEFzcGVsbCBpZiB0aGV5IGFsc28gd29yayB0aGlzIHdheS4KLSAgICBUaHVzIGEgd29yZCArIHN1ZmZpeCBuZWVkcyBhIGZsYWcgdGhhdCBpdCBjYW4ndCBiZSB1c2VkIHdpdGggYSBmb2xsb3dpbmcKLSAgICBjb21wb3VuZCwgYW5kIHdvcmQgKyBwcmVmaXggY2FuJ3QgYmUgYWZ0ZXIgYW5vdGhlciB3b3JkIGluIGEgY29tcG91bmQuCistICAgQWRkIGEgY29tbWFuZCB0aGUgcmVwZWF0cyBdcyBhbmQgej0sIHNob3dpbmcgdGhlIG1pc3NwZWxsZWQgd29yZCBpbiBpdHMKKyAgICBjb250ZXh0LiAgVGh1cyB0byBzcGVsbC1jaGVjayBhIHdob2xlIGZpbGUuCiAtICAgc3VnZ2VzdGlvbiBmb3IgIktHIiB0byAia2ciIHdoZW4gaXQncyBrZWVwY2FzZS4KLS0gICBTdXBwb3J0IGZsYWdzIG9uIGEgc3VmZml4LiAgVXNlZCBmb3Igc2Vjb25kIGxldmVsIGFmZml4ZXMsIHJhcmUgYW5kCi0gICAgbm9jb21wLiAgVGhlIGZsYWdzIG1heSBhbHNvIGJlIHVzZWQgZm9yIGNvbXBvdW5kaW5nLiAgRGVmYXVsdCBpcyBhbiBPUgotICAgIG1lY2hhbmlzbSB3aXRoIHRoZSBmbGFncyBvZiB0aGUgd29yZC4gIEFkZGluZyAiY29tcHNldCIgb24gdGhlIGFmZml4ZXMKLSAgICBtZWFucyB0aGUgY29tcG91bmQgZmxhZ3Mgb2YgdGhlIHdvcmQgYXJlIG5vdCB1c2VkLgotICAgIEluc3RlYWQgb2YgIlNGWCBhIDAgYWRkL0ZMQUdTIC4iIHdlIGNvdWxkIHVzZSAiU0ZYIGEgMCBhZGQgLiAvRkxBR1MiIChvcgotICAgIHN1cHBvcnQgYm90aCkuCiAtICAgU3VwcG9ydCBicmVha3BvaW50IGNoYXJhY3RlciA/IDB4YjcgYW5kIGlnbm9yZSBpdD8gIE1ha2VzIGl0IHBvc3NpYmxlIHRvCiAgICAgdXNlIHNhbWUgd29yZGxpc3QgZm9yIGh5cGhlbmF0aW9uLgogLSAgIENvbXBvdW5kIHdvcmQgaXMgYWNjZXB0ZWQgaWYgbnIgb2Ygd29yZHMgaXMgPD0gQ09NUE9VTkRXT1JETUFYIE9SIG5yIG9mCkBAIC0xMzM1LDYgKzEzMjAsOCBAQAogICAgIGNsdXN0ZXIgY2FuIGJlIGFkZGVkIHRvIGV4aXN0aW5nIHN5bnRheCBpdGVtcy4KIDggICBDIHN5bnRheDogRG9uJ3QgaGlnaGxpZ2h0IHt9IGFzIGVycm9ycyBpbnNpZGUgKCkgd2hlbiB1c2VkIGxpa2UgdGhpczoKICAgICAiKHsgc29tZXRoaW5nIH0pIiwgb2Z0ZW4gdXNlZCBpbiBHQ0MgY29kZS4KKzcgICBBZGQgYSAic3RhcnRncm91cCIgdG8gYSByZWdpb24uICBVc2VkIGxpa2UgIm5leHRncm91cCIgaW5zaWRlIHRoZSByZWdpb24sCisgICAgcHJlZmVycmVkIGl0ZW0gYXQgdGhlIHN0YXJ0IG9mIHRoZSByZWdpb24uIChDaGFybGVzIENhbXBiZWxsKQogOCAgIFdoZW4gZWRpdGluZyBhIG5ldyBmaWxlIHdpdGhvdXQgYSBuYW1lIGFuZCBnaXZpbmcgaXQgYSBuYW1lIChieSB3cml0aW5nCiAgICAgaXQpIGFuZCAnZmlsZXR5cGUnIGlzIG5vdCBzZXQsIGRldGVjdCB0aGUgZmlsZXR5cGUuICBBdm9pZCBkb2luZyBpdCBmb3IKICAgICAiOndxIGZpbGUiLgpAQCAtMjI0NSw2ICsyMjMyLDEyIEBACiAKIAogJ2NpbmRlbnQnLCAnc21hcnRpbmRlbnQnOgorOCAgIEFsaWduaW5nIHdpdGggImUiIG9mICJlcnJvciIgYmVjYXVzZSBvZiB0aGUgJzonIGRvZXNuJ3QgbWFrZSBzZW5zZToKKwljb3V0IDw8ICggIGEgPyBmKCkgOiAiZXJyb3IiKQorOCAgIFdyb25nIGluZGVudCB3aXRoIGRlZmF1bHQgc2V0dGluZ3Mgd2hlbiAoZGwpIGFwcGVhcnMgaW4gdGhpcyBsaW5lOgorCSAgICAoZGwpLT5iYXJiYXIoCisJCQkgZGspOworICAgIFdoZW4gIihkbCkiIGlzIGNoYW5nZWQgdG8gImRsIiBpdCB1c2VzICdzdycgKiAyIGFzIGV4cGVjdGVkLgogOCAgIFdyb25nIGluZGVudCBiZWxvdyA/IDogd2l0aCAoKToKIAlpZiAoKGEgPyAoYikgOiBjKSAhPSAwKQogCQkgICAgICAgYWxpZ25zIHdpdGggIjoiLgpkaWZmIC0tZ2l0IGEvcnVudGltZS9kb2MvdXNyXzA1LnR4dCBiL3J1bnRpbWUvZG9jL3Vzcl8wNS50eHQKaW5kZXggZTJjNjIwNy4uMDkwNmRjNyAxMDA2NDQKLS0tIGEvcnVudGltZS9kb2MvdXNyXzA1LnR4dAorKysgYi9ydW50aW1lL2RvYy91c3JfMDUudHh0CkBAIC0xLDQgKzEsNCBAQAotKnVzcl8wNS50eHQqCUZvciBWaW0gdmVyc2lvbiA3LjBjLiAgTGFzdCBjaGFuZ2U6IDIwMDYgTWFyIDI0CisqdXNyXzA1LnR4dCoJRm9yIFZpbSB2ZXJzaW9uIDcuMGMuICBMYXN0IGNoYW5nZTogMjAwNiBBcHIgMDIKIAogCQkgICAgIFZJTSBVU0VSIE1BTlVBTCAtIGJ5IEJyYW0gTW9vbGVuYWFyCiAKQEAgLTI1LDI3ICsyNSwyNyBAQAogKjA1LjEqCVRoZSB2aW1yYyBmaWxlCQkJCQkqdmltcmMtaW50cm8qCiAKIFlvdSBwcm9iYWJseSBnb3QgdGlyZWQgb2YgdHlwaW5nIGNvbW1hbmRzIHRoYXQgeW91IHVzZSB2ZXJ5IG9mdGVuLiAgVG8gc3RhcnQKLXdpdGggYWxsIHlvdXIgZmF2b3JpdGUgb3B0aW9uIHNldHRpbmdzIGFuZCBtYXBwaW5ncywgeW91IHdyaXRlIHRoZW0gaW4gd2hhdCBpcwotY2FsbGVkIHRoZSB2aW1yYyBmaWxlLiAgVmltIHJlYWRzIHRoaXMgZmlsZSB3aGVuIGl0IHN0YXJ0cyB1cC4KK1ZpbSB3aXRoIGFsbCB5b3VyIGZhdm9yaXRlIG9wdGlvbiBzZXR0aW5ncyBhbmQgbWFwcGluZ3MsIHlvdSB3cml0ZSB0aGVtIGluCit3aGF0IGlzIGNhbGxlZCB0aGUgdmltcmMgZmlsZS4gIFZpbSBleGVjdXRlcyB0aGUgY29tbWFuZHMgaW4gdGhpcyBmaWxlIHdoZW4gaXQKK3N0YXJ0cyB1cC4KIAotSWYgeW91IGhhdmUgdHJvdWJsZSBmaW5kaW5nIHlvdXIgdmltcmMgZmlsZSwgdXNlIHRoaXMgY29tbWFuZDogPgorSWYgeW91IGFscmVhZHkgaGF2ZSBhIHZpbXJjIGZpbGUgKGUuZy4sIHdoZW4geW91ciBzeXNhZG1pbiBoYXMgb25lIHNldHVwIGZvcgoreW91KSwgeW91IGNhbiBlZGl0IGl0IHRoaXMgd2F5OiA+CiAKLQk6c2NyaXB0bmFtZXMKKwk6ZWRpdCAkTVlWSU1SQwogCi1PbmUgb2YgdGhlIGZpcnN0IGZpbGVzIGluIHRoZSBsaXN0IHNob3VsZCBiZSBjYWxsZWQgIi52aW1yYyIgb3IgIl92aW1yYyIgYW5kCi1pcyBsb2NhdGVkIGluIHlvdXIgaG9tZSBkaXJlY3RvcnkuCi0gICBJZiB5b3UgZG9uJ3QgaGF2ZSBhIHZpbXJjIGZpbGUgeWV0LCBzZWUgfHZpbXJjfCB0byBmaW5kIG91dCB3aGVyZSB5b3UgY2FuCitJZiB5b3UgZG9uJ3QgaGF2ZSBhIHZpbXJjIGZpbGUgeWV0LCBzZWUgfHZpbXJjfCB0byBmaW5kIG91dCB3aGVyZSB5b3UgY2FuCiBjcmVhdGUgYSB2aW1yYyBmaWxlLiAgQWxzbywgdGhlICI6dmVyc2lvbiIgY29tbWFuZCBtZW50aW9ucyB0aGUgbmFtZSBvZiB0aGUKICJ1c2VyIHZpbXJjIGZpbGUiIFZpbSBsb29rcyBmb3IuCiAKLUZvciBVbml4IHRoaXMgZmlsZSBpcyBhbHdheXMgdXNlZDogPgorRm9yIFVuaXggYW5kIE1hY2ludG9zaCB0aGlzIGZpbGUgaXMgYWx3YXlzIHVzZWQgYW5kIGlzIHJlY29tbWVuZGVkOgogCi0Jfi8udmltcmMKKwl+Ly52aW1yYyB+CiAKLUZvciBNUy1ET1MgYW5kIE1TLVdpbmRvd3MgaXQgaXMgbW9zdGx5IG9uZSBvZiB0aGVzZTogPgorRm9yIE1TLURPUyBhbmQgTVMtV2luZG93cyB5b3UgY2FuIHVzZSBvbmUgb2YgdGhlc2U6CiAKLQkkSE9NRS9fdmltcmMKLQkkVklNL192aW1yYworCSRIT01FL192aW1yYyB+CisJJFZJTS9fdmltcmMgfgogCiBUaGUgdmltcmMgZmlsZSBjYW4gY29udGFpbiBhbGwgdGhlIGNvbW1hbmRzIHRoYXQgeW91IHR5cGUgYWZ0ZXIgYSBjb2xvbi4gIFRoZQogbW9zdCBzaW1wbGUgb25lcyBhcmUgZm9yIHNldHRpbmcgb3B0aW9ucy4gIEZvciBleGFtcGxlLCBpZiB5b3Ugd2FudCBWaW0gdG8KZGlmZiAtLWdpdCBhL3J1bnRpbWUvZG9jL3Vzcl8yNC50eHQgYi9ydW50aW1lL2RvYy91c3JfMjQudHh0CmluZGV4IDM4NWJjN2UuLjg1MjFkNTkgMTAwNjQ0Ci0tLSBhL3J1bnRpbWUvZG9jL3Vzcl8yNC50eHQKKysrIGIvcnVudGltZS9kb2MvdXNyXzI0LnR4dApAQCAtMSw0ICsxLDQgQEAKLSp1c3JfMjQudHh0KglGb3IgVmltIHZlcnNpb24gNy4wYy4gIExhc3QgY2hhbmdlOiAyMDA1IEFwciAwMQorKnVzcl8yNC50eHQqCUZvciBWaW0gdmVyc2lvbiA3LjBjLiAgTGFzdCBjaGFuZ2U6IDIwMDYgQXByIDAyCiAKIAkJICAgICBWSU0gVVNFUiBNQU5VQUwgLSBieSBCcmFtIE1vb2xlbmFhcgogCkBAIC0yMzIsNiArMjMyLDMyIEBACiBUaGUgcmVzdWx0cyBkZXBlbmQgb24gd2hhdCBpcyBmb3VuZCBpbiB5b3VyIGZpbGUgc3lzdGVtLCBvZiBjb3Vyc2UuICBUaGUKIG1hdGNoZXMgYXJlIHNvcnRlZCBhbHBoYWJldGljYWxseS4KIAorCitDT01QTEVUSU5HIElOIFNPVVJDRSBDT0RFCisKK1NvdXJjZSBjb2RlIGZpbGVzIGFyZSB3ZWxsIHN0cnVjdHVyZWQuICBUaGF0IG1ha2VzIGl0IHBvc3NpYmxlIHRvIGRvCitjb21wbGV0aW9uIGluIGFuIGludGVsbGlnZW50IHdheS4gIEluIFZpbSB0aGlzIGlzIGNhbGxlZCBPbW5pIGNvbXBsZXRpb24uICBJbgorc29tZSBvdGhlciBlZGl0b3JzIGl0J3MgY2FsbGVkIGludGVsbGlzZW5zZSwgYnV0IHRoYXQgaXMgYSB0cmFkZW1hcmsuCisKK1RoZSBrZXkgdG8gT21uaSBjb21wbGV0aW9uIGlzIENUUkwtWCBDVFJMLU8uICBPYnZpb3VzbHkgdGhlIE8gc3RhbmRzIGZvciBPbW5pCitoZXJlLCBzbyB0aGF0IHlvdSBjYW4gcmVtZW1iZXIgaXQgZWFzaWVyLiAgTGV0J3MgdXNlIGFuIGV4YW1wbGUgZm9yIGVkaXRpbmcgQworc291cmNlOgorCisJeyB+CisJICAgIHN0cnVjdCBmb28gKnA7IH4KKwkgICAgcC0+IH4KKworVGhlIGN1cnNvciBpcyBhZnRlciAicC0+Ii4gIE5vdyB0eXBlIENUUkwtWCBDVFJMLU8uICBWaW0gd2lsbCBvZmZlciB5b3UgYSBsaXN0CitvZiBhbHRlcm5hdGl2ZXMsIHdoaWNoIGFyZSB0aGUgaXRlbXMgdGhhdCAic3RydWN0IGZvbyIgY29udGFpbnMuICBUaGF0IGlzCitxdWl0ZSBkaWZmZXJlbnQgZnJvbSB1c2luZyBDVFJMLVAsIHdoaWNoIHdvdWxkIGNvbXBsZXRlIGFueSB3b3JkLCB3aGlsZSBvbmx5CittZW1iZXJzIG9mICJzdHJ1Y3QgZm9vIiBhcmUgdmFsaWQgaGVyZS4KKworRm9yIE9tbmkgY29tcGxldGlvbiB0byB3b3JrIHlvdSBtYXkgbmVlZCB0byBkbyBzb21lIHNldHVwLiAgRm9yIEMgY29kZSB5b3UKK25lZWQgdG8gY3JlYXRlIGEgdGFncyBmaWxlIGFuZCBzZXQgdGhlICd0YWdzJyBvcHRpb24uICBUaGF0IGlzIGV4cGxhaW5lZAorfGZ0LWMtb21uaXwuICBGb3Igb3RoZXIgZmlsZXR5cGVzIHlvdSBtYXkgbmVlZCB0byBkbyBzb21ldGhpbmcgc2ltaWxhciwgbG9vaworYmVsb3cgfGNvbXBsLW9tbmktZmlsZXR5cGVzfC4gIEl0IG9ubHkgd29ya3MgZm9yIHNwZWNpZmljIGZpbGV0eXBlcy4gIENoZWNrCit0aGUgdmFsdWUgb2YgdGhlICdvbW5pZnVuYycgb3B0aW9uIHRvIGZpbmQgb3V0IGlmIGl0IHdvdWxkIHdvcmsuCisKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogKjI0LjQqCVJlcGVhdGluZyBhbiBpbnNlcnQKIApkaWZmIC0tZ2l0IGEvcnVudGltZS9kb2MvdXNyXzMxLnR4dCBiL3J1bnRpbWUvZG9jL3Vzcl8zMS50eHQKaW5kZXggYTVmYzAyZS4uODZkZTQwZCAxMDA2NDQKLS0tIGEvcnVudGltZS9kb2MvdXNyXzMxLnR4dAorKysgYi9ydW50aW1lL2RvYy91c3JfMzEudHh0CkBAIC0xLDQgKzEsNCBAQAotKnVzcl8zMS50eHQqCUZvciBWaW0gdmVyc2lvbiA3LjBjLiAgTGFzdCBjaGFuZ2U6IDIwMDYgTWFyIDI0CisqdXNyXzMxLnR4dCoJRm9yIFZpbSB2ZXJzaW9uIDcuMGMuICBMYXN0IGNoYW5nZTogMjAwNiBBcHIgMDIKIAogCQkgICAgIFZJTSBVU0VSIE1BTlVBTCAtIGJ5IEJyYW0gTW9vbGVuYWFyCiAKQEAgLTI0OSw2ICsyNDksMTEgQEAKIGFuIHh0ZXJtIHRoYXQgc3VwcG9ydHMgcmVzaXppbmcpLgogICAgVGhlIGd2aW1yYyBmaWxlIGlzIHNlYXJjaGVkIGZvciBpbiB0aGUgc2FtZSBsb2NhdGlvbnMgYXMgdGhlIHZpbXJjIGZpbGUuCiBOb3JtYWxseSBpdCdzIG5hbWUgaXMgIn4vLmd2aW1yYyIgZm9yIFVuaXggYW5kICIkVklNL19ndmltcmMiIGZvciBNUy1XaW5kb3dzLgorVGhlICRNWUdWSU1SQyBlbnZpcm9ubWVudCB2YXJpYWJsZSBpcyBzZXQgdG8gaXQsIHRodXMgeW91IGNhbiB1c2UgdGhpcyBjb21tYW5kCit0byBlZGl0IHRoZSBmaWxlLCBpZiB5b3UgaGF2ZSBvbmU6ID4KKworCTplZGl0ICRNWUdWSU1SQworPAogICAgSWYgZm9yIHNvbWUgcmVhc29uIHlvdSBkb24ndCB3YW50IHRvIHVzZSB0aGUgbm9ybWFsIGd2aW1yYyBmaWxlLCB5b3UgY2FuCiBzcGVjaWZ5IGFub3RoZXIgb25lIHdpdGggdGhlICItVSIgYXJndW1lbnQ6ID4KIApkaWZmIC0tZ2l0IGEvcnVudGltZS9kb2MvdXNyX3RvYy50eHQgYi9ydW50aW1lL2RvYy91c3JfdG9jLnR4dAppbmRleCBiMjFiN2MzLi4xY2UyN2IyIDEwMDY0NAotLS0gYS9ydW50aW1lL2RvYy91c3JfdG9jLnR4dAorKysgYi9ydW50aW1lL2RvYy91c3JfdG9jLnR4dApAQCAtMSw0ICsxLDQgQEAKLSp1c3JfdG9jLnR4dCoJRm9yIFZpbSB2ZXJzaW9uIDcuMGMuICBMYXN0IGNoYW5nZTogMjAwNiBNYXIgMjQKKyp1c3JfdG9jLnR4dCoJRm9yIFZpbSB2ZXJzaW9uIDcuMGMuICBMYXN0IGNoYW5nZTogMjAwNiBBcHIgMDIKIAogCQkgICAgIFZJTSBVU0VSIE1BTlVBTCAtIGJ5IEJyYW0gTW9vbGVuYWFyCiAKQEAgLTQ5LDcgKzQ5LDcgQEAKIAogCiBSZWZlcmVuY2UgbWFudWFsCi18cmVmLXRvY3wgICAgIE1vcmUgZGV0YWlsZWQgaW5mb3JtYXRpb24gZm9yIGFsbCBjb21tYW5kcworfHJlZmVyZW5jZV90b2N8ICAgICBNb3JlIGRldGFpbGVkIGluZm9ybWF0aW9uIGZvciBhbGwgY29tbWFuZHMKIAogVGhlIHVzZXIgbWFudWFsIGlzIGF2YWlsYWJsZSBhcyBhIHNpbmdsZSwgcmVhZHkgdG8gcHJpbnQgSFRNTCBhbmQgUERGIGZpbGUKIGhlcmU6CmRpZmYgLS1naXQgYS9ydW50aW1lL2RvYy92ZXJzaW9uNy50eHQgYi9ydW50aW1lL2RvYy92ZXJzaW9uNy50eHQKaW5kZXggNDYzNTZiMC4uOGU1NWFhYyAxMDA2NDQKLS0tIGEvcnVudGltZS9kb2MvdmVyc2lvbjcudHh0CisrKyBiL3J1bnRpbWUvZG9jL3ZlcnNpb243LnR4dApAQCAtMSw0ICsxLDQgQEAKLSp2ZXJzaW9uNy50eHQqICBGb3IgVmltIHZlcnNpb24gNy4wYy4gIExhc3QgY2hhbmdlOiAyMDA2IE1hciAyOQorKnZlcnNpb243LnR4dCogIEZvciBWaW0gdmVyc2lvbiA3LjBjLiAgTGFzdCBjaGFuZ2U6IDIwMDYgQXByIDA1CiAKIAogCQkgIFZJTSBSRUZFUkVOQ0UgTUFOVUFMICAgIGJ5IEJyYW0gTW9vbGVuYWFyCkBAIC04Niw2ICs4NiwxMiBAQAogRm9yIGZpbGV0eXBlIGRldGVjdGlvbjogRm9yIG1hbnkgdHlwZXMsIGluc3RlYWQgb2Ygfi8uZGlyL2ZpbGVuYW1lIHVzZQogKi8uZGlyL2ZpbGVuYW1lLCBzbyB0aGF0IGl0IGFsc28gd29ya3MgZm9yIG90aGVyIHVzZXIncyBmaWxlcy4KIAorRm9yIHF1aXRlIGEgZmV3IGZpbGV0eXBlcyB0aGUgaW5kZW50IHNldHRpbmdzIGhhdmUgYmVlbiBtb3ZlZCBmcm9tIHRoZQorZmlsZXR5cGUgcGx1Z2luIHRvIHRoZSBpbmRlbnQgcGx1Z2luLiAgSWYgeW91IHVzZWQ6ID4KKwk6ZmlsZXR5cGUgcGx1Z2luIG9uCitUaGVuIHNvbWUgaW5kZW50IHNldHRpbmdzIG1heSBiZSBtaXNzaW5nLiAgWW91IG5lZWQgdG8gdXNlOiA+CisJOmZpbGV0eXBlIHBsdWdpbiBpbmRlbnQgb24KKwogIjowdmVyYm9zZSIgbm93IHNldHMgJ3ZlcmJvc2UnIHRvIHplcm8gaW5zdGVhZCBvZiBvbmUuCiAKIFJlbW92ZWQgdGhlIG9sZCBhbmQgaW5jb21wbGV0ZSAiVmltQnVkZHkiIGNvZGUuCkBAIC0xNTEsNiArMTU3LDEwIEBACiBhYmJyZXZpYXRlZC4gIFRoaXMgY2F1c2VkIHVuZXhwZWN0ZWQgYmVoYXZpb3IsIHN1Y2ggYXMgPGxpPiBiZWluZyByZWNvZ25pemVkCiBhcyA8bGluZTE+LiAgVGhlIGl0ZW1zIGNhbiBubyBsb25nZXIgYmUgYWJicmV2aWF0ZWQuCiAKK1doZW4gZXhlY3V0aW5nIGEgRmlsZUNoYW5nZWRSTyBhdXRvY29tbWFuZCBpdCBpcyBubyBsb25nZXIgYWxsb3dlZCB0byBzd2l0Y2gKK3RvIGFub3RoZXIgYnVmZmVyIG9yIGVkaXQgYW5vdGhlciBmaWxlLiAgVGhpcyBpcyB0byBwcmV2ZW50IGNyYXNoZXMgKHRoZSBldmVudAoraXMgdHJpZ2dlcmVkIGRlZXAgZG93biBpbiB0aGUgY29kZSB3aGVyZSBjaGFuZ2luZyBidWZmZXJzIGlzIG5vdCBhbnRpY2lwYXRlZCkuCisKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogTkVXIEZFQVRVUkVTCQkJCQkJKm5ldy03KgogCkBAIC0xNzAsNyArMTgwLDcgQEAKIGNhbiBiZSB1c2VkIHRvIHR1cm4gdGhlIHN0cmluZyBiYWNrIGludG8gdGhlIHZhcmlhYmxlIHZhbHVlLgogCiBUaGUgfDpsZXR8IGNvbW1hbmQgY2FuIG5vdyB1c2UgIis9Ii4gICI6bGV0IHZhciArPSBleHByIiB3b3JrcyBsaWtlCi0iOmxldCB2YXIgPSB2YXIgKyBleHByIi4gICItPSIgYW5kICIuPSIgd29ya3MgaW4gYSBzaW1pbGFyIHdheS4KKyI6bGV0IHZhciA9IHZhciArIGV4cHIiLiAgIi09IiBhbmQgIi49IiB3b3JrIGluIGEgc2ltaWxhciB3YXkuCiAKIFdpdGggdGhlIHw6cHJvZmlsZXwgY29tbWFuZCB5b3UgY2FuIGZpbmQgb3V0IHdoZXJlIHlvdXIgZnVuY3Rpb24gb3Igc2NyaXB0CiB3YXN0ZXMgaXRzIHRpbWUuCkBAIC0yNzcsNiArMjg3LDggQEAKIFRoZSB8LS1yZW1vdGUtdGFifCBhcmd1bWVudCBjYW4gYmUgdXNlZCB0byBlZGl0IGEgZmlsZSBpbiBhIG5ldyB0YWIgcGFnZSBpbiBhbgogYWxyZWFkeSBydW5uaW5nIFZpbSBzZXJ2ZXIuCiAKK1ZhcmlhYmxlcyBzdGFydGluZyB3aXRoICJ0OiIgYXJlIGxvY2FsIHRvIGEgdGFiIHBhZ2UuCisKIE1vcmUgaW5mbyBoZXJlOiB8dGFicGFnZXwKIFRoZSBXaW4zMiBHVUkgdGFicyB3ZXJlIGltcGxlbWVudGVkIGJ5IFllZ2FwcGFuIExha3NobWFuYW4uCiAKQEAgLTc0Nyw2ICs3NTksNyBAQAogfG1hcGFyZygpfAkJZXh0cmEgYXJndW1lbnQ6IHVzZSBhYmJyZXZpYXRpb24KIHxtYXBjaGVjaygpfAkJZXh0cmEgYXJndW1lbnQ6IHVzZSBhYmJyZXZpYXRpb24KIHxtYXRjaCgpfAkJZXh0cmEgYXJndW1lbnQ6IGNvdW50Cit8bWF0Y2hhcmcoKXwJCXJldHVybiBhcmd1bWVudHMgb2YgfDptYXRjaHwgY29tbWFuZAogfG1hdGNoZW5kKCl8CQlleHRyYSBhcmd1bWVudDogY291bnQKIHxtYXRjaGxpc3QoKXwJCWxpc3Qgd2l0aCBtYXRjaCBhbmQgc3VibWF0Y2hlcyBvZiBhIHBhdHRlcm4gaW4gYSBzdHJpbmcKIHxtYXRjaHN0cigpfAkJZXh0cmEgYXJndW1lbnQ6IGNvdW50CkBAIC05ODEsNiArOTk0LDExIEBACiAKIE90aGVyczogfgogCitUaGUgfDpyZWFkfCBjb21tYW5kIGhhcyB0aGUgfCsrZWRpdHwgYXJndW1lbnQuICBUaGlzIG1lYW5zIGl0IHdpbGwgdXNlIHRoZQorZGV0ZWN0ZWQgJ2ZpbGVmb3JtYXQnLCAnZmlsZWVuY29kaW5nJyBhbmQgb3RoZXIgb3B0aW9ucyBmb3IgdGhlIGJ1ZmZlci4gIFRoaXMKK2Fsc28gZml4ZXMgdGhlIHByb2JsZW0gdGhhdCBlZGl0aW5nIGEgY29tcHJlc3NlZCBmaWxlIGRpZG4ndCBzZXQgdGhlc2UKK29wdGlvbnMuCisKIFRoZSBOZXRiZWFucyBpbnRlcmZhY2Ugd2FzIHVwZGF0ZWQgZm9yIFN1biBTdHVkaW8gMTAuICBUaGUgcHJvdG9jb2wgbnVtYmVyCiBnb2VzIGZyb20gMi4yIHRvIDIuMy4gKEdvcmRvbiBQcmlldXIpCiAKQEAgLTEwNTYsNiArMTA3NCw5IEBACiAKIFJ1YnkgaW50ZXJmYWNlOiBhZGQgbGluZSBudW1iZXIgbWV0aG9kcy4gKFJ5YW4gUGF1bCkKIAorVGhlICRNWVZJTVJDIGVudmlyb25tZW50IHZhcmlhYmxlIGlzIHNldCB0byB0aGUgZmlyc3QgZm91bmQgdmltcmMgZmlsZS4KK1RoZSAkTVlHVklNUkMgZW52aXJvbm1lbnQgdmFyaWFibGUgaXMgc2V0IHRvIHRoZSBmaXJzdCBmb3VuZCBndmltcmMgZmlsZS4KKwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiBJTVBST1ZFTUVOVFMJCQkJCQkqaW1wcm92ZW1lbnRzLTcqCiAKQEAgLTIxODMsNyArMjIwNCw3IEBACiBSdWJ5IGludGVyZmFjZTogd2hlbiBpbnNlcnRpbmcvZGVsZXRpbmcgbGluZXMgZGlzcGxheSB3YXNuJ3QgdXBkYXRlZC4gKFJ5YW4KIFBhdWwpCiAKLS0tLSBmaXhlcyBzaW5jZSBWaW0gNi4wYiAtLS0KKy0tLSBmaXhlcyBzaW5jZSBWaW0gNy4wYiAtLS0KIAogR2V0dGluZyB0aGUgR0NDIHZlcnNpb24gaW4gY29uZmlndXJlIGRpZG4ndCB3b3JrIHdpdGggU29sYXJpcyBzZWQuICBGaXJzdAogc3RyaXAgYW55ICJkYXJ3aW4uIiBhbmQgdGhlbiBnZXQgdGhlIHZlcnNpb24gbnVtYmVyLgpAQCAtMjIxNyw3ICsyMjM4LDcgQEAKIAogVHlwaW5nIEJTIGF0IHRoZSAiej0iIHByb21wdCByZW1vdmVkIHRoZSBwcm9tcHQuCiAKLS0tLSBmaXhlcyBzaW5jZSBWaW0gNi4wYyAtLS0KKy0tLSBmaXhlcyBzaW5jZSBWaW0gNy4wYyAtLS0KIAogV2hlbiBqdW1waW5nIHRvIGFub3RoZXIgdGFiIHBhZ2UgdGhlIFZpbSB3aW5kb3cgc2l6ZSB3YXMgYWx3YXlzIHNldCwgZXZlbiB3aGVuCiBub3RoaW5nIGluIHRoZSBsYXlvdXQgY2hhbmdlZC4KQEAgLTIyNTUsNCArMjI3NiwxMTMgQEAKIFdpbjMyOiBTZXQgdGhlIGRlZmF1bHQgZm9yICdpc3ByaW50JyBiYWNrIHRvIHRoZSB3cm9uZyBkZWZhdWx0ICJALH4tMjU1IiwKIGJlY2F1c2UgbWFueSBwZW9wbGUgdXNlIFdpbmRvd3MtMTI1MiB3aGlsZSAnZW5jb2RpbmcnIGlzICJsYXRpbjEiLgogCitHVEs6IEFkZGVkIGEgd29ya2Fyb3VuZCBmb3IgZ3ZpbSBjcmFzaGluZyB3aGVuIHVzZWQgb3ZlciBhbiB1bnRydXN0ZWQgc3NoCitsaW5rLCBjYXVzZWQgYnkgR1RLIGRvaW5nIHNvbWV0aGluZyBuYXN0eS4gKEVkIENhdG11cikKKworV2luMzI6IFRoZSBmb250IHVzZWQgZm9yIHRoZSB0YWIgcGFnZSBsYWJlbHMgaXMgdG9vIGJpZy4gIFVzZSB0aGUgc3lzdGVtIG1lbnUKK2ZvbnQuIChHZW9yZ2UgUmVpbGx5KQorCitXaW4zMjogQWRqdXN0aW5nIHRoZSB3aW5kb3cgcG9zaXRpb24gYW5kIHNpemUgdG8ga2VlcCBpdCBvbiB0aGUgc2NyZWVuIGRpZG4ndAord29yayBwcm9wZXJseSB3aGVuIHRoZSB0YXNrYmFyIGlzIG9uIHRoZSBsZWZ0IG9yIHRvcCBvZiB0aGUgc2NyZWVuLgorCitUaGUgaW5zdGFsbG1hbi5zaCBhbmQgaW5zdGFsbG1sLnNoIHNjcmlwdHMgdXNlICR7MTB9LCB0aGF0IGRpZG4ndCB3b3JrIHdpdGgKK29sZCBzaGVsbHMuICBBbmQgdXNlICJ0ZXN0IC1mIiBpbnN0ZWFkIG9mICJ0ZXN0IC1lIi4KKworV2luMzI6IFdoZW4gJ2VuY29kaW5nJyB3YXMgc2V0IGluIHRoZSB2aW1yYyB0aGVuIGEgZGlyZWN0b3J5IGFyZ3VtZW50IGZvciBkaWZmCittb2RlIGRpZG4ndCB3b3JrLgorCitHVUk6IGF0IHRoZSBpbnB1dGxpc3QoKSBwcm9tcHQgdGhlIGN1cnNvcnNoYXBlIHdhcyBhZGp1c3RlZCBhcyBpZiB0aGUgd2luZG93cword2VyZSBzdGlsbCBhdCB0aGVpciBvbGQgcG9zaXRpb24uCisKK1RoZSBwYXJlbm1hdGNoIHBsdWdpbiBkaWRuJ3QgcmVtZW1iZXIgdGhlIGhpZ2hsaWdodGluZyBwZXIgd2luZG93LgorCitVc2luZyAiOmJkIiBmb3IgYSBidWZmZXIgdGhhdCdzIHRoZSBjdXJyZW50IHdpbmRvdyBpbiBhbm90aGVyIHRhYiBwYWdlIGNhdXNlZAorYSBjcmFzaC4KKworRm9yIGEgbmV3IHRhYiBwYWdlIHRoZSAnc2Nyb2xsJyBvcHRpb24gd2Fzbid0IHNldCB0byBhIGdvb2QgZGVmYXVsdC4KKworVXNpbmcgYW4gZW5kIG9mZnNldCBmb3IgYSBzZWFyY2ggIi9wYXQvZSIgZGlkbid0IHdvcmsgcHJvcGVybHkgZm9yIG11bHRpLWJ5dGUKK3RleHQuIChZdWtpaGlybyBOYWthZGFpcmEpCisKKyI6cy9cbi8sLyIgZG91YmxlZCB0aGUgdGV4dCB3aGVuIHVzZWQgb24gdGhlIGxhc3QgbGluZS4KKworV2hlbiAic2VhcmNoIiBpcyBpbiAnZm9sZG9wZW4nICJbcyIgYW5kICJdcyIgbm93IG9wZW4gZm9sZHMuCisKK1doZW4gdXNpbmcgYSBudW1iZXJlZCBmdW5jdGlvbiAiZGljdCIgY2FuIGJlIG9taXR0ZWQsIGJ1dCAic2VsZiIgZGlkbid0IHdvcmsKK3RoZW4uICBBbHdheXMgYWRkIEZDX0RJQ1QgdG8gdGhlIGZ1bmN0aW9uIGZsYWdzIHdoZW4gaXQncyBwYXJ0IG9mIGEKK2RpY3Rpb25hcnkuCisKK1doZW4gIi0tcmVtb3RlLXRhYiIgZXhlY3V0ZXMgbG9jYWxseSBpdCBsZWZ0IGFuIGVtcHR5IHRhYiBwYWdlLgorCisiZ3ZpbSAtdSBOT05FIiwgIjpzZXQgY3Vyc29yY29sdW1uIiwgIkMiIGluIHRoZSBzZWNvbmQgbGluZSBkaWRuJ3QgdXBkYXRlCit0ZXh0LiAgRG8gdXBkYXRlIGZ1cnRoZXIgbGluZXMgZXZlbiB0aG91Z2ggdGhlICIkIiBpcyBkaXNwbGF5ZWQuCisKK1ZNUzogU3VwcG9ydCBHVEsgYmV0dGVyLCBhbHNvIGVuYWJsZSArY2xpZW50c2VydmVyLiAoWm9sdGFuIEFycGFkZmZ5KQorCitXaGVuIGhpZ2hsaWdodGluZyBvZiBzdGF0dXNsaW5lIG9yIHRhYmxpbmUgaXMgY2hhbmdlZCB0aGVyZSB3YXMgbm8gcmVkcmF3IHRvCitzaG93IHRoZSBlZmZlY3QuCisKK01hYzogQWRkZWQgIkNGQnVuZGxlSWRlbnRpZmllciIgdG8gaW5mcGxpc3QueG1sLgorCitBZGRlZCB0YWJwYWdlLWxvY2FsIHZhcmlhYmxlcyB0OnZhci4KKworV2luMzI6IEFkZGVkIGRvdWJsZS1jbGljayBpbiB0YWIgcGFnZXMgbGluZSBjcmVhdGVzIG5ldyB0YWIuIChZZWdhcHBhbgorTGFrc2htYW5hbikKKworTW90aWY6IEFkZGVkIEdVSSB0YWIgcGFnZXMgbGluZS4gKFllZ2FwcGFuIExha3NobWFuYW4pCisKK0ZpeGVkIGNyYXNoIHdoZW4gJ2xpbmVzJyB3YXMgc2V0IHRvIDEwMDAgaW4gYSBtb2RlbGluZS4KKworV2hlbiBpbml0X3NwZWxsZmlsZSgpIGZpbmRzIGEgd3JpdGFibGUgZGlyZWN0b3J5IGluICdydW50aW1lcGF0aCcgYnV0IGl0Citkb2Vzbid0IGNvbnRhaW4gYSAic3BlbGwiIGRpcmVjdG9yeSwgY3JlYXRlIG9uZS4KKworV2luMzI6IGV4ZWN1dGFibGUoKSBhbHNvIGZpbmRzICJ4eGQiIGluIHRoZSBkaXJlY3Rvcnkgd2hlcmUgVmltIHdhcyBzdGFydGVkLAorYnV0ICIheHhkIiBkb2Vzbid0IHdvcmsuICBBcHBlbmQgdGhlIFZpbSBzdGFydGluZyBkaXJlY3RvcnkgdG8gJFBBVEguCisKK1RoZSB0YWIgcGFnZSBsYWJlbHMgYXJlIHNob3J0ZW5lZCwgZGlyZWN0b3J5IG5hbWVzIGFyZSByZWR1Y2VkIHRvIGEgc2luZ2xlCitsZXR0ZXIgYnkgZGVmYXVsdC4gIEFkZGVkIHRoZSBwYXRoc2hvcnRlbigpIGZ1bmN0aW9uIHRvIGFsbG93IGEgdXNlciB0byBkbyB0aGUKK3NhbWUuCisKKyI6c2F2ZWFzIiBub3cgcmVzZXRzICdyZWFkb25seScgaWYgdGhlIGZpbGUgd2FzIHN1Y2Nlc3NmdWxseSB3cml0dGVuLgorCitTZXQgJE1ZVklNUkMgZmlsZSB0byB0aGUgZmlyc3QgZm91bmQgLnZpbXJjIGZpbGUuCitTZXQgJE1ZR1ZJTVJDIGZpbGUgdG8gdGhlIGZpcnN0IGZvdW5kIC5ndmltcmMgZmlsZS4KK0FkZGVkIG1lbnUgaXRlbSAiU3RhcnR1cCBTZXR0aW5ncyIgdGhhdCBlZGl0cyB0aGUgJE1ZVklNUkMgZmlsZQorCitBZGRlZCBtYXRjaGFyZygpLgorCitFcnJvciBtZXNzYWdlIEU3NDUgYXBwZWFyZWQgdHdpY2UuICBSZW5hbWVkIG9uZSB0byBFNzg2LgorCitGaXhlZCBjcmFzaCB3aGVuIHVzaW5nICJhdSBCdWZSZWFkICogU2V4cGxvcmUiIGFuZCBkb2luZyAiOmhlbHAiLiAgV2FzIHdpcGluZworb3V0IGEgYnVmZmVyIHRoYXQncyBzdGlsbCBpbiBhIHdpbmRvdy4KKworIjpoYXJkY29weSIgcmVzdWx0ZWQgaW4gYW4gZXJyb3IgbWVzc2FnZSB3aGVuICdlbmNvZGluZycgaXMgInV0Zi04IiBhbmQKKydwcmludGVuY29kaW5nJyBpcyBlbXB0eS4gIE5vdyBpdCBhc3N1bWVzIGxhdGluMS4gKE1pa2UgV2lsbGlhbXMpCisKK1RoZSBjaGVjayBmb3IgdGhlIHRvb2xiYXIgZmVhdHVyZSBmb3IgTW90aWYsIGRlcGVuZGluZyBvbiBjZXJ0YWluIGluY2x1ZGVkCitmaWxlcywgd2Fzbid0IGRldGFpbGVkIGVub3VnaCwgY2F1c2luZyBidWlsZGluZyB0byBmYWlsIGluIGd1aV94bWVidy5jLgorCitVc2luZyBDVFJMLUUgaW4gSW5zZXJ0IG1vZGUgY29tcGxldGlvbiBhZnRlciBDVFJMLVAgaW5zZXJ0ZWQgdGhlIGZpcnN0IG1hdGNoCitpbnN0ZWFkIG9mIHRoZSBvcmlnaW5hbCB0ZXh0LgorCitXaGVuIGRpc3BsYXlpbmcgYSBVVEYtOCBjaGFyYWN0ZXIgd2l0aCBhIHplcm8gbG93ZXIgYnl0ZSBWaW0gbWlnaHQgdGhpbmsgdGhlCitwcmV2aW91cyBjaGFyYWN0ZXIgaXMgZG91YmxlLXdpZGUuCisKK1RoZSAibmJzcCIgaXRlbSBvZiAnbGlzdGNoYXJzJyBkaWRuJ3Qgd29yayB3aGVuICdlbmNvZGluZycgd2FzIHV0Zi04LgorCitNb3RpZjogd2hlbiBYbS94cG0uaCBpcyBtaXNzaW5nIGd1aV94bWVidy5jIHdvdWxkIG5vdCBjb21waWxlLgorSEFWRV9YTV9VTkhJR0hMSUdIVFRfSCB3YXMgbWlzc2luZyBhIFQuCisKK01hYzogTW92ZWQgdGhlIC5pY25zIGZpbGVzIGludG8gc3JjL29zX21hY19yc3JjLCBzbyB0aGF0IHRoZXkgY2FuIGFsbCBiZQorY29waWVkIGF0IG9uY2UuICBBZGp1c3RlZCB0aGUgSW5mby5wbGlzdCBmaWxlIGZvciB0aHJlZSBpY29ucy4KKworV2hlbiBWaXN1YWwgbW9kZSBpcyBhY3RpdmUgd2hpbGUgc3dpdGNoaW5nIHRvIGFub3RoZXIgdGFicGFnZSBjb3VsZCBnZXQgbWxfZ2V0CitlcnJvcnMuCisKK1doZW4gJ2xpc3QnIGlzIHNldCwgJ25vd3JhcCcgdGhlICQgaW4gdGhlIGZpcnN0IGNvbHVtbiBjYXVzZWQgJ2N1cnNvcmNvbHVtbicKK3RvIG1vdmUgdG8gdGhlIHJpZ2h0LgorCitXaGVuIGEgbGluZSB3cmFwcywgJ2N1cnNvcmNvbHVtbicgd2FzIG5ldmVyIGRpc3BsYXllZCBwYXN0IHRoZSBlbmQgb2YgdGhlCitsaW5lLgorCiAgdmltOnR3PTc4OnRzPTg6ZnQ9aGVscDpub3JsOgpkaWZmIC0tZ2l0IGEvcnVudGltZS9kb2MvdmltYmFsbC50eHQgYi9ydW50aW1lL2RvYy92aW1iYWxsLnR4dAppbmRleCAzMDVhZjk2Li4xZmMxZTM2IDEwMDY0NAotLS0gYS9ydW50aW1lL2RvYy92aW1iYWxsLnR4dAorKysgYi9ydW50aW1lL2RvYy92aW1iYWxsLnR4dApAQCAtMSw0ICsxLDQgQEAKLSp2aW1iYWxsLnR4dCoJRm9yIFZpbSB2ZXJzaW9uIDcuMGMuICBMYXN0IGNoYW5nZTogMjAwNiBNYXIgMjQKKyp2aW1iYWxsLnR4dCoJRm9yIFZpbSB2ZXJzaW9uIDcuMGMuICBMYXN0IGNoYW5nZTogMjAwNiBBcHIgMDEKIAogCVZpbWJhbGwgQXJjaGl2ZXIKIApAQCAtNTYsNiArNTYsOSBAQAogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAzLiBWaW1iYWxsIEhpc3RvcnkJCQkJCSp2aW1iYWxsLWhpc3RvcnkqCiAKKwk0ICA6IE1hciAzMSwgMjAwNiAqIEJ1ZlJlYWRQb3N0IHNlZW1zIHRvIGZpcmUgdHdpY2U7IEJ1ZlJlYWRFbnRlcgorCSAgICAgICAgICAgICAgICAgICAgb25seSBmaXJlcyBvbmNlLCBzbyB0aGUgIlNvdXJjZSB0aGlzIGZpbGUuLi4iCisJCQkgICAgbWVzc2FnZSBpcyBub3cgaXNzdWVkIG9ubHkgb25jZS4KIAkzICA6IE1hciAyMCwgMjAwNiAqIHJlbW92ZWQgcXVlcnksIG5vdyByZXF1aXJlcyBzb3VyY2luZyB0byBiZQogCSAgICAgICAgICAgICAgICAgICAgZXh0cmFjdGVkICg6c28gJSkuICBNZXNzYWdlIHRvIHRoYXQgZWZmZWN0CiAJCQkgICAgaW5jbHVkZWQuCmRpZmYgLS1naXQgYS9ydW50aW1lL2RvYy93aW5kb3dzLnR4dCBiL3J1bnRpbWUvZG9jL3dpbmRvd3MudHh0CmluZGV4IDk1NDM3M2UuLmI2ZGI1NDAgMTAwNjQ0Ci0tLSBhL3J1bnRpbWUvZG9jL3dpbmRvd3MudHh0CisrKyBiL3J1bnRpbWUvZG9jL3dpbmRvd3MudHh0CkBAIC0xLDQgKzEsNCBAQAotKndpbmRvd3MudHh0KiAgIEZvciBWaW0gdmVyc2lvbiA3LjBjLiAgTGFzdCBjaGFuZ2U6IDIwMDYgTWFyIDExCisqd2luZG93cy50eHQqICAgRm9yIFZpbSB2ZXJzaW9uIDcuMGMuICBMYXN0IGNoYW5nZTogMjAwNiBBcHIgMDEKIAogCiAJCSAgVklNIFJFRkVSRU5DRSBNQU5VQUwgICAgYnkgQnJhbSBNb29sZW5hYXIKQEAgLTMzLDcgKzMzLDcgQEAKIGRpc2FibGVkIGF0IGNvbXBpbGUgdGltZX0KIAogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0xLiBJbnRyb2R1Y3Rpb24JCQkJCQkqd2luZG93cy1pbnRybyoKKzEuIEludHJvZHVjdGlvbgkJCQkJKndpbmRvd3MtaW50cm8qICp3aW5kb3cqCiAKIEEgd2luZG93IGlzIGEgdmlld3BvcnQgb250byBhIGJ1ZmZlci4gIFlvdSBjYW4gdXNlIG11bHRpcGxlIHdpbmRvd3Mgb24gb25lCiBidWZmZXIsIG9yIHNldmVyYWwgd2luZG93cyBvbiBkaWZmZXJlbnQgYnVmZmVycy4KQEAgLTYxOCwxMyArNjE4LDE1IEBACiAJCVRoZSB8YXJndW1lbnQtbGlzdHwgaXMgc2V0LCBsaWtlIHdpdGggdGhlIHw6bmV4dHwgY29tbWFuZC4KIAkJVGhlIHB1cnBvc2Ugb2YgdGhpcyBjb21tYW5kIGlzIHRoYXQgaXQgY2FuIGJlIHVzZWQgZnJvbSBhCiAJCXByb2dyYW0gdGhhdCB3YW50cyBWaW0gdG8gZWRpdCBhbm90aGVyIGZpbGUsIGUuZy4sIGEgZGVidWdnZXIuCisJCVdoZW4gdXNpbmcgdGhlIHw6dGFifCBtb2RpZmllciBlYWNoIGFyZ3VtZW50IGlzIG9wZW5lZCBpbiBhCisJCXRhYiBwYWdlLiAgVGhlIGxhc3Qgd2luZG93IGlzIHVzZWQgaWYgaXQncyBlbXB0eS4KIAkJe29ubHkgYXZhaWxhYmxlIHdoZW4gY29tcGlsZWQgd2l0aCB0aGUgK2d1aSBmZWF0dXJlfQogCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIDguIERvIGEgY29tbWFuZCBpbiBhbGwgYnVmZmVycyBvciB3aW5kb3dzCQkJKmxpc3QtcmVwZWF0KgogCiAJCQkJCQkJKjp3aW5kbyoKLTp3aW5kb1shXSB7Y21kfQkJRXhlY3V0ZSB7Y21kfSBpbiBlYWNoIHdpbmRvdy4KKzp3aW5kbyB7Y21kfQkJRXhlY3V0ZSB7Y21kfSBpbiBlYWNoIHdpbmRvdy4KIAkJCUl0IHdvcmtzIGxpa2UgZG9pbmcgdGhpczogPgogCQkJCUNUUkwtVyB0CiAJCQkJOntjbWR9CmRpZmYgLS1naXQgYS9ydW50aW1lL2ZpbGV0eXBlLnZpbSBiL3J1bnRpbWUvZmlsZXR5cGUudmltCmluZGV4IGNhZDJjYzEuLjhkMWYxNTUgMTAwNjQ0Ci0tLSBhL3J1bnRpbWUvZmlsZXR5cGUudmltCisrKyBiL3J1bnRpbWUvZmlsZXR5cGUudmltCkBAIC0xLDcgKzEsNyBAQAogIiBWaW0gc3VwcG9ydCBmaWxlIHRvIGRldGVjdCBmaWxlIHR5cGVzCiAiCiAiIE1haW50YWluZXI6CUJyYW0gTW9vbGVuYWFyIDxCcmFtQHZpbS5vcmc+Ci0iIExhc3QgQ2hhbmdlOgkyMDA2IE1hciAyOAorIiBMYXN0IENoYW5nZToJMjAwNiBBcHIgMDQKIAogIiBMaXN0ZW4gdmVyeSBjYXJlZnVsbHksIEkgd2lsbCBzYXkgdGhpcyBvbmx5IG9uY2UKIGlmIGV4aXN0cygiZGlkX2xvYWRfZmlsZXR5cGVzIikKQEAgLTE0Niw3ICsxNDYsNyBAQAogCVwgZW5kaWYKIAogIiBHcnViIChtdXN0IGJlIGJlZm9yZSBjYXRjaCAqLmxzdCkKLWF1IEJ1Zk5ld0ZpbGUsQnVmUmVhZCAvYm9vdC9ncnViL21lbnUubHN0LC9ib290L2dydWIvZ3J1Yi5jb25mCXNldGYgZ3J1YgorYXUgQnVmTmV3RmlsZSxCdWZSZWFkIC9ib290L2dydWIvbWVudS5sc3QsL2Jvb3QvZ3J1Yi9ncnViLmNvbmYsL2V0Yy9ncnViLmNvbmYJc2V0ZiBncnViCiAKICIgQXNzZW1ibHkgKGFsbCBraW5kcykKICIgKi5sc3QgaXMgbm90IHB1cmUgYXNzZW1ibHksIGl0IGhhcyB0d28gZXh0cmEgY29sdW1ucyAoYWRkcmVzcywgYnl0ZSBjb2RlcykKQEAgLTYwMiwxMCArNjAyLDEwIEBACiBhdSBCdWZOZXdGaWxlLEJ1ZlJlYWQgKi5mcywqLmZ0CQkJc2V0ZiBmb3J0aAogCiAiIEZvcnRyYW4KLWF1IEJ1Zk5ld0ZpbGUsQnVmUmVhZCAqLmYsKi5GLCouZm9yLCouZnBwLCouRlBQKi5mdG4sKi5mNzcsKi5GNzcsKi5mOTAsKi5GOTAsKi5mOTUsKi5GOTUJc2V0ZiBmb3J0cmFuCithdSBCdWZOZXdGaWxlLEJ1ZlJlYWQgKi5mLCouRiwqLmZvciwqLmZwcCwqLkZQUCwqLmZ0biwqLmY3NywqLkY3NywqLmY5MCwqLkY5MCwqLmY5NSwqLkY5NQlzZXRmIGZvcnRyYW4KIAogIiBGU3RhYgotYXUgQnVmTmV3RmlsZSxCdWZSZWFkIGZzdGFiCQkJc2V0ZiBmc3RhYgorYXUgQnVmTmV3RmlsZSxCdWZSZWFkIGZzdGFiLG10YWIJCXNldGYgZnN0YWIKIAogIiBHREIgY29tbWFuZCBmaWxlcwogYXUgQnVmTmV3RmlsZSxCdWZSZWFkIC5nZGJpbml0CQkJc2V0ZiBnZGIKQEAgLTg4MCw3ICs4ODAsNyBAQAogYXUgQnVmTmV3RmlsZSxCdWZSZWFkICoubWFuCQkJc2V0ZiBtYW4KIAogIiBNYW4gY29uZmlnCi1hdSBCdWZOZXdGaWxlLEJ1ZlJlYWQgL2V0Yy9tYW4uY29uZgkJc2V0ZiBtYW5jb25mCithdSBCdWZOZXdGaWxlLEJ1ZlJlYWQgL2V0Yy9tYW4uY29uZixtYW4uY29uZmlnCXNldGYgbWFuY29uZgogCiAiIE1hcGxlIFYKIGF1IEJ1Zk5ld0ZpbGUsQnVmUmVhZCAqLm12LCoubXBsLCoubXdzCQlzZXRmIG1hcGxlCkBAIC0xNTU1LDYgKzE1NTUsMTAgQEAKICIgU0lOREEKIGF1IEJ1Zk5ld0ZpbGUsQnVmUmVhZCAqLnNpbiwqLnM4NQkJc2V0ZiBzaW5kYQogCisiIFNpU1UKK2F1IEJ1Zk5ld0ZpbGUsQnVmUmVhZCAqLnNzdCwqLnNzbSwqLnNzaSwqLi1zc3QsKi5fc3NpIHNldGYgc2lzdQorYXUgQnVmTmV3RmlsZSxCdWZSZWFkICouc3N0Lm1ldGEsKi4tc3N0Lm1ldGEsKi5fc3N0Lm1ldGEgc2V0ZiBzaXN1CisKICIgU0tJTEwKIGF1IEJ1Zk5ld0ZpbGUsQnVmUmVhZCAqLmlsLCouaWxzLCouY2RmCQlzZXRmIHNraWxsCiAKZGlmZiAtLWdpdCBhL3J1bnRpbWUvZnRwbHVnaW4vZm9ydHJhbi52aW0gYi9ydW50aW1lL2Z0cGx1Z2luL2ZvcnRyYW4udmltCmluZGV4IGQxODliZjQuLmM4MTdiM2IgMTAwNjQ0Ci0tLSBhL3J1bnRpbWUvZnRwbHVnaW4vZm9ydHJhbi52aW0KKysrIGIvcnVudGltZS9mdHBsdWdpbi9mb3J0cmFuLnZpbQpAQCAtMSwxMCArMSwxMSBAQAogIiBWaW0gc2V0dGluZ3MgZmlsZQogIiBMYW5ndWFnZToJRm9ydHJhbjkwIChhbmQgRm9ydHJhbjk1LCBGb3J0cmFuNzcsIEYgYW5kIGVsZjkwKQotIiBWZXJzaW9uOgkwLjQ0Ci0iIExhc3QgQ2hhbmdlOgkyMDAzIE1heSAxOAorIiBWZXJzaW9uOgkwLjQ1CisiIExhc3QgQ2hhbmdlOgkyMDA2IEFwci4gMDMKICIgVVJMOgkJaHR0cDovL3d3dy51bmIuY2EvY2hlbS9haml0L2Z0cGx1Z2luL2ZvcnRyYW4udmltCiAiIE1haW50YWluZXI6CUFqaXQgSi4gVGhha2thciA8YWppdEB1bmIuY2E+OyA8aHR0cDovL3d3dy51bmIuY2EvY2hlbS9haml0Lz4KICIgVXNhZ2U6CURvIDpoZWxwIGZvcnRyYW4tcGx1Z2luIGZyb20gVmltCisiIENyZWRpdHM6ICAgICAgVXNlZnVsIHN1Z2dlc3Rpb25zIHdlcmUgbWFkZSBieSBTdGVmYW5vIFphY2NoaXJvbGkKIAogIiBPbmx5IGRvIHRoZXNlIHNldHRpbmdzIHdoZW4gbm90IGRvbmUgeWV0IGZvciB0aGlzIGJ1ZmZlcgogaWYgZXhpc3RzKCJiOmRpZF9mdHBsdWdpbiIpCkBAIC0yNiwxMSArMjcsMTEgQEAKICAgZWxzZQogICAgICIgZjkwIGFuZCBmOTUgYWxsb3cgYm90aCBmaXhlZCBhbmQgZnJlZSBzb3VyY2UgZm9ybQogICAgICIgYXNzdW1lIGZpeGVkIHNvdXJjZSBmb3JtIHVubGVzcyBzaWducyBvZiBmcmVlIHNvdXJjZSBmb3JtCi0gICAgIiBhcmUgZGV0ZWN0ZWQgaW4gdGhlIGZpcnN0IGZpdmUgY29sdW1ucyBvZiB0aGUgZmlyc3QgMjUgbGluZXMKKyAgICAiIGFyZSBkZXRlY3RlZCBpbiB0aGUgZmlyc3QgZml2ZSBjb2x1bW5zIG9mIHRoZSBmaXJzdCAyNTAgbGluZXMKICAgICAiIERldGVjdGlvbiBiZWNvbWVzIG1vcmUgYWNjdXJhdGUgYW5kIHRpbWUtY29uc3VtaW5nIGlmIG1vcmUgbGluZXMKICAgICAiIGFyZSBjaGVja2VkLiBJbmNyZWFzZSB0aGUgbGltaXQgYmVsb3cgaWYgeW91IGtlZXAgbG90cyBvZiBjb21tZW50cyBhdAogICAgICIgdGhlIHZlcnkgdG9wIG9mIGVhY2ggZmlsZSBhbmQgeW91IGhhdmUgYSBmYXN0IGNvbXB1dGVyCi0gICAgbGV0IHM6bG1heCA9IDI1CisgICAgbGV0IHM6bG1heCA9IDI1MAogICAgIGlmICggczpsbWF4ID4gbGluZSgiJCIpICkKICAgICAgIGxldCBzOmxtYXggPSBsaW5lKCIkIikKICAgICBlbmRpZgpAQCAtNzMsNyArNzQsOCBAQAogIiBTZXQgJ2Zvcm1hdG9wdGlvbnMnIHRvIGJyZWFrIGNvbW1lbnQgYW5kIHRleHQgbGluZXMgYnV0IGFsbG93IGxvbmcgbGluZXMKIHNldGxvY2FsIGZvKz10Y3FsCiAKLXNldGxvY2FsIGluY2x1ZGU9XiNcXD1cXHMqaW5jbHVkZVxcc1xcKworc2V0bG9jYWwgaW5jbHVkZT1eXFxjI1xcPVxccyppbmNsdWRlXFxzXFwrCitzZXRsb2NhbCBzdWZmaXhlc2FkZCs9LmY5NSwuZjkwLC5mb3IsLmYsLkYsLmY3NywuZnRuLC5mcHAKIAogbGV0IHM6Y3Bvc2V0PSZjcG9wdGlvbnMKIHNldCBjcG9wdGlvbnMtPUMKQEAgLTgzLDYgKzg1LDcgQEAKICAgbGV0IHM6bm90ZW5kID0gJ1wlKFw8ZW5kXHNcK1wpXEA8IScKICAgbGV0IHM6bm90c2VsZWN0ID0gJ1wlKFw8c2VsZWN0XHNcK1wpXEA8IScKICAgbGV0IHM6bm90ZWxzZSA9ICdcJShcPGVuZFxzXCtcfFw8ZWxzZVxzXCtcKVxAPCEnCisgIGxldCBzOm5vdHByb2NlZHVyZSA9ICdcJShcc1wrcHJvY2VkdXJlXD5cKVxAIScKICAgbGV0IGI6bWF0Y2hfaWdub3JlY2FzZSA9IDEKICAgbGV0IGI6bWF0Y2hfd29yZHMgPQogICAgIFwgJ1w8c2VsZWN0XHMqY2FzZVw+OicgLiBzOm5vdHNlbGVjdC4gJ1w8Y2FzZVw+Olw8ZW5kXHMqc2VsZWN0XD4sJyAuCkBAIC05NSw3ICs5OCw3IEBACiAgICAgXCBzOm5vdGVuZCAuICdcPGludGVyZmFjZVw+Olw8ZW5kXHMqaW50ZXJmYWNlXD4sJy4KICAgICBcIHM6bm90ZW5kIC4gJ1w8c3Vicm91dGluZVw+Olw8ZW5kXHMqc3Vicm91dGluZVw+LCcuCiAgICAgXCBzOm5vdGVuZCAuICdcPGZ1bmN0aW9uXD46XDxlbmRccypmdW5jdGlvblw+LCcuCi0gICAgXCBzOm5vdGVuZCAuICdcPG1vZHVsZVw+Olw8ZW5kXHMqbW9kdWxlXD4sJy4KKyAgICBcIHM6bm90ZW5kIC4gJ1w8bW9kdWxlXD4nIC4gczpub3Rwcm9jZWR1cmUgLiAnOlw8ZW5kXHMqbW9kdWxlXD4sJy4KICAgICBcIHM6bm90ZW5kIC4gJ1w8cHJvZ3JhbVw+Olw8ZW5kXHMqcHJvZ3JhbVw+JwogZW5kaWYKIApkaWZmIC0tZ2l0IGEvcnVudGltZS9pbmRlbnQvZm9ydHJhbi52aW0gYi9ydW50aW1lL2luZGVudC9mb3J0cmFuLnZpbQppbmRleCBiMTQyNzNhLi40NjU0MTJiIDEwMDY0NAotLS0gYS9ydW50aW1lL2luZGVudC9mb3J0cmFuLnZpbQorKysgYi9ydW50aW1lL2luZGVudC9mb3J0cmFuLnZpbQpAQCAtMiw3ICsyLDcgQEAKICIgTGFuZ3VhZ2U6CUZvcnRyYW45NSAoYW5kIEZvcnRyYW45MCwgRm9ydHJhbjc3LCBGIGFuZCBlbGY5MCkKICIgVmVyc2lvbjoJMC4zNgogIiBVUkw6CQlodHRwOi8vd3d3LnVuYi5jYS9jaGVtL2FqaXQvaW5kZW50L2ZvcnRyYW4udmltCi0iIExhc3QgQ2hhbmdlOgkyMDA0IEFwci4gMDUKKyIgTGFzdCBDaGFuZ2U6CTIwMDYgQXByLiAwMgogIiBNYWludGFpbmVyOglBaml0IEouIFRoYWtrYXIgPGFqaXRAdW5iLmNhPjsgPGh0dHA6Ly93d3cudW5iLmNhL2NoZW0vYWppdC8+CiAiIFVzYWdlOglEbyA6aGVscCBmb3J0cmFuLWluZGVudCBmcm9tIFZpbQogCkBAIC0xMiw5ICsxMiw2IEBACiBlbmRpZgogbGV0IGI6ZGlkX2luZGVudCA9IDEKIAotbGV0IHM6Y3Bvc2V0PSZjcG9wdGlvbnMKLXNldCBjcG9wdGlvbnMtPUMKLQogc2V0bG9jYWwgaW5kZW50a2V5cys9PX5lbmQsPX5jYXNlLD1+aWYsPX5lbHNlLD1+ZG8sPX53aGVyZSw9fmVsc2V3aGVyZSw9fnNlbGVjdAogc2V0bG9jYWwgaW5kZW50a2V5cys9PX5lbmRpZiw9fmVuZGRvLD1+ZW5kd2hlcmUsPX5lbmRzZWxlY3QKIApAQCAtMzAsMTEgKzI3LDExIEBACiAgIGVsc2UKICAgICAiIGY5MCBhbmQgZjk1IGFsbG93IGJvdGggZml4ZWQgYW5kIGZyZWUgc291cmNlIGZvcm0KICAgICAiIGFzc3VtZSBmaXhlZCBzb3VyY2UgZm9ybSB1bmxlc3Mgc2lnbnMgb2YgZnJlZSBzb3VyY2UgZm9ybQotICAgICIgYXJlIGRldGVjdGVkIGluIHRoZSBmaXJzdCBmaXZlIGNvbHVtbnMgb2YgdGhlIGZpcnN0IDI1IGxpbmVzCisgICAgIiBhcmUgZGV0ZWN0ZWQgaW4gdGhlIGZpcnN0IGZpdmUgY29sdW1ucyBvZiB0aGUgZmlyc3QgMjUwIGxpbmVzCiAgICAgIiBEZXRlY3Rpb24gYmVjb21lcyBtb3JlIGFjY3VyYXRlIGFuZCB0aW1lLWNvbnN1bWluZyBpZiBtb3JlIGxpbmVzCiAgICAgIiBhcmUgY2hlY2tlZC4gSW5jcmVhc2UgdGhlIGxpbWl0IGJlbG93IGlmIHlvdSBrZWVwIGxvdHMgb2YgY29tbWVudHMgYXQKICAgICAiIHRoZSB2ZXJ5IHRvcCBvZiBlYWNoIGZpbGUgYW5kIHlvdSBoYXZlIGEgZmFzdCBjb21wdXRlcgotICAgIGxldCBzOmxtYXggPSAyNQorICAgIGxldCBzOmxtYXggPSAyNTAKICAgICBpZiAoIHM6bG1heCA+IGxpbmUoIiQiKSApCiAgICAgICBsZXQgczpsbWF4ID0gbGluZSgiJCIpCiAgICAgZW5kaWYKQEAgLTY0LDYgKzYxLDkgQEAKICAgZW5kaWYKIGVuZGlmCiAKK2xldCBzOmNwb3NldD0mY3BvcHRpb25zCitzZXQgY3BvcHRpb25zLT1DCisKIGZ1bmN0aW9uIEZvcnRyYW5HZXRJbmRlbnQobG51bSkKICAgbGV0IGluZCA9IGluZGVudChhOmxudW0pCiAgIGxldCBwcmV2bGluZT1nZXRsaW5lKGE6bG51bSkKZGlmZiAtLWdpdCBhL3J1bnRpbWUvaW5kZW50L3B5dGhvbi52aW0gYi9ydW50aW1lL2luZGVudC9weXRob24udmltCmluZGV4IDNiNTYwYTguLmYyNjhiZjkgMTAwNjQ0Ci0tLSBhL3J1bnRpbWUvaW5kZW50L3B5dGhvbi52aW0KKysrIGIvcnVudGltZS9pbmRlbnQvcHl0aG9uLnZpbQpAQCAtNTYsNyArNTYsNyBAQAogICAiIFRyaWNrOiB1c2UgdGhlIG5vbi1leGlzdGluZyAiZHVtbXkiIHZhcmlhYmxlIHRvIGJyZWFrIG91dCBvZiB0aGUgbG9vcCB3aGVuCiAgICIgZ29pbmcgdG9vIGZhciBiYWNrLgogICBjYWxsIGN1cnNvcihwbG51bSwgMSkKLSAgbGV0IHBhcmxudW0gPSBzZWFyY2hwYWlyKCcoJywgJycsICcpJywgJ25iVycsCisgIGxldCBwYXJsbnVtID0gc2VhcmNocGFpcignKFx8e1x8XFsnLCAnJywgJylcfH1cfFxdJywgJ25iVycsCiAJICBcICJsaW5lKCcuJykgPCAiIC4gKHBsbnVtIC0gczptYXhvZmYpIC4gIiA/IGR1bW15IDoiCiAJICBcIC4gIiBzeW5JRGF0dHIoc3luSUQobGluZSgnLicpLCBjb2woJy4nKSwgMSksICduYW1lJykiCiAJICBcIC4gIiA9fiAnXFwoQ29tbWVudFxcfFN0cmluZ1xcKSQnIikKQEAgLTc1LDE0ICs3NSwxNCBAQAogICAiICAgICAgICsgYgogICAiICAgICAgICsgYykKICAgY2FsbCBjdXJzb3IoYTpsbnVtLCAxKQotICBsZXQgcCA9IHNlYXJjaHBhaXIoJygnLCAnJywgJyknLCAnYlcnLAorICBsZXQgcCA9IHNlYXJjaHBhaXIoJyhcfHtcfFxbJywgJycsICcpXHx9XHxcXScsICdiVycsCiAJICBcICJsaW5lKCcuJykgPCAiIC4gKGE6bG51bSAtIHM6bWF4b2ZmKSAuICIgPyBkdW1teSA6IgogCSAgXCAuICIgc3luSURhdHRyKHN5bklEKGxpbmUoJy4nKSwgY29sKCcuJyksIDEpLCAnbmFtZScpIgogCSAgXCAuICIgPX4gJ1xcKENvbW1lbnRcXHxTdHJpbmdcXCkkJyIpCiAgIGlmIHAgPiAwCiAgICAgaWYgcCA9PSBwbG51bQogICAgICAgIiBXaGVuIHRoZSBzdGFydCBpcyBpbnNpZGUgcGFyZW50aGVzaXMsIG9ubHkgaW5kZW50IG9uZSAnc2hpZnR3aWR0aCcuCi0gICAgICBsZXQgcHAgPSBzZWFyY2hwYWlyKCcoJywgJycsICcpJywgJ2JXJywKKyAgICAgIGxldCBwcCA9IHNlYXJjaHBhaXIoJyhcfHtcfFxbJywgJycsICcpXHx9XHxcXScsICdiVycsCiAJICBcICJsaW5lKCcuJykgPCAiIC4gKGE6bG51bSAtIHM6bWF4b2ZmKSAuICIgPyBkdW1teSA6IgogCSAgXCAuICIgc3luSURhdHRyKHN5bklEKGxpbmUoJy4nKSwgY29sKCcuJyksIDEpLCAnbmFtZScpIgogCSAgXCAuICIgPX4gJ1xcKENvbW1lbnRcXHxTdHJpbmdcXCkkJyIpCmRpZmYgLS1naXQgYS9ydW50aW1lL2xhbmcvbWVudV9kZV9kZS5sYXRpbjEudmltIGIvcnVudGltZS9sYW5nL21lbnVfZGVfZGUubGF0aW4xLnZpbQppbmRleCA2MjU0ZDA5Li5hMDhhNDFjIDEwMDY0NAotLS0gYS9ydW50aW1lL2xhbmcvbWVudV9kZV9kZS5sYXRpbjEudmltCisrKyBiL3J1bnRpbWUvbGFuZy9tZW51X2RlX2RlLmxhdGluMS52aW0KQEAgLTEwMiw3ICsxMDIsNyBAQAogCiAiIHt7eyAgVE9PTFMgLyBXRVJLWkVVR0UKIGlmIGhhcygic3BlbGwiKQotICAgIG1lbnV0cmFucyAmU3BlbGxpbmcJCQkJCSZSZWNodHNjaHJlaWJwcvxmdW5nCisgICAgbWVudXRyYW5zICZTcGVsbGluZwkJCQkJJlJlY2h0c2NocmVpYnVuZwogICAgIG1lbnV0cmFucyAmU3BlbGxcIENoZWNrXCBPbgkJCQkmUmVjaHRzY2hyZWlicHL8ZnVuZ1wgQW4KICAgICBtZW51dHJhbnMgU3BlbGxcIENoZWNrXCAmT2ZmCQkJUmVjaHRzY2hyZWlicHL8ZnVuZ1wgJkF1cwogICAgIG1lbnV0cmFucyBUb1wgJk5leHRcIGVycm9yPFRhYj5dcwkJCVp1bVwgJk7kY2hzdGVuXCBGZWhsZXI8VGFiPl1zCmRpZmYgLS1naXQgYS9ydW50aW1lL2xhbmcvbWVudV9pdF9pdC5sYXRpbjEudmltIGIvcnVudGltZS9sYW5nL21lbnVfaXRfaXQubGF0aW4xLnZpbQppbmRleCA2NTIyOGUxLi4xODQ5NTFjIDEwMDY0NAotLS0gYS9ydW50aW1lL2xhbmcvbWVudV9pdF9pdC5sYXRpbjEudmltCisrKyBiL3J1bnRpbWUvbGFuZy9tZW51X2l0X2l0LmxhdGluMS52aW0KQEAgLTEsNyArMSw3IEBACiAiIE1lbnUgVHJhbnNsYXRpb25zOglJdGFsaWFuIC8gSXRhbGlhbm8KLSIgTWFpbnRhaW5lcjoJCUFudG9uaW8gQ29sb21ibyA8YXpjMTBAeWFob28uY29tPgotIgkJCVZsYWQgU2FuZHJpbmkgPHNhdG9yNzJAbGliZXJvLml0PgotIiBMYXN0IENoYW5nZToJMjAwNSBBdWcgMTMKKyIgTWFpbnRhaW5lcjoJCUFudG9uaW8gQ29sb21ibyA8YXpjMTAwQGdtYWlsLmNvbT4KKyIJCQlWbGFkIFNhbmRyaW5pIDx2bGFkLmdlbnRseUBnbWFpbC5jb20+CisiIExhc3QgQ2hhbmdlOgkyMDA2IEFwciAwMwogCiAiIFF1aXQgd2hlbiBtZW51IHRyYW5zbGF0aW9ucyBoYXZlIGFscmVhZHkgYmVlbiBkb25lLgogaWYgZXhpc3RzKCJkaWRfbWVudV90cmFucyIpCkBAIC0zMyw2ICszMyw3IEBACiAiCiBtZW51dCAmT3BlblwuXC5cLjxUYWI+OmUJCSZBcHJpXC5cLlwuPFRhYj46ZQogbWVudXQgU3AmbGl0LU9wZW5cLlwuXC48VGFiPjpzcAlBJnByaVwgbnVvdmFcIEZpbmVzdHJhXC5cLlwuPFRhYj46c3AKK21lbnV0IE9wZW5cIFRhYlwuXC5cLjxUYWI+OnRhYm5ldyBBcHJpXCBudW92YVwgJkxpbmd1ZXR0YVwuXC5cLjxUYWI+OnRhYm5ldwogbWVudXQgJk5ldzxUYWI+OmVuZXcJCSZOdW92bzxUYWI+OmVuZXcKIG1lbnV0ICZDbG9zZTxUYWI+OmNsb3NlCQkmQ2hpdWRpPFRhYj46Y2xvc2UKIG1lbnV0ICZTYXZlPFRhYj46dwkJCSZTYWx2YTxUYWI+OncKQEAgLTg0LDcgKzg1LDcgQEAKIAogbWVudXQgVG9nZ2xlXCBJbnNlcnRcICZNb2RlPFRhYj46c2V0XCBpbSEJJk1vZGFsaXTgXCBJbnNlcmltZW50b1wgU+wvTm88VGFiPjpzZXRcIGltIQogbWVudXQgVG9nZ2xlXCBWaVwgQyZvbXBhdGlibGU8VGFiPjpzZXRcIGNwIQlDJm9tcGF0aWJpbGVcIFZpXCBT7C9ObzxUYWI+OnNldFwgY3AhCi1tZW51dCBTZWFyY2hcICZQYXRoXC5cLlwuCUNhJm1taW5vXCBkaVwgcmljZXJjYVwuXC5cLgorbWVudXQgU2VhcmNoXCAmUGF0aFwuXC5cLgkmUGVyY29yc29cIGRpXCByaWNlcmNhXC5cLlwuCiBtZW51dCBUYSZnXCBGaWxlc1wuXC5cLgkJRmlsZVwgVGEmZ1wuXC5cLgogIgogIiBPcHppb25pIEdVSQpAQCAtMTY2LDcgKzE2Nyw3IEBACiBtZW51dCBTcGVsbFwgQ2hlY2tcICZPZmYJCSZEaXNhdHRpdmFcIGNvbnRyb2xsb1wgb3J0b2dyYWZpY28KIG1lbnV0IFRvXCAmTmV4dFwgZXJyb3I8VGFiPl1zCQlFcnJvcmVcICZTZWd1ZW50ZTx0YWI+XXMKIG1lbnV0IFRvXCAmUHJldmlvdXNcIGVycm9yPFRhYj5bcwlFcnJvcmVcICZQcmVjZWRlbnRlPHRhYj5bcwotbWVudXQgU3VnZ2VzdFwgJkNvcnJlY3Rpb25zPFRhYj56PwkmU3VnZ2VyaW1lbnRpPFRhYj56PworbWVudXQgU3VnZ2VzdFwgJkNvcnJlY3Rpb25zPFRhYj56PQkmU3VnZ2VyaW1lbnRpPFRhYj56PQogbWVudXQgJlJlcGVhdFwgY29ycmVjdGlvbjxUYWI+OnNwZWxscmVwYWxsCSZSaXBldGlcIGNvcnJlemlvbmU8VGFiPjpzcGVsbHJlcGFsbAogbWVudXQgU2V0XCBsYW5ndWFnZVwgdG9cICJlbiIJCUltcG9zdGFcIGxpbmd1YVwgYVwgImVuIgogbWVudXQgU2V0XCBsYW5ndWFnZVwgdG9cICJlbl9hdSIJSW1wb3N0YVwgbGluZ3VhXCBhXCAiZW5fYXUiCmRpZmYgLS1naXQgYS9ydW50aW1lL21lbnUudmltIGIvcnVudGltZS9tZW51LnZpbQppbmRleCBhOWIxYzBlLi4zMWUyZmIzIDEwMDY0NAotLS0gYS9ydW50aW1lL21lbnUudmltCisrKyBiL3J1bnRpbWUvbWVudS52aW0KQEAgLTIsNyArMiw3IEBACiAiIFlvdSBjYW4gYWxzbyB1c2UgdGhpcyBhcyBhIHN0YXJ0IGZvciB5b3VyIG93biBzZXQgb2YgbWVudXMuCiAiCiAiIE1haW50YWluZXI6CUJyYW0gTW9vbGVuYWFyIDxCcmFtQHZpbS5vcmc+Ci0iIExhc3QgQ2hhbmdlOgkyMDA2IE1hciAwOQorIiBMYXN0IENoYW5nZToJMjAwNiBBcHIgMDIKIAogIiBOb3RlIHRoYXQgIjphbiIgKHNob3J0IGZvciAiOmFub3JlbWVudSIpIGlzIG9mdGVuIHVzZWQgdG8gbWFrZSBhIG1lbnUgd29yawogIiBpbiBhbGwgbW9kZXMgYW5kIGF2b2lkIHNpZGUgZWZmZWN0cyBmcm9tIG1hcHBpbmdzIGRlZmluZWQgYnkgdGhlIHVzZXIuCkBAIC0xNzcsNiArMTc3LDI4IEBACiAKIGFuIDIwLjQyNQkgJkVkaXQuLVNFUDMtCQkJCTxOb3A+CiBhbiAyMC40MzAJICZFZGl0LlNldHRpbmdzXCAmV2luZG93CQk6b3B0aW9uczxDUj4KK2FuIDIwLjQzNQkgJkVkaXQuU3RhcnR1cFwgJlNldHRpbmdzCQk6Y2FsbCA8U0lEPkVkaXRWaW1yYygpPENSPgorCitmdW4hIHM6RWRpdFZpbXJjKCkKKyAgaWYgJE1ZVklNUkMgIT0gJycKKyAgICBsZXQgZm5hbWUgPSAiJE1ZVklNUkMiCisgIGVsc2VpZiBoYXMoIndpbjMyIikgfHwgaGFzKCJkb3MzMiIpIHx8IGhhcygiZG9zMTYiKSB8fCBoYXMoIm9zMiIpCisgICAgaWYgJEhPTUUgIT0gJycKKyAgICAgIGxldCBmbmFtZSA9ICIkSE9NRS9fdmltcmMiCisgICAgZWxzZQorICAgICAgbGV0IGZuYW1lID0gIiRWSU0vX3ZpbXJjIgorICAgIGVuZGlmCisgIGVsc2VpZiBoYXMoImFtaWdhIikKKyAgICBsZXQgZm5hbWUgPSAiczoudmltcmMiCisgIGVsc2UKKyAgICBsZXQgZm5hbWUgPSAiJEhPTUUvLnZpbXJjIgorICBlbmRpZgorICBpZiAmbW9kCisgICAgZXhlICJzcGxpdCAiIC4gZm5hbWUKKyAgZWxzZQorICAgIGV4ZSAiZWRpdCAiIC4gZm5hbWUKKyAgZW5kaWYKK2VuZGZ1bgogCiBmdW4hIHM6Rml4RlRleHQoKQogICAiIEZpeCB0ZXh0IGluIG5hbWVsZXNzIHJlZ2lzdGVyIHRvIGJlIHVzZWQgd2l0aCA6cHJvbXB0ZmluZC4KZGlmZiAtLWdpdCBhL3J1bnRpbWUvbXN3aW4udmltIGIvcnVudGltZS9tc3dpbi52aW0KaW5kZXggZmIyOTIzNy4uMWNlZWY4NCAxMDA2NDQKLS0tIGEvcnVudGltZS9tc3dpbi52aW0KKysrIGIvcnVudGltZS9tc3dpbi52aW0KQEAgLTEsNyArMSw3IEBACiAiIFNldCBvcHRpb25zIGFuZCBhZGQgbWFwcGluZyBzdWNoIHRoYXQgVmltIGJlaGF2ZXMgYSBsb3QgbGlrZSBNUy1XaW5kb3dzCiAiCiAiIE1haW50YWluZXI6CUJyYW0gTW9vbGVuYWFyIDxCcmFtQHZpbS5vcmc+Ci0iIExhc3QgY2hhbmdlOgkyMDA2IE1hciAyOAorIiBMYXN0IGNoYW5nZToJMjAwNiBBcHIgMDIKIAogIiBiYWlsIG91dCBpZiB0aGlzIGlzbid0IHdhbnRlZCAobXJzdmltLnZpbSB1c2VzIHRoaXMpLgogaWYgZXhpc3RzKCJnOnNraXBfbG9hZGluZ19tc3dpbiIpICYmIGc6c2tpcF9sb2FkaW5nX21zd2luCkBAIC04Myw2ICs4Myw4IEBACiBpbm9yZW1hcCA8Qy1BPiA8Qy1PPmdnPEMtTz5nSDxDLU8+RwogY25vcmVtYXAgPEMtQT4gPEMtQz5nZ2dIPEMtTz5HCiBvbm9yZW1hcCA8Qy1BPiA8Qy1DPmdnZ0g8Qy1PPkcKK3Nub3JlbWFwIDxDLUE+IDxDLUM+Z2dnSDxDLU8+RworeG5vcmVtYXAgPEMtQT4gPEMtQz5nZ1ZHCiAKICIgQ1RSTC1UYWIgaXMgTmV4dCB3aW5kb3cKIG5vcmVtYXAgPEMtVGFiPiA8Qy1XPncKZGlmZiAtLWdpdCBhL3J1bnRpbWUvcGx1Z2luL21hdGNocGFyZW4udmltIGIvcnVudGltZS9wbHVnaW4vbWF0Y2hwYXJlbi52aW0KaW5kZXggNTc1MDUxNy4uYTM0NzVmMCAxMDA2NDQKLS0tIGEvcnVudGltZS9wbHVnaW4vbWF0Y2hwYXJlbi52aW0KKysrIGIvcnVudGltZS9wbHVnaW4vbWF0Y2hwYXJlbi52aW0KQEAgLTEsNiArMSw2IEBACiAiIFZpbSBwbHVnaW4gZm9yIHNob3dpbmcgbWF0Y2hpbmcgcGFyZW5zCiAiIE1haW50YWluZXI6ICBCcmFtIE1vb2xlbmFhciA8QnJhbUB2aW0ub3JnPgotIiBMYXN0IENoYW5nZTogMjAwNiBNYXIgMjkKKyIgTGFzdCBDaGFuZ2U6IDIwMDYgQXByIDA0CiAKICIgRXhpdCBxdWlja2x5IHdoZW46CiAiIC0gdGhpcyBwbHVnaW4gd2FzIGFscmVhZHkgbG9hZGVkIChvciBkaXNhYmxlZCkKQEAgLTE2LDggKzE2LDYgQEAKICAgYXV0b2NtZCEgQ3Vyc29yTW92ZWQsQ3Vyc29yTW92ZWRJICogY2FsbCBzOkhpZ2hsaWdodF9NYXRjaGluZ19QYWlyKCkKIGF1Z3JvdXAgRU5ECiAKLWxldCBzOnBhcmVuX2hsX29uID0gMAotCiAiIFNraXAgdGhlIHJlc3QgaWYgaXQgd2FzIGFscmVhZHkgZG9uZS4KIGlmIGV4aXN0cygiKnM6SGlnaGxpZ2h0X01hdGNoaW5nX1BhaXIiKQogICBmaW5pc2gKQEAgLTMwLDkgKzI4LDkgQEAKICIgZm9yIGFueSBtYXRjaGluZyBwYXJlbi4KIGZ1bmN0aW9uISBzOkhpZ2hsaWdodF9NYXRjaGluZ19QYWlyKCkKICAgIiBSZW1vdmUgYW55IHByZXZpb3VzIG1hdGNoLgotICBpZiBzOnBhcmVuX2hsX29uCisgIGlmIGV4aXN0cygndzpwYXJlbl9obF9vbicpICYmIHc6cGFyZW5faGxfb24KICAgICAzbWF0Y2ggbm9uZQotICAgIGxldCBzOnBhcmVuX2hsX29uID0gMAorICAgIGxldCB3OnBhcmVuX2hsX29uID0gMAogICBlbmRpZgogCiAgICIgQXZvaWQgdGhhdCB3ZSByZW1vdmUgdGhlIHBvcHVwIG1lbnUuCkBAIC02MywyMSArNjEsMjUgQEAKIAogICAiIEZpZ3VyZSBvdXQgdGhlIGFyZ3VtZW50cyBmb3Igc2VhcmNocGFpcnBvcygpLgogICAiIFJlc3RyaWN0IHRoZSBzZWFyY2ggdG8gdmlzaWJsZSBsaW5lcyB3aXRoICJzdG9wbGluZSIuCi0gICIgQW5kIGF2b2lkIHNlYXJjaGluZyB2ZXJ5IGZhciAoZS5nLiwgZm9yIGNsb3NlZCBmb2xkcykKKyAgIiBBbmQgYXZvaWQgc2VhcmNoaW5nIHZlcnkgZmFyIChlLmcuLCBmb3IgY2xvc2VkIGZvbGRzIGFuZCBsb25nIGxpbmVzKQogICBpZiBpICUgMiA9PSAwCiAgICAgbGV0IHNfZmxhZ3MgPSAnblcnCiAgICAgbGV0IGMyID0gcGxpc3RbaSArIDFdCi0gICAgbGV0IHN0b3BsaW5lID0gbGluZSgndyQnKQotICAgIGlmIHN0b3BsaW5lID4gY19sbnVtICsgMTAwCi0gICAgICBsZXQgc3RvcGxpbmUgPSBjX2xudSArIDEwMAorICAgIGlmIGhhcygiYnl0ZV9vZmZzZXQiKSAmJiBoYXMoInN5bnRheF9pdGVtcyIpICYmICZzbWMgPiAwCisgICAgICBsZXQgc3RvcGJ5dGUgPSBtaW4oW2xpbmUyYnl0ZSgiJCIpLCBsaW5lMmJ5dGUoIi4iKSArIGNvbCgiLiIpICsgJnNtYyAqIDJdKQorICAgICAgbGV0IHN0b3BsaW5lID0gbWluKFtsaW5lKCd3JCcpLCBieXRlMmxpbmUoc3RvcGJ5dGUpXSkKKyAgICBlbHNlCisgICAgICBsZXQgc3RvcGxpbmUgPSBtaW4oW2xpbmUoJ3ckJyksIGNfbG51bSArIDEwMF0pCiAgICAgZW5kaWYKICAgZWxzZQogICAgIGxldCBzX2ZsYWdzID0gJ25iVycKICAgICBsZXQgYzIgPSBjCiAgICAgbGV0IGMgPSBwbGlzdFtpIC0gMV0KLSAgICBsZXQgc3RvcGxpbmUgPSBsaW5lKCd3MCcpCi0gICAgaWYgc3RvcGxpbmUgPCBjX2xudW0gLSAxMDAKLSAgICAgIGxldCBzdG9wbGluZSA9IGNfbG51IC0gMTAwCisgICAgaWYgaGFzKCJieXRlX29mZnNldCIpICYmIGhhcygic3ludGF4X2l0ZW1zIikgJiYgJnNtYyA+IDAKKyAgICAgIGxldCBzdG9wYnl0ZSA9IG1heChbMSwgbGluZTJieXRlKCIuIikgKyBjb2woIi4iKSAtICZzbWMgKiAyXSkKKyAgICAgIGxldCBzdG9wbGluZSA9IG1heChbbGluZSgndzAnKSwgYnl0ZTJsaW5lKHN0b3BieXRlKV0pCisgICAgZWxzZQorICAgICAgbGV0IHN0b3BsaW5lID0gbWF4KFtsaW5lKCd3MCcpLCBjX2xudW0gLSAxMDBdKQogICAgIGVuZGlmCiAgIGVuZGlmCiAgIGlmIGMgPT0gJ1snCkBAIC04Niw3ICs4OCw3IEBACiAgIGVuZGlmCiAKICAgIiBXaGVuIG5vdCBpbiBhIHN0cmluZyBvciBjb21tZW50IGlnbm9yZSBtYXRjaGVzIGluc2lkZSB0aGVtLgotICBsZXQgc19za2lwID0nc3luSURhdHRyKHN5bklEKGNfbG51bSwgY19jb2wgLSBiZWZvcmUsIDApLCAibmFtZSIpICcgLgorICBsZXQgc19za2lwID0nc3luSURhdHRyKHN5bklEKGxpbmUoIi4iKSwgY29sKCIuIikgLSBiZWZvcmUsIDApLCAibmFtZSIpICcgLgogCVwgJz1+PyAgInN0cmluZ1xcfGNvbW1lbnQiJwogICBleGVjdXRlICdpZicgc19za2lwICd8IGxldCBzX3NraXAgPSAwIHwgZW5kaWYnCiAKQEAgLTEwNSw3ICsxMDcsNyBAQAogICBpZiBtX2xudW0gPiAwICYmIG1fbG51bSA+PSBsaW5lKCd3MCcpICYmIG1fbG51bSA8PSBsaW5lKCd3JCcpCiAgICAgZXhlICczbWF0Y2ggTWF0Y2hQYXJlbiAvXChcJScgLiBjX2xudW0gLiAnbFwlJyAuIChjX2NvbCAtIGJlZm9yZSkgLgogCSAgXCAnY1wpXHxcKFwlJyAuIG1fbG51bSAuICdsXCUnIC4gbV9jb2wgLiAnY1wpLycKLSAgICBsZXQgczpwYXJlbl9obF9vbiA9IDEKKyAgICBsZXQgdzpwYXJlbl9obF9vbiA9IDEKICAgZW5kaWYKIGVuZGZ1bmN0aW9uCiAKZGlmZiAtLWdpdCBhL3J1bnRpbWUvcGx1Z2luL3ZpbWJhbGxQbHVnaW4udmltIGIvcnVudGltZS9wbHVnaW4vdmltYmFsbFBsdWdpbi52aW0KaW5kZXggY2I3MTQwNC4uMzUxNTg4OSAxMDA2NDQKLS0tIGEvcnVudGltZS9wbHVnaW4vdmltYmFsbFBsdWdpbi52aW0KKysrIGIvcnVudGltZS9wbHVnaW4vdmltYmFsbFBsdWdpbi52aW0KQEAgLTIxLDcgKzIxLDcgQEAKIGNvbSEgLXJhIC1uYT0rIC1iYW5nIE1rVmltYmFsbCBjYWxsIHZpbWJhbGwjTWtWaW1iYWxsKDxsaW5lMT4sPGxpbmUyPiw8YmFuZz4wLDxmLWFyZ3M+KQogY29tISAtbmE9MCBVc2VWaW1iYWxsICBjYWxsIHZpbWJhbGwjVmltYmFsbCgxKQogY29tISAtbmE9MCBWaW1iYWxsTGlzdCBjYWxsIHZpbWJhbGwjVmltYmFsbCgwKQotYXUgQnVmUmVhZFBvc3QgKi52YmEgZWNob2hsIFdhcm5pbmdNc2cgfCBlY2hvICJTb3VyY2UgdGhpcyBmaWxlIHRvIGV4dHJhY3QgaXQhICg6c28gJSkiIHwgZWNob2hsIE5vbmUKK2F1IEJ1ZkVudGVyICoudmJhIGVjaG9obCBXYXJuaW5nTXNnIHwgZWNobyAiU291cmNlIHRoaXMgZmlsZSB0byBleHRyYWN0IGl0ISAoOnNvICUpIiB8IGVjaG9obCBOb25lCiAKIGxldCAmY3BvPSBzOmtlZXBjcG8KIHVubGV0IHM6a2VlcGNwbwpkaWZmIC0tZ2l0IGEvcnVudGltZS9zeW50YXgvYy52aW0gYi9ydW50aW1lL3N5bnRheC9jLnZpbQppbmRleCBmODI2MjYyLi5lMjRkYmUzIDEwMDY0NAotLS0gYS9ydW50aW1lL3N5bnRheC9jLnZpbQorKysgYi9ydW50aW1lL3N5bnRheC9jLnZpbQpAQCAtMSw3ICsxLDcgQEAKICIgVmltIHN5bnRheCBmaWxlCiAiIExhbmd1YWdlOglDCiAiIE1haW50YWluZXI6CUJyYW0gTW9vbGVuYWFyIDxCcmFtQHZpbS5vcmc+Ci0iIExhc3QgQ2hhbmdlOgkyMDA1IEp1biAyMAorIiBMYXN0IENoYW5nZToJMjAwNiBBcHIgMDUKIAogIiBRdWl0IHdoZW4gYSAoY3VzdG9tKSBzeW50YXggZmlsZSB3YXMgYWxyZWFkeSBsb2FkZWQKIGlmIGV4aXN0cygiYjpjdXJyZW50X3N5bnRheCIpCkBAIC0xODQsNyArMTg0LDcgQEAKIAogaWYgIWV4aXN0cygiY19ub19hbnNpIikgfHwgZXhpc3RzKCJjX2Fuc2lfY29uc3RhbnRzIikgfHwgZXhpc3RzKCJjX2dudSIpCiAgIGlmIGV4aXN0cygiY19nbnUiKQotICAgIHN5biBrZXl3b3JkIGNDb25zdGFudCBfX0dOVUNfXyBfX0ZVTkNUSU9OX18gX19QUkVUVFlfRlVOQ1RJT05fXworICAgIHN5biBrZXl3b3JkIGNDb25zdGFudCBfX0dOVUNfXyBfX0ZVTkNUSU9OX18gX19QUkVUVFlfRlVOQ1RJT05fXyBfX2Z1bmNfXwogICBlbmRpZgogICBzeW4ga2V5d29yZCBjQ29uc3RhbnQgX19MSU5FX18gX19GSUxFX18gX19EQVRFX18gX19USU1FX18gX19TVERDX18KICAgc3luIGtleXdvcmQgY0NvbnN0YW50IF9fU1REQ19WRVJTSU9OX18KQEAgLTE5NSw2ICsxOTUsNyBAQAogICBzeW4ga2V5d29yZCBjQ29uc3RhbnQgU0NIQVJfTUlOIFNJTlRfTUlOIFNMT05HX01JTiBTU0hSVF9NSU4KICAgc3luIGtleXdvcmQgY0NvbnN0YW50IFNDSEFSX01BWCBTSU5UX01BWCBTTE9OR19NQVggU1NIUlRfTUFYCiAgIGlmICFleGlzdHMoImNfbm9fYzk5IikKKyAgICBzeW4ga2V5d29yZCBjQ29uc3RhbnQgX19mdW5jX18KICAgICBzeW4ga2V5d29yZCBjQ29uc3RhbnQgTExPTkdfTUFYIFVMTE9OR19NQVgKICAgICBzeW4ga2V5d29yZCBjQ29uc3RhbnQgSU5UOF9NSU4gSU5UMTZfTUlOIElOVDMyX01JTiBJTlQ2NF9NSU4KICAgICBzeW4ga2V5d29yZCBjQ29uc3RhbnQgSU5UOF9NQVggSU5UMTZfTUFYIElOVDMyX01BWCBJTlQ2NF9NQVgKZGlmZiAtLWdpdCBhL3J1bnRpbWUvc3ludGF4L2Rlc2MudmltIGIvcnVudGltZS9zeW50YXgvZGVzYy52aW0KaW5kZXggMGQwZGJiZC4uYTQ1NGZiMCAxMDA2NDQKLS0tIGEvcnVudGltZS9zeW50YXgvZGVzYy52aW0KKysrIGIvcnVudGltZS9zeW50YXgvZGVzYy52aW0KQEAgLTEsNyArMSw3IEBACiAiIFZpbSBzeW50YXggZmlsZQotIiBMYW5ndWFnZToJUk9DS0xpbnV4IC5kZXNjCi0iIE1haW50YWluZXI6CVBpb3RyIEVzZGVuLVRlbXBza2kgPGVzZGVuQHJvY2tsaW51eC5vcmc+Ci0iIExhc3QgQ2hhbmdlOgkyMDAyIEFwciAyMworIiBMYW5ndWFnZToJVDIgLyBST0NLIExpbnV4IC5kZXNjCisiIE1haW50YWluZXI6CVJlbsOpIFJlYmUgPHJlbmVAZXhhY3Rjb2RlLmRlPiwgUGlvdHIgRXNkZW4tVGVtcHNraSA8ZXNkZW5Acm9ja2xpbnV4Lm9yZz4KKyIgTGFzdCBDaGFuZ2U6CTIwMDYgTWFyIDMwCiAKICIgRm9yIHZlcnNpb24gNS54OiBDbGVhciBhbGwgc3ludGF4IGl0ZW1zCiAiIEZvciB2ZXJzaW9uIDYueDogUXVpdCB3aGVuIGEgc3ludGF4IGZpbGUgd2FzIGFscmVhZHkgbG9hZGVkCkBAIC0xNCwxMCArMTQsMTEgQEAKICIgc3ludGF4IGRlZmluaXRpb25zCiAKIHNldGwgaXNrZXl3b3JkKz0tCi1zeW4ga2V5d29yZCBkZXNjRmxhZyBESUVUTElCQyBjb250YWluZWQKK3N5biBrZXl3b3JkIGRlc2NGbGFnIERJRVRMSUJDIEtBRkZFIEpBSUwgRlBJQy1RVUlSSyBOTy1MSUJUT09MLVFVSVJLIEFVVE9NQUtFLVFVSVJLIE5PLUFTLU5FRURFRCBOTy1TU1AgY29udGFpbmVkCiBzeW4ga2V5d29yZCBkZXNjTGljZW5zZSBVbmtub3duIEdQTCBMR1BMIEZETCBNSVQgQlNEIE9wZW5Tb3VyY2UgRnJlZS10by11c2UgQ29tbWVyY2lhbCBjb250YWluZWQKIAogIiB0YWdzCitzeW4gbWF0Y2ggZGVzY1RhZyAvXlxbXChDT1BZXClcXS8KIHN5biBtYXRjaCBkZXNjVGFnIC9eXFtcKElcfFRJVExFXClcXS8KIHN5biBtYXRjaCBkZXNjVGFnIC9eXFtcKFRcfFRFWFRcKVxdLyBjb250YWluZWQKIHN5biBtYXRjaCBkZXNjVGFnIC9eXFtcKFVcfFVSTFwpXF0vCkBAIC0yOSw2ICszMCw3IEBACiBzeW4gbWF0Y2ggZGVzY1RhZyAvXlxbXChSXHxBUkNIXHxBUkNISVRFQ1RVUkVcKVxdLwogc3luIG1hdGNoIGRlc2NUYWcgL15cW1woTFx8TElDRU5TRVwpXF0vIGNvbnRhaW5lZAogc3luIG1hdGNoIGRlc2NUYWcgL15cW1woU1x8U1RBVFVTXClcXS8KK3N5biBtYXRjaCBkZXNjVGFnIC9eXFtcKE9cfENPTkZcKVxdLwogc3luIG1hdGNoIGRlc2NUYWcgL15cW1woVlx8VkVSXHxWRVJTSU9OXClcXS8KIHN5biBtYXRjaCBkZXNjVGFnIC9eXFtcKFBcfFBSSVx8UFJJT1JJVFlcKVxdLyBuZXh0Z3JvdXA9ZGVzY0luc3RhbGwgc2tpcHdoaXRlCiBzeW4gbWF0Y2ggZGVzY1RhZyAvXlxbXChEXHxET1dOXHxET1dOTE9BRFwpXF0vIG5leHRncm91cD1kZXNjU3VtIHNraXB3aGl0ZQpAQCAtMzYsNyArMzgsNyBAQAogIiBtaXNjCiBzeW4gbWF0Y2ggZGVzY1VybCAvXHdcKzpcL1wvXFNcKy8KIHN5biBtYXRjaCBkZXNjQ2F0ZWdvcnkgL1x3XCtcL1x3XCsvIGNvbnRhaW5lZAotc3luIG1hdGNoIGRlc2NFbWFpbCAvPFx3XCtAW1wuQS1aYS16MC05XVwrPi8KK3N5biBtYXRjaCBkZXNjRW1haWwgLzxbXC5BLVphLXowLTldXCtAW1wuQS1aYS16MC05XVwrPi8KIAogIiBwcmlvcml0eSB0YWcKIHN5biBtYXRjaCBkZXNjSW5zdGFsbFggL1gvIGNvbnRhaW5lZApkaWZmIC0tZ2l0IGEvcnVudGltZS9zeW50YXgvZm9ydHJhbi52aW0gYi9ydW50aW1lL3N5bnRheC9mb3J0cmFuLnZpbQppbmRleCBhZTFmYThiLi40ZGQwMTRlIDEwMDY0NAotLS0gYS9ydW50aW1lL3N5bnRheC9mb3J0cmFuLnZpbQorKysgYi9ydW50aW1lL3N5bnRheC9mb3J0cmFuLnZpbQpAQCAtMSw4ICsxLDggQEAKICIgVmltIHN5bnRheCBmaWxlCiAiIExhbmd1YWdlOglGb3J0cmFuOTUgKGFuZCBGb3J0cmFuOTAsIEZvcnRyYW43NywgRiBhbmQgZWxmOTApCi0iIFZlcnNpb246CTAuODYKKyIgVmVyc2lvbjoJMC44NwogIiBVUkw6CQlodHRwOi8vd3d3LnVuYi5jYS9jaGVtL2FqaXQvc3ludGF4L2ZvcnRyYW4udmltCi0iIExhc3QgQ2hhbmdlOgkyMDAzIE1hci4gMTIKKyIgTGFzdCBDaGFuZ2U6CTIwMDYgQXByLiAwNAogIiBNYWludGFpbmVyOglBaml0IEouIFRoYWtrYXIgKGFqaXQgQVQgdW5iLmNhKTsgPGh0dHA6Ly93d3cudW5iLmNhL2NoZW0vYWppdC8+CiAiIFVzYWdlOglEbyA6aGVscCBmb3J0cmFuLXN5bnRheCBmcm9tIFZpbQogIiBDcmVkaXRzOgpAQCAtNzQsNyArNzQsNyBAQAogICAgICIgRGV0ZWN0aW9uIGJlY29tZXMgbW9yZSBhY2N1cmF0ZSBhbmQgdGltZS1jb25zdW1pbmcgaWYgbW9yZSBsaW5lcwogICAgICIgYXJlIGNoZWNrZWQuIEluY3JlYXNlIHRoZSBsaW1pdCBiZWxvdyBpZiB5b3Uga2VlcCBsb3RzIG9mIGNvbW1lbnRzIGF0CiAgICAgIiB0aGUgdmVyeSB0b3Agb2YgZWFjaCBmaWxlIGFuZCB5b3UgaGF2ZSBhIGZhc3QgY29tcHV0ZXIuCi0gICAgbGV0IGI6bG1heCA9IDI1CisgICAgbGV0IGI6bG1heCA9IDI1MAogICAgIGlmICggYjpsbWF4ID4gbGluZSgiJCIpICkKICAgICAgIGxldCBiOmxtYXggPSBsaW5lKCIkIikKICAgICBlbmRpZgpAQCAtOTQsMTAgKzk0LDcgQEAKIAogc3luIGNhc2UgaWdub3JlCiAKLWlmIGI6Zm9ydHJhbl9kaWFsZWN0ID09ICJmNzciCi0gIHN5biBtYXRjaCBmb3J0cmFuSWRlbnRpZmllcgkJIlw8XGFcKFxhXHxcZFwpKlw+IiBjb250YWlucz1mb3J0cmFuU2VyaWFsTnVtYmVyCi1lbHNlCi0gIHN5biBtYXRjaCBmb3J0cmFuOTBJZGVudGlmaWVyCQkiXDxcYVx3Klw+IiBjb250YWlucz1mb3J0cmFuU2VyaWFsTnVtYmVyCitpZiBiOmZvcnRyYW5fZGlhbGVjdCAhPT8gImY3NyIKICAgaWYgdmVyc2lvbiA+PSA2MDAKICAgICBpZiBiOmZvcnRyYW5fZml4ZWRfc291cmNlID09IDEKICAgICAgIHN5biBtYXRjaCBmb3J0cmFuQ29uc3RydWN0TmFtZQkiXlxzXHs2LH1cenNcYVx3Klx6ZVxzKjoiCkBAIC0xMjAsNyArMTE3LDkgQEAKIAogc3luIG1hdGNoICAgZm9ydHJhblVuaXRIZWFkZXIJIlw8ZW5kXD4iCiAKLXN5biBrZXl3b3JkIGZvcnRyYW5UeXBlCQljaGFyYWN0ZXIgY29tcGxleCBpbnRlZ2VyCitzeW4gbWF0Y2ggZm9ydHJhblR5cGUJCSJcPGNoYXJhY3Rlclw+Igorc3luIG1hdGNoIGZvcnRyYW5UeXBlCQkiXDxjb21wbGV4XD4iCitzeW4gbWF0Y2ggZm9ydHJhblR5cGUJCSJcPGludGVnZXJcPiIKIHN5biBrZXl3b3JkIGZvcnRyYW5UeXBlCQlpbnRyaW5zaWMKIHN5biBtYXRjaCBmb3J0cmFuVHlwZQkJIlw8aW1wbGljaXRcPiIKIHN5biBrZXl3b3JkIGZvcnRyYW5TdHJ1Y3R1cmUJZGltZW5zaW9uCkBAIC0xMjksNyArMTI4LDcgQEAKIHN5biBrZXl3b3JkIGZvcnRyYW5DYWxsCQljYWxsCiBzeW4gbWF0Y2ggZm9ydHJhblVuaXRIZWFkZXIJIlw8ZnVuY3Rpb25cPiIKIHN5biBtYXRjaCBmb3J0cmFuVW5pdEhlYWRlcgkiXDxwcm9ncmFtXD4iCi1zeW4ga2V5d29yZCBmb3J0cmFuU3RhdGVtZW50CXJldHVybiBzdG9wCitzeW4ga2V5d29yZCBmb3J0cmFuS2V5d29yZAlyZXR1cm4gc3RvcAogc3luIGtleXdvcmQgZm9ydHJhbkNvbmRpdGlvbmFsCWVsc2UgdGhlbgogc3luIG1hdGNoIGZvcnRyYW5Db25kaXRpb25hbAkiXDxpZlw+Igogc3luIG1hdGNoIGZvcnRyYW5SZXBlYXQJCSJcPGRvXD4iCkBAIC0xMzcsNyArMTM2LDcgQEAKIHN5biBrZXl3b3JkIGZvcnRyYW5Ub2RvCQljb250YWluZWQgdG9kbyBmaXhtZQogCiAiQ2F0Y2ggZXJyb3JzIGNhdXNlZCBieSB0b28gbWFueSByaWdodCBwYXJlbnRoZXNlcwotc3luIHJlZ2lvbiBmb3J0cmFuUGFyZW4gdHJhbnNwYXJlbnQgc3RhcnQ9IigiIGVuZD0iKSIgY29udGFpbnM9QUxMQlVULGZvcnRyYW5QYXJlbkVycm9yLEBmb3J0cmFuQ29tbWVudEdyb3VwLGNJbmNsdWRlZAorc3luIHJlZ2lvbiBmb3J0cmFuUGFyZW4gdHJhbnNwYXJlbnQgc3RhcnQ9IigiIGVuZD0iKSIgY29udGFpbnM9QUxMQlVULGZvcnRyYW5QYXJlbkVycm9yLEBmb3J0cmFuQ29tbWVudEdyb3VwLGNJbmNsdWRlZCxAc3BlbGwKIHN5biBtYXRjaCAgZm9ydHJhblBhcmVuRXJyb3IgICAiKSIKIAogc3luIG1hdGNoIGZvcnRyYW5PcGVyYXRvcgkiXC5ccypuXD1lcXZccypcLiIKQEAgLTE0Niw4ICsxNDUsNyBAQAogCiBzeW4gbWF0Y2ggZm9ydHJhbkJvb2xlYW4JIlwuXHMqXCh0cnVlXHxmYWxzZVwpXHMqXC4iCiAKLXN5biBrZXl3b3JkIGZvcnRyYW5SZWFkV3JpdGUJYmFja3NwYWNlIGNsb3NlIGlucXVpcmUgb3BlbiByZXdpbmQgZW5kZmlsZQotc3luIGtleXdvcmQgZm9ydHJhblJlYWRXcml0ZQlyZWFkIHdyaXRlIHByaW50CitzeW4ga2V5d29yZCBmb3J0cmFuUmVhZFdyaXRlCWJhY2tzcGFjZSBjbG9zZSBlbmRmaWxlIGlucXVpcmUgb3BlbiBwcmludCByZWFkIHJld2luZCB3cml0ZQogCiAiSWYgdGFicyBhcmUgYWxsb3dlZCB0aGVuIHRoZSBsZWZ0IG1hcmdpbiBjaGVja3MgZG8gbm90IHdvcmsKIGlmIGV4aXN0cygiZm9ydHJhbl9oYXZlX3RhYnMiKQpAQCAtMTU2LDM2ICsxNTQsMTQgQEAKICAgc3luIG1hdGNoIGZvcnRyYW5UYWIJCSJcdCIKIGVuZGlmCiAKLXN5biBrZXl3b3JkIGZvcnRyYW5JTwkJdW5pdCBmaWxlIGlvc3RhdCBhY2Nlc3MgYmxhbmsgZm10IGZvcm0KLXN5biBrZXl3b3JkIGZvcnRyYW5JTwkJcmVjbCBzdGF0dXMgZXhpc3Qgb3BlbmVkIG51bWJlciBuYW1lZCBuYW1lCi1zeW4ga2V5d29yZCBmb3J0cmFuSU8JCXNlcXVlbnRpYWwgZGlyZWN0IHJlYwotc3luIGtleXdvcmQgZm9ydHJhbklPCQlmb3JtYXR0ZWQgdW5mb3JtYXR0ZWQgbmV4dHJlYworc3luIGtleXdvcmQgZm9ydHJhbklPCQlhY2Nlc3MgYmxhbmsgZGlyZWN0IGV4aXN0IGZpbGUgZm10IGZvcm0gZm9ybWF0dGVkIGlvc3RhdCBuYW1lIG5hbWVkIG5leHRyZWMgbnVtYmVyIG9wZW5lZCByZWMgcmVjbCBzZXF1ZW50aWFsIHN0YXR1cyB1bmZvcm1hdHRlZCB1bml0CiAKLXN5biBrZXl3b3JkIGZvcnRyYW42NkludHJpbnNpYwkJY2FicyBjY29zIGNleHAgY2xvZyBjc2luIGNzcXJ0Ci1zeW4ga2V5d29yZCBmb3J0cmFuNjZJbnRyaW5zaWMJCWRhY29zIGRhc2luIGRhdGFuIGRhdGFuMiBkY29zIGRjb3NoCi1zeW4ga2V5d29yZCBmb3J0cmFuNjZJbnRyaW5zaWMJCWRkaW0gZGV4cCBkaW50IGRsb2cgZGxvZzEwIGRtb2QgZGFicwotc3luIGtleXdvcmQgZm9ydHJhbjY2SW50cmluc2ljCQlkbmludCBkc2lnbiBkc2luIGRzaW5oIGRzcXJ0IGR0YW4KLXN5biBrZXl3b3JkIGZvcnRyYW42NkludHJpbnNpYwkJZHRhbmggaWFicyBpZGltIGlkbmludCBpc2lnbiBpZGludCBpZml4Ci1zeW4ga2V5d29yZCBmb3J0cmFuNjZJbnRyaW5zaWMJCWFtYXgwIGFtYXgxIGRtYXgxIG1heDAgbWF4MQotc3luIGtleXdvcmQgZm9ydHJhbjY2SW50cmluc2ljCQlhbWluMCBhbWluMSBkbWluMSBtaW4wIG1pbjEKLXN5biBrZXl3b3JkIGZvcnRyYW42NkludHJpbnNpYwkJYW1vZCBmbG9hdCBzbmdsIGFsb2cgYWxvZzEwCitzeW4ga2V5d29yZCBmb3J0cmFuNjZJbnRyaW5zaWMJCWFsb2cgYWxvZzEwIGFtYXgwIGFtYXgxIGFtaW4wIGFtaW4xIGFtb2QgY2FicyBjY29zIGNleHAgY2xvZyBjc2luIGNzcXJ0IGRhYnMgZGFjb3MgZGFzaW4gZGF0YW4gZGF0YW4yIGRjb3MgZGNvc2ggZGRpbSBkZXhwIGRpbnQgZGxvZyBkbG9nMTAgZG1heDEgZG1pbjEgZG1vZCBkbmludCBkc2lnbiBkc2luIGRzaW5oIGRzcXJ0IGR0YW4gZHRhbmggZmxvYXQgaWFicyBpZGltIGlkaW50IGlkbmludCBpZml4IGlzaWduIG1heDAgbWF4MSBtaW4wIG1pbjEgc25nbAogCiAiIEludHJpbnNpY3MgcHJvdmlkZWQgYnkgc29tZSB2ZW5kb3JzCi1zeW4ga2V5d29yZCBmb3J0cmFuRXh0cmFJbnRyaW5zaWMJY2RhYnMgY2Rjb3MgY2RleHAgY2Rsb2cgY2RzaW4gY2RzcXJ0Ci1zeW4ga2V5d29yZCBmb3J0cmFuRXh0cmFJbnRyaW5zaWMJY3FhYnMgY3Fjb3MgY3FleHAgY3Fsb2cgY3FzaW4gY3FzcXJ0Ci1zeW4ga2V5d29yZCBmb3J0cmFuRXh0cmFJbnRyaW5zaWMJcWFjb3MgcWFzaW4gcWF0YW4gcWF0YW4yIHFjb3MgcWNvc2gKLXN5biBrZXl3b3JkIGZvcnRyYW5FeHRyYUludHJpbnNpYwlxZGltIHFleHAgaXFpbnQgcWxvZyBxbG9nMTAgcW1vZCBxYWJzCi1zeW4ga2V5d29yZCBmb3J0cmFuRXh0cmFJbnRyaW5zaWMJcW5pbnQgcXNpZ24gcXNpbiBxc2luaCBxc3FydCBxdGFuCi1zeW4ga2V5d29yZCBmb3J0cmFuRXh0cmFJbnRyaW5zaWMJcXRhbmggcW1heDEgcW1pbjEKLXN5biBrZXl3b3JkIGZvcnRyYW5FeHRyYUludHJpbnNpYwlkaW1hZyBxaW1hZyBkY21wbHggcWNtcGx4IGRjb25qZyBxY29uamcKLXN5biBrZXl3b3JkIGZvcnRyYW5FeHRyYUludHJpbnNpYwlnYW1tYSBkZ2FtbWEgcWdhbW1hIGFsZ2FtYSBkbGdhbWEgcWxnYW1hCi1zeW4ga2V5d29yZCBmb3J0cmFuRXh0cmFJbnRyaW5zaWMJZXJmIGRlcmYgcWVyZiBlcmZjIGRlcmZjIHFlcmZjCi1zeW4ga2V5d29yZCBmb3J0cmFuRXh0cmFJbnRyaW5zaWMJZGZsb2F0CitzeW4ga2V5d29yZCBmb3J0cmFuRXh0cmFJbnRyaW5zaWMJYWxnYW1hIGNkYWJzIGNkY29zIGNkZXhwIGNkbG9nIGNkc2luIGNkc3FydCBjcWFicyBjcWNvcyBjcWV4cCBjcWxvZyBjcXNpbiBjcXNxcnQgZGNtcGx4IGRjb25qZyBkZXJmIGRlcmZjIGRmbG9hdCBkZ2FtbWEgZGltYWcgZGxnYW1hIGVyZiBlcmZjIGdhbW1hIGlxaW50IHFhYnMgcWFjb3MgcWFzaW4gcWF0YW4gcWF0YW4yIHFjbXBseCBxY29uamcgcWNvcyBxY29zaCBxZGltIHFlcmYgcWVyZmMgcWV4cCBxZ2FtbWEgcWltYWcgcWxnYW1hIHFsb2cgcWxvZzEwIHFtYXgxIHFtaW4xIHFtb2QgcW5pbnQgcXNpZ24gcXNpbiBxc2luaCBxc3FydCBxdGFuIHF0YW5oCiAKLXN5biBrZXl3b3JkIGZvcnRyYW43N0ludHJpbnNpYwlhYnMgYWNvcyBhaW1hZyBhaW50IGFuaW50IGFzaW4gYXRhbiBhdGFuMgotc3luIGtleXdvcmQgZm9ydHJhbjc3SW50cmluc2ljCWNvcyBzaW4gdGFuIHNpbmggY29zaCB0YW5oIGV4cCBsb2cgbG9nMTAKLXN5biBrZXl3b3JkIGZvcnRyYW43N0ludHJpbnNpYwlzaWduIHNxcnQgaW50IGNtcGx4IG5pbnQgbWluIG1heCBjb25qZwotc3luIGtleXdvcmQgZm9ydHJhbjc3SW50cmluc2ljCWNoYXIgaWNoYXIgaW5kZXgKK3N5biBrZXl3b3JkIGZvcnRyYW43N0ludHJpbnNpYwlhYnMgYWNvcyBhaW1hZyBhaW50IGFuaW50IGFzaW4gYXRhbiBhdGFuMiBjaGFyIGNtcGx4IGNvbmpnIGNvcyBjb3NoIGV4cCBpY2hhciBpbmRleCBpbnQgbG9nIGxvZzEwIG1heCBtaW4gbmludCBzaWduIHNpbiBzaW5oIHNxcnQgdGFuIHRhbmgKIHN5biBtYXRjaCBmb3J0cmFuNzdJbnRyaW5zaWMJIlw8bGVuXHMqWygsXSJtZT1zKzMKIHN5biBtYXRjaCBmb3J0cmFuNzdJbnRyaW5zaWMJIlw8cmVhbFxzKigibWU9cys0CiBzeW4gbWF0Y2ggZm9ydHJhblR5cGUJCSJcPGltcGxpY2l0XHNcK3JlYWwiCkBAIC0yMzEsMTUgKzIwNywxNiBAQAogCiBzeW4ga2V5d29yZCBmb3J0cmFuVHlwZUV4CWV4dGVybmFsCiBzeW4ga2V5d29yZCBmb3J0cmFuSU9FeAkJZm9ybWF0Ci1zeW4ga2V5d29yZCBmb3J0cmFuU3RhdGVtZW50RXgJY29udGludWUKLXN5biBtYXRjaCBmb3J0cmFuU3RhdGVtZW50RXgJIlw8Z29ccyp0b1w+Igorc3luIGtleXdvcmQgZm9ydHJhbktleXdvcmRFeAljb250aW51ZQorc3luIG1hdGNoIGZvcnRyYW5LZXl3b3JkRXgJIlw8Z29ccyp0b1w+Igogc3luIHJlZ2lvbiBmb3J0cmFuU3RyaW5nRXgJc3RhcnQ9KycrIGVuZD0rJysgY29udGFpbnM9Zm9ydHJhbkNvbnRpbnVlTWFyayxmb3J0cmFuTGVmdE1hcmdpbixmb3J0cmFuU2VyaWFsTnVtYmVyCiBzeW4ga2V5d29yZCBmb3J0cmFuNzdJbnRyaW5zaWNFeAlkaW0gbGdlIGxndCBsbGUgbGx0IG1vZAotc3luIGtleXdvcmQgZm9ydHJhblN0YXRlbWVudE9iCWFzc2lnbiBwYXVzZSB0bworc3luIGtleXdvcmQgZm9ydHJhbktleXdvcmRPYglhc3NpZ24gcGF1c2UgdG8KIAogaWYgYjpmb3J0cmFuX2RpYWxlY3QgIT0gImY3NyIKIAotICBzeW4ga2V5d29yZCBmb3J0cmFuVHlwZQl0eXBlIG5vbmUKKyAgc3luIG1hdGNoIGZvcnRyYW5UeXBlICAgICAgICAgIlw8dHlwZVw+IgorICBzeW4ga2V5d29yZCBmb3J0cmFuVHlwZQlub25lCiAKICAgc3luIGtleXdvcmQgZm9ydHJhblN0cnVjdHVyZQlwcml2YXRlIHB1YmxpYyBpbnRlbnQgb3B0aW9uYWwKICAgc3luIGtleXdvcmQgZm9ydHJhblN0cnVjdHVyZQlwb2ludGVyIHRhcmdldCBhbGxvY2F0YWJsZQpAQCAtMjUyLDcgKzIyOSw3IEBACiAgIHN5biBrZXl3b3JkIGZvcnRyYW5Vbml0SGVhZGVyCXJlc3VsdCBvcGVyYXRvciBhc3NpZ25tZW50CiAgIHN5biBtYXRjaCBmb3J0cmFuVW5pdEhlYWRlcgkiXDxpbnRlcmZhY2VcPiIKICAgc3luIG1hdGNoIGZvcnRyYW5Vbml0SGVhZGVyCSJcPHJlY3Vyc2l2ZVw+IgotICBzeW4ga2V5d29yZCBmb3J0cmFuU3RhdGVtZW50CWFsbG9jYXRlIGRlYWxsb2NhdGUgbnVsbGlmeSBjeWNsZSBleGl0CisgIHN5biBrZXl3b3JkIGZvcnRyYW5LZXl3b3JkCWFsbG9jYXRlIGRlYWxsb2NhdGUgbnVsbGlmeSBjeWNsZSBleGl0CiAgIHN5biBtYXRjaCBmb3J0cmFuQ29uZGl0aW9uYWwJIlw8c2VsZWN0XD4iCiAgIHN5biBrZXl3b3JkIGZvcnRyYW5Db25kaXRpb25hbAljYXNlIGRlZmF1bHQgd2hlcmUgZWxzZXdoZXJlCiAKQEAgLTI2MywyMSArMjQwLDkgQEAKICAgc3luIGtleXdvcmQgZm9ydHJhbklPCQlwYWQgcG9zaXRpb24gYWN0aW9uIGRlbGltIHJlYWR3cml0ZQogICBzeW4ga2V5d29yZCBmb3J0cmFuSU8JCWVvciBhZHZhbmNlIG5tbAogCi0gIHN5biBrZXl3b3JkIGZvcnRyYW45MEludHJpbnNpYwlhZGp1c3RsIGFkanVzdHIgYWxsIGFsbG9jYXRlZCBhbnkKLSAgc3luIGtleXdvcmQgZm9ydHJhbjkwSW50cmluc2ljCWFzc29jaWF0ZWQgYml0X3NpemUgYnRlc3QgY2VpbGluZwotICBzeW4ga2V5d29yZCBmb3J0cmFuOTBJbnRyaW5zaWMJY291bnQgY3NoaWZ0IGRhdGVfYW5kX3RpbWUKLSAgc3luIGtleXdvcmQgZm9ydHJhbjkwSW50cmluc2ljCWRpZ2l0cyBkb3RfcHJvZHVjdCBlb3NoaWZ0IGVwc2lsb24gZXhwb25lbnQKLSAgc3luIGtleXdvcmQgZm9ydHJhbjkwSW50cmluc2ljCWZsb29yIGZyYWN0aW9uIGh1Z2UgaWFuZCBpYmNsciBpYml0cyBpYnNldCBpZW9yCi0gIHN5biBrZXl3b3JkIGZvcnRyYW45MEludHJpbnNpYwlpb3IgaXNoZnQgaXNoZnRjIGxib3VuZCBsZW5fdHJpbQotICBzeW4ga2V5d29yZCBmb3J0cmFuOTBJbnRyaW5zaWMJbWF0bXVsIG1heGV4cG9uZW50IG1heGxvYyBtYXh2YWwgbWVyZ2UKLSAgc3luIGtleXdvcmQgZm9ydHJhbjkwSW50cmluc2ljCW1pbmV4cG9uZW50IG1pbmxvYyBtaW52YWwgbW9kdWxvIG12Yml0cyBuZWFyZXN0Ci0gIHN5biBrZXl3b3JkIGZvcnRyYW45MEludHJpbnNpYwlwYWNrIHByZXNlbnQgcHJvZHVjdCByYWRpeCByYW5kb21fbnVtYmVyCisgIHN5biBrZXl3b3JkIGZvcnRyYW45MEludHJpbnNpYwlhZGp1c3RsIGFkanVzdHIgYWxsIGFsbG9jYXRlZCBhbnkgYXNzb2NpYXRlZCBiaXRfc2l6ZSBidGVzdCBjZWlsaW5nIGNvdW50IGNzaGlmdCBkYXRlX2FuZF90aW1lIGRpZ2l0cyBkb3RfcHJvZHVjdCBlb3NoaWZ0IGVwc2lsb24gZXhwb25lbnQgZmxvb3IgZnJhY3Rpb24gaHVnZSBpYW5kIGliY2xyIGliaXRzIGlic2V0IGllb3IgaW9yIGlzaGZ0IGlzaGZ0YyBsYm91bmQgbGVuX3RyaW0gbWF0bXVsIG1heGV4cG9uZW50IG1heGxvYyBtYXh2YWwgbWVyZ2UgbWluZXhwb25lbnQgbWlubG9jIG1pbnZhbCBtb2R1bG8gbXZiaXRzIG5lYXJlc3QgcGFjayBwcmVjaXNpb24gcHJlc2VudCBwcm9kdWN0IHJhZGl4IHJhbmRvbV9udW1iZXIgcmFuZG9tX3NlZWQgcmFuZ2UgcmVwZWF0IHJlc2hhcGUgcnJzcGFjaW5nCisgIHN5biBrZXl3b3JkIGZvcnRyYW45MEludHJpbnNpYwlzY2FsZSBzY2FuIHNlbGVjdGVkX2ludF9raW5kIHNlbGVjdGVkX3JlYWxfa2luZCBzZXRfZXhwb25lbnQgc2hhcGUgc2l6ZSBzcGFjaW5nIHNwcmVhZCBzdW0gc3lzdGVtX2Nsb2NrIHRpbnkgdHJhbnNwb3NlIHRyaW0gdWJvdW5kIHVucGFjayB2ZXJpZnkKICAgc3luIG1hdGNoIGZvcnRyYW45MEludHJpbnNpYwkJIlw8bm90XD5cKFxzKlwuXClcQCEibWU9cyszCi0gIHN5biBrZXl3b3JkIGZvcnRyYW45MEludHJpbnNpYwlyYW5kb21fc2VlZCByYW5nZSByZXBlYXQgcmVzaGFwZSBycnNwYWNpbmcgc2NhbGUKLSAgc3luIGtleXdvcmQgZm9ydHJhbjkwSW50cmluc2ljCXNlbGVjdGVkX2ludF9raW5kIHNlbGVjdGVkX3JlYWxfa2luZCBzY2FuCi0gIHN5biBrZXl3b3JkIGZvcnRyYW45MEludHJpbnNpYwlzaGFwZSBzaXplIHNwYWNpbmcgc3ByZWFkIHNldF9leHBvbmVudAotICBzeW4ga2V5d29yZCBmb3J0cmFuOTBJbnRyaW5zaWMJdGlueSB0cmFuc3Bvc2UgdHJpbSB1Ym91bmQgdW5wYWNrIHZlcmlmeQotICBzeW4ga2V5d29yZCBmb3J0cmFuOTBJbnRyaW5zaWMJcHJlY2lzaW9uIHN1bSBzeXN0ZW1fY2xvY2sKICAgc3luIG1hdGNoIGZvcnRyYW45MEludHJpbnNpYwkiXDxraW5kXD5ccypbKCxdIm1lPXMrNAogCiAgIHN5biBtYXRjaCAgZm9ydHJhblVuaXRIZWFkZXIJIlw8ZW5kXHMqZnVuY3Rpb24iCkBAIC0zNDMsNyArMzA4LDcgQEAKIGVuZGlmCiAKIGlmIGI6Zm9ydHJhbl9kaWFsZWN0ICE9ICJmNzciCi0gIHN5biBtYXRjaCBmb3J0cmFuQ29tbWVudAlleGNsdWRlbmwgIiEuKiQiIGNvbnRhaW5zPUBmb3J0cmFuQ29tbWVudEdyb3VwCisgIHN5biBtYXRjaCBmb3J0cmFuQ29tbWVudAlleGNsdWRlbmwgIiEuKiQiIGNvbnRhaW5zPUBmb3J0cmFuQ29tbWVudEdyb3VwLEBzcGVsbAogZW5kaWYKIAogImNwcCBpcyBvZnRlbiB1c2VkIHdpdGggRm9ydHJhbgpAQCAtMzU2LDI2ICszMjEsMjcgQEAKIHN5biBtYXRjaAljSW5jbHVkZQkJIl5ccyojXHMqaW5jbHVkZVw+XHMqWyI8XSIgY29udGFpbnM9Y0luY2x1ZGVkCiAKICJTeW5jaHJvbmlzaW5nIGxpbWl0cyBhc3N1bWUgdGhhdCBjb21tZW50IGFuZCBjb250aW51YXRpb24gbGluZXMgYXJlIG5vdCBtaXhlZAotaWYgKGI6Zm9ydHJhbl9maXhlZF9zb3VyY2UgPT0gMCkKLSAgc3luIHN5bmMgbGluZWNvbnQgIiYiIG1heGxpbmVzPTQwCitpZiBleGlzdHMoImZvcnRyYW5fZm9sZCIpIHx8IGV4aXN0cygiZm9ydHJhbl9tb3JlX3ByZWNpc2UiKQorICBzeW4gc3luYyBmcm9tc3RhcnQKK2Vsc2VpZiAoYjpmb3J0cmFuX2ZpeGVkX3NvdXJjZSA9PSAwKQorICBzeW4gc3luYyBsaW5lY29udCAiJiIgbWlubGluZXM9MjAKIGVsc2UKICAgc3luIHN5bmMgbWlubGluZXM9MjAKIGVuZGlmCiAKIGlmIHZlcnNpb24gPj0gNjAwICYmIGV4aXN0cygiZm9ydHJhbl9mb2xkIikKIAotICBzeW4gc3luYyBmcm9tc3RhcnQKICAgaWYgKGI6Zm9ydHJhbl9maXhlZF9zb3VyY2UgPT0gMSkKICAgICBzeW4gcmVnaW9uIGZvcnRyYW5Qcm9ncmFtIHRyYW5zcGFyZW50IGZvbGQga2VlcGVuZCBzdGFydD0iXlxzKnByb2dyYW1cc1wrXHooXGFcdypcKSIgc2tpcD0iXlwoWyFjKl1cfFxzKiNcKS4qJCIgZXhjbHVkZW5sIGVuZD0iXDxlbmRccypcKHByb2dyYW1cKFxzXCtcejFcPlwpXD1cfCRcKSIgY29udGFpbnM9QUxMQlVULGZvcnRyYW5Nb2R1bGUKICAgICBzeW4gcmVnaW9uIGZvcnRyYW5Nb2R1bGUgdHJhbnNwYXJlbnQgZm9sZCBrZWVwZW5kIHN0YXJ0PSJeXHMqbW9kdWxlXHNcK1wocHJvY2VkdXJlXClcQCFceihcYVx3KlwpIiBza2lwPSJeXChbIWMqXVx8XHMqI1wpLiokIiBleGNsdWRlbmwgZW5kPSJcPGVuZFxzKlwobW9kdWxlXChcc1wrXHoxXD5cKVw9XHwkXCkiIGNvbnRhaW5zPUFMTEJVVCxmb3J0cmFuUHJvZ3JhbQotICAgIHN5biByZWdpb24gZm9ydHJhbkZ1bmN0aW9uIHRyYW5zcGFyZW50IGZvbGQga2VlcGVuZCBleHRlbmQgc3RhcnQ9Il5ccypcKGVsZW1lbnRhbCBcfHB1cmUgXHxyZWN1cnNpdmUgXClcPVxzKmZ1bmN0aW9uXHNcK1x6KFxhXHcqXCkiIHNraXA9Il5cKFshYypdXHxccyojXCkuKiQiIGV4Y2x1ZGVubCBlbmQ9Ilw8ZW5kXHMqXCgkXHxmdW5jdGlvblwoXHNcK1x6MVw+XClcPVwpIiBjb250YWlucz1BTExCVVQsZm9ydHJhblByb2dyYW0sZm9ydHJhbk1vZHVsZQorICAgIHN5biByZWdpb24gZm9ydHJhbkZ1bmN0aW9uIHRyYW5zcGFyZW50IGZvbGQga2VlcGVuZCBleHRlbmQgc3RhcnQ9Il5ccypcKGVsZW1lbnRhbCBcfHB1cmUgXHxyZWN1cnNpdmUgXClcPVxzKlwoXChcKHJlYWwgXHxpbnRlZ2VyIFx8bG9naWNhbCBcfGNvbXBsZXggXHxkb3VibGUgXHMqcHJlY2lzaW9uIFwpXHMqXCgoXChccypraW5kXHMqPVwpXD1ccypcd1wrXHMqKVwpXD1cKVx8dHlwZVxzXCsoXHMqXHdcK1xzKikgXHxjaGFyYWN0ZXIgXCgoXChccypsZW5ccyo9XClcPVxzKlxkXCtccyopXHwoXChccypraW5kXHMqPVwpXD1ccypcd1wrXHMqKVwpXD1cKVw9XHMqZnVuY3Rpb25cc1wrXHooXGFcdypcKSIgc2tpcD0iXlwoWyFjKl1cfFxzKiNcKS4qJCIgZXhjbHVkZW5sIGVuZD0iXDxlbmRccypcKCRcfGZ1bmN0aW9uXChcc1wrXHoxXD5cKVw9XCkiIGNvbnRhaW5zPUFMTEJVVCxmb3J0cmFuUHJvZ3JhbSxmb3J0cmFuTW9kdWxlCiAgICAgc3luIHJlZ2lvbiBmb3J0cmFuU3Vicm91dGluZSB0cmFuc3BhcmVudCBmb2xkIGtlZXBlbmQgZXh0ZW5kIHN0YXJ0PSJeXHMqXChlbGVtZW50YWwgXHxwdXJlIFx8cmVjdXJzaXZlIFwpXD1ccypzdWJyb3V0aW5lXHNcK1x6KFxhXHcqXCkiIHNraXA9Il5cKFshYypdXHxccyojXCkuKiQiIGV4Y2x1ZGVubCBlbmQ9Ilw8ZW5kXHMqXCgkXHxzdWJyb3V0aW5lXChcc1wrXHoxXD5cKVw9XCkiIGNvbnRhaW5zPUFMTEJVVCxmb3J0cmFuUHJvZ3JhbSxmb3J0cmFuTW9kdWxlCiAgICAgc3luIHJlZ2lvbiBmb3J0cmFuQmxvY2tEYXRhIHRyYW5zcGFyZW50IGZvbGQga2VlcGVuZCBzdGFydD0iXDxibG9ja1xzKmRhdGFcc1wrXHooXGFcdypcKSIgc2tpcD0iXlwoWyFjKl1cfFxzKiNcKS4qJCIgZXhjbHVkZW5sIGVuZD0iXDxlbmRccypcKCRcfGJsb2NrXHMqZGF0YVwoXHNcK1x6MVw+XClcPVwpIiBjb250YWlucz1BTExCVVQsZm9ydHJhblByb2dyYW0sZm9ydHJhbk1vZHVsZSxmb3J0cmFuU3Vicm91dGluZSxmb3J0cmFuRnVuY3Rpb24sZm9ydHJhbjc3TG9vcCxmb3J0cmFuQ2FzZSxmb3J0cmFuOTBMb29wLGZvcnRyYW5JZkJsb2NrCiAgICAgc3luIHJlZ2lvbiBmb3J0cmFuSW50ZXJmYWNlIHRyYW5zcGFyZW50IGZvbGQga2VlcGVuZCBleHRlbmQgc3RhcnQ9Il5ccyppbnRlcmZhY2VcPiIgc2tpcD0iXlwoWyFjKl1cfFxzKiNcKS4qJCIgZXhjbHVkZW5sIGVuZD0iXDxlbmRccyppbnRlcmZhY2VcPiIgY29udGFpbnM9QUxMQlVULGZvcnRyYW5Qcm9ncmFtLGZvcnRyYW5Nb2R1bGUsZm9ydHJhbjc3TG9vcCxmb3J0cmFuQ2FzZSxmb3J0cmFuOTBMb29wLGZvcnRyYW5JZkJsb2NrCiAgIGVsc2UKICAgICBzeW4gcmVnaW9uIGZvcnRyYW5Qcm9ncmFtIHRyYW5zcGFyZW50IGZvbGQga2VlcGVuZCBzdGFydD0iXlxzKnByb2dyYW1cc1wrXHooXGFcdypcKSIgc2tpcD0iXlxzKlshI10uKiQiIGV4Y2x1ZGVubCBlbmQ9Ilw8ZW5kXHMqXChwcm9ncmFtXChcc1wrXHoxXD5cKVw9XHwkXCkiIGNvbnRhaW5zPUFMTEJVVCxmb3J0cmFuTW9kdWxlCiAgICAgc3luIHJlZ2lvbiBmb3J0cmFuTW9kdWxlIHRyYW5zcGFyZW50IGZvbGQga2VlcGVuZCBzdGFydD0iXlxzKm1vZHVsZVxzXCtcKHByb2NlZHVyZVwpXEAhXHooXGFcdypcKSIgc2tpcD0iXlxzKlshI10uKiQiIGV4Y2x1ZGVubCBlbmQ9Ilw8ZW5kXHMqXChtb2R1bGVcKFxzXCtcejFcPlwpXD1cfCRcKSIgY29udGFpbnM9QUxMQlVULGZvcnRyYW5Qcm9ncmFtCi0gICAgc3luIHJlZ2lvbiBmb3J0cmFuRnVuY3Rpb24gdHJhbnNwYXJlbnQgZm9sZCBrZWVwZW5kIGV4dGVuZCBzdGFydD0iXlxzKlwoZWxlbWVudGFsIFx8cHVyZSBcfHJlY3Vyc2l2ZSBcKVw9XHMqZnVuY3Rpb25cc1wrXHooXGFcdypcKSIgc2tpcD0iXlxzKlshI10uKiQiIGV4Y2x1ZGVubCBlbmQ9Ilw8ZW5kXHMqXCgkXHxmdW5jdGlvblwoXHNcK1x6MVw+XClcPVwpIiBjb250YWlucz1BTExCVVQsZm9ydHJhblByb2dyYW0sZm9ydHJhbk1vZHVsZQorICAgIHN5biByZWdpb24gZm9ydHJhbkZ1bmN0aW9uIHRyYW5zcGFyZW50IGZvbGQga2VlcGVuZCBleHRlbmQgc3RhcnQ9Il5ccypcKGVsZW1lbnRhbCBcfHB1cmUgXHxyZWN1cnNpdmUgXClcPVxzKlwoXChcKHJlYWwgXHxpbnRlZ2VyIFx8bG9naWNhbCBcfGNvbXBsZXggXHxkb3VibGUgXHMqcHJlY2lzaW9uIFwpXHMqXCgoXChccypraW5kXHMqPVwpXD1ccypcd1wrXHMqKVwpXD1cKVx8dHlwZVxzXCsoXHMqXHdcK1xzKikgXHxjaGFyYWN0ZXIgXCgoXChccypsZW5ccyo9XClcPVxzKlxkXCtccyopXHwoXChccypraW5kXHMqPVwpXD1ccypcd1wrXHMqKVwpXD1cKVw9XHMqZnVuY3Rpb25cc1wrXHooXGFcdypcKSIgc2tpcD0iXlxzKlshI10uKiQiIGV4Y2x1ZGVubCBlbmQ9Ilw8ZW5kXHMqXCgkXHxmdW5jdGlvblwoXHNcK1x6MVw+XClcPVwpIiBjb250YWlucz1BTExCVVQsZm9ydHJhblByb2dyYW0sZm9ydHJhbk1vZHVsZQogICAgIHN5biByZWdpb24gZm9ydHJhblN1YnJvdXRpbmUgdHJhbnNwYXJlbnQgZm9sZCBrZWVwZW5kIGV4dGVuZCBzdGFydD0iXlxzKlwoZWxlbWVudGFsIFx8cHVyZSBcfHJlY3Vyc2l2ZSBcKVw9XHMqc3Vicm91dGluZVxzXCtceihcYVx3KlwpIiBza2lwPSJeXHMqWyEjXS4qJCIgZXhjbHVkZW5sIGVuZD0iXDxlbmRccypcKCRcfHN1YnJvdXRpbmVcKFxzXCtcejFcPlwpXD1cKSIgY29udGFpbnM9QUxMQlVULGZvcnRyYW5Qcm9ncmFtLGZvcnRyYW5Nb2R1bGUKICAgICBzeW4gcmVnaW9uIGZvcnRyYW5CbG9ja0RhdGEgdHJhbnNwYXJlbnQgZm9sZCBrZWVwZW5kIHN0YXJ0PSJcPGJsb2NrXHMqZGF0YVxzXCtceihcYVx3KlwpIiBza2lwPSJeXHMqWyEjXS4qJCIgZXhjbHVkZW5sIGVuZD0iXDxlbmRccypcKCRcfGJsb2NrXHMqZGF0YVwoXHNcK1x6MVw+XClcPVwpIiBjb250YWlucz1BTExCVVQsZm9ydHJhblByb2dyYW0sZm9ydHJhbk1vZHVsZSxmb3J0cmFuU3Vicm91dGluZSxmb3J0cmFuRnVuY3Rpb24sZm9ydHJhbjc3TG9vcCxmb3J0cmFuQ2FzZSxmb3J0cmFuOTBMb29wLGZvcnRyYW5JZkJsb2NrCiAgICAgc3luIHJlZ2lvbiBmb3J0cmFuSW50ZXJmYWNlIHRyYW5zcGFyZW50IGZvbGQga2VlcGVuZCBleHRlbmQgc3RhcnQ9Il5ccyppbnRlcmZhY2VcPiIgc2tpcD0iXlxzKlshI10uKiQiIGV4Y2x1ZGVubCBlbmQ9Ilw8ZW5kXHMqaW50ZXJmYWNlXD4iIGNvbnRhaW5zPUFMTEJVVCxmb3J0cmFuUHJvZ3JhbSxmb3J0cmFuTW9kdWxlLGZvcnRyYW43N0xvb3AsZm9ydHJhbkNhc2UsZm9ydHJhbjkwTG9vcCxmb3J0cmFuSWZCbG9jawpAQCAtNDIyLDMxICszODgsMzEgQEAKICAgIiBmb3J0cmFuQmxvY2tEYXRhCiAgICIgZm9ydHJhbjc3TG9vcCwgZm9ydHJhbjkwTG9vcCwgZm9ydHJhbklmQmxvY2ssIGZvcnRyYW5DYXNlCiAgICIgZm9ydHJhbk11bHRpQ29tbWVudExpbmVzCi0gIEhpTGluayBmb3J0cmFuU3RhdGVtZW50CQlTdGF0ZW1lbnQKLSAgSGlMaW5rIGZvcnRyYW5Db25zdHJ1Y3ROYW1lCVNwZWNpYWwKLSAgSGlMaW5rIGZvcnRyYW5Db25kaXRpb25hbAkJQ29uZGl0aW9uYWwKKyAgSGlMaW5rIGZvcnRyYW5LZXl3b3JkIAlLZXl3b3JkCisgIEhpTGluayBmb3J0cmFuQ29uc3RydWN0TmFtZQlJZGVudGlmaWVyCisgIEhpTGluayBmb3J0cmFuQ29uZGl0aW9uYWwJQ29uZGl0aW9uYWwKICAgSGlMaW5rIGZvcnRyYW5SZXBlYXQJCVJlcGVhdAotICBIaUxpbmsgZm9ydHJhblRvZG8JCQlUb2RvCi0gIEhpTGluayBmb3J0cmFuQ29udGludWVNYXJrCQlUb2RvCisgIEhpTGluayBmb3J0cmFuVG9kbwkJVG9kbworICBIaUxpbmsgZm9ydHJhbkNvbnRpbnVlTWFyawlUb2RvCiAgIEhpTGluayBmb3J0cmFuU3RyaW5nCQlTdHJpbmcKICAgSGlMaW5rIGZvcnRyYW5OdW1iZXIJCU51bWJlcgotICBIaUxpbmsgZm9ydHJhbk9wZXJhdG9yCQlPcGVyYXRvcgorICBIaUxpbmsgZm9ydHJhbk9wZXJhdG9yCU9wZXJhdG9yCiAgIEhpTGluayBmb3J0cmFuQm9vbGVhbgkJQm9vbGVhbgotICBIaUxpbmsgZm9ydHJhbkxhYmVsRXJyb3IJCUVycm9yCi0gIEhpTGluayBmb3J0cmFuT2Jzb2xldGUJCVRvZG8KLSAgSGlMaW5rIGZvcnRyYW5UeXBlCQkJVHlwZQotICBIaUxpbmsgZm9ydHJhblN0cnVjdHVyZQkJVHlwZQotICBIaUxpbmsgZm9ydHJhblN0b3JhZ2VDbGFzcwkJU3RvcmFnZUNsYXNzCi0gIEhpTGluayBmb3J0cmFuQ2FsbAkJCWZvcnRyYW5Vbml0SGVhZGVyCi0gIEhpTGluayBmb3J0cmFuVW5pdEhlYWRlcgkJZm9ydHJhblByZUNvbmRpdAotICBIaUxpbmsgZm9ydHJhblJlYWRXcml0ZQkJZm9ydHJhbjkwSW50cmluc2ljCi0gIEhpTGluayBmb3J0cmFuSU8JCQlmb3J0cmFuOTBJbnRyaW5zaWMKLSAgSGlMaW5rIGZvcnRyYW45NUludHJpbnNpYwkJZm9ydHJhbjkwSW50cmluc2ljCi0gIEhpTGluayBmb3J0cmFuNzdJbnRyaW5zaWMJCWZvcnRyYW45MEludHJpbnNpYwotICBIaUxpbmsgZm9ydHJhbjkwSW50cmluc2ljCQlTcGVjaWFsCisgIEhpTGluayBmb3J0cmFuTGFiZWxFcnJvcglFcnJvcgorICBIaUxpbmsgZm9ydHJhbk9ic29sZXRlCVRvZG8KKyAgSGlMaW5rIGZvcnRyYW5UeXBlCQlUeXBlCisgIEhpTGluayBmb3J0cmFuU3RydWN0dXJlCVR5cGUKKyAgSGlMaW5rIGZvcnRyYW5TdG9yYWdlQ2xhc3MJU3RvcmFnZUNsYXNzCisgIEhpTGluayBmb3J0cmFuQ2FsbAkJZm9ydHJhblVuaXRIZWFkZXIKKyAgSGlMaW5rIGZvcnRyYW5Vbml0SGVhZGVyCWZvcnRyYW5QcmVDb25kaXQKKyAgSGlMaW5rIGZvcnRyYW5SZWFkV3JpdGUJS2V5d29yZAorICBIaUxpbmsgZm9ydHJhbklPCQlLZXl3b3JkCisgIEhpTGluayBmb3J0cmFuOTVJbnRyaW5zaWMJZm9ydHJhbjkwSW50cmluc2ljCisgIEhpTGluayBmb3J0cmFuNzdJbnRyaW5zaWMJZm9ydHJhbjkwSW50cmluc2ljCisgIEhpTGluayBmb3J0cmFuOTBJbnRyaW5zaWMJRnVuY3Rpb24KIAogICBpZiAoIGI6Zm9ydHJhbl9kaWFsZWN0ID09ICJlbGYiIHx8IGI6Zm9ydHJhbl9kaWFsZWN0ID09ICJGIiApCi0gICAgSGlMaW5rIGZvcnRyYW5TdGF0ZW1lbnRPYglmb3J0cmFuT2Jzb2xldGUKKyAgICBIaUxpbmsgZm9ydHJhbktleXdvcmRPYglmb3J0cmFuT2Jzb2xldGUKICAgICBIaUxpbmsgZm9ydHJhbjY2SW50cmluc2ljCWZvcnRyYW5PYnNvbGV0ZQogICAgIEhpTGluayBmb3J0cmFuNzdJbnRyaW5zaWNSCWZvcnRyYW5PYnNvbGV0ZQogICAgIEhpTGluayBmb3J0cmFuVW5pdEhlYWRlclIJZm9ydHJhbk9ic29sZXRlCkBAIC00NTQsNDcgKzQyMCw0NyBAQAogICAgIEhpTGluayBmb3J0cmFuU3RvcmFnZUNsYXNzUglmb3J0cmFuT2Jzb2xldGUKICAgICBIaUxpbmsgZm9ydHJhbjkwU3RvcmFnZUNsYXNzUglmb3J0cmFuT2Jzb2xldGUKICAgICBIaUxpbmsgZm9ydHJhbjc3T3BlcmF0b3JSCWZvcnRyYW5PYnNvbGV0ZQotICAgIEhpTGluayBmb3J0cmFuSW5jbHVkZQkJZm9ydHJhbk9ic29sZXRlCisgICAgSGlMaW5rIGZvcnRyYW5JbmNsdWRlCWZvcnRyYW5PYnNvbGV0ZQogICBlbHNlCi0gICAgSGlMaW5rIGZvcnRyYW5TdGF0ZW1lbnRPYglTdGF0ZW1lbnQKKyAgICBIaUxpbmsgZm9ydHJhbktleXdvcmRPYglmb3J0cmFuS2V5d29yZAogICAgIEhpTGluayBmb3J0cmFuNjZJbnRyaW5zaWMJZm9ydHJhbjkwSW50cmluc2ljCiAgICAgSGlMaW5rIGZvcnRyYW43N0ludHJpbnNpY1IJZm9ydHJhbjkwSW50cmluc2ljCiAgICAgSGlMaW5rIGZvcnRyYW5Vbml0SGVhZGVyUglmb3J0cmFuUHJlQ29uZGl0CiAgICAgSGlMaW5rIGZvcnRyYW5UeXBlUgkJZm9ydHJhblR5cGUKICAgICBIaUxpbmsgZm9ydHJhblN0b3JhZ2VDbGFzc1IJZm9ydHJhblN0b3JhZ2VDbGFzcwogICAgIEhpTGluayBmb3J0cmFuNzdPcGVyYXRvclIJZm9ydHJhbk9wZXJhdG9yCi0gICAgSGlMaW5rIGZvcnRyYW5JbmNsdWRlCQlJbmNsdWRlCisgICAgSGlMaW5rIGZvcnRyYW5JbmNsdWRlCUluY2x1ZGUKICAgICBIaUxpbmsgZm9ydHJhbjkwU3RvcmFnZUNsYXNzUglmb3J0cmFuU3RvcmFnZUNsYXNzCiAgIGVuZGlmCiAKICAgaWYgKCBiOmZvcnRyYW5fZGlhbGVjdCA9PSAiRiIgKQogICAgIEhpTGluayBmb3J0cmFuTGFiZWxOdW1iZXIJZm9ydHJhbk9ic29sZXRlCi0gICAgSGlMaW5rIGZvcnRyYW5UYXJnZXQJCWZvcnRyYW5PYnNvbGV0ZQotICAgIEhpTGluayBmb3J0cmFuRm9ybWF0U3BlYwkJZm9ydHJhbk9ic29sZXRlCi0gICAgSGlMaW5rIGZvcnRyYW5GbG9hdERFeHAJCWZvcnRyYW5PYnNvbGV0ZQotICAgIEhpTGluayBmb3J0cmFuRmxvYXROb0RlYwkJZm9ydHJhbk9ic29sZXRlCisgICAgSGlMaW5rIGZvcnRyYW5UYXJnZXQJZm9ydHJhbk9ic29sZXRlCisgICAgSGlMaW5rIGZvcnRyYW5Gb3JtYXRTcGVjCWZvcnRyYW5PYnNvbGV0ZQorICAgIEhpTGluayBmb3J0cmFuRmxvYXRERXhwCWZvcnRyYW5PYnNvbGV0ZQorICAgIEhpTGluayBmb3J0cmFuRmxvYXROb0RlYwlmb3J0cmFuT2Jzb2xldGUKICAgICBIaUxpbmsgZm9ydHJhbkZsb2F0SW5pRGVjCWZvcnRyYW5PYnNvbGV0ZQogICAgIEhpTGluayBmb3J0cmFuRmxvYXRFbmREZWMJZm9ydHJhbk9ic29sZXRlCi0gICAgSGlMaW5rIGZvcnRyYW5UeXBlRXgJCWZvcnRyYW5PYnNvbGV0ZQorICAgIEhpTGluayBmb3J0cmFuVHlwZUV4CWZvcnRyYW5PYnNvbGV0ZQogICAgIEhpTGluayBmb3J0cmFuSU9FeAkJZm9ydHJhbk9ic29sZXRlCi0gICAgSGlMaW5rIGZvcnRyYW5TdGF0ZW1lbnRFeAlmb3J0cmFuT2Jzb2xldGUKLSAgICBIaUxpbmsgZm9ydHJhblN0cmluZ0V4CQlmb3J0cmFuT2Jzb2xldGUKKyAgICBIaUxpbmsgZm9ydHJhbktleXdvcmRFeAlmb3J0cmFuT2Jzb2xldGUKKyAgICBIaUxpbmsgZm9ydHJhblN0cmluZ0V4CWZvcnRyYW5PYnNvbGV0ZQogICAgIEhpTGluayBmb3J0cmFuNzdJbnRyaW5zaWNFeAlmb3J0cmFuT2Jzb2xldGUKICAgICBIaUxpbmsgZm9ydHJhblVuaXRIZWFkZXJFeAlmb3J0cmFuT2Jzb2xldGUKICAgICBIaUxpbmsgZm9ydHJhbkNvbmRpdGlvbmFsRXgJZm9ydHJhbk9ic29sZXRlCiAgICAgSGlMaW5rIGZvcnRyYW45MEludHJpbnNpY0V4CWZvcnRyYW5PYnNvbGV0ZQogICBlbHNlCiAgICAgSGlMaW5rIGZvcnRyYW5MYWJlbE51bWJlcglTcGVjaWFsCi0gICAgSGlMaW5rIGZvcnRyYW5UYXJnZXQJCVNwZWNpYWwKLSAgICBIaUxpbmsgZm9ydHJhbkZvcm1hdFNwZWMJCUlkZW50aWZpZXIKLSAgICBIaUxpbmsgZm9ydHJhbkZsb2F0REV4cAkJZm9ydHJhbkZsb2F0Ci0gICAgSGlMaW5rIGZvcnRyYW5GbG9hdE5vRGVjCQlmb3J0cmFuRmxvYXQKKyAgICBIaUxpbmsgZm9ydHJhblRhcmdldAlTcGVjaWFsCisgICAgSGlMaW5rIGZvcnRyYW5Gb3JtYXRTcGVjCUlkZW50aWZpZXIKKyAgICBIaUxpbmsgZm9ydHJhbkZsb2F0REV4cAlmb3J0cmFuRmxvYXQKKyAgICBIaUxpbmsgZm9ydHJhbkZsb2F0Tm9EZWMJZm9ydHJhbkZsb2F0CiAgICAgSGlMaW5rIGZvcnRyYW5GbG9hdEluaURlYwlmb3J0cmFuRmxvYXQKICAgICBIaUxpbmsgZm9ydHJhbkZsb2F0RW5kRGVjCWZvcnRyYW5GbG9hdAotICAgIEhpTGluayBmb3J0cmFuVHlwZUV4CQlmb3J0cmFuVHlwZQorICAgIEhpTGluayBmb3J0cmFuVHlwZUV4CWZvcnRyYW5UeXBlCiAgICAgSGlMaW5rIGZvcnRyYW5JT0V4CQlmb3J0cmFuSU8KLSAgICBIaUxpbmsgZm9ydHJhblN0YXRlbWVudEV4CWZvcnRyYW5TdGF0ZW1lbnQKLSAgICBIaUxpbmsgZm9ydHJhblN0cmluZ0V4CQlmb3J0cmFuU3RyaW5nCisgICAgSGlMaW5rIGZvcnRyYW5LZXl3b3JkRXgJZm9ydHJhbktleXdvcmQKKyAgICBIaUxpbmsgZm9ydHJhblN0cmluZ0V4CWZvcnRyYW5TdHJpbmcKICAgICBIaUxpbmsgZm9ydHJhbjc3SW50cmluc2ljRXgJZm9ydHJhbjkwSW50cmluc2ljCiAgICAgSGlMaW5rIGZvcnRyYW5Vbml0SGVhZGVyRXgJZm9ydHJhblVuaXRIZWFkZXIKICAgICBIaUxpbmsgZm9ydHJhbkNvbmRpdGlvbmFsRXgJZm9ydHJhbkNvbmRpdGlvbmFsCkBAIC01MDIsMjEgKzQ2OCwxOCBAQAogICBlbmRpZgogCiAgIEhpTGluayBmb3J0cmFuRmxvYXQJCUZsb2F0Ci0gIEhpTGluayBmb3J0cmFuOTBJZGVudGlmaWVyCQlmb3J0cmFuSWRlbnRpZmllcgotICAiVW5jb21tZW50IHRoZSBuZXh0IGxpbmUgaWYgeW91IHdhbnQgYWxsIGZvcnRyYW4gdmFyaWFibGVzIHRvIGJlIGhpZ2hsaWdodGVkCi0gICJIaUxpbmsgZm9ydHJhbklkZW50aWZpZXIJCUlkZW50aWZpZXIKLSAgSGlMaW5rIGZvcnRyYW5QcmVDb25kaXQJCVByZUNvbmRpdAorICBIaUxpbmsgZm9ydHJhblByZUNvbmRpdAlQcmVDb25kaXQKICAgSGlMaW5rIGZvcnRyYW5JbmNsdWRlCQlJbmNsdWRlCi0gIEhpTGluayBjSW5jbHVkZWQJCQlmb3J0cmFuU3RyaW5nCi0gIEhpTGluayBjSW5jbHVkZQkJCUluY2x1ZGUKLSAgSGlMaW5rIGNQcmVQcm9jCQkJUHJlUHJvYwotICBIaUxpbmsgY1ByZUNvbmRpdAkJCVByZUNvbmRpdAotICBIaUxpbmsgZm9ydHJhblBhcmVuRXJyb3IJCUVycm9yCisgIEhpTGluayBjSW5jbHVkZWQJCWZvcnRyYW5TdHJpbmcKKyAgSGlMaW5rIGNJbmNsdWRlCQlJbmNsdWRlCisgIEhpTGluayBjUHJlUHJvYwkJUHJlUHJvYworICBIaUxpbmsgY1ByZUNvbmRpdAkJUHJlQ29uZGl0CisgIEhpTGluayBmb3J0cmFuUGFyZW5FcnJvcglFcnJvcgogICBIaUxpbmsgZm9ydHJhbkNvbW1lbnQJCUNvbW1lbnQKLSAgSGlMaW5rIGZvcnRyYW5TZXJpYWxOdW1iZXIJCVRvZG8KLSAgSGlMaW5rIGZvcnRyYW5UYWIJCQlFcnJvcgorICBIaUxpbmsgZm9ydHJhblNlcmlhbE51bWJlcglUb2RvCisgIEhpTGluayBmb3J0cmFuVGFiCQlFcnJvcgogICAiIFZlbmRvciBleHRlbnNpb25zCi0gIEhpTGluayBmb3J0cmFuRXh0cmFJbnRyaW5zaWMJU3BlY2lhbAorICBIaUxpbmsgZm9ydHJhbkV4dHJhSW50cmluc2ljCUZ1bmN0aW9uCiAKICAgZGVsY29tbWFuZCBIaUxpbmsKIGVuZGlmCmRpZmYgLS1naXQgYS9ydW50aW1lL3N5bnRheC9yaGVscC52aW0gYi9ydW50aW1lL3N5bnRheC9yaGVscC52aW0KaW5kZXggYWY4NjI2NC4uMTYzMzk5OCAxMDA2NDQKLS0tIGEvcnVudGltZS9zeW50YXgvcmhlbHAudmltCisrKyBiL3J1bnRpbWUvc3ludGF4L3JoZWxwLnZpbQpAQCAtMSw3ICsxLDcgQEAKICIgVmltIHN5bnRheCBmaWxlCiAiIExhbmd1YWdlOiAgICBSIEhlbHAgRmlsZQogIiBNYWludGFpbmVyOiAgSm9oYW5uZXMgUmFua2UgPGpyYW5rZUB1bmktYnJlbWVuLmRlPgotIiBMYXN0IENoYW5nZTogMjAwNiBN5HIgMDYKKyIgTGFzdCBDaGFuZ2U6IDIwMDYgQXByIDA1CiAiIFZlcnNpb246ICAgICAwLjUKICIgUmVtYXJrczogICAgIC0gTm93IGluY2x1ZGVzIFIgc3ludGF4IGhpZ2hsaWdodGluZyBpbiB0aGUgYXBwcm9wcmlhdGUKICIgICAgICAgICAgICAgICAgc2VjdGlvbnMgaWYgYW4gci52aW0gZmlsZSBpcyBpbiB0aGUgc2FtZSBkaXJlY3Rvcnkgb3IgaW4gdGhlCkBAIC0xNSw3ICsxNSw3IEBACiAKICIgVmVyc2lvbiBDbGVhcnM6IHt7ezEKICIgRm9yIHZlcnNpb24gNS54OiBDbGVhciBhbGwgc3ludGF4IGl0ZW1zCi0iIEZvciB2ZXJzaW9uIDYueDogUXVpdCB3aGVuIGEgc3ludGF4IGZpbGUgd2FzIGFscmVhZHkgbG9hZGVkCisiIEZvciB2ZXJzaW9uIDYueCBhbmQgNy54OiBRdWl0IHdoZW4gYSBzeW50YXggZmlsZSB3YXMgYWxyZWFkeSBsb2FkZWQKIGlmIHZlcnNpb24gPCA2MDAgCiAgIHN5bnRheCBjbGVhcgogZWxzZWlmIGV4aXN0cygiYjpjdXJyZW50X3N5bnRheCIpCkBAIC0zNiw3ICszNiw3IEBACiBsZXQgczpyc3ludGF4ID0gczpzeW50YXhkaXIgLiAiL3IudmltIgogaWYgZmlsZXJlYWRhYmxlKHM6cnN5bnRheCkgIAogICBzeW4gaW5jbHVkZSBAUiA8c2ZpbGU+OnA6aC9yLnZpbQotZWxzZWlmIGZpbGVyZWFkYWJsZSgnL3Vzci9zaGFyZS92aW0vdmltNjQvc3ludGF4L3IudmltJykgICJhbmQgZGViaWFuIGxvY2F0aW9uCitlbHNlaWYgZmlsZXJlYWRhYmxlKCcvdXNyL3NoYXJlL3ZpbS92aW1jdXJyZW50L3N5bnRheC9yLnZpbScpICAiYW5kIGRlYmlhbiBsb2NhdGlvbgogICBzeW4gaW5jbHVkZSBAUiAvdXNyL3NoYXJlL3ZpbS92aW1jdXJyZW50L3N5bnRheC9yLnZpbQogZWxzZSAKICAgc3luIG1hdGNoIHJoZWxwUkNvbW1lbnQgL1wjLiovCQkJCSJpZiBubyByLnZpbSBpcyBmb3VuZCwgZG8gY29tbWVudHMKQEAgLTQ2LDEyICs0NiwxMiBAQAogc3luIHJlZ2lvbiByaGVscFJjb2RlIG1hdGNoZ3JvdXA9RGVsaW1pdGVyIHN0YXJ0PSJcXHVzYWdleyIgbWF0Y2hncm91cD1EZWxpbWl0ZXIgdHJhbnNwYXJlbnQgZW5kPS99LyBjb250YWlucz1AUixyaGVscElkZW50aWZpZXIKIHN5biByZWdpb24gcmhlbHBSY29kZSBtYXRjaGdyb3VwPURlbGltaXRlciBzdGFydD0iXFxzeW5vcHNpc3siIG1hdGNoZ3JvdXA9RGVsaW1pdGVyIHRyYW5zcGFyZW50IGVuZD0vfS8gY29udGFpbnM9QFIKIHN5biByZWdpb24gcmhlbHBSY29kZSBtYXRjaGdyb3VwPURlbGltaXRlciBzdGFydD0iXFxzcGVjaWFseyIgbWF0Y2hncm91cD1EZWxpbWl0ZXIgdHJhbnNwYXJlbnQgZW5kPS99LyBjb250YWlucz1AUiBjb250YWluZWQKLXN5biByZWdpb24gcmhlbHBSY29kZSBtYXRjaGdyb3VwPURlbGltaXRlciBzdGFydD0iXFxjb2RleyIgbWF0Y2hncm91cD1EZWxpbWl0ZXIgdHJhbnNwYXJlbnQgZW5kPS99LyBjb250YWlucz1AUiBjb250YWluZWQKK3N5biByZWdpb24gcmhlbHBSY29kZSBtYXRjaGdyb3VwPURlbGltaXRlciBzdGFydD0iXFxjb2RleyIgbWF0Y2hncm91cD1EZWxpbWl0ZXIgdHJhbnNwYXJlbnQgZW5kPS99LyBjb250YWlucz1AUixyaGVscExpbmsgY29udGFpbmVkCiAKICIgU3RyaW5ncyB7e3sxCiBzeW4gcmVnaW9uIHJoZWxwU3RyaW5nIHN0YXJ0PS8iLyBlbmQ9LyIvIAogCi0iIFNwZWNpYWwgVGVYIGNoYXJhY3RlcnMgICggXCQgXCYgXCUgXCMgXHsgXH0gXF8pIHt7ezEKKyIgU3BlY2lhbCBjaGFyYWN0ZXJzICAoIFwkIFwmIFwlIFwjIFx7IFx9IFxfKSB7e3sxCiBzeW4gbWF0Y2ggcmhlbHBTcGVjaWFsQ2hhciAgICAgICAgIlxcWyQmJSN7fV9dIgogCiAiIFNwZWNpYWwgRGVsaW1pdGVycyB7e3sxCmRpZmYgLS1naXQgYS9ydW50aW1lL3N5bnRheC92aW0udmltIGIvcnVudGltZS9zeW50YXgvdmltLnZpbQppbmRleCAzYTU1OTI1Li40ZDAyMjhlIDEwMDY0NAotLS0gYS9ydW50aW1lL3N5bnRheC92aW0udmltCisrKyBiL3J1bnRpbWUvc3ludGF4L3ZpbS52aW0KQEAgLTEsOCArMSw4IEBACiAiIFZpbSBzeW50YXggZmlsZQogIiBMYW5ndWFnZToJVmltIDcuMCBzY3JpcHQKICIgTWFpbnRhaW5lcjoJRHIuIENoYXJsZXMgRS4gQ2FtcGJlbGwsIEpyLiA8TmRyT2NoaXBTQFBjYW1wYmVsbEFmYW1pbHkuTWJpej4KLSIgTGFzdCBDaGFuZ2U6CU1hcmNoIDI5LCAyMDA2Ci0iIFZlcnNpb246CTcuMC0zNwlOT1QgUkVMRUFTRUQKKyIgTGFzdCBDaGFuZ2U6CUFwcmlsIDA0LCAyMDA2CisiIFZlcnNpb246CTcuMC0zOAogIiBBdXRvbWF0aWNhbGx5IGdlbmVyYXRlZCBrZXl3b3JkIGxpc3RzOiB7e3sxCiAKICIgUXVpdCB3aGVuIGEgc3ludGF4IGZpbGUgd2FzIGFscmVhZHkgbG9hZGVkIHt7ezIKQEAgLTU1LDcgKzU1LDcgQEAKIHN5biBjYXNlIG1hdGNoCiAKICIgRnVuY3Rpb24gTmFtZXMge3t7Mgotc3luIGtleXdvcmQgdmltRnVuY05hbWUgY29udGFpbmVkCWFkZCBhcHBlbmQgYXJnYyBhcmdpZHggYXJndiBicm93c2UgYnJvd3NlZGlyIGJ1ZmV4aXN0cyBidWZsaXN0ZWQgYnVmbG9hZGVkIGJ1Zm5hbWUgYnVmbnIgYnVmd2lubnIgYnl0ZTJsaW5lIGJ5dGVpZHggY2FsbCBjaGFuZ2VuciBjaGFyMm5yIGNpbmRlbnQgY29sIGNvbXBsZXRlIGNvbXBsZXRlX2FkZCBjb21wbGV0ZV9jaGVjayBjb25maXJtIGNvcHkgY291bnQgY3Njb3BlX2Nvbm5lY3Rpb24gY3Vyc29yIGRlZXBjb3B5IGRlbGV0ZSBkaWRfZmlsZXR5cGUgZGlmZl9maWxsZXIgZGlmZl9obElEIGVtcHR5IGVzY2FwZSBldmFsIGV2ZW50aGFuZGxlciBleGVjdXRhYmxlIGV4aXN0cyBleHBhbmQgZXhwcjggZXh0ZW5kIGZpbGVyZWFkYWJsZSBmaWxld3JpdGFibGUgZmlsdGVyIGZpbmRkaXIgZmluZGZpbGUgZm5hbWVtb2RpZnkgZm9sZGNsb3NlZCBmb2xkY2xvc2VkZW5kIGZvbGRsZXZlbCBmb2xkdGV4dCBmb2xkdGV4dHJlc3VsdCBmb3JlZ3JvdW5kIGZ1bmN0aW9uIGdhcmJhZ2Vjb2xsZWN0IGdldCBnZXRidWZsaW5lIGdldGJ1ZnZhciBnZXRjaGFyIGdldGNoYXJtb2QgZ2V0Y21kbGluZSBnZXRjbWRwb3MgZ2V0Y21kdHlwZSBnZXRjd2QgZ2V0Zm9udG5hbWUgZ2V0ZnBlcm0gZ2V0ZnNpemUgZ2V0ZnRpbWUgZ2V0ZnR5cGUgZ2V0bGluZSBnZXRsb2NsaXN0IGdldHBvcyBnZXRxZmxpc3QgZ2V0cmVnIGdldHJlZ3R5cGUgZ2V0d2lucG9zeCBnZXR3aW5wb3N5IGdldHdpbnZhciBnbG9iIGdsb2JwYXRoIGhhcyBoYXNfa2V5IGhhc21hcHRvIGhpc3RhZGQgaGlzdGRlbCBoaXN0Z2V0IGhpc3RuciBobGV4aXN0cyBobElEIGhvc3RuYW1lIGljb252IGluZGVudCBpbmRleCBpbnB1dCBpbnB1dGRpYWxvZyBpbnB1dGxpc3QgaW5wdXRyZXN0b3JlIGlucHV0c2F2ZSBpbnB1dHNlY3JldCBpbnNlcnQgaXNkaXJlY3RvcnkgaXNsb2NrZWQgaXRlbXMgam9pbiBrZXlzIGxlbiBsaWJjYWxsIGxpYmNhbGxuciBsaW5lIGxpbmUyYnl0ZSBsaXNwaW5kZW50IGxvY2FsdGltZSBtYXAgbWFwYXJnIG1hcGNoZWNrIG1hdGNoIG1hdGNoZW5kIG1hdGNobGlzdCBtYXRjaHN0ciBtYXggbWluIG1rZGlyIG1vZGUgbmV4dG5vbmJsYW5rIG5yMmNoYXIgcHJldm5vbmJsYW5rIHByaW50ZiBwdW12aXNpYmxlIHJhbmdlIHJlYWRmaWxlIHJlbHRpbWUgcmVsdGltZXN0ciByZW1vdGVfZXhwciByZW1vdGVfZm9yZWdyb3VuZCByZW1vdGVfcGVlayByZW1vdGVfcmVhZCByZW1vdGVfc2VuZCByZW1vdmUgcmVuYW1lIHJlcGVhdCByZXNvbHZlIHJldmVyc2Ugc2VhcmNoIHNlYXJjaGRlY2wgc2VhcmNocGFpciBzZWFyY2hwYWlycG9zIHNlYXJjaHBvcyBzZXJ2ZXIyY2xpZW50IHNlcnZlcmxpc3Qgc2V0YnVmdmFyIHNldGNtZHBvcyBzZXRsaW5lIHNldGxvY2xpc3Qgc2V0cG9zIHNldHFmbGlzdCBzZXRyZWcgc2V0d2ludmFyIHNpbXBsaWZ5IHNvcnQgc291bmRmb2xkIHNwZWxsYmFkd29yZCBzcGVsbHN1Z2dlc3Qgc3BsaXQgc3RyMm5yIHN0cmZ0aW1lIHN0cmlkeCBzdHJpbmcgc3RybGVuIHN0cnBhcnQgc3RycmlkeCBzdHJ0cmFucyBzdWJtYXRjaCBzdWJzdGl0dXRlIHN5bklEIHN5bklEYXR0ciBzeW5JRHRyYW5zIHN5c3RlbSB0YWJwYWdlYnVmbGlzdCB0YWJwYWdlbnIgdGFicGFnZXdpbm5yIHRhZ2ZpbGVzIHRhZ2xpc3QgdGVtcG5hbWUgdG9sb3dlciB0b3VwcGVyIHRyIHR5cGUgdmFsdWVzIHZpcnRjb2wgdmlzdWFsbW9kZSB3aW5idWZuciB3aW5jb2wgd2luaGVpZ2h0IHdpbmxpbmUgd2lubnIgd2lucmVzdGNtZCB3aW5yZXN0dmlldyB3aW5zYXZldmlldyB3aW53aWR0aCB3cml0ZWZpbGUgCitzeW4ga2V5d29yZCB2aW1GdW5jTmFtZSBjb250YWluZWQJYWRkIGFwcGVuZCBhcmdjIGFyZ2lkeCBhcmd2IGJyb3dzZSBicm93c2VkaXIgYnVmZXhpc3RzIGJ1Zmxpc3RlZCBidWZsb2FkZWQgYnVmbmFtZSBidWZuciBidWZ3aW5uciBieXRlMmxpbmUgYnl0ZWlkeCBjYWxsIGNoYW5nZW5yIGNoYXIybnIgY2luZGVudCBjb2wgY29tcGxldGUgY29tcGxldGVfYWRkIGNvbXBsZXRlX2NoZWNrIGNvbmZpcm0gY29weSBjb3VudCBjc2NvcGVfY29ubmVjdGlvbiBjdXJzb3IgZGVlcGNvcHkgZGVsZXRlIGRpZF9maWxldHlwZSBkaWZmX2ZpbGxlciBkaWZmX2hsSUQgZW1wdHkgZXNjYXBlIGV2YWwgZXZlbnRoYW5kbGVyIGV4ZWN1dGFibGUgZXhpc3RzIGV4cGFuZCBleHByOCBleHRlbmQgZmlsZXJlYWRhYmxlIGZpbGV3cml0YWJsZSBmaWx0ZXIgZmluZGRpciBmaW5kZmlsZSBmbmFtZW1vZGlmeSBmb2xkY2xvc2VkIGZvbGRjbG9zZWRlbmQgZm9sZGxldmVsIGZvbGR0ZXh0IGZvbGR0ZXh0cmVzdWx0IGZvcmVncm91bmQgZnVuY3Rpb24gZ2FyYmFnZWNvbGxlY3QgZ2V0IGdldGJ1ZmxpbmUgZ2V0YnVmdmFyIGdldGNoYXIgZ2V0Y2hhcm1vZCBnZXRjbWRsaW5lIGdldGNtZHBvcyBnZXRjbWR0eXBlIGdldGN3ZCBnZXRmb250bmFtZSBnZXRmcGVybSBnZXRmc2l6ZSBnZXRmdGltZSBnZXRmdHlwZSBnZXRsaW5lIGdldGxvY2xpc3QgZ2V0cG9zIGdldHFmbGlzdCBnZXRyZWcgZ2V0cmVndHlwZSBnZXR3aW5wb3N4IGdldHdpbnBvc3kgZ2V0d2ludmFyIGdsb2IgZ2xvYnBhdGggaGFzIGhhc19rZXkgaGFzbWFwdG8gaGlzdGFkZCBoaXN0ZGVsIGhpc3RnZXQgaGlzdG5yIGhsZXhpc3RzIGhsSUQgaG9zdG5hbWUgaWNvbnYgaW5kZW50IGluZGV4IGlucHV0IGlucHV0ZGlhbG9nIGlucHV0bGlzdCBpbnB1dHJlc3RvcmUgaW5wdXRzYXZlIGlucHV0c2VjcmV0IGluc2VydCBpc2RpcmVjdG9yeSBpc2xvY2tlZCBpdGVtcyBqb2luIGtleXMgbGVuIGxpYmNhbGwgbGliY2FsbG5yIGxpbmUgbGluZTJieXRlIGxpc3BpbmRlbnQgbG9jYWx0aW1lIG1hcCBtYXBhcmcgbWFwY2hlY2sgbWF0Y2ggbWF0Y2hhcmcgbWF0Y2hlbmQgbWF0Y2hsaXN0IG1hdGNoc3RyIG1heCBtaW4gbWtkaXIgbW9kZSBuZXh0bm9uYmxhbmsgbnIyY2hhciBwYXRoc2hvcnRlbiBwcmV2bm9uYmxhbmsgcHJpbnRmIHB1bXZpc2libGUgcmFuZ2UgcmVhZGZpbGUgcmVsdGltZSByZWx0aW1lc3RyIHJlbW90ZV9leHByIHJlbW90ZV9mb3JlZ3JvdW5kIHJlbW90ZV9wZWVrIHJlbW90ZV9yZWFkIHJlbW90ZV9zZW5kIHJlbW92ZSByZW5hbWUgcmVwZWF0IHJlc29sdmUgcmV2ZXJzZSBzZWFyY2ggc2VhcmNoZGVjbCBzZWFyY2hwYWlyIHNlYXJjaHBhaXJwb3Mgc2VhcmNocG9zIHNlcnZlcjJjbGllbnQgc2VydmVybGlzdCBzZXRidWZ2YXIgc2V0Y21kcG9zIHNldGxpbmUgc2V0bG9jbGlzdCBzZXRwb3Mgc2V0cWZsaXN0IHNldHJlZyBzZXR3aW52YXIgc2ltcGxpZnkgc29ydCBzb3VuZGZvbGQgc3BlbGxiYWR3b3JkIHNwZWxsc3VnZ2VzdCBzcGxpdCBzdHIybnIgc3RyZnRpbWUgc3RyaWR4IHN0cmluZyBzdHJsZW4gc3RycGFydCBzdHJyaWR4IHN0cnRyYW5zIHN1Ym1hdGNoIHN1YnN0aXR1dGUgc3luSUQgc3luSURhdHRyIHN5bklEdHJhbnMgc3lzdGVtIHRhYnBhZ2VidWZsaXN0IHRhYnBhZ2VuciB0YWJwYWdld2lubnIgdGFnZmlsZXMgdGFnbGlzdCB0ZW1wbmFtZSB0b2xvd2VyIHRvdXBwZXIgdHIgdHlwZSB2YWx1ZXMgdmlydGNvbCB2aXN1YWxtb2RlIHdpbmJ1Zm5yIHdpbmNvbCB3aW5oZWlnaHQgd2lubGluZSB3aW5uciB3aW5yZXN0Y21kIHdpbnJlc3R2aWV3IHdpbnNhdmV2aWV3IHdpbndpZHRoIHdyaXRlZmlsZSAKIAogIi0tLSBzeW50YXggYWJvdmUgZ2VuZXJhdGVkIGJ5IG1rdmltdmltIC0tLQogIiBTcGVjaWFsIFZpbSBIaWdobGlnaHRpbmcgKG5vdCBhdXRvbWF0aWMpIHt7ezEKZGlmZiAtLWdpdCBhL3J1bnRpbWUvdHV0b3IvdHV0b3IucGwgYi9ydW50aW1lL3R1dG9yL3R1dG9yLnBsCmluZGV4IDg0NzgyN2YuLjRjYWRiOGMgMTAwNjQ0Ci0tLSBhL3J1bnRpbWUvdHV0b3IvdHV0b3IucGwKKysrIGIvcnVudGltZS90dXRvci90dXRvci5wbApAQCAtNSw3ICs1LDcgQEAKICAgICAgVmltIHRvIHBvdOq/bnkgZWR5dG9yLCBrdPNyeSBwb3NpYWRhIHdpZWxlIHBvbGVjZfEsIHpieXQgZHW/byBieQogICAgICB3eWphtm5p5iBqZSB3c3p5c3RraWUgdyB0eW0gdHV0b3JpYWx1LiBUZW4gcHJ6ZXdvZG5payBtYSBuYXVjennmCiAgICAgIENp6iBwb3OzdWdpd2HmIHNp6iB3eXN0YXJjemFqsWNvIHdpZWxvbWEga29tZW5kYW1pIGJ5tiBt82ezILNhdHdvCi0gICAgIHW/eXdh5iBWaW0tYSBqYWtvIGVkeXRvcmEgb2fzbG5lZ28gcHJ6ZXpuYWN6ZW5pYS4KKyAgICAgdb95d2HmIFZpbWEgamFrbyBlZHl0b3JhIG9n82xuZWdvIHByemV6bmFjemVuaWEuCiAKICAgICAgQ3phcyBwb3RyemVibnkgbmEgdWtv8WN6ZW5pZSB0dXRvcmlhbGEgdG8gMjUgZG8gMzAgbWludXQgaSB6YWxlv3kKICAgICAgb2QgdGVnbyBqYWsgd2llbGUgY3phc3Ugc3DqZHppc3ogbmEgZWtzcGVyeW1lbnRvd2FuaXUuICAKQEAgLTE1LDEwICsxNSwxMCBAQAogCSB3Y3pltm5pZWoga29waeogdGVnbyBwbGlrdSBkbyDmd2ljemXxIChqZbZsaSB6YWN6sbNltiBrb21lbmSxCiAJICJ2aW10dXRvciIgdG8ganW/IHByYWN1amVzeiBuYSBrb3BpaSkuCiAKLSAgICAgV2G/bmUgamVzdCwgYnm2IHBhbWnqdGGzLCC/ZSBwcnpld29kbmlrIHRlbiB6b3N0YbMgemFwcm9qZWt0b3dhbnkgZG8KLSAgICAgbmF1a2kgcG9wcnpleiDmd2ljemVuaWEuIFRvIG96bmFjemEsIL9lIG11c2lzeiB3eWtvbnl3YeYgcG9sZWNlbmlhCi0gICAgIGJ5IG5hdWN6eeYgc2nqIGljaCBwcmF3aWSzb3dvLiBKZbZsaSBi6mR6aWVzeiBqZWR5bmllIGN6eXRhsyB0ZWtzdAotICAgICBzenlia28gemFwb21uaXN6IHdpZWxlIHBvbGVjZfEhCisJIFBhbWnqdGFqIL9lIHByemV3b2RuaWsgdGVuIHpvc3RhsyB6YXByb2pla3Rvd2FueSBkbyBuYXVraSBwb3ByemV6CisJIOZ3aWN6ZW5pYS4gT3puYWN6YSB0bywgv2UgbXVzaXN6IHd5a29ueXdh5iBwb2xlY2VuaWEgYnkgbmF1Y3p55iBzaeogaWNoCisJIHByYXdpZLNvd28uIEpltmxpIGLqZHppZXN6IGplZHluaWUgY3p5dGGzIHRla3N0IHN6eWJrbyB6YXBvbW5pc3ogd2llbGUKKwkgcG9sZWNl8SEKIAogICAgICBUZXJheiB1cGV3bmlqIHNp6iwgv2UgbmllIG1hc3ogd2Nptm5p6nRlZ28gQ2Fwc0xvY2thIGkgd2Npc2thaiAgagogICAgICB0YWsgZLN1Z28gZG9w82tpIExla2NqYSAxLjEuIG5pZSB3eXBls25pIGNhs2tvd2ljaWUgZWtyYW51LgpAQCAtNDUsNyArNDUsNyBAQAogCiBVd2FnYTogS2xhd2lzemUga3Vyc29yYSB0YWu/ZSBwb3dpbm55IGR6aWGzYeYsIGFsZSB1v3l3YWqxYyAgaGprbCAgYupkemllc3oKICAgICAgICB3IHN0YW5pZSBwb3J1c3ph5iBzaeogbyB3aWVsZSBzenliY2llaiBqYWsgc2nqIHR5bGtvIHByenl6d3ljemFpc3ouCi0JICAgTmFwcmF3ZOohCisgICAgICAgTmFwcmF3ZOohCiAKIH5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fgogCQkgICAgTGVrY2phIDEuMi46IFdZQ0hPRFpFTklFIFogVklNLWEKQEAgLTY1LDcgKzY1LDcgQEAKICAgICAgd3lqtuYgaSB3cvNjaeYgZG8gZWR5dG9yYS4KIAogVVdBR0E6IDpxITxFTlRFUj4gcG9yenVjYSB3c3plbGtpZSB6bWlhbnkgamFraWUgenJvYmmzZbYuIFcgbmFzdOpwbnljaAotbGVrY2phY2ggZG93aWVzeiBzaeogamFrIGplIHphcGFtaep0eXdh5i4KKyAgICAgICBsZWtjamFjaCBkb3dpZXN6IHNp6iBqYWsgamUgemFwYW1p6nR5d2HmLgogCiAgIDUuIFByemVuaWW2IGt1cnNvciBkbyBsZWtjamkgMS4zLgogCkBAIC0xNTAsMTYgKzE1MCwxNiBAQAogICAxLiBaYWtv8WN6IHR1dG9yaWFsIHRhayBqYWsgdyBsZWtjamkgMS4yLjogIDpxIQogCiAgIDIuIFcgcG93s29jZSB3eWRhaiBwb2xlY2VuaWU6ICB2aW0gdHV0b3I8RU5URVI+Ci0gICAgICJ2aW0iIGplc3QgcG9sZWNlbmllbSB1cnVjaGFtaWFqsWN5bSBlZHl0b3IgVmltbS4gJ3R1dG9yJyB0byBuYXp3YSBwbGlrdQorICAgICAidmltIiBqZXN0IHBvbGVjZW5pZW0gdXJ1Y2hhbWlharFjeW0gZWR5dG9yIFZpbS4gJ3R1dG9yJyB0byBuYXp3YSBwbGlrdQogICAgICBqYWtpIGNoY2VzeiBlZHl0b3dh5i4gVb95aiBwbGlrdSBqYWtpIG1vv2Ugem9zdGHmIHptaWVuaW9ueS4KIAogICAzLiBEb2RhaiBpIHVzdfEgdGVrc3QgdGFrIGphayBzaeogbmF1Y3p5s2W2IHcgcG9wcnplZG5pY2ggbGVrY2phY2guCiAKLSAgNC4gWmFwaXN6IHBsaWsgemUgem1pYW5hbWkgdyBvcHW25iBWaW1hOiAgOndxPEVOVEVSPgorICA0LiBaYXBpc3ogcGxpayB6ZSB6bWlhbmFtaSBpIG9wdbbmIFZpbWE6ICA6d3E8RU5URVI+CiAKICAgNS4gVXJ1Y2hvbSBwb25vd25pZSB2aW10dXRvciBpIHByemVqZLwgZG8gcG9kc3Vtb3dhbmlhIGxla2NqaS4KIAotICA2LiBQbyBwcnplY3p5dGFuaXUgd3N6eXN0a2ljaCBrcm9r83cgaSB6cm96dW1pZW5pdSBpY2g6IHd5a29uYWogamUuCisgIDYuIFBvIHByemVjenl0YW5pdSB3c3p5c3RraWNoIGtyb2vzdyBpIGljaCB6cm96dW1pZW5pdTogd3lrb25haiBqZS4KIAogCiB+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn4KQEAgLTE2OCwyMSArMTY4LDIxIEBACiAgIDEuIFBvcnVzemFzeiBrdXJzb3JlbSB1v3l3YWqxYyAic3RyemGzZWsiIGkga2xhd2lzenkgIGhqa2wgLgogICAgICAgIGggKHcgbGV3bykJIGogKHcgZPOzKQkgayAoZG8gZ/NyeSkJCWwgKHcgcHJhd28pCiAKLSAgMi4gQnkgd2VqtuYgZG8gVmltLWEgKHogcG93s29raSkgd3Bpc3o6CisgIDIuIEJ5IHdlarbmIGRvIFZpbWEgKHogcG93s29raSkgd3Bpc3o6CiAJCQkgICAgdmltIE5BWldBX1BMSUtVPEVOVEVSPgogCi0gIDMuIEJ5IHd5arbmIHogVmltLWEgd3Bpc3o6CisgIDMuIEJ5IHd5arbmIHogVmltYSB3cGlzejoKIAkJCSAgICA8RVNDPiA6cSE8RU5URVI+ICBieSB1c3VusWMgd3N6eXN0a2llIHptaWFueS4KIAkgICAgIExVQjoJICAgIDxFU0M+IDp3cTxFTlRFUj4gIGJ5IHptaWFueSB6YWNob3dh5i4KIAogICA0LiBCeSB1c3VuseYgem5hayBwb2Qga3Vyc29yZW0gd2Nptm5pajogIHgKIAogICA1LiBCeSB3c3Rhd2nmIHRla3N0IHByemVkIGt1cnNvcmVtIGx1YiBkb2Rh5joKLQlpICAgICAgICAgd3Bpc3ogdGVrc3QgICAgICA8RVNDPiB3c3Rhd2kgcHJ6ZWQga3Vyc29yZW0KLQlBICAgICAgICAgd3Bpc3ogdGVrc3QgICAgICA8RVNDPiBkb2RhIG5hIGtv8WN1IGxpbmlpCisJaSAgIHdwaXN6IHRla3N0ICAgPEVTQz4gICAgICAgICB3c3Rhd2kgcHJ6ZWQga3Vyc29yZW0KKwlBICAgd3Bpc3ogdGVrc3QgICA8RVNDPiAgICAgICAgIGRvZGEgbmEga2/xY3UgbGluaWkKIAogVVdBR0E6IFdjabZuaepjaWUgPEVTQz4gcHJ6ZW5pZXNpZSBDaeogeiBwb3dyb3RlbSBkbyB0cnlidSBOb3JtYWwKLWx1YiBvZHdvs2EgbmllY2hjaWFuZSBsdWIgY3rqtmNpb3dvIHdwcm93YWR6b25lIHBvbGVjZW5pYS4KKyAgICAgICBsdWIgb2R3b7NhIG5pZWNoY2lhbmUgbHViIGN66rZjaW93byB3cHJvd2Fkem9uZSBwb2xlY2VuaWEuCiAKIFRlcmF6IG1vv2VteSBrb250eW51b3dh5iBpIHByemVqtuYgZG8gTGVrY2ppIDIuCiB+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn4KQEAgLTE5NywxMSArMTk3LDExIEBACiAKICAgMy4gUHJ6ZXN18SBrdXJzb3IgbmEgcG9jerF0ZWsgd3lyYXp1LCBrdPNyZSBjaGNlc3ogdXN1brHmLgogCi0gIDQuIFdwaXN6ICAgZHcgICBieSB1c3VusWMgd3lyYXouCisgIDQuIFdwaXN6ICAgZHcgICBieSB1c3VuseYgd3lyYXouCiAKICAgVVdBR0E6IExpdGVyYSAgZCAgcG9qYXdpIHNp6iBuYSBkb2xlIGVrcmFudS4gVmltIGN6ZWthIG5hIHdwaXNhbmllICB3IC4gCi0JIEpltmxpIHpvYmFjenlzeiBpbm55IHpuYWsgd3Bpc2GzZbYgY2+2ILxsZSwgd2Nptm5paiA8RVNDPiBpIHphY3puaWoKLQkgb2QgcG9jerF0a3UuCisJIEpltmxpIHpvYmFjenlzeiBpbm55IHpuYWsgb3puYWN6YSB0bywgv2Ugd3Bpc2GzZbYgY2+2ILxsZSwgd2Nptm5pagorCSA8RVNDPiBpIHphY3puaWogb2QgcG9jerF0a3UuCiAKIC0tLT4gSmVzdCB0dSBwYXLqIHBhcGllciB3eXJhevN3LCBrdPNyZSBrYW1pZfEgbmllIG5hbGW/sSBkbyBub795Y2UgdGVnbyB6ZGFuaWEuCiAKQEAgLTMwNiwxMyArMzA2LDEzIEBACiAKIAkJICAgKiogV3Bpc3ogIGRkICBhYnkgdXN1brHmIGNhs7EgbGluaeouICoqCiAKLSAgWiBwb3dvZHUgY3rqc3RvtmNpIHVzdXdhbmlhIGNhs3ljaCBsaW5paSwgcHJvamVrdGFuY2kgVkkgemRlY3lkb3dhbGksIL9lCisgIFogcG93b2R1IGN66nN0b7ZjaSB1c3V3YW5pYSBjYbN5Y2ggbGluaWksIHByb2pla3RhbmNpIFZpIHpkZWN5ZG93YWxpLCC/ZQogICBi6mR6aWUgs2F0d2llaiB3cGlzYeYgZHdhIHJhenkgIGQgIGFieSB1c3VuseYgbGluaeouCiAKLSAgMS4gUHJ6ZW5pZbYga3Vyc29yIGRvIHpkYW5pYSBwb25pv2VqLgotICAyLiBXcGlzeiAgZGQgIGFieSB1c3VusWMgd2llcnN6LgorICAxLiBQcnplbmlltiBrdXJzb3IgZG8gZHJ1Z2llZ28gemRhbmlhIHogd2llcnN6eWthIHBvbmm/ZWouCisgIDIuIFdwaXN6ICBkZCAgYWJ5IHVzdW6x5iB3aWVyc3ouCiAgIDMuIFRlcmF6IHByemVuaWW2IHNp6iBkbyBjendhcnRlZ28gd2llcnN6YS4KLSAgNC4gV3Bpc3ogIDJkZCAgYWJ5IHVzdW6xYyBkd2lhIHdpZXJzemUuCisgIDQuIFdwaXN6ICAyZGQgIGFieSB1c3VusWMgZHdhIHdpZXJzemUuCiAKIC0tLT4gIDEpICBS879lIHOxIGN6ZXJ3b25lLAogLS0tPiAgMikgIEKzb3RvIGplc3QgZmFqbmUsCkBAIC0zMzcsNyArMzM3LDcgQEAKICAgNC4gVHltIHJhemVtIHBvcHJhdyB3c3p5c3RraWUgYrPqZHkgdyBsaW5paSB1v3l3YWqxYyBwb2xlY2VuaWEgIHggLgogICA1LiBUZXJheiB3Y2m2bmlqIHdpZWxraWUgVSBhYnkgcHJ6eXdy82Np5iBsaW5p6iBkbyBvcnlnaW5hbG5lZ28gc3RhbnUuCiAgIDYuIFRlcmF6IHdjabZuaWogIHUgIGtpbGthIHJhenkgYnkgY29mbrHmICBVICBpIHBvcHJ6ZWRuaWUgcG9sZWNlbmlhLgotICA3LiBUZXJheiB3cHN6IENUUkwtUiAodHJ6eW1haiBy83dub2N6ZbZuaWUgd2Nptm5p6nRlIGtsYXdpc3plIENUUkwgaSBSKQorICA3LiBUZXJheiB3cGlzeiBDVFJMLVIgKHRyenltYWogcvN3bm9jemW2bmllIHdjabZuaep0ZSBrbGF3aXN6ZSBDVFJMIGkgUikKICAgICAga2lsa2EgcmF6eSwgYnkgY29mbrHmIGNvZm5p6mNpYS4KIAogLS0tPiBQb29wcmF3IGJs6mR5eXkgdyB0ZWVqIGxpbmlpaSBpIHphYW1paWXxIGplIHBycnpleiBjb29mbmlqLgpAQCAtMzc3LDE0ICszNzcsMTQgQEAKIAogICAxLiBQcnplbmlltiBrdXJzb3IgZG8gcGllcndzemVqIGxpbmlpIC0tLT4gcG9uab9lai4KIAotICAyLiBXcGlzeiAgZGQgIGFieSB1c3VuseYgbGluaeogaSBwcnplY2hvd2HmIGqxIHcgcmVqZXN0cnplIFZpbS1hLgorICAyLiBXcGlzeiAgZGQgIGFieSB1c3VuseYgbGluaeogaSBwcnplY2hvd2HmIGqxIHcgcmVqZXN0cnplIFZpbWEuCiAKICAgMy4gUHJ6ZW5pZbYga3Vyc29yIGRvIGxpbmlpIGMpLCBQT1dZr0VKIHRlaiBnZHppZSB1c3Vuaep0YSBsaW5pYSBwb3dpbm5hCiAgICAgIHNp6iB6bmFqZG93YeYuCiAKICAgNC4gV2Nptm5paiAgcCAgYnkgd3N0YXdp5iBsaW5p6iBwb25pv2VqIGt1cnNvcmEuCiAKLSAgNS4gUG93dGFqIGtyb2tpIDIuIGRvIDQuIGG/IHpuYWpksSBzaeogdyBvZHBvd2llZG5pbSBwb3J6sWRrdS4KKyAgNS4gUG93dGFyemFqIGtyb2tpIDIuIGRvIDQuIGG/IHpuYWpksSBzaeogdyBvZHBvd2llZG5pbSBwb3J6sWRrdS4KIAogLS0tPiBkKSBKYWsgZHdhIGFuaW+za2kuCiAtLS0+IGIpIE5hIGRvbGUgZmlvs2tpLApAQCAtNDU2LDcgKzQ1Niw3IEBACiAKICAgNS4gV3Bpc3ogIGMkICwgcG9wcmF3IGtvbmllYyB3aWVyc3phIGkgd2Nptm5paiA8RVNDPi4KIAotLS0tPiBLb25pZWMgdGVnbyB3aWVyc3phIG11c2kgYnnmIHBvcHJhd2lvbnkgYWJ5IHd5Z2yxZGFsIHRhayBqYWsgZHJ1Z2kuCistLS0+IEtvbmllYyB0ZWdvIHdpZXJzemEgbXVzaSBieeYgcG9wcmF3aW9ueSBhYnkgd3lnbLFkYbMgdGFrIGphayBkcnVnaS4KIC0tLT4gS29uaWVjIHRlZ28gd2llcnN6YSBtdXNpIGJ55iBwb3ByYXdpb255IHW/eXdharFjIHBvbGVjZW5pYSAgYyQgLgogCiBVV0FHQTogIE1vv2VzeiB1v3l3YeYgPEJTPiBhYnkgcG9wcmF3aWHmIGKz6mR5IHcgY3phc2llIHBpc2FuaWEuCkBAIC01MjYsMTUgKzUyNiwxNSBAQAogICA1LiBBYnkgd3LzY2nmIGdkemllIGJ5s2W2IHdjabZuaWogIENUUkwtTy4gUG93dGFyemFqIGJ5IHdy82Np5iBkYWxlai4gQ1RSTC1JCiAgICAgIGlkemllIGRvIHByem9kdS4KIAotVVdBR0E6ICAnYrNvbmQnIHRvIG5pZSBqZXN0IG1ldG9kYSBieSBwcnplbGl0ZXJvd2HmIGKzsWQ7ICdis29uZCcgdG8gYrOxZC4KLVVXQUdBOiAgS2llZHkgc3p1a2FuaWUgb3NpsWduaWUga29uaWVjIHBsaWt1IGLqZHppZSBrb250eW51b3dhs28gb2QgcG9jerF0a3UKLW8gaWxlIG9wY2phICd3cmFwc2NhbicgbmllIHpvc3Rhs2EgcHJ6ZXN0YXdpb25hLgorVXdhZ2E6ICAnYrNvbmQnIHRvIG5pZSBqZXN0IG1ldG9kYSBieSBwcnplbGl0ZXJvd2HmIGKzsWQ7ICdis29uZCcgdG8gYrOxZC4KK1V3YWdhOiAgS2llZHkgc3p1a2FuaWUgb3NpsWduaWUga29uaWVjIHBsaWt1IGLqZHppZSBrb250eW51b3dhs28gb2QgcG9jerF0a3UKKyAgICAgICAgbyBpbGUgb3BjamEgJ3dyYXBzY2FuJyBuaWUgem9zdGGzYSBwcnplc3Rhd2lvbmEuCiAKIH5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fgogCQlMZWtjamEgNC4zLjogVyBQT1NaVUtJV0FOSVUgUEFSVUqhQ1lDSCBOQVdJQVPTVwogCiAKLQkJKiogV3Bpc3ogICUgIGJ5IHpuYWxlvOYgcGFzdWqxY3kgKSxdLCBsdWIgfSAuICoqCisJICAgICAgICoqIFdwaXN6ICAlICBieSB6bmFsZbzmIHBhcnVqsWN5ICksIF0sIGx1YiB9IC4gKioKIAogICAxLiBVbWlltuYga3Vyc29yIG5hIGt083J5bbYgeiAoLCBbLCBsdWIgeyB3IGxpbmlpIHBvbmm/ZWogb3puYWN6b25laiAtLS0+LgogCkBAIC01NDgsNyArNTQ4LDcgQEAKIAogLS0tPiBUbyAoIGplc3QgbGluaWEgdGVzdG93YSB6ICgsIFssIF0gaSB7LCB9IC4gKSkKIAotVVdBR0E6IFRhIGZ1bmtjamEgamVzdCBiYXJkem8gdb95dGVjem5hIHcgZGVidWdnb3dhbml1IHByb2dyYW11CitVd2FnYTogVGEgZnVua2NqYSBqZXN0IGJhcmR6byB1v3l0ZWN6bmEgdyBkZWJ1Z2dvd2FuaXUgcHJvZ3JhbXUKICAgICAgICB6IG5pZXNwYXJvd2FueW1pIG5hd2lhc2FtaSEKIAogCkBAIC01OTgsNyArNTk4LDcgQEAKICAgICAgQnkgemFtaWVuaeYgd3N6eXN0a2llIHN0YXJ5IG5hIG5vd3kgdyBsaW5paSB3cGlzeiAgICAgOnMvc3Rhcnkvbm93eS9nCiAgICAgIEJ5IHphbWllbmnmIGZyYXp5IHBvbWnqZHp5IGR3b21hIGxpbmlhbWkgIyB3cGlzeiAgICAgIDojLCNzL3N0YXJ5L25vd3kvZwogICAgICBCeSB6YW1pZW5p5iB3c3p5c3RraWUgd3lzdLFwaWVuaWEgdyBwbGlrdSB3cGlzeiAgICAgICA6JXMvc3Rhcnkvbm93eS9nCi0gICAgIEJ5IFZpbSBwcm9zabMgQ2nqIG8gcG90d2llcmR6aWVuaWUgZG9kYWogJ2MnCSAgIDolcy9zdGFyeS9ub3d5L2djCisgICAgIEJ5IFZpbSBwcm9zabMgQ2nqIG8gcG90d2llcmR6ZW5pZSBkb2RhaiAnYycJICAgOiVzL3N0YXJ5L25vd3kvZ2MKIH5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fgogCQkgTGVrY2phIDUuMS46IEpBSyBXWUtPTkHGIFBPTEVDRU5JQSBaRVdOylRSWk5FCiAKQEAgLTYwNiw3ICs2MDYsNyBAQAogCSoqIFdwaXN6ICA6ISAgYSBuYXN06nBuaWUgemV3bup0cnpuZSBwb2xlY2VuaWUgYnkgamUgd3lrb25h5i4gKioKIAogICAxLiBXcGlzeiB6bmFqb21lIHBvbGVjZW5pZSAgOiAgYnkgdXN0YXdp5iBrdXJzb3IgbmEgZG9sZSBla3JhbnUuIFRvIHBvendhbGEKLSAgICAgbmEgd3Byb3dhZHplbmllIHBvbGVjZW5pYS4KKyAgICAgbmEgd3Byb3dhZHplbmllIGtvbWVuZHkgbGluaWkgcG9sZWNl8S4KIAogICAyLiBUZXJheiB3c3RhdyAgISAgKHd5a3J6eWtuaWspLiBUbyB1bW+/bGl3aSBDaSB3eWtvbmFuaWUgZG93b2xuZWdvCiAgICAgIHpld27qdHJ6bmVnbyBwb2xlY2VuaWEgcG93s29raS4KQEAgLTYzOCwxMiArNjM4LDEyIEBACiAgIDQuIFRvIHBvbGVjZW5pZSB6YXBhbWnqdGEgY2GzeSBwbGlrIChWaW0gVHV0b3IpIHBvZCBuYXp3sSBURVNULgogICAgICBCeSB0byBzcHJhd2R6aeYgd3Bpc3ogIDohZGlyICBsdWIgIDohbHMgLCC/ZWJ5IHpub3d1IHpvYmFjennmIGxpc3TqIHBsaWvzdy4KIAotVXdhZ2E6IFphdXdhvywgv2UgZ2R5Ynm2IHRlcmF6IHd5c3plZLMgeiBWaW0tYSwgYSBuYXN06nBuaWUgd3N6ZWSzIHBvbm93bmllCi0gICAgICAga29tZW5ksSAgdmltIFRFU1QgLCBwbGlrIGJ5s2J5IGRva7NhZG6xIGtvcGmxIHR1dG9yaWFsYSBraWVkeSBnbworVXdhZ2E6IFphdXdhvywgv2UgZ2R5Ynm2IHRlcmF6IHd5c3plZLMgeiBWaW1hLCBhIG5hc3TqcG5pZSB3c3plZLMgcG9ub3duaWUKKyAgICAgICBwb2xlY2VuaWVtICB2aW0gVEVTVCAsIHBsaWsgYnmzYnkgZG9rs2FkbrEga29wabEgdHV0b3JpYWxhIGtpZWR5IGdvCiAgICAgICAgemFwaXN5d2GzZbYuCiAKLSAgNS4gVGVyYXogdXN18SBwbGlrIHdwaXN1arFjOgkJICAgOiFybSBURVNUCi0KKyAgNS4gVGVyYXogdXN18SBwbGlrIHdwaXN1arFjIChNUy1ET1MpOgkJICAgOiFkZWwgVEVTVAorICAgICAgICAgICAgICAgICAgICAgICAgICBsdWIgKFVuaXgpOiAgICAgICAgICAgICAgOiFybSBURVNUCiAKIH5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fgogCQkgICAgTGVrY2phIDUuMy46IFdZQlJBTklFIFRFS1NUVSBETyBaQVBJU1UKQEAgLTY4Nyw4ICs2ODcsOCBAQAogICAgICB0ZXJheiBzsSBkd2llIGtvcGllIExla2NqaSA1LjMuLCBvcnlnaW5hsyBpIGtvcGlhIHogcGxpa3UuCiAKIFVXQUdBOiBNb79lc3ogdGW/IHdjenl0YeYgd3lqtmNpZSB6ZXdu6nRyem5lZ28gcG9sZWNlbmlhLiBOYSBwcnp5a7NhZAotICAgICAgIDpyICFscyAgd2N6eXR1amUgd3lqtmNpZSBwb2xlY2VuaWEgbHMgaSB1bWllc3pjemEgamUgcG9kIGt1cnNvcmVtLgotCisgICAgICAgOnIgIWxzICB3Y3p5dHVqZSB3eWq2Y2llIHBvbGVjZW5pYSBscyBpIHVtaWVzemN6YSBqZSBwb2QgcG9uab9lagorICAgICAgIGt1cnNvcmEuCiAKIAogfn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+CkBAIC03MDMsNyArNzAzLDcgQEAKIAogCSAgOiFybSBOQVpXQV9QTElLVSAgLSAgdXN1d2EgcGxpayBOQVpXQV9QTElLVS4KIAotICAyLiAgOncgTkFaV0FfUExJS1UgIHphcGlzdWplIG9iZWNueSBwbGlrIFZpbS1hIG5hIGR5c2sgeiBuYXp3sSBOQVpXQV9QTElLVS4KKyAgMi4gIDp3IE5BWldBX1BMSUtVICB6YXBpc3VqZSBvYmVjbnkgcGxpayBWaW1hIG5hIGR5c2sgeiBuYXp3sSBOQVpXQV9QTElLVS4KIAogICAzLiAgdiBydWNoIDp3IE5BWldBX1BMSUtVICB6YXBpc3VqZSBXaXp1YWxuaWUgd3licmFuZSBsaW5pZSBkbyBOQVpXQV9QTElLVS4KIApAQCAtNzUyLDEzICs3NTIsMTMgQEAKICAgNC4gRG9rb/FjeiB3eXJheiB0YWsgamFrIHcgbGluaWkgcG9uab9lai4gV2Nptm5paiA8RVNDPiBhYnkgb3B1tmNp5iB0cnliCiAgICAgIEluc2VydC4KIAotICA1LiBVv3lqICBlICBieSBwcnplarbmIGRvIGtvbGVqbmVnbyBuaWVkb2tv8WN6b25lZ28gd3lyYXplIGkgcG93dGFyemFqIGtyb2tpCisgIDUuIFW/eWogIGUgIGJ5IHByemVqtuYgZG8ga29sZWpuZWdvIG5pZWRva2/xY3pvbmVnbyB3eXJhenUgaSBwb3d0YXJ6YWoga3Jva2kKICAgICAgMy4gaSA0LgogCiAtLS0+IFRhIGxpIHBveiBDaSDmd2kgZG9kYXcgdGVrcyBkbyBrb/EgbGluCiAtLS0+IFRhIGxpbmlhIHBvendvbGkgQ2kg5ndpY3p55iBkb2Rhd2FuaWUgdGVrc3R1IGRvIGtv8WNhIGxpbmlpLgogCi1Vd2FnYTogIGEgLCAgaSAgYW5kICBBICBwcm93YWR6sSBkbyB0cnlidSBJbnNlcnQsIGplZHlusSBy879uaWOxIGplc3QgbWllanNjZQorVXdhZ2E6ICBhICwgIGkgIG9yYXogIEEgIHByb3dhZHqxIGRvIHRyeWJ1IEluc2VydCwgamVkeW6xIHLzv25pY7EgamVzdCBtaWVqc2NlCiAgICAgICAgZ2R6aWUgbm93ZSB6bmFraSBi6mSxIGRvZGF3YW5lLgogfn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+CiAJCSAgIExla2NqYSA2LjMuOiBJTk5BIFdFUlNKQSBSRVBMQUNFICh6YW1pYW5hKQpAQCAtNzg5LDcgKzc4OSw3IEBACiAKICAgICAgICAqKiB1v3lqIG9wZXJhdG9yYSAgeSAgYWJ5IHNrb3Bpb3dh5iB0ZWtzdCBpICBwICBhYnkgZ28gd2tsZWnmICoqCiAKLSAgMS4gUHJ6ZWpkvCBkbyBsaW5paSBvem5hY3pvbmVqIC0tLT4gaSB1bWlltmMga3Vyc29yIHphICJhKSIuCisgIDEuIFByemVqZLwgZG8gbGluaWkgb3puYWN6b25laiAtLS0+IGkgdW1pZbbmIGt1cnNvciB6YSAiYSkiLgogCiAgIDIuIFdlamS8IHcgdHJ5YiBWaXN1YWwgIHYgIGkgcHJ6ZW5pZbYga3Vyc29yIG5hIHBvY3qxdGVrICJwaWVyd3N6eSIuCiAKQEAgLTc5OSw4ICs3OTksOCBAQAogCiAgIDUuIFdjabZuaWogIHAgIGFieSB3cGFrb3dh5iAocGFzdGUpIHRla3N0LiAgRG9kYWo6ICBhIGRydWdpPEVTQz4gLgogCi0gIDYuIFW/eWogdHJ5YnUgVmlzdWFsIGFieSB3eWJyYeYgIiBlbGVtZW50LiIsIHlhbmt1aiBnbyAgeSAsIHByemVqZLwgZG8ga2/xY2EKLSAgICAgbmFzdOpwbmVqIGxpbmlpICBqJCBpIHVwYWt1aiB0YW0gdGVrc3QgeiAgcCAuCisgIDYuIFW/eWogdHJ5YnUgV2l6dWFsbmVnbyBhYnkgd3licmHmICIgZWxlbWVudC4iLCB5YW5rdWogZ28gIHkgLCBwcnplamS8IGRvCisgICAgIGtv8WNhIG5hc3TqcG5laiBsaW5paSAgaiQgaSB1cGFrdWogdGFtIHRla3N0IHogIHAgLgogCiAtLS0+ICBhKSB0byBqZXN0IHBpZXJ3c3p5IGVsZW1lbnQuCiAgICAgICBiKQpAQCAtODE4LDcgKzgxOCw3IEBACiAgIDIuIFVzdGF3IG9wY2rqICdpYycgKElnbm9yZSBjYXNlIC0tIGlnbm9ydWogd2llbGtvtuYgbGl0ZXIpIHBvcHJ6ZXoKICAgICAgd3Bpc2FuaWU6CQk6c2V0IGljCiAKLSAgMy4gVGVyYXogc3p1a2FqICdpZ25vcmUnIHBvbm93bmllIHdjaXNrdWqxYzogIG4KKyAgMy4gVGVyYXogc3p1a2FqICdpZ25vcmUnIHBvbm93bmllIHdjaXNrYWqxYzogIG4KICAgICAgWmF1d2G/LCC/ZSBJZ25vcmUgaSBJR05PUkUgdGFrv2Ugc7EgdGVyYXogem5hbGV6aW9uZS4KIAogICA0LiBVc3RhdyBvcGNqZSAnaGxzZWFyY2gnIGkgJ2luY3NlYXJjaCc6ICAgIDpzZXQgaGxzIGlzCkBAIC04MzUsMTYgKzgzNSwxOCBAQAogCiAKICAgMS4gV3Bpc2FuaWUgIG8gIG90d2llcmEgbGluaeogUE9OSa9FSiBrdXJzb3JhLgotICAgICBXcGlzYW5pZSB3aWVsa2llZ28gIE8gIG90d2llcmEgbGluaeogUE9XWa9FSiBrdXJzb3JhLgotICAyLiBXcGlzeiAgYSAgYnkgd3N0YXdp5iB0ZWtzdCBaQSB6bmFraWVtIG5hLCBrdPNyeW0gamVzdCBrdXJzb3IuCi0gICAgIFdwaXNhbmllIHdpZWxraWVnbyAgQSAgZG9kYWplIHRla3N0IG5hIGtv8WN1IGxpbmlpLgorICAgICBXcGlzYW5pZSAgTyAgb3R3aWVyYSBsaW5p6iBQT1dZr0VKIGt1cnNvcmEuCisKKyAgMi4gV3Bpc2FuaWUgIGEgIGJ5IHdzdGF3aeYgdGVrc3QgWkEgem5ha2llbSBuYSwga3TzcnltIGplc3Qga3Vyc29yLgorICAgICBXcGlzYW5pZSAgQSAgZG9kYWplIHRla3N0IG5hIGtv8WN1IGxpbmlpLgorCiAgIDMuIFBvbGVjZW5pZSAgZSAgcHJ6ZW5vc2kgZG8ga2/xY2Egd3lyYXp1LgotICA0LiBPcGVyYXRvICB5ICB5YW5rdWplIChrb3BpdWplKSB0ZWtzdCwgIHAgIHBha3VqZSAod2tsZWphLCBwYXN0ZSkgZ28uCisgIDQuIE9wZXJhdG9yICB5ICB5YW5rdWplIChrb3BpdWplKSB0ZWtzdCwgIHAgIHBha3VqZSAod2tsZWphLCBwYXN0ZSkgZ28uCiAgIDUuIFdwaXNhbmllIHdpZWxraWVnbyAgUiAgd3Byb3dhZHphIHcgdHJ5YiBSZXBsYWNlICh6YW1pYW5hKSBkb3Dza2kKICAgICAgbmllIHpvc3RhbmllIHdjabZuaep0eSA8RVNDPi4KICAgNi4gV3Bpc2FuaWUgIjpzZXQgeHh4IiB1c3Rhd2lhIG9wY2rqICJ4eHgiLiBOaWV0a/NyZSBvcGNqZToKLQknaWMnICdpZ25vcmVjYXNlJwlpZ25vcnVqIHdpZWxrb7bmIHpuYWvzdwotCSdpcycgJ2luY3NlYXJjaCcJcG9rYb8gY3rqtmNpb3dlIGRvcGFzb3dhbmlhCisJJ2ljJyAgJ2lnbm9yZWNhc2UnCWlnbm9ydWogd2llbGtvtuYgem5ha/N3CisJJ2lzJyAgJ2luY3NlYXJjaCcJcG9rYb8gY3rqtmNpb3dlIGRvcGFzb3dhbmlhCiAJJ2hscycgJ2hsc2VhcmNoJwlwb2S2d2lldGwgd3N6eXN0a2llIGRvcGFzb3dhbmlhCiAgICAgIE1vv2VzeiB1v3nmIHphcvN3bm8gZLN1Z2llaiBqYWsgaSBrcvN0a2llaiBmb3JteS4KICAgNy4gRG9kYWogIm5vIiBhYnkgd3mzsWN6eeYgb3Bjauo6ICAgOnNldCBub2ljCkBAIC04NTQsMTQgKzg1NiwxNCBAQAogCiAKIH5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fgotCQkJTEVLQ0pBIDcuMS4gSkFLIFVaWVNLQcYgUE9NT0MgCisJCQlMRUtDSkEgNy4xLiBKQUsgVVpZU0tBxiBQT01PQwogCiAJCSAgICAgICoqIFW/eWNpZSBzeXN0ZW11IHBvbW9jeSBvbi1saW5lICoqCiAKICAgVmltIHBvc2lhZGEgYmFyZHpvIGRvYnJ5IHN5c3RlbSBwb21vY3kgb24tbGluZS4gQnkgemFjerHmIHNwcvNidWogamVkbmVqCiAgIHogdHJ6ZWNoIG1vv2xpd2+2Y2k6Ci0JLSB3Y2m2bmlqIGtsYXdpc3ogPEhFTFA+IChqZbZsaSB0YWtvd3kgcG9zaWFkYXN6KQotCS0gd2Nptm5paiBrbGF3aXN6IDxGMT4gKGpltmxpIHRha293eSBwb3NpYWRhc3opCisJLSB3Y2m2bmlqIGtsYXdpc3ogPEhFTFA+IChqZbZsaSB0YWtpIG1hc3opCisJLSB3Y2m2bmlqIGtsYXdpc3ogPEYxPiAoamW2bGkgdGFraSBtYXN6KQogCS0gd3Bpc3ogICA6aGVscDxFTlRFUj4KIAogICBQcnplY3p5dGFqIHRla3N0IHcgb2tuaWUgcG9tb2N5ICBhYnkgZG93aWVkemll5iBzaeogamFrIGR6aWGzYSBwb21vYy4KQEAgLTg3OCw3ICs4ODAsNyBAQAogfn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+CiAJCSAgIExFS0NKQSA3LjIuIFRXT1JaRU5JRSBTS1JZUFRVIFNUQVJUT1dFR08KIAotCQkJICoqIFezsWN6IG1vv2xpd2+2Y2kgVmltLWEgKioKKwkJCSAgKiogV7OxY3ogbW+/bGl3b7ZjaSBWaW1hICoqCiAKICAgVmltIG1hIG8gd2llbGUgd2nqY2VqIG1vv2xpd2+2Y2kgbmm/IFZpLCBhbGUgd2nqa3N6b7bmIHogbmljaCBqZXN0IGRvbXm2bG5pZQogICB3ebOxY3pvbmEuIEpltmxpIGNoY2VzeiB3s7FjennmIHRlIG1vv2xpd2+2Y2kgbmEgc3RhcmNpZSBtdXNpc3ogdXR3b3J6eeYKQEAgLTk0MywyMyArOTQ1LDIzIEBACiAKIH5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fgogCi0gIFR1dGFqIHNp6iBrb/FjenkgdHV0b3JpYWwgVmltLWEuIFpvc3RhsyBvbiBwb215tmxhbnkgdGFrIGFieSBkYeYga3LzdGtpCisgIFR1dGFqIHNp6iBrb/FjenkgdHV0b3JpYWwgVmltYS4gWm9zdGGzIG9uIHBvbXm2bGFueSB0YWsgYWJ5IGRh5iBrcvN0a2kKICAgcHJ6ZWdssWQgamVnbyBtb79saXdvtmNpLCB3eXN0YXJjemFqsWN5IGJ5tiBt82ezIGdvIHW/eXdh5i4gSmVzdCBvbgogICBkYWxla2kgb2Qga29tcGxldG5vtmNpIHBvbmlld2G/IFZpbSBtYSBvIHdpZWxlLCB3aWVsZSB3aepjZWogcG9sZWNl8S4KIAogICBEbGEgZGFsc3plaiBuYXVraSByZWtvbWVuZHVqZW15IGtzabG/a+o6CiAJVmltIC0gVmkgSW1wcm92ZWQgLSBhdXRvciBTdGV2ZSBPdWFsbGluZQogCVd5ZGF3Y2E6IE5ldyBSaWRlcnMKLSAgUGllcndzemEga3NpsXprYSBjYbNrb3dpY2llIHBvtndp6mNvbmEgVmltLW93aS4gVb95dGVjem5hIHp3s2FzemN6YSBkbGEKKyAgUGllcndzemEga3NpsXprYSBjYbNrb3dpY2llIHBvtndp6mNvbmEgVmltb3dpLiBVv3l0ZWN6bmEgenezYXN6Y3phIGRsYQogICBwb2N6sXRrdWqxY3ljaC4gWmF3aWVyYSB3aWVsZSBwcnp5a7NhZPN3IGkgaWx1c3RyYWNqaS4KICAgWm9iYWN6IGh0dHA6Ly9pY2NmLWhvbGxhbmQub3JnLi9jbGljazUuaHRtbAogCi0gIFRhIGtzabG/a2EgamVzdCBzdGFyc3phIGkgYmFyZHppZWogbyBWaSBuab8gbyBWaW0taWUsIGFsZSB0YWu/ZSB3YXJ0YQorICBTdGFyc3phIHBvenljamEgaSBiYXJkemllaiBvIFZpIG5pvyBvIFZpbWllLCBhbGUgdGFrv2Ugd2FydGEKICAgcG9sZWNlbmlhOgogCUxlYXJuaW5nIHRoZSBWaSBFZGl0b3IgLSBhdXRvciBMaW5kYSBMYW1iCiAJV3lkYXdjYTogTydSZWlsbHkgJiBBc3NvY2lhdGVzIEluYy4KICAgVG8gZG9icmEga3Npsb9rYSBieSBkb3dpZWR6aWXmIHNp6iBuaWVtYWwgd3N6eXN0a2llZ28gY28gY2hjaWGzYnm2IHpyb2Jp5gotICB6IFZpLiBTevNzdGEgZWR5Y2phIHphd2llcmEgdGW/IGluZm9ybWFjamUgbyBWaW0taWUuCisgIHogVmkuIFN683N0YSBlZHljamEgemF3aWVyYSB0Zb8gaW5mb3JtYWNqZSBvIFZpbWllLgogCiAgIFBvIHBvbHNrdSB3eWRhbm86CiAJRWR5dG9yIHZpLiBMZWtzeWtvbiBraWVzem9ua293eSAtIGF1dG9yIEFybm9sZCBSb2JiaW5zCkBAIC05NjcsMTAgKzk2OSwxMCBAQAogCUlTQk46IDgzLTcxOTctNDcyLTgKIAlodHRwOi8vaGVsaW9uLnBsL2tzaWF6a2kvdmlsZWsuaHRtCiAgIEplc3QgdG8ga3Npsb9lY3prYSB6YXdpZXJharFjYSBzcGlzIHBvbGVjZfEgdmkgaSBqZWdvIG5handhv25pZWpzenljaAotICBrbG9u83cgKG1p6mR6eSBpbm55bWkgVmltLWEpLgorICBrbG9u83cgKG1p6mR6eSBpbm55bWkgVmltYSkuCiAKIAlFZHl0b3IgdmkgLSBhdXRvcnp5IExpbmRhIExhbWIgaSBBcm5vbGQgUm9iYmlucwotCVd5ZGF3Y2E6IEhlbGlvbiAyMDAxIChPJ1JlaWxseSkgLSB3ZyA2IGFuZy4gd3lkYW5pYQorCVd5ZGF3Y2E6IEhlbGlvbiAyMDAxIChPJ1JlaWxseSkgLSB3ZyA2LiBhbmcuIHd5ZGFuaWEKIAlJU0JOOiA4My03MTk3LTUzOS0yCiAJaHR0cDovL2hlbGlvbi5wbC9rc2lhemtpL3ZpZWR5dC5odG0KICAgUm96c3plcnpvbmEgd2Vyc2phIExlYXJuaW5nIHRoZSBWaSBFZGl0b3IgdyBwb2xza2ltIHSzdW1hY3plbml1LgpAQCAtOTgwLDcgKzk4Miw3IEBACiAgIENvbG9yYWRvIFN0YXRlIFVuaXZlcnNpdHkuCiAgIEUtbWFpbDogYndhcmVAbWluZXMuY29sb3JhZG8uZWR1LgogCi0gIFptb2R5Zmlrb3dhbmUgZGxhIFZpbS1hIHByemV6IEJyYW1hIE1vb2xlbmFhcmEuCisgIFptb2R5Zmlrb3dhbmUgZGxhIFZpbWEgcHJ6ZXogQnJhbWEgTW9vbGVuYWFyYS4KIAogfn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+CiAKQEAgLTk4OCw0ICs5OTAsNSBAQAogICBTaWVycGll8SAyMDAxLAogICByZXYuIE1hcnplYyAyMDAyCiAgIDJuZCByZXYuIFdyemVzaWXxIDIwMDQKKyAgM3JkIHJldi4gTWFyemVjIDIwMDYKICAgV3N6ZWxraWUgdXdhZ2kgcHJvc3rqIGtpZXJvd2HmIG5hOiBtaWttYWNoQHdwLnBsCmRpZmYgLS1naXQgYS9ydW50aW1lL3R1dG9yL3R1dG9yLnBsLmNwMTI1MCBiL3J1bnRpbWUvdHV0b3IvdHV0b3IucGwuY3AxMjUwCmluZGV4IGNjMmE2Y2MuLjRkYWVkMTggMTAwNjQ0Ci0tLSBhL3J1bnRpbWUvdHV0b3IvdHV0b3IucGwuY3AxMjUwCisrKyBiL3J1bnRpbWUvdHV0b3IvdHV0b3IucGwuY3AxMjUwCkBAIC01LDcgKzUsNyBAQAogICAgICBWaW0gdG8gcG906r9ueSBlZHl0b3IsIGt083J5IHBvc2lhZGEgd2llbGUgcG9sZWNl8SwgemJ5dCBkdb9vIGJ5CiAgICAgIHd5amGcbmnmIGplIHdzenlzdGtpZSB3IHR5bSB0dXRvcmlhbHUuIFRlbiBwcnpld29kbmlrIG1hIG5hdWN6eeYKICAgICAgQ2nqIHBvc7N1Z2l3YeYgc2nqIHd5c3RhcmN6YWq5Y28gd2llbG9tYSBrb21lbmRhbWkgYnmcIG3zZ7Mgs2F0d28KLSAgICAgdb95d2HmIFZpbS1hIGpha28gZWR5dG9yYSBvZ/NsbmVnbyBwcnplem5hY3plbmlhLgorICAgICB1v3l3YeYgVmltYSBqYWtvIGVkeXRvcmEgb2fzbG5lZ28gcHJ6ZXpuYWN6ZW5pYS4KIAogICAgICBDemFzIHBvdHJ6ZWJueSBuYSB1a2/xY3plbmllIHR1dG9yaWFsYSB0byAyNSBkbyAzMCBtaW51dCBpIHphbGW/eQogICAgICBvZCB0ZWdvIGphayB3aWVsZSBjemFzdSBzcOpkemlzeiBuYSBla3NwZXJ5bWVudG93YW5pdS4gIApAQCAtMTUsMTAgKzE1LDEwIEBACiAJIHdjemWcbmllaiBrb3Bp6iB0ZWdvIHBsaWt1IGRvIOZ3aWN6ZfEgKGplnGxpIHphY3q5s2WcIGtvbWVuZLkKIAkgInZpbXR1dG9yIiB0byBqdb8gcHJhY3VqZXN6IG5hIGtvcGlpKS4KIAotICAgICBXYb9uZSBqZXN0LCBieZwgcGFtaep0YbMsIL9lIHByemV3b2RuaWsgdGVuIHpvc3RhsyB6YXByb2pla3Rvd2FueSBkbwotICAgICBuYXVraSBwb3ByemV6IOZ3aWN6ZW5pYS4gVG8gb3puYWN6YSwgv2UgbXVzaXN6IHd5a29ueXdh5iBwb2xlY2VuaWEKLSAgICAgYnkgbmF1Y3p55iBzaeogaWNoIHByYXdpZLNvd28uIEplnGxpIGLqZHppZXN6IGplZHluaWUgY3p5dGGzIHRla3N0Ci0gICAgIHN6eWJrbyB6YXBvbW5pc3ogd2llbGUgcG9sZWNl8SEKKwkgUGFtaep0YWogv2UgcHJ6ZXdvZG5payB0ZW4gem9zdGGzIHphcHJvamVrdG93YW55IGRvIG5hdWtpIHBvcHJ6ZXoKKwkg5ndpY3plbmlhLiBPem5hY3phIHRvLCC/ZSBtdXNpc3ogd3lrb255d2HmIHBvbGVjZW5pYSBieSBuYXVjennmIHNp6iBpY2gKKwkgcHJhd2lks293by4gSmWcbGkgYupkemllc3ogamVkeW5pZSBjenl0YbMgdGVrc3Qgc3p5YmtvIHphcG9tbmlzeiB3aWVsZQorCSBwb2xlY2XxIQogCiAgICAgIFRlcmF6IHVwZXduaWogc2nqLCC/ZSBuaWUgbWFzeiB3Y2mcbmnqdGVnbyBDYXBzTG9ja2EgaSB3Y2lza2FqICBqCiAgICAgIHRhayBks3VnbyBkb3Dza2kgTGVrY2phIDEuMS4gbmllIHd5cGWzbmkgY2Gza293aWNpZSBla3JhbnUuCkBAIC00NSw3ICs0NSw3IEBACiAKIFV3YWdhOiBLbGF3aXN6ZSBrdXJzb3JhIHRha79lIHBvd2lubnkgZHppYbNh5iwgYWxlIHW/eXdharljICBoamtsICBi6mR6aWVzegogICAgICAgIHcgc3RhbmllIHBvcnVzemHmIHNp6iBvIHdpZWxlIHN6eWJjaWVqIGphayBzaeogdHlsa28gcHJ6eXp3eWN6YWlzei4KLQkgICBOYXByYXdk6iEKKyAgICAgICBOYXByYXdk6iEKIAogfn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+CiAJCSAgICBMZWtjamEgMS4yLjogV1lDSE9EWkVOSUUgWiBWSU0tYQpAQCAtNjUsNyArNjUsNyBAQAogICAgICB3eWqc5iBpIHdy82Np5iBkbyBlZHl0b3JhLgogCiBVV0FHQTogOnEhPEVOVEVSPiBwb3J6dWNhIHdzemVsa2llIHptaWFueSBqYWtpZSB6cm9iabNlnC4gVyBuYXN06nBueWNoCi1sZWtjamFjaCBkb3dpZXN6IHNp6iBqYWsgamUgemFwYW1p6nR5d2HmLgorICAgICAgIGxla2NqYWNoIGRvd2llc3ogc2nqIGphayBqZSB6YXBhbWnqdHl3YeYuCiAKICAgNS4gUHJ6ZW5pZZwga3Vyc29yIGRvIGxla2NqaSAxLjMuCiAKQEAgLTE1MCwxNiArMTUwLDE2IEBACiAgIDEuIFpha2/xY3ogdHV0b3JpYWwgdGFrIGphayB3IGxla2NqaSAxLjIuOiAgOnEhCiAKICAgMi4gVyBwb3ezb2NlIHd5ZGFqIHBvbGVjZW5pZTogIHZpbSB0dXRvcjxFTlRFUj4KLSAgICAgInZpbSIgamVzdCBwb2xlY2VuaWVtIHVydWNoYW1pYWq5Y3ltIGVkeXRvciBWaW1tLiAndHV0b3InIHRvIG5hendhIHBsaWt1CisgICAgICJ2aW0iIGplc3QgcG9sZWNlbmllbSB1cnVjaGFtaWFquWN5bSBlZHl0b3IgVmltLiAndHV0b3InIHRvIG5hendhIHBsaWt1CiAgICAgIGpha2kgY2hjZXN6IGVkeXRvd2HmLiBVv3lqIHBsaWt1IGpha2kgbW+/ZSB6b3N0YeYgem1pZW5pb255LgogCiAgIDMuIERvZGFqIGkgdXN18SB0ZWtzdCB0YWsgamFrIHNp6iBuYXVjenmzZZwgdyBwb3ByemVkbmljaCBsZWtjamFjaC4KIAotICA0LiBaYXBpc3ogcGxpayB6ZSB6bWlhbmFtaSB3IG9wdZzmIFZpbWE6ICA6d3E8RU5URVI+CisgIDQuIFphcGlzeiBwbGlrIHplIHptaWFuYW1pIGkgb3B1nOYgVmltYTogIDp3cTxFTlRFUj4KIAogICA1LiBVcnVjaG9tIHBvbm93bmllIHZpbXR1dG9yIGkgcHJ6ZWpknyBkbyBwb2RzdW1vd2FuaWEgbGVrY2ppLgogCi0gIDYuIFBvIHByemVjenl0YW5pdSB3c3p5c3RraWNoIGtyb2vzdyBpIHpyb3p1bWllbml1IGljaDogd3lrb25haiBqZS4KKyAgNi4gUG8gcHJ6ZWN6eXRhbml1IHdzenlzdGtpY2gga3Jva/N3IGkgaWNoIHpyb3p1bWllbml1OiB3eWtvbmFqIGplLgogCiAKIH5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fgpAQCAtMTY4LDIxICsxNjgsMjEgQEAKICAgMS4gUG9ydXN6YXN6IGt1cnNvcmVtIHW/eXdharljICJzdHJ6YbNlayIgaSBrbGF3aXN6eSAgaGprbCAuCiAgICAgICAgaCAodyBsZXdvKQkgaiAodyBk87MpCSBrIChkbyBn83J5KQkJbCAodyBwcmF3bykKIAotICAyLiBCeSB3ZWqc5iBkbyBWaW0tYSAoeiBwb3ezb2tpKSB3cGlzejoKKyAgMi4gQnkgd2VqnOYgZG8gVmltYSAoeiBwb3ezb2tpKSB3cGlzejoKIAkJCSAgICB2aW0gTkFaV0FfUExJS1U8RU5URVI+CiAKLSAgMy4gQnkgd3lqnOYgeiBWaW0tYSB3cGlzejoKKyAgMy4gQnkgd3lqnOYgeiBWaW1hIHdwaXN6OgogCQkJICAgIDxFU0M+IDpxITxFTlRFUj4gIGJ5IHVzdW65YyB3c3p5c3RraWUgem1pYW55LgogCSAgICAgTFVCOgkgICAgPEVTQz4gOndxPEVOVEVSPiAgYnkgem1pYW55IHphY2hvd2HmLgogCiAgIDQuIEJ5IHVzdW655iB6bmFrIHBvZCBrdXJzb3JlbSB3Y2mcbmlqOiAgeAogCiAgIDUuIEJ5IHdzdGF3aeYgdGVrc3QgcHJ6ZWQga3Vyc29yZW0gbHViIGRvZGHmOgotCWkgICAgICAgICB3cGlzeiB0ZWtzdCAgICAgIDxFU0M+IHdzdGF3aSBwcnplZCBrdXJzb3JlbQotCUEgICAgICAgICB3cGlzeiB0ZWtzdCAgICAgIDxFU0M+IGRvZGEgbmEga2/xY3UgbGluaWkKKwlpICAgd3Bpc3ogdGVrc3QgICA8RVNDPiAgICAgICAgIHdzdGF3aSBwcnplZCBrdXJzb3JlbQorCUEgICB3cGlzeiB0ZWtzdCAgIDxFU0M+ICAgICAgICAgZG9kYSBuYSBrb/FjdSBsaW5paQogCiBVV0FHQTogV2NpnG5p6mNpZSA8RVNDPiBwcnplbmllc2llIENp6iB6IHBvd3JvdGVtIGRvIHRyeWJ1IE5vcm1hbAotbHViIG9kd2+zYSBuaWVjaGNpYW5lIGx1YiBjeuqcY2lvd28gd3Byb3dhZHpvbmUgcG9sZWNlbmlhLgorICAgICAgIGx1YiBvZHdvs2EgbmllY2hjaWFuZSBsdWIgY3rqnGNpb3dvIHdwcm93YWR6b25lIHBvbGVjZW5pYS4KIAogVGVyYXogbW+/ZW15IGtvbnR5bnVvd2HmIGkgcHJ6ZWqc5iBkbyBMZWtjamkgMi4KIH5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fgpAQCAtMTk3LDExICsxOTcsMTEgQEAKIAogICAzLiBQcnplc3XxIGt1cnNvciBuYSBwb2N6uXRlayB3eXJhenUsIGt083JlIGNoY2VzeiB1c3VuueYuCiAKLSAgNC4gV3Bpc3ogICBkdyAgIGJ5IHVzdW65YyB3eXJhei4KKyAgNC4gV3Bpc3ogICBkdyAgIGJ5IHVzdW655iB3eXJhei4KIAogICBVV0FHQTogTGl0ZXJhICBkICBwb2phd2kgc2nqIG5hIGRvbGUgZWtyYW51LiBWaW0gY3pla2EgbmEgd3Bpc2FuaWUgIHcgLiAKLQkgSmWcbGkgem9iYWN6eXN6IGlubnkgem5hayB3cGlzYbNlnCBjb5wgn2xlLCB3Y2mcbmlqIDxFU0M+IGkgemFjem5pagotCSBvZCBwb2N6uXRrdS4KKwkgSmWcbGkgem9iYWN6eXN6IGlubnkgem5hayBvem5hY3phIHRvLCC/ZSB3cGlzYbNlnCBjb5wgn2xlLCB3Y2mcbmlqCisJIDxFU0M+IGkgemFjem5paiBvZCBwb2N6uXRrdS4KIAogLS0tPiBKZXN0IHR1IHBhcuogcGFwaWVyIHd5cmF683csIGt083JlIGthbWll8SBuaWUgbmFsZb+5IGRvIG5vv3ljZSB0ZWdvIHpkYW5pYS4KIApAQCAtMzA2LDEzICszMDYsMTMgQEAKIAogCQkgICAqKiBXcGlzeiAgZGQgIGFieSB1c3VuueYgY2GzuSBsaW5p6i4gKioKIAotICBaIHBvd29kdSBjeupzdG+cY2kgdXN1d2FuaWEgY2GzeWNoIGxpbmlpLCBwcm9qZWt0YW5jaSBWSSB6ZGVjeWRvd2FsaSwgv2UKKyAgWiBwb3dvZHUgY3rqc3RvnGNpIHVzdXdhbmlhIGNhs3ljaCBsaW5paSwgcHJvamVrdGFuY2kgVmkgemRlY3lkb3dhbGksIL9lCiAgIGLqZHppZSCzYXR3aWVqIHdwaXNh5iBkd2EgcmF6eSAgZCAgYWJ5IHVzdW655iBsaW5p6i4KIAotICAxLiBQcnplbmllnCBrdXJzb3IgZG8gemRhbmlhIHBvbmm/ZWouCi0gIDIuIFdwaXN6ICBkZCAgYWJ5IHVzdW65YyB3aWVyc3ouCisgIDEuIFByemVuaWWcIGt1cnNvciBkbyBkcnVnaWVnbyB6ZGFuaWEgeiB3aWVyc3p5a2EgcG9uab9lai4KKyAgMi4gV3Bpc3ogIGRkICBhYnkgdXN1brnmIHdpZXJzei4KICAgMy4gVGVyYXogcHJ6ZW5pZZwgc2nqIGRvIGN6d2FydGVnbyB3aWVyc3phLgotICA0LiBXcGlzeiAgMmRkICBhYnkgdXN1brljIGR3aWEgd2llcnN6ZS4KKyAgNC4gV3Bpc3ogIDJkZCAgYWJ5IHVzdW65YyBkd2Egd2llcnN6ZS4KIAogLS0tPiAgMSkgIFLzv2Ugc7kgY3plcndvbmUsCiAtLS0+ICAyKSAgQrNvdG8gamVzdCBmYWpuZSwKQEAgLTMzNyw3ICszMzcsNyBAQAogICA0LiBUeW0gcmF6ZW0gcG9wcmF3IHdzenlzdGtpZSBis+pkeSB3IGxpbmlpIHW/eXdharljIHBvbGVjZW5pYSAgeCAuCiAgIDUuIFRlcmF6IHdjaZxuaWogd2llbGtpZSBVIGFieSBwcnp5d3LzY2nmIGxpbmnqIGRvIG9yeWdpbmFsbmVnbyBzdGFudS4KICAgNi4gVGVyYXogd2NpnG5paiAgdSAga2lsa2EgcmF6eSBieSBjb2ZuueYgIFUgIGkgcG9wcnplZG5pZSBwb2xlY2VuaWEuCi0gIDcuIFRlcmF6IHdwc3ogQ1RSTC1SICh0cnp5bWFqIHLzd25vY3plnG5pZSB3Y2mcbmnqdGUga2xhd2lzemUgQ1RSTCBpIFIpCisgIDcuIFRlcmF6IHdwaXN6IENUUkwtUiAodHJ6eW1haiBy83dub2N6ZZxuaWUgd2NpnG5p6nRlIGtsYXdpc3plIENUUkwgaSBSKQogICAgICBraWxrYSByYXp5LCBieSBjb2ZuueYgY29mbmnqY2lhLgogCiAtLS0+IFBvb3ByYXcgYmzqZHl5eSB3IHRlZWogbGluaWlpIGkgemFhbWlpZfEgamUgcHJyemV6IGNvb2ZuaWouCkBAIC0zNzcsMTQgKzM3NywxNCBAQAogCiAgIDEuIFByemVuaWWcIGt1cnNvciBkbyBwaWVyd3N6ZWogbGluaWkgLS0tPiBwb25pv2VqLgogCi0gIDIuIFdwaXN6ICBkZCAgYWJ5IHVzdW655iBsaW5p6iBpIHByemVjaG93YeYgarkgdyByZWplc3RyemUgVmltLWEuCisgIDIuIFdwaXN6ICBkZCAgYWJ5IHVzdW655iBsaW5p6iBpIHByemVjaG93YeYgarkgdyByZWplc3RyemUgVmltYS4KIAogICAzLiBQcnplbmllnCBrdXJzb3IgZG8gbGluaWkgYyksIFBPV1mvRUogdGVqIGdkemllIHVzdW5p6nRhIGxpbmlhIHBvd2lubmEKICAgICAgc2nqIHpuYWpkb3dh5i4KIAogICA0LiBXY2mcbmlqICBwICBieSB3c3Rhd2nmIGxpbmnqIHBvbmm/ZWoga3Vyc29yYS4KIAotICA1LiBQb3d0YWoga3Jva2kgMi4gZG8gNC4gYb8gem5hamS5IHNp6iB3IG9kcG93aWVkbmltIHBvcnq5ZGt1LgorICA1LiBQb3d0YXJ6YWoga3Jva2kgMi4gZG8gNC4gYb8gem5hamS5IHNp6iB3IG9kcG93aWVkbmltIHBvcnq5ZGt1LgogCiAtLS0+IGQpIEphayBkd2EgYW5pb7NraS4KIC0tLT4gYikgTmEgZG9sZSBmaW+za2ksCkBAIC00NTYsNyArNDU2LDcgQEAKIAogICA1LiBXcGlzeiAgYyQgLCBwb3ByYXcga29uaWVjIHdpZXJzemEgaSB3Y2mcbmlqIDxFU0M+LgogCi0tLS0+IEtvbmllYyB0ZWdvIHdpZXJzemEgbXVzaSBieeYgcG9wcmF3aW9ueSBhYnkgd3lnbLlkYWwgdGFrIGphayBkcnVnaS4KKy0tLT4gS29uaWVjIHRlZ28gd2llcnN6YSBtdXNpIGJ55iBwb3ByYXdpb255IGFieSB3eWdsuWRhsyB0YWsgamFrIGRydWdpLgogLS0tPiBLb25pZWMgdGVnbyB3aWVyc3phIG11c2kgYnnmIHBvcHJhd2lvbnkgdb95d2FquWMgcG9sZWNlbmlhICBjJCAuCiAKIFVXQUdBOiAgTW+/ZXN6IHW/eXdh5iA8QlM+IGFieSBwb3ByYXdpYeYgYrPqZHkgdyBjemFzaWUgcGlzYW5pYS4KQEAgLTUyNiwxNSArNTI2LDE1IEBACiAgIDUuIEFieSB3cvNjaeYgZ2R6aWUgYnmzZZwgd2NpnG5paiAgQ1RSTC1PLiBQb3d0YXJ6YWogYnkgd3LzY2nmIGRhbGVqLiBDVFJMLUkKICAgICAgaWR6aWUgZG8gcHJ6b2R1LgogCi1VV0FHQTogICdis29uZCcgdG8gbmllIGplc3QgbWV0b2RhIGJ5IHByemVsaXRlcm93YeYgYrO5ZDsgJ2Kzb25kJyB0byBis7lkLgotVVdBR0E6ICBLaWVkeSBzenVrYW5pZSBvc2m5Z25pZSBrb25pZWMgcGxpa3UgYupkemllIGtvbnR5bnVvd2GzbyBvZCBwb2N6uXRrdQotbyBpbGUgb3BjamEgJ3dyYXBzY2FuJyBuaWUgem9zdGGzYSBwcnplc3Rhd2lvbmEuCitVd2FnYTogICdis29uZCcgdG8gbmllIGplc3QgbWV0b2RhIGJ5IHByemVsaXRlcm93YeYgYrO5ZDsgJ2Kzb25kJyB0byBis7lkLgorVXdhZ2E6ICBLaWVkeSBzenVrYW5pZSBvc2m5Z25pZSBrb25pZWMgcGxpa3UgYupkemllIGtvbnR5bnVvd2GzbyBvZCBwb2N6uXRrdQorICAgICAgICBvIGlsZSBvcGNqYSAnd3JhcHNjYW4nIG5pZSB6b3N0YbNhIHByemVzdGF3aW9uYS4KIAogfn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+CiAJCUxla2NqYSA0LjMuOiBXIFBPU1pVS0lXQU5JVSBQQVJVSqVDWUNIIE5BV0lBU9NXCiAKIAotCQkqKiBXcGlzeiAgJSAgYnkgem5hbGWf5iBwYXN1arljeSApLF0sIGx1YiB9IC4gKioKKwkgICAgICAgKiogV3Bpc3ogICUgIGJ5IHpuYWxln+YgcGFydWq5Y3kgKSwgXSwgbHViIH0gLiAqKgogCiAgIDEuIFVtaWWc5iBrdXJzb3IgbmEga3TzcnltnCB6ICgsIFssIGx1YiB7IHcgbGluaWkgcG9uab9laiBvem5hY3pvbmVqIC0tLT4uCiAKQEAgLTU0OCw3ICs1NDgsNyBAQAogCiAtLS0+IFRvICggamVzdCBsaW5pYSB0ZXN0b3dhIHogKCwgWywgXSBpIHssIH0gLiApKQogCi1VV0FHQTogVGEgZnVua2NqYSBqZXN0IGJhcmR6byB1v3l0ZWN6bmEgdyBkZWJ1Z2dvd2FuaXUgcHJvZ3JhbXUKK1V3YWdhOiBUYSBmdW5rY2phIGplc3QgYmFyZHpvIHW/eXRlY3puYSB3IGRlYnVnZ293YW5pdSBwcm9ncmFtdQogICAgICAgIHogbmllc3Bhcm93YW55bWkgbmF3aWFzYW1pIQogCiAKQEAgLTU5OCw3ICs1OTgsNyBAQAogICAgICBCeSB6YW1pZW5p5iB3c3p5c3RraWUgc3RhcnkgbmEgbm93eSB3IGxpbmlpIHdwaXN6ICAgICA6cy9zdGFyeS9ub3d5L2cKICAgICAgQnkgemFtaWVuaeYgZnJhenkgcG9taepkenkgZHdvbWEgbGluaWFtaSAjIHdwaXN6ICAgICAgOiMsI3Mvc3Rhcnkvbm93eS9nCiAgICAgIEJ5IHphbWllbmnmIHdzenlzdGtpZSB3eXN0uXBpZW5pYSB3IHBsaWt1IHdwaXN6ICAgICAgIDolcy9zdGFyeS9ub3d5L2cKLSAgICAgQnkgVmltIHByb3NpsyBDaeogbyBwb3R3aWVyZHppZW5pZSBkb2RhaiAnYycJICAgOiVzL3N0YXJ5L25vd3kvZ2MKKyAgICAgQnkgVmltIHByb3NpsyBDaeogbyBwb3R3aWVyZHplbmllIGRvZGFqICdjJwkgICA6JXMvc3Rhcnkvbm93eS9nYwogfn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+CiAJCSBMZWtjamEgNS4xLjogSkFLIFdZS09OQcYgUE9MRUNFTklBIFpFV07KVFJaTkUKIApAQCAtNjA2LDcgKzYwNiw3IEBACiAJKiogV3Bpc3ogIDohICBhIG5hc3TqcG5pZSB6ZXdu6nRyem5lIHBvbGVjZW5pZSBieSBqZSB3eWtvbmHmLiAqKgogCiAgIDEuIFdwaXN6IHpuYWpvbWUgcG9sZWNlbmllICA6ICBieSB1c3Rhd2nmIGt1cnNvciBuYSBkb2xlIGVrcmFudS4gVG8gcG96d2FsYQotICAgICBuYSB3cHJvd2FkemVuaWUgcG9sZWNlbmlhLgorICAgICBuYSB3cHJvd2FkemVuaWUga29tZW5keSBsaW5paSBwb2xlY2XxLgogCiAgIDIuIFRlcmF6IHdzdGF3ICAhICAod3lrcnp5a25paykuIFRvIHVtb79saXdpIENpIHd5a29uYW5pZSBkb3dvbG5lZ28KICAgICAgemV3bup0cnpuZWdvIHBvbGVjZW5pYSBwb3ezb2tpLgpAQCAtNjM4LDEyICs2MzgsMTIgQEAKICAgNC4gVG8gcG9sZWNlbmllIHphcGFtaep0YSBjYbN5IHBsaWsgKFZpbSBUdXRvcikgcG9kIG5hene5IFRFU1QuCiAgICAgIEJ5IHRvIHNwcmF3ZHpp5iB3cGlzeiAgOiFkaXIgIGx1YiAgOiFscyAsIL9lYnkgem5vd3Ugem9iYWN6eeYgbGlzdOogcGxpa/N3LgogCi1Vd2FnYTogWmF1d2G/LCC/ZSBnZHlieZwgdGVyYXogd3lzemVksyB6IFZpbS1hLCBhIG5hc3TqcG5pZSB3c3plZLMgcG9ub3duaWUKLSAgICAgICBrb21lbmS5ICB2aW0gVEVTVCAsIHBsaWsgYnmzYnkgZG9rs2Fkbrkga29wabkgdHV0b3JpYWxhIGtpZWR5IGdvCitVd2FnYTogWmF1d2G/LCC/ZSBnZHlieZwgdGVyYXogd3lzemVksyB6IFZpbWEsIGEgbmFzdOpwbmllIHdzemVksyBwb25vd25pZQorICAgICAgIHBvbGVjZW5pZW0gIHZpbSBURVNUICwgcGxpayBiebNieSBkb2uzYWRuuSBrb3BpuSB0dXRvcmlhbGEga2llZHkgZ28KICAgICAgICB6YXBpc3l3YbNlnC4KIAotICA1LiBUZXJheiB1c3XxIHBsaWsgd3Bpc3VquWM6CQkgICA6IXJtIFRFU1QKLQorICA1LiBUZXJheiB1c3XxIHBsaWsgd3Bpc3VquWMgKE1TLURPUyk6CQkgICA6IWRlbCBURVNUCisgICAgICAgICAgICAgICAgICAgICAgICAgIGx1YiAoVW5peCk6ICAgICAgICAgICAgICA6IXJtIFRFU1QKIAogfn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+CiAJCSAgICBMZWtjamEgNS4zLjogV1lCUkFOSUUgVEVLU1RVIERPIFpBUElTVQpAQCAtNjg3LDggKzY4Nyw4IEBACiAgICAgIHRlcmF6IHO5IGR3aWUga29waWUgTGVrY2ppIDUuMy4sIG9yeWdpbmGzIGkga29waWEgeiBwbGlrdS4KIAogVVdBR0E6IE1vv2VzeiB0Zb8gd2N6eXRh5iB3eWqcY2llIHpld27qdHJ6bmVnbyBwb2xlY2VuaWEuIE5hIHByenlrs2FkCi0gICAgICAgOnIgIWxzICB3Y3p5dHVqZSB3eWqcY2llIHBvbGVjZW5pYSBscyBpIHVtaWVzemN6YSBqZSBwb2Qga3Vyc29yZW0uCi0KKyAgICAgICA6ciAhbHMgIHdjenl0dWplIHd5apxjaWUgcG9sZWNlbmlhIGxzIGkgdW1pZXN6Y3phIGplIHBvZCBwb25pv2VqCisgICAgICAga3Vyc29yYS4KIAogCiB+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn4KQEAgLTcwMyw3ICs3MDMsNyBAQAogCiAJICA6IXJtIE5BWldBX1BMSUtVICAtICB1c3V3YSBwbGlrIE5BWldBX1BMSUtVLgogCi0gIDIuICA6dyBOQVpXQV9QTElLVSAgemFwaXN1amUgb2JlY255IHBsaWsgVmltLWEgbmEgZHlzayB6IG5hene5IE5BWldBX1BMSUtVLgorICAyLiAgOncgTkFaV0FfUExJS1UgIHphcGlzdWplIG9iZWNueSBwbGlrIFZpbWEgbmEgZHlzayB6IG5hene5IE5BWldBX1BMSUtVLgogCiAgIDMuICB2IHJ1Y2ggOncgTkFaV0FfUExJS1UgIHphcGlzdWplIFdpenVhbG5pZSB3eWJyYW5lIGxpbmllIGRvIE5BWldBX1BMSUtVLgogCkBAIC03NTIsMTMgKzc1MiwxMyBAQAogICA0LiBEb2tv8WN6IHd5cmF6IHRhayBqYWsgdyBsaW5paSBwb25pv2VqLiBXY2mcbmlqIDxFU0M+IGFieSBvcHWcY2nmIHRyeWIKICAgICAgSW5zZXJ0LgogCi0gIDUuIFW/eWogIGUgIGJ5IHByemVqnOYgZG8ga29sZWpuZWdvIG5pZWRva2/xY3pvbmVnbyB3eXJhemUgaSBwb3d0YXJ6YWoga3Jva2kKKyAgNS4gVb95aiAgZSAgYnkgcHJ6ZWqc5iBkbyBrb2xlam5lZ28gbmllZG9rb/Fjem9uZWdvIHd5cmF6dSBpIHBvd3RhcnphaiBrcm9raQogICAgICAzLiBpIDQuCiAKIC0tLT4gVGEgbGkgcG96IENpIOZ3aSBkb2RhdyB0ZWtzIGRvIGtv8SBsaW4KIC0tLT4gVGEgbGluaWEgcG96d29saSBDaSDmd2ljennmIGRvZGF3YW5pZSB0ZWtzdHUgZG8ga2/xY2EgbGluaWkuCiAKLVV3YWdhOiAgYSAsICBpICBhbmQgIEEgIHByb3dhZHq5IGRvIHRyeWJ1IEluc2VydCwgamVkeW65IHLzv25pY7kgamVzdCBtaWVqc2NlCitVd2FnYTogIGEgLCAgaSAgb3JheiAgQSAgcHJvd2FkerkgZG8gdHJ5YnUgSW5zZXJ0LCBqZWR5brkgcvO/bmljuSBqZXN0IG1pZWpzY2UKICAgICAgICBnZHppZSBub3dlIHpuYWtpIGLqZLkgZG9kYXdhbmUuCiB+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn4KIAkJICAgTGVrY2phIDYuMy46IElOTkEgV0VSU0pBIFJFUExBQ0UgKHphbWlhbmEpCkBAIC03ODksNyArNzg5LDcgQEAKIAogICAgICAgICoqIHW/eWogb3BlcmF0b3JhICB5ICBhYnkgc2tvcGlvd2HmIHRla3N0IGkgIHAgIGFieSBnbyB3a2xlaeYgKioKIAotICAxLiBQcnplamSfIGRvIGxpbmlpIG96bmFjem9uZWogLS0tPiBpIHVtaWWcYyBrdXJzb3IgemEgImEpIi4KKyAgMS4gUHJ6ZWpknyBkbyBsaW5paSBvem5hY3pvbmVqIC0tLT4gaSB1bWllnOYga3Vyc29yIHphICJhKSIuCiAKICAgMi4gV2VqZJ8gdyB0cnliIFZpc3VhbCAgdiAgaSBwcnplbmllnCBrdXJzb3IgbmEgcG9jerl0ZWsgInBpZXJ3c3p5Ii4KIApAQCAtNzk5LDggKzc5OSw4IEBACiAKICAgNS4gV2NpnG5paiAgcCAgYWJ5IHdwYWtvd2HmIChwYXN0ZSkgdGVrc3QuICBEb2RhajogIGEgZHJ1Z2k8RVNDPiAuCiAKLSAgNi4gVb95aiB0cnlidSBWaXN1YWwgYWJ5IHd5YnJh5iAiIGVsZW1lbnQuIiwgeWFua3VqIGdvICB5ICwgcHJ6ZWpknyBkbyBrb/FjYQotICAgICBuYXN06nBuZWogbGluaWkgIGokIGkgdXBha3VqIHRhbSB0ZWtzdCB6ICBwIC4KKyAgNi4gVb95aiB0cnlidSBXaXp1YWxuZWdvIGFieSB3eWJyYeYgIiBlbGVtZW50LiIsIHlhbmt1aiBnbyAgeSAsIHByemVqZJ8gZG8KKyAgICAga2/xY2EgbmFzdOpwbmVqIGxpbmlpICBqJCBpIHVwYWt1aiB0YW0gdGVrc3QgeiAgcCAuCiAKIC0tLT4gIGEpIHRvIGplc3QgcGllcndzenkgZWxlbWVudC4KICAgICAgIGIpCkBAIC04MTgsNyArODE4LDcgQEAKICAgMi4gVXN0YXcgb3BjauogJ2ljJyAoSWdub3JlIGNhc2UgLS0gaWdub3J1aiB3aWVsa2+c5iBsaXRlcikgcG9wcnplegogICAgICB3cGlzYW5pZToJCTpzZXQgaWMKIAotICAzLiBUZXJheiBzenVrYWogJ2lnbm9yZScgcG9ub3duaWUgd2Npc2t1arljOiAgbgorICAzLiBUZXJheiBzenVrYWogJ2lnbm9yZScgcG9ub3duaWUgd2Npc2tharljOiAgbgogICAgICBaYXV3Yb8sIL9lIElnbm9yZSBpIElHTk9SRSB0YWu/ZSBzuSB0ZXJheiB6bmFsZXppb25lLgogCiAgIDQuIFVzdGF3IG9wY2plICdobHNlYXJjaCcgaSAnaW5jc2VhcmNoJzogICAgOnNldCBobHMgaXMKQEAgLTgzNSwxNiArODM1LDE4IEBACiAKIAogICAxLiBXcGlzYW5pZSAgbyAgb3R3aWVyYSBsaW5p6iBQT05Jr0VKIGt1cnNvcmEuCi0gICAgIFdwaXNhbmllIHdpZWxraWVnbyAgTyAgb3R3aWVyYSBsaW5p6iBQT1dZr0VKIGt1cnNvcmEuCi0gIDIuIFdwaXN6ICBhICBieSB3c3Rhd2nmIHRla3N0IFpBIHpuYWtpZW0gbmEsIGt083J5bSBqZXN0IGt1cnNvci4KLSAgICAgV3Bpc2FuaWUgd2llbGtpZWdvICBBICBkb2RhamUgdGVrc3QgbmEga2/xY3UgbGluaWkuCisgICAgIFdwaXNhbmllICBPICBvdHdpZXJhIGxpbmnqIFBPV1mvRUoga3Vyc29yYS4KKworICAyLiBXcGlzYW5pZSAgYSAgYnkgd3N0YXdp5iB0ZWtzdCBaQSB6bmFraWVtIG5hLCBrdPNyeW0gamVzdCBrdXJzb3IuCisgICAgIFdwaXNhbmllICBBICBkb2RhamUgdGVrc3QgbmEga2/xY3UgbGluaWkuCisKICAgMy4gUG9sZWNlbmllICBlICBwcnplbm9zaSBkbyBrb/FjYSB3eXJhenUuCi0gIDQuIE9wZXJhdG8gIHkgIHlhbmt1amUgKGtvcGl1amUpIHRla3N0LCAgcCAgcGFrdWplICh3a2xlamEsIHBhc3RlKSBnby4KKyAgNC4gT3BlcmF0b3IgIHkgIHlhbmt1amUgKGtvcGl1amUpIHRla3N0LCAgcCAgcGFrdWplICh3a2xlamEsIHBhc3RlKSBnby4KICAgNS4gV3Bpc2FuaWUgd2llbGtpZWdvICBSICB3cHJvd2FkemEgdyB0cnliIFJlcGxhY2UgKHphbWlhbmEpIGRvcPNraQogICAgICBuaWUgem9zdGFuaWUgd2NpnG5p6nR5IDxFU0M+LgogICA2LiBXcGlzYW5pZSAiOnNldCB4eHgiIHVzdGF3aWEgb3BjauogInh4eCIuIE5pZXRr83JlIG9wY2plOgotCSdpYycgJ2lnbm9yZWNhc2UnCWlnbm9ydWogd2llbGtvnOYgem5ha/N3Ci0JJ2lzJyAnaW5jc2VhcmNoJwlwb2thvyBjeuqcY2lvd2UgZG9wYXNvd2FuaWEKKwknaWMnICAnaWdub3JlY2FzZScJaWdub3J1aiB3aWVsa2+c5iB6bmFr83cKKwknaXMnICAnaW5jc2VhcmNoJwlwb2thvyBjeuqcY2lvd2UgZG9wYXNvd2FuaWEKIAknaGxzJyAnaGxzZWFyY2gnCXBvZJx3aWV0bCB3c3p5c3RraWUgZG9wYXNvd2FuaWEKICAgICAgTW+/ZXN6IHW/eeYgemFy83dubyBks3VnaWVqIGphayBpIGty83RraWVqIGZvcm15LgogICA3LiBEb2RhaiAibm8iIGFieSB3ebO5Y3p55iBvcGNq6jogICA6c2V0IG5vaWMKQEAgLTg1NCwxNCArODU2LDE0IEBACiAKIAogfn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+Ci0JCQlMRUtDSkEgNy4xLiBKQUsgVVpZU0tBxiBQT01PQyAKKwkJCUxFS0NKQSA3LjEuIEpBSyBVWllTS0HGIFBPTU9DCiAKIAkJICAgICAgKiogVb95Y2llIHN5c3RlbXUgcG9tb2N5IG9uLWxpbmUgKioKIAogICBWaW0gcG9zaWFkYSBiYXJkem8gZG9icnkgc3lzdGVtIHBvbW9jeSBvbi1saW5lLiBCeSB6YWN6ueYgc3By82J1aiBqZWRuZWoKICAgeiB0cnplY2ggbW+/bGl3b5xjaToKLQktIHdjaZxuaWoga2xhd2lzeiA8SEVMUD4gKGplnGxpIHRha293eSBwb3NpYWRhc3opCi0JLSB3Y2mcbmlqIGtsYXdpc3ogPEYxPiAoamWcbGkgdGFrb3d5IHBvc2lhZGFzeikKKwktIHdjaZxuaWoga2xhd2lzeiA8SEVMUD4gKGplnGxpIHRha2kgbWFzeikKKwktIHdjaZxuaWoga2xhd2lzeiA8RjE+IChqZZxsaSB0YWtpIG1hc3opCiAJLSB3cGlzeiAgIDpoZWxwPEVOVEVSPgogCiAgIFByemVjenl0YWogdGVrc3QgdyBva25pZSBwb21vY3kgIGFieSBkb3dpZWR6aWXmIHNp6iBqYWsgZHppYbNhIHBvbW9jLgpAQCAtODc4LDcgKzg4MCw3IEBACiB+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn4KIAkJICAgTEVLQ0pBIDcuMi4gVFdPUlpFTklFIFNLUllQVFUgU1RBUlRPV0VHTwogCi0JCQkgKiogV7O5Y3ogbW+/bGl3b5xjaSBWaW0tYSAqKgorCQkJICAqKiBXs7ljeiBtb79saXdvnGNpIFZpbWEgKioKIAogICBWaW0gbWEgbyB3aWVsZSB3aepjZWogbW+/bGl3b5xjaSBuab8gVmksIGFsZSB3aeprc3pvnOYgeiBuaWNoIGplc3QgZG9teZxsbmllCiAgIHd5s7ljem9uYS4gSmWcbGkgY2hjZXN6IHezuWN6eeYgdGUgbW+/bGl3b5xjaSBuYSBzdGFyY2llIG11c2lzeiB1dHdvcnp55gpAQCAtOTQzLDIzICs5NDUsMjMgQEAKIAogfn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+CiAKLSAgVHV0YWogc2nqIGtv8WN6eSB0dXRvcmlhbCBWaW0tYS4gWm9zdGGzIG9uIHBvbXmcbGFueSB0YWsgYWJ5IGRh5iBrcvN0a2kKKyAgVHV0YWogc2nqIGtv8WN6eSB0dXRvcmlhbCBWaW1hLiBab3N0YbMgb24gcG9teZxsYW55IHRhayBhYnkgZGHmIGty83RraQogICBwcnplZ2y5ZCBqZWdvIG1vv2xpd2+cY2ksIHd5c3RhcmN6YWq5Y3kgYnmcIG3zZ7MgZ28gdb95d2HmLiBKZXN0IG9uCiAgIGRhbGVraSBvZCBrb21wbGV0bm+cY2kgcG9uaWV3Yb8gVmltIG1hIG8gd2llbGUsIHdpZWxlIHdp6mNlaiBwb2xlY2XxLgogCiAgIERsYSBkYWxzemVqIG5hdWtpIHJla29tZW5kdWplbXkga3Npub9r6joKIAlWaW0gLSBWaSBJbXByb3ZlZCAtIGF1dG9yIFN0ZXZlIE91YWxsaW5lCiAJV3lkYXdjYTogTmV3IFJpZGVycwotICBQaWVyd3N6YSBrc2m5emthIGNhs2tvd2ljaWUgcG+cd2nqY29uYSBWaW0tb3dpLiBVv3l0ZWN6bmEgenezYXN6Y3phIGRsYQorICBQaWVyd3N6YSBrc2m5emthIGNhs2tvd2ljaWUgcG+cd2nqY29uYSBWaW1vd2kuIFW/eXRlY3puYSB6d7Nhc3pjemEgZGxhCiAgIHBvY3q5dGt1arljeWNoLiBaYXdpZXJhIHdpZWxlIHByenlrs2Fk83cgaSBpbHVzdHJhY2ppLgogICBab2JhY3ogaHR0cDovL2ljY2YtaG9sbGFuZC5vcmcuL2NsaWNrNS5odG1sCiAKLSAgVGEga3Npub9rYSBqZXN0IHN0YXJzemEgaSBiYXJkemllaiBvIFZpIG5pvyBvIFZpbS1pZSwgYWxlIHRha79lIHdhcnRhCisgIFN0YXJzemEgcG96eWNqYSBpIGJhcmR6aWVqIG8gVmkgbmm/IG8gVmltaWUsIGFsZSB0YWu/ZSB3YXJ0YQogICBwb2xlY2VuaWE6CiAJTGVhcm5pbmcgdGhlIFZpIEVkaXRvciAtIGF1dG9yIExpbmRhIExhbWIKIAlXeWRhd2NhOiBPJ1JlaWxseSAmIEFzc29jaWF0ZXMgSW5jLgogICBUbyBkb2JyYSBrc2m5v2thIGJ5IGRvd2llZHppZeYgc2nqIG5pZW1hbCB3c3p5c3RraWVnbyBjbyBjaGNpYbNieZwgenJvYmnmCi0gIHogVmkuIFN683N0YSBlZHljamEgemF3aWVyYSB0Zb8gaW5mb3JtYWNqZSBvIFZpbS1pZS4KKyAgeiBWaS4gU3rzc3RhIGVkeWNqYSB6YXdpZXJhIHRlvyBpbmZvcm1hY2plIG8gVmltaWUuCiAKICAgUG8gcG9sc2t1IHd5ZGFubzoKIAlFZHl0b3IgdmkuIExla3N5a29uIGtpZXN6b25rb3d5IC0gYXV0b3IgQXJub2xkIFJvYmJpbnMKQEAgLTk2NywxMCArOTY5LDEwIEBACiAJSVNCTjogODMtNzE5Ny00NzItOAogCWh0dHA6Ly9oZWxpb24ucGwva3NpYXpraS92aWxlay5odG0KICAgSmVzdCB0byBrc2m5v2VjemthIHphd2llcmFquWNhIHNwaXMgcG9sZWNl8SB2aSBpIGplZ28gbmFqd2G/bmllanN6eWNoCi0gIGtsb27zdyAobWnqZHp5IGlubnltaSBWaW0tYSkuCisgIGtsb27zdyAobWnqZHp5IGlubnltaSBWaW1hKS4KIAogCUVkeXRvciB2aSAtIGF1dG9yenkgTGluZGEgTGFtYiBpIEFybm9sZCBSb2JiaW5zCi0JV3lkYXdjYTogSGVsaW9uIDIwMDEgKE8nUmVpbGx5KSAtIHdnIDYgYW5nLiB3eWRhbmlhCisJV3lkYXdjYTogSGVsaW9uIDIwMDEgKE8nUmVpbGx5KSAtIHdnIDYuIGFuZy4gd3lkYW5pYQogCUlTQk46IDgzLTcxOTctNTM5LTIKIAlodHRwOi8vaGVsaW9uLnBsL2tzaWF6a2kvdmllZHl0Lmh0bQogICBSb3pzemVyem9uYSB3ZXJzamEgTGVhcm5pbmcgdGhlIFZpIEVkaXRvciB3IHBvbHNraW0gdLN1bWFjemVuaXUuCkBAIC05ODAsNyArOTgyLDcgQEAKICAgQ29sb3JhZG8gU3RhdGUgVW5pdmVyc2l0eS4KICAgRS1tYWlsOiBid2FyZUBtaW5lcy5jb2xvcmFkby5lZHUuCiAKLSAgWm1vZHlmaWtvd2FuZSBkbGEgVmltLWEgcHJ6ZXogQnJhbWEgTW9vbGVuYWFyYS4KKyAgWm1vZHlmaWtvd2FuZSBkbGEgVmltYSBwcnpleiBCcmFtYSBNb29sZW5hYXJhLgogCiB+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn4KIApAQCAtOTg4LDQgKzk5MCw1IEBACiAgIFNpZXJwaWXxIDIwMDEsCiAgIHJldi4gTWFyemVjIDIwMDIKICAgMm5kIHJldi4gV3J6ZXNpZfEgMjAwNAorICAzcmQgcmV2LiBNYXJ6ZWMgMjAwNgogICBXc3plbGtpZSB1d2FnaSBwcm9zeuoga2llcm93YeYgbmE6IG1pa21hY2hAd3AucGwKZGlmZiAtLWdpdCBhL3J1bnRpbWUvdHV0b3IvdHV0b3IucGwudXRmLTggYi9ydW50aW1lL3R1dG9yL3R1dG9yLnBsLnV0Zi04CmluZGV4IDhmNjgwNWUuLjA2NTE4NGQgMTAwNjQ0Ci0tLSBhL3J1bnRpbWUvdHV0b3IvdHV0b3IucGwudXRmLTgKKysrIGIvcnVudGltZS90dXRvci90dXRvci5wbC51dGYtOApAQCAtNSw3ICs1LDcgQEAKICAgICAgVmltIHRvIHBvdMSZxbxueSBlZHl0b3IsIGt0w7NyeSBwb3NpYWRhIHdpZWxlIHBvbGVjZcWELCB6Ynl0IGR1xbxvIGJ5CiAgICAgIHd5amHFm25pxIcgamUgd3N6eXN0a2llIHcgdHltIHR1dG9yaWFsdS4gVGVuIHByemV3b2RuaWsgbWEgbmF1Y3p5xIcKICAgICAgQ2nEmSBwb3PFgnVnaXdhxIcgc2nEmSB3eXN0YXJjemFqxIVjbyB3aWVsb21hIGtvbWVuZGFtaSBiecWbIG3Ds2fFgiDFgmF0d28KLSAgICAgdcW8eXdhxIcgVmltLWEgamFrbyBlZHl0b3JhIG9nw7NsbmVnbyBwcnplem5hY3plbmlhLgorICAgICB1xbx5d2HEhyBWaW1hIGpha28gZWR5dG9yYSBvZ8OzbG5lZ28gcHJ6ZXpuYWN6ZW5pYS4KIAogICAgICBDemFzIHBvdHJ6ZWJueSBuYSB1a2/FhGN6ZW5pZSB0dXRvcmlhbGEgdG8gMjUgZG8gMzAgbWludXQgaSB6YWxlxbx5CiAgICAgIG9kIHRlZ28gamFrIHdpZWxlIGN6YXN1IHNwxJlkemlzeiBuYSBla3NwZXJ5bWVudG93YW5pdS4gIApAQCAtMTUsMTAgKzE1LDEwIEBACiAJIHdjemXFm25pZWoga29wacSZIHRlZ28gcGxpa3UgZG8gxId3aWN6ZcWEIChqZcWbbGkgemFjesSFxYJlxZsga29tZW5kxIUKIAkgInZpbXR1dG9yIiB0byBqdcW8IHByYWN1amVzeiBuYSBrb3BpaSkuCiAKLSAgICAgV2HFvG5lIGplc3QsIGJ5xZsgcGFtacSZdGHFgiwgxbxlIHByemV3b2RuaWsgdGVuIHpvc3RhxYIgemFwcm9qZWt0b3dhbnkgZG8KLSAgICAgbmF1a2kgcG9wcnpleiDEh3dpY3plbmlhLiBUbyBvem5hY3phLCDFvGUgbXVzaXN6IHd5a29ueXdhxIcgcG9sZWNlbmlhCi0gICAgIGJ5IG5hdWN6ecSHIHNpxJkgaWNoIHByYXdpZMWCb3dvLiBKZcWbbGkgYsSZZHppZXN6IGplZHluaWUgY3p5dGHFgiB0ZWtzdAotICAgICBzenlia28gemFwb21uaXN6IHdpZWxlIHBvbGVjZcWEIQorCSBQYW1pxJl0YWogxbxlIHByemV3b2RuaWsgdGVuIHpvc3RhxYIgemFwcm9qZWt0b3dhbnkgZG8gbmF1a2kgcG9wcnplegorCSDEh3dpY3plbmlhLiBPem5hY3phIHRvLCDFvGUgbXVzaXN6IHd5a29ueXdhxIcgcG9sZWNlbmlhIGJ5IG5hdWN6ecSHIHNpxJkgaWNoCisJIHByYXdpZMWCb3dvLiBKZcWbbGkgYsSZZHppZXN6IGplZHluaWUgY3p5dGHFgiB0ZWtzdCBzenlia28gemFwb21uaXN6IHdpZWxlCisJIHBvbGVjZcWEIQogCiAgICAgIFRlcmF6IHVwZXduaWogc2nEmSwgxbxlIG5pZSBtYXN6IHdjacWbbmnEmXRlZ28gQ2Fwc0xvY2thIGkgd2Npc2thaiAgagogICAgICB0YWsgZMWCdWdvIGRvcMOza2kgTGVrY2phIDEuMS4gbmllIHd5cGXFgm5pIGNhxYJrb3dpY2llIGVrcmFudS4KQEAgLTQ1LDcgKzQ1LDcgQEAKIAogVXdhZ2E6IEtsYXdpc3plIGt1cnNvcmEgdGFrxbxlIHBvd2lubnkgZHppYcWCYcSHLCBhbGUgdcW8eXdhasSFYyAgaGprbCAgYsSZZHppZXN6CiAgICAgICAgdyBzdGFuaWUgcG9ydXN6YcSHIHNpxJkgbyB3aWVsZSBzenliY2llaiBqYWsgc2nEmSB0eWxrbyBwcnp5end5Y3phaXN6LgotCSAgIE5hcHJhd2TEmSEKKyAgICAgICBOYXByYXdkxJkhCiAKIH5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fgogCQkgICAgTGVrY2phIDEuMi46IFdZQ0hPRFpFTklFIFogVklNLWEKQEAgLTY1LDcgKzY1LDcgQEAKICAgICAgd3lqxZvEhyBpIHdyw7NjacSHIGRvIGVkeXRvcmEuCiAKIFVXQUdBOiA6cSE8RU5URVI+IHBvcnp1Y2Egd3N6ZWxraWUgem1pYW55IGpha2llIHpyb2JpxYJlxZsuIFcgbmFzdMSZcG55Y2gKLWxla2NqYWNoIGRvd2llc3ogc2nEmSBqYWsgamUgemFwYW1pxJl0eXdhxIcuCisgICAgICAgbGVrY2phY2ggZG93aWVzeiBzacSZIGphayBqZSB6YXBhbWnEmXR5d2HEhy4KIAogICA1LiBQcnplbmllxZsga3Vyc29yIGRvIGxla2NqaSAxLjMuCiAKQEAgLTE1MCwxNiArMTUwLDE2IEBACiAgIDEuIFpha2/FhGN6IHR1dG9yaWFsIHRhayBqYWsgdyBsZWtjamkgMS4yLjogIDpxIQogCiAgIDIuIFcgcG93xYJvY2Ugd3lkYWogcG9sZWNlbmllOiAgdmltIHR1dG9yPEVOVEVSPgotICAgICAidmltIiBqZXN0IHBvbGVjZW5pZW0gdXJ1Y2hhbWlhasSFY3ltIGVkeXRvciBWaW1tLiAndHV0b3InIHRvIG5hendhIHBsaWt1CisgICAgICJ2aW0iIGplc3QgcG9sZWNlbmllbSB1cnVjaGFtaWFqxIVjeW0gZWR5dG9yIFZpbS4gJ3R1dG9yJyB0byBuYXp3YSBwbGlrdQogICAgICBqYWtpIGNoY2VzeiBlZHl0b3dhxIcuIFXFvHlqIHBsaWt1IGpha2kgbW/FvGUgem9zdGHEhyB6bWllbmlvbnkuCiAKICAgMy4gRG9kYWogaSB1c3XFhCB0ZWtzdCB0YWsgamFrIHNpxJkgbmF1Y3p5xYJlxZsgdyBwb3ByemVkbmljaCBsZWtjamFjaC4KIAotICA0LiBaYXBpc3ogcGxpayB6ZSB6bWlhbmFtaSB3IG9wdcWbxIcgVmltYTogIDp3cTxFTlRFUj4KKyAgNC4gWmFwaXN6IHBsaWsgemUgem1pYW5hbWkgaSBvcHXFm8SHIFZpbWE6ICA6d3E8RU5URVI+CiAKICAgNS4gVXJ1Y2hvbSBwb25vd25pZSB2aW10dXRvciBpIHByemVqZMW6IGRvIHBvZHN1bW93YW5pYSBsZWtjamkuCiAKLSAgNi4gUG8gcHJ6ZWN6eXRhbml1IHdzenlzdGtpY2gga3Jva8OzdyBpIHpyb3p1bWllbml1IGljaDogd3lrb25haiBqZS4KKyAgNi4gUG8gcHJ6ZWN6eXRhbml1IHdzenlzdGtpY2gga3Jva8OzdyBpIGljaCB6cm96dW1pZW5pdTogd3lrb25haiBqZS4KIAogCiB+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn4KQEAgLTE2OCwyMSArMTY4LDIxIEBACiAgIDEuIFBvcnVzemFzeiBrdXJzb3JlbSB1xbx5d2FqxIVjICJzdHJ6YcWCZWsiIGkga2xhd2lzenkgIGhqa2wgLgogICAgICAgIGggKHcgbGV3bykJIGogKHcgZMOzxYIpCSBrIChkbyBnw7NyeSkJCWwgKHcgcHJhd28pCiAKLSAgMi4gQnkgd2VqxZvEhyBkbyBWaW0tYSAoeiBwb3fFgm9raSkgd3Bpc3o6CisgIDIuIEJ5IHdlasWbxIcgZG8gVmltYSAoeiBwb3fFgm9raSkgd3Bpc3o6CiAJCQkgICAgdmltIE5BWldBX1BMSUtVPEVOVEVSPgogCi0gIDMuIEJ5IHd5asWbxIcgeiBWaW0tYSB3cGlzejoKKyAgMy4gQnkgd3lqxZvEhyB6IFZpbWEgd3Bpc3o6CiAJCQkgICAgPEVTQz4gOnEhPEVOVEVSPiAgYnkgdXN1bsSFYyB3c3p5c3RraWUgem1pYW55LgogCSAgICAgTFVCOgkgICAgPEVTQz4gOndxPEVOVEVSPiAgYnkgem1pYW55IHphY2hvd2HEhy4KIAogICA0LiBCeSB1c3VuxIXEhyB6bmFrIHBvZCBrdXJzb3JlbSB3Y2nFm25pajogIHgKIAogICA1LiBCeSB3c3Rhd2nEhyB0ZWtzdCBwcnplZCBrdXJzb3JlbSBsdWIgZG9kYcSHOgotCWkgICAgICAgICB3cGlzeiB0ZWtzdCAgICAgIDxFU0M+IHdzdGF3aSBwcnplZCBrdXJzb3JlbQotCUEgICAgICAgICB3cGlzeiB0ZWtzdCAgICAgIDxFU0M+IGRvZGEgbmEga2/FhGN1IGxpbmlpCisJaSAgIHdwaXN6IHRla3N0ICAgPEVTQz4gICAgICAgICB3c3Rhd2kgcHJ6ZWQga3Vyc29yZW0KKwlBICAgd3Bpc3ogdGVrc3QgICA8RVNDPiAgICAgICAgIGRvZGEgbmEga2/FhGN1IGxpbmlpCiAKIFVXQUdBOiBXY2nFm25pxJljaWUgPEVTQz4gcHJ6ZW5pZXNpZSBDacSZIHogcG93cm90ZW0gZG8gdHJ5YnUgTm9ybWFsCi1sdWIgb2R3b8WCYSBuaWVjaGNpYW5lIGx1YiBjesSZxZtjaW93byB3cHJvd2Fkem9uZSBwb2xlY2VuaWEuCisgICAgICAgbHViIG9kd2/FgmEgbmllY2hjaWFuZSBsdWIgY3rEmcWbY2lvd28gd3Byb3dhZHpvbmUgcG9sZWNlbmlhLgogCiBUZXJheiBtb8W8ZW15IGtvbnR5bnVvd2HEhyBpIHByemVqxZvEhyBkbyBMZWtjamkgMi4KIH5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fgpAQCAtMTk3LDExICsxOTcsMTEgQEAKIAogICAzLiBQcnplc3XFhCBrdXJzb3IgbmEgcG9jesSFdGVrIHd5cmF6dSwga3TDs3JlIGNoY2VzeiB1c3VuxIXEhy4KIAotICA0LiBXcGlzeiAgIGR3ICAgYnkgdXN1bsSFYyB3eXJhei4KKyAgNC4gV3Bpc3ogICBkdyAgIGJ5IHVzdW7EhcSHIHd5cmF6LgogCiAgIFVXQUdBOiBMaXRlcmEgIGQgIHBvamF3aSBzacSZIG5hIGRvbGUgZWtyYW51LiBWaW0gY3pla2EgbmEgd3Bpc2FuaWUgIHcgLiAKLQkgSmXFm2xpIHpvYmFjenlzeiBpbm55IHpuYWsgd3Bpc2HFgmXFmyBjb8WbIMW6bGUsIHdjacWbbmlqIDxFU0M+IGkgemFjem5pagotCSBvZCBwb2N6xIV0a3UuCisJIEplxZtsaSB6b2JhY3p5c3ogaW5ueSB6bmFrIG96bmFjemEgdG8sIMW8ZSB3cGlzYcWCZcWbIGNvxZsgxbpsZSwgd2NpxZtuaWoKKwkgPEVTQz4gaSB6YWN6bmlqIG9kIHBvY3rEhXRrdS4KIAogLS0tPiBKZXN0IHR1IHBhcsSZIHBhcGllciB3eXJhesOzdywga3TDs3JlIGthbWllxYQgbmllIG5hbGXFvMSFIGRvIG5vxbx5Y2UgdGVnbyB6ZGFuaWEuCiAKQEAgLTMwNiwxMyArMzA2LDEzIEBACiAKIAkJICAgKiogV3Bpc3ogIGRkICBhYnkgdXN1bsSFxIcgY2HFgsSFIGxpbmnEmS4gKioKIAotICBaIHBvd29kdSBjesSZc3RvxZtjaSB1c3V3YW5pYSBjYcWCeWNoIGxpbmlpLCBwcm9qZWt0YW5jaSBWSSB6ZGVjeWRvd2FsaSwgxbxlCisgIFogcG93b2R1IGN6xJlzdG/Fm2NpIHVzdXdhbmlhIGNhxYJ5Y2ggbGluaWksIHByb2pla3RhbmNpIFZpIHpkZWN5ZG93YWxpLCDFvGUKICAgYsSZZHppZSDFgmF0d2llaiB3cGlzYcSHIGR3YSByYXp5ICBkICBhYnkgdXN1bsSFxIcgbGluacSZLgogCi0gIDEuIFByemVuaWXFmyBrdXJzb3IgZG8gemRhbmlhIHBvbmnFvGVqLgotICAyLiBXcGlzeiAgZGQgIGFieSB1c3VuxIVjIHdpZXJzei4KKyAgMS4gUHJ6ZW5pZcWbIGt1cnNvciBkbyBkcnVnaWVnbyB6ZGFuaWEgeiB3aWVyc3p5a2EgcG9uacW8ZWouCisgIDIuIFdwaXN6ICBkZCAgYWJ5IHVzdW7EhcSHIHdpZXJzei4KICAgMy4gVGVyYXogcHJ6ZW5pZcWbIHNpxJkgZG8gY3p3YXJ0ZWdvIHdpZXJzemEuCi0gIDQuIFdwaXN6ICAyZGQgIGFieSB1c3VuxIVjIGR3aWEgd2llcnN6ZS4KKyAgNC4gV3Bpc3ogIDJkZCAgYWJ5IHVzdW7EhWMgZHdhIHdpZXJzemUuCiAKIC0tLT4gIDEpICBSw7PFvGUgc8SFIGN6ZXJ3b25lLAogLS0tPiAgMikgIELFgm90byBqZXN0IGZham5lLApAQCAtMzM3LDcgKzMzNyw3IEBACiAgIDQuIFR5bSByYXplbSBwb3ByYXcgd3N6eXN0a2llIGLFgsSZZHkgdyBsaW5paSB1xbx5d2FqxIVjIHBvbGVjZW5pYSAgeCAuCiAgIDUuIFRlcmF6IHdjacWbbmlqIHdpZWxraWUgVSBhYnkgcHJ6eXdyw7NjacSHIGxpbmnEmSBkbyBvcnlnaW5hbG5lZ28gc3RhbnUuCiAgIDYuIFRlcmF6IHdjacWbbmlqICB1ICBraWxrYSByYXp5IGJ5IGNvZm7EhcSHICBVICBpIHBvcHJ6ZWRuaWUgcG9sZWNlbmlhLgotICA3LiBUZXJheiB3cHN6IENUUkwtUiAodHJ6eW1haiByw7N3bm9jemXFm25pZSB3Y2nFm25pxJl0ZSBrbGF3aXN6ZSBDVFJMIGkgUikKKyAgNy4gVGVyYXogd3Bpc3ogQ1RSTC1SICh0cnp5bWFqIHLDs3dub2N6ZcWbbmllIHdjacWbbmnEmXRlIGtsYXdpc3plIENUUkwgaSBSKQogICAgICBraWxrYSByYXp5LCBieSBjb2ZuxIXEhyBjb2ZuacSZY2lhLgogCiAtLS0+IFBvb3ByYXcgYmzEmWR5eXkgdyB0ZWVqIGxpbmlpaSBpIHphYW1paWXFhCBqZSBwcnJ6ZXogY29vZm5pai4KQEAgLTM3NywxNCArMzc3LDE0IEBACiAKICAgMS4gUHJ6ZW5pZcWbIGt1cnNvciBkbyBwaWVyd3N6ZWogbGluaWkgLS0tPiBwb25pxbxlai4KIAotICAyLiBXcGlzeiAgZGQgIGFieSB1c3VuxIXEhyBsaW5pxJkgaSBwcnplY2hvd2HEhyBqxIUgdyByZWplc3RyemUgVmltLWEuCisgIDIuIFdwaXN6ICBkZCAgYWJ5IHVzdW7EhcSHIGxpbmnEmSBpIHByemVjaG93YcSHIGrEhSB3IHJlamVzdHJ6ZSBWaW1hLgogCiAgIDMuIFByemVuaWXFmyBrdXJzb3IgZG8gbGluaWkgYyksIFBPV1nFu0VKIHRlaiBnZHppZSB1c3VuacSZdGEgbGluaWEgcG93aW5uYQogICAgICBzacSZIHpuYWpkb3dhxIcuCiAKICAgNC4gV2NpxZtuaWogIHAgIGJ5IHdzdGF3acSHIGxpbmnEmSBwb25pxbxlaiBrdXJzb3JhLgogCi0gIDUuIFBvd3RhaiBrcm9raSAyLiBkbyA0LiBhxbwgem5hamTEhSBzacSZIHcgb2Rwb3dpZWRuaW0gcG9yesSFZGt1LgorICA1LiBQb3d0YXJ6YWoga3Jva2kgMi4gZG8gNC4gYcW8IHpuYWpkxIUgc2nEmSB3IG9kcG93aWVkbmltIHBvcnrEhWRrdS4KIAogLS0tPiBkKSBKYWsgZHdhIGFuaW/FgmtpLgogLS0tPiBiKSBOYSBkb2xlIGZpb8WCa2ksCkBAIC00NTYsNyArNDU2LDcgQEAKIAogICA1LiBXcGlzeiAgYyQgLCBwb3ByYXcga29uaWVjIHdpZXJzemEgaSB3Y2nFm25paiA8RVNDPi4KIAotLS0tPiBLb25pZWMgdGVnbyB3aWVyc3phIG11c2kgYnnEhyBwb3ByYXdpb255IGFieSB3eWdsxIVkYWwgdGFrIGphayBkcnVnaS4KKy0tLT4gS29uaWVjIHRlZ28gd2llcnN6YSBtdXNpIGJ5xIcgcG9wcmF3aW9ueSBhYnkgd3lnbMSFZGHFgiB0YWsgamFrIGRydWdpLgogLS0tPiBLb25pZWMgdGVnbyB3aWVyc3phIG11c2kgYnnEhyBwb3ByYXdpb255IHXFvHl3YWrEhWMgcG9sZWNlbmlhICBjJCAuCiAKIFVXQUdBOiAgTW/FvGVzeiB1xbx5d2HEhyA8QlM+IGFieSBwb3ByYXdpYcSHIGLFgsSZZHkgdyBjemFzaWUgcGlzYW5pYS4KQEAgLTUyNiwxNSArNTI2LDE1IEBACiAgIDUuIEFieSB3csOzY2nEhyBnZHppZSBiecWCZcWbIHdjacWbbmlqICBDVFJMLU8uIFBvd3RhcnphaiBieSB3csOzY2nEhyBkYWxlai4gQ1RSTC1JCiAgICAgIGlkemllIGRvIHByem9kdS4KIAotVVdBR0E6ICAnYsWCb25kJyB0byBuaWUgamVzdCBtZXRvZGEgYnkgcHJ6ZWxpdGVyb3dhxIcgYsWCxIVkOyAnYsWCb25kJyB0byBixYLEhWQuCi1VV0FHQTogIEtpZWR5IHN6dWthbmllIG9zacSFZ25pZSBrb25pZWMgcGxpa3UgYsSZZHppZSBrb250eW51b3dhxYJvIG9kIHBvY3rEhXRrdQotbyBpbGUgb3BjamEgJ3dyYXBzY2FuJyBuaWUgem9zdGHFgmEgcHJ6ZXN0YXdpb25hLgorVXdhZ2E6ICAnYsWCb25kJyB0byBuaWUgamVzdCBtZXRvZGEgYnkgcHJ6ZWxpdGVyb3dhxIcgYsWCxIVkOyAnYsWCb25kJyB0byBixYLEhWQuCitVd2FnYTogIEtpZWR5IHN6dWthbmllIG9zacSFZ25pZSBrb25pZWMgcGxpa3UgYsSZZHppZSBrb250eW51b3dhxYJvIG9kIHBvY3rEhXRrdQorICAgICAgICBvIGlsZSBvcGNqYSAnd3JhcHNjYW4nIG5pZSB6b3N0YcWCYSBwcnplc3Rhd2lvbmEuCiAKIH5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fgogCQlMZWtjamEgNC4zLjogVyBQT1NaVUtJV0FOSVUgUEFSVUrEhENZQ0ggTkFXSUFTw5NXCiAKIAotCQkqKiBXcGlzeiAgJSAgYnkgem5hbGXFusSHIHBhc3VqxIVjeSApLF0sIGx1YiB9IC4gKioKKwkgICAgICAgKiogV3Bpc3ogICUgIGJ5IHpuYWxlxbrEhyBwYXJ1asSFY3kgKSwgXSwgbHViIH0gLiAqKgogCiAgIDEuIFVtaWXFm8SHIGt1cnNvciBuYSBrdMOzcnltxZsgeiAoLCBbLCBsdWIgeyB3IGxpbmlpIHBvbmnFvGVqIG96bmFjem9uZWogLS0tPi4KIApAQCAtNTQ4LDcgKzU0OCw3IEBACiAKIC0tLT4gVG8gKCBqZXN0IGxpbmlhIHRlc3Rvd2EgeiAoLCBbLCBdIGkgeywgfSAuICkpCiAKLVVXQUdBOiBUYSBmdW5rY2phIGplc3QgYmFyZHpvIHXFvHl0ZWN6bmEgdyBkZWJ1Z2dvd2FuaXUgcHJvZ3JhbXUKK1V3YWdhOiBUYSBmdW5rY2phIGplc3QgYmFyZHpvIHXFvHl0ZWN6bmEgdyBkZWJ1Z2dvd2FuaXUgcHJvZ3JhbXUKICAgICAgICB6IG5pZXNwYXJvd2FueW1pIG5hd2lhc2FtaSEKIAogCkBAIC01OTgsNyArNTk4LDcgQEAKICAgICAgQnkgemFtaWVuacSHIHdzenlzdGtpZSBzdGFyeSBuYSBub3d5IHcgbGluaWkgd3Bpc3ogICAgIDpzL3N0YXJ5L25vd3kvZwogICAgICBCeSB6YW1pZW5pxIcgZnJhenkgcG9tacSZZHp5IGR3b21hIGxpbmlhbWkgIyB3cGlzeiAgICAgIDojLCNzL3N0YXJ5L25vd3kvZwogICAgICBCeSB6YW1pZW5pxIcgd3N6eXN0a2llIHd5c3TEhXBpZW5pYSB3IHBsaWt1IHdwaXN6ICAgICAgIDolcy9zdGFyeS9ub3d5L2cKLSAgICAgQnkgVmltIHByb3NpxYIgQ2nEmSBvIHBvdHdpZXJkemllbmllIGRvZGFqICdjJwkgICA6JXMvc3Rhcnkvbm93eS9nYworICAgICBCeSBWaW0gcHJvc2nFgiBDacSZIG8gcG90d2llcmR6ZW5pZSBkb2RhaiAnYycJICAgOiVzL3N0YXJ5L25vd3kvZ2MKIH5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fgogCQkgTGVrY2phIDUuMS46IEpBSyBXWUtPTkHEhiBQT0xFQ0VOSUEgWkVXTsSYVFJaTkUKIApAQCAtNjA2LDcgKzYwNiw3IEBACiAJKiogV3Bpc3ogIDohICBhIG5hc3TEmXBuaWUgemV3bsSZdHJ6bmUgcG9sZWNlbmllIGJ5IGplIHd5a29uYcSHLiAqKgogCiAgIDEuIFdwaXN6IHpuYWpvbWUgcG9sZWNlbmllICA6ICBieSB1c3Rhd2nEhyBrdXJzb3IgbmEgZG9sZSBla3JhbnUuIFRvIHBvendhbGEKLSAgICAgbmEgd3Byb3dhZHplbmllIHBvbGVjZW5pYS4KKyAgICAgbmEgd3Byb3dhZHplbmllIGtvbWVuZHkgbGluaWkgcG9sZWNlxYQuCiAKICAgMi4gVGVyYXogd3N0YXcgICEgICh3eWtyenlrbmlrKS4gVG8gdW1vxbxsaXdpIENpIHd5a29uYW5pZSBkb3dvbG5lZ28KICAgICAgemV3bsSZdHJ6bmVnbyBwb2xlY2VuaWEgcG93xYJva2kuCkBAIC02MzgsMTIgKzYzOCwxMiBAQAogICA0LiBUbyBwb2xlY2VuaWUgemFwYW1pxJl0YSBjYcWCeSBwbGlrIChWaW0gVHV0b3IpIHBvZCBuYXp3xIUgVEVTVC4KICAgICAgQnkgdG8gc3ByYXdkemnEhyB3cGlzeiAgOiFkaXIgIGx1YiAgOiFscyAsIMW8ZWJ5IHpub3d1IHpvYmFjennEhyBsaXN0xJkgcGxpa8Ozdy4KIAotVXdhZ2E6IFphdXdhxbwsIMW8ZSBnZHliecWbIHRlcmF6IHd5c3plZMWCIHogVmltLWEsIGEgbmFzdMSZcG5pZSB3c3plZMWCIHBvbm93bmllCi0gICAgICAga29tZW5kxIUgIHZpbSBURVNUICwgcGxpayBiecWCYnkgZG9rxYJhZG7EhSBrb3BpxIUgdHV0b3JpYWxhIGtpZWR5IGdvCitVd2FnYTogWmF1d2HFvCwgxbxlIGdkeWJ5xZsgdGVyYXogd3lzemVkxYIgeiBWaW1hLCBhIG5hc3TEmXBuaWUgd3N6ZWTFgiBwb25vd25pZQorICAgICAgIHBvbGVjZW5pZW0gIHZpbSBURVNUICwgcGxpayBiecWCYnkgZG9rxYJhZG7EhSBrb3BpxIUgdHV0b3JpYWxhIGtpZWR5IGdvCiAgICAgICAgemFwaXN5d2HFgmXFmy4KIAotICA1LiBUZXJheiB1c3XFhCBwbGlrIHdwaXN1asSFYzoJCSAgIDohcm0gVEVTVAotCisgIDUuIFRlcmF6IHVzdcWEIHBsaWsgd3Bpc3VqxIVjIChNUy1ET1MpOgkJICAgOiFkZWwgVEVTVAorICAgICAgICAgICAgICAgICAgICAgICAgICBsdWIgKFVuaXgpOiAgICAgICAgICAgICAgOiFybSBURVNUCiAKIH5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fgogCQkgICAgTGVrY2phIDUuMy46IFdZQlJBTklFIFRFS1NUVSBETyBaQVBJU1UKQEAgLTY4Nyw4ICs2ODcsOCBAQAogICAgICB0ZXJheiBzxIUgZHdpZSBrb3BpZSBMZWtjamkgNS4zLiwgb3J5Z2luYcWCIGkga29waWEgeiBwbGlrdS4KIAogVVdBR0E6IE1vxbxlc3ogdGXFvCB3Y3p5dGHEhyB3eWrFm2NpZSB6ZXduxJl0cnpuZWdvIHBvbGVjZW5pYS4gTmEgcHJ6eWvFgmFkCi0gICAgICAgOnIgIWxzICB3Y3p5dHVqZSB3eWrFm2NpZSBwb2xlY2VuaWEgbHMgaSB1bWllc3pjemEgamUgcG9kIGt1cnNvcmVtLgotCisgICAgICAgOnIgIWxzICB3Y3p5dHVqZSB3eWrFm2NpZSBwb2xlY2VuaWEgbHMgaSB1bWllc3pjemEgamUgcG9kIHBvbmnFvGVqCisgICAgICAga3Vyc29yYS4KIAogCiB+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn4KQEAgLTcwMyw3ICs3MDMsNyBAQAogCiAJICA6IXJtIE5BWldBX1BMSUtVICAtICB1c3V3YSBwbGlrIE5BWldBX1BMSUtVLgogCi0gIDIuICA6dyBOQVpXQV9QTElLVSAgemFwaXN1amUgb2JlY255IHBsaWsgVmltLWEgbmEgZHlzayB6IG5henfEhSBOQVpXQV9QTElLVS4KKyAgMi4gIDp3IE5BWldBX1BMSUtVICB6YXBpc3VqZSBvYmVjbnkgcGxpayBWaW1hIG5hIGR5c2sgeiBuYXp3xIUgTkFaV0FfUExJS1UuCiAKICAgMy4gIHYgcnVjaCA6dyBOQVpXQV9QTElLVSAgemFwaXN1amUgV2l6dWFsbmllIHd5YnJhbmUgbGluaWUgZG8gTkFaV0FfUExJS1UuCiAKQEAgLTc1MiwxMyArNzUyLDEzIEBACiAgIDQuIERva2/FhGN6IHd5cmF6IHRhayBqYWsgdyBsaW5paSBwb25pxbxlai4gV2NpxZtuaWogPEVTQz4gYWJ5IG9wdcWbY2nEhyB0cnliCiAgICAgIEluc2VydC4KIAotICA1LiBVxbx5aiAgZSAgYnkgcHJ6ZWrFm8SHIGRvIGtvbGVqbmVnbyBuaWVkb2tvxYRjem9uZWdvIHd5cmF6ZSBpIHBvd3RhcnphaiBrcm9raQorICA1LiBVxbx5aiAgZSAgYnkgcHJ6ZWrFm8SHIGRvIGtvbGVqbmVnbyBuaWVkb2tvxYRjem9uZWdvIHd5cmF6dSBpIHBvd3RhcnphaiBrcm9raQogICAgICAzLiBpIDQuCiAKIC0tLT4gVGEgbGkgcG96IENpIMSHd2kgZG9kYXcgdGVrcyBkbyBrb8WEIGxpbgogLS0tPiBUYSBsaW5pYSBwb3p3b2xpIENpIMSHd2ljennEhyBkb2Rhd2FuaWUgdGVrc3R1IGRvIGtvxYRjYSBsaW5paS4KIAotVXdhZ2E6ICBhICwgIGkgIGFuZCAgQSAgcHJvd2FkesSFIGRvIHRyeWJ1IEluc2VydCwgamVkeW7EhSByw7PFvG5pY8SFIGplc3QgbWllanNjZQorVXdhZ2E6ICBhICwgIGkgIG9yYXogIEEgIHByb3dhZHrEhSBkbyB0cnlidSBJbnNlcnQsIGplZHluxIUgcsOzxbxuaWPEhSBqZXN0IG1pZWpzY2UKICAgICAgICBnZHppZSBub3dlIHpuYWtpIGLEmWTEhSBkb2Rhd2FuZS4KIH5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fgogCQkgICBMZWtjamEgNi4zLjogSU5OQSBXRVJTSkEgUkVQTEFDRSAoemFtaWFuYSkKQEAgLTc4OSw3ICs3ODksNyBAQAogCiAgICAgICAgKiogdcW8eWogb3BlcmF0b3JhICB5ICBhYnkgc2tvcGlvd2HEhyB0ZWtzdCBpICBwICBhYnkgZ28gd2tsZWnEhyAqKgogCi0gIDEuIFByemVqZMW6IGRvIGxpbmlpIG96bmFjem9uZWogLS0tPiBpIHVtaWXFm2Mga3Vyc29yIHphICJhKSIuCisgIDEuIFByemVqZMW6IGRvIGxpbmlpIG96bmFjem9uZWogLS0tPiBpIHVtaWXFm8SHIGt1cnNvciB6YSAiYSkiLgogCiAgIDIuIFdlamTFuiB3IHRyeWIgVmlzdWFsICB2ICBpIHByemVuaWXFmyBrdXJzb3IgbmEgcG9jesSFdGVrICJwaWVyd3N6eSIuCiAKQEAgLTc5OSw4ICs3OTksOCBAQAogCiAgIDUuIFdjacWbbmlqICBwICBhYnkgd3Bha293YcSHIChwYXN0ZSkgdGVrc3QuICBEb2RhajogIGEgZHJ1Z2k8RVNDPiAuCiAKLSAgNi4gVcW8eWogdHJ5YnUgVmlzdWFsIGFieSB3eWJyYcSHICIgZWxlbWVudC4iLCB5YW5rdWogZ28gIHkgLCBwcnplamTFuiBkbyBrb8WEY2EKLSAgICAgbmFzdMSZcG5laiBsaW5paSAgaiQgaSB1cGFrdWogdGFtIHRla3N0IHogIHAgLgorICA2LiBVxbx5aiB0cnlidSBXaXp1YWxuZWdvIGFieSB3eWJyYcSHICIgZWxlbWVudC4iLCB5YW5rdWogZ28gIHkgLCBwcnplamTFuiBkbworICAgICBrb8WEY2EgbmFzdMSZcG5laiBsaW5paSAgaiQgaSB1cGFrdWogdGFtIHRla3N0IHogIHAgLgogCiAtLS0+ICBhKSB0byBqZXN0IHBpZXJ3c3p5IGVsZW1lbnQuCiAgICAgICBiKQpAQCAtODE4LDcgKzgxOCw3IEBACiAgIDIuIFVzdGF3IG9wY2rEmSAnaWMnIChJZ25vcmUgY2FzZSAtLSBpZ25vcnVqIHdpZWxrb8WbxIcgbGl0ZXIpIHBvcHJ6ZXoKICAgICAgd3Bpc2FuaWU6CQk6c2V0IGljCiAKLSAgMy4gVGVyYXogc3p1a2FqICdpZ25vcmUnIHBvbm93bmllIHdjaXNrdWrEhWM6ICBuCisgIDMuIFRlcmF6IHN6dWthaiAnaWdub3JlJyBwb25vd25pZSB3Y2lza2FqxIVjOiAgbgogICAgICBaYXV3YcW8LCDFvGUgSWdub3JlIGkgSUdOT1JFIHRha8W8ZSBzxIUgdGVyYXogem5hbGV6aW9uZS4KIAogICA0LiBVc3RhdyBvcGNqZSAnaGxzZWFyY2gnIGkgJ2luY3NlYXJjaCc6ICAgIDpzZXQgaGxzIGlzCkBAIC04MzUsMTYgKzgzNSwxOCBAQAogCiAKICAgMS4gV3Bpc2FuaWUgIG8gIG90d2llcmEgbGluacSZIFBPTknFu0VKIGt1cnNvcmEuCi0gICAgIFdwaXNhbmllIHdpZWxraWVnbyAgTyAgb3R3aWVyYSBsaW5pxJkgUE9XWcW7RUoga3Vyc29yYS4KLSAgMi4gV3Bpc3ogIGEgIGJ5IHdzdGF3acSHIHRla3N0IFpBIHpuYWtpZW0gbmEsIGt0w7NyeW0gamVzdCBrdXJzb3IuCi0gICAgIFdwaXNhbmllIHdpZWxraWVnbyAgQSAgZG9kYWplIHRla3N0IG5hIGtvxYRjdSBsaW5paS4KKyAgICAgV3Bpc2FuaWUgIE8gIG90d2llcmEgbGluacSZIFBPV1nFu0VKIGt1cnNvcmEuCisKKyAgMi4gV3Bpc2FuaWUgIGEgIGJ5IHdzdGF3acSHIHRla3N0IFpBIHpuYWtpZW0gbmEsIGt0w7NyeW0gamVzdCBrdXJzb3IuCisgICAgIFdwaXNhbmllICBBICBkb2RhamUgdGVrc3QgbmEga2/FhGN1IGxpbmlpLgorCiAgIDMuIFBvbGVjZW5pZSAgZSAgcHJ6ZW5vc2kgZG8ga2/FhGNhIHd5cmF6dS4KLSAgNC4gT3BlcmF0byAgeSAgeWFua3VqZSAoa29waXVqZSkgdGVrc3QsICBwICBwYWt1amUgKHdrbGVqYSwgcGFzdGUpIGdvLgorICA0LiBPcGVyYXRvciAgeSAgeWFua3VqZSAoa29waXVqZSkgdGVrc3QsICBwICBwYWt1amUgKHdrbGVqYSwgcGFzdGUpIGdvLgogICA1LiBXcGlzYW5pZSB3aWVsa2llZ28gIFIgIHdwcm93YWR6YSB3IHRyeWIgUmVwbGFjZSAoemFtaWFuYSkgZG9ww7NraQogICAgICBuaWUgem9zdGFuaWUgd2NpxZtuacSZdHkgPEVTQz4uCiAgIDYuIFdwaXNhbmllICI6c2V0IHh4eCIgdXN0YXdpYSBvcGNqxJkgInh4eCIuIE5pZXRrw7NyZSBvcGNqZToKLQknaWMnICdpZ25vcmVjYXNlJwlpZ25vcnVqIHdpZWxrb8WbxIcgem5ha8OzdwotCSdpcycgJ2luY3NlYXJjaCcJcG9rYcW8IGN6xJnFm2Npb3dlIGRvcGFzb3dhbmlhCisJJ2ljJyAgJ2lnbm9yZWNhc2UnCWlnbm9ydWogd2llbGtvxZvEhyB6bmFrw7N3CisJJ2lzJyAgJ2luY3NlYXJjaCcJcG9rYcW8IGN6xJnFm2Npb3dlIGRvcGFzb3dhbmlhCiAJJ2hscycgJ2hsc2VhcmNoJwlwb2TFm3dpZXRsIHdzenlzdGtpZSBkb3Bhc293YW5pYQogICAgICBNb8W8ZXN6IHXFvHnEhyB6YXLDs3dubyBkxYJ1Z2llaiBqYWsgaSBrcsOzdGtpZWogZm9ybXkuCiAgIDcuIERvZGFqICJubyIgYWJ5IHd5xYLEhWN6ecSHIG9wY2rEmTogICA6c2V0IG5vaWMKQEAgLTg1NCwxNCArODU2LDE0IEBACiAKIAogfn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+Ci0JCQlMRUtDSkEgNy4xLiBKQUsgVVpZU0tBxIYgUE9NT0MgCisJCQlMRUtDSkEgNy4xLiBKQUsgVVpZU0tBxIYgUE9NT0MKIAogCQkgICAgICAqKiBVxbx5Y2llIHN5c3RlbXUgcG9tb2N5IG9uLWxpbmUgKioKIAogICBWaW0gcG9zaWFkYSBiYXJkem8gZG9icnkgc3lzdGVtIHBvbW9jeSBvbi1saW5lLiBCeSB6YWN6xIXEhyBzcHLDs2J1aiBqZWRuZWoKICAgeiB0cnplY2ggbW/FvGxpd2/Fm2NpOgotCS0gd2NpxZtuaWoga2xhd2lzeiA8SEVMUD4gKGplxZtsaSB0YWtvd3kgcG9zaWFkYXN6KQotCS0gd2NpxZtuaWoga2xhd2lzeiA8RjE+IChqZcWbbGkgdGFrb3d5IHBvc2lhZGFzeikKKwktIHdjacWbbmlqIGtsYXdpc3ogPEhFTFA+IChqZcWbbGkgdGFraSBtYXN6KQorCS0gd2NpxZtuaWoga2xhd2lzeiA8RjE+IChqZcWbbGkgdGFraSBtYXN6KQogCS0gd3Bpc3ogICA6aGVscDxFTlRFUj4KIAogICBQcnplY3p5dGFqIHRla3N0IHcgb2tuaWUgcG9tb2N5ICBhYnkgZG93aWVkemllxIcgc2nEmSBqYWsgZHppYcWCYSBwb21vYy4KQEAgLTg3OCw3ICs4ODAsNyBAQAogfn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+CiAJCSAgIExFS0NKQSA3LjIuIFRXT1JaRU5JRSBTS1JZUFRVIFNUQVJUT1dFR08KIAotCQkJICoqIFfFgsSFY3ogbW/FvGxpd2/Fm2NpIFZpbS1hICoqCisJCQkgICoqIFfFgsSFY3ogbW/FvGxpd2/Fm2NpIFZpbWEgKioKIAogICBWaW0gbWEgbyB3aWVsZSB3acSZY2VqIG1vxbxsaXdvxZtjaSBuacW8IFZpLCBhbGUgd2nEmWtzem/Fm8SHIHogbmljaCBqZXN0IGRvbXnFm2xuaWUKICAgd3nFgsSFY3pvbmEuIEplxZtsaSBjaGNlc3ogd8WCxIVjennEhyB0ZSBtb8W8bGl3b8WbY2kgbmEgc3RhcmNpZSBtdXNpc3ogdXR3b3J6ecSHCkBAIC05NDMsMjMgKzk0NSwyMyBAQAogCiB+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn4KIAotICBUdXRhaiBzacSZIGtvxYRjenkgdHV0b3JpYWwgVmltLWEuIFpvc3RhxYIgb24gcG9tecWbbGFueSB0YWsgYWJ5IGRhxIcga3LDs3RraQorICBUdXRhaiBzacSZIGtvxYRjenkgdHV0b3JpYWwgVmltYS4gWm9zdGHFgiBvbiBwb215xZtsYW55IHRhayBhYnkgZGHEhyBrcsOzdGtpCiAgIHByemVnbMSFZCBqZWdvIG1vxbxsaXdvxZtjaSwgd3lzdGFyY3phasSFY3kgYnnFmyBtw7NnxYIgZ28gdcW8eXdhxIcuIEplc3Qgb24KICAgZGFsZWtpIG9kIGtvbXBsZXRub8WbY2kgcG9uaWV3YcW8IFZpbSBtYSBvIHdpZWxlLCB3aWVsZSB3acSZY2VqIHBvbGVjZcWELgogCiAgIERsYSBkYWxzemVqIG5hdWtpIHJla29tZW5kdWplbXkga3NpxIXFvGvEmToKIAlWaW0gLSBWaSBJbXByb3ZlZCAtIGF1dG9yIFN0ZXZlIE91YWxsaW5lCiAJV3lkYXdjYTogTmV3IFJpZGVycwotICBQaWVyd3N6YSBrc2nEhXprYSBjYcWCa293aWNpZSBwb8Wbd2nEmWNvbmEgVmltLW93aS4gVcW8eXRlY3puYSB6d8WCYXN6Y3phIGRsYQorICBQaWVyd3N6YSBrc2nEhXprYSBjYcWCa293aWNpZSBwb8Wbd2nEmWNvbmEgVmltb3dpLiBVxbx5dGVjem5hIHp3xYJhc3pjemEgZGxhCiAgIHBvY3rEhXRrdWrEhWN5Y2guIFphd2llcmEgd2llbGUgcHJ6eWvFgmFkw7N3IGkgaWx1c3RyYWNqaS4KICAgWm9iYWN6IGh0dHA6Ly9pY2NmLWhvbGxhbmQub3JnLi9jbGljazUuaHRtbAogCi0gIFRhIGtzacSFxbxrYSBqZXN0IHN0YXJzemEgaSBiYXJkemllaiBvIFZpIG5pxbwgbyBWaW0taWUsIGFsZSB0YWvFvGUgd2FydGEKKyAgU3RhcnN6YSBwb3p5Y2phIGkgYmFyZHppZWogbyBWaSBuacW8IG8gVmltaWUsIGFsZSB0YWvFvGUgd2FydGEKICAgcG9sZWNlbmlhOgogCUxlYXJuaW5nIHRoZSBWaSBFZGl0b3IgLSBhdXRvciBMaW5kYSBMYW1iCiAJV3lkYXdjYTogTydSZWlsbHkgJiBBc3NvY2lhdGVzIEluYy4KICAgVG8gZG9icmEga3NpxIXFvGthIGJ5IGRvd2llZHppZcSHIHNpxJkgbmllbWFsIHdzenlzdGtpZWdvIGNvIGNoY2lhxYJiecWbIHpyb2JpxIcKLSAgeiBWaS4gU3rDs3N0YSBlZHljamEgemF3aWVyYSB0ZcW8IGluZm9ybWFjamUgbyBWaW0taWUuCisgIHogVmkuIFN6w7NzdGEgZWR5Y2phIHphd2llcmEgdGXFvCBpbmZvcm1hY2plIG8gVmltaWUuCiAKICAgUG8gcG9sc2t1IHd5ZGFubzoKIAlFZHl0b3IgdmkuIExla3N5a29uIGtpZXN6b25rb3d5IC0gYXV0b3IgQXJub2xkIFJvYmJpbnMKQEAgLTk2NywxMCArOTY5LDEwIEBACiAJSVNCTjogODMtNzE5Ny00NzItOAogCWh0dHA6Ly9oZWxpb24ucGwva3NpYXpraS92aWxlay5odG0KICAgSmVzdCB0byBrc2nEhcW8ZWN6a2EgemF3aWVyYWrEhWNhIHNwaXMgcG9sZWNlxYQgdmkgaSBqZWdvIG5handhxbxuaWVqc3p5Y2gKLSAga2xvbsOzdyAobWnEmWR6eSBpbm55bWkgVmltLWEpLgorICBrbG9uw7N3IChtacSZZHp5IGlubnltaSBWaW1hKS4KIAogCUVkeXRvciB2aSAtIGF1dG9yenkgTGluZGEgTGFtYiBpIEFybm9sZCBSb2JiaW5zCi0JV3lkYXdjYTogSGVsaW9uIDIwMDEgKE8nUmVpbGx5KSAtIHdnIDYgYW5nLiB3eWRhbmlhCisJV3lkYXdjYTogSGVsaW9uIDIwMDEgKE8nUmVpbGx5KSAtIHdnIDYuIGFuZy4gd3lkYW5pYQogCUlTQk46IDgzLTcxOTctNTM5LTIKIAlodHRwOi8vaGVsaW9uLnBsL2tzaWF6a2kvdmllZHl0Lmh0bQogICBSb3pzemVyem9uYSB3ZXJzamEgTGVhcm5pbmcgdGhlIFZpIEVkaXRvciB3IHBvbHNraW0gdMWCdW1hY3plbml1LgpAQCAtOTgwLDcgKzk4Miw3IEBACiAgIENvbG9yYWRvIFN0YXRlIFVuaXZlcnNpdHkuCiAgIEUtbWFpbDogYndhcmVAbWluZXMuY29sb3JhZG8uZWR1LgogCi0gIFptb2R5Zmlrb3dhbmUgZGxhIFZpbS1hIHByemV6IEJyYW1hIE1vb2xlbmFhcmEuCisgIFptb2R5Zmlrb3dhbmUgZGxhIFZpbWEgcHJ6ZXogQnJhbWEgTW9vbGVuYWFyYS4KIAogfn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+CiAKQEAgLTk4OCw0ICs5OTAsNSBAQAogICBTaWVycGllxYQgMjAwMSwKICAgcmV2LiBNYXJ6ZWMgMjAwMgogICAybmQgcmV2LiBXcnplc2llxYQgMjAwNAorICAzcmQgcmV2LiBNYXJ6ZWMgMjAwNgogICBXc3plbGtpZSB1d2FnaSBwcm9zesSZIGtpZXJvd2HEhyBuYTogbWlrbWFjaEB3cC5wbAo=