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+CgpWb2lyIGxlcyBleGVtcGxlcyBjaS1hcHLocy4gICAgICAgIAoKRGVwdWlzIGxhIHZlcnNpb24gMS4xLjE3LCBpbCBlc3QgcG9zc2libGUgZGUgZOlmaW5pciBkZXMgc2VydmV1cnMgZGUgc2Vjb3VycywKdXRpbGlz6XMgdW5pcXVlbWVudCBsb3JzcXUnYXVjdW4gZGVzIGF1dHJlcyBzZXJ2ZXVycyBuZSBmb25jdGlvbm5lLiBQb3VyIGNlbGEsCmFqb3V0ZXIgbGUgbW90IGNs6SAiYmFja3VwIiBzdXIgbGEgbGlnbmUgZGUgZOlmaW5pdGlvbiBkdSBzZXJ2ZXVyLiBVbiBzZXJ2ZXVyCmRlIHNlY291cnMgbidlc3QgYXBwZWzpIHF1ZSBsb3JzcXVlIHRvdXMgbGVzIHNlcnZldXJzIG5vcm1hdXgsIGFpbnNpIHF1ZSB0b3VzCmxlcyBzZXJ2ZXVycyBkZSBzZWNvdXJzIHF1aSBsZSBwculj6GRlbnQgc29udCBob3JzIGQndXNhZ2UuIElsIG4neSBhIGRvbmMgcGFzCmRlIHLpcGFydGl0aW9uIGRlIGNoYXJnZSBlbnRyZSBkZXMgc2VydmV1cnMgZGUgc2Vjb3VycyBwYXIgZOlmYXV0LiBBIHBhcnRpcgpkZSBsYSB2ZXJzaW9uIDEuMi45LCBpbCBlc3QgcG9zc2libGUgZGUgbGVzIHV0aWxpc2VyIHNpbXVsdGFu6W1lbnQgZ3LiY2Ug4ApsJ29wdGlvbiAnYWxsYmFja3VwcycuIENlIHR5cGUgZGUgc2VydmV1cnMgcGV1dCBzZXJ2aXIg4CByZXRvdXJuZXIgZGVzIHBhZ2VzCmQnaW5kaXNwb25pYmlsaXTpIGRlIHNlcnZpY2UuIERhbnMgY2UgY2FzLCBpbCBlc3QgcHLpZulyYWJsZSBkZSBuZSBwYXMgYWZmZWN0ZXIKZGUgY29va2llLCBhZmluIHF1ZSBsZXMgY2xpZW50cyBxdWkgbGUgcmVuY29udHJlbnQgbid5IHNvaWVudCBwYXMgYWZmZWN06XMKZOlmaW5pdGl2ZW1lbnQuIExlIGZhaXQgZGUgbmUgcGFzIG1ldHRyZSBkZSBjb29raWUgZW52b2llIHVuIGNvb2tpZSB2aWRlLCBjZQpxdWkgYSBwb3VyIGVmZmV0IGRlIHN1cHByaW1lciB1biDpdmVudHVlbCBjb29raWUgYWZmZWN06SBwculj6WRlbW1lbnQuCgpEZXB1aXMgbGEgdmVyc2lvbiAxLjEuMjIsIGlsIGVzdCBwb3NzaWJsZSBkJ2Vudm95ZXIgbGVzIHRlc3RzIGRlIGZvbmN0aW9ubmVtZW50CnZlcnMgdW4gcG9ydCBkaWZm6XJlbnQgZGUgY2VsdWkgZGUgc2VydmljZS4gQydlc3QgbuljZXNzYWlyZSBwcmluY2lwYWxlbWVudApwb3VyIGxlcyBjb25maWd1cmF0aW9ucyBv+SBsZSBzZXJ2ZXVyIG4nYSBwYXMgZGUgcG9ydCBwculk6WZpbmksIHBhciBleGVtcGxlCmxvcnNxdSdpbCBlc3QgZOlkdWl0IGR1IHBvcnQgZCdhY2NlcHRhdGlvbiBkZSBsYSBjb25uZXhpb24uIFBvdXIgY2VsYSwgdXRpbGlzZXIKbGUgcGFyYW3odHJlICdwb3J0JyBzdWl2aSBkdSBudW3pcm8gZGUgcG9ydCBkZXZhbnQgculwb25kcmUgYXV4IHJlcXXqdGVzLgoKRW5maW4sIGRlcHVpcyBsYSB2ZXJzaW9uIDEuMS4xNywgaWwgZXN0IHBvc3NpYmxlIGRlIHZpc3VhbGlzZXIgcmFwaWRlbWVudApsJ+l0YXQgY291cmFudCBkZSB0b3VzIGxlcyBzZXJ2ZXVycy4gUG91ciBjZWxhLCBpbCBzdWZmaXQgZCdlbnZveWVyIHVuIHNpZ25hbApTSUdIVVAgYXUgcHJvY2Vzc3VzIHByb3h5LiBMJ+l0YXQgZGUgdG91cyBsZXMgc2VydmV1cnMgZGUgdG91cyBsZXMgcHJveGllcyBlc3QKZW52b3npIGRhbnMgbGVzIGxvZ3MgZW4gbml2ZWF1ICJub3RpY2UiLCBhaW5zaSBxdWUgc3VyIGxhIHNvcnRpZSBkJ2VycmV1cnMgc2kKZWxsZSBlc3QgYWN0aXZlLiBDJ2VzdCB1bmUgYm9ubmUgcmFpc29uIHBvdXIgYXZvaXIgYXUgbW9pbnMgdW4gc2VydmV1ciBkZSBsb2dzCmxvY2FsIGVuIG5pdmVhdSBub3RpY2UuCgpEZXB1aXMgbGEgdmVyc2lvbiAxLjEuMTggKGV0IDEuMi4xKSwgdW4gbWVzc2FnZSBkJ3VyZ2VuY2UgZXN0IGVudm956SBkYW5zIGxlcwpsb2dzIGVuIG5pdmVhdSAnZW1lcmcnIHNpIHRvdXMgbGVzIHNlcnZldXJzIGQndW5lIG3qbWUgaW5zdGFuY2Ugc29udCB0b21i6XMsCmFmaW4gZGUgbm90aWZpZXIgbCdhZG1pbmlzdHJhdGV1ciBxdSdpbCBmYXV0IHByZW5kcmUgdW5lIGFjdGlvbiBpbW3pZGlhdGUuCgpEZXB1aXMgbGVzIHZlcnNpb25zIDEuMS4zMCBldCAxLjIuMywgcGx1c2lldXJzIHNlcnZldXJzIHBldXZlbnQgcGFydGFnZXIgbGEKbeptZSB2YWxldXIgZGUgY29va2llLiBDJ2VzdCBwYXJ0aWN1bGnocmVtZW50IHV0aWxlIGVuIG1vZGUgYmFja3VwLCBwb3VyCnPpbGVjdGlvbm5lciBkZXMgY2hlbWlucyBhbHRlcm5hdGlmcyBwb3VyIHVuIHNlcnZldXIgZG9ubuksIHBvdXIgbWV0dHJlIGVuCm9ldXZyZSBsJ2Fycup0IGVuIGRvdWNldXIgZCd1biBzZXJ2ZXVyLCBvdSBwb3VyIGRpcmlnZXIgbGVzIGNsaWVudHMKdGVtcG9yYWlyZW1lbnQgdmVycyB1bmUgcGFnZSBkJ2VycmV1ciBlbiBhdHRlbmRhbnQgbGUgcmVk6W1hcnJhZ2UgZCd1bmUKYXBwbGljYXRpb24uIExlIHByaW5jaXBlIGVzdCBxdWUgbG9yc3F1J3VuIHNlcnZldXIgZXN0IGTpdGVjdOkgY29tbWUgaW5vcOlyYW50LApsZSBwcm94eSBjaGVyY2hlcmEgbGUgcHJvY2hhaW4gc2VydmV1ciBwb3Nz6WRhbnQgbGEgbeptZSB2YWxldXIgZGUgY29va2llIHBvdXIKY2hhcXVlIGNsaWVudCBxdWkgbGUgZGVtYW5kZXJhLiBTJ2lsIG5lIHRyb3V2ZSBwYXMgZGUgc2VydmV1ciBub3JtYWwsIGFsb3JzIGlsCmxlIGNoZXJjaGVyYSBwYXJtaSBsZXMgc2VydmV1cnMgZGUgYmFja3VwLiBDb25zdWx0ZXIgbGUgZ3VpZGUgZCdhcmNoaXRlY3R1cmUKcG91ciBwbHVzIGQnaW5mb3JtYXRpb25zLgoKRXhlbXBsZXMgOgotLS0tLS0tLS0tCiMgY29uZiBkdSBwYXJhZ3JhcGhlIDMpIGF2ZWMgc3VydmVpbGxhbmNlIFRDUAogICAgbGlzdGVuIGh0dHBfcHJveHkgMC4wLjAuMDo4MAogICAgICAgIG1vZGUgaHR0cAogICAgICAgIGNvb2tpZSBTRVJWRVJJRAogICAgICAgIGJhbGFuY2Ugcm91bmRyb2JpbgogICAgICAgIHNlcnZlciB3ZWIxIDE5Mi4xNjguMS4xOjgwIGNvb2tpZSBzZXJ2ZXIwMSBjaGVjawogICAgICAgIHNlcnZlciB3ZWIyIDE5Mi4xNjguMS4yOjgwIGNvb2tpZSBzZXJ2ZXIwMiBjaGVjayBpbnRlciA1MDAgcmlzZSAxIGZhbGwgMgoKIyBt6m1lIHF1ZSBwculj6WRlbW1lbnQgYXZlYyBzdXJ2ZWlsbGFuY2UgSFRUUCBwYXIgJ09QVElPTlMgLyBIVFRQLzEuMCcKICAgIGxpc3RlbiBodHRwX3Byb3h5IDAuMC4wLjA6ODAKICAgICAgICBtb2RlIGh0dHAKICAgICAgICBjb29raWUgU0VSVkVSSUQKICAgICAgICBiYWxhbmNlIHJvdW5kcm9iaW4KICAgICAgICBvcHRpb24gaHR0cGNoawogICAgICAgIHNlcnZlciB3ZWIxIDE5Mi4xNjguMS4xOjgwIGNvb2tpZSBzZXJ2ZXIwMSBjaGVjawogICAgICAgIHNlcnZlciB3ZWIyIDE5Mi4xNjguMS4yOjgwIGNvb2tpZSBzZXJ2ZXIwMiBjaGVjayBpbnRlciA1MDAgcmlzZSAxIGZhbGwgMgoKIyBt6m1lIHF1ZSBwculj6WRlbW1lbnQgYXZlYyBzdXJ2ZWlsbGFuY2UgSFRUUCBwYXIgJ09QVElPTlMgL2luZGV4Lmh0bWwgSFRUUC8xLjAnCiAgICBsaXN0ZW4gaHR0cF9wcm94eSAwLjAuMC4wOjgwCiAgICAgICAgbW9kZSBodHRwCiAgICAgICAgY29va2llIFNFUlZFUklECiAgICAgICAgYmFsYW5jZSByb3VuZHJvYmluCiAgICAgICAgb3B0aW9uIGh0dHBjaGsgL2luZGV4Lmh0bWwKICAgICAgICBzZXJ2ZXIgd2ViMSAxOTIuMTY4LjEuMTo4MCBjb29raWUgc2VydmVyMDEgY2hlY2sKICAgICAgICBzZXJ2ZXIgd2ViMiAxOTIuMTY4LjEuMjo4MCBjb29raWUgc2VydmVyMDIgY2hlY2sgaW50ZXIgNTAwIHJpc2UgMSBmYWxsIDIKCiMgaWRlbSBhdmVjIHN1cnZlaWxsYW5jZSBIVFRQIHBhciAnSEVBRCAvaW5kZXguanNwPyBIVFRQLzEuMVxyXG5Ib3N0OiB3d3cnCiAgICBsaXN0ZW4gaHR0cF9wcm94eSAwLjAuMC4wOjgwCiAgICAgICAgbW9kZSBodHRwCiAgICAgICAgY29va2llIFNFUlZFUklECiAgICAgICAgYmFsYW5jZSByb3VuZHJvYmluCiAgICAgICAgb3B0aW9uIGh0dHBjaGsgSEVBRCAvaW5kZXguanNwPyBIVFRQLzEuMVxyXG5Ib3N0Olwgd3d3CiAgICAgICAgc2VydmVyIHdlYjEgMTkyLjE2OC4xLjE6ODAgY29va2llIHNlcnZlcjAxIGNoZWNrCiAgICAgICAgc2VydmVyIHdlYjIgMTkyLjE2OC4xLjI6ODAgY29va2llIHNlcnZlcjAyIGNoZWNrIGludGVyIDUwMCByaXNlIDEgZmFsbCAyCgojIHLpcGFydGl0aW9uIGF2ZWMgcGVyc2lzdGVuY2UgYmFz6WUgc3VyIGxlIHBy6WZpeGUgZGUgY29va2llLCBldCBhcnLqdCBlbgojIGRvdWNldXIgdXRpbGlzYW50IHVuIHNlY29uZCBwb3J0ICg4MSkganVzdGUgcG91ciBsZXMgaGVhbHRoLWNoZWNrcy4KICAgIGxpc3RlbiBodHRwX3Byb3h5IDAuMC4wLjA6ODAKICAgICAgIG1vZGUgaHR0cAogICAgICAgY29va2llIEpTRVNTSU9OSUQgcHJlZml4CiAgICAgICBiYWxhbmNlIHJvdW5kcm9iaW4KICAgICAgIG9wdGlvbiBodHRwY2hrIEhFQUQgL2luZGV4LmpzcD8gSFRUUC8xLjFcclxuSG9zdDpcIHd3dwogICAgICAgc2VydmVyIHdlYjEtbm9ybSAxOTIuMTY4LjEuMTo4MCBjb29raWUgczEgY2hlY2sgcG9ydCA4MQogICAgICAgc2VydmVyIHdlYjItbm9ybSAxOTIuMTY4LjEuMjo4MCBjb29raWUgczIgY2hlY2sgcG9ydCA4MQogICAgICAgc2VydmVyIHdlYjEtc3RvcCAxOTIuMTY4LjEuMTo4MCBjb29raWUgczEgY2hlY2sgcG9ydCA4MCBiYWNrdXAKICAgICAgIHNlcnZlciB3ZWIyLXN0b3AgMTkyLjE2OC4xLjI6ODAgY29va2llIHMyIGNoZWNrIHBvcnQgODAgYmFja3VwCgojIEluc2VydGlvbiBhdXRvbWF0aXF1ZSBkZSBjb29raWUgZGFucyBsYSBy6XBvbnNlIGR1IHNlcnZldXIsIGV0IHN1cHByZXNzaW9uCiMgYXV0b21hdGlxdWUgZGFucyBsYSByZXF16nRlLCB0b3V0IGVuIGluZGlxdWFudCBhdXggY2FjaGVzIGRlIG5lIHBhcyBnYXJkZXIKIyBjZSBjb29raWUuCiAgICBsaXN0ZW4gd2ViX2FwcGwgMC4wLjAuMDo4MAogICAgICAgIG1vZGUgaHR0cAogICAgICAgIGNvb2tpZSBTRVJWRVJJRCBpbnNlcnQgbm9jYWNoZSBpbmRpcmVjdAogICAgICAgIGJhbGFuY2Ugcm91bmRyb2JpbgogICAgICAgIHNlcnZlciB3ZWIxIDE5Mi4xNjguMS4xOjgwIGNvb2tpZSBzZXJ2ZXIwMSBjaGVjawogICAgICAgIHNlcnZlciB3ZWIyIDE5Mi4xNjguMS4yOjgwIGNvb2tpZSBzZXJ2ZXIwMiBjaGVjawoKIyBpZGVtIGF2ZWMgc2VydmV1ciBhcHBsaWNhdGlmIGRlIHNlY291cnMgc3VyIGF1dHJlIHNpdGUsIGV0IHNlcnZldXIgZGUgcGFnZXMgZCdlcnJldXJzCiAgICBsaXN0ZW4gd2ViX2FwcGwgMC4wLjAuMDo4MAogICAgICAgIG1vZGUgaHR0cAogICAgICAgIGNvb2tpZSBTRVJWRVJJRCBpbnNlcnQgbm9jYWNoZSBpbmRpcmVjdAogICAgICAgIGJhbGFuY2Ugcm91bmRyb2JpbgogICAgICAgIHNlcnZlciB3ZWIxIDE5Mi4xNjguMS4xOjgwIGNvb2tpZSBzZXJ2ZXIwMSBjaGVjawogICAgICAgIHNlcnZlciB3ZWIyIDE5Mi4xNjguMS4yOjgwIGNvb2tpZSBzZXJ2ZXIwMiBjaGVjawogICAgICAgIHNlcnZlciB3ZWItYmFja3VwIDE5Mi4xNjguMi4xOjgwIGNvb2tpZSBzZXJ2ZXIwMyBjaGVjayBiYWNrdXAKICAgICAgICBzZXJ2ZXIgd2ViLWV4Y3VzZSAxOTIuMTY4LjMuMTo4MCBjaGVjayBiYWNrdXAKCiMgcmVsYXlhZ2UgU01UUCtUTFMgYXZlYyB0ZXN0IGR1IHNlcnZldXIgZXQgc2VydmV1ciBkZSBiYWNrdXAKCiAgICBsaXN0ZW4gaHR0cF9wcm94eSA6MjUsOjU4NwogICAgICAgIG1vZGUgdGNwCiAgICAgICAgYmFsYW5jZSByb3VuZHJvYmluCiAgICAgICAgc2VydmVyIHNydjEgMTkyLjE2OC4xLjEgY2hlY2sgcG9ydCAyNSBpbnRlciAzMDAwMCByaXNlIDEgZmFsbCAyCiAgICAgICAgc2VydmVyIHNydjIgMTkyLjE2OC4xLjIgYmFja3VwCgojIFV0aWxpc2F0aW9uIGQndW4gZ3JvdXBlIGRlIHNlcnZldXJzIHBvdXIgbGUgYmFja3VwIChu6WNlc3NpdGUgaGFwcm94eSAxLjIuOSkKICAgIGxpc3RlbiBodHRwX3Byb3h5IDAuMC4wLjA6ODAKICAgICAgICBtb2RlIGh0dHAKICAgICAgICBiYWxhbmNlIHJvdW5kcm9iaW4KICAgICAgICBvcHRpb24gaHR0cGNoawogICAgICAgIHNlcnZlciBpbnN0MSAxOTIuMTY4LjEuMTo4MCBjb29raWUgczEgY2hlY2sKICAgICAgICBzZXJ2ZXIgaW5zdDIgMTkyLjE2OC4xLjI6ODAgY29va2llIHMyIGNoZWNrCiAgICAgICAgc2VydmVyIGluc3QzIDE5Mi4xNjguMS4zOjgwIGNvb2tpZSBzMyBjaGVjawogICAgICAgIHNlcnZlciBiYWNrMSAxOTIuMTY4LjEuMTA6ODAgY2hlY2sgYmFja3VwCiAgICAgICAgc2VydmVyIGJhY2syIDE5Mi4xNjguMS4xMTo4MCBjaGVjayBiYWNrdXAKICAgICAgICBvcHRpb24gYWxsYmFja3VwcyAgIyBhbGwgYmFja3VwcyB3aWxsIGJlIHVzZWQKCgozLjIpIFJlY29ubmV4aW9uIHZlcnMgdW4gculwYXJ0aXRldXIgZW4gY2FzIGQn6WNoZWMgZGlyZWN0Ci0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KRW4gbW9kZSBIVFRQLCBzaSB1biBzZXJ2ZXVyIGTpZmluaSBwYXIgdW4gY29va2llIG5lIHLpcG9uZCBwbHVzLCBsZXMgY2xpZW50cwpzZXJvbnQgZOlmaW5pdGl2ZW1lbnQgYWlndWlsbOlzIGRlc3N1cyDgIGNhdXNlIGRlIGxldXIgY29va2llLCBldCBkZSBjZSBmYWl0LApk6WZpbml0aXZlbWVudCBwcml26XMgZGUgc2VydmljZS4gTGEgc3DpY2lmaWNhdGlvbiBkdSBwYXJhbeh0cmUgJ3JlZGlzcGF0Y2gnCmF1dG9yaXNlIGRhbnMgY2UgY2FzIOAgcmVudm95ZXIgbGVzIGNvbm5leGlvbnMg6WNob3XpZXMgdmVycyBsZSBy6XBhcnRpdGV1cgooZXh0ZXJuZSBvdSBpbnRlcm5lKSBhZmluIGQnYXNzaWduZXIgdW4gbm91dmVhdSBzZXJ2ZXVyIOAgY2VzIGNsaWVudHMuCgpFeGVtcGxlIDoKLS0tLS0tLS0tCiAgICBsaXN0ZW4gaHR0cF9wcm94eSAwLjAuMC4wOjgwCiAgICAgICAgbW9kZSBodHRwCiAgICAgICAgY29va2llIFNFUlZFUklECiAgICAgICAgZGlzcGF0Y2ggMTkyLjE2OC4xLjEwMDo4MAogICAgICAgIHNlcnZlciB3ZWIxIDE5Mi4xNjguMS4xOjgwIGNvb2tpZSBzZXJ2ZXIwMQogICAgICAgIHNlcnZlciB3ZWIyIDE5Mi4xNjguMS4yOjgwIGNvb2tpZSBzZXJ2ZXIwMgogICAgICAgIHJlZGlzcGF0Y2ggIyByZW52b3llciB2ZXJzIGRpc3BhdGNoIHNpIHJlZnVzIGRlIGNvbm5leGlvbi4KClBhciBk6WZhdXQgKGV0IGRhbnMgbGVzIHZlcnNpb25zIDEuMS4xNiBldCBhbnTpcmlldXJlcyksIGxlIHBhcmFt6HRyZQpyZWRpc3BhdGNoIG5lIHMnYXBwbGlxdWUgcXUnYXV4IOljaGVjcyBkZSBjb25uZXhpb24gYXUgc2VydmV1ci4gRGVwdWlzIGxhCnZlcnNpb24gMS4xLjE3LCBpbCBzJ2FwcGxpcXVlIGF1c3NpIGF1eCBjb25uZXhpb25zIGRlc3RpbullcyDgIGRlcyBzZXJ2ZXVycwppZGVudGlmaelzIGNvbW1lIGhvcnMgZCd1c2FnZSBwYXIgbGEgc3VydmVpbGxhbmNlLiBTaSBsJ29uIHNvdWhhaXRlIG1hbGdy6Qp0b3V0IHF1J3VuIGNsaWVudCBkaXNwb3NhbnQgZCd1biBjb29raWUgY29ycmVzcG9uZGFudCDgIHVuIHNlcnZldXIgZOlmZWN0dWV1eAp0ZW50ZSBkZSBzJ3kgY29ubmVjdGVyLCBpbCBmYXV0IHBy6WNpc2VyIGwnb3B0aW9uICJwZXJzaXN0IiA6CgogICAgbGlzdGVuIGh0dHBfcHJveHkgMC4wLjAuMDo4MAogICAgICAgIG1vZGUgaHR0cAogICAgICAgIG9wdGlvbiBwZXJzaXN0CiAgICAgICAgY29va2llIFNFUlZFUklECiAgICAgICAgZGlzcGF0Y2ggMTkyLjE2OC4xLjEwMDo4MAogICAgICAgIHNlcnZlciB3ZWIxIDE5Mi4xNjguMS4xOjgwIGNvb2tpZSBzZXJ2ZXIwMQogICAgICAgIHNlcnZlciB3ZWIyIDE5Mi4xNjguMS4yOjgwIGNvb2tpZSBzZXJ2ZXIwMgogICAgICAgIHJlZGlzcGF0Y2ggIyByZW52b3llciB2ZXJzIGRpc3BhdGNoIHNpIHNlcnZldXIgSFMuCgoKMy4zKSBBc3NpZ25hdGlvbiBkZSBwb2lkcyBkaWZm6XJlbnRzIOAgZGVzIHNlcnZldXJzCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpQYXJmb2lzIGlsIGFycml2ZSBkJ2Fqb3V0ZXIgZGUgbm91dmVhdXggc2VydmV1cnMgcG91ciBhY2Nyb+50cmUgbGEgY2FwYWNpdOkKZCd1bmUgZmVybWUgZGUgc2VydmV1ciwgbWFpcyBsZSBub3V2ZWF1IHNlcnZldXIgZXN0IHNvaXQgYmVhdWNvdXAgcGx1cyBwZXRpdApxdWUgbGVzIGF1dHJlcyAoZGFucyBsZSBjYXMgZCd1biBham91dCBkJ3VyZ2VuY2UgZGUgbWF06XJpZWwgZGUgculjdXDpcmF0aW9uKSwKc29pdCBwbHVzIHB1aXNzYW50IChsb3JzIGQndW4gaW52ZXN0aXNzZW1lbnQgZGFucyBkdSBtYXTpcmllbCBuZXVmKS4gUG91ciBjZXR0ZQpyYWlzb24sIGlsIHNlbWJsZSBwYXJmb2lzIGp1ZGljaWV1eCBkZSBwb3V2b2lyIGVudm95ZXIgcGx1cyBkZSBjbGllbnRzIHZlcnMgbGVzCnBsdXMgZ3JvcyBzZXJ2ZXVycy4gSnVzcXUn4CBsYSB2ZXJzaW9uIDEuMi4xMSwgaWwg6XRhaXQgbuljZXNzYWlyZSBkZSBy6XBsaXF1ZXIKcGx1c2lldXJzIGZvaXMgbGVzIGTpZmluaXRpb25zIGRlcyBzZXJ2ZXVycyBwb3VyIGF1Z21lbnRlciBsZXVyIHBvaWRzLiBEZXB1aXMKbGEgdmVyc2lvbiAxLjIuMTIsIGwnb3B0aW9uICd3ZWlnaHQnIGVzdCBkaXNwb25pYmxlLiBIQVByb3h5IGNvbnN0cnVpdCBhbG9ycwp1bmUgdnVlIGRlcyBzZXJ2ZXVycyBkaXNwb25pYmxlcyBsYSBwbHVzIGhvbW9n6G5lIHBvc3NpYmxlIGVuIHNlIGJhc2FudCBzdXIKbGV1ciBwb2lkcyBkZSBzb3J0ZSBxdWUgbGEgY2hhcmdlIHNlIGRpc3RyaWJ1ZSBkZSBsYSBtYW5p6HJlIGxhIHBsdXMgbGlzc2UKcG9zc2libGUuIExlIHBvaWRzIGNvbXByaXMgZW50cmUgMSBldCAyNTYgZG9pdCByZWZs6XRlciBsYSBjYXBhY2l06SBkJ3VuCnNlcnZldXIgcGFyIHJhcHBvcnQgYXV4IGF1dHJlcy4gTGUgcG9pZHMgZGUgMSBkb25uZSBsYSBmculxdWVuY2UgZCdhcHBhcml0aW9uCmxhIHBsdXMgZmFpYmxlLCBldCAyNTYgbGEgZnLpcXVlbmNlIGxhIHBsdXMg6WxldullLiBEZSBjZXR0ZSBtYW5p6HJlLCBzaSB1bgpzZXJ2ZXVyIGRpc3BhcmFpdCwgbGVzIGNhcGFjaXTpcyByZXN0YW50ZXMgc29udCB0b3Vqb3VycyByZXNwZWN06WVzLgoKCkV4ZW1wbGUgOgotLS0tLS0tLS0KIyBkaXN0cmlidXRpb24g6XF1aXRhYmxlIHN1ciAyIG9wdGVyb24gYW5kIHVuIGFuY2llbiBwZW50aXVtMwoKICAgIGxpc3RlbiB3ZWJfYXBwbCAwLjAuMC4wOjgwCiAgICAgICAgbW9kZSBodHRwCiAgICAgICAgY29va2llIFNFUlZFUklEIGluc2VydCBub2NhY2hlIGluZGlyZWN0CiAgICAgICAgYmFsYW5jZSByb3VuZHJvYmluCiAgICAgICAgc2VydmVyIHBlbnRpdW0zLTgwMCAxOTIuMTY4LjEuMTo4MCBjb29raWUgc2VydmVyMDEgd2VpZ2h0ICA4IGNoZWNrCiAgICAgICAgc2VydmVyIG9wdGVyb24tMi4wRyAxOTIuMTY4LjEuMjo4MCBjb29raWUgc2VydmVyMDIgd2VpZ2h0IDIwIGNoZWNrCiAgICAgICAgc2VydmVyIG9wdGVyb24tMi40RyAxOTIuMTY4LjEuMzo4MCBjb29raWUgc2VydmVyMDMgd2VpZ2h0IDI0IGNoZWNrCiAgICAgICAgc2VydmVyIHdlYi1iYWNrdXAxIDE5Mi4xNjguMi4xOjgwIGNvb2tpZSBzZXJ2ZXIwNCBjaGVjayBiYWNrdXAKICAgICAgICBzZXJ2ZXIgd2ViLWV4Y3VzZSAxOTIuMTY4LjMuMTo4MCBjaGVjayBiYWNrdXAKCk5vdGVzIDoKLS0tLS0tLQogIC0gbG9yc3F1ZSBsZSBwb2lkcyBuJ2VzdCBwYXMgc3DpY2lmaeksIGxhIHZhbGV1ciBwYXIgZOlmYXV0IGVzdCDgIDEKCiAgLSBsZSBwb2lkcyBuJ2ltcGFjdGUgcGFzIGxlcyB0ZXN0cyBkZSBmb25jdGlvbm5lbWVudCAoaGVhbHRoIGNoZWNrcyksIGRvbmMgaWwKICAgIGVzdCBwbHVzIHByb3ByZSBkJ3V0aWxpc2VyIGxlcyBwb2lkcyBxdWUgZGUgculwbGlxdWVyIGxlIG3qbWUgc2VydmV1cgogICAgcGx1c2lldXJzIGZvaXMuCgogIC0gbGVzIHBvaWRzIHMnYXBwbGlxdWVudCDpZ2FsZW1lbnQgYXV4IHNlcnZldXJzIGRlIGJhY2t1cCBzaSBsJ29wdGlvbgogICAgJ2FsbGJhY2t1cHMnIGVzdCBwb3NpdGlvbm7pZS4KCiAgLSBsZSBwb2lkcyBzJ2FwcGxpcXVlIGF1c3NpIOAgbGEgculwYXJ0aXRpb24gc2Vsb24gbGEgc291cmNlCiAgICAoJ2JhbGFuY2Ugc291cmNlJykuCgogIC0gcXVlbHMgcXVlIHNvaWVudCBsZXMgcG9pZHMsIGxlIHByZW1pZXIgc2VydmV1ciBzZXJhIHRvdWpvdXJzIGFzc2lnbukgZW4KICAgIHByZW1pZXIuIENldHRlIHLoZ2xlIGZhY2lsaXRlIGxlcyBkaWFnbm9zdGljcy4KCiAgLSBwb3VyIGxlcyBwdXJpc3RlcywgbCdhbGdvcml0aG1lIGRlIGNhbGN1bGF0aW9uIGRlIGxhIHZ1ZSBkZXMgc2VydmV1cnMgZG9ubmUKICAgIHVuZSBwcmlvcml06SBhdXggcHJlbWllcnMgc2VydmV1cnMsIGRvbmMgbGEgdnVlIGVzdCBsYSBwbHVzIHVuaWZvcm1lIHNpIGxlcwogICAgc2VydmV1cnMgc29udCBk6WNsYXLpcyBkYW5zIGwnb3JkcmUgY3JvaXNzYW50IGRlIGxldXJzIHBvaWRzLgoKTGEgZGlzdHJpYnV0aW9uIGR1IHRyYWZpYyBzdWl2cmEgZXhhY3RlbWVudCBsZSBz6XF1ZW5jZW1lbnQgc3VpdmFudCA6CgogICAgICAgIFJlcXVlc3R8ICAgICAgICAgICAgICAgICAgIDEgMSAxIDEKICAgICAgICBudW1iZXIgfCAxIDIgMyA0IDUgNiA3IDggOSAwIDEgMiAzCiAgICAgICAtLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgICAgICBwMy04MDAgfCBYIC4gLiAuIC4gLiAuIFggLiAuIC4gLiAuCiAgICAgICAgb3B0LTIwIHwgLiBYIC4gWCAuIFggLiAuIC4gWCAuIFggLgogICAgICAgIG9wdC0yNCB8IC4gLiBYIC4gWCAuIFggLiBYIC4gWCAuIFgKCgozLjQpIExpbWl0YXRpb24gZHUgbm9tYnJlIGRlIHNlc3Npb25zIGNvbmN1cnJlbnRlcyBwYXIgc2VydmV1cgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpDZXJ0YWlucyBzZXJ2ZXVycyB3ZWIgbXVsdGktcHJvY2Vzc3VzIHRlbHMgcXUnQXBhY2hlIHNvdWZmcmVudCBk6HMgcXUnaWwgeSBhCnRyb3AgZGUgc2Vzc2lvbnMgY29uY3VycmVudGVzLCBwYXJjZSBxdSdpbCBlc3QgdHLocyBjb/t0ZXV4IGRlIGZhaXJlCmZvbmN0aW9ubmVyIGRlcyBjZW50YWluZXMgb3UgZGVzIG1pbGxpZXJzIGRlIHByb2Nlc3N1cyBzdXIgdW4gc3lzdOhtZS4gVW5lCnNvbHV0aW9uIGNvbnNpc3RlIOAgYXVnbWVudGVyIGxlIG5vbWJyZSBkZSBzZXJ2ZXVycyBldCBkZSBy6XBhcnRpciBsYSBjaGFyZ2UKZW50cmUgZXV4LCBtYWlzIGNlbGEgcG9zZSB1biBwcm9ibOhtZSBsb3JzcXVlIGxlIGJ1dCBlc3QgdW5pcXVlbWVudCBkZSBy6XNpc3RlcgrgIGRlcyBwaWNzIGRlIGNoYXJnZSBvY2Nhc2lvbm5lbHMuCgpQb3VyIHLpc291ZHJlIGNlIHByb2Js6G1lLCB1bmUgbm91dmVsbGUgZm9uY3Rpb25uYWxpdOkgYSDpdOkgaW1wbOltZW506WUgZGFucwpIQVByb3h5IDEuMi4xMy4gSWwgcydhZ2l0IGQndW5lIGxpbWl0ZSAibWF4Y29ubiIgcGFyIHNlcnZldXIsIGFzc29jaellIOAgdW5lCmZpbGUgZCdhdHRlbnRlIHBhciBzZXJ2ZXVyIGV0IHBhciBwcm94eS4gQ2VjaSB0cmFuc2Zvcm1lIEhBUHJveHkgZW4gdW4gdGFtcG9uCmVudHJlIGRlcyBtaWxsaWVycyBkZSBjbGllbnRzIGV0IHF1ZWxxdWVzIHNlcnZldXJzLiBEYW5zIGJpZW4gZGVzIGNhcywgbGUgZmFpdApkZSBkaW1pbnVlciBsYSB2YWxldXIgbWF4Y29ubiBhbelsaW9yZXJhIG5vdGFibGVtZW50IGxlcyBwZXJmb3JtYW5jZXMgZGVzCnNlcnZldXJzIGV0IGRpbWludWVyYSBsZXMgdGVtcHMgZGUgculwb25zZSBzaW1wbGVtZW50IHBhcmNlIHF1ZSBsZXMgc2VydmV1cnMKc2Vyb250IG1vaW5zIGNvbmdlc3Rpb25u6XMuCgpRdWFuZCB1bmUgcmVxdep0ZSBjaGVyY2hlIOAgam9pbmRyZSBuJ2ltcG9ydGUgcXVlbCBzZXJ2ZXVyLCBsZSBwcmVtaWVyIHNlcnZldXIKbm9uIHNhdHVy6SBlc3QgdXRpbGlz6SwgZW4gcmVzcGVjdGFudCBsJ2FsZ29yaXRobWUgZGUgculwYXJ0aXRpb24gZGUgY2hhcmdlLiBTaQp0b3VzIGxlcyBzZXJ2ZXVycyBzb250IHNhdHVy6XMsIGFsb3JzIGxhIHJlcXXqdGUgc2VyYSBtaXNlIGRhbnMgbGEgZmlsZQpkJ2F0dGVudGUgZ2xvYmFsZSBkZSBsJ2luc3RhbmNlLiBFbGxlIHNvcnRpcmEgZGUgY2V0dGUgZmlsZSBkJ2F0dGVudGUgbG9yc3F1ZQp0b3V0ZXMgbGVzIHJlcXXqdGVzIHBy6WPpZGVudGVzIGF1cm9udCDpdOkgbGli6XLpZXMgZXQgcXUndW4gc2VydmV1ciBhdXJhIOl06QpsaWLpcukgZCd1bmUgY29ubmV4aW9uIHBvdXIgbGEgdHJhaXRlci4KClNpIHVuZSByZXF16nRlIGZhaXQgculm6XJlbmNlIOAgdW4gc2VydmV1ciBlbiBwYXJ0aWN1bGllciAocC5leDogaGFjaGFnZSBkJ0lQCnNvdXJjZSwgb3UgcGVyc2lzdGFuY2UgcGFyIGNvb2tpZSksIGV0IHF1ZSBjZSBzZXJ2ZXIgZXN0IHNhdHVy6SwgYWxvcnMgbGEKcmVxdep0ZSBzZXJhIG1pc2UgZGFucyBsYSBmaWxlIGQnYXR0ZW50ZSBk6WRp6WUg4CBjZSBzZXJ2ZXVyLiBDZXR0ZSBmaWxlCmQnYXR0ZW50ZSBlc3QgcHJpb3JpdGFpcmUgc3VyIGxhIGZpbGUgZCdhdHRlbnRlIGdsb2JhbGUsIGRlIHNvcnRlIHF1J2lsIHNvaXQKcGx1cyBmYWNpbGUgZCdhdHRlaW5kcmUgbGUgc2l0ZSBwb3VyIGxlcyB1dGlsaXNhdGV1cnMgcXVpIHMneSB0cm91dmVudCBk6WrgCnF1ZSBwb3VyIGxlcyBub3V2ZWF1eCB1dGlsaXNhdGV1cnMuCgpQb3VyIGNlbGEsIGxlcyBsb2dzIG9udCBk+yDqdHJlIGVucmljaGlzIHBvdXIgaW5kaXF1ZXIgbGUgbm9tYnJlIGRlIHNlc3Npb25zCnBhciBzZXJ2ZXVyLCBsYSBwb3NpdGlvbiBkZSBsYSByZXF16nRlIGRhbnMgbGVzIGZpbGVzIGQnYXR0ZW50ZXMsIGV0IGxlIHRlbXBzCnBhc3PpIGVuIGZpbGUgZCdhdHRlbnRlLiBDZWNpIGFpZGUgY29uc2lk6XJhYmxlbWVudCDgIGZhaXJlIGRlIGxhIHBy6XZpc2lvbiBkZQpjYXBhY2l06S4gVm9pciBsYSBzZWN0aW9uICdsb2dzJyBwbHVzIGJhcyBwb3VyIHBsdXMgZCdpbmZvcm1hdGlvbnMuCgpFeGVtcGxlIDoKLS0tLS0tLS0tCiAgICAjIFByZW5kcmUgc29pbiBkdSBQMyBxdWkgbidhIHF1ZSAyNTYgTW8gZGUgUkFNLgogICAgbGlzdGVuIHdlYl9hcHBsIDAuMC4wLjA6ODAKICAgICAgICBtYXhjb25uIDEwMDAwCiAgICAgICAgbW9kZSBodHRwCiAgICAgICAgY29va2llIFNFUlZFUklEIGluc2VydCBub2NhY2hlIGluZGlyZWN0CiAgICAgICAgYmFsYW5jZSByb3VuZHJvYmluCiAgICAgICAgc2VydmVyIHBlbnRpdW0zLTgwMCAxOTIuMTY4LjEuMTo4MCBjb29raWUgczEgd2VpZ2h0ICA4IG1heGNvbm4gMTAwIGNoZWNrCiAgICAgICAgc2VydmVyIG9wdGVyb24tMi4wRyAxOTIuMTY4LjEuMjo4MCBjb29raWUgczIgd2VpZ2h0IDIwIG1heGNvbm4gMzAwIGNoZWNrCiAgICAgICAgc2VydmVyIG9wdGVyb24tMi40RyAxOTIuMTY4LjEuMzo4MCBjb29raWUgczMgd2VpZ2h0IDI0IG1heGNvbm4gMzAwIGNoZWNrCiAgICAgICAgc2VydmVyIHdlYi1iYWNrdXAxIDE5Mi4xNjguMi4xOjgwIGNvb2tpZSBzNCBjaGVjayBtYXhjb25uIDIwMCBiYWNrdXAKICAgICAgICBzZXJ2ZXIgd2ViLWV4Y3VzZSAxOTIuMTY4LjMuMTo4MCBjaGVjayBiYWNrdXAKCkNldHRlIG9wdGlvbiBzZSBtb250cmEgc2kgZWZmaWNhY2UgcG91ciBy6WR1aXJlIGxlcyB0ZW1wcyBkZSBy6XBvbnNlIGRlcwpzZXJ2ZXVycyBxdWUgY2VydGFpbnMgdXRpbGlzYXRldXJzIHZvdWxhaWVudCB1dGlsaXNlciBkZXMgdmFsZXVycyB0cm9wIGJhc3Nlcwpwb3VyIGFt6Wxpb3JlciBsZXMgcGVyZm9ybWFuY2VzIGRlIGxldXJzIHNlcnZldXJzLiBTZXVsZW1lbnQsIGlscyBuJ+l0YWllbnQKYWxvcnMgcGx1cyBlbiBtZXN1cmUgZGUgc3VwcG9ydGVyIGRlIHRy6HMgZm9ydGVzIGNoYXJnZXMgcGFyY2UgcXUnaWwgbifpdGFpdApwbHVzIHBvc3NpYmxlIGRlIGxlcyBzYXR1cmVyLiBQb3VyIGNldHRlIHJhaXNvbiwgbGEgdmVyc2lvbiAxLjIuMTQgYSBhcHBvcnTpIGxhCmxpbWl0YXRpb24gZHluYW1pcXVlIGRlIGNvbm5leGlvbnMgYXZlYyBsJ2FkZGl0aW9uIGR1IHBhcmFt6HRyZSAibWluY29ubiIuCkxvcnNxdWUgY2UgcGFyYW3odHJlIGVzdCBhc3NvY2npIOAgIm1heGNvbm4iLCBpbCBhY3RpdmUgbGEgbGltaXRhdGlvbiBkeW5hbWlxdWUKYmFz6WUgc3VyIGxhIGNoYXJnZSBkZSBsJ2luc3RhbmNlLiBMZSBub21icmUgbWF4aW1hbCBkZSBzZXNzaW9ucyBjb25jdXJyZW50ZXMKc3VyIHVuIHNlcnZldXIgZGV2aWVudCBhbG9ycyBwcm9wb3J0aW9ubmVsIGF1IG5vbWJyZSBkZSBzZXNzaW9ucyBkZSBsJ2luc3RhbmNlCnBhciByYXBwb3J0IOAgc29uICdtYXhjb25uJy4gVW4gbWluaW11bSBkZSA8bWluY29ubj4gc2Vzc2lvbnMgc2VyYSB0b3Vqb3VycwpwZXJtaXMgcXVlbGxlIHF1ZSBzb2l0IGxhIGNoYXJnZS4gQ2VjaSBhc3N1cmVyYSBxdWUgbGVzIHNlcnZldXJzIHRyYXZhaWxsZXJvbnQKYXUgbWVpbGxldXIgZGUgbGV1cnMgcGVyZm9ybWFuY2VzIHNvdXMgZGVzIGNoYXJnZXMgbm9ybWFsZXMsIGV0IHF1J2lscyBzZXJvbnQKdG91dCBkZSBt6m1lIGNhcGFibGVzIGRlIHN1cHBvcnRlciBkZSBmb3J0ZXMgcG9pbnRlcyBsb3JzcXVlIG7pY2Vzc2FpcmUuIExhCmxpbWl0ZSBkeW5hbWlxdWUgZXN0IGNhbGN1bOllIGNvbW1lIGNlY2kgOgoKICAgIHNydi5keW5fbGltaXQgPSBtYXgoc3J2Lm1pbmNvbm4sIHNydi5tYXhjb25uICogaW5zdC5zZXNzIC8gaW5zdC5tYXhjb25uKQoKRXhlbXBsZSA6Ci0tLS0tLS0tLQogICAgIyBQcmVuZHJlIHNvaW4gZHUgUDMgcXVpIG4nYSBxdWUgMjU2IE1vIGRlIFJBTS4KICAgIGxpc3RlbiB3ZWJfYXBwbCAwLjAuMC4wOjgwCiAgICAgICAgbWF4Y29ubiAxMDAwMAogICAgICAgIG1vZGUgaHR0cAogICAgICAgIGNvb2tpZSBTRVJWRVJJRCBpbnNlcnQgbm9jYWNoZSBpbmRpcmVjdAogICAgICAgIGJhbGFuY2Ugcm91bmRyb2JpbgogICAgICAgIHNlcnZlciBwZW50aXVtMy04MDAgMTkyLjE2OC4xLjE6ODAgY29va2llIHMxIHdlaWdodCAgOCBtaW5jb25uIDEwIG1heGNvbm4gMTAwIGNoZWNrCiAgICAgICAgc2VydmVyIG9wdGVyb24tMi4wRyAxOTIuMTY4LjEuMjo4MCBjb29raWUgczIgd2VpZ2h0IDIwIG1pbmNvbm4gMzAgbWF4Y29ubiAzMDAgY2hlY2sKICAgICAgICBzZXJ2ZXIgb3B0ZXJvbi0yLjRHIDE5Mi4xNjguMS4zOjgwIGNvb2tpZSBzMyB3ZWlnaHQgMjQgbWluY29ubiAzMCBtYXhjb25uIDMwMCBjaGVjawogICAgICAgIHNlcnZlciB3ZWItYmFja3VwMSAxOTIuMTY4LjIuMTo4MCBjb29raWUgczQgY2hlY2sgbWF4Y29ubiAyMDAgYmFja3VwCiAgICAgICAgc2VydmVyIHdlYi1leGN1c2UgMTkyLjE2OC4zLjE6ODAgY2hlY2sgYmFja3VwCgpEYW5zIGwnZXhlbXBsZSBjaS1kZXNzdXMsIGxlIHNlcnZldXIgInBlbnRpdW0zLTgwMCcgcmVjZXZyYSBhdSBwbHVzIDEwMApjb25uZXhpb25zIHNpbXVsdGFu6WVzIGxvcnNxdWUgbCdpbnN0YW5jZSBkdSBwcm94eSBlbiBhdHRlaW5kcmEgMTAwMDAsIGV0CnJlY2V2cmEgc2V1bGVtZW50IDEwIGNvbm5leGlvbnMgc2ltdWx0YW7pZXMgdGFudCBxdWUgbGUgcHJveHkgc2VyYSBzb3VzIGxlcyAxMDAwCnNlc3Npb25zLgoKTm90ZXMgOgotLS0tLS0tCiAgLSBsYSByZXF16nRlIG5lIHJlc3RlcmEgcGFzIGluZOlmaW5pbWVudCBlbiBmaWxlIGQnYXR0ZW50ZSwgZWxsZSBlc3QKICAgIGFzc3Vq6XRpZSBhdSBwYXJhbeh0cmUgJ2NvbnRpbWVvdXQnLCBldCBzaSB1bmUgcmVxdep0ZSBuZSBwZXV0IHBhcwogICAgc29ydGlyIGRlIGxhIGZpbGUgYXZhbnQgY2UgdGltZS1vdXQsIHNvaXQgcGFyY2UgcXVlIGxlIHNlcnZldXIgZXN0CiAgICBzYXR1cuksIHNvaXQgcGFyY2UgcXUnaWwgeSBhIHRyb3AgZGUgcmVxdep0ZXMgZW4gZmlsZSBkJ2F0dGVudGUsCiAgICBhbG9ycyBlbGxlIGV4cGlyZXJhIGF2ZWMgdW5lIGVycmV1ciA1MDMuCgogIC0gc2kgc2V1bCA8bWluY29ubj4gZXN0IHNw6WNpZmnpLCBpbCBhIGxlIG3qbWUgZWZmZXQgcXVlIDxtYXhjb25uPgoKICAtIHBvc2l0aW9ubmVyIGRlcyB2YWxldXJzIHRyb3AgYmFzc2VzIHBvdXIgJ21heGNvbm4nIHBldXQgYW3pbGlvcmVyIGxlcwogICAgcGVyZm9ybWFuY2VzIG1haXMgYXVzc2kgcGVybWV0dHJlIOAgZGVzIHV0aWxpc2F0ZXVycyB0cm9wIGxlbnRzIGRlIGJsb3F1ZXIKICAgIHVuIHNlcnZldXIgcG91ciBsZXMgYXV0cmVzIHV0aWxpc2F0ZXVycy4KCgozLjUpIEFiYW5kb24gZGVzIHJlcXXqdGVzIGFib3J06WVzCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KRW4gcHLpc2VuY2UgZGUgdHLocyBmb3J0ZXMgY2hhcmdlcywgbGVzIHNlcnZldXJzIG1ldHRyb250IHVuIGNlcnRhaW4gdGVtcHMg4Apy6XBvbmRyZS4gTGEgZmlsZSBkJ2F0dGVudGUgZHUgcHJveHkgc2UgcmVtcGxpcmEsIGV0IGxlcyB0ZW1wcyBkZSBy6XBvbnNlCnN1aXZyb250IHVuZSBjcm9pc3NhbmNlIHByb3BvcnRpb25uZWxsZSDgIGxhIHRhaWxsZSBkZSBmaWxlIGQnYXR0ZW50ZSBmb2lzCmxlIHRlbXBzIG1veWVuIGRlIHLpcG9uc2UgcGFyIHNlc3Npb24uIExvcnNxdWUgbGVzIGNsaWVudHMgYXR0ZW5kcm9udCBwbHVzIGRlCnF1ZWxxdWVzIHNlY29uZGVzLCBpbHMgY2xpcXVlcm9udCBzb3V2ZW50IHN1ciBsZSBib3V0b24gJ1NUT1AnIGRlIGxldXIKbmF2aWdhdGV1ciwgbGFpc3NhbnQgZGVzIHJlcXXqdGVzIGludXRpbGVzIGVuIGZpbGUgZCdhdHRlbnRlIGV0IHJhbGVudGlzc2FudApkb25jIGxlcyBhdXRyZXMgdXRpbGlzYXRldXJzLgoKQ29tbWUgaWwgbid5IGEgYXVjdW4gbW95ZW4gZGUgZGlzdGluZ3VlciB1biB2cmFpIGNsaWMgc3VyIFNUT1AgZCd1bmUgc2ltcGxlCmZlcm1ldHVyZSBkdSBjYW5hbCBkZSBzb3J0aWUgc3VyIGxlIGNsaWVudCAoc2h1dGRvd24oU0hVVF9XUikpLCBsZXMgYWdlbnRzIEhUVFAKZG9pdmVudCDqdHJlIGNvbnNlcnZhdGV1cnMgZXQgY29uc2lk6XJlciBxdWUgbGUgY2xpZW50IG4nYSBwcm9iYWJsZW1lbnQgZmVybekKcXVlIGxlIGNhbmFsIGRlIHNvcnRpZSBlbiBhdHRlbmRhbnQgbGEgculwb25zZS4gVG91dGVmb2lzLCBjZWNpIGludHJvZHVpdCBkZXMKcmlzcXVlcyBkZSBjb25nZXN0aW9uIGxvcnNxdWUgYmVhdWNvdXAgZCd1dGlsaXNhdGV1cnMgZm9udCBkZSBt6m1lLCBldCBzJ2F26HJlCmF1am91cmQnaHVpIGNvbXBs6HRlbWVudCBpbnV0aWxlIGNhciBwcm9iYWJsZW1lbnQgYXVjdW4gY2xpZW50IG5lIHJlZmVybWUgbGEKc2Vzc2lvbiBlbiBhdHRlbmRhbnQgbGEgculwb25zZS4gQ2VydGFpbnMgYWdlbnRzIEhUVFAgc3VwcG9ydGVudCBjZWNpIChTcXVpZCwKQXBhY2hlLCBIQVByb3h5KSwgZXQgZCdhdXRyZXMgbmUgbGUgc3VwcG9ydGVudCBwYXMgKFRVWCwgZXQgbGEgcGx1cGFydCBkZXMKculwYXJ0aXRldXJzIGRlIGNoYXJnZSBtYXTpcmllbHMpLiBEb25jIGxhIHByb2JhYmlsaXTpIHBvdXIgcXUndW5lIG5vdGlmaWNhdGlvbgpkZSBmZXJtZXR1cmUgZCd1biBjYW5hbCBkJ2VudHLpZSBj9HTpIGNsaWVudCByZXBy6XNlbnRlIHVuIHV0aWxpc2F0ZXVyIGNsaXF1YW50CnN1ciAnU1RPUCcgZXN0IHByb2NoZSBkZSAxMDAlLCBldCBpbCBlc3QgdnJhaW1lbnQgdGVudGFudCBkJ2FiYW5kb25uZXIgbGEKcmVxdep0ZSBwcultYXR1cultZW50IHNhbnMgcG9sbHVlciBsZXMgc2VydmV1cnMuCgpQb3VyIGNldHRlIHJhaXNvbiwgdW5lIG5vdXZlbGxlIG9wdGlvbiAiYWJvcnRvbmNsb3NlIiBhIOl06SBpbnRyb2R1aXRlIGVuCnZlcnNpb24gMS4yLjE0LiBQYXIgZOlmYXV0IChzYW5zIGwnb3B0aW9uKSwgbGUgY29tcG9ydGVtZW50IHJlc3RlIGNvbmZvcm1lIOAKSFRUUC4gTWFpcyBsb3JzcXVlIGwnb3B0aW9uIGVzdCBzcOljaWZp6WUsIHVuZSBzZXNzaW9uIGRvbnQgbGUgY2FuYWwgZW50cmFudAplc3QgZmVybekgc2VyYSBhYm9ydOllIHNpIGNlbGEgZXN0IHBvc3NpYmxlLCBjJ2VzdCDgIGRpcmUgcXVlIGxhIHJlcXXqdGUgZXN0CnNvaXQgZW4gZmlsZSBkJ2F0dGVudGUsIHNvaXQgZW4gdGVudGF0aXZlIGRlIGNvbm5leGlvbi4gQ2VjaSBy6WR1aXQKY29uc2lk6XJhYmxlbWVudCBsYSBsb25ndWV1ciBkZXMgZmlsZXMgZCdhdHRlbnRlcyBldCBsYSBjaGFyZ2Ugc3VyIGxlcyBzZXJ2ZXVycwpzYXR1culzIGxvcnNxdWUgbGVzIHV0aWxpc2F0ZXVycyBzb250IHRlbnTpcyBkZSBjbGlxdWVyIHN1ciAnU1RPUCcsIGNlIHF1aSDgCnNvbiB0b3VyLCBy6WR1aXQgbGVzIHRlbXBzIGRlIHLpcG9uc2UgcG91ciBsZXMgYXV0cmVzIHV0aWxpc2F0ZXVycy4KCkV4ZW1wbGUgOgotLS0tLS0tLS0KICAgIGxpc3RlbiB3ZWJfYXBwbCAwLjAuMC4wOjgwCiAgICAgICAgbWF4Y29ubiAxMDAwMAogICAgICAgIG1vZGUgaHR0cAogICAgICAgIGNvb2tpZSBTRVJWRVJJRCBpbnNlcnQgbm9jYWNoZSBpbmRpcmVjdAogICAgICAgIGJhbGFuY2Ugcm91bmRyb2JpbgogICAgICAgIHNlcnZlciB3ZWIxIDE5Mi4xNjguMS4xOjgwIGNvb2tpZSBzMSB3ZWlnaHQgMTAgbWF4Y29ubiAxMDAgY2hlY2sKICAgICAgICBzZXJ2ZXIgd2ViMiAxOTIuMTY4LjEuMjo4MCBjb29raWUgczIgd2VpZ2h0IDEwIG1heGNvbm4gMTAwIGNoZWNrCiAgICAgICAgc2VydmVyIHdlYjMgMTkyLjE2OC4xLjM6ODAgY29va2llIHMzIHdlaWdodCAxMCBtYXhjb25uIDEwMCBjaGVjawogICAgICAgIHNlcnZlciBiY2sxIDE5Mi4xNjguMi4xOjgwIGNvb2tpZSBzNCBjaGVjayBtYXhjb25uIDIwMCBiYWNrdXAKICAgICAgICBvcHRpb24gYWJvcnRvbmNsb3NlCgoKNCkgRm9uY3Rpb25uYWxpdOlzIGFkZGl0aW9ubmVsbGVzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoKRCdhdXRyZXMgZm9uY3Rpb25uYWxpdOlzIGQndXNhZ2UgbW9pbnMgY291cmFudCBzb250IGRpc3BvbmlibGVzLiBJbCBzJ2FnaXQKcHJpbmNpcGFsZW1lbnQgZHUgbW9kZSB0cmFuc3BhcmVudCwgZGUgbGEgam91cm5hbGlzYXRpb24gZGVzIGNvbm5leGlvbnMsIGRlIGxhCnLp6WNyaXR1cmUgZGVzIGVuLXTqdGVzLCBldCBkdSBzdGF0dXQgc291cyBmb3JtZSBkZSBwYWdlIEhUTUwuCgoKNC4xKSBGb25jdGlvbm5hbGl06XMgculzZWF1Ci0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQo0LjEuMSkgRm9uY3Rpb25uZW1lbnQgZW4gbW9kZSB0cmFuc3BhcmVudAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KRW4gbW9kZSBIVFRQLCBsZSBtb3QgY2zpICd0cmFuc3BhcmVudCcgcGVybWV0IGQnaW50ZXJjZXB0ZXIgZGVzIHNlc3Npb25zCnJvdXTpZXMg4CB0cmF2ZXJzIGxhIG1hY2hpbmUgaOliZXJnZWFudCBsZSBwcm94eS4gRGFucyBjZSBtb2RlLCBvbiBuZSBwculjaXNlCnBhcyBsJ2FkcmVzc2UgZGUgculwYXJ0aXRpb24gJ2Rpc3BhdGNoJywgY2FyIGNlbGxlLWNpIGVzdCB0aXLpZSBkZSBsJ2FkcmVzc2UKZGVzdGluYXRpb24gZGUgbGEgc2Vzc2lvbiBk6XRvdXJu6WUuIExlIHN5c3TobWUgZG9pdCBwZXJtZXR0cmUgZGUgcmVkaXJpZ2VyIGxlcwpwYXF1ZXRzIHZlcnMgdW4gcHJvY2Vzc3VzIGxvY2FsLgoKRXhlbXBsZSA6Ci0tLS0tLS0tLQogICAgbGlzdGVuIGh0dHBfcHJveHkgMC4wLjAuMDo2NTAwMAogICAgICAgIG1vZGUgaHR0cAogICAgICAgIHRyYW5zcGFyZW50CiAgICAgICAgY29va2llIFNFUlZFUklECiAgICAgICAgc2VydmVyIHNlcnZlcjAxIDE5Mi4xNjguMS4xOjgwCiAgICAgICAgc2VydmVyIHNlcnZlcjAyIDE5Mi4xNjguMS4yOjgwCgogICAgIyBpcHRhYmxlcyAtdCBuYXQgLUEgUFJFUk9VVElORyAtaSBldGgwIC1wIHRjcCAtZCAxOTIuMTY4LjEuMTAwIFwKICAgICAgLS1kcG9ydCA4MCAtaiBSRURJUkVDVCAtLXRvLXBvcnRzIDY1MDAwCgpSZW1hcnF1ZSA6Ci0tLS0tLS0tLS0KU2kgbGUgcG9ydCBuJ2VzdCBwYXMgc3DpY2lmaekgc3VyIGxlIHNlcnZldXIsIGMnZXN0IGxlIHBvcnQgYXVxdWVsIHMnZXN0CmFkcmVzc+kgbGUgY2xpZW50IHF1aSBzZXJhIHV0aWxpc+kuIENlbGEgcGVybWV0IGRlIHJlbGF5ZXIgdG91cyBsZXMgcG9ydHMgVENQCmQndW5lIG3qbWUgYWRyZXNzZSBhdmVjIHVuZSBt6m1lIGluc3RhbmNlIGV0IHNhbnMgdXRpbGlzZXIgZGlyZWN0ZW1lbnQgbGUgbW9kZQp0cmFuc3BhcmVudC4KCkV4ZW1wbGUgOgotLS0tLS0tLS0KICAgIGxpc3RlbiBodHRwX3Byb3h5IDAuMC4wLjA6NjUwMDAKICAgICAgICBtb2RlIHRjcAogICAgICAgIHNlcnZlciBzZXJ2ZXIwMSAxOTIuMTY4LjEuMSBjaGVjayBwb3J0IDYwMDAwCiAgICAgICAgc2VydmVyIHNlcnZlcjAyIDE5Mi4xNjguMS4yIGNoZWNrIHBvcnQgNjAwMDAKCiAgICAjIGlwdGFibGVzIC10IG5hdCAtQSBQUkVST1VUSU5HIC1pIGV0aDAgLXAgdGNwIC1kIDE5Mi4xNjguMS4xMDAgXAogICAgICAtaiBSRURJUkVDVCAtLXRvLXBvcnRzIDY1MDAwCgoKNC4xLjIpIENob2l4IGQndW5lIGFkcmVzc2Ugc291cmNlIHBhciBzZXJ2ZXVyCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpBdmVjIGxlcyB2ZXJzaW9ucyAxLjEuMzAgZXQgMS4yLjMsIGlsIGRldmllbnQgcG9zc2libGUgZGUgc3DpY2lmaWVyIHVuZSBhZHJlc3NlCklQIHNvdXJjZSBwb3VyIGpvaW5kcmUgY2hhcXVlIHNlcnZldXIuIEMnZXN0IHV0aWxlIHBvdXIgam9pbmRyZSBkZXMgc2VydmV1cnMgZGUKYmFja3VwIOAgcGFydGlyIGQndW4gTEFOIGRpZmbpcmVudCwgb3UgcG91ciB1dGlsaXNlciBkZXMgY2hlbWlucyBhbHRlcm5hdGlmcwpwb3VyIGpvaW5kcmUgbGUgbeptZSBzZXJ2ZXVyLiBDJ2VzdCDpZ2FsZW1lbnQgdXRpbGlzYWJsZSBwb3VyIGZhY2lsaXRlciB1bmUKculwYXJ0aXRpb24gZGUgY2hhcmdlIHNlbG9uIGwnYWRyZXNzZSBJUCBzb3VyY2UgcG91ciBkZXMgY29ubmV4aW9ucyBzb3J0YW50ZXMuCkJpZW4gZW50ZW5kdSwgbGEgbeptZSBhZHJlc3NlIGVzdCB1dGlsaXPpZSBwb3VyIGxlcyBoZWFsdGgtY2hlY2tzLgoKRXhlbXBsZSA6Ci0tLS0tLS0tLQogICAgIyB1dGlsaXNlciB1bmUgYWRyZXNzZSBwYXJ0aWN1bGnocmUgcG91ciBqb2luZHJlIGxlcyAyIHNlcnZldXIKICAgIGxpc3RlbiBodHRwX3Byb3h5IDAuMC4wLjA6NjUwMDAKICAgICAgIG1vZGUgaHR0cAogICAgICAgYmFsYW5jZSByb3VuZHJvYmluCiAgICAgICBzZXJ2ZXIgc2VydmVyMDEgMTkyLjE2OC4xLjE6ODAgc291cmNlIDE5Mi4xNjguMi4xMwogICAgICAgc2VydmVyIHNlcnZlcjAyIDE5Mi4xNjguMS4yOjgwIHNvdXJjZSAxOTIuMTY4LjIuMTMKCkV4ZW1wbGUgOgotLS0tLS0tLS0KICAgICMgdXRpbGlzZXIgdW5lIGFkcmVzc2UgcGFydGljdWxp6HJlIHBvdXIgam9pbmRyZSBjaGFxdWUgc2VydmV1cgogICAgbGlzdGVuIGh0dHBfcHJveHkgMC4wLjAuMDo2NTAwMAogICAgICAgbW9kZSBodHRwCiAgICAgICBiYWxhbmNlIHJvdW5kcm9iaW4KICAgICAgIHNlcnZlciBzZXJ2ZXIwMSAxOTIuMTY4LjEuMTo4MCBzb3VyY2UgMTkyLjE2OC4xLjEKICAgICAgIHNlcnZlciBzZXJ2ZXIwMiAxOTIuMTY4LjIuMTo4MCBzb3VyY2UgMTkyLjE2OC4yLjEKCkV4ZW1wbGUgOgotLS0tLS0tLS0KICAgICMgZmFpcmUgdW5lIHLpcGFydGl0aW9uIGQnYWRyZXNzZSBzb3VyY2VzIHBvdXIgam9pbmRyZSBsZSBt6m1lIHByb3h5IOAKICAgICMgdHJhdmVycyBkZXV4IGxpZW5zIFdBTiAKICAgIGxpc3RlbiBodHRwX3Byb3h5IDAuMC4wLjA6NjUwMDAKICAgICAgIG1vZGUgaHR0cAogICAgICAgYmFsYW5jZSByb3VuZHJvYmluCiAgICAgICBzZXJ2ZXIgcmVtb3RlLXByb3h5LXdheTEgMTkyLjE2OC4xLjE6MzEyOCBzb3VyY2UgMTkyLjE2OC4yLjEKICAgICAgIHNlcnZlciByZW1vdGUtcHJveHktd2F5MiAxOTIuMTY4LjEuMTozMTI4IHNvdXJjZSAxOTIuMTY4LjMuMQoKRXhlbXBsZSA6Ci0tLS0tLS0tLQogICAgIyBmb3JjZXIgdW5lIGNvbm5leGlvbiBUQ1Ag4CBzJ2F0dGFjaGVyIOAgdW4gcG9ydCBwYXJ0aWN1bGllcgogICAgbGlzdGVuIGh0dHBfcHJveHkgMC4wLjAuMDoyMDAwCiAgICAgICBtb2RlIHRjcAogICAgICAgYmFsYW5jZSByb3VuZHJvYmluCiAgICAgICBzZXJ2ZXIgc3J2MSAxOTIuMTY4LjEuMTo4MCBzb3VyY2UgMTkyLjE2OC4yLjE6MjAKICAgICAgIHNlcnZlciBzcnYyIDE5Mi4xNjguMS4yOjgwIHNvdXJjZSAxOTIuMTY4LjIuMToyMAoKNC4xLjMpIE1haW50aWVuIGRlIHNlc3Npb24gVENQIChrZWVwLWFsaXZlKQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkF2ZWMgbGEgdmVyc2lvbiAxLjIuNywgaWwgZGV2aWVudCBwb3NzaWJsZSBkJ2FjdGl2ZXIgbGUgbWFpbnRpZW4gZGUgc2Vzc2lvbgpUQ1AgKFRDUCBrZWVwLWFsaXZlKSDgIGxhIGZvaXMgY/R06SBjbGllbnQgZXQgY/R06SBzZXJ2ZXVyLiBDZWxhIHBlcm1ldApkJ2VtcOpjaGVyIGRlcyBzZXNzaW9ucyBsb25ndWVzIGQnZXhwaXJlciBzdXIgZGVzIOlxdWlwZW1lbnRzIGRlIG5pdmVhdSA0CmV4dGVybmVzIHRlbHMgcXVlIGRlcyBmaXJld2FsbHMgb3UgZGVzIHLpcGFydGl0ZXVycyBkZSBjaGFyZ2UuIENlbGEgcGVybWV0CmF1c3NpIGF1IHN5c3TobWUgZGUgZOl0ZWN0ZXIgZXQgdGVybWluZXIgZGVzIHNlc3Npb25zIGZpZ+llcyBsb3JzcXUnYXVjdW4KdGltZS1vdXQgbidhIOl06SBwb3NpdGlvbm7pIChmb3J0ZW1lbnQgZOljb25zZWlsbOkpLiBMZSBwcm94eSBuZSBwZXV0IHBhcwpwb3NpdGlvbm5lciBsJ2ludGVydmFsbGUgZW50cmUgbGVzIGFubm9uY2VzIG5pIGxlIG5vbWJyZSBtYXhpbWFsLCB2ZXVpbGxlegp2b3VzIHLpZulyZXIgYXUgbWFudWVsIGR1IHN5c3TobWUgZCdleHBsb2l0YXRpb24gcG91ciBjZWxhLiBJbCBleGlzdGUgMyBvcHRpb25zCnBvdXIgYWN0aXZlciBsZSBtYWludGllbiBkZSBzZXNzaW9uIFRDUCA6CgoJb3B0aW9uIHRjcGthCSMgYWN0aXZlIGxlIGtlZXAtYWxpdmUgY/R06SBjbGllbnQgZXQgY/R06SBzZXJ2ZXVyCglvcHRpb24gY2xpdGNwa2EJIyBhY3RpdmUgbGUga2VlcC1hbGl2ZSBj9HTpIGNsaWVudAoJb3B0aW9uIHNydnRjcGthCSMgYWN0aXZlIGxlIGtlZXAtYWxpdmUgY/R06SBzZXJ2ZXVyCgoKNC4yKSBKb3VybmFsaXNhdGlvbiBkZXMgY29ubmV4aW9ucwotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgpMJ3VuIGRlcyBwb2ludHMgZm9ydHMgZGUgSEFQcm94eSBlc3QgaW5k6W5pYWJsZW1lbnQgbGEgcHLpY2lzaW9uIGRlIHNlcyBsb2dzLgpJbCBmb3Vybml0IHByb2JhYmxlbWVudCBsZSBwbHVzIGZpbiBuaXZlYXUgZCdpbmZvcm1hdGlvbiBkaXNwb25pYmxlIHBvdXIgdW4KdGVsIG91dGlsLCBjZSBxdWkgZXN0IHRy6HMgaW1wb3J0YW50IHBvdXIgbGVzIGRpYWdub3N0aWNzIGVuIGVudmlyb25uZW1lbnRzCmNvbXBsZXhlcy4gRW4gc3RhbmRhcmQsIGxlcyBpbmZvcm1hdGlvbnMgam91cm5hbGlz6WVzIGluY2x1ZW50IGxlIHBvcnQgY2xpZW50LApsZXMgY2hyb25vbel0cmFnZXMgZGVzIOl0YXRzIFRDUC9IVFRQLCBkZXMg6XRhdHMgZGUgc2Vzc2lvbiBwculjaXMgYXUgbW9tZW50IGRlCmxhIHRlcm1pbmFpc29uIGV0IHNhIGNhdXNlLCBkZXMgaW5mb3JtYXRpb25zIHN1ciBsZXMgZOljaXNpb25zIGQnYWlndWlsbGFnZSBkdQp0cmFmaWMgdmVycyB1biBzZXJ2ZXVyLCBldCBiaWVuIHP7ciBsYSBwb3NzaWJpbGl06SBkZSBjYXB0dXJlciBkZXMgZW4tdOp0ZXMKYXJiaXRyYWlyZXMuCgpEYW5zIGxlIGJ1dCBkJ2Ft6Wxpb3JlciBsYSBy6WFjdGl2aXTpIGRlcyBhZG1pbmlzdHJhdGV1cnMsIGlsIG9mZnJlIHVuZSBncmFuZGUKdHJhbnNwYXJlbmNlIHN1ciBsZXMgcHJvYmzobWVzIHJlbmNvbnRy6XMsIOAgbGEgZm9pcyBpbnRlcm5lcyBldCBleHRlcm5lcywgZXQKaWwgZXN0IHBvc3NpYmxlIGQnZW52b3llciBsZXMgbG9ncyB2ZXJzIGRlcyBzZXJ2ZXVycyBkaWZm6XJlbnRzIGVuIG3qbWUgdGVtcHMKYXZlYyBkZXMgbml2ZWF1eCBkZSBmaWx0cmFnZSBkaWZm6XJlbnRzIDoKCiAgLSBsb2dzIGdsb2JhdXggYXUgbml2ZWF1IHByb2Nlc3N1cyAoZXJyZXVycyBzeXN06G1lLCBhcnLqdHMvZOltYXJyYWdlcywgLi4uKQogIC0gZXJyZXVycyBzeXN06G1lIGV0IGludGVybmVzIHBhciBpbnN0YW5jZSAobWFucXVlIGRlIHJlc3NvdXJjZXMsIGJ1Z3MsIC4uLikKICAtIHByb2Js6G1lcyBleHRlcm5lcyBwYXIgaW5zdGFuY2UgKGFycup0cy9yZWxhbmNlIHNlcnZldXJzLCBsaW1pdGVzLCAuLi4pCiAgLSBhY3Rpdml06SBwYXIgaW5zdGFuY2UgKGNvbm5leGlvbnMgY2xpZW50cyksIGF1c3NpIGJpZW4gbG9ycyBkZSBsZXVyCiAgICDpdGFibGlzc2VtZW50IHF1J+AgbGV1ciB0ZXJtaW5haXNvbi4KCkxhIHBvc3NpYmlsaXTpIGRlIGRpc3RyaWJ1ZXIgZGlmZulyZW50cyBuaXZlYXV4IGRlIGxvZ3Mg4CBkaWZm6XJlbnRzIHNlcnZldXJzCnBlcm1ldCDgIHBsdXNpZXVycyDpcXVpcGVzIGRlIHByb2R1Y3Rpb24gZCdpbnTpcmFnaXIgZXQgZGUgY29ycmlnZXIgbGV1cnMKcHJvYmzobWVzIGxlIHBsdXMgdPR0IHBvc3NpYmxlLiBQYXIgZXhlbXBsZSwgbCfpcXVpcGUgc3lzdOhtZSBwZXV0IHN1cnZlaWxsZXIKb2NjYXNpb25uZWxsZW1lbnQgbGVzIGVycmV1cnMgc3lzdOhtZSwgcGVuZGFudCBxdWUgbCfpcXVpcGUgYXBwbGljYXRpb24Kc3VydmVpbGxlIGxlcyBhbGVydGVzIGQnYXJy6nRzL2TpbWFycmFnZXMgZGUgc2VzIHNlcnZldXJzIGVuIHRlbXBzIHLpZWwsIGV0CnF1ZSBsJ+lxdWlwZSBz6WN1cml06SBhbmFseXNlIGwnYWN0aXZpdOkgZW4gZGlmZuly6SBkJ3VuZSBoZXVyZS4KCgo0LjIuMSkgTml2ZWF1eCBkZSBsb2cKLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkxlcyBjb25uZXhpb25zIFRDUCBldCBIVFRQIHBldXZlbnQgZG9ubmVyIGxpZXUg4CB1bmUgam91cm5hbGlzYXRpb24gc29tbWFpcmUgb3UKZOl0YWlsbOllIGluZGlxdWFudCwgcG91ciBjaGFxdWUgY29ubmV4aW9uLCBsYSBkYXRlLCBsJ2hldXJlLCBsJ2FkcmVzc2UgSVAKc291cmNlLCBsZSBzZXJ2ZXVyIGRlc3RpbmF0aW9uLCBsYSBkdXLpZSBkZSBsYSBjb25uZXhpb24sIGxlcyB0ZW1wcyBkZSBy6XBvbnNlLApsYSByZXF16nRlIEhUVFAsIGxlIGNvZGUgZGUgcmV0b3VyLCBsYSBxdWFudGl06SBkZSBkb25u6WVzIHRyYW5zbWlzZXMsIGV0IG3qbWUKZGFucyBjZXJ0YWlucyBjYXMsIGxhIHZhbGV1ciBkJ3VuIGNvb2tpZSBwZXJtZXR0YW50IGRlIHN1aXZyZSBsZXMgc2Vzc2lvbnMuClRvdXMgbGVzIG1lc3NhZ2VzIHNvbnQgZW52b3npcyBlbiBzeXNsb2cgdmVycyB1biBvdSBkZXV4IHNlcnZldXJzLiBTZSBy6WbpcmVyIOAKbGEgc2VjdGlvbiAxLjEgcG91ciBwbHVzIGQnaW5mb3JtYXRpb24gc3VyIGxlcyBjYXTpZ29yaWVzIGRlIGxvZ3MuICBMYSBzeW50YXhlCmVzdCBsYSBzdWl2YW50ZSA6CgogICAgbG9nIDxhZHJlc3NlX2lwXzE+IDxjYXTpZ29yaWVfMT4gW25pdmVhdV9tYXhfMV0KICAgIGxvZyA8YWRyZXNzZV9pcF8yPiA8Y2F06WdvcmllXzI+IFtuaXZlYXVfbWF4XzJdCm91CiAgICBsb2cgZ2xvYmFsCgpSZW1hcnF1ZSA6Ci0tLS0tLS0tLS0KTGEgc3ludGF4ZSBzcOljaWZpcXVlICdsb2cgZ2xvYmFsJyBpbmRpcXVlIHF1ZSBsJ29uIHNvdWhhaXRlIHV0aWxpc2VyIGxlcwpwYXJhbeh0cmVzIGRlIGpvdXJuYWxpc2F0aW9uIGTpZmluaXMgZGFucyBsYSBzZWN0aW9uICdnbG9iYWwnLgoKRXhlbXBsZSA6Ci0tLS0tLS0tLQogICAgbGlzdGVuIGh0dHBfcHJveHkgMC4wLjAuMDo4MAogICAgICAgIG1vZGUgaHR0cAogICAgICAgIGxvZyAxOTIuMTY4LjIuMjAwIGxvY2FsMwogICAgICAgIGxvZyAxOTIuMTY4LjIuMjAxIGxvY2FsNAoKNC4yLjIpIEZvcm1hdCBkZXMgbG9ncwotLS0tLS0tLS0tLS0tLS0tLS0tLS0tClBhciBk6WZhdXQsIGxlcyBjb25uZXhpb25zIHNvbnQgam91cm5hbGlz6WVzIGF1IG5pdmVhdSBUQ1AgZOhzIGwn6XRhYmxpc3NlbWVudApkZSBsYSBzZXNzaW9uIGVudHJlIGxlIGNsaWVudCBldCBsZSByZWxhaXMuIEVuIHBy6WNpc2FudCBsJ29wdGlvbiAndGNwbG9nJywKbGEgY29ubmV4aW9uIG5lIHNlcmEgam91cm5hbGlz6WUgcXUnZW4gZmluIGRlIHNlc3Npb24sIGFqb3V0YW50IGRlcyBwculjaXNpb25zCnN1ciBzb24g6XRhdCBsb3JzIGRlIGxhIGTpY29ubmV4aW9uLCBhaW5zaSBxdWUgbGUgdGVtcHMgZGUgY29ubmV4aW9uIGV0IGxhCmR1cullIHRvdGFsZSBkZSBsYSBzZXNzaW9uLiBMZSBub21icmUgZGUgc2Vzc2lvbnMgcmVzdGFudGVzIGFwcuhzIGxhCmTpY29ubmV4aW9uIGVzdCDpZ2FsZW1lbnQgaW5kaXF16SAocG91ciBsZSBzZXJ2ZXVyLCBsJ2luc3RhbmNlIGV0IGxlIHByb2Nlc3MpLgoKRXhlbXBsZSBkZSBqb3VybmFsaXNhdGlvbiBUQ1AgOgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICBsaXN0ZW4gcmVsYWlzLXRjcCAwLjAuMC4wOjgwMDAKICAgICAgICBtb2RlIHRjcAogICAgICAgIG9wdGlvbiB0Y3Bsb2cKICAgICAgICBsb2cgMTkyLjE2OC4yLjIwMCBsb2NhbDMKCj4+PiBoYXByb3h5WzE4OTg5XTogMTI3LjAuMC4xOjM0NTUwIFsxNS9PY3QvMjAwMzoxNToyNDoyOF0gcmVsYWlzLXRjcCBTcnYxIDAvMC81MDA3IDAgLS0gMS8xLzEgMC8wCiAgCiAgICBDaGFtcCAgRm9ybWF0IC8gRGVzY3JpcHRpb24gICAgICAgICAgICAgICAgICAgICAgICAgIEV4ZW1wbGUKCiAgICAgICAgMSAgbm9tX3Byb2Nlc3N1cyAnWycgcGlkICddOicgICAgICAgICAgICAgICAgICAgIGhhcHJveHlbMTg5ODldOgogICAgICAgIDIgIGlwX2NsaWVudCAnOicgcG9ydF9jbGllbnQgICAgICAgICAgICAgICAgICAgICAxMjcuMC4wLjE6MzQ1NTAKICAgICAgICAzICAnWycgZGF0ZSAnXScgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWzE1L09jdC8yMDAzOjE1OjI0OjI4XQogICAgICAgIDQgIG5vbV9pbnN0YW5jZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWxhaXMtdGNwCiAgICAgICAgNSAgbm9tX3NlcnZldXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNydjEKICAgICAgICA2ICB0ZW1wc19maWxlICcvJyB0ZW1wc19jb25uZWN0ICcvJyB0ZW1wc190b3RhbCAgMC8wLzUwMDcKICAgICAgICA3ICBvY3RldHMgbHVzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMAogICAgICAgIDggIGV0YXRfdGVybWluYWlzb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLQogICAgICAgIDkgIGNvbm5fc3J2ICcvJyBjb25uc19pbnN0ICcvJyBjb25uc19wcm9jZXNzdXMgICAxLzEvMQogICAgICAgMTAgIHBvc2l0aW9uIGVuIGZpbGUgZCdhdHRlbnRlIHNydiAnLycgZ2xvYmFsZSAgICAwLzAKClVuZSBhdXRyZSBvcHRpb24sICdodHRwbG9nJywgZm91cm5pdCBwbHVzIGRlIGTpdGFpbHMgc3VyIGxlIHByb3RvY29sZSBIVFRQLApub3RhbW1lbnQgbGEgcmVxdep0ZSBldCBsJ+l0YXQgZGVzIGNvb2tpZXMuIERhbnMgbGVzIGNhcyBv+SB1biBt6WNhbmlzbWUgZGUKc3VydmVpbGxhbmNlIGVmZmVjdHVhbnQgZGVzIGNvbm5leGlvbnMgZXQgZOljb25uZXhpb25zIGZy6XF1ZW50ZXMsIHBvbGx1ZXJhaXQKbGVzIGxvZ3MsIGlsIHN1ZmZpdCBkJ2Fqb3V0ZXIgbCdvcHRpb24gJ2RvbnRsb2dudWxsJywgcG91ciBuZSBwbHVzIG9idGVuaXIgdW5lCmxpZ25lIGRlIGxvZyBwb3VyIGxlcyBzZXNzaW9ucyBuJ2F5YW50IHBhcyBkb25u6SBsaWV1IOAgdW4g6WNoYW5nZSBkZSBkb25u6WVzCihyZXF16nRlIG91IHLpcG9uc2UpLgoKRXhlbXBsZSBkZSBqb3VybmFsaXNhdGlvbiBIVFRQIDoKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgIGxpc3RlbiBodHRwX3Byb3h5IDAuMC4wLjA6ODAKICAgICAgICBtb2RlIGh0dHAKICAgICAgICBvcHRpb24gaHR0cGxvZwogICAgICAgIG9wdGlvbiBkb250bG9nbnVsbAogICAgICAgIGxvZyAxOTIuMTY4LjIuMjAwIGxvY2FsMwoKPj4+IGhhcHJveHlbNjc0XTogMTI3LjAuMC4xOjMzMzE5IFsxNS9PY3QvMjAwMzowODozMTo1N10gcmVsYWlzLWh0dHAgU3J2MSA5LzAvNy8xNDcvNzIzIDIwMCAyNDMgLSAtIC0tLS0gMi8zLzMgMC8wICJIRUFEIC8gSFRUUC8xLjAiCgpFeGVtcGxlIHBsdXMgY29tcGxldCA6CgogICAgaGFwcm94eVsxODk4OV06IDEwLjAuMC4xOjM0NTUyIFsxNS9PY3QvMjAwMzoxNToyNjozMV0gcmVsYWlzLWh0dHAgU3J2MSAzMTgzLy0xLy0xLy0xLzExMjE1IDUwMyAwIC0gLSBTQy0tIDEzNy8yMDIvMjA1IDAvMCB7dy5vZHMub3JnfE1vemlsbGF9IHt9ICJIRUFEIC8gSFRUUC8xLjAiIAoKICAgIENoYW1wICBGb3JtYXQgLyBEZXNjcmlwdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgRXhlbXBsZQoKICAgICAgICAxICBub21fcHJvY2Vzc3VzICdbJyBwaWQgJ106JyAgICAgICAgICAgICAgICAgICAgaGFwcm94eVsxODk4OV06CiAgICAgICAgMiAgaXBfY2xpZW50ICc6JyBwb3J0X2NsaWVudCAgICAgICAgICAgICAgICAgICAgIDEwLjAuMC4xOjM0NTUyCiAgICAgICAgMyAgJ1snIGRhdGUgJ10nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsxNS9PY3QvMjAwMzoxNToyNjozMV0KICAgICAgICA0ICBub21faW5zdGFuY2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVsYWlzLWh0dHAKICAgICAgICA1ICBub21fc2VydmV1ciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3J2MQogICAgICAgIDYgIFRxICcvJyBUdyAnLycgVGMgJy8nIFRyICcvJyBUdCAgICAgICAgICAgICAgICAzMTgzLy0xLy0xLy0xLzExMjE1CiAgICAgICAgNyAgQ29kZV9yZXRvdXJfSFRUUCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDUwMwogICAgICAgIDggIG9jdGV0cyBsdXMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwCiAgICAgICAgOSAgY29va2llc19yZXF16nRlX2NhcHR1culzICAgICAgICAgICAgICAgICAgICAgIC0KICAgICAgIDEwICBjb29raWVzX3JlcG9uc2VfY2FwdHVy6XMgICAgICAgICAgICAgICAgICAgICAgLQogICAgICAgMTEgIGV0YXRfdGVybWluYWlzb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTQy0tCiAgICAgICAxMiAgY29ubnNfc3J2ICcvJyBjb25uc19pbnN0ICcvJyBjb25uc19wcm9jZXNzdXMgIDEzNy8yMDIvMjA1CiAgICAgICAxMyAgcG9zaXRpb24gZmlsZSBzZXJ2ZXVyICcvJyBnbG9iYWxlICAgICAgICAgICAgIDAvMAogICAgICAgMTQgICd7JyBlbnRldGVzX3JlcXXqdGVfY2FwdHVy6XMgJ30nICAgICAgICAgICAgICB7dy5vZHMub3JnfE1vemlsbGF9CiAgICAgICAxNSAgJ3snIGVudGV0ZXNfcmVwb25zZV9jYXB0dXLpcyAnfScgICAgICAgICAgICAgIHt9CiAgICAgICAxNiAgJyInIHJlcXXqdGVfSFRUUCAnIicgICAgICAgICAgICAgICAgICAgICAgICAgICJIRUFEIC8gSFRUUC8xLjAiCiAgCk5vdGUgcG91ciBsZXMgYW5hbHlzZXVycyBkZSBsb2dzIDogbCdVUkkgZXN0IFRPVUpPVVJTIGxlIGRlcm5pZXIgY2hhbXAgZGUgbGEgbGlnbmUsIGV0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tbWVuY2UgcGFyIHVuIGd1aWxsZW1ldCAnIicuCgpMZSBwcm9ibOhtZSBkZSBsb2d1ZXIgdW5pcXVlbWVudCBlbiBmaW4gZGUgc2Vzc2lvbiwgYydlc3QgcXUnaWwgZXN0IGltcG9zc2libGUKZGUgc2F2b2lyIGNlIHF1aSBzZSBwYXNzZSBkdXJhbnQgZGUgZ3JvcyB0cmFuc2ZlcnRzIG91IGRlcyBzZXNzaW9ucyBsb25ndWVzLgpQb3VyIHBhbGxpZXIg4CBjZSBwcm9ibOhtZSwgdW5lIG5vdXZlbGxlIG9wdGlvbiAnbG9nYXNhcCcgYSDpdOkgaW50cm9kdWl0ZSBkYW5zCmxhIHZlcnNpb24gMS4xLjI4ICgxLjIuMSkuIExvcnNxdSdlbGxlIGVzdCBhY3RpdullLCBsZSBwcm94eSBsb2d1ZXJhIGxlIHBsdXMKdPR0IHBvc3NpYmxlLCBjJ2VzdCDgIGRpcmUganVzdGUgYXZhbnQgcXVlIG5lIGTpYnV0ZW50IGxlcyB0cmFuc2ZlcnRzIGRlCmRvbm7pZXMuIENlbGEgc2lnbmlmaWUsIGRhbnMgbGUgY2FzIGR1IFRDUCwgcXUnaWwgbG9ndWVyYSB0b3Vqb3VycyBsZSBy6XN1bHRhdApkZSBsYSBjb25uZXhpb24gdmVycyBsZSBzZXJ2ZXVyLCBldCBkYW5zIGxlIGNhcyBIVFRQLCBxdSdpbCBsb2d1ZXJhIGVuIGZpbiBkZQp0cmFpdGVtZW50IGRlcyBlbi106nRlcyBkZSBsYSBy6XBvbnNlIGR1IHNlcnZldXIsIGF1cXVlbCBjYXMgbGUgbm9tYnJlIGQnb2N0ZXRzCnJlcHLpc2VudGVyYSBsYSB0YWlsbGUgZGVzIGVuLXTqdGVzIHJldG91cm7pcyBhdSBjbGllbnQuCgpBZmluIGQn6XZpdGVyIHRvdXRlIGNvbmZ1c2lvbiBhdmVjIGxlcyBsb2dzIG5vcm1hdXgsIGxlIHRlbXBzIHRvdGFsIGRlCnRyYW5zZmVydCBldCBsZSBub21icmUgZCdvY3RldHMgdHJhbnNm6XLpcyBzb250IHBy6WZpeOlzIGQndW4gc2lnbmUgJysnCnJhcHBlbGFudCBxdWUgbGVzIHZhbGV1cnMgcullbGxlcyBzb250IGNlcnRhaW5lbWVudCBwbHVzIOlsZXbpZXMuCgpFeGVtcGxlIDoKLS0tLS0tLS0tCgogICAgbGlzdGVuIGh0dHBfcHJveHkgMC4wLjAuMDo4MAogICAgICAgIG1vZGUgaHR0cAogICAgICAgIG9wdGlvbiBodHRwbG9nCiAgICAgICAgb3B0aW9uIGRvbnRsb2dudWxsCiAgICAgICAgb3B0aW9uIGxvZ2FzYXAKICAgICAgICBsb2cgMTkyLjE2OC4yLjIwMCBsb2NhbDMKCj4+PiBoYXByb3h5WzY3NF06IDEyNy4wLjAuMTozMzMyMCBbMTUvT2N0LzIwMDM6MDg6MzI6MTddIHJlbGFpcy1odHRwIFNydjEgOS83LzE0LyszMCAyMDAgKzI0MyAtIC0gLS0tLSAzLzMgIkdFVCAvaW1hZ2UuaXNvIEhUVFAvMS4wIgoKCjQuMi4zKSBDaHJvbm9t6XRyYWdlIGRlcyDpduluZW1lbnRzCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tClBvdXIgZOljZWxlciBkZXMgcHJvYmzobWVzIHLpc2VhdSwgbGVzIG1lc3VyZXMgZHUgdGVtcHMg6WNvdWzpIGVudHJlIGNlcnRhaW5zCul26W5lbWVudHMgc29udCBkJ3VuZSB0cuhzIGdyYW5kZSB1dGlsaXTpLiBUb3VzIGxlcyB0ZW1wcyBzb250IG1lc3Vy6XMgZW4KbWlsbGlzZWNvbmRlcyAobXMpLiBFbiBtb2RlIEhUVFAsIHF1YXRyZSBwb2ludHMgZGUgbWVzdXJlIHNvbnQgcmFwcG9ydOlzIHNvdXMKbGEgZm9ybWUgVHEvVHcvVGMvVHIvVHQgOgoKICAtIFRxOiB0ZW1wcyB0b3RhbCBkZSBy6WNlcHRpb24gZGUgbGEgcmVxdep0ZSBIVFRQIGRlIGxhIHBhcnQgZHUgY2xpZW50LgogICAgQydlc3QgbGUgdGVtcHMgcXVpIHMnZXN0IOljb3Vs6SBlbnRyZSBsZSBtb21lbnQgb/kgbGUgY2xpZW50IGEg6XRhYmxpCiAgICBzYSBjb25uZXhpb24gdmVycyBsZSByZWxhaXMsIGV0IGxlIG1vbWVudCBv+SBjZSBkZXJuaWVyIGEgcmXndSBsZSBkZXJuaWVyCiAgICBlbi106nRlIEhUVFAgdmFsaWRhbnQgbGEgZmluIGRlIGxhIHJlcXXqdGUuIFVuZSB2YWxldXIgJy0xJyBpY2kgaW5kaXF1ZQogICAgcXVlIGxhIHJlcXXqdGUgY29tcGzodGUgbidhIGphbWFpcyDpdOkgcmXndWUuCgogIC0gVHc6IHRlbXBzIHRvdGFsIHBhc3PpIGRhbnMgbGVzIGZpbGVzIGQnYXR0ZW50ZSBhdmFudCBkJ29idGVuaXIgdW5lIHBsYWNlCiAgICB2ZXJzIHVuIHNlcnZldXIuIENlY2kgdGllbnQgY29tcHRlIOAgbGEgZm9pcyBkZSBsYSBmaWxlIGQnYXR0ZW50ZSBnbG9iYWxlCiAgICBldCBkZSBjZWxsZSBkdSBzZXJ2ZXVyLCBldCBk6XBlbmQgZHUgbm9tYnJlIGRlIHJlcXXqdGVzIGRhbnMgbGEgZmlsZSBldCBkdQogICAgdGVtcHMgbuljZXNzYWlyZSBhdSBzZXJ2ZXVyIHBvdXIgY29tcGzpdGVyIGxlcyBzZXNzaW9ucyBwculj6WRlbnRlcy4gTGEKICAgIHZhbGV1ciAnLTEnIGluZGlxdWUgcXVlIGxhIHJlcXXqdGUgYSDpdOkgZOl0cnVpdGUgYXZhbnQgZCdhdHRlaW5kcmUgdW5lCiAgICBmaWxlLgoKICAtIFRjOiB0ZW1wcyBkJ+l0YWJsaXNzZW1lbnQgZGUgbGEgY29ubmV4aW9uIFRDUCBkdSByZWxhaXMgdmVycyBsZSBzZXJ2ZXVyLgogICAgQydlc3QgbGUgdGVtcHMg6WNvdWzpIGVudHJlIGxlIG1vbWVudCBvdSBsZSByZWxhaXMgYSBpbml0aekgbGEgZGVtYW5kZSBkZQogICAgY29ubmV4aW9uIHZlcnMgbGUgc2VydmV1ciwgZXQgbGUgbW9tZW50IG/5IGNlIGRlcm5pZXIgbCdhIGFjcXVpdHTpZSwgYydlc3QKICAgIOAgZGlyZSBsZSB0ZW1wcyBlbnRyZSBsJ2Vudm9pIGR1IHBhcXVldCBUQ1AgU1lOIGxhIHLpY2VwdGlvbiBkdSBTWU4vQUNLLgogICAgVW5lIHZhbGV1ciAnLTEnIGljaSBpbmRpcXVlIHF1ZSBsYSBjb25uZXhpb24gbidhIGphbWFpcyBwdSDqdHJlIOl0YWJsaWUKICAgIHZlcnMgbGUgc2VydmV1ci4KCiAgLSBUcjogdGVtcHMgZGUgculwb25zZSBkdSBzZXJ2ZXVyLiBDJ2VzdCBsZSB0ZW1wcyBxdWUgbGUgc2VydmV1ciBhIG1pcyBwb3VyCiAgICByZW52b3llciBsYSB0b3RhbGl06SBkZXMgZW4tdOp0ZXMgSFRUUCDgIHBhcnRpciBkdSBtb21lbnQgb/kgaWwgYSBhY3F1aXR06QogICAgbGEgY29ubmV4aW9uLiBDYSByZXBy6XNlbnRlIGV4YWN0ZW1lbnQgbGUgdGVtcHMgZGUgdHJhaXRlbWVudCBkZSBsYQogICAgdHJhbnNhY3Rpb24gc2FucyBsZSB0cmFuc2ZlcnQgZGVzIGRvbm7pZXMgYXNzb2Np6WVzLiBVbmUgdmFsZXVyICctMScKICAgIGluZGlxdWUgcXVlIGxlIHNlcnZldXIgbidhIHBhcyBlbnZveekgbGEgdG90YWxpdOkgZGUgbCdlbi106nRlIEhUVFAuCgogIC0gVHQ6IGR1cullIGRlIHZpZSB0b3RhbGUgZGUgbGEgc2Vzc2lvbiwgZW50cmUgbGUgbW9tZW50IG/5IGxhIGRlbWFuZGUgZGUKICAgIGNvbm5leGlvbiBkdSBjbGllbnQgYSDpdOkgYWNxdWl0dOllIGV0IGxlIG1vbWVudCBv+SBsYSBjb25uZXhpb24gYSDpdOkKICAgIHJlZmVybellIGF1eCBkZXV4IGV4dHLpbWl06XMgKGNsaWVudCBldCBzZXJ2ZXVyKS4gTGEgc2lnbmlmaWNhdGlvbiBjaGFuZ2UKICAgIHVuIHBldSBzaSBsJ29wdGlvbiAnbG9nYXNhcCcgZXN0IHBy6XNlbnRlLiBEYW5zIGNlIGNhcywgbGUgdGVtcHMgY29ycmVzcG9uZAogICAgdW5pcXVlbWVudCDgIChUcSArIFR3ICsgVGMgKyBUciksIGV0IHNlIHRyb3V2ZSBwculmaXjpIGQndW4gc2lnbmUgJysnLiBPbgogICAgcGV1dCBkb25jIGTpZHVpcmUgVGQsIGxlIHRlbXBzIGRlIHRyYW5zZmVydCBkZXMgZG9ubullcywgZW4gZXhjbHVhbnQgbGVzCiAgICBhdXRyZXMgdGVtcHMgOgoKICAgICAgICBUZCA9IFR0IC0gKFRxICsgVHcgKyBUYyArIFRyKQoKICAgIExlcyB0ZW1wcyByYXBwb3J06XMg4CAnLTEnIHNvbnQgc2ltcGxlbWVudCDgIOlsaW1pbmVyIGRlIGNldHRlIOlxdWF0aW9uLgoKRW4gbW9kZSBUQ1AgKCdvcHRpb24gdGNwbG9nJyksIHNldWxzIGxlcyBkZXV4IGluZGljYXRldXJzIFR3LCBUYyBldCBUdCBzb250CnJhcHBvcnTpcy4KCkNlcyB0ZW1wcyBmb3Vybmlzc2VudCBkZSBwculjaWV1eCByZW5zZWlnbmVtZW50IHN1ciBkZXMgY2F1c2VzIHByb2JhYmxlcyBkZQpwcm9ibOhtZXMuIER1IGZhaXQgcXVlIGxlIHByb3RvY29sZSBUQ1AgZOlmaW5pc3NlIGRlcyB0ZW1wcyBkZSByZXRyYW5zbWlzc2lvbgpkZSAzIHNlY29uZGVzLCBwdWlzIDYsIDEyLCBldGMuLi4sIGwnb2JzZXJ2YXRpb24gZGUgdGVtcHMgcHJvY2hlcyBkZSBtdWx0aXBsZXMKZGUgMyBzZWNvbmRlcyBpbmRpcXVlIHByYXRpcXVlbWVudCB0b3Vqb3VycyBkZXMgcGVydGVzIGRlIHBhcXVldHMgbGnpcyDgIHVuCnByb2Js6G1lIHLpc2VhdSAoY+JibGUgb3Ugbulnb2NpYXRpb24pLiBEZSBwbHVzLCBzaSA8VHQ+IGVzdCBwcm9jaGUgZCd1bmUKdmFsZXVyIGRlIHRpbWUtb3V0IGRhbnMgbGEgY29uZmlndXJhdGlvbiwgYydlc3Qgc291dmVudCBxdSd1bmUgc2Vzc2lvbiBhIOl06QphYmFuZG9ubullIHN1ciBleHBpcmF0aW9uIGQndW4gdGltZS1vdXQuCgpDYXMgbGVzIHBsdXMgZnLpcXVlbnRzIDoKCiAgLSBTaSBUcSBlc3QgcHJvY2hlIGRlIDMwMDAsIHVuIHBhcXVldCBhIHRy6HMgY2VydGFpbmVtZW50IOl06SBwZXJkdSBlbnRyZQogICAgbGUgY2xpZW50IGV0IGxlIHJlbGFpcy4KICAtIFNpIFRjIGVzdCBwcm9jaGUgZGUgMzAwMCwgdW4gcGFxdWV0IGEgdHLocyBjZXJ0YWluZW1lbnQg6XTpIHBlcmR1IGVudHJlCiAgICBsZSByZWxhaXMgZXQgbGUgc2VydmV1ciBkdXJhbnQgbGEgcGhhc2UgZGUgY29ubmV4aW9uLiBDZXQgaW5kaWNhdGV1cgogICAgZGV2cmFpdCBub3JtYWxlbWVudCB0b3Vqb3VycyDqdHJlIHRy6HMgYmFzIChtb2lucyBkZSBxdWVscXVlcyBkaXphaW5lcykuCiAgLSBTaSBUciBlc3QgcHJlc3F1ZSB0b3Vqb3VycyBpbmbpcmlldXIg4CAzMDAwLCBldCBxdWUgY2VydGFpbmVzIHZhbGV1cnMKICAgIHNlbWJsZW50IHByb2NoZXMgZGUgbGEgdmFsZXVyIG1veWVubmUgbWFqb3LpZSBkZSAzMDAwLCBpbCB5IGEgcGV1dC3qdHJlCiAgICBkZSBwZXJ0ZXMgZW50cmUgbGUgcmVsYWlzIGV0IGxlIHNlcnZldXIuCiAgLSBTaSBUdCBlc3QgbOln6HJlbWVudCBzdXDpcmlldXIgYXUgdGltZS1vdXQsIGMnZXN0IHNvdXZlbnQgcGFyY2UgcXVlIGxlCiAgICBjbGllbnQgZXQgbGUgc2VydmV1ciB1dGlsaXNlbnQgZHUga2VlcC1hbGl2ZSBIVFRQIGVudHJlIGV1eCBldCBxdWUgbGEKICAgIHNlc3Npb24gZXN0IG1haW50ZW51ZSBhcHLocyBsYSBmaW4gZGVzIOljaGFuZ2VzLiBWb2lyIHBsdXMgbG9pbiBwb3VyCiAgICBzYXZvaXIgY29tbWVudCBk6XNhY3RpdmVyIGxlIGtlZXAtYWxpdmUgSFRUUC4KCkF1dHJlcyBjYXMgKCd4eCcgcmVwculzZW50YW50IHVuZSB2YWxldXIgcXVlbGNvbnF1ZSDgIGlnbm9yZXIpIDoKICAtMS94eC94eC94eC9UdDogbGUgY2xpZW50IG4nYSBwYXMgZW52b3npIHNhIHJlcXXqdGUgZGFucyBsZSB0ZW1wcyBpbXBhcnRpIG91CiAgICAgICAgICAgICAgICAgIGEgcmVmZXJt6SBzYSBjb25uZXhpb24gc2FucyBjb21wbOl0ZXIgbGEgcmVxdep0ZS4KICBUcS8tMS94eC94eC9UdDogSWwgbifpdGFpdCBwYXMgcG9zc2libGUgZGUgdHJhaXRlciBsYSByZXF1ZXN0LCBwcm9iYWJsZW1lbnQKICAgICAgICAgICAgICAgICAgcGFyY2UgcXVlIHRvdXMgbGVzIHNlcnZldXJzIOl0YWllbnQgaG9ycyBkJ3VzYWdlLgogIFRxL1R3Ly0xL3h4L1R0OiBsYSBjb25uZXhpb24gbidhIHBhcyBwdSBzJ+l0YWJsaXIgdmVycyBsZSBzZXJ2ZXVyIChyZWZ1cyBvdQogICAgICAgICAgICAgICAgICB0aW1lLW91dCBhdSBib3V0IGRlIFR0LShUcStUdykgbXMpLgogIFRxL1R3L1RjLy0xL1R0OiBsZSBzZXJ2ZXVyIGEgYWNjZXB06SBsYSBjb25uZXhpb24gbWFpcyBuJ2EgcGFzIHLpcG9uZHUgZGFucwogICAgICAgICAgICAgICAgICBsZXMgdGVtcHMgb3UgYmllbiBhIHJlZmVybekgc2EgY29ubmV4aW9uIHRyb3AgdPR0LCBhdSBib3V0CiAgICAgICAgICAgICAgICAgIGRlIFR0LShUcStUdytUYykgbXMuCiAgICAgCjQuMi40KSBDb25kaXRpb25zIGRlIGTpY29ubmV4aW9uCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkxlcyBsb2dzIFRDUCBldCBIVFRQIGZvdXJuaXNzZW50IHVuIGluZGljYXRldXIgZGUgY29tcGzpdHVkZSBkZSBsYSBzZXNzaW9uIGRhbnMKbGUgY2hhbXAgJ2V0YXRfdGVybWluYWlzb24nLCBqdXN0ZSBhdmFudCBsZSBub21icmUgZGUgY29ubmV4aW9ucyBhY3RpdmVzLiBDJ2VzdAp1biBjaGFtcCBsb25nIGRlIDIgY2FyYWN06HJlcyBlbiBUQ1AgZXQgZGUgNCBjYXJhY3TocmVzIGVuIEhUVFAsIGNoYWN1biBheWFudAp1bmUgc2lnbmlmaWNhdGlvbiBwculjaXNlIDoKCiAgLSBzdXIgbGUgcHJlbWllciBjYXJhY3TocmUsIHVuIGNvZGUgcHLpY2lzYW50IGxlIHByZW1pZXIg6XbpbmVtZW50IHF1aSBhIGNhdXPpCiAgICBsYSB0ZXJtaW5haXNvbiBkZSBsYSBzZXNzaW9uIDoKCiAgICAgICAgQyA6IGZlcm1ldHVyZSBpbmF0dGVuZHVlIGRlIGxhIHNlc3Npb24gVENQIGRlIGxhIHBhcnQgZHUgY2xpZW50LgoKICAgICAgICBTIDogZmVybWV0dXJlIGluYXR0ZW5kdWUgZGUgbGEgc2Vzc2lvbiBUQ1AgZGUgbGEgcGFydCBkdSBzZXJ2ZXVyLCBvdQogICAgICAgICAgICByZWZ1cyBleHBsaWNpdGUgZGUgY29ubmV4aW9uIGRlIGxhIHBhcnQgZGUgY2UgZGVybmllci4KCiAgICAgICAgUCA6IHRlcm1pbmFpc29uIHBy6W1hdHVy6WUgZGVzIHNlc3Npb25zIHBhciBsZSBwcm94eSwgcG91ciBjYXVzZQogICAgICAgICAgICBkJ2ltcG9zaXRpb24gZCd1bmUgbGltaXRlIHN1ciBsZSBub21icmUgZGUgY29ubmV4aW9ucywgcG91ciBjYXVzZQogICAgICAgICAgICBkZSBjb25maWd1cmF0aW9uIChleDogZmlsdHJlIGQnVVJMKSwgb3UgcGFyY2UgcXUndW4gY29udHL0bGUgZGUKICAgICAgICAgICAgc+ljdXJpdOkgYSBk6XRlY3TpIGV0IGJsb3F16SB1bmUgYW5vbWFsaWUgZGFucyBsYSBy6XBvbnNlIGR1CiAgICAgICAgICAgIHNlcnZldXIgcXVpIGF1cmFpdCBwdSBjYXVzZXIgdW5lIGZ1aXRlIGQnaW5mb3JtYXRpb25zIChwYXIgZXhlbXBsZSwKICAgICAgICAgICAgdW4gY29va2llIGNhY2hhYmxlKS4KCiAgICAgICAgUiA6IHVuZSByZXNzb3VyY2Ugc3VyIGxlIHByb3h5IGEg6XTpIOlwdWlz6WUgKG3pbW9pcmUsIHNvY2tldHMsIHBvcnRzCiAgICAgICAgICAgIHNvdXJjZSwgLi4uKS4gR+lu6XJhbGVtZW50LCBjZWxhIGFycml2ZSBhdSBjb3VycyBkZSBsJ+l0YWJsaXNzZW1lbnQKICAgICAgICAgICAgZCd1bmUgY29ubmV4aW9uLCBldCBsZXMgbG9ncyBzeXN06G1lIGRvaXZlbnQgY29udGVuaXIgdW5lIGNvcGllIGRlCiAgICAgICAgICAgIGwn6XJyZXVyIHBy6WNpc2UuCgogICAgICAgIEkgOiB1bmUgZXJyZXVyIGludGVybmUgYSDpdOkgaWRlbnRpZmnpZSBwYXIgbGUgcHJveHkg4CBsYSBzdWl0ZSBkJ3VuCiAgICAgICAgICAgIGF1dG8tY29udHL0bGUuIENlY2kgbmUgZG9pdCBKQU1BSVMgYXJyaXZlciwgZXQgdm91cyDqdGVzIGVuY291cmFn6XMKICAgICAgICAgICAg4CByZW1vbnRlciBuJ2ltcG9ydGUgcXVlbCBsb2cgY29udGVuYW50IGNlY2kgY2FyIGlsIHMnYWdpcmEgdW4gYnVnLgoKICAgICAgICBjIDogbGUgZOlsYWkgbWF4aW1hbCBkJ2F0dGVudGUgZHUgY2xpZW50IGEgZXhwaXLpIChjbGl0aW1lb3V0KS4KCiAgICAgICAgcyA6IGxlIGTpbGFpIG1heGltYWwgZCdhdHRlbnRlIGR1IHNlcnZldXIgYSBleHBpcukgKHNydnRpbWVvdXQgZXQgY29udGltZW91dCkKCiAgICAgICAgLSA6IHRlcm1pbmFpc29uIG5vcm1hbGUgZGUgc2Vzc2lvbi4KCiAgLSBzdXIgbGUgc2Vjb25kIGNhcmFjdOhyZSwgbCfpdGF0IGQnYXZhbmNlbWVudCBkZSBsYSBzZXNzaW9uIFRDUC9IVFRQIGxvcnMgZGUKICAgIGxhIGZlcm1ldHVyZSA6CgogICAgICAgIFIgOiBhdHRlbnRlIGQndW5lIFJFUVVFVEUgSFRUUCBjb21wbOh0ZSBkZSBsYSBwYXJ0IGR1IGNsaWVudC4gUmllbiBuJ2EKICAgICAgICAgICAg6XTpIHRyYW5zbWlzIGF1IHNlcnZldXIuCgogICAgICAgIFEgOiBhdHRlbnRlIGVuIGZpbGUgZCdhdHRlbnRlIChRVUVVRSkgZCd1bmUgcGxhY2UgcG91ciBhdm9pciB1bmUKICAgICAgICAgICAgY29ubmV4aW9uIHZlcnMgdW4gc2VydmV1ci4gTmUgcGV1dCBhcHBhcmHudHJlIHF1ZSBzdXIgdW4gc2VydmV1cgogICAgICAgICAgICBwb3Nz6WRhbnQgdW4gcGFyYW3odHJlICdtYXhjb25uJy4gQXVjdW5lIGNvbm5leGlvbiBuJ2Eg6XTpIGVudm956WUKICAgICAgICAgICAgYXUgc2VydmV1ci4KCiAgICAgICAgQyA6IGF0dGVudGUgZGUgbCfpdGFibGlzc2VtZW50IGQndW5lIENPTk5FWElPTiB2ZXJzIGxlIHNlcnZldXIuIExlCiAgICAgICAgICAgIHNlcnZldXIgcGV1dCBhdSBwbHVzIGF2b2lyIHZ1IGxhIHRlbnRhdGl2ZSBkZSBjb25uZXhpb24sIG1haXMKICAgICAgICAgICAgYXVjdW5lIGRvbm7pZSBuJ2Eg6XTpIOljaGFuZ+llLgoKICAgICAgICBIIDogYXR0ZW50ZSwgculjZXB0aW9uIG91IHRyYWl0ZW1lbnQgZGVzIGVuLXTqdGVzIEhUVFAgKCJIRUFERVJTIikuCgogICAgICAgIEQgOiB0cmFuc2ZlcnQgZGVzIERPTk5FRVMgZHUgc2VydmV1ciB2ZXJzIGxlIGNsaWVudC4KCiAgICAgICAgTCA6IHRyYW5zZmVydCBkZXMgZGVybmnocmVzICgiTEFTVCIpIGRvbm7pZXMgZHUgcHJveHkgdmVycyBsZSBjbGllbnQsCiAgICAgICAgICAgIGFsb3JzIHF1ZSBsZSBzZXJ2ZXVyIGEgZOlq4CBmaW5pLgoKICAgICAgICAtIDogdGVybWluYWlzb24gbm9ybWFsZSwgYXBy6HMgZmluIGRlIHRyYW5zZmVydCBkZXMgZG9ubullcy4KCiAgLSBsZSB0cm9pc2nobWUgY2FyYWN06HJlIGluZGlxdWUgbCfpdmVudHVlbGxlIGlkZW50aWZpY2F0aW9uIGQndW4gY29va2llIGRlCiAgICBwZXJzaXN0ZW5jZSAodW5pcXVlbWVudCBlbiBtb2RlIEhUVFApIDoKCiAgICAgICAgTiA6IGF1Y3VuIGNvb2tpZSBkZSBwZXJzaXN0ZW5jZSBuJ2Eg6XTpIHBy6XNlbnTpLiBDJ2VzdCBn6W7pcmFsZW1lbnQgbGUKICAgICAgICAgICAgY2FzIHN1ciBsZXMgTk9VVkVMTEVTIGNvbm5leGlvbnMgY2xpZW50cy4KCiAgICAgICAgSSA6IGxlIGNsaWVudCBhIHBy6XNlbnTpIHVuIGNvb2tpZSBJTlZBTElERSBuZSBjb3JyZXNwb25kYW50IOAgYXVjdW4KICAgICAgICAgICAgc2VydmV1ciBjb25udS4gQ2VjaSBwZXV0IOp0cmUgZPsg4CB1biBjaGFuZ2VtZW50IGRlIGNvbmZpZ3VyYXRpb24KICAgICAgICAgICAgculjZW50LCDgIGRlcyBt6WxhbmdlcyBkZSBub21zIGRlIGNvb2tpZXMgZW50cmUgc2l0ZXMgSFRUUC9IVFRQUywKICAgICAgICAgICAgb3Ug4CB1bmUgYXR0YXF1ZS4KCiAgICAgICAgRCA6IGxlIGNsaWVudCBhIHBy6XNlbnTpIHVuIGNvb2tpZSBjb3JyZXNwb25kYW50IOAgdW4gc2VydmV1ciBob3JzCiAgICAgICAgICAgIGQndXNhZ2UgKCJET1dOIikuIFN1aXZhbnQgbCdvcHRpb24gJ3BlcnNpc3QnLCBpbCBhIOl06SByZW52b3npIHZlcnMKICAgICAgICAgICAgdW4gYXV0cmUgc2VydmV1ciBvdSBhIHRvdXQgZGUgbeptZSB0ZW506SBkZSBzZSBjb25uZWN0ZXIgc3VyIGNlbHVpCiAgICAgICAgICAgIGNvcnJlc3BvbmRhbnQgYXUgY29va2llLgoKICAgICAgICBWIDogbGUgY2xpZW50IGEgcHLpc2VudOkgdW4gY29va2llIFZBTElERSBldCBhIHB1IHNlIGNvbm5lY3RlciBhdQogICAgICAgICAgICBzZXJ2ZXVyIGNvcnJlc3BvbmRhbnQuCgogICAgICAgIC0gOiBub24gYXBwbGlxdWFibGUgKHBhcyBkZSBjb29raWUgcG9zaXRpb25u6SBkYW5zIGxhIGNvbmZpZ3VyYXRpb24pLgoKICAtIGxlIGRlcm5pZXIgY2FyYWN06HJlIGluZGlxdWUgbCfpdmVudHVlbCB0cmFpdGVtZW50IGVmZmVjdHXpIHN1ciB1biBjb29raWUgZGUKICAgIHBlcnNpc3RlbmNlIHJldHJvdXJu6SBwYXIgbGUgc2VydmV1ciAodW5pcXVlbWVudCBlbiBtb2RlIEhUVFApIDoKCiAgICAgICAgTiA6IGF1Y3VuIGNvb2tpZSBkZSBwZXJzaXN0YW5jZSBuJ2Eg6XTpIGZvdXJuaSBwYXIgbGUgc2VydmV1ciwgZXQgYXVjdW4KICAgICAgICAgICAgbidhIOl06SBpbnPpcukuCgogICAgICAgIEkgOiBhdWN1biBjb29raWUgZGUgcGVyc2lzdGFuY2UgbidhIOl06SBmb3VybmkgcGFyIGxlIHNlcnZldXIsIGV0IGxlCiAgICAgICAgICAgIHByb3h5IGVuIGEgSU5TRVJFIHVuLgoKICAgICAgICBQIDogdW4gY29va2llIGRlIHBlcnNpc3RlbmNlIGEg6XTpIGZvdXJuaSBwYXIgbGUgc2VydmV1ciBldCB0cmFuc21pcwogICAgICAgICAgICB0ZWwgcXVlbCAoIlBBU1NJRiIpLgoKICAgICAgICBSIDogbGUgY29va2llIHJldG91cm7pIHBhciBsZSBzZXJ2ZXVyIGEg6XTpIFJFRUNSSVQgcGFyIGxlIHByb3h5LgoKICAgICAgICBEIDogbGUgY29va2llIHBy6XNlbnTpIHBhciBsZSBzZXJ2ZXVyIGEg6XTpIERFVFJVSVQgcGFyIGxlIHByb3h5IHBvdXIKICAgICAgICAgICAgbmUgcGFzIOp0cmUgcmV0b3VybukgYXUgY2xpZW50LgoKICAgICAgICAtIDogbm9uIGFwcGxpcXVhYmxlCgoKTGEgY29tYmluYWlzb24gZGVzIGRldXggcHJlbWllcnMgaW5kaWNhdGV1cnMgZm91cm5pdCB1bmUgZ3JhbmRlIHF1YW50aXRp6QpkJ2luZm9ybWF0aW9ucyBzdXIgY2UgcXVpIHNlIHBhc3NhaXQgbG9yc3F1ZSBsYSBzZXNzaW9uIHMnZXN0IHRlcm1pbullLiBDZWxhCnBldXQgbm90YW1tZW50IGFpZGVyIOAgZOl0ZWN0ZXIgdW5lIHNhdHVyYXRpb24gZGUgc2VydmV1ciwgZGVzIHRyb3VibGVzIHLpc2VhdSwKZGVzIOlwdWlzZW1lbnRzIGRlIHJlc3NvdXJjZXMgc3lzdOhtZSBsb2NhbGVzLCBkZXMgYXR0YXF1ZXMsIGV0Yy4uLgoKTGVzIGNvbWJpbmFpc29ucyBkJ2luZGljYXRldXJzIGxlcyBwbHVzIGZy6XF1ZW50ZXMgc29udCDpbnVt6XLpZXMgaWNpLgoKICAgSW5kaWMgIFJhaXNvbgogICAgICBDUiAgTGUgY2xpZW50IGEgYWJhbmRvbm7pIGF2YW50IGQn6W1ldHRyZSB1bmUgcmVxdep0ZSBjb21wbOh0ZS4gSWwgZXN0CiAgICAgICAgICB0cuhzIHByb2JhYmxlIHF1ZSBsYSByZXF16nRlIGFpdCDpdOkgdGFw6WUg4CBsYSBtYWluIGRhbnMgdW4gY2xpZW50CiAgICAgICAgICB0ZWxuZXQgZXQgYWJvcnTpZSB0cm9wIHT0dC4KCiAgICAgIGNSICBMZSB0ZW1wcyBpbXBhcnRpIGF1IGNsaWVudCBhIGV4cGly6SBhdmFudCBy6WNlcHRpb24gZCd1bmUgcmVxdep0ZQogICAgICAgICAgY29tcGzodGUuIENlY2kgZXN0IHBhcmZvaXMgY2F1c+kgcGFyIHVuIHBhcmFt6HRyZSBUQ1AgTVNTIHRyb3Ag6WxldukKICAgICAgICAgIHN1ciBsZSBjbGllbnQgcG91ciBkZXMgculzZWF1eCBQUFBvRSBzdXIgQURTTCBxdWkgbmUgcGV1dmVudCBwYXMKICAgICAgICAgIHRyYW5zcG9ydGVyIGRlcyBwYXF1ZXRzIGVudGllcnMsIG91IHBhciBkZXMgY2xpZW50cyBxdWkg6W52b2llbnQgZGVzCiAgICAgICAgICByZXF16nRlcyDgIGxhIG1haW4gZXQgbmUgdGFwZW50IHBhcyBhc3NleiB2aXRlLgoKICAgICAgU0MgIExlIHNlcnZldXIgYSBleHBsaWNpdGVtZW50IHJlZnVz6SBsYSBjb25uZXhpb24gKGxlIHByb3h5IGEgcmXndSB1bgogICAgICAgICAgUlNUIFRDUCBvdSB1biBtZXNzYWdlIElDTVAgZW4gcmV0b3VyKS4gRGFucyBjZXJ0YWlucyBjYXMsIGNlbGEgcGV1dAogICAgICAgICAg6nRyZSBsYSBjb3VjaGUgculzZWF1IHF1aSBpbmRpcXVlIGF1IHByb3h5IHF1ZSBsZSBzZXJ2ZXVyIG4nZXN0IHBhcwogICAgICAgICAgam9pZ25hYmxlIChwLmV4OiBwYXMgZGUgcm91dGUsIHBhcyBkZSBy6XBvbnNlIEFSUCBlbiBsb2NhbCwgZXRjLi4uKQoKICAgICAgc0MgIExhIGNvbm5leGlvbiBhdSBzZXJ2ZXVyIG4nYSBwYXMgcHUgcyfpdGFibGlyIGRhbnMgbGUgdGVtcHMgaW1wYXJ0aS4KCiAgICAgIFBDICBMZSBwcm94eSBhIHJlZnVz6SBkJ+l0YWJsaXIgdW5lIGNvbm5leGlvbiBhdSBzZXJ2ZXVyIHBhcmNlIHF1ZSBsZQogICAgICAgICAgbm9tYnJlIGRlIGNvbm5leGlvbnMgYSBhdHRlaW50IGxhIGxpbWl0ZSAnbWF4Y29ubicgKGdsb2JhbCBvdSBkZQogICAgICAgICAgbCdpbnN0YW5jZSkuIExlIHBhcmFt6HRyZSAnbWF4Y29ubicgZGUgbCdpbnN0YW5jZSBwb3VycmFpdCDqdHJlCiAgICAgICAgICBhdWdtZW506SwgdG91dCBjb21tZSBsZSBwYXJhbeh0cmUgJ21heGNvbm4nIGdsb2JhbC4KCiAgICAgIFJDICBVbmUgcmVzc291cmNlIGxvY2FsZSBhIOl06SDpcHVpc+llICht6W1vaXJlLCBzb2NrZXRzLCBwb3J0cyBzb3VyY2UpLAogICAgICAgICAgZW1w6mNoYW50IGxhIGNvbm5leGlvbiBhdSBzZXJ2ZXVyIGRlIHMn6XRhYmxpci4gTGVzIGxvZ3MgZCdlcnJldXJzCiAgICAgICAgICBkaXJvbnQgcHLpY2lz6W1lbnQgY2UgcXVpIG1hbnF1YWl0LiBEYW5zIHRvdXMgbGVzIGNhcywgbGUgc2V1bCByZW3oZGUKICAgICAgICAgIGNvbnNpc3RlIOAgYWZmaW5lciBsZSBwYXJhbel0cmFnZSBzeXN06G1lLgoKICAgICAgY0ggIExlIHRlbXBzIGltcGFydGkgYXUgY2xpZW50IGEgZXhwaXLpIGF1IGNvdXJzIGQndW5lIHJlcXXqdGUgUE9TVC4gQ2VjaQogICAgICAgICAgZXN0IHBhcmZvaXMgY2F1c+kgcGFyIHVuIHBhcmFt6HRyZSBUQ1AgTVNTIHRyb3Ag6Wxldukgc3VyIGxlIGNsaWVudAogICAgICAgICAgcG91ciBkZXMgculzZWF1eCBQUFBvRSBzdXIgQURTTCBxdWkgbmUgcGV1dmVudCBwYXMgdHJhbnNwb3J0ZXIgZGVzCiAgICAgICAgICBwYXF1ZXRzIGVudGllcnMuCgogICAgICBDSCAgTGUgY2xpZW50IGEgYWJhbmRvbm7pIGFsb3JzIHF1J2lsIGF0dGVuZGFpdCB1biBk6WJ1dCBkZSBy6XBvbnNlIGRlIGxhCiAgICAgICAgICBwYXJ0IGR1IHNlcnZldXIuIENlbGEgcGV1dCDqdHJlIGNhdXPpIHBhciBsZSBzZXJ2ZXVyIHF1aSBtZXR0YWl0IHRyb3AKICAgICAgICAgIGRlIHRlbXBzIOAgculwb25kcmUsIG91IHBhciB1biBjbGllbnQgY2xpcXVhbnQgcHLpY2lwaXRhbW1lbnQgc3VyIGxlCiAgICAgICAgICBib3V0b24gJ1N0b3AnLgoKICAgICAgQ1EgIExlIGNsaWVudCBhIGFiYW5kb25u6SBhbG9ycyBxdWUgc2Egc2Vzc2lvbiDpdGFpdCBtaXNlIGVuIGZpbGUKICAgICAgICAgIGQnYXR0ZW50ZSBwb3VyIG9idGVuaXIgdW4gc2VydmV1ciBhdmVjIHN1ZmZpc2FtbWVudCBkZSBjb25uZXhpb25zCiAgICAgICAgICBsaWJyZXMgcG91ciBsJ2FjY2VwdGVyLiBDZWxhIHNpZ25pZmllIHNvaXQgcXVlIGwnZW5zZW1ibGUgZGVzCiAgICAgICAgICBzZXJ2ZXVycyDpdGFpZW50IHNhdHVy6XMsIHNvaXQgcXVlIGxlIHNlcnZldXIgYXNzaWdu6SBhIG1pcyB0cm9wIGRlCiAgICAgICAgICB0ZW1wcyDgIHLpcG9uZHJlLgoKICAgICAgc1EgIExhIHNlc3Npb24gYSBhdHRlbmR1IHRyb3AgbG9uZ3RlbXBzIGVuIGZpbGUgZCdhdHRlbnRlIGV0IGEg6XTpCiAgICAgICAgICBleHBpcullLgoKICAgICAgU0ggIExlIHNlcnZldXIgYSBhYm9ydOkgYnJ1dGFsZW1lbnQgYWxvcnMgcXUnaWwgZGV2YWl0IGVudm95ZXIgc2VzCiAgICAgICAgICBlbi106nRlcy4gRW4gZ+lu6XJhbCwgY2VsYSBpbmRpcXVlIHF1J2lsIGEgY3Jhc2jpLgoKICAgICAgc0ggIExlIHNlcnZldXIgbidhIHBhcyBwdSBy6XBvbmRyZSBkdXJhbnQgbGUgdGVtcHMgaW1wYXJ0aSwgY2UgcXVpIG1vbnRyZQogICAgICAgICAgZGVzIHRyYW5zYWN0aW9ucyB0cm9wIGxvbmd1ZXMsIHByb2JhYmxlbWVudCBjYXVz6WVzIHBhciB1biBiYWNrLWVuZAogICAgICAgICAgc2F0dXLpLiBMZXMgc2V1bGVzIHNvbHV0aW9ucyBzb250IGRlIGNvcnJpZ2VyIGxlIHByb2Js6G1lIHN1cgogICAgICAgICAgbCdhcHBsaWNhdGlvbiwgZCdhY2Nyb+50cmUgbGUgcGFyYW3odHJlICdzcnZ0aW1lb3V0JyBwb3VyIHN1cHBvcnRlcgogICAgICAgICAgZGVzIGF0dGVudGVzIHBsdXMgbG9uZ3VlcyBhdSByaXNxdWUgcXVlIGxlcyBjbGllbnRzIGFiYW5kb25uZW50IOAKICAgICAgICAgIGxldXIgdG91ciwgb3UgYmllbiBkJ2Fqb3V0ZXIgZGVzIHNlcnZldXJzLgogICAgICAKICAgICAgUFIgIExlIHByb3h5IGEgYmxvcXXpIHVuZSByZXF16nRlIGR1IGNsaWVudCwgc29pdCDgIGNhdXNlIGQndW5lIHN5bnRheGUKICAgICAgICAgIEhUVFAgaW52YWxpZGUsIGF1cXVlbCBjYXMgaWwgYSByZW52b3npIHVuZSBlcnJldXIgSFRUUCA0MDAgYXUgY2xpZW50LAogICAgICAgICAgc29pdCDgIGNhdXNlIGQndW5lIHJlcXXqdGUgdmFsaWRhbnQgdW4gZmlsdHJlIGQnaW50ZXJkaWN0aW9uLCBhdXF1ZWwKICAgICAgICAgIGNhcyBsZSBwcm94eSBhIHJlbnZveekgdW5lIGVycmV1ciBIVFRQIDQwMy4KCiAgICAgIFBIICBMZSBwcm94eSBhIGJsb3F16SBsYSBy6XBvbnNlIGR1IHNlcnZldXIgcGFyY2UgcXUnZWxsZSDpdGFpdCBpbnZhbGlkZSwKICAgICAgICAgIGluY29tcGzodGUsIGRhbmdlcmV1c2UgKCdjYWNoZSBjb250cm9sJyksIG91IHBhcmNlIHF1J2VsbGUgdmFsaWRhaXQKICAgICAgICAgIHVuIGZpbHRyZSBkZSBz6WN1cml06S4gRGFucyB0b3VzIGxlcyBjYXMsIHVuZSBlcnJldXIgSFRUUCA1MDIgZXN0CiAgICAgICAgICByZW52b3npZSBhdSBjbGllbnQuCgogICAgICBjRCAgTGUgY2xpZW50IG4nYSBwYXMgbHUgZGUgZG9ubullcyBwZW5kYW50IGxlIHRlbXBzIHF1aSBsdWkg6XRhaXQKICAgICAgICAgIGltcGFydGkuIENlY2kgZXN0IHNvdXZlbnQgY2F1c+kgcGFyIGRlcyBwcm9ibOhtZXMgculzZWF1IGP0dOkgY2xpZW50LgoKICAgICAgQ0QgIExlIGNsaWVudCBhIGFib3J06SBzYSBjb25uZWN0aW9uIGRlIG1hbmnocmUgaW5hdHRlbmR1ZSBwZW5kYW50IGxlCiAgICAgICAgICB0cmFuc2ZlcnQgZGVzIGRvbm7pZXMuIENlY2kgZXN0IHByb3ZvcXXpIHNvaXQgcGFyIGxlIGNyYXNoIGQndW4KICAgICAgICAgIG5hdmlnYXRldXIsIG91IHBhciB1bmUgc2Vzc2lvbiBlbiBIVFRQIGtlZXAtYWxpdmUgZW50cmUgbGUgc2VydmV1cgogICAgICAgICAgZXQgbGUgY2xpZW50IHRlcm1pbullIGVuIHByZW1pZXIgcGFyIGxlIGNsaWVudC4KCiAgICAgIHNEICBMZSBzZXJ2ZXVyIG4nYSByaWVuIGZhaXQgZHVyYW50IGxlIHRlbXBzIGltcGFydGkgcGFyIGxlIHBhcmFt6HRyZQogICAgICAgICAgJ3NydnRpbWVvdXQnLiBDZWNpIGVzdCBzb3V2ZW50IGNhdXPpIHBhciBkZXMgdGltZW91dHMgdHJvcCBjb3VydHMKICAgICAgICAgIHN1ciBkZXMg6XF1aXBlbWVudHMgZGUgbml2ZWF1IDQgKGZpcmV3YWxscywgculwYXJ0aXRldXJzIGRlIGNoYXJnZSkKICAgICAgICAgIHNpdHXpcyBlbnRyZSBsZSBwcm94eSBldCBsZSBzZXJ2ZXVyLgoKNC4yLjUpIENhcmFjdOhyZXMgbm9uLWltcHJpbWFibGVzCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpEZXB1aXMgbGEgdmVyc2lvbiAxLjEuMjksIGxlcyBjYXJhY3TocmVzIG5vbi1pbXByaW1hYmxlcyBuZSBzb250IHBsdXMgZW52b3npcwp0ZWxzIHF1ZWxzIGRhbnMgbGVzIGxpZ25lcyBkZSBsb2dzLCBtYWlzIGluc2NyaXRzIHNvdXMgbGEgZm9ybWUgZGUgZGV1eCBjaGlmZnJlcwpoZXhhZOljaW1hdXgsIHBy6WZpeOlzIGR1IGNhcmFjdOhyZSBkJ+ljaGFwcGVtZW50ICcjJy4gTGVzIHNldWxzIGNhcmFjdOhyZXMKZG9y6W5hdmFudCBsb2d16XMgdGVscyBxdWVscyBzb250IGNvbXByaXMgZW50cmUgMzIgZXQgMTI2LiBCaWVuIOl2aWRlbW1lbnQsIGxlCmNhcmFjdOhyZSBkJ+ljaGFwcGVtZW50ICcjJyBlc3QgbHVpLW3qbWUgZW5jb2TpIGFmaW4gZGUgbGV2ZXIgbCdhbWJpZ3VpdOkuIElsIGVuCmVzdCBkZSBt6m1lIHBvdXIgbGUgY2FyYWN06HJlICciJywgYWluc2kgcXVlIGxlcyBjYXJhY3TocmVzICd7JywgJ3wnIGV0ICd9JyBwb3VyCmxlcyBlbi106nRlcy4KCjQuMi42KSBDYXB0dXJlIGQnZW4tdOp0ZXMgSFRUUCBldCBkZSBjb29raWVzCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkxhIHZlcnNpb24gMS4xLjIzIGEgYXBwb3J06SBsYSBjYXB0dXJlIGRlcyBjb29raWVzLCBldCBsYSB2ZXJzaW9uIDEuMS4yOSBsYQpjYXB0dXJlIGQnZW4tdOp0ZXMuIFRvdXQgY2VjaSBlc3QgZWZmZWN0dekgZW4gdXRpbGlzYW50IGxlIG1vdC1jbOkgJ2NhcHR1cmUnLgoKTGVzIGNhcHR1cmVzIGRlIGNvb2tpZXMgZmFjaWxpdGVudCBsZSBzdWl2aSBldCBsYSByZWNvbnN0aXR1dGlvbiBkJ3VuZSBzZXNzaW9uCnV0aWxpc2F0ZXVyLiBMYSBzeW50YXhlIGVzdCBsYSBzdWl2YW50ZSA6CgogICAgY2FwdHVyZSBjb29raWUgPHBy6WZpeGVfY29va2llPiBsZW4gPGxvbmd1ZXVyX2NhcHR1cmU+CgpDZWNpIGFjdGl2ZXJhIGxhIGNhcHR1cmUgZGUgY29va2llcyDgIGxhIGZvaXMgZGFucyBsZXMgcmVxdep0ZXMgZXQgZGFucyBsZXMKculwb25zZXMuIERlIGNldHRlIG1hbmnocmUsIGlsIGRldmllbnQgZmFjaWxlIGRlIGTpdGVjdGVyIGxvcnNxdSd1biB1dGlsaXNhdGV1cgpiYXNjdWxlIHN1ciB1bmUgbm91dmVsbGUgc2Vzc2lvbiBwYXIgZXhlbXBsZSwgY2FyIGxlIHNlcnZldXIgbHVpIHLpYXNzaWduZXJhIHVuCm5vdXZlYXUgY29va2llLgoKTGUgcHJlbWllciBjb29raWUgZG9udCBsZSBub20gY29tbWVuY2VyYSBwYXIgPHBy6WZpeGVfY29va2llPiBzZXJhIGNhcHR1cuksIGV0CnRyYW5zbWlzIHNvdXMgbGEgZm9ybWUgIk5PTT12YWxldXIiLCBzYW5zIHRvdXRlZm9pcywgZXhj6WRlciA8bG9uZ3VldXJfY2FwdHVyZT4KY2FyYWN06HJlcyAoNjQgYXUgbWF4aW11bSkuIExvcnNxdWUgbGUgbm9tIGR1IGNvb2tpZSBlc3QgZml4ZSBldCBjb25udSwgb24gcGV1dApsZSBzdWZmaXhlciBkdSBzaWduZSAiPSIgcG91ciBzJ2Fzc3VyZXIgcXUnYXVjdW4gYXV0cmUgY29va2llIG5lIHByZW5kcmEgc2EKcGxhY2UgZGFucyBsZXMgbG9ncy4KCkV4ZW1wbGVzIDoKLS0tLS0tLS0tLQogICAgIyBjYXB0dXJlIGR1IHByZW1pZXIgY29va2llIGRvbnQgbGUgbm9tIGNvbW1lbmNlIHBhciAiQVNQU0VTU0lPTiIKICAgIGNhcHR1cmUgY29va2llIEFTUFNFU1NJT04gbGVuIDMyCgogICAgIyBjYXB0dXJlIGR1IHByZW1pZXIgY29va2llIGRvbnQgbGUgbm9tIGVzdCBleGFjdGVtZW50ICJ2Z252aXNpdG9yIgogICAgY2FwdHVyZSBjb29raWUgdmdudmlzaXRvcj0gbGVuIDMyCgpEYW5zIGxlcyBsb2dzLCBsZSBjaGFtcCBwculj6WRhbnQgbCdpbmRpY2F0ZXVyIGRlIGNvbXBs6XR1ZGUgY29udGllbnQgbGUgY29va2llCnBvc2l0aW9ubukgcGFyIGxlIHNlcnZldXIsIHBy6WPpZOkgZHUgY29va2llIHBvc2l0aW9ubukgcGFyIGxlIGNsaWVudC4gQ2hhY3VuCmRlIGNlcyBjaGFtcHMgZXN0IHJlbXBsYWPpIHBhciBsZSBzaWduZSAiLSIgbG9yc3F1J2F1Y3VuIGNvb2tpZSBuJ2VzdCBmb3VybmkKcGFyIGxlIGNsaWVudCBvdSBsZSBzZXJ2ZXVyLCBvdSBsb3JzcXVlIGwnb3B0aW9uIGVzdCBk6XNhY3RpdullLi4KCkxlcyBjYXB0dXJlcyBkJ2VuLXTqdGVzIG9udCB1biBy9GxlIGNvbXBs6HRlbWVudCBkaWZm6XJlbnQuIEVsbGVzIHNvbnQgdXRpbGVzCnBvdXIgc3VpdnJlIHVuIGlkZW50aWZpYW50IGRlIHJlcXXqdGUgZ2xvYmFsZW1lbnQgdW5pcXVlIHBvc2l0aW9ubukgcGFyIHVuCmF1dHJlIHByb3h5IGVuIGFtb250LCBwb3VyIGpvdXJuYWxpc2VyIGxlcyBub21zIGRlIHNlcnZldXJzIHZpcnR1ZWxzLCBsZXMgdHlwZXMKZGUgY2xpZW50cyB3ZWIsIGxhIGxvbmd1ZXVyIGRlcyBQT1NULCBsZXMgJ3JlZmVycmVycycsIGV0Yy4gRGFucyBsYSBy6XBvbnNlLCBvbgpwZXV0IGNoZXJjaGVyIGRlcyBpbmZvcm1hdGlvbnMgcmVsYXRpdmVzIOAgbGEgbG9uZ3VldXIgYW5ub25j6WUgZGUgbGEgculwb25zZSwKbGUgZm9uY3Rpb25uZW1lbnQgYXR0ZW5kdSBkdSBjYWNoZSwgb3UgZW5jb3JlIGxhIGxvY2FsaXNhdGlvbiBkJ3VuIG9iamV0IGVuIGNhcwpkZSByZWRpcmVjdGlvbi4gVG91dCBjb21tZSBwb3VyIGxlcyBjYXB0dXJlcyBkZSBjb29raWVzLCBpbCBlc3QgcG9zc2libGUKZCdpbmNsdXJlIGxlcyBlbi106nRlcyBkZSByZXF16nRlcyBldCBkZSBy6XBvbnNlIHNpbXVsdGFu6W1lbnQuIExhIHN5bnRheGUgZXN0CmxhIHN1aXZhbnRlIDoKCiAgICBjYXB0dXJlIHJlcXVlc3QgIGhlYWRlciA8bm9tPiBsZW4gPGxvbmd1ZXVyIG1heD4KICAgIGNhcHR1cmUgcmVzcG9uc2UgaGVhZGVyIDxub20+IGxlbiA8bG9uZ3VldXIgbWF4PgoKTm90ZTogTGVzIG5vbXMgZCdlbi106nRlcyBuZSBzb250IHBhcyBzZW5zaWJsZXMg4CBsYSBjYXNzZS4KCkV4ZW1wbGVzOgotLS0tLS0tLS0KICAgICMgY29uc2VydmVyIGxlIG5vbSBkdSBzZXJ2ZXVyIHZpcnR1ZWwgYWNj6WTpIHBhciBsZSBjbGllbnQKICAgIGNhcHR1cmUgcmVxdWVzdCAgaGVhZGVyIEhvc3QgbGVuIDIwCiAgICAjIG5vdGVyIGxhIGxvbmd1ZXVyIGRlcyBkb25u6WVzIGVudm956WVzIGRhbnMgdW4gUE9TVAogICAgY2FwdHVyZSByZXF1ZXN0ICBoZWFkZXIgQ29udGVudC1MZW5ndGggbGVuIDEwCgogICAgIyBub3RlciBsZSBmb25jdGlvbm5lbWVudCBhdHRlbmR1IGR1IGNhY2hlIHBhciBsZSBzZXJ2ZXVyCiAgICBjYXB0dXJlIHJlc3BvbnNlIGhlYWRlciBDYWNoZS1Db250cm9sIGxlbiA4CiAgICAjIG5vdGVyIGwnVVJMIGRlIHJlZGlyZWN0aW9uCiAgICBjYXB0dXJlIHJlc3BvbnNlIGhlYWRlciBMb2NhdGlvbiBsZW4gMjAKCkxlcyBlbi106nRlcyBub24gdHJvdXbpcyBzb250IGxvZ3XpcyDgIHZpZGUsIGV0IHNpIHVuIGVuLXTqdGUgYXBwYXJhaXQgcGx1c2lldXJzCmZvaXMsIHNldWxlIGxhIGRlcm5p6HJlIG9jY3VyZW5jZSBzZXJhIGNvbnNlcnbpZS4gTGVzIGVuLXTqdGVzIGRlIHJlcXXqdGUgc29udApyZWdyb3Vw6XMgZW50cmUgZGV1eCBhY2NvbGFkZXMgJ3snIGV0ICd9JyBkYW5zIGwnb3JkcmUgZGUgbGV1ciBk6WNsYXJhdGlvbiwgZXQKY2hhY3VuIHPpcGFy6XMgcGFyIHVuZSBiYXJyZSB2ZXJ0aWNhbGUgJ3wnLCBzYW5zIGF1Y3VuIGVzcGFjZS4gTGVzIGVuLXTqdGVzIGRlCnLpcG9uc2Ugc29udCBwculzZW506XMgZGUgbGEgbeptZSBtYW5p6HJlLCBtYWlzIGFwcuhzIHVuIGVzcGFjZSBzdWl2YW50IGxlIGJsb2MKZCdlbi106nRlIGRlIHJlcXXqdGUuIExlIHRvdXQgcHLpY+hkZSBsYSByZXF16nRlIEhUVFAuIEV4ZW1wbGUgOgoKICBDb25maWc6CgogICAgY2FwdHVyZSByZXF1ZXN0ICBoZWFkZXIgSG9zdCBsZW4gMjAKICAgIGNhcHR1cmUgcmVxdWVzdCAgaGVhZGVyIENvbnRlbnQtTGVuZ3RoIGxlbiAxMAogICAgY2FwdHVyZSByZXF1ZXN0ICBoZWFkZXIgUmVmZXJlciBsZW4gMjAKICAgIGNhcHR1cmUgcmVzcG9uc2UgaGVhZGVyIFNlcnZlciBsZW4gMjAKICAgIGNhcHR1cmUgcmVzcG9uc2UgaGVhZGVyIENvbnRlbnQtTGVuZ3RoIGxlbiAxMAogICAgY2FwdHVyZSByZXNwb25zZSBoZWFkZXIgQ2FjaGUtQ29udHJvbCBsZW4gOAogICAgY2FwdHVyZSByZXNwb25zZSBoZWFkZXIgVmlhIGxlbiAyMAogICAgY2FwdHVyZSByZXNwb25zZSBoZWFkZXIgTG9jYXRpb24gbGVuIDIwCgogIExvZyA6CgogICAgQXVnICA5IDIwOjI2OjA5IGxvY2FsaG9zdCBoYXByb3h5WzIwMjJdOiAxMjcuMC4wLjE6MzQwMTQgWzA5L0F1Zy8yMDA0OjIwOjI2OjA5XSByZWxhaXMtaHR0cCBuZXRjYWNoZSAwLzAvMC8xNjIvKzE2MiAyMDAgKzM1MCAtIC0gLS0tLSAwLzAvMCAwLzAge2ZyLmFkc2VydmVyLnlhaG9vLmNvfHxodHRwOi8vZnIuZjQxNi5tYWlsLn0ge3w4NjR8cHJpdmF0ZXx8fSAiR0VUIGh0dHA6Ly9mci5hZHNlcnZlci55YWhvby5jb20vIgogICAgQXVnICA5IDIwOjMwOjQ2IGxvY2FsaG9zdCBoYXByb3h5WzIwMjJdOiAxMjcuMC4wLjE6MzQwMjAgWzA5L0F1Zy8yMDA0OjIwOjMwOjQ2XSByZWxhaXMtaHR0cCBuZXRjYWNoZSAwLzAvMC8xODIvKzE4MiAyMDAgKzI3OSAtIC0gLS0tLSAwLzAvMCAwLzAge3cub2RzLm9yZ3x8fSB7Rm9ybWlsdXgvMC4xLjh8MzQ5NXx8fH0gIkdFVCBodHRwOi8vdy5vZHMub3JnL3N5dGFkaW4uaHRtbCBIVFRQLzEuMSIgCiAgICBBdWcgIDkgMjA6MzA6NDYgbG9jYWxob3N0IGhhcHJveHlbMjAyMl06IDEyNy4wLjAuMTozNDAyOCBbMDkvQXVnLzIwMDQ6MjA6MzA6NDZdIHJlbGFpcy1odHRwIG5ldGNhY2hlIDAvMC8yLzEyNi8rMTI4IDIwMCArMjIzIC0gLSAtLS0tIDAvMC8wIDAvMCB7d3d3LmluZm90cmFmaWMuY29tfHxodHRwOi8vdy5vZHMub3JnL3N5dH0ge0FwYWNoZS8yLjAuNDAgKFJlZCBIfDkwNjh8fHx9ICJHRVQgaHR0cDovL3d3dy5pbmZvdHJhZmljLmNvbS9pbWFnZXMvbGl2ZS9jYXJ0ZXNpZGYvZ3JhbmRlcy9pZGZfbmUucG5nIEhUVFAvMS4xIiAKCjQuMi43KSBFeGVtcGxlcyBkZSBsb2dzCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gaGFwcm94eVs2NzRdOiAxMjcuMC4wLjE6MzMzMTkgWzE1L09jdC8yMDAzOjA4OjMxOjU3XSByZWxhaXMtaHR0cCBTcnYxIDY1NTkvMC83LzE0Ny82NzIzIDIwMCAyNDMgLSAtIC0tLS0gMS8zLzUgIDAvMCJIRUFEIC8gSFRUUC8xLjAiCiAgPT4gcmVxdep0ZSBsb25ndWUgKDYuNXMpIHNhaXNpZSDgIGxhIG1haW4gYXZlYyB1biBjbGllbnQgdGVsbmV0LiBMZSBzZXJ2ZXVyIGEKICAgICBy6XBvbmR1IGVuIDE0NyBtcyBldCBsYSBzZXNzaW9uIHMnZXN0IHRlcm1pbullIG5vcm1hbGVtZW50ICgnLS0tLScpCgotIGhhcHJveHlbNjc0XTogMTI3LjAuMC4xOjMzMzE5IFsxNS9PY3QvMjAwMzowODozMTo1N10gcmVsYWlzLWh0dHAgU3J2MSA2NTU5LzEyMzAvNy8xNDcvNjg3MCAyMDAgMjQzIC0gLSAtLS0tIDk5LzIzOS8zMjQgMC85ICJIRUFEIC8gSFRUUC8xLjAiCiAgPT4gSWRlbSwgbWFpcyBsYSByZXF16nRlIGEg6XTpIG1pc2UgZW4gYXR0ZW50ZSBkYW5zIGxhIGZpbGUgZ2xvYmFsZSBkZXJyaehyZQogICAgIDkgYXV0cmVzIHJlcXXqdGVzIGTpauAgcHLpc2VudGVzLCBldCB5IGEgYXR0ZW5kdSAxMjMwIG1zLgoKLSBoYXByb3h5WzY3NF06IDEyNy4wLjAuMTozMzMyMCBbMTUvT2N0LzIwMDM6MDg6MzI6MTddIHJlbGFpcy1odHRwIFNydjEgOS8wLzcvMTQvKzMwIDIwMCArMjQzIC0gLSAtLS0tIDEvMy8zIDAvMCAiR0VUIC9pbWFnZS5pc28gSFRUUC8xLjAiCiAgPT4gcmVxdep0ZSBwb3VyIHVuIGxvbmcgdHJhbnNmZXJ0LiBMJ29wdGlvbiAnbG9nYXNhcCcg6XRhaXQgc3DpY2lmaellIGRvbmMgbGUKICAgICBsb2cgYSDpdOkgZ+lu6XLpIGp1c3RlIGF2YW50IGxlIHRyYW5zZmVydCBkZSBkb25u6WVzLiBMZSBzZXJ2ZXVyIGEgculwb25kdQogICAgIGVuIDE0IG1zLCAyNDMgb2N0ZXRzIGQnZW4tdOp0ZXMgb250IOl06SB0cmFuc2bpculzIGF1IGNsaWVudCwgZXQgbGUgdGVtcHMKICAgICB0b3RhbCBlbnRyZSBsJ2FjY2VwdCgpIGV0IGxlIHByZW1pZXIgb2N0ZXQgZGUgZG9ubullIGVzdCBkZSAzMCBtcy4KCi0gaGFwcm94eVs2NzRdOiAxMjcuMC4wLjE6MzMzMjAgWzE1L09jdC8yMDAzOjA4OjMyOjE3XSByZWxhaXMtaHR0cCBTcnYxIDkvMC83LzE0LzMwIDUwMiAyNDMgLSAtIFBILS0gMC8yLzMgMC8wICJHRVQgL2NnaS1iaW4vYnVnLmNnaT8gSFRUUC8xLjAiCiAgPT4gbGUgcHJveHkgYSBibG9xdekgdW5lIHLpcG9uc2UgZHUgc2VydmV1ciBzb2l0IOAgY2F1c2UgZCd1biBmaWx0cmUgJ3JzcGRlbnknCiAgICAgb3UgJ3JzcGlkZW55Jywgc29pdCBwYXJjZSBxdSdpbCBhIGTpdGVjdOkgdW4gcmlzcXVlIGRlIGZ1aXRlIHNlbnNpYmxlCiAgICAgZCdpbmZvcm1hdGlvbnMgcmlzcXVhbnQgZCfqdHJlIGNhY2jpZXMuIERhbnMgY2UgY2FzLCBsYSBy6XBvbnNlIGVzdAogICAgIHJlbXBsYWPpZSBwYXIgJzUwMiBiYWQgZ2F0ZXdheScuCgotIGhhcHJveHlbMTgxMTNdOiAxMjcuMC4wLjE6MzQ1NDggWzE1L09jdC8yMDAzOjE1OjE4OjU1XSByZWxhaXMtaHR0cCA8Tk9TUlY+IC0xLy0xLy0xLy0xLzg0OTAgLTEgMCAtIC0gQ1ItLSAwLzIvMiAwLzAgIiIgCiAgPT4gTGUgY2xpZW50IG4nYSBwYXMgZW52b3npIHNhIHJlcXXqdGUgZXQgYSByZWZlcm3pIGxhIGNvbm5leGlvbiBsdWktbeptZQogICAgICgnQy0tLScpIGF1IGJvdXQgZGUgOC41cywgYWxvcnMgcXVlIGxlIHJlbGFpcyBhdHRlbmRhaXQgbCdlbi106nRlICgnLVItLScpLgogICAgIEF1Y3VuZSBjb25uZXhpb24gbidhIOl06SBlbnZveellIHZlcnMgbGUgc2VydmV1ci4KCi0gaGFwcm94eVsxODExM106IDEyNy4wLjAuMTozNDU0OSBbMTUvT2N0LzIwMDM6MTU6MTk6MDZdIHJlbGFpcy1odHRwIDxOT1NSVj4gLTEvLTEvLTEvLTEvNTAwMDEgNDA4IDAgLSAtIGNSLS0gMC8yLzIgMC8wICIiIAogID0+IExlIGNsaWVudCBuJ2EgcGFzIGVudm956SBzYSByZXF16nRlIGV0IHNvbiB0aW1lLW91dCBhIGV4cGly6SAoJ2MtLS0nKSBhdQogICAgIGJvdXQgZGUgNTBzLCBhbG9ycyBxdWUgbGUgcmVsYWlzIGF0dGVuZGFpdCBsJ2VuLXTqdGUgKCctUi0tJykuIEF1Y3VuZQogICAgIGNvbm5leGlvbiBuJ2Eg6XTpIGVudm956WUgdmVycyBsZSBzZXJ2ZXVyLCBtYWlzIGxlIHJlbGFpcyBhIHRvdXQgZGUgbeptZQogICAgIHB1IHJlbnZveWVyIHVuIG1lc3NhZ2UgNDA4IGF1IGNsaWVudC4KCi0gaGFwcm94eVsxODk4OV06IDEyNy4wLjAuMTozNDU1MCBbMTUvT2N0LzIwMDM6MTU6MjQ6MjhdIHJlbGFpcy10Y3AgU3J2MSAwLzUwMDcgMCBjRAogID0+IGxvZyBlbiBtb2RlICd0Y3Bsb2cnLiBFeHBpcmF0aW9uIGR1IHRpbWUtb3V0IGP0dOkgY2xpZW50ICgnY0QnKSBhdSBib3V0IGRlCiAgICAgNXMuCgotIGhhcHJveHlbMTg5ODldOiAxMC4wLjAuMTozNDU1MiBbMTUvT2N0LzIwMDM6MTU6MjY6MzFdIHJlbGFpcy1odHRwIFNydjEgMzE4My8tMS8tMS8tMS8xMTIxNSA1MDMgMCAtIC0gU0MtLSAxMTUvMjAyLzIwNSAwLzAgIkhFQUQgLyBIVFRQLzEuMCIgCiAgPT4gTGEgcmVxdep0ZSBjbGllbnQgbWV0IDNzIOAgZW50cmVyIChwZXV0Lep0cmUgdW4gcHJvYmzobWUgculzZWF1KSwgZXQgbGEKICAgICBjb25uZXhpb24gKCdTQy0tJykgdmVycyBsZSBzZXJ2ZXVyIOljaG91ZSBhdSBib3V0IGRlIDQgdGVudGF0aXZlcyBkZSAyCiAgICAgc2Vjb25kZXMgKHJldHJpZXMgMyBkYW5zIGxhIGNvbmYpLCBwdWlzIHVuIGNvZGUgNTAzIGVzdCByZXRvdXJu6SBhdQogICAgIGNsaWVudC4gSWwgeSBhdmFpdCAxMTUgY29ubmV4aW9ucyBzdXIgY2Ugc2VydmV1ciwgMjAyIGNvbm5leGlvbnMgc3VyIGNldHRlCiAgICAgaW5zdGFuY2UsIGV0IDIwNSBzdXIgbCdlbnNlbWJsZSBkZXMgaW5zdGFuY2VzIHBvdXIgY2UgcHJvY2Vzc3VzLiBJbCBlc3QKICAgICBwb3NzaWJsZSBxdWUgbGUgc2VydmV1ciBhaXQgcmVmdXPpIGxhIGNvbm5leGlvbiBwYXJjZSBxdSdpbCB5IGVuIGF2YWl0CiAgICAgZOlq4CB0cm9wIGQn6XRhYmxpZXMuCgoKNC4zKSBNb2RpZmljYXRpb24gZGVzIGVuLXTqdGVzIEhUVFAKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpFbiBtb2RlIEhUVFAgdW5pcXVlbWVudCwgaWwgZXN0IHBvc3NpYmxlIGRlIHJlbXBsYWNlciBjZXJ0YWlucyBlbi106nRlcyBkYW5zIGxhCnJlcXXqdGUgZXQvb3UgbGEgculwb25zZSDgIHBhcnRpciBkJ2V4cHJlc3Npb25zIHLpZ3VsaehyZXMuIElsIGVzdCDpZ2FsZW1lbnQKcG9zc2libGUgZGUgYmxvcXVlciBjZXJ0YWluZXMgcmVxdep0ZXMgZW4gZm9uY3Rpb24gZHUgY29udGVudSBkZXMgZW4tdOp0ZXMgb3UKZGUgbGEgcmVxdep0ZS4gVW5lIGxpbWl0YXRpb24gY2VwZW5kYW50IDogbGVzIGVuLXTqdGVzIGZvdXJuaXMgYXUgbWlsaWV1IGRlCmNvbm5leGlvbnMgcGVyc2lzdGVudGVzIChrZWVwLWFsaXZlKSBuZSBzb250IHBhcyB2dXMgY2FyIGlscyBzb250IGNvbnNpZOly6XMKY29tbWUgZmFpc2FudCBwYXJ0aWUgZGVzIOljaGFuZ2VzIGRlIGRvbm7pZXMgY29uc+ljdXRpZnMg4CBsYSBwcmVtaehyZSByZXF16nRlLgpMZXMgZG9ubullcyBuZSBzb250IHBhcyBhZmZlY3TpZXMsIGNlY2kgbmUgcydhcHBsaXF1ZSBxdSdhdXggZW4tdOp0ZXMuIAoKTGEgc3ludGF4ZSBlc3QgOgogICByZXFhZGQgICAgPHN0cmluZz4gICAgICAgICAgICAgcG91ciBham91dGVyIHVuIGVuLXTqdGUgZGFucyBsYSByZXF16nRlCiAgIHJlcXJlcCAgICA8c2VhcmNoPiA8cmVwbGFjZT4gICBwb3VyIG1vZGlmaWVyIGxhIHJlcXXqdGUKICAgcmVxaXJlcCAgIDxzZWFyY2g+IDxyZXBsYWNlPiAgIGlkZW0gc2FucyBkaXN0aW5jdGlvbiBtYWp1c2N1bGVzL21pbnVzY3VsZXMKICAgcmVxZGVsICAgIDxzZWFyY2g+ICAgICAgICAgICAgIHBvdXIgc3VwcHJpbWVyIHVuIGVuLXTqdGUgZGFucyBsYSByZXF16nRlCiAgIHJlcWlkZWwgICA8c2VhcmNoPiAgICAgICAgICAgICBpZGVtIHNhbnMgZGlzdGluY3Rpb24gbWFqdXNjdWxlcy9taW51c2N1bGVzCiAgIHJlcWFsbG93ICA8c2VhcmNoPiAgICAgICAgICAgICBhdXRvcmlzZXIgbGEgcmVxdep0ZSBzaSB1biBlbi106nRlIHZhbGlkZSA8c2VhcmNoPgogICByZXFpYWxsb3cgPHNlYXJjaD4gICAgICAgICAgICAgaWRlbSBzYW5zIGRpc3RpbmN0aW9uIG1hanVzY3VsZXMvbWludXNjdWxlcwogICByZXFkZW55ICAgPHNlYXJjaD4gICAgICAgICAgICAgaW50ZXJkaXJlIGxhIHJlcXXqdGUgc2kgdW4gZW4tdOp0ZSB2YWxpZGUgPHNlYXJjaD4KICAgcmVxaWRlbnkgIDxzZWFyY2g+ICAgICAgICAgICAgIGlkZW0gc2FucyBkaXN0aW5jdGlvbiBtYWp1c2N1bGVzL21pbnVzY3VsZXMKICAgcmVxcGFzcyAgIDxzZWFyY2g+ICAgICAgICAgICAgIGluaGliZSBjZXMgYWN0aW9ucyBzdXIgbGVzIGVuLXTqdGVzIHZhbGlkYW50IDxzZWFyY2g+CiAgIHJlcWlwYXNzICA8c2VhcmNoPiAgICAgICAgICAgICBpZGVtIHNhbnMgZGlzdGluY3Rpb24gbWFqdXNjdWxlcy9taW51c2N1bGVzCgogICByc3BhZGQgICA8c3RyaW5nPiAgICAgICAgICAgICAgcG91ciBham91dGVyIHVuIGVuLXTqdGUgZGFucyBsYSBy6XBvbnNlCiAgIHJzcHJlcCAgIDxzZWFyY2g+IDxyZXBsYWNlPiAgICBwb3VyIG1vZGlmaWVyIGxhIHLpcG9uc2UKICAgcnNwaXJlcCAgPHNlYXJjaD4gPHJlcGxhY2U+ICAgIGlkZW0gc2FucyBkaXN0aW5jdGlvbiBtYWp1c2N1bGVzL21pbnVzY3VsZXMKICAgcnNwZGVsICAgPHNlYXJjaD4gICAgICAgICAgICAgIHBvdXIgc3VwcHJpbWVyIHVuIGVuLXTqdGUgZGFucyBsYSBy6XBvbnNlCiAgIHJzcGlkZWwgIDxzZWFyY2g+ICAgICAgICAgICAgICBpZGVtIHNhbnMgZGlzdGluY3Rpb24gbWFqdXNjdWxlcy9taW51c2N1bGVzCiAgIHJzcGRlbnkgIDxzZWFyY2g+ICAgICAgICAgICAgICByZW1wbGFjZSBsYSBy6XBvbnNlIHBhciB1biBIVFRQIDUwMiBzaSB1bgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW4tdOp0ZSB2YWxpZGUgPHNlYXJjaD4KICAgcnNwaWRlbnkgPHNlYXJjaD4gICAgICAgICAgICAgIGlkZW0gc2FucyBkaXN0aW5jdGlvbiBtYWp1c2N1bGVzL21pbnVzY3VsZXMKCgo8c2VhcmNoPiBlc3QgdW5lIGV4cHJlc3Npb24gculndWxp6HJlIGNvbXBhdGlibGUgUE9TSVggcmVnZXhwIHN1cHBvcnRhbnQgbGUKZ3JvdXBhZ2UgcGFyIHBhcmVudGjoc2VzIChzYW5zIGxlcyAnXCcpLiBMZXMgZXNwYWNlcyBldCBhdXRyZXMgc+lwYXJhdGV1cnMKZG9pdmVudCDqdHJlcyBwculj6WTpcyBkJ3VuICdcJyBwb3VyIG5lIHBhcyDqdHJlIGNvbmZvbmR1cyBhdmVjIGxhIGZpbiBkZSBsYQpjaGHubmUuIERlIHBsdXMsIGNlcnRhaW5zIGNhcmFjdOhyZXMgc3DpY2lhdXggcGV1dmVudCDqdHJlIHBy6WPpZOlzIGQndW4KYmFja3NsYWNoICgnXCcpIDoKCiAgXHQgICBwb3VyIHVuZSB0YWJ1bGF0aW9uCiAgXHIgICBwb3VyIHVuIHJldG91ciBjaGFycmlvdAogIFxuICAgcG91ciB1biBzYXV0IGRlIGxpZ25lCiAgXCAgICBwb3VyIGRpZmbpcmVuY2llciB1biBlc3BhY2UgZCd1biBz6XBhcmF0ZXVyCiAgXCMgICBwb3VyIGRpZmbpcmVuY2llciB1biBkaehzZSBkJ3VuIGNvbW1lbnRhaXJlCiAgXFwgICBwb3VyIHV0aWxpc2VyIHVuIGJhY2tzbGFzaCBkYW5zIGxhIHJlZ2V4CiAgXFxcXCBwb3VyIHV0aWxpc2VyIHVuIGJhY2tzbGFzaCBkYW5zIGxlIHRleHRlCiAgXHhYWCBwb3VyIHVuIGNhcmFjdOhyZSBzcOljaWZpcXVlIFhYIChjb21tZSBlbiBDKQoKCjxyZXBsYWNlPiBjb250aWVudCBsYSBjaGHubmUgcmVtcGxh52FudCBsYSBwb3J0aW9uIHbpcmlmaellIHBhciBsJ2V4cHJlc3Npb24uCkVsbGUgcGV1dCBpbmNsdXJlIGxlcyBjYXJhY3TocmVzIHNw6WNpYXV4IGNpLWRlc3N1cywgZmFpcmUgculm6XJlbmNlIOAgdW4KZ3JvdXBlIGTpbGltaXTpIHBhciBkZXMgcGFyZW50aOhzZXMgZGFucyBsJ2V4cHJlc3Npb24gculndWxp6HJlLCBwYXIgc2EKcG9zaXRpb24gbnVt6XJhbGUuIExlcyBwb3NpdGlvbnMgdm9udCBkZSAxIOAgOSwgZXQgc29udCBjb2TpZXMgcGFyIHVuICdcJwpzdWl2aSBkdSBjaGlmZnJlIGTpc2ly6S4gSWwgZXN0IOlnYWxlbWVudCBwb3NzaWJsZSBkJ2luc+lyZXIgdW4gY2FyYWN06HJlIG5vbgppbXByaW1hYmxlICh1dGlsZSBwb3VyIGxlIHNhdXQgZGUgbGlnbmUpIGluc2NyaXZhbnQgJ1x4JyBzdWl2aSBkdSBjb2RlCmhleGFk6WNpbWFsIGRlIGNlIGNhcmFjdOhyZSAoY29tbWUgZW4gQykuCgo8c3RyaW5nPiByZXBy6XNlbnRlIHVuZSBjaGHubmUgcXVpIHNlcmEgYWpvdXTpZSBzeXN06W1hdGlxdWVtZW50IGFwcuhzIGxhCmRlcm5p6HJlIGxpZ25lIGQnZW4tdOp0ZS4KClJlbWFycXVlcyA6Ci0tLS0tLS0tLS0tCiAgLSBsYSBwcmVtaehyZSBsaWduZSBkZSBsYSByZXF16nRlIGV0IGNlbGxlIGRlIGxhIHLpcG9uc2Ugc29udCB0cmFpdOllcyBjb21tZQogICAgZGVzIGVuLXTqdGVzLCBjZSBxdWkgcGVybWV0IGRlIHLp6WNyaXJlIGRlcyBVUkwgZXQgZGVzIGNvZGVzIGQnZXJyZXVyLgogIC0gJ3JlcXJlcCcgZXN0IGwn6XF1aXZhbGVudCBkZSAnY2xpZXhwJyBlbiB2ZXJzaW9uIDEuMCwgZXQgJ3JzcHJlcCcgY2VsdWkgZGUKICAgICdzcnZleHAnLiBDZXMgbm9tcyBzb250IHRvdWpvdXJzIHN1cHBvcnTpcyBtYWlzIGTpY29uc2VpbGzpcy4KICAtIHBvdXIgZGVzIHJhaXNvbnMgZGUgcGVyZm9ybWFuY2VzLCBsZSBub21icmUgdG90YWwgZGUgY2FyYWN06HJlcyBham91dOlzIHN1cgogICAgdW5lIHJlcXXqdGUgb3UgdW5lIHLpcG9uc2UgZXN0IGxpbWl06SDgIDQwOTYgZGVwdWlzIGxhIHZlcnNpb24gMS4xLjUgKGNldHRlCiAgICBsaW1pdGUg6XRhaXQg4CAyNTYgYXVwYXJhdmFudCkuIENldHRlIHZhbGV1ciBlc3QgbW9kaWZpYWJsZSBkYW5zIGxlIGNvZGUuCiAgICBQb3VyIHVuIHVzYWdlIHRlbXBvcmFpcmUsIG9uIHBldXQgZ2FnbmVyIGRlIGxhIHBsYWNlIGVuIHN1cHByaW1hbnQgcXVlbHF1ZXMKICAgIGVuLXTqdGVzIGludXRpbGVzIGF2YW50IGxlcyBham91dHMuCiAgLSB1bmUgcmVxdep0ZSBibG9xdellIHByb2R1aXJhIHVuZSBy6XBvbnNlICJIVFRQIDQwMyBmb3JiaWRkZW4iIHRhbmRpcyBxdSd1bmUKICAgIHLpcG9uc2UgYmxvcXXpZSBwcm9kdWlyYSB1bmUgculwb25zZSAiSFRUUCA1MDIgQmFkIGdhdGV3YXkiLgoKRXhlbXBsZXMgOgotLS0tLS0tLS0tCiAgICAgICAgIyMjIyMjIGEgZmV3IGV4YW1wbGVzICMjIyMjIwoKICAgICAgICAjIHJld3JpdGUgJ29ubGluZS5mcicgaW5zdGVhZCBvZiAnZnJlZS5mcicgZm9yIEdFVCBhbmQgUE9TVCByZXF1ZXN0cwogICAgICAgIHJlcXJlcCAgICAgICAgXihHRVRcIC4qKSguZnJlZS5mcikoLiopIFwxLm9ubGluZS5mclwzCiAgICAgICAgcmVxcmVwICAgICAgICBeKFBPU1RcIC4qKSguZnJlZS5mcikoLiopIFwxLm9ubGluZS5mclwzCgogICAgICAgICMgZm9yY2UgcHJveHkgY29ubmVjdGlvbnMgdG8gY2xvc2UKICAgICAgICByZXFpcmVwICAgICAgICBeUHJveHktQ29ubmVjdGlvbjouKiAgICAgICAgUHJveHktQ29ubmVjdGlvbjpcIGNsb3NlCiAgICAgICAgIyByZXdyaXRlIGxvY2F0aW9ucwogICAgICAgIHJzcGlyZXAgICAgICAgIF4oTG9jYXRpb246XCApKFteOl0qOi8vW14vXSopKC4qKSBcMVwzCgogICAgICAgICMjIyMjIyBBIGZ1bGwgY29uZmlndXJhdGlvbiBiZWluZyB1c2VkIG9uIHByb2R1Y3Rpb24gIyMjIyMjCgogICAgICAgICMgRXZlcnkgaGVhZGVyIHNob3VsZCBlbmQgd2l0aCBhIGNvbG9uIGZvbGxvd2VkIGJ5IG9uZSBzcGFjZS4KICAgICAgICByZXFpZGVueSAgICAgICAgXlteOlwgXSpbXCBdKiQKCiAgICAgICAgIyBibG9jayBBcGFjaGUgY2h1bmsgZXhwbG9pdAogICAgICAgIHJlcWlkZW55ICAgICAgICBeVHJhbnNmZXItRW5jb2Rpbmc6W1wgXSpjaHVua2VkCiAgICAgICAgcmVxaWRlbnkgICAgICAgIF5Ib3N0OlwgYXBhY2hlLQoKICAgICAgICAjIGJsb2NrIGFubm95aW5nIHdvcm1zIHRoYXQgZmlsbCB0aGUgbG9ncy4uLgogICAgICAgIHJlcWlkZW55ICAgICAgICBeW146XCBdKlwgLiooXC58JTJlKShcLnwlMmUpKCUyZnwlNWN8L3xcXFxcKQogICAgICAgIHJlcWlkZW55ICAgICAgICBeW146XCBdKlwgKFteXCBdKlwgW15cIF0qXCB8LiolMDApCiAgICAgICAgcmVxaWRlbnkgICAgICAgIF5bXjpcIF0qXCAuKjxzY3JpcHQKICAgICAgICByZXFpZGVueSAgICAgICAgXlteOlwgXSpcIC4qLyhyb290XC5leGVcP3xjbWRcLmV4ZVw/fGRlZmF1bHRcLmlkYVw/KQoKICAgICAgICAjIGFsbG93IG90aGVyIHN5bnRhY3RpY2FsbHkgdmFsaWQgcmVxdWVzdHMsIGFuZCBibG9jayBhbnkgb3RoZXIgbWV0aG9kCiAgICAgICAgcmVxaXBhc3MgICAgICAgIF4oR0VUfFBPU1R8SEVBRHxPUFRJT05TKVwgLy4qXCBIVFRQLzFcLlswMV0kCiAgICAgICAgcmVxaXBhc3MgICAgICAgIF5PUFRJT05TXCBcXCpcIEhUVFAvMVwuWzAxXSQKICAgICAgICByZXFpZGVueSAgICAgICAgXlteOlwgXSpcIAoKICAgICAgICAjIGZvcmNlIGNvbm5lY3Rpb246Y2xvc2UsIHRodXMgZGlzYWJsaW5nIEhUVFAga2VlcC1hbGl2ZQogICAgICAgIG9wdGlvbiAgICAgICAgICAgICAgICBodHRwY2xvcwoKICAgICAgICAjIGNoYW5nZSB0aGUgc2VydmVyIG5hbWUKICAgICAgICByc3BpZGVsICAgICAgICAgXlNlcnZlcjpcIAogICAgICAgIHJzcGFkZCAgICAgICAgICBTZXJ2ZXI6XCBGb3JtaWx1eC8wLjEuOAoKCkRlIHBsdXMsIGwnb3B0aW9uICdmb3J3YXJkZm9yJyBham91dGUgbCdhZHJlc3NlIElQIGR1IGNsaWVudCBkYW5zIHVuIGNoYW1wCidYLUZvcndhcmRlZC1Gb3InIGRlIGxhIHJlcXXqdGUsIGNlIHF1aSBwZXJtZXQg4CB1biBzZXJ2ZXVyIHdlYiBmaW5hbCBkZQpjb25uYe50cmUgbCdhZHJlc3NlIElQIGR1IGNsaWVudCBpbml0aWFsLgoKRW5maW4sIGwnb3B0aW9uICdodHRwY2xvc2UnIGFwcGFydWUgZGFucyBsYSB2ZXJzaW9uIDEuMS4yOC8xLjIuMSBzdXBwcmltZSB0b3V0CmVuLXTqdGUgZGUgdHlwZSAnQ29ubmVjdGlvbjonIGV0IGFqb3V0ZSAnQ29ubmVjdGlvbjogY2xvc2UnIGRhbnMgbGVzIGRldXggc2Vucy4KQ2VjaSBzaW1wbGlmaWUgbGEgZOlzYWN0aXZhdGlvbiBkdSBrZWVwLWFsaXZlIEhUVFAgcGFyIHJhcHBvcnQg4CBsJ2FuY2llbm5lCm3pdGhvZGUgaW1wbGlxdWFudCA0IHLoZ2xlcy4KCkV4ZW1wbGUgOgotLS0tLS0tLS0KICAgIGxpc3RlbiBodHRwX3Byb3h5IDAuMC4wLjA6ODAKICAgICAgICBtb2RlIGh0dHAKICAgICAgICBsb2cgIGdsb2JhbAogICAgICAgIG9wdGlvbiBodHRwbG9nCiAgICAgICAgb3B0aW9uIGRvbnRsb2dudWxsCiAgICAgICAgb3B0aW9uIGZvcndhcmRmb3IKICAgICAgICBvcHRpb24gaHR0cGNsb3NlCgpOb3RvbnMgcXVlIGNlcnRhaW5zIHNlcnZldXJzIEhUVFAgbmUgcmVmZXJtZW50IHBhcyBu6WNlc3NhaXJlbWVudCBsYSBzZXNzaW9uClRDUCBlbiBmaW4gZGUgdHJhaXRlbWVudCBsb3JzcXUnaWxzIHJl529pdmVudCB1biBlbnTqdGUgJ0Nvbm5lY3Rpb246IGNsb3NlJywKY2UgcXVpIHNlIHRyYWR1aXQgcGFyIGRlcyBncmFuZHMgbm9tYnJlcyBkZSBzZXNzaW9ucyDpdGFibGllcyBldCBkZXMgdGVtcHMKZ2xvYmF1eCB0cuhzIGxvbmdzIHN1ciBsZXMgcmVxdep0ZXMuIFBvdXIgY29udG91cm5lciBjZSBwcm9ibOhtZSwgbGEgdmVyc2lvbgoxLjIuOSBhcHBvcnRlIHVuZSBub3V2ZWxsZSBvcHRpb24gJ2ZvcmNlY2xvc2UnIHF1aSByZWZlcm1lIGxhIGNvbm5leGlvbiBzb3J0YW50CnZlcnMgbGUgc2VydmV1ciBk6HMgcXUnaWwgY29tbWVuY2Ug4CBy6XBvbmRyZSBldCBzZXVsZW1lbnQgc2kgbGUgdGFtcG9uIGRlCnJlcXXqdGUgZXN0IHZpZGUuIEF0dGVudGlvbiB0b3V0ZWZvaXMg4CBuZSBQQVMgdXRpbGlzZXIgY2V0dGUgb3B0aW9uIHNpIGRlcwpt6XRob2RlcyBDT05ORUNUIHNvbnQgYXR0ZW5kdWVzIGVudHJlIGxlIGNsaWVudCBldCBsZSBzZXJ2ZXVyLiBMJ29wdGlvbgonZm9yY2VjbG9zZScgaW1wbGlxdWUgbCdvcHRpb24gJ2h0dHBjbG9zZScuCgpFeGVtcGxlIDoKLS0tLS0tLS0tCiAgICBsaXN0ZW4gaHR0cF9wcm94eSAwLjAuMC4wOjgwCiAgICAgICAgbW9kZSBodHRwCiAgICAgICAgbG9nICBnbG9iYWwKICAgICAgICBvcHRpb24gaHR0cGxvZwogICAgICAgIG9wdGlvbiBkb250bG9nbnVsbAogICAgICAgIG9wdGlvbiBmb3J3YXJkZm9yCiAgICAgICAgb3B0aW9uIGZvcmNlY2xvc2UKCgo0LjQpIFLpcGFydGl0aW9uIGF2ZWMgcGVyc2lzdGVuY2UKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkxhIGNvbWJpbmFpc29uIGRlIGwnaW5zZXJ0aW9uIGRlIGNvb2tpZSBhdmVjIGxhIHLpcGFydGl0aW9uIGRlIGNoYXJnZSBpbnRlcm5lCnBlcm1ldCBkJ2Fzc3VyZXIgdW5lIHBlcnNpc3RlbmNlIGRhbnMgbGVzIHNlc3Npb25zIEhUVFAgZCd1bmUgbWFuaehyZQpwcmF0aXF1ZW1lbnQgdHJhbnNwYXJlbnRlIHBvdXIgbGVzIGFwcGxpY2F0aW9ucy4gTGUgcHJpbmNpcGUgZXN0IHNpbXBsZSA6CiAgLSBhdHRyaWJ1ZXIgdW5lIHZhbGV1ciBkJ3VuIGNvb2tpZSDgIGNoYXF1ZSBzZXJ2ZXVyCiAgLSBlZmZlY3R1ZXIgdW5lIHLpcGFydGl0aW9uIGludGVybmUKICAtIGluc+lyZXIgdW4gY29va2llIGRhbnMgbGVzIHLpcG9uc2VzIGlzc3VlcyBkJ3VuZSBy6XBhcnRpdGlvbiB1bmlxdWVtZW50LAogICAgZXQgZmFpcmUgZW4gc29ydGUgcXVlIGRlcyBjYWNoZXMgbmUgbeltb3Jpc2VudCBwYXMgY2UgY29va2llLgogIC0gY2FjaGVyIGNlIGNvb2tpZSDgIGwnYXBwbGljYXRpb24gbG9ycyBkZXMgcmVxdep0ZXMgdWx06XJpZXVyZXMuCgpFeGVtcGxlIDoKLS0tLS0tLS0tCiAgICBsaXN0ZW4gYXBwbGljYXRpb24gMC4wLjAuMDo4MAogICAgICAgIG1vZGUgaHR0cAogICAgICAgIGNvb2tpZSBTRVJWRVJJRCBpbnNlcnQgbm9jYWNoZSBpbmRpcmVjdAogICAgICAgIGJhbGFuY2Ugcm91bmRyb2JpbgogICAgICAgIHNlcnZlciBzcnYxIDE5Mi4xNjguMS4xOjgwIGNvb2tpZSBzZXJ2ZXIwMSBjaGVjawogICAgICAgIHNlcnZlciBzcnYyIDE5Mi4xNjguMS4yOjgwIGNvb2tpZSBzZXJ2ZXIwMiBjaGVjawoKTCdhdXRyZSBzb2x1dGlvbiBhcHBvcnTpZSBwYXIgbGVzIHZlcnNpb25zIDEuMS4zMCBldCAxLjIuMyBlc3QgZGUgcul1dGlsaXNlciB1bgpjb29raWUgZW4gcHJvdmVuYW5jZSBkdSBzZXJ2ZXVyIGV0IGRlIGx1aSBwculmaXhlciBsJ2lkZW50aWZpYW50IGR1IHNlcnZldXIuCkRhbnMgY2UgY2FzLCBuZSBwYXMgb3VibGllciBkZSBmb3JjZXIgbGUgbW9kZSAiaHR0cGNsb3NlIiBwb3VyIGVtcOpjaGVyIGxlCmNsaWVudCBldCBsZSBzZXJ2ZXVyIGRlIHRyYXZhaWxsZXIgZW4gbW9kZSAia2VlcC1hbGl2ZSIgYWZpbiBxdWUgbGUgcHJveHkKcHVpc3NlIGNvcnJpZ2VyIGxlIG5vbSBkdSBjb29raWUgZGFucyB0b3V0ZXMgbGVzIGZ1dHVyZXMgcmVxdep0ZXMuCgogICAgbGlzdGVuIGFwcGxpY2F0aW9uIDAuMC4wLjA6ODAKICAgICAgIG1vZGUgaHR0cAogICAgICAgY29va2llIEpTRVNTSU9OSUQgcHJlZml4CiAgICAgICBiYWxhbmNlIHJvdW5kcm9iaW4KICAgICAgIHNlcnZlciBzcnYxIDE5Mi4xNjguMS4xOjgwIGNvb2tpZSBzcnYxIGNoZWNrCiAgICAgICBzZXJ2ZXIgc3J2MiAxOTIuMTY4LjEuMjo4MCBjb29raWUgc3J2MiBjaGVjawogICAgICAgb3B0aW9uIGh0dHBjbG9zZQoKCjQuNSkgUHJvdGVjdGlvbiBjb250cmUgbGVzIGZ1aXRlcyBkJ2luZm9ybWF0aW9ucyBkdSBzZXJ2ZXVyCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkRhbnMgbGVzIHZlcnNpb25zIDEuMS4yOCBldCAxLjIuMSwgdW5lIG5vdXZlbGxlIG9wdGlvbiAnY2hlY2tjYWNoZScgYSDpdOkKY3Lp6WUuIEVsbGUgc2VydCDgIGluc3BlY3RlciBtaW51dGlldXNlbWVudCBsZXMgZW4tdOp0ZXMgJ0NhY2hlLWNvbnRyb2wnLAonUHJhZ21hJywgZXQgJ1NldC1jb29raWUnIGRhbnMgbGVzIHLpcG9uc2VzIHNlcnZldXIgcG91ciBk6XRlcm1pbmVyIHMnaWwgeSBhCnVuIHJpc3F1ZSBkZSBjYWNoZXIgdW4gY29va2llIHN1ciB1biBwcm94eSBj9HTpIGNsaWVudC4gUXVhbmQgY2V0dGUgb3B0aW9uIGVzdAphY3RpdullLCBsZXMgc2V1bGVzIHLpcG9uc2VzIHF1aSBwZXV2ZW50IOp0cmUgcmV0b3VybullcyBhdSBjbGllbnQgc29udCA6CiAgLSB0b3V0ZXMgY2VsbGVzIHF1aSBuJ29udCBwYXMgZCdlbi106nRlICdTZXQtY29va2llJyA7CiAgLSB0b3V0ZXMgY2VsbGVzIHF1aSBvbnQgdW4gY29kZSBkZSByZXRvdXIgYXV0cmUgcXVlIDIwMCwgMjAzLCAyMDYsIDMwMCwgMzAxLCAKICAgIDQxMCwgc2F1ZiBzaSBsZSBzZXJ2ZXVyIGEgcG9zaXRpb25u6SB1biBlbi106nRlICdDYWNoZS1jb250cm9sOiBwdWJsaWMnIDsKICAtIGNlbGxlcyBxdWkgZm9udCBzdWl0ZSDgIHVuZSByZXF16nRlIFBPU1QsIHNhdWYgc2kgbGUgc2VydmV1ciBhIHBvc2l0aW9ubukKICAgIHVuIGVuLXTqdGUgJ0NhY2hlLWNvbnRyb2w6IHB1YmxpYycgOwogIC0gY2VsbGVzIHF1aSBvbnQgdW4gZW4tdOp0ZSAnUHJhZ21hOiBuby1jYWNoZScgOwogIC0gY2VsbGVzIHF1aSBvbnQgdW4gZW4tdOp0ZSAnQ2FjaGUtY29udHJvbDogcHJpdmF0ZScgOyAKICAtIGNlbGxlcyBxdWkgb250IHVuIGVuLXTqdGUgJ0NhY2hlLWNvbnRyb2w6IG5vLXN0b3JlJyA7IAogIC0gY2VsbGVzIHF1aSBvbnQgdW4gZW4tdOp0ZSAnQ2FjaGUtY29udHJvbDogbWF4LWFnZT0wJyA7CiAgLSBjZWxsZXMgcXVpIG9udCB1biBlbi106nRlICdDYWNoZS1jb250cm9sOiBzLW1heGFnZT0wJyA7CiAgLSBjZWxsZXMgcXVpIG9udCB1biBlbi106nRlICdDYWNoZS1jb250cm9sOiBuby1jYWNoZScgOwogIC0gY2VsbGVzIHF1aSBvbnQgdW4gZW4tdOp0ZSAnQ2FjaGUtY29udHJvbDogbm8tY2FjaGU9InNldC1jb29raWUiJyA7CiAgLSBjZWxsZXMgcXVpIG9udCB1biBlbi106nRlICdDYWNoZS1jb250cm9sOiBuby1jYWNoZT0ic2V0LWNvb2tpZSwnCiAgICAoYXV0b3Jpc2FudCBkJ2F1dHJlcyBjaGFtcHMgYXBy6HMgc2V0LWNvb2tpZSkuCgpTaSB1bmUgculwb25zZSBuZSByZXNwZWN0ZSBwYXMgY2VzIHBy6S1yZXF1aXMsIGFsb3JzIGVsbGUgc2VyYSBibG9xdellIGRlIGxhCm3qbWUgbWFuaehyZSBxdWUgcydpbCBzJ2FnaXNzYWl0IGQndW4gZmlsdHJlICdyc3BkZW55JywgYXZlYyBlbiByZXRvdXIgdW4KbWVzc2FnZSAiSFRUUCA1MDIgYmFkIGdhdGV3YXkiLiBMJ+l0YXQgZGUgc2Vzc2lvbiBtb250cmUgIlBILS0iIGNlIHF1aSB2ZXV0CmRpcmUgcXVlIGMnZXN0IGxlIHByb3h5IHF1aSBhIGJsb3F16SBsYSBy6XBvbnNlIGR1cmFudCBsZSB0cmFpdGVtZW50IGRlcwplbi106nRlcy4gRGUgcGx1cywgdW4gbWVzc2FnZSBkJ2FsZXJ0ZSBzZXJhIGVudm956SBkYW5zIGxlcyBsb2dzIGRlIHNvcnRlIHF1ZQpsJ2FkbWluaXN0cmF0ZXVyIHNhY2hlIHF1J2lsIHkgYSB1bmUgYWN0aW9uIGNvcnJlY3RyaWNlIOAgZW50cmVwcmVuZHJlLgoKNC42KSBQZXJzb25hbGlzYXRpb24gZGVzIGVycmV1cnMKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KQ2VydGFpbmVzIHNpdHVhdGlvbnMgY29uZHVpc2VudCDgIHJldG91cm5lciB1bmUgZXJyZXVyIEhUVFAgYXUgY2xpZW50IDoKICAtIHJlcXXqdGUgaW52YWxpZGUgb3UgdHJvcCBsb25ndWUgPT4gY29kZSBIVFRQIDQwMAogIC0gcmVxdep0ZSBtZXR0YW50IHRyb3AgZGUgdGVtcHMg4CB2ZW5pciA9PiBjb2RlIEhUVFAgNDA4CiAgLSByZXF16nRlIGludGVyZGl0ZSAoYmxvcXXpZSBwYXIgdW4gcmVxaWRlbnkpID0+IGNvZGUgSFRUUCA0MDMKICAtIGVycmV1ciBpbnRlcm5lIGR1IHByb3h5ID0+IGNvZGUgSFRUUCA1MDAKICAtIGxlIHNlcnZldXIgYSByZXRvdXJu6SB1bmUgculwb25zZSBpbmNvbXBs6HRlIG91IGludmFsaWRlID0+IGNvZGUgSFRUUCA1MDIKICAtIGF1Y3VuIHNlcnZldXIgZGlzcG9uaWJsZSBwb3VyIGNldHRlIHJlcXXqdGUgPT4gY29kZSBIVFRQIDUwMwogIC0gbGUgc2VydmV1ciBuJ2EgcGFzIHLpcG9uZHUgZGFucyBsZSB0ZW1wcyBpbXBhcnRpID0+IGNvZGUgSFRUUCA1MDQKClVuIG1lc3NhZ2UgZCdlcnJldXIgc3VjY2ludCB0aXLpIGRlIGxhIFJGQyBhY2NvbXBhZ25lIGNlcyBjb2RlcyBkZSByZXRvdXIuCkNlcGVuZGFudCwgZW4gZm9uY3Rpb24gZHUgdHlwZSBkZSBjbGllbnTobGUsIG9uIHBldXQgcHLpZulyZXIgcmV0b3VybmVyIGRlcwpwYWdlcyBwZXJzb25uYWxpc+llcy4gQ2VjaSBlc3QgcG9zc2libGUgcGFyIGxlIGJpYWlzIGRlIGxhIGNvbW1hbmRlICJlcnJvcmxvYyI6CgogICAgZXJyb3Jsb2MgPGNvZGVfSFRUUD4gPGxvY2F0aW9uPgoKQXUgbGlldSBkZSBn6W7pcmVyIHVuZSBlcnJldXIgSFRUUCA8Y29kZV9IVFRQPiBwYXJtaSBsZXMgY29kZXMgY2l06XMgY2ktZGVzc3VzLApsZSBwcm94eSBn6W7ocmVyYSB1biBjb2RlIGRlIHJlZGlyZWN0aW9uIHRlbXBvcmFpcmUgKEhUVFAgMzAyKSB2ZXJzIGwnYWRyZXNzZQpkJ3VuZSBwYWdlIHBy6WNpc+llIGRhbnMgPGxvY2F0aW9uPi4gQ2V0dGUgYWRyZXNzZSBwZXV0IOp0cmUgcmVsYXRpdmUgYXUgc2l0ZSwKb3UgYWJzb2x1ZS4gQ29tbWUgY2V0dGUgculwb25zZSBlc3QgdHJh7nTpZSBwYXIgbGUgbmF2aWdhdGV1ciBkdSBjbGllbnQKbHVpLW3qbWUsIGlsIGVzdCBpbmRpc3BlbnNhYmxlIHF1ZSBsJ2FkcmVzc2UgZm91cm5pZSBsdWkgc29pdCBhY2Nlc3NpYmxlLgoKRXhlbXBsZSA6Ci0tLS0tLS0tLQogICAgbGlzdGVuIGFwcGxpY2F0aW9uIDAuMC4wLjA6ODAKICAgICAgICBlcnJvcmxvYyA0MDAgL2JhZHJlcXVlc3QuaHRtbAogICAgICAgIGVycm9ybG9jIDQwMyAvZm9yYmlkZGVuLmh0bWwKICAgICAgICBlcnJvcmxvYyA0MDggL3Rvb2xvbmcuaHRtbAogICAgICAgIGVycm9ybG9jIDUwMCBodHRwOi8vaGFwcm94eS5kb21haW4ubmV0L2J1Z3JlcG9ydC5odG1sCiAgICAgICAgZXJyb3Jsb2MgNTAyIGh0dHA6Ly8xOTIuMTY4LjExNC41OC9lcnJvcjUweC5odG1sCiAgICAgICAgZXJyb3Jsb2MgNTAzIGh0dHA6Ly8xOTIuMTY4LjExNC41OC9lcnJvcjUweC5odG1sCiAgICAgICAgZXJyb3Jsb2MgNTA0IGh0dHA6Ly8xOTIuMTY4LjExNC41OC9lcnJvcjUweC5odG1sCgpOb3RlOiBsYSBSRkMyNjE2IHN0aXB1bGUgcXUndW4gY2xpZW50IGRvaXQgcul1dGlsaXNlciBsYSBt6m1lIG3pdGhvZGUgcG91cgphY2PpZGVyIOAgbCdVUkwgZGUgcmVkaXJlY3Rpb24gcXVlIGNlbGxlIHF1aSBsJ2EgcmV0b3VybullLCBjZSBxdWkgcG9zZSBkZXMKcHJvYmzobWVzIGF2ZWMgbGVzIHJlcXXqdGVzIFBPU1QuIExlIGNvZGUgZGUgcmV0b3VyIDMwMyBhIOl06SBjcunpIGV4cHLocyBwb3VyCnLpZ2xlciBjZSBwcm9ibOhtZSwgaW5kaXF1YW50IGF1IGNsaWVudCBxdSdpbCBkb2l0IGFjY+lkZXIg4CBsJ1VSTCByZXRvdXJu6WUKZGFucyBsZSBjaGFtcCBMb2NhdGlvbiBhdmVjIGxhIG3pdGhvZGUgR0VUIHVuaXF1ZW1lbnQuIFNldWxlbWVudCwgY2VydGFpbnMKbmF2aWdhdGV1cnMgYW506XJpZXVycyDgIEhUVFAvMS4xIG5lIGNvbm5haXNzZW50IHBhcyBjZSBjb2RlIGRlIHJldG91ci4gRGUKcGx1cywgbGEgcGx1cGFydCBkZXMgbmF2aWdhdGV1cnMgc2UgY29tcG9ydGVudCBk6WrgIGF2ZWMgbGUgY29kZSAzMDIgY29tbWUgaWxzCmRldnJhaWVudCBsZSBmYWlyZSBhdmVjIGxlIDMwMy4gRG9uYywgZGFucyBsZSBidXQgZGUgbGFpc3NlciBsZSBjaG9peCDgCmwndXRpbGlzYXRldXIsIGxlcyB2ZXJzaW9ucyAxLjEuMzEgZXQgMS4yLjUgYXBwb3J0ZW50IGRldXggbm91dmVsbGVzIGNvbW1hbmRlcwp2aXNhbnQg4CByZW1wbGFjZXIgJ2Vycm9ybG9jJyA6ICdlcnJvcmxvYzMwMicgZXQgJ2Vycm9ybG9jMzAzJy4KCkxldXIgdXNhZ2Ugbm9uIGFtYmln/CBlc3QgcmVjb21tYW5k6SDgIGxhIHBsYWNlIGRlIGxhIGNvbW1hbmRlICdlcnJvcmxvYycgKHF1aQp1dGlsaXNlIHRvdWpvdXJzIDMwMikuIERhbnMgbGUgZG91dGUsIHBy6WbpcmV6IGwndXRpbGlzYXRpb24gZGUgJ2Vycm9ybG9jMzAzJwpk6HMgcXVlIHZvdXMgc2F2ZXogcXVlIHZvcyBjbGllbnRzIHN1cHBvcnRlbnQgbGUgY29kZSBkZSByZXRvdXIgSFRUUCAzMDMuCgo0LjcpIENoYW5nZW1lbnQgZGVzIHZhbGV1cnMgcGFyIGTpZmF1dAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpEYW5zIGxhIHZlcnNpb24gMS4xLjIyIGVzdCBhcHBhcnVlIGxhIG5vdGlvbiBkZSB2YWxldXJzIHBhciBk6WZhdXQsIGNlIHF1aQrpdml0ZSBkZSBy6XDpdGVyIGRlcyBwYXJhbeh0cmVzIGNvbW11bnMg4CB0b3V0ZXMgbGVzIGluc3RhbmNlcywgdGVscyBxdWUgbGVzCnRpbWVvdXRzLCBhZHJlc3NlcyBkZSBsb2csIG1vZGVzIGRlIGZvbmN0aW9ubmVtZW50LCBldGMuCgpMZXMgdmFsZXVycyBwYXIgZOlmYXV0IHNvbnQgcG9zaXRpb25u6WVzIGRhbnMgbGEgZGVybmnocmUgc2VjdGlvbiAnZGVmYXVsdHMnCnBy6WPpZGVudCBsJ2luc3RhbmNlIHF1aSBsZXMgdXRpbGlzZXJhLiBPbiBwZXV0IGRvbmMgbWV0dHJlIGF1dGFudCBkZSBzZWN0aW9ucwonZGVmYXVsdHMnIHF1ZSBsJ29uIHZldXQuIElsIGZhdXQganVzdGUgc2UgcmFwcGVsZXIgcXVlIGxhIHBy6XNlbmNlIGQndW5lIHRlbGxlCnNlY3Rpb24gaW1wbGlxdWUgdW5lIGFubnVsYXRpb24gZGUgdG91cyBsZXMgcGFyYW3odHJlcyBwYXIgZOlmYXV0IHBvc2l0aW9ubulzCnBy6WPpZGVtbWVudCwgZGFucyBsZSBidXQgZGUgbGVzIHJlbXBsYWNlci4KCkxhIHNlY3Rpb24gJ2RlZmF1bHRzJyB1dGlsaXNlIGxhIG3qbWUgc3ludGF4ZSBxdWUgbGEgc2VjdGlvbiAnbGlzdGVuJywgYXV4CnBhcmFt6HRyZXMgcHLocyBxdWkgbmUgc29udCBwYXMgc3VwcG9ydOlzLiBMZSBtb3QgY2zpICdkZWZhdWx0cycgcGV1dCBhY2NlcHRlcgp1biBjb21tZW50YWlyZSBlbiBndWlzZSBwYXJhbeh0cmUuCgpEYW5zIGxhIHZlcnNpb24gMS4xLjI4LzEuMi4xLCBzZXVscyBsZXMgcGFyYW3odHJlcyBzdWl2YW50cyBwZXV2ZW50IOp0cmUKcG9zaXRpb25u6XMgZGFucyB1bmUgc2VjdGlvbiAnZGVmYXVsdHMnIDoKICAtIGxvZyAobGUgcHJlbWllciBldCBsZSBzZWNvbmQpCiAgLSBtb2RlIHsgdGNwLCBodHRwLCBoZWFsdGggfQogIC0gYmFsYW5jZSB7IHJvdW5kcm9iaW4gfQogIC0gZGlzYWJsZWQgKHBvdXIgZOlzYWN0aXZlciB0b3V0ZXMgbGVzIGluc3RhbmNlcyBxdWkgc3VpdmVudCkKICAtIGVuYWJsZWQgKHBvdXIgZmFpcmUgbCdvcOlyYXRpb24gaW52ZXJzZSwgbWFpcyBjJ2VzdCBsZSBjYXMgcGFyIGTpZmF1dCkKICAtIGNvbnRpbWVvdXQsIGNsaXRpbWVvdXQsIHNydnRpbWVvdXQsIGdyYWNlLCByZXRyaWVzLCBtYXhjb25uCiAgLSBvcHRpb24geyByZWRpc3BhdGNoLCB0cmFuc3BhcmVudCwga2VlcGFsaXZlLCBmb3J3YXJkZm9yLCBsb2dhc2FwLCBodHRwY2xvc2UsCiAgICAgICAgICAgICBjaGVja2NhY2hlLCBodHRwbG9nLCB0Y3Bsb2csIGRvbnRsb2dudWxsLCBwZXJzaXN0LCBodHRwY2hrIH0KICAtIHJlZGlzcGF0Y2gsIHJlZGlzcCwgdHJhbnNwYXJlbnQsIHNvdXJjZSB7IGFkZHI6cG9ydCB9CiAgLSBjb29raWUsIGNhcHR1cmUKICAtIGVycm9ybG9jCgpOZSBzb250IHBhcyBzdXBwb3J06XMgZGFucyBjZXR0ZSB2ZXJzaW9uLCBsZXMgYWRyZXNzZXMgZGUgZGlzcGF0Y2ggZXQgbGVzCmNvbmZpZ3VyYXRpb25zIGRlIHNlcnZldXJzLCBhaW5zaSBxdWUgdG91cyBsZXMgZmlsdHJlcyBiYXPpcyBzdXIgbGVzCmV4cHJlc3Npb25zIHLpZ3VsaehyZXMgOgogIC0gZGlzcGF0Y2gsIHNlcnZlciwKICAtIHJlcSosIHJzcCoKCkVuZmluLCBpbCBuJ3kgYSBwYXMgbGUgbW95ZW4sIHBvdXIgbGUgbW9tZW50LCBkJ2ludmFsaWRlciB1biBwYXJhbeh0cmUgYm9vbOllbgpwb3NpdGlvbm7pIHBhciBk6WZhdXQuIERvbmMgc2kgdW5lIG9wdGlvbiBlc3Qgc3DpY2lmaellIGRhbnMgbGVzIHBhcmFt6HRyZXMgcGFyCmTpZmF1dCwgbGUgc2V1bCBtb3llbiBkZSBsYSBk6XNhY3RpdmVyIHBvdXIgdW5lIGluc3RhbmNlLCBjJ2VzdCBkZSBjaGFuZ2VyIGxlcwpwYXJhbeh0cmVzIHBhciBk6WZhdXQgYXZhbnQgbGEgZOljbGFyYXRpb24gZGUgbCdpbnN0YW5jZS4KCkV4ZW1wbGVzIDoKLS0tLS0tLS0tLQogICAgZGVmYXVsdHMgYXBwbGljYXRpb25zIFRDUAogICAgICAgIGxvZyBnbG9iYWwKICAgICAgICBtb2RlIHRjcAogICAgICAgIGJhbGFuY2Ugcm91bmRyb2JpbgogICAgICAgIGNsaXRpbWVvdXQgMTgwMDAwCiAgICAgICAgc3J2dGltZW91dCAxODAwMDAKICAgICAgICBjb250aW1lb3V0IDQwMDAKICAgICAgICByZXRyaWVzIDMKICAgICAgICByZWRpc3BhdGNoCgogICAgbGlzdGVuIGFwcF90Y3AxIDEwLjAuMC4xOjYwMDAtNjA2MwogICAgICAgIHNlcnZlciBzcnYxIDE5Mi4xNjguMS4xIGNoZWNrIHBvcnQgNjAwMCBpbnRlciAxMDAwMAogICAgICAgIHNlcnZlciBzcnYyIDE5Mi4xNjguMS4yIGJhY2t1cAoKICAgIGxpc3RlbiBhcHBfdGNwMiAxMC4wLjAuMjo2MDAwLTYwNjMKICAgICAgICBzZXJ2ZXIgc3J2MSAxOTIuMTY4LjIuMSBjaGVjayBwb3J0IDYwMDAgaW50ZXIgMTAwMDAKICAgICAgICBzZXJ2ZXIgc3J2MiAxOTIuMTY4LjIuMiBiYWNrdXAKICAgIAogICAgZGVmYXVsdHMgYXBwbGljYXRpb25zIEhUVFAKICAgICAgICBsb2cgZ2xvYmFsCiAgICAgICAgbW9kZSBodHRwCiAgICAgICAgb3B0aW9uIGh0dHBsb2cKICAgICAgICBvcHRpb24gZm9yd2FyZGZvcgogICAgICAgIG9wdGlvbiBkb250bG9nbnVsbAogICAgICAgIGJhbGFuY2Ugcm91bmRyb2JpbgogICAgICAgIGNsaXRpbWVvdXQgMjAwMDAKICAgICAgICBzcnZ0aW1lb3V0IDIwMDAwCiAgICAgICAgY29udGltZW91dCA0MDAwCiAgICAgICAgcmV0cmllcyAzCgogICAgbGlzdGVuIGFwcF9odHRwMSAxMC4wLjAuMTo4MC04MQogICAgICAgIGNvb2tpZSBTRVJWRVJJRCBwb3N0b25seSBpbnNlcnQgaW5kaXJlY3QKICAgICAgICBjYXB0dXJlIGNvb2tpZSB1c2VyaWQ9IGxlbiAxMAogICAgICAgIHNlcnZlciBzcnYxIDE5Mi4xNjguMS4xOis4MDAwIGNvb2tpZSBzcnYxIGNoZWNrIHBvcnQgODA4MCBpbnRlciAxMDAwCiAgICAgICAgc2VydmVyIHNydjEgMTkyLjE2OC4xLjI6KzgwMDAgY29va2llIHNydjIgY2hlY2sgcG9ydCA4MDgwIGludGVyIDEwMDAKCiAgICBkZWZhdWx0cwogICAgICAgICMgc2VjdGlvbiB2aWRlIHF1aSBhbm51bGUgdG91cyBsZXMgcGFyYW3odGVzIHBhciBk6WZhdXQuCgoKNC44KSBSYXBwb3J0IGQn6XRhdCBzb3VzIGZvcm1lIGRlIHBhZ2UgSFRNTAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkF2ZWMgbGEgdmVyc2lvbiAxLjIuMTQsIGlsIGRldmllbnQgcG9zc2libGUgcG91ciBoYXByb3h5IGQnaW50ZXJjZXB0cmUgZGVzCnJlcXXqdGVzIHBvdXIgdW5lIFVSSSBwYXJ0aWN1bGnocmUgZXQgZGUgcmV0b3VybmVyIHVuIHJhcHBvcnQgY29tcGxldCBkJ+l0YXQgZGUKbCdhY3Rpdml06SBkdSBwcm94eSwgZXQgZGVzIHN0YXRpc3RpcXVlcyBzdXIgbGVzIHNlcnZldXJzLiBDZWNpIGVzdCBkaXNwb25pYmxlCnZpYSBsZSBtb3QgY2zpICJzdGF0cyIgYXNzb2Np6SDgIG4naW1wb3J0ZSBsYXF1ZWxsZSBkZSBjZXMgb3B0aW9ucyA6CgogICAtIHN0YXRzIGVuYWJsZQogICAtIHN0YXRzIHVyaSA8dXJpIHByZWZpeD4KICAgLSBzdGF0cyByZWFsbSA8YXV0aGVudGljYXRpb24gcmVhbG0+CiAgIC0gc3RhdHMgYXV0aCA8dXNlcjpwYXNzd29yZD4KICAgLSBzdGF0cyBzY29wZSA8cHJveHlfaWQ+IHwgJy4nCgoKUGFyIGTpZmF1dCwgbGUgcmFwcG9ydCBlc3QgZOlzYWN0aXbpLiBMZSBmYWl0IGRlIHNw6WNpZmllciB1bmUgZGVzIGNvbWJpbmFpc2lvbgpjaS1kZXNzdXMgYWN0aXZlIGxlIHJhcHBvcnQgcG91ciBsJ2luc3RhbmNlIGRlIHByb3h5IHF1aSBsZSBy6WbpcmVuY2UuIExhCnNvbHV0aW9uIGxhIHBsdXMgc2ltcGxlIGVzdCBkJ3V0aWxpc2VyICJzdGF0cyBlbmFibGUiIHF1aSBhY3RpdmVyYSBsZSByYXBwb3J0CmF2ZWMgbGVzIHBhcmFt6HRyZXMgcGFyIGTpZmF1dCBzdWl2YW50IDoKCiAgIC0gZGVmYXVsdCBVUkkgICA6ICIvaGFwcm94eT9zdGF0cyIgICAgICAgIChDT05GSUdfU1RBVFNfREVGQVVMVF9VUkkpCiAgIC0gZGVmYXVsdCBhdXRoICA6IG5vbiBzcOljaWZp6SAocGFzIGQnYXV0aGVudGljYXRpb24pCiAgIC0gZGVmYXVsdCByZWFsbSA6ICJIQVByb3h5IFN0YXRpc3RpY3MiICAgIChDT05GSUdfU1RBVFNfREVGQVVMVF9SRUFMTSkKICAgLSBkZWZhdWx0IHNjb3BlIDogbm9uIHNwZWNpZmnpIChhY2PocyDgIHRvdXRlcyBsZXMgaW5zdGFuY2VzKQoKTCdvcHRpb24gInN0YXRzIHVyaSA8dXJpX3ByZWZpeD4iIHBlcm1ldCBkJ2ludGVyY2VwdGVyIHVuIGF1dHJlIHBy6WZpeGUgZCdVUkkKcXVlIGNlbHVpIHBhciBk6WZhdXQuIE5vdGVyIHF1ZSBuJ2ltcG9ydGUgcXVlbGxlIFVSSSBxdWkgQ09NTUVOQ0UgYXZlYyBjZXR0ZQpjaGHubmUgc2VyYSB2YWxpZOllLiBQYXIgZXhlbXBsZSwgdW5lIGluc3RhbmNlIHBvdXJyYWl0IOp0cmUgZOlkaellIOAgbGEgcGFnZQpkJ+l0YXQgc2V1bGVtZW50IGV0IHLpcG9uZHJlIOAgdG91dGUgVVJJLgoKRXhhbXBsZSA6Ci0tLS0tLS0tLQogICAgIyBpbnRlcmNlcHRlIG4naW1wb3J0ZSBxdWVsbGUgVVJJIGV0IHJldG91cm5lIGxhIHBhZ2UgZCfpdGF0LgogICAgbGlzdGVuIHN0YXRzIDo4MDgwCiAgICAgICAgbW9kZSBodHRwCiAgICAgICAgc3RhdHMgdXJpIC8KCgpMJ29wdGlvbiAic3RhdHMgYXV0aCA8dXNlcjpwYXNzd29yZD4iIGFjdGl2ZSBsJ2F1dGhlbnRpZmljYXRpb24gIkJhc2ljIiBldApham91dGUgdW4gY291cGxlICJ1c2VyOnBhc3N3b3JkIiB2YWxpZGUg4CBsYSBsaXN0ZSBkZXMgY29tcHRlcyBhdXRvcmlz6XMuCkwndXRpbGlzYXRldXIgPHVzZXI+IGV0IGxlIG1vdCBkZSBwYXNzZSA8cGFzc3dvcmQ+IGRvaXZlbnQg6nRyZSBwculjaXPpcwplbiBjbGFpciBkYW5zIGxlIGZpY2hpZXIgZGUgY29uZmlndXJhdGlvbiwgZXQgY29tbWUgY2VjaSBlc3QgZGUKbCdhdXRoZW50aWZpY2F0aW9uIEhUVFAgIkJhc2ljIiwgaWwgZmF1dCDqdHJlIGNvbnNjaWVudCBxdSdpbHMgdHJhbnNpdGVudCBlbgpjbGFpciBzdXIgbGUgculzZWF1LCBkb25jIGlsIG5lIGZhdXQgcGFzIHV0aWxpc2VyIGRlIGNvbXB0ZSBzZW5zaWJsZS4gTGEgbGlzdGUKZXN0IGlsbGltaXTpZSBkYW5zIGxlIGJ1dCBkZSBwb3V2b2lyIGZvdXJuaXIgZGVzIGFjY+hzIGZhY2lsZW1lbnQg4CBkZXMKZOl2ZWxvcHBldXJzIG91IOAgZGVzIGNsaWVudHMuCgpMJ29wdGlvbiAic3RhdHMgcmVhbG0gPHJlYWxtPiIgZOlmaW5pdCBsZSAiZG9tYWluZSIgKCJyZWFsbSIpIGRlIHZhbGlkaXTpIGR1Cm1vdCBkZSBwYXNzZSBxdWkgc2VyYSBwculzZW506SBkYW5zIGxhIGJv7nRlIGRlIGRpYWxvZ3VlIGR1IG5hdmlnYXRldXIKbG9yc3F1J2lsIGRlbWFuZGVyYSB1biBjb21wdGUgdXRpbGlzYXRldXIgZXQgdW4gbW90IGRlIHBhc3NlLiBJbCBlc3QgaW1wb3J0YW50CmRlIHMnYXNzdXJlciBxdWUgY2VsdWktY2kgc29pdCBkaWZm6XJlbnQgZGUgY2V1eCB1dGlsaXPpcyBwYXIgbCdhcHBsaWNhdGlvbiwKYXV0cmVtZW50IGxlIG5hdmlnYXRldXIgdGVudGVyYSBkJ2VuIHV0aWxpc2VyIHVuIGNhY2jpIGRlcHVpcyBsJ2FwcGxpY2F0aW9uLgpOb3RlciBxdWUgbGVzIGVzcGFjZXMgZGFucyBsZSBub20gZGUgInJlYWxtIiBkb2l2ZW50IOp0cmUgcHJvdOln6XMgcGFyIHVuCmJhY2tzbGFzaCAoJ1wnKS4KCkwnb3B0aW9uICJzdGF0cyBzY29wZSA8cHJveHlfaWQ+IiBsaW1pdGUgbGEgcG9ydOllIGR1IHJhcHBvcnQgZCfpdGF0LiBQYXIKZOlmYXV0LCB0b3V0ZXMgbGVzIGluc3RhbmNlcyBwcm94eSBzb250IGxpc3TpZXMuIE1haXMgZGFucyBjZXJ0YWluZXMKY2lyY29uc3RhbmNlcywgaWwgc2VyYWl0IHBy6WbpcmFibGUgZGUgbmUgbGlzdGVyIHF1ZSBjZXJ0YWlucyBwcm94aWVzIG91CnNpbXBsZW1lbnQgbGUgcHJveHkgY291cmFudC4gQydlc3QgY2UgcXVlIGZhaXQgY2V0dGUgb3B0aW9uLiBMZSBub20gc3DpY2lhbCAiLiIKKHVuIHNpbXBsZSBwb2ludCkgculm6XJlbmNlIGxlIHByb3h5IGNvdXJhbnQuIENldHRlIG9wdGlvbiBwZXV0IOp0cmUgculw6XTpZQphdXRhbnQgZGUgZm9pcyBxdWUgbuljZXNzYWlyZSBwb3VyIGF1dG9yaXNlciBkJ2F1dHJlcyBwcm94aWVzLCBt6m1lIHBvdXIgZGVzCm5vbXMgculm6XJlbmPpcyBwbHVzIGxvaW4gZGFucyBsYSBjb25maWd1cmF0aW9uIG91IGJpZW4gZGVzIG5vbXMgcXVpIG4nZXhpc3RlbnQKcGFzIGVuY29yZS4gTGUgbm9tIHBy6WNpc+kgZXN0IGNlbHVpIHF1aSBhcHBhcmFpdCBhcHLocyBsZSBtb3QgY2zpICJsaXN0ZW4iLgoKRXhlbXBsZSA6Ci0tLS0tLS0tLQogICAgIyBzaW1wbGUgYXBwbGljYXRpb24gZW1iYXJxdWFudCBsYSBwYWdlIGQn6XRhdCBhdXRoZW50aWZp6WUKICAgIGxpc3RlbiBhcHAxIDE5Mi4xNjguMS4xMDA6ODAKICAgICAgICBtb2RlIGh0dHAKICAgICAgICBvcHRpb24gaHR0cGNsb3NlCiAgICAgICAgYmFsYW5jZSByb3VuZHJvYmluCiAgICAgICAgY29va2llIFNFUlZFUklEIHBvc3Rvbmx5IGluc2VydCBpbmRpcmVjdAogICAgICAgIHNlcnZlciBzcnYxIDE5Mi4xNjguMS4xOjgwODAgY29va2llIHNydjEgY2hlY2sgaW50ZXIgMTAwMAogICAgICAgIHNlcnZlciBzcnYxIDE5Mi4xNjguMS4yOjgwODAgY29va2llIHNydjIgY2hlY2sgaW50ZXIgMTAwMAogICAgICAgIHN0YXRzIHVyaSAvbXlfc3RhdHMKICAgICAgICBzdGF0cyByZWFsbSBTdGF0aXN0aWNzXCBmb3JcIE15QXBwMS0yCiAgICAgICAgc3RhdHMgYXV0aCBndWVzdDpndWVzdAogICAgICAgIHN0YXRzIGF1dGggYWRtaW46QWRNaU4xMjMKICAgICAgICBzdGF0cyBzY29wZSAuCiAgICAgICAgc3RhdHMgc2NvcGUgYXBwMgoKICAgICMgc2ltcGxlIGFwcGxpY2F0aW9uIGVtYmFycXVhbnQgbGEgcGFnZSBkJ+l0YXQgc2FucyBhdXRoZW50aWZpY2F0aW9uCiAgICBsaXN0ZW4gYXBwMiAxOTIuMTY4LjIuMTAwOjgwCiAgICAgICAgbW9kZSBodHRwCiAgICAgICAgb3B0aW9uIGh0dHBjbG9zZQogICAgICAgIGJhbGFuY2Ugcm91bmRyb2JpbgogICAgICAgIGNvb2tpZSBTRVJWRVJJRCBwb3N0b25seSBpbnNlcnQgaW5kaXJlY3QKICAgICAgICBzZXJ2ZXIgc3J2MSAxOTIuMTY4LjIuMTo4MDgwIGNvb2tpZSBzcnYxIGNoZWNrIGludGVyIDEwMDAKICAgICAgICBzZXJ2ZXIgc3J2MSAxOTIuMTY4LjIuMjo4MDgwIGNvb2tpZSBzcnYyIGNoZWNrIGludGVyIDEwMDAKICAgICAgICBzdGF0cyB1cmkgL215X3N0YXRzCiAgICAgICAgc3RhdHMgcmVhbG0gU3RhdGlzdGljc1wgZm9yXCBNeUFwcDIKICAgICAgICBzdGF0cyBzY29wZSAuCgogICAgbGlzdGVuIGFkbWluX3BhZ2UgOjgwODAKICAgICAgICBtb2RlIGh0dHAKICAgICAgICBzdGF0cyB1cmkgL215X3N0YXRzCiAgICAgICAgc3RhdHMgcmVhbG0gR2xvYmFsXCBzdGF0aXN0aWNzCiAgICAgICAgc3RhdHMgYXV0aCBhZG1pbjpBZE1pTjEyMwoKTm90ZXMgOgotLS0tLS0tCiAgLSBsZXMgb3B0aW9ucyAic3RhdHMiIHBldXZlbnQgYXVzc2kg6nRyZSBzcOljaWZp6WVzIGRhbnMgdW5lIHNlY3Rpb24KICAgICJkZWZhdWx0cyIsIGF1cXVlbCBjYXMgbGEgbeptZSBjb25maWd1cmF0aW9uIGV4YWN0ZW1lbnQgc2VyYSBmb3VybmllIOAKICAgIHRvdXRlcyBsZXMgaW5zdGFuY2VzIHN1aXZhbnRlcywgZCdv+SBsJ3V0aWxpdOkgZHUgc2NvcGUgIi4iLiBUb3V0ZWZvaXMsIHNpCiAgICB1bmUgaW5zdGFuY2UgcmVk6WZpbml0IG4naW1wb3J0ZSBxdWVsIHBhcmFt6HRyZSAic3RhdHMiLCBhbG9ycyBsZXMgZOlmYXV0cwogICAgbmUgbHVpIHNlcm9udCBwYXMgYXBwbGlxdelzLgoKICAtIGwnYXV0aGVudGlmaWNhdGlvbiAiQmFzaWMiIGVzdCB0cuhzIHNpbXBsaXN0ZSBldCBub24gc+ljdXJpc+llIGNvbnRyZSBsYQogICAgY2FwdHVyZSBy6XNlYXUuIEF1Y3VuIG1vdCBkZSBwYXNzZSBzZW5zaWJsZSBuZSBkb2l0IOp0cmUgdXRpbGlz6SwgZXQgaWwKICAgIGVzdCBib24gZGUgc2F2b2lyIHF1J2lsIG4nZXhpc3RlIHBhcyBkZSBtb3llbiBkZSBsZSBzdXBwcmltZXIgZHUgbmF2aWdhdGV1cgogICAgYXBy6HMgdXNhZ2UsIGRvbmMgaWwgc2VyYSBlbnZveekgdGVsIHF1ZWwg4CBsJ2FwcGxpY2F0aW9uIGF1IGNvdXJzIGRlcwogICAgYWNj6HMgc3VjY2Vzc2lmcy4KCiAgLSBJbCBlc3QgdHLocyBpbXBvcnRhbnQgZGUgcHLpY2lzZXIgbCdvcHRpb24gImh0dHBjbG9zZSIsIHNpbm9uIGxlIHByb3h5IG5lCiAgICBzZXJhIHBhcyBlbiBtZXN1cmUgZGUgZOl0ZWN0ZXIgbGVzIFVSSSBkYW5zIGxlcyBzZXNzaW9ucyBrZWVwLWFsaXZlCiAgICBtYWludGVudWVzIGVudHJlIGxlIG5hdmlnYXRldXIgZXQgbGVzIHNlcnZldXJzLCBkb25jIGxlcyBVUkkgZGUgc3RhdHMKICAgIHNlcm9udCB0cmFuc21pc2VzIHRlbGxlcyBxdWVsbGVzIGF1eCBzZXJ2ZXVycyBjb21tZSBzaSBsJ29wdGlvbiBuJ+l0YWl0CiAgICBwYXMgcHLpY2lz6WUuCgoKPT09PT09PT09PT09PT09PT09PT09PT0KfCBQYXJhbel0cmFnZSBzeXN06G1lIHwKPT09PT09PT09PT09PT09PT09PT09PT0KClNvdXMgTGludXggMi40Cj09PT09PT09PT09PT09CgotLSBjdXQgaGVyZSAtLQojIS9iaW4vc2gKIyBzZXQgdGhpcyB0byBhYm91dCAyNTYvNE0gKDE2Mzg0IGZvciAyNTZNIG1hY2hpbmUpCk1BWEZJTEVTPTE2Mzg0CmVjaG8gJE1BWEZJTEVTID4gL3Byb2Mvc3lzL2ZzL2ZpbGUtbWF4CnVsaW1pdCAtbiAkTUFYRklMRVMKCmlmIFsgLWUgL3Byb2Mvc3lzL25ldC9pcHY0L2lwX2Nvbm50cmFja19tYXggXTsgdGhlbgogICAgICAgIGVjaG8gNjU1MzYgPiAvcHJvYy9zeXMvbmV0L2lwdjQvaXBfY29ubnRyYWNrX21heApmaQoKaWYgWyAtZSAvcHJvYy9zeXMvbmV0L2lwdjQvbmV0ZmlsdGVyL2lwX2N0X3RjcF90aW1lb3V0X2Zpbl93YWl0IF07IHRoZW4KICAgICAgICAjIDMwIHNlY29uZHMgZm9yIGZpbiwgMTUgZm9yIHRpbWUgd2FpdAogICAgICAgIGVjaG8gMzAwMCA+IC9wcm9jL3N5cy9uZXQvaXB2NC9uZXRmaWx0ZXIvaXBfY3RfdGNwX3RpbWVvdXRfZmluX3dhaXQKICAgICAgICBlY2hvIDE1MDAgPiAvcHJvYy9zeXMvbmV0L2lwdjQvbmV0ZmlsdGVyL2lwX2N0X3RjcF90aW1lb3V0X3RpbWVfd2FpdAogICAgICAgIGVjaG8gMCA+IC9wcm9jL3N5cy9uZXQvaXB2NC9uZXRmaWx0ZXIvaXBfY3RfdGNwX2xvZ19pbnZhbGlkX3NjYWxlCiAgICAgICAgZWNobyAwID4gL3Byb2Mvc3lzL25ldC9pcHY0L25ldGZpbHRlci9pcF9jdF90Y3BfbG9nX291dF9vZl93aW5kb3cKZmkKCmVjaG8gMTAyNCA2MDk5OSA+IC9wcm9jL3N5cy9uZXQvaXB2NC9pcF9sb2NhbF9wb3J0X3JhbmdlCmVjaG8gMzAgPiAvcHJvYy9zeXMvbmV0L2lwdjQvdGNwX2Zpbl90aW1lb3V0CmVjaG8gNDA5NiA+IC9wcm9jL3N5cy9uZXQvaXB2NC90Y3BfbWF4X3N5bl9iYWNrbG9nCmVjaG8gMjYyMTQ0ID4gL3Byb2Mvc3lzL25ldC9pcHY0L3RjcF9tYXhfdHdfYnVja2V0cwplY2hvIDI2MjE0NCA+IC9wcm9jL3N5cy9uZXQvaXB2NC90Y3BfbWF4X29ycGhhbnMKZWNobyAzMDAgPiAvcHJvYy9zeXMvbmV0L2lwdjQvdGNwX2tlZXBhbGl2ZV90aW1lCmVjaG8gMSA+IC9wcm9jL3N5cy9uZXQvaXB2NC90Y3BfdHdfcmVjeWNsZQplY2hvIDAgPiAvcHJvYy9zeXMvbmV0L2lwdjQvdGNwX3RpbWVzdGFtcHMKZWNobyAwID4gL3Byb2Mvc3lzL25ldC9pcHY0L3RjcF9lY24KZWNobyAxID4gL3Byb2Mvc3lzL25ldC9pcHY0L3RjcF9zYWNrCmVjaG8gMCA+IC9wcm9jL3N5cy9uZXQvaXB2NC90Y3BfZHNhY2sKCiMgYXV0by10dW5lZCBvbiAyLjQKI2VjaG8gMjYyMTQzID4gL3Byb2Mvc3lzL25ldC9jb3JlL3JtZW1fbWF4CiNlY2hvIDI2MjE0MyA+IC9wcm9jL3N5cy9uZXQvY29yZS9ybWVtX2RlZmF1bHQKCmVjaG8gMTYzODQgNjU1MzYgNTI0Mjg4ID4gL3Byb2Mvc3lzL25ldC9pcHY0L3RjcF9ybWVtCmVjaG8gMTYzODQgMzQ5NTIwIDY5OTA0MCA+IC9wcm9jL3N5cy9uZXQvaXB2NC90Y3Bfd21lbQoKLS0gY3V0IGhlcmUgLS0KClNvdXMgRnJlZUJTRAo9PT09PT09PT09PT0KClVuIHBvcnQgZGUgSEEtUHJveHkgc291cyBGcmVlQlNEIGVzdCBk6XNvcm1haXMgZGlzcG9uaWJsZSwgZ3LiY2Ug4ApDbGVtZW50IExhZm9yZXQgPHNoZWVwa2lsbGVyQGN1bHRkZWFkc2hlZXAub3JnPi4KClBvdXIgcGx1cyBkJ2luZm9ybWF0aW9ucyA6Cmh0dHA6Ly93d3cuZnJlZWJzZC5vcmcvY2dpL3VybC5jZ2k/cG9ydHMvbmV0L2hhcHJveHkvcGtnLWRlc2NyCmh0dHA6Ly93d3cuZnJlZWJzZC5vcmcvY2dpL2N2c3dlYi5jZ2kvcG9ydHMvbmV0L2hhcHJveHkvCmh0dHA6Ly93d3cuZnJlc2hwb3J0cy5vcmcvbmV0L2hhcHJveHkKCgotLSBmaW4gLS0K