# Name: smd_featured v0.41 # Type: Admin/Public side plugin # Quickly label and display featured articles for your site's home / landing pages # 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: # ..................................................................... YToxMTp7czo0OiJuYW1lIjtzOjEyOiJzbWRfZmVhdHVyZWQiO3M6NjoiYXV0aG9yIjtzOjEx OiJTdGVmIERhd3NvbiI7czoxMDoiYXV0aG9yX3VyaSI7czoyMjoiaHR0cDovL3N0ZWZkYXdz b24uY29tLyI7czo3OiJ2ZXJzaW9uIjtzOjQ6IjAuNDEiO3M6MTE6ImRlc2NyaXB0aW9uIjtz OjgwOiJRdWlja2x5IGxhYmVsIGFuZCBkaXNwbGF5IGZlYXR1cmVkIGFydGljbGVzIGZvciB5 b3VyIHNpdGUncyBob21lIC8gbGFuZGluZyBwYWdlcyI7czo0OiJjb2RlIjtzOjQwNDQxOiIv KioNCiAqIHNtZF9mZWF0dXJlZA0KICoNCiAqIEEgVGV4dHBhdHRlcm4gQ01TIHBsdWdpbiBm b3IgcGltcGluZyB5b3VyIGFydGljbGVzIG9uIGxhbmRpbmcgcGFnZXMuDQogKg0KICogQGF1 dGhvciBTdGVmIERhd3Nvbg0KICogQGxpbmsgICBodHRwOi8vc3RlZmRhd3Nvbi5jb20vDQog Ki8NCmlmIChAdHhwaW50ZXJmYWNlID09ICdhZG1pbicpIHsNCglnbG9iYWwgJHNtZF9mZWF0 dXJlZF9ldmVudCwgJHNtZF9mZWF0dXJlZF9zdHlsZXMsICRzbWRfZmVhdHVyZWRfcHJlZl9w cml2czsNCg0KCSRzbWRfZmVhdHVyZWRfZXZlbnQgPSAnc21kX2ZlYXR1cmVkJzsNCgkkc21k X2ZlYXR1cmVkX3ByaXZzID0gZ2V0X3ByZWYoJ3NtZF9mZWF0dXJlZF9wcml2cycsICcxLDIn KTsNCgkkc21kX2ZlYXR1cmVkX3ByZWZfcHJpdnMgPSBhcnJheSgNCgkJJ2FsbCcgPT4gYXJy YXkoDQoJCQknc21kX2ZlYXR1cmVkX2Rpc3BsYXknLA0KCQkJJ3NtZF9mZWF0dXJlZF9ib3hf c2l6ZScsDQoJCQknc21kX2ZlYXR1cmVkX3NvcnQnLA0KCQkpLA0KCQknMScgPT4gYXJyYXko DQoJCQknc21kX2ZlYXR1cmVkX3NlY3Rpb25fbGlzdCcsDQoJCQknc21kX2ZlYXR1cmVkX3Rl eHRpbGUnLA0KCQkJJ3NtZF9mZWF0dXJlZF9zaG93X3VpJywNCgkJKSwNCgkpOw0KCSRzbWRf ZmVhdHVyZWRfc3R5bGVzID0gYXJyYXkoDQoJCSdjb21tb24nID0+DQogICAgICAgICAnI3Nt ZF9hbGwgaDMgeyBtYXJnaW46MTVweCAwOyB9DQogICAgICAgICAjc21kX2ZlYXR1cmVkX2Nw YW5lbCBmb3JtIGZpZWxkc2V0IHsgYm9yZGVyOjA7IH0NCiAgICAgICAgICNzbWRfZmVhdHVy ZWRfY3BhbmVsIGZvcm0gbGVnZW5kIHsgbWFyZ2luOjEycHggMDsgfQ0KICAgICAgICAgLmZp ZWxkc2V0X2lubmVyIHsgYmFja2dyb3VuZC1pbWFnZTpub25lOyBiYWNrZ3JvdW5kLWNvbG9y OnRyYW5zcGFyZW50OyBib3JkZXI6MDsgfQ0KICAgICAgICAgI3NtZF9mZWF0dXJlZF9jcGFu ZWwgc2VsZWN0LCAjc21kX2ZlYXR1cmVkX2NwYW5lbCBpbnB1dFt0eXBlPSJ0ZXh0Il0geyBt YXJnaW4tYm90dG9tOjEwcHg7IH0NCiAgICAgICAgICNzbWRfZmVhdHVyZWRfY3BhbmVsIGlu cHV0W3R5cGU9InRleHQiXSB7IHBhZGRpbmc6M3B4OyB9DQogICAgICAgICAjY29udHJvbCBp bnB1dCwgI2NvbnRyb2wgc2VsZWN0IHsgbWFyZ2luOjA7IH0NCiAgICAgICAgIC5zbWRfaGlk ZGVuIHsgZGlzcGxheTpub25lOyB9DQogICAgICAgICAuc21kX2ZlYXR1cmVkIHsgYmFja2dy b3VuZC1jb2xvcjojZTJkZmNlOyBwb3NpdGlvbjpyZWxhdGl2ZTsgfQ0KICAgICAgICAgLnNt ZF9mZWF0dXJlZCBhIHsgZm9udC13ZWlnaHQ6IGJvbGQ7IGNvbG9yOiM4MDU1MWU7IH0NCiAg ICAgICAgICNzbWRfZmVhdHVyZWRfY29udHJvbF9wYW5lbCB7IG1hcmdpbjowIGF1dG8gMjBw eDsgd2lkdGg6NjAwcHg7IH0NCiAgICAgICAgICNzbWRfZmVhdHVyZWRfcHJlZnMgeyBtYXJn aW4tbGVmdDoxMnB4OyB9DQogICAgICAgICAuc21kX2ZlYXR1cmVkX3NhdmUgeyBmbG9hdDpy aWdodDsgfQ0KICAgICAgICAgLnNtZF9mZWF0dXJlZF9zdWJwYW5lbCB7IGZsb2F0OmxlZnQ7 IH0NCiAgICAgICAgIC5zbWRfZmVhdHVyZWRfdGFibGUgeyB3aWR0aDo4MDBweDsgbWFyZ2lu OjAgYXV0byA4MHB4OyB9DQogICAgICAgICAuc21kX2NsZWFyIHsgY2xlYXI6Ym90aDsgfQ0K ICAgICAgICAgLnNtZF9mZWF0dXJlZF90YWJsZSBkaXYgeyBmbG9hdDpsZWZ0OyB3aWR0aDp7 Ynd9cHg7IGhlaWdodDp7Ymh9cHg7IGJvcmRlcjoxcHggc29saWQgI2FhYTsgcGFkZGluZzo0 cHg7IG92ZXJmbG93OmhpZGRlbjsgfQ0KICAgICAgICAgLnNtZF9mZWF0X2VkYXJ0IHsgcG9z aXRpb246YWJzb2x1dGU7IHJpZ2h0OjVweDsgYm90dG9tOjNweDsgfQ0KICAgICAgICAgLnNt ZF9mZWF0X2VkcG9zIHsgcG9zaXRpb246YWJzb2x1dGU7IGxlZnQ6MnB4OyBib3R0b206MnB4 OyBmb250LXNpemU6NzUlOyB3aWR0aDo3ZW07fScsDQoJCSdsb2FkaW5nJyA9Pg0KICAgICAg ICAgJ2NvbG9yOiM4MDU1MWU7IHRleHQtYWxpZ246Y2VudGVyOyBmb250LXNpemU6MjAwJTsg Zm9udC1zdHlsZTppdGFsaWM7IHdpZHRoOjUwMHB4OyBoZWlnaHQ6MTAwcHg7IG1hcmdpbjow IGF1dG87IGJvcmRlcjoxcHggc29saWQgIzc3NzsgYmFja2dyb3VuZDojZTJkZmNlO2Rpc3Bs YXk6YmxvY2snLA0KCQknbG9hZGluZ19kaXYnID0+DQogICAgICAgICAnbWFyZ2luLXRvcDoz MHB4OycsDQoJKTsNCg0KCWFkZF9wcml2cygkc21kX2ZlYXR1cmVkX2V2ZW50LCAkc21kX2Zl YXR1cmVkX3ByaXZzKTsNCglyZWdpc3Rlcl90YWIoImNvbnRlbnQiLCAkc21kX2ZlYXR1cmVk X2V2ZW50LCBzbWRfZmVhdHVyZWRfZ1R4dCgndGFiX25hbWUnKSk7DQoJcmVnaXN0ZXJfY2Fs bGJhY2soJ3NtZF9mZWF0dXJlZF9tYW5hZ2UnLCAkc21kX2ZlYXR1cmVkX2V2ZW50KTsNCgly ZWdpc3Rlcl9jYWxsYmFjaygnc21kX2ZlYXR1cmVkX3dlbGNvbWUnLCAncGx1Z2luX2xpZmVj eWNsZS5zbWRfZmVhdHVyZWQnKTsNCn0NCg0KaWYgKCFkZWZpbmVkKCdTTURfRkVBVCcpKSB7 DQoJZGVmaW5lKCJTTURfRkVBVCIsICdzbWRfZmVhdHVyZWQnKTsNCn0NCg0KLy8gKioqKioq KioqKg0KLy8gQURNSU4gU0lERQ0KLy8gKioqKioqKioqKg0KLy8gLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tDQpmdW5jdGlvbiBzbWRfZmVhdHVyZWRfbWFuYWdlKCRldnQsICRzdHApIHsN CglpZiAoJHN0cCA9PSAnc2F2ZV9wYW5lX3N0YXRlJykgew0KCQlzbWRfZmVhdHVyZWRfc2F2 ZV9wYW5lX3N0YXRlKCk7DQoJfSBlbHNlIHsNCgkJaWYoISRzdHAgb3IgIWluX2FycmF5KCRz dHAsIGFycmF5KA0KCQkJCSdzbWRfZmVhdHVyZWRfdGFibGVfaW5zdGFsbCcsDQoJCQkJJ3Nt ZF9mZWF0dXJlZF90YWJsZV9yZW1vdmUnLA0KCQkJCSdzbWRfZmVhdHVyZWRfcHJlZnNhdmUn LA0KCQkJCSdzbWRfZmVhdHVyZWRfc2F2ZScsDQoJCQkJJ3NtZF9mZWF0dXJlZF9zdG9yZV9w b3MnLA0KCQkJCSdzbWRfZmVhdHVyZWRfdGFnaXQnLA0KCQkJCSdzbWRfZmVhdHVyZWRfY2hh bmdlX3BhZ2VieScsDQoJCQkpKSkgew0KCQkJc21kX2ZlYXR1cmVkX2xpc3QoJycpOw0KCQl9 IGVsc2UgJHN0cCgpOw0KCX0NCn0NCg0KLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQpm dW5jdGlvbiBzbWRfZmVhdHVyZWRfd2VsY29tZSgkZXZ0LCAkc3RwKSB7DQoJJG1zZyA9ICcn Ow0KCXN3aXRjaCAoJHN0cCkgew0KCQljYXNlICdpbnN0YWxsZWQnOg0KCQkJc21kX2ZlYXR1 cmVkX3RhYmxlX2luc3RhbGwoMCk7DQoJCQkvLyBSZW1vdmUgc29tZSBvZiB0aGUgcGVyLXVz ZXIgcHJlZnMgb24gdXBncmFkZSBmcm9tIHYwLjN4IHRvIHYwLjQwDQoJCQlzYWZlX2RlbGV0 ZSAoJ3R4cF9wcmVmcycsICJuYW1lIElOICgnc21kX2ZlYXR1cmVkX3RleHRpbGUnKSBBTkQg dXNlcl9uYW1lICE9ICcnIik7DQoJCQkkbXNnID0gJ1RoYW5rcyBmb3IgaW5zdGFsbGluZyBz bWRfZmVhdHVyZWQuIFBsZWFzZSByZWFkIHRoZSBkb2NzIDotKSc7DQoJCQlicmVhazsNCgkJ Y2FzZSAnZGVsZXRlZCc6DQoJCQlzbWRfZmVhdHVyZWRfdGFibGVfcmVtb3ZlKDApOw0KCQkJ YnJlYWs7DQoJfQ0KCXJldHVybiAkbXNnOw0KfQ0KDQovLyAtLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0NCmZ1bmN0aW9uIHNtZF9mZWF0dXJlZF9saXN0KCRtc2c9JycpIHsNCglnbG9iYWwg JHNtZF9mZWF0dXJlZF9ldmVudCwgJHNtZF9mZWF0dXJlZF9saXN0X3BhZ2VieSwgJHNtZF9m ZWF0dXJlZF9zdHlsZXMsICR0eHBfdXNlciwgJHNtZF9mZWF0dXJlZF9wcmVmX3ByaXZzOw0K DQoJcGFnZXRvcChzbWRfZmVhdHVyZWRfZ1R4dCgndGFiX25hbWUnKSwgJG1zZyk7DQoJZXh0 cmFjdChncHNhKGFycmF5KCdzbWRfZmVhdF9pZCcsICdzbWRfZmVhdF9sYWJlbCcsICdzbWRf ZmVhdF9zZWFyY2hrZWVwJywgJ3NtZF9mZWF0X2ZpbHRrZWVwJywgJ3BhZ2UnKSkpOw0KDQoJ aWYgKHNtZF9mZWF0dXJlZF90YWJsZV9leGlzdCgxKSkgew0KCQkkZmVhdGxpc3QgPSBzYWZl X3Jvd3MoJyonLCBTTURfRkVBVCwgJzE9MScpOw0KCQkkZmVhdGxpc3QgPSBlbXB0eSgkZmVh dGxpc3QpID8gYXJyYXkoKSA6ICRmZWF0bGlzdDsNCgkJJGVkaXRuYW1lID0gJGZlYXRfbGFi ZWwgPSAkZmVhdF90aXRsZSA9ICRmZWF0X2Rlc2MgPSAnJzsNCg0KCQkkZXR5cGVzID0gJGZ0 eXBlcyA9ICRmbGlzdCA9IGFycmF5KCk7DQoJCSRldHlwZXNbJyddID0gc21kX2ZlYXR1cmVk X2dUeHQoJ3VubGFiZWxsZWQnKTsNCgkJJGZ0eXBlc1snc21kX3VubGFiZWxsZWQnXSA9IHNt ZF9mZWF0dXJlZF9nVHh0KCd1bmxhYmVsbGVkJyk7DQoJCWZvcmVhY2ggKCRmZWF0bGlzdCBh cyAkaXRlbSkgew0KCQkJaWYgKGlzc2V0KCRpdGVtWydsYWJlbCddKSAmJiAhZW1wdHkoJGl0 ZW1bJ2xhYmVsJ10pKSB7DQoJCQkJJGZ0eXBlc1skaXRlbVsnbGFiZWwnXV0gPSAkZXR5cGVz WyRpdGVtWydsYWJlbCddXSA9ICRpdGVtWydsYWJlbCddOw0KCQkJfQ0KCQkJJGZsaXN0WyRp dGVtWydmZWF0X2lkJ11dID0gYXJyYXkoDQoJCQkJJ2xhYmVsJyA9PiAkaXRlbVsnbGFiZWwn XSwNCgkJCQkncG9zaXRpb24nID0+ICRpdGVtWydmZWF0X3Bvc2l0aW9uJ10sDQoJCQkJJ3Rp dGxlJyA9PiAkaXRlbVsnZmVhdF90aXRsZSddLA0KCQkJCSd0aXRsZV9odG1sJyA9PiAkaXRl bVsnZmVhdF90aXRsZV9odG1sJ10sDQoJCQkJJ2Rlc2NyaXB0aW9uJyA9PiAkaXRlbVsnZGVz Y3JpcHRpb24nXSwNCgkJCQknZGVzY19odG1sJyA9PiAkaXRlbVsnZGVzY19odG1sJ10NCgkJ CSk7DQoJCX0NCg0KCQkkZmVhdGxpc3QgPSAkZmxpc3Q7DQoNCgkJJHByaXZzID0gc2FmZV9m aWVsZCgncHJpdnMnLCAndHhwX3VzZXJzJywgIm5hbWUgPSAnIi5kb1NsYXNoKCR0eHBfdXNl cikuIiciKTsNCgkJJHJpZ2h0cyA9IGFycmF5X2tleV9leGlzdHMoJHByaXZzLCAkc21kX2Zl YXR1cmVkX3ByZWZfcHJpdnMpOw0KDQoJCS8vIEdldCBhZGRpdGlvbmFsIGZpbHRlcmluZyBm cm9tIGhpZGRlbiBwcmVmcw0KCQkkd2hlcmUgPSBhcnJheSgnMT0xJyk7DQoJCSRzZWNsaXN0 ID0gZ2V0X3ByZWYoJ3NtZF9mZWF0dXJlZF9zZWN0aW9uX2xpc3QnLCAnJywgMSk7DQoJCWlm ICghJHNlY2xpc3QpIHsNCgkJCSRzZWNsaXN0ID0gZ3BzKCdzZWN0aW9uX2xpc3QnKTsNCgkJ fQ0KCQlpZiAoJHNlY2xpc3QpIHsNCgkJCSR3aGVyZVtdID0gIlNlY3Rpb24gSU4gKCciLmpv aW4oIicsJyIsIGRvX2xpc3QoJHNlY2xpc3QpKS4iJykiOw0KCQl9CQ0KCQkkd2hlcmVbXSA9 ICJTdGF0dXMgSU4gKDQsNSkiOw0KDQoJCSRvcmRlcmJ5ID0gZ2V0X3ByZWYoJ3NtZF9mZWF0 dXJlZF9zb3J0JywgJ1Bvc3RlZCBkZXNjJywgMSk7DQoJCSRvcmRlcnFyeSA9ICgkb3JkZXJi eSkgPyAnIE9SREVSIEJZICcuZG9TbGFzaCgkb3JkZXJieSkgOiAnJzsNCgkJJGN1cnJPcmRl ciA9IGV4cGxvZGUoJyAnLCAkb3JkZXJieSk7DQoJCSRjdXJyT3JkZXJbMF0gPSAoaXNzZXQo JGN1cnJPcmRlclswXSkpID8gJGN1cnJPcmRlclswXSA6ICdQb3N0ZWQnOw0KCQkkY3Vyck9y ZGVyWzFdID0gKGlzc2V0KCRjdXJyT3JkZXJbMV0pKSA/ICRjdXJyT3JkZXJbMV0gOiAnZGVz Yyc7DQoJCSRkaXNwbGF5ID0gZ2V0X3ByZWYoJ3NtZF9mZWF0dXJlZF9kaXNwbGF5JywgJ2Fs bCcsIDEpOw0KDQoJCS8vIEdlbmVyYXRlIHRoZSBleHRyYSBjcml0ZXJpYSBpZiBpbiBsaXN0 IHZpZXcNCgkJaWYgKCRkaXNwbGF5PT0ncGFnaW5hdGVkJykgew0KCQkJaWYgKCRzbWRfZmVh dF9zZWFyY2hrZWVwKSB7DQoJCQkJJGl0ZW1zID0gZG9fbGlzdCgkc21kX2ZlYXRfc2VhcmNo a2VlcCwgJyAnKTsNCgkJCQkkaXRsaXN0ID0gYXJyYXkoKTsNCgkJCQlmb3JlYWNoICgkaXRl bXMgYXMgJGl0ZW0pIHsNCgkJCQkJaWYgKHRyaW0oJGl0ZW0pICE9ICcnKSB7DQoJCQkJCQkk aXRsaXN0W10gPSAiVGl0bGUgbGlrZSAnJSRpdGVtJSciOw0KCQkJCQl9DQoJCQkJfQ0KCQkJ CSR3aGVyZVtdID0gJygnLmpvaW4oJyBPUiAnLCAkaXRsaXN0KS4nKSc7DQoJCQl9DQoJCQlp ZiAoJHNtZF9mZWF0X2ZpbHRrZWVwKSB7DQoJCQkJJGxibCA9ICgkc21kX2ZlYXRfZmlsdGtl ZXAgPT0gJ3NtZF91bmxhYmVsbGVkJykgPyAnJyA6ICRzbWRfZmVhdF9maWx0a2VlcDsNCgkJ CQkkaWRzID0gc2FmZV9jb2x1bW4oJ2ZlYXRfaWQnLCBTTURfRkVBVCwgIkJJTkFSWSBsYWJl bCA9ICckbGJsJyIpOw0KCQkJCSR3aGVyZVtdID0gIklEIElOICgnIi5qb2luKCInLCciLCAk aWRzKS4iJykiOw0KCQkJfQ0KCQl9DQoNCgkJJHdoZXJlID0gam9pbignIEFORCAnLCAkd2hl cmUpOw0KCQkkdG90YWwgPSBzYWZlX2NvdW50KCd0ZXh0cGF0dGVybicsICR3aGVyZSk7DQoJ CSRkb19wYWcgPSAhJHNtZF9mZWF0X2ZpbHRrZWVwICYmICEkc21kX2ZlYXRfc2VhcmNoa2Vl cDsNCg0KCQkkbGltaXQgPSAoJGRpc3BsYXk9PSdwYWdpbmF0ZWQnICYmICRkb19wYWcpID8g bWF4KCRzbWRfZmVhdHVyZWRfbGlzdF9wYWdlYnksIDE1KSA6IDk5OTk5Ow0KCQlsaXN0KCRw YWdlLCAkb2Zmc2V0LCAkbnVtUGFnZXMpID0gcGFnZXIoJHRvdGFsLCAkbGltaXQsICRwYWdl KTsNCg0KCQkkcnMgPSBzYWZlX3Jvd3MoJyonLCAndGV4dHBhdHRlcm4nLCAkd2hlcmUuICRv cmRlcnFyeSAuICIgbGltaXQgJG9mZnNldCwgJGxpbWl0Iik7DQoJCSRvdXQgPSBhcnJheSgp Ow0KCQlmb3JlYWNoICgkcnMgYXMgJHJvdykgew0KCQkJJGZ0eXBlID0gaXNzZXQoJGZlYXRs aXN0WyRyb3dbJ0lEJ11dWydsYWJlbCddKSA/ICRmZWF0bGlzdFskcm93WydJRCddXVsnbGFi ZWwnXSA6ICcnOw0KCQkJJG91dFtdID0gYXJyYXkoJHJvd1snSUQnXSwgJHJvd1snVGl0bGUn XSwgJGZ0eXBlKTsNCgkJCWlmICgkc21kX2ZlYXRfaWQgJiYgJHJvd1snSUQnXSA9PSAkc21k X2ZlYXRfaWQpIHsNCgkJCQkkZWRpdG5hbWUgPSAkcm93WydUaXRsZSddOw0KCQkJCSRmZWF0 X2xhYmVsID0gJGZlYXRsaXN0WyRzbWRfZmVhdF9pZF1bJ2xhYmVsJ107DQoJCQkJJGZlYXRf dGl0bGUgPSAkZmVhdGxpc3RbJHNtZF9mZWF0X2lkXVsndGl0bGUnXTsNCgkJCQkkZmVhdF9w b3NpdGlvbiA9ICRmZWF0bGlzdFskc21kX2ZlYXRfaWRdWydwb3NpdGlvbiddOw0KCQkJCSRm ZWF0X2Rlc2MgPSBkb1N0cmlwKHN0cl9yZXBsYWNlKCdcclxuJywnDQonLCAkZmVhdGxpc3Rb JHNtZF9mZWF0X2lkXVsnZGVzY3JpcHRpb24nXSkpOyAvLyBIYWNraXNoIG5ld2xpbmUga2x1 ZGdlDQoJCQl9DQoJCQkvLyBBZGQgdGhlIHBvc2l0aW9uIHRvIHRoZSBtb3N0IHJlY2VudCBh cnJheSBlbnRyeQ0KCQkJaWYgKGlzc2V0KCRmZWF0bGlzdFskcm93WydJRCddXVsncG9zaXRp b24nXSkpIHsNCgkJCQkkb3V0W2NvdW50KCRvdXQpLTFdW10gPSAkZmVhdGxpc3RbJHJvd1sn SUQnXV1bJ3Bvc2l0aW9uJ107DQoJCQl9DQoJCX0NCg0KCQkvL1RPRE86IGkxOG4NCgkJJHNv cnRvcHRzID0gYXJyYXkoDQoJCQknUG9zdGVkJyA9PiAnUG9zdGVkJywNCgkJCSdFeHBpcmVz JyA9PiAnRXhwaXJ5JywNCgkJCSdMYXN0TW9kJyA9PiAnTW9kaWZpZWQnLA0KCQkJJ1RpdGxl JyA9PiAnVGl0bGUnLA0KCQkJJ1NlY3Rpb24nID0+ICdTZWN0aW9uJywNCgkJCSdDYXRlZ29y eTEnID0+ICdDYXRlZ29yeTEnLA0KCQkJJ0NhdGVnb3J5MicgPT4gJ0NhdGVnb3J5MicsDQoJ CSk7DQoJCSRzb3J0ZGlycyA9IGFycmF5KA0KCQkJJ2FzYycgPT4gJ0FzY2VuZGluZycsDQoJ CQknZGVzYycgPT4gJ0Rlc2NlbmRpbmcnLA0KCQkpOw0KCQkkZGlzcGxheW9wdHMgPSBhcnJh eSgNCgkJCSdhbGwnID0+ICdBbGwnLA0KCQkJJ3BhZ2luYXRlZCcgPT4gJ1BhZ2luYXRlZCcs DQoJCSk7DQoJCSR0ZXh0aWxlb25vZmYgPSBleHBsb2RlKCcsJywgZ2V0X3ByZWYoJ3NtZF9m ZWF0dXJlZF90ZXh0aWxlJywgJ3RpdGxlLGRlc2MnLCAxKSk7DQoJCSRzaG93b25vZmYgPSBl eHBsb2RlKCcsJywgZ2V0X3ByZWYoJ3NtZF9mZWF0dXJlZF9zaG93X3VpJywgJ2xhYmVsLHRp dGxlLGRlc2MnLCAxKSk7DQoJCSR0eHRfdHRsID0gaW5fYXJyYXkoJ3RpdGxlJywgJHRleHRp bGVvbm9mZik7DQoJCSR0eHRfZGVzYyA9IGluX2FycmF5KCdkZXNjJywgJHRleHRpbGVvbm9m Zik7DQoJCSRzaG93X2xibCA9IGluX2FycmF5KCdsYWJlbCcsICRzaG93b25vZmYpOw0KCQkk c2hvd190dGwgPSBpbl9hcnJheSgndGl0bGUnLCAkc2hvd29ub2ZmKTsNCgkJJHNob3dfZGVz YyA9IGluX2FycmF5KCdkZXNjJywgJHNob3dvbm9mZik7DQoJCSR1c2VfZWRpdCA9ICgkc2hv d19sYmwgfHwgJHNob3dfdHRsIHx8ICRzaG93X2Rlc2MpID8gJzEnIDogJzAnOw0KDQoJCSRz aXplcyA9IGRvX2xpc3QoZ2V0X3ByZWYoJ3NtZF9mZWF0dXJlZF9ib3hfc2l6ZScsICcxNTB4 NDAnLCAxKSwgJ3gnKTsNCgkJJHNpemVzWzBdID0gKGlzc2V0KCRzaXplc1swXSkgJiYgaXNf bnVtZXJpYygkc2l6ZXNbMF0pKSA/ICRzaXplc1swXSA6ICcxNTAnOw0KCQkkc2l6ZXNbMV0g PSAoaXNzZXQoJHNpemVzWzFdKSAmJiBpc19udW1lcmljKCRzaXplc1sxXSkpID8gJHNpemVz WzFdIDogJzQwJzsNCgkJJGRpc3BsYXlfanMgPSAoJGRpc3BsYXk9PSdhbGwnKSA/IDEgOiAw Ow0KCQkkc3R5bGVyZXBzID0gYXJyYXkoDQoJCQkne2J3fScgPT4gJHNpemVzWzBdLA0KCQkJ J3tiaH0nID0+ICRzaXplc1sxXSwNCgkJKTsNCg0KCQllY2hvICc8ZGl2IGlkPSJzbWRfbG9h ZGluZyIgc3R5bGU9IicuJHNtZF9mZWF0dXJlZF9zdHlsZXNbJ2xvYWRpbmcnXS4nIj48ZGl2 IHN0eWxlPSInLiRzbWRfZmVhdHVyZWRfc3R5bGVzWydsb2FkaW5nX2RpdiddLiciPkxvYWRp bmcuLi48L2Rpdj48L2Rpdj4nOw0KCQllY2hvICc8ZGl2IGlkPSJzbWRfY29udGFpbmVyIiBz dHlsZT0iZGlzcGxheTpub25lOyI+JzsNCgkJZWNobyAnPGZpZWxkc2V0IGlkPSJzbWRfZmVh dHVyZWRfY29udHJvbF9wYW5lbCIgY2xhc3M9InR4cC1jb250cm9sLXBhbmVsIj48bGVnZW5k IGNsYXNzPSJwbGFpbiBsZXZlcicuKGdldF9wcmVmKCdwYW5lX3NtZF9mZWF0dXJlZF9jcGFu ZWxfdmlzaWJsZScpID8gJyBleHBhbmRlZCcgOiAnJykuJyI+PGEgaHJlZj0iI3NtZF9mZWF0 dXJlZF9jcGFuZWwiPicuc21kX2ZlYXR1cmVkX2dUeHQoJ2NvbnRyb2xfcGFuZWwnKS4nPC9h PjwvbGVnZW5kPic7DQoJCWVjaG8gJzxkaXYgaWQ9InNtZF9mZWF0dXJlZF9jcGFuZWwiIGNs YXNzPSJ0b2dnbGUiIHN0eWxlPSJkaXNwbGF5OicuKGdldF9wcmVmKCdwYW5lX3NtZF9mZWF0 dXJlZF9jcGFuZWxfdmlzaWJsZScpID8gJ2Jsb2NrJyA6ICdub25lJykuJyI+JzsNCg0KCQll Y2hvICc8Zm9ybSBpZD0ic21kX2ZlYXRfZmlsdGZvcm0iIGFjdGlvbj0iaW5kZXgucGhwIiBt ZXRob2Q9InBvc3QiIG9uc3VibWl0PSJzbWRfZmVhdHVyZWRfZWRpdGtlZXAoMCk7cmV0dXJu IGZhbHNlOyI+JzsNCgkJZWNobyAnPGZpZWxkc2V0IGlkPSJzbWRfZmVhdHVyZWRfZmlsdCIg Y2xhc3M9InNtZF9mZWF0dXJlZF9zdWJwYW5lbCI+PGxlZ2VuZD4nLnNtZF9mZWF0dXJlZF9n VHh0KCgoJGRpc3BsYXk9PSdhbGwnKSA/ICdzZWFyY2hfbGl2ZScgOiAnc2VhcmNoX3N0YW5k YXJkJykpLic8L2xlZ2VuZD4nOw0KCQllY2hvICc8bGFiZWwgZm9yPSJzbWRfZmVhdF9zZWFy Y2giPicuc21kX2ZlYXR1cmVkX2dUeHQoJ2J5X25hbWUnKS4nPC9sYWJlbD4nLmZJbnB1dCgn dGV4dCcsICdzbWRfZmVhdF9zZWFyY2gnLCAkc21kX2ZlYXRfc2VhcmNoa2VlcCwgJycsICcn LCAnJywgJycsICcnLCAnc21kX2ZlYXRfc2VhcmNoJykuDQoJCQkoKCRmdHlwZXMpID8gJzxk aXYgaWQ9InNtZF9mZWF0dXJlZF9ieWxhYmVsIj4nLnNtZF9mZWF0dXJlZF9nVHh0KCdieV9s YWJlbCcpLnNlbGVjdElucHV0KCdzbWRfZmVhdF9maWx0JywgJGZ0eXBlcywgJHNtZF9mZWF0 X2ZpbHRrZWVwLCAxLCAnJywgJ3NtZF9mZWF0X2ZpbHQnKS4nPC9kaXY+JyA6ICcnKTsNCgkJ ZWNobyAoJGRpc3BsYXk9PSdwYWdpbmF0ZWQnKSA/IGZJbnB1dCgnc3VibWl0JywgJycsIGdU eHQoJ2dvJyksICdzbWFsbGVyYm94IHNtZF9mZWF0dXJlZF9zYXZlJywgJycsICdyZXR1cm4g c21kX2ZlYXR1cmVkX2VkaXRrZWVwKDApOycpIDogJyc7DQoJCWVjaG8gZUlucHV0KCRzbWRf ZmVhdHVyZWRfZXZlbnQpLnNJbnB1dCgnc21kX2ZlYXR1cmVkX2xpc3QnKTsNCgkJZWNobyAn PC9maWVsZHNldD4nOw0KCQllY2hvICc8L2Zvcm0+JzsNCg0KCQllY2hvICc8Zm9ybSBpZD0i c21kX2ZlYXRfcHJlZnMiIGFjdGlvbj0iaW5kZXgucGhwIiBtZXRob2Q9InBvc3QiPic7DQoJ CWVjaG8gJzxmaWVsZHNldCBpZD0ic21kX2ZlYXR1cmVkX3ByZWZzIiBjbGFzcz0ic21kX2Zl YXR1cmVkX3N1YnBhbmVsIj48bGVnZW5kPicuc21kX2ZlYXR1cmVkX2dUeHQoJ3ByZWZzJyku JzwvbGVnZW5kPic7DQoNCgkJZWNobyAnPGRpdiBjbGFzcz0ic21kX2ZlYXR1cmVkX3ByZWYi Pic7DQoJCWVjaG8gJzxsYWJlbCBmb3I9InNtZF9mZWF0X2Rpc3BsYXkiPicuc21kX2ZlYXR1 cmVkX2dUeHQoJ3ByZWZfZGlzcGxheScpLic8L2xhYmVsPicuDQoJCQlzZWxlY3RJbnB1dCgn c21kX2ZlYXRfZGlzcGxheScsICRkaXNwbGF5b3B0cywgJGRpc3BsYXksICcnLCAnJywgJ3Nt ZF9mZWF0X2Rpc3BsYXknKTsNCgkJZWNobyAnPC9kaXY+JzsNCg0KCQllY2hvICc8ZGl2IGNs YXNzPSJzbWRfZmVhdHVyZWRfcHJlZiI+JzsNCgkJZWNobyAnPGxhYmVsIGZvcj0ic21kX2Zl YXRfc29ydCI+Jy5zbWRfZmVhdHVyZWRfZ1R4dCgncHJlZl9zb3J0JykuJzwvbGFiZWw+Jy4N CgkJCXNlbGVjdElucHV0KCdzbWRfZmVhdF9zb3J0JywgJHNvcnRvcHRzLCAkY3Vyck9yZGVy WzBdLCAnJywgJycsICdzbWRfZmVhdF9zb3J0JykuDQoJCQlzZWxlY3RJbnB1dCgnc21kX2Zl YXRfc29ydGRpcicsICRzb3J0ZGlycywgJGN1cnJPcmRlclsxXSwgJycsICcnLCAnc21kX2Zl YXRfc29ydGRpcicpOw0KCQllY2hvICc8L2Rpdj4nOw0KDQoJCWVjaG8gJzxkaXYgY2xhc3M9 InNtZF9mZWF0dXJlZF9wcmVmIj4nOw0KCQllY2hvICc8ZGl2IGlkPSJzbWRfZmVhdF9kaXNw bGF5X2JveCI+JzsNCgkJZWNobyAnPGxhYmVsIGZvcj0ic21kX2ZlYXRfYm94c2l6ZSI+Jy5z bWRfZmVhdHVyZWRfZ1R4dCgncHJlZl9ib3hzaXplJykuJzwvbGFiZWw+Jy4NCgkJCWZJbnB1 dCgndGV4dCcsICdzbWRfZmVhdF9ib3hfeCcsICRzaXplc1swXSwgJycsICcnLCAnJywgJzMn LCAnJywgJ3NtZF9mZWF0X2JveHNpemUnKS4NCgkJCXNtZF9mZWF0dXJlZF9nVHh0KCdwcmVm X2JveHNpemVieScpLmZJbnB1dCgndGV4dCcsICdzbWRfZmVhdF9ib3hfeScsICRzaXplc1sx XSwgJycsICcnLCAnJywgJzMnKTsNCgkJZWNobyAnPC9kaXY+JzsNCg0KCQlpZiAoJHJpZ2h0 cykgew0KCQkJZWNobyAnPGRpdiBjbGFzcz0ic21kX2ZlYXR1cmVkX3ByZWYgc21kX2ZlYXRf c2hvd191aSI+JzsNCgkJCWVjaG8gJzxsYWJlbCBmb3I9InNtZF9mZWF0X3Nob3dfdWkiPicu c21kX2ZlYXR1cmVkX2dUeHQoJ3Nob3dfdWknKS4nPC9sYWJlbD4nOw0KCQkJZWNobyBjaGVj a2JveCgnc21kX2ZlYXRfc2hvd191aVtdJywgJ2xhYmVsJywgJHNob3dfbGJsLCAnJywgJ3Nt ZF9mZWF0X3Nob3dfbGFiZWwnKS5zcC5zbWRfZmVhdHVyZWRfZ1R4dCgnbGFiZWwnKTsNCgkJ CWVjaG8gY2hlY2tib3goJ3NtZF9mZWF0X3Nob3dfdWlbXScsICd0aXRsZScsICRzaG93X3R0 bCwgJycsICdzbWRfZmVhdF9zaG93X3RpdGxlJykuc3Auc21kX2ZlYXR1cmVkX2dUeHQoJ3Rp dGxlJyk7DQoJCQllY2hvIGNoZWNrYm94KCdzbWRfZmVhdF9zaG93X3VpW10nLCAnZGVzYycs ICRzaG93X2Rlc2MsICcnLCAnc21kX2ZlYXRfc2hvd19kZXNjJykuc3Auc21kX2ZlYXR1cmVk X2dUeHQoJ2Rlc2MnKTsNCgkJCWVjaG8gJzwvZGl2Pic7DQoNCgkJCWVjaG8gJzxkaXYgY2xh c3M9InNtZF9mZWF0dXJlZF9wcmVmIHNtZF9mZWF0X3RleHRpbGUiPic7DQoJCQllY2hvICc8 bGFiZWwgZm9yPSJzbWRfZmVhdF90ZXh0aWxlIj4nLnNtZF9mZWF0dXJlZF9nVHh0KCd0ZXh0 aWxlJykuJzwvbGFiZWw+JzsNCgkJCWVjaG8gY2hlY2tib3goJ3NtZF9mZWF0X3RleHRpbGVb XScsICd0aXRsZScsICR0eHRfdHRsLCAnJywgJ3NtZF9mZWF0X3RleHRpbGVfdGl0bGUnKS5z cC5zbWRfZmVhdHVyZWRfZ1R4dCgndGl0bGUnKTsNCgkJCWVjaG8gY2hlY2tib3goJ3NtZF9m ZWF0X3RleHRpbGVbXScsICdkZXNjJywgJHR4dF9kZXNjLCAnJywgJ3NtZF9mZWF0X3RleHRp bGVfZGVzYycpLnNwLnNtZF9mZWF0dXJlZF9nVHh0KCdkZXNjJyk7DQoJCQllY2hvICc8L2Rp dj4nOw0KDQoJCQllY2hvICc8ZGl2IGNsYXNzPSJzbWRfZmVhdHVyZWRfcHJlZiBzbWRfZmVh dF9zZWN0aW9uX2xpc3QiPic7DQoJCQllY2hvICc8bGFiZWwgZm9yPSJzbWRfZmVhdF9zZWN0 aW9uX2xpc3QiPicuc21kX2ZlYXR1cmVkX2dUeHQoJ3NlY3Rpb25fbGlzdCcpLic8L2xhYmVs Pic7DQoJCQllY2hvIGZJbnB1dCgndGV4dCcsICdzbWRfZmVhdF9zZWN0aW9uX2xpc3QnLCAk c2VjbGlzdCwgJycsICcnLCAnJywgJzMwJywgJycsICdzbWRfZmVhdF9zZWN0aW9uX2xpc3Qn KTsNCgkJCWVjaG8gJzwvZGl2Pic7DQoJCX0NCg0KCQllY2hvICc8L2Rpdj4nOw0KDQoJCWVj aG8gZUlucHV0KCRzbWRfZmVhdHVyZWRfZXZlbnQpLnNJbnB1dCgnc21kX2ZlYXR1cmVkX3By ZWZzYXZlJyk7DQoJCWVjaG8gZklucHV0KCdzdWJtaXQnLCAnJywgZ1R4dCgnc2F2ZScpLCAn c21hbGxlcmJveCBzbWRfZmVhdHVyZWRfc2F2ZScpOw0KCQllY2hvICc8L2ZpZWxkc2V0Pic7 DQoJCWVjaG8gJzwvZm9ybT4nOw0KDQoJCWVjaG8gJyZuYnNwOyc7IC8vIFdpdGhvdXQgdGhp cyAnY29udGVudCcgalF1ZXJ5IDEuMy4yIHdvbid0IC50b2dnbGUoKSBhbiBlbGVtZW50IHdp dGggZW50aXJlbHkgZmxvYXRlZCBpbm5lciBlbGVtZW50cyA6LXMNCgkJZWNobyAnPC9kaXY+ JzsNCgkJZWNobyAnPC9maWVsZHNldD4nOw0KDQoJCWVjaG8gJzxmb3JtIGlkPSJzbWRfZmVh dF9lZGl0Zm9ybSIgYWN0aW9uPSJpbmRleC5waHAiIG1ldGhvZD0icG9zdCI+JzsNCgkJZWNo byBoSW5wdXQoJ3NtZF9mZWF0X3NlYXJjaGtlZXAnLCAnJykuDQoJCQkJaElucHV0KCdzbWRf ZmVhdF9maWx0a2VlcCcsICcnKS4NCgkJCQloSW5wdXQoJ3NtZF9mZWF0X2lkJywgJycpLg0K CQkJCWVJbnB1dCgkc21kX2ZlYXR1cmVkX2V2ZW50KS4NCgkJCQlzSW5wdXQoJ3NtZF9mZWF0 dXJlZF9saXN0Jyk7DQoJCWVjaG8gJzwvZm9ybT4nOw0KDQoJCWVjaG8gJzxmb3JtIGlkPSJz bWRfZmVhdF9zYXZlZm9ybSIgYWN0aW9uPSJpbmRleC5waHAiIG1ldGhvZD0icG9zdCIgb25z dWJtaXQ9InJldHVybiBzbWRfZmVhdHVyZWRfc2F2ZWtlZXAoKTsiPic7DQoJCWVjaG8gc3Rh cnRUYWJsZSgnY29udHJvbCcsJycsJycsJzMnKTsNCgkJaWYgKCRzbWRfZmVhdF9pZCkgew0K CQkJZWNobyB0cigNCgkJCQl0ZCgnJm5ic3A7JykudGRjcyhnVHh0KCdlZGl0Jykuc3Auc3Ry b25nKGVMaW5rKCdhcnRpY2xlJywgJ2VkaXQnLCAnSUQnLCAkc21kX2ZlYXRfaWQsICRlZGl0 bmFtZSkpLCAyKS4NCgkJCQl0ZChmSW5wdXQoJ3N1Ym1pdCcsICcnLCBnVHh0KCdzYXZlJyks ICdzbWFsbGVyYm94JykpLg0KCQkJCWhJbnB1dCgnc21kX2ZlYXRfc2VhcmNoa2VlcCcsICcn KS4NCgkJCQloSW5wdXQoJ3NtZF9mZWF0X2ZpbHRrZWVwJywgJycpLg0KCQkJCWhJbnB1dCgn c21kX2ZlYXRfaWQnLCAkc21kX2ZlYXRfaWQpLg0KCQkJCWVJbnB1dCgkc21kX2ZlYXR1cmVk X2V2ZW50KS4NCgkJCQlzSW5wdXQoJ3NtZF9mZWF0dXJlZF9zYXZlJykNCgkJCSk7DQoJCQlp ZiAoJHNob3dfbGJsKSB7DQoJCQkJZWNobyB0cigNCgkJCQkJZkxhYmVsQ2VsbChnVHh0KCds YWJlbCcpLCAnJywgJ3NtZF9mZWF0X2xhYmVsJykuDQoJCQkJCXRkKA0KCQkJCQkJZklucHV0 KCd0ZXh0JywgJ3NtZF9mZWF0X2xhYmVsJywgJGZlYXRfbGFiZWwsICcnLCAnJywgJycsICcn LCAnJywgJ3NtZF9mZWF0X2xhYmVsJykuDQoJCQkJCQlzZWxlY3RJbnB1dCgnc21kX2ZlYXRf bGFiZWxjaG9vc2UnLCAkZXR5cGVzLCAkZmVhdF9sYWJlbCwgMCwgJycsICdzbWRfZmVhdF9s YWJlbGNob29zZScpDQoJCQkJCSkNCgkJCQkpOw0KCQkJfQ0KCQkJaWYgKCRzaG93X3R0bCkg ew0KCQkJCWVjaG8gdHIoDQoJCQkJCWZMYWJlbENlbGwoZ1R4dCgndGl0bGUnKSwgJycsICdz bWRfZmVhdF90aXRsZScpLg0KCQkJCQl0ZCgNCgkJCQkJCWZJbnB1dCgndGV4dCcsICdzbWRf ZmVhdF90aXRsZScsICRmZWF0X3RpdGxlLCAnJywgJycsICcnLCAnJywgJycsICdzbWRfZmVh dF90aXRsZScpDQoJCQkJCSkNCgkJCQkpOw0KCQkJfQ0KCQkJaWYgKCRzaG93X2Rlc2MpIHsN CgkJCQllY2hvIHRyKA0KCQkJCQlmTGFiZWxDZWxsKGdUeHQoJ2Rlc2NyaXB0aW9uJyksICcn LCAnc21kX2ZlYXRfZGVzYycpLg0KCQkJCQl0ZCh0ZXh0X2FyZWEoJ3NtZF9mZWF0X2Rlc2Mn LCA4MCwgNDAwLCAkZmVhdF9kZXNjLCAnc21kX2ZlYXRfZGVzYycpKQ0KCQkJCSk7DQoJCQl9 DQoJCQllY2hvIHRyKA0KCQkJCWZMYWJlbENlbGwoc21kX2ZlYXR1cmVkX2dUeHQoJ3Bvc2l0 aW9uJyksICcnLCAnc21kX2ZlYXRfcG9zaXRpb24nKS4NCgkJCQl0ZChmSW5wdXQoJ3RleHQn LCAnc21kX2ZlYXRfcG9zaXRpb24nLCAkZmVhdF9wb3NpdGlvbiwgJycsICcnLCAnJywgJycs ICcnLCAnc21kX2ZlYXRfcG9zaXRpb24nKSkNCgkJCSk7DQoJCX0NCgkJZWNobyBlbmRUYWJs ZSgpOw0KCQllY2hvICc8L2Zvcm0+JzsNCg0KCQkkZWRidG4gPSBzbWFsbCgnWycuZ1R4dCgn ZWRpdCcpLiddJyk7DQoJCSRlZHRpcCA9IHNtZF9mZWF0dXJlZF9nVHh0KCdsYmxfZWRmZWF0 Jyk7DQoJCSRlZGFydGJ0biA9ICcmcmFycjsnOw0KCQkkZWRhcnR0aXAgPSBzbWRfZmVhdHVy ZWRfZ1R4dCgnbGJsX2VkYXJ0Jyk7DQoJCSRlZHBvc3RpcCA9IHNtZF9mZWF0dXJlZF9nVHh0 KCdsYmxfZWRwb3MnKTsNCgkJJHVuZmVhdHRpcCA9IHNtZF9mZWF0dXJlZF9nVHh0KCdsYmxf dW5mZWF0dXJlJyk7DQoNCgkJaWYgKCRvdXQpIHsNCgkJCSRyb3dzID0gY291bnQoJHJzKTsN CgkJCSR0YmxvdXQgPSBhcnJheSgpOw0KCQkJJGF0dHMgPSAnIGNsYXNzPSJzbWRfZmVhdHVy ZWRfdGFibGUgc21kX2NsZWFyIiBpZD0ic21kXycuJGRpc3BsYXkuJyIgYWxpZ249ImNlbnRl ciInOw0KDQoJCQkkdGJsb3V0W10gPSBoZWQoc21kX2ZlYXR1cmVkX2dUeHQoJ21hbmFnZV9s YmwnLCBhcnJheSgpLCAncmF3JyksIDMsICcgY2xhc3M9InNtZF9jbGVhciInKTsNCgkJCWZv ciAoJGlkeCA9IDA7ICRpZHggPCAkcm93czsgJGlkeCsrKSB7DQoJCQkJJGlzZmVhdCA9IChp c3NldCgkb3V0WyRpZHhdKSAmJiBhcnJheV9rZXlfZXhpc3RzKCRvdXRbJGlkeF1bMF0sICRm ZWF0bGlzdCkpOw0KCQkJCSRjZWxsY2xhc3MgPSAkaXNmZWF0ID8gJyBjbGFzcz0ic21kX2Zl YXR1cmVkIicgOiAnJzsNCgkJCQkkZWRsaW5rID0gJGlzZmVhdCAmJiAkdXNlX2VkaXQgPyAn PGEgY2xhc3M9InNtZF9mZWF0X2VkbGluayIgaHJlZj0iIyIgb25jbGljaz0icmV0dXJuIHNt ZF9mZWF0dXJlZF9lZGl0a2VlcChcJycuJG91dFskaWR4XVswXS4nXCcpOyIgdGl0bGU9Iicu JGVkdGlwLiciPicuJGVkYnRuLic8L2E+Jy5zcCA6ICcnOw0KCQkJCSRlZHBvcyA9ICRpc2Zl YXQgPyAnPGlucHV0IG5hbWU9InNtZF9mZWF0dXJlZF9wb3NpdGlvbiIgY2xhc3M9InNtZF9m ZWF0X2VkcG9zIiB0aXRsZT0iJy4kZWRwb3N0aXAuJyIgdmFsdWU9IicuJG91dFskaWR4XVsz XS4nIiBvbmJsdXI9InJldHVybiBzbWRfZmVhdHVyZWRfc3RvcmVfcG9zKHRoaXMsIFwnJy4k b3V0WyRpZHhdWzBdLidcJykiIC8+JyA6ICcnOw0KCQkJCSRlZGFydCA9ICRpc2ZlYXQgPyAn PGEgY2xhc3M9InNtZF9mZWF0X2VkYXJ0IiBocmVmPSI/ZXZlbnQ9YXJ0aWNsZSZzdGVwPWVk aXQmSUQ9Jy4kb3V0WyRpZHhdWzBdLiciIHRpdGxlPSInLiRlZGFydHRpcC4nIj4nLiRlZGFy dGJ0bi4nPC9hPicgOiAnJzsNCgkJCQkkcm93ZGF0YSA9IChpc3NldCgkb3V0WyRpZHhdKSkg PyAnPHNwYW4gbmFtZT0ic21kX2ZlYXRfbmFtZSIgY2xhc3M9InNtZF9oaWRkZW4iPicuJG91 dFskaWR4XVsxXS4nPC9zcGFuPicgOiAnJzsNCgkJCQkkcm93ZGF0YSAuPSAkaXNmZWF0ID8g JzxzcGFuIG5hbWU9InNtZF9mZWF0X2xhYmVsIiBjbGFzcz0iZXh0cmEgc21kX2hpZGRlbiI+ Jy4kb3V0WyRpZHhdWzJdLic8L3NwYW4+JyA6ICcnOw0KCQkJCSR0YmxvdXRbXSA9IChpc3Nl dCgkb3V0WyRpZHhdKSkgPyAnPGRpdicuJGNlbGxjbGFzcy4nPicuJGVkbGluay4nPGEgaHJl Zj0iIyIgdGl0bGU9IicuKCgkaXNmZWF0KSA/ICR1bmZlYXR0aXAgOiAnJykuJyIgb25jbGlj az0icmV0dXJuIHNtZF9mZWF0dXJlZF9zZWxlY3QodGhpcywgXCcnLiRvdXRbJGlkeF1bMF0u J1wnKSI+Jy4kb3V0WyRpZHhdWzFdLic8L2E+Jy4kZWRwb3MuJGVkYXJ0LiRyb3dkYXRhLic8 L2Rpdj4nIDogJzxkaXY+PC9kaXY+JzsNCgkJCX0NCgkJCWVjaG8gdGFnKGpvaW4oIiIsJHRi bG91dCksICdkaXYnLCAkYXR0cyk7DQoJCQllY2hvICc8ZGl2IGNsYXNzPSJzbWRfY2xlYXIi PjwvZGl2Pic7DQoJCQlpZiAoJGRpc3BsYXk9PSdwYWdpbmF0ZWQnICYmICRkb19wYWcpIHsN CgkJCQllY2hvIG4uJzxkaXYgaWQ9IicuJHNtZF9mZWF0dXJlZF9ldmVudC4nX25hdmlnYXRp b24iIGNsYXNzPSJ0eHAtbmF2aWdhdGlvbiI+Jy4NCgkJCQkJbi5uYXZfZm9ybSgkc21kX2Zl YXR1cmVkX2V2ZW50LCAkcGFnZSwgJG51bVBhZ2VzLCAnJywgJycsICcnLCAnJywgJHRvdGFs LCAkbGltaXQpLg0KCQkJCQluLnBhZ2VieV9mb3JtKCRzbWRfZmVhdHVyZWRfZXZlbnQsICRz bWRfZmVhdHVyZWRfbGlzdF9wYWdlYnkpOw0KCQkJCQluLic8L2Rpdj4nOw0KCQkJfQ0KCQl9 DQoNCgkJJHFzID0gYXJyYXkoDQoJCQkiZXZlbnQiID0+ICRzbWRfZmVhdHVyZWRfZXZlbnQs DQoJCSk7DQoNCgkJJHFzVmFycyA9ICJpbmRleC5waHAiLmpvaW5fcXMoJHFzKTsNCgkJJHZl cmlmeVR4dCA9IHNtZF9mZWF0dXJlZF9nVHh0KCd1bmZlYXR1cmVfY29uZmlybScpOw0KDQoJ CWVjaG8gPDw8RU9KUw0KPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPg0KZnVuY3Rp b24gc21kX2ZlYXR1cmVkX3NlbGVjdChvYmosIGlkKSB7DQoJb2JqID0galF1ZXJ5KG9iaiku cGFyZW50KCk7DQoNCgkvLyBOLkIuIE5lZ2F0aXZlIGxvZ2ljIHVzZWQgaGVyZSBiZWNhdXNl IHdlJ3JlIGNoZWNraW5nIHRoZSBjbGFzcyBfYmVmb3JlXyBpdCdzIGJlZW4gdG9nZ2xlZA0K CXZhciBhY3Rpb24gPSAoKG9iaikuaGFzQ2xhc3MoInNtZF9mZWF0dXJlZCIpKSA/ICdyZW1v dmUnIDogJ2FkZCc7DQoJaWYgKGFjdGlvbiA9PSAncmVtb3ZlJykgew0KCQlpZiAoJzEnID09 IHskdXNlX2VkaXR9KSB7DQoJCQl2YXIgcmV0ID0gY29uZmlybSgneyR2ZXJpZnlUeHR9Jyk7 DQoJCQlpZiAocmV0ID09IGZhbHNlKSB7DQoJCQkJcmV0dXJuIGZhbHNlOw0KCQkJfQ0KCQl9 DQoJfQ0KCWpRdWVyeS5wb3N0KCd7JHFzVmFyc30nLCB7IHN0ZXA6ICJzbWRfZmVhdHVyZWRf dGFnaXQiLCBzbWRfZmVhdF9pZDogaWQsIHNtZF9mZWF0X2FjdGlvbjogYWN0aW9uIH0sDQoJ CWZ1bmN0aW9uKGRhdGEpIHsNCgkJCW9iai50b2dnbGVDbGFzcygnc21kX2ZlYXR1cmVkJyk7 DQoJCQlpZiAoYWN0aW9uID09ICdhZGQnKSB7DQoJCQkJb2JqLmZpbmQoJ2EnKS5hdHRyKCd0 aXRsZScsICJ7JHVuZmVhdHRpcH0iKTsNCgkJCQlpZiAoJzEnID09ICd7JHVzZV9lZGl0fScp IHsNCgkJCQkJb2JqLnByZXBlbmQoJzxhIGNsYXNzPSJzbWRfZmVhdF9lZGxpbmsiIHRpdGxl PSJ7JGVkdGlwfSIgaHJlZj0iIyIgb25jbGljaz0icmV0dXJuIHNtZF9mZWF0dXJlZF9lZGl0 a2VlcChcJycraWQrJ1wnKSI+eyRlZGJ0bn08L2E+Jm5ic3A7Jyk7DQoJCQkJfQ0KCQkJCW9i ai5hcHBlbmQoJzxpbnB1dCBuYW1lPSJzbWRfZmVhdHVyZWRfcG9zaXRpb24iIGNsYXNzPSJz bWRfZmVhdF9lZHBvcyIgdGl0bGU9InskZWRwb3N0aXB9IiB2YWx1ZT0iIiBvbmJsdXI9InJl dHVybiBzbWRfZmVhdHVyZWRfc3RvcmVfcG9zKHRoaXMsIFwnJytpZCsnXCcpIiAvPicpOw0K CQkJCW9iai5hcHBlbmQoJzxhIGNsYXNzPSJzbWRfZmVhdF9lZGFydCIgdGl0bGU9InskZWRh cnR0aXB9IiBocmVmPSI/ZXZlbnQ9YXJ0aWNsZSZzdGVwPWVkaXQmSUQ9JytpZCsnIj57JGVk YXJ0YnRufTwvYT4nKTsNCgkJCQlvYmouYXBwZW5kKCc8c3BhbiBuYW1lPSJzbWRfZmVhdF9s YWJlbCIgY2xhc3M9ImV4dHJhIHNtZF9oaWRkZW4iPjwvc3Bhbj4nKTsNCgkJCQlvYmouZmlu ZCgnaW5wdXQuc21kX2ZlYXRfZWRwb3MnKS5mb2N1cygpOw0KCQkJfSBlbHNlIHsNCgkJCQlv YmouZmluZCgnYS5zbWRfZmVhdF9lZGxpbmsnKS5yZW1vdmUoKTsNCgkJCQlvYmouZmluZCgn aW5wdXQuc21kX2ZlYXRfZWRwb3MnKS5yZW1vdmUoKTsNCgkJCQlvYmouZmluZCgnYS5zbWRf ZmVhdF9lZGFydCcpLnJlbW92ZSgpOw0KCQkJCW9iai5maW5kKCdhJykuYXR0cigndGl0bGUn LCAnJyk7DQoJCQkJb2JqLmZpbmQoJ3NwYW4uZXh0cmEnKS5yZW1vdmUoKTsNCgkJCQlpZiAo alF1ZXJ5KCIjc21kX2ZlYXRfc2VhcmNoIikudmFsKCkgIT0gJycpIGpRdWVyeSgiI3NtZF9m ZWF0X3NlYXJjaCIpLmtleXVwKCk7DQoJCQkJaWYgKGpRdWVyeSgiI3NtZF9mZWF0X2ZpbHQi KS52YWwoKSAhPSAnJykgalF1ZXJ5KCIjc21kX2ZlYXRfZmlsdCIpLmNoYW5nZSgpOw0KCQkJ fQ0KCQl9DQoJKTsNCglyZXR1cm4gZmFsc2U7DQp9DQoNCmZ1bmN0aW9uIHNtZF9mZWF0dXJl ZF9lZGl0a2VlcChpZCkgew0KCWpRdWVyeSgiI3NtZF9mZWF0X2VkaXRmb3JtIFtuYW1lPSdz bWRfZmVhdF9zZWFyY2hrZWVwJ10iKS52YWwoalF1ZXJ5KCIjc21kX2ZlYXRfc2VhcmNoIiku dmFsKCkpOw0KCWpRdWVyeSgiI3NtZF9mZWF0X2VkaXRmb3JtIFtuYW1lPSdzbWRfZmVhdF9m aWx0a2VlcCddIikudmFsKGpRdWVyeSgiI3NtZF9mZWF0dXJlZF9ieWxhYmVsICNzbWRfZmVh dF9maWx0IG9wdGlvbjpzZWxlY3RlZCIpLnZhbCgpKTsNCglqUXVlcnkoIiNzbWRfZmVhdF9l ZGl0Zm9ybSBbbmFtZT0nc21kX2ZlYXRfaWQnXSIpLnZhbChpZCk7DQoJalF1ZXJ5KCIjc21k X2ZlYXRfZWRpdGZvcm0iKS5zdWJtaXQoKTsNCn0NCg0KZnVuY3Rpb24gc21kX2ZlYXR1cmVk X3NhdmVrZWVwKCkgew0KCWpRdWVyeSgiI3NtZF9mZWF0X3NhdmVmb3JtIFtuYW1lPSdzbWRf ZmVhdF9zZWFyY2hrZWVwJ10iKS52YWwoalF1ZXJ5KCIjc21kX2ZlYXRfc2VhcmNoIikudmFs KCkpOw0KCWpRdWVyeSgiI3NtZF9mZWF0X3NhdmVmb3JtIFtuYW1lPSdzbWRfZmVhdF9maWx0 a2VlcCddIikudmFsKGpRdWVyeSgiI3NtZF9mZWF0dXJlZF9ieWxhYmVsICNzbWRfZmVhdF9m aWx0IG9wdGlvbjpzZWxlY3RlZCIpLnZhbCgpKTsNCn0NCg0KZnVuY3Rpb24gc21kX2ZlYXRf ZmlsdGVyKHNlbGVjdG9yLCBxdWVyeSwgbmFtLCBjc2Vuc2UsIGV4YWN0KSB7DQoJaWYgKHsk ZGlzcGxheV9qc30gPT0gMSkgew0KCQl2YXIgcXVlcnkgPSBqUXVlcnkudHJpbShxdWVyeSk7 DQoJCWNzZW5zZSA9IChjc2Vuc2UpID8gIiIgOiAiaSI7DQoJCXF1ZXJ5ID0gcXVlcnkucmVw bGFjZSgvIC9naSwgJ3wnKTsgLy8gYWRkIE9SIGZvciByZWdleCBxdWVyeQ0KCQlpZiAoZXhh Y3QpIHsNCgkJCXRtcCA9IHF1ZXJ5LnNwbGl0KCd8Jyk7DQoJCQlmb3IgKHZhciBpZHggPSAw OyBpZHggPCB0bXAubGVuZ3RoOyBpZHgrKykgew0KCQkJCXRtcFtpZHhdID0gJ14nK3RtcFtp ZHhdKyckJzsNCgkJCX0NCgkJCXF1ZXJ5ID0gdG1wLmpvaW4oJ3wnKTsNCgkJfQ0KCQl2YXIg cmUgPSBuZXcgUmVnRXhwKHF1ZXJ5LCBjc2Vuc2UpOw0KCQlqUXVlcnkoc2VsZWN0b3IpLmVh Y2goZnVuY3Rpb24oKSB7DQoJCQlzZWwgPSAodHlwZW9mIG5hbT09InVuZGVmaW5lZCIgfHwg bmFtPT0nJykgPyBqUXVlcnkodGhpcykgOiBqUXVlcnkodGhpcykuZmluZCgic3BhbltuYW1l PSciK25hbSsiJ10iKTsNCgkJCWlmIChxdWVyeSA9PSAnJykgew0KCQkJCWlmIChzZWwubGVu Z3RoID09IDEgJiYgc2VsLnRleHQoKSA9PSAnJykgew0KCQkJCQlqUXVlcnkodGhpcykuc2hv dygpOw0KCQkJCX0gZWxzZSB7DQoJCQkJCWpRdWVyeSh0aGlzKS5oaWRlKCk7DQoJCQkJfQ0K CQkJfSBlbHNlIHsNCgkJCQlpZiAoc2VsLnRleHQoKS5zZWFyY2gocmUpIDwgMCkgew0KCQkJ CQlqUXVlcnkodGhpcykuaGlkZSgpOw0KCQkJCX0gZWxzZSB7DQoJCQkJCWpRdWVyeSh0aGlz KS5zaG93KCk7DQoJCQkJfQ0KCQkJfQ0KCQl9KTsNCgl9DQp9DQoNCmZ1bmN0aW9uIHNtZF9m ZWF0dXJlZF9zdG9yZV9wb3Mob2JqLCBpZCkgew0KCXZhciBvYmogPSBqUXVlcnkob2JqKTsN Cgl2YXIgcG9zID0gb2JqLnZhbCgpOw0KDQoJLy9UT0RPOiBmZWVkYmFjayBvbiBzdWNjZXNz DQoJc2VuZEFzeW5jRXZlbnQoDQoJew0KCQlldmVudDogdGV4dHBhdHRlcm4uZXZlbnQsDQoJ CXN0ZXA6ICdzbWRfZmVhdHVyZWRfc3RvcmVfcG9zJywNCgkJc21kX2ZlYXRfaWQ6IGlkLA0K CQlzbWRfZmVhdF9wb3M6IHBvcw0KCX0pOw0KfQ0KDQpqUXVlcnkoZnVuY3Rpb24oKSB7DQoJ alF1ZXJ5KCIjc21kX2ZlYXRfc2VhcmNoIikua2V5dXAoZnVuY3Rpb24oZXZlbnQpIHsNCgkJ alF1ZXJ5KCIjc21kX2ZlYXRfZmlsdCIpLnZhbCgnMCcpOyAvLyBDbGVhciB0aGUgZmlsdGVy IGRyb3Bkb3duDQoJCS8vIGlmIGVzYyBpcyBwcmVzc2VkIG9yIG5vdGhpbmcgaXMgZW50ZXJl ZA0KCQlpZiAoZXZlbnQua2V5Q29kZSA9PSAyNyB8fCBqUXVlcnkodGhpcykudmFsKCkgPT0g JycpIHsNCgkJCWpRdWVyeSh0aGlzKS52YWwoJycpOw0KCQkJaWYgKHskZGlzcGxheV9qc30g PT0gMSkgew0KCQkJCWpRdWVyeSgiLnNtZF9mZWF0dXJlZF90YWJsZSBkaXY6bm90KC50Ymxo ZWFkKSIpLnNob3coKTsNCgkJCX0NCgkJfSBlbHNlIHsNCgkJCXNtZF9mZWF0X2ZpbHRlcign LnNtZF9mZWF0dXJlZF90YWJsZSBkaXY6bm90KC50YmxoZWFkKScsIGpRdWVyeSh0aGlzKS52 YWwoKSwgJ3NtZF9mZWF0X25hbWUnLCAwLCAwKTsNCgkJfQ0KCX0pOw0KCWlmICgneyRzbWRf ZmVhdF9zZWFyY2hrZWVwfScgIT0gJycpIHsNCgkJalF1ZXJ5KCIjc21kX2ZlYXRfc2VhcmNo Iikua2V5dXAoKTsNCgl9DQoJalF1ZXJ5KCIjc21kX2ZlYXRfZmlsdCIpLmNoYW5nZShmdW5j dGlvbihldmVudCkgew0KCQlqUXVlcnkoIiNzbWRfZmVhdF9zZWFyY2giKS52YWwoJycpOyAv LyBFbXB0eSB0aGUgc2VhcmNoIGJveA0KCQlpZiAoalF1ZXJ5KHRoaXMpLnZhbCgpID09ICcn KSB7DQoJCQlpZiAoeyRkaXNwbGF5X2pzfSA9PSAxKSB7DQoJCQkJalF1ZXJ5KCcuc21kX2Zl YXR1cmVkX3RhYmxlIGRpdjpub3QoLnRibGhlYWQpJykuc2hvdygpOw0KCQkJfQ0KCQl9IGVs c2UgaWYgKGpRdWVyeSh0aGlzKS52YWwoKSA9PSAnc21kX3VubGFiZWxsZWQnKSB7DQoJCQlz bWRfZmVhdF9maWx0ZXIoJy5zbWRfZmVhdHVyZWRfdGFibGUgZGl2Om5vdCgudGJsaGVhZCkn LCAnJywgJ3NtZF9mZWF0X2xhYmVsJywgMCwgMCk7DQoJCX0gZWxzZSB7DQoJCQlzbWRfZmVh dF9maWx0ZXIoJy5zbWRfZmVhdHVyZWRfdGFibGUgZGl2Om5vdCgudGJsaGVhZCknLCBqUXVl cnkodGhpcykudmFsKCksICdzbWRfZmVhdF9sYWJlbCcsIDEsIDEpOw0KCQl9DQoJfSk7DQoJ aWYgKCd7JHNtZF9mZWF0X2ZpbHRrZWVwfScgIT0gJycpIHsNCgkJalF1ZXJ5KCIjc21kX2Zl YXRfZmlsdCIpLmNoYW5nZSgpOw0KCX0NCglpZiAoJ3skc21kX2ZlYXRfaWR9JyAhPSAnJykg ew0KCQlqUXVlcnkoIiNzbWRfZmVhdF9sYWJlbCIpLmZvY3VzKCk7DQoJCWpRdWVyeSgiI3Nt ZF9mZWF0X2xhYmVsY2hvb3NlIikuY2hhbmdlKGZ1bmN0aW9uKGV2ZW50KSB7DQoJCQlqUXVl cnkoIiNzbWRfZmVhdF9sYWJlbCIpLnZhbChqUXVlcnkodGhpcykudmFsKCkpOw0KCQl9KTsN Cgl9DQoJalF1ZXJ5KCIjc21kX2xvYWRpbmciKS5oaWRlKCk7DQoJalF1ZXJ5KCIjc21kX2Nv bnRhaW5lciIpLnNob3coKTsNCn0pOw0KDQo8L3NjcmlwdD4NCkVPSlM7DQoNCgkJLy8gSW5q ZWN0IHN0eWxlcw0KCQllY2hvICc8c3R5bGUgdHlwZT0idGV4dC9jc3MiPic7DQoJCWVjaG8g c3RydHIoJHNtZF9mZWF0dXJlZF9zdHlsZXNbJ2NvbW1vbiddLCAkc3R5bGVyZXBzKTsNCgkJ ZWNobyAnPC9zdHlsZT4nOw0KCQllY2hvICc8L2Rpdj4nOw0KCX0gZWxzZSB7DQoJCS8vIFRh YmxlIG5vdCBpbnN0YWxsZWQNCgkJJGJ0bkluc3RhbGwgPSAnPGZvcm0gbWV0aG9kPSJwb3N0 IiBhY3Rpb249Ij9ldmVudD0nLiRzbWRfZmVhdHVyZWRfZXZlbnQuYS4nc3RlcD1zbWRfZmVh dHVyZWRfdGFibGVfaW5zdGFsbCIgc3R5bGU9ImRpc3BsYXk6aW5saW5lIj4nLmZJbnB1dCgn c3VibWl0JywgJ3N1Ym1pdCcsIHNtZF9mZWF0dXJlZF9nVHh0KCd0YmxfaW5zdGFsbF9sYmwn KSwgJ3NtYWxsZXJib3gnKS4nPC9mb3JtPic7DQoJCSRidG5TdHlsZSA9ICcgc3R5bGU9ImJv cmRlcjowO2hlaWdodDoyNXB4Iic7DQoJCWVjaG8gc3RhcnRUYWJsZSgnbGlzdCcpOw0KCQll Y2hvIHRyKHRkYShzdHJvbmcoc21kX2ZlYXR1cmVkX2dUeHQoJ3ByZWZzX3NvbWVfdGJsJykp LmJyLmJyDQoJCQkJLnNtZF9mZWF0dXJlZF9nVHh0KCdwcmVmc19zb21lX2V4cGxhaW4nKS5i ci5icg0KCQkJCS5zbWRfZmVhdHVyZWRfZ1R4dCgncHJlZnNfc29tZV9vcHRzJyksICcgY29s c3Bhbj0iMiInKQ0KCQkpOw0KCQllY2hvIHRyKHRkYSgkYnRuSW5zdGFsbCwgJGJ0blN0eWxl KSk7DQoJCWVjaG8gZW5kVGFibGUoKTsNCgl9DQp9DQoNCi8vIC0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCmZ1bmN0aW9u IHNtZF9mZWF0dXJlZF9jaGFuZ2VfcGFnZWJ5KCkgew0KCWdsb2JhbCAkc21kX2ZlYXR1cmVk X2V2ZW50Ow0KDQoJZXZlbnRfY2hhbmdlX3BhZ2VieSgkc21kX2ZlYXR1cmVkX2V2ZW50KTsN CglzbWRfZmVhdHVyZWRfbGlzdCgpOw0KfQ0KDQovLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0NCi8vIFVwZGF0ZSB0aGUgcGFzc2VkIHJlY29yZCBpbiB0aGUgZmVhdHVyZWQgdGFibGUN CmZ1bmN0aW9uIHNtZF9mZWF0dXJlZF9zYXZlKCkgew0KCWdsb2JhbCAkc21kX2ZlYXR1cmVk X2V2ZW50Ow0KDQoJZXh0cmFjdChncHNhKGFycmF5KCdzbWRfZmVhdF9pZCcsICdzbWRfZmVh dF9sYWJlbCcsICdzbWRfZmVhdF90aXRsZScsICdzbWRfZmVhdF9kZXNjJywgJ3NtZF9mZWF0 X3Bvc2l0aW9uJykpKTsNCglhc3NlcnRfaW50KCRzbWRfZmVhdF9pZCk7DQoNCgkkc21kX2Zl YXRfdGl0bGV0aWxlID0gJHNtZF9mZWF0X3RpdGxlOw0KCSRzbWRfZmVhdF9kZXNjdGlsZSA9 ICRzbWRfZmVhdF9kZXNjOw0KCSRzbWRfZmVhdF9sYWJlbCA9IGRvU2xhc2goJHNtZF9mZWF0 X2xhYmVsKTsNCgkkc21kX2ZlYXRfcG9zaXRpb24gPSBkb1NsYXNoKCRzbWRfZmVhdF9wb3Np dGlvbik7DQoNCglpZiAoc21kX2ZlYXR1cmVkX3RhYmxlX2V4aXN0KCkpIHsNCgkJQGluY2x1 ZGVfb25jZSB0eHBhdGguJy9saWIvY2xhc3NUZXh0aWxlLnBocCc7DQoJCUBpbmNsdWRlX29u Y2UgdHhwYXRoLicvcHVibGlzaC5waHAnOw0KDQoJCSR0ZXh0aWxlb25vZmYgPSBleHBsb2Rl KCcsJywgZ2V0X3ByZWYoJ3NtZF9mZWF0dXJlZF90ZXh0aWxlJywgJycpKTsNCgkJJHR4dF90 dGwgPSBpbl9hcnJheSgndGl0bGUnLCAkdGV4dGlsZW9ub2ZmKTsNCgkJJHR4dF9kZXNjID0g aW5fYXJyYXkoJ2Rlc2MnLCAkdGV4dGlsZW9ub2ZmKTsNCg0KCQlpZiAoY2xhc3NfZXhpc3Rz KCdUZXh0aWxlJykpIHsNCgkJCSR0ZXh0aWxlID0gbmV3IFRleHRpbGUoKTsNCgkJCSRzbWRf ZmVhdF90aXRsZXRpbGUgPSBkb1NsYXNoKCgoJHR4dF90dGwpID8gJHRleHRpbGUtPlRleHRp bGVUaGlzKHBhcnNlKCRzbWRfZmVhdF90aXRsZSkpIDogcGFyc2UoJHNtZF9mZWF0X3RpdGxl KSkpOw0KCQkJJHNtZF9mZWF0X2Rlc2N0aWxlID0gZG9TbGFzaCgoKCR0eHRfZGVzYykgPyAk dGV4dGlsZS0+VGV4dGlsZVRoaXMocGFyc2UoJHNtZF9mZWF0X2Rlc2MpKSA6IHBhcnNlKCRz bWRfZmVhdF9kZXNjKSkpOw0KCQl9DQoNCgkJJHNtZF9mZWF0X3RpdGxlID0gZG9TbGFzaCgk c21kX2ZlYXRfdGl0bGUpOw0KCQkkc21kX2ZlYXRfZGVzYyA9IGRvU2xhc2goJHNtZF9mZWF0 X2Rlc2MpOw0KCQkkcmV0ID0gc2FmZV91cHNlcnQoU01EX0ZFQVQsICJsYWJlbD0nJHNtZF9m ZWF0X2xhYmVsJywgZmVhdF9wb3NpdGlvbj0nJHNtZF9mZWF0X3Bvc2l0aW9uJywgZmVhdF90 aXRsZT0nJHNtZF9mZWF0X3RpdGxlJywgZmVhdF90aXRsZV9odG1sPSckc21kX2ZlYXRfdGl0 bGV0aWxlJywgZGVzY3JpcHRpb249JyRzbWRfZmVhdF9kZXNjJywgZGVzY19odG1sPSckc21k X2ZlYXRfZGVzY3RpbGUnIiwgImZlYXRfaWQ9JyRzbWRfZmVhdF9pZCciKTsNCgkJdW5zZXQo JF9QT1NUWydzbWRfZmVhdF9pZCddKTsNCgl9DQoNCglzbWRfZmVhdHVyZWRfbGlzdChzbWRf ZmVhdHVyZWRfZ1R4dCgnc2F2ZWQnKSk7DQp9DQoNCi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLQ0KLy8gQ3JlYXRlIGFuIGVtcHR5IGVudHJ5IGluIHRoZSBmZWF0dXJlZCB0YWJsZSBv ciBkZXN0cm95IGl0DQpmdW5jdGlvbiBzbWRfZmVhdHVyZWRfdGFnaXQoKSB7DQoJZ2xvYmFs ICRzbWRfZmVhdHVyZWRfZXZlbnQ7DQoJZXh0cmFjdChkb1NsYXNoKGdwc2EoYXJyYXkoJ3Nt ZF9mZWF0X2lkJywgJ3NtZF9mZWF0X2FjdGlvbicpKSkpOw0KDQoJYXNzZXJ0X2ludCgkc21k X2ZlYXRfaWQpOw0KDQoJaWYgKCRzbWRfZmVhdF9hY3Rpb24gPT0gJ2FkZCcpIHsNCgkJJHJl dCA9IHNhZmVfdXBzZXJ0KFNNRF9GRUFULCAibGFiZWw9JyciLCAiZmVhdF9pZD0nJHNtZF9m ZWF0X2lkJyIpOw0KCX0gZWxzZSBpZiAoJHNtZF9mZWF0X2FjdGlvbiA9PSAncmVtb3ZlJykg ew0KCQkkcmV0ID0gc2FmZV9kZWxldGUoU01EX0ZFQVQsICJmZWF0X2lkPSckc21kX2ZlYXRf aWQnIik7DQoJfQ0KfQ0KDQovLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQovLyBTdGFzaCB0aGUgcG9zaXRpb24gYWdh aW5zdCB0aGUgZ2l2ZW4gZmVhdHVyZWQgaXRlbQ0KZnVuY3Rpb24gc21kX2ZlYXR1cmVkX3N0 b3JlX3BvcygpIHsNCgkkaWQgPSBncHMoJ3NtZF9mZWF0X2lkJyk7DQoJYXNzZXJ0X2ludCgk aWQpOw0KDQoJJGlkID0gZG9TbGFzaCgkaWQpOw0KCSRwb3MgPSBkb1NsYXNoKGdwcygnc21k X2ZlYXRfcG9zJykpOw0KDQoJJGV4aXN0cyA9IHNhZmVfcm93KCcqJywgU01EX0ZFQVQsICJm ZWF0X2lkPSRpZCIpOw0KCWlmICgkZXhpc3RzKSB7DQoJCXNhZmVfdXBkYXRlKFNNRF9GRUFU LCAiZmVhdF9wb3NpdGlvbj0nJHBvcyciLCAiZmVhdF9pZD0kaWQiKTsNCgkJc2VuZF94bWxf cmVzcG9uc2UoKTsNCgl9DQp9DQoNCi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCmZ1bmN0aW9uIHNtZF9mZWF0dXJl ZF9wcmVmc2F2ZSgpIHsNCglnbG9iYWwgJHNtZF9mZWF0dXJlZF9wcmVmX3ByaXZzLCAkdHhw X3VzZXI7DQoNCgkvLyBUaHJlZSBkaWZmZXJlbnQgdHlwZXMgb2YgcHJlZiBjYW4gYmUgc3Rv cmVkOiBzZWUgYmVsb3cgZm9yIGRldGFpbHMNCgkkc3RkcHJlZnMgPSBhcnJheSgNCgkJUFJF Rl9HTE9CQUwgPT4gYXJyYXkoDQoJCQknc21kX2ZlYXR1cmVkX3NlY3Rpb25fbGlzdCcgPT4g J3NtZF9mZWF0X3NlY3Rpb25fbGlzdCcsDQoJCSksDQoJCVBSRUZfUFJJVkFURSA9PiBhcnJh eSgNCgkJCSdzbWRfZmVhdHVyZWRfZGlzcGxheScgPT4gJ3NtZF9mZWF0X2Rpc3BsYXknLA0K CQkJJ3NtZF9mZWF0dXJlZF9zZWN0aW9uX2xpc3QnID0+ICdzbWRfZmVhdF9zZWN0aW9uX2xp c3QnLA0KCQkpDQoJKTsNCgkkam9pbnByZWZzID0gYXJyYXkoDQoJCVBSRUZfUFJJVkFURSA9 PiBhcnJheSgNCgkJCS8vIEluZGV4IGlzIHRoZSBwcmVmIG5hbWU7IEZpcnN0IGl0ZW0gaW4g YXJyYXkgaXMgdGhlIGpvaW4gc3RyaW5nDQoJCQknc21kX2ZlYXR1cmVkX2JveF9zaXplJyA9 PiBhcnJheSgneCcsICdzbWRfZmVhdF9ib3hfeCcsICdzbWRfZmVhdF9ib3hfeScpLA0KCQkJ J3NtZF9mZWF0dXJlZF9zb3J0JyA9PiBhcnJheSgnICcsICdzbWRfZmVhdF9zb3J0JywgJ3Nt ZF9mZWF0X3NvcnRkaXInKSwNCgkJKQ0KCSk7DQoJJGFycmF5cHJlZnMgPSBhcnJheSgNCgkJ UFJFRl9HTE9CQUwgPT4gYXJyYXkoDQoJCQknc21kX2ZlYXR1cmVkX3RleHRpbGUnID0+ICdz bWRfZmVhdF90ZXh0aWxlJywNCgkJCSdzbWRfZmVhdHVyZWRfc2hvd191aScgPT4gJ3NtZF9m ZWF0X3Nob3dfdWknLA0KCQkpDQoJKTsNCg0KCSRwcml2cyA9IHNhZmVfZmllbGQoJ3ByaXZz JywgJ3R4cF91c2VycycsICJuYW1lID0gJyIuZG9TbGFzaCgkdHhwX3VzZXIpLiInIik7DQoJ JHJpZ2h0cyA9IGFycmF5X2tleV9leGlzdHMoJHByaXZzLCAkc21kX2ZlYXR1cmVkX3ByZWZf cHJpdnMpOw0KCSRwZXJwcmVmcyA9ICgkcmlnaHRzKSA/ICRzbWRfZmVhdHVyZWRfcHJlZl9w cml2c1skcHJpdnNdIDogYXJyYXkoKTsNCgkkcHJlZmxpc3QgPSBhcnJheV9tZXJnZSgkc21k X2ZlYXR1cmVkX3ByZWZfcHJpdnNbJ2FsbCddLCAkcGVycHJlZnMpOw0KDQoJLy8gU3RhbmRh cmQgcHJlZnMgYXJlIGp1c3Qgc2luZ2xlIHdpZGdldCB2YWx1ZXMgdGhhdCBhcmUgc3RvcmVk IGRpcmVjdGx5DQoJZm9yZWFjaCAoJHN0ZHByZWZzIGFzICR0eXBlID0+ICRwcmZzKSB7DQoJ CWZvcmVhY2ggKCRwcmZzIGFzICRrZXkgPT4gJHZhbCkgew0KCQkJaWYgKGluX2FycmF5KCRr ZXksICRwcmVmbGlzdCkpIHsNCgkJCQlzZXRfcHJlZihkb1NsYXNoKCRrZXkpLCBkb1NsYXNo KGdwcygkdmFsKSksICdzbWRfZmVhdHVyZWQnLCBQUkVGX0hJRERFTiwgJ3RleHRfaW5wdXQn LCAwLCAkdHlwZSk7DQoJCQl9DQoJCX0NCgl9DQoNCgkvLyBKb2luIHByZWZzIGFyZSBkaXNj cmV0ZSB3aWRnZXQgdmFsdWVzICh3aXRoIGRpZmZlcmVudCBIVE1MIG5hbWVzKSB0aGF0IG5l ZWQgY29tYmluaW5nIGludG8gYSBzaW5nbGUgcHJlZiB2YWx1ZQ0KCWZvcmVhY2ggKCRqb2lu cHJlZnMgYXMgJHR5cGUgPT4gJHByZnMpIHsNCgkJZm9yZWFjaCAoJHByZnMgYXMgJGtleSA9 PiAkdmFsKSB7DQoJCQlpZiAoaW5fYXJyYXkoJGtleSwgJHByZWZsaXN0KSkgew0KCQkJCSRq b2luc3RyID0gJyc7DQoJCQkJJGNvbWJpbmVkID0gYXJyYXkoKTsNCgkJCQlmb3JlYWNoICgk dmFsIGFzICRpZHggPT4gJGl0ZW0pIHsNCgkJCQkJaWYgKCRpZHg9PTApIHsNCgkJCQkJCSRq b2luc3RyID0gJGl0ZW07DQoJCQkJCX0gZWxzZSB7DQoJCQkJCQkkY29tYmluZWRbXSA9IGRv U2xhc2goZ3BzKCRpdGVtKSk7DQoJCQkJCX0NCgkJCQl9DQoJCQkJc2V0X3ByZWYoZG9TbGFz aCgka2V5KSwgam9pbigkam9pbnN0ciwgJGNvbWJpbmVkKSwgJ3NtZF9mZWF0dXJlZCcsIFBS RUZfSElEREVOLCAndGV4dF9pbnB1dCcsIDAsICR0eXBlKTsNCgkJCX0NCgkJfQ0KCX0NCg0K CS8vIEFycmF5IHByZWZzIGFyZSB3aWRnZXQgdmFsdWVzIGZyb20gY29tYmluZWQgY2hlY2ti b3hlcyB1bmRlciB0aGUgc2FtZSBIVE1MIG5hbWUuDQoJLy8gVGhleSBtYXkgbm90IGJlIHBy ZXNlbnRlZCBhcyBhcnJheXMgaWYgb25seSBvbmUgaXRlbSBpcyBjaGVja2VkDQoJZm9yZWFj aCAoJGFycmF5cHJlZnMgYXMgJHR5cGUgPT4gJHByZnMpIHsNCgkJZm9yZWFjaCAoJHByZnMg YXMgJGtleSA9PiAkdmFsKSB7DQoJCQlpZiAoaW5fYXJyYXkoJGtleSwgJHByZWZsaXN0KSkg ew0KCQkJCSRqb2luc3RyID0gJywnOw0KCQkJCSR2YWwgPSBkb1NsYXNoKGdwcygkdmFsKSk7 DQoJCQkJJGNvbWJpbmVkID0gam9pbigkam9pbnN0ciwgKChpc19hcnJheSgkdmFsKSkgPyAk dmFsIDogYXJyYXkoJHZhbCkpKTsNCgkJCQlzZXRfcHJlZihkb1NsYXNoKCRrZXkpLCAkY29t YmluZWQsICdzbWRfZmVhdHVyZWQnLCBQUkVGX0hJRERFTiwgJ3RleHRfaW5wdXQnLCAwLCAk dHlwZSk7DQoJCQl9DQoJCX0NCgl9DQoJc21kX2ZlYXR1cmVkX2xpc3QoZ1R4dCgncHJlZmVy ZW5jZXNfc2F2ZWQnKSk7DQp9DQoNCi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCmZ1bmN0aW9uIHNtZF9mZWF0dXJl ZF9zYXZlX3BhbmVfc3RhdGUoKSB7DQoJJHBhbmVzID0gYXJyYXkoJ3NtZF9mZWF0dXJlZF9j cGFuZWwnKTsNCgkkcGFuZSA9IGdwcygncGFuZScpOw0KCWlmIChpbl9hcnJheSgkcGFuZSwg JHBhbmVzKSkNCgl7DQoJCXNldF9wcmVmKCJwYW5lX3skcGFuZX1fdmlzaWJsZSIsIChncHMo J3Zpc2libGUnKSA9PSAndHJ1ZScgPyAnMScgOiAnMCcpLCAnc21kX2ZlYXR1cmVkJywgUFJF Rl9ISURERU4sICd5ZXNub3JhZGlvJywgMCwgUFJFRl9QUklWQVRFKTsNCgkJc2VuZF94bWxf cmVzcG9uc2UoKTsNCgl9IGVsc2Ugew0KCQlzZW5kX3htbF9yZXNwb25zZShhcnJheSgnaHR0 cC1zdGF0dXMnID0+ICc0MDAgQmFkIFJlcXVlc3QnKSk7DQoJfQ0KfQ0KDQovLyAtLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0NCi8vIEFkZCBmZWF0dXJlZCB0YWJsZSBpZiBub3QgYWxyZWFk eSBpbnN0YWxsZWQNCmZ1bmN0aW9uIHNtZF9mZWF0dXJlZF90YWJsZV9pbnN0YWxsKCRzaG93 cGFuZT0nMScpIHsNCgkkR0xPQkFMU1sndHhwX2Vycl9jb3VudCddID0gMDsNCgkkcmV0ID0g Jyc7DQoJJHNxbCA9IGFycmF5KCk7DQoJJHNxbFtdID0gIkNSRUFURSBUQUJMRSBJRiBOT1Qg RVhJU1RTIGAiLlBGWC5TTURfRkVBVC4iYCAoDQoJCWBmZWF0X2lkYCBpbnQoOCkgTk9UIE5V TEwgZGVmYXVsdCAnMCcsDQoJCWBsYWJlbGAgdmFyY2hhcigzMikgTlVMTCBkZWZhdWx0ICcn LA0KCQlgZmVhdF9wb3NpdGlvbmAgdmFyY2hhcigxNikgTlVMTCBkZWZhdWx0ICcnLA0KCQlg ZmVhdF90aXRsZWAgdmFyY2hhcigyNTUpIE5VTEwgZGVmYXVsdCAnJywNCgkJYGZlYXRfdGl0 bGVfaHRtbGAgdmFyY2hhcigyNTUpIE5VTEwgZGVmYXVsdCAnJywNCgkJYGRlc2NyaXB0aW9u YCB0ZXh0IE5VTEwgZGVmYXVsdCAnJywNCgkJYGRlc2NfaHRtbGAgdGV4dCBOVUxMIGRlZmF1 bHQgJycsDQoJCVBSSU1BUlkgS0VZIChgZmVhdF9pZGApDQoJKSBFTkdJTkU9TXlJU0FNIjsN Cg0KCWlmKGdwcygnZGVidWcnKSkgew0KCQlkbXAoJHNxbCk7DQoJfQ0KCWZvcmVhY2ggKCRz cWwgYXMgJHFyeSkgew0KCQkkcmV0ID0gc2FmZV9xdWVyeSgkcXJ5KTsNCgkJaWYgKCRyZXQ9 PT1mYWxzZSkgew0KCQkJJEdMT0JBTFNbJ3R4cF9lcnJfY291bnQnXSsrOw0KCQkJZWNobyAi PGI+Ii4kR0xPQkFMU1sndHhwX2Vycl9jb3VudCddLiIuPC9iPiAiLm15c3FsX2Vycm9yKCku IjxiciAvPlxuIjsNCgkJCWVjaG8gIjwhLS1cbiAkcXJ5IFxuLS0+XG4iOw0KCQl9DQoJfQ0K DQoJLy8gSGFuZGxlIHVwZ3JhZGVzIGZyb20gcHJldmlvdXMgdmVyc2lvbnMNCgkkY29scyA9 IGdldFRoaW5ncygnZGVzY3JpYmUgYCcuUEZYLlNNRF9GRUFULidgJyk7DQoJaWYgKCFpbl9h cnJheSgnZmVhdF9pZCcsICRjb2xzKSkgew0KCQlzYWZlX2FsdGVyKFNNRF9GRUFULCAiQ0hB TkdFIGBpZGAgYGZlYXRfaWRgIGludCggOCApIE5PVCBOVUxMIERFRkFVTFQgJzAnIik7DQoJ fQ0KCWlmICghaW5fYXJyYXkoJ2ZlYXRfdGl0bGUnLCAkY29scykpIHsNCgkJc2FmZV9hbHRl cihTTURfRkVBVCwgIkFERCBgZmVhdF90aXRsZWAgdmFyY2hhciggMjU1ICkgTlVMTCBERUZB VUxUICcnIEFGVEVSIGBsYWJlbGAiKTsNCgl9DQoJaWYgKCFpbl9hcnJheSgnZmVhdF90aXRs ZV9odG1sJywgJGNvbHMpKSB7DQoJCXNhZmVfYWx0ZXIoU01EX0ZFQVQsICJBREQgYGZlYXRf dGl0bGVfaHRtbGAgdmFyY2hhciggMjU1ICkgTlVMTCBERUZBVUxUICcnIEFGVEVSIGBmZWF0 X3RpdGxlYCIpOw0KCX0NCglpZiAoIWluX2FycmF5KCdmZWF0X3Bvc2l0aW9uJywgJGNvbHMp KSB7DQoJCXNhZmVfYWx0ZXIoU01EX0ZFQVQsICJBREQgYGZlYXRfcG9zaXRpb25gIHZhcmNo YXIgKCAxNiApIE5VTEwgREVGQVVMVCAnJyBBRlRFUiBgbGFiZWxgIik7DQoJfQ0KDQoJLy8g U3BpdCBvdXQgcmVzdWx0cw0KCWlmICgkR0xPQkFMU1sndHhwX2Vycl9jb3VudCddID09IDAp IHsNCgkJaWYgKCRzaG93cGFuZSkgew0KCQkJJG1lc3NhZ2UgPSBzbWRfZmVhdHVyZWRfZ1R4 dCgndGJsX2luc3RhbGxlZCcpOw0KCQkJc21kX2ZlYXR1cmVkX2xpc3QoJG1lc3NhZ2UpOw0K CQl9DQoJfSBlbHNlIHsNCgkJaWYgKCRzaG93cGFuZSkgew0KCQkJJG1lc3NhZ2UgPSBzbWRf ZmVhdHVyZWRfZ1R4dCgndGJsX25vdF9pbnN0YWxsZWQnKTsNCgkJCXNtZF9mZWF0dXJlZF9s aXN0KCRtZXNzYWdlKTsNCgkJfQ0KCX0NCn0NCg0KLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tDQovLyBEcm9wIHRhYmxlIGlmIGluIGRhdGFiYXNlDQpmdW5jdGlvbiBzbWRfZmVhdHVy ZWRfdGFibGVfcmVtb3ZlKCkgew0KCSRyZXQgPSAnJzsNCgkkc3FsID0gYXJyYXkoKTsNCgkk R0xPQkFMU1sndHhwX2Vycl9jb3VudCddID0gMDsNCglpZiAoc21kX2ZlYXR1cmVkX3RhYmxl X2V4aXN0KCkpIHsNCgkJJHNxbFtdID0gIkRST1AgVEFCTEUgSUYgRVhJU1RTICIgLlBGWC5T TURfRkVBVC4gIjsgIjsNCgkJaWYoZ3BzKCdkZWJ1ZycpKSB7DQoJCQlkbXAoJHNxbCk7DQoJ CX0NCgkJZm9yZWFjaCAoJHNxbCBhcyAkcXJ5KSB7DQoJCQkkcmV0ID0gc2FmZV9xdWVyeSgk cXJ5KTsNCgkJCWlmICgkcmV0PT09ZmFsc2UpIHsNCgkJCQkkR0xPQkFMU1sndHhwX2Vycl9j b3VudCddKys7DQoJCQkJZWNobyAiPGI+Ii4kR0xPQkFMU1sndHhwX2Vycl9jb3VudCddLiIu PC9iPiAiLm15c3FsX2Vycm9yKCkuIjxiciAvPlxuIjsNCgkJCQllY2hvICI8IS0tXG4gJHFy eSBcbi0tPlxuIjsNCgkJCX0NCgkJfQ0KCX0NCglpZiAoJEdMT0JBTFNbJ3R4cF9lcnJfY291 bnQnXSA9PSAwKSB7DQoJCSRtZXNzYWdlID0gc21kX2ZlYXR1cmVkX2dUeHQoJ3RibF9yZW1v dmVkJyk7DQoJfSBlbHNlIHsNCgkJJG1lc3NhZ2UgPSBzbWRfZmVhdHVyZWRfZ1R4dCgndGJs X25vdF9yZW1vdmVkJyk7DQoJCXNtZF9mZWF0dXJlZF9saXN0KCRtZXNzYWdlKTsNCgl9DQp9 DQoNCi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KZnVuY3Rpb24gc21kX2ZlYXR1cmVk X3RhYmxlX2V4aXN0KCRhbGw9JycpIHsNCglpZiAoJGFsbCkgew0KCQkkdGJscyA9IGFycmF5 KFNNRF9GRUFUID0+IDcpOw0KCQkkb3V0ID0gY291bnQoJHRibHMpOw0KCQlmb3JlYWNoICgk dGJscyBhcyAkdGJsID0+ICRjb2xzKSB7DQoJCQlpZiAoZ3BzKCdkZWJ1ZycpKSB7DQoJCQkJ ZWNobyAiKysgVEFCTEUgIi4kdGJsLiIgSEFTICIuY291bnQoQHNhZmVfc2hvdygnY29sdW1u cycsICR0YmwpKS4iIENPTFVNTlM7IFJFUVVJUkVTICIuJGNvbHMuIiArKyIuYnI7DQoJCQl9 DQoJCQlpZiAoY291bnQoQHNhZmVfc2hvdygnY29sdW1ucycsICR0YmwpKSA9PSAkY29scykg ew0KCQkJCSRvdXQtLTsNCgkJCX0NCgkJfQ0KCQlyZXR1cm4gKCRvdXQ9PT0wKSA/IDEgOiAw Ow0KCX0gZWxzZSB7DQoJCWlmIChncHMoJ2RlYnVnJykpIHsNCgkJCWVjaG8gIisrIFRBQkxF ICIuU01EX0ZFQVQuIiBIQVMgIi5jb3VudChAc2FmZV9zaG93KCdjb2x1bW5zJywgU01EX0ZF QVQpKS4iIENPTFVNTlM7IjsNCgkJfQ0KCQlyZXR1cm4oQHNhZmVfc2hvdygnY29sdW1ucycs IFNNRF9GRUFUKSk7DQoJfQ0KfQ0KDQovLyAqKioqKioqKioqKioqKioqDQovLyBQVUJMSUMg U0lERSBUQUdTDQovLyAqKioqKioqKioqKioqKioqDQovLyAtLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0NCmZ1bmN0aW9uIHNtZF9mZWF0dXJlZCgkYXR0cywgJHRoaW5nKSB7DQoJZ2xvYmFs ICRzbWRfZmVhdHVyZWRfaW5mbywgJHNtZF9wcmlvcl9mZWF0dXJlZCwgJHByZWZzOw0KDQoJ ZXh0cmFjdChsQXR0cyhhcnJheSgNCgkJJ2xhYmVsJyAgICA9PiAnJywNCgkJJ3VubGFiZWwn ICA9PiAnRmVhdHVyZWQnLA0KCQknbGFiZWx0YWcnID0+ICcnLA0KCQkndGltZScgICAgID0+ ICdwYXN0JywNCgkJJ3N0YXR1cycgICA9PiAnNCw1JywNCgkJJ3NlY3Rpb24nICA9PiAnJywN CgkJJ2hpc3RvcnknICA9PiAnMScsDQoJCSdsaW1pdCcgICAgPT4gJzEwJywNCgkJJ3NvcnQn ICAgICA9PiAnZmVhdF9wb3NpdGlvbiBhc2MsIFBvc3RlZCBkZXNjJywNCgkJJ2Zvcm0nICAg ICA9PiAnJywNCgkJJ3dyYXB0YWcnICA9PiAnJywNCgkJJ2JyZWFrJyAgICA9PiAnJywNCgkJ J2NsYXNzJyAgICA9PiAnJywNCgkJJ2h0bWxfaWQnICA9PiAnJywNCgkJJ2RlYnVnJyAgICA9 PiAnJywNCgkpLCRhdHRzKSk7DQoNCgkkdW5sYWJlbCA9IHRyaW0oJHVubGFiZWwpOw0KCS8v IFVzZSBpc3NldCgpIGJlY2F1c2UgdW5sYWJlbGxlZCBhcnRpY2xlcyAoJGxhYmVsPSIiKSBp cyBhIHZhbGlkIHVzZXIgb3B0aW9uDQoJaWYgKGlzc2V0KCRhdHRzWydsYWJlbCddKSkgew0K CQkkbGFiZWwgPSB0cmltKCRsYWJlbCk7DQoJCWlmICgkbGFiZWwpIHsNCgkJCSR3aGVyZSA9 ICJCSU5BUlkgbGFiZWwgUkVHRVhQICciLiRsYWJlbC4iJyI7DQoJCX0gZWxzZSB7DQoJCQkk d2hlcmUgPSAibGFiZWw9JyciOw0KCQl9DQoJCXVuc2V0KCRhdHRzWydsYWJlbCddKTsNCgl9 IGVsc2Ugew0KCQkvLyBJZiBubyBsYWJlbCBhdHRyaWJ1dGUgaGFzIGJlZW4gZ2l2ZW4sIHRy ZWF0IHRoaXMgYXMgJ2FsbCBmZWF0dXJlZCBpdGVtcycNCgkJJGlkcyA9IHNhZmVfY29sdW1u KCdmZWF0X2lkJywgU01EX0ZFQVQsICcxPTEnKTsNCgkJJGlkcyA9IGpvaW4oIicsJyIsIGRv U2xhc2goJGlkcykpOw0KCQkkd2hlcmUgPSAic21kZmVhdC5mZWF0X2lkIElOICgnJGlkcycp IjsNCgl9DQoNCgkvLyBFeGNsdWRlIHByZXZpb3VzbHkgc2VlbiBhcnRpY2xlcw0KCWlmICgk aGlzdG9yeSAmJiAhZW1wdHkoJHNtZF9wcmlvcl9mZWF0dXJlZCkpIHsNCgkJJHdoZXJlIC49 ICcgQU5EIHNtZGZlYXQuZmVhdF9pZCBOT1QgSU4oJyAuIGpvaW4oJywnLCAkc21kX3ByaW9y X2ZlYXR1cmVkKSAuICcpJzsNCgl9DQoNCgkvLyBOT1RFOiB0aW1lIGlzIGxlZnQgaW4gdGhl ICRhdHRzIGFycmF5IGFuZCBwYXNzZWQgdG8gYXJ0aWNsZV9jdXN0b20uIE90aGVyd2lzZSB0 aGUgZGVmYXVsdA0KCS8vIHRpbWUgdmFsdWUgKHBhc3QpIHdpbGwgYmUgdXNlZA0KCWlmICgk dGltZSkgew0KCQlzd2l0Y2ggKCR0aW1lKSB7DQoJCQljYXNlICdhbnknOg0KCQkJCWJyZWFr Ow0KCQkJY2FzZSAnZnV0dXJlJzoNCgkJCQkkd2hlcmUgLj0gIiBBTkQgUG9zdGVkID4gbm93 KCkiOw0KCQkJCWJyZWFrOw0KCQkJZGVmYXVsdDoNCgkJCQkkd2hlcmUgLj0gIiBBTkQgUG9z dGVkIDw9IG5vdygpIjsNCgkJfQ0KCQlpZiAoISRwcmVmc1sncHVibGlzaF9leHBpcmVkX2Fy dGljbGVzJ10pIHsNCgkJCSR3aGVyZSAuPSAiIEFORCAobm93KCkgPD0gRXhwaXJlcyBPUiBF eHBpcmVzID0gIi5OVUxMREFURVRJTUUuIikiOw0KCQl9DQoJfQ0KDQoJaWYgKCRzdGF0dXMp IHsNCgkJJHdoZXJlIC49ICcgQU5EIFN0YXR1cyBJTiAoJy5qb2luKCcsJywgZG9fbGlzdCgk c3RhdHVzKSkuJyknOw0KCQl1bnNldCgkYXR0c1snc3RhdHVzJ10pOw0KCX0NCg0KCWlmICgk c2VjdGlvbikgew0KCQkkd2hlcmUgLj0gIiBBTkQgU2VjdGlvbiBJTiAoJyIuam9pbigiJywn IiwgZG9fbGlzdCgkc2VjdGlvbikpLiInKSI7DQoJCXVuc2V0KCRhdHRzWydzZWN0aW9uJ10p Ow0KCX0NCg0KCWlmICgkc29ydCkgew0KCQkkd2hlcmUgLj0nIE9SREVSIEJZICcuJHNvcnQ7 DQoJCXVuc2V0KCRhdHRzWydzb3J0J10pOw0KCX0NCg0KCS8vIExlYXZlIGxpbWl0IGluIHRo ZSAkYXR0cyBhcnJheSB0b28gc28gaXQgZG9lc24ndCBkZWZhdWx0IHRvIGFydGljbGVfY3Vz dG9tJ3MgdmFsdWUgaWYgc2V0IGhlcmUNCglpZiAoJGxpbWl0KSB7DQoJCSR3aGVyZSAuPScg TElNSVQgJy4kbGltaXQ7DQoJfQ0KDQoJLy8gRG9uJ3QgcGFzcyB0aGUgcmVtYWluaW5nIGF0 dHJpYnV0ZXMgd2UndmUgYWxyZWFkeSBoYW5kbGVkIG9udG8gdGhlIGFydGljbGVfY3VzdG9t IHRhZw0KCXVuc2V0KA0KCQkkYXR0c1snbGFiZWwnXSwNCgkJJGF0dHNbJ3VubGFiZWwnXSwN CgkJJGF0dHNbJ2xhYmVsdGFnJ10sDQoJCSRhdHRzWyd3cmFwdGFnJ10sDQoJCSRhdHRzWydi cmVhayddLA0KCQkkYXR0c1snY2xhc3MnXSwNCgkJJGF0dHNbJ2hpc3RvcnknXSwNCgkJJGF0 dHNbJ2h0bWxfaWQnXSwNCgkJJGF0dHNbJ2RlYnVnJ10NCgkpOw0KDQoJaWYgKCRkZWJ1Zykg ew0KCQllY2hvICcrKyBXSEVSRSArKyc7DQoJCWRtcCgkd2hlcmUpOw0KCX0NCg0KCSRycyA9 IGdldFJvd3MoJ1NFTEVDVCAqLCB1bml4X3RpbWVzdGFtcChQb3N0ZWQpIGFzIHVQb3N0ZWQs IHVuaXhfdGltZXN0YW1wKEV4cGlyZXMpIGFzIHVFeHBpcmVzLCB1bml4X3RpbWVzdGFtcChM YXN0TW9kKSBhcyB1TGFzdE1vZCBGUk9NICcuUEZYLid0ZXh0cGF0dGVybiBBUyB0eHAgTEVG VCBKT0lOICcuUEZYLlNNRF9GRUFULicgQVMgc21kZmVhdCBPTiB0eHAuSUQ9c21kZmVhdC5m ZWF0X2lkIFdIRVJFICcuJHdoZXJlLCAkZGVidWcpOw0KDQoJaWYgKCRkZWJ1ZyA+IDEgJiYg JHJzKSB7DQoJCWVjaG8gJysrIFJFQ09SRCBTRVQgKysnOw0KCQlkbXAoJHJzKTsNCgl9DQoN CgkkdHJ1ZVBhcnQgPSBFdmFsRWxzZSgkdGhpbmcsIDEpOw0KCSRmYWxzZVBhcnQgPSBFdmFs RWxzZSgkdGhpbmcsIDApOw0KDQoJJG91dCA9IGFycmF5KCk7DQoJaWYgKCRycykgew0KCQlm b3JlYWNoICgkcnMgYXMgJHJvdykgew0KCQkJJHNtZF9mZWF0dXJlZF9pbmZvWydsYWJlbCdd ID0gJHJvd1snbGFiZWwnXTsNCgkJCSRzbWRfZmVhdHVyZWRfaW5mb1sncG9zaXRpb24nXSA9 ICRyb3dbJ2ZlYXRfcG9zaXRpb24nXTsNCgkJCSRzbWRfZmVhdHVyZWRfaW5mb1sndGl0bGUn XSA9ICRyb3dbJ2ZlYXRfdGl0bGVfaHRtbCddOw0KCQkJJHNtZF9mZWF0dXJlZF9pbmZvWydk ZXNjcmlwdGlvbiddID0gJHJvd1snZGVzY19odG1sJ107DQoJCQkkYXR0c1snaWQnXSA9ICRy b3dbJ0lEJ107DQoNCgkJCSRhcnRvdXQgPSBhcnRpY2xlX2N1c3RvbSgkYXR0cywgJHRydWVQ YXJ0KTsNCg0KCQkJaWYgKCRhcnRvdXQpIHsNCgkJCQkkc21kX3ByaW9yX2ZlYXR1cmVkW10g PSAkcm93WydJRCddOw0KCQkJCSRvdXRbXSA9ICRhcnRvdXQ7DQoJCQl9DQoJCX0NCgl9IGVs c2Ugew0KCQlyZXR1cm4gcGFyc2UoJGZhbHNlUGFydCk7DQoJfQ0KCWlmICgkb3V0KSB7DQoJ CXJldHVybiAoKCRsYWJlbHRhZykgPyBkb0xhYmVsKCAoICgkbGFiZWwgPT0gJycpID8gJHVu bGFiZWwgOiAkbGFiZWwpLCAkbGFiZWx0YWcgKSA6ICcnKQ0KCQkJLmRvV3JhcCgkb3V0LCAk d3JhcHRhZywgJGJyZWFrLCAkY2xhc3MsICcnLCAnJywgJycsICRodG1sX2lkKTsNCgl9DQoJ cmV0dXJuICcnOw0KfQ0KDQovLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCmZ1bmN0aW9u IHNtZF91bmZlYXR1cmVkKCRhdHRzLCAkdGhpbmcpIHsNCglnbG9iYWwgJHNtZF9wcmlvcl9m ZWF0dXJlZCwgJHRoaXNwYWdlLCAkcHJldGV4dDsNCg0KCSR0aW1lID0gKGlzc2V0KCRhdHRz Wyd0aW1lJ10pKSA/ICRhdHRzWyd0aW1lJ10gOiAnJzsNCgkkc3RhdHVzID0gKGlzc2V0KCRh dHRzWydzdGF0dXMnXSkpID8gJGF0dHNbJ3N0YXR1cyddIDogNDsNCgkkc2VjdGlvbiA9IChp c3NldCgkYXR0c1snc2VjdGlvbiddKSkgPyAkYXR0c1snc2VjdGlvbiddIDogJyc7DQoJJGhp c3RvcnkgPSAoaXNzZXQoJGF0dHNbJ2hpc3RvcnknXSkpID8gJGF0dHNbJ2hpc3RvcnknXSA6 ICcxJzsNCgl1bnNldCgkYXR0c1snaGlzdG9yeSddKTsNCg0KCSR3aGVyZSA9ICIxPTEiOw0K DQoJaWYgKCR0aW1lKSB7DQoJCXN3aXRjaCAoJHRpbWUpIHsNCgkJCWNhc2UgJ2FueSc6DQoJ CQkJYnJlYWs7DQoJCQljYXNlICdmdXR1cmUnOg0KCQkJCSR3aGVyZSAuPSAiIEFORCBQb3N0 ZWQgPiBub3coKSI7DQoJCQkJYnJlYWs7DQoJCQlkZWZhdWx0Og0KCQkJCSR3aGVyZSAuPSAi IEFORCBQb3N0ZWQgPD0gbm93KCkiOw0KCQl9DQoJCWlmICghJHByZWZzWydwdWJsaXNoX2V4 cGlyZWRfYXJ0aWNsZXMnXSkgew0KCQkJJHdoZXJlIC49ICIgQU5EIChub3coKSA8PSBFeHBp cmVzIE9SIEV4cGlyZXMgPSAiLk5VTExEQVRFVElNRS4iKSI7DQoJCX0NCgl9DQoNCglpZiAo JHN0YXR1cykgew0KCQkkd2hlcmUgLj0gJyBBTkQgU3RhdHVzIElOICgnLmpvaW4oJywnLCBk b19saXN0KCRzdGF0dXMpKS4nKSc7DQoJfQ0KDQoJaWYgKCRzZWN0aW9uKSB7DQoJCSR3aGVy ZSAuPSAiIEFORCBTZWN0aW9uIElOICgnIi5qb2luKCInLCciLCBkb19saXN0KCRzZWN0aW9u KSkuIicpIjsNCgl9DQoNCgkvLyBFeGNsdWRlIHByZXZpb3VzbHkgc2VlbiBhcnRpY2xlcw0K CWlmICgkaGlzdG9yeSAmJiAhZW1wdHkoJHNtZF9wcmlvcl9mZWF0dXJlZCkpIHsNCgkJJHdo ZXJlIC49ICcgQU5EIGlkIE5PVCBJTignIC4gam9pbignLCcsICRzbWRfcHJpb3JfZmVhdHVy ZWQpIC4gJyknOw0KCX0NCg0KCSRvZmZzZXQgPSAoaXNzZXQoJGF0dHNbJ29mZnNldCddKSkg PyAkYXR0c1snb2Zmc2V0J10gOiAwOw0KDQoJaWYgKGlzc2V0KCRhdHRzWydsaW1pdCddKSAm JiBpc3NldCgkYXR0c1sncGFnZWJ5J10pKSB7DQoJCSRsaW1pdCA9ICRhdHRzWydsaW1pdCdd Ow0KCQkkcGFnZWJ5ID0gJGF0dHNbJ3BhZ2VieSddOw0KCQkkcGFnZWJ5ID0gKCRwYWdlYnkg PT0gJ2xpbWl0JykgPyAkbGltaXQgOiAkcGFnZWJ5Ow0KCQkkcGcgPSBncHMoJ3BnJyk7DQoN CgkJJGdyYW5kX3RvdGFsID0gc2FmZV9jb3VudCgndGV4dHBhdHRlcm4nLCR3aGVyZSk7DQoJ CSR0b3RhbCA9ICRncmFuZF90b3RhbCAtICRvZmZzZXQ7DQoJCSRudW1QYWdlcyA9IGNlaWwo JHRvdGFsLyRwYWdlYnkpOw0KCQkkcGcgPSAoISRwZykgPyAxIDogJHBnOw0KCQkkcGdvZmZz ZXQgPSAkb2Zmc2V0ICsgKCgkcGcgLSAxKSAqICRwYWdlYnkpOw0KCQkvLyBzZW5kIHBhZ2lu ZyBpbmZvIHRvIHR4cDpuZXdlciBhbmQgdHhwOm9sZGVyDQoJCSRwYWdlb3V0WydwZyddICAg ICAgICAgID0gJHBnOw0KCQkkcGFnZW91dFsnbnVtUGFnZXMnXSAgICA9ICRudW1QYWdlczsN CgkJJHBhZ2VvdXRbJ3MnXSAgICAgICAgICAgPSAkcHJldGV4dFsncyddOw0KCQkkcGFnZW91 dFsnYyddICAgICAgICAgICA9ICRwcmV0ZXh0WydjJ107DQoJCSRwYWdlb3V0Wydjb250ZXh0 J10gICAgID0gJ2FydGljbGUnOw0KCQkkcGFnZW91dFsnZ3JhbmRfdG90YWwnXSA9ICRncmFu ZF90b3RhbDsNCgkJJHBhZ2VvdXRbJ3RvdGFsJ10gICAgICAgPSAkdG90YWw7DQoNCgkJaWYg KGVtcHR5KCR0aGlzcGFnZSkpIHsNCgkJCSR0aGlzcGFnZSA9ICRwYWdlb3V0Ow0KCQl9DQoJ fSBlbHNlIHsNCgkJJHBnb2Zmc2V0ID0gJG9mZnNldDsNCgl9DQoNCgkkdHJ1ZVBhcnQgPSBF dmFsRWxzZSgkdGhpbmcsIDEpOw0KCSRmYWxzZVBhcnQgPSBFdmFsRWxzZSgkdGhpbmcsIDAp Ow0KDQoJJHJzID0gc2FmZV9jb2x1bW4oJ0lEJywgJ3RleHRwYXR0ZXJuJywgJHdoZXJlKTsN CglpZiAoJHJzKSB7DQoJCSRhdHRzWydvZmZzZXQnXSA9ICRwZ29mZnNldDsNCgkJJGF0dHNb J2lkJ10gPSBqb2luKCcsJywgJHJzKTsNCgkJJG91dCA9IGFydGljbGVfY3VzdG9tKCRhdHRz LCAkdHJ1ZVBhcnQpOw0KCQlyZXR1cm4gJG91dDsNCgl9IGVsc2Ugew0KCQlyZXR1cm4gcGFy c2UoJGZhbHNlUGFydCk7DQoJfQ0KfQ0KDQovLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0N CmZ1bmN0aW9uIHNtZF9mZWF0dXJlZF9pbmZvKCRhdHRzKSB7DQoJZ2xvYmFsICRzbWRfZmVh dHVyZWRfaW5mbzsNCg0KCWV4dHJhY3QobEF0dHMoYXJyYXkoDQoJCSdpdGVtJyA9PiAnJywN CgkpLCRhdHRzKSk7DQoNCglyZXR1cm4gKGlzc2V0KCRzbWRfZmVhdHVyZWRfaW5mb1skaXRl bV0pID8gJHNtZF9mZWF0dXJlZF9pbmZvWyRpdGVtXSA6ICcnKTsNCn0NCg0KLy8gLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tDQpmdW5jdGlvbiBzbWRfaWZfZmVhdHVyZWQoJGF0dHMsICR0 aGluZykgew0KCWdsb2JhbCAkc21kX2ZlYXR1cmVkX2luZm8sICR0aGlzYXJ0aWNsZTsNCg0K CWV4dHJhY3QobEF0dHMoYXJyYXkoDQoJCSdpZCcgPT4gJycsDQoJCSdsYWJlbCcgPT4gJycs DQoJKSwkYXR0cykpOw0KDQoJaWYgKCRpZCkgew0KCQkkaWQgPSBqb2luKCInLCciLCBkb19s aXN0KGRvU2xhc2goJGlkKSkpOw0KCX0NCg0KCWlmICghJGlkICYmICR0aGlzYXJ0aWNsZSkg ew0KCQkkaWQgPSAkdGhpc2FydGljbGVbJ3RoaXNpZCddOw0KCX0NCg0KCSR3aGVyZVtdID0g ImZlYXRfaWQgSU4gKCciLiRpZC4iJykiOw0KDQoJaWYgKGlzc2V0KCRhdHRzWydsYWJlbCdd KSkgew0KCQkkbGFiZWwgPSBleHBsb2RlKCcsJywgZG9TbGFzaCh0cmltKCRsYWJlbCkpKTsN CgkJJGxibHdoZXJlID0gYXJyYXkoKTsNCgkJZm9yZWFjaCAoJGxhYmVsIGFzICRsYmwpIHsN CgkJCSRsYmx3aGVyZVtdID0gIiciLnRyaW0oJGxibCkuIiciOw0KCQl9DQoJCWlmICgkbGJs d2hlcmUpIHsNCgkJCSR3aGVyZVtdID0gJyggQklOQVJZIGxhYmVsIElOICgnIC4gam9pbign LCcsICRsYmx3aGVyZSkgLiAnKSApJzsNCgkJfQ0KCX0NCg0KCSRyZXQgPSBzYWZlX3Jvdygn ZmVhdF9pZCcsIFNNRF9GRUFULCBqb2luKCcgQU5EJywgJHdoZXJlKSk7DQoNCglyZXR1cm4g cGFyc2UoRXZhbEVsc2UoJHRoaW5nLCAkcmV0KSk7DQp9DQoNCi8vIC0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLQ0KLy8gUGx1Z2luLXNwZWNpZmljIHJlcGxhY2VtZW50IHN0cmluZ3MgLSBs b2NhbGlzZSBhcyByZXF1aXJlZA0KLy8gVE9ETzogbWFrZSB0aGVzZSBpbnRvIGEgdGV4dHBh Y2sgd2hlbiBwbHVnaW4gY29tcG9zZXIgc3VwcG9ydHMgdGhlbQ0KZnVuY3Rpb24gc21kX2Zl YXR1cmVkX2dUeHQoJHdoYXQsICRhdHRzID0gYXJyYXkoKSkgew0KCSRsYW5nID0gYXJyYXko DQoJCSdieV9sYWJlbCcgPT4gJ0J5IGxhYmVsOiAnLA0KCQknYnlfbmFtZScgPT4gJ0J5IG5h bWU6ICcsDQoJCSdjb250cm9sX3BhbmVsJyA9PiAnQ29udHJvbCBwYW5lbCcsDQoJCSdkZXNj JyA9PiAnRGVzY3JpcHRpb24nLA0KCQknbGFiZWwnID0+ICdMYWJlbCcsDQoJCSdsYmxfZWRh cnQnID0+ICdFZGl0IGZ1bGwgYXJ0aWNsZSBpbiB0aGUgV3JpdGUgcGFuZWwnLA0KCQknbGJs X2VkcG9zJyA9PiAnU2V0IHRoZSBhcnRpY2xlIHNvcnQgcG9zaXRpb24nLA0KCQknbGJsX2Vk ZmVhdCcgPT4gJ0xhYmVsIGFuZCBlZGl0IGZlYXR1cmVkIGNvbnRlbnQnLA0KCQknbGJsX3Vu ZmVhdHVyZScgPT4gJ1VuZmVhdHVyZSB0aGlzIGFydGljbGUnLA0KCQknbWFuYWdlX2xibCcg PT4gJ0NsaWNrIHRvIHNlbGVjdCBmZWF0dXJlZCBhcnRpY2xlcywgd2hpY2ggd2lsbCB0aGVu IGJlIGRpc3BsYXllZCA8c3BhbiBjbGFzcz0ic21kX2ZlYXR1cmVkIj48YSBocmVmPSIjIiBz dHlsZT0ibWFyZ2luOjAgOHB4OyI+SGlnaGxpZ2h0ZWQ8L2E+PC9zcGFuPi4nLA0KCQkncG9z aXRpb24nID0+ICdQb3NpdGlvbicsDQoJCSdwcmVmcycgPT4gJ1ByZWZlcmVuY2VzJywNCgkJ J3ByZWZfYm94c2l6ZScgPT4gJ0JveCBzaXplOiAnLA0KCQkncHJlZl9ib3hzaXplYnknID0+ ICcgeCAnLA0KCQkncHJlZl9kaXNwbGF5JyA9PiAnRGlzcGxheTogJywNCgkJJ3ByZWZfc29y dCcgPT4gJ1NvcnQgYnk6ICcsDQoJCSdwcmVmc19zb21lX2V4cGxhaW4nID0+ICdUaGlzIGlz IGVpdGhlciBhIG5ldyBpbnN0YWxsYXRpb24gb3IgYSBkaWZmZXJlbnQgdmVyc2lvbicuYnIu J29mIHRoZSBwbHVnaW4gdG8gb25lIHlvdSBoYWQgYmVmb3JlLicsDQoJCSdwcmVmc19zb21l X29wdHMnID0+ICdDbGljayAiSW5zdGFsbCB0YWJsZSIgdG8gYWRkIG9yIHVwZGF0ZSB0aGUg dGFibGUnLmJyLidsZWF2aW5nIGFsbCBleGlzdGluZyBkYXRhIHVudG91Y2hlZC4nLA0KCQkn cHJlZnNfc29tZV90YmwnID0+ICdOb3QgYWxsIHRhYmxlIGluZm8gYXZhaWxhYmxlLicsDQoJ CSdzYXZlZCcgPT4gJ0FydGljbGUgaW5mbyB1cGRhdGVkJywNCgkJJ3NlYXJjaF9saXZlJyA9 PiAnQXJ0aWNsZSBsaXZlIHNlYXJjaCcsDQoJCSdzZWFyY2hfc3RhbmRhcmQnID0+ICdBcnRp Y2xlIHNlYXJjaCcsDQoJCSd0YWJfbmFtZScgPT4gJ0ZlYXR1cmVkIGFydGljbGVzJywNCgkJ J3RibF9pbnN0YWxsX2xibCcgPT4gJ0luc3RhbGwgdGFibGUnLA0KCQkndGJsX2luc3RhbGxl ZCcgPT4gJ1RhYmxlIGluc3RhbGxlZCcsDQoJCSd0Ymxfbm90X2luc3RhbGxlZCcgPT4gJ1Rh YmxlIG5vdCBpbnN0YWxsZWQnLA0KCQkndGJsX3JlbW92ZWQnID0+ICdUYWJsZSByZW1vdmVk JywNCgkJJ3RibF9ub3RfcmVtb3ZlZCcgPT4gJ1RhYmxlIG5vdCByZW1vdmVkJywNCgkJJ3Nl Y3Rpb25fbGlzdCcgPT4gJ0FydGljbGVzIGZyb20gc2VjdGlvbnM6ICcsDQoJCSdzaG93X3Vp JyA9PiAnUGVybWl0IGVudHJ5IG9mOiAnLA0KCQkndGV4dGlsZScgPT4gJ0FwcGx5IHRleHRp bGUgdG86ICcsDQoJCSd0aXRsZScgPT4gJ1RpdGxlJywNCgkJJ3VuZmVhdHVyZV9jb25maXJt JyA9PiAnQXJlIHlvdSBzdXJlIHlvdSB3YW50IHRvIHJlbW92ZSB0aGlzIGFydGljbGUgZnJv bSB0aGUgZmVhdHVyZWQgbGlzdD8nLA0KCQkndW5sYWJlbGxlZCcgPT4gJ1t1bmxhYmVsbGVk XScsDQoJKTsNCglyZXR1cm4gc3RydHIoJGxhbmdbJHdoYXRdLCAkYXR0cyk7DQp9IjtzOjQ6 InR5cGUiO3M6MToiMSI7czo1OiJvcmRlciI7czoxOiI1IjtzOjU6ImZsYWdzIjtzOjE6IjIi O3M6NDoiaGVscCI7czoyNTQzOToiPGRpdiBpZD0ic21kX2hlbHAiPgoKCTxoMT5zbWRfZmVh dHVyZWQ8L2gxPgoKCTxwPlB1bGwgb25lIG9yIG1vcmUgYXJ0aWNsZXMgb3V0IG9mIHRoZSBy ZWd1bGFyIGFydGljbGUgZmxvdyBhbmQgcGltcCB0aGVtICYjODIxMjsgcGVyaGFwcyBvbiBh IHNlY3Rpb24gbGFuZGluZyBwYWdlIG9yIHlvdXIgaG9tZSBwYWdlLjwvcD4KCgk8aDI+RmVh dHVyZXM8L2gyPgoKCTx1bD4KCQk8bGk+T25lLWNsaWNrIHNlbGVjdGlvbiBvZiBhcnRpY2xl cyB0byBmZWF0dXJlPC9saT4KCQk8bGk+TGFiZWwgeW91ciBmZWF0dXJlZCBhcnRpY2xlcywg YWxsb3dpbmcgeW91IHRvIGdyb3VwIHRoZW0gaW50byBhcmVhcyBsaWtlIEZlYXR1cmVkLCBU ZWFzZXJzLCBldGM8L2xpPgoJCTxsaT5BZGQgYW4gb3B0aW9uYWwgdGl0bGUvZGVzY3JpcHRp b24gdG8gZWFjaCBhcnRpY2xlIHNvIHlvdSBjYW4gdXNlIHRoYXQgYXMgY29weSwgaW5zdGVh ZCBvZiBzb21ldGhpbmcgZnJvbSB0aGUgYXJ0aWNsZSBpdHNlbGYgKHN1cHBvcnRzIFRleHRp bGUgYW5kIHNvbWUgPHNwYW4gY2xhc3M9ImNhcHMiPlRYUDwvc3Bhbj4gdGFncyk8L2xpPgoJ CTxsaT5TZWFyY2ggeW91ciBmZWF0dXJlZCBhcnRpY2xlcyBieSBuYW1lIG9yIGxhYmVsOyBm aWx0ZXJpbmcgaW4gcmVhbC10aW1lIGlmIHlvdSB3aXNoPC9saT4KCQk8bGk+QWRtaW5pc3Ry YXRvcnMgY2FuIGxpbWl0IHRoZSBhcnRpY2xlcyBhdmFpbGFibGUgZm9yIHBpbXBhZ2UgZnJv bSBjZXJ0YWluIHNlY3Rpb25zPC9saT4KCQk8bGk+RGlzcGxheSBpbmZvcm1hdGlvbiBmcm9t IHRoZSBmZWF0dXJlZCBhcnRpY2xlcyB1c2luZyByZWd1bGFyIDxzcGFuIGNsYXNzPSJjYXBz Ij5UWFA8L3NwYW4+IGFydGljbGUgdGFnczwvbGk+CgkJPGxpPktlZXBzIHRyYWNrIG9mIHdo aWNoIGFydGljbGVzIGhhdmUgYmVlbiBzZWVuIGFscmVhZHkgb24gdGhlIHBhZ2Ugc28gbGF0 ZXIgZmVhdHVyZWQgKG9yIHVuZmVhdHVyZWQpIGFydGljbGVzIGFyZW4mIzgyMTc7dCBkdXBs aWNhdGVkPC9saT4KCTwvdWw+CgoJPGgyPkF1dGhvciAvIENyZWRpdHM8L2gyPgoKCTxwPjxh IGhyZWY9Imh0dHA6Ly9zdGVmZGF3c29uLmNvbS9jb250YWN0Ij5TdGVmIERhd3NvbjwvYT48 L3A+CgoJPGgyPkluc3RhbGxhdGlvbiAvIFVuaW5zdGFsbGF0aW9uPC9oMj4KCgk8cCBjbGFz cz0iaW1wb3J0YW50Ij5SZXF1aXJlcyBUZXh0cGF0dGVybiA0LjMuMCsgKDQuNC4xIG9yIGhp Z2hlciByZWNvbW1lbmRlZCk8L3A+CgoJPHA+RG93bmxvYWQgdGhlIHBsdWdpbiBmcm9tIGVp dGhlciA8YSBocmVmPSJodHRwOi8vdGV4dHBhdHRlcm4ub3JnL3BsdWdpbnMvMTE3NC9zbWRf ZmVhdHVyZWQiPnRleHRwYXR0ZXJuLm9yZzwvYT4sIG9yIHRoZSA8YSBocmVmPSJodHRwOi8v c3RlZmRhd3Nvbi5jb20vc3ciPnNvZnR3YXJlIHBhZ2U8L2E+LCBwYXN0ZSB0aGUgY29kZSBp bnRvIHRoZSA8c3BhbiBjbGFzcz0iY2FwcyI+VFhQPC9zcGFuPiBBZG1pbiAtJmd0OyBQbHVn aW5zIHBhbmUsIGluc3RhbGwgYW5kIGVuYWJsZSB0aGUgcGx1Z2luLiBWaXNpdCB0aGUgPGEg aHJlZj0iaHR0cDovL2ZvcnVtLnRleHRwYXR0ZXJuLmNvbS92aWV3dG9waWMucGhwP2lkPTMz OTM4Ij5mb3J1bSB0aHJlYWQ8L2E+IGZvciBtb3JlIGluZm8gb3IgdG8gcmVwb3J0IG9uIHRo ZSBzdWNjZXNzIG9yIG90aGVyd2lzZSBvZiB0aGUgcGx1Z2luLjwvcD4KCgk8cD5XaGVuIHlv dSBpbnN0YWxsIHRoZSBwbHVnaW4sIHRoZSBuZWNlc3NhcnkgdGFibGUgaXMgYXV0b21hdGlj YWxseSBpbnN0YWxsZWQgZm9yIHlvdS4gVGhlcmUmIzgyMTc7cyBjdXJyZW50bHkgbm8gZmFj aWxpdHkgZm9yIHJlbW92aW5nIGl0IGR1cmluZyBwbHVnaW4gb3BlcmF0aW9uLCBidXQgaXQg d2lsbCBiZSBkZWxldGVkIGlmIHRoZSBwbHVnaW4gaXMgZGVsZXRlZCBmcm9tIHlvdXIgc3lz dGVtLiBOb3RlIHRoYXQgaWYgeW91IHB1dCB0aGUgcGx1Z2luIGluIHRoZSBjYWNoZSBkaXIg YW5kIHRoZXJlZm9yZSBkb24mIzgyMTc7dCBnbyB0aG91Z2ggdGhlIG5vcm1hbCBpbnN0YWxs YXRpb24gcHJvY2VkdXJlLCB0aGUgdGFibGUgaXMgPHN0cm9uZz5ub3Q8L3N0cm9uZz4gaW5z dGFsbGVkIGF1dG9tYXRpY2FsbHk7IHZpc2l0IHRoZSA8ZW0+Q29udGVudC0mZ3Q7RmVhdHVy ZWQgYXJ0aWNsZXM8L2VtPiB0YWIgYW5kIGNsaWNrIHRoZSA8ZW0+SW5zdGFsbCB0YWJsZTwv ZW0+IGJ1dHRvbi48L3A+CgoJPHA+VG8gdW5pbnN0YWxsLCBzaW1wbHkgZGVsZXRlIHRoZSBw bHVnaW4gZnJvbSB0aGUgPGVtPkFkbWluLSZndDtQbHVnaW5zPC9lbT4gcGFnZS48L3A+CgoJ PHAgY2xhc3M9ImltcG9ydGFudCI+VW5mb3J0dW5hdGVseSwgd2hlbiB1cGdyYWRpbmcgZnJv bSB2MC4zeCB0byB2MC40MCwgeW91ciBUZXh0aWxlIHByZWZlcmVuY2VzIHdpbGwgYmUgbG9z dC4gUGxlYXNlIHJlc2V0IHRoZW0gYnkgdmlzaXRpbmcgdGhlIDxlbT5GZWF0dXJlZCBhcnRp Y2xlczwvZW0+IHRhYiB3aXRoIGFuIGFkbWluaXN0cmF0b3IgYWNjb3VudCBhbmQgYWRqdXN0 aW5nIHRoZSBwcmVmcy48L3A+CgoJPGgyPkNvbmZpZ3VyaW5nIGZlYXR1cmVkIGFydGljbGVz PC9oMj4KCgk8cD5WaXNpdCB0aGUgPGVtPkNvbnRlbnQtJmd0O0ZlYXR1cmVkIGFydGljbGVz PC9lbT4gdGFiLiBBIGxpc3Qgb2YgYWxsIGFydGljbGVzIChmcm9tIHRoZSBhZG1pbi1zZWxl Y3RlZCBzZWN0aW9ucykgYXJlIHByZXNlbnRlZCBpbiBhIGdyaWQuPC9wPgoKCTxoMz5UbyBm ZWF0dXJlIGFuIGFydGljbGU8L2gzPgoKCTxwPkNsaWNrIGl0cyBuYW1lLiBJdCB3aWxsIGJl IGhpZ2hsaWdodGVkIGFuZCAoaWYgcGVybWl0dGVkIGJ5IHRoZSBhZG1pbmlzdHJhdG9yKSBh biA8Y29kZT5bRWRpdF08L2NvZGU+IGJ1dHRvbiBhcHBlYXJzIGJlc2lkZSBpdC4gSWYgeW91 IGNob29zZSBub3QgdG8gZWRpdCB0aGUgYXJ0aWNsZSBpbmZvcm1hdGlvbiwgaXQgd2lsbCBi ZSBmZWF0dXJlZCBidXQgdW5sYWJlbGxlZC48L3A+CgoJPHA+QW4gYXJyb3cgYWxzbyBhcHBl YXJzIGluIHRoZSBsb3dlciByaWdodCBoYW5kIGNvcm5lciBvZiB0aGUgYm94LiBDbGljayB0 aGlzIHRvIHRha2UgeW91IHRvIHRoZSBXcml0ZSB0YWIgdG8gdmlldy9lZGl0IHRoZSBvcmln aW5hbCBhcnRpY2xlLiBUaGUgc2FtZSBsaW5rIGlzIGF2YWlsYWJsZSBieSBjbGlja2luZyB0 aGUgYXJ0aWNsZSBUaXRsZSB3aGlsZSBlZGl0aW5nIGFuIGVudHJ5LjwvcD4KCgk8cD5JbiB0 aGUgbG93ZXIgbGVmdCBjb3JuZXIgb2YgdGhlIGJveCwgYSBwb3NpdGlvbiBpbnB1dCBmaWVs ZCBhcHBlYXJzLiBZb3UgY2FuIHR5cGUgYW55dGhpbmcgaW4gdGhpcyBib3ggdG8gc3BlY2lm eSBhIHNvcnQgb3JkZXIgZm9yIHRoZSBmZWF0dXJlZCBpdGVtOyBhcyBzb29uIGFzIHRoZSBj dXJzb3IgbGVhdmVzIHRoZSBib3ggdGhlIHZhbHVlIGlzIHNhdmVkLiBZb3UgYXJlIGZyZWUg dG8gdXNlIHdoaWNoZXZlciBzb3J0IHNjaGVtZSB3b3JrcyBmb3IgeW91ICYjODIxMjsgbnVt YmVycywgYWxwaGFudW1lcmljcywgc3F1aWdnbGVzLCBhbnl0aGluZy4gVGhpcyBkb2VzIG5v dCBhbHRlciB0aGUgb3JkZXIgb2YgdGhlIGl0ZW1zIGluIHRoZSBncmlkICh1c2UgdGhlIDxl bT5Tb3J0IGJ5PC9lbT4gdmFsdWUgaW4gdGhlIHBsdWdpbiYjODIxNztzIGNvbnRyb2wgcGFu ZWwgZm9yIHRoYXQpIGJ1dCBhbGxvd3MgeW91IHRvIG9yZGVyIHRoZSBpdGVtcyBhcyB0aGV5 IGFwcGVhciBvbiB5b3VyIHNpdGUuIFlvdSBtYXkgbGVhdmUgdGhpcyBib3ggZW1wdHkgaWYg eW91IHdpc2guIE5vdGUgdGhhdCBzb3J0aW5nIGlzIHBlcmZvcm1lZCBvbiBhIHBlci1sYWJl bCBiYXNpcyBzbyB5b3UgbWF5IHJldXNlIHNvcnQgdmFsdWVzIHVuZGVyIGRpZmZlcmVudCBs YWJlbHMuPC9wPgoKCTxwPkNsaWNraW5nIDxjb2RlPltFZGl0XTwvY29kZT4gd2lsbCBkaXNw bGF5IHVwIHRvIGZvdXIgaW5wdXQgYm94ZXMsIGRlcGVuZGluZyBvbiB0aGUgPGEgaHJlZj0i I3NtZF9mZWF0X3ByZWZzIj5wcmVmczwvYT46PC9wPgoKCTx1bD4KCQk8bGk+PHN0cm9uZz5M YWJlbDwvc3Ryb25nPiA6IGFsbG93cyB5b3UgdG8gbGFiZWwgKGdyb3VwKSB0aGUgYXJ0aWNs ZSB3aXRoIG90aGVycyBvZiBhIHNpbWlsYXIgZmVhdHVyZWQgc3RhdHVzLiBGb3IgZXhhbXBs ZSwgeW91IGNvdWxkIGxhYmVsIHNvbWUgYXJ0aWNsZXMgdG8gZ28gaW4gYSAmIzgyMTY7dGVh c2VycyYjODIxNzsgYmxvY2sgb24geW91ciBob21lIHBhZ2UgYnkgbGFiZWxsaW5nIGVhY2gg cG90ZW50aWFsIGFydGljbGUgd2l0aCA8Y29kZT5UZWFzZXI8L2NvZGU+LiBCZSBjYXJlZnVs OiA8c3Ryb25nPmxhYmVscyBhcmUgY2FzZSBzZW5zaXRpdmU8L3N0cm9uZz4uIFRvIGhlbHAs IHlvdSBtYXkgY2hvb3NlIGEgbGFiZWwgZnJvbSB0aGUgZHJvcGRvd24gbGlzdCBvZiBhbGwg Y3VycmVudGx5IGRlZmluZWQgbGFiZWxzIG9yIGVudGVyIGEgbmV3IG9uZS48L2xpPgoJCTxs aT48c3Ryb25nPlRpdGxlPC9zdHJvbmc+IDogYWxsb3dzIHlvdSB0byBzdG9yZSBzb21lIFRl eHRpbGUtYXdhcmUgdGl0bGUgcmVsYXRlZCB0byB0aGUgYXJ0aWNsZS4gVGhpcyBpcyBkaWZm ZXJlbnQgZnJvbSB0aGUgYXJ0aWNsZSYjODIxNztzIGFjdHVhbCBUaXRsZSBhbmQgY2FuIGJl IHVzZWQgZm9yIGFueSBwdXJwb3NlIHlvdSBzZWUgZml0LjwvbGk+CgkJPGxpPjxzdHJvbmc+ RGVzY3JpcHRpb248L3N0cm9uZz4gOiBhbGxvd3MgeW91IHRvIHN0b3JlIHNvbWUgVGV4dGls ZS1hd2FyZSBzdXBwb3J0aW5nIGluZm9ybWF0aW9uIGFib3V0IHRoZSBhcnRpY2xlLiBUaGlz IGNvdWxkIHNpbXBseSBiZSBhZGRpdGlvbmFsIGluZm9ybWF0aW9uIGZvciB5b3VyIG93biB1 c2UsIG9yIHNvbWUgY29weSB0aGF0IHlvdSBtYXkgd2lzaCB0byBkaXNwbGF5IGluIHlvdXIg dGVhc2VycyBibG9jayB0byBlbnRpY2UgcGVvcGxlIHRvIHJlYWQgdGhlIGFydGljbGUuIEl0 IGNhbiBiZSBhcyBzaW1wbGUgb3IgYXMgY29tcGxleCBhcyB5b3UgbGlrZSBhbmQgY2FuIGNv bnRhaW4gPHNwYW4gY2xhc3M9ImNhcHMiPlRYUDwvc3Bhbj4gdGFncyAoaWYgdGhleSBtYWtl IHNlbnNlIHRvIHVzZSBhdCB0aGF0IHBvaW50ICYjODIxMjsgYXJ0aWNsZSB0YWdzIGNhbm5v dCBiZSB1c2VkLCBmb3IgZXhhbXBsZSwgYnV0IDxjb2RlPiZsdDt0eHA6c2l0ZV91cmwgLyZn dDs8L2NvZGU+IGNhbikuPC9saT4KCQk8bGk+PHN0cm9uZz5Qb3NpdGlvbjwvc3Ryb25nPiA6 IGFsbG93cyB5b3UgdG8gc3RvcmUgc29tZSBwb3NpdGlvbmluZyB0ZXh0ICh1cCB0byAxNiBj aGFyYWN0ZXJzKSB0aGF0IGdvdmVybnMgdGhlIG9yZGVyIHRoaXMgaXRlbSBhcHBlYXJzIG9u IHlvdXIgc2l0ZS4gVGhpcyBpcyB0aGUgc2FtZSB2YWx1ZSBhcyBpbiB0aGUgbGl0dGxlIGJv eCBpbiB0aGUgbG93ZXIgbGVmdCBjb3JuZXIgb2YgdGhlIGFydGljbGUgY2VsbC48L2xpPgoJ PC91bD4KCgk8cD5XaGVuIHlvdSYjODIxNztyZSBoYXBweSB3aXRoIHlvdXIgdmFsdWVzLCBo aXQgU2F2ZSB0byBzdG9yZSB0aGUgZW50cnkuIFlvdSBjYW4gZWRpdCB0aGUgaW5mb3JtYXRp b24gYXQgYW55IHRpbWUgYnkgY2xpY2tpbmcgdGhlIGFwcHJvcHJpYXRlIDxjb2RlPltFZGl0 XTwvY29kZT4gYnV0dG9uIGZyb20gdGhlIGZlYXR1cmVkIGFydGljbGUgbGlzdC48L3A+CgoJ PGgzPlRvIHVuZmVhdHVyZSBhbiBhcnRpY2xlPC9oMz4KCgk8cD5DbGljayBpdHMgbmFtZSBh Z2Fpbi4gWW91IG1heSBiZSBvZmZlcmVkIGEgY29uZmlybWF0aW9uIGRpYWxvZyBib3gsIGlu IHdoaWNoIGNhc2UgY29uZmlybSB0aGF0IHlvdSBhcmUgc3VyZSBmaXJzdC4gVGhlIGFydGlj bGUmIzgyMTc7cyBsYWJlbCwgdGl0bGUgYW5kIGRlc2NyaXB0aW9uIGFyZSBkZWxldGVkLCBz byBiZSBzdXJlIHlvdSByZWFsbHkgd2FudCB0byByZW1vdmUgdGhlbSwgb3IgaGF2ZSBiYWNr ZWQgdGhlIGluZm9ybWF0aW9uIHVwIHNvbWV3aGVyZS48L3A+CgoJPGgzPkZpbmRpbmcgYXJ0 aWNsZXMgdG8gZmVhdHVyZTwvaDM+CgoJPHA+V2l0aCBsYXJnZSBhcnRpY2xlIGxpc3RzIGl0 IGNhbiBiZWNvbWUgZGlmZmljdWx0IHRvIGZpbmQgdGhlIG9uZSB5b3Ugd2FudC4gQWJvdmUg dGhlIGdyaWQgaXMgYSBjb250cm9sIHBhbmVsLiBDbGljayBpdCB0byByZXZlYWwgdGhlIHBs dWdpbiBvcHRpb25zLiAgT24gdGhlIGxlZnQgaXMgdGhlIEFydGljbGUgc2VhcmNoIGFyZWEg YW5kIG9uIHRoZSByaWdodCBhcmUgdGhlIHBsdWdpbiBwcmVmZXJlbmNlcy4gSWYgeW91IGFy ZSBpbiA8ZW0+RGlzcGxheTogQWxsPC9lbT4gbW9kZSwgc2ltcGx5IHN0YXJ0IHR5cGluZyBp biB0aGUgPGVtPkJ5IG5hbWU8L2VtPiBib3ggYW5kIHlvdXIgYXJ0aWNsZSBsaXN0IHdpbGwg YmUgcmVkdWNlZCBhcyB5b3UgdHlwZSB0byBvbmx5IHRob3NlIHRoYXQgbWF0Y2guIFR5cGUg bXVsdGlwbGUgd29yZHMgdG8gZmluZCBhcnRpY2xlcyB0aGF0IGNvbnRhaW4gYW55IG9mIHRo ZSBnaXZlbiB3b3Jkcy4gVG8gcXVpY2tseSBjbGVhciB0aGUgYm94LCBoaXQgdGhlIDxzcGFu IGNsYXNzPSJjYXBzIj5FU0M8L3NwYW4+YXBlIGtleS48L3A+CgoJPHA+QWx0ZXJuYXRpdmVs eSwgeW91IGNhbiB1c2UgdGhlIHNlbGVjdCBsaXN0IHRvIGNob29zZSBhbGwgYXJ0aWNsZXMg d2l0aCBhIHBhcnRpY3VsYXIgbGFiZWwuIFRoZSBlbXB0eSBlbnRyeSBhdCB0aGUgdG9wIG9m IHRoZSBsaXN0IG1lYW5zICYjODIyMDthbGwgYXJ0aWNsZXMmIzgyMjE7LiBJZiB5b3UgaGF2 ZSBmZWF0dXJlZCBhbiBhcnRpY2xlIGJ1dCBkb24mIzgyMTc7dCBzdXBwbHkgYSBsYWJlbCB5 b3UgY2FuIGZpbHRlciBpdCBieSBjaG9vc2luZyB0aGUgPGNvZGU+W3VubGFiZWxsZWRdPC9j b2RlPiBpdGVtIGZyb20gdGhlIGxpc3QuIElmIHlvdSBoYXZlIGxhYmVsbGVkIGFueSBhcnRp Y2xlcywgZWFjaCBsYWJlbCB5b3UgaGF2ZSBzdXBwbGllZCB3aWxsIGFsc28gYmUgYW4gb3B0 aW9uIGluIHRoZSBsaXN0LiBSZW1lbWJlciB0aGF0IGxhYmVscyBhcmUgY2FzZSBzZW5zaXRp dmUuPC9wPgoKCTxwPk5vdGUgdGhhdCBmaWx0ZXJpbmcgYnkgbmFtZSBvciBieSBsYWJlbCBh cmUgbXV0dWFsbHkgZXhjbHVzaXZlIGFjdGlvbnM6IHNlbGVjdGluZyBzb21ldGhpbmcgZnJv bSB0aGUgZHJvcGRvd24gd2lsbCBjbGVhciB0aGUgdGV4dCBib3gsIGFuZCB0eXBpbmcgc29t ZXRoaW5nIGluIHRoZSB0ZXh0IGJveCB3aWxsIHJlc2V0IHRoZSBkcm9wZG93bi48L3A+CgoJ PHA+WW91ciBzZWFyY2ggY3JpdGVyaWEgYXJlIHJlbWVtYmVyZWQgYmV0d2VlbiBlZGl0L2xp c3Qgdmlld3Mgc28geW91IHdvbiYjODIxNzt0IGxvc2UgeW91ciBwbGFjZS4gSWYgeW91IGFy ZSBpbiA8ZW0+RGlzcGxheTogUGFnaW5hdGVkPC9lbT4gbW9kZSwgdGhlIHNlYXJjaCB3b3Jr cyBpbiBleGFjdGx5IHRoZSBzYW1lIHdheSBidXQgeW91IGhhdmUgdG8gaGl0IEVudGVyIG9y IGNsaWNrIDxlbT5HbzwvZW0+IHRvIHN1Ym1pdCB0aGUgc2VhcmNoIGNyaXRlcmlhLiBUaGlz IG1vZGUgaXMgaGFuZHkgZm9yIHZlcnkgbG9uZyBhcnRpY2xlIGxpc3RzIG9yIHNsb3cgc2Vy dmVycyAvIGNvbXB1dGVycy48L3A+CgoJPGgzIGlkPSJzbWRfZmVhdF9wcmVmcyI+UGx1Z2lu IHByZWZlcmVuY2VzPC9oMz4KCgk8cD5Vc2VycyBvZiB0aGUgPGVtPkZlYXR1cmVkIGFydGlj bGVzPC9lbT4gdGFiIGFsc28gaGF2ZSBhIGZldyBwcmVmZXJlbmNlcyBhdCB0aGVpciBkaXNw b3NhbCB3aGljaCBjYW4gYmUgYWx0ZXJlZCBhdCB3aWxsOjwvcD4KCgk8b2w+CgkJPGxpPjxz dHJvbmc+RGlzcGxheTwvc3Ryb25nPiA6IGNob29zZSB3aGV0aGVyIHlvdSB3aXNoIHRvIGRp c3BsYXkgYWxsIGFydGljbGVzIG9uIG9uZSBwYWdlIChhbmQgdXNlIHRoZSBsaXZlIHNlYXJj aCB0byBmaWx0ZXIgdGhlbSkgb3IgY2hvb3NlIGEgcGFnaW5hdGVkIHZpZXcgKGFuZCB1c2Ug dGhlIHRyYWRpdGlvbmFsIHNlYXJjaCkuIFRoZSB0cmFkaXRpb25hbCBzZWFyY2ggbWlnaHQg YmUgdXNlZnVsIGlmIHlvdSBoYXZlIGEgbG90IG9mIGFydGljbGVzIChvdmVyIDEwMDApIGJl Y2F1c2UgdGhlIGxpdmUgc2VhcmNoIG1pZ2h0IHNsb3cgZG93biBzaWduaWZpY2FudGx5LiBO b3RlIHRoYXQgd2hlbiB5b3Ugc2VhcmNoIGZvciBzb21ldGhpbmcgaW4gcGFnaW5hdGVkIG1v ZGUsIHRoZSByZXN1bHRzIHRoZW1zZWx2ZXMgYXJlbiYjODIxNzt0IHBhZ2luYXRlZC48L2xp PgoJCTxsaT48c3Ryb25nPlNvcnQgYnk8L3N0cm9uZz4gOiBkZWZpbmUgdGhlIHNvcnQgb3Jk ZXIgb2YgdGhlIGFydGljbGUgbGlzdC48L2xpPgoJCTxsaT48c3Ryb25nPkJveCBzaXplPC9z dHJvbmc+IDogc3BlY2lmeSB0aGUgPGNvZGU+d2lkdGg8L2NvZGU+IGFuZCA8Y29kZT5oZWln aHQ8L2NvZGU+IHZhbHVlcyBpbiBwaXhlbHMgb2YgZWFjaCBjZWxsIGluIHRoZSBncmlkLiBE ZWZhdWx0IGlzIDxjb2RlPjE1MHg0MDwvY29kZT4uPC9saT4KCTwvb2w+CgoJPHA+QWRtaW5p c3RyYXRvcnMgY2FuIGFsc28gYWx0ZXIgdGhlIGJlaGF2aW91ciBvZiB0aGUgcGx1Z2luIGJ5 IGFsdGVyaW5nIHRoZSBmb2xsb3dpbmcgcHJlZnM6PC9wPgoKCTxvbD4KCQk8bGk+PHN0cm9u Zz5QZXJtaXQgZW50cnkgb2Y8L3N0cm9uZz46IGNob29zZSB3aGljaCBmZWF0dXJlZCBlbGVt ZW50cyB1c2VycyBhcmUgcGVybWl0dGVkIHRvIGVudGVyL2FsdGVyLiBJZiB5b3UgZGlzYWJs ZSBhbGwgdGhlIGNoZWNrYm94ZXMsIHRoZSBbRWRpdF0gbGlua3MgbmV4dCB0byBmZWF0dXJl ZCBhcnRpY2xlcyB3aWxsIG5vdCBhcHBlYXIuPC9saT4KCQk8bGk+PHN0cm9uZz5BcHBseSB0 ZXh0aWxlIHRvPC9zdHJvbmc+OiBjaG9vc2UgdGhlIGl0ZW1zIHRvIHdoaWNoIHlvdSB3aXNo IHRvIGFwcGx5IFRleHRpbGUgd2hlbiB5b3UgRWRpdCBhbmQgU2F2ZSBhIGZlYXR1cmVkIGFy dGljbGUuIDxzdHJvbmc+Tm90ZSB0aGlzIG9ubHkgYWZmZWN0cyBmZWF0dXJlZCBhcnRpY2xl cyBzYXZlZCBmcm9tIHRoaXMgcG9pbnQgZm9yd2FyZDwvc3Ryb25nPi4gVGh1cyBpZiB5b3Ug d2lzaCB0byBhcHBseSBhIG5ldyBUZXh0aWxlIHNldHRpbmcgdG8gZXhpc3RpbmcgYXJ0aWNs ZXMgeW91IG5lZWQgdG8gdmlzaXQgZWFjaCBvbmUgaW4gdHVybiBieSBjbGlja2luZyA8Y29k ZT5bRWRpdF08L2NvZGU+IGFuZCB0aGVuIDxlbT5TYXZlPC9lbT4uPC9saT4KCQk8bGk+PHN0 cm9uZz5BcnRpY2xlcyBmcm9tIHNlY3Rpb25zPC9zdHJvbmc+OiBkZWZpbmUgYSBjb21tYS1z ZXBhcmF0ZWQgbGlzdCBvZiBzZWN0aW9uIG5hbWVzLiBUaGVzZSB3aWxsIGJlIHRoZSBvbmx5 IHNlY3Rpb25zIGZyb20gd2hpY2ggYXJ0aWNsZXMgYXJlIGFsbG93ZWQgdG8gYmUgZmVhdHVy ZWQuIElmIHlvdSBsZWF2ZSB0aGlzIGJveCBlbXB0eSB5b3Ugb3IgeW91ciB1c2VycyBtYXkg c3BlY2lmeSA8Y29kZT4mYW1wO3NlY3Rpb25fbGlzdD1saXN0LG9mLHNlY3Rpb25zLC4uLjwv Y29kZT4gaW4gdGhlIHNtZF9mZWF0dXJlZCB0YWImIzgyMTc7cyA8c3BhbiBjbGFzcz0iY2Fw cyI+VVJMPC9zcGFuPiB0byBsaW1pdCB0aGUgbGlzdCB0byBvbmx5IGFydGljbGVzIGluIHRo ZSBnaXZlbiBzZWN0aW9ucy4gVGhpcyBpcyBoYW5keSBpZiB5b3Ugd2lzaCB0byBkaXJlY3Qg cGVvcGxlIHRvIHRoZSBzbWRfZmVhdHVyZWQgdGFiIGZyb20gYSBsaW5rIGluIGFub3RoZXIg dGFiLjwvbGk+Cgk8L29sPgoKCTxwPkluIGFkZGl0aW9uLCBpZiB5b3UgY3JlYXRlIGEgaGlk ZGVuIHByZWYgY2FsbGVkIDxjb2RlPnNtZF9mZWF0dXJlZF9wcml2czwvY29kZT4geW91IGNh biBsaW1pdCB0aGUgcHJpdmlsZWdlIGxldmVscyBvZiBhY2NvdW50cyB0aGF0IGNhbiBhY2Nl c3MgdGhlIDxlbT5GZWF0dXJlZCBhcnRpY2xlczwvZW0+IHRhYi4gRGVmYXVsdDogPGNvZGU+ MSwyPC9jb2RlPi4gSWYgdXNpbmcgc21kX3ByZWZhbGl6ZXIgdG8gY3JlYXRlIHRoaXMgcHJl Ziwgc2V0IHRoZSBuYW1lIGFuZCB2YWx1ZSBhcyBhYm92ZSBhbmQgc2V0IHRoZSBmb2xsb3dp bmcgYWRkaXRpb25hbCBwYXJhbWV0ZXJzOjwvcD4KCgk8dWw+CgkJPGxpPjxzdHJvbmc+dHlw ZTwvc3Ryb25nPiA6IGhpZGRlbjwvbGk+CgkJPGxpPjxzdHJvbmc+ZXZlbnQ8L3N0cm9uZz4g OiBzbWRfZmVhdHVyZWQ8L2xpPgoJCTxsaT48c3Ryb25nPmlucHV0IGNvbnRyb2w8L3N0cm9u Zz4gOiB0ZXh0X2lucHV0PC9saT4KCQk8bGk+PHN0cm9uZz51c2VyPC9zdHJvbmc+IDogLyBl bXB0eSAvPC9saT4KCQk8bGk+PHN0cm9uZz5wb3NpdGlvbjwvc3Ryb25nPjogMDwvbGk+Cgk8 L3VsPgoKCTxoMj5EaXNwbGF5aW5nIGZlYXR1cmVkIGFydGljbGVzPC9oMj4KCgk8cD5PbmNl IHlvdSBoYXZlIGNob3NlbiB5b3VyIGZlYXR1cmVkIGFydGljbGVzLCB5b3UgbmVlZCBhIHdh eSB0byBkaXNwbGF5IHRoZW06PC9wPgoKCTxoMz5UYWc6IDxjb2RlPiZsdDt0eHA6c21kX2Zl YXR1cmVkIC8mZ3Q7PC9jb2RlPjwvaDM+CgoJPHA+QWN0cyBhIGJpdCBsaWtlIHRoZSBzdGFu ZGFyZCA8Y29kZT4mbHQ7dHhwOmFydGljbGUgLyZndDs8L2NvZGU+IHRhZyB0byBkaXNwbGF5 IGZlYXR1cmVkIGFydGljbGVzLiBBdHRyaWJ1dGVzOjwvcD4KCgk8dWw+CgkJPGxpPjxzcGFu IGNsYXNzPSJhdG5tIj5sYWJlbDwvc3Bhbj4gOiBkaXNwbGF5IGZlYXR1cmVkIGFydGljbGVz IHdpdGggdGhpcyBsYWJlbC4gU3BlY2lmeSA8Y29kZT5sYWJlbD0mcXVvdDsmcXVvdDs8L2Nv ZGU+IHRvIGRpc3BsYXkgdW5sYWJlbGxlZCBhcnRpY2xlcyAod2hpY2ggYXJlIDxzdHJvbmc+ bm90PC9zdHJvbmc+IHRoZSBzYW1lIGFzIHVuZmVhdHVyZWQgYXJ0aWNsZXMpLiBJZiB0aGlz IGF0dHJpYnV0ZSBpcyBvbWl0dGVkLCBhbGwgZmVhdHVyZWQgYXJ0aWNsZXMgJiM4MjEyOyBp cnJlc3BlY3RpdmUgb2YgbGFiZWwgJiM4MjEyOyB3aWxsIGJlIGRpc3BsYXllZC48L2xpPgoJ CTxsaT48c3BhbiBjbGFzcz0iYXRubSI+bGFiZWx0YWc8L3NwYW4+IDogdGhlIChYKUhUTUwg dGFnICYjODIxMjsgd2l0aG91dCBicmFja2V0cyAmIzgyMTI7IHRvIGFwcGx5IHRvIHRoZSBs YWJlbCBhdHRyaWJ1dGUuIElmIHRoaXMgYXR0cmlidXRlIGlzIHNwZWNpZmllZCB0aGUgbGFi ZWwgaXRzZWxmIGlzIGRpc3BsYXllZCBhdCB0aGUgaGVhZCBvZiB5b3VyIGZlYXR1cmVkIGFy dGljbGUgbGlzdC4gSWYgeW91IHdpc2ggdG8gZGlzcGxheSB1bmxhYmVsbGVkIGFydGljbGVz IHlvdSBuZWVkIHRvIHNwZWNpZnkgdGhlIDxjb2RlPnVubGFiZWw8L2NvZGU+IGF0dHJpYnV0 ZSBvciB5b3UmIzgyMTc7bGwgc2VlIG5vIGxhYmVsLiBOb3RlIHRoYXQgdGhpcyB0YWcgZGlm ZmVycyBmcm9tIHRoZSA8c3BhbiBjbGFzcz0iY2FwcyI+VFhQPC9zcGFuPiBjb252ZW50aW9u OiB5b3Ugd2lsbCA8ZW0+b25seTwvZW0+IHNlZSB0aGUgbGFiZWwgaWYgeW91IHNwZWNpZnkg dGhlIDxjb2RlPmxhYmVsdGFnPC9jb2RlPi4gWW91IGNhbiBkaXNwbGF5IHRoZSBsYWJlbCBp bnNpZGUgeW91ciBhcnRpY2xlcyB1c2luZyB0aGUgPGNvZGU+Jmx0O3R4cDpmZWF0dXJlZF9p bmZvIC8mZ3Q7PC9jb2RlPiB0YWcuPC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPnVu bGFiZWw8L3NwYW4+IDogd2hlbiB1c2luZyA8Y29kZT5sYWJlbD0mcXVvdDsmcXVvdDs8L2Nv ZGU+ICh0byBzaG93IHVubGFiZWxsZWQgYXJ0aWNsZXMpIHRoaXMgYXR0cmlidXRlIHNwZWNp ZmllcyB0aGUgbGFiZWwgdG8gdXNlIGluc2lkZSB0aGUgPGNvZGU+bGFiZWx0YWc8L2NvZGU+ LiBEZWZhdWx0OiAmIzgyMjA7RmVhdHVyZWQmIzgyMjE7LjwvbGk+CgkJPGxpPjxzcGFuIGNs YXNzPSJhdG5tIj50aW1lPC9zcGFuPiA6IGxpbWl0IHRoZSBhcnRpY2xlcyB0byB0aG9zZSBp biB0aGUgPGNvZGU+cGFzdDwvY29kZT4sIHRoZSA8Y29kZT5mdXR1cmU8L2NvZGU+IG9yIDxj b2RlPmFueTwvY29kZT4uIERlZmF1bHQ6IDxjb2RlPnBhc3Q8L2NvZGU+LjwvbGk+CgkJPGxp PjxzcGFuIGNsYXNzPSJhdG5tIj5zdGF0dXM8L3NwYW4+IDogb25seSBkaXNwbGF5IGFydGlj bGVzIG9mIHRoZSBnaXZlbiBzdGF0dXMgbnVtYmVyKHMpLiBEZWZhdWx0OiA8Y29kZT40LDU8 L2NvZGU+IChhLmsuYS4gbGl2ZSBhbmQgc3RpY2t5KS4gTm90ZSB0aGF0IHRoaXMgYXR0cmli dXRlIG1heSBiZSBpZ25vcmVkIGlmIHlvdSBhcmUgdHJ5aW5nIHRvIHZpZXcgYW55dGhpbmcg b3RoZXIgbGl2ZSBhbmQgc3RpY2t5IGFydGljbGVzIChzaW5jZSBhcnRpY2xlX2N1c3RvbSBk b2VzIHRoZSBzYW1lKS48L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+c2VjdGlvbjwv c3Bhbj4gOiBvbmx5IGRpc3BsYXkgYXJ0aWNsZXMgZnJvbSB0aGUgZ2l2ZW4gc2VjdGlvbihz KS4gSWYgdGhlIHNlY3Rpb24gbGlzdCBpcyByZXN0cmljdGVkIHVzaW5nIHRoZSBwbHVnaW4g cHJlZmVyZW5jZXMsIHRoZSBzZWN0aW9ucyB1c2VkIGhlcmUgbXVzdCBhbHNvIGJlIGluIHRo YXQgbGlzdC48L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+aGlzdG9yeTwvc3Bhbj4g OiBkZXRlcm1pbmVzIHdoZXRoZXIgdG8gcmVtZW1iZXIgcHJldmlvdXNseSBzZWVuIGFydGlj bGVzIGFuZCB0aHVzIGV4Y2x1ZGUgdGhlbSBmcm9tIGZ1dHVyZSBzbWRfZmVhdHVyZWQgLyBz bWRfdW5mZWF0dXJlZCB0YWdzLiBJZiB5b3UgYXJlIHVzaW5nIHRoZSBzYW1lIGZlYXR1cmVk IHRhZyBtdWx0aXBsZSB0aW1lcyBvbiB0aGUgc2FtZSBwYWdlIGFuZCB3YW50IGl0IHRvIGFs d2F5cyBvdXRwdXQgdGhlIHNhbWUgbGlzdCwgc2V0IHRoaXMgYXR0cmlidXRlIHRvIDAuIERl ZmF1bHQ6IDEuPC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPmZvcm08L3NwYW4+IDog dXNlIHRoaXMgPHNwYW4gY2xhc3M9ImNhcHMiPlRYUDwvc3Bhbj4gZm9ybSB0byBkaXNwbGF5 IGVhY2ggYXJ0aWNsZSwgaW5zdGVhZCBvZiB1c2luZyB0aGUgY29udGFpbmVyIGNvbnRlbnRz LjwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj5saW1pdDwvc3Bhbj4gOiBtYXhpbXVt IG51bWJlciBvZiBmZWF0dXJlZCBhcnRpY2xlcyB0byBkaXNwbGF5LiBEZWZhdWx0OiAxMC48 L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+c29ydDwvc3Bhbj4gOiBvcmRlciB0aGUg ZmVhdHVyZWQgYXJ0aWNsZXMgYnkgPGNvZGU+aWQ8L2NvZGU+LCA8Y29kZT5sYWJlbDwvY29k ZT4sIDxjb2RlPlRpdGxlPC9jb2RlPiwgPGNvZGU+UG9zdGVkPC9jb2RlPiwgYW5kIHNvIG9u LiBBZGQgPGNvZGU+YXNjPC9jb2RlPiBvciA8Y29kZT5kZXNjPC9jb2RlPiB0byB0aGUgYXR0 cmlidXRlIHRvIGFsdGVyIHRoZSBkaXJlY3Rpb24gb2YgdGhlIHNvcnQuIFlvdSBtYXkgYWxz byB1c2UgPGNvZGU+cmFuZCgpPC9jb2RlPiB0byBzb3J0IHRoZSBhcnRpY2xlcyByYW5kb21s eS4gRGVmYXVsdDogPGNvZGU+ZmVhdF9wb3NpdGlvbiBhc2MsIFBvc3RlZCBkZXNjPC9jb2Rl Pi4gVGhlIHNhbWUgbGlzdCBhdmFpbGFibGUgZm9yIHRoZSA8Y29kZT4mbHQ7dHhwOmFydGlj bGUgLyZndDs8L2NvZGU+IHRhZyBpcyB1c2FibGUgaGVyZS4gWW91IG1heSBhbHNvIHVzZToK CTx1bD4KCQk8bGk+PHN0cm9uZz5mZWF0X3Bvc2l0aW9uPC9zdHJvbmc+IDogeW91ciBjdXN0 b20gcG9zaXRpb248L2xpPgoJCTxsaT48c3Ryb25nPmZlYXRfdGl0bGU8L3N0cm9uZz4gOiB5 b3VyIGZlYXR1cmVkIHRpdGxlIGNvbnRlbnQ8L2xpPgoJCTxsaT48c3Ryb25nPmRlc2NyaXB0 aW9uPC9zdHJvbmc+IDogeW91ciBmZWF0dXJlZCBkZXNjcmlwdGlvbiBjb250ZW50PC9saT4K CTwvdWw+PC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPndyYXB0YWc8L3NwYW4+IDog dGhlIChYKUhUTUwgdGFnICYjODIxMjsgd2l0aG91dCBicmFja2V0cyAmIzgyMTI7IHRvIHdy YXAgYXJvdW5kIHRoZSBsaXN0IG9mIGZlYXR1cmVkIGFydGljbGVzLjwvbGk+CgkJPGxpPjxz cGFuIGNsYXNzPSJhdG5tIj5icmVhazwvc3Bhbj4gOiB0aGUgKFgpSFRNTCB0YWcgJiM4MjEy OyB3aXRob3V0IGJyYWNrZXRzICYjODIxMjsgb3IgdGV4dCB0byBwdXQgYmV0d2VlbiBlYWNo IGFydGljbGUuPC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPmNsYXNzPC9zcGFuPiA6 IHRoZSA8c3BhbiBjbGFzcz0iY2FwcyI+Q1NTPC9zcGFuPiBjbGFzcyBuYW1lIHRvIGFwcGx5 IHRvIHRoZSB3cmFwdGFnLjwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj5odG1sX2lk PC9zcGFuPiA6IGEgPHNwYW4gY2xhc3M9ImNhcHMiPkRPTTwvc3Bhbj4gSUQgdG8gYXBwbHkg dG8gdGhlIHdyYXB0YWcuPC9saT4KCTwvdWw+CgoJPHA+WW91IG1heSB1c2UgdGhlIHRhZyBh cyBhIGNvbnRhaW5lciBhbmQgYW55IHRhZ3MgeW91IHNwZWNpZnkgd2lsbCBiZSBkaXNwbGF5 ZWQgaW4gZWFjaCBmZWF0dXJlZCBhcnRpY2xlLiBZb3UgY2FuIHVzZSBzdGFuZGFyZCBhcnRp Y2xlIHRhZ3Mgc3VjaCBhcyA8Y29kZT4mbHQ7dHhwOnRpdGxlIC8mZ3Q7PC9jb2RlPiwgPGNv ZGU+Jmx0O3R4cDpleGNlcnB0IC8mZ3Q7PC9jb2RlPiwgPGNvZGU+Jmx0O3R4cDpwZXJtbGlu ayAvJmd0OzwvY29kZT4sIGV0YywgYWx0aG91Z2ggc29tZSBhcnRpY2xlcyBhcmUgbm90IGRp c3BsYXlhYmxlIGJ5IFRleHRwYXR0ZXJuIChlLmcuIGhpZGRlbiwgcGVuZGluZyBhbmQgZHJh ZnQgYXJ0aWNsZXMpLjwvcD4KCgk8cCBjbGFzcz0iaW1wb3J0YW50Ij5Ob3RlIHRoYXQgeW91 IGNhbiYjODIxNzt0IHVzZSA8Y29kZT4mbHQ7dHhwOnNtZF9mZWF0dXJlZCZndDs8L2NvZGU+ IGluc2lkZSBhbiBhcnRpY2xlIG9yIGFuIEFydGljbGUgRm9ybS4gRG9pbmcgc28gd2lsbCB0 cmlnZ2VyIGEgd2FybmluZyBiZWNhdXNlIGl0JiM4MjE3O3MgdGhlIHNhbWUgYXMgcHV0dGlu ZyBhbm90aGVyIGFydGljbGUgdGFnIGluc2lkZSBhbiBhcnRpY2xlLiBVc2UgdGhlIHRhZyBv bmx5IGluIFBhZ2VzLCBvciBpbiBhIEZvcm0gdGhhdCBpcyBuZXZlciBkaXJlY3RseSB1c2Vk IHRvIGRpc3BsYXkgYXJ0aWNsZSBjb250ZW50LjwvcD4KCgk8cD5FYWNoIHRpbWUgeW91IHVz ZSA8Y29kZT4mbHQ7dHhwOnNtZF9mZWF0dXJlZCAvJmd0OzwvY29kZT4gaXQgbWFrZXMgYSBu b3RlIG9mIHRoZSBhcnRpY2xlcyBpdCBoYXMgZGlzcGxheWVkIGFuZCB3aWxsIG5vdCBkdXBs aWNhdGUgYXJ0aWNsZXMgaW4gbGF0ZXIgdGFncy4gWW91IGNhbiB1c2UgPGNvZGU+Jmx0O3R4 cDplbHNlIC8mZ3Q7PC9jb2RlPiBpbiB5b3VyIGZvcm0gLyBjb250YWluZXIgdG8gdGFrZSBh Y3Rpb24gaWYgdGhlIGZlYXR1cmVkIGxpc3QgaXMgZW1wdHkuPC9wPgoKCTxoMz5UYWc6IDxj b2RlPiZsdDt0eHA6c21kX2ZlYXR1cmVkX2luZm8gLyZndDs8L2NvZGU+PC9oMz4KCgk8cD5B bGxvd3MgeW91IHRvIGRpc3BsYXkgdGhlIGxhYmVsIG9yIHRoZSBkZXNjcmlwdGlvbiB3aXRo aW4geW91ciA8Y29kZT4mbHQ7dHhwOnNtZF9mZWF0dXJlZCAvJmd0OzwvY29kZT4gIGZvcm0v Y29udGFpbmVyLjwvcD4KCgk8cD5IYXMgb25lIGF0dHJpYnV0ZTo8L3A+CgoJPHVsPgoJCTxs aT48c3BhbiBjbGFzcz0iYXRubSI+aXRlbTwvc3Bhbj4gOiB0aGUgdGhpbmcgeW91IHdhbnQg dG8gZGlzcGxheS4gQ2hvb3NlIGZyb206Cgk8dWw+CgkJPGxpPjxzdHJvbmc+bGFiZWw8L3N0 cm9uZz46IHRoZSBsYWJlbC48L2xpPgoJCTxsaT48c3Ryb25nPnRpdGxlPC9zdHJvbmc+OiB0 aGUgKHBvc3NpYmx5IFRleHRpbGUtcHJvY2Vzc2VkKSB0aXRsZS48L2xpPgoJCTxsaT48c3Ry b25nPmRlc2NyaXB0aW9uPC9zdHJvbmc+OiB0aGUgKHBvc3NpYmx5IFRleHRpbGUtcHJvY2Vz c2VkKSBkZXNjcmlwdGlvbi48L2xpPgoJPC91bD48L2xpPgoJPC91bD4KCgk8aDM+VGFnOiA8 Y29kZT4mbHQ7dHhwOnNtZF91bmZlYXR1cmVkIC8mZ3Q7PC9jb2RlPjwvaDM+CgoJPHA+VXNl IHRoaXMgdGFnIGlmIHlvdSB3aXNoIHRvIHNob3cgdGhlICYjODIxNjtyZW1haW5pbmcmIzgy MTc7IGFydGljbGVzICYjODIxMjsgaS5lLiBvbmVzIG5vdCBhbHJlYWR5IGRpc3BsYXllZCBi eSBhbnkgcHJlY2VkaW5nIDxjb2RlPiZsdDt0eHA6c21kX2ZlYXR1cmVkIC8mZ3Q7PC9jb2Rl PiB0YWdzLiBJdCBhY3RzIHZlcnkgbXVjaCBsaWtlIHRoZSBidWlsdC1pbiBhcnRpY2xlX2N1 c3RvbSB0YWcsIGFuZCB0YWtlcyBhbGwgdGhlIHNhbWUgYXR0cmlidXRlcy4gVGh1cywgYnkg ZGVmYXVsdCwgaXRzIGNvbnRleHQgaXMgJiM4MjIwO2FueSBhcnRpY2xlcyBmcm9tIGFueSBz ZWN0aW9uIGRlZmluZWQgaW4gdGhlIHNtZF9mZWF0dXJlZCBwbHVnaW4gdGhhdCBoYXZlIG5v dCBiZWVuIGRpc3BsYXllZCBhbHJlYWR5JiM4MjIxOy4gWW91IGNhbiByZWR1Y2UgdGhpcyBs aXN0IGJ5IDxjb2RlPnNlY3Rpb248L2NvZGU+LCA8Y29kZT50aW1lPC9jb2RlPiBvciA8Y29k ZT5zdGF0dXM8L2NvZGU+LjwvcD4KCgk8cD5Vbmxpa2UgYXJ0aWNsZV9jdXN0b20sIDxjb2Rl PiZsdDt0eHA6c21kX3VuZmVhdHVyZWQgLyZndDs8L2NvZGU+IHN1cHBvcnRzIHBhZ2luYXRp b24gYW5kIDxjb2RlPiZsdDt0eHA6ZWxzZSAvJmd0OzwvY29kZT4gKGZvciB3aGVuIHlvdXIg dW5mZWF0dXJlZCBsaXN0IHJldHVybnMgbm90aGluZykuIFlvdSBjYW4gYWxzbyBzcGVjaWZ5 IHRoZSA8Y29kZT5oaXN0b3J5PC9jb2RlPiBhdHRyaWJ1dGUgYW5kIGl0IHdvcmtzIGV4YWN0 bHkgdGhlIHNhbWUgd2F5IGFzIGl0IGRvZXMgZm9yIDxjb2RlPiZsdDt0eHA6c21kX2ZlYXR1 cmVkIC8mZ3Q7PC9jb2RlPi4gVGh1cyBpdCBjYW4gYmUgYSB2ZXJ5IHVzZWZ1bCwgcGFnZWFi bGUgZGlyZWN0IHJlcGxhY2VtZW50IHRhZyBmb3IgYXJ0aWNsZV9jdXN0b20gaWYgeW91IHVz ZSA8Y29kZT5oaXN0b3J5PSZxdW90OzAmcXVvdDs8L2NvZGU+LjwvcD4KCgk8cD5Ob3Rlczo8 L3A+CgoJPHVsPgoJCTxsaT50byB1c2UgcGFnaW5hdGlvbiwgcmVtb3ZlIGFueSBhcnRpY2xl IHRhZyBhbmQgYWRkIHRoZSA8Y29kZT5wYWdlYnk8L2NvZGU+IGF0dHJpYnV0ZSAoYW5kIG9m IGNvdXJzZSA8Y29kZT5saW1pdDwvY29kZT4pIHRvIHRoZSBzbWRfdW5mZWF0dXJlZCB0YWcu IE5vdGUgeW91IG1heSBnZXQgYSB3YXJuaW5nIGFib3V0IG5vIGFydGljbGUgdGFnIG9uIHRo ZSBwYWdlLCBidXQgeW91IGNhbiBpZ25vcmUgaXQuPC9saT4KCQk8bGk+aWYgeW91IHdpc2gg dGhlIDxjb2RlPnBhZ2VieTwvY29kZT4gYXR0cmlidXRlIHRvIHRyYWNrIGFueSA8Y29kZT5s aW1pdDwvY29kZT4geW91IHNldCwgc3BlY2lmeSA8Y29kZT5wYWdlYnk9JnF1b3Q7bGltaXQm cXVvdDs8L2NvZGU+LjwvbGk+CgkJPGxpPmlmIHlvdSBoYXZlIGFueSBvdGhlciBwYWdpbmcg aW4gZWZmZWN0IG9uIHRoZSBwYWdlLCB1bmZlYXR1cmVkIHBhZ2luYXRpb24gd2lsbCBiZSBp Z25vcmVkLjwvbGk+Cgk8L3VsPgoKCTxoMz5UYWc6IDxjb2RlPiZsdDt0eHA6c21kX2lmX2Zl YXR1cmVkJmd0OzwvY29kZT48L2gzPgoKCTxwPlRoaXMgdGFnIGFsbG93cyB5b3UgdG8gZGV0 ZWN0IGlmIHRoZSBjdXJyZW50IChpbmRpdmlkdWFsKSBhcnRpY2xlIGlzIGZlYXR1cmVkIGFu ZC9vciBoYXMgYSBwYXJ0aWN1bGFyIGxhYmVsLiBZb3UgbWF5IGFsc28gdXNlIHRoaXMgb3V0 c2lkZSBhbiBhcnRpY2xlIGNvbnRleHQgYnkgc3VwcGx5aW5nIGEgbGlzdCBvZiBhcnRpY2xl IElEcy48L3A+CgoJPHA+SGFzIHR3byBhdHRyaWJ1dGVzOjwvcD4KCgk8dWw+CgkJPGxpPjxz cGFuIGNsYXNzPSJhdG5tIj5pZDwvc3Bhbj4gOiBsaXN0IG9mIGFydGljbGUgSURzIG9mIHdo aWNoIHlvdSB3aXNoIHRvIGNoZWNrIHRoZSBmZWF0dXJlZCBzdGF0dXMuIElmIG9taXR0ZWQs IGRlZmF1bHRzIHRvIHRoZSBjdXJyZW50IGFydGljbGUgKGlmIHVzZWQgaW5zaWRlIGEgPGNv ZGU+Jmx0O3R4cDphcnRpY2xlIC8mZ3Q7PC9jb2RlPiBjb250YWluZXIvZm9ybSkuPC9saT4K CQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPmxhYmVsPC9zcGFuPiA6IGxpc3Qgb2YgbGFiZWxz IHRvIGNvbXBhcmUgdGhlIGdpdmVuIElEKHMpIHdpdGguIFNwZWNpZnkgPGNvZGU+bGFiZWw9 JnF1b3Q7JnF1b3Q7PC9jb2RlPiB0byBjaGVjayBmb3IgdW5sYWJlbGxlZCBhcnRpY2xlcywg b3IgdXNlIGFuIGVtcHR5IGl0ZW0gaWYgc3BlY2lmeWluZyBhIGxpc3QsIGUuZy4gPGNvZGU+ bGFiZWw9JnF1b3Q7LCBGZWF0dXJlZCwgVGVhc2VyJnF1b3Q7PC9jb2RlPi4gUmVtZW1iZXIg dGhhdCBsYWJlbHMgYXJlIGNhc2Ugc2Vuc2l0aXZlLjwvbGk+Cgk8L3VsPgoKCTxwPklmIHRo ZSBhcnRpY2xlIG1hdGNoZXMgb25lIG9mIHRoZSBnaXZlbiBsYWJlbHMgdGhlIGNvbnRhaW5l ZCBjb250ZW50IHdpbGwgYmUgZXhlY3V0ZWQuIElmIG5vIGxhYmVsIGlzIGdpdmVuIHRoZSBh cnRpY2xlKHMpIHdpbGwgYmUgY2hlY2tlZCBpZiB0aGV5IGFyZSBmZWF0dXJlZCwgaXJyZXNw ZWN0aXZlIG9mIGxhYmVsLjwvcD4KCgk8aDI+RXhhbXBsZXM8L2gyPgoKCTxoMyBpZD0iZWcx Ij5FeGFtcGxlIDE6IENvbXBsZXRlIGRpcmVjdG9yeSBvZiBmZWF0dXJlZCBhcnRpY2xlczwv aDM+Cgo8cHJlIGNsYXNzPSJibG9jayI+PGNvZGUgY2xhc3M9ImJsb2NrIj4mbHQ7dHhwOnNt ZF9mZWF0dXJlZCBsYWJlbHRhZz0mcXVvdDtoMiZxdW90OyBsaW1pdD0mcXVvdDsyMCZxdW90 OwogICAgIHdyYXB0YWc9JnF1b3Q7ZGwmcXVvdDsgc29ydD0mcXVvdDtsYWJlbCZxdW90OyZn dDsKICAgJmx0O3R4cDppZl9kaWZmZXJlbnQmZ3Q7CiAgICAgICZsdDtoMiZndDsmbHQ7dHhw OnNtZF9mZWF0dXJlZF9pbmZvIGl0ZW09JnF1b3Q7bGFiZWwmcXVvdDsgLyZndDsmbHQ7L2gy Jmd0OwogICAmbHQ7L3R4cDppZl9kaWZmZXJlbnQmZ3Q7CiAgICZsdDtkdCZndDsKICAgICAg Jmx0O3R4cDpwZXJtbGluayZndDsmbHQ7dHhwOnRpdGxlIC8mZ3Q7Jmx0Oy90eHA6cGVybWxp bmsmZ3Q7CiAgICZsdDsvZHQmZ3Q7CiAgICZsdDtkZCZndDsKICAgICAgJmx0O3R4cDpleGNl cnB0IC8mZ3Q7CiAgICZsdDsvZGQmZ3Q7CiZsdDsvdHhwOnNtZF9mZWF0dXJlZCZndDsKPC9j b2RlPjwvcHJlPgoKCTxoMyBpZD0iZWcyIj5FeGFtcGxlIDI6IE9uZSBmZWF0dXJlZCBhcnRp Y2xlIGFuZCBzaXggdGVhc2VycyBvbiB0aGUgaG9tZSBwYWdlPC9oMz4KCgk8cD5TZWxlY3Qg YW4gYXJ0aWNsZSBhbmQgbGFiZWwgaXQgPGNvZGU+ZmVhdHVyZTwvY29kZT4uIFNlbGVjdCBz aXggb3RoZXJzIGFuZCBsYWJlbCB0aGVtIDxjb2RlPnRlYXNlcnM8L2NvZGU+LiBBZGQgc29t ZSBkZXNjcmlwdGlvbiB0ZXh0IHRvIHlvdXIgdGVhc2VyIGFydGljbGVzLjwvcD4KCgk8cD5J biB5b3VyIGRlZmF1bHQgUGFnZSwgcHV0IHRoaXM6PC9wPgoKPHByZSBjbGFzcz0iYmxvY2si Pjxjb2RlIGNsYXNzPSJibG9jayI+Jmx0O3R4cDpzbWRfZmVhdHVyZWQgbGFiZWw9JnF1b3Q7 ZmVhdHVyZSZxdW90OwogICAgIHdyYXB0YWc9JnF1b3Q7ZGl2JnF1b3Q7IGh0bWxfaWQ9JnF1 b3Q7bWFpbl9mZWF0dXJlJnF1b3Q7Jmd0OwogICAmbHQ7dHhwOnBlcm1saW5rJmd0OyZsdDt0 eHA6dGl0bGUgLyZndDsmbHQ7L3R4cDpwZXJtbGluayZndDsKICAgJmx0O3R4cDphcnRpY2xl X2ltYWdlIGNsYXNzPSZxdW90O2ZlYXRfaW1hZ2UmcXVvdDsgLyZndDsKICAgJmx0O3AgY2xh c3M9JnF1b3Q7bGVhZGluJnF1b3Q7Jmd0OyZsdDt0eHA6ZXhjZXJwdCAvJmd0OyZsdDsvcCZn dDsKJmx0Oy90eHA6c21kX2ZlYXR1cmVkJmd0Owo8L2NvZGU+PC9wcmU+Cgo8cHJlIGNsYXNz PSJibG9jayI+PGNvZGUgY2xhc3M9ImJsb2NrIj4mbHQ7dHhwOnNtZF9mZWF0dXJlZCBsYWJl bD0mcXVvdDt0ZWFzZXJzJnF1b3Q7CiAgICAgd3JhcHRhZz0mcXVvdDt1bCZxdW90OyBicmVh az0mcXVvdDtsaSZxdW90OyBodG1sX2lkPSZxdW90O3RlYXNlcl9ibG9jayZxdW90OyZndDsK ICAgJmx0O3R4cDpwZXJtbGluayZndDsmbHQ7dHhwOnRpdGxlIC8mZ3Q7Jmx0Oy90eHA6cGVy bWxpbmsmZ3Q7CiAgICZsdDtwIGNsYXNzPSZxdW90O2xlYWRpbiZxdW90OyZndDsmbHQ7dHhw OmV4Y2VycHQgLyZndDsmbHQ7L3AmZ3Q7CiZsdDsvdHhwOnNtZF9mZWF0dXJlZCZndDsKPC9j b2RlPjwvcHJlPgoKCTxwPklmIHlvdSB3YW50ZWQgdG8gaGF2ZSBzb21lIG90aGVyIGFydGlj bGVzIGJlbmVhdGggdGhvc2UsIGJ1dCBkaWRuJiM4MjE3O3Qgd2FudCBhbnkgZHVwbGljYXRl cyB0byBhcHBlYXIgeW91IGNvdWxkIHVzZTo8L3A+Cgo8cHJlIGNsYXNzPSJibG9jayI+PGNv ZGUgY2xhc3M9ImJsb2NrIj4mbHQ7dHhwOnNtZF91bmZlYXR1cmVkIGZvcm09JnF1b3Q7bXlf bGlzdCZxdW90OyAvJmd0Owo8L2NvZGU+PC9wcmU+CgoJPGgzIGlkPSJlZzMiPkV4YW1wbGUg MzogUGVyLXNlY3Rpb24gbGFuZGluZyBwYWdlIGZlYXR1cmVkIGFydGljbGVzPC9oMz4KCgk8 cD5JZiB5b3UgaGFkIGEgem9vIHNpdGUgd2l0aCBhIHNlY3Rpb24gZm9yIHByaW1hdGVzLCBh IHNlY3Rpb24gZm9yIG1hbW1hbHMgYW5kIGEgc2VjdGlvbiBmb3IgcmVwdGlsZXMsIHdoZW4g eW91IHNldCB1cCB5b3VyIGZlYXR1cmVkIGFydGljbGUgbGlzdCBkZWZpbmUgdGhlaXIgbGFi ZWxzIGxpa2UgdGhpczo8L3A+CgoJPHVsPgoJCTxsaT5GZWF0dXJlZCBwcmltYXRlczwvbGk+ CgkJPGxpPkZlYXR1cmVkIG1hbW1hbHM8L2xpPgoJCTxsaT5GZWF0dXJlZCByZXB0aWxlczwv bGk+Cgk8L3VsPgoKCTxwPk9uIHlvdXIgc2VjdGlvbiBsYW5kaW5nIHBhZ2UgdGVtcGxhdGUg eW91IGNhbiB0aGVuIGRvIHRoaXMgdG8gZGlzcGxheSBmb3VyIGFydGljbGVzIGZyb20gdGhl IHJlbGV2YW50IChjdXJyZW50KSBzZWN0aW9uOjwvcD4KCjxwcmUgY2xhc3M9ImJsb2NrIj48 Y29kZSBjbGFzcz0iYmxvY2siPiZsdDtoMiZndDtMb29rIHdobyYjMzk7cyBoZXJlOiZsdDsv aDImZ3Q7CiZsdDt0eHA6c21kX2ZlYXR1cmVkIGxhYmVsPSYjMzk7RmVhdHVyZWQgJmx0O3R4 cDpzZWN0aW9uIC8mZ3Q7JiMzOTsKICAgICBzZWN0aW9uPSYjMzk7Jmx0O3R4cDpzZWN0aW9u IC8mZ3Q7JiMzOTsgbGltaXQ9JnF1b3Q7NCZxdW90OwogICAgIHdyYXB0YWc9JnF1b3Q7ZGl2 JnF1b3Q7IGh0bWxfaWQ9JnF1b3Q7ZmVhdF9ibG9jayZxdW90OyZndDsKICAgJmx0O2RpdiBj bGFzcz0mcXVvdDtwaW1wZWRfYXJ0aWNsZSZxdW90OyZndDsKICAgICAgJmx0O3R4cDpwZXJt bGluayZndDsmbHQ7dHhwOnRpdGxlIC8mZ3Q7Jmx0Oy90eHA6cGVybWxpbmsmZ3Q7CiAgICAg ICZsdDt0eHA6c21kX2ZlYXR1cmVkX2luZm8gaXRlbT0mcXVvdDtkZXNjcmlwdGlvbiZxdW90 OyAvJmd0OwogICAmbHQ7L2RpdiZndDsKJmx0Oy90eHA6c21kX2ZlYXR1cmVkJmd0Owo8L2Nv ZGU+PC9wcmU+CgoJPGgzIGlkPSJlZzQiPkV4YW1wbGUgNDogQ29uZGl0aW9uYWwgY2hlY2sg Zm9yIGZlYXR1cmVkLW5lc3M8L2gzPgoKCTxwPklmIGEgc2l0ZSB2aXNpdG9yIGhhcyBuYXZp Z2F0ZWQgYXdheSBmcm9tIHlvdXIgZnJvbnQgcGFnZSBhbmQgaXMgdmlld2luZyBhbiBhcnRp Y2xlLCB5b3UgbWF5IHdpc2ggdG8gaGlnaGxpZ2h0IHRoZSBmYWN0IHRoZSBjdXJyZW50IGFy dGljbGUgaXMgYSBmZWF0dXJlZCBwcm9kdWN0LiBTbywgc29tZXdoZXJlIGluc2lkZSB5b3Ug YXJ0aWNsZSBmb3JtIGFkZDo8L3A+Cgo8cHJlIGNsYXNzPSJibG9jayI+PGNvZGUgY2xhc3M9 ImJsb2NrIj4mbHQ7dHhwOnNtZF9pZl9mZWF0dXJlZCZndDsKICAgJmx0O3AgY2xhc3M9JnF1 b3Q7aGlsaWdodCZxdW90OyZndDtGRUFUVVJFRCBQUk9EVUNUJmx0Oy9wJmd0OwombHQ7L3R4 cDpzbWRfaWZfZmVhdHVyZWQmZ3Q7CjwvY29kZT48L3ByZT4KCgk8cD5PciBpZiB5b3Ugd2Fu dGVkIHRvIG9ubHkgaGlnaGxpZ2h0IHRoZSBhcnRpY2xlIGlmIGl0IHdhcyBhIGZlYXR1cmVk IG9yIG9uIHNwZWNpYWwgb2ZmZXI6PC9wPgoKPHByZSBjbGFzcz0iYmxvY2siPjxjb2RlIGNs YXNzPSJibG9jayI+Jmx0O3R4cDpzbWRfaWZfZmVhdHVyZWQgbGFiZWw9JnF1b3Q7RmVhdHVy ZWQsIFNwZWNpYWwmcXVvdDsmZ3Q7CiAgICZsdDtwIGNsYXNzPSZxdW90O2hpbGlnaHQmcXVv dDsmZ3Q7QXMgZmVhdHVyZWQgb24gdGhlIGZyb250IHBhZ2UhJmx0Oy9wJmd0OwombHQ7L3R4 cDpzbWRfaWZfZmVhdHVyZWQmZ3Q7CjwvY29kZT48L3ByZT4KCgk8aDIgaWQ9ImNoYW5nZWxv ZyI+Q2hhbmdlbG9nPC9oMj4KCgk8dWw+CgkJPGxpPjE4IEp1biAyMDEwIHwgMC4xMCB8IElu aXRpYWwgcmVsZWFzZTwvbGk+CgkJPGxpPjA3IFNlcCAyMDEwIHwgMC4yMCB8IFJlbmFtZWQg aWQgY29sdW1uIHRvIGZlYXRfaWQgOyBmaXhlZCA8Y29kZT5sYWJlbDwvY29kZT4gYXR0cmli dXRlIGJ1ZyAoYm90aCB0aGFua3MgcGllbWFuKSA7IGxhYmVsIHNlYXJjaGVzIGFyZSBub3cg ZXhhY3QgbWF0Y2hlcyA7IGFkZGVkIHByZWZzIGFuZCBwYWdpbmF0aW9uIHN1cHBvcnQgZm9y IGFkbWluIHNpZGUgOyBhZGRlZCA8Y29kZT4mbHQ7dHhwOnNtZF9pZl9mZWF0dXJlZCZndDs8 L2NvZGU+IDsgYWRkZWQgbGFiZWwgc2VsZWN0aW9uIGZyb20gZHJvcGRvd24gZHVyaW5nIGVk aXRpbmcgKHRoYW5rcyB0eWUpPC9saT4KCQk8bGk+MTMgU2VwIDIwMTAgfCAwLjIxIHwgQWRk ZWQgJiM4MjE2O3RpdGxlJiM4MjE3OyBhbmQgVGV4dGlsZSBvcHRpb25zIChib3RoIHRoYW5r cyBiZyk8L2xpPgoJCTxsaT4xMyBTZXAgMjAxMCB8IDAuMjIgfCBGaXhlZCBtaXNzaW5nIGRv U2xhc2goKSBvbiB1bnRleHRpbGVkIGh0bWwgY29udGVudCAodGhhbmtzIGJnKTwvbGk+CgkJ PGxpPjA1IE9jdCAyMDEwIHwgMC4zMCB8IFVzZSA8Y29kZT5hcnRpY2xlX2N1c3RvbSgpPC9j b2RlPiBub3QgPGNvZGU+YXJ0aWNsZSgpPC9jb2RlPiB0byBzaWRlc3RlcCBpbmRpdmlkdWFs IGFydGljbGUgY29udGV4dCAodGhhbmtzIGpvaG5zdGVwaGVucykgOyBwYXNzIDxjb2RlPnRp bWU8L2NvZGU+IGFuZCA8Y29kZT5saW1pdDwvY29kZT4gdG8gPGNvZGU+YXJ0aWNsZV9jdXN0 b20oKTwvY29kZT4gOyA8Y29kZT5saW1pdDwvY29kZT4gaGFzIGRlZmF1bHQgb2YgMTA8L2xp PgoJCTxsaT4xMSBPY3QgMjAxMCB8IDAuMzEgfCBCZXR0ZXIgdGhlbWUgaW50ZWdyYXRpb24g KHRoYW5rcyB0aGVib21ic2l0ZSk8L2xpPgoJCTxsaT4wMSBOb3YgMjAxMCB8IDAuMzIgfCBB ZGRlZCBvbGRlci9uZXdlciBwYWdpbmF0aW9uIHN1cHBvcnQgdG8gPGNvZGU+Jmx0O3R4cDpz bWRfdW5mZWF0dXJlZCAvJmd0OzwvY29kZT4gYW5kIHBlcm1pdHRlZCA8Y29kZT5zZWN0aW9u PC9jb2RlPiwgPGNvZGU+c3RhdHVzPC9jb2RlPiBhbmQgPGNvZGU+dGltZTwvY29kZT4gZmls dGVyaW5nIDsgZml4ZWQgc29tZSBzdHlsaW5nIGlzc3VlczwvbGk+CgkJPGxpPjE3IEphbiAy MDExIHwgMC4zMyB8IEFkZGVkIDxjb2RlPmhpc3Rvcnk8L2NvZGU+IGF0dHJpYnV0ZSA7IGZp eGVkIHNtZF91bmZlYXR1cmVkIHRvIHdvcmsgY29ycmVjdGx5IGluIGluZGl2aWR1YWwgYXJ0 aWNsZSBjb250ZXh0IGFmdGVyIHRoZSB2MC4zMiBibG9vcGVyICh0aGFua3Mgam9obnN0ZXBo ZW5zKSA7IGZpeGVkIHNtZF91bmZlYXR1cmVkIGJ1ZyB0byBzdG9wIHR4cDphcnRpY2xlJiM4 MjE3O3MgZGVmYXVsdCBvdXRwdXQgaWYgdW5mZWF0dXJlZCBsaXN0IGVtcHR5PC9saT4KCQk8 bGk+MTcgSmFuIDIwMTEgfCAwLjM0IHwgQWRkZWQgdHhwOmVsc2Ugc3VwcG9ydCB0byBmZWF0 dXJlZCAvIHVuZmVhdHVyZWQgdGFnczwvbGk+CgkJPGxpPjEyIE1heSAyMDExIHwgMC40MCB8 IEFkZGVkIHBvc2l0aW9uYWwgc29ydGluZywgYWxsb3dlZCBsYWJlbC90aXRsZS9kZXNjIHRv IGJlIG9wdGlvbmFsLCByZW1vdmVkICYjODIxNjtBcmUgWW91IFN1cmUmIzgyMTc7IG1lc3Nh Z2UgaWYgbGFiZWwvdGl0bGUvZGVzYyBub3QgdXNlZCwgYW5kIGFkZGVkIGZ1bGwgV3JpdGUg dGFiIGVkaXQgbGlua3MgKGFsbCB0aGFua3MgcGllbWFuKSA7IGFkZGVkIGhpZGRlbiBwcmVm cyB0byBpbnRlcmZhY2UgOyBtYWRlIHRleHRpbGUgcHJlZnMgZ2xvYmFsIChwcmV2aW91cyBz ZXR0aW5ncyB3aWxsIGJlIGxvc3Qgb24gdXBncmFkZSkgOyBnbG9iYWwgcHJlZnMgb25seSBl ZGl0YWJsZSBieSBwdWJsaXNoZXIgOyA8Y29kZT4mbHQ7dHhwOnNtZF9mZWF0dXJlZCAvJmd0 OzwvY29kZT4gZGVmYXVsdCBzb3J0IG9yZGVyIG5vdyA8Y29kZT5mZWF0X3Bvc2l0aW9uIGFz YywgUG9zdGVkIGRlc2M8L2NvZGU+PC9saT4KCQk8bGk+MDIgRGVjIDIwMTEgfCAwLjQxIHwg QWxsb3dlZCA8Y29kZT5zZWN0aW9uX2xpc3Q8L2NvZGU+IGluIHRoZSBhZG1pbiBwYWdlJiM4 MjE3O3MgPHNwYW4gY2xhc3M9ImNhcHMiPlVSTDwvc3Bhbj4gdG8gbGltaXQgdGhlIGxpc3Qg b2YgZmVhdHVyZWQgYXJ0aWNsZXMgdG8gdGhlIGdpdmVuIHNlY3Rpb24ocykgKHRoYW5rcyBt aWNrbWVsb24pIDsgZml4ZWQgdHJpbSBvbiBsYWJlbCBhdHRyaWJ1dGUgKHRoYW5rcyBtYW5p cXVpKTwvbGk+Cgk8L3VsPgoKPC9kaXY+CjwhLS0gKioqIEJFR0lOIFBMVUdJTiBDU1MgKioq IC0tPgo8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgojc21kX2hlbHAgeyBsaW5lLWhlaWdodDox LjUgO30KI3NtZF9oZWxwIGNvZGUgeyBmb250LXdlaWdodDpib2xkOyBmb250OiAxMDUlLzEz MCUgIkNvdXJpZXIgTmV3IiwgY291cmllciwgbW9ub3NwYWNlOyBiYWNrZ3JvdW5kLWNvbG9y OiAjZjBlNjhjOyBjb2xvcjojMzMzOyB9CiNzbWRfaGVscCBjb2RlLmJsb2NrIHsgZm9udC13 ZWlnaHQ6bm9ybWFsOyBib3JkZXI6MXB4IGRvdHRlZCAjOTk5OyBkaXNwbGF5OmJsb2NrOyBt YXJnaW46MTBweCAxMHB4IDIwcHg7IHBhZGRpbmc6MTBweDsgfQojc21kX2hlbHAgaDEgeyBm b250OiAyMHB4IEdlb3JnaWEsIHNhbnMtc2VyaWY7IG1hcmdpbjogMDsgdGV4dC1hbGlnbjog Y2VudGVyOyB9CiNzbWRfaGVscCBoMiB7IGJvcmRlci1ib3R0b206IDFweCBzb2xpZCBibGFj azsgcGFkZGluZzoxMHB4IDAgMDsgZm9udDogMTdweCBHZW9yZ2lhLCBzYW5zLXNlcmlmOyB9 CiNzbWRfaGVscCBoMyB7IGZvbnQ6IGJvbGQgMTJweCBBcmlhbCwgc2Fucy1zZXJpZjsgbGV0 dGVyLXNwYWNpbmc6IDFweDsgbWFyZ2luOiAyMHB4IDAgMDsgdGV4dC1kZWNvcmF0aW9uOnVu ZGVybGluZTsgfQojc21kX2hlbHAgaDQgeyBmb250OiBib2xkIDExcHggQXJpYWwsIHNhbnMt c2VyaWY7IGxldHRlci1zcGFjaW5nOiAxcHg7IG1hcmdpbjogMTBweCAwIDA7IHRleHQtdHJh bnNmb3JtOiB1cHBlcmNhc2U7IH0KI3NtZF9oZWxwIC5hdG5tIHsgZm9udC13ZWlnaHQ6Ym9s ZDsgfQojc21kX2hlbHAgLm1hbmQgeyBiYWNrZ3JvdW5kOiNlZWU7IGJvcmRlcjoxcHggZG90 dGVkICM5OTk7IH0KI3NtZF9oZWxwIHRhYmxlIHsgd2lkdGg6OTAlOyB0ZXh0LWFsaWduOmNl bnRlcjsgcGFkZGluZy1ib3R0b206MWVtOyB9CiNzbWRfaGVscCB0ZCwgI3NtZF9oZWxwIHRo IHsgYm9yZGVyOjFweCBzb2xpZCAjOTk5OyBwYWRkaW5nOi41ZW0gMDsgfQojc21kX2hlbHAg dWwgeyBsaXN0LXN0eWxlLXR5cGU6c3F1YXJlOyB9CiNzbWRfaGVscCAuaW1wb3J0YW50IHsg Y29sb3I6cmVkOyB9CiNzbWRfaGVscCBsaSB7IG1hcmdpbjo1cHggMjBweCA1cHggMzBweDsg fQojc21kX2hlbHAgLmJyZWFrIHsgbWFyZ2luLXRvcDo1cHg7IH0KPC9zdHlsZT4KPCEtLSAq KiogRU5EIFBMVUdJTiBDU1MgKioqIC0tPgoiO3M6MzoibWQ1IjtzOjMyOiI2NzJhZTA4NzQy NmUzMTM2ZDM1YzRhYWMyYTA0MDllYSI7fQ==