=00 ------_=_NextPart_002_01C3512C.E45343E8-- ------_=_NextPart_001_01C3512C.E45343E8 Content-Type: application/octet-stream; name="commitinfo" Content-Transfer-Encoding: base64 Content-Description: commitinfo Content-Disposition: attachment; filename="commitinfo" IyBUaGUgImNvbW1pdGluZm8iIGZpbGUgaXMgdXNlZCB0byBjb250cm9sIHByZS1jb21taXQgY2hl Y2tzLg0KIyBUaGUgZmlsdGVyIG9uIHRoZSByaWdodCBpcyBpbnZva2VkIHdpdGggdGhlIHJlcG9z aXRvcnkgYW5kIGEgbGlzdCANCiMgb2YgZmlsZXMgdG8gY2hlY2suICBBIG5vbi16ZXJvIGV4aXQg b2YgdGhlIGZpbHRlciBwcm9ncmFtIHdpbGwgDQojIGNhdXNlIHRoZSBjb21taXQgdG8gYmUgYWJv cnRlZC4NCiMNCiMgVGhlIGZpcnN0IGVudHJ5IG9uIGEgbGluZSBpcyBhIHJlZ3VsYXIgZXhwcmVz c2lvbiB3aGljaCBpcyB0ZXN0ZWQNCiMgYWdhaW5zdCB0aGUgZGlyZWN0b3J5IHRoYXQgdGhlIGNo YW5nZSBpcyBiZWluZyBjb21taXR0ZWQgdG8sIHJlbGF0aXZlDQojIHRvIHRoZSAkQ1ZTUk9PVC4g IEZvciB0aGUgZmlyc3QgbWF0Y2ggdGhhdCBpcyBmb3VuZCwgdGhlbiB0aGUgcmVtYWluZGVyDQoj IG9mIHRoZSBsaW5lIGlzIHRoZSBuYW1lIG9mIHRoZSBmaWx0ZXIgdG8gcnVuLg0KIw0KIyBJZiB0 aGUgcmVwb3NpdG9yeSBuYW1lIGRvZXMgbm90IG1hdGNoIGFueSBvZiB0aGUgcmVndWxhciBleHBy ZXNzaW9ucyBpbiB0aGlzDQojIGZpbGUsIHRoZSAiREVGQVVMVCIgbGluZSBpcyB1c2VkLCBpZiBp dCBpcyBzcGVjaWZpZWQuDQojDQojIElmIHRoZSBuYW1lICJBTEwiIGFwcGVhcnMgYXMgYSByZWd1 bGFyIGV4cHJlc3Npb24gaXQgaXMgYWx3YXlzIHVzZWQNCiMgaW4gYWRkaXRpb24gdG8gdGhlIGZp cnN0IG1hdGNoaW5nIHJlZ2V4IG9yICJERUZBVUxUIi4NClRvbWNhdFNldHVwIHJ1YnkgJENWU1JP T1QvQ1ZTUk9PVC9yZWNvcmRfbGFzdGRpci5yYg0KI1RvbWNhdFNldHVwICRDVlNST09UL0NWU1JP T1QvYWN0aXZpdHltYWlsLnBsIC1sZw== ------_=_NextPart_001_01C3512C.E45343E8 Content-Type: application/octet-stream; name="collect_diffs.rb" Content-Transfer-Encoding: base64 Content-Description: collect_diffs.rb Content-Disposition: attachment; filename="collect_diffs.rb" IyEvdXNyL2Jpbi9ydWJ5IC13DQoNCiMgUGFydCBvZiBDVlNzcGFtDQojICAgaHR0cDovL3d3dy5i YWRnZXJzLWluLWZvaWwuY28udWsvcHJvamVjdHMvY3Zzc3BhbS8NCiMgQ29weXJpZ2h0IChjKSBE YXZpZCBIb2xyb3lkDQoNCiMgIENWU1JPT1QgaXMgL3Zhci9saWIvY3ZzDQojICBBUkdWIGlzICdD VlNST09UL2Zvby9zcGFjZSBkaXIgc3BhY2UgZmlsZSxOT05FLDEuMSBzb21lLGZpbGUsMS40LDEu NScNCiMgIC0tLS0NCiMgIFVwZGF0ZSBvZiAvdmFyL2xpYi9jdnMvQ1ZTUk9PVC9mb28vc3BhY2Ug ZGlyDQojICBJbiBkaXJlY3RvcnkgZm9pbDovdG1wL2N2cy1zZXJ2MTMwNTkNCiMgIA0KIyAgTW9k aWZpZWQgRmlsZXM6DQojICAJc29tZSxmaWxlIA0KIyAgQWRkZWQgRmlsZXM6DQojICAJc3BhY2Ug ZmlsZSANCiMgIExvZyBNZXNzYWdlOg0KIyAgbXNnDQojICANCg0KDQojIEFzc3VtcHRpb25zDQoj IC0gZmlsZSBuYW1lcyBkbyBub3QgY29udGFpbiBuZXdsaW5lcyBvciBzaW5nbGUgcXVvdGVzDQoN Cg0KJHRtcGRpciA9ICAiL2N5Z2RyaXZlL2YvQ1ZTL2N2c3NwYW0iDQoNCiRkaXJ0ZW1wbGF0ZSA9 ICIjY3Zzc3BhbS4je1Byb2Nlc3MucHBpZH0uI3tQcm9jZXNzLnVpZH0iDQokc3Rkb3V0LnByaW50 KCJkaXIgdGVtcGxhdGUgaXMgIiwkZGlydGVtcGxhdGUsIlxuIikNCmRlZiBmaW5kX2RhdGFfZGly DQogIERpclsiI3skdG1wZGlyfS8jeyRkaXJ0ZW1wbGF0ZX0tKiJdLmVhY2ggZG8gfGRpcnwNCiAg ICBzdGF0ID0gRmlsZS5zdGF0KGRpcikNCiAgICByZXR1cm4gZGlyIGlmIHN0YXQub3duZWQ/DQog IGVuZA0KICBuaWwNCmVuZA0KDQoNCmRlZiBibGFoKG1zZykNCiAgaWYgJGRlYnVnDQogICAgcHV0 cyAiY29sbGVjdF9kaWZmcy5yYjogI3ttc2d9Ig0KICBlbmQNCmVuZA0KDQoNCiMgTGlrZSBJTy5w b3BlbiwgYnV0IGFjY2VwdHMgbXVsdGlwbGUgYXJndW1lbnRzIGxpa2UgS2VybmVsLmV4ZWMNCiMg KFNvIG5vIG5lZWQgdG8gZXNjYXBlIHNoZWxsIG1ldGFjaGFyYWN0ZXJzKQ0KZGVmIHNhZmVyX3Bv cGVuKCphcmdzKQ0KICBJTy5wb3BlbigiLSIpIGRvIHxwaXBlfA0KICAgIGlmIHBpcGU9PW5pbA0K ICAgICAgZXhlYygqYXJncykNCiAgICBlbHNlDQogICAgICB5aWVsZCBwaXBlDQogICAgZW5kDQog IGVuZA0KZW5kDQoNCmNsYXNzIENoYW5nZUluZm8NCiAgZGVmIGluaXRpYWxpemUoZmlsZSwgZnJv bVZlciwgdG9WZXIpDQogICAgQGZpbGUsIEBmcm9tVmVyLCBAdG9WZXIgPSBmaWxlLCBmcm9tVmVy LCB0b1Zlcg0KICAgIGlmIGZyb21WZXIgPT0gdG9WZXINCiAgICAgIGZhaWwgIidmcm9tJyBhbmQg J3RvJyB2ZXJzaW9ucyBzaG91bGQgYmUgZGlmZmVyZW50ICgnI3tmcm9tVmVyfScpIg0KICAgIGVu ZA0KICBlbmQNCiAgYXR0cl9yZWFkZXIgOmZpbGUsIDpmcm9tVmVyLCA6dG9WZXINCiAgZGVmIHRv X3MNCiAgICAiPENoYW5nZUluZm8gXCIje0BmaWxlfVwiICN7QHRvVmVyfTwtLSN7QGZyb21WZXJ9 PiINCiAgZW5kDQoNCiAgZGVmIGlzQWRkaXRpb24gOyBmcm9tVmVyID09ICdOT05FJyBlbmQNCg0K ICBkZWYgaXNSZW1vdmFsIDsgdG9WZXIgPT0gJ05PTkUnIGVuZA0KDQogICNkZWYgaXNNb2RpZmlj YXRpb24gOyAhKGlzQWRkaXRpb24gfHwgaXNSZW1vdmFsKSBlbmQNCmVuZA0KDQokY29tbWl0aW5m b190YWdzID0gbmlsDQoNCmRlZiBnZXRfY29tbWl0aW5mb190YWcoZmlsZW5hbWUpDQogIGlmICRj b21taXRpbmZvX3RhZ3MubmlsPw0KICAgIHJldHVybiBuaWwgdW5sZXNzIEZpbGVUZXN0LmV4aXN0 cz8oIiN7JGRhdGFkaXJ9L2NvbW1pdGluZm8tdGFncyIpDQogICAgRmlsZS5vcGVuKCIjeyRkYXRh ZGlyfS9jb21taXRpbmZvLXRhZ3MiKSBkbyB8ZmlsZXwNCiAgICAgICRjb21taXRpbmZvX3RhZ3Mg PSBIYXNoLm5ldw0KICAgICAgZmlsZS5lYWNoX2xpbmUgZG8gfGxpbmV8DQoJbGluZSA9fiAvKFte XHRdKylcdCguKykvDQoJa2V5ID0gJDINCgl2YWwgPSAkMQ0KCWtleS5zdWIhKC9eI3tFTlZbJ0NW U1JPT1QnXX1cLy8sICcnKQ0KCSRjb21taXRpbmZvX3RhZ3Nba2V5XSA9IHZhbA0KICAgICAgZW5k DQogICAgZW5kDQogIGVuZA0KICByZXR1cm4gJGNvbW1pdGluZm9fdGFnc1tmaWxlbmFtZV0NCmVu ZA0KDQpkZWYgcHJvY2Vzc19sb2coY3ZzX2luZm8pDQogIGN2c3Jvb3QgPSBFTlZbJ0NWU1JPT1Qn XQ0KDQogICRkYXRhZGlyID0gZmluZF9kYXRhX2RpcigpDQoNCiAgcmFpc2UgIm1pc3NpbmcgZGF0 YSBkaXIgKCN7JHRtcGRpcn0vI3skZGlydGVtcGxhdGV9LVhYWFhYWCkiIGlmICRkYXRhZGlyPT1u aWwNCg0KICBsaW5lID0gJHN0ZGluLmdldHMNCiAgdW5sZXNzIGxpbmUgPX4gL15VcGRhdGUgb2Yg KC4rKS8NCiAgICBmYWlsICJMb2cgcHJlYW1ibGUgbG9va3Mgc3VzcGVjdCAoZG9lc24ndCBzdGFy dCAnVXBkYXRlIG9mIC4uLicpIg0KICBlbmQNCg0KICAjIGN2c19pbmZvIGNvbWVzIGZyb20gdGhl IGNvbW1hbmQgbGluZSwgdWx0aW1hdGVseSBhcyB0aGUgZXhwYW5zaW9uIG9mIHRoZQ0KICAjICV7 c1Z2fSBpbiAkQ1ZTUk9PVC9sb2dpbmZvLiAgSXQgaXNuJ3QgcG9zc2libGUgdG8gcGFyc2UgdGhp cyB2YWx1ZQ0KICAjIHVuYW1iaWd1b3VzbHksIGJ1dCB3ZSBtYWtlIGFuIGVmZm9ydCB0byBnZXQg aXQgcmlnaHQgaW4gYXMgbWFueSBjYXNlcyBhcw0KICAjIHBvc3NpYmxlLg0KDQogICRwYXRoID0g JDENCiAgdW5sZXNzICRwYXRoLnNsaWNlKDAsY3Zzcm9vdC5sZW5ndGgpID09IGN2c3Jvb3QNCiAg ICBmYWlsICJDVlNST09UICgnI3tjdnNyb290fScpIGRvZXNuJ3QgbWF0Y2ggbG9nIHByZWFtYmxl ICgnI3skcGF0aH0nKSINCiAgZW5kDQoNCiAgJHJlcG9zaXRvcnlfcGF0aCA9ICRwYXRoLnNsaWNl KGN2c3Jvb3QubGVuZ3RoKzEsICRwYXRoLmxlbmd0aC1jdnNyb290Lmxlbmd0aC0xKQ0KICB1bmxl c3MgY3ZzX2luZm8uc2xpY2UoMCwgJHJlcG9zaXRvcnlfcGF0aC5sZW5ndGgrMSkgPT0gIiN7JHJl cG9zaXRvcnlfcGF0aH0gIg0KICAgIGZhaWwgImNhbGN1bGF0ZWQgcmVwb3NpdG9yeSBwYXRoICgn I3skcmVwb3NpdG9yeV9wYXRofScpIGRvZXNuJ3QgbWF0Y2ggc3RhcnQgb2YgY29tbWFuZCBsaW5l IGFyZyAoJyN7Y3ZzX2luZm99JykiDQogIGVuZA0KDQogIHZlcnNpb25faW5mbyA9IGN2c19pbmZv LnNsaWNlKCRyZXBvc2l0b3J5X3BhdGgubGVuZ3RoLA0KICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBjdnNfaW5mby5sZW5ndGgtJHJlcG9zaXRvcnlfcGF0aC5sZW5ndGgpDQoNCiAgY2hh bmdlcyA9IEFycmF5Lm5ldw0KICAjIG1ha2UgYSBsaXN0IG9mIGNoYW5nZWQgZmlsZXMgZ2l2ZW4g b24gdGhlIGNvbW1hbmQgbGluZQ0KICB3aGlsZSB2ZXJzaW9uX2luZm8ubGVuZ3RoPjANCiAgICBp ZiB2ZXJzaW9uX2luZm8uc3ViISgvXiAoLis/KSwoTk9ORXxbLjAtOV0rKSwoTk9ORXxbLjAtOV0r KS8sICcnKSA9PSBuaWwNCiAgICAgIGZhaWwgIicje3ZlcnNpb25faW5mb30nIGRvZXNuJ3QgbWF0 Y2ggJyA8bmFtZT4sPHZlcj4sPHZlcj4gLi4uJyINCiAgICBlbmQNCiAgICBjaGFuZ2VzIDw8IENo YW5nZUluZm8ubmV3KCQxLCAkMiwgJDMpDQogIGVuZA0KDQogICMgbG9vayBmb3IgdGhlIHN0YXJ0 IG9mIHRoZSB1c2VyJ3MgY29tbWVudA0KICAkc3RkaW4uZWFjaCBkbyB8bGluZXwNCiAgICBicmVh ayBpZiBsaW5lID1+IC9eTG9nIE1lc3NhZ2UvDQogIGVuZA0KDQogIHVubGVzcyBsaW5lID1+IC9e TG9nIE1lc3NhZ2UvDQogICAgZmFpbCAiSW5wdXQgZGlkIG5vdCBjb250YWluIGEgJ0xvZyBNZXNz YWdlOicgZW50cnkiDQogIGVuZA0KDQogIEZpbGUub3BlbigiI3skZGF0YWRpcn0vbG9nZmlsZSIs IEZpbGU6OldST05MWXxGaWxlOjpDUkVBVHxGaWxlOjpBUFBFTkQpIGRvIHxmaWxlfA0KICAgICRz dGRpbi5lYWNoIGRvIHxsaW5lfA0KICAgICAgZmlsZS5wdXRzICIjPiAje2xpbmV9Ig0KICAgIGVu ZA0KDQogICAgY2hhbmdlcy5lYWNoIGRvIHxjaGFuZ2V8DQoNCiAgICAgICMgcmVjb3JkIHZlcnNp b24gaW5mb3JtYXRpb24NCiAgICAgIGZpbGUucHV0cyAiI1YgI3tjaGFuZ2UuZnJvbVZlcn0sI3tj aGFuZ2UudG9WZXJ9Ig0KDQogICAgICAjIG5vdGUgaWYgdGhlIGZpbGUgaXMgb24gYSBicmFuY2gN CiAgICAgIHRhZyA9IG5pbA0KICAgICAgaWYgY2hhbmdlLmlzUmVtb3ZhbA0KCXRhZyA9IGdldF9j b21taXRpbmZvX3RhZygiI3skcmVwb3NpdG9yeV9wYXRofS8je2NoYW5nZS5maWxlfSIpDQogICAg ICBlbHNlDQogICAgICAgIHN0YXR1cyA9IG5pbA0KICAgICAgICAkc3Rkb3V0LnByaW50KCJjdnMg cHJvZyA9ICIsJGN2c19wcm9nLCJcbiIpDQogICAgICAgICRzdGRvdXQucHJpbnQoIkZpbGUgaXMg PSAiLGNoYW5nZS5maWxlLCJcbiIpDQogICAgICAgIHNhZmVyX3BvcGVuKCRjdnNfcHJvZywgIi1u cSIsICJzdGF0dXMiLCBjaGFuZ2UuZmlsZSkgZG8gfGlvfA0KICAgICAgICAgIHN0YXR1cyA9IGlv LnJlYWQNCiAgICAgICAgZW5kDQogICAgICAgIGZhaWwgImNvdWxkbid0IGdldCBjdnMgc3RhdHVz OiAjeyQhfSIgdW5sZXNzICgkPz4+OCk9PTANCg0KCWlmIHN0YXR1cyA9fiAvXlxzKlN0aWNreSBU YWc6XHMqKC4rKSBcKGJyYW5jaDogKy9tDQoJICB0YWcgPSAkMQ0KCWVuZA0KICAgICAgZW5kDQog ICAgICBmaWxlLnB1dHMgIiNUICN7dGFnfSIgdW5sZXNzIHRhZy5uaWw/DQoNCiAgICAgIGRpZmZf Y21kID0gQXJyYXkubmV3IDw8ICRjdnNfcHJvZyA8PCAiLW5xIiA8PCAiZGlmZiIgPDwgIi1OdSIN CiAgICAgIGRpZmZfY21kIDw8ICIta2siIGlmICRkaWZmX2lnbm9yZV9rZXl3b3Jkcw0KDQogICAg ICBpZiBjaGFuZ2UuaXNBZGRpdGlvbg0KICAgICAgICBmaWxlLndyaXRlICIjQSAiDQogICAgICAg ICMgY3J1ZnQgdXAgYSBkYXRlIGluIHRoZSBkaXN0YW50IHBhc3QsIHdoZW4gdGhlIGZpbGUgd291 bGQgbm90IGhhdmUNCiAgICAgICAgIyBleGlzdGVkLCBzbyB0aGF0IHRoZSBkaWZmIHdpbGwgc2hv dyBhbGwgbGluZXMgYXMgYWRkZWQNCiAgICAgICAgZGlmZl9jbWQgPDwgIi1EMS8yNi8xOTc3IiA8 PCAiLXIje2NoYW5nZS50b1Zlcn0iDQogICAgICBlbHNpZiBjaGFuZ2UuaXNSZW1vdmFsDQogICAg ICAgIGZpbGUud3JpdGUgIiNSICINCiAgICAgICAgIyBqdXN0IHNwZWNpZnlpbmcgb25lIHZlcnNp b24sIGN2cyB3aWxsIGRpZmYgYmV0d2VlbiB0aGF0IHZlcnNpb24gYW5kDQogICAgICAgICMgdGhl IGN1cnJlbnQgdmVyc2lvbiAod2lsbCBzaG93IGFsbCBsaW5lcyByZW1vdmVkKQ0KICAgICAgICBk aWZmX2NtZCA8PCAiLXIje2NoYW5nZS5mcm9tVmVyfSINCiAgICAgIGVsc2UNCiAgICAgICAgZmls ZS53cml0ZSAiI00gIg0KICAgICAgICBkaWZmX2NtZCA8PCAiLXIje2NoYW5nZS5mcm9tVmVyfSIg PDwgIi1yI3tjaGFuZ2UudG9WZXJ9Ig0KICAgICAgZW5kDQogICAgICBmaWxlLnB1dHMgIiN7JHJl cG9zaXRvcnlfcGF0aH0vI3tjaGFuZ2UuZmlsZX0iDQogICAgICBkaWZmX2NtZCA8PCBjaGFuZ2Uu ZmlsZQ0KICAgICAgIyBkbyBhIGN2cyBkaWZmIGFuZCBwbGFjZSB0aGUgb3V0cHV0IGludG8gb3Vy IHRlbXAgZmlsZQ0KICAgICAgYmxhaCgiYWJvdXQgdG8gcnVuICN7ZGlmZl9jbWQuam9pbignICcp fSIpDQogICAgICBzYWZlcl9wb3BlbigqZGlmZl9jbWQpIGRvIHxwaXBlfA0KICAgICAgICAjIHNr aXAgb3ZlciBjdnMtZGlmZidzIHByZWFtYmxlDQogICAgICAgIHBpcGUuZWFjaCBkbyB8bGluZXwN CiAgICAgICAgICBicmVhayBpZiBsaW5lID1+IC9eZGlmZiAvDQogICAgICAgIGVuZA0KICAgICAg ICBmaWxlLnB1dHMgIiNVICN7bGluZX0iDQogICAgICAgIHBpcGUuZWFjaCBkbyB8bGluZXwNCiAg ICAgICAgICBmaWxlLnB1dHMgIiNVICN7bGluZX0iDQogICAgICAgIGVuZA0KICAgICAgZW5kDQog ICAgICAjIFRPRE86IGRvbid0IGhvdyB0byBkbyB0aGlzIHJlbGlhYmx5IG9uIGRpZmZlcmVudCBz eXN0ZW1zLi4uDQogICAgICAjZmFpbCAiY3ZzZGlmZiBkaWQgbm90IGdpdmUgZXhpdCBzdGF0dXMg MSBmb3IgaW52b2NhdGlvbjogI3tkaWZmX2NtZC5qb2luKCcgJyl9IiB1bmxlc3MgKCQ/Pj44KT09 MQ0KICAgIGVuZA0KICBlbmQNCg0KZW5kDQoNCg0KZGVmIGNob29zZV9vcGVyYXRpb24ob3ApDQog IGlmIG9wID1+IC8gLSBOZXcgZGlyZWN0b3J5JC8NCiAgICBibGFoKCJObyBhY3Rpb24gdGFrZW4g b24gZGlyZWN0b3J5IGNyZWF0aW9uIikNCiAgZWxzaWYgb3AgPX4gLyAtIEltcG9ydGVkIHNvdXJj ZXMkLw0KICAgIGJsYWgoIkltcG9ydGVkIG5vdCBoYW5kbGVkIikNCiAgZWxzZQ0KICAgIHByb2Nl c3NfbG9nKG9wKQ0KICAgIG1haWx0ZXN0DQogIGVuZA0KZW5kDQoNCmRlZiBtYWlsdGVzdA0KICBs YXN0ZGlyID0gbmlsDQogIEZpbGUub3BlbigiI3skZGF0YWRpcn0vbGFzdGRpciIpIGRvIHxmaWxl fA0KICAgIGxhc3RkaXIgPSBmaWxlLmdldHMNCiAgZW5kDQogIGlmICRwYXRoID09IGxhc3RkaXIN CiAgICBibGFoKCJzZW5kaW5nIHNwYW0uICAoSSBhbSAjeyQwfSkiKQ0KICAgICMgUkVWSVNJVDog JDAgd2lsbCBub3QgY29udGFpbiB0aGUgcGF0aCB0byB0aGlzIHNjcmlwdCBvbiBhbGwgc3lzdGVt cw0KICAgIGNtZCA9IEZpbGUuZGlybmFtZSgkMCkgKyAiL2N2c3NwYW0ucmIiDQogICAgdW5sZXNz IHN5c3RlbShjbWQsICIjeyRkYXRhZGlyfS9sb2dmaWxlIiwgKiRwYXNzdGhvdWdoQXJncykNCiAg ICAgIGZhaWwgInByb2JsZW0gcnVubmluZyAnI3tjbWR9JyINCiAgICBlbmQNCiAgICBpZiAkZGVi dWcNCiAgICAgIGJsYWgoImxlYXZpbmcgZmlsZSAjeyRkYXRhZGlyfS9sb2dmaWxlIikNCiAgICBl bHNlIA0KICAgICAgRmlsZS51bmxpbmsoIiN7JGRhdGFkaXJ9L2xvZ2ZpbGUiKQ0KICAgIGVuZA0K ICAgIEZpbGUudW5saW5rKCIjeyRkYXRhZGlyfS9sYXN0ZGlyIikNCiAgICBGaWxlLnVubGluaygi I3skZGF0YWRpcn0vY29tbWl0aW5mby10YWdzIikgaWYgRmlsZVRlc3QuZXhpc3RzPygiI3skZGF0 YWRpcn0vY29tbWl0aW5mby10YWdzIikNCiAgICBEaXIucm1kaXIoJGRhdGFkaXIpIHVubGVzcyAk ZGVidWcNCiAgZWxzZQ0KICAgIGJsYWgoIm5vdCBzcGFtIHRpbWUgeWV0LCAjeyRwYXRofSE9I3ts YXN0ZGlyfSIpDQogIGVuZA0KZW5kDQoNCiRjb25maWcgPSAiL2N5Z2RyaXZlL2YvQ1ZTL0NWU1JP T1QvY3Zzc3BhbS5jb25mIg0KJGN2c19wcm9nID0gIi9jeWdkcml2ZS9mL2N2c250L2N2cy5leGUi DQokZGVidWcgPSBmYWxzZQ0KJGRpZmZfaWdub3JlX2tleXdvcmRzID0gZmFsc2UNCiR0YXNrX2tl eXdvcmRzID0gW10NCg0KdW5sZXNzIEVOVi5oYXNfa2V5PygnQ1ZTUk9PVCcpDQogIGZhaWwgIiRD VlNST09UIG5vdCBkZWZpbmVkLiAgSXQgc2hvdWxkIGJlIHdoZW4gSSBhbSBpbnZva2VkIGZyb20g Q1ZTUk9PVC9sb2dpbmZvIg0KZW5kDQoNCg0KcmVxdWlyZSAnZ2V0b3B0bG9uZycNCg0Kb3B0cyA9 IEdldG9wdExvbmcubmV3KA0KICBbICItLXRvIiwgICAgICItdCIsIEdldG9wdExvbmc6OlJFUVVJ UkVEX0FSR1VNRU5UIF0sDQogIFsgIi0tY29uZmlnIiwgIi1jIiwgR2V0b3B0TG9uZzo6UkVRVUlS RURfQVJHVU1FTlQgXSwNCiAgWyAiLS1kZWJ1ZyIsICAiLWQiLCBHZXRvcHRMb25nOjpOT19BUkdV TUVOVCBdLA0KICBbICItLWZyb20iLCAgICItdSIsIEdldG9wdExvbmc6OlJFUVVJUkVEX0FSR1VN RU5UIF0NCikNCg0KIyBhcmd1bWVudHMgdG8gcGFzcyB0aG91Z2ggdG8gJ2N2c3NwYW0ucmInDQok cGFzc3Rob3VnaEFyZ3MgPSBBcnJheS5uZXcNCm9wdHMuZWFjaCBkbyB8b3B0LCBhcmd8DQogIGlm IFsiLS10byIsICItLWNvbmZpZyIsICItLWZyb20iXS5pbmNsdWRlPyhvcHQpDQogICAgJHBhc3N0 aG91Z2hBcmdzIDw8IG9wdCA8PCBhcmcNCiAgZW5kDQogIGlmIFsiLS1kZWJ1ZyJdLmluY2x1ZGU/ KG9wdCkNCiAgICAkcGFzc3Rob3VnaEFyZ3MgPDwgb3B0DQogIGVuZA0KICAkY29uZmlnID0gYXJn IGlmIG9wdD09Ii0tY29uZmlnIg0KICAkZGVidWcgPSB0cnVlIGlmIG9wdCA9PSAiLS1kZWJ1ZyIN CmVuZA0KDQpibGFoKCJDVlNST09UIGlzICN7RU5WWydDVlNST09UJ119IikNCmJsYWgoIkFSR1Yg aXMgJyN7QVJHVi5qb2luKCcsICcpfSciKQ0KDQppZiBGaWxlVGVzdC5leGlzdHM/KCRjb25maWcp DQogIGRlZiBhZGRIZWFkZXIobmFtZSx2YWwpDQogIGVuZA0KICBkZWYgYWRkUmVjaXBpZW50KHdo bykNCiAgZW5kDQogIGxvYWQgJGNvbmZpZw0KZWxzZQ0KICBibGFoKCJDb25maWcgZmlsZSAnI3sk Y29uZmlnfScgbm90IGZvdW5kLCBpZ25vcmluZyIpDQplbmQNCg0KDQppZiBBUkdWLmxlbmd0aCAh PSAxDQogICRzdGRlcnIucHV0cyAiRXhwZWN0ZWQgYXJndW1lbnRzIG1pc3NpbmciDQogICRzdGRl cnIucHV0cyAiKiBZb3Ugc2hvdWxkbid0IHJ1biBjb2xsZWN0X2RpZmZzIGJ5IGhhbmQsIGJ1dCBm cm9tIGEgQ1ZTUk9PVC9sb2dpbmZvIGVudHJ5ICoiDQogICRzdGRlcnIucHV0cyAiVXNhZ2U6IGNv bGxlY3RfZGlmZnMucmIgWyAtLXRvIDxlbWFpbD4gXSBbIC0tY29uZmlnIDxmaWxlPiBdICV7c1Z2 fSINCiAgJHN0ZGVyci5wdXRzICIgICAgICAgKHRoZSBzZXF1ZW5jZSAnJXtzVnZ9JyBpcyBleHBh bmRlZCBieSBDVlMsIHdoZW4gZm91bmQgaW4gQ1ZTUk9PVC9sb2dpbmZvKSINCiAgZXhpdA0KZW5k DQpjaG9vc2Vfb3BlcmF0aW9uKEFSR1ZbMF0pDQo= ------_=_NextPart_001_01C3512C.E45343E8 Content-Type: application/octet-stream; name="cvsspam.conf" Content-Transfer-Encoding: base64 Content-Description: cvsspam.conf Content-Disposition: attachment; filename="cvsspam.conf" IyAtKi0gUnVieSAtKi0gQ29uZmlndXJhdGlvbiBmb3IgQ1ZTc3BhbSBjb21taXQtbWFpbCBnZW5l cmF0aW9uIHN5c3RlbQ0KDQojIFBhcnQgb2YgQ1ZTc3BhbQ0KIyAgIGh0dHA6Ly93d3cuYmFkZ2Vy cy1pbi1mb2lsLmNvLnVrL3Byb2plY3RzL2N2c3NwYW0vDQojIENvcHlyaWdodCAoYykgRGF2aWQg SG9scm95ZA0KDQoNCiMgICAgIFBsYWNlIHRoaXMgZmlsZSBpbiB5b3VyIENWU1JPT1QvLCBvciBz cGVjaWZ5IGl0cyBsb2NhdGlvbiB3aXRoDQojICAgY29sbGVjdF9kaWZmcy5yYidzIC0tY29uZmln IGFyZ3VtZW50Lg0KDQoNCg0KIyBXaG8gc2hvdWxkIGJlIG1haWxlZD8gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKE9wdGlvbmFsKQ0KIw0KIyAgICAgTXVsdGlw bGUgYWRkcmVzc2VzIG1heSBzcGVjaWZpZWQuICBUaGVzZSB3aWxsIGJlIHVzZWQgaW4gYWRkaXRp b24gdG8gYW55DQojICAgLS10byBhcmd1ZW1udHMgZ2l2ZW4gdG8gY29sbGVjdF9kaWZmcy5yYiBv biB0aGUgY29tbWFuZGxpbmUgKGkuZS4gaW4NCiMgICAnQ1ZTUk9PVC9sb2dpbmZvJykuDQojDQoj ICAgICBJZiB5b3UgbmVlZCBsb3RzIG9mIGNvbW1pdC1tYWlsIHJlY2lwaWVudHMsIGNvbnNpZGVy IHNldHRpbmcgdXAgYSBtYWlsaW5nDQojICAgbGlzdCB0byBwcm9wb2dhdGUgdGhlIG1lc3NhZ2Vz Lg0KDQojYWRkUmVjaXBpZW50ICJnbG9iYWwtY29kZS1yZXZpZXdAc29tZXdoZXJlLmludmFsaWQi DQphZGRSZWNpcGllbnQgImFtZXppY2tAZ3VpZGVzdGFyLm9yZyINCg0KDQojIExpbmsgdG8gQnVn L0lzc3VlIFRyYWNraW5nIHN5c3RlbXMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAo T3B0aW9uYWwpDQojDQojICAgICBJZiB5b3Ugd2FudCBjb21tZW50cyB0byBpbmNsdWRlIGxpbmtz IHRvIGEgQnVnemlsbGEgaW5zdGFsbGF0aW9uLCBnaXZlDQojICAgJGJ1Z3ppbGxhVVJMIG9mIHRo ZSBwYWdlIGZvciB2aWV3aW5nIGJ1Z3MgKHVzdWFsbHkgc2hvd19idWcuY2dpKSB1c2luZyB0aGUN CiMgICBzdHJpbmcgJyVzJyB0byBzcGVjaWZ5IHdoZXJlIHRoZSBidWdJZCBzaG91bGQgYmUgc3Vi c3RpdHV0ZWQuDQojDQojICAgICBJZiB5b3Ugc3BlY2lmeSBhIFVSTCwgdGV4dCB3aXRoaW4gbG9n LWNvbW1lbnRzIG9mIHRoZSBmb3JtICdidWcgMTIzNCcNCiMgICB3aWxsIGJlIG1hZGUgaW50byBo eXBlcmxpbmtzIGluIHRoZSBnZW5lcmF0ZWQgZW1haWwuDQojDQojICAgICBXaGVuICRqaXJhVVJM IGlzIGdpdmVuLCB0ZXh0IG9mIHRoZSBmb3JtICdwcm9qZWN0LTEyMzQnIHdpbGwgYmUgbGlua2Vk DQojICAgdG8gdGhpcyBpc3N1ZSBpbiBKSVJBLg0KDQojJGJ1Z3ppbGxhVVJMID0gImh0dHA6Ly9i dWd6aWxsYS5tb3ppbGxhLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9JXMiDQoNCiRqaXJhVVJMID0gImh0 dHA6Ly93YmRldndlYjQ6ODA4MC9qaXJhL3NlY3VyZS9WaWV3SXNzdWUuanNwYT9rZXk9JXMiDQoN Cg0KDQoNCiMgTGluayB0byBDVlMgd2ViIGZyb250ZW5kcyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIChPcHRpb25hbCkNCiMNCiMgICAgIFRoZSBnZW5lcmF0ZWQgbWFp bCBjYW4gY29udGFpbiBsaW5rcyB0byB0aGUgbmV3L29yaWdpbmFsIHZlcnNpb25zIG9mIGENCiMg ICBjaGFuZ2VkIGZpbGUuICBUaGlzIGNhbiBiZSBwYXJ0aWN1bGFybHkgdXNlZnVsIGZvciB2aWV3 aW5nIGJpbmFyeSBmaWxlcw0KIyAgIChpLmUuIGltYWdlcykgYmVmb3JlIGFuIGFmdGVyIGEgY2hh bmdlLCBhcyBubyBkaWZmIGlzIGluY2x1ZGVkIGZvciB0aGVzZS4NCiMNCiMgICAgIFNwZWNpZnkg b25lIG9mIGVpdGhlciAkdmlld2N2c1VSTCBvciAkY2hvcmFVUkwgKG9yIG5laXRoZXIgaWYgeW91 IGRvbid0DQojICAgaGF2ZSB0aGVtLCBhbmQgZG9uJ3Qgd2FudCBsaW5rcykuICBGb3IgVmlld0NW UywgdGhlIFVSTCB1c3VhbGx5IGVuZHMgd2l0aA0KIyAgICd2aWV3Y3ZzLmNnaScuICBGb3IgQ2hv cmEsIHRoZSBVUkwgdXN1YWx5IGVuZHMgd2l0aCB0aGUgZGlyZWN0b3J5IHRoYXQNCiMgICBjb250 YWlucyBjdnMucGhwL2RpZmYucGhwL2V0Yy4NCg0KIyR2aWV3Y3ZzVVJMID0gImh0dHA6Ly9sb2Nh bGhvc3QvY2dpLWJpbi92aWV3Y3ZzLmNnaSINCg0KIyRjaG9yYVVSTCA9ICJodHRwOi8vbG9jYWxo b3N0L2hvcmQvY2hvcmEvIg0KDQojJGN2c3dlYlVSTCA9ICJodHRwOi8vbG9jYWxob3N0L2NnaS1i aW4vY3Zzd2ViLmNnaSINCg0KDQoNCiMgQWRkaXRpb25hbCBTTVRQIEhlYWRlcnMgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChPcHRpb25hbCkNCiMNCiMgICAgIFlv dSBjYW4gc3BlY2lmeSBhZGRpdGlvbmFsIGhlYWRlcnMgdG8gYWRkIHRvIHRoZSBnZW5lcmF0ZWQg ZW1haWwuICAoRm9yDQojICAgaW5zdGFuY2UsIHlvdSBjb3VsZCBmbGFnIG1haWxzLCBhbmQgdGVs bCBTcGFtQXNzYXNpbiB0byBiZSBraW5kIHRvIHRoZW0uKQ0KDQojYWRkSGVhZGVyICJSZXBseS1U byIsICJkZXYtbGlzdEBzb21ld2hlcmUuaW52YWxpZCINCiNhZGRIZWFkZXIgIlgtQmVlbi1UaGVy ZSIsICJjcmFja21vbmtleS5vcmciDQoNCg0KDQojIHNlbmRtYWlsIGxvY2F0aW9uICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAoRGVmYXVsdDogJy91c3Ivc2Jpbi9zZW5kbWFpbCcpDQojDQoj ICAgICBJZiB5b3VyIHNlbmRtYWlsIHByb2dyYW0gaXMgaW5zdGFsbGVkIHNvbWV3aGVyZSBvdGhl ciB0aGFuIHRoZSBkZWZhdWx0LA0KIyAgIHNwZWNpZnkgdGhlIGxvY2F0aW9uIGhlcmUuICBUaGUg cHJvZ3JhbSBzcGVjaWZpZWQgbXVzdCBhY2NlcHQgdGhlIC10IG9wdGlvbg0KIyAgICh0byBtYWtl IGl0IGFjY2VwdCBtYWlsIGhlYWRlcnMgb24gc3RkaW4pLg0KDQokc2VuZG1haWxfcHJvZyA9ICIv dXNyL3NiaW4vc3NtdHAuZXhlIg0KDQoNCg0KIyBjdnMgbG9jYXRpb24gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgKERlZmF1bHQ6IHN0YW5kYXJkICRQQVRIKQ0KIw0KIyAg ICAgSWYgeW91ciBjdnMgcHJvZ3JhbSBpcyBpbnN0YWxsZWQgc29tZXdoZXJlIG91dHNpZGUgdGhl IHN0YW5kYXJkICRQQVRILA0KIyAgIHNwZWNpZnkgdGhlIGxvY2F0aW9uIGhlcmUuDQoNCiRjdnNf cHJvZyA9ICIvY3lnZHJpdmUvZi9jdnNudC9jdnMuZXhlIg0KDQoNCg0KIyBjdnNkaWZmIGtleXdv cmQgaWdub3JpbmcgICAgICAgICAgICAgICAgICAoRGVmYXVsdDogc2hvdyBjaGFuZ2VzIGluIGtl eXdvcmRzKQ0KIw0KIyAgICAgQ2hhbmdlcyBpbiBDVlMga2V5d29yZHMgY2FuIGJlIGRpc3RyYWN0 aW5nLiAgRm9yIGluc3RhbmNlLCB0aGUNCiMgICAkUmV2aXNpb246IDEuOSAkIGtleXdvcmQgd2ls bCBjaGFuZ2Ugb24gZWFjaCBjb21taXQuICBTZXQgdGhpcyB2YWx1ZSB0byB0cnVlDQojICAgdG8g ZXhjbHVkZSBjaGFuZ2VzIGluIGtleXdvcmQgZmllbGRzIChhZGRzIHRoZSAta2sgb3B0aW9uIHRv IGN2cyBkaWZmKS4NCg0KIyRkaWZmX2lnbm9yZV9rZXl3b3JkcyA9IHRydWUNCg0KDQoNCiMgRG9u J3Qgc2hvdyBkaWZmIGZvciByZW1vdmVkIGZpbGVzICAgICAgICAgICAgIChEZWZhdWx0OiBzaG93 IGZpbGUncyBjb250ZW50cykNCiMNCiMgICAgIElmIHlvdSBhcmVuJ3QgaW50ZXJlc3RlZCBpbiBz ZWVpbmcgdGhlIGNvbnRlbnRzIG9mIGEgZmlsZSB0aGF0IHdhcw0KIyAgIHJlbW92ZWQgc2V0IHRo aXMgb3B0aW9uIHRvIHRydWUuICBUaGUgZmlsZXMgd2lsbCBzdGlsbCBhcHBlYXIgaW4gdGhlIGlu ZGV4DQojICAgYXQgdGhlIHRvcCBvZiB0aGUgZW1haWwuDQoNCiMkbm9fcmVtb3ZlZF9maWxlX2Rp ZmYgPSB0cnVlDQoNCg0KDQojIEVtYWlsIGNoYXJhY3RlciBzZXQgICAgICAgICAgICAgICAgICAg ICAgIChEZWZhdWx0OiBubyBjaGFyc2V0IHNwZWNpZmljYXRpb24pDQojDQojICAgICBBbGxvd3Mg dGhlIHNwZWNpZmljYXRpb24gb2YgYSBjaGFyYWN0ZXIgc2V0IGZvciBhbGwgZ2VuZXJhdGVkIGVt YWlscy4NCiMgICBUaGUgZmlsZXMgQ1ZTIGlzIGRlYWxpbmcgd2l0aCBzaG91bGQgYWxyZWFkeSBi ZSBpbiB0aGUgY2hhcmFjdGVyIHNldCB5b3UNCiMgICBzcGVjaWZ5IC0tIG5vIHRyYW5zY29kaW5n IGlzIGRvbmUuDQoNCiMkY2hhcnNldD0iSVNPLTg4NTktMSINCg0KDQoNCiMgRmlsZSBuYW1lcyBp biBTdWJqZWN0ICAgICAgICAgICAgICAgICAgICAgIChEZWZhdWx0OiBubyBmaWxlbmFtZXMgaW4g U3ViamVjdCkNCiMNCiMgICAgIFNvbWUgcGVvcGxlIGxpa2UgZmlsZSBuYW1lcyB0byBhcHBlYXIg aW4gdGhlIGVtYWlsIHN1YmplY3QuICBUbyBtYWtlDQojICAgdGhlbSBoYXBweSwgeW91IGNhbiBz YXkgJGZpbGVzX2luX3N1YmplY3QgPSB0cnVlIGhlcmUuDQoNCiMkZmlsZXNfaW5fc3ViamVjdCA9 IGZhbHNlDQo= ------_=_NextPart_001_01C3512C.E45343E8 Content-Type: application/octet-stream; name="cvsspam.rb" Content-Transfer-Encoding: base64 Content-Description: cvsspam.rb Content-Disposition: attachment; filename="cvsspam.rb" IyEvdXNyL2Jpbi9ydWJ5IC13DQoNCiMgUGFydCBvZiBDVlNzcGFtDQojICAgaHR0cDovL3d3dy5i YWRnZXJzLWluLWZvaWwuY28udWsvcHJvamVjdHMvY3Zzc3BhbS8NCiMgQ29weXJpZ2h0IChjKSBE YXZpZCBIb2xyb3lkDQoNCiMgY29sbGVjdF9kaWZmcy5yYiBleHBlY3RzIHRvIGZpbmQgdGhpcyBz Y3JpcHQgaW4gdGhlIHNhbWUgZGlyZWN0b3J5IGFzIGl0DQojDQoNCiMgVE9ETzogZXhlbXBsaWZ5 IHN5bnRheCBmb3IgJ2N2cyBhZG1pbiAtbScgd2hlbiBsb2cgbWVzc2FnZSBpcyBtaXNzaW5nDQoj IFRPRE86IG1ha2UgbWF4LWxpbmUgbGltaXQgb24gZGlmZiBvdXRwdXQgY29uZmlndXJhYmxlDQoj IFRPRE86IHB1dCBtYXggc2l6ZSBsaW1pdCBvbiB3aG9sZSBlbWFpbA0KIyBUT0RPOiBzdXBwb3J0 IG5vbi1odG1sIG1haWwgdG9vICh0ZXh0L3BsYWluLCBtdWx0aXBhcnQvYWx0ZXJuYXRpdmUpDQoN CiMgSWYgeW91IHdhbnQgYW5vdGhlciAndG9kbyBrZXl3b3JkJyAoVE9ETyAmIEZJWE1FIGFyZSBo aWdobGlnaHRlZCBieSBkZWZhdWx0KQ0KIyB5b3UgY291bGQgYWRkDQojICAgJHRhc2tfa2V5d29y ZHMgPDwgIktFWVdPUkQiIDw8ICJNQVlCRUFOT1RIRVJXT1JEIg0KIyB0byB5b3VyIGN2c3NwcGFt LmNvbmYNCg0KDQokdmVyc2lvbiA9ICIwLjIuNyINCg0KDQokbWF4U3ViamVjdExlbmd0aCA9IDIw MA0KJG1heExpbmVzUGVyRGlmZiA9IDEwMDANCiRjaGFyc2V0ID0gbmlsCQkJIyBuaWwgaW1wbGll cyAnZG9uJ3Qgc3BlY2lmeSBhIGNoYXJzZXQnDQokbWFpbFN1YmplY3QgPSBuaWwNCg0KZGVmIGJs YWgodGV4dCkNCiAgcHV0cygiY3Zzc3BhbS5yYjogI3t0ZXh0fSIpIGlmICRkZWJ1Zw0KZW5kDQoN CmRlZiBtaW4oYSwgYikNCiAgYTxiID8gYSA6IGINCmVuZA0KDQoNCiMgdGhlIHJlZ2V4cHMgZ2l2 ZW4gYXMga2V5cyBtdXN0IG5vdCB1c2UgY2FwdHVyaW5nIHN1YmV4cHJlc3Npb25zICcoLi4uKScN CmNsYXNzIE11bHRpU3ViDQogIGRlZiBpbml0aWFsaXplKGhhc2gpDQogICAgQG1hc2ggPSBBcnJh eS5uZXcNCiAgICBleHByID0gbmlsDQogICAgaGFzaC5lYWNoIGRvIHxrZXksdmFsfA0KICAgICAg aWYgZXhwciA9PSBuaWwgOyBleHByPSIoIiBlbHNlIGV4cHI8PCJ8KCIgZW5kDQogICAgICBleHBy IDw8IGtleSA8PCAiKSINCiAgICAgIEBtYXNoIDw8IHZhbA0KICAgIGVuZA0KICAgIEByZSA9IFJl Z2V4cC5uZXcoZXhwcikNCiAgZW5kDQoNCiAgZGVmIGdzdWIhKHRleHQpDQogICAgdGV4dC5nc3Vi IShAcmUpIHsgfG1hdGNofA0KICAgICAgaWR4ID0gLTENCiAgICAgICR+LnRvX2EuZWFjaCB7IHxz dWJleHB8DQogICAgICAgIGJyZWFrIHVubGVzcyBpZHg9PS0xIHx8IHN1YmV4cD09bmlsDQogICAg ICAgIGlkeCArPSAxDQogICAgICB9DQogICAgICBpZHg9PS0xID8gbWF0Y2ggOiBAbWFzaFtpZHhd LmNhbGwobWF0Y2gpDQogICAgfQ0KICBlbmQNCmVuZA0KDQojIExpbWl0ZWQgc3VwcG9ydCBmb3Ig ZW5jb2Rpbmcgbm9uLVVTX0FTQ0lJIGNoYXJhY3RlcnMgaW4gbWFpbCBoZWFkZXJzDQpjbGFzcyBI ZWFkZXJFbmNvZGVyDQogIGRlZiBpbml0aWFsaXplDQogICAgQHJpZ2h0X21hcmdpbiA9IDc4DQog ICAgQGVuY29kaW5nID0gJ3EnICMgcXVvdGVkLXByaW50YWJsZSwgYmFzZTY0IG5vdCBzdXBwb3J0 ZWQNCiAgICBAY2hhcnNldCA9IG5pbCAjIFRPRE86IHNvbWUgYmV0dGVyIGRlZmF1bHQ/DQogIGVu ZA0KDQogIGF0dHJfYWNjZXNzb3IgOmNoYXJzZXQNCg0KICBkZWYgZW5jb2RlX2hlYWRlcihpbywg bmFtZSwgdmFsdWUpDQogICAgbmFtZSA9IG5hbWUgKyAiOiAiDQogICAgaWYgcmVxdWlyZXNfcmZj MjA0Nz8odmFsdWUpDQogICAgICByZmMyMDQ3X2VuY29kZV9xdW90ZWQoaW8sIG5hbWUsIHZhbHVl KQ0KICAgIGVsc2UNCiAgICAgIHdyYXBfYmFzaWNfaGVhZGVyKGlvLCBuYW1lLCB2YWx1ZSkNCiAg ICBlbmQNCiAgZW5kDQoNCg0KICBkZWYgd3JhcF9iYXNpY19oZWFkZXIoaW8sIHN0YXJ0LCByZXN0 KQ0KICAgIHJlc3Quc2NhbigvXHMqXFMrLykgZG8gfG1hdGNofA0KICAgICAgaWYgc3RhcnQubGVu Z3RoPjAgJiYgc3RhcnQubGVuZ3RoK21hdGNoLmxlbmd0aD5AcmlnaHRfbWFyZ2luDQogICAgICAg IGlvLnB1dHMoc3RhcnQpDQogICAgICAgIHN0YXJ0ID0gIiAiDQogICAgICAgIG1hdGNoLnN1YiEo L15ccysvLCAiIikgIyBzdHJpcCBleGlzdGluZyBsZWFkaW5nLXdoaXRlc3BhY2UNCiAgICAgIGVu ZA0KICAgICAgc3RhcnQgPDwgbWF0Y2gNCiAgICBlbmQNCiAgICBpby5wdXRzKHN0YXJ0KQ0KICBl bmQNCg0KICBVTkRFUlNDT1JFID0gIl8iWzBdDQogIFNQQUNFID0gIiAiWzBdDQogIFRBQiA9ICJc dCJbMF0NCg0KICBkZWYgcmZjMjA0N19lbmNvZGVfcXVvdGVkKGlvLCBzdGFydCwgcmVzdCkNCiAg ICByYWlzZSAibm8gY2hhcnNldCIgaWYgQGNoYXJzZXQubmlsPw0KICAgIGNvZGVfYmVnaW4gPSAi PT8je0BjaGFyc2V0fT8je0BlbmNvZGluZ30/Ig0KICAgIHN0YXJ0IDw8IGNvZGVfYmVnaW4NCiAg ICByZXN0LmVhY2hfYnl0ZSBkbyB8YnwNCiAgICAgIGNvZGUgPSBpZiBiPjEyNiB8fCBiPT1VTkRF UlNDT1JFIHx8IGI9PVRBQg0KICAgICAgICBzcHJpbnRmKCI9JTAyeCIsIGIpDQogICAgICBlbHNp ZiBiID09IFNQQUNFDQogICAgICAgICJfIg0KICAgICAgZWxzZQ0KICAgICAgICBiLmNocg0KICAg ICAgZW5kDQoNCiAgICAgIGlmIHN0YXJ0Lmxlbmd0aCtjb2RlLmxlbmd0aCsyID4gQHJpZ2h0X21h cmdpbg0KICAgICAgICBpby5wdXRzKHN0YXJ0ICsgIj89IikNCiAgICAgICAgc3RhcnQgPSAiICIg KyBjb2RlX2JlZ2luDQogICAgICBlbmQNCiAgICAgIHN0YXJ0IDw8IGNvZGUNCiAgICBlbmQNCiAg ICBpby5wdXRzKHN0YXJ0ICsgIj89IikNCiAgZW5kDQoNCiBwcml2YXRlDQogIGRlZiByZXF1aXJl c19yZmMyMDQ3Pyh3b3JkKQ0KICAgICh3b3JkID1+IC9bXDE3Ny1cMzc3XS8pICE9IG5pbA0KICBl bmQNCmVuZA0KDQoNCmNsYXNzIExvZ1JlYWRlcg0KICBkZWYgaW5pdGlhbGl6ZShsb2dJTykNCiAg ICBAaW8gPSBsb2dJTw0KICAgIGFkdmFuY2UNCiAgZW5kDQoNCiAgZGVmIGN1cnJlbnRMaW5lQ29k ZSA7IEBsaW5lWzEsMV0gIGVuZA0KDQoNCiAgY2xhc3MgQ29uc3RyYWluZWRJTw0KICAgIGRlZiBp bml0aWFsaXplKHJlYWRlcikNCiAgICAgIEByZWFkZXIgPSByZWFkZXINCiAgICAgIEBsaW5lY29k ZSA9IHJlYWRlci5jdXJyZW50TGluZUNvZGUNCiAgICBlbmQNCg0KICAgIGRlZiBlYWNoDQogICAg ICByZXR1cm4gaWYgQHJlYWRlciA9PSBuaWwNCiAgICAgIHdoaWxlIHRydWUNCiAgICAgICAgeWll bGQgQHJlYWRlci5jdXJyZW50TGluZQ0KICAgICAgICBicmVhayB1bmxlc3MgQHJlYWRlci5hZHZh bmNlICYmIGN1cnJlbnRWYWxpZD8NCiAgICAgIGVuZA0KICAgICAgQHJlYWRlciA9IG5pbA0KICAg IGVuZA0KDQogICAgZGVmIGdldHMNCiAgICAgIHJldHVybiBuaWwgaWYgQHJlYWRlciA9PSBuaWwN CiAgICAgIGxpbmUgPSBAcmVhZGVyLmN1cnJlbnRMaW5lDQogICAgICByZXR1cm4gbmlsIGlmIGxp bmU9PW5pbCB8fCAhY3VycmVudFZhbGlkPw0KICAgICAgQHJlYWRlci5hZHZhbmNlDQogICAgICBy ZXR1cm4gbGluZQ0KICAgIGVuZA0KDQogICAgZGVmIGN1cnJlbnRWYWxpZD8NCiAgICAgIEBsaW5l Y29kZSA9PSBAcmVhZGVyLmN1cnJlbnRMaW5lQ29kZQ0KICAgIGVuZA0KICBlbmQNCg0KICBkZWYg Z2V0TGluZXMNCiAgICBDb25zdHJhaW5lZElPLm5ldyhzZWxmKQ0KICBlbmQNCg0KICBkZWYgZW9m IDsgQGxpbmU9PW5pbCAgZW5kDQoNCiAgZGVmIGFkdmFuY2UNCiAgICBAbGluZSA9IEBpby5nZXRz DQogICAgcmV0dXJuIGZhbHNlIGlmIEBsaW5lID09IG5pbA0KICAgIHVubGVzcyBAbGluZVswLDFd ID09ICIjIg0KICAgICAgcmFpc2UgIiN7JGxvZ2ZpbGV9OiN7QGlvLmxpbmVub30gbGluZSBkaWQg bm90IGJlZ2luIHdpdGggJyMnOiAje0BsaW5lfSINCiAgICBlbmQNCiAgICByZXR1cm4gdHJ1ZQ0K ICBlbmQNCg0KICBkZWYgY3VycmVudExpbmUNCiAgICBAbGluZT09bmlsID8gbmlsIDogQGxpbmVb MywgQGxpbmUubGVuZ3RoLTRdDQogIGVuZA0KZW5kDQoNCg0KZGVmIGh0bWxFbmNvZGUodGV4dCkN CiAgdGV4dC5nc3ViKC8uLykgZG8NCiAgICBjYXNlICQmDQogICAgICB3aGVuICImIiB0aGVuICIm YW1wOyINCiAgICAgIHdoZW4gIjwiIHRoZW4gIiZsdDsiDQogICAgICB3aGVuICI+IiB0aGVuICIm Z3Q7Ig0KICAgICAgZWxzZSAkJg0KICAgIGVuZA0KICBlbmQNCmVuZA0KDQojIGFjdHVhbGx5LCBh bGxvd3MgJy8nIHRvIGFwcGVhcg0KZGVmIHVybEVuY29kZSh0ZXh0KQ0KICB0ZXh0LnN1YigvW15h LXpBLVowLTlcLSwuKl9cL10vKSBkbw0KICAgICIlI3tzcHJpbnRmKCclMlgnLCAkJlswXSl9Ig0K ICBlbmQNCmVuZA0KDQojIGEgdG9wLWxldmVsIGRpcmVjdG9yeSB1bmRlciB0aGUgJENWU1JPT1QN CmNsYXNzIFJlcG9zaXRvcnkNCiAgQEByZXBvc2l0b3JpZXMgPSBIYXNoLm5ldw0KDQogIGRlZiBp bml0aWFsaXplKG5hbWUpDQogICAgQG5hbWUgPSBuYW1lDQogICAgQGNvbW1vbl9wcmVmaXggPSBu aWwNCiAgICBAYWxsX3RhZ3MgPSBIYXNoLm5ldw0KICBlbmQNCg0KICBkZWYgYWRkX3RhZyh0YWdf bmFtZSkNCiAgICBpZiBAYWxsX3RhZ3NbdGFnX25hbWVdDQogICAgICBAYWxsX3RhZ3NbdGFnX25h bWVdICs9IDENCiAgICBlbHNlDQogICAgICBAYWxsX3RhZ3NbdGFnX25hbWVdID0gMQ0KICAgIGVu ZCANCiAgZW5kDQoNCiAgZGVmIGhhc19tdWx0aXBsZV90YWdzDQogICAgQGFsbF90YWdzLmxlbmd0 aCA+IDENCiAgZW5kDQoNCiAgZGVmIGVhY2hfdGFnDQogICAgQGFsbF90YWdzLmVhY2hfa2V5IGRv IHx0YWd8DQogICAgICB5aWVsZCB0YWcNCiAgICBlbmQNCiAgZW5kDQoNCiAgZGVmIHRydW5rX29u bHk/DQogICAgQGFsbF90YWdzLmxlbmd0aD09MSAmJiBAYWxsX3RhZ3NbbmlsXSE9bmlsDQogIGVu ZA0KDQogIGRlZiBtaXhlZF90YWdzPw0KICAgIEBhbGxfdGFncy5sZW5ndGg+MQ0KICBlbmQNCg0K ICBkZWYgdGFnX2NvdW50DQogICAgQGFsbF90YWdzLmxlbmd0aA0KICBlbmQNCg0KICAjIGNhbGN1 bGF0ZSB0aGUgcGF0aCBwcmVmaXggc2hhcmVkIGJ5IGFsbCBmaWxlcyBjb21taXRlZCB0byB0aGlz DQogICMgcmVwb3NvdG9yeQ0KICBkZWYgbWVyZ2VfY29tbW9uX3ByZWZpeChwYXRoKQ0KICAgIGlm IEBjb21tb25fcHJlZml4ID09IG5pbA0KICAgICAgQGNvbW1vbl9wcmVmaXggPSBwYXRoLmR1cA0K ICAgIGVsc2UNCiAgICAgIHBhdGggPSBwYXRoLmR1cA0KICAgICAgdW50aWwgQGNvbW1vbl9wcmVm aXggPT0gcGF0aA0KICAgICAgICBpZiBAY29tbW9uX3ByZWZpeC5zaXplPnBhdGguc2l6ZQ0KICAg ICAgICAgIGlmIEBjb21tb25fcHJlZml4LnN1YiEoLyguKilcLy4qJC8sICdcMScpLm5pbD8NCiAg ICAgICAgICAgIHJhaXNlICJ1bmFibGUgdG8gbWVyZ2UgJyN7cGF0aH0nIGluIHRvICcje0Bjb21t b25fcHJlZml4fSc6IHByZWZpeCB0b3RhbGx5IGRpZmZlcmVudCINCiAgICAgICAgICBlbmQNCiAg ICAgICAgZWxzZQ0KICAgICAgICAgIGlmIHBhdGguc3ViISgvKC4qKVwvLiokLywgJ1wxJykubmls Pw0KICAgICAgICAgICAgcmFpc2UgInVuYWJsZSB0byBtZXJnZSAnI3twYXRofScgaW4gdG8gJyN7 QGNvbW1vbl9wcmVmaXh9JzogcHJlZml4IHRvdGFsbHkgZGlmZmVyZW50Ig0KICAgICAgICAgIGVu ZA0KICAgICAgICBlbmQNCiAgICAgIGVuZA0KICAgIGVuZA0KICBlbmQNCg0KICBhdHRyX3JlYWRl ciA6bmFtZSwgOmNvbW1vbl9wcmVmaXgNCg0KICBkZWYgUmVwb3NpdG9yeS5nZXQobmFtZSkNCiAg ICBuYW1lID1+IC9eW15cL10rLw0KICAgIG5hbWUgPSAkJg0KICAgIHJlcCA9IEBAcmVwb3NpdG9y aWVzW25hbWVdDQogICAgaWYgcmVwLm5pbD8NCiAgICAgIHJlcCA9ICBSZXBvc2l0b3J5Lm5ldyhu YW1lKQ0KICAgICAgQEByZXBvc2l0b3JpZXNbbmFtZV0gPSByZXANCiAgICBlbmQNCiAgICByZXAN CiAgZW5kDQoNCiAgZGVmIFJlcG9zaXRvcnkuY291bnQNCiAgICBAQHJlcG9zaXRvcmllcy5zaXpl DQogIGVuZA0KDQogIGRlZiBSZXBvc2l0b3J5LmVhY2gNCiAgICBAQHJlcG9zaXRvcmllcy5lYWNo X3ZhbHVlIGRvIHxyZXB8DQogICAgICB5aWVsZCByZXANCiAgICBlbmQNCiAgZW5kDQoNCiAgZGVm IFJlcG9zaXRvcnkuYXJyYXkNCiAgICBAQHJlcG9zaXRvcmllcy52YWx1ZXMNCiAgZW5kDQoNCiAg ZGVmIHRvX3MNCiAgICBpZiB0cnVua19vbmx5Pw0KICAgICAgQG5hbWUNCiAgICBlbHNpZiBtaXhl ZF90YWdzPw0KICAgICAgIiN7QG5hbWV9QC4uIg0KICAgIGVsc2UNCiAgICAgICIje0BuYW1lfUAj e0BhbGxfdGFncy5rZXlzWzBdfSINCiAgICBlbmQNCiAgZW5kDQplbmQNCg0KY2xhc3MgRmlsZUVu dHJ5DQogIGRlZiBpbml0aWFsaXplKHBhdGgpDQogICAgQHBhdGggPSBwYXRoDQogICAgQGxpbmVB ZGRpdGlvbnMgPSBAbGluZVJlbW92YWxzID0gMA0KICAgIEByZXBvc2l0b3J5ID0gUmVwb3NpdG9y eS5nZXQocGF0aCkNCiAgICBAcmVwb3NpdG9yeS5tZXJnZV9jb21tb25fcHJlZml4KGJhc2VkaXIo KSkNCiAgICBAaXNFbXB0eSA9IEBpc0JpbmFyeSA9IGZhbHNlDQogIGVuZA0KDQogIGF0dHJfYWNj ZXNzb3IgOnBhdGgsIDp0eXBlLCA6bGluZUFkZGl0aW9ucywgOmxpbmVSZW1vdmFscywgOmlzQmlu YXJ5LCA6aXNFbXB0eSwgOmZyb21WZXIsIDp0b1Zlcg0KDQogIGRlZiBmaWxlDQogICAgQHBhdGgg PX4gLy4qXC8oLiopLw0KICAgICQxDQogIGVuZA0KDQogIGRlZiB0YWc9KG5hbWUpDQogICAgQHRh ZyA9IG5hbWUNCiAgICBAcmVwb3NpdG9yeS5hZGRfdGFnKG5hbWUpDQogIGVuZA0KDQogIGRlZiB0 YWcNCiAgICBAdGFnDQogIGVuZA0KDQogIGRlZiBiYXNlZGlyDQogICAgQHBhdGggPX4gLyguKilc Ly4qLw0KICAgICQxDQogIGVuZA0KDQogIGRlZiByZXBvc2l0b3J5DQogICAgQHJlcG9zaXRvcnkN CiAgZW5kDQoNCiAgZGVmIG5hbWVfYWZ0ZXJfY29tbW9uX3ByZWZpeA0KICAgIEBwYXRoLnNsaWNl KEByZXBvc2l0b3J5LmNvbW1vbl9wcmVmaXguc2l6ZSsxLEBwYXRoLnNpemUtQHJlcG9zaXRvcnku Y29tbW9uX3ByZWZpeC5zaXplLTEpDQogIGVuZA0KDQogIGRlZiByZW1vdmFsPw0KICAgIEB0eXBl ID09ICJSIg0KICBlbmQNCg0KICBkZWYgYWRkaXRpb24/DQogICAgQHR5cGUgPT0gIkEiDQogIGVu ZA0KDQogIGRlZiBtb2RpZmljYXRpb24/DQogICAgQHR5cGUgPT0gIk0iDQogIGVuZA0KZW5kDQoN Cg0KY2xhc3MgTGluZUNvbnN1bWVyDQogIGRlZiBoYW5kbGVMaW5lcyhsaW5lcywgZW1haWxJTykN CiAgICBAZW1haWxJTyA9IGVtYWlsSU8NCiAgICBAbGluZUNvdW50ID0gMA0KICAgIHNldHVwDQog ICAgbGluZXMuZWFjaCBkbyB8bGluZXwNCiAgICAgIEBsaW5lQ291bnQgKz0gMQ0KICAgICAgY29u c3VtZShsaW5lKQ0KICAgIGVuZA0KICAgIHRlYXJkb3duDQogIGVuZA0KDQogIGRlZiBzZXR1cA0K ICBlbmQNCg0KICBkZWYgdGVhcmRvd24NCiAgZW5kDQoNCiAgZGVmIGxpbmVubw0KICAgIEBsaW5l Q291bnQNCiAgZW5kDQoNCiAgZGVmIHByaW50bG4odGV4dCkNCiAgICBAZW1haWxJTy5wdXRzKHRl eHQpDQogIGVuZA0KDQogIGRlZiBwcmludCh0ZXh0KQ0KICAgIEBlbWFpbElPLnByaW50KHRleHQp DQogIGVuZA0KZW5kDQoNCg0KIyBUT0RPOiBjb25zb2xpZGF0ZSB0aGVzZSBpbnRvIGEgbmljZXIg ZnJhbWV3b3JrLA0KbWFpbFN1YiA9IHByb2MgeyB8bWF0Y2h8ICI8YSBocmVmPVwibWFpbHRvOiN7 bWF0Y2h9XCI+I3ttYXRjaH08L2E+IiB9DQp1cmxTdWIgPSBwcm9jIHsgfG1hdGNofCAiPGEgaHJl Zj1cIiN7bWF0Y2h9XCI+I3ttYXRjaH08L2E+IiB9DQpidWd6aWxsYVN1YiA9IHByb2MgeyB8bWF0 Y2h8DQogIG1hdGNoID1+IC8oWzAtOV0rKS8NCiAgIjxhIGhyZWY9XCIjeyRidWd6aWxsYVVSTC5z dWIoLyVzLywgJDEpfVwiPiN7bWF0Y2h9PC9hPiINCn0NCmppcmFTdWIgPSBwcm9jIHsgfG1hdGNo fA0KICAiPGEgaHJlZj1cIiN7JGppcmFVUkwuc3ViKC8lcy8sIG1hdGNoKX1cIj4je21hdGNofTwv YT4iDQp9DQp0aWNrZXRTdWIgPSBwcm9jIHsgfG1hdGNofA0KICBtYXRjaCA9fiAvKFswLTldKykv DQogICI8YSBocmVmPVwiI3skdGlja2V0VVJMLnN1YigvJXMvLCAkMSl9XCI+I3ttYXRjaH08L2E+ Ig0KfQ0KY29tbWVudFN1YnN0aXR1dGlvbnMgPSB7DQoJCScoPzptYWlsdG86KT9bXHdcLlwtXCtc PV0rXEBbXHdcLV0rKD86XC5bXHdcLV0rKStcYicgPT4gbWFpbFN1YiwNCgkJJ1xiKD86aHR0cHxo dHRwc3xmdHApOlteIFx0XG48PiJdK1tcdy9dJyA9PiB1cmxTdWJ9DQoNCg0KY2xhc3MgQ29tbWVu dEhhbmRsZXIgPCBMaW5lQ29uc3VtZXINCiAgZGVmIGluaXRpYWxpemUNCiAgICBAbGFzdENvbW1l bnQgPSBuaWwNCiAgZW5kDQoNCiAgZGVmIHNldHVwDQogICAgQGhhdmVCbGFuayA9IGZhbHNlDQog ICAgQGNvbW1lbnQgPSAiIg0KICBlbmQNCg0KICBkZWYgY29uc3VtZShsaW5lKQ0KICAgIGlmIGxp bmUgPX4gL15ccyokLw0KICAgICAgQGhhdmVCbGFuayA9IHRydWUNCiAgICBlbHNlDQogICAgICBp ZiBAaGF2ZUJsYW5rDQogICAgICAgIEBjb21tZW50ICs9ICJcbiINCiAgICAgICAgQGhhdmVCbGFu ayA9IGZhbHNlDQogICAgICBlbmQNCiAgICAgICRtYWlsU3ViamVjdCA9IGxpbmUgaWYgJG1haWxT dWJqZWN0ID09IG5pbA0KICAgICAgQGNvbW1lbnQgKz0gbGluZSArPSAiXG4iDQogICAgZW5kDQog IGVuZA0KDQogIGRlZiB0ZWFyZG93bg0KICAgIHVubGVzcyBAY29tbWVudCA9PSBAbGFzdENvbW1l bnQNCiAgICAgIHByaW50bG4oIjxwcmUgY2xhc3M9XCJjb21tZW50XCI+IikNCiAgICAgIGVuY29k ZWQgPSBodG1sRW5jb2RlKEBjb21tZW50KQ0KICAgICAgJGNvbW1lbnRFbmNvZGVyLmdzdWIhKGVu Y29kZWQpDQogICAgICBwcmludGxuKGVuY29kZWQpDQogICAgICBwcmludGxuKCI8L3ByZT4iKQ0K ICAgICAgQGxhc3RDb21tZW50ID0gQGNvbW1lbnQNCiAgICBlbmQNCiAgZW5kDQplbmQNCg0KDQpj bGFzcyBUYWdIYW5kbGVyIDwgTGluZUNvbnN1bWVyDQogIGRlZiBpbml0aWFsaXplDQogICAgQHRh ZyA9IG5pbA0KICBlbmQNCg0KICBkZWYgY29uc3VtZShsaW5lKQ0KICAgICMgVE9ETzogY2hlY2sg dGhlcmUgaXMgb25seSBvbmUgbGluZQ0KICAgIEB0YWcgPSBsaW5lDQogIGVuZA0KDQogIGRlZiBn ZXRMYXN0VGFnDQogICAgdG1wID0gQHRhZw0KICAgIEB0YWcgPSBuaWwNCiAgICB0bXANCiAgZW5k DQplbmQNCg0KY2xhc3MgVmVyc2lvbkhhbmRsZXIgPCBMaW5lQ29uc3VtZXINCiAgZGVmIGNvbnN1 bWUobGluZSkNCiAgICAjIFRPRE86IGNoZWNrIHRoZXJlIGlzIG9ubHkgb25lIGxpbmUNCiAgICAk ZnJvbVZlciwkdG9WZXIgPSBsaW5lLnNwbGl0KC8sLykNCiAgZW5kDQplbmQNCg0KDQpjbGFzcyBG aWxlSGFuZGxlciA8IExpbmVDb25zdW1lcg0KICBkZWYgc2V0VGFnSGFuZGxlcihoYW5kbGVyKQ0K ICAgIEB0YWdIYW5kbGVyID0gaGFuZGxlcg0KICBlbmQNCg0KICBkZWYgc2V0dXANCiAgICAkZmls ZUhlYWRlckh0bWwgPSAnJw0KICAgIHByaW50bG4oIjxociAvPjxhIG5hbWU9XCJmaWxlI3skZmls ZUVudHJpZXMuc2l6ZSsxfVwiIC8+PGRpdiBjbGFzcz1cImZpbGVcIj4iKQ0KICBlbmQNCg0KICBk ZWYgY29uc3VtZShsaW5lKQ0KICAgICRmaWxlID0gRmlsZUVudHJ5Lm5ldyhsaW5lKQ0KICAgICRm aWxlRW50cmllcyA8PCAkZmlsZQ0KICAgICRmaWxlLnRhZyA9IGdldFRhZw0KICAgIGhhbmRsZUZp bGUoJGZpbGUpDQogIGVuZA0KDQogcHJvdGVjdGVkDQogIGRlZiBnZXRUYWcNCiAgICBAdGFnSGFu ZGxlci5nZXRMYXN0VGFnDQogIGVuZA0KDQogIGRlZiBwcmludGxuKHRleHQpDQogICAgJGZpbGVI ZWFkZXJIdG1sIDw8IHRleHQgPDwgIlxuIg0KICBlbmQNCg0KICBkZWYgcHJpbnQodGV4dCkNCiAg ICAkZmlsZUhlYWRlckh0bWwgPDwgdGV4dA0KICBlbmQNCmVuZA0KDQoNCiMgZG9uJ3QgbWFrZSBh bnkgbGlua3MNCmNsYXNzIE5vRnJvbnRlbmQNCiAgZGVmIHBhdGgocGF0aCwgdGFnKQ0KICAgIGh0 bWxFbmNvZGUocGF0aCkNCiAgZW5kDQoNCiAgZGVmIHZlcnNpb24ocGF0aCwgdmVyc2lvbikNCiAg ICB2ZXJzaW9uDQogIGVuZA0KDQogIGRlZiBkaWZmKGZpbGUpDQogICAgJy0mZ3Q7Jw0KICBlbmQN CmVuZA0KDQojIFN1cGVyY2xhc3MgZm9yIG9iamVjdHMgdGhhdCBjYW4gbGluayB0byBDVlMgZnJv bnRlbmRzIG9uIHRoZSB3ZWIgKFZpZXdDVlMsDQojIENob3JhLCBldGMuKS4NCmNsYXNzIFdlYkZy b250ZW5kIDwgTm9Gcm9udGVuZA0KICBkZWYgaW5pdGlhbGl6ZShiYXNlX3VybCkNCiAgICBAYmFz ZV91cmwgPSBiYXNlX3VybA0KICBlbmQNCg0KICBkZWYgcGF0aChwYXRoLCB0YWcpDQogICAgcGF0 aF9mb3JfaHJlZiA9ICIiDQogICAgcmVzdWx0ID0gIiINCiAgICBwYXRoLnNwbGl0KCIvIikuZWFj aCBkbyB8Y29tcG9uZW50fA0KICAgICAgdW5sZXNzIHJlc3VsdCA9PSAiIg0KICAgICAgICByZXN1 bHQgPDwgIi8iDQogICAgICAgIHBhdGhfZm9yX2hyZWYgPDwgIi8iDQogICAgICBlbmQNCiAgICAg IHBhdGhfZm9yX2hyZWYgPDwgY29tcG9uZW50DQogICAgICByZXN1bHQgPDwgIjxhIGhyZWY9XCIj e3BhdGhfdXJsKHBhdGhfZm9yX2hyZWYsIHRhZyl9XCI+I3todG1sRW5jb2RlKGNvbXBvbmVudCl9 PC9hPiINCiAgICBlbmQNCiAgICByZXN1bHQNCiAgZW5kDQoNCiAgZGVmIHZlcnNpb24ocGF0aCwg dmVyc2lvbikNCiAgICAiPGEgaHJlZj1cIiN7dmVyc2lvbl91cmwocGF0aCwgdmVyc2lvbil9XCI+ I3t2ZXJzaW9ufTwvYT4iDQogIGVuZA0KDQogIGRlZiBkaWZmKGZpbGUpDQogICAgIjxhIGhyZWY9 XCIje2RpZmZfdXJsKGZpbGUpfVwiPiN7c3VwZXIoZmlsZSl9PC9hPiINCiAgZW5kDQplbmQNCg0K IyBMaW5rIHRvIFZpZXdDVlMNCmNsYXNzIFZpZXdDVlNGcm9udGVuZCA8IFdlYkZyb250ZW5kDQog IGRlZiBwYXRoX3VybChwYXRoLCB0YWcpDQogICAgaWYgdGFnID09IG5pbA0KICAgICAgQGJhc2Vf dXJsICsgdXJsRW5jb2RlKHBhdGgpDQogICAgZWxzZQ0KICAgICAgIiN7QGJhc2VfdXJsfSN7dXJs RW5jb2RlKHBhdGgpfT9vbmx5X3dpdGhfdGFnPSN7dXJsRW5jb2RlKHRhZyl9Ig0KICAgIGVuZA0K ICBlbmQNCg0KICBkZWYgdmVyc2lvbl91cmwocGF0aCwgdmVyc2lvbikNCiAgICAiI3tAYmFzZV91 cmx9I3t1cmxFbmNvZGUocGF0aCl9P3Jldj0je3ZlcnNpb259JmFtcDtjb250ZW50LXR5cGU9dGV4 dC92bmQudmlld2N2cy1tYXJrdXAiDQogIGVuZA0KDQogIGRlZiBkaWZmX3VybChmaWxlKQ0KICAg ICIje0BiYXNlX3VybH0je3VybEVuY29kZShmaWxlLnBhdGgpfS5kaWZmP3IxPSN7ZmlsZS5mcm9t VmVyfSZhbXA7cjI9I3tmaWxlLnRvVmVyfSINCiAgZW5kDQplbmQNCg0KIyBMaW5rIHRvIENob3Jh LCBmcm9tIHRoZSBIb2FyZCBmcmFtZXdvcmsNCmNsYXNzIENob3JhRnJvbnRlbmQgPCBXZWJGcm9u dGVuZA0KICBkZWYgcGF0aF91cmwocGF0aCwgdGFnKQ0KICAgICMgVE9ETzogY2FuIHdlIHBhc3Mg dGhlIHRhZyBzb21laG93Pw0KICAgICIje0BiYXNlX3VybH0vY3ZzLnBocC8je3VybEVuY29kZShw YXRoKX0iDQogIGVuZA0KDQogIGRlZiB2ZXJzaW9uX3VybChwYXRoLCB2ZXJzaW9uKQ0KICAgICIj e0BiYXNlX3VybH0vY28ucGhwLyN7dXJsRW5jb2RlKHBhdGgpfT9yPSN7dmVyc2lvbn0iDQogIGVu ZA0KDQogIGRlZiBkaWZmX3VybChmaWxlKQ0KICAgICIje0BiYXNlX3VybH0vZGlmZi5waHAvI3t1 cmxFbmNvZGUoZmlsZS5wYXRoKX0/cjE9I3tmaWxlLmZyb21WZXJ9JnIyPSN7ZmlsZS50b1Zlcn0i DQogIGVuZA0KZW5kDQoNCiMgTGluayB0byBDVlN3ZWINCmNsYXNzIENWU3dlYkZyb250ZW5kIDwg V2ViRnJvbnRlbmQNCiAgZGVmIHBhdGhfdXJsKHBhdGgsIHRhZykNCiAgICBpZiB0YWcgPT0gbmls DQogICAgICBAYmFzZV91cmwgKyB1cmxFbmNvZGUocGF0aCkNCiAgICBlbHNlDQogICAgICAiI3tA YmFzZV91cmx9I3t1cmxFbmNvZGUocGF0aCl9P29ubHlfd2l0aF90YWc9I3t1cmxFbmNvZGUodGFn KX0iDQogICAgZW5kDQogIGVuZA0KDQogIGRlZiB2ZXJzaW9uX3VybChwYXRoLCB2ZXJzaW9uKQ0K ICAgICIje0BiYXNlX3VybH0je3VybEVuY29kZShwYXRoKX0/cmV2PSN7dmVyc2lvbn0mYW1wO2Nv bnRlbnQtdHlwZT10ZXh0L3gtY3Zzd2ViLW1hcmt1cCINCiAgZW5kDQoNCiAgZGVmIGRpZmZfdXJs KGZpbGUpDQogICAgIiN7QGJhc2VfdXJsfSN7dXJsRW5jb2RlKGZpbGUucGF0aCl9LmRpZmY/cjE9 dGV4dCZhbXA7dHIxPSN7ZmlsZS5mcm9tVmVyfSZhbXA7cjI9dGV4dCZhbXA7dHIyPSN7ZmlsZS50 b1Zlcn0mYW1wO2Y9aCINCiAgZW5kDQplbmQNCg0KDQojIGluIG5lZWQgb2YgcmVmYWN0b3Jpbmcu Li4NCg0KY2xhc3MgQWRkZWRGaWxlSGFuZGxlciA8IEZpbGVIYW5kbGVyDQogIGRlZiBoYW5kbGVG aWxlKGZpbGUpDQogICAgZmlsZS50eXBlPSJBIg0KICAgIGZpbGUudG9WZXI9JHRvVmVyDQogICAg cHJpbnQoIjxzcGFuIGNsYXNzPVwicGF0aG5hbWVcIiBpZD1cImFkZGVkXCI+IikNCiAgICBwcmlu dCgkZnJvbnRlbmQucGF0aChmaWxlLmJhc2VkaXIsIGZpbGUudGFnKSkNCiAgICBwcmludGxuKCI8 YnIgLz48L3NwYW4+IikNCiAgICBwcmludGxuKCI8ZGl2IGNsYXNzPVwiZmlsZWhlYWRlclwiIGlk PVwiYWRkZWRcIj48YmlnPjxiPiN7aHRtbEVuY29kZShmaWxlLmZpbGUpfTwvYj48L2JpZz4gPHNt YWxsIGlkPVwiaW5mb1wiPmFkZGVkIGF0ICN7JGZyb250ZW5kLnZlcnNpb24oZmlsZS5wYXRoLGZp bGUudG9WZXIpfTwvc21hbGw+PC9kaXY+IikNCiAgZW5kDQplbmQNCg0KY2xhc3MgUmVtb3ZlZEZp bGVIYW5kbGVyIDwgRmlsZUhhbmRsZXINCiAgZGVmIGhhbmRsZUZpbGUoZmlsZSkNCiAgICBmaWxl LnR5cGU9IlIiDQogICAgZmlsZS5mcm9tVmVyPSRmcm9tVmVyDQogICAgcHJpbnQoIjxzcGFuIGNs YXNzPVwicGF0aG5hbWVcIiBpZD1cInJlbW92ZWRcIj4iKQ0KICAgIHByaW50KCRmcm9udGVuZC5w YXRoKGZpbGUuYmFzZWRpciwgZmlsZS50YWcpKQ0KICAgIHByaW50bG4oIjxiciAvPjwvc3Bhbj4i KQ0KICAgIHByaW50bG4oIjxkaXYgY2xhc3M9XCJmaWxlaGVhZGVyXCIgaWQ9XCJyZW1vdmVkXCI+ PGJpZz48Yj4je2h0bWxFbmNvZGUoZmlsZS5maWxlKX08L2I+PC9iaWc+IDxzbWFsbCBpZD1cImlu Zm9cIj5yZW1vdmVkIGFmdGVyICN7JGZyb250ZW5kLnZlcnNpb24oZmlsZS5wYXRoLGZpbGUuZnJv bVZlcil9PC9zbWFsbD48L2Rpdj4iKQ0KICBlbmQNCmVuZA0KDQpjbGFzcyBNb2RpZmllZEZpbGVI YW5kbGVyIDwgRmlsZUhhbmRsZXINCiAgZGVmIGhhbmRsZUZpbGUoZmlsZSkNCiAgICBmaWxlLnR5 cGU9Ik0iDQogICAgZmlsZS5mcm9tVmVyPSRmcm9tVmVyDQogICAgZmlsZS50b1Zlcj0kdG9WZXIN CiAgICBwcmludCgiPHNwYW4gY2xhc3M9XCJwYXRobmFtZVwiPiIpDQogICAgcHJpbnQoJGZyb250 ZW5kLnBhdGgoZmlsZS5iYXNlZGlyLCBmaWxlLnRhZykpDQogICAgcHJpbnRsbigiPGJyIC8+PC9z cGFuPiIpDQogICAgcHJpbnRsbigiPGRpdiBjbGFzcz1cImZpbGVoZWFkZXJcIj48YmlnPjxiPiN7 aHRtbEVuY29kZShmaWxlLmZpbGUpfTwvYj48L2JpZz4gPHNtYWxsIGlkPVwiaW5mb1wiPiN7JGZy b250ZW5kLnZlcnNpb24oZmlsZS5wYXRoLGZpbGUuZnJvbVZlcil9ICN7JGZyb250ZW5kLmRpZmYo ZmlsZSl9ICN7JGZyb250ZW5kLnZlcnNpb24oZmlsZS5wYXRoLGZpbGUudG9WZXIpfTwvc21hbGw+ PC9kaXY+IikNCiAgZW5kDQplbmQNCg0KDQpjbGFzcyBVbmlmaWVkRGlmZlN0YXRzDQogIGRlZiBp bml0aWFsaXplDQogICAgQGRpZmZMaW5lcz0zICAjIHRoZSB0aHJlZSBpbml0aWFsIGxpbmVzIGlu IHRoZSB1bmlkaWZmDQogIGVuZA0KDQogIGRlZiBkaWZmTGluZXMNCiAgICBAZGlmZkxpbmVzDQog IGVuZA0KDQogIGRlZiBjb25zdW1lKGxpbmUpDQogICAgQGRpZmZMaW5lcyArPSAxDQogICAgY2Fz ZSBsaW5lWzAsMV0NCiAgICAgIHdoZW4gIisiIHRoZW4gJGZpbGUubGluZUFkZGl0aW9ucyArPSAx DQogICAgICB3aGVuICItIiB0aGVuICRmaWxlLmxpbmVSZW1vdmFscyArPSAxDQogICAgZW5kDQog IGVuZA0KZW5kDQoNCiMgVE9ETzogY2hhbmdlLXdpdGhpbi1saW5lIGNvbG91cmlzYXRpb24gc2hv dWxkIHJlYWxseSBiZSBjb21wYXJpbmcgdGhlDQojICAgICAgIHNldCBvZiBsaW5lcyBqdXN0IHJl bW92ZWQgd2l0aCB0aGUgc2V0IG9mIGxpbmVzIGp1c3QgYWRkZWQsIGJ1dA0KIyAgICAgICBpdCBj dXJyZW50bHkgY29uc2lkZXJzIGp1c3QgYSBzaW5nbGUgbGluZQ0KDQpjbGFzcyBVbmlmaWVkRGlm ZkNvbG91cmlzZXIgPCBMaW5lQ29uc3VtZXINCiAgZGVmIGluaXRpYWxpemUNCiAgICBAY3VycmVu dFN0YXRlID0gIkAiDQogICAgQGN1cnJlbnRTdHlsZSA9ICJpbmZvIg0KICAgIEBsaW5lSnVzdERl bGV0ZWQgPSBuaWwNCiAgZW5kDQoNCiAgZGVmIG91dHB1dD0oaW8pDQogICAgQGVtYWlsSU8gPSBp bw0KICBlbmQNCg0KICBkZWYgY29uc3VtZShsaW5lKQ0KICAgIGluaXRpYWwgPSBsaW5lWzAsMV0N CiAgICBpZiBpbml0aWFsICE9IEBjdXJyZW50U3RhdGUNCiAgICAgIHByZWZpeExlbiA9IDENCiAg ICAgIHN1ZmZpeExlbiA9IDANCiAgICAgIGlmIGluaXRpYWw9PSIrIiAmJiBAY3VycmVudFN0YXRl PT0iLSIgJiYgQGxpbmVKdXN0RGVsZXRlZCE9bmlsDQogICAgICAgICMgbWF5IGJlIGFuIGVkaXQs IHRyeSB0byBoaWdobGlnaHQgdGhlIGNoYW5nZXMgcGFydCBvZiB0aGUgbGluZQ0KICAgICAgICBh ID0gbGluZVsxLGxpbmUubGVuZ3RoLTFdDQogICAgICAgIGIgPSBAbGluZUp1c3REZWxldGVkWzEs QGxpbmVKdXN0RGVsZXRlZC5sZW5ndGgtMV0NCiAgICAgICAgcHJlZml4TGVuID0gY29tbW9uUHJl Zml4TGVuZ3RoKGEsIGIpKzENCiAgICAgICAgc3VmZml4TGVuID0gY29tbW9uUHJlZml4TGVuZ3Ro KGEucmV2ZXJzZSwgYi5yZXZlcnNlKQ0KICAgICAgICAjIHByZXZlbnQgcHJlZml4L3N1ZmZ1eCBo YXZpbmcgb3ZlcmxhcCwNCiAgICAgICAgc3VmZml4TGVuID0gbWluKHN1ZmZpeExlbiwgbWluKGxp bmUubGVuZ3RoLEBsaW5lSnVzdERlbGV0ZWQubGVuZ3RoKS1wcmVmaXhMZW4pDQogICAgICAgIGRl bGV0ZUluZml4U2l6ZSA9IEBsaW5lSnVzdERlbGV0ZWQubGVuZ3RoIC0gKHByZWZpeExlbitzdWZm aXhMZW4pDQogICAgICAgIGFkZEluZml4U2l6ZSA9IGxpbmUubGVuZ3RoIC0gKHByZWZpeExlbitz dWZmaXhMZW4pDQogICAgICAgIG92ZXJzaXplX2NoYW5nZSA9IGRlbGV0ZUluZml4U2l6ZSoxMDAv QGxpbmVKdXN0RGVsZXRlZC5sZW5ndGg+MzMgfHwgYWRkSW5maXhTaXplKjEwMC9saW5lLmxlbmd0 aD4zMw0KDQogICAgICAgIGlmIHByZWZpeExlbj09MSAmJiBzdWZmaXhMZW49PTAgfHwgZGVsZXRl SW5maXhTaXplPD0wIHx8IG92ZXJzaXplX2NoYW5nZQ0KICAgICAgICAgIHByaW50bG4oaHRtbEVu Y29kZShAbGluZUp1c3REZWxldGVkKSkNCiAgICAgICAgZWxzZQ0KICAgICAgICAgIHByaW50KGh0 bWxFbmNvZGUoQGxpbmVKdXN0RGVsZXRlZFswLHByZWZpeExlbl0pKQ0KICAgICAgICAgIHByaW50 KCI8c3BhbiBpZD1cInJlbW92ZWRjaGFyc1wiPiIpDQogICAgICAgICAgcHJpbnQoZm9ybWF0Q2hh bmdlKEBsaW5lSnVzdERlbGV0ZWRbcHJlZml4TGVuLGRlbGV0ZUluZml4U2l6ZV0pKQ0KICAgICAg ICAgIHByaW50KCI8L3NwYW4+IikNCiAgICAgICAgICBwcmludGxuKGh0bWxFbmNvZGUoQGxpbmVK dXN0RGVsZXRlZFtAbGluZUp1c3REZWxldGVkLmxlbmd0aC1zdWZmaXhMZW4sc3VmZml4TGVuXSkp DQogICAgICAgIGVuZA0KICAgICAgICBAbGluZUp1c3REZWxldGVkID0gbmlsDQogICAgICBlbmQN CiAgICAgIGlmIGluaXRpYWw9PSItIg0KICAgICAgICBAbGluZUp1c3REZWxldGVkPWxpbmUNCiAg ICAgICAgc2hpZnQoaW5pdGlhbCkNCiAgICAgICAgIyB3ZSdsbCBwcmludCBpdCBuZXh0IHRpbWUg KGZpbmdlcnMgY3Jvc3NlZCkNCiAgICAgICAgcmV0dXJuDQogICAgICBlbHNpZiBAbGluZUp1c3RE ZWxldGVkIT1uaWwNCiAgICAgICAgcHJpbnRsbihodG1sRW5jb2RlKEBsaW5lSnVzdERlbGV0ZWQp KQ0KICAgICAgICBAbGluZUp1c3REZWxldGVkID0gbmlsDQogICAgICBlbmQNCiAgICAgIHNoaWZ0 KGluaXRpYWwpDQogICAgICBpZiBwcmVmaXhMZW49PTEgJiYgc3VmZml4TGVuPT0wIHx8IGFkZElu Zml4U2l6ZTw9MCB8fCBvdmVyc2l6ZV9jaGFuZ2UNCiAgICAgICAgZW5jb2RlZCA9IGh0bWxFbmNv ZGUobGluZSkNCiAgICAgIGVsc2UNCiAgICAgICAgZW5jb2RlZCA9IGh0bWxFbmNvZGUobGluZVsw LHByZWZpeExlbl0pICsNCiAgICAgICAgIjxzcGFuIGlkPVwiYWRkZWRjaGFyc1wiPiIgKw0KICAg ICAgICBmb3JtYXRDaGFuZ2UobGluZVtwcmVmaXhMZW4sYWRkSW5maXhTaXplXSkgKw0KICAgICAg ICAiPC9zcGFuPiIgKw0KICAgICAgICBodG1sRW5jb2RlKGxpbmVbbGluZS5sZW5ndGgtc3VmZml4 TGVuLHN1ZmZpeExlbl0pDQogICAgICBlbmQNCiAgICBlbHNlDQogICAgICBlbmNvZGVkID0gaHRt bEVuY29kZShsaW5lKQ0KICAgIGVuZA0KICAgIGlmIGluaXRpYWw9PSItIg0KICAgICAgdW5sZXNz IEBsaW5lSnVzdERlbGV0ZWQ9PW5pbA0KICAgICAgICBwcmludGxuKGh0bWxFbmNvZGUoQGxpbmVK dXN0RGVsZXRlZCkpDQogICAgICAgIEBsaW5lSnVzdERlbGV0ZWQ9bmlsDQogICAgICBlbmQNCiAg ICBlbmQNCiAgICBpZiBpbml0aWFsPT0iKyINCiAgICAgICR0YXNrX2tleXdvcmRzLmVhY2ggZG8g fHRhc2t8DQogICAgICAgIGlmIGxpbmUgPX4gL1xiKCN7dGFza31cYi4qKS8NCiAgICAgICAgICAk dGFza19saXN0IDw8ICQxDQogICAgICAgICAgZW5jb2RlZC5zdWIhKC9cYiN7dGFza31cYi8sICI8 c3BhbiBjbGFzcz1cInRhc2tcIj4je3Rhc2t9PC9zcGFuPiIpDQogICAgICAgICAgZW5jb2RlZCA9 ICI8YSBuYW1lPVwidGFzayN7JHRhc2tfbGlzdC5zaXplfVwiIC8+IiArIGVuY29kZWQNCiAgICAg ICAgICBicmVhaw0KICAgICAgICBlbmQNCiAgICAgIGVuZA0KICAgIGVuZA0KICAgIHByaW50bG4o ZW5jb2RlZCkNCiAgZW5kDQoNCiAgZGVmIHRlYXJkb3duDQogICAgdW5sZXNzIEBsaW5lSnVzdERl bGV0ZWQ9PW5pbA0KICAgICAgcHJpbnRsbihodG1sRW5jb2RlKEBsaW5lSnVzdERlbGV0ZWQpKQ0K ICAgICAgQGxpbmVKdXN0RGVsZXRlZCA9IG5pbA0KICAgIGVuZA0KICAgIHNoaWZ0KG5pbCkNCiAg ZW5kDQoNCiBwcml2YXRlDQoNCiAgZGVmIGZvcm1hdENoYW5nZSh0ZXh0KQ0KICAgIHJldHVybiAn PHNtYWxsIGlkPSJpbmZvIj5eTTwvc21hbGw+JyBpZiB0ZXh0PT0iXHIiDQogICAgaHRtbEVuY29k ZSh0ZXh0KS5nc3ViKC8gLywgJyZuYnNwOycpDQogIGVuZA0KDQogIGRlZiBzaGlmdChuZXh0U3Rh dGUpDQogICAgdW5sZXNzIEBjdXJyZW50U3RhdGUgPT0gbmlsDQogICAgICBpZiBAY3VycmVudFN0 eWxlID09ICJpbmZvIg0KICAgICAgICBwcmludCgiPC9zbWFsbD48L3ByZT4iKQ0KICAgICAgZWxz ZQ0KICAgICAgICBwcmludCgiPC9wcmU+IikNCiAgICAgIGVuZA0KICAgICAgQGN1cnJlbnRTdHls ZSA9IGNhc2UgbmV4dFN0YXRlDQogICAgICAgIHdoZW4gIlxcIiB0aGVuICJpbmZvIiAjIGFzIGlu ICdcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUnDQogICAgICAgIHdoZW4gIkAiIHRoZW4gImlu Zm8iDQogICAgICAgIHdoZW4gIiAiIHRoZW4gImNvbnRleHQiDQogICAgICAgIHdoZW4gIisiIHRo ZW4gImFkZGVkIg0KICAgICAgICB3aGVuICItIiB0aGVuICJyZW1vdmVkIg0KICAgICAgZW5kDQog ICAgICB1bmxlc3MgbmV4dFN0YXRlID09IG5pbA0KICAgICAgICBpZiBAY3VycmVudFN0eWxlPT0n aW5mbycNCiAgICAgICAgICBwcmludCgiPHByZSBjbGFzcz1cImRpZmZcIj48c21hbGwgaWQ9XCJp bmZvXCI+IikNCiAgICAgICAgZWxzZQ0KICAgICAgICAgIHByaW50KCI8cHJlIGNsYXNzPVwiZGlm ZlwiIGlkPVwiI3tAY3VycmVudFN0eWxlfVwiPiIpDQogICAgICAgIGVuZA0KICAgICAgZW5kDQog ICAgZW5kDQogICAgQGN1cnJlbnRTdGF0ZSA9IG5leHRTdGF0ZQ0KICBlbmQNCg0KICBkZWYgY29t bW9uUHJlZml4TGVuZ3RoKGEsIGIpDQogICAgbGVuZ3RoID0gMA0KICAgIGEuZWFjaF9ieXRlIGRv IHxjaGFyfA0KICAgICAgYnJlYWsgdW5sZXNzIGJbbGVuZ3RoXT09Y2hhcg0KICAgICAgbGVuZ3Ro ID0gbGVuZ3RoICsgMQ0KICAgIGVuZA0KICAgIHJldHVybiBsZW5ndGgNCiAgZW5kDQplbmQNCg0K DQpjbGFzcyBVbmlmaWVkRGlmZkhhbmRsZXIgPCBMaW5lQ29uc3VtZXINCiAgZGVmIHNldHVwDQog ICAgQHN0YXRzID0gVW5pZmllZERpZmZTdGF0cy5uZXcNCiAgICBAY29sb3VyID0gVW5pZmllZERp ZmZDb2xvdXJpc2VyLm5ldw0KICAgIEBjb2xvdXIub3V0cHV0ID0gQGVtYWlsSU8NCiAgICBAbG9v a2FoZWFkID0gbmlsDQogIGVuZA0KDQogIGRlZiBjb25zdW1lKGxpbmUpDQogICAgY2FzZSBsaW5l bm8oKQ0KICAgICB3aGVuIDENCiAgICAgIEBkaWZmbGluZSA9IGxpbmUNCiAgICAgd2hlbiAyDQog ICAgICBAbG9va2FoZWFkID0gbGluZQ0KICAgICB3aGVuIDMNCiAgICAgIHByaW50bG4oJGZpbGVI ZWFkZXJIdG1sKQ0KICAgICAgIyBUT0RPOiBtb3ZlIHRvIFVuaWZpZWREaWZmQ29sb3VyaXNlcg0K ICAgICAgcHJpbnQoIjxwcmUgY2xhc3M9XCJkaWZmXCI+PHNtYWxsIGlkPVwiaW5mb1wiPiIpDQog ICAgICBwcmludGxuKGh0bWxFbmNvZGUoQGRpZmZsaW5lKSkgICMgJ2RpZmYgLi4uJw0KICAgICAg cHJpbnRsbihodG1sRW5jb2RlKEBsb29rYWhlYWQpKSAjICctLS0gLi4uJw0KICAgICAgcHJpbnRs bihodG1sRW5jb2RlKGxpbmUpKSAgICAgICMgJysrKyAuLi4nDQogICAgIGVsc2UNCiAgICAgIHVu bGVzcyAkZmlsZS5yZW1vdmFsPyAmJiAkbm9fcmVtb3ZlZF9maWxlX2RpZmYNCiAgICAgICAgQHN0 YXRzLmNvbnN1bWUobGluZSkNCiAgICAgIGVuZA0KICAgICAgaWYgQHN0YXRzLmRpZmZMaW5lcyA8 ICRtYXhMaW5lc1BlckRpZmYNCiAgICAgICAgQGNvbG91ci5jb25zdW1lKGxpbmUpDQogICAgICBl bHNpZiBAc3RhdHMuZGlmZkxpbmVzID09ICRtYXhMaW5lc1BlckRpZmYNCiAgICAgICAgQGNvbG91 ci5jb25zdW1lKGxpbmUpDQogICAgICAgIEBjb2xvdXIudGVhcmRvd24NCiAgICAgIGVuZA0KICAg IGVuZA0KICBlbmQNCg0KICBkZWYgdGVhcmRvd24NCiAgICBpZiBAbG9va2FoZWFkID09IG5pbA0K ICAgICAgJGZpbGUuaXNFbXB0eSA9IHRydWUNCiAgICBlbHNpZiBAbG9va2FoZWFkICA9fiAvQmlu YXJ5IGZpbGVzIC4qIGFuZCAuKiBkaWZmZXIvDQogICAgICAkZmlsZS5pc0JpbmFyeSA9IHRydWUN CiAgICBlbHNlDQogICAgICB1bmxlc3MgJGZpbGUucmVtb3ZhbD8gJiYgJG5vX3JlbW92ZWRfZmls ZV9kaWZmDQogICAgICAgIGlmIEBzdGF0cy5kaWZmTGluZXMgPiAkbWF4TGluZXNQZXJEaWZmDQog ICAgICAgICAgcHJpbnRsbigiPC9wcmU+IikNCiAgICAgICAgICBwcmludGxuKCI8c3Ryb25nIGNs YXNzPVwiZXJyb3JcIj5bdHJ1bmNhdGVkIGF0ICN7JG1heExpbmVzUGVyRGlmZn0gbGluZXM7ICN7 QHN0YXRzLmRpZmZMaW5lcy0kbWF4TGluZXNQZXJEaWZmfSBtb3JlIHNraXBwZWRdPC9zdHJvbmc+ IikNCiAgICAgICAgZWxzZQ0KICAgICAgICAgIEBjb2xvdXIudGVhcmRvd24NCiAgICAgICAgZW5k DQogICAgICAgIHByaW50bG4oIjwvZGl2PiIpICMgZW5kIG9mICJmaWxlIiBkaXYNCiAgICAgIGVu ZA0KICAgIGVuZA0KICBlbmQNCmVuZA0KDQoNCg0KDQoNCg0KDQoNCg0KJGNvbmZpZyA9ICIvY3ln ZHJpdmUvZi9DVlMvQ1ZTUk9PVC9jdnNzcGFtLmNvbmYiDQoNCiRkZWJ1ZyA9IGZhbHNlDQokcmVj aXBpZW50cyA9IEFycmF5Lm5ldw0KJHNlbmRtYWlsX3Byb2cgPSAiL2N5Z2RyaXZlL2YvY3lnd2lu L3Vzci9zYmluL3NzbXRwLmV4ZSAtdCINCiRub19yZW1vdmVkX2ZpbGVfZGlmZiA9IGZhbHNlDQok dGFza19rZXl3b3JkcyA9IFsnVE9ETycsICdGSVhNRSddDQokYnVnemlsbGFVUkwgPSBuaWwNCiRq aXJhVVJMID0gbmlsDQokdGlja2V0VVJMID0gbmlsDQokZnJvbV9hZGRyZXNzID0gbmlsDQokc3Vi amVjdFByZWZpeCA9IG5pbA0KJGZpbGVzX2luX3N1YmplY3QgPSBmYWxzZTsNCg0KcmVxdWlyZSAn Z2V0b3B0bG9uZycNCg0Kb3B0cyA9IEdldG9wdExvbmcubmV3KA0KICBbICItLXRvIiwgICAgICIt dCIsIEdldG9wdExvbmc6OlJFUVVJUkVEX0FSR1VNRU5UIF0sDQogIFsgIi0tY29uZmlnIiwgIi1j IiwgR2V0b3B0TG9uZzo6UkVRVUlSRURfQVJHVU1FTlQgXSwNCiAgWyAiLS1kZWJ1ZyIsICAiLWQi LCBHZXRvcHRMb25nOjpOT19BUkdVTUVOVCBdLA0KICBbICItLWZyb20iLCAgICItdSIsIEdldG9w dExvbmc6OlJFUVVJUkVEX0FSR1VNRU5UIF0NCikNCg0Kb3B0cy5lYWNoIGRvIHxvcHQsIGFyZ3wN CiAgJHJlY2lwaWVudHMgPDwgYXJnIGlmIG9wdD09Ii0tdG8iDQogICRjb25maWcgPSBhcmcgaWYg b3B0PT0iLS1jb25maWciDQogICRkZWJ1ZyA9IHRydWUgaWYgb3B0PT0iLS1kZWJ1ZyINCiAgJGZy b21fYWRkcmVzcyA9IGFyZyBpZiBvcHQ9PSItLWZyb20iDQplbmQNCg0KDQppZiBBUkdWLmxlbmd0 aCAhPSAxDQogIGlmIEFSR1YubGVuZ3RoID4gMQ0KICAgICRzdGRlcnIucHV0cyAiZXh0cmEgYXJn dW1lbnRzIG5vdCBuZWVkZWQ6ICN7QVJHVlsxLCBBUkdWLmxlbmd0aC0xXS5qb2luKCcsICcpfSIN CiAgZWxzZQ0KICAgICRzdGRlcnIucHV0cyAibWlzc2luZyByZXF1aXJlZCBmaWxlIGFyZ3VtZW50 Ig0KICBlbmQNCiAgcHV0cyAiVXNhZ2U6IGN2c3NwYW0ucmIgWyAtLXRvIDxlbWFpbD4gXSBbIC0t Y29uZmlnIDxmaWxlPiBdIDxjb2xsZWN0X2RpZmZzIGZpbGU+Ig0KICBleGl0KC0xKQ0KZW5kDQoN CiRsb2dmaWxlID0gQVJHVlswXQ0KDQoNCiRhZGRpdGlvbmFsSGVhZGVycyA9IEFycmF5Lm5ldw0K JHByb2JsZW1IZWFkZXJzID0gQXJyYXkubmV3DQoNCiMgaGVscGVyIGZ1bmN0aW9ucyBjYWxsZWQg ZnJvbSB0aGUgJ2NvbmZpZyBmaWxlJw0KZGVmIGFkZEhlYWRlcihuYW1lLCB2YWx1ZSkNCiAgaWYg bmFtZSA9fiAvXlshLTk7LX5dKyQvDQogICAgJGFkZGl0aW9uYWxIZWFkZXJzIDw8IFtuYW1lLCB2 YWx1ZV0NCiAgZWxzZQ0KICAgICRwcm9ibGVtSGVhZGVycyA8PCBbbmFtZSwgdmFsdWVdDQogIGVu ZA0KZW5kDQpkZWYgYWRkUmVjaXBpZW50KGVtYWlsKQ0KICAkcmVjaXBpZW50cyA8PCBlbWFpbA0K ZW5kDQoNCmlmIEZpbGVUZXN0LmV4aXN0cz8oJGNvbmZpZykNCiAgbG9hZCAkY29uZmlnDQplbHNl DQogIGJsYWgoIkNvbmZpZyBmaWxlICcjeyRjb25maWd9JyBub3QgZm91bmQsIGlnbm9yaW5nIikN CmVuZA0KDQppZiAkcmVjaXBpZW50cy5lbXB0eT8NCiAgZmFpbCAiTm8gZW1haWwgcmVjaXBpZW50 cyBkZWZpbmVkIg0KZW5kDQoNCmlmICR2aWV3Y3ZzVVJMICE9IG5pbA0KICAkdmlld2N2c1VSTCA8 PCAiLyIgdW5sZXNzICR2aWV3Y3ZzVVJMID1+IC9cLyQvDQogICRmcm9udGVuZCA9IFZpZXdDVlNG cm9udGVuZC5uZXcoJHZpZXdjdnNVUkwpDQplbHNpZiAkY2hvcmFVUkwgIT1uaWwNCiAgJGZyb250 ZW5kID0gQ2hvcmFGcm9udGVuZC5uZXcoJGNob3JhVVJMKQ0KZWxzaWYgJGN2c3dlYlVSTCAhPW5p bA0KICAkY3Zzd2ViVVJMIDw8ICIvIiB1bmxlc3MgJGN2c3dlYlVSTCA9fiAvXC8kLw0KICAkZnJv bnRlbmQgPSBDVlN3ZWJGcm9udGVuZC5uZXcoJGN2c3dlYlVSTCkNCmVsc2UNCiAgJGZyb250ZW5k ID0gTm9Gcm9udGVuZC5uZXcNCmVuZA0KDQppZiAkYnVnemlsbGFVUkwgIT0gbmlsDQogIGNvbW1l bnRTdWJzdGl0dXRpb25zWydcYltCYl1bVXVdW0dnXVxzKiM/WzAtOV0rJ10gPSBidWd6aWxsYVN1 Yg0KZW5kDQppZiAkamlyYVVSTCAhPSBuaWwNCiAgY29tbWVudFN1YnN0aXR1dGlvbnNbJ1xiW2Et ekEtWl0rLVswLTldK1xiJ10gPSBqaXJhU3ViDQplbmQNCmlmICR0aWNrZXRVUkwgIT0gbmlsDQog IGNvbW1lbnRTdWJzdGl0dXRpb25zWydcYltUdF1bSWldW0NjXVtLa11bRWVdW1R0XVxzKiM/WzAt OV0rXGInXSA9IHRpY2tldFN1Yg0KZW5kDQokY29tbWVudEVuY29kZXIgPSBNdWx0aVN1Yi5uZXco Y29tbWVudFN1YnN0aXR1dGlvbnMpDQoNCg0KdGFnSGFuZGxlciA9IFRhZ0hhbmRsZXIubmV3DQoN CiRoYW5kbGVycyA9IEhhc2hbIj4iID0+IENvbW1lbnRIYW5kbGVyLm5ldywNCgkJICJVIiA9PiBV bmlmaWVkRGlmZkhhbmRsZXIubmV3LA0KCQkgIlQiID0+IHRhZ0hhbmRsZXIsDQoJCSAiQSIgPT4g QWRkZWRGaWxlSGFuZGxlci5uZXcsDQoJCSAiUiIgPT4gUmVtb3ZlZEZpbGVIYW5kbGVyLm5ldywN CgkJICJNIiA9PiBNb2RpZmllZEZpbGVIYW5kbGVyLm5ldywNCgkJICJWIiA9PiBWZXJzaW9uSGFu ZGxlci5uZXddDQoNCiRoYW5kbGVyc1siQSJdLnNldFRhZ0hhbmRsZXIodGFnSGFuZGxlcikNCiRo YW5kbGVyc1siUiJdLnNldFRhZ0hhbmRsZXIodGFnSGFuZGxlcikNCiRoYW5kbGVyc1siTSJdLnNl dFRhZ0hhbmRsZXIodGFnSGFuZGxlcikNCg0KJGZpbGVFbnRyaWVzID0gQXJyYXkubmV3DQokdGFz a19saXN0ID0gQXJyYXkubmV3DQokYWxsVGFncyA9IEhhc2gubmV3DQoNCkZpbGUub3BlbigiI3sk bG9nZmlsZX0uZW1haWx0bXAiLCBGaWxlOjpSRFdSfEZpbGU6OkNSRUFUfEZpbGU6OlRSVU5DKSBk byB8bWFpbHwNCg0KICBGaWxlLm9wZW4oJGxvZ2ZpbGUpIGRvIHxsb2d8DQogICAgcmVhZGVyID0g TG9nUmVhZGVyLm5ldyhsb2cpDQoNCiAgICB1bnRpbCByZWFkZXIuZW9mDQogICAgICBoYW5kbGVy ID0gJGhhbmRsZXJzW3JlYWRlci5jdXJyZW50TGluZUNvZGVdDQogICAgICBpZiBoYW5kbGVyID09 IG5pbA0KICAgICAgICByYWlzZSAiTm8gaGFuZGxlciBmaWxlIGxpbmVzIG1hcmtlZCAnIyN7cmVh ZGVyLmN1cnJlbnRMaW5lQ29kZX0nIg0KICAgICAgZW5kDQogICAgICBoYW5kbGVyLmhhbmRsZUxp bmVzKHJlYWRlci5nZXRMaW5lcywgbWFpbCkNCiAgICBlbmQNCiAgZW5kDQplbmQNCg0KaWYgJHN1 YmplY3RQcmVmaXggPT0gbmlsDQogICRzdWJqZWN0UHJlZml4ID0gIltDVlMgI3tSZXBvc2l0b3J5 LmFycmF5LmpvaW4oJywnKX1dIg0KZW5kDQoNCmlmICRmaWxlc19pbl9zdWJqZWN0DQogIGFsbF9m aWxlcyA9ICIiDQogICRmaWxlRW50cmllcy5lYWNoIGRvIHxmaWxlfA0KICAgIG5hbWUgPSBodG1s RW5jb2RlKGZpbGUubmFtZV9hZnRlcl9jb21tb25fcHJlZml4KQ0KICAgIGlmIGFsbF9maWxlcyAh PSAiIg0KICAgICAgYWxsX2ZpbGVzID0gYWxsX2ZpbGVzICsgIjsiICsgbmFtZQ0KICAgIGVsc2UN CiAgICAgIGFsbF9maWxlcyA9IG5hbWUNCiAgICBlbmQNCiAgZW5kDQogICRtYWlsU3ViamVjdCA9 IGFsbF9maWxlcyArICI6IiArICRtYWlsU3ViamVjdA0KZW5kDQoNCm1haWxTdWJqZWN0ID0gIiN7 JHN1YmplY3RQcmVmaXh9ICN7JG1haWxTdWJqZWN0fSINCmlmIG1haWxTdWJqZWN0Lmxlbmd0aCA+ ICRtYXhTdWJqZWN0TGVuZ3RoDQogIG1haWxTdWJqZWN0ID0gbWFpbFN1YmplY3RbMCwgJG1heFN1 YmplY3RMZW5ndGhdDQplbmQNCg0KZW5jb2RlciA9IEhlYWRlckVuY29kZXIubmV3DQplbmNvZGVy LmNoYXJzZXQgPSAkY2hhcnNldC5uaWw/ID8gIklTTy04ODU5LTEiIDogJGNoYXJzZXQNCg0KDQpi bGFoKCJpbnZva2luZyAjeyRzZW5kbWFpbF9wcm9nfSIpDQpJTy5wb3BlbigiI3skc2VuZG1haWxf cHJvZ30iLCAidyIpIGRvIHxtYWlsfA0KICBtYWlsLnB1dHMoIlRvOiAjeyRyZWNpcGllbnRzLmpv aW4oJywnKX0iKQ0KICBlbmNvZGVyLmVuY29kZV9oZWFkZXIobWFpbCwgIlN1YmplY3QiLCBtYWls U3ViamVjdCkNCiAgbWFpbC5wdXRzKCJGcm9tOiAjeyRmcm9tX2FkZHJlc3N9IikgaWYgJGZyb21f YWRkcmVzcw0KICBtYWlsLnB1dHMoIk1JTUUtVmVyc2lvbjogMS4wIikNCiAgbWFpbC5wdXRzKCJD b250ZW50LVR5cGU6IHRleHQvaHRtbCIgKyAoJGNoYXJzZXQubmlsPyA/ICIiIDogIjsgY2hhcnNl dD1cIiN7JGNoYXJzZXR9XCIiKSkNCiAgaWYgRU5WWydSRU1PVEVfSE9TVCddDQogICAgIyBUT0RP OiBJIHRoaW5rIHRoaXMgd2lsbCBhbHdheXMgYmUgYW4gSVAgYWRkcmVzcy4gIElmIGEgaG9zdG5h bWUgaXMNCiAgICAjIHBvc3NpYmxlLCBpdCBtYXkgbmVlZCBlbmNvZGluZyBvZiBzb21lIGtpbmQs DQogICAgbWFpbC5wdXRzKCJYLU9yaWdpbmF0aW5nLUlQOiBbI3tFTlZbJ1JFTU9URV9IT1NUJ119 XSIpDQogIGVuZA0KICB1bmxlc3MgKCRhZGRpdGlvbmFsSGVhZGVycy5lbXB0eT8pDQogICAgJGFk ZGl0aW9uYWxIZWFkZXJzLmVhY2ggZG8gfGhlYWRlcnwNCiAgICAgIG1haWwucHV0cygiI3toZWFk ZXJbMF19OiAje2hlYWRlclsxXX0iKQ0KICAgIGVuZA0KICBlbmQNCiAgbWFpbC5wdXRzKCJYLUNW U3NwYW0tVmVyc2lvbjogI3skdmVyc2lvbn0gKGh0dHA6Ly93d3cuYmFkZ2Vycy1pbi1mb2lsLmNv LnVrL3Byb2plY3RzL2N2c3NwYW0vKSIpDQogIG1haWwucHV0cyAgIyBlbmQtb2YtaGVhZGVycw0K DQogIG1haWwucHV0cyg8PEhFQUQpDQo8aHRtbD4NCjxoZWFkPg0KPHN0eWxlPjwhLS0NCiAgYm9k eSB7YmFja2dyb3VuZC1jb2xvcjojZmZmZmZmO30NCiAgLmZpbGUge2JvcmRlcjoxcHggc29saWQg I2VlZWVlZTttYXJnaW4tdG9wOjFlbTttYXJnaW4tYm90dG9tOjFlbTt9DQogIC5wYXRobmFtZSB7 Zm9udC1mYW1pbHk6bW9ub3NwYWNlOyBmbG9hdDpyaWdodDt9DQogIC5maWxlaGVhZGVyIHttYXJn aW4tYm90dG9tOi41ZW07fQ0KICAuZGlmZiB7bWFyZ2luOjA7fQ0KICAudGFza2xpc3Qge3BhZGRp bmc6NHB4O2JvcmRlcjoxcHggZGFzaGVkICMwMDAwMDA7bWFyZ2luLXRvcDoxZW07fQ0KICAudGFz a2xpc3QgdWwge21hcmdpbi10b3A6MDttYXJnaW4tYm90dG9tOjA7fQ0KICB0ci5hbHQge2JhY2tn cm91bmQtY29sb3I6I2VlZWVlZX0NCiAgI2FkZGVkIHtiYWNrZ3JvdW5kLWNvbG9yOiNkZGZmZGQ7 fQ0KICAjYWRkZWRjaGFycyB7YmFja2dyb3VuZC1jb2xvcjojOTlmZjk5O2ZvbnQtd2VpZ2h0OmJv bGRlcjt9DQogIHRyLmFsdCAjYWRkZWQge2JhY2tncm91bmQtY29sb3I6I2NjZjdjYzt9DQogICNy ZW1vdmVkIHtiYWNrZ3JvdW5kLWNvbG9yOiNmZmRkZGQ7fQ0KICAjcmVtb3ZlZGNoYXJzIHtiYWNr Z3JvdW5kLWNvbG9yOiNmZjk5OTk7Zm9udC13ZWlnaHQ6Ym9sZGVyO30NCiAgdHIuYWx0ICNyZW1v dmVkIHtiYWNrZ3JvdW5kLWNvbG9yOiNmN2NjY2M7fQ0KICAjaW5mbyB7Y29sb3I6Izg4ODg4ODt9 DQogICNjb250ZXh0IHtiYWNrZ3JvdW5kLWNvbG9yOiNlZWVlZWU7fQ0KICB0ZCB7cGFkZGluZy1s ZWZ0Oi4zZW07cGFkZGluZy1yaWdodDouM2VtO30NCiAgdHIuaGVhZCB7Ym9yZGVyLWJvdHRvbS13 aWR0aDoxcHg7Ym9yZGVyLWJvdHRvbS1zdHlsZTpzb2xpZDt9DQogIHRyLmhlYWQgdGQge3BhZGRp bmc6MDtwYWRkaW5nLXRvcDouMmVtO30NCiAgLnRhc2sge2JhY2tncm91bmQtY29sb3I6I2ZmZmYw MDt9DQogIC5jb21tZW50IHtwYWRkaW5nOjRweDtib3JkZXI6MXB4IGRhc2hlZCAjMDAwMDAwO2Jh Y2tncm91bmQtY29sb3I6I2ZmZmZkZH0NCiAgLmVycm9yIHtjb2xvcjpyZWQ7fQ0KICBociB7Ym9y ZGVyLXdpZHRoOjBweDtoZWlnaHQ6MnB4O2JhY2tncm91bmQ6YmxhY2s7fQ0KLS0+PC9zdHlsZT4N CjwvaGVhZD4NCjxib2R5Pg0KSEVBRA0KDQogIHVubGVzcyAoJHByb2JsZW1IZWFkZXJzLmVtcHR5 PykNCiAgICBtYWlsLnB1dHMoIjxzdHJvbmcgY2xhc3M9XCJlcnJvclwiPkJhZCBoZWFkZXIgZm9y bWF0IGluICcjeyRjb25maWd9Jzo8dWw+IikNCiAgICAkc3RkZXJyLnB1dHMoIkJhZCBoZWFkZXIg Zm9ybWF0IGluICcjeyRjb25maWd9JzoiKQ0KICAgICRwcm9ibGVtSGVhZGVycy5lYWNoIGRvIHxo ZWFkZXJ8DQogICAgICBtYWlsLnB1dHMoIjxsaT48cHJlPiN7aHRtbEVuY29kZShoZWFkZXJbMF0p fTwvcHJlPjwvbGk+IikNCiAgICAgICRzdGRlcnIucHV0cygiIC0gI3toZWFkZXJbMF19IikNCiAg ICBlbmQNCiAgICBtYWlsLnB1dHMoIjwvdWw+PC9zdHJvbmc+IikNCiAgZW5kDQogIG1haWwucHV0 cygiPHRhYmxlIGNlbGxzcGFjaW5nPVwiMFwiIGNlbGxwYWRkaW5nPVwiMFwiIGJvcmRlcj1cIjBc IiBydWxlcz1cImNvbHNcIj4iKQ0KDQogIGhhdmVUYWdzID0gZmFsc2UNCiAgUmVwb3NpdG9yeS5l YWNoIGRvIHxyZXBvc2l0b3J5fA0KICAgIGhhdmVUYWdzIHw9IHJlcG9zaXRvcnkuaGFzX211bHRp cGxlX3RhZ3MNCiAgZW5kDQoNCiAgZmlsZXNBZGRlZCA9IDANCiAgZmlsZXNSZW1vdmVkID0gMA0K ICBmaWxlc01vZGlmaWVkICA9IDANCiAgdG90YWxMaW5lc0FkZGVkID0gMA0KICB0b3RhbExpbmVz UmVtb3ZlZCA9IDANCiAgZmlsZV9jb3VudCA9IDANCiAgbGFzdFBhdGggPSAiIg0KICBsYXN0X3Jl cG9zaXRvcnkgPSBuaWwNCiAgJGZpbGVFbnRyaWVzLmVhY2ggZG8gfGZpbGV8DQogICAgdW5sZXNz IGZpbGUucmVwb3NpdG9yeSA9PSBsYXN0X3JlcG9zaXRvcnkNCiAgICAgIGxhc3RfcmVwb3NpdG9y eSA9IGZpbGUucmVwb3NpdG9yeQ0KICAgICAgbWFpbC5wcmludCgiPHRyIGNsYXNzPVwiaGVhZFwi Pjx0ZCBjb2xzcGFuPVwiI3tsYXN0X3JlcG9zaXRvcnkuaGFzX211bHRpcGxlX3RhZ3MgPyA1IDog NH1cIj4iKQ0KICAgICAgaWYgbGFzdF9yZXBvc2l0b3J5Lmhhc19tdWx0aXBsZV90YWdzDQogICAg ICAgIG1haWwucHJpbnQoIk1peGVkLXRhZyBjb21taXQiKQ0KICAgICAgZWxzZQ0KICAgICAgICBt YWlsLnByaW50KCJDb21taXQiKQ0KICAgICAgZW5kDQogICAgICBtYWlsLnByaW50KCIgaW4gPGI+ PHR0PiN7aHRtbEVuY29kZShsYXN0X3JlcG9zaXRvcnkuY29tbW9uX3ByZWZpeCl9PC90dD48L2I+ IikNCiAgICAgIGlmIGxhc3RfcmVwb3NpdG9yeS50cnVua19vbmx5Pw0KICAgICAgICBtYWlsLnBy aW50KCI8c3BhbiBpZD1cImluZm9cIj4gb24gTUFJTjwvc3Bhbj4iKQ0KICAgICAgZWxzZQ0KICAg ICAgICBtYWlsLnByaW50KCIgb24gIikNCiAgICAgICAgdGFnQ291bnQgPSAwDQogICAgICAgIGxh c3RfcmVwb3NpdG9yeS5lYWNoX3RhZyBkbyB8dGFnfA0KICAgICAgICAgIHRhZ0NvdW50ICs9IDEN CiAgICAgICAgICBpZiB0YWdDb3VudCA+IDENCiAgICAgICAgICAgIG1haWwucHJpbnQgdGFnQ291 bnQ8bGFzdF9yZXBvc2l0b3J5LnRhZ19jb3VudCA/ICIsICIgOiAiICYgIg0KICAgICAgICAgIGVu ZA0KICAgICAgICAgIG1haWwucHJpbnQgdGFnID8gaHRtbEVuY29kZSh0YWcpIDogIjxzcGFuIGlk PVwiaW5mb1wiPk1BSU48L3NwYW4+Ig0KICAgICAgICBlbmQNCiAgICAgIGVuZA0KICAgICAgbWFp bC5wdXRzKCI8L3RkPjwvdHI+IikNCiAgICBlbmQNCiAgICBmaWxlX2NvdW50ICs9IDENCiAgICBp ZiAoZmlsZV9jb3VudCUyPT0wKQ0KICAgICAgbWFpbC5wcmludCgiPHRyIGNsYXNzPVwiYWx0XCI+ IikNCiAgICBlbHNlDQogICAgICBtYWlsLnByaW50KCI8dHI+IikNCiAgICBlbmQNCiAgICBpZiBm aWxlLmFkZGl0aW9uPw0KICAgICAgZmlsZXNBZGRlZCArPSAxDQogICAgZWxzaWYgZmlsZS5yZW1v dmFsPw0KICAgICAgZmlsZXNSZW1vdmVkICs9IDENCiAgICBlbHNpZiBmaWxlLm1vZGlmaWNhdGlv bj8NCiAgICAgIGZpbGVzTW9kaWZpZWQgKz0gMQ0KICAgIGVuZA0KICAgIG5hbWUgPSBodG1sRW5j b2RlKGZpbGUubmFtZV9hZnRlcl9jb21tb25fcHJlZml4KQ0KICAgIHNsYXNoUG9zID0gbmFtZS5y aW5kZXgoIi8iKQ0KICAgIGlmIHNsYXNoUG9zPT1uaWwNCiAgICAgIHByZWZpeCA9ICIiDQogICAg ZWxzZQ0KICAgICAgdGhpc1BhdGggPSBuYW1lWzAsc2xhc2hQb3NdDQogICAgICBuYW1lID0gbmFt ZVtzbGFzaFBvcysxLG5hbWUubGVuZ3RoXQ0KICAgICAgaWYgdGhpc1BhdGggPT0gbGFzdFBhdGgN CiAgICAgICAgcHJlZml4ID0gIiZuYnNwOyIqKHNsYXNoUG9zKSArICIvIg0KICAgICAgZWxzZSAN CiAgICAgICAgcHJlZml4ID0gdGhpc1BhdGggKyAiLyINCiAgICAgIGVuZA0KICAgICAgbGFzdFBh dGggPSB0aGlzUGF0aA0KICAgIGVuZA0KICAgIGlmIGZpbGUuYWRkaXRpb24/DQogICAgICBuYW1l ID0gIjxzcGFuIGlkPVwiYWRkZWRcIj4je25hbWV9PC9zcGFuPiINCiAgICBlbHNpZiBmaWxlLnJl bW92YWw/DQogICAgICBuYW1lID0gIjxzcGFuIGlkPVwicmVtb3ZlZFwiPiN7bmFtZX08L3NwYW4+ Ig0KICAgIGVuZA0KICAgIGlmIGZpbGUuaXNFbXB0eSB8fCBmaWxlLmlzQmluYXJ5IHx8IChmaWxl LnJlbW92YWw/ICYmICRub19yZW1vdmVkX2ZpbGVfZGlmZikNCiAgICAgIG1haWwucHJpbnQoIjx0 ZD48dHQ+I3twcmVmaXh9I3tuYW1lfTwvdHQ+PC90ZD4iKQ0KICAgIGVsc2UNCiAgICAgIG1haWwu cHJpbnQoIjx0ZD48dHQ+I3twcmVmaXh9PGEgaHJlZj1cIiNmaWxlI3tmaWxlX2NvdW50fVwiPiN7 bmFtZX08L2E+PC90dD48L3RkPiIpDQogICAgZW5kDQogICAgaWYgZmlsZS5pc0VtcHR5DQogICAg ICBtYWlsLnByaW50KCI8dGQgY29sc3Bhbj1cIjJcIiBhbGlnbj1cImNlbnRlclwiPjxzbWFsbCBp ZD1cImluZm9cIj5bZW1wdHldPC9zbWFsbD48L3RkPiIpDQogICAgZWxzaWYgZmlsZS5pc0JpbmFy eQ0KICAgICAgbWFpbC5wcmludCgiPHRkIGNvbHNwYW49XCIyXCIgYWxpZ249XCJjZW50ZXJcIj48 c21hbGwgaWQ9XCJpbmZvXCI+W2JpbmFyeV08L3NtYWxsPjwvdGQ+IikNCiAgICBlbHNlDQogICAg ICBpZiBmaWxlLmxpbmVBZGRpdGlvbnM+MA0KICAgICAgICB0b3RhbExpbmVzQWRkZWQgKz0gZmls ZS5saW5lQWRkaXRpb25zDQogICAgICAgIG1haWwucHJpbnQoIjx0ZCBhbGlnbj1cInJpZ2h0XCIg aWQ9XCJhZGRlZFwiPisje2ZpbGUubGluZUFkZGl0aW9uc308L3RkPiIpDQogICAgICBlbHNlDQog ICAgICAgIG1haWwucHJpbnQoIjx0ZD48L3RkPiIpDQogICAgICBlbmQNCiAgICAgIGlmIGZpbGUu bGluZVJlbW92YWxzPjANCiAgICAgICAgdG90YWxMaW5lc1JlbW92ZWQgKz0gZmlsZS5saW5lUmVt b3ZhbHMNCiAgICAgICAgbWFpbC5wcmludCgiPHRkIGFsaWduPVwicmlnaHRcIiBpZD1cInJlbW92 ZWRcIj4tI3tmaWxlLmxpbmVSZW1vdmFsc308L3RkPiIpDQogICAgICBlbHNlDQogICAgICAgIG1h aWwucHJpbnQoIjx0ZD48L3RkPiIpDQogICAgICBlbmQNCiAgICBlbmQNCiAgICBpZiBsYXN0X3Jl cG9zaXRvcnkuaGFzX211bHRpcGxlX3RhZ3MNCiAgICAgIGlmIGZpbGUudGFnDQogICAgICAgIG1h aWwucHJpbnQoIjx0ZD4je2h0bWxFbmNvZGUoZmlsZS50YWcpfTwvdGQ+IikNCiAgICAgIGVsc2UN CiAgICAgICAgbWFpbC5wcmludCgiPHRkPjxzcGFuIGlkPVwiaW5mb1wiPk1BSU48L3NwYW4+PC90 ZD4iKQ0KICAgICAgZW5kDQogICAgZWxzaWYgaGF2ZVRhZ3MNCiAgICAgIG1haWwucHJpbnQoIjx0 ZD48L3RkPiIpDQogICAgZW5kDQogICAgaWYgZmlsZS5hZGRpdGlvbj8NCiAgICAgIG1haWwucHJp bnQoIjx0ZCBub3dyYXA9XCJub3dyYXBcIiBhbGlnbj1cInJpZ2h0XCI+YWRkZWQgI3skZnJvbnRl bmQudmVyc2lvbihmaWxlLnBhdGgsZmlsZS50b1Zlcil9PC90ZD4iKQ0KICAgIGVsc2lmIGZpbGUu cmVtb3ZhbD8NCiAgICAgIG1haWwucHJpbnQoIjx0ZCBub3dyYXA9XCJub3dyYXBcIj4jeyRmcm9u dGVuZC52ZXJzaW9uKGZpbGUucGF0aCxmaWxlLmZyb21WZXIpfSByZW1vdmVkPC90ZD4iKQ0KICAg IGVsc2lmIGZpbGUubW9kaWZpY2F0aW9uPw0KICAgICAgbWFpbC5wcmludCgiPHRkIG5vd3JhcD1c Im5vd3JhcFwiIGFsaWduPVwiY2VudGVyXCI+I3skZnJvbnRlbmQudmVyc2lvbihmaWxlLnBhdGgs ZmlsZS5mcm9tVmVyKX0gI3skZnJvbnRlbmQuZGlmZihmaWxlKX0gI3skZnJvbnRlbmQudmVyc2lv bihmaWxlLnBhdGgsZmlsZS50b1Zlcil9PC90ZD4iKQ0KICAgIGVuZA0KDQogICAgbWFpbC5wdXRz KCI8L3RyPiIpDQogIGVuZA0KICBpZiAkZmlsZUVudHJpZXMuc2l6ZT4xICYmICh0b3RhbExpbmVz QWRkZWQrdG90YWxMaW5lc1JlbW92ZWQpPjANCiAgICAjIGdpdmUgdG90YWwgbnVtYmVyIG9mIGxp bmVzIGFkZGVkL3JlbW92ZWQgYWNjcm9zcyBhbGwgZmlsZXMNCiAgICBtYWlsLnByaW50KCI8dHI+ PHRkPjwvdGQ+IikNCiAgICBpZiB0b3RhbExpbmVzQWRkZWQ+MA0KICAgICAgbWFpbC5wcmludCgi PHRkIGFsaWduPVwicmlnaHRcIiBpZD1cImFkZGVkXCI+KyN7dG90YWxMaW5lc0FkZGVkfTwvdGQ+ IikNCiAgICBlbHNlDQogICAgICBtYWlsLnByaW50KCI8dGQ+PC90ZD4iKQ0KICAgIGVuZA0KICAg IGlmIHRvdGFsTGluZXNSZW1vdmVkPjANCiAgICAgIG1haWwucHJpbnQoIjx0ZCBhbGlnbj1cInJp Z2h0XCIgaWQ9XCJyZW1vdmVkXCI+LSN7dG90YWxMaW5lc1JlbW92ZWR9PC90ZD4iKQ0KICAgIGVs c2UNCiAgICAgIG1haWwucHJpbnQoIjx0ZD48L3RkPiIpDQogICAgZW5kDQogICAgbWFpbC5wcmlu dCgiPHRkPjwvdGQ+IikgaWYgaGF2ZVRhZ3MNCiAgICBtYWlsLnB1dHMoIjx0ZD48L3RkPjwvdHI+ IikNCiAgZW5kDQogIA0KICBtYWlsLnB1dHMoIjwvdGFibGU+IikNCg0KICB0b3RhbEZpbGVzQ2hh bmdlZCA9IGZpbGVzQWRkZWQrZmlsZXNSZW1vdmVkK2ZpbGVzTW9kaWZpZWQNCiAgaWYgdG90YWxG aWxlc0NoYW5nZWQgPiAxDQogICAgbWFpbC5wcmludCgiPHNtYWxsIGlkPVwiaW5mb1wiPiIpDQog ICAgY2hhbmdlS2luZCA9IDANCiAgICBpZiBmaWxlc0FkZGVkPjANCiAgICAgIG1haWwucHJpbnQo IiN7ZmlsZXNBZGRlZH0gYWRkZWQiKQ0KICAgICAgY2hhbmdlS2luZCArPSAxDQogICAgZW5kDQog ICAgaWYgZmlsZXNSZW1vdmVkPjANCiAgICAgIG1haWwucHJpbnQoIiArICIpIGlmIGNoYW5nZUtp bmQ+MA0KICAgICAgbWFpbC5wcmludCgiI3tmaWxlc1JlbW92ZWR9IHJlbW92ZWQiKQ0KICAgICAg Y2hhbmdlS2luZCArPSAxDQogICAgZW5kDQogICAgaWYgZmlsZXNNb2RpZmllZD4wDQogICAgICBt YWlsLnByaW50KCIgKyAiKSBpZiBjaGFuZ2VLaW5kPjANCiAgICAgIG1haWwucHJpbnQoIiN7Zmls ZXNNb2RpZmllZH0gbW9kaWZpZWQiKQ0KICAgICAgY2hhbmdlS2luZCArPSAxDQogICAgZW5kDQog ICAgbWFpbC5wcmludCgiLCB0b3RhbCAje3RvdGFsRmlsZXNDaGFuZ2VkfSIpIGlmIGNoYW5nZUtp bmQgPiAxDQogICAgbWFpbC5wdXRzKCIgZmlsZXM8L3NtYWxsPjxiciAvPiIpDQogIGVuZA0KDQog IGlmICR0YXNrX2xpc3Quc2l6ZSA+IDANCiAgICB0YXNrX2NvdW50ID0gMA0KICAgIG1haWwucHV0 cygiPGRpdiBjbGFzcz1cInRhc2tsaXN0XCI+PHVsPiIpDQogICAgJHRhc2tfbGlzdC5lYWNoIGRv IHxpdGVtfA0KICAgICAgdGFza19jb3VudCArPSAxDQogICAgICBpdGVtID0gaHRtbEVuY29kZShp dGVtKQ0KICAgICAgbWFpbC5wdXRzKCI8bGk+PGEgaHJlZj1cIiN0YXNrI3t0YXNrX2NvdW50fVwi PiN7aXRlbX08L2E+PC9saT4iKQ0KICAgIGVuZA0KICAgIG1haWwucHV0cygiPC91bD48L2Rpdj4i KQ0KICBlbmQNCg0KDQogIEZpbGUub3BlbigiI3skbG9nZmlsZX0uZW1haWx0bXAiKSBkbyB8aW5w dXR8DQogICAgaW5wdXQuZWFjaCBkbyB8bGluZXwNCiAgICAgIG1haWwucHV0cyhsaW5lKQ0KICAg IGVuZA0KICBlbmQNCiAgaWYgJGRlYnVnDQogICAgYmxhaCgibGVhdmluZyBmaWxlICN7JGxvZ2Zp bGV9LmVtYWlsdG1wIikNCiAgZWxzZQ0KICAgIEZpbGUudW5saW5rKCIjeyRsb2dmaWxlfS5lbWFp bHRtcCIpDQogIGVuZA0KDQogIG1haWwucHV0cygiPGNlbnRlcj48c21hbGw+PGEgaHJlZj1cImh0 dHA6Ly93d3cuYmFkZ2Vycy1pbi1mb2lsLmNvLnVrL3Byb2plY3RzL2N2c3NwYW0vXCIgdGl0bGU9 XCJjb21taXQgLSZndDsgZW1haWxcIj5DVlNzcGFtPC9hPiAjeyR2ZXJzaW9ufTwvc21hbGw+PC9j ZW50ZXI+IikNCg0KICBtYWlsLnB1dHMoIjwvYm9keT48L2h0bWw+IikNCg0KZW5kDQo= ------_=_NextPart_001_01C3512C.E45343E8 Content-Type: application/octet-stream; name="loginfo" Content-Transfer-Encoding: base64 Content-Description: loginfo Content-Disposition: attachment; filename="loginfo" IyBUaGUgImxvZ2luZm8iIGZpbGUgY29udHJvbHMgd2hlcmUgImN2cyBjb21taXQiIGxvZyBpbmZv cm1hdGlvbg0KIyBpcyBzZW50LiAgVGhlIGZpcnN0IGVudHJ5IG9uIGEgbGluZSBpcyBhIHJlZ3Vs YXIgZXhwcmVzc2lvbiB3aGljaCBtdXN0IG1hdGNoDQojIHRoZSBkaXJlY3RvcnkgdGhhdCB0aGUg Y2hhbmdlIGlzIGJlaW5nIG1hZGUgdG8sIHJlbGF0aXZlIHRvIHRoZQ0KIyAkQ1ZTUk9PVC4gIElm IGEgbWF0Y2ggaXMgZm91bmQsIHRoZW4gdGhlIHJlbWFpbmRlciBvZiB0aGUgbGluZSBpcyBhIGZp bHRlcg0KIyBwcm9ncmFtIHRoYXQgc2hvdWxkIGV4cGVjdCBsb2cgaW5mb3JtYXRpb24gb24gaXRz IHN0YW5kYXJkIGlucHV0Lg0KIw0KIyBJZiB0aGUgcmVwb3NpdG9yeSBuYW1lIGRvZXMgbm90IG1h dGNoIGFueSBvZiB0aGUgcmVndWxhciBleHByZXNzaW9ucyBpbiB0aGlzDQojIGZpbGUsIHRoZSAi REVGQVVMVCIgbGluZSBpcyB1c2VkLCBpZiBpdCBpcyBzcGVjaWZpZWQuDQojDQojIElmIHRoZSBu YW1lIEFMTCBhcHBlYXJzIGFzIGEgcmVndWxhciBleHByZXNzaW9uIGl0IGlzIGFsd2F5cyB1c2Vk DQojIGluIGFkZGl0aW9uIHRvIHRoZSBmaXJzdCBtYXRjaGluZyByZWdleCBvciBERUZBVUxULg0K Iw0KIyBZb3UgbWF5IHNwZWNpZnkgYSBmb3JtYXQgc3RyaW5nIGFzIHBhcnQgb2YgdGhlDQojIGZp bHRlci4gIFRoZSBzdHJpbmcgaXMgY29tcG9zZWQgb2YgYSBgJScgZm9sbG93ZWQNCiMgYnkgYSBz aW5nbGUgZm9ybWF0IGNoYXJhY3Rlciwgb3IgZm9sbG93ZWQgYnkgYSBzZXQgb2YgZm9ybWF0DQoj IGNoYXJhY3RlcnMgc3Vycm91bmRlZCBieSBgeycgYW5kIGB9JyBhcyBzZXBhcmF0b3JzLiAgVGhl IGZvcm1hdA0KIyBjaGFyYWN0ZXJzIGFyZToNCiMNCiMgICBzID0gZmlsZSBuYW1lDQojICAgViA9 IG9sZCB2ZXJzaW9uIG51bWJlciAocHJlLWNoZWNraW4pDQojICAgdiA9IG5ldyB2ZXJzaW9uIG51 bWJlciAocG9zdC1jaGVja2luKQ0KIw0KIyBGb3IgZXhhbXBsZToNCiNERUZBVUxUIChlY2hvICIi OyBpZDsgZWNobyAlczsgZGF0ZTsgY2F0KSA+PiAkQ1ZTUk9PVC9DVlNST09UL2NvbW1pdGxvZw0K IyBvcg0KI0RFRkFVTFQgKGVjaG8gIiI7IGlkOyBlY2hvICV7c1Z2fTsgZGF0ZTsgY2F0KSA+PiAk Q1ZTUk9PVC9DVlNST09UL2NvbW1pdGxvZw0KVG9tY2F0U2V0dXAgcnVieSAkQ1ZTUk9PVC9DVlNS T09UL2NvbGxlY3RfZGlmZnMucmIgLS10byBhbWV6aWNrQGd1aWRlc3Rhci5vcmcgJXtzVnZ9DQoj VG9tY2F0U2V0dXAgJENWU1JPT1QvQ1ZTUk9PVC9hY3Rpdml0eW1haWwucGwgLWRjZ2YgJXtzVnZ9 IC10IGFtZXppY2tAZ3VpZGVzdGFyLm9yZw== ------_=_NextPart_001_01C3512C.E45343E8 Content-Type: application/octet-stream; name="record_lastdir.rb" Content-Transfer-Encoding: base64 Content-Description: record_lastdir.rb Content-Disposition: attachment; filename="record_lastdir.rb" IyEvdXNyL2Jpbi9ydWJ5IC13DQoNCiMgUGFydCBvZiBDVlNzcGFtDQojICAgaHR0cDovL3d3dy5i YWRnZXJzLWluLWZvaWwuY28udWsvcHJvamVjdHMvY3Zzc3BhbS8NCiMgQ29weXJpZ2h0IChjKSBE YXZpZCBIb2xyb3lkDQoNCiRyZXBvc2l0b3J5ZGlyID0gQVJHVi5zaGlmdA0KDQokdG1wZGlyID0g ICIvY3lnZHJpdmUvZi9DVlMvY3Zzc3BhbSINCiMgdHJ5IHRvIHBpY2sgYSBuYW1lIHRvIGF2b2lk IGNvbGxpc2lvbnMgd2l0aCBvdGhlciBwZW9wbGUncyBjb21taXRzDQokZGlydGVtcGxhdGUgPSAi I2N2c3NwYW0uI3tQcm9jZXNzLnBwaWR9LiN7UHJvY2Vzcy51aWR9Ig0KJHN0ZG91dC5wcmludCgi ZGlyIHRlbXBsYXRlIGlzICIsJGRpcnRlbXBsYXRlLCJcbiIpDQpkZWYgZmluZF9kYXRhX2Rpcg0K ICBEaXJbIiN7JHRtcGRpcn0vI3skZGlydGVtcGxhdGV9LSoiXS5lYWNoIGRvIHxkaXJ8DQogICAg c3RhdCA9IEZpbGUuc3RhdChkaXIpDQogICAgcmV0dXJuIGRpciBpZiBzdGF0Lm93bmVkPw0KICBl bmQNCiAgbmlsDQplbmQNCg0KJGRhdGFkaXIgPSBmaW5kX2RhdGFfZGlyKCkNCg0KaWYgJGRhdGFk aXI9PW5pbA0KICAkZGF0YWRpciA9ICIjeyR0bXBkaXJ9LyN7JGRpcnRlbXBsYXRlfS0je3JhbmQo OTk5OTk5OTkpfSINCiAgRGlyLm1rZGlyKCRkYXRhZGlyLCAwNzc3KQ0KZW5kDQoNCiR0YWdzID0g bmlsDQoNCiMgUmVjb3JkIGFueSB0YWcgbmFtZSBmb3VuZCBpbiAnRW50cmllcycgZm9yIGZpbGVz IGJlaW5nIGNvbW1pdGVkLiAgVGhpcyBpcw0KIyByZXF1aXJlZCBhdCBwcmUtY29tbWl0LXRpbWUg YXMgd2UgaGF2ZSBubyBvdGhlciB3YXkgb2YgZGVydGVybWluaW5nIHdoYXQNCiMgYnJhbmNoIGEg ZmlsZSB3YXMgb24gaWYgaXQncyBiZWVuIHJlbW92ZWQuDQojDQojIElmIHRoZSBjb21taXRpbmZv LXRhZ3MgZmlsZSBleGlzdHMgZnJvbSBhIHByZXZpb3VzLCB1bnN1Y2Nlc3NmdWwgY29tbWl0LA0K IyB0aGVuIGl0J3MgcG9zc2libGUgZm9yIGl0IHRvIGNvbnRhaW4gbXVsdGlwbGUgZW50cmllcyBm b3IgYSBwYXJ0aWN1bGFyIGZpbGUuDQojIFRoZSBjb25zdW1lciBvZiBjb21taXRpbmZvLXRhZ3Mg bXVzdCB0YWtlIGNhcmUgdG8gb25seSB1c2UgdGhlIGxhc3QgZW50cnkNCiMgZm9yIGEgZ2l2ZW4g ZmlsZW5hbWUuDQoNCmRlZiB3cml0ZV90YWcobmFtZSwgZmlsZSkNCiAgaWYgJHRhZ3MubmlsPw0K ICAgICR0YWdzID0gRmlsZS5uZXcoIiN7JGRhdGFkaXJ9L2NvbW1pdGluZm8tdGFncyIsIEZpbGU6 OldST05MWXxGaWxlOjpDUkVBVHxGaWxlOjpBUFBFTkQpOw0KICAgIHJldHVybiBpZiAkdGFncy5u aWw/DQogIGVuZA0KICAkdGFncy5wdXRzKCIje25hbWV9XHQje2ZpbGV9IikNCmVuZA0KDQpGaWxl Lm9wZW4oIkNWUy9FbnRyaWVzIikgZG8gfGZpbGV8DQogIGZpbGUuZWFjaF9saW5lIGRvIHxsaW5l fA0KICAgIG5leHQgaWYgbGluZSA9fiAvXkQvDQogICAgaW5mbyA9IGxpbmUuc3BsaXQoL1wvLykN CiAgICAjIHNraXAgZW50cmllcyBub3QgY29tbWl0ZWQgdGhpcyBpbnZvY2F0aW9uLA0KICAgIGlm IEFSR1YuZGVsZXRlKGluZm9bMV0pLm5pbD8NCiAgICAgIG5leHQNCiAgICBlbmQNCiAgICBpZiBp bmZvWzVdID1+IC9eVCguKykvDQogICAgICB3cml0ZV90YWcoJDEsICIjeyRyZXBvc2l0b3J5ZGly fS8je2luZm9bMV19IikNCiAgICBlbmQNCiAgZW5kDQplbmQNCg0KJHRhZ3MuY2xvc2UgdW5sZXNz ICR0YWdzLm5pbD8NCg0KdW5sZXNzIEFSR1YuZW1wdHk/DQogICRzdGRlcnIucHV0cyAiTm90aGlu ZyBpbiBDVlMvRW50cmllcyBmb3IgIitBUkdWLmpvaW4oIiwgIikNCmVuZA0KDQoNCiMgUmVjb3Jk IHRoZSBkaXJlY3RvcnkgY3VycmVudGx5IGJlaW5nIGNvbW1pdGVkIHRvLg0KIyANCiMgVGhpcyBz Y3JpcHQgKGFuZCBjb2xsZWN0X2RpZmZzLnJiKSB3aWxsIGJlIHJ1biBqdXN0IGZvciB0aGUgZmls ZXMgaW4gYQ0KIyBzaW5nbGUgZGlyZWN0b3J5Lg0KIyANCiMgQSBjb21taXQgdG8gZmlsZXMgaW4g bXVsdGlwbGUgZGlyZWN0b3JpZXMgd2lsbCB0aGVyZWZvcmUgcHJvZHVjZSBtdWx0aXBsZQ0KIyBp bnZvY2F0aW9ucyBvZiB0aGVzZSBzY3JpcHRzLiAgVG8gc2VuZCB0aGUgZW1haWwgb25seSB3aGVu IHRoZSB3aG9sZSBjb21taXQNCiMgaXMgZG9uZSwgZWFjaCBydW4gb3ZlcndyaXRlcyB0aGUgJ2xh c3RkaXInIGZpbGU7IGNvbGxlY3RfZGlmZnMucmIgd2lsbA0KIyBsYXRlciBpbnNwZWN0IHRoZSB2 YWx1ZSBpdCBjb250YWlucyB0byB3b3JrIG91dCBpZiBpdCBuZWVkcyB0byBnZW5lcmF0ZSB0aGUN CiMgZW1haWwgeWV0Lg0KDQpGaWxlLm9wZW4oIiN7JGRhdGFkaXJ9L2xhc3RkaXIiLCAidyIpIHsg fGZpbGV8DQoJZmlsZS53cml0ZSAkcmVwb3NpdG9yeWRpcg0KfQ0K ------_=_NextPart_001_01C3512C.E45343E8-- --J5MfuwkIyy7RmF4Q-- From webmaster at bopos.net Tue Apr 12 18:43:18 2005 From: webmaster at bopos.net (Boris Penchev) Date: Tue, 12 Apr 2005 14:43:18 -0400 Subject: [cvsspam-devel] Cvs/cvsspam bug has been found Message-ID:-----Original Message-----
From: = S-1-5-18=20 [mailto:SYSTEM@wbutil.guidestar.net]
Sent: Wednesday, July = 23, 2003=20 11:11 AM
To: Angus Mezick
Subject: [CVS = TomcatSetup]=20 test
Commit in TomcatSetup on=20 MAIN dummy.txt +3 -1 1.14 -> = 1.15 test
TomcatSetup
dummy.txt 1.14 ->=20 1.15diff -u -r1.14 = -r1.15 --- dummy.txt 23 Jul 2003 15:10:07 -0000 1.14 +++ dummy.txt 23 Jul 2003 15:11:01 -0000 1.15 @@ -2,4 +2,6 @@asdfasdf asdfasdf asdfasdf-asdfasdfasdf\ No newline at end of file+asdfasdf +asdfasdf +qwerqwer\ No newline at end of fileemail"=20 = href=3D"http://www.badgers-in-foil.co.uk/projects/cvsspam/">CVSspam=20 0.2.7