ZGlmZiAtLWdpdCBhL3J1bnRpbWUvYXV0b2xvYWQvbmV0cncudmltIGIvcnVudGltZS9hdXRvbG9hZC9uZXRydy52aW0KaW5kZXggNmQxYzM3Zi4uODQ3NjAyMiAxMDA2NDQKLS0tIGEvcnVudGltZS9hdXRvbG9hZC9uZXRydy52aW0KKysrIGIvcnVudGltZS9hdXRvbG9hZC9uZXRydy52aW0KQEAgLTEsNyArMSw3IEBACiAiIG5ldHJ3LnZpbTogSGFuZGxlcyBmaWxlIHRyYW5zZmVyIGFuZCByZW1vdGUgZGlyZWN0b3J5IGxpc3RpbmcgYWNyb3NzCiAiICAgICAgICAgICAgQVVUT0xPQUQgU0VDVElPTgotIiBEYXRlOgkJSnVsIDI3LCAyMDEwCi0iIFZlcnNpb246CTE0MAorIiBEYXRlOgkJQXByIDAxLCAyMDExCisiIFZlcnNpb246CTE0MQogIiBNYWludGFpbmVyOglDaGFybGVzIEUgQ2FtcGJlbGwsIEpyIDxOZHJPY2hpcEBTY2FtcGJlbGxQZmFtaWx5LkFiaXpNLU5PU1BBTT4KICIgR2V0TGF0ZXN0VmltU2NyaXB0czogMTA3NSAxIDpBdXRvSW5zdGFsbDogbmV0cncudmltCiAiIENvcHlyaWdodDogICAgQ29weXJpZ2h0IChDKSAxOTk5LTIwMTAgQ2hhcmxlcyBFLiBDYW1wYmVsbCwgSnIuIHt7ezEKQEAgLTIyLDcgKzIyLDcgQEAKIGlmICZjcCB8fCBleGlzdHMoImc6bG9hZGVkX25ldHJ3IikKICAgZmluaXNoCiBlbmRpZgotbGV0IGc6bG9hZGVkX25ldHJ3ID0gInYxNDAiCitsZXQgZzpsb2FkZWRfbmV0cncgPSAidjE0MSIKIGlmIHY6dmVyc2lvbiA8IDcwMgogIGVjaG9obCBXYXJuaW5nTXNnCiAgZWNobyAiKioqd2FybmluZyoqKiB0aGlzIHZlcnNpb24gb2YgbmV0cncgbmVlZHMgdmltIDcuMiIKQEAgLTc4LDYgKzc4LDggQEAKIAogIiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICIgRGVmYXVsdCB2YWx1ZXMgZm9yIG5ldHJ3J3MgZ2xvYmFsIHByb3RvY29sIHZhcmlhYmxlcyB7e3syCitjYWxsIHM6TmV0cndJbml0KCJnOm5ldHJ3X3VzZV9lcnJvcndpbmRvdyIsMSkKKwogaWYgIWV4aXN0cygiZzpuZXRyd19kYXZfY21kIikKICBpZiBleGVjdXRhYmxlKCJjYWRhdmVyIikKICAgbGV0IGc6bmV0cndfZGF2X2NtZAk9ICJjYWRhdmVyIgpAQCAtOTcsNiArOTksNyBAQAogaWYgIWV4aXN0cygiZzpuZXRyd19mdHBfY21kIikKICAgbGV0IGc6bmV0cndfZnRwX2NtZAk9ICJmdHAiCiBlbmRpZgorbGV0IHM6bmV0cndfZnRwX2NtZD0gZzpuZXRyd19mdHBfY21kCiBpZiAhZXhpc3RzKCJnOm5ldHJ3X2h0dHBfY21kIikKICBpZiBleGVjdXRhYmxlKCJlbGlua3MiKQogICBsZXQgZzpuZXRyd19odHRwX2NtZCA9ICJlbGlua3MiCkBAIC0xNTcsMTEgKzE2MCwxMyBAQAogY2FsbCBzOk5ldHJ3SW5pdCgiZzpuZXRyd19jaGd3aW4iICAgICAgLCAtMSkKIGNhbGwgczpOZXRyd0luaXQoImc6bmV0cndfY29tcHJlc3MiICAgICwgImd6aXAiKQogY2FsbCBzOk5ldHJ3SW5pdCgiZzpuZXRyd19jdGFncyIgICAgICAgLCAiY3RhZ3MiKQotaWYgIWV4aXN0cygiZzpuZXRyd19jdXJzb3JsaW5lIikKLSBsZXQgZzpuZXRyd19jdXJzb3JsaW5lPSAxCi0gbGV0IHM6bmV0cndfdXNlcmN1bCAgID0gJmN1cnNvcmxpbmUKLSBsZXQgczpuZXRyd191c2VyY3VjICAgPSAmY3Vyc29yY29sdW1uCitpZiBleGlzdHMoImc6bmV0cndfY3Vyc29ybGluZSIpICYmICFleGlzdHMoImc6bmV0cndfY3Vyc29yIikKKyBjYWxsIG5ldHJ3I0Vycm9yTXNnKHM6Tk9URSwnZzpuZXRyd19jdXJzb3JsaW5lIGlzIGRlcHJlY2F0ZWQ7IHVzZSBnOm5ldHJ3X2N1cnNvciBpbnN0ZWFkJyw3NykKKyBsZXQgZzpuZXRyd19jdXJzb3I9IGc6bmV0cndfY3Vyc29ybGluZQogZW5kaWYKK2NhbGwgczpOZXRyd0luaXQoImc6bmV0cndfY3Vyc29yIiAgICAgICwgMikKK2xldCBzOm5ldHJ3X3VzZXJjdWwgPSAmY3Vyc29ybGluZQorbGV0IHM6bmV0cndfdXNlcmN1YyA9ICZjdXJzb3Jjb2x1bW4KICIgRGVmYXVsdCB2YWx1ZXMgLSBkLWcgLS0tLS0tLS0tLSB7e3szCiBjYWxsIHM6TmV0cndJbml0KCJnOm5ldHJ3X2Rpcmhpc3RfY250IiAgICAgICwgMCkKIGNhbGwgczpOZXRyd0luaXQoImc6bmV0cndfZGVjb21wcmVzcyIgICAgICAgLCAneyAiLmd6IiA6ICJndW56aXAiLCAiLmJ6MiIgOiAiYnVuemlwMiIsICIuemlwIiA6ICJ1bnppcCIsICIudGFyIiA6ICJ0YXIgLXhmIiwgIi54eiIgOiAidW54eiIgfScpCkBAIC0yNjcsNyArMjcyLDcgQEAKICIgRGVmYXVsdCB2YWx1ZXMgLSBzIC0tLS0tLS0tLS0ge3t7MwogIiBnOm5ldHJ3X3NlcGNocjogcGlja2luZyBhIGNoYXJhY3RlciB0aGF0IGRvZXNuJ3QgYXBwZWFyIGluIGZpbGVuYW1lcyB0aGF0IGNhbiBiZSB1c2VkIHRvIHNlcGFyYXRlIHByaW9yaXR5IGZyb20gZmlsZW5hbWUKIGNhbGwgczpOZXRyd0luaXQoImc6bmV0cndfc2VwY2hyIiAgICAgICAgLCAoJmVuYyA9PSAiZXVjLWpwIik/ICJcPENoYXItMHgwMT4iIDogIlw8Q2hhci0weGZmPiIpCi1jYWxsIHM6TmV0cndJbml0KCJzOm5ldHJ3X3NpbGVudHhmZXIiICAgICwgKGV4aXN0cygiZzpuZXRyd19zaWxlbnQiKSAmJiBnOm5ldHJ3X3NpbGVudCAhPSAwKT8gInNpbGVudCBrZWVwaiAiIDogImtlZXBqICIpCitjYWxsIHM6TmV0cndJbml0KCJzOm5ldHJ3X3NpbGVudHhmZXIiICAgICwgKGV4aXN0cygiZzpuZXRyd19zaWxlbnQiKSAmJiBnOm5ldHJ3X3NpbGVudCAhPSAwKT8gInNpbCBrZWVwaiAiIDogImtlZXBqICIpCiBjYWxsIHM6TmV0cndJbml0KCJnOm5ldHJ3X3NvcnRfYnkiICAgICAgICwgIm5hbWUiKSAiIGFsdGVybmF0aXZlczogZGF0ZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLCBzaXplCiBjYWxsIHM6TmV0cndJbml0KCJnOm5ldHJ3X3NvcnRfb3B0aW9ucyIgICwgIiIpCiBjYWxsIHM6TmV0cndJbml0KCJnOm5ldHJ3X3NvcnRfZGlyZWN0aW9uIiwgIm5vcm1hbCIpICIgYWx0ZXJuYXRpdmU6IHJldmVyc2UgICh6IHkgeCAuLi4pCkBAIC0yODUsNyArMjkwLDYgQEAKIGNhbGwgczpOZXRyd0luaXQoImc6bmV0cndfdGltZWZtdCIsIiVjIikKIGNhbGwgczpOZXRyd0luaXQoImc6bmV0cndfeHN0cmxlbiIsMCkKIGNhbGwgczpOZXRyd0luaXQoImc6TmV0cndUb3BMdmxNZW51IiwiTmV0cncuIikKLWNhbGwgczpOZXRyd0luaXQoImc6bmV0cndfdXNlX2Vycm9yd2luZG93IiwxKQogY2FsbCBzOk5ldHJ3SW5pdCgiZzpuZXRyd193aW45NWZ0cCIsMSkKIGNhbGwgczpOZXRyd0luaXQoImc6bmV0cndfd2luc2l6ZSIsMjUpCiAiIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpAQCAtMzA1LDEwICszMDksNDUgQEAKICIgIGZpbGVzIHJlYWQgYnkgbmV0d29yayB0cmFuc2ZlciBhcmVuJ3QgYXBwcm9wcmlhdGVseSBoaWdobGlnaHRlZC4KICJsZXQgZzpkZWNob19idWZlbnRlciA9IDEJIkRlY2hvCiAKKyIgPT09PT09PT09PT09PT09PT09PT09PQorIiAgTmV0cncgSW5pdGlhbGl6YXRpb246IHt7ezEKKyIgPT09PT09PT09PT09PT09PT09PT09PQoraWYgdjp2ZXJzaW9uID49IDcwMCAmJiBoYXMoImJhbGxvb25fZXZhbCIpICYmICZiZXZhbCA9PSAwCisgbGV0ICZsOmJleHByPSAibmV0cncjTmV0cndCYWxsb29uSGVscCgpIgorIHNldCBiZXZhbAorZW5kaWYKKwogIiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICIgIE5ldHJ3IFV0aWxpdHkgRnVuY3Rpb25zOiB7e3sxCiAiID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogCisiIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIiBuZXRydyNOZXRyd0JhbGxvb25IZWxwOiB7e3syCitpZiB2OnZlcnNpb24gPj0gNzAwICYmIGhhcygiYmFsbG9vbl9ldmFsIikgJiYgJmJldmFsID09IDEKKyAgZnVuISBuZXRydyNOZXRyd0JhbGxvb25IZWxwKCkKKyAgICBpZiAhZXhpc3RzKCJ3Om5ldHJ3X2Jhbm5lcmNudCIpIHx8IHY6YmV2YWxfbG51bSA+PSB3Om5ldHJ3X2Jhbm5lcmNudAorICAgICBsZXQgbWVzZz0gIiIKKyAgICBlbHNlaWYgICAgIHY6YmV2YWxfdGV4dCA9PSAiTmV0cnciIHx8IHY6YmV2YWxfdGV4dCA9PSAiRGlyZWN0b3J5IiB8fCB2OmJldmFsX3RleHQgPT0gIkxpc3RpbmciCisgICAgIGxldCBtZXNnID0gImk6IHRoaW4tbG9uZy13aWRlLXRyZWUgIGdoOiBxdWljayBoaWRlL3VuaGlkZSBvZiBkb3QtZmlsZXMgICBxZjogcXVpY2sgZmlsZSBpbmZvIgorICAgIGVsc2VpZiAgICAgZ2V0bGluZSh2OmJldmFsX2xudW0pID1+ICdeIlxzKi8nCisgICAgIGxldCBtZXNnID0gIjxjcj46IGVkaXQvZW50ZXIgICBvOiBlZGl0L2VudGVyIGluIGhvcml6IHdpbmRvdyAgIHQ6IGVkaXQvZW50ZXIgaW4gbmV3IHRhYiAgIHY6ZWRpdC9lbnRlciBpbiB2ZXJ0IHdpbmRvdyIKKyAgICBlbHNlaWYgICAgIHY6YmV2YWxfdGV4dCA9PSAiU29ydGVkIiB8fCB2OmJldmFsX3RleHQgPT0gImJ5IgorICAgICBsZXQgbWVzZyA9ICdzOiBzb3J0IGJ5IG5hbWUsIHRpbWUsIG9yIGZpbGUgc2l6ZSAgIHI6IHJldmVyc2Ugc29ydGluZyBvcmRlciAgIG10OiBtYXJrIHRhcmdldCcKKyAgICBlbHNlaWYgdjpiZXZhbF90ZXh0ID09ICJTb3J0IiAgIHx8IHY6YmV2YWxfdGV4dCA9PSAic2VxdWVuY2UiCisgICAgIGxldCBtZXNnID0gIlM6IGVkaXQgc29ydGluZyBzZXF1ZW5jZSIKKyAgICBlbHNlaWYgdjpiZXZhbF90ZXh0ID09ICJIaWRpbmciIHx8IHY6YmV2YWxfdGV4dCA9PSAiU2hvd2luZyIKKyAgICAgbGV0IG1lc2cgPSAiYTogaGlkaW5nLXNob3dpbmctYWxsICAgY3RybC1oOiBlZGl0aW5nIGhpZGluZyBsaXN0ICAgbWg6IGhpZGUvc2hvdyBieSBzdWZmaXgiCisgICAgZWxzZWlmIHY6YmV2YWxfdGV4dCA9PSAiUXVpY2siIHx8IHY6YmV2YWxfdGV4dCA9PSAiSGVscCIKKyAgICAgbGV0IG1lc2cgPSAiSGVscDogcHJlc3MgPEYxPiIKKyAgICBlbHNlaWYgdjpiZXZhbF90ZXh0ID09ICJDb3B5L01vdmUiIHx8IHY6YmV2YWxfdGV4dCA9PSAiVGd0IgorICAgICBsZXQgbWVzZyA9ICJtdDogbWFyayB0YXJnZXQgICBtYzogY29weSBtYXJrZWQgZmlsZSB0byB0YXJnZXQgICBtbTogbW92ZSBtYXJrZWQgZmlsZSB0byB0YXJnZXQiCisgICAgZWxzZQorICAgICBsZXQgbWVzZz0gIiIKKyAgICBlbmRpZgorICAgIHJldHVybiBtZXNnCisgIGVuZGZ1bgorZW5kaWYKKwogIiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICIgczpOZXRyd09wdGlvblNhdmU6IHNhdmUgb3B0aW9ucyBhbmQgc2V0IHRvICJzdGFuZGFyZCIgZm9ybSB7e3syCiAiICAwNi8wOC8wNyA6IHJlbW92ZWQgY2FsbCB0byBOZXRyd1NhZmVPcHRpb25zKCksIGVpdGhlciBwbGFjZWQKQEAgLTM1OCw4ICszOTcsOCBAQAogICBpZiBoYXMoIndpbjMyIikgJiYgIWhhcygid2luOTUiKQogICAgbGV0IHthOnZ0fW5ldHJ3X3N3ZmtlZXAgID0gJmw6c3dmICAgICAgICAgICIgc3dhcGZpbGUKICAgZW5kaWYKLSAgaWYgJmdvID1+ICdhJyB8IHNpbGVudCEgbGV0IHthOnZ0fW5ldHJ3X3JlZ3N0YXIgPSBAKiB8IGVuZGlmCi0gIHNpbGVudCEgbGV0IHthOnZ0fW5ldHJ3X3JlZ3NsYXNoPSBALworICBpZiAmZ28gPX4jICdhJyB8IHNpbCEgbGV0IHthOnZ0fW5ldHJ3X3JlZ3N0YXIgPSBAKiB8IGVuZGlmCisgIHNpbCEgbGV0IHthOnZ0fW5ldHJ3X3JlZ3NsYXNoPSBALwogCiAiICBjYWxsIERyZXQoInM6TmV0cndPcHRpb25TYXZlIDogd2luIyIud2lubnIoKS4iIGJ1ZiMiLmJ1Zm5yKCIlIikpCiBlbmRmdW4KQEAgLTQyMywxNyArNDYyLDE3IEBACiAgICAgIiBuZXRydyB3aWxsIHRlbXBvcmFyaWx5IHNldCB0aGUgc3dhcGZpbGUgZGlyZWN0b3J5CiAgICAgIiB0byB0aGUgY3VycmVudCBkaXJlY3RvcnkgYXMgcmV0dXJuZWQgYnkgZ2V0Y3dkKCkuCiAgICAgbGV0ICZsOmRpcmVjdG9yeSAgID0gZ2V0Y3dkKCkKLSAgICBzaWxlbnQhIGxldCAmbDpzd2YgPSB7YTp2dH1uZXRyd19zd2ZrZWVwCisgICAgc2lsISBsZXQgJmw6c3dmID0ge2E6dnR9bmV0cndfc3dma2VlcAogICAgIHNldGxvY2FsIGRpcmVjdG9yeT0KICAgICB1bmxldCB7YTp2dH1uZXRyd19zd2ZrZWVwCiAgICBlbHNlaWYgJmw6c3dmICE9IHthOnZ0fW5ldHJ3X3N3ZmtlZXAKICAgICAiIGZvbGxvd2luZyBsaW5lIGNhdXNlcyBhIFByZXNzIEVOVEVSIGluIHdpbmRvd3MgLS0gY2FuJ3Qgc2VlbSB0byB3b3JrIGFyb3VuZCBpdCEhIQotICAgIHNpbGVudCEgbGV0ICZsOnN3Zj0ge2E6dnR9bmV0cndfc3dma2VlcAorICAgIHNpbCEgbGV0ICZsOnN3Zj0ge2E6dnR9bmV0cndfc3dma2VlcAogICAgIHVubGV0IHthOnZ0fW5ldHJ3X3N3ZmtlZXAKICAgIGVuZGlmCiAgIGVuZGlmCi0gIGlmIGV4aXN0cygie2E6dnR9bmV0cndfcmVnc3RhciIpIHxzaWxlbnQhIGxldCBAKj0ge2E6dnR9bmV0cndfcmVnc3RhciB8dW5sZXQge2E6dnR9bmV0cndfcmVnc3RhciB8ZW5kaWYKLSAgaWYgZXhpc3RzKCJ7YTp2dH1uZXRyd19yZWdzbGFzaCIpfHNpbGVudCEgbGV0IEAvPSB7YTp2dH1uZXRyd19yZWdzbGFzaHx1bmxldCB7YTp2dH1uZXRyd19yZWdzbGFzaHxlbmRpZgorICBpZiBleGlzdHMoInthOnZ0fW5ldHJ3X3JlZ3N0YXIiKSB8c2lsISBsZXQgQCo9IHthOnZ0fW5ldHJ3X3JlZ3N0YXIgfHVubGV0IHthOnZ0fW5ldHJ3X3JlZ3N0YXIgfGVuZGlmCisgIGlmIGV4aXN0cygie2E6dnR9bmV0cndfcmVnc2xhc2giKXxzaWwhIGxldCBALz0ge2E6dnR9bmV0cndfcmVnc2xhc2h8dW5sZXQge2E6dnR9bmV0cndfcmVnc2xhc2h8ZW5kaWYKIAogIiAgY2FsbCBEZWNobygiZzpuZXRyd19rZWVwZGlyPSIuZzpuZXRyd19rZWVwZGlyLiI6IGdldGN3ZDwiLmdldGN3ZCgpLiI+IGFjZD0iLiZhY2QpCiAiICBjYWxsIERlY2hvKCJmbz0iLiZmby4oZXhpc3RzKCImYWNkIik/ICIgYWNkPSIuJmFjZCA6ICIgYWNkIGRvZXNuJ3QgZXhpc3QiKSkKQEAgLTQ2MCwxMyArNDk5LDEzIEBACiAgIGlmIGc6bmV0cndfdXNlX25vc3dmICYmIGhhcygid2luMzIiKSAmJiAhaGFzKCJ3aW45NSIpCiAgICBzZXRsb2NhbCBub3N3ZgogICBlbmRpZgotICBjYWxsIHM6TmV0cndDdXJzb3JsaW5lKCkKKyAgY2FsbCBzOk5ldHJ3Q3Vyc29yKCkKIAogICAiIGFsbG93IHRoZSB1c2VyIHRvIG92ZXJyaWRlIHNhZmUgb3B0aW9ucwogIiAgY2FsbCBEZWNobygiZnQ8Ii4mZnQuIj4gZWk9Ii4mZWkpCiAgIGlmICZmdCA9PSAibmV0cnciCiAiICAgY2FsbCBEZWNobygiZG8gYW55IG5ldHJ3IEZpbGVUeXBlIGF1dG9jbWRzIikKLSAgIHNpbGVudCBrZWVwYWx0IGtlZXBqdW1wcyBkb2F1IEZpbGVUeXBlIG5ldHJ3CisgICBzaWwga2VlcGFsdCBrZWVwaiBkb2F1IEZpbGVUeXBlIG5ldHJ3CiAgIGVuZGlmCiAKICIgIGNhbGwgRGVjaG8oImZvPSIuJmZvLihleGlzdHMoIiZhY2QiKT8gIiBhY2Q9Ii4mYWNkIDogIiBhY2QgZG9lc24ndCBleGlzdCIpKQpAQCAtNjA0LDcgKzY0Myw3IEBACiAiICAgICBjYWxsIERlY2hvKCJyZWNvbnN0cnVjdGluZyBjaG9pY2UiKQogICAgICBpZiBtYXRjaChjaG9pY2UsJyIkJykgIT0gLTEKICAgICAgICIgY2FzZSAiLi4uIgotICAgICAgbGV0IGNob2ljZT1zdHJwYXJ0KGNob2ljZSwxLHN0cmxlbihjaG9pY2UpLTIpCisgICAgICBsZXQgY2hvaWNlPSBzdHJwYXJ0KGNob2ljZSwxLHN0cmxlbihjaG9pY2UpLTIpCiAgICAgIGVsc2UKICAgICAgICAiICBjYXNlICIuLi4gLi4uIC4uLiIKICAgICAgIGxldCBjaG9pY2UgICAgICA9IHN0cnBhcnQoY2hvaWNlLDEsc3RybGVuKGNob2ljZSktMSkKQEAgLTY4Niw3ICs3MjUsNyBAQAogICAgZWxzZWlmIGI6bmV0cndfbWV0aG9kICA9PSAyCQkiIHJlYWQgd2l0aCBmdHAgKyA8Lm5ldHJjPgogIiAgICAgY2FsbCBEZWNobygicmVhZCB2aWEgZnRwKy5uZXRyYyAobWV0aG9kICMyKSIpCiAgICAgIGxldCBuZXRyd19mbmFtZT0gYjpuZXRyd19mbmFtZQotICAgICBjYWxsIHM6U2F2ZUJ1ZlZhcnMoKXxuZXd8Y2FsbCBzOlJlc3RvcmVCdWZWYXJzKCkKKyAgICAga2VlcGogY2FsbCBzOlNhdmVCdWZWYXJzKCl8bmV3fGtlZXBqIGNhbGwgczpSZXN0b3JlQnVmVmFycygpCiAgICAgIGxldCBmaWx0YnVmPSBidWZucigiJSIpCiAgICAgIHNldGxvY2FsIGZmPXVuaXgKICAgICAga2VlcGogcHV0ID1nOm5ldHJ3X2Z0cG1vZGUKQEAgLTY5OCwxNyArNzM3LDE3IEBACiAgICAgIGNhbGwgc2V0bGluZShsaW5lKCIkIikrMSwnZ2V0ICInLm5ldHJ3X2ZuYW1lLiciICcudG1wZmlsZSkKICIgICAgIGNhbGwgRGVjaG8oImZpbHRlciBpbnB1dDogIi5nZXRsaW5lKGxpbmUoIiQiKSkpCiAgICAgIGlmIGV4aXN0cygiZzpuZXRyd19wb3J0IikgJiYgZzpuZXRyd19wb3J0ICE9ICIiCi0iICAgICAgY2FsbCBEZWNobygiZXhlY3V0aW5nOiAlISIuZzpuZXRyd19mdHBfY21kLiIgLWkgIi5zaGVsbGVzY2FwZShnOm5ldHJ3X21hY2hpbmUuIiAiLmc6bmV0cndfcG9ydCwxKSkKLSAgICAgIGV4ZSBzOm5ldHJ3X3NpbGVudHhmZXIuIiUhIi5nOm5ldHJ3X2Z0cF9jbWQuIiAtaSAiLnNoZWxsZXNjYXBlKGc6bmV0cndfbWFjaGluZS4iICIuZzpuZXRyd19wb3J0LDEpCisiICAgICAgY2FsbCBEZWNobygiZXhlY3V0aW5nOiAlISIuczpuZXRyd19mdHBfY21kLiIgLWkgIi5zaGVsbGVzY2FwZShnOm5ldHJ3X21hY2hpbmUsMSkuIiAiLnNoZWxsZXNjYXBlKGc6bmV0cndfcG9ydCwxKSkKKyAgICAgIGV4ZSBzOm5ldHJ3X3NpbGVudHhmZXIuIiUhIi5zOm5ldHJ3X2Z0cF9jbWQuIiAtaSAiLnNoZWxsZXNjYXBlKGc6bmV0cndfbWFjaGluZSwxKS4iICIuc2hlbGxlc2NhcGUoZzpuZXRyd19wb3J0LDEpCiAgICAgIGVsc2UKLSIgICAgICBjYWxsIERlY2hvKCJleGVjdXRpbmc6ICUhIi5nOm5ldHJ3X2Z0cF9jbWQuIiAtaSAiLnNoZWxsZXNjYXBlKGc6bmV0cndfbWFjaGluZSwxKSkKLSAgICAgIGV4ZSBzOm5ldHJ3X3NpbGVudHhmZXIuIiUhIi5nOm5ldHJ3X2Z0cF9jbWQuIiAtaSAiLnNoZWxsZXNjYXBlKGc6bmV0cndfbWFjaGluZSwxKQorIiAgICAgIGNhbGwgRGVjaG8oImV4ZWN1dGluZzogJSEiLnM6bmV0cndfZnRwX2NtZC4iIC1pICIuc2hlbGxlc2NhcGUoZzpuZXRyd19tYWNoaW5lLDEpKQorICAgICAgZXhlIHM6bmV0cndfc2lsZW50eGZlci4iJSEiLnM6bmV0cndfZnRwX2NtZC4iIC1pICIuc2hlbGxlc2NhcGUoZzpuZXRyd19tYWNoaW5lLDEpCiAgICAgIGVuZGlmCiAgICAgICIgSWYgdGhlIHJlc3VsdCBvZiB0aGUgZnRwIG9wZXJhdGlvbiBpc24ndCBibGFuaywgc2hvdyBhbiBlcnJvciBtZXNzYWdlICh0bnggdG8gRG91ZyBDbGFhcikKICAgICAgaWYgZ2V0bGluZSgxKSAhfiAiXiQiICYmICFleGlzdHMoImc6bmV0cndfcXVpZXQiKSAmJiBnZXRsaW5lKDEpICF+ICdeVHJ5aW5nICcKICAgICAgIGxldCBkZWJ1Z2tlZXAgPSAmZGVidWcKICAgICAgIHNldGxvY2FsIGRlYnVnPW1zZwotICAgICAgY2FsbCBuZXRydyNFcnJvck1zZyhzOkVSUk9SLGdldGxpbmUoMSksNCkKKyAgICAgIGtlZXBqIGNhbGwgbmV0cncjRXJyb3JNc2coczpFUlJPUixnZXRsaW5lKDEpLDQpCiAgICAgICBsZXQgJmRlYnVnICAgID0gZGVidWdrZWVwCiAgICAgIGVuZGlmCiAgICAgIGNhbGwgczpTYXZlQnVmVmFycygpCkBAIC03MjcsNyArNzY2LDcgQEAKICAgICAiIENvbnN0cnVjdCBleGVjdXRpb24gc3RyaW5nIChmb3VyIGxpbmVzKSB3aGljaCB3aWxsIGJlIHBhc3NlZCB0aHJvdWdoIGZpbHRlcgogIiAgICBjYWxsIERlY2hvKCJyZWFkIHZpYSBmdHArbWlwZiAobWV0aG9kICMzKSIpCiAgICAgbGV0IG5ldHJ3X2ZuYW1lPSBlc2NhcGUoYjpuZXRyd19mbmFtZSxnOm5ldHJ3X2ZuYW1lX2VzY2FwZSkKLSAgICBjYWxsIHM6U2F2ZUJ1ZlZhcnMoKXxuZXd8Y2FsbCBzOlJlc3RvcmVCdWZWYXJzKCkKKyAgICBrZWVwaiBjYWxsIHM6U2F2ZUJ1ZlZhcnMoKXxuZXd8a2VlcGogY2FsbCBzOlJlc3RvcmVCdWZWYXJzKCkKICAgICBsZXQgZmlsdGJ1Zj0gYnVmbnIoIiUiKQogICAgIHNldGxvY2FsIGZmPXVuaXgKICAgICBpZiBleGlzdHMoImc6bmV0cndfcG9ydCIpICYmIGc6bmV0cndfcG9ydCAhPSAiIgpAQCAtNzUzLDcgKzc5Miw3IEBACiAiICAgICBjYWxsIERlY2hvKCJmaWx0ZXIgaW5wdXQ6ICIuZ2V0bGluZSgnLicpKQogICAgIGVuZGlmCiAgICAgaWYgZXhpc3RzKCJnOm5ldHJ3X2Z0cGV4dHJhY21kIikKLSAgICAgcHV0ID1nOm5ldHJ3X2Z0cGV4dHJhY21kCisgICAgIGtlZXBqIHB1dCA9ZzpuZXRyd19mdHBleHRyYWNtZAogIiAgICAgY2FsbCBEZWNobygiZmlsdGVyIGlucHV0OiAiLmdldGxpbmUoJy4nKSkKICAgICBlbmRpZgogICAgIGtlZXBqIHB1dCA9J2dldCBcIicubmV0cndfZm5hbWUuJ1wiICcudG1wZmlsZQpAQCAtNzYzLDkgKzgwMiw5IEBACiAgICAgIiAtaSAgICAgICA6IHR1cm5zIG9mZiBpbnRlcmFjdGl2ZSBwcm9tcHRpbmcgZnJvbSBmdHAKICAgICAiIC1uICB1bml4IDogRE9OJ1QgdXNlIDwubmV0cmM+LCBldmVuIHRob3VnaCBpdCBleGlzdHMKICAgICAiIC1uICB3aW4zMjogcXVpdCBiZWluZyBvYm5veGlvdXMgYWJvdXQgcGFzc3dvcmQKLSAgICBub3JtISAxR2RkCi0iICAgIGNhbGwgRGVjaG8oImV4ZWN1dGluZzogJSEiLmc6bmV0cndfZnRwX2NtZC4iIC1pIC1uIikKLSAgICBleGUgczpuZXRyd19zaWxlbnR4ZmVyLiIlISIuZzpuZXRyd19mdHBfY21kLiIgLWkgLW4iCisgICAga2VlcGogbm9ybSEgMUdkZAorIiAgICBjYWxsIERlY2hvKCJleGVjdXRpbmc6ICUhIi5zOm5ldHJ3X2Z0cF9jbWQuIiAtaSAtbiIpCisgICAgZXhlIHM6bmV0cndfc2lsZW50eGZlci4iJSEiLnM6bmV0cndfZnRwX2NtZC4iIC1pIC1uIgogICAgICIgSWYgdGhlIHJlc3VsdCBvZiB0aGUgZnRwIG9wZXJhdGlvbiBpc24ndCBibGFuaywgc2hvdyBhbiBlcnJvciBtZXNzYWdlICh0bnggdG8gRG91ZyBDbGFhcikKICAgICBpZiBnZXRsaW5lKDEpICF+ICJeJCIKICIgICAgIGNhbGwgRGVjaG8oImVycm9yPCIuZ2V0bGluZSgxKS4iPiIpCkBAIC04MTcsNyArODU2LDcgQEAKIAogICAgIGVsc2UKICAgICAgIiB3Z2V0L2N1cmwvZmV0Y2ggcGx1cyBhIGp1bXAgdG8gYW4gaW4tcGFnZSBtYXJrZXIgKGllLiBodHRwOi8vYWJjL2RlZi5odG1sI2FNYXJrZXIpCi0iICAgICBjYWxsIERlY2hvKCgid2dldC9jdXJsIHBsdXMganVtcCAoIyBpbiBiOm5ldHJ3X2ZuYW1lPCIuYjpuZXRyd19mbmFtZS4iPikiKQorIiAgICAgY2FsbCBEZWNobygid2dldC9jdXJsIHBsdXMganVtcCAoIyBpbiBiOm5ldHJ3X2ZuYW1lPCIuYjpuZXRyd19mbmFtZS4iPikiKQogICAgICBsZXQgbmV0cndfaHRtbD0gc3Vic3RpdHV0ZShiOm5ldHJ3X2ZuYW1lLCIjLiokIiwiIiwiIikKICAgICAgbGV0IG5ldHJ3X3RhZyA9IHN1YnN0aXR1dGUoYjpuZXRyd19mbmFtZSwiXi4qIyIsIiIsIiIpCiAiICAgICBjYWxsIERlY2hvKCJuZXRyd19odG1sPCIubmV0cndfaHRtbC4iPiIpCkBAIC04MjYsNyArODY1LDcgQEAKICAgICAgZXhlIHM6bmV0cndfc2lsZW50eGZlci4iISIuZzpuZXRyd19odHRwX2NtZC4iICIuc2hlbGxlc2NhcGUodG1wZmlsZSwxKS4iICIuc2hlbGxlc2NhcGUoImh0dHA6Ly8iLmc6bmV0cndfbWFjaGluZS5uZXRyd19odG1sLDEpCiAgICAgIGxldCByZXN1bHQgPSBzOk5ldHJ3R2V0RmlsZShyZWFkY21kLCB0bXBmaWxlLCBiOm5ldHJ3X21ldGhvZCkKICIgICAgIGNhbGwgRGVjaG8oJzxccyphXHMqbmFtZT1ccyoiJy5uZXRyd190YWcuJyIvJykKLSAgICAgZXhlICdub3JtISAxRy88XHMqYVxzKm5hbWU9XHMqIicubmV0cndfdGFnLiciLycuIlw8Q1I+IgorICAgICBleGUgJ2tlZXBqIG5vcm0hIDFHLzxccyphXHMqbmFtZT1ccyoiJy5uZXRyd190YWcuJyIvJy4iXDxDUj4iCiAgICAgZW5kaWYKICAgICBsZXQgYjpuZXRyd19sYXN0ZmlsZSA9IGNob2ljZQogICAgIHNldGxvY2FsIHJvCkBAIC04ODMsNyArOTIyLDcgQEAKICIgICAgY2FsbCBEZWNobygicmVhZCB2aWEgZmV0Y2ggKG1ldGhvZCAjOCkiKQogICAgIGlmIGc6bmV0cndfZmV0Y2hfY21kID09ICIiCiAgICAgIGlmICFleGlzdHMoImc6bmV0cndfcXVpZXQiKQotICAgICAgY2FsbCBuZXRydyNFcnJvck1zZyhzOkVSUk9SLCJmZXRjaCBjb21tYW5kIG5vdCBhdmFpbGFibGUiLDcpCisgICAgICBrZWVwaiBjYWxsIG5ldHJ3I0Vycm9yTXNnKHM6RVJST1IsImZldGNoIGNvbW1hbmQgbm90IGF2YWlsYWJsZSIsNykKICAgICAgZW5kaWYKICIgICAgIGNhbGwgRHJldCgiTmV0UmVhZCIpCiAgICAgZW5kaWYKQEAgLTkzMCw5ICs5NjksOSBAQAogICBlbmRpZgogICBpZiBzOkZpbGVSZWFkYWJsZSh0bXBmaWxlKSAmJiB0bXBmaWxlICF+ICcudGFyLmJ6MiQnICYmIHRtcGZpbGUgIX4gJy50YXIuZ3okJyAmJiB0bXBmaWxlICF+ICcuemlwJyAmJiB0bXBmaWxlICF+ICcudGFyJyAmJiByZWFkY21kICE9ICd0JyAmJiB0bXBmaWxlICF+ICcudGFyLnh6JCcgJiYgdG1wZmlsZSAhfiAnLnR4eicKICIgICBjYWxsIERlY2hvKCJjbGVhbnVwIGJ5IGRlbGV0aW5nIHRtcGZpbGU8Ii50bXBmaWxlLiI+IikKLSAgIGNhbGwgczpOZXRyd0RlbGV0ZSh0bXBmaWxlKQorICAga2VlcGogY2FsbCBzOk5ldHJ3RGVsZXRlKHRtcGZpbGUpCiAgIGVuZGlmCi0gIGNhbGwgczpOZXRyd09wdGlvblJlc3RvcmUoInc6IikKKyAga2VlcGogY2FsbCBzOk5ldHJ3T3B0aW9uUmVzdG9yZSgidzoiKQogCiAiICBjYWxsIERyZXQoIm5ldHJ3I05ldFJlYWQgOjUgZ2V0Y3dkPCIuZ2V0Y3dkKCkuIj4iKQogZW5kZnVuCkBAIC05NjYsMTYgKzEwMDUsMTYgQEAKICAgICIgRm9yIGJpbmFyeSB3cml0ZXMsIGFsd2F5cyB3cml0ZSBlbnRpcmUgZmlsZS4KICAgICIgKGxpbmUgbnVtYmVycyBkb24ndCByZWFsbHkgbWFrZSBzZW5zZSBmb3IgdGhhdCkuCiAgICAiIEFsc28gc3VwcG9ydHMgdGhlIHdyaXRpbmcgb2YgdGFyIGFuZCB6aXAgZmlsZXMuCi0iICAgY2FsbCBEZWNobygiKHdyaXRlIGVudGlyZSBmaWxlKSBzaWxlbnQgZXhlIHchICIuZm5hbWVlc2NhcGUodjpjbWRhcmcpLiIgIi5mbmFtZWVzY2FwZSh0bXBmaWxlKSkKLSAgIGV4ZSAic2lsZW50IGtlZXBqIHchICIuZm5hbWVlc2NhcGUodjpjbWRhcmcpLiIgIi5mbmFtZWVzY2FwZSh0bXBmaWxlKQorIiAgIGNhbGwgRGVjaG8oIih3cml0ZSBlbnRpcmUgZmlsZSkgc2lsIGV4ZSB3ISAiLmZuYW1lZXNjYXBlKHY6Y21kYXJnKS4iICIuZm5hbWVlc2NhcGUodG1wZmlsZSkpCisgICBleGUgInNpbCBrZWVwaiB3ISAiLmZuYW1lZXNjYXBlKHY6Y21kYXJnKS4iICIuZm5hbWVlc2NhcGUodG1wZmlsZSkKICAgZWxzZWlmIGc6bmV0cndfY3lnd2luCiAgICAiIHdyaXRlIChzZWxlY3RlZCBwb3J0aW9uIG9mKSBmaWxlIHRvIHRlbXBvcmFyeQogICAgbGV0IGN5Z3RtcGZpbGU9IHN1YnN0aXR1dGUodG1wZmlsZSwnL2N5Z2RyaXZlL1woLlwpJywnXDE6JywnJykKLSIgICBjYWxsIERlY2hvKCIod3JpdGUgc2VsZWN0ZWQgcG9ydGlvbikgc2lsZW50IGV4ZSAiLmE6Zmlyc3RsaW5lLiIsIiAuIGE6bGFzdGxpbmUgLiAidyEgIi5mbmFtZWVzY2FwZSh2OmNtZGFyZykuIiAiLmZuYW1lZXNjYXBlKGN5Z3RtcGZpbGUpKQorIiAgIGNhbGwgRGVjaG8oIih3cml0ZSBzZWxlY3RlZCBwb3J0aW9uKSBzaWwgZXhlICIuYTpmaXJzdGxpbmUuIiwiIC4gYTpsYXN0bGluZSAuICJ3ISAiLmZuYW1lZXNjYXBlKHY6Y21kYXJnKS4iICIuZm5hbWVlc2NhcGUoY3lndG1wZmlsZSkpCiAgICBleGUgInNpbCBrZWVwaiAiLmE6Zmlyc3RsaW5lLiIsIiAuIGE6bGFzdGxpbmUgLiAidyEgIi5mbmFtZWVzY2FwZSh2OmNtZGFyZykuIiAiLmZuYW1lZXNjYXBlKGN5Z3RtcGZpbGUpCiAgIGVsc2UKICAgICIgd3JpdGUgKHNlbGVjdGVkIHBvcnRpb24gb2YpIGZpbGUgdG8gdGVtcG9yYXJ5Ci0iICAgY2FsbCBEZWNobygiKHdyaXRlIHNlbGVjdGVkIHBvcnRpb24pIHNpbGVudCBleGUgIi5hOmZpcnN0bGluZS4iLCIgLiBhOmxhc3RsaW5lIC4gInchICIuZm5hbWVlc2NhcGUodjpjbWRhcmcpLiIgIi5mbmFtZWVzY2FwZSh0bXBmaWxlKSkKKyIgICBjYWxsIERlY2hvKCIod3JpdGUgc2VsZWN0ZWQgcG9ydGlvbikgc2lsIGV4ZSAiLmE6Zmlyc3RsaW5lLiIsIiAuIGE6bGFzdGxpbmUgLiAidyEgIi5mbmFtZWVzY2FwZSh2OmNtZGFyZykuIiAiLmZuYW1lZXNjYXBlKHRtcGZpbGUpKQogICAgZXhlICJzaWwga2VlcGogIi5hOmZpcnN0bGluZS4iLCIgLiBhOmxhc3RsaW5lIC4gInchICIuZm5hbWVlc2NhcGUodjpjbWRhcmcpLiIgIi5mbmFtZWVzY2FwZSh0bXBmaWxlKQogICBlbmRpZgogCkBAIC0xMDQzLDcgKzEwODIsNyBAQAogIiAgIGNhbGwgRGVjaG8oImNob2ljZTwiIC4gY2hvaWNlIC4gIj4gaWNob2ljZT0iLmljaG9pY2UpCiAKICAgICIgRGV0ZXJtaW5lIG1ldGhvZCBvZiB3cml0ZSAoZnRwLCByY3AsIGV0Yykge3t7NAotICAgY2FsbCBzOk5ldHJ3TWV0aG9kKGNob2ljZSkKKyAgIGtlZXBqIGNhbGwgczpOZXRyd01ldGhvZChjaG9pY2UpCiAgICBpZiAhZXhpc3RzKCJiOm5ldHJ3X21ldGhvZCIpIHx8IGI6bmV0cndfbWV0aG9kIDwgMAogIiAgICBjYWxsIERmdW5jKCJuZXRydyNOZXRXcml0ZSA6IHVuc3VwcG9ydGVkIG1ldGhvZCIpCiAgICAgcmV0dXJuCkBAIC0xMDk4LDIwICsxMTM3LDIwIEBACiAgICAgIGtlZXBqIHB1dCA9ZzpuZXRyd19mdHBleHRyYWNtZAogIiAgICAgY2FsbCBEZWNobygiZmlsdGVyIGlucHV0OiAiLmdldGxpbmUoIiQiKSkKICAgICBlbmRpZgotICAgIGNhbGwgc2V0bGluZShsaW5lKCIkIikrMSwncHV0ICInLnRtcGZpbGUuJyIgIicubmV0cndfZm5hbWUuJyInKQorICAgIGtlZXBqIGNhbGwgc2V0bGluZShsaW5lKCIkIikrMSwncHV0ICInLnRtcGZpbGUuJyIgIicubmV0cndfZm5hbWUuJyInKQogIiAgICBjYWxsIERlY2hvKCJmaWx0ZXIgaW5wdXQ6ICIuZ2V0bGluZSgiJCIpKQogICAgIGlmIGV4aXN0cygiZzpuZXRyd19wb3J0IikgJiYgZzpuZXRyd19wb3J0ICE9ICIiCi0iICAgICBjYWxsIERlY2hvKCJleGVjdXRpbmc6ICUhIi5nOm5ldHJ3X2Z0cF9jbWQuIiAtaSAiLnNoZWxsZXNjYXBlKGc6bmV0cndfbWFjaGluZSwxKS4iICIuc2hlbGxlc2NhcGUoZzpuZXRyd19wb3J0LDEpKQotICAgICBleGUgczpuZXRyd19zaWxlbnR4ZmVyLiIlISIuZzpuZXRyd19mdHBfY21kLiIgLWkgIi5zaGVsbGVzY2FwZShnOm5ldHJ3X21hY2hpbmUsMSkuIiAiLnNoZWxsZXNjYXBlKGc6bmV0cndfcG9ydCwxKQorIiAgICAgY2FsbCBEZWNobygiZXhlY3V0aW5nOiAlISIuczpuZXRyd19mdHBfY21kLiIgLWkgIi5zaGVsbGVzY2FwZShnOm5ldHJ3X21hY2hpbmUsMSkuIiAiLnNoZWxsZXNjYXBlKGc6bmV0cndfcG9ydCwxKSkKKyAgICAgZXhlIHM6bmV0cndfc2lsZW50eGZlci4iJSEiLnM6bmV0cndfZnRwX2NtZC4iIC1pICIuc2hlbGxlc2NhcGUoZzpuZXRyd19tYWNoaW5lLDEpLiIgIi5zaGVsbGVzY2FwZShnOm5ldHJ3X3BvcnQsMSkKICAgICBlbHNlCiAiICAgICBjYWxsIERlY2hvKCJmaWx0ZXIgaW5wdXQgd2luZG93IyIud2lubnIoKSkKLSIgICAgIGNhbGwgRGVjaG8oImV4ZWN1dGluZzogJSEiLmc6bmV0cndfZnRwX2NtZC4iIC1pICIuc2hlbGxlc2NhcGUoZzpuZXRyd19tYWNoaW5lLDEpKQotICAgICBleGUgczpuZXRyd19zaWxlbnR4ZmVyLiIlISIuZzpuZXRyd19mdHBfY21kLiIgLWkgIi5zaGVsbGVzY2FwZShnOm5ldHJ3X21hY2hpbmUsMSkKKyIgICAgIGNhbGwgRGVjaG8oImV4ZWN1dGluZzogJSEiLnM6bmV0cndfZnRwX2NtZC4iIC1pICIuc2hlbGxlc2NhcGUoZzpuZXRyd19tYWNoaW5lLDEpKQorICAgICBleGUgczpuZXRyd19zaWxlbnR4ZmVyLiIlISIuczpuZXRyd19mdHBfY21kLiIgLWkgIi5zaGVsbGVzY2FwZShnOm5ldHJ3X21hY2hpbmUsMSkKICAgICBlbmRpZgogICAgICIgSWYgdGhlIHJlc3VsdCBvZiB0aGUgZnRwIG9wZXJhdGlvbiBpc24ndCBibGFuaywgc2hvdyBhbiBlcnJvciBtZXNzYWdlICh0bnggdG8gRG91ZyBDbGFhcikKICAgICBpZiBnZXRsaW5lKDEpICF+ICJeJCIKICAgICAgaWYgIWV4aXN0cygiZzpuZXRyd19xdWlldCIpCi0gICAgICBjYWxsIG5ldHJ3I0Vycm9yTXNnKHM6RVJST1IsZ2V0bGluZSgxKSwxNCkKKyAgICAgIGtlZXBqIGNhbGwgbmV0cncjRXJyb3JNc2coczpFUlJPUixnZXRsaW5lKDEpLDE0KQogICAgICBlbmRpZgogICAgICBsZXQgbW9kPTEKICAgICBlbmRpZgpAQCAtMTE3MCw4ICsxMjA5LDggQEAKICAgICAiIC1uICB1bml4IDogRE9OJ1QgdXNlIDwubmV0cmM+LCBldmVuIHRob3VnaCBpdCBleGlzdHMKICAgICAiIC1uICB3aW4zMjogcXVpdCBiZWluZyBvYm5veGlvdXMgYWJvdXQgcGFzc3dvcmQKICAgICBrZWVwaiBub3JtISAxR2RkCi0iICAgIGNhbGwgRGVjaG8oImV4ZWN1dGluZzogJSEiLmc6bmV0cndfZnRwX2NtZC4iIC1pIC1uIikKLSAgICBleGUgczpuZXRyd19zaWxlbnR4ZmVyLiIlISIuZzpuZXRyd19mdHBfY21kLiIgLWkgLW4iCisiICAgIGNhbGwgRGVjaG8oImV4ZWN1dGluZzogJSEiLnM6bmV0cndfZnRwX2NtZC4iIC1pIC1uIikKKyAgICBleGUgczpuZXRyd19zaWxlbnR4ZmVyLiIlISIuczpuZXRyd19mdHBfY21kLiIgLWkgLW4iCiAgICAgIiBJZiB0aGUgcmVzdWx0IG9mIHRoZSBmdHAgb3BlcmF0aW9uIGlzbid0IGJsYW5rLCBzaG93IGFuIGVycm9yIG1lc3NhZ2UgKHRueCB0byBEb3VnIENsYWFyKQogICAgIGlmIGdldGxpbmUoMSkgIX4gIl4kIgogICAgICBpZiAgIWV4aXN0cygiZzpuZXRyd19xdWlldCIpCkBAIC0xMjg1LDYgKzEzMjQsNyBAQAogICAgIiBOZXRXcml0ZTogQ29tcGxhaW4ge3t7MwogICAgZWxzZQogICAgIGNhbGwgbmV0cncjRXJyb3JNc2coczpXQVJOSU5HLCJ1bmFibGUgdG8gY29tcGx5IHdpdGggeW91ciByZXF1ZXN0PCIgLiBjaG9pY2UgLiAiPiIsMTcpCisgICAgbGV0IGxlYXZlbW9kPSAxCiAgICBlbmRpZgogICBlbmR3aGlsZQogCkBAIC0xMjk5LDkgKzEzMzksMTEgQEAKICAgaWYgYTpmaXJzdGxpbmUgPT0gMSAmJiBhOmxhc3RsaW5lID09IGxpbmUoIiQiKQogICAgIiByZXN0b3JlIG1vZGlmaWFiaWxpdHk7IHVzdWFsbHkgZXF1aXZhbGVudCB0byBzZXQgbm9tb2QKICAgIGxldCAmbW9kPSBtb2QKKyAgZWxzZWlmICFleGlzdHMoImxlYXZlbW9kIikKKyAgICIgaW5kaWNhdGUgdGhhdCB0aGUgYnVmZmVyIGhhcyBub3QgYmVlbiBtb2RpZmllZCBzaW5jZSBsYXN0IHdyaXR0ZW4KKyAgIHNldCBub21vZAogICBlbmRpZgogCi0gICIgcmVzdG9yZSBlcXVhbGFsd2F5cwogIiAgY2FsbCBEcmV0KCJuZXRydyNOZXRXcml0ZSIpCiBlbmRmdW4KIApAQCAtMTQwOCw3ICsxNDUwLDcgQEAKIAogICAgIiByZW5hbWUgYnVmZmVyIGJhY2sgdG8gcmVtb3RlIGZpbGVuYW1lCiAiICAgY2FsbCBEZWNobygiZXhlIHNpbCEga2VlcGFsdCBmaWxlICIuZm5hbWVlc2NhcGUocmZpbGUpKQotICAgZXhlICJzaWwhIGtlZXBhbHQgZmlsZSAiLmZuYW1lZXNjYXBlKHJmaWxlKQorICAgZXhlICJzaWwhIGtlZXBqIGtlZXBhbHQgZmlsZSAiLmZuYW1lZXNjYXBlKHJmaWxlKQogICAgZmlsZXR5cGUgZGV0ZWN0CiAiICAgY2FsbCBEcmVkaXIoInJlbmFtZWQgYnVmZmVyIGJhY2sgdG8gcmVtb3RlIGZpbGVuYW1lPCIucmZpbGUuIj4gOiBleHBhbmQoJSk8Ii5leHBhbmQoIiUiKS4iPiIsImxzISIpCiAgICBsZXQgbGluZTEgPSAxCkBAIC0xNDIwLDcgKzE0NjIsNyBAQAogICAgbGV0IGN1cmxpbmUgPSBsaW5lKCIuIikKICAgIGxldCBsYXN0bGluZT0gbGluZSgiJCIpCiAiICAgY2FsbCBEZWNobygiZXhlPCIuYTpyZWFkY21kLiIgIi5mbmFtZWVzY2FwZSh2OmNtZGFyZykuIiAiLmZuYW1lZXNjYXBlKGE6dGZpbGUpLiI+ICBsaW5lIyIuY3VybGluZSkKLSAgIGV4ZSBhOnJlYWRjbWQuIiAiLmZuYW1lZXNjYXBlKHY6Y21kYXJnKS4iICIuZm5hbWVlc2NhcGUoYTp0ZmlsZSkKKyAgIGV4ZSAia2VlcGogIi5hOnJlYWRjbWQuIiAiLmZuYW1lZXNjYXBlKHY6Y21kYXJnKS4iICIuZm5hbWVlc2NhcGUoYTp0ZmlsZSkKICAgIGxldCBsaW5lMT0gY3VybGluZSArIDEKICAgIGxldCBsaW5lMj0gbGluZSgiJCIpIC0gbGFzdGxpbmUgKyAxCiAKQEAgLTE0MjgsNyArMTQ3MCw3IEBACiAgICAiIG5vdCByZWFkYWJsZQogIiAgIGNhbGwgRGVjaG8oInJvPSIuJmw6cm8uIiBtYT0iLiZsOm1hLiIgbW9kPSIuJmw6bW9kLiIgd3JhcD0iLiZsOndyYXApCiAiICAgY2FsbCBEZWNobygidGZpbGU8Ii5hOnRmaWxlLiI+IG5vdCByZWFkYWJsZSIpCi0gICBjYWxsIG5ldHJ3I0Vycm9yTXNnKHM6V0FSTklORywiZmlsZSA8Ii5hOnRmaWxlLiI+IG5vdCByZWFkYWJsZSIsOSkKKyAgIGtlZXBqIGNhbGwgbmV0cncjRXJyb3JNc2coczpXQVJOSU5HLCJmaWxlIDwiLmE6dGZpbGUuIj4gbm90IHJlYWRhYmxlIiw5KQogIiAgIGNhbGwgRHJldCgiTmV0cndHZXRGaWxlIDogdGZpbGU8Ii5hOnRmaWxlLiI+IG5vdCByZWFkYWJsZSIpCiAgICByZXR1cm4KICAgZW5kaWYKQEAgLTE0MzYsMTQgKzE0NzgsMTQgQEAKICAgIiBVc2VyLXByb3ZpZGVkIChpZS4gb3B0aW9uYWwpIGZpeC1pdC11cCBjb21tYW5kCiAgIGlmIGV4aXN0cygiKk5ldFJlYWRGaXh1cCIpCiAiICAgY2FsbCBEZWNobygiY2FsbGluZyBOZXRSZWFkRml4dXAobWV0aG9kPCIuYTptZXRob2QuIj4gbGluZTE9Ii5saW5lMS4iIGxpbmUyPSIubGluZTIuIikiKQotICAgY2FsbCBOZXRSZWFkRml4dXAoYTptZXRob2QsIGxpbmUxLCBsaW5lMikKKyAgIGtlZXBqIGNhbGwgTmV0UmVhZEZpeHVwKGE6bWV0aG9kLCBsaW5lMSwgbGluZTIpCiAiICBlbHNlICIgRGVjaG8KICIgICBjYWxsIERlY2hvKCJOZXRSZWFkRml4dXAoKSBub3QgY2FsbGVkLCBkb2Vzbid0IGV4aXN0ICAobGluZTE9Ii5saW5lMS4iIGxpbmUyPSIubGluZTIuIikiKQogICBlbmRpZgogCi0gIGlmIGhhcygiZ3VpIikgJiYgaGFzKCJtZW51IikgJiYgaGFzKCJndWlfcnVubmluZyIpICYmICZnbyA9fiAnbScgJiYgZzpuZXRyd19tZW51CisgIGlmIGhhcygiZ3VpIikgJiYgaGFzKCJtZW51IikgJiYgaGFzKCJndWlfcnVubmluZyIpICYmICZnbyA9fiMgJ20nICYmIGc6bmV0cndfbWVudQogICAgIiB1cGRhdGUgdGhlIEJ1ZmZlcnMgbWVudQotICAgY2FsbCBzOlVwZGF0ZUJ1ZmZlcnNNZW51KCkKKyAgIGtlZXBqIGNhbGwgczpVcGRhdGVCdWZmZXJzTWVudSgpCiAgIGVuZGlmCiAKICIgIGNhbGwgRGVjaG8oInJlYWRjbWQ8Ii5hOnJlYWRjbWQuIj4gY21kYXJnPCIudjpjbWRhcmcuIj4gdGZpbGU8Ii5hOnRmaWxlLiI+IHJlYWRhYmxlPSIuczpGaWxlUmVhZGFibGUoYTp0ZmlsZSkpCkBAIC0xNDg0LDYgKzE1MjYsMTMgQEAKICAgIGVsc2UKICAgICBsZXQgY3VybWFjaGluZT0gIk4gTyBUIEEgSE9TVCIKICAgIGVuZGlmCisgICBpZiBleGlzdHMoImc6bmV0cndfcG9ydCIpCisgICAgbGV0IG5ldHJ3X3BvcnQ9IGc6bmV0cndfcG9ydAorICAgZW5kaWYKKworICAgIiBpbnN1cmUgdGhhdCBuZXRyd19mdHBfY21kIHN0YXJ0cyBvZmYgZXZlcnkgbWV0aG9kIGRldGVybWluYXRpb24KKyAgICIgd2l0aCB0aGUgY3VycmVudCBnOm5ldHJ3X2Z0cF9jbWQKKyAgIGxldCBzOm5ldHJ3X2Z0cF9jbWQ9IGc6bmV0cndfZnRwX2NtZAogCiAgICIgaW5pdGlhbGl6YXRpb24KICAgbGV0IGI6bmV0cndfbWV0aG9kICA9IDAKQEAgLTE1MTgsNyArMTU2Nyw3IEBACiAKICIgIGNhbGwgRGVjaG8oImRldGVybWluZSBtZXRob2Q6IikKICAgIiBEZXRlcm1pbmUgTWV0aG9kCi0gICIgcmNwOi8vdXNlckBob3N0bmFtZS8uLi5wYXRoLXRvLWZpbGUKKyAgIiBNZXRob2QjMTogcmNwOi8vdXNlckBob3N0bmFtZS8uLi5wYXRoLXRvLWZpbGUge3t7MwogICBpZiBtYXRjaChhOmNob2ljZSxyY3B1cm0pID09IDAKICIgICBjYWxsIERlY2hvKCJyY3A6Ly8uLi4iKQogICAgbGV0IGI6bmV0cndfbWV0aG9kICA9IDEKQEAgLTE1MjksNyArMTU3OCw3IEBACiAgICAgbGV0IGc6bmV0cndfdWlkPSB1c2VyaWQKICAgIGVuZGlmCiAKLSAgIiBzY3A6Ly91c2VyQGhvc3RuYW1lLy4uLnBhdGgtdG8tZmlsZQorICAiIE1ldGhvZCM0OiBzY3A6Ly91c2VyQGhvc3RuYW1lLy4uLnBhdGgtdG8tZmlsZSB7e3szCiAgIGVsc2VpZiBtYXRjaChhOmNob2ljZSxzY3B1cm0pID09IDAKICIgICBjYWxsIERlY2hvKCJzY3A6Ly8uLi4iKQogICAgbGV0IGI6bmV0cndfbWV0aG9kICA9IDQKQEAgLTE1MzcsMTQgKzE1ODYsMTQgQEAKICAgIGxldCBnOm5ldHJ3X3BvcnQgICAgPSBzdWJzdGl0dXRlKGE6Y2hvaWNlLHNjcHVybSwnXDInLCIiKQogICAgbGV0IGI6bmV0cndfZm5hbWUgICA9IHN1YnN0aXR1dGUoYTpjaG9pY2Usc2NwdXJtLCdcMycsIiIpCiAKLSAgIiBodHRwOi8vdXNlckBob3N0bmFtZS8uLi5wYXRoLXRvLWZpbGUKKyAgIiBNZXRob2QjNTogaHR0cDovL3VzZXJAaG9zdG5hbWUvLi4ucGF0aC10by1maWxlIHt7ezMKICAgZWxzZWlmIG1hdGNoKGE6Y2hvaWNlLGh0dHB1cm0pID09IDAKICIgICBjYWxsIERlY2hvKCJodHRwOi8vLi4uIikKICAgIGxldCBiOm5ldHJ3X21ldGhvZCA9IDUKICAgIGxldCBnOm5ldHJ3X21hY2hpbmU9IHN1YnN0aXR1dGUoYTpjaG9pY2UsaHR0cHVybSwnXDEnLCIiKQogICAgbGV0IGI6bmV0cndfZm5hbWUgID0gc3Vic3RpdHV0ZShhOmNob2ljZSxodHRwdXJtLCdcMicsIiIpCiAKLSAgIiBkYXY6Ly9ob3N0bmFtZVs6cG9ydF0vLi5wYXRoLXRvLWZpbGUuLgorICAiIE1ldGhvZCM2OiBkYXY6Ly9ob3N0bmFtZVs6cG9ydF0vLi5wYXRoLXRvLWZpbGUuLiB7e3szCiAgIGVsc2VpZiBtYXRjaChhOmNob2ljZSxkYXZ1cm0pID09IDAKICIgICBjYWxsIERlY2hvKCJkYXY6Ly8uLi4iKQogICAgbGV0IGI6bmV0cndfbWV0aG9kPSA2CkBAIC0xNTU1LDE0ICsxNjA0LDE0IEBACiAgICBlbmRpZgogICAgbGV0IGI6bmV0cndfZm5hbWUgID0gc3Vic3RpdHV0ZShhOmNob2ljZSxkYXZ1cm0sJ1wzJywiIikKIAotICAiIHJzeW5jOi8vdXNlckBob3N0bmFtZS8uLi5wYXRoLXRvLWZpbGUKKyAgICIgTWV0aG9kIzc6IHJzeW5jOi8vdXNlckBob3N0bmFtZS8uLi5wYXRoLXRvLWZpbGUge3t7MwogICBlbHNlaWYgbWF0Y2goYTpjaG9pY2UscnN5bmN1cm0pID09IDAKICIgICBjYWxsIERlY2hvKCJyc3luYzovLy4uLiIpCiAgICBsZXQgYjpuZXRyd19tZXRob2QgPSA3CiAgICBsZXQgZzpuZXRyd19tYWNoaW5lPSBzdWJzdGl0dXRlKGE6Y2hvaWNlLHJzeW5jdXJtLCdcMScsIiIpCiAgICBsZXQgYjpuZXRyd19mbmFtZSAgPSBzdWJzdGl0dXRlKGE6Y2hvaWNlLHJzeW5jdXJtLCdcMicsIiIpCiAKLSAgIiBmdHA6Ly9bdXNlckBdaG9zdG5hbWVbWzojXXBvcnRdLy4uLnBhdGgtdG8tZmlsZQorICAgIiBNZXRob2RzIDIsMzogZnRwOi8vW3VzZXJAXWhvc3RuYW1lW1s6I11wb3J0XS8uLi5wYXRoLXRvLWZpbGUge3t7MwogICBlbHNlaWYgbWF0Y2goYTpjaG9pY2UsZnRwdXJtKSA9PSAwCiAiICAgY2FsbCBEZWNobygiZnRwOi8vLi4uIikKICAgIGxldCB1c2VyaWQJICAgICAgPSBzdWJzdGl0dXRlKGE6Y2hvaWNlLGZ0cHVybSwnXDInLCIiKQpAQCAtMTU3MywxNCArMTYyMiwyOSBAQAogICAgaWYgdXNlcmlkICE9ICIiCiAgICAgbGV0IGc6bmV0cndfdWlkPSB1c2VyaWQKICAgIGVuZGlmCi0gICBpZiBleGlzdHMoInM6bmV0cndfcGFzc3dkIikgJiYgY3VybWFjaGluZSAhPSBnOm5ldHJ3X21hY2hpbmUKLSAgICAiIGlmIHRoZXJlJ3MgYSBjaGFuZ2UgaW4gaG9zdG5hbWUsIHJlcXVpcmUgcGFzc3dvcmQgcmUtZW50cnkKLSAgICB1bmxldCBzOm5ldHJ3X3Bhc3N3ZAorICAgaWYgY3VybWFjaGluZSAhPSBnOm5ldHJ3X21hY2hpbmUKKyAgICBpZiBleGlzdHMoInM6bmV0cndfcGFzc3dkIikKKyAgICAgIiBpZiB0aGVyZSdzIGEgY2hhbmdlIGluIGhvc3RuYW1lLCByZXF1aXJlIHBhc3N3b3JkIHJlLWVudHJ5CisgICAgIHVubGV0IHM6bmV0cndfcGFzc3dkCisgICAgZW5kaWYKKyAgICBpZiBleGlzdHMoIm5ldHJ3X3BvcnQiKQorICAgICB1bmxldCBuZXRyd19wb3J0CisgICAgZW5kaWYKICAgIGVuZGlmCiAgICBpZiBleGlzdHMoImc6bmV0cndfdWlkIikgJiYgZXhpc3RzKCJzOm5ldHJ3X3Bhc3N3ZCIpCiAgICAgbGV0IGI6bmV0cndfbWV0aG9kID0gMwogICAgZWxzZQotICAgIGlmIHM6RmlsZVJlYWRhYmxlKGV4cGFuZCgiJEhPTUUvLm5ldHJjIikpICYmICFnOm5ldHJ3X2lnbm9yZW5ldHJjCisgICAgaWYgKGhhcygid2luMzIiKSB8fCBoYXMoIndpbjk1IikgfHwgaGFzKCJ3aW42NCIpIHx8IGhhcygid2luMTYiKSkgJiYgczpuZXRyd19mdHBfY21kID1+ICctW3NTXTonCisiICAgICBjYWxsIERlY2hvKCJoYXMgLXM6IDogczpuZXRyd19mdHBfY21kPCIuczpuZXRyd19mdHBfY21kLiI+IikKKyIgICAgIGNhbGwgRGVjaG8oIiAgICAgICAgICBnOm5ldHJ3X2Z0cF9jbWQ8Ii5nOm5ldHJ3X2Z0cF9jbWQuIj4iKQorICAgICBpZiBnOm5ldHJ3X2Z0cF9jbWQgPX4gJy1bc1NdOlxTKk1BQ0hJTkVcPicKKyAgICAgIGxldCBtYWNoaW5lICAgICAgICA9IHN1YnN0aXR1dGUoZzpuZXRyd19tYWNoaW5lLCdcKFteLl1cK1wpXC5cUyonLCdcMScsJycpCisgICAgICBsZXQgczpuZXRyd19mdHBfY21kPSBzdWJzdGl0dXRlKGc6bmV0cndfZnRwX2NtZCwnXDxNQUNISU5FXD4nLG1hY2hpbmUuIi5mdHAiLCcnKQorIiAgICAgIGNhbGwgRGVjaG8oInM6bmV0cndfZnRwX2NtZDwiLnM6bmV0cndfZnRwX2NtZC4iPiIpCisgICAgIGVuZGlmCisgICAgIGxldCBiOm5ldHJ3X21ldGhvZD0gMgorICAgIGVsc2VpZiBzOkZpbGVSZWFkYWJsZShleHBhbmQoIiRIT01FLy5uZXRyYyIpKSAmJiAhZzpuZXRyd19pZ25vcmVuZXRyYworIiAgICAgY2FsbCBEZWNobygidXNpbmcgPCIuZXhwYW5kKCIkSE9NRS8ubmV0cmMiKS4iPiAocmVhZGFibGUpIikKICAgICAgbGV0IGI6bmV0cndfbWV0aG9kPSAyCiAgICAgZWxzZQogICAgICBpZiAhZXhpc3RzKCJnOm5ldHJ3X3VpZCIpIHx8IGc6bmV0cndfdWlkID09ICIiCkBAIC0xNTkzLDYgKzE2NTcsNyBAQAogICAgIGVuZGlmCiAgICBlbmRpZgogCisgICIgTWV0aG9kIzg6IGZldGNoIHt7ezMKICAgZWxzZWlmIG1hdGNoKGE6Y2hvaWNlLGZldGNodXJtKSA9PSAwCiAiICAgY2FsbCBEZWNobygiZmV0Y2g6Ly8uLi4iKQogICAgbGV0IGI6bmV0cndfbWV0aG9kID0gOApAQCAtMTYwMSw3ICsxNjY2LDcgQEAKICAgIGxldCBiOm5ldHJ3X29wdGlvbiA9IHN1YnN0aXR1dGUoYTpjaG9pY2UsZmV0Y2h1cm0sJ1w0JywiIikKICAgIGxldCBiOm5ldHJ3X2ZuYW1lICA9IHN1YnN0aXR1dGUoYTpjaG9pY2UsZmV0Y2h1cm0sJ1w1JywiIikKIAotICAiIElzc3VlIGFuIGZ0cCA6ICJtYWNoaW5lIGlkIHBhc3N3b3JkIFtwYXRoL11maWxlbmFtZSIKKyAgICIgTWV0aG9kIzM6IElzc3VlIGFuIGZ0cCA6ICJtYWNoaW5lIGlkIHBhc3N3b3JkIFtwYXRoL11maWxlbmFtZSIge3t7MwogICBlbHNlaWYgbWF0Y2goYTpjaG9pY2UsbWlwZikgPT0gMAogIiAgIGNhbGwgRGVjaG8oIihmdHApIGhvc3QgaWQgcGFzcyBmaWxlIikKICAgIGxldCBiOm5ldHJ3X21ldGhvZCAgPSAzCkBAIC0xNjEwLDcgKzE2NzUsNyBAQAogICAgbGV0IHM6bmV0cndfcGFzc3dkICA9IHN1YnN0aXR1dGUoYTpjaG9pY2UsbWlwZiwnXDMnLCIiKQogICAgbGV0IGI6bmV0cndfZm5hbWUgICA9IHN1YnN0aXR1dGUoYTpjaG9pY2UsbWlwZiwnXDQnLCIiKQogCi0gICIgSXNzdWUgYW4gZnRwOiAiaG9zdG5hbWUgW3BhdGgvXWZpbGVuYW1lIgorICAiIE1ldGhvZCMzOiBJc3N1ZSBhbiBmdHA6ICJob3N0bmFtZSBbcGF0aC9dZmlsZW5hbWUiIHt7ezMKICAgZWxzZWlmIG1hdGNoKGE6Y2hvaWNlLG1mKSA9PSAwCiAiICAgY2FsbCBEZWNobygiKGZ0cCkgaG9zdCBmaWxlIikKICAgIGlmIGV4aXN0cygiZzpuZXRyd191aWQiKSAmJiBleGlzdHMoInM6bmV0cndfcGFzc3dkIikKQEAgLTE2MjQsMTQgKzE2ODksMTQgQEAKICAgICBsZXQgYjpuZXRyd19mbmFtZSAgID0gc3Vic3RpdHV0ZShhOmNob2ljZSxtZiwnXDInLCIiKQogICAgZW5kaWYKIAotICAiIHNmdHA6Ly91c2VyQGhvc3RuYW1lLy4uLnBhdGgtdG8tZmlsZQorICAiIE1ldGhvZCM5OiBzZnRwOi8vdXNlckBob3N0bmFtZS8uLi5wYXRoLXRvLWZpbGUge3t7MwogICBlbHNlaWYgbWF0Y2goYTpjaG9pY2Usc2Z0cHVybSkgPT0gMAogIiAgIGNhbGwgRGVjaG8oInNmdHA6Ly8uLi4iKQogICAgbGV0IGI6bmV0cndfbWV0aG9kID0gOQogICAgbGV0IGc6bmV0cndfbWFjaGluZT0gc3Vic3RpdHV0ZShhOmNob2ljZSxzZnRwdXJtLCdcMScsIiIpCiAgICBsZXQgYjpuZXRyd19mbmFtZSAgPSBzdWJzdGl0dXRlKGE6Y2hvaWNlLHNmdHB1cm0sJ1wyJywiIikKIAotICAiIElzc3VlIGFuIHJjcDogaG9zdG5hbWU6ZmlsZW5hbWUiICAodGhpcyBvbmUgc2hvdWxkIGJlIGxhc3QpCisgICIgTWV0aG9kIzE6IElzc3VlIGFuIHJjcDogaG9zdG5hbWU6ZmlsZW5hbWUiICAodGhpcyBvbmUgc2hvdWxkIGJlIGxhc3QpIHt7ezMKICAgZWxzZWlmIG1hdGNoKGE6Y2hvaWNlLHJjcGhmKSA9PSAwCiAiICAgY2FsbCBEZWNobygiKHJjcCkgW3VzZXJAXWhvc3Q6ZmlsZSkgcmNwaGY8Ii5yY3BoZi4iPiIpCiAgICBsZXQgYjpuZXRyd19tZXRob2QgID0gMQpAQCAtMTY0NiwxNiArMTcxMSwyMSBAQAogICAgIGxldCBnOm5ldHJ3X3VpZD0gdXNlcmlkCiAgICBlbmRpZgogCisgICIgQ2Fubm90IERldGVybWluZSBNZXRob2Qge3t7MwogICBlbHNlCiAgICBpZiAhZXhpc3RzKCJnOm5ldHJ3X3F1aWV0IikKICAgICBjYWxsIG5ldHJ3I0Vycm9yTXNnKHM6V0FSTklORywiY2Fubm90IGRldGVybWluZSBtZXRob2QgKGZvcm1hdDogcHJvdG9jb2w6Ly9bdXNlckBdaG9zdG5hbWVbOnBvcnRdL1twYXRoXSkiLDQ1KQogICAgZW5kaWYKICAgIGxldCBiOm5ldHJ3X21ldGhvZCAgPSAtMQogICBlbmRpZgorICAifX19MwogCi0gICIgcmVtb3ZlIGFueSBsZWFkaW5nIFs6I10gZnJvbSBwb3J0IG51bWJlcgogICBpZiBnOm5ldHJ3X3BvcnQgIT0gIiIKLSAgICBsZXQgZzpuZXRyd19wb3J0ID0gc3Vic3RpdHV0ZShnOm5ldHJ3X3BvcnQsJ1sjOl1cKycsJycsJycpCisgICAiIHJlbW92ZSBhbnkgbGVhZGluZyBbOiNdIGZyb20gcG9ydCBudW1iZXIKKyAgIGxldCBnOm5ldHJ3X3BvcnQgPSBzdWJzdGl0dXRlKGc6bmV0cndfcG9ydCwnWyM6XVwrJywnJywnJykKKyAgZWxzZWlmIGV4aXN0cygibmV0cndfcG9ydCIpCisgICAiIHJldGFpbiBwb3J0IG51bWJlciBhcyBpbXBsaWNpdCBmb3Igc3Vic2VxdWVudCBmdHAgb3BlcmF0aW9ucworICAgbGV0IGc6bmV0cndfcG9ydD0gbmV0cndfcG9ydAogICBlbmRpZgogCiAiICBjYWxsIERlY2hvKCJhOmNob2ljZSAgICAgICA8Ii5hOmNob2ljZS4iPiIpCkBAIC0xNjY5LDcgKzE3MzksNyBAQAogIiAgIGNhbGwgRGVjaG8oInM6bmV0cndfcGFzc3dkIDwiLnM6bmV0cndfcGFzc3dkLiI+IikKICIgIGVuZGlmCQkJCQkiRGVjaG8KICIgIGNhbGwgRGVjaG8oImI6bmV0cndfZm5hbWUgIDwiLmI6bmV0cndfZm5hbWUuIj4iKQotIiAgY2FsbCBEcmV0KCJOZXRyd01ldGhvZCA6IGI6bmV0cndfbWV0aG9kPSIuYjpuZXRyd19tZXRob2QpCisiICBjYWxsIERyZXQoIk5ldHJ3TWV0aG9kIDogYjpuZXRyd19tZXRob2Q9Ii5iOm5ldHJ3X21ldGhvZC4iIGc6bmV0cndfcG9ydD0iLmc6bmV0cndfcG9ydCkKIGVuZGZ1bgogCiAiIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpAQCAtMTc0MCw1OSArMTgxMCwyNSBAQAogIiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAKICIgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0iIHM6QnJvd3Nlck1hcHM6IHt7ezIKLWZ1biEgczpCcm93c2VyTWFwcyhpc2xvY2FsKQotIiAgY2FsbCBEZnVuYygiczpCcm93c2VyTWFwcyhpc2xvY2FsPSIuYTppc2xvY2FsLiIpIGI6bmV0cndfY3VyZGlyPCIuYjpuZXRyd19jdXJkaXIuIj4iKQorIiBzOk5ldHJ3TWFwczoge3t7MgorZnVuISBzOk5ldHJ3TWFwcyhpc2xvY2FsKQorIiAgY2FsbCBEZnVuYygiczpOZXRyd01hcHMoaXNsb2NhbD0iLmE6aXNsb2NhbC4iKSBiOm5ldHJ3X2N1cmRpcjwiLmI6bmV0cndfY3VyZGlyLiI+IikKICAgaWYgYTppc2xvY2FsCiAiICAgY2FsbCBEZWNobygibWFrZSBsb2NhbCBtYXBzIikKLSAgIG5ub3JlbWFwIDxidWZmZXI+IDxzaWxlbnQ+IDxjcj4JOmNhbGwgbmV0cncjTG9jYWxCcm93c2VDaGVjayg8U0lEPk5ldHJ3QnJvd3NlQ2hnRGlyKDEsPFNJRD5OZXRyd0dldFdvcmQoKSkpPGNyPgotICAgbm5vcmVtYXAgPGJ1ZmZlcj4gPHNpbGVudD4gLQkJOmV4ZSAibm9ybSEgMCI8YmFyPmNhbGwgbmV0cncjTG9jYWxCcm93c2VDaGVjayg8U0lEPk5ldHJ3QnJvd3NlQ2hnRGlyKDEsJy4uLycpKTxjcj4KLSAgIG5ub3JlbWFwIDxidWZmZXI+IDxzaWxlbnQ+IGEJCTpjYWxsIDxTSUQ+TmV0cndIaWRlKDEpPGNyPgotICAgbm5vcmVtYXAgPGJ1ZmZlcj4gPHNpbGVudD4gbWIJOjxjLXU+Y2FsbCA8U0lEPk5ldHJ3Qm9va0hpc3RIYW5kbGVyKDAsYjpuZXRyd19jdXJkaXIpPGNyPgotICAgbm5vcmVtYXAgPGJ1ZmZlcj4gPHNpbGVudD4gbWMJOjxjLXU+Y2FsbCA8U0lEPk5ldHJ3TWFya0ZpbGVDb3B5KDEpPGNyPgotICAgbm5vcmVtYXAgPGJ1ZmZlcj4gPHNpbGVudD4gbWQJOjxjLXU+Y2FsbCA8U0lEPk5ldHJ3TWFya0ZpbGVEaWZmKDEpPGNyPgotICAgbm5vcmVtYXAgPGJ1ZmZlcj4gPHNpbGVudD4gbWUJOjxjLXU+Y2FsbCA8U0lEPk5ldHJ3TWFya0ZpbGVFZGl0KDEpPGNyPgotICAgbm5vcmVtYXAgPGJ1ZmZlcj4gPHNpbGVudD4gbWYJOjxjLXU+Y2FsbCA8U0lEPk5ldHJ3TWFya0ZpbGUoMSw8U0lEPk5ldHJ3R2V0V29yZCgpKTxjcj4KLSAgIG5ub3JlbWFwIDxidWZmZXI+IDxzaWxlbnQ+IG1nCTo8Yy11PmNhbGwgPFNJRD5OZXRyd01hcmtGaWxlR3JlcCgxKTxjcj4KLSAgIG5ub3JlbWFwIDxidWZmZXI+IDxzaWxlbnQ+IG1oCTo8Yy11PmNhbGwgPFNJRD5OZXRyd01hcmtIaWRlU2Z4KDEpPGNyPgotICAgbm5vcmVtYXAgPGJ1ZmZlcj4gPHNpbGVudD4gbW0JOjxjLXU+Y2FsbCA8U0lEPk5ldHJ3TWFya0ZpbGVNb3ZlKDEpPGNyPgotICAgbm5vcmVtYXAgPGJ1ZmZlcj4gPHNpbGVudD4gbXAJOjxjLXU+Y2FsbCA8U0lEPk5ldHJ3TWFya0ZpbGVQcmludCgxKTxjcj4KLSAgIG5ub3JlbWFwIDxidWZmZXI+IDxzaWxlbnQ+IG1yCTo8Yy11PmNhbGwgPFNJRD5OZXRyd01hcmtGaWxlUmVnZXhwKDEpPGNyPgotICAgbm5vcmVtYXAgPGJ1ZmZlcj4gPHNpbGVudD4gbXMJOjxjLXU+Y2FsbCA8U0lEPk5ldHJ3TWFya0ZpbGVTb3VyY2UoMSk8Y3I+Ci0gICBubm9yZW1hcCA8YnVmZmVyPiA8c2lsZW50PiBtVAk6PGMtdT5jYWxsIDxTSUQ+TmV0cndNYXJrRmlsZVRhZygxKTxjcj4KLSAgIG5ub3JlbWFwIDxidWZmZXI+IDxzaWxlbnQ+IG10CTo8Yy11PmNhbGwgPFNJRD5OZXRyd01hcmtGaWxlVGd0KDEpPGNyPgotICAgbm5vcmVtYXAgPGJ1ZmZlcj4gPHNpbGVudD4gbXUJOjxjLXU+Y2FsbCA8U0lEPk5ldHJ3VW5NYXJrRmlsZSgxKTxjcj4KLSAgIG5ub3JlbWFwIDxidWZmZXI+IDxzaWxlbnQ+IG14CTo8Yy11PmNhbGwgPFNJRD5OZXRyd01hcmtGaWxlRXhlKDEpPGNyPgotICAgbm5vcmVtYXAgPGJ1ZmZlcj4gPHNpbGVudD4gbXoJOjxjLXU+Y2FsbCA8U0lEPk5ldHJ3TWFya0ZpbGVDb21wcmVzcygxKTxjcj4KLSAgIG5ub3JlbWFwIDxidWZmZXI+IDxzaWxlbnQ+IGdiCTo8Yy11PmNhbGwgPFNJRD5OZXRyd0Jvb2tIaXN0SGFuZGxlcigxLGI6bmV0cndfY3VyZGlyKTxjcj4KLSAgIG5ub3JlbWFwIDxidWZmZXI+IDxzaWxlbnQ+IGdoCTo8Yy11PmNhbGwgPFNJRD5OZXRyd0hpZGRlbigxKTxjcj4KLSAgIG5ub3JlbWFwIDxidWZmZXI+IDxzaWxlbnQ+IGdwCTo8Yy11PmNhbGwgPFNJRD5OZXRyd0NoZ1Blcm0oMSxiOm5ldHJ3X2N1cmRpcik8Y3I+Ci0gICBubm9yZW1hcCA8YnVmZmVyPiA8c2lsZW50PiBjCQk6ZXhlICJrZWVwanVtcHMgbGNkICIuZm5hbWVlc2NhcGUoYjpuZXRyd19jdXJkaXIpPGNyPgotICAgbm5vcmVtYXAgPGJ1ZmZlcj4gPHNpbGVudD4gQwkJOmxldCBnOm5ldHJ3X2NoZ3dpbj0gd2lubnIoKTxjcj4KLSAgIG5ub3JlbWFwIDxidWZmZXI+IDxzaWxlbnQ+IGQJCTpjYWxsIDxTSUQ+TmV0cndNYWtlRGlyKCIiKTxjcj4KLSAgIG5ub3JlbWFwIDxidWZmZXI+IDxzaWxlbnQ+IGkJCTpjYWxsIDxTSUQ+TmV0cndMaXN0U3R5bGUoMSk8Y3I+Ci0gICBubm9yZW1hcCA8YnVmZmVyPiA8c2lsZW50PiBJCQk6Y2FsbCA8U0lEPk5ldHJ3QmFubmVyQ3RybCgxKTxjcj4KLSAgIG5ub3JlbWFwIDxidWZmZXI+IDxzaWxlbnQ+IG8JCTpjYWxsIDxTSUQ+TmV0cndTcGxpdCgzKTxjcj4KLSAgIG5ub3JlbWFwIDxidWZmZXI+IDxzaWxlbnQ+IE8JCTpjYWxsIDxTSUQ+TmV0cndPYnRhaW4oMSk8Y3I+Ci0gICBubm9yZW1hcCA8YnVmZmVyPiA8c2lsZW50PiBwCQk6Y2FsbCA8U0lEPk5ldHJ3UHJldmlldyg8U0lEPk5ldHJ3QnJvd3NlQ2hnRGlyKDEsPFNJRD5OZXRyd0dldFdvcmQoKSwxKSk8Y3I+Ci0gICBubm9yZW1hcCA8YnVmZmVyPiA8c2lsZW50PiBQCQk6Y2FsbCA8U0lEPk5ldHJ3UHJldldpbk9wZW4oMSk8Y3I+Ci0gICBubm9yZW1hcCA8YnVmZmVyPiA8c2lsZW50PiBxYgk6PGMtdT5jYWxsIDxTSUQ+TmV0cndCb29rSGlzdEhhbmRsZXIoMixiOm5ldHJ3X2N1cmRpcik8Y3I+Ci0gICBubm9yZW1hcCA8YnVmZmVyPiA8c2lsZW50PiBtQgk6PGMtdT5jYWxsIDxTSUQ+TmV0cndCb29rSGlzdEhhbmRsZXIoNixiOm5ldHJ3X2N1cmRpcik8Y3I+Ci0gICBubm9yZW1hcCA8YnVmZmVyPiA8c2lsZW50PiBxZgk6PGMtdT5jYWxsIDxTSUQ+TmV0cndGaWxlSW5mbygxLDxTSUQ+TmV0cndHZXRXb3JkKCkpPGNyPgotICAgbm5vcmVtYXAgPGJ1ZmZlcj4gPHNpbGVudD4gcgkJOmxldCBnOm5ldHJ3X3NvcnRfZGlyZWN0aW9uPSAoZzpuZXRyd19zb3J0X2RpcmVjdGlvbiA9fiAnbicpPyAncicgOiAnbic8YmFyPmV4ZSAibm9ybSEgMCI8YmFyPmNhbGwgPFNJRD5OZXRyd1JlZnJlc2goMSw8U0lEPk5ldHJ3QnJvd3NlQ2hnRGlyKDEsJy4vJykpPGNyPgotICAgbm5vcmVtYXAgPGJ1ZmZlcj4gPHNpbGVudD4gcwkJOmNhbGwgPFNJRD5OZXRyd1NvcnRTdHlsZSgxKTxjcj4KLSAgIG5ub3JlbWFwIDxidWZmZXI+IDxzaWxlbnQ+IFMJCTpjYWxsIDxTSUQ+TmV0U29ydFNlcXVlbmNlKDEpPGNyPgotICAgbm5vcmVtYXAgPGJ1ZmZlcj4gPHNpbGVudD4gdAkJOmNhbGwgPFNJRD5OZXRyd1NwbGl0KDQpPGNyPgotICAgbm5vcmVtYXAgPGJ1ZmZlcj4gPHNpbGVudD4gVAkJOmNhbGwgPFNJRD5OZXRyd1NwbGl0KDQpPGJhcj5ub3JtISBnVDxjcj4KLSAgIG5ub3JlbWFwIDxidWZmZXI+IDxzaWxlbnQ+IHUJCTo8Yy11PmNhbGwgPFNJRD5OZXRyd0Jvb2tIaXN0SGFuZGxlcig0LGV4cGFuZCgiJSIpKTxjcj4KLSAgIG5ub3JlbWFwIDxidWZmZXI+IDxzaWxlbnQ+IFUJCTo8Yy11PmNhbGwgPFNJRD5OZXRyd0Jvb2tIaXN0SGFuZGxlcig1LGV4cGFuZCgiJSIpKTxjcj4KLSAgIG5ub3JlbWFwIDxidWZmZXI+IDxzaWxlbnQ+IHYJCTpjYWxsIDxTSUQ+TmV0cndTcGxpdCg1KTxjcj4KLSAgIG5ub3JlbWFwIDxidWZmZXI+IDxzaWxlbnQ+IHgJCTpjYWxsIG5ldHJ3I05ldHJ3QnJvd3NlWCg8U0lEPk5ldHJ3QnJvd3NlQ2hnRGlyKDEsPFNJRD5OZXRyd0dldFdvcmQoKSwwKSwwKSI8Y3I+Ci0gICBubm9yZW1hcCA8YnVmZmVyPiA8c2lsZW50PiAlCQk6Y2FsbCA8U0lEPk5ldHJ3T3BlbkZpbGUoMSk8Y3I+Ci0gICBpbm9yZW1hcCA8YnVmZmVyPiA8c2lsZW50PiA8Y3I+CTxjLW8+OmNhbGwgbmV0cncjTG9jYWxCcm93c2VDaGVjayg8U0lEPk5ldHJ3QnJvd3NlQ2hnRGlyKDEsPFNJRD5OZXRyd0dldFdvcmQoKSkpPGNyPgotICAgaW5vcmVtYXAgPGJ1ZmZlcj4gPHNpbGVudD4gLQkJPGMtbz46ZXhlICJub3JtISAwIjxiYXI+Y2FsbCBuZXRydyNMb2NhbEJyb3dzZUNoZWNrKDxTSUQ+TmV0cndCcm93c2VDaGdEaXIoMSwnLi4vJykpPGNyPgogICAgaW5vcmVtYXAgPGJ1ZmZlcj4gPHNpbGVudD4gYQkJPGMtbz46Y2FsbCA8U0lEPk5ldHJ3SGlkZSgxKTxjcj4KKyAgIGlub3JlbWFwIDxidWZmZXI+IDxzaWxlbnQ+IGMJCTxjLW8+OmV4ZSAia2VlcGp1bXBzIGxjZCAiLmZuYW1lZXNjYXBlKGI6bmV0cndfY3VyZGlyKTxjcj4KKyAgIGlub3JlbWFwIDxidWZmZXI+IDxzaWxlbnQ+IEMJCTxjLW8+OmxldCBnOm5ldHJ3X2NoZ3dpbj0gd2lubnIoKTxjcj4KKyAgIGlub3JlbWFwIDxidWZmZXI+IDxzaWxlbnQ+ICUJCTxjLW8+OmNhbGwgPFNJRD5OZXRyd09wZW5GaWxlKDEpPGNyPgorICAgaW5vcmVtYXAgPGJ1ZmZlcj4gPHNpbGVudD4gLQkJPGMtbz46ZXhlICJub3JtISAwIjxiYXI+Y2FsbCBuZXRydyNMb2NhbEJyb3dzZUNoZWNrKDxTSUQ+TmV0cndCcm93c2VDaGdEaXIoMSwnLi4vJykpPGNyPgorICAgaW5vcmVtYXAgPGJ1ZmZlcj4gPHNpbGVudD4gPGNyPgk8Yy1vPjpjYWxsIG5ldHJ3I0xvY2FsQnJvd3NlQ2hlY2soPFNJRD5OZXRyd0Jyb3dzZUNoZ0RpcigxLDxTSUQ+TmV0cndHZXRXb3JkKCkpKTxjcj4KKyAgIGlub3JlbWFwIDxidWZmZXI+IDxzaWxlbnQ+IGQJCTxjLW8+OmNhbGwgPFNJRD5OZXRyd01ha2VEaXIoIiIpPGNyPgorICAgaW5vcmVtYXAgPGJ1ZmZlcj4gPHNpbGVudD4gZ2IJPGMtbz46PGMtdT5jYWxsIDxTSUQ+TmV0cndCb29rSGlzdEhhbmRsZXIoMSxiOm5ldHJ3X2N1cmRpcik8Y3I+CisgICBpbm9yZW1hcCA8YnVmZmVyPiA8c2lsZW50PiBnaAk8Yy1vPjo8Yy11PmNhbGwgPFNJRD5OZXRyd0hpZGRlbigxKTxjcj4KKyAgIGlub3JlbWFwIDxidWZmZXI+IDxzaWxlbnQ+IGdwCTxjLW8+OjxjLXU+Y2FsbCA8U0lEPk5ldHJ3Q2hnUGVybSgxLGI6bmV0cndfY3VyZGlyKTxjcj4KKyAgIGlub3JlbWFwIDxidWZmZXI+IDxzaWxlbnQ+IEkJCTxjLW8+OmNhbGwgPFNJRD5OZXRyd0Jhbm5lckN0cmwoMSk8Y3I+CisgICBpbm9yZW1hcCA8YnVmZmVyPiA8c2lsZW50PiBpCQk8Yy1vPjpjYWxsIDxTSUQ+TmV0cndMaXN0U3R5bGUoMSk8Y3I+CiAgICBpbm9yZW1hcCA8YnVmZmVyPiA8c2lsZW50PiBtYgk8Yy1vPjo8Yy11PmNhbGwgPFNJRD5OZXRyd0Jvb2tIaXN0SGFuZGxlcigwLGI6bmV0cndfY3VyZGlyKTxjcj4KKyAgIGlub3JlbWFwIDxidWZmZXI+IDxzaWxlbnQ+IG1CCTxjLW8+OjxjLXU+Y2FsbCA8U0lEPk5ldHJ3Qm9va0hpc3RIYW5kbGVyKDYsYjpuZXRyd19jdXJkaXIpPGNyPgogICAgaW5vcmVtYXAgPGJ1ZmZlcj4gPHNpbGVudD4gbWMJPGMtbz46PGMtdT5jYWxsIDxTSUQ+TmV0cndNYXJrRmlsZUNvcHkoMSk8Y3I+CiAgICBpbm9yZW1hcCA8YnVmZmVyPiA8c2lsZW50PiBtZAk8Yy1vPjo8Yy11PmNhbGwgPFNJRD5OZXRyd01hcmtGaWxlRGlmZigxKTxjcj4KICAgIGlub3JlbWFwIDxidWZmZXI+IDxzaWxlbnQ+IG1lCTxjLW8+OjxjLXU+Y2FsbCA8U0lEPk5ldHJ3TWFya0ZpbGVFZGl0KDEpPGNyPgpAQCAtMTgwOCwzMSArMTg0NCw2NyBAQAogICAgaW5vcmVtYXAgPGJ1ZmZlcj4gPHNpbGVudD4gbXUJPGMtbz46PGMtdT5jYWxsIDxTSUQ+TmV0cndVbk1hcmtGaWxlKDEpPGNyPgogICAgaW5vcmVtYXAgPGJ1ZmZlcj4gPHNpbGVudD4gbXgJPGMtbz46PGMtdT5jYWxsIDxTSUQ+TmV0cndNYXJrRmlsZUV4ZSgxKTxjcj4KICAgIGlub3JlbWFwIDxidWZmZXI+IDxzaWxlbnQ+IG16CTxjLW8+OjxjLXU+Y2FsbCA8U0lEPk5ldHJ3TWFya0ZpbGVDb21wcmVzcygxKTxjcj4KLSAgIGlub3JlbWFwIDxidWZmZXI+IDxzaWxlbnQ+IGdiCTxjLW8+OjxjLXU+Y2FsbCA8U0lEPk5ldHJ3Qm9va0hpc3RIYW5kbGVyKDEsYjpuZXRyd19jdXJkaXIpPGNyPgotICAgaW5vcmVtYXAgPGJ1ZmZlcj4gPHNpbGVudD4gZ2gJPGMtbz46PGMtdT5jYWxsIDxTSUQ+TmV0cndIaWRkZW4oMSk8Y3I+Ci0gICBpbm9yZW1hcCA8YnVmZmVyPiA8c2lsZW50PiBncAk8Yy1vPjo8Yy11PmNhbGwgPFNJRD5OZXRyd0NoZ1Blcm0oMSxiOm5ldHJ3X2N1cmRpcik8Y3I+Ci0gICBpbm9yZW1hcCA8YnVmZmVyPiA8c2lsZW50PiBjCQk8Yy1vPjpleGUgImtlZXBqdW1wcyBsY2QgIi5mbmFtZWVzY2FwZShiOm5ldHJ3X2N1cmRpcik8Y3I+Ci0gICBpbm9yZW1hcCA8YnVmZmVyPiA8c2lsZW50PiBDCQk8Yy1vPjpsZXQgZzpuZXRyd19jaGd3aW49IHdpbm5yKCk8Y3I+Ci0gICBpbm9yZW1hcCA8YnVmZmVyPiA8c2lsZW50PiBkCQk8Yy1vPjpjYWxsIDxTSUQ+TmV0cndNYWtlRGlyKCIiKTxjcj4KLSAgIGlub3JlbWFwIDxidWZmZXI+IDxzaWxlbnQ+IGkJCTxjLW8+OmNhbGwgPFNJRD5OZXRyd0xpc3RTdHlsZSgxKTxjcj4KLSAgIGlub3JlbWFwIDxidWZmZXI+IDxzaWxlbnQ+IEkJCTxjLW8+OmNhbGwgPFNJRD5OZXRyd0Jhbm5lckN0cmwoMSk8Y3I+Ci0gICBpbm9yZW1hcCA8YnVmZmVyPiA8c2lsZW50PiBvCQk8Yy1vPjpjYWxsIDxTSUQ+TmV0cndTcGxpdCgzKTxjcj4KICAgIGlub3JlbWFwIDxidWZmZXI+IDxzaWxlbnQ+IE8JCTxjLW8+OmNhbGwgPFNJRD5OZXRyd09idGFpbigxKTxjcj4KKyAgIGlub3JlbWFwIDxidWZmZXI+IDxzaWxlbnQ+IG8JCTxjLW8+OmNhbGwgPFNJRD5OZXRyd1NwbGl0KDMpPGNyPgogICAgaW5vcmVtYXAgPGJ1ZmZlcj4gPHNpbGVudD4gcAkJPGMtbz46Y2FsbCA8U0lEPk5ldHJ3UHJldmlldyg8U0lEPk5ldHJ3QnJvd3NlQ2hnRGlyKDEsPFNJRD5OZXRyd0dldFdvcmQoKSwxKSk8Y3I+CiAgICBpbm9yZW1hcCA8YnVmZmVyPiA8c2lsZW50PiBQCQk8Yy1vPjpjYWxsIDxTSUQ+TmV0cndQcmV2V2luT3BlbigxKTxjcj4KICAgIGlub3JlbWFwIDxidWZmZXI+IDxzaWxlbnQ+IHFiCTxjLW8+OjxjLXU+Y2FsbCA8U0lEPk5ldHJ3Qm9va0hpc3RIYW5kbGVyKDIsYjpuZXRyd19jdXJkaXIpPGNyPgotICAgaW5vcmVtYXAgPGJ1ZmZlcj4gPHNpbGVudD4gbUIJPGMtbz46PGMtdT5jYWxsIDxTSUQ+TmV0cndCb29rSGlzdEhhbmRsZXIoNixiOm5ldHJ3X2N1cmRpcik8Y3I+CiAgICBpbm9yZW1hcCA8YnVmZmVyPiA8c2lsZW50PiBxZgk8Yy1vPjo8Yy11PmNhbGwgPFNJRD5OZXRyd0ZpbGVJbmZvKDEsPFNJRD5OZXRyd0dldFdvcmQoKSk8Y3I+CiAgICBpbm9yZW1hcCA8YnVmZmVyPiA8c2lsZW50PiByCQk8Yy1vPjpsZXQgZzpuZXRyd19zb3J0X2RpcmVjdGlvbj0gKGc6bmV0cndfc29ydF9kaXJlY3Rpb24gPX4gJ24nKT8gJ3InIDogJ24nPGJhcj5leGUgIm5vcm0hIDAiPGJhcj5jYWxsIDxTSUQ+TmV0cndSZWZyZXNoKDEsPFNJRD5OZXRyd0Jyb3dzZUNoZ0RpcigxLCcuLycpKTxjcj4KICAgIGlub3JlbWFwIDxidWZmZXI+IDxzaWxlbnQ+IHMJCTxjLW8+OmNhbGwgPFNJRD5OZXRyd1NvcnRTdHlsZSgxKTxjcj4KICAgIGlub3JlbWFwIDxidWZmZXI+IDxzaWxlbnQ+IFMJCTxjLW8+OmNhbGwgPFNJRD5OZXRTb3J0U2VxdWVuY2UoMSk8Y3I+Ci0gICBpbm9yZW1hcCA8YnVmZmVyPiA8c2lsZW50PiB0CQk8Yy1vPjpjYWxsIDxTSUQ+TmV0cndTcGxpdCg0KTxjcj4KICAgIGlub3JlbWFwIDxidWZmZXI+IDxzaWxlbnQ+IFQJCTxjLW8+OmNhbGwgPFNJRD5OZXRyd1NwbGl0KDQpPGJhcj5ub3JtISBnVDxjcj4KKyAgIGlub3JlbWFwIDxidWZmZXI+IDxzaWxlbnQ+IHQJCTxjLW8+OmNhbGwgPFNJRD5OZXRyd1NwbGl0KDQpPGNyPgogICAgaW5vcmVtYXAgPGJ1ZmZlcj4gPHNpbGVudD4gdQkJPGMtbz46PGMtdT5jYWxsIDxTSUQ+TmV0cndCb29rSGlzdEhhbmRsZXIoNCxleHBhbmQoIiUiKSk8Y3I+CiAgICBpbm9yZW1hcCA8YnVmZmVyPiA8c2lsZW50PiBVCQk8Yy1vPjo8Yy11PmNhbGwgPFNJRD5OZXRyd0Jvb2tIaXN0SGFuZGxlcig1LGV4cGFuZCgiJSIpKTxjcj4KICAgIGlub3JlbWFwIDxidWZmZXI+IDxzaWxlbnQ+IHYJCTxjLW8+OmNhbGwgPFNJRD5OZXRyd1NwbGl0KDUpPGNyPgogICAgaW5vcmVtYXAgPGJ1ZmZlcj4gPHNpbGVudD4geAkJPGMtbz46Y2FsbCBuZXRydyNOZXRyd0Jyb3dzZVgoPFNJRD5OZXRyd0Jyb3dzZUNoZ0RpcigxLDxTSUQ+TmV0cndHZXRXb3JkKCksMCksMCkiPGNyPgotICAgaW5vcmVtYXAgPGJ1ZmZlcj4gPHNpbGVudD4gJQkJPGMtbz46Y2FsbCA8U0lEPk5ldHJ3T3BlbkZpbGUoMSk8Y3I+CisgICBubm9yZW1hcCA8YnVmZmVyPiA8c2lsZW50PiBhCQk6Y2FsbCA8U0lEPk5ldHJ3SGlkZSgxKTxjcj4KKyAgIG5ub3JlbWFwIDxidWZmZXI+IDxzaWxlbnQ+ICUJCTpjYWxsIDxTSUQ+TmV0cndPcGVuRmlsZSgxKTxjcj4KKyAgIG5ub3JlbWFwIDxidWZmZXI+IDxzaWxlbnQ+IGMJCTpleGUgImtlZXBqdW1wcyBsY2QgIi5mbmFtZWVzY2FwZShiOm5ldHJ3X2N1cmRpcik8Y3I+CisgICBubm9yZW1hcCA8YnVmZmVyPiA8c2lsZW50PiBDCQk6bGV0IGc6bmV0cndfY2hnd2luPSB3aW5ucigpPGNyPgorICAgbm5vcmVtYXAgPGJ1ZmZlcj4gPHNpbGVudD4gPGNyPgk6Y2FsbCBuZXRydyNMb2NhbEJyb3dzZUNoZWNrKDxTSUQ+TmV0cndCcm93c2VDaGdEaXIoMSw8U0lEPk5ldHJ3R2V0V29yZCgpKSk8Y3I+CisgICBubm9yZW1hcCA8YnVmZmVyPiA8c2lsZW50PiBkCQk6Y2FsbCA8U0lEPk5ldHJ3TWFrZURpcigiIik8Y3I+CisgICBubm9yZW1hcCA8YnVmZmVyPiA8c2lsZW50PiAtCQk6ZXhlICJub3JtISAwIjxiYXI+Y2FsbCBuZXRydyNMb2NhbEJyb3dzZUNoZWNrKDxTSUQ+TmV0cndCcm93c2VDaGdEaXIoMSwnLi4vJykpPGNyPgorICAgbm5vcmVtYXAgPGJ1ZmZlcj4gPHNpbGVudD4gZ2IJOjxjLXU+Y2FsbCA8U0lEPk5ldHJ3Qm9va0hpc3RIYW5kbGVyKDEsYjpuZXRyd19jdXJkaXIpPGNyPgorICAgbm5vcmVtYXAgPGJ1ZmZlcj4gPHNpbGVudD4gZ2QJOjxjLXU+Y2FsbCA8U0lEPk5ldHJ3Rm9yY2VDaGdEaXIoMSw8U0lEPk5ldHJ3R2V0V29yZCgpKTxjcj4KKyAgIG5ub3JlbWFwIDxidWZmZXI+IDxzaWxlbnQ+IGdmCTo8Yy11PmNhbGwgPFNJRD5OZXRyd0ZvcmNlRmlsZSgxLDxTSUQ+TmV0cndHZXRXb3JkKCkpPGNyPgorICAgbm5vcmVtYXAgPGJ1ZmZlcj4gPHNpbGVudD4gZ2gJOjxjLXU+Y2FsbCA8U0lEPk5ldHJ3SGlkZGVuKDEpPGNyPgorICAgbm5vcmVtYXAgPGJ1ZmZlcj4gPHNpbGVudD4gZ3AJOjxjLXU+Y2FsbCA8U0lEPk5ldHJ3Q2hnUGVybSgxLGI6bmV0cndfY3VyZGlyKTxjcj4KKyAgIG5ub3JlbWFwIDxidWZmZXI+IDxzaWxlbnQ+IEkJCTpjYWxsIDxTSUQ+TmV0cndCYW5uZXJDdHJsKDEpPGNyPgorICAgbm5vcmVtYXAgPGJ1ZmZlcj4gPHNpbGVudD4gaQkJOmNhbGwgPFNJRD5OZXRyd0xpc3RTdHlsZSgxKTxjcj4KKyAgIG5ub3JlbWFwIDxidWZmZXI+IDxzaWxlbnQ+IG1iCTo8Yy11PmNhbGwgPFNJRD5OZXRyd0Jvb2tIaXN0SGFuZGxlcigwLGI6bmV0cndfY3VyZGlyKTxjcj4KKyAgIG5ub3JlbWFwIDxidWZmZXI+IDxzaWxlbnQ+IG1CCTo8Yy11PmNhbGwgPFNJRD5OZXRyd0Jvb2tIaXN0SGFuZGxlcig2LGI6bmV0cndfY3VyZGlyKTxjcj4KKyAgIG5ub3JlbWFwIDxidWZmZXI+IDxzaWxlbnQ+IG1jCTo8Yy11PmNhbGwgPFNJRD5OZXRyd01hcmtGaWxlQ29weSgxKTxjcj4KKyAgIG5ub3JlbWFwIDxidWZmZXI+IDxzaWxlbnQ+IG1kCTo8Yy11PmNhbGwgPFNJRD5OZXRyd01hcmtGaWxlRGlmZigxKTxjcj4KKyAgIG5ub3JlbWFwIDxidWZmZXI+IDxzaWxlbnQ+IG1lCTo8Yy11PmNhbGwgPFNJRD5OZXRyd01hcmtGaWxlRWRpdCgxKTxjcj4KKyAgIG5ub3JlbWFwIDxidWZmZXI+IDxzaWxlbnQ+IG1mCTo8Yy11PmNhbGwgPFNJRD5OZXRyd01hcmtGaWxlKDEsPFNJRD5OZXRyd0dldFdvcmQoKSk8Y3I+CisgICBubm9yZW1hcCA8YnVmZmVyPiA8c2lsZW50PiBtZwk6PGMtdT5jYWxsIDxTSUQ+TmV0cndNYXJrRmlsZUdyZXAoMSk8Y3I+CisgICBubm9yZW1hcCA8YnVmZmVyPiA8c2lsZW50PiBtaAk6PGMtdT5jYWxsIDxTSUQ+TmV0cndNYXJrSGlkZVNmeCgxKTxjcj4KKyAgIG5ub3JlbWFwIDxidWZmZXI+IDxzaWxlbnQ+IG1tCTo8Yy11PmNhbGwgPFNJRD5OZXRyd01hcmtGaWxlTW92ZSgxKTxjcj4KKyAgIG5ub3JlbWFwIDxidWZmZXI+IDxzaWxlbnQ+IG1wCTo8Yy11PmNhbGwgPFNJRD5OZXRyd01hcmtGaWxlUHJpbnQoMSk8Y3I+CisgICBubm9yZW1hcCA8YnVmZmVyPiA8c2lsZW50PiBtcgk6PGMtdT5jYWxsIDxTSUQ+TmV0cndNYXJrRmlsZVJlZ2V4cCgxKTxjcj4KKyAgIG5ub3JlbWFwIDxidWZmZXI+IDxzaWxlbnQ+IG1zCTo8Yy11PmNhbGwgPFNJRD5OZXRyd01hcmtGaWxlU291cmNlKDEpPGNyPgorICAgbm5vcmVtYXAgPGJ1ZmZlcj4gPHNpbGVudD4gbVQJOjxjLXU+Y2FsbCA8U0lEPk5ldHJ3TWFya0ZpbGVUYWcoMSk8Y3I+CisgICBubm9yZW1hcCA8YnVmZmVyPiA8c2lsZW50PiBtdAk6PGMtdT5jYWxsIDxTSUQ+TmV0cndNYXJrRmlsZVRndCgxKTxjcj4KKyAgIG5ub3JlbWFwIDxidWZmZXI+IDxzaWxlbnQ+IG11CTo8Yy11PmNhbGwgPFNJRD5OZXRyd1VuTWFya0ZpbGUoMSk8Y3I+CisgICBubm9yZW1hcCA8YnVmZmVyPiA8c2lsZW50PiBteAk6PGMtdT5jYWxsIDxTSUQ+TmV0cndNYXJrRmlsZUV4ZSgxKTxjcj4KKyAgIG5ub3JlbWFwIDxidWZmZXI+IDxzaWxlbnQ+IG16CTo8Yy11PmNhbGwgPFNJRD5OZXRyd01hcmtGaWxlQ29tcHJlc3MoMSk8Y3I+CisgICBubm9yZW1hcCA8YnVmZmVyPiA8c2lsZW50PiBPCQk6Y2FsbCA8U0lEPk5ldHJ3T2J0YWluKDEpPGNyPgorICAgbm5vcmVtYXAgPGJ1ZmZlcj4gPHNpbGVudD4gbwkJOmNhbGwgPFNJRD5OZXRyd1NwbGl0KDMpPGNyPgorICAgbm5vcmVtYXAgPGJ1ZmZlcj4gPHNpbGVudD4gcAkJOmNhbGwgPFNJRD5OZXRyd1ByZXZpZXcoPFNJRD5OZXRyd0Jyb3dzZUNoZ0RpcigxLDxTSUQ+TmV0cndHZXRXb3JkKCksMSkpPGNyPgorICAgbm5vcmVtYXAgPGJ1ZmZlcj4gPHNpbGVudD4gUAkJOmNhbGwgPFNJRD5OZXRyd1ByZXZXaW5PcGVuKDEpPGNyPgorICAgbm5vcmVtYXAgPGJ1ZmZlcj4gPHNpbGVudD4gcWIJOjxjLXU+Y2FsbCA8U0lEPk5ldHJ3Qm9va0hpc3RIYW5kbGVyKDIsYjpuZXRyd19jdXJkaXIpPGNyPgorICAgbm5vcmVtYXAgPGJ1ZmZlcj4gPHNpbGVudD4gcWYJOjxjLXU+Y2FsbCA8U0lEPk5ldHJ3RmlsZUluZm8oMSw8U0lEPk5ldHJ3R2V0V29yZCgpKTxjcj4KKyAgIG5ub3JlbWFwIDxidWZmZXI+IDxzaWxlbnQ+IHIJCTpsZXQgZzpuZXRyd19zb3J0X2RpcmVjdGlvbj0gKGc6bmV0cndfc29ydF9kaXJlY3Rpb24gPX4gJ24nKT8gJ3InIDogJ24nPGJhcj5leGUgIm5vcm0hIDAiPGJhcj5jYWxsIDxTSUQ+TmV0cndSZWZyZXNoKDEsPFNJRD5OZXRyd0Jyb3dzZUNoZ0RpcigxLCcuLycpKTxjcj4KKyAgIG5ub3JlbWFwIDxidWZmZXI+IDxzaWxlbnQ+IHMJCTpjYWxsIDxTSUQ+TmV0cndTb3J0U3R5bGUoMSk8Y3I+CisgICBubm9yZW1hcCA8YnVmZmVyPiA8c2lsZW50PiBTCQk6Y2FsbCA8U0lEPk5ldFNvcnRTZXF1ZW5jZSgxKTxjcj4KKyAgIG5ub3JlbWFwIDxidWZmZXI+IDxzaWxlbnQ+IFQJCTpjYWxsIDxTSUQ+TmV0cndTcGxpdCg0KTxiYXI+bm9ybSEgZ1Q8Y3I+CisgICBubm9yZW1hcCA8YnVmZmVyPiA8c2lsZW50PiB0CQk6Y2FsbCA8U0lEPk5ldHJ3U3BsaXQoNCk8Y3I+CisgICBubm9yZW1hcCA8YnVmZmVyPiA8c2lsZW50PiB1CQk6PGMtdT5jYWxsIDxTSUQ+TmV0cndCb29rSGlzdEhhbmRsZXIoNCxleHBhbmQoIiUiKSk8Y3I+CisgICBubm9yZW1hcCA8YnVmZmVyPiA8c2lsZW50PiBVCQk6PGMtdT5jYWxsIDxTSUQ+TmV0cndCb29rSGlzdEhhbmRsZXIoNSxleHBhbmQoIiUiKSk8Y3I+CisgICBubm9yZW1hcCA8YnVmZmVyPiA8c2lsZW50PiB2CQk6Y2FsbCA8U0lEPk5ldHJ3U3BsaXQoNSk8Y3I+CisgICBubm9yZW1hcCA8YnVmZmVyPiA8c2lsZW50PiB4CQk6Y2FsbCBuZXRydyNOZXRyd0Jyb3dzZVgoPFNJRD5OZXRyd0Jyb3dzZUNoZ0RpcigxLDxTSUQ+TmV0cndHZXRXb3JkKCksMCksMCkiPGNyPgogICAgaWYgIWhhc21hcHRvKCc8UGx1Zz5OZXRyd0hpZGVFZGl0JykKICAgICBubWFwIDxidWZmZXI+IDx1bmlxdWU+IDxjLWg+IDxQbHVnPk5ldHJ3SGlkZUVkaXQKICAgICBpbWFwIDxidWZmZXI+IDx1bmlxdWU+IDxjLWg+IDxQbHVnPk5ldHJ3SGlkZUVkaXQKQEAgLTE4NTYsNiArMTkyOCw3IEBACiAgICAgbm5vcmVtYXAgPGJ1ZmZlcj4gPHNpbGVudD4gPGxlZnRtb3VzZT4gICA8bGVmdG1vdXNlPjpjYWxsIDxTSUQ+TmV0cndMZWZ0bW91c2UoMSk8Y3I+CiAgICAgbm5vcmVtYXAgPGJ1ZmZlcj4gPHNpbGVudD4gPG1pZGRsZW1vdXNlPiA8bGVmdG1vdXNlPjpjYWxsIDxTSUQ+TmV0cndQcmV2V2luT3BlbigxKTxjcj4KICAgICBubm9yZW1hcCA8YnVmZmVyPiA8c2lsZW50PiA8cy1sZWZ0bW91c2U+IDxsZWZ0bW91c2U+OmNhbGwgPFNJRD5OZXRyd01hcmtGaWxlKDEsPFNJRD5OZXRyd0dldFdvcmQoKSk8Y3I+CisgICAgbm1hcCAgICAgPGJ1ZmZlcj4gPHNpbGVudD4gPDItbGVmdG1vdXNlPiAtCiAgICAgZXhlICdubm9yZW1hcCA8YnVmZmVyPiA8c2lsZW50PiA8cmlnaHRtb3VzZT4gIDxsZWZ0bW91c2U+OmNhbGwgPFNJRD5OZXRyd0xvY2FsUm0oIicubWFwc2FmZWN1cmRpci4nIik8Y3I+JwogICAgIGV4ZSAndm5vcmVtYXAgPGJ1ZmZlcj4gPHNpbGVudD4gPHJpZ2h0bW91c2U+ICA8bGVmdG1vdXNlPjpjYWxsIDxTSUQ+TmV0cndMb2NhbFJtKCInLm1hcHNhZmVjdXJkaXIuJyIpPGNyPicKICAgICBpbm9yZW1hcCA8YnVmZmVyPiA8c2lsZW50PiA8bGVmdG1vdXNlPiAgIDxjLW8+PGxlZnRtb3VzZT48Yy1vPjpjYWxsIDxTSUQ+TmV0cndMZWZ0bW91c2UoMSk8Y3I+CkBAIC0xOTAwLDYgKzE5NzMsOCBAQAogICAgbm5vcmVtYXAgPGJ1ZmZlcj4gPHNpbGVudD4gbXgJOjxjLXU+Y2FsbCA8U0lEPk5ldHJ3TWFya0ZpbGVFeGUoMCk8Y3I+CiAgICBubm9yZW1hcCA8YnVmZmVyPiA8c2lsZW50PiBtegk6PGMtdT5jYWxsIDxTSUQ+TmV0cndNYXJrRmlsZUNvbXByZXNzKDApPGNyPgogICAgbm5vcmVtYXAgPGJ1ZmZlcj4gPHNpbGVudD4gZ2IJOjxjLXU+Y2FsbCA8U0lEPk5ldHJ3Qm9va0hpc3RIYW5kbGVyKDEsYjpuZXRyd19jdXIpPGNyPgorICAgbm5vcmVtYXAgPGJ1ZmZlcj4gPHNpbGVudD4gZ2QJOjxjLXU+Y2FsbCA8U0lEPk5ldHJ3Rm9yY2VDaGdEaXIoMCw8U0lEPk5ldHJ3R2V0V29yZCgpKTxjcj4KKyAgIG5ub3JlbWFwIDxidWZmZXI+IDxzaWxlbnQ+IGdmCTo8Yy11PmNhbGwgPFNJRD5OZXRyd0ZvcmNlRmlsZSgwLDxTSUQ+TmV0cndHZXRXb3JkKCkpPGNyPgogICAgbm5vcmVtYXAgPGJ1ZmZlcj4gPHNpbGVudD4gZ2gJOjxjLXU+Y2FsbCA8U0lEPk5ldHJ3SGlkZGVuKDApPGNyPgogICAgbm5vcmVtYXAgPGJ1ZmZlcj4gPHNpbGVudD4gZ3AJOjxjLXU+Y2FsbCA8U0lEPk5ldHJ3Q2hnUGVybSgwLGI6bmV0cndfY3VyZGlyKTxjcj4KICAgIG5ub3JlbWFwIDxidWZmZXI+IDxzaWxlbnQ+IEMJCTpsZXQgZzpuZXRyd19jaGd3aW49IHdpbm5yKCk8Y3I+CkBAIC0xOTgzLDYgKzIwNTgsNyBAQAogICAgIG5ub3JlbWFwIDxidWZmZXI+IDxzaWxlbnQ+IDxsZWZ0bW91c2U+ICAgPGxlZnRtb3VzZT46Y2FsbCA8U0lEPk5ldHJ3TGVmdG1vdXNlKDApPGNyPgogICAgIG5ub3JlbWFwIDxidWZmZXI+IDxzaWxlbnQ+IDxtaWRkbGVtb3VzZT4gPGxlZnRtb3VzZT46Y2FsbCA8U0lEPk5ldHJ3UHJldldpbk9wZW4oMCk8Y3I+CiAgICAgbm5vcmVtYXAgPGJ1ZmZlcj4gPHNpbGVudD4gPHMtbGVmdG1vdXNlPiA8bGVmdG1vdXNlPjpjYWxsIDxTSUQ+TmV0cndNYXJrRmlsZSgwLDxTSUQ+TmV0cndHZXRXb3JkKCkpPGNyPgorICAgIG5tYXAgICAgIDxidWZmZXI+IDxzaWxlbnQ+IDwyLWxlZnRtb3VzZT4gLQogICAgIGV4ZSAnbm5vcmVtYXAgPGJ1ZmZlcj4gPHNpbGVudD4gPHJpZ2h0bW91c2U+IDxsZWZ0bW91c2U+OmNhbGwgPFNJRD5OZXRyd1JlbW90ZVJtKCInLm1hcHNhZmV1c2VybWFjaC4nIiwiJy5tYXBzYWZlcGF0aC4nIik8Y3I+JwogICAgIGV4ZSAndm5vcmVtYXAgPGJ1ZmZlcj4gPHNpbGVudD4gPHJpZ2h0bW91c2U+IDxsZWZ0bW91c2U+OmNhbGwgPFNJRD5OZXRyd1JlbW90ZVJtKCInLm1hcHNhZmV1c2VybWFjaC4nIiwiJy5tYXBzYWZlcGF0aC4nIik8Y3I+JwogICAgIGlub3JlbWFwIDxidWZmZXI+IDxzaWxlbnQ+IDxsZWZ0bW91c2U+ICAgPGMtbz48bGVmdG1vdXNlPjxjLW8+OmNhbGwgPFNJRD5OZXRyd0xlZnRtb3VzZSgwKTxjcj4KQEAgLTIwMDQsOCArMjA4MCwyNSBAQAogICAgbm5vcmVtYXAgPGJ1ZmZlcj4gPEYxPgkJCTpoZSBuZXRydy1xdWlja2hlbHA8Y3I+CiAgICBpbm9yZW1hcCA8YnVmZmVyPiA8RjE+CQkJPGMtbz46aGUgbmV0cnctcXVpY2toZWxwPGNyPgogICBlbmRpZgotICBjYWxsIHM6U2V0UmV4RGlyKGE6aXNsb2NhbCxiOm5ldHJ3X2N1cmRpcikKLSIgIGNhbGwgRHJldCgiczpCcm93c2VyTWFwcyIpCisKKyAgIiBzZXQgdXAgUmV4cGxvcmUgYW5kIGxlZnRtb3VzZS1kb3VibGUtY2xpY2sKKyAgY29tISBSZXhwbG9yZSBjYWxsIHM6TmV0cndSZXhwbG9yZSh3Om5ldHJ3X3JleGxvY2FsLGV4aXN0cygidzpuZXRyd19yZXhkaXIiKT8gdzpuZXRyd19yZXhkaXIgOiAiLiIpCisgIGlmIGc6bmV0cndfbW91c2VtYXBzICYmIGc6bmV0cndfcmV0bWFwCisgICBpZiAhaGFzbWFwdG8oIjxQbHVnPk5ldHJ3UmV0dXJuIikKKyAgICBpZiBtYXBhcmcoIjwyLWxlZnRtb3VzZT4iLCJuIikgPT0gIiIgfHwgbWFwYXJnKCI8Mi1sZWZ0bW91c2U+IiwibiIpID1+ICdeLSQnCisiICAgICBjYWxsIERlY2hvKCJtYWtpbmcgbWFwIGZvciAyLWxlZnRtb3VzZSIpCisgICAgIG5tYXAgPHVuaXF1ZT4gPHNpbGVudD4gPDItbGVmdG1vdXNlPgk8UGx1Zz5OZXRyd1JldHVybgorICAgIGVsc2VpZiBtYXBhcmcoIjxjLWxlZnRtb3VzZT4iLCJuIikgPT0gIiIKKyIgICAgIGNhbGwgRGVjaG8oIm1ha2luZyBtYXAgZm9yIGMtbGVmdG1vdXNlIikKKyAgICAgbm1hcCA8dW5pcXVlPiA8c2lsZW50PiA8Yy1sZWZ0bW91c2U+CTxQbHVnPk5ldHJ3UmV0dXJuCisgICAgZW5kaWYKKyAgIGVuZGlmCisgICBleGUgJ25ub3JlbWFwIDxzaWxlbnQ+IDxQbHVnPk5ldHJ3UmV0dXJuIDpSZXhwbG9yZTxjcj4nCisiICAgY2FsbCBEZWNobygibWFkZSA8UGx1Zz5OZXRyd1JldHVybiBtYXAiKQorICBlbmRpZgorCisgIGtlZXBqIGNhbGwgczpTZXRSZXhEaXIoYTppc2xvY2FsLGI6bmV0cndfY3VyZGlyKQorIiAgY2FsbCBEcmV0KCJzOk5ldHJ3TWFwcyIpCiBlbmRmdW4KIAogIiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KQEAgLTIwNTAsNyArMjE0Myw3IEBACiAgICAiIGNoYW5nZSB0byB0aGUgYm9va21hcmtlZCBkaXJlY3RvcnkKICIgICBjYWxsIERlY2hvKCIodXNlcjogPCIudjpjb3VudC4ibWI+KSBjaGFuZ2UgdG8gdGhlIGJvb2ttYXJrZWQgZGlyZWN0b3J5IikKICAgIGlmIGV4aXN0cygiZzpuZXRyd19ib29rbWFya2xpc3Rbdjpjb3VudC0xXSIpCi0gICAgZXhlICJlICIuZm5hbWVlc2NhcGUoZzpuZXRyd19ib29rbWFya2xpc3Rbdjpjb3VudC0xXSkKKyAgICBleGUgImtlZXBqIGUgIi5mbmFtZWVzY2FwZShnOm5ldHJ3X2Jvb2ttYXJrbGlzdFt2OmNvdW50LTFdKQogICAgZWxzZQogICAgIGVjaG9tc2cgIlNvcnJ5LCBib29rbWFyayMiLnY6Y291bnQuIiBkb2Vzbid0IGV4aXN0ISIKICAgIGVuZGlmCkBAIC0yMDc1LDIwICsyMTY4LDI0IEBACiAgICBsZXQgY250ICAgICA9IGc6bmV0cndfZGlyaGlzdF9jbnQKICAgIGxldCBmaXJzdCAgID0gMQogICAgbGV0IGhpc3RjbnQgPSAwCi0gICB3aGlsZSAoIGZpcnN0IHx8IGNudCAhPSBnOm5ldHJ3X2Rpcmhpc3RfY250ICkKKyAgIGlmIGc6bmV0cndfZGlyaGlzdG1heCA+IDAKKyAgICB3aGlsZSAoIGZpcnN0IHx8IGNudCAhPSBnOm5ldHJ3X2Rpcmhpc3RfY250ICkKICIgICAgY2FsbCBEZWNobygiZmlyc3Q9Ii5maXJzdC4iIGNudD0iLmNudC4iIGRpcmhpc3RfY250PSIuZzpuZXRyd19kaXJoaXN0X2NudCkKLSAgICBsZXQgaGlzdGNudD0gaGlzdGNudCArIDEKLSAgICBpZiBleGlzdHMoImc6bmV0cndfZGlyaGlzdF97Y250fSIpCisgICAgIGxldCBoaXN0Y250PSBoaXN0Y250ICsgMQorICAgICBpZiBleGlzdHMoImc6bmV0cndfZGlyaGlzdF97Y250fSIpCiAiICAgICBjYWxsIERlY2hvKCJOZXRydyAgSGlzdG9yeSMiLmhpc3RjbnQuIjogIi5nOm5ldHJ3X2Rpcmhpc3Rfe2NudH0pCi0gICAgIGVjaG8gIk5ldHJ3ICBIaXN0b3J5IyIuaGlzdGNudC4iOiAiLmc6bmV0cndfZGlyaGlzdF97Y250fQotICAgICBsZXQgZGlkd29yaz0gMQotICAgIGVuZGlmCi0gICAgbGV0IGZpcnN0ID0gMAotICAgIGxldCBjbnQgICA9ICggY250IC0gMSApICUgZzpuZXRyd19kaXJoaXN0bWF4Ci0gICAgaWYgY250IDwgMAotICAgICBsZXQgY250PSBjbnQgKyBnOm5ldHJ3X2Rpcmhpc3RtYXgKLSAgICBlbmRpZgotICAgZW5kd2hpbGUKKyAgICAgIGVjaG8gIk5ldHJ3ICBIaXN0b3J5IyIuaGlzdGNudC4iOiAiLmc6bmV0cndfZGlyaGlzdF97Y250fQorICAgICAgbGV0IGRpZHdvcms9IDEKKyAgICAgZW5kaWYKKyAgICAgbGV0IGZpcnN0ID0gMAorICAgICBsZXQgY250ICAgPSAoIGNudCAtIDEgKSAlIGc6bmV0cndfZGlyaGlzdG1heAorICAgICBpZiBjbnQgPCAwCisgICAgICBsZXQgY250PSBjbnQgKyBnOm5ldHJ3X2Rpcmhpc3RtYXgKKyAgICAgZW5kaWYKKyAgICBlbmR3aGlsZQorICAgZWxzZQorICAgIGxldCBnOm5ldHJ3X2Rpcmhpc3RfY250PSAwCisgICBlbmRpZgogICAgaWYgZGlkd29yawogICAgIGNhbGwgaW5wdXRzYXZlKCl8Y2FsbCBpbnB1dCgiUHJlc3MgPGNyPiB0byBjb250aW51ZSIpfGNhbGwgaW5wdXRyZXN0b3JlKCkKICAgIGVuZGlmCkBAIC0yMDk3LDU2ICsyMTk0LDcxIEBACiAgICAiIHNhdmVzIG1vc3QgcmVjZW50bHkgdmlzaXRlZCBkaXJlY3RvcmllcyAod2hlbiB0aGV5IGRpZmZlcikKICIgICBjYWxsIERlY2hvKCIoYnJvd3NpbmcpIHJlY29yZCBjdXJkaXIgaGlzdG9yeSIpCiAgICBpZiAhZXhpc3RzKCJnOm5ldHJ3X2Rpcmhpc3RfY250IikgfHwgIWV4aXN0cygiZzpuZXRyd19kaXJoaXN0X3tnOm5ldHJ3X2Rpcmhpc3RfY250fSIpIHx8IGc6bmV0cndfZGlyaGlzdF97ZzpuZXRyd19kaXJoaXN0X2NudH0gIT0gYTpjdXJkaXIKLSAgICBsZXQgZzpuZXRyd19kaXJoaXN0X2NudCAgICAgICAgICAgICAgICAgICA9ICggZzpuZXRyd19kaXJoaXN0X2NudCArIDEgKSAlIGc6bmV0cndfZGlyaGlzdG1heAotICAgIGxldCBnOm5ldHJ3X2Rpcmhpc3Rfe2c6bmV0cndfZGlyaGlzdF9jbnR9ID0gYTpjdXJkaXIKKyAgICBpZiBnOm5ldHJ3X2Rpcmhpc3RtYXggPiAwCisgICAgIGxldCBnOm5ldHJ3X2Rpcmhpc3RfY250ICAgICAgICAgICAgICAgICAgID0gKCBnOm5ldHJ3X2Rpcmhpc3RfY250ICsgMSApICUgZzpuZXRyd19kaXJoaXN0bWF4CisgICAgIGxldCBnOm5ldHJ3X2Rpcmhpc3Rfe2c6bmV0cndfZGlyaGlzdF9jbnR9ID0gYTpjdXJkaXIKKyAgICBlbmRpZgogIiAgICBjYWxsIERlY2hvKCJzYXZlIGRpcmhpc3QjIi5nOm5ldHJ3X2Rpcmhpc3RfY250LiI8Ii5nOm5ldHJ3X2Rpcmhpc3Rfe2c6bmV0cndfZGlyaGlzdF9jbnR9LiI+IikKICAgIGVuZGlmCiAKICAgZWxzZWlmIGE6Y2hnID09IDQKICAgICIgdTogY2hhbmdlIHRvIHRoZSBwcmV2aW91cyBkaXJlY3Rvcnkgc3RvcmVkIG9uIHRoZSBoaXN0b3J5IGxpc3QKICIgICBjYWxsIERlY2hvKCIodXNlcjogPHU+KSBjaGcgdG8gcHJldiBkaXIgZnJvbSBoaXN0b3J5IikKLSAgIGxldCBnOm5ldHJ3X2Rpcmhpc3RfY250PSAoIGc6bmV0cndfZGlyaGlzdF9jbnQgLSAxICkgJSBnOm5ldHJ3X2Rpcmhpc3RtYXgKLSAgIGlmIGc6bmV0cndfZGlyaGlzdF9jbnQgPCAwCi0gICAgbGV0IGc6bmV0cndfZGlyaGlzdF9jbnQ9IGc6bmV0cndfZGlyaGlzdF9jbnQgKyBnOm5ldHJ3X2Rpcmhpc3RtYXgKKyAgIGlmIGc6bmV0cndfZGlyaGlzdG1heCA+IDAKKyAgICBsZXQgZzpuZXRyd19kaXJoaXN0X2NudD0gKCBnOm5ldHJ3X2Rpcmhpc3RfY250IC0gMSApICUgZzpuZXRyd19kaXJoaXN0bWF4CisgICAgaWYgZzpuZXRyd19kaXJoaXN0X2NudCA8IDAKKyAgICAgbGV0IGc6bmV0cndfZGlyaGlzdF9jbnQ9IGc6bmV0cndfZGlyaGlzdF9jbnQgKyBnOm5ldHJ3X2Rpcmhpc3RtYXgKKyAgICBlbmRpZgorICAgZWxzZQorICAgIGxldCBnOm5ldHJ3X2Rpcmhpc3RfY250PSAwCiAgICBlbmRpZgogICAgaWYgZXhpc3RzKCJnOm5ldHJ3X2Rpcmhpc3Rfe2c6bmV0cndfZGlyaGlzdF9jbnR9IikKICIgICAgY2FsbCBEZWNobygiY2hhbmdlZGlyIHUjIi5nOm5ldHJ3X2Rpcmhpc3RfY250LiI8Ii5nOm5ldHJ3X2Rpcmhpc3Rfe2c6bmV0cndfZGlyaGlzdF9jbnR9LiI+IikKICAgICBpZiBleGlzdHMoInc6bmV0cndfbGlzdHN0eWxlIikgJiYgdzpuZXRyd19saXN0c3R5bGUgPT0gczpUUkVFTElTVCAmJiBleGlzdHMoImI6bmV0cndfY3VyZGlyIikKICAgICAgc2V0bG9jYWwgbWEgbm9ybwogIiAgICAgY2FsbCBEZWNobygic2V0bG9jYWwgbWEgbm9ybyIpCi0gICAgIGtlZXBqICVkCisgICAgIHNpbCEga2VlcGogJWQKICAgICAgc2V0bG9jYWwgbm9tb2QKICIgICAgIGNhbGwgRGVjaG8oInNldGxvY2FsIG5vbW9kIikKICAgICBlbmRpZgogIiAgICAiICAgIGNhbGwgRGVjaG8oImV4ZSBlISAiLmZuYW1lZXNjYXBlKGc6bmV0cndfZGlyaGlzdF97ZzpuZXRyd19kaXJoaXN0X2NudH0pKQogICAgIGV4ZSAia2VlcGogZSEgIi5mbmFtZWVzY2FwZShnOm5ldHJ3X2Rpcmhpc3Rfe2c6bmV0cndfZGlyaGlzdF9jbnR9KQogICAgZWxzZQotICAgIGxldCBnOm5ldHJ3X2Rpcmhpc3RfY250PSAoIGc6bmV0cndfZGlyaGlzdF9jbnQgKyAxICkgJSBnOm5ldHJ3X2Rpcmhpc3RtYXgKKyAgICBpZiBnOm5ldHJ3X2Rpcmhpc3RtYXggPiAwCisgICAgIGxldCBnOm5ldHJ3X2Rpcmhpc3RfY250PSAoIGc6bmV0cndfZGlyaGlzdF9jbnQgKyAxICkgJSBnOm5ldHJ3X2Rpcmhpc3RtYXgKKyAgICBlbHNlCisgICAgIGxldCBnOm5ldHJ3X2Rpcmhpc3RfY250PSAwCisgICAgZW5kaWYKICAgICBlY2hvICJTb3JyeSwgbm8gcHJlZGVjZXNzb3IgZGlyZWN0b3J5IGV4aXN0cyB5ZXQiCiAgICBlbmRpZgogCiAgIGVsc2VpZiBhOmNoZyA9PSA1CiAgICAiIFU6IGNoYW5nZSB0byB0aGUgc3Vic2VxdWVudCBkaXJlY3Rvcnkgc3RvcmVkIG9uIHRoZSBoaXN0b3J5IGxpc3QKICIgICBjYWxsIERlY2hvKCIodXNlcjogPFU+KSBjaGcgdG8gbmV4dCBkaXIgZnJvbSBoaXN0b3J5IikKLSAgIGxldCBnOm5ldHJ3X2Rpcmhpc3RfY250PSAoIGc6bmV0cndfZGlyaGlzdF9jbnQgKyAxICkgJSBnOm5ldHJ3X2Rpcmhpc3RtYXgKLSAgIGlmIGV4aXN0cygiZzpuZXRyd19kaXJoaXN0X3tnOm5ldHJ3X2Rpcmhpc3RfY250fSIpCisgICBpZiBnOm5ldHJ3X2Rpcmhpc3RtYXggPiAwCisgICAgbGV0IGc6bmV0cndfZGlyaGlzdF9jbnQ9ICggZzpuZXRyd19kaXJoaXN0X2NudCArIDEgKSAlIGc6bmV0cndfZGlyaGlzdG1heAorICAgIGlmIGV4aXN0cygiZzpuZXRyd19kaXJoaXN0X3tnOm5ldHJ3X2Rpcmhpc3RfY250fSIpCiAiICAgIGNhbGwgRGVjaG8oImNoYW5nZWRpciBVIyIuZzpuZXRyd19kaXJoaXN0X2NudC4iPCIuZzpuZXRyd19kaXJoaXN0X3tnOm5ldHJ3X2Rpcmhpc3RfY250fS4iPiIpCi0gICAgaWYgZXhpc3RzKCJ3Om5ldHJ3X2xpc3RzdHlsZSIpICYmIHc6bmV0cndfbGlzdHN0eWxlID09IHM6VFJFRUxJU1QgJiYgZXhpc3RzKCJiOm5ldHJ3X2N1cmRpciIpCi0gICAgIHNldGxvY2FsIG1hIG5vcm8KKyAgICAgaWYgZXhpc3RzKCJ3Om5ldHJ3X2xpc3RzdHlsZSIpICYmIHc6bmV0cndfbGlzdHN0eWxlID09IHM6VFJFRUxJU1QgJiYgZXhpc3RzKCJiOm5ldHJ3X2N1cmRpciIpCisgICAgICBzZXRsb2NhbCBtYSBub3JvCiAiICAgICBjYWxsIERlY2hvKCJzZXRsb2NhbCBtYSBub3JvIikKLSAgICAga2VlcGogJWQKKyAgICAgIHNpbCEga2VlcGogJWQKICIgICAgIGNhbGwgRGVjaG8oInJlbW92ZWQgYWxsIGxpbmVzIGZyb20gYnVmZmVyICglZCkiKQotICAgICBzZXRsb2NhbCBub21vZAorICAgICAgc2V0bG9jYWwgbm9tb2QKICIgICAgIGNhbGwgRGVjaG8oInNldGxvY2FsIG5vbW9kIikKLSAgICBlbmRpZgorICAgICBlbmRpZgogIiAgICBjYWxsIERlY2hvKCJleGUgZSEgIi5mbmFtZWVzY2FwZShnOm5ldHJ3X2Rpcmhpc3Rfe2c6bmV0cndfZGlyaGlzdF9jbnR9KSkKLSAgICBleGUgImtlZXBqIGUhICIuZm5hbWVlc2NhcGUoZzpuZXRyd19kaXJoaXN0X3tnOm5ldHJ3X2Rpcmhpc3RfY250fSkKLSAgIGVsc2UKLSAgICBsZXQgZzpuZXRyd19kaXJoaXN0X2NudD0gKCBnOm5ldHJ3X2Rpcmhpc3RfY250IC0gMSApICUgZzpuZXRyd19kaXJoaXN0bWF4Ci0gICAgaWYgZzpuZXRyd19kaXJoaXN0X2NudCA8IDAKLSAgICAgbGV0IGc6bmV0cndfZGlyaGlzdF9jbnQ9IGc6bmV0cndfZGlyaGlzdF9jbnQgKyBnOm5ldHJ3X2Rpcmhpc3RtYXgKKyAgICAgZXhlICJrZWVwaiBlISAiLmZuYW1lZXNjYXBlKGc6bmV0cndfZGlyaGlzdF97ZzpuZXRyd19kaXJoaXN0X2NudH0pCisgICAgZWxzZQorICAgICBsZXQgZzpuZXRyd19kaXJoaXN0X2NudD0gKCBnOm5ldHJ3X2Rpcmhpc3RfY250IC0gMSApICUgZzpuZXRyd19kaXJoaXN0bWF4CisgICAgIGlmIGc6bmV0cndfZGlyaGlzdF9jbnQgPCAwCisgICAgICBsZXQgZzpuZXRyd19kaXJoaXN0X2NudD0gZzpuZXRyd19kaXJoaXN0X2NudCArIGc6bmV0cndfZGlyaGlzdG1heAorICAgICBlbmRpZgorICAgICBlY2hvICJTb3JyeSwgbm8gc3VjY2Vzc29yIGRpcmVjdG9yeSBleGlzdHMgeWV0IgogICAgIGVuZGlmCi0gICAgZWNobyAiU29ycnksIG5vIHN1Y2Nlc3NvciBkaXJlY3RvcnkgZXhpc3RzIHlldCIKKyAgIGVsc2UKKyAgICBsZXQgZzpuZXRyd19kaXJoaXN0X2NudD0gMAorICAgIGVjaG8gIlNvcnJ5LCBubyBzdWNjZXNzb3IgZGlyZWN0b3J5IGV4aXN0cyB5ZXQgKGc6bmV0cndfZGlyaGlzdG1heCBpcyAiLmc6bmV0cndfZGlyaGlzdG1heC4iKSIKICAgIGVuZGlmCiAKICAgZWxzZWlmIGE6Y2hnID09IDYKQEAgLTIxNTQsMTAgKzIyNjYsMTAgQEAKICIgICBjYWxsIERlY2hvKCJkZWxldGUgYm9va21hcmsjIi52OmNvdW50LiI8Ii5nOm5ldHJ3X2Jvb2ttYXJrbGlzdFt2OmNvdW50LTFdLiI+IikKICAgIGxldCBzYXZlZmlsZT0gczpOZXRyd0hvbWUoKS4iLy5uZXRyd2Jvb2siCiAgICBpZiBmaWxlcmVhZGFibGUoc2F2ZWZpbGUpCi0gICAgY2FsbCBzOk5ldHJ3Qm9va0hpc3RTYXZlKCkgIiBkb25lIGhlcmUgdG8gbWVyZ2UgYm9va21hcmtzIGZpcnN0Ci0gICAgY2FsbCBkZWxldGUoc2F2ZWZpbGUpCisgICAga2VlcGogY2FsbCBzOk5ldHJ3Qm9va0hpc3RTYXZlKCkgIiBkb25lIGhlcmUgdG8gbWVyZ2UgYm9va21hcmtzIGZpcnN0CisgICAga2VlcGogY2FsbCBkZWxldGUoc2F2ZWZpbGUpCiAgICBlbmRpZgotICAgY2FsbCByZW1vdmUoZzpuZXRyd19ib29rbWFya2xpc3Qsdjpjb3VudC0xKQorICAga2VlcGogY2FsbCByZW1vdmUoZzpuZXRyd19ib29rbWFya2xpc3Qsdjpjb3VudC0xKQogICBlbmRpZgogICBjYWxsIHM6TmV0cndCb29rbWFya01lbnUoKQogIiAgY2FsbCBEcmV0KCJzOk5ldHJ3Qm9va0hpc3RIYW5kbGVyIikKQEAgLTIxNzMsMTUgKzIyODUsMTcgQEAKICAgIGxldCBzYXZlZmlsZT0gaG9tZS4iLy5uZXRyd2Jvb2siCiAgICBpZiBmaWxlcmVhZGFibGUoc2F2ZWZpbGUpCiAiICAgIGNhbGwgRGVjaG8oInNvdXJjaW5nIC5uZXRyd2Jvb2siKQotICAgIGV4ZSAic28gIi5zYXZlZmlsZQorICAgIGV4ZSAia2VlcGogc28gIi5zYXZlZmlsZQogICAgZW5kaWYKLSAgIGxldCBzYXZlZmlsZT0gaG9tZS4iLy5uZXRyd2hpc3QiCi0gICBpZiBmaWxlcmVhZGFibGUoc2F2ZWZpbGUpCisgICBpZiBnOm5ldHJ3X2Rpcmhpc3RtYXggPiAwCisgICAgbGV0IHNhdmVmaWxlPSBob21lLiIvLm5ldHJ3aGlzdCIKKyAgICBpZiBmaWxlcmVhZGFibGUoc2F2ZWZpbGUpCiAiICAgIGNhbGwgRGVjaG8oInNvdXJjaW5nIC5uZXRyd2hpc3QiKQotICAgIGV4ZSAic28gIi5zYXZlZmlsZQorICAgICBleGUgImtlZXBqIHNvICIuc2F2ZWZpbGUKKyAgICBlbmRpZgorICAgIGxldCBzOm5ldHJ3X2luaXRib29raGlzdD0gMQorICAgIGF1IFZpbUxlYXZlICogY2FsbCBzOk5ldHJ3Qm9va0hpc3RTYXZlKCkKICAgIGVuZGlmCi0gICBsZXQgczpuZXRyd19pbml0Ym9va2hpc3Q9IDEKLSAgIGF1IFZpbUxlYXZlICogY2FsbCBzOk5ldHJ3Qm9va0hpc3RTYXZlKCkKICAgZW5kaWYKICIgIGNhbGwgRHJldCgiczpOZXRyd0Jvb2tIaXN0UmVhZCIpCiBlbmRmdW4KQEAgLTIxOTEsOSArMjMwNSwxMyBAQAogIiAgICAgICAgICAgICAgICAgICAgICBTaXN0ZXIgZnVuY3Rpb246IHM6TmV0cndCb29rSGlzdFJlYWQoKQogIiAgICAgICAgICAgICAgICAgICAgICBJIHVzZWQgdG8gZG8gdGhpcyB2aWEgdmltaW5mbyBidXQgdGhhdCBhcHBlYXJzIHRvCiAiICAgICAgICAgICAgICAgICAgICAgIGJlIHVucmVsaWFibGUgZm9yIGxvbmctdGVybSBzdG9yYWdlCi0iICAgICAgICAgICAgICAgICAgICAgIENPTUJBSzogZG9lcyAkSE9NRSB3b3JrIHVuZGVyIHdpbmRvd3M/Pz8KIGZ1biEgczpOZXRyd0Jvb2tIaXN0U2F2ZSgpCiAiICBjYWxsIERmdW5jKCJzOk5ldHJ3Qm9va0hpc3RTYXZlKCkgZGlyaGlzdG1heD0iLmc6bmV0cndfZGlyaGlzdG1heCkKKyAgaWYgZzpuZXRyd19kaXJoaXN0bWF4IDw9IDAKKyIgICBjYWxsIERyZXQoInM6TmV0cndCb29rSGlzdFNhdmUgOiBkaXJoaXN0bWF4PSIuZzpuZXRyd19kaXJoaXN0bWF4KQorICAgcmV0dXJuCisgIGVuZGlmCisKICAgbGV0IHNhdmVmaWxlPSBzOk5ldHJ3SG9tZSgpLiIvLm5ldHJ3aGlzdCIKICAgMXNwbGl0CiAgIGNhbGwgczpOZXRyd0VuZXcoKQpAQCAtMjIwMSwxMCArMjMxOSwxMCBAQAogICBzZXRsb2NhbCBub2NpbiBub2FpIG5vY2kgbWFnaWMgbm9zcGVsbCBub2hpZCB3aWc9IG5vYXcKICAgc2V0bG9jYWwgbWEgbm9ybyB3cml0ZQogICBpZiBleGlzdHMoIiZhY2QiKSB8IHNldGxvY2FsIG5vYWNkIHwgZW5kaWYKLSAgc2lsZW50ICVkCisgIHNpbCEga2VlcGogJWQKIAogICAiIHNhdmUgLm5ldHJ3aGlzdCAtLSBubyBhdHRlbXB0IHRvIG1lcmdlCi0gIHNpbGVudCEgZmlsZSAubmV0cndoaXN0CisgIHNpbCEgZmlsZSAubmV0cndoaXN0CiAgIGNhbGwgc2V0bGluZSgxLCJsZXQgZzpuZXRyd19kaXJoaXN0bWF4ICA9Ii5nOm5ldHJ3X2Rpcmhpc3RtYXgpCiAgIGNhbGwgc2V0bGluZSgyLCJsZXQgZzpuZXRyd19kaXJoaXN0X2NudCA9Ii5nOm5ldHJ3X2Rpcmhpc3RfY250KQogICBsZXQgbGFzdGxpbmUgPSBsaW5lKCIkIikKQEAgLTIyNTQsNyArMjM3Miw3IEBACiAiICBjYWxsIERlY2hvKCJ0YWIjIi50YWJwYWdlbnIoKS4iIHdpbiMiLndpbm5yKCkpCiAiICBjYWxsIERyZWRpcigibHMhIikKICAgaWYgIWV4aXN0cygiczpuZXRyd19pbml0Ym9va2hpc3QiKQotICAgY2FsbCBzOk5ldHJ3Qm9va0hpc3RSZWFkKCkKKyAgIGtlZXBqIGNhbGwgczpOZXRyd0Jvb2tIaXN0UmVhZCgpCiAgIGVuZGlmCiAKICAgIiBzaW1wbGlmeSB0aGUgZGlybmFtZSAoZXNwZWNpYWxseSBmb3IgIi4uInMgaW4gZGlybmFtZXMpCkBAIC0yMjcxLDEyICsyMzg5LDEyIEBACiAgICByZXR1cm4KICAgZW5kaWYKICAgaWYgIWV4aXN0cygiKnNoZWxsZXNjYXBlIikKLSAgIGNhbGwgbmV0cncjRXJyb3JNc2coczpFUlJPUiwibmV0cncgY2FuJ3QgcnVuIC0tIHlvdXIgdmltIGlzIG1pc3Npbmcgc2hlbGxlc2NhcGUoKSIsNjkpCisgICBrZWVwaiBjYWxsIG5ldHJ3I0Vycm9yTXNnKHM6RVJST1IsIm5ldHJ3IGNhbid0IHJ1biAtLSB5b3VyIHZpbSBpcyBtaXNzaW5nIHNoZWxsZXNjYXBlKCkiLDY5KQogIiAgIGNhbGwgRHJldCgiczpOZXRyd0Jyb3dzZSA6IG1pc3Npbmcgc2hlbGxlc2NhcGUoKSIpCiAgICByZXR1cm4KICAgZW5kaWYKICAgaWYgIWV4aXN0cygiKmZuYW1lZXNjYXBlIikKLSAgIGNhbGwgbmV0cncjRXJyb3JNc2coczpFUlJPUiwibmV0cncgY2FuJ3QgcnVuIC0tIHlvdXIgdmltIGlzIG1pc3NpbmcgZm5hbWVlc2NhcGUoKSIsNzApCisgICBrZWVwaiBjYWxsIG5ldHJ3I0Vycm9yTXNnKHM6RVJST1IsIm5ldHJ3IGNhbid0IHJ1biAtLSB5b3VyIHZpbSBpcyBtaXNzaW5nIGZuYW1lZXNjYXBlKCkiLDcwKQogIiAgIGNhbGwgRHJldCgiczpOZXRyd0Jyb3dzZSA6IG1pc3NpbmcgZm5hbWVlc2NhcGUoKSIpCiAgICByZXR1cm4KICAgZW5kaWYKQEAgLTIzMTUsMTIgKzI0MzMsMTIgQEAKICIgICBjYWxsIERlY2hvKCJzZXRsb2NhbCBtYSBub3JvIikKICAgIGxldCBiOm5ldHJ3X2N1cmRpcj0gZGlybmFtZQogIiAgIGNhbGwgRGVjaG8oImV4ZSBzaWwhIGtlZXBhbHQgZmlsZSAiLmZuYW1lZXNjYXBlKHM6bWV0aG9kLiI6Ly8iLnM6dXNlci5zOm1hY2hpbmUuIi8iLnM6cGF0aCkuIiAoYnQ9Ii4mYnQuIikiKQotICAgZXhlICJzaWwhIGtlZXBhbHQgZmlsZSAiLmZuYW1lZXNjYXBlKHM6bWV0aG9kLiI6Ly8iLnM6dXNlci5zOm1hY2hpbmUuIi8iLnM6cGF0aCkKLSAgIGV4ZSAic2lsISBrZWVwYWx0IGRvYXUgQnVmUmVhZFByZSAiLmZuYW1lZXNjYXBlKHM6Zm5hbWUpCi0gICBzaWxlbnQgY2FsbCBuZXRydyNOZXRSZWFkKDIsczptZXRob2QuIjovLyIuczp1c2VyLnM6bWFjaGluZS4iLyIuczpwYXRoKQorICAgZXhlICJzaWwhIGtlZXBqIGtlZXBhbHQgZmlsZSAiLmZuYW1lZXNjYXBlKHM6bWV0aG9kLiI6Ly8iLnM6dXNlci5zOm1hY2hpbmUuIi8iLnM6cGF0aCkKKyAgIGV4ZSAic2lsISBrZWVwaiBrZWVwYWx0IGRvYXUgQnVmUmVhZFByZSAiLmZuYW1lZXNjYXBlKHM6Zm5hbWUpCisgICBzaWwgY2FsbCBuZXRydyNOZXRSZWFkKDIsczptZXRob2QuIjovLyIuczp1c2VyLnM6bWFjaGluZS4iLyIuczpwYXRoKQogICAgaWYgczpwYXRoICF+ICcudGFyLmJ6MiQnICYmIHM6cGF0aCAhfiAnLnRhci5neicgJiYgczpwYXRoICF+ICcudGFyLnh6JyAmJiBzOnBhdGggIX4gJy50eHonCiAgICAgIiBuZXRydy52aW0gYW5kIHRhci52aW0gaGF2ZSBhbHJlYWR5IGhhbmRsZWQgZGVjb21wcmVzc2lvbiBvZiB0aGUgdGFyYmFsbDsgYXZvaWRpbmcgZ3ppcC52aW0gZXJyb3IKLSAgICBleGUgInNpbCBrZWVwYWx0IGRvYXUgQnVmUmVhZFBvc3QgIi5mbmFtZWVzY2FwZShzOmZuYW1lKQorICAgIGV4ZSAic2lsIGtlZXBqIGtlZXBhbHQgZG9hdSBCdWZSZWFkUG9zdCAiLmZuYW1lZXNjYXBlKHM6Zm5hbWUpCiAgICBlbmRpZgogCiAgICAiIHNhdmUgY2VydGFpbiB3aW5kb3ctb3JpZW50ZWQgdmFyaWFibGVzIGludG8gYnVmZmVyLW9yaWVudGVkIHZhcmlhYmxlcyB7e3szCkBAIC0yMzMzLDcgKzI0NTEsNyBAQAogICAgcmV0dXJuCiAgIGVuZGlmCiAKLSAgIiB1c2UgYnVmZmVyLW9yaWVudGVkIFdpblZhcnMgaWYgYnVmZmVyIG9uZXMgZXhpc3QgYnV0IHdpbmRvdyBvbmVzIGRvbid0IHt7ezMKKyAgIiB1c2UgYnVmZmVyLW9yaWVudGVkIFdpblZhcnMgaWYgYnVmZmVyIHZhcmlhYmxlcyBleGlzdCBidXQgYXNzb2NpYXRlZCB3aW5kb3cgdmFyaWFibGVzIGRvbid0IHt7ezMKICAgY2FsbCBzOlVzZUJ1ZldpblZhcnMoKQogCiAgICIgc2V0IHVwIHNvbWUgdmFyaWFibGVzIHt7ezMKQEAgLTIzNDIsNyArMjQ2MCw3IEBACiAgIGxldCBzOmxhc3Rfc29ydF9ieSAgICAgICAgID0gZzpuZXRyd19zb3J0X2J5CiAKICAgIiBzZXQgdXAgbWVudSB7e3szCi0gIGNhbGwgczpOZXRyd01lbnUoMSkKKyAga2VlcGogY2FsbCBzOk5ldHJ3TWVudSgxKQogCiAgICIgc2V0IHVwIGJ1ZmZlciB7e3szCiAgIGxldCByZXVzaW5nPSBzOk5ldHJ3R2V0QnVmZmVyKGE6aXNsb2NhbCxkaXJuYW1lKQpAQCAtMjQ0Myw5ICsyNTYxLDkgQEAKICAgIGxldCBkaXJwYXQgID0gJ15cKFx3XHstfVwpOi8vXChcd1wrQFwpXD1cKFteL11cK1wpL1woLipcKSQnCiAgICBpZiBkaXJuYW1lICF+IGRpcnBhdAogICAgIGlmICFleGlzdHMoImc6bmV0cndfcXVpZXQiKQotICAgICBjYWxsIG5ldHJ3I0Vycm9yTXNnKHM6RVJST1IsIm5ldHJ3IGRvZXNuJ3QgdW5kZXJzdGFuZCB5b3VyIGRpcm5hbWU8Ii5kaXJuYW1lLiI+IiwyMCkKKyAgICAga2VlcGogY2FsbCBuZXRydyNFcnJvck1zZyhzOkVSUk9SLCJuZXRydyBkb2Vzbid0IHVuZGVyc3RhbmQgeW91ciBkaXJuYW1lPCIuZGlybmFtZS4iPiIsMjApCiAgICAgZW5kaWYKLSAgICBjYWxsIHM6TmV0cndPcHRpb25SZXN0b3JlKCJ3OiIpCisgICAga2VlcGogY2FsbCBzOk5ldHJ3T3B0aW9uUmVzdG9yZSgidzoiKQogICAgIHNldGxvY2FsIG5vbWEgbm9tb2Qgbm93cmFwCiAiICAgIGNhbGwgRGVjaG8oInJvPSIuJmw6cm8uIiBtYT0iLiZsOm1hLiIgbW9kPSIuJmw6bW9kLiIgd3JhcD0iLiZsOndyYXApCiAiICAgIGNhbGwgRHJldCgiczpOZXRyd0Jyb3dzZSA6IGJhZGx5IGZvcm1hdHRlZCBkaXJuYW1lPCIuZGlybmFtZS4iPiIpCkBAIC0yNDU4LDggKzI1NzYsMTIgQEAKICAgIiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAiIERpcmVjdG9yeSBMaXN0aW5nOiB7e3szCiAgICIgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAgY2FsbCBzOkJyb3dzZXJNYXBzKGE6aXNsb2NhbCkKLSAgY2FsbCBzOlBlcmZvcm1MaXN0aW5nKGE6aXNsb2NhbCkKKyAga2VlcGogY2FsbCBzOk5ldHJ3TWFwcyhhOmlzbG9jYWwpCisgIGtlZXBqIGNhbGwgczpQZXJmb3JtTGlzdGluZyhhOmlzbG9jYWwpCisgIGlmIHY6dmVyc2lvbiA+PSA3MDAgJiYgaGFzKCJiYWxsb29uX2V2YWwiKSAmJiAmbDpiZXhwciA9PSAiIgorICAgbGV0ICZsOmJleHByPSAibmV0cncjTmV0cndCYWxsb29uSGVscCgpIgorICAgc2V0IGJldmFsCisgIGVuZGlmCiAKICAgIiBUaGUgczpMb2NhbEJyb3dzZVNoZWxsQ21kUmVmcmVzaCgpIGZ1bmN0aW9uIGlzIGNhbGxlZCBieSBhbiBhdXRvY21kCiAgICIgaW5zdGFsbGVkIGJ5IHM6TG9jYWxGYXN0QnJvd3NlcigpIHdoZW4gZzpuZXRyd19mYXN0YnJvd3NlIDw9IDEgKGllLiBzbG93LCBtZWRpdW0gc3BlZWQpLgpAQCAtMjQ3MCw3ICsyNTkyLDcgQEAKICAgbGV0IHM6bG9jYnJvd3Nlc2hlbGxjbWQ9IDEKIAogIiAgY2FsbCBEZWNobygicm89Ii4mbDpyby4iIG1hPSIuJmw6bWEuIiBtb2Q9Ii4mbDptb2QuIiB3cmFwPSIuJmw6d3JhcCkKLSIgIGNhbGwgRHJldCgiczpOZXRyd0Jyb3dzZSA6IGRpZCBQZXJmb3JtTGlzdGluZyIpCisiICBjYWxsIERyZXQoInM6TmV0cndCcm93c2UgOiBkaWQgUGVyZm9ybUxpc3RpbmcgIGZ0PCIuJmZ0LiI+IikKICAgcmV0dXJuCiBlbmRmdW4KIApAQCAtMjYyNSwxMCArMjc0NywxMCBAQAogIiAgICBjYWxsIERlY2hvKCIgIGV4ZSBzaWwhIGtlZXBhbHQgZmlsZSBOZXRyd1RyZWVMaXN0aW5nICIuZm5hbWVlc2NhcGUoczpuZXRyd190cmVlbGlzdG51bSkpCiAgICAgZXhlICdzaWwhIGtlZXBhbHQgZmlsZSBOZXRyd1RyZWVMaXN0aW5nXCAnLmZuYW1lZXNjYXBlKHM6bmV0cndfdHJlZWxpc3RudW0pCiAgICAgc2V0IGJ0PW5vZmlsZSBub3N3ZgotICAgIG5ub3JlbWFwIDxzaWxlbnQ+IDxidWZmZXI+IFsJOnNpbGVudCBjYWxsIDxTSUQ+VHJlZUxpc3RNb3ZlKCdbJyk8Y3I+Ci0gICAgbm5vcmVtYXAgPHNpbGVudD4gPGJ1ZmZlcj4gXQk6c2lsZW50IGNhbGwgPFNJRD5UcmVlTGlzdE1vdmUoJ10nKTxjcj4KLSAgICBubm9yZW1hcCA8c2lsZW50PiA8YnVmZmVyPiBbWyAgICAgICA6c2lsZW50IGNhbGwgPFNJRD5UcmVlTGlzdE1vdmUoJ1snKTxjcj4KLSAgICBubm9yZW1hcCA8c2lsZW50PiA8YnVmZmVyPiBdXSAgICAgICA6c2lsZW50IGNhbGwgPFNJRD5UcmVlTGlzdE1vdmUoJ10nKTxjcj4KKyAgICBubm9yZW1hcCA8c2lsZW50PiA8YnVmZmVyPiBbCTpzaWwgY2FsbCA8U0lEPlRyZWVMaXN0TW92ZSgnWycpPGNyPgorICAgIG5ub3JlbWFwIDxzaWxlbnQ+IDxidWZmZXI+IF0JOnNpbCBjYWxsIDxTSUQ+VHJlZUxpc3RNb3ZlKCddJyk8Y3I+CisgICAgbm5vcmVtYXAgPHNpbGVudD4gPGJ1ZmZlcj4gW1sgICAgICAgOnNpbCBjYWxsIDxTSUQ+VHJlZUxpc3RNb3ZlKCdbJyk8Y3I+CisgICAgbm5vcmVtYXAgPHNpbGVudD4gPGJ1ZmZlcj4gXV0gICAgICAgOnNpbCBjYWxsIDxTSUQ+VHJlZUxpc3RNb3ZlKCddJyk8Y3I+CiAiICAgIGNhbGwgRGVjaG8oIiAgdHJlZSBsaXN0aW5nIyIuczpuZXRyd190cmVlbGlzdG51bS4iIGJ1Zm5yPSIudzpuZXRyd190cmVlYnVmbnIpCiAgICBlbHNlCiAiICAgIGxldCB2OmVycm1zZz0gIiIgIiBEZWNobwpAQCAtMjY1OCwxNCArMjc4MCwxNCBAQAogICAgZW5kaWYKICAgIGxldCAmZWk9IGVpa2VlcAogICAgaWYgbGluZSgiJCIpIDw9IDEKLSAgICBjYWxsIHM6TmV0cndMaXN0U2V0dGluZ3MoYTppc2xvY2FsKQorICAgIGtlZXBqIGNhbGwgczpOZXRyd0xpc3RTZXR0aW5ncyhhOmlzbG9jYWwpCiAiICAgIGNhbGwgRHJldCgiczpOZXRyd0dldEJ1ZmZlciAwIDogcmUtdXNpbmcgYnVmZmVyIyIuYnVmbnIoIiUiKS4iLCBidXQgaXRzIGVtcHR5LCBzbyByZWZyZXNoIGl0IikKICAgICByZXR1cm4gMAogICAgZWxzZWlmIGV4aXN0cygidzpuZXRyd19saXN0c3R5bGUiKSAmJiB3Om5ldHJ3X2xpc3RzdHlsZSA9PSBzOlRSRUVMSVNUCiAiICAgIGNhbGwgRGVjaG8oIi0tcmUtdXNlIHRyZWUgbGlzdGluZy0tIikKICIgICAgY2FsbCBEZWNobygiICBjbGVhciBidWZmZXI8Ii5leHBhbmQoIiUiKS4iPiB3aXRoIDolZCIpCiAgICAgc2lsIGtlZXBqICVkCi0gICAgY2FsbCBzOk5ldHJ3TGlzdFNldHRpbmdzKGE6aXNsb2NhbCkKKyAgICBrZWVwaiBjYWxsIHM6TmV0cndMaXN0U2V0dGluZ3MoYTppc2xvY2FsKQogIiAgICBjYWxsIERyZXQoInM6TmV0cndHZXRCdWZmZXIgMCA6IHJlLXVzaW5nIGJ1ZmZlciMiLmJ1Zm5yKCIlIikuIiwgYnV0IHRyZWVsaXN0IG1vZGUgYWx3YXlzIG5lZWRzIGEgcmVmcmVzaCIpCiAgICAgcmV0dXJuIDAKICAgIGVsc2UKQEAgLTI2ODEsOSArMjgwMyw5IEBACiAgICIgIGZhc3QgICAyICAgICAgICAgSCAgICAgIEgKICIgIGNhbGwgRGVjaG8oIi0tZG8gbmV0cncgc2V0dGluZ3M6IG1ha2UgdGhpcyBidWZmZXIjIi5idWZucigiJSIpLiIgbm90LWEtZmlsZSwgbW9kaWZpYWJsZSwgbm90IGxpbmUtbnVtYmVyZWQsIGV0Yy0tIikKICAgbGV0IGZuYW1lPSBleHBhbmQoIiUiKQotICBjYWxsIHM6TmV0cndMaXN0U2V0dGluZ3MoYTppc2xvY2FsKQorICBrZWVwaiBjYWxsIHM6TmV0cndMaXN0U2V0dGluZ3MoYTppc2xvY2FsKQogIiAgY2FsbCBEZWNobygiZXhlIHNpbCEga2VlcGFsdCBmaWxlICIuZm5hbWVlc2NhcGUoZm5hbWUpKQotICBleGUgInNpbCEga2VlcGFsdCBmaWxlICIuZm5hbWVlc2NhcGUoZm5hbWUpCisgIGV4ZSAic2lsISBrZWVwaiBrZWVwYWx0IGZpbGUgIi5mbmFtZWVzY2FwZShmbmFtZSkKIAogICAiIGRlbGV0ZSBhbGwgbGluZXMgZnJvbSBidWZmZXIge3t7MwogIiAgY2FsbCBEZWNobygiLS1kZWxldGUgYWxsIGxpbmVzIGZyb20gYnVmZmVyLS0iKQpAQCAtMjc3Nyw3ICsyODk5LDcgQEAKIAogICAgaWYgIWV4aXN0cygiYjpuZXRyd19jcGYiKQogICAgIGxldCBiOm5ldHJ3X2NwZj0gMAotICAgIGV4ZSAnc2lsZW50IGtlZXBqdW1wcyAnLnc6bmV0cndfYmFubmVyY250LicsJGcvXi4vaWYgdmlydGNvbCgiJCIpID4gYjpuZXRyd19jcGZ8bGV0IGI6bmV0cndfY3BmPSB2aXJ0Y29sKCIkIil8ZW5kaWYnCisgICAgZXhlICdzaWwga2VlcGogJy53Om5ldHJ3X2Jhbm5lcmNudC4nLCRnL14uL2lmIHZpcnRjb2woIiQiKSA+IGI6bmV0cndfY3BmfGxldCBiOm5ldHJ3X2NwZj0gdmlydGNvbCgiJCIpfGVuZGlmJwogICAgIGNhbGwgaGlzdGRlbCgiLyIsLTEpCiAiICAgY2FsbCBEZWNobygiY29tcHV0ZWQgY3BmPSIuYjpuZXRyd19jcGYpCiAgICBlbmRpZgpAQCAtMjg3NCw3ICsyOTk2LDcgQEAKICAgIGxldCBnOm5ldHJ3X2xpc3RfY21kID0gc3Vic3RpdHV0ZShnOm5ldHJ3X2xpc3RfY21kLCcgLWwnLCcnLCdnZScpCiAKICAgZWxzZQotICAgY2FsbCBuZXRydyNFcnJvck1zZyhzOldBUk5JTkcsImJhZCB2YWx1ZSBmb3IgZzpuZXRyd19saXN0c3R5bGUgKD0iLnc6bmV0cndfbGlzdHN0eWxlLiIpIiw0NikKKyAgIGtlZXBqIGNhbGwgbmV0cncjRXJyb3JNc2coczpXQVJOSU5HLCJiYWQgdmFsdWUgZm9yIGc6bmV0cndfbGlzdHN0eWxlICg9Ii53Om5ldHJ3X2xpc3RzdHlsZS4iKSIsNDYpCiAgICBsZXQgZzpuZXRyd19saXN0c3R5bGUgPSBzOlRISU5MSVNUCiAgICBsZXQgdzpuZXRyd19saXN0c3R5bGUgPSBnOm5ldHJ3X2xpc3RzdHlsZQogICAgbGV0IGc6bmV0cndfbGlzdF9jbWQgID0gc3Vic3RpdHV0ZShnOm5ldHJ3X2xpc3RfY21kLCcgLWwnLCcnLCdnZScpCkBAIC0yODkxLDkgKzMwMTMsOSBAQAogICAiIHJlZnJlc2ggdGhlIGxpc3RpbmcKICIgIGNhbGwgRGVjaG8oInJlZnJlc2ggdGhlIGxpc3RpbmciKQogICBsZXQgc3Zwb3M9IG5ldHJ3I05ldHJ3U2F2ZVBvc24oKQotICBjYWxsIHM6TmV0cndSZWZyZXNoKGE6aXNsb2NhbCxzOk5ldHJ3QnJvd3NlQ2hnRGlyKGE6aXNsb2NhbCwnLi8nKSkKLSAgY2FsbCBuZXRydyNOZXRyd1Jlc3RvcmVQb3NuKHN2cG9zKQotICBjYWxsIHM6TmV0cndDdXJzb3JsaW5lKCkKKyAga2VlcGogY2FsbCBzOk5ldHJ3UmVmcmVzaChhOmlzbG9jYWwsczpOZXRyd0Jyb3dzZUNoZ0RpcihhOmlzbG9jYWwsJy4vJykpCisgIGtlZXBqIGNhbGwgbmV0cncjTmV0cndSZXN0b3JlUG9zbihzdnBvcykKKyAga2VlcGogY2FsbCBzOk5ldHJ3Q3Vyc29yKCkKIAogICAiIGtlZXAgY3Vyc29yIG9uIHRoZSBmaWxlbmFtZQogICBzaWwhIGtlZXBqICQKQEAgLTI5NDEsNyArMzA2Myw3IEBACiAiICBjYWxsIERmdW5jKCJOZXRyd0Jvb2ttYXJrTWVudSgpICBoaXN0Y250PSIuZzpuZXRyd19kaXJoaXN0X2NudC4iIG1lbnVjbnQ9Ii5zOm5ldHJ3X21lbnVjbnQpCiAKICAgIiB0aGUgZm9sbG93aW5nIHRlc3QgYXNzdXJlcyB0aGF0IGd2aW0gaXMgcnVubmluZywgaGFzIG1lbnVzIGF2YWlsYWJsZSwgYW5kIGhhcyBtZW51cyBlbmFibGVkLgotICBpZiBoYXMoImd1aSIpICYmIGhhcygibWVudSIpICYmIGhhcygiZ3VpX3J1bm5pbmciKSAmJiAmZ28gPX4gJ20nICYmIGc6bmV0cndfbWVudQorICBpZiBoYXMoImd1aSIpICYmIGhhcygibWVudSIpICYmIGhhcygiZ3VpX3J1bm5pbmciKSAmJiAmZ28gPX4jICdtJyAmJiBnOm5ldHJ3X21lbnUKICAgIGlmIGV4aXN0cygiZzpOZXRyd1RvcEx2bE1lbnUiKQogIiAgICBjYWxsIERlY2hvKCJyZW1vdmluZyAiLmc6TmV0cndUb3BMdmxNZW51LiJCb29rbWFya3MgbWVudSBpdGVtKHMpIikKICAgICBleGUgJ3NpbCEgdW5tZW51ICcuZzpOZXRyd1RvcEx2bE1lbnUuJ0Jvb2ttYXJrcycKQEAgLTI5NTUsNyArMzA3Nyw3IEBACiAgICBpZiBleGlzdHMoImc6bmV0cndfYm9va21hcmtsaXN0IikgJiYgZzpuZXRyd19ib29rbWFya2xpc3QgIT0gW10KICAgICBsZXQgY250PSAxCiAgICAgZm9yIGJtZCBpbiBnOm5ldHJ3X2Jvb2ttYXJrbGlzdAotIiAgICAgY2FsbCBEZWNobygnc2lsZW50ISBtZW51ICcuZzpOZXRyd01lbnVQcmlvcml0eS4iLjIuIi5jbnQuIiAiLmc6TmV0cndUb3BMdmxNZW51LidCb29rbWFyay4nLmJtZC4nCTplICcuYm1kKQorIiAgICAgY2FsbCBEZWNobygnc2lsISBtZW51ICcuZzpOZXRyd01lbnVQcmlvcml0eS4iLjIuIi5jbnQuIiAiLmc6TmV0cndUb3BMdmxNZW51LidCb29rbWFyay4nLmJtZC4nCTplICcuYm1kKQogICAgICBsZXQgYm1kPSBlc2NhcGUoYm1kLGc6bmV0cndfbWVudV9lc2NhcGUpCiAKICAgICAgIiBzaG93IGJvb2ttYXJrcyBmb3IgZ290byBtZW51CkBAIC0yOTY5LDIzICszMDkxLDI1IEBACiAgICBlbmRpZgogCiAgICAiIHNob3cgZGlyZWN0b3J5IGJyb3dzaW5nIGhpc3RvcnkKLSAgIGxldCBjbnQgICAgID0gZzpuZXRyd19kaXJoaXN0X2NudAotICAgbGV0IGZpcnN0ICAgPSAxCi0gICBsZXQgaGlzdGNudCA9IDAKLSAgIHdoaWxlICggZmlyc3QgfHwgY250ICE9IGc6bmV0cndfZGlyaGlzdF9jbnQgKQotICAgIGxldCBoaXN0Y250ICA9IGhpc3RjbnQgKyAxCi0gICAgbGV0IHByaW9yaXR5ID0gZzpuZXRyd19kaXJoaXN0X2NudCArIGhpc3RjbnQKLSAgICBpZiBleGlzdHMoImc6bmV0cndfZGlyaGlzdF97Y250fSIpCi0gICAgIGxldCBoaXN0ZGlyPSBlc2NhcGUoZzpuZXRyd19kaXJoaXN0X3tjbnR9LGc6bmV0cndfbWVudV9lc2NhcGUpCi0iICAgICBjYWxsIERlY2hvKCdzaWxlbnQhIG1lbnUgJy5nOk5ldHJ3TWVudVByaW9yaXR5LiIuMy4iLnByaW9yaXR5LiIgIi5nOk5ldHJ3VG9wTHZsTWVudS4nSGlzdG9yeS4nLmhpc3RkaXIuJwk6ZSAnLmhpc3RkaXIpCi0gICAgIGV4ZSAnc2lsISBtZW51ICcuZzpOZXRyd01lbnVQcmlvcml0eS4iLjMuIi5wcmlvcml0eS4iICIuZzpOZXRyd1RvcEx2bE1lbnUuJ0hpc3RvcnkuJy5oaXN0ZGlyLicJOmUgJy5oaXN0ZGlyLiJcPGNyPiIKLSAgICBlbmRpZgotICAgIGxldCBmaXJzdCA9IDAKLSAgICBsZXQgY250ICAgPSAoIGNudCAtIDEgKSAlIGc6bmV0cndfZGlyaGlzdG1heAotICAgIGlmIGNudCA8IDAKLSAgICAgbGV0IGNudD0gY250ICsgZzpuZXRyd19kaXJoaXN0bWF4Ci0gICAgZW5kaWYKLSAgIGVuZHdoaWxlCisgICBpZiBnOm5ldHJ3X2Rpcmhpc3RtYXggPiAwCisgICAgbGV0IGNudCAgICAgPSBnOm5ldHJ3X2Rpcmhpc3RfY250CisgICAgbGV0IGZpcnN0ICAgPSAxCisgICAgbGV0IGhpc3RjbnQgPSAwCisgICAgd2hpbGUgKCBmaXJzdCB8fCBjbnQgIT0gZzpuZXRyd19kaXJoaXN0X2NudCApCisgICAgIGxldCBoaXN0Y250ICA9IGhpc3RjbnQgKyAxCisgICAgIGxldCBwcmlvcml0eSA9IGc6bmV0cndfZGlyaGlzdF9jbnQgKyBoaXN0Y250CisgICAgIGlmIGV4aXN0cygiZzpuZXRyd19kaXJoaXN0X3tjbnR9IikKKyAgICAgIGxldCBoaXN0ZGlyPSBlc2NhcGUoZzpuZXRyd19kaXJoaXN0X3tjbnR9LGc6bmV0cndfbWVudV9lc2NhcGUpCisiICAgICBjYWxsIERlY2hvKCdzaWwhIG1lbnUgJy5nOk5ldHJ3TWVudVByaW9yaXR5LiIuMy4iLnByaW9yaXR5LiIgIi5nOk5ldHJ3VG9wTHZsTWVudS4nSGlzdG9yeS4nLmhpc3RkaXIuJwk6ZSAnLmhpc3RkaXIpCisgICAgICBleGUgJ3NpbCEgbWVudSAnLmc6TmV0cndNZW51UHJpb3JpdHkuIi4zLiIucHJpb3JpdHkuIiAiLmc6TmV0cndUb3BMdmxNZW51LidIaXN0b3J5LicuaGlzdGRpci4nCTplICcuaGlzdGRpci4iXDxjcj4iCisgICAgIGVuZGlmCisgICAgIGxldCBmaXJzdCA9IDAKKyAgICAgbGV0IGNudCAgID0gKCBjbnQgLSAxICkgJSBnOm5ldHJ3X2Rpcmhpc3RtYXgKKyAgICAgaWYgY250IDwgMAorICAgICAgbGV0IGNudD0gY250ICsgZzpuZXRyd19kaXJoaXN0bWF4CisgICAgIGVuZGlmCisgICAgZW5kd2hpbGUKKyAgIGVuZGlmCiAKICAgZW5kaWYKICIgIGNhbGwgRHJldCgiTmV0cndCb29rbWFya01lbnUiKQpAQCAtMzAwOSw4ICszMTMzLDggQEAKICAgIHJldHVybgogICBlbmRpZgogCi0gIGNhbGwgczpOZXRyd09wdGlvblNhdmUoInM6IikKLSAgY2FsbCBzOk5ldHJ3U2FmZU9wdGlvbnMoKQorICBrZWVwaiBjYWxsIHM6TmV0cndPcHRpb25TYXZlKCJzOiIpCisgIGtlZXBqIGNhbGwgczpOZXRyd1NhZmVPcHRpb25zKCkKICAgbGV0IG5iY2RfY3VycG9zICAgICAgICAgICAgICAgID0gbmV0cncjTmV0cndTYXZlUG9zbigpCiAgIGxldCBzOm5iY2RfY3VycG9zX3tidWZucignJScpfSA9IG5iY2RfY3VycG9zCiAgIGlmIChoYXMoIndpbjMyIikgfHwgaGFzKCJ3aW45NSIpIHx8IGhhcygid2luNjQiKSB8fCBoYXMoIndpbjE2IikpCkBAIC0zMDMxLDcgKzMxNTUsNyBAQAogCiAgIGlmIGRpcm5hbWUgIX4gZGlycGF0CiAgICAiIGFwcGFyZW50bHkgdmltIGlzICJyZWNvZ25pemluZyIgdGhhdCBpdCBpcyBpbiBhIGRpcmVjdG9yeSBhbmQKLSAgICIgaXMgcmVtb3ZpbmcgdGhlIHRyYWlsaW5nICIvIi4gIEJhZCBpZGVhLCBzbyBJIHB1dCBpdCBiYWNrLgorICAgIiBpcyByZW1vdmluZyB0aGUgdHJhaWxpbmcgIi8iLiAgQmFkIGlkZWEsIHNvIGxldCdzIHB1dCBpdCBiYWNrLgogICAgbGV0IGRpcm5hbWU9IGRpcm5hbWUuJy8nCiAiICAgY2FsbCBEZWNobygiYWRqdXN0aW5nIGRpcm5hbWU8Ii5kaXJuYW1lLiI+IikKICAgZW5kaWYKQEAgLTMwNTksNyArMzE4Myw3IEBACiAgICAiIHRoaXMgbGV0cyBOZXRyd0Jyb3dzZVggYXZvaWQgdGhlIGVkaXQKICAgIGlmIGE6MCA8IDEKICIgICAgY2FsbCBEZWNobygic2V0IHVwIHdpbmRvd3MgZm9yIGVkaXRpbmc8Ii5mbmFtZWVzY2FwZShkaXJuYW1lKS4iPiAgZGlkc3BsaXQ9Ii4oZXhpc3RzKCJzOmRpZHNwbGl0Iik/IHM6ZGlkc3BsaXQgOiAiZG9lc24ndCBleGlzdCIpKQotICAgIGNhbGwgczpOZXRyd09wdGlvblJlc3RvcmUoInM6IikKKyAgICBrZWVwaiBjYWxsIHM6TmV0cndPcHRpb25SZXN0b3JlKCJzOiIpCiAgICAgaWYgIWV4aXN0cygiczpkaWRzcGxpdCIpCiAgICAgIGlmICAgICBnOm5ldHJ3X2Jyb3dzZV9zcGxpdCA9PSAxCiAgICAgICBuZXcKQEAgLTMxMDcsMTIgKzMyMzEsMTIgQEAKICIgICAgIGNhbGwgRGVjaG8oImhhbmRsZSBvcHRpb25hbCBGdW5jcmVmcyIpCiAgICAgIGlmIHR5cGUoZzpOZXRyd19mdW5jcmVmKSA9PSAyCiAiICAgICAgY2FsbCBEZWNobygiaGFuZGxpbmcgYSBnOk5ldHJ3X2Z1bmNyZWYiKQotICAgICAgY2FsbCBnOk5ldHJ3X2Z1bmNyZWYoKQorICAgICAga2VlcGogY2FsbCBnOk5ldHJ3X2Z1bmNyZWYoKQogICAgICBlbHNlaWYgdHlwZShnOk5ldHJ3X2Z1bmNyZWYpID09IDMKICIgICAgICBjYWxsIERlY2hvKCJoYW5kbGluZyBhIGxpc3Qgb2YgZzpOZXRyd19mdW5jcmVmcyIpCiAgICAgICBmb3IgRm5jcmVmIGluIGc6TmV0cndfZnVuY3JlZgogICAgICAgIGlmIHR5cGUoRm5jUmVmKSA9PSAyCi0gICAgICAgIGNhbGwgRm5jUmVmKCkKKyAgICAgICAga2VlcGogY2FsbCBGbmNSZWYoKQogICAgICAgIGVuZGlmCiAgICAgICBlbmRmb3IKICAgICAgZW5kaWYKQEAgLTMxMjUsMTUgKzMyNDksMTUgQEAKICAgICIgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAiICAgY2FsbCBEZWNobygnY2FzZSAianVzdCBnbyB0byBuZXcgZGlyZWN0b3J5IHNwZWMiOiBuZXdkaXI8Jy5uZXdkaXIuJz4nKQogICAgbGV0IGRpcm5hbWU9IG5ld2RpcgotICAgY2FsbCBzOlNldFJleERpcihhOmlzbG9jYWwsZGlybmFtZSkKLSAgIGNhbGwgczpOZXRyd09wdGlvblJlc3RvcmUoInM6IikKKyAgIGtlZXBqIGNhbGwgczpTZXRSZXhEaXIoYTppc2xvY2FsLGRpcm5hbWUpCisgICBrZWVwaiBjYWxsIHM6TmV0cndPcHRpb25SZXN0b3JlKCJzOiIpCiAKICAgZWxzZWlmIG5ld2RpciA9PSAnLi8nCiAgICAiIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICAiIHJlZnJlc2ggdGhlIGRpcmVjdG9yeSBsaXN0CiAgICAiIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAiICAgY2FsbCBEZWNobygnY2FzZSAicmVmcmVzaCBkaXJlY3RvcnkgbGlzdGluZyI6IG5ld2RpciA9PSAiLi8iJykKLSAgIGNhbGwgczpTZXRSZXhEaXIoYTppc2xvY2FsLGRpcm5hbWUpCisgICBrZWVwaiBjYWxsIHM6U2V0UmV4RGlyKGE6aXNsb2NhbCxkaXJuYW1lKQogCiAgIGVsc2VpZiBuZXdkaXIgPT0gJy4uLycKICAgICIgLS0tLS0tLS0tLS0tLS0tLS0tLQpAQCAtMzE3Myw3ICszMjk3LDcgQEAKICAgICBlbmRpZgogIiAgICBjYWxsIERlY2hvKCJ1bml4OiBkaXJuYW1lPCIuZGlybmFtZS4iPiAoZ28gdXAgb25lIGRpcikiKQogICAgZW5kaWYKLSAgIGNhbGwgczpTZXRSZXhEaXIoYTppc2xvY2FsLGRpcm5hbWUpCisgICBrZWVwaiBjYWxsIHM6U2V0UmV4RGlyKGE6aXNsb2NhbCxkaXJuYW1lKQogCiAgIGVsc2VpZiBleGlzdHMoInc6bmV0cndfbGlzdHN0eWxlIikgJiYgdzpuZXRyd19saXN0c3R5bGUgPT0gczpUUkVFTElTVCAmJiBleGlzdHMoInc6bmV0cndfdHJlZWRpY3QiKQogIiAgIGNhbGwgRGVjaG8oJ2Nhc2UgbGlzdHN0eWxlIGlzIFRSRUVMSVNUIGFuZCB3Om5ldHJ3X3RyZWVkaWN0IGV4aXN0cycpCkBAIC0zMjMxLDE3ICszMzU1LDE3IEBACiAgICAgbGV0IGRpcm5hbWU9IHN1YnN0aXR1dGUodHJlZWRpciwnLyokJywnLycsJycpCiAiICAgIGNhbGwgRGVjaG8oImdvIGRvd24gb25lIGRpcjogdHJlZWRpcjwiLnRyZWVkaXIuIj4iKQogICAgZW5kaWYKLSAgIGNhbGwgczpTZXRSZXhEaXIoYTppc2xvY2FsLGRpcm5hbWUpCisgICBrZWVwaiBjYWxsIHM6U2V0UmV4RGlyKGE6aXNsb2NhbCxkaXJuYW1lKQogICAgbGV0IHM6dHJlZWZvcmNlcmVkcmF3ID0gMQogCiAgIGVsc2UKICAgICIgZ28gZG93biBvbmUgZGlyZWN0b3J5CiAgICBsZXQgZGlybmFtZT0gczpDb21wb3NlUGF0aChkaXJuYW1lLG5ld2RpcikKICIgICBjYWxsIERlY2hvKCJnbyBkb3duIG9uZSBkaXI6IGRpcm5hbWU8Ii5kaXJuYW1lLiI+IG5ld2RpcjwiLm5ld2Rpci4iPiIpCi0gICBjYWxsIHM6U2V0UmV4RGlyKGE6aXNsb2NhbCxkaXJuYW1lKQorICAga2VlcGogY2FsbCBzOlNldFJleERpcihhOmlzbG9jYWwsZGlybmFtZSkKICAgZW5kaWYKIAotICBjYWxsIHM6TmV0cndPcHRpb25SZXN0b3JlKCJzOiIpCisgIGtlZXBqIGNhbGwgczpOZXRyd09wdGlvblJlc3RvcmUoInM6IikKICAgaWYgZG9sb2Nrb3V0CiAiICAgY2FsbCBEZWNobygiZmlsZXdyaXRhYmxlKGRpcm5hbWU8Ii5kaXJuYW1lLiI+KT0iLmZpbGV3cml0YWJsZShkaXJuYW1lKSkKICAgIGlmIGZpbGV3cml0YWJsZShkaXJuYW1lKQpAQCAtMzM4MCwxNyArMzUwNCwxNyBAQAogCiAgIGVsc2VpZiBleGlzdHMoImc6bmV0cndfYnJvd3NleF92aWV3ZXIiKSAmJiBleGVjdXRhYmxlKHZpZXdlcikKICIgICBjYWxsIERlY2hvKCJnOm5ldHJ3X2Jyb3dzZXhfdmlld2VyPCIuZzpuZXRyd19icm93c2V4X3ZpZXdlci4iPiIpCi0iICAgY2FsbCBEZWNobygiZXhlIHNpbGVudCAhIi52aWV3ZXIuIiAiLnZpZXdvcHQuc2hlbGxlc2NhcGUoZm5hbWUsMSkucmVkaXIpCi0gICBleGUgInNpbGVudCAhIi52aWV3ZXIuIiAiLnZpZXdvcHQuc2hlbGxlc2NhcGUoZm5hbWUsMSkucmVkaXIKKyIgICBjYWxsIERlY2hvKCJleGUgc2lsICEiLnZpZXdlci4iICIudmlld29wdC5zaGVsbGVzY2FwZShmbmFtZSwxKS5yZWRpcikKKyAgIGV4ZSAic2lsICEiLnZpZXdlci4iICIudmlld29wdC5zaGVsbGVzY2FwZShmbmFtZSwxKS5yZWRpcgogICAgbGV0IHJldD0gdjpzaGVsbF9lcnJvcgogCiAgIGVsc2VpZiBoYXMoIndpbjMyIikgfHwgaGFzKCJ3aW42NCIpCiAgICBpZiBleGVjdXRhYmxlKCJzdGFydCIpCi0iICAgIGNhbGwgRGVjaG8oJ2V4ZSBzaWxlbnQgIXN0YXJ0IHJ1bmRsbDMyIHVybC5kbGwsRmlsZVByb3RvY29sSGFuZGxlciAnLnNoZWxsZXNjYXBlKGZuYW1lLDEpKQotICAgIGV4ZSAnc2lsZW50ICFzdGFydCBydW5kbGwzMiB1cmwuZGxsLEZpbGVQcm90b2NvbEhhbmRsZXIgJy5zaGVsbGVzY2FwZShmbmFtZSwxKQorIiAgICBjYWxsIERlY2hvKCdleGUgc2lsICFzdGFydCBydW5kbGwzMiB1cmwuZGxsLEZpbGVQcm90b2NvbEhhbmRsZXIgJy5zaGVsbGVzY2FwZShmbmFtZSwxKSkKKyAgICBleGUgJ3NpbCAhc3RhcnQgcnVuZGxsMzIgdXJsLmRsbCxGaWxlUHJvdG9jb2xIYW5kbGVyICcuc2hlbGxlc2NhcGUoZm5hbWUsMSkKICAgIGVsc2VpZiBleGVjdXRhYmxlKCJydW5kbGwzMiIpCi0iICAgIGNhbGwgRGVjaG8oJ2V4ZSBzaWxlbnQgIXJ1bmRsbDMyIHVybC5kbGwsRmlsZVByb3RvY29sSGFuZGxlciAnLnNoZWxsZXNjYXBlKGZuYW1lLDEpKQotICAgIGV4ZSAnc2lsZW50ICFydW5kbGwzMiB1cmwuZGxsLEZpbGVQcm90b2NvbEhhbmRsZXIgJy5zaGVsbGVzY2FwZShmbmFtZSwxKQorIiAgICBjYWxsIERlY2hvKCdleGUgc2lsICFydW5kbGwzMiB1cmwuZGxsLEZpbGVQcm90b2NvbEhhbmRsZXIgJy5zaGVsbGVzY2FwZShmbmFtZSwxKSkKKyAgICBleGUgJ3NpbCAhcnVuZGxsMzIgdXJsLmRsbCxGaWxlUHJvdG9jb2xIYW5kbGVyICcuc2hlbGxlc2NhcGUoZm5hbWUsMSkKICAgIGVsc2UKICAgICBjYWxsIG5ldHJ3I0Vycm9yTXNnKHM6V0FSTklORywicnVuZGxsMzIgbm90IG9uIHBhdGgiLDc0KQogICAgZW5kaWYKQEAgLTMzOTgsMTcgKzM1MjIsMTcgQEAKICAgIGxldCByZXQ9IHY6c2hlbGxfZXJyb3IKIAogICBlbHNlaWYgaGFzKCJ1bml4IikgJiYgZXhlY3V0YWJsZSgiZ25vbWUtb3BlbiIpICYmICFzOmhhc2tkZWluaXQKLSIgICBjYWxsIERlY2hvKCJleGUgc2lsZW50ICFnbm9tZS1vcGVuICIuc2hlbGxlc2NhcGUoZm5hbWUsMSkuIiAiLnJlZGlyKQorIiAgIGNhbGwgRGVjaG8oImV4ZSBzaWwgIWdub21lLW9wZW4gIi5zaGVsbGVzY2FwZShmbmFtZSwxKS4iICIucmVkaXIpCiAgICBleGUgInNpbCAhZ25vbWUtb3BlbiAiLnNoZWxsZXNjYXBlKGZuYW1lLDEpLnJlZGlyCiAgICBsZXQgcmV0PSB2OnNoZWxsX2Vycm9yCiAKICAgZWxzZWlmIGhhcygidW5peCIpICYmIGV4ZWN1dGFibGUoImtmbWNsaWVudCIpICYmIHM6aGFza2RlaW5pdAotIiAgIGNhbGwgRGVjaG8oImV4ZSBzaWxlbnQgIWtmbWNsaWVudCBleGVjICIuc2hlbGxlc2NhcGUoZm5hbWUsMSkuIiAiLnJlZGlyKQorIiAgIGNhbGwgRGVjaG8oImV4ZSBzaWwgIWtmbWNsaWVudCBleGVjICIuc2hlbGxlc2NhcGUoZm5hbWUsMSkuIiAiLnJlZGlyKQogICAgZXhlICJzaWwgIWtmbWNsaWVudCBleGVjICIuc2hlbGxlc2NhcGUoZm5hbWUsMSkuIiAiLnJlZGlyCiAgICBsZXQgcmV0PSB2OnNoZWxsX2Vycm9yCiAKICAgZWxzZWlmIGhhcygibWFjdW5peCIpICYmIGV4ZWN1dGFibGUoIm9wZW4iKQotIiAgIGNhbGwgRGVjaG8oImV4ZSBzaWxlbnQgIW9wZW4gIi5zaGVsbGVzY2FwZShmbmFtZSwxKS4iICIucmVkaXIpCisiICAgY2FsbCBEZWNobygiZXhlIHNpbCAhb3BlbiAiLnNoZWxsZXNjYXBlKGZuYW1lLDEpLiIgIi5yZWRpcikKICAgIGV4ZSAic2lsICFvcGVuICIuc2hlbGxlc2NhcGUoZm5hbWUsMSkuIiAiLnJlZGlyCiAgICBsZXQgcmV0PSB2OnNoZWxsX2Vycm9yCiAKQEAgLTM0NDAsNyArMzU2NCw3IEBACiAgICBpZiBnOm5ldHJ3X3VzZV9ub3N3ZgogICAgIHNldGxvY2FsIG5vc3dmCiAgICBlbmRpZgotICAgZXhlICJrZWVwaiBub3JtISBcPGMtbz4iCisgICBleGUgInNpbCEga2VlcGogbm9ybSEgXDxjLW8+IgogIiAgIHJlZHJhdyEKICAgZW5kaWYKIApAQCAtMzQ1OSwxMCArMzU4MywxMCBAQAogIiAgY2FsbCBEZWNobygiY2hncGVybTwiLmNoZ3Blcm0uIj4iKQogICBjYWxsIHN5c3RlbShjaGdwZXJtKQogICBpZiB2OnNoZWxsX2Vycm9yICE9IDAKLSAgIGNhbGwgbmV0cncjRXJyb3JNc2coMSwiY2hhbmdpbmcgcGVybWlzc2lvbiBvbiBmaWxlPCIuZXhwYW5kKCI8Y2ZpbGU+IikuIj4gc2VlbXMgdG8gaGF2ZSBmYWlsZWQiLDc1KQorICAga2VlcGogY2FsbCBuZXRydyNFcnJvck1zZygxLCJjaGFuZ2luZyBwZXJtaXNzaW9uIG9uIGZpbGU8Ii5leHBhbmQoIjxjZmlsZT4iKS4iPiBzZWVtcyB0byBoYXZlIGZhaWxlZCIsNzUpCiAgIGVuZGlmCiAgIGlmIGE6aXNsb2NhbAotICAgY2FsbCBzOk5ldHJ3UmVmcmVzaChhOmlzbG9jYWwsczpOZXRyd0Jyb3dzZUNoZ0RpcihhOmlzbG9jYWwsJy4vJykpCisgICBrZWVwaiBjYWxsIHM6TmV0cndSZWZyZXNoKGE6aXNsb2NhbCxzOk5ldHJ3QnJvd3NlQ2hnRGlyKGE6aXNsb2NhbCwnLi8nKSkKICAgZW5kaWYKICIgIGNhbGwgRHJldCgiczpOZXRyd0NoZ1Blcm0iKQogZW5kZnVuCkBAIC0zNTU1LDcgKzM2NzksNyBAQAogICAgZWxzZWlmIGE6c3R5bGUgPT0gNiAgIiBUZXhwbG9yZQogICAgIGNhbGwgczpTYXZlQnVmVmFycygpCiAiICAgIGNhbGwgRGVjaG8oInN0eWxlICA9IDY6IFRleHBsb3JlIikKLSAgICB0YWJuZXcKKyAgICBleGUgInRhYm5ldyAiLmZuYW1lZXNjYXBlKGN1cmRpcikKICAgICBjYWxsIHM6UmVzdG9yZUJ1ZlZhcnMoKQogICAgZW5kaWYKICAgIGNhbGwgczpSZXN0b3JlV2luVmFycygpCkBAIC0zNjk5LDcgKzM4MjMsNyBAQAogICAgICAiIE5leHBsb3JlCiAiICAgICBjYWxsIERlY2hvKCJjYXNlIE5leHBsb3JlIHdpdGggc3RhcnBhdD0iLnN0YXJwYXQuIjogKGluZHg9Ii5pbmR4LiIpIikKICAgICAgaWYgIWV4aXN0cygidzpuZXRyd19leHBsb3JlX2xpc3QiKSAiIHNhbml0eSBjaGVjawotICAgICAgY2FsbCBuZXRydyNFcnJvck1zZyhzOldBUk5JTkcsInVzaW5nIE5leHBsb3JlIG9yIDxzLWRvd24+IGltcHJvcGVybHk7IHNlZSBoZWxwIGZvciBuZXRydy1zdGFyc3RhciIsNDApCisgICAgICBrZWVwaiBjYWxsIG5ldHJ3I0Vycm9yTXNnKHM6V0FSTklORywidXNpbmcgTmV4cGxvcmUgb3IgPHMtZG93bj4gaW1wcm9wZXJseTsgc2VlIGhlbHAgZm9yIG5ldHJ3LXN0YXJzdGFyIiw0MCkKICAgICAgIHNpbCEgbGV0IEAqID0ga2VlcHJlZ3N0YXIKICAgICAgIHNpbCEgbGV0IEArID0ga2VlcHJlZ3N0YXIKICAgICAgIHNpbCEgbGV0IEAvID0ga2VlcHJlZ3NsYXNoCkBAIC0zNzIyLDcgKzM4NDYsNyBAQAogICAgICAiIFBleHBsb3JlCiAiICAgICBjYWxsIERlY2hvKCJjYXNlIFBleHBsb3JlIHdpdGggc3RhcnBhdD0iLnN0YXJwYXQuIjogKGluZHg9Ii5pbmR4LiIpIikKICAgICAgaWYgIWV4aXN0cygidzpuZXRyd19leHBsb3JlX2xpc3QiKSAiIHNhbml0eSBjaGVjawotICAgICAgY2FsbCBuZXRydyNFcnJvck1zZyhzOldBUk5JTkcsInVzaW5nIFBleHBsb3JlIG9yIDxzLXVwPiBpbXByb3Blcmx5OyBzZWUgaGVscCBmb3IgbmV0cnctc3RhcnN0YXIiLDQxKQorICAgICAga2VlcGogY2FsbCBuZXRydyNFcnJvck1zZyhzOldBUk5JTkcsInVzaW5nIFBleHBsb3JlIG9yIDxzLXVwPiBpbXByb3Blcmx5OyBzZWUgaGVscCBmb3IgbmV0cnctc3RhcnN0YXIiLDQxKQogICAgICAgc2lsISBsZXQgQCogPSBrZWVwcmVnc3RhcgogICAgICAgc2lsISBsZXQgQCsgPSBrZWVwcmVnc3RhcgogICAgICAgc2lsISBsZXQgQC8gPSBrZWVwcmVnc2xhc2gKQEAgLTM3NDUsNyArMzg2OSw3IEBACiAgICAgICIgRXhwbG9yZSAtLSBpbml0aWFsaXplCiAgICAgICIgYnVpbGQgbGlzdCBvZiBmaWxlcyB0byBFeHBsb3JlIHdpdGggTmV4cGxvcmUvUGV4cGxvcmUKICIgICAgIGNhbGwgRGVjaG8oInN0YXJwYXQ9Ii5zdGFycGF0LiI6IGNhc2UgRXhwbG9yZTogaW5pdGlhbGl6ZSAoaW5keD0iLmluZHguIikiKQotICAgICBjYWxsIHM6TmV0cndDbGVhckV4cGxvcmUoKQorICAgICBrZWVwaiBjYWxsIHM6TmV0cndDbGVhckV4cGxvcmUoKQogICAgICBsZXQgdzpuZXRyd19leHBsb3JlX2luZHg9IDAKICAgICAgaWYgIWV4aXN0cygiYjpuZXRyd19jdXJkaXIiKQogICAgICAgbGV0IGI6bmV0cndfY3VyZGlyPSBnZXRjd2QoKQpAQCAtMzc3NSw5ICszODk5LDkgQEAKICAgICAgIGNhdGNoIC9eVmltXCUoKFxhXCspXClcPTpFNDgwLwogICAgICAgIGNhbGwgbmV0cncjRXJyb3JNc2coczpXQVJOSU5HLCdubyBmaWxlcyBtYXRjaGVkIHBhdHRlcm48Jy5wYXR0ZXJuLic+Jyw0NSkKICAgICAgICBpZiAmaGxzIHwgbGV0IGtlZXByZWdzbGFzaD0gczpFeHBsb3JlUGF0SGxzKHBhdHRlcm4pIHwgZW5kaWYKLSAgICAgICBzaWxlbnQhIGxldCBAKiA9IGtlZXByZWdzdGFyCi0gICAgICAgc2lsZW50ISBsZXQgQCsgPSBrZWVwcmVnc3RhcgotICAgICAgIHNpbGVudCEgbGV0IEAvID0ga2VlcHJlZ3NsYXNoCisgICAgICAgc2lsISBsZXQgQCogPSBrZWVwcmVnc3RhcgorICAgICAgIHNpbCEgbGV0IEArID0ga2VlcHJlZ3N0YXIKKyAgICAgICBzaWwhIGxldCBALyA9IGtlZXByZWdzbGFzaAogIiAgICAgICBjYWxsIERyZXQoIm5ldHJ3I0V4cGxvcmUgOiBubyBmaWxlcyBtYXRjaGVkIHBhdHRlcm4iKQogICAgICAgIHJldHVybgogICAgICAgZW5kdHJ5CkBAIC0zODA3LDcgKzM5MzEsNyBAQAogIiAgICAgY2FsbCBEZWNobygidzpuZXRyd19leHBsb3JlX2xpc3RsZW49Ii53Om5ldHJ3X2V4cGxvcmVfbGlzdGxlbikKIAogICAgICBpZiB3Om5ldHJ3X2V4cGxvcmVfbGlzdGxlbiA9PSAwIHx8ICh3Om5ldHJ3X2V4cGxvcmVfbGlzdGxlbiA9PSAxICYmIHc6bmV0cndfZXhwbG9yZV9saXN0WzBdID1+ICdcKlwqXC8nKQotICAgICAgY2FsbCBuZXRydyNFcnJvck1zZyhzOldBUk5JTkcsIm5vIGZpbGVzIG1hdGNoZWQiLDQyKQorICAgICAga2VlcGogY2FsbCBuZXRydyNFcnJvck1zZyhzOldBUk5JTkcsIm5vIGZpbGVzIG1hdGNoZWQiLDQyKQogICAgICAgc2lsISBsZXQgQCogPSBrZWVwcmVnc3RhcgogICAgICAgc2lsISBsZXQgQCsgPSBrZWVwcmVnc3RhcgogICAgICAgc2lsISBsZXQgQC8gPSBrZWVwcmVnc2xhc2gKQEAgLTM4MjUsNyArMzk0OSw3IEBACiAiICAgICBjYWxsIERlY2hvKCJ3cmFwIGluZHggKGluZHg9Ii5pbmR4LiIgbGlzdGxlbj0iLnc6bmV0cndfZXhwbG9yZV9saXN0bGVuLiIpIikKICAgICAgbGV0IGluZHggICAgICAgICAgICAgICAgPSAoaW5keCA8IDApPyAoIHc6bmV0cndfZXhwbG9yZV9saXN0bGVuIC0gMSApIDogMAogICAgICBsZXQgdzpuZXRyd19leHBsb3JlX2luZHg9IGluZHgKLSAgICAgY2FsbCBuZXRydyNFcnJvck1zZyhzOk5PVEUsIm5vIG1vcmUgZmlsZXMgbWF0Y2ggRXhwbG9yZSBwYXR0ZXJuIiw0MykKKyAgICAga2VlcGogY2FsbCBuZXRydyNFcnJvck1zZyhzOk5PVEUsIm5vIG1vcmUgZmlsZXMgbWF0Y2ggRXhwbG9yZSBwYXR0ZXJuIiw0MykKICAgICBlbmRpZgogCiAgICAgZXhlICJsZXQgZGlyZmlsZT0gdzpuZXRyd19leHBsb3JlX2xpc3RbIi5pbmR4LiJdIgpAQCAtMzg0NiwxMyArMzk3MCwxMyBAQAogICAgIGxldCB3Om5ldHJ3X2V4cGxvcmVfbXRjaGNudCA9IGluZHggKyAxCiAgICAgbGV0IHc6bmV0cndfZXhwbG9yZV9idWZuciAgID0gYnVmbnIoIiUiKQogICAgIGxldCB3Om5ldHJ3X2V4cGxvcmVfbGluZSAgICA9IGxpbmUoIi4iKQotICAgIGNhbGwgczpTZXR1cE5ldHJ3U3RhdHVzTGluZSgnJWYgJWglbSVyJT0lOSole05ldHJ3U3RhdHVzTGluZSgpfScpCisgICAga2VlcGogY2FsbCBzOlNldHVwTmV0cndTdGF0dXNMaW5lKCclZiAlaCVtJXIlPSU5KiV7TmV0cndTdGF0dXNMaW5lKCl9JykKICIgICAgY2FsbCBEZWNobygiZXhwbG9yZTogbXRjaGNudD0iLnc6bmV0cndfZXhwbG9yZV9tdGNoY250LiIgYnVmbnI9Ii53Om5ldHJ3X2V4cGxvcmVfYnVmbnIuIiBsaW5lIyIudzpuZXRyd19leHBsb3JlX2xpbmUpCiAKICAgIGVsc2UKICIgICAgY2FsbCBEZWNobygieW91ciB2aW0gZG9lcyBub3QgaGF2ZSArcGF0aF9leHRyYSIpCiAgICAgaWYgIWV4aXN0cygiZzpuZXRyd19xdWlldCIpCi0gICAgIGNhbGwgbmV0cncjRXJyb3JNc2coczpXQVJOSU5HLCJ5b3VyIHZpbSBuZWVkcyB0aGUgK3BhdGhfZXh0cmEgZmVhdHVyZSBmb3IgRXhwbG9yaW5nIHdpdGggKiohIiw0NCkKKyAgICAga2VlcGogY2FsbCBuZXRydyNFcnJvck1zZyhzOldBUk5JTkcsInlvdXIgdmltIG5lZWRzIHRoZSArcGF0aF9leHRyYSBmZWF0dXJlIGZvciBFeHBsb3Jpbmcgd2l0aCAqKiEiLDQ0KQogICAgIGVuZGlmCiAgICAgc2lsISBsZXQgQCogPSBrZWVwcmVnc3RhcgogICAgIHNpbCEgbGV0IEArID0ga2VlcHJlZ3N0YXIKQEAgLTM4NjksOSArMzk5Myw5IEBACiAgICBlbmRpZgogICAgbGV0IG5ld2Rpcj0gZGlybmFtZQogICAgaWYgIWV4aXN0cygiYjpuZXRyd19jdXJkaXIiKQotICAgIGNhbGwgbmV0cncjTG9jYWxCcm93c2VDaGVjayhnZXRjd2QoKSkKKyAgICBrZWVwaiBjYWxsIG5ldHJ3I0xvY2FsQnJvd3NlQ2hlY2soZ2V0Y3dkKCkpCiAgICBlbHNlCi0gICAgY2FsbCBuZXRydyNMb2NhbEJyb3dzZUNoZWNrKHM6TmV0cndCcm93c2VDaGdEaXIoMSxuZXdkaXIpKQorICAgIGtlZXBqIGNhbGwgbmV0cncjTG9jYWxCcm93c2VDaGVjayhzOk5ldHJ3QnJvd3NlQ2hnRGlyKDEsbmV3ZGlyKSkKICAgIGVuZGlmCiAgIGVuZGlmCiAKQEAgLTM5NDQsNiArNDA2OCw0MiBAQAogZW5kZnVuCiAKICIgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisiIHM6TmV0cndGb3JjZUNoZ0RpcjogKGdkIHN1cHBvcnQpIEZvcmNlIHRyZWF0bWVudCBhcyBhIGRpcmVjdG9yeSB7e3syCitmdW4hIHM6TmV0cndGb3JjZUNoZ0Rpcihpc2xvY2FsLG5ld2RpcikKKyIgIGNhbGwgRGZ1bmMoInM6TmV0cndGb3JjZUNoZ0Rpcihpc2xvY2FsPSIuYTppc2xvY2FsLiIgbmV3ZGlyPCIuYTpuZXdkaXIuIj4pIikKKyAgaWYgYTpuZXdkaXIgIX4gJy8kJworICAgIiBvaywgbG9va3MgbGlrZSBmb3JjZSBpcyBuZWVkZWQgdG8gZ2V0IGRpcmVjdG9yeS1zdHlsZSB0cmVhdG1lbnQKKyAgIGlmIGE6bmV3ZGlyID1+ICdAJCcKKyAgICBsZXQgbmV3ZGlyPSBzdWJzdGl0dXRlKGE6bmV3ZGlyLCdAJCcsJy8nLCcnKQorICAgZWxzZWlmIGE6bmV3ZGlyID1+ICdbKj18XFxdJCcKKyAgICBsZXQgbmV3ZGlyPSBzdWJzdGl0dXRlKGE6bmV3ZGlyLCcuJCcsJy8nLCcnKQorICAgZWxzZQorICAgIGxldCBuZXdkaXI9IGE6bmV3ZGlyLicvJworICAgZW5kaWYKKyIgICBjYWxsIERlY2hvKCJhZGp1c3RpbmcgbmV3ZGlyPCIubmV3ZGlyLiI+IGR1ZSB0byBnZCIpCisgIGVsc2UKKyAgICIgc2hvdWxkIGFscmVhZHkgYmUgZ2V0dGluZyB0cmVhdG1lbnQgYXMgYSBkaXJlY3RvcnkKKyAgIGxldCBuZXdkaXI9IGE6bmV3ZGlyCisgIGVuZGlmCisgIGNhbGwgczpOZXRyd0Jyb3dzZUNoZ0RpcihhOmlzbG9jYWwsbmV3ZGlyKQorICBjYWxsIHM6TmV0cndCcm93c2UoYTppc2xvY2FsLG5ld2RpcikKKyIgIGNhbGwgRHJldCgiczpOZXRyd0ZvcmNlQ2hnRGlyIikKK2VuZGZ1bgorCisiIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIiBzOk5ldHJ3Rm9yY2VGaWxlOiAoZ2Ygc3VwcG9ydCkgRm9yY2UgdHJlYXRtZW50IGFzIGEgZmlsZSB7e3syCitmdW4hIHM6TmV0cndGb3JjZUZpbGUoaXNsb2NhbCxuZXdmaWxlKQorIiAgIiAgY2FsbCBEZnVuYygiczpOZXRyd0ZvcmNlRmlsZShpc2xvY2FsPSIuYTppc2xvY2FsLiIgbmV3ZGlyPCIuYTpuZXdkaXIuIj4pIikKKyAgaWYgYTpuZXdmaWxlID1+ICdbL0AqPXxcXF0kJworICAgbGV0IG5ld2ZpbGU9IHN1YnN0aXR1dGUoYTpuZXdmaWxlLCcuJCcsJycsJycpCisgIGVsc2UKKyAgIGxldCBuZXdmaWxlPSBhOm5ld2ZpbGUKKyAgZW5kaWYKKyAgY2FsbCBzOk5ldHJ3QnJvd3NlQ2hnRGlyKGE6aXNsb2NhbCxuZXdmaWxlKQorIiAgY2FsbCBEcmV0KCJzOk5ldHJ3Rm9yY2VGaWxlIikKK2VuZGZ1bgorCisiIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogIiBzOk5ldHJ3SGlkZTogdGhpcyBmdW5jdGlvbiBpcyBpbnZva2VkIGJ5IHRoZSAiYSIgbWFwIGZvciBicm93c2luZyB7e3syCiAiICAgICAgICAgIGFuZCBzd2l0Y2hlcyB0aGUgaGlkaW5nIG1vZGUuICBUaGUgYWN0dWFsIGhpZGluZyBpcyBkb25lIGJ5CiAiICAgICAgICAgIHM6TmV0cndMaXN0SGlkZSgpLgpAQCAtMzk3Nyw3ICs0MTM3LDcgQEAKICIgICAgIGNhbGwgRGVjaG8oImhpZGU6IGc6bmV0cndfbGlzdF9oaWRlPCIuZzpuZXRyd19saXN0X2hpZGUuIj4iKQogICAgIGVuZGlmCiAgICBlbmRmb3IKLSAgIGNhbGwgczpOZXRyd1VubWFya0xpc3QoYnVmbnIoIiUiKSxiOm5ldHJ3X2N1cmRpcikKKyAgIGtlZXBqIGNhbGwgczpOZXRyd1VubWFya0xpc3QoYnVmbnIoIiUiKSxiOm5ldHJ3X2N1cmRpcikKICAgIGxldCBnOm5ldHJ3X2hpZGU9IDEKIAogICBlbHNlCkBAIC0zOTg2LDE0ICs0MTQ2LDE0IEBACiAgICBsZXQgZzpuZXRyd19oaWRlPShnOm5ldHJ3X2hpZGUrMSklMwogICAgZXhlICJrZWVwaiBub3JtISAwIgogICAgaWYgZzpuZXRyd19oaWRlICYmIGc6bmV0cndfbGlzdF9oaWRlID09ICIiCi0gICAgY2FsbCBuZXRydyNFcnJvck1zZyhzOldBUk5JTkcsInlvdXIgaGlkaW5nIGxpc3QgaXMgZW1wdHkhIiw0OSkKKyAgICBrZWVwaiBjYWxsIG5ldHJ3I0Vycm9yTXNnKHM6V0FSTklORywieW91ciBoaWRpbmcgbGlzdCBpcyBlbXB0eSEiLDQ5KQogIiAgICBjYWxsIERyZXQoIk5ldHJ3SGlkZSIpCiAgICAgcmV0dXJuCiAgICBlbmRpZgogICBlbmRpZgogCi0gIGNhbGwgczpOZXRyd1JlZnJlc2goYTppc2xvY2FsLHM6TmV0cndCcm93c2VDaGdEaXIoYTppc2xvY2FsLCcuLycpKQotICBjYWxsIG5ldHJ3I05ldHJ3UmVzdG9yZVBvc24oc3Zwb3MpCisgIGtlZXBqIGNhbGwgczpOZXRyd1JlZnJlc2goYTppc2xvY2FsLHM6TmV0cndCcm93c2VDaGdEaXIoYTppc2xvY2FsLCcuLycpKQorICBrZWVwaiBjYWxsIG5ldHJ3I05ldHJ3UmVzdG9yZVBvc24oc3Zwb3MpCiAiICBjYWxsIERyZXQoIk5ldHJ3SGlkZSIpCiBlbmRmdW4KIApAQCAtNDAxNCw4ICs0MTc0LDggQEAKICAgZW5kaWYKIAogICAiIHJlZnJlc2ggc2NyZWVuIGFuZCByZXR1cm4gdG8gc2F2ZWQgcG9zaXRpb24KLSAgY2FsbCBzOk5ldHJ3UmVmcmVzaChhOmlzbG9jYWwsczpOZXRyd0Jyb3dzZUNoZ0RpcihhOmlzbG9jYWwsJy4vJykpCi0gIGNhbGwgbmV0cncjTmV0cndSZXN0b3JlUG9zbihzdnBvcykKKyAga2VlcGogY2FsbCBzOk5ldHJ3UmVmcmVzaChhOmlzbG9jYWwsczpOZXRyd0Jyb3dzZUNoZ0RpcihhOmlzbG9jYWwsJy4vJykpCisgIGtlZXBqIGNhbGwgbmV0cncjTmV0cndSZXN0b3JlUG9zbihzdnBvcykKICIgIGNhbGwgRHJldCgiczpOZXRyd0hpZGRlbiIpCiBlbmRmdW4KIApAQCAtNDA2MCw4ICs0MjIwLDExIEBACiAiICBjYWxsIERmdW5jKCJzOk5ldHJ3TGVmdG1vdXNlKGlzbG9jYWw9Ii5hOmlzbG9jYWwuIikiKQogCiAgICIgY2hlY2sgaWYgdGhlIHN0YXR1cyBiYXIgd2FzIGNsaWNrZWQgb24gaW5zdGVhZCBvZiBhIGZpbGUvZGlyZWN0b3J5IG5hbWUKKyAgd2hpbGUgZ2V0Y2hhcigwKSAhPSAwCisgICAiY2xlYXIgdGhlIGlucHV0IHN0cmVhbQorICBlbmR3aGlsZQogICBjYWxsIGZlZWRrZXlzKCJcPExlZnRNb3VzZT4iKQotICBsZXQgYz0gZ2V0Y2hhcigpCisgIGxldCBjICAgICAgICAgID0gZ2V0Y2hhcigpCiAgIGxldCBtb3VzZV9sbnVtID0gdjptb3VzZV9sbnVtCiAgIGxldCB3bGFzdGxpbmUgID0gbGluZSgndyQnKQogICBsZXQgbGFzdGxpbmUgICA9IGxpbmUoJyQnKQpAQCAtNDA3OSwxMSArNDI0MiwxMSBAQAogCiAgIGlmIGE6aXNsb2NhbAogICAgaWYgZXhpc3RzKCJiOm5ldHJ3X2N1cmRpciIpCi0gICAgY2FsbCBuZXRydyNMb2NhbEJyb3dzZUNoZWNrKHM6TmV0cndCcm93c2VDaGdEaXIoMSxzOk5ldHJ3R2V0V29yZCgpKSkKKyAgICBrZWVwaiBjYWxsIG5ldHJ3I0xvY2FsQnJvd3NlQ2hlY2soczpOZXRyd0Jyb3dzZUNoZ0RpcigxLHM6TmV0cndHZXRXb3JkKCkpKQogICAgZW5kaWYKICAgZWxzZQogICAgaWYgZXhpc3RzKCJiOm5ldHJ3X2N1cmRpciIpCi0gICAgY2FsbCBzOk5ldHJ3QnJvd3NlKDAsczpOZXRyd0Jyb3dzZUNoZ0RpcigwLHM6TmV0cndHZXRXb3JkKCkpKQorICAgIGtlZXBqIGNhbGwgczpOZXRyd0Jyb3dzZSgwLHM6TmV0cndCcm93c2VDaGdEaXIoMCxzOk5ldHJ3R2V0V29yZCgpKSkKICAgIGVuZGlmCiAgIGVuZGlmCiAiICBjYWxsIERyZXQoInM6TmV0cndMZWZ0bW91c2UiKQpAQCAtNDA5Myw3ICs0MjU2LDcgQEAKICIgczpOZXRyd0xpc3RIaWRlOiB1c2VzIFtyYW5nZV1nfi4uLn5kIHRvIGRlbGV0ZSBmaWxlcyB0aGF0IG1hdGNoIGNvbW1hIHt7ezIKICIgc2VwYXJhdGVkIHBhdHRlcm5zIGdpdmVuIGluIGc6bmV0cndfbGlzdF9oaWRlCiBmdW4hIHM6TmV0cndMaXN0SGlkZSgpCi0iICBjYWxsIERmdW5jKCJOZXRyd0xpc3RIaWRlKCkgaGlkZT0iLmc6bmV0cndfaGlkZS4iIGxpc3RoaWRlPCIuZzpuZXRyd19saXN0X2hpZGUuIj4iKQorIiAgY2FsbCBEZnVuYygiTmV0cndMaXN0SGlkZSgpIGc6bmV0cndfaGlkZT0iLmc6bmV0cndfaGlkZS4iIGc6bmV0cndfbGlzdF9oaWRlPCIuZzpuZXRyd19saXN0X2hpZGUuIj4iKQogCiAgICIgZmluZCBhIGNoYXJhY3RlciBub3QgaW4gdGhlICJoaWRlIiBzdHJpbmcgdG8gdXNlIGFzIGEgc2VwYXJhdG9yIGZvciA6ZyBhbmQgOnYgY29tbWFuZHMKICAgIiBIb3ctaXQtd29ya3M6IHRha2UgdGhlIGhpZGluZyBjb21tYW5kLCBjb252ZXJ0IGl0IGludG8gYSByYW5nZS4gIER1cGxpY2F0ZQpAQCAtNDEyNiw2ICs0Mjg5LDEwIEBACiAgICBleGUgJ3NpbCBrZWVwaiAnLnc6bmV0cndfYmFubmVyY250LicsJHNAXlwlKCAvLUtFRVAtLyBcKVwrQEBlJwogICBlbmRpZgogCisgICIgcmVtb3ZlIGFueSBibGFuayBsaW5lcyB0aGF0IGhhdmUgc29tZWhvdyByZW1haW5lZC4KKyAgIiBUaGlzIHNlZW1zIHRvIGhhcHBlbiB1bmRlciBXaW5kb3dzLgorICBleGUgJ3NpbCEga2VlcGogMSwkZ0BeXHMqJEBkJworCiAiICBjYWxsIERyZXQoIk5ldHJ3TGlzdEhpZGUiKQogZW5kZnVuCiAKQEAgLTQxNDUsNyArNDMxMiw3IEBACiAiICBjYWxsIERlY2hvKCJuZXcgZzpuZXRyd19saXN0X2hpZGU8Ii5nOm5ldHJ3X2xpc3RfaGlkZS4iPiIpCiAKICAgIiByZWZyZXNoIHRoZSBsaXN0aW5nCi0gIHNpbGVudCBrZWVwaiBjYWxsIHM6TmV0cndSZWZyZXNoKGE6aXNsb2NhbCxzOk5ldHJ3QnJvd3NlQ2hnRGlyKGE6aXNsb2NhbCwiLi8iKSkKKyAgc2lsIGtlZXBqIGNhbGwgczpOZXRyd1JlZnJlc2goYTppc2xvY2FsLHM6TmV0cndCcm93c2VDaGdEaXIoYTppc2xvY2FsLCIuLyIpKQogCiAgICIgcmVzdG9yZSBjdXJzb3IgcG9zaXRpb24KICAgY2FsbCBuZXRydyNOZXRyd1Jlc3RvcmVQb3NuKHN2cG9zKQpAQCAtNDE2NSw4ICs0MzMyLDggQEAKIAogICAiIHJlZnJlc2ggdGhlIGxpc3RpbmcKICAgbGV0IGc6bmV0cndfc29ydF9zZXF1ZW5jZT0gbmV3c29ydHNlcQotICBjYWxsIHM6TmV0cndSZWZyZXNoKGE6aXNsb2NhbCxzOk5ldHJ3QnJvd3NlQ2hnRGlyKGE6aXNsb2NhbCwnLi8nKSkKLSAgY2FsbCBuZXRydyNOZXRyd1Jlc3RvcmVQb3NuKHN2cG9zKQorICBrZWVwaiBjYWxsIHM6TmV0cndSZWZyZXNoKGE6aXNsb2NhbCxzOk5ldHJ3QnJvd3NlQ2hnRGlyKGE6aXNsb2NhbCwnLi8nKSkKKyAga2VlcGogY2FsbCBuZXRydyNOZXRyd1Jlc3RvcmVQb3NuKHN2cG9zKQogCiAiICBjYWxsIERyZXQoIk5ldFNvcnRTZXF1ZW5jZSIpCiBlbmRmdW4KQEAgLTQxOTgsMTQgKzQzNjUsMTQgQEAKICIgICBjYWxsIERlY2hvKCJmdWxsbmV3ZGlyPCIuZnVsbG5ld2Rpci4iPiIpCiAgICBpZiBpc2RpcmVjdG9yeShmdWxsbmV3ZGlyKQogICAgIGlmICFleGlzdHMoImc6bmV0cndfcXVpZXQiKQotICAgICBjYWxsIG5ldHJ3I0Vycm9yTXNnKHM6V0FSTklORywiPCIubmV3ZGlybmFtZS4iPiBpcyBhbHJlYWR5IGEgZGlyZWN0b3J5ISIsMjQpCisgICAgIGtlZXBqIGNhbGwgbmV0cncjRXJyb3JNc2coczpXQVJOSU5HLCI8Ii5uZXdkaXJuYW1lLiI+IGlzIGFscmVhZHkgYSBkaXJlY3RvcnkhIiwyNCkKICAgICBlbmRpZgogIiAgICBjYWxsIERyZXQoIk5ldHJ3TWFrZURpciA6IGRpcmVjdG9yeTwiLm5ld2Rpcm5hbWUuIj4gZXhpc3RzIHByZXZpb3VzbHkiKQogICAgIHJldHVybgogICAgZW5kaWYKICAgIGlmIHM6RmlsZVJlYWRhYmxlKGZ1bGxuZXdkaXIpCiAgICAgaWYgIWV4aXN0cygiZzpuZXRyd19xdWlldCIpCi0gICAgIGNhbGwgbmV0cncjRXJyb3JNc2coczpXQVJOSU5HLCI8Ii5uZXdkaXJuYW1lLiI+IGlzIGFscmVhZHkgYSBmaWxlISIsMjUpCisgICAgIGtlZXBqIGNhbGwgbmV0cncjRXJyb3JNc2coczpXQVJOSU5HLCI8Ii5uZXdkaXJuYW1lLiI+IGlzIGFscmVhZHkgYSBmaWxlISIsMjUpCiAgICAgZW5kaWYKICIgICAgY2FsbCBEcmV0KCJOZXRyd01ha2VEaXIgOiBmaWxlPCIubmV3ZGlybmFtZS4iPiBleGlzdHMgcHJldmlvdXNseSIpCiAgICAgcmV0dXJuCkBAIC00MjE5LDcgKzQzODYsNyBAQAogICAgIGxldCBuZXRyd19vcmlnZGlyPSBzOk5ldHJ3R2V0Y3dkKDEpCiAgICAgZXhlICdrZWVwaiBsY2QgJy5mbmFtZWVzY2FwZShiOm5ldHJ3X2N1cmRpcikKICIgICAgY2FsbCBEZWNobygibmV0cndfb3JpZ2RpcjwiLm5ldHJ3X29yaWdkaXIuIj46IGxjZCBiOm5ldHJ3X2N1cmRpcjwiLmZuYW1lZXNjYXBlKGI6bmV0cndfY3VyZGlyKS4iPiIpCi0iICAgIGNhbGwgRGVjaG8oImV4ZSBzaWxlbnQhICEiLmc6bmV0cndfbG9jYWxfbWtkaXIuJyAnLnNoZWxsZXNjYXBlKG5ld2Rpcm5hbWUsMSkpCisiICAgIGNhbGwgRGVjaG8oImV4ZSBzaWwhICEiLmc6bmV0cndfbG9jYWxfbWtkaXIuJyAnLnNoZWxsZXNjYXBlKG5ld2Rpcm5hbWUsMSkpCiAgICAgZXhlICJzaWwhICEiLmc6bmV0cndfbG9jYWxfbWtkaXIuJyAnLnNoZWxsZXNjYXBlKG5ld2Rpcm5hbWUsMSkKICAgICBpZiAhZzpuZXRyd19rZWVwZGlyCiAgICAgIGV4ZSAna2VlcGogbGNkICcuZm5hbWVlc2NhcGUobmV0cndfb3JpZ2RpcikKQEAgLTQyNDMsMjQgKzQ0MTAsMjQgQEAKICIgICBjYWxsIERlY2hvKCJyZW1vdGUgbWtkaXIiKQogICAgbGV0IG1rZGlyY21kICA9IHM6TWFrZVNzaENtZChnOm5ldHJ3X21rZGlyX2NtZCkKICAgIGxldCBuZXdkaXJuYW1lPSBzdWJzdGl0dXRlKGI6bmV0cndfY3VyZGlyLCdeXCUoLlx7LX0vXClcezN9XCguKlwpJCcsJ1wxJywnJykubmV3ZGlybmFtZQotIiAgIGNhbGwgRGVjaG8oImV4ZSBzaWxlbnQhICEiLm1rZGlyY21kLiIgIi5zaGVsbGVzY2FwZShuZXdkaXJuYW1lLDEpKQorIiAgIGNhbGwgRGVjaG8oImV4ZSBzaWwhICEiLm1rZGlyY21kLiIgIi5zaGVsbGVzY2FwZShuZXdkaXJuYW1lLDEpKQogICAgZXhlICJzaWwhICEiLm1rZGlyY21kLiIgIi5zaGVsbGVzY2FwZShuZXdkaXJuYW1lLDEpCiAgICBpZiB2OnNoZWxsX2Vycm9yID09IDAKICAgICAiIHJlZnJlc2ggbGlzdGluZwogICAgIGxldCBzdnBvcz0gbmV0cncjTmV0cndTYXZlUG9zbigpCi0gICAgY2FsbCBzOk5ldHJ3UmVmcmVzaCgwLHM6TmV0cndCcm93c2VDaGdEaXIoMCwnLi8nKSkKLSAgICBjYWxsIG5ldHJ3I05ldHJ3UmVzdG9yZVBvc24oc3Zwb3MpCisgICAga2VlcGogY2FsbCBzOk5ldHJ3UmVmcmVzaCgwLHM6TmV0cndCcm93c2VDaGdEaXIoMCwnLi8nKSkKKyAgICBrZWVwaiBjYWxsIG5ldHJ3I05ldHJ3UmVzdG9yZVBvc24oc3Zwb3MpCiAgICBlbHNlaWYgIWV4aXN0cygiZzpuZXRyd19xdWlldCIpCi0gICAgY2FsbCBuZXRydyNFcnJvck1zZyhzOkVSUk9SLCJ1bmFibGUgdG8gbWFrZSBkaXJlY3Rvcnk8Ii5uZXdkaXJuYW1lLiI+IiwyNykKKyAgICBrZWVwaiBjYWxsIG5ldHJ3I0Vycm9yTXNnKHM6RVJST1IsInVuYWJsZSB0byBtYWtlIGRpcmVjdG9yeTwiLm5ld2Rpcm5hbWUuIj4iLDI3KQogICAgZW5kaWYKICIgICByZWRyYXchCiAKICAgZWxzZWlmIGI6bmV0cndfbWV0aG9kID09IDIKICAgICIgQ09NQkFLIC0tIGZ1dHVyZSB3b3JrCi0gICBjYWxsIG5ldHJ3I0Vycm9yTXNnKHM6RVJST1IsIm1ha2luZyBkaXJlY3RvcmllcyB2aWEgZnRwIG5vdCBjdXJyZW50bHkgc3VwcG9ydGVkIiw2OCkKKyAgIGtlZXBqIGNhbGwgbmV0cncjRXJyb3JNc2coczpFUlJPUiwibWFraW5nIGRpcmVjdG9yaWVzIHZpYSBmdHAgbm90IGN1cnJlbnRseSBzdXBwb3J0ZWQiLDY4KQogICBlbHNlaWYgYjpuZXRyd19tZXRob2QgPT0gMwogICAgIiBDT01CQUsgLS0gZnV0dXJlIHdvcmsKLSAgIGNhbGwgbmV0cncjRXJyb3JNc2coczpFUlJPUiwibWFraW5nIGRpcmVjdG9yaWVzIHZpYSBmdHAgbm90IGN1cnJlbnRseSBzdXBwb3J0ZWQiLDY4KQorICAga2VlcGogY2FsbCBuZXRydyNFcnJvck1zZyhzOkVSUk9SLCJtYWtpbmcgZGlyZWN0b3JpZXMgdmlhIGZ0cCBub3QgY3VycmVudGx5IHN1cHBvcnRlZCIsNjgpCiAgIGVuZGlmCiAKICIgIGNhbGwgRHJldCgiTmV0cndNYWtlRGlyIikKQEAgLTQyODMsMTQgKzQ0NTAsMTQgQEAKICIKICIgIENyZWF0ZXMgYSBidWZmZXIgdmVyc2lvbiBvZiBpc2xvY2FsCiAiICAgIGI6bmV0cndfaXNsb2NhbAotIgogZnVuISBzOk5ldHJ3TWFya0ZpbGUoaXNsb2NhbCxmbmFtZSkKICIgIGNhbGwgRGZ1bmMoInM6TmV0cndNYXJrRmlsZShpc2xvY2FsPSIuYTppc2xvY2FsLiIgZm5hbWU8Ii5hOmZuYW1lLiI+KSIpCiAgIGxldCBjdXJidWZucj0gYnVmbnIoIiUiKQogICBsZXQgY3VyZGlyICA9IGI6bmV0cndfY3VyZGlyCiAgIGxldCB0cmFpbGVyID0gJ1tAPXxcL1wqXVw9XD4nCisKICAgaWYgZXhpc3RzKCJzOm5ldHJ3bWFya2ZpbGVsaXN0X3tjdXJidWZucn0iKQotICAgIiBtYXJrZmlsZSBsaXN0IGV4aXN0cworICAgIiBtYXJrZmlsZSBsaXN0IHByZS1leGlzdHMKICIgICBjYWxsIERlY2hvKCJzdGFydGluZyBzOm5ldHJ3bWFya2ZpbGVsaXN0X3tjdXJidWZucn08Ii5zdHJpbmcoczpuZXRyd21hcmtmaWxlbGlzdF97Y3VyYnVmbnJ9KS4iPiIpCiAiICAgY2FsbCBEZWNobygic3RhcnRpbmcgczpuZXRyd21hcmtmaWxlbXRjaF97Y3VyYnVmbnJ9PCIuczpuZXRyd21hcmtmaWxlbXRjaF97Y3VyYnVmbnJ9LiI+IikKICAgIGxldCBiOm5ldHJ3X2lzbG9jYWw9IGE6aXNsb2NhbApAQCAtNDM3Nyw3ICs0NTQ0LDcgQEAKICIgICBjYWxsIERlY2hvKCIybWF0Y2ggbm9uZSIpCiAgICAybWF0Y2ggbm9uZQogICBlbmRpZgotIiAgY2FsbCBEcmV0KCJzOk5ldHJ3TWFya0ZpbGUgOiBuZXRyd21hcmtmaWxlbGlzdF8iLmN1cmJ1Zm5yLiI8Ii4oZXhpc3RzKCJzOm5ldHJ3bWFya2ZpbGVsaXN0X3tjdXJidWZucn0iKT8gc3RyaW5nKHM6bmV0cndtYXJrZmlsZWxpc3Rfe2N1cmJ1Zm5yfSkgOiAiIGRvZXNuJ3QgZXhpc3QiKS4iPiIpCisiICBjYWxsIERyZXQoInM6TmV0cndNYXJrRmlsZSA6IHM6bmV0cndtYXJrZmlsZWxpc3RfIi5jdXJidWZuci4iPCIuKGV4aXN0cygiczpuZXRyd21hcmtmaWxlbGlzdF97Y3VyYnVmbnJ9Iik/IHN0cmluZyhzOm5ldHJ3bWFya2ZpbGVsaXN0X3tjdXJidWZucn0pIDogIiBkb2Vzbid0IGV4aXN0IikuIj4iKQogZW5kZnVuCiAKICIgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkBAIC00NDEzLDEwICs0NTgwLDEwIEBACiAgICAgICAgaWYgYTppc2xvY2FsCiAJY2FsbCBzeXN0ZW0oZXhlLiIgIi5mbmFtZSkKICAgICAgICBlbHNlCi0gICAgICAgIGNhbGwgczpSZW1vdGVTeXN0ZW0oZXhlLiIgIi5mbmFtZSkKKyAgICAgICAga2VlcGogY2FsbCBzOlJlbW90ZVN5c3RlbShleGUuIiAiLmZuYW1lKQogICAgICAgIGVuZGlmCiAgICAgICBlbHNlCi0gICAgICAgY2FsbCBuZXRydyNFcnJvck1zZyhzOldBUk5JTkcsInVuYWJsZSB0byBhcHBseTwiLmV4ZS4iPiB0byBmaWxlPCIuZm5hbWUuIj4iLDUwKQorICAgICAgIGtlZXBqIGNhbGwgbmV0cncjRXJyb3JNc2coczpXQVJOSU5HLCJ1bmFibGUgdG8gYXBwbHk8Ii5leGUuIj4gdG8gZmlsZTwiLmZuYW1lLiI+Iiw1MCkKICAgICAgIGVuZGlmCiAgICAgICBicmVhawogICAgICBlbmRpZgpAQCAtNDQyOSwxMiArNDU5NiwxMiBAQAogICAgICBjYWxsIHN5c3RlbShuZXRydyNXaW5QYXRoKGc6bmV0cndfY29tcHJlc3MpLiIgIi5zaGVsbGVzY2FwZShzOkNvbXBvc2VQYXRoKGI6bmV0cndfY3VyZGlyLGZuYW1lKSkpCiAgICAgZWxzZQogICAgICAiIGZuYW1lIG5vdCBhIGNvbXByZXNzZWQgZmlsZSwgc28gY29tcHJlc3MgaXQKLSAgICAgY2FsbCBzOlJlbW90ZVN5c3RlbShuZXRydyNXaW5QYXRoKGc6bmV0cndfY29tcHJlc3MpLiIgIi5zaGVsbGVzY2FwZShmbmFtZSkpCisgICAgIGtlZXBqIGNhbGwgczpSZW1vdGVTeXN0ZW0obmV0cncjV2luUGF0aChnOm5ldHJ3X2NvbXByZXNzKS4iICIuc2hlbGxlc2NhcGUoZm5hbWUpKQogICAgIGVuZGlmCiAgICBlbmRmb3IKICAgIGNhbGwgczpOZXRyd1VubWFya0xpc3QoY3VyYnVmbnIsY3VyZGlyKQotICAgY2FsbCBzOk5ldHJ3UmVmcmVzaChhOmlzbG9jYWwsczpOZXRyd0Jyb3dzZUNoZ0RpcihhOmlzbG9jYWwsJy4vJykpCi0gICBjYWxsIG5ldHJ3I05ldHJ3UmVzdG9yZVBvc24oc3Zwb3MpCisgICBrZWVwaiBjYWxsIHM6TmV0cndSZWZyZXNoKGE6aXNsb2NhbCxzOk5ldHJ3QnJvd3NlQ2hnRGlyKGE6aXNsb2NhbCwnLi8nKSkKKyAgIGtlZXBqIGNhbGwgbmV0cncjTmV0cndSZXN0b3JlUG9zbihzdnBvcykKICAgZW5kaWYKICIgIGNhbGwgRHJldCgiczpOZXRyd01hcmtGaWxlQ29tcHJlc3MiKQogZW5kZnVuCkBAIC00NDUxLDEzICs0NjE4LDEzIEBACiAKICAgIiBzYW5pdHkgY2hlY2tzCiAgIGlmICFleGlzdHMoInM6bmV0cndtYXJrZmlsZWxpc3Rfe2J1Zm5yKCclJyl9IikgfHwgZW1wdHkoczpuZXRyd21hcmtmaWxlbGlzdF97YnVmbnIoJyUnKX0pCi0gICBjYWxsIG5ldHJ3I0Vycm9yTXNnKDIsInRoZXJlIGFyZSBubyBtYXJrZWQgZmlsZXMgaW4gdGhpcyB3aW5kb3cgKDpoZWxwIG5ldHJ3LW1mKSIsNjYpCisgICBrZWVwaiBjYWxsIG5ldHJ3I0Vycm9yTXNnKDIsInRoZXJlIGFyZSBubyBtYXJrZWQgZmlsZXMgaW4gdGhpcyB3aW5kb3cgKDpoZWxwIG5ldHJ3LW1mKSIsNjYpCiAiICAgY2FsbCBEcmV0KCJzOk5ldHJ3TWFya0ZpbGVDb3B5IDAiKQogICAgcmV0dXJuIDAKICAgZW5kaWYKICIgIGNhbGwgRGVjaG8oInNhbml0eSBjaGsgcGFzc2VkOiBzOm5ldHJ3bWFya2ZpbGVsaXN0XyIuYnVmbnIoJyUnKS4iPCIuc3RyaW5nKHM6bmV0cndtYXJrZmlsZWxpc3Rfe2J1Zm5yKCclJyl9KSkKICAgaWYgIWV4aXN0cygiczpuZXRyd21mdGd0IikKLSAgIGNhbGwgbmV0cncjRXJyb3JNc2coMiwieW91ciBtYXJrZWQgZmlsZSB0YXJnZXQgaXMgZW1wdHkhICg6aGVscCBuZXRydy1tdCkiLDY3KQorICAga2VlcGogY2FsbCBuZXRydyNFcnJvck1zZygyLCJ5b3VyIG1hcmtlZCBmaWxlIHRhcmdldCBpcyBlbXB0eSEgKDpoZWxwIG5ldHJ3LW10KSIsNjcpCiAiICAgY2FsbCBEcmV0KCJzOk5ldHJ3TWFya0ZpbGVDb3B5IDAiKQogICAgcmV0dXJuIDAKICAgZW5kaWYKQEAgLTQ0NzUsMTEgKzQ2NDIsMTEgQEAKICAgZWxzZWlmICBhOmlzbG9jYWwgJiYgIXM6bmV0cndtZnRndF9pc2xvY2FsCiAgICAiIENvcHkgbWFya2VkIGZpbGVzLCBsb2NhbCBkaXJlY3RvcnkgdG8gcmVtb3RlIGRpcmVjdG9yeQogIiAgIGNhbGwgRGVjaG8oImNvcHkgZnJvbSBsb2NhbCB0byByZW1vdGUiKQotICAgY2FsbCBzOk5ldHJ3VXBsb2FkKHM6bmV0cndtYXJrZmlsZWxpc3Rfe2J1Zm5yKCclJyl9LHM6bmV0cndtZnRndCkKKyAgIGtlZXBqIGNhbGwgczpOZXRyd1VwbG9hZChzOm5ldHJ3bWFya2ZpbGVsaXN0X3tidWZucignJScpfSxzOm5ldHJ3bWZ0Z3QpCiAKICAgZWxzZWlmICFhOmlzbG9jYWwgJiYgIHM6bmV0cndtZnRndF9pc2xvY2FsCiAiICAgY2FsbCBEZWNobygiY29weSBmcm9tIHJlbW90ZSB0byBsb2NhbCIpCi0gICBjYWxsIG5ldHJ3I05ldHJ3T2J0YWluKGE6aXNsb2NhbCxzOm5ldHJ3bWFya2ZpbGVsaXN0X3tidWZucignJScpfSxzOm5ldHJ3bWZ0Z3QpCisgICBrZWVwaiBjYWxsIG5ldHJ3I05ldHJ3T2J0YWluKGE6aXNsb2NhbCxzOm5ldHJ3bWFya2ZpbGVsaXN0X3tidWZucignJScpfSxzOm5ldHJ3bWZ0Z3QpCiAKICAgZWxzZWlmICFhOmlzbG9jYWwgJiYgIXM6bmV0cndtZnRndF9pc2xvY2FsCiAiICAgY2FsbCBEZWNobygiY29weSBmcm9tIHJlbW90ZSB0byByZW1vdGUiKQpAQCAtNDQ5NSwxMiArNDY2MiwxMiBAQAogICAgZW5kaWYKICAgIGlmIGlzZGlyZWN0b3J5KHRtcGRpcikKICAgICBleGUgImtlZXBqIGxjZCAiLmZuYW1lZXNjYXBlKHRtcGRpcikKLSAgICBjYWxsIG5ldHJ3I05ldHJ3T2J0YWluKGE6aXNsb2NhbCxzOm5ldHJ3bWFya2ZpbGVsaXN0X3tidWZucignJScpfSx0bXBkaXIpCisgICAga2VlcGogY2FsbCBuZXRydyNOZXRyd09idGFpbihhOmlzbG9jYWwsczpuZXRyd21hcmtmaWxlbGlzdF97YnVmbnIoJyUnKX0sdG1wZGlyKQogICAgIGxldCBsb2NhbGZpbGVzPSBtYXAoZGVlcGNvcHkoczpuZXRyd21hcmtmaWxlbGlzdF97YnVmbnIoJyUnKX0pLCdzdWJzdGl0dXRlKHY6dmFsLCJeLiovIiwiIiwiIiknKQotICAgIGNhbGwgczpOZXRyd1VwbG9hZChsb2NhbGZpbGVzLHM6bmV0cndtZnRndCkKKyAgICBrZWVwaiBjYWxsIHM6TmV0cndVcGxvYWQobG9jYWxmaWxlcyxzOm5ldHJ3bWZ0Z3QpCiAgICAgaWYgZ2V0Y3dkKCkgPT0gdG1wZGlyCiAgICAgIGZvciBmbmFtZSBpbiBzOm5ldHJ3bWFya2ZpbGVsaXN0X3tidWZucignJScpfQotICAgICAgY2FsbCBzOk5ldHJ3RGVsZXRlKGZuYW1lKQorICAgICAga2VlcGogY2FsbCBzOk5ldHJ3RGVsZXRlKGZuYW1lKQogICAgICBlbmRmb3IKICAgICAgZXhlICJrZWVwaiBsY2QgIi5mbmFtZWVzY2FwZShjdXJkaXIpCiAgICAgIGV4ZSAic2lsICEiLmc6bmV0cndfbG9jYWxfcm1kaXIuIiAiLnNoZWxsZXNjYXBlKHRtcGRpciwxKQpAQCAtNDUyMywxMCArNDY5MCwxMCBAQAogICAgY2FsbCBzOk5ldHJ3UmVmcmVzaERpcihzOm5ldHJ3bWZ0Z3RfaXNsb2NhbCxzOm5ldHJ3bWZ0Z3QpCiAgIGVuZGlmCiAgIGlmIGE6aXNsb2NhbAotICAgY2FsbCBzOk5ldHJ3UmVmcmVzaERpcihhOmlzbG9jYWwsYjpuZXRyd19jdXJkaXIpCisgICBrZWVwaiBjYWxsIHM6TmV0cndSZWZyZXNoRGlyKGE6aXNsb2NhbCxjdXJkaXIpCiAgIGVuZGlmCiAgIGlmIGc6bmV0cndfZmFzdGJyb3dzZSA8PSAxCi0gICBjYWxsIHM6TG9jYWxCcm93c2VTaGVsbENtZFJlZnJlc2goKQorICAga2VlcGogY2FsbCBzOkxvY2FsQnJvd3NlU2hlbGxDbWRSZWZyZXNoKCkKICAgZW5kaWYKICAgCiAiICBjYWxsIERyZXQoInM6TmV0cndNYXJrRmlsZUNvcHkgMSIpCkBAIC00NTgxLDggKzQ3NDgsOCBAQAogICAgIiB1bm1hcmsgbWFya2VkZmlsZSBsaXN0CiAiICAgY2FsbCBzOk5ldHJ3VW5tYXJrTGlzdChjdXJidWZucixjdXJkaXIpCiAgICBjYWxsIHM6TmV0cndVbm1hcmtBbGwoKQotIiAgIGNhbGwgRGVjaG8oImV4ZSBzaWxlbnQgYXJncyAiLmZsaXN0KQotICAgZXhlICJzaWxlbnQgYXJncyAiLmZsaXN0CisiICAgY2FsbCBEZWNobygiZXhlIHNpbCBhcmdzICIuZmxpc3QpCisgICBleGUgInNpbCBhcmdzICIuZmxpc3QKICAgZW5kaWYKICAgCiAiICBjYWxsIERyZXQoInM6TmV0cndNYXJrRmlsZUVkaXQiKQpAQCAtNDYyNyw3ICs0Nzk0LDcgQEAKICAgICAgbGV0IHJldD0gczpSZW1vdGVTeXN0ZW0oeGNtZCkKICAgICBlbmRpZgogICAgIGlmIHY6c2hlbGxfZXJyb3IgPCAwCi0gICAgIGNhbGwgbmV0cncjRXJyb3JNc2coczpFUlJPUiwiY29tbWFuZDwiLnhjbWQuIj4gZmFpbGVkLCBhYm9ydGluZyIsNTQpCisgICAgIGtlZXBqIGNhbGwgbmV0cncjRXJyb3JNc2coczpFUlJPUiwiY29tbWFuZDwiLnhjbWQuIj4gZmFpbGVkLCBhYm9ydGluZyIsNTQpCiAgICAgIGJyZWFrCiAgICAgZWxzZQogICAgICBlY2hvIHJldApAQCAtNDYzOCwxMCArNDgwNSwxMCBAQAogICAgY2FsbCBzOk5ldHJ3VW5tYXJrTGlzdChjdXJidWZucixjdXJkaXIpCiAKICAgICIgcmVmcmVzaCB0aGUgbGlzdGluZwotICAgY2FsbCBzOk5ldHJ3UmVmcmVzaChhOmlzbG9jYWwsczpOZXRyd0Jyb3dzZUNoZ0RpcihhOmlzbG9jYWwsJy4vJykpCi0gICBjYWxsIG5ldHJ3I05ldHJ3UmVzdG9yZVBvc24oc3Zwb3MpCisgICBrZWVwaiBjYWxsIHM6TmV0cndSZWZyZXNoKGE6aXNsb2NhbCxzOk5ldHJ3QnJvd3NlQ2hnRGlyKGE6aXNsb2NhbCwnLi8nKSkKKyAgIGtlZXBqIGNhbGwgbmV0cncjTmV0cndSZXN0b3JlUG9zbihzdnBvcykKICAgZWxzZQotICAgY2FsbCBuZXRydyNFcnJvck1zZyhzOkVSUk9SLCJubyBmaWxlcyBtYXJrZWQhIiw1OSkKKyAgIGtlZXBqIGNhbGwgbmV0cncjRXJyb3JNc2coczpFUlJPUiwibm8gZmlsZXMgbWFya2VkISIsNTkpCiAgIGVuZGlmCiAgIAogIiAgY2FsbCBEcmV0KCJzOk5ldHJ3TWFya0ZpbGVFeGUiKQpAQCAtNDY5NSwxMCArNDg2MiwxMCBAQAogICAgIGVuZGZvcgogCiAgICAiIHJlZnJlc2ggdGhlIGxpc3RpbmcKLSAgIGNhbGwgczpOZXRyd1JlZnJlc2goYTppc2xvY2FsLHM6TmV0cndCcm93c2VDaGdEaXIoYTppc2xvY2FsLCcuLycpKQotICAgY2FsbCBuZXRydyNOZXRyd1Jlc3RvcmVQb3NuKHN2cG9zKQorICAga2VlcGogY2FsbCBzOk5ldHJ3UmVmcmVzaChhOmlzbG9jYWwsczpOZXRyd0Jyb3dzZUNoZ0RpcihhOmlzbG9jYWwsJy4vJykpCisgICBrZWVwaiBjYWxsIG5ldHJ3I05ldHJ3UmVzdG9yZVBvc24oc3Zwb3MpCiAgIGVsc2UKLSAgIGNhbGwgbmV0cncjRXJyb3JNc2coczpFUlJPUiwibm8gZmlsZXMgbWFya2VkISIsNTkpCisgICBrZWVwaiBjYWxsIG5ldHJ3I0Vycm9yTXNnKHM6RVJST1IsIm5vIGZpbGVzIG1hcmtlZCEiLDU5KQogICBlbmRpZgogCiAiICBjYWxsIERyZXQoInM6TmV0cndNYXJrSGlkZVNmeCIpCkBAIC00NzMzLDEzICs0OTAwLDEzIEBACiAgICB0cnkKICAgICBleGUgImtlZXBqIG5vYXV0b2NtZCB2aW1ncmVwIi5wYXQuIiAiLm5ldHJ3bWFya2ZpbGVsaXN0CiAgICAgY2F0Y2ggL15WaW1cJSgoXGFcKylcKVw9OkU0ODAvCi0gICAgIGNhbGwgbmV0cncjRXJyb3JNc2coczpXQVJOSU5HLCJubyBtYXRjaCB3aXRoIHBhdHRlcm48Ii5wYXR0ZXJuLiI+Iiw3NikKKyAgICAga2VlcGogY2FsbCBuZXRydyNFcnJvck1zZyhzOldBUk5JTkcsIm5vIG1hdGNoIHdpdGggcGF0dGVybjwiLnBhdHRlcm4uIj4iLDc2KQogIiAgICAgY2FsbCBEcmV0KCJzOk5ldHJ3TWFya0ZpbGVHcmVwIDogdW5hYmxlIHRvIGZpbmQgcGF0dGVybjwiLnBhdHRlcm4uIj4iKQogICAgICByZXR1cm4KICAgIGVuZHRyeQogCiAgICAybWF0Y2ggbm9uZQotICAgY2FsbCBuZXRydyNOZXRyd1Jlc3RvcmVQb3NuKHN2cG9zKQorICAga2VlcGogY2FsbCBuZXRydyNOZXRyd1Jlc3RvcmVQb3NuKHN2cG9zKQogICBlbmRpZgogCiAiICBjYWxsIERyZXQoInM6TmV0cndNYXJrRmlsZUdyZXAiKQpAQCAtNDc1NywxMyArNDkyNCwxMyBAQAogCiAgICIgc2FuaXR5IGNoZWNrCiAgIGlmICFleGlzdHMoInM6bmV0cndtYXJrZmlsZWxpc3Rfe2J1Zm5yKCclJyl9IikgfHwgZW1wdHkoczpuZXRyd21hcmtmaWxlbGlzdF97YnVmbnIoJyUnKX0pCi0gICBjYWxsIG5ldHJ3I0Vycm9yTXNnKDIsInRoZXJlIGFyZSBubyBtYXJrZWQgZmlsZXMgaW4gdGhpcyB3aW5kb3cgKDpoZWxwIG5ldHJ3LW1mKSIsNjYpCisgICBrZWVwaiBjYWxsIG5ldHJ3I0Vycm9yTXNnKDIsInRoZXJlIGFyZSBubyBtYXJrZWQgZmlsZXMgaW4gdGhpcyB3aW5kb3cgKDpoZWxwIG5ldHJ3LW1mKSIsNjYpCiAiICAgY2FsbCBEcmV0KCJzOk5ldHJ3TWFya0ZpbGVNb3ZlIikKICAgIHJldHVybgogICBlbmRpZgogIiAgY2FsbCBEZWNobygic2FuaXR5IGNoayBwYXNzZWQ6IHM6bmV0cndtYXJrZmlsZWxpc3RfIi5idWZucignJScpLiI8Ii5zdHJpbmcoczpuZXRyd21hcmtmaWxlbGlzdF97YnVmbnIoJyUnKX0pKQogICBpZiAhZXhpc3RzKCJzOm5ldHJ3bWZ0Z3QiKQotICAgY2FsbCBuZXRydyNFcnJvck1zZygyLCJ5b3VyIG1hcmtlZCBmaWxlIHRhcmdldCBpcyBlbXB0eSEgKDpoZWxwIG5ldHJ3LW10KSIsNjcpCisgICBrZWVwaiBjYWxsIG5ldHJ3I0Vycm9yTXNnKDIsInlvdXIgbWFya2VkIGZpbGUgdGFyZ2V0IGlzIGVtcHR5ISAoOmhlbHAgbmV0cnctbXQpIiw2NykKICIgICBjYWxsIERyZXQoInM6TmV0cndNYXJrRmlsZUNvcHkgMCIpCiAgICByZXR1cm4gMAogICBlbmRpZgpAQCAtNDc4Myw3ICs0OTUwLDcgQEAKICAgICAgZW5kaWYKICAgICBlbmRmb3IKICAgIGVsc2UKLSAgICBjYWxsIG5ldHJ3I0Vycm9yTXNnKHM6RVJST1IsImNvbW1hbmQ8Ii5nOm5ldHJ3X2xvY2FsbW92ZWNtZC4iPiBpcyBub3QgZXhlY3V0YWJsZSEiLDU3KQorICAgIGtlZXBqIGNhbGwgbmV0cncjRXJyb3JNc2coczpFUlJPUiwiY29tbWFuZDwiLmc6bmV0cndfbG9jYWxtb3ZlY21kLiI+IGlzIG5vdCBleGVjdXRhYmxlISIsNTcpCiAgICBlbmRpZgogCiAgIGVsc2VpZiAgYTppc2xvY2FsICYmICFzOm5ldHJ3bWZ0Z3RfaXNsb2NhbApAQCAtNDc5MSw3ICs0OTU4LDcgQEAKICIgICBjYWxsIERlY2hvKCJtb3ZlIGZyb20gbG9jYWwgdG8gcmVtb3RlIikKICIgICBjYWxsIERlY2hvKCJjb3B5IikKICAgIGxldCBtZmxpc3Q9IHM6bmV0cndtYXJrZmlsZWxpc3Rfe2J1Zm5yKCIlIil9Ci0gICBjYWxsIHM6TmV0cndNYXJrRmlsZUNvcHkoYTppc2xvY2FsKQorICAga2VlcGogY2FsbCBzOk5ldHJ3TWFya0ZpbGVDb3B5KGE6aXNsb2NhbCkKICIgICBjYWxsIERlY2hvKCJyZW1vdmUiKQogICAgZm9yIGZuYW1lIGluIG1mbGlzdAogICAgIGxldCBiYXJlZm5hbWUgPSBzdWJzdGl0dXRlKGZuYW1lLCdeXCguKi9cKVwoLlx7LX1cKSQnLCdcMicsJycpCkBAIC00ODA0LDcgKzQ5NzEsNyBAQAogIiAgIGNhbGwgRGVjaG8oIm1vdmUgZnJvbSByZW1vdGUgdG8gbG9jYWwiKQogIiAgIGNhbGwgRGVjaG8oImNvcHkiKQogICAgbGV0IG1mbGlzdD0gczpuZXRyd21hcmtmaWxlbGlzdF97YnVmbnIoIiUiKX0KLSAgIGNhbGwgczpOZXRyd01hcmtGaWxlQ29weShhOmlzbG9jYWwpCisgICBrZWVwaiBjYWxsIHM6TmV0cndNYXJrRmlsZUNvcHkoYTppc2xvY2FsKQogIiAgIGNhbGwgRGVjaG8oInJlbW92ZSIpCiAgICBmb3IgZm5hbWUgaW4gbWZsaXN0CiAgICAgbGV0IGJhcmVmbmFtZSA9IHN1YnN0aXR1dGUoZm5hbWUsJ15cKC4qL1wpXCguXHstfVwpJCcsJ1wyJywnJykKQEAgLTQ4MTcsNyArNDk4NCw3IEBACiAiICAgY2FsbCBEZWNobygibW92ZSBmcm9tIHJlbW90ZSB0byByZW1vdGUiKQogIiAgIGNhbGwgRGVjaG8oImNvcHkiKQogICAgbGV0IG1mbGlzdD0gczpuZXRyd21hcmtmaWxlbGlzdF97YnVmbnIoIiUiKX0KLSAgIGNhbGwgczpOZXRyd01hcmtGaWxlQ29weShhOmlzbG9jYWwpCisgICBrZWVwaiBjYWxsIHM6TmV0cndNYXJrRmlsZUNvcHkoYTppc2xvY2FsKQogIiAgIGNhbGwgRGVjaG8oInJlbW92ZSIpCiAgICBmb3IgZm5hbWUgaW4gbWZsaXN0CiAgICAgbGV0IGJhcmVmbmFtZSA9IHN1YnN0aXR1dGUoZm5hbWUsJ15cKC4qL1wpXCguXHstfVwpJCcsJ1wyJywnJykKQEAgLTQ4MzYsMTMgKzUwMDMsMTYgQEAKIAogICAiIHJlZnJlc2ggYnVmZmVycwogICBpZiAhczpuZXRyd21mdGd0X2lzbG9jYWwKLSAgIGNhbGwgczpOZXRyd1JlZnJlc2hEaXIoczpuZXRyd21mdGd0X2lzbG9jYWwsczpuZXRyd21mdGd0KQorIiAgIGNhbGwgRGVjaG8oInJlZnJlc2ggbmV0cndtZnRndDwiLnM6bmV0cndtZnRndC4iPiIpCisgICBrZWVwaiBjYWxsIHM6TmV0cndSZWZyZXNoRGlyKHM6bmV0cndtZnRndF9pc2xvY2FsLHM6bmV0cndtZnRndCkKICAgZW5kaWYKICAgaWYgYTppc2xvY2FsCi0gICBjYWxsIHM6TmV0cndSZWZyZXNoRGlyKGE6aXNsb2NhbCxiOm5ldHJ3X2N1cmRpcikKKyIgICBjYWxsIERlY2hvKCJyZWZyZXNoIGI6bmV0cndfY3VyZGlyPCIuYjpuZXRyd19jdXJkaXIuIj4iKQorICAga2VlcGogY2FsbCBzOk5ldHJ3UmVmcmVzaERpcihhOmlzbG9jYWwsYjpuZXRyd19jdXJkaXIpCiAgIGVuZGlmCiAgIGlmIGc6bmV0cndfZmFzdGJyb3dzZSA8PSAxCi0gICBjYWxsIHM6TG9jYWxCcm93c2VTaGVsbENtZFJlZnJlc2goKQorIiAgIGNhbGwgRGVjaG8oInNpbmNlIGc6bmV0cndfZmFzdGJyb3dzZT0iLmc6bmV0cndfZmFzdGJyb3dzZS4iLCBwZXJmb3JtIHNoZWxsIGNtZCByZWZyZXNoIikKKyAgIGtlZXBqIGNhbGwgczpMb2NhbEJyb3dzZVNoZWxsQ21kUmVmcmVzaCgpCiAgIGVuZGlmCiAgIAogIiAgY2FsbCBEcmV0KCJzOk5ldHJ3TWFya0ZpbGVNb3ZlIikKQEAgLTQ4NjgsOCArNTAzOCw4IEBACiAgICAgZW5kaWYKICAgICAxc3BsaXQKICAgICAiIHRoZSBhdXRvY21kcyB3aWxsIGhhbmRsZSBib3RoIGxvY2FsIGFuZCByZW1vdGUgZmlsZXMKLSIgICAgY2FsbCBEZWNobygiZXhlIHNpbGVudCBlICIuZXNjYXBlKGZuYW1lLCcgJykpCi0gICAgZXhlICJzaWxlbnQgZSAiLmZuYW1lZXNjYXBlKGZuYW1lKQorIiAgICBjYWxsIERlY2hvKCJleGUgc2lsIGUgIi5lc2NhcGUoZm5hbWUsJyAnKSkKKyAgICBleGUgInNpbCBlICIuZm5hbWVlc2NhcGUoZm5hbWUpCiAiICAgIGNhbGwgRGVjaG8oImhhcmRjb3B5IikKICAgICBoYXJkY29weQogICAgIHEKQEAgLTQ5MDIsNyArNTA3Miw3IEBACiAgICIgbWFyayB0aGUgbGlzdCBvZiBmaWxlcwogICBmb3IgZm5hbWUgaW4gZmlsZWxpc3QKICIgICBjYWxsIERlY2hvKCJmbmFtZTwiLmZuYW1lLiI+IikKLSAgIGNhbGwgczpOZXRyd01hcmtGaWxlKGE6aXNsb2NhbCxzdWJzdGl0dXRlKGZuYW1lLCdeLiovJywnJywnJykpCisgICBrZWVwaiBjYWxsIHM6TmV0cndNYXJrRmlsZShhOmlzbG9jYWwsc3Vic3RpdHV0ZShmbmFtZSwnXi4qLycsJycsJycpKQogICBlbmRmb3IKIAogICBlbHNlCkBAIC00OTE1LDggKzUwODUsOCBAQAogICAgc2V0IGVpPWFsbCBtYQogIiAgIGNhbGwgRGVjaG8oInNldCBlaT1hbGwgbWEiKQogICAgMXNwbGl0Ci0gICBjYWxsIHM6TmV0cndFbmV3KCkKLSAgIGNhbGwgczpOZXRyd1NhZmVPcHRpb25zKCkKKyAgIGtlZXBqIGNhbGwgczpOZXRyd0VuZXcoKQorICAga2VlcGogY2FsbCBzOk5ldHJ3U2FmZU9wdGlvbnMoKQogICAgc2lsIGtlZXBqIG5vcm0hICJhcAogICAga2VlcGogMgogICAgbGV0IGJhbm5lcmNudD0gc2VhcmNoKCdeIiA9PT09PScsJ1cnKQpAQCAtNDk0Miw3ICs1MTEyLDcgQEAKICAgIGxldCBmaWxlbGlzdD0gZ2V0bGluZSgxLGxpbmUoIiQiKSkKICAgIHEhCiAgICBmb3IgZmlsZW5hbWUgaW4gZmlsZWxpc3QKLSAgICBjYWxsIHM6TmV0cndNYXJrRmlsZShhOmlzbG9jYWwsc3Vic3RpdHV0ZShmaWxlbmFtZSwnXi4qLycsJycsJycpKQorICAgIGtlZXBqIGNhbGwgczpOZXRyd01hcmtGaWxlKGE6aXNsb2NhbCxzdWJzdGl0dXRlKGZpbGVuYW1lLCdeLiovJywnJywnJykpCiAgICBlbmRmb3IKICAgIHVubGV0IGZpbGVsaXN0CiAgICBsZXQgQGEgID0gYXJlZwpAQCAtNTE0NCw3ICs1MzE0LDcgQEAKICAgaWYgZXhpc3RzKCJzOm5ldHJ3bWFya2ZpbGVsaXN0IikKICAgIHVubGV0IHM6bmV0cndtYXJrZmlsZWxpc3QKICAgZW5kaWYKLSAgc2lsZW50IGNhbGwgczpOZXRyd1VubWFya0FsbDIoKQorICBzaWwgY2FsbCBzOk5ldHJ3VW5tYXJrQWxsMigpCiAgIDJtYXRjaCBub25lCiAiICBjYWxsIERyZXQoInM6TmV0cndVbm1hcmtBbGwiKQogZW5kZnVuCkBAIC01MTk3LDcgKzUzNjcsNyBAQAogICAgbGV0IGc6TmV0cndNZW51UHJpb3JpdHk9IDgwCiAgIGVuZGlmCiAKLSAgaWYgaGFzKCJtZW51IikgJiYgaGFzKCJndWlfcnVubmluZyIpICYmICZnbyA9fiAnbScgJiYgZzpuZXRyd19tZW51CisgIGlmIGhhcygibWVudSIpICYmIGhhcygiZ3VpX3J1bm5pbmciKSAmJiAmZ28gPX4jICdtJyAmJiBnOm5ldHJ3X21lbnUKICIgICBjYWxsIERmdW5jKCJOZXRyd01lbnUoZG9tZW51PSIuYTpkb21lbnUuIikiKQogCiAgICBpZiAhZXhpc3RzKCJzOm5ldHJ3X21lbnVfZW5hYmxlZCIpICYmIGE6ZG9tZW51CkBAIC01MjY1LDcgKzU0MzUsNyBAQAogICAgIGlmIHM6bmV0cndjbnQgPD0gMQogIiAgICAgY2FsbCBEZWNobygiY2xlYXIgbWVudXMiKQogICAgICBleGUgJ3NpbCEgdW5tZW51ICcuZzpOZXRyd1RvcEx2bE1lbnUKLSIgICAgIGNhbGwgRGVjaG8oJ2V4ZSBzaWxlbnQhIHVubWVudSAnLmc6TmV0cndUb3BMdmxNZW51LicqJykKKyIgICAgIGNhbGwgRGVjaG8oJ2V4ZSBzaWwhIHVubWVudSAnLmc6TmV0cndUb3BMdmxNZW51LicqJykKICAgICAgc2lsISB1bmxldCBzOm5ldHJ3X21lbnVfZW5hYmxlZAogICAgIGVuZGlmCiAgICBlbmRpZgpAQCAtNTM3Miw3ICs1NTQyLDcgQEAKICAgIGVsc2VpZiBiOm5ldHJ3X21ldGhvZCA9PSAyCiAgICAgIiBvYnRhaW4gZmlsZSB1c2luZyBmdHAgKyAubmV0cmMKICIgICAgIGNhbGwgRGVjaG8oIm9idGFpbiB2aWEgZnRwKy5uZXRyYyAobWV0aG9kICMyKSIpCi0gICAgIGNhbGwgczpTYXZlQnVmVmFycygpfHNpbGVudCBrZWVwanVtcHMgbmV3fGNhbGwgczpSZXN0b3JlQnVmVmFycygpCisgICAgIGNhbGwgczpTYXZlQnVmVmFycygpfHNpbCBrZWVwanVtcHMgbmV3fGNhbGwgczpSZXN0b3JlQnVmVmFycygpCiAgICAgIGxldCB0bXBidWZucj0gYnVmbnIoIiUiKQogICAgICBzZXRsb2NhbCBmZj11bml4CiAgICAgIGlmIGV4aXN0cygiZzpuZXRyd19mdHBtb2RlIikgJiYgZzpuZXRyd19mdHBtb2RlICE9ICIiCkBAIC01Mzk0LDExICs1NTY0LDExIEBACiAiICAgICAgY2FsbCBEZWNobygiZmlsdGVyIGlucHV0OiAiLmdldGxpbmUoJyQnKSkKICAgICAgZW5kZm9yCiAgICAgIGlmIGV4aXN0cygiZzpuZXRyd19wb3J0IikgJiYgZzpuZXRyd19wb3J0ICE9ICIiCi0iICAgICAgY2FsbCBEZWNobygiZXhlY3V0aW5nOiAlISIuZzpuZXRyd19mdHBfY21kLiIgLWkgIi5zaGVsbGVzY2FwZShnOm5ldHJ3X21hY2hpbmUsMSkuIiAiLnNoZWxsZXNjYXBlKGc6bmV0cndfcG9ydCwxKSkKLSAgICAgIGV4ZSBzOm5ldHJ3X3NpbGVudHhmZXIuIiUhIi5nOm5ldHJ3X2Z0cF9jbWQuIiAtaSAiLnNoZWxsZXNjYXBlKGc6bmV0cndfbWFjaGluZSwxKS4iICIuc2hlbGxlc2NhcGUoZzpuZXRyd19wb3J0LDEpCisiICAgICAgY2FsbCBEZWNobygiZXhlY3V0aW5nOiAlISIuczpuZXRyd19mdHBfY21kLiIgLWkgIi5zaGVsbGVzY2FwZShnOm5ldHJ3X21hY2hpbmUsMSkuIiAiLnNoZWxsZXNjYXBlKGc6bmV0cndfcG9ydCwxKSkKKyAgICAgIGV4ZSBzOm5ldHJ3X3NpbGVudHhmZXIuIiUhIi5zOm5ldHJ3X2Z0cF9jbWQuIiAtaSAiLnNoZWxsZXNjYXBlKGc6bmV0cndfbWFjaGluZSwxKS4iICIuc2hlbGxlc2NhcGUoZzpuZXRyd19wb3J0LDEpCiAgICAgIGVsc2UKLSIgICAgICBjYWxsIERlY2hvKCJleGVjdXRpbmc6ICUhIi5nOm5ldHJ3X2Z0cF9jbWQuIiAtaSAiLnNoZWxsZXNjYXBlKGc6bmV0cndfbWFjaGluZSwxKSkKLSAgICAgIGV4ZSBzOm5ldHJ3X3NpbGVudHhmZXIuIiUhIi5nOm5ldHJ3X2Z0cF9jbWQuIiAtaSAiLnNoZWxsZXNjYXBlKGc6bmV0cndfbWFjaGluZSwxKQorIiAgICAgIGNhbGwgRGVjaG8oImV4ZWN1dGluZzogJSEiLnM6bmV0cndfZnRwX2NtZC4iIC1pICIuc2hlbGxlc2NhcGUoZzpuZXRyd19tYWNoaW5lLDEpKQorICAgICAgZXhlIHM6bmV0cndfc2lsZW50eGZlci4iJSEiLnM6bmV0cndfZnRwX2NtZC4iIC1pICIuc2hlbGxlc2NhcGUoZzpuZXRyd19tYWNoaW5lLDEpCiAgICAgIGVuZGlmCiAgICAgICIgSWYgdGhlIHJlc3VsdCBvZiB0aGUgZnRwIG9wZXJhdGlvbiBpc24ndCBibGFuaywgc2hvdyBhbiBlcnJvciBtZXNzYWdlICh0bnggdG8gRG91ZyBDbGFhcikKICAgICAgaWYgZ2V0bGluZSgxKSAhfiAiXiQiICYmICFleGlzdHMoImc6bmV0cndfcXVpZXQiKSAmJiBnZXRsaW5lKDEpICF+ICdeVHJ5aW5nICcKQEAgLTU0MTEsNyArNTU4MSw3IEBACiAgICBlbHNlaWYgYjpuZXRyd19tZXRob2QgPT0gMwogICAgICIgb2J0YWluIHdpdGggZnRwICsgbWFjaGluZSwgaWQsIHBhc3N3ZCwgYW5kIGZuYW1lIChpZS4gbm8gLm5ldHJjKQogIiAgICBjYWxsIERlY2hvKCJvYnRhaW4gdmlhIGZ0cCttaXBmIChtZXRob2QgIzMpIikKLSAgICBjYWxsIHM6U2F2ZUJ1ZlZhcnMoKXxzaWxlbnQga2VlcGp1bXBzIG5ld3xjYWxsIHM6UmVzdG9yZUJ1ZlZhcnMoKQorICAgIGNhbGwgczpTYXZlQnVmVmFycygpfHNpbCBrZWVwanVtcHMgbmV3fGNhbGwgczpSZXN0b3JlQnVmVmFycygpCiAgICAgbGV0IHRtcGJ1Zm5yPSBidWZucigiJSIpCiAgICAgc2V0bG9jYWwgZmY9dW5peAogCkBAIC01NDYyLDEzICs1NjMyLDEzIEBACiAgICAgIiAtbiAgdW5peCA6IERPTidUIHVzZSA8Lm5ldHJjPiwgZXZlbiB0aG91Z2ggaXQgZXhpc3RzCiAgICAgIiAtbiAgd2luMzI6IHF1aXQgYmVpbmcgb2Jub3hpb3VzIGFib3V0IHBhc3N3b3JkCiAgICAga2VlcGogbm9ybSEgMUdkZAotIiAgICBjYWxsIERlY2hvKCJleGVjdXRpbmc6ICUhIi5nOm5ldHJ3X2Z0cF9jbWQuIiAtaSAtbiIpCi0gICAgZXhlIHM6bmV0cndfc2lsZW50eGZlci4iJSEiLmc6bmV0cndfZnRwX2NtZC4iIC1pIC1uIgorIiAgICBjYWxsIERlY2hvKCJleGVjdXRpbmc6ICUhIi5zOm5ldHJ3X2Z0cF9jbWQuIiAtaSAtbiIpCisgICAgZXhlIHM6bmV0cndfc2lsZW50eGZlci4iJSEiLnM6bmV0cndfZnRwX2NtZC4iIC1pIC1uIgogICAgICIgSWYgdGhlIHJlc3VsdCBvZiB0aGUgZnRwIG9wZXJhdGlvbiBpc24ndCBibGFuaywgc2hvdyBhbiBlcnJvciBtZXNzYWdlICh0bnggdG8gRG91ZyBDbGFhcikKICAgICBpZiBnZXRsaW5lKDEpICF+ICJeJCIKICIgICAgIGNhbGwgRGVjaG8oImVycm9yPCIuZ2V0bGluZSgxKS4iPiIpCiAgICAgIGlmICFleGlzdHMoImc6bmV0cndfcXVpZXQiKQotICAgICAgY2FsbCBuZXRydyNFcnJvck1zZyhzOkVSUk9SLGdldGxpbmUoMSksNSkKKyAgICAgIGtlZXBqIGNhbGwgbmV0cncjRXJyb3JNc2coczpFUlJPUixnZXRsaW5lKDEpLDUpCiAgICAgIGVuZGlmCiAgICAgZW5kaWYKICAgIGVsc2VpZiAhZXhpc3RzKCJiOm5ldHJ3X21ldGhvZCIpIHx8IGI6bmV0cndfbWV0aG9kIDwgMApAQCAtNTQ3OCw3ICs1NjQ4LDcgQEAKIAogICAgIiByZXN0b3JlIHN0YXR1cyBsaW5lCiAgICBpZiB0eXBlKGE6Zm5hbWUpID09IDEgJiYgZXhpc3RzKCJzOm5ldHJ3X3VzZXJzX3N0bCIpCi0gICAgY2FsbCBzOlNldHVwTmV0cndTdGF0dXNMaW5lKHM6bmV0cndfdXNlcnNfc3RsKQorICAgIGtlZXBqIGNhbGwgczpTZXR1cE5ldHJ3U3RhdHVzTGluZShzOm5ldHJ3X3VzZXJzX3N0bCkKICAgIGVuZGlmCiAKICAgZW5kaWYKQEAgLTU1MjksMTAgKzU2OTksMTAgQEAKICAgIGxldCBkaWRzcGxpdCAgPSAxCiAKICAgZWxzZQotICAgY2FsbCBzOlNhdmVCdWZWYXJzKCkKKyAgIGtlZXBqIGNhbGwgczpTYXZlQnVmVmFycygpCiAiICAgY2FsbCBEZWNobygid2luY21kIHAiKQogICAgd2luY21kIHAKLSAgIGNhbGwgczpSZXN0b3JlQnVmVmFycygpCisgICBrZWVwaiBjYWxsIHM6UmVzdG9yZUJ1ZlZhcnMoKQogICAgIiBpZiB0aGUgcHJldmlvdXMgd2luZG93J3MgYnVmZmVyIGhhcyBiZWVuIGNoYW5nZWQgKGlzIG1vZGlmaWVkKSwKICAgICIgYW5kIGl0IGRvZXNuJ3QgYXBwZWFyIGluIGFueSBvdGhlciBleHRhbnQgd2luZG93LCB0aGVuIGFzayB0aGUKICAgICIgdXNlciBpZiBzL2hlIHdhbnRzIHRvIGFiYW5kb24gbW9kaWZpY2F0aW9ucyB0aGVyZWluLgpAQCAtNTU1NCw3ICs1NzI0LDcgQEAKICAgICAgaWYgY2hvaWNlID09IDEKICAgICAgICIgWWVzIC0tIHdyaXRlIGZpbGUgJiB0aGVuIGJyb3dzZQogICAgICAgbGV0IHY6ZXJybXNnPSAiIgotICAgICAgc2lsZW50IHcKKyAgICAgIHNpbCB3CiAgICAgICBpZiB2OmVycm1zZyAhPSAiIgogICAgICAgIGNhbGwgbmV0cncjRXJyb3JNc2coczpFUlJPUiwidW5hYmxlIHRvIHdyaXRlIDwiLmJ1Zm5hbWUuIj4hIiwzMCkKICAgICAgICBpZiBkaWRzcGxpdApAQCAtNTU2OSw3ICs1NzM5LDcgQEAKICAgICAgZWxzZWlmIGNob2ljZSA9PSAyCiAgICAgICAiIE5vIC0tIGRvbid0IHdvcnJ5IGFib3V0IGNoYW5nZWQgZmlsZSwganVzdCBicm93c2UgYW55d2F5CiAgICAgICBzZXRsb2NhbCBub21vZAotICAgICAgY2FsbCBuZXRydyNFcnJvck1zZyhzOldBUk5JTkcsYnVmbmFtZS4iIGNoYW5nZXMgdG8gIi5idWZuYW1lLiIgYWJhbmRvbmVkIiwzMSkKKyAgICAgIGtlZXBqIGNhbGwgbmV0cncjRXJyb3JNc2coczpXQVJOSU5HLGJ1Zm5hbWUuIiBjaGFuZ2VzIHRvICIuYnVmbmFtZS4iIGFiYW5kb25lZCIsMzEpCiAgICAgICB3aW5jbWQgcAogCiAgICAgIGVsc2UKQEAgLTU2NDQsNyArNTgxNCw3IEBACiAiICAgY2FsbCBEZWNobygiaGFuZGxlIHVwbG9hZGluZyBhIGxpc3Qgb2YgZmlsZXMgdmlhIHNjcCIpCiAgICBsZXQgY3VyZGlyPSBnZXRjd2QoKQogICAgaWYgYTp0Z3QgPX4gJ15zY3A6JwotICAgIGV4ZSAia2VlcGp1bXBzIHNpbGVudCBsY2QgIi5mbmFtZWVzY2FwZShmcm9tZGlyKQorICAgIGV4ZSAia2VlcGp1bXBzIHNpbCBsY2QgIi5mbmFtZWVzY2FwZShmcm9tZGlyKQogICAgIGxldCBmaWxlbGlzdD0gZGVlcGNvcHkoczpuZXRyd21hcmtmaWxlbGlzdF97YnVmbnIoJyUnKX0pCiAgICAgbGV0IGFyZ3MgICAgPSBqb2luKG1hcChmaWxlbGlzdCwic2hlbGxlc2NhcGUodjp2YWwsIDEpIikpCiAgICAgaWYgZXhpc3RzKCJnOm5ldHJ3X3BvcnQiKSAmJiBnOm5ldHJ3X3BvcnQgIT0gIiIKQEAgLTU2NTYsNyArNTgyNiw3IEBACiAgICAgbGV0IHRndCAgICAgPSBzdWJzdGl0dXRlKGE6dGd0LCdec2NwOi8vW14vXVwrL1woLipcKSQnLCdcMScsJycpCiAiICAgIGNhbGwgRGVjaG8oImV4ZSAiLnM6bmV0cndfc2lsZW50eGZlci4iISIuZzpuZXRyd19zY3BfY21kLnNoZWxsZXNjYXBlKHVzZXBvcnQsMSkuIiAiLmFyZ3MuIiAiLnNoZWxsZXNjYXBlKG1hY2hpbmUuIjoiLnRndCwxKSkKICAgICBleGUgczpuZXRyd19zaWxlbnR4ZmVyLiIhIi5nOm5ldHJ3X3NjcF9jbWQuc2hlbGxlc2NhcGUodXNlcG9ydCwxKS4iICIuYXJncy4iICIuc2hlbGxlc2NhcGUobWFjaGluZS4iOiIudGd0LDEpCi0gICAgZXhlICJrZWVwanVtcHMgc2lsZW50IGxjZCAiLmZuYW1lZXNjYXBlKGN1cmRpcikKKyAgICBleGUgImtlZXBqdW1wcyBzaWwgbGNkICIuZm5hbWVlc2NhcGUoY3VyZGlyKQogCiAgICBlbHNlaWYgYTp0Z3QgPX4gJ15mdHA6JwogICAgIGNhbGwgczpOZXRyd01ldGhvZChhOnRndCkKQEAgLTU2NzgsNiArNTg0OCw5IEBACiAgICAgIGtlZXBqIGNhbGwgc2V0bGluZShsaW5lKCIkIikrMSwnbGNkICInLmZyb21kaXIuJyInKQogIiAgICAgY2FsbCBEZWNobygiZmlsdGVyIGlucHV0OiAiLmdldGxpbmUoJyQnKSkKIAorICAgICBpZiB0Z3RkaXIgPT0gIiIKKyAgICAgIGxldCB0Z3RkaXI9ICcvJworICAgICBlbmRpZgogICAgICBrZWVwaiBjYWxsIHNldGxpbmUobGluZSgiJCIpKzEsJ2NkICInLnRndGRpci4nIicpCiAiICAgICBjYWxsIERlY2hvKCJmaWx0ZXIgaW5wdXQ6ICIuZ2V0bGluZSgnJCcpKQogCkBAIC01Njg3LDEyICs1ODYwLDEyIEBACiAgICAgIGVuZGZvcgogCiAgICAgIGlmIGV4aXN0cygiZzpuZXRyd19wb3J0IikgJiYgZzpuZXRyd19wb3J0ICE9ICIiCi0iICAgICAgY2FsbCBEZWNobygiZXhlY3V0aW5nOiAiLnM6bmV0cndfc2lsZW50eGZlci4iJSEiLmc6bmV0cndfZnRwX2NtZC4iIC1pICIuc2hlbGxlc2NhcGUoZzpuZXRyd19tYWNoaW5lLDEpLiIgIi5zaGVsbGVzY2FwZShnOm5ldHJ3X3BvcnQsMSkpCi0gICAgICBleGUgczpuZXRyd19zaWxlbnR4ZmVyLiIlISIuZzpuZXRyd19mdHBfY21kLiIgLWkgIi5zaGVsbGVzY2FwZShnOm5ldHJ3X21hY2hpbmUsMSkuIiAiLnNoZWxsZXNjYXBlKGc6bmV0cndfcG9ydCwxKQorIiAgICAgIGNhbGwgRGVjaG8oImV4ZWN1dGluZzogIi5zOm5ldHJ3X3NpbGVudHhmZXIuIiUhIi5zOm5ldHJ3X2Z0cF9jbWQuIiAtaSAiLnNoZWxsZXNjYXBlKGc6bmV0cndfbWFjaGluZSwxKS4iICIuc2hlbGxlc2NhcGUoZzpuZXRyd19wb3J0LDEpKQorICAgICAgZXhlIHM6bmV0cndfc2lsZW50eGZlci4iJSEiLnM6bmV0cndfZnRwX2NtZC4iIC1pICIuc2hlbGxlc2NhcGUoZzpuZXRyd19tYWNoaW5lLDEpLiIgIi5zaGVsbGVzY2FwZShnOm5ldHJ3X3BvcnQsMSkKICAgICAgZWxzZQogIiAgICAgIGNhbGwgRGVjaG8oImZpbHRlciBpbnB1dCB3aW5kb3cjIi53aW5ucigpKQotIiAgICAgIGNhbGwgRGVjaG8oImV4ZWN1dGluZzogIi5zOm5ldHJ3X3NpbGVudHhmZXIuIiUhIi5nOm5ldHJ3X2Z0cF9jbWQuIiAtaSAiLnNoZWxsZXNjYXBlKGc6bmV0cndfbWFjaGluZSwxKSkKLSAgICAgIGV4ZSBzOm5ldHJ3X3NpbGVudHhmZXIuIiUhIi5nOm5ldHJ3X2Z0cF9jbWQuIiAtaSAiLnNoZWxsZXNjYXBlKGc6bmV0cndfbWFjaGluZSwxKQorIiAgICAgIGNhbGwgRGVjaG8oImV4ZWN1dGluZzogIi5zOm5ldHJ3X3NpbGVudHhmZXIuIiUhIi5zOm5ldHJ3X2Z0cF9jbWQuIiAtaSAiLnNoZWxsZXNjYXBlKGc6bmV0cndfbWFjaGluZSwxKSkKKyAgICAgIGV4ZSBzOm5ldHJ3X3NpbGVudHhmZXIuIiUhIi5zOm5ldHJ3X2Z0cF9jbWQuIiAtaSAiLnNoZWxsZXNjYXBlKGc6bmV0cndfbWFjaGluZSwxKQogICAgICBlbmRpZgogICAgICAiIElmIHRoZSByZXN1bHQgb2YgdGhlIGZ0cCBvcGVyYXRpb24gaXNuJ3QgYmxhbmssIHNob3cgYW4gZXJyb3IgbWVzc2FnZSAodG54IHRvIERvdWcgQ2xhYXIpCiAgICAgIHNpbCBrZWVwaiBnL0xvY2FsIGRpcmVjdG9yeSBub3cvZApAQCAtNTcwNiw3ICs1ODc5LDcgQEAKICAgICBlbHNlaWYgYjpuZXRyd19tZXRob2QgPT0gMwogICAgICAiIHVwbG9hZCB3aXRoIGZ0cCArIG1hY2hpbmUsIGlkLCBwYXNzd2QsIGFuZCBmbmFtZSAoaWUuIG5vIC5uZXRyYykKICAgICAgbGV0IG5ldHJ3X2ZuYW1lPSBiOm5ldHJ3X2ZuYW1lCi0gICAgIGNhbGwgczpTYXZlQnVmVmFycygpfHNpbGVudCBrZWVwanVtcHMgbmV3fGNhbGwgczpSZXN0b3JlQnVmVmFycygpCisgICAgIGtlZXBqIGNhbGwgczpTYXZlQnVmVmFycygpfHNpbCBrZWVwaiBuZXd8a2VlcGogY2FsbCBzOlJlc3RvcmVCdWZWYXJzKCkKICAgICAgbGV0IHRtcGJ1Zm5yPSBidWZucigiJSIpCiAgICAgIHNldGxvY2FsIGZmPXVuaXgKIApAQCAtNTc1MSw4ICs1OTI0LDggQEAKICAgICAgIiAtbiAgdW5peCA6IERPTidUIHVzZSA8Lm5ldHJjPiwgZXZlbiB0aG91Z2ggaXQgZXhpc3RzCiAgICAgICIgLW4gIHdpbjMyOiBxdWl0IGJlaW5nIG9ibm94aW91cyBhYm91dCBwYXNzd29yZAogICAgICBrZWVwaiBub3JtISAxR2RkCi0iICAgICBjYWxsIERlY2hvKCJleGVjdXRpbmc6ICIuczpuZXRyd19zaWxlbnR4ZmVyLiIlISIuZzpuZXRyd19mdHBfY21kLiIgLWkgLW4iKQotICAgICBleGUgczpuZXRyd19zaWxlbnR4ZmVyLiIlISIuZzpuZXRyd19mdHBfY21kLiIgLWkgLW4iCisiICAgICBjYWxsIERlY2hvKCJleGVjdXRpbmc6ICIuczpuZXRyd19zaWxlbnR4ZmVyLiIlISIuczpuZXRyd19mdHBfY21kLiIgLWkgLW4iKQorICAgICBleGUgczpuZXRyd19zaWxlbnR4ZmVyLiIlISIuczpuZXRyd19mdHBfY21kLiIgLWkgLW4iCiAgICAgICIgSWYgdGhlIHJlc3VsdCBvZiB0aGUgZnRwIG9wZXJhdGlvbiBpc24ndCBibGFuaywgc2hvdyBhbiBlcnJvciBtZXNzYWdlICh0bnggdG8gRG91ZyBDbGFhcikKICAgICAgc2lsIGtlZXBqIGcvTG9jYWwgZGlyZWN0b3J5IG5vdy9kCiAgICAgIGNhbGwgaGlzdGRlbCgiLyIsLTEpCkBAIC01NzgxLDggKzU5NTQsOCBAQAogIiBzOk5ldHJ3UHJldmlldzoge3t7MgogZnVuISBzOk5ldHJ3UHJldmlldyhwYXRoKSByYW5nZQogIiAgY2FsbCBEZnVuYygiTmV0cndQcmV2aWV3KHBhdGg8Ii5hOnBhdGguIj4pIikKLSAgY2FsbCBzOk5ldHJ3T3B0aW9uU2F2ZSgiczoiKQotICBjYWxsIHM6TmV0cndTYWZlT3B0aW9ucygpCisgIGtlZXBqIGNhbGwgczpOZXRyd09wdGlvblNhdmUoInM6IikKKyAga2VlcGogY2FsbCBzOk5ldHJ3U2FmZU9wdGlvbnMoKQogICBpZiBoYXMoInF1aWNrZml4IikKICAgIGlmICFpc2RpcmVjdG9yeShhOnBhdGgpCiAgICAgaWYgZzpuZXRyd19wcmV2aWV3ICYmICFnOm5ldHJ3X2FsdG8KQEAgLTU3OTQsMTIgKzU5NjcsMTIgQEAKICAgICAgbGV0ICZwdmg9IHB2aGtlZXAKICAgICBlbmRpZgogICAgZWxzZWlmICFleGlzdHMoImc6bmV0cndfcXVpZXQiKQotICAgIGNhbGwgbmV0cncjRXJyb3JNc2coczpXQVJOSU5HLCJzb3JyeSwgY2Fubm90IHByZXZpZXcgYSBkaXJlY3Rvcnkgc3VjaCBhcyA8Ii5hOnBhdGguIj4iLDM4KQorICAgIGtlZXBqIGNhbGwgbmV0cncjRXJyb3JNc2coczpXQVJOSU5HLCJzb3JyeSwgY2Fubm90IHByZXZpZXcgYSBkaXJlY3Rvcnkgc3VjaCBhcyA8Ii5hOnBhdGguIj4iLDM4KQogICAgZW5kaWYKICAgZWxzZWlmICFleGlzdHMoImc6bmV0cndfcXVpZXQiKQotICAgY2FsbCBuZXRydyNFcnJvck1zZyhzOldBUk5JTkcsInNvcnJ5LCB0byBwcmV2aWV3IHlvdXIgdmltIG5lZWRzIHRoZSBxdWlja2ZpeCBmZWF0dXJlIGNvbXBpbGVkIGluIiwzOSkKKyAgIGtlZXBqIGNhbGwgbmV0cncjRXJyb3JNc2coczpXQVJOSU5HLCJzb3JyeSwgdG8gcHJldmlldyB5b3VyIHZpbSBuZWVkcyB0aGUgcXVpY2tmaXggZmVhdHVyZSBjb21waWxlZCBpbiIsMzkpCiAgIGVuZGlmCi0gIGNhbGwgczpOZXRyd09wdGlvblJlc3RvcmUoInM6IikKKyAga2VlcGogY2FsbCBzOk5ldHJ3T3B0aW9uUmVzdG9yZSgiczoiKQogIiAgY2FsbCBEcmV0KCJOZXRyd1ByZXZpZXciKQogZW5kZnVuCiAKQEAgLTU4MTUsMTEgKzU5ODgsMTEgQEAKICIgIGNhbGwgRGVjaG8oImNsZWFyIGJ1ZmZlcjwiLmV4cGFuZCgiJSIpLiI+IHdpdGggOiVkIikKICAgc2lsISBrZWVwaiAlZAogICBpZiBhOmlzbG9jYWwKLSAgIGNhbGwgbmV0cncjTG9jYWxCcm93c2VDaGVjayhhOmRpcm5hbWUpCisgICBrZWVwaiBjYWxsIG5ldHJ3I0xvY2FsQnJvd3NlQ2hlY2soYTpkaXJuYW1lKQogICBlbHNlCi0gICBjYWxsIHM6TmV0cndCcm93c2UoYTppc2xvY2FsLGE6ZGlybmFtZSkKKyAgIGtlZXBqIGNhbGwgczpOZXRyd0Jyb3dzZShhOmlzbG9jYWwsYTpkaXJuYW1lKQogICBlbmRpZgotICBjYWxsIG5ldHJ3I05ldHJ3UmVzdG9yZVBvc24oKQorICBrZWVwaiBjYWxsIG5ldHJ3I05ldHJ3UmVzdG9yZVBvc24oKQogCiAgICIgcmVzdG9yZSBmaWxlIG1hcmtzCiAgIGlmIGV4aXN0cygiczpuZXRyd21hcmtmaWxlbXRjaF97YnVmbnIoJyUnKX0iKSAmJiBzOm5ldHJ3bWFya2ZpbGVtdGNoX3tidWZucigiJSIpfSAhPSAiIgpAQCAtNTg1MSwxOCArNjAyNCwxOCBAQAogICAgIGxldCBjdXJ3aW49IHdpbm5yKCkKICIgICAgY2FsbCBEZWNobygicmVmcmVzaCB0Z3R3aW4jIi50Z3R3aW4uIiAoY3Vyd2luIyIuY3Vyd2luLiIpIikKICAgICBleGUgdGd0d2luLiJ3aW5jbWQgdyIKLSAgICBjYWxsIHM6TmV0cndSZWZyZXNoKGE6aXNsb2NhbCxzOk5ldHJ3QnJvd3NlQ2hnRGlyKGE6aXNsb2NhbCwnLi8nKSkgCisgICAga2VlcGogY2FsbCBzOk5ldHJ3UmVmcmVzaChhOmlzbG9jYWwsczpOZXRyd0Jyb3dzZUNoZ0RpcihhOmlzbG9jYWwsJy4vJykpIAogICAgIGV4ZSBjdXJ3aW4uIndpbmNtZCB3IgogCiAgICBlbHNlaWYgYnVmbnIoYTpkaXJuYW1lKSA+IDAKICAgICBsZXQgYm49IGJ1Zm5yKGE6ZGlybmFtZSkKICIgICAgY2FsbCBEZWNobygiYmQgYnVmbnIoIi5hOmRpcm5hbWUuIik9Ii5ibikKLSAgICBleGUgInNpbGVudCBiZCAiLmJuCisgICAgZXhlICJzaWwgYmQgIi5ibgogICAgZW5kaWYKIAogICBlbHNlaWYgZzpuZXRyd19mYXN0YnJvd3NlIDw9IDEKICIgICBjYWxsIERlY2hvKCJtZWRpdW0tc3BlZWQgbW9kZTogcmVmcmVzaCBsb2NhbCBidWZmZXJzIG9ubHkiKQotICAgY2FsbCBzOkxvY2FsQnJvd3NlU2hlbGxDbWRSZWZyZXNoKCkKKyAgIGtlZXBqIGNhbGwgczpMb2NhbEJyb3dzZVNoZWxsQ21kUmVmcmVzaCgpCiAgIGVuZGlmCiAiICBjYWxsIERyZXQoInM6TmV0cndSZWZyZXNoRGlyIikKIGVuZGZ1bgpAQCAtNTkxOCwxMyArNjA5MSwxMyBAQAogICAgICIgc29tZXRpbWVzIG11bHRpcGxlIHNvcnRpbmcgcGF0dGVybnMgd2lsbCBtYXRjaCB0aGUgc2FtZSBmaWxlIG9yIGRpcmVjdG9yeS4KICAgICAiIFRoZSBmb2xsb3dpbmcgc3Vic3RpdHV0ZSBpcyBpbnRlbmRlZCB0byByZW1vdmUgdGhlIGV4Y2VzcyBtYXRjaGVzLgogICAgIGV4ZSAnc2lsIGtlZXBqICcudzpuZXRyd19iYW5uZXJjbnQuJywkZy9eXGRcezN9Jy5nOm5ldHJ3X3NlcGNoci4nXGRcezN9XC8vcy9eXGRcezN9Jy5nOm5ldHJ3X3NlcGNoci4nXChcZFx7M31cL1wpLlxAPS9cMS9lJwotICAgIGNhbGwgaGlzdGRlbCgiLyIsLTEpCisgICAga2VlcGogY2FsbCBoaXN0ZGVsKCIvIiwtMSkKICAgIGVuZGlmCiAgICBsZXQgcHJpb3JpdHkgPSBwcmlvcml0eSArIDEKICAgZW5kd2hpbGUKICAgaWYgZXhpc3RzKCJzdGFycHJpb3JpdHkiKQogICAgZXhlICdzaWwga2VlcGogJy53Om5ldHJ3X2Jhbm5lcmNudC4nLCR2L15cZFx7M30nLmc6bmV0cndfc2VwY2hyLicvcy9eLycuc3RhcnByaW9yaXR5LicvJwotICAgY2FsbCBoaXN0ZGVsKCIvIiwtMSkKKyAgIGtlZXBqIGNhbGwgaGlzdGRlbCgiLyIsLTEpCiAgIGVuZGlmCiAKICAgIiBGb2xsb3dpbmcgbGluZSBhc3NvY2lhdGVkIHdpdGggcHJpb3JpdHkgLS0gaXRlbXMgdGhhdCBzYXRpc2Z5IGEgcHJpb3JpdHkKQEAgLTU5MzQsNyArNjEwNyw3IEBACiAgICIgcHJpb3JpdHkgcHJlZml4ZXMgbmVlZCB0byBiZSByZW1vdmVkLCBidXQgbm90IGRpcmVjdG9yaWVzIHRoYXQgaGFwcGVuIHRvCiAgICIgYmUganVzdCBkaWdpdHMgdGhlbXNlbHZlcy4KICAgZXhlICdzaWwga2VlcGogJy53Om5ldHJ3X2Jhbm5lcmNudC4nLCRzL15cKFxkXHszfScuZzpuZXRyd19zZXBjaHIuJ1wpXCUoXGRcezN9Jy5nOm5ldHJ3X3NlcGNoci4nXClcK1x6ZS4vXDEvZScKLSAgY2FsbCBoaXN0ZGVsKCIvIiwtMSkKKyAga2VlcGogY2FsbCBoaXN0ZGVsKCIvIiwtMSkKIAogIiAgY2FsbCBEcmV0KCJTZXRTb3J0IikKIGVuZGZ1bgpAQCAtNTk0MywxMyArNjExNiwxMyBAQAogIiBzOk5ldHJ3U29ydFN0eWxlOiBjaGFuZ2Ugc29ydGluZyBzdHlsZSAobmFtZSAtIHRpbWUgLSBzaXplKSBhbmQgcmVmcmVzaCBkaXNwbGF5IHt7ezIKIGZ1biEgczpOZXRyd1NvcnRTdHlsZShpc2xvY2FsKQogIiAgY2FsbCBEZnVuYygiczpOZXRyd1NvcnRTdHlsZShpc2xvY2FsPSIuYTppc2xvY2FsLiIpIG5ldHJ3X3NvcnRfYnk8Ii5nOm5ldHJ3X3NvcnRfYnkuIj4iKQotICBjYWxsIHM6TmV0cndTYXZlV29yZFBvc24oKQorICBrZWVwaiBjYWxsIHM6TmV0cndTYXZlV29yZFBvc24oKQogICBsZXQgc3Zwb3M9IG5ldHJ3I05ldHJ3U2F2ZVBvc24oKQogCiAgIGxldCBnOm5ldHJ3X3NvcnRfYnk9IChnOm5ldHJ3X3NvcnRfYnkgPX4gJ24nKT8gJ3RpbWUnIDogKGc6bmV0cndfc29ydF9ieSA9fiAndCcpPyAnc2l6ZScgOiAnbmFtZScKICAga2VlcGogbm9ybSEgMAotICBjYWxsIHM6TmV0cndSZWZyZXNoKGE6aXNsb2NhbCxzOk5ldHJ3QnJvd3NlQ2hnRGlyKGE6aXNsb2NhbCwnLi8nKSkKLSAgY2FsbCBuZXRydyNOZXRyd1Jlc3RvcmVQb3NuKHN2cG9zKQorICBrZWVwaiBjYWxsIHM6TmV0cndSZWZyZXNoKGE6aXNsb2NhbCxzOk5ldHJ3QnJvd3NlQ2hnRGlyKGE6aXNsb2NhbCwnLi8nKSkKKyAga2VlcGogY2FsbCBuZXRydyNOZXRyd1Jlc3RvcmVQb3NuKHN2cG9zKQogCiAiICBjYWxsIERyZXQoInM6TmV0cndTb3J0U3R5bGUgOiBuZXRyd19zb3J0X2J5PCIuZzpuZXRyd19zb3J0X2J5LiI+IikKIGVuZGZ1bgpAQCAtNTk3Miw4ICs2MTQ1LDggQEAKICIgICBjYWxsIERlY2hvKCJleGUgIi4oZzpuZXRyd19hbHRvPyAiYmVsICIgOiAiYWJvICIpLmc6bmV0cndfd2luc2l6ZS4id2luY21kIHMiKQogICAgZXhlIChnOm5ldHJ3X2FsdG8/ICJiZWwgIiA6ICJhYm8gIikuZzpuZXRyd193aW5zaXplLiJ3aW5jbWQgcyIKICAgIGxldCBzOmRpZHNwbGl0PSAxCi0gICBjYWxsIHM6UmVzdG9yZVdpblZhcnMoKQotICAgY2FsbCBzOk5ldHJ3QnJvd3NlKDAsczpOZXRyd0Jyb3dzZUNoZ0RpcigwLHM6TmV0cndHZXRXb3JkKCkpKQorICAga2VlcGogY2FsbCBzOlJlc3RvcmVXaW5WYXJzKCkKKyAgIGtlZXBqIGNhbGwgczpOZXRyd0Jyb3dzZSgwLHM6TmV0cndCcm93c2VDaGdEaXIoMCxzOk5ldHJ3R2V0V29yZCgpKSkKICAgIHVubGV0IHM6ZGlkc3BsaXQKIAogICBlbHNlaWYgYTptb2RlID09IDEKQEAgLTU5ODIsOCArNjE1NSw4IEBACiAiICAgY2FsbCBEZWNobygidGFibmV3IikKICAgIHRhYm5ldwogICAgbGV0IHM6ZGlkc3BsaXQ9IDEKLSAgIGNhbGwgczpSZXN0b3JlV2luVmFycygpCi0gICBjYWxsIHM6TmV0cndCcm93c2UoMCxuZXdkaXIpCisgICBrZWVwaiBjYWxsIHM6UmVzdG9yZVdpblZhcnMoKQorICAga2VlcGogY2FsbCBzOk5ldHJ3QnJvd3NlKDAsbmV3ZGlyKQogICAgdW5sZXQgczpkaWRzcGxpdAogCiAgIGVsc2VpZiBhOm1vZGUgPT0gMgpAQCAtNTk5MSw4ICs2MTY0LDggQEAKICIgICBjYWxsIERlY2hvKCJleGUgIi4oZzpuZXRyd19hbHR2PyAicmlnaHRiICIgOiAibGVmdGEgIikuZzpuZXRyd193aW5zaXplLiJ3aW5jbWQgdiIpCiAgICBleGUgKGc6bmV0cndfYWx0dj8gInJpZ2h0YiAiIDogImxlZnRhICIpLmc6bmV0cndfd2luc2l6ZS4id2luY21kIHYiCiAgICBsZXQgczpkaWRzcGxpdD0gMQotICAgY2FsbCBzOlJlc3RvcmVXaW5WYXJzKCkKLSAgIGNhbGwgczpOZXRyd0Jyb3dzZSgwLHM6TmV0cndCcm93c2VDaGdEaXIoMCxzOk5ldHJ3R2V0V29yZCgpKSkKKyAgIGtlZXBqIGNhbGwgczpSZXN0b3JlV2luVmFycygpCisgICBrZWVwaiBjYWxsIHM6TmV0cndCcm93c2UoMCxzOk5ldHJ3QnJvd3NlQ2hnRGlyKDAsczpOZXRyd0dldFdvcmQoKSkpCiAgICB1bmxldCBzOmRpZHNwbGl0CiAKICAgZWxzZWlmIGE6bW9kZSA9PSAzCkBAIC02MDAwLDggKzYxNzMsOCBAQAogIiAgIGNhbGwgRGVjaG8oImV4ZSAiLihnOm5ldHJ3X2FsdG8/ICJiZWwgIiA6ICJhYm8gIikuZzpuZXRyd193aW5zaXplLiJ3aW5jbWQgcyIpCiAgICBleGUgKGc6bmV0cndfYWx0bz8gImJlbCAiIDogImFibyAiKS5nOm5ldHJ3X3dpbnNpemUuIndpbmNtZCBzIgogICAgbGV0IHM6ZGlkc3BsaXQ9IDEKLSAgIGNhbGwgczpSZXN0b3JlV2luVmFycygpCi0gICBjYWxsIG5ldHJ3I0xvY2FsQnJvd3NlQ2hlY2soczpOZXRyd0Jyb3dzZUNoZ0RpcigxLHM6TmV0cndHZXRXb3JkKCkpKQorICAga2VlcGogY2FsbCBzOlJlc3RvcmVXaW5WYXJzKCkKKyAgIGtlZXBqIGNhbGwgbmV0cncjTG9jYWxCcm93c2VDaGVjayhzOk5ldHJ3QnJvd3NlQ2hnRGlyKDEsczpOZXRyd0dldFdvcmQoKSkpCiAgICB1bmxldCBzOmRpZHNwbGl0CiAKICAgZWxzZWlmIGE6bW9kZSA9PSA0CkBAIC02MDEyLDggKzYxODUsOCBAQAogICAgdGFibmV3CiAgICBsZXQgYjpuZXRyd19jdXJkaXI9IG5ldHJ3X2N1cmRpcgogICAgbGV0IHM6ZGlkc3BsaXQ9IDEKLSAgIGNhbGwgczpSZXN0b3JlV2luVmFycygpCi0gICBjYWxsIG5ldHJ3I0xvY2FsQnJvd3NlQ2hlY2soczpOZXRyd0Jyb3dzZUNoZ0RpcigxLGN1cnNvcndvcmQpKQorICAga2VlcGogY2FsbCBzOlJlc3RvcmVXaW5WYXJzKCkKKyAgIGtlZXBqIGNhbGwgbmV0cncjTG9jYWxCcm93c2VDaGVjayhzOk5ldHJ3QnJvd3NlQ2hnRGlyKDEsY3Vyc29yd29yZCkpCiAgICB1bmxldCBzOmRpZHNwbGl0CiAKICAgZWxzZWlmIGE6bW9kZSA9PSA1CkBAIC02MDIxLDEyICs2MTk0LDEyIEBACiAiICAgY2FsbCBEZWNobygiZXhlICIuKGc6bmV0cndfYWx0dj8gInJpZ2h0YiAiIDogImxlZnRhICIpLmc6bmV0cndfd2luc2l6ZS4id2luY21kIHYiKQogICAgZXhlIChnOm5ldHJ3X2FsdHY/ICJyaWdodGIgIiA6ICJsZWZ0YSAiKS5nOm5ldHJ3X3dpbnNpemUuIndpbmNtZCB2IgogICAgbGV0IHM6ZGlkc3BsaXQ9IDEKLSAgIGNhbGwgczpSZXN0b3JlV2luVmFycygpCi0gICBjYWxsIG5ldHJ3I0xvY2FsQnJvd3NlQ2hlY2soczpOZXRyd0Jyb3dzZUNoZ0RpcigxLHM6TmV0cndHZXRXb3JkKCkpKQorICAga2VlcGogY2FsbCBzOlJlc3RvcmVXaW5WYXJzKCkKKyAgIGtlZXBqIGNhbGwgbmV0cncjTG9jYWxCcm93c2VDaGVjayhzOk5ldHJ3QnJvd3NlQ2hnRGlyKDEsczpOZXRyd0dldFdvcmQoKSkpCiAgICB1bmxldCBzOmRpZHNwbGl0CiAKICAgZWxzZQotICAgY2FsbCBuZXRydyNFcnJvck1zZyhzOkVSUk9SLCIoTmV0cndTcGxpdCkgdW5zdXBwb3J0ZWQgbW9kZT0iLmE6bW9kZSw0NSkKKyAgIGtlZXBqIGNhbGwgbmV0cncjRXJyb3JNc2coczpFUlJPUiwiKE5ldHJ3U3BsaXQpIHVuc3VwcG9ydGVkIG1vZGU9Ii5hOm1vZGUsNDUpCiAgIGVuZGlmCiAKICIgIGNhbGwgRHJldCgiczpOZXRyd1NwbGl0IikKQEAgLTYxNjcsMTAgKzYzNDAsMTAgQEAKICIgICBjYWxsIERlY2hvKCJkaXI8Ii5kaXIuIj4gZW50cnk8Ii5lbnRyeS4iPiBkaXJlbnRyeTwiLmRpcmVudHJ5LiI+IikKICAgIGlmIGVudHJ5ID1+ICcvJCcgJiYgaGFzX2tleSh3Om5ldHJ3X3RyZWVkaWN0LGRpcmVudHJ5KQogIiAgICBjYWxsIERlY2hvKCI8Ii5kaXJlbnRyeS4iPiBpcyBhIGtleSBpbiB0cmVlZGljdCAtIGRpc3BsYXkgc3VidHJlZSBmb3IgaXQiKQotICAgIGNhbGwgczpOZXRyd1RyZWVEaXNwbGF5KGRpcmVudHJ5LGRlcHRoKQorICAgIGtlZXBqIGNhbGwgczpOZXRyd1RyZWVEaXNwbGF5KGRpcmVudHJ5LGRlcHRoKQogICAgZWxzZWlmIGVudHJ5ID1+ICcvJCcgJiYgaGFzX2tleSh3Om5ldHJ3X3RyZWVkaWN0LGRpcmVudHJ5LicvJykKICIgICAgY2FsbCBEZWNobygiPCIuZGlyZW50cnkuIi8+IGlzIGEga2V5IGluIHRyZWVkaWN0IC0gZGlzcGxheSBzdWJ0cmVlIGZvciBpdCIpCi0gICAgY2FsbCBzOk5ldHJ3VHJlZURpc3BsYXkoZGlyZW50cnkuJy8nLGRlcHRoKQorICAgIGtlZXBqIGNhbGwgczpOZXRyd1RyZWVEaXNwbGF5KGRpcmVudHJ5LicvJyxkZXB0aCkKICAgIGVsc2UKICIgICAgY2FsbCBEZWNobygiPCIuZW50cnkuIj4gaXMgbm90IGEga2V5IGluIHRyZWVkaWN0IChubyBzdWJ0cmVlKSIpCiAgICAgc2lsISBrZWVwaiBjYWxsIHNldGxpbmUobGluZSgiJCIpKzEsZGVwdGguZW50cnkpCkBAIC02MjE5LDcgKzYzOTIsNyBAQAogIiAgIGNhbGwgRGVjaG8oImZuYW1lPCIuZm5hbWUuIj4iKQogCiAgICAiIGRpc3BsYXkgZnJvbSB0cmVldG9wIG9uIGRvd24KLSAgIGNhbGwgczpOZXRyd1RyZWVEaXNwbGF5KHc6bmV0cndfdHJlZXRvcCwiIikKKyAgIGtlZXBqIGNhbGwgczpOZXRyd1RyZWVEaXNwbGF5KHc6bmV0cndfdHJlZXRvcCwiIikKIAogIiAgIGNhbGwgRHJldCgiTmV0cndUcmVlTGlzdGluZyA6IGJ1Zm5hbWU8Ii5leHBhbmQoIiUiKS4iPiIpCiAgIGVuZGlmCkBAIC02MjQwLDcgKzY0MTMsNyBAQAogICAgbGV0IGI6bmV0cndfY3BmPSAwCiAgICBpZiBsaW5lKCIkIikgPj0gdzpuZXRyd19iYW5uZXJjbnQKICAgICBleGUgJ3NpbCBrZWVwaiAnLnc6bmV0cndfYmFubmVyY250LicsJGcvXi4vaWYgdmlydGNvbCgiJCIpID4gYjpuZXRyd19jcGZ8bGV0IGI6bmV0cndfY3BmPSB2aXJ0Y29sKCIkIil8ZW5kaWYnCi0gICAgY2FsbCBoaXN0ZGVsKCIvIiwtMSkKKyAgICBrZWVwaiBjYWxsIGhpc3RkZWwoIi8iLC0xKQogICAgZWxzZQogIiAgICBjYWxsIERyZXQoIk5ldHJ3V2lkZUxpc3RpbmciKQogICAgIHJldHVybgpAQCAtNjI1Nyw3ICs2NDMwLDcgQEAKIAogICAgIiBtYWtlIHdpZGUgZGlzcGxheQogICAgZXhlICdzaWwga2VlcGogJy53Om5ldHJ3X2Jhbm5lcmNudC4nLCRzL14uKiQvXD1lc2NhcGUocHJpbnRmKCIlLScuYjpuZXRyd19jcGYuJ3MiLHN1Ym1hdGNoKDApKSwiXFwiKS8nCi0gICBjYWxsIGhpc3RkZWwoIi8iLC0xKQorICAga2VlcGogY2FsbCBoaXN0ZGVsKCIvIiwtMSkKICAgIGxldCBmcGMgICAgICAgICA9IChsaW5lKCIkIikgLSB3Om5ldHJ3X2Jhbm5lcmNudCArIHc6bmV0cndfZnBsKS93Om5ldHJ3X2ZwbAogICAgbGV0IG5ld2NvbHN0YXJ0ID0gdzpuZXRyd19iYW5uZXJjbnQgKyBmcGMKICAgIGxldCBuZXdjb2xlbmQgICA9IG5ld2NvbHN0YXJ0ICsgZnBjIC0gMQpAQCAtNjI3NSw5ICs2NDQ4LDkgQEAKICAgICBleGUgInNpbCEga2VlcGogIi5uZXdjb2xzdGFydC4nLCcubmV3Y29sZW5kLidkJwogICAgIGV4ZSAnc2lsISBrZWVwaiAnLnc6bmV0cndfYmFubmVyY250CiAgICBlbmR3aGlsZQotICAgc2lsZW50ISBsZXQgQCo9IGtlZXByZWdzdGFyCisgICBzaWwhIGxldCBAKj0ga2VlcHJlZ3N0YXIKICAgIGV4ZSAic2lsISBrZWVwaiAiLnc6bmV0cndfYmFubmVyY250LicsJHMvXHNcKyQvL2UnCi0gICBjYWxsIGhpc3RkZWwoIi8iLC0xKQorICAga2VlcGogY2FsbCBoaXN0ZGVsKCIvIiwtMSkKICAgIHNldGxvY2FsIG5vbWEgbm9tb2Qgcm8KICIgICBjYWxsIERyZXQoIk5ldHJ3V2lkZUxpc3RpbmciKQogICBlbmRpZgpAQCAtNjI4OSw3ICs2NDYyLDcgQEAKIGZ1biEgczpQZXJmb3JtTGlzdGluZyhpc2xvY2FsKQogIiAgY2FsbCBEZnVuYygiczpQZXJmb3JtTGlzdGluZyhpc2xvY2FsPSIuYTppc2xvY2FsLiIpIGJ1Zm5yKCUpPSIuYnVmbnIoIiUiKS4iPCIuYnVmbmFtZSgiJSIpLiI+IikKIAotICBjYWxsIHM6TmV0cndTYWZlT3B0aW9ucygpCisgIGtlZXBqIGNhbGwgczpOZXRyd1NhZmVPcHRpb25zKCkKICAgc2V0bG9jYWwgbm9ybyBtYQogIiAgY2FsbCBEZWNobygic2V0bG9jYWwgbm9ybyBtYSIpCiAKQEAgLTYzMDUsMTcgKzY0NzgsMTYgQEAKICAgZW5kaWYKIAogICAiIHNhdmUgY3VycmVudCBkaXJlY3Rvcnkgb24gZGlyZWN0b3J5IGhpc3RvcnkgbGlzdAotICBjYWxsIHM6TmV0cndCb29rSGlzdEhhbmRsZXIoMyxiOm5ldHJ3X2N1cmRpcikKKyAga2VlcGogY2FsbCBzOk5ldHJ3Qm9va0hpc3RIYW5kbGVyKDMsYjpuZXRyd19jdXJkaXIpCiAKICAgIiBTZXQgdXAgdGhlIGJhbm5lciB7e3szCiAgIGlmIGc6bmV0cndfYmFubmVyCiAiICAgY2FsbCBEZWNobygic2V0IHVwIGJhbm5lciIpCi0gICBrZWVwaiBwdXQgPSdcIiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09JwotICAga2VlcGogcHV0ID0nXCIgTmV0cncgRGlyZWN0b3J5IExpc3RpbmcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5ldHJ3ICcuZzpsb2FkZWRfbmV0cncuJyknCi0gICBrZWVwaiBwdXQgPSdcIiAgICcuYjpuZXRyd19jdXJkaXIKLSAgIGtlZXBqIDFkCisgICBrZWVwaiBjYWxsIHNldGxpbmUoMSwnIiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09JykKKyAgIGtlZXBqIGNhbGwgc2V0bGluZSgyLCciIE5ldHJ3IERpcmVjdG9yeSBMaXN0aW5nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChuZXRydyAnLmc6bG9hZGVkX25ldHJ3LicpJykKKyAgIGtlZXBqIGNhbGwgc2V0bGluZSgzLCciICAgJy5iOm5ldHJ3X2N1cmRpcikKICAgIGxldCB3Om5ldHJ3X2Jhbm5lcmNudD0gMwotICAgZXhlICJzaWwhIGtlZXBqICIudzpuZXRyd19iYW5uZXJjbnQKKyAgIGtlZXBqIGV4ZSAic2lsISBrZWVwaiAiLnc6bmV0cndfYmFubmVyY250CiAgIGVsc2UKICAgIGtlZXBqIDEKICAgIGxldCB3Om5ldHJ3X2Jhbm5lcmNudD0gMQpAQCAtNjM4OCwxOCArNjU2MCwyMCBAQAogICAiIHNldCB1cCBzeW50YXggaGlnaGxpZ2h0aW5nIHt7ezMKICIgIGNhbGwgRGVjaG8oInNldCB1cCBzeW50YXggaGlnaGxpZ2h0aW5nIikKICAgaWYgaGFzKCJzeW50YXgiKQotICAgc2V0ZiBuZXRydwogICAgaWYgIWV4aXN0cygiZzpzeW50YXhfb24iKSB8fCAhZzpzeW50YXhfb24KKyIgICAgY2FsbCBEZWNobygiYnV0IGc6c3ludGF4X29uIi4oZXhpc3RzKCJnOnN5bnRheF9vbiIpPyAiPSIuZzpzeW50YXhfb24gOiAiPGRvZXNuJ3QgZXhpc3Q+IikpCiAgICAgc2V0bG9jYWwgZnQ9CisgICBlbHNlaWYgJmZ0ICE9ICJuZXRydyIKKyAgICBzZXRsb2NhbCBmdD1uZXRydwogICAgZW5kaWYKICAgZW5kaWYKIAogICAiIGdldCBsaXN0IG9mIGZpbGVzCiAiICBjYWxsIERlY2hvKCJHZXQgbGlzdCBvZiBmaWxlcyAtIGlzbG9jYWw9Ii5hOmlzbG9jYWwpCiAgIGlmIGE6aXNsb2NhbAotICAgY2FsbCBzOkxvY2FsTGlzdGluZygpCisgICBrZWVwaiBjYWxsIHM6TG9jYWxMaXN0aW5nKCkKICAgZWxzZSAiIHJlbW90ZQotICAgY2FsbCBzOk5ldHJ3UmVtb3RlTGlzdGluZygpCisgICBrZWVwaiBjYWxsIHM6TmV0cndSZW1vdGVMaXN0aW5nKCkKICAgZW5kaWYKICIgIGNhbGwgRGVjaG8oImc6bmV0cndfYmFubmVyPSIuZzpuZXRyd19iYW5uZXIuIiB3Om5ldHJ3X2Jhbm5lcmNudD0iLnc6bmV0cndfYmFubmVyY250LiIgKGJhbm5lciBjb21wbGV0ZSkiKQogCkBAIC02NDA4LDE0ICs2NTgyLDE0IEBACiAiICAgY2FsbCBEZWNobygibWFuaXB1bGF0ZSBkaXJlY3RvcnkgbGlzdGluZyAoaGlkZSkiKQogIiAgIGNhbGwgRGVjaG8oImc6bmV0cndfaGlkZT0iLmc6bmV0cndfaGlkZS4iIGc6bmV0cndfbGlzdF9oaWRlPCIuZzpuZXRyd19saXN0X2hpZGUuIj4iKQogICAgaWYgZzpuZXRyd19oaWRlICYmIGc6bmV0cndfbGlzdF9oaWRlICE9ICIiCi0gICAgY2FsbCBzOk5ldHJ3TGlzdEhpZGUoKQorICAgIGtlZXBqIGNhbGwgczpOZXRyd0xpc3RIaWRlKCkKICAgIGVuZGlmCiAgICBpZiAhZzpuZXRyd19iYW5uZXIgfHwgbGluZSgiJCIpID49IHc6bmV0cndfYmFubmVyY250CiAiICAgIGNhbGwgRGVjaG8oIm1hbmlwdWxhdGUgZGlyZWN0b3J5IGxpc3RpbmcgKHNvcnQpIDogZzpuZXRyd19zb3J0X2J5PCIuZzpuZXRyd19zb3J0X2J5LiI+IikKIAogICAgIGlmIGc6bmV0cndfc29ydF9ieSA9fiAiXm4iCiAgICAgICIgc29ydCBieSBuYW1lCi0gICAgIGNhbGwgczpOZXRyd1NldFNvcnQoKQorICAgICBrZWVwaiBjYWxsIHM6TmV0cndTZXRTb3J0KCkKIAogICAgICBpZiAhZzpuZXRyd19iYW5uZXIgfHwgdzpuZXRyd19iYW5uZXJjbnQgPCBsaW5lKCIkIikKICIgICAgICBjYWxsIERlY2hvKCJnOm5ldHJ3X3NvcnRfZGlyZWN0aW9uPSIuZzpuZXRyd19zb3J0X2RpcmVjdGlvbi4iIChiYW5uZXJjbnQ9Ii53Om5ldHJ3X2Jhbm5lcmNudC4iKSIpCkBAIC02NDMwLDIwICs2NjA0LDIwIEBACiAgICAgICIgcmVtb3ZlIHByaW9yaXR5IHBhdHRlcm4gcHJlZml4CiAiICAgICBjYWxsIERlY2hvKCJyZW1vdmUgcHJpb3JpdHkgcGF0dGVybiBwcmVmaXgiKQogICAgICBleGUgJ3NpbCEga2VlcGogJy53Om5ldHJ3X2Jhbm5lcmNudC4nLCRzL15cZFx7M30nLmc6bmV0cndfc2VwY2hyLicvL2UnCi0gICAgIGNhbGwgaGlzdGRlbCgiLyIsLTEpCisgICAgIGtlZXBqIGNhbGwgaGlzdGRlbCgiLyIsLTEpCiAKICAgICBlbHNlaWYgYTppc2xvY2FsCiAgICAgIGlmICFnOm5ldHJ3X2Jhbm5lciB8fCB3Om5ldHJ3X2Jhbm5lcmNudCA8IGxpbmUoIiQiKQogIiAgICAgIGNhbGwgRGVjaG8oImc6bmV0cndfc29ydF9kaXJlY3Rpb249Ii5nOm5ldHJ3X3NvcnRfZGlyZWN0aW9uKQogICAgICAgaWYgZzpuZXRyd19zb3J0X2RpcmVjdGlvbiA9fiAnbicKLSIgICAgICAgY2FsbCBEZWNobygnZXhlIHNpbGVudCBrZWVwanVtcHMgJy53Om5ldHJ3X2Jhbm5lcmNudC4nLCRzb3J0JykKKyIgICAgICAgY2FsbCBEZWNobygnZXhlIHNpbCBrZWVwanVtcHMgJy53Om5ldHJ3X2Jhbm5lcmNudC4nLCRzb3J0JykKICAgICAgICBleGUgJ3NpbCEga2VlcGogJy53Om5ldHJ3X2Jhbm5lcmNudC4nLCRzb3J0Jy4nICcuZzpuZXRyd19zb3J0X29wdGlvbnMKICAgICAgIGVsc2UKLSIgICAgICAgY2FsbCBEZWNobygnZXhlIHNpbGVudCBrZWVwanVtcHMgJy53Om5ldHJ3X2Jhbm5lcmNudC4nLCRzb3J0IScpCisiICAgICAgIGNhbGwgRGVjaG8oJ2V4ZSBzaWwga2VlcGp1bXBzICcudzpuZXRyd19iYW5uZXJjbnQuJywkc29ydCEnKQogICAgICAgIGV4ZSAnc2lsISBrZWVwaiAnLnc6bmV0cndfYmFubmVyY250LicsJHNvcnQhJy4nICcuZzpuZXRyd19zb3J0X29wdGlvbnMKICAgICAgIGVuZGlmCiAgICAgIGV4ZSAnc2lsISBrZWVwaiAnLnc6bmV0cndfYmFubmVyY250LicsJHMvXlxkXHstfVwvLy9lJwotICAgICBjYWxsIGhpc3RkZWwoIi8iLC0xKQorICAgICBrZWVwaiBjYWxsIGhpc3RkZWwoIi8iLC0xKQogICAgICBlbmRpZgogICAgIGVuZGlmCiAKQEAgLTY0NTgsOCArNjYzMiw4IEBACiAKICAgIiBjb252ZXJ0IHRvIHdpZGUvdHJlZSBsaXN0aW5nIHt7ezMKICIgIGNhbGwgRGVjaG8oIm1vZGlmeSBkaXNwbGF5IGlmIHdpZGUvdHJlZSBsaXN0aW5nIHN0eWxlIikKLSAgY2FsbCBzOk5ldHJ3V2lkZUxpc3RpbmcoKQotICBjYWxsIHM6TmV0cndUcmVlTGlzdGluZyhiOm5ldHJ3X2N1cmRpcikKKyAga2VlcGogY2FsbCBzOk5ldHJ3V2lkZUxpc3RpbmcoKQorICBrZWVwaiBjYWxsIHM6TmV0cndUcmVlTGlzdGluZyhiOm5ldHJ3X2N1cmRpcikKIAogICBpZiBleGlzdHMoInc6bmV0cndfYmFubmVyY250IikgJiYgKGxpbmUoIiQiKSA+IHc6bmV0cndfYmFubmVyY250IHx8ICFnOm5ldHJ3X2Jhbm5lcikKICAgICIgcGxhY2UgY3Vyc29yIG9uIHRoZSB0b3AtbGVmdCBjb3JuZXIgb2YgdGhlIGZpbGUgbGlzdGluZwpAQCAtNjQ3MywxNSArNjY0NywxNSBAQAogIiAgY2FsbCBEZWNobygicmVjb3JkIG5ldHJ3X3BydmRpcjwiLnc6bmV0cndfcHJ2ZGlyLiI+IikKIAogICAiIHNhdmUgY2VydGFpbiB3aW5kb3ctb3JpZW50ZWQgdmFyaWFibGVzIGludG8gYnVmZmVyLW9yaWVudGVkIHZhcmlhYmxlcyB7e3szCi0gIGNhbGwgczpTZXRCdWZXaW5WYXJzKCkKLSAgY2FsbCBzOk5ldHJ3T3B0aW9uUmVzdG9yZSgidzoiKQorICBrZWVwaiBjYWxsIHM6U2V0QnVmV2luVmFycygpCisgIGtlZXBqIGNhbGwgczpOZXRyd09wdGlvblJlc3RvcmUoInc6IikKIAogICAiIHNldCBkaXNwbGF5IHRvIG5ldHJ3IGRpc3BsYXkgc2V0dGluZ3MKICIgIGNhbGwgRGVjaG8oInNldCBkaXNwbGF5IHRvIG5ldHJ3IGRpc3BsYXkgc2V0dGluZ3MgKG5vbWEgbm9tb2QgZXRjKSIpCiAgIGV4ZSAic2V0bCAiLmc6bmV0cndfYnVmc2V0dGluZ3MKICAgaWYgZXhpc3RzKCJzOnRyZWVjdXJwb3MiKQogCi0gICBjYWxsIG5ldHJ3I05ldHJ3UmVzdG9yZVBvc24oczp0cmVlY3VycG9zKQorICAga2VlcGogY2FsbCBuZXRydyNOZXRyd1Jlc3RvcmVQb3NuKHM6dHJlZWN1cnBvcykKICAgIHVubGV0IHM6dHJlZWN1cnBvcwogICBlbmRpZgogCkBAIC02NTU3LDEzICs2NzMxLDEzIEBACiAgIGVsc2VpZiAhZXhpc3RzKCJnOm5ldHJ3X2xpc3RfY21kIikgfHwgZzpuZXRyd19saXN0X2NtZCA9PSAnJwogICAgaWYgIWV4aXN0cygiZzpuZXRyd19xdWlldCIpCiAgICAgaWYgZzpuZXRyd19saXN0X2NtZCA9PSAiIgotICAgICBjYWxsIG5ldHJ3I0Vycm9yTXNnKHM6RVJST1IsZzpuZXRyd19zc2hfY21kLiIgaXMgbm90IGV4ZWN1dGFibGUgb24geW91ciBzeXN0ZW0iLDQ3KQorICAgICBrZWVwaiBjYWxsIG5ldHJ3I0Vycm9yTXNnKHM6RVJST1IsZzpuZXRyd19zc2hfY21kLiIgaXMgbm90IGV4ZWN1dGFibGUgb24geW91ciBzeXN0ZW0iLDQ3KQogICAgIGVsc2UKLSAgICAgY2FsbCBuZXRydyNFcnJvck1zZyhzOkVSUk9SLCJ0aGlzIHN5c3RlbSBkb2Vzbid0IHN1cHBvcnQgcmVtb3RlIGRpcmVjdG9yeSBsaXN0aW5nIHZpYSAiLmc6bmV0cndfbGlzdF9jbWQsMTkpCisgICAgIGtlZXBqIGNhbGwgbmV0cncjRXJyb3JNc2coczpFUlJPUiwidGhpcyBzeXN0ZW0gZG9lc24ndCBzdXBwb3J0IHJlbW90ZSBkaXJlY3RvcnkgbGlzdGluZyB2aWEgIi5nOm5ldHJ3X2xpc3RfY21kLDE5KQogICAgIGVuZGlmCiAgICBlbmRpZgogCi0gICBjYWxsIHM6TmV0cndPcHRpb25SZXN0b3JlKCJ3OiIpCisgICBrZWVwaiBjYWxsIHM6TmV0cndPcHRpb25SZXN0b3JlKCJ3OiIpCiAiICAgY2FsbCBEcmV0KCJzOk5ldHJ3UmVtb3RlTGlzdGluZyIpCiAgICByZXR1cm4KICAgZW5kaWYgICIgKHJlbW90ZSBoYW5kbGluZyBzYW5pdHkgY2hlY2spCkBAIC02NTc0LDcgKzY3NDgsNyBAQAogICBlbmRpZgogCiAgIGlmIHM6bWV0aG9kID09ICJmdHAiCi0gICAiIHVzZSBmdHAgdG8gZ2V0IHJlbW90ZSBmaWxlIGxpc3RpbmcKKyAgICIgdXNlIGZ0cCB0byBnZXQgcmVtb3RlIGZpbGUgbGlzdGluZyB7e3szCiAiICAgY2FsbCBEZWNobygidXNlIGZ0cCB0byBnZXQgcmVtb3RlIGZpbGUgbGlzdGluZyIpCiAgICBsZXQgczptZXRob2QgID0gImZ0cCIKICAgIGxldCBsaXN0Y21kID0gZzpuZXRyd19mdHBfbGlzdF9jbWQKQEAgLTY1OTUsMTAgKzY3NjksMTAgQEAKICAgICAiIGNsZWFudXAKICAgICBpZiBnOm5ldHJ3X2Z0cF9icm93c2VfcmVqZWN0ICE9ICIiCiAgICAgIGV4ZSAic2lsISBrZWVwYWx0IGtlZXBqIGcvIi5nOm5ldHJ3X2Z0cF9icm93c2VfcmVqZWN0LiIva2VlcGogZCIKLSAgICAgY2FsbCBoaXN0ZGVsKCIvIiwtMSkKKyAgICAga2VlcGogY2FsbCBoaXN0ZGVsKCIvIiwtMSkKICAgICBlbmRpZgogICAgIHNpbCEga2VlcGogJXMvXHIkLy9lCi0gICAgY2FsbCBoaXN0ZGVsKCIvIiwtMSkKKyAgICBrZWVwaiBjYWxsIGhpc3RkZWwoIi8iLC0xKQogCiAgICAgIiBpZiB0aGVyZSdzIG5vIC4uLyBsaXN0ZWQsIHRoZW4gcHV0IC4vIGFuZCAuLi8gaW4KICAgICBsZXQgbGluZTE9IGxpbmUoIi4iKQpAQCAtNjYxNiwxNSArNjc5MCwxNSBAQAogICAgIGlmIHNlYXJjaCgnXlxkXHsyfS1cZFx7Mn0tXGRcezJ9XHMnLCduJykgIiBNJCBmdHAgc2l0ZSBjbGVhbnVwCiAiICAgICBjYWxsIERlY2hvKCJNJCBmdHAgY2xlYW51cCIpCiAgICAgIGV4ZSAnc2lsISBrZWVwaiAnLnc6bmV0cndfYmFubmVyY250LicsJHMvXlxkXHsyfS1cZFx7Mn0tXGRcezJ9XHNcK1xkXCs6XGRcK1tBYVBwXVtNbV1cc1wrXCUoPERJUj5cfFxkXCtcKVxzXCsvLycKLSAgICAgY2FsbCBoaXN0ZGVsKCIvIiwtMSkKKyAgICAga2VlcGogY2FsbCBoaXN0ZGVsKCIvIiwtMSkKICAgICBlbHNlICIgbm9ybWFsIGZ0cCBjbGVhbnVwCiAiICAgICBjYWxsIERlY2hvKCJub3JtYWwgZnRwIGNsZWFudXAiKQogICAgICBleGUgJ3NpbCEga2VlcGogJy53Om5ldHJ3X2Jhbm5lcmNudC4nLCRzL15cKFwlKFxTXCtcc1wrXClcezd9XFNcK1wpXHNcK1woXFMuKlwpJC9cMi9lJwogICAgICBleGUgInNpbCEga2VlcGogIi53Om5ldHJ3X2Jhbm5lcmNudC4nLCRnLyAtPiAvcyMgLT4gLiovJCMvI2UnCiAgICAgIGV4ZSAic2lsISBrZWVwaiAiLnc6bmV0cndfYmFubmVyY250LicsJGcvIC0+IC9zIyAtPiAuKiQjLyNlJwotICAgICBjYWxsIGhpc3RkZWwoIi8iLC0xKQotICAgICBjYWxsIGhpc3RkZWwoIi8iLC0xKQotICAgICBjYWxsIGhpc3RkZWwoIi8iLC0xKQorICAgICBrZWVwaiBjYWxsIGhpc3RkZWwoIi8iLC0xKQorICAgICBrZWVwaiBjYWxsIGhpc3RkZWwoIi8iLC0xKQorICAgICBrZWVwaiBjYWxsIGhpc3RkZWwoIi8iLC0xKQogICAgIGVuZGlmCiAgICBlbmRpZgogCkBAIC02NjM0LDI1ICs2ODA4LDI1IEBACiAgICBsZXQgbGlzdGNtZD0gczpNYWtlU3NoQ21kKGc6bmV0cndfbGlzdF9jbWQpCiAiICAgY2FsbCBEZWNobygibGlzdGNtZDwiLmxpc3RjbWQuIj4gKHVzaW5nIGc6bmV0cndfbGlzdF9jbWQpIikKICAgIGlmIGc6bmV0cndfc2NwX2NtZCA9fiAnXnBzY3AnCi0iICAgIGNhbGwgRGVjaG8oIjE6IGV4ZSBzaWxlbnQgciEgIi5zaGVsbGVzY2FwZShsaXN0Y21kLnM6cGF0aCwgMSkpCisiICAgIGNhbGwgRGVjaG8oIjE6IGV4ZSBzaWwgciEgIi5zaGVsbGVzY2FwZShsaXN0Y21kLnM6cGF0aCwgMSkpCiAgICAgZXhlICJzaWwhIGtlZXBqIHIhICIubGlzdGNtZC5zaGVsbGVzY2FwZShzOnBhdGgsIDEpCiAgICAgIiByZW1vdmUgcnViYmlzaCBhbmQgYWRqdXN0IGxpc3RpbmcgZm9ybWF0IG9mICdwc2NwJyB0byAnc3NoIGxzIC1GTGEnIGxpa2UKICAgICBzaWwhIGtlZXBqIGcvXkxpc3RpbmcgZGlyZWN0b3J5L2tlZXBqIGQKICAgICBzaWwhIGtlZXBqIGcvXmRbLXJ3eF1bLXJ3eF1bLXJ3eF0va2VlcGogcyskKy8rZQogICAgIHNpbCEga2VlcGogZy9ebFstcnd4XVstcnd4XVstcnd4XS9rZWVwaiBzKyQrQCtlCi0gICAgY2FsbCBoaXN0ZGVsKCIvIiwtMSkKLSAgICBjYWxsIGhpc3RkZWwoIi8iLC0xKQotICAgIGNhbGwgaGlzdGRlbCgiLyIsLTEpCisgICAga2VlcGogY2FsbCBoaXN0ZGVsKCIvIiwtMSkKKyAgICBrZWVwaiBjYWxsIGhpc3RkZWwoIi8iLC0xKQorICAgIGtlZXBqIGNhbGwgaGlzdGRlbCgiLyIsLTEpCiAgICAgaWYgZzpuZXRyd19saXN0c3R5bGUgIT0gczpMT05HTElTVAogICAgICBzaWwhIGtlZXBqIGcvXltkbHNwLV1bLXJ3eF1bLXJ3eF1bLXJ3eF0va2VlcGogcy9eLipcc1woXFNcK1wpJC9cMS9lCi0gICAgIGNhbGwgaGlzdGRlbCgiLyIsLTEpCisgICAgIGtlZXBqIGNhbGwgaGlzdGRlbCgiLyIsLTEpCiAgICAgZW5kaWYKICAgIGVsc2UKICAgICBpZiBzOnBhdGggPT0gIiIKLSIgICAgIGNhbGwgRGVjaG8oIjI6IGV4ZSBzaWxlbnQgciEgIi5saXN0Y21kKQorIiAgICAgY2FsbCBEZWNobygiMjogZXhlIHNpbCByISAiLmxpc3RjbWQpCiAgICAgIGV4ZSAic2lsISBrZWVwYWx0IHIhICIubGlzdGNtZAogICAgIGVsc2UKLSIgICAgIGNhbGwgRGVjaG8oIjM6IGV4ZSBzaWxlbnQgciEgIi5saXN0Y21kLicgJy5zaGVsbGVzY2FwZShzOnBhdGgsMSkpCisiICAgICBjYWxsIERlY2hvKCIzOiBleGUgc2lsIHIhICIubGlzdGNtZC4nICcuc2hlbGxlc2NhcGUoczpwYXRoLDEpKQogICAgICBleGUgInNpbCEga2VlcGFsdCByISAiLmxpc3RjbWQuJyAnLnNoZWxsZXNjYXBlKHM6cGF0aCwxKQogIiAgICAgY2FsbCBEZWNobygibGlzdGNtZDwiLmxpc3RjbWQuIj4gcGF0aDwiLnM6cGF0aC4iPiIpCiAgICAgZW5kaWYKQEAgLTY2NjAsOSArNjgzNCw5IEBACiAKICAgICIgY2xlYW51cAogICAgaWYgZzpuZXRyd19mdHBfYnJvd3NlX3JlamVjdCAhPSAiIgotIiAgICBjYWxsIERlY2hvKCIoY2xlYW51cCkgZXhlIHNpbGVudCEgZy8iLmc6bmV0cndfc3NoX2Jyb3dzZV9yZWplY3QuIi9rZWVwanVtcHMgZCIpCisiICAgIGNhbGwgRGVjaG8oIihjbGVhbnVwKSBleGUgc2lsISBnLyIuZzpuZXRyd19zc2hfYnJvd3NlX3JlamVjdC4iL2tlZXBqdW1wcyBkIikKICAgICBleGUgInNpbCEgZy8iLmc6bmV0cndfc3NoX2Jyb3dzZV9yZWplY3QuIi9rZWVwaiBkIgotICAgIGNhbGwgaGlzdGRlbCgiLyIsLTEpCisgICAga2VlcGogY2FsbCBoaXN0ZGVsKCIvIiwtMSkKICAgIGVuZGlmCiAgIGVuZGlmCiAKQEAgLTY2OTksOSArNjg3Myw5IEBACiAgICAgZXhlICdzaWwga2VlcGogJy53Om5ldHJ3X2Jhbm5lcmNudC4nLCRzLyAtPiAuKiQvL2UnCiAgICAgZXhlICdzaWwga2VlcGogJy53Om5ldHJ3X2Jhbm5lcmNudC4nLCRzL15cKFwlKFxTXCtcc1wrXClcezd9XFNcK1wpXHNcK1woXFMuKlwpJC9cMlx0XDEvZScKICAgICBleGUgJ3NpbCBrZWVwaiAnLnc6bmV0cndfYmFubmVyY250Ci0gICAgY2FsbCBoaXN0ZGVsKCIvIiwtMSkKLSAgICBjYWxsIGhpc3RkZWwoIi8iLC0xKQotICAgIGNhbGwgaGlzdGRlbCgiLyIsLTEpCisgICAga2VlcGogY2FsbCBoaXN0ZGVsKCIvIiwtMSkKKyAgICBrZWVwaiBjYWxsIGhpc3RkZWwoIi8iLC0xKQorICAgIGtlZXBqIGNhbGwgaGlzdGRlbCgiLyIsLTEpCiAgICBlbmRpZgogICBlbmRpZgogCkBAIC02NzU0LDggKzY5MjgsOCBAQAogCiAgICIgcmVmcmVzaCB0aGUgKHJlbW90ZSkgZGlyZWN0b3J5IGxpc3RpbmcKICIgIGNhbGwgRGVjaG8oInJlZnJlc2ggcmVtb3RlIGRpcmVjdG9yeSBsaXN0aW5nIikKLSAgY2FsbCBzOk5ldHJ3UmVmcmVzaCgwLHM6TmV0cndCcm93c2VDaGdEaXIoMCwnLi8nKSkKLSAgY2FsbCBuZXRydyNOZXRyd1Jlc3RvcmVQb3NuKHN2cG9zKQorICBrZWVwaiBjYWxsIHM6TmV0cndSZWZyZXNoKDAsczpOZXRyd0Jyb3dzZUNoZ0RpcigwLCcuLycpKQorICBrZWVwaiBjYWxsIG5ldHJ3I05ldHJ3UmVzdG9yZVBvc24oc3Zwb3MpCiAKICIgIGNhbGwgRHJldCgiczpOZXRyd1JlbW90ZVJtIikKIGVuZGZ1bgpAQCAtNjgwMiw3ICs2OTc2LDcgQEAKICAgICAgbGV0IG5ldHJ3X3JtX2NtZD0gczpNYWtlU3NoQ21kKGc6bmV0cndfcm1fY21kKQogIiAgICAgY2FsbCBEZWNobygibmV0cndfcm1fY21kPCIubmV0cndfcm1fY21kLiI+IikKICAgICAgaWYgIWV4aXN0cygiYjpuZXRyd19jdXJkaXIiKQotICAgICAgY2FsbCBuZXRydyNFcnJvck1zZyhzOkVSUk9SLCJmb3Igc29tZSByZWFzb24gYjpuZXRyd19jdXJkaXIgZG9lc24ndCBleGlzdCEiLDUzKQorICAgICAga2VlcGogY2FsbCBuZXRydyNFcnJvck1zZyhzOkVSUk9SLCJmb3Igc29tZSByZWFzb24gYjpuZXRyd19jdXJkaXIgZG9lc24ndCBleGlzdCEiLDUzKQogICAgICAgbGV0IG9rPSJxIgogICAgICBlbHNlCiAgICAgICBsZXQgcmVtb3RlZGlyPSBzdWJzdGl0dXRlKGI6bmV0cndfY3VyZGlyLCdeLiovL1teL11cKy9cKC4qXCkkJywnXDEnLCcnKQpAQCAtNjgxNyw3ICs2OTkxLDcgQEAKICIgICAgICBjYWxsIERlY2hvKCJjYWxsIHN5c3RlbSgiLm5ldHJ3X3JtX2NtZC4iKSIpCiAgICAgICBsZXQgcmV0PSBzeXN0ZW0obmV0cndfcm1fY21kKQogICAgICAgaWYgcmV0ICE9IDAKLSAgICAgICBjYWxsIG5ldHJ3I0Vycm9yTXNnKHM6V0FSTklORywiY21kPCIubmV0cndfcm1fY21kLiI+IGZhaWxlZCIsNjApCisgICAgICAga2VlcGogY2FsbCBuZXRydyNFcnJvck1zZyhzOldBUk5JTkcsImNtZDwiLm5ldHJ3X3JtX2NtZC4iPiBmYWlsZWQiLDYwKQogICAgICAgZW5kaWYKICIgICAgICBjYWxsIERlY2hvKCJyZXR1cm5lZD0iLnJldC4iIGVycmNvZGU9Ii52OnNoZWxsX2Vycm9yKQogICAgICBlbmRpZgpAQCAtNjg0NSw3ICs3MDE5LDcgQEAKIAogICAgaWYgYWxsIHx8IG9rID1+ICd5XCVbZXNdJyB8fCBvayA9PSAiIgogICAgIGlmIGV4aXN0cygidzpuZXRyd19tZXRob2QiKSAmJiAodzpuZXRyd19tZXRob2QgPT0gMiB8fCB3Om5ldHJ3X21ldGhvZCA9PSAzKQotICAgICBjYWxsIHM6TmV0cndSZW1vdGVGdHBDbWQoYTpwYXRoLCJybWRpciAiLmE6cm1maWxlKQorICAgICBrZWVwaiBjYWxsIHM6TmV0cndSZW1vdGVGdHBDbWQoYTpwYXRoLCJybWRpciAiLmE6cm1maWxlKQogICAgIGVsc2UKICAgICAgbGV0IHJtZmlsZSAgICAgICAgICA9IHN1YnN0aXR1dGUoYTpwYXRoLmE6cm1maWxlLCcvJCcsJycsJycpCiAgICAgIGxldCBuZXRyd19ybWRpcl9jbWQgPSBzOk1ha2VTc2hDbWQobmV0cncjV2luUGF0aChnOm5ldHJ3X3JtZGlyX2NtZCkpLicgJy5zaGVsbGVzY2FwZShuZXRydyNXaW5QYXRoKHJtZmlsZSkpCkBAIC02ODYxLDcgKzcwMzUsNyBAQAogIiAgICAgIGNhbGwgRGVjaG8oInJldHVybmVkPSIucmV0LiIgZXJyY29kZT0iLnY6c2hlbGxfZXJyb3IpCiAKICAgICAgIGlmIHY6c2hlbGxfZXJyb3IgIT0gMCAmJiAhZXhpc3RzKCJnOm5ldHJ3X3F1aWV0IikKLSAgICAgIAljYWxsIG5ldHJ3I0Vycm9yTXNnKHM6RVJST1IsInVuYWJsZSB0byByZW1vdmUgZGlyZWN0b3J5PCIucm1maWxlLiI+IC0tIGlzIGl0IGVtcHR5PyIsMjIpCisgICAgICAJa2VlcGogY2FsbCBuZXRydyNFcnJvck1zZyhzOkVSUk9SLCJ1bmFibGUgdG8gcmVtb3ZlIGRpcmVjdG9yeTwiLnJtZmlsZS4iPiAtLSBpcyBpdCBlbXB0eT8iLDIyKQogICAgICAgZW5kaWYKICAgICAgZW5kaWYKICAgICBlbmRpZgpAQCAtNjg5MSw4ICs3MDY1LDggQEAKIAogICAiIGNsZWFyIG9mZiBhbnkgb2xkZXIgbm9uLWJhbm5lciBsaW5lcwogICAiIG5vdGUgdGhhdCB3Om5ldHJ3X2Jhbm5lcmNudCBpbmRleGVzIHRoZSBsaW5lIGFmdGVyIHRoZSBiYW5uZXIKLSIgIGNhbGwgRGVjaG8oJ2V4ZSBzaWxlbnQhIGtlZXBqdW1wcyAnLnc6bmV0cndfYmFubmVyY250LiIsJGQgIChjbGVhciBvZmYgb2xkIG5vbi1iYW5uZXIgbGluZXMpIikKLSAgZXhlICJzaWxlbnQhIGtlZXBqdW1wcyAiLnc6bmV0cndfYmFubmVyY250LiIsJGQiCisiICBjYWxsIERlY2hvKCdleGUgc2lsISBrZWVwanVtcHMgJy53Om5ldHJ3X2Jhbm5lcmNudC4iLCRkICAoY2xlYXIgb2ZmIG9sZCBub24tYmFubmVyIGxpbmVzKSIpCisgIGV4ZSAic2lsISBrZWVwanVtcHMgIi53Om5ldHJ3X2Jhbm5lcmNudC4iLCRkIgogCiAgICIuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLgogICBpZiB3Om5ldHJ3X21ldGhvZCA9PSAyIHx8IHc6bmV0cndfbWV0aG9kID09IDUKQEAgLTY5MDQsMTQgKzcwNzgsMTQgQEAKICAgICBrZWVwaiBwdXQgPWc6bmV0cndfZnRwZXh0cmFjbWQKICIgICAgY2FsbCBEZWNobygiZmlsdGVyIGlucHV0OiAiLmdldGxpbmUoJy4nKSkKICAgIGVuZGlmCi0gICBjYWxsIHNldGxpbmUobGluZSgiJCIpKzEsYTpsaXN0Y21kKQorICAga2VlcGogY2FsbCBzZXRsaW5lKGxpbmUoIiQiKSsxLGE6bGlzdGNtZCkKICIgICBleGUgImtlZXBqdW1wcyAiLnc6bmV0cndfYmFubmVyY250LicsJGcvXi4vY2FsbCBEZWNobygiZnRwIyIubGluZSgiLiIpLiI6ICIuZ2V0bGluZSgiLiIpKScKICAgIGlmIGV4aXN0cygiZzpuZXRyd19wb3J0IikgJiYgZzpuZXRyd19wb3J0ICE9ICIiCi0iICAgIGNhbGwgRGVjaG8oImV4ZSAiLnM6bmV0cndfc2lsZW50eGZlci53Om5ldHJ3X2Jhbm5lcmNudC4iLCQhIi5nOm5ldHJ3X2Z0cF9jbWQuIiAtaSAiLnNoZWxsZXNjYXBlKGc6bmV0cndfbWFjaGluZSwxKS4iICIuc2hlbGxlc2NhcGUoZzpuZXRyd19wb3J0LDEpKQotICAgIGV4ZSBzOm5ldHJ3X3NpbGVudHhmZXIuIiBrZWVwanVtcHMgIi53Om5ldHJ3X2Jhbm5lcmNudC4iLCQhIi5nOm5ldHJ3X2Z0cF9jbWQuIiAtaSAiLnNoZWxsZXNjYXBlKGc6bmV0cndfbWFjaGluZSwxKS4iICIuc2hlbGxlc2NhcGUoZzpuZXRyd19wb3J0LDEpCisiICAgIGNhbGwgRGVjaG8oImV4ZSAiLnM6bmV0cndfc2lsZW50eGZlci53Om5ldHJ3X2Jhbm5lcmNudC4iLCQhIi5zOm5ldHJ3X2Z0cF9jbWQuIiAtaSAiLnNoZWxsZXNjYXBlKGc6bmV0cndfbWFjaGluZSwxKS4iICIuc2hlbGxlc2NhcGUoZzpuZXRyd19wb3J0LDEpKQorICAgIGV4ZSBzOm5ldHJ3X3NpbGVudHhmZXIuIiBrZWVwanVtcHMgIi53Om5ldHJ3X2Jhbm5lcmNudC4iLCQhIi5zOm5ldHJ3X2Z0cF9jbWQuIiAtaSAiLnNoZWxsZXNjYXBlKGc6bmV0cndfbWFjaGluZSwxKS4iICIuc2hlbGxlc2NhcGUoZzpuZXRyd19wb3J0LDEpCiAgICBlbHNlCi0iICAgIGNhbGwgRGVjaG8oImV4ZSAiLnM6bmV0cndfc2lsZW50eGZlci53Om5ldHJ3X2Jhbm5lcmNudC4iLCQhIi5nOm5ldHJ3X2Z0cF9jbWQuIiAtaSAiLnNoZWxsZXNjYXBlKGc6bmV0cndfbWFjaGluZSwxKSkKLSAgICBleGUgczpuZXRyd19zaWxlbnR4ZmVyLiIga2VlcGp1bXBzICIudzpuZXRyd19iYW5uZXJjbnQuIiwkISIuZzpuZXRyd19mdHBfY21kLiIgLWkgIi5zaGVsbGVzY2FwZShnOm5ldHJ3X21hY2hpbmUsMSkKKyIgICAgY2FsbCBEZWNobygiZXhlICIuczpuZXRyd19zaWxlbnR4ZmVyLnc6bmV0cndfYmFubmVyY250LiIsJCEiLnM6bmV0cndfZnRwX2NtZC4iIC1pICIuc2hlbGxlc2NhcGUoZzpuZXRyd19tYWNoaW5lLDEpKQorICAgIGV4ZSBzOm5ldHJ3X3NpbGVudHhmZXIuIiBrZWVwanVtcHMgIi53Om5ldHJ3X2Jhbm5lcmNudC4iLCQhIi5zOm5ldHJ3X2Z0cF9jbWQuIiAtaSAiLnNoZWxsZXNjYXBlKGc6bmV0cndfbWFjaGluZSwxKQogICAgZW5kaWYKIAogICAgIi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uCkBAIC02OTQ1LDI4ICs3MTE5LDI4IEBACiAgICAgIiAtbiAgdW5peCA6IERPTidUIHVzZSA8Lm5ldHJjPiwgZXZlbiB0aG91Z2ggaXQgZXhpc3RzCiAgICAgIiAtbiAgd2luMzI6IHF1aXQgYmVpbmcgb2Jub3hpb3VzIGFib3V0IHBhc3N3b3JkCiAiICAgIGV4ZSB3Om5ldHJ3X2Jhbm5lcmNudC4nLCRnL14uL2NhbGwgRGVjaG8oImZ0cCMiLmxpbmUoIi4iKS4iOiAiLmdldGxpbmUoIi4iKSknCi0iICAgIGNhbGwgRGVjaG8oImV4ZSAiLnM6bmV0cndfc2lsZW50eGZlci53Om5ldHJ3X2Jhbm5lcmNudC4iLCQhIi5nOm5ldHJ3X2Z0cF9jbWQuIiAtaSAtbiIpCi0gICAgZXhlIHM6bmV0cndfc2lsZW50eGZlci53Om5ldHJ3X2Jhbm5lcmNudC4iLCQhIi5nOm5ldHJ3X2Z0cF9jbWQuIiAtaSAtbiIKKyIgICAgY2FsbCBEZWNobygiZXhlICIuczpuZXRyd19zaWxlbnR4ZmVyLnc6bmV0cndfYmFubmVyY250LiIsJCEiLnM6bmV0cndfZnRwX2NtZC4iIC1pIC1uIikKKyAgICBleGUgczpuZXRyd19zaWxlbnR4ZmVyLnc6bmV0cndfYmFubmVyY250LiIsJCEiLnM6bmV0cndfZnRwX2NtZC4iIC1pIC1uIgogCiAgICAiLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4KICAgZWxzZQotICAgY2FsbCBuZXRydyNFcnJvck1zZyhzOldBUk5JTkcsInVuYWJsZSB0byBjb21wbHkgd2l0aCB5b3VyIHJlcXVlc3Q8IiAuIGNob2ljZSAuICI+IiwyMykKKyAgIGtlZXBqIGNhbGwgbmV0cncjRXJyb3JNc2coczpXQVJOSU5HLCJ1bmFibGUgdG8gY29tcGx5IHdpdGggeW91ciByZXF1ZXN0PCIgLiBjaG9pY2UgLiAiPiIsMjMpCiAgIGVuZGlmCiAKICAgIiBjbGVhbnVwIGZvciBXaW5kb3dzCiAgIGlmIGhhcygid2luMzIiKSB8fCBoYXMoIndpbjk1IikgfHwgaGFzKCJ3aW42NCIpIHx8IGhhcygid2luMTYiKQogICAgc2lsISBrZWVwaiAlcy9cciQvL2UKLSAgIGNhbGwgaGlzdGRlbCgiLyIsLTEpCisgICBrZWVwaiBjYWxsIGhpc3RkZWwoIi8iLC0xKQogICBlbmRpZgogICBpZiBhOmxpc3RjbWQgPT0gImRpciIKICAgICIgaW5mZXIgZGlyZWN0b3J5L2xpbmsgYmFzZWQgb24gdGhlIGZpbGUgcGVybWlzc2lvbiBzdHJpbmcKICAgIHNpbCEga2VlcGogZy9kXCUoWy1yXVstd11bLXhdXClcezN9L2tlZXBqIHNAJEAvQAogICAgc2lsISBrZWVwaiBnL2xcJShbLXJdWy13XVsteF1cKVx7M30va2VlcGogcy8kL0AvCi0gICBjYWxsIGhpc3RkZWwoIi8iLC0xKQotICAgY2FsbCBoaXN0ZGVsKCIvIiwtMSkKKyAgIGtlZXBqIGNhbGwgaGlzdGRlbCgiLyIsLTEpCisgICBrZWVwaiBjYWxsIGhpc3RkZWwoIi8iLC0xKQogICAgaWYgdzpuZXRyd19saXN0c3R5bGUgPT0gczpUSElOTElTVCB8fCB3Om5ldHJ3X2xpc3RzdHlsZSA9PSBzOldJREVMSVNUIHx8IHc6bmV0cndfbGlzdHN0eWxlID09IHM6VFJFRUxJU1QKICAgICBleGUgInNpbCEga2VlcGogIi53Om5ldHJ3X2Jhbm5lcmNudC4nLCRzL15cJShcU1wrXHNcK1wpXHs4fS8vZScKLSAgICBjYWxsIGhpc3RkZWwoIi8iLC0xKQorICAgIGtlZXBqIGNhbGwgaGlzdGRlbCgiLyIsLTEpCiAgICBlbmRpZgogICBlbmRpZgogCkBAIC03MDE1LDcgKzcxODksNyBAQAogICAgIGVuZGlmCiAgICAKICAgICBpZiBleGlzdHMoInc6bmV0cndfbWV0aG9kIikgJiYgKHc6bmV0cndfbWV0aG9kID09IDIgfHwgdzpuZXRyd19tZXRob2QgPT0gMykKLSAgICAgY2FsbCBzOk5ldHJ3UmVtb3RlRnRwQ21kKGE6cGF0aCwicmVuYW1lICIub2xkbmFtZS4iICIubmV3bmFtZSkKKyAgICAga2VlcGogY2FsbCBzOk5ldHJ3UmVtb3RlRnRwQ21kKGE6cGF0aCwicmVuYW1lICIub2xkbmFtZS4iICIubmV3bmFtZSkKICAgICBlbHNlCiAgICAgIGxldCBvbGRuYW1lPSBzaGVsbGVzY2FwZShhOnBhdGgub2xkbmFtZSkKICAgICAgbGV0IG5ld25hbWU9IHNoZWxsZXNjYXBlKGE6cGF0aC5uZXduYW1lKQpAQCAtNzA1Myw4ICs3MjI3LDggQEAKICAgZW5kaWYKIAogICAiIHJlZnJlc2ggdGhlIGRpcmVjdG9yeQotICBjYWxsIHM6TmV0cndSZWZyZXNoKDAsczpOZXRyd0Jyb3dzZUNoZ0RpcigwLCcuLycpKQotICBjYWxsIG5ldHJ3I05ldHJ3UmVzdG9yZVBvc24oc3Zwb3MpCisgIGtlZXBqIGNhbGwgczpOZXRyd1JlZnJlc2goMCxzOk5ldHJ3QnJvd3NlQ2hnRGlyKDAsJy4vJykpCisgIGtlZXBqIGNhbGwgbmV0cncjTmV0cndSZXN0b3JlUG9zbihzdnBvcykKIAogIiAgY2FsbCBEcmV0KCJOZXRyd1JlbW90ZVJlbmFtZSIpCiBlbmRmdW4KQEAgLTcwNzQsMTUgKzcyNDgsMTYgQEAKICAgIiB3b3VsZCBoaXQgd2hlbiByZS1lbnRlcmluZyBuZXRydyB3aW5kb3dzLCBjcmVhdGluZyB1bmV4cGVjdGVkCiAgICIgcmVmcmVzaGVzIChhbmQgd291bGQgZG8gc28gaW4gdGhlIG1pZGRsZSBvZiBOZXRyd1NhdmVPcHRpb25zKCksIHRvbykKICIgIGNhbGwgRGVjaG8oIm5ldHJ3I0xvY2FsQnJvd3NlQ2hlY2s6IGlzZGlyPCIuYTpkaXJuYW1lLiI+PSIuaXNkaXJlY3RvcnkoYTpkaXJuYW1lKS4oKGV4aXN0cygiczp0cmVlZm9yY2VyZWRyYXciKT8gIiB0cmVlZm9yY2VyZWRyYXciIDogIiIpKSkKKyIgIGNhbGwgRHJlZGlyKCJMb2NhbEJyb3dzZUNoZWNrIiwibHMhIil8cmVkcmF3IXxzbGVlcCAzCiAgIGlmIGlzZGlyZWN0b3J5KGE6ZGlybmFtZSkKICIgICBjYWxsIERlY2hvKCIgZnQ8Ii4mZnQuIj4gYjpuZXRyd19jdXJkaXI8Ii4oZXhpc3RzKCJiOm5ldHJ3X2N1cmRpciIpPyBiOm5ldHJ3X2N1cmRpciA6ICIgZG9lc24ndCBleGlzdCIpLiI+IGRpcm5hbWU8Ii5hOmRpcm5hbWUuIj4iLiIgbGluZSgkKT0iLmxpbmUoIiQiKSkKICAgIGlmICZmdCAhPSAibmV0cnciIHx8IChleGlzdHMoImI6bmV0cndfY3VyZGlyIikgJiYgYjpuZXRyd19jdXJkaXIgIT0gYTpkaXJuYW1lKQotICAgIHNpbGVudCEgY2FsbCBzOk5ldHJ3QnJvd3NlKDEsYTpkaXJuYW1lKQorICAgIHNpbCEga2VlcGogY2FsbCBzOk5ldHJ3QnJvd3NlKDEsYTpkaXJuYW1lKQogICAgZWxzZWlmICZmdCA9PSAibmV0cnciICYmIGxpbmUoIiQiKSA9PSAxCi0gICAgc2lsZW50ISBjYWxsIHM6TmV0cndCcm93c2UoMSxhOmRpcm5hbWUpCisgICAgc2lsISBrZWVwaiBjYWxsIHM6TmV0cndCcm93c2UoMSxhOmRpcm5hbWUpCiAgICBlbHNlaWYgZXhpc3RzKCJzOnRyZWVmb3JjZXJlZHJhdyIpCiAgICAgdW5sZXQgczp0cmVlZm9yY2VyZWRyYXcKLSAgICBzaWxlbnQhIGNhbGwgczpOZXRyd0Jyb3dzZSgxLGE6ZGlybmFtZSkKKyAgICBzaWwhIGtlZXBqIGNhbGwgczpOZXRyd0Jyb3dzZSgxLGE6ZGlybmFtZSkKICAgIGVuZGlmCiAgIGVuZGlmCiAgICIgbm90IGEgZGlyZWN0b3J5LCBpZ25vcmUgaXQKQEAgLTcxMDEsNyArNzI3Niw3IEBACiAiICBpZiBleGlzdHMoImc6bmV0cndfc29ydF9ieSIpfGNhbGwgRGVjaG8oJ2c6bmV0cndfc29ydF9ieTwnLmc6bmV0cndfc29ydF9ieS4iPiIpfGVsc2V8Y2FsbCBEZWNobygiZzpuZXRyd19zb3J0X2J5IGRvZXNuJ3QgZXhpc3QiKXxlbmRpZgogCiAgICIgZ2V0IHRoZSBsaXN0IG9mIGZpbGVzIGNvbnRhaW5lZCBpbiB0aGUgY3VycmVudCBkaXJlY3RvcnkKLSAgbGV0IGRpcm5hbWUgICAgPSBlc2NhcGUoYjpuZXRyd19jdXJkaXIsZzpuZXRyd19nbG9iX2VzY2FwZSkKKyAgbGV0IGRpcm5hbWUgICAgPSBiOm5ldHJ3X2N1cmRpcgogICBsZXQgZGlybmFtZWxlbiA9IHM6U3RybGVuKGI6bmV0cndfY3VyZGlyKQogICBsZXQgZmlsZWxpc3QgICA9IGdsb2IoczpDb21wb3NlUGF0aChkaXJuYW1lLCIqIikpCiAiICBjYWxsIERlY2hvKCJnbG9iKGRpcm5hbWU8Ii5kaXJuYW1lLiIvKj4pPSIuZmlsZWxpc3QpCkBAIC03MzA5LDcgKzc0ODQsNyBAQAogICAgICIgcmVmcmVzaCBhbnkgbmV0cncgYnVmZmVyCiAiICAgIGNhbGwgRGVjaG8oInJlZnJlc2ggYnVmIyIuaWJ1Zi4nLT4gd2luIycuYnVmd2lubnIoaWJ1ZikpCiAgICAgZXhlIGJ1Zndpbm5yKGlidWYpLiJ3aW5jbWQgdyIKLSAgICBjYWxsIHM6TmV0cndSZWZyZXNoKDEsczpOZXRyd0Jyb3dzZUNoZ0RpcigxLCcuLycpKQorICAgIGtlZXBqIGNhbGwgczpOZXRyd1JlZnJlc2goMSxzOk5ldHJ3QnJvd3NlQ2hnRGlyKDEsJy4vJykpCiAgICBlbmRpZgogICAgbGV0IGlibD0gaWJsICsgMQogICBlbmRmb3IKQEAgLTczNzMsOCArNzU0OCw4IEBACiAgICIgcmVmcmVzaCB0aGUgZGlyZWN0b3J5CiAiICBjYWxsIERlY2hvKCJidWZuYW1lPCIuYnVmbmFtZSgiJSIpLiI+IikKICAgaWYgYnVmbmFtZSgiJSIpICE9ICJOZXRyd01lc3NhZ2UiCi0gICBjYWxsIHM6TmV0cndSZWZyZXNoKDEsczpOZXRyd0Jyb3dzZUNoZ0RpcigxLCcuLycpKQotICAgY2FsbCBuZXRydyNOZXRyd1Jlc3RvcmVQb3NuKHN2cG9zKQorICAga2VlcGogY2FsbCBzOk5ldHJ3UmVmcmVzaCgxLHM6TmV0cndCcm93c2VDaGdEaXIoMSwnLi8nKSkKKyAgIGtlZXBqIGNhbGwgbmV0cncjTmV0cndSZXN0b3JlUG9zbihzdnBvcykKICAgZW5kaWYKIAogIiAgY2FsbCBEcmV0KCJzOk5ldHJ3TG9jYWxSbSIpCkBAIC03NTMwLDggKzc3MDUsOCBAQAogCiAgICIgcmVmcmVzaCB0aGUgZGlyZWN0b3J5CiAiICBjYWxsIERlY2hvKCJyZWZyZXNoIHRoZSBkaXJlY3RvcnkgbGlzdGluZyIpCi0gIGNhbGwgczpOZXRyd1JlZnJlc2goMSxzOk5ldHJ3QnJvd3NlQ2hnRGlyKDEsJy4vJykpCi0gIGNhbGwgbmV0cncjTmV0cndSZXN0b3JlUG9zbihzdnBvcykKKyAga2VlcGogY2FsbCBzOk5ldHJ3UmVmcmVzaCgxLHM6TmV0cndCcm93c2VDaGdEaXIoMSwnLi8nKSkKKyAga2VlcGogY2FsbCBuZXRydyNOZXRyd1Jlc3RvcmVQb3NuKHN2cG9zKQogCiAiICBjYWxsIERyZXQoIk5ldHJ3TG9jYWxSZW5hbWUiKQogZW5kZnVuCkBAIC03NTk3LDYgKzc3NzIsMjQgQEAKIGVuZGZ1bgogCiAiIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIiBuZXRydyNGaWxlVXJsUmVhZDogaGFuZGxlcyByZWFkaW5nIGZpbGU6Ly8vKiBmaWxlcyB7e3syCitmdW4hIG5ldHJ3I0ZpbGVVcmxSZWFkKGZuYW1lKQorIiAgY2FsbCBEZnVuYygibmV0cncjRmlsZVVybFJlYWQoKSIpCisgIGxldCBmbmFtZTIzOTYgPSBuZXRydyNSRkMyMzk2KGE6Zm5hbWUpCisgIGxldCBmbmFtZTIzOTZlPSBmbmFtZWVzY2FwZShmbmFtZTIzOTYpCisgIGxldCBwbGFpbmZuYW1lPSBzdWJzdGl0dXRlKGZuYW1lMjM5NiwnZmlsZTovL1woLipcKScsJ1wxJywiIikKKyIgIGNhbGwgRGVjaG8oImZuYW1lMjM5NjwiLmZuYW1lMjM5Ni4iPiIpCisiICBjYWxsIERlY2hvKCJwbGFpbmZuYW1lPCIucGxhaW5mbmFtZS4iPiIpCisgIGV4ZSAic2lsIGRvYXUgQnVmUmVhZFByZSAiLmZuYW1lMjM5NmUKKyAgZXhlICdyICcucGxhaW5mbmFtZQorICBleGUgJ2ZpbGUhICcucGxhaW5mbmFtZQorICAxZAorICBzZXRsb2NhbCBub21vZAorIiAgY2FsbCBEcmV0KCJuZXRydyNGaWxlVXJsUmVhZCIpCisgIGV4ZSAic2lsIGRvYXUgQnVmUmVhZFBvc3QgIi5mbmFtZTIzOTZlCitlbmRmdW4KKworIiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICIgU3VwcG9ydCBGdW5jdGlvbnM6IHt7ezEKIAogIiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KQEAgLTc2MDQsNyArNzc5Nyw3IEBACiAiICAgMD1ub3RlICAgICA9IHM6Tk9URQogIiAgIDE9d2FybmluZyAgPSBzOldBUk5JTkcKICIgICAyPWVycm9yICAgID0gczpFUlJPUgotIiAgRGVjIDAzLCAyMDA5IDogbWF4IGVycm51bSBjdXJyZW50bHkgaXMgNzYKKyIgIERlYyAwMywgMjAwOSA6IG1heCBlcnJudW0gY3VycmVudGx5IGlzIDc3CiBmdW4hIG5ldHJ3I0Vycm9yTXNnKGxldmVsLG1zZyxlcnJudW0pCiAiICBjYWxsIERmdW5jKCJuZXRydyNFcnJvck1zZyhsZXZlbD0iLmE6bGV2ZWwuIiBtc2c8Ii5hOm1zZy4iPiBlcnJudW09Ii5hOmVycm51bS4iKSBnOm5ldHJ3X3VzZV9lcnJvcndpbmRvdz0iLmc6bmV0cndfdXNlX2Vycm9yd2luZG93KQogCkBAIC03NjMyLDE1ICs3ODI1LDE1IEBACiAgICAgZXhlIGJ1Zndpbm5yKCJOZXRyd01lc3NhZ2UiKS4id2luY21kIHciCiAiICAgIGNhbGwgRGVjaG8oInNldGxvY2FsIG1hIG5vcm8iKQogICAgIHNldGxvY2FsIG1hIG5vcm8KLSAgICBjYWxsIHNldGxpbmUobGluZSgiJCIpKzEsbGV2ZWwuYTptc2cpCisgICAga2VlcGogY2FsbCBzZXRsaW5lKGxpbmUoIiQiKSsxLGxldmVsLmE6bXNnKQogICAgIGtlZXBqICQKICAgIGVsc2UKICIgICAgY2FsbCBEZWNobygiY3JlYXRlIGEgTmV0cndNZXNzYWdlIGJ1ZmZlciB3aW5kb3ciKQogICAgIGJvIDFzcGxpdAogICAgIGNhbGwgczpOZXRyd0VuZXcoKQotICAgIGNhbGwgczpOZXRyd1NhZmVPcHRpb25zKCkKKyAgICBrZWVwaiBjYWxsIHM6TmV0cndTYWZlT3B0aW9ucygpCiAgICAgc2V0bG9jYWwgYnQ9bm9maWxlCi0gICAgZmlsZSBOZXRyd01lc3NhZ2UKKyAgICBrZWVwaiBmaWxlIE5ldHJ3TWVzc2FnZQogIiAgICBjYWxsIERlY2hvKCJzZXRsb2NhbCBtYSBub3JvIikKICAgICBzZXRsb2NhbCBtYSBub3JvCiAgICAgY2FsbCBzZXRsaW5lKGxpbmUoIiQiKSxsZXZlbC5hOm1zZykKQEAgLTc2ODksNyArNzg4Miw3IEBACiAKICAgIiByZXN0b3JlIHdpbmRvdwogICBpZiBleGlzdHMoInc6bmV0cndfd2lubnIiKQotIiAgIGNhbGwgRGVjaG8oInJlc3RvcmUgd2luZG93OiBleGUgc2lsZW50ISAiLnc6bmV0cndfd2lubnIuIndpbmNtZCB3IikKKyIgICBjYWxsIERlY2hvKCJyZXN0b3JlIHdpbmRvdzogZXhlIHNpbCEgIi53Om5ldHJ3X3dpbm5yLiJ3aW5jbWQgdyIpCiAgICBleGUgInNpbCEgIi53Om5ldHJ3X3dpbm5yLiJ3aW5jbWQgdyIKICAgZW5kaWYKICAgaWYgdjpzaGVsbF9lcnJvciA9PSAwCkBAIC03NzMxLDcgKzc5MjQsNyBAQAogICAiIHNldCB1cCBzdHJpbmcgaG9sZGluZyBwb3NpdGlvbiBwYXJhbWV0ZXJzCiAgIGxldCByZXQgICAgICAgICAgPSAibGV0IHc6bmV0cndfd2lubnI9Ii53Om5ldHJ3X3dpbm5yLiJ8bGV0IHc6bmV0cndfbGluZT0iLnc6bmV0cndfbGluZS4ifGxldCB3Om5ldHJ3X2NvbD0iLnc6bmV0cndfY29sLiJ8bGV0IHc6bmV0cndfaGxpbmU9Ii53Om5ldHJ3X2hsaW5lCiAKLSAgY2FsbCBuZXRydyNOZXRyd1Jlc3RvcmVQb3NuKCkKKyAga2VlcGogY2FsbCBuZXRydyNOZXRyd1Jlc3RvcmVQb3NuKCkKICIgIGNhbGwgRHJldCgibmV0cncjTmV0cndTYXZlUG9zbiA6IHdpbm5yPSIudzpuZXRyd193aW5uci4iIGxpbmU9Ii53Om5ldHJ3X2xpbmUuIiBjb2w9Ii53Om5ldHJ3X2NvbC4iIGhsaW5lPSIudzpuZXRyd19obGluZSkKICAgcmV0dXJuIHJldAogZW5kZnVuCkBAIC03ODM2LDcgKzgwMjksNyBAQAogICAgIiBzYW5pdHkgY2hlY2sgLS0gZG9lcyB0aGUgdGVtcG9yYXJ5IGZpbGUncyBkaXJlY3RvcnkgZXhpc3Q/CiAgICBpZiAhaXNkaXJlY3Rvcnkoc3Vic3RpdHV0ZSh0bXBmaWxlLCdbXi9dXCskJywnJywnZScpKQogIiAgICBjYWxsIERlY2hvKCJybz0iLiZsOnJvLiIgbWE9Ii4mbDptYS4iIG1vZD0iLiZsOm1vZC4iIHdyYXA9Ii4mbDp3cmFwKQotICAgIGNhbGwgbmV0cncjRXJyb3JNc2coczpFUlJPUiwieW91ciA8Ii5zdWJzdGl0dXRlKHRtcGZpbGUsJ1teL11cKyQnLCcnLCdlJykuIj4gZGlyZWN0b3J5IGlzIG1pc3NpbmchIiwyKQorICAgIGtlZXBqIGNhbGwgbmV0cncjRXJyb3JNc2coczpFUlJPUiwieW91ciA8Ii5zdWJzdGl0dXRlKHRtcGZpbGUsJ1teL11cKyQnLCcnLCdlJykuIj4gZGlyZWN0b3J5IGlzIG1pc3NpbmchIiwyKQogIiAgICBjYWxsIERyZXQoInM6R2V0VGVtcGZpbGUgZ2V0Y3dkPCIuZ2V0Y3dkKCkuIj4iKQogICAgIHJldHVybiAiIgogICAgZW5kaWYKQEAgLTc5MTgsNyArODExMSw3IEBACiAgICBpZiBibXNob3dmdW5jcyAhPSBbXQogICAgIGxldCBibXNob3dmdW5jID0gc3Vic3RpdHV0ZShibXNob3dmdW5jc1swXSwnXi4qOlwoY2FsbC4qQk1TaG93KClcKS4qJCcsJ1wxJywnJykKICAgICBpZiBibXNob3dmdW5jID1+ICdeY2FsbC4qQk1TaG93KCknCi0gICAgIGV4ZSAic2lsISAiLmJtc2hvd2Z1bmMKKyAgICAgZXhlICJzaWwhIGtlZXBqICIuYm1zaG93ZnVuYwogICAgIGVuZGlmCiAgICBlbmRpZgogICBlbmRpZgpAQCAtNzkyNiw0MyArODExOSw3MCBAQAogZW5kZnVuCiAKICIgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0iIHM6TmV0cndDdXJzb3JsaW5lOiB7e3syCi1mdW4hIHM6TmV0cndDdXJzb3JsaW5lKCkKKyIgczpOZXRyd0N1cnNvcjogcmVzcG9uc2libGUgZm9yIHNldHRpbmcgY3Vyc29ybGluZS9jdXJzb3Jjb2x1bW4gYmFzZWQgdXBvbiBnOm5ldHJ3X2N1cnNvciB7e3syCitmdW4hIHM6TmV0cndDdXJzb3IoKQogICBpZiAhZXhpc3RzKCJ3Om5ldHJ3X2xpc3RzdHlsZSIpCiAgICBsZXQgdzpuZXRyd19saXN0c3R5bGU9IGc6bmV0cndfbGlzdHN0eWxlCiAgIGVuZGlmCi0iICBjYWxsIERmdW5jKCJzOk5ldHJ3Q3Vyc29ybGluZSgpIGxpc3RzdHlsZT0iLnc6bmV0cndfbGlzdHN0eWxlLiIgZzpuZXRyd19jdXJzb3JsaW5lPSIuZzpuZXRyd19jdXJzb3JsaW5lLiIgczpuZXRyd191c2VyY3VjPSIuczpuZXRyd191c2VyY3VjLiIgczpuZXRyd191c2VyY3VsPSIuczpuZXRyd191c2VyY3VsKQotICAiCi0gIGlmIHc6bmV0cndfbGlzdHN0eWxlICE9IHM6V0lERUxJU1QKLSAgICIgdGhpbi1sb25nLXRyZWUgbGlzdGluZ3MKLSAgIGlmIGc6bmV0cndfY3Vyc29ybGluZSA9PSAyCisiICBjYWxsIERmdW5jKCJzOk5ldHJ3Q3Vyc29yKCkgbGlzdHN0eWxlPSIudzpuZXRyd19saXN0c3R5bGUuIiBnOm5ldHJ3X2N1cnNvcj0iLmc6bmV0cndfY3Vyc29yLiIgczpuZXRyd191c2VyY3VjPSIuczpuZXRyd191c2VyY3VjLiIgczpuZXRyd191c2VyY3VsPSIuczpuZXRyd191c2VyY3VsKQorCisgIGlmICZmdCAhPSAibmV0cnciCisgICAiIGlmIHRoZSBjdXJyZW50IHdpbmRvdyBpc24ndCBhIG5ldHJ3IGRpcmVjdG9yeSBsaXN0aW5nIHdpbmRvdywgdGhlbiB1c2UgdXNlciBjdXJzb3JsaW5lL2NvbHVtbgorICAgIiBzZXR0aW5ncy4gIEFmZmVjdHMgd2hlbiBuZXRydyBpcyB1c2VkIHRvIHJlYWQvd3JpdGUgYSBmaWxlIHVzaW5nIHNjcC9mdHAvZXRjLgorICAgbGV0ICZsOmN1cnNvcmxpbmUgICA9IHM6bmV0cndfdXNlcmN1bAorICAgbGV0ICZsOmN1cnNvcmNvbHVtbiA9IHM6bmV0cndfdXNlcmN1YworCisgIGVsc2VpZiBnOm5ldHJ3X2N1cnNvciA9PSA0CisgICAiIGFsbCBzdHlsZXM6IGN1cnNvcmxpbmUsIGN1cnNvcmNvbHVtbgorICAgc2V0bG9jYWwgY3Vyc29ybGluZQorICAgc2V0bG9jYWwgY3Vyc29yY29sdW1uCisKKyAgZWxzZWlmIGc6bmV0cndfY3Vyc29yID09IDMKKyAgICIgdGhpbi1sb25nLXRyZWU6IGN1cnNvcmxpbmUsIHVzZXIncyBjdXJzb3Jjb2x1bW4KKyAgICIgd2lkZSAgICAgICAgICA6IGN1cnNvcmxpbmUsIGN1cnNvcmNvbHVtbgorICAgaWYgdzpuZXRyd19saXN0c3R5bGUgPT0gczpXSURFTElTVAogICAgIHNldGxvY2FsIGN1cnNvcmxpbmUKLSAgICBsZXQgJmw6Y3Vyc29yY29sdW1uPSBzOm5ldHJ3X3VzZXJjdWMKLSIgICAgY2FsbCBEZWNobygic2V0bG9jYWwgY3Vyc29ybGluZSAgKGN1cnNvcmNvbHVtbiBpcyAiLigoczpuZXRyd191c2VyY3VjKT8gIm9uIiA6ICJvZmYiKS4iKSIpCi0gICBlbHNlaWYgZzpuZXRyd19jdXJzb3JsaW5lCisgICAgc2V0bG9jYWwgY3Vyc29yY29sdW1uCisgICBlbHNlCiAgICAgc2V0bG9jYWwgY3Vyc29ybGluZQotIiAgICBjYWxsIERlY2hvKCJzZXRsb2NhbCBjdXJzb3JsaW5lIikKKyAgICBsZXQgJmw6Y3Vyc29yY29sdW1uICAgPSBzOm5ldHJ3X3VzZXJjdWMKKyAgIGVuZGlmCisKKyAgZWxzZWlmIGc6bmV0cndfY3Vyc29yID09IDIKKyAgICIgdGhpbi1sb25nLXRyZWU6IGN1cnNvcmxpbmUsIHVzZXIncyBjdXJzb3Jjb2x1bW4KKyAgICIgd2lkZSAgICAgICAgICA6IGN1cnNvcmxpbmUsIHVzZXIncyBjdXJzb3Jjb2x1bW4KKyAgIGxldCAmbDpjdXJzb3Jjb2x1bW4gPSBzOm5ldHJ3X3VzZXJjdWMKKyAgIHNldGxvY2FsIGN1cnNvcmxpbmUKKworICBlbHNlaWYgZzpuZXRyd19jdXJzb3IgPT0gMQorICAgIiB0aGluLWxvbmctdHJlZTogdXNlcidzIGN1cnNvcmxpbmUsIHVzZXIncyBjdXJzb3Jjb2x1bW4KKyAgICIgd2lkZSAgICAgICAgICA6IGN1cnNvcmxpbmUsICAgICAgICB1c2VyJ3MgY3Vyc29yY29sdW1uCisgICBsZXQgJmw6Y3Vyc29yY29sdW1uID0gczpuZXRyd191c2VyY3VjCisgICBpZiB3Om5ldHJ3X2xpc3RzdHlsZSA9PSBzOldJREVMSVNUCisgICAgc2V0bG9jYWwgY3Vyc29ybGluZQorICAgZWxzZQorICAgIGxldCAmbDpjdXJzb3JsaW5lICAgPSBzOm5ldHJ3X3VzZXJjdWwKICAgIGVuZGlmCiAKICAgZWxzZQotICAgIiB3aWRlIGxpc3RpbmdzCi0gICBpZiBnOm5ldHJ3X2N1cnNvcmxpbmUgPT0gMgotICAgIHNldGxvY2FsIGN1cnNvcmxpbmUgY3Vyc29yY29sdW1uCi0iICAgIGNhbGwgRGVjaG8oInNldGxvY2FsIGN1cnNvcmxpbmUgY3Vyc29yY29sdW1uIikKLSAgIGVsc2VpZiBnOm5ldHJ3X2N1cnNvcmxpbmUKLSAgICBsZXQgJmw6Y3Vyc29ybGluZT0gczpuZXRyd191c2VyY3VsCi0iICAgIGNhbGwgRGVjaG8oImN1cnNvcmxpbmUgaXMgIi4oKHM6bmV0cndfdXNlcmN1bCk/ICJvbiIgOiAib2ZmIikuIikiKQotICAgZW5kaWYKKyAgICIgYWxsIHN0eWxlczogdXNlcidzIGN1cnNvcmxpbmUsIHVzZXIncyBjdXJzb3Jjb2x1bW4KKyAgIGxldCAmbDpjdXJzb3JsaW5lICAgPSBzOm5ldHJ3X3VzZXJjdWwKKyAgIGxldCAmbDpjdXJzb3Jjb2x1bW4gPSBzOm5ldHJ3X3VzZXJjdWMKICAgZW5kaWYKLSIgIGNhbGwgRHJldCgiczpOZXRyd0N1cnNvcmxpbmUgOiBsOmN1cnNvcmxpbmU9Ii4mbDpjdXJzb3JsaW5lLiIgbDpjdXJzb3Jjb2x1bW49Ii4mbDpjdXJzb3Jjb2x1bW4pCisKKyIgIGNhbGwgRHJldCgiczpOZXRyd0N1cnNvciA6IGw6Y3Vyc29ybGluZT0iLiZsOmN1cnNvcmxpbmUuIiBsOmN1cnNvcmNvbHVtbj0iLiZsOmN1cnNvcmNvbHVtbikKIGVuZGZ1bgogCiAiIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogIiBzOlJlc3RvcmVDdXJzb3JsaW5lOiByZXN0b3JlcyBjdXJzb3JsaW5lL2N1cnNvcmNvbHVtbiB0byBvcmlnaW5hbCB1c2VyIHNldHRpbmdzIHt7ezIKIGZ1biEgczpSZXN0b3JlQ3Vyc29ybGluZSgpCiAiICBjYWxsIERmdW5jKCJzOlJlc3RvcmVDdXJzb3JsaW5lKCkgY3VycmVudGx5LCBjdWw9Ii4mbDpjdXJzb3JsaW5lLiIgY3VjPSIuJmw6Y3Vyc29yY29sdW1uLiIgd2luIyIud2lubnIoKS4iIGJ1ZiMiLmJ1Zm5yKCIlIikpCi0gIGxldCAmbDpjdXJzb3JsaW5lICAgPSBzOm5ldHJ3X3VzZXJjdWwKLSAgbGV0ICZsOmN1cnNvcmNvbHVtbiA9IHM6bmV0cndfdXNlcmN1YworICBpZiBleGlzdHMoInM6bmV0cndfdXNlcmN1bCIpCisgICBsZXQgJmw6Y3Vyc29ybGluZSAgID0gczpuZXRyd191c2VyY3VsCisgIGVuZGlmCisgIGlmIGV4aXN0cygiczpuZXRyd191c2VyY3VjIikKKyAgIGxldCAmbDpjdXJzb3Jjb2x1bW4gPSBzOm5ldHJ3X3VzZXJjdWMKKyAgZW5kaWYKICIgIGNhbGwgRHJldCgiczpSZXN0b3JlQ3Vyc29ybGluZSA6IHJlc3RvcmVkIGN1bD0iLiZsOmN1cnNvcmxpbmUuIiBjdWM9Ii4mbDpjdXJzb3Jjb2x1bW4pCiBlbmRmdW4KIApAQCAtNzk5MCw3ICs4MjEwLDcgQEAKICAgIGxldCByZXN1bHQ9IGRlbGV0ZShwYXRoKQogICBlbmRpZgogICBpZiByZXN1bHQgPCAwCi0gICBjYWxsIG5ldHJ3I0Vycm9yTXNnKHM6V0FSTklORywiZGVsZXRlKCIucGF0aC4iKSBmYWlsZWQhIiw3MSkKKyAgIGtlZXBqIGNhbGwgbmV0cncjRXJyb3JNc2coczpXQVJOSU5HLCJkZWxldGUoIi5wYXRoLiIpIGZhaWxlZCEiLDcxKQogICBlbmRpZgogCiAiICBjYWxsIERyZXQoInM6TmV0cndEZWxldGUgIi5yZXN1bHQpCkBAIC04MDIyLDEzICs4MjQyLDE3IEBACiAgIGlmIGV4aXN0cygiYjpuZXRyd19vcHRpb24iKSAgICAgICAgIHxsZXQgbmV0cndfb3B0aW9uICAgICAgICAgID0gYjpuZXRyd19vcHRpb24gICAgICAgICB8ZW5kaWYKICAgaWYgZXhpc3RzKCJiOm5ldHJ3X3BydmRpciIpICAgICAgICAgfGxldCBuZXRyd19wcnZkaXIgICAgICAgICAgPSBiOm5ldHJ3X3BydmRpciAgICAgICAgIHxlbmRpZgogCi0gIGNhbGwgczpOZXRyd09wdGlvblJlc3RvcmUoInc6IikKKyAga2VlcGogY2FsbCBzOk5ldHJ3T3B0aW9uUmVzdG9yZSgidzoiKQogIiAgY2FsbCBEZWNobygiZ2VuZXJhdGUgYSBidWZmZXIgd2l0aCBrZWVwanVtcHMga2VlcGFsdCBlbmV3ISIpCiAgIGxldCBuZXRyd19rZWVwZGlmZj0gJmw6ZGlmZgorICAiIENPTUJBSzogQmVuemluZ2VyOiB1c2luZyB0cmVlIG1vZGUsIHZpbSAtbyBGb28vIGZpbGUgc2hvd3MgRm9vLyBGb28vIGluc3RlYWQuICBQbGFjZSByZXR1cm4gaGVyZSwgcHJvYmxlbSBnb2VzIGF3YXkgKGJlZXBzIHJlc3VsdCwgYnV0IHdobyBrbm93cykKKyIgIGNhbGwgRHJlZGlyKCJCZW56aW5nZXIgMToiLCJscyEiKQogICBrZWVwaiBrZWVwYWx0IGVuZXchCisiICBjYWxsIERyZWRpcigiQmVuemluZ2VyIDI6IiwibHMhIikKKyAgIiBDT01CQUs6IEJlbnppbmdlcjogdXNpbmcgdHJlZSBtb2RlLCB2aW0gLW8gRm9vLyBmaWxlIHNob3dzIEZvby8gRm9vLyBpbnN0ZWFkLiAgUGxhY2UgcmV0dXJuIGhlcmUsIHByb2JsZW0gcmVtYWlucy4KICAgbGV0ICZsOmRpZmY9IG5ldHJ3X2tlZXBkaWZmCiAiICBjYWxsIERlY2hvKCJidWZucigkKT0iLmJ1Zm5yKCIkIikpCi0gIGNhbGwgczpOZXRyd09wdGlvblNhdmUoInc6IikKKyAga2VlcGogY2FsbCBzOk5ldHJ3T3B0aW9uU2F2ZSgidzoiKQogCiAgICIgY29weSBmdW5jdGlvbi1sb2NhbC12YXJpYWJsZXMgdG8gYnVmZmVyIHZhcmlhYmxlIGVxdWl2YWxlbnRzCiAiICBjYWxsIERlY2hvKCJjb3B5IGZ1bmN0aW9uLWxvY2FsIHZhcmlhYmxlcyBiYWNrIHRvIGJ1ZmZlciBuZXRydyB2YXJpYWJsZXMiKQpAQCAtODA1NSw4ICs4Mjc5LDggQEAKICAgICBpZiBleGlzdHMoInc6bmV0cndfbGlzdHN0eWxlIikgJiYgdzpuZXRyd19saXN0c3R5bGUgPT0gczpUUkVFTElTVAogICAgICBmaWxlIE5ldHJ3VHJlZUxpc3RpbmcKICAgICAgc2V0IGJ0PW5vd3JpdGUgbm9zd2YKLSAgICAgbm5vIDxzaWxlbnQ+IDxidWZmZXI+IFsJOnNpbGVudCBjYWxsIDxTSUQ+VHJlZUxpc3RNb3ZlKCdbJyk8Y3I+Ci0gICAgIG5ubyA8c2lsZW50PiA8YnVmZmVyPiBdCTpzaWxlbnQgY2FsbCA8U0lEPlRyZWVMaXN0TW92ZSgnXScpPGNyPgorICAgICBubm8gPHNpbGVudD4gPGJ1ZmZlcj4gWwk6c2lsIGNhbGwgPFNJRD5UcmVlTGlzdE1vdmUoJ1snKTxjcj4KKyAgICAgbm5vIDxzaWxlbnQ+IDxidWZmZXI+IF0JOnNpbCBjYWxsIDxTSUQ+VHJlZUxpc3RNb3ZlKCddJyk8Y3I+CiAgICAgZWxzZQogICAgICBleGUgInNpbCEga2VlcGFsdCBmaWxlICIuZm5hbWVlc2NhcGUoYjpuZXRyd19jdXJkaXIpCiAgICAgZW5kaWYKQEAgLTgwODAsNyArODMwNCw3IEBACiAiICBjaGFuZ2VkIHNvcnRpbmcsIGV0Yy4gIEFsc28gc2VlIHM6TmV0cndTYXZlV29yZFBvc24oKS4KIGZ1biEgczpOZXRyd1Jlc3RvcmVXb3JkUG9zbigpCiAiICBjYWxsIERmdW5jKCJOZXRyd1Jlc3RvcmVXb3JkUG9zbigpIikKLSAgc2lsZW50ISBjYWxsIHNlYXJjaChzOm5ldHJ3X3NhdmV3b3JkLCd3JykKKyAgc2lsISBjYWxsIHNlYXJjaChzOm5ldHJ3X3NhdmV3b3JkLCd3JykKICIgIGNhbGwgRHJldCgiTmV0cndSZXN0b3JlV29yZFBvc24iKQogZW5kZnVuCiAKQEAgLTgxMzEsOSArODM1NSw5IEBACiBmdW4hIHM6UmVtb3RlU3lzdGVtKGNtZCkKICIgIGNhbGwgRGZ1bmMoInM6UmVtb3RlU3lzdGVtKGNtZDwiLmE6Y21kLiI+KSIpCiAgIGlmICFleGVjdXRhYmxlKGc6bmV0cndfc3NoX2NtZCkKLSAgIGNhbGwgbmV0cncjRXJyb3JNc2coczpFUlJPUiwiZzpuZXRyd19zc2hfY21kPCIuZzpuZXRyd19zc2hfY21kLiI+IGlzIG5vdCBleGVjdXRhYmxlISIsNTIpCisgICBrZWVwaiBjYWxsIG5ldHJ3I0Vycm9yTXNnKHM6RVJST1IsImc6bmV0cndfc3NoX2NtZDwiLmc6bmV0cndfc3NoX2NtZC4iPiBpcyBub3QgZXhlY3V0YWJsZSEiLDUyKQogICBlbHNlaWYgIWV4aXN0cygiYjpuZXRyd19jdXJkaXIiKQotICAgY2FsbCBuZXRydyNFcnJvck1zZyhzOkVSUk9SLCJmb3Igc29tZSByZWFzb24gYjpuZXRyd19jdXJkaXIgZG9lc24ndCBleGlzdCEiLDUzKQorICAga2VlcGogY2FsbCBuZXRydyNFcnJvck1zZyhzOkVSUk9SLCJmb3Igc29tZSByZWFzb24gYjpuZXRyd19jdXJkaXIgZG9lc24ndCBleGlzdCEiLDUzKQogICBlbHNlCiAgICBsZXQgY21kICAgICAgPSBzOk1ha2VTc2hDbWQoZzpuZXRyd19zc2hfY21kLiIgVVNFUE9SVCBIT1NUTkFNRSIpCiAgICBsZXQgcmVtb3RlZGlyPSBzdWJzdGl0dXRlKGI6bmV0cndfY3VyZGlyLCdeLiovL1teL11cKy9cKC4qXCkkJywnXDEnLCcnKQpAQCAtODE4MywxNCArODQwNywxNCBAQAogIgogIiAgICAgICAgICAgICBzOm5iY2RfY3VycG9zX3tidWZucignJScpfSBpcyBzZXQgdXAgYnkgczpOZXRyd0Jyb3dzZUNoZ0RpcigpCiBmdW4hIHM6TmV0cndSZXhwbG9yZShpc2xvY2FsLGRpcm5hbWUpCi0iICBjYWxsIERmdW5jKCJzOk5ldHJ3UmV4cGxvcmUoaXNsb2NhbD0iLmE6aXNsb2NhbC4iIGRpcm5hbWU8Ii5hOmRpcm5hbWUuIj4pIikKLSAgaWYgYTppc2xvY2FsCi0gICBjYWxsIG5ldHJ3I0xvY2FsQnJvd3NlQ2hlY2soYTpkaXJuYW1lKQorIiAgY2FsbCBEZnVuYygiczpOZXRyd1JleHBsb3JlKCkgdzpuZXRyd19yZXhsb2NhbD0iLnc6bmV0cndfcmV4bG9jYWwuIiB3Om5ldHJ3X3JleGRpcjwiLnc6bmV0cndfcmV4ZGlyLiI+IikKKyAgaWYgdzpuZXRyd19yZXhsb2NhbAorICAga2VlcGogY2FsbCBuZXRydyNMb2NhbEJyb3dzZUNoZWNrKHc6bmV0cndfcmV4ZGlyKQogICBlbHNlCi0gICBjYWxsIHM6TmV0cndCcm93c2UoMCxhOmRpcm5hbWUpCisgICBrZWVwaiBjYWxsIHM6TmV0cndCcm93c2UoMCx3Om5ldHJ3X3JleGRpcikKICAgZW5kaWYKICAgaWYgZXhpc3RzKCJzOm5iY2RfY3VycG9zX3tidWZucignJScpfSIpCi0gICBjYWxsIG5ldHJ3I05ldHJ3UmVzdG9yZVBvc24oczpuYmNkX2N1cnBvc197YnVmbnIoJyUnKX0pCisgICBrZWVwaiBjYWxsIG5ldHJ3I05ldHJ3UmVzdG9yZVBvc24oczpuYmNkX2N1cnBvc197YnVmbnIoJyUnKX0pCiAgICB1bmxldCBzOm5iY2RfY3VycG9zX3tidWZucignJScpfQogICBlbmRpZgogICBpZiBleGlzdHMoInM6ZXhwbG9yZV9tYXRjaCIpCkBAIC04MjY1LDI2ICs4NDg5LDggQEAKICIgczpTZXRSZXhEaXI6IHNldCBkaXJlY3RvcnkgZm9yIDpSZXhwbG9yZSB7e3syCiBmdW4hIHM6U2V0UmV4RGlyKGlzbG9jYWwsZGlybmFtZSkKICIgIGNhbGwgRGZ1bmMoInM6U2V0UmV4RGlyKGlzbG9jYWw9Ii5hOmlzbG9jYWwuIiBkaXJuYW1lPCIuYTpkaXJuYW1lLiI+KSIpCi0gICIgc2V0IHVwIFJleCBhbmQgbGVmdG1vdXNlLWRvdWJsZS1jbGljawotICBpZiBhOmlzbG9jYWwKLSAgIGV4ZSAnY29tISBSZXhwbG9yZSBjYWxsIHM6TmV0cndSZXhwbG9yZSgxLCInLmVzY2FwZShhOmRpcm5hbWUsJyJcJykuJyIpJwotICAgaWYgZzpuZXRyd19yZXRtYXAKLSAgICBpZiAhaGFzbWFwdG8oIjxQbHVnPk5ldHJ3UmV0dXJuIikgJiYgbWFwYXJnKCI8Mi1sZWZ0bW91c2U+IiwibiIpID09ICIiCi0gICAgIG5tYXAgPHVuaXF1ZT4gPHNpbGVudD4gPDItbGVmdG1vdXNlPgk8UGx1Zz5OZXRyd1JldHVybgotICAgIGVuZGlmCi0gICAgbGV0IGRpciA9IGVzY2FwZShhOmRpcm5hbWUsIHM6bmV0cndfbWFwX2VzY2FwZSkKLSAgICBleGUgJ25ub3JlbWFwIDxzaWxlbnQ+IDxQbHVnPk5ldHJ3UmV0dXJuIDpjYWxsIDxTSUQ+TmV0cndSZXhwbG9yZSgxLCInLmRpci4nIik8Y3I+JwotICAgZW5kaWYKLSAgZWxzZQotICAgZXhlICdjb20hIFJleHBsb3JlIGNhbGwgczpOZXRyd1JleHBsb3JlKDAsIicuZXNjYXBlKGE6ZGlybmFtZSwnIlwnKS4nIiknCi0gICBpZiBnOm5ldHJ3X3JldG1hcAotICAgIGlmICFoYXNtYXB0bygiPFBsdWc+TmV0cndSZXR1cm4iKSAmJiBtYXBhcmcoIjwyLWxlZnRtb3VzZT4iLCJuIikgPT0gIiIKLSAgICAgbm1hcCA8dW5pcXVlPiA8c2lsZW50PiA8Mi1sZWZ0bW91c2U+CTxQbHVnPk5ldHJ3UmV0dXJuCi0gICAgZW5kaWYKLSAgICBsZXQgZGlyID0gZXNjYXBlKGE6ZGlybmFtZSwgczpuZXRyd19tYXBfZXNjYXBlKQotICAgIGV4ZSAnbm5vcmVtYXAgPHNpbGVudD4gPFBsdWc+TmV0cndSZXR1cm4gOmNhbGwgPFNJRD5OZXRyd1JleHBsb3JlKDAsIicuZGlyLiciKTxjcj4nCi0gICBlbmRpZgotICBlbmRpZgorICBsZXQgdzpuZXRyd19yZXhkaXIgICA9IGE6ZGlybmFtZQorICBsZXQgdzpuZXRyd19yZXhsb2NhbCA9IGE6aXNsb2NhbAogIiAgY2FsbCBEcmV0KCJzOlNldFJleERpciIpCiBlbmRmdW4KIApAQCAtODM5MCwxMiArODU5NiwxMiBAQAogIiAgICAgICAgICAgICAgICAgICAgICBCdWZmZXJzLlJlZnJlc2g7IGhlbmNlLCBzOk5ldHJ3Qk1TaG93KCkgdXRpbGl6ZXMgYSAiY2hlYXQiIHRvIGNhbGwgdGhhdCBmdW5jdGlvbiBhbnl3YXkuCiBmdW4hIHM6VXBkYXRlQnVmZmVyc01lbnUoKQogIiAgY2FsbCBEZnVuYygiczpVcGRhdGVCdWZmZXJzTWVudSgpIikKLSAgaWYgaGFzKCJndWkiKSAmJiBoYXMoIm1lbnUiKSAmJiBoYXMoImd1aV9ydW5uaW5nIikgJiYgJmdvID1+ICdtJyAmJiBnOm5ldHJ3X21lbnUKKyAgaWYgaGFzKCJndWkiKSAmJiBoYXMoIm1lbnUiKSAmJiBoYXMoImd1aV9ydW5uaW5nIikgJiYgJmdvID1+IyAnbScgJiYgZzpuZXRyd19tZW51CiAgICB0cnkKLSAgICBzaWxlbnQgZW1lbnUgQnVmZmVycy5SZWZyZXNoXCBtZW51CisgICAgc2lsIGVtZW51IEJ1ZmZlcnMuUmVmcmVzaFwgbWVudQogICAgY2F0Y2ggL15WaW1cJSgoXGFcKylcKVw9OkUvCiAgICAgbGV0IHY6ZXJybXNnPSAiIgotICAgIHNpbGVudCBjYWxsIHM6TmV0cndCTVNob3coKQorICAgIHNpbCBrZWVwaiBjYWxsIHM6TmV0cndCTVNob3coKQogICAgZW5kdHJ5CiAgIGVuZGlmCiAiICBjYWxsIERyZXQoInM6VXBkYXRlQnVmZmVyc01lbnUiKQpAQCAtODQwMyw3ICs4NjA5LDcgQEAKIAogIiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICIgczpVc2VCdWZXaW5WYXJzOiAodXNlZCBieSBOZXRyd0Jyb3dzZSgpIGFuZCBMb2NhbEJyb3dzZUNoZWNrKCkge3t7MgotIiAgICAgICAgICAgICAgTWF0Y2hpbmcgZnVuY3Rpb24gdG8gQnVmZmVyV2luVmFycygpCisiICAgICAgICAgICAgICBNYXRjaGluZyBmdW5jdGlvbiB0byBzOlNldEJ1ZldpblZhcnMoKQogZnVuISBzOlVzZUJ1ZldpblZhcnMoKQogIiAgY2FsbCBEZnVuYygiczpVc2VCdWZXaW5WYXJzKCkiKQogICBpZiBleGlzdHMoImI6bmV0cndfbGlzdHN0eWxlIikgICAgICAgJiYgIWV4aXN0cygidzpuZXRyd19saXN0c3R5bGUiKSAgICAgIHxsZXQgdzpuZXRyd19saXN0c3R5bGUgICAgICAgPSBiOm5ldHJ3X2xpc3RzdHlsZSAgICAgIHxlbmRpZgpkaWZmIC0tZ2l0IGEvcnVudGltZS9jb21waWxlci9nOTUudmltIGIvcnVudGltZS9jb21waWxlci9nOTUudmltCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFmOGYwNWMKLS0tIC9kZXYvbnVsbAorKysgYi9ydW50aW1lL2NvbXBpbGVyL2c5NS52aW0KQEAgLTAsMCArMSwyMyBAQAorIiBDb21waWxlcjogRzk1CisiIE1haW50YWluZXI6IEggWHUgPHh1aGRldkBnbWFpbC5jb20+CisiIFZlcnNpb246IDAuMS4zCisiIExhc3QgQ2hhbmdlOiAyMDExIEFwciAwMQorIiBIb21lcGFnZTogaHR0cDovL3d3dy52aW0ub3JnL3NjcmlwdHMvc2NyaXB0LnBocD9zY3JpcHRfaWQ9MzQ5MgorIiAgICAgICAgICAgaHR0cHM6Ly9iaXRidWNrZXQub3JnL3h1aGRldi9jb21waWxlci1nOTUudmltCisiIExpY2Vuc2U6IFNhbWUgYXMgVmltCisKK2lmIGV4aXN0cygnY3VycmVudF9jb21waWxlcicpCisgICAgZmluaXNoCitlbmRpZgorbGV0IGN1cnJlbnRfY29tcGlsZXIgPSAnZzk1JworCitpZiBleGlzdHMoIjpDb21waWxlclNldCIpICE9IDIJCSIgb2xkZXIgVmltIGFsd2F5cyB1c2VkIDpzZXRsb2NhbAorICBjb21tYW5kIC1uYXJncz0qIENvbXBpbGVyU2V0IHNldGxvY2FsIDxhcmdzPgorZW5kaWYKKworQ29tcGlsZXJTZXQgZXJyb3Jmb3JtYXQ9CisgICAgICAgICAgICBcJUFJblwgZmlsZVwgJWY6JWwsCisgICAgICAgICAgICBcJS1DJXAxLAorICAgICAgICAgICAgXCUtWiV0cnJvcjpcICVtLAorICAgICAgICAgICAgXCUtWiV0YXJuaW5nXCAoJW4pOlwgJW0sCisgICAgICAgICAgICBcJS1DJS4lIwpkaWZmIC0tZ2l0IGEvcnVudGltZS9jb21waWxlci9nZm9ydHJhbi52aW0gYi9ydW50aW1lL2NvbXBpbGVyL2dmb3J0cmFuLnZpbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44OTgwMjZlCi0tLSAvZGV2L251bGwKKysrIGIvcnVudGltZS9jb21waWxlci9nZm9ydHJhbi52aW0KQEAgLTAsMCArMSwyMiBAQAorIiBDb21waWxlcjogR05VIEZvcnRyYW4gQ29tcGlsZXIKKyIgTWFpbnRhaW5lcjogSCBYdSA8eHVoZGV2QGdtYWlsLmNvbT4KKyIgVmVyc2lvbjogMC4xLjMKKyIgTGFzdCBDaGFuZ2U6IDE5IE1hcmNoIDIwMTEKKyIgSG9tZXBhZ2U6IGh0dHA6Ly93d3cudmltLm9yZy9zY3JpcHRzL3NjcmlwdC5waHA/c2NyaXB0X2lkPTM0OTYKKyIgICAgICAgICAgIGh0dHBzOi8vYml0YnVja2V0Lm9yZy94dWhkZXYvY29tcGlsZXItZ2ZvcnRyYW4udmltCisiIExpY2Vuc2U6IFNhbWUgYXMgVmltCisKK2lmIGV4aXN0cygnY3VycmVudF9jb21waWxlcicpCisgICAgZmluaXNoCitlbmRpZgorbGV0IGN1cnJlbnRfY29tcGlsZXIgPSAnZ2ZvcnRyYW4nCisKK2lmIGV4aXN0cygiOkNvbXBpbGVyU2V0IikgIT0gMgkJIiBvbGRlciBWaW0gYWx3YXlzIHVzZWQgOnNldGxvY2FsCisgIGNvbW1hbmQgLW5hcmdzPSogQ29tcGlsZXJTZXQgc2V0bG9jYWwgPGFyZ3M+CitlbmRpZgorCitDb21waWxlclNldCBlcnJvcmZvcm1hdD0KKyAgICAgICAgICAgIFwlQSVmOiVsLiVjOiwKKyAgICAgICAgICAgIFwlLVoldHJyb3I6XCAlbSwKKyAgICAgICAgICAgIFwlLVoldGFybmluZzpcICVtLAorICAgICAgICAgICAgXCUtQyUuJSMKZGlmZiAtLWdpdCBhL3J1bnRpbWUvY29tcGlsZXIvaWZvcnQudmltIGIvcnVudGltZS9jb21waWxlci9pZm9ydC52aW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDQ3NjNmOQotLS0gL2Rldi9udWxsCisrKyBiL3J1bnRpbWUvY29tcGlsZXIvaWZvcnQudmltCkBAIC0wLDAgKzEsMjIgQEAKKyIgQ29tcGlsZXI6IEludGVsIEZvcnRyYW4gQ29tcGlsZXIKKyIgTWFpbnRhaW5lcjogSCBYdSA8eHVoZGV2QGdtYWlsLmNvbT4KKyIgVmVyc2lvbjogMC4xLjEKKyIgTGFzdCBDaGFuZ2U6IDE5IE1hcmNoIDIwMTEKKyIgSG9tZXBhZ2U6IGh0dHA6Ly93d3cudmltLm9yZy9zY3JpcHRzL3NjcmlwdC5waHA/c2NyaXB0X2lkPTM0OTcKKyIgICAgICAgICAgIGh0dHBzOi8vYml0YnVja2V0Lm9yZy94dWhkZXYvY29tcGlsZXItaWZvcnQudmltCisiIExpY2Vuc2U6IFNhbWUgYXMgVmltCisKK2lmIGV4aXN0cygnY3VycmVudF9jb21waWxlcicpCisgICAgZmluaXNoCitlbmRpZgorbGV0IGN1cnJlbnRfY29tcGlsZXIgPSAnaWZvcnQnCisKK2lmIGV4aXN0cygiOkNvbXBpbGVyU2V0IikgIT0gMgkJIiBvbGRlciBWaW0gYWx3YXlzIHVzZWQgOnNldGxvY2FsCisgIGNvbW1hbmQgLW5hcmdzPSogQ29tcGlsZXJTZXQgc2V0bG9jYWwgPGFyZ3M+CitlbmRpZgorCitDb21waWxlclNldCBlcnJvcmZvcm1hdD0KKyAgICAgICAgICAgIFwlQSVmKCVsKTpcICV0cnJvclwgXCMlbjpcICVtLAorICAgICAgICAgICAgXCVBJWYoJWwpOlwgJXRhcm5pbmdcIFwjJW46XCAlbSwKKyAgICAgICAgICAgIFwlLVolcF4sCisgICAgICAgICAgICBcJS1HJS4lIwpkaWZmIC0tZ2l0IGEvcnVudGltZS9kb2MvY21kbGluZS50eHQgYi9ydW50aW1lL2RvYy9jbWRsaW5lLnR4dAppbmRleCAzOTg5M2Q3Li4xMmNlYmIyIDEwMDY0NAotLS0gYS9ydW50aW1lL2RvYy9jbWRsaW5lLnR4dAorKysgYi9ydW50aW1lL2RvYy9jbWRsaW5lLnR4dApAQCAtMSw0ICsxLDQgQEAKLSpjbWRsaW5lLnR4dCogICBGb3IgVmltIHZlcnNpb24gNy4zLiAgTGFzdCBjaGFuZ2U6IDIwMTEgRmViIDEwCisqY21kbGluZS50eHQqICAgRm9yIFZpbSB2ZXJzaW9uIDcuMy4gIExhc3QgY2hhbmdlOiAyMDExIE1hciAyNwogCiAKIAkJICBWSU0gUkVGRVJFTkNFIE1BTlVBTCAgICBieSBCcmFtIE1vb2xlbmFhcgpAQCAtODMsOSArODMsOSBAQAogQ1RSTC1RCQlTYW1lIGFzIENUUkwtVi4gIEJ1dCB3aXRoIHNvbWUgdGVybWluYWxzIGl0IGlzIHVzZWQgZm9yCiAJCWNvbnRyb2wgZmxvdywgaXQgZG9lc24ndCB3b3JrIHRoZW4uCiAKLQkJCQkJCQkqY188TGVmdD4qCisJCQkJCQkJKmNfPExlZnQ+KiAqY19MZWZ0KgogPExlZnQ+CQljdXJzb3IgbGVmdAotCQkJCQkJCSpjXzxSaWdodD4qCisJCQkJCQkJKmNfPFJpZ2h0PiogKmNfUmlnaHQqCiA8UmlnaHQ+CQljdXJzb3IgcmlnaHQKIAkJCQkJCQkqY188Uy1MZWZ0PioKIDxTLUxlZnQ+IG9yIDxDLUxlZnQ+CQkJCQkqY188Qy1MZWZ0PioKQEAgLTkzLDE4ICs5MywxOCBAQAogCQkJCQkJCSpjXzxTLVJpZ2h0PioKIDxTLVJpZ2h0PiBvciA8Qy1SaWdodD4JCQkJCSpjXzxDLVJpZ2h0PioKIAkJY3Vyc29yIG9uZSBXT1JEIHJpZ2h0Ci1DVFJMLUIgb3IgPEhvbWU+CQkJCQkqY19DVFJMLUIqICpjXzxIb21lPioKK0NUUkwtQiBvciA8SG9tZT4JCQkJKmNfQ1RSTC1CKiAqY188SG9tZT4qICpjX0hvbWUqCiAJCWN1cnNvciB0byBiZWdpbm5pbmcgb2YgY29tbWFuZC1saW5lCi1DVFJMLUUgb3IgPEVuZD4JCQkJCQkqY19DVFJMLUUqICpjXzxFbmQ+KgorQ1RSTC1FIG9yIDxFbmQ+CQkJCQkqY19DVFJMLUUqICpjXzxFbmQ+KiAqY19FbmQqCiAJCWN1cnNvciB0byBlbmQgb2YgY29tbWFuZC1saW5lCiAKIAkJCQkJCQkqY188TGVmdE1vdXNlPioKIDxMZWZ0TW91c2U+CU1vdmUgdGhlIGN1cnNvciB0byB0aGUgcG9zaXRpb24gb2YgdGhlIG1vdXNlIGNsaWNrLgogCi1DVFJMLUgJCQkJCQkJKmNfPEJTPiogKmNfQ1RSTC1IKgorQ1RSTC1ICQkJCQkJKmNfPEJTPiogKmNfQ1RSTC1IKiAqY19CUyoKIDxCUz4JCURlbGV0ZSB0aGUgY2hhcmFjdGVyIGluIGZyb250IG9mIHRoZSBjdXJzb3IgKHNlZSB8OmZpeGRlbHwgaWYKIAkJeW91ciA8QlM+IGtleSBkb2VzIG5vdCBkbyB3aGF0IHlvdSB3YW50KS4KLQkJCQkJCQkqY188RGVsPioKKwkJCQkJCQkqY188RGVsPiogKmNfRGVsKgogPERlbD4JCURlbGV0ZSB0aGUgY2hhcmFjdGVyIHVuZGVyIHRoZSBjdXJzb3IgKGF0IGVuZCBvZiBsaW5lOgogCQljaGFyYWN0ZXIgYmVmb3JlIHRoZSBjdXJzb3IpIChzZWUgfDpmaXhkZWx8IGlmIHlvdXIgPERlbD4KIAkJa2V5IGRvZXMgbm90IGRvIHdoYXQgeW91IHdhbnQpLgpAQCAtMTE4LDcgKzExOCw3IEBACiAJCXByZWZlcnJlZCBiZWhhdmlvciwgYWRkIHRoZSBmb2xsb3dpbmcgdG8geW91ciAudmltcmM6ID4KIAkJCTpjbm9yZW1hcCA8Qy1VPiA8Qy1FPjxDLVU+CiA8Ci0JCQkJCQkJKmNfPEluc2VydD4qCisJCQkJCQkqY188SW5zZXJ0PiogKmNfSW5zZXJ0KgogPEluc2VydD4JVG9nZ2xlIGJldHdlZW4gaW5zZXJ0IGFuZCBvdmVyc3RyaWtlLiAge25vdCBpbiBWaX0KIAoge2NoYXIxfSA8QlM+IHtjaGFyMn0Jb3IJCQkJKmNfZGlncmFwaCoKQEAgLTIyNCw5ICsyMjQsOSBAQAogCQl0aGUgY2xpcGJvYXJkLiB8bW9kZWxlc3Mtc2VsZWN0aW9ufAogCQlJZiB0aGVyZSBpcyBubyBzZWxlY3Rpb24gQ1RSTC1ZIGlzIGluc2VydGVkIGFzIGEgY2hhcmFjdGVyLgogCi1DVFJMLUoJCQkJCQkqY19DVFJMLUoqICpjXzxOTD4qICpjXzxDUj4qCitDVFJMLUoJCQkJCSpjX0NUUkwtSiogKmNfPE5MPiogKmNfPENSPiogKmNfQ1IqCiA8Q1I+IG9yIDxOTD4Jc3RhcnQgZW50ZXJlZCBjb21tYW5kCi0JCQkJCQkJKmNfPEVzYz4qCisJCQkJCQkJKmNfPEVzYz4qICpjX0VzYyoKIDxFc2M+CQlXaGVuIHR5cGVkIGFuZCAneCcgbm90IHByZXNlbnQgaW4gJ2Nwb3B0aW9ucycsIHF1aXQKIAkJQ29tbWFuZC1saW5lIG1vZGUgd2l0aG91dCBleGVjdXRpbmcuICBJbiBtYWNyb3Mgb3Igd2hlbiAneCcKIAkJcHJlc2VudCBpbiAnY3BvcHRpb25zJywgc3RhcnQgZW50ZXJlZCBjb21tYW5kLgpAQCAtMjM1LDEyICsyMzUsMTIgQEAKIAkJCQkJCQkqY19DVFJMLUMqCiBDVFJMLUMJCXF1aXQgY29tbWFuZC1saW5lIHdpdGhvdXQgZXhlY3V0aW5nCiAKLQkJCQkJCQkqY188VXA+KgorCQkJCQkJCSpjXzxVcD4qICpjX1VwKgogPFVwPgkJcmVjYWxsIG9sZGVyIGNvbW1hbmQtbGluZSBmcm9tIGhpc3RvcnksIHdob3NlIGJlZ2lubmluZwogCQltYXRjaGVzIHRoZSBjdXJyZW50IGNvbW1hbmQtbGluZSAoc2VlIGJlbG93KS4KIAkJe25vdCBhdmFpbGFibGUgd2hlbiBjb21waWxlZCB3aXRob3V0IHRoZSB8K2NtZGxpbmVfaGlzdHwKIAkJZmVhdHVyZX0KLQkJCQkJCQkqY188RG93bj4qCisJCQkJCQkJKmNfPERvd24+KiAqY19Eb3duKgogPERvd24+CQlyZWNhbGwgbW9yZSByZWNlbnQgY29tbWFuZC1saW5lIGZyb20gaGlzdG9yeSwgd2hvc2UgYmVnaW5uaW5nCiAJCW1hdGNoZXMgdGhlIGN1cnJlbnQgY29tbWFuZC1saW5lIChzZWUgYmVsb3cpLgogCQl7bm90IGF2YWlsYWJsZSB3aGVuIGNvbXBpbGVkIHdpdGhvdXQgdGhlIHwrY21kbGluZV9oaXN0fApAQCAtODY1LDcgKzg2NSw3IEBACiAJCUFmdGVyIHRoaXMsIHRoZSBwcmV2aW91cyBtb2RpZmllcnMgY2FuIGJlIHVzZWQgYWdhaW4uICBGb3IKIAkJZXhhbXBsZSAiOnAiLCB0byBtYWtlIGEgZnVsbCBwYXRoIGFmdGVyIHRoZSBzdWJzdGl0dXRpb24uCiAJOmdzP3BhdD9zdWI/Ci0JCVN1YnN0aXR1dGUgYWxsIG9jY3VycmVuY2VzIG9mICJwYXRoIiB3aXRoICJzdWIiLiAgT3RoZXJ3aXNlCisJCVN1YnN0aXR1dGUgYWxsIG9jY3VycmVuY2VzIG9mICJwYXQiIHdpdGggInN1YiIuICBPdGhlcndpc2UKIAkJdGhpcyB3b3JrcyBsaWtlICI6cyIuCiAKIEV4YW1wbGVzLCB3aGVuIHRoZSBmaWxlIG5hbWUgaXMgInNyYy92ZXJzaW9uLmMiLCBjdXJyZW50IGRpcgpkaWZmIC0tZ2l0IGEvcnVudGltZS9kb2MvcGlfbmV0cncudHh0IGIvcnVudGltZS9kb2MvcGlfbmV0cncudHh0CmluZGV4IDhlMTczMGIuLmFlNGE4NzAgMTAwNjQ0Ci0tLSBhL3J1bnRpbWUvZG9jL3BpX25ldHJ3LnR4dAorKysgYi9ydW50aW1lL2RvYy9waV9uZXRydy50eHQKQEAgLTEsNCArMSw0IEBACi0qcGlfbmV0cncudHh0KiAgRm9yIFZpbSB2ZXJzaW9uIDcuMy4gIExhc3QgY2hhbmdlOiAyMDEwIEp1bCAyOAorKnBpX25ldHJ3LnR4dCogIEZvciBWaW0gdmVyc2lvbiA3LjMuICBMYXN0IGNoYW5nZTogMjAxMSBBcHIgMDEKIAogCSAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCSAgICBORVRSVyBSRUZFUkVOQ0UgTUFOVUFMICAgIGJ5IENoYXJsZXMgRS4gQ2FtcGJlbGwsIEpyLgpAQCAtNiw3ICs2LDcgQEAKIEF1dGhvcjogIENoYXJsZXMgRS4gQ2FtcGJlbGwsIEpyLiAgPE5kck9jaGlwQFNjYW1wYmVsbFBmYW1pbHkuQWJpek0+CiAJICAocmVtb3ZlIE5PU1BBTSBmcm9tIENhbXBiZWxsJ3MgZW1haWwgZmlyc3QpCiAKLUNvcHlyaWdodDogQ29weXJpZ2h0IChDKSAxOTk5LTIwMTAgQ2hhcmxlcyBFIENhbXBiZWxsLCBKciAgICAqbmV0cnctY29weXJpZ2h0KgorQ29weXJpZ2h0OiBDb3B5cmlnaHQgKEMpIDE5OTktMjAxMSBDaGFybGVzIEUgQ2FtcGJlbGwsIEpyICAgICpuZXRydy1jb3B5cmlnaHQqCiAJICAgUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCB0byB1c2UgYW5kIGRpc3RyaWJ1dGUgdGhpcyBjb2RlLCB3aXRoCiAJICAgb3Igd2l0aG91dCBtb2RpZmljYXRpb25zLCBwcm92aWRlZCB0aGF0IHRoaXMgY29weXJpZ2h0IG5vdGljZSBpcwogCSAgIGNvcGllZCB3aXRoIGl0LiBMaWtlIGFueXRoaW5nIGVsc2UgdGhhdCdzIGZyZWUsIG5ldHJ3LnZpbSwKQEAgLTQxLDcgKzQxLDcgQEAKICAgICAgIE5FVFJDLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLnxuZXRydy1uZXRyY3wKICAgICAgIFBBU1NXT1JELi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLnxuZXRydy1wYXNzd2R8CiA1LiAgQWN0aXZhdGlvbi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi58bmV0cnctYWN0aXZhdGV8Ci02LiAgVHJhbnNwYXJlbnQgRmlsZSBFZGl0aW5nLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi58bmV0cnctdHJhbnNwYXJlbnR8Cis2LiAgVHJhbnNwYXJlbnQgUmVtb3RlIEZpbGUgRWRpdGluZy4uLi4uLi4uLi4uLi4uLi4uLi4uLi58bmV0cnctdHJhbnNwYXJlbnR8CiA3LiAgRXggQ29tbWFuZHMuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi58bmV0cnctZXh8CiA4LiAgVmFyaWFibGVzIGFuZCBPcHRpb25zLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi58bmV0cnctdmFyfAogOS4gIEJyb3dzaW5nLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4ufG5ldHJ3LWJyb3dzZXwKQEAgLTY1LDYgKzY1LDcgQEAKICAgICAgIERpc3BsYXlpbmcgSW5mb3JtYXRpb24gQWJvdXQgRmlsZS4uLi4uLi4uLi4uLi4uLi4uLnxuZXRydy1xZnwKICAgICAgIEVkaXQgRmlsZSBPciBEaXJlY3RvcnkgSGlkaW5nIExpc3QuLi4uLi4uLi4uLi4uLi4uLnxuZXRydy1jdHJsLWh8CiAgICAgICBFZGl0aW5nIFRoZSBTb3J0aW5nIFNlcXVlbmNlLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi58bmV0cnctU3wKKyAgICAgIEZvcmNpbmcgdHJlYXRtZW50IGFzIGEgZmlsZSBvciBkaXJlY3RvcnkuLi4uLi4uLi4uLnxuZXRydy1nZHwgfG5ldHJ3LWdmfAogICAgICAgR29pbmcgVXAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4ufG5ldHJ3LS18CiAgICAgICBIaWRpbmcgRmlsZXMgT3IgRGlyZWN0b3JpZXMuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi58bmV0cnctYXwKICAgICAgIEltcHJvdmluZyBCcm93c2luZy4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLnxuZXRydy1zc2gtaGFja3wKQEAgLTE4MCwxOSArMTgxLDE5IEBACiAKIAlQcm90b2NvbCAgVmFyaWFibGUJICAgIERlZmF1bHQgVmFsdWUKIAktLS0tLS0tLSAgLS0tLS0tLS0tLS0tLS0tLSAgLS0tLS0tLS0tLS0tLQotCSAgIGRhdjogICpnOm5ldHJ3X2Rhdl9jbWQqICAgPSAiY2FkYXZlciIgICAgIGlmIGNhZGF2ZXIgaXMgZXhlY3V0YWJsZQotCSAgIGRhdjogICBnOm5ldHJ3X2Rhdl9jbWQgICAgPSAiY3VybCAtbyIgICAgIGVsc2VpZiBjdXJsIGlzIGF2YWlsYWJsZQotCSBmZXRjaDogICpnOm5ldHJ3X2ZldGNoX2NtZCogPSAiZmV0Y2ggLW8iICAgIGlmIGZldGNoIGlzIGF2YWlsYWJsZQotCSAgIGZ0cDogICpnOm5ldHJ3X2Z0cF9jbWQqICAgPSAiZnRwIgotCSAgaHR0cDogICpnOm5ldHJ3X2h0dHBfY21kKiAgPSAiZWxpbmtzIiAgICAgaWYgICBlbGlua3MgIGlzIGF2YWlsYWJsZQorCSAgIGRhdjogICAqZzpuZXRyd19kYXZfY21kKiAgICA9ICJjYWRhdmVyIiAgICBpZiBjYWRhdmVyIGlzIGV4ZWN1dGFibGUKKwkgICBkYXY6ICAgZzpuZXRyd19kYXZfY21kICAgID0gImN1cmwgLW8iICAgIGVsc2VpZiBjdXJsIGlzIGF2YWlsYWJsZQorCSBmZXRjaDogICAqZzpuZXRyd19mZXRjaF9jbWQqICA9ICJmZXRjaCAtbyIgICBpZiBmZXRjaCBpcyBhdmFpbGFibGUKKwkgICBmdHA6ICAgKmc6bmV0cndfZnRwX2NtZCogICAgPSAiZnRwIgorCSAgaHR0cDogICAqZzpuZXRyd19odHRwX2NtZCogICA9ICJlbGlua3MiICAgICBpZiAgIGVsaW5rcyAgaXMgYXZhaWxhYmxlCiAJICBodHRwOiAgIGc6bmV0cndfaHR0cF9jbWQgICA9ICJsaW5rcyIgICAgICBlbHNlaWYgbGlua3MgaXMgYXZhaWxhYmxlCiAJICBodHRwOiAgIGc6bmV0cndfaHR0cF9jbWQgICA9ICJjdXJsIiAgICAgICBlbHNlaWYgY3VybCAgaXMgYXZhaWxhYmxlCiAJICBodHRwOiAgIGc6bmV0cndfaHR0cF9jbWQgICA9ICJ3Z2V0IiAgICAgICBlbHNlaWYgd2dldCAgaXMgYXZhaWxhYmxlCiAgICAgICAgICAgaHR0cDogICBnOm5ldHJ3X2h0dHBfY21kICAgPSAiZmV0Y2giICAgICAgZWxzZWlmIGZldGNoIGlzIGF2YWlsYWJsZQotCSAgIHJjcDogICpnOm5ldHJ3X3JjcF9jbWQqICAgPSAicmNwIgotCSByc3luYzogICpnOm5ldHJ3X3JzeW5jX2NtZCogPSAicnN5bmMgLWEiCi0JICAgc2NwOiAgKmc6bmV0cndfc2NwX2NtZCogICA9ICJzY3AgLXEiCi0JICBzZnRwOiAgKmc6bmV0cndfc2Z0cF9jbWQqICA9ICJzZnRwIgorCSAgIHJjcDogICAqZzpuZXRyd19yY3BfY21kKiAgICA9ICJyY3AiCisJIHJzeW5jOiAgICpnOm5ldHJ3X3JzeW5jX2NtZCogID0gInJzeW5jIC1hIgorCSAgIHNjcDogICAqZzpuZXRyd19zY3BfY21kKiAgICA9ICJzY3AgLXEiCisJICBzZnRwOiAgICpnOm5ldHJ3X3NmdHBfY21kKiAgID0gInNmdHAiCiAKIAkqZzpuZXRyd19odHRwX3hjbWQqIDogdGhlIG9wdGlvbiBzdHJpbmcgZm9yIGh0dHA6Ly8uLi4gcHJvdG9jb2xzIGFyZQogCXNwZWNpZmllZCB2aWEgdGhpcyB2YXJpYWJsZSBhbmQgbWF5IGJlIGluZGVwZW5kZW50bHkgb3ZlcnJpZGRlbi4gIEJ5CkBAIC01MDAsNyArNTAxLDIzIEBACiA+CiAJdmltIGZ0cDovL1t1c2VyQF1tYWNoaW5lW1s6I11wb3J0bnVtYmVyXS9wYXRoCiA8Ci1Ib3dldmVyLCBmdHAgd2lsbCBvZnRlbiBuZWVkIHRvIHF1ZXJ5IHRoZSB1c2VyIGZvciB0aGUgdXNlcmlkIGFuZCBwYXNzd29yZC4KK1dpbmRvd3MgcHJvdmlkZXMgYW4gZnRwICh0eXBpY2FsbHkgYzpcV2luZG93c1xTeXN0ZW0zMlxmdHAuZXhlKSB3aGljaCB1c2VzCithbiBvcHRpb24sIC1zOmZpbGVuYW1lIChmaWxlbmFtZSBjYW4gYW5kIHByb2JhYmx5IHNob3VsZCBiZSBhIGZ1bGwgcGF0aCkKK3doaWNoIGNvbnRhaW5zIGZ0cCBjb21tYW5kcyB3aGljaCB3aWxsIGJlIGF1dG9tYXRpY2FsbHkgcnVuIHdoZW5ldmVyIGZ0cAorc3RhcnRzLiAgWW91IG1heSB1c2UgdGhpcyBmZWF0dXJlIHRvIGVudGVyIGEgdXNlciBhbmQgcGFzc3dvcmQgZm9yIG9uZSBzaXRlOiA+CisJdXNlcmlkCisJcGFzc3dvcmQKK0lmIHxnOm5ldHJ3X2Z0cF9jbWR8IGNvbnRhaW5zIC1zOltwYXRoL11NQUNISU5FLCB0aGVuIChvbiBXaW5kb3dzIG1hY2hpbmVzIG9ubHkpCituZXRydyB3aWxsIHN1YnN0aXR1dGUgdGhlIGN1cnJlbnQgbWFjaGluZSBuYW1lIHJlcXVlc3RlZCBmb3IgZnRwIGNvbm5lY3Rpb24KK2ZvciBNQUNISU5FLiAgSGVuY2Ugb25lIGNhbiBoYXZlIG11bHRpcGxlIG1hY2hpbmUuZnRwIGZpbGVzIGNvbnRhaW5pbmcgbG9naW4KK2FuZCBwYXNzd29yZCBmb3IgZnRwLiAgRXhhbXBsZTogPgorCisJZzpuZXRyd19mdHBfY21kPSAnYzpcV2luZG93c1xTeXN0ZW0zMlxmdHAgLXM6QzpcVXNlcnNcTXlzZWxmXE1BQ0hJTkUnCisJdmltIGZ0cDovL215aG9zdC5zb21ld2hlcmUubmV0Lword2lsbCB1c2UgYSBmaWxlID4KKwlDOlxVc2Vyc1xNeXNlbGZcbXlob3N0LmZ0cAorPAorT2Z0ZW4sIGZ0cCB3aWxsIG5lZWQgdG8gcXVlcnkgdGhlIHVzZXIgZm9yIHRoZSB1c2VyaWQgYW5kIHBhc3N3b3JkLgogVGhlIGxhdHRlciB3aWxsIGJlIGRvbmUgInNpbGVudGx5IjsgaWUuIGFzdGVyaXNrcyB3aWxsIHNob3cgdXAgaW5zdGVhZCBvZgogdGhlIGFjdHVhbGx5LXR5cGVkLWluIHBhc3N3b3JkLiAgTmV0cncgd2lsbCByZXRhaW4gdGhlIHVzZXJpZCBhbmQgcGFzc3dvcmQKIGZvciBzdWJzZXF1ZW50IHJlYWQvd3JpdGVzIGZyb20gdGhlIG1vc3QgcmVjZW50IHRyYW5zZmVyIHNvIHN1YnNlcXVlbnQKQEAgLTYyNCw3ICs2NDEsNyBAQAogPAogCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLTYuIFRyYW5zcGFyZW50IEZpbGUgRWRpdGluZwkJCSpuZXRydy10cmFuc3BhcmVudCoge3t7MQorNi4gVHJhbnNwYXJlbnQgUmVtb3RlIEZpbGUgRWRpdGluZwkJCSpuZXRydy10cmFuc3BhcmVudCoge3t7MQogCiBUcmFuc3BhcmVudCBmaWxlIHRyYW5zZmVycyBvY2N1ciB3aGVuZXZlciBhIHJlZ3VsYXIgZmlsZSByZWFkIG9yIHdyaXRlCiAoaW52b2tlZCB2aWEgYW4gfDphdXRvY21kfCBmb3IgfEJ1ZlJlYWRDbWR8LCB8QnVmV3JpdGVDbWR8LCBvciB8U291cmNlQ21kfApAQCAtMTIyNSw3ICsxMjQyLDcgQEAKIAogRXZlcnkgdGltZSB5b3UgY2hhbmdlIHRvIGEgbmV3IGRpcmVjdG9yeSAobmV3IGZvciB0aGUgY3VycmVudCBzZXNzaW9uKSwKIG5ldHJ3IHdpbGwgc2F2ZSB0aGUgZGlyZWN0b3J5IGluIGEgcmVjZW50bHktdmlzaXRlZCBkaXJlY3RvcnkgaGlzdG9yeQotbGlzdCAodW5sZXNzIGc6bmV0cndfZGlyaGlzdG1heCBpcyB6ZXJvOyBieSBkZWZhdWx0LCBpdCdzIHRlbikuICBXaXRoIHRoZQorbGlzdCAodW5sZXNzIHxnOm5ldHJ3X2Rpcmhpc3RtYXh8IGlzIHplcm87IGJ5IGRlZmF1bHQsIGl0J3MgdGVuKS4gIFdpdGggdGhlCiAidSIgbWFwLCBvbmUgY2FuIGNoYW5nZSB0byBhbiBlYXJsaWVyIGRpcmVjdG9yeSAocHJlZGVjZXNzb3IpLiAgVG8gZG8KIHRoZSBvcHBvc2l0ZSwgc2VlIHxuZXRydy1VfC4KIApAQCAtMTUyNyw2ICsxNTQ0LDE5IEBACiBBc3NvY2lhdGVkIHNldHRpbmcgdmFyaWFibGVzOiB8ZzpuZXRyd19zb3J0X3NlcXVlbmNlfCB8ZzpuZXRyd19zb3J0X29wdGlvbnN8CiAKIAorRk9SQ0lORyBUUkVBVE1FTlQgQVMgQSBGSUxFIE9SIERJUkVDVE9SWQkqbmV0cnctZ2QqICpuZXRydy1nZioge3t7MgorCitSZW1vdGUgc3ltYm9saWMgbGlua3MgKGllLiB0aG9zZSBsaXN0ZWQgdmlhIHNzaCBvciBmdHApIGFyZSBwcm9ibGVtYXRpYworaW4gdGhhdCBpdCBpcyBkaWZmaWN1bHQgdG8gdGVsbCB3aGV0aGVyIHRoZXkgbGluayB0byBhIGZpbGUgb3IgdG8gYQorZGlyZWN0b3J5LgorCitUbyBmb3JjZSB0cmVhdG1lbnQgYXMgYSBmaWxlOiB1c2UgPgorCWdkCis8CitUbyBmb3JjZSB0cmVhdG1lbnQgYXMgYSBkaXJlY3Rvcnk6IHVzZSA+CisJZ2YKKzwKKwogR09JTkcgVVAJCQkJCQkJKm5ldHJ3LS0qIHt7ezIKIAogVG8gZ28gdXAgYSBkaXJlY3RvcnksIHByZXNzICItIiBvciBwcmVzcyB0aGUgPGNyPiB3aGVuIGF0b3AgdGhlIC4uLyBkaXJlY3RvcnkKQEAgLTE3NDAsNiArMTc3MCwxNiBAQAogd2l0aCA8cy1sZWZ0bW91c2U+IHVzaW5nIGd2aW0uICBPbmUgbWF5IHVubWFyayBhbGwgZmlsZXMgYnkgcHJlc3NpbmcKICJtdSIgKHNlZSB8bmV0cnctbXV8KS4KIAorTWFya2VkIGZpbGVzIGFyZSBoaWdobGlnaHRlZCB1c2luZyB0aGUgIm5ldHJ3TWFya0ZpbGUiIGhpZ2hsaWdodGluZyBncm91cCwKK3doaWNoIGJ5IGRlZmF1bHQgaXMgbGlua2VkIHRvICJJZGVudGlmaWVyIiAoc2VlIElkZW50aWZpZXIgdW5kZXIKK3xncm91cC1uYW1lfCkuICBZb3UgbWF5IGNoYW5nZSB0aGUgaGlnaGxpZ2h0aW5nIGdyb3VwIGJ5IHB1dHRpbmcgc29tZXRoaW5nCitsaWtlID4KKworCWhpZ2hsaWdodCBjbGVhciBuZXRyd01hcmtGaWxlCisJaGkgbGluayBuZXRyd01hcmtGaWxlIC4ud2hhdGV2ZXIuLgorPAoraW50byAkSE9NRS8udmltL2FmdGVyL3N5bnRheC9uZXRydy52aW0gLgorCiAqbWFya2ZpbGVsaXN0KiAqZ2xvYmFsX21hcmtmaWxlbGlzdCogKmxvY2FsX21hcmtmaWxlbGlzdCoKIEFsbCBtYXJrZWQgZmlsZXMgYXJlIGVudGVyZWQgb250byB0aGUgZ2xvYmFsIG1hcmtlZCBmaWxlIGxpc3Q7IHRoZXJlIGlzIG9ubHkKIG9uZSBzdWNoIGxpc3QuICBJbiBhZGRpdGlvbiwgZXZlcnkgbmV0cncgYnVmZmVyIGFsc28gaGFzIGl0cyBvd24gbG9jYWwgbWFya2VkCkBAIC0xNzg5LDcgKzE4MjksOCBAQAogCQkgICAgICAoVXNlcyB0aGUgZ2xvYmFsIG1hcmtlZCBmaWxlIGxpc3QpCiAKIFNlbGVjdCBhIHRhcmdldCBkaXJlY3Rvcnkgd2l0aCBtdCAofG5ldHJ3LW10fCkuICBUaGVuIGNoYW5nZSBkaXJlY3RvcnksCi1zZWxlY3QgZmlsZShzKSAoc2VlIHxuZXRydy1tZnwpLCBhbmQgcHJlc3MgIm1jIi4KK3NlbGVjdCBmaWxlKHMpIChzZWUgfG5ldHJ3LW1mfCksIGFuZCBwcmVzcyAibWMiLiAgVGhlIGNvcHkgaXMgZG9uZQorZnJvbSB0aGUgY3VycmVudCB3aW5kb3cgKHdoZXJlIG9uZSBkb2VzIHRoZSBtZikgdG8gdGhlIHRhcmdldC4KIAogQXNzb2NpYXRlZCBzZXR0aW5nIHZhcmlhYmxlOiB8ZzpuZXRyd19sb2NhbGNvcHljbWR8IHxnOm5ldHJ3X3NzaF9jbWR8CiAKQEAgLTE4NDEsNyArMTg4Miw4IEBACiAJVXNlIGF0IHlvdXIgb3duIHJpc2shCiAKIFNlbGVjdCBhIHRhcmdldCBkaXJlY3Rvcnkgd2l0aCBtdCAofG5ldHJ3LW10fCkuICBUaGVuIGNoYW5nZSBkaXJlY3RvcnksCi1zZWxlY3QgZmlsZShzKSAoc2VlIHxuZXRydy1tZnwpLCBhbmQgcHJlc3MgIm1tIi4KK3NlbGVjdCBmaWxlKHMpIChzZWUgfG5ldHJ3LW1mfCksIGFuZCBwcmVzcyAibW0iLiAgVGhlIG1vdmUgaXMgZG9uZQorZnJvbSB0aGUgY3VycmVudCB3aW5kb3cgKHdoZXJlIG9uZSBkb2VzIHRoZSBtZikgdG8gdGhlIHRhcmdldC4KIAogQXNzb2NpYXRlZCBzZXR0aW5nIHZhcmlhYmxlOiB8ZzpuZXRyd19sb2NhbG1vdmVjbWR8IHxnOm5ldHJ3X3NzaF9jbWR8CiAKQEAgLTE5MjIsMjEgKzE5NjQsMjEgQEAKICAgIC0tLQkJCQktLS0tLS0tLS0tLQogICAgVmFyCQkJCUV4cGxhbmF0aW9uCiAgICAtLS0JCQkJLS0tLS0tLS0tLS0KLTwgKmc6bmV0cndfYWx0byoJCWNoYW5nZSBmcm9tIGFib3ZlIHNwbGl0dGluZyB0byBiZWxvdyBzcGxpdHRpbmcKKzwgKmc6bmV0cndfYWx0byoJCSAgY2hhbmdlIGZyb20gYWJvdmUgc3BsaXR0aW5nIHRvIGJlbG93IHNwbGl0dGluZwogCQkJCWJ5IHNldHRpbmcgdGhpcyB2YXJpYWJsZSAoc2VlIHxuZXRydy1vfCkKIAkJCQkgZGVmYXVsdDogPSZzYiAgICAgICAgICAgKHNlZSB8J3NiJ3wpCiAKLSAgKmc6bmV0cndfYWx0dioJCWNoYW5nZSBmcm9tIGxlZnQgc3BsaXR0aW5nIHRvIHJpZ2h0IHNwbGl0dGluZworICAqZzpuZXRyd19hbHR2KgkJICBjaGFuZ2UgZnJvbSBsZWZ0IHNwbGl0dGluZyB0byByaWdodCBzcGxpdHRpbmcKIAkJCQlieSBzZXR0aW5nIHRoaXMgdmFyaWFibGUgKHNlZSB8bmV0cnctdnwpCiAJCQkJIGRlZmF1bHQ6ID0mc3ByICAgICAgICAgIChzZWUgfCdzcHInfCkKIAotICAqZzpuZXRyd19iYW5uZXIqCQllbmFibGUvc3VwcHJlc3MgdGhlIGJhbm5lcgorICAqZzpuZXRyd19iYW5uZXIqCQkgIGVuYWJsZS9zdXBwcmVzcyB0aGUgYmFubmVyCiAJCQkJPTA6IHN1cHByZXNzIHRoZSBiYW5uZXIKIAkJCQk9MTogYmFubmVyIGlzIGVuYWJsZWQgKGRlZmF1bHQpCiAJCQkJTk9URTogc3VwcHJlc3NpbmcgdGhlIGJhbm5lciBpcyBhIG5ldyBmZWF0dXJlCiAJCQkJd2hpY2ggbWF5IGNhdXNlIHByb2JsZW1zLgogCi0gICpnOm5ldHJ3X2Jyb3dzZV9zcGxpdCoJd2hlbiBicm93c2luZywgPGNyPiB3aWxsIG9wZW4gdGhlIGZpbGUgYnk6CisgICpnOm5ldHJ3X2Jyb3dzZV9zcGxpdCoJICB3aGVuIGJyb3dzaW5nLCA8Y3I+IHdpbGwgb3BlbiB0aGUgZmlsZSBieToKIAkJCQk9MDogcmUtdXNpbmcgdGhlIHNhbWUgd2luZG93CiAJCQkJPTE6IGhvcml6b250YWxseSBzcGxpdHRpbmcgdGhlIHdpbmRvdyBmaXJzdAogCQkJCT0yOiB2ZXJ0aWNhbGx5ICAgc3BsaXR0aW5nIHRoZSB3aW5kb3cgZmlyc3QKQEAgLTE5NDYsNyArMTk4OCw3IEBACiAJCQkJICAgIHRvIGdldCB2ZXJ0aWNhbCBzcGxpdHRpbmcgaW5zdGVhZCBvZgogCQkJCSAgICBob3Jpem9udGFsIHNwbGl0dGluZy4KIAotICAqZzpuZXRyd19icm93c2V4X3ZpZXdlcioJc3BlY2lmeSB1c2VyJ3MgcHJlZmVyZW5jZSBmb3IgYSB2aWV3ZXI6ID4KKyAgKmc6bmV0cndfYnJvd3NleF92aWV3ZXIqCSAgc3BlY2lmeSB1c2VyJ3MgcHJlZmVyZW5jZSBmb3IgYSB2aWV3ZXI6ID4KIAkJCQkJImtmbWNsaWVudCBleGVjIgogCQkJCQkiZ25vbWUtb3BlbiIKIDwJCQkJSWYgPgpAQCAtMTk1NSwzNSArMTk5Nyw0OCBAQAogCQkJCWEgc2NyaXB0L2Z1bmN0aW9uIHRvIGhhbmRsZSB0aGUgZ2l2ZW4KIAkJCQlleHRlbnNpb24uICAoc2VlIHxuZXRyd19maWxlaGFuZGxlcnwpLgogCi0gICpnOm5ldHJ3X2NoZ3Blcm0qCQlVbml4L0xpbnV4OiAiY2htb2QgUEVSTSBGSUxFTkFNRSIKKyAgKmc6bmV0cndfY2hncGVybSoJCSAgVW5peC9MaW51eDogImNobW9kIFBFUk0gRklMRU5BTUUiCiAJCQkJV2luZG93czogICAgImNhY2xzIEZJTEVOQU1FIC9lIC9wIFBFUk0iCiAJCQkJVXNlZCB0byBjaGFuZ2UgYWNjZXNzIHBlcm1pc3Npb24gZm9yIGEgZmlsZS4KIAotICAqZzpuZXRyd19jb21wcmVzcyoJCT0iZ3ppcCIKKyAgKmc6bmV0cndfY29tcHJlc3MqCQkgID0iZ3ppcCIKIAkJCQkgICAgV2lsbCBjb21wcmVzcyBtYXJrZWQgZmlsZXMgd2l0aCB0aGlzCiAJCQkJICAgIGNvbW1hbmQKIAotICAqZzpuZXRyd19jdGFncyoJCT0iY3RhZ3MiCisgICpnOm5ldHJ3X2N0YWdzKgkJICA9ImN0YWdzIgogCQkJCVRoZSBkZWZhdWx0IGV4dGVybmFsIHByb2dyYW0gdXNlZCB0byBjcmVhdGUgdGFncwogCi0gICpnOm5ldHJ3X2N1cnNvcmxpbmUqCQk9IDEgKGRlZmF1bHQpCi0JCQkJd2lsbCB1c2UgdGhlIHwnY3Vyc29ybGluZSd8IGxvY2FsIHNldHRpbmcgd2hlbgotCQkJCXxnOm5ldHJ3X2xpc3RzdHlsZXwgPT0wICh0aGluIGxpc3RpbmcpIG9yCi0JCQkJfGc6bmV0cndfbGlzdHN0eWxlfCA9PTEgKGxvbmcgbGlzdGluZykgb3IKLQkJCQl8ZzpuZXRyd19saXN0c3R5bGV8ID09MyAodHJlZSBsaXN0aW5nKQotCQkJCShpZS4gZG9lc24ndCBhZmZlY3QgdGhlIHdpZGUgbGlzdGluZykKLQkJCQk9MDogb2ZmCi0JCQkJPTI6IGxpa2UgPT0xLCBidXQgdGhlIHdpZGUgbGlzdGluZyBnZXRzIGJvdGgKLQkJCQljdXJzb3JsaW5lIGFuZCB8J2N1cnNvcmNvbHVtbid8bG9jYWxseSBzZXQKKyAgKmc6bmV0cndfY3Vyc29yKgkJICA9IDIgKGRlZmF1bHQpCisgIAkJCQlUaGlzIG9wdGlvbiBjb250cm9scyB0aGUgdXNlIG9mIHRoZQorCQkJCXwnY3Vyc29ybGluZSd8IChjdWwpIGFuZCB8J2N1cnNvcmNvbHVtbid8CisJCQkJKGN1Yykgc2V0dGluZ3MgYnkgbmV0cnc6CiAKLSAgKmc6bmV0cndfZGVjb21wcmVzcyoJCT0geyAiLmd6IiA6ICJndW56aXAiICwKKwkJCQlWYWx1ZSAgIFRoaW4tTG9uZy1UcmVlICAgICAgV2lkZQorCQkJCSA9MCAgICAgIHUtY3VsIHUtY3VjICAgICAgdS1jdWwgdS1jdWMKKwkJCQkgPTEgICAgICB1LWN1bCB1LWN1YyAgICAgICAgY3VsIHUtY3VjCisJCQkJID0yICAgICAgICBjdWwgdS1jdWMgICAgICAgIGN1bCB1LWN1YworCQkJCSA9MyAgICAgICAgY3VsIHUtY3VjICAgICAgICBjdWwgICBjdWMKKwkJCQkgPTQgICAgICAgIGN1bCAgIGN1YyAgICAgICAgY3VsICAgY3VjCisKKwkJCQlXaGVyZQorCQkJCSAgdS1jdWwgOiB1c2VyJ3MgfCdjdXJzb3JsaW5lJ3wgICBzZXR0aW5nIHVzZWQKKwkJCQkgIHUtY3VjIDogdXNlcidzIHwnY3Vyc29yY29sdW1uJ3wgc2V0dGluZyB1c2VkCisJCQkJICBjdWwgICA6IHwnY3Vyc29ybGluZSd8ICBsb2NhbGx5IHNldAorCQkJCSAgY3VjICAgOiB8J2N1cnNvcmNvbHVtbid8IGxvY2FsbHkgc2V0CisKKyAgKmc6bmV0cndfZGVjb21wcmVzcyoJCSAgPSB7ICIuZ3oiIDogImd1bnppcCIgLAogCQkJCSAgICAiLmJ6MiIgOiAiYnVuemlwMiIgLAogCQkJCSAgICAiLnppcCIgOiAidW56aXAiICwKIAkJCQkgICAgIi50YXIiIDogInRhciAteGYifQogCQkJCSAgQSBkaWN0aW9uYXJ5IG1hcHBpbmcgc3VmZmljZXMgdG8KIAkJCQkgIGRlY29tcHJlc3Npb24gcHJvZ3JhbXMuCiAKLSAgKmc6bmV0cndfZmFzdGJyb3dzZSoJCT0wOiBzbG93IHNwZWVkIGRpcmVjdG9yeSBicm93c2luZzsKKyAgKmc6bmV0cndfZGlyaGlzdG1heCogICAgICAgICAgICA9MTA6IGNvbnRyb2xzIG1heGltdW0gcXVhbnRpdHkgb2YgcGFzdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhpc3RvcnkuICBNYXkgYmUgemVybyB0byBzdXBwcHJlc3MKKwkJCQkgICAgIGhpc3RvcnkuCisJCQkJICAgICAocmVsYXRlZDogfG5ldHJ3LXFifCB8bmV0cnctdXwgfG5ldHJ3LVV8KQorCisgICpnOm5ldHJ3X2Zhc3Ricm93c2UqCQkgID0wOiBzbG93IHNwZWVkIGRpcmVjdG9yeSBicm93c2luZzsKIAkJCQkgICAgbmV2ZXIgcmUtdXNlcyBkaXJlY3RvcnkgbGlzdGluZ3MsCiAJCQkJICAgIGFsd2F5cyBvYnRhaW5zIGRpcmVjdG9yeSBsaXN0aW5ncy4KIAkJCQk9MTogbWVkaXVtIHNwZWVkIGRpcmVjdG9yeSBicm93c2luZzsKQEAgLTIwMDcsMTAgKzIwNjIsMTAgQEAKIAkJCQl0cmFkaW5nIG9mZiBhY2N1cmFjeSAoaWUuIHVwLXRvLWRhdGUgbGlzdGluZykKIAkJCQl2ZXJzdXMgc3BlZWQuCiAKLSAgKmc6bmV0cndfZm5hbWVfZXNjYXBlKgk9JyA/JjslJworICAqZzpuZXRyd19mbmFtZV9lc2NhcGUqCSAgPScgPyY7JScKIAkJCQlVc2VkIG9uIGZpbGVuYW1lcyBiZWZvcmUgcmVtb3RlIHJlYWRpbmcvd3JpdGluZwogCi0gICpnOm5ldHJ3X2Z0cF9icm93c2VfcmVqZWN0KglmdHAgY2FuIHByb2R1Y2UgYSBudW1iZXIgb2YgZXJyb3JzIGFuZCB3YXJuaW5ncworICAqZzpuZXRyd19mdHBfYnJvd3NlX3JlamVjdCoJICBmdHAgY2FuIHByb2R1Y2UgYSBudW1iZXIgb2YgZXJyb3JzIGFuZCB3YXJuaW5ncwogCQkJCXRoYXQgY2FuIHNob3cgdXAgYXMgImRpcmVjdG9yaWVzIiBhbmQgImZpbGVzIgogCQkJCWluIHRoZSBsaXN0aW5nLiAgVGhpcyBwYXR0ZXJuIGlzIHVzZWQgdG8KIAkJCQlyZW1vdmUgc3VjaCBlbWJlZGRlZCBtZXNzYWdlcy4gIEJ5IGRlZmF1bHQgaXRzCkBAIC0yMDIzLDg3ICsyMDc4LDg3IEBACiAJCQkJIDogY29ubmVjdCB0byBhZGRyZXNzIFswLTlhLWZBLUY6XSoKIAkJCQkgOiBObyByb3V0ZSB0byBob3N0JCcKIAotICAqZzpuZXRyd19mdHBfbGlzdF9jbWQqCW9wdGlvbnMgZm9yIHBhc3NpbmcgYWxvbmcgdG8gZnRwIGZvciBkaXJlY3RvcnkKKyAgKmc6bmV0cndfZnRwX2xpc3RfY21kKgkgIG9wdGlvbnMgZm9yIHBhc3NpbmcgYWxvbmcgdG8gZnRwIGZvciBkaXJlY3RvcnkKIAkJCQlsaXN0aW5nLiAgRGVmYXVsdHM6CiAJCQkJIHVuaXggb3IgZzpuZXRyd19jeWd3aW4gc2V0OiA6ICJscyAtbEYiCiAJCQkJIG90aGVyd2lzZSAgICAgICAgICAgICAgICAgICAgICJkaXIiCiAKIAotICAqZzpuZXRyd19mdHBfc2l6ZWxpc3RfY21kKglvcHRpb25zIGZvciBwYXNzaW5nIGFsb25nIHRvIGZ0cCBmb3IgZGlyZWN0b3J5CisgICpnOm5ldHJ3X2Z0cF9zaXplbGlzdF9jbWQqCSAgb3B0aW9ucyBmb3IgcGFzc2luZyBhbG9uZyB0byBmdHAgZm9yIGRpcmVjdG9yeQogCQkJCWxpc3RpbmcsIHNvcnRlZCBieSBzaXplIG9mIGZpbGUuCiAJCQkJRGVmYXVsdHM6CiAJCQkJIHVuaXggb3IgZzpuZXRyd19jeWd3aW4gc2V0OiA6ICJscyAtc2xGIgogCQkJCSBvdGhlcndpc2UgICAgICAgICAgICAgICAgICAgICAiZGlyIgogCi0gICpnOm5ldHJ3X2Z0cF90aW1lbGlzdF9jbWQqCW9wdGlvbnMgZm9yIHBhc3NpbmcgYWxvbmcgdG8gZnRwIGZvciBkaXJlY3RvcnkKKyAgKmc6bmV0cndfZnRwX3RpbWVsaXN0X2NtZCoJICBvcHRpb25zIGZvciBwYXNzaW5nIGFsb25nIHRvIGZ0cCBmb3IgZGlyZWN0b3J5CiAJCQkJbGlzdGluZywgc29ydGVkIGJ5IHRpbWUgb2YgbGFzdCBtb2RpZmljYXRpb24uCiAJCQkJRGVmYXVsdHM6CiAJCQkJIHVuaXggb3IgZzpuZXRyd19jeWd3aW4gc2V0OiA6ICJscyAtdGxGIgogCQkJCSBvdGhlcndpc2UgICAgICAgICAgICAgICAgICAgICAiZGlyIgogCi0gICpnOm5ldHJ3X2dsb2JfZXNjYXBlKgkJPSdbXSo/YHt+JCcgICh1bml4KQorICAqZzpuZXRyd19nbG9iX2VzY2FwZSoJCSAgPSdbXSo/YHt+JCcgICh1bml4KQogCQkJCT0nW10qP2B7JCcgICh3aW5kb3dzCiAJCQkJVGhlc2UgY2hhcmFjdGVycyBpbiBkaXJlY3RvcnkgbmFtZXMgYXJlCiAJCQkJZXNjYXBlZCBiZWZvcmUgYXBwbHlpbmcgZ2xvYigpCiAKLSAgKmc6bmV0cndfaGlkZSoJCWlmIHRydWUsIHRoZSBoaWRpbmcgbGlzdCBpcyB1c2VkCisgICpnOm5ldHJ3X2hpZGUqCQkgIGlmIHRydWUsIHRoZSBoaWRpbmcgbGlzdCBpcyB1c2VkCiAJCQkJIGRlZmF1bHQ6ID0wCiAKLSAgKmc6bmV0cndfaG9tZSoJCVRoZSBob21lIGRpcmVjdG9yeSBmb3Igd2hlcmUgYm9va21hcmtzIGFuZAorICAqZzpuZXRyd19ob21lKgkJICBUaGUgaG9tZSBkaXJlY3RvcnkgZm9yIHdoZXJlIGJvb2ttYXJrcyBhbmQKIAkJCQloaXN0b3J5IGFyZSBzYXZlZCAoYXMgLm5ldHJ3Ym9vayBhbmQKIAkJCQkubmV0cndoaXN0KS4KIAkJCQkgZGVmYXVsdDogdGhlIGZpcnN0IGRpcmVjdG9yeSBvbiB0aGUKIAkJCQkgICAgICAgICB8J3J1bnRpbWVwYXRoJ3wKIAotICAqZzpuZXRyd19rZWVwZGlyKgkJPTEgKGRlZmF1bHQpIGtlZXAgY3VycmVudCBkaXJlY3RvcnkgaW1tdW5lIGZyb20KKyAgKmc6bmV0cndfa2VlcGRpcioJCSAgPTEgKGRlZmF1bHQpIGtlZXAgY3VycmVudCBkaXJlY3RvcnkgaW1tdW5lIGZyb20KIAkJCQkgICB0aGUgYnJvd3NpbmcgZGlyZWN0b3J5LgogCQkJCT0wIGtlZXAgdGhlIGN1cnJlbnQgZGlyZWN0b3J5IHRoZSBzYW1lIGFzIHRoZQogCQkJCSAgIGJyb3dzaW5nIGRpcmVjdG9yeS4KIAkJCQlUaGUgY3VycmVudCBicm93c2luZyBkaXJlY3RvcnkgaXMgY29udGFpbmVkIGluCiAJCQkJYjpuZXRyd19jdXJkaXIgKGFsc28gc2VlIHxuZXRydy1jfCkKIAotICAqZzpuZXRyd19saXN0X2NtZCoJCWNvbW1hbmQgZm9yIGxpc3RpbmcgcmVtb3RlIGRpcmVjdG9yaWVzCisgICpnOm5ldHJ3X2xpc3RfY21kKgkJICBjb21tYW5kIGZvciBsaXN0aW5nIHJlbW90ZSBkaXJlY3RvcmllcwogCQkJCSBkZWZhdWx0OiAoaWYgc3NoIGlzIGV4ZWN1dGFibGUpCiAJCQkJICAgICAgICAgICJzc2ggSE9TVE5BTUUgbHMgLUZMYSIKIAotICAqZzpuZXRyd19saXN0c3R5bGUqCQlTZXQgdGhlIGRlZmF1bHQgbGlzdGluZyBzdHlsZToKKyAgKmc6bmV0cndfbGlzdHN0eWxlKgkJICBTZXQgdGhlIGRlZmF1bHQgbGlzdGluZyBzdHlsZToKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAwOiB0aGluIGxpc3RpbmcgKG9uZSBmaWxlIHBlciBsaW5lKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IDE6IGxvbmcgbGlzdGluZyAob25lIGZpbGUgcGVyIGxpbmUgd2l0aCB0aW1lCiAJCQkJICAgICBzdGFtcCBpbmZvcm1hdGlvbiBhbmQgZmlsZSBzaXplKQogCQkJCT0gMjogd2lkZSBsaXN0aW5nIChtdWx0aXBsZSBmaWxlcyBpbiBjb2x1bW5zKQogCQkJCT0gMzogdHJlZSBzdHlsZSBsaXN0aW5nCi0gICpnOm5ldHJ3X2xpc3RfaGlkZSoJCWNvbW1hIHNlcGFyYXRlZCBwYXR0ZXJuIGxpc3QgZm9yIGhpZGluZyBmaWxlcworICAqZzpuZXRyd19saXN0X2hpZGUqCQkgIGNvbW1hIHNlcGFyYXRlZCBwYXR0ZXJuIGxpc3QgZm9yIGhpZGluZyBmaWxlcwogCQkJCVBhdHRlcm5zIGFyZSByZWd1bGFyIGV4cHJlc3Npb25zIChzZWUgfHJlZ2V4cHwpCiAJCQkJRXhhbXBsZTogbGV0IGc6bmV0cndfbGlzdF9oaWRlPSAnLipcLnN3cCQnCiAJCQkJIGRlZmF1bHQ6ICIiCiAKLSAgKmc6bmV0cndfbG9jYWxjb3B5Y21kKgk9ImNwIiBMaW51eC9Vbml4L01hY09TL0N5Z3dpbgorICAqZzpuZXRyd19sb2NhbGNvcHljbWQqCSAgPSJjcCIgTGludXgvVW5peC9NYWNPUy9DeWd3aW4KIAkJCQk9ImNvcHkiIFdpbmRvd3MKIAkJCQlDb3BpZXMgbWFya2VkIGZpbGVzICh8bmV0cnctbWZ8KSB0byB0YXJnZXQKIAkJCQlkaXJlY3RvcnkgKHxuZXRydy1tdHwsIHxuZXRydy1tY3wpCiAKLSAgKmc6bmV0cndfbG9jYWxtb3ZlY21kKgk9Im12IiBMaW51eC9Vbml4L01hY09TL0N5Z3dpbgorICAqZzpuZXRyd19sb2NhbG1vdmVjbWQqCSAgPSJtdiIgTGludXgvVW5peC9NYWNPUy9DeWd3aW4KIAkJCQk9Im1vdmUiIFdpbmRvd3MKIAkJCQlNb3ZlcyBtYXJrZWQgZmlsZXMgKHxuZXRydy1tZnwpIHRvIHRhcmdldAogCQkJCWRpcmVjdG9yeSAofG5ldHJ3LW10fCwgfG5ldHJ3LW1tfCkKIAotICAqZzpuZXRyd19sb2NhbF9ta2RpcioJCWNvbW1hbmQgZm9yIG1ha2luZyBhIGxvY2FsIGRpcmVjdG9yeQorICAqZzpuZXRyd19sb2NhbF9ta2RpcioJCSAgY29tbWFuZCBmb3IgbWFraW5nIGEgbG9jYWwgZGlyZWN0b3J5CiAJCQkJIGRlZmF1bHQ6ICJta2RpciIKIAotICAqZzpuZXRyd19sb2NhbF9ybWRpcioJCXJlbW92ZSBkaXJlY3RvcnkgY29tbWFuZCAocm1kaXIpCisgICpnOm5ldHJ3X2xvY2FsX3JtZGlyKgkJICByZW1vdmUgZGlyZWN0b3J5IGNvbW1hbmQgKHJtZGlyKQogCQkJCSBkZWZhdWx0OiAicm1kaXIiCiAKLSAgKmc6bmV0cndfbWF4ZmlsZW5hbWVsZW4qCT0zMiBieSBkZWZhdWx0LCBzZWxlY3RlZCBzbyBhcyB0byBtYWtlIGxvbmcKKyAgKmc6bmV0cndfbWF4ZmlsZW5hbWVsZW4qCSAgPTMyIGJ5IGRlZmF1bHQsIHNlbGVjdGVkIHNvIGFzIHRvIG1ha2UgbG9uZwogCQkJCSAgICBsaXN0aW5ncyBmaXQgb24gODAgY29sdW1uIGRpc3BsYXlzLgogCQkJCUlmIHlvdXIgc2NyZWVuIGlzIHdpZGVyLCBhbmQgeW91IGhhdmUgZmlsZQogCQkJCW9yIGRpcmVjdG9yeSBuYW1lcyBsb25nZXIgdGhhbiAzMiBieXRlcywKIAkJCQl5b3UgbWF5IHNldCB0aGlzIG9wdGlvbiB0byBrZWVwIGxpc3RpbmdzCiAJCQkJY29sdW1uYXIuCiAKLSAgKmc6bmV0cndfbWtkaXJfY21kKgkJY29tbWFuZCBmb3IgbWFraW5nIGEgcmVtb3RlIGRpcmVjdG9yeQorICAqZzpuZXRyd19ta2Rpcl9jbWQqCQkgIGNvbW1hbmQgZm9yIG1ha2luZyBhIHJlbW90ZSBkaXJlY3RvcnkKIAkJCQkgZGVmYXVsdDogInNzaCBVU0VQT1JUIEhPU1ROQU1FIG1rZGlyIgogCi0gICpnOm5ldHJ3X21vdXNlbWFwcyoJCT0xIChkZWZhdWx0KSBlbmFibGVzIHRoZSBtb3VzZSBidXR0b25zCisgICpnOm5ldHJ3X21vdXNlbWFwcyoJCSAgPTEgKGRlZmF1bHQpIGVuYWJsZXMgdGhlIG1vdXNlIGJ1dHRvbnMKIAkJCQkgICB3aGlsZSBicm93c2luZzoKIAkJCQkgICAgIGxlZnRtb3VzZSAgICAgICA6IG9wZW4gZmlsZS9kaXJlY3RvcnkKIAkJCQkgICAgIHNoaWZ0LWxlZnRtb3VzZSA6IG1hcmsgZmlsZQpAQCAtMjExMSw3ICsyMTY2LDcgQEAKIAkJCQkgICAgIHJpZ2h0bW91c2UgICAgICA6IHJlbW92ZSBmaWxlL2RpcmVjdG9yeQogCQkJCT0wOiBkaXNhYmxlcyBtb3VzZSBtYXBzCiAKLSAgKmc6bmV0cndfcmV0bWFwKgkJaWYgaXQgZXhpc3RzIGFuZCBpcyBzZXQgdG8gb25lLCB0aGVuOgorICAqZzpuZXRyd19yZXRtYXAqCQkgIGlmIGl0IGV4aXN0cyBhbmQgaXMgc2V0IHRvIG9uZSwgdGhlbjoKIAkJCQkgKiBpZiBpbiBhIG5ldHJ3LXNlbGVjdGVkIGZpbGUsIEFORAogCQkJCSAqIG5vIG5vcm1hbC1tb2RlIDwyLWxlZnRtb3VzZT4gbWFwcGluZyBleGlzdHMsCiAJCQkJdGhlbiB0aGUgPDItbGVmdG1vdXNlPiB3aWxsIGJlIG1hcHBlZCBmb3IgZWFzeQpAQCAtMjEzMCwyMiArMjE4NSwyMiBAQAogCiAJCQkJICBkZWZhdWx0OiA9MAogCi0gICpnOm5ldHJ3X3JtX2NtZCoJCWNvbW1hbmQgZm9yIHJlbW92aW5nIGZpbGVzCisgICpnOm5ldHJ3X3JtX2NtZCoJCSAgY29tbWFuZCBmb3IgcmVtb3ZpbmcgZmlsZXMKIAkJCQkgZGVmYXVsdDogInNzaCBVU0VQT1JUIEhPU1ROQU1FIHJtIgogCi0gICpnOm5ldHJ3X3JtZGlyX2NtZCoJCWNvbW1hbmQgZm9yIHJlbW92aW5nIGRpcmVjdG9yaWVzCisgICpnOm5ldHJ3X3JtZGlyX2NtZCoJCSAgY29tbWFuZCBmb3IgcmVtb3ZpbmcgZGlyZWN0b3JpZXMKIAkJCQkgZGVmYXVsdDogInNzaCBVU0VQT1JUIEhPU1ROQU1FIHJtZGlyIgogCi0gICpnOm5ldHJ3X3JtZl9jbWQqCQkgY29tbWFuZCBmb3IgcmVtb3Zpbmcgc29mdGxpbmtzCisgICpnOm5ldHJ3X3JtZl9jbWQqCQkgICBjb21tYW5kIGZvciByZW1vdmluZyBzb2Z0bGlua3MKIAkJCQkgZGVmYXVsdDogInNzaCBVU0VQT1JUIEhPU1ROQU1FIHJtIC1mIgogCi0gICpnOm5ldHJ3X3NvcnRfYnkqCQlzb3J0IGJ5ICJuYW1lIiwgInRpbWUiLCBvciAic2l6ZSIKKyAgKmc6bmV0cndfc29ydF9ieSoJCSAgc29ydCBieSAibmFtZSIsICJ0aW1lIiwgb3IgInNpemUiCiAJCQkJIGRlZmF1bHQ6ICJuYW1lIgogCi0gICpnOm5ldHJ3X3NvcnRfZGlyZWN0aW9uKglzb3J0aW5nIGRpcmVjdGlvbjogIm5vcm1hbCIgb3IgInJldmVyc2UiCisgICpnOm5ldHJ3X3NvcnRfZGlyZWN0aW9uKgkgIHNvcnRpbmcgZGlyZWN0aW9uOiAibm9ybWFsIiBvciAicmV2ZXJzZSIKIAkJCQkgZGVmYXVsdDogIm5vcm1hbCIKIAotICAqZzpuZXRyd19zb3J0X29wdGlvbnMqCXNvcnRpbmcgaXMgZG9uZSB1c2luZyB8OnNvcnR8OyB0aGlzCisgICpnOm5ldHJ3X3NvcnRfb3B0aW9ucyoJICBzb3J0aW5nIGlzIGRvbmUgdXNpbmcgfDpzb3J0fDsgdGhpcwogCQkJCXZhcmlhYmxlJ3MgdmFsdWUgaXMgYXBwZW5kZWQgdG8gdGhlCiAJCQkJc29ydCBjb21tYW5kLiAgVGh1cyBvbmUgbWF5IGlnbm9yZSBjYXNlLAogCQkJCWZvciBleGFtcGxlLCB3aXRoIHRoZSBmb2xsb3dpbmcgaW4geW91cgpAQCAtMjE1MywxNCArMjIwOCwxNCBAQAogCQkJCQlsZXQgZzpuZXRyd19zb3J0X29wdGlvbnM9ImkiCiA8CQkJCSBkZWZhdWx0OiAiIgogCi0gICpnOm5ldHJ3X3NvcnRfc2VxdWVuY2UqCXdoZW4gc29ydGluZyBieSBuYW1lLCBmaXJzdCBzb3J0IGJ5IHRoZQorICAqZzpuZXRyd19zb3J0X3NlcXVlbmNlKgkgIHdoZW4gc29ydGluZyBieSBuYW1lLCBmaXJzdCBzb3J0IGJ5IHRoZQogCQkJCWNvbW1hLXNlcGFyYXRlZCBwYXR0ZXJuIHNlcXVlbmNlLiAgTm90ZSB0aGF0CiAJCQkJdGhlIGZpbGlncmVlIGFkZGVkIHRvIGluZGljYXRlIGZpbGV0eXBlcwogCQkJCXNob3VsZCBiZSBhY2NvdW50ZWQgZm9yIGluIHlvdXIgcGF0dGVybi4KIAkJCQkgZGVmYXVsdDogJ1tcL10kLCosXC5iYWskLFwubyQsXC5oJCwKIAkJCQkgICAgICAgICAgIFwuaW5mbyQsXC5zd3AkLFwub2JqJCcKIAotICAqZzpuZXRyd19zcGVjaWFsX3N5bnRheCoJSWYgdHJ1ZSwgdGhlbiBjZXJ0YWluIGZpbGVzIHdpbGwgYmUgc2hvd24KKyAgKmc6bmV0cndfc3BlY2lhbF9zeW50YXgqCSAgSWYgdHJ1ZSwgdGhlbiBjZXJ0YWluIGZpbGVzIHdpbGwgYmUgc2hvd24KIAkJCQlpbiBzcGVjaWFsIHN5bnRheCBpbiB0aGUgYnJvd3NlcjoKIAogCQkJCQluZXRyd0JhayAgICAgOiAqLmJhawpAQCAtMjE3MSw3ICsyMjI2LDcgQEAKIAkJCQkJbmV0cndNYWtlZmlsZTogW21NXWFrZWZpbGUgKi5tYWsKIAkJCQkJbmV0cndPYmogICAgIDogKi5vICoub2JqCiAJCQkJCW5ldHJ3VGFncyAgICA6IHRhZ3MgQU5tZW51IEFOdGFncwotCQkJCQluZXRyd1RpbGRlICAgOiAqfiAKKwkJCQkJbmV0cndUaWxkZSAgIDogKn4KIAkJCQkJbmV0cndUbXAgICAgIDogdG1wKiAqdG1wCiAKIAkJCQlUaGVzZSBzeW50YXggaGlnaGxpZ2h0aW5nIGdyb3VwcyBhcmUgbGlua2VkCkBAIC0yMTgyLDEyICsyMjM3LDEyIEBACiA8CQkJCWludG8gb25lJ3MgPC52aW1yYz4gdG8gdXNlIG9uZSdzIG93bgogCQkJCXByZWZlcmVuY2VzLgogCi0gICpnOm5ldHJ3X3NzaF9jbWQqCQlPbmUgbWF5IHNwZWNpZnkgYW4gZXhlY3V0YWJsZSBjb21tYW5kCisgICpnOm5ldHJ3X3NzaF9jbWQqCQkgIE9uZSBtYXkgc3BlY2lmeSBhbiBleGVjdXRhYmxlIGNvbW1hbmQKIAkJCQl0byB1c2UgaW5zdGVhZCBvZiBzc2ggZm9yIHJlbW90ZSBhY3Rpb25zCiAJCQkJc3VjaCBhcyBsaXN0aW5nLCBmaWxlIHJlbW92YWwsIGV0Yy4KIAkJCQkgZGVmYXVsdDogc3NoCiAKLSAgKmc6bmV0cndfc3NoX2Jyb3dzZV9yZWplY3QqCXNzaCBjYW4gc29tZXRpbWVzIHByb2R1Y2UgdW53YW50ZWQgbGluZXMsCisgICpnOm5ldHJ3X3NzaF9icm93c2VfcmVqZWN0KgkgIHNzaCBjYW4gc29tZXRpbWVzIHByb2R1Y2UgdW53YW50ZWQgbGluZXMsCiAJCQkJbWVzc2FnZXMsIGJhbm5lcnMsIGFuZCB3aGF0bm90IHRoYXQgb25lIGRvZXNuJ3QKIAkJCQl3YW50IG1hc3F1ZXJhZGluZyBhcyAiZGlyZWN0b3JpZXMiIGFuZCAiZmlsZXMiLgogCQkJCVVzZSB0aGlzIHBhdHRlcm4gdG8gcmVtb3ZlIHN1Y2ggZW1iZWRkZWQKQEAgLTIxOTUsMTEgKzIyNTAsMTEgQEAKIAkJCQkJICdedG90YWxcc1wrXGRcKyQnCiAKIAotICAqZzpuZXRyd190bXBmaWxlX2VzY2FwZSoJPScgJjsnCisgICpnOm5ldHJ3X3RtcGZpbGVfZXNjYXBlKgkgID0nICY7JwogCQkJCWVzY2FwZSgpIGlzIGFwcGxpZWQgdG8gYWxsIHRlbXBvcmFyeSBmaWxlcwogCQkJCXRvIGVzY2FwZSB0aGVzZSBjaGFyYWN0ZXJzLgogCi0gICpnOm5ldHJ3X3RpbWVmbXQqCQlzcGVjaWZ5IGZvcm1hdCBzdHJpbmcgdG8gdmltJ3Mgc3RyZnRpbWUoKS4KKyAgKmc6bmV0cndfdGltZWZtdCoJCSAgc3BlY2lmeSBmb3JtYXQgc3RyaW5nIHRvIHZpbSdzIHN0cmZ0aW1lKCkuCiAJCQkJVGhlIGRlZmF1bHQsICIlYyIsIGlzICJ0aGUgcHJlZmVycmVkIGRhdGUKIAkJCQlhbmQgdGltZSByZXByZXNlbnRhdGlvbiBmb3IgdGhlIGN1cnJlbnQKIAkJCQlsb2NhbGUiIGFjY29yZGluZyB0byBteSBtYW5wYWdlIGVudHJ5IGZvcgpAQCAtMjIwOSw3ICsyMjY0LDcgQEAKIAkJCQkgIiAlYSAlWS0lbS0lZCAgJUktJU0tJVMgJXAiCiAJCQkJIGRlZmF1bHQ6ICIlYyIKIAotICAqZzpuZXRyd191c2Vfbm9zd2YqCQluZXRydyBub3JtYWxseSBhdm9pZHMgd3JpdGluZyBzd2FwZmlsZXMKKyAgKmc6bmV0cndfdXNlX25vc3dmKgkJICBuZXRydyBub3JtYWxseSBhdm9pZHMgd3JpdGluZyBzd2FwZmlsZXMKIAkJCQlmb3IgYnJvd3NlciBidWZmZXJzLiAgSG93ZXZlciwgdW5kZXIgc29tZQogCQkJCXN5c3RlbXMgdGhpcyBhcHBhcmVudGx5IGlzIGNhdXNpbmcgbmFzdHkKIAkJCQltbF9nZXQgZXJyb3JzIHRvIGFwcGVhcjsgaWYgeW91J3JlIGdldHRpbmcKQEAgLTIyMTcsMTIgKzIyNzIsMTIgQEAKIAkJCQkgIGxldCBnOm5ldHJ3X3VzZV9ub3N3Zj0gMAogCQkJCWluIHlvdXIgLnZpbXJjLgogCi0gICpnOm5ldHJ3X3dpbnNpemUqCQlzcGVjaWZ5IGluaXRpYWwgc2l6ZSBvZiBuZXcgd2luZG93cyBtYWRlIHdpdGgKKyAgKmc6bmV0cndfd2luc2l6ZSoJCSAgc3BlY2lmeSBpbml0aWFsIHNpemUgb2YgbmV3IHdpbmRvd3MgbWFkZSB3aXRoCiAJCQkJIm8iIChzZWUgfG5ldHJ3LW98KSwgInYiIChzZWUgfG5ldHJ3LXZ8KSwKIAkJCQl8OkhleHBsb3JlfCBvciB8OlZleHBsb3JlfC4KIAkJCQkgZGVmYXVsdDogIiIKIAotICAqZzpuZXRyd194c3RybGVuKgkJQ29udHJvbHMgaG93IG5ldHJ3IGNvbXB1dGVzIHN0cmluZyBsZW5ndGhzLAorICAqZzpuZXRyd194c3RybGVuKgkJICBDb250cm9scyBob3cgbmV0cncgY29tcHV0ZXMgc3RyaW5nIGxlbmd0aHMsCiAJCQkJaW5jbHVkaW5nIG11bHRpLWJ5dGUgY2hhcmFjdGVycycgc3RyaW5nCiAJCQkJbGVuZ3RoLiAodGhhbmtzIHRvIE4gV2VpYnVsbCwgVCBNZWNoZWx5bmNrKQogCQkJCT0wOiB1c2VzIFZpbSdzIGJ1aWx0LWluIHN0cmxlbigpCkBAIC0yMjM4LDcgKzIyOTMsNyBAQAogCQkJCSAgICBpbW1lZGlhdGVseSBwcmVjZWRlZCBieSBsYW0sIG9uZQogCQkJCSAgICBvdGhlcndpc2UsIGV0YykKIAotICAqZzpOZXRyd1RvcEx2bE1lbnUqCQlUaGlzIHZhcmlhYmxlIHNwZWNpZmllcyB0aGUgdG9wIGxldmVsCisgICpnOk5ldHJ3VG9wTHZsTWVudSoJCSAgVGhpcyB2YXJpYWJsZSBzcGVjaWZpZXMgdGhlIHRvcCBsZXZlbAogCQkJCW1lbnUgbmFtZTsgYnkgZGVmYXVsdCwgaXQncyAiTmV0cncuIi4gIElmCiAJCQkJeW91IHdpc2ggdG8gY2hhbmdlIHRoaXMsIGRvIHNvIGluIHlvdXIKIAkJCQkudmltcmMuCkBAIC0yMjU0LDcgKzIzMDksNyBAQAogYXV0b2NoZGlyIHNldHMgdGhlIGN1cnJlbnQgZGlyZWN0b3J5IHRvIHRoYXQgY29udGFpbmluZyB0aGUgImZpbGUiIChldmVuIGlmCiB0aGF0ICJmaWxlIiBpcyBpdHNlbGYgYSBkaXJlY3RvcnkpLgogCi1ORVRSVyBTRVRUSU5HUwkJCQkJCSpuZXRydy1zZXR0aW5ncyoge3t7MgorTkVUUlcgQlJPV1NFUiBTRVRUSU5HUwkJCQkJCSpuZXRydy1zZXR0aW5ncyoge3t7MgogCiBXaXRoIHRoZSBOZXRyd1NldHRpbmdzLnZpbSBwbHVnaW4sID4KIAk6TmV0cndTZXR0aW5ncwpAQCAtMjI5OCw2ICsyMzUzLDcgQEAKICAgIGRpcmVjdG9yeSwgc2VlIHxnOm5ldHJ3X2tlZXBkaXJ8LgogCiAKKwkJCQkJCQkqbmV0cnctY3JlYXRlZmlsZSoKIE9QRU4gQSBORVcgRklMRSBJTiBORVRSVydTIENVUlJFTlQgRElSRUNUT1JZCQkqbmV0cnctJSoKIAogVG8gb3BlbiBhIGZpbGUgaW4gbmV0cncncyBjdXJyZW50IGRpcmVjdG9yeSwgcHJlc3MgIiUiLiAgVGhpcyBtYXAgd2lsbApAQCAtMjY1NSwxMyArMjcxMSwxMyBAQAogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAxMS4gRGVidWdnaW5nIE5ldHJ3IEl0c2VsZgkJCQkqbmV0cnctZGVidWcqIHt7ezEKIAotVGhlIDxuZXRydy52aW0+IHNjcmlwdCBpcyB0eXBpY2FsbHkgYXZhaWxhYmxlIGFzOgorVGhlIDxuZXRydy52aW0+IHNjcmlwdCBpcyB0eXBpY2FsbHkgYXZhaWxhYmxlIGFzIHNvbWV0aGluZyBsaWtlOgogPgotCS91c3IvbG9jYWwvc2hhcmUvdmltL3ZpbTZ4L3BsdWdpbi9uZXRyd1BsdWdpbi52aW0KLQkvdXNyL2xvY2FsL3NoYXJlL3ZpbS92aW02eC9hdXRvbG9hZC9uZXRydy52aW0KLTwgLW9yLSA+CiAJL3Vzci9sb2NhbC9zaGFyZS92aW0vdmltN3gvcGx1Z2luL25ldHJ3UGx1Z2luLnZpbQogCS91c3IvbG9jYWwvc2hhcmUvdmltL3ZpbTd4L2F1dG9sb2FkL25ldHJ3LnZpbQorPCAtb3ItID4KKwkvdXNyL2xvY2FsL3NoYXJlL3ZpbS92aW02eC9wbHVnaW4vbmV0cndQbHVnaW4udmltCisJL3Vzci9sb2NhbC9zaGFyZS92aW0vdmltNngvYXV0b2xvYWQvbmV0cncudmltCiA8CiB3aGljaCBpcyBsb2FkZWQgYXV0b21hdGljYWxseSBhdCBzdGFydHVwIChhc3N1bWluZyA6c2V0IG5vY3ApLgogCkBAIC0yNzA2LDYgKzI3NjIsMTYgQEAKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogMTIuIEhpc3RvcnkJCQkJCQkqbmV0cnctaGlzdG9yeSoge3t7MQogCisJdjE0MTogQXVnIDI4LCAyMDEwICogYWRkZWQgLXM6Li4uIHN1cHBvcnQgZm9yIFdpbmRvd3MgZnRwCisJCQkgICAqIHJlc3RvcmVkIDItbGVmdG1vdXNlIGZvciA6UmV4LWxpa2UgcmV0dXJuCisJCQkgICAqIGFkZGVkIGJhbGxvb24gaGVscCBmb3IgYmFubmVyCisJICAgICAgT2N0IDI2LCAyMDEwICogOlRleHBsb3JlIGNoYW5nZWQgdG8gc3RhcnQgZnJvbSBuZXRydydzIGlkZWEKKwkJCSAgICAgb2YgdGhlIGN1cnJlbnQgZGlyZWN0b3J5LCBub3QgcHdkJ3MKKwkgICAgICBGZWIgMTAsIDIwMTEgKiBuZXRyd1BsdWdpbiBtb2RpZmllZCB0byB1c2UgQnVmUmVhZENtZAorCQkJICAgICB3aGVuIHRoZSAiZmlsZW5hbWUiIGVuZHMgd2l0aCBhICIvIiBvciBhICJcIgorCQkJICAgICBBdm9pZHMgIi4uLiBpcyBhIGRpcmVjdG9yeSIgbWVzc2FnZSwgd29ya3MKKwkJCSAgICAgaW5zaWRlIGEgdHJ5LWNhdGNoLWVuZHRyeSBjbGF1c2UuCisJICAgICAgRmViIDIyLCAyMDExICogZm9yIG1lbnVzLCAmZ28gPX4jIHVzZWQgdG8gaW5zdXJlIGNvcnJlY3QgY2FzZQogCXYxNDA6IEp1bCAyNywgMjAxMCAqIChMZWNoIExvcmVucykgdW5leHBlY3RlZCBjaGFuZ2Ugb2Ygd2luZG93CiAJdjEzOTogTWF5IDE0LCAyMDEwICogd2hlbiB2aWV3aW5nIHJlbW90ZSBkaXJlY3RvcnkgbGlzdGluZ3MgYW5kCiAJCQkgICAgIGNoYW5naW5nIGxpc3Rpbmcgc3R5bGUsIGdvaW5nIHRvIHRyZWUgbGlzdGluZwpAQCAtMjczMiw3ICsyNzk4LDcgQEAKIAl2MTM3OiBEZWMgMjgsIDIwMDkgKiBtb2RpZmllZCB0aGUgcHJldmlldyB3aW5kb3cgaGFuZGxpbmcgZm9yCiAJCQkgICAgIHZlcnRpY2FsbHkgc3BsaXQgd2luZG93cy4gIFRoZSBwcmV2aWV3CiAJCQkgICAgIHdpbmRvdyB3aWxsIHRha2UgdXAgYWxsIGJ1dCBnOm5ldHJ3X3dpbnNpemUKLQkJCSAgICAgY29sdW1ucyBvZiB0aGUgb3JpZ2luYWwgd2luZG93OyB0aG9zZSAKKwkJCSAgICAgY29sdW1ucyBvZiB0aGUgb3JpZ2luYWwgd2luZG93OyB0aG9zZQogCQkJICAgICBnOm5ldHJ3X3dpbnNpemUgY29sdW1ucyB3aWxsIGJlIHVzZWQgZm9yCiAJCQkgICAgIHRoZSBuZXRydyBsaXN0aW5nLgogCQkJICAgKiAoU2ltb24gRGFtYmUpIHJlbW92ZWQgIn4iIGZyb20KZGlmZiAtLWdpdCBhL3J1bnRpbWUvZG9jL3N5bnRheC50eHQgYi9ydW50aW1lL2RvYy9zeW50YXgudHh0CmluZGV4IDIxMmFhNzcuLjZjMzkyNzQgMTAwNjQ0Ci0tLSBhL3J1bnRpbWUvZG9jL3N5bnRheC50eHQKKysrIGIvcnVudGltZS9kb2Mvc3ludGF4LnR4dApAQCAtMSw0ICsxLDQgQEAKLSpzeW50YXgudHh0KglGb3IgVmltIHZlcnNpb24gNy4zLiAgTGFzdCBjaGFuZ2U6IDIwMTEgSmFuIDIyCisqc3ludGF4LnR4dCoJRm9yIFZpbSB2ZXJzaW9uIDcuMy4gIExhc3QgY2hhbmdlOiAyMDExIEFwciAwMQogCiAKIAkJICBWSU0gUkVGRVJFTkNFIE1BTlVBTAkgIGJ5IEJyYW0gTW9vbGVuYWFyCkBAIC0zMjIzLDYgKzMyMjMsOSBAQAogICAgOmhpIHBhcjEgY3Rlcm1mZz1yZWQgZ3VpZmc9cmVkCiAgICA6aGkgcGFyMiBjdGVybWZnPWJsdWUgZ3VpZmc9Ymx1ZQogICAgOmhpIHBhcjMgY3Rlcm1mZz1kYXJrZ3JlZW4gZ3VpZmc9ZGFya2dyZWVuCis8CisJCQkJCQkqRTg0OSoKK1RoZSBtYXhpbXVtIG51bWJlciBvZiBzeW50YXggZ3JvdXBzIGlzIDE5OTk5LgogCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIDYuIDpzeW50YXggYXJndW1lbnRzCQkJCQkqOnN5bi1hcmd1bWVudHMqCkBAIC0zNzYxLDYgKzM3NjQsOSBAQAogICAgOnN5bnRheCBtYXRjaCBTdHVmZiAiKCBhYWEgYmJiICkiIGNvbnRhaW5zPUBCaWdHcm91cAogICAgOnN5bnRheCBjbHVzdGVyIEJpZ0dyb3VwIHJlbW92ZT1CCSIgbm8gZWZmZWN0LCBzaW5jZSBCIGlzbid0IGluIEJpZ0dyb3VwCiAgICA6c3ludGF4IGNsdXN0ZXIgU21hbGxHcm91cCByZW1vdmU9QgkiIG5vdyBiYmIgaXNuJ3QgbWF0Y2hlZCB3aXRoaW4gU3R1ZmYKKzwKKwkJCQkJCSpFODQ4KgorVGhlIG1heGltdW0gbnVtYmVyIG9mIGNsdXN0ZXJzIGlzIDk3NjcuCiAKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogOS4gSW5jbHVkaW5nIHN5bnRheCBmaWxlcwkJCQkqOnN5bi1pbmNsdWRlKiAqRTM5NyoKQEAgLTM4MDAsNiArMzgwNiw5IEBACiAJICB3aXRoIGhpcyBvd24gdmVyc2lvbiwgd2l0aG91dCByZXBsYWNpbmcgdGhlIGZpbGUgdGhhdCBkb2VzIHRoZSAiOnN5bgogCSAgaW5jbHVkZSIuCiAKKwkJCQkJCSpFODQ3KgorVGhlIG1heGltdW0gbnVtYmVyIG9mIGluY2x1ZGVzIGlzIDk5OS4KKwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAxMC4gU3luY2hyb25pemluZwkJCQkqOnN5bi1zeW5jKiAqRTQwMyogKkU0MDQqCiAKZGlmZiAtLWdpdCBhL3J1bnRpbWUvZG9jL3RhZ3MgYi9ydW50aW1lL2RvYy90YWdzCmluZGV4IGRjYzExYzguLmJlZTM5YzEgMTAwNjQ0Ci0tLSBhL3J1bnRpbWUvZG9jL3RhZ3MKKysrIGIvcnVudGltZS9kb2MvdGFncwpAQCAtNDIyOSw2ICs0MjI5LDEwIEBACiBFODQzCWVkaXRpbmcudHh0CS8qRTg0MyoKIEU4NDQJc3ludGF4LnR4dAkvKkU4NDQqCiBFODQ1CXNwZWxsLnR4dAkvKkU4NDUqCitFODQ2CW9wdGlvbnMudHh0CS8qRTg0NioKK0U4NDcJc3ludGF4LnR4dAkvKkU4NDcqCitFODQ4CXN5bnRheC50eHQJLypFODQ4KgorRTg0OQlzeW50YXgudHh0CS8qRTg0OSoKIEU4NQlvcHRpb25zLnR4dAkvKkU4NSoKIEU4Ngl3aW5kb3dzLnR4dAkvKkU4NioKIEU4Nwl3aW5kb3dzLnR4dAkvKkU4NyoKQEAgLTQ4NjEsNiArNDg2NSw4IEBACiBjXzxTLVVwPgljbWRsaW5lLnR4dAkvKmNfPFMtVXA+KgogY188VGFiPgljbWRsaW5lLnR4dAkvKmNfPFRhYj4qCiBjXzxVcD4JY21kbGluZS50eHQJLypjXzxVcD4qCitjX0JTCWNtZGxpbmUudHh0CS8qY19CUyoKK2NfQ1IJY21kbGluZS50eHQJLypjX0NSKgogY19DVFJMLUEJY21kbGluZS50eHQJLypjX0NUUkwtQSoKIGNfQ1RSTC1CCWNtZGxpbmUudHh0CS8qY19DVFJMLUIqCiBjX0NUUkwtQwljbWRsaW5lLnR4dAkvKmNfQ1RSTC1DKgpAQCAtNDg5Myw2ICs0ODk5LDE1IEBACiBjX0NUUkwtXQljbWRsaW5lLnR4dAkvKmNfQ1RSTC1dKgogY19DVFJMLV4JY21kbGluZS50eHQJLypjX0NUUkwtXioKIGNfQ1RSTC1fCWNtZGxpbmUudHh0CS8qY19DVFJMLV8qCitjX0RlbAljbWRsaW5lLnR4dAkvKmNfRGVsKgorY19Eb3duCWNtZGxpbmUudHh0CS8qY19Eb3duKgorY19FbmQJY21kbGluZS50eHQJLypjX0VuZCoKK2NfRXNjCWNtZGxpbmUudHh0CS8qY19Fc2MqCitjX0hvbWUJY21kbGluZS50eHQJLypjX0hvbWUqCitjX0luc2VydAljbWRsaW5lLnR4dAkvKmNfSW5zZXJ0KgorY19MZWZ0CWNtZGxpbmUudHh0CS8qY19MZWZ0KgorY19SaWdodAljbWRsaW5lLnR4dAkvKmNfUmlnaHQqCitjX1VwCWNtZGxpbmUudHh0CS8qY19VcCoKIGNfZGlncmFwaAljbWRsaW5lLnR4dAkvKmNfZGlncmFwaCoKIGNfd2lsZGNoYXIJY21kbGluZS50eHQJLypjX3dpbGRjaGFyKgogY2FsbCgpCWV2YWwudHh0CS8qY2FsbCgpKgpAQCAtNTc1MCwxMCArNTc2NSwxMSBAQAogZzpuZXRyd19jaGd3aW4JcGlfbmV0cncudHh0CS8qZzpuZXRyd19jaGd3aW4qCiBnOm5ldHJ3X2NvbXByZXNzCXBpX25ldHJ3LnR4dAkvKmc6bmV0cndfY29tcHJlc3MqCiBnOm5ldHJ3X2N0YWdzCXBpX25ldHJ3LnR4dAkvKmc6bmV0cndfY3RhZ3MqCi1nOm5ldHJ3X2N1cnNvcmxpbmUJcGlfbmV0cncudHh0CS8qZzpuZXRyd19jdXJzb3JsaW5lKgorZzpuZXRyd19jdXJzb3IJcGlfbmV0cncudHh0CS8qZzpuZXRyd19jdXJzb3IqCiBnOm5ldHJ3X2N5Z3dpbglwaV9uZXRydy50eHQJLypnOm5ldHJ3X2N5Z3dpbioKIGc6bmV0cndfZGF2X2NtZAlwaV9uZXRydy50eHQJLypnOm5ldHJ3X2Rhdl9jbWQqCiBnOm5ldHJ3X2RlY29tcHJlc3MJcGlfbmV0cncudHh0CS8qZzpuZXRyd19kZWNvbXByZXNzKgorZzpuZXRyd19kaXJoaXN0bWF4CXBpX25ldHJ3LnR4dAkvKmc6bmV0cndfZGlyaGlzdG1heCoKIGc6bmV0cndfZmFzdGJyb3dzZQlwaV9uZXRydy50eHQJLypnOm5ldHJ3X2Zhc3Ricm93c2UqCiBnOm5ldHJ3X2ZldGNoX2NtZAlwaV9uZXRydy50eHQJLypnOm5ldHJ3X2ZldGNoX2NtZCoKIGc6bmV0cndfZm5hbWVfZXNjYXBlCXBpX25ldHJ3LnR4dAkvKmc6bmV0cndfZm5hbWVfZXNjYXBlKgpAQCAtNjcxMCw2ICs2NzI2LDcgQEAKIG5ldHJ3LWNvbnRlbnRzCXBpX25ldHJ3LnR4dAkvKm5ldHJ3LWNvbnRlbnRzKgogbmV0cnctY29weXJpZ2h0CXBpX25ldHJ3LnR4dAkvKm5ldHJ3LWNvcHlyaWdodCoKIG5ldHJ3LWNyCXBpX25ldHJ3LnR4dAkvKm5ldHJ3LWNyKgorbmV0cnctY3JlYXRlZmlsZQlwaV9uZXRydy50eHQJLypuZXRydy1jcmVhdGVmaWxlKgogbmV0cnctY3JlZGl0cwlwaV9uZXRydy50eHQJLypuZXRydy1jcmVkaXRzKgogbmV0cnctY3RybC1oCXBpX25ldHJ3LnR4dAkvKm5ldHJ3LWN0cmwtaCoKIG5ldHJ3LWN0cmwtbAlwaV9uZXRydy50eHQJLypuZXRydy1jdHJsLWwqCkBAIC02NzMzLDcgKzY3NTAsOSBAQAogbmV0cnctZnRwCXBpX25ldHJ3LnR4dAkvKm5ldHJ3LWZ0cCoKIG5ldHJ3LWZ0eXBlCXBpX25ldHJ3LnR4dAkvKm5ldHJ3LWZ0eXBlKgogbmV0cnctZ2IJcGlfbmV0cncudHh0CS8qbmV0cnctZ2IqCituZXRydy1nZAlwaV9uZXRydy50eHQJLypuZXRydy1nZCoKIG5ldHJ3LWdldGZ0eXBlCXBpX25ldHJ3LnR4dAkvKm5ldHJ3LWdldGZ0eXBlKgorbmV0cnctZ2YJcGlfbmV0cncudHh0CS8qbmV0cnctZ2YqCiBuZXRydy1naAlwaV9uZXRydy50eHQJLypuZXRydy1naCoKIG5ldHJ3LWdwCXBpX25ldHJ3LnR4dAkvKm5ldHJ3LWdwKgogbmV0cnctZ3gJcGlfbmV0cncudHh0CS8qbmV0cnctZ3gqCmRpZmYgLS1naXQgYS9ydW50aW1lL2RvYy90b2RvLnR4dCBiL3J1bnRpbWUvZG9jL3RvZG8udHh0CmluZGV4IGU2ZWZmZDkuLmY3YTk2YjYgMTAwNjQ0Ci0tLSBhL3J1bnRpbWUvZG9jL3RvZG8udHh0CisrKyBiL3J1bnRpbWUvZG9jL3RvZG8udHh0CkBAIC0xLDQgKzEsNCBAQAotKnRvZG8udHh0KiAgICAgIEZvciBWaW0gdmVyc2lvbiA3LjMuICBMYXN0IGNoYW5nZTogMjAxMSBNYXIgMjIKKyp0b2RvLnR4dCogICAgICBGb3IgVmltIHZlcnNpb24gNy4zLiAgTGFzdCBjaGFuZ2U6IDIwMTEgQXByIDAxCiAKIAogCQkgIFZJTSBSRUZFUkVOQ0UgTUFOVUFMCSAgYnkgQnJhbSBNb29sZW5hYXIKQEAgLTMwLDEyOSArMzAsMjEgQEAKIAkJCQkJCQkqa25vd24tYnVncyoKIC0tLS0tLS0tLS0tLS0tLS0tLS0tIEtub3duIGJ1Z3MgYW5kIGN1cnJlbnQgd29yayAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi1UaGUgOnogY29tbWFuZCBkb2Vzbid0IHdvcmsgZXhhY3RseSBhcyBpdCBzaG91bGQuIChDaGFuZ1podW8gQ2hlbiwgMjAxMSBNYXIgMikKLUNvbXBhcmUgd2l0aCBob3cgb2xkIFZpIHdvcmtzIGFuZCB3aXRoIHBvc2l4IHNwZWMuICB0ZXJtaW5hbCBpcyA4MCB4IDI0LAotJ3Njcm9sbCcgb3B0aW9uIHNldCB0byAxMS4KLQotQ3Jhc2ggd2l0aCAiOnB5dGhvbiBoZWxwKGRpcikiLiAoS2Vhcm4gSG9sbGlkYXksIDIwMTEgTWFyIDE5KQotSSBjYW4gcmVwcm9kdWNlIGl0LiAgRG9uJ3Qga25vdyB3aHkgaXQgaGFwcGVucy4KLQotJ2N1cnNvcmxpbmUnIGlzIGRpc3BsYXllZCB0b28gc2hvcnQgd2hlbiB0aGVyZSBhcmUgY29uY2VhbGVkIGNoYXJhY3RlcnMgYW5kCi0nbGlzdCcgaXMgc2V0LiAgKERlbm5pcyBQcmVpc2VyKQotUGF0Y2ggNy4zLjExNiB3YXMgdGhlIHdyb25nIHNvbHV0aW9uLgotCi1XaGVuIG9wZW5pbmcgZmlsZSBmcm9tIHdpbmRvd3MgZXhwbG9yZXIsIGNoYXJhY3RlcnMgaW5zaWRlIFtdIGNhdXNlCi1wcm9ibGVtcywgZXZlbiB0aG91Z2ggZG91YmxlIHF1b3RlcyBhcmUgdXNlZC4gKE1hbnVlbCBTdG9sLCAyMDExIE1hciA5KQotCi1QYXRjaCBmb3IgVmltIGluZGVudCBmaWxlLiAoQ29jdWxhciwgMjAxMSBNYXIpCi0KLTpoZWxwIGNfRXNjIHNob3VsZCB3b3JrLCBidXQgb25seSA6aGVscCBjXzxFc2M+IGRvZXMuCi0KLVBhdGNoIHRvIGNoYW5nZSB0aGUgbWVhbmluZyBvZiBcbiBpbiBzdWJzdGl0dXRlKCkuIChtb3RveWEga3Vyb3RzdSwgMjAxMSBNYXIgOCkKLQotTmV3IHZlcnNpb24gb2YgUGFzY2FsIGluZGVudCBmaWxlLiAoTmVpbCBDYXJ0ZXIsIDIwMTEgTWFyIDkpCi0KLUhlbHAgZmlsZSBmb2xkZXhwciAoWnlYKQotCi11cHN0YXJ0IHN5bnRheCBmaWxlIChKYW1lcyBIdW50LCBNYXIgMTEgMjAxMSkKLQotU3ludGF4IHJlZ2lvbiB3aXRoICdjb25jZWFsZW5kcycgYW5kIGEgJ2NjaGFyJyB2YWx1ZSwgJ2NvbmNlYWxsZXZlbCcgc2V0IHRvIDIsCi1vbmx5IG9uZSBvZiB0aGUgdHdvIGVuZHMgZ2V0cyB0aGUgY2NoYXIgZGlzcGxheWVkLiAoQnJldHQgU3RhaGxtYW4sIDIwMTAgQXVnCi0yMSwgQmVuIEZyaXR6LCAyMDEwIFNlcCAxNCkKLQotQnVnIGluIHJlcGVhdGluZyBWaXN1YWwgInUiLiAoTGF3cmVuY2UgS2VzdGVsb290LCAyMDEwIERlYyAyMCkKLQotQ3Jhc2ggd2l0aCBiaWcgLnhwbSBmaWxlLiAoWXVraWhpcm8gTmFrYWRhaXJhLCAyMDExIEZlYiAxOCkKLVBhdGNoIGZyb20gQmVuIFNjaG1pZHQgKDIwMTEgTWFyIDMpLiAgTmVlZHMgc29tZSBtb3JlIHdvcmsuCi0KLVBhdGNoIGZvciBkaXNhcHBlYXJpbmcgY3Vyc29yIGFmdGVyIG5ldGJlYW5zIGNvbW1hbmQuIChYYXZpZXIgZGUgR2F5ZSwgMjAxMQotTWFyIDQpCi0KLVdpbmRvd3Mga2V5cyBub3Qgc2V0IHByb3Blcmx5IG9uIFdpbmRvd3MgNz8gIChjbmN5YmVyLCAyMDEwIEF1ZyAyNikKLQotQ29tcGlsZXIgc2NyaXB0cyBmb3IgZm9ydHJhbiAoSG9uZyBYdSwgMjAxMSBNYXJjaCAxOSkKLQotVGhpcyBsaW5lIGhhbmdzIFZpbSwgYmVjYXVzZSBvZiBzeW50YXggSEw6Ci1jYWxsIGFwcGVuZChsaW5lLCAiSU5GTyAgLi4uLjEyLi4uLjE4Li4uLjI0Li4uLjMwLi4uLjM2Li4uLjQyLi4uLjQ4Li4uLjU0Li4uLjYwLi4uLjY2Li4uLjcyLi4uLjc4JSQiKQotCi1CdWlsZGluZyB0aGUgTWluZ1cgdmVyc2lvbiB3aXRob3V0IGNsaXBib2FyZCBidXQgd2l0aCBtdWx0aS1ieXRlIGRvZXNuJ3QKLXdvcmsuIChCaWxsIExhbSwgMjAxMCBTZXAgMTgpCi0KLVBhdGNoIGZvciBoYW5kbGluZyBvZiBOTCBpbiBzdWJzdGl0dXRlKCkgd2l0aCBcPSBleHByZXNzaW9uLiAoTW90b3lhIEt1cm90c3UsCi0yMDExIE1hciAxNikKLQotV2hlbiB1c2luZyBhIFZpbSBzZXJ2ZXIsIGEgIyBpbiB0aGUgcGF0aCBjYXVzZXMgYW4gZXJyb3IgbWVzc2FnZS4KLShKZWZmIExhbnphcm90dGEsIDIwMTEgRmViIDE3KQotCi1CdWc6IEU2ODUgZXJyb3IgZm9yIGZ1bmNfdW5yZWYoKS4gKFp5WCwgMjAxMCBBdWcgNSkKLQotVXNpbmcgIjpicmVhayIgb3Igc29tZXRoaW5nIGVsc2UgdGhhdCBzdG9wcyBleGVjdXRpbmcgY29tbWFuZHMgaW5zaWRlIGEKLSI6ZmluYWxseSIgZG9lcyBub3QgcmV0aHJvdyBhIHByZXZpb3VzbHkgdW5jYXVnaHQgZXhjZXB0aW9uLiAoWnlYLCAyMDEwIE9jdAotMTUpCi0KLVZpbSB1c2luZyBsb3RzIG9mIG1lbW9yeSB3aGVuIGpvaW5pbmcgbGluZXMuIChKb2huIExpdHRsZSwgMjAxMCBEZWMgMykKLQotT24gNjQgYml0IE1TLVdpbmRvd3MgImxvbmciIGlzIG9ubHkgMzIgYml0cywgYnV0IHdlIHNvbWV0aW1lcyBuZWVkIHRvIHN0b3JlIGEKLTY0IGJpdHMgdmFsdWUuICBDaGFuZ2UgYWxsIG51bWJlciBvcHRpb25zIHRvIHVzZSBucm9wdF9UIGFuZCBkZWZpbmUgaXQgdG8gdGhlCi1yaWdodCB0eXBlLgotCi1QYXRjaCB0byBpbXByb3ZlIG1mX2hhc2gsIGR5bmFtaWMgc2l6aW5nLiAoSXZhbiBLcmFzaWxuaWtvdiwgMjAxMCBEZWMgMTcpCi1VcGRhdGUgd2l0aCB0ZXN0czogMjAxMSBGZWIgMjguCi0KLXN0cmluZygpIGNhbid0IHBhcnNlIGJhY2sgImluZiIgYW5kICJuYW4iLiAgRml4IGRvY3VtZW50YXRpb24gb3IgZml4IGNvZGU/Ci0oWnlYLCAyMDEwIEF1ZyAyMykKLQotbWFwYXJnKCkgZG9lcyBub3Qgc2hvdyB0aGUgPHNjcmlwdD4gZmxhZy4gIFdoZW4gdGVtcG9yYXJpbHkgY2hhbmdpbmcgYQotbWFwcGluZywgaG93IHRvIHJlc3RvcmUgdGhlIHNjcmlwdCBJRD8KLQotUGF0Y2ggdG8gZml4IFwlViBpdGVtIGluIHJlZ2V4cC4gKENocmlzdGlhbiBCcmFiYW5kdCwgMjAxMCBOb3YgOCkKLVVwZGF0ZSBOb3YgMTkuICBKYW1lcyBWZWdhOiBzdGlsbCBub3QgcmlnaHQuICBDaHJpc3RpYW46IGl0J3MgZGlmZmljdWx0LgotCi1QYXRjaCB0byBhZGQgdXAgdG8gOTkgbWF0Y2ggZ3JvdXBzLiAoQ2hyaXN0aWFuIEJyYWJhbmR0LCAyMDEwIERlYyAyMikKLUFsc28gYWRkIG5hbWVkIGdyb3VwczogXCV7bmFtZX0ocmUpICBhbmQgXCV7bmFtZX1nCi0KLUJ1ZyBpbiB0cnkvY2F0Y2g6IHJldHVybiB3aXRoIGludmFsaWQgY29tcGFyZSB0aHJvd3MgZXJyb3IgdGhhdCBpc24ndCBjYXVnaHQuCi0oWnlYLCAyMDExIEphbiAyNikKLQogSW1wcm92ZW1lbnQgcGF0Y2ggZm9yIGZpbGV0eXBlLnZpbS4gKFRoaWxvIFNpeCwgMjAxMSBNYXIgMTkpCiAKLVBhdGNoIGZvciAiKyBhbmQgIiogZ2V0dGluZyBzYW1lIHNlbGVjdGlvbiB3aGVuICJhIiBpcyBub3QgaW4gJ2d1aW9wdGlvbnMnLgotKEphbWVzIFZlZ2EsIDIwMTEgTWFyIDE3KQotCi1IaWdobGlnaHRpbmcgc3RvcHMgd29ya2luZyBhZnRlciBjaGFuZ2luZyBpdCBtYW55IHRpbWVzLiAgU2NyaXB0IHRvIHJlcHJvZHVjZQotaXQ6IFBhYmxvIENvbnRyZXJhcywgMjAxMCBPY3QgMTIgIFdpbmRvd3MgWFAgYW5kIDcuICBGb250IGlzIG5ldmVyIGZyZWVkPwotCi1BZnRlciBwYXRjaCA3LjMuMDk3IHN0aWxsIGdldCBFMTUuIChZdWtpaGlybyBOYWthZGFpcmEsIDIwMTEgSmFuIDE4KQotQWxzbyBmb3IgYW5vdGhlciBleGFtcGxlIChaeVgsIDIwMTEgSmFuIDI0KQotCi1CdWlsZCBwcm9ibGVtIHdpdGggc21hbGwgZmVhdHVyZXMgb24gTWFjIE9TIFggMTAuNi4gKFJhaW5lciwgMjAxMSBKYW4gMjQpCi0KLSIwZ0AkIiBwdXRzICddIG9uIGxhc3QgYnl0ZSBvZiBtdWx0aS1ieXRlLiAoWnlYLCAyMDExIEphbiAyMikKLQotRGVsZXRpbmcgYSBsaW5ld2lzZSBzZWxlY3Rpb24gdGhhdCBpbmNsdWRlcyB0aGUgbGFzdCBsaW5lIG9mIHRoZSBmaWxlIGxlYXZlcwotYW4gZW1wdHkgbGluZS4gKEJlbiBTY2htaWR0LCAyMDExIE1hciAxNykKLVBhdGNoIGJ5IENocmlzdGlhbiBCcmFiYW5kdCwgMjAxMSBNYXIgMTkuCitQYXRjaCB0byByZWNvZ25pemUgbW9yZSBmaWxlcyBhcyBsb2cgZmlsZXMuIChNYXRoaWV1IFBhcmVudCwgMjAxMSBKYW4gMTQpCiAKIFR3byBwYXRjaGVzIGZvciB4eGQuIChGbG9yaWFuIFp1bWJpZWhsLCAyMDExIEphbiAxMSkKIFR3byB1cGRhdGVzIGZvciBzZWNvbmQgb25lIEphbiAxMi4KIAotUHJvYmxlbSB3aXRoICJzeW4gc3luYyBnb3VwaGVyZSIuIChHdXN0YXZvIE5pZW1leWVyLCAyMDExIEphbiAyNykKLQotTG9hZGluZyBhdXRvbG9hZCBzY3JpcHQgZXZlbiB3aGVuIHVzYWdlIGlzIGluc2lkZSAiaWYgMCIuIChDaHJpc3RpYW4gQnJhYmFuZHQsCi0yMDEwIERlYyAxOCkKK0dvIHRocm91Z2ggbmV3IGNvdmVyaXR5IHJlcG9ydHMuCiAKIFdoZW4gJ2NvbG9yY29sdW1uJyBpcyBzZXQgbG9jYWxseSB0byBhIHdpbmRvdywgIjpuZXciIG9wZW5zIGEgd2luZG93IHdpdGggdGhlCiBzYW1lIGhpZ2hsaWdodGluZyBidXQgJ2NvbG9yY29sdW1uJyBpcyBlbXB0eS4gKFR5cnUsIDIwMTAgTm92IDE1KQogUGF0Y2ggYnkgQ2hyaXN0aWFuIEJyYWJhbmR0LCAyMDExIEZlYiAxMyAoYnV0IG1vdmUgZnVydGhlciBkb3duKS4KIAotSW4gdGhlIHNhbmRib3ggaXQncyBub3QgYWxsb3dlZCB0byBkbyBtYW55IHRoaW5ncywgYnV0IGl0J3MgcG9zc2libGUgdG8gY2hhbmdlCi1vciBzZXQgdmFyaWFibGVzLiAgQWRkIGEgd2F5IHRvIHByZXZlbnQgdmFyaWFibGVzIGZyb20gYmVpbmcgY2hhbmdlZCBpbiB0aGUKLXNhbmRib3g/ICBFLmcuOiAiOnByb3RlY3QgZzpyZXN0b3JlX3NldHRpbmdzIi4KLQogUGF0Y2ggZm9yIGNvbmZpZ3VyZSByZWxhdGVkIHRvIFJ1Ynkgb24gTWFjIE9TIFguIChCam9ybiBXaW5ja2xlciwgMjAxMSBKYW4gMTQpCiAKLVBhdGNoIHRvIHJlY29nbml6ZSBtb3JlIGZpbGVzIGFzIGxvZyBmaWxlcy4gKE1hdGhpZXUgUGFyZW50LCAyMDExIEphbiAxNCkKLQogUGF0Y2ggdG8gc2V0IHY6cmVnaXN0ZXIgb24gc3RhcnR1cC4gKEluZ28gS2Fya2F0LCAyMDExIEphbiAxNikKIAogUGF0Y2ggdG8gc2V0IHY6cmVnaXN0ZXIgZGVmYXVsdCBkZXBlbmRpbmcgb24gInVubmFtZWQiIGluICdjbGlwYm9hcmQnLiAoSW5nbwpAQCAtMTcwLDI4ICs2Miw5IEBACiAKIFBhdGNoIGZvciBjbWRsaW5lIGNvbXBsZXRpb24gb2YgIjpsYW5nIi4gIChEb21pbmlxdWUgUGVsbGUsIDIwMTEgRmViIDUpCiAKLUdUSzogZHJhd2luZyBhIGRvdWJsZS13aWR0aCBjb21iaW5pbmcgY2hhcmFjdGVyIG92ZXIgc2luZ2xlLXdpZHRoIGNoYXJhY3RlcnMKLWRvZXNuJ3QgbG9vayByaWdodC4gKERvbWluaXF1ZSBQZWxsZSwgMjAxMCBBdWcgOCkKLQotR1RLOiB0ZWFyLW9mZiBtZW51IGRvZXMgbm90IHdvcmsuIChLdXJ0IFNvbm5lbm1vc2VyLCAyMDEwIE9jdCAyNSkKLQotV2luMzI6IHRlYXItb2ZmIG1lbnUgZG9lcyBub3Qgd29yayB3aGVuIG1lbnUgbGFuZ3VhZ2UgaXMgR2VybWFuLiAoTWFya3VzCi1Cb3NzbGVyLCAyMDExIE1hciAyKSAgRml4ZWQgYnkgNy4zLjA5NT8KLQogUGF0Y2ggZm9yIGFkZGluZyAncycgb3B0aW9uIHRvICdjaW5vJywgQysrIG5hbWVzcGFjZSBpbmRlbnRpbmcuIChLb25zdGFudGluCiBMZXBhLCAyMDExIEphbiAxOCkKIAotVmVyc2lvbiBvZiBuZXRiZWFucy5jIGZvciB1c2Ugd2l0aCBNYWNWaW0uIChLYXp1a2kgU2FrYW1vdG8sIDIwMTAgTm92IDE4KQotCi03LjMuMDE0IGNoYW5nZWQgaG93IGJhY2tzbGFzaCBhdCBlbmQgb2YgbGluZSB3b3JrcywgYnV0IHN0aWxsIGdldCBhIE5VTCB3aGVuCi10aGVyZSBpcyBvbmUgYmFja3NsYXNoLiAoUmF5IEZydXNoLCAyMDEwIE5vdiAxOCkgIFdoYXQgZG9lcyB0aGUgb3JpZ2luYWwgZXgKLWRvPwotCi0iOmZpbmQiIGNvbXBsZXRpb24gZG9lcyBub3QgZXNjYXBlIHNwYWNlIGluIGRpcmVjdG9yeSBuYW1lLiAoSXN6LCAyMDEwIE5vdiAyKQotCi1TZWFyY2hpbmcgbWl4ZWQgd2l0aCBWaXN1YWwgbW9kZSBkb2Vzbid0IHJlZHJhdyBwcm9wZXJseS4gKEphbWVzIFZlZ2EsIDIwMTAgTm92Ci0yMikKLQogUGF0Y2ggdG8gc3VwcG9ydCAiOiFzdGFydCAvYiBjbWQiLiAoWGFpemVrLCAyMDEwIERlYyAyMikKIAogUGF0Y2ggdG8gYnVpbGQgd2l0aCBHVEsgb24gTWFjLiAoQmVuIFNjaG1pZHQsIDIwMTEgSmFuIDE4KQpAQCAtMjA3LDYgKzgwLDEzNSBAQAogCiBQYXRjaCBmb3IgUHl0aG9uIDMgc3VwcG9ydC4gKGxpbHlkandnLCAyMDExIEZlYiAyNCkKIAorQnVpbGRpbmcgdGhlIE1pbmdXIHZlcnNpb24gd2l0aG91dCBjbGlwYm9hcmQgYnV0IHdpdGggbXVsdGktYnl0ZSBkb2Vzbid0Cit3b3JrLiAoQmlsbCBMYW0sIDIwMTAgU2VwIDE4KQorCitQYXRjaCBmb3IgaGFuZGxpbmcgb2YgTkwgaW4gc3Vic3RpdHV0ZSgpIHdpdGggXD0gZXhwcmVzc2lvbi4gKE1vdG95YSBLdXJvdHN1LAorMjAxMSBNYXIgMTYpICBVcGRhdGUgTWFyIDI0LgorCitQYXRjaCB0byBkaXNhbGxvdyBmb3JrKCkgd2hlbiBfX0FQUExFX18gaXMgZGVmaW5lZC4gKEhpc2FzaGkgVCBGdWppbmFrYSwgMjAxMAorTm92IDI1KQorCitHVEs6IFBhdGNoIHRvIGZpeCBtZW51IHBvcHBpbmcgZG93bi4gKEhvbmcgWHUsIDIwMTAgRGVjIDQsIERlYyA1KQorVXBkYXRlIDIwMTEgRmViIDMuCisKK1BhdGNoIHRvIHVzZSBwaXBlcyBvbiBXaW4zMi4gIChWaW5jZW50IEJlcnRob3V4LCAyMDExIEZlYiAyOCkKK1VwZGF0ZSBNYXIgMSB1c2luZyAnc2hlbGx0ZW1wJy4KKworImdoPERlbD4iIGRlbGV0ZXMgdGhlIGN1cnJlbnQgbGluZSwgZXhjZXB0IHdoZW4gaXQncyB0aGUgbGFzdCBsaW5lLgorSGludCBieSBDaHJpc3RpYW4gQnJhYmFuZHQsIDIwMTEgTWFyIDIyCisKK1RoZSA6eiBjb21tYW5kIGRvZXNuJ3Qgd29yayBleGFjdGx5IGFzIGl0IHNob3VsZC4gKENoYW5nWmh1byBDaGVuLCAyMDExIE1hciAyKQorQ29tcGFyZSB3aXRoIGhvdyBvbGQgVmkgd29ya3MgYW5kIHdpdGggcG9zaXggc3BlYy4gIHRlcm1pbmFsIGlzIDgwIHggMjQsCisnc2Nyb2xsJyBvcHRpb24gc2V0IHRvIDExLgorCisnY3Vyc29ybGluZScgaXMgZGlzcGxheWVkIHRvbyBzaG9ydCB3aGVuIHRoZXJlIGFyZSBjb25jZWFsZWQgY2hhcmFjdGVycyBhbmQKKydsaXN0JyBpcyBzZXQuICAoRGVubmlzIFByZWlzZXIpCitQYXRjaCA3LjMuMTE2IHdhcyB0aGUgd3Jvbmcgc29sdXRpb24uCisKK1doZW4gb3BlbmluZyBmaWxlIGZyb20gd2luZG93cyBleHBsb3JlciwgY2hhcmFjdGVycyBpbnNpZGUgW10gY2F1c2UKK3Byb2JsZW1zLCBldmVuIHRob3VnaCBkb3VibGUgcXVvdGVzIGFyZSB1c2VkLiAoTWFudWVsIFN0b2wsIDIwMTEgTWFyIDkpCisKK1BhdGNoIHRvIGNoYW5nZSB0aGUgbWVhbmluZyBvZiBcbiBpbiBzdWJzdGl0dXRlKCkuIChtb3RveWEga3Vyb3RzdSwgMjAxMSBNYXIgOCkKKworSGVscCBmaWxlIGZvbGRleHByIChaeVgpCisKK1N5bnRheCByZWdpb24gd2l0aCAnY29uY2VhbGVuZHMnIGFuZCBhICdjY2hhcicgdmFsdWUsICdjb25jZWFsbGV2ZWwnIHNldCB0byAyLAorb25seSBvbmUgb2YgdGhlIHR3byBlbmRzIGdldHMgdGhlIGNjaGFyIGRpc3BsYXllZC4gKEJyZXR0IFN0YWhsbWFuLCAyMDEwIEF1ZworMjEsIEJlbiBGcml0eiwgMjAxMCBTZXAgMTQpCisKK0J1ZyBpbiByZXBlYXRpbmcgVmlzdWFsICJ1Ii4gKExhd3JlbmNlIEtlc3RlbG9vdCwgMjAxMCBEZWMgMjApCisKK0N1cnNvckhvbGQgcmVwZWF0cyB0eXBlZCBrZXkgd2hlbiBpdCdzIHRoZSBzdGFydCBvZiBhIG1hcHBpbmcuCisoV2lsbCBHcmF5LCAyMDExIE1hciAyMykKKworV2luZG93cyBrZXlzIG5vdCBzZXQgcHJvcGVybHkgb24gV2luZG93cyA3PyAgKGNuY3liZXIsIDIwMTAgQXVnIDI2KQorCitUaGlzIGxpbmUgaGFuZ3MgVmltLCBiZWNhdXNlIG9mIHN5bnRheCBITDoKK2NhbGwgYXBwZW5kKGxpbmUsICJJTkZPICAuLi4uMTIuLi4uMTguLi4uMjQuLi4uMzAuLi4uMzYuLi4uNDIuLi4uNDguLi4uNTQuLi4uNjAuLi4uNjYuLi4uNzIuLi4uNzglJCIpCisKK1doZW4gdXNpbmcgYSBWaW0gc2VydmVyLCBhICMgaW4gdGhlIHBhdGggY2F1c2VzIGFuIGVycm9yIG1lc3NhZ2UuCisoSmVmZiBMYW56YXJvdHRhLCAyMDExIEZlYiAxNykKKworQnVnOiBFNjg1IGVycm9yIGZvciBmdW5jX3VucmVmKCkuIChaeVgsIDIwMTAgQXVnIDUpCisKK1VzaW5nICI6YnJlYWsiIG9yIHNvbWV0aGluZyBlbHNlIHRoYXQgc3RvcHMgZXhlY3V0aW5nIGNvbW1hbmRzIGluc2lkZSBhCisiOmZpbmFsbHkiIGRvZXMgbm90IHJldGhyb3cgYSBwcmV2aW91c2x5IHVuY2F1Z2h0IGV4Y2VwdGlvbi4gKFp5WCwgMjAxMCBPY3QKKzE1KQorCitWaW0gdXNpbmcgbG90cyBvZiBtZW1vcnkgd2hlbiBqb2luaW5nIGxpbmVzLiAoSm9obiBMaXR0bGUsIDIwMTAgRGVjIDMpCisKK09uIDY0IGJpdCBNUy1XaW5kb3dzICJsb25nIiBpcyBvbmx5IDMyIGJpdHMsIGJ1dCB3ZSBzb21ldGltZXMgbmVlZCB0byBzdG9yZSBhCis2NCBiaXRzIHZhbHVlLiAgQ2hhbmdlIGFsbCBudW1iZXIgb3B0aW9ucyB0byB1c2UgbnJvcHRfVCBhbmQgZGVmaW5lIGl0IHRvIHRoZQorcmlnaHQgdHlwZS4KKworc3RyaW5nKCkgY2FuJ3QgcGFyc2UgYmFjayAiaW5mIiBhbmQgIm5hbiIuICBGaXggZG9jdW1lbnRhdGlvbiBvciBmaXggY29kZT8KKyhaeVgsIDIwMTAgQXVnIDIzKQorCitXaGVuIGRvaW5nICJyZWRpciA9PiBzOmZvbyIgaW4gYSBzY3JpcHQgYW5kIHRoZW4gInJlZGlyIEVORCIgc29tZXdoZXJlIGVsc2UKKyhlLmcuIGluIGEgZnVuY3Rpb24pIGl0IGNhbid0IGZpbmQgczpmb28uCisKK21hcGFyZygpIGRvZXMgbm90IHNob3cgdGhlIDxzY3JpcHQ+IGZsYWcuICBXaGVuIHRlbXBvcmFyaWx5IGNoYW5naW5nIGEKK21hcHBpbmcsIGhvdyB0byByZXN0b3JlIHRoZSBzY3JpcHQgSUQ/CisKK1BhdGNoIHRvIGZpeCBcJVYgaXRlbSBpbiByZWdleHAuIChDaHJpc3RpYW4gQnJhYmFuZHQsIDIwMTAgTm92IDgpCitVcGRhdGUgTm92IDE5LiAgSmFtZXMgVmVnYTogc3RpbGwgbm90IHJpZ2h0LiAgQ2hyaXN0aWFuOiBpdCdzIGRpZmZpY3VsdC4KKworUGF0Y2ggdG8gYWRkIHVwIHRvIDk5IG1hdGNoIGdyb3Vwcy4gKENocmlzdGlhbiBCcmFiYW5kdCwgMjAxMCBEZWMgMjIpCitBbHNvIGFkZCBuYW1lZCBncm91cHM6IFwle25hbWV9KHJlKSAgYW5kIFwle25hbWV9ZworCitCdWcgaW4gdHJ5L2NhdGNoOiByZXR1cm4gd2l0aCBpbnZhbGlkIGNvbXBhcmUgdGhyb3dzIGVycm9yIHRoYXQgaXNuJ3QgY2F1Z2h0LgorKFp5WCwgMjAxMSBKYW4gMjYpCisKK0hpZ2hsaWdodGluZyBzdG9wcyB3b3JraW5nIGFmdGVyIGNoYW5naW5nIGl0IG1hbnkgdGltZXMuICBTY3JpcHQgdG8gcmVwcm9kdWNlCitpdDogUGFibG8gQ29udHJlcmFzLCAyMDEwIE9jdCAxMiAgV2luZG93cyBYUCBhbmQgNy4gIEZvbnQgaXMgbmV2ZXIgZnJlZWQ/CisKK0FmdGVyIHBhdGNoIDcuMy4wOTcgc3RpbGwgZ2V0IEUxNS4gKFl1a2loaXJvIE5ha2FkYWlyYSwgMjAxMSBKYW4gMTgpCitBbHNvIGZvciBhbm90aGVyIGV4YW1wbGUgKFp5WCwgMjAxMSBKYW4gMjQpCisKK0J1aWxkIHByb2JsZW0gd2l0aCBzbWFsbCBmZWF0dXJlcyBvbiBNYWMgT1MgWCAxMC42LiAoUmFpbmVyLCAyMDExIEphbiAyNCkKKworIjBnQCQiIHB1dHMgJ10gb24gbGFzdCBieXRlIG9mIG11bHRpLWJ5dGUuIChaeVgsIDIwMTEgSmFuIDIyKQorCitEZWxldGluZyBhIGxpbmV3aXNlIHNlbGVjdGlvbiB0aGF0IGluY2x1ZGVzIHRoZSBsYXN0IGxpbmUgb2YgdGhlIGZpbGUgbGVhdmVzCithbiBlbXB0eSBsaW5lLiAoQmVuIFNjaG1pZHQsIDIwMTEgTWFyIDE3KQorUGF0Y2ggYnkgQ2hyaXN0aWFuIEJyYWJhbmR0LCAyMDExIE1hciAxOS4KKworUGF0Y2ggdG8gc3VwcG9ydCBzb3J0aW5nIG9uIGZsb2F0aW5nIHBvaW50IG51bWJlci4gIChBbGV4IEpha3VzaGV2LCAyMDEwIE9jdAorMzApCisKK1doZW4gYSBzY3JpcHQgY29udGFpbnMgInJlZGlyID0+IHM6Zm9vIiBidXQgZG9lc24ndCBlbmQgcmVkaXJlY3Rpb24sIGEKK2ZvbGxvd2luZyAicmVkaXIiIGNvbW1hbmQgZ2l2ZXMgYW4gZXJyb3IgZm9yIG5vdCBiZWluZyBhYmxlIHRvIGFjY2VzcyBzOmZvby4KKyhaeVgsIDIwMTEgTWFyIDI3KQorCitQcm9ibGVtIHdpdGggInN5biBzeW5jIGdvdXBoZXJlIi4gKEd1c3Rhdm8gTmllbWV5ZXIsIDIwMTEgSmFuIDI3KQorCitMb2FkaW5nIGF1dG9sb2FkIHNjcmlwdCBldmVuIHdoZW4gdXNhZ2UgaXMgaW5zaWRlICJpZiAwIi4gKENocmlzdGlhbiBCcmFiYW5kdCwKKzIwMTAgRGVjIDE4KQorCitJbiB0aGUgc2FuZGJveCBpdCdzIG5vdCBhbGxvd2VkIHRvIGRvIG1hbnkgdGhpbmdzLCBidXQgaXQncyBwb3NzaWJsZSB0byBjaGFuZ2UKK29yIHNldCB2YXJpYWJsZXMuICBBZGQgYSB3YXkgdG8gcHJldmVudCB2YXJpYWJsZXMgZnJvbSBiZWluZyBjaGFuZ2VkIGluIHRoZQorc2FuZGJveD8gIEUuZy46ICI6cHJvdGVjdCBnOnJlc3RvcmVfc2V0dGluZ3MiLgorCitHVEs6IGRyYXdpbmcgYSBkb3VibGUtd2lkdGggY29tYmluaW5nIGNoYXJhY3RlciBvdmVyIHNpbmdsZS13aWR0aCBjaGFyYWN0ZXJzCitkb2Vzbid0IGxvb2sgcmlnaHQuIChEb21pbmlxdWUgUGVsbGUsIDIwMTAgQXVnIDgpCisKK0dUSzogdGVhci1vZmYgbWVudSBkb2VzIG5vdCB3b3JrLiAoS3VydCBTb25uZW5tb3NlciwgMjAxMCBPY3QgMjUpCisKK1dpbjMyOiB0ZWFyLW9mZiBtZW51IGRvZXMgbm90IHdvcmsgd2hlbiBtZW51IGxhbmd1YWdlIGlzIEdlcm1hbi4gKE1hcmt1cworQm9zc2xlciwgMjAxMSBNYXIgMikgIEZpeGVkIGJ5IDcuMy4wOTU/CisKK1ZlcnNpb24gb2YgbmV0YmVhbnMuYyBmb3IgdXNlIHdpdGggTWFjVmltLiAoS2F6dWtpIFNha2Ftb3RvLCAyMDEwIE5vdiAxOCkKKworNy4zLjAxNCBjaGFuZ2VkIGhvdyBiYWNrc2xhc2ggYXQgZW5kIG9mIGxpbmUgd29ya3MsIGJ1dCBzdGlsbCBnZXQgYSBOVUwgd2hlbgordGhlcmUgaXMgb25lIGJhY2tzbGFzaC4gKFJheSBGcnVzaCwgMjAxMCBOb3YgMTgpICBXaGF0IGRvZXMgdGhlIG9yaWdpbmFsIGV4Citkbz8KKworIjpmaW5kIiBjb21wbGV0aW9uIGRvZXMgbm90IGVzY2FwZSBzcGFjZSBpbiBkaXJlY3RvcnkgbmFtZS4gKElzeiwgMjAxMCBOb3YgMikKKworU2VhcmNoaW5nIG1peGVkIHdpdGggVmlzdWFsIG1vZGUgZG9lc24ndCByZWRyYXcgcHJvcGVybHkuIChKYW1lcyBWZWdhLCAyMDEwIE5vdgorMjIpCisKIE5ldyBlc3BlcmFudG8gc3BlbGwgZmlsZSBjYW4ndCBiZSBwcm9jZXNzZWQuIChEb21pbmlxdWUgUGVsbGUsIDIwMTEgSmFuIDMwKQogLSBtb3ZlIGNvbXBmbGFncyB0byBzZXBhcmF0ZSBncm93YXJyYXk/CiAtIGluc3RlYWQgb2YgYSByZWdleHAgdXNlIGEgaGFzaHRhYmxlLiAgRXhwYW5kICc/JywgJyoiLCAnKycuICBXaGF0IHdvdWxkIGJlCkBAIC0yMzUsMTUgKzIzNyw2IEBACiBTaW5jZSBwYXRjaCA3LjIuNDYgWWFua3JpbmcgcGx1Z2luIGhhcyBiZWNvbWUgdmVyeSBzbG93LCBldmVudHVhbGx5IG1ha2UgVmltCiBjcmFzaD8gKFJhaXdpbCwgMjAxMCBOb3YgMTcpCiAKLVBhdGNoIHRvIGRpc2FsbG93IGZvcmsoKSB3aGVuIF9fQVBQTEVfXyBpcyBkZWZpbmVkLiAoSGlzYXNoaSBUIEZ1amluYWthLCAyMDEwCi1Ob3YgMjUpCi0KLUdUSzogUGF0Y2ggdG8gZml4IG1lbnUgcG9wcGluZyBkb3duLiAoSG9uZyBYdSwgMjAxMCBEZWMgNCwgRGVjIDUpCi1VcGRhdGUgMjAxMSBGZWIgMy4KLQotUGF0Y2ggdG8gdXNlIHBpcGVzIG9uIFdpbjMyLiAgKFZpbmNlbnQgQmVydGhvdXgsIDIwMTEgRmViIDI4KQotVXBkYXRlIE1hciAxIHVzaW5nICdzaGVsbHRlbXAnLgotCiBQeXRob246IEFkZGluZyBsaW5lIHRvIGJ1ZmZlciBvdGhlciB0aGFuIHRoZSBjdXJyZW50IG9uZSBkb2Vzbid0IHdvcmsKIGNvcnJlY3RseS4gKFJvemJ1am5paywgMjAxMCBEZWMgMTkpCiAKQEAgLTI1NSw5ICsyNDgsNiBAQAogUHJvYmxlbSBwcm9kdWNpbmcgdGFncyBmaWxlIHdoZW4gaGVicmV3LmZyeCBpcyBwcmVzZW50LiAgSXQgaGFzIGEgQk9NLgogUmVzdWx0cyBpbiBFNjcwLiAoVG9ueSBNZWNoZWx5bmNrLCAyMDEwIE1heSAyKQogCi1QYXRjaCB0byBzdXBwb3J0IHNvcnRpbmcgb24gZmxvYXRpbmcgcG9pbnQgbnVtYmVyLiAgKEFsZXggSmFrdXNoZXYsIDIwMTAgT2N0Ci0zMCkKLQogUnVieTogIjpydWJ5IHByaW50ICRidWZmZXIubnVtYmVyIiByZXR1cm5zIHplcm8uCiAKIHNldHBvcygpIGRvZXMgbm90IHJlc3RvcmUgY3Vyc29yIHBvc2l0aW9uIGFmdGVyIDpub3JtYWwuIChUeXJ1LCAyMDEwIEF1ZyAxMSkKQEAgLTg5Niw2ICs4ODYsOSBAQAogIjpjY2wiIGNsb3NlcyB0aGUgcXVpY2tmaXggd2luZG93LiAgQWRkICI6aGNsb3NlIi4gKENocmlzIEdhYWwpCiBQYXRjaCBmb3IgOmhlbHBjbG9zZSwgQ2hyaXN0aWFuIEJyYWJhbmR0LCAyMDEwIFNlcCA2LgogCitQYXRjaCBmb3IgOmxtYWtlIG5vdCB1cGRhdGluZyB0aGUgcXVpY2tmaXggd2luZG93IHRpdGxlLiAoTGVjaCBMb3JlbnMsIDIwMTEKK01hciAyNikKKwogV2hlbiAnZGlmZm9wdCcgaGFzICJjb250ZXh0OjAiIGEgc2luZ2xlIGRlbGV0ZWQgbGluZSBjYXVzZXMgdHdvIGZvbGRzIHRvIG1lcmdlCiBhbmQgbWVzcyB1cCBzeW5jaW5nLiAoQXVzdGluIEplbm5pbmdzLCAyMDA4IEphbiAzMSkKIApkaWZmIC0tZ2l0IGEvcnVudGltZS9maWxldHlwZS52aW0gYi9ydW50aW1lL2ZpbGV0eXBlLnZpbQppbmRleCA1MDkwOTI1Li4wZDc4YTk0IDEwMDY0NAotLS0gYS9ydW50aW1lL2ZpbGV0eXBlLnZpbQorKysgYi9ydW50aW1lL2ZpbGV0eXBlLnZpbQpAQCAtMSw3ICsxLDcgQEAKICIgVmltIHN1cHBvcnQgZmlsZSB0byBkZXRlY3QgZmlsZSB0eXBlcwogIgogIiBNYWludGFpbmVyOglCcmFtIE1vb2xlbmFhciA8QnJhbUB2aW0ub3JnPgotIiBMYXN0IENoYW5nZToJMjAxMSBNYXIgMjIKKyIgTGFzdCBDaGFuZ2U6CTIwMTEgQXByIDAxCiAKICIgTGlzdGVuIHZlcnkgY2FyZWZ1bGx5LCBJIHdpbGwgc2F5IHRoaXMgb25seSBvbmNlCiBpZiBleGlzdHMoImRpZF9sb2FkX2ZpbGV0eXBlcyIpCkBAIC03NSw3ICs3NSw3IEBACiBhdSBCdWZOZXdGaWxlLEJ1ZlJlYWQgKi5hYXAJCQlzZXRmIGFhcAogCiAiIEEycHMgcHJpbnRpbmcgdXRpbGl0eQotYXUgQnVmTmV3RmlsZSxCdWZSZWFkIGV0Yy9hMnBzLmNmZyxldGMvYTJwcy8qLmNmZyxhMnBzcmMsLmEycHNyYyBzZXRmIGEycHMKK2F1IEJ1Zk5ld0ZpbGUsQnVmUmVhZCAqL2V0Yy9hMnBzLmNmZywqL2V0Yy9hMnBzLyouY2ZnLGEycHNyYywuYTJwc3JjIHNldGYgYTJwcwogCiAiIEFCQUIvNAogYXUgQnVmTmV3RmlsZSxCdWZSZWFkICouYWJhcAkJCXNldGYgYWJhcApAQCAtMTEwLDggKzExMCw3IEBACiBhdSBCdWZOZXdGaWxlLEJ1ZlJlYWQgcHJvZnRwZC5jb25mKgkJY2FsbCBzOlN0YXJTZXRmKCdhcGFjaGVzdHlsZScpCiAKICIgQXBhY2hlIGNvbmZpZyBmaWxlCi1hdSBCdWZOZXdGaWxlLEJ1ZlJlYWQgLmh0YWNjZXNzLC9ldGMvaHR0cGQvKi5jb25mCQkgc2V0ZiBhcGFjaGUKLWF1IEJ1Zk5ld0ZpbGUsQnVmUmVhZCBodHRwZC5jb25mKixzcm0uY29uZiosYWNjZXNzLmNvbmYqLGFwYWNoZS5jb25mKixhcGFjaGUyLmNvbmYqLC9ldGMvYXBhY2hlMi8qLmNvbmYqLC9ldGMvaHR0cGQvY29uZi5kLyouY29uZiogY2FsbCBzOlN0YXJTZXRmKCdhcGFjaGUnKQorYXUgQnVmTmV3RmlsZSxCdWZSZWFkIC5odGFjY2VzcywqL2V0Yy9odHRwZC8qLmNvbmYJCXNldGYgYXBhY2hlCiAKICIgWEE2NSBNT1M2NTEwIGNyb3NzIGFzc2VtYmxlcgogYXUgQnVmTmV3RmlsZSxCdWZSZWFkICouYTY1CQkJc2V0ZiBhNjUKQEAgLTEyNCw3ICsxMjMsNyBAQAogCVwgaWYgZXhwYW5kKCI8YWZpbGU+IikgIX4/ICdNYWtlZmlsZS5hbVw+JyB8IHNldGYgZWxmIHwgZW5kaWYKIAogIiBBTFNBIGNvbmZpZ3VyYXRpb24KLWF1IEJ1Zk5ld0ZpbGUsQnVmUmVhZCB+Ly5hc291bmRyYywvdXNyL3NoYXJlL2Fsc2EvYWxzYS5jb25mLC9ldGMvYXNvdW5kLmNvbmYJc2V0ZiBhbHNhY29uZgorYXUgQnVmTmV3RmlsZSxCdWZSZWFkIH4vLmFzb3VuZHJjLC91c3Ivc2hhcmUvYWxzYS9hbHNhLmNvbmYsKi9ldGMvYXNvdW5kLmNvbmYJc2V0ZiBhbHNhY29uZgogCiAiIEFyYyBNYWNybyBMYW5ndWFnZQogYXUgQnVmTmV3RmlsZSxCdWZSZWFkICouYW1sCQkJc2V0ZiBhbWwKQEAgLTE1Nyw3ICsxNTYsNyBAQAogCVwgZW5kaWYKIAogIiBHcnViIChtdXN0IGJlIGJlZm9yZSBjYXRjaCAqLmxzdCkKLWF1IEJ1Zk5ld0ZpbGUsQnVmUmVhZCAvYm9vdC9ncnViL21lbnUubHN0LC9ib290L2dydWIvZ3J1Yi5jb25mLC9ldGMvZ3J1Yi5jb25mCXNldGYgZ3J1YgorYXUgQnVmTmV3RmlsZSxCdWZSZWFkIC9ib290L2dydWIvbWVudS5sc3QsL2Jvb3QvZ3J1Yi9ncnViLmNvbmYsKi9ldGMvZ3J1Yi5jb25mCXNldGYgZ3J1YgogCiAiIEFzc2VtYmx5IChhbGwga2luZHMpCiAiICoubHN0IGlzIG5vdCBwdXJlIGFzc2VtYmx5LCBpdCBoYXMgdHdvIGV4dHJhIGNvbHVtbnMgKGFkZHJlc3MsIGJ5dGUgY29kZXMpCkBAIC0yOTYsNyArMjk1LDcgQEAKIGF1IEJ1Zk5ld0ZpbGUsQnVmUmVhZCAqLmJsCQkJc2V0ZiBibGFuawogCiAiIEJsa2lkIGNhY2hlIGZpbGUKLWF1IEJ1Zk5ld0ZpbGUsQnVmUmVhZCAvZXRjL2Jsa2lkLnRhYiwvZXRjL2Jsa2lkLnRhYi5vbGQgICBzZXRmIHhtbAorYXUgQnVmTmV3RmlsZSxCdWZSZWFkICovZXRjL2Jsa2lkLnRhYiwqL2V0Yy9ibGtpZC50YWIub2xkICAgc2V0ZiB4bWwKIAogIiBDIG9yIGxwYwogYXUgQnVmTmV3RmlsZSxCdWZSZWFkICouYwkJCWNhbGwgczpGVGxwYygpCkBAIC0zMzEsNyArMzMwLDcgQEAKIGF1IEJ1Zk5ld0ZpbGUsQnVmUmVhZCAqLnRvYwkJCXNldGYgY2RydG9jCiAKICIgQ2RyZGFvIGNvbmZpZwotYXUgQnVmTmV3RmlsZSxCdWZSZWFkIGV0Yy9jZHJkYW8uY29uZixldGMvZGVmYXVsdHMvY2RyZGFvLGV0Yy9kZWZhdWx0L2NkcmRhbyx+Ly5jZHJkYW8JCQkJCQlzZXRmIGNkcmRhb2NvbmYKK2F1IEJ1Zk5ld0ZpbGUsQnVmUmVhZCAqL2V0Yy9jZHJkYW8uY29uZiwqL2V0Yy9kZWZhdWx0cy9jZHJkYW8sKi9ldGMvZGVmYXVsdC9jZHJkYW8sfi8uY2RyZGFvCXNldGYgY2RyZGFvY29uZgogCiAiIENmZW5naW5lCiBhdSBCdWZOZXdGaWxlLEJ1ZlJlYWQgY2ZlbmdpbmUuY29uZgkJc2V0ZiBjZmVuZ2luZQpAQCAtNTUzLDcgKzU1Miw4IEBACiAJXHwgZW5kaWYKIAogIiBEZWJpYW4gU291cmNlcy5saXN0Ci1hdSBCdWZOZXdGaWxlLEJ1ZlJlYWQgL2V0Yy9hcHQvc291cmNlcy5saXN0CXNldGYgZGVic291cmNlcworYXUgQnVmTmV3RmlsZSxCdWZSZWFkICovZXRjL2FwdC9zb3VyY2VzLmxpc3QJCXNldGYgZGVic291cmNlcworYXUgQnVmTmV3RmlsZSxCdWZSZWFkICovZXRjL2FwdC9zb3VyY2VzLmxpc3QuZC8qLmxpc3QJc2V0ZiBkZWJzb3VyY2VzCiAKICIgRGVueSBob3N0cwogYXUgQnVmTmV3RmlsZSxCdWZSZWFkIGRlbnlob3N0cy5jb25mCQlzZXRmIGRlbnlob3N0cwpAQCAtNTg2LDcgKzU4Niw3IEBACiBhdSBCdWZOZXdGaWxlLEJ1ZlJlYWQgKi5kaWZmLCoucmVqLCoucGF0Y2gJc2V0ZiBkaWZmCiAKICIgRGlyY29sb3JzCi1hdSBCdWZOZXdGaWxlLEJ1ZlJlYWQgLmRpcl9jb2xvcnMsL2V0Yy9ESVJfQ09MT1JTCXNldGYgZGlyY29sb3JzCithdSBCdWZOZXdGaWxlLEJ1ZlJlYWQgLmRpcl9jb2xvcnMsLmRpcmNvbG9ycywqL2V0Yy9ESVJfQ09MT1JTCXNldGYgZGlyY29sb3JzCiAKICIgRGl2YSAod2l0aCBTa2lsbCkgb3IgSW5zdGFsbFNoaWVsZAogYXUgQnVmTmV3RmlsZSxCdWZSZWFkICoucnVsCkBAIC03NjcsNyArNzY3LDcgQEAKIGF1IEJ1Zk5ld0ZpbGUsQnVmUmVhZCAqLmdzcAkJCXNldGYgZ3NwCiAKICIgR3JvdXAgZmlsZQotYXUgQnVmTmV3RmlsZSxCdWZSZWFkIC9ldGMvZ3JvdXAsL2V0Yy9ncm91cC0sL2V0Yy9ncm91cC5lZGl0LC9ldGMvZ3NoYWRvdywvZXRjL2dzaGFkb3ctLC9ldGMvZ3NoYWRvdy5lZGl0LC92YXIvYmFja3Vwcy9ncm91cC5iYWssL3Zhci9iYWNrdXBzL2dzaGFkb3cuYmFrICBzZXRmIGdyb3VwCithdSBCdWZOZXdGaWxlLEJ1ZlJlYWQgKi9ldGMvZ3JvdXAsKi9ldGMvZ3JvdXAtLCovZXRjL2dyb3VwLmVkaXQsKi9ldGMvZ3NoYWRvdywqL2V0Yy9nc2hhZG93LSwqL2V0Yy9nc2hhZG93LmVkaXQsKi92YXIvYmFja3Vwcy9ncm91cC5iYWssKi92YXIvYmFja3Vwcy9nc2hhZG93LmJhayAgc2V0ZiBncm91cAogCiAiIEdUSyBSQwogYXUgQnVmTmV3RmlsZSxCdWZSZWFkIC5ndGtyYyxndGtyYwkJc2V0ZiBndGtyYwpAQCAtODI2LDEwICs4MjYsMTAgQEAKIGF1IEJ1Zk5ld0ZpbGUsQnVmUmVhZCAqLnRtcGwJCQlzZXRmIGh0bWxjaGVldGFoCiAKICIgSG9zdCBjb25maWcKLWF1IEJ1Zk5ld0ZpbGUsQnVmUmVhZCAvZXRjL2hvc3QuY29uZgkJc2V0ZiBob3N0Y29uZgorYXUgQnVmTmV3RmlsZSxCdWZSZWFkICovZXRjL2hvc3QuY29uZgkJc2V0ZiBob3N0Y29uZgogCiAiIEhvc3RzIGFjY2VzcwotYXUgQnVmTmV3RmlsZSxCdWZSZWFkIC9ldGMvaG9zdHMuYWxsb3csL2V0Yy9ob3N0cy5kZW55ICBzZXRmIGhvc3RzYWNjZXNzCithdSBCdWZOZXdGaWxlLEJ1ZlJlYWQgKi9ldGMvaG9zdHMuYWxsb3csKi9ldGMvaG9zdHMuZGVueSAgc2V0ZiBob3N0c2FjY2VzcwogCiAiIEh5cGVyIEJ1aWxkZXIKIGF1IEJ1Zk5ld0ZpbGUsQnVmUmVhZCAqLmhiCQkJc2V0ZiBoYgpAQCAtODg5LDcgKzg4OSw3IEBACiBhdSBCdWZOZXdGaWxlLEJ1ZlJlYWQgKi5pbmYsKi5JTkYJCXNldGYgaW5mb3JtCiAKICIgSW5pdG5nCi1hdSBCdWZOZXdGaWxlLEJ1ZlJlYWQgL2V0Yy9pbml0bmcvKiovKi5pLCouaWkJc2V0ZiBpbml0bmcKK2F1IEJ1Zk5ld0ZpbGUsQnVmUmVhZCAqL2V0Yy9pbml0bmcvKiovKi5pLCouaWkJc2V0ZiBpbml0bmcKIAogIiBJcGZpbHRlcgogYXUgQnVmTmV3RmlsZSxCdWZSZWFkIGlwZi5jb25mLGlwZjYuY29uZixpcGYucnVsZXMJc2V0ZiBpcGZpbHRlcgpAQCAtOTUzLDcgKzk1Myw3IEBACiBhdSBCdWZOZXdGaWxlLEJ1ZlJlYWQgKi5sYXR0ZSwqLmx0ZQkJc2V0ZiBsYXR0ZQogCiAiIExpbWl0cwotYXUgQnVmTmV3RmlsZSxCdWZSZWFkIC9ldGMvbGltaXRzCQlzZXRmIGxpbWl0cworYXUgQnVmTmV3RmlsZSxCdWZSZWFkICovZXRjL2xpbWl0cywqL2V0Yy8qbGltaXRzLmNvbmYsKi9ldGMvKmxpbWl0cy5kLyouY29uZglzZXRmIGxpbWl0cwogCiAiIExhbWJkYVByb2xvZyAoKi5tb2QgdG9vLCBzZWUgTW9kc2ltKQogYXUgQnVmTmV3RmlsZSxCdWZSZWFkICouc2lnCQkJc2V0ZiBscHJvbG9nCkBAIC05NjgsMTAgKzk2OCwxMCBAQAogYXUgQnVmTmV3RmlsZSxCdWZSZWFkICoubGV4LCoubAkJCXNldGYgbGV4CiAKICIgTGliYW8KLWF1IEJ1Zk5ld0ZpbGUsQnVmUmVhZCAvZXRjL2xpYmFvLmNvbmYsKi8ubGliYW8Jc2V0ZiBsaWJhbworYXUgQnVmTmV3RmlsZSxCdWZSZWFkICovZXRjL2xpYmFvLmNvbmYsKi8ubGliYW8Jc2V0ZiBsaWJhbwogCiAiIExpYnNlbnNvcnMKLWF1IEJ1Zk5ld0ZpbGUsQnVmUmVhZCAvZXRjL3NlbnNvcnMuY29uZgkJc2V0ZiBzZW5zb3JzCithdSBCdWZOZXdGaWxlLEJ1ZlJlYWQgKi9ldGMvc2Vuc29ycy5jb25mLCovZXRjL3NlbnNvcnMzLmNvbmYJc2V0ZiBzZW5zb3JzCiAKICIgTEZUUAogYXUgQnVmTmV3RmlsZSxCdWZSZWFkIGxmdHAuY29uZiwubGZ0cHJjLCpsZnRwL3JjCXNldGYgbGZ0cApAQCAtMTAwMiwxMCArMTAwMiwxMCBAQAogYXUgQnVmTmV3RmlsZSxCdWZSZWFkICovTGl0ZVN0ZXAvKi8qLnJjCQlzZXRmIGxpdGVzdGVwCiAKICIgTG9naW4gYWNjZXNzCi1hdSBCdWZOZXdGaWxlLEJ1ZlJlYWQgL2V0Yy9sb2dpbi5hY2Nlc3MJCXNldGYgbG9naW5hY2Nlc3MKK2F1IEJ1Zk5ld0ZpbGUsQnVmUmVhZCAqL2V0Yy9sb2dpbi5hY2Nlc3MJc2V0ZiBsb2dpbmFjY2VzcwogCiAiIExvZ2luIGRlZnMKLWF1IEJ1Zk5ld0ZpbGUsQnVmUmVhZCAvZXRjL2xvZ2luLmRlZnMJCXNldGYgbG9naW5kZWZzCithdSBCdWZOZXdGaWxlLEJ1ZlJlYWQgKi9ldGMvbG9naW4uZGVmcwkJc2V0ZiBsb2dpbmRlZnMKIAogIiBMb2d0YWxrCiBhdSBCdWZOZXdGaWxlLEJ1ZlJlYWQgKi5sZ3QJCQlzZXRmIGxvZ3RhbGsKQEAgLTEwMzYsNyArMTAzNiw3IEBACiBhdSBCdWZOZXdGaWxlLEJ1ZlJlYWQgc25kLlxkXCssLmxldHRlciwubGV0dGVyLlxkXCssLmZvbGxvd3VwLC5hcnRpY2xlLC5hcnRpY2xlLlxkXCsscGljby5cZFwrLG11dHR7bmcsfS0qLVx3XCssbXV0dFtbOmFsbnVtOl1fLV1cezZcfSxhZVxkXCsudHh0LC90bXAvU0xSTlswLTlBLVouXVwrLCouZW1sIHNldGYgbWFpbAogCiAiIE1haWwgYWxpYXNlcwotYXUgQnVmTmV3RmlsZSxCdWZSZWFkIC9ldGMvbWFpbC9hbGlhc2VzLC9ldGMvYWxpYXNlcwlzZXRmIG1haWxhbGlhc2VzCithdSBCdWZOZXdGaWxlLEJ1ZlJlYWQgKi9ldGMvbWFpbC9hbGlhc2VzLCovZXRjL2FsaWFzZXMJc2V0ZiBtYWlsYWxpYXNlcwogCiAiIE1haWxjYXAgY29uZmlndXJhdGlvbiBmaWxlCiBhdSBCdWZOZXdGaWxlLEJ1ZlJlYWQgLm1haWxjYXAsbWFpbGNhcAkJc2V0ZiBtYWlsY2FwCkBAIC0xMDUxLDcgKzEwNTEsNyBAQAogYXUgQnVmTmV3RmlsZSxCdWZSZWFkICoubWFuCQkJc2V0ZiBtYW4KIAogIiBNYW4gY29uZmlnCi1hdSBCdWZOZXdGaWxlLEJ1ZlJlYWQgL2V0Yy9tYW4uY29uZixtYW4uY29uZmlnCXNldGYgbWFuY29uZgorYXUgQnVmTmV3RmlsZSxCdWZSZWFkICovZXRjL21hbi5jb25mLG1hbi5jb25maWcJc2V0ZiBtYW5jb25mCiAKICIgTWFwbGUgVgogYXUgQnVmTmV3RmlsZSxCdWZSZWFkICoubXYsKi5tcGwsKi5td3MJCXNldGYgbWFwbGUKQEAgLTExNTksOCArMTE1OSw4IEBACiBhdSBCdWZOZXdGaWxlLEJ1ZlJlYWQgKi5tb28JCQlzZXRmIG1vbwogCiAiIE1vZGNvbmYKLWF1IEJ1Zk5ld0ZpbGUsQnVmUmVhZCAvZXRjL21vZHVsZXMuY29uZiwvZXRjL2NvbmYubW9kdWxlcwlzZXRmIG1vZGNvbmYKLWF1IEJ1Zk5ld0ZpbGUsQnVmUmVhZCAvZXRjL21vZHV0aWxzLyoKK2F1IEJ1Zk5ld0ZpbGUsQnVmUmVhZCAqL2V0Yy9tb2R1bGVzLmNvbmYsKi9ldGMvbW9kdWxlcywqL2V0Yy9jb25mLm1vZHVsZXMJc2V0ZiBtb2Rjb25mCithdSBCdWZOZXdGaWxlLEJ1ZlJlYWQgKi9ldGMvbW9kdXRpbHMvKgogCVwgaWYgZXhlY3V0YWJsZShleHBhbmQoIjxhZmlsZT4iKSkgIT0gMQogCVx8ICBjYWxsIHM6U3RhclNldGYoJ21vZGNvbmYnKQogCVx8ZW5kaWYKQEAgLTExOTMsNyArMTE5Myw3IEBACiBhdSBCdWZOZXdGaWxlLEJ1ZlJlYWQgTXV0dHtuZyx9cmMJCXNldGYgbXV0dHJjCiAKICIgTmFubwotYXUgQnVmTmV3RmlsZSxCdWZSZWFkIC9ldGMvbmFub3JjLC5uYW5vcmMJc2V0ZiBuYW5vcmMKK2F1IEJ1Zk5ld0ZpbGUsQnVmUmVhZCAqL2V0Yy9uYW5vcmMsLm5hbm9yYwlzZXRmIG5hbm9yYwogCiAiIE5hc3RyYW4gaW5wdXQvRE1BUAogImF1IEJ1Zk5ld0ZpbGUsQnVmUmVhZCAqLmRhdAkJCXNldGYgbmFzdHJhbgpAQCAtMTI2OSwxMyArMTI2OSwxMyBAQAogYXUgQnVmTmV3RmlsZSxCdWZSZWFkIHBmLmNvbmYJCQlzZXRmIHBmCiAKICIgUGFtIGNvbmYKLWF1IEJ1Zk5ld0ZpbGUsQnVmUmVhZCAvZXRjL3BhbS5jb25mCQlzZXRmIHBhbWNvbmYKK2F1IEJ1Zk5ld0ZpbGUsQnVmUmVhZCAqL2V0Yy9wYW0uY29uZgkJc2V0ZiBwYW1jb25mCiAKICIgUEFwcAogYXUgQnVmTmV3RmlsZSxCdWZSZWFkICoucGFwcCwqLnB4bWwsKi5weHNsCXNldGYgcGFwcAogCiAiIFBhc3N3b3JkIGZpbGUKLWF1IEJ1Zk5ld0ZpbGUsQnVmUmVhZCAvZXRjL3Bhc3N3ZCwvZXRjL3Bhc3N3ZC0sL2V0Yy9wYXNzd2QuZWRpdCwvZXRjL3NoYWRvdywvZXRjL3NoYWRvdy0sL3Zhci9iYWNrdXBzL3Bhc3N3ZC5iYWssL3Zhci9iYWNrdXBzL3NoYWRvdy5iYWsgc2V0ZiBwYXNzd2QKK2F1IEJ1Zk5ld0ZpbGUsQnVmUmVhZCAqL2V0Yy9wYXNzd2QsKi9ldGMvcGFzc3dkLSwqL2V0Yy9wYXNzd2QuZWRpdCwqL2V0Yy9zaGFkb3csKi9ldGMvc2hhZG93LSwqL2V0Yy9zaGFkb3cuZWRpdCwqL3Zhci9iYWNrdXBzL3Bhc3N3ZC5iYWssKi92YXIvYmFja3Vwcy9zaGFkb3cuYmFrIHNldGYgcGFzc3dkCiAKICIgUGFzY2FsIChhbHNvICoucCkKIGF1IEJ1Zk5ld0ZpbGUsQnVmUmVhZCAqLnBhcwkJCXNldGYgcGFzY2FsCkBAIC0xNTAyLDcgKzE1MDIsNyBAQAogYXUgQnVmTmV3RmlsZSxCdWZSZWFkICoucG1sCQkJc2V0ZiBwcm9tZWxhCiAKICIgUHJvdG9jb2xzCi1hdSBCdWZOZXdGaWxlLEJ1ZlJlYWQgL2V0Yy9wcm90b2NvbHMJCXNldGYgcHJvdG9jb2xzCithdSBCdWZOZXdGaWxlLEJ1ZlJlYWQgKi9ldGMvcHJvdG9jb2xzCQlzZXRmIHByb3RvY29scwogCiAiIFB5cmV4CiBhdSBCdWZOZXdGaWxlLEJ1ZlJlYWQgKi5weXgsKi5weGQJCXNldGYgcHlyZXgKQEAgLTE2ODksMTkgKzE2ODksMTkgQEAKIGVuZGZ1bmMKIAogIiBTZXJ2aWNlcwotYXUgQnVmTmV3RmlsZSxCdWZSZWFkIC9ldGMvc2VydmljZXMJCXNldGYgc2VydmljZXMKK2F1IEJ1Zk5ld0ZpbGUsQnVmUmVhZCAqL2V0Yy9zZXJ2aWNlcwkJc2V0ZiBzZXJ2aWNlcwogCiAiIFNlcnZpY2UgTG9jYXRpb24gY29uZmlnCi1hdSBCdWZOZXdGaWxlLEJ1ZlJlYWQgL2V0Yy9zbHAuY29uZgkJc2V0ZiBzbHBjb25mCithdSBCdWZOZXdGaWxlLEJ1ZlJlYWQgKi9ldGMvc2xwLmNvbmYJCXNldGYgc2xwY29uZgogCiAiIFNlcnZpY2UgTG9jYXRpb24gcmVnaXN0cmF0aW9uCi1hdSBCdWZOZXdGaWxlLEJ1ZlJlYWQgL2V0Yy9zbHAucmVnCQlzZXRmIHNscHJlZworYXUgQnVmTmV3RmlsZSxCdWZSZWFkICovZXRjL3NscC5yZWcJCXNldGYgc2xwcmVnCiAKICIgU2VydmljZSBMb2NhdGlvbiBTUEkKLWF1IEJ1Zk5ld0ZpbGUsQnVmUmVhZCAvZXRjL3NscC5zcGkJCXNldGYgc2xwc3BpCithdSBCdWZOZXdGaWxlLEJ1ZlJlYWQgKi9ldGMvc2xwLnNwaQkJc2V0ZiBzbHBzcGkKIAogIiBTZXRzZXJpYWwgY29uZmlnCi1hdSBCdWZOZXdGaWxlLEJ1ZlJlYWQgL2V0Yy9zZXJpYWwuY29uZgkJc2V0ZiBzZXRzZXJpYWwKK2F1IEJ1Zk5ld0ZpbGUsQnVmUmVhZCAqL2V0Yy9zZXJpYWwuY29uZgkJc2V0ZiBzZXRzZXJpYWwKIAogIiBTR01MCiBhdSBCdWZOZXdGaWxlLEJ1ZlJlYWQgKi5zZ20sKi5zZ21sCkBAIC0xNzI4LDcgKzE3MjgsNyBAQAogIiBHZW50b28gZWJ1aWxkcyBhcmUgYWN0dWFsbHkgYmFzaCBzY3JpcHRzCiBhdSBCdWZOZXdGaWxlLEJ1ZlJlYWQgLmJhc2hyYyosYmFzaHJjLGJhc2guYmFzaHJjLC5iYXNoX3Byb2ZpbGUqLC5iYXNoX2xvZ291dCosKi5iYXNoLCouZWJ1aWxkIGNhbGwgU2V0RmlsZVR5cGVTSCgiYmFzaCIpCiBhdSBCdWZOZXdGaWxlLEJ1ZlJlYWQgLmtzaHJjKiwqLmtzaCBjYWxsIFNldEZpbGVUeXBlU0goImtzaCIpCi1hdSBCdWZOZXdGaWxlLEJ1ZlJlYWQgL2V0Yy9wcm9maWxlLC5wcm9maWxlKiwqLnNoLCouZW52IGNhbGwgU2V0RmlsZVR5cGVTSChnZXRsaW5lKDEpKQorYXUgQnVmTmV3RmlsZSxCdWZSZWFkICovZXRjL3Byb2ZpbGUsLnByb2ZpbGUqLCouc2gsKi5lbnYgY2FsbCBTZXRGaWxlVHlwZVNIKGdldGxpbmUoMSkpCiAKICIgQWxzbyBjYWxsZWQgZnJvbSBzY3JpcHRzLnZpbS4KIGZ1bmMhIFNldEZpbGVUeXBlU0gobmFtZSkKQEAgLTE4MTEsNyArMTgxMSw3IEBACiBlbmRmdW5jCiAKICIgWi1TaGVsbCBzY3JpcHQKLWF1IEJ1Zk5ld0ZpbGUsQnVmUmVhZCAuenByb2ZpbGUsL2V0Yy96cHJvZmlsZSwuemZiZm1hcmtzICBzZXRmIHpzaAorYXUgQnVmTmV3RmlsZSxCdWZSZWFkIC56cHJvZmlsZSwqL2V0Yy96cHJvZmlsZSwuemZiZm1hcmtzICBzZXRmIHpzaAogYXUgQnVmTmV3RmlsZSxCdWZSZWFkIC56c2gqLC56bG9nKiwuemNvbXBkdW1wKiAgY2FsbCBzOlN0YXJTZXRmKCd6c2gnKQogYXUgQnVmTmV3RmlsZSxCdWZSZWFkICouenNoCQkJc2V0ZiB6c2gKIApAQCAtMTg4Miw3ICsxODgyLDcgQEAKIGxldCBzOmZ0X3J1bGVzX3VkZXZfcnVsZXNfcGF0dGVybiA9ICdeXHMqXGN1ZGV2X3J1bGVzXHMqPVxzKiJcKFteIl1cey0xLH1cKS8qIi4qJwogZnVuYyEgczpGVFJ1bGVzKCkKICAgbGV0IHBhdGggPSBleHBhbmQoJzxhbWF0Y2g+OnAnKQotICBpZiBwYXRoID1+ICdeL2V0Yy91ZGV2L1wlKHJ1bGVzXC5kL1wpXD0uKlwucnVsZXMkJworICBpZiBwYXRoID1+ICdeL1woZXRjL3VkZXYvXCUocnVsZXNcLmQvXClcPS4qXC5ydWxlc1x8bGliL3VkZXYvXCUocnVsZXNcLmQvXClcPS4qXC5ydWxlc1wpJCcKICAgICBzZXRmIHVkZXZydWxlcwogICAgIHJldHVybgogICBlbmRpZgpAQCAtMTk3MCwxMyArMTk3MCwxMyBAQAogYXUgQnVmTmV3RmlsZSxCdWZSZWFkICouY20JCQlzZXRmIHZvc2NtCiAKICIgU3lzY3RsCi1hdSBCdWZOZXdGaWxlLEJ1ZlJlYWQgL2V0Yy9zeXNjdGwuY29uZgkJc2V0ZiBzeXNjdGwKK2F1IEJ1Zk5ld0ZpbGUsQnVmUmVhZCAqL2V0Yy9zeXNjdGwuY29uZiwqL2V0Yy9zeXNjdGwuZC8qLmNvbmYJc2V0ZiBzeXNjdGwKIAogIiBTeW5vcHN5cyBEZXNpZ24gQ29uc3RyYWludHMKIGF1IEJ1Zk5ld0ZpbGUsQnVmUmVhZCAqLnNkYwkJCXNldGYgc2RjCiAKICIgU3Vkb2VycwotYXUgQnVmTmV3RmlsZSxCdWZSZWFkIC9ldGMvc3Vkb2VycyxzdWRvZXJzLnRtcAlzZXRmIHN1ZG9lcnMKK2F1IEJ1Zk5ld0ZpbGUsQnVmUmVhZCAqL2V0Yy9zdWRvZXJzLHN1ZG9lcnMudG1wCXNldGYgc3Vkb2VycwogCiAiIFNWRyAoU2NhbGFibGUgVmVjdG9yIEdyYXBoaWNzKQogYXUgQnVmTmV3RmlsZSxCdWZSZWFkICouc3ZnCQkJc2V0ZiBzdmcKQEAgLTIxMjIsMjMgKzIxMjIsMjMgQEAKIGF1IEJ1Zk5ld0ZpbGUsQnVmUmVhZCAqLnVpdCwqLnVpbAkJc2V0ZiB1aWwKIAogIiBVZGV2IGNvbmYKLWF1IEJ1Zk5ld0ZpbGUsQnVmUmVhZCAvZXRjL3VkZXYvdWRldi5jb25mCXNldGYgdWRldmNvbmYKK2F1IEJ1Zk5ld0ZpbGUsQnVmUmVhZCAqL2V0Yy91ZGV2L3VkZXYuY29uZglzZXRmIHVkZXZjb25mCiAKICIgVWRldiBwZXJtaXNzaW9ucwotYXUgQnVmTmV3RmlsZSxCdWZSZWFkIC9ldGMvdWRldi9wZXJtaXNzaW9ucy5kLyoucGVybWlzc2lvbnMgc2V0ZiB1ZGV2cGVybQorYXUgQnVmTmV3RmlsZSxCdWZSZWFkICovZXRjL3VkZXYvcGVybWlzc2lvbnMuZC8qLnBlcm1pc3Npb25zIHNldGYgdWRldnBlcm0KICIKICIgVWRldiBzeW1saW5rcyBjb25maWcKLWF1IEJ1Zk5ld0ZpbGUsQnVmUmVhZCAvZXRjL3VkZXYvY2RzeW1saW5rcy5jb25mCXNldGYgc2gKK2F1IEJ1Zk5ld0ZpbGUsQnVmUmVhZCAqL2V0Yy91ZGV2L2Nkc3ltbGlua3MuY29uZglzZXRmIHNoCiAKICIgVW5yZWFsU2NyaXB0CiBhdSBCdWZOZXdGaWxlLEJ1ZlJlYWQgKi51YwkJCXNldGYgdWMKIAogIiBVcGRhdGVkYgotYXUgQnVmTmV3RmlsZSxCdWZSZWFkIC9ldGMvdXBkYXRlZGIuY29uZglzZXRmIHVwZGF0ZWRiCithdSBCdWZOZXdGaWxlLEJ1ZlJlYWQgKi9ldGMvdXBkYXRlZGIuY29uZglzZXRmIHVwZGF0ZWRiCiAKICIgVXBzdGFydCAoaW5pdCg4KSkgY29uZmlnIGZpbGVzCi1hdSBCdWZOZXdGaWxlLEJ1ZlJlYWQgKi9ldGMvaW5pdC8qLmNvbmYsfi8uaW5pdC8qLmNvbmYgICAgICAgICAgc2V0ZiB1cHN0YXJ0Ci1hdSBCdWZOZXdGaWxlLEJ1ZlJlYWQgKi9ldGMvaW5pdC8qLm92ZXJyaWRlLH4vLmluaXQvKi5vdmVycmlkZSAgc2V0ZiB1cHN0YXJ0CithdSBCdWZOZXdGaWxlLEJ1ZlJlYWQgKi9ldGMvaW5pdC8qLmNvbmYsKi8uaW5pdC8qLmNvbmYgICAgICAgICAgc2V0ZiB1cHN0YXJ0CithdSBCdWZOZXdGaWxlLEJ1ZlJlYWQgKi9ldGMvaW5pdC8qLm92ZXJyaWRlLCovLmluaXQvKi5vdmVycmlkZSAgc2V0ZiB1cHN0YXJ0CiAKICIgVmVyYQogYXUgQnVmTmV3RmlsZSxCdWZSZWFkICoudnIsKi52cmksKi52cmgJCXNldGYgdmVyYQpAQCAtMjIzMywxMiArMjIzMywxNSBAQAogCVwgICBsZXQgYjp4Zjg2Y194ZnJlZTg2X3ZlcnNpb24gPSAzIHwKIAlcIGVuZGlmIHwKIAlcIHNldGYgeGY4NmNvbmYKK2F1IEJ1Zk5ld0ZpbGUsQnVmUmVhZCAqL3hvcmcuY29uZi5kLyouY29uZgorCVwgbGV0IGI6eGY4NmNvbmZfeGZyZWU4Nl92ZXJzaW9uID0gNCB8CisJXCBzZXRmIHhmODZjb25mCiAKICIgWG9yZyBjb25maWcKLWF1IEJ1Zk5ld0ZpbGUsQnVmUmVhZCB4b3JnLmNvbmYseG9yZy5jb25mLTQJbGV0IGI6eGY4NmNfeGZyZWU4Nl92ZXJzaW9uID0gNCB8IHNldGYgeGY4NmNvbmYKK2F1IEJ1Zk5ld0ZpbGUsQnVmUmVhZCB4b3JnLmNvbmYseG9yZy5jb25mLTQJbGV0IGI6eGY4NmNvbmZfeGZyZWU4Nl92ZXJzaW9uID0gNCB8IHNldGYgeGY4NmNvbmYKIAogIiBYaW5ldGQgY29uZgotYXUgQnVmTmV3RmlsZSxCdWZSZWFkIC9ldGMveGluZXRkLmNvbmYJCXNldGYgeGluZXRkCithdSBCdWZOZXdGaWxlLEJ1ZlJlYWQgKi9ldGMveGluZXRkLmNvbmYJCXNldGYgeGluZXRkCiAKICIgWFMgUGVybCBleHRlbnNpb24gaW50ZXJmYWNlIGxhbmd1YWdlCiBhdSBCdWZOZXdGaWxlLEJ1ZlJlYWQgKi54cwkJCXNldGYgeHMKQEAgLTIyODUsNyArMjI4OCw3IEBACiBhdSBCdWZOZXdGaWxlLEJ1ZlJlYWQgKi50cG0JCQlzZXRmIHhtbAogCiAiIFhkZyBtZW51cwotYXUgQnVmTmV3RmlsZSxCdWZSZWFkIC9ldGMveGRnL21lbnVzLyoubWVudQlzZXRmIHhtbAorYXUgQnVmTmV3RmlsZSxCdWZSZWFkICovZXRjL3hkZy9tZW51cy8qLm1lbnUJc2V0ZiB4bWwKIAogIiBBVEkgZ3JhcGhpY3MgZHJpdmVyIGNvbmZpZ3VyYXRpb24KIGF1IEJ1Zk5ld0ZpbGUsQnVmUmVhZCBmZ2xyeHJjCQkJc2V0ZiB4bWwKQEAgLTIzNjksOCArMjM3Miw5IEBACiAiIE1vc3Qgb2YgdGhlc2Ugc2hvdWxkIGNhbGwgczpTdGFyU2V0ZigpIHRvIGF2b2lkIG5hbWVzIGVuZGluZyBpbiAuZ3ogYW5kIHRoZQogIiBsaWtlIGFyZSB1c2VkLgogCi0iIE1vcmUgQXBhY2hlIGZpbGVzLgotYXUgQnVmTmV3RmlsZSxCdWZSZWFkIC9ldGMvYXBhY2hlMi9jb25mLiovKiwvZXRjL2FwYWNoZTIvc2l0ZXMtKi8qLC9ldGMvYXBhY2hlMi9tb2RzLSovKgkJY2FsbCBzOlN0YXJTZXRmKCdhcGFjaGUnKQorIiBNb3JlIEFwYWNoZSBjb25maWcgZmlsZXMKK2F1IEJ1Zk5ld0ZpbGUsQnVmUmVhZCBhY2Nlc3MuY29uZiosYXBhY2hlLmNvbmYqLGFwYWNoZTIuY29uZiosaHR0cGQuY29uZiosc3JtLmNvbmYqCWNhbGwgczpTdGFyU2V0ZignYXBhY2hlJykKK2F1IEJ1Zk5ld0ZpbGUsQnVmUmVhZCAqL2V0Yy9hcGFjaGUyLyouY29uZiosKi9ldGMvYXBhY2hlMi9jb25mLiovKiwqL2V0Yy9hcGFjaGUyL21vZHMtKi8qLCovZXRjL2FwYWNoZTIvc2l0ZXMtKi8qLCovZXRjL2h0dHBkL2NvbmYuZC8qLmNvbmYqCQljYWxsIHM6U3RhclNldGYoJ2FwYWNoZScpCiAKICIgQXN0ZXJpc2sgY29uZmlnIGZpbGUKIGF1IEJ1Zk5ld0ZpbGUsQnVmUmVhZCAqYXN0ZXJpc2svKi5jb25mKgkJY2FsbCBzOlN0YXJTZXRmKCdhc3RlcmlzaycpCkBAIC0yMzkxLDEwICsyMzk1LDcgQEAKIAlcfGVuZGlmCiAKICIgQ3JvbnRhYgotYXUgQnVmTmV3RmlsZSxCdWZSZWFkIGNyb250YWIsY3JvbnRhYi4qLC9ldGMvY3Jvbi5kLyoJCWNhbGwgczpTdGFyU2V0ZignY3JvbnRhYicpCi0KLSIgRGViaWFuIFNvdXJjZXMubGlzdAotYXUgQnVmTmV3RmlsZSxCdWZSZWFkIC9ldGMvYXB0L3NvdXJjZXMubGlzdC5kLyoJY2FsbCBzOlN0YXJTZXRmKCdkZWJzb3VyY2VzJykKK2F1IEJ1Zk5ld0ZpbGUsQnVmUmVhZCBjcm9udGFiLGNyb250YWIuKiwqL2V0Yy9jcm9uLmQvKgkJY2FsbCBzOlN0YXJTZXRmKCdjcm9udGFiJykKIAogIiBEcmFjdWxhCiBhdSBCdWZOZXdGaWxlLEJ1ZlJlYWQgZHJhYy4qCQkJY2FsbCBzOlN0YXJTZXRmKCdkcmFjdWxhJykKQEAgLTI0MjksNyArMjQzMCw3IEBACiBhdSBCdWZOZXdGaWxlLEJ1ZlJlYWQgS2NvbmZpZy4qCQkJY2FsbCBzOlN0YXJTZXRmKCdrY29uZmlnJykKIAogIiBMb2djaGVjawotYXUgQnVmTmV3RmlsZSxCdWZSZWFkIC9ldGMvbG9nY2hlY2svKi5kKi8qCWNhbGwgczpTdGFyU2V0ZignbG9nY2hlY2snKQorYXUgQnVmTmV3RmlsZSxCdWZSZWFkICovZXRjL2xvZ2NoZWNrLyouZCovKgljYWxsIHM6U3RhclNldGYoJ2xvZ2NoZWNrJykKIAogIiBNYWtlZmlsZQogYXUgQnVmTmV3RmlsZSxCdWZSZWFkIFttTV1ha2VmaWxlKgkJY2FsbCBzOlN0YXJTZXRmKCdtYWtlJykKQEAgLTI0NDEsNyArMjQ0Miw3IEBACiBhdSBCdWZOZXdGaWxlLEJ1ZlJlYWQgbXV0dFtbOmFsbnVtOl0uXy1dXHs2XH0Jc2V0ZiBtYWlsCiAKICIgTW9kY29uZgotYXUgQnVmTmV3RmlsZSxCdWZSZWFkIC9ldGMvbW9kcHJvYmUuKgkJY2FsbCBzOlN0YXJTZXRmKCdtb2Rjb25mJykKK2F1IEJ1Zk5ld0ZpbGUsQnVmUmVhZCAqL2V0Yy9tb2Rwcm9iZS4qCQljYWxsIHM6U3RhclNldGYoJ21vZGNvbmYnKQogCiAiIE11dHQgc2V0dXAgZmlsZQogYXUgQnVmTmV3RmlsZSxCdWZSZWFkIC5tdXR0e25nLH1yYyosKi8ubXV0dHtuZyx9L211dHR7bmcsfXJjKgljYWxsIHM6U3RhclNldGYoJ211dHRyYycpCkBAIC0yNDUxLDcgKzI0NTIsNyBAQAogYXUgQnVmTmV3RmlsZSxCdWZSZWFkIHRtYWMuKgkJCWNhbGwgczpTdGFyU2V0ZignbnJvZmYnKQogCiAiIFBhbSBjb25mCi1hdSBCdWZOZXdGaWxlLEJ1ZlJlYWQgL2V0Yy9wYW0uZC8qCQljYWxsIHM6U3RhclNldGYoJ3BhbWNvbmYnKQorYXUgQnVmTmV3RmlsZSxCdWZSZWFkICovZXRjL3BhbS5kLyoJCWNhbGwgczpTdGFyU2V0ZigncGFtY29uZicpCiAKICIgUHJpbnRjYXAgYW5kIFRlcm1jYXAKIGF1IEJ1Zk5ld0ZpbGUsQnVmUmVhZCAqcHJpbnRjYXAqCkBAIC0yNDc0LDEwICsyNDc1LDEwIEBACiAKICIgWEZyZWU4NiBjb25maWcKIGF1IEJ1Zk5ld0ZpbGUsQnVmUmVhZCBYRjg2Q29uZmlnLTQqCi0JXCBsZXQgYjp4Zjg2Y194ZnJlZTg2X3ZlcnNpb24gPSA0IHwgY2FsbCBzOlN0YXJTZXRmKCd4Zjg2Y29uZicpCisJXCBsZXQgYjp4Zjg2Y29uZl94ZnJlZTg2X3ZlcnNpb24gPSA0IHwgY2FsbCBzOlN0YXJTZXRmKCd4Zjg2Y29uZicpCiBhdSBCdWZOZXdGaWxlLEJ1ZlJlYWQgWEY4NkNvbmZpZyoKIAlcIGlmIGdldGxpbmUoMSkgPX4gJ1w8WENvbmZpZ3VyYXRvclw+JwotCVx8ICBsZXQgYjp4Zjg2Y194ZnJlZTg2X3ZlcnNpb24gPSAzCisJXHwgIGxldCBiOnhmODZjb25mX3hmcmVlODZfdmVyc2lvbiA9IDMKIAlcfGVuZGlmCiAJXHxjYWxsIHM6U3RhclNldGYoJ3hmODZjb25mJykKIApAQCAtMjQ4NSw3ICsyNDg2LDcgQEAKIGF1IEJ1Zk5ld0ZpbGUsQnVmUmVhZCAqeG1vZG1hcCoJCQljYWxsIHM6U3RhclNldGYoJ3htb2RtYXAnKQogCiAiIFhpbmV0ZCBjb25mCi1hdSBCdWZOZXdGaWxlLEJ1ZlJlYWQgL2V0Yy94aW5ldGQuZC8qCQljYWxsIHM6U3RhclNldGYoJ3hpbmV0ZCcpCithdSBCdWZOZXdGaWxlLEJ1ZlJlYWQgKi9ldGMveGluZXRkLmQvKgkJY2FsbCBzOlN0YXJTZXRmKCd4aW5ldGQnKQogCiAiIFotU2hlbGwgc2NyaXB0CiBhdSBCdWZOZXdGaWxlLEJ1ZlJlYWQgenNoKix6bG9nKgkJY2FsbCBzOlN0YXJTZXRmKCd6c2gnKQpkaWZmIC0tZ2l0IGEvcnVudGltZS9mdHBsdWdpbi9zcWwudmltIGIvcnVudGltZS9mdHBsdWdpbi9zcWwudmltCmluZGV4IGNiYzhkY2MuLjdjNjg2NGEgMTAwNjQ0Ci0tLSBhL3J1bnRpbWUvZnRwbHVnaW4vc3FsLnZpbQorKysgYi9ydW50aW1lL2Z0cGx1Z2luL3NxbC52aW0KQEAgLTEsOCArMSw4IEBACiAiIFNRTCBmaWxldHlwZSBwbHVnaW4gZmlsZQogIiBMYW5ndWFnZTogICAgU1FMIChDb21tb24gZm9yIE9yYWNsZSwgTWljcm9zb2Z0IFNRTCBTZXJ2ZXIsIFN5YmFzZSkKLSIgVmVyc2lvbjogICAgIDcuMAotIiBNYWludGFpbmVyOiAgRGF2aWQgRmlzaGJ1cm4gPGZpc2hidXJuIGF0IGlhbnl3aGVyZSBkb3QgY29tPgotIiBMYXN0IENoYW5nZTogMjAxMCBKdW4gMTEKKyIgVmVyc2lvbjogICAgIDguMAorIiBNYWludGFpbmVyOiAgRGF2aWQgRmlzaGJ1cm4gPGRmaXNoYnVybiBkb3QgdmltIGF0IGdtYWlsIGRvdCBjb20+CisiIExhc3QgQ2hhbmdlOiAyMDExIEFwciAwMQogIiBEb3dubG9hZDogICAgaHR0cDovL3ZpbS5zb3VyY2Vmb3JnZS5uZXQvc2NyaXB0LnBocD9zY3JpcHRfaWQ9NDU0CiAKICIgRm9yIG1vcmUgZGV0YWlscyBwbGVhc2UgdXNlOgpAQCAtMzYsNiArMzYsMTAgQEAKICIKICIgSGlzdG9yeQogIgorIiBWZXJzaW9uIDguMAorIiAKKyIgTkY6IEltcHJvdmVkIHRoZSBtYXRjaGl0IHBsdWdpbiByZWdleCAoVGFsZWspCisiCiAiIFZlcnNpb24gNy4wCiAiIAogIiBORjogQ2FsbHMgdGhlIHNxbGNvbXBsZXRlI1Jlc2V0Q2FjaGVTeW50YXgoKSBmdW5jdGlvbiB3aGVuIGNhbGxpbmcKQEAgLTI5MCw2ICsyOTQsNyBAQAogICAgICIgV0hFTiBPVEhFUlMgVEhFTgogICAgICIKICAgICAiIGNyZWF0ZVsgb3IgcmVwbGFjZV0gcHJvY2VkdXJlfGZ1bmN0aW9ufGV2ZW50CisgICAgICAgICAgICAgICAgIiBcICdeXHMqXDxcJShkb1x8Zm9yXHx3aGlsZVx8bG9vcFwpXD4uKjonLgogCiAgICAgbGV0IGI6bWF0Y2hfd29yZHMgPQogCQlcICdcPGJlZ2luXD46XDxlbmRcPlxXKiQsJy4KQEAgLTI5OCwxMiArMzAzLDkgQEAKICAgICAgICAgICAgICAgICBcICdcPGVsc2lmXD5cfFw8ZWxzZWlmXD5cfFw8ZWxzZVw+OicuCiAgICAgICAgICAgICAgICAgXCAnXDxlbmRcc1wraWZcPiwnLgogICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICBcICdcPGRvXD5cfCcuCi0gICAgICAgICAgICAgICAgXCAnXDx3aGlsZVw+XHwnLgotICAgICAgICAgICAgICAgIFwgJ1wlKCcgLiBzOm5vdGVuZCAuICdcPGxvb3BcPlwpXHwnLgotICAgICAgICAgICAgICAgIFwgJ1wlKCcgLiBzOm5vdGVuZCAuICdcPGZvclw+XCk6Jy4KLSAgICAgICAgICAgICAgICBcICdcPGV4aXRcPlx8XDxsZWF2ZVw+XHxcPGJyZWFrXD5cfFw8Y29udGludWVcPjonLgotICAgICAgICAgICAgICAgIFwgJ1wlKFw8ZW5kXHNcK1wlKGZvclx8bG9vcFw+XClcKVx8XDxkb2VuZFw+LCcuCisgICAgICAgICAgICAgICAgXCAnXCheXHMqXClcQDw9XChcPFwlKGRvXHxmb3JcfHdoaWxlXHxsb29wXClcPi4qXCk6Jy4KKyAgICAgICAgICAgICAgICBcICdcJShcPGV4aXRcPlx8XDxsZWF2ZVw+XHxcPGJyZWFrXD5cfFw8Y29udGludWVcPlwpOicuCisgICAgICAgICAgICAgICAgXCAnXCUoXDxkb2VuZFw+XHxcJShcPGVuZFxzXCtcJShmb3JcfHdoaWxlXHxsb29wXD5cKVwpXCksJy4KICAgICAgICAgICAgICAgICBcCiAgICAgICAgICAgICAgICAgXCAnXCUoJy4gczpub3RlbmQgLiAnXDxjYXNlXD5cKTonLgogICAgICAgICAgICAgICAgIFwgJ1wlKCcuczp3aGVuX25vX21hdGNoZWRfb3Jfb3RoZXJzLidcKTonLgpkaWZmIC0tZ2l0IGEvcnVudGltZS9pbmRlbnQvcGFzY2FsLnZpbSBiL3J1bnRpbWUvaW5kZW50L3Bhc2NhbC52aW0KaW5kZXggYjFhNjUyZC4uNmRkMzAzMCAxMDA2NDQKLS0tIGEvcnVudGltZS9pbmRlbnQvcGFzY2FsLnZpbQorKysgYi9ydW50aW1lL2luZGVudC9wYXNjYWwudmltCkBAIC0yLDcgKzIsMTEgQEAKICIgTGFuZ3VhZ2U6ICAgIFBhc2NhbAogIiBNYWludGFpbmVyOiAgTmVpbCBDYXJ0ZXIgPG4uY2FydGVyQHN3YW5zZWEuYWMudWs+CiAiIENyZWF0ZWQ6ICAgICAyMDA0IEp1bCAxMwotIiBMYXN0IENoYW5nZTogMjAwNSBKdWwgMDUKKyIgTGFzdCBDaGFuZ2U6IDIwMTEgQXByIDAxCisiCisiIFRoaXMgaXMgdmVyc2lvbiAyLjAsIGEgY29tcGxldGUgcmV3cml0ZS4KKyIKKyIgRm9yIGZ1cnRoZXIgZG9jdW1lbnRhdGlvbiwgc2VlIGh0dHA6Ly9wc3kuc3dhbnNlYS5hYy51ay9zdGFmZi9jYXJ0ZXIvdmltLwogCiAKIGlmIGV4aXN0cygiYjpkaWRfaW5kZW50IikKQEAgLTM4LDcgKzQyLDE1IEBACiBlbmRmdW5jdGlvbgogCiAKK2Z1bmN0aW9uISBzOlB1cmlmeUNvZGUoIGxpbmVfbnVtICkKKwkiIFN0cmlwIGFueSB0cmFpbGluZyBjb21tZW50cyBhbmQgd2hpdGVzcGFjZQorCWxldCBwdXJlbGluZSA9ICdUT0RPJworCXJldHVybiBwdXJlbGluZQorZW5kZnVuY3Rpb24KKworCiBmdW5jdGlvbiEgR2V0UGFzY2FsSW5kZW50KCBsaW5lX251bSApCisKIAkiIExpbmUgMCBhbHdheXMgZ29lcyBhdCBjb2x1bW4gMAogCWlmIGE6bGluZV9udW0gPT0gMAogCQlyZXR1cm4gMApAQCAtNDYsMTI4ICs1OCwxNzEgQEAKIAogCWxldCB0aGlzX2NvZGVsaW5lID0gZ2V0bGluZSggYTpsaW5lX251bSApCiAKLQkiIElmIGluIHRoZSBtaWRkbGUgb2YgYSB0aHJlZS1wYXJ0IGNvbW1lbnQKKworCSIgU0FNRSBJTkRFTlQKKworCSIgTWlkZGxlIG9mIGEgdGhyZWUtcGFydCBjb21tZW50CiAJaWYgdGhpc19jb2RlbGluZSA9fiAnXlxzKlwqJwotCQlyZXR1cm4gaW5kZW50KCBhOmxpbmVfbnVtICkKKwkJcmV0dXJuIGluZGVudCggYTpsaW5lX251bSAtIDEpCiAJZW5kaWYKIAorCisJIiBDT0xVTU4gMSBBTFdBWVMKKworCSIgTGFzdCBsaW5lIG9mIHRoZSBwcm9ncmFtCisJaWYgdGhpc19jb2RlbGluZSA9fiAnXlxzKmVuZFwuJworCQlyZXR1cm4gMAorCWVuZGlmCisKKwkiIENvbXBpbGVyIGRpcmVjdGl2ZXMsIGFsbG93aW5nICIoKiIgYW5kICJ7IgorCSJpZiB0aGlzX2NvZGVsaW5lID1+ICdeXHMqXCh7XHwoXCpcKSRcKElGREVGXHxJRk5ERUZcfEVMU0VcfEVORElGXCknCisJaWYgdGhpc19jb2RlbGluZSA9fiAnXlxzKlwoe1x8KFwqXClcJCcKKwkJcmV0dXJuIDAKKwllbmRpZgorCisJIiBzZWN0aW9uIGhlYWRlcnMKKwlpZiB0aGlzX2NvZGVsaW5lID1+ICdeXHMqXChwcm9ncmFtXHxwcm9jZWR1cmVcfGZ1bmN0aW9uXHx0eXBlXClcPicKKwkJcmV0dXJuIDAKKwllbmRpZgorCisJIiBTdWJyb3V0aW5lIHNlcGFyYXRvcnMsIGxpbmVzIGVuZGluZyB3aXRoICJjb25zdCIgb3IgInZhciIKKwlpZiB0aGlzX2NvZGVsaW5lID1+ICdeXHMqXCgoXCpcIF9cK1wgXCopXHxcKGNvbnN0XHx2YXJcKVwpJCcKKwkJcmV0dXJuIDAKKwllbmRpZgorCisKKwkiIE9USEVSV0lTRSwgV0UgTkVFRCBUTyBMT09LIEZVUlRIRVIgQkFDSy4uLgorCiAJbGV0IHByZXZfY29kZWxpbmVfbnVtID0gczpHZXRQcmV2Tm9uQ29tbWVudExpbmVOdW0oIGE6bGluZV9udW0gKQogCWxldCBwcmV2X2NvZGVsaW5lID0gZ2V0bGluZSggcHJldl9jb2RlbGluZV9udW0gKQogCWxldCBpbmRudCA9IGluZGVudCggcHJldl9jb2RlbGluZV9udW0gKQogCi0JIiBDb21waWxlciBkaXJlY3RpdmVzIHNob3VsZCBhbHdheXMgZ28gaW4gY29sdW1uIHplcm8uCi0JaWYgdGhpc19jb2RlbGluZSA9fiAnXlxzKntcKFwkSUZERUZcfFwkRUxTRVx8XCRFTkRJRlwpJwotCQlyZXR1cm4gMAorCisJIiBJTkNSRUFTRSBJTkRFTlQKKworCSIgSWYgdGhlIFBSRVZJT1VTIExJTkUgZW5kZWQgaW4gdGhlc2UgaXRlbXMsIGFsd2F5cyBpbmRlbnQKKwlpZiBwcmV2X2NvZGVsaW5lID1+ICdcPFwodHlwZVx8Y29uc3RcfHZhclwpJCcKKwkJcmV0dXJuIGluZG50ICsgJnNoaWZ0d2lkdGgKIAllbmRpZgogCi0JIiBUaGVzZSBpdGVtcyBoYXZlIG5vdGhpbmcgYmVmb3JlIG9yIGFmdGVyIChub3QgZXZlbiBhIGNvbW1lbnQpLCBhbmQKLQkiIGdvIG9uIGNvbHVtbiAwLiBNYWtlIHN1cmUgdGhhdCB0aGUgXlxzKiBpcyBmb2xsb3dlZCBieSBcKCB0byBtYWtlCi0JIiBPUnMgd29yayBwcm9wZXJseSwgYW5kIG5vdCBpbmNsdWRlIHRoZSBzdGFydCBvZiBsaW5lICh0aGlzIG11c3QKLQkiIGFsd2F5cyBhcHBlYXIpLgotCSIgVGhlIGJyYWNrZXRlZCBleHByZXNzaW9uIHdpdGggdGhlIHVuZGVybGluZSBpcyBhIHJvdXRpbmUKLQkiIHNlcGFyYXRvci4gVGhpcyBpcyBvbmUgY2FzZSB3aGVyZSB3ZSBkbyBpbmRlbnQgY29tbWVudCBsaW5lcy4KLQlpZiB0aGlzX2NvZGVsaW5lID1+ICdeXHMqXCgoXCpcIF9cK1wgXCopXHxcPFwoY29uc3RcfHZhclwpXD5cKSQnCi0JCXJldHVybiAwCi0JZW5kaWYKLQotCSIgVGhlc2UgaXRlbXMgbWF5IGhhdmUgdGV4dCBhZnRlciB0aGVtLCBhbmQgZ28gb24gY29sdW1uIDAgKGluIG1vc3QKLQkiIGNhc2VzKS4gVGhlIHByb2JsZW0gaXMgdGhhdCAiZnVuY3Rpb24iIGFuZCAicHJvY2VkdXJlIiBrZXl3b3JkcwotCSIgc2hvdWxkIGJlIGluZGVudGVkIGlmIHdpdGhpbiBhIGNsYXNzIGRlY2xhcmF0aW9uLgotCWlmIHRoaXNfY29kZWxpbmUgPX4gJ15ccypcPFwocHJvZ3JhbVx8dHlwZVx8dXNlc1x8cHJvY2VkdXJlXHxmdW5jdGlvblwpXD4nCi0JCXJldHVybiAwCi0JZW5kaWYKLQotCSIgQkVHSU4KLQkiIElmIHRoZSBiZWdpbiBkb2VzIG5vdCBjb21lIGFmdGVyICJpZiIsICJmb3IiLCBvciAiZWxzZSIsIHRoZW4gaXQKLQkiIGdvZXMgaW4gY29sdW1uIDAKLQlpZiB0aGlzX2NvZGVsaW5lID1+ICdeXHMqYmVnaW5cPicgJiYgcHJldl9jb2RlbGluZSAhfiAnXlxzKlw8XChpZlx8Zm9yXHxlbHNlXClcPicKLQkJcmV0dXJuIDAKLQllbmRpZgotCi0JIiBUaGVzZSBrZXl3b3JkcyBhcmUgaW5kZW50ZWQgb25jZSBvbmx5LgotCWlmIHRoaXNfY29kZWxpbmUgPX4gJ15ccypcPFwocHJpdmF0ZVwpXD4nCi0JCXJldHVybiAmc2hpZnR3aWR0aAotCWVuZGlmCi0KLQkiIElmIHRoZSBQUkVWSU9VUyBMSU5FIGNvbnRhaW5lZCB0aGVzZSBpdGVtcywgdGhlIGN1cnJlbnQgbGluZSBpcwotCSIgYWx3YXlzIGluZGVudGVkIG9uY2UuCi0JaWYgcHJldl9jb2RlbGluZSA9fiAnXlxzKlw8XCh0eXBlXHx1c2VzXClcPicKLQkJcmV0dXJuICZzaGlmdHdpZHRoCi0JZW5kaWYKLQotCSIgVGhlc2Uga2V5d29yZHMgYXJlIGluZGVudGVkIG9uY2Ugb25seS4gUG9zc2libHkgc3Vycm91bmRlZCBieQotCSIgb3RoZXIgY2hhcnMuCi0JaWYgdGhpc19jb2RlbGluZSA9fiAnXi5cK1w8XChvYmplY3RcfHJlY29yZFwpXD4nCi0JCXJldHVybiAmc2hpZnR3aWR0aAotCWVuZGlmCi0KLQkiIElmIHRoZSBwcmV2aW91cyBsaW5lIHdhcyBpbmRlbnRpbmcuLi4KLQlpZiBwcmV2X2NvZGVsaW5lID1+ICdeXHMqXDxcKGZvclx8aWZcfGNhc2VcfGVsc2VcfGVuZFwgZWxzZVwpXD4nCi0JCSIgdGhlbiBpbmRlbnQuCi0JCWxldCBpbmRudCA9IGluZG50ICsgJnNoaWZ0d2lkdGgKLQkJIiBCVVQuLi4gaWYgdGhpcyBpcyB0aGUgc3RhcnQgb2YgYSBtdWx0aXN0YXRlbWVudCBibG9jayB0aGVuIHdlCi0JCSIgbmVlZCB0byBhbGlnbiB0aGUgYmVnaW4gd2l0aCB0aGUgcHJldmlvdXMgbGluZS4KLQkJaWYgdGhpc19jb2RlbGluZSA9fiAnXlxzKmJlZ2luXD4nCi0JCQlyZXR1cm4gaW5kbnQgLSAmc2hpZnR3aWR0aAotCQllbmRpZgotCi0JCSIgV2UgYWxzbyBuZWVkIHRvIGtlZXAgdGhlIGluZGVudGF0aW9uIGxldmVsIGNvbnN0YW50IGlmIHRoZQotCQkiIHdob2xlIGlmLXRoZW4gc3RhdGVtZW50IHdhcyBvbiBvbmUgbGluZS4KLQkJaWYgcHJldl9jb2RlbGluZSA9fiAnXDx0aGVuXD4uXCsnCi0JCQlsZXQgaW5kbnQgPSBpbmRudCAtICZzaGlmdHdpZHRoCi0JCWVuZGlmCi0JZW5kaWYKLQotCSIgUFJFVklPVVMtTElORSBCRUdJTgotCSIgSWYgdGhlIHByZXZpb3VzIGxpbmUgd2FzIGFuIGluZGVudGluZyBrZXl3b3JkIHRoZW4gaW5kZW50IG9uY2UuLi4KLQlpZiBwcmV2X2NvZGVsaW5lID1+ICdeXHMqXDxcKGNvbnN0XHx2YXJcfGJlZ2luXHxyZXBlYXRcfHByaXZhdGVcKVw+JwotCQkiIEJ1dCBvbmx5IGlmIHRoaXMgaXMgYW5vdGhlciB2YXIgaW4gYSBsaXN0LgotCQlpZiB0aGlzX2NvZGVsaW5lICF+ICdeXHMqdmFyXD4nCisJaWYgcHJldl9jb2RlbGluZSA9fiAnXDxyZXBlYXQkJworCQlpZiB0aGlzX2NvZGVsaW5lICF+ICdeXHMqdW50aWxcPicKIAkJCXJldHVybiBpbmRudCArICZzaGlmdHdpZHRoCisJCWVsc2UKKwkJCXJldHVybiBpbmRudAogCQllbmRpZgogCWVuZGlmCiAKLQkiIFBSRVZJT1VTLUxJTkUgQkVHSU4KLQkiIEluZGVudCBjb2RlIGFmdGVyIGEgY2FzZSBzdGF0ZW1lbnQgYmVnaW4KLQlpZiBwcmV2X2NvZGVsaW5lID1+ICdcOlwgYmVnaW5cPicKKwlpZiBwcmV2X2NvZGVsaW5lID1+ICdcPFwoYmVnaW5cfHJlY29yZFwpJCcKKwkJaWYgdGhpc19jb2RlbGluZSAhfiAnXlxzKmVuZFw+JworCQkJcmV0dXJuIGluZG50ICsgJnNoaWZ0d2lkdGgKKwkJZWxzZQorCQkJcmV0dXJuIGluZG50CisJCWVuZGlmCisJZW5kaWYKKworCSIgSWYgdGhlIFBSRVZJT1VTIExJTkUgZW5kZWQgd2l0aCB0aGVzZSBpdGVtcywgaW5kZW50IGlmIG5vdAorCSIgZm9sbG93ZWQgYnkgImJlZ2luIgorCWlmIHByZXZfY29kZWxpbmUgPX4gJ1w8XChcfGVsc2VcfHRoZW5cfGRvXCkkJyB8fCBwcmV2X2NvZGVsaW5lID1+ICc6JCcKKwkJaWYgdGhpc19jb2RlbGluZSAhfiAnXlxzKmJlZ2luXD4nCisJCQlyZXR1cm4gaW5kbnQgKyAmc2hpZnR3aWR0aAorCQllbHNlCisJCQkiIElmIGl0IGRvZXMgc3RhcnQgd2l0aCAiYmVnaW4iIHRoZW4ga2VlcCB0aGUgc2FtZSBpbmRlbnQKKwkJCSJyZXR1cm4gaW5kbnQgKyAmc2hpZnR3aWR0aAorCQkJcmV0dXJuIGluZG50CisJCWVuZGlmCisJZW5kaWYKKworCSIgSW5zaWRlIGEgcGFyYW1ldGVyIGxpc3QgKGkuZS4gYSAiKCIgd2l0aG91dCBhICIpIikuID8/Pz8gQ29uc2lkZXJzCisJIiBvbmx5IHRoZSBsaW5lIGJlZm9yZSB0aGUgY3VycmVudCBvbmUuIFRPRE86IEdldCBpdCB3b3JraW5nIGZvcgorCSIgcGFyYW1ldGVyIGxpc3RzIGxvbmdlciB0aGFuIHR3byBsaW5lcy4KKwlpZiBwcmV2X2NvZGVsaW5lID1+ICcoW14pXVwrJCcKIAkJcmV0dXJuIGluZG50ICsgJnNoaWZ0d2lkdGgKIAllbmRpZgogCi0JIiBUaGVzZSB3b3JkcyBtYXkgaGF2ZSB0ZXh0IGJlZm9yZSB0aGVtIG9uIHRoZSBsaW5lIChoZW5jZSB0aGUgLiopCi0JIiBidXQgYXJlIGZvbGxvd2VkIGJ5IG5vdGhpbmcuIEFsd2F5cyBpbmRlbnQgb25jZSBvbmx5LgotCWlmIHByZXZfY29kZWxpbmUgPX4gJ15cKC4qXHxccypcKVw8XChvYmplY3RcfHJlY29yZFwpXD4kJwotCQlyZXR1cm4gaW5kbnQgKyAmc2hpZnR3aWR0aAotCWVuZGlmCiAKLQkiIElmIHdlIGp1c3QgY2xvc2VkIGEgYnJhY2tldCB0aGF0IHN0YXJ0ZWQgb24gYSBwcmV2aW91cyBsaW5lLCB0aGVuCi0JIiB1bmluZGVudC4gQnV0IGRvbid0IHJldHVybiB5ZXQgLS0gd2UgbmVlZCB0byBjaGVjayBmb3IgZnVydGhlcgotCSIgdW5pbmRlbnRhdGlvbiAoZm9yIGVuZC91bnRpbC9lbHNlKQotCWlmIHByZXZfY29kZWxpbmUgPX4gJ15bXihdKlteKl0pJwotCQlsZXQgaW5kbnQgPSBpbmRudCAtICZzaGlmdHdpZHRoCi0JZW5kaWYKKwkiIERFQ1JFQVNFIElOREVOVAogCi0JIiBBdCB0aGUgZW5kIG9mIGEgYmxvY2ssIHdlIGhhdmUgdG8gdW5pbmRlbnQgYm90aCB0aGUgY3VycmVudCBsaW5lCi0JIiAodGhlICJlbmQiIGZvciBpbnN0YW5jZSkgYW5kIHRoZSBuZXdseS1jcmVhdGVkIGxpbmUuCi0JaWYgdGhpc19jb2RlbGluZSA9fiAnXlxzKlw8XChlbmRcfHVudGlsXHxlbHNlXClcPicKKwkiIExpbmVzIHN0YXJ0aW5nIHdpdGggImVsc2UiLCBidXQgbm90IGZvbGxvd2luZyBsaW5lIGVuZGluZyB3aXRoCisJIiAiZW5kIi4KKwlpZiB0aGlzX2NvZGVsaW5lID1+ICdeXHMqZWxzZVw+JyAmJiBwcmV2X2NvZGVsaW5lICF+ICdcPGVuZCQnCiAJCXJldHVybiBpbmRudCAtICZzaGlmdHdpZHRoCiAJZW5kaWYKIAotCSIgSWYgd2UgaGF2ZSBvcGVuZWQgYSBicmFja2V0IGFuZCBpdCBjb250aW51ZXMgb3ZlciBvbmUgbGluZSwKLQkiIHRoZW4gaW5kZW50IG9uY2UuCi0JIgotCSIgUkUgPSBhbiBvcGVuaW5nIGJyYWNrZXQgZm9sbG93ZWQgYnkgYW55IGFtb3VudCBvZiBhbnl0aGluZyBvdGhlcgotCSIgdGhhbiBhIGNsb3NpbmcgYnJhY2tldCBhbmQgdGhlbiB0aGUgZW5kLW9mLWxpbmUuCi0JIgotCSIgSWYgd2UgZGlkbid0IGluY2x1ZGUgdGhlIGVuZCBvZiBsaW5lLCB0aGlzIFJFIHdvdWxkIG1hdGNoIGV2ZW4KLQkiIGNsb3NlZCBicmFja2V0cywgc2luY2UgaXQgd291bGQgbWF0Y2ggZXZlcnl0aGluZyB1cCB0byB0aGUgY2xvc2luZwotCSIgYnJhY2tldC4KLQkiCi0JIiBUaGlzIHRlc3QgaXNuJ3QgY2xldmVyIGVub3VnaCB0byBoYW5kbGUgYnJhY2tldHMgaW5zaWRlIHN0cmluZ3Mgb3IKLQkiIGNvbW1lbnRzLgotCWlmIHByZXZfY29kZWxpbmUgPX4gJyhbXipdXD1bXildKiQnCisJIiBMaW5lcyBhZnRlciBhIHNpbmdsZS1zdGF0ZW1lbnQgYnJhbmNoL2xvb3AuCisJIiBUd28gbGluZXMgYmVmb3JlIGVuZGVkIGluICJ0aGVuIiwgImVsc2UiLCBvciAiZG8iCisJIiBQcmV2aW91cyBsaW5lIGRpZG4ndCBlbmQgaW4gImJlZ2luIgorCWxldCBwcmV2Ml9jb2RlbGluZV9udW0gPSBzOkdldFByZXZOb25Db21tZW50TGluZU51bSggcHJldl9jb2RlbGluZV9udW0gKQorCWxldCBwcmV2Ml9jb2RlbGluZSA9IGdldGxpbmUoIHByZXYyX2NvZGVsaW5lX251bSApCisJaWYgcHJldjJfY29kZWxpbmUgPX4gJ1w8XCh0aGVuXHxlbHNlXHxkb1wpJCcgJiYgcHJldl9jb2RlbGluZSAhfiAnXDxiZWdpbiQnCisJCSIgSWYgdGhlIG5leHQgY29kZSBsaW5lIGFmdGVyIGEgc2luZ2xlIHN0YXRlbWVudCBicmFuY2gvbG9vcAorCQkiIHN0YXJ0cyB3aXRoICJlbmQiLCAiZXhjZXB0IiBvciAiZmluYWxseSIsIHdlIG5lZWQgYW4KKwkJIiBhZGRpdGlvbmFsIHVuaW5kZW50YXRpb24uCisJCWlmIHRoaXNfY29kZWxpbmUgPX4gJ15ccypcKGVuZDtcfGV4Y2VwdFx8ZmluYWxseVx8XCkkJworCQkJIiBOb3RlIHRoYXQgd2UgZG9uJ3QgcmV0dXJuIGZyb20gaGVyZS4KKwkJCXJldHVybiBpbmRudCAtICZzaGlmdHdpZHRoIC0gJnNoaWZ0d2lkdGgKKwkJZW5kaWYKKwkJcmV0dXJuIGluZG50IC0gJnNoaWZ0d2lkdGgKKwllbmRpZgorCisJIiBMaW5lcyBzdGFydGluZyB3aXRoICJ1bnRpbCIgb3IgImVuZCIuIFRoaXMgcnVsZSBtdXN0IGJlIG92ZXJyaWRkZW4KKwkiIGJ5IHRoZSBvbmUgZm9yICJlbmQiIGFmdGVyIGEgc2luZ2xlLXN0YXRlbWVudCBicmFuY2gvbG9vcC4gSW4KKwkiIG90aGVyIHdvcmRzIHRoYXQgcnVsZSBzaG91bGQgY29tZSBiZWZvcmUgdGhpcyBvbmUuCisJaWYgdGhpc19jb2RlbGluZSA9fiAnXlxzKlwoZW5kXHx1bnRpbFwpXD4nCisJCXJldHVybiBpbmRudCAtICZzaGlmdHdpZHRoCisJZW5kaWYKKworCisJIiBNSVNDRUxMQU5FT1VTIFRISU5HUyBUTyBDQVRDSAorCisJIiBNb3N0ICJiZWdpbiJzIHdpbGwgaGF2ZSBiZWVuIGhhbmRsZWQgYnkgbm93LiBBbnkgcmVtYWluaW5nCisJIiAiYmVnaW4icyBvbiB0aGVpciBvd24gbGluZSBzaG91bGQgZ28gaW4gY29sdW1uIDEuCisJaWYgdGhpc19jb2RlbGluZSA9fiAnXlxzKmJlZ2luJCcKKwkJcmV0dXJuIDAKKwllbmRpZgorCisKKyIgX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KKyIgT2JqZWN0L0JvcmxhbmQgUGFzY2FsL0RlbHBoaSBFeHRlbnNpb25zCisiCisiIE5vdGUgdGhhdCBleHRlbmRlZC1wYXNjYWwgaXMgaGFuZGxlZCBoZXJlLCB1bmxlc3MgaXQgaXMgc2ltcGxlciB0bworIiBoYW5kbGUgdGhlbSBpbiB0aGUgc3RhbmRhcmQtcGFzY2FsIHNlY3Rpb24gYWJvdmUuCisKKworCSIgQ09MVU1OIDEgQUxXQVlTCisKKwkiIHNlY3Rpb24gaGVhZGVycyBhdCBzdGFydCBvZiBsaW5lLgorCWlmIHRoaXNfY29kZWxpbmUgPX4gJ15ccypcKGludGVyZmFjZVx8aW1wbGVtZW50YXRpb25cfHVzZXNcfHVuaXRcKVw+JworCQlyZXR1cm4gMAorCWVuZGlmCisKKworCSIgSU5ERU5UIE9OQ0UKKworCSIgSWYgdGhlIFBSRVZJT1VTIExJTkUgZW5kZWQgaW4gdGhlc2UgaXRlbXMsIGFsd2F5cyBpbmRlbnQuCisJaWYgcHJldl9jb2RlbGluZSA9fiAnXlxzKlwodW5pdFx8dXNlc1x8dHJ5XHxleGNlcHRcfGZpbmFsbHlcfHByaXZhdGVcfHByb3RlY3RlZFx8cHVibGljXHxwdWJsaXNoZWRcKSQnCiAJCXJldHVybiBpbmRudCArICZzaGlmdHdpZHRoCiAJZW5kaWYKIAorCSIgPz8/PyBJbmRlbnQgInByb2NlZHVyZSIgYW5kICJmdW5jdGlvbnMiIGlmIHRoZXkgYXBwZWFyIHdpdGhpbiBhbgorCSIgY2xhc3Mvb2JqZWN0IGRlZmluaXRpb24uIEJ1dCB0aGF0IG1lYW5zIG92ZXJyaWRpbmcgc3RhbmRhcmQtcGFzY2FsCisJIiBydWxlIHdoZXJlIHRoZXNlIHdvcmRzIGFsd2F5cyBnbyBpbiBjb2x1bW4gMS4KKworCisJIiBVTklOREVOVCBPTkNFCisKKwlpZiB0aGlzX2NvZGVsaW5lID1+ICdeXHMqXChleGNlcHRcfGZpbmFsbHlcKSQnCisJCXJldHVybiBpbmRudCAtICZzaGlmdHdpZHRoCisJZW5kaWYKKworCWlmIHRoaXNfY29kZWxpbmUgPX4gJ15ccypcKHByaXZhdGVcfHByb3RlY3RlZFx8cHVibGljXHxwdWJsaXNoZWRcKSQnCisJCXJldHVybiBpbmRudCAtICZzaGlmdHdpZHRoCisJZW5kaWYKKworCisiIF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCisKKwkiIElmIG5vdGhpbmcgY2hhbmdlZCwgcmV0dXJuIHNhbWUgaW5kZW50LgogCXJldHVybiBpbmRudAogZW5kZnVuY3Rpb24KIApkaWZmIC0tZ2l0IGEvcnVudGltZS9sYW5nL21lbnVfamFfanAuZXVjLWpwLnZpbSBiL3J1bnRpbWUvbGFuZy9tZW51X2phX2pwLmV1Yy1qcC52aW0KaW5kZXggZjIzMTg1Ny4uMTZiN2VlZSAxMDA2NDQKLS0tIGEvcnVudGltZS9sYW5nL21lbnVfamFfanAuZXVjLWpwLnZpbQorKysgYi9ydW50aW1lL2xhbmcvbWVudV9qYV9qcC5ldWMtanAudmltCkBAIC0xLDggKzEsOCBAQAogIiB2aTpzZXQgdHM9OCBzdHM9OCBzdz04IHR3PTA6CiAiCiAiIE1lbnUgVHJhbnNsYXRpb25zOglKYXBhbmVzZSAoRVVDLUpQKQotIiBUcmFuc2xhdGVkIEJ5OglNVVJBT0tBIFRhcm8gIDxrb3JvbkB0a2EuYXR0Lm5lLmpwPgotIiBMYXN0IENoYW5nZToJCTE4LUFwci0yMDA2LgorIiBUcmFuc2xhdGVkIEJ5OglNVVJBT0tBIFRhcm8gIDxrb3Jvbi5rYW9yaXlhQGdtYWlsLmNvbT4KKyIgTGFzdCBDaGFuZ2U6CQkyMS1NYXItMjAxMS4KIAogIiBRdWl0IHdoZW4gbWVudSB0cmFuc2xhdGlvbnMgaGF2ZSBhbHJlYWR5IGJlZW4gZG9uZS4KIGlmIGV4aXN0cygiZGlkX21lbnVfdHJhbnMiKQpAQCAtOTksNiArOTksOCBAQAogbWVudXRyYW5zIEYmaWxlXCBTZXR0aW5ncwkJpdWloaWkpevA38TqKCZJKQogbWVudXRyYW5zIFRvZ2dsZVwgTGluZVwgJk51bWJlcmluZzxUYWI+OnNldFwgbnUhCiAJXAm51MjWuebJvbyowNrC2CgmTik8VGFiPjpzZXRcIG51IQorbWVudXRyYW5zIFRvZ2dsZVwgcmVsYXRpJnZlXCBMaW5lXCBOdW1iZXJpbmc8VGFiPjpzZXRcIHJudSEKKwlcCcHqwtC51MjWuebJvbyowNrC2CgmVik8VGFiPjpzZXRcIHJudSEKIG1lbnV0cmFucyBUb2dnbGVcICZMaXN0XCBNb2RlPFRhYj46c2V0XCBsaXN0IQogCVwgpeqluaXIpeKhvKXJwNrC2CgmTCk8VGFiPjpzZXRcIGxpc3QhCiBtZW51dHJhbnMgVG9nZ2xlXCBMaW5lXCAmV3JhcDxUYWI+OnNldFwgd3JhcCEKQEAgLTE0OSw3ICsxNTEsNyBAQAogIiBUb29scy5TcGVsbGluZyBNZW51CiBtZW51dHJhbnMgJlNwZWxsaW5nCQkJpbml2qXqpfOlsCgmUykKIG1lbnV0cmFucyAmU3BlbGxcIENoZWNrXCBPbgkJpbml2qXrpcGlp6XDpa/Nrbj6KCZTKQotbWVudXRyYW5zIFNwZWxsXCBDaGVja1wgJk9mZgkJpbml2qXrpcGlp6XDpa/Nrbj6KCZPKQorbWVudXRyYW5zIFNwZWxsXCBDaGVja1wgJk9mZgkJpbml2qXrpcGlp6XDpa/Mtbj6KCZPKQogbWVudXRyYW5zIFRvXCAmTmV4dFwgZXJyb3I8VGFiPl1zCbyhpM6lqKXpobwoJk4pPFRhYj5dcwogbWVudXRyYW5zIFRvXCAmUHJldmlvdXNcIGVycm9yPFRhYj5bcwnBsKTOpail6aG8KCZQKTxUYWI+W3MKIG1lbnV0cmFucyBTdWdnZXN0XCAmQ29ycmVjdGlvbnM8VGFiPno9Cb2kwLW49crkKCZDKTxUYWI+ej0KZGlmZiAtLWdpdCBhL3J1bnRpbWUvbGFuZy9tZW51X2phX2pwLnV0Zi04LnZpbSBiL3J1bnRpbWUvbGFuZy9tZW51X2phX2pwLnV0Zi04LnZpbQppbmRleCBiMjMxMDA1Li5kNTRkZmQ1IDEwMDY0NAotLS0gYS9ydW50aW1lL2xhbmcvbWVudV9qYV9qcC51dGYtOC52aW0KKysrIGIvcnVudGltZS9sYW5nL21lbnVfamFfanAudXRmLTgudmltCkBAIC0xLDggKzEsOCBAQAogIiB2aTpzZXQgdHM9OCBzdHM9OCBzdz04IHR3PTA6CiAiCiAiIE1lbnUgVHJhbnNsYXRpb25zOglKYXBhbmVzZSAoVVRGLTgpCi0iIFRyYW5zbGF0ZWQgQnk6CU1VUkFPS0EgVGFybyAgPGtvcm9uQHRrYS5hdHQubmUuanA+Ci0iIExhc3QgQ2hhbmdlOgkJMTgtQXByLTIwMDYuCisiIFRyYW5zbGF0ZWQgQnk6CU1VUkFPS0EgVGFybyAgPGtvcm9uLmthb3JpeWFAZ21haWwuY29tPgorIiBMYXN0IENoYW5nZToJCTIxLU1hci0yMDExLgogCiAiIFF1aXQgd2hlbiBtZW51IHRyYW5zbGF0aW9ucyBoYXZlIGFscmVhZHkgYmVlbiBkb25lLgogaWYgZXhpc3RzKCJkaWRfbWVudV90cmFucyIpCkBAIC05OSw2ICs5OSw4IEBACiBtZW51dHJhbnMgRiZpbGVcIFNldHRpbmdzCQnjg5XjgqHjgqTjg6voqK3lrpooJkkpCiBtZW51dHJhbnMgVG9nZ2xlXCBMaW5lXCAmTnVtYmVyaW5nPFRhYj46c2V0XCBudSEKIAlcCeihjOeVquWPt+ihqOekuuWIh+abvygmTik8VGFiPjpzZXRcIG51IQorbWVudXRyYW5zIFRvZ2dsZVwgcmVsYXRpJnZlXCBMaW5lXCBOdW1iZXJpbmc8VGFiPjpzZXRcIHJudSEKKwlcCeebuOWvvuihjOeVquWPt+ihqOekuuWIh+abvygmVik8VGFiPjpzZXRcIHJudSEKIG1lbnV0cmFucyBUb2dnbGVcICZMaXN0XCBNb2RlPFRhYj46c2V0XCBsaXN0IQogCVwg44Oq44K544OI44Oi44O844OJ5YiH5pu/KCZMKTxUYWI+OnNldFwgbGlzdCEKIG1lbnV0cmFucyBUb2dnbGVcIExpbmVcICZXcmFwPFRhYj46c2V0XCB3cmFwIQpAQCAtMTQ5LDcgKzE1MSw3IEBACiAiIFRvb2xzLlNwZWxsaW5nIE1lbnUKIG1lbnV0cmFucyAmU3BlbGxpbmcJCQnjgrnjg5rjg6rjg7PjgrAoJlMpCiBtZW51dHJhbnMgJlNwZWxsXCBDaGVja1wgT24JCeOCueODmuODq+ODgeOCp+ODg+OCr+acieWKuSgmUykKLW1lbnV0cmFucyBTcGVsbFwgQ2hlY2tcICZPZmYJCeOCueODmuODq+ODgeOCp+ODg+OCr+acieWKuSgmTykKK21lbnV0cmFucyBTcGVsbFwgQ2hlY2tcICZPZmYJCeOCueODmuODq+ODgeOCp+ODg+OCr+eEoeWKuSgmTykKIG1lbnV0cmFucyBUb1wgJk5leHRcIGVycm9yPFRhYj5dcwnmrKHjga7jgqjjg6njg7woJk4pPFRhYj5dcwogbWVudXRyYW5zIFRvXCAmUHJldmlvdXNcIGVycm9yPFRhYj5bcwnliY3jga7jgqjjg6njg7woJlApPFRhYj5bcwogbWVudXRyYW5zIFN1Z2dlc3RcICZDb3JyZWN0aW9uczxUYWI+ej0J5L+u5q2j5YCZ6KOcKCZDKTxUYWI+ej0KZGlmZiAtLWdpdCBhL3J1bnRpbWUvbGFuZy9tZW51X2phcGFuZXNlX2phcGFuLjkzMi52aW0gYi9ydW50aW1lL2xhbmcvbWVudV9qYXBhbmVzZV9qYXBhbi45MzIudmltCmluZGV4IDA5OTc2YTkuLjk3ODdiOWIgMTAwNjQ0Ci0tLSBhL3J1bnRpbWUvbGFuZy9tZW51X2phcGFuZXNlX2phcGFuLjkzMi52aW0KKysrIGIvcnVudGltZS9sYW5nL21lbnVfamFwYW5lc2VfamFwYW4uOTMyLnZpbQpAQCAtMSw4ICsxLDggQEAKICIgdmk6c2V0IHRzPTggc3RzPTggc3c9OCB0dz0wOgogIgogIiBNZW51IFRyYW5zbGF0aW9uczoJSmFwYW5lc2UgKENQOTMyKQotIiBUcmFuc2xhdGVkIEJ5OglNVVJBT0tBIFRhcm8gIDxrb3JvbkB0a2EuYXR0Lm5lLmpwPgotIiBMYXN0IENoYW5nZToJCTE4LUFwci0yMDA2LgorIiBUcmFuc2xhdGVkIEJ5OglNVVJBT0tBIFRhcm8gIDxrb3Jvbi5rYW9yaXlhQGdtYWlsLmNvbT4KKyIgTGFzdCBDaGFuZ2U6CQkyMS1NYXItMjAxMS4KIAogIiBRdWl0IHdoZW4gbWVudSB0cmFuc2xhdGlvbnMgaGF2ZSBhbHJlYWR5IGJlZW4gZG9uZS4KIGlmIGV4aXN0cygiZGlkX21lbnVfdHJhbnMiKQpAQCAtOTksNiArOTksOCBAQAogbWVudXRyYW5zIEYmaWxlXCBTZXR0aW5ncwkJg3SDQINDg4uQ3ZLoKCZJKQogbWVudXRyYW5zIFRvZ2dsZVwgTGluZVwgJk51bWJlcmluZzxUYWI+OnNldFwgbnUhCiAJXAmNc5TUjYaVXI6mkNiR1igmTik8VGFiPjpzZXRcIG51IQorbWVudXRyYW5zIFRvZ2dsZVwgcmVsYXRpJnZlXCBMaW5lXCBOdW1iZXJpbmc8VGFiPjpzZXRcIHJudSEKKwlcCZGKkc6Nc5TUjYaVXI6mkNiR1igmVik8VGFiPjpzZXRcIHJudSEKIG1lbnV0cmFucyBUb2dnbGVcICZMaXN0XCBNb2RlPFRhYj46c2V0XCBsaXN0IQogCVwgg4qDWINng4KBW4NokNiR1igmTCk8VGFiPjpzZXRcIGxpc3QhCiBtZW51dHJhbnMgVG9nZ2xlXCBMaW5lXCAmV3JhcDxUYWI+OnNldFwgd3JhcCEKQEAgLTE0OSw3ICsxNTEsNyBAQAogIiBUb29scy5TcGVsbGluZyBNZW51CiBtZW51dHJhbnMgJlNwZWxsaW5nCQkJg1iDeYOKg5ODTygmUykKIG1lbnV0cmFucyAmU3BlbGxcIENoZWNrXCBPbgkJg1iDeYOLg2CDRoNig06XTIz4KCZTKQotbWVudXRyYW5zIFNwZWxsXCBDaGVja1wgJk9mZgkJg1iDeYOLg2CDRoNig06XTIz4KCZPKQorbWVudXRyYW5zIFNwZWxsXCBDaGVja1wgJk9mZgkJg1iDeYOLg2CDRoNig06Ws4z4KCZPKQogbWVudXRyYW5zIFRvXCAmTmV4dFwgZXJyb3I8VGFiPl1zCY6fgsyDR4OJgVsoJk4pPFRhYj5dcwogbWVudXRyYW5zIFRvXCAmUHJldmlvdXNcIGVycm9yPFRhYj5bcwmRT4LMg0eDiYFbKCZQKTxUYWI+W3MKIG1lbnV0cmFucyBTdWdnZXN0XCAmQ29ycmVjdGlvbnM8VGFiPno9CY9DkLOM85XiKCZDKTxUYWI+ej0KZGlmZiAtLWdpdCBhL3J1bnRpbWUvcGx1Z2luL25ldHJ3UGx1Z2luLnZpbSBiL3J1bnRpbWUvcGx1Z2luL25ldHJ3UGx1Z2luLnZpbQppbmRleCAzY2U3MTBiLi45ODMzZTJiIDEwMDY0NAotLS0gYS9ydW50aW1lL3BsdWdpbi9uZXRyd1BsdWdpbi52aW0KKysrIGIvcnVudGltZS9wbHVnaW4vbmV0cndQbHVnaW4udmltCkBAIC0xLDYgKzEsNiBAQAogIiBuZXRyd1BsdWdpbi52aW06IEhhbmRsZXMgZmlsZSB0cmFuc2ZlciBhbmQgcmVtb3RlIGRpcmVjdG9yeSBsaXN0aW5nIGFjcm9zcyBhIG5ldHdvcmsKICIgICAgICAgICAgICBQTFVHSU4gU0VDVElPTgotIiBEYXRlOgkJSnVsIDI3LCAyMDEwCisiIERhdGU6CQlGZWIgMTAsIDIwMTEKICIgTWFpbnRhaW5lcjoJQ2hhcmxlcyBFIENhbXBiZWxsLCBKciA8TmRyT2NoaXBAU2NhbXBiZWxsUGZhbWlseS5BYml6TS1OT1NQQU0+CiAiIEdldExhdGVzdFZpbVNjcmlwdHM6IDEwNzUgMSA6QXV0b0luc3RhbGw6IG5ldHJ3LnZpbQogIiBDb3B5cmlnaHQ6ICAgIENvcHlyaWdodCAoQykgMTk5OS0yMDA4IENoYXJsZXMgRS4gQ2FtcGJlbGwsIEpyLiB7e3sxCkBAIC0yMCw3ICsyMCw3IEBACiBpZiAmY3AgfHwgZXhpc3RzKCJnOmxvYWRlZF9uZXRyd1BsdWdpbiIpCiAgZmluaXNoCiBlbmRpZgotbGV0IGc6bG9hZGVkX25ldHJ3UGx1Z2luID0gInYxNDAiCitsZXQgZzpsb2FkZWRfbmV0cndQbHVnaW4gPSAidjE0MSIKIGlmIHY6dmVyc2lvbiA8IDcwMgogIGVjaG9obCBXYXJuaW5nTXNnIHwgZWNobyAiKioqbmV0cncqKiogeW91IG5lZWQgdmltIHZlcnNpb24gNy4yIGZvciB0aGlzIHZlcnNpb24gb2YgbmV0cnciIHwgZWNob2hsIE5vbmUKICBmaW5pc2gKQEAgLTM0LDEwICszNCwxMyBAQAogIiBMb2NhbCBCcm93c2luZzoge3t7MgogYXVncm91cCBGaWxlRXhwbG9yZXIKICBhdSEKLSBhdSBCdWZFbnRlciAqIHNpbGVudCEgY2FsbCBzOkxvY2FsQnJvd3NlKGV4cGFuZCgiPGFtYXRjaD4iKSkKLSBhdSBWaW1FbnRlciAqIHNpbGVudCEgY2FsbCBzOlZpbUVudGVyKGV4cGFuZCgiPGFtYXRjaD4iKSkKKyIgYXUgQnVmUmVhZENtZCAqWy9cXF0Jc2lsISBjYWxsIHM6TG9jYWxCcm93c2UoZXhwYW5kKCI8YW1hdGNoPiIpKSAKKyIgYXUgQnVmRW50ZXIgKlteL1xcXQlzaWwhIGNhbGwgczpMb2NhbEJyb3dzZShleHBhbmQoIjxhbWF0Y2g+IikpCisiIGF1IFZpbUVudGVyICpbXi9cXF0Jc2lsISBjYWxsIHM6VmltRW50ZXIoZXhwYW5kKCI8YW1hdGNoPiIpKQorIGF1IEJ1ZkVudGVyICoJc2lsISBjYWxsIHM6TG9jYWxCcm93c2UoZXhwYW5kKCI8YW1hdGNoPiIpKQorIGF1IFZpbUVudGVyICoJc2lsISBjYWxsIHM6VmltRW50ZXIoZXhwYW5kKCI8YW1hdGNoPiIpKQogIGlmIGhhcygid2luMzIiKSB8fCBoYXMoIndpbjk1IikgfHwgaGFzKCJ3aW42NCIpIHx8IGhhcygid2luMTYiKQotICBhdSBCdWZFbnRlciAuKiBzaWxlbnQhIGNhbGwgczpMb2NhbEJyb3dzZShleHBhbmQoIjxhbWF0Y2g+IikpCisgIGF1IEJ1ZkVudGVyIC4qIHNpbCEgY2FsbCBzOkxvY2FsQnJvd3NlKGV4cGFuZCgiPGFtYXRjaD4iKSkKICBlbmRpZgogYXVncm91cCBFTkQKIApAQCAtNDUsMTAgKzQ4LDEwIEBACiBhdWdyb3VwIE5ldHdvcmsKICBhdSEKICBpZiBoYXMoIndpbjMyIikgfHwgaGFzKCJ3aW45NSIpIHx8IGhhcygid2luNjQiKSB8fCBoYXMoIndpbjE2IikKLSAgYXUgQnVmUmVhZENtZCAgZmlsZTovLyoJCWV4ZSAic2lsZW50IGRvYXUgQnVmUmVhZFByZSAiLmZuYW1lZXNjYXBlKG5ldHJ3I1JGQzIzOTYoZXhwYW5kKCI8YW1hdGNoPiIpKSl8ZXhlICdlICcuZm5hbWVlc2NhcGUoc3Vic3RpdHV0ZShuZXRydyNSRkMyMzk2KGV4cGFuZCgiPGFtYXRjaD4iKSksJ2ZpbGU6Ly9cKC4qXCknLCdcMScsIiIpKXxleGUgImJ3aXBlICIuZm5hbWVlc2NhcGUoZXhwYW5kKCI8YW1hdGNoPiIpKXxleGUgInNpbGVudCBkb2F1IEJ1ZlJlYWRQb3N0ICIuZm5hbWVlc2NhcGUobmV0cncjUkZDMjM5NihleHBhbmQoIjxhbWF0Y2g+IikpKQorICBhdSBCdWZSZWFkQ21kICBmaWxlOi8vKgkJY2FsbCBuZXRydyNGaWxlVXJsUmVhZChleHBhbmQoIjxhbWF0Y2g+IikpCiAgZWxzZQotICBhdSBCdWZSZWFkQ21kICBmaWxlOi8vKgkJZXhlICJzaWxlbnQgZG9hdSBCdWZSZWFkUHJlICIuZm5hbWVlc2NhcGUobmV0cncjUkZDMjM5NihleHBhbmQoIjxhbWF0Y2g+IikpKXxleGUgJ2UgJy5mbmFtZWVzY2FwZShzdWJzdGl0dXRlKG5ldHJ3I1JGQzIzOTYoZXhwYW5kKCI8YW1hdGNoPiIpKSwnZmlsZTovL1woLipcKScsJ1wxJywiIikpfGV4ZSAiYndpcGUgIi5mbmFtZWVzY2FwZShleHBhbmQoIjxhbWF0Y2g+IikpfGV4ZSAic2lsZW50IGRvYXUgQnVmUmVhZFBvc3QgIi5mbmFtZWVzY2FwZShuZXRydyNSRkMyMzk2KGV4cGFuZCgiPGFtYXRjaD4iKSkpCi0gIGF1IEJ1ZlJlYWRDbWQgIGZpbGU6Ly9sb2NhbGhvc3QvKglleGUgInNpbGVudCBkb2F1IEJ1ZlJlYWRQcmUgIi5mbmFtZWVzY2FwZShuZXRydyNSRkMyMzk2KGV4cGFuZCgiPGFtYXRjaD4iKSkpfGV4ZSAnZSAnLmZuYW1lZXNjYXBlKHN1YnN0aXR1dGUobmV0cncjUkZDMjM5NihleHBhbmQoIjxhbWF0Y2g+IikpLCdmaWxlOi8vbG9jYWxob3N0L1woLipcKScsJ1wxJywiIikpfGV4ZSAiYndpcGUgIi5mbmFtZWVzY2FwZShzdWJzdGl0dXRlKGV4cGFuZCgiPGFtYXRjaD4iKSwnZmlsZTovL1woXGtcK0BcKVw9JywnJywnJykpfGV4ZSAic2lsZW50IGRvYXUgQnVmUmVhZFBvc3QgIi5mbmFtZWVzY2FwZShuZXRydyNSRkMyMzk2KGV4cGFuZCgiPGFtYXRjaD4iKSkpCisgIGF1IEJ1ZlJlYWRDbWQgIGZpbGU6Ly8qCQljYWxsIG5ldHJ3I0ZpbGVVcmxSZWFkKGV4cGFuZCgiPGFtYXRjaD4iKSkKKyAgYXUgQnVmUmVhZENtZCAgZmlsZTovL2xvY2FsaG9zdC8qCWNhbGwgbmV0cncjRmlsZVVybFJlYWQoc3Vic3RpdHV0ZShleHBhbmQoIjxhbWF0Y2g+IikpLCdmaWxlOi8vbG9jYWxob3N0LycsJ2ZpbGU6Ly8vJywnJykKICBlbmRpZgogIGF1IEJ1ZlJlYWRDbWQgICBmdHA6Ly8qLHJjcDovLyosc2NwOi8vKixodHRwOi8vKixkYXY6Ly8qLGRhdnM6Ly8qLHJzeW5jOi8vKixzZnRwOi8vKglleGUgInNpbGVudCBkb2F1IEJ1ZlJlYWRQcmUgIi5mbmFtZWVzY2FwZShleHBhbmQoIjxhbWF0Y2g+IikpfGNhbGwgbmV0cncjTnJlYWQoMixleHBhbmQoIjxhbWF0Y2g+IikpfGV4ZSAic2lsZW50IGRvYXUgQnVmUmVhZFBvc3QgIi5mbmFtZWVzY2FwZShleHBhbmQoIjxhbWF0Y2g+IikpCiAgYXUgRmlsZVJlYWRDbWQgIGZ0cDovLyoscmNwOi8vKixzY3A6Ly8qLGh0dHA6Ly8qLGRhdjovLyosZGF2czovLyoscnN5bmM6Ly8qLHNmdHA6Ly8qCWV4ZSAic2lsZW50IGRvYXUgRmlsZVJlYWRQcmUgIi5mbmFtZWVzY2FwZShleHBhbmQoIjxhbWF0Y2g+IikpfGNhbGwgbmV0cncjTnJlYWQoMSxleHBhbmQoIjxhbWF0Y2g+IikpfGV4ZSAic2lsZW50IGRvYXUgRmlsZVJlYWRQb3N0ICIuZm5hbWVlc2NhcGUoZXhwYW5kKCI8YW1hdGNoPiIpKQpAQCAtMTAwLDExICsxMDMsMTEgQEAKICAgICIgc3RyaW5nIGlzIHRoZSBjdXJyZW50IGRpcmVjdG9yeSBhbmQgbm90IGNoZWNraW5nIHdvdWxkIGJyZWFrCiAgICAiIHRoaW5ncyBzdWNoIGFzIHRoZSBoZWxwIGNvbW1hbmQuCiAgICBpZiBhOmRpcm5hbWUgIT0gJycgJiYgaXNkaXJlY3RvcnkoYTpkaXJuYW1lKQotICAgIHNpbGVudCEgY2FsbCBuZXRydyNMb2NhbEJyb3dzZUNoZWNrKGE6ZGlybmFtZSkKKyAgICBzaWwhIGNhbGwgbmV0cncjTG9jYWxCcm93c2VDaGVjayhhOmRpcm5hbWUpCiAgICBlbmRpZgogICBlbHNlaWYgaXNkaXJlY3RvcnkoYTpkaXJuYW1lKQogIiAgIGVjaG9tc2cgImRpcm5hbWU8Ii5kaXJuYW1lLiI+IGlzZGlyIgotICAgc2lsZW50ISBjYWxsIG5ldHJ3I0xvY2FsQnJvd3NlQ2hlY2soYTpkaXJuYW1lKQorICAgc2lsISBjYWxsIG5ldHJ3I0xvY2FsQnJvd3NlQ2hlY2soYTpkaXJuYW1lKQogICBlbmRpZgogICAiIG5vdCBhIGRpcmVjdG9yeSwgaWdub3JlIGl0CiBlbmRmdW4KZGlmZiAtLWdpdCBhL3J1bnRpbWUvc3ludGF4L25ldHJ3LnZpbSBiL3J1bnRpbWUvc3ludGF4L25ldHJ3LnZpbQppbmRleCBmNmZkNjZjLi4xNzk2ZmMxIDEwMDY0NAotLS0gYS9ydW50aW1lL3N5bnRheC9uZXRydy52aW0KKysrIGIvcnVudGltZS9zeW50YXgvbmV0cncudmltCkBAIC04OCw3ICs4OCw3IEBACiAgaGkgZGVmYXVsdCBsaW5rIG5ldHJ3VGltZVNlcAluZXRyd0RhdGVTZXAKICBoaSBkZWZhdWx0IGxpbmsgbmV0cndDb21tYQluZXRyd0NvbW1lbnQKICBoaSBkZWZhdWx0IGxpbmsgbmV0cndIaWRlCW5ldHJ3Q29tbWVudAotIGhpIGRlZmF1bHQgbGluayBuZXRyd01hcmtGaWxlCUlkZW50aWZpZXIKKyBoaSBkZWZhdWx0IGxpbmsgbmV0cndNYXJrRmlsZQlEaWZmQ2hhbmdlCiAKICAiIHNwZWNpYWwgc3ludGF4IGhpZ2hsaWdodGluZyAoc2VlIDpoZSBnOm5ldHJ3X3NwZWNpYWxfc3ludGF4KQogIGhpIGRlZmF1bHQgbGluayBuZXRyd0JhawlOb25UZXh0CmRpZmYgLS1naXQgYS9ydW50aW1lL3N5bnRheC9zaC52aW0gYi9ydW50aW1lL3N5bnRheC9zaC52aW0KaW5kZXggMjZkZjMyZC4uNDM3MGQ2NyAxMDA2NDQKLS0tIGEvcnVudGltZS9zeW50YXgvc2gudmltCisrKyBiL3J1bnRpbWUvc3ludGF4L3NoLnZpbQpAQCAtMiw4ICsyLDggQEAKICIgTGFuZ3VhZ2U6CQlzaGVsbCAoc2gpIEtvcm4gc2hlbGwgKGtzaCkgYmFzaCAoc2gpCiAiIE1haW50YWluZXI6CQlEci4gQ2hhcmxlcyBFLiBDYW1wYmVsbCwgSnIuICA8TmRyT2NoaXBTQFBjYW1wYmVsbEFmYW1pbHkuTWJpej4KICIgUHJldmlvdXMgTWFpbnRhaW5lcjoJTGVubmFydCBTY2h1bHR6IDxMZW5uYXJ0LlNjaHVsdHpAZWNtd2YuaW50PgotIiBMYXN0IENoYW5nZToJCUF1ZyAwNCwgMjAxMAotIiBWZXJzaW9uOgkJMTE0CisiIExhc3QgQ2hhbmdlOgkJRmViIDExLCAyMDExCisiIFZlcnNpb246CQkxMTUKICIgVVJMOgkJaHR0cDovL215c2l0ZS52ZXJpem9uLm5ldC9hc3Ryb25hdXQvdmltL2luZGV4Lmh0bWwjdmltbGlua3Nfc3ludGF4CiAiIEZvciBvcHRpb25zIGFuZCBzZXR0aW5ncywgcGxlYXNlIHVzZTogICAgICA6aGVscCBmdC1zaC1zeW50YXgKICIgVGhpcyBmaWxlIGluY2x1ZGVzIG1hbnkgaWRlYXMgZnJvbSA/cmljIEJydW5ldCAoZXJpYy5icnVuZXRAZW5zLmZyKQpAQCAtNDEwLDYgKzQxMCwxMCBAQAogIiAgICBrc2ggYmFzaCA6ICR7cGFyYW1ldGVyIyNwYXR0ZXJufSByZW1vdmUgbGFyZ2UgbGVmdCAgcGF0dGVybgogIiAgICBrc2ggYmFzaCA6ICR7cGFyYW1ldGVyJXBhdHRlcm59ICByZW1vdmUgc21hbGwgcmlnaHQgcGF0dGVybgogIiAgICBrc2ggYmFzaCA6ICR7cGFyYW1ldGVyJSVwYXR0ZXJufSByZW1vdmUgbGFyZ2UgcmlnaHQgcGF0dGVybgorIiAgICBrc2ggYmFzaCA6ICR7cGFyYW1ldGVyXnBhdHRlcm59ICBDYXNlIG1vZGlmaWNhdGlvbgorIiAgICBrc2ggYmFzaCA6ICR7cGFyYW1ldGVyXl5wYXR0ZXJufSBDYXNlIG1vZGlmaWNhdGlvbgorIiAgICBrc2ggYmFzaCA6ICR7cGFyYW1ldGVyLHBhdHRlcm59ICBDYXNlIG1vZGlmaWNhdGlvbgorIiAgICBrc2ggYmFzaCA6ICR7cGFyYW1ldGVyLCxwYXR0ZXJufSBDYXNlIG1vZGlmaWNhdGlvbgogc3luIGNsdXN0ZXIgc2hEZXJlZlBhdHRlcm5MaXN0CWNvbnRhaW5zPXNoRGVyZWZQYXR0ZXJuLHNoRGVyZWZTdHJpbmcKIHN5biBtYXRjaCBzaERlcmVmT3BFcnJvcgljb250YWluZWQJIjpbWzpwdW5jdDpdXSIKIHN5biBtYXRjaCAgc2hEZXJlZk9wCWNvbnRhaW5lZAkiOlw9Wy09P10iCW5leHRncm91cD1Ac2hEZXJlZlBhdHRlcm5MaXN0CkBAIC00MTcsNiArNDIxLDggQEAKIGlmIGV4aXN0cygiYjppc19iYXNoIikgfHwgZXhpc3RzKCJiOmlzX2tvcm5zaGVsbCIpCiAgc3luIG1hdGNoICBzaERlcmVmT3AJY29udGFpbmVkCSIjXHsxLDJ9IgluZXh0Z3JvdXA9QHNoRGVyZWZQYXR0ZXJuTGlzdAogIHN5biBtYXRjaCAgc2hEZXJlZk9wCWNvbnRhaW5lZAkiJVx7MSwyfSIJbmV4dGdyb3VwPUBzaERlcmVmUGF0dGVybkxpc3QKKyBzeW4gbWF0Y2ggIHNoRGVyZWZPcAljb250YWluZWQJIlxeXHsxLDJ9IgluZXh0Z3JvdXA9QHNoRGVyZWZQYXR0ZXJuTGlzdAorIHN5biBtYXRjaCAgc2hEZXJlZk9wCWNvbnRhaW5lZAkiLFx7MSwyfSIJbmV4dGdyb3VwPUBzaERlcmVmUGF0dGVybkxpc3QKICBzeW4gbWF0Y2ggIHNoRGVyZWZQYXR0ZXJuCWNvbnRhaW5lZAkiW157fV1cKyIJY29udGFpbnM9c2hEZXJlZixzaERlcmVmU2ltcGxlLHNoRGVyZWZQYXR0ZXJuLHNoRGVyZWZTdHJpbmcsc2hDb21tYW5kU3ViLHNoRGVyZWZFc2NhcGUgbmV4dGdyb3VwPXNoRGVyZWZQYXR0ZXJuCiAgc3luIHJlZ2lvbiBzaERlcmVmUGF0dGVybgljb250YWluZWQJc3RhcnQ9InsiIGVuZD0ifSIJY29udGFpbnM9c2hEZXJlZixzaERlcmVmU2ltcGxlLHNoRGVyZWZTdHJpbmcsc2hDb21tYW5kU3ViIG5leHRncm91cD1zaERlcmVmUGF0dGVybgogIHN5biBtYXRjaCAgc2hEZXJlZkVzY2FwZQljb250YWluZWQJJ1wlKFxcXFxcKSpcXC4nCmRpZmYgLS1naXQgYS9ydW50aW1lL3N5bnRheC90ZXgudmltIGIvcnVudGltZS9zeW50YXgvdGV4LnZpbQppbmRleCA5NWJmYzA1Li4zNjVhY2Y0IDEwMDY0NAotLS0gYS9ydW50aW1lL3N5bnRheC90ZXgudmltCisrKyBiL3J1bnRpbWUvc3ludGF4L3RleC52aW0KQEAgLTEsOCArMSw4IEBACiAiIFZpbSBzeW50YXggZmlsZQogIiBMYW5ndWFnZToJVGVYCiAiIE1haW50YWluZXI6CURyLiBDaGFybGVzIEUuIENhbXBiZWxsLCBKci4gPE5kcmNoaXBPQFNjYW1wYmVsbFBmYW1pbHkuQWJpek0+Ci0iIExhc3QgQ2hhbmdlOglTZXAgMTcsIDIwMTAgCi0iIFZlcnNpb246CTYwCisiIExhc3QgQ2hhbmdlOglEZWMgMDcsIDIwMTAgCisiIFZlcnNpb246CTY0CiAiIFVSTDoJCWh0dHA6Ly9teXNpdGUudmVyaXpvbi5uZXQvYXN0cm9uYXV0L3ZpbS9pbmRleC5odG1sI3ZpbWxpbmtzX3N5bnRheAogIgogIiBOb3Rlczoge3t7MQpAQCAtODksMTggKzg5LDE3IEBACiAgc2V0bCBmZG09c3ludGF4CiBlbmRpZgogCi0iIChMYSlUZVgga2V5d29yZHM6IG9ubHkgdXNlIHRoZSBsZXR0ZXJzIGEtekEtWiB7e3sxCisiIChMYSlUZVgga2V5d29yZHM6IHVzZXMgdGhlIGNoYXJhY3RlcnMgMC05LGEteixBLVosMTkyLTI1NSBvbmx5Li4uIHt7ezEKICIgYnV0IF8gaXMgdGhlIG9ubHkgb25lIHRoYXQgY2F1c2VzIHByb2JsZW1zLgotaWYgdmVyc2lvbiA8IDYwMAotICBzZXQgaXNrPWEteixBLVoKLSAgaWYgYjp0ZXhfc3R5bGlzaAotICAgIHNldCBpc2srPUAKLSAgZW5kaWYKKyIgT25lIG1heSBvdmVycmlkZSB0aGlzIGlza2V5d29yZCBzZXR0aW5nIGJ5IHByb3ZpZGluZworIiBnOnRleF9pc2sKK2lmIGV4aXN0cygiZzp0ZXhfaXNrIikKKyBleGUgInNldGxvY2FsIGlzaz0iLmc6dGV4X2lzawogZWxzZQotICBzZXRsb2NhbCBpc2s9YS16LEEtWgotICBpZiBiOnRleF9zdHlsaXNoCi0gICAgc2V0bG9jYWwgaXNrKz1ACi0gIGVuZGlmCisgc2V0bG9jYWwgaXNrPTQ4LTU3LGEteixBLVosMTkyLTI1NQorZW5kaWYKK2lmIGI6dGV4X3N0eWxpc2gKKyAgc2V0bG9jYWwgaXNrKz1ALUAKIGVuZGlmCiAKICIgQ2x1c3RlcnM6IHt7ezEKQEAgLTM3MiwxOSArMzcxLDU0IEBACiAgaWYgaGFzKCJjb25jZWFsIikgJiYgJmVuYyA9PSAndXRmLTgnICYmIHM6dGV4X2NvbmNlYWwgPX4gJ20nCiAgIHN5biBtYXRjaCAgIHRleE1hdGhEZWxpbQljb250YWluZWQJCSJcXGxlZnRcXHtcPiIJc2tpcHdoaXRlIG5leHRncm91cD10ZXhNYXRoRGVsaW1TZXQxLHRleE1hdGhEZWxpbVNldDIsdGV4TWF0aERlbGltQmFkIGNvbnRhaW5zPXRleE1hdGhTeW1ib2wgY2NoYXI9ewogICBzeW4gbWF0Y2ggICB0ZXhNYXRoRGVsaW0JY29udGFpbmVkCQkiXFxyaWdodFxcfVw+Iglza2lwd2hpdGUgbmV4dGdyb3VwPXRleE1hdGhEZWxpbVNldDEsdGV4TWF0aERlbGltU2V0Mix0ZXhNYXRoRGVsaW1CYWQgY29udGFpbnM9dGV4TWF0aFN5bWJvbCBjY2hhcj19CisgIGxldCBzOnRleE1hdGhEZWxpbUxpc3Q9WworICAgICBcIFsnPCcgICAgICAgICAgICAsICc8J10gLAorICAgICBcIFsnPicgICAgICAgICAgICAsICc+J10gLAorICAgICBcIFsnKCcgICAgICAgICAgICAsICcoJ10gLAorICAgICBcIFsnKScgICAgICAgICAgICAsICcpJ10gLAorICAgICBcIFsnXFsnICAgICAgICAgICAsICdbJ10gLAorICAgICBcIFsnXScgICAgICAgICAgICAsICddJ10gLAorICAgICBcIFsnXFx7JyAgICAgICAgICAsICd7J10gLAorICAgICBcIFsnXFx9JyAgICAgICAgICAsICd9J10gLAorICAgICBcIFsnfCcgICAgICAgICAgICAsICd8J10gLAorICAgICBcIFsnXFx8JyAgICAgICAgICAsICfigJYnXSAsCisgICAgIFwgWydcXGJhY2tzbGFzaCcgICwgJ1wnXSAsCisgICAgIFwgWydcXGRvd25hcnJvdycgICwgJ+KGkyddICwKKyAgICAgXCBbJ1xcRG93bmFycm93JyAgLCAn4oeTJ10gLAorICAgICBcIFsnXFxsYW5nbGUnICAgICAsICc8J10gLAorICAgICBcIFsnXFxsYnJhY2UnICAgICAsICdbJ10gLAorICAgICBcIFsnXFxsY2VpbCcgICAgICAsICfijIgnXSAsCisgICAgIFwgWydcXGxmbG9vcicgICAgICwgJ+KMiiddICwKKyAgICAgXCBbJ1xcbGdyb3VwJyAgICAgLCAn4oyKJ10gLAorICAgICBcIFsnXFxsbW91c3RhY2hlJyAsICfijpsnXSAsCisgICAgIFwgWydcXHJhbmdsZScgICAgICwgJz4nXSAsCisgICAgIFwgWydcXHJicmFjZScgICAgICwgJ10nXSAsCisgICAgIFwgWydcXHJjZWlsJyAgICAgICwgJ+KMiSddICwKKyAgICAgXCBbJ1xccmZsb29yJyAgICAgLCAn4oyLJ10gLAorICAgICBcIFsnXFxyZ3JvdXAnICAgICAsICfijIsnXSAsCisgICAgIFwgWydcXHJtb3VzdGFjaGUnICwgJ+KOniddICwKKyAgICAgXCBbJ1xcdXBhcnJvdycgICAgLCAn4oaRJ10gLAorICAgICBcIFsnXFxVcGFycm93JyAgICAsICfihpEnXSAsCisgICAgIFwgWydcXHVwZG93bmFycm93JywgJ+KGlSddICwKKyAgICAgXCBbJ1xcVXBkb3duYXJyb3cnLCAn4oeVJ11dCisgIHN5biBtYXRjaCB0ZXhNYXRoRGVsaW0JJ1xcW2JCXWlnZ1w9W2xyXScgY29udGFpbmVkIG5leHRncm91cD10ZXhNYXRoRGVsaW1CYWQKKyAgZm9yIHRleG1hdGggaW4gczp0ZXhNYXRoRGVsaW1MaXN0CisgICBleGUgInN5biBtYXRjaCB0ZXhNYXRoRGVsaW0JJ1xcXFxbYkJdaWdnXFw9W2xyXVxcPSIudGV4bWF0aFswXS4iJwljb250YWluZWQgY29uY2VhbCBjY2hhcj0iLnRleG1hdGhbMV0KKyAgZW5kZm9yCisKICBlbHNlCiAgIHN5biBtYXRjaCAgIHRleE1hdGhEZWxpbQljb250YWluZWQJCSJcXFwobGVmdFx8cmlnaHRcKVw+Iglza2lwd2hpdGUgbmV4dGdyb3VwPXRleE1hdGhEZWxpbVNldDEsdGV4TWF0aERlbGltU2V0Mix0ZXhNYXRoRGVsaW1CYWQKKyAgc3luIG1hdGNoICAgdGV4TWF0aERlbGltCWNvbnRhaW5lZAkJIlxcW2JCXWlnZ1w9W2xyXVw9XD4iCXNraXB3aGl0ZSBuZXh0Z3JvdXA9dGV4TWF0aERlbGltU2V0MSx0ZXhNYXRoRGVsaW1TZXQyLHRleE1hdGhEZWxpbUJhZAorICBzeW4gbWF0Y2ggICB0ZXhNYXRoRGVsaW1TZXQyCWNvbnRhaW5lZAkiXFwiCQluZXh0Z3JvdXA9dGV4TWF0aERlbGltS2V5LHRleE1hdGhEZWxpbUJhZAorICBzeW4gbWF0Y2ggICB0ZXhNYXRoRGVsaW1TZXQxCWNvbnRhaW5lZAkiWzw+KClbXF18Ly5dXHxcXFt7fXxdIgorICBzeW4ga2V5d29yZCB0ZXhNYXRoRGVsaW1LZXkJY29udGFpbmVkCWJhY2tzbGFzaCAgICAgICBsY2VpbCAgICAgICAgICAgbFZlcnQgICAgICAgICAgIHJncm91cCAgICAgICAgICB1cGFycm93CisgIHN5biBrZXl3b3JkIHRleE1hdGhEZWxpbUtleQljb250YWluZWQJZG93bmFycm93ICAgICAgIGxmbG9vciAgICAgICAgICByYW5nbGUgICAgICAgICAgcm1vdXN0YWNoZSAgICAgIFVwYXJyb3cKKyAgc3luIGtleXdvcmQgdGV4TWF0aERlbGltS2V5CWNvbnRhaW5lZAlEb3duYXJyb3cgICAgICAgbGdyb3VwICAgICAgICAgIHJicmFjZSAgICAgICAgICBydmVydCAgICAgICAgICAgdXBkb3duYXJyb3cKKyAgc3luIGtleXdvcmQgdGV4TWF0aERlbGltS2V5CWNvbnRhaW5lZAlsYW5nbGUgICAgICAgICAgbG1vdXN0YWNoZSAgICAgIHJjZWlsICAgICAgICAgICByVmVydCAgICAgICAgICAgVXBkb3duYXJyb3cKKyAgc3luIGtleXdvcmQgdGV4TWF0aERlbGltS2V5CWNvbnRhaW5lZAlsYnJhY2UgICAgICAgICAgbHZlcnQgICAgICAgICAgIHJmbG9vcgogIGVuZGlmCi0gc3luIG1hdGNoICAgdGV4TWF0aERlbGltCWNvbnRhaW5lZAkJIlxcXChbYkJdaWdnXD1bbHJdXClcPiIJCQlza2lwd2hpdGUgbmV4dGdyb3VwPXRleE1hdGhEZWxpbVNldDEsdGV4TWF0aERlbGltU2V0Mix0ZXhNYXRoRGVsaW1CYWQKICBzeW4gbWF0Y2ggICB0ZXhNYXRoRGVsaW0JY29udGFpbmVkCQkiXFxcKGxlZnRcfHJpZ2h0XClhcnJvd1w+XHxcPFwoW2FBXXJyb3dcfGJyYWNlXClcPXZlcnRcPiIKICBzeW4gbWF0Y2ggICB0ZXhNYXRoRGVsaW0JY29udGFpbmVkCQkiXFxsZWZ0ZXFuXD4iCi0gc3luIG1hdGNoICAgdGV4TWF0aERlbGltU2V0Mgljb250YWluZWQJIlxcIgkJbmV4dGdyb3VwPXRleE1hdGhEZWxpbUtleSx0ZXhNYXRoRGVsaW1CYWQKLSBzeW4gbWF0Y2ggICB0ZXhNYXRoRGVsaW1TZXQxCWNvbnRhaW5lZAkiWzw+KClbXF18Ly5dXHxcXFt7fXxdIgotIHN5biBrZXl3b3JkIHRleE1hdGhEZWxpbUtleQljb250YWluZWQJYmFja3NsYXNoICAgICAgIGxjZWlsICAgICAgICAgICBsVmVydCAgICAgICAgICAgcmdyb3VwICAgICAgICAgIHVwYXJyb3cKLSBzeW4ga2V5d29yZCB0ZXhNYXRoRGVsaW1LZXkJY29udGFpbmVkCWRvd25hcnJvdyAgICAgICBsZmxvb3IgICAgICAgICAgcmFuZ2xlICAgICAgICAgIHJtb3VzdGFjaGUgICAgICBVcGFycm93Ci0gc3luIGtleXdvcmQgdGV4TWF0aERlbGltS2V5CWNvbnRhaW5lZAlEb3duYXJyb3cgICAgICAgbGdyb3VwICAgICAgICAgIHJicmFjZSAgICAgICAgICBydmVydCAgICAgICAgICAgdXBkb3duYXJyb3cKLSBzeW4ga2V5d29yZCB0ZXhNYXRoRGVsaW1LZXkJY29udGFpbmVkCWxhbmdsZSAgICAgICAgICBsbW91c3RhY2hlICAgICAgcmNlaWwgICAgICAgICAgIHJWZXJ0ICAgICAgICAgICBVcGRvd25hcnJvdwotIHN5biBrZXl3b3JkIHRleE1hdGhEZWxpbUtleQljb250YWluZWQJbGJyYWNlICAgICAgICAgIGx2ZXJ0ICAgICAgICAgICByZmxvb3IKIGVuZGlmCiAKICIgU3BlY2lhbCBUZVggY2hhcmFjdGVycyAgKCBcJCBcJiBcJSBcIyBceyBcfSBcXyBcUyBcUCApIDoge3t7MQpAQCAtNTIxLDYgKzU1NSw3IEBACiAgIiAobWFueSBvZiB0aGVzZSBzeW1ib2xzIHdlcmUgY29udHJpYnV0ZWQgYnkgQmrDtnJuIFdpbmNrbGVyKQogIGlmIHM6dGV4X2NvbmNlYWwgPX4gJ20nCiAgIGxldCBzOnRleE1hdGhMaXN0PVsKKyAgICBcIFsnfCcJCSwgJ+KAliddLAogICAgIFwgWydhbmdsZScJCSwgJ+KIoCddLAogICAgIFwgWydhcHByb3gnCQksICfiiYgnXSwKICAgICBcIFsnYXN0JwkJLCAn4oiXJ10sCkBAIC02MjQsNiArNjU5LDcgQEAKICAgICBcIFsnbGVzc2VxZ3RyJwksICfii5onXSwKICAgICBcIFsnbGVzc3NpbScJLCAn4omyJ10sCiAgICAgXCBbJ2xmbG9vcicJCSwgJ+KMiiddLAorICAgIFwgWydsbW91c3RhY2hlJyAgICAgLCAn4pWtJ10sCiAgICAgXCBbJ2xuZXFxJwkJLCAn4omoJ10sCiAgICAgXCBbJ2x0aW1lcycJCSwgJ+KLiSddLAogICAgIFwgWydtYXBzdG8nCQksICfihqYnXSwKQEAgLTY5NCw2ICs3MzAsNyBAQAogICAgIFwgWydyaWdodHNxdWlnYXJyb3cnLCAn4oadJ10sCiAgICAgXCBbJ3JpZ2h0dGhyZWV0aW1lcycsICfii4wnXSwKICAgICBcIFsncmlzaW5nZG90c2VxJwksICfiiZMnXSwKKyAgICBcIFsncm1vdXN0YWNoZScgICAgICwgJ+KVriddLAogICAgIFwgWydydGltZXMnCQksICfii4onXSwKICAgICBcIFsnc2VhcnJvdycJLCAn4oaYJ10sCiAgICAgXCBbJ3NldG1pbnVzJwksICfiiJYnXSwKZGlmZiAtLWdpdCBhL3J1bnRpbWUvc3ludGF4L3ZpbS52aW0gYi9ydW50aW1lL3N5bnRheC92aW0udmltCmluZGV4IGE2ZjZlMzYuLjQ2YjM5MTkgMTAwNjQ0Ci0tLSBhL3J1bnRpbWUvc3ludGF4L3ZpbS52aW0KKysrIGIvcnVudGltZS9zeW50YXgvdmltLnZpbQpAQCAtMSw4ICsxLDggQEAKICIgVmltIHN5bnRheCBmaWxlCiAiIExhbmd1YWdlOglWaW0gNy4zIHNjcmlwdAogIiBNYWludGFpbmVyOglEci4gQ2hhcmxlcyBFLiBDYW1wYmVsbCwgSnIuIDxOZHJPY2hpcFNAUGNhbXBiZWxsQWZhbWlseS5NYml6PgotIiBMYXN0IENoYW5nZToJQXVndXN0IDIwLCAyMDEwCi0iIFZlcnNpb246CTcuMy0wNQorIiBMYXN0IENoYW5nZToJSmFuIDEwLCAyMDExCisiIFZlcnNpb246CTcuMy0wNwogIiBBdXRvbWF0aWNhbGx5IGdlbmVyYXRlZCBrZXl3b3JkIGxpc3RzOiB7e3sxCiAKICIgUXVpdCB3aGVuIGEgc3ludGF4IGZpbGUgd2FzIGFscmVhZHkgbG9hZGVkIHt7ezIKQEAgLTU1MCw5ICs1NTAsOSBAQAogZW5kaWYKIAogIiBbLS0gbHVhIC0tXSB7e3szCi1sZXQgczpsdWFwYXRoPSBleHBhbmQoIjxzZmlsZT46cDpoIikuIi9sdWEudmltIgorbGV0IHM6bHVhcGF0aD0gZm5hbWVlc2NhcGUoZXhwYW5kKCI8c2ZpbGU+OnA6aCIpLiIvbHVhLnZpbSIpCiBpZiAhZmlsZXJlYWRhYmxlKHM6bHVhcGF0aCkKLSBsZXQgczpsdWFwYXRoPSBnbG9icGF0aCgmcnRwLCJzeW50YXgvbHVhLnZpbSIpCisgbGV0IHM6bHVhcGF0aD0gZm5hbWVlc2NhcGUoZ2xvYnBhdGgoJnJ0cCwic3ludGF4L2x1YS52aW0iKSkKIGVuZGlmCiBpZiAoZzp2aW1zeW5fZW1iZWQgPX4gJ2wnICYmIGhhcygibHVhIikpICYmIGZpbGVyZWFkYWJsZShzOmx1YXBhdGgpCiAgdW5sZXQhIGI6Y3VycmVudF9zeW50YXgKQEAgLTU3Miw5ICs1NzIsOSBAQAogdW5sZXQgczpsdWFwYXRoCiAKICIgWy0tIHBlcmwgLS1dIHt7ezMKLWxldCBzOnBlcmxwYXRoPSBleHBhbmQoIjxzZmlsZT46cDpoIikuIi9wZXJsLnZpbSIKK2xldCBzOnBlcmxwYXRoPSBmbmFtZWVzY2FwZShleHBhbmQoIjxzZmlsZT46cDpoIikuIi9wZXJsLnZpbSIpCiBpZiAhZmlsZXJlYWRhYmxlKHM6cGVybHBhdGgpCi0gbGV0IHM6cGVybHBhdGg9IGdsb2JwYXRoKCZydHAsInN5bnRheC9wZXJsLnZpbSIpCisgbGV0IHM6cGVybHBhdGg9IGZuYW1lZXNjYXBlKGdsb2JwYXRoKCZydHAsInN5bnRheC9wZXJsLnZpbSIpKQogZW5kaWYKIGlmIChnOnZpbXN5bl9lbWJlZCA9fiAncCcgJiYgaGFzKCJwZXJsIikpICYmIGZpbGVyZWFkYWJsZShzOnBlcmxwYXRoKQogIHVubGV0ISBiOmN1cnJlbnRfc3ludGF4CkBAIC01OTQsOSArNTk0LDkgQEAKIHVubGV0IHM6cGVybHBhdGgKIAogIiBbLS0gcnVieSAtLV0ge3t7MwotbGV0IHM6cnVieXBhdGg9IGV4cGFuZCgiPHNmaWxlPjpwOmgiKS4iL3J1YnkudmltIgorbGV0IHM6cnVieXBhdGg9IGZuYW1lZXNjYXBlKGV4cGFuZCgiPHNmaWxlPjpwOmgiKS4iL3J1YnkudmltIikKIGlmICFmaWxlcmVhZGFibGUoczpydWJ5cGF0aCkKLSBsZXQgczpydWJ5cGF0aD0gZ2xvYnBhdGgoJnJ0cCwic3ludGF4L3J1YnkudmltIikKKyBsZXQgczpydWJ5cGF0aD0gZm5hbWVlc2NhcGUoZ2xvYnBhdGgoJnJ0cCwic3ludGF4L3J1YnkudmltIikpCiBlbmRpZgogaWYgKGc6dmltc3luX2VtYmVkID1+ICdyJyAmJiBoYXMoInJ1YnkiKSkgJiYgZmlsZXJlYWRhYmxlKHM6cnVieXBhdGgpCiAgdW5sZXQhIGI6Y3VycmVudF9zeW50YXgKQEAgLTYxNSw5ICs2MTUsOSBAQAogdW5sZXQgczpydWJ5cGF0aAogCiAiIFstLSBweXRob24gLS1dIHt7ezMKLWxldCBzOnB5dGhvbnBhdGg9IGV4cGFuZCgiPHNmaWxlPjpwOmgiKS4iL3B5dGhvbi52aW0iCitsZXQgczpweXRob25wYXRoPSBmbmFtZWVzY2FwZShleHBhbmQoIjxzZmlsZT46cDpoIikuIi9weXRob24udmltIikKIGlmICFmaWxlcmVhZGFibGUoczpweXRob25wYXRoKQotIGxldCBzOnB5dGhvbnBhdGg9IGdsb2JwYXRoKCZydHAsInN5bnRheC9weXRob24udmltIikKKyBsZXQgczpweXRob25wYXRoPSBmbmFtZWVzY2FwZShnbG9icGF0aCgmcnRwLCJzeW50YXgvcHl0aG9uLnZpbSIpKQogZW5kaWYKIGlmIChnOnZpbXN5bl9lbWJlZCA9fiAnUCcgJiYgaGFzKCJweXRob24iKSkgJiYgZmlsZXJlYWRhYmxlKHM6cHl0aG9ucGF0aCkKICB1bmxldCEgYjpjdXJyZW50X3N5bnRheApAQCAtNjQ0LDkgKzY0NCw5IEBACiAgbGV0IHM6dHJ5dGNsPSAxCiBlbmRpZgogaWYgczp0cnl0Y2wKLSBsZXQgczp0Y2xwYXRoPSBleHBhbmQoIjxzZmlsZT46cDpoIikuIi90Y2wudmltIgorIGxldCBzOnRjbHBhdGg9IGZuYW1lZXNjYXBlKGV4cGFuZCgiPHNmaWxlPjpwOmgiKS4iL3RjbC52aW0iKQogIGlmICFmaWxlcmVhZGFibGUoczp0Y2xwYXRoKQotICBsZXQgczp0Y2xwYXRoPSBnbG9icGF0aCgmcnRwLCJzeW50YXgvdGNsLnZpbSIpCisgIGxldCBzOnRjbHBhdGg9IGZuYW1lZXNjYXBlKGdsb2JwYXRoKCZydHAsInN5bnRheC90Y2wudmltIikpCiAgZW5kaWYKICBpZiAoZzp2aW1zeW5fZW1iZWQgPX4gJ3QnICYmIGhhcygidGNsIikpICYmIGZpbGVyZWFkYWJsZShzOnRjbHBhdGgpCiAgIHVubGV0ISBiOmN1cnJlbnRfc3ludGF4CkBAIC02NzEsOSArNjcxLDkgQEAKIHVubGV0IHM6dHJ5dGNsCiAKICIgWy0tIG16c2NoZW1lIC0tXSB7e3szCi1sZXQgczptenNjaGVtZXBhdGg9IGV4cGFuZCgiPHNmaWxlPjpwOmgiKS4iL3NjaGVtZS52aW0iCitsZXQgczptenNjaGVtZXBhdGg9IGZuYW1lZXNjYXBlKGV4cGFuZCgiPHNmaWxlPjpwOmgiKS4iL3NjaGVtZS52aW0iKQogaWYgIWZpbGVyZWFkYWJsZShzOm16c2NoZW1lcGF0aCkKLSBsZXQgczptenNjaGVtZXBhdGg9IGdsb2JwYXRoKCZydHAsInN5bnRheC9zY2hlbWUudmltIikKKyBsZXQgczptenNjaGVtZXBhdGg9IGZuYW1lZXNjYXBlKGdsb2JwYXRoKCZydHAsInN5bnRheC9zY2hlbWUudmltIikpCiBlbmRpZgogaWYgKGc6dmltc3luX2VtYmVkID1+ICdtJyAmJiBoYXMoIm16c2NoZW1lIikpICYmIGZpbGVyZWFkYWJsZShzOm16c2NoZW1lcGF0aCkKICB1bmxldCEgYjpjdXJyZW50X3N5bnRheApkaWZmIC0tZ2l0IGEvc3JjL3BvL2phLnBvIGIvc3JjL3BvL2phLnBvCmluZGV4IGQyNDQyNmYuLmFlYjBkNmIgMTAwNjQ0Ci0tLSBhL3NyYy9wby9qYS5wbworKysgYi9zcmMvcG8vamEucG8KQEAgLTMsMjEgKzMsNDIgQEAKICMgRG8gIjpoZWxwIHVnYW5kYSIgIGluIFZpbSB0byByZWFkIGNvcHlpbmcgYW5kIHVzYWdlIGNvbmRpdGlvbnMuCiAjIERvICI6aGVscCBjcmVkaXRzIiBpbiBWaW0gdG8gc2VlIGEgbGlzdCBvZiBwZW9wbGUgd2hvIGNvbnRyaWJ1dGVkLgogIwotIyBNVVJBT0tBIFRhcm8gPGtvcm9uLmthb3JpeWFAZ21haWwuY29tPiwgMjAwMS04LgotIyBMYXN0IENoYW5nZTogMzEtTWF5LTIwMDguCisjIE1VUkFPS0EgVGFybyA8a29yb24ua2Fvcml5YUBnbWFpbC5jb20+LCAyMDAxLTExLgorIyBMYXN0IENoYW5nZTogMjMtTWFyLTIwMTEuCiAjCiBtc2dpZCAiIgogbXNnc3RyICIiCi0iUHJvamVjdC1JZC1WZXJzaW9uOiBWaW0gNy4xXG4iCisiUHJvamVjdC1JZC1WZXJzaW9uOiBWaW0gNy4zXG4iCiAiUmVwb3J0LU1zZ2lkLUJ1Z3MtVG86IFxuIgotIlBPVC1DcmVhdGlvbi1EYXRlOiAyMDA4LTA1LTMxIDIyOjAwKzA5MDBcbiIKLSJQTy1SZXZpc2lvbi1EYXRlOiAyMDA4LTA1LTMxIDIyOjMwKzA5MDBcbiIKKyJQT1QtQ3JlYXRpb24tRGF0ZTogMjAxMS0wMy0yMyAyMDo1OCswOTAwXG4iCisiUE8tUmV2aXNpb24tRGF0ZTogMjAxMS0wMy0yMyAyMToyMCswOTAwXG4iCiAiTGFzdC1UcmFuc2xhdG9yOiBNVVJBT0tBIFRhcm8gPGtvcm9uLmthb3JpeWFAZ21haWwuY29tPlxuIgogIkxhbmd1YWdlLVRlYW06IE1VUkFPS0EgVGFybyA8a29yb24ua2Fvcml5YUBnbWFpbC5jb20+XG4iCiAiTUlNRS1WZXJzaW9uOiAxLjBcbiIKICJDb250ZW50LVR5cGU6IHRleHQvcGxhaW47IGNoYXJzZXQ9ZXVjLWpwXG4iCiAiQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogOC1iaXRcbiIKIAorbXNnaWQgIkU4MzE6IGJmX2tleV9pbml0KCkgY2FsbGVkIHdpdGggZW1wdHkgcGFzc3dvcmQiCittc2dzdHIgIkU4MzE6IGJmX2tleV9pbml0KCkgpKy29aXRpbml76G8pcmkx7jGpNO90KS1pOyk3qS3pL8iCisKK21zZ2lkICJFODIwOiBzaXplb2YodWludDMyX3QpICE9IDQiCittc2dzdHIgIkU4MjA6IHNpemVvZih1aW50MzJfdCkgIT0gNCIKKworbXNnaWQgIkU4MTc6IEJsb3dmaXNoIGJpZy9saXR0bGUgZW5kaWFuIHVzZSB3cm9uZyIKK21zZ3N0ciAiRTgxNzogQmxvd2Zpc2iwxbnmpM6l06XDpbAvpeqlyKXrpail86XHpaOloqXzpKy01rDjpMOkxqSkpN6kuSIKKworbXNnaWQgIkU4MTg6IHNoYTI1NiB0ZXN0IGZhaWxlZCIKK21zZ3N0ciAiRTgxODogc2hhMjU2pM6lxqW5pciky7y6x9Skt6TepLekvyIKKworbXNnaWQgIkU4MTk6IEJsb3dmaXNoIHRlc3QgZmFpbGVkIgorbXNnc3RyICJFODE5OiBCbG93ZmlzaLDFueakzqXGpbmlyKTLvLrH1KS3pN6kt6S/IgorCittc2dpZCAiW0xvY2F0aW9uIExpc3RdIgorbXNnc3RyICJbvuy96qXqpbmlyF0iCisKK21zZ2lkICJbUXVpY2tmaXggTGlzdF0iCittc2dzdHIgIltRdWlja2ZpeKXqpbmlyF0iCisKIG1zZ2lkICJFODI6IENhbm5vdCBhbGxvY2F0ZSBhbnkgYnVmZmVyLCBleGl0aW5nLi4uIgogbXNnc3RyICJFODI6IKXQpcOl1aWhpPIxpMSk4rruwK6kx6StpMqkpKTOpMcsIL2qzrukt6TepLkuLi4iCiAKQEAgLTE0OSw3ICsxNzAsNiBAQAogbXNnaWQgIlRvcCIKIG1zZ3N0ciAiwOjGrCIKIAotIywgYy1mb3JtYXQKIG1zZ2lkICIiCiAiXG4iCiAiIyBCdWZmZXIgbGlzdDpcbiIKQEAgLTE1NywxMSArMTc3LDggQEAKICJcbiIKICIjIKXQpcOl1aWhpeqluaXIOlxuIgogCi1tc2dpZCAiW0xvY2F0aW9uIExpc3RdIgotbXNnc3RyICJbvuy96qXqpbmlyF0iCi0KLW1zZ2lkICJbUXVpY2tmaXggTGlzdF0iCi1tc2dzdHIgIltRdWlja2ZpeKXqpbmlyF0iCittc2dpZCAiW1NjcmF0Y2hdIgorbXNnc3RyICJbsry98aStXSIKIAogbXNnaWQgIiIKICJcbiIKQEAgLTE4MiwxMiArMTk5LDE4IEBACiBtc2dpZCAiRTk2OiBDYW4gbm90IGRpZmYgbW9yZSB0aGFuICVsZCBidWZmZXJzIgogbXNnc3RyICJFOTY6ICVsZCCwyr7lpM6l0KXDpdWloaTPZGlmZqTHpK2k3qS7pPMiCiAKK21zZ2lkICJFODEwOiBDYW5ub3QgcmVhZCBvciB3cml0ZSB0ZW1wIGZpbGVzIgorbXNnc3RyICJFODEwOiCw7Lv+pdWloaWkpeukzsbJuf6k4qS3pK+kz73xuf6krKTHpK2k3qS7pPMiCisKIG1zZ2lkICJFOTc6IENhbm5vdCBjcmVhdGUgZGlmZnMiCiBtc2dzdHIgIkU5NzogurnKrKTyuu7ArqTHpK2k3qS7pPMgIgogCiBtc2dpZCAiUGF0Y2ggZmlsZSIKIG1zZ3N0ciAipdGlw6XBpdWloaWkpesiCiAKK21zZ2lkICJFODE2OiBDYW5ub3QgcmVhZCBwYXRjaCBvdXRwdXQiCittc2dzdHIgIkU4MTY6IHBhdGNopM690M7PpPLGybn+pOGk3qS7pPMiCisKIG1zZ2lkICJFOTg6IENhbm5vdCByZWFkIGRpZmYgb3V0cHV0IgogbXNnc3RyICJFOTg6IGRpZmakzr3Qzs+k8sbJuf6k4aTepLuk8yIKIApAQCAtMjczLDYgKzI5NiwxMiBAQAogbXNnaWQgIkhpdCBlbmQgb2YgcGFyYWdyYXBoIgogbXNnc3RyICLDys3upM66x7jlpMul0qXDpcgiCiAKK21zZ2lkICJFODM5OiBDb21wbGV0aW9uIGZ1bmN0aW9uIGNoYW5nZWQgd2luZG93IgorbXNnc3RyICJFODM5OiDK5LTWtNi/9KSspaalo6XzpcmlpqTyytG5uaS3pN6kt6S/IgorCittc2dpZCAiRTg0MDogQ29tcGxldGlvbiBmdW5jdGlvbiBkZWxldGVkIHRleHQiCittc2dzdHIgIkU4NDA6IMrktLC02L/0pKylxqWtpbmlyKTyuu+9/KS3pN6kt6S/IgorCiBtc2dpZCAiJ2RpY3Rpb25hcnknIG9wdGlvbiBpcyBlbXB0eSIKIG1zZ3N0ciAiJ2RpY3Rpb25hcnknIKWqpdelt6XnpfOkrLb1pMekuSIKIApAQCAtMjkzLDcgKzMyMiw2IEBACiBtc2dpZCAiU2Nhbm5pbmc6ICVzIgogbXNnc3RyICKluaWtpeOl88PmOiAlcyIKIAotIywgYy1mb3JtYXQKIG1zZ2lkICJTY2FubmluZyB0YWdzLiIKIG1zZ3N0ciAipb+lsKTypbmlraXjpfPD5i4iCiAKQEAgLTQ1Miw2ICs0ODAsOSBAQAogbXNnaWQgIkU2OTQ6IEludmFsaWQgb3BlcmF0aW9uIGZvciBGdW5jcmVmcyIKIG1zZ3N0ciAiRTY5NDogtNi/9Luyvsi3v6TLpM/Mtbj6pMrB4LrupMekuSIKIAorbXNnaWQgIkU4MDQ6IENhbm5vdCB1c2UgJyUnIHdpdGggRmxvYXQiCittc2dzdHIgIkU4MDQ6ICclJyCk8snixrC+rr/0xcC/9KTIwcik37nnpO+ku6TGpM+7yKSopN6ku6TzIgorCiBtc2dpZCAiRTExMDogTWlzc2luZyAnKSciCiBtc2dzdHIgIkUxMTA6ICcpJyCkrKTfpMSkq6TqpN6ku6TzIgogCkBAIC01MDIsNiArNTMzLDE0IEBACiBtc2dzdHIgIkU3MjQ6IMm9vKikuaTrpMukz8rRv/Skzsb+pOy70qSsv7yy4aSupN6kuSIKIAogIywgYy1mb3JtYXQKK21zZ2lkICJFNzQwOiBUb28gbWFueSBhcmd1bWVudHMgZm9yIGZ1bmN0aW9uICVzIgorbXNnc3RyICJFNzQwOiC02L/0pM6w+r/0pKzCv7LhpK6k3qS5OiAlcyIKKworIywgYy1mb3JtYXQKK21zZ2lkICJFMTE2OiBJbnZhbGlkIGFyZ3VtZW50cyBmb3IgZnVuY3Rpb24gJXMiCittc2dzdHIgIkUxMTY6ILTYv/Skzsy1uPqkyrD6v/Skx6S5OiAlcyIKKworIywgYy1mb3JtYXQKIG1zZ2lkICJFMTE3OiBVbmtub3duIGZ1bmN0aW9uOiAlcyIKIG1zZ3N0ciAiRTExNzogzKTDzqTOtNi/9KTHpLk6ICVzIgogCkBAIC01MTcsNiArNTU2LDkgQEAKIG1zZ2lkICJFNzI1OiBDYWxsaW5nIGRpY3QgZnVuY3Rpb24gd2l0aG91dCBEaWN0aW9uYXJ5OiAlcyIKIG1zZ3N0ciAiRTcyNTogvK298c3RtNi/9KSsuMak0KTspN6kt6S/pKy8rb3xpKykoqTqpN6ku6TzOiAlcyIKIAorbXNnaWQgIkU4MDg6IE51bWJlciBvciBGbG9hdCByZXF1aXJlZCIKK21zZ3N0ciAiRTgwODogv/TDzaSryeLGsL6uv/TFwL/0pKzJrM3XpMekuSIKKwogbXNnaWQgIkU2OTk6IFRvbyBtYW55IGFyZ3VtZW50cyIKIG1zZ3N0ciAiRTY5OTogpKzCv7LhpK6k3qS5IgogCkBAIC01MzMsNyArNTc1LDcgQEAKIAogIywgYy1mb3JtYXQKIG1zZ2lkICJFNzM3OiBLZXkgYWxyZWFkeSBleGlzdHM6ICVzIgotbXNnc3RyICJFNzM3OiAlcyCkyKSkpKalraG8pM+0+6TLwri636S3pN6kuSIKK21zZ3N0ciAiRTczNzogpa2hvKTPtPuky8K4ut+kt6TepLk6ICVzIgogCiAjLCBjLWZvcm1hdAogbXNnaWQgIistJXMlM2xkIGxpbmVzOiAiCkBAIC01OTQsNiArNjM2LDkgQEAKIG1zZ2lkICJFNjc3OiBFcnJvciB3cml0aW5nIHRlbXAgZmlsZSIKIG1zZ3N0ciAiRTY3NzogsOy7/qXVpaGlpKXrvfG5/sPmpMulqKXpobykrMivwLikt6TepLekvyIKIAorbXNnaWQgIkU4MDU6IFVzaW5nIGEgRmxvYXQgYXMgYSBOdW1iZXIiCittc2dzdHIgIkU4MDU6IMnixrC+rr/0xcC/9KTyv/TDzaTIpLekxrC3pMOkxqSkpN6kuSIKKwogbXNnaWQgIkU3MDM6IFVzaW5nIGEgRnVuY3JlZiBhcyBhIE51bWJlciIKIG1zZ3N0ciAiRTcwMzogtNi/9Luyvsi3v6Tyv/TDzaTIpLekxrC3pMOkxqSkpN6kuaGjIgogCkBAIC02MTIsNiArNjU3LDkgQEAKIG1zZ2lkICJFNzMxOiB1c2luZyBEaWN0aW9uYXJ5IGFzIGEgU3RyaW5nIgogbXNnc3RyICJFNzMxOiDK0b/0t7+k8sq4u/rO86TIpLekxrC3pMOkxqSkpN6kuSIKIAorbXNnaWQgIkU4MDY6IHVzaW5nIEZsb2F0IGFzIGEgU3RyaW5nIgorbXNnc3RyICJFODA2OiDJ4sawvq6/9MXAv/Sk8sq4u/rO86TIpLekxrC3pMOkxqSkpN6kuSIKKwogIywgYy1mb3JtYXQKIG1zZ2lkICJFNzA0OiBGdW5jcmVmIHZhcmlhYmxlIG5hbWUgbXVzdCBzdGFydCB3aXRoIGEgY2FwaXRhbDogJXMiCiBtc2dzdHIgIkU3MDQ6ILTYv/S7sr7It7/K0b/0zL6kz8Lnyri7+qTHu8+k3qTppMqksaTspNCkyqTqpN6ku6TzOiAlcyIKQEAgLTY0Myw2ICs2OTEsMTAgQEAKIG1zZ3N0ciAiRTY5ODogpbOl1KG8pPK86KTrpMukz8rRv/Skzsb+pOy70qSsv7yy4aSupN6kuSIKIAogIywgYy1mb3JtYXQKK21zZ2lkICJFMTIzOiBVbmRlZmluZWQgZnVuY3Rpb246ICVzIgorbXNnc3RyICJFMTIzOiDMpMTqtcGkzrTYv/Skx6S5OiAlcyIKKworIywgYy1mb3JtYXQKIG1zZ2lkICJFMTI0OiBNaXNzaW5nICcoJzogJXMiCiBtc2dzdHIgIkUxMjQ6ICcoJyCkrKSipOqk3qS7pPM6ICVzIgogCkBAIC02NTQsNiArNzA2LDE0IEBACiBtc2dzdHIgIkUxMjY6IDplbmRmdW5jdGlvbiCkrKSipOqk3qS7pPMiCiAKICMsIGMtZm9ybWF0Cittc2dpZCAiRTcwNzogRnVuY3Rpb24gbmFtZSBjb25mbGljdHMgd2l0aCB2YXJpYWJsZTogJXMiCittc2dzdHIgIkU3MDc6ILTYv/TMvqSsytG/9My+pMi+18bNpLek3qS5OiAlcyIKKworIywgYy1mb3JtYXQKK21zZ2lkICJFMTI3OiBDYW5ub3QgcmVkZWZpbmUgZnVuY3Rpb24gJXM6IEl0IGlzIGluIHVzZSIKK21zZ3N0ciAiRTEyNzogtNi/9CAlcyCk8rrGxOq1waTHpK2k3qS7pPM6ILvIzdHD5qTHpLkiCisKKyMsIGMtZm9ybWF0CiBtc2dpZCAiRTc0NjogRnVuY3Rpb24gbmFtZSBkb2VzIG5vdCBtYXRjaCBzY3JpcHQgZmlsZSBuYW1lOiAlcyIKIG1zZ3N0ciAiRTc0NjogtNi/9My+pKyluaWvpeql16XIpM6l1aWhpaSl68y+pMiw7MPXpLek3qS7pPM6ICVzIgogCkBAIC02OTQsNyArNzU0LDYgQEAKIG1zZ2lkICJFMTMzOiA6cmV0dXJuIG5vdCBpbnNpZGUgYSBmdW5jdGlvbiIKIG1zZ3N0ciAiRTEzMzogtNi/9LOwpMsgOnJldHVybiCkrKSipOqk3qS3pL8iCiAKLSMsIGMtZm9ybWF0CiBtc2dpZCAiIgogIlxuIgogIiMgZ2xvYmFsIHZhcmlhYmxlczpcbiIKQEAgLTcwOSw2ICs3NjgsOSBAQAogIlxuIgogIlx0TGFzdCBzZXQgZnJvbSAiCiAKK21zZ2lkICJObyBvbGQgZmlsZXMiCittc2dzdHIgIrjFpKSl1aWhpaSl66TPpKKk6qTepLuk8yIKKwogIywgYy1mb3JtYXQKIG1zZ2lkICI8JXM+JXMlcyAgJWQsICBIZXggJTAyeCwgIE9jdGFsICUwM28iCiBtc2dzdHIgIjwlcz4lcyVzICAlZCwgIDE2v8q/9CAlMDJ4LCAgOL/Kv/QgJTAzbyIKQEAgLTc1OCw2ICs4MjAsOSBAQAogbXNnaWQgIiBtYXJrcyIKIG1zZ3N0ciAiIKXeobylryIKIAorbXNnaWQgIiBvbGRmaWxlcyIKK21zZ3N0ciAiILXspdWloaWkpeu3siIKKwogbXNnaWQgIiBGQUlMRUQiCiBtc2dzdHIgIiC8usfUIgogCkBAIC03NzksNyArODQ0LDYgQEAKIG1zZ2lkICIjIFRoaXMgdmltaW5mbyBmaWxlIHdhcyBnZW5lcmF0ZWQgYnkgVmltICVzLlxuIgogbXNnc3RyICIjIKSzpM4gdmltaW5mbyCl1aWhpaSl66TPIFZpbSAlcyCky6TopMOkxsC4wK6ktaTspN6kt6S/LlxuIgogCi0jLCBjLWZvcm1hdAogbXNnaWQgIiIKICIjIFlvdSBtYXkgZWRpdCBpdCBpZiB5b3UncmUgY2FyZWZ1bCFcbiIKICJcbiIKQEAgLTc4Nyw3ICs4NTEsNiBAQAogIiMgytG5uaS5pOu63aTLpM+9vcqsw+2w1aS3pMakr6TApLWkpCFcbiIKICJcbiIKIAotIywgYy1mb3JtYXQKIG1zZ2lkICIjIFZhbHVlIG9mICdlbmNvZGluZycgd2hlbiB0aGlzIGZpbGUgd2FzIHdyaXR0ZW5cbiIKIG1zZ3N0ciAiIyCks6TOpdWloaWkpeukrL3xpKuk7KS/u/6kziAnZW5jb2RpbmcnIKTOw81cbiIKIApAQCAtODk4LDcgKzk2MSw2IEBACiBtc2dpZCAiUGF0dGVybiBmb3VuZCBpbiBldmVyeSBsaW5lOiAlcyIKIG1zZ3N0ciAipdGlv6G8pfOkrMG0pMakzrnUpMek36TEpKuk6qTepLekvzogJXMiCiAKLSMsIGMtZm9ybWF0CiBtc2dpZCAiIgogIlxuIgogIiMgTGFzdCBTdWJzdGl0dXRlIFN0cmluZzpcbiIKQEAgLTEwMDksOCArMTA3MSw4IEBACiBtc2dpZCAiJTNkICAlcyAlcyAgbGluZSAlbGQiCiBtc2dzdHIgIiUzZCAgJXMgJXMgILnUICVsZCIKIAotbXNnaWQgIkU3NTA6IEZpcnN0IHVzZSA6cHJvZmlsZSBzdGFydCA8Zm5hbWU+IgotbXNnc3RyICJFNzUwOiC96aThpMsgOnByb2ZpbGUgc3RhcnQgPGZuYW1lPiCk8rzCudSkt6TGpK+kwKS1pKQiCittc2dpZCAiRTc1MDogRmlyc3QgdXNlIFwiOnByb2ZpbGUgc3RhcnQge2ZuYW1lfVwiIgorbXNnc3RyICJFNzUwOiC96aThpMsgXCI6cHJvZmlsZSBzdGFydCB7Zm5hbWV9XCIgpPK8wrnUpLekxqSvpMCktaSkIgogCiAjLCBjLWZvcm1hdAogbXNnaWQgIlNhdmUgY2hhbmdlcyB0byBcIiVzXCI/IgpAQCAtMTIwMiw2ICsxMjY0LDkgQEAKIG1zZ2lkICJFMTgzOiBVc2VyIGRlZmluZWQgY29tbWFuZHMgbXVzdCBzdGFydCB3aXRoIGFuIHVwcGVyY2FzZSBsZXR0ZXIiCiBtc2dzdHIgIkUxODM6IKXmobyltsTqtcGls6XepfOlyaTPsdHC58q4u/qkx7vPpN6k6aTKpLGk7KTQpMqk6qTepLuk8yIKIAorbXNnaWQgIkU4NDE6IFJlc2VydmVkIG5hbWUsIGNhbm5vdCBiZSB1c2VkIGZvciB1c2VyIGRlZmluZWQgY29tbWFuZCIKK21zZ3N0ciAiRTg0MTogzb3M88y+pMqkzqTHLCCl5qG8pbbE6rXBpbOl3qXzpcmky834zdGkx6StpN6ku6TzIgorCiAjLCBjLWZvcm1hdAogbXNnaWQgIkUxODQ6IE5vIHN1Y2ggdXNlci1kZWZpbmVkIGNvbW1hbmQ6ICVzIgogbXNnc3RyICJFMTg0OiCkvaTOpeahvKW2xOq1waWzpd6l86XJpM+koqTqpN6ku6TzOiAlcyIKQEAgLTEyMTYsNiArMTI4MSw5IEBACiBtc2dpZCAiRTQ2NzogQ3VzdG9tIGNvbXBsZXRpb24gcmVxdWlyZXMgYSBmdW5jdGlvbiBhcmd1bWVudCIKIG1zZ3N0ciAiRTQ2NzogpauluaW/peDK5LSwpMukz7D6v/SkyKS3pMa02L/0pKzJrM3XpMekuSIKIAorbXNnaWQgInVua25vd24iCittc2dzdHIgIsnUzMAiCisKICMsIGMtZm9ybWF0CiBtc2dpZCAiRTE4NTogQ2Fubm90IGZpbmQgY29sb3Igc2NoZW1lICVzIgogbXNnc3RyICJFMTg1OiClq6XpobyluaWtobyl4CAlcyCkrKTfpMSkq6TqpN6ku6TzIgpAQCAtMTI5OCw2ICsxMzY2LDkgQEAKIG1zZ2lkICJFMTkyOiBSZWN1cnNpdmUgdXNlIG9mIDpub3JtYWwgdG9vIGRlZXAiCiBtc2dzdHIgIkUxOTI6IDpub3JtYWwgpM66xrWizfjN0aSsv7ykr6TKpOqy4aSupN6kt6S/IgogCittc2dpZCAiRTgwOTogIzwgaXMgbm90IGF2YWlsYWJsZSB3aXRob3V0IHRoZSArZXZhbCBmZWF0dXJlIgorbXNnc3RyICJFODA5OiAjPCCkzyArZXZhbCC1oce9pKzMtaSkpMjN+M3RpMekraTepLuk8yIKKwogbXNnaWQgIkUxOTQ6IE5vIGFsdGVybmF0ZSBmaWxlIG5hbWUgdG8gc3Vic3RpdHV0ZSBmb3IgJyMnIgogbXNnc3RyICJFMTk0OiAnIyek8sPWpK20uaSopOvJ+6XVpaGlpKXrpM7MvsGwpKykoqTqpN6ku6TzIgogCkBAIC0xMzEzLDYgKzEzODQsOSBAQAogbXNnaWQgIkU0OTg6IG5vIDpzb3VyY2UgZmlsZSBuYW1lIHRvIHN1YnN0aXR1dGUgZm9yIFwiPHNmaWxlPlwiIgogbXNnc3RyICJFNDk4OiBcIjxzZmlsZT5cIqTyw9akrbS5pKik6yA6c291cmNlIMLQvt2l1aWhpaSl68y+pKykoqTqpN6ku6TzIgogCittc2dpZCAiRTg0Mjogbm8gbGluZSBudW1iZXIgdG8gdXNlIGZvciBcIjxzbG51bT5cIiIKK21zZ3N0ciAiRTg0MjogXCI8c2xudW0+XCKk8sPWpK20uaSopOu51MjWueakrKSipOqk3qS7pPMiCisKICMsIG5vLWMtZm9ybWF0CiBtc2dpZCAiRTQ5OTogRW1wdHkgZmlsZSBuYW1lIGZvciAnJScgb3IgJyMnLCBvbmx5IHdvcmtzIHdpdGggXCI6cDpoXCIiCiBtc2dzdHIgIiIKQEAgLTE0MzcsNiArMTUxMSw5IEBACiBtc2dpZCAiRTc4ODogTm90IGFsbG93ZWQgdG8gZWRpdCBhbm90aGVyIGJ1ZmZlciBub3ciCiBtc2dzdHIgIkU3ODg6ILi9ut+kz8K+pM6l0KXDpdWloaTyytS9uKS5pOuks6TIpM+19qS1pOyk3qS7pPMiCiAKK21zZ2lkICJFODExOiBOb3QgYWxsb3dlZCB0byBjaGFuZ2UgYnVmZmVyIGluZm9ybWF0aW9uIG5vdyIKK21zZ3N0ciAiRTgxMToguL2636TPpdClw6XVpaG+8MrzpPLK0bm5pLmk66SzpMikz7X2pLWk7KTepLuk8yIKKwogbXNnaWQgInRhZ25hbWUiCiBtc2dzdHIgIqW/pbDMviIKIApAQCAtMTQ3Miw2ICsxNTQ5LDkgQEAKIG1zZ2lkICJFMTk5OiBBY3RpdmUgd2luZG93IG9yIGJ1ZmZlciBkZWxldGVkIgogbXNnc3RyICJFMTk5OiCloqWvpcalo6XWpMqlpqWjpfOlyaWmpKul0KXDpdWloaSsuu+9/KS1pOyk3qS3pL8iCiAKK21zZ2lkICJFODEyOiBBdXRvY29tbWFuZHMgY2hhbmdlZCBidWZmZXIgb3IgYnVmZmVyIG5hbWUiCittc2dzdHIgIkU4MTI6IGF1dG9jb21tYW5kpKyl0KXDpdWloaSrpdClw6XVpaHMvqTyytG5uaS3pN6kt6S/IgorCiBtc2dpZCAiSWxsZWdhbCBmaWxlIG5hbWUiCiBtc2dzdHIgIsnUwLWkyqXVpaGlpKXrzL4iCiAKQEAgLTE1MzAsOSArMTYxMCw2IEBACiBtc2dpZCAiW0NSIG1pc3NpbmddIgogbXNnc3RyICJbQ1LMtV0iCiAKLW1zZ2lkICJbTkwgZm91bmRdIgotbXNnc3RyICJbTkzNrV0iCi0KIG1zZ2lkICJbbG9uZyBsaW5lcyBzcGxpdF0iCiBtc2dzdHIgIlvEubnUyqyz5F0iCiAKQEAgLTE1NDIsNiArMTYxOSw5IEBACiBtc2dpZCAiW2NvbnZlcnRlZF0iCiBtc2dzdHIgIlvK0bS5utFdIgogCittc2dpZCAiW2Jsb3dmaXNoXSIKK21zZ3N0ciAiW2Jsb3dmaXNosMW55rK9XSIKKwogbXNnaWQgIltjcnlwdGVkXSIKIG1zZ3N0ciAiW7DFueayvV0iCiAKQEAgLTE1NjUsNiArMTY0NSw5IEBACiBtc2dpZCAiY2FuJ3QgcmVhZCBvdXRwdXQgb2YgJ2NoYXJjb252ZXJ0JyIKIG1zZ3N0ciAiJ2NoYXJjb252ZXJ0JyCkzr3Qzs+k8sbJuf6k4aTepLuk86THpLekvyIKIAorbXNnaWQgIkU4MjE6IEZpbGUgaXMgZW5jcnlwdGVkIHdpdGggdW5rbm93biBtZXRob2QiCittc2dzdHIgIkU4MjE6IKXVpaGlpKXrpKzMpMPOpM7K/cuhpMewxbnmsr2ktaTspMakpKTepLkiCisKIG1zZ2lkICJFNjc2OiBObyBtYXRjaGluZyBhdXRvY29tbWFuZHMgZm9yIGFjd3JpdGUgYnVmZmVyIgogbXNnc3RyICJFNjc2OiBhY3dyaXRlpdClw6XVpaGkzrO6xfakuaTrYXV0b2NvbW1hbmSkz8K4ut+kt6TepLuk8yIKIApAQCAtMTYzMCwxMiArMTcxMywyNCBAQAogbXNnaWQgIkU1MTM6IHdyaXRlIGVycm9yLCBjb252ZXJzaW9uIGZhaWxlZCAobWFrZSAnZmVuYycgZW1wdHkgdG8gb3ZlcnJpZGUpIgogbXNnc3RyICJFNTEzOiC98bn+pN+lqKXpobwsIMrRtLm8usfUICi+5b3xpLmk66TLpM8gJ2ZlbmMnIKTytvWky6S3pMakr6TApLWkpCkiCiAKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIkU1MTM6IHdyaXRlIGVycm9yLCBjb252ZXJzaW9uIGZhaWxlZCBpbiBsaW5lICVsZCAobWFrZSAnZmVuYycgZW1wdHkgdG8gIgorIm92ZXJyaWRlKSIKK21zZ3N0ciAiIgorIkU1MTM6IL3xuf6k36WopemhvCwgytG0uby6x9QsILnUv/QgJWxkICi+5b3xpLmk66TLpM8gJ2ZlbmMnIKTytvWky6S3pMakr6TApLUiCisipKQpIgorCiBtc2dpZCAiRTUxNDogd3JpdGUgZXJyb3IgKGZpbGUgc3lzdGVtIGZ1bGw/KSIKIG1zZ3N0ciAiRTUxNDogvfG5/qTfpail6aG8LCAopdWloaWkpeult6W5pcal4KSsy/7H1T8pIgogCiBtc2dpZCAiIENPTlZFUlNJT04gRVJST1IiCiBtc2dzdHIgIiDK0bS5pail6aG8IgogCisjLCBjLWZvcm1hdAorbXNnaWQgIiBpbiBsaW5lICVsZDsiCittc2dzdHIgIrnUICVsZDsiCisKIG1zZ2lkICJbRGV2aWNlXSIKIG1zZ3N0ciAiW6XHpdClpKW5XSIKIApAQCAtMTcwMiw2ICsxNzk3LDExIEBACiBtc2dzdHIgIjEgyri7+iIKIAogIywgYy1mb3JtYXQKK21zZ2lkICIlbGxkIGNoYXJhY3RlcnMiCittc2dzdHIgIiVsbGQgyri7+iIKKworIy4gRXhwbGljaXQgdHlwZWNhc3QgYXZvaWRzIHdhcm5pbmcgb24gTWFjIE9TIFggMTAuNgorIywgYy1mb3JtYXQKIG1zZ2lkICIlbGQgY2hhcmFjdGVycyIKIG1zZ3N0ciAiJWxkIMq4u/oiCiAKQEAgLTE5NDUsOSArMjA0NSw2IEBACiBtc2dpZCAiRTIzMjogQ2Fubm90IGNyZWF0ZSBCYWxsb29uRXZhbCB3aXRoIGJvdGggbWVzc2FnZSBhbmQgY2FsbGJhY2siCiBtc2dzdHIgIkUyMzI6IKXhpcOlu6G8pbikyKWzobyl66XQpcOlr6TOpKKk6yBCYWxsb29uRXZhbCCk8rruwK6kx6StpN6ku6TzIgogCi1tc2dpZCAiVmltIGRpYWxvZy4uLiIKLW1zZ3N0ciAiVmltIKXApaSloqXtpbAuLi4iCi0KIG1zZ2lkICIiCiAiJlllc1xuIgogIiZOb1xuIgpAQCAtMTk5MCwxMiArMjA4NywxNSBAQAogbXNnaWQgIkRvd24iCiBtc2dzdHIgIrK8IgogCisjLiAnRmluZCBOZXh0JyBidXR0b24KIG1zZ2lkICJGaW5kIE5leHQiCiBtc2dzdHIgIryhpPK4obr3IgogCisjLiAnUmVwbGFjZScgYnV0dG9uCiBtc2dpZCAiUmVwbGFjZSIKIG1zZ3N0ciAiw9a0uSIKIAorIy4gJ1JlcGxhY2UgQWxsJyBidXR0b24KIG1zZ2lkICJSZXBsYWNlIEFsbCIKIG1zZ3N0ciAiwbSkxsPWtLkiCiAKQEAgLTIwMTQsMTIgKzIxMTQsNiBAQAogbXNnaWQgIlZpbTogTWFpbiB3aW5kb3cgdW5leHBlY3RlZGx5IGRlc3Ryb3llZFxuIgogbXNnc3RyICJWaW06IKXhpaSl86WmpaOl86XJpaakrMnUsNWky8fLsvWktaTspN6kt6S/XG4iCiAKLW1zZ2lkICJGb250IFNlbGVjdGlvbiIKLW1zZ3N0ciAipdWlqaXzpcjBqsLyIgotCi1tc2dpZCAiVXNlZCBDVVRfQlVGRkVSMCBpbnN0ZWFkIG9mIGVtcHR5IHNlbGVjdGlvbiIKLW1zZ3N0ciAitvWkzsGqwvLOzrDopM6kq6TvpOqky0NVVF9CVUZGRVIwpKy7yM3RpLWk7KTepLekvyIKLQogbXNnaWQgIiZGaWx0ZXIiCiBtc2dzdHIgIqXVpaOl66W/KCZGKSIKIApAQCAtMjM0OCwxOSArMjQ0Miw0MCBAQAogbXNnc3RyICJFNTY3OiBjc2NvcGXA3MKzpMu8usfUpLek3qS3pL8iCiAKICMsIGMtZm9ybWF0Ci1tc2dpZCAiRTI1OTogbm8gbWF0Y2hlcyBmb3VuZCBmb3IgY3Njb3BlIHF1ZXJ5ICVzIG9mICVzIgotbXNnc3RyICJFMjU5OiBjc2NvcGWlr6WopeqhvCAlcyBvZiAlcyCky7O6xfakrKSipOqk3qS7pPOkx6S3pL8iCi0KLSMsIGMtZm9ybWF0CiBtc2dpZCAiRTQ2OTogaW52YWxpZCBjc2NvcGVxdWlja2ZpeCBmbGFnICVjIGZvciAlYyIKIG1zZ3N0ciAiRTQ2OTogzLW4+qTKIGNzY29wZXF1aWNrZml4IKXVpemlsCAlYyCkziAlYyCkx6S5IgogCisjLCBjLWZvcm1hdAorbXNnaWQgIkUyNTk6IG5vIG1hdGNoZXMgZm91bmQgZm9yIGNzY29wZSBxdWVyeSAlcyBvZiAlcyIKK21zZ3N0ciAiRTI1OTogY3Njb3Blpa+lqKXqobwgJXMgb2YgJXMgpMuzusX2pKykoqTqpN6ku6TzpMekt6S/IgorCiBtc2dpZCAiY3Njb3BlIGNvbW1hbmRzOlxuIgogbXNnc3RyICJjc2NvcGWls6XepfOlyTpcbiIKIAogIywgYy1mb3JtYXQKLW1zZ2lkICIlLTVzOiAlLTMwcyAoVXNhZ2U6ICVzKSIKLW1zZ3N0ciAiJS01czogJS0zMHMgKLvIzdHLoTogJXMpIgorbXNnaWQgIiUtNXM6ICVzJSpzIChVc2FnZTogJXMpIgorbXNnc3RyICIlLTVzOiAlcyUqcyAou8jN0cuhOiAlcykiCisKK21zZ2lkICIiCisiXG4iCisiICAgICAgIGM6IEZpbmQgZnVuY3Rpb25zIGNhbGxpbmcgdGhpcyBmdW5jdGlvblxuIgorIiAgICAgICBkOiBGaW5kIGZ1bmN0aW9ucyBjYWxsZWQgYnkgdGhpcyBmdW5jdGlvblxuIgorIiAgICAgICBlOiBGaW5kIHRoaXMgZWdyZXAgcGF0dGVyblxuIgorIiAgICAgICBmOiBGaW5kIHRoaXMgZmlsZVxuIgorIiAgICAgICBnOiBGaW5kIHRoaXMgZGVmaW5pdGlvblxuIgorIiAgICAgICBpOiBGaW5kIGZpbGVzICNpbmNsdWRpbmcgdGhpcyBmaWxlXG4iCisiICAgICAgIHM6IEZpbmQgdGhpcyBDIHN5bWJvbFxuIgorIiAgICAgICB0OiBGaW5kIHRoaXMgdGV4dCBzdHJpbmdcbiIKK21zZ3N0ciAiIgorIlxuIgorIiAgICAgICBjOiCks6TOtNi/9KTyuMak86THpKSk67TYv/Sk8sO1pLlcbiIKKyIgICAgICAgZDogpLOkzrTYv/Skq6TpuMak86THpKSk67TYv/Sk8sO1pLlcbiIKKyIgICAgICAgZTogpLOkzmVncmVwpdGlv6G8pfOk8sO1pLlcbiIKKyIgICAgICAgZjogpLOkzqXVpaGlpKXrpPLDtaS5XG4iCisiICAgICAgIGc6IKSzpM7E6rXBpPLDtaS5XG4iCisiICAgICAgIGk6IKSzpM6l1aWhpaSl66TyI2luY2x1ZGWkt6TGpKSk66XVpaGlpKXrpPLDtaS5XG4iCisiICAgICAgIHM6IKSzpM5Dpbel86Xcpeuk8sO1pLlcbiIKKyIgICAgICAgdDogpLOkzqXGpa2luaXIyri7+s7zpPLDtaS5XG4iCiAKICMsIGMtZm9ybWF0CiBtc2dpZCAiRTYyNTogY2Fubm90IG9wZW4gY3Njb3BlIGRhdGFiYXNlOiAlcyIKQEAgLTIzNzIsOSArMjQ4Nyw2IEBACiBtc2dpZCAiRTU2ODogZHVwbGljYXRlIGNzY29wZSBkYXRhYmFzZSBub3QgYWRkZWQiCiBtc2dzdHIgIkU1Njg6IL3FyqOkuaTrY3Njb3BlpcehvKW/pdmhvKW5pM/EybLDpLWk7KTepLuk86THpLekvyIKIAotbXNnaWQgIkU1Njk6IG1heGltdW0gbnVtYmVyIG9mIGNzY29wZSBjb25uZWN0aW9ucyByZWFjaGVkIgotbXNnc3RyICJFNTY5OiBjc2NvcGXA3MKzpM66x8Lnv/Sky8OjpLek3qS3pL8iCi0KICMsIGMtZm9ybWF0CiBtc2dpZCAiRTI2MTogY3Njb3BlIGNvbm5lY3Rpb24gJXMgbm90IGZvdW5kIgogbXNnc3RyICJFMjYxOiBjc2NvcGXA3MKzICVzIKSspN+kxKSrpOqk3qS7pPOkx6S3pL8iCkBAIC0yNDE0LDEyICsyNTI2LDE2IEBACiBtc2dpZCAiICMgcGlkICAgIGRhdGFiYXNlIG5hbWUgICAgICAgICAgICAgICAgICAgICAgIHByZXBlbmQgcGF0aFxuIgogbXNnc3RyICIgIyBwaWQgICAgpcehvKW/pdmhvKW5zL4gICAgICAgICAgICAgICAgICAgICAgcHJlcGVuZCCl0aW5XG4iCiAKK21zZ2lkICJMdWEgbGlicmFyeSBjYW5ub3QgYmUgbG9hZGVkLiIKK21zZ3N0ciAiTHVhpemlpKXWpeml6qType2hvKXJpMekraTepLuk8y4iCisKK21zZ2lkICJjYW5ub3Qgc2F2ZSB1bmRvIGluZm9ybWF0aW9uIgorbXNnc3RyICKloqXzpcmlpb7wyvOkrMrdwrikx6StpN6ku6TzIgorCiBtc2dpZCAiIgotIj8/PzogU29ycnksIHRoaXMgY29tbWFuZCBpcyBkaXNhYmxlZCwgdGhlIE16U2NoZW1lIGxpYnJhcnkgY291bGQgbm90IGJlICIKKyJFODE1OiBTb3JyeSwgdGhpcyBjb21tYW5kIGlzIGRpc2FibGVkLCB0aGUgTXpTY2hlbWUgbGlicmFyaWVzIGNvdWxkIG5vdCBiZSAiCiAibG9hZGVkLiIKLW1zZ3N0ciAiIgotIj8/PzogpLOkzqWzpd6l86XJpM/Mtbj6pMekuSwgpLSk4aTzpMqktaSkOiBNelNjaGVtZSCl6aWkpdal6aXqpPKl7aG8pcmkx6StpN4iCi0ipLuk86THpLekvy4iCittc2dzdHIgIkU4MTU6IKSzpM6ls6XepfOlyaTPzLW4+qTHpLkuIE16U2NoZW1lIKXppaSl1qXppeqk8qXtobylyaTHpK2k3qS7pPMuIgogCiBtc2dpZCAiaW52YWxpZCBleHByZXNzaW9uIgogbXNnc3RyICLMtbj6pMq8sKTHpLkiCkBAIC0yNDM5LDkgKzI1NTUsNiBAQAogbXNnaWQgImNvdWxkbid0IG9wZW4gYnVmZmVyIgogbXNnc3RyICKl0KXDpdWloaTys6uksaTepLuk8yIKIAotbXNnaWQgImNhbm5vdCBzYXZlIHVuZG8gaW5mb3JtYXRpb24iCi1tc2dzdHIgIqWipfOlyaWlvvDK86Ssyt3CuKTHpK2k3qS7pPMiCi0KIG1zZ2lkICJjYW5ub3QgZGVsZXRlIGxpbmUiCiBtc2dzdHIgIrnUpPK+w6S7pN6ku6TzIgogCkBAIC0yNDcyLDYgKzI1ODUsMjIgQEAKIG1zZ2lkICJub3QgYWxsb3dlZCBpbiB0aGUgVmltIHNhbmRib3giCiBtc2dzdHIgIqW1pfOlyaXcpcOlr6W5pMekz7X2pLWk7KTepLuk8yIKIAorIywgYy1mb3JtYXQKK21zZ2lkICJFMzcwOiBDb3VsZCBub3QgbG9hZCBsaWJyYXJ5ICVzIgorbXNnc3RyICJFMzcwOiCl6aWkpdal6aXqICVzIKType2hvKXJpMekraTepLuk86THpLekvyIKKworbXNnaWQgIlNvcnJ5LCB0aGlzIGNvbW1hbmQgaXMgZGlzYWJsZWQ6IHRoZSBQZXJsIGxpYnJhcnkgY291bGQgbm90IGJlIGxvYWRlZC4iCittc2dzdHIgIiIKKyKks6TOpbOl3qXzpcmkz8y1uPqkx6S5LCCktKThpPOkyqS1pKQ6IFBlcmyl6aWkpdal6aXqpPKl7aG8pcmkx6StpN6ku6TzpMekt6S/LiIKKworbXNnaWQgIkUyOTk6IFBlcmwgZXZhbHVhdGlvbiBmb3JiaWRkZW4gaW4gc2FuZGJveCB3aXRob3V0IHRoZSBTYWZlIG1vZHVsZSIKK21zZ3N0ciAiIgorIkUyOTk6IKW1pfOlyaXcpcOlr6W5pMekzyBTYWZlIKXipbil5aG8peuk8rvIzdGkt6TKpKRQZXJspbmlr6XqpdelyKTPttikuKTppOwiCisipMakpKTepLkiCisKK21zZ2lkICJFODM2OiBUaGlzIFZpbSBjYW5ub3QgZXhlY3V0ZSA6cHl0aG9uIGFmdGVyIHVzaW5nIDpweTMiCittc2dzdHIgIkU4MzY6IKSzpM5WaW2kx6TPIDpweTMgpPK7yKTDpL+45aTLIDpweXRob24gpPK7yKSopN6ku6TzIgorCiBtc2dpZCAiIgogIkUyNjM6IFNvcnJ5LCB0aGlzIGNvbW1hbmQgaXMgZGlzYWJsZWQsIHRoZSBQeXRob24gbGlicmFyeSBjb3VsZCBub3QgYmUgIgogImxvYWRlZC4iCkBAIC0yNDkyLDUxICsyNjIxLDEyIEBACiBtc2dpZCAiaW52YWxpZCBhdHRyaWJ1dGUiCiBtc2dzdHIgIsy1uPqkysKwwK2kx6S5IgogCi1tc2dpZCAid3JpdGVsaW5lcygpIHJlcXVpcmVzIGxpc3Qgb2Ygc3RyaW5ncyIKLW1zZ3N0ciAid3JpdGVsaW5lcygpIKTLpM/KuLv6zvOkzqXqpbmlyKSsyazN16THpLkiCi0KLW1zZ2lkICJFMjY0OiBQeXRob246IEVycm9yIGluaXRpYWxpc2luZyBJL08gb2JqZWN0cyIKLW1zZ3N0ciAiRTI2NDogUHl0aG9uOiBJL0+lqqXWpbilp6Wvpcikzr3ptPyyvcPmpMulqKXpobykx6S5IgotCi1tc2dpZCAiYXR0ZW1wdCB0byByZWZlciB0byBkZWxldGVkIGJ1ZmZlciIKLW1zZ3N0ciAivsOktaTspL+l0KXDpdWloaSsu7K+yKS1pOyk3qS3pL8iCi0KLW1zZ2lkICJsaW5lIG51bWJlciBvdXQgb2YgcmFuZ2UiCi1tc2dzdHIgIsjPsM+zsKTOudTI1rnmpMekuSIKLQogIywgYy1mb3JtYXQKLW1zZ2lkICI8YnVmZmVyIG9iamVjdCAoZGVsZXRlZCkgYXQgJThsWD4iCi1tc2dzdHIgIjyl0KXDpdWloaWqpdaluKWnpa+lyCAovsO17rrRpN8pICU4bFg+IgorbXNnaWQgIjxidWZmZXIgb2JqZWN0IChkZWxldGVkKSBhdCAlcD4iCittc2dzdHIgIjyl0KXDpdWloaWqpdaluKWnpa+lyCAovsO17rrRpN8pICVwPiIKIAotbXNnaWQgImludmFsaWQgbWFyayBuYW1lIgotbXNnc3RyICLMtbj6pMql3qG8pa/MvqTHpLkiCi0KLW1zZ2lkICJubyBzdWNoIGJ1ZmZlciIKLW1zZ3N0ciAipL2kzqTopKakyqXQpcOl1aWhpM+koqTqpN6ku6TzIgotCi1tc2dpZCAiYXR0ZW1wdCB0byByZWZlciB0byBkZWxldGVkIHdpbmRvdyIKLW1zZ3N0ciAivsOktaTspL+lpqWjpfOlyaWmpKy7sr7IpLWk7KTepLekvyIKLQotbXNnaWQgInJlYWRvbmx5IGF0dHJpYnV0ZSIKLW1zZ3N0ciAixsm5/sDszdHCsMCtIgotCi1tc2dpZCAiY3Vyc29yIHBvc2l0aW9uIG91dHNpZGUgYnVmZmVyIgotbXNnc3RyICKlq6G8pb2l66SspdClw6XVpaGkzrOwpMukoqTqpN6kuSIKLQotIywgYy1mb3JtYXQKLW1zZ2lkICI8d2luZG93IG9iamVjdCAoZGVsZXRlZCkgYXQgJS44bFg+IgotbXNnc3RyICI8paalo6XzpcmlpqWqpdaluKWnpa+lyCAovsO17rrRKSAlLjhsWD4iCi0KLSMsIGMtZm9ybWF0Ci1tc2dpZCAiPHdpbmRvdyBvYmplY3QgKHVua25vd24pIGF0ICUuOGxYPiIKLW1zZ3N0ciAiPKWmpaOl86XJpaalqqXWpbilp6WvpcggKMykw84pICUuOGxYPiIKLQotIywgYy1mb3JtYXQKLW1zZ2lkICI8d2luZG93ICVkPiIKLW1zZ3N0ciAiPKWmpaOl86XJpaYgJWQ+IgotCi1tc2dpZCAibm8gc3VjaCB3aW5kb3ciCi1tc2dzdHIgIqS9pM6k6KSmpMqlpqWjpfOlyaWmpM+koqTqpN6ku6TzIgorbXNnaWQgIkU4Mzc6IFRoaXMgVmltIGNhbm5vdCBleGVjdXRlIDpweTMgYWZ0ZXIgdXNpbmcgOnB5dGhvbiIKK21zZ3N0ciAiRTgzNzogpLOkzlZpbaTHpM8gOnB5dGhvbiCk8rvIpMOkv7jlpMsgOnB5MyCk8rvIpKik3qS7pPMiCiAKIG1zZ2lkICJFMjY1OiAkXyBtdXN0IGJlIGFuIGluc3RhbmNlIG9mIFN0cmluZyIKIG1zZ3N0ciAiRTI2NTogJF8gpM/KuLv6zvOkzqWkpfOluaW/pfOluaTHpMqksaTspNCkyqTqpN6ku6TzIgpAQCAtMjY2OCw2ICsyNzU4LDkgQEAKIG1zZ2lkICJjYW5ub3Qgc2V0IGxpbmUocykiCiBtc2dzdHIgIrnUpPLA38TqpMekraTepLuk8yIKIAorbXNnaWQgImludmFsaWQgbWFyayBuYW1lIgorbXNnc3RyICLMtbj6pMql3qG8pa/MvqTHpLkiCisKIG1zZ2lkICJtYXJrIG5vdCBzZXQiCiBtc2dzdHIgIqXeobylr6TPwN/E6qS1pOykxqSkpN6ku6TzIgogCkBAIC0yNjc4LDYgKzI3NzEsOSBAQAogbXNnaWQgImNhbm5vdCBpbnNlcnQvYXBwZW5kIGxpbmUiCiBtc2dzdHIgIrnUpM7B3sb+L8TJssOk8qTHpK2k3qS7pPMiCiAKK21zZ2lkICJsaW5lIG51bWJlciBvdXQgb2YgcmFuZ2UiCittc2dzdHIgIsjPsM+zsKTOudTI1rnmpMekuSIKKwogbXNnaWQgInVua25vd24gZmxhZzogIgogbXNnc3RyICLMpMPOpM6l1aXppbA6IgogCkBAIC0yNzY2LDkgKzI4NjIsMTUgQEAKIG1zZ2lkICIlZCBmaWxlcyB0byBlZGl0XG4iCiBtc2dzdHIgIiVkILjEpM6l1aWhpaSl66SsytS9uKTyubWkqKTGpKSk3qS5XG4iCiAKK21zZ2lkICJuZXRiZWFucyBpcyBub3Qgc3VwcG9ydGVkIHdpdGggdGhpcyBHVUlcbiIKK21zZ3N0ciAibmV0YmVhbnMgpM+ks6TOR1VJpMekz834zdGkx6StpN6ku6TzXG4iCisKIG1zZ2lkICJUaGlzIFZpbSB3YXMgbm90IGNvbXBpbGVkIHdpdGggdGhlIGRpZmYgZmVhdHVyZS4iCiBtc2dzdHIgIqSzpM5WaW2ky6TPZGlmZrWhx72krKSipOqk3qS7pPMopbOl86XRpaSl67v+wN/E6ikuIgogCittc2dpZCAiJy1uYicgY2Fubm90IGJlIHVzZWQ6IG5vdCBlbmFibGVkIGF0IGNvbXBpbGUgdGltZVxuIgorbXNnc3RyICInLW5iJyC7yM3RydSyxMe9pMekuTogpbOl86XRpaSl67v+pMvMtbj6pMuktaTspMakpKTepLlcbiIKKwogbXNnaWQgIkF0dGVtcHQgdG8gb3BlbiBzY3JpcHQgZmlsZSBhZ2FpbjogXCIiCiBtc2dzdHIgIqW5pa+l6qXXpcil1aWhpaSl66Tyusak07OrpKSkxqTfpN6kuTogXCIiCiAKQEAgLTI5OTcsNyArMzA5OSw3IEBACiBtc2dzdHIgIi0tcmVtb3RlIDxmaWxlcz5cdLLEx72kyqTppNBWaW2ltaG8pdCkxyA8ZmlsZXM+IKTyytS9uKS5pOsiCiAKIG1zZ2lkICItLXJlbW90ZS1zaWxlbnQgPGZpbGVzPiAgU2FtZSwgZG9uJ3QgY29tcGxhaW4gaWYgdGhlcmUgaXMgbm8gc2VydmVyIgotbXNnc3RyICItLXJlbW90ZS1zaWxuZXQgPGZpbGVzPiAgxrG+5SwgpbWhvKXQpKzMtaSvpMak4rfZufDKuKTyvdDOz6S3pMqkpCIKK21zZ3N0ciAiLS1yZW1vdGUtc2lsZW50IDxmaWxlcz4gIMaxvuUsIKW1obyl0KSszLWkr6TGpOK32bnwyrik8r3Qzs+kt6TKpKQiCiAKIG1zZ2lkICIiCiAiLS1yZW1vdGUtd2FpdCA8ZmlsZXM+ICBBcyAtLXJlbW90ZSBidXQgd2FpdCBmb3IgZmlsZXMgdG8gaGF2ZSBiZWVuIGVkaXRlZCIKQEAgLTMwMjUsNiArMzEyNyw5IEBACiBtc2dpZCAiLS1zZXJ2ZXJuYW1lIDxuYW1lPlx0U2VuZCB0by9iZWNvbWUgdGhlIFZpbSBzZXJ2ZXIgPG5hbWU+IgogbXNnc3RyICItLXNlcnZlbmFtZSA8bmFtZT5cdFx0VmltpbWhvKXQIDxuYW1lPiCky8H3v64vzL7BsMDfxOqkuaTrIgogCittc2dpZCAiLS1zdGFydHVwdGltZSA8ZmlsZT5cdFdyaXRlIHN0YXJ0dXAgdGltaW5nIG1lc3NhZ2VzIHRvIDxmaWxlPiIKK21zZ3N0ciAiLS1zdGFydHVwdGltZSA8ZmlsZT5cdLWvxrCky6SrpKukw6S/u/601qTOvty62aTyIDxmaWxlPiCk2L3Qzs+kuaTrIgorCiBtc2dpZCAiLWkgPHZpbWluZm8+XHRcdFVzZSA8dmltaW5mbz4gaW5zdGVhZCBvZiAudmltaW5mbyIKIG1zZ3N0ciAiLWkgPHZpbWluZm8+XHRcdC52aW1pbmZvpM7C5aTvpOqkyyA8dmltaW5mbz4gpPK7yKSmIgogCkBAIC0zMDYxLDEyICszMTY2LDYgQEAKIG1zZ2lkICItaWNvbmljXHRcdFN0YXJ0IHZpbSBpY29uaWZpZWQiCiBtc2dzdHIgIi1pY29uaWNcdFx0use+rrK9pLekv771wtakx3ZpbaTyta/GsKS5pOsiCiAKLW1zZ2lkICItbmFtZSA8bmFtZT5cdFx0VXNlIHJlc291cmNlIGFzIGlmIHZpbSB3YXMgPG5hbWU+IgotbXNnc3RyICItbmFtZSA8bmFtZT5cdFx0dmltpM7MvqSsIDxuYW1lPiCkx6SipOukyKS3pMal6qW9obyluaTyu8ikpiIKLQotbXNnaWQgIlx0XHRcdCAgKFVuaW1wbGVtZW50ZWQpXG4iCi1tc2dzdHIgIlx0XHRcdCAgKLzCwfWktaTspMakpKTKpKQpXG4iCi0KIG1zZ2lkICItYmFja2dyb3VuZCA8Y29sb3I+XHRVc2UgPGNvbG9yPiBmb3IgdGhlIGJhY2tncm91bmQgKGFsc286IC1iZykiCiBtc2dzdHIgIi1iYWNrZ3JvdW5kIDxjb2xvcj5cdMfYt8q/p6TLIDxjb2xvcj4gpPK7yKSmKMaxtcE6IC1iZykiCiAKQEAgLTMxOTEsNyArMzI5MCw2IEBACiAiXG4iCiAiytG5uSAgILnUICAgIM7zICClxqWtpbmlyCIKIAotIywgYy1mb3JtYXQKIG1zZ2lkICIiCiAiXG4iCiAiIyBGaWxlIG1hcmtzOlxuIgpAQCAtMzIwMCw3ICszMjk4LDYgQEAKICIjIKXVpaGlpKXrpd6hvKWvOlxuIgogCiAjLiBXcml0ZSB0aGUganVtcGxpc3Qgd2l0aCAtJwotIywgYy1mb3JtYXQKIG1zZ2lkICIiCiAiXG4iCiAiIyBKdW1wbGlzdCAobmV3ZXN0IGZpcnN0KTpcbiIKQEAgLTMyMDgsNyArMzMwNSw2IEBACiAiXG4iCiAiIyCluKXjpfOl16XqpbmlyCAov7ekt6SkpOKkzqSswOgpOlxuIgogCi0jLCBjLWZvcm1hdAogbXNnaWQgIiIKICJcbiIKICIjIEhpc3Rvcnkgb2YgbWFya3Mgd2l0aGluIGZpbGVzIChuZXdlc3QgdG8gb2xkZXN0KTpcbiIKQEAgLTMyNDAsMTUgKzMzMzYsNiBAQAogbXNnaWQgIkUyODk6IGlucHV0IG1ldGhvZCBkb2Vzbid0IHN1cHBvcnQgbXkgcHJlZWRpdCB0eXBlIgogbXNnc3RyICJFMjg5OiClpKXzpdelw6XIpeGlvaXDpcmkzyBteSBwcmVlZGl0IHR5cGUgpPKltaXdobylyKS3pN6ku6TzIgogCi1tc2dpZCAiRTI5MDogb3Zlci10aGUtc3BvdCBzdHlsZSByZXF1aXJlcyBmb250c2V0IgotbXNnc3RyICJFMjkwOiBvdmVyLXRoZS1zcG90IKW5pb+lpKXrpMukz2ZvbnRzZXSkrMmszdekx6S5IgotCi1tc2dpZCAiRTI5MTogWW91ciBHVEsrIGlzIG9sZGVyIHRoYW4gMS4yLjMuIFN0YXR1cyBhcmVhIGRpc2FibGVkIgotbXNnc3RyICJFMjkxOiBHVEsrpKwxLjIuM6TopOqk4rjFpKSkzqTHpbmlxqG8pb+luaWopeqloqSszLW4+qTHpLkiCi0KLW1zZ2lkICJFMjkyOiBJbnB1dCBNZXRob2QgU2VydmVyIGlzIG5vdCBydW5uaW5nIgotbXNnc3RyICJFMjkyOiClpKXzpdelw6XIpeGlvaXDpcmltaG8pdAgpKzGsLrupLekxqSkpN6ku6TzIgotCiBtc2dpZCAiRTI5MzogYmxvY2sgd2FzIG5vdCBsb2NrZWQiCiBtc2dzdHIgIkUyOTM6IKXWpe2lw6WvpKyl7aXDpa+ktaTspMakpKTepLuk8yIKIApAQCAtMzI3Niw2ICszMzYzLDkgQEAKIG1zZ2lkICJFMjk4OiBEaWRuJ3QgZ2V0IGJsb2NrIG5yIDI/IgogbXNnc3RyICJFMjk4OiCl1qXtpcOlryAyIKTyvOjGwKTHpK2k3qS7pPM/IgogCittc2dpZCAiRTg0MzogRXJyb3Igd2hpbGUgdXBkYXRpbmcgc3dhcCBmaWxlIGNyeXB0IgorbXNnc3RyICJFODQzOiCluaXvpcOl16XVpaGlpKXrpM6wxbnmpPK5ub+3w+aky6WopemhvKSsyK/AuKS3pN6kt6S/IgorCiAjLiBjb3VsZCBub3QgKHJlKW9wZW4gdGhlIHN3YXAgZmlsZSwgd2hhdCBjYW4gd2UgZG8/Pz8/CiBtc2dpZCAiRTMwMTogT29wcywgbG9zdCB0aGUgc3dhcCBmaWxlISEhIgogbXNnc3RyICJFMzAxOiCkqqTDpMgsIKW5pe+lw6XXpdWloaWkpeukrLy6pO+k7KTepLekvyEhISIKQEAgLTMzMzQsNiArMzQyNCwxMiBAQAogIixcbiIKICKk4qS3pK+kz6XVpaGlpKXrpKzCu739pLekxqSkpN6kuS4iCiAKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIkU4MzM6ICVzIGlzIGVuY3J5cHRlZCBhbmQgdGhpcyB2ZXJzaW9uIG9mIFZpbSBkb2VzIG5vdCBzdXBwb3J0IGVuY3J5cHRpb24iCittc2dzdHIgIiIKKyJFODMzOiAlcyCkz6SzpM6l0KG8pbil56XzpM5WaW2kx6W1pd2hvKXIpLekxqSkpMqkpLfBvLCkx7DFueayvaS1pOykxqSkpN6kuSIKKwogbXNnaWQgIiBoYXMgYmVlbiBkYW1hZ2VkIChwYWdlIHNpemUgaXMgc21hbGxlciB0aGFuIG1pbmltdW0gdmFsdWUpLlxuIgogbXNnc3RyICIgpM/Cu739pLekxqSkpN6kuSAopdqhvKW4pbWlpKW6pKy6x76uw82k8rK8svOkw6TGpKSk3qS5KS5cbiIKIApAQCAtMzM0OSw2ICszNDQ1LDM4IEBACiBtc2dzdHIgIkUzMDg6ILfZufA6ILi2y9yl1aWhpaSl66SsytG5uaS1pOykxqSkpN6kuSIKIAogIywgYy1mb3JtYXQKK21zZ2lkICJTd2FwIGZpbGUgaXMgZW5jcnlwdGVkOiBcIiVzXCIiCittc2dzdHIgIqW5pe+lw6XXpdWloaWkpeukz7DFueayvaS1pOykxqSkpN6kuTogXCIlc1wiIgorCittc2dpZCAiIgorIlxuIgorIklmIHlvdSBlbnRlcmVkIGEgbmV3IGNyeXB0IGtleSBidXQgZGlkIG5vdCB3cml0ZSB0aGUgdGV4dCBmaWxlLCIKK21zZ3N0ciAiIgorIlxuIgorIr+3pLekpLDFuealraG8pPLG/s7PpLekv6SipMiky6XGpa2luaXIpdWloaWkpeuk8srdwrikt6TGpKSkyqSkvuy556TPLCIKKworbXNnaWQgIiIKKyJcbiIKKyJlbnRlciB0aGUgbmV3IGNyeXB0IGtleS4iCittc2dzdHIgIiIKKyJcbiIKKyK/t6S3pKSwxbnmpa2hvKTyxv7Oz6S3pMakr6TApLWkpC4iCisKK21zZ2lkICIiCisiXG4iCisiSWYgeW91IHdyb3RlIHRoZSB0ZXh0IGZpbGUgYWZ0ZXIgY2hhbmdpbmcgdGhlIGNyeXB0IGtleSBwcmVzcyBlbnRlciIKK21zZ3N0ciAiIgorIlxuIgorIrDFuealraG8pPLK0aSopL+koqTIpMulxqWtpbmlyKXVpaGlpKXrpPLK3cK4pLekv77sueekzywgpcalraW5pcil1aWhpaSl66TIIgorCittc2dpZCAiIgorIlxuIgorInRvIHVzZSB0aGUgc2FtZSBrZXkgZm9yIHRleHQgZmlsZSBhbmQgc3dhcCBmaWxlIgorbXNnc3RyICIiCisiXG4iCisipbml76XDpdel1aWhpaSl66TLxrGkuLDFuealraG8pPK7yKSmpL+k4aTLZW50ZXKkwKSxpPKyoaS3pMakr6TApLWkpC4iCisKKyMsIGMtZm9ybWF0CiBtc2dpZCAiRTMwOTogVW5hYmxlIHRvIHJlYWQgYmxvY2sgMSBmcm9tICVzIgogbXNnc3RyICJFMzA5OiAlcyCkq6Tppdal7aXDpa8gMSCk8sbJuf6k4aTepLuk8yIKIApAQCAtMzQwMSwxNiArMzUyOSwyNCBAQAogIlxuIgogIijK0bm5pPKlwaWnpcOlr6S5pOukv6ThpMssIKSzpM6l1aWhpaSl66Tyysykzsy+wbCkx8rdwrikt6S/vuWkx1xuIgogCi1tc2dpZCAiYW5kIHJ1biBkaWZmIHdpdGggdGhlIG9yaWdpbmFsIGZpbGUgdG8gY2hlY2sgZm9yIGNoYW5nZXMpXG4iCi1tc2dzdHIgIri2y9yl1aWhpaSl66TIpM4gZGlmZiCk8rzCudSkuaTrpMjOyaSkpMekt6TnpKYpXG4iCittc2dpZCAiYW5kIHJ1biBkaWZmIHdpdGggdGhlIG9yaWdpbmFsIGZpbGUgdG8gY2hlY2sgZm9yIGNoYW5nZXMpIgorbXNnc3RyICK4tsvcpdWloaWkpeukyKTOIGRpZmYgpPK8wrnUpLmk66TIzsmkpKTHpLek56SmKSIKKworbXNnaWQgIlJlY292ZXJ5IGNvbXBsZXRlZC4gQnVmZmVyIGNvbnRlbnRzIGVxdWFscyBmaWxlIGNvbnRlbnRzLiIKK21zZ3N0ciAiyfy4tbSwzrsuIKXQpcOl1aWhpM7G4s3GpM+l1aWhpaSl66TIxrGkuKTLpMqk6qTepLekvy4iCiAKIG1zZ2lkICIiCi0iRGVsZXRlIHRoZSAuc3dwIGZpbGUgYWZ0ZXJ3YXJkcy5cbiIKKyJcbiIKKyJZb3UgbWF5IHdhbnQgdG8gZGVsZXRlIHRoZSAuc3dwIGZpbGUgbm93LlxuIgogIlxuIgogbXNnc3RyICIiCisiXG4iCiAipL2k7KSrpOkuc3dwpdWloaWkpeuk8rrvvfykt6TGpK+kwKS1pKRcbiIKICJcbiIKIAorbXNnaWQgIlVzaW5nIGNyeXB0IGtleSBmcm9tIHN3YXAgZmlsZSBmb3IgdGhlIHRleHQgZmlsZS5cbiIKK21zZ3N0ciAipbml76XDpdel1aWhpaSl66SrpOm86MbApLekv7DFuealraG8pPKlxqWtpbmlyKXVpaGlpKXrpMu7yKSkpN6kuS5cbiIKKwogIy4gdXNlIG1zZygpIHRvIHN0YXJ0IHRoZSBzY3JvbGxpbmcgcHJvcGVybHkKIG1zZ2lkICJTd2FwIGZpbGVzIGZvdW5kOiIKIG1zZ3N0ciAipbml76XDpdel1aWhpaSl66SsyqO/9LirpMSkq6TqpN6kt6S/OiIKQEAgLTM1ODUsMjQgKzM3MjEsMjAgQEAKICMuICogb3RoZXIgbGFuZ3VhZ2VzLgogbXNnaWQgIiIKICJcbiIKLSIoMSkgQW5vdGhlciBwcm9ncmFtIG1heSBiZSBlZGl0aW5nIHRoZSBzYW1lIGZpbGUuXG4iCi0iICAgIElmIHRoaXMgaXMgdGhlIGNhc2UsIGJlIGNhcmVmdWwgbm90IHRvIGVuZCB1cCB3aXRoIHR3b1xuIgotIiAgICBkaWZmZXJlbnQgaW5zdGFuY2VzIG9mIHRoZSBzYW1lIGZpbGUgd2hlbiBtYWtpbmcgY2hhbmdlcy5cbiIKKyIoMSkgQW5vdGhlciBwcm9ncmFtIG1heSBiZSBlZGl0aW5nIHRoZSBzYW1lIGZpbGUuICBJZiB0aGlzIGlzIHRoZSBjYXNlLFxuIgorIiAgICBiZSBjYXJlZnVsIG5vdCB0byBlbmQgdXAgd2l0aCB0d28gZGlmZmVyZW50IGluc3RhbmNlcyBvZiB0aGUgc2FtZVxuIgorIiAgICBmaWxlIHdoZW4gbWFraW5nIGNoYW5nZXMuIgogbXNnc3RyICIiCiAiXG4iCiAiKDEpIMrMpM6l16XtpbCl6aXgpKzGsaS4pdWloaWkpeuk8srUvbikt6TGpKSk66SrpOKkt6TspN6ku6TzLlxuIgogIiAgICCks6TOvuy556TLpM8sIMrRubmk8qS3pL+63aTLuse9qsWqpMssIMaxpLil1aWhpaSl66TOsNukyqTrXG4iCi0iICAgIDKkxKTOpaSl86W5pb+l86W5pKykx6StpMakt6TepKaks6TIpMvD7bDVpLekxqSvpMCktaSkLlxuIgorIiAgICAypMSkzqWkpfOluaW/pfOluaSspMekraTGpLek3qSmpLOkyKTLw+2w1aS3pMakr6TApLWkpC4iCiAKLW1zZ2lkICIgICAgUXVpdCwgb3IgY29udGludWUgd2l0aCBjYXV0aW9uLlxuIgotbXNnc3RyICIgICAgvarOu6S5pOukqywgw+2w1aS3pMqkrKTpwrOksaTepLkuXG4iCittc2dpZCAiICBRdWl0LCBvciBjb250aW51ZSB3aXRoIGNhdXRpb24uXG4iCittc2dzdHIgIiAgvarOu6S5pOukqywgw+2w1aS3pMqkrKTpwrOksaTGpK+kwKS1pKQuXG4iCiAKLW1zZ2lkICIiCi0iXG4iCi0iKDIpIEFuIGVkaXQgc2Vzc2lvbiBmb3IgdGhpcyBmaWxlIGNyYXNoZWQuXG4iCi1tc2dzdHIgIiIKLSJcbiIKLSIoMikgpLOkzqXVpaGlpKXrpM7K1L24pbulw6W3peel86Sspa+l6aXDpbel5aS3pL8uXG4iCittc2dpZCAiKDIpIEFuIGVkaXQgc2Vzc2lvbiBmb3IgdGhpcyBmaWxlIGNyYXNoZWQuXG4iCittc2dzdHIgIigyKSCks6TOpdWloaWkpeukzsrUvbilu6XDpbel56XzpKylr6XppcOlt6XlpLekvy5cbiIKIAogbXNnaWQgIiAgICBJZiB0aGlzIGlzIHRoZSBjYXNlLCB1c2UgXCI6cmVjb3ZlclwiIG9yIFwidmltIC1yICIKIG1zZ3N0ciAiICAgIKSzpM6+7LnnpMukzyBcIjpyZWNvdmVyXCIgpKsgXCJ2aW0gLXIgIgpAQCAtMzY0NSw3ICszNzc3LDcgQEAKIG1zZ3N0ciAiIgogIsbJuf7A7M3RpMezq6SvKCZPKVxuIgogIqTIpMukq6SvytS9uKS5pOsoJkUpXG4iCi0iyfyz6KS1pLuk6ygmUillY292ZXJcbiIKKyLJ/LPopLWku6TrKCZSKVxuIgogIr2qzrukuaTrKCZRKVxuIgogIsPmu9+kuaTrKCZBKSIKIApAQCAtMzY1OSw3ICszNzkxLDcgQEAKIG1zZ3N0ciAiIgogIsbJuf7A7M3RpMezq6SvKCZPKVxuIgogIqTIpMukq6SvytS9uKS5pOsoJkUpXG4iCi0iyfyz6KS1pLuk6ygmUillY292ZXJcbiIKKyLJ/LPopLWku6TrKCZSKVxuIgogIrrvvfykuaTrKCZEKVxuIgogIr2qzrukuaTrKCZRKVxuIgogIsPmu9+kuaTrKCZBKSIKQEAgLTM3ODksMTcgKzM5MjEsMjEgQEAKIG1zZ2lkICJFNzY2OiBJbnN1ZmZpY2llbnQgYXJndW1lbnRzIGZvciBwcmludGYoKSIKIG1zZ3N0ciAiRTc2NjogcHJpbnRmKCkgpM6w+r/0pKzJ1L29yqykx6S5IgogCittc2dpZCAiRTgwNzogRXhwZWN0ZWQgRmxvYXQgYXJndW1lbnQgZm9yIHByaW50ZigpIgorbXNnc3RyICJFODA3OiBwcmludGYoKSCkzrD6v/Sky6TPyeLGsL6vv/SkrLT8wtSktaTspMakpKTepLkiCisKIG1zZ2lkICJFNzY3OiBUb28gbWFueSBhcmd1bWVudHMgdG8gcHJpbnRmKCkiCiBtc2dzdHIgIkU3Njc6IHBpcm50ZigpIKTOsPq/9KSswr+y4aSupN6kuSIKIAogbXNnaWQgIlcxMDogV2FybmluZzogQ2hhbmdpbmcgYSByZWFkb25seSBmaWxlIgogbXNnc3RyICJXMTA6ILfZufA6IMbJuf7A7M3RpdWloaWkpeuk8srRubmkt6TepLkiCiAKLW1zZ2lkICJUeXBlIG51bWJlciBvciBjbGljayB3aXRoIG1vdXNlICg8RW50ZXI+IGNhbmNlbHMpOiAiCi1tc2dzdHIgIr/0w82k8sb+zs+kuaTrpKul3qWmpbmk8qWvpeqlw6WvpLekxqSvpMCktaSkICg8RW50ZXI+IKTHpa2l46Xzpbul6yk6ICIKK21zZ2lkICJUeXBlIG51bWJlciBhbmQgPEVudGVyPiBvciBjbGljayB3aXRoIG1vdXNlIChlbXB0eSBjYW5jZWxzKTogIgorbXNnc3RyICIiCisiyNa55qTIPEVudGVyPqTyxv7Oz6S5pOukq6XepaaluaTHpa+l6qXDpa+kt6TGpK+kwKS1pKQgKLb1pMelraXjpfOlu6XrKTogIgogCi1tc2dpZCAiQ2hvaWNlIG51bWJlciAoPEVudGVyPiBjYW5jZWxzKTogIgotbXNnc3RyICLI1rnmpPLBqsLypLekxqSvpMCktaSkICg8RW50ZXI+IKTHpa2l46Xzpbul6yk6ICIKK21zZ2lkICJUeXBlIG51bWJlciBhbmQgPEVudGVyPiAoZW1wdHkgY2FuY2Vscyk6ICIKK21zZ3N0ciAiyNa55qTIPEVudGVyPqTyxv7Oz6S3pMakr6TApLWkpCAotvWkx6WtpeOl86W7pespOiAiCiAKIG1zZ2lkICIxIG1vcmUgbGluZSIKIG1zZ3N0ciAiMSC51CDEybLDpLek3qS3pL8iCkBAIC0zODI4LDcgKzM5NjQsNiBAQAogbXNnaWQgIlZpbTogRmluaXNoZWQuXG4iCiBtc2dzdHIgIlZpbTogvarOu6S3pN6kt6S/LlxuIgogCi0jLCBjLWZvcm1hdAogbXNnaWQgIkVSUk9SOiAiCiBtc2dzdHIgIqWopemhvDogIgogCkBAIC0zOTExLDcgKzQwNDYsNiBAQAogbXNnaWQgIkUzNDc6IE5vIG1vcmUgZmlsZSBcIiVzXCIgZm91bmQgaW4gcGF0aCIKIG1zZ3N0ciAiRTM0NzogpdGluaTLpM+ks6TssMq+5SBcIiVzXCIgpMikpKSmpdWloaWkpeukrKSipOqk3qS7pPMiCiAKLSMuIEdldCBoZXJlIHdoZW4gdGhlIHNlcnZlciBjYW4ndCBiZSBmb3VuZC4KIG1zZ2lkICJDYW5ub3QgY29ubmVjdCB0byBOZXRiZWFucyAjMiIKIG1zZ3N0ciAiTmV0YmVhbnMgIzIgpMvA3MKzpMekraTepLuk8yIKIApAQCAtMzkzMCw5ICs0MDY0LDE4IEBACiBtc2dpZCAiRTY1ODogTmV0QmVhbnMgY29ubmVjdGlvbiBsb3N0IGZvciBidWZmZXIgJWxkIgogbXNnc3RyICJFNjU4OiCl0KXDpdWloSAlbGQgpM4gTmV0QmVhbnMgwNzCs6SsvLqk76TspN6kt6S/IgogCittc2dpZCAiRTgzODogbmV0YmVhbnMgaXMgbm90IHN1cHBvcnRlZCB3aXRoIHRoaXMgR1VJIgorbXNnc3RyICJFODM4OiBOZXRCZWFuc6TPpLOkzkdVSaTLpM/C0LH+pLekxqSkpN6ku6TzIgorCittc2dpZCAiRTUxMTogbmV0YmVhbnMgYWxyZWFkeSBjb25uZWN0ZWQiCittc2dzdHIgIkU1MTE6IE5ldEJlYW5zpM+0+6TLwNzCs6S3pMakpKTepLkiCisKIG1zZ2lkICJFNTA1OiAiCiBtc2dzdHIgIkU1MDU6ICIKIAorbXNnaWQgIkUzNDk6IE5vIGlkZW50aWZpZXIgdW5kZXIgY3Vyc29yIgorbXNnc3RyICJFMzQ5OiClq6G8pb2l66TOsMzD1qTLpM+8scrMu9KkrKSipOqk3qS7pPMiCisKIG1zZ2lkICJFNzc0OiAnb3BlcmF0b3JmdW5jJyBpcyBlbXB0eSIKIG1zZ3N0ciAiRTc3NDogJ29wZXJhdG9yZnVuYycgpaql16W3peel86SstvWkx6S5IgogCkBAIC0zOTQ1LDkgKzQwODgsNiBAQAogbXNnaWQgIkUzNDg6IE5vIHN0cmluZyB1bmRlciBjdXJzb3IiCiBtc2dzdHIgIkUzNDg6IKWrobylvaXrpM6wzMPWpMukz8q4u/rO86SspKKk6qTepLuk8yIKIAotbXNnaWQgIkUzNDk6IE5vIGlkZW50aWZpZXIgdW5kZXIgY3Vyc29yIgotbXNnc3RyICJFMzQ5OiClq6G8pb2l66TOsMzD1qTLpM+8scrMu9KkrKSipOqk3qS7pPMiCi0KIG1zZ2lkICJFMzUyOiBDYW5ub3QgZXJhc2UgZm9sZHMgd2l0aCBjdXJyZW50ICdmb2xkbWV0aG9kJyIKIG1zZ3N0ciAiRTM1MjoguL2636TOICdmb2xkbWV0aG9kJyCkx6TPwN6+9qTfpPK+w7XupMekraTepLuk8yIKIApAQCAtNDAzNyw3ICs0MTc3LDYgQEAKIG1zZ2lkICJJbGxlZ2FsIHJlZ2lzdGVyIG5hbWUiCiBtc2dzdHIgIsnUwLWkyqXspbiluaW/zL4iCiAKLSMsIGMtZm9ybWF0CiBtc2dpZCAiIgogIlxuIgogIiMgUmVnaXN0ZXJzOlxuIgpAQCAtNDA1NSw3ICs0MTk0LDcgQEAKIAogIywgYy1mb3JtYXQKIG1zZ2lkICJTZWxlY3RlZCAlcyVsZCBvZiAlbGQgTGluZXM7ICVsZCBvZiAlbGQgV29yZHM7ICVsZCBvZiAlbGQgQnl0ZXMiCi1tc2dzdHIgIsGqwvIgJXMlbGQgLyAlbGQgudQ7ICVsZCAvICVsZCDDsbjsOyAlbGQgLyAlbGQgyri7+iIKK21zZ3N0ciAiwarC8iAlcyVsZCAvICVsZCC51DsgJWxkIC8gJWxkIMOxuOw7ICVsZCAvICVsZCCl0KWkpcgiCiAKICMsIGMtZm9ybWF0CiBtc2dpZCAiIgpAQCAtNDA2NSw3ICs0MjA0LDcgQEAKIAogIywgYy1mb3JtYXQKIG1zZ2lkICJDb2wgJXMgb2YgJXM7IExpbmUgJWxkIG9mICVsZDsgV29yZCAlbGQgb2YgJWxkOyBCeXRlICVsZCBvZiAlbGQiCi1tc2dzdHIgIs7zICVzIC8gJXM7ILnUICVsZCBvZiAlbGQ7IMOxuOwgJWxkIC8gJWxkOyDKuLv6ICVsZCAvICVsZCIKK21zZ3N0ciAizvMgJXMgLyAlczsgudQgJWxkIG9mICVsZDsgw7G47CAlbGQgLyAlbGQ7IKXQpaSlyCAlbGQgLyAlbGQiCiAKICMsIGMtZm9ybWF0CiBtc2dpZCAiIgpAQCAtNDA5Myw2ICs0MjMyLDkgQEAKIG1zZ2lkICJFNTIwOiBOb3QgYWxsb3dlZCBpbiBhIG1vZGVsaW5lIgogbXNnc3RyICJFNTIwOiBtb2RlbGluZSCkx6TPtfayxKS1pOyk3qS7pPMiCiAKK21zZ2lkICJFODQ2OiBLZXkgY29kZSBub3Qgc2V0IgorbXNnc3RyICJFODQ2OiClraG8pbOhvKXJpKzA38TqpLWk7KTGpKSk3qS7pPMiCisKIG1zZ2lkICJFNTIxOiBOdW1iZXIgcmVxdWlyZWQgYWZ0ZXIgPSIKIG1zZ3N0ciAiRTUyMTogPSCkzrjlpMukz7/0u/qkrMmszdekx6S5IgogCkBAIC00MTE1LDYgKzQyNTcsMTIgQEAKIG1zZ2lkICJFNTg5OiAnYmFja3VwZXh0JyBhbmQgJ3BhdGNobW9kZScgYXJlIGVxdWFsIgogbXNnc3RyICJFNTg5OiAnYmFja3VwZXh0JyCkyCAncGF0Y2htb2RlJyCkrMaxpLikx6S5IgogCittc2dpZCAiRTgzNDogQ29uZmxpY3RzIHdpdGggdmFsdWUgb2YgJ2xpc3RjaGFycyciCittc2dzdHIgIkU4MzQ6ICdsaXN0Y2hhcnMnpM7DzaTLzLe94qSspKKk6qTepLkiCisKK21zZ2lkICJFODM1OiBDb25mbGljdHMgd2l0aCB2YWx1ZSBvZiAnZmlsbGNoYXJzJyIKK21zZ3N0ciAiRTgzNTogJ2ZpbGxjaGFycyekzsPNpMvMt73ipKykoqTqpN6kuSIKKwogbXNnaWQgIkU2MTc6IENhbm5vdCBiZSBjaGFuZ2VkIGluIHRoZSBHVEsrIDIgR1VJIgogbXNnc3RyICJFNjE3OiBHVEsrMiBHVUmkx6TPytG5uaTHpK2k3qS7pPMiCiAKQEAgLTQ1MjcsNiArNDY3NSw5IEBACiBtc2dpZCAiRTM4MjogQ2Fubm90IHdyaXRlLCAnYnVmdHlwZScgb3B0aW9uIGlzIHNldCIKIG1zZ3N0ciAiRTM4MjogJ2J1ZnR5cGUnIKWqpdelt6XnpfOkrMDfxOqktaTspMakpKTrpM6kx73xuf6k36TepLuk8yIKIAorbXNnaWQgIkVycm9yIGZpbGUiCittc2dzdHIgIqWopemhvKXVpaGlpKXrIgorCiBtc2dpZCAiRTY4MzogRmlsZSBuYW1lIG1pc3Npbmcgb3IgaW52YWxpZCBwYXR0ZXJuIgogbXNnc3RyICJFNjgzOiCl1aWhpaSl68y+pKzMtaSkpKvMtbj6pMql0aW/obyl86THpLkiCiAKQEAgLTQ3NTEsNiArNDkwMiw5IEBACiBtc2dpZCAiRTM4OTogQ291bGRuJ3QgZmluZCBwYXR0ZXJuIgogbXNnc3RyICJFMzg5OiCl0aW/obyl86TypN+kxKSxpOmk7KTepLuk8yIKIAorbXNnaWQgIlN1YnN0aXR1dGUgIgorbXNnc3RyICJTdWJzdGl0dXRlICIKKwogIywgYy1mb3JtYXQKIG1zZ2lkICIiCiAiXG4iCkBAIC00Nzg5LDYgKzQ5NDMsMTEgQEAKIG1zZ3N0ciAiRTc1Njogpbml2qXrpcGlp6XDpa+kz8y1uPqyvaS1pOykxqSkpN6kuSIKIAogIywgYy1mb3JtYXQKK21zZ2lkICJXYXJuaW5nOiBDYW5ub3QgZmluZCB3b3JkIGxpc3QgXCIlc18lcy5zcGxcIiBvciBcIiVzX2FzY2lpLnNwbFwiIgorbXNnc3RyICIiCisit9m58Dogw7G47KXqpbmlyCBcIiVzXyVzLnNwbFwiIKSqpOik0yBcIiVzX2FzY2lpLnNwbFwiIKTPuKukxKSrpOqk3qS7pPMiCisKKyMsIGMtZm9ybWF0CiBtc2dpZCAiV2FybmluZzogQ2Fubm90IGZpbmQgd29yZCBsaXN0IFwiJXMuJXMuc3BsXCIgb3IgXCIlcy5hc2NpaS5zcGxcIiIKIG1zZ3N0ciAiIgogIrfZufA6IMOxuOyl6qW5pcggXCIlcy4lcy5zcGxcIiCkqqTopNMgXCIlcy5hc2NpaS5zcGxcIiCkz7irpMSkq6TqpN6ku6TzIgpAQCAtNDg1NCw2ICs1MDEzLDEwIEBACiAipLOkyKSspKKk6qTepLkiCiAKICMsIGMtZm9ybWF0Cittc2dpZCAiV3JvbmcgQ09NUE9VTkRSVUxFUyB2YWx1ZSBpbiAlcyBsaW5lICVkOiAlcyIKK21zZ3N0ciAiQ09NUE9VTkRSVUxFUyCkzsPNpMu47aTqpKykoqTqpN6kuS4gpdWloaWkpesgJXMgpM4gJWQgudTM3DogJXMiCisKKyMsIGMtZm9ybWF0CiBtc2dpZCAiV3JvbmcgQ09NUE9VTkRXT1JETUFYIHZhbHVlIGluICVzIGxpbmUgJWQ6ICVzIgogbXNnc3RyICIlcyCkziAlZCC51MzcpM4gQ09NUE9VTkRXT1JETUFYIKTOw82ky7jtpOqkrKSipOqk3qS5OiAlcyIKIApAQCAtNTAxMCw2ICs1MTczLDkgQEAKIG1zZ2lkICJJZ25vcmVkICVkIHdvcmRzIHdpdGggbm9uLUFTQ0lJIGNoYXJhY3RlcnMiCiBtc2dzdHIgIsjzQVNDSUnKuLv6pPK03qTgICVkILjEpM7DsbjspPLMtbvrpLek3qS3pL8iCiAKK21zZ2lkICJFODQ1OiBJbnN1ZmZpY2llbnQgbWVtb3J5LCB3b3JkIGxpc3Qgd2lsbCBiZSBpbmNvbXBsZXRlIgorbXNnc3RyICJFODQ1OiCl4aXipeqkrMKtpOqkyqSkpM6kx6Giw7G47KXqpbmlyKTPydS0sMG0pMekuSIKKwogIywgYy1mb3JtYXQKIG1zZ2lkICJDb21wcmVzc2VkICVkIG9mICVkIG5vZGVzOyAlZCAoJWQlJSkgcmVtYWluaW5nIgogbXNnc3RyICKlzqG8pckgJWQguMQowbQgJWQguMTD5ikgpPKwtb3MpLek3qS3pL87ILvEpOogJWQgKCVkJSUpIgpAQCAtNTE4Nyw4ICs1MzUzLDggQEAKIG1zZ2lkICJFMzk1OiBjb250YWlucyBhcmd1bWVudCBub3QgYWNjZXB0ZWQgaGVyZSIKIG1zZ3N0ciAiRTM5NTogpLOkzr7sveqkx6TPsPq/9GNvbnRhaW5zpM+19rLEpLWk7KTGpKSk3qS7pPMiCiAKLW1zZ2lkICJFMzk2OiBjb250YWluZWRpbiBhcmd1bWVudCBub3QgYWNjZXB0ZWQgaGVyZSIKLW1zZ3N0ciAiRTM5NjogpLOkzr7sveqkx6TPsPq/9GNvbnRhaW5lZGlupM+19rLEpLWk7KTGpKSk3qS7pPMiCittc2dpZCAiRTg0NDogaW52YWxpZCBjY2hhciB2YWx1ZSIKK21zZ3N0ciAiRTg0NDogzLW4+qTKY2NoYXKkzsPNpMekuSIKIAogbXNnaWQgIkUzOTM6IGdyb3VwW3RdaGVyZSBub3QgYWNjZXB0ZWQgaGVyZSIKIG1zZ3N0ciAiRTM5MzogpLOks6THpM+lsKXrobyl16TPtfayxKS1pOyk3qS7pPMiCkBAIC01MzkxLDEyICs1NTU3LDE5IEBACiBtc2dpZCAiRTQzMzogTm8gdGFncyBmaWxlIgogbXNnc3RyICJFNDMzOiClv6WwpdWloaWkpeukrKSipOqk3qS7pPMiCiAKK21zZ2lkICJJZ25vcmluZyBsb25nIGxpbmUgaW4gdGFncyBmaWxlIgorbXNnc3RyICKlv6WwpdWloaWkpevG4qTOxLmkpLnUpPLMtbvrpLek3qS5IgorCiBtc2dpZCAiRTQzNDogQ2FuJ3QgZmluZCB0YWcgcGF0dGVybiIKIG1zZ3N0ciAiRTQzNDogpb+lsKXRpb+hvKXzpPKk36TEpLGk6aTspN6ku6TzIgogCiBtc2dpZCAiRTQzNTogQ291bGRuJ3QgZmluZCB0YWcsIGp1c3QgZ3Vlc3NpbmchIgogbXNnc3RyICJFNDM1OiClv6WwpPKk36TEpLGk6aTspMqkpKTOpMfDsaTLv+TCrKS3pN6kuSEiCiAKKyMsIGMtZm9ybWF0Cittc2dpZCAiRHVwbGljYXRlIGZpZWxkIG5hbWU6ICVzIgorbXNnc3RyICK9xcqjpLekv6XVpaOhvKXrpcnMvjogJXMiCisKIG1zZ2lkICInIG5vdCBrbm93bi4gQXZhaWxhYmxlIGJ1aWx0aW4gdGVybWluYWxzIGFyZToiCiBtc2dzdHIgIicgpM/MpMPOpMekuS4guL251KTOwcik37n+pN/DvMv2pM+8oaTOpMikqqTqpMekuToiCiAKQEAgLTU0MzMsMTAgKzU2MDYsODcgQEAKIG1zZ2lkICJWaW06IEVycm9yIHJlYWRpbmcgaW5wdXQsIGV4aXRpbmcuLi5cbiIKIG1zZ3N0ciAiVmltOiDG/s7PpPLGybn+pN/D5qTOpail6aG8pMuk6KTqvarOu6S3pN6kuS4uLlxuIgogCittc2dpZCAiVXNlZCBDVVRfQlVGRkVSMCBpbnN0ZWFkIG9mIGVtcHR5IHNlbGVjdGlvbiIKK21zZ3N0ciAitvWkzsGqwvLOzrDopM6kq6TvpOqky0NVVF9CVUZGRVIwpKy7yM3RpLWk7KTepLekvyIKKworIy4gVGhpcyBoYXBwZW5zIHdoZW4gdGhlIEZpbGVDaGFuZ2VkUk8gYXV0b2NvbW1hbmQgY2hhbmdlcyB0aGUKKyMuICogZmlsZSBpbiBhIHdheSBpdCBiZWNvbWVzIHNob3J0ZXIuCittc2dpZCAiRTgzNDogTGluZSBjb3VudCBjaGFuZ2VkIHVuZXhwZWN0ZWRseSIKK21zZ3N0ciAiRTgzNDogzb20/KS7pLq51KWrpaal86XIpKzK0aTvpOqk3qS3pL8iCisKICMuIG11c3QgZGlzcGxheSB0aGUgcHJvbXB0CiBtc2dpZCAiTm8gdW5kbyBwb3NzaWJsZTsgY29udGludWUgYW55d2F5IgogbXNnc3RyICKyxMe9pMqloqXzpcmlpaTPpKKk6qTepLuk8zogpMik6qSipKikusKzpLGk3qS5IgogCisjLCBjLWZvcm1hdAorbXNnaWQgIkU4Mjg6IENhbm5vdCBvcGVuIHVuZG8gZmlsZSBmb3Igd3JpdGluZzogJXMiCittc2dzdHIgIkU4Mjg6IL3xuf6k383RpMuloqXzpcmlpaXVpaGlpKXrpPKzq6SxpN6ku6TzOiAlcyIKKworIywgYy1mb3JtYXQKK21zZ2lkICJFODI1OiBDb3JydXB0ZWQgdW5kbyBmaWxlICglcyk6ICVzIgorbXNnc3RyICJFODI1OiCloqXzpcmlpaXVpaGlpKXrpKyy9aTspMakpKTepLkgKCVzKTogJXMiCisKK21zZ2lkICJDYW5ub3Qgd3JpdGUgdW5kbyBmaWxlIGluIGFueSBkaXJlY3RvcnkgaW4gJ3VuZG9kaXInIgorbXNnc3RyICIndW5kb2RpciekzqXHpaOl7KWvpcil6qTLpaKl86XJpaWl1aWhpaSl66TyvfGkrbn+pOGk3qS7pPMiCisKKyMsIGMtZm9ybWF0Cittc2dpZCAiV2lsbCBub3Qgb3ZlcndyaXRlIHdpdGggdW5kbyBmaWxlLCBjYW5ub3QgcmVhZDogJXMiCittc2dzdHIgIqWipfOlyaWlpdWloaWkpeukyKS3pMbGyaTfuf6k4aTKpKSkzqTHvuW98aStpLek3qS7pPM6ICVzIgorCisjLCBjLWZvcm1hdAorbXNnaWQgIldpbGwgbm90IG92ZXJ3cml0ZSwgdGhpcyBpcyBub3QgYW4gdW5kbyBmaWxlOiAlcyIKK21zZ3N0ciAipaKl86XJpaWl1aWhpaSl66THpM+kyqSkpM6kx77lvfGkraS3pN6ku6TzOiAlcyIKKworbXNnaWQgIlNraXBwaW5nIHVuZG8gZmlsZSB3cml0ZSwgbm90aGluZyB0byB1bmRvIgorbXNnc3RyICLC0L7dpKykyqSkpM6kx6WipfOlyaWlpdWloaWkpeukzr3xpK25/qTfpPKluaWtpcOl16S3pN6kuSIKKworIywgYy1mb3JtYXQKK21zZ2lkICJXcml0aW5nIHVuZG8gZmlsZTogJXMiCittc2dzdHIgIqWipfOlyaWlpdWloaWkpeu98aStuf6k38PmOiAlcyIKKworIywgYy1mb3JtYXQKK21zZ2lkICJFODI5OiB3cml0ZSBlcnJvciBpbiB1bmRvIGZpbGU6ICVzIgorbXNnc3RyICJFODI5OiCloqXzpcmlpaXVpaGlpKXrpM698aStuf6k36WopemhvKTHpLk6ICVzIgorCisjLCBjLWZvcm1hdAorbXNnaWQgIk5vdCByZWFkaW5nIHVuZG8gZmlsZSwgb3duZXIgZGlmZmVyczogJXMiCittc2dzdHIgIqWqobylyqG8pKyw26TKpOukzqTHpaKl86XJpaWl1aWhpaSl66Tyxsmk37n+pN+k3qS7pPM6ICVzIgorCisjLCBjLWZvcm1hdAorbXNnaWQgIlJlYWRpbmcgdW5kbyBmaWxlOiAlcyIKK21zZ3N0ciAipaKl86XJpaWl1aWhpaSl68bJuf7D5jogJXMiCisKKyMsIGMtZm9ybWF0Cittc2dpZCAiRTgyMjogQ2Fubm90IG9wZW4gdW5kbyBmaWxlIGZvciByZWFkaW5nOiAlcyIKK21zZ3N0ciAiRTgyMjogpaKl86XJpaWl1aWhpaSl66Tyxsm5/s3RpMikt6TGs6uksaTepLuk8zogJXMiCisKKyMsIGMtZm9ybWF0Cittc2dpZCAiRTgyMzogTm90IGFuIHVuZG8gZmlsZTogJXMiCittc2dzdHIgIkU4MjM6IKWipfOlyaWlpdWloaWkpeukx6TPpKKk6qTepLuk8zogJXMiCisKKyMsIGMtZm9ybWF0Cittc2dpZCAiRTgzMjogTm9uLWVuY3J5cHRlZCBmaWxlIGhhcyBlbmNyeXB0ZWQgdW5kbyBmaWxlOiAlcyIKK21zZ3N0ciAiRTgzMjogyPOwxbnmsr2l1aWhpaSl66SssMW55rK9pLWk7KS/paKl86XJpaWl1aWhpaSl66Tyu8ikw6TGpN6kuTogJXMiCisKKyMsIGMtZm9ybWF0Cittc2dpZCAiRTgyNjogVW5kbyBmaWxlIGRlY3J5cHRpb24gZmFpbGVkOiAlcyIKK21zZ3N0ciAiRTgyNjogsMW55rK9pLWk7KS/paKl86XJpaWl1aWhpaSl66TOsvLGyaTLvLrH1KS3pN6kt6S/OiAlcyIKKworIywgYy1mb3JtYXQKK21zZ2lkICJFODI3OiBVbmRvIGZpbGUgaXMgZW5jcnlwdGVkOiAlcyIKK21zZ3N0ciAiRTgyNzogpaKl86XJpaWl1aWhpaSl66SssMW55rK9pLWk7KTGpKSk3qS5OiAlcyIKKworIywgYy1mb3JtYXQKK21zZ2lkICJFODI0OiBJbmNvbXBhdGlibGUgdW5kbyBmaWxlOiAlcyIKK21zZ3N0ciAiRTgyNDoguN+0ucCtpM7MtaSkpaKl86XJpaWl1aWhpaSl66THpLk6ICVzIgorCittc2dpZCAiRmlsZSBjb250ZW50cyBjaGFuZ2VkLCBjYW5ub3QgdXNlIHVuZG8gaW5mbyIKK21zZ3N0ciAipdWloaWkpeukzsbizcakrMrRpO+kw6TGpKSk66S/pOGhoqWipfOlyaWlvvDK86TyzfjN0aTHpK2k3qS7pPMiCisKKyMsIGMtZm9ybWF0Cittc2dpZCAiRmluaXNoZWQgcmVhZGluZyB1bmRvIGZpbGUgJXMiCittc2dzdHIgIqWipfOlyaWlpdWloaWkpesgJXMgpM686Ln+pPK0sM67IgorCiBtc2dpZCAiQWxyZWFkeSBhdCBvbGRlc3QgY2hhbmdlIgogbXNnc3RyICK0+6TLsOzI1rjFpKTK0bm5pMekuSIKIApAQCAtNTQ0NCw4ICs1Njk0LDggQEAKIG1zZ3N0ciAitPuky7DsyNa/t6S3pKTK0bm5pMekuSIKIAogIywgYy1mb3JtYXQKLW1zZ2lkICJVbmRvIG51bWJlciAlbGQgbm90IGZvdW5kIgotbXNnc3RyICKloqXzpcmlpcjWueYgJWxkIKSspN+kxKSrpOqk3qS7pPMiCittc2dpZCAiRTgzMDogVW5kbyBudW1iZXIgJWxkIG5vdCBmb3VuZCIKK21zZ3N0ciAiRTgzMDogpaKl86XJpaXI1rnmICVsZCCkz6TfpMSkq6TqpN6ku6TzIgogCiBtc2dpZCAiRTQzODogdV91bmRvOiBsaW5lIG51bWJlcnMgd3JvbmciCiBtc2dzdHIgIkU0Mzg6IHVfdW5kbzogudTI1rnmpKy01rDjpMOkxqSkpN6kuSIKQEAgLTU0ODEsOCArNTczMSw4IEBACiBtc2dpZCAiTm90aGluZyB0byB1bmRvIgogbXNnc3RyICKloqXzpcmlpcLQvt2krKSipOqk3qS7pPMiCiAKLW1zZ2lkICJudW1iZXIgY2hhbmdlcyAgdGltZSIKLW1zZ3N0ciAiyNa55iAgIMrRubkgICAgILv+ue8iCittc2dpZCAibnVtYmVyIGNoYW5nZXMgIHdoZW4gICAgICAgICAgICAgICBzYXZlZCIKK21zZ3N0ciAixMzI1iAgIMrRubm/9CAgIMrRubm7/rT8ICAgICAgICAgICDK3cK4utEiCiAKICMsIGMtZm9ybWF0CiBtc2dpZCAiJWxkIHNlY29uZHMgYWdvIgpAQCAtNTUyNyw2ICs1Nzc3LDEzIEBACiAKIG1zZ2lkICIiCiAiXG4iCisiTVMtV2luZG93cyA2NC1iaXQgY29uc29sZSB2ZXJzaW9uIgorbXNnc3RyICIiCisiXG4iCisiTVMtV2luZG93cyA2NCCl06XDpcggpbOl86W9obyl6yDIxyIKKworbXNnaWQgIiIKKyJcbiIKICJNUy1XaW5kb3dzIDMyLWJpdCBjb25zb2xlIHZlcnNpb24iCiBtc2dzdHIgIiIKICJcbiIKQEAgLTU1ODMsMTEgKzU4NDAsMjUgQEAKIAogbXNnaWQgIiIKICJcbiIKKyJPcGVuVk1TIHZlcnNpb24iCittc2dzdHIgIiIKKyJcbiIKKyJPcGVuVk1TIMjHIgorCittc2dpZCAiIgorIlxuIgogIkluY2x1ZGVkIHBhdGNoZXM6ICIKIG1zZ3N0ciAiIgogIlxuIgogIsWszdG60aXRpcOlwTogIgogCittc2dpZCAiIgorIlxuIgorIkV4dHJhIHBhdGNoZXM6ICIKK21zZ3N0ciAiIgorIlxuIgorIsTJssOzyMSlpdGlw6XBOiAiCisKIG1zZ2lkICJNb2RpZmllZCBieSAiCiBtc2dzdHIgIk1vZGlmaWVkIGJ5ICIKIApAQCAtNTY0MiwxNSArNTkxMyw5IEBACiBtc2dpZCAid2l0aCBHVEsyLUdOT01FIEdVSS4iCiBtc2dzdHIgIndpdGggR1RLMi1HTk9NRSBHVUkuIgogCi1tc2dpZCAid2l0aCBHVEstR05PTUUgR1VJLiIKLW1zZ3N0ciAid2l0aCBHVEstR05PTUUgR1VJLiIKLQogbXNnaWQgIndpdGggR1RLMiBHVUkuIgogbXNnc3RyICJ3aXRoIEdUSzIgR1VJLiIKIAotbXNnaWQgIndpdGggR1RLIEdVSS4iCi1tc2dzdHIgIndpdGggR1RLIEdVSS4iCi0KIG1zZ2lkICJ3aXRoIFgxMS1Nb3RpZiBHVUkuIgogbXNnc3RyICJ3aXRoIFgxMS1Nb3RpZiBHVUkuIgogCkBAIC01ODE5LDYgKzYwODQsMTIgQEAKIG1zZ2lkICJFNDQ0OiBDYW5ub3QgY2xvc2UgbGFzdCB3aW5kb3ciCiBtc2dzdHIgIkU0NDQ6ILrHuOWkzqWmpaOl86XJpaak8srEpLik66SzpMikz6THpK2k3qS7pPMiCiAKK21zZ2lkICJFODEzOiBDYW5ub3QgY2xvc2UgYXV0b2NtZCB3aW5kb3ciCittc2dzdHIgIkU4MTM6IGF1dG9jbWSlpqWjpfOlyaWmpM/KxKS4pOmk7KTepLuk8yIKKworbXNnaWQgIkU4MTQ6IENhbm5vdCBjbG9zZSB3aW5kb3csIG9ubHkgYXV0b2NtZCB3aW5kb3cgd291bGQgcmVtYWluIgorbXNnc3RyICJFODE0OiBhdXRvY21kpaalo6XzpcmlpqS3pKu7xKTppMqkpKS/pOGhoqWmpaOl86XJpaakz8rEpLik6aTspN6ku6TzIgorCiBtc2dpZCAiRTQ0NTogT3RoZXIgd2luZG93IGNvbnRhaW5zIGNoYW5nZXMiCiBtc2dzdHIgIkU0NDU6IMK+pM6lpqWjpfOlyaWmpMukz8rRubmkrKSipOqk3qS5IgogCkBAIC01ODI5LDE5ICs2MTAwLDYgQEAKIG1zZ2lkICJFNDQ3OiBDYW4ndCBmaW5kIGZpbGUgXCIlc1wiIGluIHBhdGgiCiBtc2dzdHIgIkU0NDc6IHBhdGiky6TPIFwiJXNcIiCkyKSkpKal1aWhpaSl66SspKKk6qTepLuk8yIKIAotIywgYy1mb3JtYXQKLW1zZ2lkICJFMzcwOiBDb3VsZCBub3QgbG9hZCBsaWJyYXJ5ICVzIgotbXNnc3RyICJFMzcwOiCl6aWkpdal6aXqICVzIKType2hvKXJpMekraTepLuk86THpLekvyIKLQotbXNnaWQgIlNvcnJ5LCB0aGlzIGNvbW1hbmQgaXMgZGlzYWJsZWQ6IHRoZSBQZXJsIGxpYnJhcnkgY291bGQgbm90IGJlIGxvYWRlZC4iCi1tc2dzdHIgIiIKLSKks6TOpbOl3qXzpcmkz8y1uPqkx6S5LCCktKThpPOkyqS1pKQ6IFBlcmyl6aWkpdal6aXqpPKl7aG8pcmkx6StpN6ku6TzpMekt6S/LiIKLQotbXNnaWQgIkUyOTk6IFBlcmwgZXZhbHVhdGlvbiBmb3JiaWRkZW4gaW4gc2FuZGJveCB3aXRob3V0IHRoZSBTYWZlIG1vZHVsZSIKLW1zZ3N0ciAiIgotIkUyOTk6IKW1pfOlyaXcpcOlr6W5pMekzyBTYWZlIKXipbil5aG8peuk8rvIzdGkt6TKpKRQZXJspbmlr6XqpdelyKTPttikuKTppOwiCi0ipMakpKTepLkiCi0KIG1zZ2lkICJFZGl0IHdpdGggJm11bHRpcGxlIFZpbXMiCiBtc2dzdHIgIsqjv/SkzlZpbaTHytS9uKS5pOsgKCZNKSIKIApAQCAtNjIxMCwzICs2NDY4LDQzIEBACiAKIG1zZ2lkICJzZWFyY2ggaGl0IEJPVFRPTSwgY29udGludWluZyBhdCBUT1AiCiBtc2dzdHIgIrK8pN6kx7ihuvekt6S/pM6kx77lpMvM4aTqpN6kuSIKKworIywgYy1mb3JtYXQKK21zZ2lkICJOZWVkIGVuY3J5cHRpb24ga2V5IGZvciBcIiVzXCIiCittc2dzdHIgIrDFuealraG8pKzJrM3XpMekuTogXCIlc1wiIgorCittc2dpZCAid3JpdGVsaW5lcygpIHJlcXVpcmVzIGxpc3Qgb2Ygc3RyaW5ncyIKK21zZ3N0ciAid3JpdGVsaW5lcygpIKTPyri7+s7zpM7H287zpPLN17XhpLek3qS5IgorCittc2dpZCAiRTI2NDogUHl0aG9uOiBFcnJvciBpbml0aWFsaXNpbmcgSS9PIG9iamVjdHMiCittc2dzdHIgIkUyNjQ6IFB5dGhvbjogSS9Ppaql1qW4paelr6XIpM696bT8sr2lqKXpobwiCisKK21zZ2lkICJubyBzdWNoIGJ1ZmZlciIKK21zZ3N0ciAipL2kzqTopKakyqXQpcOl1aWhpM+koqTqpN6ku6TzIgorCittc2dpZCAiYXR0ZW1wdCB0byByZWZlciB0byBkZWxldGVkIHdpbmRvdyIKK21zZ3N0ciAiuu+9/KS1pOykv6WmpaOl86XJpaak8ruyvsikt6TopKakyKS3pN6kt6S/IgorCittc2dpZCAicmVhZG9ubHkgYXR0cmlidXRlIgorbXNnc3RyICLGybn+wOzN0cKwwK0iCisKK21zZ2lkICJjdXJzb3IgcG9zaXRpb24gb3V0c2lkZSBidWZmZXIiCittc2dzdHIgIqWrobylvaXrpKyl0KXDpdWloaTOs7Cky6SipOqk3qS5IgorCisjLCBjLWZvcm1hdAorbXNnaWQgIjx3aW5kb3cgb2JqZWN0IChkZWxldGVkKSBhdCAlcD4iCittc2dzdHIgIjylpqWjpfOlyaWmpaql1qW4paelr6XIICi+w7XuutEpICVwPiIKKworIywgYy1mb3JtYXQKK21zZ2lkICI8d2luZG93IG9iamVjdCAodW5rbm93bikgYXQgJXA+IgorbXNnc3RyICI8paalo6XzpcmlpqWqpdaluKWnpa+lyCAozKTDzikgJXA+IgorCisjLCBjLWZvcm1hdAorbXNnaWQgIjx3aW5kb3cgJWQ+IgorbXNnc3RyICI8paalo6XzpcmlpiAlZD4iCisKK21zZ2lkICJubyBzdWNoIHdpbmRvdyIKK21zZ3N0ciAipL2kzqTopKakyqWmpaOl86XJpaakz6SipOqk3qS7pPMiCisKK21zZ2lkICJhdHRlbXB0IHRvIHJlZmVyIHRvIGRlbGV0ZWQgYnVmZmVyIgorbXNnc3RyICK+w6S1pOykv6XQpcOl1aWhpKy7sr7IpLWk7KTepLekvyIKZGlmZiAtLWdpdCBhL3NyYy9wby9qYS5zamlzLnBvIGIvc3JjL3BvL2phLnNqaXMucG8KaW5kZXggZjgwY2RlNy4uMGJjNjY4OCAxMDA2NDQKLS0tIGEvc3JjL3BvL2phLnNqaXMucG8KKysrIGIvc3JjL3BvL2phLnNqaXMucG8KQEAgLTMsMjEgKzMsNDIgQEAKICMgRG8gIjpoZWxwIHVnYW5kYSIgIGluIFZpbSB0byByZWFkIGNvcHlpbmcgYW5kIHVzYWdlIGNvbmRpdGlvbnMuCiAjIERvICI6aGVscCBjcmVkaXRzIiBpbiBWaW0gdG8gc2VlIGEgbGlzdCBvZiBwZW9wbGUgd2hvIGNvbnRyaWJ1dGVkLgogIwotIyBNVVJBT0tBIFRhcm8gPGtvcm9uLmthb3JpeWFAZ21haWwuY29tPiwgMjAwMS04LgotIyBMYXN0IENoYW5nZTogMzEtTWF5LTIwMDguCisjIE1VUkFPS0EgVGFybyA8a29yb24ua2Fvcml5YUBnbWFpbC5jb20+LCAyMDAxLTExLgorIyBMYXN0IENoYW5nZTogMjMtTWFyLTIwMTEuCiAjCiBtc2dpZCAiIgogbXNnc3RyICIiCi0iUHJvamVjdC1JZC1WZXJzaW9uOiBWaW0gNy4xXG4iCisiUHJvamVjdC1JZC1WZXJzaW9uOiBWaW0gNy4zXG4iCiAiUmVwb3J0LU1zZ2lkLUJ1Z3MtVG86IFxuIgotIlBPVC1DcmVhdGlvbi1EYXRlOiAyMDA4LTA1LTMxIDIyOjAwKzA5MDBcbiIKLSJQTy1SZXZpc2lvbi1EYXRlOiAyMDA4LTA1LTMxIDIyOjMwKzA5MDBcbiIKKyJQT1QtQ3JlYXRpb24tRGF0ZTogMjAxMS0wMy0yMyAyMDo1OCswOTAwXG4iCisiUE8tUmV2aXNpb24tRGF0ZTogMjAxMS0wMy0yMyAyMToyMCswOTAwXG4iCiAiTGFzdC1UcmFuc2xhdG9yOiBNVVJBT0tBIFRhcm8gPGtvcm9uLmthb3JpeWFAZ21haWwuY29tPlxuIgogIkxhbmd1YWdlLVRlYW06IE1VUkFPS0EgVGFybyA8a29yb24ua2Fvcml5YUBnbWFpbC5jb20+XG4iCiAiTUlNRS1WZXJzaW9uOiAxLjBcbiIKICJDb250ZW50LVR5cGU6IHRleHQvcGxhaW47IGNoYXJzZXQ9Y3A5MzJcbiIKICJDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiA4LWJpdFxuIgogCittc2dpZCAiRTgzMTogYmZfa2V5X2luaXQoKSBjYWxsZWQgd2l0aCBlbXB0eSBwYXNzd29yZCIKK21zZ3N0ciAiRTgzMTogYmZfa2V5X2luaXQoKSCCqovzg3CDWIOPgVuDaILFjMSC0Y9vgrOC6oLcgrWCvSIKKworbXNnaWQgIkU4MjA6IHNpemVvZih1aW50MzJfdCkgIT0gNCIKK21zZ3N0ciAiRTgyMDogc2l6ZW9mKHVpbnQzMl90KSAhPSA0IgorCittc2dpZCAiRTgxNzogQmxvd2Zpc2ggYmlnL2xpdHRsZSBlbmRpYW4gdXNlIHdyb25nIgorbXNnc3RyICJFODE3OiBCbG93ZmlzaIjDjYaCzINyg2KDTy+DioNng4uDR4OTg2aDQoNBg5OCqorUiOGCwYLEgqKC3IK3IgorCittc2dpZCAiRTgxODogc2hhMjU2IHRlc3QgZmFpbGVkIgorbXNnc3RyICJFODE4OiBzaGEyNTaCzINlg1iDZ4LJjriUc4K1gtyCtYK9IgorCittc2dpZCAiRTgxOTogQmxvd2Zpc2ggdGVzdCBmYWlsZWQiCittc2dzdHIgIkU4MTk6IEJsb3dmaXNoiMONhoLMg2WDWINngsmOuJRzgrWC3IK1gr0iCisKK21zZ2lkICJbTG9jYXRpb24gTGlzdF0iCittc2dzdHIgIluP6o+Kg4qDWINnXSIKKworbXNnaWQgIltRdWlja2ZpeCBMaXN0XSIKK21zZ3N0ciAiW1F1aWNrZml4g4qDWINnXSIKKwogbXNnaWQgIkU4MjogQ2Fubm90IGFsbG9jYXRlIGFueSBidWZmZXIsIGV4aXRpbmcuLi4iCiBtc2dzdHIgIkU4Mjogg2+DYoN0g0CC8DGCwoLgjeyQrILFgquCyIKigsyCxSwgj0mXuYK1gtyCty4uLiIKIApAQCAtMTQ5LDcgKzE3MCw2IEBACiBtc2dpZCAiVG9wIgogbXNnc3RyICKQ5pOqIgogCi0jLCBjLWZvcm1hdAogbXNnaWQgIiIKICJcbiIKICIjIEJ1ZmZlciBsaXN0OlxuIgpAQCAtMTU3LDExICsxNzcsOCBAQAogIlxuIgogIiMgg2+DYoN0g0CDioNYg2c6XG4iCiAKLW1zZ2lkICJbTG9jYXRpb24gTGlzdF0iCi1tc2dzdHIgIluP6o+Kg4qDWINnXSIKLQotbXNnaWQgIltRdWlja2ZpeCBMaXN0XSIKLW1zZ3N0ciAiW1F1aWNrZml4g4qDWINnXSIKK21zZ2lkICJbU2NyYXRjaF0iCittc2dzdHIgIluJuo+RgqtdIgogCiBtc2dpZCAiIgogIlxuIgpAQCAtMTgyLDEyICsxOTksMTggQEAKIG1zZ2lkICJFOTY6IENhbiBub3QgZGlmZiBtb3JlIHRoYW4gJWxkIGJ1ZmZlcnMiCiBtc2dzdHIgIkU5NjogJWxkIIjIj+OCzINvg2KDdINAgs1kaWZmgsWCq4LcgrmC8SIKIAorbXNnaWQgIkU4MTA6IENhbm5vdCByZWFkIG9yIHdyaXRlIHRlbXAgZmlsZXMiCittc2dzdHIgIkU4MTA6IIjqjp6DdINAg0ODi4LMk8eNnoLggrWCrYLNj5GNnoKqgsWCq4LcgrmC8SIKKwogbXNnaWQgIkU5NzogQ2Fubm90IGNyZWF0ZSBkaWZmcyIKIG1zZ3N0ciAiRTk3OiCNt5WqgvCN7JCsgsWCq4LcgrmC8SAiCiAKIG1zZ2lkICJQYXRjaCBmaWxlIgogbXNnc3RyICKDcINig2CDdINAg0ODiyIKIAorbXNnaWQgIkU4MTY6IENhbm5vdCByZWFkIHBhdGNoIG91dHB1dCIKK21zZ3N0ciAiRTgxNjogcGF0Y2iCzI9vl82C8JPHjZ6C34LcgrmC8SIKKwogbXNnaWQgIkU5ODogQ2Fubm90IHJlYWQgZGlmZiBvdXRwdXQiCiBtc2dzdHIgIkU5ODogZGlmZoLMj2+XzYLwk8eNnoLfgtyCuYLxIgogCkBAIC0yNzMsNiArMjk2LDEyIEBACiBtc2dpZCAiSGl0IGVuZCBvZiBwYXJhZ3JhcGgiCiBtc2dzdHIgIpJpl46CzI3FjOOCyYNxg2KDZyIKIAorbXNnaWQgIkU4Mzk6IENvbXBsZXRpb24gZnVuY3Rpb24gY2hhbmdlZCB3aW5kb3ciCittc2dzdHIgIkU4Mzk6IJXiitSK1pCUgqqDRYNCg5ODaINFgvCVz41YgrWC3IK1gr0iCisKK21zZ2lkICJFODQwOiBDb21wbGV0aW9uIGZ1bmN0aW9uIGRlbGV0ZWQgdGV4dCIKK21zZ3N0ciAiRTg0MDogleKKrorWkJSCqoNlg0yDWINngvCN7Y+cgrWC3IK1gr0iCisKIG1zZ2lkICInZGljdGlvbmFyeScgb3B0aW9uIGlzIGVtcHR5IgogbXNnc3RyICInZGljdGlvbmFyeScgg0mDdoNWg4eDk4Kqi/OCxYK3IgogCkBAIC0yOTMsNyArMzIyLDYgQEAKIG1zZ2lkICJTY2FubmluZzogJXMiCiBtc2dzdHIgIoNYg0yDg4OTkoY6ICVzIgogCi0jLCBjLWZvcm1hdAogbXNnaWQgIlNjYW5uaW5nIHRhZ3MuIgogbXNnc3RyICKDXoNPgvCDWINMg4ODk5KGLiIKIApAQCAtNDUyLDYgKzQ4MCw5IEBACiBtc2dpZCAiRTY5NDogSW52YWxpZCBvcGVyYXRpb24gZm9yIEZ1bmNyZWZzIgogbXNnc3RyICJFNjk0OiCK1pCUjlGPxoxegsmCzZazjPiCyJGAjeyCxYK3IgogCittc2dpZCAiRTgwNDogQ2Fubm90IHVzZSAnJScgd2l0aCBGbG9hdCIKK21zZ3N0ciAiRTgwNDogJyUnIILwlYKTro+skJSTX5CUgsaRZ4LdjYeC7YK5gsSCzY5ngqaC3IK5gvEiCisKIG1zZ2lkICJFMTEwOiBNaXNzaW5nICcpJyIKIG1zZ3N0ciAiRTExMDogJyknIIKqgt2CwoKpguiC3IK5gvEiCiAKQEAgLTUwMiw2ICs1MzMsMTQgQEAKIG1zZ3N0ciAiRTcyNDoglVxcjqaCt4LpgsmCzZXPkJSCzJP8guqOcYKqkFuJ34KsgtyCtyIKIAogIywgYy1mb3JtYXQKK21zZ2lkICJFNzQwOiBUb28gbWFueSBhcmd1bWVudHMgZm9yIGZ1bmN0aW9uICVzIgorbXNnc3RyICJFNzQwOiCK1pCUgsyI+JCUgqqRvYnfgqyC3IK3OiAlcyIKKworIywgYy1mb3JtYXQKK21zZ2lkICJFMTE2OiBJbnZhbGlkIGFyZ3VtZW50cyBmb3IgZnVuY3Rpb24gJXMiCittc2dzdHIgIkUxMTY6IIrWkJSCzJazjPiCyIj4kJSCxYK3OiAlcyIKKworIywgYy1mb3JtYXQKIG1zZ2lkICJFMTE3OiBVbmtub3duIGZ1bmN0aW9uOiAlcyIKIG1zZ3N0ciAiRTExNzoglqKSbYLMitaQlILFgrc6ICVzIgogCkBAIC01MTcsNiArNTU2LDkgQEAKIG1zZ2lkICJFNzI1OiBDYWxsaW5nIGRpY3QgZnVuY3Rpb24gd2l0aG91dCBEaWN0aW9uYXJ5OiAlcyIKIG1zZ3N0ciAiRTcyNTogjquPkZdwitaQlIKqjMSCzoLqgtyCtYK9gqqOq4+RgqqCoILogtyCuYLxOiAlcyIKIAorbXNnaWQgIkU4MDg6IE51bWJlciBvciBGbG9hdCByZXF1aXJlZCIKK21zZ3N0ciAiRTgwODogkJSSbIKplYKTro+skJSTX5CUgqqVS5d2gsWCtyIKKwogbXNnaWQgIkU2OTk6IFRvbyBtYW55IGFyZ3VtZW50cyIKIG1zZ3N0ciAiRTY5OToggqqRvYnfgqyC3IK3IgogCkBAIC01MzMsNyArNTc1LDcgQEAKIAogIywgYy1mb3JtYXQKIG1zZ2lkICJFNzM3OiBLZXkgYWxyZWFkeSBleGlzdHM6ICVzIgotbXNnc3RyICJFNzM3OiAlcyCCxoKigqSDTIFbgs2K+YLJkbaN3YK1gtyCtyIKK21zZ3N0ciAiRTczNzogg0yBW4LNivmCyZG2jd2CtYLcgrc6ICVzIgogCiAjLCBjLWZvcm1hdAogbXNnaWQgIistJXMlM2xkIGxpbmVzOiAiCkBAIC01OTQsNiArNjM2LDkgQEAKIG1zZ2lkICJFNjc3OiBFcnJvciB3cml0aW5nIHRlbXAgZmlsZSIKIG1zZ3N0ciAiRTY3NzogiOqOnoN0g0CDQ4OLj5GNnpKGgsmDR4OJgVuCqpStkLaCtYLcgrWCvSIKIAorbXNnaWQgIkU4MDU6IFVzaW5nIGEgRmxvYXQgYXMgYSBOdW1iZXIiCittc2dzdHIgIkU4MDU6IJWCk66PrJCUk1+QlILwkJSSbILGgrWCxIi1gsGCxIKigtyCtyIKKwogbXNnaWQgIkU3MDM6IFVzaW5nIGEgRnVuY3JlZiBhcyBhIE51bWJlciIKIG1zZ3N0ciAiRTcwMzogitaQlI5Rj8aMXoLwkJSSbILGgrWCxIi1gsGCxIKigtyCt4FCIgogCkBAIC02MTIsNiArNjU3LDkgQEAKIG1zZ2lkICJFNzMxOiB1c2luZyBEaWN0aW9uYXJ5IGFzIGEgU3RyaW5nIgogbXNnc3RyICJFNzMxOiCVz5CUjF6C8JW2jpqX8YLGgrWCxIi1gsGCxIKigtyCtyIKIAorbXNnaWQgIkU4MDY6IHVzaW5nIEZsb2F0IGFzIGEgU3RyaW5nIgorbXNnc3RyICJFODA2OiCVgpOuj6yQlJNfkJSC8JW2jpqX8YLGgrWCxIi1gsGCxIKigtyCtyIKKwogIywgYy1mb3JtYXQKIG1zZ2lkICJFNzA0OiBGdW5jcmVmIHZhcmlhYmxlIG5hbWUgbXVzdCBzdGFydCB3aXRoIGEgY2FwaXRhbDogJXMiCiBtc2dzdHIgIkU3MDQ6IIrWkJSOUY/GjF6Vz5CUlryCzZHllbaOmoLFjm6C3ILngsiCr4Lqgs6CyILogtyCuYLxOiAlcyIKQEAgLTY0Myw2ICs2OTEsMTAgQEAKIG1zZ3N0ciAiRTY5ODogg1KDc4FbgvCO5oLpgsmCzZXPkJSCzJP8guqOcYKqkFuJ34KsgtyCtyIKIAogIywgYy1mb3JtYXQKK21zZ2lkICJFMTIzOiBVbmRlZmluZWQgZnVuY3Rpb246ICVzIgorbXNnc3RyICJFMTIzOiCWopLoi2CCzIrWkJSCxYK3OiAlcyIKKworIywgYy1mb3JtYXQKIG1zZ2lkICJFMTI0OiBNaXNzaW5nICcoJzogJXMiCiBtc2dzdHIgIkUxMjQ6ICcoJyCCqoKgguiC3IK5gvE6ICVzIgogCkBAIC02NTQsNiArNzA2LDE0IEBACiBtc2dzdHIgIkUxMjY6IDplbmRmdW5jdGlvbiCCqoKgguiC3IK5gvEiCiAKICMsIGMtZm9ybWF0Cittc2dpZCAiRTcwNzogRnVuY3Rpb24gbmFtZSBjb25mbGljdHMgd2l0aCB2YXJpYWJsZTogJXMiCittc2dzdHIgIkU3MDc6IIrWkJSWvIKqlc+QlJa8gsaP1ZPLgrWC3IK3OiAlcyIKKworIywgYy1mb3JtYXQKK21zZ2lkICJFMTI3OiBDYW5ub3QgcmVkZWZpbmUgZnVuY3Rpb24gJXM6IEl0IGlzIGluIHVzZSIKK21zZ3N0ciAiRTEyNzogitaQlCAlcyCC8I3EkuiLYILFgquC3IK5gvE6II5nl3CShoLFgrciCisKKyMsIGMtZm9ybWF0CiBtc2dpZCAiRTc0NjogRnVuY3Rpb24gbmFtZSBkb2VzIG5vdCBtYXRjaCBzY3JpcHQgZmlsZSBuYW1lOiAlcyIKIG1zZ3N0ciAiRTc0NjogitaQlJa8gqqDWINOg4qDdoNngsyDdINAg0ODi5a8gsaI6pJ2grWC3IK5gvE6ICVzIgogCkBAIC02OTQsNyArNzU0LDYgQEAKIG1zZ2lkICJFMTMzOiA6cmV0dXJuIG5vdCBpbnNpZGUgYSBmdW5jdGlvbiIKIG1zZ3N0ciAiRTEzMzogitaQlIpPgskgOnJldHVybiCCqoKgguiC3IK1gr0iCiAKLSMsIGMtZm9ybWF0CiBtc2dpZCAiIgogIlxuIgogIiMgZ2xvYmFsIHZhcmlhYmxlczpcbiIKQEAgLTcwOSw2ICs3NjgsOSBAQAogIlxuIgogIlx0TGFzdCBzZXQgZnJvbSAiCiAKK21zZ2lkICJObyBvbGQgZmlsZXMiCittc2dzdHIgIozDgqKDdINAg0ODi4LNgqCC6ILcgrmC8SIKKwogIywgYy1mb3JtYXQKIG1zZ2lkICI8JXM+JXMlcyAgJWQsICBIZXggJTAyeCwgIE9jdGFsICUwM28iCiBtc2dzdHIgIjwlcz4lcyVzICAlZCwgIDE2kGmQlCAlMDJ4LCAgOJBpkJQgJTAzbyIKQEAgLTc1OCw2ICs4MjAsOSBAQAogbXNnaWQgIiBtYXJrcyIKIG1zZ3N0ciAiIIN9gVuDTiIKIAorbXNnaWQgIiBvbGRmaWxlcyIKK21zZ3N0ciAiIIuMg3SDQINDg4uMUSIKKwogbXNnaWQgIiBGQUlMRUQiCiBtc2dzdHIgIiCOuJRzIgogCkBAIC03NzksNyArODQ0LDYgQEAKIG1zZ2lkICIjIFRoaXMgdmltaW5mbyBmaWxlIHdhcyBnZW5lcmF0ZWQgYnkgVmltICVzLlxuIgogbXNnc3RyICIjIIKxgswgdmltaW5mbyCDdINAg0ODi4LNIFZpbSAlcyCCyYLmgsGCxJC2kKyCs4LqgtyCtYK9LlxuIgogCi0jLCBjLWZvcm1hdAogbXNnaWQgIiIKICIjIFlvdSBtYXkgZWRpdCBpdCBpZiB5b3UncmUgY2FyZWZ1bCFcbiIKICJcbiIKQEAgLTc4Nyw3ICs4NTEsNiBAQAogIiMglc+NWIK3gumN24LJgs2PXFyVqpKNiNOCtYLEgq2CvoKzgqIhXG4iCiAiXG4iCiAKLSMsIGMtZm9ybWF0CiBtc2dpZCAiIyBWYWx1ZSBvZiAnZW5jb2RpbmcnIHdoZW4gdGhpcyBmaWxlIHdhcyB3cml0dGVuXG4iCiBtc2dzdHIgIiMggrGCzIN0g0CDQ4OLgqqPkYKpguqCvY6egswgJ2VuY29kaW5nJyCCzJJsXG4iCiAKQEAgLTg5OCw3ICs5NjEsNiBAQAogbXNnaWQgIlBhdHRlcm4gZm91bmQgaW4gZXZlcnkgbGluZTogJXMiCiBtc2dzdHIgIoNwg16BW4OTgqqRU4LEgsyNc4LFgt2CwoKpguiC3IK1gr06ICVzIgogCi0jLCBjLWZvcm1hdAogbXNnaWQgIiIKICJcbiIKICIjIExhc3QgU3Vic3RpdHV0ZSBTdHJpbmc6XG4iCkBAIC0xMDA5LDggKzEwNzEsOCBAQAogbXNnaWQgIiUzZCAgJXMgJXMgIGxpbmUgJWxkIgogbXNnc3RyICIlM2QgICVzICVzICCNcyAlbGQiCiAKLW1zZ2lkICJFNzUwOiBGaXJzdCB1c2UgOnByb2ZpbGUgc3RhcnQgPGZuYW1lPiIKLW1zZ3N0ciAiRTc1MDogj4mC34LJIDpwcm9maWxlIHN0YXJ0IDxmbmFtZT4ggvCOwI1zgrWCxIKtgr6Cs4KiIgorbXNnaWQgIkU3NTA6IEZpcnN0IHVzZSBcIjpwcm9maWxlIHN0YXJ0IHtmbmFtZX1cIiIKK21zZ3N0ciAiRTc1MDogj4mC34LJIFwiOnByb2ZpbGUgc3RhcnQge2ZuYW1lfVwiIILwjsCNc4K1gsSCrYK+grOCoiIKIAogIywgYy1mb3JtYXQKIG1zZ2lkICJTYXZlIGNoYW5nZXMgdG8gXCIlc1wiPyIKQEAgLTEyMDIsNiArMTI2NCw5IEBACiBtc2dpZCAiRTE4MzogVXNlciBkZWZpbmVkIGNvbW1hbmRzIG11c3Qgc3RhcnQgd2l0aCBhbiB1cHBlcmNhc2UgbGV0dGVyIgogbXNnc3RyICJFMTgzOiCDhoFbg1WS6Itgg1KDfYOTg2iCzYlwkeWVto6agsWOboLcgueCyIKvguqCzoLIguiC3IK5gvEiCiAKK21zZ2lkICJFODQxOiBSZXNlcnZlZCBuYW1lLCBjYW5ub3QgYmUgdXNlZCBmb3IgdXNlciBkZWZpbmVkIGNvbW1hbmQiCittc2dzdHIgIkU4NDE6IJdcXJbxlryCyILMgsUsIIOGgVuDVZLoi2CDUoN9g5ODaILJl5iXcILFgquC3IK5gvEiCisKICMsIGMtZm9ybWF0CiBtc2dpZCAiRTE4NDogTm8gc3VjaCB1c2VyLWRlZmluZWQgY29tbWFuZDogJXMiCiBtc2dzdHIgIkUxODQ6IIK7gsyDhoFbg1WS6Itgg1KDfYOTg2iCzYKgguiC3IK5gvE6ICVzIgpAQCAtMTIxNiw2ICsxMjgxLDkgQEAKIG1zZ2lkICJFNDY3OiBDdXN0b20gY29tcGxldGlvbiByZXF1aXJlcyBhIGZ1bmN0aW9uIGFyZ3VtZW50IgogbXNnc3RyICJFNDY3OiCDSoNYg16DgJXiiq6CyYLNiPiQlILGgrWCxIrWkJSCqpVLl3aCxYK3IgogCittc2dpZCAidW5rbm93biIKK21zZ3N0ciAilXOWviIKKwogIywgYy1mb3JtYXQKIG1zZ2lkICJFMTg1OiBDYW5ub3QgZmluZCBjb2xvciBzY2hlbWUgJXMiCiBtc2dzdHIgIkUxODU6IINKg4mBW4NYg0yBW4OAICVzIIKqgt2CwoKpguiC3IK5gvEiCkBAIC0xMjk4LDYgKzEzNjYsOSBAQAogbXNnaWQgIkUxOTI6IFJlY3Vyc2l2ZSB1c2Ugb2YgOm5vcm1hbCB0b28gZGVlcCIKIG1zZ3N0ciAiRTE5MjogOm5vcm1hbCCCzI3Ei0GXmJdwgqqQW4KtgsiC6InfgqyC3IK1gr0iCiAKK21zZ2lkICJFODA5OiAjPCBpcyBub3QgYXZhaWxhYmxlIHdpdGhvdXQgdGhlICtldmFsIGZlYXR1cmUiCittc2dzdHIgIkU4MDk6ICM8IILNICtldmFsIItAlFxcgqqWs4KigsaXmJdwgsWCq4LcgrmC8SIKKwogbXNnaWQgIkUxOTQ6IE5vIGFsdGVybmF0ZSBmaWxlIG5hbWUgdG8gc3Vic3RpdHV0ZSBmb3IgJyMnIgogbXNnc3RyICJFMTk0OiAnIyeC8JJ1gquKt4KmgumVm4N0g0CDQ4OLgsyWvJFPgqqCoILogtyCuYLxIgogCkBAIC0xMzEzLDYgKzEzODQsOSBAQAogbXNnaWQgIkU0OTg6IG5vIDpzb3VyY2UgZmlsZSBuYW1lIHRvIHN1YnN0aXR1dGUgZm9yIFwiPHNmaWxlPlwiIgogbXNnc3RyICJFNDk4OiBcIjxzZmlsZT5cIoLwknWCq4q3gqaC6SA6c291cmNlIJHOj9uDdINAg0ODi5a8gqqCoILogtyCuYLxIgogCittc2dpZCAiRTg0Mjogbm8gbGluZSBudW1iZXIgdG8gdXNlIGZvciBcIjxzbG51bT5cIiIKK21zZ3N0ciAiRTg0MjogXCI8c2xudW0+XCKC8JJ1gquKt4KmgumNc5TUjYaCqoKgguiC3IK5gvEiCisKICMsIG5vLWMtZm9ybWF0CiBtc2dpZCAiRTQ5OTogRW1wdHkgZmlsZSBuYW1lIGZvciAnJScgb3IgJyMnLCBvbmx5IHdvcmtzIHdpdGggXCI6cDpoXCIiCiBtc2dzdHIgIiIKQEAgLTE0MzcsNiArMTUxMSw5IEBACiBtc2dpZCAiRTc4ODogTm90IGFsbG93ZWQgdG8gZWRpdCBhbm90aGVyIGJ1ZmZlciBub3ciCiBtc2dzdHIgIkU3ODg6IIy7jd2CzZG8gsyDb4Nig3SDQILwldKPV4K3gumCsYLGgs2LloKzguqC3IK5gvEiCiAKK21zZ2lkICJFODExOiBOb3QgYWxsb3dlZCB0byBjaGFuZ2UgYnVmZmVyIGluZm9ybWF0aW9uIG5vdyIKK21zZ3N0ciAiRTgxMTogjLuN3YLNg2+DYoN0g0CP7pXxgvCVz41YgreC6YKxgsaCzYuWgrOC6oLcgrmC8SIKKwogbXNnaWQgInRhZ25hbWUiCiBtc2dzdHIgIoNeg0+WvCIKIApAQCAtMTQ3Miw2ICsxNTQ5LDkgQEAKIG1zZ2lkICJFMTk5OiBBY3RpdmUgd2luZG93IG9yIGJ1ZmZlciBkZWxldGVkIgogbXNnc3RyICJFMTk5OiCDQYNOg2WDQoN1gsiDRYNCg5ODaINFgqmDb4Nig3SDQIKqje2PnIKzguqC3IK1gr0iCiAKK21zZ2lkICJFODEyOiBBdXRvY29tbWFuZHMgY2hhbmdlZCBidWZmZXIgb3IgYnVmZmVyIG5hbWUiCittc2dzdHIgIkU4MTI6IGF1dG9jb21tYW5kgqqDb4Nig3SDQIKpg2+DYoN0g0CWvILwlc+NWIK1gtyCtYK9IgorCiBtc2dpZCAiSWxsZWdhbCBmaWxlIG5hbWUiCiBtc2dzdHIgIpVzkLOCyIN0g0CDQ4OLlrwiCiAKQEAgLTE1MzAsOSArMTYxMCw2IEBACiBtc2dpZCAiW0NSIG1pc3NpbmddIgogbXNnc3RyICJbQ1KWs10iCiAKLW1zZ2lkICJbTkwgZm91bmRdIgotbXNnc3RyICJbTkyXTF0iCi0KIG1zZ2lkICJbbG9uZyBsaW5lcyBzcGxpdF0iCiBtc2dzdHIgIluSt41zlaqKhF0iCiAKQEAgLTE1NDIsNiArMTYxOSw5IEBACiBtc2dpZCAiW2NvbnZlcnRlZF0iCiBtc2dzdHIgIluVz4q3jc9dIgogCittc2dpZCAiW2Jsb3dmaXNoXSIKK21zZ3N0ciAiW2Jsb3dmaXNoiMONhom7XSIKKwogbXNnaWQgIltjcnlwdGVkXSIKIG1zZ3N0ciAiW4jDjYaJu10iCiAKQEAgLTE1NjUsNiArMTY0NSw5IEBACiBtc2dpZCAiY2FuJ3QgcmVhZCBvdXRwdXQgb2YgJ2NoYXJjb252ZXJ0JyIKIG1zZ3N0ciAiJ2NoYXJjb252ZXJ0JyCCzI9vl82C8JPHjZ6C34LcgrmC8YLFgrWCvSIKIAorbXNnaWQgIkU4MjE6IEZpbGUgaXMgZW5jcnlwdGVkIHdpdGggdW5rbm93biBtZXRob2QiCittc2dzdHIgIkU4MjE6IIN0g0CDQ4OLgqqWopJtgsyV+5ZAgsWIw42GibuCs4LqgsSCooLcgrciCisKIG1zZ2lkICJFNjc2OiBObyBtYXRjaGluZyBhdXRvY29tbWFuZHMgZm9yIGFjd3JpdGUgYnVmZmVyIgogbXNnc3RyICJFNjc2OiBhY3dyaXRlg2+DYoN0g0CCzIpZk5aCt4LpYXV0b2NvbW1hbmSCzZG2jd2CtYLcgrmC8SIKIApAQCAtMTYzMCwxMiArMTcxMywyNCBAQAogbXNnaWQgIkU1MTM6IHdyaXRlIGVycm9yLCBjb252ZXJzaW9uIGZhaWxlZCAobWFrZSAnZmVuYycgZW1wdHkgdG8gb3ZlcnJpZGUpIgogbXNnc3RyICJFNTEzOiCPkY2egt2DR4OJgVssIJXPireOuJRzICiP44+RgreC6YLJgs0gJ2ZlbmMnIILwi/OCyYK1gsSCrYK+grOCoikiCiAKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIkU1MTM6IHdyaXRlIGVycm9yLCBjb252ZXJzaW9uIGZhaWxlZCBpbiBsaW5lICVsZCAobWFrZSAnZmVuYycgZW1wdHkgdG8gIgorIm92ZXJyaWRlKSIKK21zZ3N0ciAiIgorIkU1MTM6II+RjZ6C3YNHg4mBWywglc+Kt464lHMsII1zkJQgJWxkICiP44+RgreC6YLJgs0gJ2ZlbmMnIILwi/OCyYK1gsSCrYK+grMiCisigqIpIgorCiBtc2dpZCAiRTUxNDogd3JpdGUgZXJyb3IgKGZpbGUgc3lzdGVtIGZ1bGw/KSIKIG1zZ3N0ciAiRTUxNDogj5GNnoLdg0eDiYFbLCAog3SDQINDg4uDVoNYg2WDgIKqlp6UdD8pIgogCiBtc2dpZCAiIENPTlZFUlNJT04gRVJST1IiCiBtc2dzdHIgIiCVz4q3g0eDiYFbIgogCisjLCBjLWZvcm1hdAorbXNnaWQgIiBpbiBsaW5lICVsZDsiCittc2dzdHIgIo1zICVsZDsiCisKIG1zZ2lkICJbRGV2aWNlXSIKIG1zZ3N0ciAiW4Nmg2+DQ4NYXSIKIApAQCAtMTcwMiw2ICsxNzk3LDExIEBACiBtc2dzdHIgIjEglbaOmiIKIAogIywgYy1mb3JtYXQKK21zZ2lkICIlbGxkIGNoYXJhY3RlcnMiCittc2dzdHIgIiVsbGQglbaOmiIKKworIy4gRXhwbGljaXQgdHlwZWNhc3QgYXZvaWRzIHdhcm5pbmcgb24gTWFjIE9TIFggMTAuNgorIywgYy1mb3JtYXQKIG1zZ2lkICIlbGQgY2hhcmFjdGVycyIKIG1zZ3N0ciAiJWxkIJW2jpoiCiAKQEAgLTE5NDUsOSArMjA0NSw2IEBACiBtc2dpZCAiRTIzMjogQ2Fubm90IGNyZWF0ZSBCYWxsb29uRXZhbCB3aXRoIGJvdGggbWVzc2FnZSBhbmQgY2FsbGJhY2siCiBtc2dzdHIgIkUyMzI6IIOBg2KDWoFbg1eCxoNSgVuDi4Nvg2KDToLMgqCC6SBCYWxsb29uRXZhbCCC8I3skKyCxYKrgtyCuYLxIgogCi1tc2dpZCAiVmltIGRpYWxvZy4uLiIKLW1zZ3N0ciAiVmltIINfg0ODQYONg08uLi4iCi0KIG1zZ2lkICIiCiAiJlllc1xuIgogIiZOb1xuIgpAQCAtMTk5MCwxMiArMjA4NywxNSBAQAogbXNnaWQgIkRvd24iCiBtc2dzdHIgIom6IgogCisjLiAnRmluZCBOZXh0JyBidXR0b24KIG1zZ2lkICJGaW5kIE5leHQiCiBtc2dzdHIgIo6fgvCMn431IgogCisjLiAnUmVwbGFjZScgYnV0dG9uCiBtc2dpZCAiUmVwbGFjZSIKIG1zZ3N0ciAiknWKtyIKIAorIy4gJ1JlcGxhY2UgQWxsJyBidXR0b24KIG1zZ2lkICJSZXBsYWNlIEFsbCIKIG1zZ3N0ciAikVOCxJJ1irciCiAKQEAgLTIwMTQsMTIgKzIxMTQsNiBAQAogbXNnaWQgIlZpbTogTWFpbiB3aW5kb3cgdW5leHBlY3RlZGx5IGRlc3Ryb3llZFxuIgogbXNnc3RyICJWaW06IIOBg0ODk4NFg0KDk4Nog0WCqpVziNOCyZRqifOCs4LqgtyCtYK9XG4iCiAKLW1zZ2lkICJGb250IFNlbGVjdGlvbiIKLW1zZ3N0ciAig3SDSIOTg2eRSZHwIgotCi1tc2dpZCAiVXNlZCBDVVRfQlVGRkVSMCBpbnN0ZWFkIG9mIGVtcHR5IHNlbGVjdGlvbiIKLW1zZ3N0ciAii/OCzJFJkfCXzIjmgsyCqYLtguiCyUNVVF9CVUZGRVIwgqqOZ5dwgrOC6oLcgrWCvSIKLQogbXNnaWQgIiZGaWx0ZXIiCiBtc2dzdHIgIoN0g0KDi4NeKCZGKSIKIApAQCAtMjM0OCwxOSArMjQ0Miw0MCBAQAogbXNnc3RyICJFNTY3OiBjc2NvcGWQ2pGxgsmOuJRzgrWC3IK1gr0iCiAKICMsIGMtZm9ybWF0Ci1tc2dpZCAiRTI1OTogbm8gbWF0Y2hlcyBmb3VuZCBmb3IgY3Njb3BlIHF1ZXJ5ICVzIG9mICVzIgotbXNnc3RyICJFMjU5OiBjc2NvcGWDToNHg4qBWyAlcyBvZiAlcyCCyYpZk5aCqoKgguiC3IK5gvGCxYK1gr0iCi0KLSMsIGMtZm9ybWF0CiBtc2dpZCAiRTQ2OTogaW52YWxpZCBjc2NvcGVxdWlja2ZpeCBmbGFnICVjIGZvciAlYyIKIG1zZ3N0ciAiRTQ2OToglrOM+ILIIGNzY29wZXF1aWNrZml4IIN0g4mDTyAlYyCCzCAlYyCCxYK3IgogCisjLCBjLWZvcm1hdAorbXNnaWQgIkUyNTk6IG5vIG1hdGNoZXMgZm91bmQgZm9yIGNzY29wZSBxdWVyeSAlcyBvZiAlcyIKK21zZ3N0ciAiRTI1OTogY3Njb3Blg06DR4OKgVsgJXMgb2YgJXMggsmKWZOWgqqCoILogtyCuYLxgsWCtYK9IgorCiBtc2dpZCAiY3Njb3BlIGNvbW1hbmRzOlxuIgogbXNnc3RyICJjc2NvcGWDUoN9g5ODaDpcbiIKIAogIywgYy1mb3JtYXQKLW1zZ2lkICIlLTVzOiAlLTMwcyAoVXNhZ2U6ICVzKSIKLW1zZ3N0ciAiJS01czogJS0zMHMgKI5nl3CWQDogJXMpIgorbXNnaWQgIiUtNXM6ICVzJSpzIChVc2FnZTogJXMpIgorbXNnc3RyICIlLTVzOiAlcyUqcyAojmeXcJZAOiAlcykiCisKK21zZ2lkICIiCisiXG4iCisiICAgICAgIGM6IEZpbmQgZnVuY3Rpb25zIGNhbGxpbmcgdGhpcyBmdW5jdGlvblxuIgorIiAgICAgICBkOiBGaW5kIGZ1bmN0aW9ucyBjYWxsZWQgYnkgdGhpcyBmdW5jdGlvblxuIgorIiAgICAgICBlOiBGaW5kIHRoaXMgZWdyZXAgcGF0dGVyblxuIgorIiAgICAgICBmOiBGaW5kIHRoaXMgZmlsZVxuIgorIiAgICAgICBnOiBGaW5kIHRoaXMgZGVmaW5pdGlvblxuIgorIiAgICAgICBpOiBGaW5kIGZpbGVzICNpbmNsdWRpbmcgdGhpcyBmaWxlXG4iCisiICAgICAgIHM6IEZpbmQgdGhpcyBDIHN5bWJvbFxuIgorIiAgICAgICB0OiBGaW5kIHRoaXMgdGV4dCBzdHJpbmdcbiIKK21zZ3N0ciAiIgorIlxuIgorIiAgICAgICBjOiCCsYLMitaQlILwjMSC8YLFgqKC6YrWkJSC8JJUgrdcbiIKKyIgICAgICAgZDoggrGCzIrWkJSCqYLnjMSC8YLFgqKC6YrWkJSC8JJUgrdcbiIKKyIgICAgICAgZToggrGCzGVncmVwg3CDXoFbg5OC8JJUgrdcbiIKKyIgICAgICAgZjoggrGCzIN0g0CDQ4OLgvCSVIK3XG4iCisiICAgICAgIGc6IIKxgsyS6ItggvCSVIK3XG4iCisiICAgICAgIGk6IIKxgsyDdINAg0ODi4LwI2luY2x1ZGWCtYLEgqKC6YN0g0CDQ4OLgvCSVIK3XG4iCisiICAgICAgIHM6IIKxgsxDg1aDk4N7g4uC8JJUgrdcbiIKKyIgICAgICAgdDoggrGCzINlg0yDWINnlbaOmpfxgvCSVIK3XG4iCiAKICMsIGMtZm9ybWF0CiBtc2dpZCAiRTYyNTogY2Fubm90IG9wZW4gY3Njb3BlIGRhdGFiYXNlOiAlcyIKQEAgLTIzNzIsOSArMjQ4Nyw2IEBACiBtc2dpZCAiRTU2ODogZHVwbGljYXRlIGNzY29wZSBkYXRhYmFzZSBub3QgYWRkZWQiCiBtc2dzdHIgIkU1Njg6II9klaGCt4LpY3Njb3Blg2aBW4Neg3iBW4NYgs2Sx4nBgrOC6oLcgrmC8YLFgrWCvSIKIAotbXNnaWQgIkU1Njk6IG1heGltdW0gbnVtYmVyIG9mIGNzY29wZSBjb25uZWN0aW9ucyByZWFjaGVkIgotbXNnc3RyICJFNTY5OiBjc2NvcGWQ2pGxgsyNxZHlkJSCyZJCgrWC3IK1gr0iCi0KICMsIGMtZm9ybWF0CiBtc2dpZCAiRTI2MTogY3Njb3BlIGNvbm5lY3Rpb24gJXMgbm90IGZvdW5kIgogbXNnc3RyICJFMjYxOiBjc2NvcGWQ2pGxICVzIIKqgt2CwoKpguiC3IK5gvGCxYK1gr0iCkBAIC0yNDE0LDEyICsyNTI2LDE2IEBACiBtc2dpZCAiICMgcGlkICAgIGRhdGFiYXNlIG5hbWUgICAgICAgICAgICAgICAgICAgICAgIHByZXBlbmQgcGF0aFxuIgogbXNnc3RyICIgIyBwaWQgICAgg2aBW4Neg3iBW4NYlrwgICAgICAgICAgICAgICAgICAgICAgcHJlcGVuZCCDcINYXG4iCiAKK21zZ2lkICJMdWEgbGlicmFyeSBjYW5ub3QgYmUgbG9hZGVkLiIKK21zZ3N0ciAiTHVhg4mDQ4N1g4mDioLwg42BW4NogsWCq4LcgrmC8S4iCisKK21zZ2lkICJjYW5ub3Qgc2F2ZSB1bmRvIGluZm9ybWF0aW9uIgorbXNnc3RyICKDQYOTg2iDRI/ulfGCqpXbkbaCxYKrgtyCuYLxIgorCiBtc2dpZCAiIgotIj8/PzogU29ycnksIHRoaXMgY29tbWFuZCBpcyBkaXNhYmxlZCwgdGhlIE16U2NoZW1lIGxpYnJhcnkgY291bGQgbm90IGJlICIKKyJFODE1OiBTb3JyeSwgdGhpcyBjb21tYW5kIGlzIGRpc2FibGVkLCB0aGUgTXpTY2hlbWUgbGlicmFyaWVzIGNvdWxkIG5vdCBiZSAiCiAibG9hZGVkLiIKLW1zZ3N0ciAiIgotIj8/PzoggrGCzINSg32Dk4Nogs2Ws4z4gsWCtywggrKC34LxgsiCs4KiOiBNelNjaGVtZSCDiYNDg3WDiYOKgvCDjYFbg2iCxYKrgtwiCi0igrmC8YLFgrWCvS4iCittc2dzdHIgIkU4MTU6IIKxgsyDUoN9g5ODaILNlrOM+ILFgrcuIE16U2NoZW1lIIOJg0ODdYOJg4qC8IONgVuDaILFgquC3IK5gvEuIgogCiBtc2dpZCAiaW52YWxpZCBleHByZXNzaW9uIgogbXNnc3RyICKWs4z4gsiOroLFgrciCkBAIC0yNDM5LDkgKzI1NTUsNiBAQAogbXNnaWQgImNvdWxkbid0IG9wZW4gYnVmZmVyIgogbXNnc3RyICKDb4Nig3SDQILwikqCr4LcgrmC8SIKIAotbXNnaWQgImNhbm5vdCBzYXZlIHVuZG8gaW5mb3JtYXRpb24iCi1tc2dzdHIgIoNBg5ODaINEj+6V8YKqlduRtoLFgquC3IK5gvEiCi0KIG1zZ2lkICJjYW5ub3QgZGVsZXRlIGxpbmUiCiBtc2dzdHIgIo1zgvCPwYK5gtyCuYLxIgogCkBAIC0yNDcyLDYgKzI1ODUsMjIgQEAKIG1zZ2lkICJub3QgYWxsb3dlZCBpbiB0aGUgVmltIHNhbmRib3giCiBtc2dzdHIgIoNUg5ODaIN7g2KDToNYgsWCzYuWgrOC6oLcgrmC8SIKIAorIywgYy1mb3JtYXQKK21zZ2lkICJFMzcwOiBDb3VsZCBub3QgbG9hZCBsaWJyYXJ5ICVzIgorbXNnc3RyICJFMzcwOiCDiYNDg3WDiYOKICVzIILwg42BW4NogsWCq4LcgrmC8YLFgrWCvSIKKworbXNnaWQgIlNvcnJ5LCB0aGlzIGNvbW1hbmQgaXMgZGlzYWJsZWQ6IHRoZSBQZXJsIGxpYnJhcnkgY291bGQgbm90IGJlIGxvYWRlZC4iCittc2dzdHIgIiIKKyKCsYLMg1KDfYOTg2iCzZazjPiCxYK3LCCCsoLfgvGCyIKzgqI6IFBlcmyDiYNDg3WDiYOKgvCDjYFbg2iCxYKrgtyCuYLxgsWCtYK9LiIKKworbXNnaWQgIkUyOTk6IFBlcmwgZXZhbHVhdGlvbiBmb3JiaWRkZW4gaW4gc2FuZGJveCB3aXRob3V0IHRoZSBTYWZlIG1vZHVsZSIKK21zZ3N0ciAiIgorIkUyOTk6IINUg5ODaIN7g2KDToNYgsWCzSBTYWZlIIOCg1eDhYFbg4uC8I5nl3CCtYLIgqJQZXJsg1iDToOKg3aDZ4LNi9aCtoLnguoiCisigsSCooLcgrciCisKK21zZ2lkICJFODM2OiBUaGlzIFZpbSBjYW5ub3QgZXhlY3V0ZSA6cHl0aG9uIGFmdGVyIHVzaW5nIDpweTMiCittc2dzdHIgIkU4MzY6IIKxgsxWaW2CxYLNIDpweTMggvCOZ4LBgr2M44LJIDpweXRob24ggvCOZ4KmgtyCuYLxIgorCiBtc2dpZCAiIgogIkUyNjM6IFNvcnJ5LCB0aGlzIGNvbW1hbmQgaXMgZGlzYWJsZWQsIHRoZSBQeXRob24gbGlicmFyeSBjb3VsZCBub3QgYmUgIgogImxvYWRlZC4iCkBAIC0yNDkyLDUxICsyNjIxLDEyIEBACiBtc2dpZCAiaW52YWxpZCBhdHRyaWJ1dGUiCiBtc2dzdHIgIpazjPiCyJGukKuCxYK3IgogCi1tc2dpZCAid3JpdGVsaW5lcygpIHJlcXVpcmVzIGxpc3Qgb2Ygc3RyaW5ncyIKLW1zZ3N0ciAid3JpdGVsaW5lcygpIILJgs2Vto6al/GCzIOKg1iDZ4KqlUuXdoLFgrciCi0KLW1zZ2lkICJFMjY0OiBQeXRob246IEVycm9yIGluaXRpYWxpc2luZyBJL08gb2JqZWN0cyIKLW1zZ3N0ciAiRTI2NDogUHl0aG9uOiBJL0+DSYN1g1eDRoNOg2eCzI+JivqJu5KGgsmDR4OJgVuCxYK3IgotCi1tc2dpZCAiYXR0ZW1wdCB0byByZWZlciB0byBkZWxldGVkIGJ1ZmZlciIKLW1zZ3N0ciAij8GCs4Lqgr2Db4Nig3SDQIKqjlGPxoKzguqC3IK1gr0iCi0KLW1zZ2lkICJsaW5lIG51bWJlciBvdXQgb2YgcmFuZ2UiCi1tc2dzdHIgIpTNiM2KT4LMjXOU1I2GgsWCtyIKLQogIywgYy1mb3JtYXQKLW1zZ2lkICI8YnVmZmVyIG9iamVjdCAoZGVsZXRlZCkgYXQgJThsWD4iCi1tc2dzdHIgIjyDb4Nig3SDQINJg3WDV4NGg06DZyAoj8GLjo3Pgt0pICU4bFg+IgorbXNnaWQgIjxidWZmZXIgb2JqZWN0IChkZWxldGVkKSBhdCAlcD4iCittc2dzdHIgIjyDb4Nig3SDQINJg3WDV4NGg06DZyAoj8GLjo3Pgt0pICVwPiIKIAotbXNnaWQgImludmFsaWQgbWFyayBuYW1lIgotbXNnc3RyICKWs4z4gsiDfYFbg06WvILFgrciCi0KLW1zZ2lkICJubyBzdWNoIGJ1ZmZlciIKLW1zZ3N0ciAigruCzILmgqSCyINvg2KDdINAgs2CoILogtyCuYLxIgotCi1tc2dpZCAiYXR0ZW1wdCB0byByZWZlciB0byBkZWxldGVkIHdpbmRvdyIKLW1zZ3N0ciAij8GCs4Lqgr2DRYNCg5ODaINFgqqOUY/GgrOC6oLcgrWCvSIKLQotbXNnaWQgInJlYWRvbmx5IGF0dHJpYnV0ZSIKLW1zZ3N0ciAik8eNnpDql3CRrpCrIgotCi1tc2dpZCAiY3Vyc29yIHBvc2l0aW9uIG91dHNpZGUgYnVmZmVyIgotbXNnc3RyICKDSoFbg1xcg4uCqoNvg2KDdINAgsyKT4LJgqCC6ILcgrciCi0KLSMsIGMtZm9ybWF0Ci1tc2dpZCAiPHdpbmRvdyBvYmplY3QgKGRlbGV0ZWQpIGF0ICUuOGxYPiIKLW1zZ3N0ciAiPINFg0KDk4Nog0WDSYN1g1eDRoNOg2cgKI/Bi46NzykgJS44bFg+IgotCi0jLCBjLWZvcm1hdAotbXNnaWQgIjx3aW5kb3cgb2JqZWN0ICh1bmtub3duKSBhdCAlLjhsWD4iCi1tc2dzdHIgIjyDRYNCg5ODaINFg0mDdYNXg0aDToNnICiWopJtKSAlLjhsWD4iCi0KLSMsIGMtZm9ybWF0Ci1tc2dpZCAiPHdpbmRvdyAlZD4iCi1tc2dzdHIgIjyDRYNCg5ODaINFICVkPiIKLQotbXNnaWQgIm5vIHN1Y2ggd2luZG93IgotbXNnc3RyICKCu4LMguaCpILIg0WDQoOTg2iDRYLNgqCC6ILcgrmC8SIKK21zZ2lkICJFODM3OiBUaGlzIFZpbSBjYW5ub3QgZXhlY3V0ZSA6cHkzIGFmdGVyIHVzaW5nIDpweXRob24iCittc2dzdHIgIkU4Mzc6IIKxgsxWaW2CxYLNIDpweXRob24ggvCOZ4LBgr2M44LJIDpweTMggvCOZ4KmgtyCuYLxIgogCiBtc2dpZCAiRTI2NTogJF8gbXVzdCBiZSBhbiBpbnN0YW5jZSBvZiBTdHJpbmciCiBtc2dzdHIgIkUyNjU6ICRfIILNlbaOmpfxgsyDQ4OTg1iDXoOTg1iCxYLIgq+C6oLOgsiC6ILcgrmC8SIKQEAgLTI2NjgsNiArMjc1OCw5IEBACiBtc2dpZCAiY2Fubm90IHNldCBsaW5lKHMpIgogbXNnc3RyICKNc4LwkN2S6ILFgquC3IK5gvEiCiAKK21zZ2lkICJpbnZhbGlkIG1hcmsgbmFtZSIKK21zZ3N0ciAilrOM+ILIg32BW4NOlryCxYK3IgorCiBtc2dpZCAibWFyayBub3Qgc2V0IgogbXNnc3RyICKDfYFbg06CzZDdkuiCs4LqgsSCooLcgrmC8SIKIApAQCAtMjY3OCw2ICsyNzcxLDkgQEAKIG1zZ2lkICJjYW5ub3QgaW5zZXJ0L2FwcGVuZCBsaW5lIgogbXNnc3RyICKNc4LMkX2T/C+Sx4nBgvCCxYKrgtyCuYLxIgogCittc2dpZCAibGluZSBudW1iZXIgb3V0IG9mIHJhbmdlIgorbXNnc3RyICKUzYjNik+CzI1zlNSNhoLFgrciCisKIG1zZ2lkICJ1bmtub3duIGZsYWc6ICIKIG1zZ3N0ciAilqKSbYLMg3SDiYNPOiIKIApAQCAtMjc2Niw5ICsyODYyLDE1IEBACiBtc2dpZCAiJWQgZmlsZXMgdG8gZWRpdFxuIgogbXNnc3RyICIlZCCMwoLMg3SDQINDg4uCqpXSj1eC8I1UgqaCxIKigtyCt1xuIgogCittc2dpZCAibmV0YmVhbnMgaXMgbm90IHN1cHBvcnRlZCB3aXRoIHRoaXMgR1VJXG4iCittc2dzdHIgIm5ldGJlYW5zIILNgrGCzEdVSYLFgs2XmJdwgsWCq4LcgrmC8VxuIgorCiBtc2dpZCAiVGhpcyBWaW0gd2FzIG5vdCBjb21waWxlZCB3aXRoIHRoZSBkaWZmIGZlYXR1cmUuIgogbXNnc3RyICKCsYLMVmltgsmCzWRpZmaLQJRcXIKqgqCC6ILcgrmC8SiDUoOTg3CDQ4OLjp6Q3ZLoKS4iCiAKK21zZ2lkICInLW5iJyBjYW5ub3QgYmUgdXNlZDogbm90IGVuYWJsZWQgYXQgY29tcGlsZSB0aW1lXG4iCittc2dzdHIgIictbmInII5nl3CVc4nClFxcgsWCtzogg1KDk4Nwg0ODi46egsmWs4z4gsmCs4LqgsSCooLcgrdcbiIKKwogbXNnaWQgIkF0dGVtcHQgdG8gb3BlbiBzY3JpcHQgZmlsZSBhZ2FpbjogXCIiCiBtc2dzdHIgIoNYg06DioN2g2eDdINAg0ODi4LwjcSC0YpKgqKCxILdgtyCtzogXCIiCiAKQEAgLTI5OTcsNyArMzA5OSw3IEBACiBtc2dzdHIgIi0tcmVtb3RlIDxmaWxlcz5cdInClFxcgsiC54LOVmltg1SBW4NvgsUgPGZpbGVzPiCC8JXSj1eCt4LpIgogCiBtc2dpZCAiLS1yZW1vdGUtc2lsZW50IDxmaWxlcz4gIFNhbWUsIGRvbid0IGNvbXBsYWluIGlmIHRoZXJlIGlzIG5vIHNlcnZlciIKLW1zZ3N0ciAiLS1yZW1vdGUtc2lsbmV0IDxmaWxlcz4gIJOvj+MsIINUgVuDb4KqlrOCrYLEguCMeI2QlbaC8I9vl82CtYLIgqIiCittc2dzdHIgIi0tcmVtb3RlLXNpbGVudCA8ZmlsZXM+ICCTr4/jLCCDVIFbg2+Cqpazgq2CxILgjHiNkJW2gvCPb5fNgrWCyIKiIgogCiBtc2dpZCAiIgogIi0tcmVtb3RlLXdhaXQgPGZpbGVzPiAgQXMgLS1yZW1vdGUgYnV0IHdhaXQgZm9yIGZpbGVzIHRvIGhhdmUgYmVlbiBlZGl0ZWQiCkBAIC0zMDI1LDYgKzMxMjcsOSBAQAogbXNnaWQgIi0tc2VydmVybmFtZSA8bmFtZT5cdFNlbmQgdG8vYmVjb21lIHRoZSBWaW0gc2VydmVyIDxuYW1lPiIKIG1zZ3N0ciAiLS1zZXJ2ZW5hbWUgPG5hbWU+XHRcdFZpbYNUgVuDbyA8bmFtZT4ggsmRl5BNL5a8kU+Q3ZLogreC6SIKIAorbXNnaWQgIi0tc3RhcnR1cHRpbWUgPGZpbGU+XHRXcml0ZSBzdGFydHVwIHRpbWluZyBtZXNzYWdlcyB0byA8ZmlsZT4iCittc2dzdHIgIi0tc3RhcnR1cHRpbWUgPGZpbGU+XHSLTpOugsmCqYKpgsGCvY6eitSCzI/ajdeC8CA8ZmlsZT4ggtaPb5fNgreC6SIKKwogbXNnaWQgIi1pIDx2aW1pbmZvPlx0XHRVc2UgPHZpbWluZm8+IGluc3RlYWQgb2YgLnZpbWluZm8iCiBtc2dzdHIgIi1pIDx2aW1pbmZvPlx0XHQudmltaW5mb4LMkeOC7YLogskgPHZpbWluZm8+IILwjmeCpCIKIApAQCAtMzA2MSwxMiArMzE2Niw2IEBACiBtc2dpZCAiLWljb25pY1x0XHRTdGFydCB2aW0gaWNvbmlmaWVkIgogbXNnc3RyICItaWNvbmljXHRcdI3Fj6yJu4K1gr2P85HUgsV2aW2C8ItOk66Ct4LpIgogCi1tc2dpZCAiLW5hbWUgPG5hbWU+XHRcdFVzZSByZXNvdXJjZSBhcyBpZiB2aW0gd2FzIDxuYW1lPiIKLW1zZ3N0ciAiLW5hbWUgPG5hbWU+XHRcdHZpbYLMlryCqiA8bmFtZT4ggsWCoILpgsaCtYLEg4qDXFyBW4NYgvCOZ4KkIgotCi1tc2dpZCAiXHRcdFx0ICAoVW5pbXBsZW1lbnRlZClcbiIKLW1zZ3N0ciAiXHRcdFx0ICAojsCRlYKzguqCxIKigsiCoilcbiIKLQogbXNnaWQgIi1iYWNrZ3JvdW5kIDxjb2xvcj5cdFVzZSA8Y29sb3I+IGZvciB0aGUgYmFja2dyb3VuZCAoYWxzbzogLWJnKSIKIG1zZ3N0ciAiLWJhY2tncm91bmQgPGNvbG9yPlx0lHeMaZBGgskgPGNvbG9yPiCC8I5ngqQok6+LYDogLWJnKSIKIApAQCAtMzE5MSw3ICszMjkwLDYgQEAKICJcbiIKICKVz41YICAgjXMgICAgl/EgIINlg0yDWINnIgogCi0jLCBjLWZvcm1hdAogbXNnaWQgIiIKICJcbiIKICIjIEZpbGUgbWFya3M6XG4iCkBAIC0zMjAwLDcgKzMyOTgsNiBAQAogIiMgg3SDQINDg4uDfYFbg046XG4iCiAKICMuIFdyaXRlIHRoZSBqdW1wbGlzdCB3aXRoIC0nCi0jLCBjLWZvcm1hdAogbXNnaWQgIiIKICJcbiIKICIjIEp1bXBsaXN0IChuZXdlc3QgZmlyc3QpOlxuIgpAQCAtMzIwOCw3ICszMzA1LDYgQEAKICJcbiIKICIjIINXg4ODk4N2g4qDWINnICiQVoK1gqKC4ILMgqqQ5ik6XG4iCiAKLSMsIGMtZm9ybWF0CiBtc2dpZCAiIgogIlxuIgogIiMgSGlzdG9yeSBvZiBtYXJrcyB3aXRoaW4gZmlsZXMgKG5ld2VzdCB0byBvbGRlc3QpOlxuIgpAQCAtMzI0MCwxNSArMzMzNiw2IEBACiBtc2dpZCAiRTI4OTogaW5wdXQgbWV0aG9kIGRvZXNuJ3Qgc3VwcG9ydCBteSBwcmVlZGl0IHR5cGUiCiBtc2dzdHIgIkUyODk6IINDg5ODdoNig2eDgYNcXINig2iCzSBteSBwcmVlZGl0IHR5cGUggvCDVIN8gVuDZ4K1gtyCuYLxIgogCi1tc2dpZCAiRTI5MDogb3Zlci10aGUtc3BvdCBzdHlsZSByZXF1aXJlcyBmb250c2V0IgotbXNnc3RyICJFMjkwOiBvdmVyLXRoZS1zcG90IINYg16DQ4OLgsmCzWZvbnRzZXSCqpVLl3aCxYK3IgotCi1tc2dpZCAiRTI5MTogWW91ciBHVEsrIGlzIG9sZGVyIHRoYW4gMS4yLjMuIFN0YXR1cyBhcmVhIGRpc2FibGVkIgotbXNnc3RyICJFMjkxOiBHVEsrgqoxLjIuM4LmguiC4IzDgqKCzILFg1iDZYFbg16DWINHg4qDQYKqlrOM+ILFgrciCi0KLW1zZ2lkICJFMjkyOiBJbnB1dCBNZXRob2QgU2VydmVyIGlzIG5vdCBydW5uaW5nIgotbXNnc3RyICJFMjkyOiCDQ4OTg3aDYoNng4GDXFyDYoNog1SBW4NvIIKqk66N7IK1gsSCooLcgrmC8SIKLQogbXNnaWQgIkUyOTM6IGJsb2NrIHdhcyBub3QgbG9ja2VkIgogbXNnc3RyICJFMjkzOiCDdYONg2KDToKqg42DYoNOgrOC6oLEgqKC3IK5gvEiCiAKQEAgLTMyNzYsNiArMzM2Myw5IEBACiBtc2dpZCAiRTI5ODogRGlkbid0IGdldCBibG9jayBuciAyPyIKIG1zZ3N0ciAiRTI5ODogg3WDjYNig04gMiCC8I7mk76CxYKrgtyCuYLxPyIKIAorbXNnaWQgIkU4NDM6IEVycm9yIHdoaWxlIHVwZGF0aW5nIHN3YXAgZmlsZSBjcnlwdCIKK21zZ3N0ciAiRTg0Mzogg1iDj4Nig3aDdINAg0ODi4LMiMONhoLwjViQVpKGgsmDR4OJgVuCqpStkLaCtYLcgrWCvSIKKwogIy4gY291bGQgbm90IChyZSlvcGVuIHRoZSBzd2FwIGZpbGUsIHdoYXQgY2FuIHdlIGRvPz8/PwogbXNnaWQgIkUzMDE6IE9vcHMsIGxvc3QgdGhlIHN3YXAgZmlsZSEhISIKIG1zZ3N0ciAiRTMwMToggqiCwYLGLCCDWIOPg2KDdoN0g0CDQ4OLgqqOuILtguqC3IK1gr0hISEiCkBAIC0zMzM0LDYgKzM0MjQsMTIgQEAKICIsXG4iCiAiguCCtYKtgs2DdINAg0ODi4KqkbmPnYK1gsSCooLcgrcuIgogCisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyJFODMzOiAlcyBpcyBlbmNyeXB0ZWQgYW5kIHRoaXMgdmVyc2lvbiBvZiBWaW0gZG9lcyBub3Qgc3VwcG9ydCBlbmNyeXB0aW9uIgorbXNnc3RyICIiCisiRTgzMzogJXMggs2CsYLMg2+BW4NXg4eDk4LMVmltgsWDVIN8gVuDZ4K1gsSCooLIgqKMYI6ugsWIw42GibuCs4LqgsSCooLcgrciCisKIG1zZ2lkICIgaGFzIGJlZW4gZGFtYWdlZCAocGFnZSBzaXplIGlzIHNtYWxsZXIgdGhhbiBtaW5pbXVtIHZhbHVlKS5cbiIKIG1zZ3N0ciAiIILNkbmPnYK1gsSCooLcgrcgKIN5gVuDV4NUg0ODWYKqjcWPrJJsgvCJuonxgsGCxIKigtyCtykuXG4iCiAKQEAgLTMzNDksNiArMzQ0NSwzOCBAQAogbXNnc3RyICJFMzA4OiCMeI2QOiCMtJZ7g3SDQINDg4uCqpXPjViCs4LqgsSCooLcgrciCiAKICMsIGMtZm9ybWF0Cittc2dpZCAiU3dhcCBmaWxlIGlzIGVuY3J5cHRlZDogXCIlc1wiIgorbXNnc3RyICKDWIOPg2KDdoN0g0CDQ4OLgs2Iw42GibuCs4LqgsSCooLcgrc6IFwiJXNcIiIKKworbXNnaWQgIiIKKyJcbiIKKyJJZiB5b3UgZW50ZXJlZCBhIG5ldyBjcnlwdCBrZXkgYnV0IGRpZCBub3Qgd3JpdGUgdGhlIHRleHQgZmlsZSwiCittc2dzdHIgIiIKKyJcbiIKKyKQVoK1gqKIw42Gg0yBW4Lwk/yXzYK1gr2CoILGgsmDZYNMg1iDZ4N0g0CDQ4OLgvCV25G2grWCxIKigsiCoo/qjYeCzSwiCisKK21zZ2lkICIiCisiXG4iCisiZW50ZXIgdGhlIG5ldyBjcnlwdCBrZXkuIgorbXNnc3RyICIiCisiXG4iCisikFaCtYKiiMONhoNMgVuC8JP8l82CtYLEgq2CvoKzgqIuIgorCittc2dpZCAiIgorIlxuIgorIklmIHlvdSB3cm90ZSB0aGUgdGV4dCBmaWxlIGFmdGVyIGNoYW5naW5nIHRoZSBjcnlwdCBrZXkgcHJlc3MgZW50ZXIiCittc2dzdHIgIiIKKyJcbiIKKyKIw42Gg0yBW4Lwlc+CpoK9gqCCxoLJg2WDTINYg2eDdINAg0ODi4LwlduRtoK1gr2P6o2Hgs0sIINlg0yDWINng3SDQINDg4uCxiIKKworbXNnaWQgIiIKKyJcbiIKKyJ0byB1c2UgdGhlIHNhbWUga2V5IGZvciB0ZXh0IGZpbGUgYW5kIHN3YXAgZmlsZSIKK21zZ3N0ciAiIgorIlxuIgorIoNYg4+DYoN2g3SDQINDg4uCyZOvgraIw42Gg0yBW4LwjmeCpIK9gt+CyWVudGVygr6Cr4LwiZ+CtYLEgq2CvoKzgqIuIgorCisjLCBjLWZvcm1hdAogbXNnaWQgIkUzMDk6IFVuYWJsZSB0byByZWFkIGJsb2NrIDEgZnJvbSAlcyIKIG1zZ3N0ciAiRTMwOTogJXMggqmC54N1g42DYoNOIDEggvCTx42egt+C3IK5gvEiCiAKQEAgLTM0MDEsMTYgKzM1MjksMjQgQEAKICJcbiIKICIolc+NWILwg2CDRoNig06Ct4Lpgr2C34LJLCCCsYLMg3SDQINDg4uC8JXKgsyWvJFPgsWV25G2grWCvY/jgsVcbiIKIAotbXNnaWQgImFuZCBydW4gZGlmZiB3aXRoIHRoZSBvcmlnaW5hbCBmaWxlIHRvIGNoZWNrIGZvciBjaGFuZ2VzKVxuIgotbXNnc3RyICKMtJZ7g3SDQINDg4uCxoLMIGRpZmYggvCOwI1zgreC6YLGl8eCooLFgrWC5YKkKVxuIgorbXNnaWQgImFuZCBydW4gZGlmZiB3aXRoIHRoZSBvcmlnaW5hbCBmaWxlIHRvIGNoZWNrIGZvciBjaGFuZ2VzKSIKK21zZ3N0ciAijLSWe4N0g0CDQ4OLgsaCzCBkaWZmIILwjsCNc4K3gumCxpfHgqKCxYK1guWCpCkiCisKK21zZ2lkICJSZWNvdmVyeSBjb21wbGV0ZWQuIEJ1ZmZlciBjb250ZW50cyBlcXVhbHMgZmlsZSBjb250ZW50cy4iCittc2dzdHIgIpWcjLOKrpe5LiCDb4Nig3SDQILMk+CXZYLNg3SDQINDg4uCxpOvgraCyYLIguiC3IK1gr0uIgogCiBtc2dpZCAiIgotIkRlbGV0ZSB0aGUgLnN3cCBmaWxlIGFmdGVyd2FyZHMuXG4iCisiXG4iCisiWW91IG1heSB3YW50IHRvIGRlbGV0ZSB0aGUgLnN3cCBmaWxlIG5vdy5cbiIKICJcbiIKIG1zZ3N0ciAiIgorIlxuIgogIoK7guqCqYLnLnN3cIN0g0CDQ4OLgvCN7Y+cgrWCxIKtgr6Cs4KiXG4iCiAiXG4iCiAKK21zZ2lkICJVc2luZyBjcnlwdCBrZXkgZnJvbSBzd2FwIGZpbGUgZm9yIHRoZSB0ZXh0IGZpbGUuXG4iCittc2dzdHIgIoNYg4+DYoN2g3SDQINDg4uCqYLnjuaTvoK1gr2Iw42Gg0yBW4Lwg2WDTINYg2eDdINAg0ODi4LJjmeCooLcgrcuXG4iCisKICMuIHVzZSBtc2coKSB0byBzdGFydCB0aGUgc2Nyb2xsaW5nIHByb3Blcmx5CiBtc2dpZCAiU3dhcCBmaWxlcyBmb3VuZDoiCiBtc2dzdHIgIoNYg4+DYoN2g3SDQINDg4uCqpWhkJSMqYLCgqmC6ILcgrWCvToiCkBAIC0zNTg1LDI0ICszNzIxLDIwIEBACiAjLiAqIG90aGVyIGxhbmd1YWdlcy4KIG1zZ2lkICIiCiAiXG4iCi0iKDEpIEFub3RoZXIgcHJvZ3JhbSBtYXkgYmUgZWRpdGluZyB0aGUgc2FtZSBmaWxlLlxuIgotIiAgICBJZiB0aGlzIGlzIHRoZSBjYXNlLCBiZSBjYXJlZnVsIG5vdCB0byBlbmQgdXAgd2l0aCB0d29cbiIKLSIgICAgZGlmZmVyZW50IGluc3RhbmNlcyBvZiB0aGUgc2FtZSBmaWxlIHdoZW4gbWFraW5nIGNoYW5nZXMuXG4iCisiKDEpIEFub3RoZXIgcHJvZ3JhbSBtYXkgYmUgZWRpdGluZyB0aGUgc2FtZSBmaWxlLiAgSWYgdGhpcyBpcyB0aGUgY2FzZSxcbiIKKyIgICAgYmUgY2FyZWZ1bCBub3QgdG8gZW5kIHVwIHdpdGggdHdvIGRpZmZlcmVudCBpbnN0YW5jZXMgb2YgdGhlIHNhbWVcbiIKKyIgICAgZmlsZSB3aGVuIG1ha2luZyBjaGFuZ2VzLiIKIG1zZ3N0ciAiIgogIlxuIgogIigxKSCVyoLMg3aDjYNPg4mDgIKqk6+CtoN0g0CDQ4OLgvCV0o9XgrWCxIKigumCqYLggrWC6oLcgrmC8S5cbiIKICIgICAggrGCzI/qjYeCyYLNLCCVz41YgvCCtYK9jduCyY3Fj0mTSYLJLCCTr4K2g3SDQINDg4uCzIjZgsiC6VxuIgotIiAgICAygsKCzINDg5ODWINeg5ODWIKqgsWCq4LEgrWC3IKkgrGCxoLJko2I04K1gsSCrYK+grOCoi5cbiIKKyIgICAgMoLCgsyDQ4OTg1iDXoOTg1iCqoLFgquCxIK1gtyCpIKxgsaCyZKNiNOCtYLEgq2CvoKzgqIuIgogCi1tc2dpZCAiICAgIFF1aXQsIG9yIGNvbnRpbnVlIHdpdGggY2F1dGlvbi5cbiIKLW1zZ3N0ciAiICAgII9Jl7mCt4LpgqksIJKNiNOCtYLIgqqC55Gxgq+C3IK3LlxuIgorbXNnaWQgIiAgUXVpdCwgb3IgY29udGludWUgd2l0aCBjYXV0aW9uLlxuIgorbXNnc3RyICIgII9Jl7mCt4LpgqksIJKNiNOCtYLIgqqC55Gxgq+CxIKtgr6Cs4KiLlxuIgogCi1tc2dpZCAiIgotIlxuIgotIigyKSBBbiBlZGl0IHNlc3Npb24gZm9yIHRoaXMgZmlsZSBjcmFzaGVkLlxuIgotbXNnc3RyICIiCi0iXG4iCi0iKDIpIIKxgsyDdINAg0ODi4LMldKPV4Nag2KDVoOHg5OCqoNOg4mDYoNWg4WCtYK9LlxuIgorbXNnaWQgIigyKSBBbiBlZGl0IHNlc3Npb24gZm9yIHRoaXMgZmlsZSBjcmFzaGVkLlxuIgorbXNnc3RyICIoMikggrGCzIN0g0CDQ4OLgsyV0o9Xg1qDYoNWg4eDk4Kqg06DiYNig1aDhYK1gr0uXG4iCiAKIG1zZ2lkICIgICAgSWYgdGhpcyBpcyB0aGUgY2FzZSwgdXNlIFwiOnJlY292ZXJcIiBvciBcInZpbSAtciAiCiBtc2dzdHIgIiAgICCCsYLMj+qNh4LJgs0gXCI6cmVjb3ZlclwiIIKpIFwidmltIC1yICIKQEAgLTM2NDUsNyArMzc3Nyw3IEBACiBtc2dzdHIgIiIKICKTx42ekOqXcILFikqCrSgmTylcbiIKICKCxoLJgqmCrZXSj1eCt4LpKCZFKVxuIgotIpWcioiCs4K5gukoJlIpZWNvdmVyXG4iCisilZyKiIKzgrmC6SgmUilcbiIKICKPSZe5greC6SgmUSlcbiIKICKSho5+greC6SgmQSkiCiAKQEAgLTM2NTksNyArMzc5MSw3IEBACiBtc2dzdHIgIiIKICKTx42ekOqXcILFikqCrSgmTylcbiIKICKCxoLJgqmCrZXSj1eCt4LpKCZFKVxuIgotIpWcioiCs4K5gukoJlIpZWNvdmVyXG4iCisilZyKiIKzgrmC6SgmUilcbiIKICKN7Y+cgreC6SgmRClcbiIKICKPSZe5greC6SgmUSlcbiIKICKSho5+greC6SgmQSkiCkBAIC0zNzg5LDE3ICszOTIxLDIxIEBACiBtc2dpZCAiRTc2NjogSW5zdWZmaWNpZW50IGFyZ3VtZW50cyBmb3IgcHJpbnRmKCkiCiBtc2dzdHIgIkU3NjY6IHByaW50ZigpIILMiPiQlIKqlXOPXFyVqoLFgrciCiAKK21zZ2lkICJFODA3OiBFeHBlY3RlZCBGbG9hdCBhcmd1bWVudCBmb3IgcHJpbnRmKCkiCittc2dzdHIgIkU4MDc6IHByaW50ZigpIILMiPiQlILJgs2VgpOuj62QlIKqivqR0oKzguqCxIKigtyCtyIKKwogbXNnaWQgIkU3Njc6IFRvbyBtYW55IGFyZ3VtZW50cyB0byBwcmludGYoKSIKIG1zZ3N0ciAiRTc2NzogcGlybnRmKCkggsyI+JCUgqqRvYnfgqyC3IK3IgogCiBtc2dpZCAiVzEwOiBXYXJuaW5nOiBDaGFuZ2luZyBhIHJlYWRvbmx5IGZpbGUiCiBtc2dzdHIgIlcxMDogjHiNkDogk8eNnpDql3CDdINAg0ODi4Lwlc+NWIK1gtyCtyIKIAotbXNnaWQgIlR5cGUgbnVtYmVyIG9yIGNsaWNrIHdpdGggbW91c2UgKDxFbnRlcj4gY2FuY2Vscyk6ICIKLW1zZ3N0ciAikJSSbILwk/yXzYK3gumCqYN9g0WDWILwg06DioNig06CtYLEgq2CvoKzgqIgKDxFbnRlcj4ggsWDTIODg5ODWoOLKTogIgorbXNnaWQgIlR5cGUgbnVtYmVyIGFuZCA8RW50ZXI+IG9yIGNsaWNrIHdpdGggbW91c2UgKGVtcHR5IGNhbmNlbHMpOiAiCittc2dzdHIgIiIKKyKU1I2GgsY8RW50ZXI+gvCT/JfNgreC6YKpg32DRYNYgsWDToOKg2KDToK1gsSCrYK+grOCoiAoi/OCxYNMg4ODk4Nag4spOiAiCiAKLW1zZ2lkICJDaG9pY2UgbnVtYmVyICg8RW50ZXI+IGNhbmNlbHMpOiAiCi1tc2dzdHIgIpTUjYaC8JFJkfCCtYLEgq2CvoKzgqIgKDxFbnRlcj4ggsWDTIODg5ODWoOLKTogIgorbXNnaWQgIlR5cGUgbnVtYmVyIGFuZCA8RW50ZXI+IChlbXB0eSBjYW5jZWxzKTogIgorbXNnc3RyICKU1I2GgsY8RW50ZXI+gvCT/JfNgrWCxIKtgr6Cs4KiICiL84LFg0yDg4OTg1qDiyk6ICIKIAogbXNnaWQgIjEgbW9yZSBsaW5lIgogbXNnc3RyICIxII1zIJLHicGCtYLcgrWCvSIKQEAgLTM4MjgsNyArMzk2NCw2IEBACiBtc2dpZCAiVmltOiBGaW5pc2hlZC5cbiIKIG1zZ3N0ciAiVmltOiCPSZe5grWC3IK1gr0uXG4iCiAKLSMsIGMtZm9ybWF0CiBtc2dpZCAiRVJST1I6ICIKIG1zZ3N0ciAig0eDiYFbOiAiCiAKQEAgLTM5MTEsNyArNDA0Niw2IEBACiBtc2dpZCAiRTM0NzogTm8gbW9yZSBmaWxlIFwiJXNcIiBmb3VuZCBpbiBwYXRoIgogbXNnc3RyICJFMzQ3OiCDcINYgsmCzYKxguqIyI/jIFwiJXNcIiCCxoKigqSDdINAg0ODi4KqgqCC6ILcgrmC8SIKIAotIy4gR2V0IGhlcmUgd2hlbiB0aGUgc2VydmVyIGNhbid0IGJlIGZvdW5kLgogbXNnaWQgIkNhbm5vdCBjb25uZWN0IHRvIE5ldGJlYW5zICMyIgogbXNnc3RyICJOZXRiZWFucyAjMiCCyZDakbGCxYKrgtyCuYLxIgogCkBAIC0zOTMwLDkgKzQwNjQsMTggQEAKIG1zZ2lkICJFNjU4OiBOZXRCZWFucyBjb25uZWN0aW9uIGxvc3QgZm9yIGJ1ZmZlciAlbGQiCiBtc2dzdHIgIkU2NTg6IINvg2KDdINAICVsZCCCzCBOZXRCZWFucyCQ2pGxgqqOuILtguqC3IK1gr0iCiAKK21zZ2lkICJFODM4OiBuZXRiZWFucyBpcyBub3Qgc3VwcG9ydGVkIHdpdGggdGhpcyBHVUkiCittc2dzdHIgIkU4Mzg6IE5ldEJlYW5zgs2CsYLMR1VJgsmCzZHOiZ6CtYLEgqKC3IK5gvEiCisKK21zZ2lkICJFNTExOiBuZXRiZWFucyBhbHJlYWR5IGNvbm5lY3RlZCIKK21zZ3N0ciAiRTUxMTogTmV0QmVhbnOCzYr5gsmQ2pGxgrWCxIKigtyCtyIKKwogbXNnaWQgIkU1MDU6ICIKIG1zZ3N0ciAiRTUwNTogIgogCittc2dpZCAiRTM0OTogTm8gaWRlbnRpZmllciB1bmRlciBjdXJzb3IiCittc2dzdHIgIkUzNDk6IINKgVuDXFyDi4LMiMqSdYLJgs2Or5XKjnGCqoKgguiC3IK5gvEiCisKIG1zZ2lkICJFNzc0OiAnb3BlcmF0b3JmdW5jJyBpcyBlbXB0eSIKIG1zZ3N0ciAiRTc3NDogJ29wZXJhdG9yZnVuYycgg0mDdoNWg4eDk4Kqi/OCxYK3IgogCkBAIC0zOTQ1LDkgKzQwODgsNiBAQAogbXNnaWQgIkUzNDg6IE5vIHN0cmluZyB1bmRlciBjdXJzb3IiCiBtc2dzdHIgIkUzNDg6IINKgVuDXFyDi4LMiMqSdYLJgs2Vto6al/GCqoKgguiC3IK5gvEiCiAKLW1zZ2lkICJFMzQ5OiBObyBpZGVudGlmaWVyIHVuZGVyIGN1cnNvciIKLW1zZ3N0ciAiRTM0OTogg0qBW4NcXIOLgsyIypJ1gsmCzY6vlcqOcYKqgqCC6ILcgrmC8SIKLQogbXNnaWQgIkUzNTI6IENhbm5vdCBlcmFzZSBmb2xkcyB3aXRoIGN1cnJlbnQgJ2ZvbGRtZXRob2QnIgogbXNnc3RyICJFMzUyOiCMu43dgswgJ2ZvbGRtZXRob2QnIILFgs2Q3I/0gt2C8I/Bi46CxYKrgtyCuYLxIgogCkBAIC00MDM3LDcgKzQxNzcsNiBAQAogbXNnaWQgIklsbGVnYWwgcmVnaXN0ZXIgbmFtZSIKIG1zZ3N0ciAilXOQs4LIg4yDV4NYg16WvCIKIAotIywgYy1mb3JtYXQKIG1zZ2lkICIiCiAiXG4iCiAiIyBSZWdpc3RlcnM6XG4iCkBAIC00MDU1LDcgKzQxOTQsNyBAQAogCiAjLCBjLWZvcm1hdAogbXNnaWQgIlNlbGVjdGVkICVzJWxkIG9mICVsZCBMaW5lczsgJWxkIG9mICVsZCBXb3JkczsgJWxkIG9mICVsZCBCeXRlcyIKLW1zZ3N0ciAikUmR8CAlcyVsZCAvICVsZCCNczsgJWxkIC8gJWxkIJJQjOo7ICVsZCAvICVsZCCVto6aIgorbXNnc3RyICKRSZHwICVzJWxkIC8gJWxkII1zOyAlbGQgLyAlbGQgklCM6jsgJWxkIC8gJWxkIINvg0ODZyIKIAogIywgYy1mb3JtYXQKIG1zZ2lkICIiCkBAIC00MDY1LDcgKzQyMDQsNyBAQAogCiAjLCBjLWZvcm1hdAogbXNnaWQgIkNvbCAlcyBvZiAlczsgTGluZSAlbGQgb2YgJWxkOyBXb3JkICVsZCBvZiAlbGQ7IEJ5dGUgJWxkIG9mICVsZCIKLW1zZ3N0ciAil/EgJXMgLyAlczsgjXMgJWxkIG9mICVsZDsgklCM6iAlbGQgLyAlbGQ7IJW2jpogJWxkIC8gJWxkIgorbXNnc3RyICKX8SAlcyAvICVzOyCNcyAlbGQgb2YgJWxkOyCSUIzqICVsZCAvICVsZDsgg2+DQ4NnICVsZCAvICVsZCIKIAogIywgYy1mb3JtYXQKIG1zZ2lkICIiCkBAIC00MDkzLDYgKzQyMzIsOSBAQAogbXNnaWQgIkU1MjA6IE5vdCBhbGxvd2VkIGluIGEgbW9kZWxpbmUiCiBtc2dzdHIgIkU1MjA6IG1vZGVsaW5lIILFgs2LlonCgrOC6oLcgrmC8SIKIAorbXNnaWQgIkU4NDY6IEtleSBjb2RlIG5vdCBzZXQiCittc2dzdHIgIkU4NDY6IINMgVuDUoFbg2iCqpDdkuiCs4LqgsSCooLcgrmC8SIKKwogbXNnaWQgIkU1MjE6IE51bWJlciByZXF1aXJlZCBhZnRlciA9IgogbXNnc3RyICJFNTIxOiA9IILMjOOCyYLNkJSOmoKqlUuXdoLFgrciCiAKQEAgLTQxMTUsNiArNDI1NywxMiBAQAogbXNnaWQgIkU1ODk6ICdiYWNrdXBleHQnIGFuZCAncGF0Y2htb2RlJyBhcmUgZXF1YWwiCiBtc2dzdHIgIkU1ODk6ICdiYWNrdXBleHQnIILGICdwYXRjaG1vZGUnIIKqk6+CtoLFgrciCiAKK21zZ2lkICJFODM0OiBDb25mbGljdHMgd2l0aCB2YWx1ZSBvZiAnbGlzdGNoYXJzJyIKK21zZ3N0ciAiRTgzNDogJ2xpc3RjaGFycyeCzJJsgsmWtY+CgqqCoILogtyCtyIKKworbXNnaWQgIkU4MzU6IENvbmZsaWN0cyB3aXRoIHZhbHVlIG9mICdmaWxsY2hhcnMnIgorbXNnc3RyICJFODM1OiAnZmlsbGNoYXJzJ4LMkmyCyZa1j4KCqoKgguiC3IK3IgorCiBtc2dpZCAiRTYxNzogQ2Fubm90IGJlIGNoYW5nZWQgaW4gdGhlIEdUSysgMiBHVUkiCiBtc2dzdHIgIkU2MTc6IEdUSysyIEdVSYLFgs2Vz41YgsWCq4LcgrmC8SIKIApAQCAtNDUyNyw2ICs0Njc1LDkgQEAKIG1zZ2lkICJFMzgyOiBDYW5ub3Qgd3JpdGUsICdidWZ0eXBlJyBvcHRpb24gaXMgc2V0IgogbXNnc3RyICJFMzgyOiAnYnVmdHlwZScgg0mDdoNWg4eDk4KqkN2S6IKzguqCxIKigumCzILFj5GNnoLdgtyCuYLxIgogCittc2dpZCAiRXJyb3IgZmlsZSIKK21zZ3N0ciAig0eDiYFbg3SDQINDg4siCisKIG1zZ2lkICJFNjgzOiBGaWxlIG5hbWUgbWlzc2luZyBvciBpbnZhbGlkIHBhdHRlcm4iCiBtc2dzdHIgIkU2ODM6IIN0g0CDQ4OLlryCqpazgqKCqZazjPiCyINwg16BW4OTgsWCtyIKIApAQCAtNDc1MSw2ICs0OTAyLDkgQEAKIG1zZ2lkICJFMzg5OiBDb3VsZG4ndCBmaW5kIHBhdHRlcm4iCiBtc2dzdHIgIkUzODk6IINwg16BW4OTgvCC3YLCgq+C54LqgtyCuYLxIgogCittc2dpZCAiU3Vic3RpdHV0ZSAiCittc2dzdHIgIlN1YnN0aXR1dGUgIgorCiAjLCBjLWZvcm1hdAogbXNnaWQgIiIKICJcbiIKQEAgLTQ3ODksNiArNDk0MywxMSBAQAogbXNnc3RyICJFNzU2OiCDWIN5g4uDYINGg2KDToLNlrOM+Im7grOC6oLEgqKC3IK3IgogCiAjLCBjLWZvcm1hdAorbXNnaWQgIldhcm5pbmc6IENhbm5vdCBmaW5kIHdvcmQgbGlzdCBcIiVzXyVzLnNwbFwiIG9yIFwiJXNfYXNjaWkuc3BsXCIiCittc2dzdHIgIiIKKyKMeI2QOiCSUIzqg4qDWINnIFwiJXNfJXMuc3BsXCIggqiC5oLRIFwiJXNfYXNjaWkuc3BsXCIggs2MqYLCgqmC6ILcgrmC8SIKKworIywgYy1mb3JtYXQKIG1zZ2lkICJXYXJuaW5nOiBDYW5ub3QgZmluZCB3b3JkIGxpc3QgXCIlcy4lcy5zcGxcIiBvciBcIiVzLmFzY2lpLnNwbFwiIgogbXNnc3RyICIiCiAijHiNkDogklCM6oOKg1iDZyBcIiVzLiVzLnNwbFwiIIKoguaC0SBcIiVzLmFzY2lpLnNwbFwiIILNjKmCwoKpguiC3IK5gvEiCkBAIC00ODU0LDYgKzUwMTMsMTAgQEAKICKCsYLGgqqCoILogtyCtyIKIAogIywgYy1mb3JtYXQKK21zZ2lkICJXcm9uZyBDT01QT1VORFJVTEVTIHZhbHVlIGluICVzIGxpbmUgJWQ6ICVzIgorbXNnc3RyICJDT01QT1VORFJVTEVTIILMkmyCyYzrguiCqoKgguiC3IK3LiCDdINAg0ODiyAlcyCCzCAlZCCNc5baOiAlcyIKKworIywgYy1mb3JtYXQKIG1zZ2lkICJXcm9uZyBDT01QT1VORFdPUkRNQVggdmFsdWUgaW4gJXMgbGluZSAlZDogJXMiCiBtc2dzdHIgIiVzIILMICVkII1zltqCzCBDT01QT1VORFdPUkRNQVgggsySbILJjOuC6IKqgqCC6ILcgrc6ICVzIgogCkBAIC01MDEwLDYgKzUxNzMsOSBAQAogbXNnaWQgIklnbm9yZWQgJWQgd29yZHMgd2l0aCBub24tQVNDSUkgY2hhcmFjdGVycyIKIG1zZ3N0ciAilPFBU0NJSZW2jpqC8Ircgt4gJWQgjMKCzJJQjOqC8JazjouCtYLcgrWCvSIKIAorbXNnaWQgIkU4NDU6IEluc3VmZmljaWVudCBtZW1vcnksIHdvcmQgbGlzdCB3aWxsIGJlIGluY29tcGxldGUiCittc2dzdHIgIkU4NDU6IIOBg4KDioKqkauC6ILIgqKCzILFgUGSUIzqg4qDWINngs2Vc4qukVOCxYK3IgorCiAjLCBjLWZvcm1hdAogbXNnaWQgIkNvbXByZXNzZWQgJWQgb2YgJWQgbm9kZXM7ICVkICglZCUlKSByZW1haW5pbmciCiBtc2dzdHIgIoNtgVuDaCAlZCCMwiiRUyAlZCCMwpKGKSCC8Iizj2uCtYLcgrWCvTsgjmOC6CAlZCAoJWQlJSkiCkBAIC01MTg3LDggKzUzNTMsOCBAQAogbXNnaWQgIkUzOTU6IGNvbnRhaW5zIGFyZ3VtZW50IG5vdCBhY2NlcHRlZCBoZXJlIgogbXNnc3RyICJFMzk1OiCCsYLMj+qPioLFgs2I+JCUY29udGFpbnOCzYuWicKCs4LqgsSCooLcgrmC8SIKIAotbXNnaWQgIkUzOTY6IGNvbnRhaW5lZGluIGFyZ3VtZW50IG5vdCBhY2NlcHRlZCBoZXJlIgotbXNnc3RyICJFMzk2OiCCsYLMj+qPioLFgs2I+JCUY29udGFpbmVkaW6CzYuWicKCs4LqgsSCooLcgrmC8SIKK21zZ2lkICJFODQ0OiBpbnZhbGlkIGNjaGFyIHZhbHVlIgorbXNnc3RyICJFODQ0OiCWs4z4gshjY2hhcoLMkmyCxYK3IgogCiBtc2dpZCAiRTM5MzogZ3JvdXBbdF1oZXJlIG5vdCBhY2NlcHRlZCBoZXJlIgogbXNnc3RyICJFMzkzOiCCsYKxgsWCzYNPg4uBW4N2gs2LlonCgrOC6oLcgrmC8SIKQEAgLTUzOTEsMTIgKzU1NTcsMTkgQEAKIG1zZ2lkICJFNDMzOiBObyB0YWdzIGZpbGUiCiBtc2dzdHIgIkU0MzM6IINeg0+DdINAg0ODi4KqgqCC6ILcgrmC8SIKIAorbXNnaWQgIklnbm9yaW5nIGxvbmcgbGluZSBpbiB0YWdzIGZpbGUiCittc2dzdHIgIoNeg0+DdINAg0ODi5PggsySt4KijXOC8JazjouCtYLcgrciCisKIG1zZ2lkICJFNDM0OiBDYW4ndCBmaW5kIHRhZyBwYXR0ZXJuIgogbXNnc3RyICJFNDM0OiCDXoNPg3CDXoFbg5OC8ILdgsKCr4LnguqC3IK5gvEiCiAKIG1zZ2lkICJFNDM1OiBDb3VsZG4ndCBmaW5kIHRhZywganVzdCBndWVzc2luZyEiCiBtc2dzdHIgIkU0MzU6IINeg0+C8ILdgsKCr4LnguqCyIKigsyCxZJQgsmQhJGqgrWC3IK3ISIKIAorIywgYy1mb3JtYXQKK21zZ2lkICJEdXBsaWNhdGUgZmllbGQgbmFtZTogJXMiCittc2dzdHIgIo9klaGCtYK9g3SDQoFbg4uDaJa8OiAlcyIKKwogbXNnaWQgIicgbm90IGtub3duLiBBdmFpbGFibGUgYnVpbHRpbiB0ZXJtaW5hbHMgYXJlOiIKIG1zZ3N0ciAiJyCCzZaikm2CxYK3LiCMu41zgsyRZ4LdjZ6C3ZJblpaCzY6fgsyCxoKoguiCxYK3OiIKIApAQCAtNTQzMywxMCArNTYwNiw4NyBAQAogbXNnaWQgIlZpbTogRXJyb3IgcmVhZGluZyBpbnB1dCwgZXhpdGluZy4uLlxuIgogbXNnc3RyICJWaW06IJP8l82C8JPHjZ6C3ZKGgsyDR4OJgVuCyYLmguiPSZe5grWC3IK3Li4uXG4iCiAKK21zZ2lkICJVc2VkIENVVF9CVUZGRVIwIGluc3RlYWQgb2YgZW1wdHkgc2VsZWN0aW9uIgorbXNnc3RyICKL84LMkUmR8JfMiOaCzIKpgu2C6ILJQ1VUX0JVRkZFUjCCqo5nl3CCs4LqgtyCtYK9IgorCisjLiBUaGlzIGhhcHBlbnMgd2hlbiB0aGUgRmlsZUNoYW5nZWRSTyBhdXRvY29tbWFuZCBjaGFuZ2VzIHRoZQorIy4gKiBmaWxlIGluIGEgd2F5IGl0IGJlY29tZXMgc2hvcnRlci4KK21zZ2lkICJFODM0OiBMaW5lIGNvdW50IGNoYW5nZWQgdW5leHBlY3RlZGx5IgorbXNnc3RyICJFODM0OiCXXFyK+oK5griNc4NKg0WDk4NngqqVz4LtguiC3IK1gr0iCisKICMuIG11c3QgZGlzcGxheSB0aGUgcHJvbXB0CiBtc2dpZCAiTm8gdW5kbyBwb3NzaWJsZTsgY29udGludWUgYW55d2F5IgogbXNnc3RyICKJwpRcXILIg0GDk4Nog0SCzYKgguiC3IK5gvE6IILGguiCoIKmgriRsYKvgtyCtyIKIAorIywgYy1mb3JtYXQKK21zZ2lkICJFODI4OiBDYW5ub3Qgb3BlbiB1bmRvIGZpbGUgZm9yIHdyaXRpbmc6ICVzIgorbXNnc3RyICJFODI4OiCPkY2egt2XcILJg0GDk4Nog0SDdINAg0ODi4LwikqCr4LcgrmC8TogJXMiCisKKyMsIGMtZm9ybWF0Cittc2dpZCAiRTgyNTogQ29ycnVwdGVkIHVuZG8gZmlsZSAoJXMpOiAlcyIKK21zZ3N0ciAiRTgyNTogg0GDk4Nog0SDdINAg0ODi4KqifOC6oLEgqKC3IK3ICglcyk6ICVzIgorCittc2dpZCAiQ2Fubm90IHdyaXRlIHVuZG8gZmlsZSBpbiBhbnkgZGlyZWN0b3J5IGluICd1bmRvZGlyJyIKK21zZ3N0ciAiJ3VuZG9kaXIngsyDZoNCg4yDToNng4qCyYNBg5ODaINEg3SDQINDg4uC8I+RgquNnoLfgtyCuYLxIgorCisjLCBjLWZvcm1hdAorbXNnaWQgIldpbGwgbm90IG92ZXJ3cml0ZSB3aXRoIHVuZG8gZmlsZSwgY2Fubm90IHJlYWQ6ICVzIgorbXNnc3RyICKDQYOTg2iDRIN0g0CDQ4OLgsaCtYLEk8eC3Y2egt+CyIKigsyCxY/jj5GCq4K1gtyCuYLxOiAlcyIKKworIywgYy1mb3JtYXQKK21zZ2lkICJXaWxsIG5vdCBvdmVyd3JpdGUsIHRoaXMgaXMgbm90IGFuIHVuZG8gZmlsZTogJXMiCittc2dzdHIgIoNBg5ODaINEg3SDQINDg4uCxYLNgsiCooLMgsWP44+RgquCtYLcgrmC8TogJXMiCisKK21zZ2lkICJTa2lwcGluZyB1bmRvIGZpbGUgd3JpdGUsIG5vdGhpbmcgdG8gdW5kbyIKK21zZ3N0ciAikc6P24KqgsiCooLMgsWDQYOTg2iDRIN0g0CDQ4OLgsyPkYKrjZ6C3YLwg1iDTINig3aCtYLcgrciCisKKyMsIGMtZm9ybWF0Cittc2dpZCAiV3JpdGluZyB1bmRvIGZpbGU6ICVzIgorbXNnc3RyICKDQYOTg2iDRIN0g0CDQ4OLj5GCq42egt2ShjogJXMiCisKKyMsIGMtZm9ybWF0Cittc2dpZCAiRTgyOTogd3JpdGUgZXJyb3IgaW4gdW5kbyBmaWxlOiAlcyIKK21zZ3N0ciAiRTgyOTogg0GDk4Nog0SDdINAg0ODi4LMj5GCq42egt2DR4OJgVuCxYK3OiAlcyIKKworIywgYy1mb3JtYXQKK21zZ2lkICJOb3QgcmVhZGluZyB1bmRvIGZpbGUsIG93bmVyIGRpZmZlcnM6ICVzIgorbXNnc3RyICKDSYFbg2mBW4KqiNmCyILpgsyCxYNBg5ODaINEg3SDQINDg4uC8JPHgt2NnoLdgtyCuYLxOiAlcyIKKworIywgYy1mb3JtYXQKK21zZ2lkICJSZWFkaW5nIHVuZG8gZmlsZTogJXMiCittc2dzdHIgIoNBg5ODaINEg3SDQINDg4uTx42ekoY6ICVzIgorCisjLCBjLWZvcm1hdAorbXNnaWQgIkU4MjI6IENhbm5vdCBvcGVuIHVuZG8gZmlsZSBmb3IgcmVhZGluZzogJXMiCittc2dzdHIgIkU4MjI6IINBg5ODaINEg3SDQINDg4uC8JPHjZ6XcILGgrWCxIpKgq+C3IK5gvE6ICVzIgorCisjLCBjLWZvcm1hdAorbXNnaWQgIkU4MjM6IE5vdCBhbiB1bmRvIGZpbGU6ICVzIgorbXNnc3RyICJFODIzOiCDQYOTg2iDRIN0g0CDQ4OLgsWCzYKgguiC3IK5gvE6ICVzIgorCisjLCBjLWZvcm1hdAorbXNnaWQgIkU4MzI6IE5vbi1lbmNyeXB0ZWQgZmlsZSBoYXMgZW5jcnlwdGVkIHVuZG8gZmlsZTogJXMiCittc2dzdHIgIkU4MzI6IJTxiMONhom7g3SDQINDg4uCqojDjYaJu4KzguqCvYNBg5ODaINEg3SDQINDg4uC8I5ngsGCxILcgrc6ICVzIgorCisjLCBjLWZvcm1hdAorbXNnaWQgIkU4MjY6IFVuZG8gZmlsZSBkZWNyeXB0aW9uIGZhaWxlZDogJXMiCittc2dzdHIgIkU4MjY6IIjDjYaJu4KzguqCvYNBg5ODaINEg3SDQINDg4uCzInwk8eCyY64lHOCtYLcgrWCvTogJXMiCisKKyMsIGMtZm9ybWF0Cittc2dpZCAiRTgyNzogVW5kbyBmaWxlIGlzIGVuY3J5cHRlZDogJXMiCittc2dzdHIgIkU4Mjc6IINBg5ODaINEg3SDQINDg4uCqojDjYaJu4KzguqCxIKigtyCtzogJXMiCisKKyMsIGMtZm9ybWF0Cittc2dpZCAiRTgyNDogSW5jb21wYXRpYmxlIHVuZG8gZmlsZTogJXMiCittc2dzdHIgIkU4MjQ6IIzdireQq4LMlrOCooNBg5ODaINEg3SDQINDg4uCxYK3OiAlcyIKKworbXNnaWQgIkZpbGUgY29udGVudHMgY2hhbmdlZCwgY2Fubm90IHVzZSB1bmRvIGluZm8iCittc2dzdHIgIoN0g0CDQ4OLgsyT4JdlgqqVz4LtgsGCxIKigumCvYLfgUGDQYOTg2iDRI/ulfGC8JeYl3CCxYKrgtyCuYLxIgorCisjLCBjLWZvcm1hdAorbXNnaWQgIkZpbmlzaGVkIHJlYWRpbmcgdW5kbyBmaWxlICVzIgorbXNnc3RyICKDQYOTg2iDRIN0g0CDQ4OLICVzIILMjuaNnoLwiq6XuSIKKwogbXNnaWQgIkFscmVhZHkgYXQgb2xkZXN0IGNoYW5nZSIKIG1zZ3N0ciAiivmCyYjqlNSMw4Kilc+NWILFgrciCiAKQEAgLTU0NDQsOCArNTY5NCw4IEBACiBtc2dzdHIgIor5gsmI6pTUkFaCtYKilc+NWILFgrciCiAKICMsIGMtZm9ybWF0Ci1tc2dpZCAiVW5kbyBudW1iZXIgJWxkIG5vdCBmb3VuZCIKLW1zZ3N0ciAig0GDk4Nog0SU1I2GICVsZCCCqoLdgsKCqYLogtyCuYLxIgorbXNnaWQgIkU4MzA6IFVuZG8gbnVtYmVyICVsZCBub3QgZm91bmQiCittc2dzdHIgIkU4MzA6IINBg5ODaINElNSNhiAlbGQggs2C3YLCgqmC6ILcgrmC8SIKIAogbXNnaWQgIkU0Mzg6IHVfdW5kbzogbGluZSBudW1iZXJzIHdyb25nIgogbXNnc3RyICJFNDM4OiB1X3VuZG86II1zlNSNhoKqitSI4YLBgsSCooLcgrciCkBAIC01NDgxLDggKzU3MzEsOCBAQAogbXNnaWQgIk5vdGhpbmcgdG8gdW5kbyIKIG1zZ3N0ciAig0GDk4Nog0SRzo/bgqqCoILogtyCuYLxIgogCi1tc2dpZCAibnVtYmVyIGNoYW5nZXMgIHRpbWUiCi1tc2dzdHIgIpTUjYYgICCVz41YICAgICCOno2PIgorbXNnaWQgIm51bWJlciBjaGFuZ2VzICB3aGVuICAgICAgICAgICAgICAgc2F2ZWQiCittc2dzdHIgIpLKlNQgICCVz41YkJQgICCVz41Yjp6K+iAgICAgICAgICAglduRto3PIgogCiAjLCBjLWZvcm1hdAogbXNnaWQgIiVsZCBzZWNvbmRzIGFnbyIKQEAgLTU1MjcsNiArNTc3NywxMyBAQAogCiBtc2dpZCAiIgogIlxuIgorIk1TLVdpbmRvd3MgNjQtYml0IGNvbnNvbGUgdmVyc2lvbiIKK21zZ3N0ciAiIgorIlxuIgorIk1TLVdpbmRvd3MgNjQgg3KDYoNnIINSg5ODXFyBW4OLIJTFIgorCittc2dpZCAiIgorIlxuIgogIk1TLVdpbmRvd3MgMzItYml0IGNvbnNvbGUgdmVyc2lvbiIKIG1zZ3N0ciAiIgogIlxuIgpAQCAtNTU4MywxMSArNTg0MCwyNSBAQAogCiBtc2dpZCAiIgogIlxuIgorIk9wZW5WTVMgdmVyc2lvbiIKK21zZ3N0ciAiIgorIlxuIgorIk9wZW5WTVMglMUiCisKK21zZ2lkICIiCisiXG4iCiAiSW5jbHVkZWQgcGF0Y2hlczogIgogbXNnc3RyICIiCiAiXG4iCiAik0uXcI3Pg3CDYoNgOiAiCiAKK21zZ2lkICIiCisiXG4iCisiRXh0cmEgcGF0Y2hlczogIgorbXNnc3RyICIiCisiXG4iCisikseJwYpnkqODcINig2A6ICIKKwogbXNnaWQgIk1vZGlmaWVkIGJ5ICIKIG1zZ3N0ciAiTW9kaWZpZWQgYnkgIgogCkBAIC01NjQyLDE1ICs1OTEzLDkgQEAKIG1zZ2lkICJ3aXRoIEdUSzItR05PTUUgR1VJLiIKIG1zZ3N0ciAid2l0aCBHVEsyLUdOT01FIEdVSS4iCiAKLW1zZ2lkICJ3aXRoIEdUSy1HTk9NRSBHVUkuIgotbXNnc3RyICJ3aXRoIEdUSy1HTk9NRSBHVUkuIgotCiBtc2dpZCAid2l0aCBHVEsyIEdVSS4iCiBtc2dzdHIgIndpdGggR1RLMiBHVUkuIgogCi1tc2dpZCAid2l0aCBHVEsgR1VJLiIKLW1zZ3N0ciAid2l0aCBHVEsgR1VJLiIKLQogbXNnaWQgIndpdGggWDExLU1vdGlmIEdVSS4iCiBtc2dzdHIgIndpdGggWDExLU1vdGlmIEdVSS4iCiAKQEAgLTU4MTksNiArNjA4NCwxMiBAQAogbXNnaWQgIkU0NDQ6IENhbm5vdCBjbG9zZSBsYXN0IHdpbmRvdyIKIG1zZ3N0ciAiRTQ0NDogjcWM44LMg0WDQoOTg2iDRYLwlcKCtoLpgrGCxoLNgsWCq4LcgrmC8SIKIAorbXNnaWQgIkU4MTM6IENhbm5vdCBjbG9zZSBhdXRvY21kIHdpbmRvdyIKK21zZ3N0ciAiRTgxMzogYXV0b2NtZINFg0KDk4Nog0WCzZXCgraC54LqgtyCuYLxIgorCittc2dpZCAiRTgxNDogQ2Fubm90IGNsb3NlIHdpbmRvdywgb25seSBhdXRvY21kIHdpbmRvdyB3b3VsZCByZW1haW4iCittc2dzdHIgIkU4MTQ6IGF1dG9jbWSDRYNCg5ODaINFgrWCqY5jgueCyIKigr2C34FBg0WDQoOTg2iDRYLNlcKCtoLnguqC3IK5gvEiCisKIG1zZ2lkICJFNDQ1OiBPdGhlciB3aW5kb3cgY29udGFpbnMgY2hhbmdlcyIKIG1zZ3N0ciAiRTQ0NTogkbyCzINFg0KDk4Nog0WCyYLNlc+NWIKqgqCC6ILcgrciCiAKQEAgLTU4MjksMTkgKzYxMDAsNiBAQAogbXNnaWQgIkU0NDc6IENhbid0IGZpbmQgZmlsZSBcIiVzXCIgaW4gcGF0aCIKIG1zZ3N0ciAiRTQ0NzogcGF0aILJgs0gXCIlc1wiIILGgqKCpIN0g0CDQ4OLgqqCoILogtyCuYLxIgogCi0jLCBjLWZvcm1hdAotbXNnaWQgIkUzNzA6IENvdWxkIG5vdCBsb2FkIGxpYnJhcnkgJXMiCi1tc2dzdHIgIkUzNzA6IIOJg0ODdYOJg4ogJXMggvCDjYFbg2iCxYKrgtyCuYLxgsWCtYK9IgotCi1tc2dpZCAiU29ycnksIHRoaXMgY29tbWFuZCBpcyBkaXNhYmxlZDogdGhlIFBlcmwgbGlicmFyeSBjb3VsZCBub3QgYmUgbG9hZGVkLiIKLW1zZ3N0ciAiIgotIoKxgsyDUoN9g5ODaILNlrOM+ILFgrcsIIKygt+C8YLIgrOCojogUGVybIOJg0ODdYOJg4qC8IONgVuDaILFgquC3IK5gvGCxYK1gr0uIgotCi1tc2dpZCAiRTI5OTogUGVybCBldmFsdWF0aW9uIGZvcmJpZGRlbiBpbiBzYW5kYm94IHdpdGhvdXQgdGhlIFNhZmUgbW9kdWxlIgotbXNnc3RyICIiCi0iRTI5OTogg1SDk4Nog3uDYoNOg1iCxYLNIFNhZmUgg4KDV4OFgVuDi4LwjmeXcIK1gsiColBlcmyDWINOg4qDdoNngs2L1oK2gueC6iIKLSKCxIKigtyCtyIKLQogbXNnaWQgIkVkaXQgd2l0aCAmbXVsdGlwbGUgVmltcyIKIG1zZ3N0ciAilaGQlILMVmltgsWV0o9XgreC6SAoJk0pIgogCkBAIC02MjEwLDMgKzY0NjgsNDMgQEAKIAogbXNnaWQgInNlYXJjaCBoaXQgQk9UVE9NLCBjb250aW51aW5nIGF0IFRPUCIKIG1zZ3N0ciAiibqC3ILFjJ+N9YK1gr2CzILFj+OCyZbfguiC3IK3IgorCisjLCBjLWZvcm1hdAorbXNnaWQgIk5lZWQgZW5jcnlwdGlvbiBrZXkgZm9yIFwiJXNcIiIKK21zZ3N0ciAiiMONhoNMgVuCqpVLl3aCxYK3OiBcIiVzXCIiCisKK21zZ2lkICJ3cml0ZWxpbmVzKCkgcmVxdWlyZXMgbGlzdCBvZiBzdHJpbmdzIgorbXNnc3RyICJ3cml0ZWxpbmVzKCkggs2Vto6al/GCzJR6l/GC8Jd2i4GCtYLcgrciCisKK21zZ2lkICJFMjY0OiBQeXRob246IEVycm9yIGluaXRpYWxpc2luZyBJL08gb2JqZWN0cyIKK21zZ3N0ciAiRTI2NDogUHl0aG9uOiBJL0+DSYN1g1eDRoNOg2eCzI+JivqJu4NHg4mBWyIKKworbXNnaWQgIm5vIHN1Y2ggYnVmZmVyIgorbXNnc3RyICKCu4LMguaCpILIg2+DYoN0g0CCzYKgguiC3IK5gvEiCisKK21zZ2lkICJhdHRlbXB0IHRvIHJlZmVyIHRvIGRlbGV0ZWQgd2luZG93IgorbXNnc3RyICKN7Y+cgrOC6oK9g0WDQoOTg2iDRYLwjlGPxoK1guaCpILGgrWC3IK1gr0iCisKK21zZ2lkICJyZWFkb25seSBhdHRyaWJ1dGUiCittc2dzdHIgIpPHjZ6Q6pdwka6QqyIKKworbXNnaWQgImN1cnNvciBwb3NpdGlvbiBvdXRzaWRlIGJ1ZmZlciIKK21zZ3N0ciAig0qBW4NcXIOLgqqDb4Nig3SDQILMik+CyYKgguiC3IK3IgorCisjLCBjLWZvcm1hdAorbXNnaWQgIjx3aW5kb3cgb2JqZWN0IChkZWxldGVkKSBhdCAlcD4iCittc2dzdHIgIjyDRYNCg5ODaINFg0mDdYNXg0aDToNnICiPwYuOjc8pICVwPiIKKworIywgYy1mb3JtYXQKK21zZ2lkICI8d2luZG93IG9iamVjdCAodW5rbm93bikgYXQgJXA+IgorbXNnc3RyICI8g0WDQoOTg2iDRYNJg3WDV4NGg06DZyAolqKSbSkgJXA+IgorCisjLCBjLWZvcm1hdAorbXNnaWQgIjx3aW5kb3cgJWQ+IgorbXNnc3RyICI8g0WDQoOTg2iDRSAlZD4iCisKK21zZ2lkICJubyBzdWNoIHdpbmRvdyIKK21zZ3N0ciAigruCzILmgqSCyINFg0KDk4Nog0WCzYKgguiC3IK5gvEiCisKK21zZ2lkICJhdHRlbXB0IHRvIHJlZmVyIHRvIGRlbGV0ZWQgYnVmZmVyIgorbXNnc3RyICKPwYKzguqCvYNvg2KDdINAgqqOUY/GgrOC6oLcgrWCvSIK