# Name: smd_qr_code v0.31 # Type: Public side plugin # Create QR codes on the fly # Author: Stef Dawson # URL: http://stefdawson.com/ # Recommended load order: 5 # ..................................................................... # This is a plugin for Textpattern - http://textpattern.com/ # To install: textpattern > admin > plugins # Paste the following text into the 'Install plugin' box: # ..................................................................... YToxMTp7czo0OiJuYW1lIjtzOjExOiJzbWRfcXJfY29kZSI7czo2OiJhdXRob3IiO3M6MTE6 IlN0ZWYgRGF3c29uIjtzOjEwOiJhdXRob3JfdXJpIjtzOjIyOiJodHRwOi8vc3RlZmRhd3Nv bi5jb20vIjtzOjc6InZlcnNpb24iO3M6NDoiMC4zMSI7czoxMToiZGVzY3JpcHRpb24iO3M6 MjY6IkNyZWF0ZSBRUiBjb2RlcyBvbiB0aGUgZmx5IjtzOjQ6ImNvZGUiO3M6MTQ2NzE6ImZ1 bmN0aW9uIHNtZF9xcl9jb2RlKCRhdHRzLCAkdGhpbmc9TlVMTCkgew0KCWV4dHJhY3QobEF0 dHMoYXJyYXkoDQoJCSd0eXBlJyAgICAgID0+ICd0ZXh0JywgLy8gdGV4dC9saW5rL2Jvb2tt YXJrL3Ntcy9waG9uZS9lbWFpbC9jb250YWN0L2dlby93aWZpDQoJCSdkYXRhJyAgICAgID0+ ICdIZWxsbyB3b3JsZCEnLA0KCQknZGVsaW0nICAgICA9PiAnfCcsDQoJCSdsYXlvdXQnICAg ID0+ICcnLA0KCQkndHJhbnNmb3JtJyA9PiAnJywNCgkJJ3ZhbGlkYXRlJyAgPT4gJzEnLCAv LyAwPW5vLCAxPXllcywgb3IgJ3ZhbGlkYXRlLHRoZXNlLGZpZWxkcycgb3IgJ3ZhbGlkYXRl LCB0aGVzZXxeWzAtOS4gXC1dKyQsIGZpZWxkcw0KCQkndmFsaWRlbGltJyA9PiAnLCcsDQoJ CSdmb3JtYXQnICAgID0+ICd2aWV3JywgLy8gdmlldy9kb3dubG9hZC9yYXcNCgkJJ3ByZWZp eCcgICAgPT4gJ1NNRF9RUl8nLA0KCQknd2lkdGgnICAgICA9PiAnMjAwJywNCgkJJ2hlaWdo dCcgICAgPT4gJzIwMCcsDQoJCSdxdWFsaXR5JyAgID0+ICdMJywgLy8gTC9NL1EvSA0KCQkn bWFyZ2luJyAgICA9PiAnNCcsDQoJCSdiZ2NvbCcgICAgID0+ICcnLA0KCQknYWxwaGEnICAg ICA9PiAnJywNCgkJJ2VzY2FwZScgICAgPT4gJycsDQoJCSd0aXRsZScgICAgID0+ICcnLA0K CQknY2xhc3MnICAgICA9PiAnJywNCgkJJ2h0bWxfaWQnICAgPT4gJycsDQoJCSd3cmFwdGFn JyAgID0+ICcnLA0KCQknZGVidWcnICAgICA9PiAwLA0KCSksJGF0dHMpKTsNCg0KCS8vIERl ZmF1bHQgbGF5b3V0cw0KCSRsYXlvdXRzID0gYXJyYXkoDQoJCSd0ZXh0JyAgICAgPT4gInt0 ZXh0fSIsDQoJCSdsaW5rJyAgICAgPT4gInt1cmx9IiwNCgkJJ2Jvb2ttYXJrJyA9PiAiTUVC S006VElUTEU6e3RpdGxlfTtVUkw6e3VybH07OyIsDQoJCSdzbXMnICAgICAgPT4gIlNNU1RP OntwaG9uZX06e3RleHR9IiwNCgkJJ3Bob25lJyAgICA9PiAiVEVMOntwaG9uZX0iLA0KCQkn Y29udGFjdCcgID0+ICJNRUNBUkQ6Tjp7bmFtZX07QURSOnthZGRyZXNzfTtURUw6e3Bob25l fTtFTUFJTDp7ZW1haWx9OzsiLA0KCQkndmNhcmQnICAgID0+ICJCRUdJTjpWQ0FSRFxyXG5O OnsiLiRwcmVmaXguImZvcm1hdHRlZF9uYW1lfVxyXG5GTjp7bmFtZX1cclxuRU1BSUw6e2Vt YWlsfVxyXG5VUkw6e3VybH1cclxuQURSOnthZGRyZXNzfVxyXG5URUw6e3Bob25lfVxyXG5F TkQ6VkNBUkQiLA0KCQknZW1haWwnICAgID0+ICJNQVRNU0c6VE86e2VtYWlsfTtTVUI6e3N1 YmplY3R9O0JPRFk6e21lc3NhZ2V9OzsiLA0KCQknZ2VvJyAgICAgID0+ICJHRU86e2xhdH0s e2xvbn0se2hlaWdodH0iLA0KCQknd2lmaScgICAgID0+ICJXSUZJOlQ6e3dpZmlfcHJvdG9j b2x9O1N7c3NpZH07e3Bhc3N9OzsiLA0KCSk7DQoNCgkvLyBEZWZhdWx0IHJlZ2V4ZXMNCgkk cmVfdXJsID0gJ0BeKGh0dHA6Ly98aHR0cHM6Ly8pLitAJzsNCgkkcmVfZW1haWwgPSAiPF5b YS16MC05ISMkJSYnKisvPT9eX2B7fH1+LV0rKD86XC5bYS16MC05ISMkJSYnKisvPT9eX2B7 fH1+LV0rKSpAKD86W2EtejAtOV0oPzpbYS16MC05LV0qW2EtejAtOV0pP1wuKStbYS16MC05 XSg/OlthLXowLTktXSpbYS16MC05XSk/JD4iOw0KCSRyZV9waG9uZSA9ICcvXlswLTkoKVwt KyBdKyQvJzsNCgkkcmVfbXNnID0gJy9eLiskLyc7DQoJJHJlX2dlbyA9ICcvXlswLTkuXC1d KyQvJzsNCgkkcmVfZGlnaXRzID0gJy9eWzAtOVwrXC1dKyQvJzsNCgkkcmVfd2lmaV9wcm90 b2NvbCA9ICcvXihXRVB8V1BBKSQvJzsNCg0KCS8vIHJlZ2V4IGFycmF5OiBjYW4gYmUgb3Zl cnJpZGRlbiBvbiBhIGNhc2UgYnkgY2FzZSBiYXNpcyBieSB0aGUgdmFsaWRhdGUgYXR0cmli dXRlDQoJJHJlZ2V4ZXMgPSBhcnJheSgNCgkJJ3RleHQnID0+ICRyZV9tc2csDQoJCSd1cmwn ID0+ICRyZV91cmwsDQoJCSd0aXRsZScgPT4gJHJlX21zZywNCgkJJ3Bob25lJyA9PiAkcmVf cGhvbmUsDQoJCSduYW1lJyA9PiAkcmVfbXNnLA0KCQknYWRkcmVzcycgPT4gJHJlX21zZywN CgkJJ2VtYWlsJyA9PiAkcmVfZW1haWwsDQoJCSdzdWJqZWN0JyA9PiAkcmVfbXNnLA0KCQkn bWVzc2FnZScgPT4gJHJlX21zZywNCgkJJ2xhdCcgPT4gJHJlX2dlbywNCgkJJ2xvbicgPT4g JHJlX2dlbywNCgkJJ2hlaWdodCcgPT4gJHJlX2RpZ2l0cywNCgkJJ3dpZmlfcHJvdG9jb2wn ID0+ICRyZV93aWZpX3Byb3RvY29sLA0KCQknc3NpZCcgPT4gJHJlX21zZywNCgkJJ3Bhc3Mn ID0+ICRyZV9tc2csDQoJKTsNCg0KCS8vIE92ZXJyaWRlIC8gbmV3IGxheW91dA0KCWlmICgk bGF5b3V0KSB7DQoJCSRsYXlvdXRzWyR0eXBlXSA9IHN0cl9yZXBsYWNlKCdcclxuJywgJw0K JywgJGxheW91dCk7IC8vIFVnbHkgbmV3bGluZSBoYWNrDQoJfQ0KDQoJLy8gQnVpbGQgdGhl IGFycmF5IG9mIHBlcm1pdHRlZCB0eXBlcw0KCS8vIEVhY2ggZW50cnkgbGlua3MgdGhlICd0 eXBlJyBhdHRyaWJ1dGUgd2l0aCBhbiBhcnJheSBvZiBleHBlY3RlZCBhdHRyaWJ1dGVzLg0K CS8vIFRoZSByZWdleCB0byB1c2UgZm9yIGVhY2ggY2FuIGJlIGxvb2tlZCB1cCBpbiB0aGUg JHJlZ2V4ZXMgYXJyYXkNCglmb3JlYWNoKCRsYXlvdXRzIGFzICRsYXkgPT4gJGRlZikgew0K CQlwcmVnX21hdGNoX2FsbCgnL1x7KCg/IScuJHByZWZpeC4nKS4qPylcfS8nLCAkZGVmLCAk bWF0Y2hlcyk7DQoJCSRhbGxvd2VkX3R5cGVzWyRsYXldID0gJG1hdGNoZXNbMV07DQoJCS8v IEFzIGEgY29udmVuaWVuY2UsIGlmIGFueSBuZXcgZmllbGRzIGFyZSBkZWZpbmVkLCBzZXQg YSBkZWZhdWx0ICh3aWRlLW9wZW4pIHJlZ2V4IGZvciBlYWNoDQoJCS8vIFRoZXNlIGRlZmF1 bHQgcmVnZXhlcyBjYW4gYmUgb3ZlcnJpZGVuIGJ5IHRoZSBuZXh0IGNvZGUgYmxvY2sNCgkJ aWYgKCRsYXlvdXQpIHsNCgkJCWZvcmVhY2ggKCRtYXRjaGVzWzFdIGFzICRuZXdmaWVsZCkg ew0KCQkJCWlmKCFpc3NldCgkcmVnZXhlc1skbmV3ZmllbGRdKSkgew0KCQkJCQkkcmVnZXhl c1skbmV3ZmllbGRdID0gJHJlX21zZzsNCgkJCQl9DQoJCQl9DQoJCX0NCgl9DQoNCgkvLyBC dWlsZCB0aGUgbGlzdCBvZiBmaWVsZHMgdG8gdmFsaWRhdGUgYW5kIGluamVjdCAvIG92ZXJ3 cml0ZSBhbnkgY3VzdG9tIHJlZ2V4ZXMNCgkkdmFsaWRSZXN0ID0gZmFsc2U7DQoJaWYgKCR2 YWxpZGF0ZSA9PSAnMCcpIHsNCgkJJHRvVmFsaWRhdGUgPSBhcnJheSgpOw0KCX0NCglpZiAo JHZhbGlkYXRlID09ICcxJykgew0KCQkkdG9WYWxpZGF0ZVtdID0gJ1NNRF9BTEwnOw0KCX0g ZWxzZSB7DQoJCSRmaWVsZHMgPSBkb19saXN0KCR2YWxpZGF0ZSwgJHZhbGlkZWxpbSk7DQoJ CWZvcmVhY2ggKCRmaWVsZHMgYXMgJGZpZWxkaW5mbykgew0KCQkJJGZpZWxkUGFydHMgPSBl eHBsb2RlKCRkZWxpbSwgJGZpZWxkaW5mbyk7DQoJCQlpZiAoJGZpZWxkUGFydHNbMF0gPT0g JzEnKSB7DQoJCQkJJHZhbGlkUmVzdCA9IHRydWU7DQoJCQl9IGVsc2Ugew0KCQkJCSR0b1Zh bGlkYXRlW10gPSAkZmllbGRQYXJ0c1swXTsNCgkJCQlpZiAoaXNzZXQoJGZpZWxkUGFydHNb MV0pKSB7DQoJCQkJCWlmIChzdHJwb3MoJGZpZWxkUGFydHNbMV0sICdTTURfUkVHRVhfJykg IT09IGZhbHNlKSB7DQoJCQkJCQkkY29weUZyb21GaWVsZCA9IHN0cnRvbG93ZXIoc3RyX3Jl cGxhY2UoJ1NNRF9SRUdFWF8nLCAnJywgJGZpZWxkUGFydHNbMV0pKTsNCgkJCQkJCWlmIChp c3NldCgkcmVnZXhlc1skY29weUZyb21GaWVsZF0pKSB7DQoJCQkJCQkJJHJlZ2V4ZXNbJGZp ZWxkUGFydHNbMF1dID0gJHJlZ2V4ZXNbJGNvcHlGcm9tRmllbGRdOw0KCQkJCQkJfQ0KCQkJ CQl9IGVsc2Ugew0KCQkJCQkJJHJlZ2V4ZXNbJGZpZWxkUGFydHNbMF1dID0gJGZpZWxkUGFy dHNbMV07DQoJCQkJCX0NCgkJCQl9DQoJCQl9DQoJCX0NCgkJaWYgKCR2YWxpZFJlc3QgJiYg YXJyYXlfa2V5X2V4aXN0cygkdHlwZSwgJGFsbG93ZWRfdHlwZXMpKSB7DQoJCQlmb3JlYWNo KCRhbGxvd2VkX3R5cGVzWyR0eXBlXSBhcyAkZmxkKSB7DQoJCQkJaWYgKCFpbl9hcnJheSgk ZmxkLCAkcmVnZXhlcykpIHsNCgkJCQkJJHRvVmFsaWRhdGVbXSA9ICRmbGQ7DQoJCQkJfQ0K CQkJfQ0KCQl9DQoJfQ0KDQoJLy8gRGVmYXVsdCB0cmFuc2Zvcm1zDQoJJHRyYW5zZm9ybXMg PSBhcnJheSgNCgkJJyoudXJsJyAgICAgID0+ICdsaW5raWZ5JywNCgkJJ3ZjYXJkLm5hbWUn ID0+ICdzcGxpdHJldmpvaW58Zm9ybWF0dGVkX25hbWV8IHw7JywNCgkpOw0KDQoJLy8gQWRk IGN1c3RvbSB0cmFuc2Zvcm0gcnVsZXMNCgkvLyBOZXcgbWV0aG9kcyBtdXN0IHVzZSByZWdp c3Rlcl9jYWxsYmFjaygnbXlfY3VzdG9tX3RyYW5zZm9ybScsICdzbWRfcXJfY29kZScsICdh ZGRfdHJhbnNmb3JtJyk7DQoJLy8gRnVuY3Rpb24gc2lnbmF0dXJlIGlzOiAxKSBkYXRhIHZh bHVlIHRvIHRyYW5zZm9ybSwgMikgb3B0aW9uYWwgYXJyYXkgb2YgYW55IG90aGVyIGFyZ3Mg cGFja2FnZWQgYXMgbmFtZT0+dmFsIGVudHJpZXMNCgkkdHJhbnNmb3JtID0gZG9fbGlzdCgk dHJhbnNmb3JtKTsNCglmb3JlYWNoICgkdHJhbnNmb3JtIGFzICR4Zm9ybSkgew0KCQlpZiAo ZW1wdHkoJHhmb3JtKSkgY29udGludWU7DQoJCSR4Zm9ybVBhcmFtcyA9IGRvX2xpc3QoJHhm b3JtLCAkZGVsaW0pOw0KCQkkeGZvcm1pZCA9IGFycmF5X3NoaWZ0KCR4Zm9ybVBhcmFtcyk7 DQoJCSR0cmFuc2Zvcm1zWyR4Zm9ybWlkXSA9IGpvaW4oJGRlbGltLCAkeGZvcm1QYXJhbXMp Ow0KCX0NCg0KCWlmICgkZGVidWcpIHsNCgkJZWNobyAnKysgVFJBTlNGT1JNQVRJT05TICsr JzsNCgkJZG1wKCR0cmFuc2Zvcm1zKTsNCgl9DQoNCglpZiAoYXJyYXlfa2V5X2V4aXN0cygk dHlwZSwgJGFsbG93ZWRfdHlwZXMpKSB7DQoJCSRxcmMgPSBuZXcgc21kX3FyY29kZSgkd2lk dGgsICRoZWlnaHQsICRxdWFsaXR5LCAkbWFyZ2luLCAkYmdjb2wsICRhbHBoYSwgJGVzY2Fw ZSk7DQoJCSRwYXJhbXMgPSBzbWRfcXJfY29kZV9leHRyYWN0KCRhbGxvd2VkX3R5cGVzWyR0 eXBlXSwgJHRyYW5zZm9ybXMsICRyZWdleGVzLCAkdG9WYWxpZGF0ZSwgJGRhdGEsICRkZWxp bSwgJHR5cGUsICRwcmVmaXgsICRkZWJ1Zyk7DQoNCgkJaWYgKCRwYXJhbXMgPT09IGZhbHNl KSB7DQoJCQlyZXR1cm4gJyc7DQoJCX0gZWxzZSB7DQoJCQkvLyBSdW4gdGhlIGZ1bmN0aW9u IHRoYXQgcHJlcGFyZXMgdGhlIGRhdGEgb2JqZWN0DQoJCQlpZiAoYXJyYXlfa2V5X2V4aXN0 cygkdHlwZSwgJGxheW91dHMpKSB7DQoJCQkJJHFyYy0+Z2V0X2RhdGEoJGxheW91dHNbJHR5 cGVdLCAkcGFyYW1zLCAkZGVidWcpOw0KCQkJfSBlbHNlIHsNCgkJCQl0cmlnZ2VyX2Vycm9y KHNtZF9xcl9jb2RlX2dUeHQoJ3NtZF9xcl9jb2RlX2ludmFsaWRfbGF5b3V0JywgYXJyYXko J3t0eXBlfScgPT4gJHR5cGUpKSwgRV9VU0VSX05PVElDRSk7DQoJCQkJcmV0dXJuICcnOw0K CQkJfQ0KCQl9DQoNCgkJaWYgKCRmb3JtYXQgPT0gJ3ZpZXcnKSB7DQoJCQkkdHJpYnMgPSAn JzsNCgkJCWlmICghJHdyYXB0YWcpIHsNCgkJCQkkdHJpYnMgLj0gKCRjbGFzcykgPyAnIGNs YXNzPSInLiRjbGFzcy4nIicgOiAnJzsNCgkJCQkkdHJpYnMgLj0gKCRodG1sX2lkKSA/ICcg aWQ9IicuJGh0bWxfaWQuJyInIDogJyc7DQoJCQkJJHRyaWJzIC49ICgkdGl0bGUpID8gJyB0 aXRsZT0iJy4kdGl0bGUuJyInIDogJyc7DQoJCQl9DQoNCgkJCSRjb250ZW50ID0gJzxpbWcg c3JjPSInIC4gJHFyYy0+Z2V0X2xpbmsoKSAuICciJy4kdHJpYnMuJyBhbHQ9IlFSIGNvZGUi IC8+JzsNCg0KCQkJcmV0dXJuICgkd3JhcHRhZykgPyBkb1RhZygkY29udGVudCwgJHdyYXB0 YWcsICRjbGFzcywgJycsICRodG1sX2lkKSA6ICRjb250ZW50Ow0KDQoJCX0gZWxzZWlmICgk Zm9ybWF0ID09ICdkb3dubG9hZCcpIHsNCgkJCSRmaWxlID0gJHFyYy0+Z2V0X2ltYWdlKCk7 DQoJCQkkcXJjLT5kb3dubG9hZF9pbWFnZSgkZmlsZSk7DQoJCQlyZXR1cm4gJyc7DQoJCX0g ZWxzZWlmICgkZm9ybWF0ID09ICdyYXcnKSB7DQoJCQkkY29udGVudCA9ICRxcmMtPmdldF9s aW5rKCk7DQoJCQlyZXR1cm4gKCR3cmFwdGFnKSA/IGRvVGFnKCRjb250ZW50LCAkd3JhcHRh ZywgJGNsYXNzLCAnJywgJGh0bWxfaWQpIDogJGNvbnRlbnQ7DQoJCX0NCgl9IGVsc2Ugew0K CQl0cmlnZ2VyX2Vycm9yKHNtZF9xcl9jb2RlX2dUeHQoJ3NtZF9xcl9jb2RlX2ludmFsaWRf dHlwZScsIGFycmF5KCd7dHlwZX0nID0+ICR0eXBlKSksIEVfVVNFUl9OT1RJQ0UpOw0KCQly ZXR1cm4gJyc7DQoJfQ0KfQ0KDQovLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KZnVuY3Rp b24gc21kX3FyX2NvZGVfZXh0cmFjdCgkcGVybWl0dGVkLCAkdHJhbnNmb3JtcywgJHJlZ2V4 TGlzdCwgJHZhbGlkYXRlTGlzdCwgJGRhdGEsICRkbG0sICR0YWcsICRwcmVmaXgsICRkZWJ1 Zz1mYWxzZSkgew0KCSRvcHRzID0gZG9fbGlzdCgkZGF0YSwgJGRsbSk7DQoJJG9wdHMgPSAo ZW1wdHkoJG9wdHNbMF0pKSA/IGFycmF5KCkgOiAkb3B0czsNCg0KCSR4Zm9ybWxpc3QgPSBu ZXcgc21kX3FyX2NvZGVfdHJhbnNmb3JtcygpOw0KDQoJJG91dCA9IGFycmF5KCk7DQoJJGNv dW50ID0gMDsNCg0KCWlmICgkZGVidWcpIHsNCgkJZWNobyAnKysgUEVSTUlUVEVEIElURU1T IC8gU1VQUExJRUQgSVRFTVMgLyBSRUdFWEVTIC8gRklFTERTIFRPIFZBTElEQVRFICsrJzsN CgkJZG1wKCRwZXJtaXR0ZWQsICRvcHRzLCAkcmVnZXhMaXN0LCAkdmFsaWRhdGVMaXN0KTsN Cgl9DQoNCglpZiAoY291bnQoJHBlcm1pdHRlZCkgIT0gY291bnQoJG9wdHMpKSB7DQoJCXRy aWdnZXJfZXJyb3Ioc21kX3FyX2NvZGVfZ1R4dCgnc21kX3FyX2NvZGVfYXR0cmlidXRlX21p c21hdGNoJywgYXJyYXkoJ3t0eXBlfScgPT4gJHRhZywgJ3tjb3VudH0nID0+IGNvdW50KCRv cHRzKSwgJ3tleHBlY3RlZH0nID0+IGNvdW50KCRwZXJtaXR0ZWQpLCAne2ZpZWxkc30nID0+ IGpvaW4oJywgJywgJHBlcm1pdHRlZCkpKSwgRV9VU0VSX05PVElDRSk7DQoJCXJldHVybiBm YWxzZTsNCgl9DQoNCglmb3JlYWNoICgkcGVybWl0dGVkIGFzICRpZHgpIHsNCgkJaWYgKGlz c2V0KCRvcHRzWyRjb3VudF0pKSB7DQoJCQkkZGF0YXZhbCA9ICRvcHRzWyRjb3VudF07DQoJ CQlpZiAoJGRhdGF2YWwgPT0gJ3tzbWRfZW1wdHl9Jykgew0KCQkJCSRvdXRbJGlkeF0gPSAn JzsNCgkJCX0gZWxzZSB7DQoNCgkJCQkvLyBQZXJmb3JtIGFueSB0cmFuc2Zvcm1hdGlvbnMN CgkJCQkkYXBwbHlfdG8gPSAkdGFnLicuJy4kaWR4Ow0KCQkJCSR4a2V5ID0gJyc7DQoNCgkJ CQlpZiAoYXJyYXlfa2V5X2V4aXN0cygkYXBwbHlfdG8sICR0cmFuc2Zvcm1zKSkgew0KCQkJ CQkkeGtleSA9ICRhcHBseV90bzsNCgkJCQl9IGVsc2UgaWYgKGFycmF5X2tleV9leGlzdHMo JyouJy4kaWR4LCAkdHJhbnNmb3JtcykpIHsNCgkJCQkJJHhrZXkgPSAnKi4nLiRpZHg7DQoJ CQkJfQ0KDQoJCQkJaWYgKCR4a2V5KSB7DQoJCQkJCSR4Zm9ybSA9ICR0cmFuc2Zvcm1zWyR4 a2V5XTsNCgkJCQkJJHhmb3JtVmFscyA9IGRvX2xpc3QoJHhrZXksICcuJyk7DQoJCQkJCSR4 Zm9ybUFyZ3MgPSBleHBsb2RlKCRkbG0sICR4Zm9ybSk7DQoJCQkJCSRmbiA9IGFycmF5X3No aWZ0KCR4Zm9ybUFyZ3MpOw0KDQoJCQkJCWlmICgkaWR4ID09ICR4Zm9ybVZhbHNbMV0pIHsN CgkJCQkJCS8vIFBhc3MgdGhlIHJlbWFpbmluZyBhcmdzIHRvIHRoZSBub21pbmF0ZWQgZnVu Y3Rpb24uLi4NCgkJCQkJCSRyZXN1bHQgPSAkeGZvcm1saXN0LT5leGVjdXRlKCRmbiwgJGRh dGF2YWwsICR4Zm9ybUFyZ3MpOw0KDQoJCQkJCQkvLyAuLiBhbmQgZWl0aGVyIG92ZXJyaWRl IHRoZSBjdXJyZW50IHZhbHVlIG9yIGFkZCBuZXcgb25lcw0KCQkJCQkJaWYgKGlzX2FycmF5 KCRyZXN1bHQpKSB7DQoJCQkJCQkJZm9yZWFjaCgkcmVzdWx0IGFzICRpbmFyZyA9PiAkaW52 YWwpIHsNCgkJCQkJCQkJaWYgKCRpbmFyZyA9PSAkaWR4KSB7DQoJCQkJCQkJCQkkZGF0YXZh bCA9ICRpbnZhbDsNCgkJCQkJCQkJfSBlbHNlIHsNCgkJCQkJCQkJCS8vIEluamVjdCBuZXcg dGFncyBjcmVhdGVkIGJ5IHRyYW5zZm9ybXMgZGlyZWN0bHkgaW50byB0aGUgb3V0c3RyZWFt DQoJCQkJCQkJCQkkb3V0WyRwcmVmaXguJGluYXJnXSA9ICRpbnZhbDsNCgkJCQkJCQkJfQ0K CQkJCQkJCX0NCgkJCQkJCX0gZWxzZSB7DQoJCQkJCQkJJGRhdGF2YWwgPSAkcmVzdWx0Ow0K CQkJCQkJfQ0KCQkJCQl9DQoJCQkJfQ0KDQoJCQkJLy8gUGVyZm9ybSB2YWxpZGF0aW9uIGlm IHJlcXVpcmVkDQoJCQkJaWYgKGluX2FycmF5KCdTTURfQUxMJywgJHZhbGlkYXRlTGlzdCkg fHwgaW5fYXJyYXkoJGlkeCwgJHZhbGlkYXRlTGlzdCkpIHsNCgkJCQkJJHJlID0gaXNzZXQo JHJlZ2V4TGlzdFskaWR4XSkgPyAkcmVnZXhMaXN0WyRpZHhdIDogJyc7DQoNCgkJCQkJaWYg KCRyZSkgew0KCQkJCQkJaWYgKCRkZWJ1ZyA+IDEpIHsNCgkJCQkJCQlkbXAoJ1ZBTElEQVRJ TkcgJyAuICRpZHggLiAnIHVzaW5nICcgLiAkcmUpOw0KCQkJCQkJfQ0KCQkJCQkJaWYgKHBy ZWdfbWF0Y2goJHJlLCAkZGF0YXZhbCkpIHsNCgkJCQkJCQkkb3V0WyRpZHhdID0gJGRhdGF2 YWw7DQoJCQkJCQl9IGVsc2Ugew0KCQkJCQkJCXRyaWdnZXJfZXJyb3Ioc21kX3FyX2NvZGVf Z1R4dCgnc21kX3FyX2NvZGVfaW52YWxpZF9hdHRyaWJ1dGUnLCBhcnJheSgne2F0dHJpYn0n ID0+ICRpZHgsICd7dGFnfScgPT4gJHRhZykpLCBFX1VTRVJfTk9USUNFKTsNCgkJCQkJCQly ZXR1cm4gZmFsc2U7DQoJCQkJCQl9DQoJCQkJCX0gZWxzZSB7DQoJCQkJCQkkb3V0WyRpZHhd ID0gJGRhdGF2YWw7DQoJCQkJCQl0cmlnZ2VyX2Vycm9yKHNtZF9xcl9jb2RlX2dUeHQoJ3Nt ZF9xcl9jb2RlX25vX3JlZ2V4JywgYXJyYXkoJ3thdHRyaWJ9JyA9PiAkaWR4LCAne3RhZ30n ID0+ICR0YWcpKSwgRV9VU0VSX1dBUk5JTkcpOw0KCQkJCQl9DQoJCQkJfSBlbHNlIHsNCgkJ CQkJLy8gTm90IHZhbGlkYXRpbmcsIHNvIHN0b3JlIGl0IHZlcmJhdGltDQoJCQkJCWlmICgk ZGVidWcgPiAxKSB7DQoJCQkJCQlkbXAoJ05PVCBWQUxJREFUSU5HICcgLiAkaWR4KTsNCgkJ CQkJfQ0KCQkJCQkkb3V0WyRpZHhdID0gJGRhdGF2YWw7DQoJCQkJfQ0KCQkJfQ0KCQl9IGVs c2Ugew0KCQkJLy8gVE9ETzogZXJtLi4uPw0KCQl9DQoJCSRjb3VudCsrOw0KCX0NCgkJCQkJ DQoJcmV0dXJuICRvdXQ7DQp9DQoNCi8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQpmdW5j dGlvbiBzbWRfcXJfY29kZV9nVHh0KCR3aGF0LCAkYXR0cyA9IGFycmF5KCkpIHsNCgkkbGFu ZyA9IGFycmF5KA0KCQknc21kX3FyX2NvZGVfYXR0cmlidXRlX21pc21hdGNoJyA9PiAiTnVt YmVyIG9mIHBhcmFtZXRlcnMgZG9uJ3QgbWF0Y2ggaW4gJ3t0eXBlfScgUVIgY29kZTogZ2l2 ZW4ge2NvdW50fSwgZXhwZWN0aW5nIHtleHBlY3RlZH0gKEZpZWxkczoge2ZpZWxkc30pIiwN CgkJJ3NtZF9xcl9jb2RlX2ludmFsaWRfYXR0cmlidXRlJyA9PiAiSW52YWxpZCBhdHRyaWJ1 dGUgJ3thdHRyaWJ9JyBzdXBwbGllZCBpbiAne3RhZ30nIFFSIGNvZGUuIENoZWNrIHRoZSBm b3JtYXQgYW5kIG9yZGVyIG9mIGRhdGEgaXRlbXMiLA0KCQknc21kX3FyX2NvZGVfaW52YWxp ZF9sYXlvdXQnID0+ICJJbnZhbGlkIFFSIGNvZGUgbGF5b3V0ICd7dHlwZX0nIiwNCgkJJ3Nt ZF9xcl9jb2RlX2ludmFsaWRfdHJhbnNmb3JtJyA9PiAiSW52YWxpZCBvciB1bnJlZ2lzdGVy ZWQgdHJhbnNmb3JtIGZ1bmN0aW9uICd7Zm59JyAtLSBpZ25vcmluZyIsDQoJCSdzbWRfcXJf Y29kZV9pbnZhbGlkX3R5cGUnID0+ICJJbnZhbGlkIFFSIGNvZGUgdHlwZSAne3R5cGV9JyIs DQoJCSdzbWRfcXJfY29kZV9ub19yZWdleCcgPT4gIk5vIHJlZ2V4IGZvdW5kIGZvciAne2F0 dHJpYn0nIGluICd7dGFnfScgUVIgY29kZSAtLSBpZ25vcmluZyIsDQoJCSdzbWRfcXJfY29k ZV90b29fbGFyZ2UnID0+ICJRUiBjb2RlIGRhdGEgcmVxdWVzdCB0b28gbGFyZ2UiLA0KCSk7 DQoJcmV0dXJuIHN0cnRyKCRsYW5nWyR3aGF0XSwgJGF0dHMpOw0KfQ0KDQovLy0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLQ0KY2xhc3Mgc21kX3FyY29kZQ0Kew0KCXByaXZhdGUgJGFwaSA9 ICdodHRwOi8vY2hhcnQuYXBpcy5nb29nbGUuY29tL2NoYXJ0JzsNCglwcml2YXRlICRkYXRh Ow0KCXByaXZhdGUgJGRpbWVuc2lvbnMgPSAnJzsNCglwcml2YXRlICRxdWFsaXR5ID0gJyc7 DQoJcHJpdmF0ZSAkY29sb3VyID0gJyc7DQoJcHJpdmF0ZSAkZXNjYXBlID0gJyc7DQoNCgkv LyBDb25zdHJ1Y3Rvcg0KCXB1YmxpYyBmdW5jdGlvbiBzbWRfcXJjb2RlKCR3aWR0aCwgJGhl aWdodCwgJHF1YWwsICRtYXJnaW4sICRiZ2NvbCwgJGFscGhhLCAkZXNjKSB7DQoJCSR0aGlz LT5lc2NhcGUgPSAkZXNjOw0KDQoJCS8vIEJ1aWxkIEFQSSBzdHJpbmdzDQoJCSR3ID0gKGlz X251bWVyaWMoJHdpZHRoKSkgPyAkd2lkdGggOiAyMDA7DQoJCSRoID0gKGlzX251bWVyaWMo JGhlaWdodCkpID8gJGhlaWdodCA6IDIwMDsNCgkJJHRoaXMtPmRpbWVuc2lvbnMgPSAkdy4n eCcuJGg7DQoNCgkJJGNvbG91cnMgPSBhcnJheSgpOw0KCQlpZiAoJGFscGhhKSAkY29sb3Vy c1tdID0gJ2EscywwMDAwMDAnLnN1YnN0cigkYWxwaGEsIC0yKTsNCgkJaWYgKCRiZ2NvbCkg JGNvbG91cnNbXSA9ICdiZyxzLCcuJGJnY29sOw0KCQkkdGhpcy0+Y29sb3VyID0gKCRjb2xv dXJzKSA/IGpvaW4oJ3wnLCAkY29sb3VycykgOiAnJzsNCg0KCQkkcXVhbCA9IHN0cnRvdXBw ZXIoJHF1YWwpOw0KCQkkc3pvcHRzW10gPSAoJHF1YWwgJiYgaW5fYXJyYXkoJHF1YWwsIGFy cmF5KCdMJywgJ00nLCAnUScsICdIJykpKSA/ICRxdWFsIDogJ0wnOw0KCQlpZiAoaXNfbnVt ZXJpYygkbWFyZ2luKSkgJHN6b3B0c1tdID0gJG1hcmdpbjsNCgkJJHRoaXMtPnF1YWxpdHkg PSBqb2luKCd8JywgJHN6b3B0cyk7DQoJfQ0KDQoJLy8gQ3JlYXRlIHRoZSBkYXRhIG9iamVj dCBmcm9tIHRoZSBnaXZlbiBsYXlvdXQsIHBsdWdnaW5nIGluIHRoZSByZXBsYWNlbWVudCB2 YXJpYWJsZXMgYW5kIGFwcGx5aW5nIGFueSB0cmFuc2Zvcm1hdGlvbnMNCglwdWJsaWMgZnVu Y3Rpb24gZ2V0X2RhdGEoJGxheW91dCwgJGFyZ3MsICRkZWJ1Zz0wKSB7DQoJCS8vIENyZWF0 ZSB0aGUgcmVwbGFjZW1lbnRzDQoJCSRyZXBzID0gYXJyYXkoKTsNCg0KCQlmb3JlYWNoICgk YXJncyBhcyAkYXJnID0+ICR2YWwpIHsNCgkJCSRyZXBzWyd7Jy4kYXJnLid9J10gPSAkdmFs Ow0KCQl9DQoNCgkJaWYgKCRkZWJ1Zykgew0KCQkJZWNobyAnKysgUkVQTEFDRU1FTlRTICsr JzsNCgkJCWRtcCgkcmVwcyk7DQoJCX0NCg0KCQkkdGhpcy0+ZGF0YSA9IHN0cnRyKCRsYXlv dXQsICRyZXBzKTsNCg0KCQkvLyBCYXJmIGlmIGFib3ZlIHJvdWdobHkgMktCICh0aGUgbGlt aXQgb2YgdGhlIENoYXJ0cyBBUEkncyBHRVQgcmVxdWVzdCkNCgkJaWYgKHN0cmxlbigkdGhp cy0+ZGF0YSkgPiAyMDAwKSB7DQoJCQl0cmlnZ2VyX2Vycm9yKHNtZF9xcl9jb2RlX2dUeHQo J3NtZF9xcl9jb2RlX3Rvb19sYXJnZScpLCBFX1VTRVJfTk9USUNFKTsNCgkJfQ0KCX0NCg0K CXByaXZhdGUgZnVuY3Rpb24gZ2V0X3VybF9wYXJhbXMoKSB7DQoJCSRwYXJhbXMgPSBhcnJh eSgNCgkJCSdjaHQnID0+ICdxcicsDQoJCQknY2hzJyA9PiAkdGhpcy0+ZGltZW5zaW9ucywN CgkJCSdjaGxkJyA9PiAkdGhpcy0+cXVhbGl0eSwNCgkJCSdjaGwnID0+ICgoJHRoaXMtPmVz Y2FwZSA9PSAnaHRtbCcpID8gdXJsZW5jb2RlKCR0aGlzLT5kYXRhKSA6ICR0aGlzLT5kYXRh KSwNCgkJKTsNCg0KCQkvLyBDb2xvdXIgaXMgb3B0aW9uYWwNCgkJaWYgKCR0aGlzLT5jb2xv dXIpIHsNCgkJCSRwYXJhbXNbJ2NoZiddID0gJHRoaXMtPmNvbG91cjsNCgkJfQ0KDQoJCXJl dHVybiBodHRwX2J1aWxkX3F1ZXJ5KCRwYXJhbXMsICcnLCAnJmFtcDsnKTsNCgl9DQoNCgkv LyBnZXQgaW1hZ2UNCglwdWJsaWMgZnVuY3Rpb24gZ2V0X2ltYWdlKCl7DQoJCSRjaCA9IGN1 cmxfaW5pdCgpOw0KCQljdXJsX3NldG9wdCgkY2gsIENVUkxPUFRfVVJMLCAkdGhpcy0+YXBp KTsNCgkJY3VybF9zZXRvcHQoJGNoLCBDVVJMT1BUX1BPU1QsIHRydWUpOw0KCQljdXJsX3Nl dG9wdCgkY2gsIENVUkxPUFRfUE9TVEZJRUxEUywgJHRoaXMtPmdldF91cmxfcGFyYW1zKCkp Ow0KCQljdXJsX3NldG9wdCgkY2gsIENVUkxPUFRfUkVUVVJOVFJBTlNGRVIsIHRydWUpOw0K CQljdXJsX3NldG9wdCgkY2gsIENVUkxPUFRfSEVBREVSLCBmYWxzZSk7DQoJCWN1cmxfc2V0 b3B0KCRjaCwgQ1VSTE9QVF9USU1FT1VULCAzMCk7DQoNCgkJJHJlc3BvbnNlID0gY3VybF9l eGVjKCRjaCk7DQoJCWN1cmxfY2xvc2UoJGNoKTsNCgkJcmV0dXJuICRyZXNwb25zZTsNCgl9 DQoNCgkvLyBnZXQgbGluayBmb3IgaW1hZ2UNCglwdWJsaWMgZnVuY3Rpb24gZ2V0X2xpbmso JGZvbGxvdz1mYWxzZSl7DQoJCXJldHVybiAkdGhpcy0+YXBpLic/Jy4kdGhpcy0+Z2V0X3Vy bF9wYXJhbXMoKTsNCgl9DQoNCgkvLyBmb3JjZSBpbWFnZSBkb3dubG9hZA0KCXB1YmxpYyBm dW5jdGlvbiBkb3dubG9hZF9pbWFnZSgkZmlsZSl7DQoJCWhlYWRlcignQ29udGVudC1EZXNj cmlwdGlvbjogRmlsZSBUcmFuc2ZlcicpOw0KCQloZWFkZXIoJ0NvbnRlbnQtVHlwZTogaW1h Z2UvcG5nJyk7DQoJCWhlYWRlcignQ29udGVudC1EaXNwb3NpdGlvbjogYXR0YWNobWVudDsg ZmlsZW5hbWU9cXJfY29kZS5wbmcnKTsNCgkJaGVhZGVyKCdDb250ZW50LVRyYW5zZmVyLUVu Y29kaW5nOiBiaW5hcnknKTsNCgkJaGVhZGVyKCdFeHBpcmVzOiAwJyk7DQoJCWhlYWRlcign Q2FjaGUtQ29udHJvbDogbXVzdC1yZXZhbGlkYXRlLCBwb3N0LWNoZWNrPTAsIHByZS1jaGVj az0wJyk7DQoJCWhlYWRlcignUHJhZ21hOiBwdWJsaWMnKTsNCgkJaGVhZGVyKCdDb250ZW50 LUxlbmd0aDogJyAuIGZpbGVzaXplKCRmaWxlKSk7DQoJCW9iX2NsZWFuKCk7DQoJCWZsdXNo KCk7DQoJCWVjaG8gJGZpbGU7DQoJfQ0KfQ0KDQovLyAqKioqKioqKioqKioqKioNCi8vIFRy YW5zZm9ybWF0aW9ucw0KLy8gKioqKioqKioqKioqKioqDQovLy0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQ0KY2xhc3Mgc21kX3FyX2NvZGVfdHJhbnNmb3Jtcw0Kew0KCXByaXZhdGUgJHhm b3JtcyA9IGFycmF5KA0KCQknbGlua2lmeScsDQoJCSdzcGxpdHJldmpvaW4nLA0KCSk7DQoN CgkvLyBDb25zdHJ1Y3RvciA6IHJlZ2lzdGVyIGNhbGxiYWNrcyBhbmQgYnVpbHQtaW4gdHJh bnNmb3Jtcw0KCXB1YmxpYyBmdW5jdGlvbiBzbWRfcXJfY29kZV90cmFuc2Zvcm1zKCkgew0K CQlnbG9iYWwgJHBsdWdpbl9jYWxsYmFjazsNCgkJaWYgKGlzX2FycmF5KCRwbHVnaW5fY2Fs bGJhY2spKSB7DQoJCQlmb3JlYWNoICgkcGx1Z2luX2NhbGxiYWNrIGFzICRjYikgew0KCQkJ CWlmICgkY2JbJ2V2ZW50J10gPT0gJ3NtZF9xcl9jb2RlJyAmJiAkY2JbJ3N0ZXAnXSA9PSAn YWRkX3RyYW5zZm9ybScpIHsNCgkJCQkJJHRoaXMtPnhmb3Jtc1tdID0gJGNiWydmdW5jdGlv biddOw0KCQkJCX0NCgkJCX0NCgkJfQ0KCX0NCg0KCS8vIFJ1biBhIHJlZ2lzdGVyZWQgY3Vz dG9tIGZ1bmN0aW9uLiBMb2NhbCBmdW5jdGlvbnMgdHJ1bXAgZXh0ZXJuYWxzDQoJcHVibGlj IGZ1bmN0aW9uIGV4ZWN1dGUoJGZuLCAkaXRlbSwgJGFyZ3M9YXJyYXkoKSkgew0KCQlpZiAo aW5fYXJyYXkoJGZuLCAkdGhpcy0+eGZvcm1zKSkgew0KCQkJaWYgKG1ldGhvZF9leGlzdHMo JHRoaXMsICRmbikpIHsNCgkJCQlyZXR1cm4gJHRoaXMtPiRmbigkaXRlbSwgJGFyZ3MpOw0K CQkJfSBlbHNlIGlmIChpc19jYWxsYWJsZSgkZm4pKSB7DQoJCQkJaWYgKGVtcHR5KCRhcmdz KSkgew0KCQkJCQlyZXR1cm4gJGZuKCRpdGVtKTsNCgkJCQl9IGVsc2Ugew0KCQkJCQlyZXR1 cm4gJGZuKCRpdGVtLCAkYXJncyk7DQoJCQkJfQ0KCQkJfQ0KCQl9DQoJCXRyaWdnZXJfZXJy b3Ioc21kX3FyX2NvZGVfZ1R4dCgnc21kX3FyX2NvZGVfaW52YWxpZF90cmFuc2Zvcm0nLCBh cnJheSgne2ZufScgPT4gJGZuKSksIEVfVVNFUl9XQVJOSU5HKTsNCgkJcmV0dXJuICRpdGVt Ow0KCX0NCg0KCS8vIFByZWZpeCBsaW5rcw0KCXB1YmxpYyBmdW5jdGlvbiBsaW5raWZ5KCRp dGVtLCAkYXJncz1hcnJheSgpKSB7DQoJCSRvdXR2YXIgPSAoaXNzZXQoJGFyZ3NbMF0pKSA/ ICRhcmdzWzBdIDogJ3VybCc7DQoNCgkJaWYgKHByZWdfbWF0Y2goJy9eaHR0cDpcL1wvLycs ICRpdGVtKSB8fCBwcmVnX21hdGNoKCcvXmh0dHBzOlwvXC8vJywgJGl0ZW0pKSB7DQoJCQkk b3V0dmFsID0gJGl0ZW07DQoJCX0gZWxzZSB7DQoJCQkkb3V0dmFsID0gImh0dHA6Ly8iLiRp dGVtOw0KCQl9DQoJCXJldHVybiBhcnJheSgkb3V0dmFyID0+ICRvdXR2YWwpOw0KCX0NCg0K CS8vIFNwbGl0IGEgdmFyaWFibGUsIHJldmVyc2UgdGhlIGVsZW1lbnRzIGFuZCBqb2luIHRo ZW0gYWdhaW4NCglwdWJsaWMgZnVuY3Rpb24gc3BsaXRyZXZqb2luKCRpdGVtLCAkYXJncz1h cnJheSgpKSB7DQoJCS8vICRhcmdzOiAwID0gdmFyaWFibGUgbmFtZSwgMSA9IHNwbGl0IGNo YXIsIDIgPSBqb2luIGNoYXINCgkJaWYgKGNvdW50KCRhcmdzKSA9PSAzKSB7DQoJCQkkb3V0 dmFsID0gam9pbigkYXJnc1syXSwgYXJyYXlfcmV2ZXJzZShleHBsb2RlKCRhcmdzWzFdLCAk aXRlbSkpKTsNCgkJCXJldHVybiBhcnJheSgkYXJnc1swXSA9PiAkb3V0dmFsKTsNCgkJfSBl bHNlIHsNCgkJCXJldHVybiAkaXRlbTsNCgkJfQ0KCX0NCn0iO3M6NDoidHlwZSI7czoxOiIw IjtzOjU6Im9yZGVyIjtzOjE6IjUiO3M6NToiZmxhZ3MiO3M6MToiMCI7czo0OiJoZWxwIjtz OjI2MjkxOiI8ZGl2IGlkPSJzbWRfaGVscCI+CgoJPGgxPnNtZF9xcl9jb2RlPC9oMT4KCgk8 cD5DcmVhdGUgUXVpY2sgUmVzcG9uc2UgMi1EIGJhcmNvZGVzIG9uIHRoZSBmbHkgY29udGFp bmluZyBhIHZhcmlldHkgb2YgZGF0YTogdGV4dCwgPHNwYW4gY2xhc3M9ImNhcHMiPlVSTDwv c3Bhbj4gbGlua3MsIGNvbnRhY3QgZGV0YWlscywgZ2VvZ3JhcGhpY2FsIGxvY2F0aW9uIGRh dGEsIHdpZmkgaG90c3BvdCByZXF1ZXN0cywgb3IgeW91ciBvd24gY3VzdG9tIGZvcm1hdHMu IENob29zZSB0byBlbWJlZCB0aGUgYmFyY29kZSBkaXJlY3RseSBvbiB5b3VyIHBhZ2Ugb3Ig b2ZmZXIgaXQgYXMgYSBkb3dubG9hZC48L3A+CgoJPGgyPkF1dGhvciAvIGNyZWRpdHM8L2gy PgoKCTxwPldyaXR0ZW4gYnkgPGEgaHJlZj0iaHR0cDovL3N0ZWZkYXdzb24uY29tL2NvbnRh Y3QiPlN0ZWYgRGF3c29uPC9hPi4gQ3JlZGl0cyBhbHNvIGdvIHRvIHRoZSBhd2Vzb21lIEdv b2dsZSBDaGFydHMgPHNwYW4gY2xhc3M9ImNhcHMiPkFQSTwvc3Bhbj4uIE1hbnkgdGhhbmtz IHRvIGFsbCBpbnZvbHZlZC48L3A+CgoJPGgyPkluc3RhbGxhdGlvbiAvIHVuaW5zdGFsbGF0 aW9uPC9oMj4KCgk8cCBjbGFzcz0iaW1wb3J0YW50Ij5SZXF1aXJlcyA8c3BhbiBjbGFzcz0i Y2FwcyI+VFhQPC9zcGFuPiA0LjQuMCssIDxzcGFuIGNsYXNzPSJjYXBzIj5QSFA8L3NwYW4+ IDUgKHdpdGggPHNwYW4gY2xhc3M9ImNhcHMiPkNVUkw8L3NwYW4+KSBhbmQgSW50ZXJuZXQg YWNjZXNzPC9wPgoKCTxwPkRvd25sb2FkIHRoZSBwbHVnaW4gZnJvbSBlaXRoZXIgPGEgaHJl Zj0iaHR0cDovL3RleHRwYXR0ZXJuLm9yZy9wbHVnaW5zLzEyMTkvc21kX3FyX2NvZGUiPnRl eHRwYXR0ZXJuLm9yZzwvYT4sIG9yIHRoZSA8YSBocmVmPSJodHRwOi8vc3RlZmRhd3Nvbi5j b20vc3ciPnNvZnR3YXJlIHBhZ2U8L2E+LCBwYXN0ZSB0aGUgY29kZSBpbnRvIHRoZSA8c3Bh biBjbGFzcz0iY2FwcyI+VFhQPC9zcGFuPiA8ZW0+QWRtaW4gLSZndDsgUGx1Z2luczwvZW0+ IHBhbmUsIGluc3RhbGwgYW5kIGVuYWJsZSB0aGUgcGx1Z2luLiBUbyB1bmluc3RhbGwsIGRl bGV0ZSBmcm9tIHRoZSA8ZW0+QWRtaW4gLSZndDsgUGx1Z2luczwvZW0+IHBhZ2UuPC9wPgoK CTxwPlZpc2l0IHRoZSA8YSBocmVmPSJodHRwOi8vZm9ydW0udGV4dHBhdHRlcm4uY29tL3Zp ZXd0b3BpYy5waHA/aWQ9MzU4ODYiPmZvcnVtIHRocmVhZDwvYT4gZm9yIG1vcmUgaW5mbyBv ciB0byByZXBvcnQgb24gdGhlIHN1Y2Nlc3Mgb3Igb3RoZXJ3aXNlIG9mIHRoZSBwbHVnaW4u PC9wPgoKCTxoMj5Vc2FnZTogPGNvZGU+Jmx0O3R4cDpzbWRfcXJfY29kZSAvJmd0OzwvY29k ZT48L2gyPgoKCTxwPlRoZSBwbHVnaW4gYWRkcyBvbmUgdGFnLCB3aGljaCB5b3UgY2FuIHVz ZSB0byBlbWJlZCBhIFFSIGNvZGUgb24geW91ciBwYWdlLiBJdCBoYXMgYSB2YXJpZXR5IG9m IGF0dHJpYnV0ZXMuPC9wPgoKCTxoMz5EYXRhIGF0dHJpYnV0ZXM8L2gzPgoKCTx1bD4KCQk8 bGk+PHNwYW4gY2xhc3M9ImF0bm0iPnR5cGU8L3NwYW4+IDogdGhlIHR5cGUgb2YgUVIgY29k ZSB0byBnZW5lcmF0ZS4gRGVmaW5lIHlvdXIgb3duLCBvciB1c2Ugb25lIG9mIHRoZSBidWls dC1pbiBmb3JtYXRzOgoJPHVsPgoJCTxsaT48c3Ryb25nPnRleHQ8L3N0cm9uZz4gOiB0aGUg ZGVmYXVsdDwvbGk+CgkJPGxpPjxzdHJvbmc+bGluazwvc3Ryb25nPiA6IGEgaHlwZXJsaW5r LiBUaGUgPGNvZGU+aHR0cFtzXTovLzwvY29kZT4gcHJlZml4IGlzIG9wdGlvbmFsIGFuZCB3 aWxsIGJlIGFkZGVkIGlmIG9taXR0ZWQ8L2xpPgoJCTxsaT48c3Ryb25nPmJvb2ttYXJrPC9z dHJvbmc+PC9saT4KCQk8bGk+PHN0cm9uZz5zbXM8L3N0cm9uZz4gOiBzZW5kIGEgdGV4dCBt ZXNzYWdlPC9saT4KCQk8bGk+PHN0cm9uZz5waG9uZTwvc3Ryb25nPjwvbGk+CgkJPGxpPjxz dHJvbmc+ZW1haWw8L3N0cm9uZz48L2xpPgoJCTxsaT48c3Ryb25nPmNvbnRhY3Q8L3N0cm9u Zz4gOiBhIDxzcGFuIGNsYXNzPSJjYXBzIj5NRUNBUkQ8L3NwYW4+PC9saT4KCQk8bGk+PHN0 cm9uZz52Y2FyZDwvc3Ryb25nPiA6IGEgY29tcGFjdCB2ZXJzaW9uIG9mIHRoZSBmdWxsIHZj YXJkIHNwZWM8L2xpPgoJCTxsaT48c3Ryb25nPmdlbzwvc3Ryb25nPiA6IGdlb2dyYXBoaWNh bCBsb2NhdGlvbiAoZGVjaW1hbCBsYXRpdHVkZSwgbG9uZ2l0dWRlIGFuZCBoZWlnaHQgYWJv dmUgdGhlIGVhcnRoJiM4MjE3O3Mgc3VyZmFjZSk8L2xpPgoJCTxsaT48c3Ryb25nPndpZmk8 L3N0cm9uZz4gOiB3aWZpIGhvdHNwb3QgbG9naW4gY3JlZGVudGlhbHMgKDxzcGFuIGNsYXNz PSJjYXBzIj5XRVA8L3NwYW4+IG9yIDxzcGFuIGNsYXNzPSJjYXBzIj5XUEE8L3NwYW4+IHBy b3RvY29scyBzdXBwb3J0ZWQpPC9saT4KCTwvdWw+PC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9 ImF0bm0iPmRhdGE8L3NwYW4+IDogdGhlIGluZm9ybWF0aW9uIHRvIHB1dCBpbiB0aGUgUVIg Y29kZS4gVGhlIGRhdGEgaXMgZGVwZW5kZW50IG9uIHRoZSA8Y29kZT50eXBlPC9jb2RlPiAm IzgyMTI7IHNlZSA8YSBocmVmPSIjc21kX3FyX2NvZGVfZGF0YV90YWJsZSI+dGhlIGRhdGEg dGFibGU8L2E+IGZvciBkZXRhaWxzIG9uIHRoZSBxdWFudGl0eSBhbmQgb3JkZXIgb2YgaW5m b3JtYXRpb24geW91IHB1dCBpbiB0aGlzIGF0dHJpYnV0ZSBmb3IgdGhlIGJ1aWx0LWluIHR5 cGVzLiBEZWxpbWl0IGVhY2ggcGllY2Ugb2YgZGF0YSB3aXRoIGEgcGlwZSBjaGFyYWN0ZXIg KHRob3VnaCB0aGlzIGNhbiBiZSBjaGFuZ2VkIHdpdGggdGhlIDxjb2RlPmRlbGltPC9jb2Rl PiBhdHRyaWJ1dGUsIGlmIHJlcXVpcmVkKS4gRm9yIGV4YW1wbGUsIDxjb2RlPnR5cGU9JnF1 b3Q7Ym9va21hcmsmcXVvdDsgZGF0YT0mcXVvdDsyMCwwMDAgTGVhZ3VlcyB1bmRlciB0aGUg U2VhfHd3dy5qdWxlcy12ZXJuZS5jby51ay8mcXVvdDs8L2NvZGU+LiBUaGUgbGltaXQgb2Yg dGhlIGRhdGEgYXR0cmlidXRlIGlzIGFib3V0IDJLQjwvbGk+CgkJPGxpPjxzcGFuIGNsYXNz PSJhdG5tIj5kZWxpbTwvc3Bhbj4gOiB0aGUgZGVsaW1pdGVyIHRvIHVzZSBiZXR3ZWVuIDxj b2RlPmRhdGE8L2NvZGU+IGl0ZW1zLiBEZWZhdWx0OiA8Y29kZT58PC9jb2RlPiAocGlwZSk8 L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+ZXNjYXBlPC9zcGFuPiA6IEVzY2FwZSA8 c3BhbiBjbGFzcz0iY2FwcyI+SFRNTDwvc3Bhbj4gZW50aXRpZXMgc3VjaCBhcyA8Y29kZT4m bHQ7PC9jb2RlPiwgPGNvZGU+Jmd0OzwvY29kZT4gYW5kIDxjb2RlPiZhbXA7PC9jb2RlPi4g VXNlIDxjb2RlPmVzY2FwZT0mcXVvdDtodG1sJnF1b3Q7PC9jb2RlPiB0byBzd2l0Y2ggdGhp cyBvbi4gRGVmYXVsdDogdW5zZXQ8L2xpPgoJPC91bD4KCgk8aDM+T3V0cHV0IC8gZGlzcGxh eSBhdHRyaWJ1dGVzPC9oMz4KCgk8dWw+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj5mb3Jt YXQ8L3NwYW4+IDogd2hldGhlciB5b3Ugd2lzaCB0byA8Y29kZT52aWV3PC9jb2RlPiB0aGUg YmFyY29kZSBpbmxpbmUgKGluc2lkZSBhbiA8Y29kZT4mbHQ7aW1nJmd0OzwvY29kZT4gdGFn KSwgZm9yY2UgaXQgdG8gPGNvZGU+ZG93bmxvYWQ8L2NvZGU+LCBvciBvdXRwdXQgdGhlIDxj b2RlPnJhdzwvY29kZT4gbGluayBzbyB5b3UgY2FuIGNyYWZ0IHlvdXIgb3duIHVzZSBmb3Ig aXQuIERlZmF1bHQ6IDxjb2RlPnZpZXc8L2NvZGU+PC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9 ImF0bm0iPndpZHRoPC9zcGFuPiA6IHdpZHRoIG9mIHRoZSBjb2RlLCBpbiBwaXhlbHMuIERl ZmF1dDogMjAwPC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPmhlaWdodDwvc3Bhbj4g OiBoZWlnaHQgb2YgdGhlIGNvZGUsIGluIHBpeGVscy4gRGVmYXVsdDogMjAwPC9saT4KCQk8 bGk+PHNwYW4gY2xhc3M9ImF0bm0iPnF1YWxpdHk8L3NwYW4+IDogdGhlIGFtb3VudCBvZiBl cnJvciBjb3JyZWN0aW9uIHRoYXQgdGhlIGJhcmNvZGUgY2FuIHRvbGVyYXRlOgoJPHVsPgoJ CTxsaT48c3Ryb25nPkw8L3N0cm9uZz4gJiM4MjEyOyBMb3c6IDclIChkZWZhdWx0KTwvbGk+ CgkJPGxpPjxzdHJvbmc+TTwvc3Ryb25nPiAmIzgyMTI7IE1lZGl1bTogMTUlPC9saT4KCQk8 bGk+PHN0cm9uZz5RPC9zdHJvbmc+ICYjODIxMjsgUXVhcnRpbGU6IDI1JTwvbGk+CgkJPGxp PjxzdHJvbmc+SDwvc3Ryb25nPiAmIzgyMTI7IEhpZ2g6IDMwJTwvbGk+Cgk8L3VsPjwvbGk+ CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj5tYXJnaW48L3NwYW4+IDogdGhlIG1hcmdpbiAo aW4gUVIgY29kZSAmIzgyMjA7cm93cyYjODIyMTspIGFyb3VuZCB0aGUgaW1hZ2UuIERlZmF1 bHQ6IDQuIE5vdGUgdGhhdCwgZGVwZW5kaW5nIG9uIHRoZSBxdWFsaXR5IGFuZCBzaXplIHNl dHRpbmdzLCBzb21lIGFkamFjZW50IHZhbHVlcyBkb24mIzgyMTc7dCBhcHBlYXIgdG8gJiM4 MjE2O2RvJiM4MjE3OyBhbnl0aGluZy4gRm9yIGV4YW1wbGUsIGEgMjAwJiMyMTU7MjAwICYj ODIxNjtMJiM4MjE3OyBxdWFsaXR5IGltYWdlIGxvb2tzIHRoZSBzYW1lIHdoZXRoZXIgeW91 IHBpY2sgYSBtYXJnaW4gb2YgMCwgMSBvciAyLiBUaGUgbWFyZ2luIHN0ZXBzIHVwIGEgc2l6 ZSBmb3IgMywgNCBhbmQgNSwgdGhlbiB1cCBhZ2FpbiBmb3IgNi0xMCwgYW5kIHNvIG9uLiBU aGlzIGlzIGFuIGlkaW9zeW5jcmFjeSBvZiBHb29nbGUmIzgyMTc7cyBDaGFydHMgPHNwYW4g Y2xhc3M9ImNhcHMiPkFQSTwvc3Bhbj4gKG9yIHRoZSBRUiBjb2RlIHNwZWM/KSwgbm90IGEg ZmF1bHQgd2l0aCB0aGUgcGx1Z2luPC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPmJn Y29sPC9zcGFuPiA6IGJhY2tncm91bmQgY29sb3VyIGFzIGFuIDxzcGFuIGNsYXNzPSJjYXBz Ij5SR0I8L3NwYW4+IGhleCBjb2RlICh3aXRob3V0IHRoZSAjKS4gRGVmYXVsdDogdW5zZXQ8 L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+YWxwaGE8L3NwYW4+IDogYWxwaGEgdHJh bnNwYXJlbmN5IGFzIGEgaGV4IHZhbHVlIGZyb20gMDAgKHRyYW5zcGFyZW50KSB0byBGRiAo c29saWQpLiBEZWZhdWx0OiB1bnNldDwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj53 cmFwdGFnPC9zcGFuPiA6IHRoZSAoWClIVE1MIHRhZyAmIzgyMTI7IHNwZWNpZmllZCB3aXRo b3V0IGFuZ2xlIGJyYWNrZXRzICYjODIxMjsgdG8gd3JhcCBhcm91bmQgdGhlIG91dHB1dC4g RGVmYXVsdDogdW5zZXQ8L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+Y2xhc3M8L3Nw YW4+IDogdGhlIDxzcGFuIGNsYXNzPSJjYXBzIj5DU1M8L3NwYW4+IGNsYXNzbmFtZSB0byBh cHBseSB0byB0aGUgd3JhcHRhZyAoaWYgcHJlc2VudCkgb3IgdGhlIDxjb2RlPiZsdDtpbWcm Z3Q7PC9jb2RlPiB0YWcgaWYgeW91IGhhdmUgY2hvc2VuIDxjb2RlPmZvcm1hdD0mcXVvdDt2 aWV3JnF1b3Q7PC9jb2RlPi4gRGVmYXVsdDogdW5zZXQ8L2xpPgoJCTxsaT48c3BhbiBjbGFz cz0iYXRubSI+aHRtbF9pZDwvc3Bhbj4gOiB0aGUgPHNwYW4gY2xhc3M9ImNhcHMiPkhUTUw8 L3NwYW4+IGlkIHRvIGFwcGx5IHRvIHRoZSB3cmFwdGFnIChpZiBwcmVzZW50KSBvciB0aGUg PGNvZGU+Jmx0O2ltZyZndDs8L2NvZGU+IHRhZyBpZiB5b3UgaGF2ZSBjaG9zZW4gPGNvZGU+ Zm9ybWF0PSZxdW90O3ZpZXcmcXVvdDs8L2NvZGU+LiBEZWZhdWx0OiB1bnNldDwvbGk+CgkJ PGxpPjxzcGFuIGNsYXNzPSJhdG5tIj50aXRsZTwvc3Bhbj4gOiBTZXQgdGhlIDxjb2RlPiZs dDtpbWcmZ3Q7PC9jb2RlPiB0YWcmIzgyMTc7cyB0aXRsZSBhdHRyaWJ1dGUgKG9mdGVuIHVz ZWQgYXMgYSB0b29sdGlwKS4gT25seSBvZiB1c2Ugd2hlbiA8Y29kZT5mb3JtYXQ9JnF1b3Q7 dmlldyZxdW90OzwvY29kZT4uIERlZmF1bHQ6IHVuc2V0PC9saT4KCTwvdWw+CgoJPGgzPlZh bGlkYXRpb24gYXR0cmlidXRlczwvaDM+CgoJPHVsPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRu bSI+dmFsaWRhdGU8L3NwYW4+IDogd2hldGhlciB0byB2YWxpZGF0ZSBhbGwgZmllbGRzICgx LCB0aGUgZGVmYXVsdCksIG5vIGZpZWxkcyAoMCkgb3IgdGhlIGdpdmVuIGxpc3Qgb2YgZGF0 YSBmaWVsZHMuIFRoZSBsaXN0IGlzIGRlbGltaXRlZCBieSA8Y29kZT52YWxpZGVsaW08L2Nv ZGU+IChkZWZhdWx0OiBjb21tYSkuIENvbnN1bHQgdGhlIDxhIGhyZWY9IiNzbWRfcXJfY29k ZV9kYXRhX3RhYmxlIj5kYXRhIHRhYmxlPC9hPiBmb3IgZGV0YWlscyBvbiB0aGUgbmFtZXMg b2YgdGhlIGZpZWxkcyB5b3UgY2FuIHVzZS4gQWZ0ZXIgZWFjaCBmaWVsZCB5b3UgbWF5IGFs c28gYWRkIGEgPGNvZGU+ZGVsaW08L2NvZGU+IGNoYXJhY3RlciBhbmQgdGhlbiBhIHJlZ3Vs YXIgZXhwcmVzc2lvbiB0byB2YWxpZGF0ZSB0aGlzIGZpZWxkIGFnYWluc3QsIHdoaWNoIHdp bGwgb3ZlcnJpZGUgdGhlIGJ1aWx0LWluIHJlZ2V4LiBTZWUgPGEgaHJlZj0iI2VnNSI+ZXhh bXBsZSA1PC9hPi4gPGRpdiBjbGFzcz0iYnJlYWsiPklmIHlvdSBzcGVjaWZ5IG9uZSBvciB0 d28gZmllbGRzIHRvIHZhbGlkYXRlICYjODIxMjsgcGVyaGFwcyB5b3UganVzdCB3YW50IHRv IGFkanVzdCBhIHNpbmdsZSByZWdleCB0byB0YXN0ZSAmIzgyMTI7IHlvdSYjODIxNztsbCBm aW5kIHRoYXQgdGhlIHJlbWFpbmluZyBmaWVsZHMgYXJlICYjODIyMDtzd2l0Y2hlZCBvZmYm IzgyMjE7IGFuZCBub3QgdmFsaWRhdGVkLiBUbyBzYXZlIHlvdSBoYXZpbmcgdG8gbGlzdCB0 aGVtIGFsbCwgeW91IGNhbiB1c2UgYSBzaG9ydGN1dDoganVzdCBzcGVjaWZ5IDxjb2RlPjE8 L2NvZGU+IGFzIG9uZSBvZiB5b3VyIGxpc3QgaXRlbXMgYW5kIHRoZSByZW1haW5pbmcgZmll bGRzIHdpbGwgYmUgaW5jbHVkZWQgaW4gdGhlIHZhbGlkYXRpb24gd2l0aCB0aGVpciBvcmln aW5hbCByZWdleGVzLjwvZGl2PjxkaXYgY2xhc3M9ImJyZWFrIj5Zb3UgbWF5IGFsc28gY29w eSByZWdleGVzIGlmIHlvdSBkb24mIzgyMTc7dCB3aXNoIHRvIGRlZmluZSB0aGVtIGFnYWlu LiBTcGVjaWZ5IHRoZSBmaWVsZCBhcyB1c3VhbCBhbmQgdGhlbiB0aGUgc3BlY2lhbCBjb2Rl IDxzcGFuIGNsYXNzPSJjYXBzIj5TTUQ8L3NwYW4+X1JFR0VYX25hbWVfb2ZfZmllbGRfdG9f Y29weS48L2Rpdj48L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+dmFsaWRlbGltPC9z cGFuPiA6IHRoZSBkZWxpbWl0ZXIgdG8gdXNlIGJldHdlZW4geW91ciBsaXN0IG9mIGl0ZW1z IHRvIDxjb2RlPnZhbGlkYXRlPC9jb2RlPi4gRGVmYXVsdDogPGNvZGU+LDwvY29kZT4gKGNv bW1hKTwvbGk+Cgk8L3VsPgoKCTxoMz5DdXN0b21pc2F0aW9uIGF0dHJpYnV0ZXM8L2gzPgoK CTx1bD4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPmxheW91dDwvc3Bhbj4gOiBkZWZpbmUg eW91ciBvd24gY3VzdG9tIGxheW91dCBzeXN0ZW0uIFVzZSA8Y29kZT57bmFtZS1vZi12YXJp YWJsZX08L2NvZGU+IGluIHlvdXIgZGVmaW5pdGlvbiB0byBoYXZlIHRoZSBkYXRhIHZhbHVl IGluamVjdGVkIGF0IHJ1bnRpbWUuIFNlZSA8YSBocmVmPSIjc21kX3FyX2NvZGVfY3VzdG9t X3R5cGVzIj5jdXN0b20gdHlwZXM8L2E+PC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0i PnRyYW5zZm9ybTwvc3Bhbj4gOiBkZWZpbmUgeW91ciBvd24gY3VzdG9tIHRyYW5zZm9ybWF0 aW9uIHRvIGFwcGx5IHRvIHBhcnRpY3VsYXIgZGF0YSBpdGVtcy4gU3BlY2lmeSA8Y29kZT50 eXBlLmZpZWxkfG5hbWUtb2YtZnVuY3Rpb258b3B0aW9uYWx8YXJnc3wuLi48L2NvZGU+LiBT ZWUgPGEgaHJlZj0iI3NtZF9xcl9jb2RlX2N1c3RvbV90cmFuc2Zvcm1zIj5jdXN0b20gdHJh bnNmb3JtczwvYT48L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+cHJlZml4PC9zcGFu PiA6IHByZWZpeCBmb3IgbmV3IHBhcmFtZXRlcnMgdGhhdCBhcmUgY3JlYXRlZCBieSB5b3Vy IHRyYW5zZm9ybWF0aW9ucy4gRGVmYXVsdDogPGNvZGU+U01EX1FSXzwvY29kZT48L2xpPgoJ PC91bD4KCgk8cD5UaGUgcGx1Z2luIGNoZWNrcyB0aGF0IHlvdSBzdXBwbHkgYWxsIGluZm9y bWF0aW9uIGZvciB5b3VyIGNob3NlbiB0eXBlIGFuZCwgaWYgPGNvZGU+dmFsaWRhdGU8L2Nv ZGU+IGlzIHNldCB2YWxpZGF0ZXMgZWFjaCBmaWVsZCB3aXRoIGEgcmVndWxhciBleHByZXNz aW9uLiBBbnkgZGV2aWF0aW9uIHdpbGwgcmVzdWx0IGluIGFuIGVycm9yIGJlaW5nIHRyaWdn ZXJlZC48L3A+CgoJPHA+Tm90ZSB0aGF0IGlmIHlvdSB3aXNoIHRvIGRlc2lnbmF0ZSBhbiBp dGVtIGFzICYjODIxNjtlbXB0eSYjODIxNzsgKGkuZS4geW91IGRvbiYjODIxNzt0IHdhbnQg dG8gc3VwcGx5IHRoYXQgcGFyYW1ldGVyKSB5b3UgY2FuIHB1dCBpbiB0aGUgc3BlY2lhbCBj b2RlIDxjb2RlPntzbWRfZW1wdHl9PC9jb2RlPi4gSXQgaXMgbm90IGVub3VnaCB0byBzaW1w bHkgbGVhdmUgaXQgYmxhbmsgYmVjYXVzZSB0aGUgcGx1Z2luIGV4cGVjdHMgYWxsIGZpZWxk cyB0byBiZSBmaWxsZWQgaW4gd2l0aCA8ZW0+c29tZXRoaW5nPC9lbT4uIFRoZSBRUiBjb2Rl IHdpbGwgc3RpbGwgY29udGFpbiB0aGUgZmllbGQsIGl0IHdpbGwganVzdCBoYXZlIG5vIGRh dGEgYXNzaWduZWQgdG8gaXQuIElmIHlvdSBkb24mIzgyMTc7dCBsaWtlIHRoZSBidWlsdC1p biBmb3JtYXRzLCA8YSBocmVmPSIjc21kX3FyX2NvZGVfY3VzdG9tX3R5cGVzIj5jcmVhdGUg eW91ciBvd248L2E+LjwvcD4KCgk8cD5UaGUgY29kZSBzaG91bGQgYmUgY2FjaGVkIGJ5IHlv dXIgYnJvd3NlciBmb3IgMjQgaG91cnMuPC9wPgoKCTxoMiBpZD0ic21kX3FyX2NvZGVfZGF0 YV90YWJsZSI+RGF0YSB0YWJsZSBmb3IgZGVmYXVsdCB0eXBlczwvaDI+CgoJPHA+SGVyZSBh cmUgYWxsIHRoZSA8Y29kZT50eXBlPC9jb2RlPnMgYXZhaWxhYmxlIGFuZCB0aGUgZmllbGRz IHRoZXkgcmVxdWlyZSBpbiB0aGUgPGNvZGU+ZGF0YTwvY29kZT4gYXR0cmlidXRlLCBmcm9t IGxlZnQgdG8gcmlnaHQuIFRoZSBuYW1lcyB1c2VkIGhlcmUgYXJlIHRoZSBuYW1lcyB5b3Ug cmVmZXIgdG8gdGhlIGZpZWxkcyB3aGVuIGxpc3RpbmcgdGhlbSBpbiB5b3VyIDxjb2RlPnZh bGlkYXRlPC9jb2RlPiBhdHRyaWJ1dGUuPC9wPgoKCTx0YWJsZT4KCTx0aGVhZD4KCQk8dHI+ CgkJCTx0aD50eXBlIDwvdGg+CgkJCTx0aCBjb2xzcGFuPSI1Ij5kYXRhIGF0dHJpYnV0ZXMg PC90aD4KCQk8L3RyPgoJPC90aGVhZD4KCTx0Ym9keT4KCQk8dHI+CgkJCTx0ZD4gPHN0cm9u Zz50ZXh0PC9zdHJvbmc+IDwvdGQ+CgkJCTx0ZD4gdGV4dCA8L3RkPgoJCQk8dGQ+IDwvdGQ+ CgkJCTx0ZD4gPC90ZD4KCQkJPHRkPiA8L3RkPgoJCQk8dGQ+IDwvdGQ+CgkJPC90cj4KCQk8 dHI+CgkJCTx0ZD4gPHN0cm9uZz5saW5rPC9zdHJvbmc+IDwvdGQ+CgkJCTx0ZD4gdXJsIDwv dGQ+CgkJCTx0ZD4gPC90ZD4KCQkJPHRkPiA8L3RkPgoJCQk8dGQ+IDwvdGQ+CgkJCTx0ZD4g PC90ZD4KCQk8L3RyPgoJCTx0cj4KCQkJPHRkPiA8c3Ryb25nPmJvb2ttYXJrPC9zdHJvbmc+ IDwvdGQ+CgkJCTx0ZD4gdGl0bGUgPC90ZD4KCQkJPHRkPiB1cmwgPC90ZD4KCQkJPHRkPiA8 L3RkPgoJCQk8dGQ+IDwvdGQ+CgkJCTx0ZD4gPC90ZD4KCQk8L3RyPgoJCTx0cj4KCQkJPHRk PiA8c3Ryb25nPnNtczwvc3Ryb25nPiA8L3RkPgoJCQk8dGQ+IHBob25lIDwvdGQ+CgkJCTx0 ZD4gdGV4dCA8L3RkPgoJCQk8dGQ+IDwvdGQ+CgkJCTx0ZD4gPC90ZD4KCQkJPHRkPiA8L3Rk PgoJCTwvdHI+CgkJPHRyPgoJCQk8dGQ+IDxzdHJvbmc+cGhvbmU8L3N0cm9uZz4gPC90ZD4K CQkJPHRkPiBwaG9uZSA8L3RkPgoJCQk8dGQ+IDwvdGQ+CgkJCTx0ZD4gPC90ZD4KCQkJPHRk PiA8L3RkPgoJCQk8dGQ+IDwvdGQ+CgkJPC90cj4KCQk8dHI+CgkJCTx0ZD4gPHN0cm9uZz5l bWFpbDwvc3Ryb25nPiA8L3RkPgoJCQk8dGQ+IGVtYWlsIDwvdGQ+CgkJCTx0ZD4gc3ViamVj dCA8L3RkPgoJCQk8dGQ+IG1lc3NhZ2UgPC90ZD4KCQkJPHRkPiA8L3RkPgoJCQk8dGQ+IDwv dGQ+CgkJPC90cj4KCQk8dHI+CgkJCTx0ZD4gPHN0cm9uZz5jb250YWN0PC9zdHJvbmc+IDwv dGQ+CgkJCTx0ZD4gbmFtZSA8L3RkPgoJCQk8dGQ+IGFkZHJlc3MgPC90ZD4KCQkJPHRkPiBw aG9uZSA8L3RkPgoJCQk8dGQ+IGVtYWlsIDwvdGQ+CgkJCTx0ZD4gPC90ZD4KCQk8L3RyPgoJ CTx0cj4KCQkJPHRkPiA8c3Ryb25nPnZjYXJkPC9zdHJvbmc+IDwvdGQ+CgkJCTx0ZD4gbmFt ZSA8L3RkPgoJCQk8dGQ+IGVtYWlsIDwvdGQ+CgkJCTx0ZD4gdXJsIDwvdGQ+CgkJCTx0ZD4g YWRkcmVzcyA8L3RkPgoJCQk8dGQ+IHBob25lIDwvdGQ+CgkJPC90cj4KCQk8dHI+CgkJCTx0 ZD4gPHN0cm9uZz5nZW88L3N0cm9uZz4gPC90ZD4KCQkJPHRkPiBsYXQgPC90ZD4KCQkJPHRk PiBsb24gPC90ZD4KCQkJPHRkPiBoZWlnaHQgPC90ZD4KCQkJPHRkPiA8L3RkPgoJCQk8dGQ+ IDwvdGQ+CgkJPC90cj4KCQk8dHI+CgkJCTx0ZD4gPHN0cm9uZz53aWZpPC9zdHJvbmc+IDwv dGQ+CgkJCTx0ZD4gd2lmaV9wcm90b2NvbCA8L3RkPgoJCQk8dGQ+IHNzaWQgPC90ZD4KCQkJ PHRkPiBwYXNzIDwvdGQ+CgkJCTx0ZD4gPC90ZD4KCQkJPHRkPiA8L3RkPgoJCTwvdHI+Cgk8 L3Rib2R5PgoJPC90YWJsZT4KCgk8aDIgaWQ9InNtZF9xcl9jb2RlX2N1c3RvbV90eXBlcyI+ Q3VzdG9tIHR5cGVzPC9oMj4KCgk8cD5Zb3UgbWF5IGNyZWF0ZSB5b3VyIG93biBjdXN0b20g ZGF0YSBmb3JtYXRzIGZvciB5b3VyIFFSIGNvZGVzLiBBcyB3ZWxsIGFzIGJlaW5nIGFibGUg dG8gZGVzaWduYXRlIGEgY3VzdG9tIHJlZ3VsYXIgZXhwcmVzc2lvbiB0byB2YWxpZGF0ZSB0 aGUgZGF0YSB2YWx1ZSwgeW91IGNhbiBhbHNvIHNwZWNpZnkgY2FsbGJhY2tzIHRvIHRyYW5z Zm9ybSB0aGUgZGF0YSB2YWx1ZSBwcmlvciB0byBpdHMgdmFsaWRhdGlvbi4gVGhpcyBhbGxv d3MgeW91IHRvIGRvIHRoaW5ncyBsaWtlIHRpZHkgdXAgbGlua3MsIGFkZCBzdWZmaXhlcywg c2FuaXRpemUgZGF0YSwgZXRjLjwvcD4KCgk8cD5MZXQmIzgyMTc7cyBzYXkgeW91IGRvbiYj ODIxNzt0IGxpa2UgdGhlIGJ1aWx0LWluIHZjYXJkIGltcGxlbWVudGF0aW9uIGFuZCB3YW50 ZWQgdG8gZHJvcCB0aGUgPHNwYW4gY2xhc3M9ImNhcHMiPkFEUjwvc3Bhbj4gcHJvcGVydHks IHdoaWxlIGFkZGluZyB0aGUgPHNwYW4gY2xhc3M9ImNhcHMiPkNFTEw8L3NwYW4+IHByb3Bl cnR5LiBZb3UgY2FuIGRlZmluZSB5b3VyIG93biBieSB1c2luZyB0aGUgZm9sbG93aW5nIGF0 dHJpYnV0ZXMgKGxpbmUgYnJlYWtzIGFkZGVkIG9ubHkgZm9yIGNsYXJpdHk6IHRoZXkgc2hv dWxkIG5vdCBiZSBpbiB5b3VyIGRlZmluaXRpb24pIDo8L3A+Cgo8cHJlIGNsYXNzPSJibG9j ayI+PGNvZGUgY2xhc3M9ImJsb2NrIj50eXBlPSZxdW90O215X3ZjYXJkJnF1b3Q7IGxheW91 dD0mcXVvdDtCRUdJTjpWQ0FSRFxyXG4KICAgICBOOntTTURfUVJfZm9ybWF0dGVkX25hbWV9 XHJcbgogICAgIEZOOntuYW1lfVxyXG4KICAgICBFTUFJTDp7ZW1haWx9XHJcbgogICAgIFVS TDp7dXJsfVxyXG4KICAgICBURUw6e3Bob25lfVxyXG4KICAgICBDRUxMOntjZWxsfVxyXG4K ICAgICBFTkQ6VkNBUkQmcXVvdDsKPC9jb2RlPjwvcHJlPgoKCTxwPkEgZmV3IHRoaW5ncyB0 byBub3RlOjwvcD4KCgk8dWw+CgkJPGxpPllvdSBjYW4gbmFtZSB0aGUgPGNvZGU+dHlwZTwv Y29kZT4gYW55dGhpbmcgeW91IGxpa2UgKGV2ZW4gdGhlIHNhbWUgbmFtZSBhcyBvbmUgb2Yg dGhlIGV4aXN0aW5nIHR5cGVzOiB5b3VyIHZlcnNpb24gd2lsbCBiZSB1c2VkIGluc3RlYWQp PC9saT4KCQk8bGk+VGhlIHZjYXJkIHNwZWMgKGNlcnRhaW5seSB2MyspIHN0YXRlcyB0aGF0 IHRoZSA8Y29kZT5OOjwvY29kZT4gcHJvcGVydHkgaXMgbWFuZGF0b3J5LiBJdCYjODIxNztz IG1lcmVseSBhIHJlZm9ybWF0dGVkIHZlcnNpb24gb2YgdGhlIDxjb2RlPkZOOjwvY29kZT4g c28sIHRvIHNhdmUgeW91IGhhdmluZyB0byBhZGQgaXQgbWFudWFsbHksIHRoZSBwbHVnaW4g YXBwbGllcyBhIGN1c3RvbSB0cmFuc2Zvcm0gY2FsbGVkIDxjb2RlPnNwbGl0cmV2am9pbjwv Y29kZT4gKG1vcmUgaW5mbyBpbiB0aGUgPGEgaHJlZj0iI3NtZF9xcl9jb2RlX2N1c3RvbV90 eXBlcyI+Y3VzdG9tIHRyYW5zZm9ybXM8L2E+IHNlY3Rpb24pLiBCZWNhdXNlIGl0JiM4MjE3 O3MgYSBjb21wdXRlZCBmaWVsZCwgdGhlIHBsdWdpbiBkZXNpZ25hdGVzIGl0IHdpdGggYW4g PGNvZGU+U01EX1FSXzwvY29kZT4gcHJlZml4LiBJZiB5b3Ugd2FudGVkIHRvIGZsYXVudCB0 aGUgc3BlYyBhbmQgb21pdCB0aGlzIHZhbHVlLCBqdXN0IHJlbW92ZSB0aGF0IGVudHJ5IGZy b20geW91ciA8Y29kZT5sYXlvdXQ8L2NvZGU+PC9saT4KCQk8bGk+VGhlIDxjb2RlPntjZWxs fTwvY29kZT4gcmVwbGFjZW1lbnQgdmFyaWFibGUgaXNuJiM4MjE3O3Qgb25lIG9mIHRoZSBi dWlsdC1pbiBzdXBwb3J0ZWQgZm9ybWF0cyAoaS5lLiBvbmUgb2YgdGhlIHBhcmFtZXRlcnMg bGlzdGVkIGluIHRoZSA8YSBocmVmPSIjc21kX3FyX2NvZGVfZGF0YV90YWJsZSI+ZGF0YSB0 YWJsZTwvYT4pLiBUbyBoZWxwIHlvdSBvdXQsIHRoZSBwbHVnaW4gYXNzaWducyBhIGRlZmF1 bHQgcmVndWxhciBleHByZXNzaW9uICYjODIyMDtvbmUgb3IgbW9yZSBjaGFyYWN0ZXJzJiM4 MjIxOyB0byBhbnkgbmV3IHBhcmFtZXRlcnMsIGJ1dCBpZiB5b3Ugd2lzaCB0byB0aWdodGVu IHRoaXMgeW91IGNhbiBzcGVjaWZ5IHlvdXIgb3duIHJlZ2V4IHZpYSB0aGUgPGNvZGU+dmFs aWRhdGU8L2NvZGU+IGF0dHJpYnV0ZTwvbGk+CgkJPGxpPkFueSA8c3BhbiBjbGFzcz0iY2Fw cyI+VVJMPC9zcGFuPnMgYXJlIHJlZm9ybWF0dGVkIHRvIGJlZ2luIHdpdGggPGNvZGU+aHR0 cDovLzwvY29kZT4gaWYgeW91IG9taXQgdGhlIHByZWZpeC4gVGhpcyBpcyBhbm90aGVyIGJ1 aWx0LWluIHRyYW5zZm9ybSB3aGljaCB5b3UgY2FuIG92ZXJyaWRlIG9yIHN1cHByZXNzIGlm IHlvdSBwcmVmZXI8L2xpPgoJPC91bD4KCgk8cD5XaXRoIHRoaXMgY3VzdG9tIGZvcm1hdCBp biBwbGFjZSB5b3UgY2FuIHNwZWNpZnkgYSA8Y29kZT5kYXRhPC9jb2RlPiBhdHRyaWJ1dGUg bGlrZSB0aGlzIChhZ2FpbiwgbmV3bGluZXMgYXJlIGZvciBjbGFyaXR5IG9ubHkpIDo8L3A+ Cgo8cHJlIGNsYXNzPSJibG9jayI+PGNvZGUgY2xhc3M9ImJsb2NrIj5kYXRhPSZxdW90O1N0 ZWYgRGF3c29uCiAgICAgfCBzb21lQG1haWwuY29tCiAgICAgfCBzdGVmZGF3c29uLmNvbQog ICAgIHwgKzQ0ICgwKTEyMzQgNTY3IDg5MAogICAgIHwgKzQ0ICgwKTc3NzcgMDk4IDc2NSZx dW90Owo8L2NvZGU+PC9wcmU+CgoJPHA+WW91ciBRUiBjb2RlIHdvdWxkIGJlIGdlbmVyYXRl ZCB3aXRoIHRoZSBhYm92ZSBkYXRhIGluIGl0LiBJZiB5b3Ugd2FudGVkIHRvIHVzZSB0aGUg c2FtZSBmb3JtYXQgYWNyb3NzIGEgbnVtYmVyIG9mIGNvZGVzLCB5b3UgY291bGQgZGVmaW5l IHlvdXIgZm9ybWF0IGluIGEgPGNvZGU+Jmx0O3R4cDp2YXJpYWJsZSAvJmd0OzwvY29kZT4g YW5kIHVzZSA8c3BhbiBjbGFzcz0iY2FwcyI+VFhQPC9zcGFuPiYjODIxNztzIHN0YW5kYXJk IHRhZy1pbi1hdHRyaWJ1dGUgc3ludGF4IHRvIHJldXNlIGl0LjwvcD4KCgk8cD5TaW5jZSB0 aGUgbmV3IGZpZWxkICYjODIxNjtjZWxsJiM4MjE3OyB3aWxsIGJlIHZhbGlkYXRlZCB1c2lu ZyB0aGUgbW9zdCBwZXJtaXNzaXZlIHJlZ2V4IGFuZCB3ZSBhbHJlYWR5IGhhdmUgYSBwZXJm ZWN0bHkgZ29vZCBleHByZXNzaW9uIGRlZmluZWQgZm9yICYjODIxNjtwaG9uZSYjODIxNzsg aXQmIzgyMTc7ZCBiZSBhIHNoYW1lIHRvIGhhdmUgdG8gcmVwZWF0IG91cnNlbHZlcy4gU28g eW91IGNhbiBkbyB0aGlzOjwvcD4KCjxwcmUgY2xhc3M9ImJsb2NrIj48Y29kZSBjbGFzcz0i YmxvY2siPnZhbGlkYXRlPSZxdW90OzEsIGNlbGw6U01EX1JFR0VYX1BIT05FJnF1b3Q7Cjwv Y29kZT48L3ByZT4KCgk8cD50byBjb3B5IHRoZSAmIzgyMTY7cGhvbmUmIzgyMTc7IHJlZ2V4 IG92ZXIgdG8gdGhlICYjODIxNjtjZWxsJiM4MjE3OyBmaWVsZC4gVGhlICYjODIxNjsxJiM4 MjE3OyBqdXN0IG1ha2VzIHN1cmUgdGhhdCBhbGwgdGhlIHJlbWFpbmluZyBmaWVsZHMgYXJl IHZhbGlkYXRlZCBhcyBub3JtYWwuIFdpdGhvdXQgdGhhdCwgb25seSB0aGUgY2VsbCBhbmQg YW55IG90aGVyIGZpZWxkcyB5b3UgZXhwbGljaXRseSBkZWZpbmVkIGluIHRoZSBsaXN0IHdv dWxkIGJlIHZhbGlkYXRlZC4gSWYgeW91IHdvdWxkIGxpa2UgdG8gc2VlIGEgbGlzdCBvZiB0 aGUgYnVpbHQtaW4gcmVnZXhlcywgdXNlIDxjb2RlPmRlYnVnPSZxdW90OzEmcXVvdDs8L2Nv ZGU+IChvciAyIGZvciBtb3JlIHZlcmJvc2Ugb3V0cHV0KS48L3A+CgoJPGgyIGlkPSJzbWRf cXJfY29kZV9jdXN0b21fdHJhbnNmb3JtcyI+Q3VzdG9tIHRyYW5zZm9ybXM8L2gyPgoKCTxw PkJlZm9yZSB2YWxpZGF0aW9uLCBlYWNoIHBpZWNlIG9mIGRhdGEgbWF5IGJlIHB1dCB0aHJv dWdoIGEgbWFuZ2xlIHRvIHJlZm9ybWF0IGl0LiBZb3UgY291bGQgdXNlIHRoaXMgdG8gc2Fu aXRpemUgZGF0YSwgcHJlZml4IGl0LCBzdWZmaXggaXQsIGZldGNoIG90aGVyIGRhdGEsIG9y IGNyZWF0ZSBuZXcgZW50cmllcyBieSB0d2lzdGluZyBhIGdpdmVuIGRhdGEgcGFyYW1ldGVy LiBUaGUgZm9sbG93aW5nIGRlZmF1bHQgdHJhbnNmb3JtcyBhcmUgYnVpbHQtaW46PC9wPgoK CTx1bD4KCQk8bGk+PHN0cm9uZz5saW5raWZ5PC9zdHJvbmc+IDogcHJlZml4IGFueSA8c3Bh biBjbGFzcz0iY2FwcyI+VVJMPC9zcGFuPiB0aGF0IGRvZXMgbm90IGJlZ2luIHdpdGggPGNv ZGU+aHR0cDovLzwvY29kZT48L2xpPgoJCTxsaT48c3Ryb25nPnNwbGl0cmV2am9pbjwvc3Ry b25nPiA6IHRha2VzIHNvbWVvbmUmIzgyMTc7cyBuYW1lLCBzcGxpdHMgaXQgYXQgc3BhY2Us IHJldmVyc2VzIHRoZSBvcmRlciBvZiB0aGUgZGF0YSwgYW5kIHRoZW4gcmVjb21iaW5lcyBp dCB3aXRoIGEgc2VtaWNvbG9uIGJldHdlZW4gZWFjaCBmaWVsZC4gVGh1cyA8Y29kZT5TdGVm IERhd3NvbjwvY29kZT4gYmVjb21lcyA8Y29kZT5EYXdzb247U3RlZjwvY29kZT48L2xpPgoJ PC91bD4KCgk8cD5UcmFuc2Zvcm1hdGlvbnMgY2FuIGJlIGFwcGxpZWQgdG8gYW55IGRhdGEg cGFyYW1ldGVyLiBZb3UgY2hvb3NlIHdoaWNoIGJ5IHVzaW5nIHRoZSBmb2xsb3dpbmcgc3lu dGF4OjwvcD4KCjxwcmUgY2xhc3M9ImJsb2NrIj48Y29kZSBjbGFzcz0iYmxvY2siPnRyYW5z Zm9ybT0mcXVvdDt0eXBlLmZpZWxkfGZ1bmN0aW9uX25hbWV8b3B0aW9uYWx8YXR0cmlidXRl c3wuLi4mcXVvdDsKPC9jb2RlPjwvcHJlPgoKCTxwPlNvIHRvIGNhcGl0YWxpemUgdGhlIHZj YXJkJiM4MjE3O3MgJiM4MjE2O25hbWUmIzgyMTc7IHlvdSBjb3VsZCB1c2UgPHNwYW4gY2xh c3M9ImNhcHMiPlBIUDwvc3Bhbj4mIzgyMTc7cyBidWlsdC1pbiBmdW5jdGlvbiA8Y29kZT5z dHJ0b3VwcGVyKCk8L2NvZGU+IGxpa2UgdGhpczo8L3A+Cgo8cHJlIGNsYXNzPSJibG9jayI+ PGNvZGUgY2xhc3M9ImJsb2NrIj50cmFuc2Zvcm09JnF1b3Q7dmNhcmQubmFtZXxzdHJ0b3Vw cGVyJnF1b3Q7CjwvY29kZT48L3ByZT4KCgk8cD5Zb3UgY2FuIHVzZSBhIHNob3J0aGFuZCAm IzgyMTY7d2lsZGNhcmQmIzgyMTc7IG5vdGF0aW9uIGlmIHlvdSB3aXNoIHRvIGFwcGx5IHRo ZSBzYW1lIHRyYW5zZm9ybSB0byB0aGUgc2FtZSBwYXJhbWV0ZXIgaW4gZGlmZmVyZW50IHR5 cGVzICh0aG91Z2ggYWRtaXR0ZWRseSwgdGhpcyBoYXMgbGltaXRlZCB1c2UpLiBUaGUgcGx1 Z2luIHVzZXMgdGhpcyB3aXRoIGl0cyBkZWZhdWx0IDxzcGFuIGNsYXNzPSJjYXBzIj5VUkw8 L3NwYW4+IHRyYW5zZm9ybWF0aW9uIGJ5IHVzaW5nOiA8Y29kZT4qLnVybHxsaW5raWZ5PC9j b2RlPi48L3A+CgoJPHA+SWYgeW91IHRyeSB0aGUgYWJvdmUgdGhvdWdoIHlvdSB3aWxsIHJl Y2VpdmUgYSBwbHVnaW4gd2FybmluZyA8Y29kZT5JbnZhbGlkIG9yIHVucmVnaXN0ZXJlZCB0 cmFuc2Zvcm0gZnVuY3Rpb248L2NvZGU+LiBUaGF0JiM4MjE3O3MgYSBzZWN1cml0eSBtZXNz YWdlIGJlY2F1c2Ugb25seSByZWdpc3RlcmVkIGZ1bmN0aW9ucyBhcmUgcGVybWl0dGVkIHRv IHJ1biB0cmFuc2Zvcm1hdGlvbnMuIFRvIHJlZ2lzdGVyIGEgZnVuY3Rpb24sIHVzZSBUZXh0 cGF0dGVybiYjODIxNztzIDxjb2RlPnJlZ2lzdGVyX2NhbGxiYWNrKCk8L2NvZGU+IGZ1bmN0 aW9uIGluIHNvbWUgPHNwYW4gY2xhc3M9ImNhcHMiPlBIUDwvc3Bhbj46PC9wPgoKPHByZSBj bGFzcz0iYmxvY2siPjxjb2RlIGNsYXNzPSJibG9jayI+cmVnaXN0ZXJfY2FsbGJhY2soJiMz OTtzdHJ0b3VwcGVyJiMzOTssICYjMzk7c21kX3FyX2NvZGUmIzM5OywgJiMzOTthZGRfdHJh bnNmb3JtJiMzOTspOwo8L2NvZGU+PC9wcmU+CgoJPHA+WW91IGNhbiBvZiBjb3Vyc2UgdXNl IHlvdXIgb3duIGZ1bmN0aW9ucyBpZiB5b3Ugd2lzaC4gVGhlIHNpZ25hdHVyZSBvZiB5b3Vy IGZ1bmN0aW9uIHNob3VsZCBiZTo8L3A+CgoJPG9sPgoJCTxsaT4oc3RyaW5nKSBEYXRhIHZh bHVlIHRvIHRyYW5zZm9ybTwvbGk+CgkJPGxpPihhcnJheSkgT3B0aW9uYWwgdmFsdWVzIHRo YXQgeW91ciB0cmFuc2Zvcm0gbmVlZHM8L2xpPgoJPC9vbD4KCgk8cD5UaGUgYWRkaXRpb25h bCBwYXJhbWV0ZXJzIGFyZSBwYXNzZWQsIGluIG9yZGVyLCBmcm9tIHRoZSA8Y29kZT50cmFu c2Zvcm08L2NvZGU+IGF0dHJpYnV0ZS4gTm90ZSB0aGF0IHlvdSBjYW4gPGVtPm9ubHk8L2Vt PiB1c2UgZnVuY3Rpb25zIChlaXRoZXIgeW91ciBvd24sIG9yIDxzcGFuIGNsYXNzPSJjYXBz Ij5QSFA8L3NwYW4+L1RYUCBmdW5jdGlvbnMpIGlmIHRoZXkgZWl0aGVyIHRha2UgYSBzaW5n bGUgc3RyaW5nIG9yIGEgc3RyaW5nIHBsdXMgYW4gYXJyYXkgYXMgYXJndW1lbnRzLiBUcnlp bmcgdG8gdXNlIGFueSBtb3JlIGNvbXBsaWNhdGVkIGZ1bmN0aW9ucyBvciBhdHRyaWJ1dGVz IG9mIHRoZSB3cm9uZyB0eXBlIHdpbGwgbGlrZWx5IHJlc3VsdCBpbiB3YXJuaW5ncyBvciBl cnJvcnMgYmVpbmcgdGhyb3duLjwvcD4KCgk8cD5JZiB5b3VyIGN1c3RvbSBmdW5jdGlvbiBy ZXR1cm5zIGEgc2luZ2xlIHN0cmluZyB2YWx1ZSwgdGhhdCB3aWxsIGJlY29tZSB0aGUgcGFy YW1ldGVyJiM4MjE3O3MgbmV3IHZhbHVlLiBJZiwgaG93ZXZlciwgeW91IHJldHVybiBhbiBh cnJheSBvZiBpZHggPSZndDsgdmFsdWVzIHRoZW4gYW55IGlkeCB0aGF0IG1hdGNoZXMgdGhl IG5hbWUgb2YgdGhlIHBhcmFtZXRlciB3aWxsIHJlcGxhY2UgdGhlIG9yaWdpbmFsLiBBbnkg YWRkaXRpb25hbCBpZHggdmFsdWVzIGJlY29tZSBuZXcgcGFyYW1ldGVycywgcHJlZml4ZWQg d2l0aCA8Y29kZT5TTURfUVJfPC9jb2RlPi4gTGV0JiM4MjE3O3MgbG9vayBhdCB0aGUgYnVp bHQtaW4gPGNvZGU+c3BsaXRyZXZqb2luKCk8L2NvZGU+IGZ1bmN0aW9uOjwvcD4KCjxwcmUg Y2xhc3M9ImJsb2NrIj48Y29kZSBjbGFzcz0iYmxvY2siPnB1YmxpYyBmdW5jdGlvbiBzcGxp dHJldmpvaW4oJGl0ZW0sICRhcmdzPWFycmF5KCkpIHsKICAgLy8gJGFyZ3M6IDAgPSB2YXJp YWJsZSBuYW1lLCAxID0gc3BsaXQgY2hhciwgMiA9IGpvaW4gY2hhcgogICBpZiAoY291bnQo JGFyZ3MpID09IDMpIHsKICAgICAgJG91dHZhbCA9IGpvaW4oCiAgICAgICAgICAgJGFyZ3Nb Ml0KICAgICAgICAgICAsIGFycmF5X3JldmVyc2UoCiAgICAgICAgICAgICAgZXhwbG9kZSgg JGFyZ3NbMV0sICRpdGVtICkKICAgICAgICAgICApCiAgICAgICk7CiAgICAgIHJldHVybiBh cnJheSgkYXJnc1swXSA9Jmd0OyAkb3V0dmFsKTsKICAgfSBlbHNlIHsKICAgICAgcmV0dXJu ICRpdGVtOwogICB9Cn0KPC9jb2RlPjwvcHJlPgoKCTxwPkluIHRoaXMgZnVuY3Rpb24sIHdl IGhhdmUgYXNzdW1lZCB0aGF0IHRoZSB0cmFuc2Zvcm0mIzgyMTc7cyBwYXJhbWV0ZXJzIGFy ZTo8L3A+CgoJPHVsPgoJCTxsaT48Y29kZT4kaXRlbTwvY29kZT4gOiB0aGUgZGF0YSB2YWx1 ZTwvbGk+CgkJPGxpPjxjb2RlPiRhcmdzWzBdPC9jb2RlPiA6IHRoZSBuYW1lIG9mIHRoZSBu ZXcgcGFyYW1ldGVyPC9saT4KCQk8bGk+PGNvZGU+JGFyZ3NbMV08L2NvZGU+IDogdGhlIHNw bGl0IGNoYXJhY3RlcjwvbGk+CgkJPGxpPjxjb2RlPiRhcmdzWzJdPC9jb2RlPiA6IHRoZSBy ZWpvaW4gY2hhcmFjdGVyPC9saT4KCTwvdWw+CgoJPHA+QWxsIHRoZXNlIHZhbHVlcyBhcmUg cGFzc2VkIGluIGxpa2UgdGhpczogPGNvZGU+dmNhcmQubmFtZXxzcGxpdHJldmpvaW58Zm9y bWF0dGVkX25hbWV8IHw7PC9jb2RlPiB3aGljaCBtZWFucyB3ZSYjODIxNztyZSB0ZWxsaW5n IHRoZSB0cmFuc2Zvcm0gdG8gcHJvY2VzcyB0aGUgPGNvZGU+JGl0ZW08L2NvZGU+IGFuZCBy ZXR1cm4gYSA8ZW0+bmV3PC9lbT4gcGFyYW1ldGVyIGNhbGxlZCA8Y29kZT5mb3JtYXR0ZWRf bmFtZTwvY29kZT4gYWZ0ZXIgc3BsaXR0aW5nIHRoZSA8Y29kZT4kaXRlbTwvY29kZT4gYXQg c3BhY2UgYW5kIHJlY29uc3RpdHV0aW5nIHRoZSBwYXJ0cyBhcyBhIHN0cmluZywgZGVsaW1p dGVkIGJ5IGEgc2VtaWNvbG9uLjwvcD4KCgk8cD5JZiB3ZSYjODIxNztkIHJldHVybmVkIDxj b2RlPm5hbWU8L2NvZGU+IGluc3RlYWQgb2YgPGNvZGU+Zm9ybWF0dGVkX25hbWU8L2NvZGU+ LCB0aGUgZXhpc3RpbmcgcGFyYW1ldGVyIHdvdWxkIGhhdmUgYmVlbiBvdmVyd3JpdHRlbi4g U2luY2UgdGhlIGdvYWwgb2YgdGhpcyBmdW5jdGlvbiBpcyB0byByZWZvcm1hdCB0aGUgcGVy c29uJiM4MjE3O3MgbmFtZSBpbnRvIGEgZm9ybSBzdWl0YWJsZSBmb3IgdGhlIHZjYXJkJiM4 MjE3O3MgPGNvZGU+Tjo8L2NvZGU+IGF0dHJpYnV0ZSwgd2UmIzgyMTc7cmUgbGVhdmluZyB0 aGUgb3JpZ2luYWwgaW50YWN0IGFuZCBtYWtpbmcgYSBuZXcgdmFsdWUuPC9wPgoKCTxwPkZp bmFsbHksIHRvIGRpc3Rpbmd1aXNoIHRoZSA8ZW0+aW5wdXQ8L2VtPiB2YWx1ZXMgZnJvbSA8 ZW0+Y29tcHV0ZWQ8L2VtPiB2YWx1ZXMgc3VjaCBhcyB0aGlzIG9uZSwgdGhlIHBsdWdpbiB3 aWxsIGF1dG9tYXRpY2FsbHkgcHJlZml4IGFsbCBuZXcgcGFyYW1ldGVycyB3aXRoIDxjb2Rl PlNNRF9RUl88L2NvZGU+LiBUaHVzIHRvIHVzZSBpdCBpbiB5b3VyIGxheW91dCwgcmVtZW1i ZXIgeW91IG5lZWQgdG8gc3BlY2lmeSA8Y29kZT57U01EX1FSX2Zvcm1hdHRlZF9uYW1lfTwv Y29kZT4uIFRoZSBwcmVmaXggY2FuIGJlIGNoYW5nZWQgdmlhIHRoZSBwbHVnaW4mIzgyMTc7 cyA8Y29kZT5wcmVmaXg8L2NvZGU+IGF0dHJpYnV0ZS48L3A+CgoJPGgyPkV4YW1wbGVzPC9o Mj4KCgk8aDMgaWQ9ImVnMSI+RXhhbXBsZSAxOiBCb29rbWFyayBwZXJtbGlua3M8L2gzPgoK CTxwPkluIHlvdXIgZGVmYXVsdCBGb3JtIHB1dCBhIFFSIGNvZGUgYWxvbmdzaWRlIHlvdXIg YXJ0aWNsZSBoZWFkaW5nIHNvIHBlb3BsZSBjYW4gYm9va21hcmsgdGhlIGFydGljbGUgYnkg dGFraW5nIGEgcGljdHVyZSB3aXRoIHRoZWlyIHNtYXJ0IHBob25lOjwvcD4KCjxwcmUgY2xh c3M9ImJsb2NrIj48Y29kZSBjbGFzcz0iYmxvY2siPiZsdDtoMSBjbGFzcz0mcXVvdDtlbnRy eS10aXRsZSZxdW90OyZndDsKICAgJmx0O3R4cDpwZXJtbGluayZndDsmbHQ7dHhwOnRpdGxl IC8mZ3Q7Jmx0Oy90eHA6cGVybWxpbmsmZ3Q7CiAgICZsdDt0eHA6c21kX3FyX2NvZGUgdHlw ZT0mcXVvdDtib29rbWFyayZxdW90OwogICAgIGRhdGE9JiMzOTsmbHQ7dHhwOnRpdGxlIC8m Z3Q7fCZsdDt0eHA6cGVybWxpbmsgLyZndDsmIzM5OwogICAgIHdpZHRoPSZxdW90OzUwJnF1 b3Q7IGhlaWdodD0mcXVvdDs1MCZxdW90OwogICAgIHF1YWxpdHk9JnF1b3Q7USZxdW90OyAv Jmd0OwombHQ7L2gxJmd0Owo8L2NvZGU+PC9wcmU+CgoJPHA+Tm90aWNlIHRoYXQgc2luY2Ug dGhlIGltYWdlIHNpemUgaGFzIGJlZW4gcmVkdWNlZCB0byBmaXQgYWxvbmdzaWRlIHRoZSB0 aXRsZSwgdGhlIHF1YWxpdHkgKGVycm9yIGRldGVjdGlvbi9jb3JyZWN0aW9uKSBoYXMgYmVl biBpbmNyZWFzZWQgdG8gY29tcGVuc2F0ZS48L3A+CgoJPGgzIGlkPSJlZzIiPkV4YW1wbGUg MjogQXV0aG9yIGNvbnRhY3QgZGV0YWlsczwvaDM+CgoJPHA+SWYgeW91IGhhdmUgc21kX2Jp byBpbnN0YWxsZWQgeW91IGNvdWxkIGFkZCB0aGUgZm9sbG93aW5nIGNvZGUgdG8gdGhlICYj ODIxNjtwdWJsaXNoZWQgYnkmIzgyMTc7IHNlZ21lbnQgb2YgeW91ciBhcnRpY2xlcy4gSXQg d2lsbCBkaXNwbGF5IGEgUVIgY29kZSBmb3IgdGhlIGNvbnRhY3QgZGV0YWlscyBvZiB0aGUg YXJ0aWNsZSYjODIxNztzIGF1dGhvciwgdGh1cyB2aXNpdG9ycyBjYW4gc2NhbiB0aGUgYmFy Y29kZSBhbmQgaGF2ZSB0aGUgYXV0aG9yJiM4MjE3O3MgPHNwYW4gY2xhc3M9ImNhcHMiPk1F Q0FSRDwvc3Bhbj4gYWRkZWQgZGlyZWN0bHkgdG8gdGhlaXIgYWRkcmVzcyBib29rczo8L3A+ Cgo8cHJlIGNsYXNzPSJibG9jayI+PGNvZGUgY2xhc3M9ImJsb2NrIj4mbHQ7cCBjbGFzcz0m cXVvdDtwdWJsaXNoZWQmcXVvdDsmZ3Q7CiAgICZsdDt0eHA6cG9zdGVkIC8mZ3Q7IGJ5ICZs dDt0eHA6YXV0aG9yIHRpdGxlPSZxdW90OzAmcXVvdDsgLyZndDsKICAgJmx0O3R4cDpzbWRf cXJfY29kZSB0eXBlPSZxdW90O2NvbnRhY3QmcXVvdDsKICAgICBkYXRhPSYjMzk7Jmx0O3R4 cDphdXRob3IgLyZndDsKICAgICAgICB8ICZsdDt0eHA6c21kX2Jpb19pbmZvIGl0ZW1zPSZx dW90O2FkZHJlc3MmcXVvdDsgbGFiZWw9JnF1b3Q7JnF1b3Q7IC8mZ3Q7CiAgICAgICAgfCAm bHQ7dHhwOnNtZF9iaW9faW5mbyBpdGVtcz0mcXVvdDtwaG9uZSZxdW90OyBsYWJlbD0mcXVv dDsmcXVvdDsgLyZndDsKICAgICAgICB8ICZsdDt0eHA6c21kX2Jpb19pbmZvIGl0ZW1zPSZx dW90O2VtYWlsJnF1b3Q7IGxhYmVsPSZxdW90OyZxdW90OyAvJmd0OyAvJmd0OyYjMzk7CiAg ICAgYmdjb2w9JnF1b3Q7YmVhN2QwJnF1b3Q7IG1hcmdpbj0mcXVvdDsxJnF1b3Q7IC8mZ3Q7 CiZsdDsvcCZndDsKPC9jb2RlPjwvcHJlPgoKCTxwPlRoaXMgb25lIGhhcyBhIG5hdHR5LCB0 aGluIHB1cnBsZSBib3JkZXIgdG9vIGNvdXJ0ZXN5IG9mIHRoZSA8Y29kZT5iZ2NvbDwvY29k ZT4gYW5kIDxjb2RlPm1hcmdpbjwvY29kZT4gYXR0cmlidXRlcy48L3A+CgoJPHA+QWx0ZXJu YXRpdmVseSwgaW4gPHNwYW4gY2xhc3M9ImNhcHMiPlZDQVJEPC9zcGFuPiBmb3JtYXQ6PC9w PgoKPHByZSBjbGFzcz0iYmxvY2siPjxjb2RlIGNsYXNzPSJibG9jayI+Jmx0O3R4cDp2YXJp YWJsZQogICAgIG5hbWU9JnF1b3Q7YWRkcmVzcyZxdW90OyZndDsmbHQ7dHhwOnNtZF9iaW9f aW5mbwogICAgIGl0ZW1zPSZxdW90O2FkZHJlc3MmcXVvdDsgbGFiZWw9JnF1b3Q7JnF1b3Q7 IC8mZ3Q7Jmx0Oy90eHA6dmFyaWFibGUmZ3Q7CiZsdDtwIGNsYXNzPSZxdW90O3B1Ymxpc2hl ZCZxdW90OyZndDsKICAgJmx0O3R4cDpwb3N0ZWQgLyZndDsgYnkgJmx0O3R4cDphdXRob3Ig dGl0bGU9JnF1b3Q7MCZxdW90OyAvJmd0OwogICAmbHQ7dHhwOnNtZF9xcl9jb2RlIHR5cGU9 JnF1b3Q7dmNhcmQmcXVvdDsKICAgICBkYXRhPSYjMzk7Jmx0O3R4cDphdXRob3IgLyZndDsK ICAgICAgICB8ICZsdDt0eHA6c21kX2Jpb19pbmZvIGl0ZW1zPSZxdW90O2VtYWlsJnF1b3Q7 IGxhYmVsPSZxdW90OyZxdW90OyAvJmd0OyAvJmd0OyYjMzk7CiAgICAgICAgfCAmbHQ7dHhw OnNtZF9iaW9faW5mbyBpdGVtcz0mcXVvdDt3ZWJzaXRlJnF1b3Q7IGxhYmVsPSZxdW90OyZx dW90OyAvJmd0OwogICAgICAgIHwgJmx0O3R4cDppZl92YXJpYWJsZQogICAgICAgICAgICAg ICBuYW1lPSZxdW90O2FkZHJlc3MmcXVvdDsKICAgICAgICAgICAgICAgdmFsdWU9JnF1b3Q7 JnF1b3Q7Jmd0O3tzbWRfZW1wdHl9Jmx0O3R4cDplbHNlIC8mZ3Q7Jmx0O3R4cDp2YXJpYWJs ZQogICAgICAgICAgICAgICBuYW1lPSZxdW90O2FkZHJlc3MmcXVvdDsgLyZndDsmbHQ7L3R4 cDppZl92YXJpYWJsZSZndDsKICAgICAgICB8ICZsdDt0eHA6c21kX2Jpb19pbmZvIGl0ZW1z PSZxdW90O3Bob25lJnF1b3Q7IGxhYmVsPSZxdW90OyZxdW90OyAvJmd0OwogICAgIGJnY29s PSZxdW90O2JlYTdkMCZxdW90OyBtYXJnaW49JnF1b3Q7MSZxdW90OyAvJmd0OwombHQ7L3Am Z3Q7CjwvY29kZT48L3ByZT4KCgk8cD5Ob3RlIGluIHRoaXMgY2FzZSB3ZSBoYXZlIGNoZWNr ZWQgaWYgdGhlIGFkZHJlc3MgaXMgZW1wdHkgYW5kIHN1cHBsaWVkIHRoZSA8Y29kZT57c21k X2VtcHR5fTwvY29kZT4gcGFyYW1ldGVyIGFzIGEgY29udmVuaWVuY2UuIFlvdSB3b3VsZCBw cm9iYWJseSBlbmZvcmNlIHRoaXMgdXBzdHJlYW0gYXQgZGF0YSBjb2xsZWN0aW9uIHBvaW50 LCBidXQgdGhpcyBzZXJ2ZXMgdG8gZGVtb25zdHJhdGUgdGhhdCB5b3UgY2FuIGRlZmVuc2l2 ZWx5IHByZXZlbnQgc21kX3FyX2NvZGUgdmFsaWRhdGlvbiBlcnJvcnMgYnkgZW1wbG95aW5n IHNpbWlsYXIgdGVjaG5pcXVlcyBvbiBjZXJ0YWluIG9wdGlvbmFsIGZpZWxkcy48L3A+CgoJ PGgzIGlkPSJlZzMiPkV4YW1wbGUgMzogR2VvZ3JhcGhpYyBsb2NhdGlvbjwvaDM+CgoJPHA+ T3JnYW5pc2luZyBhIGZsYXNobW9iIG9uIE1vdW50IEtpbGltYW5qYXJvPyBNYWtlIHN1cmUg cGVvcGxlIGNhbiBmaW5kIHlvdSBieSBwdWJsaXNoaW5nIGEgUVIgY29kZSBvbiB5b3VyIHNp dGU6PC9wPgoKPHByZSBjbGFzcz0iYmxvY2siPjxjb2RlIGNsYXNzPSJibG9jayI+Jmx0O3R4 cDpzbWRfcXJfY29kZSB0eXBlPSZxdW90O2dlbyZxdW90OwogICAgIGRhdGE9JnF1b3Q7LTMu MDc1ODMgfCAzNy4zNTMzMyB8IDU4OTUmcXVvdDsgLyZndDsKPC9jb2RlPjwvcHJlPgoKCTxo MyBpZD0iZWc0Ij5FeGFtcGxlIDQ6IFJhdyBsaW5rczwvaDM+Cgo8cHJlIGNsYXNzPSJibG9j ayI+PGNvZGUgY2xhc3M9ImJsb2NrIj4mbHQ7YSBocmVmPSZxdW90OyZsdDt0eHA6c21kX3Fy X2NvZGUKICAgICB0eXBlPSZxdW90O2xpbmsmcXVvdDsgZGF0YT0mcXVvdDtteWZhYnNpdGUu Y29tL3ZvdWNoZXJzJnF1b3Q7CiAgICAgZm9ybWF0PSZxdW90O3JhdyZxdW90OyAvJmd0OyZx dW90OyZndDtEb3dubG9hZCB5b3VyIHZvdWNoZXImbHQ7L2EmZ3Q7CjwvY29kZT48L3ByZT4K Cgk8cD5XaGlsZSB0aGlzIG9uZSBpcyBqdXN0IGEgYm9yaW5nIDxzcGFuIGNsYXNzPSJjYXBz Ij5VUkw8L3NwYW4+IGxpbmsgdGhlcmUmIzgyMTc7cyBub3RoaW5nIHRvIHN0b3AgeW91IGdl bmVyYXRpbmcgYSBwZXJzb25hbCB2b3VjaGVyIGNvZGUsIHBlcmhhcHMgYWZ0ZXIgdGhleSBo YXZlIHN1Ym1pdHRlZCB0aGVpciBjb250YWN0IGRldGFpbHMgdmlhIHplbV9jb250YWN0X3Jl Ym9ybiwgYW5kIHRhY2tpbmcgaXQgb250byB0aGUgZW5kIG9mIHRoZSA8c3BhbiBjbGFzcz0i Y2FwcyI+VVJMPC9zcGFuPi48L3A+CgoJPGgzIGlkPSJlZzUiPkV4YW1wbGUgNTogT3ZlcnJp ZGluZyByZWdleGVzPC9oMz4KCjxwcmUgY2xhc3M9ImJsb2NrIj48Y29kZSBjbGFzcz0iYmxv Y2siPiZsdDt0eHA6c21kX3FyX2NvZGUKICAgICB0eXBlPSZxdW90O2Jvb2ttYXJrJnF1b3Q7 IGRlbGltPSZxdW90OyMmcXVvdDsKICAgICB2YWxpZGF0ZT0mcXVvdDt0aXRsZSwgdXJsIyVe KGZpbGU6Ly98aHR0cDovL3xmdHA6Ly8pLiskJSZxdW90OwogICAgIGRhdGE9JnF1b3Q7Qm9v a21hcmsgbWUgIyBmdHA6Ly9zdGVmZGF3c29uLmNvbSZxdW90OyAvJmd0Owo8L2NvZGU+PC9w cmU+CgoJPHA+QSBmZXcgdGhpbmdzIHRvIG5vdGUgYWJvdXQgdGhpcyBvbmU6PC9wPgoKCTx1 bD4KCQk8bGk+VGhlIGRlbGltaXRlciBoYXMgYmVlbiBjaGFuZ2VkIGJlY2F1c2UgdGhlIHJl Z3VsYXIgZXhwcmVzc2lvbiB1c2VzIHBpcGUgc3ltYm9scyBpbiBpdHMgZGVmaW5pdGlvbjwv bGk+CgkJPGxpPlRoZSB0aXRsZSBpcyBzdGlsbCBiZWluZyB2YWxpZGF0ZWQsIGFuZCB3aWxs IHVzZSB0aGUgYnVpbHQtaW4gcmVndWxhciBleHByZXNzaW9uPC9saT4KCQk8bGk+VGhlICYj ODIxNjt1cmwmIzgyMTc7IHJlZ2V4IGlzIGdvaW5nIHRvIGJlIHZhbGlkYXRlZCB1c2luZyB0 aGUgZ2l2ZW4gcmVnZXggPHN0cm9uZz5pbmNsdWRpbmcgc3RhcnQvZW5kIGRlbGltaXRlcnM8 L3N0cm9uZz4uIE5vcm1hbGx5IHdlJiM4MjE3O2QgdXNlIGEgPGNvZGU+LzwvY29kZT4gYnV0 IGluIHRoaXMgY2FzZSB3ZSBoYXZlIGNob3NlbiA8Y29kZT4lPC9jb2RlPiBhcyB0aGUgc3Rh cnQvZW5kIGNoYXJhY3RlciBiZWNhdXNlIHdlJiM4MjE3O3JlIHVzaW5nIDxjb2RlPi88L2Nv ZGU+cyBpbiB0aGUgcmVnZXggaXRzZWxmLCB3aGljaCBtZWFucyB3ZSBkb24mIzgyMTc7dCBo YXZlIHRvIGVzY2FwZSB0aGVtPC9saT4KCTwvdWw+CgoJPGgyPkNoYW5nZWxvZzwvaDI+CgoJ PHA+MzEgTWFyIDExIHwgMC4xMCB8IEluaXRpYWwgcHVibGljIHJlbGVhc2U8YnIgLz4KMDIg QXByIDExIHwgMC4yMCB8IEFkZGVkIDxjb2RlPnRpdGxlPC9jb2RlPiBhdHRyaWJ1dGUgZm9y IHRoZSA8Y29kZT4mbHQ7aW1nJmd0OzwvY29kZT4gdGFnIDsgYWRkZWQgdmNhcmQgdHlwZSAo dGhhbmtzIGdvbWVkaWEpIDsgYWRkZWQgPGNvZGU+dmFsaWRhdGU8L2NvZGU+IGFuZCA8Y29k ZT52YWxpZGVsaW08L2NvZGU+IHRvIGFsbG93IHJlZ2V4IG92ZXJyaWRlcyA7IGZpeGVkIHVy bCByZWdleCA7IGltcHJvdmVkIGVycm9yIHJlcG9ydGluZyA7IHBlcm1pdHRlZCA8Y29kZT5k ZWJ1ZzwvY29kZT4gdG8gYWlkIGluIHRyYWNraW5nIGRvd24gcmVnZXggLyB2YWxpZGF0aW9u IGVycm9yczxiciAvPgowNCBBcHIgMTEgfCAwLjMwIHwgV3JvdGUgbW9yZSBmbGV4aWJsZSwg Y3VzdG9tIGludGVyZmFjZSB0byBHb29nbGUgQ2hhcnRzIDxzcGFuIGNsYXNzPSJjYXBzIj5B UEk8L3NwYW4+IDsgYWRkZWQgPGNvZGU+bGF5b3V0PC9jb2RlPiwgPGNvZGU+dHJhbnNmb3Jt PC9jb2RlPiBhbmQgPGNvZGU+cHJlZml4PC9jb2RlPiBhdHRyaWJ1dGVzIDsgaW1wcm92ZWQg PGNvZGU+dmFsaWRhdGU8L2NvZGU+IGF0dHJpYnV0ZTxiciAvPgowNSBBcHIgMTEgfCAwLjMx IHwgRG91YmxlLXF1b3RlcyBub3Qgc2luZ2xlIHF1b3RlcyBmb3IgcHJvcGVyIGJhY2tzbGFz aGluZyA7IGZpeGVkIGNhbGxiYWNrIHdhcm5pbmcgd2hlbiBubyBwbHVnaW4gY2FsbGJhY2tz IGRlZmluZWQgKGJvdGggdGhhbmtzIGdvbWVkaWEpPC9wPgoKPC9kaXY+CjwhLS0gKioqIEJF R0lOIFBMVUdJTiBDU1MgKioqIC0tPgo8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgojc21kX2hl bHAgeyBsaW5lLWhlaWdodDoxLjUgO30KI3NtZF9oZWxwIGNvZGUgeyBmb250LXdlaWdodDpi b2xkOyBmb250OiAxMDUlLzEzMCUgIkNvdXJpZXIgTmV3IiwgY291cmllciwgbW9ub3NwYWNl OyBiYWNrZ3JvdW5kLWNvbG9yOiAjZjBlNjhjOyBjb2xvcjojMzMzOyB9CiNzbWRfaGVscCBj b2RlLmJsb2NrIHsgZm9udC13ZWlnaHQ6bm9ybWFsOyBib3JkZXI6MXB4IGRvdHRlZCAjOTk5 OyBkaXNwbGF5OmJsb2NrOyBtYXJnaW46MTBweCAxMHB4IDIwcHg7IHBhZGRpbmc6MTBweDsg fQojc21kX2hlbHAgaDEgeyBmb250OiAyMHB4IEdlb3JnaWEsIHNhbnMtc2VyaWY7IG1hcmdp bjogMDsgdGV4dC1hbGlnbjogY2VudGVyOyB9CiNzbWRfaGVscCBoMiB7IGJvcmRlci1ib3R0 b206IDFweCBzb2xpZCBibGFjazsgcGFkZGluZzoxMHB4IDAgMDsgZm9udDogMTdweCBHZW9y Z2lhLCBzYW5zLXNlcmlmOyB9CiNzbWRfaGVscCBoMyB7IGZvbnQ6IGJvbGQgMTJweCBBcmlh bCwgc2Fucy1zZXJpZjsgbGV0dGVyLXNwYWNpbmc6IDFweDsgbWFyZ2luOiAxMHB4IDAgMDsg dGV4dC1kZWNvcmF0aW9uOnVuZGVybGluZTt9CiNzbWRfaGVscCBoNCB7IGZvbnQ6IGJvbGQg MTFweCBBcmlhbCwgc2Fucy1zZXJpZjsgbGV0dGVyLXNwYWNpbmc6IDFweDsgbWFyZ2luOiAx MHB4IDAgMCA7dGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTsgfQojc21kX2hlbHAgLmF0bm0g eyBmb250LXdlaWdodDpib2xkOyB9CiNzbWRfaGVscCAubWFuZCB7IGJhY2tncm91bmQ6I2Vl ZTsgYm9yZGVyOjFweCBkb3R0ZWQgIzk5OTsgfQojc21kX2hlbHAgdGFibGUgeyB3aWR0aDo5 MCU7IHRleHQtYWxpZ246Y2VudGVyOyBwYWRkaW5nLWJvdHRvbToxZW07IGJvcmRlci1jb2xs YXBzZTpjb2xsYXBzZTsgfQojc21kX2hlbHAgdGhlYWQgeyBib3JkZXItYm90dG9tOmRvdWJs ZTsgfQojc21kX2hlbHAgdGQsICNzbWRfaGVscCB0aCB7IGJvcmRlcjoxcHggc29saWQgIzk5 OTsgcGFkZGluZzouNWVtOyB9CiNzbWRfaGVscCB1bCB7IGxpc3Qtc3R5bGUtdHlwZTpzcXVh cmU7IH0KI3NtZF9oZWxwIC5pbXBvcnRhbnQgeyBjb2xvcjpyZWQ7IH0KI3NtZF9oZWxwIGxp IHsgbWFyZ2luOjVweCAyMHB4IDVweCAzMHB4OyB9CiNzbWRfaGVscCAuYnJlYWsgeyBtYXJn aW4tdG9wOjVweDsgfQo8L3N0eWxlPgo8IS0tICoqKiBFTkQgUExVR0lOIENTUyAqKiogLS0+ CiI7czozOiJtZDUiO3M6MzI6ImMxNzkzM2M4NWE1YmQyY2ZjZGNmNTE3NWFlZWQ3YjM3Ijt9