ICAgICAgICAgICAgICAgICAgICAgICAgICAgLS0tLS0tLS0tLS0tLS0tLS0tLQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIQVByb3h5CiAgICAgICAgICAgICAgICAgICAgICAgICAgIE1hbnVlbCBkZSBy6WbpcmVuY2UKICAgICAgICAgICAgICAgICAgICAgICAgICAgLS0tLS0tLS0tLS0tLS0tLS0tLQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZXJzaW9uIDEuMi4xNAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWxseSB0YXJyZWF1CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMjAwNi8wNS8yMQoKPT09PT09PT09PT09PT09PQp8IEludHJvZHVjdGlvbiB8Cj09PT09PT09PT09PT09PT0KCkhBUHJveHkgZXN0IHVuIHJlbGFpcyBUQ1AvSFRUUCBvZmZyYW50IGRlcyBmYWNpbGl06XMgZCdpbnTpZ3JhdGlvbiBlbgplbnZpcm9ubmVtZW50IGhhdXRlbWVudCBkaXNwb25pYmxlLiBFbiBlZmZldCwgaWwgZXN0IGNhcGFibGUgZGUgOgogIC0gZWZmZWN0dWVyIHVuIGFpZ3VpbGxhZ2Ugc3RhdGlxdWUgZOlmaW5pIHBhciBkZXMgY29va2llcyA7CiAgLSBlZmZlY3R1ZXIgdW5lIHLpcGFydGl0aW9uIGRlIGNoYXJnZSBhdmVjIGNy6WF0aW9uIGRlIGNvb2tpZXMgcG91ciBhc3N1cmVyCiAgICBsYSBwZXJzaXN0ZW5jZSBkZSBzZXNzaW9uIDsgCiAgLSBmb3VybmlyIHVuZSB2aXNpYmlsaXTpIGV4dGVybmUgZGUgc29uIOl0YXQgZGUgc2FudOkgOwogIC0gcydhcnLqdGVyIGVuIGRvdWNldXIgc2FucyBwZXJ0ZSBicnV0YWxlIGRlIHNlcnZpY2UgOwogIC0gbW9kaWZpZXIvYWpvdXRlci9zdXBwcmltZXIgZGVzIGVuLXTqdGVzIGRhbnMgbGEgcmVxdep0ZSBldCBsYSBy6XBvbnNlIDsKICAtIGludGVyZGlyZSBkZXMgcmVxdep0ZXMgcXVpIHbpcmlmaWVudCBjZXJ0YWluZXMgY29uZGl0aW9ucyA7CiAgLSB1dGlsaXNlciBkZXMgc2VydmV1cnMgZGUgc2Vjb3VycyBsb3JzcXVlIGxlcyBzZXJ2ZXVycyBwcmluY2lwYXV4IHNvbnQgaG9ycwogICAgZCd1c2FnZS4KICAtIG1haW50ZW5pciBkZXMgY2xpZW50cyBzdXIgbGUgYm9uIHNlcnZldXIgc2VydmV1ciBkJ2FwcGxpY2F0aW9uIGVuIGZvbmN0aW9uCiAgICBkZSBjb29raWVzIGFwcGxpY2F0aWZzLgogIC0gZm91cm5pciBkZXMgcmFwcG9ydHMgZCfpdGF0IGVuIEhUTUwg4CBkZXMgdXRpbGlzYXRldXJzIGF1dGhlbnRpZmnpcywg4AogICAgdHJhdmVycyBkZXMgVVJJIGRlIGwnYXBwbGljYXRpb24gaW50ZXJjZXB06WVzLgoKSWwgcmVxdWllcnQgcGV1IGRlIHJlc3NvdXJjZXMsIGV0IHNvbiBhcmNoaXRlY3R1cmUg6XbpbmVtZW50aWVsbGUgbW9uby0KcHJvY2Vzc3VzIGx1aSBwZXJtZXQgZmFjaWxlbWVudCBkZSBn6XJlciBwbHVzaWV1cnMgbWlsbGllcnMgZGUgY29ubmV4aW9ucwpzaW11bHRhbullcyBzdXIgcGx1c2lldXJzIHJlbGFpcyBzYW5zIGVmZm9uZHJlciBsZSBzeXN06G1lLgoKCj09PT09PT09PT09PT09PT09PT09PT09PT09PQp8IFBhcmFt6HRyZXMgZGUgbGFuY2VtZW50IHwKPT09PT09PT09PT09PT09PT09PT09PT09PT09CgpMZXMgb3B0aW9ucyBkZSBsYW5jZW1lbnQgc29udCBwZXUgbm9tYnJldXNlcyA6CgogICAgLWYgPGZpY2hpZXIgZGUgY29uZmlndXJhdGlvbj4KICAgIC1uIDxub21icmUgbWF4aW1hbCB0b3RhbCBkZSBjb25uZXhpb25zIHNpbXVsdGFu6WVzPgogICAgICAgPSAnbWF4Y29ubicgZGFucyBsYSBzZWN0aW9uICdnbG9iYWwnCiAgICAtTiA8bm9tYnJlIG1heGltYWwgZGUgY29ubmV4aW9ucyBzaW11bHRhbullcyBwYXIgaW5zdGFuY2U+CiAgICAgICA9ICdtYXhjb25uJyBkYW5zIGxlcyBzZWN0aW9ucyAnbGlzdGVuJyBvdSAnZGVmYXVsdCcKICAgIC1kIGFjdGl2ZSBsZSBtb2RlIGRlYnVnCiAgICAtRCBwYXNzZSBlbiBkYWVtb24KICAgIC1xIGTpc2FjdGl2ZSBsJ2FmZmljaGFnZSBkZSBtZXNzYWdlcyBzdXIgbGEgc29ydGllIHN0YW5kYXJkLgogICAgLVYgYWZmaWNoZSBsZXMgbWVzc2FnZXMgc3VyIGxhIHNvcnRpZSBzdGFuZGFyZCwgbeptZSBzaSAtcSBvdSAncXVpZXQnIHNvbnQKICAgICAgIHNw6WNpZmnpcy4KICAgIC1jIHbpcmlmaWUgbGUgZmljaGllciBkZSBjb25maWd1cmF0aW9uIHB1aXMgcXVpdHRlIGF2ZWMgdW4gY29kZSBkZSByZXRvdXIgMAogICAgICAgc2kgYXVjdW5lIGVycmV1ciBuJ2Eg6XTpIHRyb3V26WUsIG91IDEgc2kgdW5lIGVycmV1ciBkZSBzeW50YXhlIGEg6XTpCiAgICAgICBk6XRlY3TpZS4KICAgIC1wIDxmaWNoaWVyPiBpbmRpcXVlIGF1IHByb2Nlc3N1cyBw6HJlIHF1J2lsIGRvaXQg6WNyaXJlIGxlcyBQSURzIGRlIHNlcwogICAgICAgZmlscyBkYW5zIGNlIGZpY2hpZXIgZW4gbW9kZSBk6W1vbi4KICAgIC1zZiBzcGVjaWZpZSB1bmUgbGlzdGUgZGUgUElEcyBhdXhxdWVscyBlbnZveWVyIHVuIHNpZ25hbCBGSU5JU0gKICAgIC1zdCBzcGVjaWZpZSB1bmUgbGlzdGUgZGUgUElEcyBhdXhxdWVscyBlbnZveWVyIHVuIHNpZ25hbCBURVJNSU5BVEUKICAgIC1zIGFmZmljaGUgbGVzIHN0YXRpc3RpcXVlcyAoc2kgb3B0aW9uIGNvbXBpbOllKQogICAgLWwgYWpvdXRlIGRlcyBpbmZvcm1hdGlvbnMgYXV4IHN0YXRpc3RpcXVlcwogICAgLWRlIGTpc2FjdGl2ZSBsJ3V0aWxpc2F0aW9uIGRlIGVwb2xsKCkKICAgIC1kcCBk6XNhY3RpdmUgbCd1dGlsaXNhdGlvbiBkZSBwb2xsKCkKICAgIC1kYiBk6XNhY3RpdmUgbGEgbWlzZSBlbiBhcnJp6HJlLXBsYW4gKHV0aWxlIHBvdXIgZOlidWdnZXIpCiAgICAtbSA8bWVncz4gYXBwbGlxdWUgdW5lIGxpbWl0YXRpb24gZGUgPG1lZ3M+IE1vIGQndXRpbGlzYXRpb24gbeltb2lyZQoKTGUgbm9tYnJlIG1heGltYWwgZGUgY29ubmV4aW9uIHNpbXVsdGFu6WVzIHBhciBwcm94eSBlc3QgbGUgcGFyYW3odHJlIHBhcgpk6WZhdXQgcG91ciBsZXMgcHJveGllcyBwb3VyIGxlc3F1ZWxzIGNlIHBhcmFt6HRyZSBuJ2VzdCBwYXMgcHLpY2lz6SBkYW5zIGxlCmZpY2hpZXIgZGUgY29uZmlndXJhdGlvbi4gSWwgcydhZ2l0IGR1IHBhcmFt6HRyZSAnbWF4Y29ubicgZGFucyBsZXMgc2VjdGlvbnMKJ2xpc3RlbicuCgpMZSBub21icmUgbWF4aW1hbCB0b3RhbCBkZSBjb25uZXhpb25zIHNpbXVsdGFu6WVzIGxpbWl0ZSBsZSBub21icmUgZGUKY29ubmV4aW9ucyBUQ1AgdXRpbGlzYWJsZXMg4CB1biBpbnN0YW50IGRvbm7pIHBhciBsZSBwcm9jZXNzdXMsIHRvdXMgcHJveGllcwpjb25mb25kdXMuIENlIHBhcmFt6HRyZSByZW1wbGFjZSBsZSBwYXJhbeh0cmUgJ21heGNvbm4nIGRlIGxhIHNlY3Rpb24gJ2dsb2JhbCcuCgpMZSBtb2RlIGRlYnVnIGNvcnJlc3BvbmQg4CBsJ29wdGlvbiAnZGVidWcnIGRlIGxhIHNlY3Rpb24gJ2dsb2JhbCcuIERhbnMgY2UKbW9kZSwgdG91dGVzIGxlcyBjb25uZXhpb25zLCBk6WNvbm5leGlvbnMsIGV0IHRvdXMgbGVzIOljaGFuZ2VzIGQnZW4tdOp0ZXMgSFRUUApzb250IGFmZmljaOlzLgoKUG91ciBkZWJ1Z2dlciwgbCdvcHRpb24gJy1kYicgZXN0IHRy6HMgcHJhdGlxdWUgY2FyIGVsbGUgZOlzYWN0aXZlCnRlbXBvcmFpcmVtZW50IGxlIG1vZGUgZGFlbW9uIGV0IGxlIG1vZGUgbXVsdGktcHJvY2Vzc3VzLiBMZSBzZXJ2aWNlIHBldXQgYWxvcnMK6nRyZSBhcnLqdOkgcGFyIHVuIHNpbXBsZSBhcHB1aSBzdXIgQ3RybC1DLCBzYW5zIGF2b2lyIOAgbW9kaWZpZXIgbGEKY29uZmlndXJhdGlvbiBuaSDgIGFjdGl2ZXIgbGUgbW9kZSBkZWJ1ZyBjb21wbGV0LgoKTGVzIHN0YXRpc3RpcXVlcyBuZSBzb250IGRpc3BvbmlibGVzIHF1ZSBzaSBsZSBwcm9ncmFtbWUgYSDpdOkgY29tcGls6SBhdmVjCmwnb3B0aW9uICJTVEFUVElNRSIuIElsIHMnYWdpdCBwcmluY2lwYWxlbWVudCBkZSBkb25u6WVzIGJydXRlcyBuJ2F5YW50CmQndXRpbGl06SBxdWUgbG9ycyBkZSBiZW5jaG1hcmtzIHBhciBleGVtcGxlLCBldCBzb250IGFtZW7pZXMg4CBkaXNwYXJhaXRyZS4KCkxlcyBwYXJhbeh0cmVzICctc3QnIGV0ICctc2YnIHNvbnQgdXRpbGlz6XMgcG91ciBsYSByZWNvbmZpZ3VyYXRpb24g4CBjaGF1ZC4KVm9pciBsYSBzZWN0aW9uIOAgY2Ugc3VqZXQuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09CnwgRmljaGllciBkZSBjb25maWd1cmF0aW9uIHwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PQoKU3RydWN0dXJlCj09PT09PT09PQoKTCdhbmFseXNldXIgZHUgZmljaGllciBkZSBjb25maWd1cmF0aW9uIGlnbm9yZSBkZXMgbGlnbmVzIHZpZGVzLCBsZXMgZXNwYWNlcywKbGVzIHRhYnVsYXRpb25zLCBldCB0b3V0IGNlIHF1aSBlc3QgY29tcHJpcyBlbnRyZSBsZSBzeW1ib2xlICcjJyAocydpbCBuJ2VzdApwYXMgcHLpY+lk6SBkJ3VuICdcJyksIGV0IGxhIGZpbiBkZSBsYSBsaWduZSwgY2UgcXVpIGNvbnN0aXR1ZSB1biBjb21tZW50YWlyZS4KCkxlIGZpY2hpZXIgZGUgY29uZmlndXJhdGlvbiBlc3QgZOljb3Vw6SBlbiBzZWN0aW9ucyBy6XDpcullcyBwYXIgZGVzIG1vdHMgY2zpcwp0ZWxzIHF1ZSA6CgogIC0gJ2dsb2JhbCcKICAtICdsaXN0ZW4nCiAgLSAnZGVmYXVsdHMnCgpUb3VzIGxlcyBwYXJhbeh0cmVzIGZvbnQgculm6XJlbmNlIOAgbGEgc2VjdGlvbiBk6WZpbmllIHBhciBsZSBkZXJuaWVyIG1vdCBjbOkKcmVjb25udS4KCgoxKSBQYXJhbeh0cmVzIGdsb2JhdXgKPT09PT09PT09PT09PT09PT09PT09CgpJbCBzJ2FnaXQgZGVzIHBhcmFt6HRyZXMgYWdpc3NhbnQgc3VyIGxlIHByb2Nlc3N1cywgb3UgYmllbiBzdXIgbCdlbnNlbWJsZSBkZXMKcHJveGllcy4gSWxzIHNvbnQgdG91cyBzcOljaWZp6XMgZGFucyBsYSBzZWN0aW9uICdnbG9iYWwnLiBMZXMgcGFyYW3odHJlcwpzdXBwb3J06XMgc29udCA6CgogIC0gbG9nIDxhZHJlc3NlPiA8Y2F06WdvcmllPiBbbml2ZWF1X21heF0KICAtIG1heGNvbm4gPG5vbWJyZT4KICAtIHVpZCA8aWRlbnRpZmlhbnQ+CiAgLSBnaWQgPGlkZW50aWZpYW50PgogIC0gY2hyb290IDxy6XBlcnRvaXJlPgogIC0gbmJwcm9jIDxub21icmU+CiAgLSBkYWVtb24KICAtIGRlYnVnCiAgLSBub2Vwb2xsCiAgLSBub3BvbGwKICAtIHF1aWV0CiAgLSBwaWRmaWxlIDxmaWNoaWVyPgogIC0gdWxpbWl0LW4gPG5vbWJyZT4KCgoxLjEpIEpvdXJuYWxpc2F0aW9uIGRlcyDpduluZW1lbnRzCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KTGEgcGx1cGFydCBkZXMg6XbpbmVtZW50cyBzb250IGpvdXJuYWxpc+lzIDogZOltYXJyYWdlcywgYXJy6nRzLCBkaXNwYXJpdGlvbiBldAphcHBhcml0aW9uIGRlIHNlcnZldXJzLCBjb25uZXhpb25zLCBlcnJldXJzLiBUb3VzIGxlcyBtZXNzYWdlcyBzb250IGVudm956XMgZW4Kc3lzbG9nIHZlcnMgdW4gb3UgZGV1eCBzZXJ2ZXVycy4gTGEgc3ludGF4ZSBlc3QgbGEgc3VpdmFudGUgOgoKICAgIGxvZyA8YWRyZXNzZV9pcD4gPGNhdOlnb3JpZT4gW25pdmVhdV9tYXhdCgpMZXMgY29ubmV4aW9ucyBzb250IGVudm956WVzIGVuIG5pdmVhdSAiaW5mbyIuIExlcyBk6W1hcnJhZ2VzIGRlIHNlcnZpY2UgZXQgZGUKc2VydmV1cnMgc2Vyb250IGVudm956XMgZW4gIm5vdGljZSIsIGxlcyBzaWduYXV4IGQnYXJy6nRzIGVuICJ3YXJuaW5nIiBldCBsZXMKYXJy6nRzIGTpZmluaXRpZnMgZGUgc2VydmljZXMgZXQgZGUgc2VydmV1cnMgZW4gImFsZXJ0Ii4gQ2VjaSBlc3QgdmFsYWJsZSBhdXNzaQpiaWVuIHBvdXIgbGVzIHByb3hpZXMgcXVlIHBvdXIgbGVzIHNlcnZldXJzIHRlc3TpcyBwYXIgbGVzIHByb3hpZXMuIExlCnBhcmFt6HRyZSBvcHRpb25uZWwgPG5pdmVhdV9tYXg+IGTpZmluaXQgbGUgbml2ZWF1IG1heGltYWwgZGUgdHJhY2VzIOltaXNlcwpwYXJtaSBsZXMgOCB2YWxldXJzIHN1aXZhbnRlcyAgOgogICAgZW1lcmcsIGFsZXJ0LCBjcml0LCBlcnIsIHdhcm5pbmcsIG5vdGljZSwgaW5mbywgZGVidWcKClBhciBjb21wYXRpYmlsaXTpIGF2ZWMgbGVzIHZlcnNpb25zIDEuMS4xNiBldCBhbnTpcmlldXJlcywgbGEgdmFsZXVyIHBhciBk6WZhdXQKZXN0ICJkZWJ1ZyIgc2kgbCdvcHRpb24gbidlc3QgcGFzIHBy6WNpc+llLgoKTGVzIGNhdOlnb3JpZXMgcG9zc2libGVzIHNvbnQgOgogICAga2VybiwgdXNlciwgbWFpbCwgZGFlbW9uLCBhdXRoLCBzeXNsb2csIGxwciwgbmV3cywKICAgIHV1Y3AsIGNyb24sIGF1dGgyLCBmdHAsIG50cCwgYXVkaXQsIGFsZXJ0LCBjcm9uMiwKICAgIGxvY2FsMCwgbG9jYWwxLCBsb2NhbDIsIGxvY2FsMywgbG9jYWw0LCBsb2NhbDUsIGxvY2FsNiwgbG9jYWw3CgpDb25mb3Jt6W1lbnQg4CBsYSBSRkMzMTY0LCBsZXMgbWVzc2FnZXMg6W1pcyBzb250IGxpbWl06XMg4CAxMDI0IGNhcmFjdOhyZXMuCgpFeGVtcGxlIDoKLS0tLS0tLS0tCiAgICBnbG9iYWwKICAgICAgICBsb2cgMTkyLjE2OC4yLjIwMCBsb2NhbDMKICAgICAgICBsb2cgMTI3LjAuMC4xICAgICBsb2NhbDQgbm90aWNlCgoxLjIpIGxpbWl0YXRpb24gZHUgbm9tYnJlIGRlIGNvbm5leGlvbnMKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCklsIGVzdCBwb3NzaWJsZSBldCBjb25zZWlsbOkgZGUgbGltaXRlciBsZSBub21icmUgZ2xvYmFsIGRlIGNvbm5leGlvbnMgcGFyCnByb2Nlc3N1cyDgIGwnYWlkZSBkdSBtb3QgY2zpIGdsb2JhbCAnbWF4Y29ubicuIExlcyBjb25uZXhpb25zIHNvbnQgY29tcHJpc2VzCmF1IHNlbnMgJ2FjY2VwdGF0aW9uIGRlIGNvbm5leGlvbicsIGRvbmMgaWwgZmF1dCBzJ2F0dGVuZHJlIGVuIHLoZ2xlIGfpbulyYWwg4Aphdm9pciB1biBwZXUgcGx1cyBkdSBkb3VibGUgZGUgc2Vzc2lvbnMgVENQIHF1ZSBsZSBtYXhpbXVtIGRlIGNvbm5leGlvbnMgZml46S4KQydlc3QgaW1wb3J0YW50IHBvdXIgZml4ZXIgbGUgcGFyYW3odHJlICd1bGltaXQgLW4nIGF2YW50IGRlIGxhbmNlciBsZSBwcm94eS4KUG91ciBjb21wdGFiaWxpc2VyIGxlIG5vbWJyZSBkZSBzb2NrZXRzIG7pY2Vzc2FpcmVzLCBpbCBmYXV0IHByZW5kcmUgZW4gY29tcHRlCmNlcyBwYXJhbeh0cmVzIDoKCiAgLSAxIHNvY2tldCBwYXIgY29ubmV4aW9uIGVudHJhbnRlCiAgLSAxIHNvY2tldCBwYXIgY29ubmV4aW9uIHNvcnRhbnRlCiAgLSAxIHNvY2tldCBwYXIgY291cGxlIGFkcmVzc2UvcG9ydCBkJ+ljb3V0ZSBwYXIgcHJveHkKICAtIDEgc29ja2V0IHBvdXIgY2hhcXVlIHNlcnZldXIgZW4gY291cnMgZGUgaGVhbHRoLWNoZWNrCiAgLSAxIHNvY2tldCBwb3VyIGxlcyBsb2dzICh0b3VzIHNlcnZldXJzIGNvbmZvbmR1cykKCkRhbnMgbGUgY2FzIG/5IGNoYXF1ZSBwcm94eSBuJ+ljb3V0ZSBxdWUgc3VyIHVuIGNvdXBsZSBhZHJlc3NlL3BvcnQsCnBvc2l0aW9ubmVyIGxhIGxpbWl0ZSBkdSBub21icmUgZGUgZGVzY3JpcHRldXJzIGRlIGZpY2hpZXJzICh1bGltaXQgLW4pIOAgCigyICogbWF4Y29ubiArIG5icHJveHkgKyBuYnNlcnZldXJzICsgMSkuIEEgcGFydGlyIGRlcyB2ZXJzaW9ucyAxLjEuMzIvMS4yLjYsCmlsIGVzdCBwb3NzaWJsZSBkZSBzcOljaWZpZXIgY2V0dGUgbGltaXRlIGRhbnMgbGEgY29uZmlndXJhdGlvbiDgIGwnYWlkZSBkdQptb3QtY2zpIGdsb2JhbCAndWxpbWl0LW4nLCDgIGNvbmRpdGlvbiBiaWVuIGVudGVuZHUgcXVlIGxlIHByb3h5IGFpdCDpdOkKZOltYXJy6SBzb3VzIGxlIGNvbXB0ZSByb290IChvdSBhdmVjIGRlcyBkcm9pdHMgc3VmZmlzYW50cyBwb3VyIOlsZXZlciBsZQpub21icmUgZGUgZGVzY3JpcHRldXJzIGRlIGZpY2hpZXJzKS4gQ2V0dGUgc29sdXRpb24gbWV0IHVuIHRlcm1lIGF1IHByb2Js6G1lCnLpY3VycmVudCBkJ2luY2VydGl0dWRlIGRlIGwnYWTpcXVhdGlvbiBlbnRyZSBsZXMgbGltaXRlcyBzeXN06G1lcyBsb3JzIGRlIGxhCmRlcm5p6HJlIHJlbGFuY2UgZHUgcHJveGVzc3VzIGV0IGxlcyBsaW1pdGVzIGVuIG5vbWJyZSBkZSBjb25uZXhpb25zLiBOb3RlciBxdWUKY2V0dGUgbGltaXRlIHMnYXBwbGlxdWUgcGFyIHByb2Nlc3N1cy4KCkV4ZW1wbGUgOgotLS0tLS0tLS0KICAgIGdsb2JhbAogICAgICAgIG1heGNvbm4gMzIwMDAKICAgICAgICB1bGltaXQtbiA2NTUzNgoKCjEuMykgRGltaW51dGlvbiBkZXMgcHJpdmls6GdlcwotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KQWZpbiBkZSBy6WR1aXJlIGxlcyByaXNxdWVzIGQnYXR0YXF1ZXMgZGFucyBsZSBjYXMgb/kgdW5lIGZhaWxsZSBub24gaWRlbnRpZmnpZQpzZXJhaXQgZXhwbG9pdOllLCBpbCBlc3QgcG9zc2libGUgZGUgZGltaW51ZXIgbGVzIHByaXZpbOhnZXMgZHUgcHJvY2Vzc3VzLCBldApkZSBsJ2lzb2xlciBkYW5zIHVuIHLpcGVydG9pcmUgc2FucyByaXNxdWUuCgpEYW5zIGxhIHNlY3Rpb24gJ2dsb2JhbCcsIGxlIHBhcmFt6HRyZSAndWlkJyBwZXJtZXQgZGUgc3DpY2lmaWVyIHVuIGlkZW50aWZpYW50Cm51belyaXF1ZSBkJ3V0aWxpc2F0ZXVyLiBMYSB2YWxldXIgMCwgY29ycmVzcG9uZGFudCBub3JtYWxlbWVudCBhdSBzdXBlci0KdXRpbGlzYXRldXIsIHBvc3PoZGUgaWNpIHVuZSBzaWduaWZpY2F0aW9uIHBhcnRpY3VsaehyZSBjYXIgZWxsZSBpbmRpcXVlIHF1ZQpsJ29uIG5lIHNvdWhhaXRlIHBhcyBjaGFuZ2VyIGNldCBpZGVudGlmaWFudCBldCBjb25zZXJ2ZXIgbGEgdmFsZXVyIGNvdXJhbnRlLgpDJ2VzdCBsYSB2YWxldXIgcGFyIGTpZmF1dC4gRGUgbGEgbeptZSBtYW5p6HJlLCBsZSBwYXJhbeh0cmUgJ2dpZCcgY29ycmVzcG9uZCDgCnVuIGlkZW50aWZpYW50IGRlIGdyb3VwZSwgZXQgdXRpbGlzZSBwYXIgZOlmYXV0IGxhIHZhbGV1ciAwIHBvdXIgbmUgcmllbgpjaGFuZ2VyLiBJbCBlc3QgcGFydGljdWxp6HJlbWVudCBk6WNvbnNlaWxs6SBkJ3V0aWxpc2VyIGRlcyBjb21wdGVzIGfpbulyaXF1ZXMKdGVscyBxdWUgJ25vYm9keScgY2FyIGNldHRlIHByYXRpcXVlIHJldmllbnQg4CB1dGlsaXNlciAncm9vdCcgc2kgZCdhdXRyZXMKcHJvY2Vzc3VzIHV0aWxpc2VudCBsZXMgbeptZXMgaWRlbnRpZmlhbnRzLgoKTGUgcGFyYW3odHJlICdjaHJvb3QnIGF1dG9yaXNlIOAgY2hhbmdlciBsYSByYWNpbmUgZHUgcHJvY2Vzc3VzIHVuZSBmb2lzIGxlCnByb2dyYW1tZSBsYW5j6SwgZGUgc29ydGUgcXVlIG5pIGxlIHByb2Nlc3N1cywgbmkgbCd1biBkZSBzZXMgZGVzY2VuZGFudHMgbmUKcHVpc3NlbnQgcmVtb250ZXIgZGUgbm91dmVhdSDgIGxhIHJhY2luZS4gQ2UgdHlwZSBkZSBjbG9pc29ubmVtZW50IChjaHJvb3QpIGVzdApn6W7pcmFsZW1lbnQgY29udG91cm5hYmxlIHN1ciBjZXJ0YWlucyBPUyAoTGludXgsIFNvbGFyaXMpIHBvdXIgcGV1IHF1ZQpsJ2F0dGFxdWFudCBwb3Nz6GRlIGRlcyBkcm9pdHMgJ3Jvb3QnIGV0IHNvaXQgZW4gbWVzdXJlIGQndXRpbGlzZXIgb3UgZGUgY3LpZXIKdW4gculwZXJ0b2lyZS4gQXVzc2ksIGlsIGVzdCBpbXBvcnRhbnQgZCd1dGlsaXNlciB1biBy6XBlcnRvaXJlIHNw6WNpZmlxdWUgYXUKc2VydmljZSBwb3VyIGNldCB1c2FnZSwgZXQgZGUgbmUgcGFzIG11dHVhbGlzZXIgdW4gbeptZSBy6XBlcnRvaXJlIHBvdXIKcGx1c2lldXJzIHNlcnZpY2VzIGRlIG5hdHVyZSBkaWZm6XJlbnRlLiBQb3VyIHJlbmRyZSBsJ2lzb2xlbWVudCBwbHVzIHJvYnVzdGUsCmlsIGVzdCBjb25zZWlsbOkgZCd1dGlsaXNlciB1biBy6XBlcnRvaXJlIHZpZGUsIHNhbnMgYXVjdW4gZHJvaXQsIGV0IGRlIGNoYW5nZXIKbCd1aWQgZHUgcHJvY2Vzc3VzIGRlIHNvcnRlIHF1J2lsIG5lIHB1aXNzZSByaWVuIGZhaXJlIGRhbnMgbGVkaXQgculwZXJ0b2lyZS4KClJlbWFycXVlIGltcG9ydGFudGUgOgotLS0tLS0tLS0tLS0tLS0tLS0tLS0KRGFucyBsZSBjYXMgb/kgdW5lIHRlbGxlIGZhaWxsZSBzZXJhaXQgbWlzZSBlbiDpdmlkZW5jZSwgaWwgZXN0IGZvcnQgcHJvYmFibGUKcXVlIGxlcyBwcmVtaehyZXMgdGVudGF0aXZlcyBkZSBzb24gZXhwbG9pdGF0aW9uIHByb3ZvcXVlbnQgdW4gYXJy6nQgZHUKcHJvZ3JhbW1lLCDgIGNhdXNlIGQndW4gc2lnbmFsIGRlIHR5cGUgJ1NlZ21lbnRhdGlvbiBGYXVsdCcsICdCdXMgRXJyb3InIG91CmVuY29yZSAnSWxsZWdhbCBJbnN0cnVjdGlvbicuIE3qbWUgcydpbCBlc3QgdnJhaSBxdWUgZmFpcmUgdG91cm5lciBsZSBzZXJ2ZXVyCmVuIGVudmlyb25uZW1lbnQgbGltaXTpIHLpZHVpdCBsZXMgcmlzcXVlcyBkJ2ludHJ1c2lvbiwgaWwgZXN0IHBhcmZvaXMgYmllbgp1dGlsZSBkYW5zIGNlcyBjaXJjb25zdGFuY2VzIGRlIGNvbm5h7nRyZSBsZXMgY29uZGl0aW9ucyBkJ2FwcGFyaXRpb24gZHUKcHJvYmzobWUsIHZpYSBsJ29idGVudGlvbiBkJ3VuIGZpY2hpZXIgJ2NvcmUnLiBMYSBwbHVwYXJ0IGRlcyBzeXN06G1lcywgcG91cgpkZXMgcmFpc29ucyBkZSBz6WN1cml06SwgZOlzYWN0aXZlbnQgbGEgZ+lu6XJhdGlvbiBkdSBmaWNoaWVyICdjb3JlJyBhcHLocyB1bgpjaGFuZ2VtZW50IGQnaWRlbnRpZmlhbnQgcG91ciBsZSBwcm9jZXNzdXMuIElsIGZhdWRyYSBkb25jIHNvaXQgbGFuY2VyIGxlCnByb2Nlc3N1cyDgIHBhcnRpciBkJ3VuIGNvbXB0ZSB1dGlsaXNhdGV1ciBhdXggZHJvaXRzIHLpZHVpdHMgKG1haXMgbmUgcG91dmFudApwYXMgZWZmZWN0dWVyIGxlIGNocm9vdCksIG91IGJpZW4gbGUgZmFpcmUgZW4gcm9vdCBzYW5zIHLpZHVjdGlvbiBkZXMgZHJvaXRzCih1aWQgMCkuIERhbnMgY2UgY2FzLCBsZSBmaWNoaWVyIHNlIHRyb3V2ZXJhIHNvaXQgZGFucyBsZSBy6XBlcnRvaXJlIGRlCmxhbmNlbWVudCwgc29pdCBkYW5zIGxlIHLpcGVydG9pcmUgc3DpY2lmaekgYXBy6HMgbCdvcHRpb24gJ2Nocm9vdCcuIE5lIHBhcwpvdWJsaWVyIGxhIGNvbW1hbmRlIHN1aXZhbnRlIHBvdXIgYXV0b3Jpc2VyIGxhIGfpbulyYXRpb24gZHUgZmljaGllciBhdmFudCBkZQpsYW5jZXIgbGUgcHJvZ3JhbW1lIDoKCiMgdWxpbWl0IC1jIHVubGltaXRlZAoKRXhlbXBsZSA6Ci0tLS0tLS0tLQoKICAgIGdsb2JhbAogICAgICAgIHVpZCAgICAgICAgMzAwMDAKICAgICAgICBnaWQgICAgICAgIDMwMDAwCiAgICAgICAgY2hyb290ICAvdmFyL2Nocm9vdC9oYXByb3h5CgoxLjQpIE1vZGVzIGRlIGZvbmN0aW9ubmVtZW50Ci0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KTGUgc2VydmljZSBwZXV0IGZvbmN0aW9ubmVyIGRhbnMgcGx1c2lldXJzIG1vZGVzIDoKICAtIGF2YW50LSAvIGFycmnocmUtcGxhbgogIC0gc2lsZW5jaWV1eCAvIG5vcm1hbCAvIGRlYnVnCgpMZSBtb2RlIHBhciBk6WZhdXQgZXN0IG5vcm1hbCwgYXZhbnQtcGxhbiwgYydlc3Qg4CBkaXJlIHF1ZSBsZSBwcm9ncmFtbWUgbmUKcmVuZCBwYXMgbGEgbWFpbiB1bmUgZm9pcyBsYW5j6S4gSWwgbmUgZmF1dCBzdXJ0b3V0IHBhcyBsZSBsYW5jZXIgY29tbWUgY2VjaQpkYW5zIHVuIHNjcmlwdCBkZSBk6W1hcnJhZ2UgZHUgc3lzdOhtZSwgc2lub24gbGUgc3lzdOhtZSBuZSBmaW5pcmFpdCBwYXMgc29uCmluaXRpYWxpc2F0aW9uLiBJbCBmYXV0IGxlIG1ldHRyZSBlbiBhcnJp6HJlLXBsYW4sIGRlIHNvcnRlIHF1J2lsIHJlbmRlIGxhIG1haW4KYXUgcHJvY2Vzc3VzIGFwcGVsYW50LiBDJ2VzdCBjZSBxdWUgZmFpdCBsJ29wdGlvbiAnZGFlbW9uJyBkZSBsYSBzZWN0aW9uCidnbG9iYWwnLCBldCBxdWkgZXN0IGwn6XF1aXZhbGVudCBkdSBwYXJhbeh0cmUgJy1EJyBkZSBsYSBsaWduZSBkZSBjb21tYW5kZS4KCkxlIHBhcmFt6HRyZSBkZSBsaWduZSBkZSBjb21tYW5kZSAnLWRiJyBpbmhpYmUgbGVzIG9wdGlvbnMgZ2xvYmFsZXMgJ2RhZW1vbicKZXQgJ25icHJvYycgcG91ciBmYWlyZSBmb25jdGlvbm5lciBsZSBwcm9jZXNzdXMgZW4gbW9kZSBub3JtYWwsIGF2YW50LXBsYW4uCgpQYXIgYWlsbGV1cnMsIGNlcnRhaW5zIG1lc3NhZ2VzIGQnYWxlcnRlIHNvbnQgdG91am91cnMgZW52b3npcyBzdXIgbGEgc29ydGllCnN0YW5kYXJkLCBt6m1lIGVuIG1vZGUgJ2RhZW1vbicuIFBvdXIgbmUgcGx1cyBsZXMgdm9pciBhaWxsZXVycyBxdWUgZGFucyBsZXMKbG9ncywgaWwgc3VmZml0IGRlIHBhc3NlciBlbiBtb2RlIHNpbGVuY2lldXggcGFyIGwnYWpvdXQgZGUgbCdvcHRpb24gJ3F1aWV0Jy4KQ2V0dGUgb3B0aW9uIG4nYSBwYXMgZCfpcXVpdmFsZW50IGVuIGxpZ25lIGRlIGNvbW1hbmRlLgoKRW5maW4sIGxlIG1vZGUgJ2RlYnVnJyBwZXJtZXQgZGUgZGlhZ25vc3RpcXVlciBsZXMgb3JpZ2luZXMgZGUgY2VydGFpbnMKcHJvYmzobWVzIGVuIGFmZmljaGFudCBsZXMgY29ubmV4aW9ucywgZOljb25uZXhpb25zIGV0IOljaGFuZ2VzIGQnZW4tdOp0ZXMgSFRUUAplbnRyZSBsZXMgY2xpZW50cyBldCBsZXMgc2VydmV1cnMuIENlIG1vZGUgZXN0IGluY29tcGF0aWJsZSBhdmVjIGxlcyBvcHRpb25zCidkYWVtb24nIGV0ICdxdWlldCcgcG91ciBkZXMgcmFpc29ucyBkZSBib24gc2Vucy4KCjEuNSkgQWNjcm9pc3NlbWVudCBkZSBsYSBjYXBhY2l06SBkZSB0cmFpdGVtZW50Ci0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tClN1ciBkZXMgbWFjaGluZXMgbXVsdGktcHJvY2Vzc2V1cnMsIGlsIHBldXQgc2VtYmxlciBn4mNo6SBkZSBuJ3V0aWxpc2VyIHF1J3VuCnByb2Nlc3NldXIgcG91ciBlZmZlY3R1ZXIgbGVzIHTiY2hlcyBkZSByZWxheWFnZSwgbeptZSBzaSBsZXMgY2hhcmdlcwpu6WNlc3NhaXJlcyDgIHNhdHVyZXIgdW4gcHJvY2Vzc2V1ciBhY3R1ZWwgc29udCBiaWVuIGF1LWRlbOAgZGVzIG9yZHJlcyBkZQpncmFuZGV1ciBjb3VyYW1tZW50IHJlbmNvbnRy6XMuIENlcGVuZGFudCwgcG91ciBkZXMgYmVzb2lucyBwYXJ0aWN1bGllcnMsIGxlCnByb2dyYW1tZSBzYWl0IGTpbWFycmVyIHBsdXNpZXVycyBwcm9jZXNzdXMgc2UgculwYXJ0aXNzYW50IGxhIGNoYXJnZSBkZQp0cmF2YWlsLiBDZSBub21icmUgZGUgcHJvY2Vzc3VzIGVzdCBzcOljaWZp6SBwYXIgbGUgcGFyYW3odHJlICduYnByb2MnIGRlIGxhCnNlY3Rpb24gJ2dsb2JhbCcuIFNhIHZhbGV1ciBwYXIgZOlmYXV0IGVzdCBuYXR1cmVsbGVtZW50IDEuIENlY2kgbmUgZm9uY3Rpb25uZQpxdSdlbiBtb2RlICdkYWVtb24nLiBVbiB1c2FnZSBk6WrgIHJlbmNvbnRy6SBwb3VyIGNlIHBhcmFt6HRyZSBmdXQgZGUgZOlwYXNzZXIKbGEgbGltaXRlIGRlIG5vbWJyZSBkZSBkZXNjcmlwdGV1cnMgZGUgZmljaGllcnMgYWxsb3XpZSBwYXIgcHJvY2Vzc3VzIHNvdXMKU29sYXJpcy4KCkV4ZW1wbGUgOgotLS0tLS0tLS0KCiAgICBnbG9iYWwKICAgICAgICBkYWVtb24KICAgICAgICBxdWlldAogICAgICAgIG5icHJvYyAgICAgICAgMgoKMS42KSBTaW1wbGlmaWNhdGlvbiBkZSBsYSBnZXN0aW9uIGRlcyBwcm9jZXNzdXMKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KSGFwcm94eSBzdXBwb3J0ZSBkb3LpbmF2YW50IGxhIG5vdGlvbiBkZSBmaWNoaWVycyBkZSBwaWQgKC0+IHBpZGZpbGVzKS4gU2kgbGUKcGFyYW3odHJlICctcCcgZGUgbGlnbmUgZGUgY29tbWFuZGUsIG91IGwnb3B0aW9uIGdsb2JhbGUgJ3BpZGZpbGUnIHNvbnQgc3VpdmlzCmQndW4gbm9tIGRlIGZpY2hpZXIsIGFsb3JzIGNlIGZpY2hpZXIgc2VyYSBzdXBwcmlt6SBwdWlzIHJlY3Lp6SBldCBjb250aWVuZHJhCmxlIG51belybyBkZSBQSUQgZGVzIHByb2Nlc3N1cyBmaWxzLCDgIHJhaXNvbiBkJ3VuIHBhciBsaWduZSAodmFsYWJsZQp1bmlxdWVtZW50IGVuIG1vZGUgZOltb24pLiBDZSBmaWNoaWVyIG4nZXN0IFBBUyByZWxhdGlmIGF1IGNsb2lzb25uZW1lbnQgY2hyb290CmFmaW4gZGUgcmVzdGVyIGNvbXBhdGlibGUgYXZlYyB1biBy6XBlcnRvaXJlIHByb3TpZ+kgZW4gbGVjdHVyZSBzZXVsZS4gSWwKYXBwYXJ0aWVuZHJhIOAgbCd1dGlsaXNhdGV1ciBheWFudCBsYW5j6SBsZSBwcm9jZXNzdXMsIGV0IGRpc3Bvc2VyYSBkZXMgZHJvaXRzCjA2NDQuCgpFeGVtcGxlIDoKLS0tLS0tLS0tCgogICAgZ2xvYmFsCiAgICAgICAgZGFlbW9uCiAgICAgICAgcXVpZXQKICAgICAgICBuYnByb2MgMgogICAgICAgIHBpZGZpbGUgL3Zhci9ydW4vaGFwcm94eS1wcml2YXRlLnBpZAoKICAgICMgcG91ciBzdG9wcGVyIHNldWxlbWVudCBjZXMgcHJvY2Vzc3VzIHBhcm1pIGQnYXV0cmVzIDoKICAgICMga2lsbCAkKDwvdmFyL3J1bi9oYXByb3h5LXByaXZhdGUucGlkKQoKICAgICMgcG91ciByZWNoYXJnZXIgdW5lIGNvbmZpZ3VyYXRpb24gYXZlYyB1biBpbXBhY3QgbWluaW1hbCBzdXIgbGUgc2VydmljZSwKICAgICMgZXQgc2FucyBjYXNzZXIgbGVzIHNlc3Npb25zIGV4aXN0YW50ZXMgOgogICAgIyBoYXByb3h5IC1mIGhhcHJveHkuY2ZnIC1wICQoPC92YXIvcnVuL2hhcHJveHktcHJpdmF0ZS5waWQpIC1zdCAkKDwvdmFyL3J1bi9oYXByb3h5LXByaXZhdGUucGlkKQoKMS43KSBN6WNhbmlzbWVzIGRlIHRyYWl0ZW1lbnRzIGRlcyDpduluZW1lbnRzCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpBIHBhcnRpciBkZSBsYSB2ZXJzaW9uIDEuMi41LCBoYXByb3h5IHN1cHBvcnRlIGxlcyBt6WNhbmlzbWVzIHBvbGwoKSBldAplcG9sbCgpLiBTdXIgbGVzIHN5c3RlbXMgb/kgc2VsZWN0KCkgZXN0IGxpbWl06SBwYXIgRkRfU0VUU0laRSAoY29tbWUgU29sYXJpcyksCnBvbGwoKSBwZXV0IOp0cmUgdW5lIGFsdGVybmF0aXZlIGludOlyZXNzYW50ZS4gRGVzIHRlc3RzIGRlIHBlcmZvcm1hbmNlCm1vbnRyZW50IHF1ZSBsZXMgcGVyZm9ybWFuY2VzIGRlIHBvbGwoKSBuZSBk6WNyb2lzc2VudCBwYXMgYXVzc2kgdml0ZSBxdWUgbGUKbm9tYnJlIGRlIHNvY2tldHMgYXVnbWVudGUsIGNlIHF1aSBlbiBmYWl0IHVuZSBzb2x1dGlvbiBz+3JlIHBvdXIgbGVzIGZvcnRlcwpjaGFyZ2VzLiBDZWxhIGRpdCwgU29hbHJpcyB1dGlsaXNlIGTpauAgcG9sbCgpIHBvdXIg6W11bGVyIHNlbGVjdCgpLCBkb25jIHRhbnQKcXVlIGxlIG5vbWJyZSBkZSBzb2NrZXRzIG5lIGTpcGFzc2UgcGFzIEZEX1NFVFNJWkUsIHBvbGwoKSBuZSBkZXZyYWl0IHBhcwphcHBvcnRlciBkZSBwZXJmb3JtYW5jZXMgc3VwcGzpbWVudGFpcmVzLiBTdXIgbGVzIHN5c3TobWVzIOAgYmFzZSBMaW51eAppbmNsdWFudCBsZSBwYXRjaCBlcG9sbCgpIChvdSB0b3VzIGxlcyBMaW51eCAyLjYpLCBoYXByb3h5IHV0aWxpc2VyYSBlcG9sbCgpCnF1aSBlc3QgZXh0cuhtZW1lbnQgcmFwaWRlIGluZOlwZW5kYW1tZW50IGR1IG5vbWJyZSBkZSBzb2NrZXRzLiBMZXMgdGVzdHMgc3VyCmhhcHJveHkgb250IG1vbnRy6SB1bmUgcGVyZm9ybWFuY2UgY29uc3RhbnRlIGRlIDEg4CA0MDAwMCBzZXNzaW9ucyBzaW11bHRhbullcy4KCkhhcHJveHkgdXRpbGlzZXJhIGVwb2xsKCkgbG9yc3F1J2lsIGVzdCBkaXNwb25pYmxlLCBldCBzZSByZXBsaWVyYSBzdXIgcG9sbCgpLApwdWlzIGVuIGRlcm5pZXIgbGlldSBzdXIgc2VsZWN0KCkuIENlcGVuZGFudCwgc2kgcG91ciB1bmUgcmFpc29uIHF1ZWxjb25xdWUgaWwKcydhdulyYWl0IG7pY2Vzc2FpcmUgZGUgZOlzYWN0aXZlciBlcG9sbCgpIG91IHBvbGwoKSAocC5leDog4CBjYXVzZSBkJ3VuIGJ1ZyBvdQpqdXN0ZSBwb3VyIGNvbXBhcmVyIGxlcyBwZXJmb3JtYW5jZXMpLCBkZXV4IG5vdXZlbGxlcyBvcHRpb25zIGdsb2JhbGVzIG9udCDpdOkKYWpvdXTpZXMgZGFucyBjZSBidXQgOiAnbm9lcG9sbCcgZXQgJ25vcG9sbCcuCgpFeGVtcGxlIDoKLS0tLS0tLS0tCiAgICBnbG9iYWwKICAgICAgICAjIHV0aWxpc2VyIHNldWxlbWVudCBzZWxlY3QoKQogICAgICAgIG5vZXBvbGwKICAgICAgICBub3BvbGwKClJlbWFycXVlIDoKLS0tLS0tLS0tLQpEYW5zIGxlIGJ1dCBkJ2Fzc3VyZXIgdW5lIHBvcnRhYmlsaXTpIG1heGltYWxlIGRlcyBjb25maWd1cmF0aW9ucywgY2VzIG9wdGlvbnMKc29udCBhY2NlcHTpZXMgZXQgaWdub3LpZXMgc2kgbGVzIG3pY2FuaXNtZXMgcG9sbCgpIG91IGVwb2xsKCkgbidvbnQgcGFzIOl06QphY3RpdulzIGxvcnMgZGUgbGEgY29tcGlsYXRpb24uCgpBZmluIGRlIHNpbXBsaWZpZXIgbGEgculzb2x1dGlvbiBkZSBwcm9ibOhtZXMsIGxlIHBhcmFt6HRyZSAnLWRlJyBlbiBsaWduZSBkZQpjb21tYW5kZSBk6XNhY3RpdmUgZXBvbGwoKSBldCBsZSBwYXJhbeh0cmUgJy1kcCcgZOlzYWN0aXZlIHBvbGwoKS4gSWxzIHNvbnQKcmVzcGVjdGl2ZW1lbnQg6XF1aXZhbGVudHMg4CAnbm9lcG9sbCcgZXQgJ25vcG9sbCcuCgoKMikgROlmaW5pdGlvbiBkJ3VuIHNlcnZpY2UgZW4g6WNvdXRlCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoKTGVzIHNlY3Rpb25zIGRlIHNlcnZpY2UgZOlidXRlbnQgcGFyIGxlIG1vdCBjbOkgImxpc3RlbiIgOgoKICAgIGxpc3RlbiA8bm9tX2luc3RhbmNlPiBbIDxhZHJlc3NlX0lQPjo8cGxhZ2VfcG9ydHM+WywuLi5dIF0KCi0gPG5vbV9pbnN0YW5jZT4gZXN0IGxlIG5vbSBkZSBsJ2luc3RhbmNlIGTpY3JpdGUuIENlIG5vbSBzZXJhIGVudm956SBkYW5zIGxlcwogIGxvZ3MsIGRvbmMgaWwgZXN0IHNvdWhhaXRhYmxlIGQndXRpbGlzZXIgdW4gbm9tIHJlbGF0aWYgYXUgc2VydmljZSByZWxheekuCiAgQXVjdW4gdGVzdCBuJ2VzdCBlZmZlY3R16SBjb25jZXJuYW50IGwndW5pY2l06SBkZSBjZSBub20sIHF1aSBuJ2VzdCBwYXMKICBvYmxpZ2F0b2lyZSwgbWFpcyBmb3J0ZW1lbnQgcmVjb21tYW5k6WUuCgotIDxhZHJlc3NlX0lQPiBlc3QgbCdhZHJlc3NlIElQIHN1ciBsYXF1ZWxsZSBsZSByZWxhaXMgYXR0ZW5kIHNlcyBjb25uZXhpb25zLgogIEwnYWJzZW5jZSBkJ2FkcmVzc2UgYWluc2kgcXVlIGwnYWRyZXNzZSAwLjAuMC4wIHNpZ25pZmllbnQgcXVlIGxlcyBjb25uZXhpb25zCiAgcG91cnJvbnQgcydlZmZlY3R1ZXIgc3VyIHRvdXRlcyBsZXMgYWRyZXNzZXMgZGUgbGEgbWFjaGluZS4KCi0gPHBsYWdlX3BvcnRzPiBjb3JyZXNwb25kIHNvaXQg4CB1biBwb3J0LCBzb2l0IOAgdW5lIHBsYWdlIGRlIHBvcnRzIHN1cgogIGxlc3F1ZWxzIGxlIHJlbGFpcyBhY2NlcHRlcmEgZGVzIGNvbm5leGlvbnMgcG91ciBsJ2FkcmVzc2UgSVAgc3DpY2lmaellLgogIENldHRlIHBsYWdlIHBldXQg6nRyZSA6CiAgICAtIHNvaXQgdW4gcG9ydCBudW3pcmlxdWUgKGV4OiAnODAnKQogICAgLSBzb2l0IHVuZSBwbGFnZSBjb25zdGl0dellIGRlIGRldXggdmFsZXVycyBz6XBhcullcyBwYXIgdW4gdGlyZXQKICAgICAgKGV4OiAnMjAwMC0yMTAwJykgcmVwculzZW50YW50IGxlcyBleHRy6W1pdOlzIGluY2x1c2VzIGRhbnMgbGEKICAgICAgcGxhZ2UuCiAgSWwgZmF1dCBmYWlyZSBhdHRlbnRpb24g4CBsJ3VzYWdlIGRlcyBwbGFnZXMsIGNhciBjaGFxdWUgY29tYmluYWlzb24KICA8YWRyZXNzZV9JUD46PHBvcnQ+IGNvbnNvbW1lIHVuZSBzb2NrZXQsIGRvbmMgdW4gZGVzY3JpcHRldXIgZGUgZmljaGllci4KICBMZSBjb3VwbGUgPGFkcmVzc2VfSVA+Ojxwb3J0PiBkb2l0IOp0cmUgdW5pcXVlIHBvdXIgdG91dGVzIGxlcyAgaW5zdGFuY2VzCiAgZCd1bmUgbeptZSBtYWNoaW5lLiBMJ2F0dGFjaGVtZW50IOAgdW4gcG9ydCBpbmbpcmlldXIg4CAxMDI0IG7pY2Vzc2l0ZSB1bgogIG5pdmVhdSBkZSBwcml2aWzoZ2UgcGFydGljdWxpZXIgbG9ycyBkdSBsYW5jZW1lbnQgZHUgcHJvZ3JhbW1lCiAgKGluZOlwZW5kYW1tZW50IGR1IHBhcmFt6HRyZSAndWlkJyBkZSBsYSBzZWN0aW9uICdnbG9iYWwnKS4KCi0gbGUgY291cGxlIDxhZHJlc3NlX0lQPjo8cGxhZ2VfcG9ydHM+IHBldXQg6nRyZSBy6XDpdOkgaW5k6WZpbmltZW50IHBvdXIKICBkZW1hbmRlciBhdSByZWxhaXMgZCfpY291dGVyIOlnYWxlbWVudCBzdXIgZCdhdXRyZXMgYWRyZXNzZXMgZXQvb3UgZCdhdXRyZXMKICBwbGFnZXMgZGUgcG9ydHMuIFBvdXIgY2VsYSwgaWwgc3VmZml0IGRlIHPpcGFyZXIgbGVzIGNvdXBsZXMgcGFyIHVuZSB2aXJndWxlLgoKRXhlbXBsZXMgOgotLS0tLS0tLS0KICAgIGxpc3RlbiBodHRwX3Byb3h5IDo4MAogICAgbGlzdGVuIHgxMV9wcm94eSAxMjcuMC4wLjE6NjAwMC02MDA5CiAgICBsaXN0ZW4gc210cF9wcm94eSAxMjcuMC4wLjE6MjUsMTI3LjAuMC4xOjU4NwogICAgbGlzdGVuIGxkYXBfcHJveHkgOjM4OSw6NjYzCgpTaSB0b3V0ZXMgbGVzIGFkcmVzc2VzIG5lIHRpZW5uZW50IHBhcyBzdXIgdW5lIGxpZ25lLCBpbCBlc3QgcG9zc2libGUgZCdlbgpyYWpvdXRlciDgIGwnYWlkZSBkdSBtb3QgY2zpICdiaW5kJy4gRGFucyBjZSBjYXMsIGlsIG4nZXN0IG3qbWUgcGFzIG7pY2Vzc2FpcmUKZGUgc3DpY2lmaWVyIGxhIHByZW1p6HJlIGFkcmVzc2Ugc3VyIGxhIGxpZ25lIGxpc3RlbiwgY2UgcXVpIGZhY2lsaXRlIHBhcmZvaXMKbCfpY3JpdHVyZSBkZSBjb25maWd1cmF0aW9ucyA6CgogICAgYmluZCBbIDxhZHJlc3NlX0lQPjo8cGxhZ2VfcG9ydHM+WywuLi5dIF0KCkV4ZW1wbGVzIDoKLS0tLS0tLS0tLQogICAgbGlzdGVuIGh0dHBfcHJveHkKICAgICAgICBiaW5kIDo4MCw6NDQzCiAgICAgICAgYmluZCAxMC4wLjAuMToxMDA4MCwxMC4wLjAuMToxMDQ0MwoKMi4xKSBJbmhpYml0aW9uIGQndW4gc2VydmljZQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tClVuIHNlcnZpY2UgcGV1dCDqdHJlIGTpc2FjdGl26SBwb3VyIGRlcyBiZXNvaW5zIGRlIG1haW50ZW5hbmNlLCBzYW5zIGF2b2lyIOAKY29tbWVudGVyIHRvdXRlIHVuZSBwYXJ0aWUgZHUgZmljaGllci4gSWwgc3VmZml0IGRlIHBvc2l0aW9ubmVyIGxlIG1vdCBjbOkKImRpc2FibGVkIiBkYW5zIHNhIHNlY3Rpb24gOgoKICAgIGxpc3RlbiBzbXRwX3Byb3h5IDAuMC4wLjA6MjUKICAgICAgICBkaXNhYmxlZAoKUmVtYXJxdWU6IGxlIG1vdCBjbOkgJ2VuYWJsZWQnIHBlcm1ldCBkZSBy6WFjdGl2ZXIgdW4gc2VydmljZSBwculhbGFibGVtZW50CiAgICAgICAgICBk6XNhY3RpdukgcGFyIGxlIG1vdCBjbOkgJ2Rpc2FibGVkJywgcGFyIGV4ZW1wbGUg4CBjYXVzZSBkJ3VuZQogICAgICAgICAgY29uZmlndXJhdGlvbiBwYXIgZOlmYXV0LgoKMi4yKSBNb2RlIGRlIGZvbmN0aW9ubmVtZW50Ci0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpVbiBzZXJ2aWNlIHBldXQgZm9uY3Rpb25uZXIgZGFucyB0cm9pcyBtb2RlcyBkaWZm6XJlbnRzIDoKICAtIFRDUAogIC0gSFRUUAogIC0g6XRhdCBkZSBzYW506QoKTW9kZSBUQ1AKLS0tLS0tLS0KRGFucyBjZSBtb2RlLCBsZSBzZXJ2aWNlIHJlbGF5ZSwgZOhzIGxldXIg6XRhYmxpc3NlbWVudCwgbGVzIGNvbm5leGlvbnMgVENQCnZlcnMgdW4gb3UgcGx1c2lldXJzIHNlcnZldXJzLiBBdWN1biB0cmFpdGVtZW50IG4nZXN0IGVmZmVjdHXpIHN1ciBsZSBmbHV4LiBJbApzJ2FnaXQgc2ltcGxlbWVudCBkJ3VuZSBhc3NvY2lhdGlvbgogICAgIHNvdXJjZTxhZHJlc3NlOnBvcnQ+IC0+IGRlc3RpbmF0aW9uPGFkcmVzc2U6cG9ydD4uClBvdXIgbCd1dGlsaXNlciwgcHLpY2lzZXIgbGUgbW9kZSBUQ1Agc291cyBsYSBk6WNsYXJhdGlvbiBkdSByZWxhaXMuCgpFeGVtcGxlIDoKLS0tLS0tLS0tCiAgICBsaXN0ZW4gc210cF9wcm94eSAwLjAuMC4wOjI1CiAgICAgICAgbW9kZSB0Y3AKCk1vZGUgSFRUUAotLS0tLS0tLS0KRGFucyBjZSBtb2RlLCBsZSBzZXJ2aWNlIHJlbGF5ZSBsZXMgY29ubmV4aW9ucyBUQ1AgdmVycyB1biBvdSBwbHVzaWV1cnMKc2VydmV1cnMsIHVuZSBmb2lzIHF1J2lsIGRpc3Bvc2UgZCdhc3NleiBkJ2luZm9ybWF0aW9ucyBwb3VyIGVuIHByZW5kcmUgbGEKZOljaXNpb24uIExlcyBlbi106nRlcyBIVFRQIHNvbnQgYW5hbHlz6XMgcG91ciB5IHRyb3V2ZXIgdW4g6XZlbnR1ZWwgY29va2llLCBldApjZXJ0YWlucyBkJ2VudHJlLWV1eCBwZXV2ZW50IOp0cmUgbW9kaWZp6XMgcGFyIGxlIGJpYWlzIGQnZXhwcmVzc2lvbnMKculndWxp6HJlcy4gUG91ciBhY3RpdmVyIGNlIG1vZGUsIHBy6WNpc2VyIGxlIG1vZGUgSFRUUCBzb3VzIGxhIGTpY2xhcmF0aW9uIGR1CnJlbGFpcy4KCkV4ZW1wbGUgOgotLS0tLS0tLS0KICAgIGxpc3RlbiBodHRwX3Byb3h5IDAuMC4wLjA6ODAKICAgICAgICBtb2RlIGh0dHAKCk1vZGUgc3VwZXJ2aXNpb24KLS0tLS0tLS0tLS0tLS0tLQpJbCBzJ2FnaXQgZCd1biBtb2RlIG9mZnJhbnQg4CB1biBjb21wb3NhbnQgZXh0ZXJuZSB1bmUgdmlzaWJpbGl06SBkZSBsJ+l0YXQgZGUKc2FudOkgZHUgc2VydmljZS4gSWwgc2UgY29udGVudGUgZGUgcmV0b3VybmVyICJPSyIg4CB0b3V0IGNsaWVudCBzZSBjb25uZWN0YW50CnN1ciBzb24gcG9ydC4gSWwgcGV1dCDqdHJlIHV0aWxpc+kgYXZlYyBkZXMgculwYXJ0aXRldXJzIGRlIGNoYXJnZSDpdm9sdelzIHBvdXIKZOl0ZXJtaW5lciBxdWVscyBzb250IGxlcyBzZXJ2aWNlcyB1dGlsaXNhYmxlcy4gU2kgbCdvcHRpb24gJ2h0dHBjaGsnIGVzdAphY3RpdullLCBhbG9ycyBsYSBy6XBvbnNlIGNoYW5nZXJhIGVuICdIVFRQLzEuMCAyMDAgT0snIHBvdXIgc2F0aXNmYWlyZSBsZXMKYXR0ZW50ZXMgZGUgY29tcG9zYW50cyBzYWNoYW50IHRlc3RlciBlbiBIVFRQLiBQb3VyIGFjdGl2ZXIgY2UgbW9kZSwgcHLpY2lzZXIKbGUgbW9kZSBIRUFMVEggc291cyBsYSBk6WNsYXJhdGlvbiBkdSByZWxhaXMuCgpFeGVtcGxlIDoKLS0tLS0tLS0tCiAgICAjIHLpcG9uc2Ugc2ltcGxlIDogJ09LJwogICAgbGlzdGVuIGhlYWx0aF9jaGVjayAwLjAuMC4wOjYwMDAwCiAgICAgICAgbW9kZSBoZWFsdGgKCiAgICAjIHLpcG9uc2UgSFRUUCA6ICdIVFRQLzEuMCAyMDAgT0snCiAgICBsaXN0ZW4gaHR0cF9oZWFsdGhfY2hlY2sgMC4wLjAuMDo2MDAwMQogICAgICAgIG1vZGUgaGVhbHRoCiAgICAgICAgb3B0aW9uIGh0dHBjaGsKCgoyLjIuMSBTdXBlcnZpc2lvbgotLS0tLS0tLS0tLS0tLS0tLQpMZXMgdmVyc2lvbnMgMS4xLjMyIGV0IDEuMi42IGFwcG9ydGVudCB1bmUgbm91dmVsbGUgc29sdXRpb24gcG91ciB2YWxpZGVyIGxlCmJvbiBmb25jdGlvbm5lbWVudCBkdSBwcm94eSBzYW5zIHBlcnR1cmJlciBsZSBzZXJ2aWNlLiBMZSBtb3QtY2zpICdtb25pdG9yLW5ldCcKYSDpdOkgY3Lp6SBkYW5zIGxlIGJ1dGQgZGUgc3DpY2lmaWVyIHVuIHLpc2VhdSBkJ+lxdWlwZW1lbnRzIHF1aSBuZSBQRVVWRU5UIFBBUwp1dGlsaXNlciBsZSBzZXJ2aWNlIHBvdXIgYXV0cmUgY2hvc2UgcXVlIGRlcyB0ZXN0cyBkZSBmb25jdGlvbm5lbWVudC4gQydlc3QKcGFydGljdWxp6HJlbWVudCBhZGFwdOkgYXV4IHByb3hpZXMgVENQLCBjYXIgY2VsYSBlbXDqY2hlIGxlIHByb3h5IGRlIHJlbGF5ZXIKZGVzIOl0YWJsaXNzZW1lbnRzIGRlIGNvbm5leGlvbiDpbWlzIHBhciB1biBvdXRpbCBkZSBzdXJ2ZWlsbGFuY2UuCgpMb3JzcXVlIGMnZXN0IHV0aWxpc+kgc3VyIHVuIHByb3h5IFRDUCwgbGEgY29ubmV4aW9uIGVzdCBhY2NlcHTpZSBwdWlzIHJlZmVybellCmV0IHJpZW4gbidlc3QgbG9ndekuIEMnZXN0IHN1ZmZpc2FudCBwb3VyIHF1J3VuIHLpcGFydGl0ZXVyIGRlIGNoYXJnZSBlbiBhbW9udApk6XRlY3RlIHF1ZSBsZSBzZXJ2aWNlIGVzdCBkaXNwb25pYmxlLgoKTG9yc3F1ZSBjJ2VzdCB1dGlsaXPpIHN1ciB1biBwcm94eSBIVFRQLCBsYSBjb25uZXhpb24gZXN0IGFjY2VwdOllLCByaWVuIG4nZXN0CmxvZ3XpLCBwdWlzIGxhIHLpcG9uc2Ugc3VpdmFudGUgZXN0IGVudm956WUgZXQgbGEgc2Vzc2lvbiByZWZlcm3pZSA6CiJIVFRQLzEuMCAyMDAgT0siLiBDJ2VzdCBub3JtYWxlbWVudCBzdWZmaXNhbnQgcG91ciBxdSd1biBy6XBhcnRpdGV1ciBkZSBjaGFyZ2UKSFRUUCBlbiBhbW9udCBk6XRlY3RlIGxlIHNlcnZpY2UgY29tbWUgb3DpcmF0aW9ubmVsLCBhdXNzaSBiaWVuIOAgdHJhdmVycyBkZXMKdGVzdHMgVENQIHF1ZSBIVFRQLgoKTGVzIHByb3hpZXMgdXRpbGlzYW50IGxlIG1vdC1jbOkgJ21vbml0b3ItbmV0JyBwZXV2ZW50IGFjY2Vzc29pcmVtZW50IHNlIHBhc3NlcgpkZSBsJ29wdGlvbiAnZG9udGxvZ251bGwnLCBjZSBxdWkgcGVybWV0dHJhIGRlIGxvZ3VlciBsZXMgY29ubmV4aW9ucyB2aWRlcwrpbWlzZXMgZGVwdWlzIGQnYXV0cmVzIGFkcmVzc2VzIHF1ZSBjZWxsZXMgZHUgculzZWF1IGRlIHRlc3RzLgoKRXhlbXBsZSA6Ci0tLS0tLS0tLQoKICAgIGxpc3RlbiB0c2UtcHJveHkKICAgICAgIGJpbmQgOjMzODksOjE0OTQsOjU5MDAgICMgVFNFLCBJQ0EgYW5kIFZOQyBhdCBvbmNlLgogICAgICAgbW9kZSB0Y3AKICAgICAgIGJhbGFuY2Ugcm91bmRyb2JpbgogICAgICAgc2VydmVyIHRzZS1mYXJtIDE5Mi4xNjguMS4xMAogICAgICAgbW9uaXRvci1uZXQgMTkyLjE2OC4xLjI1Mi8zMSAgICMgTDQgbG9hZC1iYWxhbmNlcnMgb24gLjI1MiBhbmQgLjI1MwoKCjIuMykgTGltaXRhdGlvbiBkdSBub21icmUgZGUgY29ubmV4aW9ucyBzaW11bHRhbullcwotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KTGUgcGFyYW3odHJlICJtYXhjb25uIiBwZXJtZXQgZGUgZml4ZXIgbGEgbGltaXRlIGFjY2VwdGFibGUgZW4gbm9tYnJlIGRlCmNvbm5leGlvbnMgc2ltdWx0YW7pZXMgcGFyIHByb3h5LiBDaGFxdWUgcHJveHkgcXVpIGF0dGVpbnQgY2V0dGUgdmFsZXVyIGNlc3NlCmQn6WNvdXRlciBqdXNxdSfgIGxpYulyYXRpb24gZCd1bmUgY29ubmV4aW9uLiBWb2lyIHBsdXMgbG9pbiBjb25jZXJuYW50IGxlcwpsaW1pdGF0aW9ucyBsaellcyBhdSBzeXN06G1lLgoKRXhlbXBsZSA6Ci0tLS0tLS0tLQogICAgbGlzdGVuIHRpbnlfc2VydmVyIDAuMC4wLjA6ODAKICAgICAgICBtYXhjb25uIDEwCgoKMi40KSBBcnLqdCBlbiBkb3VjZXVyCi0tLS0tLS0tLS0tLS0tLS0tLS0tLQpJbCBlc3QgcG9zc2libGUgZCdhcnLqdGVyIGxlcyBzZXJ2aWNlcyBlbiBkb3VjZXVyIGVuIGVudm95YW50IHVuIHNpZ25hbApTSUdVU1IxIGF1IHByb2Nlc3N1cyByZWxhaXMuIFRvdXMgbGVzIHNlcnZpY2VzIHNlcm9udCBhbG9ycyBtaXMgZW4gcGhhc2UKZCdhcnLqdCwgbWFpcyBwb3Vycm9udCBjb250aW51ZXIgZCdhY2NlcHRlciBkZXMgY29ubmV4aW9ucyBwZW5kYW50IHVuIHRlbXBzCmTpZmluaSBwYXIgbGUgcGFyYW3odHJlICdncmFjZScgKGVuIG1pbGxpc2Vjb25kZXMpLiBDZWxhIHBlcm1ldCBwYXIgZXhlbXBsZSwKZGUgZmFpcmUgc2F2b2lyIHJhcGlkZW1lbnQg4CB1biBy6XBhcnRpdGV1ciBkZSBjaGFyZ2UgcXUnaWwgbmUgZG9pdCBwbHVzCnV0aWxpc2VyIHVuIHJlbGFpcywgdG91dCBlbiBjb250aW51YW50IGQnYXNzdXJlciBsZSBzZXJ2aWNlIGxlIHRlbXBzIHF1J2lsCnMnZW4gcmVuZGUgY29tcHRlLgoKUmVtYXJxdWUgOgotLS0tLS0tLS0tCkxlcyBjb25uZXhpb25zIGFjdGl2ZXMgbmUgc29udCBqYW1haXMgY2Fzc+llcy4gRGFucyBsZSBwaXJlIGRlcyBjYXMsIGlsIGZhdWRyYQphdHRlbmRyZSBlbiBwbHVzIGxldXIgZXhwaXJhdGlvbiBhdmFudCBsJ2Fycup0IHRvdGFsIGR1IHByb2Nlc3N1cywgb3UgYmllbiB0dWVyCm1hbnVlbGxlbWVudCBsZSBwcm9jZXNzdXMgcGFyIGwnZW52b2kgZCd1biBzaWduYWwgU0lHVEVSTS4gTGEgdmFsZXVyIHBhciBk6WZhdXQKZHUgcGFyYW3odHJlICdncmFjZScgZXN0IDAgKHBhcyBkZSBncuJjZSwgYXJy6nQgaW1t6WRpYXQgZGUgbCfpY291dGUpLgoKRXhlbXBsZSA6Ci0tLS0tLS0tLQogICAgIyBhcnLqdGVyIGVuIGRvdWNldXIgcGFyICdraWxsYWxsIC1VU1IxIGhhcHJveHknCiAgICAjIGxlIHNlcnZpY2UgdG91cm5lcmEgZW5jb3JlIDEwIHNlY29uZGVzIGFwcuhzIGxhIGRlbWFuZGUgZCdhcnLqdAogICAgbGlzdGVuIGh0dHBfcHJveHkgMC4wLjAuMDo4MAogICAgICAgIG1vZGUgaHR0cAogICAgICAgIGdyYWNlIDEwMDAwCgogICAgIyBjZSBwb3J0IG4nZXN0IHRlc3TpIHF1ZSBwYXIgdW4gculwYXJ0aXRldXIgZGUgY2hhcmdlLgogICAgbGlzdGVuIGhlYWx0aF9jaGVjayAwLjAuMC4wOjYwMDAwCiAgICAgICAgbW9kZSBoZWFsdGgKICAgICAgICBncmFjZSAwCgpBIHBhcnRpciBkZSBsYSB2ZXJzaW9uIDEuMi44LCB1biBub3V2ZWF1IG3pY2FuaXNtZSBkZSByZWNvbmZpZ3VyYXRpb24g4CBjaGF1ZAphIOl06SBpbnRyb2R1aXQuIElsIGVzdCBk6XNvcm1haXMgcG9zc2libGUgZGUgbWV0dHJlIGxlcyBwcm94aWVzIGVuICJwYXVzZSIgZW4KZW52b3lhbnQgdW4gc2lnbmFsIFNJR1RUT1UgYXV4IHByb2Nlc3N1cy4gQ2VsYSBk6XNhY3RpdmVyYSBsZXMgc29ja2V0cyBkJ+ljb3V0ZQpzYW5zIGNhc3NlciBsZXMgc2Vzc2lvbnMgZXhpc3RhbnRlcy4gU3VpdGUg4CBjZWxhLCBsJ2Vudm9pIGQndW4gc2lnbmFsIFNJR1RUSU4KculhY3RpdmVyYSBsZXMgc29ja2V0cyBkJ+ljb3V0ZS4gQ2VjaSBlc3QgdHLocyBwcmF0aXF1ZSBwb3VyIHRlbnRlciBkZSBjaGFyZ2VyCnVuZSBub3V2ZWxsZSBjb25maWd1cmF0aW9uIG91IG3qbWUgdW5lIG5vdXZlbGxlIHZlcnNpb24gZGUgaGFwcm94eSBzYW5zIGNhc3NlcgpsZXMgY29ubmV4aW9ucyBleGlzdGFudGVzLiBTaSBsZSByZWNoYXJnZW1lbnQgcydlZmZlY3R1ZSBjb3JyZWN0ZW1lbnQsIGlsIG5lCnJlc3RlIHBsdXMgcXUn4CBlbnZveWVyIHVuIHNpZ25hbCBTSUdVU1IxIGF1eCBhbmNpZW5zIHByb2Nlc3N1cywgY2UgcXVpCnByb3ZvcXVlcmEgbGV1ciBhcnLqdCBpbW3pZGlhdCBk6HMgcXVlIGxldXJzIGNvbm5leGlvbnMgc2Vyb250IHRlcm1pbullcyA7IGVuCnJldmFuY2hlLCBzaSBsZSByZWNoYXJnZW1lbnQg6WNob3VlLCBpbCBzdWZmaXQgZCdlbnZveWVyIHVuIHNpZ25hbCBTSUdUVElOIHBvdXIKcmVtZXR0cmUgbGVzIHBvcnRzIGVuIOljb3V0ZSBldCBy6XRhYmxpciBsZSBzZXJ2aWNlIGltbelkaWF0ZW1lbnQuIFZldWlsbGV6Cm5vdGVyIHF1ZSBsZSBwYXJhbeh0cmUgJ2dyYWNlJyBlc3QgaWdub3LpIHBvdXIgbGUgc2lnbmFsIFNJR1RUT1UgYWluc2kgcXVlIGxlCnNpZ25hbCBTSUdVU1IxIHVuZSBmb2lzIGxlIHByb2Nlc3N1cyBlbiBwYXVzZS4gQXVzc2ksIGlsIHBldXQgcydhdulyZXIgdHLocwp1dGlsZSBkZSBzYXV2ZXIgbGUgZmljaGllciBkZSBwaWQgYXZhbnQgZGUgZOltYXJyZXIgdW5lIG5vdXZlbGxlIGluc3RhbmNlLgoKQ2UgbeljYW5pc21lIGVzdCBwbGVpbmVtZW50IGV4cGxvaXTpIOAgcGFydGlyIGRlIGxhIHZlcnNpb24gMS4yLjExIGF2ZWMgbGVzCm9wdGlvbnMgJy1zdCcgZXQgJy1zZicgKHZvaXIgY2ktZGVzc291cykuCgoyLjQpIFJlY29uZmlndXJhdGlvbiDgIGNoYXVkCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KTGVzIHBhcmFt6HRyZXMgJy1zdCcgZXQgJy1zZicgc29udCB1dGlsaXPpcyBwb3VyIGluZm9ybWVyIGRlcyBwcm9jZXNzdXMKZXhpc3RhbnRzIHF1ZSBsYSBjb25maWd1cmF0aW9uIHZhIOp0cmUgcmVjaGFyZ+llLiBJbHMgcmVjZXZyb250IGxlIHNpZ25hbApTSUdUVE9VLCBsZXVyIGRlbWFuZGFudCBkZSBsaWLpcmVyIGxlcyBwb3J0cyBlbiDpY291dGUgYWZpbiBxdWUgbGUgbm91dmVhdQpwcm9jZXNzdXMgcHVpc3NlIGxlcyBwcmVuZHJlLiBTaSBxdW9pIHF1ZSBjZSBzb2l0IHNlIHBhc3NlIG1hbCwgbGUgbm91dmVhdQpwcm9jZXNzdXMgbGV1ciBlbnZlcnJhIHVuIHNpZ25hbCBTSUdUVElOIHBvdXIgbGV1ciBpbmRpcXVlciBxdSdpbHMgcGV1dmVudApzZSByZW1ldHRyZSBlbiDpY291dGUgZXQgY29udGludWVyIGxldXIgdHJhdmFpbC4gRW4gcmV2YW5jaGUsIHNpIGxhCmNvbmZpZ3VyYXRpb24gc2UgY2hhcmdlIGNvcnJlY3RlbWVudCwgYWxvcnMgaWxzIHJlY2V2cm9udCB1biBzaWduYWwgZGUgZGVtYW5kZQpkZSBmaW4gZGUgdHJhdmFpbCBlbiBkb3VjZXVyICgtc2YpLCBvdSBkZSB0ZXJtaW5haXNvbiBpbW3pZGlhdGUgKC1zdCkgcXVpCmNvdXBlcmEgbGVzIHNlc3Npb25zIGVuIGNvdXJzLiBVbiB1c2FnZSB0eXBpcXVlIHRlbCBxdWUgY2VsdWktY2kgcGVybWV0IGRlCnJlY2hhcmdlciB1bmUgY29uZmlndXJhdGlvbiBzYW5zIGludGVycnVwdGlvbiBkZSBzZXJ2aWNlIDoKCiAjIGhhcHJveHkgLXAgL3Zhci9ydW4vaGFwcm94eS5waWQgLXNmICQoY2F0IC92YXIvcnVuL2hhcHJveHkucGlkKQoKCjIuNSkgVGVtcHMgZCdleHBpcmF0aW9uIGRlcyBjb25uZXhpb25zCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCklsIGVzdCBwb3NzaWJsZSBkZSBwYXJhbel0cmVyIGNlcnRhaW5lcyBkdXLpZXMgZCdleHBpcmF0aW9uIGF1IG5pdmVhdSBkZXMKY29ubmV4aW9ucyBUQ1AuIFRyb2lzIHRlbXBzIGluZOlwZW5kYW50cyBzb250IGNvbmZpZ3VyYWJsZXMgZXQgYWNjZXB0ZW50IGRlcwp2YWxldXJzIGVuIG1pbGxpc2Vjb25kZXMuIFNpIGwndW5lIGRlIGNlcyB0cm9pcyB0ZW1wb3Jpc2F0aW9ucyBlc3QgZOlwYXNz6WUsIGxhCnNlc3Npb24gZXN0IHRlcm1pbullIOAgY2hhcXVlIGV4dHLpbWl06S4KCiAgLSB0ZW1wcyBkJ2F0dGVudGUgZCd1bmUgZG9ubullIGRlIGxhIHBhcnQgZHUgY2xpZW50LCBvdSBkZSBsYQogICAgcG9zc2liaWxpdOkgZGUgbHVpIGVudm95ZXIgZGVzIGRvbm7pZXMgOiAiY2xpdGltZW91dCIgOgoKICAgICAgICAjIHRpbWUtb3V0IGNsaWVudCDgIDJtbjMwLgogICAgICAgIGNsaXRpbWVvdXQgICAgICAgIDE1MDAwMAoKICAtIHRlbXBzIGQnYXR0ZW50ZSBkJ3VuZSBkb25u6WUgZGUgbGEgcGFydCBkdSBzZXJ2ZXVyLCBvdSBkZSBsYQogICAgcG9zc2liaWxpdOkgZGUgbHVpIGVudm95ZXIgZGVzIGRvbm7pZXMgOiAic3J2dGltZW91dCIgOgoKICAgICAgICAjIHRpbWUtb3V0IHNlcnZldXIg4CAzMHMuCiAgICAgICAgc3J2dGltZW91dCAgICAgICAgMzAwMDAKCiAgLSB0ZW1wcyBkJ2F0dGVudGUgZGUgbCfpdGFibGlzc2VtZW50IGQndW5lIGNvbm5leGlvbiB2ZXJzIHVuIHNlcnZldXIKICAgICJjb250aW1lb3V0IiA6CgogICAgICAgICMgb24gYWJhbmRvbm5lIHNpIGxhIGNvbm5leGlvbiBuJ2VzdCBwYXMg6XRhYmxpZSBhcHLocyA0IHNlY29uZGVzCiAgICAgICAgY29udGltZW91dCAgICAgICAgNDAwMAoKUmVtYXJxdWVzIDoKLS0tLS0tLS0tLS0KICAtICJjb250aW1lb3V0IiBldCAic3J2dGltZW91dCIgbidvbnQgcGFzIGQndXRpbGl06SBkYW5zIGxlIGNhcyBkdSBzZXJ2ZXVyIGRlCiAgICB0eXBlICJoZWFsdGgiLgogIC0gc291cyBkZSBmb3J0ZXMgY2hhcmdlcywgb3Ugc3VyIHVuIHLpc2VhdSBzYXR1cukgb3UgZOlmZWN0dWV1eCwgaWwgZXN0CiAgICBwb3NzaWJsZSBkZSBwZXJkcmUgZGVzIHBhcXVldHMuIER1IGZhaXQgcXVlIGxhIHByZW1p6HJlIHJldHJhbnNtaXNzaW9uCiAgICBUQ1AgbidhaXQgbGlldSBxdSdhdSBib3V0IGRlIDMgc2Vjb3VkZXMsIGZpeGVyIHVuIHRpbWVvdXQgZGUgY29ubmV4aW9uCiAgICBpbmbpcmlldXIg4CAzIHNlY29uZGVzIG5lIHBlcm1ldCBwYXMgZGUgc2UgcmF0dHJhcGVyIHN1ciBsYSBwZXJ0ZQogICAgZGUgcGFxdWV0cyBjYXIgbGEgc2Vzc2lvbiBhdXJhIOl06SBhYmFuZG9ubullIGF2YW50IGxhIHByZW1p6HJlCiAgICByZXRyYW5zbWlzc2lvbi4gVW5lIHZhbGV1ciBkZSA0IHNlY29uZGVzIHLpZHVpcmEgY29uc2lk6XJhYmxlbWVudAogICAgbGUgbm9tYnJlIGQn6WNoZWNzIGRlIGNvbm5leGlvbi4KCjIuNikgVGVudGF0aXZlcyBkZSByZWNvbm5leGlvbgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KTG9ycyBkJ3VuIOljaGVjIGRlIGNvbm5leGlvbiB2ZXJzIHVuIHNlcnZldXIsIGlsIGVzdCBwb3NzaWJsZSBkZQpyZXRlbnRlciAocG90ZW50aWVsbGVtZW50IHZlcnMgdW4gYXV0cmUgc2VydmV1ciwgZW4gY2FzIGRlIHLpcGFydGl0aW9uCmRlIGNoYXJnZSkuIExlIG5vbWJyZSBkZSBub3V2ZWxsZXMgdGVudGF0aXZlcyBpbmZydWN0dWV1c2VzIGF2YW50CmFiYW5kb24gZXN0IGZvdXJuaSBwYXIgbGUgcGFyYW3odHJlICJyZXRyaWVzIi4KCkV4ZW1wbGUgOgotLS0tLS0tLS0KICAgICAgICAjIG9uIGVzc2FpZSBlbmNvcmUgdHJvaXMgZm9pcyBtYXhpCiAgICAgICAgcmV0cmllcyAzCgpJbCBlc3Qg4CBub3RlciBxdWUgbGEgdGVudGF0aXZlIGRlIHJlY29ubmV4aW9uIHBldXQgYW1lbmVyIOAgdXRpbGlzZXIgdW4gYXV0cmUKc2VydmV1ciBzaSBsZSBwcmVtaWVyIGEgZGlzcGFydSBlbnRyZSBkZXV4IHRlbnRhdGl2ZXMgZGUgY29ubmV4aW9uLgoKCjIuNykgQWRyZXNzZSBkdSBzZXJ2ZXVyCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkxlIHNlcnZldXIgdmVycyBsZXF1ZWwgc29udCByZWRpcmln6WVzIGxlcyBub3V2ZWxsZXMgY29ubmV4aW9ucyBlc3QgZOlmaW5pIHBhcgpsZSBwYXJhbeh0cmUgImRpc3BhdGNoIiBzb3VzIGxhIGZvcm1lIDxhZHJlc3NlX2lwPjo8cG9ydD4uIElsIGNvcnJlc3BvbmQg4CB1bgpzZXJ2ZXVyIGQnYXNzaWduYXRpb24gZGUgY29va2llIGRhbnMgbGUgY2FzIG/5IGxlIHNlcnZpY2UgY29uc2lzdGUg4CBhc3N1cmVyCnVuaXF1ZW1lbnQgdW5lIHBlcnNpc3RlbmNlIEhUVFAsIG91IGJpZW4gc2ltcGxlbWVudCBhdSBzZXJ2ZXVyIGRlc3RpbmF0aW9uIGRhbnMKbGUgY2FzIGRlIHJlbGF5YWdlIFRDUCBzaW1wbGUuIENldCBhbmNpZW4gbW9kZSBuZSBwZXJtZXQgcGFzIGRlIHRlc3RlciBsJ+l0YXQKZHUgc2VydmV1ciBkaXN0YW50LCBldCBpbCBlc3QgbWFpbnRlbmFudCByZWNvbW1hbmTpIGQndXRpbGlzZXIgZGUgcHLpZulyZW5jZQpsZSBtb2RlICdiYWxhbmNlJy4KCkV4ZW1wbGUgOgotLS0tLS0tLS0KICAgICAgICAgICAjIG9uIGVudm9pZSB0b3V0ZXMgbGVzIG5vdXZlbGxlcyBjb25uZXhpb25zIGljaQogICAgICAgIGRpc3BhdGNoIDE5Mi4xNjguMS4yOjgwCgpSZW1hcnF1ZSA6Ci0tLS0tLS0tLS0KQ2UgcGFyYW3odHJlIG4nYSBwYXMgZCd1dGlsaXTpIHBvdXIgdW4gc2VydmV1ciBlbiBtb2RlICdoZWFsdGgnLCBuaSBlbiBtb2RlCidiYWxhbmNlJy4KCgoyLjgpIEFkcmVzc2UgZGUgc29ydGllCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KSWwgZXN0IHBvc3NpYmxlIGRlIGZvcmNlciBsJ2FkcmVzc2UgdXRpbGlz6WUgcG91ciDpdGFibGlyIGxlcyBjb25uZXhpb25zIHZlcnMKbGVzIHNlcnZldXJzIOAgbCdhaWRlIGR1IHBhcmFt6HRyZSAic291cmNlIi4gSWwgZXN0IG3qbWUgcG9zc2libGUgZGUgZm9yY2VyIGxlCnBvcnQsIGJpZW4gcXVlIGNldHRlIGZvbmN0aW9ubmFsaXTpIHNlIGxpbWl0ZSDgIGRlcyB1c2FnZXMgdHLocyBzcOljaWZpcXVlcy4KQydlc3QgcGFydGljdWxp6HJlbWVudCB1dGlsZSBlbiBjYXMgZCdhZHJlc3NhZ2UgbXVsdGlwbGUsIGV0IHBsdXMgZ+lu6XJhbGVtZW50CnBvdXIgcGVybWV0dHJlIGF1eCBzZXJ2ZXVycyBkZSB0cm91dmVyIGxlIGNoZW1pbiBkZSByZXRvdXIgZGFucyBkZXMgY29udGV4dGVzCmRlIHJvdXRhZ2UgZGlmZmljaWxlcy4gU2kgbCdhZHJlc3NlIGVzdCAnMC4wLjAuMCcgb3UgJyonIG91IHZpZGUsIGVsbGUgc2VyYQpjaG9pc2llIGxpYnJlbWVudCBwYXIgbGUgc3lzdGVtZS4gU2kgbGUgcG9ydCBlc3QgJzAnIG91IHZpZGUsIGlsIHNlcmEgY2hvaXNpCmxpYnJlbWVudCBwYXIgbGUgc3lzdOhtZS4gSWwgZXN0IOAgbm90ZXIgcXVlIGRlcHVpcyBsYSB2ZXJzaW9uIDEuMS4xOCwgbGVzCnRlc3RzIGRlIGJvbiBmb25jdGlvbm5lbWVudCBkZXMgc2VydmV1cnMgc2Vyb250IGF1c3NpIGVmZmVjdHXpcyDgIHBhcnRpciBkZSBsYQpzb3VyY2Ugc3DpY2lmaellIHBhciBjZSBwYXJhbeh0cmUuCgpFeGVtcGxlcyA6Ci0tLS0tLS0tLS0KICAgIGxpc3RlbiBodHRwX3Byb3h5ICo6ODAKICAgICAgICAgICAjIHRvdXRlcyBsZXMgY29ubmV4aW9ucyBwcmVubmVudCBsJ2FkcmVzc2UgMTkyLjE2OC4xLjIwMAogICAgICAgIHNvdXJjZSAxOTIuMTY4LjEuMjAwOjAKCiAgICBsaXN0ZW4gcmxvZ2luX3Byb3h5ICo6NTEzCiAgICAgICAgICAgIyB1dGlsaXNlciBsJ2FkcmVzc2UgMTkyLjE2OC4xLjIwMCBldCBsZSBwb3J0IHLpc2VydukgOTAwCiAgICAgICAgc291cmNlIDE5Mi4xNjguMS4yMDA6OTAwCgoKMi45KSBE6WZpbml0aW9uIGR1IG5vbSBkdSBjb29raWUKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KRW4gbW9kZSBIVFRQLCBpbCBlc3QgcG9zc2libGUgZGUgcmVjaGVyY2hlciBsYSB2YWxldXIgZCd1biBjb29raWUgcG91ciBzYXZvaXIKdmVycyBxdWVsIHNlcnZldXIgYWlndWlsbGVyIGxhIHJlcXXqdGUgdXRpbGlzYXRldXIuIExlIG5vbSBkdSBjb29raWUgZXN0IGRvbm7pCnBhciBsZSBwYXJhbeh0cmUgImNvb2tpZSIuCgpFeGVtcGxlIDoKLS0tLS0tLS0tCiAgICBsaXN0ZW4gaHR0cF9wcm94eSA6ODAKICAgICAgICBtb2RlIGh0dHAKICAgICAgICBjb29raWUgU0VSVkVSSUQKCk9uIHBldXQgbW9kaWZpZXIgbCd1dGlsaXNhdGlvbiBkdSBjb29raWUgcG91ciBsYSByZW5kcmUgcGx1cyBpbnRlbGxpZ2VudGUKdmlzLeAtdmlzIGRlcyBhcHBsaWNhdGlvbnMgcmVsYXnpZXMuIElsIGVzdCBwb3NzaWJsZSwgbm90YW1tZW50IGRlIHN1cHByaW1lciBvdQpy6eljcmlyZSB1biBjb29raWUgcmV0b3VybukgcGFyIHVuIHNlcnZldXIgYWNj6WTpIGVuIGRpcmVjdCwgZXQgZCdpbnPpcmVyIHVuCmNvb2tpZSBkYW5zIHVuZSBy6XBvbnNlIEhUVFAgYWRyZXNz6WUg4CB1biBzZXJ2ZXVyIHPpbGVjdGlvbm7pIGVuIHLpcGFydGl0aW9uCmRlIGNoYXJnZSwgZXQgbeptZSBkZSBzaWduYWxlciBhdXggcHJveGllcyBhbW9udCBkZSBuZSBwYXMgY2FjaGVyIGxlIGNvb2tpZQppbnPpcukuCgpFeGVtcGxlcyA6Ci0tLS0tLS0tLS0KClBvdXIgbmUgY29uc2VydmVyIGxlIGNvb2tpZSBxdSdlbiBhY2PocyBpbmRpcmVjdCwgZG9uYyDgIHRyYXZlcnMgbGUKZGlzcGF0Y2hldXIsIGV0IHN1cHByaW1lciB0b3V0ZXMgc2VzIOl2ZW50dWVsbGVzIG9jY3VyZW5jZXMgbG9ycyBkZXMgYWNj6HMKZGlyZWN0cyA6CgogICAgICAgIGNvb2tpZSBTRVJWRVJJRCBpbmRpcmVjdAoKUG91ciByZW1wbGFjZXIgbGEgdmFsZXVyIGQndW4gY29va2llIGV4aXN0YW50IHBhciBjZWxsZSBhdHRyaWJ16WUg4CB1biBzZXJ2ZXVyLApsb3JzIGQndW4gYWNj6HMgZGlyZWN0IDoKCiAgICAgICAgY29va2llIFNFUlZFUklEIHJld3JpdGUKClBvdXIgY3LpZXIgdW4gY29va2llIGNvbXBvcnRhbnQgbGEgdmFsZXVyIGF0dHJpYnXpZSDgIHVuIHNlcnZldXIgbG9ycyBkJ3VuCmFjY+hzIGVuIHLpcGFydGl0aW9uIGRlIGNoYXJnZSBpbnRlcm5lLiBEYW5zIGNlIGNhcywgaWwgZXN0IHNvdWhhaXRhYmxlIHF1ZQp0b3VzIGxlcyBzZXJ2ZXVycyBhaWVudCB1biBjb29raWUgcmVuc2VpZ27pLiBVbiBzZXJ2ZXVyIG5vbiBhc3NpZ27pIGQndW4gY29va2llCnJldG91cm5lcmEgdW4gY29va2llIHZpZGUgKGNvb2tpZSBkZSBzdXBwcmVzc2lvbikgOgoKICAgICAgICBjb29raWUgU0VSVkVSSUQgaW5zZXJ0CgpQb3VyIHLpdXRpbGlzZXIgdW4gY29va2llIGFwcGxpY2F0aWYgZXQgbHVpIHBy6WZpeGVyIGwnaWRlbnRpZmlhbnQgZHUgc2VydmV1ciwKcHVpcyBsZSBzdXBwcmltZXIgZGFucyBsZXMgcmVxdep0ZXMgc3VpdmFudGVzLCB1dGlsaXNlciBsJ29wdGlvbiAncHJlZml4Jy4gRWxsZQpwZXJtZXQgZCdpbnPpcmVyIHVuZSBpbnN0YW5jZSBkZSBoYXByb3h5IGRldmFudCB1bmUgYXBwbGljYXRpb24gc2FucyByaXNxdWVyCmQnaW5jb21wYXRpYmlsaXTpcyBk+2VzIOAgZGVzIGNsaWVudHMgcXVpIG5lIHN1cHBvcnRlcmFpZW50IHBhcyBkJ2FwcHJlbmRyZQpwbHVzIGQndW4gY29va2llIDoKCiAgICAgICBjb29raWUgSlNFU1NJT05JRCBwcmVmaXgKClBvdXIgaW5z6XJlciB1biBjb29raWUsIGVuIHMnYXNzdXJhbnQgcXUndW4gY2FjaGUgZW4gYW1vbnQgbmUgbGUgc3RvY2tlcmEgcGFzLApham91dGVyIGxlIG1vdCBjbOkgJ25vY2FjaGUnIGFwcuhzICdpbnNlcnQnIDoKCiAgICAgICAgY29va2llIFNFUlZFUklEIGluc2VydCBub2NhY2hlCgpQb3VyIGluc+lyZXIgdW4gY29va2llIHNldWxlbWVudCBzdWl0ZSBhdXggcmVxdep0ZXMgZGUgdHlwZSBQT1NULCBham91dGVyIGxlCm1vdCBjbOkgJ3Bvc3Rvbmx5JyBhcHLocyAnaW5zZXJ0JyA6CgogICAgICAgIGNvb2tpZSBTRVJWRVJJRCBpbnNlcnQgcG9zdG9ubHkKCgpSZW1hcnF1ZXMgOgotLS0tLS0tLS0tLQotIElsIGVzdCBwb3NzaWJsZSBkZSBjb21iaW5lciAnaW5zZXJ0JyBhdmVjICdpbmRpcmVjdCcgb3UgJ3Jld3JpdGUnIHBvdXIKICBzJ2FkYXB0ZXIg4CBkZXMgYXBwbGljYXRpb25zIGfpbulyYW50IGTpauAgbGUgY29va2llLCBhdmVjIHVuIGNvbnRlbnUKICBpbnZhbGlkZS4gSWwgc3VmZml0IHBvdXIgY2VsYSBkZSBsZXMgc3DpY2lmaWVyIHN1ciBsYSBt6m1lIGxpZ25lLgoKLSBkYW5zIGxlIGNhcyBv+SAnaW5zZXJ0JyBldCAnaW5kaXJlY3QnIHNvbnQgc3DpY2lmaelzLCBsZSBjb29raWUgbidlc3QgamFtYWlzCiAgdHJhbnNtaXMgYXUgc2VydmV1ciB2dSBxdSdpbCBuJ2VuIGEgcGFzIGNvbm5haXNzYW5jZSBldCBuZSBwb3VycmFpdCBwYXMgbGUKICBjb21wcmVuZHJlLgoKLSBpbCBlc3QgcGFydGljdWxp6HJlbWVudCByZWNvbW1hbmTpIGQndXRpbGlzZXIgJ25vY2FjaGUnIGVuIG1vZGUgaW5zZXJ0aW9uIHNpCiAgZGVzIGNhY2hlcyBwZXV2ZW50IHNlIHRyb3V2ZXIgZW50cmUgbGVzIGNsaWVudHMgZXQgbCdpbnN0YW5jZSBkdSBwcm94eS4gRGFucwogIGxlIGNhcyBjb250cmFpcmUsIHVuIGNhY2hlIEhUVFAgMS4wIHBvdXJyYWl0IGNhY2hlciBsYSBy6XBvbnNlLCBpbmNsdWFudCBsZQogIGNvb2tpZSBkZSBwZXJzaXN0ZW5jZSBpbnPpcuksIGRvbmMgcHJvdm9xdWVyIGRlcyBjaGFuZ2VtZW50cyBkZSBzZXJ2ZXVycyBwb3VyCiAgZGVzIGNsaWVudHMgcGFydGFnZWFudCBsZSBt6m1lIGNhY2hlLgoKLSBsZSBtb2RlICdwcmVmaXgnIG5lIG7pY2Vzc2l0ZSBwYXMgZCd1dGlsaXNlciAnaW5kaXJlY3QnLCAnbm9jYWNoZScsIG5pCiAgJ3Bvc3Rvbmx5JywgY2FyIHRvdXQgY29tbWUgbGUgbW9kZSAncmV3cml0ZScsIGlsIHMnYXBwdWllIHN1ciB1biBjb29raWUKICBwculzZW506SBwYXIgbCdhcHBsaWNhdGlvbiBxdWkgZXN0IGNlbnPpZSBzYXZvaXIg4CBxdWVsIG1vbWVudCBpbCBwZXV0CiAg6nRyZSDpbWlzIHNhbnMgcmlzcXVlLiBUb3V0ZWZvaXMsIGNvbW1lIGlsIG7pY2Vzc2l0ZSBkZSByZWN0aWZpZXIgbGUgY29va2llCiAgcHLpc2VudOkgcGFyIGxlIGNsaWVudCBkYW5zIGNoYXF1ZSByZXF16nRlIHVsdOlyaWV1cmUsIGlsIGVzdCBpbmRpc3BlbnNhYmxlCiAgZGUgcydhc3N1cmVyIHF1ZSBsZSBjbGllbnQgZXQgbGUgc2VydmV1ciBjb21tdW5pcXVlcm9udCBzYW5zICJrZWVwLWFsaXZlCiAgSFRUUCIuIERhbnMgbGUgZG91dGUsIGlsIGVzdCByZWNvbW1hbmTpIGQndXRpbGlzZXIgbCdvcHRpb24gImh0dHBjbG9zZSIuCgotIGxvcnNxdWUgbCdhcHBsaWNhdGlvbiBlc3QgYmllbiBjb25udWUsIGV0IHF1ZSBsZXMgcGFydGllcyBu6WNlc3NpdGFudCBkZSBsYQogIHBlcnNpc3RlbmNlIHNvbnQgc3lzdOltYXRpcXVlbWVudCBhY2PpZOllcyBwYXIgdW4gZm9ybXVsYWlyZSBlbiBtb2RlIFBPU1QsCiAgaWwgZXN0IHBsdXMgZWZmaWNhY2UgZW5jb3JlIGRlIGNvbWJpbmVyIGxlIG1vdCBjbOkgInBvc3Rvbmx5IiBhdmVjICJpbnNlcnQiCiAgZXQgImluZGlyZWN0IiwgY2FyIGxhIHBhZ2UgZCdhY2N1ZWlsIHJlc3RlIGNhY2hhYmxlLCBldCBjJ2VzdCBsJ2FwcGxpY2F0aW9uCiAgcXVpIGfocmUgbGUgJ2NhY2hlLWNvbnRyb2wnLgoKMi4xMCkgQXNzaWduYXRpb24gZCd1biBzZXJ2ZXVyIOAgdW5lIHZhbGV1ciBkZSBjb29raWUKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpFbiBtb2RlIEhUVFAsIGlsIGVzdCBwb3NzaWJsZSBkJ2Fzc29jaWVyIGRlcyB2YWxldXJzIGRlIGNvb2tpZSDgIGRlcyBzZXJ2ZXVycwpwYXIgbGUgcGFyYW3odHJlICdzZXJ2ZXInLiBMYSBzeW50YXhlIGVzdCA6CgogICAgc2VydmVyIDxpZGVudGlmaWFudD4gPGFkcmVzc2VfaXA+Ojxwb3J0PiBjb29raWUgPHZhbGV1cj4KCi0gPGlkZW50aWZpYW50PiBlc3QgdW4gbm9tIHF1ZWxjb25xdWUgZGUgc2VydmV1ciB1dGlsaXPpIHBvdXIgbCdpZGVudGlmaWVyIGRhbnMgbGEKICBjb25maWd1cmF0aW9uIGV0IGxlcyBsb2dzLgotIDxhZHJlc3NlX2lwPjo8cG9ydD4gZXN0IGxlIGNvdXBsZSBhZHJlc3NlLXBvcnQgc3VyIGxlcXVlbCBsZSBzZXJ2ZXVyIOljb3V0ZS4KLSA8dmFsZXVyPiBlc3QgbGEgdmFsZXVyIOAgcmVjb25uYe50cmUgb3UgcG9zaXRpb25uZXIgZGFucyBsZSBjb29raWUuCgpFeGVtcGxlIDogbGUgY29va2llIFNFUlZFUklEIHBldXQgY29udGVuaXIgc2VydmVyMDEgb3Ugc2VydmVyMDIKLS0tLS0tLS0tCiAgICBsaXN0ZW4gaHR0cF9wcm94eSA6ODAKICAgICAgICBtb2RlIGh0dHAKICAgICAgICBjb29raWUgU0VSVkVSSUQKICAgICAgICBkaXNwYXRjaCAxOTIuMTY4LjEuMTAwOjgwCiAgICAgICAgc2VydmVyIHdlYjEgMTkyLjE2OC4xLjE6ODAgY29va2llIHNlcnZlcjAxCiAgICAgICAgc2VydmVyIHdlYjIgMTkyLjE2OC4xLjI6ODAgY29va2llIHNlcnZlcjAyCgpBdHRlbnRpb24gOiBsYSBzeW50YXhlIGEgY2hhbmfpIGRlcHVpcyBsYSB2ZXJzaW9uIDEuMC4KLS0tLS0tLS0tLS0KCjMpIFLpcGFydGl0ZXVyIGRlIGNoYXJnZSBhdXRvbm9tZQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KCkxlIHJlbGFpcyBwZXV0IGVmZmVjdHVlciBsdWktbeptZSBsYSBy6XBhcnRpdGlvbiBkZSBjaGFyZ2UgZW50cmUgbGVzIGRpZmbpcmVudHMKc2VydmV1cnMgZOlmaW5pcyBwb3VyIHVuIHNlcnZpY2UgZG9ubuksIGVuIG1vZGUgVENQIGNvbW1lIGVuIG1vZGUgSFRUUC4gUG91cgpjZWxhLCBvbiBwculjaXNlIGxlIG1vdCBjbOkgJ2JhbGFuY2UnIGRhbnMgbGEgZOlmaW5pdGlvbiBkdSBzZXJ2aWNlLArpdmVudHVlbGxlbWVudCBzdWl2aSBkdSBub20gZCd1biBhbGdvcml0aG1lIGRlIHLpcGFydGl0aW9uLiBKdXNxdSfgIGxhIHZlcnNpb24KMS4yLjExLCBzZXVsICdyb3VuZHJvYmluJyDpdGFpdCBn6XLpLCBldCBjJ2VzdCBhdXNzaSBsYSB2YWxldXIgaW1wbGljaXRlIHBhcgpk6WZhdXQuIEF2ZWMgbGEgdmVyc2lvbiAxLjIuMTIsIGxlIG5vdXZlYXUgbW90IGNs6SAnc291cmNlJyBlc3QgYXBwYXJ1LiBJbCBlc3QK6XZpZGVudCBxdSdlbiBjYXMgZCd1dGlsaXNhdGlvbiBkdSBy6XBhcnRpdGV1ciBpbnRlcm5lLCBpbCBuZSBmYXVkcmEgcGFzCnNw6WNpZmllciBkJ2FkcmVzc2UgZGUgZGlzcGF0Y2gsIGV0IHF1J2lsIGZhdWRyYSBhdSBtb2lucyB1biBzZXJ2ZXVyLgoKRXhlbXBsZSA6IG3qbWUgcXVlIHBy6WPpZGVtbWVudCBlbiBy6XBhcnRpdGlvbiBpbnRlcm5lCi0tLS0tLS0tLQoKICAgIGxpc3RlbiBodHRwX3Byb3h5IDo4MAogICAgICAgIG1vZGUgaHR0cAogICAgICAgIGNvb2tpZSBTRVJWRVJJRAogICAgICAgIGJhbGFuY2Ugcm91bmRyb2JpbgogICAgICAgIHNlcnZlciB3ZWIxIDE5Mi4xNjguMS4xOjgwIGNvb2tpZSBzZXJ2ZXIwMQogICAgICAgIHNlcnZlciB3ZWIyIDE5Mi4xNjguMS4yOjgwIGNvb2tpZSBzZXJ2ZXIwMgoKRGVwdWlzIGxhIHZlcnNpb24gMS4xLjIyLCBpbCBlc3QgcG9zc2libGUgZGUgZOl0ZXJtaW5lciBhdXRvbWF0aXF1ZW1lbnQgbGUgcG9ydApkdSBzZXJ2ZXVyIHZlcnMgbGVxdWVsIHNlcmEgZW52b3npZSBsYSBjb25uZXhpb24sIGVuIGZvbmN0aW9uIGR1IHBvcnQgZCfpY291dGUKc3VyIGxlcXVlbCBsZSBjbGllbnQgcydlc3QgY29ubmVjdOkuIEVuIGVmZmV0LCBpbCB5IGEgNCBwb3NzaWJpbGl06XMgcG91ciBsZQpjaGFtcCA8cG9ydD4gZGUgbCdhZHJlc3NlIHNlcnZldXIgOgoKICAtIG5vbiBzcOljaWZp6SBvdSBudWwgOgogICAgbGEgY29ubmV4aW9uIHNlcmEgZW52b3npZSBhdSBzZXJ2ZXVyIHN1ciBsZSBt6m1lIHBvcnQgcXVlIGNlbHVpIHN1cgogICAgbGVxdWVsIGxlIHJlbGFpcyBhIHJl53UgbGEgY29ubmV4aW9uLgoKICAtIHZhbGV1ciBudW3pcmlxdWUgKHNldWwgY2FzIHN1cHBvcnTpIHBvdXIgbGVzIHZlcnNpb25zIGFudOlyaWV1cmVzKSA6CiAgICBsZSBzZXJ2ZXVyIHJlY2V2cmEgbGEgY29ubmV4aW9uIHN1ciBsZSBwb3J0IGTpc2lnbukuCgogIC0gdmFsZXVyIG51belyaXF1ZSBwculj6WTpZSBkJ3VuIHNpZ25lICcrJyA6CiAgICBsYSBjb25uZXhpb24gc2VyYSBlbnZveellIGF1IHNlcnZldXIgc3VyIGxlIG3qbWUgcG9ydCBxdWUgY2VsdWkgc3VyCiAgICBsZXF1ZWwgbGUgcmVsYWlzIGEgcmXndSBsYSBjb25uZXhpb24sIGF1cXVlbCBvbiBham91dGUgbGEgdmFsZXVyIGTpc2lnbullLgogICAgCiAgLSB2YWxldXIgbnVt6XJpcXVlIHBy6WPpZOllIGQndW4gc2lnbmUgJy0nIDoKICAgIGxhIGNvbm5leGlvbiBzZXJhIGVudm956WUgYXUgc2VydmV1ciBzdXIgbGUgbeptZSBwb3J0IHF1ZSBjZWx1aSBzdXIKICAgIGxlcXVlbCBsZSByZWxhaXMgYSByZed1IGxhIGNvbm5leGlvbiwgZHVxdWVsIG9uIHNvdXN0cmFpdCBsYSB2YWxldXIKICAgIGTpc2lnbullLgogICAgCkV4ZW1wbGVzIDoKLS0tLS0tLS0tLQoKIyBt6m1lIHF1ZSBwculj6WRlbW1lbnQKCiAgICBsaXN0ZW4gaHR0cF9wcm94eSA6ODAKICAgICAgICBtb2RlIGh0dHAKICAgICAgICBjb29raWUgU0VSVkVSSUQKICAgICAgICBiYWxhbmNlIHJvdW5kcm9iaW4KICAgICAgICBzZXJ2ZXIgd2ViMSAxOTIuMTY4LjEuMSBjb29raWUgc2VydmVyMDEKICAgICAgICBzZXJ2ZXIgd2ViMiAxOTIuMTY4LjEuMiBjb29raWUgc2VydmVyMDIKCiMgcmVsYXlhZ2Ugc2ltdWx0YW7pIGRlcyBwb3J0cyA4MCBldCA4MSBldCA4MDgwLTgwODkKCiAgICBsaXN0ZW4gaHR0cF9wcm94eSA6ODAsOjgxLDo4MDgwLTgwODkKICAgICAgICBtb2RlIGh0dHAKICAgICAgICBjb29raWUgU0VSVkVSSUQKICAgICAgICBiYWxhbmNlIHJvdW5kcm9iaW4KICAgICAgICBzZXJ2ZXIgd2ViMSAxOTIuMTY4LjEuMSBjb29raWUgc2VydmVyMDEKICAgICAgICBzZXJ2ZXIgd2ViMiAxOTIuMTY4LjEuMiBjb29raWUgc2VydmVyMDIKCiMgcmVsYXlhZ2UgVENQIGRlcyBwb3J0cyAyNSwgMzg5IGV0IDY2MyB2ZXJzIGxlcyBwb3J0cyAxMDI1LCAxMzg5IGV0IDE2NjMKCiAgICBsaXN0ZW4gaHR0cF9wcm94eSA6MjUsOjM4OSw6NjYzCiAgICAgICAgbW9kZSB0Y3AKICAgICAgICBiYWxhbmNlIHJvdW5kcm9iaW4KICAgICAgICBzZXJ2ZXIgc3J2MSAxOTIuMTY4LjEuMTorMTAwMAogICAgICAgIHNlcnZlciBzcnYyIDE5Mi4xNjguMS4yOisxMDAwCgpDb21tZSBpbmRpcXXpIHBy6WPpZGVtbWVudCwgbGEgdmVyc2lvbiAxLjIuMTIgYXBwb3J0YSBsZSBub3V2ZWF1IG1vdCBjbOkKJ3NvdXJjZScuIExvcnNxdWUgY2VsdWktY2kgZXN0IHV0aWxpc+ksIGwnYWRyZXNzZSBJUCBkdSBjbGllbnQgZXN0IGhhY2jpZSBldApkaXN0cmlidellIGRlIG1hbmnocmUgaG9tb2fobmUgcGFybWkgbGVzIHNlcnZldXJzIGRpc3BvbmlibGVzLCBkZSBzb3J0ZSBxdSd1bmUKbeptZSBhZHJlc3NlIElQIGFpbGxlIHRvdWpvdXJzIHN1ciBsZSBt6m1lIHNlcnZldXIgdGFudCBxdSdpbCBuJ3kgYSBhdWN1bgpjaGFuZ2VtZW50IGRhbnMgbGUgbm9tYnJlIGRlIHNlcnZldXJzIGRpc3BvbmlibGVzLiBDZWNpIHBldXQg6nRyZSB1dGlsaXPpIHBhcgpleGVtcGxlIHBvdXIgYXR0YWNoZXIgbGUgSFRUUCBldCBsZSBIVFRQUyBzdXIgdW4gbeptZSBzZXJ2ZXVyIHBvdXIgdW4gbeptZQpjbGllbnQuIENlbGEgcGV1dCDpZ2FsZW1lbnQg6nRyZSB1dGlsaXPpIHBvdXIgYW3pbGlvcmVyIGxhIHBlcnNpc3RhbmNlCmxvcnNxdSd1bmUgcGFydGllIGRlIGxhIHBvcHVsYXRpb24gZGVzIGNsaWVudHMgbidhY2NlcHRlIHBhcyBsZXMgY29va2llcy4gRGFucwpjZSBjYXMsIHNldWxzIGNlcyBkZXJuaWVycyBzZXJvbnQgcGVydHVyYulzIHBhciBsYSBwZXJ0ZSBkJ3VuIHNlcnZldXIuCgpOT1RFOiBpbCBlc3QgaW1wb3J0YW50IGRlIHByZW5kcmUgZW4gY29tcHRlIGxlIGZhaXQgcXVlIGJlYXVjb3VwIGQnaW50ZXJuYXV0ZXMKICAgICAgbmF2aWd1ZW50IOAgdHJhdmVycyBkZXMgZmVybWVzIGRlIHByb3hpZXMgcXVpIGFzc2lnbmVudCBkZXMgYWRyZXNzZXMgSVAKICAgICAgZGlmZulyZW50ZXMg4CBjaGFxdWUgcmVxdep0ZS4gRCdhdXRyZXMgaW50ZXJuYXV0ZXMgdXRpbGlzZW50IGRlcyBsaWVucyDgCiAgICAgIGxhIGRlbWFuZGUgZXQgb2J0aWVubmVudCB1bmUgYWRyZXNzZSBJUCBkaWZm6XJlbnRlIOAgY2hhcXVlIGNvbm5leGlvbi4gRGUKICAgICAgY2UgZmFpdCwgbGUgcGFyYW3odHJlICdzb3VyY2UnIGRvaXQg6nRyZSB1dGlsaXPpIGF2ZWMgdW5lIGV4dHLobWUKICAgICAgcHLpY2F1dGlvbi4KCkV4ZW1wbGVzIDoKLS0tLS0tLS0tLQoKIyBhc3N1cmVyIHF1J3VuZSBt6m1lIGFkcmVzc2UgSVAgaXJhIHN1ciBsZSBt6m1lIHNlcnZldXIgcG91ciB0b3V0IHNlcnZpY2UKCiAgICBsaXN0ZW4gaHR0cF9wcm94eQogICAgICAgIGJpbmQgOjgwLDo0NDMKICAgICAgICBtb2RlIGh0dHAKICAgICAgICBiYWxhbmNlIHNvdXJjZQogICAgICAgIHNlcnZlciB3ZWIxIDE5Mi4xNjguMS4xCiAgICAgICAgc2VydmVyIHdlYjIgMTkyLjE2OC4xLjIKCiMgYW3pbGlvcmVyIGxhIHBlcnNpc3RhbmNlIHBhciBsJ3V0aWxpc2F0aW9uIGRlIGxhIHNvdXJjZSBlbiBwbHVzIGR1IGNvb2tpZSA6CgogICAgbGlzdGVuIGh0dHBfcHJveHkgOjgwCiAgICAgICAgbW9kZSBodHRwCiAgICAgICAgY29va2llIFNFUlZFUklECiAgICAgICAgYmFsYW5jZSBzb3VyY2UKICAgICAgICBzZXJ2ZXIgd2ViMSAxOTIuMTY4LjEuMSBjb29raWUgc2VydmVyMDEKICAgICAgICBzZXJ2ZXIgd2ViMiAxOTIuMTY4LjEuMiBjb29raWUgc2VydmVyMDIKCgozLjEpIFN1cnZlaWxsYW5jZSBkZXMgc2VydmV1cnMKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCklsIGVzdCBwb3NzaWJsZSBkZSB0ZXN0ZXIgbCfpdGF0IGRlcyBzZXJ2ZXVycyBwYXIg6XRhYmxpc3NlbWVudCBkZSBjb25uZXhpb24KVENQIG91IHBhciBlbnZvaSBkJ3VuZSByZXF16nRlIEhUVFAuIFVuIHNlcnZldXIgaG9ycyBkJ3VzYWdlIG5lIHNlcmEgcGFzCnV0aWxpc+kgZGFucyBsZSBwcm9jZXNzdXMgZGUgculwYXJ0aXRpb24gZGUgY2hhcmdlIGludGVybmUuIFBvdXIgYWN0aXZlciBsYQpzdXJ2ZWlsbGFuY2UsIGFqb3V0ZXIgbGUgbW90IGNs6SAnY2hlY2snIOAgbGEgZmluIGRlIGxhIGTpY2xhcmF0aW9uIGR1IHNlcnZldXIuCklsIGVzdCBwb3NzaWJsZSBkZSBzcOljaWZpZXIgbCdpbnRlcnZhbGxlIChlbiBtaWxsaXNlY29uZGVzKSBz6XBhcmFudCBkZXV4CnRlc3RzIGR1IHNlcnZldXIgcGFyIGxlIHBhcmFt6HRyZSAiaW50ZXIiLCBsZSBub21icmUgZCfpY2hlY3MgYWNjZXB06XMgcGFyIGxlCnBhcmFt6HRyZSAiZmFsbCIsIGV0IGxlIG5vbWJyZSBkZSBzdWNj6HMgYXZhbnQgcmVwcmlzZSBwYXIgbGUgcGFyYW3odHJlICJyaXNlIi4KTGVzIHBhcmFt6HRyZXMgbm9uIHBy6WNpc+lzIHByZW5uZW50IGxlcyB2YWxldXJzIHN1aXZhbnRlcyBwYXIgZOlmYXV0IDoKCiAtIGludGVyIDogMjAwMAogLSByaXNlICA6IDIKIC0gZmFsbCAgOiAzCiAtIHBvcnQgIDogcG9ydCBkZSBjb25uZXhpb24gZHUgc2VydmV1cgoKTGUgbW9kZSBwYXIgZOlmYXV0IGNvbnNpc3RlIOAg6XRhYmxpciBkZXMgY29ubmV4aW9ucyBUQ1AgdW5pcXVlbWVudC4gRGFucwpjZXJ0YWlucyBjYXMgZGUgcGFubmVzLCBkZXMgc2VydmV1cnMgcGV1dmVudCBjb250aW51ZXIg4CBhY2NlcHRlciBsZXMKY29ubmV4aW9ucyBzYW5zIGxlcyB0cmFpdGVyLiBEZXB1aXMgbGEgdmVyc2lvbiAxLjEuMTYsIGhhcHJveHkgZXN0IGVuIG1lc3VyZQpkJ2Vudm95ZXIgZGVzIHJlcXXqdGVzIEhUVFAgY291cnRlcyBldCB0cuhzIHBldSBjb/t0ZXVzZXMuIExlcyB2ZXJzaW9ucyAxLjEuMTYKZXQgMS4xLjE3IHV0aWxpc2VudCAiT1BUSU9OUyAvIEhUVFAvMS4wIi4gRGFucyBsZXMgdmVyc2lvbnMgMS4xLjE4IOAgMS4xLjIwLApsZXMgcmVxdep0ZXMgb250IOl06SBjaGFuZ+llcyBlbiAiT1BUSU9OUyAqIEhUVFAvMS4wIiBwb3VyIGRlcyByYWlzb25zIGRlCmNvbnRy9GxlIGQnYWNj6HMgYXV4IHJlc3NvdXJjZXMuIENlcGVuZGFudCwgY2V0dGUgcmVxdep0ZSBkb2N1bWVudOllIGRhbnMgbGEKUkZDMjA2OCBuJ2VzdCBwYXMgY29tcHJpc2UgcGFyIHRvdXMgbGVzIHNlcnZldXJzLiBEb25jIOAgcGFydGlyIGRlIGxhIHZlcnNpb24KMS4xLjIxLCBsYSByZXF16nRlIHBhciBk6WZhdXQgZXN0IHJldmVudWUg4CAiT1BUSU9OUyAvIEhUVFAvMS4wIiwgbWFpcyBpbCBlc3QKcG9zc2libGUgZGUgcGFyYW3pdHJlciBsYSBwYXJ0aWUgVVJJLiBMZXMgcmVxdep0ZXMgT1BUSU9OUyBwculzZW50ZW50CmwnYXZhbnRhZ2UgZCfqdHJlIGZhY2lsZW1lbnQgZXh0cmFjdGlibGVzIGRlcyBsb2dzLCBldCBkZSBuZSBwYXMgaW5kdWlyZQpkJ2FjY+hzIGF1eCBmaWNoaWVycyBj9HTpIHNlcnZldXIuIFNldWxlcyBsZXMgculwb25zZXMgMnh4IGV0IDN4eCBzb250CmNvbnNpZOly6WVzIHZhbGlkZXMsIGxlcyBhdXRyZXMgKHkgY29tcHJpcyBub24tculwb25zZXMpIGFib3V0aXNzZW50IOAgdW4K6WNoZWMuIExlIHRlbXBzIG1heGltYWwgaW1wYXJ0aSBwb3VyIHVuZSBy6XBvbnNlIGVzdCDpZ2FsIOAgbCdpbnRlcnZhbGxlIGVudHJlCmRldXggdGVzdHMgKHBhcmFt6HRyZSAiaW50ZXIiKS4gUG91ciBhY3RpdmVyIGNlIG1vZGUsIHNw6WNpZmllciBsJ29wdGlvbgoiaHR0cGNoayIsIOl2ZW50dWVsbGVtZW50IHN1aXZpZSBkJ3VuZSBt6XRob2RlIGV0IGQndW5lIFVSSS4gTCdvcHRpb24gImh0dHBjaGsiCmFjY2VwdGUgZG9uYyA0IGZvcm1lcyA6CgogIC0gb3B0aW9uIGh0dHBjaGsgICAgICAgICAgICAgICAtPiBPUFRJT05TIC8gSFRUUC8xLjAKICAtIG9wdGlvbiBodHRwY2hrIFVSSSAgICAgICAgICAgLT4gT1BUSU9OUyA8VVJJPiBIVFRQLzEuMAogIC0gb3B0aW9uIGh0dHBjaGsgTUVUSCBVUkkgICAgICAtPiA8TUVUSD4gPFVSST4gSFRUUC8xLjAKICAtIG9wdGlvbiBodHRwY2hrIE1FVEggVVJJIFZFUiAgLT4gPE1FVEg+IDxVUkk+IDxWRVI+CgpIQVByb3h5IGVzdCBzb3V2ZW50IHV0aWxpc+kgcG91ciByZWxheWVyIGRpdmVycyBwcm90b2NvbGVzIHJlcG9zYW50IHN1ciBUQ1AsCnRlbHMgcXVlIEhUVFBTLCBTTVRQIG91IExEQVAsIGxlIHBsdXMgY29tbXVuIOl0YW50IEhUVFBTLiBVbiBwcm9ibOhtZSBhc3Nlegpjb3VyYW1tZW50IHJlbmNvbnRy6SBkYW5zIGxlcyBkYXRhIGNlbnRlcnMgZXN0IGxlIGJlc29pbiBkZSByZWxheWVyIGR1IHRyYWZpYwp2ZXJzIGRlcyBzZXJ2ZXVycyBsb2ludGFpbnMgdG91dCBlbiBtYWludGVuYW50IGxhIHBvc3NpYmlsaXTpIGRlIGJhc2N1bGVyIHN1cgp1biBzZXJ2ZXVyIGRlIHNlY291cnMuIExlcyB0ZXN0cyBwdXJlbWVudCBUQ1AgbmUgc3VmZmlzZW50IHBhcyB0b3Vqb3VycyBkYW5zCmNlcyBzaXR1YXRpb25zIGNhciBsJ29uIHRyb3V2ZSBzb3V2ZW50LCBkYW5zIGxhIGNoYe5uZSwgZGVzIHByb3hpZXMsIGZpcmV3YWxscwpvdSBy6XBhcnRpdGV1cnMgZGUgY2hhcmdlIHF1aSBwZXV2ZW50IGFjcXVpdHRlciBsYSBjb25uZXhpb24gYXZhbnQgcXUnZWxsZQpuJ2F0dGVpZ25lIGxlIHNlcnZldXIuIExhIHNldWxlIHNvbHV0aW9uIOAgY2UgcHJvYmzobWUgZXN0IGQnZW52b3llciBkZXMgdGVzdHMKYXBwbGljYXRpZnMuIENvbW1lIGxhIGRlbWFuZGUgcG91ciBsZXMgdGVzdHMgSFRUUFMgZXN0IOlsZXbpZSwgY2UgdGVzdCBhIOl06QppbXBs6W1lbnTpIGVuIHZlcnNpb24gMS4yLjE1IHN1ciBsYSBiYXNlIGRlIG1lc3NhZ2VzIFNTTHYzIENMSUVOVCBIRUxMTy4gUG91cgpsJ2FjdGl2ZXIsIHV0aWxpc2VyICJvcHRpb24gc3NsLWhlbGxvLWNoayIuIENlY2kgZW52ZXJyYSBkZXMgbWVzc2FnZXMgU1NMdjMKQ0xJRU5UIEhFTExPIGF1eCBzZXJ2ZXVycywgZW4gYW5ub27nYW50IHVuIHN1cHBvcnQgcG91ciBsYSBtYWpvcml06SBkZXMKYWxnb3JpdGhtZXMgZGUgY2hpZmZyZW1lbnQuIFNpIGVuIHJldG91ciwgbGUgc2VydmV1ciBlbnZvaWUgY2UgcXVpIHJlc3NlbWJsZSDgCnVuZSBy6XBvbnNlIFNTTHYzIFNFUlZFUiBIRUxMTyBvdSBBTEVSVCAocmVmdXMgZGVzIGFsZ29yaXRobWVzKSwgYWxvcnMgbGEKculwb25zZSBzZXJhIGNvbnNpZOly6WUgY29tbWUgdmFsaWRlLiBOb3RlciBxdSdBcGFjaGUgbmUgcHJvZHVpdCBwYXMgZGUgbG9nCmxvcnNxdSdpbCByZedvaXQgZGVzIG1lc3NhZ2VzIEhFTExPLCBjZSBxdWkgZW4gZmFpdCB1biB0eXBlIGRlIG1lc3NhZ2UKcGFyZmFpdGVtZW50IGFkYXB06SDgIGNlIGJlc29pbi4KClZvaXIgbGVzIGV4ZW1wbGVzIGNpLWFwcuhzLiAgICAgICAgCgpEZXB1aXMgbGEgdmVyc2lvbiAxLjEuMTcsIGlsIGVzdCBwb3NzaWJsZSBkZSBk6WZpbmlyIGRlcyBzZXJ2ZXVycyBkZSBzZWNvdXJzLAp1dGlsaXPpcyB1bmlxdWVtZW50IGxvcnNxdSdhdWN1biBkZXMgYXV0cmVzIHNlcnZldXJzIG5lIGZvbmN0aW9ubmUuIFBvdXIgY2VsYSwKYWpvdXRlciBsZSBtb3QgY2zpICJiYWNrdXAiIHN1ciBsYSBsaWduZSBkZSBk6WZpbml0aW9uIGR1IHNlcnZldXIuIFVuIHNlcnZldXIKZGUgc2Vjb3VycyBuJ2VzdCBhcHBlbOkgcXVlIGxvcnNxdWUgdG91cyBsZXMgc2VydmV1cnMgbm9ybWF1eCwgYWluc2kgcXVlIHRvdXMKbGVzIHNlcnZldXJzIGRlIHNlY291cnMgcXVpIGxlIHBy6WPoZGVudCBzb250IGhvcnMgZCd1c2FnZS4gSWwgbid5IGEgZG9uYyBwYXMKZGUgculwYXJ0aXRpb24gZGUgY2hhcmdlIGVudHJlIGRlcyBzZXJ2ZXVycyBkZSBzZWNvdXJzIHBhciBk6WZhdXQuIEEgcGFydGlyCmRlIGxhIHZlcnNpb24gMS4yLjksIGlsIGVzdCBwb3NzaWJsZSBkZSBsZXMgdXRpbGlzZXIgc2ltdWx0YW7pbWVudCBncuJjZSDgCmwnb3B0aW9uICdhbGxiYWNrdXBzJy4gQ2UgdHlwZSBkZSBzZXJ2ZXVycyBwZXV0IHNlcnZpciDgIHJldG91cm5lciBkZXMgcGFnZXMKZCdpbmRpc3BvbmliaWxpdOkgZGUgc2VydmljZS4gRGFucyBjZSBjYXMsIGlsIGVzdCBwculm6XJhYmxlIGRlIG5lIHBhcyBhZmZlY3RlcgpkZSBjb29raWUsIGFmaW4gcXVlIGxlcyBjbGllbnRzIHF1aSBsZSByZW5jb250cmVudCBuJ3kgc29pZW50IHBhcyBhZmZlY3Tpcwpk6WZpbml0aXZlbWVudC4gTGUgZmFpdCBkZSBuZSBwYXMgbWV0dHJlIGRlIGNvb2tpZSBlbnZvaWUgdW4gY29va2llIHZpZGUsIGNlCnF1aSBhIHBvdXIgZWZmZXQgZGUgc3VwcHJpbWVyIHVuIOl2ZW50dWVsIGNvb2tpZSBhZmZlY3TpIHBy6WPpZGVtbWVudC4KCkRlcHVpcyBsYSB2ZXJzaW9uIDEuMS4yMiwgaWwgZXN0IHBvc3NpYmxlIGQnZW52b3llciBsZXMgdGVzdHMgZGUgZm9uY3Rpb25uZW1lbnQKdmVycyB1biBwb3J0IGRpZmbpcmVudCBkZSBjZWx1aSBkZSBzZXJ2aWNlLiBDJ2VzdCBu6WNlc3NhaXJlIHByaW5jaXBhbGVtZW50CnBvdXIgbGVzIGNvbmZpZ3VyYXRpb25zIG/5IGxlIHNlcnZldXIgbidhIHBhcyBkZSBwb3J0IHBy6WTpZmluaSwgcGFyIGV4ZW1wbGUKbG9yc3F1J2lsIGVzdCBk6WR1aXQgZHUgcG9ydCBkJ2FjY2VwdGF0aW9uIGRlIGxhIGNvbm5leGlvbi4gUG91ciBjZWxhLCB1dGlsaXNlcgpsZSBwYXJhbeh0cmUgJ3BvcnQnIHN1aXZpIGR1IG51belybyBkZSBwb3J0IGRldmFudCBy6XBvbmRyZSBhdXggcmVxdep0ZXMuCgpFbmZpbiwgZGVwdWlzIGxhIHZlcnNpb24gMS4xLjE3LCBpbCBlc3QgcG9zc2libGUgZGUgdmlzdWFsaXNlciByYXBpZGVtZW50Cmwn6XRhdCBjb3VyYW50IGRlIHRvdXMgbGVzIHNlcnZldXJzLiBQb3VyIGNlbGEsIGlsIHN1ZmZpdCBkJ2Vudm95ZXIgdW4gc2lnbmFsClNJR0hVUCBhdSBwcm9jZXNzdXMgcHJveHkuIEwn6XRhdCBkZSB0b3VzIGxlcyBzZXJ2ZXVycyBkZSB0b3VzIGxlcyBwcm94aWVzIGVzdAplbnZveekgZGFucyBsZXMgbG9ncyBlbiBuaXZlYXUgIm5vdGljZSIsIGFpbnNpIHF1ZSBzdXIgbGEgc29ydGllIGQnZXJyZXVycyBzaQplbGxlIGVzdCBhY3RpdmUuIEMnZXN0IHVuZSBib25uZSByYWlzb24gcG91ciBhdm9pciBhdSBtb2lucyB1biBzZXJ2ZXVyIGRlIGxvZ3MKbG9jYWwgZW4gbml2ZWF1IG5vdGljZS4KCkRlcHVpcyBsYSB2ZXJzaW9uIDEuMS4xOCAoZXQgMS4yLjEpLCB1biBtZXNzYWdlIGQndXJnZW5jZSBlc3QgZW52b3npIGRhbnMgbGVzCmxvZ3MgZW4gbml2ZWF1ICdlbWVyZycgc2kgdG91cyBsZXMgc2VydmV1cnMgZCd1bmUgbeptZSBpbnN0YW5jZSBzb250IHRvbWLpcywKYWZpbiBkZSBub3RpZmllciBsJ2FkbWluaXN0cmF0ZXVyIHF1J2lsIGZhdXQgcHJlbmRyZSB1bmUgYWN0aW9uIGltbelkaWF0ZS4KCkRlcHVpcyBsZXMgdmVyc2lvbnMgMS4xLjMwIGV0IDEuMi4zLCBwbHVzaWV1cnMgc2VydmV1cnMgcGV1dmVudCBwYXJ0YWdlciBsYQpt6m1lIHZhbGV1ciBkZSBjb29raWUuIEMnZXN0IHBhcnRpY3VsaehyZW1lbnQgdXRpbGUgZW4gbW9kZSBiYWNrdXAsIHBvdXIKc+lsZWN0aW9ubmVyIGRlcyBjaGVtaW5zIGFsdGVybmF0aWZzIHBvdXIgdW4gc2VydmV1ciBkb25u6SwgcG91ciBtZXR0cmUgZW4Kb2V1dnJlIGwnYXJy6nQgZW4gZG91Y2V1ciBkJ3VuIHNlcnZldXIsIG91IHBvdXIgZGlyaWdlciBsZXMgY2xpZW50cwp0ZW1wb3JhaXJlbWVudCB2ZXJzIHVuZSBwYWdlIGQnZXJyZXVyIGVuIGF0dGVuZGFudCBsZSByZWTpbWFycmFnZSBkJ3VuZQphcHBsaWNhdGlvbi4gTGUgcHJpbmNpcGUgZXN0IHF1ZSBsb3JzcXUndW4gc2VydmV1ciBlc3QgZOl0ZWN06SBjb21tZSBpbm9w6XJhbnQsCmxlIHByb3h5IGNoZXJjaGVyYSBsZSBwcm9jaGFpbiBzZXJ2ZXVyIHBvc3PpZGFudCBsYSBt6m1lIHZhbGV1ciBkZSBjb29raWUgcG91cgpjaGFxdWUgY2xpZW50IHF1aSBsZSBkZW1hbmRlcmEuIFMnaWwgbmUgdHJvdXZlIHBhcyBkZSBzZXJ2ZXVyIG5vcm1hbCwgYWxvcnMgaWwKbGUgY2hlcmNoZXJhIHBhcm1pIGxlcyBzZXJ2ZXVycyBkZSBiYWNrdXAuIENvbnN1bHRlciBsZSBndWlkZSBkJ2FyY2hpdGVjdHVyZQpwb3VyIHBsdXMgZCdpbmZvcm1hdGlvbnMuCgpFeGVtcGxlcyA6Ci0tLS0tLS0tLS0KIyBjb25mIGR1IHBhcmFncmFwaGUgMykgYXZlYyBzdXJ2ZWlsbGFuY2UgVENQCiAgICBsaXN0ZW4gaHR0cF9wcm94eSAwLjAuMC4wOjgwCiAgICAgICAgbW9kZSBodHRwCiAgICAgICAgY29va2llIFNFUlZFUklECiAgICAgICAgYmFsYW5jZSByb3VuZHJvYmluCiAgICAgICAgc2VydmVyIHdlYjEgMTkyLjE2OC4xLjE6ODAgY29va2llIHNlcnZlcjAxIGNoZWNrCiAgICAgICAgc2VydmVyIHdlYjIgMTkyLjE2OC4xLjI6ODAgY29va2llIHNlcnZlcjAyIGNoZWNrIGludGVyIDUwMCByaXNlIDEgZmFsbCAyCgojIG3qbWUgcXVlIHBy6WPpZGVtbWVudCBhdmVjIHN1cnZlaWxsYW5jZSBIVFRQIHBhciAnT1BUSU9OUyAvIEhUVFAvMS4wJwogICAgbGlzdGVuIGh0dHBfcHJveHkgMC4wLjAuMDo4MAogICAgICAgIG1vZGUgaHR0cAogICAgICAgIGNvb2tpZSBTRVJWRVJJRAogICAgICAgIGJhbGFuY2Ugcm91bmRyb2JpbgogICAgICAgIG9wdGlvbiBodHRwY2hrCiAgICAgICAgc2VydmVyIHdlYjEgMTkyLjE2OC4xLjE6ODAgY29va2llIHNlcnZlcjAxIGNoZWNrCiAgICAgICAgc2VydmVyIHdlYjIgMTkyLjE2OC4xLjI6ODAgY29va2llIHNlcnZlcjAyIGNoZWNrIGludGVyIDUwMCByaXNlIDEgZmFsbCAyCgojIG3qbWUgcXVlIHBy6WPpZGVtbWVudCBhdmVjIHN1cnZlaWxsYW5jZSBIVFRQIHBhciAnT1BUSU9OUyAvaW5kZXguaHRtbCBIVFRQLzEuMCcKICAgIGxpc3RlbiBodHRwX3Byb3h5IDAuMC4wLjA6ODAKICAgICAgICBtb2RlIGh0dHAKICAgICAgICBjb29raWUgU0VSVkVSSUQKICAgICAgICBiYWxhbmNlIHJvdW5kcm9iaW4KICAgICAgICBvcHRpb24gaHR0cGNoayAvaW5kZXguaHRtbAogICAgICAgIHNlcnZlciB3ZWIxIDE5Mi4xNjguMS4xOjgwIGNvb2tpZSBzZXJ2ZXIwMSBjaGVjawogICAgICAgIHNlcnZlciB3ZWIyIDE5Mi4xNjguMS4yOjgwIGNvb2tpZSBzZXJ2ZXIwMiBjaGVjayBpbnRlciA1MDAgcmlzZSAxIGZhbGwgMgoKIyBpZGVtIGF2ZWMgc3VydmVpbGxhbmNlIEhUVFAgcGFyICdIRUFEIC9pbmRleC5qc3A/IEhUVFAvMS4xXHJcbkhvc3Q6IHd3dycKICAgIGxpc3RlbiBodHRwX3Byb3h5IDAuMC4wLjA6ODAKICAgICAgICBtb2RlIGh0dHAKICAgICAgICBjb29raWUgU0VSVkVSSUQKICAgICAgICBiYWxhbmNlIHJvdW5kcm9iaW4KICAgICAgICBvcHRpb24gaHR0cGNoayBIRUFEIC9pbmRleC5qc3A/IEhUVFAvMS4xXHJcbkhvc3Q6XCB3d3cKICAgICAgICBzZXJ2ZXIgd2ViMSAxOTIuMTY4LjEuMTo4MCBjb29raWUgc2VydmVyMDEgY2hlY2sKICAgICAgICBzZXJ2ZXIgd2ViMiAxOTIuMTY4LjEuMjo4MCBjb29raWUgc2VydmVyMDIgY2hlY2sgaW50ZXIgNTAwIHJpc2UgMSBmYWxsIDIKCiMgculwYXJ0aXRpb24gYXZlYyBwZXJzaXN0ZW5jZSBiYXPpZSBzdXIgbGUgcHLpZml4ZSBkZSBjb29raWUsIGV0IGFycup0IGVuCiMgZG91Y2V1ciB1dGlsaXNhbnQgdW4gc2Vjb25kIHBvcnQgKDgxKSBqdXN0ZSBwb3VyIGxlcyBoZWFsdGgtY2hlY2tzLgogICAgbGlzdGVuIGh0dHBfcHJveHkgMC4wLjAuMDo4MAogICAgICAgbW9kZSBodHRwCiAgICAgICBjb29raWUgSlNFU1NJT05JRCBwcmVmaXgKICAgICAgIGJhbGFuY2Ugcm91bmRyb2JpbgogICAgICAgb3B0aW9uIGh0dHBjaGsgSEVBRCAvaW5kZXguanNwPyBIVFRQLzEuMVxyXG5Ib3N0Olwgd3d3CiAgICAgICBzZXJ2ZXIgd2ViMS1ub3JtIDE5Mi4xNjguMS4xOjgwIGNvb2tpZSBzMSBjaGVjayBwb3J0IDgxCiAgICAgICBzZXJ2ZXIgd2ViMi1ub3JtIDE5Mi4xNjguMS4yOjgwIGNvb2tpZSBzMiBjaGVjayBwb3J0IDgxCiAgICAgICBzZXJ2ZXIgd2ViMS1zdG9wIDE5Mi4xNjguMS4xOjgwIGNvb2tpZSBzMSBjaGVjayBwb3J0IDgwIGJhY2t1cAogICAgICAgc2VydmVyIHdlYjItc3RvcCAxOTIuMTY4LjEuMjo4MCBjb29raWUgczIgY2hlY2sgcG9ydCA4MCBiYWNrdXAKCiMgSW5zZXJ0aW9uIGF1dG9tYXRpcXVlIGRlIGNvb2tpZSBkYW5zIGxhIHLpcG9uc2UgZHUgc2VydmV1ciwgZXQgc3VwcHJlc3Npb24KIyBhdXRvbWF0aXF1ZSBkYW5zIGxhIHJlcXXqdGUsIHRvdXQgZW4gaW5kaXF1YW50IGF1eCBjYWNoZXMgZGUgbmUgcGFzIGdhcmRlcgojIGNlIGNvb2tpZS4KICAgIGxpc3RlbiB3ZWJfYXBwbCAwLjAuMC4wOjgwCiAgICAgICAgbW9kZSBodHRwCiAgICAgICAgY29va2llIFNFUlZFUklEIGluc2VydCBub2NhY2hlIGluZGlyZWN0CiAgICAgICAgYmFsYW5jZSByb3VuZHJvYmluCiAgICAgICAgc2VydmVyIHdlYjEgMTkyLjE2OC4xLjE6ODAgY29va2llIHNlcnZlcjAxIGNoZWNrCiAgICAgICAgc2VydmVyIHdlYjIgMTkyLjE2OC4xLjI6ODAgY29va2llIHNlcnZlcjAyIGNoZWNrCgojIGlkZW0gYXZlYyBzZXJ2ZXVyIGFwcGxpY2F0aWYgZGUgc2Vjb3VycyBzdXIgYXV0cmUgc2l0ZSwgZXQgc2VydmV1ciBkZSBwYWdlcyBkJ2VycmV1cnMKICAgIGxpc3RlbiB3ZWJfYXBwbCAwLjAuMC4wOjgwCiAgICAgICAgbW9kZSBodHRwCiAgICAgICAgY29va2llIFNFUlZFUklEIGluc2VydCBub2NhY2hlIGluZGlyZWN0CiAgICAgICAgYmFsYW5jZSByb3VuZHJvYmluCiAgICAgICAgc2VydmVyIHdlYjEgMTkyLjE2OC4xLjE6ODAgY29va2llIHNlcnZlcjAxIGNoZWNrCiAgICAgICAgc2VydmVyIHdlYjIgMTkyLjE2OC4xLjI6ODAgY29va2llIHNlcnZlcjAyIGNoZWNrCiAgICAgICAgc2VydmVyIHdlYi1iYWNrdXAgMTkyLjE2OC4yLjE6ODAgY29va2llIHNlcnZlcjAzIGNoZWNrIGJhY2t1cAogICAgICAgIHNlcnZlciB3ZWItZXhjdXNlIDE5Mi4xNjguMy4xOjgwIGNoZWNrIGJhY2t1cAoKIyByZWxheWFnZSBTTVRQK1RMUyBhdmVjIHRlc3QgZHUgc2VydmV1ciBldCBzZXJ2ZXVyIGRlIGJhY2t1cAoKICAgIGxpc3RlbiBodHRwX3Byb3h5IDoyNSw6NTg3CiAgICAgICAgbW9kZSB0Y3AKICAgICAgICBiYWxhbmNlIHJvdW5kcm9iaW4KICAgICAgICBzZXJ2ZXIgc3J2MSAxOTIuMTY4LjEuMSBjaGVjayBwb3J0IDI1IGludGVyIDMwMDAwIHJpc2UgMSBmYWxsIDIKICAgICAgICBzZXJ2ZXIgc3J2MiAxOTIuMTY4LjEuMiBiYWNrdXAKCiMgcmVsYXlhZ2UgSFRUUFMgYXZlYyB0ZXN0IGR1IHNlcnZldXIgZXQgc2VydmV1ciBkZSBiYWNrdXAKCiAgICBsaXN0ZW4gaHR0cF9wcm94eSA6NDQzCiAgICAgICAgbW9kZSB0Y3AKCW9wdGlvbiBzc2wtaGVsbG8tY2hrCiAgICAgICAgYmFsYW5jZSByb3VuZHJvYmluCiAgICAgICAgc2VydmVyIHNydjEgMTkyLjE2OC4xLjEgY2hlY2sgaW50ZXIgMzAwMDAgcmlzZSAxIGZhbGwgMgogICAgICAgIHNlcnZlciBzcnYyIDE5Mi4xNjguMS4yIGJhY2t1cAoKIyBVdGlsaXNhdGlvbiBkJ3VuIGdyb3VwZSBkZSBzZXJ2ZXVycyBwb3VyIGxlIGJhY2t1cCAobuljZXNzaXRlIGhhcHJveHkgMS4yLjkpCiAgICBsaXN0ZW4gaHR0cF9wcm94eSAwLjAuMC4wOjgwCiAgICAgICAgbW9kZSBodHRwCiAgICAgICAgYmFsYW5jZSByb3VuZHJvYmluCiAgICAgICAgb3B0aW9uIGh0dHBjaGsKICAgICAgICBzZXJ2ZXIgaW5zdDEgMTkyLjE2OC4xLjE6ODAgY29va2llIHMxIGNoZWNrCiAgICAgICAgc2VydmVyIGluc3QyIDE5Mi4xNjguMS4yOjgwIGNvb2tpZSBzMiBjaGVjawogICAgICAgIHNlcnZlciBpbnN0MyAxOTIuMTY4LjEuMzo4MCBjb29raWUgczMgY2hlY2sKICAgICAgICBzZXJ2ZXIgYmFjazEgMTkyLjE2OC4xLjEwOjgwIGNoZWNrIGJhY2t1cAogICAgICAgIHNlcnZlciBiYWNrMiAxOTIuMTY4LjEuMTE6ODAgY2hlY2sgYmFja3VwCiAgICAgICAgb3B0aW9uIGFsbGJhY2t1cHMgICMgYWxsIGJhY2t1cHMgd2lsbCBiZSB1c2VkCgoKMy4yKSBSZWNvbm5leGlvbiB2ZXJzIHVuIHLpcGFydGl0ZXVyIGVuIGNhcyBkJ+ljaGVjIGRpcmVjdAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkVuIG1vZGUgSFRUUCwgc2kgdW4gc2VydmV1ciBk6WZpbmkgcGFyIHVuIGNvb2tpZSBuZSBy6XBvbmQgcGx1cywgbGVzIGNsaWVudHMKc2Vyb250IGTpZmluaXRpdmVtZW50IGFpZ3VpbGzpcyBkZXNzdXMg4CBjYXVzZSBkZSBsZXVyIGNvb2tpZSwgZXQgZGUgY2UgZmFpdCwKZOlmaW5pdGl2ZW1lbnQgcHJpdulzIGRlIHNlcnZpY2UuIExhIHNw6WNpZmljYXRpb24gZHUgcGFyYW3odHJlICdyZWRpc3BhdGNoJwphdXRvcmlzZSBkYW5zIGNlIGNhcyDgIHJlbnZveWVyIGxlcyBjb25uZXhpb25zIOljaG916WVzIHZlcnMgbGUgculwYXJ0aXRldXIKKGV4dGVybmUgb3UgaW50ZXJuZSkgYWZpbiBkJ2Fzc2lnbmVyIHVuIG5vdXZlYXUgc2VydmV1ciDgIGNlcyBjbGllbnRzLgoKRXhlbXBsZSA6Ci0tLS0tLS0tLQogICAgbGlzdGVuIGh0dHBfcHJveHkgMC4wLjAuMDo4MAogICAgICAgIG1vZGUgaHR0cAogICAgICAgIGNvb2tpZSBTRVJWRVJJRAogICAgICAgIGRpc3BhdGNoIDE5Mi4xNjguMS4xMDA6ODAKICAgICAgICBzZXJ2ZXIgd2ViMSAxOTIuMTY4LjEuMTo4MCBjb29raWUgc2VydmVyMDEKICAgICAgICBzZXJ2ZXIgd2ViMiAxOTIuMTY4LjEuMjo4MCBjb29raWUgc2VydmVyMDIKICAgICAgICByZWRpc3BhdGNoICMgcmVudm95ZXIgdmVycyBkaXNwYXRjaCBzaSByZWZ1cyBkZSBjb25uZXhpb24uCgpQYXIgZOlmYXV0IChldCBkYW5zIGxlcyB2ZXJzaW9ucyAxLjEuMTYgZXQgYW506XJpZXVyZXMpLCBsZSBwYXJhbeh0cmUKcmVkaXNwYXRjaCBuZSBzJ2FwcGxpcXVlIHF1J2F1eCDpY2hlY3MgZGUgY29ubmV4aW9uIGF1IHNlcnZldXIuIERlcHVpcyBsYQp2ZXJzaW9uIDEuMS4xNywgaWwgcydhcHBsaXF1ZSBhdXNzaSBhdXggY29ubmV4aW9ucyBkZXN0aW7pZXMg4CBkZXMgc2VydmV1cnMKaWRlbnRpZmnpcyBjb21tZSBob3JzIGQndXNhZ2UgcGFyIGxhIHN1cnZlaWxsYW5jZS4gU2kgbCdvbiBzb3VoYWl0ZSBtYWxncukKdG91dCBxdSd1biBjbGllbnQgZGlzcG9zYW50IGQndW4gY29va2llIGNvcnJlc3BvbmRhbnQg4CB1biBzZXJ2ZXVyIGTpZmVjdHVldXgKdGVudGUgZGUgcyd5IGNvbm5lY3RlciwgaWwgZmF1dCBwculjaXNlciBsJ29wdGlvbiAicGVyc2lzdCIgOgoKICAgIGxpc3RlbiBodHRwX3Byb3h5IDAuMC4wLjA6ODAKICAgICAgICBtb2RlIGh0dHAKICAgICAgICBvcHRpb24gcGVyc2lzdAogICAgICAgIGNvb2tpZSBTRVJWRVJJRAogICAgICAgIGRpc3BhdGNoIDE5Mi4xNjguMS4xMDA6ODAKICAgICAgICBzZXJ2ZXIgd2ViMSAxOTIuMTY4LjEuMTo4MCBjb29raWUgc2VydmVyMDEKICAgICAgICBzZXJ2ZXIgd2ViMiAxOTIuMTY4LjEuMjo4MCBjb29raWUgc2VydmVyMDIKICAgICAgICByZWRpc3BhdGNoICMgcmVudm95ZXIgdmVycyBkaXNwYXRjaCBzaSBzZXJ2ZXVyIEhTLgoKCjMuMykgQXNzaWduYXRpb24gZGUgcG9pZHMgZGlmZulyZW50cyDgIGRlcyBzZXJ2ZXVycwotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KUGFyZm9pcyBpbCBhcnJpdmUgZCdham91dGVyIGRlIG5vdXZlYXV4IHNlcnZldXJzIHBvdXIgYWNjcm/udHJlIGxhIGNhcGFjaXTpCmQndW5lIGZlcm1lIGRlIHNlcnZldXIsIG1haXMgbGUgbm91dmVhdSBzZXJ2ZXVyIGVzdCBzb2l0IGJlYXVjb3VwIHBsdXMgcGV0aXQKcXVlIGxlcyBhdXRyZXMgKGRhbnMgbGUgY2FzIGQndW4gYWpvdXQgZCd1cmdlbmNlIGRlIG1hdOlyaWVsIGRlIHLpY3Vw6XJhdGlvbiksCnNvaXQgcGx1cyBwdWlzc2FudCAobG9ycyBkJ3VuIGludmVzdGlzc2VtZW50IGRhbnMgZHUgbWF06XJpZWwgbmV1ZikuIFBvdXIgY2V0dGUKcmFpc29uLCBpbCBzZW1ibGUgcGFyZm9pcyBqdWRpY2lldXggZGUgcG91dm9pciBlbnZveWVyIHBsdXMgZGUgY2xpZW50cyB2ZXJzIGxlcwpwbHVzIGdyb3Mgc2VydmV1cnMuIEp1c3F1J+AgbGEgdmVyc2lvbiAxLjIuMTEsIGlsIOl0YWl0IG7pY2Vzc2FpcmUgZGUgculwbGlxdWVyCnBsdXNpZXVycyBmb2lzIGxlcyBk6WZpbml0aW9ucyBkZXMgc2VydmV1cnMgcG91ciBhdWdtZW50ZXIgbGV1ciBwb2lkcy4gRGVwdWlzCmxhIHZlcnNpb24gMS4yLjEyLCBsJ29wdGlvbiAnd2VpZ2h0JyBlc3QgZGlzcG9uaWJsZS4gSEFQcm94eSBjb25zdHJ1aXQgYWxvcnMKdW5lIHZ1ZSBkZXMgc2VydmV1cnMgZGlzcG9uaWJsZXMgbGEgcGx1cyBob21vZ+huZSBwb3NzaWJsZSBlbiBzZSBiYXNhbnQgc3VyCmxldXIgcG9pZHMgZGUgc29ydGUgcXVlIGxhIGNoYXJnZSBzZSBkaXN0cmlidWUgZGUgbGEgbWFuaehyZSBsYSBwbHVzIGxpc3NlCnBvc3NpYmxlLiBMZSBwb2lkcyBjb21wcmlzIGVudHJlIDEgZXQgMjU2IGRvaXQgcmVmbOl0ZXIgbGEgY2FwYWNpdOkgZCd1bgpzZXJ2ZXVyIHBhciByYXBwb3J0IGF1eCBhdXRyZXMuIExlIHBvaWRzIGRlIDEgZG9ubmUgbGEgZnLpcXVlbmNlIGQnYXBwYXJpdGlvbgpsYSBwbHVzIGZhaWJsZSwgZXQgMjU2IGxhIGZy6XF1ZW5jZSBsYSBwbHVzIOlsZXbpZS4gRGUgY2V0dGUgbWFuaehyZSwgc2kgdW4Kc2VydmV1ciBkaXNwYXJhaXQsIGxlcyBjYXBhY2l06XMgcmVzdGFudGVzIHNvbnQgdG91am91cnMgcmVzcGVjdOllcy4KCgpFeGVtcGxlIDoKLS0tLS0tLS0tCiMgZGlzdHJpYnV0aW9uIOlxdWl0YWJsZSBzdXIgMiBvcHRlcm9uIGFuZCB1biBhbmNpZW4gcGVudGl1bTMKCiAgICBsaXN0ZW4gd2ViX2FwcGwgMC4wLjAuMDo4MAogICAgICAgIG1vZGUgaHR0cAogICAgICAgIGNvb2tpZSBTRVJWRVJJRCBpbnNlcnQgbm9jYWNoZSBpbmRpcmVjdAogICAgICAgIGJhbGFuY2Ugcm91bmRyb2JpbgogICAgICAgIHNlcnZlciBwZW50aXVtMy04MDAgMTkyLjE2OC4xLjE6ODAgY29va2llIHNlcnZlcjAxIHdlaWdodCAgOCBjaGVjawogICAgICAgIHNlcnZlciBvcHRlcm9uLTIuMEcgMTkyLjE2OC4xLjI6ODAgY29va2llIHNlcnZlcjAyIHdlaWdodCAyMCBjaGVjawogICAgICAgIHNlcnZlciBvcHRlcm9uLTIuNEcgMTkyLjE2OC4xLjM6ODAgY29va2llIHNlcnZlcjAzIHdlaWdodCAyNCBjaGVjawogICAgICAgIHNlcnZlciB3ZWItYmFja3VwMSAxOTIuMTY4LjIuMTo4MCBjb29raWUgc2VydmVyMDQgY2hlY2sgYmFja3VwCiAgICAgICAgc2VydmVyIHdlYi1leGN1c2UgMTkyLjE2OC4zLjE6ODAgY2hlY2sgYmFja3VwCgpOb3RlcyA6Ci0tLS0tLS0KICAtIGxvcnNxdWUgbGUgcG9pZHMgbidlc3QgcGFzIHNw6WNpZmnpLCBsYSB2YWxldXIgcGFyIGTpZmF1dCBlc3Qg4CAxCgogIC0gbGUgcG9pZHMgbidpbXBhY3RlIHBhcyBsZXMgdGVzdHMgZGUgZm9uY3Rpb25uZW1lbnQgKGhlYWx0aCBjaGVja3MpLCBkb25jIGlsCiAgICBlc3QgcGx1cyBwcm9wcmUgZCd1dGlsaXNlciBsZXMgcG9pZHMgcXVlIGRlIHLpcGxpcXVlciBsZSBt6m1lIHNlcnZldXIKICAgIHBsdXNpZXVycyBmb2lzLgoKICAtIGxlcyBwb2lkcyBzJ2FwcGxpcXVlbnQg6WdhbGVtZW50IGF1eCBzZXJ2ZXVycyBkZSBiYWNrdXAgc2kgbCdvcHRpb24KICAgICdhbGxiYWNrdXBzJyBlc3QgcG9zaXRpb25u6WUuCgogIC0gbGUgcG9pZHMgcydhcHBsaXF1ZSBhdXNzaSDgIGxhIHLpcGFydGl0aW9uIHNlbG9uIGxhIHNvdXJjZQogICAgKCdiYWxhbmNlIHNvdXJjZScpLgoKICAtIHF1ZWxzIHF1ZSBzb2llbnQgbGVzIHBvaWRzLCBsZSBwcmVtaWVyIHNlcnZldXIgc2VyYSB0b3Vqb3VycyBhc3NpZ27pIGVuCiAgICBwcmVtaWVyLiBDZXR0ZSBy6GdsZSBmYWNpbGl0ZSBsZXMgZGlhZ25vc3RpY3MuCgogIC0gcG91ciBsZXMgcHVyaXN0ZXMsIGwnYWxnb3JpdGhtZSBkZSBjYWxjdWxhdGlvbiBkZSBsYSB2dWUgZGVzIHNlcnZldXJzIGRvbm5lCiAgICB1bmUgcHJpb3JpdOkgYXV4IHByZW1pZXJzIHNlcnZldXJzLCBkb25jIGxhIHZ1ZSBlc3QgbGEgcGx1cyB1bmlmb3JtZSBzaSBsZXMKICAgIHNlcnZldXJzIHNvbnQgZOljbGFy6XMgZGFucyBsJ29yZHJlIGNyb2lzc2FudCBkZSBsZXVycyBwb2lkcy4KCkxhIGRpc3RyaWJ1dGlvbiBkdSB0cmFmaWMgc3VpdnJhIGV4YWN0ZW1lbnQgbGUgc+lxdWVuY2VtZW50IHN1aXZhbnQgOgoKICAgICAgICBSZXF1ZXN0fCAgICAgICAgICAgICAgICAgICAxIDEgMSAxCiAgICAgICAgbnVtYmVyIHwgMSAyIDMgNCA1IDYgNyA4IDkgMCAxIDIgMwogICAgICAgLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICAgICAgcDMtODAwIHwgWCAuIC4gLiAuIC4gLiBYIC4gLiAuIC4gLgogICAgICAgIG9wdC0yMCB8IC4gWCAuIFggLiBYIC4gLiAuIFggLiBYIC4KICAgICAgICBvcHQtMjQgfCAuIC4gWCAuIFggLiBYIC4gWCAuIFggLiBYCgoKMy40KSBMaW1pdGF0aW9uIGR1IG5vbWJyZSBkZSBzZXNzaW9ucyBjb25jdXJyZW50ZXMgcGFyIHNlcnZldXIKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KQ2VydGFpbnMgc2VydmV1cnMgd2ViIG11bHRpLXByb2Nlc3N1cyB0ZWxzIHF1J0FwYWNoZSBzb3VmZnJlbnQgZOhzIHF1J2lsIHkgYQp0cm9wIGRlIHNlc3Npb25zIGNvbmN1cnJlbnRlcywgcGFyY2UgcXUnaWwgZXN0IHRy6HMgY2/7dGV1eCBkZSBmYWlyZQpmb25jdGlvbm5lciBkZXMgY2VudGFpbmVzIG91IGRlcyBtaWxsaWVycyBkZSBwcm9jZXNzdXMgc3VyIHVuIHN5c3TobWUuIFVuZQpzb2x1dGlvbiBjb25zaXN0ZSDgIGF1Z21lbnRlciBsZSBub21icmUgZGUgc2VydmV1cnMgZXQgZGUgculwYXJ0aXIgbGEgY2hhcmdlCmVudHJlIGV1eCwgbWFpcyBjZWxhIHBvc2UgdW4gcHJvYmzobWUgbG9yc3F1ZSBsZSBidXQgZXN0IHVuaXF1ZW1lbnQgZGUgculzaXN0ZXIK4CBkZXMgcGljcyBkZSBjaGFyZ2Ugb2NjYXNpb25uZWxzLgoKUG91ciBy6XNvdWRyZSBjZSBwcm9ibOhtZSwgdW5lIG5vdXZlbGxlIGZvbmN0aW9ubmFsaXTpIGEg6XTpIGltcGzpbWVudOllIGRhbnMKSEFQcm94eSAxLjIuMTMuIElsIHMnYWdpdCBkJ3VuZSBsaW1pdGUgIm1heGNvbm4iIHBhciBzZXJ2ZXVyLCBhc3NvY2npZSDgIHVuZQpmaWxlIGQnYXR0ZW50ZSBwYXIgc2VydmV1ciBldCBwYXIgcHJveHkuIENlY2kgdHJhbnNmb3JtZSBIQVByb3h5IGVuIHVuIHRhbXBvbgplbnRyZSBkZXMgbWlsbGllcnMgZGUgY2xpZW50cyBldCBxdWVscXVlcyBzZXJ2ZXVycy4gRGFucyBiaWVuIGRlcyBjYXMsIGxlIGZhaXQKZGUgZGltaW51ZXIgbGEgdmFsZXVyIG1heGNvbm4gYW3pbGlvcmVyYSBub3RhYmxlbWVudCBsZXMgcGVyZm9ybWFuY2VzIGRlcwpzZXJ2ZXVycyBldCBkaW1pbnVlcmEgbGVzIHRlbXBzIGRlIHLpcG9uc2Ugc2ltcGxlbWVudCBwYXJjZSBxdWUgbGVzIHNlcnZldXJzCnNlcm9udCBtb2lucyBjb25nZXN0aW9ubulzLgoKUXVhbmQgdW5lIHJlcXXqdGUgY2hlcmNoZSDgIGpvaW5kcmUgbidpbXBvcnRlIHF1ZWwgc2VydmV1ciwgbGUgcHJlbWllciBzZXJ2ZXVyCm5vbiBzYXR1cukgZXN0IHV0aWxpc+ksIGVuIHJlc3BlY3RhbnQgbCdhbGdvcml0aG1lIGRlIHLpcGFydGl0aW9uIGRlIGNoYXJnZS4gU2kKdG91cyBsZXMgc2VydmV1cnMgc29udCBzYXR1culzLCBhbG9ycyBsYSByZXF16nRlIHNlcmEgbWlzZSBkYW5zIGxhIGZpbGUKZCdhdHRlbnRlIGdsb2JhbGUgZGUgbCdpbnN0YW5jZS4gRWxsZSBzb3J0aXJhIGRlIGNldHRlIGZpbGUgZCdhdHRlbnRlIGxvcnNxdWUKdG91dGVzIGxlcyByZXF16nRlcyBwculj6WRlbnRlcyBhdXJvbnQg6XTpIGxpYuly6WVzIGV0IHF1J3VuIHNlcnZldXIgYXVyYSDpdOkKbGli6XLpIGQndW5lIGNvbm5leGlvbiBwb3VyIGxhIHRyYWl0ZXIuCgpTaSB1bmUgcmVxdep0ZSBmYWl0IHLpZulyZW5jZSDgIHVuIHNlcnZldXIgZW4gcGFydGljdWxpZXIgKHAuZXg6IGhhY2hhZ2UgZCdJUApzb3VyY2UsIG91IHBlcnNpc3RhbmNlIHBhciBjb29raWUpLCBldCBxdWUgY2Ugc2VydmVyIGVzdCBzYXR1cuksIGFsb3JzIGxhCnJlcXXqdGUgc2VyYSBtaXNlIGRhbnMgbGEgZmlsZSBkJ2F0dGVudGUgZOlkaellIOAgY2Ugc2VydmV1ci4gQ2V0dGUgZmlsZQpkJ2F0dGVudGUgZXN0IHByaW9yaXRhaXJlIHN1ciBsYSBmaWxlIGQnYXR0ZW50ZSBnbG9iYWxlLCBkZSBzb3J0ZSBxdSdpbCBzb2l0CnBsdXMgZmFjaWxlIGQnYXR0ZWluZHJlIGxlIHNpdGUgcG91ciBsZXMgdXRpbGlzYXRldXJzIHF1aSBzJ3kgdHJvdXZlbnQgZOlq4ApxdWUgcG91ciBsZXMgbm91dmVhdXggdXRpbGlzYXRldXJzLgoKUG91ciBjZWxhLCBsZXMgbG9ncyBvbnQgZPsg6nRyZSBlbnJpY2hpcyBwb3VyIGluZGlxdWVyIGxlIG5vbWJyZSBkZSBzZXNzaW9ucwpwYXIgc2VydmV1ciwgbGEgcG9zaXRpb24gZGUgbGEgcmVxdep0ZSBkYW5zIGxlcyBmaWxlcyBkJ2F0dGVudGVzLCBldCBsZSB0ZW1wcwpwYXNz6SBlbiBmaWxlIGQnYXR0ZW50ZS4gQ2VjaSBhaWRlIGNvbnNpZOlyYWJsZW1lbnQg4CBmYWlyZSBkZSBsYSBwcul2aXNpb24gZGUKY2FwYWNpdOkuIFZvaXIgbGEgc2VjdGlvbiAnbG9ncycgcGx1cyBiYXMgcG91ciBwbHVzIGQnaW5mb3JtYXRpb25zLgoKRXhlbXBsZSA6Ci0tLS0tLS0tLQogICAgIyBQcmVuZHJlIHNvaW4gZHUgUDMgcXVpIG4nYSBxdWUgMjU2IE1vIGRlIFJBTS4KICAgIGxpc3RlbiB3ZWJfYXBwbCAwLjAuMC4wOjgwCiAgICAgICAgbWF4Y29ubiAxMDAwMAogICAgICAgIG1vZGUgaHR0cAogICAgICAgIGNvb2tpZSBTRVJWRVJJRCBpbnNlcnQgbm9jYWNoZSBpbmRpcmVjdAogICAgICAgIGJhbGFuY2Ugcm91bmRyb2JpbgogICAgICAgIHNlcnZlciBwZW50aXVtMy04MDAgMTkyLjE2OC4xLjE6ODAgY29va2llIHMxIHdlaWdodCAgOCBtYXhjb25uIDEwMCBjaGVjawogICAgICAgIHNlcnZlciBvcHRlcm9uLTIuMEcgMTkyLjE2OC4xLjI6ODAgY29va2llIHMyIHdlaWdodCAyMCBtYXhjb25uIDMwMCBjaGVjawogICAgICAgIHNlcnZlciBvcHRlcm9uLTIuNEcgMTkyLjE2OC4xLjM6ODAgY29va2llIHMzIHdlaWdodCAyNCBtYXhjb25uIDMwMCBjaGVjawogICAgICAgIHNlcnZlciB3ZWItYmFja3VwMSAxOTIuMTY4LjIuMTo4MCBjb29raWUgczQgY2hlY2sgbWF4Y29ubiAyMDAgYmFja3VwCiAgICAgICAgc2VydmVyIHdlYi1leGN1c2UgMTkyLjE2OC4zLjE6ODAgY2hlY2sgYmFja3VwCgpDZXR0ZSBvcHRpb24gc2UgbW9udHJhIHNpIGVmZmljYWNlIHBvdXIgculkdWlyZSBsZXMgdGVtcHMgZGUgculwb25zZSBkZXMKc2VydmV1cnMgcXVlIGNlcnRhaW5zIHV0aWxpc2F0ZXVycyB2b3VsYWllbnQgdXRpbGlzZXIgZGVzIHZhbGV1cnMgdHJvcCBiYXNzZXMKcG91ciBhbelsaW9yZXIgbGVzIHBlcmZvcm1hbmNlcyBkZSBsZXVycyBzZXJ2ZXVycy4gU2V1bGVtZW50LCBpbHMgbifpdGFpZW50CmFsb3JzIHBsdXMgZW4gbWVzdXJlIGRlIHN1cHBvcnRlciBkZSB0cuhzIGZvcnRlcyBjaGFyZ2VzIHBhcmNlIHF1J2lsIG4n6XRhaXQKcGx1cyBwb3NzaWJsZSBkZSBsZXMgc2F0dXJlci4gUG91ciBjZXR0ZSByYWlzb24sIGxhIHZlcnNpb24gMS4yLjE0IGEgYXBwb3J06SBsYQpsaW1pdGF0aW9uIGR5bmFtaXF1ZSBkZSBjb25uZXhpb25zIGF2ZWMgbCdhZGRpdGlvbiBkdSBwYXJhbeh0cmUgIm1pbmNvbm4iLgpMb3JzcXVlIGNlIHBhcmFt6HRyZSBlc3QgYXNzb2Np6SDgICJtYXhjb25uIiwgaWwgYWN0aXZlIGxhIGxpbWl0YXRpb24gZHluYW1pcXVlCmJhc+llIHN1ciBsYSBjaGFyZ2UgZGUgbCdpbnN0YW5jZS4gTGUgbm9tYnJlIG1heGltYWwgZGUgc2Vzc2lvbnMgY29uY3VycmVudGVzCnN1ciB1biBzZXJ2ZXVyIGRldmllbnQgYWxvcnMgcHJvcG9ydGlvbm5lbCBhdSBub21icmUgZGUgc2Vzc2lvbnMgZGUgbCdpbnN0YW5jZQpwYXIgcmFwcG9ydCDgIHNvbiAnbWF4Y29ubicuIFVuIG1pbmltdW0gZGUgPG1pbmNvbm4+IHNlc3Npb25zIHNlcmEgdG91am91cnMKcGVybWlzIHF1ZWxsZSBxdWUgc29pdCBsYSBjaGFyZ2UuIENlY2kgYXNzdXJlcmEgcXVlIGxlcyBzZXJ2ZXVycyB0cmF2YWlsbGVyb250CmF1IG1laWxsZXVyIGRlIGxldXJzIHBlcmZvcm1hbmNlcyBzb3VzIGRlcyBjaGFyZ2VzIG5vcm1hbGVzLCBldCBxdSdpbHMgc2Vyb250CnRvdXQgZGUgbeptZSBjYXBhYmxlcyBkZSBzdXBwb3J0ZXIgZGUgZm9ydGVzIHBvaW50ZXMgbG9yc3F1ZSBu6WNlc3NhaXJlLiBMYQpsaW1pdGUgZHluYW1pcXVlIGVzdCBjYWxjdWzpZSBjb21tZSBjZWNpIDoKCiAgICBzcnYuZHluX2xpbWl0ID0gbWF4KHNydi5taW5jb25uLCBzcnYubWF4Y29ubiAqIGluc3Quc2VzcyAvIGluc3QubWF4Y29ubikKCkV4ZW1wbGUgOgotLS0tLS0tLS0KICAgICMgUHJlbmRyZSBzb2luIGR1IFAzIHF1aSBuJ2EgcXVlIDI1NiBNbyBkZSBSQU0uCiAgICBsaXN0ZW4gd2ViX2FwcGwgMC4wLjAuMDo4MAogICAgICAgIG1heGNvbm4gMTAwMDAKICAgICAgICBtb2RlIGh0dHAKICAgICAgICBjb29raWUgU0VSVkVSSUQgaW5zZXJ0IG5vY2FjaGUgaW5kaXJlY3QKICAgICAgICBiYWxhbmNlIHJvdW5kcm9iaW4KICAgICAgICBzZXJ2ZXIgcGVudGl1bTMtODAwIDE5Mi4xNjguMS4xOjgwIGNvb2tpZSBzMSB3ZWlnaHQgIDggbWluY29ubiAxMCBtYXhjb25uIDEwMCBjaGVjawogICAgICAgIHNlcnZlciBvcHRlcm9uLTIuMEcgMTkyLjE2OC4xLjI6ODAgY29va2llIHMyIHdlaWdodCAyMCBtaW5jb25uIDMwIG1heGNvbm4gMzAwIGNoZWNrCiAgICAgICAgc2VydmVyIG9wdGVyb24tMi40RyAxOTIuMTY4LjEuMzo4MCBjb29raWUgczMgd2VpZ2h0IDI0IG1pbmNvbm4gMzAgbWF4Y29ubiAzMDAgY2hlY2sKICAgICAgICBzZXJ2ZXIgd2ViLWJhY2t1cDEgMTkyLjE2OC4yLjE6ODAgY29va2llIHM0IGNoZWNrIG1heGNvbm4gMjAwIGJhY2t1cAogICAgICAgIHNlcnZlciB3ZWItZXhjdXNlIDE5Mi4xNjguMy4xOjgwIGNoZWNrIGJhY2t1cAoKRGFucyBsJ2V4ZW1wbGUgY2ktZGVzc3VzLCBsZSBzZXJ2ZXVyICJwZW50aXVtMy04MDAnIHJlY2V2cmEgYXUgcGx1cyAxMDAKY29ubmV4aW9ucyBzaW11bHRhbullcyBsb3JzcXVlIGwnaW5zdGFuY2UgZHUgcHJveHkgZW4gYXR0ZWluZHJhIDEwMDAwLCBldApyZWNldnJhIHNldWxlbWVudCAxMCBjb25uZXhpb25zIHNpbXVsdGFu6WVzIHRhbnQgcXVlIGxlIHByb3h5IHNlcmEgc291cyBsZXMgMTAwMApzZXNzaW9ucy4KCk5vdGVzIDoKLS0tLS0tLQogIC0gbGEgcmVxdep0ZSBuZSByZXN0ZXJhIHBhcyBpbmTpZmluaW1lbnQgZW4gZmlsZSBkJ2F0dGVudGUsIGVsbGUgZXN0CiAgICBhc3N1aul0aWUgYXUgcGFyYW3odHJlICdjb250aW1lb3V0JywgZXQgc2kgdW5lIHJlcXXqdGUgbmUgcGV1dCBwYXMKICAgIHNvcnRpciBkZSBsYSBmaWxlIGF2YW50IGNlIHRpbWUtb3V0LCBzb2l0IHBhcmNlIHF1ZSBsZSBzZXJ2ZXVyIGVzdAogICAgc2F0dXLpLCBzb2l0IHBhcmNlIHF1J2lsIHkgYSB0cm9wIGRlIHJlcXXqdGVzIGVuIGZpbGUgZCdhdHRlbnRlLAogICAgYWxvcnMgZWxsZSBleHBpcmVyYSBhdmVjIHVuZSBlcnJldXIgNTAzLgoKICAtIHNpIHNldWwgPG1pbmNvbm4+IGVzdCBzcOljaWZp6SwgaWwgYSBsZSBt6m1lIGVmZmV0IHF1ZSA8bWF4Y29ubj4KCiAgLSBwb3NpdGlvbm5lciBkZXMgdmFsZXVycyB0cm9wIGJhc3NlcyBwb3VyICdtYXhjb25uJyBwZXV0IGFt6Wxpb3JlciBsZXMKICAgIHBlcmZvcm1hbmNlcyBtYWlzIGF1c3NpIHBlcm1ldHRyZSDgIGRlcyB1dGlsaXNhdGV1cnMgdHJvcCBsZW50cyBkZSBibG9xdWVyCiAgICB1biBzZXJ2ZXVyIHBvdXIgbGVzIGF1dHJlcyB1dGlsaXNhdGV1cnMuCgoKMy41KSBBYmFuZG9uIGRlcyByZXF16nRlcyBhYm9ydOllcwotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkVuIHBy6XNlbmNlIGRlIHRy6HMgZm9ydGVzIGNoYXJnZXMsIGxlcyBzZXJ2ZXVycyBtZXR0cm9udCB1biBjZXJ0YWluIHRlbXBzIOAKculwb25kcmUuIExhIGZpbGUgZCdhdHRlbnRlIGR1IHByb3h5IHNlIHJlbXBsaXJhLCBldCBsZXMgdGVtcHMgZGUgculwb25zZQpzdWl2cm9udCB1bmUgY3JvaXNzYW5jZSBwcm9wb3J0aW9ubmVsbGUg4CBsYSB0YWlsbGUgZGUgZmlsZSBkJ2F0dGVudGUgZm9pcwpsZSB0ZW1wcyBtb3llbiBkZSBy6XBvbnNlIHBhciBzZXNzaW9uLiBMb3JzcXVlIGxlcyBjbGllbnRzIGF0dGVuZHJvbnQgcGx1cyBkZQpxdWVscXVlcyBzZWNvbmRlcywgaWxzIGNsaXF1ZXJvbnQgc291dmVudCBzdXIgbGUgYm91dG9uICdTVE9QJyBkZSBsZXVyCm5hdmlnYXRldXIsIGxhaXNzYW50IGRlcyByZXF16nRlcyBpbnV0aWxlcyBlbiBmaWxlIGQnYXR0ZW50ZSBldCByYWxlbnRpc3NhbnQKZG9uYyBsZXMgYXV0cmVzIHV0aWxpc2F0ZXVycy4KCkNvbW1lIGlsIG4neSBhIGF1Y3VuIG1veWVuIGRlIGRpc3Rpbmd1ZXIgdW4gdnJhaSBjbGljIHN1ciBTVE9QIGQndW5lIHNpbXBsZQpmZXJtZXR1cmUgZHUgY2FuYWwgZGUgc29ydGllIHN1ciBsZSBjbGllbnQgKHNodXRkb3duKFNIVVRfV1IpKSwgbGVzIGFnZW50cyBIVFRQCmRvaXZlbnQg6nRyZSBjb25zZXJ2YXRldXJzIGV0IGNvbnNpZOlyZXIgcXVlIGxlIGNsaWVudCBuJ2EgcHJvYmFibGVtZW50IGZlcm3pCnF1ZSBsZSBjYW5hbCBkZSBzb3J0aWUgZW4gYXR0ZW5kYW50IGxhIHLpcG9uc2UuIFRvdXRlZm9pcywgY2VjaSBpbnRyb2R1aXQgZGVzCnJpc3F1ZXMgZGUgY29uZ2VzdGlvbiBsb3JzcXVlIGJlYXVjb3VwIGQndXRpbGlzYXRldXJzIGZvbnQgZGUgbeptZSwgZXQgcydhduhyZQphdWpvdXJkJ2h1aSBjb21wbOh0ZW1lbnQgaW51dGlsZSBjYXIgcHJvYmFibGVtZW50IGF1Y3VuIGNsaWVudCBuZSByZWZlcm1lIGxhCnNlc3Npb24gZW4gYXR0ZW5kYW50IGxhIHLpcG9uc2UuIENlcnRhaW5zIGFnZW50cyBIVFRQIHN1cHBvcnRlbnQgY2VjaSAoU3F1aWQsCkFwYWNoZSwgSEFQcm94eSksIGV0IGQnYXV0cmVzIG5lIGxlIHN1cHBvcnRlbnQgcGFzIChUVVgsIGV0IGxhIHBsdXBhcnQgZGVzCnLpcGFydGl0ZXVycyBkZSBjaGFyZ2UgbWF06XJpZWxzKS4gRG9uYyBsYSBwcm9iYWJpbGl06SBwb3VyIHF1J3VuZSBub3RpZmljYXRpb24KZGUgZmVybWV0dXJlIGQndW4gY2FuYWwgZCdlbnRy6WUgY/R06SBjbGllbnQgcmVwculzZW50ZSB1biB1dGlsaXNhdGV1ciBjbGlxdWFudApzdXIgJ1NUT1AnIGVzdCBwcm9jaGUgZGUgMTAwJSwgZXQgaWwgZXN0IHZyYWltZW50IHRlbnRhbnQgZCdhYmFuZG9ubmVyIGxhCnJlcXXqdGUgcHLpbWF0dXLpbWVudCBzYW5zIHBvbGx1ZXIgbGVzIHNlcnZldXJzLgoKUG91ciBjZXR0ZSByYWlzb24sIHVuZSBub3V2ZWxsZSBvcHRpb24gImFib3J0b25jbG9zZSIgYSDpdOkgaW50cm9kdWl0ZSBlbgp2ZXJzaW9uIDEuMi4xNC4gUGFyIGTpZmF1dCAoc2FucyBsJ29wdGlvbiksIGxlIGNvbXBvcnRlbWVudCByZXN0ZSBjb25mb3JtZSDgCkhUVFAuIE1haXMgbG9yc3F1ZSBsJ29wdGlvbiBlc3Qgc3DpY2lmaellLCB1bmUgc2Vzc2lvbiBkb250IGxlIGNhbmFsIGVudHJhbnQKZXN0IGZlcm3pIHNlcmEgYWJvcnTpZSBzaSBjZWxhIGVzdCBwb3NzaWJsZSwgYydlc3Qg4CBkaXJlIHF1ZSBsYSByZXF16nRlIGVzdApzb2l0IGVuIGZpbGUgZCdhdHRlbnRlLCBzb2l0IGVuIHRlbnRhdGl2ZSBkZSBjb25uZXhpb24uIENlY2kgculkdWl0CmNvbnNpZOlyYWJsZW1lbnQgbGEgbG9uZ3VldXIgZGVzIGZpbGVzIGQnYXR0ZW50ZXMgZXQgbGEgY2hhcmdlIHN1ciBsZXMgc2VydmV1cnMKc2F0dXLpcyBsb3JzcXVlIGxlcyB1dGlsaXNhdGV1cnMgc29udCB0ZW506XMgZGUgY2xpcXVlciBzdXIgJ1NUT1AnLCBjZSBxdWkg4Apzb24gdG91ciwgculkdWl0IGxlcyB0ZW1wcyBkZSBy6XBvbnNlIHBvdXIgbGVzIGF1dHJlcyB1dGlsaXNhdGV1cnMuCgpFeGVtcGxlIDoKLS0tLS0tLS0tCiAgICBsaXN0ZW4gd2ViX2FwcGwgMC4wLjAuMDo4MAogICAgICAgIG1heGNvbm4gMTAwMDAKICAgICAgICBtb2RlIGh0dHAKICAgICAgICBjb29raWUgU0VSVkVSSUQgaW5zZXJ0IG5vY2FjaGUgaW5kaXJlY3QKICAgICAgICBiYWxhbmNlIHJvdW5kcm9iaW4KICAgICAgICBzZXJ2ZXIgd2ViMSAxOTIuMTY4LjEuMTo4MCBjb29raWUgczEgd2VpZ2h0IDEwIG1heGNvbm4gMTAwIGNoZWNrCiAgICAgICAgc2VydmVyIHdlYjIgMTkyLjE2OC4xLjI6ODAgY29va2llIHMyIHdlaWdodCAxMCBtYXhjb25uIDEwMCBjaGVjawogICAgICAgIHNlcnZlciB3ZWIzIDE5Mi4xNjguMS4zOjgwIGNvb2tpZSBzMyB3ZWlnaHQgMTAgbWF4Y29ubiAxMDAgY2hlY2sKICAgICAgICBzZXJ2ZXIgYmNrMSAxOTIuMTY4LjIuMTo4MCBjb29raWUgczQgY2hlY2sgbWF4Y29ubiAyMDAgYmFja3VwCiAgICAgICAgb3B0aW9uIGFib3J0b25jbG9zZQoKCjQpIEZvbmN0aW9ubmFsaXTpcyBhZGRpdGlvbm5lbGxlcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KCkQnYXV0cmVzIGZvbmN0aW9ubmFsaXTpcyBkJ3VzYWdlIG1vaW5zIGNvdXJhbnQgc29udCBkaXNwb25pYmxlcy4gSWwgcydhZ2l0CnByaW5jaXBhbGVtZW50IGR1IG1vZGUgdHJhbnNwYXJlbnQsIGRlIGxhIGpvdXJuYWxpc2F0aW9uIGRlcyBjb25uZXhpb25zLCBkZSBsYQpy6eljcml0dXJlIGRlcyBlbi106nRlcywgZXQgZHUgc3RhdHV0IHNvdXMgZm9ybWUgZGUgcGFnZSBIVE1MLgoKCjQuMSkgRm9uY3Rpb25uYWxpdOlzIHLpc2VhdQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KNC4xLjEpIEZvbmN0aW9ubmVtZW50IGVuIG1vZGUgdHJhbnNwYXJlbnQKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkVuIG1vZGUgSFRUUCwgbGUgbW90IGNs6SAndHJhbnNwYXJlbnQnIHBlcm1ldCBkJ2ludGVyY2VwdGVyIGRlcyBzZXNzaW9ucwpyb3V06WVzIOAgdHJhdmVycyBsYSBtYWNoaW5lIGjpYmVyZ2VhbnQgbGUgcHJveHkuIERhbnMgY2UgbW9kZSwgb24gbmUgcHLpY2lzZQpwYXMgbCdhZHJlc3NlIGRlIHLpcGFydGl0aW9uICdkaXNwYXRjaCcsIGNhciBjZWxsZS1jaSBlc3QgdGly6WUgZGUgbCdhZHJlc3NlCmRlc3RpbmF0aW9uIGRlIGxhIHNlc3Npb24gZOl0b3VybullLiBMZSBzeXN06G1lIGRvaXQgcGVybWV0dHJlIGRlIHJlZGlyaWdlciBsZXMKcGFxdWV0cyB2ZXJzIHVuIHByb2Nlc3N1cyBsb2NhbC4KCkV4ZW1wbGUgOgotLS0tLS0tLS0KICAgIGxpc3RlbiBodHRwX3Byb3h5IDAuMC4wLjA6NjUwMDAKICAgICAgICBtb2RlIGh0dHAKICAgICAgICB0cmFuc3BhcmVudAogICAgICAgIGNvb2tpZSBTRVJWRVJJRAogICAgICAgIHNlcnZlciBzZXJ2ZXIwMSAxOTIuMTY4LjEuMTo4MAogICAgICAgIHNlcnZlciBzZXJ2ZXIwMiAxOTIuMTY4LjEuMjo4MAoKICAgICMgaXB0YWJsZXMgLXQgbmF0IC1BIFBSRVJPVVRJTkcgLWkgZXRoMCAtcCB0Y3AgLWQgMTkyLjE2OC4xLjEwMCBcCiAgICAgIC0tZHBvcnQgODAgLWogUkVESVJFQ1QgLS10by1wb3J0cyA2NTAwMAoKUmVtYXJxdWUgOgotLS0tLS0tLS0tClNpIGxlIHBvcnQgbidlc3QgcGFzIHNw6WNpZmnpIHN1ciBsZSBzZXJ2ZXVyLCBjJ2VzdCBsZSBwb3J0IGF1cXVlbCBzJ2VzdAphZHJlc3PpIGxlIGNsaWVudCBxdWkgc2VyYSB1dGlsaXPpLiBDZWxhIHBlcm1ldCBkZSByZWxheWVyIHRvdXMgbGVzIHBvcnRzIFRDUApkJ3VuZSBt6m1lIGFkcmVzc2UgYXZlYyB1bmUgbeptZSBpbnN0YW5jZSBldCBzYW5zIHV0aWxpc2VyIGRpcmVjdGVtZW50IGxlIG1vZGUKdHJhbnNwYXJlbnQuCgpFeGVtcGxlIDoKLS0tLS0tLS0tCiAgICBsaXN0ZW4gaHR0cF9wcm94eSAwLjAuMC4wOjY1MDAwCiAgICAgICAgbW9kZSB0Y3AKICAgICAgICBzZXJ2ZXIgc2VydmVyMDEgMTkyLjE2OC4xLjEgY2hlY2sgcG9ydCA2MDAwMAogICAgICAgIHNlcnZlciBzZXJ2ZXIwMiAxOTIuMTY4LjEuMiBjaGVjayBwb3J0IDYwMDAwCgogICAgIyBpcHRhYmxlcyAtdCBuYXQgLUEgUFJFUk9VVElORyAtaSBldGgwIC1wIHRjcCAtZCAxOTIuMTY4LjEuMTAwIFwKICAgICAgLWogUkVESVJFQ1QgLS10by1wb3J0cyA2NTAwMAoKCjQuMS4yKSBDaG9peCBkJ3VuZSBhZHJlc3NlIHNvdXJjZSBwYXIgc2VydmV1cgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KQXZlYyBsZXMgdmVyc2lvbnMgMS4xLjMwIGV0IDEuMi4zLCBpbCBkZXZpZW50IHBvc3NpYmxlIGRlIHNw6WNpZmllciB1bmUgYWRyZXNzZQpJUCBzb3VyY2UgcG91ciBqb2luZHJlIGNoYXF1ZSBzZXJ2ZXVyLiBDJ2VzdCB1dGlsZSBwb3VyIGpvaW5kcmUgZGVzIHNlcnZldXJzIGRlCmJhY2t1cCDgIHBhcnRpciBkJ3VuIExBTiBkaWZm6XJlbnQsIG91IHBvdXIgdXRpbGlzZXIgZGVzIGNoZW1pbnMgYWx0ZXJuYXRpZnMKcG91ciBqb2luZHJlIGxlIG3qbWUgc2VydmV1ci4gQydlc3Qg6WdhbGVtZW50IHV0aWxpc2FibGUgcG91ciBmYWNpbGl0ZXIgdW5lCnLpcGFydGl0aW9uIGRlIGNoYXJnZSBzZWxvbiBsJ2FkcmVzc2UgSVAgc291cmNlIHBvdXIgZGVzIGNvbm5leGlvbnMgc29ydGFudGVzLgpCaWVuIGVudGVuZHUsIGxhIG3qbWUgYWRyZXNzZSBlc3QgdXRpbGlz6WUgcG91ciBsZXMgaGVhbHRoLWNoZWNrcy4KCkV4ZW1wbGUgOgotLS0tLS0tLS0KICAgICMgdXRpbGlzZXIgdW5lIGFkcmVzc2UgcGFydGljdWxp6HJlIHBvdXIgam9pbmRyZSBsZXMgMiBzZXJ2ZXVyCiAgICBsaXN0ZW4gaHR0cF9wcm94eSAwLjAuMC4wOjY1MDAwCiAgICAgICBtb2RlIGh0dHAKICAgICAgIGJhbGFuY2Ugcm91bmRyb2JpbgogICAgICAgc2VydmVyIHNlcnZlcjAxIDE5Mi4xNjguMS4xOjgwIHNvdXJjZSAxOTIuMTY4LjIuMTMKICAgICAgIHNlcnZlciBzZXJ2ZXIwMiAxOTIuMTY4LjEuMjo4MCBzb3VyY2UgMTkyLjE2OC4yLjEzCgpFeGVtcGxlIDoKLS0tLS0tLS0tCiAgICAjIHV0aWxpc2VyIHVuZSBhZHJlc3NlIHBhcnRpY3VsaehyZSBwb3VyIGpvaW5kcmUgY2hhcXVlIHNlcnZldXIKICAgIGxpc3RlbiBodHRwX3Byb3h5IDAuMC4wLjA6NjUwMDAKICAgICAgIG1vZGUgaHR0cAogICAgICAgYmFsYW5jZSByb3VuZHJvYmluCiAgICAgICBzZXJ2ZXIgc2VydmVyMDEgMTkyLjE2OC4xLjE6ODAgc291cmNlIDE5Mi4xNjguMS4xCiAgICAgICBzZXJ2ZXIgc2VydmVyMDIgMTkyLjE2OC4yLjE6ODAgc291cmNlIDE5Mi4xNjguMi4xCgpFeGVtcGxlIDoKLS0tLS0tLS0tCiAgICAjIGZhaXJlIHVuZSBy6XBhcnRpdGlvbiBkJ2FkcmVzc2Ugc291cmNlcyBwb3VyIGpvaW5kcmUgbGUgbeptZSBwcm94eSDgCiAgICAjIHRyYXZlcnMgZGV1eCBsaWVucyBXQU4gCiAgICBsaXN0ZW4gaHR0cF9wcm94eSAwLjAuMC4wOjY1MDAwCiAgICAgICBtb2RlIGh0dHAKICAgICAgIGJhbGFuY2Ugcm91bmRyb2JpbgogICAgICAgc2VydmVyIHJlbW90ZS1wcm94eS13YXkxIDE5Mi4xNjguMS4xOjMxMjggc291cmNlIDE5Mi4xNjguMi4xCiAgICAgICBzZXJ2ZXIgcmVtb3RlLXByb3h5LXdheTIgMTkyLjE2OC4xLjE6MzEyOCBzb3VyY2UgMTkyLjE2OC4zLjEKCkV4ZW1wbGUgOgotLS0tLS0tLS0KICAgICMgZm9yY2VyIHVuZSBjb25uZXhpb24gVENQIOAgcydhdHRhY2hlciDgIHVuIHBvcnQgcGFydGljdWxpZXIKICAgIGxpc3RlbiBodHRwX3Byb3h5IDAuMC4wLjA6MjAwMAogICAgICAgbW9kZSB0Y3AKICAgICAgIGJhbGFuY2Ugcm91bmRyb2JpbgogICAgICAgc2VydmVyIHNydjEgMTkyLjE2OC4xLjE6ODAgc291cmNlIDE5Mi4xNjguMi4xOjIwCiAgICAgICBzZXJ2ZXIgc3J2MiAxOTIuMTY4LjEuMjo4MCBzb3VyY2UgMTkyLjE2OC4yLjE6MjAKCjQuMS4zKSBNYWludGllbiBkZSBzZXNzaW9uIFRDUCAoa2VlcC1hbGl2ZSkKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpBdmVjIGxhIHZlcnNpb24gMS4yLjcsIGlsIGRldmllbnQgcG9zc2libGUgZCdhY3RpdmVyIGxlIG1haW50aWVuIGRlIHNlc3Npb24KVENQIChUQ1Aga2VlcC1hbGl2ZSkg4CBsYSBmb2lzIGP0dOkgY2xpZW50IGV0IGP0dOkgc2VydmV1ci4gQ2VsYSBwZXJtZXQKZCdlbXDqY2hlciBkZXMgc2Vzc2lvbnMgbG9uZ3VlcyBkJ2V4cGlyZXIgc3VyIGRlcyDpcXVpcGVtZW50cyBkZSBuaXZlYXUgNApleHRlcm5lcyB0ZWxzIHF1ZSBkZXMgZmlyZXdhbGxzIG91IGRlcyBy6XBhcnRpdGV1cnMgZGUgY2hhcmdlLiBDZWxhIHBlcm1ldAphdXNzaSBhdSBzeXN06G1lIGRlIGTpdGVjdGVyIGV0IHRlcm1pbmVyIGRlcyBzZXNzaW9ucyBmaWfpZXMgbG9yc3F1J2F1Y3VuCnRpbWUtb3V0IG4nYSDpdOkgcG9zaXRpb25u6SAoZm9ydGVtZW50IGTpY29uc2VpbGzpKS4gTGUgcHJveHkgbmUgcGV1dCBwYXMKcG9zaXRpb25uZXIgbCdpbnRlcnZhbGxlIGVudHJlIGxlcyBhbm5vbmNlcyBuaSBsZSBub21icmUgbWF4aW1hbCwgdmV1aWxsZXoKdm91cyBy6WbpcmVyIGF1IG1hbnVlbCBkdSBzeXN06G1lIGQnZXhwbG9pdGF0aW9uIHBvdXIgY2VsYS4gSWwgZXhpc3RlIDMgb3B0aW9ucwpwb3VyIGFjdGl2ZXIgbGUgbWFpbnRpZW4gZGUgc2Vzc2lvbiBUQ1AgOgoKCW9wdGlvbiB0Y3BrYQkjIGFjdGl2ZSBsZSBrZWVwLWFsaXZlIGP0dOkgY2xpZW50IGV0IGP0dOkgc2VydmV1cgoJb3B0aW9uIGNsaXRjcGthCSMgYWN0aXZlIGxlIGtlZXAtYWxpdmUgY/R06SBjbGllbnQKCW9wdGlvbiBzcnZ0Y3BrYQkjIGFjdGl2ZSBsZSBrZWVwLWFsaXZlIGP0dOkgc2VydmV1cgoKCjQuMikgSm91cm5hbGlzYXRpb24gZGVzIGNvbm5leGlvbnMKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKTCd1biBkZXMgcG9pbnRzIGZvcnRzIGRlIEhBUHJveHkgZXN0IGluZOluaWFibGVtZW50IGxhIHBy6WNpc2lvbiBkZSBzZXMgbG9ncy4KSWwgZm91cm5pdCBwcm9iYWJsZW1lbnQgbGUgcGx1cyBmaW4gbml2ZWF1IGQnaW5mb3JtYXRpb24gZGlzcG9uaWJsZSBwb3VyIHVuCnRlbCBvdXRpbCwgY2UgcXVpIGVzdCB0cuhzIGltcG9ydGFudCBwb3VyIGxlcyBkaWFnbm9zdGljcyBlbiBlbnZpcm9ubmVtZW50cwpjb21wbGV4ZXMuIEVuIHN0YW5kYXJkLCBsZXMgaW5mb3JtYXRpb25zIGpvdXJuYWxpc+llcyBpbmNsdWVudCBsZSBwb3J0IGNsaWVudCwKbGVzIGNocm9ub23pdHJhZ2VzIGRlcyDpdGF0cyBUQ1AvSFRUUCwgZGVzIOl0YXRzIGRlIHNlc3Npb24gcHLpY2lzIGF1IG1vbWVudCBkZQpsYSB0ZXJtaW5haXNvbiBldCBzYSBjYXVzZSwgZGVzIGluZm9ybWF0aW9ucyBzdXIgbGVzIGTpY2lzaW9ucyBkJ2FpZ3VpbGxhZ2UgZHUKdHJhZmljIHZlcnMgdW4gc2VydmV1ciwgZXQgYmllbiBz+3IgbGEgcG9zc2liaWxpdOkgZGUgY2FwdHVyZXIgZGVzIGVuLXTqdGVzCmFyYml0cmFpcmVzLgoKRGFucyBsZSBidXQgZCdhbelsaW9yZXIgbGEgculhY3Rpdml06SBkZXMgYWRtaW5pc3RyYXRldXJzLCBpbCBvZmZyZSB1bmUgZ3JhbmRlCnRyYW5zcGFyZW5jZSBzdXIgbGVzIHByb2Js6G1lcyByZW5jb250culzLCDgIGxhIGZvaXMgaW50ZXJuZXMgZXQgZXh0ZXJuZXMsIGV0CmlsIGVzdCBwb3NzaWJsZSBkJ2Vudm95ZXIgbGVzIGxvZ3MgdmVycyBkZXMgc2VydmV1cnMgZGlmZulyZW50cyBlbiBt6m1lIHRlbXBzCmF2ZWMgZGVzIG5pdmVhdXggZGUgZmlsdHJhZ2UgZGlmZulyZW50cyA6CgogIC0gbG9ncyBnbG9iYXV4IGF1IG5pdmVhdSBwcm9jZXNzdXMgKGVycmV1cnMgc3lzdOhtZSwgYXJy6nRzL2TpbWFycmFnZXMsIC4uLikKICAtIGVycmV1cnMgc3lzdOhtZSBldCBpbnRlcm5lcyBwYXIgaW5zdGFuY2UgKG1hbnF1ZSBkZSByZXNzb3VyY2VzLCBidWdzLCAuLi4pCiAgLSBwcm9ibOhtZXMgZXh0ZXJuZXMgcGFyIGluc3RhbmNlIChhcnLqdHMvcmVsYW5jZSBzZXJ2ZXVycywgbGltaXRlcywgLi4uKQogIC0gYWN0aXZpdOkgcGFyIGluc3RhbmNlIChjb25uZXhpb25zIGNsaWVudHMpLCBhdXNzaSBiaWVuIGxvcnMgZGUgbGV1cgogICAg6XRhYmxpc3NlbWVudCBxdSfgIGxldXIgdGVybWluYWlzb24uCgpMYSBwb3NzaWJpbGl06SBkZSBkaXN0cmlidWVyIGRpZmbpcmVudHMgbml2ZWF1eCBkZSBsb2dzIOAgZGlmZulyZW50cyBzZXJ2ZXVycwpwZXJtZXQg4CBwbHVzaWV1cnMg6XF1aXBlcyBkZSBwcm9kdWN0aW9uIGQnaW506XJhZ2lyIGV0IGRlIGNvcnJpZ2VyIGxldXJzCnByb2Js6G1lcyBsZSBwbHVzIHT0dCBwb3NzaWJsZS4gUGFyIGV4ZW1wbGUsIGwn6XF1aXBlIHN5c3TobWUgcGV1dCBzdXJ2ZWlsbGVyCm9jY2FzaW9ubmVsbGVtZW50IGxlcyBlcnJldXJzIHN5c3TobWUsIHBlbmRhbnQgcXVlIGwn6XF1aXBlIGFwcGxpY2F0aW9uCnN1cnZlaWxsZSBsZXMgYWxlcnRlcyBkJ2Fycup0cy9k6W1hcnJhZ2VzIGRlIHNlcyBzZXJ2ZXVycyBlbiB0ZW1wcyBy6WVsLCBldApxdWUgbCfpcXVpcGUgc+ljdXJpdOkgYW5hbHlzZSBsJ2FjdGl2aXTpIGVuIGRpZmbpcukgZCd1bmUgaGV1cmUuCgoKNC4yLjEpIE5pdmVhdXggZGUgbG9nCi0tLS0tLS0tLS0tLS0tLS0tLS0tLQpMZXMgY29ubmV4aW9ucyBUQ1AgZXQgSFRUUCBwZXV2ZW50IGRvbm5lciBsaWV1IOAgdW5lIGpvdXJuYWxpc2F0aW9uIHNvbW1haXJlIG91CmTpdGFpbGzpZSBpbmRpcXVhbnQsIHBvdXIgY2hhcXVlIGNvbm5leGlvbiwgbGEgZGF0ZSwgbCdoZXVyZSwgbCdhZHJlc3NlIElQCnNvdXJjZSwgbGUgc2VydmV1ciBkZXN0aW5hdGlvbiwgbGEgZHVy6WUgZGUgbGEgY29ubmV4aW9uLCBsZXMgdGVtcHMgZGUgculwb25zZSwKbGEgcmVxdep0ZSBIVFRQLCBsZSBjb2RlIGRlIHJldG91ciwgbGEgcXVhbnRpdOkgZGUgZG9ubullcyB0cmFuc21pc2VzLCBldCBt6m1lCmRhbnMgY2VydGFpbnMgY2FzLCBsYSB2YWxldXIgZCd1biBjb29raWUgcGVybWV0dGFudCBkZSBzdWl2cmUgbGVzIHNlc3Npb25zLgpUb3VzIGxlcyBtZXNzYWdlcyBzb250IGVudm956XMgZW4gc3lzbG9nIHZlcnMgdW4gb3UgZGV1eCBzZXJ2ZXVycy4gU2Ugculm6XJlciDgCmxhIHNlY3Rpb24gMS4xIHBvdXIgcGx1cyBkJ2luZm9ybWF0aW9uIHN1ciBsZXMgY2F06WdvcmllcyBkZSBsb2dzLiAgTGEgc3ludGF4ZQplc3QgbGEgc3VpdmFudGUgOgoKICAgIGxvZyA8YWRyZXNzZV9pcF8xPiA8Y2F06WdvcmllXzE+IFtuaXZlYXVfbWF4XzFdCiAgICBsb2cgPGFkcmVzc2VfaXBfMj4gPGNhdOlnb3JpZV8yPiBbbml2ZWF1X21heF8yXQpvdQogICAgbG9nIGdsb2JhbAoKUmVtYXJxdWUgOgotLS0tLS0tLS0tCkxhIHN5bnRheGUgc3DpY2lmaXF1ZSAnbG9nIGdsb2JhbCcgaW5kaXF1ZSBxdWUgbCdvbiBzb3VoYWl0ZSB1dGlsaXNlciBsZXMKcGFyYW3odHJlcyBkZSBqb3VybmFsaXNhdGlvbiBk6WZpbmlzIGRhbnMgbGEgc2VjdGlvbiAnZ2xvYmFsJy4KCkV4ZW1wbGUgOgotLS0tLS0tLS0KICAgIGxpc3RlbiBodHRwX3Byb3h5IDAuMC4wLjA6ODAKICAgICAgICBtb2RlIGh0dHAKICAgICAgICBsb2cgMTkyLjE2OC4yLjIwMCBsb2NhbDMKICAgICAgICBsb2cgMTkyLjE2OC4yLjIwMSBsb2NhbDQKCjQuMi4yKSBGb3JtYXQgZGVzIGxvZ3MKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpQYXIgZOlmYXV0LCBsZXMgY29ubmV4aW9ucyBzb250IGpvdXJuYWxpc+llcyBhdSBuaXZlYXUgVENQIGTocyBsJ+l0YWJsaXNzZW1lbnQKZGUgbGEgc2Vzc2lvbiBlbnRyZSBsZSBjbGllbnQgZXQgbGUgcmVsYWlzLiBFbiBwculjaXNhbnQgbCdvcHRpb24gJ3RjcGxvZycsCmxhIGNvbm5leGlvbiBuZSBzZXJhIGpvdXJuYWxpc+llIHF1J2VuIGZpbiBkZSBzZXNzaW9uLCBham91dGFudCBkZXMgcHLpY2lzaW9ucwpzdXIgc29uIOl0YXQgbG9ycyBkZSBsYSBk6WNvbm5leGlvbiwgYWluc2kgcXVlIGxlIHRlbXBzIGRlIGNvbm5leGlvbiBldCBsYQpkdXLpZSB0b3RhbGUgZGUgbGEgc2Vzc2lvbi4gTGUgbm9tYnJlIGRlIHNlc3Npb25zIHJlc3RhbnRlcyBhcHLocyBsYQpk6WNvbm5leGlvbiBlc3Qg6WdhbGVtZW50IGluZGlxdekgKHBvdXIgbGUgc2VydmV1ciwgbCdpbnN0YW5jZSBldCBsZSBwcm9jZXNzKS4KCkV4ZW1wbGUgZGUgam91cm5hbGlzYXRpb24gVENQIDoKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAgbGlzdGVuIHJlbGFpcy10Y3AgMC4wLjAuMDo4MDAwCiAgICAgICAgbW9kZSB0Y3AKICAgICAgICBvcHRpb24gdGNwbG9nCiAgICAgICAgbG9nIDE5Mi4xNjguMi4yMDAgbG9jYWwzCgo+Pj4gaGFwcm94eVsxODk4OV06IDEyNy4wLjAuMTozNDU1MCBbMTUvT2N0LzIwMDM6MTU6MjQ6MjhdIHJlbGFpcy10Y3AgU3J2MSAwLzAvNTAwNyAwIC0tIDEvMS8xIDAvMAogIAogICAgQ2hhbXAgIEZvcm1hdCAvIERlc2NyaXB0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICBFeGVtcGxlCgogICAgICAgIDEgIG5vbV9wcm9jZXNzdXMgJ1snIHBpZCAnXTonICAgICAgICAgICAgICAgICAgICBoYXByb3h5WzE4OTg5XToKICAgICAgICAyICBpcF9jbGllbnQgJzonIHBvcnRfY2xpZW50ICAgICAgICAgICAgICAgICAgICAgMTI3LjAuMC4xOjM0NTUwCiAgICAgICAgMyAgJ1snIGRhdGUgJ10nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsxNS9PY3QvMjAwMzoxNToyNDoyOF0KICAgICAgICA0ICBub21faW5zdGFuY2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVsYWlzLXRjcAogICAgICAgIDUgIG5vbV9zZXJ2ZXVyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTcnYxCiAgICAgICAgNiAgdGVtcHNfZmlsZSAnLycgdGVtcHNfY29ubmVjdCAnLycgdGVtcHNfdG90YWwgIDAvMC81MDA3CiAgICAgICAgNyAgb2N0ZXRzIGx1cyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAKICAgICAgICA4ICBldGF0X3Rlcm1pbmFpc29uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS0KICAgICAgICA5ICBjb25uX3NydiAnLycgY29ubnNfaW5zdCAnLycgY29ubnNfcHJvY2Vzc3VzICAgMS8xLzEKICAgICAgIDEwICBwb3NpdGlvbiBlbiBmaWxlIGQnYXR0ZW50ZSBzcnYgJy8nIGdsb2JhbGUgICAgMC8wCgpVbmUgYXV0cmUgb3B0aW9uLCAnaHR0cGxvZycsIGZvdXJuaXQgcGx1cyBkZSBk6XRhaWxzIHN1ciBsZSBwcm90b2NvbGUgSFRUUCwKbm90YW1tZW50IGxhIHJlcXXqdGUgZXQgbCfpdGF0IGRlcyBjb29raWVzLiBEYW5zIGxlcyBjYXMgb/kgdW4gbeljYW5pc21lIGRlCnN1cnZlaWxsYW5jZSBlZmZlY3R1YW50IGRlcyBjb25uZXhpb25zIGV0IGTpY29ubmV4aW9ucyBmculxdWVudGVzLCBwb2xsdWVyYWl0CmxlcyBsb2dzLCBpbCBzdWZmaXQgZCdham91dGVyIGwnb3B0aW9uICdkb250bG9nbnVsbCcsIHBvdXIgbmUgcGx1cyBvYnRlbmlyIHVuZQpsaWduZSBkZSBsb2cgcG91ciBsZXMgc2Vzc2lvbnMgbidheWFudCBwYXMgZG9ubukgbGlldSDgIHVuIOljaGFuZ2UgZGUgZG9ubullcwoocmVxdep0ZSBvdSBy6XBvbnNlKS4KCkV4ZW1wbGUgZGUgam91cm5hbGlzYXRpb24gSFRUUCA6Ci0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICBsaXN0ZW4gaHR0cF9wcm94eSAwLjAuMC4wOjgwCiAgICAgICAgbW9kZSBodHRwCiAgICAgICAgb3B0aW9uIGh0dHBsb2cKICAgICAgICBvcHRpb24gZG9udGxvZ251bGwKICAgICAgICBsb2cgMTkyLjE2OC4yLjIwMCBsb2NhbDMKCj4+PiBoYXByb3h5WzY3NF06IDEyNy4wLjAuMTozMzMxOSBbMTUvT2N0LzIwMDM6MDg6MzE6NTddIHJlbGFpcy1odHRwIFNydjEgOS8wLzcvMTQ3LzcyMyAyMDAgMjQzIC0gLSAtLS0tIDIvMy8zIDAvMCAiSEVBRCAvIEhUVFAvMS4wIgoKRXhlbXBsZSBwbHVzIGNvbXBsZXQgOgoKICAgIGhhcHJveHlbMTg5ODldOiAxMC4wLjAuMTozNDU1MiBbMTUvT2N0LzIwMDM6MTU6MjY6MzFdIHJlbGFpcy1odHRwIFNydjEgMzE4My8tMS8tMS8tMS8xMTIxNSA1MDMgMCAtIC0gU0MtLSAxMzcvMjAyLzIwNSAwLzAge3cub2RzLm9yZ3xNb3ppbGxhfSB7fSAiSEVBRCAvIEhUVFAvMS4wIiAKCiAgICBDaGFtcCAgRm9ybWF0IC8gRGVzY3JpcHRpb24gICAgICAgICAgICAgICAgICAgICAgICAgIEV4ZW1wbGUKCiAgICAgICAgMSAgbm9tX3Byb2Nlc3N1cyAnWycgcGlkICddOicgICAgICAgICAgICAgICAgICAgIGhhcHJveHlbMTg5ODldOgogICAgICAgIDIgIGlwX2NsaWVudCAnOicgcG9ydF9jbGllbnQgICAgICAgICAgICAgICAgICAgICAxMC4wLjAuMTozNDU1MgogICAgICAgIDMgICdbJyBkYXRlICddJyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbMTUvT2N0LzIwMDM6MTU6MjY6MzFdCiAgICAgICAgNCAgbm9tX2luc3RhbmNlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbGFpcy1odHRwCiAgICAgICAgNSAgbm9tX3NlcnZldXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNydjEKICAgICAgICA2ICBUcSAnLycgVHcgJy8nIFRjICcvJyBUciAnLycgVHQgICAgICAgICAgICAgICAgMzE4My8tMS8tMS8tMS8xMTIxNQogICAgICAgIDcgIENvZGVfcmV0b3VyX0hUVFAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA1MDMKICAgICAgICA4ICBvY3RldHMgbHVzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMAogICAgICAgIDkgIGNvb2tpZXNfcmVxdep0ZV9jYXB0dXLpcyAgICAgICAgICAgICAgICAgICAgICAtCiAgICAgICAxMCAgY29va2llc19yZXBvbnNlX2NhcHR1culzICAgICAgICAgICAgICAgICAgICAgIC0KICAgICAgIDExICBldGF0X3Rlcm1pbmFpc29uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU0MtLQogICAgICAgMTIgIGNvbm5zX3NydiAnLycgY29ubnNfaW5zdCAnLycgY29ubnNfcHJvY2Vzc3VzICAxMzcvMjAyLzIwNQogICAgICAgMTMgIHBvc2l0aW9uIGZpbGUgc2VydmV1ciAnLycgZ2xvYmFsZSAgICAgICAgICAgICAwLzAKICAgICAgIDE0ICAneycgZW50ZXRlc19yZXF16nRlX2NhcHR1culzICd9JyAgICAgICAgICAgICAge3cub2RzLm9yZ3xNb3ppbGxhfQogICAgICAgMTUgICd7JyBlbnRldGVzX3JlcG9uc2VfY2FwdHVy6XMgJ30nICAgICAgICAgICAgICB7fQogICAgICAgMTYgICciJyByZXF16nRlX0hUVFAgJyInICAgICAgICAgICAgICAgICAgICAgICAgICAiSEVBRCAvIEhUVFAvMS4wIgogIApOb3RlIHBvdXIgbGVzIGFuYWx5c2V1cnMgZGUgbG9ncyA6IGwnVVJJIGVzdCBUT1VKT1VSUyBsZSBkZXJuaWVyIGNoYW1wIGRlIGxhIGxpZ25lLCBldAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1lbmNlIHBhciB1biBndWlsbGVtZXQgJyInLgoKTGUgcHJvYmzobWUgZGUgbG9ndWVyIHVuaXF1ZW1lbnQgZW4gZmluIGRlIHNlc3Npb24sIGMnZXN0IHF1J2lsIGVzdCBpbXBvc3NpYmxlCmRlIHNhdm9pciBjZSBxdWkgc2UgcGFzc2UgZHVyYW50IGRlIGdyb3MgdHJhbnNmZXJ0cyBvdSBkZXMgc2Vzc2lvbnMgbG9uZ3Vlcy4KUG91ciBwYWxsaWVyIOAgY2UgcHJvYmzobWUsIHVuZSBub3V2ZWxsZSBvcHRpb24gJ2xvZ2FzYXAnIGEg6XTpIGludHJvZHVpdGUgZGFucwpsYSB2ZXJzaW9uIDEuMS4yOCAoMS4yLjEpLiBMb3JzcXUnZWxsZSBlc3QgYWN0aXbpZSwgbGUgcHJveHkgbG9ndWVyYSBsZSBwbHVzCnT0dCBwb3NzaWJsZSwgYydlc3Qg4CBkaXJlIGp1c3RlIGF2YW50IHF1ZSBuZSBk6WJ1dGVudCBsZXMgdHJhbnNmZXJ0cyBkZQpkb25u6WVzLiBDZWxhIHNpZ25pZmllLCBkYW5zIGxlIGNhcyBkdSBUQ1AsIHF1J2lsIGxvZ3VlcmEgdG91am91cnMgbGUgculzdWx0YXQKZGUgbGEgY29ubmV4aW9uIHZlcnMgbGUgc2VydmV1ciwgZXQgZGFucyBsZSBjYXMgSFRUUCwgcXUnaWwgbG9ndWVyYSBlbiBmaW4gZGUKdHJhaXRlbWVudCBkZXMgZW4tdOp0ZXMgZGUgbGEgculwb25zZSBkdSBzZXJ2ZXVyLCBhdXF1ZWwgY2FzIGxlIG5vbWJyZSBkJ29jdGV0cwpyZXBy6XNlbnRlcmEgbGEgdGFpbGxlIGRlcyBlbi106nRlcyByZXRvdXJu6XMgYXUgY2xpZW50LgoKQWZpbiBkJ+l2aXRlciB0b3V0ZSBjb25mdXNpb24gYXZlYyBsZXMgbG9ncyBub3JtYXV4LCBsZSB0ZW1wcyB0b3RhbCBkZQp0cmFuc2ZlcnQgZXQgbGUgbm9tYnJlIGQnb2N0ZXRzIHRyYW5zZuly6XMgc29udCBwculmaXjpcyBkJ3VuIHNpZ25lICcrJwpyYXBwZWxhbnQgcXVlIGxlcyB2YWxldXJzIHLpZWxsZXMgc29udCBjZXJ0YWluZW1lbnQgcGx1cyDpbGV26WVzLgoKRXhlbXBsZSA6Ci0tLS0tLS0tLQoKICAgIGxpc3RlbiBodHRwX3Byb3h5IDAuMC4wLjA6ODAKICAgICAgICBtb2RlIGh0dHAKICAgICAgICBvcHRpb24gaHR0cGxvZwogICAgICAgIG9wdGlvbiBkb250bG9nbnVsbAogICAgICAgIG9wdGlvbiBsb2dhc2FwCiAgICAgICAgbG9nIDE5Mi4xNjguMi4yMDAgbG9jYWwzCgo+Pj4gaGFwcm94eVs2NzRdOiAxMjcuMC4wLjE6MzMzMjAgWzE1L09jdC8yMDAzOjA4OjMyOjE3XSByZWxhaXMtaHR0cCBTcnYxIDkvNy8xNC8rMzAgMjAwICsyNDMgLSAtIC0tLS0gMy8zICJHRVQgL2ltYWdlLmlzbyBIVFRQLzEuMCIKCgo0LjIuMykgQ2hyb25vbel0cmFnZSBkZXMg6XbpbmVtZW50cwotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpQb3VyIGTpY2VsZXIgZGVzIHByb2Js6G1lcyBy6XNlYXUsIGxlcyBtZXN1cmVzIGR1IHRlbXBzIOljb3Vs6SBlbnRyZSBjZXJ0YWlucwrpduluZW1lbnRzIHNvbnQgZCd1bmUgdHLocyBncmFuZGUgdXRpbGl06S4gVG91cyBsZXMgdGVtcHMgc29udCBtZXN1culzIGVuCm1pbGxpc2Vjb25kZXMgKG1zKS4gRW4gbW9kZSBIVFRQLCBxdWF0cmUgcG9pbnRzIGRlIG1lc3VyZSBzb250IHJhcHBvcnTpcyBzb3VzCmxhIGZvcm1lIFRxL1R3L1RjL1RyL1R0IDoKCiAgLSBUcTogdGVtcHMgdG90YWwgZGUgculjZXB0aW9uIGRlIGxhIHJlcXXqdGUgSFRUUCBkZSBsYSBwYXJ0IGR1IGNsaWVudC4KICAgIEMnZXN0IGxlIHRlbXBzIHF1aSBzJ2VzdCDpY291bOkgZW50cmUgbGUgbW9tZW50IG/5IGxlIGNsaWVudCBhIOl0YWJsaQogICAgc2EgY29ubmV4aW9uIHZlcnMgbGUgcmVsYWlzLCBldCBsZSBtb21lbnQgb/kgY2UgZGVybmllciBhIHJl53UgbGUgZGVybmllcgogICAgZW4tdOp0ZSBIVFRQIHZhbGlkYW50IGxhIGZpbiBkZSBsYSByZXF16nRlLiBVbmUgdmFsZXVyICctMScgaWNpIGluZGlxdWUKICAgIHF1ZSBsYSByZXF16nRlIGNvbXBs6HRlIG4nYSBqYW1haXMg6XTpIHJl53VlLgoKICAtIFR3OiB0ZW1wcyB0b3RhbCBwYXNz6SBkYW5zIGxlcyBmaWxlcyBkJ2F0dGVudGUgYXZhbnQgZCdvYnRlbmlyIHVuZSBwbGFjZQogICAgdmVycyB1biBzZXJ2ZXVyLiBDZWNpIHRpZW50IGNvbXB0ZSDgIGxhIGZvaXMgZGUgbGEgZmlsZSBkJ2F0dGVudGUgZ2xvYmFsZQogICAgZXQgZGUgY2VsbGUgZHUgc2VydmV1ciwgZXQgZOlwZW5kIGR1IG5vbWJyZSBkZSByZXF16nRlcyBkYW5zIGxhIGZpbGUgZXQgZHUKICAgIHRlbXBzIG7pY2Vzc2FpcmUgYXUgc2VydmV1ciBwb3VyIGNvbXBs6XRlciBsZXMgc2Vzc2lvbnMgcHLpY+lkZW50ZXMuIExhCiAgICB2YWxldXIgJy0xJyBpbmRpcXVlIHF1ZSBsYSByZXF16nRlIGEg6XTpIGTpdHJ1aXRlIGF2YW50IGQnYXR0ZWluZHJlIHVuZQogICAgZmlsZS4KCiAgLSBUYzogdGVtcHMgZCfpdGFibGlzc2VtZW50IGRlIGxhIGNvbm5leGlvbiBUQ1AgZHUgcmVsYWlzIHZlcnMgbGUgc2VydmV1ci4KICAgIEMnZXN0IGxlIHRlbXBzIOljb3Vs6SBlbnRyZSBsZSBtb21lbnQgb3UgbGUgcmVsYWlzIGEgaW5pdGnpIGxhIGRlbWFuZGUgZGUKICAgIGNvbm5leGlvbiB2ZXJzIGxlIHNlcnZldXIsIGV0IGxlIG1vbWVudCBv+SBjZSBkZXJuaWVyIGwnYSBhY3F1aXR06WUsIGMnZXN0CiAgICDgIGRpcmUgbGUgdGVtcHMgZW50cmUgbCdlbnZvaSBkdSBwYXF1ZXQgVENQIFNZTiBsYSBy6WNlcHRpb24gZHUgU1lOL0FDSy4KICAgIFVuZSB2YWxldXIgJy0xJyBpY2kgaW5kaXF1ZSBxdWUgbGEgY29ubmV4aW9uIG4nYSBqYW1haXMgcHUg6nRyZSDpdGFibGllCiAgICB2ZXJzIGxlIHNlcnZldXIuCgogIC0gVHI6IHRlbXBzIGRlIHLpcG9uc2UgZHUgc2VydmV1ci4gQydlc3QgbGUgdGVtcHMgcXVlIGxlIHNlcnZldXIgYSBtaXMgcG91cgogICAgcmVudm95ZXIgbGEgdG90YWxpdOkgZGVzIGVuLXTqdGVzIEhUVFAg4CBwYXJ0aXIgZHUgbW9tZW50IG/5IGlsIGEgYWNxdWl0dOkKICAgIGxhIGNvbm5leGlvbi4gQ2EgcmVwculzZW50ZSBleGFjdGVtZW50IGxlIHRlbXBzIGRlIHRyYWl0ZW1lbnQgZGUgbGEKICAgIHRyYW5zYWN0aW9uIHNhbnMgbGUgdHJhbnNmZXJ0IGRlcyBkb25u6WVzIGFzc29jaellcy4gVW5lIHZhbGV1ciAnLTEnCiAgICBpbmRpcXVlIHF1ZSBsZSBzZXJ2ZXVyIG4nYSBwYXMgZW52b3npIGxhIHRvdGFsaXTpIGRlIGwnZW4tdOp0ZSBIVFRQLgoKICAtIFR0OiBkdXLpZSBkZSB2aWUgdG90YWxlIGRlIGxhIHNlc3Npb24sIGVudHJlIGxlIG1vbWVudCBv+SBsYSBkZW1hbmRlIGRlCiAgICBjb25uZXhpb24gZHUgY2xpZW50IGEg6XTpIGFjcXVpdHTpZSBldCBsZSBtb21lbnQgb/kgbGEgY29ubmV4aW9uIGEg6XTpCiAgICByZWZlcm3pZSBhdXggZGV1eCBleHRy6W1pdOlzIChjbGllbnQgZXQgc2VydmV1cikuIExhIHNpZ25pZmljYXRpb24gY2hhbmdlCiAgICB1biBwZXUgc2kgbCdvcHRpb24gJ2xvZ2FzYXAnIGVzdCBwculzZW50ZS4gRGFucyBjZSBjYXMsIGxlIHRlbXBzIGNvcnJlc3BvbmQKICAgIHVuaXF1ZW1lbnQg4CAoVHEgKyBUdyArIFRjICsgVHIpLCBldCBzZSB0cm91dmUgcHLpZml46SBkJ3VuIHNpZ25lICcrJy4gT24KICAgIHBldXQgZG9uYyBk6WR1aXJlIFRkLCBsZSB0ZW1wcyBkZSB0cmFuc2ZlcnQgZGVzIGRvbm7pZXMsIGVuIGV4Y2x1YW50IGxlcwogICAgYXV0cmVzIHRlbXBzIDoKCiAgICAgICAgVGQgPSBUdCAtIChUcSArIFR3ICsgVGMgKyBUcikKCiAgICBMZXMgdGVtcHMgcmFwcG9ydOlzIOAgJy0xJyBzb250IHNpbXBsZW1lbnQg4CDpbGltaW5lciBkZSBjZXR0ZSDpcXVhdGlvbi4KCkVuIG1vZGUgVENQICgnb3B0aW9uIHRjcGxvZycpLCBzZXVscyBsZXMgZGV1eCBpbmRpY2F0ZXVycyBUdywgVGMgZXQgVHQgc29udApyYXBwb3J06XMuCgpDZXMgdGVtcHMgZm91cm5pc3NlbnQgZGUgcHLpY2lldXggcmVuc2VpZ25lbWVudCBzdXIgZGVzIGNhdXNlcyBwcm9iYWJsZXMgZGUKcHJvYmzobWVzLiBEdSBmYWl0IHF1ZSBsZSBwcm90b2NvbGUgVENQIGTpZmluaXNzZSBkZXMgdGVtcHMgZGUgcmV0cmFuc21pc3Npb24KZGUgMyBzZWNvbmRlcywgcHVpcyA2LCAxMiwgZXRjLi4uLCBsJ29ic2VydmF0aW9uIGRlIHRlbXBzIHByb2NoZXMgZGUgbXVsdGlwbGVzCmRlIDMgc2Vjb25kZXMgaW5kaXF1ZSBwcmF0aXF1ZW1lbnQgdG91am91cnMgZGVzIHBlcnRlcyBkZSBwYXF1ZXRzIGxp6XMg4CB1bgpwcm9ibOhtZSBy6XNlYXUgKGPiYmxlIG91IG7pZ29jaWF0aW9uKS4gRGUgcGx1cywgc2kgPFR0PiBlc3QgcHJvY2hlIGQndW5lCnZhbGV1ciBkZSB0aW1lLW91dCBkYW5zIGxhIGNvbmZpZ3VyYXRpb24sIGMnZXN0IHNvdXZlbnQgcXUndW5lIHNlc3Npb24gYSDpdOkKYWJhbmRvbm7pZSBzdXIgZXhwaXJhdGlvbiBkJ3VuIHRpbWUtb3V0LgoKQ2FzIGxlcyBwbHVzIGZy6XF1ZW50cyA6CgogIC0gU2kgVHEgZXN0IHByb2NoZSBkZSAzMDAwLCB1biBwYXF1ZXQgYSB0cuhzIGNlcnRhaW5lbWVudCDpdOkgcGVyZHUgZW50cmUKICAgIGxlIGNsaWVudCBldCBsZSByZWxhaXMuCiAgLSBTaSBUYyBlc3QgcHJvY2hlIGRlIDMwMDAsIHVuIHBhcXVldCBhIHRy6HMgY2VydGFpbmVtZW50IOl06SBwZXJkdSBlbnRyZQogICAgbGUgcmVsYWlzIGV0IGxlIHNlcnZldXIgZHVyYW50IGxhIHBoYXNlIGRlIGNvbm5leGlvbi4gQ2V0IGluZGljYXRldXIKICAgIGRldnJhaXQgbm9ybWFsZW1lbnQgdG91am91cnMg6nRyZSB0cuhzIGJhcyAobW9pbnMgZGUgcXVlbHF1ZXMgZGl6YWluZXMpLgogIC0gU2kgVHIgZXN0IHByZXNxdWUgdG91am91cnMgaW5m6XJpZXVyIOAgMzAwMCwgZXQgcXVlIGNlcnRhaW5lcyB2YWxldXJzCiAgICBzZW1ibGVudCBwcm9jaGVzIGRlIGxhIHZhbGV1ciBtb3llbm5lIG1ham9y6WUgZGUgMzAwMCwgaWwgeSBhIHBldXQt6nRyZQogICAgZGUgcGVydGVzIGVudHJlIGxlIHJlbGFpcyBldCBsZSBzZXJ2ZXVyLgogIC0gU2kgVHQgZXN0IGzpZ+hyZW1lbnQgc3Vw6XJpZXVyIGF1IHRpbWUtb3V0LCBjJ2VzdCBzb3V2ZW50IHBhcmNlIHF1ZSBsZQogICAgY2xpZW50IGV0IGxlIHNlcnZldXIgdXRpbGlzZW50IGR1IGtlZXAtYWxpdmUgSFRUUCBlbnRyZSBldXggZXQgcXVlIGxhCiAgICBzZXNzaW9uIGVzdCBtYWludGVudWUgYXBy6HMgbGEgZmluIGRlcyDpY2hhbmdlcy4gVm9pciBwbHVzIGxvaW4gcG91cgogICAgc2F2b2lyIGNvbW1lbnQgZOlzYWN0aXZlciBsZSBrZWVwLWFsaXZlIEhUVFAuCgpBdXRyZXMgY2FzICgneHgnIHJlcHLpc2VudGFudCB1bmUgdmFsZXVyIHF1ZWxjb25xdWUg4CBpZ25vcmVyKSA6CiAgLTEveHgveHgveHgvVHQ6IGxlIGNsaWVudCBuJ2EgcGFzIGVudm956SBzYSByZXF16nRlIGRhbnMgbGUgdGVtcHMgaW1wYXJ0aSBvdQogICAgICAgICAgICAgICAgICBhIHJlZmVybekgc2EgY29ubmV4aW9uIHNhbnMgY29tcGzpdGVyIGxhIHJlcXXqdGUuCiAgVHEvLTEveHgveHgvVHQ6IElsIG4n6XRhaXQgcGFzIHBvc3NpYmxlIGRlIHRyYWl0ZXIgbGEgcmVxdWVzdCwgcHJvYmFibGVtZW50CiAgICAgICAgICAgICAgICAgIHBhcmNlIHF1ZSB0b3VzIGxlcyBzZXJ2ZXVycyDpdGFpZW50IGhvcnMgZCd1c2FnZS4KICBUcS9Udy8tMS94eC9UdDogbGEgY29ubmV4aW9uIG4nYSBwYXMgcHUgcyfpdGFibGlyIHZlcnMgbGUgc2VydmV1ciAocmVmdXMgb3UKICAgICAgICAgICAgICAgICAgdGltZS1vdXQgYXUgYm91dCBkZSBUdC0oVHErVHcpIG1zKS4KICBUcS9Udy9UYy8tMS9UdDogbGUgc2VydmV1ciBhIGFjY2VwdOkgbGEgY29ubmV4aW9uIG1haXMgbidhIHBhcyBy6XBvbmR1IGRhbnMKICAgICAgICAgICAgICAgICAgbGVzIHRlbXBzIG91IGJpZW4gYSByZWZlcm3pIHNhIGNvbm5leGlvbiB0cm9wIHT0dCwgYXUgYm91dAogICAgICAgICAgICAgICAgICBkZSBUdC0oVHErVHcrVGMpIG1zLgogICAgIAo0LjIuNCkgQ29uZGl0aW9ucyBkZSBk6WNvbm5leGlvbgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpMZXMgbG9ncyBUQ1AgZXQgSFRUUCBmb3Vybmlzc2VudCB1biBpbmRpY2F0ZXVyIGRlIGNvbXBs6XR1ZGUgZGUgbGEgc2Vzc2lvbiBkYW5zCmxlIGNoYW1wICdldGF0X3Rlcm1pbmFpc29uJywganVzdGUgYXZhbnQgbGUgbm9tYnJlIGRlIGNvbm5leGlvbnMgYWN0aXZlcy4gQydlc3QKdW4gY2hhbXAgbG9uZyBkZSAyIGNhcmFjdOhyZXMgZW4gVENQIGV0IGRlIDQgY2FyYWN06HJlcyBlbiBIVFRQLCBjaGFjdW4gYXlhbnQKdW5lIHNpZ25pZmljYXRpb24gcHLpY2lzZSA6CgogIC0gc3VyIGxlIHByZW1pZXIgY2FyYWN06HJlLCB1biBjb2RlIHBy6WNpc2FudCBsZSBwcmVtaWVyIOl26W5lbWVudCBxdWkgYSBjYXVz6QogICAgbGEgdGVybWluYWlzb24gZGUgbGEgc2Vzc2lvbiA6CgogICAgICAgIEMgOiBmZXJtZXR1cmUgaW5hdHRlbmR1ZSBkZSBsYSBzZXNzaW9uIFRDUCBkZSBsYSBwYXJ0IGR1IGNsaWVudC4KCiAgICAgICAgUyA6IGZlcm1ldHVyZSBpbmF0dGVuZHVlIGRlIGxhIHNlc3Npb24gVENQIGRlIGxhIHBhcnQgZHUgc2VydmV1ciwgb3UKICAgICAgICAgICAgcmVmdXMgZXhwbGljaXRlIGRlIGNvbm5leGlvbiBkZSBsYSBwYXJ0IGRlIGNlIGRlcm5pZXIuCgogICAgICAgIFAgOiB0ZXJtaW5haXNvbiBwcultYXR1cullIGRlcyBzZXNzaW9ucyBwYXIgbGUgcHJveHksIHBvdXIgY2F1c2UKICAgICAgICAgICAgZCdpbXBvc2l0aW9uIGQndW5lIGxpbWl0ZSBzdXIgbGUgbm9tYnJlIGRlIGNvbm5leGlvbnMsIHBvdXIgY2F1c2UKICAgICAgICAgICAgZGUgY29uZmlndXJhdGlvbiAoZXg6IGZpbHRyZSBkJ1VSTCksIG91IHBhcmNlIHF1J3VuIGNvbnRy9GxlIGRlCiAgICAgICAgICAgIHPpY3VyaXTpIGEgZOl0ZWN06SBldCBibG9xdekgdW5lIGFub21hbGllIGRhbnMgbGEgculwb25zZSBkdQogICAgICAgICAgICBzZXJ2ZXVyIHF1aSBhdXJhaXQgcHUgY2F1c2VyIHVuZSBmdWl0ZSBkJ2luZm9ybWF0aW9ucyAocGFyIGV4ZW1wbGUsCiAgICAgICAgICAgIHVuIGNvb2tpZSBjYWNoYWJsZSkuCgogICAgICAgIFIgOiB1bmUgcmVzc291cmNlIHN1ciBsZSBwcm94eSBhIOl06SDpcHVpc+llICht6W1vaXJlLCBzb2NrZXRzLCBwb3J0cwogICAgICAgICAgICBzb3VyY2UsIC4uLikuIEfpbulyYWxlbWVudCwgY2VsYSBhcnJpdmUgYXUgY291cnMgZGUgbCfpdGFibGlzc2VtZW50CiAgICAgICAgICAgIGQndW5lIGNvbm5leGlvbiwgZXQgbGVzIGxvZ3Mgc3lzdOhtZSBkb2l2ZW50IGNvbnRlbmlyIHVuZSBjb3BpZSBkZQogICAgICAgICAgICBsJ+lycmV1ciBwculjaXNlLgoKICAgICAgICBJIDogdW5lIGVycmV1ciBpbnRlcm5lIGEg6XTpIGlkZW50aWZp6WUgcGFyIGxlIHByb3h5IOAgbGEgc3VpdGUgZCd1bgogICAgICAgICAgICBhdXRvLWNvbnRy9GxlLiBDZWNpIG5lIGRvaXQgSkFNQUlTIGFycml2ZXIsIGV0IHZvdXMg6nRlcyBlbmNvdXJhZ+lzCiAgICAgICAgICAgIOAgcmVtb250ZXIgbidpbXBvcnRlIHF1ZWwgbG9nIGNvbnRlbmFudCBjZWNpIGNhciBpbCBzJ2FnaXJhIHVuIGJ1Zy4KCiAgICAgICAgYyA6IGxlIGTpbGFpIG1heGltYWwgZCdhdHRlbnRlIGR1IGNsaWVudCBhIGV4cGly6SAoY2xpdGltZW91dCkuCgogICAgICAgIHMgOiBsZSBk6WxhaSBtYXhpbWFsIGQnYXR0ZW50ZSBkdSBzZXJ2ZXVyIGEgZXhwaXLpIChzcnZ0aW1lb3V0IGV0IGNvbnRpbWVvdXQpCgogICAgICAgIC0gOiB0ZXJtaW5haXNvbiBub3JtYWxlIGRlIHNlc3Npb24uCgogIC0gc3VyIGxlIHNlY29uZCBjYXJhY3TocmUsIGwn6XRhdCBkJ2F2YW5jZW1lbnQgZGUgbGEgc2Vzc2lvbiBUQ1AvSFRUUCBsb3JzIGRlCiAgICBsYSBmZXJtZXR1cmUgOgoKICAgICAgICBSIDogYXR0ZW50ZSBkJ3VuZSBSRVFVRVRFIEhUVFAgY29tcGzodGUgZGUgbGEgcGFydCBkdSBjbGllbnQuIFJpZW4gbidhCiAgICAgICAgICAgIOl06SB0cmFuc21pcyBhdSBzZXJ2ZXVyLgoKICAgICAgICBRIDogYXR0ZW50ZSBlbiBmaWxlIGQnYXR0ZW50ZSAoUVVFVUUpIGQndW5lIHBsYWNlIHBvdXIgYXZvaXIgdW5lCiAgICAgICAgICAgIGNvbm5leGlvbiB2ZXJzIHVuIHNlcnZldXIuIE5lIHBldXQgYXBwYXJh7nRyZSBxdWUgc3VyIHVuIHNlcnZldXIKICAgICAgICAgICAgcG9zc+lkYW50IHVuIHBhcmFt6HRyZSAnbWF4Y29ubicuIEF1Y3VuZSBjb25uZXhpb24gbidhIOl06SBlbnZveellCiAgICAgICAgICAgIGF1IHNlcnZldXIuCgogICAgICAgIEMgOiBhdHRlbnRlIGRlIGwn6XRhYmxpc3NlbWVudCBkJ3VuZSBDT05ORVhJT04gdmVycyBsZSBzZXJ2ZXVyLiBMZQogICAgICAgICAgICBzZXJ2ZXVyIHBldXQgYXUgcGx1cyBhdm9pciB2dSBsYSB0ZW50YXRpdmUgZGUgY29ubmV4aW9uLCBtYWlzCiAgICAgICAgICAgIGF1Y3VuZSBkb25u6WUgbidhIOl06SDpY2hhbmfpZS4KCiAgICAgICAgSCA6IGF0dGVudGUsIHLpY2VwdGlvbiBvdSB0cmFpdGVtZW50IGRlcyBlbi106nRlcyBIVFRQICgiSEVBREVSUyIpLgoKICAgICAgICBEIDogdHJhbnNmZXJ0IGRlcyBET05ORUVTIGR1IHNlcnZldXIgdmVycyBsZSBjbGllbnQuCgogICAgICAgIEwgOiB0cmFuc2ZlcnQgZGVzIGRlcm5p6HJlcyAoIkxBU1QiKSBkb25u6WVzIGR1IHByb3h5IHZlcnMgbGUgY2xpZW50LAogICAgICAgICAgICBhbG9ycyBxdWUgbGUgc2VydmV1ciBhIGTpauAgZmluaS4KCiAgICAgICAgLSA6IHRlcm1pbmFpc29uIG5vcm1hbGUsIGFwcuhzIGZpbiBkZSB0cmFuc2ZlcnQgZGVzIGRvbm7pZXMuCgogIC0gbGUgdHJvaXNp6G1lIGNhcmFjdOhyZSBpbmRpcXVlIGwn6XZlbnR1ZWxsZSBpZGVudGlmaWNhdGlvbiBkJ3VuIGNvb2tpZSBkZQogICAgcGVyc2lzdGVuY2UgKHVuaXF1ZW1lbnQgZW4gbW9kZSBIVFRQKSA6CgogICAgICAgIE4gOiBhdWN1biBjb29raWUgZGUgcGVyc2lzdGVuY2UgbidhIOl06SBwculzZW506S4gQydlc3QgZ+lu6XJhbGVtZW50IGxlCiAgICAgICAgICAgIGNhcyBzdXIgbGVzIE5PVVZFTExFUyBjb25uZXhpb25zIGNsaWVudHMuCgogICAgICAgIEkgOiBsZSBjbGllbnQgYSBwculzZW506SB1biBjb29raWUgSU5WQUxJREUgbmUgY29ycmVzcG9uZGFudCDgIGF1Y3VuCiAgICAgICAgICAgIHNlcnZldXIgY29ubnUuIENlY2kgcGV1dCDqdHJlIGT7IOAgdW4gY2hhbmdlbWVudCBkZSBjb25maWd1cmF0aW9uCiAgICAgICAgICAgIHLpY2VudCwg4CBkZXMgbelsYW5nZXMgZGUgbm9tcyBkZSBjb29raWVzIGVudHJlIHNpdGVzIEhUVFAvSFRUUFMsCiAgICAgICAgICAgIG91IOAgdW5lIGF0dGFxdWUuCgogICAgICAgIEQgOiBsZSBjbGllbnQgYSBwculzZW506SB1biBjb29raWUgY29ycmVzcG9uZGFudCDgIHVuIHNlcnZldXIgaG9ycwogICAgICAgICAgICBkJ3VzYWdlICgiRE9XTiIpLiBTdWl2YW50IGwnb3B0aW9uICdwZXJzaXN0JywgaWwgYSDpdOkgcmVudm956SB2ZXJzCiAgICAgICAgICAgIHVuIGF1dHJlIHNlcnZldXIgb3UgYSB0b3V0IGRlIG3qbWUgdGVudOkgZGUgc2UgY29ubmVjdGVyIHN1ciBjZWx1aQogICAgICAgICAgICBjb3JyZXNwb25kYW50IGF1IGNvb2tpZS4KCiAgICAgICAgViA6IGxlIGNsaWVudCBhIHBy6XNlbnTpIHVuIGNvb2tpZSBWQUxJREUgZXQgYSBwdSBzZSBjb25uZWN0ZXIgYXUKICAgICAgICAgICAgc2VydmV1ciBjb3JyZXNwb25kYW50LgoKICAgICAgICAtIDogbm9uIGFwcGxpcXVhYmxlIChwYXMgZGUgY29va2llIHBvc2l0aW9ubukgZGFucyBsYSBjb25maWd1cmF0aW9uKS4KCiAgLSBsZSBkZXJuaWVyIGNhcmFjdOhyZSBpbmRpcXVlIGwn6XZlbnR1ZWwgdHJhaXRlbWVudCBlZmZlY3R16SBzdXIgdW4gY29va2llIGRlCiAgICBwZXJzaXN0ZW5jZSByZXRyb3VybukgcGFyIGxlIHNlcnZldXIgKHVuaXF1ZW1lbnQgZW4gbW9kZSBIVFRQKSA6CgogICAgICAgIE4gOiBhdWN1biBjb29raWUgZGUgcGVyc2lzdGFuY2UgbidhIOl06SBmb3VybmkgcGFyIGxlIHNlcnZldXIsIGV0IGF1Y3VuCiAgICAgICAgICAgIG4nYSDpdOkgaW5z6XLpLgoKICAgICAgICBJIDogYXVjdW4gY29va2llIGRlIHBlcnNpc3RhbmNlIG4nYSDpdOkgZm91cm5pIHBhciBsZSBzZXJ2ZXVyLCBldCBsZQogICAgICAgICAgICBwcm94eSBlbiBhIElOU0VSRSB1bi4KCiAgICAgICAgUCA6IHVuIGNvb2tpZSBkZSBwZXJzaXN0ZW5jZSBhIOl06SBmb3VybmkgcGFyIGxlIHNlcnZldXIgZXQgdHJhbnNtaXMKICAgICAgICAgICAgdGVsIHF1ZWwgKCJQQVNTSUYiKS4KCiAgICAgICAgUiA6IGxlIGNvb2tpZSByZXRvdXJu6SBwYXIgbGUgc2VydmV1ciBhIOl06SBSRUVDUklUIHBhciBsZSBwcm94eS4KCiAgICAgICAgRCA6IGxlIGNvb2tpZSBwculzZW506SBwYXIgbGUgc2VydmV1ciBhIOl06SBERVRSVUlUIHBhciBsZSBwcm94eSBwb3VyCiAgICAgICAgICAgIG5lIHBhcyDqdHJlIHJldG91cm7pIGF1IGNsaWVudC4KCiAgICAgICAgLSA6IG5vbiBhcHBsaXF1YWJsZQoKCkxhIGNvbWJpbmFpc29uIGRlcyBkZXV4IHByZW1pZXJzIGluZGljYXRldXJzIGZvdXJuaXQgdW5lIGdyYW5kZSBxdWFudGl0aekKZCdpbmZvcm1hdGlvbnMgc3VyIGNlIHF1aSBzZSBwYXNzYWl0IGxvcnNxdWUgbGEgc2Vzc2lvbiBzJ2VzdCB0ZXJtaW7pZS4gQ2VsYQpwZXV0IG5vdGFtbWVudCBhaWRlciDgIGTpdGVjdGVyIHVuZSBzYXR1cmF0aW9uIGRlIHNlcnZldXIsIGRlcyB0cm91YmxlcyBy6XNlYXUsCmRlcyDpcHVpc2VtZW50cyBkZSByZXNzb3VyY2VzIHN5c3TobWUgbG9jYWxlcywgZGVzIGF0dGFxdWVzLCBldGMuLi4KCkxlcyBjb21iaW5haXNvbnMgZCdpbmRpY2F0ZXVycyBsZXMgcGx1cyBmculxdWVudGVzIHNvbnQg6W51bely6WVzIGljaS4KCiAgIEluZGljICBSYWlzb24KICAgICAgQ1IgIExlIGNsaWVudCBhIGFiYW5kb25u6SBhdmFudCBkJ+ltZXR0cmUgdW5lIHJlcXXqdGUgY29tcGzodGUuIElsIGVzdAogICAgICAgICAgdHLocyBwcm9iYWJsZSBxdWUgbGEgcmVxdep0ZSBhaXQg6XTpIHRhcOllIOAgbGEgbWFpbiBkYW5zIHVuIGNsaWVudAogICAgICAgICAgdGVsbmV0IGV0IGFib3J06WUgdHJvcCB09HQuCgogICAgICBjUiAgTGUgdGVtcHMgaW1wYXJ0aSBhdSBjbGllbnQgYSBleHBpcukgYXZhbnQgculjZXB0aW9uIGQndW5lIHJlcXXqdGUKICAgICAgICAgIGNvbXBs6HRlLiBDZWNpIGVzdCBwYXJmb2lzIGNhdXPpIHBhciB1biBwYXJhbeh0cmUgVENQIE1TUyB0cm9wIOlsZXbpCiAgICAgICAgICBzdXIgbGUgY2xpZW50IHBvdXIgZGVzIHLpc2VhdXggUFBQb0Ugc3VyIEFEU0wgcXVpIG5lIHBldXZlbnQgcGFzCiAgICAgICAgICB0cmFuc3BvcnRlciBkZXMgcGFxdWV0cyBlbnRpZXJzLCBvdSBwYXIgZGVzIGNsaWVudHMgcXVpIOludm9pZW50IGRlcwogICAgICAgICAgcmVxdep0ZXMg4CBsYSBtYWluIGV0IG5lIHRhcGVudCBwYXMgYXNzZXogdml0ZS4KCiAgICAgIFNDICBMZSBzZXJ2ZXVyIGEgZXhwbGljaXRlbWVudCByZWZ1c+kgbGEgY29ubmV4aW9uIChsZSBwcm94eSBhIHJl53UgdW4KICAgICAgICAgIFJTVCBUQ1Agb3UgdW4gbWVzc2FnZSBJQ01QIGVuIHJldG91cikuIERhbnMgY2VydGFpbnMgY2FzLCBjZWxhIHBldXQKICAgICAgICAgIOp0cmUgbGEgY291Y2hlIHLpc2VhdSBxdWkgaW5kaXF1ZSBhdSBwcm94eSBxdWUgbGUgc2VydmV1ciBuJ2VzdCBwYXMKICAgICAgICAgIGpvaWduYWJsZSAocC5leDogcGFzIGRlIHJvdXRlLCBwYXMgZGUgculwb25zZSBBUlAgZW4gbG9jYWwsIGV0Yy4uLikKCiAgICAgIHNDICBMYSBjb25uZXhpb24gYXUgc2VydmV1ciBuJ2EgcGFzIHB1IHMn6XRhYmxpciBkYW5zIGxlIHRlbXBzIGltcGFydGkuCgogICAgICBQQyAgTGUgcHJveHkgYSByZWZ1c+kgZCfpdGFibGlyIHVuZSBjb25uZXhpb24gYXUgc2VydmV1ciBwYXJjZSBxdWUgbGUKICAgICAgICAgIG5vbWJyZSBkZSBjb25uZXhpb25zIGEgYXR0ZWludCBsYSBsaW1pdGUgJ21heGNvbm4nIChnbG9iYWwgb3UgZGUKICAgICAgICAgIGwnaW5zdGFuY2UpLiBMZSBwYXJhbeh0cmUgJ21heGNvbm4nIGRlIGwnaW5zdGFuY2UgcG91cnJhaXQg6nRyZQogICAgICAgICAgYXVnbWVudOksIHRvdXQgY29tbWUgbGUgcGFyYW3odHJlICdtYXhjb25uJyBnbG9iYWwuCgogICAgICBSQyAgVW5lIHJlc3NvdXJjZSBsb2NhbGUgYSDpdOkg6XB1aXPpZSAobeltb2lyZSwgc29ja2V0cywgcG9ydHMgc291cmNlKSwKICAgICAgICAgIGVtcOpjaGFudCBsYSBjb25uZXhpb24gYXUgc2VydmV1ciBkZSBzJ+l0YWJsaXIuIExlcyBsb2dzIGQnZXJyZXVycwogICAgICAgICAgZGlyb250IHBy6WNpc+ltZW50IGNlIHF1aSBtYW5xdWFpdC4gRGFucyB0b3VzIGxlcyBjYXMsIGxlIHNldWwgcmVt6GRlCiAgICAgICAgICBjb25zaXN0ZSDgIGFmZmluZXIgbGUgcGFyYW3pdHJhZ2Ugc3lzdOhtZS4KCiAgICAgIGNIICBMZSB0ZW1wcyBpbXBhcnRpIGF1IGNsaWVudCBhIGV4cGly6SBhdSBjb3VycyBkJ3VuZSByZXF16nRlIFBPU1QuIENlY2kKICAgICAgICAgIGVzdCBwYXJmb2lzIGNhdXPpIHBhciB1biBwYXJhbeh0cmUgVENQIE1TUyB0cm9wIOlsZXbpIHN1ciBsZSBjbGllbnQKICAgICAgICAgIHBvdXIgZGVzIHLpc2VhdXggUFBQb0Ugc3VyIEFEU0wgcXVpIG5lIHBldXZlbnQgcGFzIHRyYW5zcG9ydGVyIGRlcwogICAgICAgICAgcGFxdWV0cyBlbnRpZXJzLgoKICAgICAgQ0ggIExlIGNsaWVudCBhIGFiYW5kb25u6SBhbG9ycyBxdSdpbCBhdHRlbmRhaXQgdW4gZOlidXQgZGUgculwb25zZSBkZSBsYQogICAgICAgICAgcGFydCBkdSBzZXJ2ZXVyLiBDZWxhIHBldXQg6nRyZSBjYXVz6SBwYXIgbGUgc2VydmV1ciBxdWkgbWV0dGFpdCB0cm9wCiAgICAgICAgICBkZSB0ZW1wcyDgIHLpcG9uZHJlLCBvdSBwYXIgdW4gY2xpZW50IGNsaXF1YW50IHBy6WNpcGl0YW1tZW50IHN1ciBsZQogICAgICAgICAgYm91dG9uICdTdG9wJy4KCiAgICAgIENRICBMZSBjbGllbnQgYSBhYmFuZG9ubukgYWxvcnMgcXVlIHNhIHNlc3Npb24g6XRhaXQgbWlzZSBlbiBmaWxlCiAgICAgICAgICBkJ2F0dGVudGUgcG91ciBvYnRlbmlyIHVuIHNlcnZldXIgYXZlYyBzdWZmaXNhbW1lbnQgZGUgY29ubmV4aW9ucwogICAgICAgICAgbGlicmVzIHBvdXIgbCdhY2NlcHRlci4gQ2VsYSBzaWduaWZpZSBzb2l0IHF1ZSBsJ2Vuc2VtYmxlIGRlcwogICAgICAgICAgc2VydmV1cnMg6XRhaWVudCBzYXR1culzLCBzb2l0IHF1ZSBsZSBzZXJ2ZXVyIGFzc2lnbukgYSBtaXMgdHJvcCBkZQogICAgICAgICAgdGVtcHMg4CBy6XBvbmRyZS4KCiAgICAgIHNRICBMYSBzZXNzaW9uIGEgYXR0ZW5kdSB0cm9wIGxvbmd0ZW1wcyBlbiBmaWxlIGQnYXR0ZW50ZSBldCBhIOl06QogICAgICAgICAgZXhwaXLpZS4KCiAgICAgIFNIICBMZSBzZXJ2ZXVyIGEgYWJvcnTpIGJydXRhbGVtZW50IGFsb3JzIHF1J2lsIGRldmFpdCBlbnZveWVyIHNlcwogICAgICAgICAgZW4tdOp0ZXMuIEVuIGfpbulyYWwsIGNlbGEgaW5kaXF1ZSBxdSdpbCBhIGNyYXNo6S4KCiAgICAgIHNIICBMZSBzZXJ2ZXVyIG4nYSBwYXMgcHUgculwb25kcmUgZHVyYW50IGxlIHRlbXBzIGltcGFydGksIGNlIHF1aSBtb250cmUKICAgICAgICAgIGRlcyB0cmFuc2FjdGlvbnMgdHJvcCBsb25ndWVzLCBwcm9iYWJsZW1lbnQgY2F1c+llcyBwYXIgdW4gYmFjay1lbmQKICAgICAgICAgIHNhdHVy6S4gTGVzIHNldWxlcyBzb2x1dGlvbnMgc29udCBkZSBjb3JyaWdlciBsZSBwcm9ibOhtZSBzdXIKICAgICAgICAgIGwnYXBwbGljYXRpb24sIGQnYWNjcm/udHJlIGxlIHBhcmFt6HRyZSAnc3J2dGltZW91dCcgcG91ciBzdXBwb3J0ZXIKICAgICAgICAgIGRlcyBhdHRlbnRlcyBwbHVzIGxvbmd1ZXMgYXUgcmlzcXVlIHF1ZSBsZXMgY2xpZW50cyBhYmFuZG9ubmVudCDgCiAgICAgICAgICBsZXVyIHRvdXIsIG91IGJpZW4gZCdham91dGVyIGRlcyBzZXJ2ZXVycy4KICAgICAgCiAgICAgIFBSICBMZSBwcm94eSBhIGJsb3F16SB1bmUgcmVxdep0ZSBkdSBjbGllbnQsIHNvaXQg4CBjYXVzZSBkJ3VuZSBzeW50YXhlCiAgICAgICAgICBIVFRQIGludmFsaWRlLCBhdXF1ZWwgY2FzIGlsIGEgcmVudm956SB1bmUgZXJyZXVyIEhUVFAgNDAwIGF1IGNsaWVudCwKICAgICAgICAgIHNvaXQg4CBjYXVzZSBkJ3VuZSByZXF16nRlIHZhbGlkYW50IHVuIGZpbHRyZSBkJ2ludGVyZGljdGlvbiwgYXVxdWVsCiAgICAgICAgICBjYXMgbGUgcHJveHkgYSByZW52b3npIHVuZSBlcnJldXIgSFRUUCA0MDMuCgogICAgICBQSCAgTGUgcHJveHkgYSBibG9xdekgbGEgculwb25zZSBkdSBzZXJ2ZXVyIHBhcmNlIHF1J2VsbGUg6XRhaXQgaW52YWxpZGUsCiAgICAgICAgICBpbmNvbXBs6HRlLCBkYW5nZXJldXNlICgnY2FjaGUgY29udHJvbCcpLCBvdSBwYXJjZSBxdSdlbGxlIHZhbGlkYWl0CiAgICAgICAgICB1biBmaWx0cmUgZGUgc+ljdXJpdOkuIERhbnMgdG91cyBsZXMgY2FzLCB1bmUgZXJyZXVyIEhUVFAgNTAyIGVzdAogICAgICAgICAgcmVudm956WUgYXUgY2xpZW50LgoKICAgICAgY0QgIExlIGNsaWVudCBuJ2EgcGFzIGx1IGRlIGRvbm7pZXMgcGVuZGFudCBsZSB0ZW1wcyBxdWkgbHVpIOl0YWl0CiAgICAgICAgICBpbXBhcnRpLiBDZWNpIGVzdCBzb3V2ZW50IGNhdXPpIHBhciBkZXMgcHJvYmzobWVzIHLpc2VhdSBj9HTpIGNsaWVudC4KCiAgICAgIENEICBMZSBjbGllbnQgYSBhYm9ydOkgc2EgY29ubmVjdGlvbiBkZSBtYW5p6HJlIGluYXR0ZW5kdWUgcGVuZGFudCBsZQogICAgICAgICAgdHJhbnNmZXJ0IGRlcyBkb25u6WVzLiBDZWNpIGVzdCBwcm92b3F16SBzb2l0IHBhciBsZSBjcmFzaCBkJ3VuCiAgICAgICAgICBuYXZpZ2F0ZXVyLCBvdSBwYXIgdW5lIHNlc3Npb24gZW4gSFRUUCBrZWVwLWFsaXZlIGVudHJlIGxlIHNlcnZldXIKICAgICAgICAgIGV0IGxlIGNsaWVudCB0ZXJtaW7pZSBlbiBwcmVtaWVyIHBhciBsZSBjbGllbnQuCgogICAgICBzRCAgTGUgc2VydmV1ciBuJ2EgcmllbiBmYWl0IGR1cmFudCBsZSB0ZW1wcyBpbXBhcnRpIHBhciBsZSBwYXJhbeh0cmUKICAgICAgICAgICdzcnZ0aW1lb3V0Jy4gQ2VjaSBlc3Qgc291dmVudCBjYXVz6SBwYXIgZGVzIHRpbWVvdXRzIHRyb3AgY291cnRzCiAgICAgICAgICBzdXIgZGVzIOlxdWlwZW1lbnRzIGRlIG5pdmVhdSA0IChmaXJld2FsbHMsIHLpcGFydGl0ZXVycyBkZSBjaGFyZ2UpCiAgICAgICAgICBzaXR16XMgZW50cmUgbGUgcHJveHkgZXQgbGUgc2VydmV1ci4KCjQuMi41KSBDYXJhY3TocmVzIG5vbi1pbXByaW1hYmxlcwotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KRGVwdWlzIGxhIHZlcnNpb24gMS4xLjI5LCBsZXMgY2FyYWN06HJlcyBub24taW1wcmltYWJsZXMgbmUgc29udCBwbHVzIGVudm956XMKdGVscyBxdWVscyBkYW5zIGxlcyBsaWduZXMgZGUgbG9ncywgbWFpcyBpbnNjcml0cyBzb3VzIGxhIGZvcm1lIGRlIGRldXggY2hpZmZyZXMKaGV4YWTpY2ltYXV4LCBwculmaXjpcyBkdSBjYXJhY3TocmUgZCfpY2hhcHBlbWVudCAnIycuIExlcyBzZXVscyBjYXJhY3TocmVzCmRvculuYXZhbnQgbG9ndelzIHRlbHMgcXVlbHMgc29udCBjb21wcmlzIGVudHJlIDMyIGV0IDEyNi4gQmllbiDpdmlkZW1tZW50LCBsZQpjYXJhY3TocmUgZCfpY2hhcHBlbWVudCAnIycgZXN0IGx1aS1t6m1lIGVuY29k6SBhZmluIGRlIGxldmVyIGwnYW1iaWd1aXTpLiBJbCBlbgplc3QgZGUgbeptZSBwb3VyIGxlIGNhcmFjdOhyZSAnIicsIGFpbnNpIHF1ZSBsZXMgY2FyYWN06HJlcyAneycsICd8JyBldCAnfScgcG91cgpsZXMgZW4tdOp0ZXMuCgo0LjIuNikgQ2FwdHVyZSBkJ2VuLXTqdGVzIEhUVFAgZXQgZGUgY29va2llcwotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpMYSB2ZXJzaW9uIDEuMS4yMyBhIGFwcG9ydOkgbGEgY2FwdHVyZSBkZXMgY29va2llcywgZXQgbGEgdmVyc2lvbiAxLjEuMjkgbGEKY2FwdHVyZSBkJ2VuLXTqdGVzLiBUb3V0IGNlY2kgZXN0IGVmZmVjdHXpIGVuIHV0aWxpc2FudCBsZSBtb3QtY2zpICdjYXB0dXJlJy4KCkxlcyBjYXB0dXJlcyBkZSBjb29raWVzIGZhY2lsaXRlbnQgbGUgc3VpdmkgZXQgbGEgcmVjb25zdGl0dXRpb24gZCd1bmUgc2Vzc2lvbgp1dGlsaXNhdGV1ci4gTGEgc3ludGF4ZSBlc3QgbGEgc3VpdmFudGUgOgoKICAgIGNhcHR1cmUgY29va2llIDxwculmaXhlX2Nvb2tpZT4gbGVuIDxsb25ndWV1cl9jYXB0dXJlPgoKQ2VjaSBhY3RpdmVyYSBsYSBjYXB0dXJlIGRlIGNvb2tpZXMg4CBsYSBmb2lzIGRhbnMgbGVzIHJlcXXqdGVzIGV0IGRhbnMgbGVzCnLpcG9uc2VzLiBEZSBjZXR0ZSBtYW5p6HJlLCBpbCBkZXZpZW50IGZhY2lsZSBkZSBk6XRlY3RlciBsb3JzcXUndW4gdXRpbGlzYXRldXIKYmFzY3VsZSBzdXIgdW5lIG5vdXZlbGxlIHNlc3Npb24gcGFyIGV4ZW1wbGUsIGNhciBsZSBzZXJ2ZXVyIGx1aSBy6WFzc2lnbmVyYSB1bgpub3V2ZWF1IGNvb2tpZS4KCkxlIHByZW1pZXIgY29va2llIGRvbnQgbGUgbm9tIGNvbW1lbmNlcmEgcGFyIDxwculmaXhlX2Nvb2tpZT4gc2VyYSBjYXB0dXLpLCBldAp0cmFuc21pcyBzb3VzIGxhIGZvcm1lICJOT009dmFsZXVyIiwgc2FucyB0b3V0ZWZvaXMsIGV4Y+lkZXIgPGxvbmd1ZXVyX2NhcHR1cmU+CmNhcmFjdOhyZXMgKDY0IGF1IG1heGltdW0pLiBMb3JzcXVlIGxlIG5vbSBkdSBjb29raWUgZXN0IGZpeGUgZXQgY29ubnUsIG9uIHBldXQKbGUgc3VmZml4ZXIgZHUgc2lnbmUgIj0iIHBvdXIgcydhc3N1cmVyIHF1J2F1Y3VuIGF1dHJlIGNvb2tpZSBuZSBwcmVuZHJhIHNhCnBsYWNlIGRhbnMgbGVzIGxvZ3MuCgpFeGVtcGxlcyA6Ci0tLS0tLS0tLS0KICAgICMgY2FwdHVyZSBkdSBwcmVtaWVyIGNvb2tpZSBkb250IGxlIG5vbSBjb21tZW5jZSBwYXIgIkFTUFNFU1NJT04iCiAgICBjYXB0dXJlIGNvb2tpZSBBU1BTRVNTSU9OIGxlbiAzMgoKICAgICMgY2FwdHVyZSBkdSBwcmVtaWVyIGNvb2tpZSBkb250IGxlIG5vbSBlc3QgZXhhY3RlbWVudCAidmdudmlzaXRvciIKICAgIGNhcHR1cmUgY29va2llIHZnbnZpc2l0b3I9IGxlbiAzMgoKRGFucyBsZXMgbG9ncywgbGUgY2hhbXAgcHLpY+lkYW50IGwnaW5kaWNhdGV1ciBkZSBjb21wbOl0dWRlIGNvbnRpZW50IGxlIGNvb2tpZQpwb3NpdGlvbm7pIHBhciBsZSBzZXJ2ZXVyLCBwculj6WTpIGR1IGNvb2tpZSBwb3NpdGlvbm7pIHBhciBsZSBjbGllbnQuIENoYWN1bgpkZSBjZXMgY2hhbXBzIGVzdCByZW1wbGFj6SBwYXIgbGUgc2lnbmUgIi0iIGxvcnNxdSdhdWN1biBjb29raWUgbidlc3QgZm91cm5pCnBhciBsZSBjbGllbnQgb3UgbGUgc2VydmV1ciwgb3UgbG9yc3F1ZSBsJ29wdGlvbiBlc3QgZOlzYWN0aXbpZS4uCgpMZXMgY2FwdHVyZXMgZCdlbi106nRlcyBvbnQgdW4gcvRsZSBjb21wbOh0ZW1lbnQgZGlmZulyZW50LiBFbGxlcyBzb250IHV0aWxlcwpwb3VyIHN1aXZyZSB1biBpZGVudGlmaWFudCBkZSByZXF16nRlIGdsb2JhbGVtZW50IHVuaXF1ZSBwb3NpdGlvbm7pIHBhciB1bgphdXRyZSBwcm94eSBlbiBhbW9udCwgcG91ciBqb3VybmFsaXNlciBsZXMgbm9tcyBkZSBzZXJ2ZXVycyB2aXJ0dWVscywgbGVzIHR5cGVzCmRlIGNsaWVudHMgd2ViLCBsYSBsb25ndWV1ciBkZXMgUE9TVCwgbGVzICdyZWZlcnJlcnMnLCBldGMuIERhbnMgbGEgculwb25zZSwgb24KcGV1dCBjaGVyY2hlciBkZXMgaW5mb3JtYXRpb25zIHJlbGF0aXZlcyDgIGxhIGxvbmd1ZXVyIGFubm9uY+llIGRlIGxhIHLpcG9uc2UsCmxlIGZvbmN0aW9ubmVtZW50IGF0dGVuZHUgZHUgY2FjaGUsIG91IGVuY29yZSBsYSBsb2NhbGlzYXRpb24gZCd1biBvYmpldCBlbiBjYXMKZGUgcmVkaXJlY3Rpb24uIFRvdXQgY29tbWUgcG91ciBsZXMgY2FwdHVyZXMgZGUgY29va2llcywgaWwgZXN0IHBvc3NpYmxlCmQnaW5jbHVyZSBsZXMgZW4tdOp0ZXMgZGUgcmVxdep0ZXMgZXQgZGUgculwb25zZSBzaW11bHRhbultZW50LiBMYSBzeW50YXhlIGVzdApsYSBzdWl2YW50ZSA6CgogICAgY2FwdHVyZSByZXF1ZXN0ICBoZWFkZXIgPG5vbT4gbGVuIDxsb25ndWV1ciBtYXg+CiAgICBjYXB0dXJlIHJlc3BvbnNlIGhlYWRlciA8bm9tPiBsZW4gPGxvbmd1ZXVyIG1heD4KCk5vdGU6IExlcyBub21zIGQnZW4tdOp0ZXMgbmUgc29udCBwYXMgc2Vuc2libGVzIOAgbGEgY2Fzc2UuCgpFeGVtcGxlczoKLS0tLS0tLS0tCiAgICAjIGNvbnNlcnZlciBsZSBub20gZHUgc2VydmV1ciB2aXJ0dWVsIGFjY+lk6SBwYXIgbGUgY2xpZW50CiAgICBjYXB0dXJlIHJlcXVlc3QgIGhlYWRlciBIb3N0IGxlbiAyMAogICAgIyBub3RlciBsYSBsb25ndWV1ciBkZXMgZG9ubullcyBlbnZveellcyBkYW5zIHVuIFBPU1QKICAgIGNhcHR1cmUgcmVxdWVzdCAgaGVhZGVyIENvbnRlbnQtTGVuZ3RoIGxlbiAxMAoKICAgICMgbm90ZXIgbGUgZm9uY3Rpb25uZW1lbnQgYXR0ZW5kdSBkdSBjYWNoZSBwYXIgbGUgc2VydmV1cgogICAgY2FwdHVyZSByZXNwb25zZSBoZWFkZXIgQ2FjaGUtQ29udHJvbCBsZW4gOAogICAgIyBub3RlciBsJ1VSTCBkZSByZWRpcmVjdGlvbgogICAgY2FwdHVyZSByZXNwb25zZSBoZWFkZXIgTG9jYXRpb24gbGVuIDIwCgpMZXMgZW4tdOp0ZXMgbm9uIHRyb3V26XMgc29udCBsb2d16XMg4CB2aWRlLCBldCBzaSB1biBlbi106nRlIGFwcGFyYWl0IHBsdXNpZXVycwpmb2lzLCBzZXVsZSBsYSBkZXJuaehyZSBvY2N1cmVuY2Ugc2VyYSBjb25zZXJ26WUuIExlcyBlbi106nRlcyBkZSByZXF16nRlIHNvbnQKcmVncm91cOlzIGVudHJlIGRldXggYWNjb2xhZGVzICd7JyBldCAnfScgZGFucyBsJ29yZHJlIGRlIGxldXIgZOljbGFyYXRpb24sIGV0CmNoYWN1biBz6XBhculzIHBhciB1bmUgYmFycmUgdmVydGljYWxlICd8Jywgc2FucyBhdWN1biBlc3BhY2UuIExlcyBlbi106nRlcyBkZQpy6XBvbnNlIHNvbnQgcHLpc2VudOlzIGRlIGxhIG3qbWUgbWFuaehyZSwgbWFpcyBhcHLocyB1biBlc3BhY2Ugc3VpdmFudCBsZSBibG9jCmQnZW4tdOp0ZSBkZSByZXF16nRlLiBMZSB0b3V0IHBy6WPoZGUgbGEgcmVxdep0ZSBIVFRQLiBFeGVtcGxlIDoKCiAgQ29uZmlnOgoKICAgIGNhcHR1cmUgcmVxdWVzdCAgaGVhZGVyIEhvc3QgbGVuIDIwCiAgICBjYXB0dXJlIHJlcXVlc3QgIGhlYWRlciBDb250ZW50LUxlbmd0aCBsZW4gMTAKICAgIGNhcHR1cmUgcmVxdWVzdCAgaGVhZGVyIFJlZmVyZXIgbGVuIDIwCiAgICBjYXB0dXJlIHJlc3BvbnNlIGhlYWRlciBTZXJ2ZXIgbGVuIDIwCiAgICBjYXB0dXJlIHJlc3BvbnNlIGhlYWRlciBDb250ZW50LUxlbmd0aCBsZW4gMTAKICAgIGNhcHR1cmUgcmVzcG9uc2UgaGVhZGVyIENhY2hlLUNvbnRyb2wgbGVuIDgKICAgIGNhcHR1cmUgcmVzcG9uc2UgaGVhZGVyIFZpYSBsZW4gMjAKICAgIGNhcHR1cmUgcmVzcG9uc2UgaGVhZGVyIExvY2F0aW9uIGxlbiAyMAoKICBMb2cgOgoKICAgIEF1ZyAgOSAyMDoyNjowOSBsb2NhbGhvc3QgaGFwcm94eVsyMDIyXTogMTI3LjAuMC4xOjM0MDE0IFswOS9BdWcvMjAwNDoyMDoyNjowOV0gcmVsYWlzLWh0dHAgbmV0Y2FjaGUgMC8wLzAvMTYyLysxNjIgMjAwICszNTAgLSAtIC0tLS0gMC8wLzAgMC8wIHtmci5hZHNlcnZlci55YWhvby5jb3x8aHR0cDovL2ZyLmY0MTYubWFpbC59IHt8ODY0fHByaXZhdGV8fH0gIkdFVCBodHRwOi8vZnIuYWRzZXJ2ZXIueWFob28uY29tLyIKICAgIEF1ZyAgOSAyMDozMDo0NiBsb2NhbGhvc3QgaGFwcm94eVsyMDIyXTogMTI3LjAuMC4xOjM0MDIwIFswOS9BdWcvMjAwNDoyMDozMDo0Nl0gcmVsYWlzLWh0dHAgbmV0Y2FjaGUgMC8wLzAvMTgyLysxODIgMjAwICsyNzkgLSAtIC0tLS0gMC8wLzAgMC8wIHt3Lm9kcy5vcmd8fH0ge0Zvcm1pbHV4LzAuMS44fDM0OTV8fHx9ICJHRVQgaHR0cDovL3cub2RzLm9yZy9zeXRhZGluLmh0bWwgSFRUUC8xLjEiIAogICAgQXVnICA5IDIwOjMwOjQ2IGxvY2FsaG9zdCBoYXByb3h5WzIwMjJdOiAxMjcuMC4wLjE6MzQwMjggWzA5L0F1Zy8yMDA0OjIwOjMwOjQ2XSByZWxhaXMtaHR0cCBuZXRjYWNoZSAwLzAvMi8xMjYvKzEyOCAyMDAgKzIyMyAtIC0gLS0tLSAwLzAvMCAwLzAge3d3dy5pbmZvdHJhZmljLmNvbXx8aHR0cDovL3cub2RzLm9yZy9zeXR9IHtBcGFjaGUvMi4wLjQwIChSZWQgSHw5MDY4fHx8fSAiR0VUIGh0dHA6Ly93d3cuaW5mb3RyYWZpYy5jb20vaW1hZ2VzL2xpdmUvY2FydGVzaWRmL2dyYW5kZXMvaWRmX25lLnBuZyBIVFRQLzEuMSIgCgo0LjIuNykgRXhlbXBsZXMgZGUgbG9ncwotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotIGhhcHJveHlbNjc0XTogMTI3LjAuMC4xOjMzMzE5IFsxNS9PY3QvMjAwMzowODozMTo1N10gcmVsYWlzLWh0dHAgU3J2MSA2NTU5LzAvNy8xNDcvNjcyMyAyMDAgMjQzIC0gLSAtLS0tIDEvMy81ICAwLzAiSEVBRCAvIEhUVFAvMS4wIgogID0+IHJlcXXqdGUgbG9uZ3VlICg2LjVzKSBzYWlzaWUg4CBsYSBtYWluIGF2ZWMgdW4gY2xpZW50IHRlbG5ldC4gTGUgc2VydmV1ciBhCiAgICAgculwb25kdSBlbiAxNDcgbXMgZXQgbGEgc2Vzc2lvbiBzJ2VzdCB0ZXJtaW7pZSBub3JtYWxlbWVudCAoJy0tLS0nKQoKLSBoYXByb3h5WzY3NF06IDEyNy4wLjAuMTozMzMxOSBbMTUvT2N0LzIwMDM6MDg6MzE6NTddIHJlbGFpcy1odHRwIFNydjEgNjU1OS8xMjMwLzcvMTQ3LzY4NzAgMjAwIDI0MyAtIC0gLS0tLSA5OS8yMzkvMzI0IDAvOSAiSEVBRCAvIEhUVFAvMS4wIgogID0+IElkZW0sIG1haXMgbGEgcmVxdep0ZSBhIOl06SBtaXNlIGVuIGF0dGVudGUgZGFucyBsYSBmaWxlIGdsb2JhbGUgZGVycmnocmUKICAgICA5IGF1dHJlcyByZXF16nRlcyBk6WrgIHBy6XNlbnRlcywgZXQgeSBhIGF0dGVuZHUgMTIzMCBtcy4KCi0gaGFwcm94eVs2NzRdOiAxMjcuMC4wLjE6MzMzMjAgWzE1L09jdC8yMDAzOjA4OjMyOjE3XSByZWxhaXMtaHR0cCBTcnYxIDkvMC83LzE0LyszMCAyMDAgKzI0MyAtIC0gLS0tLSAxLzMvMyAwLzAgIkdFVCAvaW1hZ2UuaXNvIEhUVFAvMS4wIgogID0+IHJlcXXqdGUgcG91ciB1biBsb25nIHRyYW5zZmVydC4gTCdvcHRpb24gJ2xvZ2FzYXAnIOl0YWl0IHNw6WNpZmnpZSBkb25jIGxlCiAgICAgbG9nIGEg6XTpIGfpbuly6SBqdXN0ZSBhdmFudCBsZSB0cmFuc2ZlcnQgZGUgZG9ubullcy4gTGUgc2VydmV1ciBhIHLpcG9uZHUKICAgICBlbiAxNCBtcywgMjQzIG9jdGV0cyBkJ2VuLXTqdGVzIG9udCDpdOkgdHJhbnNm6XLpcyBhdSBjbGllbnQsIGV0IGxlIHRlbXBzCiAgICAgdG90YWwgZW50cmUgbCdhY2NlcHQoKSBldCBsZSBwcmVtaWVyIG9jdGV0IGRlIGRvbm7pZSBlc3QgZGUgMzAgbXMuCgotIGhhcHJveHlbNjc0XTogMTI3LjAuMC4xOjMzMzIwIFsxNS9PY3QvMjAwMzowODozMjoxN10gcmVsYWlzLWh0dHAgU3J2MSA5LzAvNy8xNC8zMCA1MDIgMjQzIC0gLSBQSC0tIDAvMi8zIDAvMCAiR0VUIC9jZ2ktYmluL2J1Zy5jZ2k/IEhUVFAvMS4wIgogID0+IGxlIHByb3h5IGEgYmxvcXXpIHVuZSBy6XBvbnNlIGR1IHNlcnZldXIgc29pdCDgIGNhdXNlIGQndW4gZmlsdHJlICdyc3BkZW55JwogICAgIG91ICdyc3BpZGVueScsIHNvaXQgcGFyY2UgcXUnaWwgYSBk6XRlY3TpIHVuIHJpc3F1ZSBkZSBmdWl0ZSBzZW5zaWJsZQogICAgIGQnaW5mb3JtYXRpb25zIHJpc3F1YW50IGQn6nRyZSBjYWNo6WVzLiBEYW5zIGNlIGNhcywgbGEgculwb25zZSBlc3QKICAgICByZW1wbGFj6WUgcGFyICc1MDIgYmFkIGdhdGV3YXknLgoKLSBoYXByb3h5WzE4MTEzXTogMTI3LjAuMC4xOjM0NTQ4IFsxNS9PY3QvMjAwMzoxNToxODo1NV0gcmVsYWlzLWh0dHAgPE5PU1JWPiAtMS8tMS8tMS8tMS84NDkwIC0xIDAgLSAtIENSLS0gMC8yLzIgMC8wICIiIAogID0+IExlIGNsaWVudCBuJ2EgcGFzIGVudm956SBzYSByZXF16nRlIGV0IGEgcmVmZXJt6SBsYSBjb25uZXhpb24gbHVpLW3qbWUKICAgICAoJ0MtLS0nKSBhdSBib3V0IGRlIDguNXMsIGFsb3JzIHF1ZSBsZSByZWxhaXMgYXR0ZW5kYWl0IGwnZW4tdOp0ZSAoJy1SLS0nKS4KICAgICBBdWN1bmUgY29ubmV4aW9uIG4nYSDpdOkgZW52b3npZSB2ZXJzIGxlIHNlcnZldXIuCgotIGhhcHJveHlbMTgxMTNdOiAxMjcuMC4wLjE6MzQ1NDkgWzE1L09jdC8yMDAzOjE1OjE5OjA2XSByZWxhaXMtaHR0cCA8Tk9TUlY+IC0xLy0xLy0xLy0xLzUwMDAxIDQwOCAwIC0gLSBjUi0tIDAvMi8yIDAvMCAiIiAKICA9PiBMZSBjbGllbnQgbidhIHBhcyBlbnZveekgc2EgcmVxdep0ZSBldCBzb24gdGltZS1vdXQgYSBleHBpcukgKCdjLS0tJykgYXUKICAgICBib3V0IGRlIDUwcywgYWxvcnMgcXVlIGxlIHJlbGFpcyBhdHRlbmRhaXQgbCdlbi106nRlICgnLVItLScpLiBBdWN1bmUKICAgICBjb25uZXhpb24gbidhIOl06SBlbnZveellIHZlcnMgbGUgc2VydmV1ciwgbWFpcyBsZSByZWxhaXMgYSB0b3V0IGRlIG3qbWUKICAgICBwdSByZW52b3llciB1biBtZXNzYWdlIDQwOCBhdSBjbGllbnQuCgotIGhhcHJveHlbMTg5ODldOiAxMjcuMC4wLjE6MzQ1NTAgWzE1L09jdC8yMDAzOjE1OjI0OjI4XSByZWxhaXMtdGNwIFNydjEgMC81MDA3IDAgY0QKICA9PiBsb2cgZW4gbW9kZSAndGNwbG9nJy4gRXhwaXJhdGlvbiBkdSB0aW1lLW91dCBj9HTpIGNsaWVudCAoJ2NEJykgYXUgYm91dCBkZQogICAgIDVzLgoKLSBoYXByb3h5WzE4OTg5XTogMTAuMC4wLjE6MzQ1NTIgWzE1L09jdC8yMDAzOjE1OjI2OjMxXSByZWxhaXMtaHR0cCBTcnYxIDMxODMvLTEvLTEvLTEvMTEyMTUgNTAzIDAgLSAtIFNDLS0gMTE1LzIwMi8yMDUgMC8wICJIRUFEIC8gSFRUUC8xLjAiIAogID0+IExhIHJlcXXqdGUgY2xpZW50IG1ldCAzcyDgIGVudHJlciAocGV1dC3qdHJlIHVuIHByb2Js6G1lIHLpc2VhdSksIGV0IGxhCiAgICAgY29ubmV4aW9uICgnU0MtLScpIHZlcnMgbGUgc2VydmV1ciDpY2hvdWUgYXUgYm91dCBkZSA0IHRlbnRhdGl2ZXMgZGUgMgogICAgIHNlY29uZGVzIChyZXRyaWVzIDMgZGFucyBsYSBjb25mKSwgcHVpcyB1biBjb2RlIDUwMyBlc3QgcmV0b3VybukgYXUKICAgICBjbGllbnQuIElsIHkgYXZhaXQgMTE1IGNvbm5leGlvbnMgc3VyIGNlIHNlcnZldXIsIDIwMiBjb25uZXhpb25zIHN1ciBjZXR0ZQogICAgIGluc3RhbmNlLCBldCAyMDUgc3VyIGwnZW5zZW1ibGUgZGVzIGluc3RhbmNlcyBwb3VyIGNlIHByb2Nlc3N1cy4gSWwgZXN0CiAgICAgcG9zc2libGUgcXVlIGxlIHNlcnZldXIgYWl0IHJlZnVz6SBsYSBjb25uZXhpb24gcGFyY2UgcXUnaWwgeSBlbiBhdmFpdAogICAgIGTpauAgdHJvcCBkJ+l0YWJsaWVzLgoKCjQuMykgTW9kaWZpY2F0aW9uIGRlcyBlbi106nRlcyBIVFRQCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KRW4gbW9kZSBIVFRQIHVuaXF1ZW1lbnQsIGlsIGVzdCBwb3NzaWJsZSBkZSByZW1wbGFjZXIgY2VydGFpbnMgZW4tdOp0ZXMgZGFucyBsYQpyZXF16nRlIGV0L291IGxhIHLpcG9uc2Ug4CBwYXJ0aXIgZCdleHByZXNzaW9ucyBy6Wd1bGnocmVzLiBJbCBlc3Qg6WdhbGVtZW50CnBvc3NpYmxlIGRlIGJsb3F1ZXIgY2VydGFpbmVzIHJlcXXqdGVzIGVuIGZvbmN0aW9uIGR1IGNvbnRlbnUgZGVzIGVuLXTqdGVzIG91CmRlIGxhIHJlcXXqdGUuIFVuZSBsaW1pdGF0aW9uIGNlcGVuZGFudCA6IGxlcyBlbi106nRlcyBmb3VybmlzIGF1IG1pbGlldSBkZQpjb25uZXhpb25zIHBlcnNpc3RlbnRlcyAoa2VlcC1hbGl2ZSkgbmUgc29udCBwYXMgdnVzIGNhciBpbHMgc29udCBjb25zaWTpculzCmNvbW1lIGZhaXNhbnQgcGFydGllIGRlcyDpY2hhbmdlcyBkZSBkb25u6WVzIGNvbnPpY3V0aWZzIOAgbGEgcHJlbWnocmUgcmVxdep0ZS4KTGVzIGRvbm7pZXMgbmUgc29udCBwYXMgYWZmZWN06WVzLCBjZWNpIG5lIHMnYXBwbGlxdWUgcXUnYXV4IGVuLXTqdGVzLiAKCkxhIHN5bnRheGUgZXN0IDoKICAgcmVxYWRkICAgIDxzdHJpbmc+ICAgICAgICAgICAgIHBvdXIgYWpvdXRlciB1biBlbi106nRlIGRhbnMgbGEgcmVxdep0ZQogICByZXFyZXAgICAgPHNlYXJjaD4gPHJlcGxhY2U+ICAgcG91ciBtb2RpZmllciBsYSByZXF16nRlCiAgIHJlcWlyZXAgICA8c2VhcmNoPiA8cmVwbGFjZT4gICBpZGVtIHNhbnMgZGlzdGluY3Rpb24gbWFqdXNjdWxlcy9taW51c2N1bGVzCiAgIHJlcWRlbCAgICA8c2VhcmNoPiAgICAgICAgICAgICBwb3VyIHN1cHByaW1lciB1biBlbi106nRlIGRhbnMgbGEgcmVxdep0ZQogICByZXFpZGVsICAgPHNlYXJjaD4gICAgICAgICAgICAgaWRlbSBzYW5zIGRpc3RpbmN0aW9uIG1hanVzY3VsZXMvbWludXNjdWxlcwogICByZXFhbGxvdyAgPHNlYXJjaD4gICAgICAgICAgICAgYXV0b3Jpc2VyIGxhIHJlcXXqdGUgc2kgdW4gZW4tdOp0ZSB2YWxpZGUgPHNlYXJjaD4KICAgcmVxaWFsbG93IDxzZWFyY2g+ICAgICAgICAgICAgIGlkZW0gc2FucyBkaXN0aW5jdGlvbiBtYWp1c2N1bGVzL21pbnVzY3VsZXMKICAgcmVxZGVueSAgIDxzZWFyY2g+ICAgICAgICAgICAgIGludGVyZGlyZSBsYSByZXF16nRlIHNpIHVuIGVuLXTqdGUgdmFsaWRlIDxzZWFyY2g+CiAgIHJlcWlkZW55ICA8c2VhcmNoPiAgICAgICAgICAgICBpZGVtIHNhbnMgZGlzdGluY3Rpb24gbWFqdXNjdWxlcy9taW51c2N1bGVzCiAgIHJlcXBhc3MgICA8c2VhcmNoPiAgICAgICAgICAgICBpbmhpYmUgY2VzIGFjdGlvbnMgc3VyIGxlcyBlbi106nRlcyB2YWxpZGFudCA8c2VhcmNoPgogICByZXFpcGFzcyAgPHNlYXJjaD4gICAgICAgICAgICAgaWRlbSBzYW5zIGRpc3RpbmN0aW9uIG1hanVzY3VsZXMvbWludXNjdWxlcwoKICAgcnNwYWRkICAgPHN0cmluZz4gICAgICAgICAgICAgIHBvdXIgYWpvdXRlciB1biBlbi106nRlIGRhbnMgbGEgculwb25zZQogICByc3ByZXAgICA8c2VhcmNoPiA8cmVwbGFjZT4gICAgcG91ciBtb2RpZmllciBsYSBy6XBvbnNlCiAgIHJzcGlyZXAgIDxzZWFyY2g+IDxyZXBsYWNlPiAgICBpZGVtIHNhbnMgZGlzdGluY3Rpb24gbWFqdXNjdWxlcy9taW51c2N1bGVzCiAgIHJzcGRlbCAgIDxzZWFyY2g+ICAgICAgICAgICAgICBwb3VyIHN1cHByaW1lciB1biBlbi106nRlIGRhbnMgbGEgculwb25zZQogICByc3BpZGVsICA8c2VhcmNoPiAgICAgICAgICAgICAgaWRlbSBzYW5zIGRpc3RpbmN0aW9uIG1hanVzY3VsZXMvbWludXNjdWxlcwogICByc3BkZW55ICA8c2VhcmNoPiAgICAgICAgICAgICAgcmVtcGxhY2UgbGEgculwb25zZSBwYXIgdW4gSFRUUCA1MDIgc2kgdW4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuLXTqdGUgdmFsaWRlIDxzZWFyY2g+CiAgIHJzcGlkZW55IDxzZWFyY2g+ICAgICAgICAgICAgICBpZGVtIHNhbnMgZGlzdGluY3Rpb24gbWFqdXNjdWxlcy9taW51c2N1bGVzCgoKPHNlYXJjaD4gZXN0IHVuZSBleHByZXNzaW9uIHLpZ3VsaehyZSBjb21wYXRpYmxlIFBPU0lYIHJlZ2V4cCBzdXBwb3J0YW50IGxlCmdyb3VwYWdlIHBhciBwYXJlbnRo6HNlcyAoc2FucyBsZXMgJ1wnKS4gTGVzIGVzcGFjZXMgZXQgYXV0cmVzIHPpcGFyYXRldXJzCmRvaXZlbnQg6nRyZXMgcHLpY+lk6XMgZCd1biAnXCcgcG91ciBuZSBwYXMg6nRyZSBjb25mb25kdXMgYXZlYyBsYSBmaW4gZGUgbGEKY2hh7m5lLiBEZSBwbHVzLCBjZXJ0YWlucyBjYXJhY3TocmVzIHNw6WNpYXV4IHBldXZlbnQg6nRyZSBwculj6WTpcyBkJ3VuCmJhY2tzbGFjaCAoJ1wnKSA6CgogIFx0ICAgcG91ciB1bmUgdGFidWxhdGlvbgogIFxyICAgcG91ciB1biByZXRvdXIgY2hhcnJpb3QKICBcbiAgIHBvdXIgdW4gc2F1dCBkZSBsaWduZQogIFwgICAgcG91ciBkaWZm6XJlbmNpZXIgdW4gZXNwYWNlIGQndW4gc+lwYXJhdGV1cgogIFwjICAgcG91ciBkaWZm6XJlbmNpZXIgdW4gZGnoc2UgZCd1biBjb21tZW50YWlyZQogIFxcICAgcG91ciB1dGlsaXNlciB1biBiYWNrc2xhc2ggZGFucyBsYSByZWdleAogIFxcXFwgcG91ciB1dGlsaXNlciB1biBiYWNrc2xhc2ggZGFucyBsZSB0ZXh0ZQogIFx4WFggcG91ciB1biBjYXJhY3TocmUgc3DpY2lmaXF1ZSBYWCAoY29tbWUgZW4gQykKCgo8cmVwbGFjZT4gY29udGllbnQgbGEgY2hh7m5lIHJlbXBsYedhbnQgbGEgcG9ydGlvbiB26XJpZmnpZSBwYXIgbCdleHByZXNzaW9uLgpFbGxlIHBldXQgaW5jbHVyZSBsZXMgY2FyYWN06HJlcyBzcOljaWF1eCBjaS1kZXNzdXMsIGZhaXJlIHLpZulyZW5jZSDgIHVuCmdyb3VwZSBk6WxpbWl06SBwYXIgZGVzIHBhcmVudGjoc2VzIGRhbnMgbCdleHByZXNzaW9uIHLpZ3VsaehyZSwgcGFyIHNhCnBvc2l0aW9uIG51belyYWxlLiBMZXMgcG9zaXRpb25zIHZvbnQgZGUgMSDgIDksIGV0IHNvbnQgY29k6WVzIHBhciB1biAnXCcKc3VpdmkgZHUgY2hpZmZyZSBk6XNpcukuIElsIGVzdCDpZ2FsZW1lbnQgcG9zc2libGUgZCdpbnPpcmVyIHVuIGNhcmFjdOhyZSBub24KaW1wcmltYWJsZSAodXRpbGUgcG91ciBsZSBzYXV0IGRlIGxpZ25lKSBpbnNjcml2YW50ICdceCcgc3VpdmkgZHUgY29kZQpoZXhhZOljaW1hbCBkZSBjZSBjYXJhY3TocmUgKGNvbW1lIGVuIEMpLgoKPHN0cmluZz4gcmVwculzZW50ZSB1bmUgY2hh7m5lIHF1aSBzZXJhIGFqb3V06WUgc3lzdOltYXRpcXVlbWVudCBhcHLocyBsYQpkZXJuaehyZSBsaWduZSBkJ2VuLXTqdGUuCgpSZW1hcnF1ZXMgOgotLS0tLS0tLS0tLQogIC0gbGEgcHJlbWnocmUgbGlnbmUgZGUgbGEgcmVxdep0ZSBldCBjZWxsZSBkZSBsYSBy6XBvbnNlIHNvbnQgdHJhaXTpZXMgY29tbWUKICAgIGRlcyBlbi106nRlcywgY2UgcXVpIHBlcm1ldCBkZSBy6eljcmlyZSBkZXMgVVJMIGV0IGRlcyBjb2RlcyBkJ2VycmV1ci4KICAtICdyZXFyZXAnIGVzdCBsJ+lxdWl2YWxlbnQgZGUgJ2NsaWV4cCcgZW4gdmVyc2lvbiAxLjAsIGV0ICdyc3ByZXAnIGNlbHVpIGRlCiAgICAnc3J2ZXhwJy4gQ2VzIG5vbXMgc29udCB0b3Vqb3VycyBzdXBwb3J06XMgbWFpcyBk6WNvbnNlaWxs6XMuCiAgLSBwb3VyIGRlcyByYWlzb25zIGRlIHBlcmZvcm1hbmNlcywgbGUgbm9tYnJlIHRvdGFsIGRlIGNhcmFjdOhyZXMgYWpvdXTpcyBzdXIKICAgIHVuZSByZXF16nRlIG91IHVuZSBy6XBvbnNlIGVzdCBsaW1pdOkg4CA0MDk2IGRlcHVpcyBsYSB2ZXJzaW9uIDEuMS41IChjZXR0ZQogICAgbGltaXRlIOl0YWl0IOAgMjU2IGF1cGFyYXZhbnQpLiBDZXR0ZSB2YWxldXIgZXN0IG1vZGlmaWFibGUgZGFucyBsZSBjb2RlLgogICAgUG91ciB1biB1c2FnZSB0ZW1wb3JhaXJlLCBvbiBwZXV0IGdhZ25lciBkZSBsYSBwbGFjZSBlbiBzdXBwcmltYW50IHF1ZWxxdWVzCiAgICBlbi106nRlcyBpbnV0aWxlcyBhdmFudCBsZXMgYWpvdXRzLgogIC0gdW5lIHJlcXXqdGUgYmxvcXXpZSBwcm9kdWlyYSB1bmUgculwb25zZSAiSFRUUCA0MDMgZm9yYmlkZGVuIiB0YW5kaXMgcXUndW5lCiAgICBy6XBvbnNlIGJsb3F16WUgcHJvZHVpcmEgdW5lIHLpcG9uc2UgIkhUVFAgNTAyIEJhZCBnYXRld2F5Ii4KCkV4ZW1wbGVzIDoKLS0tLS0tLS0tLQogICAgICAgICMjIyMjIyBhIGZldyBleGFtcGxlcyAjIyMjIyMKCiAgICAgICAgIyByZXdyaXRlICdvbmxpbmUuZnInIGluc3RlYWQgb2YgJ2ZyZWUuZnInIGZvciBHRVQgYW5kIFBPU1QgcmVxdWVzdHMKICAgICAgICByZXFyZXAgICAgICAgIF4oR0VUXCAuKikoLmZyZWUuZnIpKC4qKSBcMS5vbmxpbmUuZnJcMwogICAgICAgIHJlcXJlcCAgICAgICAgXihQT1NUXCAuKikoLmZyZWUuZnIpKC4qKSBcMS5vbmxpbmUuZnJcMwoKICAgICAgICAjIGZvcmNlIHByb3h5IGNvbm5lY3Rpb25zIHRvIGNsb3NlCiAgICAgICAgcmVxaXJlcCAgICAgICAgXlByb3h5LUNvbm5lY3Rpb246LiogICAgICAgIFByb3h5LUNvbm5lY3Rpb246XCBjbG9zZQogICAgICAgICMgcmV3cml0ZSBsb2NhdGlvbnMKICAgICAgICByc3BpcmVwICAgICAgICBeKExvY2F0aW9uOlwgKShbXjpdKjovL1teL10qKSguKikgXDFcMwoKICAgICAgICAjIyMjIyMgQSBmdWxsIGNvbmZpZ3VyYXRpb24gYmVpbmcgdXNlZCBvbiBwcm9kdWN0aW9uICMjIyMjIwoKICAgICAgICAjIEV2ZXJ5IGhlYWRlciBzaG91bGQgZW5kIHdpdGggYSBjb2xvbiBmb2xsb3dlZCBieSBvbmUgc3BhY2UuCiAgICAgICAgcmVxaWRlbnkgICAgICAgIF5bXjpcIF0qW1wgXSokCgogICAgICAgICMgYmxvY2sgQXBhY2hlIGNodW5rIGV4cGxvaXQKICAgICAgICByZXFpZGVueSAgICAgICAgXlRyYW5zZmVyLUVuY29kaW5nOltcIF0qY2h1bmtlZAogICAgICAgIHJlcWlkZW55ICAgICAgICBeSG9zdDpcIGFwYWNoZS0KCiAgICAgICAgIyBibG9jayBhbm5veWluZyB3b3JtcyB0aGF0IGZpbGwgdGhlIGxvZ3MuLi4KICAgICAgICByZXFpZGVueSAgICAgICAgXlteOlwgXSpcIC4qKFwufCUyZSkoXC58JTJlKSglMmZ8JTVjfC98XFxcXCkKICAgICAgICByZXFpZGVueSAgICAgICAgXlteOlwgXSpcIChbXlwgXSpcIFteXCBdKlwgfC4qJTAwKQogICAgICAgIHJlcWlkZW55ICAgICAgICBeW146XCBdKlwgLio8c2NyaXB0CiAgICAgICAgcmVxaWRlbnkgICAgICAgIF5bXjpcIF0qXCAuKi8ocm9vdFwuZXhlXD98Y21kXC5leGVcP3xkZWZhdWx0XC5pZGFcPykKCiAgICAgICAgIyBhbGxvdyBvdGhlciBzeW50YWN0aWNhbGx5IHZhbGlkIHJlcXVlc3RzLCBhbmQgYmxvY2sgYW55IG90aGVyIG1ldGhvZAogICAgICAgIHJlcWlwYXNzICAgICAgICBeKEdFVHxQT1NUfEhFQUR8T1BUSU9OUylcIC8uKlwgSFRUUC8xXC5bMDFdJAogICAgICAgIHJlcWlwYXNzICAgICAgICBeT1BUSU9OU1wgXFwqXCBIVFRQLzFcLlswMV0kCiAgICAgICAgcmVxaWRlbnkgICAgICAgIF5bXjpcIF0qXCAKCiAgICAgICAgIyBmb3JjZSBjb25uZWN0aW9uOmNsb3NlLCB0aHVzIGRpc2FibGluZyBIVFRQIGtlZXAtYWxpdmUKICAgICAgICBvcHRpb24gICAgICAgICAgICAgICAgaHR0cGNsb3MKCiAgICAgICAgIyBjaGFuZ2UgdGhlIHNlcnZlciBuYW1lCiAgICAgICAgcnNwaWRlbCAgICAgICAgIF5TZXJ2ZXI6XCAKICAgICAgICByc3BhZGQgICAgICAgICAgU2VydmVyOlwgRm9ybWlsdXgvMC4xLjgKCgpEZSBwbHVzLCBsJ29wdGlvbiAnZm9yd2FyZGZvcicgYWpvdXRlIGwnYWRyZXNzZSBJUCBkdSBjbGllbnQgZGFucyB1biBjaGFtcAonWC1Gb3J3YXJkZWQtRm9yJyBkZSBsYSByZXF16nRlLCBjZSBxdWkgcGVybWV0IOAgdW4gc2VydmV1ciB3ZWIgZmluYWwgZGUKY29ubmHudHJlIGwnYWRyZXNzZSBJUCBkdSBjbGllbnQgaW5pdGlhbC4KCkVuZmluLCBsJ29wdGlvbiAnaHR0cGNsb3NlJyBhcHBhcnVlIGRhbnMgbGEgdmVyc2lvbiAxLjEuMjgvMS4yLjEgc3VwcHJpbWUgdG91dAplbi106nRlIGRlIHR5cGUgJ0Nvbm5lY3Rpb246JyBldCBham91dGUgJ0Nvbm5lY3Rpb246IGNsb3NlJyBkYW5zIGxlcyBkZXV4IHNlbnMuCkNlY2kgc2ltcGxpZmllIGxhIGTpc2FjdGl2YXRpb24gZHUga2VlcC1hbGl2ZSBIVFRQIHBhciByYXBwb3J0IOAgbCdhbmNpZW5uZQpt6XRob2RlIGltcGxpcXVhbnQgNCBy6GdsZXMuCgpFeGVtcGxlIDoKLS0tLS0tLS0tCiAgICBsaXN0ZW4gaHR0cF9wcm94eSAwLjAuMC4wOjgwCiAgICAgICAgbW9kZSBodHRwCiAgICAgICAgbG9nICBnbG9iYWwKICAgICAgICBvcHRpb24gaHR0cGxvZwogICAgICAgIG9wdGlvbiBkb250bG9nbnVsbAogICAgICAgIG9wdGlvbiBmb3J3YXJkZm9yCiAgICAgICAgb3B0aW9uIGh0dHBjbG9zZQoKTm90b25zIHF1ZSBjZXJ0YWlucyBzZXJ2ZXVycyBIVFRQIG5lIHJlZmVybWVudCBwYXMgbuljZXNzYWlyZW1lbnQgbGEgc2Vzc2lvbgpUQ1AgZW4gZmluIGRlIHRyYWl0ZW1lbnQgbG9yc3F1J2lscyByZedvaXZlbnQgdW4gZW506nRlICdDb25uZWN0aW9uOiBjbG9zZScsCmNlIHF1aSBzZSB0cmFkdWl0IHBhciBkZXMgZ3JhbmRzIG5vbWJyZXMgZGUgc2Vzc2lvbnMg6XRhYmxpZXMgZXQgZGVzIHRlbXBzCmdsb2JhdXggdHLocyBsb25ncyBzdXIgbGVzIHJlcXXqdGVzLiBQb3VyIGNvbnRvdXJuZXIgY2UgcHJvYmzobWUsIGxhIHZlcnNpb24KMS4yLjkgYXBwb3J0ZSB1bmUgbm91dmVsbGUgb3B0aW9uICdmb3JjZWNsb3NlJyBxdWkgcmVmZXJtZSBsYSBjb25uZXhpb24gc29ydGFudAp2ZXJzIGxlIHNlcnZldXIgZOhzIHF1J2lsIGNvbW1lbmNlIOAgculwb25kcmUgZXQgc2V1bGVtZW50IHNpIGxlIHRhbXBvbiBkZQpyZXF16nRlIGVzdCB2aWRlLiBBdHRlbnRpb24gdG91dGVmb2lzIOAgbmUgUEFTIHV0aWxpc2VyIGNldHRlIG9wdGlvbiBzaSBkZXMKbel0aG9kZXMgQ09OTkVDVCBzb250IGF0dGVuZHVlcyBlbnRyZSBsZSBjbGllbnQgZXQgbGUgc2VydmV1ci4gTCdvcHRpb24KJ2ZvcmNlY2xvc2UnIGltcGxpcXVlIGwnb3B0aW9uICdodHRwY2xvc2UnLgoKRXhlbXBsZSA6Ci0tLS0tLS0tLQogICAgbGlzdGVuIGh0dHBfcHJveHkgMC4wLjAuMDo4MAogICAgICAgIG1vZGUgaHR0cAogICAgICAgIGxvZyAgZ2xvYmFsCiAgICAgICAgb3B0aW9uIGh0dHBsb2cKICAgICAgICBvcHRpb24gZG9udGxvZ251bGwKICAgICAgICBvcHRpb24gZm9yd2FyZGZvcgogICAgICAgIG9wdGlvbiBmb3JjZWNsb3NlCgoKNC40KSBS6XBhcnRpdGlvbiBhdmVjIHBlcnNpc3RlbmNlCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpMYSBjb21iaW5haXNvbiBkZSBsJ2luc2VydGlvbiBkZSBjb29raWUgYXZlYyBsYSBy6XBhcnRpdGlvbiBkZSBjaGFyZ2UgaW50ZXJuZQpwZXJtZXQgZCdhc3N1cmVyIHVuZSBwZXJzaXN0ZW5jZSBkYW5zIGxlcyBzZXNzaW9ucyBIVFRQIGQndW5lIG1hbmnocmUKcHJhdGlxdWVtZW50IHRyYW5zcGFyZW50ZSBwb3VyIGxlcyBhcHBsaWNhdGlvbnMuIExlIHByaW5jaXBlIGVzdCBzaW1wbGUgOgogIC0gYXR0cmlidWVyIHVuZSB2YWxldXIgZCd1biBjb29raWUg4CBjaGFxdWUgc2VydmV1cgogIC0gZWZmZWN0dWVyIHVuZSBy6XBhcnRpdGlvbiBpbnRlcm5lCiAgLSBpbnPpcmVyIHVuIGNvb2tpZSBkYW5zIGxlcyBy6XBvbnNlcyBpc3N1ZXMgZCd1bmUgculwYXJ0aXRpb24gdW5pcXVlbWVudCwKICAgIGV0IGZhaXJlIGVuIHNvcnRlIHF1ZSBkZXMgY2FjaGVzIG5lIG3pbW9yaXNlbnQgcGFzIGNlIGNvb2tpZS4KICAtIGNhY2hlciBjZSBjb29raWUg4CBsJ2FwcGxpY2F0aW9uIGxvcnMgZGVzIHJlcXXqdGVzIHVsdOlyaWV1cmVzLgoKRXhlbXBsZSA6Ci0tLS0tLS0tLQogICAgbGlzdGVuIGFwcGxpY2F0aW9uIDAuMC4wLjA6ODAKICAgICAgICBtb2RlIGh0dHAKICAgICAgICBjb29raWUgU0VSVkVSSUQgaW5zZXJ0IG5vY2FjaGUgaW5kaXJlY3QKICAgICAgICBiYWxhbmNlIHJvdW5kcm9iaW4KICAgICAgICBzZXJ2ZXIgc3J2MSAxOTIuMTY4LjEuMTo4MCBjb29raWUgc2VydmVyMDEgY2hlY2sKICAgICAgICBzZXJ2ZXIgc3J2MiAxOTIuMTY4LjEuMjo4MCBjb29raWUgc2VydmVyMDIgY2hlY2sKCkwnYXV0cmUgc29sdXRpb24gYXBwb3J06WUgcGFyIGxlcyB2ZXJzaW9ucyAxLjEuMzAgZXQgMS4yLjMgZXN0IGRlIHLpdXRpbGlzZXIgdW4KY29va2llIGVuIHByb3ZlbmFuY2UgZHUgc2VydmV1ciBldCBkZSBsdWkgcHLpZml4ZXIgbCdpZGVudGlmaWFudCBkdSBzZXJ2ZXVyLgpEYW5zIGNlIGNhcywgbmUgcGFzIG91YmxpZXIgZGUgZm9yY2VyIGxlIG1vZGUgImh0dHBjbG9zZSIgcG91ciBlbXDqY2hlciBsZQpjbGllbnQgZXQgbGUgc2VydmV1ciBkZSB0cmF2YWlsbGVyIGVuIG1vZGUgImtlZXAtYWxpdmUiIGFmaW4gcXVlIGxlIHByb3h5CnB1aXNzZSBjb3JyaWdlciBsZSBub20gZHUgY29va2llIGRhbnMgdG91dGVzIGxlcyBmdXR1cmVzIHJlcXXqdGVzLgoKICAgIGxpc3RlbiBhcHBsaWNhdGlvbiAwLjAuMC4wOjgwCiAgICAgICBtb2RlIGh0dHAKICAgICAgIGNvb2tpZSBKU0VTU0lPTklEIHByZWZpeAogICAgICAgYmFsYW5jZSByb3VuZHJvYmluCiAgICAgICBzZXJ2ZXIgc3J2MSAxOTIuMTY4LjEuMTo4MCBjb29raWUgc3J2MSBjaGVjawogICAgICAgc2VydmVyIHNydjIgMTkyLjE2OC4xLjI6ODAgY29va2llIHNydjIgY2hlY2sKICAgICAgIG9wdGlvbiBodHRwY2xvc2UKCgo0LjUpIFByb3RlY3Rpb24gY29udHJlIGxlcyBmdWl0ZXMgZCdpbmZvcm1hdGlvbnMgZHUgc2VydmV1cgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpEYW5zIGxlcyB2ZXJzaW9ucyAxLjEuMjggZXQgMS4yLjEsIHVuZSBub3V2ZWxsZSBvcHRpb24gJ2NoZWNrY2FjaGUnIGEg6XTpCmNy6ellLiBFbGxlIHNlcnQg4CBpbnNwZWN0ZXIgbWludXRpZXVzZW1lbnQgbGVzIGVuLXTqdGVzICdDYWNoZS1jb250cm9sJywKJ1ByYWdtYScsIGV0ICdTZXQtY29va2llJyBkYW5zIGxlcyBy6XBvbnNlcyBzZXJ2ZXVyIHBvdXIgZOl0ZXJtaW5lciBzJ2lsIHkgYQp1biByaXNxdWUgZGUgY2FjaGVyIHVuIGNvb2tpZSBzdXIgdW4gcHJveHkgY/R06SBjbGllbnQuIFF1YW5kIGNldHRlIG9wdGlvbiBlc3QKYWN0aXbpZSwgbGVzIHNldWxlcyBy6XBvbnNlcyBxdWkgcGV1dmVudCDqdHJlIHJldG91cm7pZXMgYXUgY2xpZW50IHNvbnQgOgogIC0gdG91dGVzIGNlbGxlcyBxdWkgbidvbnQgcGFzIGQnZW4tdOp0ZSAnU2V0LWNvb2tpZScgOwogIC0gdG91dGVzIGNlbGxlcyBxdWkgb250IHVuIGNvZGUgZGUgcmV0b3VyIGF1dHJlIHF1ZSAyMDAsIDIwMywgMjA2LCAzMDAsIDMwMSwgCiAgICA0MTAsIHNhdWYgc2kgbGUgc2VydmV1ciBhIHBvc2l0aW9ubukgdW4gZW4tdOp0ZSAnQ2FjaGUtY29udHJvbDogcHVibGljJyA7CiAgLSBjZWxsZXMgcXVpIGZvbnQgc3VpdGUg4CB1bmUgcmVxdep0ZSBQT1NULCBzYXVmIHNpIGxlIHNlcnZldXIgYSBwb3NpdGlvbm7pCiAgICB1biBlbi106nRlICdDYWNoZS1jb250cm9sOiBwdWJsaWMnIDsKICAtIGNlbGxlcyBxdWkgb250IHVuIGVuLXTqdGUgJ1ByYWdtYTogbm8tY2FjaGUnIDsKICAtIGNlbGxlcyBxdWkgb250IHVuIGVuLXTqdGUgJ0NhY2hlLWNvbnRyb2w6IHByaXZhdGUnIDsgCiAgLSBjZWxsZXMgcXVpIG9udCB1biBlbi106nRlICdDYWNoZS1jb250cm9sOiBuby1zdG9yZScgOyAKICAtIGNlbGxlcyBxdWkgb250IHVuIGVuLXTqdGUgJ0NhY2hlLWNvbnRyb2w6IG1heC1hZ2U9MCcgOwogIC0gY2VsbGVzIHF1aSBvbnQgdW4gZW4tdOp0ZSAnQ2FjaGUtY29udHJvbDogcy1tYXhhZ2U9MCcgOwogIC0gY2VsbGVzIHF1aSBvbnQgdW4gZW4tdOp0ZSAnQ2FjaGUtY29udHJvbDogbm8tY2FjaGUnIDsKICAtIGNlbGxlcyBxdWkgb250IHVuIGVuLXTqdGUgJ0NhY2hlLWNvbnRyb2w6IG5vLWNhY2hlPSJzZXQtY29va2llIicgOwogIC0gY2VsbGVzIHF1aSBvbnQgdW4gZW4tdOp0ZSAnQ2FjaGUtY29udHJvbDogbm8tY2FjaGU9InNldC1jb29raWUsJwogICAgKGF1dG9yaXNhbnQgZCdhdXRyZXMgY2hhbXBzIGFwcuhzIHNldC1jb29raWUpLgoKU2kgdW5lIHLpcG9uc2UgbmUgcmVzcGVjdGUgcGFzIGNlcyBwcuktcmVxdWlzLCBhbG9ycyBlbGxlIHNlcmEgYmxvcXXpZSBkZSBsYQpt6m1lIG1hbmnocmUgcXVlIHMnaWwgcydhZ2lzc2FpdCBkJ3VuIGZpbHRyZSAncnNwZGVueScsIGF2ZWMgZW4gcmV0b3VyIHVuCm1lc3NhZ2UgIkhUVFAgNTAyIGJhZCBnYXRld2F5Ii4gTCfpdGF0IGRlIHNlc3Npb24gbW9udHJlICJQSC0tIiBjZSBxdWkgdmV1dApkaXJlIHF1ZSBjJ2VzdCBsZSBwcm94eSBxdWkgYSBibG9xdekgbGEgculwb25zZSBkdXJhbnQgbGUgdHJhaXRlbWVudCBkZXMKZW4tdOp0ZXMuIERlIHBsdXMsIHVuIG1lc3NhZ2UgZCdhbGVydGUgc2VyYSBlbnZveekgZGFucyBsZXMgbG9ncyBkZSBzb3J0ZSBxdWUKbCdhZG1pbmlzdHJhdGV1ciBzYWNoZSBxdSdpbCB5IGEgdW5lIGFjdGlvbiBjb3JyZWN0cmljZSDgIGVudHJlcHJlbmRyZS4KCjQuNikgUGVyc29uYWxpc2F0aW9uIGRlcyBlcnJldXJzCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkNlcnRhaW5lcyBzaXR1YXRpb25zIGNvbmR1aXNlbnQg4CByZXRvdXJuZXIgdW5lIGVycmV1ciBIVFRQIGF1IGNsaWVudCA6CiAgLSByZXF16nRlIGludmFsaWRlIG91IHRyb3AgbG9uZ3VlID0+IGNvZGUgSFRUUCA0MDAKICAtIHJlcXXqdGUgbWV0dGFudCB0cm9wIGRlIHRlbXBzIOAgdmVuaXIgPT4gY29kZSBIVFRQIDQwOAogIC0gcmVxdep0ZSBpbnRlcmRpdGUgKGJsb3F16WUgcGFyIHVuIHJlcWlkZW55KSA9PiBjb2RlIEhUVFAgNDAzCiAgLSBlcnJldXIgaW50ZXJuZSBkdSBwcm94eSA9PiBjb2RlIEhUVFAgNTAwCiAgLSBsZSBzZXJ2ZXVyIGEgcmV0b3VybukgdW5lIHLpcG9uc2UgaW5jb21wbOh0ZSBvdSBpbnZhbGlkZSA9PiBjb2RlIEhUVFAgNTAyCiAgLSBhdWN1biBzZXJ2ZXVyIGRpc3BvbmlibGUgcG91ciBjZXR0ZSByZXF16nRlID0+IGNvZGUgSFRUUCA1MDMKICAtIGxlIHNlcnZldXIgbidhIHBhcyBy6XBvbmR1IGRhbnMgbGUgdGVtcHMgaW1wYXJ0aSA9PiBjb2RlIEhUVFAgNTA0CgpVbiBtZXNzYWdlIGQnZXJyZXVyIHN1Y2NpbnQgdGly6SBkZSBsYSBSRkMgYWNjb21wYWduZSBjZXMgY29kZXMgZGUgcmV0b3VyLgpDZXBlbmRhbnQsIGVuIGZvbmN0aW9uIGR1IHR5cGUgZGUgY2xpZW506GxlLCBvbiBwZXV0IHBy6WbpcmVyIHJldG91cm5lciBkZXMKcGFnZXMgcGVyc29ubmFsaXPpZXMuIENlY2kgZXN0IHBvc3NpYmxlIHBhciBsZSBiaWFpcyBkZSBsYSBjb21tYW5kZSAiZXJyb3Jsb2MiOgoKICAgIGVycm9ybG9jIDxjb2RlX0hUVFA+IDxsb2NhdGlvbj4KCkF1IGxpZXUgZGUgZ+lu6XJlciB1bmUgZXJyZXVyIEhUVFAgPGNvZGVfSFRUUD4gcGFybWkgbGVzIGNvZGVzIGNpdOlzIGNpLWRlc3N1cywKbGUgcHJveHkgZ+lu6HJlcmEgdW4gY29kZSBkZSByZWRpcmVjdGlvbiB0ZW1wb3JhaXJlIChIVFRQIDMwMikgdmVycyBsJ2FkcmVzc2UKZCd1bmUgcGFnZSBwculjaXPpZSBkYW5zIDxsb2NhdGlvbj4uIENldHRlIGFkcmVzc2UgcGV1dCDqdHJlIHJlbGF0aXZlIGF1IHNpdGUsCm91IGFic29sdWUuIENvbW1lIGNldHRlIHLpcG9uc2UgZXN0IHRyYe506WUgcGFyIGxlIG5hdmlnYXRldXIgZHUgY2xpZW50Cmx1aS1t6m1lLCBpbCBlc3QgaW5kaXNwZW5zYWJsZSBxdWUgbCdhZHJlc3NlIGZvdXJuaWUgbHVpIHNvaXQgYWNjZXNzaWJsZS4KCkV4ZW1wbGUgOgotLS0tLS0tLS0KICAgIGxpc3RlbiBhcHBsaWNhdGlvbiAwLjAuMC4wOjgwCiAgICAgICAgZXJyb3Jsb2MgNDAwIC9iYWRyZXF1ZXN0Lmh0bWwKICAgICAgICBlcnJvcmxvYyA0MDMgL2ZvcmJpZGRlbi5odG1sCiAgICAgICAgZXJyb3Jsb2MgNDA4IC90b29sb25nLmh0bWwKICAgICAgICBlcnJvcmxvYyA1MDAgaHR0cDovL2hhcHJveHkuZG9tYWluLm5ldC9idWdyZXBvcnQuaHRtbAogICAgICAgIGVycm9ybG9jIDUwMiBodHRwOi8vMTkyLjE2OC4xMTQuNTgvZXJyb3I1MHguaHRtbAogICAgICAgIGVycm9ybG9jIDUwMyBodHRwOi8vMTkyLjE2OC4xMTQuNTgvZXJyb3I1MHguaHRtbAogICAgICAgIGVycm9ybG9jIDUwNCBodHRwOi8vMTkyLjE2OC4xMTQuNTgvZXJyb3I1MHguaHRtbAoKTm90ZTogbGEgUkZDMjYxNiBzdGlwdWxlIHF1J3VuIGNsaWVudCBkb2l0IHLpdXRpbGlzZXIgbGEgbeptZSBt6XRob2RlIHBvdXIKYWNj6WRlciDgIGwnVVJMIGRlIHJlZGlyZWN0aW9uIHF1ZSBjZWxsZSBxdWkgbCdhIHJldG91cm7pZSwgY2UgcXVpIHBvc2UgZGVzCnByb2Js6G1lcyBhdmVjIGxlcyByZXF16nRlcyBQT1NULiBMZSBjb2RlIGRlIHJldG91ciAzMDMgYSDpdOkgY3Lp6SBleHBy6HMgcG91cgpy6WdsZXIgY2UgcHJvYmzobWUsIGluZGlxdWFudCBhdSBjbGllbnQgcXUnaWwgZG9pdCBhY2PpZGVyIOAgbCdVUkwgcmV0b3VybullCmRhbnMgbGUgY2hhbXAgTG9jYXRpb24gYXZlYyBsYSBt6XRob2RlIEdFVCB1bmlxdWVtZW50LiBTZXVsZW1lbnQsIGNlcnRhaW5zCm5hdmlnYXRldXJzIGFudOlyaWV1cnMg4CBIVFRQLzEuMSBuZSBjb25uYWlzc2VudCBwYXMgY2UgY29kZSBkZSByZXRvdXIuIERlCnBsdXMsIGxhIHBsdXBhcnQgZGVzIG5hdmlnYXRldXJzIHNlIGNvbXBvcnRlbnQgZOlq4CBhdmVjIGxlIGNvZGUgMzAyIGNvbW1lIGlscwpkZXZyYWllbnQgbGUgZmFpcmUgYXZlYyBsZSAzMDMuIERvbmMsIGRhbnMgbGUgYnV0IGRlIGxhaXNzZXIgbGUgY2hvaXgg4ApsJ3V0aWxpc2F0ZXVyLCBsZXMgdmVyc2lvbnMgMS4xLjMxIGV0IDEuMi41IGFwcG9ydGVudCBkZXV4IG5vdXZlbGxlcyBjb21tYW5kZXMKdmlzYW50IOAgcmVtcGxhY2VyICdlcnJvcmxvYycgOiAnZXJyb3Jsb2MzMDInIGV0ICdlcnJvcmxvYzMwMycuCgpMZXVyIHVzYWdlIG5vbiBhbWJpZ/wgZXN0IHJlY29tbWFuZOkg4CBsYSBwbGFjZSBkZSBsYSBjb21tYW5kZSAnZXJyb3Jsb2MnIChxdWkKdXRpbGlzZSB0b3Vqb3VycyAzMDIpLiBEYW5zIGxlIGRvdXRlLCBwculm6XJleiBsJ3V0aWxpc2F0aW9uIGRlICdlcnJvcmxvYzMwMycKZOhzIHF1ZSB2b3VzIHNhdmV6IHF1ZSB2b3MgY2xpZW50cyBzdXBwb3J0ZW50IGxlIGNvZGUgZGUgcmV0b3VyIEhUVFAgMzAzLgoKNC43KSBDaGFuZ2VtZW50IGRlcyB2YWxldXJzIHBhciBk6WZhdXQKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KRGFucyBsYSB2ZXJzaW9uIDEuMS4yMiBlc3QgYXBwYXJ1ZSBsYSBub3Rpb24gZGUgdmFsZXVycyBwYXIgZOlmYXV0LCBjZSBxdWkK6XZpdGUgZGUgculw6XRlciBkZXMgcGFyYW3odHJlcyBjb21tdW5zIOAgdG91dGVzIGxlcyBpbnN0YW5jZXMsIHRlbHMgcXVlIGxlcwp0aW1lb3V0cywgYWRyZXNzZXMgZGUgbG9nLCBtb2RlcyBkZSBmb25jdGlvbm5lbWVudCwgZXRjLgoKTGVzIHZhbGV1cnMgcGFyIGTpZmF1dCBzb250IHBvc2l0aW9ubullcyBkYW5zIGxhIGRlcm5p6HJlIHNlY3Rpb24gJ2RlZmF1bHRzJwpwculj6WRlbnQgbCdpbnN0YW5jZSBxdWkgbGVzIHV0aWxpc2VyYS4gT24gcGV1dCBkb25jIG1ldHRyZSBhdXRhbnQgZGUgc2VjdGlvbnMKJ2RlZmF1bHRzJyBxdWUgbCdvbiB2ZXV0LiBJbCBmYXV0IGp1c3RlIHNlIHJhcHBlbGVyIHF1ZSBsYSBwculzZW5jZSBkJ3VuZSB0ZWxsZQpzZWN0aW9uIGltcGxpcXVlIHVuZSBhbm51bGF0aW9uIGRlIHRvdXMgbGVzIHBhcmFt6HRyZXMgcGFyIGTpZmF1dCBwb3NpdGlvbm7pcwpwculj6WRlbW1lbnQsIGRhbnMgbGUgYnV0IGRlIGxlcyByZW1wbGFjZXIuCgpMYSBzZWN0aW9uICdkZWZhdWx0cycgdXRpbGlzZSBsYSBt6m1lIHN5bnRheGUgcXVlIGxhIHNlY3Rpb24gJ2xpc3RlbicsIGF1eApwYXJhbeh0cmVzIHBy6HMgcXVpIG5lIHNvbnQgcGFzIHN1cHBvcnTpcy4gTGUgbW90IGNs6SAnZGVmYXVsdHMnIHBldXQgYWNjZXB0ZXIKdW4gY29tbWVudGFpcmUgZW4gZ3Vpc2UgcGFyYW3odHJlLgoKRGFucyBsYSB2ZXJzaW9uIDEuMS4yOC8xLjIuMSwgc2V1bHMgbGVzIHBhcmFt6HRyZXMgc3VpdmFudHMgcGV1dmVudCDqdHJlCnBvc2l0aW9ubulzIGRhbnMgdW5lIHNlY3Rpb24gJ2RlZmF1bHRzJyA6CiAgLSBsb2cgKGxlIHByZW1pZXIgZXQgbGUgc2Vjb25kKQogIC0gbW9kZSB7IHRjcCwgaHR0cCwgaGVhbHRoIH0KICAtIGJhbGFuY2UgeyByb3VuZHJvYmluIH0KICAtIGRpc2FibGVkIChwb3VyIGTpc2FjdGl2ZXIgdG91dGVzIGxlcyBpbnN0YW5jZXMgcXVpIHN1aXZlbnQpCiAgLSBlbmFibGVkIChwb3VyIGZhaXJlIGwnb3DpcmF0aW9uIGludmVyc2UsIG1haXMgYydlc3QgbGUgY2FzIHBhciBk6WZhdXQpCiAgLSBjb250aW1lb3V0LCBjbGl0aW1lb3V0LCBzcnZ0aW1lb3V0LCBncmFjZSwgcmV0cmllcywgbWF4Y29ubgogIC0gb3B0aW9uIHsgcmVkaXNwYXRjaCwgdHJhbnNwYXJlbnQsIGtlZXBhbGl2ZSwgZm9yd2FyZGZvciwgbG9nYXNhcCwgaHR0cGNsb3NlLAogICAgICAgICAgICAgY2hlY2tjYWNoZSwgaHR0cGxvZywgdGNwbG9nLCBkb250bG9nbnVsbCwgcGVyc2lzdCwgaHR0cGNoayB9CiAgLSByZWRpc3BhdGNoLCByZWRpc3AsIHRyYW5zcGFyZW50LCBzb3VyY2UgeyBhZGRyOnBvcnQgfQogIC0gY29va2llLCBjYXB0dXJlCiAgLSBlcnJvcmxvYwoKTmUgc29udCBwYXMgc3VwcG9ydOlzIGRhbnMgY2V0dGUgdmVyc2lvbiwgbGVzIGFkcmVzc2VzIGRlIGRpc3BhdGNoIGV0IGxlcwpjb25maWd1cmF0aW9ucyBkZSBzZXJ2ZXVycywgYWluc2kgcXVlIHRvdXMgbGVzIGZpbHRyZXMgYmFz6XMgc3VyIGxlcwpleHByZXNzaW9ucyBy6Wd1bGnocmVzIDoKICAtIGRpc3BhdGNoLCBzZXJ2ZXIsCiAgLSByZXEqLCByc3AqCgpFbmZpbiwgaWwgbid5IGEgcGFzIGxlIG1veWVuLCBwb3VyIGxlIG1vbWVudCwgZCdpbnZhbGlkZXIgdW4gcGFyYW3odHJlIGJvb2zpZW4KcG9zaXRpb25u6SBwYXIgZOlmYXV0LiBEb25jIHNpIHVuZSBvcHRpb24gZXN0IHNw6WNpZmnpZSBkYW5zIGxlcyBwYXJhbeh0cmVzIHBhcgpk6WZhdXQsIGxlIHNldWwgbW95ZW4gZGUgbGEgZOlzYWN0aXZlciBwb3VyIHVuZSBpbnN0YW5jZSwgYydlc3QgZGUgY2hhbmdlciBsZXMKcGFyYW3odHJlcyBwYXIgZOlmYXV0IGF2YW50IGxhIGTpY2xhcmF0aW9uIGRlIGwnaW5zdGFuY2UuCgpFeGVtcGxlcyA6Ci0tLS0tLS0tLS0KICAgIGRlZmF1bHRzIGFwcGxpY2F0aW9ucyBUQ1AKICAgICAgICBsb2cgZ2xvYmFsCiAgICAgICAgbW9kZSB0Y3AKICAgICAgICBiYWxhbmNlIHJvdW5kcm9iaW4KICAgICAgICBjbGl0aW1lb3V0IDE4MDAwMAogICAgICAgIHNydnRpbWVvdXQgMTgwMDAwCiAgICAgICAgY29udGltZW91dCA0MDAwCiAgICAgICAgcmV0cmllcyAzCiAgICAgICAgcmVkaXNwYXRjaAoKICAgIGxpc3RlbiBhcHBfdGNwMSAxMC4wLjAuMTo2MDAwLTYwNjMKICAgICAgICBzZXJ2ZXIgc3J2MSAxOTIuMTY4LjEuMSBjaGVjayBwb3J0IDYwMDAgaW50ZXIgMTAwMDAKICAgICAgICBzZXJ2ZXIgc3J2MiAxOTIuMTY4LjEuMiBiYWNrdXAKCiAgICBsaXN0ZW4gYXBwX3RjcDIgMTAuMC4wLjI6NjAwMC02MDYzCiAgICAgICAgc2VydmVyIHNydjEgMTkyLjE2OC4yLjEgY2hlY2sgcG9ydCA2MDAwIGludGVyIDEwMDAwCiAgICAgICAgc2VydmVyIHNydjIgMTkyLjE2OC4yLjIgYmFja3VwCiAgICAKICAgIGRlZmF1bHRzIGFwcGxpY2F0aW9ucyBIVFRQCiAgICAgICAgbG9nIGdsb2JhbAogICAgICAgIG1vZGUgaHR0cAogICAgICAgIG9wdGlvbiBodHRwbG9nCiAgICAgICAgb3B0aW9uIGZvcndhcmRmb3IKICAgICAgICBvcHRpb24gZG9udGxvZ251bGwKICAgICAgICBiYWxhbmNlIHJvdW5kcm9iaW4KICAgICAgICBjbGl0aW1lb3V0IDIwMDAwCiAgICAgICAgc3J2dGltZW91dCAyMDAwMAogICAgICAgIGNvbnRpbWVvdXQgNDAwMAogICAgICAgIHJldHJpZXMgMwoKICAgIGxpc3RlbiBhcHBfaHR0cDEgMTAuMC4wLjE6ODAtODEKICAgICAgICBjb29raWUgU0VSVkVSSUQgcG9zdG9ubHkgaW5zZXJ0IGluZGlyZWN0CiAgICAgICAgY2FwdHVyZSBjb29raWUgdXNlcmlkPSBsZW4gMTAKICAgICAgICBzZXJ2ZXIgc3J2MSAxOTIuMTY4LjEuMTorODAwMCBjb29raWUgc3J2MSBjaGVjayBwb3J0IDgwODAgaW50ZXIgMTAwMAogICAgICAgIHNlcnZlciBzcnYxIDE5Mi4xNjguMS4yOis4MDAwIGNvb2tpZSBzcnYyIGNoZWNrIHBvcnQgODA4MCBpbnRlciAxMDAwCgogICAgZGVmYXVsdHMKICAgICAgICAjIHNlY3Rpb24gdmlkZSBxdWkgYW5udWxlIHRvdXMgbGVzIHBhcmFt6HRlcyBwYXIgZOlmYXV0LgoKCjQuOCkgUmFwcG9ydCBkJ+l0YXQgc291cyBmb3JtZSBkZSBwYWdlIEhUTUwKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpBdmVjIGxhIHZlcnNpb24gMS4yLjE0LCBpbCBkZXZpZW50IHBvc3NpYmxlIHBvdXIgaGFwcm94eSBkJ2ludGVyY2VwdHJlIGRlcwpyZXF16nRlcyBwb3VyIHVuZSBVUkkgcGFydGljdWxp6HJlIGV0IGRlIHJldG91cm5lciB1biByYXBwb3J0IGNvbXBsZXQgZCfpdGF0IGRlCmwnYWN0aXZpdOkgZHUgcHJveHksIGV0IGRlcyBzdGF0aXN0aXF1ZXMgc3VyIGxlcyBzZXJ2ZXVycy4gQ2VjaSBlc3QgZGlzcG9uaWJsZQp2aWEgbGUgbW90IGNs6SAic3RhdHMiIGFzc29jaekg4CBuJ2ltcG9ydGUgbGFxdWVsbGUgZGUgY2VzIG9wdGlvbnMgOgoKICAgLSBzdGF0cyBlbmFibGUKICAgLSBzdGF0cyB1cmkgPHVyaSBwcmVmaXg+CiAgIC0gc3RhdHMgcmVhbG0gPGF1dGhlbnRpY2F0aW9uIHJlYWxtPgogICAtIHN0YXRzIGF1dGggPHVzZXI6cGFzc3dvcmQ+CiAgIC0gc3RhdHMgc2NvcGUgPHByb3h5X2lkPiB8ICcuJwoKClBhciBk6WZhdXQsIGxlIHJhcHBvcnQgZXN0IGTpc2FjdGl26S4gTGUgZmFpdCBkZSBzcOljaWZpZXIgdW5lIGRlcyBjb21iaW5haXNpb24KY2ktZGVzc3VzIGFjdGl2ZSBsZSByYXBwb3J0IHBvdXIgbCdpbnN0YW5jZSBkZSBwcm94eSBxdWkgbGUgculm6XJlbmNlLiBMYQpzb2x1dGlvbiBsYSBwbHVzIHNpbXBsZSBlc3QgZCd1dGlsaXNlciAic3RhdHMgZW5hYmxlIiBxdWkgYWN0aXZlcmEgbGUgcmFwcG9ydAphdmVjIGxlcyBwYXJhbeh0cmVzIHBhciBk6WZhdXQgc3VpdmFudCA6CgogICAtIGRlZmF1bHQgVVJJICAgOiAiL2hhcHJveHk/c3RhdHMiICAgICAgICAoQ09ORklHX1NUQVRTX0RFRkFVTFRfVVJJKQogICAtIGRlZmF1bHQgYXV0aCAgOiBub24gc3DpY2lmaekgKHBhcyBkJ2F1dGhlbnRpY2F0aW9uKQogICAtIGRlZmF1bHQgcmVhbG0gOiAiSEFQcm94eSBTdGF0aXN0aWNzIiAgICAoQ09ORklHX1NUQVRTX0RFRkFVTFRfUkVBTE0pCiAgIC0gZGVmYXVsdCBzY29wZSA6IG5vbiBzcGVjaWZp6SAoYWNj6HMg4CB0b3V0ZXMgbGVzIGluc3RhbmNlcykKCkwnb3B0aW9uICJzdGF0cyB1cmkgPHVyaV9wcmVmaXg+IiBwZXJtZXQgZCdpbnRlcmNlcHRlciB1biBhdXRyZSBwculmaXhlIGQnVVJJCnF1ZSBjZWx1aSBwYXIgZOlmYXV0LiBOb3RlciBxdWUgbidpbXBvcnRlIHF1ZWxsZSBVUkkgcXVpIENPTU1FTkNFIGF2ZWMgY2V0dGUKY2hh7m5lIHNlcmEgdmFsaWTpZS4gUGFyIGV4ZW1wbGUsIHVuZSBpbnN0YW5jZSBwb3VycmFpdCDqdHJlIGTpZGnpZSDgIGxhIHBhZ2UKZCfpdGF0IHNldWxlbWVudCBldCBy6XBvbmRyZSDgIHRvdXRlIFVSSS4KCkV4YW1wbGUgOgotLS0tLS0tLS0KICAgICMgaW50ZXJjZXB0ZSBuJ2ltcG9ydGUgcXVlbGxlIFVSSSBldCByZXRvdXJuZSBsYSBwYWdlIGQn6XRhdC4KICAgIGxpc3RlbiBzdGF0cyA6ODA4MAogICAgICAgIG1vZGUgaHR0cAogICAgICAgIHN0YXRzIHVyaSAvCgoKTCdvcHRpb24gInN0YXRzIGF1dGggPHVzZXI6cGFzc3dvcmQ+IiBhY3RpdmUgbCdhdXRoZW50aWZpY2F0aW9uICJCYXNpYyIgZXQKYWpvdXRlIHVuIGNvdXBsZSAidXNlcjpwYXNzd29yZCIgdmFsaWRlIOAgbGEgbGlzdGUgZGVzIGNvbXB0ZXMgYXV0b3Jpc+lzLgpMJ3V0aWxpc2F0ZXVyIDx1c2VyPiBldCBsZSBtb3QgZGUgcGFzc2UgPHBhc3N3b3JkPiBkb2l2ZW50IOp0cmUgcHLpY2lz6XMKZW4gY2xhaXIgZGFucyBsZSBmaWNoaWVyIGRlIGNvbmZpZ3VyYXRpb24sIGV0IGNvbW1lIGNlY2kgZXN0IGRlCmwnYXV0aGVudGlmaWNhdGlvbiBIVFRQICJCYXNpYyIsIGlsIGZhdXQg6nRyZSBjb25zY2llbnQgcXUnaWxzIHRyYW5zaXRlbnQgZW4KY2xhaXIgc3VyIGxlIHLpc2VhdSwgZG9uYyBpbCBuZSBmYXV0IHBhcyB1dGlsaXNlciBkZSBjb21wdGUgc2Vuc2libGUuIExhIGxpc3RlCmVzdCBpbGxpbWl06WUgZGFucyBsZSBidXQgZGUgcG91dm9pciBmb3VybmlyIGRlcyBhY2PocyBmYWNpbGVtZW50IOAgZGVzCmTpdmVsb3BwZXVycyBvdSDgIGRlcyBjbGllbnRzLgoKTCdvcHRpb24gInN0YXRzIHJlYWxtIDxyZWFsbT4iIGTpZmluaXQgbGUgImRvbWFpbmUiICgicmVhbG0iKSBkZSB2YWxpZGl06SBkdQptb3QgZGUgcGFzc2UgcXVpIHNlcmEgcHLpc2VudOkgZGFucyBsYSBib+50ZSBkZSBkaWFsb2d1ZSBkdSBuYXZpZ2F0ZXVyCmxvcnNxdSdpbCBkZW1hbmRlcmEgdW4gY29tcHRlIHV0aWxpc2F0ZXVyIGV0IHVuIG1vdCBkZSBwYXNzZS4gSWwgZXN0IGltcG9ydGFudApkZSBzJ2Fzc3VyZXIgcXVlIGNlbHVpLWNpIHNvaXQgZGlmZulyZW50IGRlIGNldXggdXRpbGlz6XMgcGFyIGwnYXBwbGljYXRpb24sCmF1dHJlbWVudCBsZSBuYXZpZ2F0ZXVyIHRlbnRlcmEgZCdlbiB1dGlsaXNlciB1biBjYWNo6SBkZXB1aXMgbCdhcHBsaWNhdGlvbi4KTm90ZXIgcXVlIGxlcyBlc3BhY2VzIGRhbnMgbGUgbm9tIGRlICJyZWFsbSIgZG9pdmVudCDqdHJlIHByb3TpZ+lzIHBhciB1bgpiYWNrc2xhc2ggKCdcJykuCgpMJ29wdGlvbiAic3RhdHMgc2NvcGUgPHByb3h5X2lkPiIgbGltaXRlIGxhIHBvcnTpZSBkdSByYXBwb3J0IGQn6XRhdC4gUGFyCmTpZmF1dCwgdG91dGVzIGxlcyBpbnN0YW5jZXMgcHJveHkgc29udCBsaXN06WVzLiBNYWlzIGRhbnMgY2VydGFpbmVzCmNpcmNvbnN0YW5jZXMsIGlsIHNlcmFpdCBwculm6XJhYmxlIGRlIG5lIGxpc3RlciBxdWUgY2VydGFpbnMgcHJveGllcyBvdQpzaW1wbGVtZW50IGxlIHByb3h5IGNvdXJhbnQuIEMnZXN0IGNlIHF1ZSBmYWl0IGNldHRlIG9wdGlvbi4gTGUgbm9tIHNw6WNpYWwgIi4iCih1biBzaW1wbGUgcG9pbnQpIHLpZulyZW5jZSBsZSBwcm94eSBjb3VyYW50LiBDZXR0ZSBvcHRpb24gcGV1dCDqdHJlIHLpcOl06WUKYXV0YW50IGRlIGZvaXMgcXVlIG7pY2Vzc2FpcmUgcG91ciBhdXRvcmlzZXIgZCdhdXRyZXMgcHJveGllcywgbeptZSBwb3VyIGRlcwpub21zIHLpZulyZW5j6XMgcGx1cyBsb2luIGRhbnMgbGEgY29uZmlndXJhdGlvbiBvdSBiaWVuIGRlcyBub21zIHF1aSBuJ2V4aXN0ZW50CnBhcyBlbmNvcmUuIExlIG5vbSBwculjaXPpIGVzdCBjZWx1aSBxdWkgYXBwYXJhaXQgYXBy6HMgbGUgbW90IGNs6SAibGlzdGVuIi4KCkV4ZW1wbGUgOgotLS0tLS0tLS0KICAgICMgc2ltcGxlIGFwcGxpY2F0aW9uIGVtYmFycXVhbnQgbGEgcGFnZSBkJ+l0YXQgYXV0aGVudGlmaellCiAgICBsaXN0ZW4gYXBwMSAxOTIuMTY4LjEuMTAwOjgwCiAgICAgICAgbW9kZSBodHRwCiAgICAgICAgb3B0aW9uIGh0dHBjbG9zZQogICAgICAgIGJhbGFuY2Ugcm91bmRyb2JpbgogICAgICAgIGNvb2tpZSBTRVJWRVJJRCBwb3N0b25seSBpbnNlcnQgaW5kaXJlY3QKICAgICAgICBzZXJ2ZXIgc3J2MSAxOTIuMTY4LjEuMTo4MDgwIGNvb2tpZSBzcnYxIGNoZWNrIGludGVyIDEwMDAKICAgICAgICBzZXJ2ZXIgc3J2MSAxOTIuMTY4LjEuMjo4MDgwIGNvb2tpZSBzcnYyIGNoZWNrIGludGVyIDEwMDAKICAgICAgICBzdGF0cyB1cmkgL215X3N0YXRzCiAgICAgICAgc3RhdHMgcmVhbG0gU3RhdGlzdGljc1wgZm9yXCBNeUFwcDEtMgogICAgICAgIHN0YXRzIGF1dGggZ3Vlc3Q6Z3Vlc3QKICAgICAgICBzdGF0cyBhdXRoIGFkbWluOkFkTWlOMTIzCiAgICAgICAgc3RhdHMgc2NvcGUgLgogICAgICAgIHN0YXRzIHNjb3BlIGFwcDIKCiAgICAjIHNpbXBsZSBhcHBsaWNhdGlvbiBlbWJhcnF1YW50IGxhIHBhZ2UgZCfpdGF0IHNhbnMgYXV0aGVudGlmaWNhdGlvbgogICAgbGlzdGVuIGFwcDIgMTkyLjE2OC4yLjEwMDo4MAogICAgICAgIG1vZGUgaHR0cAogICAgICAgIG9wdGlvbiBodHRwY2xvc2UKICAgICAgICBiYWxhbmNlIHJvdW5kcm9iaW4KICAgICAgICBjb29raWUgU0VSVkVSSUQgcG9zdG9ubHkgaW5zZXJ0IGluZGlyZWN0CiAgICAgICAgc2VydmVyIHNydjEgMTkyLjE2OC4yLjE6ODA4MCBjb29raWUgc3J2MSBjaGVjayBpbnRlciAxMDAwCiAgICAgICAgc2VydmVyIHNydjEgMTkyLjE2OC4yLjI6ODA4MCBjb29raWUgc3J2MiBjaGVjayBpbnRlciAxMDAwCiAgICAgICAgc3RhdHMgdXJpIC9teV9zdGF0cwogICAgICAgIHN0YXRzIHJlYWxtIFN0YXRpc3RpY3NcIGZvclwgTXlBcHAyCiAgICAgICAgc3RhdHMgc2NvcGUgLgoKICAgIGxpc3RlbiBhZG1pbl9wYWdlIDo4MDgwCiAgICAgICAgbW9kZSBodHRwCiAgICAgICAgc3RhdHMgdXJpIC9teV9zdGF0cwogICAgICAgIHN0YXRzIHJlYWxtIEdsb2JhbFwgc3RhdGlzdGljcwogICAgICAgIHN0YXRzIGF1dGggYWRtaW46QWRNaU4xMjMKCk5vdGVzIDoKLS0tLS0tLQogIC0gbGVzIG9wdGlvbnMgInN0YXRzIiBwZXV2ZW50IGF1c3NpIOp0cmUgc3DpY2lmaellcyBkYW5zIHVuZSBzZWN0aW9uCiAgICAiZGVmYXVsdHMiLCBhdXF1ZWwgY2FzIGxhIG3qbWUgY29uZmlndXJhdGlvbiBleGFjdGVtZW50IHNlcmEgZm91cm5pZSDgCiAgICB0b3V0ZXMgbGVzIGluc3RhbmNlcyBzdWl2YW50ZXMsIGQnb/kgbCd1dGlsaXTpIGR1IHNjb3BlICIuIi4gVG91dGVmb2lzLCBzaQogICAgdW5lIGluc3RhbmNlIHJlZOlmaW5pdCBuJ2ltcG9ydGUgcXVlbCBwYXJhbeh0cmUgInN0YXRzIiwgYWxvcnMgbGVzIGTpZmF1dHMKICAgIG5lIGx1aSBzZXJvbnQgcGFzIGFwcGxpcXXpcy4KCiAgLSBsJ2F1dGhlbnRpZmljYXRpb24gIkJhc2ljIiBlc3QgdHLocyBzaW1wbGlzdGUgZXQgbm9uIHPpY3VyaXPpZSBjb250cmUgbGEKICAgIGNhcHR1cmUgculzZWF1LiBBdWN1biBtb3QgZGUgcGFzc2Ugc2Vuc2libGUgbmUgZG9pdCDqdHJlIHV0aWxpc+ksIGV0IGlsCiAgICBlc3QgYm9uIGRlIHNhdm9pciBxdSdpbCBuJ2V4aXN0ZSBwYXMgZGUgbW95ZW4gZGUgbGUgc3VwcHJpbWVyIGR1IG5hdmlnYXRldXIKICAgIGFwcuhzIHVzYWdlLCBkb25jIGlsIHNlcmEgZW52b3npIHRlbCBxdWVsIOAgbCdhcHBsaWNhdGlvbiBhdSBjb3VycyBkZXMKICAgIGFjY+hzIHN1Y2Nlc3NpZnMuCgogIC0gSWwgZXN0IHRy6HMgaW1wb3J0YW50IGRlIHBy6WNpc2VyIGwnb3B0aW9uICJodHRwY2xvc2UiLCBzaW5vbiBsZSBwcm94eSBuZQogICAgc2VyYSBwYXMgZW4gbWVzdXJlIGRlIGTpdGVjdGVyIGxlcyBVUkkgZGFucyBsZXMgc2Vzc2lvbnMga2VlcC1hbGl2ZQogICAgbWFpbnRlbnVlcyBlbnRyZSBsZSBuYXZpZ2F0ZXVyIGV0IGxlcyBzZXJ2ZXVycywgZG9uYyBsZXMgVVJJIGRlIHN0YXRzCiAgICBzZXJvbnQgdHJhbnNtaXNlcyB0ZWxsZXMgcXVlbGxlcyBhdXggc2VydmV1cnMgY29tbWUgc2kgbCdvcHRpb24gbifpdGFpdAogICAgcGFzIHBy6WNpc+llLgoKCj09PT09PT09PT09PT09PT09PT09PT09CnwgUGFyYW3pdHJhZ2Ugc3lzdOhtZSB8Cj09PT09PT09PT09PT09PT09PT09PT09CgpTb3VzIExpbnV4IDIuNAo9PT09PT09PT09PT09PQoKLS0gY3V0IGhlcmUgLS0KIyEvYmluL3NoCiMgc2V0IHRoaXMgdG8gYWJvdXQgMjU2LzRNICgxNjM4NCBmb3IgMjU2TSBtYWNoaW5lKQpNQVhGSUxFUz0xNjM4NAplY2hvICRNQVhGSUxFUyA+IC9wcm9jL3N5cy9mcy9maWxlLW1heAp1bGltaXQgLW4gJE1BWEZJTEVTCgppZiBbIC1lIC9wcm9jL3N5cy9uZXQvaXB2NC9pcF9jb25udHJhY2tfbWF4IF07IHRoZW4KICAgICAgICBlY2hvIDY1NTM2ID4gL3Byb2Mvc3lzL25ldC9pcHY0L2lwX2Nvbm50cmFja19tYXgKZmkKCmlmIFsgLWUgL3Byb2Mvc3lzL25ldC9pcHY0L25ldGZpbHRlci9pcF9jdF90Y3BfdGltZW91dF9maW5fd2FpdCBdOyB0aGVuCiAgICAgICAgIyAzMCBzZWNvbmRzIGZvciBmaW4sIDE1IGZvciB0aW1lIHdhaXQKICAgICAgICBlY2hvIDMwMDAgPiAvcHJvYy9zeXMvbmV0L2lwdjQvbmV0ZmlsdGVyL2lwX2N0X3RjcF90aW1lb3V0X2Zpbl93YWl0CiAgICAgICAgZWNobyAxNTAwID4gL3Byb2Mvc3lzL25ldC9pcHY0L25ldGZpbHRlci9pcF9jdF90Y3BfdGltZW91dF90aW1lX3dhaXQKICAgICAgICBlY2hvIDAgPiAvcHJvYy9zeXMvbmV0L2lwdjQvbmV0ZmlsdGVyL2lwX2N0X3RjcF9sb2dfaW52YWxpZF9zY2FsZQogICAgICAgIGVjaG8gMCA+IC9wcm9jL3N5cy9uZXQvaXB2NC9uZXRmaWx0ZXIvaXBfY3RfdGNwX2xvZ19vdXRfb2Zfd2luZG93CmZpCgplY2hvIDEwMjQgNjA5OTkgPiAvcHJvYy9zeXMvbmV0L2lwdjQvaXBfbG9jYWxfcG9ydF9yYW5nZQplY2hvIDMwID4gL3Byb2Mvc3lzL25ldC9pcHY0L3RjcF9maW5fdGltZW91dAplY2hvIDQwOTYgPiAvcHJvYy9zeXMvbmV0L2lwdjQvdGNwX21heF9zeW5fYmFja2xvZwplY2hvIDI2MjE0NCA+IC9wcm9jL3N5cy9uZXQvaXB2NC90Y3BfbWF4X3R3X2J1Y2tldHMKZWNobyAyNjIxNDQgPiAvcHJvYy9zeXMvbmV0L2lwdjQvdGNwX21heF9vcnBoYW5zCmVjaG8gMzAwID4gL3Byb2Mvc3lzL25ldC9pcHY0L3RjcF9rZWVwYWxpdmVfdGltZQplY2hvIDEgPiAvcHJvYy9zeXMvbmV0L2lwdjQvdGNwX3R3X3JlY3ljbGUKZWNobyAwID4gL3Byb2Mvc3lzL25ldC9pcHY0L3RjcF90aW1lc3RhbXBzCmVjaG8gMCA+IC9wcm9jL3N5cy9uZXQvaXB2NC90Y3BfZWNuCmVjaG8gMSA+IC9wcm9jL3N5cy9uZXQvaXB2NC90Y3Bfc2FjawplY2hvIDAgPiAvcHJvYy9zeXMvbmV0L2lwdjQvdGNwX2RzYWNrCgojIGF1dG8tdHVuZWQgb24gMi40CiNlY2hvIDI2MjE0MyA+IC9wcm9jL3N5cy9uZXQvY29yZS9ybWVtX21heAojZWNobyAyNjIxNDMgPiAvcHJvYy9zeXMvbmV0L2NvcmUvcm1lbV9kZWZhdWx0CgplY2hvIDE2Mzg0IDY1NTM2IDUyNDI4OCA+IC9wcm9jL3N5cy9uZXQvaXB2NC90Y3Bfcm1lbQplY2hvIDE2Mzg0IDM0OTUyMCA2OTkwNDAgPiAvcHJvYy9zeXMvbmV0L2lwdjQvdGNwX3dtZW0KCi0tIGN1dCBoZXJlIC0tCgpTb3VzIEZyZWVCU0QKPT09PT09PT09PT09CgpVbiBwb3J0IGRlIEhBLVByb3h5IHNvdXMgRnJlZUJTRCBlc3QgZOlzb3JtYWlzIGRpc3BvbmlibGUsIGdy4mNlIOAKQ2xlbWVudCBMYWZvcmV0IDxzaGVlcGtpbGxlckBjdWx0ZGVhZHNoZWVwLm9yZz4uCgpQb3VyIHBsdXMgZCdpbmZvcm1hdGlvbnMgOgpodHRwOi8vd3d3LmZyZWVic2Qub3JnL2NnaS91cmwuY2dpP3BvcnRzL25ldC9oYXByb3h5L3BrZy1kZXNjcgpodHRwOi8vd3d3LmZyZWVic2Qub3JnL2NnaS9jdnN3ZWIuY2dpL3BvcnRzL25ldC9oYXByb3h5LwpodHRwOi8vd3d3LmZyZXNocG9ydHMub3JnL25ldC9oYXByb3h5CgoKLS0gZmluIC0tCg==