# Name: com_connect v4.6.0-beta.3 # Type: Public plugin # Form and contact mailer for Textpattern # Author: Textpattern Community # URL: https://forum.textpattern.io/viewtopic.php?id=47913 # Recommended load order: 5 # ..................................................................... # This is a plugin for Textpattern CMS - http://textpattern.com/ # To install: textpattern > admin > plugins # Paste the following text into the 'Install plugin' box: # ..................................................................... YToxNTp7czo0OiJuYW1lIjtzOjExOiJjb21fY29ubmVjdCI7czo3OiJ2ZXJzaW9uIjtzOjEy OiI0LjYuMC1iZXRhLjMiO3M6ODoicmV2aXNpb24iO3M6MDoiIjtzOjY6ImF1dGhvciI7czoy MToiVGV4dHBhdHRlcm4gQ29tbXVuaXR5IjtzOjEwOiJhdXRob3JfdXJpIjtzOjUxOiJodHRw czovL2ZvcnVtLnRleHRwYXR0ZXJuLmlvL3ZpZXd0b3BpYy5waHA/aWQ9NDc5MTMiO3M6MTE6 ImRlc2NyaXB0aW9uIjtzOjM5OiJGb3JtIGFuZCBjb250YWN0IG1haWxlciBmb3IgVGV4dHBh dHRlcm4iO3M6NToib3JkZXIiO3M6MToiNSI7czo0OiJ0eXBlIjtzOjE6IjAiO3M6NToiZmxh Z3MiO3M6MToiMCI7czo4OiJ0ZXh0cGFjayI7czoxMjQ0NDoiI0BwdWJsaWMKY29tX2Nvbm5l Y3RfY2hlY2tib3ggPT4gQ2hlY2tib3gKY29tX2Nvbm5lY3RfY29udGFjdCA9PiBDb250YWN0 CmNvbV9jb25uZWN0X2VtYWlsID0+IEVtYWlsCmNvbV9jb25uZWN0X2VtYWlsX3N1YmplY3Qg PT4ge3NpdGV9ID4gRW5xdWlyeQpjb21fY29ubmVjdF9lbWFpbF90aGFua3MgPT4gVGhhbmsg eW91LCB5b3VyIG1lc3NhZ2UgaGFzIGJlZW4gc2VudC4KY29tX2Nvbm5lY3RfZmllbGRfbWlz c2luZyA9PiBSZXF1aXJlZCBmaWVsZCA8c3Ryb25nPntmaWVsZH08L3N0cm9uZz4gaXMgbWlz c2luZy4KY29tX2Nvbm5lY3RfZm9ybWF0X3dhcm5pbmcgPT4gVmFsdWUge3ZhbHVlfSBpbiA8 c3Ryb25nPntmaWVsZH08L3N0cm9uZz4gaXMgbm90IG9mIHRoZSBleHBlY3RlZCBmb3JtYXQu CmNvbV9jb25uZWN0X2Zvcm1fZXhwaXJlZCA9PiBUaGUgZm9ybSBoYXMgZXhwaXJlZCwgcGxl YXNlIHRyeSBhZ2Fpbi4KY29tX2Nvbm5lY3RfZm9ybV91c2VkID0+IFRoZSBmb3JtIHdhcyBh bHJlYWR5IHN1Ym1pdHRlZCwgcGxlYXNlIGZpbGwgb3V0IGEgbmV3IGZvcm0uCmNvbV9jb25u ZWN0X2dlbmVyYWxfaW5xdWlyeSA9PiBHZW5lcmFsIGVucXVpcnkKY29tX2Nvbm5lY3RfaW52 YWxpZF9lbWFpbCA9PiA8c3Ryb25nPntlbWFpbH08L3N0cm9uZz4gaXMgbm90IGEgdmFsaWQg ZW1haWwgYWRkcmVzcy4KY29tX2Nvbm5lY3RfaW52YWxpZF9ob3N0ID0+IDxzdHJvbmc+e2hv c3R9PC9zdHJvbmc+IGlzIG5vdCBhIHZhbGlkIGVtYWlsIGhvc3QuCmNvbV9jb25uZWN0X2lu dmFsaWRfdXRmOCA9PiA8c3Ryb25nPntmaWVsZH08L3N0cm9uZz4gY29udGFpbnMgaW52YWxp ZCBVVEYtOCBjaGFyYWN0ZXJzLgpjb21fY29ubmVjdF9pbnZhbGlkX3ZhbHVlID0+IEludmFs aWQgdmFsdWUgZm9yIDxzdHJvbmc+e2ZpZWxkfTwvc3Ryb25nPjogPHN0cm9uZz57dmFsdWV9 PC9zdHJvbmc+IGlzIG5vdCBvbmUgb2YgdGhlIGF2YWlsYWJsZSBvcHRpb25zLgpjb21fY29u bmVjdF9tYWlsX3NvcnJ5ID0+IFNvcnJ5LCB1bmFibGUgdG8gc2VuZCBlbWFpbC4KY29tX2Nv bm5lY3RfbWF4dmFsX3dhcm5pbmcgPT4gPHN0cm9uZz57ZmllbGR9PC9zdHJvbmc+IG11c3Qg bm90IGV4Y2VlZCB7dmFsdWV9Lgpjb21fY29ubmVjdF9tYXhfd2FybmluZyA9PiA8c3Ryb25n PntmaWVsZH08L3N0cm9uZz4gbXVzdCBub3QgY29udGFpbiBtb3JlIHRoYW4ge3ZhbHVlfSBj aGFyYWN0ZXJzLgpjb21fY29ubmVjdF9tZXNzYWdlID0+IE1lc3NhZ2UKY29tX2Nvbm5lY3Rf bWludmFsX3dhcm5pbmcgPT4gPHN0cm9uZz57ZmllbGR9PC9zdHJvbmc+IG11c3QgYmUgYXQg bGVhc3Qge3ZhbHVlfS4KY29tX2Nvbm5lY3RfbWluX3dhcm5pbmcgPT4gPHN0cm9uZz57Zmll bGR9PC9zdHJvbmc+IG11c3QgY29udGFpbiBhdCBsZWFzdCB7dmFsdWV9IGNoYXJhY3RlcnMu CmNvbV9jb25uZWN0X25hbWUgPT4gTmFtZQpjb21fY29ubmVjdF9vcHRpb24gPT4gT3B0aW9u CmNvbV9jb25uZWN0X3BhdHRlcm5fd2FybmluZyA9PiA8c3Ryb25nPntmaWVsZH08L3N0cm9u Zz4gZG9lcyBub3QgbWF0Y2ggdGhlIHBhdHRlcm4ge3ZhbHVlfS4KY29tX2Nvbm5lY3RfcmFk aW8gPT4gUmFkaW8KY29tX2Nvbm5lY3RfcmVjaXBpZW50ID0+IFJlY2lwaWVudApjb21fY29u bmVjdF9yZWZyZXNoID0+IEZvbGxvdyB0aGlzIGxpbmsgaWYgdGhlIHBhZ2UgZG9lcyBub3Qg cmVmcmVzaCBhdXRvbWF0aWNhbGx5Lgpjb21fY29ubmVjdF9zZWNyZXQgPT4gU2VjcmV0CmNv bV9jb25uZWN0X3NlbmQgPT4gU2VuZApjb21fY29ubmVjdF9zZW5kX2FydGljbGUgPT4gU2Vu ZCBhcnRpY2xlCmNvbV9jb25uZWN0X3NwYW0gPT4gV2UgZG8gbm90IGFjY2VwdCBzcGFtLCB0 aGFuayB5b3UhCmNvbV9jb25uZWN0X3RleHQgPT4gVGV4dApjb21fY29ubmVjdF90b19taXNz aW5nID0+IDxzdHJvbmc+VG88L3N0cm9uZz4gZW1haWwgYWRkcmVzcyBpcyBtaXNzaW5nLgoj QHB1YmxpYwojQGxhbmd1YWdlIGVzLWVzCmNvbV9jb25uZWN0X2NoZWNrYm94ID0+IENhc2ls bGEgZGUgdmVyaWZpY2FjacOzbgpjb21fY29ubmVjdF9jb250YWN0ID0+IENvbnRhY3RvCmNv bV9jb25uZWN0X2VtYWlsID0+IENvcnJlbyBlbGVjdHLDs25pY28KY29tX2Nvbm5lY3RfZW1h aWxfc3ViamVjdCA9PiB7c2l0ZX0gPiBDb25zdWx0YQpjb21fY29ubmVjdF9lbWFpbF90aGFu a3MgPT4gR3JhY2lhcywgdHUgbWVuc2FqZSBoYSBzaWRvIGVudmlhZG8uCmNvbV9jb25uZWN0 X2ZpZWxkX21pc3NpbmcgPT4gZmFsdGEgZWwgY2FtcG8gb2JsaWdhdG9yaW8gPHN0cm9uZz57 ZmllbGR9PC9zdHJvbmc+Lgpjb21fY29ubmVjdF9mb3JtYXRfd2FybmluZyA9PiBFbCB2YWxv ciB7dmFsdWV9IGVuIDxzdHJvbmc+e2ZpZWxkfTwvc3Ryb25nPiBubyBlc3TDoSBlbiBlbCBm b3JtYXRvIGVzcGVyYWRvLgpjb21fY29ubmVjdF9mb3JtX2V4cGlyZWQgPT4gRWwgZm9ybXVs YXJpbyBoYSBjYWR1Y2FkbywgcG9yIGZhdm9yIGludMOpbnRhbG8gZGUgbnVldm8uCmNvbV9j b25uZWN0X2Zvcm1fdXNlZCA9PiBFbCBmb3JtdWxhcmlvIHlhIGhhYsOtYSBzaWRvIGVudmlh ZG8sIHBvciBmYXZvciByZWxsZW5hIGVsIGZvcm11bGFyaW8gZGUgbnVldm8uCmNvbV9jb25u ZWN0X2dlbmVyYWxfaW5xdWlyeSA9PiBDb25zdWx0YSBnZW5lcmFsCmNvbV9jb25uZWN0X2lu dmFsaWRfZW1haWwgPT4gTGEgZGlyZWNjacOzbiBkZSBjb3JyZW8gZWxlY3Ryw7NuaWNvIDxz dHJvbmc+e2VtYWlsfTwvc3Ryb25nPiBubyBlcyB2w6FsaWRhLgpjb21fY29ubmVjdF9pbnZh bGlkX2hvc3QgPT4gRWwgZG9taW5pbyBkZSBjb3JyZW8gZWxlY3Ryw7NuaWNvIDxzdHJvbmc+ e2hvc3R9PC9zdHJvbmc+IG5vIGVzIHbDoWxpZG8uCmNvbV9jb25uZWN0X2ludmFsaWRfdXRm OCA9PiA8c3Ryb25nPntmaWVsZH08L3N0cm9uZz4gY29udGllbmUgY2FyYWN0ZXJlcyBVVEYt OCBubyB2w6FsaWRvcy4KY29tX2Nvbm5lY3RfaW52YWxpZF92YWx1ZSA9PiBWYWxvciBpbmNv cnJlY3RvIHBhcmEgPHN0cm9uZz57ZmllbGR9PC9zdHJvbmc+OiA8c3Ryb25nPnt2YWx1ZX08 L3N0cm9uZz4gbm8gZXMgdW5hIGRlIGxhcyBvcGNpb25lcyBkaXNwb25pYmxlcy4KY29tX2Nv bm5lY3RfbWFpbF9zb3JyeSA9PiBMbyBzaWVudG8sIGVsIGNvcnJlbyBlbGVjdHLDs25pY28g bm8gcHVkbyBzZXIgZW52aWFkby4KY29tX2Nvbm5lY3RfbWF4dmFsX3dhcm5pbmcgPT4gPHN0 cm9uZz57ZmllbGR9PC9zdHJvbmc+IG5vIGRlYmUgZXhjZWRlciB7dmFsdWV9Lgpjb21fY29u bmVjdF9tYXhfd2FybmluZyA9PiA8c3Ryb25nPntmaWVsZH08L3N0cm9uZz4gbm8gZGViZSBj b250ZW5lciBtw6FzIGRlIHt2YWx1ZX0gY2FyYWN0ZXJlcy4KY29tX2Nvbm5lY3RfbWVzc2Fn ZSA9PiBNZW5zYWplCmNvbV9jb25uZWN0X21pbnZhbF93YXJuaW5nID0+IDxzdHJvbmc+e2Zp ZWxkfTwvc3Ryb25nPiBkZWJlIHRlbmVyIGFsIG1lbm9zIHt2YWx1ZX0uCmNvbV9jb25uZWN0 X21pbl93YXJuaW5nID0+IDxzdHJvbmc+e2ZpZWxkfTwvc3Ryb25nPiBkZWJlIGNvbnRlbmVy IGFsIG1lbm9zIHt2YWx1ZX0gY2FyYWN0ZXJlcy4KY29tX2Nvbm5lY3RfbmFtZSA9PiBOb21i cmUKY29tX2Nvbm5lY3Rfb3B0aW9uID0+IE9wY2nDs24KY29tX2Nvbm5lY3RfcGF0dGVybl93 YXJuaW5nID0+IDxzdHJvbmc+e2ZpZWxkfTwvc3Ryb25nPiBubyBlbmNhamEgY29uIGVsIHBh dHLDs24ge3ZhbHVlfS4KY29tX2Nvbm5lY3RfcmFkaW8gPT4gQm90w7NuIGRlIG9wY2nDs24K Y29tX2Nvbm5lY3RfcmVjaXBpZW50ID0+IERlc3RpbmF0YXJpbwpjb21fY29ubmVjdF9yZWZy ZXNoID0+IFNpZ2EgZXN0ZSBlbmxhY2Ugc2kgbGEgcMOhZ2luYSBubyBzZSByZWNhcmdhIGF1 dG9tw6F0aWNhbWVudGUuCmNvbV9jb25uZWN0X3NlY3JldCA9PiBTZWNyZXRvCmNvbV9jb25u ZWN0X3NlbmQgPT4gRW52aWFyCmNvbV9jb25uZWN0X3NlbmRfYXJ0aWNsZSA9PiBFbnZpYXIg YXJ0w61jdWxvCmNvbV9jb25uZWN0X3NwYW0gPT4gR3JhY2lhcywgwqFwZXJvIG5vIGFjZXB0 YW1vcyBjb3JyZW8gYmFzdXJhIQpjb21fY29ubmVjdF90ZXh0ID0+IFRleHRvCmNvbV9jb25u ZWN0X3RvX21pc3NpbmcgPT4gRmFsdGEgbGEgZGlyZWNjacOzbiBkZSBjb3JyZW8gZWxlY3Ry w7NuaWNvIGRlbCA8c3Ryb25nPmRlc3RpbmF0YXJpbzwvc3Ryb25nPi4KI0BwdWJsaWMKI0Bs YW5ndWFnZSBmci1mcgpjb21fY29ubmVjdF9jaGVja2JveCA9PiBDYXNlIMOgIGNvY2hlcgpj b21fY29ubmVjdF9jb250YWN0ID0+IENvbnRhY3QKY29tX2Nvbm5lY3RfZW1haWwgPT4gRW1h aWwKY29tX2Nvbm5lY3RfZW1haWxfc3ViamVjdCA9PiB7c2l0ZX0gPiBEZW1hbmRlCmNvbV9j b25uZWN0X2VtYWlsX3RoYW5rcyA9PiBNZXJjaSwgdm90cmUgbWVzc2FnZSBhIGJpZW4gw6l0 w6kgZW52b3nDqS4KY29tX2Nvbm5lY3RfZmllbGRfbWlzc2luZyA9PiBDaGFtcCBvYmxpZ2F0 b2lyZSA8c3Ryb25nPntmaWVsZH08L3N0cm9uZz4gbWFucXVhbnQuCmNvbV9jb25uZWN0X2Zv cm1fZXhwaXJlZCA9PiBMZSBkw6lsYWkgZHUgZm9ybXVsYWlyZSB2aWVudCBk4oCZZXhwaXJl ci4gVmV1aWxsZXogcmVjb21tZW5jZXIuCmNvbV9jb25uZWN0X2Zvcm1fdXNlZCA9PiBMZSBm b3JtdWxhaXJlIGEgZMOpasOgIMOpdMOpIHNvdW1pcy4gVmV1aWxsZXogZW4gcmVtcGxpciB1 biBub3V2ZWF1Lgpjb21fY29ubmVjdF9nZW5lcmFsX2lucXVpcnkgPT4gRGVtYW5kZSBk4oCZ b3JkcmUgZ8OpbsOpcmFsCmNvbV9jb25uZWN0X2ludmFsaWRfZW1haWwgPT4gPHN0cm9uZz57 ZW1haWx9PC9zdHJvbmc+IG7igJllc3QgcGFzIHVuZSBhZHJlc3NlIGVtYWlsIHZhbGlkZS4K Y29tX2Nvbm5lY3RfaW52YWxpZF9ob3N0ID0+IDxzdHJvbmc+e2hvc3R9PC9zdHJvbmc+IG7i gJllc3QgcGFzIGNvcnJlY3RlbWVudCByw6lkaWfDqS4KY29tX2Nvbm5lY3RfaW52YWxpZF91 dGY4ID0+IDxzdHJvbmc+e2ZpZWxkfTwvc3Ryb25nPiBjb250aWVudCBkZXMgY2FyYWN0w6hy ZXMgaW52YWxpZGVzLgpjb21fY29ubmVjdF9pbnZhbGlkX3ZhbHVlID0+IENldHRlIHZhbGV1 csKgOiA8c3Ryb25nPnt2YWx1ZX08L3N0cm9uZz4gbuKAmWVzdCBwYXMgY29ycmVjdGUgcG91 ciA8c3Ryb25nPntmaWVsZH08L3N0cm9uZz4uCmNvbV9jb25uZWN0X21haWxfc29ycnkgPT4g RMOpc29sw6ksIGltcG9zc2libGUgZOKAmWVudm95ZXIgdm90cmUgbWVzc2FnZSBkYW5zIGzi gJlpbW3DqWRpYXQuCmNvbV9jb25uZWN0X21heHZhbF93YXJuaW5nID0+IDxzdHJvbmc+e2Zp ZWxkfTwvc3Ryb25nPiBuZSBwZXV4IHBhcyDDqnRyZSBwbHVzIGdyYW5kIHF1ZSB7dmFsdWV9 Lgpjb21fY29ubmVjdF9tYXhfd2FybmluZyA9PiA8c3Ryb25nPntmaWVsZH08L3N0cm9uZz4g ZMOpcGFzc2Uge3ZhbHVlfSBjYXJhY3TDqHJlcy4KY29tX2Nvbm5lY3RfbWVzc2FnZSA9PiBN ZXNzYWdlCmNvbV9jb25uZWN0X21pbnZhbF93YXJuaW5nID0+IDxzdHJvbmc+e2ZpZWxkfTwv c3Ryb25nPiBkb2l0IMOqdHJlIGF1IG1vaW5zIHt2YWx1ZX0uCmNvbV9jb25uZWN0X21pbl93 YXJuaW5nID0+IDxzdHJvbmc+e2ZpZWxkfTwvc3Ryb25nPiBkb2l0IGNvbnRlbmlyIGF1IG1v aW5zIHt2YWx1ZX0gY2FyYWN0w6hyZXMuCmNvbV9jb25uZWN0X25hbWUgPT4gTm9tCmNvbV9j b25uZWN0X29wdGlvbiA9PiBPcHRpb24KY29tX2Nvbm5lY3RfcGF0dGVybl93YXJuaW5nID0+ PHN0cm9uZz57ZmllbGR9PC9zdHJvbmc+IGRvaXQgY29ycmVzcG9uZHJlIMOgIGNlIG1vZMOo bGUge3ZhbHVlfS4KY29tX2Nvbm5lY3RfcmFkaW8gPT4gQm91dG9uIHJhZGlvCmNvbV9jb25u ZWN0X3JlY2lwaWVudCA9PiBEZXN0aW5hdGFpcmUKY29tX2Nvbm5lY3RfcmVmcmVzaCA9PiBD bGlxdWV6IHN1ciBjZSBsaWVuIHNpIGxhIHBhZ2UgbmUgc2UgcmFmcmHDrmNoaXNzYWl0IHBh cyBhdXRvbWF0aXF1ZW1lbnQuCmNvbV9jb25uZWN0X3NlY3JldCA9PiBTZWNyZXQKY29tX2Nv bm5lY3Rfc2VuZCA9PiBFbnZveWVyCmNvbV9jb25uZWN0X3NlbmRfYXJ0aWNsZSA9PiBFbnZv eWVyIGzigJlhcnRpY2xlCmNvbV9jb25uZWN0X3NwYW0gPT4gTm91cyByZWZ1c29ucyBjYXTD qWdvcmlxdWVtZW50IGxlcyBzcGFtLiBCaWVuIMOgIHZvdXMhCmNvbV9jb25uZWN0X3RleHQg PT4gVGV4dGUKY29tX2Nvbm5lY3RfdG9fbWlzc2luZyA9PiBs4oCZYWRyZXNzZSBtYWlsIDxz dHJvbmc+VG88L3N0cm9uZz4gZXN0IG1hbnF1YW50ZS4KI0BwdWJsaWMKI0BsYW5ndWFnZSBu bC1ubApjb21fY29ubmVjdF9jaGVja2JveCA9PiBLZXV6ZQpjb21fY29ubmVjdF9jb250YWN0 ID0+IENvbnRhY3QKY29tX2Nvbm5lY3RfZW1haWwgPT4gRS1tYWlsIGFkcmVzCmNvbV9jb25u ZWN0X2VtYWlsX3N1YmplY3QgPT4ge3NpdGV9ID4gYmVyaWNodCB2aWEgZGUgc2l0ZQpjb21f Y29ubmVjdF9lbWFpbF90aGFua3MgPT4gSGFydGVsaWprIGRhbmssIGplIGJlcmljaHQgaXMg dmVyem9uZGVuLgpjb21fY29ubmVjdF9maWVsZF9taXNzaW5nID0+IEplIGhlYnQgYmlqIDxz dHJvbmc+e2ZpZWxkfTwvc3Ryb25nPiBub2cgbmlldHMgaW5nZXZ1bGQuCmNvbV9jb25uZWN0 X2Zvcm1hdF93YXJuaW5nID0+IERlIGludm9lciB7dmFsdWV9IGluIDxzdHJvbmc+e2ZpZWxk fTwvc3Ryb25nPiBoZWVmdCBuaWV0IGRlIGp1aXN0ZSB2b3JtLgpjb21fY29ubmVjdF9mb3Jt X2V4cGlyZWQgPT4gSGV0IGZvcm11bGllciBpcyB2ZXJsb3BlbiwgcHJvYmVlciBoZXQgb3Bu aWV1dy4KY29tX2Nvbm5lY3RfZm9ybV91c2VkID0+IEhldCBmb3JtdWxpZXIgaXMgcmVlZHMg dmVyc3R1dXJkLCB2dWwgaGV0IG9wbmlldXcgaW4uCmNvbV9jb25uZWN0X2dlbmVyYWxfaW5x dWlyeSA9PiBCZXJpY2h0IHZhbiBkZSBzaXRlCmNvbV9jb25uZWN0X2ludmFsaWRfZW1haWwg PT4gPHN0cm9uZz57ZW1haWx9PC9zdHJvbmc+IGlzIGdlZW4gZ2VsZGlnIGUtbWFpbCBhZGRy ZXMuCmNvbV9jb25uZWN0X2ludmFsaWRfaG9zdCA9PiA8c3Ryb25nPntob3N0fTwvc3Ryb25n PiBpcyBnZWVuIGdlbGRpZ2UgZS1tYWlsIGhvc3QuCmNvbV9jb25uZWN0X2ludmFsaWRfdXRm OCA9PiA8c3Ryb25nPntmaWVsZH08L3N0cm9uZz4gYmV2YXQgb25nZWxkaWdlIGxldHRlcnRl a2Vucy4KY29tX2Nvbm5lY3RfaW52YWxpZF92YWx1ZSA9PiBPbmdlbGRpZ2UgaW52b2VyIGJp aiA8c3Ryb25nPntmaWVsZH08L3N0cm9uZz4sIDxzdHJvbmc+e3ZhbHVlfTwvc3Ryb25nPiBp cyBuaWV0IG1vZ2VsaWprLgpjb21fY29ubmVjdF9tYWlsX3NvcnJ5ID0+IFNvcnJ5LCBlciBr YW4gZ2VlbiBlLW1haWwgdmVyem9uZGVuIHdvcmRlbi4KY29tX2Nvbm5lY3RfbWF4dmFsX3dh cm5pbmcgPT4gPHN0cm9uZz57ZmllbGR9PC9zdHJvbmc+IG1hZyBuaWV0IGdyb3RlciB6aWpu IGRhbiB7dmFsdWV9Lgpjb21fY29ubmVjdF9tYXhfd2FybmluZyA9PiA8c3Ryb25nPntmaWVs ZH08L3N0cm9uZz4gbWFnIG5pZXQgbWVlciBkYW4ge3ZhbHVlfSBsZXR0ZXJ0ZWtlcyBiZXZh dHRlbi4KY29tX2Nvbm5lY3RfbWVzc2FnZSA9PiBCZXJpY2h0dGVrc3QKY29tX2Nvbm5lY3Rf bWludmFsX3dhcm5pbmcgPT4gPHN0cm9uZz57ZmllbGR9PC9zdHJvbmc+IG1vZXQgbWluc3Rl bnMge3ZhbHVlfSB6aWpuLgpjb21fY29ubmVjdF9taW5fd2FybmluZyA9PiA8c3Ryb25nPntm aWVsZH08L3N0cm9uZz4gbW9ldCBtaW5zdGVucyB7dmFsdWV9IGxldHRlcnRla2VucyBiZXZh dHRlbi4KY29tX2Nvbm5lY3RfbmFtZSA9PiBOYWFtCmNvbV9jb25uZWN0X29wdGlvbiA9PiBP cHRpZQpjb21fY29ubmVjdF9wYXR0ZXJuX3dhcm5pbmcgPT4gPHN0cm9uZz57ZmllbGR9PC9z dHJvbmc+IGtvbXQgbmlldCBvdmVyZWVuIG1ldCBkZSB2b2xnb3JkZSB7dmFsdWV9Lgpjb21f Y29ubmVjdF9yYWRpbyA9PiBLZXV6ZWtub3AKY29tX2Nvbm5lY3RfcmVjaXBpZW50ID0+IE9u dHZhbmdlcgpjb21fY29ubmVjdF9yZWZyZXNoID0+IEplIGt1bnQgZGV6ZSBsaW5rIGdlYnJ1 aWtlbiBhbHMgZGUgcGFnaW5hIG5pZXQgYXV0b21hdGlzY2ggdmVydmVyc3QuCmNvbV9jb25u ZWN0X3NlY3JldCA9PiBHZWhlaW0KY29tX2Nvbm5lY3Rfc2VuZCA9PiBWZXJ6ZW5kZW4KY29t X2Nvbm5lY3Rfc2VuZF9hcnRpY2xlID0+IEFydGlrZWwgdmVyemVuZGVuCmNvbV9jb25uZWN0 X3NwYW0gPT4gV2UgYWNjZXB0ZXJlbiBnZWVuIHNwYW0hCmNvbV9jb25uZWN0X3RleHQgPT4g VGVrc3QKY29tX2Nvbm5lY3RfdG9fbWlzc2luZyA9PiA8c3Ryb25nPkFhbjwvc3Ryb25nPiBl LW1haWxhZHJlcyBvbnRicmVla3QuCiNAcHVibGljCiNAbGFuZ3VhZ2UgcHQtYnIKY29tX2Nv bm5lY3RfY2hlY2tib3ggPT4gQ2hlY2tib3gKY29tX2Nvbm5lY3RfY29udGFjdCA9PiBDb250 YXRvCmNvbV9jb25uZWN0X2VtYWlsID0+IEVtYWlsCmNvbV9jb25uZWN0X2VtYWlsX3N1Ympl Y3QgPT4ge3NpdGV9ID4gQ29udGF0bwpjb21fY29ubmVjdF9lbWFpbF90aGFua3MgPT4gT2Jy aWdhZG8sIHN1YSBtZW5zYWdlbSBmb2kgZW52aWFkYS4KY29tX2Nvbm5lY3RfZmllbGRfbWlz c2luZyA9PiBGYWx0b3UgcHJlZW5jaGVyIG8gY2FtcG8gcmVxdWVyaWRvIDxzdHJvbmc+e2Zp ZWxkfTwvc3Ryb25nPi4KY29tX2Nvbm5lY3RfZm9ybWF0X3dhcm5pbmcgPT4gTyB2YWxvciB7 dmFsdWV9IGVtIDxzdHJvbmc+e2ZpZWxkfTwvc3Ryb25nPiBuw6NvIGVzdMOhIGZvcm1hdG8g ZXNwZXJhZG8uCmNvbV9jb25uZWN0X2Zvcm1fZXhwaXJlZCA9PiBPIGZvcm11bMOhcmlvIGV4 cGlyb3UsIHBvciBmYXZvciB0ZW50ZSBub3ZhbWVudGUuCmNvbV9jb25uZWN0X2Zvcm1fdXNl ZCA9PiBPIGZvcm11bMOhcmlvIGrDoSBmb2kgZW52aWFkbywgcG9yIGZhdm9yIHByZWVuY2hh IG8gZm9ybXVsw6FyaW8gbm92YW1lbnRlLgpjb21fY29ubmVjdF9nZW5lcmFsX2lucXVpcnkg PT4gQXNzdW50b3MgZ2VyYWlzCmNvbV9jb25uZWN0X2ludmFsaWRfZW1haWwgPT4gPHN0cm9u Zz57ZW1haWx9PC9zdHJvbmc+IG7Do28gw6kgdW0gZW5kZXJlw6dvIGRlIGVtYWlsIHbDoWxp ZG8uCmNvbV9jb25uZWN0X2ludmFsaWRfaG9zdCA9PiA8c3Ryb25nPntob3N0fTwvc3Ryb25n PiBuw6NvIMOpIHVtIGRvbcOtbmlvIGRlIGVtYWlsIHbDoWxpZG8uCmNvbV9jb25uZWN0X2lu dmFsaWRfdXRmOCA9PiA8c3Ryb25nPntmaWVsZH08L3N0cm9uZz4gY29udMOpbSBjYXJhY3Rl cmVzIFVURi04IGludsOhbGlkb3MuCmNvbV9jb25uZWN0X2ludmFsaWRfdmFsdWUgPT4gVmFs b3IgaW5jb3JyZXRvIHBhcmEgPHN0cm9uZz57ZmllbGR9PC9zdHJvbmc+LCA8c3Ryb25nPnt2 YWx1ZX08L3N0cm9uZz4gbsOjbyDDqSB1bWEgZGFzIG9ww6fDtWVzIGRpc3BvbsOtdmVpcy4K Y29tX2Nvbm5lY3RfbWFpbF9zb3JyeSA9PiBEZXNjdWxwZSwgbsOjbyBmb2kgcG9zc8OtdmVs IGVudmlhciBvIGVtYWlsLgpjb21fY29ubmVjdF9tYXh2YWxfd2FybmluZyA9PiA8c3Ryb25n PntmaWVsZH08L3N0cm9uZz4gbsOjbyBwb2RlIGV4Y2VkZXIge3ZhbHVlfS4KY29tX2Nvbm5l Y3RfbWF4X3dhcm5pbmcgPT4gPHN0cm9uZz57ZmllbGR9PC9zdHJvbmc+IG7Do28gcG9kZSBj b250ZXIgbWFpcyBxdWUge3ZhbHVlfSBjYXJhY3RlcmVzLgpjb21fY29ubmVjdF9tZXNzYWdl ID0+IE1lbnNhZ2VtCmNvbV9jb25uZWN0X21pbnZhbF93YXJuaW5nID0+IDxzdHJvbmc+e2Zp ZWxkfTwvc3Ryb25nPiBkZXZlIHRlciBhbyBtZW5vcyB7dmFsdWV9Lgpjb21fY29ubmVjdF9t aW5fd2FybmluZyA9PiA8c3Ryb25nPntmaWVsZH08L3N0cm9uZz4gZGV2ZSBjb250ZXIgYW8g bWVub3Mge3ZhbHVlfSBjYXJhY3RlcmVzLgpjb21fY29ubmVjdF9uYW1lID0+IE5vbWUKY29t X2Nvbm5lY3Rfb3B0aW9uID0+IE9ww6fDo28KY29tX2Nvbm5lY3RfcGF0dGVybl93YXJuaW5n ID0+IDxzdHJvbmc+e2ZpZWxkfTwvc3Ryb25nPiBuw6NvIHNlIGVuY2FpeGEgbm8gZm9ybWF0 byB7dmFsdWV9Lgpjb21fY29ubmVjdF9yYWRpbyA9PiBSw6FkaW8KY29tX2Nvbm5lY3RfcmVj aXBpZW50ID0+IERlc3RpbmF0w6FyaW8KY29tX2Nvbm5lY3RfcmVmcmVzaCA9PiBDbGlxdWUg bmVzdGUgbGluayBjYXNvIGEgcMOhZ2luYSBuw6NvIHNlIGF0dWFsaXplIGF1dG9tYXRpY2Ft ZW50ZS4KY29tX2Nvbm5lY3Rfc2VjcmV0ID0+IFNlY3JldG8KY29tX2Nvbm5lY3Rfc2VuZCA9 PiBFbnZpYXIKY29tX2Nvbm5lY3Rfc2VuZF9hcnRpY2xlID0+IEVudmlhciBhcnRpZ28KY29t X2Nvbm5lY3Rfc3BhbSA9PiBOw6NvIGFjZWl0YW1vcyBzcGFtLCBvYnJpZ2FkbyEKY29tX2Nv bm5lY3RfdGV4dCA9PiBUZXh0bwpjb21fY29ubmVjdF90b19taXNzaW5nID0+IDxzdHJvbmc+ VG88L3N0cm9uZz4gZmFsdGEgbyBlbmRlcmXDp28gZGUgZW1haWwuCiNAcHVibGljCiNAbGFu Z3VhZ2UgZGUtZGUKY29tX2Nvbm5lY3RfY2hlY2tib3ggPT4gQ2hlY2tib3gKY29tX2Nvbm5l Y3RfY29udGFjdCA9PiBLb250YWt0CmNvbV9jb25uZWN0X2VtYWlsID0+IEUtTWFpbApjb21f Y29ubmVjdF9lbWFpbF9zdWJqZWN0ID0+IHtzaXRlfSA+IEFuZnJhZ2UKY29tX2Nvbm5lY3Rf ZW1haWxfdGhhbmtzID0+IFZpZWxlbiBEYW5rLCBJaHJlIE5hY2hyaWNodCB3dXJkZSBnZXNl bmRldC4KY29tX2Nvbm5lY3RfZmllbGRfbWlzc2luZyA9PiBFcmZvcmRlcmxpY2hlIEVpbmdh YmUgaW0gRmVsZCA8c3Ryb25nPntmaWVsZH08L3N0cm9uZz4gZmVobHQuCmNvbV9jb25uZWN0 X2Zvcm1hdF93YXJuaW5nID0+IEVpbmdhYmUge3ZhbHVlfSBpbSBGZWxkIDxzdHJvbmc+e2Zp ZWxkfTwvc3Ryb25nPiBlbnRzcHJpY2h0IG5pY2h0IGRlbSBlcndhcnRldGVuIEZvcm1hdC4K Y29tX2Nvbm5lY3RfZm9ybV9leHBpcmVkID0+IERpZXNlcyBGb3JtdWxhciBpc3QgYWJnZWxh dWZlbiwgYml0dGUgdmVyc3VjaGVuIFNpZSBlcyBlcm5ldXQuCmNvbV9jb25uZWN0X2Zvcm1f dXNlZCA9PiBEaWVzZXMgRm9ybXVsYXIgd3VyZGUgYmVyZWl0cyBnZXNlbmRldC4gQml0dGUg bGFkZW4gU2llIGRhcyBGb3JtdWxhciBub2NoIGVpbm1hbC4KY29tX2Nvbm5lY3RfZ2VuZXJh bF9pbnF1aXJ5ID0+IEFsbGdlbWVpbmUgQW5mcmFnZQpjb21fY29ubmVjdF9pbnZhbGlkX2Vt YWlsID0+IDxzdHJvbmc+e2VtYWlsfTwvc3Ryb25nPiBpc3Qga2VpbmUgZ8O8bHRpZ2UgRS1N YWlsYWRyZXNzZS4KY29tX2Nvbm5lY3RfaW52YWxpZF9ob3N0ID0+IDxzdHJvbmc+e2hvc3R9 PC9zdHJvbmc+IGlzdCBrZWluIGfDvGx0aWdlciBFLU1haWwtU2VydmVyLgpjb21fY29ubmVj dF9pbnZhbGlkX3V0ZjggPT4gPHN0cm9uZz57ZmllbGR9PC9zdHJvbmc+IGVudGjDpGx0IHVu Z8O8bHRpZ2UgVVRGLTgtWmVpY2hlbi4KY29tX2Nvbm5lY3RfaW52YWxpZF92YWx1ZSA9PiBV bmfDvGx0aWdlciBXZXJ0IGbDvHIgPHN0cm9uZz57ZmllbGR9PC9zdHJvbmc+LCA8c3Ryb25n Pnt2YWx1ZX08L3N0cm9uZz4gaXN0IGtlaW5lIHZlcmbDvGdiYXJlIE9wdGlvbi4KY29tX2Nv bm5lY3RfbWFpbF9zb3JyeSA9PiBMZWlkZXIga2FubiBrZWluZSBFLU1haWwgZ2VzZW5kZXQg d2VyZGVuLgpjb21fY29ubmVjdF9tYXh2YWxfd2FybmluZyA9PiA8c3Ryb25nPntmaWVsZH08 L3N0cm9uZz4gZGFyZiB7dmFsdWV9IG5pY2h0IMO8YmVyc2NocmVpdGVuLgpjb21fY29ubmVj dF9tYXhfd2FybmluZyA9PiA8c3Ryb25nPntmaWVsZH08L3N0cm9uZz4gZGFyZiBuaWNodCBs w6RuZ2VyIGFscyB7dmFsdWV9IFplaWNoZW4gc2Vpbi4KY29tX2Nvbm5lY3RfbWVzc2FnZSA9 PiBOYWNocmljaHQKY29tX2Nvbm5lY3RfbWludmFsX3dhcm5pbmcgPT4gPHN0cm9uZz57Zmll bGR9PC9zdHJvbmc+IGRhcmYge3ZhbHVlfSBuaWNodCB1bnRlcnNjaHJlaXRlbi4KY29tX2Nv bm5lY3RfbWluX3dhcm5pbmcgPT4gPHN0cm9uZz57ZmllbGR9PC9zdHJvbmc+IGRhcmYgbmlj aHQga8O8cnplciBhbHMge3ZhbHVlfSBaZWljaGVuIHNlaW4uCmNvbV9jb25uZWN0X25hbWUg PT4gTmFtZQpjb21fY29ubmVjdF9vcHRpb24gPT4gT3B0aW9uCmNvbV9jb25uZWN0X3BhdHRl cm5fd2FybmluZyA9PiA8c3Ryb25nPntmaWVsZH08L3N0cm9uZz4gZW50c3ByaWNodCBuaWNo dCBkZW0gTXVzdGVyIHt2YWx1ZX0uCmNvbV9jb25uZWN0X3JhZGlvID0+IFJhZGlvCmNvbV9j b25uZWN0X3JlY2lwaWVudCA9PiBFbXBmw6RuZ2VyCmNvbV9jb25uZWN0X3JlZnJlc2ggPT4g Qml0dGUgZm9sZ2VuIFNpZSBkaWVzZW0gTGluaywgZmFsbHMgZGllIFNlaXRlIGljaHQgYXV0 b21hdGlzY2ggbmV1IGdlbGFkZW4gd2lyZC4KY29tX2Nvbm5lY3Rfc2VjcmV0ID0+IEdlaGVp bW5pcwpjb21fY29ubmVjdF9zZW5kID0+IFNlbmRlbgpjb21fY29ubmVjdF9zZW5kX2FydGlj bGUgPT4gQXJ0aWtlbCBzZW5kZW4KY29tX2Nvbm5lY3Rfc3BhbSA9PiBEYW5rZSwgd2lyIGJy YXVjaGVuIGtlaW5lbiBTcGFtIQpjb21fY29ubmVjdF90ZXh0ID0+IFRleHQKY29tX2Nvbm5l Y3RfdG9fbWlzc2luZyA9PiA8c3Ryb25nPlRvPC9zdHJvbmc+IEUtTWFpbC1BZHJlc3NlIGZl aGx0LgoKIjtzOjEwOiJsb2FkX29yZGVyIjtzOjE6IjUiO3M6NDoiaGVscCI7czo2NTUzNToi PGgxPmNvbV9jb25uZWN0PC9oMT4KCjxoMiBpZD0iaW50cm9kdWN0aW9uIj5JbnRyb2R1Y3Rp b248L2gyPgoKPHA+QSBUZXh0cGF0dGVybiA8c3BhbiBjbGFzcz0iY2FwcyI+Q01TPC9zcGFu PiBmb3JtIG1haWxlciBwbHVnaW4uIDxjb2RlPiZsdDt0eHA6Y29tX2Nvbm5lY3QgLyZndDs8 L2NvZGU+IHByb2R1Y2VzIGEgZmxleGlibGUsIGN1c3RvbWlzYWJsZSBlbWFpbCBjb250YWN0 IGZvcm0uIEl0IGlzIGludGVuZGVkIGZvciB1c2UgYXMgYW4gZW5xdWlyeSBmb3JtIGZvciBj b21tZXJjaWFsIGFuZCBwcml2YXRlIHNpdGVzLCBhbmQgaW5jbHVkZXMgc2V2ZXJhbCBmZWF0 dXJlcyB0byBoZWxwIHJlZHVjZSBjb21tb24gcHJvYmxlbXMgd2l0aCBzdWNoIGZvcm1zIChp bnZhbGlkIGVtYWlsIGFkZHJlc3NlcywgbWlzc2luZyBpbmZvcm1hdGlvbikuPC9wPgoKPHA+ UGxlYXNlIHJlcG9ydCBidWdzIGFuZCBwcm9ibGVtcyB3aXRoIHRoaXMgcGx1Z2luIGF0IDxh IGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS90ZXh0cGF0dGVybi9jb21fY29ubmVjdC9pc3N1 ZXMiPnRoZSBHaXRIdWIgcHJvamVjdCYjODIxNztzIGlzc3VlcyBwYWdlPC9hPi48L3A+Cgo8 aDM+RmVhdHVyZXM8L2gzPgoKPHVsPgoJPGxpPkFyYml0cmFyeSBIVE1MNSB0ZXh0IGZpZWxk cyBjYW4gYmUgc3BlY2lmaWVkLCB3aXRoIG1pbi9tYXgvcmVxdWlyZWQgc2V0dGluZ3MgZm9y IHZhbGlkYXRpb24uPC9saT4KCTxsaT5FbWFpbCBhZGRyZXNzIHZhbGlkYXRpb24sIGluY2x1 ZGluZyBhIGNoZWNrIGZvciBhIHZhbGlkIE1YIHJlY29yZCAoVW5peCBvbmx5KS48L2xpPgoJ PGxpPlNhZmUgZXNjYXBpbmcgb2YgaW5wdXQgZGF0YS48L2xpPgoJPGxpPjxzcGFuIGNsYXNz PSJjYXBzIj5VVEY8L3NwYW4+LTggc2FmZS48L2xpPgoJPGxpPkFjY2Vzc2libGUgZm9ybSBs YXlvdXQsIGluY2x1ZGluZyA8Y29kZT4mbHQ7bGFiZWwmZ3Q7PC9jb2RlPiwgPGNvZGU+Jmx0 O2xlZ2VuZCZndDs8L2NvZGU+IGFuZCA8Y29kZT4mbHQ7ZmllbGRzZXQmZ3Q7PC9jb2RlPiB0 YWdzLjwvbGk+Cgk8bGk+VmFyaW91cyBjbGFzc2VzIGFuZCBpZHMgdG8gYWxsb3cgZWFzeSBz dHlsaW5nIG9mIGFsbCBwYXJ0cyBvZiB0aGUgZm9ybS48L2xpPgoJPGxpPlNwYW0gcHJldmVu dGlvbiA8c3BhbiBjbGFzcz0iY2FwcyI+QVBJPC9zcGFuPiAodXNlZCBieSBUcmFucXVpbGxv JiM4MjE3O3MgPGNvZGU+cGFwX2NvbnRhY3RfY2xlYW5lcjwvY29kZT4gcGx1Z2luKSBhbmQg ZGVsaXZlcnkgPHNwYW4gY2xhc3M9ImNhcHMiPkFQSTwvc3Bhbj4gZm9yIGFsdGVyaW5nIG9y IGV4dGVuZGluZyB0aGUgcGx1Z2luJiM4MjE3O3MgY2FwYWJpbGl0aWVzLjwvbGk+CjwvdWw+ Cgo8aDM+SGlzdG9yeTwvaDM+Cgo8cD5QbGVhc2Ugc2VlIHRoZSA8YSBocmVmPSJodHRwczov L2dpdGh1Yi5jb20vdGV4dHBhdHRlcm4vY29tX2Nvbm5lY3QvYmxvYi9tYXN0ZXIvQ0hBTkdF TE9HLnRleHRpbGUiPmNoYW5nZWxvZyBvbiBHaXRIdWI8L2E+LjwvcD4KCjxoMiBpZD0iaW5z dGFsbCI+SW5zdGFsbGluZyBhbmQgdXBncmFkaW5nPC9oMj4KCjxwPjxzdHJvbmc+UmVxdWly ZXMgVGV4dHBhdHRlcm4gNC41LjArPC9zdHJvbmc+PC9wPgoKPHA+RG93bmxvYWQgdGhlIGxh dGVzdCByZWxlYXNlIG9mIHRoZSBwbHVnaW4gZnJvbSA8YSBocmVmPSJodHRwczovL2dpdGh1 Yi5jb20vdGV4dHBhdHRlcm4vY29tX2Nvbm5lY3QvcmVsZWFzZXMiPnRoZSBHaXRIdWIgcHJv amVjdCBwYWdlPC9hPiwgcGFzdGUgdGhlIGNvZGUgaW50byB0aGUgVGV4dHBhdHRlcm4gUGx1 Z2lucyBhZG1pbmlzdHJhdGlvbiBwYW5lbCwgaW5zdGFsbCBhbmQgZW5hYmxlIHRoZSBwbHVn aW4uIFZpc2l0IHRoZSA8YSBocmVmPSJodHRwczovL2ZvcnVtLnRleHRwYXR0ZXJuLmlvL3Zp ZXd0b3BpYy5waHA/aWQ9NDc5MTMiPmZvcnVtIHRocmVhZDwvYT4gZm9yIG1vcmUgaW5mbyBv ciB0byByZXBvcnQgb24gdGhlIHN1Y2Nlc3Mgb3Igb3RoZXJ3aXNlIG9mIHRoZSBwbHVnaW4u PC9wPgoKPHA+VG8gdW5pbnN0YWxsLCBkZWxldGUgZnJvbSB0aGUgUGx1Z2lucyBhZG1pbmlz dHJhdGlvbiBwYW5lbC48L3A+Cgo8cD5BbHRlcm5hdGl2ZWx5LCB0aGlzIHBsdWdpbiBjYW4g YmUgaW5zdGFsbGVkIHVzaW5nIDxhIGhyZWY9Imh0dHBzOi8vZ2V0Y29tcG9zZXIub3JnIj5D b21wb3NlcjwvYT46PC9wPgoKPHByZSBjbGFzcz0ibGFuZ3VhZ2UtYmFzaCI+PGNvZGU+JCBj b21wb3NlciByZXF1aXJlIHRleHRwYXR0ZXJuL2NvbV9jb25uZWN0Oio8L2NvZGU+PC9wcmU+ Cgo8aDIgaWQ9ImRpZmZlcmVuY2VzIj5NaWdyYXRpbmcgZnJvbSB6ZW1fY29udGFjdF9yZWJv cm48L2gyPgoKPHA+SWYgdXBncmFkaW5nIGZyb20gemVtX2NvbnRhY3RfcmVib3JuICh0aGUg cHJldmlvdXMgaW5jYXJuYXRpb24gb2YgdGhpcyBwbHVnaW4pLCBwbGVhc2Ugbm90ZSB0aGVz ZSBkaWZmZXJlbmNlczo8L3A+Cgo8dWw+Cgk8bGk+VGFncyBoYXZlIGJlZW4gZ2xvYmFsbHkg cmVuYW1lZCBmcm9tIDxjb2RlPiZsdDt0eHA6emVtX2NvbnRhY3QgLi4uIC8mZ3Q7PC9jb2Rl PiB0byA8Y29kZT4mbHQ7dHhwOmNvbV9jb25uZWN0IC4uLiAvJmd0OzwvY29kZT4gJiM4MjEx OyBwbGVhc2UgYWRqdXN0IHlvdXIgY29kZSBhY2NvcmRpbmdseS48L2xpPgoJPGxpPkNsYXNz ZXMgPGNvZGU+emVtQ29ubmVjdEZvcm08L2NvZGU+LCA8Y29kZT56ZW1FcnJvcjwvY29kZT4s IDxjb2RlPnplbVJlcXVpcmVkPC9jb2RlPiwgPGNvZGU+emVtVGhhbmtzPC9jb2RlPiwgPGNv ZGU+emVtVGV4dDwvY29kZT4sIDxjb2RlPnplbUVtYWlsPC9jb2RlPiwgPGNvZGU+emVtVGV4 dGFyZWE8L2NvZGU+LCA8Y29kZT56ZW1TdWJtaXQ8L2NvZGU+LCA8Y29kZT56ZW1TZWxlY3Q8 L2NvZGU+LCA8Y29kZT56ZW1PcHRpb248L2NvZGU+LCA8Y29kZT56ZW1DaGVja2JveDwvY29k ZT4gYW5kIDxjb2RlPnplbVJhZGlvPC9jb2RlPiBoYXZlIGJlZW4gcmVuYW1lZCB0byA8Y29k ZT5jb21Db25uZWN0Rm9ybTwvY29kZT4sIDxjb2RlPmNvbUVycm9yPC9jb2RlPiwgPGNvZGU+ Y29tUmVxdWlyZWQ8L2NvZGU+LCA8Y29kZT5jb21UaGFua3M8L2NvZGU+LCA8Y29kZT5jb21U ZXh0PC9jb2RlPiwgPGNvZGU+Y29tRW1haWw8L2NvZGU+LCA8Y29kZT5jb21UZXh0YXJlYTwv Y29kZT4sIDxjb2RlPmNvbVN1Ym1pdDwvY29kZT4sIDxjb2RlPmNvbVNlbGVjdDwvY29kZT4s IDxjb2RlPmNvbU9wdGlvbjwvY29kZT4sIDxjb2RlPmNvbUNoZWNrYm94PC9jb2RlPiBhbmQg PGNvZGU+Y29tUmFkaW88L2NvZGU+IHJlc3BlY3RpdmVseSAmIzgyMTE7IHBsZWFzZSBhZGp1 c3QgeW91ciBjb2RlIGFjY29yZGluZ2x5LjwvbGk+Cgk8bGk+RGlzYWJsZSBvciByZW1vdmUg dGhlIHplbV9jb250YWN0X2xhbmcgcGx1Z2luLiBMYW5ndWFnZSBzdHJpbmdzIGFyZSBub3cg YnVuZGxlZCBhcyBwYXJ0IG9mIHRoZSBwbHVnaW4gaXRzZWxmLiBJZiB5b3UgaGF2ZSBhIHRy YW5zbGF0aW9uIFRleHRwYWNrIGF2YWlsYWJsZSB0aGF0IGlzIG5vdCB5ZXQgYnVuZGxlZCwg cGxlYXNlIHN1Ym1pdCBpdCBmb3IgaW5jbHVzaW9uLjwvbGk+Cgk8bGk+Q2xhc3NlcyBiYXNl ZCBvbiB0aGUgaW5wdXQgZWxlbWVudCA8Y29kZT5uYW1lPC9jb2RlPiBhcmUgbm8gbG9uZ2Vy IGF1dG9tYXRpY2FsbHkgYXBwbGllZC4gT25seSBkZWZhdWx0IGNsYXNzIG5hbWVzIGJlZ2lu bmluZyB3aXRoIDxjb2RlPmNvbTwvY29kZT4gYXJlIHNldC4gVG8gZW1wbG95IGN1c3RvbSBj bGFzc2VzLCB1c2UgdGhlIDxjb2RlPmNsYXNzPC9jb2RlPiBhdHRyaWJ1dGUgZm9yIGVhY2gg dGFnLCBvciB0aGUgZ2xvYmFsIDxjb2RlPmNsYXNzZXM8L2NvZGU+IGF0dHJpYnV0ZSB0byBz ZXQgbmFtZXMgZm9yIGVycm9yIGFuZCBpbmZvcm1hdGlvbiBtZXNzYWdlcy48L2xpPgoJPGxp PklmIHlvdXIgc2l0ZSYjODIxNztzICYjODIxNjtEb2N0eXBlJiM4MjE3OyBwcmVmZXJlbmNl IGlzIHNldCB0byA8Y29kZT5odG1sNTwvY29kZT4geW91IG1heSB1c2UgSFRNTDUgYXR0cmli dXRlcyBpbiB5b3VyIHRhZ3MuIE90aGVyd2lzZSwgdGhleSB3aWxsIGJlIGlnbm9yZWQuPC9s aT4KCTxsaT5WYWxpZGF0aW9uIG9mIHJlcXVpcmVkIGVsZW1lbnRzIGFuZCBtaW4vbWF4IGNv bnN0cmFpbnRzIGlzIGRvbmUgYnkgdGhlIGJyb3dzZXIgZmlyc3QsIGFuZCB0aGUgcGx1Z2lu IHNlY29uZC4gU28gaWYgeW91IHNwZWNpZnkgYSBmaWVsZCBpcyByZXF1aXJlZCBhbmQgaXQg aXMgbGVmdCBlbXB0eSwgdGhlIGJyb3dzZXIgd2lsbCB1c3VhbGx5IHByZXZlbnQgdGhlIGZv cm0gYmVpbmcgc3VibWl0dGVkLiBUbyBieXBhc3MgKG1vc3Qgb2YpIHRoZSBicm93c2VyIGNo ZWNrcywgc3BlY2lmeSA8Y29kZT5icm93c2VyX3ZhbGlkYXRlPSZxdW90OzAmcXVvdDs8L2Nv ZGU+IGluIHlvdXIgPGNvZGU+Jmx0O3R4cDpjb21fY29ubmVjdCAvJmd0OzwvY29kZT4gdGFn LjwvbGk+CjwvdWw+Cgo8aDIgaWQ9InVzYWdlIj5Vc2FnZTwvaDI+Cgo8aDM+Q29udGFjdCBm b3JtPC9oMz4KCjxwPlRoZSBzaW1wbGVzdCBmb3JtIGlzIHNob3duIGJlbG93LCB3aGljaCBw cm9kdWNlcyBhIGRlZmF1bHQgZm9ybSB3aXRoICYjODIxNjtOYW1lJiM4MjE3OywgJiM4MjE2 O0VtYWlsJiM4MjE3OyBhbmQgJiM4MjE2O01lc3NhZ2UmIzgyMTc7IGZpZWxkcy4gRW1haWwg d2lsbCBiZSBkZWxpdmVyZWQgdG8gPGNvZGU+cmVjaXBpZW50QGV4YW1wbGUuY29tPC9jb2Rl Piwgd2l0aCB0aGUgdXNlciYjODIxNztzIHN1cHBsaWVkIGVtYWlsIGFzIHRoZSA8Y29kZT5G cm9tOjwvY29kZT4gYWRkcmVzcy48L3A+Cgo8cHJlIGNsYXNzPSJsYW5ndWFnZS1tYXJrdXAi Pjxjb2RlPiZsdDt0eHA6Y29tX2Nvbm5lY3QgdG89JnF1b3Q7cmVjaXBpZW50QGV4YW1wbGUu Y29tJnF1b3Q7IC8mZ3Q7PC9jb2RlPjwvcHJlPgoKPHA+VG8gc3BlY2lmeSBmaWVsZHMgZXhw bGljaXRseSwgdXNlIHNvbWV0aGluZyBsaWtlIHRoaXM6PC9wPgoKPHByZSBjbGFzcz0ibGFu Z3VhZ2UtbWFya3VwIj48Y29kZT4mbHQ7dHhwOmNvbV9jb25uZWN0IHRvPSZxdW90O3JlY2lw aWVudEBleGFtcGxlLmNvbSZxdW90OyZndDsKICAgICZsdDt0eHA6Y29tX2Nvbm5lY3RfZW1h aWwgLyZndDsKICAgICZsdDt0eHA6Y29tX2Nvbm5lY3RfdGV4dCBsYWJlbD0mcXVvdDtQaG9u ZSZxdW90OyBtaW49JnF1b3Q7NyZxdW90OyBtYXg9JnF1b3Q7MTUmcXVvdDsgLyZndDsKICAg ICZsdDt0eHA6Y29tX2Nvbm5lY3RfdGV4dGFyZWEgbGFiZWw9JnF1b3Q7WW91ciBxdWVzdGlv biZxdW90OyAvJmd0OwogICAgJmx0O3R4cDpjb21fY29ubmVjdF9zdWJtaXQgbGFiZWw9JnF1 b3Q7U2VuZCZxdW90OyAvJmd0OwombHQ7L3R4cDpjb21fY29ubmVjdCZndDs8L2NvZGU+PC9w cmU+Cgo8cD5BbHRlcm5hdGl2ZWx5LCBwbGFjZSB0aGUgZmllbGQgc3BlY2lmaWNhdGlvbnMg aW4gYSBUZXh0cGF0dGVybiBmb3JtLCBhbmQgY2FsbCBpdCBsaWtlIHRoaXM6PC9wPgoKPHBy ZSBjbGFzcz0ibGFuZ3VhZ2UtbWFya3VwIj48Y29kZT4mbHQ7dHhwOmNvbV9jb25uZWN0IHRv PSZxdW90O3JlY2lwaWVudEBleGFtcGxlLmNvbSZxdW90OyBmb3JtPSZxdW90O215LWNvbnRh Y3QtZm9ybSZxdW90OyAvJmd0OzwvY29kZT48L3ByZT4KCjxoMz5TZW5kIGFydGljbGU8L2gz PgoKPHA+V2l0aGluIHRoZSBjb250ZXh0IG9mIGFuIGluZGl2aWR1YWwgYXJ0aWNsZSwgdGhp cyBwbHVnaW4gY2FuIGJlIHVzZWQgdG8gc2VuZCB0aGUgYXJ0aWNsZSAob3IgZXhjZXJwdCwg aWYgaXQgZXhpc3RzKSB0byBhbiBlbWFpbCBhZGRyZXNzIHNwZWNpZmllZCBieSB0aGUgdmlz aXRvci4gVGhpcyByZXF1aXJlcyBhdCBsZWFzdCB0d28gdGFnczo8L3A+Cgo8b2w+Cgk8bGk+ PGNvZGU+Y29tX2Nvbm5lY3Q8L2NvZGU+LCB0byBjcmVhdGUgZm9ybSB0aGF0IGlzIGluaXRp YWxseSBoaWRkZW4gYnkgc2V0dGluZyB0aGUgPGNvZGU+c2VuZF9hcnRpY2xlPC9jb2RlPiBh dHRyaWJ1dGUuPC9saT4KCTxsaT48Y29kZT5jb21fY29ubmVjdF9zZW5kX2FydGljbGU8L2Nv ZGU+LCB0byBjcmVhdGUgYSAmIzgyMTY7U2VuZCBhcnRpY2xlJiM4MjE3OyBsaW5rIHdoaWNo IHJldmVhbHMgdGhlIGFmb3JlbWVudGlvbmVkIGZvcm0gd2hlbiBjbGlja2VkLjwvbGk+Cjwv b2w+Cgo8cHJlIGNsYXNzPSJsYW5ndWFnZS1tYXJrdXAiPjxjb2RlPiZsdDt0eHA6Y29tX2Nv bm5lY3Qgc2VuZF9hcnRpY2xlPSZxdW90OzEmcXVvdDsgLyZndDsKJmx0O3R4cDpjb21fY29u bmVjdF9zZW5kX2FydGljbGUgLyZndDs8L2NvZGU+PC9wcmU+Cgo8cD5CeSBkZWZhdWx0IHRo ZSBmb3JtIGNvbnRhaW5zIGZpZWxkcyBmb3IgeW91ciBuYW1lIGFuZCBlbWFpbCBhZGRyZXNz LCB0aGUgcmVjaXBpZW50JiM4MjE3O3MgZW1haWwgYWRkcmVzcyBhbmQgYSBwZXJzb25hbCBt ZXNzYWdlLCBidXQgc2ltaWxhciB0byBjb250YWN0IGZvcm1zIHlvdSBjYW4gY3JlYXRlIHlv dXIgb3duIGZvcm0gbGF5b3V0LiBTb21lIHRoaW5ncyB5b3UgbmVlZCB0byBrbm93OjwvcD4K CjxvbD4KCTxsaT5TZXQgdGhlIDxjb2RlPnNlbmRfYXJ0aWNsZTwvY29kZT4gYXR0cmlidXRl IHRvIDxjb2RlPjE8L2NvZGU+IGluIHRoZSA8Y29kZT5jb21fY29ubmVjdDwvY29kZT4gdGFn LjwvbGk+Cgk8bGk+VXNlIGEgPGNvZGU+Y29tX2Nvbm5lY3RfZW1haWw8L2NvZGU+IHRhZyB3 aXRoIHRoZSA8Y29kZT5zZW5kX2FydGljbGU8L2NvZGU+IGF0dHJpYnV0ZSBzZXQgdG8gPGNv ZGU+MTwvY29kZT4uIFRoaXMgZmllbGQgd2lsbCBiZSB1c2VkIGFzIHRoZSByZWNpcGllbnQg ZW1haWwgYWRkcmVzcy48L2xpPgo8L29sPgoKPHByZSBjbGFzcz0ibGFuZ3VhZ2UtbWFya3Vw Ij48Y29kZT4mbHQ7dHhwOmNvbV9jb25uZWN0IHRvPSZxdW90O3lvdUBleGFtcGxlLmNvbSZx dW90OyBzZW5kX2FydGljbGU9JnF1b3Q7MSZxdW90OyZndDsKICAgICZsdDt0eHA6Y29tX2Nv bm5lY3RfZW1haWwgbGFiZWw9JnF1b3Q7UmVjaXBpZW50IEVtYWlsJnF1b3Q7IHNlbmRfYXJ0 aWNsZT0mcXVvdDsxJnF1b3Q7IC8mZ3Q7CiAgICAmbHQ7dHhwOmNvbV9jb25uZWN0X2VtYWls IGxhYmVsPSZxdW90O1lvdXIgRW1haWwmcXVvdDsgLyZndDsKICAgICZsdDt0eHA6Y29tX2Nv bm5lY3Rfc3VibWl0IGxhYmVsPSZxdW90O1NlbmQgQXJ0aWNsZSZxdW90OyAvJmd0OwombHQ7 L3R4cDpjb21fY29ubmVjdCZndDsKCiZsdDt0eHA6Y29tX2Nvbm5lY3Rfc2VuZF9hcnRpY2xl IC8mZ3Q7PC9jb2RlPjwvcHJlPgoKPGgyIGlkPSJ0YWdzIj5UYWdzPC9oMj4KCjxwPjxjb2Rl PiZsdDt0eHA6Y29tX2Nvbm5lY3Rfc2VuZF9hcnRpY2xlIC8mZ3Q7PC9jb2RlPiBjYW4gYmUg dXNlZCB0byBjcmVhdGUgYSAmIzgyMTY7U2VuZCBhcnRpY2xlJiM4MjE3OyBsaW5rIHdpdGhp biBhbiBhcnRpY2xlIGZvcm0sIGNvbm5lY3RpbmcgaXQgdG8gdGhlIGNvbnRhY3QgZm9ybS48 L3A+Cgo8cD5BbGwgb3RoZXIgdGFncyBwcm92aWRlZCBieSB0aGlzIHBsdWdpbiBjYW4gb25s eSBiZSB1c2VkIGluc2lkZSBhIDxjb2RlPiZsdDt0eHA6Y29tX2Nvbm5lY3QmZ3Q7PC9jb2Rl PiAmIzgyMTE7IDxjb2RlPiZsdDsvdHhwOmNvbV9jb25uZWN0Jmd0OzwvY29kZT4gY29udGFp bmVyIHRhZyBvciBpbiBhIFRleHRwYXR0ZXJuIGZvcm0gdXNlZCBhcyB0aGUgPGNvZGU+Zm9y bTwvY29kZT4gYXR0cmlidXRlIGluIHRoZSA8Y29kZT4mbHQ7dHhwOmNvbV9jb25uZWN0IC8m Z3Q7PC9jb2RlPiB0YWcuPC9wPgoKPHA+SW4gYWRkaXRpb24gdG8gdGhlIHRhZ3MgZGV0YWls ZWQgaW4gdGhlIGZvbGxvd2luZyBzZWN0aW9ucywgZXZlcnkgdGFnIGFjY2VwdHMgYSBjb3Jl IHNldCBvZiBjb21tb24gYXR0cmlidXRlcy4gVGhlc2UgYXJlOjwvcD4KCjx1bD4KCTxsaT48 Y29kZT5hY2Nlc3NrZXk9JnF1b3Q7Y2hhcmFjdGVyJnF1b3Q7PC9jb2RlPjxiciAvPgpTaG9y dGN1dCBrZXkgdG8gc2V0IGZvY3VzIG9uIHRoZSBmaWVsZC48L2xpPgoJPGxpPjxjb2RlPmF1 dG9mb2N1cz0mcXVvdDtib29sZWFuJnF1b3Q7PC9jb2RlPjxiciAvPgpUbyBhdXRvbWF0aWNh bGx5IGZvY3VzIHRoZSBjdXJzb3IgaW4gdGhpcyBmaWVsZCBvbiBwYWdlIGxvYWQuIE9ubHkg b25lIGZpZWxkIG1heSBoYXZlIHRoaXMgcHJvcGVydHkuPC9saT4KCTxsaT48Y29kZT5kaXI9 JnF1b3Q7dmFsdWUmcXVvdDs8L2NvZGU+PGJyIC8+ClRleHQgZGlyZWN0aW9uICg8Y29kZT5s dHI8L2NvZGU+LCA8Y29kZT5ydGw8L2NvZGU+IG9yIDxjb2RlPmF1dG88L2NvZGU+KS48L2xp PgoJPGxpPjxjb2RlPmRpc2FibGVkPSZxdW90O2Jvb2xlYW4mcXVvdDs8L2NvZGU+PGJyIC8+ CldoZXRoZXIgdGhlIGlucHV0IGNvbnRyb2wgYWNjZXB0cyB1c2VyIGlucHV0LiBJZiBzZXQs IHRoZSBlbGVtZW50IGRvZXMgbm90IGdldCBzdWJtaXR0ZWQgd2l0aCB0aGUgZm9ybSwgbm9y IGlzIGl0IHN1YmplY3QgdG8gYW55IDxjb2RlPmNoZWNrVmFsaWRpdHkoKTwvY29kZT4gSmF2 YVNjcmlwdCBjYWxscy48L2xpPgoJPGxpPjxjb2RlPmhpZGRlbj0mcXVvdDtib29sZWFuJnF1 b3Q7PC9jb2RlPjxiciAvPgpUaGUgdmlzaWJpbGl0eSBvZiB0aGUgaW5wdXQgY29udHJvbC48 L2xpPgoJPGxpPjxjb2RlPmlkPSZxdW90O2lkJnF1b3Q7PC9jb2RlPjxiciAvPgpUaGUgPHNw YW4gY2xhc3M9ImNhcHMiPkhUTUw8L3NwYW4+IGlkZW50aWZpZXIgZm9yIHRoZSBjb250cm9s LjwvbGk+Cgk8bGk+PGNvZGU+bGFuZz0mcXVvdDt2YWx1ZSZxdW90OzwvY29kZT48YnIgLz4K VGhlIDxzcGFuIGNsYXNzPSJjYXBzIj5JU088L3NwYW4+IDYzOSBsYW5ndWFnZSBzaG9ydCBj b2RlIChlLmcuIDxjb2RlPmVuLWdiPC9jb2RlPiwgPGNvZGU+ZGUtZGU8L2NvZGU+KSB0aGF0 IGdvdmVybiB0aGUgZmllbGQuPC9saT4KCTxsaT48Y29kZT5saXN0PSZxdW90O2lkJnF1b3Q7 PC9jb2RlPjxiciAvPgpVc2VkIGluIGNvbmp1bmN0aW9uIHdpdGggdGhlIDxjb2RlPiZsdDtk YXRhbGlzdCZndDs8L2NvZGU+IHRhZyB0byBzcGVjaWZ5IGEgc2V0IG9mIG9wdGlvbnMuIFRo ZSBpZCBpcyB0aGUgcmVmZXJlbmNlIHRvIHRoZSBkYXRhbGlzdCB0byB1c2UuPC9saT4KCTxs aT48Y29kZT5yZWFkb25seT0mcXVvdDtib29sZWFuJnF1b3Q7PC9jb2RlPjxiciAvPgpDb250 cm9sIGRvZXMgbm90IGFjY2VwdCB1c2VyIGlucHV0LCBidXQgd2lsbCBiZSBwcm9jZXNzZWQg b24gZm9ybSBzdWJtaXNzaW9uIGFuZCBjYW4gYmUgdmFsaWRhdGVkLjwvbGk+Cgk8bGk+PGNv ZGU+c3BlbGxjaGVjaz0mcXVvdDt2YWx1ZSZxdW90OzwvY29kZT48YnIgLz4KV2hldGhlciB0 aGUgZmllbGQgaXMgc3ViamVjdCB0byBzcGVsbCBjaGVja2luZyAoPGNvZGU+dHJ1ZTwvY29k ZT4gPSB5ZXMsIDxjb2RlPmRlZmF1bHQ8L2NvZGU+ID0gYnJvd3NlciBkZWNpZGVzLCBvciA8 Y29kZT5mYWxzZTwvY29kZT4gPSBubykuPC9saT4KCTxsaT48Y29kZT5zdHlsZT0mcXVvdDtz dHlsZSBydWxlcyZxdW90OzwvY29kZT48YnIgLz4KSW5saW5lIDxzcGFuIGNsYXNzPSJjYXBz Ij5DU1M8L3NwYW4+IDxjb2RlPnN0eWxlPC9jb2RlPiBydWxlcyB0byBhcHBseSB0byB0aGUg aW5wdXQgY29udHJvbC48L2xpPgoJPGxpPjxjb2RlPnRhYmluZGV4PSZxdW90O251bWJlciZx dW90OzwvY29kZT48YnIgLz4KVGhlIG9yZGVyIGluIHdoaWNoIHRoZSBjdXJzb3IganVtcHMg YmV0d2VlbiBlbGVtZW50cyB3aGVuIHVzaW5nIHRoZSB0YWIga2V5LjwvbGk+Cgk8bGk+PGNv ZGU+dGl0bGU9JnF1b3Q7dmFsdWUmcXVvdDs8L2NvZGU+PGJyIC8+ClVzdWFsbHkgdXNlZCBm b3IgaG92ZXIgdG9vbHRpcCBkZXNjcmliaW5nIHRoZSBpbnB1dCBjb250cm9sJiM4MjE3O3Mg dXNlIGluIHlvdXIgYXBwbGljYXRpb24uPC9saT4KCTxsaT48Y29kZT50cmFuc2xhdGU9JnF1 b3Q7Ym9vbGVhbiZxdW90OzwvY29kZT48YnIgLz4KV2hldGhlciB0byBzdWJqZWN0IHRoZSBh dHRyaWJ1dGUgY29udGVudCB0byBsYW5ndWFnZSB0cmFuc2xhdGlvbi48L2xpPgo8L3VsPgoK PGgzIGlkPSJjYyI+Y29tX2Nvbm5lY3QgdGFnPC9oMz4KCjxwcmUgY2xhc3M9Imxhbmd1YWdl LW1hcmt1cCI+PGNvZGU+Jmx0O3R4cDpjb21fY29ubmVjdCAvJmd0OzwvY29kZT48L3ByZT4K CjxwPk1heSBiZSB1c2VkIGFzIGEgc2luZ2xlIChzZWxmLWNsb3NpbmcpIG9yIGNvbnRhaW5l ciB0YWcuIFBsYWNlIHRoaXMgd2hlcmUgeW91IHdhbnQgdGhlIGlucHV0IGZvcm0gdG8gZ28u IFN0YXR1cyBhbmQgZXJyb3IgbWVzc2FnZXMsIGlmIGFueSwgd2lsbCBiZSBkaXNwbGF5ZWQg YmVmb3JlIHRoZSBmb3JtLjwvcD4KCjxoND5BdHRyaWJ1dGVzPC9oND4KCjx1bD4KCTxsaT48 Y29kZT5ib2R5X2Zvcm09JnF1b3Q7Zm9ybSBuYW1lJnF1b3Q7PC9jb2RlPjxiciAvPgpVc2Ug c3BlY2lmaWVkIGZvcm0gZm9yIHRoZSBtZXNzYWdlIGJvZHkgdGV4dC48L2xpPgoJPGxpPjxj b2RlPmNsYXNzPSZxdW90O3NwYWNlLXNlcGFyYXRlZCB2YWx1ZXMmcXVvdDs8L2NvZGU+PGJy IC8+ClNldCB0aGUgPHNwYW4gY2xhc3M9ImNhcHMiPkNTUzwvc3Bhbj4gPGNvZGU+Y2xhc3M8 L2NvZGU+IG5hbWUgb2YgdGhlIHRhZy4gRGVmYXVsdDogPGNvZGU+Y29tQ29ubmVjdEZvcm08 L2NvZGU+LiBUbyByZW1vdmUgPGNvZGU+Y2xhc3M8L2NvZGU+IGF0dHJpYnV0ZSBmcm9tIHRo ZSBlbGVtZW50IGVudGlyZWx5LCB1c2UgPGNvZGU+Y2xhc3M9JnF1b3Q7JnF1b3Q7PC9jb2Rl Pi48L2xpPgoJPGxpPjxjb2RlPmNsYXNzZXM9JnF1b3Q7Y29tbWEtc2VwYXJhdGVkIGtleTp2 YWx1ZSBwYWlycyZxdW90OzwvY29kZT48YnIgLz4KU2V0IHRoZSA8c3BhbiBjbGFzcz0iY2Fw cyI+Q1NTPC9zcGFuPiBjbGFzc2VzIGZvciBlcnJvciAvIGluZm9ybWF0aW9uIGNvbmRpdGlv bnMuIFNwZWNpZnkgZWFjaCBhcyBhIHBhaXIgb2YgdmFsdWVzIHNlcGFyYXRlZCBieSBhIGNv bG9uLCBlLmcuIDxjb2RlPmNsYXNzZXM9JnF1b3Q7cmVxdWlyZWQ6IHJlcV9maWVsZCwgZWxl bWVudDogd2Fybl9maWVsZCZxdW90OzwvY29kZT4uIFRoZXJlIGFyZSB1cCB0byBmb3VyIGF2 YWlsYWJsZSB0byBjdXN0b21pc2U6Cgk8dWw+CgkJPGxpPjxjb2RlPmVsZW1lbnQ8L2NvZGU+ OiBTZXQgZm9yIGVhY2ggZm9ybSBmaWVsZCB0aGF0IGZhaWxzIHZhbGlkYXRpb24gZm9yIGFu eSByZWFzb24uIERlZmF1bHQ6IDxjb2RlPmVycm9yRWxlbWVudDwvY29kZT4uPC9saT4KCQk8 bGk+PGNvZGU+d3JhcHBlcjwvY29kZT46IFRoZSBjbGFzcyB0byBzdXJyb3VuZCB0aGUgbGlz dCBvZiBlcnJvcnMgc2hvd24gYWJvdmUgdGhlIGZvcm0uIERlZmF1bHQ6IDxjb2RlPmNvbUVy cm9yPC9jb2RlPi48L2xpPgoJCTxsaT48Y29kZT5yZXF1aXJlZDwvY29kZT46IENsYXNzIGFz c2lnbmVkIHdoZW4gYSByZXF1aXJlZCBlbGVtZW50IGlzIG5vdCBjb21wbGV0ZWQuIERlZmF1 bHQ6IDxjb2RlPmNvbVJlcXVpcmVkPC9jb2RlPi48L2xpPgoJCTxsaT48Y29kZT50aGFua3M8 L2NvZGU+OiBDbGFzcyBhcHBsaWVkIHRvIHRoZSB3cmFwcGVyIGFyb3VuZCB0aGUgPGNvZGU+ dGhhbmtzX2Zvcm08L2NvZGU+LiBEZWZhdWx0OiA8Y29kZT5jb21UaGFua3M8L2NvZGU+Ljwv bGk+Cgk8L3VsPjwvbGk+Cgk8bGk+PGNvZGU+Y29weXNlbmRlcj0mcXVvdDtib29sZWFuJnF1 b3Q7PC9jb2RlPjxiciAvPgpXaGV0aGVyIHRvIHNlbmQgYSBjb3B5IG9mIHRoZSBlbWFpbCB0 byB0aGUgc2VuZGVyJiM4MjE3O3MgYWRkcmVzcy4gQXZhaWxhYmxlIHZhbHVlczogPGNvZGU+ MTwvY29kZT4gKHllcykgb3IgPGNvZGU+MDwvY29kZT4gKG5vKS4gRGVmYXVsdCBpcyA8Y29k ZT4wPC9jb2RlPi48L2xpPgoJPGxpPjxjb2RlPmV4cGlyZT0mcXVvdDtudW1iZXImcXVvdDs8 L2NvZGU+PGJyIC8+Ck51bWJlciBvZiBzZWNvbmRzIGFmdGVyIHdoaWNoIHRoZSBmb3JtIHdp bGwgZXhwaXJlLCB0aHVzIHJlcXVpcmluZyBhIHBhZ2UgcmVmcmVzaCBiZWZvcmUgc2VuZGlu Zy4gRGVmYXVsdCBpcyA8Y29kZT42MDA8L2NvZGU+LjwvbGk+Cgk8bGk+PGNvZGU+Zm9ybT0m cXVvdDtmb3JtIG5hbWUmcXVvdDs8L2NvZGU+PGJyIC8+ClVzZSBzcGVjaWZpZWQgZm9ybSwg Y29udGFpbmluZyB0aGUgbGF5b3V0IG9mIHRoZSBjb250YWN0IGZvcm0gZmllbGRzLjwvbGk+ Cgk8bGk+PGNvZGU+ZnJvbT0mcXVvdDtlbWFpbCBhZGRyZXNzJnF1b3Q7PC9jb2RlPjxiciAv PgpFbWFpbCBhZGRyZXNzIHVzZWQgaW4gdGhlICYjODIyMDtGcm9tOiYjODIyMTsgZmllbGQg d2hlbiBzZW5kaW5nIGVtYWlsLiBEZWZhdWx0cyB0byB0aGUgc2VuZGVyJiM4MjE3O3MgZW1h aWwgYWRkcmVzcy4gSWYgc3BlY2lmaWVkLCB0aGUgc2VuZGVyJiM4MjE3O3MgZW1haWwgYWRk cmVzcyB3aWxsIGJlIHBsYWNlZCBpbiB0aGUgJiM4MjIwO1JlcGx5LVRvOiYjODIyMTsgZmll bGQgaW5zdGVhZC48L2xpPgoJPGxpPjxjb2RlPmZyb21fZm9ybT0mcXVvdDtmb3JtIG5hbWUm cXVvdDs8L2NvZGU+PGJyIC8+ClVzZSBzcGVjaWZpZWQgZm9ybSAob3ZlcnJpZGVzIDxjb2Rl PmZyb208L2NvZGU+IGF0dHJpYnV0ZSkuPC9saT4KCTxsaT48Y29kZT5sYWJlbD0mcXVvdDt0 ZXh0JnF1b3Q7PC9jb2RlPjxiciAvPgpMYWJlbCBmb3IgdGhlIGNvbnRhY3QgZm9ybS4gSWYg c2V0IHRvIGFuIGVtcHR5IHN0cmluZywgZGlzcGxheSBvZiB0aGUgZmllbGRzZXQgYW5kIGxl Z2VuZCB0YWdzIHdpbGwgYmUgc3VwcHJlc3NlZC4gRGVmYXVsdCBpcyA8Y29kZT5Db250YWN0 PC9jb2RlPi48L2xpPgoJPGxpPjxjb2RlPmxhbmc9JnF1b3Q7bGFuZy1jb2RlJnF1b3Q7PC9j b2RlPjxiciAvPgpPdmVycmlkZSB0aGUgbGFuZ3VhZ2Ugc3RyaW5ncyB0aGF0IHdvdWxkIG5v cm1hbGx5IGJlIHVzZWQgZnJvbSB0aGUgY3VycmVudCBhZG1pbi1zaWRlIGxhbmd1YWdlIGlu IGZvcmNlLiBlLmcuIDxjb2RlPmxhbmc9JnF1b3Q7ZnItZnImcXVvdDs8L2NvZGU+IHdvdWxk IGxvYWQgdGhlIEZyZW5jaCBsYW5ndWFnZSBzdHJpbmdzLiBBIFRleHRwYWNrIG11c3QgYWxy ZWFkeSBleGlzdCBmb3IgdGhlIGNob3NlbiBsYW5ndWFnZS48L2xpPgoJPGxpPjxjb2RlPmJy b3dzZXJfdmFsaWRhdGU9JnF1b3Q7Ym9vbGVhbiZxdW90OzwvY29kZT48YnIgLz4KU2V0IHRv IDAgaWYgeW91IHdpc2ggdG8gc3RvcCB0aGUgYnJvd3NlciBmcm9tIHZhbGlkYXRpbmcgZm9y bSBmaWVsZCB2YWx1ZXMgYW5kICYjODIxNjtyZXF1aXJlZCYjODIxNzsgc3RhdHVzIG9mIGlu cHV0IGVsZW1lbnRzLiBUaGUgcGx1Z2luIGl0c2VsZiBpcyB0aGVuIHNvbGVseSByZXNwb25z aWJsZSBmb3IgdmFsaWRhdGlvbiBhbmQgd2lsbCBpbmRpY2F0ZSBlcnJvciBjb25kaXRpb25z IGFmdGVyIHN1Ym1pc3Npb24uIERlZmF1bHQgaXMgPGNvZGU+MTwvY29kZT4uPC9saT4KCTxs aT48Y29kZT5yZWRpcmVjdD0mcXVvdDtVUkwmcXVvdDs8L2NvZGU+PGJyIC8+ClJlZGlyZWN0 IHRvIHNwZWNpZmllZCA8c3BhbiBjbGFzcz0iY2FwcyI+VVJMPC9zcGFuPiAob3ZlcnJpZGVz IDxjb2RlPnRoYW5rczwvY29kZT4gYW5kIDxjb2RlPnRoYW5rc19mb3JtPC9jb2RlPiBhdHRy aWJ1dGVzKS4gPHNwYW4gY2xhc3M9ImNhcHMiPlVSTDwvc3Bhbj4gbXVzdCBiZSByZWxhdGl2 ZSB0byB0aGUgVGV4dHBhdHRlcm4gc2l0ZSA8c3BhbiBjbGFzcz0iY2FwcyI+VVJMPC9zcGFu Pi4gRXhhbXBsZTogPGNvZGU+cmVkaXJlY3Q9JnF1b3Q7bW9ua2V5JnF1b3Q7PC9jb2RlPiB3 b3VsZCByZWRpcmVjdCB0byA8Y29kZT5odHRwOi8vZXhhbXBsZS5jb20vbW9ua2V5PC9jb2Rl Pi48L2xpPgoJPGxpPjxjb2RlPnJlcXVpcmVkPSZxdW90O2Jvb2xlYW4mcXVvdDs8L2NvZGU+ PGJyIC8+CldoZXRoZXIgdG8gcmVxdWlyZSBhbGwgdGFncyBpbiB0aGlzIGNvbnRhY3QgZm9y bSB0byBiZSBjb21wbGV0ZWQgYmVmb3JlIHRoZSBmb3JtIGNhbiBiZSBzdWJtaXR0ZWQuIENh biBiZSBvdmVycmlkZGVuIG9uIGEgZmllbGQtYnktZmllbGQgYmFzaXMgYnkgdXNpbmcgdGhl IDxjb2RlPnJlcXVpcmVkPC9jb2RlPiBhdHRyaWJ1dGUgaW4gdGhlIHJlbGV2YW50IHRhZy4g QXZhaWxhYmxlIHZhbHVlczogPGNvZGU+MTwvY29kZT4gKHllcykgb3IgPGNvZGU+MDwvY29k ZT4gKG5vKS4gRGVmYXVsdCBpcyA8Y29kZT4xPC9jb2RlPi48L2xpPgoJPGxpPjxjb2RlPnNl bmRfYXJ0aWNsZT0mcXVvdDtib29sZWFuJnF1b3Q7PC9jb2RlPjxiciAvPgpXaGV0aGVyIHRv IHVzZSB0aGlzIGZvcm0gdG8gc2VuZCBhbiBhcnRpY2xlLiBBdmFpbGFibGUgdmFsdWVzOiA8 Y29kZT4xPC9jb2RlPiAoeWVzKSBvciA8Y29kZT4wPC9jb2RlPiAobm8pLiBEZWZhdWx0IGlz IDxjb2RlPjA8L2NvZGU+LjwvbGk+Cgk8bGk+PGNvZGU+c2hvd19lcnJvcj0mcXVvdDtib29s ZWFuJnF1b3Q7PC9jb2RlPjxiciAvPgpXaGV0aGVyIHRvIGRpc3BsYXkgZXJyb3IgYW5kIHN0 YXR1cyBtZXNzYWdlcy4gQXZhaWxhYmxlIHZhbHVlczogPGNvZGU+MTwvY29kZT4gKHllcykg b3IgPGNvZGU+MDwvY29kZT4gKG5vKS4gRGVmYXVsdCBpcyA8Y29kZT4xPC9jb2RlPi48L2xp PgoJPGxpPjxjb2RlPnNob3dfaW5wdXQ9JnF1b3Q7Ym9vbGVhbiZxdW90OzwvY29kZT48YnIg Lz4KV2hldGhlciB0byBkaXNwbGF5IHRoZSBmb3JtIDxjb2RlPiZsdDtpbnB1dCZndDs8L2Nv ZGU+IGZpZWxkcy4gQXZhaWxhYmxlIHZhbHVlczogPGNvZGU+MTwvY29kZT4gKHllcykgb3Ig PGNvZGU+MDwvY29kZT4gKG5vKS4gRGVmYXVsdCBpcyA8Y29kZT4xPC9jb2RlPi48L2xpPgoJ PGxpPjxjb2RlPnN1YmplY3Q9JnF1b3Q7c3ViamVjdCB0ZXh0JnF1b3Q7PC9jb2RlPjxiciAv PgpTdWJqZWN0IHVzZWQgd2hlbiBzZW5kaW5nIGFuIGVtYWlsLiBEZWZhdWx0IGlzIHRoZSBz aXRlIG5hbWUuPC9saT4KCTxsaT48Y29kZT5zdWJqZWN0X2Zvcm09JnF1b3Q7Zm9ybSBuYW1l JnF1b3Q7PC9jb2RlPjxiciAvPgpVc2Ugc3BlY2lmaWVkIGZvcm0gKG92ZXJyaWRlcyA8Y29k ZT5zdWJqZWN0PC9jb2RlPiBhdHRyaWJ1dGUpLjwvbGk+Cgk8bGk+PGNvZGU+dGhhbmtzPSZx dW90O3RleHQmcXVvdDs8L2NvZGU+PGJyIC8+Ck1lc3NhZ2Ugc2hvd24gYWZ0ZXIgc3VjY2Vz c2Z1bGx5IHN1Ym1pdHRpbmcgYSBtZXNzYWdlLiBEZWZhdWx0IGlzIDxjb2RlPlRoYW5rIHlv dSwgeW91ciBtZXNzYWdlIGhhcyBiZWVuIHNlbnQ8L2NvZGU+LjwvbGk+Cgk8bGk+PGNvZGU+ dGhhbmtzX2Zvcm09JnF1b3Q7Zm9ybSBuYW1lJnF1b3Q7PC9jb2RlPjxiciAvPgpVc2Ugc3Bl Y2lmaWVkIGZvcm0gKG92ZXJyaWRlcyA8Y29kZT50aGFua3M8L2NvZGU+IGF0dHJpYnV0ZSku PC9saT4KCTxsaT48Y29kZT50bz0mcXVvdDtlbWFpbCBhZGRyZXNzJnF1b3Q7PC9jb2RlPiA8 c3BhbiBjbGFzcz0id2FybmluZyI+cmVxdWlyZWQ8L3NwYW4+PGJyIC8+ClJlY2lwaWVudCBl bWFpbCBhZGRyZXNzLiBNdWx0aXBsZSByZWNpcGllbnRzIGNhbiBiZSBzcGVjaWZpZWQsIHNl cGFyYXRlZCBieSBjb21tYXMuPC9saT4KCTxsaT48Y29kZT50b19mb3JtPSZxdW90O2Zvcm0g bmFtZSZxdW90OzwvY29kZT48YnIgLz4KVXNlIHNwZWNpZmllZCBmb3JtIChvdmVycmlkZXMg PGNvZGU+dG88L2NvZGU+IGF0dHJpYnV0ZSkuPC9saT4KPC91bD4KCjxoND5FeGFtcGxlczwv aDQ+Cgo8aDU+RXhhbXBsZSAxPC9oNT4KCjxwPldoZW4gdXNlZCBhcyBhIHNpbmdsZSB0YWcs IHByb2R1Y2VzIGEgZGVmYXVsdCBmb3JtIHdpdGggJiM4MjE2O05hbWUmIzgyMTc7LCAmIzgy MTY7RW1haWwmIzgyMTc7IGFuZCAmIzgyMTY7TWVzc2FnZSYjODIxNzsgZmllbGRzLiBFbWFp bCB3aWxsIGJlIGRlbGl2ZXJlZCB0byA8Y29kZT5yZWNpcGllbnRAZXhhbXBsZS5jb208L2Nv ZGU+LCB3aXRoIHRoZSB1c2VyJiM4MjE3O3Mgc3VwcGxpZWQgZW1haWwgYXMgdGhlIDxjb2Rl PkZyb206PC9jb2RlPiBhZGRyZXNzOjwvcD4KCjxwcmUgY2xhc3M9Imxhbmd1YWdlLW1hcmt1 cCI+PGNvZGU+Jmx0O3R4cDpjb21fY29ubmVjdCB0bz0mcXVvdDtyZWNpcGllbnRAZXhhbXBs ZS5jb20mcXVvdDsgLyZndDs8L2NvZGU+PC9wcmU+Cgo8aDU+RXhhbXBsZSAyPC9oNT4KCjxw PldoZW4gdXNlZCBhcyBhIGNvbnRhaW5lciB0YWcsIG11Y2ggbW9yZSBmbGV4aWJpbGl0eSBp cyBhbGxvd2VkLCBmb3IgZXhhbXBsZTo8L3A+Cgo8cHJlIGNsYXNzPSJsYW5ndWFnZS1tYXJr dXAiPjxjb2RlPiZsdDt0eHA6Y29tX2Nvbm5lY3QgdG89JnF1b3Q7cmVjaXBpZW50QGV4YW1w bGUuY29tJnF1b3Q7Jmd0OwogICAgJmx0O3R4cDpjb21fY29ubmVjdF9lbWFpbCAvJmd0Owog ICAgJmx0O3R4cDpjb21fY29ubmVjdF90ZXh0IHR5cGU9JnF1b3Q7dGVsJnF1b3Q7IGxhYmVs PSZxdW90O1Bob25lJnF1b3Q7IG1pbj0mcXVvdDs3JnF1b3Q7IG1heD0mcXVvdDsxNSZxdW90 OyAvJmd0OwogICAgJmx0O3R4cDpjb21fY29ubmVjdF90ZXh0YXJlYSBsYWJlbD0mcXVvdDtZ b3VyIHF1ZXN0aW9uJnF1b3Q7IC8mZ3Q7CiAgICAmbHQ7dHhwOmNvbV9jb25uZWN0X3N1Ym1p dCBsYWJlbD0mcXVvdDtTZW5kJnF1b3Q7IC8mZ3Q7CiZsdDsvdHhwOmNvbV9jb25uZWN0Jmd0 OzwvY29kZT48L3ByZT4KCjxoNT5FeGFtcGxlIDM8L2g1PgoKPHA+RXhhbXBsZSB3aXRoIGN1 c3RvbSBlbWFpbCBtZXNzYWdlIGZvcm1hdHRpbmcsIGNhbGxlZCB2aWEgdGhlIDxjb2RlPmJv ZHlfZm9ybTwvY29kZT4gYXR0cmlidXRlOjwvcD4KCjxwcmUgY2xhc3M9Imxhbmd1YWdlLW1h cmt1cCI+PGNvZGU+Jmx0O3R4cDpjb21fY29ubmVjdCB0bz0mcXVvdDtyZWNpcGllbnRAZXhh bXBsZS5jb20mcXVvdDsgYm9keV9mb3JtPSZxdW90O21lc3NhZ2UtZm9ybWF0dGluZyZxdW90 OyAvJmd0OzwvY29kZT48L3ByZT4KCjxwPkFuZCB0aGUgPGNvZGU+Ym9keV9mb3JtPC9jb2Rl PiBmb3JtIHRlbXBsYXRlIG5hbWVkIDxjb2RlPm1lc3NhZ2UtZm9ybWF0dGluZzwvY29kZT4g aXMgYXMgZm9sbG93czo8L3A+Cgo8cHJlPjxjb2RlPj09PT09PT09PT09PQpFbWFpbCByZWNl aXZlZC4KCiZsdDt0eHA6Y29tX2Nvbm5lY3RfaWYgbmFtZT0mcXVvdDtlbWFpbCZxdW90OyZn dDsmbHQ7dHhwOmNvbV9jb25uZWN0X2xhYmVsIG5hbWU9JnF1b3Q7ZW1haWwmcXVvdDsgLyZn dDs6ICZsdDt0eHA6Y29tX2Nvbm5lY3RfdmFsdWUgbmFtZT0mcXVvdDtlbWFpbCZxdW90OyAv Jmd0OyZsdDt0eHA6ZWxzZSAvJmd0O01yLiBOb2JvZHkmbHQ7L3R4cDpjb21fY29ubmVjdF9p ZiZndDsgd3JvdGU6CgombHQ7dHhwOmNvbV9jb25uZWN0X2lmIG5hbWU9JnF1b3Q7bWVzc2Fn ZSZxdW90OyZndDsmbHQ7dHhwOmNvbV9jb25uZWN0X3ZhbHVlIG5hbWU9JnF1b3Q7bWVzc2Fn ZSZxdW90OyAvJmd0OyZsdDt0eHA6ZWxzZSAvJmd0O05vdGhpbmcgbXVjaCA6KCZsdDsvdHhw OmNvbV9jb25uZWN0X2lmJmd0OwoKPT09PT09PT09PT09PC9jb2RlPjwvcHJlPgoKPGgzIGlk PSJjY190ZXh0Ij5jb21fY29ubmVjdF90ZXh0IHRhZzwvaDM+Cgo8cHJlIGNsYXNzPSJsYW5n dWFnZS1tYXJrdXAiPjxjb2RlPiZsdDt0eHA6Y29tX2Nvbm5lY3RfdGV4dCAvJmd0OzwvY29k ZT48L3ByZT4KCjxwPkNyZWF0ZXMgYSB0ZXh0IDxjb2RlPiZsdDtpbnB1dCZndDs8L2NvZGU+ IGZpZWxkIGFuZCBjb3JyZXNwb25kaW5nIDxjb2RlPiZsdDtsYWJlbCZndDs8L2NvZGU+IHRh Zy4gVGhlIGlucHV0IHZhbHVlIHdpbGwgYmUgaW5jbHVkZWQgaW4gdGhlIGVtYWlsLCBwcmVj ZWRlZCBieSB0aGUgbGFiZWwuPGJyIC8+CkNyZWF0ZXMgYSB0ZXh0IDxjb2RlPiZsdDtpbnB1 dCZndDs8L2NvZGU+IGZpZWxkLiBUaGUgaW5wdXQgdmFsdWUgd2lsbCBiZSBpbmNsdWRlZCBp biB0aGUgZW1haWwsIHByZWNlZGVkIGJ5IHRoZSBsYWJlbC48L3A+Cgo8aDQ+QXR0cmlidXRl czwvaDQ+Cgo8dWw+Cgk8bGk+PGNvZGU+YXV0b2NvbXBsZXRlPSZxdW90O3ZhbHVlJnF1b3Q7 PC9jb2RlPjxiciAvPgpJbmRpY2F0ZXMgd2hldGhlciB0aGUgdmFsdWUgb2YgdGhlIGNvbnRy b2wgY2FuIGJlIGF1dG9tYXRpY2FsbHkgY29tcGxldGVkIGJ5IHRoZSBicm93c2VyLiBUaGlz IGF0dHJpYnV0ZSBpcyBpZ25vcmVkIGlmIHRoZSB2YWx1ZSBvZiB0aGUgdHlwZSBhdHRyaWJ1 dGUgaXMgPGNvZGU+cGFzc3dvcmQ8L2NvZGU+LiBQb3NzaWJsZSB2YWx1ZXMgYXJlOiA8Y29k ZT5vZmY8L2NvZGU+ICh0aGUgYnJvd3NlciBkb2VzIG5vdCBhdXRvbWF0aWNhbGx5IGNvbXBs ZXRlIHRoZSBlbnRyeSkgb3IgPGNvZGU+b248L2NvZGU+ICh0aGUgYnJvd3NlciBjYW4gYXV0 b21hdGljYWxseSBjb21wbGV0ZSB0aGUgdmFsdWUgYmFzZWQgb24gdmFsdWVzIHRoYXQgdGhl IHVzZXIgaGFzIGVudGVyZWQgZHVyaW5nIHByZXZpb3VzIHVzZXMpLiBEZWZhdWx0IGlzIHVu c2V0LjwvbGk+Cgk8bGk+PGNvZGU+YnJlYWs9JnF1b3Q7dGFnJnF1b3Q7PC9jb2RlPjxiciAv PgpCcmVhayB0YWcgYmV0d2VlbiB0aGUgPGNvZGU+Jmx0O2xhYmVsJmd0OzwvY29kZT4gYW5k IDxjb2RlPiZsdDtpbnB1dCZndDs8L2NvZGU+IGZpZWxkLiBEZWZhdWx0IGlzIDxjb2RlPiZs dDticiAvJmd0OzwvY29kZT4uIFVzZSA8Y29kZT5icmVhaz0mcXVvdDsmcXVvdDs8L2NvZGU+ IHRvIHB1dCB0aGUgbGFiZWwgYW5kIGlucHV0IGZpZWxkIG9uIHRoZSBzYW1lIGxpbmUuPC9s aT4KCTxsaT48Y29kZT5jbGFzcz0mcXVvdDtzcGFjZS1zZXBhcmF0ZWQgdmFsdWVzJnF1b3Q7 PC9jb2RlPjxiciAvPgogU2V0IHRoZSA8c3BhbiBjbGFzcz0iY2FwcyI+Q1NTPC9zcGFuPiA8 Y29kZT5jbGFzczwvY29kZT4gbmFtZSBvZiB0aGUgdGFnLiBEZWZhdWx0OiA8Y29kZT5jb21U ZXh0PC9jb2RlPi4gVG8gcmVtb3ZlIDxjb2RlPmNsYXNzPC9jb2RlPiBhdHRyaWJ1dGUgZnJv bSB0aGUgZWxlbWVudCBlbnRpcmVseSwgdXNlIDxjb2RlPmNsYXNzPSZxdW90OyZxdW90Ozwv Y29kZT4uPC9saT4KCTxsaT48Y29kZT5kZWZhdWx0PSZxdW90O3ZhbHVlJnF1b3Q7PC9jb2Rl PjxiciAvPgpEZWZhdWx0IHZhbHVlIHdoZW4gbm8gaW5wdXQgaXMgcHJvdmlkZWQuPC9saT4K CTxsaT48Y29kZT5odG1sX2Zvcm09JnF1b3Q7aWQmcXVvdDs8L2NvZGU+PGJyIC8+ClRoZSA8 c3BhbiBjbGFzcz0iY2FwcyI+SFRNTDwvc3Bhbj4gPGNvZGU+aWQ8L2NvZGU+IG9mIHRoZSA8 Y29kZT4mbHQ7Zm9ybSZndDs8L2NvZGU+IHRhZyB0byB3aGljaCB0aGUgZmllbGQgaXMgYXR0 YWNoZWQuIEFzc29jaWF0ZWQgd2l0aCB0aGUgY29udGFpbmVkIGZvcm0gYnkgZGVmYXVsdC48 L2xpPgoJPGxpPjxjb2RlPmlucHV0bW9kZT0mcXVvdDt2YWx1ZSZxdW90OzwvY29kZT48YnIg Lz4KQSBoaW50IHRvIHRoZSBicm93c2VyIGZvciB3aGljaCBrZXlib2FyZCB0byBkaXNwbGF5 LiBUaGlzIGF0dHJpYnV0ZSBhcHBsaWVzIHdoZW4gdGhlIHZhbHVlIG9mIHRoZSB0eXBlIGF0 dHJpYnV0ZSBpcyA8Y29kZT50ZXh0PC9jb2RlPiwgPGNvZGU+cGFzc3dvcmQ8L2NvZGU+IG9y IDxjb2RlPnVybDwvY29kZT4uIFBvc3NpYmxlIHZhbHVlcyBhcmU6Cgk8dWw+CgkJPGxpPjxj b2RlPnZlcmJhdGltPC9jb2RlPjogQWxwaGFudW1lcmljLCBub24tcHJvc2UgY29udGVudCBz dWNoIGFzIHVzZXJuYW1lcyBhbmQgcGFzc3dvcmRzLjwvbGk+CgkJPGxpPjxjb2RlPmxhdGlu PC9jb2RlPjogTGF0aW4tc2NyaXB0IGlucHV0IGluIHRoZSB1c2VyJiM4MjE3O3MgcHJlZmVy cmVkIGxhbmd1YWdlIHdpdGggdHlwaW5nIGFpZHMgc3VjaCBhcyB0ZXh0IHByZWRpY3Rpb24g ZW5hYmxlZC4gRm9yIGh1bWFuLXRvLWNvbXB1dGVyIGNvbW11bmljYXRpb24gc3VjaCBhcyBz ZWFyY2ggYm94ZXMuPC9saT4KCQk8bGk+PGNvZGU+bGF0aW4tbmFtZTwvY29kZT46IEFzIGxh dGluLCBidXQgZm9yIGh1bWFuIG5hbWVzLjwvbGk+CgkJPGxpPjxjb2RlPmxhdGluLXByb3Nl PC9jb2RlPjogQXMgbGF0aW4sIGJ1dCB3aXRoIG1vcmUgYWdncmVzc2l2ZSB0eXBpbmcgYWlk cy4gRm9yIGh1bWFuLXRvLWh1bWFuIGNvbW11bmljYXRpb24gc3VjaCBhcyBpbnN0YW50IG1l c3NhZ2luZyBmb3IgZW1haWwuPC9saT4KCQk8bGk+PGNvZGU+ZnVsbC13aWR0aC1sYXRpbjwv Y29kZT46IEFzIGxhdGluLXByb3NlLCBidXQgZm9yIHRoZSB1c2VyJiM4MjE3O3Mgc2Vjb25k YXJ5IGxhbmd1YWdlcy48L2xpPgoJCTxsaT48Y29kZT5rYW5hPC9jb2RlPjogS2FuYSBvciBy b21hamkgaW5wdXQsIHR5cGljYWxseSBoaXJhZ2FuYSBpbnB1dCwgdXNpbmcgZnVsbC13aWR0 aCBjaGFyYWN0ZXJzLCB3aXRoIHN1cHBvcnQgZm9yIGNvbnZlcnRpbmcgdG8ga2FuamkuIElu dGVuZGVkIGZvciBKYXBhbmVzZSB0ZXh0IGlucHV0LjwvbGk+CgkJPGxpPjxjb2RlPmthdGFr YW5hPC9jb2RlPjogS2F0YWthbmEgaW5wdXQsIHVzaW5nIGZ1bGwtd2lkdGggY2hhcmFjdGVy cywgd2l0aCBzdXBwb3J0IGZvciBjb252ZXJ0aW5nIHRvIGthbmppLiBJbnRlbmRlZCBmb3Ig SmFwYW5lc2UgdGV4dCBpbnB1dC48L2xpPgoJCTxsaT48Y29kZT5udW1lcmljPC9jb2RlPjog TnVtZXJpYyBpbnB1dCwgaW5jbHVkaW5nIGtleXMgZm9yIHRoZSBkaWdpdHMgMCB0byA5LCB0 aGUgdXNlciYjODIxNztzIHByZWZlcnJlZCB0aG91c2FuZHMgc2VwYXJhdG9yIGNoYXJhY3Rl ciwgYW5kIHRoZSBjaGFyYWN0ZXIgZm9yIGluZGljYXRpbmcgbmVnYXRpdmUgbnVtYmVycy4g SW50ZW5kZWQgZm9yIG51bWVyaWMgY29kZXMsIGUuZy4gY3JlZGl0IGNhcmQgbnVtYmVycy4g Rm9yIGFjdHVhbCBudW1iZXJzLCBwcmVmZXIgdXNpbmcgPGNvZGU+dHlwZT0mcXVvdDtudW1i ZXImcXVvdDs8L2NvZGU+LjwvbGk+CgkJPGxpPjxjb2RlPnRlbDwvY29kZT46IFRlbGVwaG9u ZSBpbnB1dCwgaW5jbHVkaW5nIGFzdGVyaXNrIGFuZCBwb3VuZCBrZXkuIFVzZSA8Y29kZT50 eXBlPSZxdW90O3RlbCZxdW90OzwvY29kZT4gaWYgcG9zc2libGUgaW5zdGVhZC48L2xpPgoJ CTxsaT48Y29kZT5lbWFpbDwvY29kZT46IEVtYWlsIGlucHV0LiBVc2UgPGNvZGU+Jmx0O3R4 cDpjb21fY29ubmVjdF9lbWFpbCAvJmd0OzwvY29kZT4gaWYgcG9zc2libGUgaW5zdGVhZC48 L2xpPgoJCTxsaT48Y29kZT51cmw8L2NvZGU+OiA8c3BhbiBjbGFzcz0iY2FwcyI+VVJMPC9z cGFuPiBpbnB1dC4gVXNlIDxjb2RlPnR5cGU9JnF1b3Q7dXJsJnF1b3Q7PC9jb2RlPiBpZiBw b3NzaWJsZSBpbnN0ZWFkLjwvbGk+Cgk8L3VsPjwvbGk+Cgk8bGk+PGNvZGU+bGFiZWw9JnF1 b3Q7dGV4dCZxdW90OzwvY29kZT48YnIgLz4KVGV4dCBsYWJlbCBkaXNwbGF5ZWQgdG8gdGhl IHVzZXIuIERlZmF1bHQgaXMgPGNvZGU+VGV4dDwvY29kZT4uPC9saT4KCTxsaT48Y29kZT5s YWJlbF9wb3NpdGlvbj0mcXVvdDt0ZXh0JnF1b3Q7PC9jb2RlPjxiciAvPgpQb3NpdGlvbiBv ZiB0aGUgbGFiZWwgaW4gcmVsYXRpb24gdG8gdGhlIDxjb2RlPiZsdDtpbnB1dCZndDs8L2Nv ZGU+IGZpZWxkLiBBdmFpbGFibGUgdmFsdWVzOiA8Y29kZT5iZWZvcmU8L2NvZGU+IG9yIDxj b2RlPmFmdGVyPC9jb2RlPi4gRGVmYXVsdCBpcyA8Y29kZT5iZWZvcmU8L2NvZGU+LjwvbGk+ Cgk8bGk+PGNvZGU+bWF4PXZhbHVlJnF1b3Q7PC9jb2RlPjxiciAvPgpGb3IgY2hhcmFjdGVy LWJhc2VkIGlucHV0cywgdGhlIG1heGltdW0gaW5wdXQgdmFsdWUgbGVuZ3RoIGluIGNoYXJh Y3RlcnMsIHVzaW5nIHRoZSBIVE1MNSA8Y29kZT5tYXhsZW5ndGg8L2NvZGU+IGF0dHJpYnV0 ZS4gVG8gcmVtb3ZlIDxjb2RlPm1heGxlbmd0aDwvY29kZT4gYXR0cmlidXRlIGZyb20gdGhl IGVsZW1lbnQgZW50aXJlbHkgKG5vdCByZWNvbW1lbmRlZCksIHVzZSA8Y29kZT5tYXg9JnF1 b3Q7JnF1b3Q7PC9jb2RlPi4gRm9yIG51bWVyaWMtYmFzZWQgaW5wdXRzLCB0aGUgbWF4aW11 bSBpbnB1dCB2YWx1ZSB0aGUgZmllbGQgYWNjZXB0cywgdXNpbmcgdGhlIEhUTUw1IDxjb2Rl Pm1heDwvY29kZT4gYXR0cmlidXRlIChjYW4gYmUgYSBuZWdhdGl2ZSB2YWx1ZSkuIERlZmF1 bHQgaXMgPGNvZGU+MTAwPC9jb2RlPi4gVG8gcmVtb3ZlIDxjb2RlPm1heDwvY29kZT4gYXR0 cmlidXRlIGZyb20gdGhlIG51bWVyaWNhbCBpbnB1dCBlbGVtZW50IGVudGlyZWx5LCB1c2Ug PGNvZGU+bWF4PSZxdW90OyZxdW90OzwvY29kZT4uPC9saT4KCTxsaT48Y29kZT5taW49JnF1 b3Q7dmFsdWUmcXVvdDs8L2NvZGU+PGJyIC8+CkZvciBjaGFyYWN0ZXItYmFzZWQgaW5wdXRz LCB0aGUgbWluaW11bSBpbnB1dCB2YWx1ZSBsZW5ndGggaW4gY2hhcmFjdGVycywgdXNpbmcg dGhlIEhUTUw1IDxjb2RlPm1pbmxlbmd0aDwvY29kZT4gYXR0cmlidXRlLiBEZWZhdWx0IGlz IHVuc2V0LCBpLmUuLCBubyBtaW5pbXVtIGxpbWl0LiBGb3IgbnVtZXJpYy1iYXNlZCBpbnB1 dHMsIHRoZSBtaW5pbXVtIGlucHV0IHZhbHVlIHRoZSBmaWVsZCBhY2NlcHRzLCB1c2luZyB0 aGUgSFRNTDUgPGNvZGU+bWluPC9jb2RlPiBhdHRyaWJ1dGUgKGNhbiBiZSBhIG5lZ2F0aXZl IHZhbHVlKS4gRGVmYXVsdCBpcyA8Y29kZT4wPC9jb2RlPi4gVG8gcmVtb3ZlIDxjb2RlPm1p bjwvY29kZT4gYXR0cmlidXRlIGZyb20gdGhlIG51bWVyaWNhbCBpbnB1dCBlbGVtZW50IGVu dGlyZWx5LCB1c2UgPGNvZGU+bWluPSZxdW90OyZxdW90OzwvY29kZT4uPC9saT4KCTxsaT48 Y29kZT5uYW1lPSZxdW90O3ZhbHVlJnF1b3Q7PC9jb2RlPjxiciAvPgpGaWVsZCBuYW1lLCBh cyB1c2VkIGluIHRoZSA8c3BhbiBjbGFzcz0iY2FwcyI+SFRNTDwvc3Bhbj4gPGNvZGU+Jmx0 O2lucHV0Jmd0OzwvY29kZT4gdGFnLjwvbGk+Cgk8bGk+PGNvZGU+cGF0dGVybj0mcXVvdDty ZWdleCZxdW90OzwvY29kZT48YnIgLz4KUmVndWxhciBleHByZXNzaW9uIHRoYXQgZ292ZXJu cyB0aGUgZm9ybWF0IGluIHdoaWNoIHRoZSBmaWVsZCBkYXRhIGlzIGV4cGVjdGVkLiBPbmx5 IHVzZWQgZm9yIGNoYXJhY3Rlci1iYXNlZCBpbnB1dHMuPC9saT4KCTxsaT48Y29kZT5wbGFj ZWhvbGRlcj0mcXVvdDt0ZXh0JnF1b3Q7PC9jb2RlPjxiciAvPgpUZXh0IHRvIHNob3cgYXMg YSBndWlkZSwgd2hlbiB0aGUgPGNvZGU+Jmx0O2lucHV0Jmd0OzwvY29kZT4gZmllbGQgaXMg ZW1wdHkuPC9saT4KCTxsaT48Y29kZT5yZXF1aXJlZD0mcXVvdDtib29sZWFuJnF1b3Q7PC9j b2RlPjxiciAvPgpXaGV0aGVyIHRoaXMgZmllbGQgbXVzdCBiZSBmaWxsZWQgb3V0LiBBdmFp bGFibGUgdmFsdWVzOiA8Y29kZT4xPC9jb2RlPiAoeWVzKSBvciA8Y29kZT4wPC9jb2RlPiAo bm8pLiBEZWZhdWx0IGlzIHdoYXRldmVyIGlzIHNldCBpbiB0aGUgPGNvZGU+Jmx0O3R4cDpj b21fY29ubmVjdCZndDs8L2NvZGU+IHRhZyYjODIxNztzIDxjb2RlPnJlcXVpcmVkPC9jb2Rl PiBhdHRyaWJ1dGUgJiM4MjExOyBpZiBuZWl0aGVyIGF0dHJpYnV0ZSBpcyBzZXQgdGhlbiBk ZWZhdWx0IGlzIDxjb2RlPjE8L2NvZGU+LjwvbGk+Cgk8bGk+PGNvZGU+c2l6ZT0mcXVvdDt2 YWx1ZSZxdW90OzwvY29kZT48YnIvPlRoZSBzaXplLCBpbiBjaGFyYWN0ZXJzLCBvZiB0aGUg PGNvZGU+Jmx0O2lucHV0Jmd0OzwvY29kZT4gZmllbGQuPC9saT4KCTxsaT48Y29kZT5zdGVw PSZxdW90O3ZhbHVlJnF1b3Q7PC9jb2RlPjxiciAvPgpGb3IgbnVtZXJpYy1iYXNlZCBpbnB1 dHMsIHRoZSBpbnRlcnZhbCBiZXR3ZWVuIG1pbiBhbmQgbWF4LjwvbGk+Cgk8bGk+PGNvZGU+ dHlwZT0mcXVvdDt2YWx1ZSZxdW90OzwvY29kZT48YnIgLz4KVHlwZSBvZiB0ZXh0IGlucHV0 LiBEZWZhdWx0IGlzIDxjb2RlPnRleHQ8L2NvZGU+LiBDaG9vc2UgZnJvbToKCTx1bD4KCQk8 bGk+PGNvZGU+Y29sb3I8L2NvZGU+PC9saT4KCQk8bGk+PGNvZGU+ZGF0ZTwvY29kZT48L2xp PgoJCTxsaT48Y29kZT5kYXRldGltZTwvY29kZT48L2xpPgoJCTxsaT48Y29kZT5kYXRldGlt ZS1sb2NhbDwvY29kZT48L2xpPgoJCTxsaT48Y29kZT5tb250aDwvY29kZT48L2xpPgoJCTxs aT48Y29kZT5udW1iZXI8L2NvZGU+PC9saT4KCQk8bGk+PGNvZGU+cGFzc3dvcmQ8L2NvZGU+ PC9saT4KCQk8bGk+PGNvZGU+cmFuZ2U8L2NvZGU+PC9saT4KCQk8bGk+PGNvZGU+c2VhcmNo PC9jb2RlPjwvbGk+CgkJPGxpPjxjb2RlPnRlbDwvY29kZT48L2xpPgoJCTxsaT48Y29kZT50 ZXh0PC9jb2RlPjwvbGk+CgkJPGxpPjxjb2RlPnRpbWU8L2NvZGU+PC9saT4KCQk8bGk+PGNv ZGU+dXJsPC9jb2RlPjwvbGk+CgkJPGxpPjxjb2RlPndlZWs8L2NvZGU+PC9saT4KCTwvdWw+ PC9saT4KCTwvdWw+Cgo8aDQ+RXhhbXBsZXM8L2g0PgoKPGg1PkV4YW1wbGUgMTwvaDU+Cgo8 cHJlIGNsYXNzPSJsYW5ndWFnZS1tYXJrdXAiPjxjb2RlPiZsdDt0eHA6Y29tX2Nvbm5lY3Rf dGV4dCBsYWJlbD0mcXVvdDtZb3VyIG5hbWUmcXVvdDsgLyZndDs8L2NvZGU+PC9wcmU+Cgo8 aDU+RXhhbXBsZSAyPC9oNT4KCjxwcmUgY2xhc3M9Imxhbmd1YWdlLW1hcmt1cCI+PGNvZGU+ Jmx0O3R4cDpjb21fY29ubmVjdF90ZXh0IHR5cGU9JnF1b3Q7cmFuZ2UmcXVvdDsgbGFiZWw9 JnF1b3Q7VUsgc2hvZSBzaXplJnF1b3Q7IG1pbj0mcXVvdDsxJnF1b3Q7IG1heD0mcXVvdDsx NSZxdW90OyAvJmd0OzwvY29kZT48L3ByZT4KCjxoNT5FeGFtcGxlIDM8L2g1PgoKPHA+Q3Jl YXRlIGEgdGVsZXBob25lIGZpZWxkIHdpdGggYSA8YSBocmVmPSJodHRwOi8vaHRtbDVwYXR0 ZXJuLmNvbS9QaG9uZXMiPnZhbGlkYXRpb24gcGF0dGVybiBmb3IgVUsgdGVsZXBob25lIG51 bWJlcjwvYT4gZm9ybWF0OjwvcD4KCjxwcmUgY2xhc3M9Imxhbmd1YWdlLW1hcmt1cCI+PGNv ZGU+Jmx0O3R4cDpjb21fY29ubmVjdF90ZXh0IHR5cGU9JnF1b3Q7dGVsJnF1b3Q7IGxhYmVs PSZxdW90O1RlbGVwaG9uZSZxdW90OyBwYXR0ZXJuPSZxdW90O15ccypcKD8oMDIwWzcsOF17 MX1cKT9bIF0/WzEtOV17MX1bMC05ezJ9WyBdP1swLTldezR9KXwoMFsxLThdezF9WzAtOV17 M31cKT9bIF0/WzEtOV17MX1bMC05XXsyfVsgXT9bMC05XXszfSlccyokJnF1b3Q7IHJlcXVp cmVkPSZxdW90OzEmcXVvdDsgLyZndDs8L2NvZGU+PC9wcmU+Cgo8aDMgaWQ9ImNjX2VtYWls Ij5jb21fY29ubmVjdF9lbWFpbCB0YWc8L2gzPgoKPHByZSBjbGFzcz0ibGFuZ3VhZ2UtbWFy a3VwIj48Y29kZT4mbHQ7dHhwOmNvbV9jb25uZWN0X2VtYWlsIC8mZ3Q7PC9jb2RlPjwvcHJl PgoKPHA+PGNvZGU+Jmx0O2lucHV0Jmd0OzwvY29kZT4gZmllbGQgZm9yIHVzZXImIzgyMTc7 cyBlbWFpbCBhZGRyZXNzLjwvcD4KCjxwPlRoZSBlbnRlcmVkIGVtYWlsIGFkZHJlc3Mgd2ls bCBhdXRvbWF0aWNhbGx5IGJlIHZhbGlkYXRlZCB0byBtYWtlIHN1cmUgaXQgaXMgb2YgdGhl IGZvcm0gJiM4MjIwO2FiY0B4eHgueXl5Wy56enpdJiM4MjIxOy4gT24gbm9uLVdpbmRvd3Mg c2VydmVycywgYSB0ZXN0IHdpbGwgYmUgZG9uZSB0byB2ZXJpZnkgdGhhdCBhbiBBIG9yIE1Y IHJlY29yZCBleGlzdHMgZm9yIHRoZSBkb21haW4uIE5laXRoZXIgdGVzdCBwcmV2ZW50cyBz cGFtLCBidXQgaXQgZG9lcyBoZWxwIGRldGVjdCBhY2NpZGVudGFsIHR5cGluZyBlcnJvcnMu PC9wPgoKPGg0PkF0dHJpYnV0ZXM8L2g0PgoKPHVsPgoJPGxpPjxjb2RlPmF1dG9jb21wbGV0 ZT0mcXVvdDt2YWx1ZSZxdW90OzwvY29kZT48YnIgLz4KSW5kaWNhdGVzIHdoZXRoZXIgdGhl IHZhbHVlIG9mIHRoZSBjb250cm9sIGNhbiBiZSBhdXRvbWF0aWNhbGx5IGNvbXBsZXRlZCBi eSB0aGUgYnJvd3Nlci4gUG9zc2libGUgdmFsdWVzIGFyZTogPGNvZGU+b2ZmPC9jb2RlPiAo dGhlIGJyb3dzZXIgZG9lcyBub3QgYXV0b21hdGljYWxseSBjb21wbGV0ZSB0aGUgZW50cnkp IG9yIDxjb2RlPm9uPC9jb2RlPiAodGhlIGJyb3dzZXIgY2FuIGF1dG9tYXRpY2FsbHkgY29t cGxldGUgdGhlIHZhbHVlIGJhc2VkIG9uIHZhbHVlcyB0aGF0IHRoZSB1c2VyIGhhcyBlbnRl cmVkIGR1cmluZyBwcmV2aW91cyB1c2VzKS4gRGVmYXVsdCBpcyB1bnNldC48L2xpPgoJPGxp Pjxjb2RlPmJyZWFrPSZxdW90O3RhZyZxdW90OzwvY29kZT48YnIgLz4KQnJlYWsgdGFnIGJl dHdlZW4gdGhlIDxjb2RlPiZsdDtsYWJlbCZndDs8L2NvZGU+IGFuZCA8Y29kZT4mbHQ7aW5w dXQmZ3Q7PC9jb2RlPiBmaWVsZC4gRGVmYXVsdCBpcyA8Y29kZT4mbHQ7YnIgLyZndDs8L2Nv ZGU+LiBVc2UgPGNvZGU+YnJlYWs9JnF1b3Q7JnF1b3Q7PC9jb2RlPiB0byBwdXQgdGhlIGxh YmVsIGFuZCBpbnB1dCBmaWVsZCBvbiB0aGUgc2FtZSBsaW5lLjwvbGk+Cgk8bGk+PGNvZGU+ Y2xhc3M9JnF1b3Q7c3BhY2Utc2VwYXJhdGVkIHZhbHVlcyZxdW90OzwvY29kZT48YnIgLz4K IFNldCB0aGUgPHNwYW4gY2xhc3M9ImNhcHMiPkNTUzwvc3Bhbj4gPGNvZGU+Y2xhc3M8L2Nv ZGU+IG5hbWUgb2YgdGhlIHRhZy4gRGVmYXVsdDogPGNvZGU+Y29tRW1haWw8L2NvZGU+LiBU byByZW1vdmUgPGNvZGU+Y2xhc3M8L2NvZGU+IGF0dHJpYnV0ZSBmcm9tIHRoZSBlbGVtZW50 IGVudGlyZWx5LCB1c2UgPGNvZGU+Y2xhc3M9JnF1b3Q7JnF1b3Q7PC9jb2RlPi48L2xpPgoJ PGxpPjxjb2RlPmRlZmF1bHQ9JnF1b3Q7dmFsdWUmcXVvdDs8L2NvZGU+PGJyIC8+CkRlZmF1 bHQgdmFsdWUgd2hlbiBubyBpbnB1dCBpcyBwcm92aWRlZC48L2xpPgoJPGxpPjxjb2RlPmh0 bWxfZm9ybT0mcXVvdDtpZCZxdW90OzwvY29kZT48YnIgLz4KVGhlIDxzcGFuIGNsYXNzPSJj YXBzIj5IVE1MPC9zcGFuPiA8Y29kZT5pZDwvY29kZT4gb2YgdGhlIDxjb2RlPiZsdDtmb3Jt Jmd0OzwvY29kZT4gdGFnIHRvIHdoaWNoIHRoZSBmaWVsZCBpcyBhdHRhY2hlZC4gQXNzb2Np YXRlZCB3aXRoIHRoZSBjb250YWluZWQgZm9ybSBieSBkZWZhdWx0LjwvbGk+Cgk8bGk+PGNv ZGU+bGFiZWw9JnF1b3Q7dGV4dCZxdW90OzwvY29kZT48YnIgLz4KVGV4dCBsYWJlbCBkaXNw bGF5ZWQgdG8gdGhlIHVzZXIuIERlZmF1bHQgaXMgPGNvZGU+RW1haWw8L2NvZGU+LjwvbGk+ Cgk8bGk+PGNvZGU+bGFiZWxfcG9zaXRpb249JnF1b3Q7dGV4dCZxdW90OzwvY29kZT48YnIg Lz4KUG9zaXRpb24gb2YgdGhlIGxhYmVsIGluIHJlbGF0aW9uIHRvIHRoZSA8Y29kZT4mbHQ7 aW5wdXQmZ3Q7PC9jb2RlPiBmaWVsZC4gQXZhaWxhYmxlIHZhbHVlczogPGNvZGU+YmVmb3Jl PC9jb2RlPiBvciA8Y29kZT5hZnRlcjwvY29kZT4uIERlZmF1bHQgaXMgPGNvZGU+YmVmb3Jl PC9jb2RlPi48L2xpPgoJPGxpPjxjb2RlPm1heD0mcXVvdDtpbnRlZ2VyJnF1b3Q7PC9jb2Rl PjxiciAvPgpNYXhpbXVtIGlucHV0IHZhbHVlIGxlbmd0aCBpbiBjaGFyYWN0ZXJzLCB1c2lu ZyB0aGUgSFRNTDUgPGNvZGU+bWF4bGVuZ3RoPC9jb2RlPiBhdHRyaWJ1dGUuIERlZmF1bHQg aXMgPGNvZGU+MTAwPC9jb2RlPi4gVG8gcmVtb3ZlIDxjb2RlPm1heGxlbmd0aDwvY29kZT4g YXR0cmlidXRlIGZyb20gdGhlIGVsZW1lbnQgZW50aXJlbHkgKG5vdCByZWNvbW1lbmRlZCks IHVzZSA8Y29kZT5tYXg9JnF1b3Q7JnF1b3Q7PC9jb2RlPi48L2xpPgoJPGxpPjxjb2RlPm1p bj0mcXVvdDtpbnRlZ2VyJnF1b3Q7PC9jb2RlPjxiciAvPgpNaW5pbXVtIGlucHV0IHZhbHVl IGxlbmd0aCBpbiBjaGFyYWN0ZXJzLCB1c2luZyB0aGUgSFRNTDUgPGNvZGU+bWlubGVuZ3Ro PC9jb2RlPiBhdHRyaWJ1dGUuIERlZmF1bHQgaXMgdW5zZXQsIGkuZS4sIG5vIG1pbmltdW0g bGltaXQuPC9saT4KCTxsaT48Y29kZT5uYW1lPSZxdW90O3ZhbHVlJnF1b3Q7PC9jb2RlPjxi ciAvPgpGaWVsZCBuYW1lLCBhcyB1c2VkIGluIHRoZSA8c3BhbiBjbGFzcz0iY2FwcyI+SFRN TDwvc3Bhbj4gPGNvZGU+Jmx0O2lucHV0Jmd0OzwvY29kZT4gdGFnLjwvbGk+Cgk8bGk+PGNv ZGU+cGxhY2Vob2xkZXI9JnF1b3Q7dGV4dCZxdW90OzwvY29kZT48YnIgLz4KVGV4dCB0byBz aG93IGFzIGEgZ3VpZGUsIHdoZW4gdGhlIDxjb2RlPiZsdDtpbnB1dCZndDs8L2NvZGU+IGZp ZWxkIGlzIGVtcHR5LjwvbGk+Cgk8bGk+PGNvZGU+cmVxdWlyZWQ9JnF1b3Q7Ym9vbGVhbiZx dW90OzwvY29kZT48YnIgLz4KV2hldGhlciB0aGlzIGZpZWxkIG11c3QgYmUgZmlsbGVkIG91 dC4gQXZhaWxhYmxlIHZhbHVlczogPGNvZGU+MTwvY29kZT4gKHllcykgb3IgPGNvZGU+MDwv Y29kZT4gKG5vKS4gRGVmYXVsdCBpcyB3aGF0ZXZlciBpcyBzZXQgaW4gdGhlIDxjb2RlPiZs dDt0eHA6Y29tX2Nvbm5lY3QmZ3Q7PC9jb2RlPiB0YWcmIzgyMTc7cyA8Y29kZT5yZXF1aXJl ZDwvY29kZT4gYXR0cmlidXRlICYjODIxMTsgaWYgbmVpdGhlciBhdHRyaWJ1dGUgaXMgc2V0 IHRoZW4gZGVmYXVsdCBpcyA8Y29kZT4xPC9jb2RlPi48L2xpPgoJPGxpPjxjb2RlPnNlbmRf YXJ0aWNsZT0mcXVvdDtib29sZWFuJnF1b3Q7PC9jb2RlPjxiciAvPgpXaGV0aGVyIHRoaXMg ZmllbGQgaXMgdXNlZCBhcyB0aGUgcmVjaXBpZW50IGVtYWlsIGFkZHJlc3Mgd2hlbiB1c2lu ZyB0aGUgc2VuZF9hcnRpY2xlIGZ1bmN0aW9uLiBBdmFpbGFibGUgdmFsdWVzOiA8Y29kZT4x PC9jb2RlPiAoeWVzKSBvciA8Y29kZT4wPC9jb2RlPiAobm8pLiBEZWZhdWx0IGlzIDxjb2Rl PjA8L2NvZGU+LjwvbGk+Cgk8bGk+PGNvZGU+c2l6ZT0mcXVvdDt2YWx1ZSZxdW90OzwvY29k ZT48YnIvPlRoZSBzaXplLCBpbiBjaGFyYWN0ZXJzLCBvZiB0aGUgPGNvZGU+Jmx0O2lucHV0 Jmd0OzwvY29kZT4gZmllbGQuPC9saT4KPC91bD4KCjxoND5FeGFtcGxlczwvaDQ+Cgo8aDU+ RXhhbXBsZSAxPC9oNT4KCjxwcmUgY2xhc3M9Imxhbmd1YWdlLW1hcmt1cCI+PGNvZGU+Jmx0 O3R4cDpjb21fY29ubmVjdF9lbWFpbCBsYWJlbD0mcXVvdDtZb3VyIGVtYWlsIGFkZHJlc3Mm cXVvdDsgLyZndDs8L2NvZGU+PC9wcmU+Cgo8aDMgaWQ9ImNjX3RleHRhcmVhIj5jb21fY29u bmVjdF90ZXh0YXJlYSB0YWc8L2gzPgoKPHByZSBjbGFzcz0ibGFuZ3VhZ2UtbWFya3VwIj48 Y29kZT4mbHQ7dHhwOmNvbV9jb25uZWN0X3RleHRhcmVhIC8mZ3Q7PC9jb2RlPjwvcHJlPgoK PHA+Q3JlYXRlcyBhIDxjb2RlPiZsdDt0ZXh0YXJlYSZndDs8L2NvZGU+LjwvcD4KCjxoND5B dHRyaWJ1dGVzPC9oND4KCjx1bD4KCTxsaT48Y29kZT5hdXRvY29tcGxldGU9JnF1b3Q7dmFs dWUmcXVvdDs8L2NvZGU+PGJyIC8+CkluZGljYXRlcyB3aGV0aGVyIHRoZSB2YWx1ZSBvZiB0 aGUgY29udHJvbCBjYW4gYmUgYXV0b21hdGljYWxseSBjb21wbGV0ZWQgYnkgdGhlIGJyb3dz ZXIuIFBvc3NpYmxlIHZhbHVlcyBhcmU6IDxjb2RlPm9mZjwvY29kZT4gKHRoZSBicm93c2Vy IGRvZXMgbm90IGF1dG9tYXRpY2FsbHkgY29tcGxldGUgdGhlIGVudHJ5KSBvciA8Y29kZT5v bjwvY29kZT4gKHRoZSBicm93c2VyIGNhbiBhdXRvbWF0aWNhbGx5IGNvbXBsZXRlIHRoZSB2 YWx1ZSBiYXNlZCBvbiB2YWx1ZXMgdGhhdCB0aGUgdXNlciBoYXMgZW50ZXJlZCBkdXJpbmcg cHJldmlvdXMgdXNlcykuIERlZmF1bHQgaXMgdW5zZXQuPC9saT4KCTxsaT48Y29kZT5icmVh az0mcXVvdDt0YWcmcXVvdDs8L2NvZGU+PGJyIC8+CkJyZWFrIHRhZyBiZXR3ZWVuIHRoZSA8 Y29kZT4mbHQ7bGFiZWwmZ3Q7PC9jb2RlPiBhbmQgPGNvZGU+Jmx0O3RleHRhcmVhJmd0Ozwv Y29kZT4uIERlZmF1bHQgaXMgPGNvZGU+Jmx0O2JyIC8mZ3Q7PC9jb2RlPi4gVXNlIDxjb2Rl PmJyZWFrPSZxdW90OyZxdW90OzwvY29kZT4gdG8gcHV0IHRoZSA8Y29kZT4mbHQ7bGFiZWwm Z3Q7PC9jb2RlPiBhbmQgPGNvZGU+Jmx0O2lucHV0Jmd0OzwvY29kZT4gZmllbGQgb24gdGhl IHNhbWUgbGluZS48L2xpPgoJPGxpPjxjb2RlPmNsYXNzPSZxdW90O3NwYWNlLXNlcGFyYXRl ZCB2YWx1ZXMmcXVvdDs8L2NvZGU+PGJyIC8+CiBTZXQgdGhlIDxzcGFuIGNsYXNzPSJjYXBz Ij5DU1M8L3NwYW4+IDxjb2RlPmNsYXNzPC9jb2RlPiBuYW1lIG9mIHRoZSAgPGNvZGU+Jmx0 O3RleHRhcmVhJmd0OzwvY29kZT4uIERlZmF1bHQ6IDxjb2RlPmNvbVRleHRhcmVhPC9jb2Rl Pi4gVG8gcmVtb3ZlIDxjb2RlPmNsYXNzPC9jb2RlPiBhdHRyaWJ1dGUgZnJvbSB0aGUgZWxl bWVudCBlbnRpcmVseSwgdXNlIDxjb2RlPmNsYXNzPSZxdW90OyZxdW90OzwvY29kZT4uPC9s aT4KCTxsaT48Y29kZT5jb2xzPSZxdW90O2ludGVnZXImcXVvdDs8L2NvZGU+PGJyLz5OdW1i ZXIgb2YgY29sdW1ucywgaW4gY2hhcmFjdGVycywgb2YgdGhlIDxjb2RlPiZsdDt0ZXh0YXJl YSZndDs8L2NvZGU+LiBEZWZhdWx0IGlzIDxjb2RlPjU4PC9jb2RlPi48L2xpPgoJPGxpPjxj b2RlPmRlZmF1bHQ9JnF1b3Q7dmFsdWUmcXVvdDs8L2NvZGU+PGJyIC8+CkRlZmF1bHQgdmFs dWUgd2hlbiBubyBpbnB1dCBpcyBwcm92aWRlZC48L2xpPgoJPGxpPjxjb2RlPmh0bWxfZm9y bT0mcXVvdDtpZCZxdW90OzwvY29kZT48YnIgLz4KVGhlIDxzcGFuIGNsYXNzPSJjYXBzIj5I VE1MPC9zcGFuPiA8Y29kZT5pZDwvY29kZT4gb2YgdGhlIDxjb2RlPiZsdDtmb3JtJmd0Ozwv Y29kZT4gdGFnIHRvIHdoaWNoIHRoZSA8Y29kZT4mbHQ7dGV4dGFyZWEmZ3Q7PC9jb2RlPiBp cyBhdHRhY2hlZC4gQXNzb2NpYXRlZCB3aXRoIHRoZSBjb250YWluZWQgZm9ybSBieSBkZWZh dWx0LjwvbGk+Cgk8bGk+PGNvZGU+bGFiZWw9JnF1b3Q7dGV4dCZxdW90OzwvY29kZT48YnIg Lz4KVGV4dCBsYWJlbCBkaXNwbGF5ZWQgdG8gdGhlIHVzZXIuIERlZmF1bHQgaXMgPGNvZGU+ TWVzc2FnZTwvY29kZT4uPC9saT4KCTxsaT48Y29kZT5sYWJlbF9wb3NpdGlvbj0mcXVvdDt0 ZXh0JnF1b3Q7PC9jb2RlPjxiciAvPgpQb3NpdGlvbiBvZiB0aGUgbGFiZWwgaW4gcmVsYXRp b24gdG8gdGhlIDxjb2RlPiZsdDt0ZXh0YXJlYSZndDs8L2NvZGU+IGZpZWxkLiBBdmFpbGFi bGUgdmFsdWVzOiA8Y29kZT5iZWZvcmU8L2NvZGU+IG9yIDxjb2RlPmFmdGVyPC9jb2RlPi4g RGVmYXVsdCBpcyA8Y29kZT5iZWZvcmU8L2NvZGU+LjwvbGk+Cgk8bGk+PGNvZGU+bWF4PSZx dW90O2ludGVnZXImcXVvdDs8L2NvZGU+PGJyIC8+Ck1heGltdW0gaW5wdXQgdmFsdWUgbGVu Z3RoIGluIGNoYXJhY3RlcnMsIHVzaW5nIHRoZSBIVE1MNSA8Y29kZT5tYXhsZW5ndGg8L2Nv ZGU+IGF0dHJpYnV0ZS4gRGVmYXVsdCBpcyA8Y29kZT4xMDAwMDwvY29kZT4uIFRvIHJlbW92 ZSA8Y29kZT5tYXhsZW5ndGg8L2NvZGU+IGF0dHJpYnV0ZSBmcm9tIHRoZSBlbGVtZW50IGVu dGlyZWx5IChub3QgcmVjb21tZW5kZWQpLCB1c2UgPGNvZGU+bWF4PSZxdW90OyZxdW90Ozwv Y29kZT4uPC9saT4KCTxsaT48Y29kZT5taW49JnF1b3Q7aW50ZWdlciZxdW90OzwvY29kZT48 YnIgLz4KTWluaW11bSBpbnB1dCB2YWx1ZSBsZW5ndGggaW4gY2hhcmFjdGVycywgdXNpbmcg dGhlIEhUTUw1IDxjb2RlPm1pbmxlbmd0aDwvY29kZT4gYXR0cmlidXRlLiBEZWZhdWx0IGlz IHVuc2V0LCBpLmUuLCBubyBtaW5pbXVtIGxpbWl0LjwvbGk+Cgk8bGk+PGNvZGU+bmFtZT0m cXVvdDt2YWx1ZSZxdW90OzwvY29kZT48YnIgLz4KRmllbGQgbmFtZSwgYXMgdXNlZCBpbiB0 aGUgPHNwYW4gY2xhc3M9ImNhcHMiPkhUTUw8L3NwYW4+IDxjb2RlPiZsdDtpbnB1dCZndDs8 L2NvZGU+IHRhZy48L2xpPgoJPGxpPjxjb2RlPnBsYWNlaG9sZGVyPSZxdW90O3RleHQmcXVv dDs8L2NvZGU+PGJyIC8+ClRleHQgdG8gc2hvdyBhcyBhIGd1aWRlIHRvIHVzZXJzLCB3aGVu IHRoZSAgPGNvZGU+Jmx0O3RleHRhcmVhJmd0OzwvY29kZT4gaXMgZW1wdHkuPC9saT4KCTxs aT48Y29kZT5yZXF1aXJlZD0mcXVvdDtib29sZWFuJnF1b3Q7PC9jb2RlPjxiciAvPgpXaGV0 aGVyIHRoaXMgZmllbGQgbXVzdCBiZSBmaWxsZWQgb3V0LiBBdmFpbGFibGUgdmFsdWVzOiA8 Y29kZT4xPC9jb2RlPiAoeWVzKSBvciA8Y29kZT4wPC9jb2RlPiAobm8pLiBEZWZhdWx0IGlz IHdoYXRldmVyIGlzIHNldCBpbiB0aGUgPGNvZGU+Jmx0O3R4cDpjb21fY29ubmVjdCZndDs8 L2NvZGU+IHRhZyYjODIxNztzIDxjb2RlPnJlcXVpcmVkPC9jb2RlPiBhdHRyaWJ1dGUgJiM4 MjExOyBpZiBuZWl0aGVyIGF0dHJpYnV0ZSBpcyBzZXQgdGhlbiBkZWZhdWx0IGlzIDxjb2Rl PjE8L2NvZGU+LjwvbGk+Cgk8bGk+PGNvZGU+cm93cz0mcXVvdDtpbnRlZ2VyJnF1b3Q7PC9j b2RlPjxici8+TnVtYmVyIG9mIHJvd3MsIGluIGNoYXJhY3RlcnMsIG9mIHRoZSA8Y29kZT4m bHQ7dGV4dGFyZWEmZ3Q7PC9jb2RlPi4gRGVmYXVsdCBpcyA8Y29kZT44PC9jb2RlPi48L2xp PgoJPGxpPjxjb2RlPndyYXA9JnF1b3Q7dmFsdWUmcXVvdDs8L2NvZGU+PGJyLz5Hb3Zlcm5z IHdvcmQtd3JhcC4gQXZhaWxhYmxlIHZhbHVlczogPGNvZGU+aGFyZDwvY29kZT4gb3IgPGNv ZGU+c29mdDwvY29kZT4uIElmIHRoaXMgYXR0cmlidXRlIGlzIG5vdCBzcGVjaWZpZWQsIDxj b2RlPnNvZnQ8L2NvZGU+IGlzIGl0cyBkZWZhdWx0IHZhbHVlLjwvbGk+CjwvdWw+Cgo8aDQ+ RXhhbXBsZXM8L2g0PgoKPGg1PkV4YW1wbGUgMTwvaDU+Cgo8cD5DcmVhdGUgYSB0ZXh0IGFy ZWEgdGhhdCBpcyA0MCBjaGFyYWN0ZXJzIHdpZGUsIDEwIGxpbmVzIGhpZ2gsIHdpdGggYSBj dXN0b21pc2VkIGxhYmVsOjwvcD4KCjxwcmUgY2xhc3M9Imxhbmd1YWdlLW1hcmt1cCI+PGNv ZGU+Jmx0O3R4cDpjb21fY29ubmVjdF90ZXh0YXJlYSBjb2xzPSZxdW90OzQwJnF1b3Q7IHJv d3M9JnF1b3Q7MTAmcXVvdDsgbGFiZWw9JnF1b3Q7WW91ciBxdWVzdGlvbiZxdW90OyAvJmd0 OzwvY29kZT48L3ByZT4KCjxoMyBpZD0iY2Nfc3VibWl0Ij5jb21fY29ubmVjdF9zdWJtaXQg dGFnPC9oMz4KCjxwcmUgY2xhc3M9Imxhbmd1YWdlLW1hcmt1cCI+PGNvZGU+Jmx0O3R4cDpj b21fY29ubmVjdF9zdWJtaXQgLyZndDs8L2NvZGU+PC9wcmU+Cgo8cD5DcmVhdGVzIGEgc3Vi bWl0IGJ1dHRvbi4gV2hlbiB1c2VkIGFzIGEgY29udGFpbmVyIHRhZywgYSA8Y29kZT4mbHQ7 YnV0dG9uJmd0OzwvY29kZT4gZWxlbWVudCB3aWxsIGJlIHVzZWQgaW5zdGVhZCBvZiBhbiA8 Y29kZT4mbHQ7aW5wdXQmZ3Q7PC9jb2RlPiBlbGVtZW50LjwvcD4KCjxoND5BdHRyaWJ1dGVz OjwvaDQ+Cgo8dWw+Cgk8bGk+PGNvZGU+Y2xhc3M9JnF1b3Q7c3BhY2Utc2VwYXJhdGVkIHZh bHVlcyZxdW90OzwvY29kZT48YnIgLz4KIFNldCB0aGUgPHNwYW4gY2xhc3M9ImNhcHMiPkNT Uzwvc3Bhbj4gPGNvZGU+Y2xhc3M8L2NvZGU+IG5hbWUgb2YgdGhlIHRhZy4gRGVmYXVsdDog PGNvZGU+Y29tU3VibWl0PC9jb2RlPi4gVG8gcmVtb3ZlIDxjb2RlPmNsYXNzPC9jb2RlPiBh dHRyaWJ1dGUgZnJvbSB0aGUgZWxlbWVudCBlbnRpcmVseSwgdXNlIDxjb2RlPmNsYXNzPSZx dW90OyZxdW90OzwvY29kZT4uPC9saT4KCTxsaT48Y29kZT5odG1sX2Zvcm09JnF1b3Q7aWQm cXVvdDs8L2NvZGU+PGJyIC8+ClRoZSA8c3BhbiBjbGFzcz0iY2FwcyI+SFRNTDwvc3Bhbj4g PGNvZGU+aWQ8L2NvZGU+IG9mIHRoZSA8Y29kZT4mbHQ7Zm9ybSZndDs8L2NvZGU+IHRhZyB0 byB3aGljaCB0aGUgYnV0dG9uIGlzIGF0dGFjaGVkLiBBc3NvY2lhdGVkIHdpdGggdGhlIGNv bnRhaW5lZCBmb3JtIGJ5IGRlZmF1bHQuPC9saT4KCTxsaT48Y29kZT5sYWJlbD0mcXVvdDt0 ZXh0JnF1b3Q7PC9jb2RlPjxiciAvPgpUZXh0IHNob3duIG9uIHRoZSBzdWJtaXQgYnV0dG9u LiBEZWZhdWx0IGlzIDxjb2RlPlNlbmQ8L2NvZGU+LjwvbGk+CjwvdWw+Cgo8aDQ+RXhhbXBs ZXM8L2g0PgoKPGg1PkV4YW1wbGUgMTwvaDU+Cgo8cD5TdGFuZGFyZCBzdWJtaXQgYnV0dG9u OjwvcD4KCjxwcmUgY2xhc3M9Imxhbmd1YWdlLW1hcmt1cCI+PGNvZGU+Jmx0O3R4cDpjb21f Y29ubmVjdF9zdWJtaXQgLyZndDs8L2NvZGU+PC9wcmU+Cgo8aDU+RXhhbXBsZSAyPC9oNT4K CjxwPlN1Ym1pdCBidXR0b24gd2l0aCB5b3VyIG93biB0ZXh0OjwvcD4KCjxwcmUgY2xhc3M9 Imxhbmd1YWdlLW1hcmt1cCI+PGNvZGU+Jmx0O3R4cDpjb21fY29ubmVjdF9zdWJtaXQgbGFi ZWw9JnF1b3Q7VG8gdGhlIG1vb29vbiZxdW90OyAvJmd0OzwvY29kZT48L3ByZT4KCjxoNT5F eGFtcGxlIDM8L2g1PgoKPHA+VXNhZ2UgYXMgYSBjb250YWluZXIgdGFnLCB3aGljaCBhbGxv d3MgeW91IHRvIHVzZSBUZXh0cGF0dGVybiB0YWdzIGFuZCA8c3BhbiBjbGFzcz0iY2FwcyI+ SFRNTDwvc3Bhbj4gbWFya3VwIGluIHRoZSBzdWJtaXQgYnV0dG9uOjwvcD4KCjxwcmUgY2xh c3M9Imxhbmd1YWdlLW1hcmt1cCI+PGNvZGU+Jmx0O3R4cDpjb21fY29ubmVjdF9zdWJtaXQm Z3Q7Jmx0O3N0cm9uZyZndDtTZW5kJmx0Oy9zdHJvbmcmZ3Q7IHF1ZXN0aW9uJmx0Oy90eHA6 Y29tX2Nvbm5lY3Rfc3VibWl0Jmd0OzwvY29kZT48L3ByZT4KCjxoNT5FeGFtcGxlIDQ8L2g1 PgoKPHA+QXMgZXhhbXBsZSAzIGFib3ZlLCBidXQgdXNpbmcgYW4gaW1hZ2UgYXMgdGhlIGJ1 dHRvbjo8L3A+Cgo8cHJlIGNsYXNzPSJsYW5ndWFnZS1tYXJrdXAiPjxjb2RlPiZsdDt0eHA6 Y29tX2Nvbm5lY3Rfc3VibWl0Jmd0OwogICAgJmx0O2ltZyBzcmM9JnF1b3Q7cGF0aC90by9p bWcucG5nJnF1b3Q7IGFsdD0mcXVvdDtzdWJtaXQmcXVvdDsmZ3Q7CiZsdDsvdHhwOmNvbV9j b25uZWN0X3N1Ym1pdCZndDs8L2NvZGU+PC9wcmU+Cgo8aDMgaWQ9ImNjX3NlbGVjdCI+Y29t X2Nvbm5lY3Rfc2VsZWN0IHRhZzwvaDM+Cgo8cHJlIGNsYXNzPSJsYW5ndWFnZS1tYXJrdXAi Pjxjb2RlPiZsdDt0eHA6Y29tX2Nvbm5lY3Rfc2VsZWN0IC8mZ3Q7PC9jb2RlPjwvcHJlPgoK PHA+Q29udGFpbmVyIHRhZyB0aGF0IGNyZWF0ZXMgYSBkcm9wLWRvd24gc2VsZWN0aW9uIDxj b2RlPiZsdDtzZWxlY3QmZ3Q7PC9jb2RlPiBsaXN0LCBvciBzY3JvbGxlZCA8Y29kZT4mbHQ7 c2VsZWN0Jmd0OzwvY29kZT4gbGlzdCBib3ggKGJ5IHV0aWxpc2luZyB0aGUgPGNvZGU+c2l6 ZTwvY29kZT4gYXR0cmlidXRlKS48L3A+Cgo8aDQ+QXR0cmlidXRlczwvaDQ+Cgo8dWw+Cgk8 bGk+PGNvZGU+YnJlYWs9JnF1b3Q7dGFnJnF1b3Q7PC9jb2RlPjxiciAvPgpCcmVhayB0YWcg YmV0d2VlbiB0aGUgbGFiZWwgYW5kIDxjb2RlPiZsdDtzZWxlY3QmZ3Q7PC9jb2RlPiBmaWVs ZC4gRGVmYXVsdCBpcyA8Y29kZT4mbHQ7YnIgLyZndDs8L2NvZGU+LiBVc2UgPGNvZGU+YnJl YWs9JnF1b3Q7JnF1b3Q7PC9jb2RlPiB0byBwdXQgdGhlIGxhYmVsIGFuZCBpbnB1dCBmaWVs ZCBvbiB0aGUgc2FtZSBsaW5lLjwvbGk+Cgk8bGk+PGNvZGU+Y2xhc3M9JnF1b3Q7c3BhY2Ut c2VwYXJhdGVkIHZhbHVlcyZxdW90OzwvY29kZT48YnIgLz4KIFNldCB0aGUgPHNwYW4gY2xh c3M9ImNhcHMiPkNTUzwvc3Bhbj4gPGNvZGU+Y2xhc3M8L2NvZGU+IG5hbWUgb2YgdGhlIGxp c3QuIERlZmF1bHQ6IDxjb2RlPmNvbVNlbGVjdDwvY29kZT4uIFRvIHJlbW92ZSA8Y29kZT5j bGFzczwvY29kZT4gYXR0cmlidXRlIGZyb20gdGhlIGVsZW1lbnQgZW50aXJlbHksIHVzZSA8 Y29kZT5jbGFzcz0mcXVvdDsmcXVvdDs8L2NvZGU+LjwvbGk+Cgk8bGk+PGNvZGU+ZGVsaW1p dGVyPSZxdW90O2NoYXJhY3RlciZxdW90OzwvY29kZT48YnIgLz4KU2VwYXJhdG9yIGNoYXJh Y3RlciBiZXR3ZWVuIGxpc3QgaXRlbXMgaWYgdXNpbmcgdGhlIDxjb2RlPm9wdGlvbnM8L2Nv ZGU+IGF0dHJpYnV0ZS4gRGVmYXVsdCBpcyA8Y29kZT4sPC9jb2RlPiAoY29tbWEpLiBJZ25v cmVkIGlmIHRoaXMgdGFnIGlzIHVzZWQgYXMgYSBjb250YWluZXIuPC9saT4KCTxsaT48Y29k ZT5sYWJlbD0mcXVvdDt0ZXh0JnF1b3Q7PC9jb2RlPjxiciAvPgpUZXh0IGxhYmVsIGRpc3Bs YXllZCB0byB0aGUgdXNlci4gRGVmYXVsdCBpcyA8Y29kZT5PcHRpb248L2NvZGU+LjwvbGk+ Cgk8bGk+PGNvZGU+bGFiZWxfcG9zaXRpb249JnF1b3Q7dGV4dCZxdW90OzwvY29kZT48YnIg Lz4KUG9zaXRpb24gb2YgdGhlIGxhYmVsIGluIHJlbGF0aW9uIHRvIHRoZSA8Y29kZT4mbHQ7 c2VsZWN0Jmd0OzwvY29kZT4gZmllbGQuIEF2YWlsYWJsZSB2YWx1ZXM6IDxjb2RlPmJlZm9y ZTwvY29kZT4gb3IgPGNvZGU+YWZ0ZXI8L2NvZGU+LiBEZWZhdWx0IGlzIDxjb2RlPmJlZm9y ZTwvY29kZT4uPC9saT4KCTxsaT48Y29kZT5odG1sX2Zvcm09JnF1b3Q7aWQmcXVvdDs8L2Nv ZGU+PGJyIC8+ClRoZSA8c3BhbiBjbGFzcz0iY2FwcyI+SFRNTDwvc3Bhbj4gPGNvZGU+aWQ8 L2NvZGU+IG9mIHRoZSA8Y29kZT4mbHQ7Zm9ybSZndDs8L2NvZGU+IHRhZyB0byB3aGljaCB0 aGUgPGNvZGU+Jmx0O3NlbGVjdCZndDs8L2NvZGU+IGlzIGF0dGFjaGVkLiBBc3NvY2lhdGVk IHdpdGggdGhlIGNvbnRhaW5lZCBmb3JtIGJ5IGRlZmF1bHQuPC9saT4KCTxsaT48Y29kZT5u YW1lPSZxdW90O3ZhbHVlJnF1b3Q7PC9jb2RlPjxiciAvPgpGaWVsZCBuYW1lLCBhcyB1c2Vk IGluIHRoZSA8c3BhbiBjbGFzcz0iY2FwcyI+SFRNTDwvc3Bhbj4gPGNvZGU+Jmx0O3NlbGVj dCZndDs8L2NvZGU+IHRhZy48L2xpPgoJPGxpPjxjb2RlPm9wdGlvbnM9JnF1b3Q7Y29tbWEt c2VwYXJhdGVkIHZhbHVlcyZxdW90OzwvY29kZT48YnIgLz4KIExpc3Qgb2YgaXRlbXMgKHBy ZXZpb3VzbHkgPGNvZGU+bGlzdDwvY29kZT4pIHRvIHNob3cgaW4gdGhlIHNlbGVjdCBib3gu IE1heSBhbHNvIHVzZSB0aGUgPGNvZGU+Jmx0O3R4cDpjb21fY29ubmVjdF9vcHRpb24gLyZn dDs8L2NvZGU+IHRhZyBpbnNpZGUgdGhpcyB0YWcmIzgyMTc7cyBjb250YWluZXIuPC9saT4K CTxsaT48Y29kZT5yZXF1aXJlZD0mcXVvdDtib29sZWFuJnF1b3Q7PC9jb2RlPjxiciAvPgpX aGV0aGVyIHRoaXMgZmllbGQgbXVzdCBiZSBmaWxsZWQgb3V0LiBBdmFpbGFibGUgdmFsdWVz OiA8Y29kZT4xPC9jb2RlPiAoeWVzKSBvciA8Y29kZT4wPC9jb2RlPiAobm8pLiBEZWZhdWx0 IGlzIHdoYXRldmVyIGlzIHNldCBpbiB0aGUgPGNvZGU+Jmx0O3R4cDpjb21fY29ubmVjdCZn dDs8L2NvZGU+IHRhZyYjODIxNztzIDxjb2RlPnJlcXVpcmVkPC9jb2RlPiBhdHRyaWJ1dGUg JiM4MjExOyBpZiBuZWl0aGVyIGF0dHJpYnV0ZSBpcyBzZXQgdGhlbiBkZWZhdWx0IGlzIDxj b2RlPjE8L2NvZGU+LjwvbGk+Cgk8bGk+PGNvZGU+c2VsZWN0ZWQ9JnF1b3Q7dmFsdWUmcXVv dDs8L2NvZGU+PGJyIC8+Ckxpc3QgaXRlbSB0aGF0IGlzIHNlbGVjdGVkIGJ5IGRlZmF1bHQu PC9saT4KCTxsaT48Y29kZT5zaXplPSZxdW90O3ZhbHVlJnF1b3Q7PC9jb2RlPjxici8+SWYg dGhlIDxjb2RlPiZsdDtzZWxlY3QmZ3Q7PC9jb2RlPiBpcyB0byBiZSBwcmVzZW50ZWQgYXMg YSBzY3JvbGxlZCBsaXN0IGJveCwgdGhpcyBhdHRyaWJ1dGUgcmVwcmVzZW50cyB0aGUgbnVt YmVyIG9mIHJvd3MgaW4gdGhlIGxpc3QgdGhhdCBzaG91bGQgYmUgdmlzaWJsZSBhdCBvbmUg dGltZS4gRGVmYXVsdCBpcyB1bnNldCAoaS5lLiwgYSBkcm9wLWRvd24gc2VsZWN0aW9uIDxj b2RlPiZsdDtzZWxlY3QmZ3Q7PC9jb2RlPiBsaXN0KS48L2xpPgo8L3VsPgoKPGg0PkV4YW1w bGVzPC9oND4KCjxoNT5FeGFtcGxlIDE8L2g1PgoKPHA+RHJvcC1kb3duIHNlbGVjdGlvbiBs aXN0IGxhYmVsZWQgJiM4MjE2O0RlcGFydG1lbnQmIzgyMTc7LCBjb250YWluaW5nIHRocmVl IG9wdGlvbnMgYW5kIGEgYmxhbmsgb3B0aW9uIChkdWUgdG8gdGhlIGNvbW1hIGJlZm9yZSAm IzgyMTY7TWFya2V0aW5nJiM4MjE3Oykgc2hvd24gYnkgZGVmYXVsdCwgZm9yY2luZyB0aGUg dXNlciB0byBtYWtlIGEgc2VsZWN0aW9uLjwvcD4KCjxwcmUgY2xhc3M9Imxhbmd1YWdlLW1h cmt1cCI+PGNvZGU+Jmx0O3R4cDpjb21fY29ubmVjdF9zZWxlY3QgbGFiZWw9JnF1b3Q7RGVw YXJ0bWVudCZxdW90OyBvcHRpb25zPSZxdW90OyxNYXJrZXRpbmcsU2FsZXMsU3VwcG9ydCZx dW90OyAvJmd0OzwvY29kZT48L3ByZT4KCjxoNT5FeGFtcGxlIDI8L2g1PgoKPHByZSBjbGFz cz0ibGFuZ3VhZ2UtbWFya3VwIj48Y29kZT4mbHQ7dHhwOmNvbV9jb25uZWN0X3NlbGVjdCBs YWJlbD0mcXVvdDtEZXBhcnRtZW50JnF1b3Q7IHNlbGVjdGVkPSZxdW90O1NhbGVzJnF1b3Q7 Jmd0OwogICAgJmx0O3R4cDpjb21fY29ubmVjdF9vcHRpb24gLyZndDsKICAgICZsdDt0eHA6 Y29tX2Nvbm5lY3Rfb3B0aW9uIGxhYmVsPSZxdW90O01hcmtldGluZyZxdW90OyAvJmd0Owog ICAgJmx0O3R4cDpjb21fY29ubmVjdF9vcHRpb24gbGFiZWw9JnF1b3Q7U2FsZXMmcXVvdDsg LyZndDsKICAgICZsdDt0eHA6Y29tX2Nvbm5lY3Rfb3B0aW9uIGxhYmVsPSZxdW90O1N1cHBv cnQmcXVvdDsgLyZndDsKJmx0Oy90eHA6Y29tX2Nvbm5lY3Rfc2VsZWN0Jmd0OzwvY29kZT48 L3ByZT4KCjxwPkRyb3AtZG93biBzZWxlY3Rpb24gbGlzdCBjb250YWluaW5nIHRocmVlIG9w dGlvbnMgcGx1cyBhIGJsYW5rIG9wdGlvbiAoYWxzbyBzZWUgPGNvZGU+Y29tX2Nvbm5lY3Rf b3B0aW9uPC9jb2RlPiB0YWcgYmVsb3cpLCB3aXRoICYjODIxNjtTYWxlcyYjODIxNzsgc2Vs ZWN0ZWQgYnkgZGVmYXVsdC48L3A+Cgo8aDMgaWQ9ImNjX29wdGlvbiI+Y29tX2Nvbm5lY3Rf b3B0aW9uIHRhZzwvaDM+Cgo8cHJlIGNsYXNzPSJsYW5ndWFnZS1tYXJrdXAiPjxjb2RlPiZs dDt0eHA6Y29tX2Nvbm5lY3Rfb3B0aW9uIC8mZ3Q7PC9jb2RlPjwvcHJlPgoKPHA+Q3JlYXRl cyBhIGRyb3AtZG93biBzZWxlY3Rpb24gb3B0aW9uLiBNYXkgYmUgdXNlZCBhcyBhIHNpbmds ZSAoc2VsZi1jbG9zaW5nKSBvciBjb250YWluZXIgdGFnLiBBbHNvIHNlZSA8Y29kZT5jb21f Y29ubmVjdF9zZWxlY3Q8L2NvZGU+IHRhZyBhYm92ZS48L3A+Cgo8aDQ+QXR0cmlidXRlczwv aDQ+Cgo8dWw+Cgk8bGk+PGNvZGU+Y2xhc3M9JnF1b3Q7c3BhY2Utc2VwYXJhdGVkIHZhbHVl cyZxdW90OzwvY29kZT48YnIgLz4KIFNldCB0aGUgPHNwYW4gY2xhc3M9ImNhcHMiPkNTUzwv c3Bhbj4gPGNvZGU+Y2xhc3M8L2NvZGU+IG5hbWUgb2YgdGhlIG9wdGlvbi4gRGVmYXVsdDog PGNvZGU+Y29tT3B0aW9uPC9jb2RlPi4gVG8gcmVtb3ZlIDxjb2RlPmNsYXNzPC9jb2RlPiBh dHRyaWJ1dGUgZnJvbSB0aGUgZWxlbWVudCBlbnRpcmVseSwgdXNlIDxjb2RlPmNsYXNzPSZx dW90OyZxdW90OzwvY29kZT4uPC9saT4KCTxsaT48Y29kZT5sYWJlbD0mcXVvdDt0ZXh0JnF1 b3Q7PC9jb2RlPiA8c3BhbiBjbGFzcz0id2FybmluZyI+cmVxdWlyZWQ8L3NwYW4+PGJyIC8+ ClRleHQgbGFiZWwgb2YgdGhpcyBvcHRpb24gZGlzcGxheWVkIHRvIHRoZSB1c2VyLjwvbGk+ Cgk8bGk+PGNvZGU+c2VsZWN0ZWQ9JnF1b3Q7Ym9vbGVhbiZxdW90OzwvY29kZT48YnIgLz4K V2hldGhlciB0aGlzIGl0ZW0gaXMgc2VsZWN0ZWQsIE1heSBhbHNvIGJlIHNwZWNpZmllZCBp biB0aGUgY29udGFpbmVyIHRhZyYjODIxNztzIDxjb2RlPnNlbGVjdGVkPC9jb2RlPiBhdHRy aWJ1dGUuIEF2YWlsYWJsZSB2YWx1ZXM6IDxjb2RlPjE8L2NvZGU+ICh5ZXMpIG9yIDxjb2Rl PjA8L2NvZGU+IChubykuPC9saT4KCTxsaT48Y29kZT52YWx1ZT0mcXVvdDt0ZXh0JnF1b3Q7 PC9jb2RlPjxiciAvPgpUaGUgdmFsdWUgYXNzb2NpYXRlZCB3aXRoIHRoaXMgb3B0aW9uIHdo ZW4gc3VibWl0dGVkLiBEZWZhdWx0IGlzIHRoZSBsYWJlbC48L2xpPgo8L3VsPgoKPGg1PkV4 YW1wbGUgMTwvaDU+Cgo8cHJlIGNsYXNzPSJsYW5ndWFnZS1tYXJrdXAiPjxjb2RlPiZsdDt0 eHA6Y29tX2Nvbm5lY3Rfc2VsZWN0IGxhYmVsPSZxdW90O0RlcGFydG1lbnQmcXVvdDsmZ3Q7 CiAgICAmbHQ7dHhwOmNvbV9jb25uZWN0X29wdGlvbiBsYWJlbD0mcXVvdDtNYXJrZXRpbmcm cXVvdDsgLyZndDsKICAgICZsdDt0eHA6Y29tX2Nvbm5lY3Rfb3B0aW9uIGxhYmVsPSZxdW90 O1NhbGVzJnF1b3Q7IC8mZ3Q7CiAgICAmbHQ7dHhwOmNvbV9jb25uZWN0X29wdGlvbiBsYWJl bD0mcXVvdDtTdXBwb3J0JnF1b3Q7IC8mZ3Q7CiZsdDsvdHhwOmNvbV9jb25uZWN0X3NlbGVj dCZndDs8L2NvZGU+PC9wcmU+Cgo8cD5Ecm9wLWRvd24gc2VsZWN0aW9uIGxpc3QgY29udGFp bmluZyB0aHJlZSBvcHRpb25zIGFzIHNpbmdsZSB0YWdzLjwvcD4KCjxoNT5FeGFtcGxlIDI8 L2g1PgoKPHByZSBjbGFzcz0ibGFuZ3VhZ2UtbWFya3VwIj48Y29kZT4mbHQ7dHhwOmNvbV9j b25uZWN0X3NlbGVjdCBsYWJlbD0mcXVvdDtEZXBhcnRtZW50JnF1b3Q7Jmd0OwogICAgJmx0 O3R4cDpjb21fY29ubmVjdF9vcHRpb24gdmFsdWU9JnF1b3Q7Y29udGFjdC1tYXJrZXRpbmcm cXVvdDsmZ3Q7TWFya2V0aW5nJmx0Oy90eHA6Y29tX2Nvbm5lY3Rfb3B0aW9uJmd0OwogICAg Jmx0O3R4cDpjb21fY29ubmVjdF9vcHRpb24gdmFsdWU9JnF1b3Q7Y29udGFjdC1zYWxlcyZx dW90OyBzZWxlY3RlZD0mcXVvdDsxJnF1b3Q7Jmd0O1NhbGVzJmx0Oy90eHA6Y29tX2Nvbm5l Y3Rfb3B0aW9uJmd0OwogICAgJmx0O3R4cDpjb21fY29ubmVjdF9vcHRpb24gdmFsdWU9JnF1 b3Q7Y29udGFjdC1zdXBwb3J0JnF1b3Q7Jmd0O1N1cHBvcnQmbHQ7L3R4cDpjb21fY29ubmVj dF9vcHRpb24mZ3Q7CiZsdDsvdHhwOmNvbV9jb25uZWN0X3NlbGVjdCZndDs8L2NvZGU+PC9w cmU+Cgo8cD5Ecm9wLWRvd24gc2VsZWN0aW9uIGxpc3QgY29udGFpbmluZyB0aHJlZSBvcHRp b25zIGFzIGNvbnRhaW5lciB0YWdzIHdpdGggJiM4MjE2O1NhbGVzJiM4MjE3OyBzZWxlY3Rl ZCBieSBkZWZhdWx0LjwvcD4KCjxoMyBpZD0iY2NfY2hlY2tib3giPmNvbV9jb25uZWN0X2No ZWNrYm94IHRhZzwvaDM+Cgo8cHJlIGNsYXNzPSJsYW5ndWFnZS1tYXJrdXAiPjxjb2RlPiZs dDt0eHA6Y29tX2Nvbm5lY3RfY2hlY2tib3ggLyZndDs8L2NvZGU+PC9wcmU+Cgo8cD5DcmVh dGVzIGEgY2hlY2tib3guPC9wPgoKPGg0PkF0dHJpYnV0ZXM8L2g0PgoKPHVsPgoJPGxpPjxj b2RlPmJyZWFrPSZxdW90O3RhZyZxdW90OzwvY29kZT48YnIgLz4KQnJlYWsgdGFnIGJldHdl ZW4gdGhlIGNoZWNrYm94IGJ1dHRvbiBhbmQgbGFiZWwuIERlZmF1bHQgaXMgb25lIHNwYWNl LiBVc2UgPGNvZGU+YnJlYWs9JnF1b3Q7YnImcXVvdDs8L2NvZGU+IHRvIHB1dCB0aGUgY2hl Y2tib3ggYW5kIGxhYmVsIG9uIHNlcGFyYXRlIGxpbmVzLjwvbGk+Cgk8bGk+PGNvZGU+Y2hl Y2tlZD0mcXVvdDtib29sZWFuJnF1b3Q7PC9jb2RlPjxiciAvPgpXaGV0aGVyIHRoaXMgYm94 IGlzIGNoZWNrZWQgd2hlbiBmaXJzdCBkaXNwbGF5ZWQuIEF2YWlsYWJsZSB2YWx1ZXM6IDxj b2RlPjE8L2NvZGU+ICh5ZXMpIG9yIDxjb2RlPjA8L2NvZGU+IChubykuIERlZmF1bHQgaXMg PGNvZGU+MDwvY29kZT4uPC9saT4KCTxsaT48Y29kZT5jbGFzcz0mcXVvdDtzcGFjZS1zZXBh cmF0ZWQgdmFsdWVzJnF1b3Q7PC9jb2RlPjxiciAvPgogU2V0IHRoZSA8c3BhbiBjbGFzcz0i Y2FwcyI+Q1NTPC9zcGFuPiA8Y29kZT5jbGFzczwvY29kZT4gbmFtZSBvZiB0aGUgb3B0aW9u LiBEZWZhdWx0OiA8Y29kZT5jb21DaGVja2JveDwvY29kZT4uIFRvIHJlbW92ZSA8Y29kZT5j bGFzczwvY29kZT4gYXR0cmlidXRlIGZyb20gdGhlIGVsZW1lbnQgZW50aXJlbHksIHVzZSA8 Y29kZT5jbGFzcz0mcXVvdDsmcXVvdDs8L2NvZGU+LjwvbGk+Cgk8bGk+PGNvZGU+aHRtbF9m b3JtPSZxdW90O2lkJnF1b3Q7PC9jb2RlPjxiciAvPgpUaGUgPHNwYW4gY2xhc3M9ImNhcHMi PkhUTUw8L3NwYW4+IDxjb2RlPmlkPC9jb2RlPiBvZiB0aGUgPGNvZGU+Jmx0O2Zvcm0mZ3Q7 PC9jb2RlPiB0YWcgdG8gd2hpY2ggdGhlIGNoZWNrYm94IGlzIGF0dGFjaGVkLiBBc3NvY2lh dGVkIHdpdGggdGhlIGNvbnRhaW5lZCBmb3JtIGJ5IGRlZmF1bHQuPC9saT4KCTxsaT48Y29k ZT5sYWJlbD0mcXVvdDt0ZXh0JnF1b3Q7PC9jb2RlPjxiciAvPgpUZXh0IGxhYmVsIGRpc3Bs YXllZCB0byB0aGUgdXNlci4gRGVmYXVsdCBpcyA8Y29kZT5DaGVja2JveDwvY29kZT4uPC9s aT4KCTxsaT48Y29kZT5sYWJlbF9wb3NpdGlvbj0mcXVvdDt0ZXh0JnF1b3Q7PC9jb2RlPjxi ciAvPgpQb3NpdGlvbiBvZiB0aGUgbGFiZWwgaW4gcmVsYXRpb24gdG8gdGhlIDxjb2RlPiZs dDtpbnB1dCZndDs8L2NvZGU+IGZpZWxkLiBBdmFpbGFibGUgdmFsdWVzOiA8Y29kZT5iZWZv cmU8L2NvZGU+IG9yIDxjb2RlPmFmdGVyPC9jb2RlPi4gRGVmYXVsdCBpcyA8Y29kZT5hZnRl cjwvY29kZT4uPC9saT4KCTxsaT48Y29kZT5uYW1lPSZxdW90O3ZhbHVlJnF1b3Q7PC9jb2Rl PjxiciAvPgpGaWVsZCBuYW1lLCBhcyB1c2VkIGluIHRoZSA8c3BhbiBjbGFzcz0iY2FwcyI+ SFRNTDwvc3Bhbj4gPGNvZGU+Jmx0O2lucHV0Jmd0OzwvY29kZT4gdGFnLjwvbGk+Cgk8bGk+ PGNvZGU+cmVxdWlyZWQ9JnF1b3Q7Ym9vbGVhbiZxdW90OzwvY29kZT48YnIgLz4KV2hldGhl ciB0aGlzIGNoZWNrYm94IG11c3QgYmUgZmlsbGVkIG91dC4gQXZhaWxhYmxlIHZhbHVlczog PGNvZGU+MTwvY29kZT4gKHllcykgb3IgPGNvZGU+MDwvY29kZT4gKG5vKS4gRGVmYXVsdCBp cyB3aGF0ZXZlciBpcyBzZXQgaW4gdGhlIDxjb2RlPiZsdDt0eHA6Y29tX2Nvbm5lY3QmZ3Q7 PC9jb2RlPiB0YWcmIzgyMTc7cyA8Y29kZT5yZXF1aXJlZDwvY29kZT4gYXR0cmlidXRlICYj ODIxMTsgaWYgbmVpdGhlciBhdHRyaWJ1dGUgaXMgc2V0IHRoZW4gZGVmYXVsdCBpcyA8Y29k ZT4xPC9jb2RlPi48L2xpPgoJPGxpPjxjb2RlPnZhbHVlPSZxdW90O3RleHQmcXVvdDs8L2Nv ZGU+PGJyIC8+ClZhbHVlIHRvIHNlbmQgaW4gdGhlIGVtYWlsIGlmIHRoZSBvcHRpb24gaXMg Y2hlY2tlZC4gVXNlcyB5ZXMvbm8gaWYgbm90IHNldC48L2xpPgo8L3VsPgoKPGg0PkV4YW1w bGVzPC9oND4KCjxoNT5FeGFtcGxlIDE8L2g1PgoKPHA+U2hyaW5rLXdyYXAgYWdyZWVtZW50 IHdoaWNoIG11c3QgYmUgY2hlY2tlZCBieSB0aGUgdXNlciBiZWZvcmUgdGhlIGVtYWlsIHdp bGwgYmUgc2VudC48L3A+Cgo8cHJlIGNsYXNzPSJsYW5ndWFnZS1tYXJrdXAiPjxjb2RlPiZs dDt0eHA6Y29tX2Nvbm5lY3RfY2hlY2tib3ggbGFiZWw9JnF1b3Q7SSBhY2NlcHQgdGhlIHRl cm1zIGFuZCBjb25kaXRpb25zJnF1b3Q7IC8mZ3Q7PC9jb2RlPjwvcHJlPgoKPGg1PkV4YW1w bGUgMjwvaDU+Cgo8cD5PcHRpb25hbCBjaGVja2JveGVzOjwvcD4KCjxwcmUgY2xhc3M9Imxh bmd1YWdlLW1hcmt1cCI+PGNvZGU+V2l0aCB3aGljaCBvcGVyYXRpbmcgc3lzdGVtcyBhcmUg eW91IGZhbWlsaWFyPyZsdDticiAvJmd0OwombHQ7dHhwOmNvbV9jb25uZWN0X2NoZWNrYm94 IGxhYmVsPSZxdW90O1dpbmRvd3MmcXVvdDsgcmVxdWlyZWQ9JnF1b3Q7MCZxdW90OyAvJmd0 OyZsdDticiAvJmd0OwombHQ7dHhwOmNvbV9jb25uZWN0X2NoZWNrYm94IGxhYmVsPSZxdW90 O1VuaXgvTGludXgvQlNEJnF1b3Q7IHJlcXVpcmVkPSZxdW90OzAmcXVvdDsgLyZndDsmbHQ7 YnIgLyZndDsKJmx0O3R4cDpjb21fY29ubmVjdF9jaGVja2JveCBsYWJlbD0mcXVvdDtNYWNP UyZxdW90OyByZXF1aXJlZD0mcXVvdDswJnF1b3Q7IC8mZ3Q7PC9jb2RlPjwvcHJlPgoKPGgz IGlkPSJjY19yYWRpbyI+Y29tX2Nvbm5lY3RfcmFkaW8gdGFnPC9oMz4KCjxwcmUgY2xhc3M9 Imxhbmd1YWdlLW1hcmt1cCI+PGNvZGU+Jmx0O3R4cDpjb21fY29ubmVjdF9yYWRpbyAvJmd0 OzwvY29kZT48L3ByZT4KCjxwPkNyZWF0ZXMgYSByYWRpbyBidXR0b24uPC9wPgoKPGg0PkF0 dHJpYnV0ZXM8L2g0PgoKPHVsPgoJPGxpPjxjb2RlPmJyZWFrPSZxdW90O3RhZyZxdW90Ozwv Y29kZT48YnIgLz4KQnJlYWsgdGFnIGJldHdlZW4gdGhlIHJhZGlvIGJ1dHRvbiBhbmQgbGFi ZWwuIERlZmF1bHQgaXMgb25lIHNwYWNlLiBVc2UgPGNvZGU+YnJlYWs9JnF1b3Q7YnImcXVv dDs8L2NvZGU+IHRvIHB1dCB0aGUgcmFkaW8gYnV0dG9uIGFuZCBsYWJlbCBvbiBzZXBhcmF0 ZSBsaW5lcy48L2xpPgoJPGxpPjxjb2RlPmNoZWNrZWQ9JnF1b3Q7Ym9vbGVhbiZxdW90Ozwv Y29kZT48YnIgLz4KV2hldGhlciB0aGlzIHJhZGlvIG9wdGlvbiBpcyBjaGVja2VkIHdoZW4g dGhlIGZvcm0gaXMgZmlyc3QgZGlzcGxheWVkLiBBdmFpbGFibGUgdmFsdWVzOiA8Y29kZT4x PC9jb2RlPiAoeWVzKSBvciA8Y29kZT4wPC9jb2RlPiAobm8pLiBEZWZhdWx0IGlzIDxjb2Rl PjA8L2NvZGU+LjwvbGk+Cgk8bGk+PGNvZGU+Y2xhc3M9JnF1b3Q7c3BhY2Utc2VwYXJhdGVk IHZhbHVlcyZxdW90OzwvY29kZT48YnIgLz4KIFNldCB0aGUgPHNwYW4gY2xhc3M9ImNhcHMi PkNTUzwvc3Bhbj4gPGNvZGU+Y2xhc3M8L2NvZGU+IG5hbWUgb2YgdGhlIHJhZGlvIGJ1dHRv bi4gRGVmYXVsdDogPGNvZGU+Y29tUmFkaW88L2NvZGU+LiBUbyByZW1vdmUgPGNvZGU+Y2xh c3M8L2NvZGU+IGF0dHJpYnV0ZSBmcm9tIHRoZSBlbGVtZW50IGVudGlyZWx5LCB1c2UgPGNv ZGU+Y2xhc3M9JnF1b3Q7JnF1b3Q7PC9jb2RlPi48L2xpPgoJPGxpPjxjb2RlPmdyb3VwPSZx dW90O3RleHQmcXVvdDs8L2NvZGU+IDxzcGFuIGNsYXNzPSJ3YXJuaW5nIj5yZXF1aXJlZDwv c3Bhbj48YnIgLz4KVGV4dCB1c2VkIGluIHRoZSBlbWFpbCB0byBkZXNjcmliZSB0aGlzIGdy b3VwIG9mIHJhZGlvIGJ1dHRvbnMuIFRoaXMgYXR0cmlidXRlIHZhbHVlIGlzIHJlbWVtYmVy ZWQgZm9yIHN1YnNlcXVlbnQgcmFkaW8gYnV0dG9ucywgc28geW91IG9ubHkgaGF2ZSB0byBz ZXQgaXQgb24gdGhlIGZpcnN0IHJhZGlvIGJ1dHRvbiBvZiBhIGdyb3VwLiBEZWZhdWx0IGlz IDxjb2RlPlJhZGlvPC9jb2RlPi48L2xpPgoJPGxpPjxjb2RlPmh0bWxfZm9ybT0mcXVvdDtp ZCZxdW90OzwvY29kZT48YnIgLz4KVGhlIDxzcGFuIGNsYXNzPSJjYXBzIj5IVE1MPC9zcGFu PiA8Y29kZT5pZDwvY29kZT4gb2YgdGhlIDxjb2RlPiZsdDtmb3JtJmd0OzwvY29kZT4gdGFn IHRvIHdoaWNoIHRoZSByYWRpbyBidXR0b24gaXMgYXR0YWNoZWQuIEFzc29jaWF0ZWQgd2l0 aCB0aGUgY29udGFpbmVkIGZvcm0gYnkgZGVmYXVsdC48L2xpPgoJPGxpPjxjb2RlPmxhYmVs PSZxdW90O3RleHQmcXVvdDs8L2NvZGU+IDxzcGFuIGNsYXNzPSJ3YXJuaW5nIj5yZXF1aXJl ZDwvc3Bhbj48YnIgLz4KVGV4dCBsYWJlbCBkaXNwbGF5ZWQgdG8gdGhlIHVzZXIgYXMgcmFk aW8gYnV0dG9uIG9wdGlvbi48L2xpPgoJPGxpPjxjb2RlPm5hbWU9JnF1b3Q7dmFsdWUmcXVv dDs8L2NvZGU+IDxzcGFuIGNsYXNzPSJ3YXJuaW5nIj5yZWNvbW1lbmRlZDwvc3Bhbj48YnIg Lz4KRmllbGQgbmFtZSwgYXMgdXNlZCBpbiB0aGUgPHNwYW4gY2xhc3M9ImNhcHMiPkhUTUw8 L3NwYW4+IDxjb2RlPiZsdDtpbnB1dCZndDs8L2NvZGU+IHRhZy4gVGhpcyBhdHRyaWJ1dGUg dmFsdWUgaXMgcmVtZW1iZXJlZCBmb3Igc3Vic2VxdWVudCByYWRpbyBidXR0b25zLCBzbyB5 b3Ugb25seSBoYXZlIHRvIHNldCBpdCBvbiB0aGUgZmlyc3QgcmFkaW8gYnV0dG9uIG9mIGEg Z3JvdXAuIElmIGl0IGhhc24mIzgyMTc7dCBiZWVuIHNldCBhdCBhbGwsIGl0IHdpbGwgYmUg ZGVyaXZlZCBmcm9tIHRoZSA8Y29kZT5ncm91cDwvY29kZT4gYXR0cmlidXRlLjwvbGk+Cgk8 bGk+PGNvZGU+cmVxdWlyZWQ9JnF1b3Q7Ym9vbGVhbiZxdW90OzwvY29kZT48YnIgLz4KV2hl dGhlciB0aGlzIHJhZGlvIHNldCBtdXN0IGJlIGZpbGxlZCBvdXQuIEF2YWlsYWJsZSB2YWx1 ZXM6IDxjb2RlPjE8L2NvZGU+ICh5ZXMpIG9yIDxjb2RlPjA8L2NvZGU+IChubykuIERlZmF1 bHQgaXMgd2hhdGV2ZXIgaXMgc2V0IGluIHRoZSA8Y29kZT4mbHQ7dHhwOmNvbV9jb25uZWN0 Jmd0OzwvY29kZT4gdGFnJiM4MjE3O3MgPGNvZGU+cmVxdWlyZWQ8L2NvZGU+IGF0dHJpYnV0 ZSAmIzgyMTE7IGlmIG5laXRoZXIgYXR0cmlidXRlIGlzIHNldCB0aGVuIGRlZmF1bHQgaXMg PGNvZGU+MTwvY29kZT4uIDxzdHJvbmc+WW91IHNob3VsZCBzZXQgdGhlIDxjb2RlPnJlcXVp cmVkPC9jb2RlPiBhdHRyaWJ1dGUgb24gb25seSB0aGUgZmlyc3QgcmFkaW8gYnV0dG9uIG9m IHRoZSBncm91cCwgb3Igc2V0IHRoZSBzYW1lIGlkZW50aWNhbCBhdHRyaWJ1dGUgdmFsdWUg b24gYWxsIHJhZGlvIGJ1dHRvbnMgaW4gdGhlIGdyb3VwLjwvc3Ryb25nPjwvbGk+Cgk8bGk+ PGNvZGU+dmFsdWU9JnF1b3Q7dGV4dCZxdW90OzwvY29kZT48YnIgLz4KVmFsdWUgdG8gc2Vu ZCBpbiB0aGUgZW1haWwgaWYgdGhlIG9wdGlvbiBpcyBjaGVja2VkLiBVc2VzIGxhYmVsIGlm IG5vdCBzZXQuPC9saT4KPC91bD4KCjxoND5FeGFtcGxlczwvaDQ+Cgo8aDU+RXhhbXBsZSAx PC9oNT4KCjxwPkdyb3VwIG11dHVhbGx5IGV4Y2x1c2l2ZSByYWRpbyBidXR0b25zIGJ5IHNl dHRpbmcgdGhlIDxjb2RlPmdyb3VwPC9jb2RlPiBhdHRyaWJ1dGUgb24gdGhlIGZpcnN0IHJh ZGlvIGJ1dHRvbiBpbiBhIGdyb3VwLiBPbmx5IHRoZSBjaG9zZW4gcmFkaW8gYnV0dG9uIGZy b20gZWFjaCBncm91cCB3aWxsIGJlIHVzZWQgaW4gdGhlIGVtYWlsIG1lc3NhZ2UuIFRoZSBt ZXNzYWdlIHdpbGwgYmUgb3V0cHV0IGluIHRoZSBmb3JtIDxjb2RlPmdyb3VwOiBsYWJlbDwv Y29kZT4gZm9yIGVhY2ggb2YgdGhlIGNob3NlbiByYWRpbyBidXR0b25zLjwvcD4KCjxwcmUg Y2xhc3M9Imxhbmd1YWdlLW1hcmt1cCI+PGNvZGU+Jmx0O3R4cDpjb21fY29ubmVjdF9yYWRp byBsYWJlbD0mcXVvdDtNZWRpdW0mcXVvdDsgZ3JvdXA9JnF1b3Q7SSBsaWtlIG15IHN0ZWFr JnF1b3Q7IC8mZ3Q7CiZsdDt0eHA6Y29tX2Nvbm5lY3RfcmFkaW8gbGFiZWw9JnF1b3Q7UmFy ZSZxdW90OyAvJmd0OwombHQ7dHhwOmNvbV9jb25uZWN0X3JhZGlvIGxhYmVsPSZxdW90O1dl bGwgZG9uZSZxdW90OyAvJmd0OwombHQ7dHhwOmNvbV9jb25uZWN0X3JhZGlvIGxhYmVsPSZx dW90O1dpbmUmcXVvdDsgZ3JvdXA9JnF1b3Q7V2l0aCBhIGdsYXNzIG9mJnF1b3Q7IC8mZ3Q7 CiZsdDt0eHA6Y29tX2Nvbm5lY3RfcmFkaW8gbGFiZWw9JnF1b3Q7QmVlciZxdW90OyAvJmd0 OwombHQ7dHhwOmNvbV9jb25uZWN0X3JhZGlvIGxhYmVsPSZxdW90O1dhdGVyJnF1b3Q7IC8m Z3Q7PC9jb2RlPjwvcHJlPgoKPGgzIGlkPSJjY19zZWNyZXQiPmNvbV9jb25uZWN0X3NlY3Jl dCB0YWc8L2gzPgoKPHByZSBjbGFzcz0ibGFuZ3VhZ2UtbWFya3VwIj48Y29kZT4mbHQ7dHhw OmNvbV9jb25uZWN0X3NlY3JldCAvJmd0OzwvY29kZT48L3ByZT4KCjxwPlRoaXMgdGFnIGhh cyBubyBlZmZlY3Qgb24gdGhlIGZvcm0gb3IgPHNwYW4gY2xhc3M9ImNhcHMiPkhUTUw8L3Nw YW4+IG91dHB1dCwgYnV0IHdpbGwgaW5jbHVkZSBhZGRpdGlvbmFsIGluZm9ybWF0aW9uIGlu IHRoZSBlbWFpbC4gSXQgY2FuIGJlIHVzZWQgYXMgYSBzaW5nbGUgKHNlbGYtY2xvc2luZykg dGFnIG9yIGFzIGEgY29udGFpbmVyIHRhZy48L3A+Cgo8aDQ+QXR0cmlidXRlczwvaDQ+Cgo8 dWw+Cgk8bGk+PGNvZGU+bGFiZWw9JnF1b3Q7dGV4dCZxdW90OzwvY29kZT48YnIgLz4KVXNl ZCB0byBpZGVudGlmeSB0aGUgZmllbGQgaW4gdGhlIGVtYWlsLiBEZWZhdWx0IGlzIDxjb2Rl PlNlY3JldDwvY29kZT4uPC9saT4KCTxsaT48Y29kZT5uYW1lPSZxdW90O3RleHQmcXVvdDs8 L2NvZGU+PGJyIC8+ClVzZWQgaW50ZXJuYWxseS4gU2V0IHRoaXMgb25seSBpZiB5b3UgaGF2 ZSBtdWx0aXBsZSAmIzgyMTY7c2VjcmV0JiM4MjE3OyBmb3JtIGVsZW1lbnRzIHdpdGggaWRl bnRpY2FsIGxhYmVscy48L2xpPgoJPGxpPjxjb2RlPnZhbHVlPSZxdW90O3ZhbHVlJnF1b3Q7 PC9jb2RlPjxiciAvPgpTb21lIHRleHQgeW91IHdhbnQgdG8gYWRkIHRvIHRoZSBlbWFpbC48 L2xpPgo8L3VsPgoKPGg0PkV4YW1wbGVzPC9oND4KCjxoNT5FeGFtcGxlIDE8L2g1PgoKPHA+ VXNhZ2UgYXMgYSBzaW5nbGUgKHNlbGYtY2xvc2luZykgdGFnOjwvcD4KCjxwcmUgY2xhc3M9 Imxhbmd1YWdlLW1hcmt1cCI+PGNvZGU+Jmx0O3R4cDpjb21fY29ubmVjdF9zZWNyZXQgdmFs dWU9JnF1b3Q7VGhlIGFuc3dlciBpcyA0MiZxdW90OyAvJmd0OzwvY29kZT48L3ByZT4KCjxo NT5FeGFtcGxlIDI8L2g1PgoKPHA+VXNhZ2UgYXMgYSBjb250YWluZXIgdGFnOjwvcD4KCjxw cmUgY2xhc3M9Imxhbmd1YWdlLW1hcmt1cCI+PGNvZGU+Jmx0O3R4cDpjb21fY29ubmVjdF9z ZWNyZXQgbGFiZWw9JnF1b3Q7RGVhciB1c2VyJnF1b3Q7Jmd0OwogICAgUGxlYXNlIHByb3Zp ZGUgYSB1c2VmdWwgZXhhbXBsZSBmb3IgdGhpcyB0YWchCiZsdDsvdHhwOmNvbV9jb25uZWN0 X3NlY3JldCZndDs8L2NvZGU+PC9wcmU+Cgo8aDMgaWQ9ImNjX3NlcnZlcmluZm8iPmNvbV9j b25uZWN0X3NlcnZlcmluZm8gdGFnPC9oMz4KCjxwcmUgY2xhc3M9Imxhbmd1YWdlLW1hcmt1 cCI+PGNvZGU+Jmx0O3R4cDpjb21fY29ubmVjdF9zZXJ2ZXJpbmZvIC8mZ3Q7PC9jb2RlPjwv cHJlPgoKPHA+VGhpcyB0YWcgaGFzIG5vIGVmZmVjdCBvbiB0aGUgZm9ybSBvciA8c3BhbiBj bGFzcz0iY2FwcyI+SFRNTDwvc3Bhbj4gb3V0cHV0LCBidXQgd2lsbCBpbmNsdWRlIGFkZGl0 aW9uYWwgaW5mb3JtYXRpb24gaW4gdGhlIGVtYWlsIGJhc2VkIG9uIHRoZSA8c3BhbiBjbGFz cz0iY2FwcyI+UEhQPC9zcGFuPiA8Y29kZT4kX1NFUlZFUjwvY29kZT4gdmFyaWFibGUuPC9w PgoKPGg0PkF0dHJpYnV0ZXM8L2g0PgoKPHVsPgoJPGxpPjxjb2RlPmxhYmVsPSZxdW90O3Rl eHQmcXVvdDs8L2NvZGU+PGJyIC8+ClVzZWQgdG8gaWRlbnRpZnkgdGhlIGZpZWxkIGluIHRo ZSBlbWFpbC4gRGVmYXVsdHMgdG8gdGhlIHZhbHVlIG9mIHRoZSA8Y29kZT5uYW1lPC9jb2Rl PiBhdHRyaWJ1dGUuPC9saT4KCTxsaT48Y29kZT5uYW1lPSZxdW90O3ZhbHVlJnF1b3Q7PC9j b2RlPiA8c3BhbiBjbGFzcz0id2FybmluZyI+cmVxdWlyZWQ8L3NwYW4+PGJyIC8+Ck5hbWUg b2YgdGhlIHNlcnZlciB2YXJpYWJsZS4gU2VlIHRoZSA8YSBocmVmPSJodHRwczovL3BocC5u ZXQvbWFudWFsL3Jlc2VydmVkLnZhcmlhYmxlcy5waHAjcmVzZXJ2ZWQudmFyaWFibGVzLnNl cnZlciI+PHNwYW4gY2xhc3M9ImNhcHMiPlBIUDwvc3Bhbj4gbWFudWFsPC9hPiBmb3IgYSBm dWxsIGxpc3QuPC9saT4KPC91bD4KCjxoND5FeGFtcGxlczwvaDQ+Cgo8aDU+RXhhbXBsZSAx PC9oNT4KCjxwPkFkZCB0aGUgSVAgYWRkcmVzcyBvZiB0aGUgdmlzaXRvciB0byB0aGUgZW1h aWw6PC9wPgoKPHByZSBjbGFzcz0ibGFuZ3VhZ2UtbWFya3VwIj48Y29kZT4mbHQ7dHhwOmNv bV9jb25uZWN0X3NlcnZlcmluZm8gbmFtZT0mcXVvdDtSRU1PVEVfQUREUiZxdW90OyBsYWJl bD0mcXVvdDtJUCBudW1iZXImcXVvdDsgLyZndDs8L2NvZGU+PC9wcmU+Cgo8aDU+RXhhbXBs ZSAyPC9oNT4KCjxwPkFkZCB0aGUgbmFtZSBvZiB0aGUgdmlzaXRvciYjODIxNztzIGJyb3dz ZXIgdG8gdGhlIGVtYWlsOjwvcD4KCjxwcmUgY2xhc3M9Imxhbmd1YWdlLW1hcmt1cCI+PGNv ZGU+Jmx0O3R4cDpjb21fY29ubmVjdF9zZXJ2ZXJpbmZvIG5hbWU9JnF1b3Q7SFRUUF9VU0VS X0FHRU5UJnF1b3Q7IGxhYmVsPSZxdW90O0Jyb3dzZXImcXVvdDsgLyZndDs8L2NvZGU+PC9w cmU+Cgo8aDMgaWQ9ImNjX3NlbmRfYXJ0aWNsZSI+Y29tX2Nvbm5lY3Rfc2VuZF9hcnRpY2xl IHRhZzwvaDM+Cgo8cHJlIGNsYXNzPSJsYW5ndWFnZS1tYXJrdXAiPjxjb2RlPiZsdDt0eHA6 Y29tX2Nvbm5lY3Rfc2VuZF9hcnRpY2xlIC8mZ3Q7PC9jb2RlPjwvcHJlPgoKPHA+VXNlIHRo aXMgdGFnIGluIHlvdXIgaW5kaXZpZHVhbCBhcnRpY2xlIGZvcm0sIHdoZXJlIHlvdSB3YW50 IHRoZSAmIzgyMjA7c2VuZCBhcnRpY2xlJiM4MjIxOyBsaW5rIHRvIGJlIGRpc3BsYXllZC48 L3A+Cgo8aDQ+QXR0cmlidXRlczwvaDQ+Cgo8dWw+Cgk8bGk+PGNvZGU+bGlua3RleHQ9JnF1 b3Q7dGV4dCZxdW90OzwvY29kZT48YnIgLz4KVGV4dCBkaXNwbGF5ZWQgZm9yIHRoZSBsaW5r LiBEZWZhdWx0IGlzIDxjb2RlPnNlbmQgYXJ0aWNsZTwvY29kZT4uPC9saT4KPC91bD4KCjxo ND5FeGFtcGxlczwvaDQ+Cgo8aDU+RXhhbXBsZSAxPC9oNT4KCjxwPk9uIGFuIGFydGljbGUg Zm9ybTo8L3A+Cgo8cHJlIGNsYXNzPSJsYW5ndWFnZS1tYXJrdXAiPjxjb2RlPiZsdDt0eHA6 Y29tX2Nvbm5lY3Rfc2VuZF9hcnRpY2xlIGxpbmt0ZXh0PSZxdW90O1NlbmQgdGhpcyBhcnRp Y2xlJnF1b3Q7IC8mZ3Q7PC9jb2RlPjwvcHJlPgoKPGgzIGlkPSJjY19sYWJlbCI+Y29tX2Nv bm5lY3RfbGFiZWwgdGFnPC9oMz4KCjxwcmUgY2xhc3M9Imxhbmd1YWdlLW1hcmt1cCI+PGNv ZGU+Jmx0O3R4cDpjb21fY29ubmVjdF9sYWJlbCAvJmd0OzwvY29kZT48L3ByZT4KCjxwPlJl dHVybiB0aGUgbGFiZWwgZm9yIHRoZSBnaXZlbiBhdHRyaWJ1dGUgbmFtZS48L3A+Cgo8aDQ+ QXR0cmlidXRlczwvaDQ+Cgo8dWw+Cgk8bGk+PGNvZGU+bmFtZT0mcXVvdDt0ZXh0JnF1b3Q7 PC9jb2RlPjxiciAvPgpUaGUgbmFtZSBvZiB0aGUgZmllbGQgZm9yIHdoaWNoIHlvdSB3aXNo IHRvIHJldHJpZXZlIHRoZSBsYWJlbC48L2xpPgo8L3VsPgoKPGgzIGlkPSJjY192YWx1ZSI+ Y29tX2Nvbm5lY3RfdmFsdWUgdGFnPC9oMz4KCjxwcmUgY2xhc3M9Imxhbmd1YWdlLW1hcmt1 cCI+PGNvZGU+Jmx0O3R4cDpjb21fY29ubmVjdF92YWx1ZSAvJmd0OzwvY29kZT48L3ByZT4K CjxwPlJldHVybiB0aGUgdmFsdWUgb2YgdGhlIGdpdmVuIGF0dHJpYnV0ZSwgYnkgbmFtZSBv ciBpdHMgbGFiZWwuPC9wPgoKPGg0PkF0dHJpYnV0ZXM8L2g0PgoKPHVsPgoJPGxpPjxjb2Rl PmxhYmVsPSZxdW90O3RleHQmcXVvdDs8L2NvZGU+PGJyIC8+ClRoZSBsYWJlbCBvZiB0aGUg ZmllbGQgZm9yIHdoaWNoIHlvdSB3aXNoIHRvIHJldHJpZXZlIHRoZSB2YWx1ZS48L2xpPgoJ PGxpPjxjb2RlPm5hbWU9JnF1b3Q7dGV4dCZxdW90OzwvY29kZT48YnIgLz4KVGhlIG5hbWUg b2YgdGhlIGZpZWxkIGZvciB3aGljaCB5b3Ugd2lzaCB0byByZXRyaWV2ZSB0aGUgdmFsdWUu PC9saT4KPC91bD4KCjxoMyBpZD0iY2NfaWYiPmNvbV9jb25uZWN0X2lmIHRhZzwvaDM+Cgo8 cHJlIGNsYXNzPSJsYW5ndWFnZS1tYXJrdXAiPjxjb2RlPiZsdDt0eHA6Y29tX2Nvbm5lY3Rf aWYgLyZndDs8L2NvZGU+PC9wcmU+Cgo8cD5Db25kaXRpb25hbCB0YWcgZm9yIGNoZWNraW5n IHZhcmlhYmxlIGNvbmRpdGlvbnMsIGVpdGhlciBieSBuYW1lIG9yIGxhYmVsLjwvcD4KCjxo ND5BdHRyaWJ1dGVzPC9oND4KCjx1bD4KCTxsaT48Y29kZT5sYWJlbD0mcXVvdDt0ZXh0JnF1 b3Q7PC9jb2RlPjxiciAvPgpUaGUgbGFiZWwgb2YgdGhlIGZpZWxkIHlvdSB3aXNoIHRvIGNo ZWNrLjwvbGk+Cgk8bGk+PGNvZGU+bmFtZT0mcXVvdDt0ZXh0JnF1b3Q7PC9jb2RlPjxiciAv PgpUaGUgbmFtZSBvZiB0aGUgZmllbGQgeW91IHdpc2ggdG8gY2hlY2suPC9saT4KCTxsaT48 Y29kZT52YWx1ZT0mcXVvdDt0ZXh0JnF1b3Q7PC9jb2RlPjxiciAvPgpUaGUgdmFsdWUgYWdh aW5zdCB3aGljaCB0byB0ZXN0IHRoZSBnaXZlbiBmaWVsZC4gTGVhdmUgYmxhbmsgdG8ganVz dCB0ZXN0IGlmIHRoZXJlIGlzIGFueSB2YWx1ZSBhc3NpZ25lZCB0byB0aGUgZmllbGQuPC9s aT4KPC91bD4KCjxoND5FeGFtcGxlczwvaDQ+Cgo8aDU+RXhhbXBsZSAxPC9oNT4KCjxwPlRh a2UgYWN0aW9uIGlmIHRoZSB2aXNpdG9yIGhhcyBlbnRlcmVkIGEgcGFydGljdWxhciB2YWx1 ZS48L3A+Cgo8cHJlIGNsYXNzPSJsYW5ndWFnZS1tYXJrdXAiPjxjb2RlPiZsdDt0eHA6Y29t X2Nvbm5lY3RfaWYgbmFtZT0mcXVvdDtkZWxpdmVyeSZxdW90OyB2YWx1ZT0mcXVvdDtjb3Vy aWVyJnF1b3Q7Jmd0OzwvY29kZT48L3ByZT4KCjxwPlBsZWFzZSBub3RlLCB0aGlzIG9wdGlv biBpbmN1cnMgYW4gYWRkaXRpb25hbCBjaGFyZ2UsIDxjb2RlPiZsdDsvdHhwOmNvbV9jb25u ZWN0X2lmJmd0OzwvY29kZT4uPC9wPgoKPGgyIGlkPSJhZHZhbmNlZCI+QWR2YW5jZWQgZXhh bXBsZXM8L2gyPgoKPGgzIGlkPSJhZHZhbmNlZDEiPlNlcGFyYXRlIGlucHV0IGFuZCBlcnJv ciBmb3JtczwvaDM+Cgo8cD5Vc2luZyA8Y29kZT5zaG93X2lucHV0PC9jb2RlPiBhbmQgPGNv ZGU+c2hvd19lcnJvcjwvY29kZT4gdG8gZGlzcGxheSB0aGUgZm9ybSBhbmQgZXJyb3IgbWVz c2FnZXMgb24gZGlmZmVyZW50IHBhcnRzIG9mIGEgcGFnZS4gQSBmb3JtIGlzIHVzZWQgdG8g bWFrZSBzdXJlIHRoZSBjb250ZW50cyBvZiBib3RoIGZvcm1zIGFyZSBpZGVudGljYWwsIG90 aGVyd2lzZSB0aGV5IHdvdWxkIGJlIHNlZW4gYXMgdHdvIGluZGVwZW5kZW50IGZvcm1zLiBU aGUgZmlyc3QgZm9ybSBvbmx5IHNob3dzIGVycm9ycyAobm8gaW5wdXQpLCB0aGUgc2Vjb25k IGZvcm0gb25seSBzaG93cyB0aGUgaW5wdXQgZmllbGRzIChubyBlcnJvcnMpLjwvcD4KCjxw cmUgY2xhc3M9Imxhbmd1YWdlLW1hcmt1cCI+PGNvZGU+Jmx0O2RpdiBpZD0mcXVvdDtlcnJv ciZxdW90OyZndDsKICAgICZsdDt0eHA6Y29tX2Nvbm5lY3QgZm9ybT0mcXVvdDtjb250YWN0 X2Zvcm0mcXVvdDsgc2hvd19pbnB1dD0mcXVvdDswJnF1b3Q7IC8mZ3Q7CiZsdDsvZGl2Jmd0 OwombHQ7ZGl2IGlkPSZxdW90O2lucHV0Zm9ybSZxdW90OyZndDsKICAgICZsdDt0eHA6Y29t X2Nvbm5lY3QgZm9ybT0mcXVvdDtjb250YWN0X2Zvcm0mcXVvdDsgc2hvd19lcnJvcj0mcXVv dDswJnF1b3Q7IC8mZ3Q7CiZsdDsvZGl2Jmd0OzwvY29kZT48L3ByZT4KCjxwPkFwYXJ0IGZy b20gdGhlIDxjb2RlPnNob3dfZXJyb3I8L2NvZGU+IGFuZCA8Y29kZT5zaG93X2lucHV0PC9j b2RlPiBhdHRyaWJ1dGVzLCBhbGwgb3RoZXIgYXR0cmlidXRlcyBtdXN0IGJlIDEwMCUgaWRl bnRpY2FsIGluIGJvdGggZm9ybXMsIG90aGVyd2lzZSB0aGV5IHdvdWxkIGJlIHNlZW4gYXMg dHdvIHVucmVsYXRlZCBmb3Jtcy48L3A+Cgo8aDMgaWQ9ImFkdmFuY2VkMiI+VXNlciBzZWxl Y3RhYmxlIHN1YmplY3QgZmllbGQ8L2gzPgoKPHA+U3BlY2lmeSB0aGUgPGNvZGU+c3ViamVj dF9mb3JtPC9jb2RlPiBhdHRyaWJ1dGUgYW5kIGNyZWF0ZSBhIGZvcm0gd2hpY2ggaW5jbHVk ZXMgYSA8Y29kZT5jb21fY29ubmVjdF9zZWxlY3Q8L2NvZGU+IHRhZzo8L3A+Cgo8cHJlIGNs YXNzPSJsYW5ndWFnZS1tYXJrdXAiPjxjb2RlPiZsdDt0eHA6Y29tX2Nvbm5lY3QgdG89JnF1 b3Q7eW91QGV4YW1wbGUuY29tJnF1b3Q7IHN1YmplY3RfZm9ybT0mcXVvdDtteV9zdWJqZWN0 X2Zvcm0mcXVvdDsgLyZndDsKICAgICZsdDt0eHA6Y29tX2Nvbm5lY3RfdGV4dCBsYWJlbD0m cXVvdDtOYW1lJnF1b3Q7IC8mZ3Q7Jmx0O2JyIC8mZ3Q7CiAgICAmbHQ7dHhwOmNvbV9jb25u ZWN0X2VtYWlsIC8mZ3Q7Jmx0O2JyIC8mZ3Q7CiAgICAmbHQ7dHhwOmNvbV9jb25uZWN0X3Nl bGVjdCBsYWJlbD0mcXVvdDtDaG9vc2UgU3ViamVjdCZxdW90OyBvcHRpb25zPSZxdW90OyxR dWVzdGlvbixGZWVkYmFjayZxdW90OyAvJmd0OyZsdDticiAvJmd0OwogICAgJmx0O3R4cDpj b21fY29ubmVjdF90ZXh0YXJlYSBsYWJlbD0mcXVvdDtNZXNzYWdlJnF1b3Q7IC8mZ3Q7Jmx0 O2JyIC8mZ3Q7CiZsdDsvdHhwOmNvbV9jb25uZWN0Jmd0OzwvY29kZT48L3ByZT4KCjxwPkNy ZWF0ZSBhIFRleHRwYXR0ZXJuIGZvcm0gY2FsbGVkICYjODIyMDtteV9zdWJqZWN0X2Zvcm0m IzgyMjE7LCBjb250YWluaW5nOjwvcD4KCjxwcmUgY2xhc3M9Imxhbmd1YWdlLW1hcmt1cCI+ PGNvZGU+Jmx0O3R4cDpwaHAmZ3Q7CiAgICBnbG9iYWwgJGNvbV9jb25uZWN0X2Zvcm07CiAg ICBlY2hvICRjb21fY29ubmVjdF9mb3JtWyYjMzk7Q2hvb3NlIFN1YmplY3QmIzM5O107CiZs dDsvdHhwOnBocCZndDs8L2NvZGU+PC9wcmU+Cgo8cD5UaGUgPGNvZGU+bGFiZWw8L2NvZGU+ IHVzZWQgaW4gdGhlIDxjb2RlPmNvbV9jb25uZWN0X3NlbGVjdDwvY29kZT4gdGFnIG11c3Qg YmUgaWRlbnRpY2FsIHRvIHRoZSBjb3JyZXNwb25kaW5nIHZhcmlhYmxlIGluIHRoZSA8Y29k ZT5zdWJqZWN0X2Zvcm08L2NvZGU+LiBIZXJlIHdlIHVzZWQgPGNvZGU+Q2hvb3NlIHN1Ympl Y3Q8L2NvZGU+LjwvcD4KCjxwPklmIHlvdSYjODIxNztkIHByZWZlciB0byBhZGQgYSBjb21t b24gcHJlZml4IGZvciBhbGwgc3ViamVjdHMsIHVzZSBhIDxjb2RlPnN1YmplY3RfZm9ybTwv Y29kZT4gY29udGFpbmluZzo8L3A+Cgo8cHJlIGNsYXNzPSJsYW5ndWFnZS1tYXJrdXAiPjxj b2RlPiZsdDt0eHA6cGhwJmd0OwogICAgZ2xvYmFsICRjb21fY29ubmVjdF9mb3JtOwogICAg ZWNobyAmIzM5O015IGNvbW1vbiBwcmVmaXggLSAmIzM5OyAuICRjb21fY29ubmVjdF9mb3Jt WyYjMzk7Q2hvb3NlIFN1YmplY3QmIzM5O107CiZsdDsvdHhwOnBocCZndDs8L2NvZGU+PC9w cmU+Cgo8aDMgaWQ9ImFkdmFuY2VkMyI+VXNlciBzZWxlY3RhYmxlIHJlY2lwaWVudCwgd2l0 aG91dCBzaG93aW5nIGVtYWlsIGFkZHJlc3M8L2gzPgoKPHA+U3BlY2lmeSB0aGUgPGNvZGU+ dG9fZm9ybTwvY29kZT4gYXR0cmlidXRlIGFuZCBjcmVhdGUgYSBmb3JtIHdoaWNoIGluY2x1 ZGVzIGEgPGNvZGU+Y29tX2Nvbm5lY3Rfc2VsZWN0PC9jb2RlPiB0YWc6PC9wPgoKPHByZSBj bGFzcz0ibGFuZ3VhZ2UtbWFya3VwIj48Y29kZT4mbHQ7dHhwOmNvbV9jb25uZWN0IHRvX2Zv cm09JnF1b3Q7bXlfY29tX2Nvbm5lY3RfdG9fZm9ybSZxdW90OyZndDsKICAgICZsdDt0eHA6 Y29tX2Nvbm5lY3RfdGV4dCBsYWJlbD0mcXVvdDtOYW1lJnF1b3Q7IC8mZ3Q7Jmx0O2JyIC8m Z3Q7CiAgICAmbHQ7dHhwOmNvbV9jb25uZWN0X2VtYWlsIC8mZ3Q7Jmx0O2JyIC8mZ3Q7CiAg ICAmbHQ7dHhwOmNvbV9jb25uZWN0X3NlbGVjdCBsYWJlbD0mcXVvdDtEZXBhcnRtZW50JnF1 b3Q7IG9wdGlvbnM9JnF1b3Q7LFN1cHBvcnQsU2FsZXMmcXVvdDsgLyZndDsmbHQ7YnIgLyZn dDsKICAgICZsdDt0eHA6Y29tX2Nvbm5lY3RfdGV4dGFyZWEgbGFiZWw9JnF1b3Q7TWVzc2Fn ZSZxdW90OyAvJmd0OyZsdDticiAvJmd0OwombHQ7L3R4cDpjb21fY29ubmVjdCZndDs8L2Nv ZGU+PC9wcmU+Cgo8cD5DcmVhdGUgYSBUZXh0cGF0dGVybiBmb3JtIGNhbGxlZCAmIzgyMjA7 bXlfY29tX2Nvbm5lY3RfdG9fZm9ybSYjODIyMTssIGNvbnRhaW5pbmc6PC9wPgoKPHByZSBj bGFzcz0ibGFuZ3VhZ2UtbWFya3VwIj48Y29kZT4mbHQ7dHhwOnBocCZndDsKICAgIGdsb2Jh bCAkY29tX2Nvbm5lY3RfZm9ybTsKICAgIHN3aXRjaCgkY29tX2Nvbm5lY3RfZm9ybVsmIzM5 O0RlcGFydG1lbnQmIzM5O10pCiAgICB7CiAgICAgICAgY2FzZSAmIzM5O1N1cHBvcnQmIzM5 OzoKICAgICAgICAgICAgZWNobyAmIzM5O2NyZXdAZXhhbXBsZS5jb20mIzM5OzsKICAgICAg ICAgICAgYnJlYWs7CiAgICAgICAgY2FzZSAmIzM5O1NhbGVzJiMzOTs6CiAgICAgICAgICAg IGVjaG8gJiMzOTtzaG93bWV0aGVtb25leUBleGFtcGxlLmNvbSYjMzk7OwogICAgICAgICAg ICBicmVhazsKICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICBlY2hvICYjMzk7c29tZW9u ZUBleGFtcGxlLmNvbSYjMzk7OwogICAgfQombHQ7L3R4cDpwaHAmZ3Q7PC9jb2RlPjwvcHJl PgoKPHA+VGhlIDxjb2RlPmxhYmVsPC9jb2RlPiB1c2VkIGluIHRoZSA8Y29kZT5jb21fY29u bmVjdF9zZWxlY3Q8L2NvZGU+IHRhZyBtdXN0IGJlIGlkZW50aWNhbCB0byB0aGUgY29ycmVz cG9uc2luZyB2YXJpYWJsZSBpbiB0aGUgPGNvZGU+dG9fZm9ybTwvY29kZT4uIEhlcmUgd2Ug dXNlZCA8Y29kZT5EZXBhcnRtZW50PC9jb2RlPi48L3A+Cgo8cD5BICYjODIxNjtkZWZhdWx0 JiM4MjE3OyBlbWFpbCBhZGRyZXNzIGluIHRoZSA8Y29kZT50b19mb3JtPC9jb2RlPiBpcyBz cGVjaWZpZWQgdG8gZW5zdXJlIHRoYXQgYSB2YWxpZCBlbWFpbCBhZGRyZXNzIGlzIHVzZWQg aW4gY2FzZXMgd2hlcmUgeW91IGFkZCBvciBjaGFuZ2UgYSBzZWxlY3QvcmFkaW8gb3B0aW9u IGFuZCBmb3JnZXQgdG8gdXBkYXRlIHRoZSA8Y29kZT50b19mb3JtPC9jb2RlPi48L3A+Cgo8 cCBjbGFzcz0iYWxlcnQtYmxvY2sgd2FybmluZyI+PHN0cm9uZz5XYXJuaW5nOjwvc3Ryb25n PiBOZXZlciB1c2UgdGFncyBsaWtlIDxjb2RlPmNvbV9jb25uZWN0X3RleHQ8L2NvZGU+LCA8 Y29kZT5jb21fY29ubmVjdF9lbWFpbDwvY29kZT4gb3IgPGNvZGU+Y29tX2Nvbm5lY3RfdGV4 dGFyZWE8L2NvZGU+IGZvciBzZXR0aW5nIHRoZSByZWNpcGllbnQgYWRkcmVzcywgb3RoZXJ3 aXNlIHlvdXIgZm9ybSBjYW4gYmUgYWJ1c2VkIHRvIHNlbmQgc3BhbSB0byBhbnkgZW1haWwg YWRkcmVzcyE8L3A+Cgo8aDIgaWQ9InN0eWxpbmciPlN0eWxpbmc8L2gyPgoKPHA+VGhlIGZv cm0gaXRzZWxmIGhhcyBhIGRlZmF1bHQgPGNvZGU+Y2xhc3M8L2NvZGU+IG9mIDxjb2RlPmNv bUNvbm5lY3RGb3JtPC9jb2RlPiBzZXQgb24gdGhlIDxjb2RlPiZsdDtmb3JtJmd0OzwvY29k ZT4gPHNwYW4gY2xhc3M9ImNhcHMiPkhUTUw8L3NwYW4+IHRhZy48L3A+Cgo8cD5JZiBhIDxj b2RlPnRoYW5rc19mb3JtPC9jb2RlPiB0ZW1wbGF0ZSBpcyB1c2VkLCB0aGUgd3JhcHBlciBh cm91bmQgdGhhdCB0ZW1wbGF0ZSBoYXMgYSBkZWZhdWx0IDxjb2RlPmNsYXNzPC9jb2RlPiBv ZiA8Y29kZT5jb21UaGFua3M8L2NvZGU+LjwvcD4KCjxwPlRoZSBsaXN0IG9mIGVycm9yIG1l c3NhZ2VzIChpZiBhbnkpIGhhcyBhIGRlZmF1bHQgPGNvZGU+Y2xhc3M8L2NvZGU+IG9mIDxj b2RlPmNvbUVycm9yPC9jb2RlPiBzZXQgb24gdGhlIDxjb2RlPnVsPC9jb2RlPiA8c3BhbiBj bGFzcz0iY2FwcyI+SFRNTDwvc3Bhbj4gdGFnIHRoYXQgZW5jbG9zZXMgdGhlIGxpc3Qgb2Yg ZXJyb3JzLiBUaGlzIGNsYXNzIG5hbWUgbWF5IGJlIG92ZXJyaWRkZW4gdXNpbmcgdGhlIDxj b2RlPmNsYXNzZXM8L2NvZGU+IGF0dHJpYnV0ZSBvZiB0aGUgPGNvZGU+Y29tX2Nvbm5lY3Q8 L2NvZGU+IHRhZy48L3A+Cgo8cD5BbGwgZm9ybSBlbGVtZW50cyBhbmQgY29ycmVzcG9uZGlu ZyBsYWJlbHMgaGF2ZSB0aGUgZm9sbG93aW5nIGNsYXNzZXMgKG9yIGlkcykgc2V0IGJ5IGRl ZmF1bHQ6PC9wPgoKPG9sPgoJPGxpPk9uZSBvZiA8Y29kZT5jb21UZXh0PC9jb2RlPiwgPGNv ZGU+Y29tRW1haWw8L2NvZGU+LCA8Y29kZT5jb21UZXh0YXJlYTwvY29kZT4sIDxjb2RlPmNv bVNlbGVjdDwvY29kZT4sIDxjb2RlPmNvbU9wdGlvbjwvY29kZT4sIDxjb2RlPmNvbVJhZGlv PC9jb2RlPiwgPGNvZGU+Y29tQ2hlY2tib3g8L2NvZGU+IG9yIDxjb2RlPmNvbVN1Ym1pdDwv Y29kZT4uIEJ5IGRlZmF1bHQsIGl0IHNob3VsZCBiZSBvYnZpb3VzIHdoaWNoIDxjb2RlPmNs YXNzPC9jb2RlPiBpcyB1c2VkIGZvciB3aGljaCBmb3JtIGVsZW1lbnQgKGFuZCBjb3JyZXNw b25kaW5nIGxhYmVsKS4gWW91IGNhbiBvdmVycmlkZSB0aGVzZSBuYW1lcyBieSB1c2luZyB5 b3VyIG93biA8Y29kZT5jbGFzczwvY29kZT4gYXR0cmlidXRlLjwvbGk+Cgk8bGk+PGNvZGU+ Y29tUmVxdWlyZWQ8L2NvZGU+IGFuZC9vciA8Y29kZT5lcnJvckVsZW1lbnQ8L2NvZGU+LCBk ZXBlbmRpbmcgb24gd2hldGhlciB0aGUgZm9ybSBlbGVtZW50IGlzIHJlcXVpcmVkLCBhbiBl cnJvciB3YXMgZm91bmQgaW4gd2hhdGV2ZXIgdGhlIHZpc2l0b3IgZW50ZXJlZCwgb3IgYm90 aC4gT3ZlcnJpZGUgdGhlc2UgdXNpbmcgdGhlIDxjb2RlPmNsYXNzZXM8L2NvZGU+IGF0dHJp YnV0ZSBpbiB0aGUgPGNvZGU+Y29tX2Nvbm5lY3Q8L2NvZGU+IHRhZy48L2xpPgoJPGxpPkFu IGluZGl2aWR1YWwgPGNvZGU+aWQ8L2NvZGU+IG9yIDxjb2RlPmNsYXNzPC9jb2RlPiBzZXQg dG8gdGhlIHZhbHVlIG9mIHRoZSA8Y29kZT5uYW1lPC9jb2RlPiBhdHRyaWJ1dGUgb2YgdGhl IGNvcnJlc3BvbmRpbmcgdGFnLiBXaGVuIHN0eWxpbmcgZm9ybXMgYmFzZWQgb24gdGhpcyA8 Y29kZT5jbGFzczwvY29kZT4sIHlvdSBzaG91bGQgZXhwbGljaXRseSBzZXQgdGhlIDxjb2Rl Pm5hbWU8L2NvZGU+IGF0dHJpYnV0ZSBiZWNhdXNlIGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVk IG5hbWVzIG1heSBjaGFuZ2UgaW4gbmV3ZXIgY29tX2Nvbm5lY3QgdmVyc2lvbnMuPC9saT4K PC9vbD4KCjxoMiBpZD0iYXBpIj5Db20gQ29ubmVjdCYjODIxNztzIDxzcGFuIGNsYXNzPSJj YXBzIj5BUEk8L3NwYW4+PC9oMj4KCjxwPlRoZSBwbHVnaW4gPHNwYW4gY2xhc3M9ImNhcHMi PkFQSTwvc3Bhbj4gb2YgY29tX2Nvbm5lY3QsIG9yaWdpbmFsbHkgZGV2ZWxvcGVkIGJ5IFRy YW5xdWlsbG8sIGFsbG93cyBvdGhlciBwbHVnaW5zIHRvIGludGVyYWN0IHdpdGggY29udGFj dCBmb3Jtcy4gVGhpcyBwZXJtaXRzIGV4dHJhIGZ1bmN0aW9uYWxpdHkgc3VjaCBhcyBjb21i YXR0aW5nIGNvbW1lbnQgY3BhbSwgPHNwYW4gY2xhc3M9ImNhcHMiPkhUTUw8L3NwYW4+IGVt YWlsLCBuZXdzbGV0dGVyIGRlbGl2ZXJ5IGFuZCBzbyBmb3J0aCB0byBiZSBib2x0ZWQgb250 byB0aGUgYmFzZSBwbHVnaW4uPC9wPgoKPHA+Rm91ciBjYWxsYmFjayBldmVudHMgZXhpc3Qg aW4gY29tX2Nvbm5lY3Q6PC9wPgoKPHVsPgoJPGxpPjxjb2RlPmNvbWNvbm5lY3Quc3VibWl0 PC9jb2RlPiBpcyBjYWxsZWQgYWZ0ZXIgdGhlIGZvcm0gaXMgc3VibWl0dGVkIGFuZCB0aGUg dmFsdWVzIGFyZSBjaGVja2VkIGlmIGVtcHR5IG9yIHZhbGlkIGVtYWlsIGFkZHJlc3Nlcywg YnV0IGJlZm9yZSB0aGUgbWFpbCBpcyBzZW50LjwvbGk+Cgk8bGk+PGNvZGU+Y29tY29ubmVj dC5mb3JtPC9jb2RlPiBsZXRzIHlvdSBpbmplY3QgY29udGVudCAoZmllbGRzKSBpbiB0aGUg Y29udGFjdCBmb3JtIGFzIGRpc3BsYXllZCB0byB0aGUgdmlzaXRvci48L2xpPgoJPGxpPjxj b2RlPmNvbWNvbm5lY3QucmVuZGVyPC9jb2RlPiBsZXRzIHlvdSBpbmplY3Qgb3IgYWx0ZXIg bWFya3VwIG9mIHRoZSBlbnRpcmUgPGNvZGU+Jmx0O2Zvcm0mZ3Q7PC9jb2RlPi4gVXNlZnVs IGZvciBlZGl0aW5nIHRoaW5ncyBsaWtlIDxjb2RlPmVuY3R5cGU8L2NvZGU+IChlLmcuIGZv ciBmaWxlIGF0dGFjaG1lbnQgbW9kdWxlcyB0aGF0IGxpbmsgaW50byB0aGlzIHBsdWdpbiku PC9saT4KCTxsaT48Y29kZT5jb21jb25uZWN0LmRlbGl2ZXI8L2NvZGU+IGlzIGNhbGxlZCBp bW1lZGlhdGVseSBwcmlvciB0byBkZWxpdmVyeSBhbmQgYWR2ZXJ0aXNlcyB0aGUgaW50ZW5k ZWQgcGF5bG9hZCBzbyB5b3UgbWF5IG1hbmlwdWxhdGUgaXQuIEZvciBleGFtcGxlLCB5b3Ug Y291bGQgZG8gc29tZXRoaW5nIGFzIHNpbXBsZSBhcyBhZGRpbmcgQ0M6IG9yIDxzcGFuIGNs YXNzPSJjYXBzIj5CQ0M8L3NwYW4+OiBmaWVsZHMuIE9yIGNoYW5nZSB0aGUgPHNwYW4gY2xh c3M9ImNhcHMiPk1JTUU8L3NwYW4+IHR5cGUgaGVhZGVyIHRvIDxjb2RlPnRleHQvaHRtbDwv Y29kZT4gYW5kIGFkZCBzb21lIDxzcGFuIGNsYXNzPSJjYXBzIj5IVE1MPC9zcGFuPiBjb250 ZW50IGJhc2VkIG9uIHRoZSBnaXZlbiBib2R5IGRhdGEsIHRoZW4gbGV0IGNvbV9jb25uZWN0 IGhhbmRsZSB0aGUgbWFpbGluZy4gT3IgeW91IGNvdWxkIGludGVyY2VwdCB0aGUgZW50aXJl IG1haWwgcHJvY2VzcywgaGFuZGxlIG1haWxpbmcgeW91cnNlbGYgd2l0aCBhIHRoaXJkIHBh cnR5IHN5c3RlbSwgYW5kIHRlbGwgY29tX2Nvbm5lY3QgdG8gc2tpcCBpdHMgaW50ZXJuYWwg bWFpbGluZyBwcm9jZXNzLjwvbGk+CjwvdWw+Cgo8cD5Gb3IgcmVmZXJlbmNlIGhlcmUgYXJl IHRoZSBjb21tYW5kcyB0aGF0IHdpbGwgYmUgaW50ZXJlc3RpbmcgdG8gcGx1Z2luIGRldmVs b3BlcnM6PC9wPgoKPHByZSBjbGFzcz0ibGFuZ3VhZ2UtcGhwIj48Y29kZT4vLyBUaGlzIHdp bGwgY2FsbCB5b3VyIGZ1bmN0aW9uIGJlZm9yZSB0aGUgZm9ybSBpcyBzdWJtaXR0ZWQgc28g eW91IGNhbiBhbmFseXNlIHRoZSBzdWJtaXR0ZWQgZGF0YQpyZWdpc3Rlcl9jYWxsYmFjaygm IzM5O2FiY19teWZ1bmN0aW9uJiMzOTssICYjMzk7Y29tY29ubmVjdC5zdWJtaXQmIzM5Oyk7 CgovLyBUaGlzIHdpbGwgY2FsbCB5b3VyIGZ1bmN0aW9uIGFuZCBhZGQgdGhlIG91dHB1dCAo dXNlIEByZXR1cm4gJG15c3R1ZmY7QCkgdG8gdGhlIGNvbnRhY3QtZm9ybS4KcmVnaXN0ZXJf Y2FsbGJhY2soJiMzOTthYmNfbXlvdGhlcmZ1bmN0aW9uMiYjMzk7LCAmIzM5O2NvbWNvbm5l Y3QuZm9ybSYjMzk7KTsKCi8vIFRvIGdldCBob2xkIG9mIHRoZSBmb3JtLXZhcmlhYmxlcyB5 b3UgY2FuIHVzZSBnbG9iYWwgY29tX2Nvbm5lY3RfZm9ybTsKLy8gV2l0aCB0aGUgZm9sbG93 aW5nIHR3byBsaW5lcyB5b3UgY2FuIHRlbGwgY29tX2Nvbm5lY3QgaWYgeW91ciBwbHVnaW4g Zm91bmQgc3BhbS4KJGV2YWx1YXRvciA9JmFtcDsgZ2V0X2NvbWNvbm5lY3RfZXZhbHVhdG9y KCk7CgovLyBUaGUgcGFzc2VkIHZhbHVlIG11c3QgYmUgbm9uLXplcm8gdG8gbWFyayB0aGUg Y29udGVudCBhcyBzcGFtLgovLyBWYWx1ZSBtdXN0IGJlIGEgbnVtYmVyIGJldHdlZW4gMCBh bmQgMS4KJGV2YWx1YXRvciAtJmd0OyBhZGRfY29tY29ubmVjdF9zdGF0dXMoMSk7PC9jb2Rl PjwvcHJlPgoKPHA+TXVsdGlwbGUgcGx1Z2lucyBjYW4gYmUgYWN0aXZlIGF0IHRoZSBzYW1l IHRpbWUgYW5kIGVhY2ggb2YgdGhlbSBjYW4gbWFyayB0aGUgc3VibWl0dGVkIGNvbnRlbnQg YXMgc3BhbSBhbmQgcHJldmVudCB0aGUgZm9ybSBmcm9tIGJlaW5nIHN1Ym1pdHRlZC48L3A+ Cgo8aDQ+RXhhbXBsZXM8L2g0PgoKPHByZSBjbGFzcz0ibGFuZ3VhZ2UtcGhwIj48Y29kZT5y ZWdpc3Rlcl9jYWxsYmFjaygmIzM5O3BhcF9jb21jb25uZWN0X2Zvcm0mIzM5OywmIzM5O2Nv bWNvbm5lY3QuZm9ybSYjMzk7KTsKcmVnaXN0ZXJfY2FsbGJhY2soJiMzOTtwYXBfY29tY29u bmVjdF9zdWJtaXQmIzM5OywmIzM5O2NvbWNvbm5lY3Quc3VibWl0JiMzOTspOwoKZnVuY3Rp b24gcGFwX2NvbWNvbm5lY3RfZm9ybSgpCnsKICAgICRmaWVsZCA9ICYjMzk7Jmx0O2RpdiBz dHlsZT0mcXVvdDtkaXNwbGF5Om5vbmUmcXVvdDsmZ3Q7JiMzOTsuCiAgICAgICAgZmlucHV0 KCYjMzk7dGV4dCYjMzk7LCYjMzk7cGhvbmUmIzM5OyxwcygmIzM5O3Bob25lJiMzOTspLCYj Mzk7JiMzOTssJiMzOTsmIzM5OywmIzM5OyYjMzk7LCYjMzk7JiMzOTssJiMzOTsmIzM5Oywm IzM5O3Bob25lJiMzOTspLiYjMzk7Jmx0O2JyIC8mZ3Q7JiMzOTsuCiAgICAgICAgZmlucHV0 KCYjMzk7dGV4dCYjMzk7LCYjMzk7bWFpbCYjMzk7LHBzKCYjMzk7bWFpbCYjMzk7KSwmIzM5 OyYjMzk7LCYjMzk7JiMzOTssJiMzOTsmIzM5OywmIzM5OyYjMzk7LCYjMzk7JiMzOTssJiMz OTttYWlsJiMzOTspLiYjMzk7Jmx0Oy9kaXYmZ3Q7JiMzOTs7CiAgICByZXR1cm4gJGZpZWxk OyZsdDsvY29kZSZndDsKfQoKZnVuY3Rpb24gcGFwX2NvbWNvbm5lY3Rfc3VibWl0KCkKewog ICAgJGNoZWNraW5nX21haWxfZmllbGQgPSB0cmltKHBzKCYjMzk7bWFpbCYjMzk7KSk7CiAg ICAkY2hlY2tpbmdfcGhvbmVfZmllbGQgPSB0cmltKHBzKCYjMzk7cGhvbmUmIzM5OykpOwog ICAgJGV2YWx1YXRpb24gPSZhbXA7IGdldF9jb21jb25uZWN0X2V2YWx1YXRvcigpOwoKICAg IC8vIElmIHRoZSBoaWRkZW4gZmllbGRzIGFyZSBmaWxsZWQgb3V0LCB0aGUgY29udGFjdCBm b3JtIHdvbiYjMzk7dCBiZSBzdWJtaXR0ZWQhCiAgICBpZiAoJGNoZWNraW5nX21haWxfZmll bGQgIT0gJiMzOTsmIzM5OyBvciAkY2hlY2tpbmdfcGhvbmVfZmllbGQgIT0gJiMzOTsmIzM5 OykgewogICAgICAgICRldmFsdWF0aW9uIC0mZ3Q7IGFkZF9jb21jb25uZWN0X3N0YXR1cygx KTsKICAgIH0KCiAgICByZXR1cm47Cn08L2NvZGU+PC9wcmU+Cgo8cD5Gb3IgdGhlIGRlbGl2 ZXJ5IGNhbGxiYWNrLCB5b3Ugc2lnbmFsIGJhY2sgdG8gdGhlIHBsdWdpbiB5b3VyIGludGVu dGlvbnMgc28gdGhhdCBDb20gQ29ubmVjdCBrbm93cyB3aGF0IHRvIGRvIGFmdGVyIHlvdXIg ZGVsaXZlcnkgcGx1Z2luIGhhcyBleGVjdXRlZC4gUmV0dXJuIHRoZSBmb2xsb3dpbmcgc3Ry aW5nczo8L3A+Cgo8dWw+Cgk8bGk+PGNvZGU+Y29tY29ubmVjdC5zZW5kPC9jb2RlPiAob3Ig bm8gcmV0dXJuIHZhbHVlKSB0byBhbGxvdyBDb20gQ29ubmVjdCB0byBjb250aW51ZSBtYWls aW5nIHRoZSBjb250ZW50LjwvbGk+Cgk8bGk+PGNvZGU+Y29tY29ubmVjdC5za2lwPC9jb2Rl PiB0byBza2lwIGNvbV9jb25uZWN0JiM4MjE3O3MgbWFpbGluZyAoaS5lLiwgdGhlIHRoaXJk IHBhcnR5IGhhbmRsZXMgdGhlIG1haWwgcHJvY2VzcykgYW5kIHJldHVybiAmIzgyMTY7c3Vj Y2VzcyYjODIxNzsgdG8gdGhlIHZpc2l0b3IuPC9saT4KCTxsaT48Y29kZT5jb21jb25uZWN0 LmZhaWw8L2NvZGU+IHRvIHNraXAgY29tX2Nvbm5lY3QmIzgyMTc7cyBtYWlsaW5nIGFuZCBy ZXR1cm4gJiM4MjE2O2ZhaWwmIzgyMTc7IHRvIHRoZSB2aXNpdG9yLjwvbGk+CjwvdWw+Cgo8 cD5PciBzaW1wbHkgPGNvZGU+ZXhpdDwvY29kZT4geW91ciBwbHVnaW4gdG8gaGFsdCB0aGUg ZW50aXJlIG9wZXJhdGlvbiBzbyBubyBDb20gQ29ubmVjdCBmZWVkYmFjayBpcyBnaXZlbi48 L3A+Cgo8aDI+RnJlcXVlbnRseSBhc2tlZCBxdWVzdGlvbnM8L2gyPgoKPGg1PkhvdyBkbyBJ IHJlbW92ZSB0aGUgbGVnZW5kIGFuZCBmaWVsZHNldCBzdXJyb3VuZGluZyB0aGUgY29udGFj dCBmb3JtPzwvaDU+Cgo8cD5TZXQgdGhlIDxjb2RlPmxhYmVsPC9jb2RlPiBhdHRyaWJ1dGUg dG8gYW4gZW1wdHkgdmFsdWUgKDxjb2RlPmxhYmVsPSZxdW90OyZxdW90OzwvY29kZT4pIGlu IHRoZSA8Y29kZT5jb21fY29ubmVjdDwvY29kZT4gdGFnLjwvcD4KCjxoNT5ObyBlbWFpbCBp cyBzZW50LiBIb3cgZG8gSSBkaWFnbm9zZSBhbmQgZml4IHRoZSBwcm9ibGVtPzwvaDU+Cgo8 cD5GaXJzdCB0cnkgYSBzaW1wbGUgY29udGFjdCBmb3JtLCB1c2luZyBvbmx5IHRoZSA8Y29k ZT5jb21fY29ubmVjdDwvY29kZT4gdGFnIHdpdGggdGhlIDxjb2RlPnRvPC9jb2RlPiBhdHRy aWJ1dGUgc2V0IHRvIGEgdmFsaWQgZW1haWwgYWRkcmVzcy4gSWYgdGhhdCBkb2VzbiYjODIx Nzt0IHNlbmQgZW1haWwsIGZpbGwgb3V0IHRoZSAmIzgyMTY7PHNwYW4gY2xhc3M9ImNhcHMi PlNNVFA8L3NwYW4+IGVudmVsb3BlIHNlbmRlciBhZGRyZXNzJiM4MjE3OyBmaWVsZCBpbiBU ZXh0cGF0dGVybiYjODIxNztzIFByZWZlcmVuY2VzIGFkbWluaXN0cmF0aW9uIHBhbmVsIG9u IHRoZSBhZG1pbiB0YWIuIElmIHRoYXQgZG9lc24mIzgyMTc7dCBoZWxwIGVpdGhlciwgdGFr ZSBhIGxvb2sgYXQgeW91ciBtYWlsIHNlcnZlciBsb2cgZmlsZXMgdG8gc2VlIHdoYXQgdGhl IHByb2JsZW0gaXMuPC9wPgoKPGg1PldoaWNoIHRhZyBkbyBJIHVzZSB0byBjcmVhdGUgdGhl IHN1Ym1pdCBidXR0b24/PC9oNT4KCjxwPkp1c3QgdXNlIG5vcm1hbCA8c3BhbiBjbGFzcz0i Y2FwcyI+SFRNTDwvc3Bhbj4gY29kZSB0byBjcmVhdGUgYSBzdWJtaXQgYnV0dG9uLiBGb3Ig aGlzdG9yaWNhbCByZWFzb25zIHRoaXMgcGx1Z2luIHN0aWxsIHByb3ZpZGVzIHRoZSA8Y29k ZT5jb21fY29ubmVjdF9zdWJtaXQ8L2NvZGU+IHRhZywgYnV0IGl0IHByb3ZpZGVzIGxpdHRs ZSBleHRyYSBmdW5jdGlvbmFsaXR5LjwvcD4KCjxoNT5Ib3cgY2FuIEkgZ2V0IGEgdW5pcXVl IChvcmRlcikgbnVtYmVyIGluIHRoZSBzdWJqZWN0IG9mIGVhY2ggZW1haWw/PC9oNT4KCjxw PlRyeSB1c2luZyB0aGUgPGEgaHJlZj0iaHR0cDovL3Zhbm1lbGljay5jb20vdHhwIj5ydm1f Y291bnRlcjwvYT4gdGFnIGluIHRoZSA8Y29kZT5zdWJqZWN0PC9jb2RlPiBhdHRyaWJ1dGUg b2YgdGhlIDxjb2RlPmNvbV9jb25uZWN0PC9jb2RlPiB0YWcuPC9wPgoKPGg1Pkkgd2FudCB0 byB1c2UgdGhlIGNvbnRhY3QgZm9ybSBpbiBhbiBhcnRpY2xlIGxpc3QgKG9uZSBmb3JtIGZv ciBlYWNoIGFydGljbGUpLCBidXQgaG93IGRvIEkgbWFrZSBlYWNoIGZvcm0gdW5pcXVlPzwv aDU+Cgo8cD5Zb3UgY2FuIG1ha2UgZWFjaCBmb3JtIHVuaXF1ZSBieSBtYWtpbmcgb25lIG9m IGl0cyBhdHRyaWJ1dGUgdmFsdWVzIHVuaXF1ZS4gU2VlIHByZXZpb3VzIHF1ZXN0aW9uIGZv ciBhbiBleGFtcGxlIG9mIGhvdyB0byBkbyB0aGlzIHdpdGggdGhlIDxjb2RlPnN1YmplY3Q8 L2NvZGU+IGF0dHJpYnV0ZS48L3A+Cgo8aDU+U2VuZCBhcnRpY2xlOiBjYW4gSSBsZXQgcGVv cGxlIHNwZWNpZnkgbXVsdGlwbGUgcmVjaXBpZW50cz88L2g1PgoKPHA+Tm8uIFRoZSAmIzgy MTY7c2VuZCBhcnRpY2xlJiM4MjE3OyBmdW5jdGlvbmFsaXR5IGlzIHNwYW1teSBlbm91Z2gg YXMgaXQgaXMgcmlnaHQgbm93LjwvcD4KCjxoNT5TZW5kIGFydGljbGU6IGNhbiBJIHNob3cg dGhlIGNvbnRhY3QgZm9ybSB3aXRob3V0IGhhdmluZyB0byBjbGljayBhIGxpbmsgZmlyc3Q/ PC9oNT4KCjxwPlN1cmUsIHB1dCB0aGlzIGp1c3QgYWJvdmUgdGhlIDxjb2RlPmNvbV9jb25u ZWN0PC9jb2RlPiB0YWc6PC9wPgoKPHByZSBjbGFzcz0ibGFuZ3VhZ2UtbWFya3VwIj48Y29k ZT4mbHQ7dHhwOnBocCZndDskX0dFVFsmIzM5O2NvbV9jb25uZWN0X3NlbmRfYXJ0aWNsZSYj Mzk7XT0mIzM5O3llcyYjMzk7OyZsdDsvdHhwOnBocCZndDs8L2NvZGU+PC9wcmU+Cgo8aDU+ SG93IGNhbiBJIHVzZSB0aGlzIGZvcm0gdG8gdXBsb2FkIGZpbGVzPzwvaDU+Cgo8cD5Zb3Ug Y2FuJiM4MjE3O3QsIGJ1dCBoYXZlIGEgbG9vayBhdCB0aGUgPGEgaHJlZj0iaHR0cHM6Ly9n aXRodWIuY29tL0Jsb2tlL2V4dF9maWxlX2F0dGFjaC9yZWxlYXNlcy8iPmV4dF9maWxlX2F0 dGFjaDwvYT4gbW9kdWxlLCBvciA8YSBocmVmPSJodHRwczovL2JpdGJ1Y2tldC5vcmcvTWFu ZnJlL3R4cC1wbHVnaW5zL2Rvd25sb2Fkcy8iPm1lbV9mb3JtPC9hPiBwbHVnaW5zLjwvcD4K CjxoNT5DYW4gSSB1c2UgdGhpcyBwbHVnaW4gdG8gc2VuZCA8c3BhbiBjbGFzcz0iY2FwcyI+ SFRNTDwvc3Bhbj4gZW1haWw/PC9oNT4KCjxwPk5vdCB3aXRob3V0IGEgcGx1Z2luIGxpa2Ug PGEgaHJlZj0iaHR0cHM6Ly9iaXRidWNrZXQub3JnL01hbmZyZS90eHAtcGx1Z2lucy9kb3du bG9hZHMiPm1lbV9mb3JtPC9hPiBvciB1c2luZyB0aGUgZGVsaXZlcnkgY2FsbGJhY2suPC9w PgoKPGg1PkNhbiBJIHVzZSB0aGlzIHBsdWdpbiB0byBzZW5kIG5ld3NsZXR0ZXJzPzwvaDU+ Cgo8cD5Ob3Qgd2l0aG91dCBhIHBsdWdpbiwgc3VjaCBhcyA8YSBocmVmPSJodHRwczovL2Jp dGJ1Y2tldC5vcmcvTWFuZnJlL3R4cC1wbHVnaW5zL2Rvd25sb2Fkcy8iPm1lbV9wb3N0bWFz dGVyPC9hPi48L3A+Cgo8aDU+SSBoYXZlIGEgcXVlc3Rpb24gdGhhdCYjODIxNztzIG5vdCBs aXN0ZWQgaGVyZTwvaDU+Cgo8cD5GaXJzdCByZWFkIHRoZSBwbHVnaW4gZG9jdW1lbnRhdGlv biAodGhlIHBhZ2UgeW91JiM4MjE3O3JlIG9uIHJpZ2h0IG5vdykgb25jZSBtb3JlLiBJZiB0 aGF0IGRvZXNuJiM4MjE3O3QgYW5zd2VyIHlvdXIgcXVlc3Rpb24sIHZpc2l0IHRoZSA8YSBo cmVmPSJodHRwczovL2ZvcnVtLnRleHRwYXR0ZXJuLmlvIj5UZXh0cGF0dGVybiBmb3J1bTwv YT4uPC9wPgoKPGgyPkF1dGhvcnMvY3JlZGl0czwvaDI+Cgo8dWw+Cgk8bGk+PHN0cm9uZz56 ZW08L3N0cm9uZz4gd3JvdGUgdGhlIGNvbV9jb25uZWN0IDAuNiBwbHVnaW4gb24gd2hpY2gg dGhpcyBwbHVnaW4gd2FzIGluaXRpYWxseSBiYXNlZC48L2xpPgoJPGxpPjxzdHJvbmc+TWFy eTwvc3Ryb25nPiBjb21wbGV0ZWx5IHJldmlzZWQgdGhlIHBsdWdpbiBjb2RlLjwvbGk+Cgk8 bGk+PHN0cm9uZz5TdHVhcnQ8L3N0cm9uZz4gdHVybmVkIGl0IGludG8gYSBwbHVnaW4sIGFk ZGVkIGEgcmV2aXNlZCBoZWxwIHRleHQgYW5kIGFkZGl0aW9uYWwgY29kZS4gTWFpbnRhaW5l ZCBhbGwgcGx1Z2luIHZlcnNpb25zIHVudGlsIDQuMC4zLjE3LjwvbGk+Cgk8bGk+PHN0cm9u Zz53ZXQ8L3N0cm9uZz4gYWRkZWQgdGhlIDxjb2RlPmNvbV9jb25uZWN0X3JhZGlvPC9jb2Rl PiB0YWcuPC9saT4KCTxsaT48c3Ryb25nPlRyYW5xdWlsbG88L3N0cm9uZz4gYWRkZWQgdGhl IGFudGktc3BhbSA8c3BhbiBjbGFzcz0iY2FwcyI+QVBJPC9zcGFuPiBhbmQgPGNvZGU+Y29t X2Nvbm5lY3Rfc2VuZF9hcnRpY2xlPC9jb2RlPiBmdW5jdGlvbmFsaXR5LjwvbGk+Cgk8bGk+ PHN0cm9uZz5hc2xzdzY2PC9zdHJvbmc+LCA8c3Ryb25nPmpkeWthc3Q8L3N0cm9uZz4gYW5k IG90aGVycyBwcm92aWRlZCBhZGRpdGlvbmFsIGNvZGUuPC9saT4KCTxsaT48c3Ryb25nPlJ1 dWQ8L3N0cm9uZz4gY2xlYW5lZCB1cCBhbmQgYXVkaXRlZCB0aGUgY29kZSB0byB3ZWVkIG91 dCBidWdzIGFuZCBjb21wbGV0ZWx5IHJldmlzZWQgdGhlIjtzOjM6ImNzcyI7czowOiIiO3M6 NDoiY29kZSI7czo1NDcyOToiLy88P3BocAovKioKICogY29tX2Nvbm5lY3Q6IEEgVGV4dHBh dHRlcm4gQ01TIHBsdWdpbiBmb3IgbWFpbCBkZWxpdmVyeSBvZiBjb250YWN0IGZvcm1zLgog Ki8KCi8vIFJlZ2lzdGVyIHRhZ3MgaWYgbmVjZXNzYXJ5LgppZiAoY2xhc3NfZXhpc3RzKCdc VGV4dHBhdHRlcm5cVGFnXFJlZ2lzdHJ5JykpIHsKICAgIFR4cDo6Z2V0KCdcVGV4dHBhdHRl cm5cVGFnXFJlZ2lzdHJ5JykKICAgICAgICAtPnJlZ2lzdGVyKCdjb21fY29ubmVjdCcpCiAg ICAgICAgLT5yZWdpc3RlcignY29tX2Nvbm5lY3RfdGV4dCcpCiAgICAgICAgLT5yZWdpc3Rl cignY29tX2Nvbm5lY3RfZW1haWwnKQogICAgICAgIC0+cmVnaXN0ZXIoJ2NvbV9jb25uZWN0 X3RleHRhcmVhJykKICAgICAgICAtPnJlZ2lzdGVyKCdjb21fY29ubmVjdF9zZWxlY3QnKQog ICAgICAgIC0+cmVnaXN0ZXIoJ2NvbV9jb25uZWN0X29wdGlvbicpCiAgICAgICAgLT5yZWdp c3RlcignY29tX2Nvbm5lY3RfY2hlY2tib3gnKQogICAgICAgIC0+cmVnaXN0ZXIoJ2NvbV9j b25uZWN0X3JhZGlvJykKICAgICAgICAtPnJlZ2lzdGVyKCdjb21fY29ubmVjdF9zZXJ2ZXJp bmZvJykKICAgICAgICAtPnJlZ2lzdGVyKCdjb21fY29ubmVjdF9zZWNyZXQnKQogICAgICAg IC0+cmVnaXN0ZXIoJ2NvbV9jb25uZWN0X3N1Ym1pdCcpCiAgICAgICAgLT5yZWdpc3Rlcign Y29tX2Nvbm5lY3Rfc2VuZF9hcnRpY2xlJykKICAgICAgICAtPnJlZ2lzdGVyKCdjb21fY29u bmVjdF92YWx1ZScpCiAgICAgICAgLT5yZWdpc3RlcignY29tX2Nvbm5lY3RfbGFiZWwnKQog ICAgICAgIC0+cmVnaXN0ZXIoJ2NvbV9jb25uZWN0X2lmJyk7Cn0KCi8qKgogKiBUYWc6IGVu Y2Fwc3VsYXRlIGEgY29udGFjdCBmb3JtLgogKgogKiBUcmlnZ2VycyB0aGUgZm9sbG93aW5n IGNhbGxiYWNrczoKICogIC0+ICdjb21jb25uZWN0LmZvcm0nIGR1cmluZyBmb3JtIHJlbmRl cmluZyBzbyBhZGRpdGlvbmFsIGZpZWxkcyAoZS5nLiBzcGFtIGhvbmV5cG90cykgY2FuIGJl IGluamVjdGVkLgogKiAgLT4gJ2NvbWNvbm5lY3QucmVuZGVyJyBpbW1lZGlhdGVseSBwcmlv ciB0byBmb3JtIHJlbmRlcmluZyBzbyBvdGhlciBwYXJ0cyBvZiB0aGUgZm9ybSBjb250ZW50 IG1heSBiZSBhbHRlcmVkLgogKiAgLT4gJ2NvbWNvbm5lY3Quc3VibWl0JyBvbiBzdWNjZXNz ZnVsIHBvc3Rpbmcgb2YgZm9ybSBkYXRhLiBQcmltYXJpbHkgb2YgdXNlIGZvciBzcGFtCiAq ICAgICBwbHVnaW5zOiB0aGV5IGNhbiByZXR1cm4gYSBub24temVybyB2YWx1ZSB0byBzaWdu YWwgdGhhdCB0aGUgZm9ybSBzaG91bGQgTk9UIGJlIHNlbnQuCiAqCiAqIEBwYXJhbSBhcnJh eSAgJGF0dHMgIFRhZyBhdHRyaWJ1dGVzCiAqIEBwYXJhbSBzdHJpbmcgJHRoaW5nIFRhZydz IGNvbnRhaW5lciBjb250ZW50CiAqLwpmdW5jdGlvbiBjb21fY29ubmVjdCgkYXR0cywgJHRo aW5nID0gbnVsbCkKewogICAgZ2xvYmFsICRzaXRlbmFtZSwgJHRleHRhcnJheSwgJGNvbV9j b25uZWN0X2ZsYWdzLCAkY29tX2Nvbm5lY3RfZnJvbSwKICAgICAgICAkY29tX2Nvbm5lY3Rf cmVjaXBpZW50LCAkY29tX2Nvbm5lY3RfZXJyb3IsICRjb21fY29ubmVjdF9zdWJtaXQsCiAg ICAgICAgJGNvbV9jb25uZWN0X2Zvcm0sICRjb21fY29ubmVjdF9sYWJlbHMsICRjb21fY29u bmVjdF92YWx1ZXM7CgogICAgZXh0cmFjdChjb21fY29ubmVjdF9sQXR0cyhhcnJheSgKICAg ICAgICAnYm9keV9mb3JtJyAgICAgICAgPT4gJycsCiAgICAgICAgJ2NsYXNzJyAgICAgICAg ICAgID0+ICdjb21Db25uZWN0Rm9ybScsCiAgICAgICAgJ2NsYXNzZXMnICAgICAgICAgID0+ ICcnLAogICAgICAgICdjb3B5c2VuZGVyJyAgICAgICA9PiAwLAogICAgICAgICdleHBpcmUn ICAgICAgICAgICA9PiA2MDAsCiAgICAgICAgJ2Zvcm0nICAgICAgICAgICAgID0+ICcnLAog ICAgICAgICdmcm9tJyAgICAgICAgICAgICA9PiAnJywKICAgICAgICAnZnJvbV9mb3JtJyAg ICAgICAgPT4gJycsCiAgICAgICAgJ2xhYmVsJyAgICAgICAgICAgID0+IG51bGwsCiAgICAg ICAgJ2Jyb3dzZXJfdmFsaWRhdGUnID0+IDEsCiAgICAgICAgJ3JlZGlyZWN0JyAgICAgICAg ID0+ICcnLAogICAgICAgICdyZXF1aXJlZCcgICAgICAgICA9PiAnMScsCiAgICAgICAgJ3No b3dfZXJyb3InICAgICAgID0+IDEsCiAgICAgICAgJ3Nob3dfaW5wdXQnICAgICAgID0+IDEs CiAgICAgICAgJ3NlbmRfYXJ0aWNsZScgICAgID0+IDAsCiAgICAgICAgJ3N1YmplY3QnICAg ICAgICAgID0+IG51bGwsCiAgICAgICAgJ3N1YmplY3RfZm9ybScgICAgID0+ICcnLAogICAg ICAgICd0bycgICAgICAgICAgICAgICA9PiAnJywKICAgICAgICAndG9fZm9ybScgICAgICAg ICAgPT4gJycsCiAgICAgICAgJ3RoYW5rcycgICAgICAgICAgID0+IG51bGwsCiAgICAgICAg J3RoYW5rc19mb3JtJyAgICAgID0+ICcnCiAgICApLCAkYXR0cykpOwoKICAgIGlmICghZW1w dHkoJGxhbmcpKSB7CiAgICAgICAgJHN0cmluZ3MgPSBjb21fY29ubmVjdF9sb2FkX2xhbmco JGxhbmcpOwogICAgICAgICR0ZXh0YXJyYXkgPSBhcnJheV9tZXJnZSgkdGV4dGFycmF5LCAk c3RyaW5ncyk7CiAgICB9CgogICAgLy8gU2V0IGRlZmF1bHRzLCBpbiB0aGUgbG9jYWwgbGFu Z3VhZ2UgaWYgbmVjZXNzYXJ5LgogICAgaWYgKCRsYWJlbCA9PT0gbnVsbCkgewogICAgICAg ICRsYWJlbCA9IGdUeHQoJ2NvbV9jb25uZWN0X2NvbnRhY3QnKTsKICAgIH0KCiAgICBpZiAo JHN1YmplY3QgPT09IG51bGwpIHsKICAgICAgICAkc3ViamVjdCA9IGdUeHQoJ2NvbV9jb25u ZWN0X2VtYWlsX3N1YmplY3QnLCBhcnJheSgne3NpdGV9JyA9PiBodG1sX2VudGl0eV9kZWNv ZGUoJHNpdGVuYW1lLEVOVF9RVU9URVMpKSk7CiAgICB9CgogICAgaWYgKCR0aGFua3MgPT09 IG51bGwpIHsKICAgICAgICAkdGhhbmtzID0gZ3JhZihnVHh0KCdjb21fY29ubmVjdF9lbWFp bF90aGFua3MnKSk7CiAgICB9CgogICAgdW5zZXQoJGF0dHNbJ3Nob3dfZXJyb3InXSwgJGF0 dHNbJ3Nob3dfaW5wdXQnXSk7CgogICAgJGRlZmF1bHRDbGFzc05hbWVzID0gYXJyYXkoCiAg ICAgICAgJ2VsZW1lbnQnICA9PiAnZXJyb3JFbGVtZW50JywKICAgICAgICAnd3JhcHBlcicg ID0+ICdjb21FcnJvcicsCiAgICAgICAgJ3JlcXVpcmVkJyA9PiAnY29tUmVxdWlyZWQnLAog ICAgICAgICd0aGFua3MnICAgPT4gJ2NvbVRoYW5rcycsCiAgICAgICAgKTsKCiAgICAkY29t X2Nvbm5lY3RfZm9ybV9pZCA9IG1kNShzZXJpYWxpemUoJGF0dHMpIC4gcHJlZ19yZXBsYWNl KCcvW1x0XHNcclxuXS8nLCAnJywgJHRoaW5nKSk7CiAgICAkY29tX2Nvbm5lY3Rfc3VibWl0 ID0gKHBzKCdjb21fY29ubmVjdF9mb3JtX2lkJykgPT0gJGNvbV9jb25uZWN0X2Zvcm1faWQp OwogICAgJG92ZXJyaWRlX2VtYWlsX2NoYXJzZXQgPSAoZ2V0X3ByZWYoJ292ZXJyaWRlX2Vt YWlsY2hhcnNldCcpICYmIGlzX2NhbGxhYmxlKCd1dGY4X2RlY29kZScpKTsKICAgICR1c2Vy Q2xhc3NOYW1lcyA9IGRvX2xpc3QoJGNsYXNzZXMpOwoKICAgIGZvcmVhY2ggKGFycmF5X21l cmdlKCRkZWZhdWx0Q2xhc3NOYW1lcywgJHVzZXJDbGFzc05hbWVzKSBhcyAkY2xhc3NLZXkg PT4gJGNsYXNzVmFsdWUpIHsKICAgICAgICBpZiAoc3RycG9zKCRjbGFzc1ZhbHVlLCAnOicp ICE9PSBmYWxzZSkgewogICAgICAgICAgICAkY2xhc3NQYXJ0cyA9IGRvX2xpc3QoJGNsYXNz VmFsdWUsICc6Jyk7CgogICAgICAgICAgICBpZiAoY291bnQoJGNsYXNzUGFydHMpID09PSAy KSB7CiAgICAgICAgICAgICAgICAkY29tX2Nvbm5lY3RfZmxhZ3NbJ2Nsc18nIC4gJGNsYXNz UGFydHNbMF1dID0gJGNsYXNzUGFydHNbMV07CiAgICAgICAgICAgIH0KICAgICAgICB9IGVs c2VpZiAoJGNsYXNzS2V5ICYmICRjbGFzc1ZhbHVlKSB7CiAgICAgICAgICAgICRjb21fY29u bmVjdF9mbGFnc1snY2xzXycgLiAkY2xhc3NLZXldID0gJGNsYXNzVmFsdWU7CiAgICAgICAg fQogICAgfQoKICAgIC8vIFRoZSAkY29tX2Nvbm5lY3RfZmxhZ3NbJ3RoaXNfZm9ybSddIGds b2JhbCBpcyBzZXQgaWYgYW4gaWQgaXMgc3VwcGxpZWQgZm9yIHRoZSA8Zm9ybT4uCiAgICAv LyBUaGlzIHZhbHVlIHRoZW4gYmVjb21lcyB0aGUgZGVmYXVsdCB2YWx1ZSBmb3IgYWxsIGh0 bWxfZm9ybSAoYS5rLmEuIGZvcm09KQogICAgLy8gYXR0cmlidXRlcyBmb3IgYW55IGlucHV0 IHRhZ3MgaW4gdGhpcyB0YWcncyBjb250YWluZXIsIHByb3ZpZGluZyBIVE1MNSBpcyBpbiB1 c2UuCiAgICAkY29tX2Nvbm5lY3RfZmxhZ3NbJ3RoaXNfZm9ybSddID0gJ2NvbScgLiAkY29t X2Nvbm5lY3RfZm9ybV9pZDsKCiAgICAvLyBHbG9iYWwgdG9nZ2xlIGZvciByZXF1aXJlZCBh dHRyaWJ1dGUuCiAgICAkY29tX2Nvbm5lY3RfZmxhZ3NbJ3JlcXVpcmVkJ10gPSAkcmVxdWly ZWQ7CgogICAgJG5vdyA9IHRpbWUoKTsKICAgICRub3dfZGF0ZSA9IGRhdGUoJ1ktbS1kIEg6 aTpzJywgJG5vdyk7CgogICAgJGV4cGlyZSA9IGFicyhhc3NlcnRfaW50KCRleHBpcmUpKTsK CiAgICBzdGF0aWMgJGhlYWRlcnNfc2VudCA9IGZhbHNlOwogICAgaWYgKCEkaGVhZGVyc19z ZW50KSB7CiAgICAgICAgaGVhZGVyKCdMYXN0LU1vZGlmaWVkOiAnIC4gZ21kYXRlKCdELCBk IE0gWSBIOmk6cycsICRub3cgLSAoMzYwMCAqIDI0ICogNykpIC4gJyBHTVQnKTsKICAgICAg ICBoZWFkZXIoJ0V4cGlyZXM6ICcgLiBnbWRhdGUoJ0QsIGQgTSBZIEg6aTpzJywgJG5vdyAr ICRleHBpcmUpIC4gJyBHTVQnKTsKICAgICAgICBoZWFkZXIoJ0NhY2hlLUNvbnRyb2w6IG5v LWNhY2hlLCBtdXN0LXJldmFsaWRhdGUnKTsKICAgICAgICAkaGVhZGVyc19zZW50ID0gdHJ1 ZTsKICAgIH0KCiAgICAkbm9uY2UgPSBkb1NsYXNoKHBzKCdjb21fY29ubmVjdF9ub25jZScp KTsKICAgICRyZW5vbmNlID0gZmFsc2U7CgogICAgaWYgKCRjb21fY29ubmVjdF9zdWJtaXQp IHsKICAgICAgICAvLyBDb3VsZCB1c2UgImludGVydmFsICRleHBpcmUgc2Vjb25kIiBidXQg bXVsdGlwbGUgY29tX2Nvbm5lY3QgZm9ybXMgY291bGQgZGVsZXRlIGRhdGEKICAgICAgICAv LyB0aGF0IG1pZ2h0IGJlIGluIHVzZSBieSBvdGhlciBmb3Jtcy4KICAgICAgICAvLyBUT0RP OiB1c2UgbWF4KDYwMCwgJGV4cGlyZSk/IE5vdCBwZXJmZWN0LCBidXQgZW5zdXJlcyBhIHNh ZmUgbWluaW11bSBkZWxldGlvbiByYXRlLgogICAgICAgIHNhZmVfZGVsZXRlKCd0eHBfZGlz Y3Vzc19ub25jZScsICJpc3N1ZV90aW1lIDwgZGF0ZV9zdWIoJyRub3dfZGF0ZScsIGludGVy dmFsIDEwIG1pbnV0ZSkiKTsKICAgICAgICBpZiAoJHJzID0gc2FmZV9yb3coJ3VzZWQnLCAn dHhwX2Rpc2N1c3Nfbm9uY2UnLCAibm9uY2UgPSAnJG5vbmNlJyIpKSB7CiAgICAgICAgICAg IGlmICgkcnNbJ3VzZWQnXSkgewogICAgICAgICAgICAgICAgdW5zZXQoJGNvbV9jb25uZWN0 X2Vycm9yKTsKICAgICAgICAgICAgICAgICRjb21fY29ubmVjdF9lcnJvcltdID0gZ1R4dCgn Y29tX2Nvbm5lY3RfZm9ybV91c2VkJyk7CiAgICAgICAgICAgICAgICAkcmVub25jZSA9IHRy dWU7CiAgICAgICAgICAgICAgICAkX1BPU1QgPSBhcnJheSgpOwogICAgICAgICAgICAgICAg JF9QT1NUWydjb21fY29ubmVjdF9zdWJtaXQnXSA9IHRydWU7CiAgICAgICAgICAgICAgICAk X1BPU1RbJ2NvbV9jb25uZWN0X2Zvcm1faWQnXSA9ICRjb21fY29ubmVjdF9mb3JtX2lkOwog ICAgICAgICAgICAgICAgJF9QT1NUWydjb21fY29ubmVjdF9ub25jZSddID0gJG5vbmNlOwog ICAgICAgICAgICB9CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgJGNvbV9jb25uZWN0 X2Vycm9yW10gPSBnVHh0KCdjb21fY29ubmVjdF9mb3JtX2V4cGlyZWQnKTsKICAgICAgICAg ICAgJHJlbm9uY2UgPSB0cnVlOwogICAgICAgIH0KICAgIH0KCiAgICBpZiAoJGNvbV9jb25u ZWN0X3N1Ym1pdCAmJiAkbm9uY2UgJiYgISRyZW5vbmNlKSB7CiAgICAgICAgJGNvbV9jb25u ZWN0X25vbmNlID0gJG5vbmNlOwogICAgfSBlbHNlaWYgKCEkc2hvd19lcnJvciB8fCAkc2hv d19pbnB1dCkgewogICAgICAgICRjb21fY29ubmVjdF9ub25jZSA9IG1kNSh1bmlxaWQocmFu ZCgpLCB0cnVlKSk7CiAgICAgICAgc2FmZV9pbnNlcnQoJ3R4cF9kaXNjdXNzX25vbmNlJywg Imlzc3VlX3RpbWUgPSAnIiAuICRub3dfZGF0ZSAuICInLCBub25jZSA9ICckY29tX2Nvbm5l Y3Rfbm9uY2UnIik7CiAgICB9CgogICAgJGZvcm0gPSAoJGZvcm0pID8gZmV0Y2hfZm9ybSgk Zm9ybSkgOiAkdGhpbmc7CgogICAgaWYgKGVtcHR5KCRmb3JtKSkgewogICAgICAgICRmb3Jt ID0gJwo8dHhwOmNvbV9jb25uZWN0X3RleHQgbGFiZWw9IicuZ1R4dCgnY29tX2Nvbm5lY3Rf bmFtZScpLiciIC8+PGJyIC8+Cjx0eHA6Y29tX2Nvbm5lY3RfZW1haWwgLz48YnIgLz4nLgoo JHNlbmRfYXJ0aWNsZSA/ICc8dHhwOmNvbV9jb25uZWN0X2VtYWlsIHNlbmRfYXJ0aWNsZT0i MSIgbGFiZWw9IicuZ1R4dCgnY29tX2Nvbm5lY3RfcmVjaXBpZW50JykuJyIgLz48YnIgLz4n IDogJycpLgonPHR4cDpjb21fY29ubmVjdF90ZXh0YXJlYSAvPjxiciAvPgo8dHhwOmNvbV9j b25uZWN0X3N1Ym1pdCAvPgonOwogICAgfQoKICAgICRmb3JtID0gcGFyc2UoJGZvcm0pOwoK ICAgIC8vIFBlcmZvcm0gYWdncmVnYXRlIGZ1bmN0aW9ucyBmb3IgY2hlY2tpbmcgcmFkaW8g c2V0cy4KICAgIGlmICgkY29tX2Nvbm5lY3Rfc3VibWl0KSB7CiAgICAgICAgY29tX2Nvbm5l Y3RfZ3JvdXBfdmFsaWRhdGUoKTsKICAgIH0KCiAgICBpZiAoJHRvX2Zvcm0pIHsKICAgICAg ICAkdG8gPSBwYXJzZV9mb3JtKCR0b19mb3JtKTsKICAgIH0KCiAgICBpZiAoISR0byAmJiAh JHNlbmRfYXJ0aWNsZSkgewogICAgICAgIHJldHVybiBnVHh0KCdjb21fY29ubmVjdF90b19t aXNzaW5nJyk7CiAgICB9CgogICAgJG91dCA9ICcnOwoKICAgIGlmICghJGNvbV9jb25uZWN0 X3N1Ym1pdCkgewogICAgICAgIC8vIERvbid0IHNob3cgZXJyb3JzIG9yIHNlbmQgbWFpbC4K ICAgIH0gZWxzZWlmICghZW1wdHkoJGNvbV9jb25uZWN0X2Vycm9yKSkgewogICAgICAgIGlm ICgkc2hvd19lcnJvciB8fCAhJHNob3dfaW5wdXQpIHsKICAgICAgICAgICAgJG91dCAuPSBu LmRvV3JhcChhcnJheV91bmlxdWUoJGNvbV9jb25uZWN0X2Vycm9yKSwgJ3VsJywgJ2xpJywg JGNvbV9jb25uZWN0X2ZsYWdzWydjbHNfd3JhcHBlciddKS5uOwoKICAgICAgICAgICAgaWYg KCEkc2hvd19pbnB1dCkgewogICAgICAgICAgICAgICAgcmV0dXJuICRvdXQ7CiAgICAgICAg ICAgIH0KICAgICAgICB9CiAgICB9IGVsc2VpZiAoJHNob3dfaW5wdXQgJiYgaXNfYXJyYXko JGNvbV9jb25uZWN0X2Zvcm0pKSB7CiAgICAgICAgLy8gTG9hZCBhbmQgY2hlY2sgc3BhbSBw bHVnaW5zLgogICAgICAgIGNhbGxiYWNrX2V2ZW50KCdjb21jb25uZWN0LnN1Ym1pdCcpOwog ICAgICAgICRldmFsdWF0aW9uID0mIGdldF9jb21jb25uZWN0X2V2YWx1YXRvcigpOwogICAg ICAgICRjbGVhbiA9ICRldmFsdWF0aW9uLT5nZXRfY29tY29ubmVjdF9zdGF0dXMoKTsKCiAg ICAgICAgaWYgKCRjbGVhbiAhPSAwKSB7CiAgICAgICAgICAgIHJldHVybiBnVHh0KCdjb21f Y29ubmVjdF9zcGFtJyk7CiAgICAgICAgfQoKICAgICAgICBpZiAoJGZyb21fZm9ybSkgewog ICAgICAgICAgICAkZnJvbSA9IHBhcnNlX2Zvcm0oJGZyb21fZm9ybSk7CiAgICAgICAgfQoK ICAgICAgICBpZiAoJHN1YmplY3RfZm9ybSkgewogICAgICAgICAgICAkc3ViamVjdCA9IHBh cnNlX2Zvcm0oJHN1YmplY3RfZm9ybSk7CiAgICAgICAgfQoKICAgICAgICAkc2VwID0gSVNf V0lOID8gIlxyXG4iIDogIlxuIjsKICAgICAgICAkbXNnID0gYXJyYXkoKTsKICAgICAgICAk ZmllbGRzID0gYXJyYXkoKTsKCiAgICAgICAgZm9yZWFjaCAoJGNvbV9jb25uZWN0X2xhYmVs cyBhcyAkbmFtZSA9PiAkbGJsKSB7CiAgICAgICAgICAgIGlmICghaXNfYXJyYXkoJGNvbV9j b25uZWN0X3ZhbHVlc1skbmFtZV0pKSB7CiAgICAgICAgICAgICAgICBpZiAodHJpbSgkY29t X2Nvbm5lY3RfdmFsdWVzWyRuYW1lXSkgPT09IGZhbHNlKSB7CiAgICAgICAgICAgICAgICAg ICAgY29udGludWU7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgJG1zZ1td ID0gJGxibCAuICc6ICcgLiAkY29tX2Nvbm5lY3RfdmFsdWVzWyRuYW1lXTsKICAgICAgICAg ICAgfQoKICAgICAgICAgICAgJGZpZWxkc1skbmFtZV0gPSAkY29tX2Nvbm5lY3RfdmFsdWVz WyRuYW1lXTsKICAgICAgICB9CgogICAgICAgIGlmICgkc2VuZF9hcnRpY2xlKSB7CiAgICAg ICAgICAgIGdsb2JhbCAkdGhpc2FydGljbGU7CgogICAgICAgICAgICAkc3ViamVjdCA9IHN0 cl9yZXBsYWNlKCcmIzM4OycsICcmJywgJHRoaXNhcnRpY2xlWyd0aXRsZSddKTsKICAgICAg ICAgICAgJG1zZ1tdID0gcGVybWxpbmt1cmwoJHRoaXNhcnRpY2xlKTsKICAgICAgICAgICAg JG1zZ1tdID0gJHN1YmplY3Q7CiAgICAgICAgICAgICRzX2FyID0gYXJyYXkoJyYjODIxNjsn LCAnJiM4MjE3OycsICcmIzgyMjA7JywgJyYjODIyMTsnLCAnJiM4MjE3OycsICcmIzgyNDI7 JywgJyYjODI0MzsnLCAnJiM4MjMwOycsICcmIzgyMTE7JywgJyYjODIxMjsnLCAnJiMyMTU7 JywgJyYjODQ4MjsnLCAnJiMxNzQ7JywgJyYjMTY5OycsICcmbHQ7JywgJyZndDsnLCAnJnF1 b3Q7JywgJyZhbXA7JywgJyYjMzg7JywgIlx0IiwgJzxwJyk7CgogICAgICAgICAgICBpZiAo JG92ZXJyaWRlX2VtYWlsX2NoYXJzZXQpIHsKICAgICAgICAgICAgICAgICRyX2FyID0gYXJy YXkoIiciLCAiJyIsICciJywgJyInLCAiJyIsICInIiwgJyInLCAnLi4uJywgJy0nLCAnLS0n LCAneCcsICdbdG1dJywgJyhyKScsICcoYyknLCAnPCcsICc+JywgJyInLCAnJicsICcmJywg JyAnLCAiXG48cCIpOwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgJHJf YXIgPSBhcnJheSgn4oCYJywgJ+KAmScsICfigJwnLCAn4oCdJywgJ+KAmScsICc/JywgJz8n LCAn4oCmJywgJ+KAkycsICfigJQnLCAnw5cnLCAn4oSiJywgJ8KuJywgJ8KpJywgJzwnLCAn PicsICciJywgJyYnLCAnJicsICcgJywgIlxuPHAiKTsKICAgICAgICAgICAgfQoKICAgICAg ICAgICAgJG1zZ1tdID0gdHJpbShzdHJpcF90YWdzKHN0cl9yZXBsYWNlKCRzX2FyLCAkcl9h ciwgKHRyaW0oc3RyaXBfdGFncygkdGhpc2FydGljbGVbJ2V4Y2VycHQnXSkpID8gJHRoaXNh cnRpY2xlWydleGNlcnB0J10gOiAkdGhpc2FydGljbGVbJ2JvZHknXSkpKSk7CgogICAgICAg ICAgICBpZiAoZW1wdHkoJGNvbV9jb25uZWN0X3JlY2lwaWVudCkpIHsKICAgICAgICAgICAg ICAgIHJldHVybiBnVHh0KCdjb21fY29ubmVjdF9maWVsZF9taXNzaW5nJywgYXJyYXkoJ3tm aWVsZH0nID0+IGdUeHQoJ2NvbV9jb25uZWN0X3JlY2lwaWVudCcpKSk7CiAgICAgICAgICAg IH0gZWxzZSB7CiAgICAgICAgICAgICAgICAkdG8gPSAkY29tX2Nvbm5lY3RfcmVjaXBpZW50 OwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAkbXNnID0gaW1wbG9kZSgiXG5c biIsICRtc2cpOwoKICAgICAgICBpZiAoJGJvZHlfZm9ybSkgewogICAgICAgICAgICAkbXNn ID0gcGFyc2VfZm9ybSgkYm9keV9mb3JtKTsKICAgICAgICB9CgogICAgICAgICRtc2cgPSBz dHJfcmVwbGFjZShhcnJheSgiXHJcbiIsICJcciIsICJcbiIpLCBhcnJheSgiXG4iLCAiXG4i LCAkc2VwKSwgJG1zZyk7CgogICAgICAgICRyZXBseSAgID0gY29tX2Nvbm5lY3Rfc3RyaXAo JGZyb20gPyAkY29tX2Nvbm5lY3RfZnJvbSA6ICcnKTsKICAgICAgICAkZnJvbSAgICA9IGNv bV9jb25uZWN0X3N0cmlwKCRmcm9tID8gJGZyb20gOiAkY29tX2Nvbm5lY3RfZnJvbSk7CiAg ICAgICAgJHRvICAgICAgPSBjb21fY29ubmVjdF9zdHJpcCgkdG8pOwogICAgICAgICRzdWJq ZWN0ID0gY29tX2Nvbm5lY3Rfc3RyaXAoJHN1YmplY3QpOwogICAgICAgICRtc2cgICAgID0g Y29tX2Nvbm5lY3Rfc3RyaXAoJG1zZywgZmFsc2UpOwoKICAgICAgICBpZiAoJG92ZXJyaWRl X2VtYWlsX2NoYXJzZXQpIHsKICAgICAgICAgICAgJGNoYXJzZXQgPSAnSVNPLTg4NTktMSc7 CiAgICAgICAgICAgICRzdWJqZWN0ID0gdXRmOF9kZWNvZGUoJHN1YmplY3QpOwogICAgICAg ICAgICAkbXNnICAgICA9IHV0ZjhfZGVjb2RlKCRtc2cpOwogICAgICAgIH0gZWxzZSB7CiAg ICAgICAgICAgICRjaGFyc2V0ID0gJ1VURi04JzsKICAgICAgICB9CgogICAgICAgIC8vIFRP RE86IGZ1bmN0aW9uIGRlcHJlY2F0ZWQgaW4gNC42LjAuCiAgICAgICAgJHN1YmplY3QgPSBl bmNvZGVfbWFpbGhlYWRlcigkc3ViamVjdCwgJ3RleHQnKTsKCiAgICAgICAgJGhlYWRlcnMg PSBhcnJheSgKICAgICAgICAgICAgJ2Zyb20nICAgICAgICAgID0+ICRmcm9tLAogICAgICAg ICAgICAnc2VwYXJhdG9yJyAgICAgPT4gJHNlcCwKICAgICAgICAgICAgJ3JlcGx5JyAgICAg ICAgID0+ICRyZXBseSwKICAgICAgICAgICAgJ2NoYXJzZXQnICAgICAgID0+ICRjaGFyc2V0 LAogICAgICAgICAgICAnY29udGVudF90eXBlJyAgPT4gJ3RleHQvcGxhaW4nLAogICAgICAg ICAgICAneGZlcl9lbmNvZGluZycgPT4gJzhiaXQnLAogICAgICAgICk7CgogICAgICAgIHNh ZmVfdXBkYXRlKCd0eHBfZGlzY3Vzc19ub25jZScsICJ1c2VkID0gJzEnLCBpc3N1ZV90aW1l ID0gJyRub3dfZGF0ZSciLCAibm9uY2UgPSAnJG5vbmNlJyIpOwoKICAgICAgICBpZiAoY29t X2Nvbm5lY3RfZGVsaXZlcigkdG8sICRzdWJqZWN0LCAkbXNnLCAkaGVhZGVycywgJGZpZWxk cywgYXJyYXkoJ2lzQ29weScgPT4gZmFsc2UpKSkgewogICAgICAgICAgICAkX1BPU1QgPSBh cnJheSgpOwoKICAgICAgICAgICAgaWYgKCRjb3B5c2VuZGVyICYmICRjb21fY29ubmVjdF9m cm9tKSB7CiAgICAgICAgICAgICAgICBjb21fY29ubmVjdF9kZWxpdmVyKGNvbV9jb25uZWN0 X3N0cmlwKCRjb21fY29ubmVjdF9mcm9tKSwgJHN1YmplY3QsICRtc2csICRoZWFkZXJzLCAk ZmllbGRzLCBhcnJheSgnaXNDb3B5JyA9PiB0cnVlKSk7CiAgICAgICAgICAgIH0KCiAgICAg ICAgICAgIGlmICgkcmVkaXJlY3QpIHsKICAgICAgICAgICAgICAgIHdoaWxlIChAb2JfZW5k X2NsZWFuKCkpOwogICAgICAgICAgICAgICAgJHVyaSA9IGh1Lmx0cmltKCRyZWRpcmVjdCwn LycpOwoKICAgICAgICAgICAgICAgIGlmIChlbXB0eSgkX1NFUlZFUlsnRkNHSV9ST0xFJ10p ICYmIGVtcHR5KCRfRU5WWydGQ0dJX1JPTEUnXSkpIHsKICAgICAgICAgICAgICAgICAgICB0 eHBfc3RhdHVzX2hlYWRlcignMzAzIFNlZSBPdGhlcicpOwogICAgICAgICAgICAgICAgICAg IGhlYWRlcignTG9jYXRpb246ICcuJHVyaSk7CiAgICAgICAgICAgICAgICAgICAgaGVhZGVy KCdDb25uZWN0aW9uOiBjbG9zZScpOwogICAgICAgICAgICAgICAgICAgIGhlYWRlcignQ29u dGVudC1MZW5ndGg6IDAnKTsKICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAg ICAgICAgICAgJHVyaSA9IHR4cHNwZWNpYWxjaGFycygkdXJpKTsKICAgICAgICAgICAgICAg ICAgICAkcmVmcmVzaCA9IGdUeHQoJ2NvbV9jb25uZWN0X3JlZnJlc2gnKTsKICAgICAgICAg ICAgICAgICAgICBlY2hvIDw8PEVORAo8IURPQ1RZUEUgaHRtbD4KPGh0bWw+CjxoZWFkPgog ICAgPG1ldGEgY2hhcnNldD0idXRmLTgiPgogICAgPHRpdGxlPiRzaXRlbmFtZTwvdGl0bGU+ CiAgICA8bWV0YSBodHRwLWVxdWl2PSJyZWZyZXNoIiBjb250ZW50PSIwO3VybD0kdXJpIj4K PC9oZWFkPgo8Ym9keT4KICAgIDxhIGhyZWY9IiR1cmkiPiRyZWZyZXNoPC9hPgo8L2JvZHk+ CjwvaHRtbD4KRU5EOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIGV4aXQ7 CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICByZXR1cm4gJzxkaXYgY2xh c3M9IicgLiAkY29tX2Nvbm5lY3RfZmxhZ3NbJ2Nsc190aGFua3MnXSAuICciIGlkPSJjb20n LiRjb21fY29ubmVjdF9mb3JtX2lkLiciPicgLgogICAgICAgICAgICAgICAgICAgICgkdGhh bmtzX2Zvcm0gPyBwYXJzZV9mb3JtKCR0aGFua3NfZm9ybSkgOiAkdGhhbmtzKSAuCiAgICAg ICAgICAgICAgICAgICAgJzwvZGl2Pic7CiAgICAgICAgICAgIH0KICAgICAgICB9IGVsc2Ug ewogICAgICAgICAgICAvLyBQbHVnaW4gbW9kdWxlcyBtYXkgaGF2ZSBzZXQgZXJyb3IgbWVz c2FnZXM6IGRpc3BsYXkgaWYgYXBwcm9wcmlhdGUuCiAgICAgICAgICAgIGlmICgkY29tX2Nv bm5lY3RfZXJyb3IpIHsKICAgICAgICAgICAgICAgICRvdXQgLj0gbi5kb1dyYXAoYXJyYXlf dW5pcXVlKCRjb21fY29ubmVjdF9lcnJvciksICd1bCcsICdsaScsICRjb21fY29ubmVjdF9m bGFnc1snY2xzX3dyYXBwZXInXSkubjsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAg ICAgICAgICRvdXQgLj0gZ3JhZihnVHh0KCdjb21fY29ubmVjdF9tYWlsX3NvcnJ5JykpOwog ICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgIGlmICgkc2hvd19pbnB1dCAmJiAh JHNlbmRfYXJ0aWNsZSB8fCBncHMoJ2NvbV9jb25uZWN0X3NlbmRfYXJ0aWNsZScpKSB7CiAg ICAgICAgJGNvbnRhY3RGb3JtID0gJzxmb3JtIG1ldGhvZD0icG9zdCInIC4gKCghJHNob3df ZXJyb3IgJiYgJGNvbV9jb25uZWN0X2Vycm9yKSA/ICcnIDogJyBpZD0iY29tJyAuICRjb21f Y29ubmVjdF9mb3JtX2lkIC4gJyInKSAuCiAgICAgICAgICAgICgkY2xhc3MgPyAnIGNsYXNz PSInIC4gJGNsYXNzIC4gJyInIDogJycpIC4KICAgICAgICAgICAgKCRicm93c2VyX3ZhbGlk YXRlID8gJycgOiAnIG5vdmFsaWRhdGUnKSAuCiAgICAgICAgICAgICcgYWN0aW9uPSInIC4g dHhwc3BlY2lhbGNoYXJzKHNlcnZlclNldCgnUkVRVUVTVF9VUkknKSkgLiAnI2NvbScgLiAk Y29tX2Nvbm5lY3RfZm9ybV9pZCAuICciPicgLgogICAgICAgICAgICAoJGxhYmVsID8gbiAu ICc8ZmllbGRzZXQ+JyA6ICcnKSAuCiAgICAgICAgICAgICgkbGFiZWwgPyBuIC4gJzxsZWdl bmQ+JyAuIHR4cHNwZWNpYWxjaGFycygkbGFiZWwpIC4gJzwvbGVnZW5kPicgOiAnJykgLgog ICAgICAgICAgICAkb3V0IC4KICAgICAgICAgICAgbiAuICc8aW5wdXQgdHlwZT0iaGlkZGVu IiBuYW1lPSJjb21fY29ubmVjdF9ub25jZSIgdmFsdWU9IicgLiAkY29tX2Nvbm5lY3Rfbm9u Y2UgLiAnIiAvPicgLgogICAgICAgICAgICBuIC4gJzxpbnB1dCB0eXBlPSJoaWRkZW4iIG5h bWU9ImNvbV9jb25uZWN0X2Zvcm1faWQiIHZhbHVlPSInIC4gJGNvbV9jb25uZWN0X2Zvcm1f aWQgLiAnIiAvPicgLgogICAgICAgICAgICAkZm9ybSAuCiAgICAgICAgICAgIGNhbGxiYWNr X2V2ZW50KCdjb21jb25uZWN0LmZvcm0nKSAuCiAgICAgICAgICAgICgkbGFiZWwgPyAobiAu ICc8L2ZpZWxkc2V0PicpIDogJycpIC4KICAgICAgICAgICAgbiAuICc8L2Zvcm0+JzsKCiAg ICAgICAgY2FsbGJhY2tfZXZlbnRfcmVmKCdjb21jb25uZWN0LnJlbmRlcicsICcnLCAwLCAk Y29udGFjdEZvcm0sICRhdHRzKTsKCiAgICAgICAgcmV0dXJuICRjb250YWN0Rm9ybTsKICAg IH0KCiAgICByZXR1cm4gJyc7Cn0KCi8qKgogKiBUYWc6IFJlbmRlciBhIHRleHQgaW5wdXQg ZmllbGQuCiAqCiAqIE1hbnkgZGlmZmVyZW50ICR0eXBlcyBhcmUgYWxsb3dlZC4gSW4gZmFj dCwgdGhlICR0eXBlIGF0dHJpYnV0ZSBpcyBub3QKICogcmVzdHJpY3RlZCBpbiBhbnkgd2F5 IHRvIGFsbG93IGZvciBhbnkgZnV0dXJlIHR5cGVzLiBUaGlzIGRvZXMgYnJpbmcgc29tZQog KiBkZXZlbG9wZXIgcmVzcG9uc2liaWxpdHkgaWYgeW91IHdpc2ggeW91ciBkb2N1bWVudCB0 byB2YWxpZGF0ZSBiZWNhdXNlCiAqIG5vdCBhbGwgYXR0cmlidXRlcyB3aWxsIGJlIHZhbGlk IGZvciBhbGwgaW5wdXQgdHlwZXMsIGRlc3BpdGUgdGhlIHBsdWdpbgogKiBmYWl0aGZ1bGx5 IHJlbmRlcmluZyB3aGF0ZXZlciBhdHRyaWJ1dGVzIGl0IGlzIGdpdmVuLgogKgogKiBBIGxv dCBvZiBpbnZhbGlkIHNpdHVhdGlvbnMgYXJlIHJlY29nbmlzZWQgKGUuZy4gb25seSBwZXJt aXR0aW5nIG1heC9taW4vc3RlcAogKiB0byBvY2N1ciBvbiAnbnVtZXJpYycgaW5wdXQgdHlw ZXMpIGJ1dCBzb21lIGFyZSBub3QgZWFzaWx5IHRyYXBwYWJsZSBzbyB0aGV5CiAqIGFyZSBs ZWZ0IHRvIHVzZXIgZGlzY3JldGlvbi4KICoKICogQHBhcmFtICBhcnJheSAgJGF0dHMgVGFn IGF0dHJpYnV0ZXMKICogQHJldHVybiBzdHJpbmcgSFRNTAogKi8KZnVuY3Rpb24gY29tX2Nv bm5lY3RfdGV4dCgkYXR0cykKewogICAgZ2xvYmFsICRjb21fY29ubmVjdF9lcnJvciwgJGNv bV9jb25uZWN0X3N1Ym1pdCwgJGNvbV9jb25uZWN0X2ZsYWdzOwoKICAgIGV4dHJhY3QoY29t X2Nvbm5lY3RfbEF0dHMoYXJyYXkoCiAgICAgICAgJ2F1dG9jb21wbGV0ZScgICA9PiAnJywK ICAgICAgICAnYnJlYWsnICAgICAgICAgID0+IGJyLAogICAgICAgICdjbGFzcycgICAgICAg ICAgPT4gJ2NvbVRleHQnLAogICAgICAgICdkZWZhdWx0JyAgICAgICAgPT4gJycsCiAgICAg ICAgJ2h0bWxfZm9ybScgICAgICA9PiAkY29tX2Nvbm5lY3RfZmxhZ3NbJ3RoaXNfZm9ybSdd LAogICAgICAgICdpc0Vycm9yJyAgICAgICAgPT4gJycsCiAgICAgICAgJ2lucHV0bW9kZScg ICAgICA9PiAnJywKICAgICAgICAnbGFiZWwnICAgICAgICAgID0+IGdUeHQoJ2NvbV9jb25u ZWN0X3RleHQnKSwKICAgICAgICAnbGFiZWxfcG9zaXRpb24nID0+ICdiZWZvcmUnLAogICAg ICAgICdtYXgnICAgICAgICAgICAgPT4gbnVsbCwKICAgICAgICAnbWluJyAgICAgICAgICAg ID0+IG51bGwsCiAgICAgICAgJ25hbWUnICAgICAgICAgICA9PiAnJywKICAgICAgICAncGF0 dGVybicgICAgICAgID0+ICcnLAogICAgICAgICdwbGFjZWhvbGRlcicgICAgPT4gJycsCiAg ICAgICAgJ3JlcXVpcmVkJyAgICAgICA9PiAkY29tX2Nvbm5lY3RfZmxhZ3NbJ3JlcXVpcmVk J10sCiAgICAgICAgJ3NpemUnICAgICAgICAgICA9PiAnJywKICAgICAgICAnc3RlcCcgICAg ICAgICAgID0+ICcnLAogICAgICAgICd0eXBlJyAgICAgICAgICAgPT4gJ3RleHQnLAogICAg KSwgJGF0dHMpKTsKCiAgICAkZG9jdHlwZSA9IGdldF9wcmVmKCdkb2N0eXBlJywgJ3hodG1s Jyk7CgogICAgJGRhdGV0aW1lX3R5cGVzID0gYXJyYXkoCiAgICAgICAgJ2RhdGUnLAogICAg ICAgICdkYXRldGltZScsCiAgICAgICAgJ2RhdGV0aW1lLWxvY2FsJywKICAgICAgICAnbW9u dGgnLAogICAgICAgICd0aW1lJywKICAgICAgICAnd2VlaycsCiAgICApOwoKICAgICRudW1l cmljX3R5cGVzID0gYXJyYXkoCiAgICAgICAgJ251bWJlcicsCiAgICAgICAgJ3JhbmdlJywK ICAgICk7CgogICAgJGlzX2RhdGV0aW1lID0gKGluX2FycmF5KCR0eXBlLCAkZGF0ZXRpbWVf dHlwZXMpKTsKICAgICRpc19udW1lcmljID0gKGluX2FycmF5KCR0eXBlLCAkbnVtZXJpY190 eXBlcykpOwoKICAgIC8vIERhdGVzIC8gdGltZXMgZ2V0IHNwZWNpYWwgdHJlYXRtZW50OiBu byBkZWZhdWx0IG1pbi9tYXggaWYgbm90IHNldCBieSB0YWcuCiAgICBpZiAoISRpc19kYXRl dGltZSAmJiAkbWluID09PSBudWxsKSB7CiAgICAgICAgJG1pbiA9IDA7CiAgICB9CgogICAg aWYgKCEkaXNfZGF0ZXRpbWUgJiYgJG1heCA9PT0gbnVsbCkgewogICAgICAgICRtYXggPSAx MDA7CiAgICB9CgogICAgaWYgKGVtcHR5KCRuYW1lKSkgewogICAgICAgICRuYW1lID0gY29t X2Nvbm5lY3RfbGFiZWwybmFtZSgkbGFiZWwpOwogICAgfQoKICAgIGlmICgkY29tX2Nvbm5l Y3Rfc3VibWl0KSB7CiAgICAgICAgJHZhbHVlID0gdHJpbShwcygkbmFtZSkpOwogICAgICAg ICR1dGY4bGVuID0gcHJlZ19tYXRjaF9hbGwoIi8uL3N1IiwgJHZhbHVlLCAkdXRmOGFyKTsK ICAgICAgICAkaGxhYmVsID0gdHhwc3BlY2lhbGNoYXJzKCRsYWJlbCk7CiAgICAgICAgJGRh dGV0aW1lX29rID0gdHJ1ZTsKCiAgICAgICAgaWYgKCRpc19kYXRldGltZSkgewogICAgICAg ICAgICAkbWludmFsID0gJG1pbjsKICAgICAgICAgICAgJG1heHZhbCA9ICRtYXg7CiAgICAg ICAgICAgICRjbXB2YWwgPSAkdmFsdWU7CgogICAgICAgICAgICB0cnkgewogICAgICAgICAg ICAgICAgJGR0ID0gbmV3IERhdGVUaW1lKCRjbXB2YWwpOwogICAgICAgICAgICAgICAgJGNt cHZhbCA9ICRkdC0+Zm9ybWF0KCdVJyk7CgogICAgICAgICAgICAgICAgaWYgKCRtaW4pIHsK ICAgICAgICAgICAgICAgICAgICAkZHQgPSBuZXcgRGF0ZVRpbWUoJG1pbik7CiAgICAgICAg ICAgICAgICAgICAgJG1pbnZhbCA9ICRkdC0+Zm9ybWF0KCdVJyk7CiAgICAgICAgICAgICAg ICB9CgogICAgICAgICAgICAgICAgaWYgKCRtYXgpIHsKICAgICAgICAgICAgICAgICAgICAk ZHQgPSBuZXcgRGF0ZVRpbWUoJG1heCk7CiAgICAgICAgICAgICAgICAgICAgJG1heHZhbCA9 ICRkdC0+Zm9ybWF0KCdVJyk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0gY2F0 Y2ggKEV4Y2VwdGlvbiAkZSkgewogICAgICAgICAgICAgICAgJGRhdGV0aW1lX29rID0gZmFs c2U7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIGlmIChzdHJsZW4oJHZhbHVl KSkgewogICAgICAgICAgICBpZiAoISR1dGY4bGVuKSB7CiAgICAgICAgICAgICAgICAkY29t X2Nvbm5lY3RfZXJyb3JbXSA9IGdUeHQoJ2NvbV9jb25uZWN0X2ludmFsaWRfdXRmOCcsIGFy cmF5KCd7ZmllbGR9JyA9PiAkaGxhYmVsKSk7CiAgICAgICAgICAgICAgICAkaXNFcnJvciA9 ICRjb21fY29ubmVjdF9mbGFnc1snY2xzX2VsZW1lbnQnXTsKICAgICAgICAgICAgfSBlbHNl aWYgKCRpc19kYXRldGltZSAmJiAhJGRhdGV0aW1lX29rKSB7CiAgICAgICAgICAgICAgICAk Y29tX2Nvbm5lY3RfZXJyb3JbXSA9IGdUeHQoJ2NvbV9jb25uZWN0X2Zvcm1hdF93YXJuaW5n JywgYXJyYXkoJ3tmaWVsZH0nID0+ICRobGFiZWwsICd7dmFsdWV9JyA9PiAkdmFsdWUpKTsK ICAgICAgICAgICAgICAgICRpc0Vycm9yID0gJGNvbV9jb25uZWN0X2ZsYWdzWydjbHNfZWxl bWVudCddOwogICAgICAgICAgICB9IGVsc2VpZiAoJG1pbiAmJiAhJGlzX251bWVyaWMgJiYg ISRpc19kYXRldGltZSAmJiAkdXRmOGxlbiA8ICRtaW4pIHsKICAgICAgICAgICAgICAgICRj b21fY29ubmVjdF9lcnJvcltdID0gZ1R4dCgnY29tX2Nvbm5lY3RfbWluX3dhcm5pbmcnLCBh cnJheSgne2ZpZWxkfScgPT4gJGhsYWJlbCwgJ3t2YWx1ZX0nID0+ICRtaW4pKTsKICAgICAg ICAgICAgICAgICRpc0Vycm9yID0gJGNvbV9jb25uZWN0X2ZsYWdzWydjbHNfZWxlbWVudCdd OwogICAgICAgICAgICB9IGVsc2VpZiAoJG1heCAmJiAhJGlzX251bWVyaWMgJiYgISRpc19k YXRldGltZSAmJiAkdXRmOGxlbiA+ICRtYXgpIHsKICAgICAgICAgICAgICAgICRjb21fY29u bmVjdF9lcnJvcltdID0gZ1R4dCgnY29tX2Nvbm5lY3RfbWF4X3dhcm5pbmcnLCBhcnJheSgn e2ZpZWxkfScgPT4gJGhsYWJlbCwgJ3t2YWx1ZX0nID0+ICRtYXgpKTsKICAgICAgICAgICAg ICAgICRpc0Vycm9yID0gJGNvbV9jb25uZWN0X2ZsYWdzWydjbHNfZWxlbWVudCddOwogICAg ICAgICAgICB9IGVsc2VpZiAoJG1pbiAmJiAkaXNfZGF0ZXRpbWUgJiYgJGNtcHZhbCA8ICRt aW52YWwpIHsKICAgICAgICAgICAgICAgICRjb21fY29ubmVjdF9lcnJvcltdID0gZ1R4dCgn Y29tX2Nvbm5lY3RfbWludmFsX3dhcm5pbmcnLCBhcnJheSgne2ZpZWxkfScgPT4gJGhsYWJl bCwgJ3t2YWx1ZX0nID0+ICRtaW4pKTsKICAgICAgICAgICAgICAgICRpc0Vycm9yID0gJGNv bV9jb25uZWN0X2ZsYWdzWydjbHNfZWxlbWVudCddOwogICAgICAgICAgICB9IGVsc2VpZiAo JG1heCAmJiAkaXNfZGF0ZXRpbWUgJiYgJGNtcHZhbCA+ICRtYXh2YWwpIHsKICAgICAgICAg ICAgICAgICRjb21fY29ubmVjdF9lcnJvcltdID0gZ1R4dCgnY29tX2Nvbm5lY3RfbWF4dmFs X3dhcm5pbmcnLCBhcnJheSgne2ZpZWxkfScgPT4gJGhsYWJlbCwgJ3t2YWx1ZX0nID0+ICRt YXgpKTsKICAgICAgICAgICAgICAgICRpc0Vycm9yID0gJGNvbV9jb25uZWN0X2ZsYWdzWydj bHNfZWxlbWVudCddOwogICAgICAgICAgICB9IGVsc2VpZiAoJG1pbiAmJiAkaXNfbnVtZXJp YyAmJiAkdmFsdWUgPCAkbWluKSB7CiAgICAgICAgICAgICAgICAkY29tX2Nvbm5lY3RfZXJy b3JbXSA9IGdUeHQoJ2NvbV9jb25uZWN0X21pbnZhbF93YXJuaW5nJywgYXJyYXkoJ3tmaWVs ZH0nID0+ICRobGFiZWwsICd7dmFsdWV9JyA9PiAkbWluKSk7CiAgICAgICAgICAgICAgICAk aXNFcnJvciA9ICRjb21fY29ubmVjdF9mbGFnc1snY2xzX2VsZW1lbnQnXTsKICAgICAgICAg ICAgfSBlbHNlaWYgKCRtYXggJiYgJGlzX251bWVyaWMgJiYgJHZhbHVlID4gJG1heCkgewog ICAgICAgICAgICAgICAgJGNvbV9jb25uZWN0X2Vycm9yW10gPSBnVHh0KCdjb21fY29ubmVj dF9tYXh2YWxfd2FybmluZycsIGFycmF5KCd7ZmllbGR9JyA9PiAkaGxhYmVsLCAne3ZhbHVl fScgPT4gJG1heCkpOwogICAgICAgICAgICAgICAgJGlzRXJyb3IgPSAkY29tX2Nvbm5lY3Rf ZmxhZ3NbJ2Nsc19lbGVtZW50J107CiAgICAgICAgICAgIH0gZWxzZWlmICgkcGF0dGVybiBh bmQgIXByZWdfbWF0Y2goJy9eJy4kcGF0dGVybi4nJC8nLCAkdmFsdWUpKSB7CiAgICAgICAg ICAgICAgICAkY29tX2Nvbm5lY3RfZXJyb3JbXSA9IGdUeHQoJ2NvbV9jb25uZWN0X3BhdHRl cm5fd2FybmluZycsIGFycmF5KCd7ZmllbGR9JyA9PiAkaGxhYmVsLCAne3ZhbHVlfScgPT4g JHBhdHRlcm4pKTsKICAgICAgICAgICAgICAgICRpc0Vycm9yID0gJGNvbV9jb25uZWN0X2Zs YWdzWydjbHNfZWxlbWVudCddOwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAg ICAgY29tX2Nvbm5lY3Rfc3RvcmUoJG5hbWUsICRsYWJlbCwgJHZhbHVlKTsKICAgICAgICAg ICAgfQogICAgICAgIH0gZWxzZWlmICgkcmVxdWlyZWQpIHsKICAgICAgICAgICAgJGNvbV9j b25uZWN0X2Vycm9yW10gPSBnVHh0KCdjb21fY29ubmVjdF9maWVsZF9taXNzaW5nJywgYXJy YXkoJ3tmaWVsZH0nID0+ICRobGFiZWwpKTsKICAgICAgICAgICAgJGlzRXJyb3IgPSAkY29t X2Nvbm5lY3RfZmxhZ3NbJ2Nsc19lbGVtZW50J107CiAgICAgICAgfQogICAgfSBlbHNlIHsK ICAgICAgICAkdmFsdWUgPSAkZGVmYXVsdDsKICAgIH0KCiAgICAvLyBDb3JlIGF0dHJpYnV0 ZXMuCiAgICAkYXR0ciA9IGNvbV9jb25uZWN0X2J1aWxkX2F0dHMoYXJyYXkoCiAgICAgICAg J2lkJyAgICA9PiAoaXNzZXQoJGlkKSA/ICRpZCA6ICRuYW1lKSwKICAgICAgICAnbmFtZScg ID0+ICRuYW1lLAogICAgICAgICd0eXBlJyAgPT4gJHR5cGUsCiAgICAgICAgJ3ZhbHVlJyA9 PiAkdmFsdWUsCiAgICApKTsKCiAgICBpZiAoJHNpemUgJiYgISRpc19udW1lcmljKSB7CiAg ICAgICAgJGF0dHJbJ3NpemUnXSA9ICdzaXplPSInIC4gaW50dmFsKCRzaXplKSAuICciJzsK ICAgIH0KCiAgICBpZiAoJG1pbiAmJiAhJGlzX251bWVyaWMpIHsKICAgICAgICAkYXR0clsn bWlubGVuZ3RoJ10gPSAnbWlubGVuZ3RoPSInIC4gaW50dmFsKCRtaW4pIC4gJyInOwogICAg fQoKICAgIGlmICgkbWF4ICYmICEkaXNfbnVtZXJpYykgewogICAgICAgICRhdHRyWydtYXhs ZW5ndGgnXSA9ICdtYXhsZW5ndGg9IicgLiBpbnR2YWwoJG1heCkgLiAnIic7CiAgICB9Cgog ICAgaWYgKCRkb2N0eXBlICE9PSAneGh0bWwnICYmICgkaXNfbnVtZXJpYyB8fCAkaXNfZGF0 ZXRpbWUpKSB7CiAgICAgICAgLy8gTm90IHVzaW5nIGludHZhbCgpIGJlY2F1c2UgbWluL21h eC9zdGVwIGNhbiBiZSBmbG9hdGluZyBwb2ludCB2YWx1ZXMuCiAgICAgICAgJGF0dHIgKz0g Y29tX2Nvbm5lY3RfYnVpbGRfYXR0cyhhcnJheSgKICAgICAgICAgICAgJ21pbicgID0+ICRt aW4sCiAgICAgICAgICAgICdtYXgnICA9PiAkbWF4LAogICAgICAgICAgICAnc3RlcCcgPT4g JHN0ZXAsCiAgICAgICAgKSk7CiAgICB9CgogICAgLy8gSFRNTDUgYXR0cmlidXRlcy4KICAg ICRyZXF1aXJlZCA9ICgkcmVxdWlyZWQpID8gJ3JlcXVpcmVkJyA6ICcnOwogICAgaWYgKCRk b2N0eXBlICE9PSAneGh0bWwnKSB7CiAgICAgICAgJGF0dHIgKz0gY29tX2Nvbm5lY3RfYnVp bGRfYXR0cyhhcnJheSgKICAgICAgICAgICAgJ2F1dG9jb21wbGV0ZScgPT4gJGF1dG9jb21w bGV0ZSwKICAgICAgICAgICAgJ2Zvcm0nICAgICAgICAgPT4gJGh0bWxfZm9ybSwKICAgICAg ICAgICAgJ2lucHV0bW9kZScgICAgPT4gJGlucHV0bW9kZSwKICAgICAgICAgICAgJ3BhdHRl cm4nICAgICAgPT4gJHBhdHRlcm4sCiAgICAgICAgICAgICdwbGFjZWhvbGRlcicgID0+ICRw bGFjZWhvbGRlciwKICAgICAgICAgICAgJ3JlcXVpcmVkJyAgICAgPT4gJHJlcXVpcmVkLAog ICAgICAgICkpOwoKICAgICAgICBpZiAoJGlzRXJyb3IpIHsKICAgICAgICAgICAgJGF0dHIg Kz0gY29tX2Nvbm5lY3RfYnVpbGRfYXR0cyhhcnJheSgKICAgICAgICAgICAgICAgICdhcmlh LWludmFsaWQnID0+ICd0cnVlJywKICAgICAgICAgICAgKSk7CiAgICAgICAgfQogICAgfQoK ICAgIC8vIEdsb2JhbCBhdHRyaWJ1dGVzLgogICAgJGF0dHIgKz0gY29tX2Nvbm5lY3RfYnVp bGRfYXR0cygkY29tX2Nvbm5lY3RfZ2xvYmFscywgJGF0dHMpOwoKICAgICRjbGFzc2VzID0g YXJyYXkoKTsKCiAgICBmb3JlYWNoIChhcnJheSgkY2xhc3MsICgkcmVxdWlyZWQgPyAkY29t X2Nvbm5lY3RfZmxhZ3NbJ2Nsc19yZXF1aXJlZCddIDogJycpLCAkaXNFcnJvcikgYXMgJGNs cykgewogICAgICAgIGlmICgkY2xzKSB7CiAgICAgICAgICAgICRjbGFzc2VzW10gPSAkY2xz OwogICAgICAgIH0KICAgIH0KCiAgICAkY2xhc3NTdHIgPSAoJGNsYXNzZXMgPyAnIGNsYXNz PSInIC4gaW1wbG9kZSgnICcsICRjbGFzc2VzKSAuICciJyA6ICcnKTsKICAgICRsYWJlbFN0 ciA9ICc8bGFiZWwgZm9yPSInIC4gJG5hbWUgLiAnIicgLiAkY2xhc3NTdHIgLiAnPicgLiB0 eHBzcGVjaWFsY2hhcnMoJGxhYmVsKSAuICc8L2xhYmVsPic7CgogICAgcmV0dXJuICgkbGFi ZWxfcG9zaXRpb24gPT09ICdiZWZvcmUnID8gJGxhYmVsU3RyIC4gJGJyZWFrIDogJycpIC4K ICAgICAgICAnPGlucHV0JyAuICRjbGFzc1N0ciAuICgkYXR0ciA/ICcgJyAuIGltcGxvZGUo JyAnLCAkYXR0cikgOiAnJykgLiAnIC8+JyAuCiAgICAgICAgKCRsYWJlbF9wb3NpdGlvbiA9 PT0gJ2FmdGVyJyA/ICRicmVhayAuICRsYWJlbFN0ciA6ICcnKTsKfQoKLyoqCiAqIFRhZzog UmVuZGVyIGFuIGVtYWlsIGlucHV0IGZpZWxkLgogKgogKiBAcGFyYW0gIGFycmF5ICAkYXR0 cyBUYWcgYXR0cmlidXRlcwogKiBAcmV0dXJuIHN0cmluZyBIVE1MCiAqLwpmdW5jdGlvbiBj b21fY29ubmVjdF9lbWFpbCgkYXR0cykKewogICAgZ2xvYmFsICRjb21fY29ubmVjdF9lcnJv ciwgJGNvbV9jb25uZWN0X3N1Ym1pdCwgJGNvbV9jb25uZWN0X2Zyb20sICRjb21fY29ubmVj dF9yZWNpcGllbnQsICRjb21fY29ubmVjdF9mbGFnczsKCiAgICAvLyBUT0RPOiAnbXVsdGlw bGUnIGF0dHJpYnV0ZT8KICAgICRkZWZhdWx0cyA9IGFycmF5KAogICAgICAgICdhdXRvY29t cGxldGUnICAgPT4gJycsCiAgICAgICAgJ2JyZWFrJyAgICAgICAgICA9PiBiciwKICAgICAg ICAnY2xhc3MnICAgICAgICAgID0+ICdjb21FbWFpbCcsCiAgICAgICAgJ2RlZmF1bHQnICAg ICAgICA9PiAnJywKICAgICAgICAnaHRtbF9mb3JtJyAgICAgID0+ICRjb21fY29ubmVjdF9m bGFnc1sndGhpc19mb3JtJ10sCiAgICAgICAgJ2lzRXJyb3InICAgICAgICA9PiAnJywKICAg ICAgICAnbGFiZWwnICAgICAgICAgID0+IGdUeHQoJ2NvbV9jb25uZWN0X2VtYWlsJyksCiAg ICAgICAgJ2xhYmVsX3Bvc2l0aW9uJyA9PiAnYmVmb3JlJywKICAgICAgICAnbWF4JyAgICAg ICAgICAgID0+IDEwMCwKICAgICAgICAnbWluJyAgICAgICAgICAgID0+IDAsCiAgICAgICAg J25hbWUnICAgICAgICAgICA9PiAnJywKICAgICAgICAncGF0dGVybicgICAgICAgID0+ICcn LAogICAgICAgICdwbGFjZWhvbGRlcicgICAgPT4gJycsCiAgICAgICAgJ3JlcXVpcmVkJyAg ICAgICA9PiAkY29tX2Nvbm5lY3RfZmxhZ3NbJ3JlcXVpcmVkJ10sCiAgICAgICAgJ3NlbmRf YXJ0aWNsZScgICA9PiAwLAogICAgICAgICdzaXplJyAgICAgICAgICAgPT4gJycsCiAgICAg ICAgJ3R5cGUnICAgICAgICAgICA9PiAnZW1haWwnLAogICAgKTsKCiAgICBleHRyYWN0KGNv bV9jb25uZWN0X2xBdHRzKCRkZWZhdWx0cywgJGF0dHMpKTsKCiAgICBpZiAoZW1wdHkoJG5h bWUpKSB7CiAgICAgICAgJG5hbWUgPSBjb21fY29ubmVjdF9sYWJlbDJuYW1lKCRsYWJlbCk7 CiAgICB9CgogICAgJGVtYWlsID0gJGNvbV9jb25uZWN0X3N1Ym1pdCA/IHRyaW0ocHMoJG5h bWUpKSA6ICRkZWZhdWx0OwoKICAgIGlmICgkY29tX2Nvbm5lY3Rfc3VibWl0ICYmIHN0cmxl bigkZW1haWwpKSB7CiAgICAgICAgaWYgKCFpc192YWxpZF9lbWFpbCgkZW1haWwpKSB7CiAg ICAgICAgICAgICRjb21fY29ubmVjdF9lcnJvcltdID0gZ1R4dCgnY29tX2Nvbm5lY3RfaW52 YWxpZF9lbWFpbCcsIGFycmF5KCd7ZW1haWx9JyA9PiB0eHBzcGVjaWFsY2hhcnMoJGVtYWls KSkpOwogICAgICAgICAgICAkaXNFcnJvciA9ICRjb21fY29ubmVjdF9mbGFnc1snY2xzX2Vs ZW1lbnQnXTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICBwcmVnX21hdGNoKCIvQCgu KykkLyIsICRlbWFpbCwgJG1hdGNoKTsKICAgICAgICAgICAgJGRvbWFpbiA9ICRtYXRjaFsx XTsKCiAgICAgICAgICAgIGlmIChpc19jYWxsYWJsZSgnY2hlY2tkbnNycicpICYmIGNoZWNr ZG5zcnIoJ3RleHRwYXR0ZXJuLmNvbS4nLCdBJykgJiYgIWNoZWNrZG5zcnIoJGRvbWFpbi4n LicsJ01YJykgJiYgIWNoZWNrZG5zcnIoJGRvbWFpbi4nLicsJ0EnKSkgewogICAgICAgICAg ICAgICAgJGNvbV9jb25uZWN0X2Vycm9yW10gPSBnVHh0KCdjb21fY29ubmVjdF9pbnZhbGlk X2hvc3QnLCBhcnJheSgne2hvc3R9JyA9PiB0eHBzcGVjaWFsY2hhcnMoJGRvbWFpbikpKTsK ICAgICAgICAgICAgICAgICRpc0Vycm9yID0gJGNvbV9jb25uZWN0X2ZsYWdzWydjbHNfZWxl bWVudCddOwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgaWYgKCRzZW5k X2FydGljbGUpIHsKICAgICAgICAgICAgICAgICAgICAkY29tX2Nvbm5lY3RfcmVjaXBpZW50 ID0gJGVtYWlsOwogICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAg ICAkY29tX2Nvbm5lY3RfZnJvbSA9ICRlbWFpbDsKICAgICAgICAgICAgICAgIH0KICAgICAg ICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICAkcGFzc2VkX2F0dHMgPSBhcnJheSgpOwoK ICAgIGZvcmVhY2ggKCRkZWZhdWx0cyBhcyAka2V5ID0+ICR2YWx1ZSkgewogICAgICAgICRw YXNzZWRfYXR0c1ska2V5XSA9ICQka2V5OwogICAgfQoKICAgICRwYXNzZWRfYXR0c1snaXNF cnJvciddID0gJGlzRXJyb3I7CiAgICB1bnNldCAoJHBhc3NlZF9hdHRzWydzZW5kX2FydGlj bGUnXSk7CgogICAgcmV0dXJuIGNvbV9jb25uZWN0X3RleHQoJHBhc3NlZF9hdHRzKTsKfQoK LyoqCiAqIFRhZzogUmVuZGVyIGEgdGV4dGFyZWEgaW5wdXQgZmllbGQuCiAqCiAqIEBwYXJh bSAgYXJyYXkgICRhdHRzIFRhZyBhdHRyaWJ1dGVzCiAqIEByZXR1cm4gc3RyaW5nIEhUTUwK ICovCmZ1bmN0aW9uIGNvbV9jb25uZWN0X3RleHRhcmVhKCRhdHRzKQp7CiAgICBnbG9iYWwg JGNvbV9jb25uZWN0X2Vycm9yLCAkY29tX2Nvbm5lY3Rfc3VibWl0LCAkY29tX2Nvbm5lY3Rf ZmxhZ3M7CgogICAgZXh0cmFjdChjb21fY29ubmVjdF9sQXR0cyhhcnJheSgKICAgICAgICAn YXV0b2NvbXBsZXRlJyAgID0+ICcnLAogICAgICAgICdicmVhaycgICAgICAgICAgPT4gYnIs CiAgICAgICAgJ2NsYXNzJyAgICAgICAgICA9PiAnY29tVGV4dGFyZWEnLAogICAgICAgICdj b2xzJyAgICAgICAgICAgPT4gNTgsCiAgICAgICAgJ2RlZmF1bHQnICAgICAgICA9PiAnJywK ICAgICAgICAnaHRtbF9mb3JtJyAgICAgID0+ICRjb21fY29ubmVjdF9mbGFnc1sndGhpc19m b3JtJ10sCiAgICAgICAgJ2lzRXJyb3InICAgICAgICA9PiAnJywKICAgICAgICAnbGFiZWwn ICAgICAgICAgID0+IGdUeHQoJ2NvbV9jb25uZWN0X21lc3NhZ2UnKSwKICAgICAgICAnbGFi ZWxfcG9zaXRpb24nID0+ICdiZWZvcmUnLAogICAgICAgICdtYXgnICAgICAgICAgICAgPT4g MTAwMDAsCiAgICAgICAgJ21pbicgICAgICAgICAgICA9PiAwLAogICAgICAgICduYW1lJyAg ICAgICAgICAgPT4gJycsCiAgICAgICAgJ3BsYWNlaG9sZGVyJyAgICA9PiAnJywKICAgICAg ICAncmVxdWlyZWQnICAgICAgID0+ICRjb21fY29ubmVjdF9mbGFnc1sncmVxdWlyZWQnXSwK ICAgICAgICAncm93cycgICAgICAgICAgID0+IDgsCiAgICAgICAgJ3dyYXAnICAgICAgICAg ICA9PiAnJywKICAgICksICRhdHRzKSk7CgogICAgJG1pbiA9IGludHZhbCgkbWluKTsKICAg ICRtYXggPSBpbnR2YWwoJG1heCk7CgogICAgaWYgKGVtcHR5KCRuYW1lKSkgewogICAgICAg ICRuYW1lID0gY29tX2Nvbm5lY3RfbGFiZWwybmFtZSgkbGFiZWwpOwogICAgfQoKICAgICRk b2N0eXBlID0gZ2V0X3ByZWYoJ2RvY3R5cGUnLCAneGh0bWwnKTsKCiAgICBpZiAoJGNvbV9j b25uZWN0X3N1Ym1pdCkgewogICAgICAgICR2YWx1ZSA9IHByZWdfcmVwbGFjZSgnL15ccypb XHJcbl0vJywgJycsIHJ0cmltKHBzKCRuYW1lKSkpOwogICAgICAgICR1dGY4bGVuID0gcHJl Z19tYXRjaF9hbGwoIi8uL3N1IiwgbHRyaW0oJHZhbHVlKSwgJHV0Zjhhcik7CiAgICAgICAg JGhsYWJlbCA9IHR4cHNwZWNpYWxjaGFycygkbGFiZWwpOwoKICAgICAgICBpZiAoc3RybGVu KGx0cmltKCR2YWx1ZSkpKSB7CiAgICAgICAgICAgIGlmICghJHV0ZjhsZW4pIHsKICAgICAg ICAgICAgICAgICRjb21fY29ubmVjdF9lcnJvcltdID0gZ1R4dCgnY29tX2Nvbm5lY3RfaW52 YWxpZF91dGY4JywgYXJyYXkoJ3tmaWVsZH0nID0+ICRobGFiZWwpKTsKICAgICAgICAgICAg ICAgICRpc0Vycm9yID0gJGNvbV9jb25uZWN0X2ZsYWdzWydjbHNfZWxlbWVudCddOwogICAg ICAgICAgICB9IGVsc2VpZiAoJG1pbiAmJiAkdXRmOGxlbiA8ICRtaW4pIHsKICAgICAgICAg ICAgICAgICRjb21fY29ubmVjdF9lcnJvcltdID0gZ1R4dCgnY29tX2Nvbm5lY3RfbWluX3dh cm5pbmcnLCBhcnJheSgne2ZpZWxkfScgPT4gJGhsYWJlbCwgJ3t2YWx1ZX0nID0+ICRtaW4p KTsKICAgICAgICAgICAgICAgICRpc0Vycm9yID0gJGNvbV9jb25uZWN0X2ZsYWdzWydjbHNf ZWxlbWVudCddOwogICAgICAgICAgICB9IGVsc2VpZiAoJG1heCAmJiAkdXRmOGxlbiA+ICRt YXgpIHsKICAgICAgICAgICAgICAgICRjb21fY29ubmVjdF9lcnJvcltdID0gZ1R4dCgnY29t X2Nvbm5lY3RfbWF4X3dhcm5pbmcnLCBhcnJheSgne2ZpZWxkfScgPT4gJGhsYWJlbCwgJ3t2 YWx1ZX0nID0+ICRtYXgpKTsKICAgICAgICAgICAgICAgICRpc0Vycm9yID0gJGNvbV9jb25u ZWN0X2ZsYWdzWydjbHNfZWxlbWVudCddOwogICAgICAgICAgICB9IGVsc2UgewogICAgICAg ICAgICAgICAgY29tX2Nvbm5lY3Rfc3RvcmUoJG5hbWUsICRsYWJlbCwgJHZhbHVlKTsKICAg ICAgICAgICAgfQogICAgICAgIH0gZWxzZWlmICgkcmVxdWlyZWQpIHsKICAgICAgICAgICAg JGNvbV9jb25uZWN0X2Vycm9yW10gPSBnVHh0KCdjb21fY29ubmVjdF9maWVsZF9taXNzaW5n JywgYXJyYXkoJ3tmaWVsZH0nID0+ICRobGFiZWwpKTsKICAgICAgICAgICAgJGlzRXJyb3Ig PSAkY29tX2Nvbm5lY3RfZmxhZ3NbJ2Nsc19lbGVtZW50J107CiAgICAgICAgfQogICAgfSBl bHNlIHsKICAgICAgICAkdmFsdWUgPSAkZGVmYXVsdDsKICAgIH0KCiAgICAvLyBDb3JlIGF0 dHJpYnV0ZXMuCiAgICAkYXR0ciA9IGNvbV9jb25uZWN0X2J1aWxkX2F0dHMoYXJyYXkoCiAg ICAgICAgJ2lkJyAgICAgICAgPT4gKGlzc2V0KCRpZCkgPyAkaWQgOiAkbmFtZSksCiAgICAg ICAgJ25hbWUnICAgICAgPT4gJG5hbWUsCiAgICAgICAgJ2NvbHMnICAgICAgPT4gaW50dmFs KCRjb2xzKSwKICAgICAgICAncm93cycgICAgICA9PiBpbnR2YWwoJHJvd3MpLAogICAgICAg ICdtYXhsZW5ndGgnID0+ICRtYXgsCiAgICApKTsKCiAgICAvLyBIVE1MNSBhdHRyaWJ1dGVz LgogICAgJHJlcXVpcmVkID0gKCRyZXF1aXJlZCkgPyAncmVxdWlyZWQnIDogJyc7CiAgICBp ZiAoJGRvY3R5cGUgIT09ICd4aHRtbCcpIHsKICAgICAgICAkYXR0ciArPSBjb21fY29ubmVj dF9idWlsZF9hdHRzKGFycmF5KAogICAgICAgICAgICAnYXV0b2NvbXBsZXRlJyA9PiAkYXV0 b2NvbXBsZXRlLAogICAgICAgICAgICAnZm9ybScgICAgICAgICA9PiAkaHRtbF9mb3JtLAog ICAgICAgICAgICAncGxhY2Vob2xkZXInICA9PiAkcGxhY2Vob2xkZXIsCiAgICAgICAgICAg ICdyZXF1aXJlZCcgICAgID0+ICRyZXF1aXJlZCwKICAgICAgICApKTsKCiAgICAgICAgaWYg KCRpc0Vycm9yKSB7CiAgICAgICAgICAgICRhdHRyICs9IGNvbV9jb25uZWN0X2J1aWxkX2F0 dHMoYXJyYXkoCiAgICAgICAgICAgICAgICAnYXJpYS1pbnZhbGlkJyA9PiAndHJ1ZScsCiAg ICAgICAgICAgICkpOwogICAgICAgIH0KICAgIH0KCiAgICAvLyBHbG9iYWwgYXR0cmlidXRl cy4KICAgICRhdHRyICs9IGNvbV9jb25uZWN0X2J1aWxkX2F0dHMoJGNvbV9jb25uZWN0X2ds b2JhbHMsICRhdHRzKTsKCiAgICAkY2xhc3NlcyA9IGFycmF5KCk7CgogICAgZm9yZWFjaCAo YXJyYXkoJGNsYXNzLCAoJHJlcXVpcmVkID8gJGNvbV9jb25uZWN0X2ZsYWdzWydjbHNfcmVx dWlyZWQnXSA6ICcnKSwgJGlzRXJyb3IpIGFzICRjbHMpIHsKICAgICAgICBpZiAoJGNscykg ewogICAgICAgICAgICAkY2xhc3Nlc1tdID0gJGNsczsKICAgICAgICB9CiAgICB9CgogICAg JGNsYXNzU3RyID0gKCRjbGFzc2VzID8gJyBjbGFzcz0iJyAuIGltcGxvZGUoJyAnLCAkY2xh c3NlcykgLiAnIicgOiAnJyk7CiAgICAkbGFiZWxTdHIgPSAnPGxhYmVsIGZvcj0iJyAuICRu YW1lIC4gJyInIC4gJGNsYXNzU3RyIC4gJz4nIC4gdHhwc3BlY2lhbGNoYXJzKCRsYWJlbCkg LiAnPC9sYWJlbD4nOwoKICAgIHJldHVybiAoJGxhYmVsX3Bvc2l0aW9uID09PSAnYmVmb3Jl JyA/ICRsYWJlbFN0ciAuICRicmVhayA6ICcnKSAuCiAgICAgICAgJzx0ZXh0YXJlYScgLiAk Y2xhc3NTdHIgLiAoJGF0dHIgPyAnICcgLiBpbXBsb2RlKCcgJywgJGF0dHIpIDogJycpIC4g Jz4nIC4gdHhwc3BlY2lhbGNoYXJzKCR2YWx1ZSkgLiAnPC90ZXh0YXJlYT4nIC4KICAgICAg ICAoJGxhYmVsX3Bvc2l0aW9uID09PSAnYWZ0ZXInID8gJGJyZWFrIC4gJGxhYmVsU3RyIDog JycpOwp9CgovKioKICogVGFnOiBSZW5kZXIgYSBzZWxlY3Qvb3B0aW9uIGlucHV0IGxpc3Qu CiAqCiAqIEBwYXJhbSAgYXJyYXkgICRhdHRzIFRhZyBhdHRyaWJ1dGVzCiAqIEByZXR1cm4g c3RyaW5nIEhUTUwKICovCmZ1bmN0aW9uIGNvbV9jb25uZWN0X3NlbGVjdCgkYXR0cywgJHRo aW5nID0gbnVsbCkKewogICAgZ2xvYmFsICRjb21fY29ubmVjdF9lcnJvciwgJGNvbV9jb25u ZWN0X3N1Ym1pdCwgJGNvbV9jb25uZWN0X2ZsYWdzOwoKICAgIC8vIFRPRE86IG11bHRpcGxl IGF0dHJpYnV0ZT8KICAgIGV4dHJhY3QoY29tX2Nvbm5lY3RfbEF0dHMoYXJyYXkoCiAgICAg ICAgJ2JyZWFrJyAgICAgICAgICA9PiBiciwKICAgICAgICAnY2xhc3MnICAgICAgICAgID0+ ICdjb21TZWxlY3QnLAogICAgICAgICdkZWxpbWl0ZXInICAgICAgPT4gJywnLAogICAgICAg ICdodG1sX2Zvcm0nICAgICAgPT4gJGNvbV9jb25uZWN0X2ZsYWdzWyd0aGlzX2Zvcm0nXSwK ICAgICAgICAnaXNFcnJvcicgICAgICAgID0+ICcnLAogICAgICAgICdsYWJlbCcgICAgICAg ICAgPT4gZ1R4dCgnY29tX2Nvbm5lY3Rfb3B0aW9uJyksCiAgICAgICAgJ2xhYmVsX3Bvc2l0 aW9uJyA9PiAnYmVmb3JlJywKICAgICAgICAnbGlzdCcgICAgICAgICAgID0+ICcnLCAvLyBU T0RPOiByZW1vdmUgZnJvbSBoZXJlIGluIGZhdm91ciBvZiB0aGUgZ2xvYmFsIGxpc3QgYXR0 cmlidXRlLgogICAgICAgICdvcHRpb25zJyAgICAgICAgPT4gZ1R4dCgnY29tX2Nvbm5lY3Rf Z2VuZXJhbF9pbnF1aXJ5JyksCiAgICAgICAgJ25hbWUnICAgICAgICAgICA9PiAnJywKICAg ICAgICAncmVxdWlyZWQnICAgICAgID0+ICRjb21fY29ubmVjdF9mbGFnc1sncmVxdWlyZWQn XSwKICAgICAgICAnc2VsZWN0ZWQnICAgICAgID0+ICcnLAogICAgICAgICdzaXplJyAgICAg ICAgICAgPT4gJycsCiAgICApLCAkYXR0cykpOwoKICAgIC8vIERldGVjdCBvbGQtc2Nob29s IHVzZSBvZiB0aGUgbGlzdCBhdHRyaWJ1dGUuIE5vdGUgdGhhdCBkZXByZWNhdGVkX2Z1bmN0 aW9uX3dpdGgKICAgIC8vIGlzbid0IHN0cmljdGx5IHRoZSBjb3JyZWN0IGVycm9yIHRvIHRo cm93LCBidXQgaXQncyBjbG9zZSBlbm91Z2ggdW50aWwgY29yZSBoYXMKICAgIC8vIGEgZGVk aWNhdGVkIGRlcHJlY2F0ZWRfYXR0cmlidXRlX3dpdGggc3RyaW5nLgogICAgaWYgKCFlbXB0 eSgkbGlzdCkgJiYgc3RycG9zKCRsaXN0LCAkZGVsaW1pdGVyKSAhPT0gZmFsc2UpIHsKICAg ICAgICAkb3B0aW9ucyA9ICRsaXN0OwogICAgICAgIHRyaWdnZXJfZXJyb3IoZ1R4dCgnZGVw cmVjYXRlZF9mdW5jdGlvbl93aXRoJywgYXJyYXkoJ3tuYW1lfScgPT4gJ2xpc3QnLCAne3dp dGh9JyA9PiAnb3B0aW9ucycpKSwgRV9VU0VSX05PVElDRSk7CiAgICAgICAgdW5zZXQoJGxp c3QsICRhdHRzWydsaXN0J10pOwogICAgfQoKICAgIGlmIChlbXB0eSgkbmFtZSkpIHsKICAg ICAgICAkbmFtZSA9IGNvbV9jb25uZWN0X2xhYmVsMm5hbWUoJGxhYmVsKTsKICAgIH0KCiAg ICAkdmFsdWUgPSAoJGNvbV9jb25uZWN0X3N1Ym1pdCkgPyB0cmltKHBzKCRuYW1lKSkgOiAk c2VsZWN0ZWQ7CiAgICAkZG9jdHlwZSA9IGdldF9wcmVmKCdkb2N0eXBlJywgJ3hodG1sJyk7 CgogICAgaWYgKCR0aGluZykgewogICAgICAgIGNvbV9jb25uZWN0X29wdGlvbihudWxsLCAk dmFsdWUpOwogICAgICAgICRvdXQgPSBwYXJzZSgkdGhpbmcpOwogICAgICAgICRvcHRpb25z ID0gY29tX2Nvbm5lY3Rfb3B0aW9uKG51bGwsIG51bGwpOwogICAgfSBlbHNlIHsKICAgICAg ICAkb3B0aW9ucyA9IGFycmF5X21hcCgndHJpbScsIGV4cGxvZGUoJGRlbGltaXRlciwgcHJl Z19yZXBsYWNlKCcvW1xyXG5cdFxzXSsvJywgJyAnLCAkb3B0aW9ucykpKTsKICAgICAgICAk b3V0ID0gJyc7CgogICAgICAgIGZvcmVhY2ggKCRvcHRpb25zIGFzICRpdGVtKSB7CiAgICAg ICAgICAgICRvdXQgLj0gbi50Lic8b3B0aW9uJyAuICgkaXRlbSA9PSAkdmFsdWUgPyAnIHNl bGVjdGVkJyAuICgoJGRvY3R5cGUgPT09ICd4aHRtbCcpID8gJz0ic2VsZWN0ZWQiJyA6ICcn KSAuICc+JyA6ICc+JykgLiAoc3RybGVuKCRpdGVtKSA/IHR4cHNwZWNpYWxjaGFycygkaXRl bSkgOiAnICcpIC4gJzwvb3B0aW9uPic7CiAgICAgICAgfQogICAgfQoKICAgIGlmICgkY29t X2Nvbm5lY3Rfc3VibWl0KSB7CiAgICAgICAgaWYgKHN0cmxlbigkdmFsdWUpKSB7CiAgICAg ICAgICAgIGlmIChpbl9hcnJheSgkdmFsdWUsICRvcHRpb25zKSkgewogICAgICAgICAgICAg ICAgY29tX2Nvbm5lY3Rfc3RvcmUoJG5hbWUsICRsYWJlbCwgJHZhbHVlKTsKICAgICAgICAg ICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICRjb21fY29ubmVjdF9lcnJvcltdID0gZ1R4 dCgnY29tX2Nvbm5lY3RfaW52YWxpZF92YWx1ZScsIGFycmF5KCd7ZmllbGR9JyA9PiB0eHBz cGVjaWFsY2hhcnMoJGxhYmVsKSwgJ3t2YWx1ZX0nID0+IHR4cHNwZWNpYWxjaGFycygkdmFs dWUpKSk7CiAgICAgICAgICAgICAgICAkaXNFcnJvciA9ICRjb21fY29ubmVjdF9mbGFnc1sn Y2xzX2VsZW1lbnQnXTsKICAgICAgICAgICAgfQogICAgICAgIH0gZWxzZWlmICgkcmVxdWly ZWQpIHsKICAgICAgICAgICAgJGNvbV9jb25uZWN0X2Vycm9yW10gPSBnVHh0KCdjb21fY29u bmVjdF9maWVsZF9taXNzaW5nJywgYXJyYXkoJ3tmaWVsZH0nID0+IHR4cHNwZWNpYWxjaGFy cygkbGFiZWwpKSk7CiAgICAgICAgICAgICRpc0Vycm9yID0gJGNvbV9jb25uZWN0X2ZsYWdz WydjbHNfZWxlbWVudCddOwogICAgICAgIH0KICAgIH0gZWxzZSB7CiAgICAgICAgJHZhbHVl ID0gJHNlbGVjdGVkOwogICAgfQoKICAgIC8vIENvcmUgYXR0cmlidXRlcy4KICAgICRhdHRy ID0gY29tX2Nvbm5lY3RfYnVpbGRfYXR0cyhhcnJheSgKICAgICAgICAnaWQnICAgPT4gKGlz c2V0KCRpZCkgPyAkaWQgOiAkbmFtZSksCiAgICAgICAgJ25hbWUnID0+ICRuYW1lLAogICAg KSk7CgogICAgaWYgKCRzaXplICYmIGlzX251bWVyaWMoJHNpemUpKSB7CiAgICAgICAgJGF0 dHJbJ3NpemUnXSA9ICdzaXplPSInIC4gaW50dmFsKCRzaXplKSAuICciJzsKICAgIH0KCiAg ICAvLyBIVE1MNSBhdHRyaWJ1dGVzLgogICAgJHJlcXVpcmVkID0gKCRyZXF1aXJlZCkgPyAn cmVxdWlyZWQnIDogJyc7CiAgICBpZiAoJGRvY3R5cGUgIT09ICd4aHRtbCcpIHsKICAgICAg ICAkYXR0ciArPSBjb21fY29ubmVjdF9idWlsZF9hdHRzKGFycmF5KAogICAgICAgICAgICAn Zm9ybScgICAgID0+ICRodG1sX2Zvcm0sCiAgICAgICAgICAgICdyZXF1aXJlZCcgPT4gJHJl cXVpcmVkLAogICAgICAgICkpOwoKICAgICAgICBpZiAoJGlzRXJyb3IpIHsKICAgICAgICAg ICAgJGF0dHIgKz0gY29tX2Nvbm5lY3RfYnVpbGRfYXR0cyhhcnJheSgKICAgICAgICAgICAg ICAgICdhcmlhLWludmFsaWQnID0+ICd0cnVlJywKICAgICAgICAgICAgKSk7CiAgICAgICAg fQogICAgfQoKICAgIC8vIEdsb2JhbCBhdHRyaWJ1dGVzLgogICAgJGF0dHIgKz0gY29tX2Nv bm5lY3RfYnVpbGRfYXR0cygkY29tX2Nvbm5lY3RfZ2xvYmFscywgJGF0dHMpOwoKICAgICRj bGFzc2VzID0gYXJyYXkoKTsKCiAgICBmb3JlYWNoIChhcnJheSgkY2xhc3MsICgkcmVxdWly ZWQgPyAkY29tX2Nvbm5lY3RfZmxhZ3NbJ2Nsc19yZXF1aXJlZCddIDogJycpLCAkaXNFcnJv cikgYXMgJGNscykgewogICAgICAgIGlmICgkY2xzKSB7CiAgICAgICAgICAgICRjbGFzc2Vz W10gPSAkY2xzOwogICAgICAgIH0KICAgIH0KCiAgICAkY2xhc3NTdHIgPSAoJGNsYXNzZXMg PyAnIGNsYXNzPSInIC4gaW1wbG9kZSgnICcsICRjbGFzc2VzKSAuICciJyA6ICcnKTsKICAg ICRsYWJlbFN0ciA9ICc8bGFiZWwgZm9yPSInIC4gJG5hbWUgLiAnIicgLiAkY2xhc3NTdHIg LiAnPicgLiB0eHBzcGVjaWFsY2hhcnMoJGxhYmVsKSAuICc8L2xhYmVsPic7CgogICAgcmV0 dXJuICgkbGFiZWxfcG9zaXRpb24gPT09ICdiZWZvcmUnID8gJGxhYmVsU3RyIC4gJGJyZWFr IDogJycpIC4KICAgICAgICBuIC4gJzxzZWxlY3QnIC4gJGNsYXNzU3RyIC4gKCRhdHRyID8g JyAnIC4gaW1wbG9kZSgnICcsICRhdHRyKSA6ICcnKSAuICc+JyAuCiAgICAgICAgICAgICRv dXQgLgogICAgICAgIG4gLiAnPC9zZWxlY3Q+JyAuCiAgICAgICAgKCRsYWJlbF9wb3NpdGlv biA9PT0gJ2FmdGVyJyA/ICRicmVhayAuICRsYWJlbFN0ciA6ICcnKTsKfQoKLyoqCiAqIFRh ZzogUmVuZGVyIGEgc2V0IG9mIHNlbGVjdCBvcHRpb25zLgogKgogKiBAcGFyYW0gIGFycmF5 ICAkYXR0cyAgVGFnIGF0dHJpYnV0ZXMKICogQHBhcmFtICBzdHJpbmcgJHRoaW5nIFRhZydz IGNvbnRhaW5lcgogKiBAcmV0dXJuIHN0cmluZyBIVE1MCiAqLwpmdW5jdGlvbiBjb21fY29u bmVjdF9vcHRpb24oJGF0dHMsICR0aGluZyA9IG51bGwpCnsKICAgIHN0YXRpYyAkb3B0aW9u czsKICAgIHN0YXRpYyAkbWF0Y2g7CgogICAgaWYgKCRhdHRzID09PSBudWxsKSB7CiAgICAg ICAgaWYgKCR0aGluZyA9PT0gbnVsbCkgewogICAgICAgICAgICByZXR1cm4gJG9wdGlvbnM7 CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgJG1hdGNoID0gJHRoaW5nOwogICAgICAg ICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgIGdsb2JhbCAkY29tX2Nvbm5lY3Rf ZXJyb3IsICRjb21fY29ubmVjdF9zdWJtaXQ7CgogICAgZXh0cmFjdChjb21fY29ubmVjdF9s QXR0cyhhcnJheSgKICAgICAgICAnY2xhc3MnICAgID0+ICdjb21PcHRpb24nLAogICAgICAg ICdsYWJlbCcgICAgPT4gbnVsbCwKICAgICAgICAnc2VsZWN0ZWQnID0+IG51bGwsCiAgICAg ICAgJ3ZhbHVlJyAgICA9PiBudWxsLAogICAgKSwgJGF0dHMpKTsKCiAgICAkdmFsID0gKCR2 YWx1ZSA9PT0gbnVsbCkgPyAoIWVtcHR5KCR0aGluZykgPyAkdGhpbmcgOiAoIWVtcHR5KCRs YWJlbCkgPyAkbGFiZWwgOiBudWxsKSkgOiAkdmFsdWU7CiAgICAkbGFiZWwgPSAoJGxhYmVs ID09PSBudWxsKSA/ICghZW1wdHkoJHRoaW5nKSA/ICR0aGluZyA6ICghZW1wdHkoJHZhbHVl KSA/ICR2YWx1ZSA6IG51bGwpKSA6ICRsYWJlbDsKCiAgICAkYXR0ciA9IGFycmF5KCk7CiAg ICAkZG9jdHlwZSA9IGdldF9wcmVmKCdkb2N0eXBlJywgJ3hodG1sJyk7CgogICAgaWYgKCRj b21fY29ubmVjdF9zdWJtaXQpIHsKICAgICAgICAkb3B0aW9uc1tdID0gJHZhbDsKCiAgICAg ICAgaWYgKCR2YWwgIT09IG51bGwgJiYgKChzdHJpbmcpJHZhbCA9PT0gKHN0cmluZykkbWF0 Y2gpKSB7CiAgICAgICAgICAgICRhdHRyW10gPSAnc2VsZWN0ZWQnIC4gKCgkZG9jdHlwZSA9 PT0gJ3hodG1sJykgPyAnPSJzZWxlY3RlZCInIDogJycpOwogICAgICAgIH0KICAgIH0gZWxz ZWlmICgkc2VsZWN0ZWQgfHwgKCR2YWwgIT09IG51bGwgJiYgKChzdHJpbmcpJHZhbCA9PT0g KHN0cmluZykkbWF0Y2gpKSkgewogICAgICAgICRhdHRyW10gPSAnc2VsZWN0ZWQnIC4gKCgk ZG9jdHlwZSA9PT0gJ3hodG1sJykgPyAnPSJzZWxlY3RlZCInIDogJycpOwogICAgfQoKICAg IC8vIENvcmUgYXR0cmlidXRlcy4KICAgICRhdHRyICs9IGNvbV9jb25uZWN0X2J1aWxkX2F0 dHMoYXJyYXkoCiAgICAgICAgJ3ZhbHVlJyA9PiAkdmFsLAogICAgKSk7CgogICAgLy8gR2xv YmFsIGF0dHJpYnV0ZXMuCiAgICAkYXR0ciArPSBjb21fY29ubmVjdF9idWlsZF9hdHRzKCRj b21fY29ubmVjdF9nbG9iYWxzLCAkYXR0cyk7CgogICAgJGNsYXNzU3RyID0gKCgkY2xhc3Mp ID8gJyBjbGFzcz0iJyAuICRjbGFzcyAuICciJyA6ICcnKTsKCiAgICByZXR1cm4gJzxvcHRp b24nIC4gJGNsYXNzU3RyIC4gKCRhdHRyID8gJyAnIC4gaW1wbG9kZSgnICcsICRhdHRyKSA6 ICcnKSAuICc+JyAuIHR4cHNwZWNpYWxjaGFycygkbGFiZWwpIC4gJzwvb3B0aW9uPic7Cn0K Ci8qKgogKiBUYWc6IFJlbmRlciBhIGNoZWNrYm94LgogKgogKiBAcGFyYW0gIGFycmF5ICAk YXR0cyAgVGFnIGF0dHJpYnV0ZXMKICogQHJldHVybiBzdHJpbmcgSFRNTAogKiBAdG9kbyBj aGVja2JveCBncm91cHM/CiAqLwpmdW5jdGlvbiBjb21fY29ubmVjdF9jaGVja2JveCgkYXR0 cykKewogICAgZ2xvYmFsICRjb21fY29ubmVjdF9lcnJvciwgJGNvbV9jb25uZWN0X3N1Ym1p dCwgJGNvbV9jb25uZWN0X2ZsYWdzOwoKICAgIGV4dHJhY3QoY29tX2Nvbm5lY3RfbEF0dHMo YXJyYXkoCiAgICAgICAgJ2JyZWFrJyAgICAgICAgICA9PiAnICcsCiAgICAgICAgJ2NoZWNr ZWQnICAgICAgICA9PiAwLAogICAgICAgICdjbGFzcycgICAgICAgICAgPT4gJ2NvbUNoZWNr Ym94JywKICAgICAgICAnaHRtbF9mb3JtJyAgICAgID0+ICRjb21fY29ubmVjdF9mbGFnc1sn dGhpc19mb3JtJ10sCiAgICAgICAgJ2lzRXJyb3InICAgICAgICA9PiAnJywKICAgICAgICAn bGFiZWwnICAgICAgICAgID0+IGdUeHQoJ2NvbV9jb25uZWN0X2NoZWNrYm94JyksCiAgICAg ICAgJ2xhYmVsX3Bvc2l0aW9uJyA9PiAnYWZ0ZXInLAogICAgICAgICduYW1lJyAgICAgICAg ICAgPT4gJycsCiAgICAgICAgJ3JlcXVpcmVkJyAgICAgICA9PiAkY29tX2Nvbm5lY3RfZmxh Z3NbJ3JlcXVpcmVkJ10sCiAgICAgICAgJ3ZhbHVlJyAgICAgICAgICA9PiBudWxsLAogICAg KSwgJGF0dHMpKTsKCiAgICBpZiAoZW1wdHkoJG5hbWUpKSB7CiAgICAgICAgJG5hbWUgPSBj b21fY29ubmVjdF9sYWJlbDJuYW1lKCRsYWJlbCk7CiAgICB9CgogICAgJGRvY3R5cGUgPSBn ZXRfcHJlZignZG9jdHlwZScsICd4aHRtbCcpOwoKICAgIGlmICgkY29tX2Nvbm5lY3Rfc3Vi bWl0KSB7CiAgICAgICAgJHRoZVZhbHVlID0gKGJvb2wpIHBzKCRuYW1lKTsKCiAgICAgICAg aWYgKCRyZXF1aXJlZCAmJiAhJHRoZVZhbHVlKSB7CiAgICAgICAgICAgICRjb21fY29ubmVj dF9lcnJvcltdID0gZ1R4dCgnY29tX2Nvbm5lY3RfZmllbGRfbWlzc2luZycsIGFycmF5KCd7 ZmllbGR9JyA9PiB0eHBzcGVjaWFsY2hhcnMoJGxhYmVsKSkpOwogICAgICAgICAgICAkaXNF cnJvciA9ICRjb21fY29ubmVjdF9mbGFnc1snY2xzX2VsZW1lbnQnXTsKICAgICAgICB9IGVs c2UgewogICAgICAgICAgICAkdG9TdG9yZSA9ICgoJHZhbHVlICE9PSBudWxsICYmICR0aGVW YWx1ZSkgPyAkdmFsdWUgOiAoJHRoZVZhbHVlID8gZ1R4dCgneWVzJykgOiBnVHh0KCdubycp KSk7CiAgICAgICAgICAgIGNvbV9jb25uZWN0X3N0b3JlKCRuYW1lLCAkbGFiZWwsICR0b1N0 b3JlKTsKICAgICAgICB9CiAgICB9IGVsc2UgewogICAgICAgICR0aGVWYWx1ZSA9ICRjaGVj a2VkOwogICAgfQoKICAgIC8vIENvcmUgYXR0cmlidXRlcy4KICAgICRhdHRyID0gY29tX2Nv bm5lY3RfYnVpbGRfYXR0cyhhcnJheSgKICAgICAgICAnaWQnICAgID0+IChpc3NldCgkaWQp ID8gJGlkIDogJG5hbWUpLAogICAgICAgICduYW1lJyAgPT4gJG5hbWUsCiAgICApKTsKCiAg ICBpZiAoJHZhbHVlICE9PSBudWxsKSB7CiAgICAgICAgJGF0dHIgKz0gY29tX2Nvbm5lY3Rf YnVpbGRfYXR0cyhhcnJheSgKICAgICAgICAgICAgJ3ZhbHVlJyA9PiAkdmFsdWUsCiAgICAg ICAgKSk7CiAgICB9CgogICAgLy8gSFRNTDUgYXR0cmlidXRlcy4KICAgICRyZXF1aXJlZCA9 ICgkcmVxdWlyZWQpID8gJ3JlcXVpcmVkJyA6ICcnOwogICAgaWYgKCRkb2N0eXBlICE9PSAn eGh0bWwnKSB7CiAgICAgICAgJGF0dHIgKz0gY29tX2Nvbm5lY3RfYnVpbGRfYXR0cyhhcnJh eSgKICAgICAgICAgICAgJ2Zvcm0nICAgICA9PiAkaHRtbF9mb3JtLAogICAgICAgICAgICAn cmVxdWlyZWQnID0+ICRyZXF1aXJlZCwKICAgICAgICApKTsKCiAgICAgICAgaWYgKCRpc0Vy cm9yKSB7CiAgICAgICAgICAgICRhdHRyICs9IGNvbV9jb25uZWN0X2J1aWxkX2F0dHMoYXJy YXkoCiAgICAgICAgICAgICAgICAnYXJpYS1pbnZhbGlkJyA9PiAndHJ1ZScsCiAgICAgICAg ICAgICkpOwogICAgICAgIH0KICAgIH0KCiAgICAvLyBHbG9iYWwgYXR0cmlidXRlcy4KICAg ICRhdHRyICs9IGNvbV9jb25uZWN0X2J1aWxkX2F0dHMoJGNvbV9jb25uZWN0X2dsb2JhbHMs ICRhdHRzKTsKCiAgICAkY2xhc3NlcyA9IGFycmF5KCk7CgogICAgZm9yZWFjaCAoYXJyYXko JGNsYXNzLCAoJHJlcXVpcmVkID8gJGNvbV9jb25uZWN0X2ZsYWdzWydjbHNfcmVxdWlyZWQn XSA6ICcnKSwgJGlzRXJyb3IpIGFzICRjbHMpIHsKICAgICAgICBpZiAoJGNscykgewogICAg ICAgICAgICAkY2xhc3Nlc1tdID0gJGNsczsKICAgICAgICB9CiAgICB9CgogICAgJGNsYXNz U3RyID0gKCRjbGFzc2VzID8gJyBjbGFzcz0iJyAuIGltcGxvZGUoJyAnLCAkY2xhc3Nlcykg LiAnIicgOiAnJyk7CiAgICAkbGFiZWxTdHIgPSAnPGxhYmVsIGZvcj0iJyAuICRuYW1lIC4g JyInIC4gJGNsYXNzU3RyIC4gJz4nIC4gdHhwc3BlY2lhbGNoYXJzKCRsYWJlbCkgLiAnPC9s YWJlbD4nOwoKICAgIHJldHVybiAoJGxhYmVsX3Bvc2l0aW9uID09PSAnYmVmb3JlJyA/ICRs YWJlbFN0ciAuICRicmVhayA6ICcnKSAuCiAgICAgICAgJzxpbnB1dCB0eXBlPSJjaGVja2Jv eCInIC4gJGNsYXNzU3RyIC4KICAgICAgICAgICAgKCR0aGVWYWx1ZSA/ICcgY2hlY2tlZCcg LiAoKCRkb2N0eXBlID09PSAneGh0bWwnKSA/ICc9ImNoZWNrZWQiJyA6ICcnKSA6ICcnKSAu ICgkYXR0ciA/ICcgJyAuIGltcGxvZGUoJyAnLCAkYXR0cikgOiAnJykgLiAnIC8+JyAuCiAg ICAgICAgKCRsYWJlbF9wb3NpdGlvbiA9PT0gJ2FmdGVyJyA/ICRicmVhayAuICRsYWJlbFN0 ciA6ICcnKTsKfQoKLyoqCiAqIFRhZzogUmVuZGVyIGEgcmFkaW8gYnV0dG9uLgogKgogKiBA cGFyYW0gIGFycmF5ICAkYXR0cyAgVGFnIGF0dHJpYnV0ZXMKICogQHJldHVybiBzdHJpbmcg SFRNTAogKi8KZnVuY3Rpb24gY29tX2Nvbm5lY3RfcmFkaW8oJGF0dHMpCnsKICAgIGdsb2Jh bCAkY29tX2Nvbm5lY3RfZXJyb3IsICRjb21fY29ubmVjdF9zdWJtaXQsICRjb21fY29ubmVj dF92YWx1ZXMsICRjb21fY29ubmVjdF9mbGFncywgJGNvbV9jb25uZWN0X2dyb3VwOwoKICAg IGV4dHJhY3QoY29tX2Nvbm5lY3RfbEF0dHMoYXJyYXkoCiAgICAgICAgJ2JyZWFrJyAgICAg ICAgICA9PiAnICcsCiAgICAgICAgJ2NoZWNrZWQnICAgICAgICA9PiAwLAogICAgICAgICdj bGFzcycgICAgICAgICAgPT4gJ2NvbVJhZGlvJywKICAgICAgICAnZ3JvdXAnICAgICAgICAg ID0+ICcnLAogICAgICAgICdodG1sX2Zvcm0nICAgICAgPT4gJGNvbV9jb25uZWN0X2ZsYWdz Wyd0aGlzX2Zvcm0nXSwKICAgICAgICAnaXNFcnJvcicgICAgICAgID0+ICcnLAogICAgICAg ICdsYWJlbCcgICAgICAgICAgPT4gZ1R4dCgnY29tX2Nvbm5lY3Rfb3B0aW9uJyksCiAgICAg ICAgJ2xhYmVsX3Bvc2l0aW9uJyA9PiAnYWZ0ZXInLAogICAgICAgICduYW1lJyAgICAgICAg ICAgPT4gJycsCiAgICAgICAgJ3JlcXVpcmVkJyAgICAgICA9PiBudWxsLAogICAgICAgICd2 YWx1ZScgICAgICAgICAgPT4gbnVsbCwKICAgICksICRhdHRzKSk7CgogICAgc3RhdGljICRj dXJfbmFtZSA9IGFycmF5KCk7CiAgICBzdGF0aWMgJGN1cl9yZXEgPSBhcnJheSgpOwogICAg c3RhdGljICRjdXJfZ3JvdXAgPSBudWxsOwoKICAgIGlmICghJGdyb3VwKSB7CiAgICAgICAg aWYgKCRjdXJfZ3JvdXAgPT09IG51bGwpIHsKICAgICAgICAgICAgJGdyb3VwID0gZ1R4dCgn Y29tX2Nvbm5lY3RfcmFkaW8nKTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAkZ3Jv dXAgPSAkY3VyX2dyb3VwOwogICAgICAgIH0KICAgIH0gZWxzZSB7CiAgICAgICAgaWYgKCEk bmFtZSkgewogICAgICAgICAgICAkbmFtZSA9ICRncm91cDsKICAgICAgICB9CiAgICB9Cgog ICAgaWYgKGlzc2V0KCRjdXJfbmFtZVskZ3JvdXBdKSkgewogICAgICAgIGlmICghJG5hbWUp IHsKICAgICAgICAgICAgJG5hbWUgPSAkY3VyX25hbWVbJGdyb3VwXTsKICAgICAgICB9CiAg ICB9IGVsc2UgewogICAgICAgIGlmICgkbmFtZSkgewogICAgICAgICAgICAkY3VyX25hbWVb JGdyb3VwXSA9ICRuYW1lOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICRuYW1lID0g JGN1cl9uYW1lWyRncm91cF0gPSBnVHh0KCdjb21fY29ubmVjdF9yYWRpbycpOwogICAgICAg IH0KICAgIH0KCiAgICBpZiAoaXNzZXQoJGN1cl9yZXFbJGdyb3VwXSkpIHsKICAgICAgICBp ZiAoJHJlcXVpcmVkID09PSBudWxsKSB7CiAgICAgICAgICAgICRyZXF1aXJlZCA9ICRjdXJf cmVxWyRncm91cF07CiAgICAgICAgfQogICAgfSBlbHNlIHsKICAgICAgICBpZiAoJHJlcXVp cmVkID09PSBudWxsKSB7CiAgICAgICAgICAgICRyZXF1aXJlZCA9ICRjdXJfcmVxWyRncm91 cF0gPSAkY29tX2Nvbm5lY3RfZmxhZ3NbJ3JlcXVpcmVkJ107CiAgICAgICAgfSBlbHNlIHsK ICAgICAgICAgICAgJGN1cl9yZXFbJGdyb3VwXSA9ICRyZXF1aXJlZDsKICAgICAgICB9CiAg ICB9CgogICAgJGN1cl9ncm91cCA9ICRncm91cDsKCiAgICAkaWQgPSAncScgLiBtZDUoJG5h bWUgLiAnPT4nIC4gJGxhYmVsKTsKICAgICRuYW1lID0gY29tX2Nvbm5lY3RfbGFiZWwybmFt ZSgkbmFtZSk7CiAgICAkZG9jdHlwZSA9IGdldF9wcmVmKCdkb2N0eXBlJywgJ3hodG1sJyk7 CiAgICAkY29tX2Nvbm5lY3RfZ3JvdXBbJG5hbWVdWyRpZF1bJ3JlcSddID0gJHJlcXVpcmVk OwogICAgJGNvbV9jb25uZWN0X2dyb3VwWyRuYW1lXVskaWRdWydsYWJlbCddID0gJGdyb3Vw OwoKICAgIGlmICgkY29tX2Nvbm5lY3Rfc3VibWl0KSB7CiAgICAgICAgJHRvQ29tcGFyZSA9 ICgkdmFsdWUgPT09IG51bGwgPyAkaWQgOiAkdmFsdWUpOwogICAgICAgICRpc19jaGVja2Vk ID0gKHBzKCRuYW1lKSA9PSAkdG9Db21wYXJlKTsKICAgICAgICAkY29tX2Nvbm5lY3RfZ3Jv dXBbJG5hbWVdWyRpZF1bJ2lzU2V0J10gPSAkaXNfY2hlY2tlZDsKCiAgICAgICAgaWYgKCRp c19jaGVja2VkIHx8ICRjaGVja2VkICYmICFpc3NldCgkY29tX2Nvbm5lY3RfdmFsdWVzWyRu YW1lXSkpIHsKICAgICAgICAgICAgY29tX2Nvbm5lY3Rfc3RvcmUoJG5hbWUsICRncm91cCwg KCR2YWx1ZSAhPT0gbnVsbCA/ICR2YWx1ZSA6ICRsYWJlbCkpOwogICAgICAgIH0KICAgIH0g ZWxzZSB7CiAgICAgICAgJGlzX2NoZWNrZWQgPSAkY2hlY2tlZDsKICAgIH0KCiAgICAvLyBD b3JlIGF0dHJpYnV0ZXMuCiAgICAkYXR0ciA9IGNvbV9jb25uZWN0X2J1aWxkX2F0dHMoYXJy YXkoCiAgICAgICAgJ2lkJyAgICA9PiAkaWQsCiAgICAgICAgJ25hbWUnICA9PiAkbmFtZSwK ICAgICAgICAndmFsdWUnID0+ICgkdmFsdWUgIT09IG51bGwgPyAkdmFsdWUgOiAkaWQpLAog ICAgKSk7CgogICAgLy8gSFRNTDUgYXR0cmlidXRlcy4KICAgICRyZXF1aXJlZCA9ICgkcmVx dWlyZWQpID8gJ3JlcXVpcmVkJyA6ICcnOwogICAgaWYgKCRkb2N0eXBlICE9PSAneGh0bWwn KSB7CiAgICAgICAgJGF0dHIgKz0gY29tX2Nvbm5lY3RfYnVpbGRfYXR0cyhhcnJheSgKICAg ICAgICAgICAgJ2Zvcm0nICAgICA9PiAkaHRtbF9mb3JtLAogICAgICAgICAgICAncmVxdWly ZWQnID0+ICRyZXF1aXJlZCwKICAgICAgICApKTsKICAgIH0KCiAgICAvLyBHbG9iYWwgYXR0 cmlidXRlcy4KICAgICRhdHRyICs9IGNvbV9jb25uZWN0X2J1aWxkX2F0dHMoJGNvbV9jb25u ZWN0X2dsb2JhbHMsICRhdHRzKTsKCiAgICAkY2xhc3NlcyA9IGFycmF5KCk7CgogICAgZm9y ZWFjaCAoYXJyYXkoJGNsYXNzLCAoJHJlcXVpcmVkID8gJGNvbV9jb25uZWN0X2ZsYWdzWydj bHNfcmVxdWlyZWQnXSA6ICcnKSwgJGlzRXJyb3IpIGFzICRjbHMpIHsKICAgICAgICBpZiAo JGNscykgewogICAgICAgICAgICAkY2xhc3Nlc1tdID0gJGNsczsKICAgICAgICB9CiAgICB9 CgogICAgJGNsYXNzU3RyID0gKCRjbGFzc2VzID8gJyBjbGFzcz0iJyAuIGltcGxvZGUoJyAn LCAkY2xhc3NlcykgLiAnIicgOiAnJyk7CiAgICAkbGFiZWxTdHIgPSAnPGxhYmVsIGZvcj0i JyAuICRpZCAuICciJyAuICRjbGFzc1N0ciAuICc+JyAuIHR4cHNwZWNpYWxjaGFycygkbGFi ZWwpIC4gJzwvbGFiZWw+JzsKCiAgICByZXR1cm4gKCRsYWJlbF9wb3NpdGlvbiA9PT0gJ2Jl Zm9yZScgPyAkbGFiZWxTdHIgLiAkYnJlYWsgOiAnJykgLgogICAgICAgICc8aW5wdXQgdHlw ZT0icmFkaW8iJy4gJGNsYXNzU3RyIC4gKCRhdHRyID8gJyAnIC4gaW1wbG9kZSgnICcsICRh dHRyKSA6ICcnKSAuCiAgICAgICAgICAgICggJGlzX2NoZWNrZWQgPyAnIGNoZWNrZWQnIC4g KCgkZG9jdHlwZSA9PT0gJ3hodG1sJykgPyAnPSJjaGVja2VkIicgOiAnJykuICcgLz4nIDog JyAvPicpIC4KICAgICAgICAoJGxhYmVsX3Bvc2l0aW9uID09PSAnYWZ0ZXInID8gJGJyZWFr IC4gJGxhYmVsU3RyIDogJycpOwp9CgovKioKICogVGFnOiBTdG9yZSBzZXJ2ZXIgaW5mb3Jt YXRpb24gaW4gdGhlIHBheWxvYWQuCiAqCiAqIEBwYXJhbSAgYXJyYXkgICRhdHRzICBUYWcg YXR0cmlidXRlcwogKi8KZnVuY3Rpb24gY29tX2Nvbm5lY3Rfc2VydmVyaW5mbygkYXR0cykK ewogICAgZ2xvYmFsICRjb21fY29ubmVjdF9zdWJtaXQ7CgogICAgZXh0cmFjdChjb21fY29u bmVjdF9sQXR0cyhhcnJheSgKICAgICAgICAnbGFiZWwnID0+ICcnLAogICAgICAgICduYW1l JyAgPT4gJycsCiAgICApLCAkYXR0cykpOwoKICAgIGlmIChlbXB0eSgkbmFtZSkpIHsKICAg ICAgICAkbmFtZSA9IGNvbV9jb25uZWN0X2xhYmVsMm5hbWUoJGxhYmVsKTsKICAgIH0KCiAg ICBpZiAoc3RybGVuKCRuYW1lKSAmJiAkY29tX2Nvbm5lY3Rfc3VibWl0KSB7CiAgICAgICAg aWYgKCEkbGFiZWwpIHsKICAgICAgICAgICAgJGxhYmVsID0gJG5hbWU7CiAgICAgICAgfQoK ICAgICAgICBjb21fY29ubmVjdF9zdG9yZSgkbmFtZSwgJGxhYmVsLCBzZXJ2ZXJTZXQoJG5h bWUpKTsKICAgIH0KfQoKLyoqCiAqIFRhZzogU3RvcmUgYSBzZWNyZXQgdmFsdWUgaW4gdGhl IHBheWxvYWQuCiAqCiAqIEBwYXJhbSAgYXJyYXkgICRhdHRzICBUYWcgYXR0cmlidXRlcwog Ki8KZnVuY3Rpb24gY29tX2Nvbm5lY3Rfc2VjcmV0KCRhdHRzLCAkdGhpbmcgPSBudWxsKQp7 CiAgICBnbG9iYWwgJGNvbV9jb25uZWN0X3N1Ym1pdDsKCiAgICBleHRyYWN0KGNvbV9jb25u ZWN0X2xBdHRzKGFycmF5KAogICAgICAgICdsYWJlbCcgPT4gZ1R4dCgnY29tX2Nvbm5lY3Rf c2VjcmV0JyksCiAgICAgICAgJ25hbWUnICA9PiAnJywKICAgICAgICAndmFsdWUnID0+ICcn LAogICAgKSwgJGF0dHMpKTsKCiAgICAkbmFtZSA9IGNvbV9jb25uZWN0X2xhYmVsMm5hbWUo JG5hbWUgPyAkbmFtZSA6ICRsYWJlbCk7CgogICAgaWYgKCRjb21fY29ubmVjdF9zdWJtaXQp IHsKICAgICAgICBpZiAoJHRoaW5nKSB7CiAgICAgICAgICAgICR2YWx1ZSA9IHRyaW0ocGFy c2UoJHRoaW5nKSk7CiAgICAgICAgfQoKICAgICAgICBjb21fY29ubmVjdF9zdG9yZSgkbmFt ZSwgJGxhYmVsLCAkdmFsdWUpOwogICAgfQoKICAgIHJldHVybiAnJzsKfQoKLyoqCiAqIFRh ZzogUmVuZGVyIGEgc3VibWl0IGJ1dHRvbi4KICoKICogSWYgdGhlIGNvbnRhaW5lciBpcyB1 c2VkLCBhIGJ1dHRvbiB0YWcgaXMgcmVuZGVyZWQsIG90aGVyd2lzZSBhCiAqIHN0YW5kYXJk IGlucHV0IHR5cGU9c3VibWl0IGJ1dHRvbiBpcyByZW5kZXJlZC4KICoKICogQHBhcmFtICBh cnJheSAgJGF0dHMgIFRhZyBhdHRyaWJ1dGVzCiAqIEBwYXJhbSAgc3RyaW5nICR0aGluZyBU YWcncyBjb250YWluZXIKICogQHJldHVybiBzdHJpbmcgSFRNTAogKi8KZnVuY3Rpb24gY29t X2Nvbm5lY3Rfc3VibWl0KCRhdHRzLCAkdGhpbmcgPSBudWxsKQp7CiAgICBnbG9iYWwgJGNv bV9jb25uZWN0X2ZsYWdzOwoKICAgIGV4dHJhY3QoY29tX2Nvbm5lY3RfbEF0dHMoYXJyYXko CiAgICAgICAgJ2NsYXNzJyAgICAgPT4gJ2NvbVN1Ym1pdCcsCiAgICAgICAgJ2h0bWxfZm9y bScgPT4gJGNvbV9jb25uZWN0X2ZsYWdzWyd0aGlzX2Zvcm0nXSwKICAgICAgICAnbGFiZWwn ICAgICA9PiBnVHh0KCdjb21fY29ubmVjdF9zZW5kJyksCiAgICApLCAkYXR0cykpOwoKICAg ICRsYWJlbCA9IHR4cHNwZWNpYWxjaGFycygkbGFiZWwpOwogICAgJGRvY3R5cGUgPSBnZXRf cHJlZignZG9jdHlwZScsICd4aHRtbCcpOwoKICAgICRhdHRyID0gYXJyYXkoKTsKCiAgICAv LyBIVE1MNSBhdHRyaWJ1dGVzLgogICAgaWYgKCRkb2N0eXBlICE9PSAneGh0bWwnKSB7CiAg ICAgICAgJGF0dHIgKz0gY29tX2Nvbm5lY3RfYnVpbGRfYXR0cyhhcnJheSgKICAgICAgICAg ICAgJ2Zvcm0nID0+ICRodG1sX2Zvcm0sCiAgICAgICAgKSk7CiAgICB9CgogICAgLy8gR2xv YmFsIGF0dHJpYnV0ZXMuCiAgICAkYXR0ciArPSBjb21fY29ubmVjdF9idWlsZF9hdHRzKCRj b21fY29ubmVjdF9nbG9iYWxzLCAkYXR0cyk7CgogICAgJGNsYXNzU3RyID0gKCRjbGFzcyA/ ICcgY2xhc3M9IicgLiAkY2xhc3MgLiAnIicgOiAnJyk7CgogICAgaWYgKHN0cmxlbigkdGhp bmcpKSB7CiAgICAgICAgcmV0dXJuICc8YnV0dG9uIHR5cGU9InN1Ym1pdCInIC4gJGNsYXNz U3RyIC4gJyBuYW1lPSJjb21fY29ubmVjdF9zdWJtaXQiIHZhbHVlPSInIC4gJGxhYmVsIC4g JyInIC4gKCRhdHRyID8gJyAnIC4gaW1wbG9kZSgnICcsICRhdHRyKSA6ICcnKSAuICc+JyAu ICgkdGhpbmcgPyB0cmltKHBhcnNlKCR0aGluZykpIDogJGxhYmVsKSAuICc8L2J1dHRvbj4n OwogICAgfSBlbHNlIHsKICAgICAgICByZXR1cm4gJzxpbnB1dCB0eXBlPSJzdWJtaXQiJyAu ICRjbGFzc1N0ciAuICcgbmFtZT0iY29tX2Nvbm5lY3Rfc3VibWl0IiB2YWx1ZT0iJyAuICRs YWJlbCAuICciJyAuICgkYXR0ciA/ICcgJyAuIGltcGxvZGUoJyAnLCAkYXR0cikgOiAnJykg LiAnIC8+JzsKICAgIH0KfQoKLyoqCiAqIFRhZzogUmVuZGVyIGEgbGluayB0byBhbGxvdyBz b21lb25lIHRvIGZvcndhcmQgYSBwYWdlIHRvIGEgZnJpZW5kLgogKgogKiBAcGFyYW0gIGFy cmF5ICAkYXR0cyAgVGFnIGF0dHJpYnV0ZXMKICogQHJldHVybiBzdHJpbmcgSFRNTAogKi8K ZnVuY3Rpb24gY29tX2Nvbm5lY3Rfc2VuZF9hcnRpY2xlKCRhdHRzKQp7CiAgICBpZiAoIWlz c2V0KCRfUkVRVUVTVFsnY29tX2Nvbm5lY3Rfc2VuZF9hcnRpY2xlJ10pKSB7CiAgICAgICAg JGxpbmt0ZXh0ID0gKGVtcHR5KCRhdHRzWydsaW5rdGV4dCddKSkgPyBnVHh0KCdjb21fY29u bmVjdF9zZW5kX2FydGljbGUnKSA6ICRhdHRzWydsaW5rdGV4dCddOwogICAgICAgICRqb2lu ID0gKGVtcHR5KCRfU0VSVkVSWydRVUVSWV9TVFJJTkcnXSkpID8gJz8nIDogJyYnOwogICAg ICAgICRocmVmID0gJF9TRVJWRVJbJ1JFUVVFU1RfVVJJJ10gLiAkam9pbiAuICdjb21fY29u bmVjdF9zZW5kX2FydGljbGU9eWVzJzsKCiAgICAgICAgcmV0dXJuICc8YSBocmVmPSInIC4g dHhwc3BlY2lhbGNoYXJzKCRocmVmKSAuICciIHJlbD0ibm9mb2xsb3ciPicgLiB0eHBzcGVj aWFsY2hhcnMoJGxpbmt0ZXh0KSAuICc8L2E+JzsKICAgIH0KCiAgICByZXR1cm47Cn0KCi8q KgogKiBQZXJmb3JtIHBvc3QtcHJvY2Vzc2luZyBmb3IgYWdncmVnYXRlIChncm91cCkgY29u dHJvbHMgbGlrZSByYWRpbyBzZXRzLgogKgogKiBAdG9kbyBDYW4gdGhpcyBiZSBkb25lIGFu eSBuZWF0ZXI/CiAqIEB0b2RvIFNob3VsZCB0aGlzIGJlIGV4cG9zZWQgYXMgYSBjYWxsYmFj ayB0byBhbGxvdyBwbHVnaW5zIHRvIGV4dGVuZCB0aGUgZnVuY3Rpb25hbGl0eT8KICovCmZ1 bmN0aW9uIGNvbV9jb25uZWN0X2dyb3VwX3ZhbGlkYXRlKCkKewogICAgZ2xvYmFsICRjb21f Y29ubmVjdF9ncm91cCwgJGNvbV9jb25uZWN0X2Vycm9yOwoKICAgICRmbGFncyA9IGFycmF5 KCk7CgogICAgaWYgKCRjb21fY29ubmVjdF9ncm91cCkgewogICAgICAgIGZvcmVhY2ggKCRj b21fY29ubmVjdF9ncm91cCBhcyAka2V5ID0+ICRncnApIHsKICAgICAgICAgICAgZm9yZWFj aCAoJGdycCBhcyAkaWQgPT4gJGF0dHMpIHsKICAgICAgICAgICAgICAgICRmbGFnc1ska2V5 XVsnbGFiZWwnXSA9ICRhdHRzWydsYWJlbCddOwoKICAgICAgICAgICAgICAgIGlmICghZW1w dHkoJGF0dHNbJ3JlcSddKSAmJiAhaXNzZXQoJGZsYWdzWyRrZXldWydyZXEnXSkpIHsKICAg ICAgICAgICAgICAgICAgICAkZmxhZ3NbJGtleV1bJ3JlcSddID0gMTsKICAgICAgICAgICAg ICAgIH0KCiAgICAgICAgICAgICAgICBpZiAoIWVtcHR5KCRhdHRzWydpc1NldCddKSAmJiAh aXNzZXQoJGZsYWdzWyRrZXldWydpc1NldCddKSkgewogICAgICAgICAgICAgICAgICAgICRm bGFnc1ska2V5XVsnaXNTZXQnXSA9IDE7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAg IH0KICAgICAgICB9CgogICAgICAgIGZvcmVhY2ggKCRmbGFncyBhcyAka2V5ID0+ICRkYXRh KSB7CiAgICAgICAgICAgIGlmICghZW1wdHkoJGRhdGFbJ3JlcSddKSAmJiAhaXNzZXQoJGRh dGFbJ2lzU2V0J10pKSB7CiAgICAgICAgICAgICAgICAkY29tX2Nvbm5lY3RfZXJyb3JbXSA9 IGdUeHQoJ2NvbV9jb25uZWN0X2ZpZWxkX21pc3NpbmcnLCBhcnJheSgne2ZpZWxkfScgPT4g dHhwc3BlY2lhbGNoYXJzKCRkYXRhWydsYWJlbCddKSkpOwogICAgICAgICAgICB9CiAgICAg ICAgfQogICAgfQp9CgovKioKICogUHJvY2VzcyB0YWcgYXR0cmlidXRlcyBhbmQgc2V0IGRl ZmF1bHRzLgogKgogKiBIYW5kbGVzIEhUTUwgJ2dsb2JhbCcgYXR0cmlidXRlcyB0b28sIHRo b3VnaCB3aGF0IHdlIGNvbnNpZGVyIGdsb2JhbCBkaWZmZXJzIHNsaWdodGx5CiAqIGZyb20g dGhlIFczQzogYW55IGF0dHJpYnV0ZXMgdGhhdCBhcHBseSB0byBtb3N0IG9mIHRoZSA8aW5w dXQ+IHRhZ3MgaXMgY29uc2lkZXJlZAogKiBnbG9iYWwuIEp1c3Qgc2F2ZXMgcmVwZXRpdGl2 ZSBjb2RlIGluIGVhY2ggdGFnIGhhbmRsZXIuCiAqCiAqIE5vdGUgdGhhdCAnY2xhc3MnIGlz IG9taXR0ZWQsIGJlY2F1c2UgdGhhdCBoYXMgZGlmZmVyZW50IGRlZmF1bHQgdmFsdWVzIHBl ciBpbnB1dAogKiB3aWRnZXQsIHNvIGl0IGlzIGRlYWx0IHdpdGggZXhwbGljaXRseSBpbiBl YWNoIHRhZyBoYW5kbGVyLgogKgogKiBAcGFyYW0gIGFycmF5ICRhcnIgIEFjY2VwdGFibGUg dGFnIGF0dHJpYnV0ZXMKICogQHBhcmFtICBhcnJheSAkYXR0cyBVc2VyLXN1Ym1pdHRlZCBh dHRyaWJ1dGUgdmFsdWVzCiAqIEByZXR1cm4gYXJyYXkKICovCmZ1bmN0aW9uIGNvbV9jb25u ZWN0X2xBdHRzKCRwYWlycywgJGF0dHMpCnsKICAgIGxBdHRzKGFycmF5KCdsYWJlbCcgPT4g JycpLCAkYXR0cywgZmFsc2UpOwoKICAgIGZvcmVhY2ggKGFycmF5KCdidXR0b24nLCAnY29w eXNlbmRlcicsICdjaGVja2VkJywgJ3JlcXVpcmVkJywgJ3NlbmRfYXJ0aWNsZScsICdzaG93 X2lucHV0JywgJ3Nob3dfZXJyb3InKSBhcyAka2V5KSB7CiAgICAgICAgaWYgKGlzc2V0KCRh dHRzWyRrZXldKSkgewogICAgICAgICAgICAkYXR0c1ska2V5XSA9ICgkYXR0c1ska2V5XSA9 PT0gJ3llcycgfHwgaW50dmFsKCRhdHRzWyRrZXldKSkgPyAxIDogMDsKICAgICAgICB9CiAg ICB9CgogICAgaWYgKGlzc2V0KCRhdHRzWydicmVhayddKSAmJiAkYXR0c1snYnJlYWsnXSA9 PT0gJ2JyJykgewogICAgICAgICRhdHRzWydicmVhayddID0gJzxiciAvPic7CiAgICB9Cgog ICAgJGNvbV9jb25uZWN0X2dsb2JhbHMgPSBhcnJheSgKICAgICAgICAnYWNjZXNza2V5JyAg PT4gJycsCiAgICAgICAgJ2F1dG9mb2N1cycgID0+ICcnLAogICAgICAgICdkaXInICAgICAg ICA9PiAnJywKICAgICAgICAnZGlzYWJsZWQnICAgPT4gJycsCiAgICAgICAgJ2hpZGRlbicg ICAgID0+ICcnLAogICAgICAgICdpZCcgICAgICAgICA9PiAnJywKICAgICAgICAnbGFuZycg ICAgICAgPT4gJycsCiAgICAgICAgJ2xpc3QnICAgICAgID0+ICcnLAogICAgICAgICdyZWFk b25seScgICA9PiAnJywKICAgICAgICAnc3BlbGxjaGVjaycgPT4gJycsCiAgICAgICAgJ3N0 eWxlJyAgICAgID0+ICcnLAogICAgICAgICd0YWJpbmRleCcgICA9PiAnJywKICAgICAgICAn dGl0bGUnICAgICAgPT4gJycsCiAgICAgICAgJ3RyYW5zbGF0ZScgID0+ICcnLAogICAgKTsK CiAgICBmb3JlYWNoICgkYXR0cyBhcyAkbmFtZSA9PiAkdmFsdWUpIHsKICAgICAgICBpZiAo YXJyYXlfa2V5X2V4aXN0cygkbmFtZSwgJHBhaXJzKSB8fCBzdWJzdHIoJG5hbWUsIDAsIDIp ID09PSAnb24nIHx8IGFycmF5X2tleV9leGlzdHMoJG5hbWUsICRjb21fY29ubmVjdF9nbG9i YWxzKSkgewogICAgICAgICAgICAkcGFpcnNbJG5hbWVdID0gJHZhbHVlOwogICAgICAgIH0g ZWxzZWlmIChnZXRfcHJlZigncHJvZHVjdGlvbl9zdGF0dXMnKSAhPSAnbGl2ZScpIHsKICAg ICAgICAgICAgdHJpZ2dlcl9lcnJvcihnVHh0KCd1bmtub3duX2F0dHJpYnV0ZScsIGFycmF5 KCd7YXR0fScgPT4gJG5hbWUpKSk7CiAgICAgICAgfQogICAgfQoKICAgICRwYWlyc1snY29t X2Nvbm5lY3RfZ2xvYmFscyddID0gJGNvbV9jb25uZWN0X2dsb2JhbHM7CgogICAgcmV0dXJu ICgkcGFpcnMpID8gJHBhaXJzIDogZmFsc2U7Cn0KCi8qKgogKiBCdWlsZCBhIHNhbml0aXpl ZCwgdW5pcXVlIGF0dHJpYnV0ZSBhcnJheSBmcm9tIHRoZSBnaXZlbiBwYWlycy4KICoKICog SWYgY2FsbGVkIG11bHRpcGxlIHRpbWVzLCBlYXJsaWVyIHZhbHVlcyBzdXBlcnNlZGUgbGF0 ZXIgdmFsdWVzCiAqIGlmIHRoZSBrZXlzIGNsYXNoLgogKgogKiBAcGFyYW0gIGFycmF5ICRw YWlycyAgICBBdHRyaWJ1dGUgdHVwbGVzIHRvIGNvbXBpbGUKICogQHBhcmFtICBhcnJheSAk ZGVmYXVsdHMgQXR0cmlidXRlIHZhbHVlcyB0byB1c2UgaWYgdGhlICRwYWlycyB0dXBsZSB2 YWx1ZSBpcyBlbXB0eQogKiBAcmV0dXJuIGFycmF5CiAqLwpmdW5jdGlvbiBjb21fY29ubmVj dF9idWlsZF9hdHRzKCRwYWlycywgJGRlZmF1bHRzID0gYXJyYXkoKSkKewogICAgJGF0dHIg PSBhcnJheSgpOwoKICAgICRib29sZWFucyA9IGFycmF5KAogICAgICAgICdhdXRvZm9jdXMn LAogICAgICAgICdjaGVja2VkJywKICAgICAgICAnZGlzYWJsZWQnLAogICAgICAgICdoaWRk ZW4nLAogICAgICAgICdtdWx0aXBsZScsCiAgICAgICAgJ3JlYWRvbmx5JywKICAgICAgICAn cmVxdWlyZWQnLAogICAgICAgICdzZWxlY3RlZCcsCiAgICAgICAgKTsKCiAgICBmb3JlYWNo ICgkcGFpcnMgYXMgJGtleSA9PiAkdmFsdWUpIHsKICAgICAgICBpZiAoJHZhbHVlICE9PSAn JyAmJiAkdmFsdWUgIT09IG51bGwpIHsKICAgICAgICAgICAgJGF0dHJbJGtleV0gPSAka2V5 IC4gKGluX2FycmF5KCRrZXksICRib29sZWFucykgPyAnJyA6ICc9IicgLiB0eHBzcGVjaWFs Y2hhcnMoJHZhbHVlKSAuICciJyk7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgaWYg KGlzc2V0KCRkZWZhdWx0c1ska2V5XSkpIHsKICAgICAgICAgICAgICAgICRhdHRyWyRrZXld ID0gJGtleSAuIChpbl9hcnJheSgka2V5LCAkYm9vbGVhbnMpID8gJycgOiAnPSInIC4gdHhw c3BlY2lhbGNoYXJzKCRkZWZhdWx0c1ska2V5XSkgLiAnIicpOwogICAgICAgICAgICB9CiAg ICAgICAgfQogICAgfQoKICAgIHJldHVybiAkYXR0cjsKfQoKLyoqCiAqIFJlcGxhY2UgbnVs bHMgYW5kIG5ld2xpbmVzIGluIGNvbnRlbnQgd2l0aCBzcGFjZXMuCiAqCiAqIEBwYXJhbSBz dHJpbmcgJHN0ciAgICBTdHJpbmcgdG8gc2FuaXRpemUKICogQHBhcmFtIGJvb2wgICAkaGVh ZGVyIFdoZXRoZXIgdGhlIHN0cmluZyBpcyBhIGhlYWRlciBvciBub3QKICovCmZ1bmN0aW9u IGNvbV9jb25uZWN0X3N0cmlwKCRzdHIsICRoZWFkZXIgPSB0cnVlKQp7CiAgICBpZiAoJGhl YWRlcikgewogICAgICAgIC8vIFRPRE86IHN0cmlwX3JuIHdpbGwgYmUgZGVwcmVjYXRlZCBp biA0LjYuMC4KICAgICAgICAkc3RyID0gc3RyaXBfcm4oJHN0cik7CiAgICB9CgogICAgcmV0 dXJuIHByZWdfcmVwbGFjZSgnL1tceDAwXS8nLCAnICcsICRzdHIpOwp9CgovKioKICogSGFu ZGxlIGNvbnRlbnQgZGVsaXZlcnkgb2YgcGF5bG9hZC4KICoKICogVHJpZ2dlcnMgYSAnY29t Y29ubmVjdC5kZWxpdmVyJyBjYWxsYmFjayBldmVudCB0byBvdmVycmlkZSBvciBhdWdtZW50 IHRoZQogKiBkZWxpdmVyeSBtZWNoYW5pc20uIFRoaXJkIHBhcnR5IHBsdWdpbnMgY2FuIG1h a2UgYWx0ZXJhdGlvbnMgdG8gdGhlICRwYXlsb2FkLAogKiB0aGVuIHJldHVybiBvbmUgb2Yg dGhlIHN0cmluZ3M6CiAqICAtPiAiY29tY29ubmVjdC5zZW5kIiAob3Igbm8gcmV0dXJuIHZh bHVlKSB0byBhbGxvdyB0aGUgcGx1Z2luIHRvIGNvbnRpbnVlIG1haWxpbmcgYWZ0ZXIgdGhl IDNyZCBwYXJ0eSBwbHVnaW4gY29tcGxldGVzCiAqICAtPiAiY29tY29ubmVjdC5za2lwIiB0 byBza2lwIGNvbV9jb25uZWN0J3MgbWFpbGluZyAoaS5lLiB0aGUgM3JkIHBhcnR5IGhhbmRs ZXMgbWFpbGluZykgYW5kIHJldHVybiAnc3VjY2VzcycKICogIC0+ICJjb21jb25uZWN0LmZh aWwiIHRvIHNraXAgY29tX2Nvbm5lY3QncyBtYWlsaW5nIGFuZCByZXR1cm4gJ2ZhaWwnCiAq CiAqIEJ5IGhvb2tpbmcgaW50byB0aGUgY2FsbGJhY2sncyBzdGVwIHlvdSBjYW4gdGFyZ2V0 IGVpdGhlciB0aGUgbWFpbiAnc2VuZCcKICogcHJvY2VzcyBvciB0aGUgJ2NvcHlzZW5kZXIn IHByb2Nlc3MuIEV4YW1wbGVzIG9mIHRoaW5ncyB5b3UgY291bGQgZG86CiAqIC0+IEFkZCBN dWx0aS1wYXJ0IE1JTUUgaGVhZGVycyBmb3IgSFRNTCBlbWFpbHMuCiAqIC0+IEFkZCBDQzog b3IgQkNDOiBmaWVsZHMuCiAqIC0+IFN1YnNjcmliZSBwZW9wbGUgdG8gbWFpbGluZyBsaXN0 cy4KICogLT4gSGFuZGxlIHRoZSBtYWlsaW5nIHByb2Nlc3MgaW5kZXBlbmRlbnRseSBvZiBU ZXh0cGF0dGVybi4KICoKICogQHBhcmFtIHN0cmluZyAkdG8gICAgICBEZWxpdmVyeSBhZGRy ZXNzCiAqIEBwYXJhbSBzdHJpbmcgJHN1YmplY3QgU3ViamVjdCBvZiBtZXNzYWdlCiAqIEBw YXJhbSBzdHJpbmcgJGJvZHkgICAgTWVzc2FnZSBjb250ZW50CiAqIEBwYXJhbSBhcnJheSAg JGhlYWRlcnMgTWVzc2FnZSBoZWFkZXJzIGFzIHR1cGxlcwogKiBAcGFyYW0gYXJyYXkgICRm aWVsZHMgIE1lc3NhZ2UgZmllbGQgbmFtZXMgYW5kIGNvbnRlbnQgYXMgdHVwbGVzCiAqIEBw YXJhbSBhcnJheSAgJGZsYWdzICAgU2lnbmFscyB0byBnb3Zlcm4gZGVsaXZlcnkgLyBjYWxs YmFjayBiZWhhdmlvdXIKICovCmZ1bmN0aW9uIGNvbV9jb25uZWN0X2RlbGl2ZXIoJHRvLCAk c3ViamVjdCwgJGJvZHksICRoZWFkZXJzLCAkZmllbGRzLCAkZmxhZ3MpCnsKICAgICRwYXls b2FkID0gYXJyYXkoCiAgICAgICAgJ3RvJyAgICAgID0+ICR0bywKICAgICAgICAnc3ViamVj dCcgPT4gJHN1YmplY3QsCiAgICAgICAgJ2hlYWRlcnMnID0+ICRoZWFkZXJzLAogICAgICAg ICdib2R5JyAgICA9PiAkYm9keSwKICAgICAgICAnZmllbGRzJyAgPT4gJGZpZWxkcywKICAg ICk7CgogICAgJGZsYXZvdXIgPSAoJGZsYWdzWydpc0NvcHknXSA9PT0gdHJ1ZSkgPyAnY29w eXNlbmRlcicgOiAnc2VuZCc7CgogICAgLy8gQWxsb3cgcGx1Z2lucyB0byBvdmVycmlkZSBv ciBhbHRlciBkZWZhdWx0IGFjdGlvbiAobWFpbCkgaWYgcmVxdWlyZWQuCiAgICAvLyBUT0RP OiB1c2UgaGFzX2hhbmRsZXIoKSBmcm9tIDQuNi4wKy4KICAgICRyZXQgPSBjYWxsYmFja19l dmVudF9yZWYoJ2NvbWNvbm5lY3QuZGVsaXZlcicsICRmbGF2b3VyLCAwLCAkcGF5bG9hZCk7 CgogICAgaWYgKGluX2FycmF5KCdjb21jb25uZWN0LmZhaWwnLCAkcmV0KSkgewogICAgICAg IHJldHVybiBmYWxzZTsKICAgIH0gZWxzZWlmIChpbl9hcnJheSgnY29tY29ubmVjdC5za2lw JywgJHJldCkpIHsKICAgICAgICByZXR1cm4gdHJ1ZTsKICAgIH0KCiAgICBleHRyYWN0KCRw YXlsb2FkKTsKCiAgICAkc210cF9mcm9tID0gZ2V0X3ByZWYoJ3NtdHBfZnJvbScpOwoKICAg IGlmICghaXNfY2FsbGFibGUoJ21haWwnKSkgewogICAgICAgIHJldHVybiAoZ2V0X3ByZWYo J3Byb2R1Y3Rpb25fc3RhdHVzJykgPT09ICdsaXZlJykKICAgICAgICAgICAgPyBnVHh0KCdj b21fY29ubmVjdF9tYWlsX3NvcnJ5JykKICAgICAgICAgICAgOiBnVHh0KCd3YXJuX21haWxf dW5hdmFpbGFibGUnKTsKICAgIH0KCiAgICAkc2VwID0gKCFlbXB0eSgkaGVhZGVyc1snc2Vw YXJhdG9yJ10pKSA/ICRoZWFkZXJzWydzZXBhcmF0b3InXSA6IChJU19XSU4gPyAiXHJcbiIg OiAiXG4iKTsKICAgICR4ZmVyX2VuY29kaW5nID0gKCFlbXB0eSgkaGVhZGVyc1sneGZlcl9l bmNvZGluZyddKSkgPyAkaGVhZGVyc1sneGZlcl9lbmNvZGluZyddIDogJzhiaXQnOwogICAg JGNvbnRlbnRfdHlwZSA9ICghZW1wdHkoJGhlYWRlcnNbJ2NvbnRlbnRfdHlwZSddKSkgPyAk aGVhZGVyc1snY29udGVudF90eXBlJ10gOiAndGV4dC9wbGFpbic7CiAgICAkcmVwbHkgPSAo IWVtcHR5KCRoZWFkZXJzWydyZXBseSddKSkgPyAkaGVhZGVyc1sncmVwbHknXSA6ICcnOwog ICAgJGNoYXJzZXQgPSAoIWVtcHR5KCRoZWFkZXJzWydjaGFyc2V0J10pKSA/ICRoZWFkZXJz WydjaGFyc2V0J10gOiAnVVRGLTgnOwogICAgJHhfbWFpbGVyID0gKCFlbXB0eSgkaGVhZGVy c1sneF9tYWlsZXInXSkpID8gJGhlYWRlcnNbJ3hfbWFpbGVyJ10gOiAnVGV4dHBhdHRlcm4g KGNvbV9jb25uZWN0KSc7CgogICAgJGhlYWRlcl9zdHJpbmcgPSAnRnJvbTogJyAuICRoZWFk ZXJzWydmcm9tJ10gLgogICAgICAgICgkcmVwbHkgPyAoJHNlcCAuICdSZXBseS1UbzogJyAu ICRyZXBseSkgOiAnJykgLgogICAgICAgICRzZXAgLiAnWC1NYWlsZXI6ICcgLiAkeF9tYWls ZXIgLgogICAgICAgICRzZXAgLiAnWC1PcmlnaW5hdGluZy1JUDogJyAuIGNvbV9jb25uZWN0 X3N0cmlwKCghZW1wdHkoJF9TRVJWRVJbJ0hUVFBfWF9GT1JXQVJERURfRk9SJ10pID8gJF9T RVJWRVJbJ0hUVFBfWF9GT1JXQVJERURfRk9SJ10gLiAnIHZpYSAnIDogJycpIC4gJF9TRVJW RVJbJ1JFTU9URV9BRERSJ10pIC4KICAgICAgICAkc2VwIC4gJ0NvbnRlbnQtVHJhbnNmZXIt RW5jb2Rpbmc6ICcgLiAkeGZlcl9lbmNvZGluZyAuCiAgICAgICAgJHNlcCAuICdDb250ZW50 LVR5cGU6ICcgLiAkY29udGVudF90eXBlIC4gJzsgY2hhcnNldD0iJyAuICRjaGFyc2V0IC4g JyInOwoKICAgIC8vIFJlbW92ZSBhbGwgdGhlIGhlYWRlciBlbnRyaWVzIHRoYXQgaGF2ZSBh bHJlYWR5IGJlZW4gaGFuZGxlZC4KICAgIHVuc2V0KAogICAgICAgICRoZWFkZXJzWydzZXBh cmF0b3InXSwKICAgICAgICAkaGVhZGVyc1sneGZlcl9lbmNvZGluZyddLAogICAgICAgICRo ZWFkZXJzWydjb250ZW50X3R5cGUnXSwKICAgICAgICAkaGVhZGVyc1sncmVwbHknXSwKICAg ICAgICAkaGVhZGVyc1snY2hhcnNldCddLAogICAgICAgICRoZWFkZXJzWyd4X21haWxlcidd LAogICAgICAgICRoZWFkZXJzWydmcm9tJ10KICAgICk7CgogICAgLy8gQW55IHJlbWFpbmlu ZyBoZWFkZXJzIHNldCBieSBwbHVnaW5zIGFyZSBhcHBlbmRlZCBhcy1pcy4KICAgIGZvcmVh Y2ggKCRoZWFkZXJzIGFzICRuYW1lID0+ICR2YWx1ZSkgewogICAgICAgICRoZWFkZXJfc3Ry aW5nIC49ICRzZXAgLiAkbmFtZSAuICc6ICcgLiAkdmFsdWU7CiAgICB9CgogICAgaWYgKGlz X3ZhbGlkX2VtYWlsKCRzbXRwX2Zyb20pKSB7CiAgICAgICAgaWYgKElTX1dJTikgewogICAg ICAgICAgICBpbmlfc2V0KCdzZW5kbWFpbF9mcm9tJywgJHNtdHBfZnJvbSk7CiAgICAgICAg fSBlbHNlaWYgKCFpbmlfZ2V0KCdzYWZlX21vZGUnKSkgewogICAgICAgICAgICByZXR1cm4g bWFpbCgkdG8sICRzdWJqZWN0LCAkYm9keSwgJGhlYWRlcl9zdHJpbmcsICctZicuJHNtdHBf ZnJvbSk7CiAgICAgICAgfQogICAgfQoKICAgIHJldHVybiBtYWlsKCR0bywgJHN1YmplY3Qs ICRib2R5LCAkaGVhZGVyX3N0cmluZyk7Cn0KCi8qKgogKiBFdmFsdWF0ZSByZXR1cm4gdmFs dWVzIGZyb20gcGx1Z2lucy4KICovCmNsYXNzIGNvbWNvbm5lY3RfZXZhbHVhdGlvbgp7CiAg ICBwcml2YXRlICRzdGF0dXM7CgogICAgLyoqCiAgICAgKiBDb25zdHJ1Y3Rvci4KICAgICAq LwogICAgZnVuY3Rpb24gX19jb25zdHJ1Y3QoKQogICAgewogICAgICAgICR0aGlzLT5zdGF0 dXMgPSAwOwogICAgfQoKICAgIC8qKgogICAgICogQXBwZW5kIHRoZSBnaXZlbiBzdGF0dXMg dG8gdGhlIGNvdW50ZXIuCiAgICAgKi8KICAgIGZ1bmN0aW9uIGFkZF9jb21jb25uZWN0X3N0 YXR1cygkY2hlY2spCiAgICB7CiAgICAgICAgJHRoaXMtPnN0YXR1cyArPSAkY2hlY2s7CiAg ICB9CgogICAgLyoqCiAgICAgKiBGZXRjaCB0aGUgY3VycmVudCBldmFsdWF0b3Igc3RhdHVz LgogICAgICovCiAgICBmdW5jdGlvbiBnZXRfY29tY29ubmVjdF9zdGF0dXMoKQogICAgewog ICAgICAgIHJldHVybiAkdGhpcy0+c3RhdHVzOwogICAgfQp9CgovKioKICogRXZhbHVhdG9y IHNpbmdsZXRvbiBmb3IgY2hlY2tpbmcgcmV0dXJuIHZhbHVlcyBmcm9tIHBsdWdpbnMuCiAq LwpmdW5jdGlvbiAmZ2V0X2NvbWNvbm5lY3RfZXZhbHVhdG9yKCkKewogICAgc3RhdGljICRp bnN0YW5jZTsKCiAgICBpZiAoIWlzc2V0KCRpbnN0YW5jZSkpIHsKICAgICAgICAkaW5zdGFu Y2UgPSBuZXcgY29tY29ubmVjdF9ldmFsdWF0aW9uKCk7CiAgICB9CgogICAgcmV0dXJuICRp bnN0YW5jZTsKfQoKLyoqCiAqIENvbnZlcnQgdGhlIGdpdmVuIGxhYmVsIHRvIGEgc3VpdGFi bHkgdW5pcXVlIG5hbWUuCiAqCiAqIEBwYXJhbSBzdHJpbmcgJGxhYmVsIExhYmVsIHRvIGNv bnZlcnQgdG8gbmFtZS4KICovCmZ1bmN0aW9uIGNvbV9jb25uZWN0X2xhYmVsMm5hbWUoJGxh YmVsKQp7CiAgICAkbGFiZWwgPSB0cmltKCRsYWJlbCk7CgogICAgaWYgKHN0cmxlbigkbGFi ZWwpID09IDApIHsKICAgICAgICByZXR1cm4gJ2ludmFsaWQnOwogICAgfQoKICAgIGlmIChz dHJsZW4oJGxhYmVsKSA8PSAzMiAmJiBwcmVnX21hdGNoKCcvXlthLXpBLVpdW0EtWmEtejAt OTpfLV0qJC8nLCAkbGFiZWwpKSB7CiAgICAgICAgcmV0dXJuICRsYWJlbDsKICAgIH0gZWxz ZSB7CiAgICAgICAgcmV0dXJuICdxJyAuIG1kNSgkbGFiZWwpOwogICAgfQp9CgovKioKICog U3RvcmUgdGhlIGdpdmVuIG5hbWVzL3ZhbHVlcyBpbiB0aGUgZ2xvYmFsIGFycmF5cy4KICoK ICogQHBhcmFtICBzdHJpbmcgJG5hbWUgIFBhcmFtZXRlciBuYW1lCiAqIEBwYXJhbSAgc3Ry aW5nICRsYWJlbCBQYXJhbWV0ZXIgbGFiZWwKICogQHBhcmFtICBzdHJpbmcgJHZhbHVlIFBh cmFtZXRlciB2YWx1ZQogKi8KZnVuY3Rpb24gY29tX2Nvbm5lY3Rfc3RvcmUoJG5hbWUsICRs YWJlbCwgJHZhbHVlKQp7CiAgICBnbG9iYWwgJGNvbV9jb25uZWN0X2Zvcm0sICRjb21fY29u bmVjdF9sYWJlbHMsICRjb21fY29ubmVjdF92YWx1ZXM7CgogICAgJGNvbV9jb25uZWN0X2Zv cm1bJGxhYmVsXSA9ICR2YWx1ZTsKICAgICRjb21fY29ubmVjdF9sYWJlbHNbJG5hbWVdID0g JGxhYmVsOwogICAgJGNvbV9jb25uZWN0X3ZhbHVlc1skbmFtZV0gPSAkdmFsdWU7Cn0KCi8q KgogKiBPdmVycmlkZSB0aGUgbGFuZ3VhZ2Ugc3RyaW5ncyBpZiBuZWNlc3NhcnkuCiAqCiAq IEBwYXJhbSAgc3RyaW5nICRsYW5nIExhbmd1YWdlIGRlc2lnbmF0b3IgKGUuZy4gZnItZnIp CiAqIEByZXR1cm4gYXJyYXkgICAgICAgIFBhcnRpYWwgbGFuZ3VhZ2UgYXJyYXkgdG8gbWVy Z2Ugd2l0aCAkdGV4dGFycmF5CiAqLwpmdW5jdGlvbiBjb21fY29ubmVjdF9sb2FkX2xhbmco JGxhbmcgPSBMQU5HKQp7CiAgICAkb3V0ID0gYXJyYXkoKTsKCiAgICBpZiAoJGxhbmcgIT0g TEFORykgewoKICAgICAgICAkcnMgPSBzYWZlX3Jvd3MoIm5hbWUsIGRhdGEiLCAndHhwX2xh bmcnLCAibGFuZyA9ICciIC4gZG9TbGFzaCgkbGFuZykgLiAiJyBBTkQgbmFtZSBsaWtlICdj b21cX2Nvbm5lY3RcXyUnIik7CgogICAgICAgIGlmICghZW1wdHkoJHJzKSkgewogICAgICAg ICAgICBmb3JlYWNoICgkcnMgYXMgJGEpIHsKICAgICAgICAgICAgICAgICRvdXRbJGFbJ25h bWUnXV0gPSAkYVsnZGF0YSddOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAg IHJldHVybiAkb3V0Owp9CgovKioKICogUmV0dXJuIHRoZSB2YWx1ZSBvZiB0aGUgZ2l2ZW4g YXR0cmlidXRlLCBieSBuYW1lIG9yIGl0cyBsYWJlbC4KICoKICogQHBhcmFtICBhcnJheSAk YXR0cyBBdHRyaWJ1dGUgdG8gcmV0dXJuCiAqIEByZXR1cm4gc3RyaW5nCiAqLwpmdW5jdGlv biBjb21fY29ubmVjdF92YWx1ZSgkYXR0cykKewogICAgZ2xvYmFsICRjb21fY29ubmVjdF92 YWx1ZXMsICRjb21fY29ubmVjdF9mb3JtOwoKICAgIGV4dHJhY3QobEF0dHMoYXJyYXkoCiAg ICAgICAgJ2xhYmVsJyA9PiAnJywKICAgICAgICAnbmFtZScgID0+ICcnLAogICAgKSwgJGF0 dHMpKTsKCiAgICAkc3RyID0gJyc7CgogICAgaWYgKCRuYW1lKSB7CiAgICAgICAgJHN0ciA9 IGlzc2V0KCRjb21fY29ubmVjdF92YWx1ZXNbJG5hbWVdKSA/ICRjb21fY29ubmVjdF92YWx1 ZXNbJG5hbWVdIDogJyc7CiAgICB9IGVsc2VpZiAoJGxhYmVsKSB7CiAgICAgICAgJHN0ciA9 IGlzc2V0KCRjb21fY29ubmVjdF9mb3JtWyRuYW1lXSkgPyAkY29tX2Nvbm5lY3RfZm9ybVsk bmFtZV0gOiAnJzsKICAgIH0KCiAgICByZXR1cm4gdHJpbSgkc3RyKTsKfQoKLyoqCiAqIFJl dHVybiB0aGUgbGFiZWwgZm9yIHRoZSBnaXZlbiBhdHRyaWJ1dGUuCiAqCiAqIEBwYXJhbSAg YXJyYXkgJGF0dHMgQXR0cmlidXRlIG5hbWUgdG8gcmV0dXJuCiAqIEByZXR1cm4gc3RyaW5n CiAqLwpmdW5jdGlvbiBjb21fY29ubmVjdF9sYWJlbCgkYXR0cykKewogICAgZ2xvYmFsICRj b21fY29ubmVjdF9sYWJlbHM7CgogICAgZXh0cmFjdChsQXR0cyhhcnJheSgKICAgICAgICAn bmFtZScgPT4gJycsCiAgICApLCAkYXR0cykpOwoKICAgIGlmICgkbmFtZSkgewogICAgICAg IHJldHVybiBpc3NldCgkY29tX2Nvbm5lY3RfbGFiZWxzWyRuYW1lXSkgPyAkY29tX2Nvbm5l Y3RfbGFiZWxzWyRuYW1lXSA6ICcnOwogICAgfQoKICAgIHJldHVybiAnJzsKfQoKLyoqCiAq IENvbmRpdGlvbmFsIHRhZyBmb3IgY2hlY2tpbmcgdmFyaWFibGUgY29uZGl0aW9ucy4KICoK ICogQHBhcmFtICBhcnJheSAgJGF0dHMgIEF0dHJpYnV0ZXMgdG8gY2hlY2sKICogQHBhcmFt ICBzdHJpbmcgJHRoaW5nIFRhZydzIGNvbnRhaW5lciBjb250ZW50CiAqIEByZXR1cm4gc3Ry aW5nCiAqLwpmdW5jdGlvbiBjb21fY29ubmVjdF9pZigkYXR0cywgJHRoaW5nID0gbnVsbCkK ewogICAgZXh0cmFjdChsQXR0cyhhcnJheSgKICAgICAgICAnbGFiZWwnID0+ICcnLAogICAg ICAgICduYW1lJyAgPT4gJycsCiAgICAgICAgJ3ZhbHVlJyA9PiBudWxsLAogICAgKSwgJGF0 dHMpKTsKCiAgICAkdmFsID0gY29tX2Nvbm5lY3RfdmFsdWUoYXJyYXkoCiAgICAgICAgJ2xh YmVsJyA9PiAkbGFiZWwsCiAgICAgICAgJ25hbWUnICA9PiAkbmFtZSwKICAgICkpOwoKICAg IGlmICgkdmFsKSB7CiAgICAgICAgJGNvbmQgPSAoJHZhbHVlID09PSBudWxsIHx8ICR2YWwg PT0gJHZhbHVlKTsKICAgIH0gZWxzZSB7CiAgICAgICAgJGNvbmQgPSBmYWxzZTsKICAgIH0K CiAgICByZXR1cm4gcGFyc2UoRXZhbEVsc2UoJHRoaW5nLCAkY29uZCkpOwp9IjtzOjM6Im1k NSI7czozMjoiMTNjZTU4NzMzMWExOGY0Mjc1M2Y4MWJiNTZhODBmODUiO30=