ICAgICAgICAgICAgICAgICAgICAgICAgICAgLS0tLS0tLS0tLS0tLS0tLS0tLQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIQVByb3h5CiAgICAgICAgICAgICAgICAgICAgICAgICAgIE1hbnVlbCBkZSBy6WbpcmVuY2UKICAgICAgICAgICAgICAgICAgICAgICAgICAgLS0tLS0tLS0tLS0tLS0tLS0tLQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZXJzaW9uIDEuMy4yCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpbGx5IHRhcnJlYXUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyMDA2LzA5LzAzCgo9PT09PT09PT09PT09PT09CnwgSW50cm9kdWN0aW9uIHwKPT09PT09PT09PT09PT09PQoKSEFQcm94eSBlc3QgdW4gcmVsYWlzIFRDUC9IVFRQIG9mZnJhbnQgZGVzIGZhY2lsaXTpcyBkJ2ludOlncmF0aW9uIGVuCmVudmlyb25uZW1lbnQgaGF1dGVtZW50IGRpc3BvbmlibGUuIEVuIGVmZmV0LCBpbCBlc3QgY2FwYWJsZSBkZSA6CiAgLSBlZmZlY3R1ZXIgdW4gYWlndWlsbGFnZSBzdGF0aXF1ZSBk6WZpbmkgcGFyIGRlcyBjb29raWVzIDsKICAtIGVmZmVjdHVlciB1bmUgculwYXJ0aXRpb24gZGUgY2hhcmdlIGF2ZWMgY3LpYXRpb24gZGUgY29va2llcyBwb3VyIGFzc3VyZXIKICAgIGxhIHBlcnNpc3RlbmNlIGRlIHNlc3Npb24gOyAKICAtIGZvdXJuaXIgdW5lIHZpc2liaWxpdOkgZXh0ZXJuZSBkZSBzb24g6XRhdCBkZSBzYW506SA7CiAgLSBzJ2Fycup0ZXIgZW4gZG91Y2V1ciBzYW5zIHBlcnRlIGJydXRhbGUgZGUgc2VydmljZSA7CiAgLSBtb2RpZmllci9ham91dGVyL3N1cHByaW1lciBkZXMgZW4tdOp0ZXMgZGFucyBsYSByZXF16nRlIGV0IGxhIHLpcG9uc2UgOwogIC0gaW50ZXJkaXJlIGRlcyByZXF16nRlcyBxdWkgdulyaWZpZW50IGNlcnRhaW5lcyBjb25kaXRpb25zIDsKICAtIHV0aWxpc2VyIGRlcyBzZXJ2ZXVycyBkZSBzZWNvdXJzIGxvcnNxdWUgbGVzIHNlcnZldXJzIHByaW5jaXBhdXggc29udCBob3JzCiAgICBkJ3VzYWdlLgogIC0gbWFpbnRlbmlyIGRlcyBjbGllbnRzIHN1ciBsZSBib24gc2VydmV1ciBzZXJ2ZXVyIGQnYXBwbGljYXRpb24gZW4gZm9uY3Rpb24KICAgIGRlIGNvb2tpZXMgYXBwbGljYXRpZnMuCiAgLSBmb3VybmlyIGRlcyByYXBwb3J0cyBkJ+l0YXQgZW4gSFRNTCDgIGRlcyB1dGlsaXNhdGV1cnMgYXV0aGVudGlmaelzLCDgCiAgICB0cmF2ZXJzIGRlcyBVUkkgZGUgbCdhcHBsaWNhdGlvbiBpbnRlcmNlcHTpZXMuCgpJbCByZXF1aWVydCBwZXUgZGUgcmVzc291cmNlcywgZXQgc29uIGFyY2hpdGVjdHVyZSDpduluZW1lbnRpZWxsZSBtb25vLQpwcm9jZXNzdXMgbHVpIHBlcm1ldCBmYWNpbGVtZW50IGRlIGfpcmVyIHBsdXNpZXVycyBtaWxsaWVycyBkZSBjb25uZXhpb25zCnNpbXVsdGFu6WVzIHN1ciBwbHVzaWV1cnMgcmVsYWlzIHNhbnMgZWZmb25kcmVyIGxlIHN5c3TobWUuCgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09CnwgUGFyYW3odHJlcyBkZSBsYW5jZW1lbnQgfAo9PT09PT09PT09PT09PT09PT09PT09PT09PT0KCkxlcyBvcHRpb25zIGRlIGxhbmNlbWVudCBzb250IHBldSBub21icmV1c2VzIDoKCiAgICAtZiA8ZmljaGllciBkZSBjb25maWd1cmF0aW9uPgogICAgLW4gPG5vbWJyZSBtYXhpbWFsIHRvdGFsIGRlIGNvbm5leGlvbnMgc2ltdWx0YW7pZXM+CiAgICAgICA9ICdtYXhjb25uJyBkYW5zIGxhIHNlY3Rpb24gJ2dsb2JhbCcKICAgIC1OIDxub21icmUgbWF4aW1hbCBkZSBjb25uZXhpb25zIHNpbXVsdGFu6WVzIHBhciBpbnN0YW5jZT4KICAgICAgID0gJ21heGNvbm4nIGRhbnMgbGVzIHNlY3Rpb25zICdsaXN0ZW4nIG91ICdkZWZhdWx0JwogICAgLWQgYWN0aXZlIGxlIG1vZGUgZGVidWcKICAgIC1EIHBhc3NlIGVuIGRhZW1vbgogICAgLXEgZOlzYWN0aXZlIGwnYWZmaWNoYWdlIGRlIG1lc3NhZ2VzIHN1ciBsYSBzb3J0aWUgc3RhbmRhcmQuCiAgICAtViBhZmZpY2hlIGxlcyBtZXNzYWdlcyBzdXIgbGEgc29ydGllIHN0YW5kYXJkLCBt6m1lIHNpIC1xIG91ICdxdWlldCcgc29udAogICAgICAgc3DpY2lmaelzLgogICAgLWMgdulyaWZpZSBsZSBmaWNoaWVyIGRlIGNvbmZpZ3VyYXRpb24gcHVpcyBxdWl0dGUgYXZlYyB1biBjb2RlIGRlIHJldG91ciAwCiAgICAgICBzaSBhdWN1bmUgZXJyZXVyIG4nYSDpdOkgdHJvdXbpZSwgb3UgMSBzaSB1bmUgZXJyZXVyIGRlIHN5bnRheGUgYSDpdOkKICAgICAgIGTpdGVjdOllLgogICAgLXAgPGZpY2hpZXI+IGluZGlxdWUgYXUgcHJvY2Vzc3VzIHDocmUgcXUnaWwgZG9pdCDpY3JpcmUgbGVzIFBJRHMgZGUgc2VzCiAgICAgICBmaWxzIGRhbnMgY2UgZmljaGllciBlbiBtb2RlIGTpbW9uLgogICAgLXNmIHNwZWNpZmllIHVuZSBsaXN0ZSBkZSBQSURzIGF1eHF1ZWxzIGVudm95ZXIgdW4gc2lnbmFsIEZJTklTSAogICAgLXN0IHNwZWNpZmllIHVuZSBsaXN0ZSBkZSBQSURzIGF1eHF1ZWxzIGVudm95ZXIgdW4gc2lnbmFsIFRFUk1JTkFURQogICAgLXMgYWZmaWNoZSBsZXMgc3RhdGlzdGlxdWVzIChzaSBvcHRpb24gY29tcGls6WUpCiAgICAtbCBham91dGUgZGVzIGluZm9ybWF0aW9ucyBhdXggc3RhdGlzdGlxdWVzCiAgICAtZGUgZOlzYWN0aXZlIGwndXRpbGlzYXRpb24gZGUgZXBvbGwoKQogICAgLWRwIGTpc2FjdGl2ZSBsJ3V0aWxpc2F0aW9uIGRlIHBvbGwoKQogICAgLWRiIGTpc2FjdGl2ZSBsYSBtaXNlIGVuIGFycmnocmUtcGxhbiAodXRpbGUgcG91ciBk6WJ1Z2dlcikKICAgIC1tIDxtZWdzPiBhcHBsaXF1ZSB1bmUgbGltaXRhdGlvbiBkZSA8bWVncz4gTW8gZCd1dGlsaXNhdGlvbiBt6W1vaXJlCgpMZSBub21icmUgbWF4aW1hbCBkZSBjb25uZXhpb24gc2ltdWx0YW7pZXMgcGFyIHByb3h5IGVzdCBsZSBwYXJhbeh0cmUgcGFyCmTpZmF1dCBwb3VyIGxlcyBwcm94aWVzIHBvdXIgbGVzcXVlbHMgY2UgcGFyYW3odHJlIG4nZXN0IHBhcyBwculjaXPpIGRhbnMgbGUKZmljaGllciBkZSBjb25maWd1cmF0aW9uLiBJbCBzJ2FnaXQgZHUgcGFyYW3odHJlICdtYXhjb25uJyBkYW5zIGxlcyBzZWN0aW9ucwonbGlzdGVuJy4KCkxlIG5vbWJyZSBtYXhpbWFsIHRvdGFsIGRlIGNvbm5leGlvbnMgc2ltdWx0YW7pZXMgbGltaXRlIGxlIG5vbWJyZSBkZQpjb25uZXhpb25zIFRDUCB1dGlsaXNhYmxlcyDgIHVuIGluc3RhbnQgZG9ubukgcGFyIGxlIHByb2Nlc3N1cywgdG91cyBwcm94aWVzCmNvbmZvbmR1cy4gQ2UgcGFyYW3odHJlIHJlbXBsYWNlIGxlIHBhcmFt6HRyZSAnbWF4Y29ubicgZGUgbGEgc2VjdGlvbiAnZ2xvYmFsJy4KCkxlIG1vZGUgZGVidWcgY29ycmVzcG9uZCDgIGwnb3B0aW9uICdkZWJ1ZycgZGUgbGEgc2VjdGlvbiAnZ2xvYmFsJy4gRGFucyBjZQptb2RlLCB0b3V0ZXMgbGVzIGNvbm5leGlvbnMsIGTpY29ubmV4aW9ucywgZXQgdG91cyBsZXMg6WNoYW5nZXMgZCdlbi106nRlcyBIVFRQCnNvbnQgYWZmaWNo6XMuCgpQb3VyIGRlYnVnZ2VyLCBsJ29wdGlvbiAnLWRiJyBlc3QgdHLocyBwcmF0aXF1ZSBjYXIgZWxsZSBk6XNhY3RpdmUKdGVtcG9yYWlyZW1lbnQgbGUgbW9kZSBkYWVtb24gZXQgbGUgbW9kZSBtdWx0aS1wcm9jZXNzdXMuIExlIHNlcnZpY2UgcGV1dCBhbG9ycwrqdHJlIGFycup06SBwYXIgdW4gc2ltcGxlIGFwcHVpIHN1ciBDdHJsLUMsIHNhbnMgYXZvaXIg4CBtb2RpZmllciBsYQpjb25maWd1cmF0aW9uIG5pIOAgYWN0aXZlciBsZSBtb2RlIGRlYnVnIGNvbXBsZXQuCgpMZXMgc3RhdGlzdGlxdWVzIG5lIHNvbnQgZGlzcG9uaWJsZXMgcXVlIHNpIGxlIHByb2dyYW1tZSBhIOl06SBjb21waWzpIGF2ZWMKbCdvcHRpb24gIlNUQVRUSU1FIi4gSWwgcydhZ2l0IHByaW5jaXBhbGVtZW50IGRlIGRvbm7pZXMgYnJ1dGVzIG4nYXlhbnQKZCd1dGlsaXTpIHF1ZSBsb3JzIGRlIGJlbmNobWFya3MgcGFyIGV4ZW1wbGUsIGV0IHNvbnQgYW1lbullcyDgIGRpc3BhcmFpdHJlLgoKTGVzIHBhcmFt6HRyZXMgJy1zdCcgZXQgJy1zZicgc29udCB1dGlsaXPpcyBwb3VyIGxhIHJlY29uZmlndXJhdGlvbiDgIGNoYXVkLgpWb2lyIGxhIHNlY3Rpb24g4CBjZSBzdWpldC4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT0KfCBGaWNoaWVyIGRlIGNvbmZpZ3VyYXRpb24gfAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09CgpTdHJ1Y3R1cmUKPT09PT09PT09CgpMJ2FuYWx5c2V1ciBkdSBmaWNoaWVyIGRlIGNvbmZpZ3VyYXRpb24gaWdub3JlIGRlcyBsaWduZXMgdmlkZXMsIGxlcyBlc3BhY2VzLApsZXMgdGFidWxhdGlvbnMsIGV0IHRvdXQgY2UgcXVpIGVzdCBjb21wcmlzIGVudHJlIGxlIHN5bWJvbGUgJyMnIChzJ2lsIG4nZXN0CnBhcyBwculj6WTpIGQndW4gJ1wnKSwgZXQgbGEgZmluIGRlIGxhIGxpZ25lLCBjZSBxdWkgY29uc3RpdHVlIHVuIGNvbW1lbnRhaXJlLgoKTGUgZmljaGllciBkZSBjb25maWd1cmF0aW9uIGVzdCBk6WNvdXDpIGVuIHNlY3Rpb25zIHLpcOly6WVzIHBhciBkZXMgbW90cyBjbOlzCnRlbHMgcXVlIDoKCiAgLSAnZ2xvYmFsJwogIC0gJ2xpc3RlbicKICAtICdkZWZhdWx0cycKClRvdXMgbGVzIHBhcmFt6HRyZXMgZm9udCBy6WbpcmVuY2Ug4CBsYSBzZWN0aW9uIGTpZmluaWUgcGFyIGxlIGRlcm5pZXIgbW90IGNs6QpyZWNvbm51LgoKCjEpIFBhcmFt6HRyZXMgZ2xvYmF1eAo9PT09PT09PT09PT09PT09PT09PT0KCklsIHMnYWdpdCBkZXMgcGFyYW3odHJlcyBhZ2lzc2FudCBzdXIgbGUgcHJvY2Vzc3VzLCBvdSBiaWVuIHN1ciBsJ2Vuc2VtYmxlIGRlcwpwcm94aWVzLiBJbHMgc29udCB0b3VzIHNw6WNpZmnpcyBkYW5zIGxhIHNlY3Rpb24gJ2dsb2JhbCcuIExlcyBwYXJhbeh0cmVzCnN1cHBvcnTpcyBzb250IDoKCiAgLSBsb2cgPGFkcmVzc2U+IDxjYXTpZ29yaWU+IFtuaXZlYXVfbWF4XQogIC0gbWF4Y29ubiA8bm9tYnJlPgogIC0gdWlkIDxpZGVudGlmaWFudD4KICAtIGdpZCA8aWRlbnRpZmlhbnQ+CiAgLSB1c2VyIDxub20gZCd1dGlsaXNhdGV1cj4KICAtIGdyb3VwIDxub20gZGUgZ3JvdXBlPgogIC0gY2hyb290IDxy6XBlcnRvaXJlPgogIC0gbmJwcm9jIDxub21icmU+CiAgLSBkYWVtb24KICAtIGRlYnVnCiAgLSBub2Vwb2xsCiAgLSBub3BvbGwKICAtIHF1aWV0CiAgLSBwaWRmaWxlIDxmaWNoaWVyPgogIC0gdWxpbWl0LW4gPG5vbWJyZT4KCgoxLjEpIEpvdXJuYWxpc2F0aW9uIGRlcyDpduluZW1lbnRzCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KTGEgcGx1cGFydCBkZXMg6XbpbmVtZW50cyBzb250IGpvdXJuYWxpc+lzIDogZOltYXJyYWdlcywgYXJy6nRzLCBkaXNwYXJpdGlvbiBldAphcHBhcml0aW9uIGRlIHNlcnZldXJzLCBjb25uZXhpb25zLCBlcnJldXJzLiBUb3VzIGxlcyBtZXNzYWdlcyBzb250IGVudm956XMgZW4Kc3lzbG9nIHZlcnMgdW4gb3UgZGV1eCBzZXJ2ZXVycy4gTGEgc3ludGF4ZSBlc3QgbGEgc3VpdmFudGUgOgoKICAgIGxvZyA8YWRyZXNzZV9pcD4gPGNhdOlnb3JpZT4gW25pdmVhdV9tYXhdCgpMZXMgY29ubmV4aW9ucyBzb250IGVudm956WVzIGVuIG5pdmVhdSAiaW5mbyIuIExlcyBk6W1hcnJhZ2VzIGRlIHNlcnZpY2UgZXQgZGUKc2VydmV1cnMgc2Vyb250IGVudm956XMgZW4gIm5vdGljZSIsIGxlcyBzaWduYXV4IGQnYXJy6nRzIGVuICJ3YXJuaW5nIiBldCBsZXMKYXJy6nRzIGTpZmluaXRpZnMgZGUgc2VydmljZXMgZXQgZGUgc2VydmV1cnMgZW4gImFsZXJ0Ii4gQ2VjaSBlc3QgdmFsYWJsZSBhdXNzaQpiaWVuIHBvdXIgbGVzIHByb3hpZXMgcXVlIHBvdXIgbGVzIHNlcnZldXJzIHRlc3TpcyBwYXIgbGVzIHByb3hpZXMuIExlCnBhcmFt6HRyZSBvcHRpb25uZWwgPG5pdmVhdV9tYXg+IGTpZmluaXQgbGUgbml2ZWF1IG1heGltYWwgZGUgdHJhY2VzIOltaXNlcwpwYXJtaSBsZXMgOCB2YWxldXJzIHN1aXZhbnRlcyAgOgogICAgZW1lcmcsIGFsZXJ0LCBjcml0LCBlcnIsIHdhcm5pbmcsIG5vdGljZSwgaW5mbywgZGVidWcKClBhciBjb21wYXRpYmlsaXTpIGF2ZWMgbGVzIHZlcnNpb25zIDEuMS4xNiBldCBhbnTpcmlldXJlcywgbGEgdmFsZXVyIHBhciBk6WZhdXQKZXN0ICJkZWJ1ZyIgc2kgbCdvcHRpb24gbidlc3QgcGFzIHBy6WNpc+llLgoKTGVzIGNhdOlnb3JpZXMgcG9zc2libGVzIHNvbnQgOgogICAga2VybiwgdXNlciwgbWFpbCwgZGFlbW9uLCBhdXRoLCBzeXNsb2csIGxwciwgbmV3cywKICAgIHV1Y3AsIGNyb24sIGF1dGgyLCBmdHAsIG50cCwgYXVkaXQsIGFsZXJ0LCBjcm9uMiwKICAgIGxvY2FsMCwgbG9jYWwxLCBsb2NhbDIsIGxvY2FsMywgbG9jYWw0LCBsb2NhbDUsIGxvY2FsNiwgbG9jYWw3CgpDb25mb3Jt6W1lbnQg4CBsYSBSRkMzMTY0LCBsZXMgbWVzc2FnZXMg6W1pcyBzb250IGxpbWl06XMg4CAxMDI0IGNhcmFjdOhyZXMuCgpFeGVtcGxlIDoKLS0tLS0tLS0tCiAgICBnbG9iYWwKICAgICAgICBsb2cgMTkyLjE2OC4yLjIwMCBsb2NhbDMKICAgICAgICBsb2cgMTI3LjAuMC4xICAgICBsb2NhbDQgbm90aWNlCgoxLjIpIGxpbWl0YXRpb24gZHUgbm9tYnJlIGRlIGNvbm5leGlvbnMKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCklsIGVzdCBwb3NzaWJsZSBldCBjb25zZWlsbOkgZGUgbGltaXRlciBsZSBub21icmUgZ2xvYmFsIGRlIGNvbm5leGlvbnMgcGFyCnByb2Nlc3N1cyDgIGwnYWlkZSBkdSBtb3QgY2zpIGdsb2JhbCAnbWF4Y29ubicuIExlcyBjb25uZXhpb25zIHNvbnQgY29tcHJpc2VzCmF1IHNlbnMgJ2FjY2VwdGF0aW9uIGRlIGNvbm5leGlvbicsIGRvbmMgaWwgZmF1dCBzJ2F0dGVuZHJlIGVuIHLoZ2xlIGfpbulyYWwg4Aphdm9pciB1biBwZXUgcGx1cyBkdSBkb3VibGUgZGUgc2Vzc2lvbnMgVENQIHF1ZSBsZSBtYXhpbXVtIGRlIGNvbm5leGlvbnMgZml46S4KQydlc3QgaW1wb3J0YW50IHBvdXIgZml4ZXIgbGUgcGFyYW3odHJlICd1bGltaXQgLW4nIGF2YW50IGRlIGxhbmNlciBsZSBwcm94eS4KUG91ciBjb21wdGFiaWxpc2VyIGxlIG5vbWJyZSBkZSBzb2NrZXRzIG7pY2Vzc2FpcmVzLCBpbCBmYXV0IHByZW5kcmUgZW4gY29tcHRlCmNlcyBwYXJhbeh0cmVzIDoKCiAgLSAxIHNvY2tldCBwYXIgY29ubmV4aW9uIGVudHJhbnRlCiAgLSAxIHNvY2tldCBwYXIgY29ubmV4aW9uIHNvcnRhbnRlCiAgLSAxIHNvY2tldCBwYXIgY291cGxlIGFkcmVzc2UvcG9ydCBkJ+ljb3V0ZSBwYXIgcHJveHkKICAtIDEgc29ja2V0IHBvdXIgY2hhcXVlIHNlcnZldXIgZW4gY291cnMgZGUgaGVhbHRoLWNoZWNrCiAgLSAxIHNvY2tldCBwb3VyIGxlcyBsb2dzICh0b3VzIHNlcnZldXJzIGNvbmZvbmR1cykKCkRhbnMgbGUgY2FzIG/5IGNoYXF1ZSBwcm94eSBuJ+ljb3V0ZSBxdWUgc3VyIHVuIGNvdXBsZSBhZHJlc3NlL3BvcnQsCnBvc2l0aW9ubmVyIGxhIGxpbWl0ZSBkdSBub21icmUgZGUgZGVzY3JpcHRldXJzIGRlIGZpY2hpZXJzICh1bGltaXQgLW4pIOAgCigyICogbWF4Y29ubiArIG5icHJveHkgKyBuYnNlcnZldXJzICsgMSkuIEEgcGFydGlyIGRlcyB2ZXJzaW9ucyAxLjEuMzIvMS4yLjYsCmlsIGVzdCBwb3NzaWJsZSBkZSBzcOljaWZpZXIgY2V0dGUgbGltaXRlIGRhbnMgbGEgY29uZmlndXJhdGlvbiDgIGwnYWlkZSBkdQptb3QtY2zpIGdsb2JhbCAndWxpbWl0LW4nLCDgIGNvbmRpdGlvbiBiaWVuIGVudGVuZHUgcXVlIGxlIHByb3h5IGFpdCDpdOkKZOltYXJy6SBzb3VzIGxlIGNvbXB0ZSByb290IChvdSBhdmVjIGRlcyBkcm9pdHMgc3VmZmlzYW50cyBwb3VyIOlsZXZlciBsZQpub21icmUgZGUgZGVzY3JpcHRldXJzIGRlIGZpY2hpZXJzKS4gQ2V0dGUgc29sdXRpb24gbWV0IHVuIHRlcm1lIGF1IHByb2Js6G1lCnLpY3VycmVudCBkJ2luY2VydGl0dWRlIGRlIGwnYWTpcXVhdGlvbiBlbnRyZSBsZXMgbGltaXRlcyBzeXN06G1lcyBsb3JzIGRlIGxhCmRlcm5p6HJlIHJlbGFuY2UgZHUgcHJveGVzc3VzIGV0IGxlcyBsaW1pdGVzIGVuIG5vbWJyZSBkZSBjb25uZXhpb25zLiBOb3RlciBxdWUKY2V0dGUgbGltaXRlIHMnYXBwbGlxdWUgcGFyIHByb2Nlc3N1cy4KCkV4ZW1wbGUgOgotLS0tLS0tLS0KICAgIGdsb2JhbAogICAgICAgIG1heGNvbm4gMzIwMDAKICAgICAgICB1bGltaXQtbiA2NTUzNgoKCjEuMykgRGltaW51dGlvbiBkZXMgcHJpdmls6GdlcwotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KQWZpbiBkZSBy6WR1aXJlIGxlcyByaXNxdWVzIGQnYXR0YXF1ZXMgZGFucyBsZSBjYXMgb/kgdW5lIGZhaWxsZSBub24gaWRlbnRpZmnpZQpzZXJhaXQgZXhwbG9pdOllLCBpbCBlc3QgcG9zc2libGUgZGUgZGltaW51ZXIgbGVzIHByaXZpbOhnZXMgZHUgcHJvY2Vzc3VzLCBldApkZSBsJ2lzb2xlciBkYW5zIHVuIHLpcGVydG9pcmUgc2FucyByaXNxdWUuCgpEYW5zIGxhIHNlY3Rpb24gJ2dsb2JhbCcsIGxlIHBhcmFt6HRyZSAndWlkJyBwZXJtZXQgZGUgc3DpY2lmaWVyIHVuIGlkZW50aWZpYW50Cm51belyaXF1ZSBkJ3V0aWxpc2F0ZXVyLiBMYSB2YWxldXIgMCwgY29ycmVzcG9uZGFudCBub3JtYWxlbWVudCBhdSBzdXBlci0KdXRpbGlzYXRldXIsIHBvc3PoZGUgaWNpIHVuZSBzaWduaWZpY2F0aW9uIHBhcnRpY3VsaehyZSBjYXIgZWxsZSBpbmRpcXVlIHF1ZQpsJ29uIG5lIHNvdWhhaXRlIHBhcyBjaGFuZ2VyIGNldCBpZGVudGlmaWFudCBldCBjb25zZXJ2ZXIgbGEgdmFsZXVyIGNvdXJhbnRlLgpDJ2VzdCBsYSB2YWxldXIgcGFyIGTpZmF1dC4gRGUgbGEgbeptZSBtYW5p6HJlLCBsZSBwYXJhbeh0cmUgJ2dpZCcgY29ycmVzcG9uZCDgCnVuIGlkZW50aWZpYW50IGRlIGdyb3VwZSwgZXQgdXRpbGlzZSBwYXIgZOlmYXV0IGxhIHZhbGV1ciAwIHBvdXIgbmUgcmllbgpjaGFuZ2VyLiBEYW5zIGxlIGNhcyBv+SBpbCBuZSBzZXJhaXQgcGFzIHBvc3NpYmxlIGRlIHNw6WNpZmllciB1biBpZGVudGlmaWFudApudW3pcmlxdWUgcG91ciBsJ3VpZCwgaWwgZXN0IHBvc3NpYmxlIGRlIHNw6WNpZmllciB1biBub20gZCd1dGlsaXNhdGV1ciBhcHLocwpsZSBtb3QtY2zpICd1c2VyJy4gRGUgbGEgbeptZSBtYW5p6HJlLCBpbCBlc3QgcG9zc2libGUgZGUgcHLpY2lzZXIgdW4gbm9tIGRlCmdyb3VwZSBhcHLocyBsZSBtb3QtY2zpICdncm91cCcuCgpJbCBlc3QgcGFydGljdWxp6HJlbWVudCBk6WNvbnNlaWxs6SBkJ3V0aWxpc2VyIGRlcyBjb21wdGVzIGfpbulyaXF1ZXMgdGVscyBxdWUKJ25vYm9keScgY2FyIGNldHRlIHByYXRpcXVlIHJldmllbnQg4CB1dGlsaXNlciAncm9vdCcgc2kgZCdhdXRyZXMgcHJvY2Vzc3VzCnV0aWxpc2VudCBsZXMgbeptZXMgaWRlbnRpZmlhbnRzLgoKTGUgcGFyYW3odHJlICdjaHJvb3QnIGF1dG9yaXNlIOAgY2hhbmdlciBsYSByYWNpbmUgZHUgcHJvY2Vzc3VzIHVuZSBmb2lzIGxlCnByb2dyYW1tZSBsYW5j6SwgZGUgc29ydGUgcXVlIG5pIGxlIHByb2Nlc3N1cywgbmkgbCd1biBkZSBzZXMgZGVzY2VuZGFudHMgbmUKcHVpc3NlbnQgcmVtb250ZXIgZGUgbm91dmVhdSDgIGxhIHJhY2luZS4gQ2UgdHlwZSBkZSBjbG9pc29ubmVtZW50IChjaHJvb3QpIGVzdApn6W7pcmFsZW1lbnQgY29udG91cm5hYmxlIHN1ciBjZXJ0YWlucyBPUyAoTGludXgsIFNvbGFyaXMpIHBvdXIgcGV1IHF1ZQpsJ2F0dGFxdWFudCBwb3Nz6GRlIGRlcyBkcm9pdHMgJ3Jvb3QnIGV0IHNvaXQgZW4gbWVzdXJlIGQndXRpbGlzZXIgb3UgZGUgY3LpZXIKdW4gculwZXJ0b2lyZS4gQXVzc2ksIGlsIGVzdCBpbXBvcnRhbnQgZCd1dGlsaXNlciB1biBy6XBlcnRvaXJlIHNw6WNpZmlxdWUgYXUKc2VydmljZSBwb3VyIGNldCB1c2FnZSwgZXQgZGUgbmUgcGFzIG11dHVhbGlzZXIgdW4gbeptZSBy6XBlcnRvaXJlIHBvdXIKcGx1c2lldXJzIHNlcnZpY2VzIGRlIG5hdHVyZSBkaWZm6XJlbnRlLiBQb3VyIHJlbmRyZSBsJ2lzb2xlbWVudCBwbHVzIHJvYnVzdGUsCmlsIGVzdCBjb25zZWlsbOkgZCd1dGlsaXNlciB1biBy6XBlcnRvaXJlIHZpZGUsIHNhbnMgYXVjdW4gZHJvaXQsIGV0IGRlIGNoYW5nZXIKbCd1aWQgZHUgcHJvY2Vzc3VzIGRlIHNvcnRlIHF1J2lsIG5lIHB1aXNzZSByaWVuIGZhaXJlIGRhbnMgbGVkaXQgculwZXJ0b2lyZS4KClJlbWFycXVlIGltcG9ydGFudGUgOgotLS0tLS0tLS0tLS0tLS0tLS0tLS0KRGFucyBsZSBjYXMgb/kgdW5lIHRlbGxlIGZhaWxsZSBzZXJhaXQgbWlzZSBlbiDpdmlkZW5jZSwgaWwgZXN0IGZvcnQgcHJvYmFibGUKcXVlIGxlcyBwcmVtaehyZXMgdGVudGF0aXZlcyBkZSBzb24gZXhwbG9pdGF0aW9uIHByb3ZvcXVlbnQgdW4gYXJy6nQgZHUKcHJvZ3JhbW1lLCDgIGNhdXNlIGQndW4gc2lnbmFsIGRlIHR5cGUgJ1NlZ21lbnRhdGlvbiBGYXVsdCcsICdCdXMgRXJyb3InIG91CmVuY29yZSAnSWxsZWdhbCBJbnN0cnVjdGlvbicuIE3qbWUgcydpbCBlc3QgdnJhaSBxdWUgZmFpcmUgdG91cm5lciBsZSBzZXJ2ZXVyCmVuIGVudmlyb25uZW1lbnQgbGltaXTpIHLpZHVpdCBsZXMgcmlzcXVlcyBkJ2ludHJ1c2lvbiwgaWwgZXN0IHBhcmZvaXMgYmllbgp1dGlsZSBkYW5zIGNlcyBjaXJjb25zdGFuY2VzIGRlIGNvbm5h7nRyZSBsZXMgY29uZGl0aW9ucyBkJ2FwcGFyaXRpb24gZHUKcHJvYmzobWUsIHZpYSBsJ29idGVudGlvbiBkJ3VuIGZpY2hpZXIgJ2NvcmUnLiBMYSBwbHVwYXJ0IGRlcyBzeXN06G1lcywgcG91cgpkZXMgcmFpc29ucyBkZSBz6WN1cml06SwgZOlzYWN0aXZlbnQgbGEgZ+lu6XJhdGlvbiBkdSBmaWNoaWVyICdjb3JlJyBhcHLocyB1bgpjaGFuZ2VtZW50IGQnaWRlbnRpZmlhbnQgcG91ciBsZSBwcm9jZXNzdXMuIElsIGZhdWRyYSBkb25jIHNvaXQgbGFuY2VyIGxlCnByb2Nlc3N1cyDgIHBhcnRpciBkJ3VuIGNvbXB0ZSB1dGlsaXNhdGV1ciBhdXggZHJvaXRzIHLpZHVpdHMgKG1haXMgbmUgcG91dmFudApwYXMgZWZmZWN0dWVyIGxlIGNocm9vdCksIG91IGJpZW4gbGUgZmFpcmUgZW4gcm9vdCBzYW5zIHLpZHVjdGlvbiBkZXMgZHJvaXRzCih1aWQgMCkuIERhbnMgY2UgY2FzLCBsZSBmaWNoaWVyIHNlIHRyb3V2ZXJhIHNvaXQgZGFucyBsZSBy6XBlcnRvaXJlIGRlCmxhbmNlbWVudCwgc29pdCBkYW5zIGxlIHLpcGVydG9pcmUgc3DpY2lmaekgYXBy6HMgbCdvcHRpb24gJ2Nocm9vdCcuIE5lIHBhcwpvdWJsaWVyIGxhIGNvbW1hbmRlIHN1aXZhbnRlIHBvdXIgYXV0b3Jpc2VyIGxhIGfpbulyYXRpb24gZHUgZmljaGllciBhdmFudCBkZQpsYW5jZXIgbGUgcHJvZ3JhbW1lIDoKCiMgdWxpbWl0IC1jIHVubGltaXRlZAoKRXhlbXBsZSA6Ci0tLS0tLS0tLQoKICAgICMgd2l0aCB1aWQvZ2lkCiAgICBnbG9iYWwKICAgICAgICB1aWQgICAgICAgIDMwMDAwCiAgICAgICAgZ2lkICAgICAgICAzMDAwMAogICAgICAgIGNocm9vdCAgL3Zhci9jaHJvb3QvaGFwcm94eQoKICAgICMgd2l0aCB1c2VyL2dyb3VwCiAgICBnbG9iYWwKICAgICAgICB1c2VyICAgIGhhcHJveHkKICAgICAgICBncm91cCAgIHB1YmxpYwogICAgICAgIGNocm9vdCAgL3Zhci9jaHJvb3QvaGFwcm94eQoKCjEuNCkgTW9kZXMgZGUgZm9uY3Rpb25uZW1lbnQKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpMZSBzZXJ2aWNlIHBldXQgZm9uY3Rpb25uZXIgZGFucyBwbHVzaWV1cnMgbW9kZXMgOgogIC0gYXZhbnQtIC8gYXJyaehyZS1wbGFuCiAgLSBzaWxlbmNpZXV4IC8gbm9ybWFsIC8gZGVidWcKCkxlIG1vZGUgcGFyIGTpZmF1dCBlc3Qgbm9ybWFsLCBhdmFudC1wbGFuLCBjJ2VzdCDgIGRpcmUgcXVlIGxlIHByb2dyYW1tZSBuZQpyZW5kIHBhcyBsYSBtYWluIHVuZSBmb2lzIGxhbmPpLiBJbCBuZSBmYXV0IHN1cnRvdXQgcGFzIGxlIGxhbmNlciBjb21tZSBjZWNpCmRhbnMgdW4gc2NyaXB0IGRlIGTpbWFycmFnZSBkdSBzeXN06G1lLCBzaW5vbiBsZSBzeXN06G1lIG5lIGZpbmlyYWl0IHBhcyBzb24KaW5pdGlhbGlzYXRpb24uIElsIGZhdXQgbGUgbWV0dHJlIGVuIGFycmnocmUtcGxhbiwgZGUgc29ydGUgcXUnaWwgcmVuZGUgbGEgbWFpbgphdSBwcm9jZXNzdXMgYXBwZWxhbnQuIEMnZXN0IGNlIHF1ZSBmYWl0IGwnb3B0aW9uICdkYWVtb24nIGRlIGxhIHNlY3Rpb24KJ2dsb2JhbCcsIGV0IHF1aSBlc3QgbCfpcXVpdmFsZW50IGR1IHBhcmFt6HRyZSAnLUQnIGRlIGxhIGxpZ25lIGRlIGNvbW1hbmRlLgoKTGUgcGFyYW3odHJlIGRlIGxpZ25lIGRlIGNvbW1hbmRlICctZGInIGluaGliZSBsZXMgb3B0aW9ucyBnbG9iYWxlcyAnZGFlbW9uJwpldCAnbmJwcm9jJyBwb3VyIGZhaXJlIGZvbmN0aW9ubmVyIGxlIHByb2Nlc3N1cyBlbiBtb2RlIG5vcm1hbCwgYXZhbnQtcGxhbi4KClBhciBhaWxsZXVycywgY2VydGFpbnMgbWVzc2FnZXMgZCdhbGVydGUgc29udCB0b3Vqb3VycyBlbnZveelzIHN1ciBsYSBzb3J0aWUKc3RhbmRhcmQsIG3qbWUgZW4gbW9kZSAnZGFlbW9uJy4gUG91ciBuZSBwbHVzIGxlcyB2b2lyIGFpbGxldXJzIHF1ZSBkYW5zIGxlcwpsb2dzLCBpbCBzdWZmaXQgZGUgcGFzc2VyIGVuIG1vZGUgc2lsZW5jaWV1eCBwYXIgbCdham91dCBkZSBsJ29wdGlvbiAncXVpZXQnLgpDZXR0ZSBvcHRpb24gbidhIHBhcyBkJ+lxdWl2YWxlbnQgZW4gbGlnbmUgZGUgY29tbWFuZGUuCgpFbmZpbiwgbGUgbW9kZSAnZGVidWcnIHBlcm1ldCBkZSBkaWFnbm9zdGlxdWVyIGxlcyBvcmlnaW5lcyBkZSBjZXJ0YWlucwpwcm9ibOhtZXMgZW4gYWZmaWNoYW50IGxlcyBjb25uZXhpb25zLCBk6WNvbm5leGlvbnMgZXQg6WNoYW5nZXMgZCdlbi106nRlcyBIVFRQCmVudHJlIGxlcyBjbGllbnRzIGV0IGxlcyBzZXJ2ZXVycy4gQ2UgbW9kZSBlc3QgaW5jb21wYXRpYmxlIGF2ZWMgbGVzIG9wdGlvbnMKJ2RhZW1vbicgZXQgJ3F1aWV0JyBwb3VyIGRlcyByYWlzb25zIGRlIGJvbiBzZW5zLgoKMS41KSBBY2Nyb2lzc2VtZW50IGRlIGxhIGNhcGFjaXTpIGRlIHRyYWl0ZW1lbnQKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KU3VyIGRlcyBtYWNoaW5lcyBtdWx0aS1wcm9jZXNzZXVycywgaWwgcGV1dCBzZW1ibGVyIGfiY2jpIGRlIG4ndXRpbGlzZXIgcXUndW4KcHJvY2Vzc2V1ciBwb3VyIGVmZmVjdHVlciBsZXMgdOJjaGVzIGRlIHJlbGF5YWdlLCBt6m1lIHNpIGxlcyBjaGFyZ2VzCm7pY2Vzc2FpcmVzIOAgc2F0dXJlciB1biBwcm9jZXNzZXVyIGFjdHVlbCBzb250IGJpZW4gYXUtZGVs4CBkZXMgb3JkcmVzIGRlCmdyYW5kZXVyIGNvdXJhbW1lbnQgcmVuY29udHLpcy4gQ2VwZW5kYW50LCBwb3VyIGRlcyBiZXNvaW5zIHBhcnRpY3VsaWVycywgbGUKcHJvZ3JhbW1lIHNhaXQgZOltYXJyZXIgcGx1c2lldXJzIHByb2Nlc3N1cyBzZSBy6XBhcnRpc3NhbnQgbGEgY2hhcmdlIGRlCnRyYXZhaWwuIENlIG5vbWJyZSBkZSBwcm9jZXNzdXMgZXN0IHNw6WNpZmnpIHBhciBsZSBwYXJhbeh0cmUgJ25icHJvYycgZGUgbGEKc2VjdGlvbiAnZ2xvYmFsJy4gU2EgdmFsZXVyIHBhciBk6WZhdXQgZXN0IG5hdHVyZWxsZW1lbnQgMS4gQ2VjaSBuZSBmb25jdGlvbm5lCnF1J2VuIG1vZGUgJ2RhZW1vbicuIFVuIHVzYWdlIGTpauAgcmVuY29udHLpIHBvdXIgY2UgcGFyYW3odHJlIGZ1dCBkZSBk6XBhc3NlcgpsYSBsaW1pdGUgZGUgbm9tYnJlIGRlIGRlc2NyaXB0ZXVycyBkZSBmaWNoaWVycyBhbGxvdellIHBhciBwcm9jZXNzdXMgc291cwpTb2xhcmlzLgoKRXhlbXBsZSA6Ci0tLS0tLS0tLQoKICAgIGdsb2JhbAogICAgICAgIGRhZW1vbgogICAgICAgIHF1aWV0CiAgICAgICAgbmJwcm9jICAgICAgICAyCgoxLjYpIFNpbXBsaWZpY2F0aW9uIGRlIGxhIGdlc3Rpb24gZGVzIHByb2Nlc3N1cwotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpIYXByb3h5IHN1cHBvcnRlIGRvculuYXZhbnQgbGEgbm90aW9uIGRlIGZpY2hpZXJzIGRlIHBpZCAoLT4gcGlkZmlsZXMpLiBTaSBsZQpwYXJhbeh0cmUgJy1wJyBkZSBsaWduZSBkZSBjb21tYW5kZSwgb3UgbCdvcHRpb24gZ2xvYmFsZSAncGlkZmlsZScgc29udCBzdWl2aXMKZCd1biBub20gZGUgZmljaGllciwgYWxvcnMgY2UgZmljaGllciBzZXJhIHN1cHByaW3pIHB1aXMgcmVjcunpIGV0IGNvbnRpZW5kcmEKbGUgbnVt6XJvIGRlIFBJRCBkZXMgcHJvY2Vzc3VzIGZpbHMsIOAgcmFpc29uIGQndW4gcGFyIGxpZ25lICh2YWxhYmxlCnVuaXF1ZW1lbnQgZW4gbW9kZSBk6W1vbikuIENlIGZpY2hpZXIgbidlc3QgUEFTIHJlbGF0aWYgYXUgY2xvaXNvbm5lbWVudCBjaHJvb3QKYWZpbiBkZSByZXN0ZXIgY29tcGF0aWJsZSBhdmVjIHVuIHLpcGVydG9pcmUgcHJvdOln6SBlbiBsZWN0dXJlIHNldWxlLiBJbAphcHBhcnRpZW5kcmEg4CBsJ3V0aWxpc2F0ZXVyIGF5YW50IGxhbmPpIGxlIHByb2Nlc3N1cywgZXQgZGlzcG9zZXJhIGRlcyBkcm9pdHMKMDY0NC4KCkV4ZW1wbGUgOgotLS0tLS0tLS0KCiAgICBnbG9iYWwKICAgICAgICBkYWVtb24KICAgICAgICBxdWlldAogICAgICAgIG5icHJvYyAyCiAgICAgICAgcGlkZmlsZSAvdmFyL3J1bi9oYXByb3h5LXByaXZhdGUucGlkCgogICAgIyBwb3VyIHN0b3BwZXIgc2V1bGVtZW50IGNlcyBwcm9jZXNzdXMgcGFybWkgZCdhdXRyZXMgOgogICAgIyBraWxsICQoPC92YXIvcnVuL2hhcHJveHktcHJpdmF0ZS5waWQpCgogICAgIyBwb3VyIHJlY2hhcmdlciB1bmUgY29uZmlndXJhdGlvbiBhdmVjIHVuIGltcGFjdCBtaW5pbWFsIHN1ciBsZSBzZXJ2aWNlLAogICAgIyBldCBzYW5zIGNhc3NlciBsZXMgc2Vzc2lvbnMgZXhpc3RhbnRlcyA6CiAgICAjIGhhcHJveHkgLWYgaGFwcm94eS5jZmcgLXAgJCg8L3Zhci9ydW4vaGFwcm94eS1wcml2YXRlLnBpZCkgLXN0ICQoPC92YXIvcnVuL2hhcHJveHktcHJpdmF0ZS5waWQpCgoxLjcpIE3pY2FuaXNtZXMgZGUgdHJhaXRlbWVudHMgZGVzIOl26W5lbWVudHMKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkEgcGFydGlyIGRlIGxhIHZlcnNpb24gMS4yLjUsIGhhcHJveHkgc3VwcG9ydGUgbGVzIG3pY2FuaXNtZXMgcG9sbCgpIGV0CmVwb2xsKCkuIFN1ciBsZXMgc3lzdGVtcyBv+SBzZWxlY3QoKSBlc3QgbGltaXTpIHBhciBGRF9TRVRTSVpFIChjb21tZSBTb2xhcmlzKSwKcG9sbCgpIHBldXQg6nRyZSB1bmUgYWx0ZXJuYXRpdmUgaW506XJlc3NhbnRlLiBEZXMgdGVzdHMgZGUgcGVyZm9ybWFuY2UKbW9udHJlbnQgcXVlIGxlcyBwZXJmb3JtYW5jZXMgZGUgcG9sbCgpIG5lIGTpY3JvaXNzZW50IHBhcyBhdXNzaSB2aXRlIHF1ZSBsZQpub21icmUgZGUgc29ja2V0cyBhdWdtZW50ZSwgY2UgcXVpIGVuIGZhaXQgdW5lIHNvbHV0aW9uIHP7cmUgcG91ciBsZXMgZm9ydGVzCmNoYXJnZXMuIENlbGEgZGl0LCBTb2FscmlzIHV0aWxpc2UgZOlq4CBwb2xsKCkgcG91ciDpbXVsZXIgc2VsZWN0KCksIGRvbmMgdGFudApxdWUgbGUgbm9tYnJlIGRlIHNvY2tldHMgbmUgZOlwYXNzZSBwYXMgRkRfU0VUU0laRSwgcG9sbCgpIG5lIGRldnJhaXQgcGFzCmFwcG9ydGVyIGRlIHBlcmZvcm1hbmNlcyBzdXBwbOltZW50YWlyZXMuIFN1ciBsZXMgc3lzdOhtZXMg4CBiYXNlIExpbnV4CmluY2x1YW50IGxlIHBhdGNoIGVwb2xsKCkgKG91IHRvdXMgbGVzIExpbnV4IDIuNiksIGhhcHJveHkgdXRpbGlzZXJhIGVwb2xsKCkKcXVpIGVzdCBleHRy6G1lbWVudCByYXBpZGUgaW5k6XBlbmRhbW1lbnQgZHUgbm9tYnJlIGRlIHNvY2tldHMuIExlcyB0ZXN0cyBzdXIKaGFwcm94eSBvbnQgbW9udHLpIHVuZSBwZXJmb3JtYW5jZSBjb25zdGFudGUgZGUgMSDgIDQwMDAwIHNlc3Npb25zIHNpbXVsdGFu6WVzLgoKSGFwcm94eSB1dGlsaXNlcmEgZXBvbGwoKSBsb3JzcXUnaWwgZXN0IGRpc3BvbmlibGUsIGV0IHNlIHJlcGxpZXJhIHN1ciBwb2xsKCksCnB1aXMgZW4gZGVybmllciBsaWV1IHN1ciBzZWxlY3QoKS4gQ2VwZW5kYW50LCBzaSBwb3VyIHVuZSByYWlzb24gcXVlbGNvbnF1ZSBpbApzJ2F26XJhaXQgbuljZXNzYWlyZSBkZSBk6XNhY3RpdmVyIGVwb2xsKCkgb3UgcG9sbCgpIChwLmV4OiDgIGNhdXNlIGQndW4gYnVnIG91Cmp1c3RlIHBvdXIgY29tcGFyZXIgbGVzIHBlcmZvcm1hbmNlcyksIGRldXggbm91dmVsbGVzIG9wdGlvbnMgZ2xvYmFsZXMgb250IOl06Qpham91dOllcyBkYW5zIGNlIGJ1dCA6ICdub2Vwb2xsJyBldCAnbm9wb2xsJy4KCkV4ZW1wbGUgOgotLS0tLS0tLS0KICAgIGdsb2JhbAogICAgICAgICMgdXRpbGlzZXIgc2V1bGVtZW50IHNlbGVjdCgpCiAgICAgICAgbm9lcG9sbAogICAgICAgIG5vcG9sbAoKUmVtYXJxdWUgOgotLS0tLS0tLS0tCkRhbnMgbGUgYnV0IGQnYXNzdXJlciB1bmUgcG9ydGFiaWxpdOkgbWF4aW1hbGUgZGVzIGNvbmZpZ3VyYXRpb25zLCBjZXMgb3B0aW9ucwpzb250IGFjY2VwdOllcyBldCBpZ25vcullcyBzaSBsZXMgbeljYW5pc21lcyBwb2xsKCkgb3UgZXBvbGwoKSBuJ29udCBwYXMg6XTpCmFjdGl26XMgbG9ycyBkZSBsYSBjb21waWxhdGlvbi4KCkFmaW4gZGUgc2ltcGxpZmllciBsYSBy6XNvbHV0aW9uIGRlIHByb2Js6G1lcywgbGUgcGFyYW3odHJlICctZGUnIGVuIGxpZ25lIGRlCmNvbW1hbmRlIGTpc2FjdGl2ZSBlcG9sbCgpIGV0IGxlIHBhcmFt6HRyZSAnLWRwJyBk6XNhY3RpdmUgcG9sbCgpLiBJbHMgc29udApyZXNwZWN0aXZlbWVudCDpcXVpdmFsZW50cyDgICdub2Vwb2xsJyBldCAnbm9wb2xsJy4KCgoyKSBE6WZpbml0aW9uIGQndW4gc2VydmljZSBlbiDpY291dGUKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CgpMZXMgc2VjdGlvbnMgZGUgc2VydmljZSBk6WJ1dGVudCBwYXIgbGUgbW90IGNs6SAibGlzdGVuIiA6CgogICAgbGlzdGVuIDxub21faW5zdGFuY2U+IFsgPGFkcmVzc2VfSVA+OjxwbGFnZV9wb3J0cz5bLC4uLl0gXQoKLSA8bm9tX2luc3RhbmNlPiBlc3QgbGUgbm9tIGRlIGwnaW5zdGFuY2UgZOljcml0ZS4gQ2Ugbm9tIHNlcmEgZW52b3npIGRhbnMgbGVzCiAgbG9ncywgZG9uYyBpbCBlc3Qgc291aGFpdGFibGUgZCd1dGlsaXNlciB1biBub20gcmVsYXRpZiBhdSBzZXJ2aWNlIHJlbGF56S4KICBBdWN1biB0ZXN0IG4nZXN0IGVmZmVjdHXpIGNvbmNlcm5hbnQgbCd1bmljaXTpIGRlIGNlIG5vbSwgcXVpIG4nZXN0IHBhcwogIG9ibGlnYXRvaXJlLCBtYWlzIGZvcnRlbWVudCByZWNvbW1hbmTpZS4KCi0gPGFkcmVzc2VfSVA+IGVzdCBsJ2FkcmVzc2UgSVAgc3VyIGxhcXVlbGxlIGxlIHJlbGFpcyBhdHRlbmQgc2VzIGNvbm5leGlvbnMuCiAgTCdhYnNlbmNlIGQnYWRyZXNzZSBhaW5zaSBxdWUgbCdhZHJlc3NlIDAuMC4wLjAgc2lnbmlmaWVudCBxdWUgbGVzIGNvbm5leGlvbnMKICBwb3Vycm9udCBzJ2VmZmVjdHVlciBzdXIgdG91dGVzIGxlcyBhZHJlc3NlcyBkZSBsYSBtYWNoaW5lLgoKLSA8cGxhZ2VfcG9ydHM+IGNvcnJlc3BvbmQgc29pdCDgIHVuIHBvcnQsIHNvaXQg4CB1bmUgcGxhZ2UgZGUgcG9ydHMgc3VyCiAgbGVzcXVlbHMgbGUgcmVsYWlzIGFjY2VwdGVyYSBkZXMgY29ubmV4aW9ucyBwb3VyIGwnYWRyZXNzZSBJUCBzcOljaWZp6WUuCiAgQ2V0dGUgcGxhZ2UgcGV1dCDqdHJlIDoKICAgIC0gc29pdCB1biBwb3J0IG51belyaXF1ZSAoZXg6ICc4MCcpCiAgICAtIHNvaXQgdW5lIHBsYWdlIGNvbnN0aXR16WUgZGUgZGV1eCB2YWxldXJzIHPpcGFy6WVzIHBhciB1biB0aXJldAogICAgICAoZXg6ICcyMDAwLTIxMDAnKSByZXBy6XNlbnRhbnQgbGVzIGV4dHLpbWl06XMgaW5jbHVzZXMgZGFucyBsYQogICAgICBwbGFnZS4KICBJbCBmYXV0IGZhaXJlIGF0dGVudGlvbiDgIGwndXNhZ2UgZGVzIHBsYWdlcywgY2FyIGNoYXF1ZSBjb21iaW5haXNvbgogIDxhZHJlc3NlX0lQPjo8cG9ydD4gY29uc29tbWUgdW5lIHNvY2tldCwgZG9uYyB1biBkZXNjcmlwdGV1ciBkZSBmaWNoaWVyLgogIExlIGNvdXBsZSA8YWRyZXNzZV9JUD46PHBvcnQ+IGRvaXQg6nRyZSB1bmlxdWUgcG91ciB0b3V0ZXMgbGVzICBpbnN0YW5jZXMKICBkJ3VuZSBt6m1lIG1hY2hpbmUuIEwnYXR0YWNoZW1lbnQg4CB1biBwb3J0IGluZulyaWV1ciDgIDEwMjQgbuljZXNzaXRlIHVuCiAgbml2ZWF1IGRlIHByaXZpbOhnZSBwYXJ0aWN1bGllciBsb3JzIGR1IGxhbmNlbWVudCBkdSBwcm9ncmFtbWUKICAoaW5k6XBlbmRhbW1lbnQgZHUgcGFyYW3odHJlICd1aWQnIGRlIGxhIHNlY3Rpb24gJ2dsb2JhbCcpLgoKLSBsZSBjb3VwbGUgPGFkcmVzc2VfSVA+OjxwbGFnZV9wb3J0cz4gcGV1dCDqdHJlIHLpcOl06SBpbmTpZmluaW1lbnQgcG91cgogIGRlbWFuZGVyIGF1IHJlbGFpcyBkJ+ljb3V0ZXIg6WdhbGVtZW50IHN1ciBkJ2F1dHJlcyBhZHJlc3NlcyBldC9vdSBkJ2F1dHJlcwogIHBsYWdlcyBkZSBwb3J0cy4gUG91ciBjZWxhLCBpbCBzdWZmaXQgZGUgc+lwYXJlciBsZXMgY291cGxlcyBwYXIgdW5lIHZpcmd1bGUuCgpFeGVtcGxlcyA6Ci0tLS0tLS0tLQogICAgbGlzdGVuIGh0dHBfcHJveHkgOjgwCiAgICBsaXN0ZW4geDExX3Byb3h5IDEyNy4wLjAuMTo2MDAwLTYwMDkKICAgIGxpc3RlbiBzbXRwX3Byb3h5IDEyNy4wLjAuMToyNSwxMjcuMC4wLjE6NTg3CiAgICBsaXN0ZW4gbGRhcF9wcm94eSA6Mzg5LDo2NjMKClNpIHRvdXRlcyBsZXMgYWRyZXNzZXMgbmUgdGllbm5lbnQgcGFzIHN1ciB1bmUgbGlnbmUsIGlsIGVzdCBwb3NzaWJsZSBkJ2VuCnJham91dGVyIOAgbCdhaWRlIGR1IG1vdCBjbOkgJ2JpbmQnLiBEYW5zIGNlIGNhcywgaWwgbidlc3QgbeptZSBwYXMgbuljZXNzYWlyZQpkZSBzcOljaWZpZXIgbGEgcHJlbWnocmUgYWRyZXNzZSBzdXIgbGEgbGlnbmUgbGlzdGVuLCBjZSBxdWkgZmFjaWxpdGUgcGFyZm9pcwpsJ+ljcml0dXJlIGRlIGNvbmZpZ3VyYXRpb25zIDoKCiAgICBiaW5kIFsgPGFkcmVzc2VfSVA+OjxwbGFnZV9wb3J0cz5bLC4uLl0gXQoKRXhlbXBsZXMgOgotLS0tLS0tLS0tCiAgICBsaXN0ZW4gaHR0cF9wcm94eQogICAgICAgIGJpbmQgOjgwLDo0NDMKICAgICAgICBiaW5kIDEwLjAuMC4xOjEwMDgwLDEwLjAuMC4xOjEwNDQzCgoyLjEpIEluaGliaXRpb24gZCd1biBzZXJ2aWNlCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KVW4gc2VydmljZSBwZXV0IOp0cmUgZOlzYWN0aXbpIHBvdXIgZGVzIGJlc29pbnMgZGUgbWFpbnRlbmFuY2UsIHNhbnMgYXZvaXIg4Apjb21tZW50ZXIgdG91dGUgdW5lIHBhcnRpZSBkdSBmaWNoaWVyLiBJbCBzdWZmaXQgZGUgcG9zaXRpb25uZXIgbGUgbW90IGNs6QoiZGlzYWJsZWQiIGRhbnMgc2Egc2VjdGlvbiA6CgogICAgbGlzdGVuIHNtdHBfcHJveHkgMC4wLjAuMDoyNQogICAgICAgIGRpc2FibGVkCgpSZW1hcnF1ZTogbGUgbW90IGNs6SAnZW5hYmxlZCcgcGVybWV0IGRlIHLpYWN0aXZlciB1biBzZXJ2aWNlIHBy6WFsYWJsZW1lbnQKICAgICAgICAgIGTpc2FjdGl26SBwYXIgbGUgbW90IGNs6SAnZGlzYWJsZWQnLCBwYXIgZXhlbXBsZSDgIGNhdXNlIGQndW5lCiAgICAgICAgICBjb25maWd1cmF0aW9uIHBhciBk6WZhdXQuCgoyLjIpIE1vZGUgZGUgZm9uY3Rpb25uZW1lbnQKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tClVuIHNlcnZpY2UgcGV1dCBmb25jdGlvbm5lciBkYW5zIHRyb2lzIG1vZGVzIGRpZmbpcmVudHMgOgogIC0gVENQCiAgLSBIVFRQCiAgLSDpdGF0IGRlIHNhbnTpCgpNb2RlIFRDUAotLS0tLS0tLQpEYW5zIGNlIG1vZGUsIGxlIHNlcnZpY2UgcmVsYXllLCBk6HMgbGV1ciDpdGFibGlzc2VtZW50LCBsZXMgY29ubmV4aW9ucyBUQ1AKdmVycyB1biBvdSBwbHVzaWV1cnMgc2VydmV1cnMuIEF1Y3VuIHRyYWl0ZW1lbnQgbidlc3QgZWZmZWN0dekgc3VyIGxlIGZsdXguIElsCnMnYWdpdCBzaW1wbGVtZW50IGQndW5lIGFzc29jaWF0aW9uCiAgICAgc291cmNlPGFkcmVzc2U6cG9ydD4gLT4gZGVzdGluYXRpb248YWRyZXNzZTpwb3J0Pi4KUG91ciBsJ3V0aWxpc2VyLCBwculjaXNlciBsZSBtb2RlIFRDUCBzb3VzIGxhIGTpY2xhcmF0aW9uIGR1IHJlbGFpcy4KCkV4ZW1wbGUgOgotLS0tLS0tLS0KICAgIGxpc3RlbiBzbXRwX3Byb3h5IDAuMC4wLjA6MjUKICAgICAgICBtb2RlIHRjcAoKTW9kZSBIVFRQCi0tLS0tLS0tLQpEYW5zIGNlIG1vZGUsIGxlIHNlcnZpY2UgcmVsYXllIGxlcyBjb25uZXhpb25zIFRDUCB2ZXJzIHVuIG91IHBsdXNpZXVycwpzZXJ2ZXVycywgdW5lIGZvaXMgcXUnaWwgZGlzcG9zZSBkJ2Fzc2V6IGQnaW5mb3JtYXRpb25zIHBvdXIgZW4gcHJlbmRyZSBsYQpk6WNpc2lvbi4gTGVzIGVuLXTqdGVzIEhUVFAgc29udCBhbmFseXPpcyBwb3VyIHkgdHJvdXZlciB1biDpdmVudHVlbCBjb29raWUsIGV0CmNlcnRhaW5zIGQnZW50cmUtZXV4IHBldXZlbnQg6nRyZSBtb2RpZmnpcyBwYXIgbGUgYmlhaXMgZCdleHByZXNzaW9ucwpy6Wd1bGnocmVzLiBQb3VyIGFjdGl2ZXIgY2UgbW9kZSwgcHLpY2lzZXIgbGUgbW9kZSBIVFRQIHNvdXMgbGEgZOljbGFyYXRpb24gZHUKcmVsYWlzLgoKRXhlbXBsZSA6Ci0tLS0tLS0tLQogICAgbGlzdGVuIGh0dHBfcHJveHkgMC4wLjAuMDo4MAogICAgICAgIG1vZGUgaHR0cAoKTW9kZSBzdXBlcnZpc2lvbgotLS0tLS0tLS0tLS0tLS0tCklsIHMnYWdpdCBkJ3VuIG1vZGUgb2ZmcmFudCDgIHVuIGNvbXBvc2FudCBleHRlcm5lIHVuZSB2aXNpYmlsaXTpIGRlIGwn6XRhdCBkZQpzYW506SBkdSBzZXJ2aWNlLiBJbCBzZSBjb250ZW50ZSBkZSByZXRvdXJuZXIgIk9LIiDgIHRvdXQgY2xpZW50IHNlIGNvbm5lY3RhbnQKc3VyIHNvbiBwb3J0LiBJbCBwZXV0IOp0cmUgdXRpbGlz6SBhdmVjIGRlcyBy6XBhcnRpdGV1cnMgZGUgY2hhcmdlIOl2b2x16XMgcG91cgpk6XRlcm1pbmVyIHF1ZWxzIHNvbnQgbGVzIHNlcnZpY2VzIHV0aWxpc2FibGVzLiBTaSBsJ29wdGlvbiAnaHR0cGNoaycgZXN0CmFjdGl26WUsIGFsb3JzIGxhIHLpcG9uc2UgY2hhbmdlcmEgZW4gJ0hUVFAvMS4wIDIwMCBPSycgcG91ciBzYXRpc2ZhaXJlIGxlcwphdHRlbnRlcyBkZSBjb21wb3NhbnRzIHNhY2hhbnQgdGVzdGVyIGVuIEhUVFAuIFBvdXIgYWN0aXZlciBjZSBtb2RlLCBwculjaXNlcgpsZSBtb2RlIEhFQUxUSCBzb3VzIGxhIGTpY2xhcmF0aW9uIGR1IHJlbGFpcy4KCkV4ZW1wbGUgOgotLS0tLS0tLS0KICAgICMgculwb25zZSBzaW1wbGUgOiAnT0snCiAgICBsaXN0ZW4gaGVhbHRoX2NoZWNrIDAuMC4wLjA6NjAwMDAKICAgICAgICBtb2RlIGhlYWx0aAoKICAgICMgculwb25zZSBIVFRQIDogJ0hUVFAvMS4wIDIwMCBPSycKICAgIGxpc3RlbiBodHRwX2hlYWx0aF9jaGVjayAwLjAuMC4wOjYwMDAxCiAgICAgICAgbW9kZSBoZWFsdGgKICAgICAgICBvcHRpb24gaHR0cGNoawoKCjIuMi4xIFN1cGVydmlzaW9uCi0tLS0tLS0tLS0tLS0tLS0tCkxlcyB2ZXJzaW9ucyAxLjEuMzIgZXQgMS4yLjYgYXBwb3J0ZW50IHVuZSBub3V2ZWxsZSBzb2x1dGlvbiBwb3VyIHZhbGlkZXIgbGUKYm9uIGZvbmN0aW9ubmVtZW50IGR1IHByb3h5IHNhbnMgcGVydHVyYmVyIGxlIHNlcnZpY2UuIExlIG1vdC1jbOkgJ21vbml0b3ItbmV0JwphIOl06SBjcunpIGRhbnMgbGUgYnV0ZCBkZSBzcOljaWZpZXIgdW4gculzZWF1IGQn6XF1aXBlbWVudHMgcXVpIG5lIFBFVVZFTlQgUEFTCnV0aWxpc2VyIGxlIHNlcnZpY2UgcG91ciBhdXRyZSBjaG9zZSBxdWUgZGVzIHRlc3RzIGRlIGZvbmN0aW9ubmVtZW50LiBDJ2VzdApwYXJ0aWN1bGnocmVtZW50IGFkYXB06SBhdXggcHJveGllcyBUQ1AsIGNhciBjZWxhIGVtcOpjaGUgbGUgcHJveHkgZGUgcmVsYXllcgpkZXMg6XRhYmxpc3NlbWVudHMgZGUgY29ubmV4aW9uIOltaXMgcGFyIHVuIG91dGlsIGRlIHN1cnZlaWxsYW5jZS4KCkxvcnNxdWUgYydlc3QgdXRpbGlz6SBzdXIgdW4gcHJveHkgVENQLCBsYSBjb25uZXhpb24gZXN0IGFjY2VwdOllIHB1aXMgcmVmZXJt6WUKZXQgcmllbiBuJ2VzdCBsb2d16S4gQydlc3Qgc3VmZmlzYW50IHBvdXIgcXUndW4gculwYXJ0aXRldXIgZGUgY2hhcmdlIGVuIGFtb250CmTpdGVjdGUgcXVlIGxlIHNlcnZpY2UgZXN0IGRpc3BvbmlibGUuCgpMb3JzcXVlIGMnZXN0IHV0aWxpc+kgc3VyIHVuIHByb3h5IEhUVFAsIGxhIGNvbm5leGlvbiBlc3QgYWNjZXB06WUsIHJpZW4gbidlc3QKbG9ndeksIHB1aXMgbGEgculwb25zZSBzdWl2YW50ZSBlc3QgZW52b3npZSBldCBsYSBzZXNzaW9uIHJlZmVybellIDoKIkhUVFAvMS4wIDIwMCBPSyIuIEMnZXN0IG5vcm1hbGVtZW50IHN1ZmZpc2FudCBwb3VyIHF1J3VuIHLpcGFydGl0ZXVyIGRlIGNoYXJnZQpIVFRQIGVuIGFtb250IGTpdGVjdGUgbGUgc2VydmljZSBjb21tZSBvcOlyYXRpb25uZWwsIGF1c3NpIGJpZW4g4CB0cmF2ZXJzIGRlcwp0ZXN0cyBUQ1AgcXVlIEhUVFAuCgpMZXMgcHJveGllcyB1dGlsaXNhbnQgbGUgbW90LWNs6SAnbW9uaXRvci1uZXQnIHBldXZlbnQgYWNjZXNzb2lyZW1lbnQgc2UgcGFzc2VyCmRlIGwnb3B0aW9uICdkb250bG9nbnVsbCcsIGNlIHF1aSBwZXJtZXR0cmEgZGUgbG9ndWVyIGxlcyBjb25uZXhpb25zIHZpZGVzCultaXNlcyBkZXB1aXMgZCdhdXRyZXMgYWRyZXNzZXMgcXVlIGNlbGxlcyBkdSBy6XNlYXUgZGUgdGVzdHMuCgpFeGVtcGxlIDoKLS0tLS0tLS0tCgogICAgbGlzdGVuIHRzZS1wcm94eQogICAgICAgYmluZCA6MzM4OSw6MTQ5NCw6NTkwMCAgIyBUU0UsIElDQSBhbmQgVk5DIGF0IG9uY2UuCiAgICAgICBtb2RlIHRjcAogICAgICAgYmFsYW5jZSByb3VuZHJvYmluCiAgICAgICBzZXJ2ZXIgdHNlLWZhcm0gMTkyLjE2OC4xLjEwCiAgICAgICBtb25pdG9yLW5ldCAxOTIuMTY4LjEuMjUyLzMxICAgIyBMNCBsb2FkLWJhbGFuY2VycyBvbiAuMjUyIGFuZCAuMjUzCgoKTG9yc3F1ZSBsZSBzeXN06G1lIGVmZmVjdHVhbnQgbGVzIHRlc3RzIGVzdCBzaXR16SBkZXJyaehyZSB1biBwcm94eSwgbGUgbW90LWNs6QonbW9uaXRvci1uZXQnIG4nZXN0IHBhcyB1dGlsaXNhYmxlIGR1IGZhaXQgcXVlIGhhcHJveHkgdmVycmEgdG91am91cnMgbGEgbeptZQphZHJlc3NlIHBvdXIgbGUgcHJveHkuIFBvdXIgcGFsbGllciDgIGNldHRlIGxpbWl0YXRpb24sIGxhIHZlcnNpb24gMS4yLjE1IGEKYXBwb3J06SBsZSBtb3QtY2zpICdtb25pdG9yLXVyaScuIElsIGTpZmluaXQgdW5lIFVSSSBxdWkgbmUgc2VyYSBuaSByZXRyYW5zbWlzZQpuaSBsb2fpZSwgbWFpcyBwb3VyIGxhcXVlbGxlIGhhcHJveHkgcmV0b3VybmVyYSBpbW3pZGlhdGVtZW50IHVuZSBy6XBvbnNlCiJIVFRQLzEuMCAyMDAgT0siLiBDZWxhIHJlbmQgcG9zc2libGVzIGxlcyB0ZXN0cyBkZSB2YWxpZGl06SBkJ3VuZSBjaGHubmUKcmV2ZXJzZS1wcm94eS0+aGFwcm94eSBlbiB1bmUgcmVxdep0ZSBIVFRQLiBDZWxhIHBldXQg6nRyZSB1dGlsaXPpIHBvdXIgdmFsaWRlcgp1bmUgY29tYmluYWlzaW9uIGRlIHN0dW5uZWwraGFwcm94eSDgIGwnYWlkZSBkZSB0ZXN0cyBIVFRQUyBwYXIgZXhlbXBsZS4gQmllbgplbnRlbmR1LCBjZSBtb3QtY2zpIG4nZXN0IHZhbGlkZSBxdSdlbiBtb2RlIEhUVFAsIHNpbm9uIGlsIG4neSBhIHBhcyBkZSBub3Rpb24KZCdVUkkuIE5vdGVyIHF1ZSBsYSBt6XRob2RlIGV0IGxhIHZlcnNpb24gSFRUUCBzb250IHNpbXBsZW1lbnQgaWdub3LpZXMuCgpFeGVtcGxlIDoKLS0tLS0tLS0tCgogICAgbGlzdGVuIHN0dW5uZWxfYmFja2VuZCA6ODA4MAogICAgICAgbW9kZSBodHRwCiAgICAgICBiYWxhbmNlIHJvdW5kcm9iaW4KICAgICAgIHNlcnZlciB3ZWIxIDE5Mi4xNjguMS4xMDo4MCBjaGVjawogICAgICAgc2VydmVyIHdlYjIgMTkyLjE2OC4xLjExOjgwIGNoZWNrCiAgICAgICBtb25pdG9yLXVyaSAvaGFwcm94eV90ZXN0CgoKMi4zKSBMaW1pdGF0aW9uIGR1IG5vbWJyZSBkZSBjb25uZXhpb25zIHNpbXVsdGFu6WVzCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpMZSBwYXJhbeh0cmUgIm1heGNvbm4iIHBlcm1ldCBkZSBmaXhlciBsYSBsaW1pdGUgYWNjZXB0YWJsZSBlbiBub21icmUgZGUKY29ubmV4aW9ucyBzaW11bHRhbullcyBwYXIgcHJveHkuIENoYXF1ZSBwcm94eSBxdWkgYXR0ZWludCBjZXR0ZSB2YWxldXIgY2Vzc2UKZCfpY291dGVyIGp1c3F1J+AgbGli6XJhdGlvbiBkJ3VuZSBjb25uZXhpb24uIFZvaXIgcGx1cyBsb2luIGNvbmNlcm5hbnQgbGVzCmxpbWl0YXRpb25zIGxp6WVzIGF1IHN5c3TobWUuCgpFeGVtcGxlIDoKLS0tLS0tLS0tCiAgICBsaXN0ZW4gdGlueV9zZXJ2ZXIgMC4wLjAuMDo4MAogICAgICAgIG1heGNvbm4gMTAKCgoyLjQpIEFycup0IGVuIGRvdWNldXIKLS0tLS0tLS0tLS0tLS0tLS0tLS0tCklsIGVzdCBwb3NzaWJsZSBkJ2Fycup0ZXIgbGVzIHNlcnZpY2VzIGVuIGRvdWNldXIgZW4gZW52b3lhbnQgdW4gc2lnbmFsClNJR1VTUjEgYXUgcHJvY2Vzc3VzIHJlbGFpcy4gVG91cyBsZXMgc2VydmljZXMgc2Vyb250IGFsb3JzIG1pcyBlbiBwaGFzZQpkJ2Fycup0LCBtYWlzIHBvdXJyb250IGNvbnRpbnVlciBkJ2FjY2VwdGVyIGRlcyBjb25uZXhpb25zIHBlbmRhbnQgdW4gdGVtcHMKZOlmaW5pIHBhciBsZSBwYXJhbeh0cmUgJ2dyYWNlJyAoZW4gbWlsbGlzZWNvbmRlcykuIENlbGEgcGVybWV0IHBhciBleGVtcGxlLApkZSBmYWlyZSBzYXZvaXIgcmFwaWRlbWVudCDgIHVuIHLpcGFydGl0ZXVyIGRlIGNoYXJnZSBxdSdpbCBuZSBkb2l0IHBsdXMKdXRpbGlzZXIgdW4gcmVsYWlzLCB0b3V0IGVuIGNvbnRpbnVhbnQgZCdhc3N1cmVyIGxlIHNlcnZpY2UgbGUgdGVtcHMgcXUnaWwKcydlbiByZW5kZSBjb21wdGUuCgpSZW1hcnF1ZSA6Ci0tLS0tLS0tLS0KTGVzIGNvbm5leGlvbnMgYWN0aXZlcyBuZSBzb250IGphbWFpcyBjYXNz6WVzLiBEYW5zIGxlIHBpcmUgZGVzIGNhcywgaWwgZmF1ZHJhCmF0dGVuZHJlIGVuIHBsdXMgbGV1ciBleHBpcmF0aW9uIGF2YW50IGwnYXJy6nQgdG90YWwgZHUgcHJvY2Vzc3VzLCBvdSBiaWVuIHR1ZXIKbWFudWVsbGVtZW50IGxlIHByb2Nlc3N1cyBwYXIgbCdlbnZvaSBkJ3VuIHNpZ25hbCBTSUdURVJNLiBMYSB2YWxldXIgcGFyIGTpZmF1dApkdSBwYXJhbeh0cmUgJ2dyYWNlJyBlc3QgMCAocGFzIGRlIGdy4mNlLCBhcnLqdCBpbW3pZGlhdCBkZSBsJ+ljb3V0ZSkuCgpFeGVtcGxlIDoKLS0tLS0tLS0tCiAgICAjIGFycup0ZXIgZW4gZG91Y2V1ciBwYXIgJ2tpbGxhbGwgLVVTUjEgaGFwcm94eScKICAgICMgbGUgc2VydmljZSB0b3VybmVyYSBlbmNvcmUgMTAgc2Vjb25kZXMgYXBy6HMgbGEgZGVtYW5kZSBkJ2Fycup0CiAgICBsaXN0ZW4gaHR0cF9wcm94eSAwLjAuMC4wOjgwCiAgICAgICAgbW9kZSBodHRwCiAgICAgICAgZ3JhY2UgMTAwMDAKCiAgICAjIGNlIHBvcnQgbidlc3QgdGVzdOkgcXVlIHBhciB1biBy6XBhcnRpdGV1ciBkZSBjaGFyZ2UuCiAgICBsaXN0ZW4gaGVhbHRoX2NoZWNrIDAuMC4wLjA6NjAwMDAKICAgICAgICBtb2RlIGhlYWx0aAogICAgICAgIGdyYWNlIDAKCkEgcGFydGlyIGRlIGxhIHZlcnNpb24gMS4yLjgsIHVuIG5vdXZlYXUgbeljYW5pc21lIGRlIHJlY29uZmlndXJhdGlvbiDgIGNoYXVkCmEg6XTpIGludHJvZHVpdC4gSWwgZXN0IGTpc29ybWFpcyBwb3NzaWJsZSBkZSBtZXR0cmUgbGVzIHByb3hpZXMgZW4gInBhdXNlIiBlbgplbnZveWFudCB1biBzaWduYWwgU0lHVFRPVSBhdXggcHJvY2Vzc3VzLiBDZWxhIGTpc2FjdGl2ZXJhIGxlcyBzb2NrZXRzIGQn6WNvdXRlCnNhbnMgY2Fzc2VyIGxlcyBzZXNzaW9ucyBleGlzdGFudGVzLiBTdWl0ZSDgIGNlbGEsIGwnZW52b2kgZCd1biBzaWduYWwgU0lHVFRJTgpy6WFjdGl2ZXJhIGxlcyBzb2NrZXRzIGQn6WNvdXRlLiBDZWNpIGVzdCB0cuhzIHByYXRpcXVlIHBvdXIgdGVudGVyIGRlIGNoYXJnZXIKdW5lIG5vdXZlbGxlIGNvbmZpZ3VyYXRpb24gb3UgbeptZSB1bmUgbm91dmVsbGUgdmVyc2lvbiBkZSBoYXByb3h5IHNhbnMgY2Fzc2VyCmxlcyBjb25uZXhpb25zIGV4aXN0YW50ZXMuIFNpIGxlIHJlY2hhcmdlbWVudCBzJ2VmZmVjdHVlIGNvcnJlY3RlbWVudCwgaWwgbmUKcmVzdGUgcGx1cyBxdSfgIGVudm95ZXIgdW4gc2lnbmFsIFNJR1VTUjEgYXV4IGFuY2llbnMgcHJvY2Vzc3VzLCBjZSBxdWkKcHJvdm9xdWVyYSBsZXVyIGFycup0IGltbelkaWF0IGTocyBxdWUgbGV1cnMgY29ubmV4aW9ucyBzZXJvbnQgdGVybWlu6WVzIDsgZW4KcmV2YW5jaGUsIHNpIGxlIHJlY2hhcmdlbWVudCDpY2hvdWUsIGlsIHN1ZmZpdCBkJ2Vudm95ZXIgdW4gc2lnbmFsIFNJR1RUSU4gcG91cgpyZW1ldHRyZSBsZXMgcG9ydHMgZW4g6WNvdXRlIGV0IHLpdGFibGlyIGxlIHNlcnZpY2UgaW1t6WRpYXRlbWVudC4gVmV1aWxsZXoKbm90ZXIgcXVlIGxlIHBhcmFt6HRyZSAnZ3JhY2UnIGVzdCBpZ25vcukgcG91ciBsZSBzaWduYWwgU0lHVFRPVSBhaW5zaSBxdWUgbGUKc2lnbmFsIFNJR1VTUjEgdW5lIGZvaXMgbGUgcHJvY2Vzc3VzIGVuIHBhdXNlLiBBdXNzaSwgaWwgcGV1dCBzJ2F26XJlciB0cuhzCnV0aWxlIGRlIHNhdXZlciBsZSBmaWNoaWVyIGRlIHBpZCBhdmFudCBkZSBk6W1hcnJlciB1bmUgbm91dmVsbGUgaW5zdGFuY2UuCgpDZSBt6WNhbmlzbWUgZXN0IHBsZWluZW1lbnQgZXhwbG9pdOkg4CBwYXJ0aXIgZGUgbGEgdmVyc2lvbiAxLjIuMTEgYXZlYyBsZXMKb3B0aW9ucyAnLXN0JyBldCAnLXNmJyAodm9pciBjaS1kZXNzb3VzKS4KCjIuNCkgUmVjb25maWd1cmF0aW9uIOAgY2hhdWQKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpMZXMgcGFyYW3odHJlcyAnLXN0JyBldCAnLXNmJyBzb250IHV0aWxpc+lzIHBvdXIgaW5mb3JtZXIgZGVzIHByb2Nlc3N1cwpleGlzdGFudHMgcXVlIGxhIGNvbmZpZ3VyYXRpb24gdmEg6nRyZSByZWNoYXJn6WUuIElscyByZWNldnJvbnQgbGUgc2lnbmFsClNJR1RUT1UsIGxldXIgZGVtYW5kYW50IGRlIGxpYulyZXIgbGVzIHBvcnRzIGVuIOljb3V0ZSBhZmluIHF1ZSBsZSBub3V2ZWF1CnByb2Nlc3N1cyBwdWlzc2UgbGVzIHByZW5kcmUuIFNpIHF1b2kgcXVlIGNlIHNvaXQgc2UgcGFzc2UgbWFsLCBsZSBub3V2ZWF1CnByb2Nlc3N1cyBsZXVyIGVudmVycmEgdW4gc2lnbmFsIFNJR1RUSU4gcG91ciBsZXVyIGluZGlxdWVyIHF1J2lscyBwZXV2ZW50CnNlIHJlbWV0dHJlIGVuIOljb3V0ZSBldCBjb250aW51ZXIgbGV1ciB0cmF2YWlsLiBFbiByZXZhbmNoZSwgc2kgbGEKY29uZmlndXJhdGlvbiBzZSBjaGFyZ2UgY29ycmVjdGVtZW50LCBhbG9ycyBpbHMgcmVjZXZyb250IHVuIHNpZ25hbCBkZSBkZW1hbmRlCmRlIGZpbiBkZSB0cmF2YWlsIGVuIGRvdWNldXIgKC1zZiksIG91IGRlIHRlcm1pbmFpc29uIGltbelkaWF0ZSAoLXN0KSBxdWkKY291cGVyYSBsZXMgc2Vzc2lvbnMgZW4gY291cnMuIFVuIHVzYWdlIHR5cGlxdWUgdGVsIHF1ZSBjZWx1aS1jaSBwZXJtZXQgZGUKcmVjaGFyZ2VyIHVuZSBjb25maWd1cmF0aW9uIHNhbnMgaW50ZXJydXB0aW9uIGRlIHNlcnZpY2UgOgoKICMgaGFwcm94eSAtcCAvdmFyL3J1bi9oYXByb3h5LnBpZCAtc2YgJChjYXQgL3Zhci9ydW4vaGFwcm94eS5waWQpCgoKMi41KSBUZW1wcyBkJ2V4cGlyYXRpb24gZGVzIGNvbm5leGlvbnMKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KSWwgZXN0IHBvc3NpYmxlIGRlIHBhcmFt6XRyZXIgY2VydGFpbmVzIGR1cullcyBkJ2V4cGlyYXRpb24gYXUgbml2ZWF1IGRlcwpjb25uZXhpb25zIFRDUC4gVHJvaXMgdGVtcHMgaW5k6XBlbmRhbnRzIHNvbnQgY29uZmlndXJhYmxlcyBldCBhY2NlcHRlbnQgZGVzCnZhbGV1cnMgZW4gbWlsbGlzZWNvbmRlcy4gU2kgbCd1bmUgZGUgY2VzIHRyb2lzIHRlbXBvcmlzYXRpb25zIGVzdCBk6XBhc3PpZSwgbGEKc2Vzc2lvbiBlc3QgdGVybWlu6WUg4CBjaGFxdWUgZXh0cultaXTpLgoKICAtIHRlbXBzIGQnYXR0ZW50ZSBkJ3VuZSBkb25u6WUgZGUgbGEgcGFydCBkdSBjbGllbnQsIG91IGRlIGxhCiAgICBwb3NzaWJpbGl06SBkZSBsdWkgZW52b3llciBkZXMgZG9ubullcyA6ICJjbGl0aW1lb3V0IiA6CgogICAgICAgICMgdGltZS1vdXQgY2xpZW50IOAgMm1uMzAuCiAgICAgICAgY2xpdGltZW91dCAgICAgICAgMTUwMDAwCgogIC0gdGVtcHMgZCdhdHRlbnRlIGQndW5lIGRvbm7pZSBkZSBsYSBwYXJ0IGR1IHNlcnZldXIsIG91IGRlIGxhCiAgICBwb3NzaWJpbGl06SBkZSBsdWkgZW52b3llciBkZXMgZG9ubullcyA6ICJzcnZ0aW1lb3V0IiA6CgogICAgICAgICMgdGltZS1vdXQgc2VydmV1ciDgIDMwcy4KICAgICAgICBzcnZ0aW1lb3V0ICAgICAgICAzMDAwMAoKICAtIHRlbXBzIGQnYXR0ZW50ZSBkZSBsJ+l0YWJsaXNzZW1lbnQgZCd1bmUgY29ubmV4aW9uIHZlcnMgdW4gc2VydmV1cgogICAgImNvbnRpbWVvdXQiIDoKCiAgICAgICAgIyBvbiBhYmFuZG9ubmUgc2kgbGEgY29ubmV4aW9uIG4nZXN0IHBhcyDpdGFibGllIGFwcuhzIDQgc2Vjb25kZXMKICAgICAgICBjb250aW1lb3V0ICAgICAgICA0MDAwCgpSZW1hcnF1ZXMgOgotLS0tLS0tLS0tLQogIC0gImNvbnRpbWVvdXQiIGV0ICJzcnZ0aW1lb3V0IiBuJ29udCBwYXMgZCd1dGlsaXTpIGRhbnMgbGUgY2FzIGR1IHNlcnZldXIgZGUKICAgIHR5cGUgImhlYWx0aCIuCiAgLSBzb3VzIGRlIGZvcnRlcyBjaGFyZ2VzLCBvdSBzdXIgdW4gculzZWF1IHNhdHVy6SBvdSBk6WZlY3R1ZXV4LCBpbCBlc3QKICAgIHBvc3NpYmxlIGRlIHBlcmRyZSBkZXMgcGFxdWV0cy4gRHUgZmFpdCBxdWUgbGEgcHJlbWnocmUgcmV0cmFuc21pc3Npb24KICAgIFRDUCBuJ2FpdCBsaWV1IHF1J2F1IGJvdXQgZGUgMyBzZWNvdWRlcywgZml4ZXIgdW4gdGltZW91dCBkZSBjb25uZXhpb24KICAgIGluZulyaWV1ciDgIDMgc2Vjb25kZXMgbmUgcGVybWV0IHBhcyBkZSBzZSByYXR0cmFwZXIgc3VyIGxhIHBlcnRlCiAgICBkZSBwYXF1ZXRzIGNhciBsYSBzZXNzaW9uIGF1cmEg6XTpIGFiYW5kb25u6WUgYXZhbnQgbGEgcHJlbWnocmUKICAgIHJldHJhbnNtaXNzaW9uLiBVbmUgdmFsZXVyIGRlIDQgc2Vjb25kZXMgculkdWlyYSBjb25zaWTpcmFibGVtZW50CiAgICBsZSBub21icmUgZCfpY2hlY3MgZGUgY29ubmV4aW9uLgoKMi42KSBUZW50YXRpdmVzIGRlIHJlY29ubmV4aW9uCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpMb3JzIGQndW4g6WNoZWMgZGUgY29ubmV4aW9uIHZlcnMgdW4gc2VydmV1ciwgaWwgZXN0IHBvc3NpYmxlIGRlCnJldGVudGVyIChwb3RlbnRpZWxsZW1lbnQgdmVycyB1biBhdXRyZSBzZXJ2ZXVyLCBlbiBjYXMgZGUgculwYXJ0aXRpb24KZGUgY2hhcmdlKS4gTGUgbm9tYnJlIGRlIG5vdXZlbGxlcyB0ZW50YXRpdmVzIGluZnJ1Y3R1ZXVzZXMgYXZhbnQKYWJhbmRvbiBlc3QgZm91cm5pIHBhciBsZSBwYXJhbeh0cmUgInJldHJpZXMiLgoKRXhlbXBsZSA6Ci0tLS0tLS0tLQogICAgICAgICMgb24gZXNzYWllIGVuY29yZSB0cm9pcyBmb2lzIG1heGkKICAgICAgICByZXRyaWVzIDMKCklsIGVzdCDgIG5vdGVyIHF1ZSBsYSB0ZW50YXRpdmUgZGUgcmVjb25uZXhpb24gcGV1dCBhbWVuZXIg4CB1dGlsaXNlciB1biBhdXRyZQpzZXJ2ZXVyIHNpIGxlIHByZW1pZXIgYSBkaXNwYXJ1IGVudHJlIGRldXggdGVudGF0aXZlcyBkZSBjb25uZXhpb24uCgoKMi43KSBBZHJlc3NlIGR1IHNlcnZldXIKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KTGUgc2VydmV1ciB2ZXJzIGxlcXVlbCBzb250IHJlZGlyaWfpZXMgbGVzIG5vdXZlbGxlcyBjb25uZXhpb25zIGVzdCBk6WZpbmkgcGFyCmxlIHBhcmFt6HRyZSAiZGlzcGF0Y2giIHNvdXMgbGEgZm9ybWUgPGFkcmVzc2VfaXA+Ojxwb3J0Pi4gSWwgY29ycmVzcG9uZCDgIHVuCnNlcnZldXIgZCdhc3NpZ25hdGlvbiBkZSBjb29raWUgZGFucyBsZSBjYXMgb/kgbGUgc2VydmljZSBjb25zaXN0ZSDgIGFzc3VyZXIKdW5pcXVlbWVudCB1bmUgcGVyc2lzdGVuY2UgSFRUUCwgb3UgYmllbiBzaW1wbGVtZW50IGF1IHNlcnZldXIgZGVzdGluYXRpb24gZGFucwpsZSBjYXMgZGUgcmVsYXlhZ2UgVENQIHNpbXBsZS4gQ2V0IGFuY2llbiBtb2RlIG5lIHBlcm1ldCBwYXMgZGUgdGVzdGVyIGwn6XRhdApkdSBzZXJ2ZXVyIGRpc3RhbnQsIGV0IGlsIGVzdCBtYWludGVuYW50IHJlY29tbWFuZOkgZCd1dGlsaXNlciBkZSBwculm6XJlbmNlCmxlIG1vZGUgJ2JhbGFuY2UnLgoKRXhlbXBsZSA6Ci0tLS0tLS0tLQogICAgICAgICAgICMgb24gZW52b2llIHRvdXRlcyBsZXMgbm91dmVsbGVzIGNvbm5leGlvbnMgaWNpCiAgICAgICAgZGlzcGF0Y2ggMTkyLjE2OC4xLjI6ODAKClJlbWFycXVlIDoKLS0tLS0tLS0tLQpDZSBwYXJhbeh0cmUgbidhIHBhcyBkJ3V0aWxpdOkgcG91ciB1biBzZXJ2ZXVyIGVuIG1vZGUgJ2hlYWx0aCcsIG5pIGVuIG1vZGUKJ2JhbGFuY2UnLgoKCjIuOCkgQWRyZXNzZSBkZSBzb3J0aWUKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpJbCBlc3QgcG9zc2libGUgZGUgZm9yY2VyIGwnYWRyZXNzZSB1dGlsaXPpZSBwb3VyIOl0YWJsaXIgbGVzIGNvbm5leGlvbnMgdmVycwpsZXMgc2VydmV1cnMg4CBsJ2FpZGUgZHUgcGFyYW3odHJlICJzb3VyY2UiLiBJbCBlc3QgbeptZSBwb3NzaWJsZSBkZSBmb3JjZXIgbGUKcG9ydCwgYmllbiBxdWUgY2V0dGUgZm9uY3Rpb25uYWxpdOkgc2UgbGltaXRlIOAgZGVzIHVzYWdlcyB0cuhzIHNw6WNpZmlxdWVzLgpDJ2VzdCBwYXJ0aWN1bGnocmVtZW50IHV0aWxlIGVuIGNhcyBkJ2FkcmVzc2FnZSBtdWx0aXBsZSwgZXQgcGx1cyBn6W7pcmFsZW1lbnQKcG91ciBwZXJtZXR0cmUgYXV4IHNlcnZldXJzIGRlIHRyb3V2ZXIgbGUgY2hlbWluIGRlIHJldG91ciBkYW5zIGRlcyBjb250ZXh0ZXMKZGUgcm91dGFnZSBkaWZmaWNpbGVzLiBTaSBsJ2FkcmVzc2UgZXN0ICcwLjAuMC4wJyBvdSAnKicgb3UgdmlkZSwgZWxsZSBzZXJhCmNob2lzaWUgbGlicmVtZW50IHBhciBsZSBzeXN0ZW1lLiBTaSBsZSBwb3J0IGVzdCAnMCcgb3UgdmlkZSwgaWwgc2VyYSBjaG9pc2kKbGlicmVtZW50IHBhciBsZSBzeXN06G1lLiBJbCBlc3Qg4CBub3RlciBxdWUgZGVwdWlzIGxhIHZlcnNpb24gMS4xLjE4LCBsZXMKdGVzdHMgZGUgYm9uIGZvbmN0aW9ubmVtZW50IGRlcyBzZXJ2ZXVycyBzZXJvbnQgYXVzc2kgZWZmZWN0delzIOAgcGFydGlyIGRlIGxhCnNvdXJjZSBzcOljaWZp6WUgcGFyIGNlIHBhcmFt6HRyZS4KCkV4ZW1wbGVzIDoKLS0tLS0tLS0tLQogICAgbGlzdGVuIGh0dHBfcHJveHkgKjo4MAogICAgICAgICAgICMgdG91dGVzIGxlcyBjb25uZXhpb25zIHByZW5uZW50IGwnYWRyZXNzZSAxOTIuMTY4LjEuMjAwCiAgICAgICAgc291cmNlIDE5Mi4xNjguMS4yMDA6MAoKICAgIGxpc3RlbiBybG9naW5fcHJveHkgKjo1MTMKICAgICAgICAgICAjIHV0aWxpc2VyIGwnYWRyZXNzZSAxOTIuMTY4LjEuMjAwIGV0IGxlIHBvcnQgculzZXJ26SA5MDAKICAgICAgICBzb3VyY2UgMTkyLjE2OC4xLjIwMDo5MDAKCgoyLjkpIETpZmluaXRpb24gZHUgbm9tIGR1IGNvb2tpZQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpFbiBtb2RlIEhUVFAsIGlsIGVzdCBwb3NzaWJsZSBkZSByZWNoZXJjaGVyIGxhIHZhbGV1ciBkJ3VuIGNvb2tpZSBwb3VyIHNhdm9pcgp2ZXJzIHF1ZWwgc2VydmV1ciBhaWd1aWxsZXIgbGEgcmVxdep0ZSB1dGlsaXNhdGV1ci4gTGUgbm9tIGR1IGNvb2tpZSBlc3QgZG9ubukKcGFyIGxlIHBhcmFt6HRyZSAiY29va2llIi4KCkV4ZW1wbGUgOgotLS0tLS0tLS0KICAgIGxpc3RlbiBodHRwX3Byb3h5IDo4MAogICAgICAgIG1vZGUgaHR0cAogICAgICAgIGNvb2tpZSBTRVJWRVJJRAoKT24gcGV1dCBtb2RpZmllciBsJ3V0aWxpc2F0aW9uIGR1IGNvb2tpZSBwb3VyIGxhIHJlbmRyZSBwbHVzIGludGVsbGlnZW50ZQp2aXMt4C12aXMgZGVzIGFwcGxpY2F0aW9ucyByZWxheellcy4gSWwgZXN0IHBvc3NpYmxlLCBub3RhbW1lbnQgZGUgc3VwcHJpbWVyIG91CnLp6WNyaXJlIHVuIGNvb2tpZSByZXRvdXJu6SBwYXIgdW4gc2VydmV1ciBhY2PpZOkgZW4gZGlyZWN0LCBldCBkJ2luc+lyZXIgdW4KY29va2llIGRhbnMgdW5lIHLpcG9uc2UgSFRUUCBhZHJlc3PpZSDgIHVuIHNlcnZldXIgc+lsZWN0aW9ubukgZW4gculwYXJ0aXRpb24KZGUgY2hhcmdlLCBldCBt6m1lIGRlIHNpZ25hbGVyIGF1eCBwcm94aWVzIGFtb250IGRlIG5lIHBhcyBjYWNoZXIgbGUgY29va2llCmluc+ly6S4KCkV4ZW1wbGVzIDoKLS0tLS0tLS0tLQoKUG91ciBuZSBjb25zZXJ2ZXIgbGUgY29va2llIHF1J2VuIGFjY+hzIGluZGlyZWN0LCBkb25jIOAgdHJhdmVycyBsZQpkaXNwYXRjaGV1ciwgZXQgc3VwcHJpbWVyIHRvdXRlcyBzZXMg6XZlbnR1ZWxsZXMgb2NjdXJlbmNlcyBsb3JzIGRlcyBhY2PocwpkaXJlY3RzIDoKCiAgICAgICAgY29va2llIFNFUlZFUklEIGluZGlyZWN0CgpQb3VyIHJlbXBsYWNlciBsYSB2YWxldXIgZCd1biBjb29raWUgZXhpc3RhbnQgcGFyIGNlbGxlIGF0dHJpYnXpZSDgIHVuIHNlcnZldXIsCmxvcnMgZCd1biBhY2PocyBkaXJlY3QgOgoKICAgICAgICBjb29raWUgU0VSVkVSSUQgcmV3cml0ZQoKUG91ciBjcullciB1biBjb29raWUgY29tcG9ydGFudCBsYSB2YWxldXIgYXR0cmlidellIOAgdW4gc2VydmV1ciBsb3JzIGQndW4KYWNj6HMgZW4gculwYXJ0aXRpb24gZGUgY2hhcmdlIGludGVybmUuIERhbnMgY2UgY2FzLCBpbCBlc3Qgc291aGFpdGFibGUgcXVlCnRvdXMgbGVzIHNlcnZldXJzIGFpZW50IHVuIGNvb2tpZSByZW5zZWlnbukuIFVuIHNlcnZldXIgbm9uIGFzc2lnbukgZCd1biBjb29raWUKcmV0b3VybmVyYSB1biBjb29raWUgdmlkZSAoY29va2llIGRlIHN1cHByZXNzaW9uKSA6CgogICAgICAgIGNvb2tpZSBTRVJWRVJJRCBpbnNlcnQKClBvdXIgcul1dGlsaXNlciB1biBjb29raWUgYXBwbGljYXRpZiBldCBsdWkgcHLpZml4ZXIgbCdpZGVudGlmaWFudCBkdSBzZXJ2ZXVyLApwdWlzIGxlIHN1cHByaW1lciBkYW5zIGxlcyByZXF16nRlcyBzdWl2YW50ZXMsIHV0aWxpc2VyIGwnb3B0aW9uICdwcmVmaXgnLiBFbGxlCnBlcm1ldCBkJ2luc+lyZXIgdW5lIGluc3RhbmNlIGRlIGhhcHJveHkgZGV2YW50IHVuZSBhcHBsaWNhdGlvbiBzYW5zIHJpc3F1ZXIKZCdpbmNvbXBhdGliaWxpdOlzIGT7ZXMg4CBkZXMgY2xpZW50cyBxdWkgbmUgc3VwcG9ydGVyYWllbnQgcGFzIGQnYXBwcmVuZHJlCnBsdXMgZCd1biBjb29raWUgOgoKICAgICAgIGNvb2tpZSBKU0VTU0lPTklEIHByZWZpeAoKUG91ciBpbnPpcmVyIHVuIGNvb2tpZSwgZW4gcydhc3N1cmFudCBxdSd1biBjYWNoZSBlbiBhbW9udCBuZSBsZSBzdG9ja2VyYSBwYXMsCmFqb3V0ZXIgbGUgbW90IGNs6SAnbm9jYWNoZScgYXBy6HMgJ2luc2VydCcgOgoKICAgICAgICBjb29raWUgU0VSVkVSSUQgaW5zZXJ0IG5vY2FjaGUKClBvdXIgaW5z6XJlciB1biBjb29raWUgc2V1bGVtZW50IHN1aXRlIGF1eCByZXF16nRlcyBkZSB0eXBlIFBPU1QsIGFqb3V0ZXIgbGUKbW90IGNs6SAncG9zdG9ubHknIGFwcuhzICdpbnNlcnQnIDoKCiAgICAgICAgY29va2llIFNFUlZFUklEIGluc2VydCBwb3N0b25seQoKClJlbWFycXVlcyA6Ci0tLS0tLS0tLS0tCi0gSWwgZXN0IHBvc3NpYmxlIGRlIGNvbWJpbmVyICdpbnNlcnQnIGF2ZWMgJ2luZGlyZWN0JyBvdSAncmV3cml0ZScgcG91cgogIHMnYWRhcHRlciDgIGRlcyBhcHBsaWNhdGlvbnMgZ+lu6XJhbnQgZOlq4CBsZSBjb29raWUsIGF2ZWMgdW4gY29udGVudQogIGludmFsaWRlLiBJbCBzdWZmaXQgcG91ciBjZWxhIGRlIGxlcyBzcOljaWZpZXIgc3VyIGxhIG3qbWUgbGlnbmUuCgotIGRhbnMgbGUgY2FzIG/5ICdpbnNlcnQnIGV0ICdpbmRpcmVjdCcgc29udCBzcOljaWZp6XMsIGxlIGNvb2tpZSBuJ2VzdCBqYW1haXMKICB0cmFuc21pcyBhdSBzZXJ2ZXVyIHZ1IHF1J2lsIG4nZW4gYSBwYXMgY29ubmFpc3NhbmNlIGV0IG5lIHBvdXJyYWl0IHBhcyBsZQogIGNvbXByZW5kcmUuCgotIGlsIGVzdCBwYXJ0aWN1bGnocmVtZW50IHJlY29tbWFuZOkgZCd1dGlsaXNlciAnbm9jYWNoZScgZW4gbW9kZSBpbnNlcnRpb24gc2kKICBkZXMgY2FjaGVzIHBldXZlbnQgc2UgdHJvdXZlciBlbnRyZSBsZXMgY2xpZW50cyBldCBsJ2luc3RhbmNlIGR1IHByb3h5LiBEYW5zCiAgbGUgY2FzIGNvbnRyYWlyZSwgdW4gY2FjaGUgSFRUUCAxLjAgcG91cnJhaXQgY2FjaGVyIGxhIHLpcG9uc2UsIGluY2x1YW50IGxlCiAgY29va2llIGRlIHBlcnNpc3RlbmNlIGluc+ly6SwgZG9uYyBwcm92b3F1ZXIgZGVzIGNoYW5nZW1lbnRzIGRlIHNlcnZldXJzIHBvdXIKICBkZXMgY2xpZW50cyBwYXJ0YWdlYW50IGxlIG3qbWUgY2FjaGUuCgotIGxlIG1vZGUgJ3ByZWZpeCcgbmUgbuljZXNzaXRlIHBhcyBkJ3V0aWxpc2VyICdpbmRpcmVjdCcsICdub2NhY2hlJywgbmkKICAncG9zdG9ubHknLCBjYXIgdG91dCBjb21tZSBsZSBtb2RlICdyZXdyaXRlJywgaWwgcydhcHB1aWUgc3VyIHVuIGNvb2tpZQogIHBy6XNlbnTpIHBhciBsJ2FwcGxpY2F0aW9uIHF1aSBlc3QgY2Vuc+llIHNhdm9pciDgIHF1ZWwgbW9tZW50IGlsIHBldXQKICDqdHJlIOltaXMgc2FucyByaXNxdWUuIFRvdXRlZm9pcywgY29tbWUgaWwgbuljZXNzaXRlIGRlIHJlY3RpZmllciBsZSBjb29raWUKICBwculzZW506SBwYXIgbGUgY2xpZW50IGRhbnMgY2hhcXVlIHJlcXXqdGUgdWx06XJpZXVyZSwgaWwgZXN0IGluZGlzcGVuc2FibGUKICBkZSBzJ2Fzc3VyZXIgcXVlIGxlIGNsaWVudCBldCBsZSBzZXJ2ZXVyIGNvbW11bmlxdWVyb250IHNhbnMgImtlZXAtYWxpdmUKICBIVFRQIi4gRGFucyBsZSBkb3V0ZSwgaWwgZXN0IHJlY29tbWFuZOkgZCd1dGlsaXNlciBsJ29wdGlvbiAiaHR0cGNsb3NlIi4KCi0gbG9yc3F1ZSBsJ2FwcGxpY2F0aW9uIGVzdCBiaWVuIGNvbm51ZSwgZXQgcXVlIGxlcyBwYXJ0aWVzIG7pY2Vzc2l0YW50IGRlIGxhCiAgcGVyc2lzdGVuY2Ugc29udCBzeXN06W1hdGlxdWVtZW50IGFjY+lk6WVzIHBhciB1biBmb3JtdWxhaXJlIGVuIG1vZGUgUE9TVCwKICBpbCBlc3QgcGx1cyBlZmZpY2FjZSBlbmNvcmUgZGUgY29tYmluZXIgbGUgbW90IGNs6SAicG9zdG9ubHkiIGF2ZWMgImluc2VydCIKICBldCAiaW5kaXJlY3QiLCBjYXIgbGEgcGFnZSBkJ2FjY3VlaWwgcmVzdGUgY2FjaGFibGUsIGV0IGMnZXN0IGwnYXBwbGljYXRpb24KICBxdWkgZ+hyZSBsZSAnY2FjaGUtY29udHJvbCcuCgoyLjEwKSBBc3NpZ25hdGlvbiBkJ3VuIHNlcnZldXIg4CB1bmUgdmFsZXVyIGRlIGNvb2tpZQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkVuIG1vZGUgSFRUUCwgaWwgZXN0IHBvc3NpYmxlIGQnYXNzb2NpZXIgZGVzIHZhbGV1cnMgZGUgY29va2llIOAgZGVzIHNlcnZldXJzCnBhciBsZSBwYXJhbeh0cmUgJ3NlcnZlcicuIExhIHN5bnRheGUgZXN0IDoKCiAgICBzZXJ2ZXIgPGlkZW50aWZpYW50PiA8YWRyZXNzZV9pcD46PHBvcnQ+IGNvb2tpZSA8dmFsZXVyPgoKLSA8aWRlbnRpZmlhbnQ+IGVzdCB1biBub20gcXVlbGNvbnF1ZSBkZSBzZXJ2ZXVyIHV0aWxpc+kgcG91ciBsJ2lkZW50aWZpZXIgZGFucyBsYQogIGNvbmZpZ3VyYXRpb24gZXQgbGVzIGxvZ3MuCi0gPGFkcmVzc2VfaXA+Ojxwb3J0PiBlc3QgbGUgY291cGxlIGFkcmVzc2UtcG9ydCBzdXIgbGVxdWVsIGxlIHNlcnZldXIg6WNvdXRlLgotIDx2YWxldXI+IGVzdCBsYSB2YWxldXIg4CByZWNvbm5h7nRyZSBvdSBwb3NpdGlvbm5lciBkYW5zIGxlIGNvb2tpZS4KCkV4ZW1wbGUgOiBsZSBjb29raWUgU0VSVkVSSUQgcGV1dCBjb250ZW5pciBzZXJ2ZXIwMSBvdSBzZXJ2ZXIwMgotLS0tLS0tLS0KICAgIGxpc3RlbiBodHRwX3Byb3h5IDo4MAogICAgICAgIG1vZGUgaHR0cAogICAgICAgIGNvb2tpZSBTRVJWRVJJRAogICAgICAgIGRpc3BhdGNoIDE5Mi4xNjguMS4xMDA6ODAKICAgICAgICBzZXJ2ZXIgd2ViMSAxOTIuMTY4LjEuMTo4MCBjb29raWUgc2VydmVyMDEKICAgICAgICBzZXJ2ZXIgd2ViMiAxOTIuMTY4LjEuMjo4MCBjb29raWUgc2VydmVyMDIKCkF0dGVudGlvbiA6IGxhIHN5bnRheGUgYSBjaGFuZ+kgZGVwdWlzIGxhIHZlcnNpb24gMS4wLgotLS0tLS0tLS0tLQoKMykgUulwYXJ0aXRldXIgZGUgY2hhcmdlIGF1dG9ub21lCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoKTGUgcmVsYWlzIHBldXQgZWZmZWN0dWVyIGx1aS1t6m1lIGxhIHLpcGFydGl0aW9uIGRlIGNoYXJnZSBlbnRyZSBsZXMgZGlmZulyZW50cwpzZXJ2ZXVycyBk6WZpbmlzIHBvdXIgdW4gc2VydmljZSBkb25u6SwgZW4gbW9kZSBUQ1AgY29tbWUgZW4gbW9kZSBIVFRQLiBQb3VyCmNlbGEsIG9uIHBy6WNpc2UgbGUgbW90IGNs6SAnYmFsYW5jZScgZGFucyBsYSBk6WZpbml0aW9uIGR1IHNlcnZpY2UsCul2ZW50dWVsbGVtZW50IHN1aXZpIGR1IG5vbSBkJ3VuIGFsZ29yaXRobWUgZGUgculwYXJ0aXRpb24uIEp1c3F1J+AgbGEgdmVyc2lvbgoxLjIuMTEsIHNldWwgJ3JvdW5kcm9iaW4nIOl0YWl0IGfpcuksIGV0IGMnZXN0IGF1c3NpIGxhIHZhbGV1ciBpbXBsaWNpdGUgcGFyCmTpZmF1dC4gQXZlYyBsYSB2ZXJzaW9uIDEuMi4xMiwgbGUgbm91dmVhdSBtb3QgY2zpICdzb3VyY2UnIGVzdCBhcHBhcnUuIElsIGVzdArpdmlkZW50IHF1J2VuIGNhcyBkJ3V0aWxpc2F0aW9uIGR1IHLpcGFydGl0ZXVyIGludGVybmUsIGlsIG5lIGZhdWRyYSBwYXMKc3DpY2lmaWVyIGQnYWRyZXNzZSBkZSBkaXNwYXRjaCwgZXQgcXUnaWwgZmF1ZHJhIGF1IG1vaW5zIHVuIHNlcnZldXIuCgpFeGVtcGxlIDogbeptZSBxdWUgcHLpY+lkZW1tZW50IGVuIHLpcGFydGl0aW9uIGludGVybmUKLS0tLS0tLS0tCgogICAgbGlzdGVuIGh0dHBfcHJveHkgOjgwCiAgICAgICAgbW9kZSBodHRwCiAgICAgICAgY29va2llIFNFUlZFUklECiAgICAgICAgYmFsYW5jZSByb3VuZHJvYmluCiAgICAgICAgc2VydmVyIHdlYjEgMTkyLjE2OC4xLjE6ODAgY29va2llIHNlcnZlcjAxCiAgICAgICAgc2VydmVyIHdlYjIgMTkyLjE2OC4xLjI6ODAgY29va2llIHNlcnZlcjAyCgpEZXB1aXMgbGEgdmVyc2lvbiAxLjEuMjIsIGlsIGVzdCBwb3NzaWJsZSBkZSBk6XRlcm1pbmVyIGF1dG9tYXRpcXVlbWVudCBsZSBwb3J0CmR1IHNlcnZldXIgdmVycyBsZXF1ZWwgc2VyYSBlbnZveellIGxhIGNvbm5leGlvbiwgZW4gZm9uY3Rpb24gZHUgcG9ydCBkJ+ljb3V0ZQpzdXIgbGVxdWVsIGxlIGNsaWVudCBzJ2VzdCBjb25uZWN06S4gRW4gZWZmZXQsIGlsIHkgYSA0IHBvc3NpYmlsaXTpcyBwb3VyIGxlCmNoYW1wIDxwb3J0PiBkZSBsJ2FkcmVzc2Ugc2VydmV1ciA6CgogIC0gbm9uIHNw6WNpZmnpIG91IG51bCA6CiAgICBsYSBjb25uZXhpb24gc2VyYSBlbnZveellIGF1IHNlcnZldXIgc3VyIGxlIG3qbWUgcG9ydCBxdWUgY2VsdWkgc3VyCiAgICBsZXF1ZWwgbGUgcmVsYWlzIGEgcmXndSBsYSBjb25uZXhpb24uCgogIC0gdmFsZXVyIG51belyaXF1ZSAoc2V1bCBjYXMgc3VwcG9ydOkgcG91ciBsZXMgdmVyc2lvbnMgYW506XJpZXVyZXMpIDoKICAgIGxlIHNlcnZldXIgcmVjZXZyYSBsYSBjb25uZXhpb24gc3VyIGxlIHBvcnQgZOlzaWdu6S4KCiAgLSB2YWxldXIgbnVt6XJpcXVlIHBy6WPpZOllIGQndW4gc2lnbmUgJysnIDoKICAgIGxhIGNvbm5leGlvbiBzZXJhIGVudm956WUgYXUgc2VydmV1ciBzdXIgbGUgbeptZSBwb3J0IHF1ZSBjZWx1aSBzdXIKICAgIGxlcXVlbCBsZSByZWxhaXMgYSByZed1IGxhIGNvbm5leGlvbiwgYXVxdWVsIG9uIGFqb3V0ZSBsYSB2YWxldXIgZOlzaWdu6WUuCiAgICAKICAtIHZhbGV1ciBudW3pcmlxdWUgcHLpY+lk6WUgZCd1biBzaWduZSAnLScgOgogICAgbGEgY29ubmV4aW9uIHNlcmEgZW52b3npZSBhdSBzZXJ2ZXVyIHN1ciBsZSBt6m1lIHBvcnQgcXVlIGNlbHVpIHN1cgogICAgbGVxdWVsIGxlIHJlbGFpcyBhIHJl53UgbGEgY29ubmV4aW9uLCBkdXF1ZWwgb24gc291c3RyYWl0IGxhIHZhbGV1cgogICAgZOlzaWdu6WUuCiAgICAKRXhlbXBsZXMgOgotLS0tLS0tLS0tCgojIG3qbWUgcXVlIHBy6WPpZGVtbWVudAoKICAgIGxpc3RlbiBodHRwX3Byb3h5IDo4MAogICAgICAgIG1vZGUgaHR0cAogICAgICAgIGNvb2tpZSBTRVJWRVJJRAogICAgICAgIGJhbGFuY2Ugcm91bmRyb2JpbgogICAgICAgIHNlcnZlciB3ZWIxIDE5Mi4xNjguMS4xIGNvb2tpZSBzZXJ2ZXIwMQogICAgICAgIHNlcnZlciB3ZWIyIDE5Mi4xNjguMS4yIGNvb2tpZSBzZXJ2ZXIwMgoKIyByZWxheWFnZSBzaW11bHRhbukgZGVzIHBvcnRzIDgwIGV0IDgxIGV0IDgwODAtODA4OQoKICAgIGxpc3RlbiBodHRwX3Byb3h5IDo4MCw6ODEsOjgwODAtODA4OQogICAgICAgIG1vZGUgaHR0cAogICAgICAgIGNvb2tpZSBTRVJWRVJJRAogICAgICAgIGJhbGFuY2Ugcm91bmRyb2JpbgogICAgICAgIHNlcnZlciB3ZWIxIDE5Mi4xNjguMS4xIGNvb2tpZSBzZXJ2ZXIwMQogICAgICAgIHNlcnZlciB3ZWIyIDE5Mi4xNjguMS4yIGNvb2tpZSBzZXJ2ZXIwMgoKIyByZWxheWFnZSBUQ1AgZGVzIHBvcnRzIDI1LCAzODkgZXQgNjYzIHZlcnMgbGVzIHBvcnRzIDEwMjUsIDEzODkgZXQgMTY2MwoKICAgIGxpc3RlbiBodHRwX3Byb3h5IDoyNSw6Mzg5LDo2NjMKICAgICAgICBtb2RlIHRjcAogICAgICAgIGJhbGFuY2Ugcm91bmRyb2JpbgogICAgICAgIHNlcnZlciBzcnYxIDE5Mi4xNjguMS4xOisxMDAwCiAgICAgICAgc2VydmVyIHNydjIgMTkyLjE2OC4xLjI6KzEwMDAKCkNvbW1lIGluZGlxdekgcHLpY+lkZW1tZW50LCBsYSB2ZXJzaW9uIDEuMi4xMiBhcHBvcnRhIGxlIG5vdXZlYXUgbW90IGNs6Qonc291cmNlJy4gTG9yc3F1ZSBjZWx1aS1jaSBlc3QgdXRpbGlz6SwgbCdhZHJlc3NlIElQIGR1IGNsaWVudCBlc3QgaGFjaOllIGV0CmRpc3RyaWJ16WUgZGUgbWFuaehyZSBob21vZ+huZSBwYXJtaSBsZXMgc2VydmV1cnMgZGlzcG9uaWJsZXMsIGRlIHNvcnRlIHF1J3VuZQpt6m1lIGFkcmVzc2UgSVAgYWlsbGUgdG91am91cnMgc3VyIGxlIG3qbWUgc2VydmV1ciB0YW50IHF1J2lsIG4neSBhIGF1Y3VuCmNoYW5nZW1lbnQgZGFucyBsZSBub21icmUgZGUgc2VydmV1cnMgZGlzcG9uaWJsZXMuIENlY2kgcGV1dCDqdHJlIHV0aWxpc+kgcGFyCmV4ZW1wbGUgcG91ciBhdHRhY2hlciBsZSBIVFRQIGV0IGxlIEhUVFBTIHN1ciB1biBt6m1lIHNlcnZldXIgcG91ciB1biBt6m1lCmNsaWVudC4gQ2VsYSBwZXV0IOlnYWxlbWVudCDqdHJlIHV0aWxpc+kgcG91ciBhbelsaW9yZXIgbGEgcGVyc2lzdGFuY2UKbG9yc3F1J3VuZSBwYXJ0aWUgZGUgbGEgcG9wdWxhdGlvbiBkZXMgY2xpZW50cyBuJ2FjY2VwdGUgcGFzIGxlcyBjb29raWVzLiBEYW5zCmNlIGNhcywgc2V1bHMgY2VzIGRlcm5pZXJzIHNlcm9udCBwZXJ0dXJi6XMgcGFyIGxhIHBlcnRlIGQndW4gc2VydmV1ci4KCk5PVEU6IGlsIGVzdCBpbXBvcnRhbnQgZGUgcHJlbmRyZSBlbiBjb21wdGUgbGUgZmFpdCBxdWUgYmVhdWNvdXAgZCdpbnRlcm5hdXRlcwogICAgICBuYXZpZ3VlbnQg4CB0cmF2ZXJzIGRlcyBmZXJtZXMgZGUgcHJveGllcyBxdWkgYXNzaWduZW50IGRlcyBhZHJlc3NlcyBJUAogICAgICBkaWZm6XJlbnRlcyDgIGNoYXF1ZSByZXF16nRlLiBEJ2F1dHJlcyBpbnRlcm5hdXRlcyB1dGlsaXNlbnQgZGVzIGxpZW5zIOAKICAgICAgbGEgZGVtYW5kZSBldCBvYnRpZW5uZW50IHVuZSBhZHJlc3NlIElQIGRpZmbpcmVudGUg4CBjaGFxdWUgY29ubmV4aW9uLiBEZQogICAgICBjZSBmYWl0LCBsZSBwYXJhbeh0cmUgJ3NvdXJjZScgZG9pdCDqdHJlIHV0aWxpc+kgYXZlYyB1bmUgZXh0cuhtZQogICAgICBwculjYXV0aW9uLgoKRXhlbXBsZXMgOgotLS0tLS0tLS0tCgojIGFzc3VyZXIgcXUndW5lIG3qbWUgYWRyZXNzZSBJUCBpcmEgc3VyIGxlIG3qbWUgc2VydmV1ciBwb3VyIHRvdXQgc2VydmljZQoKICAgIGxpc3RlbiBodHRwX3Byb3h5CiAgICAgICAgYmluZCA6ODAsOjQ0MwogICAgICAgIG1vZGUgaHR0cAogICAgICAgIGJhbGFuY2Ugc291cmNlCiAgICAgICAgc2VydmVyIHdlYjEgMTkyLjE2OC4xLjEKICAgICAgICBzZXJ2ZXIgd2ViMiAxOTIuMTY4LjEuMgoKIyBhbelsaW9yZXIgbGEgcGVyc2lzdGFuY2UgcGFyIGwndXRpbGlzYXRpb24gZGUgbGEgc291cmNlIGVuIHBsdXMgZHUgY29va2llIDoKCiAgICBsaXN0ZW4gaHR0cF9wcm94eSA6ODAKICAgICAgICBtb2RlIGh0dHAKICAgICAgICBjb29raWUgU0VSVkVSSUQKICAgICAgICBiYWxhbmNlIHNvdXJjZQogICAgICAgIHNlcnZlciB3ZWIxIDE5Mi4xNjguMS4xIGNvb2tpZSBzZXJ2ZXIwMQogICAgICAgIHNlcnZlciB3ZWIyIDE5Mi4xNjguMS4yIGNvb2tpZSBzZXJ2ZXIwMgoKCjMuMSkgU3VydmVpbGxhbmNlIGRlcyBzZXJ2ZXVycwotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KSWwgZXN0IHBvc3NpYmxlIGRlIHRlc3RlciBsJ+l0YXQgZGVzIHNlcnZldXJzIHBhciDpdGFibGlzc2VtZW50IGRlIGNvbm5leGlvbgpUQ1Agb3UgcGFyIGVudm9pIGQndW5lIHJlcXXqdGUgSFRUUC4gVW4gc2VydmV1ciBob3JzIGQndXNhZ2UgbmUgc2VyYSBwYXMKdXRpbGlz6SBkYW5zIGxlIHByb2Nlc3N1cyBkZSBy6XBhcnRpdGlvbiBkZSBjaGFyZ2UgaW50ZXJuZS4gUG91ciBhY3RpdmVyIGxhCnN1cnZlaWxsYW5jZSwgYWpvdXRlciBsZSBtb3QgY2zpICdjaGVjaycg4CBsYSBmaW4gZGUgbGEgZOljbGFyYXRpb24gZHUgc2VydmV1ci4KSWwgZXN0IHBvc3NpYmxlIGRlIHNw6WNpZmllciBsJ2ludGVydmFsbGUgKGVuIG1pbGxpc2Vjb25kZXMpIHPpcGFyYW50IGRldXgKdGVzdHMgZHUgc2VydmV1ciBwYXIgbGUgcGFyYW3odHJlICJpbnRlciIsIGxlIG5vbWJyZSBkJ+ljaGVjcyBhY2NlcHTpcyBwYXIgbGUKcGFyYW3odHJlICJmYWxsIiwgZXQgbGUgbm9tYnJlIGRlIHN1Y2PocyBhdmFudCByZXByaXNlIHBhciBsZSBwYXJhbeh0cmUgInJpc2UiLgpMZXMgcGFyYW3odHJlcyBub24gcHLpY2lz6XMgcHJlbm5lbnQgbGVzIHZhbGV1cnMgc3VpdmFudGVzIHBhciBk6WZhdXQgOgoKIC0gaW50ZXIgOiAyMDAwCiAtIHJpc2UgIDogMgogLSBmYWxsICA6IDMKIC0gcG9ydCAgOiBwb3J0IGRlIGNvbm5leGlvbiBkdSBzZXJ2ZXVyCiAtIGFkZHIgIDogYWRyZXNzZSBkZSBjb25uZXhpb24gZHUgc2VydmV1ciAocGFyIGRlZmF1dDogYWRyZXNzZSBkdSBzZXJ2ZXVyKQogCkxlIG1vZGUgcGFyIGTpZmF1dCBjb25zaXN0ZSDgIOl0YWJsaXIgZGVzIGNvbm5leGlvbnMgVENQIHVuaXF1ZW1lbnQuIERhbnMKY2VydGFpbnMgY2FzIGRlIHBhbm5lcywgZGVzIHNlcnZldXJzIHBldXZlbnQgY29udGludWVyIOAgYWNjZXB0ZXIgbGVzCmNvbm5leGlvbnMgc2FucyBsZXMgdHJhaXRlci4gRGVwdWlzIGxhIHZlcnNpb24gMS4xLjE2LCBoYXByb3h5IGVzdCBlbiBtZXN1cmUKZCdlbnZveWVyIGRlcyByZXF16nRlcyBIVFRQIGNvdXJ0ZXMgZXQgdHLocyBwZXUgY2/7dGV1c2VzLiBMZXMgdmVyc2lvbnMgMS4xLjE2CmV0IDEuMS4xNyB1dGlsaXNlbnQgIk9QVElPTlMgLyBIVFRQLzEuMCIuIERhbnMgbGVzIHZlcnNpb25zIDEuMS4xOCDgIDEuMS4yMCwKbGVzIHJlcXXqdGVzIG9udCDpdOkgY2hhbmfpZXMgZW4gIk9QVElPTlMgKiBIVFRQLzEuMCIgcG91ciBkZXMgcmFpc29ucyBkZQpjb250cvRsZSBkJ2FjY+hzIGF1eCByZXNzb3VyY2VzLiBDZXBlbmRhbnQsIGNldHRlIHJlcXXqdGUgZG9jdW1lbnTpZSBkYW5zIGxhClJGQzIwNjggbidlc3QgcGFzIGNvbXByaXNlIHBhciB0b3VzIGxlcyBzZXJ2ZXVycy4gRG9uYyDgIHBhcnRpciBkZSBsYSB2ZXJzaW9uCjEuMS4yMSwgbGEgcmVxdep0ZSBwYXIgZOlmYXV0IGVzdCByZXZlbnVlIOAgIk9QVElPTlMgLyBIVFRQLzEuMCIsIG1haXMgaWwgZXN0CnBvc3NpYmxlIGRlIHBhcmFt6XRyZXIgbGEgcGFydGllIFVSSS4gTGVzIHJlcXXqdGVzIE9QVElPTlMgcHLpc2VudGVudApsJ2F2YW50YWdlIGQn6nRyZSBmYWNpbGVtZW50IGV4dHJhY3RpYmxlcyBkZXMgbG9ncywgZXQgZGUgbmUgcGFzIGluZHVpcmUKZCdhY2PocyBhdXggZmljaGllcnMgY/R06SBzZXJ2ZXVyLiBTZXVsZXMgbGVzIHLpcG9uc2VzIDJ4eCBldCAzeHggc29udApjb25zaWTpcullcyB2YWxpZGVzLCBsZXMgYXV0cmVzICh5IGNvbXByaXMgbm9uLXLpcG9uc2VzKSBhYm91dGlzc2VudCDgIHVuCuljaGVjLiBMZSB0ZW1wcyBtYXhpbWFsIGltcGFydGkgcG91ciB1bmUgculwb25zZSBlc3Qg6WdhbCDgIGwnaW50ZXJ2YWxsZSBlbnRyZQpkZXV4IHRlc3RzIChwYXJhbeh0cmUgImludGVyIikuIFBvdXIgYWN0aXZlciBjZSBtb2RlLCBzcOljaWZpZXIgbCdvcHRpb24KImh0dHBjaGsiLCDpdmVudHVlbGxlbWVudCBzdWl2aWUgZCd1bmUgbel0aG9kZSBldCBkJ3VuZSBVUkkuIEwnb3B0aW9uICJodHRwY2hrIgphY2NlcHRlIGRvbmMgNCBmb3JtZXMgOgoKICAtIG9wdGlvbiBodHRwY2hrICAgICAgICAgICAgICAgLT4gT1BUSU9OUyAvIEhUVFAvMS4wCiAgLSBvcHRpb24gaHR0cGNoayBVUkkgICAgICAgICAgIC0+IE9QVElPTlMgPFVSST4gSFRUUC8xLjAKICAtIG9wdGlvbiBodHRwY2hrIE1FVEggVVJJICAgICAgLT4gPE1FVEg+IDxVUkk+IEhUVFAvMS4wCiAgLSBvcHRpb24gaHR0cGNoayBNRVRIIFVSSSBWRVIgIC0+IDxNRVRIPiA8VVJJPiA8VkVSPgoKSEFQcm94eSBlc3Qgc291dmVudCB1dGlsaXPpIHBvdXIgcmVsYXllciBkaXZlcnMgcHJvdG9jb2xlcyByZXBvc2FudCBzdXIgVENQLAp0ZWxzIHF1ZSBIVFRQUywgU01UUCBvdSBMREFQLCBsZSBwbHVzIGNvbW11biDpdGFudCBIVFRQUy4gVW4gcHJvYmzobWUgYXNzZXoKY291cmFtbWVudCByZW5jb250cukgZGFucyBsZXMgZGF0YSBjZW50ZXJzIGVzdCBsZSBiZXNvaW4gZGUgcmVsYXllciBkdSB0cmFmaWMKdmVycyBkZXMgc2VydmV1cnMgbG9pbnRhaW5zIHRvdXQgZW4gbWFpbnRlbmFudCBsYSBwb3NzaWJpbGl06SBkZSBiYXNjdWxlciBzdXIKdW4gc2VydmV1ciBkZSBzZWNvdXJzLiBMZXMgdGVzdHMgcHVyZW1lbnQgVENQIG5lIHN1ZmZpc2VudCBwYXMgdG91am91cnMgZGFucwpjZXMgc2l0dWF0aW9ucyBjYXIgbCdvbiB0cm91dmUgc291dmVudCwgZGFucyBsYSBjaGHubmUsIGRlcyBwcm94aWVzLCBmaXJld2FsbHMKb3UgculwYXJ0aXRldXJzIGRlIGNoYXJnZSBxdWkgcGV1dmVudCBhY3F1aXR0ZXIgbGEgY29ubmV4aW9uIGF2YW50IHF1J2VsbGUKbidhdHRlaWduZSBsZSBzZXJ2ZXVyLiBMYSBzZXVsZSBzb2x1dGlvbiDgIGNlIHByb2Js6G1lIGVzdCBkJ2Vudm95ZXIgZGVzIHRlc3RzCmFwcGxpY2F0aWZzLiBDb21tZSBsYSBkZW1hbmRlIHBvdXIgbGVzIHRlc3RzIEhUVFBTIGVzdCDpbGV26WUsIGNlIHRlc3QgYSDpdOkKaW1wbOltZW506SBlbiB2ZXJzaW9uIDEuMi4xNSBzdXIgbGEgYmFzZSBkZSBtZXNzYWdlcyBTU0x2MyBDTElFTlQgSEVMTE8uIFBvdXIKbCdhY3RpdmVyLCB1dGlsaXNlciAib3B0aW9uIHNzbC1oZWxsby1jaGsiLiBDZWNpIGVudmVycmEgZGVzIG1lc3NhZ2VzIFNTTHYzCkNMSUVOVCBIRUxMTyBhdXggc2VydmV1cnMsIGVuIGFubm9u52FudCB1biBzdXBwb3J0IHBvdXIgbGEgbWFqb3JpdOkgZGVzCmFsZ29yaXRobWVzIGRlIGNoaWZmcmVtZW50LiBTaSBlbiByZXRvdXIsIGxlIHNlcnZldXIgZW52b2llIGNlIHF1aSByZXNzZW1ibGUg4Ap1bmUgculwb25zZSBTU0x2MyBTRVJWRVIgSEVMTE8gb3UgQUxFUlQgKHJlZnVzIGRlcyBhbGdvcml0aG1lcyksIGFsb3JzIGxhCnLpcG9uc2Ugc2VyYSBjb25zaWTpcullIGNvbW1lIHZhbGlkZS4gTm90ZXIgcXUnQXBhY2hlIG5lIHByb2R1aXQgcGFzIGRlIGxvZwpsb3JzcXUnaWwgcmXnb2l0IGRlcyBtZXNzYWdlcyBIRUxMTywgY2UgcXVpIGVuIGZhaXQgdW4gdHlwZSBkZSBtZXNzYWdlCnBhcmZhaXRlbWVudCBhZGFwdOkg4CBjZSBiZXNvaW4uCgpWb2lyIGxlcyBleGVtcGxlcyBjaS1hcHLocy4gICAgICAgIAoKRGVwdWlzIGxhIHZlcnNpb24gMS4xLjE3LCBpbCBlc3QgcG9zc2libGUgZGUgZOlmaW5pciBkZXMgc2VydmV1cnMgZGUgc2Vjb3VycywKdXRpbGlz6XMgdW5pcXVlbWVudCBsb3JzcXUnYXVjdW4gZGVzIGF1dHJlcyBzZXJ2ZXVycyBuZSBmb25jdGlvbm5lLiBQb3VyIGNlbGEsCmFqb3V0ZXIgbGUgbW90IGNs6SAiYmFja3VwIiBzdXIgbGEgbGlnbmUgZGUgZOlmaW5pdGlvbiBkdSBzZXJ2ZXVyLiBVbiBzZXJ2ZXVyCmRlIHNlY291cnMgbidlc3QgYXBwZWzpIHF1ZSBsb3JzcXVlIHRvdXMgbGVzIHNlcnZldXJzIG5vcm1hdXgsIGFpbnNpIHF1ZSB0b3VzCmxlcyBzZXJ2ZXVycyBkZSBzZWNvdXJzIHF1aSBsZSBwculj6GRlbnQgc29udCBob3JzIGQndXNhZ2UuIElsIG4neSBhIGRvbmMgcGFzCmRlIHLpcGFydGl0aW9uIGRlIGNoYXJnZSBlbnRyZSBkZXMgc2VydmV1cnMgZGUgc2Vjb3VycyBwYXIgZOlmYXV0LiBBIHBhcnRpcgpkZSBsYSB2ZXJzaW9uIDEuMi45LCBpbCBlc3QgcG9zc2libGUgZGUgbGVzIHV0aWxpc2VyIHNpbXVsdGFu6W1lbnQgZ3LiY2Ug4ApsJ29wdGlvbiAnYWxsYmFja3VwcycuIENlIHR5cGUgZGUgc2VydmV1cnMgcGV1dCBzZXJ2aXIg4CByZXRvdXJuZXIgZGVzIHBhZ2VzCmQnaW5kaXNwb25pYmlsaXTpIGRlIHNlcnZpY2UuIERhbnMgY2UgY2FzLCBpbCBlc3QgcHLpZulyYWJsZSBkZSBuZSBwYXMgYWZmZWN0ZXIKZGUgY29va2llLCBhZmluIHF1ZSBsZXMgY2xpZW50cyBxdWkgbGUgcmVuY29udHJlbnQgbid5IHNvaWVudCBwYXMgYWZmZWN06XMKZOlmaW5pdGl2ZW1lbnQuIExlIGZhaXQgZGUgbmUgcGFzIG1ldHRyZSBkZSBjb29raWUgZW52b2llIHVuIGNvb2tpZSB2aWRlLCBjZQpxdWkgYSBwb3VyIGVmZmV0IGRlIHN1cHByaW1lciB1biDpdmVudHVlbCBjb29raWUgYWZmZWN06SBwculj6WRlbW1lbnQuCgpEZXB1aXMgbGEgdmVyc2lvbiAxLjEuMjIsIGlsIGVzdCBwb3NzaWJsZSBkJ2Vudm95ZXIgbGVzIHRlc3RzIGRlIGZvbmN0aW9ubmVtZW50CnZlcnMgdW4gcG9ydCBkaWZm6XJlbnQgZGUgY2VsdWkgZGUgc2VydmljZS4gQydlc3QgbuljZXNzYWlyZSBwcmluY2lwYWxlbWVudApwb3VyIGxlcyBjb25maWd1cmF0aW9ucyBv+SBsZSBzZXJ2ZXVyIG4nYSBwYXMgZGUgcG9ydCBwculk6WZpbmksIHBhciBleGVtcGxlCmxvcnNxdSdpbCBlc3QgZOlkdWl0IGR1IHBvcnQgZCdhY2NlcHRhdGlvbiBkZSBsYSBjb25uZXhpb24uIFBvdXIgY2VsYSwgdXRpbGlzZXIKbGUgcGFyYW3odHJlICdwb3J0JyBzdWl2aSBkdSBudW3pcm8gZGUgcG9ydCBkZXZhbnQgculwb25kcmUgYXV4IHJlcXXqdGVzLiBJbAplc3QgcG9zc2libGUgZCdlbnZveWVyIGxlcyB0ZXN0cyBkZSBmb25jdGlvbm5lbWVudCB2ZXJzIHVuZSBhZHJlc3NlIGRpZmbpcmVudGUgCmRlIGNlbGxlIGRlIHNlcnZpY2UuIENlbGEgcGVybWV0IGQndXRpbGlzZXIsIHN1ciBsYSBtYWNoaW5lIGZhaXNhbnQgZm9uY3Rpb25uZXIKSEFwcm94eSwgdW4gZOltb24gcGVybWV0dGFudCBkZXMgdGVzdHMgc3BlY2lmaXF1ZXMgKCBSRUdFWCBzdXIgdW4gculzdWx0YXQgZXQKYmFzY3VsZW1lbnQgZGUgcGx1c2lldXJzIGZlcm1lcyBlbiBjYXMgZCdlcnJldXIgc3VyIGwndW5lIGQnZWxsZXMpLgoKRW5maW4sIGRlcHVpcyBsYSB2ZXJzaW9uIDEuMS4xNywgaWwgZXN0IHBvc3NpYmxlIGRlIHZpc3VhbGlzZXIgcmFwaWRlbWVudApsJ+l0YXQgY291cmFudCBkZSB0b3VzIGxlcyBzZXJ2ZXVycy4gUG91ciBjZWxhLCBpbCBzdWZmaXQgZCdlbnZveWVyIHVuIHNpZ25hbApTSUdIVVAgYXUgcHJvY2Vzc3VzIHByb3h5LiBMJ+l0YXQgZGUgdG91cyBsZXMgc2VydmV1cnMgZGUgdG91cyBsZXMgcHJveGllcyBlc3QKZW52b3npIGRhbnMgbGVzIGxvZ3MgZW4gbml2ZWF1ICJub3RpY2UiLCBhaW5zaSBxdWUgc3VyIGxhIHNvcnRpZSBkJ2VycmV1cnMgc2kKZWxsZSBlc3QgYWN0aXZlLiBDJ2VzdCB1bmUgYm9ubmUgcmFpc29uIHBvdXIgYXZvaXIgYXUgbW9pbnMgdW4gc2VydmV1ciBkZSBsb2dzCmxvY2FsIGVuIG5pdmVhdSBub3RpY2UuCgpEZXB1aXMgbGEgdmVyc2lvbiAxLjEuMTggKGV0IDEuMi4xKSwgdW4gbWVzc2FnZSBkJ3VyZ2VuY2UgZXN0IGVudm956SBkYW5zIGxlcwpsb2dzIGVuIG5pdmVhdSAnZW1lcmcnIHNpIHRvdXMgbGVzIHNlcnZldXJzIGQndW5lIG3qbWUgaW5zdGFuY2Ugc29udCB0b21i6XMsCmFmaW4gZGUgbm90aWZpZXIgbCdhZG1pbmlzdHJhdGV1ciBxdSdpbCBmYXV0IHByZW5kcmUgdW5lIGFjdGlvbiBpbW3pZGlhdGUuCgpEZXB1aXMgbGVzIHZlcnNpb25zIDEuMS4zMCBldCAxLjIuMywgcGx1c2lldXJzIHNlcnZldXJzIHBldXZlbnQgcGFydGFnZXIgbGEKbeptZSB2YWxldXIgZGUgY29va2llLiBDJ2VzdCBwYXJ0aWN1bGnocmVtZW50IHV0aWxlIGVuIG1vZGUgYmFja3VwLCBwb3VyCnPpbGVjdGlvbm5lciBkZXMgY2hlbWlucyBhbHRlcm5hdGlmcyBwb3VyIHVuIHNlcnZldXIgZG9ubuksIHBvdXIgbWV0dHJlIGVuCm9ldXZyZSBsJ2Fycup0IGVuIGRvdWNldXIgZCd1biBzZXJ2ZXVyLCBvdSBwb3VyIGRpcmlnZXIgbGVzIGNsaWVudHMKdGVtcG9yYWlyZW1lbnQgdmVycyB1bmUgcGFnZSBkJ2VycmV1ciBlbiBhdHRlbmRhbnQgbGUgcmVk6W1hcnJhZ2UgZCd1bmUKYXBwbGljYXRpb24uIExlIHByaW5jaXBlIGVzdCBxdWUgbG9yc3F1J3VuIHNlcnZldXIgZXN0IGTpdGVjdOkgY29tbWUgaW5vcOlyYW50LApsZSBwcm94eSBjaGVyY2hlcmEgbGUgcHJvY2hhaW4gc2VydmV1ciBwb3Nz6WRhbnQgbGEgbeptZSB2YWxldXIgZGUgY29va2llIHBvdXIKY2hhcXVlIGNsaWVudCBxdWkgbGUgZGVtYW5kZXJhLiBTJ2lsIG5lIHRyb3V2ZSBwYXMgZGUgc2VydmV1ciBub3JtYWwsIGFsb3JzIGlsCmxlIGNoZXJjaGVyYSBwYXJtaSBsZXMgc2VydmV1cnMgZGUgYmFja3VwLiBDb25zdWx0ZXIgbGUgZ3VpZGUgZCdhcmNoaXRlY3R1cmUKcG91ciBwbHVzIGQnaW5mb3JtYXRpb25zLgoKRXhlbXBsZXMgOgotLS0tLS0tLS0tCiMgY29uZiBkdSBwYXJhZ3JhcGhlIDMpIGF2ZWMgc3VydmVpbGxhbmNlIFRDUAogICAgbGlzdGVuIGh0dHBfcHJveHkgMC4wLjAuMDo4MAogICAgICAgIG1vZGUgaHR0cAogICAgICAgIGNvb2tpZSBTRVJWRVJJRAogICAgICAgIGJhbGFuY2Ugcm91bmRyb2JpbgogICAgICAgIHNlcnZlciB3ZWIxIDE5Mi4xNjguMS4xOjgwIGNvb2tpZSBzZXJ2ZXIwMSBjaGVjawogICAgICAgIHNlcnZlciB3ZWIyIDE5Mi4xNjguMS4yOjgwIGNvb2tpZSBzZXJ2ZXIwMiBjaGVjayBpbnRlciA1MDAgcmlzZSAxIGZhbGwgMgoKIyBt6m1lIHF1ZSBwculj6WRlbW1lbnQgYXZlYyBzdXJ2ZWlsbGFuY2UgSFRUUCBwYXIgJ09QVElPTlMgLyBIVFRQLzEuMCcKICAgIGxpc3RlbiBodHRwX3Byb3h5IDAuMC4wLjA6ODAKICAgICAgICBtb2RlIGh0dHAKICAgICAgICBjb29raWUgU0VSVkVSSUQKICAgICAgICBiYWxhbmNlIHJvdW5kcm9iaW4KICAgICAgICBvcHRpb24gaHR0cGNoawogICAgICAgIHNlcnZlciB3ZWIxIDE5Mi4xNjguMS4xOjgwIGNvb2tpZSBzZXJ2ZXIwMSBjaGVjawogICAgICAgIHNlcnZlciB3ZWIyIDE5Mi4xNjguMS4yOjgwIGNvb2tpZSBzZXJ2ZXIwMiBjaGVjayBpbnRlciA1MDAgcmlzZSAxIGZhbGwgMgoKIyBt6m1lIHF1ZSBwculj6WRlbW1lbnQgYXZlYyBzdXJ2ZWlsbGFuY2UgSFRUUCBwYXIgJ09QVElPTlMgL2luZGV4Lmh0bWwgSFRUUC8xLjAnCiAgICBsaXN0ZW4gaHR0cF9wcm94eSAwLjAuMC4wOjgwCiAgICAgICAgbW9kZSBodHRwCiAgICAgICAgY29va2llIFNFUlZFUklECiAgICAgICAgYmFsYW5jZSByb3VuZHJvYmluCiAgICAgICAgb3B0aW9uIGh0dHBjaGsgL2luZGV4Lmh0bWwKICAgICAgICBzZXJ2ZXIgd2ViMSAxOTIuMTY4LjEuMTo4MCBjb29raWUgc2VydmVyMDEgY2hlY2sKICAgICAgICBzZXJ2ZXIgd2ViMiAxOTIuMTY4LjEuMjo4MCBjb29raWUgc2VydmVyMDIgY2hlY2sgaW50ZXIgNTAwIHJpc2UgMSBmYWxsIDIKCiMgaWRlbSBhdmVjIHN1cnZlaWxsYW5jZSBIVFRQIHBhciAnSEVBRCAvaW5kZXguanNwPyBIVFRQLzEuMVxyXG5Ib3N0OiB3d3cnCiAgICBsaXN0ZW4gaHR0cF9wcm94eSAwLjAuMC4wOjgwCiAgICAgICAgbW9kZSBodHRwCiAgICAgICAgY29va2llIFNFUlZFUklECiAgICAgICAgYmFsYW5jZSByb3VuZHJvYmluCiAgICAgICAgb3B0aW9uIGh0dHBjaGsgSEVBRCAvaW5kZXguanNwPyBIVFRQLzEuMVxyXG5Ib3N0Olwgd3d3CiAgICAgICAgc2VydmVyIHdlYjEgMTkyLjE2OC4xLjE6ODAgY29va2llIHNlcnZlcjAxIGNoZWNrCiAgICAgICAgc2VydmVyIHdlYjIgMTkyLjE2OC4xLjI6ODAgY29va2llIHNlcnZlcjAyIGNoZWNrIGludGVyIDUwMCByaXNlIDEgZmFsbCAyCgojIHLpcGFydGl0aW9uIGF2ZWMgcGVyc2lzdGVuY2UgYmFz6WUgc3VyIGxlIHBy6WZpeGUgZGUgY29va2llLCBldCBhcnLqdCBlbgojIGRvdWNldXIgdXRpbGlzYW50IHVuIHNlY29uZCBwb3J0ICg4MSkganVzdGUgcG91ciBsZXMgaGVhbHRoLWNoZWNrcy4KICAgIGxpc3RlbiBodHRwX3Byb3h5IDAuMC4wLjA6ODAKICAgICAgIG1vZGUgaHR0cAogICAgICAgY29va2llIEpTRVNTSU9OSUQgcHJlZml4CiAgICAgICBiYWxhbmNlIHJvdW5kcm9iaW4KICAgICAgIG9wdGlvbiBodHRwY2hrIEhFQUQgL2luZGV4LmpzcD8gSFRUUC8xLjFcclxuSG9zdDpcIHd3dwogICAgICAgc2VydmVyIHdlYjEtbm9ybSAxOTIuMTY4LjEuMTo4MCBjb29raWUgczEgY2hlY2sgcG9ydCA4MQogICAgICAgc2VydmVyIHdlYjItbm9ybSAxOTIuMTY4LjEuMjo4MCBjb29raWUgczIgY2hlY2sgcG9ydCA4MQogICAgICAgc2VydmVyIHdlYjEtc3RvcCAxOTIuMTY4LjEuMTo4MCBjb29raWUgczEgY2hlY2sgcG9ydCA4MCBiYWNrdXAKICAgICAgIHNlcnZlciB3ZWIyLXN0b3AgMTkyLjE2OC4xLjI6ODAgY29va2llIHMyIGNoZWNrIHBvcnQgODAgYmFja3VwCgojIEluc2VydGlvbiBhdXRvbWF0aXF1ZSBkZSBjb29raWUgZGFucyBsYSBy6XBvbnNlIGR1IHNlcnZldXIsIGV0IHN1cHByZXNzaW9uCiMgYXV0b21hdGlxdWUgZGFucyBsYSByZXF16nRlLCB0b3V0IGVuIGluZGlxdWFudCBhdXggY2FjaGVzIGRlIG5lIHBhcyBnYXJkZXIKIyBjZSBjb29raWUuCiAgICBsaXN0ZW4gd2ViX2FwcGwgMC4wLjAuMDo4MAogICAgICAgIG1vZGUgaHR0cAogICAgICAgIGNvb2tpZSBTRVJWRVJJRCBpbnNlcnQgbm9jYWNoZSBpbmRpcmVjdAogICAgICAgIGJhbGFuY2Ugcm91bmRyb2JpbgogICAgICAgIHNlcnZlciB3ZWIxIDE5Mi4xNjguMS4xOjgwIGNvb2tpZSBzZXJ2ZXIwMSBjaGVjawogICAgICAgIHNlcnZlciB3ZWIyIDE5Mi4xNjguMS4yOjgwIGNvb2tpZSBzZXJ2ZXIwMiBjaGVjawoKIyBpZGVtIGF2ZWMgc2VydmV1ciBhcHBsaWNhdGlmIGRlIHNlY291cnMgc3VyIGF1dHJlIHNpdGUsIGV0IHNlcnZldXIgZGUgcGFnZXMgZCdlcnJldXJzCiAgICBsaXN0ZW4gd2ViX2FwcGwgMC4wLjAuMDo4MAogICAgICAgIG1vZGUgaHR0cAogICAgICAgIGNvb2tpZSBTRVJWRVJJRCBpbnNlcnQgbm9jYWNoZSBpbmRpcmVjdAogICAgICAgIGJhbGFuY2Ugcm91bmRyb2JpbgogICAgICAgIHNlcnZlciB3ZWIxIDE5Mi4xNjguMS4xOjgwIGNvb2tpZSBzZXJ2ZXIwMSBjaGVjawogICAgICAgIHNlcnZlciB3ZWIyIDE5Mi4xNjguMS4yOjgwIGNvb2tpZSBzZXJ2ZXIwMiBjaGVjawogICAgICAgIHNlcnZlciB3ZWItYmFja3VwIDE5Mi4xNjguMi4xOjgwIGNvb2tpZSBzZXJ2ZXIwMyBjaGVjayBiYWNrdXAKICAgICAgICBzZXJ2ZXIgd2ViLWV4Y3VzZSAxOTIuMTY4LjMuMTo4MCBjaGVjayBiYWNrdXAKCiMgcmVsYXlhZ2UgU01UUCtUTFMgYXZlYyB0ZXN0IGR1IHNlcnZldXIgZXQgc2VydmV1ciBkZSBiYWNrdXAKCiAgICBsaXN0ZW4gaHR0cF9wcm94eSA6MjUsOjU4NwogICAgICAgIG1vZGUgdGNwCiAgICAgICAgYmFsYW5jZSByb3VuZHJvYmluCiAgICAgICAgc2VydmVyIHNydjEgMTkyLjE2OC4xLjEgY2hlY2sgcG9ydCAyNSBpbnRlciAzMDAwMCByaXNlIDEgZmFsbCAyCiAgICAgICAgc2VydmVyIHNydjIgMTkyLjE2OC4xLjIgYmFja3VwCgojIHJlbGF5YWdlIEhUVFBTIGF2ZWMgdGVzdCBkdSBzZXJ2ZXVyIGV0IHNlcnZldXIgZGUgYmFja3VwCgogICAgbGlzdGVuIGh0dHBfcHJveHkgOjQ0MwogICAgICAgIG1vZGUgdGNwCglvcHRpb24gc3NsLWhlbGxvLWNoawogICAgICAgIGJhbGFuY2Ugcm91bmRyb2JpbgogICAgICAgIHNlcnZlciBzcnYxIDE5Mi4xNjguMS4xIGNoZWNrIGludGVyIDMwMDAwIHJpc2UgMSBmYWxsIDIKICAgICAgICBzZXJ2ZXIgc3J2MiAxOTIuMTY4LjEuMiBiYWNrdXAKCiMgVXRpbGlzYXRpb24gZCd1biBncm91cGUgZGUgc2VydmV1cnMgcG91ciBsZSBiYWNrdXAgKG7pY2Vzc2l0ZSBoYXByb3h5IDEuMi45KQogICAgbGlzdGVuIGh0dHBfcHJveHkgMC4wLjAuMDo4MAogICAgICAgIG1vZGUgaHR0cAogICAgICAgIGJhbGFuY2Ugcm91bmRyb2JpbgogICAgICAgIG9wdGlvbiBodHRwY2hrCiAgICAgICAgc2VydmVyIGluc3QxIDE5Mi4xNjguMS4xOjgwIGNvb2tpZSBzMSBjaGVjawogICAgICAgIHNlcnZlciBpbnN0MiAxOTIuMTY4LjEuMjo4MCBjb29raWUgczIgY2hlY2sKICAgICAgICBzZXJ2ZXIgaW5zdDMgMTkyLjE2OC4xLjM6ODAgY29va2llIHMzIGNoZWNrCiAgICAgICAgc2VydmVyIGJhY2sxIDE5Mi4xNjguMS4xMDo4MCBjaGVjayBiYWNrdXAKICAgICAgICBzZXJ2ZXIgYmFjazIgMTkyLjE2OC4xLjExOjgwIGNoZWNrIGJhY2t1cAogICAgICAgIG9wdGlvbiBhbGxiYWNrdXBzICAjIGFsbCBiYWNrdXBzIHdpbGwgYmUgdXNlZAoKCjMuMikgUmVjb25uZXhpb24gdmVycyB1biBy6XBhcnRpdGV1ciBlbiBjYXMgZCfpY2hlYyBkaXJlY3QKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpFbiBtb2RlIEhUVFAsIHNpIHVuIHNlcnZldXIgZOlmaW5pIHBhciB1biBjb29raWUgbmUgculwb25kIHBsdXMsIGxlcyBjbGllbnRzCnNlcm9udCBk6WZpbml0aXZlbWVudCBhaWd1aWxs6XMgZGVzc3VzIOAgY2F1c2UgZGUgbGV1ciBjb29raWUsIGV0IGRlIGNlIGZhaXQsCmTpZmluaXRpdmVtZW50IHByaXbpcyBkZSBzZXJ2aWNlLiBMYSBzcOljaWZpY2F0aW9uIGR1IHBhcmFt6HRyZSAncmVkaXNwYXRjaCcKYXV0b3Jpc2UgZGFucyBjZSBjYXMg4CByZW52b3llciBsZXMgY29ubmV4aW9ucyDpY2hvdellcyB2ZXJzIGxlIHLpcGFydGl0ZXVyCihleHRlcm5lIG91IGludGVybmUpIGFmaW4gZCdhc3NpZ25lciB1biBub3V2ZWF1IHNlcnZldXIg4CBjZXMgY2xpZW50cy4KCkV4ZW1wbGUgOgotLS0tLS0tLS0KICAgIGxpc3RlbiBodHRwX3Byb3h5IDAuMC4wLjA6ODAKICAgICAgICBtb2RlIGh0dHAKICAgICAgICBjb29raWUgU0VSVkVSSUQKICAgICAgICBkaXNwYXRjaCAxOTIuMTY4LjEuMTAwOjgwCiAgICAgICAgc2VydmVyIHdlYjEgMTkyLjE2OC4xLjE6ODAgY29va2llIHNlcnZlcjAxCiAgICAgICAgc2VydmVyIHdlYjIgMTkyLjE2OC4xLjI6ODAgY29va2llIHNlcnZlcjAyCiAgICAgICAgcmVkaXNwYXRjaCAjIHJlbnZveWVyIHZlcnMgZGlzcGF0Y2ggc2kgcmVmdXMgZGUgY29ubmV4aW9uLgoKUGFyIGTpZmF1dCAoZXQgZGFucyBsZXMgdmVyc2lvbnMgMS4xLjE2IGV0IGFudOlyaWV1cmVzKSwgbGUgcGFyYW3odHJlCnJlZGlzcGF0Y2ggbmUgcydhcHBsaXF1ZSBxdSdhdXgg6WNoZWNzIGRlIGNvbm5leGlvbiBhdSBzZXJ2ZXVyLiBEZXB1aXMgbGEKdmVyc2lvbiAxLjEuMTcsIGlsIHMnYXBwbGlxdWUgYXVzc2kgYXV4IGNvbm5leGlvbnMgZGVzdGlu6WVzIOAgZGVzIHNlcnZldXJzCmlkZW50aWZp6XMgY29tbWUgaG9ycyBkJ3VzYWdlIHBhciBsYSBzdXJ2ZWlsbGFuY2UuIFNpIGwnb24gc291aGFpdGUgbWFsZ3LpCnRvdXQgcXUndW4gY2xpZW50IGRpc3Bvc2FudCBkJ3VuIGNvb2tpZSBjb3JyZXNwb25kYW50IOAgdW4gc2VydmV1ciBk6WZlY3R1ZXV4CnRlbnRlIGRlIHMneSBjb25uZWN0ZXIsIGlsIGZhdXQgcHLpY2lzZXIgbCdvcHRpb24gInBlcnNpc3QiIDoKCiAgICBsaXN0ZW4gaHR0cF9wcm94eSAwLjAuMC4wOjgwCiAgICAgICAgbW9kZSBodHRwCiAgICAgICAgb3B0aW9uIHBlcnNpc3QKICAgICAgICBjb29raWUgU0VSVkVSSUQKICAgICAgICBkaXNwYXRjaCAxOTIuMTY4LjEuMTAwOjgwCiAgICAgICAgc2VydmVyIHdlYjEgMTkyLjE2OC4xLjE6ODAgY29va2llIHNlcnZlcjAxCiAgICAgICAgc2VydmVyIHdlYjIgMTkyLjE2OC4xLjI6ODAgY29va2llIHNlcnZlcjAyCiAgICAgICAgcmVkaXNwYXRjaCAjIHJlbnZveWVyIHZlcnMgZGlzcGF0Y2ggc2kgc2VydmV1ciBIUy4KCgozLjMpIEFzc2lnbmF0aW9uIGRlIHBvaWRzIGRpZmbpcmVudHMg4CBkZXMgc2VydmV1cnMKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tClBhcmZvaXMgaWwgYXJyaXZlIGQnYWpvdXRlciBkZSBub3V2ZWF1eCBzZXJ2ZXVycyBwb3VyIGFjY3Jv7nRyZSBsYSBjYXBhY2l06QpkJ3VuZSBmZXJtZSBkZSBzZXJ2ZXVyLCBtYWlzIGxlIG5vdXZlYXUgc2VydmV1ciBlc3Qgc29pdCBiZWF1Y291cCBwbHVzIHBldGl0CnF1ZSBsZXMgYXV0cmVzIChkYW5zIGxlIGNhcyBkJ3VuIGFqb3V0IGQndXJnZW5jZSBkZSBtYXTpcmllbCBkZSBy6WN1cOlyYXRpb24pLApzb2l0IHBsdXMgcHVpc3NhbnQgKGxvcnMgZCd1biBpbnZlc3Rpc3NlbWVudCBkYW5zIGR1IG1hdOlyaWVsIG5ldWYpLiBQb3VyIGNldHRlCnJhaXNvbiwgaWwgc2VtYmxlIHBhcmZvaXMganVkaWNpZXV4IGRlIHBvdXZvaXIgZW52b3llciBwbHVzIGRlIGNsaWVudHMgdmVycyBsZXMKcGx1cyBncm9zIHNlcnZldXJzLiBKdXNxdSfgIGxhIHZlcnNpb24gMS4yLjExLCBpbCDpdGFpdCBu6WNlc3NhaXJlIGRlIHLpcGxpcXVlcgpwbHVzaWV1cnMgZm9pcyBsZXMgZOlmaW5pdGlvbnMgZGVzIHNlcnZldXJzIHBvdXIgYXVnbWVudGVyIGxldXIgcG9pZHMuIERlcHVpcwpsYSB2ZXJzaW9uIDEuMi4xMiwgbCdvcHRpb24gJ3dlaWdodCcgZXN0IGRpc3BvbmlibGUuIEhBUHJveHkgY29uc3RydWl0IGFsb3JzCnVuZSB2dWUgZGVzIHNlcnZldXJzIGRpc3BvbmlibGVzIGxhIHBsdXMgaG9tb2fobmUgcG9zc2libGUgZW4gc2UgYmFzYW50IHN1cgpsZXVyIHBvaWRzIGRlIHNvcnRlIHF1ZSBsYSBjaGFyZ2Ugc2UgZGlzdHJpYnVlIGRlIGxhIG1hbmnocmUgbGEgcGx1cyBsaXNzZQpwb3NzaWJsZS4gTGUgcG9pZHMgY29tcHJpcyBlbnRyZSAxIGV0IDI1NiBkb2l0IHJlZmzpdGVyIGxhIGNhcGFjaXTpIGQndW4Kc2VydmV1ciBwYXIgcmFwcG9ydCBhdXggYXV0cmVzLiBMZSBwb2lkcyBkZSAxIGRvbm5lIGxhIGZy6XF1ZW5jZSBkJ2FwcGFyaXRpb24KbGEgcGx1cyBmYWlibGUsIGV0IDI1NiBsYSBmculxdWVuY2UgbGEgcGx1cyDpbGV26WUuIERlIGNldHRlIG1hbmnocmUsIHNpIHVuCnNlcnZldXIgZGlzcGFyYWl0LCBsZXMgY2FwYWNpdOlzIHJlc3RhbnRlcyBzb250IHRvdWpvdXJzIHJlc3BlY3TpZXMuCgoKRXhlbXBsZSA6Ci0tLS0tLS0tLQojIGRpc3RyaWJ1dGlvbiDpcXVpdGFibGUgc3VyIDIgb3B0ZXJvbiBhbmQgdW4gYW5jaWVuIHBlbnRpdW0zCgogICAgbGlzdGVuIHdlYl9hcHBsIDAuMC4wLjA6ODAKICAgICAgICBtb2RlIGh0dHAKICAgICAgICBjb29raWUgU0VSVkVSSUQgaW5zZXJ0IG5vY2FjaGUgaW5kaXJlY3QKICAgICAgICBiYWxhbmNlIHJvdW5kcm9iaW4KICAgICAgICBzZXJ2ZXIgcGVudGl1bTMtODAwIDE5Mi4xNjguMS4xOjgwIGNvb2tpZSBzZXJ2ZXIwMSB3ZWlnaHQgIDggY2hlY2sKICAgICAgICBzZXJ2ZXIgb3B0ZXJvbi0yLjBHIDE5Mi4xNjguMS4yOjgwIGNvb2tpZSBzZXJ2ZXIwMiB3ZWlnaHQgMjAgY2hlY2sKICAgICAgICBzZXJ2ZXIgb3B0ZXJvbi0yLjRHIDE5Mi4xNjguMS4zOjgwIGNvb2tpZSBzZXJ2ZXIwMyB3ZWlnaHQgMjQgY2hlY2sKICAgICAgICBzZXJ2ZXIgd2ViLWJhY2t1cDEgMTkyLjE2OC4yLjE6ODAgY29va2llIHNlcnZlcjA0IGNoZWNrIGJhY2t1cAogICAgICAgIHNlcnZlciB3ZWItZXhjdXNlIDE5Mi4xNjguMy4xOjgwIGNoZWNrIGJhY2t1cAoKTm90ZXMgOgotLS0tLS0tCiAgLSBsb3JzcXVlIGxlIHBvaWRzIG4nZXN0IHBhcyBzcOljaWZp6SwgbGEgdmFsZXVyIHBhciBk6WZhdXQgZXN0IOAgMQoKICAtIGxlIHBvaWRzIG4naW1wYWN0ZSBwYXMgbGVzIHRlc3RzIGRlIGZvbmN0aW9ubmVtZW50IChoZWFsdGggY2hlY2tzKSwgZG9uYyBpbAogICAgZXN0IHBsdXMgcHJvcHJlIGQndXRpbGlzZXIgbGVzIHBvaWRzIHF1ZSBkZSBy6XBsaXF1ZXIgbGUgbeptZSBzZXJ2ZXVyCiAgICBwbHVzaWV1cnMgZm9pcy4KCiAgLSBsZXMgcG9pZHMgcydhcHBsaXF1ZW50IOlnYWxlbWVudCBhdXggc2VydmV1cnMgZGUgYmFja3VwIHNpIGwnb3B0aW9uCiAgICAnYWxsYmFja3VwcycgZXN0IHBvc2l0aW9ubullLgoKICAtIGxlIHBvaWRzIHMnYXBwbGlxdWUgYXVzc2kg4CBsYSBy6XBhcnRpdGlvbiBzZWxvbiBsYSBzb3VyY2UKICAgICgnYmFsYW5jZSBzb3VyY2UnKS4KCiAgLSBxdWVscyBxdWUgc29pZW50IGxlcyBwb2lkcywgbGUgcHJlbWllciBzZXJ2ZXVyIHNlcmEgdG91am91cnMgYXNzaWdu6SBlbgogICAgcHJlbWllci4gQ2V0dGUgcuhnbGUgZmFjaWxpdGUgbGVzIGRpYWdub3N0aWNzLgoKICAtIHBvdXIgbGVzIHB1cmlzdGVzLCBsJ2FsZ29yaXRobWUgZGUgY2FsY3VsYXRpb24gZGUgbGEgdnVlIGRlcyBzZXJ2ZXVycyBkb25uZQogICAgdW5lIHByaW9yaXTpIGF1eCBwcmVtaWVycyBzZXJ2ZXVycywgZG9uYyBsYSB2dWUgZXN0IGxhIHBsdXMgdW5pZm9ybWUgc2kgbGVzCiAgICBzZXJ2ZXVycyBzb250IGTpY2xhculzIGRhbnMgbCdvcmRyZSBjcm9pc3NhbnQgZGUgbGV1cnMgcG9pZHMuCgpMYSBkaXN0cmlidXRpb24gZHUgdHJhZmljIHN1aXZyYSBleGFjdGVtZW50IGxlIHPpcXVlbmNlbWVudCBzdWl2YW50IDoKCiAgICAgICAgUmVxdWVzdHwgICAgICAgICAgICAgICAgICAgMSAxIDEgMQogICAgICAgIG51bWJlciB8IDEgMiAzIDQgNSA2IDcgOCA5IDAgMSAyIDMKICAgICAgIC0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAgICAgIHAzLTgwMCB8IFggLiAuIC4gLiAuIC4gWCAuIC4gLiAuIC4KICAgICAgICBvcHQtMjAgfCAuIFggLiBYIC4gWCAuIC4gLiBYIC4gWCAuCiAgICAgICAgb3B0LTI0IHwgLiAuIFggLiBYIC4gWCAuIFggLiBYIC4gWAoKCjMuNCkgTGltaXRhdGlvbiBkdSBub21icmUgZGUgc2Vzc2lvbnMgY29uY3VycmVudGVzIHBhciBzZXJ2ZXVyCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkNlcnRhaW5zIHNlcnZldXJzIHdlYiBtdWx0aS1wcm9jZXNzdXMgdGVscyBxdSdBcGFjaGUgc291ZmZyZW50IGTocyBxdSdpbCB5IGEKdHJvcCBkZSBzZXNzaW9ucyBjb25jdXJyZW50ZXMsIHBhcmNlIHF1J2lsIGVzdCB0cuhzIGNv+3RldXggZGUgZmFpcmUKZm9uY3Rpb25uZXIgZGVzIGNlbnRhaW5lcyBvdSBkZXMgbWlsbGllcnMgZGUgcHJvY2Vzc3VzIHN1ciB1biBzeXN06G1lLiBVbmUKc29sdXRpb24gY29uc2lzdGUg4CBhdWdtZW50ZXIgbGUgbm9tYnJlIGRlIHNlcnZldXJzIGV0IGRlIHLpcGFydGlyIGxhIGNoYXJnZQplbnRyZSBldXgsIG1haXMgY2VsYSBwb3NlIHVuIHByb2Js6G1lIGxvcnNxdWUgbGUgYnV0IGVzdCB1bmlxdWVtZW50IGRlIHLpc2lzdGVyCuAgZGVzIHBpY3MgZGUgY2hhcmdlIG9jY2FzaW9ubmVscy4KClBvdXIgculzb3VkcmUgY2UgcHJvYmzobWUsIHVuZSBub3V2ZWxsZSBmb25jdGlvbm5hbGl06SBhIOl06SBpbXBs6W1lbnTpZSBkYW5zCkhBUHJveHkgMS4yLjEzLiBJbCBzJ2FnaXQgZCd1bmUgbGltaXRlICJtYXhjb25uIiBwYXIgc2VydmV1ciwgYXNzb2Np6WUg4CB1bmUKZmlsZSBkJ2F0dGVudGUgcGFyIHNlcnZldXIgZXQgcGFyIHByb3h5LiBDZWNpIHRyYW5zZm9ybWUgSEFQcm94eSBlbiB1biB0YW1wb24KZW50cmUgZGVzIG1pbGxpZXJzIGRlIGNsaWVudHMgZXQgcXVlbHF1ZXMgc2VydmV1cnMuIERhbnMgYmllbiBkZXMgY2FzLCBsZSBmYWl0CmRlIGRpbWludWVyIGxhIHZhbGV1ciBtYXhjb25uIGFt6Wxpb3JlcmEgbm90YWJsZW1lbnQgbGVzIHBlcmZvcm1hbmNlcyBkZXMKc2VydmV1cnMgZXQgZGltaW51ZXJhIGxlcyB0ZW1wcyBkZSBy6XBvbnNlIHNpbXBsZW1lbnQgcGFyY2UgcXVlIGxlcyBzZXJ2ZXVycwpzZXJvbnQgbW9pbnMgY29uZ2VzdGlvbm7pcy4KClF1YW5kIHVuZSByZXF16nRlIGNoZXJjaGUg4CBqb2luZHJlIG4naW1wb3J0ZSBxdWVsIHNlcnZldXIsIGxlIHByZW1pZXIgc2VydmV1cgpub24gc2F0dXLpIGVzdCB1dGlsaXPpLCBlbiByZXNwZWN0YW50IGwnYWxnb3JpdGhtZSBkZSBy6XBhcnRpdGlvbiBkZSBjaGFyZ2UuIFNpCnRvdXMgbGVzIHNlcnZldXJzIHNvbnQgc2F0dXLpcywgYWxvcnMgbGEgcmVxdep0ZSBzZXJhIG1pc2UgZGFucyBsYSBmaWxlCmQnYXR0ZW50ZSBnbG9iYWxlIGRlIGwnaW5zdGFuY2UuIEVsbGUgc29ydGlyYSBkZSBjZXR0ZSBmaWxlIGQnYXR0ZW50ZSBsb3JzcXVlCnRvdXRlcyBsZXMgcmVxdep0ZXMgcHLpY+lkZW50ZXMgYXVyb250IOl06SBsaWLpcullcyBldCBxdSd1biBzZXJ2ZXVyIGF1cmEg6XTpCmxpYuly6SBkJ3VuZSBjb25uZXhpb24gcG91ciBsYSB0cmFpdGVyLgoKU2kgdW5lIHJlcXXqdGUgZmFpdCBy6WbpcmVuY2Ug4CB1biBzZXJ2ZXVyIGVuIHBhcnRpY3VsaWVyIChwLmV4OiBoYWNoYWdlIGQnSVAKc291cmNlLCBvdSBwZXJzaXN0YW5jZSBwYXIgY29va2llKSwgZXQgcXVlIGNlIHNlcnZlciBlc3Qgc2F0dXLpLCBhbG9ycyBsYQpyZXF16nRlIHNlcmEgbWlzZSBkYW5zIGxhIGZpbGUgZCdhdHRlbnRlIGTpZGnpZSDgIGNlIHNlcnZldXIuIENldHRlIGZpbGUKZCdhdHRlbnRlIGVzdCBwcmlvcml0YWlyZSBzdXIgbGEgZmlsZSBkJ2F0dGVudGUgZ2xvYmFsZSwgZGUgc29ydGUgcXUnaWwgc29pdApwbHVzIGZhY2lsZSBkJ2F0dGVpbmRyZSBsZSBzaXRlIHBvdXIgbGVzIHV0aWxpc2F0ZXVycyBxdWkgcyd5IHRyb3V2ZW50IGTpauAKcXVlIHBvdXIgbGVzIG5vdXZlYXV4IHV0aWxpc2F0ZXVycy4KClBvdXIgY2VsYSwgbGVzIGxvZ3Mgb250IGT7IOp0cmUgZW5yaWNoaXMgcG91ciBpbmRpcXVlciBsZSBub21icmUgZGUgc2Vzc2lvbnMKcGFyIHNlcnZldXIsIGxhIHBvc2l0aW9uIGRlIGxhIHJlcXXqdGUgZGFucyBsZXMgZmlsZXMgZCdhdHRlbnRlcywgZXQgbGUgdGVtcHMKcGFzc+kgZW4gZmlsZSBkJ2F0dGVudGUuIENlY2kgYWlkZSBjb25zaWTpcmFibGVtZW50IOAgZmFpcmUgZGUgbGEgcHLpdmlzaW9uIGRlCmNhcGFjaXTpLiBWb2lyIGxhIHNlY3Rpb24gJ2xvZ3MnIHBsdXMgYmFzIHBvdXIgcGx1cyBkJ2luZm9ybWF0aW9ucy4KCkV4ZW1wbGUgOgotLS0tLS0tLS0KICAgICMgUHJlbmRyZSBzb2luIGR1IFAzIHF1aSBuJ2EgcXVlIDI1NiBNbyBkZSBSQU0uCiAgICBsaXN0ZW4gd2ViX2FwcGwgMC4wLjAuMDo4MAogICAgICAgIG1heGNvbm4gMTAwMDAKICAgICAgICBtb2RlIGh0dHAKICAgICAgICBjb29raWUgU0VSVkVSSUQgaW5zZXJ0IG5vY2FjaGUgaW5kaXJlY3QKICAgICAgICBiYWxhbmNlIHJvdW5kcm9iaW4KICAgICAgICBzZXJ2ZXIgcGVudGl1bTMtODAwIDE5Mi4xNjguMS4xOjgwIGNvb2tpZSBzMSB3ZWlnaHQgIDggbWF4Y29ubiAxMDAgY2hlY2sKICAgICAgICBzZXJ2ZXIgb3B0ZXJvbi0yLjBHIDE5Mi4xNjguMS4yOjgwIGNvb2tpZSBzMiB3ZWlnaHQgMjAgbWF4Y29ubiAzMDAgY2hlY2sKICAgICAgICBzZXJ2ZXIgb3B0ZXJvbi0yLjRHIDE5Mi4xNjguMS4zOjgwIGNvb2tpZSBzMyB3ZWlnaHQgMjQgbWF4Y29ubiAzMDAgY2hlY2sKICAgICAgICBzZXJ2ZXIgd2ViLWJhY2t1cDEgMTkyLjE2OC4yLjE6ODAgY29va2llIHM0IGNoZWNrIG1heGNvbm4gMjAwIGJhY2t1cAogICAgICAgIHNlcnZlciB3ZWItZXhjdXNlIDE5Mi4xNjguMy4xOjgwIGNoZWNrIGJhY2t1cAoKQ2V0dGUgb3B0aW9uIHNlIG1vbnRyYSBzaSBlZmZpY2FjZSBwb3VyIHLpZHVpcmUgbGVzIHRlbXBzIGRlIHLpcG9uc2UgZGVzCnNlcnZldXJzIHF1ZSBjZXJ0YWlucyB1dGlsaXNhdGV1cnMgdm91bGFpZW50IHV0aWxpc2VyIGRlcyB2YWxldXJzIHRyb3AgYmFzc2VzCnBvdXIgYW3pbGlvcmVyIGxlcyBwZXJmb3JtYW5jZXMgZGUgbGV1cnMgc2VydmV1cnMuIFNldWxlbWVudCwgaWxzIG4n6XRhaWVudAphbG9ycyBwbHVzIGVuIG1lc3VyZSBkZSBzdXBwb3J0ZXIgZGUgdHLocyBmb3J0ZXMgY2hhcmdlcyBwYXJjZSBxdSdpbCBuJ+l0YWl0CnBsdXMgcG9zc2libGUgZGUgbGVzIHNhdHVyZXIuIFBvdXIgY2V0dGUgcmFpc29uLCBsYSB2ZXJzaW9uIDEuMi4xNCBhIGFwcG9ydOkgbGEKbGltaXRhdGlvbiBkeW5hbWlxdWUgZGUgY29ubmV4aW9ucyBhdmVjIGwnYWRkaXRpb24gZHUgcGFyYW3odHJlICJtaW5jb25uIi4KTG9yc3F1ZSBjZSBwYXJhbeh0cmUgZXN0IGFzc29jaekg4CAibWF4Y29ubiIsIGlsIGFjdGl2ZSBsYSBsaW1pdGF0aW9uIGR5bmFtaXF1ZQpiYXPpZSBzdXIgbGEgY2hhcmdlIGRlIGwnaW5zdGFuY2UuIExlIG5vbWJyZSBtYXhpbWFsIGRlIHNlc3Npb25zIGNvbmN1cnJlbnRlcwpzdXIgdW4gc2VydmV1ciBkZXZpZW50IGFsb3JzIHByb3BvcnRpb25uZWwgYXUgbm9tYnJlIGRlIHNlc3Npb25zIGRlIGwnaW5zdGFuY2UKcGFyIHJhcHBvcnQg4CBzb24gJ21heGNvbm4nLiBVbiBtaW5pbXVtIGRlIDxtaW5jb25uPiBzZXNzaW9ucyBzZXJhIHRvdWpvdXJzCnBlcm1pcyBxdWVsbGUgcXVlIHNvaXQgbGEgY2hhcmdlLiBDZWNpIGFzc3VyZXJhIHF1ZSBsZXMgc2VydmV1cnMgdHJhdmFpbGxlcm9udAphdSBtZWlsbGV1ciBkZSBsZXVycyBwZXJmb3JtYW5jZXMgc291cyBkZXMgY2hhcmdlcyBub3JtYWxlcywgZXQgcXUnaWxzIHNlcm9udAp0b3V0IGRlIG3qbWUgY2FwYWJsZXMgZGUgc3VwcG9ydGVyIGRlIGZvcnRlcyBwb2ludGVzIGxvcnNxdWUgbuljZXNzYWlyZS4gTGEKbGltaXRlIGR5bmFtaXF1ZSBlc3QgY2FsY3Vs6WUgY29tbWUgY2VjaSA6CgogICAgc3J2LmR5bl9saW1pdCA9IG1heChzcnYubWluY29ubiwgc3J2Lm1heGNvbm4gKiBpbnN0LnNlc3MgLyBpbnN0Lm1heGNvbm4pCgpFeGVtcGxlIDoKLS0tLS0tLS0tCiAgICAjIFByZW5kcmUgc29pbiBkdSBQMyBxdWkgbidhIHF1ZSAyNTYgTW8gZGUgUkFNLgogICAgbGlzdGVuIHdlYl9hcHBsIDAuMC4wLjA6ODAKICAgICAgICBtYXhjb25uIDEwMDAwCiAgICAgICAgbW9kZSBodHRwCiAgICAgICAgY29va2llIFNFUlZFUklEIGluc2VydCBub2NhY2hlIGluZGlyZWN0CiAgICAgICAgYmFsYW5jZSByb3VuZHJvYmluCiAgICAgICAgc2VydmVyIHBlbnRpdW0zLTgwMCAxOTIuMTY4LjEuMTo4MCBjb29raWUgczEgd2VpZ2h0ICA4IG1pbmNvbm4gMTAgbWF4Y29ubiAxMDAgY2hlY2sKICAgICAgICBzZXJ2ZXIgb3B0ZXJvbi0yLjBHIDE5Mi4xNjguMS4yOjgwIGNvb2tpZSBzMiB3ZWlnaHQgMjAgbWluY29ubiAzMCBtYXhjb25uIDMwMCBjaGVjawogICAgICAgIHNlcnZlciBvcHRlcm9uLTIuNEcgMTkyLjE2OC4xLjM6ODAgY29va2llIHMzIHdlaWdodCAyNCBtaW5jb25uIDMwIG1heGNvbm4gMzAwIGNoZWNrCiAgICAgICAgc2VydmVyIHdlYi1iYWNrdXAxIDE5Mi4xNjguMi4xOjgwIGNvb2tpZSBzNCBjaGVjayBtYXhjb25uIDIwMCBiYWNrdXAKICAgICAgICBzZXJ2ZXIgd2ViLWV4Y3VzZSAxOTIuMTY4LjMuMTo4MCBjaGVjayBiYWNrdXAKCkRhbnMgbCdleGVtcGxlIGNpLWRlc3N1cywgbGUgc2VydmV1ciAicGVudGl1bTMtODAwJyByZWNldnJhIGF1IHBsdXMgMTAwCmNvbm5leGlvbnMgc2ltdWx0YW7pZXMgbG9yc3F1ZSBsJ2luc3RhbmNlIGR1IHByb3h5IGVuIGF0dGVpbmRyYSAxMDAwMCwgZXQKcmVjZXZyYSBzZXVsZW1lbnQgMTAgY29ubmV4aW9ucyBzaW11bHRhbullcyB0YW50IHF1ZSBsZSBwcm94eSBzZXJhIHNvdXMgbGVzIDEwMDAKc2Vzc2lvbnMuCgpOb3RlcyA6Ci0tLS0tLS0KICAtIGxhIHJlcXXqdGUgbmUgcmVzdGVyYSBwYXMgaW5k6WZpbmltZW50IGVuIGZpbGUgZCdhdHRlbnRlLCBlbGxlIGVzdAogICAgYXNzdWrpdGllIGF1IHBhcmFt6HRyZSAnY29udGltZW91dCcsIGV0IHNpIHVuZSByZXF16nRlIG5lIHBldXQgcGFzCiAgICBzb3J0aXIgZGUgbGEgZmlsZSBhdmFudCBjZSB0aW1lLW91dCwgc29pdCBwYXJjZSBxdWUgbGUgc2VydmV1ciBlc3QKICAgIHNhdHVy6Swgc29pdCBwYXJjZSBxdSdpbCB5IGEgdHJvcCBkZSByZXF16nRlcyBlbiBmaWxlIGQnYXR0ZW50ZSwKICAgIGFsb3JzIGVsbGUgZXhwaXJlcmEgYXZlYyB1bmUgZXJyZXVyIDUwMy4KCiAgLSBzaSBzZXVsIDxtaW5jb25uPiBlc3Qgc3DpY2lmaeksIGlsIGEgbGUgbeptZSBlZmZldCBxdWUgPG1heGNvbm4+CgogIC0gcG9zaXRpb25uZXIgZGVzIHZhbGV1cnMgdHJvcCBiYXNzZXMgcG91ciAnbWF4Y29ubicgcGV1dCBhbelsaW9yZXIgbGVzCiAgICBwZXJmb3JtYW5jZXMgbWFpcyBhdXNzaSBwZXJtZXR0cmUg4CBkZXMgdXRpbGlzYXRldXJzIHRyb3AgbGVudHMgZGUgYmxvcXVlcgogICAgdW4gc2VydmV1ciBwb3VyIGxlcyBhdXRyZXMgdXRpbGlzYXRldXJzLgoKCjMuNSkgQWJhbmRvbiBkZXMgcmVxdep0ZXMgYWJvcnTpZXMKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpFbiBwculzZW5jZSBkZSB0cuhzIGZvcnRlcyBjaGFyZ2VzLCBsZXMgc2VydmV1cnMgbWV0dHJvbnQgdW4gY2VydGFpbiB0ZW1wcyDgCnLpcG9uZHJlLiBMYSBmaWxlIGQnYXR0ZW50ZSBkdSBwcm94eSBzZSByZW1wbGlyYSwgZXQgbGVzIHRlbXBzIGRlIHLpcG9uc2UKc3VpdnJvbnQgdW5lIGNyb2lzc2FuY2UgcHJvcG9ydGlvbm5lbGxlIOAgbGEgdGFpbGxlIGRlIGZpbGUgZCdhdHRlbnRlIGZvaXMKbGUgdGVtcHMgbW95ZW4gZGUgculwb25zZSBwYXIgc2Vzc2lvbi4gTG9yc3F1ZSBsZXMgY2xpZW50cyBhdHRlbmRyb250IHBsdXMgZGUKcXVlbHF1ZXMgc2Vjb25kZXMsIGlscyBjbGlxdWVyb250IHNvdXZlbnQgc3VyIGxlIGJvdXRvbiAnU1RPUCcgZGUgbGV1cgpuYXZpZ2F0ZXVyLCBsYWlzc2FudCBkZXMgcmVxdep0ZXMgaW51dGlsZXMgZW4gZmlsZSBkJ2F0dGVudGUgZXQgcmFsZW50aXNzYW50CmRvbmMgbGVzIGF1dHJlcyB1dGlsaXNhdGV1cnMuCgpDb21tZSBpbCBuJ3kgYSBhdWN1biBtb3llbiBkZSBkaXN0aW5ndWVyIHVuIHZyYWkgY2xpYyBzdXIgU1RPUCBkJ3VuZSBzaW1wbGUKZmVybWV0dXJlIGR1IGNhbmFsIGRlIHNvcnRpZSBzdXIgbGUgY2xpZW50IChzaHV0ZG93bihTSFVUX1dSKSksIGxlcyBhZ2VudHMgSFRUUApkb2l2ZW50IOp0cmUgY29uc2VydmF0ZXVycyBldCBjb25zaWTpcmVyIHF1ZSBsZSBjbGllbnQgbidhIHByb2JhYmxlbWVudCBmZXJt6QpxdWUgbGUgY2FuYWwgZGUgc29ydGllIGVuIGF0dGVuZGFudCBsYSBy6XBvbnNlLiBUb3V0ZWZvaXMsIGNlY2kgaW50cm9kdWl0IGRlcwpyaXNxdWVzIGRlIGNvbmdlc3Rpb24gbG9yc3F1ZSBiZWF1Y291cCBkJ3V0aWxpc2F0ZXVycyBmb250IGRlIG3qbWUsIGV0IHMnYXbocmUKYXVqb3VyZCdodWkgY29tcGzodGVtZW50IGludXRpbGUgY2FyIHByb2JhYmxlbWVudCBhdWN1biBjbGllbnQgbmUgcmVmZXJtZSBsYQpzZXNzaW9uIGVuIGF0dGVuZGFudCBsYSBy6XBvbnNlLiBDZXJ0YWlucyBhZ2VudHMgSFRUUCBzdXBwb3J0ZW50IGNlY2kgKFNxdWlkLApBcGFjaGUsIEhBUHJveHkpLCBldCBkJ2F1dHJlcyBuZSBsZSBzdXBwb3J0ZW50IHBhcyAoVFVYLCBldCBsYSBwbHVwYXJ0IGRlcwpy6XBhcnRpdGV1cnMgZGUgY2hhcmdlIG1hdOlyaWVscykuIERvbmMgbGEgcHJvYmFiaWxpdOkgcG91ciBxdSd1bmUgbm90aWZpY2F0aW9uCmRlIGZlcm1ldHVyZSBkJ3VuIGNhbmFsIGQnZW50cullIGP0dOkgY2xpZW50IHJlcHLpc2VudGUgdW4gdXRpbGlzYXRldXIgY2xpcXVhbnQKc3VyICdTVE9QJyBlc3QgcHJvY2hlIGRlIDEwMCUsIGV0IGlsIGVzdCB2cmFpbWVudCB0ZW50YW50IGQnYWJhbmRvbm5lciBsYQpyZXF16nRlIHBy6W1hdHVy6W1lbnQgc2FucyBwb2xsdWVyIGxlcyBzZXJ2ZXVycy4KClBvdXIgY2V0dGUgcmFpc29uLCB1bmUgbm91dmVsbGUgb3B0aW9uICJhYm9ydG9uY2xvc2UiIGEg6XTpIGludHJvZHVpdGUgZW4KdmVyc2lvbiAxLjIuMTQuIFBhciBk6WZhdXQgKHNhbnMgbCdvcHRpb24pLCBsZSBjb21wb3J0ZW1lbnQgcmVzdGUgY29uZm9ybWUg4ApIVFRQLiBNYWlzIGxvcnNxdWUgbCdvcHRpb24gZXN0IHNw6WNpZmnpZSwgdW5lIHNlc3Npb24gZG9udCBsZSBjYW5hbCBlbnRyYW50CmVzdCBmZXJt6SBzZXJhIGFib3J06WUgc2kgY2VsYSBlc3QgcG9zc2libGUsIGMnZXN0IOAgZGlyZSBxdWUgbGEgcmVxdep0ZSBlc3QKc29pdCBlbiBmaWxlIGQnYXR0ZW50ZSwgc29pdCBlbiB0ZW50YXRpdmUgZGUgY29ubmV4aW9uLiBDZWNpIHLpZHVpdApjb25zaWTpcmFibGVtZW50IGxhIGxvbmd1ZXVyIGRlcyBmaWxlcyBkJ2F0dGVudGVzIGV0IGxhIGNoYXJnZSBzdXIgbGVzIHNlcnZldXJzCnNhdHVy6XMgbG9yc3F1ZSBsZXMgdXRpbGlzYXRldXJzIHNvbnQgdGVudOlzIGRlIGNsaXF1ZXIgc3VyICdTVE9QJywgY2UgcXVpIOAKc29uIHRvdXIsIHLpZHVpdCBsZXMgdGVtcHMgZGUgculwb25zZSBwb3VyIGxlcyBhdXRyZXMgdXRpbGlzYXRldXJzLgoKRXhlbXBsZSA6Ci0tLS0tLS0tLQogICAgbGlzdGVuIHdlYl9hcHBsIDAuMC4wLjA6ODAKICAgICAgICBtYXhjb25uIDEwMDAwCiAgICAgICAgbW9kZSBodHRwCiAgICAgICAgY29va2llIFNFUlZFUklEIGluc2VydCBub2NhY2hlIGluZGlyZWN0CiAgICAgICAgYmFsYW5jZSByb3VuZHJvYmluCiAgICAgICAgc2VydmVyIHdlYjEgMTkyLjE2OC4xLjE6ODAgY29va2llIHMxIHdlaWdodCAxMCBtYXhjb25uIDEwMCBjaGVjawogICAgICAgIHNlcnZlciB3ZWIyIDE5Mi4xNjguMS4yOjgwIGNvb2tpZSBzMiB3ZWlnaHQgMTAgbWF4Y29ubiAxMDAgY2hlY2sKICAgICAgICBzZXJ2ZXIgd2ViMyAxOTIuMTY4LjEuMzo4MCBjb29raWUgczMgd2VpZ2h0IDEwIG1heGNvbm4gMTAwIGNoZWNrCiAgICAgICAgc2VydmVyIGJjazEgMTkyLjE2OC4yLjE6ODAgY29va2llIHM0IGNoZWNrIG1heGNvbm4gMjAwIGJhY2t1cAogICAgICAgIG9wdGlvbiBhYm9ydG9uY2xvc2UKCgo0KSBGb25jdGlvbm5hbGl06XMgYWRkaXRpb25uZWxsZXMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CgpEJ2F1dHJlcyBmb25jdGlvbm5hbGl06XMgZCd1c2FnZSBtb2lucyBjb3VyYW50IHNvbnQgZGlzcG9uaWJsZXMuIElsIHMnYWdpdApwcmluY2lwYWxlbWVudCBkdSBtb2RlIHRyYW5zcGFyZW50LCBkZSBsYSBqb3VybmFsaXNhdGlvbiBkZXMgY29ubmV4aW9ucywgZGUgbGEKcunpY3JpdHVyZSBkZXMgZW4tdOp0ZXMsIGV0IGR1IHN0YXR1dCBzb3VzIGZvcm1lIGRlIHBhZ2UgSFRNTC4KCgo0LjEpIEZvbmN0aW9ubmFsaXTpcyBy6XNlYXUKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCjQuMS4xKSBGb25jdGlvbm5lbWVudCBlbiBtb2RlIHRyYW5zcGFyZW50Ci0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpFbiBtb2RlIEhUVFAsIGxlIG1vdCBjbOkgJ3RyYW5zcGFyZW50JyBwZXJtZXQgZCdpbnRlcmNlcHRlciBkZXMgc2Vzc2lvbnMKcm91dOllcyDgIHRyYXZlcnMgbGEgbWFjaGluZSBo6WJlcmdlYW50IGxlIHByb3h5LiBEYW5zIGNlIG1vZGUsIG9uIG5lIHBy6WNpc2UKcGFzIGwnYWRyZXNzZSBkZSBy6XBhcnRpdGlvbiAnZGlzcGF0Y2gnLCBjYXIgY2VsbGUtY2kgZXN0IHRpcullIGRlIGwnYWRyZXNzZQpkZXN0aW5hdGlvbiBkZSBsYSBzZXNzaW9uIGTpdG91cm7pZS4gTGUgc3lzdOhtZSBkb2l0IHBlcm1ldHRyZSBkZSByZWRpcmlnZXIgbGVzCnBhcXVldHMgdmVycyB1biBwcm9jZXNzdXMgbG9jYWwuCgpFeGVtcGxlIDoKLS0tLS0tLS0tCiAgICBsaXN0ZW4gaHR0cF9wcm94eSAwLjAuMC4wOjY1MDAwCiAgICAgICAgbW9kZSBodHRwCiAgICAgICAgdHJhbnNwYXJlbnQKICAgICAgICBjb29raWUgU0VSVkVSSUQKICAgICAgICBzZXJ2ZXIgc2VydmVyMDEgMTkyLjE2OC4xLjE6ODAKICAgICAgICBzZXJ2ZXIgc2VydmVyMDIgMTkyLjE2OC4xLjI6ODAKCiAgICAjIGlwdGFibGVzIC10IG5hdCAtQSBQUkVST1VUSU5HIC1pIGV0aDAgLXAgdGNwIC1kIDE5Mi4xNjguMS4xMDAgXAogICAgICAtLWRwb3J0IDgwIC1qIFJFRElSRUNUIC0tdG8tcG9ydHMgNjUwMDAKClJlbWFycXVlIDoKLS0tLS0tLS0tLQpTaSBsZSBwb3J0IG4nZXN0IHBhcyBzcOljaWZp6SBzdXIgbGUgc2VydmV1ciwgYydlc3QgbGUgcG9ydCBhdXF1ZWwgcydlc3QKYWRyZXNz6SBsZSBjbGllbnQgcXVpIHNlcmEgdXRpbGlz6S4gQ2VsYSBwZXJtZXQgZGUgcmVsYXllciB0b3VzIGxlcyBwb3J0cyBUQ1AKZCd1bmUgbeptZSBhZHJlc3NlIGF2ZWMgdW5lIG3qbWUgaW5zdGFuY2UgZXQgc2FucyB1dGlsaXNlciBkaXJlY3RlbWVudCBsZSBtb2RlCnRyYW5zcGFyZW50LgoKRXhlbXBsZSA6Ci0tLS0tLS0tLQogICAgbGlzdGVuIGh0dHBfcHJveHkgMC4wLjAuMDo2NTAwMAogICAgICAgIG1vZGUgdGNwCiAgICAgICAgc2VydmVyIHNlcnZlcjAxIDE5Mi4xNjguMS4xIGNoZWNrIHBvcnQgNjAwMDAKICAgICAgICBzZXJ2ZXIgc2VydmVyMDIgMTkyLjE2OC4xLjIgY2hlY2sgcG9ydCA2MDAwMAoKICAgICMgaXB0YWJsZXMgLXQgbmF0IC1BIFBSRVJPVVRJTkcgLWkgZXRoMCAtcCB0Y3AgLWQgMTkyLjE2OC4xLjEwMCBcCiAgICAgIC1qIFJFRElSRUNUIC0tdG8tcG9ydHMgNjUwMDAKCgo0LjEuMikgQ2hvaXggZCd1bmUgYWRyZXNzZSBzb3VyY2UgcGFyIHNlcnZldXIKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkF2ZWMgbGVzIHZlcnNpb25zIDEuMS4zMCBldCAxLjIuMywgaWwgZGV2aWVudCBwb3NzaWJsZSBkZSBzcOljaWZpZXIgdW5lIGFkcmVzc2UKSVAgc291cmNlIHBvdXIgam9pbmRyZSBjaGFxdWUgc2VydmV1ci4gQydlc3QgdXRpbGUgcG91ciBqb2luZHJlIGRlcyBzZXJ2ZXVycyBkZQpiYWNrdXAg4CBwYXJ0aXIgZCd1biBMQU4gZGlmZulyZW50LCBvdSBwb3VyIHV0aWxpc2VyIGRlcyBjaGVtaW5zIGFsdGVybmF0aWZzCnBvdXIgam9pbmRyZSBsZSBt6m1lIHNlcnZldXIuIEMnZXN0IOlnYWxlbWVudCB1dGlsaXNhYmxlIHBvdXIgZmFjaWxpdGVyIHVuZQpy6XBhcnRpdGlvbiBkZSBjaGFyZ2Ugc2Vsb24gbCdhZHJlc3NlIElQIHNvdXJjZSBwb3VyIGRlcyBjb25uZXhpb25zIHNvcnRhbnRlcy4KQmllbiBlbnRlbmR1LCBsYSBt6m1lIGFkcmVzc2UgZXN0IHV0aWxpc+llIHBvdXIgbGVzIGhlYWx0aC1jaGVja3MuCgpFeGVtcGxlIDoKLS0tLS0tLS0tCiAgICAjIHV0aWxpc2VyIHVuZSBhZHJlc3NlIHBhcnRpY3VsaehyZSBwb3VyIGpvaW5kcmUgbGVzIDIgc2VydmV1cgogICAgbGlzdGVuIGh0dHBfcHJveHkgMC4wLjAuMDo2NTAwMAogICAgICAgbW9kZSBodHRwCiAgICAgICBiYWxhbmNlIHJvdW5kcm9iaW4KICAgICAgIHNlcnZlciBzZXJ2ZXIwMSAxOTIuMTY4LjEuMTo4MCBzb3VyY2UgMTkyLjE2OC4yLjEzCiAgICAgICBzZXJ2ZXIgc2VydmVyMDIgMTkyLjE2OC4xLjI6ODAgc291cmNlIDE5Mi4xNjguMi4xMwoKRXhlbXBsZSA6Ci0tLS0tLS0tLQogICAgIyB1dGlsaXNlciB1bmUgYWRyZXNzZSBwYXJ0aWN1bGnocmUgcG91ciBqb2luZHJlIGNoYXF1ZSBzZXJ2ZXVyCiAgICBsaXN0ZW4gaHR0cF9wcm94eSAwLjAuMC4wOjY1MDAwCiAgICAgICBtb2RlIGh0dHAKICAgICAgIGJhbGFuY2Ugcm91bmRyb2JpbgogICAgICAgc2VydmVyIHNlcnZlcjAxIDE5Mi4xNjguMS4xOjgwIHNvdXJjZSAxOTIuMTY4LjEuMQogICAgICAgc2VydmVyIHNlcnZlcjAyIDE5Mi4xNjguMi4xOjgwIHNvdXJjZSAxOTIuMTY4LjIuMQoKRXhlbXBsZSA6Ci0tLS0tLS0tLQogICAgIyBmYWlyZSB1bmUgculwYXJ0aXRpb24gZCdhZHJlc3NlIHNvdXJjZXMgcG91ciBqb2luZHJlIGxlIG3qbWUgcHJveHkg4AogICAgIyB0cmF2ZXJzIGRldXggbGllbnMgV0FOIAogICAgbGlzdGVuIGh0dHBfcHJveHkgMC4wLjAuMDo2NTAwMAogICAgICAgbW9kZSBodHRwCiAgICAgICBiYWxhbmNlIHJvdW5kcm9iaW4KICAgICAgIHNlcnZlciByZW1vdGUtcHJveHktd2F5MSAxOTIuMTY4LjEuMTozMTI4IHNvdXJjZSAxOTIuMTY4LjIuMQogICAgICAgc2VydmVyIHJlbW90ZS1wcm94eS13YXkyIDE5Mi4xNjguMS4xOjMxMjggc291cmNlIDE5Mi4xNjguMy4xCgpFeGVtcGxlIDoKLS0tLS0tLS0tCiAgICAjIGZvcmNlciB1bmUgY29ubmV4aW9uIFRDUCDgIHMnYXR0YWNoZXIg4CB1biBwb3J0IHBhcnRpY3VsaWVyCiAgICBsaXN0ZW4gaHR0cF9wcm94eSAwLjAuMC4wOjIwMDAKICAgICAgIG1vZGUgdGNwCiAgICAgICBiYWxhbmNlIHJvdW5kcm9iaW4KICAgICAgIHNlcnZlciBzcnYxIDE5Mi4xNjguMS4xOjgwIHNvdXJjZSAxOTIuMTY4LjIuMToyMAogICAgICAgc2VydmVyIHNydjIgMTkyLjE2OC4xLjI6ODAgc291cmNlIDE5Mi4xNjguMi4xOjIwCgo0LjEuMykgTWFpbnRpZW4gZGUgc2Vzc2lvbiBUQ1AgKGtlZXAtYWxpdmUpCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KQXZlYyBsYSB2ZXJzaW9uIDEuMi43LCBpbCBkZXZpZW50IHBvc3NpYmxlIGQnYWN0aXZlciBsZSBtYWludGllbiBkZSBzZXNzaW9uClRDUCAoVENQIGtlZXAtYWxpdmUpIOAgbGEgZm9pcyBj9HTpIGNsaWVudCBldCBj9HTpIHNlcnZldXIuIENlbGEgcGVybWV0CmQnZW1w6mNoZXIgZGVzIHNlc3Npb25zIGxvbmd1ZXMgZCdleHBpcmVyIHN1ciBkZXMg6XF1aXBlbWVudHMgZGUgbml2ZWF1IDQKZXh0ZXJuZXMgdGVscyBxdWUgZGVzIGZpcmV3YWxscyBvdSBkZXMgculwYXJ0aXRldXJzIGRlIGNoYXJnZS4gQ2VsYSBwZXJtZXQKYXVzc2kgYXUgc3lzdOhtZSBkZSBk6XRlY3RlciBldCB0ZXJtaW5lciBkZXMgc2Vzc2lvbnMgZmln6WVzIGxvcnNxdSdhdWN1bgp0aW1lLW91dCBuJ2Eg6XTpIHBvc2l0aW9ubukgKGZvcnRlbWVudCBk6WNvbnNlaWxs6SkuIExlIHByb3h5IG5lIHBldXQgcGFzCnBvc2l0aW9ubmVyIGwnaW50ZXJ2YWxsZSBlbnRyZSBsZXMgYW5ub25jZXMgbmkgbGUgbm9tYnJlIG1heGltYWwsIHZldWlsbGV6CnZvdXMgculm6XJlciBhdSBtYW51ZWwgZHUgc3lzdOhtZSBkJ2V4cGxvaXRhdGlvbiBwb3VyIGNlbGEuIElsIGV4aXN0ZSAzIG9wdGlvbnMKcG91ciBhY3RpdmVyIGxlIG1haW50aWVuIGRlIHNlc3Npb24gVENQIDoKCglvcHRpb24gdGNwa2EJIyBhY3RpdmUgbGUga2VlcC1hbGl2ZSBj9HTpIGNsaWVudCBldCBj9HTpIHNlcnZldXIKCW9wdGlvbiBjbGl0Y3BrYQkjIGFjdGl2ZSBsZSBrZWVwLWFsaXZlIGP0dOkgY2xpZW50CglvcHRpb24gc3J2dGNwa2EJIyBhY3RpdmUgbGUga2VlcC1hbGl2ZSBj9HTpIHNlcnZldXIKCgo0LjIpIEpvdXJuYWxpc2F0aW9uIGRlcyBjb25uZXhpb25zCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCkwndW4gZGVzIHBvaW50cyBmb3J0cyBkZSBIQVByb3h5IGVzdCBpbmTpbmlhYmxlbWVudCBsYSBwculjaXNpb24gZGUgc2VzIGxvZ3MuCklsIGZvdXJuaXQgcHJvYmFibGVtZW50IGxlIHBsdXMgZmluIG5pdmVhdSBkJ2luZm9ybWF0aW9uIGRpc3BvbmlibGUgcG91ciB1bgp0ZWwgb3V0aWwsIGNlIHF1aSBlc3QgdHLocyBpbXBvcnRhbnQgcG91ciBsZXMgZGlhZ25vc3RpY3MgZW4gZW52aXJvbm5lbWVudHMKY29tcGxleGVzLiBFbiBzdGFuZGFyZCwgbGVzIGluZm9ybWF0aW9ucyBqb3VybmFsaXPpZXMgaW5jbHVlbnQgbGUgcG9ydCBjbGllbnQsCmxlcyBjaHJvbm9t6XRyYWdlcyBkZXMg6XRhdHMgVENQL0hUVFAsIGRlcyDpdGF0cyBkZSBzZXNzaW9uIHBy6WNpcyBhdSBtb21lbnQgZGUKbGEgdGVybWluYWlzb24gZXQgc2EgY2F1c2UsIGRlcyBpbmZvcm1hdGlvbnMgc3VyIGxlcyBk6WNpc2lvbnMgZCdhaWd1aWxsYWdlIGR1CnRyYWZpYyB2ZXJzIHVuIHNlcnZldXIsIGV0IGJpZW4gc/tyIGxhIHBvc3NpYmlsaXTpIGRlIGNhcHR1cmVyIGRlcyBlbi106nRlcwphcmJpdHJhaXJlcy4KCkRhbnMgbGUgYnV0IGQnYW3pbGlvcmVyIGxhIHLpYWN0aXZpdOkgZGVzIGFkbWluaXN0cmF0ZXVycywgaWwgb2ZmcmUgdW5lIGdyYW5kZQp0cmFuc3BhcmVuY2Ugc3VyIGxlcyBwcm9ibOhtZXMgcmVuY29udHLpcywg4CBsYSBmb2lzIGludGVybmVzIGV0IGV4dGVybmVzLCBldAppbCBlc3QgcG9zc2libGUgZCdlbnZveWVyIGxlcyBsb2dzIHZlcnMgZGVzIHNlcnZldXJzIGRpZmbpcmVudHMgZW4gbeptZSB0ZW1wcwphdmVjIGRlcyBuaXZlYXV4IGRlIGZpbHRyYWdlIGRpZmbpcmVudHMgOgoKICAtIGxvZ3MgZ2xvYmF1eCBhdSBuaXZlYXUgcHJvY2Vzc3VzIChlcnJldXJzIHN5c3TobWUsIGFycup0cy9k6W1hcnJhZ2VzLCAuLi4pCiAgLSBlcnJldXJzIHN5c3TobWUgZXQgaW50ZXJuZXMgcGFyIGluc3RhbmNlIChtYW5xdWUgZGUgcmVzc291cmNlcywgYnVncywgLi4uKQogIC0gcHJvYmzobWVzIGV4dGVybmVzIHBhciBpbnN0YW5jZSAoYXJy6nRzL3JlbGFuY2Ugc2VydmV1cnMsIGxpbWl0ZXMsIC4uLikKICAtIGFjdGl2aXTpIHBhciBpbnN0YW5jZSAoY29ubmV4aW9ucyBjbGllbnRzKSwgYXVzc2kgYmllbiBsb3JzIGRlIGxldXIKICAgIOl0YWJsaXNzZW1lbnQgcXUn4CBsZXVyIHRlcm1pbmFpc29uLgoKTGEgcG9zc2liaWxpdOkgZGUgZGlzdHJpYnVlciBkaWZm6XJlbnRzIG5pdmVhdXggZGUgbG9ncyDgIGRpZmbpcmVudHMgc2VydmV1cnMKcGVybWV0IOAgcGx1c2lldXJzIOlxdWlwZXMgZGUgcHJvZHVjdGlvbiBkJ2ludOlyYWdpciBldCBkZSBjb3JyaWdlciBsZXVycwpwcm9ibOhtZXMgbGUgcGx1cyB09HQgcG9zc2libGUuIFBhciBleGVtcGxlLCBsJ+lxdWlwZSBzeXN06G1lIHBldXQgc3VydmVpbGxlcgpvY2Nhc2lvbm5lbGxlbWVudCBsZXMgZXJyZXVycyBzeXN06G1lLCBwZW5kYW50IHF1ZSBsJ+lxdWlwZSBhcHBsaWNhdGlvbgpzdXJ2ZWlsbGUgbGVzIGFsZXJ0ZXMgZCdhcnLqdHMvZOltYXJyYWdlcyBkZSBzZXMgc2VydmV1cnMgZW4gdGVtcHMgcullbCwgZXQKcXVlIGwn6XF1aXBlIHPpY3VyaXTpIGFuYWx5c2UgbCdhY3Rpdml06SBlbiBkaWZm6XLpIGQndW5lIGhldXJlLgoKCjQuMi4xKSBOaXZlYXV4IGRlIGxvZwotLS0tLS0tLS0tLS0tLS0tLS0tLS0KTGVzIGNvbm5leGlvbnMgVENQIGV0IEhUVFAgcGV1dmVudCBkb25uZXIgbGlldSDgIHVuZSBqb3VybmFsaXNhdGlvbiBzb21tYWlyZSBvdQpk6XRhaWxs6WUgaW5kaXF1YW50LCBwb3VyIGNoYXF1ZSBjb25uZXhpb24sIGxhIGRhdGUsIGwnaGV1cmUsIGwnYWRyZXNzZSBJUApzb3VyY2UsIGxlIHNlcnZldXIgZGVzdGluYXRpb24sIGxhIGR1cullIGRlIGxhIGNvbm5leGlvbiwgbGVzIHRlbXBzIGRlIHLpcG9uc2UsCmxhIHJlcXXqdGUgSFRUUCwgbGUgY29kZSBkZSByZXRvdXIsIGxhIHF1YW50aXTpIGRlIGRvbm7pZXMgdHJhbnNtaXNlcywgZXQgbeptZQpkYW5zIGNlcnRhaW5zIGNhcywgbGEgdmFsZXVyIGQndW4gY29va2llIHBlcm1ldHRhbnQgZGUgc3VpdnJlIGxlcyBzZXNzaW9ucy4KVG91cyBsZXMgbWVzc2FnZXMgc29udCBlbnZveelzIGVuIHN5c2xvZyB2ZXJzIHVuIG91IGRldXggc2VydmV1cnMuIFNlIHLpZulyZXIg4ApsYSBzZWN0aW9uIDEuMSBwb3VyIHBsdXMgZCdpbmZvcm1hdGlvbiBzdXIgbGVzIGNhdOlnb3JpZXMgZGUgbG9ncy4gIExhIHN5bnRheGUKZXN0IGxhIHN1aXZhbnRlIDoKCiAgICBsb2cgPGFkcmVzc2VfaXBfMT4gPGNhdOlnb3JpZV8xPiBbbml2ZWF1X21heF8xXQogICAgbG9nIDxhZHJlc3NlX2lwXzI+IDxjYXTpZ29yaWVfMj4gW25pdmVhdV9tYXhfMl0Kb3UKICAgIGxvZyBnbG9iYWwKClJlbWFycXVlIDoKLS0tLS0tLS0tLQpMYSBzeW50YXhlIHNw6WNpZmlxdWUgJ2xvZyBnbG9iYWwnIGluZGlxdWUgcXVlIGwnb24gc291aGFpdGUgdXRpbGlzZXIgbGVzCnBhcmFt6HRyZXMgZGUgam91cm5hbGlzYXRpb24gZOlmaW5pcyBkYW5zIGxhIHNlY3Rpb24gJ2dsb2JhbCcuCgpFeGVtcGxlIDoKLS0tLS0tLS0tCiAgICBsaXN0ZW4gaHR0cF9wcm94eSAwLjAuMC4wOjgwCiAgICAgICAgbW9kZSBodHRwCiAgICAgICAgbG9nIDE5Mi4xNjguMi4yMDAgbG9jYWwzCiAgICAgICAgbG9nIDE5Mi4xNjguMi4yMDEgbG9jYWw0Cgo0LjIuMikgRm9ybWF0IGRlcyBsb2dzCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KUGFyIGTpZmF1dCwgbGVzIGNvbm5leGlvbnMgc29udCBqb3VybmFsaXPpZXMgYXUgbml2ZWF1IFRDUCBk6HMgbCfpdGFibGlzc2VtZW50CmRlIGxhIHNlc3Npb24gZW50cmUgbGUgY2xpZW50IGV0IGxlIHJlbGFpcy4gRW4gcHLpY2lzYW50IGwnb3B0aW9uICd0Y3Bsb2cnLApsYSBjb25uZXhpb24gbmUgc2VyYSBqb3VybmFsaXPpZSBxdSdlbiBmaW4gZGUgc2Vzc2lvbiwgYWpvdXRhbnQgZGVzIHBy6WNpc2lvbnMKc3VyIHNvbiDpdGF0IGxvcnMgZGUgbGEgZOljb25uZXhpb24sIGFpbnNpIHF1ZSBsZSB0ZW1wcyBkZSBjb25uZXhpb24gZXQgbGEKZHVy6WUgdG90YWxlIGRlIGxhIHNlc3Npb24uIExlIG5vbWJyZSBkZSBzZXNzaW9ucyByZXN0YW50ZXMgYXBy6HMgbGEKZOljb25uZXhpb24gZXN0IOlnYWxlbWVudCBpbmRpcXXpIChwb3VyIGxlIHNlcnZldXIsIGwnaW5zdGFuY2UgZXQgbGUgcHJvY2VzcykuCgpFeGVtcGxlIGRlIGpvdXJuYWxpc2F0aW9uIFRDUCA6Ci0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgIGxpc3RlbiByZWxhaXMtdGNwIDAuMC4wLjA6ODAwMAogICAgICAgIG1vZGUgdGNwCiAgICAgICAgb3B0aW9uIHRjcGxvZwogICAgICAgIGxvZyAxOTIuMTY4LjIuMjAwIGxvY2FsMwoKPj4+IGhhcHJveHlbMTg5ODldOiAxMjcuMC4wLjE6MzQ1NTAgWzE1L09jdC8yMDAzOjE1OjI0OjI4XSByZWxhaXMtdGNwIFNydjEgMC8wLzUwMDcgMCAtLSAxLzEvMSAwLzAKICAKICAgIENoYW1wICBGb3JtYXQgLyBEZXNjcmlwdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgRXhlbXBsZQoKICAgICAgICAxICBub21fcHJvY2Vzc3VzICdbJyBwaWQgJ106JyAgICAgICAgICAgICAgICAgICAgaGFwcm94eVsxODk4OV06CiAgICAgICAgMiAgaXBfY2xpZW50ICc6JyBwb3J0X2NsaWVudCAgICAgICAgICAgICAgICAgICAgIDEyNy4wLjAuMTozNDU1MAogICAgICAgIDMgICdbJyBkYXRlICddJyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbMTUvT2N0LzIwMDM6MTU6MjQ6MjhdCiAgICAgICAgNCAgbm9tX2luc3RhbmNlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbGFpcy10Y3AKICAgICAgICA1ICBub21fc2VydmV1ciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3J2MQogICAgICAgIDYgIHRlbXBzX2ZpbGUgJy8nIHRlbXBzX2Nvbm5lY3QgJy8nIHRlbXBzX3RvdGFsICAwLzAvNTAwNwogICAgICAgIDcgIG9jdGV0cyBsdXMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwCiAgICAgICAgOCAgZXRhdF90ZXJtaW5haXNvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tCiAgICAgICAgOSAgY29ubl9zcnYgJy8nIGNvbm5zX2luc3QgJy8nIGNvbm5zX3Byb2Nlc3N1cyAgIDEvMS8xCiAgICAgICAxMCAgcG9zaXRpb24gZW4gZmlsZSBkJ2F0dGVudGUgc3J2ICcvJyBnbG9iYWxlICAgIDAvMAoKVW5lIGF1dHJlIG9wdGlvbiwgJ2h0dHBsb2cnLCBmb3Vybml0IHBsdXMgZGUgZOl0YWlscyBzdXIgbGUgcHJvdG9jb2xlIEhUVFAsCm5vdGFtbWVudCBsYSByZXF16nRlIGV0IGwn6XRhdCBkZXMgY29va2llcy4gRGFucyBsZXMgY2FzIG/5IHVuIG3pY2FuaXNtZSBkZQpzdXJ2ZWlsbGFuY2UgZWZmZWN0dWFudCBkZXMgY29ubmV4aW9ucyBldCBk6WNvbm5leGlvbnMgZnLpcXVlbnRlcywgcG9sbHVlcmFpdApsZXMgbG9ncywgaWwgc3VmZml0IGQnYWpvdXRlciBsJ29wdGlvbiAnZG9udGxvZ251bGwnLCBwb3VyIG5lIHBsdXMgb2J0ZW5pciB1bmUKbGlnbmUgZGUgbG9nIHBvdXIgbGVzIHNlc3Npb25zIG4nYXlhbnQgcGFzIGRvbm7pIGxpZXUg4CB1biDpY2hhbmdlIGRlIGRvbm7pZXMKKHJlcXXqdGUgb3Ugculwb25zZSkuCgpFeGVtcGxlIGRlIGpvdXJuYWxpc2F0aW9uIEhUVFAgOgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAgbGlzdGVuIGh0dHBfcHJveHkgMC4wLjAuMDo4MAogICAgICAgIG1vZGUgaHR0cAogICAgICAgIG9wdGlvbiBodHRwbG9nCiAgICAgICAgb3B0aW9uIGRvbnRsb2dudWxsCiAgICAgICAgbG9nIDE5Mi4xNjguMi4yMDAgbG9jYWwzCgo+Pj4gaGFwcm94eVs2NzRdOiAxMjcuMC4wLjE6MzMzMTkgWzE1L09jdC8yMDAzOjA4OjMxOjU3XSByZWxhaXMtaHR0cCBTcnYxIDkvMC83LzE0Ny83MjMgMjAwIDI0MyAtIC0gLS0tLSAyLzMvMyAwLzAgIkhFQUQgLyBIVFRQLzEuMCIKCkV4ZW1wbGUgcGx1cyBjb21wbGV0IDoKCiAgICBoYXByb3h5WzE4OTg5XTogMTAuMC4wLjE6MzQ1NTIgWzE1L09jdC8yMDAzOjE1OjI2OjMxXSByZWxhaXMtaHR0cCBTcnYxIDMxODMvLTEvLTEvLTEvMTEyMTUgNTAzIDAgLSAtIFNDLS0gMTM3LzIwMi8yMDUgMC8wIHt3Lm9kcy5vcmd8TW96aWxsYX0ge30gIkhFQUQgLyBIVFRQLzEuMCIgCgogICAgQ2hhbXAgIEZvcm1hdCAvIERlc2NyaXB0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICBFeGVtcGxlCgogICAgICAgIDEgIG5vbV9wcm9jZXNzdXMgJ1snIHBpZCAnXTonICAgICAgICAgICAgICAgICAgICBoYXByb3h5WzE4OTg5XToKICAgICAgICAyICBpcF9jbGllbnQgJzonIHBvcnRfY2xpZW50ICAgICAgICAgICAgICAgICAgICAgMTAuMC4wLjE6MzQ1NTIKICAgICAgICAzICAnWycgZGF0ZSAnXScgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWzE1L09jdC8yMDAzOjE1OjI2OjMxXQogICAgICAgIDQgIG5vbV9pbnN0YW5jZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWxhaXMtaHR0cAogICAgICAgIDUgIG5vbV9zZXJ2ZXVyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTcnYxCiAgICAgICAgNiAgVHEgJy8nIFR3ICcvJyBUYyAnLycgVHIgJy8nIFR0ICAgICAgICAgICAgICAgIDMxODMvLTEvLTEvLTEvMTEyMTUKICAgICAgICA3ICBDb2RlX3JldG91cl9IVFRQICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNTAzCiAgICAgICAgOCAgb2N0ZXRzIGx1cyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAKICAgICAgICA5ICBjb29raWVzX3JlcXXqdGVfY2FwdHVy6XMgICAgICAgICAgICAgICAgICAgICAgLQogICAgICAgMTAgIGNvb2tpZXNfcmVwb25zZV9jYXB0dXLpcyAgICAgICAgICAgICAgICAgICAgICAtCiAgICAgICAxMSAgZXRhdF90ZXJtaW5haXNvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNDLS0KICAgICAgIDEyICBjb25uc19zcnYgJy8nIGNvbm5zX2luc3QgJy8nIGNvbm5zX3Byb2Nlc3N1cyAgMTM3LzIwMi8yMDUKICAgICAgIDEzICBwb3NpdGlvbiBmaWxlIHNlcnZldXIgJy8nIGdsb2JhbGUgICAgICAgICAgICAgMC8wCiAgICAgICAxNCAgJ3snIGVudGV0ZXNfcmVxdep0ZV9jYXB0dXLpcyAnfScgICAgICAgICAgICAgIHt3Lm9kcy5vcmd8TW96aWxsYX0KICAgICAgIDE1ICAneycgZW50ZXRlc19yZXBvbnNlX2NhcHR1culzICd9JyAgICAgICAgICAgICAge30KICAgICAgIDE2ICAnIicgcmVxdep0ZV9IVFRQICciJyAgICAgICAgICAgICAgICAgICAgICAgICAgIkhFQUQgLyBIVFRQLzEuMCIKICAKTm90ZSBwb3VyIGxlcyBhbmFseXNldXJzIGRlIGxvZ3MgOiBsJ1VSSSBlc3QgVE9VSk9VUlMgbGUgZGVybmllciBjaGFtcCBkZSBsYSBsaWduZSwgZXQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21tZW5jZSBwYXIgdW4gZ3VpbGxlbWV0ICciJy4KCkxlIHByb2Js6G1lIGRlIGxvZ3VlciB1bmlxdWVtZW50IGVuIGZpbiBkZSBzZXNzaW9uLCBjJ2VzdCBxdSdpbCBlc3QgaW1wb3NzaWJsZQpkZSBzYXZvaXIgY2UgcXVpIHNlIHBhc3NlIGR1cmFudCBkZSBncm9zIHRyYW5zZmVydHMgb3UgZGVzIHNlc3Npb25zIGxvbmd1ZXMuClBvdXIgcGFsbGllciDgIGNlIHByb2Js6G1lLCB1bmUgbm91dmVsbGUgb3B0aW9uICdsb2dhc2FwJyBhIOl06SBpbnRyb2R1aXRlIGRhbnMKbGEgdmVyc2lvbiAxLjEuMjggKDEuMi4xKS4gTG9yc3F1J2VsbGUgZXN0IGFjdGl26WUsIGxlIHByb3h5IGxvZ3VlcmEgbGUgcGx1cwp09HQgcG9zc2libGUsIGMnZXN0IOAgZGlyZSBqdXN0ZSBhdmFudCBxdWUgbmUgZOlidXRlbnQgbGVzIHRyYW5zZmVydHMgZGUKZG9ubullcy4gQ2VsYSBzaWduaWZpZSwgZGFucyBsZSBjYXMgZHUgVENQLCBxdSdpbCBsb2d1ZXJhIHRvdWpvdXJzIGxlIHLpc3VsdGF0CmRlIGxhIGNvbm5leGlvbiB2ZXJzIGxlIHNlcnZldXIsIGV0IGRhbnMgbGUgY2FzIEhUVFAsIHF1J2lsIGxvZ3VlcmEgZW4gZmluIGRlCnRyYWl0ZW1lbnQgZGVzIGVuLXTqdGVzIGRlIGxhIHLpcG9uc2UgZHUgc2VydmV1ciwgYXVxdWVsIGNhcyBsZSBub21icmUgZCdvY3RldHMKcmVwculzZW50ZXJhIGxhIHRhaWxsZSBkZXMgZW4tdOp0ZXMgcmV0b3VybulzIGF1IGNsaWVudC4KCkFmaW4gZCfpdml0ZXIgdG91dGUgY29uZnVzaW9uIGF2ZWMgbGVzIGxvZ3Mgbm9ybWF1eCwgbGUgdGVtcHMgdG90YWwgZGUKdHJhbnNmZXJ0IGV0IGxlIG5vbWJyZSBkJ29jdGV0cyB0cmFuc2bpculzIHNvbnQgcHLpZml46XMgZCd1biBzaWduZSAnKycKcmFwcGVsYW50IHF1ZSBsZXMgdmFsZXVycyBy6WVsbGVzIHNvbnQgY2VydGFpbmVtZW50IHBsdXMg6Wxldullcy4KCkV4ZW1wbGUgOgotLS0tLS0tLS0KCiAgICBsaXN0ZW4gaHR0cF9wcm94eSAwLjAuMC4wOjgwCiAgICAgICAgbW9kZSBodHRwCiAgICAgICAgb3B0aW9uIGh0dHBsb2cKICAgICAgICBvcHRpb24gZG9udGxvZ251bGwKICAgICAgICBvcHRpb24gbG9nYXNhcAogICAgICAgIGxvZyAxOTIuMTY4LjIuMjAwIGxvY2FsMwoKPj4+IGhhcHJveHlbNjc0XTogMTI3LjAuMC4xOjMzMzIwIFsxNS9PY3QvMjAwMzowODozMjoxN10gcmVsYWlzLWh0dHAgU3J2MSA5LzcvMTQvKzMwIDIwMCArMjQzIC0gLSAtLS0tIDMvMyAiR0VUIC9pbWFnZS5pc28gSFRUUC8xLjAiCgoKNC4yLjMpIENocm9ub23pdHJhZ2UgZGVzIOl26W5lbWVudHMKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KUG91ciBk6WNlbGVyIGRlcyBwcm9ibOhtZXMgculzZWF1LCBsZXMgbWVzdXJlcyBkdSB0ZW1wcyDpY291bOkgZW50cmUgY2VydGFpbnMK6XbpbmVtZW50cyBzb250IGQndW5lIHRy6HMgZ3JhbmRlIHV0aWxpdOkuIFRvdXMgbGVzIHRlbXBzIHNvbnQgbWVzdXLpcyBlbgptaWxsaXNlY29uZGVzIChtcykuIEVuIG1vZGUgSFRUUCwgcXVhdHJlIHBvaW50cyBkZSBtZXN1cmUgc29udCByYXBwb3J06XMgc291cwpsYSBmb3JtZSBUcS9Udy9UYy9Uci9UdCA6CgogIC0gVHE6IHRlbXBzIHRvdGFsIGRlIHLpY2VwdGlvbiBkZSBsYSByZXF16nRlIEhUVFAgZGUgbGEgcGFydCBkdSBjbGllbnQuCiAgICBDJ2VzdCBsZSB0ZW1wcyBxdWkgcydlc3Qg6WNvdWzpIGVudHJlIGxlIG1vbWVudCBv+SBsZSBjbGllbnQgYSDpdGFibGkKICAgIHNhIGNvbm5leGlvbiB2ZXJzIGxlIHJlbGFpcywgZXQgbGUgbW9tZW50IG/5IGNlIGRlcm5pZXIgYSByZed1IGxlIGRlcm5pZXIKICAgIGVuLXTqdGUgSFRUUCB2YWxpZGFudCBsYSBmaW4gZGUgbGEgcmVxdep0ZS4gVW5lIHZhbGV1ciAnLTEnIGljaSBpbmRpcXVlCiAgICBxdWUgbGEgcmVxdep0ZSBjb21wbOh0ZSBuJ2EgamFtYWlzIOl06SByZed1ZS4KCiAgLSBUdzogdGVtcHMgdG90YWwgcGFzc+kgZGFucyBsZXMgZmlsZXMgZCdhdHRlbnRlIGF2YW50IGQnb2J0ZW5pciB1bmUgcGxhY2UKICAgIHZlcnMgdW4gc2VydmV1ci4gQ2VjaSB0aWVudCBjb21wdGUg4CBsYSBmb2lzIGRlIGxhIGZpbGUgZCdhdHRlbnRlIGdsb2JhbGUKICAgIGV0IGRlIGNlbGxlIGR1IHNlcnZldXIsIGV0IGTpcGVuZCBkdSBub21icmUgZGUgcmVxdep0ZXMgZGFucyBsYSBmaWxlIGV0IGR1CiAgICB0ZW1wcyBu6WNlc3NhaXJlIGF1IHNlcnZldXIgcG91ciBjb21wbOl0ZXIgbGVzIHNlc3Npb25zIHBy6WPpZGVudGVzLiBMYQogICAgdmFsZXVyICctMScgaW5kaXF1ZSBxdWUgbGEgcmVxdep0ZSBhIOl06SBk6XRydWl0ZSBhdmFudCBkJ2F0dGVpbmRyZSB1bmUKICAgIGZpbGUuCgogIC0gVGM6IHRlbXBzIGQn6XRhYmxpc3NlbWVudCBkZSBsYSBjb25uZXhpb24gVENQIGR1IHJlbGFpcyB2ZXJzIGxlIHNlcnZldXIuCiAgICBDJ2VzdCBsZSB0ZW1wcyDpY291bOkgZW50cmUgbGUgbW9tZW50IG91IGxlIHJlbGFpcyBhIGluaXRp6SBsYSBkZW1hbmRlIGRlCiAgICBjb25uZXhpb24gdmVycyBsZSBzZXJ2ZXVyLCBldCBsZSBtb21lbnQgb/kgY2UgZGVybmllciBsJ2EgYWNxdWl0dOllLCBjJ2VzdAogICAg4CBkaXJlIGxlIHRlbXBzIGVudHJlIGwnZW52b2kgZHUgcGFxdWV0IFRDUCBTWU4gbGEgculjZXB0aW9uIGR1IFNZTi9BQ0suCiAgICBVbmUgdmFsZXVyICctMScgaWNpIGluZGlxdWUgcXVlIGxhIGNvbm5leGlvbiBuJ2EgamFtYWlzIHB1IOp0cmUg6XRhYmxpZQogICAgdmVycyBsZSBzZXJ2ZXVyLgoKICAtIFRyOiB0ZW1wcyBkZSBy6XBvbnNlIGR1IHNlcnZldXIuIEMnZXN0IGxlIHRlbXBzIHF1ZSBsZSBzZXJ2ZXVyIGEgbWlzIHBvdXIKICAgIHJlbnZveWVyIGxhIHRvdGFsaXTpIGRlcyBlbi106nRlcyBIVFRQIOAgcGFydGlyIGR1IG1vbWVudCBv+SBpbCBhIGFjcXVpdHTpCiAgICBsYSBjb25uZXhpb24uIENhIHJlcHLpc2VudGUgZXhhY3RlbWVudCBsZSB0ZW1wcyBkZSB0cmFpdGVtZW50IGRlIGxhCiAgICB0cmFuc2FjdGlvbiBzYW5zIGxlIHRyYW5zZmVydCBkZXMgZG9ubullcyBhc3NvY2npZXMuIFVuZSB2YWxldXIgJy0xJwogICAgaW5kaXF1ZSBxdWUgbGUgc2VydmV1ciBuJ2EgcGFzIGVudm956SBsYSB0b3RhbGl06SBkZSBsJ2VuLXTqdGUgSFRUUC4KCiAgLSBUdDogZHVy6WUgZGUgdmllIHRvdGFsZSBkZSBsYSBzZXNzaW9uLCBlbnRyZSBsZSBtb21lbnQgb/kgbGEgZGVtYW5kZSBkZQogICAgY29ubmV4aW9uIGR1IGNsaWVudCBhIOl06SBhY3F1aXR06WUgZXQgbGUgbW9tZW50IG/5IGxhIGNvbm5leGlvbiBhIOl06QogICAgcmVmZXJt6WUgYXV4IGRldXggZXh0cultaXTpcyAoY2xpZW50IGV0IHNlcnZldXIpLiBMYSBzaWduaWZpY2F0aW9uIGNoYW5nZQogICAgdW4gcGV1IHNpIGwnb3B0aW9uICdsb2dhc2FwJyBlc3QgcHLpc2VudGUuIERhbnMgY2UgY2FzLCBsZSB0ZW1wcyBjb3JyZXNwb25kCiAgICB1bmlxdWVtZW50IOAgKFRxICsgVHcgKyBUYyArIFRyKSwgZXQgc2UgdHJvdXZlIHBy6WZpeOkgZCd1biBzaWduZSAnKycuIE9uCiAgICBwZXV0IGRvbmMgZOlkdWlyZSBUZCwgbGUgdGVtcHMgZGUgdHJhbnNmZXJ0IGRlcyBkb25u6WVzLCBlbiBleGNsdWFudCBsZXMKICAgIGF1dHJlcyB0ZW1wcyA6CgogICAgICAgIFRkID0gVHQgLSAoVHEgKyBUdyArIFRjICsgVHIpCgogICAgTGVzIHRlbXBzIHJhcHBvcnTpcyDgICctMScgc29udCBzaW1wbGVtZW50IOAg6WxpbWluZXIgZGUgY2V0dGUg6XF1YXRpb24uCgpFbiBtb2RlIFRDUCAoJ29wdGlvbiB0Y3Bsb2cnKSwgc2V1bHMgbGVzIGRldXggaW5kaWNhdGV1cnMgVHcsIFRjIGV0IFR0IHNvbnQKcmFwcG9ydOlzLgoKQ2VzIHRlbXBzIGZvdXJuaXNzZW50IGRlIHBy6WNpZXV4IHJlbnNlaWduZW1lbnQgc3VyIGRlcyBjYXVzZXMgcHJvYmFibGVzIGRlCnByb2Js6G1lcy4gRHUgZmFpdCBxdWUgbGUgcHJvdG9jb2xlIFRDUCBk6WZpbmlzc2UgZGVzIHRlbXBzIGRlIHJldHJhbnNtaXNzaW9uCmRlIDMgc2Vjb25kZXMsIHB1aXMgNiwgMTIsIGV0Yy4uLiwgbCdvYnNlcnZhdGlvbiBkZSB0ZW1wcyBwcm9jaGVzIGRlIG11bHRpcGxlcwpkZSAzIHNlY29uZGVzIGluZGlxdWUgcHJhdGlxdWVtZW50IHRvdWpvdXJzIGRlcyBwZXJ0ZXMgZGUgcGFxdWV0cyBsaelzIOAgdW4KcHJvYmzobWUgculzZWF1IChj4mJsZSBvdSBu6WdvY2lhdGlvbikuIERlIHBsdXMsIHNpIDxUdD4gZXN0IHByb2NoZSBkJ3VuZQp2YWxldXIgZGUgdGltZS1vdXQgZGFucyBsYSBjb25maWd1cmF0aW9uLCBjJ2VzdCBzb3V2ZW50IHF1J3VuZSBzZXNzaW9uIGEg6XTpCmFiYW5kb25u6WUgc3VyIGV4cGlyYXRpb24gZCd1biB0aW1lLW91dC4KCkNhcyBsZXMgcGx1cyBmculxdWVudHMgOgoKICAtIFNpIFRxIGVzdCBwcm9jaGUgZGUgMzAwMCwgdW4gcGFxdWV0IGEgdHLocyBjZXJ0YWluZW1lbnQg6XTpIHBlcmR1IGVudHJlCiAgICBsZSBjbGllbnQgZXQgbGUgcmVsYWlzLgogIC0gU2kgVGMgZXN0IHByb2NoZSBkZSAzMDAwLCB1biBwYXF1ZXQgYSB0cuhzIGNlcnRhaW5lbWVudCDpdOkgcGVyZHUgZW50cmUKICAgIGxlIHJlbGFpcyBldCBsZSBzZXJ2ZXVyIGR1cmFudCBsYSBwaGFzZSBkZSBjb25uZXhpb24uIENldCBpbmRpY2F0ZXVyCiAgICBkZXZyYWl0IG5vcm1hbGVtZW50IHRvdWpvdXJzIOp0cmUgdHLocyBiYXMgKG1vaW5zIGRlIHF1ZWxxdWVzIGRpemFpbmVzKS4KICAtIFNpIFRyIGVzdCBwcmVzcXVlIHRvdWpvdXJzIGluZulyaWV1ciDgIDMwMDAsIGV0IHF1ZSBjZXJ0YWluZXMgdmFsZXVycwogICAgc2VtYmxlbnQgcHJvY2hlcyBkZSBsYSB2YWxldXIgbW95ZW5uZSBtYWpvcullIGRlIDMwMDAsIGlsIHkgYSBwZXV0Lep0cmUKICAgIGRlIHBlcnRlcyBlbnRyZSBsZSByZWxhaXMgZXQgbGUgc2VydmV1ci4KICAtIFNpIFR0IGVzdCBs6WfocmVtZW50IHN1cOlyaWV1ciBhdSB0aW1lLW91dCwgYydlc3Qgc291dmVudCBwYXJjZSBxdWUgbGUKICAgIGNsaWVudCBldCBsZSBzZXJ2ZXVyIHV0aWxpc2VudCBkdSBrZWVwLWFsaXZlIEhUVFAgZW50cmUgZXV4IGV0IHF1ZSBsYQogICAgc2Vzc2lvbiBlc3QgbWFpbnRlbnVlIGFwcuhzIGxhIGZpbiBkZXMg6WNoYW5nZXMuIFZvaXIgcGx1cyBsb2luIHBvdXIKICAgIHNhdm9pciBjb21tZW50IGTpc2FjdGl2ZXIgbGUga2VlcC1hbGl2ZSBIVFRQLgoKQXV0cmVzIGNhcyAoJ3h4JyByZXBy6XNlbnRhbnQgdW5lIHZhbGV1ciBxdWVsY29ucXVlIOAgaWdub3JlcikgOgogIC0xL3h4L3h4L3h4L1R0OiBsZSBjbGllbnQgbidhIHBhcyBlbnZveekgc2EgcmVxdep0ZSBkYW5zIGxlIHRlbXBzIGltcGFydGkgb3UKICAgICAgICAgICAgICAgICAgYSByZWZlcm3pIHNhIGNvbm5leGlvbiBzYW5zIGNvbXBs6XRlciBsYSByZXF16nRlLgogIFRxLy0xL3h4L3h4L1R0OiBJbCBuJ+l0YWl0IHBhcyBwb3NzaWJsZSBkZSB0cmFpdGVyIGxhIHJlcXVlc3QsIHByb2JhYmxlbWVudAogICAgICAgICAgICAgICAgICBwYXJjZSBxdWUgdG91cyBsZXMgc2VydmV1cnMg6XRhaWVudCBob3JzIGQndXNhZ2UuCiAgVHEvVHcvLTEveHgvVHQ6IGxhIGNvbm5leGlvbiBuJ2EgcGFzIHB1IHMn6XRhYmxpciB2ZXJzIGxlIHNlcnZldXIgKHJlZnVzIG91CiAgICAgICAgICAgICAgICAgIHRpbWUtb3V0IGF1IGJvdXQgZGUgVHQtKFRxK1R3KSBtcykuCiAgVHEvVHcvVGMvLTEvVHQ6IGxlIHNlcnZldXIgYSBhY2NlcHTpIGxhIGNvbm5leGlvbiBtYWlzIG4nYSBwYXMgculwb25kdSBkYW5zCiAgICAgICAgICAgICAgICAgIGxlcyB0ZW1wcyBvdSBiaWVuIGEgcmVmZXJt6SBzYSBjb25uZXhpb24gdHJvcCB09HQsIGF1IGJvdXQKICAgICAgICAgICAgICAgICAgZGUgVHQtKFRxK1R3K1RjKSBtcy4KICAgICAKNC4yLjQpIENvbmRpdGlvbnMgZGUgZOljb25uZXhpb24KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KTGVzIGxvZ3MgVENQIGV0IEhUVFAgZm91cm5pc3NlbnQgdW4gaW5kaWNhdGV1ciBkZSBjb21wbOl0dWRlIGRlIGxhIHNlc3Npb24gZGFucwpsZSBjaGFtcCAnZXRhdF90ZXJtaW5haXNvbicsIGp1c3RlIGF2YW50IGxlIG5vbWJyZSBkZSBjb25uZXhpb25zIGFjdGl2ZXMuIEMnZXN0CnVuIGNoYW1wIGxvbmcgZGUgMiBjYXJhY3TocmVzIGVuIFRDUCBldCBkZSA0IGNhcmFjdOhyZXMgZW4gSFRUUCwgY2hhY3VuIGF5YW50CnVuZSBzaWduaWZpY2F0aW9uIHBy6WNpc2UgOgoKICAtIHN1ciBsZSBwcmVtaWVyIGNhcmFjdOhyZSwgdW4gY29kZSBwculjaXNhbnQgbGUgcHJlbWllciDpduluZW1lbnQgcXVpIGEgY2F1c+kKICAgIGxhIHRlcm1pbmFpc29uIGRlIGxhIHNlc3Npb24gOgoKICAgICAgICBDIDogZmVybWV0dXJlIGluYXR0ZW5kdWUgZGUgbGEgc2Vzc2lvbiBUQ1AgZGUgbGEgcGFydCBkdSBjbGllbnQuCgogICAgICAgIFMgOiBmZXJtZXR1cmUgaW5hdHRlbmR1ZSBkZSBsYSBzZXNzaW9uIFRDUCBkZSBsYSBwYXJ0IGR1IHNlcnZldXIsIG91CiAgICAgICAgICAgIHJlZnVzIGV4cGxpY2l0ZSBkZSBjb25uZXhpb24gZGUgbGEgcGFydCBkZSBjZSBkZXJuaWVyLgoKICAgICAgICBQIDogdGVybWluYWlzb24gcHLpbWF0dXLpZSBkZXMgc2Vzc2lvbnMgcGFyIGxlIHByb3h5LCBwb3VyIGNhdXNlCiAgICAgICAgICAgIGQnaW1wb3NpdGlvbiBkJ3VuZSBsaW1pdGUgc3VyIGxlIG5vbWJyZSBkZSBjb25uZXhpb25zLCBwb3VyIGNhdXNlCiAgICAgICAgICAgIGRlIGNvbmZpZ3VyYXRpb24gKGV4OiBmaWx0cmUgZCdVUkwpLCBvdSBwYXJjZSBxdSd1biBjb250cvRsZSBkZQogICAgICAgICAgICBz6WN1cml06SBhIGTpdGVjdOkgZXQgYmxvcXXpIHVuZSBhbm9tYWxpZSBkYW5zIGxhIHLpcG9uc2UgZHUKICAgICAgICAgICAgc2VydmV1ciBxdWkgYXVyYWl0IHB1IGNhdXNlciB1bmUgZnVpdGUgZCdpbmZvcm1hdGlvbnMgKHBhciBleGVtcGxlLAogICAgICAgICAgICB1biBjb29raWUgY2FjaGFibGUpLgoKICAgICAgICBSIDogdW5lIHJlc3NvdXJjZSBzdXIgbGUgcHJveHkgYSDpdOkg6XB1aXPpZSAobeltb2lyZSwgc29ja2V0cywgcG9ydHMKICAgICAgICAgICAgc291cmNlLCAuLi4pLiBH6W7pcmFsZW1lbnQsIGNlbGEgYXJyaXZlIGF1IGNvdXJzIGRlIGwn6XRhYmxpc3NlbWVudAogICAgICAgICAgICBkJ3VuZSBjb25uZXhpb24sIGV0IGxlcyBsb2dzIHN5c3TobWUgZG9pdmVudCBjb250ZW5pciB1bmUgY29waWUgZGUKICAgICAgICAgICAgbCfpcnJldXIgcHLpY2lzZS4KCiAgICAgICAgSSA6IHVuZSBlcnJldXIgaW50ZXJuZSBhIOl06SBpZGVudGlmaellIHBhciBsZSBwcm94eSDgIGxhIHN1aXRlIGQndW4KICAgICAgICAgICAgYXV0by1jb250cvRsZS4gQ2VjaSBuZSBkb2l0IEpBTUFJUyBhcnJpdmVyLCBldCB2b3VzIOp0ZXMgZW5jb3VyYWfpcwogICAgICAgICAgICDgIHJlbW9udGVyIG4naW1wb3J0ZSBxdWVsIGxvZyBjb250ZW5hbnQgY2VjaSBjYXIgaWwgcydhZ2lyYSB1biBidWcuCgogICAgICAgIGMgOiBsZSBk6WxhaSBtYXhpbWFsIGQnYXR0ZW50ZSBkdSBjbGllbnQgYSBleHBpcukgKGNsaXRpbWVvdXQpLgoKICAgICAgICBzIDogbGUgZOlsYWkgbWF4aW1hbCBkJ2F0dGVudGUgZHUgc2VydmV1ciBhIGV4cGly6SAoc3J2dGltZW91dCBldCBjb250aW1lb3V0KQoKICAgICAgICAtIDogdGVybWluYWlzb24gbm9ybWFsZSBkZSBzZXNzaW9uLgoKICAtIHN1ciBsZSBzZWNvbmQgY2FyYWN06HJlLCBsJ+l0YXQgZCdhdmFuY2VtZW50IGRlIGxhIHNlc3Npb24gVENQL0hUVFAgbG9ycyBkZQogICAgbGEgZmVybWV0dXJlIDoKCiAgICAgICAgUiA6IGF0dGVudGUgZCd1bmUgUkVRVUVURSBIVFRQIGNvbXBs6HRlIGRlIGxhIHBhcnQgZHUgY2xpZW50LiBSaWVuIG4nYQogICAgICAgICAgICDpdOkgdHJhbnNtaXMgYXUgc2VydmV1ci4KCiAgICAgICAgUSA6IGF0dGVudGUgZW4gZmlsZSBkJ2F0dGVudGUgKFFVRVVFKSBkJ3VuZSBwbGFjZSBwb3VyIGF2b2lyIHVuZQogICAgICAgICAgICBjb25uZXhpb24gdmVycyB1biBzZXJ2ZXVyLiBOZSBwZXV0IGFwcGFyYe50cmUgcXVlIHN1ciB1biBzZXJ2ZXVyCiAgICAgICAgICAgIHBvc3PpZGFudCB1biBwYXJhbeh0cmUgJ21heGNvbm4nLiBBdWN1bmUgY29ubmV4aW9uIG4nYSDpdOkgZW52b3npZQogICAgICAgICAgICBhdSBzZXJ2ZXVyLgoKICAgICAgICBDIDogYXR0ZW50ZSBkZSBsJ+l0YWJsaXNzZW1lbnQgZCd1bmUgQ09OTkVYSU9OIHZlcnMgbGUgc2VydmV1ci4gTGUKICAgICAgICAgICAgc2VydmV1ciBwZXV0IGF1IHBsdXMgYXZvaXIgdnUgbGEgdGVudGF0aXZlIGRlIGNvbm5leGlvbiwgbWFpcwogICAgICAgICAgICBhdWN1bmUgZG9ubullIG4nYSDpdOkg6WNoYW5n6WUuCgogICAgICAgIEggOiBhdHRlbnRlLCBy6WNlcHRpb24gb3UgdHJhaXRlbWVudCBkZXMgZW4tdOp0ZXMgSFRUUCAoIkhFQURFUlMiKS4KCiAgICAgICAgRCA6IHRyYW5zZmVydCBkZXMgRE9OTkVFUyBkdSBzZXJ2ZXVyIHZlcnMgbGUgY2xpZW50LgoKICAgICAgICBMIDogdHJhbnNmZXJ0IGRlcyBkZXJuaehyZXMgKCJMQVNUIikgZG9ubullcyBkdSBwcm94eSB2ZXJzIGxlIGNsaWVudCwKICAgICAgICAgICAgYWxvcnMgcXVlIGxlIHNlcnZldXIgYSBk6WrgIGZpbmkuCgogICAgICAgIFQgOiByZXF16nRlIGJsb3F16WUgZW4gbW9kZSAidGFycGl0IiBwYXIgbGUgcHJveHkuIEVsbGUgYSDpdOkgbWFpbnRlbnVlCiAgICAgICAgICAgIG91dmVydGUgdmVycyBsZSBjbGllbnQgcGVuZGFudCB0b3V0ZSBsYSBkdXLpZSBkdSBjb250aW1lb3V0IG91CiAgICAgICAgICAgIGp1c3F1J+AgbCdhYmFuZG9uIGRlIGxhIHBhcnQgZHUgY2xpZW50LgoKICAgICAgICAtIDogdGVybWluYWlzb24gbm9ybWFsZSwgYXBy6HMgZmluIGRlIHRyYW5zZmVydCBkZXMgZG9ubullcy4KCiAgLSBsZSB0cm9pc2nobWUgY2FyYWN06HJlIGluZGlxdWUgbCfpdmVudHVlbGxlIGlkZW50aWZpY2F0aW9uIGQndW4gY29va2llIGRlCiAgICBwZXJzaXN0ZW5jZSAodW5pcXVlbWVudCBlbiBtb2RlIEhUVFApIDoKCiAgICAgICAgTiA6IGF1Y3VuIGNvb2tpZSBkZSBwZXJzaXN0ZW5jZSBuJ2Eg6XTpIHBy6XNlbnTpLiBDJ2VzdCBn6W7pcmFsZW1lbnQgbGUKICAgICAgICAgICAgY2FzIHN1ciBsZXMgTk9VVkVMTEVTIGNvbm5leGlvbnMgY2xpZW50cy4KCiAgICAgICAgSSA6IGxlIGNsaWVudCBhIHBy6XNlbnTpIHVuIGNvb2tpZSBJTlZBTElERSBuZSBjb3JyZXNwb25kYW50IOAgYXVjdW4KICAgICAgICAgICAgc2VydmV1ciBjb25udS4gQ2VjaSBwZXV0IOp0cmUgZPsg4CB1biBjaGFuZ2VtZW50IGRlIGNvbmZpZ3VyYXRpb24KICAgICAgICAgICAgculjZW50LCDgIGRlcyBt6WxhbmdlcyBkZSBub21zIGRlIGNvb2tpZXMgZW50cmUgc2l0ZXMgSFRUUC9IVFRQUywKICAgICAgICAgICAgb3Ug4CB1bmUgYXR0YXF1ZS4KCiAgICAgICAgRCA6IGxlIGNsaWVudCBhIHBy6XNlbnTpIHVuIGNvb2tpZSBjb3JyZXNwb25kYW50IOAgdW4gc2VydmV1ciBob3JzCiAgICAgICAgICAgIGQndXNhZ2UgKCJET1dOIikuIFN1aXZhbnQgbCdvcHRpb24gJ3BlcnNpc3QnLCBpbCBhIOl06SByZW52b3npIHZlcnMKICAgICAgICAgICAgdW4gYXV0cmUgc2VydmV1ciBvdSBhIHRvdXQgZGUgbeptZSB0ZW506SBkZSBzZSBjb25uZWN0ZXIgc3VyIGNlbHVpCiAgICAgICAgICAgIGNvcnJlc3BvbmRhbnQgYXUgY29va2llLgoKICAgICAgICBWIDogbGUgY2xpZW50IGEgcHLpc2VudOkgdW4gY29va2llIFZBTElERSBldCBhIHB1IHNlIGNvbm5lY3RlciBhdQogICAgICAgICAgICBzZXJ2ZXVyIGNvcnJlc3BvbmRhbnQuCgogICAgICAgIC0gOiBub24gYXBwbGlxdWFibGUgKHBhcyBkZSBjb29raWUgcG9zaXRpb25u6SBkYW5zIGxhIGNvbmZpZ3VyYXRpb24pLgoKICAtIGxlIGRlcm5pZXIgY2FyYWN06HJlIGluZGlxdWUgbCfpdmVudHVlbCB0cmFpdGVtZW50IGVmZmVjdHXpIHN1ciB1biBjb29raWUgZGUKICAgIHBlcnNpc3RlbmNlIHJldHJvdXJu6SBwYXIgbGUgc2VydmV1ciAodW5pcXVlbWVudCBlbiBtb2RlIEhUVFApIDoKCiAgICAgICAgTiA6IGF1Y3VuIGNvb2tpZSBkZSBwZXJzaXN0YW5jZSBuJ2Eg6XTpIGZvdXJuaSBwYXIgbGUgc2VydmV1ciwgZXQgYXVjdW4KICAgICAgICAgICAgbidhIOl06SBpbnPpcukuCgogICAgICAgIEkgOiBhdWN1biBjb29raWUgZGUgcGVyc2lzdGFuY2UgbidhIOl06SBmb3VybmkgcGFyIGxlIHNlcnZldXIsIGV0IGxlCiAgICAgICAgICAgIHByb3h5IGVuIGEgSU5TRVJFIHVuLgoKICAgICAgICBQIDogdW4gY29va2llIGRlIHBlcnNpc3RlbmNlIGEg6XTpIGZvdXJuaSBwYXIgbGUgc2VydmV1ciBldCB0cmFuc21pcwogICAgICAgICAgICB0ZWwgcXVlbCAoIlBBU1NJRiIpLgoKICAgICAgICBSIDogbGUgY29va2llIHJldG91cm7pIHBhciBsZSBzZXJ2ZXVyIGEg6XTpIFJFRUNSSVQgcGFyIGxlIHByb3h5LgoKICAgICAgICBEIDogbGUgY29va2llIHBy6XNlbnTpIHBhciBsZSBzZXJ2ZXVyIGEg6XTpIERFVFJVSVQgcGFyIGxlIHByb3h5IHBvdXIKICAgICAgICAgICAgbmUgcGFzIOp0cmUgcmV0b3VybukgYXUgY2xpZW50LgoKICAgICAgICAtIDogbm9uIGFwcGxpcXVhYmxlCgoKTGEgY29tYmluYWlzb24gZGVzIGRldXggcHJlbWllcnMgaW5kaWNhdGV1cnMgZm91cm5pdCB1bmUgZ3JhbmRlIHF1YW50aXRp6QpkJ2luZm9ybWF0aW9ucyBzdXIgY2UgcXVpIHNlIHBhc3NhaXQgbG9yc3F1ZSBsYSBzZXNzaW9uIHMnZXN0IHRlcm1pbullLiBDZWxhCnBldXQgbm90YW1tZW50IGFpZGVyIOAgZOl0ZWN0ZXIgdW5lIHNhdHVyYXRpb24gZGUgc2VydmV1ciwgZGVzIHRyb3VibGVzIHLpc2VhdSwKZGVzIOlwdWlzZW1lbnRzIGRlIHJlc3NvdXJjZXMgc3lzdOhtZSBsb2NhbGVzLCBkZXMgYXR0YXF1ZXMsIGV0Yy4uLgoKTGVzIGNvbWJpbmFpc29ucyBkJ2luZGljYXRldXJzIGxlcyBwbHVzIGZy6XF1ZW50ZXMgc29udCDpbnVt6XLpZXMgaWNpLgoKICAgSW5kaWMgIFJhaXNvbgogICAgICBDUiAgTGUgY2xpZW50IGEgYWJhbmRvbm7pIGF2YW50IGQn6W1ldHRyZSB1bmUgcmVxdep0ZSBjb21wbOh0ZS4gSWwgZXN0CiAgICAgICAgICB0cuhzIHByb2JhYmxlIHF1ZSBsYSByZXF16nRlIGFpdCDpdOkgdGFw6WUg4CBsYSBtYWluIGRhbnMgdW4gY2xpZW50CiAgICAgICAgICB0ZWxuZXQgZXQgYWJvcnTpZSB0cm9wIHT0dC4KCiAgICAgIGNSICBMZSB0ZW1wcyBpbXBhcnRpIGF1IGNsaWVudCBhIGV4cGly6SBhdmFudCBy6WNlcHRpb24gZCd1bmUgcmVxdep0ZQogICAgICAgICAgY29tcGzodGUuIENlY2kgZXN0IHBhcmZvaXMgY2F1c+kgcGFyIHVuIHBhcmFt6HRyZSBUQ1AgTVNTIHRyb3Ag6WxldukKICAgICAgICAgIHN1ciBsZSBjbGllbnQgcG91ciBkZXMgculzZWF1eCBQUFBvRSBzdXIgQURTTCBxdWkgbmUgcGV1dmVudCBwYXMKICAgICAgICAgIHRyYW5zcG9ydGVyIGRlcyBwYXF1ZXRzIGVudGllcnMsIG91IHBhciBkZXMgY2xpZW50cyBxdWkg6W52b2llbnQgZGVzCiAgICAgICAgICByZXF16nRlcyDgIGxhIG1haW4gZXQgbmUgdGFwZW50IHBhcyBhc3NleiB2aXRlLgoKICAgICAgU0MgIExlIHNlcnZldXIgYSBleHBsaWNpdGVtZW50IHJlZnVz6SBsYSBjb25uZXhpb24gKGxlIHByb3h5IGEgcmXndSB1bgogICAgICAgICAgUlNUIFRDUCBvdSB1biBtZXNzYWdlIElDTVAgZW4gcmV0b3VyKS4gRGFucyBjZXJ0YWlucyBjYXMsIGNlbGEgcGV1dAogICAgICAgICAg6nRyZSBsYSBjb3VjaGUgculzZWF1IHF1aSBpbmRpcXVlIGF1IHByb3h5IHF1ZSBsZSBzZXJ2ZXVyIG4nZXN0IHBhcwogICAgICAgICAgam9pZ25hYmxlIChwLmV4OiBwYXMgZGUgcm91dGUsIHBhcyBkZSBy6XBvbnNlIEFSUCBlbiBsb2NhbCwgZXRjLi4uKQoKICAgICAgc0MgIExhIGNvbm5leGlvbiBhdSBzZXJ2ZXVyIG4nYSBwYXMgcHUgcyfpdGFibGlyIGRhbnMgbGUgdGVtcHMgaW1wYXJ0aS4KCiAgICAgIFBDICBMZSBwcm94eSBhIHJlZnVz6SBkJ+l0YWJsaXIgdW5lIGNvbm5leGlvbiBhdSBzZXJ2ZXVyIHBhcmNlIHF1ZSBsZQogICAgICAgICAgbm9tYnJlIGRlIGNvbm5leGlvbnMgYSBhdHRlaW50IGxhIGxpbWl0ZSAnbWF4Y29ubicgKGdsb2JhbCBvdSBkZQogICAgICAgICAgbCdpbnN0YW5jZSkuIExlIHBhcmFt6HRyZSAnbWF4Y29ubicgZGUgbCdpbnN0YW5jZSBwb3VycmFpdCDqdHJlCiAgICAgICAgICBhdWdtZW506SwgdG91dCBjb21tZSBsZSBwYXJhbeh0cmUgJ21heGNvbm4nIGdsb2JhbC4KCiAgICAgIFJDICBVbmUgcmVzc291cmNlIGxvY2FsZSBhIOl06SDpcHVpc+llICht6W1vaXJlLCBzb2NrZXRzLCBwb3J0cyBzb3VyY2UpLAogICAgICAgICAgZW1w6mNoYW50IGxhIGNvbm5leGlvbiBhdSBzZXJ2ZXVyIGRlIHMn6XRhYmxpci4gTGVzIGxvZ3MgZCdlcnJldXJzCiAgICAgICAgICBkaXJvbnQgcHLpY2lz6W1lbnQgY2UgcXVpIG1hbnF1YWl0LiBEYW5zIHRvdXMgbGVzIGNhcywgbGUgc2V1bCByZW3oZGUKICAgICAgICAgIGNvbnNpc3RlIOAgYWZmaW5lciBsZSBwYXJhbel0cmFnZSBzeXN06G1lLgoKICAgICAgY0ggIExlIHRlbXBzIGltcGFydGkgYXUgY2xpZW50IGEgZXhwaXLpIGF1IGNvdXJzIGQndW5lIHJlcXXqdGUgUE9TVC4gQ2VjaQogICAgICAgICAgZXN0IHBhcmZvaXMgY2F1c+kgcGFyIHVuIHBhcmFt6HRyZSBUQ1AgTVNTIHRyb3Ag6Wxldukgc3VyIGxlIGNsaWVudAogICAgICAgICAgcG91ciBkZXMgculzZWF1eCBQUFBvRSBzdXIgQURTTCBxdWkgbmUgcGV1dmVudCBwYXMgdHJhbnNwb3J0ZXIgZGVzCiAgICAgICAgICBwYXF1ZXRzIGVudGllcnMuCgogICAgICBDSCAgTGUgY2xpZW50IGEgYWJhbmRvbm7pIGFsb3JzIHF1J2lsIGF0dGVuZGFpdCB1biBk6WJ1dCBkZSBy6XBvbnNlIGRlIGxhCiAgICAgICAgICBwYXJ0IGR1IHNlcnZldXIuIENlbGEgcGV1dCDqdHJlIGNhdXPpIHBhciBsZSBzZXJ2ZXVyIHF1aSBtZXR0YWl0IHRyb3AKICAgICAgICAgIGRlIHRlbXBzIOAgculwb25kcmUsIG91IHBhciB1biBjbGllbnQgY2xpcXVhbnQgcHLpY2lwaXRhbW1lbnQgc3VyIGxlCiAgICAgICAgICBib3V0b24gJ1N0b3AnLgoKICAgICAgQ1EgIExlIGNsaWVudCBhIGFiYW5kb25u6SBhbG9ycyBxdWUgc2Egc2Vzc2lvbiDpdGFpdCBtaXNlIGVuIGZpbGUKICAgICAgICAgIGQnYXR0ZW50ZSBwb3VyIG9idGVuaXIgdW4gc2VydmV1ciBhdmVjIHN1ZmZpc2FtbWVudCBkZSBjb25uZXhpb25zCiAgICAgICAgICBsaWJyZXMgcG91ciBsJ2FjY2VwdGVyLiBDZWxhIHNpZ25pZmllIHNvaXQgcXVlIGwnZW5zZW1ibGUgZGVzCiAgICAgICAgICBzZXJ2ZXVycyDpdGFpZW50IHNhdHVy6XMsIHNvaXQgcXVlIGxlIHNlcnZldXIgYXNzaWdu6SBhIG1pcyB0cm9wIGRlCiAgICAgICAgICB0ZW1wcyDgIHLpcG9uZHJlLgoKICAgICAgQ1QgIExlIGNsaWVudCBhIGFiYW5kb25u6SBhbG9ycyBxdWUgc2Egc2Vzc2lvbiDpdGFpdCBibG9xdellIGVuIG1vZGUKICAgICAgICAgIHRhcnBpdC4KCiAgICAgIHNRICBMYSBzZXNzaW9uIGEgYXR0ZW5kdSB0cm9wIGxvbmd0ZW1wcyBlbiBmaWxlIGQnYXR0ZW50ZSBldCBhIOl06QogICAgICAgICAgZXhwaXLpZS4KCiAgICAgIFNIICBMZSBzZXJ2ZXVyIGEgYWJvcnTpIGJydXRhbGVtZW50IGFsb3JzIHF1J2lsIGRldmFpdCBlbnZveWVyIHNlcwogICAgICAgICAgZW4tdOp0ZXMuIEVuIGfpbulyYWwsIGNlbGEgaW5kaXF1ZSBxdSdpbCBhIGNyYXNo6S4KCiAgICAgIHNIICBMZSBzZXJ2ZXVyIG4nYSBwYXMgcHUgculwb25kcmUgZHVyYW50IGxlIHRlbXBzIGltcGFydGksIGNlIHF1aSBtb250cmUKICAgICAgICAgIGRlcyB0cmFuc2FjdGlvbnMgdHJvcCBsb25ndWVzLCBwcm9iYWJsZW1lbnQgY2F1c+llcyBwYXIgdW4gYmFjay1lbmQKICAgICAgICAgIHNhdHVy6S4gTGVzIHNldWxlcyBzb2x1dGlvbnMgc29udCBkZSBjb3JyaWdlciBsZSBwcm9ibOhtZSBzdXIKICAgICAgICAgIGwnYXBwbGljYXRpb24sIGQnYWNjcm/udHJlIGxlIHBhcmFt6HRyZSAnc3J2dGltZW91dCcgcG91ciBzdXBwb3J0ZXIKICAgICAgICAgIGRlcyBhdHRlbnRlcyBwbHVzIGxvbmd1ZXMgYXUgcmlzcXVlIHF1ZSBsZXMgY2xpZW50cyBhYmFuZG9ubmVudCDgCiAgICAgICAgICBsZXVyIHRvdXIsIG91IGJpZW4gZCdham91dGVyIGRlcyBzZXJ2ZXVycy4KICAgICAgCiAgICAgIFBSICBMZSBwcm94eSBhIGJsb3F16SB1bmUgcmVxdep0ZSBkdSBjbGllbnQsIHNvaXQg4CBjYXVzZSBkJ3VuZSBzeW50YXhlCiAgICAgICAgICBIVFRQIGludmFsaWRlLCBhdXF1ZWwgY2FzIGlsIGEgcmVudm956SB1bmUgZXJyZXVyIEhUVFAgNDAwIGF1IGNsaWVudCwKICAgICAgICAgIHNvaXQg4CBjYXVzZSBkJ3VuZSByZXF16nRlIHZhbGlkYW50IHVuIGZpbHRyZSBkJ2ludGVyZGljdGlvbiwgYXVxdWVsCiAgICAgICAgICBjYXMgbGUgcHJveHkgYSByZW52b3npIHVuZSBlcnJldXIgSFRUUCA0MDMuCgogICAgICBQSCAgTGUgcHJveHkgYSBibG9xdekgbGEgculwb25zZSBkdSBzZXJ2ZXVyIHBhcmNlIHF1J2VsbGUg6XRhaXQgaW52YWxpZGUsCiAgICAgICAgICBpbmNvbXBs6HRlLCBkYW5nZXJldXNlICgnY2FjaGUgY29udHJvbCcpLCBvdSBwYXJjZSBxdSdlbGxlIHZhbGlkYWl0CiAgICAgICAgICB1biBmaWx0cmUgZGUgc+ljdXJpdOkuIERhbnMgdG91cyBsZXMgY2FzLCB1bmUgZXJyZXVyIEhUVFAgNTAyIGVzdAogICAgICAgICAgcmVudm956WUgYXUgY2xpZW50LgoKICAgICAgUFQgIExlIHByb3h5IGEgYmxvcXXpIHVuZSByZXF16nRlIGR1IGNsaWVudCBldCBhIG1haW50ZW51IHNhIGNvbm5lY3Rpb24KICAgICAgICAgIG91dmVydGUgYXZhbnQgZGUgbHVpIHJldG91cm5lciB1bmUgZXJyZXVyICI1MDAgc2VydmVyIGVycm9yIi4gUmllbgogICAgICAgICAgbidhIOl06SBlbnZveekgYXUgc2VydmV1ci4KCiAgICAgIGNEICBMZSBjbGllbnQgbidhIHBhcyBsdSBkZSBkb25u6WVzIHBlbmRhbnQgbGUgdGVtcHMgcXVpIGx1aSDpdGFpdAogICAgICAgICAgaW1wYXJ0aS4gQ2VjaSBlc3Qgc291dmVudCBjYXVz6SBwYXIgZGVzIHByb2Js6G1lcyBy6XNlYXUgY/R06SBjbGllbnQuCgogICAgICBDRCAgTGUgY2xpZW50IGEgYWJvcnTpIHNhIGNvbm5lY3Rpb24gZGUgbWFuaehyZSBpbmF0dGVuZHVlIHBlbmRhbnQgbGUKICAgICAgICAgIHRyYW5zZmVydCBkZXMgZG9ubullcy4gQ2VjaSBlc3QgcHJvdm9xdekgc29pdCBwYXIgbGUgY3Jhc2ggZCd1bgogICAgICAgICAgbmF2aWdhdGV1ciwgb3UgcGFyIHVuZSBzZXNzaW9uIGVuIEhUVFAga2VlcC1hbGl2ZSBlbnRyZSBsZSBzZXJ2ZXVyCiAgICAgICAgICBldCBsZSBjbGllbnQgdGVybWlu6WUgZW4gcHJlbWllciBwYXIgbGUgY2xpZW50LgoKICAgICAgc0QgIExlIHNlcnZldXIgbidhIHJpZW4gZmFpdCBkdXJhbnQgbGUgdGVtcHMgaW1wYXJ0aSBwYXIgbGUgcGFyYW3odHJlCiAgICAgICAgICAnc3J2dGltZW91dCcuIENlY2kgZXN0IHNvdXZlbnQgY2F1c+kgcGFyIGRlcyB0aW1lb3V0cyB0cm9wIGNvdXJ0cwogICAgICAgICAgc3VyIGRlcyDpcXVpcGVtZW50cyBkZSBuaXZlYXUgNCAoZmlyZXdhbGxzLCBy6XBhcnRpdGV1cnMgZGUgY2hhcmdlKQogICAgICAgICAgc2l0delzIGVudHJlIGxlIHByb3h5IGV0IGxlIHNlcnZldXIuCgo0LjIuNSkgQ2FyYWN06HJlcyBub24taW1wcmltYWJsZXMKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkRlcHVpcyBsYSB2ZXJzaW9uIDEuMS4yOSwgbGVzIGNhcmFjdOhyZXMgbm9uLWltcHJpbWFibGVzIG5lIHNvbnQgcGx1cyBlbnZveelzCnRlbHMgcXVlbHMgZGFucyBsZXMgbGlnbmVzIGRlIGxvZ3MsIG1haXMgaW5zY3JpdHMgc291cyBsYSBmb3JtZSBkZSBkZXV4IGNoaWZmcmVzCmhleGFk6WNpbWF1eCwgcHLpZml46XMgZHUgY2FyYWN06HJlIGQn6WNoYXBwZW1lbnQgJyMnLiBMZXMgc2V1bHMgY2FyYWN06HJlcwpkb3LpbmF2YW50IGxvZ3XpcyB0ZWxzIHF1ZWxzIHNvbnQgY29tcHJpcyBlbnRyZSAzMiBldCAxMjYuIEJpZW4g6XZpZGVtbWVudCwgbGUKY2FyYWN06HJlIGQn6WNoYXBwZW1lbnQgJyMnIGVzdCBsdWktbeptZSBlbmNvZOkgYWZpbiBkZSBsZXZlciBsJ2FtYmlndWl06S4gSWwgZW4KZXN0IGRlIG3qbWUgcG91ciBsZSBjYXJhY3TocmUgJyInLCBhaW5zaSBxdWUgbGVzIGNhcmFjdOhyZXMgJ3snLCAnfCcgZXQgJ30nIHBvdXIKbGVzIGVuLXTqdGVzLgoKNC4yLjYpIENhcHR1cmUgZCdlbi106nRlcyBIVFRQIGV0IGRlIGNvb2tpZXMKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KTGEgdmVyc2lvbiAxLjEuMjMgYSBhcHBvcnTpIGxhIGNhcHR1cmUgZGVzIGNvb2tpZXMsIGV0IGxhIHZlcnNpb24gMS4xLjI5IGxhCmNhcHR1cmUgZCdlbi106nRlcy4gVG91dCBjZWNpIGVzdCBlZmZlY3R16SBlbiB1dGlsaXNhbnQgbGUgbW90LWNs6SAnY2FwdHVyZScuCgpMZXMgY2FwdHVyZXMgZGUgY29va2llcyBmYWNpbGl0ZW50IGxlIHN1aXZpIGV0IGxhIHJlY29uc3RpdHV0aW9uIGQndW5lIHNlc3Npb24KdXRpbGlzYXRldXIuIExhIHN5bnRheGUgZXN0IGxhIHN1aXZhbnRlIDoKCiAgICBjYXB0dXJlIGNvb2tpZSA8cHLpZml4ZV9jb29raWU+IGxlbiA8bG9uZ3VldXJfY2FwdHVyZT4KCkNlY2kgYWN0aXZlcmEgbGEgY2FwdHVyZSBkZSBjb29raWVzIOAgbGEgZm9pcyBkYW5zIGxlcyByZXF16nRlcyBldCBkYW5zIGxlcwpy6XBvbnNlcy4gRGUgY2V0dGUgbWFuaehyZSwgaWwgZGV2aWVudCBmYWNpbGUgZGUgZOl0ZWN0ZXIgbG9yc3F1J3VuIHV0aWxpc2F0ZXVyCmJhc2N1bGUgc3VyIHVuZSBub3V2ZWxsZSBzZXNzaW9uIHBhciBleGVtcGxlLCBjYXIgbGUgc2VydmV1ciBsdWkgculhc3NpZ25lcmEgdW4Kbm91dmVhdSBjb29raWUuCgpMZSBwcmVtaWVyIGNvb2tpZSBkb250IGxlIG5vbSBjb21tZW5jZXJhIHBhciA8cHLpZml4ZV9jb29raWU+IHNlcmEgY2FwdHVy6SwgZXQKdHJhbnNtaXMgc291cyBsYSBmb3JtZSAiTk9NPXZhbGV1ciIsIHNhbnMgdG91dGVmb2lzLCBleGPpZGVyIDxsb25ndWV1cl9jYXB0dXJlPgpjYXJhY3TocmVzICg2NCBhdSBtYXhpbXVtKS4gTG9yc3F1ZSBsZSBub20gZHUgY29va2llIGVzdCBmaXhlIGV0IGNvbm51LCBvbiBwZXV0CmxlIHN1ZmZpeGVyIGR1IHNpZ25lICI9IiBwb3VyIHMnYXNzdXJlciBxdSdhdWN1biBhdXRyZSBjb29raWUgbmUgcHJlbmRyYSBzYQpwbGFjZSBkYW5zIGxlcyBsb2dzLgoKRXhlbXBsZXMgOgotLS0tLS0tLS0tCiAgICAjIGNhcHR1cmUgZHUgcHJlbWllciBjb29raWUgZG9udCBsZSBub20gY29tbWVuY2UgcGFyICJBU1BTRVNTSU9OIgogICAgY2FwdHVyZSBjb29raWUgQVNQU0VTU0lPTiBsZW4gMzIKCiAgICAjIGNhcHR1cmUgZHUgcHJlbWllciBjb29raWUgZG9udCBsZSBub20gZXN0IGV4YWN0ZW1lbnQgInZnbnZpc2l0b3IiCiAgICBjYXB0dXJlIGNvb2tpZSB2Z252aXNpdG9yPSBsZW4gMzIKCkRhbnMgbGVzIGxvZ3MsIGxlIGNoYW1wIHBy6WPpZGFudCBsJ2luZGljYXRldXIgZGUgY29tcGzpdHVkZSBjb250aWVudCBsZSBjb29raWUKcG9zaXRpb25u6SBwYXIgbGUgc2VydmV1ciwgcHLpY+lk6SBkdSBjb29raWUgcG9zaXRpb25u6SBwYXIgbGUgY2xpZW50LiBDaGFjdW4KZGUgY2VzIGNoYW1wcyBlc3QgcmVtcGxhY+kgcGFyIGxlIHNpZ25lICItIiBsb3JzcXUnYXVjdW4gY29va2llIG4nZXN0IGZvdXJuaQpwYXIgbGUgY2xpZW50IG91IGxlIHNlcnZldXIsIG91IGxvcnNxdWUgbCdvcHRpb24gZXN0IGTpc2FjdGl26WUuLgoKTGVzIGNhcHR1cmVzIGQnZW4tdOp0ZXMgb250IHVuIHL0bGUgY29tcGzodGVtZW50IGRpZmbpcmVudC4gRWxsZXMgc29udCB1dGlsZXMKcG91ciBzdWl2cmUgdW4gaWRlbnRpZmlhbnQgZGUgcmVxdep0ZSBnbG9iYWxlbWVudCB1bmlxdWUgcG9zaXRpb25u6SBwYXIgdW4KYXV0cmUgcHJveHkgZW4gYW1vbnQsIHBvdXIgam91cm5hbGlzZXIgbGVzIG5vbXMgZGUgc2VydmV1cnMgdmlydHVlbHMsIGxlcyB0eXBlcwpkZSBjbGllbnRzIHdlYiwgbGEgbG9uZ3VldXIgZGVzIFBPU1QsIGxlcyAncmVmZXJyZXJzJywgZXRjLiBEYW5zIGxhIHLpcG9uc2UsIG9uCnBldXQgY2hlcmNoZXIgZGVzIGluZm9ybWF0aW9ucyByZWxhdGl2ZXMg4CBsYSBsb25ndWV1ciBhbm5vbmPpZSBkZSBsYSBy6XBvbnNlLApsZSBmb25jdGlvbm5lbWVudCBhdHRlbmR1IGR1IGNhY2hlLCBvdSBlbmNvcmUgbGEgbG9jYWxpc2F0aW9uIGQndW4gb2JqZXQgZW4gY2FzCmRlIHJlZGlyZWN0aW9uLiBUb3V0IGNvbW1lIHBvdXIgbGVzIGNhcHR1cmVzIGRlIGNvb2tpZXMsIGlsIGVzdCBwb3NzaWJsZQpkJ2luY2x1cmUgbGVzIGVuLXTqdGVzIGRlIHJlcXXqdGVzIGV0IGRlIHLpcG9uc2Ugc2ltdWx0YW7pbWVudC4gTGEgc3ludGF4ZSBlc3QKbGEgc3VpdmFudGUgOgoKICAgIGNhcHR1cmUgcmVxdWVzdCAgaGVhZGVyIDxub20+IGxlbiA8bG9uZ3VldXIgbWF4PgogICAgY2FwdHVyZSByZXNwb25zZSBoZWFkZXIgPG5vbT4gbGVuIDxsb25ndWV1ciBtYXg+CgpOb3RlOiBMZXMgbm9tcyBkJ2VuLXTqdGVzIG5lIHNvbnQgcGFzIHNlbnNpYmxlcyDgIGxhIGNhc3NlLgoKRXhlbXBsZXM6Ci0tLS0tLS0tLQogICAgIyBjb25zZXJ2ZXIgbGUgbm9tIGR1IHNlcnZldXIgdmlydHVlbCBhY2PpZOkgcGFyIGxlIGNsaWVudAogICAgY2FwdHVyZSByZXF1ZXN0ICBoZWFkZXIgSG9zdCBsZW4gMjAKICAgICMgbm90ZXIgbGEgbG9uZ3VldXIgZGVzIGRvbm7pZXMgZW52b3npZXMgZGFucyB1biBQT1NUCiAgICBjYXB0dXJlIHJlcXVlc3QgIGhlYWRlciBDb250ZW50LUxlbmd0aCBsZW4gMTAKCiAgICAjIG5vdGVyIGxlIGZvbmN0aW9ubmVtZW50IGF0dGVuZHUgZHUgY2FjaGUgcGFyIGxlIHNlcnZldXIKICAgIGNhcHR1cmUgcmVzcG9uc2UgaGVhZGVyIENhY2hlLUNvbnRyb2wgbGVuIDgKICAgICMgbm90ZXIgbCdVUkwgZGUgcmVkaXJlY3Rpb24KICAgIGNhcHR1cmUgcmVzcG9uc2UgaGVhZGVyIExvY2F0aW9uIGxlbiAyMAoKTGVzIGVuLXTqdGVzIG5vbiB0cm91dulzIHNvbnQgbG9ndelzIOAgdmlkZSwgZXQgc2kgdW4gZW4tdOp0ZSBhcHBhcmFpdCBwbHVzaWV1cnMKZm9pcywgc2V1bGUgbGEgZGVybmnocmUgb2NjdXJlbmNlIHNlcmEgY29uc2VydullLiBMZXMgZW4tdOp0ZXMgZGUgcmVxdep0ZSBzb250CnJlZ3JvdXDpcyBlbnRyZSBkZXV4IGFjY29sYWRlcyAneycgZXQgJ30nIGRhbnMgbCdvcmRyZSBkZSBsZXVyIGTpY2xhcmF0aW9uLCBldApjaGFjdW4gc+lwYXLpcyBwYXIgdW5lIGJhcnJlIHZlcnRpY2FsZSAnfCcsIHNhbnMgYXVjdW4gZXNwYWNlLiBMZXMgZW4tdOp0ZXMgZGUKculwb25zZSBzb250IHBy6XNlbnTpcyBkZSBsYSBt6m1lIG1hbmnocmUsIG1haXMgYXBy6HMgdW4gZXNwYWNlIHN1aXZhbnQgbGUgYmxvYwpkJ2VuLXTqdGUgZGUgcmVxdep0ZS4gTGUgdG91dCBwculj6GRlIGxhIHJlcXXqdGUgSFRUUC4gRXhlbXBsZSA6CgogIENvbmZpZzoKCiAgICBjYXB0dXJlIHJlcXVlc3QgIGhlYWRlciBIb3N0IGxlbiAyMAogICAgY2FwdHVyZSByZXF1ZXN0ICBoZWFkZXIgQ29udGVudC1MZW5ndGggbGVuIDEwCiAgICBjYXB0dXJlIHJlcXVlc3QgIGhlYWRlciBSZWZlcmVyIGxlbiAyMAogICAgY2FwdHVyZSByZXNwb25zZSBoZWFkZXIgU2VydmVyIGxlbiAyMAogICAgY2FwdHVyZSByZXNwb25zZSBoZWFkZXIgQ29udGVudC1MZW5ndGggbGVuIDEwCiAgICBjYXB0dXJlIHJlc3BvbnNlIGhlYWRlciBDYWNoZS1Db250cm9sIGxlbiA4CiAgICBjYXB0dXJlIHJlc3BvbnNlIGhlYWRlciBWaWEgbGVuIDIwCiAgICBjYXB0dXJlIHJlc3BvbnNlIGhlYWRlciBMb2NhdGlvbiBsZW4gMjAKCiAgTG9nIDoKCiAgICBBdWcgIDkgMjA6MjY6MDkgbG9jYWxob3N0IGhhcHJveHlbMjAyMl06IDEyNy4wLjAuMTozNDAxNCBbMDkvQXVnLzIwMDQ6MjA6MjY6MDldIHJlbGFpcy1odHRwIG5ldGNhY2hlIDAvMC8wLzE2Mi8rMTYyIDIwMCArMzUwIC0gLSAtLS0tIDAvMC8wIDAvMCB7ZnIuYWRzZXJ2ZXIueWFob28uY298fGh0dHA6Ly9mci5mNDE2Lm1haWwufSB7fDg2NHxwcml2YXRlfHx9ICJHRVQgaHR0cDovL2ZyLmFkc2VydmVyLnlhaG9vLmNvbS8iCiAgICBBdWcgIDkgMjA6MzA6NDYgbG9jYWxob3N0IGhhcHJveHlbMjAyMl06IDEyNy4wLjAuMTozNDAyMCBbMDkvQXVnLzIwMDQ6MjA6MzA6NDZdIHJlbGFpcy1odHRwIG5ldGNhY2hlIDAvMC8wLzE4Mi8rMTgyIDIwMCArMjc5IC0gLSAtLS0tIDAvMC8wIDAvMCB7dy5vZHMub3JnfHx9IHtGb3JtaWx1eC8wLjEuOHwzNDk1fHx8fSAiR0VUIGh0dHA6Ly93Lm9kcy5vcmcvc3l0YWRpbi5odG1sIEhUVFAvMS4xIiAKICAgIEF1ZyAgOSAyMDozMDo0NiBsb2NhbGhvc3QgaGFwcm94eVsyMDIyXTogMTI3LjAuMC4xOjM0MDI4IFswOS9BdWcvMjAwNDoyMDozMDo0Nl0gcmVsYWlzLWh0dHAgbmV0Y2FjaGUgMC8wLzIvMTI2LysxMjggMjAwICsyMjMgLSAtIC0tLS0gMC8wLzAgMC8wIHt3d3cuaW5mb3RyYWZpYy5jb218fGh0dHA6Ly93Lm9kcy5vcmcvc3l0fSB7QXBhY2hlLzIuMC40MCAoUmVkIEh8OTA2OHx8fH0gIkdFVCBodHRwOi8vd3d3LmluZm90cmFmaWMuY29tL2ltYWdlcy9saXZlL2NhcnRlc2lkZi9ncmFuZGVzL2lkZl9uZS5wbmcgSFRUUC8xLjEiIAoKNC4yLjcpIEV4ZW1wbGVzIGRlIGxvZ3MKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSBoYXByb3h5WzY3NF06IDEyNy4wLjAuMTozMzMxOSBbMTUvT2N0LzIwMDM6MDg6MzE6NTddIHJlbGFpcy1odHRwIFNydjEgNjU1OS8wLzcvMTQ3LzY3MjMgMjAwIDI0MyAtIC0gLS0tLSAxLzMvNSAgMC8wIkhFQUQgLyBIVFRQLzEuMCIKICA9PiByZXF16nRlIGxvbmd1ZSAoNi41cykgc2Fpc2llIOAgbGEgbWFpbiBhdmVjIHVuIGNsaWVudCB0ZWxuZXQuIExlIHNlcnZldXIgYQogICAgIHLpcG9uZHUgZW4gMTQ3IG1zIGV0IGxhIHNlc3Npb24gcydlc3QgdGVybWlu6WUgbm9ybWFsZW1lbnQgKCctLS0tJykKCi0gaGFwcm94eVs2NzRdOiAxMjcuMC4wLjE6MzMzMTkgWzE1L09jdC8yMDAzOjA4OjMxOjU3XSByZWxhaXMtaHR0cCBTcnYxIDY1NTkvMTIzMC83LzE0Ny82ODcwIDIwMCAyNDMgLSAtIC0tLS0gOTkvMjM5LzMyNCAwLzkgIkhFQUQgLyBIVFRQLzEuMCIKICA9PiBJZGVtLCBtYWlzIGxhIHJlcXXqdGUgYSDpdOkgbWlzZSBlbiBhdHRlbnRlIGRhbnMgbGEgZmlsZSBnbG9iYWxlIGRlcnJp6HJlCiAgICAgOSBhdXRyZXMgcmVxdep0ZXMgZOlq4CBwculzZW50ZXMsIGV0IHkgYSBhdHRlbmR1IDEyMzAgbXMuCgotIGhhcHJveHlbNjc0XTogMTI3LjAuMC4xOjMzMzIwIFsxNS9PY3QvMjAwMzowODozMjoxN10gcmVsYWlzLWh0dHAgU3J2MSA5LzAvNy8xNC8rMzAgMjAwICsyNDMgLSAtIC0tLS0gMS8zLzMgMC8wICJHRVQgL2ltYWdlLmlzbyBIVFRQLzEuMCIKICA9PiByZXF16nRlIHBvdXIgdW4gbG9uZyB0cmFuc2ZlcnQuIEwnb3B0aW9uICdsb2dhc2FwJyDpdGFpdCBzcOljaWZp6WUgZG9uYyBsZQogICAgIGxvZyBhIOl06SBn6W7pcukganVzdGUgYXZhbnQgbGUgdHJhbnNmZXJ0IGRlIGRvbm7pZXMuIExlIHNlcnZldXIgYSBy6XBvbmR1CiAgICAgZW4gMTQgbXMsIDI0MyBvY3RldHMgZCdlbi106nRlcyBvbnQg6XTpIHRyYW5zZuly6XMgYXUgY2xpZW50LCBldCBsZSB0ZW1wcwogICAgIHRvdGFsIGVudHJlIGwnYWNjZXB0KCkgZXQgbGUgcHJlbWllciBvY3RldCBkZSBkb25u6WUgZXN0IGRlIDMwIG1zLgoKLSBoYXByb3h5WzY3NF06IDEyNy4wLjAuMTozMzMyMCBbMTUvT2N0LzIwMDM6MDg6MzI6MTddIHJlbGFpcy1odHRwIFNydjEgOS8wLzcvMTQvMzAgNTAyIDI0MyAtIC0gUEgtLSAwLzIvMyAwLzAgIkdFVCAvY2dpLWJpbi9idWcuY2dpPyBIVFRQLzEuMCIKICA9PiBsZSBwcm94eSBhIGJsb3F16SB1bmUgculwb25zZSBkdSBzZXJ2ZXVyIHNvaXQg4CBjYXVzZSBkJ3VuIGZpbHRyZSAncnNwZGVueScKICAgICBvdSAncnNwaWRlbnknLCBzb2l0IHBhcmNlIHF1J2lsIGEgZOl0ZWN06SB1biByaXNxdWUgZGUgZnVpdGUgc2Vuc2libGUKICAgICBkJ2luZm9ybWF0aW9ucyByaXNxdWFudCBkJ+p0cmUgY2FjaOllcy4gRGFucyBjZSBjYXMsIGxhIHLpcG9uc2UgZXN0CiAgICAgcmVtcGxhY+llIHBhciAnNTAyIGJhZCBnYXRld2F5Jy4KCi0gaGFwcm94eVsxODExM106IDEyNy4wLjAuMTozNDU0OCBbMTUvT2N0LzIwMDM6MTU6MTg6NTVdIHJlbGFpcy1odHRwIDxOT1NSVj4gLTEvLTEvLTEvLTEvODQ5MCAtMSAwIC0gLSBDUi0tIDAvMi8yIDAvMCAiIiAKICA9PiBMZSBjbGllbnQgbidhIHBhcyBlbnZveekgc2EgcmVxdep0ZSBldCBhIHJlZmVybekgbGEgY29ubmV4aW9uIGx1aS1t6m1lCiAgICAgKCdDLS0tJykgYXUgYm91dCBkZSA4LjVzLCBhbG9ycyBxdWUgbGUgcmVsYWlzIGF0dGVuZGFpdCBsJ2VuLXTqdGUgKCctUi0tJykuCiAgICAgQXVjdW5lIGNvbm5leGlvbiBuJ2Eg6XTpIGVudm956WUgdmVycyBsZSBzZXJ2ZXVyLgoKLSBoYXByb3h5WzE4MTEzXTogMTI3LjAuMC4xOjM0NTQ5IFsxNS9PY3QvMjAwMzoxNToxOTowNl0gcmVsYWlzLWh0dHAgPE5PU1JWPiAtMS8tMS8tMS8tMS81MDAwMSA0MDggMCAtIC0gY1ItLSAwLzIvMiAwLzAgIiIgCiAgPT4gTGUgY2xpZW50IG4nYSBwYXMgZW52b3npIHNhIHJlcXXqdGUgZXQgc29uIHRpbWUtb3V0IGEgZXhwaXLpICgnYy0tLScpIGF1CiAgICAgYm91dCBkZSA1MHMsIGFsb3JzIHF1ZSBsZSByZWxhaXMgYXR0ZW5kYWl0IGwnZW4tdOp0ZSAoJy1SLS0nKS4gQXVjdW5lCiAgICAgY29ubmV4aW9uIG4nYSDpdOkgZW52b3npZSB2ZXJzIGxlIHNlcnZldXIsIG1haXMgbGUgcmVsYWlzIGEgdG91dCBkZSBt6m1lCiAgICAgcHUgcmVudm95ZXIgdW4gbWVzc2FnZSA0MDggYXUgY2xpZW50LgoKLSBoYXByb3h5WzE4OTg5XTogMTI3LjAuMC4xOjM0NTUwIFsxNS9PY3QvMjAwMzoxNToyNDoyOF0gcmVsYWlzLXRjcCBTcnYxIDAvNTAwNyAwIGNECiAgPT4gbG9nIGVuIG1vZGUgJ3RjcGxvZycuIEV4cGlyYXRpb24gZHUgdGltZS1vdXQgY/R06SBjbGllbnQgKCdjRCcpIGF1IGJvdXQgZGUKICAgICA1cy4KCi0gaGFwcm94eVsxODk4OV06IDEwLjAuMC4xOjM0NTUyIFsxNS9PY3QvMjAwMzoxNToyNjozMV0gcmVsYWlzLWh0dHAgU3J2MSAzMTgzLy0xLy0xLy0xLzExMjE1IDUwMyAwIC0gLSBTQy0tIDExNS8yMDIvMjA1IDAvMCAiSEVBRCAvIEhUVFAvMS4wIiAKICA9PiBMYSByZXF16nRlIGNsaWVudCBtZXQgM3Mg4CBlbnRyZXIgKHBldXQt6nRyZSB1biBwcm9ibOhtZSBy6XNlYXUpLCBldCBsYQogICAgIGNvbm5leGlvbiAoJ1NDLS0nKSB2ZXJzIGxlIHNlcnZldXIg6WNob3VlIGF1IGJvdXQgZGUgNCB0ZW50YXRpdmVzIGRlIDIKICAgICBzZWNvbmRlcyAocmV0cmllcyAzIGRhbnMgbGEgY29uZiksIHB1aXMgdW4gY29kZSA1MDMgZXN0IHJldG91cm7pIGF1CiAgICAgY2xpZW50LiBJbCB5IGF2YWl0IDExNSBjb25uZXhpb25zIHN1ciBjZSBzZXJ2ZXVyLCAyMDIgY29ubmV4aW9ucyBzdXIgY2V0dGUKICAgICBpbnN0YW5jZSwgZXQgMjA1IHN1ciBsJ2Vuc2VtYmxlIGRlcyBpbnN0YW5jZXMgcG91ciBjZSBwcm9jZXNzdXMuIElsIGVzdAogICAgIHBvc3NpYmxlIHF1ZSBsZSBzZXJ2ZXVyIGFpdCByZWZ1c+kgbGEgY29ubmV4aW9uIHBhcmNlIHF1J2lsIHkgZW4gYXZhaXQKICAgICBk6WrgIHRyb3AgZCfpdGFibGllcy4KCgo0LjMpIE1vZGlmaWNhdGlvbiBkZXMgZW4tdOp0ZXMgSFRUUAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkVuIG1vZGUgSFRUUCB1bmlxdWVtZW50LCBpbCBlc3QgcG9zc2libGUgZGUgcmVtcGxhY2VyIGNlcnRhaW5zIGVuLXTqdGVzIGRhbnMgbGEKcmVxdep0ZSBldC9vdSBsYSBy6XBvbnNlIOAgcGFydGlyIGQnZXhwcmVzc2lvbnMgculndWxp6HJlcy4gSWwgZXN0IOlnYWxlbWVudApwb3NzaWJsZSBkZSBibG9xdWVyIGNlcnRhaW5lcyByZXF16nRlcyBlbiBmb25jdGlvbiBkdSBjb250ZW51IGRlcyBlbi106nRlcyBvdQpkZSBsYSByZXF16nRlLiBVbmUgbGltaXRhdGlvbiBjZXBlbmRhbnQgOiBsZXMgZW4tdOp0ZXMgZm91cm5pcyBhdSBtaWxpZXUgZGUKY29ubmV4aW9ucyBwZXJzaXN0ZW50ZXMgKGtlZXAtYWxpdmUpIG5lIHNvbnQgcGFzIHZ1cyBjYXIgaWxzIHNvbnQgY29uc2lk6XLpcwpjb21tZSBmYWlzYW50IHBhcnRpZSBkZXMg6WNoYW5nZXMgZGUgZG9ubullcyBjb25z6WN1dGlmcyDgIGxhIHByZW1p6HJlIHJlcXXqdGUuCkxlcyBkb25u6WVzIG5lIHNvbnQgcGFzIGFmZmVjdOllcywgY2VjaSBuZSBzJ2FwcGxpcXVlIHF1J2F1eCBlbi106nRlcy4gCgpMYSBzeW50YXhlIGVzdCA6CiAgIHJlcWFkZCAgICA8c3RyaW5nPiAgICAgICAgICAgICBwb3VyIGFqb3V0ZXIgdW4gZW4tdOp0ZSBkYW5zIGxhIHJlcXXqdGUKICAgcmVxcmVwICAgIDxzZWFyY2g+IDxyZXBsYWNlPiAgIHBvdXIgbW9kaWZpZXIgbGEgcmVxdep0ZQogICByZXFpcmVwICAgPHNlYXJjaD4gPHJlcGxhY2U+ICAgaWRlbSBzYW5zIGRpc3RpbmN0aW9uIG1hanVzY3VsZXMvbWludXNjdWxlcwogICByZXFkZWwgICAgPHNlYXJjaD4gICAgICAgICAgICAgcG91ciBzdXBwcmltZXIgdW4gZW4tdOp0ZSBkYW5zIGxhIHJlcXXqdGUKICAgcmVxaWRlbCAgIDxzZWFyY2g+ICAgICAgICAgICAgIGlkZW0gc2FucyBkaXN0aW5jdGlvbiBtYWp1c2N1bGVzL21pbnVzY3VsZXMKICAgcmVxYWxsb3cgIDxzZWFyY2g+ICAgICAgICAgICAgIGF1dG9yaXNlciBsYSByZXF16nRlIHNpIHVuIGVuLXTqdGUgdmFsaWRlIDxzZWFyY2g+CiAgIHJlcWlhbGxvdyA8c2VhcmNoPiAgICAgICAgICAgICBpZGVtIHNhbnMgZGlzdGluY3Rpb24gbWFqdXNjdWxlcy9taW51c2N1bGVzCiAgIHJlcWRlbnkgICA8c2VhcmNoPiAgICAgICAgICAgICBpbnRlcmRpcmUgbGEgcmVxdep0ZSBzaSB1biBlbi106nRlIHZhbGlkZSA8c2VhcmNoPgogICByZXFpZGVueSAgPHNlYXJjaD4gICAgICAgICAgICAgaWRlbSBzYW5zIGRpc3RpbmN0aW9uIG1hanVzY3VsZXMvbWludXNjdWxlcwogICByZXFwYXNzICAgPHNlYXJjaD4gICAgICAgICAgICAgaW5oaWJlIGNlcyBhY3Rpb25zIHN1ciBsZXMgZW4tdOp0ZXMgdmFsaWRhbnQgPHNlYXJjaD4KICAgcmVxaXBhc3MgIDxzZWFyY2g+ICAgICAgICAgICAgIGlkZW0gc2FucyBkaXN0aW5jdGlvbiBtYWp1c2N1bGVzL21pbnVzY3VsZXMKICAgcmVxdGFycGl0IDxzZWFyY2g+ICAgICAgICAgICAgIGJsb3F1ZXIgZXQgbWFpbnRlbmlyIHVuZSByZXF1ZXN0IHZhbGlkYW50IDxzZWFyY2g+CiAgIHJlcWl0YXJwaXQgPHNlYXJjaD4gICAgICAgICAgICBpZGVtIHNhbnMgZGlzdGluY3Rpb24gbWFqdXNjdWxlcy9taW51c2N1bGVzCgogICByc3BhZGQgICA8c3RyaW5nPiAgICAgICAgICAgICAgcG91ciBham91dGVyIHVuIGVuLXTqdGUgZGFucyBsYSBy6XBvbnNlCiAgIHJzcHJlcCAgIDxzZWFyY2g+IDxyZXBsYWNlPiAgICBwb3VyIG1vZGlmaWVyIGxhIHLpcG9uc2UKICAgcnNwaXJlcCAgPHNlYXJjaD4gPHJlcGxhY2U+ICAgIGlkZW0gc2FucyBkaXN0aW5jdGlvbiBtYWp1c2N1bGVzL21pbnVzY3VsZXMKICAgcnNwZGVsICAgPHNlYXJjaD4gICAgICAgICAgICAgIHBvdXIgc3VwcHJpbWVyIHVuIGVuLXTqdGUgZGFucyBsYSBy6XBvbnNlCiAgIHJzcGlkZWwgIDxzZWFyY2g+ICAgICAgICAgICAgICBpZGVtIHNhbnMgZGlzdGluY3Rpb24gbWFqdXNjdWxlcy9taW51c2N1bGVzCiAgIHJzcGRlbnkgIDxzZWFyY2g+ICAgICAgICAgICAgICByZW1wbGFjZSBsYSBy6XBvbnNlIHBhciB1biBIVFRQIDUwMiBzaSB1bgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW4tdOp0ZSB2YWxpZGUgPHNlYXJjaD4KICAgcnNwaWRlbnkgPHNlYXJjaD4gICAgICAgICAgICAgIGlkZW0gc2FucyBkaXN0aW5jdGlvbiBtYWp1c2N1bGVzL21pbnVzY3VsZXMKCgo8c2VhcmNoPiBlc3QgdW5lIGV4cHJlc3Npb24gculndWxp6HJlIGNvbXBhdGlibGUgUE9TSVggcmVnZXhwIHN1cHBvcnRhbnQgbGUKZ3JvdXBhZ2UgcGFyIHBhcmVudGjoc2VzIChzYW5zIGxlcyAnXCcpLiBMZXMgZXNwYWNlcyBldCBhdXRyZXMgc+lwYXJhdGV1cnMKZG9pdmVudCDqdHJlcyBwculj6WTpcyBkJ3VuICdcJyBwb3VyIG5lIHBhcyDqdHJlIGNvbmZvbmR1cyBhdmVjIGxhIGZpbiBkZSBsYQpjaGHubmUuIERlIHBsdXMsIGNlcnRhaW5zIGNhcmFjdOhyZXMgc3DpY2lhdXggcGV1dmVudCDqdHJlIHBy6WPpZOlzIGQndW4KYmFja3NsYWNoICgnXCcpIDoKCiAgXHQgICBwb3VyIHVuZSB0YWJ1bGF0aW9uCiAgXHIgICBwb3VyIHVuIHJldG91ciBjaGFycmlvdAogIFxuICAgcG91ciB1biBzYXV0IGRlIGxpZ25lCiAgXCAgICBwb3VyIGRpZmbpcmVuY2llciB1biBlc3BhY2UgZCd1biBz6XBhcmF0ZXVyCiAgXCMgICBwb3VyIGRpZmbpcmVuY2llciB1biBkaehzZSBkJ3VuIGNvbW1lbnRhaXJlCiAgXFwgICBwb3VyIHV0aWxpc2VyIHVuIGJhY2tzbGFzaCBkYW5zIGxhIHJlZ2V4CiAgXFxcXCBwb3VyIHV0aWxpc2VyIHVuIGJhY2tzbGFzaCBkYW5zIGxlIHRleHRlCiAgXHhYWCBwb3VyIHVuIGNhcmFjdOhyZSBzcOljaWZpcXVlIFhYIChjb21tZSBlbiBDKQoKCjxyZXBsYWNlPiBjb250aWVudCBsYSBjaGHubmUgcmVtcGxh52FudCBsYSBwb3J0aW9uIHbpcmlmaellIHBhciBsJ2V4cHJlc3Npb24uCkVsbGUgcGV1dCBpbmNsdXJlIGxlcyBjYXJhY3TocmVzIHNw6WNpYXV4IGNpLWRlc3N1cywgZmFpcmUgculm6XJlbmNlIOAgdW4KZ3JvdXBlIGTpbGltaXTpIHBhciBkZXMgcGFyZW50aOhzZXMgZGFucyBsJ2V4cHJlc3Npb24gculndWxp6HJlLCBwYXIgc2EKcG9zaXRpb24gbnVt6XJhbGUuIExlcyBwb3NpdGlvbnMgdm9udCBkZSAwIOAgOSwgZXQgc29udCBjb2TpZXMgcGFyIHVuICdcJwpzdWl2aSBkdSBjaGlmZnJlIGTpc2ly6SAoMCBk6XNpZ25hbnQgbGEgbGlnbmUgY29tcGzodGUpLiBJbCBlc3Qg6WdhbGVtZW50CnBvc3NpYmxlIGQnaW5z6XJlciB1biBjYXJhY3TocmUgbm9uIGltcHJpbWFibGUgKHV0aWxlIHBvdXIgbGUgc2F1dCBkZSBsaWduZSkKaW5zY3JpdmFudCAnXHgnIHN1aXZpIGR1IGNvZGUgaGV4YWTpY2ltYWwgZGUgY2UgY2FyYWN06HJlIChjb21tZSBlbiBDKS4KCjxzdHJpbmc+IHJlcHLpc2VudGUgdW5lIGNoYe5uZSBxdWkgc2VyYSBham91dOllIHN5c3TpbWF0aXF1ZW1lbnQgYXBy6HMgbGEKZGVybmnocmUgbGlnbmUgZCdlbi106nRlLgoKUmVtYXJxdWVzIDoKLS0tLS0tLS0tLS0KICAtIGxhIHByZW1p6HJlIGxpZ25lIGRlIGxhIHJlcXXqdGUgZXQgY2VsbGUgZGUgbGEgculwb25zZSBzb250IHRyYWl06WVzIGNvbW1lCiAgICBkZXMgZW4tdOp0ZXMsIGNlIHF1aSBwZXJtZXQgZGUgcunpY3JpcmUgZGVzIFVSTCBldCBkZXMgY29kZXMgZCdlcnJldXIuCiAgLSAncmVxcmVwJyBlc3QgbCfpcXVpdmFsZW50IGRlICdjbGlleHAnIGVuIHZlcnNpb24gMS4wLCBldCAncnNwcmVwJyBjZWx1aSBkZQogICAgJ3NydmV4cCcuIENlcyBub21zIHNvbnQgdG91am91cnMgc3VwcG9ydOlzIG1haXMgZOljb25zZWlsbOlzLgogIC0gcG91ciBkZXMgcmFpc29ucyBkZSBwZXJmb3JtYW5jZXMsIGxlIG5vbWJyZSB0b3RhbCBkZSBjYXJhY3TocmVzIGFqb3V06XMgc3VyCiAgICB1bmUgcmVxdep0ZSBvdSB1bmUgculwb25zZSBlc3QgbGltaXTpIOAgNDA5NiBkZXB1aXMgbGEgdmVyc2lvbiAxLjEuNSAoY2V0dGUKICAgIGxpbWl0ZSDpdGFpdCDgIDI1NiBhdXBhcmF2YW50KS4gQ2V0dGUgdmFsZXVyIGVzdCBtb2RpZmlhYmxlIGRhbnMgbGUgY29kZS4KICAgIFBvdXIgdW4gdXNhZ2UgdGVtcG9yYWlyZSwgb24gcGV1dCBnYWduZXIgZGUgbGEgcGxhY2UgZW4gc3VwcHJpbWFudCBxdWVscXVlcwogICAgZW4tdOp0ZXMgaW51dGlsZXMgYXZhbnQgbGVzIGFqb3V0cy4KICAtIHVuZSByZXF16nRlIGJsb3F16WUgcHJvZHVpcmEgdW5lIHLpcG9uc2UgIkhUVFAgNDAzIGZvcmJpZGRlbiIgdGFuZGlzIHF1J3VuZQogICAgculwb25zZSBibG9xdellIHByb2R1aXJhIHVuZSBy6XBvbnNlICJIVFRQIDUwMiBCYWQgZ2F0ZXdheSIuCiAgLSB1bmUgcmVxdep0ZSBibG9xdellIHBhciAncmVxdGFycGl0JyBzZXJhIG1haW50ZW51ZSBwZW5kYW50IHVuZSBkdXLpZSDpZ2FsZQogICAgYXUgcGFyYW3odHJlICdjb250aW1lb3V0Jywgb3UganVzcXUn4CBsJ2FiYW5kb24gZHUgY2xpZW50LiBSaWVuIG5lIHNlcmEKICAgIGVudm956SBhdSBzZXJ2ZXVyLiBMb3JzcXVlIGxlIHRlbXBzIGFsbG916SBleHBpcmUsIGxlIHByb3h5IHLpcG9uZHJhIGF2ZWMKICAgIHVuZSBy6XBvbnNlICI1MDAgc2VydmVyIGVycm9yIiBkZSBzb3J0ZSBxdWUgbCdhdHRhcXVhbnQgbmUgc3VzcGVjdGUgcGFzCiAgICBxdSdpbCBhaXQg6XTpIGJsb3F16S4gTGVzIGxvZ3MgcmFwcG9ydGVyb250IGF1c3NpIGNlIGNvZGUgNTAwLCBtYWlzIGxlcwogICAgZmxhZ3MgZGUgdGVybWluYWlzb24gaW5kaXF1ZXJvbnQgIlBUIi4KCkV4ZW1wbGVzIDoKLS0tLS0tLS0tLQogICAgICAgICMjIyMjIyBhIGZldyBleGFtcGxlcyAjIyMjIyMKCiAgICAgICAgIyByZXdyaXRlICdvbmxpbmUuZnInIGluc3RlYWQgb2YgJ2ZyZWUuZnInIGZvciBHRVQgYW5kIFBPU1QgcmVxdWVzdHMKICAgICAgICByZXFyZXAgICAgICAgIF4oR0VUXCAuKikoLmZyZWUuZnIpKC4qKSBcMS5vbmxpbmUuZnJcMwogICAgICAgIHJlcXJlcCAgICAgICAgXihQT1NUXCAuKikoLmZyZWUuZnIpKC4qKSBcMS5vbmxpbmUuZnJcMwoKICAgICAgICAjIGZvcmNlIHByb3h5IGNvbm5lY3Rpb25zIHRvIGNsb3NlCiAgICAgICAgcmVxaXJlcCAgICAgICAgXlByb3h5LUNvbm5lY3Rpb246LiogICAgICAgIFByb3h5LUNvbm5lY3Rpb246XCBjbG9zZQogICAgICAgICMgcmV3cml0ZSBsb2NhdGlvbnMKICAgICAgICByc3BpcmVwICAgICAgICBeKExvY2F0aW9uOlwgKShbXjpdKjovL1teL10qKSguKikgXDFcMwoKICAgICAgICAjIyMjIyMgQSBmdWxsIGNvbmZpZ3VyYXRpb24gYmVpbmcgdXNlZCBvbiBwcm9kdWN0aW9uICMjIyMjIwoKICAgICAgICAjIEV2ZXJ5IGhlYWRlciBzaG91bGQgZW5kIHdpdGggYSBjb2xvbiBmb2xsb3dlZCBieSBvbmUgc3BhY2UuCiAgICAgICAgcmVxaWRlbnkgICAgICAgIF5bXjpcIF0qW1wgXSokCgogICAgICAgICMgYmxvY2sgQXBhY2hlIGNodW5rIGV4cGxvaXQKICAgICAgICByZXFpZGVueSAgICAgICAgXlRyYW5zZmVyLUVuY29kaW5nOltcIF0qY2h1bmtlZAogICAgICAgIHJlcWlkZW55ICAgICAgICBeSG9zdDpcIGFwYWNoZS0KCiAgICAgICAgIyBibG9jayBhbm5veWluZyB3b3JtcyB0aGF0IGZpbGwgdGhlIGxvZ3MuLi4KICAgICAgICByZXFpZGVueSAgICAgICAgXlteOlwgXSpcIC4qKFwufCUyZSkoXC58JTJlKSglMmZ8JTVjfC98XFxcXCkKICAgICAgICByZXFpZGVueSAgICAgICAgXlteOlwgXSpcIChbXlwgXSpcIFteXCBdKlwgfC4qJTAwKQogICAgICAgIHJlcWlkZW55ICAgICAgICBeW146XCBdKlwgLio8c2NyaXB0CiAgICAgICAgcmVxaWRlbnkgICAgICAgIF5bXjpcIF0qXCAuKi8ocm9vdFwuZXhlXD98Y21kXC5leGVcP3xkZWZhdWx0XC5pZGFcPykKCgkjIHRhcnBpdCBhdHRhY2tzIG9uIHRoZSBsb2dpbiBwYWdlLgogICAgICAgIHJlcXRhcnBpdCAgICAgXlteOlwgXSpcIC4qXC5waHA/bG9naW49W14wLTldCgogICAgICAgICMgYWxsb3cgb3RoZXIgc3ludGFjdGljYWxseSB2YWxpZCByZXF1ZXN0cywgYW5kIGJsb2NrIGFueSBvdGhlciBtZXRob2QKICAgICAgICByZXFpcGFzcyAgICAgICAgXihHRVR8UE9TVHxIRUFEfE9QVElPTlMpXCAvLipcIEhUVFAvMVwuWzAxXSQKICAgICAgICByZXFpcGFzcyAgICAgICAgXk9QVElPTlNcIFxcKlwgSFRUUC8xXC5bMDFdJAogICAgICAgIHJlcWlkZW55ICAgICAgICBeW146XCBdKlwgCgogICAgICAgICMgZm9yY2UgY29ubmVjdGlvbjpjbG9zZSwgdGh1cyBkaXNhYmxpbmcgSFRUUCBrZWVwLWFsaXZlCiAgICAgICAgb3B0aW9uICAgICAgICAgICAgICAgIGh0dHBjbG9zCgogICAgICAgICMgY2hhbmdlIHRoZSBzZXJ2ZXIgbmFtZQogICAgICAgIHJzcGlkZWwgICAgICAgICBeU2VydmVyOlwgCiAgICAgICAgcnNwYWRkICAgICAgICAgIFNlcnZlcjpcIEZvcm1pbHV4LzAuMS44CgoKRGUgcGx1cywgbCdvcHRpb24gJ2ZvcndhcmRmb3InIGFqb3V0ZSBsJ2FkcmVzc2UgSVAgZHUgY2xpZW50IGRhbnMgdW4gY2hhbXAKJ1gtRm9yd2FyZGVkLUZvcicgZGUgbGEgcmVxdep0ZSwgY2UgcXVpIHBlcm1ldCDgIHVuIHNlcnZldXIgd2ViIGZpbmFsIGRlCmNvbm5h7nRyZSBsJ2FkcmVzc2UgSVAgZHUgY2xpZW50IGluaXRpYWwuIERlcHVpcyBsYSB2ZXJzaW9uIDEuMy44LCBpbCBlc3QKcG9zc2libGUgZGUgcHLpY2lzZXIgbGUgbW90LWNs6SAiZXhjZXB0IiBzdWl2aSBkJ3VuZSBhZHJlc3NlIG91IHVuIHLpc2VhdQpJUCBzb3VyY2UgcG91ciBsZXF1ZWwgbCdlbnTqdGUgbmUgc2VyYSBwYXMgYWpvdXTpLiBDJ2VzdCB0cuhzIHByYXRpcXVlIGRhbnMgbGUKY2FzIG/5IHVuIGF1dHJlIHJldmVyc2UtcHJveHkgYWpvdXRhbnQgZOlq4CBsJ2VudOp0ZSBlc3QgaW5zdGFsbOkgc3VyIGxhIG3qbWUKbWFjaGluZSBvdSBkYW5zIHVuZSBETVogY29ubnVlLiBMZSBjYXMgbGUgcGx1cyBmculxdWVudCBlc3QgbGnpIOAgbCd1dGlsaXNhdGlvbgpkZSBzdHVubmVsIGVuIGxvY2FsLgoKRW5maW4sIGwnb3B0aW9uICdodHRwY2xvc2UnIGFwcGFydWUgZGFucyBsYSB2ZXJzaW9uIDEuMS4yOC8xLjIuMSBzdXBwcmltZSB0b3V0CmVuLXTqdGUgZGUgdHlwZSAnQ29ubmVjdGlvbjonIGV0IGFqb3V0ZSAnQ29ubmVjdGlvbjogY2xvc2UnIGRhbnMgbGVzIGRldXggc2Vucy4KQ2VjaSBzaW1wbGlmaWUgbGEgZOlzYWN0aXZhdGlvbiBkdSBrZWVwLWFsaXZlIEhUVFAgcGFyIHJhcHBvcnQg4CBsJ2FuY2llbm5lCm3pdGhvZGUgaW1wbGlxdWFudCA0IHLoZ2xlcy4KCkV4ZW1wbGUgOgotLS0tLS0tLS0KICAgIGxpc3RlbiBodHRwX3Byb3h5IDAuMC4wLjA6ODAKICAgICAgICBtb2RlIGh0dHAKICAgICAgICBsb2cgIGdsb2JhbAogICAgICAgIG9wdGlvbiBodHRwbG9nCiAgICAgICAgb3B0aW9uIGRvbnRsb2dudWxsCiAgICAgICAgb3B0aW9uIGZvcndhcmRmb3IgZXhjZXB0IDEyNy4wLjAuMS84CiAgICAgICAgb3B0aW9uIGh0dHBjbG9zZQoKTm90b25zIHF1ZSBjZXJ0YWlucyBzZXJ2ZXVycyBIVFRQIG5lIHJlZmVybWVudCBwYXMgbuljZXNzYWlyZW1lbnQgbGEgc2Vzc2lvbgpUQ1AgZW4gZmluIGRlIHRyYWl0ZW1lbnQgbG9yc3F1J2lscyByZedvaXZlbnQgdW4gZW506nRlICdDb25uZWN0aW9uOiBjbG9zZScsCmNlIHF1aSBzZSB0cmFkdWl0IHBhciBkZXMgZ3JhbmRzIG5vbWJyZXMgZGUgc2Vzc2lvbnMg6XRhYmxpZXMgZXQgZGVzIHRlbXBzCmdsb2JhdXggdHLocyBsb25ncyBzdXIgbGVzIHJlcXXqdGVzLiBQb3VyIGNvbnRvdXJuZXIgY2UgcHJvYmzobWUsIGxhIHZlcnNpb24KMS4yLjkgYXBwb3J0ZSB1bmUgbm91dmVsbGUgb3B0aW9uICdmb3JjZWNsb3NlJyBxdWkgcmVmZXJtZSBsYSBjb25uZXhpb24gc29ydGFudAp2ZXJzIGxlIHNlcnZldXIgZOhzIHF1J2lsIGNvbW1lbmNlIOAgculwb25kcmUgZXQgc2V1bGVtZW50IHNpIGxlIHRhbXBvbiBkZQpyZXF16nRlIGVzdCB2aWRlLiBBdHRlbnRpb24gdG91dGVmb2lzIOAgbmUgUEFTIHV0aWxpc2VyIGNldHRlIG9wdGlvbiBzaSBkZXMKbel0aG9kZXMgQ09OTkVDVCBzb250IGF0dGVuZHVlcyBlbnRyZSBsZSBjbGllbnQgZXQgbGUgc2VydmV1ci4gTCdvcHRpb24KJ2ZvcmNlY2xvc2UnIGltcGxpcXVlIGwnb3B0aW9uICdodHRwY2xvc2UnLgoKRXhlbXBsZSA6Ci0tLS0tLS0tLQogICAgbGlzdGVuIGh0dHBfcHJveHkgMC4wLjAuMDo4MAogICAgICAgIG1vZGUgaHR0cAogICAgICAgIGxvZyAgZ2xvYmFsCiAgICAgICAgb3B0aW9uIGh0dHBsb2cKICAgICAgICBvcHRpb24gZG9udGxvZ251bGwKICAgICAgICBvcHRpb24gZm9yd2FyZGZvcgogICAgICAgIG9wdGlvbiBmb3JjZWNsb3NlCgoKNC40KSBS6XBhcnRpdGlvbiBhdmVjIHBlcnNpc3RlbmNlCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpMYSBjb21iaW5haXNvbiBkZSBsJ2luc2VydGlvbiBkZSBjb29raWUgYXZlYyBsYSBy6XBhcnRpdGlvbiBkZSBjaGFyZ2UgaW50ZXJuZQpwZXJtZXQgZCdhc3N1cmVyIHVuZSBwZXJzaXN0ZW5jZSBkYW5zIGxlcyBzZXNzaW9ucyBIVFRQIGQndW5lIG1hbmnocmUKcHJhdGlxdWVtZW50IHRyYW5zcGFyZW50ZSBwb3VyIGxlcyBhcHBsaWNhdGlvbnMuIExlIHByaW5jaXBlIGVzdCBzaW1wbGUgOgogIC0gYXR0cmlidWVyIHVuZSB2YWxldXIgZCd1biBjb29raWUg4CBjaGFxdWUgc2VydmV1cgogIC0gZWZmZWN0dWVyIHVuZSBy6XBhcnRpdGlvbiBpbnRlcm5lCiAgLSBpbnPpcmVyIHVuIGNvb2tpZSBkYW5zIGxlcyBy6XBvbnNlcyBpc3N1ZXMgZCd1bmUgculwYXJ0aXRpb24gdW5pcXVlbWVudCwKICAgIGV0IGZhaXJlIGVuIHNvcnRlIHF1ZSBkZXMgY2FjaGVzIG5lIG3pbW9yaXNlbnQgcGFzIGNlIGNvb2tpZS4KICAtIGNhY2hlciBjZSBjb29raWUg4CBsJ2FwcGxpY2F0aW9uIGxvcnMgZGVzIHJlcXXqdGVzIHVsdOlyaWV1cmVzLgoKRXhlbXBsZSA6Ci0tLS0tLS0tLQogICAgbGlzdGVuIGFwcGxpY2F0aW9uIDAuMC4wLjA6ODAKICAgICAgICBtb2RlIGh0dHAKICAgICAgICBjb29raWUgU0VSVkVSSUQgaW5zZXJ0IG5vY2FjaGUgaW5kaXJlY3QKICAgICAgICBiYWxhbmNlIHJvdW5kcm9iaW4KICAgICAgICBzZXJ2ZXIgc3J2MSAxOTIuMTY4LjEuMTo4MCBjb29raWUgc2VydmVyMDEgY2hlY2sKICAgICAgICBzZXJ2ZXIgc3J2MiAxOTIuMTY4LjEuMjo4MCBjb29raWUgc2VydmVyMDIgY2hlY2sKCkwnYXV0cmUgc29sdXRpb24gYXBwb3J06WUgcGFyIGxlcyB2ZXJzaW9ucyAxLjEuMzAgZXQgMS4yLjMgZXN0IGRlIHLpdXRpbGlzZXIgdW4KY29va2llIGVuIHByb3ZlbmFuY2UgZHUgc2VydmV1ciBldCBkZSBsdWkgcHLpZml4ZXIgbCdpZGVudGlmaWFudCBkdSBzZXJ2ZXVyLgpEYW5zIGNlIGNhcywgbmUgcGFzIG91YmxpZXIgZGUgZm9yY2VyIGxlIG1vZGUgImh0dHBjbG9zZSIgcG91ciBlbXDqY2hlciBsZQpjbGllbnQgZXQgbGUgc2VydmV1ciBkZSB0cmF2YWlsbGVyIGVuIG1vZGUgImtlZXAtYWxpdmUiIGFmaW4gcXVlIGxlIHByb3h5CnB1aXNzZSBjb3JyaWdlciBsZSBub20gZHUgY29va2llIGRhbnMgdG91dGVzIGxlcyBmdXR1cmVzIHJlcXXqdGVzLgoKICAgIGxpc3RlbiBhcHBsaWNhdGlvbiAwLjAuMC4wOjgwCiAgICAgICBtb2RlIGh0dHAKICAgICAgIGNvb2tpZSBKU0VTU0lPTklEIHByZWZpeAogICAgICAgYmFsYW5jZSByb3VuZHJvYmluCiAgICAgICBzZXJ2ZXIgc3J2MSAxOTIuMTY4LjEuMTo4MCBjb29raWUgc3J2MSBjaGVjawogICAgICAgc2VydmVyIHNydjIgMTkyLjE2OC4xLjI6ODAgY29va2llIHNydjIgY2hlY2sKICAgICAgIG9wdGlvbiBodHRwY2xvc2UKCgo0LjUpIFByb3RlY3Rpb24gY29udHJlIGxlcyBmdWl0ZXMgZCdpbmZvcm1hdGlvbnMgZHUgc2VydmV1cgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpEYW5zIGxlcyB2ZXJzaW9ucyAxLjEuMjggZXQgMS4yLjEsIHVuZSBub3V2ZWxsZSBvcHRpb24gJ2NoZWNrY2FjaGUnIGEg6XTpCmNy6ellLiBFbGxlIHNlcnQg4CBpbnNwZWN0ZXIgbWludXRpZXVzZW1lbnQgbGVzIGVuLXTqdGVzICdDYWNoZS1jb250cm9sJywKJ1ByYWdtYScsIGV0ICdTZXQtY29va2llJyBkYW5zIGxlcyBy6XBvbnNlcyBzZXJ2ZXVyIHBvdXIgZOl0ZXJtaW5lciBzJ2lsIHkgYQp1biByaXNxdWUgZGUgY2FjaGVyIHVuIGNvb2tpZSBzdXIgdW4gcHJveHkgY/R06SBjbGllbnQuIFF1YW5kIGNldHRlIG9wdGlvbiBlc3QKYWN0aXbpZSwgbGVzIHNldWxlcyBy6XBvbnNlcyBxdWkgcGV1dmVudCDqdHJlIHJldG91cm7pZXMgYXUgY2xpZW50IHNvbnQgOgogIC0gdG91dGVzIGNlbGxlcyBxdWkgbidvbnQgcGFzIGQnZW4tdOp0ZSAnU2V0LWNvb2tpZScgOwogIC0gdG91dGVzIGNlbGxlcyBxdWkgb250IHVuIGNvZGUgZGUgcmV0b3VyIGF1dHJlIHF1ZSAyMDAsIDIwMywgMjA2LCAzMDAsIDMwMSwgCiAgICA0MTAsIHNhdWYgc2kgbGUgc2VydmV1ciBhIHBvc2l0aW9ubukgdW4gZW4tdOp0ZSAnQ2FjaGUtY29udHJvbDogcHVibGljJyA7CiAgLSBjZWxsZXMgcXVpIGZvbnQgc3VpdGUg4CB1bmUgcmVxdep0ZSBQT1NULCBzYXVmIHNpIGxlIHNlcnZldXIgYSBwb3NpdGlvbm7pCiAgICB1biBlbi106nRlICdDYWNoZS1jb250cm9sOiBwdWJsaWMnIDsKICAtIGNlbGxlcyBxdWkgb250IHVuIGVuLXTqdGUgJ1ByYWdtYTogbm8tY2FjaGUnIDsKICAtIGNlbGxlcyBxdWkgb250IHVuIGVuLXTqdGUgJ0NhY2hlLWNvbnRyb2w6IHByaXZhdGUnIDsgCiAgLSBjZWxsZXMgcXVpIG9udCB1biBlbi106nRlICdDYWNoZS1jb250cm9sOiBuby1zdG9yZScgOyAKICAtIGNlbGxlcyBxdWkgb250IHVuIGVuLXTqdGUgJ0NhY2hlLWNvbnRyb2w6IG1heC1hZ2U9MCcgOwogIC0gY2VsbGVzIHF1aSBvbnQgdW4gZW4tdOp0ZSAnQ2FjaGUtY29udHJvbDogcy1tYXhhZ2U9MCcgOwogIC0gY2VsbGVzIHF1aSBvbnQgdW4gZW4tdOp0ZSAnQ2FjaGUtY29udHJvbDogbm8tY2FjaGUnIDsKICAtIGNlbGxlcyBxdWkgb250IHVuIGVuLXTqdGUgJ0NhY2hlLWNvbnRyb2w6IG5vLWNhY2hlPSJzZXQtY29va2llIicgOwogIC0gY2VsbGVzIHF1aSBvbnQgdW4gZW4tdOp0ZSAnQ2FjaGUtY29udHJvbDogbm8tY2FjaGU9InNldC1jb29raWUsJwogICAgKGF1dG9yaXNhbnQgZCdhdXRyZXMgY2hhbXBzIGFwcuhzIHNldC1jb29raWUpLgoKU2kgdW5lIHLpcG9uc2UgbmUgcmVzcGVjdGUgcGFzIGNlcyBwcuktcmVxdWlzLCBhbG9ycyBlbGxlIHNlcmEgYmxvcXXpZSBkZSBsYQpt6m1lIG1hbmnocmUgcXVlIHMnaWwgcydhZ2lzc2FpdCBkJ3VuIGZpbHRyZSAncnNwZGVueScsIGF2ZWMgZW4gcmV0b3VyIHVuCm1lc3NhZ2UgIkhUVFAgNTAyIGJhZCBnYXRld2F5Ii4gTCfpdGF0IGRlIHNlc3Npb24gbW9udHJlICJQSC0tIiBjZSBxdWkgdmV1dApkaXJlIHF1ZSBjJ2VzdCBsZSBwcm94eSBxdWkgYSBibG9xdekgbGEgculwb25zZSBkdXJhbnQgbGUgdHJhaXRlbWVudCBkZXMKZW4tdOp0ZXMuIERlIHBsdXMsIHVuIG1lc3NhZ2UgZCdhbGVydGUgc2VyYSBlbnZveekgZGFucyBsZXMgbG9ncyBkZSBzb3J0ZSBxdWUKbCdhZG1pbmlzdHJhdGV1ciBzYWNoZSBxdSdpbCB5IGEgdW5lIGFjdGlvbiBjb3JyZWN0cmljZSDgIGVudHJlcHJlbmRyZS4KCjQuNikgUGVyc29uYWxpc2F0aW9uIGRlcyBlcnJldXJzCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkNlcnRhaW5lcyBzaXR1YXRpb25zIGNvbmR1aXNlbnQg4CByZXRvdXJuZXIgdW5lIGVycmV1ciBIVFRQIGF1IGNsaWVudCA6CiAgLSByZXF16nRlIGludmFsaWRlIG91IHRyb3AgbG9uZ3VlID0+IGNvZGUgSFRUUCA0MDAKICAtIHJlcXXqdGUgbWV0dGFudCB0cm9wIGRlIHRlbXBzIOAgdmVuaXIgPT4gY29kZSBIVFRQIDQwOAogIC0gcmVxdep0ZSBpbnRlcmRpdGUgKGJsb3F16WUgcGFyIHVuIHJlcWlkZW55KSA9PiBjb2RlIEhUVFAgNDAzCiAgLSBlcnJldXIgaW50ZXJuZSBkdSBwcm94eSA9PiBjb2RlIEhUVFAgNTAwCiAgLSBsZSBzZXJ2ZXVyIGEgcmV0b3VybukgdW5lIHLpcG9uc2UgaW5jb21wbOh0ZSBvdSBpbnZhbGlkZSA9PiBjb2RlIEhUVFAgNTAyCiAgLSBhdWN1biBzZXJ2ZXVyIGRpc3BvbmlibGUgcG91ciBjZXR0ZSByZXF16nRlID0+IGNvZGUgSFRUUCA1MDMKICAtIGxlIHNlcnZldXIgbidhIHBhcyBy6XBvbmR1IGRhbnMgbGUgdGVtcHMgaW1wYXJ0aSA9PiBjb2RlIEhUVFAgNTA0CgpVbiBtZXNzYWdlIGQnZXJyZXVyIHN1Y2NpbnQgdGly6SBkZSBsYSBSRkMgYWNjb21wYWduZSBjZXMgY29kZXMgZGUgcmV0b3VyLgpDZXBlbmRhbnQsIGVuIGZvbmN0aW9uIGR1IHR5cGUgZGUgY2xpZW506GxlLCBvbiBwZXV0IHBy6WbpcmVyIHJldG91cm5lciBkZXMKcGFnZXMgcGVyc29ubmFsaXPpZXMuIENlY2kgZXN0IHBvc3NpYmxlIHBhciBsZSBiaWFpcyBkZSBsYSBjb21tYW5kZSAiZXJyb3Jsb2MiOgoKICAgIGVycm9ybG9jIDxjb2RlX0hUVFA+IDxsb2NhdGlvbj4KCkF1IGxpZXUgZGUgZ+lu6XJlciB1bmUgZXJyZXVyIEhUVFAgPGNvZGVfSFRUUD4gcGFybWkgbGVzIGNvZGVzIGNpdOlzIGNpLWRlc3N1cywKbGUgcHJveHkgZ+lu6HJlcmEgdW4gY29kZSBkZSByZWRpcmVjdGlvbiB0ZW1wb3JhaXJlIChIVFRQIDMwMikgdmVycyBsJ2FkcmVzc2UKZCd1bmUgcGFnZSBwculjaXPpZSBkYW5zIDxsb2NhdGlvbj4uIENldHRlIGFkcmVzc2UgcGV1dCDqdHJlIHJlbGF0aXZlIGF1IHNpdGUsCm91IGFic29sdWUuIENvbW1lIGNldHRlIHLpcG9uc2UgZXN0IHRyYe506WUgcGFyIGxlIG5hdmlnYXRldXIgZHUgY2xpZW50Cmx1aS1t6m1lLCBpbCBlc3QgaW5kaXNwZW5zYWJsZSBxdWUgbCdhZHJlc3NlIGZvdXJuaWUgbHVpIHNvaXQgYWNjZXNzaWJsZS4KCkV4ZW1wbGUgOgotLS0tLS0tLS0KICAgIGxpc3RlbiBhcHBsaWNhdGlvbiAwLjAuMC4wOjgwCiAgICAgICAgZXJyb3Jsb2MgNDAwIC9iYWRyZXF1ZXN0Lmh0bWwKICAgICAgICBlcnJvcmxvYyA0MDMgL2ZvcmJpZGRlbi5odG1sCiAgICAgICAgZXJyb3Jsb2MgNDA4IC90b29sb25nLmh0bWwKICAgICAgICBlcnJvcmxvYyA1MDAgaHR0cDovL2hhcHJveHkuZG9tYWluLm5ldC9idWdyZXBvcnQuaHRtbAogICAgICAgIGVycm9ybG9jIDUwMiBodHRwOi8vMTkyLjE2OC4xMTQuNTgvZXJyb3I1MHguaHRtbAogICAgICAgIGVycm9ybG9jIDUwMyBodHRwOi8vMTkyLjE2OC4xMTQuNTgvZXJyb3I1MHguaHRtbAogICAgICAgIGVycm9ybG9jIDUwNCBodHRwOi8vMTkyLjE2OC4xMTQuNTgvZXJyb3I1MHguaHRtbAoKTm90ZTogbGEgUkZDMjYxNiBzdGlwdWxlIHF1J3VuIGNsaWVudCBkb2l0IHLpdXRpbGlzZXIgbGEgbeptZSBt6XRob2RlIHBvdXIKYWNj6WRlciDgIGwnVVJMIGRlIHJlZGlyZWN0aW9uIHF1ZSBjZWxsZSBxdWkgbCdhIHJldG91cm7pZSwgY2UgcXVpIHBvc2UgZGVzCnByb2Js6G1lcyBhdmVjIGxlcyByZXF16nRlcyBQT1NULiBMZSBjb2RlIGRlIHJldG91ciAzMDMgYSDpdOkgY3Lp6SBleHBy6HMgcG91cgpy6WdsZXIgY2UgcHJvYmzobWUsIGluZGlxdWFudCBhdSBjbGllbnQgcXUnaWwgZG9pdCBhY2PpZGVyIOAgbCdVUkwgcmV0b3VybullCmRhbnMgbGUgY2hhbXAgTG9jYXRpb24gYXZlYyBsYSBt6XRob2RlIEdFVCB1bmlxdWVtZW50LiBTZXVsZW1lbnQsIGNlcnRhaW5zCm5hdmlnYXRldXJzIGFudOlyaWV1cnMg4CBIVFRQLzEuMSBuZSBjb25uYWlzc2VudCBwYXMgY2UgY29kZSBkZSByZXRvdXIuIERlCnBsdXMsIGxhIHBsdXBhcnQgZGVzIG5hdmlnYXRldXJzIHNlIGNvbXBvcnRlbnQgZOlq4CBhdmVjIGxlIGNvZGUgMzAyIGNvbW1lIGlscwpkZXZyYWllbnQgbGUgZmFpcmUgYXZlYyBsZSAzMDMuIERvbmMsIGRhbnMgbGUgYnV0IGRlIGxhaXNzZXIgbGUgY2hvaXgg4ApsJ3V0aWxpc2F0ZXVyLCBsZXMgdmVyc2lvbnMgMS4xLjMxIGV0IDEuMi41IGFwcG9ydGVudCBkZXV4IG5vdXZlbGxlcyBjb21tYW5kZXMKdmlzYW50IOAgcmVtcGxhY2VyICdlcnJvcmxvYycgOiAnZXJyb3Jsb2MzMDInIGV0ICdlcnJvcmxvYzMwMycuCgpMZXVyIHVzYWdlIG5vbiBhbWJpZ/wgZXN0IHJlY29tbWFuZOkg4CBsYSBwbGFjZSBkZSBsYSBjb21tYW5kZSAnZXJyb3Jsb2MnIChxdWkKdXRpbGlzZSB0b3Vqb3VycyAzMDIpLiBEYW5zIGxlIGRvdXRlLCBwculm6XJleiBsJ3V0aWxpc2F0aW9uIGRlICdlcnJvcmxvYzMwMycKZOhzIHF1ZSB2b3VzIHNhdmV6IHF1ZSB2b3MgY2xpZW50cyBzdXBwb3J0ZW50IGxlIGNvZGUgZGUgcmV0b3VyIEhUVFAgMzAzLgoKNC43KSBDaGFuZ2VtZW50IGRlcyB2YWxldXJzIHBhciBk6WZhdXQKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KRGFucyBsYSB2ZXJzaW9uIDEuMS4yMiBlc3QgYXBwYXJ1ZSBsYSBub3Rpb24gZGUgdmFsZXVycyBwYXIgZOlmYXV0LCBjZSBxdWkK6XZpdGUgZGUgculw6XRlciBkZXMgcGFyYW3odHJlcyBjb21tdW5zIOAgdG91dGVzIGxlcyBpbnN0YW5jZXMsIHRlbHMgcXVlIGxlcwp0aW1lb3V0cywgYWRyZXNzZXMgZGUgbG9nLCBtb2RlcyBkZSBmb25jdGlvbm5lbWVudCwgZXRjLgoKTGVzIHZhbGV1cnMgcGFyIGTpZmF1dCBzb250IHBvc2l0aW9ubullcyBkYW5zIGxhIGRlcm5p6HJlIHNlY3Rpb24gJ2RlZmF1bHRzJwpwculj6WRlbnQgbCdpbnN0YW5jZSBxdWkgbGVzIHV0aWxpc2VyYS4gT24gcGV1dCBkb25jIG1ldHRyZSBhdXRhbnQgZGUgc2VjdGlvbnMKJ2RlZmF1bHRzJyBxdWUgbCdvbiB2ZXV0LiBJbCBmYXV0IGp1c3RlIHNlIHJhcHBlbGVyIHF1ZSBsYSBwculzZW5jZSBkJ3VuZSB0ZWxsZQpzZWN0aW9uIGltcGxpcXVlIHVuZSBhbm51bGF0aW9uIGRlIHRvdXMgbGVzIHBhcmFt6HRyZXMgcGFyIGTpZmF1dCBwb3NpdGlvbm7pcwpwculj6WRlbW1lbnQsIGRhbnMgbGUgYnV0IGRlIGxlcyByZW1wbGFjZXIuCgpMYSBzZWN0aW9uICdkZWZhdWx0cycgdXRpbGlzZSBsYSBt6m1lIHN5bnRheGUgcXVlIGxhIHNlY3Rpb24gJ2xpc3RlbicsIGF1eApwYXJhbeh0cmVzIHBy6HMgcXVpIG5lIHNvbnQgcGFzIHN1cHBvcnTpcy4gTGUgbW90IGNs6SAnZGVmYXVsdHMnIHBldXQgYWNjZXB0ZXIKdW4gY29tbWVudGFpcmUgZW4gZ3Vpc2UgcGFyYW3odHJlLgoKRGFucyBsYSB2ZXJzaW9uIDEuMS4yOC8xLjIuMSwgc2V1bHMgbGVzIHBhcmFt6HRyZXMgc3VpdmFudHMgcGV1dmVudCDqdHJlCnBvc2l0aW9ubulzIGRhbnMgdW5lIHNlY3Rpb24gJ2RlZmF1bHRzJyA6CiAgLSBsb2cgKGxlIHByZW1pZXIgZXQgbGUgc2Vjb25kKQogIC0gbW9kZSB7IHRjcCwgaHR0cCwgaGVhbHRoIH0KICAtIGJhbGFuY2UgeyByb3VuZHJvYmluIH0KICAtIGRpc2FibGVkIChwb3VyIGTpc2FjdGl2ZXIgdG91dGVzIGxlcyBpbnN0YW5jZXMgcXVpIHN1aXZlbnQpCiAgLSBlbmFibGVkIChwb3VyIGZhaXJlIGwnb3DpcmF0aW9uIGludmVyc2UsIG1haXMgYydlc3QgbGUgY2FzIHBhciBk6WZhdXQpCiAgLSBjb250aW1lb3V0LCBjbGl0aW1lb3V0LCBzcnZ0aW1lb3V0LCBncmFjZSwgcmV0cmllcywgbWF4Y29ubgogIC0gb3B0aW9uIHsgcmVkaXNwYXRjaCwgdHJhbnNwYXJlbnQsIGtlZXBhbGl2ZSwgZm9yd2FyZGZvciwgbG9nYXNhcCwgaHR0cGNsb3NlLAogICAgICAgICAgICAgY2hlY2tjYWNoZSwgaHR0cGxvZywgdGNwbG9nLCBkb250bG9nbnVsbCwgcGVyc2lzdCwgaHR0cGNoayB9CiAgLSByZWRpc3BhdGNoLCByZWRpc3AsIHRyYW5zcGFyZW50LCBzb3VyY2UgeyBhZGRyOnBvcnQgfQogIC0gY29va2llLCBjYXB0dXJlCiAgLSBlcnJvcmxvYwoKTmUgc29udCBwYXMgc3VwcG9ydOlzIGRhbnMgY2V0dGUgdmVyc2lvbiwgbGVzIGFkcmVzc2VzIGRlIGRpc3BhdGNoIGV0IGxlcwpjb25maWd1cmF0aW9ucyBkZSBzZXJ2ZXVycywgYWluc2kgcXVlIHRvdXMgbGVzIGZpbHRyZXMgYmFz6XMgc3VyIGxlcwpleHByZXNzaW9ucyBy6Wd1bGnocmVzIDoKICAtIGRpc3BhdGNoLCBzZXJ2ZXIsCiAgLSByZXEqLCByc3AqCgpFbmZpbiwgaWwgbid5IGEgcGFzIGxlIG1veWVuLCBwb3VyIGxlIG1vbWVudCwgZCdpbnZhbGlkZXIgdW4gcGFyYW3odHJlIGJvb2zpZW4KcG9zaXRpb25u6SBwYXIgZOlmYXV0LiBEb25jIHNpIHVuZSBvcHRpb24gZXN0IHNw6WNpZmnpZSBkYW5zIGxlcyBwYXJhbeh0cmVzIHBhcgpk6WZhdXQsIGxlIHNldWwgbW95ZW4gZGUgbGEgZOlzYWN0aXZlciBwb3VyIHVuZSBpbnN0YW5jZSwgYydlc3QgZGUgY2hhbmdlciBsZXMKcGFyYW3odHJlcyBwYXIgZOlmYXV0IGF2YW50IGxhIGTpY2xhcmF0aW9uIGRlIGwnaW5zdGFuY2UuCgpFeGVtcGxlcyA6Ci0tLS0tLS0tLS0KICAgIGRlZmF1bHRzIGFwcGxpY2F0aW9ucyBUQ1AKICAgICAgICBsb2cgZ2xvYmFsCiAgICAgICAgbW9kZSB0Y3AKICAgICAgICBiYWxhbmNlIHJvdW5kcm9iaW4KICAgICAgICBjbGl0aW1lb3V0IDE4MDAwMAogICAgICAgIHNydnRpbWVvdXQgMTgwMDAwCiAgICAgICAgY29udGltZW91dCA0MDAwCiAgICAgICAgcmV0cmllcyAzCiAgICAgICAgcmVkaXNwYXRjaAoKICAgIGxpc3RlbiBhcHBfdGNwMSAxMC4wLjAuMTo2MDAwLTYwNjMKICAgICAgICBzZXJ2ZXIgc3J2MSAxOTIuMTY4LjEuMSBjaGVjayBwb3J0IDYwMDAgaW50ZXIgMTAwMDAKICAgICAgICBzZXJ2ZXIgc3J2MiAxOTIuMTY4LjEuMiBiYWNrdXAKCiAgICBsaXN0ZW4gYXBwX3RjcDIgMTAuMC4wLjI6NjAwMC02MDYzCiAgICAgICAgc2VydmVyIHNydjEgMTkyLjE2OC4yLjEgY2hlY2sgcG9ydCA2MDAwIGludGVyIDEwMDAwCiAgICAgICAgc2VydmVyIHNydjIgMTkyLjE2OC4yLjIgYmFja3VwCiAgICAKICAgIGRlZmF1bHRzIGFwcGxpY2F0aW9ucyBIVFRQCiAgICAgICAgbG9nIGdsb2JhbAogICAgICAgIG1vZGUgaHR0cAogICAgICAgIG9wdGlvbiBodHRwbG9nCiAgICAgICAgb3B0aW9uIGZvcndhcmRmb3IKICAgICAgICBvcHRpb24gZG9udGxvZ251bGwKICAgICAgICBiYWxhbmNlIHJvdW5kcm9iaW4KICAgICAgICBjbGl0aW1lb3V0IDIwMDAwCiAgICAgICAgc3J2dGltZW91dCAyMDAwMAogICAgICAgIGNvbnRpbWVvdXQgNDAwMAogICAgICAgIHJldHJpZXMgMwoKICAgIGxpc3RlbiBhcHBfaHR0cDEgMTAuMC4wLjE6ODAtODEKICAgICAgICBjb29raWUgU0VSVkVSSUQgcG9zdG9ubHkgaW5zZXJ0IGluZGlyZWN0CiAgICAgICAgY2FwdHVyZSBjb29raWUgdXNlcmlkPSBsZW4gMTAKICAgICAgICBzZXJ2ZXIgc3J2MSAxOTIuMTY4LjEuMTorODAwMCBjb29raWUgc3J2MSBjaGVjayBwb3J0IDgwODAgaW50ZXIgMTAwMAogICAgICAgIHNlcnZlciBzcnYxIDE5Mi4xNjguMS4yOis4MDAwIGNvb2tpZSBzcnYyIGNoZWNrIHBvcnQgODA4MCBpbnRlciAxMDAwCgogICAgZGVmYXVsdHMKICAgICAgICAjIHNlY3Rpb24gdmlkZSBxdWkgYW5udWxlIHRvdXMgbGVzIHBhcmFt6HRlcyBwYXIgZOlmYXV0LgoKCjQuOCkgUmFwcG9ydCBkJ+l0YXQgc291cyBmb3JtZSBkZSBwYWdlIEhUTUwKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpBdmVjIGxhIHZlcnNpb24gMS4yLjE0LCBpbCBkZXZpZW50IHBvc3NpYmxlIHBvdXIgaGFwcm94eSBkJ2ludGVyY2VwdHJlIGRlcwpyZXF16nRlcyBwb3VyIHVuZSBVUkkgcGFydGljdWxp6HJlIGV0IGRlIHJldG91cm5lciB1biByYXBwb3J0IGNvbXBsZXQgZCfpdGF0IGRlCmwnYWN0aXZpdOkgZHUgcHJveHksIGV0IGRlcyBzdGF0aXN0aXF1ZXMgc3VyIGxlcyBzZXJ2ZXVycy4gQ2VjaSBlc3QgZGlzcG9uaWJsZQp2aWEgbGUgbW90IGNs6SAic3RhdHMiIGFzc29jaekg4CBuJ2ltcG9ydGUgbGFxdWVsbGUgZGUgY2VzIG9wdGlvbnMgOgoKICAgLSBzdGF0cyBlbmFibGUKICAgLSBzdGF0cyB1cmkgPHVyaSBwcmVmaXg+CiAgIC0gc3RhdHMgcmVhbG0gPGF1dGhlbnRpY2F0aW9uIHJlYWxtPgogICAtIHN0YXRzIGF1dGggPHVzZXI6cGFzc3dvcmQ+CiAgIC0gc3RhdHMgc2NvcGUgPHByb3h5X2lkPiB8ICcuJwoKClBhciBk6WZhdXQsIGxlIHJhcHBvcnQgZXN0IGTpc2FjdGl26S4gTGUgZmFpdCBkZSBzcOljaWZpZXIgdW5lIGRlcyBjb21iaW5haXNpb24KY2ktZGVzc3VzIGFjdGl2ZSBsZSByYXBwb3J0IHBvdXIgbCdpbnN0YW5jZSBkZSBwcm94eSBxdWkgbGUgculm6XJlbmNlLiBMYQpzb2x1dGlvbiBsYSBwbHVzIHNpbXBsZSBlc3QgZCd1dGlsaXNlciAic3RhdHMgZW5hYmxlIiBxdWkgYWN0aXZlcmEgbGUgcmFwcG9ydAphdmVjIGxlcyBwYXJhbeh0cmVzIHBhciBk6WZhdXQgc3VpdmFudCA6CgogICAtIGRlZmF1bHQgVVJJICAgOiAiL2hhcHJveHk/c3RhdHMiICAgICAgICAoQ09ORklHX1NUQVRTX0RFRkFVTFRfVVJJKQogICAtIGRlZmF1bHQgYXV0aCAgOiBub24gc3DpY2lmaekgKHBhcyBkJ2F1dGhlbnRpY2F0aW9uKQogICAtIGRlZmF1bHQgcmVhbG0gOiAiSEFQcm94eSBTdGF0aXN0aWNzIiAgICAoQ09ORklHX1NUQVRTX0RFRkFVTFRfUkVBTE0pCiAgIC0gZGVmYXVsdCBzY29wZSA6IG5vbiBzcGVjaWZp6SAoYWNj6HMg4CB0b3V0ZXMgbGVzIGluc3RhbmNlcykKCkwnb3B0aW9uICJzdGF0cyB1cmkgPHVyaV9wcmVmaXg+IiBwZXJtZXQgZCdpbnRlcmNlcHRlciB1biBhdXRyZSBwculmaXhlIGQnVVJJCnF1ZSBjZWx1aSBwYXIgZOlmYXV0LiBOb3RlciBxdWUgbidpbXBvcnRlIHF1ZWxsZSBVUkkgcXVpIENPTU1FTkNFIGF2ZWMgY2V0dGUKY2hh7m5lIHNlcmEgdmFsaWTpZS4gUGFyIGV4ZW1wbGUsIHVuZSBpbnN0YW5jZSBwb3VycmFpdCDqdHJlIGTpZGnpZSDgIGxhIHBhZ2UKZCfpdGF0IHNldWxlbWVudCBldCBy6XBvbmRyZSDgIHRvdXRlIFVSSS4KCkV4YW1wbGUgOgotLS0tLS0tLS0KICAgICMgaW50ZXJjZXB0ZSBuJ2ltcG9ydGUgcXVlbGxlIFVSSSBldCByZXRvdXJuZSBsYSBwYWdlIGQn6XRhdC4KICAgIGxpc3RlbiBzdGF0cyA6ODA4MAogICAgICAgIG1vZGUgaHR0cAogICAgICAgIHN0YXRzIHVyaSAvCgoKTCdvcHRpb24gInN0YXRzIGF1dGggPHVzZXI6cGFzc3dvcmQ+IiBhY3RpdmUgbCdhdXRoZW50aWZpY2F0aW9uICJCYXNpYyIgZXQKYWpvdXRlIHVuIGNvdXBsZSAidXNlcjpwYXNzd29yZCIgdmFsaWRlIOAgbGEgbGlzdGUgZGVzIGNvbXB0ZXMgYXV0b3Jpc+lzLgpMJ3V0aWxpc2F0ZXVyIDx1c2VyPiBldCBsZSBtb3QgZGUgcGFzc2UgPHBhc3N3b3JkPiBkb2l2ZW50IOp0cmUgcHLpY2lz6XMKZW4gY2xhaXIgZGFucyBsZSBmaWNoaWVyIGRlIGNvbmZpZ3VyYXRpb24sIGV0IGNvbW1lIGNlY2kgZXN0IGRlCmwnYXV0aGVudGlmaWNhdGlvbiBIVFRQICJCYXNpYyIsIGlsIGZhdXQg6nRyZSBjb25zY2llbnQgcXUnaWxzIHRyYW5zaXRlbnQgZW4KY2xhaXIgc3VyIGxlIHLpc2VhdSwgZG9uYyBpbCBuZSBmYXV0IHBhcyB1dGlsaXNlciBkZSBjb21wdGUgc2Vuc2libGUuIExhIGxpc3RlCmVzdCBpbGxpbWl06WUgZGFucyBsZSBidXQgZGUgcG91dm9pciBmb3VybmlyIGRlcyBhY2PocyBmYWNpbGVtZW50IOAgZGVzCmTpdmVsb3BwZXVycyBvdSDgIGRlcyBjbGllbnRzLgoKTCdvcHRpb24gInN0YXRzIHJlYWxtIDxyZWFsbT4iIGTpZmluaXQgbGUgImRvbWFpbmUiICgicmVhbG0iKSBkZSB2YWxpZGl06SBkdQptb3QgZGUgcGFzc2UgcXVpIHNlcmEgcHLpc2VudOkgZGFucyBsYSBib+50ZSBkZSBkaWFsb2d1ZSBkdSBuYXZpZ2F0ZXVyCmxvcnNxdSdpbCBkZW1hbmRlcmEgdW4gY29tcHRlIHV0aWxpc2F0ZXVyIGV0IHVuIG1vdCBkZSBwYXNzZS4gSWwgZXN0IGltcG9ydGFudApkZSBzJ2Fzc3VyZXIgcXVlIGNlbHVpLWNpIHNvaXQgZGlmZulyZW50IGRlIGNldXggdXRpbGlz6XMgcGFyIGwnYXBwbGljYXRpb24sCmF1dHJlbWVudCBsZSBuYXZpZ2F0ZXVyIHRlbnRlcmEgZCdlbiB1dGlsaXNlciB1biBjYWNo6SBkZXB1aXMgbCdhcHBsaWNhdGlvbi4KTm90ZXIgcXVlIGxlcyBlc3BhY2VzIGRhbnMgbGUgbm9tIGRlICJyZWFsbSIgZG9pdmVudCDqdHJlIHByb3TpZ+lzIHBhciB1bgpiYWNrc2xhc2ggKCdcJykuCgpMJ29wdGlvbiAic3RhdHMgc2NvcGUgPHByb3h5X2lkPiIgbGltaXRlIGxhIHBvcnTpZSBkdSByYXBwb3J0IGQn6XRhdC4gUGFyCmTpZmF1dCwgdG91dGVzIGxlcyBpbnN0YW5jZXMgcHJveHkgc29udCBsaXN06WVzLiBNYWlzIGRhbnMgY2VydGFpbmVzCmNpcmNvbnN0YW5jZXMsIGlsIHNlcmFpdCBwculm6XJhYmxlIGRlIG5lIGxpc3RlciBxdWUgY2VydGFpbnMgcHJveGllcyBvdQpzaW1wbGVtZW50IGxlIHByb3h5IGNvdXJhbnQuIEMnZXN0IGNlIHF1ZSBmYWl0IGNldHRlIG9wdGlvbi4gTGUgbm9tIHNw6WNpYWwgIi4iCih1biBzaW1wbGUgcG9pbnQpIHLpZulyZW5jZSBsZSBwcm94eSBjb3VyYW50LiBDZXR0ZSBvcHRpb24gcGV1dCDqdHJlIHLpcOl06WUKYXV0YW50IGRlIGZvaXMgcXVlIG7pY2Vzc2FpcmUgcG91ciBhdXRvcmlzZXIgZCdhdXRyZXMgcHJveGllcywgbeptZSBwb3VyIGRlcwpub21zIHLpZulyZW5j6XMgcGx1cyBsb2luIGRhbnMgbGEgY29uZmlndXJhdGlvbiBvdSBiaWVuIGRlcyBub21zIHF1aSBuJ2V4aXN0ZW50CnBhcyBlbmNvcmUuIExlIG5vbSBwculjaXPpIGVzdCBjZWx1aSBxdWkgYXBwYXJhaXQgYXBy6HMgbGUgbW90IGNs6SAibGlzdGVuIi4KCkV4ZW1wbGUgOgotLS0tLS0tLS0KICAgICMgc2ltcGxlIGFwcGxpY2F0aW9uIGVtYmFycXVhbnQgbGEgcGFnZSBkJ+l0YXQgYXV0aGVudGlmaellCiAgICBsaXN0ZW4gYXBwMSAxOTIuMTY4LjEuMTAwOjgwCiAgICAgICAgbW9kZSBodHRwCiAgICAgICAgb3B0aW9uIGh0dHBjbG9zZQogICAgICAgIGJhbGFuY2Ugcm91bmRyb2JpbgogICAgICAgIGNvb2tpZSBTRVJWRVJJRCBwb3N0b25seSBpbnNlcnQgaW5kaXJlY3QKICAgICAgICBzZXJ2ZXIgc3J2MSAxOTIuMTY4LjEuMTo4MDgwIGNvb2tpZSBzcnYxIGNoZWNrIGludGVyIDEwMDAKICAgICAgICBzZXJ2ZXIgc3J2MSAxOTIuMTY4LjEuMjo4MDgwIGNvb2tpZSBzcnYyIGNoZWNrIGludGVyIDEwMDAKICAgICAgICBzdGF0cyB1cmkgL215X3N0YXRzCiAgICAgICAgc3RhdHMgcmVhbG0gU3RhdGlzdGljc1wgZm9yXCBNeUFwcDEtMgogICAgICAgIHN0YXRzIGF1dGggZ3Vlc3Q6Z3Vlc3QKICAgICAgICBzdGF0cyBhdXRoIGFkbWluOkFkTWlOMTIzCiAgICAgICAgc3RhdHMgc2NvcGUgLgogICAgICAgIHN0YXRzIHNjb3BlIGFwcDIKCiAgICAjIHNpbXBsZSBhcHBsaWNhdGlvbiBlbWJhcnF1YW50IGxhIHBhZ2UgZCfpdGF0IHNhbnMgYXV0aGVudGlmaWNhdGlvbgogICAgbGlzdGVuIGFwcDIgMTkyLjE2OC4yLjEwMDo4MAogICAgICAgIG1vZGUgaHR0cAogICAgICAgIG9wdGlvbiBodHRwY2xvc2UKICAgICAgICBiYWxhbmNlIHJvdW5kcm9iaW4KICAgICAgICBjb29raWUgU0VSVkVSSUQgcG9zdG9ubHkgaW5zZXJ0IGluZGlyZWN0CiAgICAgICAgc2VydmVyIHNydjEgMTkyLjE2OC4yLjE6ODA4MCBjb29raWUgc3J2MSBjaGVjayBpbnRlciAxMDAwCiAgICAgICAgc2VydmVyIHNydjEgMTkyLjE2OC4yLjI6ODA4MCBjb29raWUgc3J2MiBjaGVjayBpbnRlciAxMDAwCiAgICAgICAgc3RhdHMgdXJpIC9teV9zdGF0cwogICAgICAgIHN0YXRzIHJlYWxtIFN0YXRpc3RpY3NcIGZvclwgTXlBcHAyCiAgICAgICAgc3RhdHMgc2NvcGUgLgoKICAgIGxpc3RlbiBhZG1pbl9wYWdlIDo4MDgwCiAgICAgICAgbW9kZSBodHRwCiAgICAgICAgc3RhdHMgdXJpIC9teV9zdGF0cwogICAgICAgIHN0YXRzIHJlYWxtIEdsb2JhbFwgc3RhdGlzdGljcwogICAgICAgIHN0YXRzIGF1dGggYWRtaW46QWRNaU4xMjMKCk5vdGVzIDoKLS0tLS0tLQogIC0gbGVzIG9wdGlvbnMgInN0YXRzIiBwZXV2ZW50IGF1c3NpIOp0cmUgc3DpY2lmaellcyBkYW5zIHVuZSBzZWN0aW9uCiAgICAiZGVmYXVsdHMiLCBhdXF1ZWwgY2FzIGxhIG3qbWUgY29uZmlndXJhdGlvbiBleGFjdGVtZW50IHNlcmEgZm91cm5pZSDgCiAgICB0b3V0ZXMgbGVzIGluc3RhbmNlcyBzdWl2YW50ZXMsIGQnb/kgbCd1dGlsaXTpIGR1IHNjb3BlICIuIi4gVG91dGVmb2lzLCBzaQogICAgdW5lIGluc3RhbmNlIHJlZOlmaW5pdCBuJ2ltcG9ydGUgcXVlbCBwYXJhbeh0cmUgInN0YXRzIiwgYWxvcnMgbGVzIGTpZmF1dHMKICAgIG5lIGx1aSBzZXJvbnQgcGFzIGFwcGxpcXXpcy4KCiAgLSBsJ2F1dGhlbnRpZmljYXRpb24gIkJhc2ljIiBlc3QgdHLocyBzaW1wbGlzdGUgZXQgbm9uIHPpY3VyaXPpZSBjb250cmUgbGEKICAgIGNhcHR1cmUgculzZWF1LiBBdWN1biBtb3QgZGUgcGFzc2Ugc2Vuc2libGUgbmUgZG9pdCDqdHJlIHV0aWxpc+ksIGV0IGlsCiAgICBlc3QgYm9uIGRlIHNhdm9pciBxdSdpbCBuJ2V4aXN0ZSBwYXMgZGUgbW95ZW4gZGUgbGUgc3VwcHJpbWVyIGR1IG5hdmlnYXRldXIKICAgIGFwcuhzIHVzYWdlLCBkb25jIGlsIHNlcmEgZW52b3npIHRlbCBxdWVsIOAgbCdhcHBsaWNhdGlvbiBhdSBjb3VycyBkZXMKICAgIGFjY+hzIHN1Y2Nlc3NpZnMuCgogIC0gSWwgZXN0IHRy6HMgaW1wb3J0YW50IGRlIHBy6WNpc2VyIGwnb3B0aW9uICJodHRwY2xvc2UiLCBzaW5vbiBsZSBwcm94eSBuZQogICAgc2VyYSBwYXMgZW4gbWVzdXJlIGRlIGTpdGVjdGVyIGxlcyBVUkkgZGFucyBsZXMgc2Vzc2lvbnMga2VlcC1hbGl2ZQogICAgbWFpbnRlbnVlcyBlbnRyZSBsZSBuYXZpZ2F0ZXVyIGV0IGxlcyBzZXJ2ZXVycywgZG9uYyBsZXMgVVJJIGRlIHN0YXRzCiAgICBzZXJvbnQgdHJhbnNtaXNlcyB0ZWxsZXMgcXVlbGxlcyBhdXggc2VydmV1cnMgY29tbWUgc2kgbCdvcHRpb24gbifpdGFpdAogICAgcGFzIHBy6WNpc+llLgoKCj09PT09PT09PT09PT09PT09PT09PT09CnwgUGFyYW3pdHJhZ2Ugc3lzdOhtZSB8Cj09PT09PT09PT09PT09PT09PT09PT09CgpTb3VzIExpbnV4IDIuNAo9PT09PT09PT09PT09PQoKLS0gY3V0IGhlcmUgLS0KIyEvYmluL3NoCiMgc2V0IHRoaXMgdG8gYWJvdXQgMjU2LzRNICgxNjM4NCBmb3IgMjU2TSBtYWNoaW5lKQpNQVhGSUxFUz0xNjM4NAplY2hvICRNQVhGSUxFUyA+IC9wcm9jL3N5cy9mcy9maWxlLW1heAp1bGltaXQgLW4gJE1BWEZJTEVTCgppZiBbIC1lIC9wcm9jL3N5cy9uZXQvaXB2NC9pcF9jb25udHJhY2tfbWF4IF07IHRoZW4KICAgICAgICBlY2hvIDY1NTM2ID4gL3Byb2Mvc3lzL25ldC9pcHY0L2lwX2Nvbm50cmFja19tYXgKZmkKCmlmIFsgLWUgL3Byb2Mvc3lzL25ldC9pcHY0L25ldGZpbHRlci9pcF9jdF90Y3BfdGltZW91dF9maW5fd2FpdCBdOyB0aGVuCiAgICAgICAgIyAzMCBzZWNvbmRzIGZvciBmaW4sIDE1IGZvciB0aW1lIHdhaXQKICAgICAgICBlY2hvIDMwMDAgPiAvcHJvYy9zeXMvbmV0L2lwdjQvbmV0ZmlsdGVyL2lwX2N0X3RjcF90aW1lb3V0X2Zpbl93YWl0CiAgICAgICAgZWNobyAxNTAwID4gL3Byb2Mvc3lzL25ldC9pcHY0L25ldGZpbHRlci9pcF9jdF90Y3BfdGltZW91dF90aW1lX3dhaXQKICAgICAgICBlY2hvIDAgPiAvcHJvYy9zeXMvbmV0L2lwdjQvbmV0ZmlsdGVyL2lwX2N0X3RjcF9sb2dfaW52YWxpZF9zY2FsZQogICAgICAgIGVjaG8gMCA+IC9wcm9jL3N5cy9uZXQvaXB2NC9uZXRmaWx0ZXIvaXBfY3RfdGNwX2xvZ19vdXRfb2Zfd2luZG93CmZpCgplY2hvIDEwMjQgNjA5OTkgPiAvcHJvYy9zeXMvbmV0L2lwdjQvaXBfbG9jYWxfcG9ydF9yYW5nZQplY2hvIDMwID4gL3Byb2Mvc3lzL25ldC9pcHY0L3RjcF9maW5fdGltZW91dAplY2hvIDQwOTYgPiAvcHJvYy9zeXMvbmV0L2lwdjQvdGNwX21heF9zeW5fYmFja2xvZwplY2hvIDI2MjE0NCA+IC9wcm9jL3N5cy9uZXQvaXB2NC90Y3BfbWF4X3R3X2J1Y2tldHMKZWNobyAyNjIxNDQgPiAvcHJvYy9zeXMvbmV0L2lwdjQvdGNwX21heF9vcnBoYW5zCmVjaG8gMzAwID4gL3Byb2Mvc3lzL25ldC9pcHY0L3RjcF9rZWVwYWxpdmVfdGltZQplY2hvIDEgPiAvcHJvYy9zeXMvbmV0L2lwdjQvdGNwX3R3X3JlY3ljbGUKZWNobyAwID4gL3Byb2Mvc3lzL25ldC9pcHY0L3RjcF90aW1lc3RhbXBzCmVjaG8gMCA+IC9wcm9jL3N5cy9uZXQvaXB2NC90Y3BfZWNuCmVjaG8gMSA+IC9wcm9jL3N5cy9uZXQvaXB2NC90Y3Bfc2FjawplY2hvIDAgPiAvcHJvYy9zeXMvbmV0L2lwdjQvdGNwX2RzYWNrCgojIGF1dG8tdHVuZWQgb24gMi40CiNlY2hvIDI2MjE0MyA+IC9wcm9jL3N5cy9uZXQvY29yZS9ybWVtX21heAojZWNobyAyNjIxNDMgPiAvcHJvYy9zeXMvbmV0L2NvcmUvcm1lbV9kZWZhdWx0CgplY2hvIDE2Mzg0IDY1NTM2IDUyNDI4OCA+IC9wcm9jL3N5cy9uZXQvaXB2NC90Y3Bfcm1lbQplY2hvIDE2Mzg0IDM0OTUyMCA2OTkwNDAgPiAvcHJvYy9zeXMvbmV0L2lwdjQvdGNwX3dtZW0KCi0tIGN1dCBoZXJlIC0tCgpTb3VzIEZyZWVCU0QKPT09PT09PT09PT09CgpVbiBwb3J0IGRlIEhBLVByb3h5IHNvdXMgRnJlZUJTRCBlc3QgZOlzb3JtYWlzIGRpc3BvbmlibGUsIGdy4mNlIOAKQ2xlbWVudCBMYWZvcmV0IDxzaGVlcGtpbGxlckBjdWx0ZGVhZHNoZWVwLm9yZz4uCgpQb3VyIHBsdXMgZCdpbmZvcm1hdGlvbnMgOgpodHRwOi8vd3d3LmZyZWVic2Qub3JnL2NnaS91cmwuY2dpP3BvcnRzL25ldC9oYXByb3h5L3BrZy1kZXNjcgpodHRwOi8vd3d3LmZyZWVic2Qub3JnL2NnaS9jdnN3ZWIuY2dpL3BvcnRzL25ldC9oYXByb3h5LwpodHRwOi8vd3d3LmZyZXNocG9ydHMub3JnL25ldC9oYXByb3h5CgoKLS0gZmluIC0tCg==