PCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMCBUcmFuc2l0aW9uYWwvL0VOIiJodHRwOi8vd3d3LnczLm9yZy9UUi9SRUMtaHRtbDQwL2xvb3NlLmR0ZCI+CjwhLS1OZXdQYWdlLS0+CjxIVE1MPgo8SEVBRD4KPCEtLSBHZW5lcmF0ZWQgYnkgamF2YWRvYyBvbiBGcmkgQXVnIDIyIDAzOjQzOjU3IEVEVCAyMDAzIC0tPgo8VElUTEU+Ck1vZHVsZUNvbmZpZ1ZlcmlmaWVyIChBcGFjaGUgU3RydXRzIEFQSSBEb2N1bWVudGF0aW9uKQo8L1RJVExFPgo8TUVUQSBOQU1FPSJrZXl3b3JkcyIgQ09OVEVOVD0ib3JnLmFwYWNoZS5zdHJ1dHMucGx1Z2lucy5Nb2R1bGVDb25maWdWZXJpZmllcixNb2R1bGVDb25maWdWZXJpZmllciBjbGFzcyI+CjxMSU5LIFJFTCA9InN0eWxlc2hlZXQiIFRZUEU9InRleHQvY3NzIiBIUkVGPSIuLi8uLi8uLi8uLi9zdHlsZXNoZWV0LmNzcyIgVElUTEU9IlN0eWxlIj4KPC9IRUFEPgo8U0NSSVBUPgpmdW5jdGlvbiBhc2QoKQp7CnBhcmVudC5kb2N1bWVudC50aXRsZT0iTW9kdWxlQ29uZmlnVmVyaWZpZXIgKEFwYWNoZSBTdHJ1dHMgQVBJIERvY3VtZW50YXRpb24pIjsKfQo8L1NDUklQVD4KPEJPRFkgQkdDT0xPUj0id2hpdGUiIG9ubG9hZD0iYXNkKCk7Ij4KCjwhLS0gPT09PT09PT09PSBTVEFSVCBPRiBOQVZCQVIgPT09PT09PT09PSAtLT4KPEEgTkFNRT0ibmF2YmFyX3RvcCI+PCEtLSAtLT48L0E+CjxUQUJMRSBCT1JERVI9IjAiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMSIgQ0VMTFNQQUNJTkc9IjAiPgo8VFI+CjxURCBDT0xTUEFOPTMgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4KPEEgTkFNRT0ibmF2YmFyX3RvcF9maXJzdHJvdyI+PCEtLSAtLT48L0E+CjxUQUJMRSBCT1JERVI9IjAiIENFTExQQURESU5HPSIwIiBDRUxMU1BBQ0lORz0iMyI+CiAgPFRSIEFMSUdOPSJjZW50ZXIiIFZBTElHTj0idG9wIj4KICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3ZlcnZpZXctc3VtbWFyeS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPk92ZXJ2aWV3PC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0icGFja2FnZS1zdW1tYXJ5Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+UGFja2FnZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+CiAgPFREIEJHQ09MT1I9IiNGRkZGRkYiIENMQVNTPSJOYXZCYXJDZWxsMVJldiI+ICZuYnNwOzxGT05UIENMQVNTPSJOYXZCYXJGb250MVJldiI+PEI+Q2xhc3M8L0I+PC9GT05UPiZuYnNwOzwvVEQ+CiAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9ImNsYXNzLXVzZS9Nb2R1bGVDb25maWdWZXJpZmllci5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlVzZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+CiAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9InBhY2thZ2UtdHJlZS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlRyZWU8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgogIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi9kZXByZWNhdGVkLWxpc3QuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5EZXByZWNhdGVkPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vaW5kZXgtYWxsLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+SW5kZXg8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgogIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi9oZWxwLWRvYy5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkhlbHA8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgogIDwvVFI+CjwvVEFCTEU+CjwvVEQ+CjxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBST1dTUEFOPTM+PEVNPgo8L0VNPgo8L1REPgo8L1RSPgoKPFRSPgo8VEQgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJOYXZCYXJDZWxsMiI+PEZPTlQgU0laRT0iLTIiPgombmJzcDtQUkVWIENMQVNTJm5ic3A7CiZuYnNwO05FWFQgQ0xBU1M8L0ZPTlQ+PC9URD4KPFREIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iTmF2QmFyQ2VsbDIiPjxGT05UIFNJWkU9Ii0yIj4KICA8QSBIUkVGPSIuLi8uLi8uLi8uLi9pbmRleC5odG1sIiBUQVJHRVQ9Il90b3AiPjxCPkZSQU1FUzwvQj48L0E+ICAmbmJzcDsKJm5ic3A7PEEgSFJFRj0iTW9kdWxlQ29uZmlnVmVyaWZpZXIuaHRtbCIgVEFSR0VUPSJfdG9wIj48Qj5OTyBGUkFNRVM8L0I+PC9BPiAgJm5ic3A7CiZuYnNwOwo8U0NSSVBUPgogIDwhLS0KICBpZih3aW5kb3c9PXRvcCkgewogICAgZG9jdW1lbnQud3JpdGVsbignPEEgSFJFRj0iLi4vLi4vLi4vLi4vYWxsY2xhc3Nlcy1ub2ZyYW1lLmh0bWwiIFRBUkdFVD0iIj48Qj5BbGwgQ2xhc3NlczwvQj48L0E+Jyk7CiAgfQogIC8vLS0+CjwvU0NSSVBUPgo8Tk9TQ1JJUFQ+CjxBIEhSRUY9Ii4uLy4uLy4uLy4uL2FsbGNsYXNzZXMtbm9mcmFtZS5odG1sIiBUQVJHRVQ9IiI+PEI+QWxsIENsYXNzZXM8L0I+PC9BPgo8L05PU0NSSVBUPgo8L0ZPTlQ+PC9URD4KPC9UUj4KPFRSPgo8VEQgVkFMSUdOPSJ0b3AiIENMQVNTPSJOYXZCYXJDZWxsMyI+PEZPTlQgU0laRT0iLTIiPgogIFNVTU1BUlk6Jm5ic3A7TkVTVEVEJm5ic3A7fCZuYnNwOzxBIEhSRUY9IiNmaWVsZF9zdW1tYXJ5Ij5GSUVMRDwvQT4mbmJzcDt8Jm5ic3A7PEEgSFJFRj0iI2NvbnN0cnVjdG9yX3N1bW1hcnkiPkNPTlNUUjwvQT4mbmJzcDt8Jm5ic3A7PEEgSFJFRj0iI21ldGhvZF9zdW1tYXJ5Ij5NRVRIT0Q8L0E+PC9GT05UPjwvVEQ+CjxURCBWQUxJR049InRvcCIgQ0xBU1M9Ik5hdkJhckNlbGwzIj48Rk9OVCBTSVpFPSItMiI+CkRFVEFJTDombmJzcDs8QSBIUkVGPSIjZmllbGRfZGV0YWlsIj5GSUVMRDwvQT4mbmJzcDt8Jm5ic3A7PEEgSFJFRj0iI2NvbnN0cnVjdG9yX2RldGFpbCI+Q09OU1RSPC9BPiZuYnNwO3wmbmJzcDs8QSBIUkVGPSIjbWV0aG9kX2RldGFpbCI+TUVUSE9EPC9BPjwvRk9OVD48L1REPgo8L1RSPgo8L1RBQkxFPgo8IS0tID09PT09PT09PT09IEVORCBPRiBOQVZCQVIgPT09PT09PT09PT0gLS0+Cgo8SFI+CjwhLS0gPT09PT09PT0gU1RBUlQgT0YgQ0xBU1MgREFUQSA9PT09PT09PSAtLT4KPEgyPgo8Rk9OVCBTSVpFPSItMSI+Cm9yZy5hcGFjaGUuc3RydXRzLnBsdWdpbnM8L0ZPTlQ+CjxCUj4KQ2xhc3MgTW9kdWxlQ29uZmlnVmVyaWZpZXI8L0gyPgo8UFJFPgpqYXZhLmxhbmcuT2JqZWN0CiAgfAogICstLTxCPm9yZy5hcGFjaGUuc3RydXRzLnBsdWdpbnMuTW9kdWxlQ29uZmlnVmVyaWZpZXI8L0I+CjwvUFJFPgo8REw+CjxEVD48Qj5BbGwgSW1wbGVtZW50ZWQgSW50ZXJmYWNlczo8L0I+IDxERD48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvYXBhY2hlL3N0cnV0cy9hY3Rpb24vUGx1Z0luLmh0bWwiPlBsdWdJbjwvQT48L0REPgo8L0RMPgo8SFI+CjxETD4KPERUPnB1YmxpYyBjbGFzcyA8Qj5Nb2R1bGVDb25maWdWZXJpZmllcjwvQj48RFQ+ZXh0ZW5kcyBqYXZhLmxhbmcuT2JqZWN0PERUPmltcGxlbWVudHMgPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2FwYWNoZS9zdHJ1dHMvYWN0aW9uL1BsdWdJbi5odG1sIj5QbHVnSW48L0E+PC9ETD4KCjxQPgo8cD5Db252ZW5pZW50IGltcGxlbWVudGF0aW9uIG9mIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9hcGFjaGUvc3RydXRzL2FjdGlvbi9QbHVnSW4uaHRtbCI+PENPREU+UGx1Z0luPC9DT0RFPjwvQT4gdGhhdCBwZXJmb3JtcyBhcyBtYW55CiB2ZXJpZmljYXRpb24gdGVzdHMgb24gdGhlIGluZm9ybWF0aW9uIHN0b3JlZCBpbiB0aGUgPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2FwYWNoZS9zdHJ1dHMvY29uZmlnL01vZHVsZUNvbmZpZy5odG1sIj48Q09ERT5Nb2R1bGVDb25maWc8L0NPREU+PC9BPgogZm9yIHRoaXMgYXBwbGljYXRpb24gbW9kdWxlIGFzIGlzIHByYWN0aWNhbC4gIEJhc2VkIG9uIHRoZSBzZXR0aW5nIG9mIHRoZQogPGNvZGU+ZmF0YWw8L2NvZGU+IHByb3BlcnR5ICh3aGljaCBkZWZhdWx0cyB0byA8Y29kZT50cnVlPC9jb2RlPiksIHRoZQogZGV0ZWN0aW9uIG9mIGFueSBzdWNoIGVycm9ycyB3aWxsIGNhdXNlIGEgPGNvZGU+U2VydmxldEV4Y2VwdGlvbjwvY29kZT4KIHRvIGJlIHRocm93biBmcm9tIHRoZSA8Y29kZT5pbml0KCk8L2NvZGU+IG1ldGhvZCwgd2hpY2ggd2lsbCB1bHRpbWF0ZWx5CiBjYXVzZSB0aGUgaW5pdGlhbGl6YXRpb24gb2YgeW91ciBTdHJ1dHMgY29udHJvbGxlciBzZXJ2bGV0IHRvIGZhaWwuPC9wPgoKIDxwPlVuZGVyIGFsbCBjaXJjdW1zdGFuY2VzLCBlcnJvcnMgdGhhdCBhcmUgZGV0ZWN0ZWQgd2lsbCBiZSBsb2dnZWQgdmlhCiBjYWxscyB0byA8Y29kZT5TZXJ2bGV0Q29udGV4dC5sb2coKTwvY29kZT4uPC9wPgo8UD4KCjxQPgo8REw+CjxEVD48Qj5TaW5jZTo8L0I+PC9EVD4KICA8REQ+U3RydXRzIDEuMTwvREQ+CjxEVD48Qj5WZXJzaW9uOjwvQj48L0RUPgogIDxERD4kUmV2aXNpb246IDEuMSAkICREYXRlJDwvREQ+CjxEVD48Qj5BdXRob3I6PC9CPjwvRFQ+CiAgPEREPkNyYWlnIFIuIE1jQ2xhbmFoYW48L0REPgo8L0RMPgo8SFI+Cgo8UD4KPCEtLSA9PT09PT09PSBORVNURUQgQ0xBU1MgU1VNTUFSWSA9PT09PT09PSAtLT4KCgo8IS0tID09PT09PT09PT09IEZJRUxEIFNVTU1BUlkgPT09PT09PT09PT0gLS0+Cgo8QSBOQU1FPSJmaWVsZF9zdW1tYXJ5Ij48IS0tIC0tPjwvQT4KPFRBQkxFIEJPUkRFUj0iMSIgQ0VMTFBBRERJTkc9IjMiIENFTExTUEFDSU5HPSIwIiBXSURUSD0iMTAwJSI+CjxUUiBCR0NPTE9SPSIjQ0NDQ0ZGIiBDTEFTUz0iVGFibGVIZWFkaW5nQ29sb3IiPgo8VEQgQ09MU1BBTj0yPjxGT05UIFNJWkU9IisyIj4KPEI+RmllbGQgU3VtbWFyeTwvQj48L0ZPTlQ+PC9URD4KPC9UUj4KPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+CjxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KPENPREU+cHJvdGVjdGVkICZuYnNwOzxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9hcGFjaGUvc3RydXRzL2NvbmZpZy9Nb2R1bGVDb25maWcuaHRtbCI+TW9kdWxlQ29uZmlnPC9BPjwvQ09ERT48L0ZPTlQ+PC9URD4KPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9hcGFjaGUvc3RydXRzL3BsdWdpbnMvTW9kdWxlQ29uZmlnVmVyaWZpZXIuaHRtbCNjb25maWciPmNvbmZpZzwvQT48L0I+PC9DT0RFPgoKPEJSPgombmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtUaGUgPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2FwYWNoZS9zdHJ1dHMvY29uZmlnL01vZHVsZUNvbmZpZy5odG1sIj48Q09ERT5Nb2R1bGVDb25maWc8L0NPREU+PC9BPiBpbnN0YW5jZSBmb3Igb3VyIGFwcGxpY2F0aW9uIG1vZHVsZS48L1REPgo8L1RSPgo8VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgo8Q09ERT5wcml2YXRlICZuYnNwO2Jvb2xlYW48L0NPREU+PC9GT05UPjwvVEQ+CjxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvYXBhY2hlL3N0cnV0cy9wbHVnaW5zL01vZHVsZUNvbmZpZ1ZlcmlmaWVyLmh0bWwjZmF0YWwiPmZhdGFsPC9BPjwvQj48L0NPREU+Cgo8QlI+CiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1Nob3VsZCB0aGUgZXhpc3RlbmNlIG9mIGNvbmZpZ3VyYXRpb24gZXJyb3JzIGJlIGZhdGFsLjwvVEQ+CjwvVFI+CjxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgo8VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+CjxDT0RFPnByb3RlY3RlZCAmbmJzcDs8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvYXBhY2hlL3N0cnV0cy9hY3Rpb24vQWN0aW9uU2VydmxldC5odG1sIj5BY3Rpb25TZXJ2bGV0PC9BPjwvQ09ERT48L0ZPTlQ+PC9URD4KPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9hcGFjaGUvc3RydXRzL3BsdWdpbnMvTW9kdWxlQ29uZmlnVmVyaWZpZXIuaHRtbCNzZXJ2bGV0Ij5zZXJ2bGV0PC9BPjwvQj48L0NPREU+Cgo8QlI+CiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1RoZSA8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvYXBhY2hlL3N0cnV0cy9hY3Rpb24vQWN0aW9uU2VydmxldC5odG1sIj48Q09ERT5BY3Rpb25TZXJ2bGV0PC9DT0RFPjwvQT4gaW5zdGFuY2Ugd2UgYXJlIGFzc29jaWF0ZWQgd2l0aC48L1REPgo8L1RSPgo8L1RBQkxFPgombmJzcDsKPCEtLSA9PT09PT09PSBDT05TVFJVQ1RPUiBTVU1NQVJZID09PT09PT09IC0tPgoKPEEgTkFNRT0iY29uc3RydWN0b3Jfc3VtbWFyeSI+PCEtLSAtLT48L0E+CjxUQUJMRSBCT1JERVI9IjEiIENFTExQQURESU5HPSIzIiBDRUxMU1BBQ0lORz0iMCIgV0lEVEg9IjEwMCUiPgo8VFIgQkdDT0xPUj0iI0NDQ0NGRiIgQ0xBU1M9IlRhYmxlSGVhZGluZ0NvbG9yIj4KPFREIENPTFNQQU49Mj48Rk9OVCBTSVpFPSIrMiI+CjxCPkNvbnN0cnVjdG9yIFN1bW1hcnk8L0I+PC9GT05UPjwvVEQ+CjwvVFI+CjxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgo8VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2FwYWNoZS9zdHJ1dHMvcGx1Z2lucy9Nb2R1bGVDb25maWdWZXJpZmllci5odG1sI01vZHVsZUNvbmZpZ1ZlcmlmaWVyKCkiPk1vZHVsZUNvbmZpZ1ZlcmlmaWVyPC9BPjwvQj4oKTwvQ09ERT4KCjxCUj4KJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7PC9URD4KPC9UUj4KPC9UQUJMRT4KJm5ic3A7CjwhLS0gPT09PT09PT09PSBNRVRIT0QgU1VNTUFSWSA9PT09PT09PT09PSAtLT4KCjxBIE5BTUU9Im1ldGhvZF9zdW1tYXJ5Ij48IS0tIC0tPjwvQT4KPFRBQkxFIEJPUkRFUj0iMSIgQ0VMTFBBRERJTkc9IjMiIENFTExTUEFDSU5HPSIwIiBXSURUSD0iMTAwJSI+CjxUUiBCR0NPTE9SPSIjQ0NDQ0ZGIiBDTEFTUz0iVGFibGVIZWFkaW5nQ29sb3IiPgo8VEQgQ09MU1BBTj0yPjxGT05UIFNJWkU9IisyIj4KPEI+TWV0aG9kIFN1bW1hcnk8L0I+PC9GT05UPjwvVEQ+CjwvVFI+CjxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgo8VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+CjxDT0RFPiZuYnNwO3ZvaWQ8L0NPREU+PC9GT05UPjwvVEQ+CjxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvYXBhY2hlL3N0cnV0cy9wbHVnaW5zL01vZHVsZUNvbmZpZ1ZlcmlmaWVyLmh0bWwjZGVzdHJveSgpIj5kZXN0cm95PC9BPjwvQj4oKTwvQ09ERT4KCjxCUj4KJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7UmVjZWl2ZSBub3RpZmljYXRpb24gdGhhdCBvdXIgb3duaW5nIG1vZHVsZSBpcyBiZWluZwogc2h1dCBkb3duLjwvVEQ+CjwvVFI+CjxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgo8VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+CjxDT0RFPiZuYnNwO3ZvaWQ8L0NPREU+PC9GT05UPjwvVEQ+CjxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvYXBhY2hlL3N0cnV0cy9wbHVnaW5zL01vZHVsZUNvbmZpZ1ZlcmlmaWVyLmh0bWwjaW5pdChvcmcuYXBhY2hlLnN0cnV0cy5hY3Rpb24uQWN0aW9uU2VydmxldCwgb3JnLmFwYWNoZS5zdHJ1dHMuY29uZmlnLk1vZHVsZUNvbmZpZykiPmluaXQ8L0E+PC9CPig8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvYXBhY2hlL3N0cnV0cy9hY3Rpb24vQWN0aW9uU2VydmxldC5odG1sIj5BY3Rpb25TZXJ2bGV0PC9BPiZuYnNwO3NlcnZsZXQsCiAgICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2FwYWNoZS9zdHJ1dHMvY29uZmlnL01vZHVsZUNvbmZpZy5odG1sIj5Nb2R1bGVDb25maWc8L0E+Jm5ic3A7Y29uZmlnKTwvQ09ERT4KCjxCUj4KJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7UmVjZWl2ZSBub3RpZmljYXRpb24gdGhhdCB0aGUgc3BlY2lmaWVkIG1vZHVsZSBpcyBiZWluZwogc3RhcnRlZCB1cC48L1REPgo8L1RSPgo8VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgo8Q09ERT4mbmJzcDtib29sZWFuPC9DT0RFPjwvRk9OVD48L1REPgo8VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2FwYWNoZS9zdHJ1dHMvcGx1Z2lucy9Nb2R1bGVDb25maWdWZXJpZmllci5odG1sI2lzRmF0YWwoKSI+aXNGYXRhbDwvQT48L0I+KCk8L0NPREU+Cgo8QlI+CiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1JldHVybiB0aGUgImNvbmZpZ3VhdGlvbiBlcnJvcnMgYXJlIGZhdGFsIiBmbGFnLjwvVEQ+CjwvVFI+CjxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgo8VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+CjxDT0RFPnByb3RlY3RlZCAmbmJzcDt2b2lkPC9DT0RFPjwvRk9OVD48L1REPgo8VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2FwYWNoZS9zdHJ1dHMvcGx1Z2lucy9Nb2R1bGVDb25maWdWZXJpZmllci5odG1sI2xvZyhqYXZhLmxhbmcuU3RyaW5nKSI+bG9nPC9BPjwvQj4oamF2YS5sYW5nLlN0cmluZyZuYnNwO21lc3NhZ2UpPC9DT0RFPgoKPEJSPgombmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtMb2cgdGhlIHNwZWNpZmllZCBtZXNzYWdlIHRvIG91ciBzZXJ2bGV0IGNvbnRleHQgbG9nLCBhZnRlciBhCiBoZWFkZXIgaW5jbHVkaW5nIHRoZSBtb2R1bGUgcHJlZml4LjwvVEQ+CjwvVFI+CjxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgo8VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+CjxDT0RFPiZuYnNwO3ZvaWQ8L0NPREU+PC9GT05UPjwvVEQ+CjxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvYXBhY2hlL3N0cnV0cy9wbHVnaW5zL01vZHVsZUNvbmZpZ1ZlcmlmaWVyLmh0bWwjc2V0RmF0YWwoYm9vbGVhbikiPnNldEZhdGFsPC9BPjwvQj4oYm9vbGVhbiZuYnNwO2ZhdGFsKTwvQ09ERT4KCjxCUj4KJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7U2V0IHRoZSAiY29uZmlndXJhdGlvbiBlcnJvcnMgYXJlIGZhdGFsIiBmbGFnLjwvVEQ+CjwvVFI+CjxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgo8VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+CjxDT0RFPnByb3RlY3RlZCAmbmJzcDtib29sZWFuPC9DT0RFPjwvRk9OVD48L1REPgo8VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2FwYWNoZS9zdHJ1dHMvcGx1Z2lucy9Nb2R1bGVDb25maWdWZXJpZmllci5odG1sI3ZlcmlmeUFjdGlvbk1hcHBpbmdDbGFzcygpIj52ZXJpZnlBY3Rpb25NYXBwaW5nQ2xhc3M8L0E+PC9CPigpPC9DT0RFPgoKPEJSPgombmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtSZXR1cm4gPGNvZGU+dHJ1ZTwvY29kZT4gaWYgaW5mb3JtYXRpb24gcmV0dXJuZWQgYnkKIDxjb2RlPmNvbmZpZy5nZXRBY3Rpb25NYXBwaW5nQ2xhc3MoKTwvY29kZT4gaXMgYWxsIHZhbGlkOwogb3RoZXJ3aXNlLCBsb2cgZXJyb3IgbWVzc2FnZXMgYW5kIHJldHVybiA8Y29kZT5mYWxzZTwvY29kZT4uPC9URD4KPC9UUj4KPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+CjxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KPENPREU+cHJvdGVjdGVkICZuYnNwO2Jvb2xlYW48L0NPREU+PC9GT05UPjwvVEQ+CjxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvYXBhY2hlL3N0cnV0cy9wbHVnaW5zL01vZHVsZUNvbmZpZ1ZlcmlmaWVyLmh0bWwjdmVyaWZ5Rm9yd2FyZENvbmZpZ3MoKSI+dmVyaWZ5Rm9yd2FyZENvbmZpZ3M8L0E+PC9CPigpPC9DT0RFPgoKPEJSPgombmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtSZXR1cm4gPGNvZGU+dHJ1ZTwvY29kZT4gaWYgaW5mb3JtYXRpb24gcmV0dXJuZWQgYnkKIDxjb2RlPmNvbmZpZy5maW5kRm9yd2FyZENvbmZpZ3MoKSBpcyBhbGwgdmFsaWQ7CiBvdGhlcndpc2UsIGxvZyBlcnJvciBtZXNzYWdlcyBhbmQgcmV0dXJuIDxjb2RlPmZhbHNlPC9jb2RlPi48L1REPgo8L1RSPgo8VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgo8Q09ERT5wcm90ZWN0ZWQgJm5ic3A7Ym9vbGVhbjwvQ09ERT48L0ZPTlQ+PC9URD4KPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9hcGFjaGUvc3RydXRzL3BsdWdpbnMvTW9kdWxlQ29uZmlnVmVyaWZpZXIuaHRtbCN2ZXJpZnlNZXNzYWdlUmVzb3VyY2VzQ29uZmlncygpIj52ZXJpZnlNZXNzYWdlUmVzb3VyY2VzQ29uZmlnczwvQT48L0I+KCk8L0NPREU+Cgo8QlI+CiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1JldHVybiA8Y29kZT50cnVlPC9jb2RlPiBpZiBpbmZvcm1hdGlvbiByZXR1cm5lZCBieQogPGNvZGU+Y29uZmlnLmZpbmRNZXNzYWdlUmVzb3VyY2VzQ29uZmlncygpIGlzIGFsbCB2YWxpZDsKIG90aGVyd2lzZSwgbG9nIGVycm9yIG1lc3NhZ2VzIGFuZCByZXR1cm4gPGNvZGU+ZmFsc2U8L2NvZGU+LjwvVEQ+CjwvVFI+CjxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgo8VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+CjxDT0RFPnByb3RlY3RlZCAmbmJzcDtib29sZWFuPC9DT0RFPjwvRk9OVD48L1REPgo8VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2FwYWNoZS9zdHJ1dHMvcGx1Z2lucy9Nb2R1bGVDb25maWdWZXJpZmllci5odG1sI3ZlcmlmeVBsdWdJbkNvbmZpZ3MoKSI+dmVyaWZ5UGx1Z0luQ29uZmlnczwvQT48L0I+KCk8L0NPREU+Cgo8QlI+CiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1JldHVybiA8Y29kZT50cnVlPC9jb2RlPiBpZiBpbmZvcm1hdGlvbiByZXR1cm5lZCBieQogPGNvZGU+Y29uZmlnLmZpbmRQbHVnaW5Db25maWdzKCkgaXMgYWxsIHZhbGlkOwogb3RoZXJ3aXNlLCBsb2cgZXJyb3IgbWVzc2FnZXMgYW5kIHJldHVybiA8Y29kZT5mYWxzZTwvY29kZT4uPC9URD4KPC9UUj4KPC9UQUJMRT4KJm5ic3A7PEEgTkFNRT0ibWV0aG9kc19pbmhlcml0ZWRfZnJvbV9jbGFzc19qYXZhLmxhbmcuT2JqZWN0Ij48IS0tIC0tPjwvQT4KPFRBQkxFIEJPUkRFUj0iMSIgQ0VMTFBBRERJTkc9IjMiIENFTExTUEFDSU5HPSIwIiBXSURUSD0iMTAwJSI+CjxUUiBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iVGFibGVTdWJIZWFkaW5nQ29sb3IiPgo8VEQ+PEI+TWV0aG9kcyBpbmhlcml0ZWQgZnJvbSBjbGFzcyBqYXZhLmxhbmcuT2JqZWN0PC9CPjwvVEQ+CjwvVFI+CjxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgo8VEQ+PENPREU+Y2xvbmUsIGVxdWFscywgZmluYWxpemUsIGdldENsYXNzLCBoYXNoQ29kZSwgbm90aWZ5LCBub3RpZnlBbGwsIHRvU3RyaW5nLCB3YWl0LCB3YWl0LCB3YWl0PC9DT0RFPjwvVEQ+CjwvVFI+CjwvVEFCTEU+CiZuYnNwOwo8UD4KCjwhLS0gPT09PT09PT09PT09IEZJRUxEIERFVEFJTCA9PT09PT09PT09PSAtLT4KCjxBIE5BTUU9ImZpZWxkX2RldGFpbCI+PCEtLSAtLT48L0E+CjxUQUJMRSBCT1JERVI9IjEiIENFTExQQURESU5HPSIzIiBDRUxMU1BBQ0lORz0iMCIgV0lEVEg9IjEwMCUiPgo8VFIgQkdDT0xPUj0iI0NDQ0NGRiIgQ0xBU1M9IlRhYmxlSGVhZGluZ0NvbG9yIj4KPFREIENPTFNQQU49MT48Rk9OVCBTSVpFPSIrMiI+CjxCPkZpZWxkIERldGFpbDwvQj48L0ZPTlQ+PC9URD4KPC9UUj4KPC9UQUJMRT4KCjxBIE5BTUU9ImNvbmZpZyI+PCEtLSAtLT48L0E+PEgzPgpjb25maWc8L0gzPgo8UFJFPgpwcm90ZWN0ZWQgPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2FwYWNoZS9zdHJ1dHMvY29uZmlnL01vZHVsZUNvbmZpZy5odG1sIj5Nb2R1bGVDb25maWc8L0E+IDxCPmNvbmZpZzwvQj48L1BSRT4KPERMPgo8REQ+PHA+VGhlIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9hcGFjaGUvc3RydXRzL2NvbmZpZy9Nb2R1bGVDb25maWcuaHRtbCI+PENPREU+TW9kdWxlQ29uZmlnPC9DT0RFPjwvQT4gaW5zdGFuY2UgZm9yIG91ciBhcHBsaWNhdGlvbiBtb2R1bGUuPC9wPgo8UD4KPERMPgo8L0RMPgo8L0RMPgo8SFI+Cgo8QSBOQU1FPSJzZXJ2bGV0Ij48IS0tIC0tPjwvQT48SDM+CnNlcnZsZXQ8L0gzPgo8UFJFPgpwcm90ZWN0ZWQgPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2FwYWNoZS9zdHJ1dHMvYWN0aW9uL0FjdGlvblNlcnZsZXQuaHRtbCI+QWN0aW9uU2VydmxldDwvQT4gPEI+c2VydmxldDwvQj48L1BSRT4KPERMPgo8REQ+PHA+VGhlIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9hcGFjaGUvc3RydXRzL2FjdGlvbi9BY3Rpb25TZXJ2bGV0Lmh0bWwiPjxDT0RFPkFjdGlvblNlcnZsZXQ8L0NPREU+PC9BPiBpbnN0YW5jZSB3ZSBhcmUgYXNzb2NpYXRlZCB3aXRoLjwvcD4KPFA+CjxETD4KPC9ETD4KPC9ETD4KPEhSPgoKPEEgTkFNRT0iZmF0YWwiPjwhLS0gLS0+PC9BPjxIMz4KZmF0YWw8L0gzPgo8UFJFPgpwcml2YXRlIGJvb2xlYW4gPEI+ZmF0YWw8L0I+PC9QUkU+CjxETD4KPEREPjxwPlNob3VsZCB0aGUgZXhpc3RlbmNlIG9mIGNvbmZpZ3VyYXRpb24gZXJyb3JzIGJlIGZhdGFsLjwvcD4KPFA+CjxETD4KPC9ETD4KPC9ETD4KCjwhLS0gPT09PT09PT09IENPTlNUUlVDVE9SIERFVEFJTCA9PT09PT09PSAtLT4KCjxBIE5BTUU9ImNvbnN0cnVjdG9yX2RldGFpbCI+PCEtLSAtLT48L0E+CjxUQUJMRSBCT1JERVI9IjEiIENFTExQQURESU5HPSIzIiBDRUxMU1BBQ0lORz0iMCIgV0lEVEg9IjEwMCUiPgo8VFIgQkdDT0xPUj0iI0NDQ0NGRiIgQ0xBU1M9IlRhYmxlSGVhZGluZ0NvbG9yIj4KPFREIENPTFNQQU49MT48Rk9OVCBTSVpFPSIrMiI+CjxCPkNvbnN0cnVjdG9yIERldGFpbDwvQj48L0ZPTlQ+PC9URD4KPC9UUj4KPC9UQUJMRT4KCjxBIE5BTUU9Ik1vZHVsZUNvbmZpZ1ZlcmlmaWVyKCkiPjwhLS0gLS0+PC9BPjxIMz4KTW9kdWxlQ29uZmlnVmVyaWZpZXI8L0gzPgo8UFJFPgpwdWJsaWMgPEI+TW9kdWxlQ29uZmlnVmVyaWZpZXI8L0I+KCk8L1BSRT4KPERMPgo8L0RMPgoKPCEtLSA9PT09PT09PT09PT0gTUVUSE9EIERFVEFJTCA9PT09PT09PT09IC0tPgoKPEEgTkFNRT0ibWV0aG9kX2RldGFpbCI+PCEtLSAtLT48L0E+CjxUQUJMRSBCT1JERVI9IjEiIENFTExQQURESU5HPSIzIiBDRUxMU1BBQ0lORz0iMCIgV0lEVEg9IjEwMCUiPgo8VFIgQkdDT0xPUj0iI0NDQ0NGRiIgQ0xBU1M9IlRhYmxlSGVhZGluZ0NvbG9yIj4KPFREIENPTFNQQU49MT48Rk9OVCBTSVpFPSIrMiI+CjxCPk1ldGhvZCBEZXRhaWw8L0I+PC9GT05UPjwvVEQ+CjwvVFI+CjwvVEFCTEU+Cgo8QSBOQU1FPSJpc0ZhdGFsKCkiPjwhLS0gLS0+PC9BPjxIMz4KaXNGYXRhbDwvSDM+CjxQUkU+CnB1YmxpYyBib29sZWFuIDxCPmlzRmF0YWw8L0I+KCk8L1BSRT4KPERMPgo8REQ+PHA+UmV0dXJuIHRoZSAiY29uZmlndWF0aW9uIGVycm9ycyBhcmUgZmF0YWwiIGZsYWcuPC9wPgo8UD4KPEREPjxETD4KPC9ETD4KPC9ERD4KPEREPjxETD4KPC9ETD4KPC9ERD4KPC9ETD4KPEhSPgoKPEEgTkFNRT0ic2V0RmF0YWwoYm9vbGVhbikiPjwhLS0gLS0+PC9BPjxIMz4Kc2V0RmF0YWw8L0gzPgo8UFJFPgpwdWJsaWMgdm9pZCA8Qj5zZXRGYXRhbDwvQj4oYm9vbGVhbiZuYnNwO2ZhdGFsKTwvUFJFPgo8REw+CjxERD48cD5TZXQgdGhlICJjb25maWd1cmF0aW9uIGVycm9ycyBhcmUgZmF0YWwiIGZsYWcuPC9wPgo8UD4KPEREPjxETD4KPC9ETD4KPC9ERD4KPEREPjxETD4KPERUPjxCPlBhcmFtZXRlcnM6PC9CPjxERD48Q09ERT5mYXRhbDwvQ09ERT4gLSBUaGUgbmV3IGZsYWcgdmFsdWU8L0RMPgo8L0REPgo8L0RMPgo8SFI+Cgo8QSBOQU1FPSJkZXN0cm95KCkiPjwhLS0gLS0+PC9BPjxIMz4KZGVzdHJveTwvSDM+CjxQUkU+CnB1YmxpYyB2b2lkIDxCPmRlc3Ryb3k8L0I+KCk8L1BSRT4KPERMPgo8REQ+PHA+UmVjZWl2ZSBub3RpZmljYXRpb24gdGhhdCBvdXIgb3duaW5nIG1vZHVsZSBpcyBiZWluZwogc2h1dCBkb3duLjwvcD4KPFA+CjxERD48REw+CjxEVD48Qj5TcGVjaWZpZWQgYnk6PC9CPjxERD48Q09ERT48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvYXBhY2hlL3N0cnV0cy9hY3Rpb24vUGx1Z0luLmh0bWwjZGVzdHJveSgpIj5kZXN0cm95PC9BPjwvQ09ERT4gaW4gaW50ZXJmYWNlIDxDT0RFPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9hcGFjaGUvc3RydXRzL2FjdGlvbi9QbHVnSW4uaHRtbCI+UGx1Z0luPC9BPjwvQ09ERT48L0RMPgo8L0REPgo8REQ+PERMPgo8L0RMPgo8L0REPgo8L0RMPgo8SFI+Cgo8QSBOQU1FPSJpbml0KG9yZy5hcGFjaGUuc3RydXRzLmFjdGlvbi5BY3Rpb25TZXJ2bGV0LCBvcmcuYXBhY2hlLnN0cnV0cy5jb25maWcuTW9kdWxlQ29uZmlnKSI+PCEtLSAtLT48L0E+PEgzPgppbml0PC9IMz4KPFBSRT4KcHVibGljIHZvaWQgPEI+aW5pdDwvQj4oPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2FwYWNoZS9zdHJ1dHMvYWN0aW9uL0FjdGlvblNlcnZsZXQuaHRtbCI+QWN0aW9uU2VydmxldDwvQT4mbmJzcDtzZXJ2bGV0LAogICAgICAgICAgICAgICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9hcGFjaGUvc3RydXRzL2NvbmZpZy9Nb2R1bGVDb25maWcuaHRtbCI+TW9kdWxlQ29uZmlnPC9BPiZuYnNwO2NvbmZpZykKICAgICAgICAgIHRocm93cyBqYXZheC5zZXJ2bGV0LlNlcnZsZXRFeGNlcHRpb248L1BSRT4KPERMPgo8REQ+PHA+UmVjZWl2ZSBub3RpZmljYXRpb24gdGhhdCB0aGUgc3BlY2lmaWVkIG1vZHVsZSBpcyBiZWluZwogc3RhcnRlZCB1cC48L3A+CjxQPgo8REQ+PERMPgo8RFQ+PEI+U3BlY2lmaWVkIGJ5OjwvQj48REQ+PENPREU+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2FwYWNoZS9zdHJ1dHMvYWN0aW9uL1BsdWdJbi5odG1sI2luaXQob3JnLmFwYWNoZS5zdHJ1dHMuYWN0aW9uLkFjdGlvblNlcnZsZXQsIG9yZy5hcGFjaGUuc3RydXRzLmNvbmZpZy5Nb2R1bGVDb25maWcpIj5pbml0PC9BPjwvQ09ERT4gaW4gaW50ZXJmYWNlIDxDT0RFPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9hcGFjaGUvc3RydXRzL2FjdGlvbi9QbHVnSW4uaHRtbCI+UGx1Z0luPC9BPjwvQ09ERT48L0RMPgo8L0REPgo8REQ+PERMPgo8RFQ+PEI+UGFyYW1ldGVyczo8L0I+PEREPjxDT0RFPnNlcnZsZXQ8L0NPREU+IC0gQWN0aW9uU2VydmxldCB0aGF0IGlzIG1hbmFnaW5nIGFsbCB0aGUKICBtb2R1bGVzIGluIHRoaXMgd2ViIGFwcGxpY2F0aW9uPEREPjxDT0RFPmNvbmZpZzwvQ09ERT4gLSBNb2R1bGVDb25maWcgZm9yIHRoZSBtb2R1bGUgd2l0aCB3aGljaAogIHRoaXMgcGx1Zy1pbiBpcyBhc3NvY2lhdGVkCjxEVD48Qj5UaHJvd3M6PC9CPgo8REQ+PENPREU+amF2YXguc2VydmxldC5TZXJ2bGV0RXhjZXB0aW9uPC9DT0RFPiAtIGlmIHRoaXMgPGNvZGU+UGx1Z0luPC9jb2RlPiBjYW5ub3QKICBiZSBzdWNjZXNzZnVsbHkgaW5pdGlhbGl6ZWQ8L0RMPgo8L0REPgo8L0RMPgo8SFI+Cgo8QSBOQU1FPSJsb2coamF2YS5sYW5nLlN0cmluZykiPjwhLS0gLS0+PC9BPjxIMz4KbG9nPC9IMz4KPFBSRT4KcHJvdGVjdGVkIHZvaWQgPEI+bG9nPC9CPihqYXZhLmxhbmcuU3RyaW5nJm5ic3A7bWVzc2FnZSk8L1BSRT4KPERMPgo8REQ+PHA+TG9nIHRoZSBzcGVjaWZpZWQgbWVzc2FnZSB0byBvdXIgc2VydmxldCBjb250ZXh0IGxvZywgYWZ0ZXIgYQogaGVhZGVyIGluY2x1ZGluZyB0aGUgbW9kdWxlIHByZWZpeC48L3A+CjxQPgo8REQ+PERMPgo8L0RMPgo8L0REPgo8REQ+PERMPgo8RFQ+PEI+UGFyYW1ldGVyczo8L0I+PEREPjxDT0RFPm1lc3NhZ2U8L0NPREU+IC0gVGhlIG1lc3NhZ2UgdG8gYmUgbG9nZ2VkPC9ETD4KPC9ERD4KPC9ETD4KPEhSPgoKPEEgTkFNRT0idmVyaWZ5QWN0aW9uTWFwcGluZ0NsYXNzKCkiPjwhLS0gLS0+PC9BPjxIMz4KdmVyaWZ5QWN0aW9uTWFwcGluZ0NsYXNzPC9IMz4KPFBSRT4KcHJvdGVjdGVkIGJvb2xlYW4gPEI+dmVyaWZ5QWN0aW9uTWFwcGluZ0NsYXNzPC9CPigpPC9QUkU+CjxETD4KPEREPjxwPlJldHVybiA8Y29kZT50cnVlPC9jb2RlPiBpZiBpbmZvcm1hdGlvbiByZXR1cm5lZCBieQogPGNvZGU+Y29uZmlnLmdldEFjdGlvbk1hcHBpbmdDbGFzcygpPC9jb2RlPiBpcyBhbGwgdmFsaWQ7CiBvdGhlcndpc2UsIGxvZyBlcnJvciBtZXNzYWdlcyBhbmQgcmV0dXJuIDxjb2RlPmZhbHNlPC9jb2RlPi48L3A+CjxQPgo8REQ+PERMPgo8L0RMPgo8L0REPgo8REQ+PERMPgo8L0RMPgo8L0REPgo8L0RMPgo8SFI+Cgo8QSBOQU1FPSJ2ZXJpZnlGb3J3YXJkQ29uZmlncygpIj48IS0tIC0tPjwvQT48SDM+CnZlcmlmeUZvcndhcmRDb25maWdzPC9IMz4KPFBSRT4KcHJvdGVjdGVkIGJvb2xlYW4gPEI+dmVyaWZ5Rm9yd2FyZENvbmZpZ3M8L0I+KCk8L1BSRT4KPERMPgo8REQ+PHA+UmV0dXJuIDxjb2RlPnRydWU8L2NvZGU+IGlmIGluZm9ybWF0aW9uIHJldHVybmVkIGJ5CiA8Y29kZT5jb25maWcuZmluZEZvcndhcmRDb25maWdzKCkgaXMgYWxsIHZhbGlkOwogb3RoZXJ3aXNlLCBsb2cgZXJyb3IgbWVzc2FnZXMgYW5kIHJldHVybiA8Y29kZT5mYWxzZTwvY29kZT4uPC9wPgo8UD4KPEREPjxETD4KPC9ETD4KPC9ERD4KPEREPjxETD4KPC9ETD4KPC9ERD4KPC9ETD4KPEhSPgoKPEEgTkFNRT0idmVyaWZ5TWVzc2FnZVJlc291cmNlc0NvbmZpZ3MoKSI+PCEtLSAtLT48L0E+PEgzPgp2ZXJpZnlNZXNzYWdlUmVzb3VyY2VzQ29uZmlnczwvSDM+CjxQUkU+CnByb3RlY3RlZCBib29sZWFuIDxCPnZlcmlmeU1lc3NhZ2VSZXNvdXJjZXNDb25maWdzPC9CPigpPC9QUkU+CjxETD4KPEREPjxwPlJldHVybiA8Y29kZT50cnVlPC9jb2RlPiBpZiBpbmZvcm1hdGlvbiByZXR1cm5lZCBieQogPGNvZGU+Y29uZmlnLmZpbmRNZXNzYWdlUmVzb3VyY2VzQ29uZmlncygpIGlzIGFsbCB2YWxpZDsKIG90aGVyd2lzZSwgbG9nIGVycm9yIG1lc3NhZ2VzIGFuZCByZXR1cm4gPGNvZGU+ZmFsc2U8L2NvZGU+LjwvcD4KPFA+CjxERD48REw+CjwvREw+CjwvREQ+CjxERD48REw+CjwvREw+CjwvREQ+CjwvREw+CjxIUj4KCjxBIE5BTUU9InZlcmlmeVBsdWdJbkNvbmZpZ3MoKSI+PCEtLSAtLT48L0E+PEgzPgp2ZXJpZnlQbHVnSW5Db25maWdzPC9IMz4KPFBSRT4KcHJvdGVjdGVkIGJvb2xlYW4gPEI+dmVyaWZ5UGx1Z0luQ29uZmlnczwvQj4oKTwvUFJFPgo8REw+CjxERD48cD5SZXR1cm4gPGNvZGU+dHJ1ZTwvY29kZT4gaWYgaW5mb3JtYXRpb24gcmV0dXJuZWQgYnkKIDxjb2RlPmNvbmZpZy5maW5kUGx1Z2luQ29uZmlncygpIGlzIGFsbCB2YWxpZDsKIG90aGVyd2lzZSwgbG9nIGVycm9yIG1lc3NhZ2VzIGFuZCByZXR1cm4gPGNvZGU+ZmFsc2U8L2NvZGU+LjwvcD4KPFA+CjxERD48REw+CjwvREw+CjwvREQ+CjxERD48REw+CjwvREw+CjwvREQ+CjwvREw+CjwhLS0gPT09PT09PT09IEVORCBPRiBDTEFTUyBEQVRBID09PT09PT09PSAtLT4KPEhSPgoKPCEtLSA9PT09PT09PT09IFNUQVJUIE9GIE5BVkJBUiA9PT09PT09PT09IC0tPgo8QSBOQU1FPSJuYXZiYXJfYm90dG9tIj48IS0tIC0tPjwvQT4KPFRBQkxFIEJPUkRFUj0iMCIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIxIiBDRUxMU1BBQ0lORz0iMCI+CjxUUj4KPFREIENPTFNQQU49MyBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPgo8QSBOQU1FPSJuYXZiYXJfYm90dG9tX2ZpcnN0cm93Ij48IS0tIC0tPjwvQT4KPFRBQkxFIEJPUkRFUj0iMCIgQ0VMTFBBRERJTkc9IjAiIENFTExTUEFDSU5HPSIzIj4KICA8VFIgQUxJR049ImNlbnRlciIgVkFMSUdOPSJ0b3AiPgogIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi9vdmVydmlldy1zdW1tYXJ5Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+T3ZlcnZpZXc8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgogIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSJwYWNrYWdlLXN1bW1hcnkuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5QYWNrYWdlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KICA8VEQgQkdDT0xPUj0iI0ZGRkZGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxUmV2Ij4gJm5ic3A7PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxUmV2Ij48Qj5DbGFzczwvQj48L0ZPTlQ+Jm5ic3A7PC9URD4KICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iY2xhc3MtdXNlL01vZHVsZUNvbmZpZ1ZlcmlmaWVyLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+VXNlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0icGFja2FnZS10cmVlLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+VHJlZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+CiAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL2RlcHJlY2F0ZWQtbGlzdC5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkRlcHJlY2F0ZWQ8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgogIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi9pbmRleC1hbGwuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5JbmRleDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+CiAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL2hlbHAtZG9jLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+SGVscDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+CiAgPC9UUj4KPC9UQUJMRT4KPC9URD4KPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFJPV1NQQU49Mz48RU0+CjwvRU0+CjwvVEQ+CjwvVFI+Cgo8VFI+CjxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+CiZuYnNwO1BSRVYgQ0xBU1MmbmJzcDsKJm5ic3A7TkVYVCBDTEFTUzwvRk9OVD48L1REPgo8VEQgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJOYXZCYXJDZWxsMiI+PEZPTlQgU0laRT0iLTIiPgogIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL2luZGV4Lmh0bWwiIFRBUkdFVD0iX3RvcCI+PEI+RlJBTUVTPC9CPjwvQT4gICZuYnNwOwombmJzcDs8QSBIUkVGPSJNb2R1bGVDb25maWdWZXJpZmllci5odG1sIiBUQVJHRVQ9Il90b3AiPjxCPk5PIEZSQU1FUzwvQj48L0E+ICAmbmJzcDsKJm5ic3A7CjxTQ1JJUFQ+CiAgPCEtLQogIGlmKHdpbmRvdz09dG9wKSB7CiAgICBkb2N1bWVudC53cml0ZWxuKCc8QSBIUkVGPSIuLi8uLi8uLi8uLi9hbGxjbGFzc2VzLW5vZnJhbWUuaHRtbCIgVEFSR0VUPSIiPjxCPkFsbCBDbGFzc2VzPC9CPjwvQT4nKTsKICB9CiAgLy8tLT4KPC9TQ1JJUFQ+CjxOT1NDUklQVD4KPEEgSFJFRj0iLi4vLi4vLi4vLi4vYWxsY2xhc3Nlcy1ub2ZyYW1lLmh0bWwiIFRBUkdFVD0iIj48Qj5BbGwgQ2xhc3NlczwvQj48L0E+CjwvTk9TQ1JJUFQ+CjwvRk9OVD48L1REPgo8L1RSPgo8VFI+CjxURCBWQUxJR049InRvcCIgQ0xBU1M9Ik5hdkJhckNlbGwzIj48Rk9OVCBTSVpFPSItMiI+CiAgU1VNTUFSWTombmJzcDtORVNURUQmbmJzcDt8Jm5ic3A7PEEgSFJFRj0iI2ZpZWxkX3N1bW1hcnkiPkZJRUxEPC9BPiZuYnNwO3wmbmJzcDs8QSBIUkVGPSIjY29uc3RydWN0b3Jfc3VtbWFyeSI+Q09OU1RSPC9BPiZuYnNwO3wmbmJzcDs8QSBIUkVGPSIjbWV0aG9kX3N1bW1hcnkiPk1FVEhPRDwvQT48L0ZPTlQ+PC9URD4KPFREIFZBTElHTj0idG9wIiBDTEFTUz0iTmF2QmFyQ2VsbDMiPjxGT05UIFNJWkU9Ii0yIj4KREVUQUlMOiZuYnNwOzxBIEhSRUY9IiNmaWVsZF9kZXRhaWwiPkZJRUxEPC9BPiZuYnNwO3wmbmJzcDs8QSBIUkVGPSIjY29uc3RydWN0b3JfZGV0YWlsIj5DT05TVFI8L0E+Jm5ic3A7fCZuYnNwOzxBIEhSRUY9IiNtZXRob2RfZGV0YWlsIj5NRVRIT0Q8L0E+PC9GT05UPjwvVEQ+CjwvVFI+CjwvVEFCTEU+CjwhLS0gPT09PT09PT09PT0gRU5EIE9GIE5BVkJBUiA9PT09PT09PT09PSAtLT4KCjxIUj4KQ29weXJpZ2h0IKkgMjAwMC0yMDAzIC0gQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24KPC9CT0RZPgo8L0hUTUw+Cg==