PCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMC8vRU4iPg0KPCEtLU5ld1BhZ2UtLT4NCjxIVE1MPg0KPEhFQUQ+DQo8IS0tIEdlbmVyYXRlZCBieSBqYXZhZG9jIG9uIFRodSBOb3YgMjIgMTc6MTI6NTggRVNUIDIwMDcgLS0+DQo8VElUTEU+DQpYYWxhbi1KYXZhIDIuNy4xOiBDbGFzcyAgWFN0cmluZw0KPC9USVRMRT4NCjxMSU5LIFJFTCA9InN0eWxlc2hlZXQiIFRZUEU9InRleHQvY3NzIiBIUkVGPSIuLi8uLi8uLi8uLi9zdHlsZXNoZWV0LmNzcyIgVElUTEU9IlN0eWxlIj4NCjwvSEVBRD4NCjxCT0RZIEJHQ09MT1I9IndoaXRlIj4NCg0KPCEtLSA9PT09PT09PT09IFNUQVJUIE9GIE5BVkJBUiA9PT09PT09PT09IC0tPg0KPEEgTkFNRT0ibmF2YmFyX3RvcCI+PCEtLSAtLT48L0E+CjxUQUJMRSBCT1JERVI9IjAiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMSIgQ0VMTFNQQUNJTkc9IjAiPg0KPFRSPg0KPFREIENPTFNQQU49MiBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPg0KPEEgTkFNRT0ibmF2YmFyX3RvcF9maXJzdHJvdyI+PCEtLSAtLT48L0E+CjxUQUJMRSBCT1JERVI9IjAiIENFTExQQURESU5HPSIwIiBDRUxMU1BBQ0lORz0iMyI+DQogIDxUUiBBTElHTj0iY2VudGVyIiBWQUxJR049InRvcCI+DQogIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi9vdmVydmlldy1zdW1tYXJ5Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+T3ZlcnZpZXc8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPg0KICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0icGFja2FnZS1zdW1tYXJ5Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+UGFja2FnZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+DQogIDxURCBCR0NPTE9SPSIjRkZGRkZGIiBDTEFTUz0iTmF2QmFyQ2VsbDFSZXYiPiAmbmJzcDs8Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDFSZXYiPjxCPkNsYXNzPC9CPjwvRk9OVD4mbmJzcDs8L1REPg0KICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iY2xhc3MtdXNlL1hTdHJpbmcuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5Vc2U8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPg0KICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0icGFja2FnZS10cmVlLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+VHJlZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+DQogIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi9kZXByZWNhdGVkLWxpc3QuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5EZXByZWNhdGVkPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4NCiAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL2luZGV4LWFsbC5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkluZGV4PC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4NCiAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL2hlbHAtZG9jLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+SGVscDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+DQogIDwvVFI+DQo8L1RBQkxFPg0KPC9URD4NCjxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBST1dTUEFOPTM+PEVNPg0KPC9FTT4NCjwvVEQ+DQo8L1RSPg0KDQo8VFI+DQo8VEQgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJOYXZCYXJDZWxsMiI+PEZPTlQgU0laRT0iLTIiPg0KJm5ic3A7PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2FwYWNoZS94cGF0aC9vYmplY3RzL1hSVHJlZUZyYWdTZWxlY3RXcmFwcGVyLmh0bWwiPjxCPlBSRVYgQ0xBU1M8L0I+PC9BPiZuYnNwOw0KJm5ic3A7PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2FwYWNoZS94cGF0aC9vYmplY3RzL1hTdHJpbmdGb3JDaGFycy5odG1sIj48Qj5ORVhUIENMQVNTPC9CPjwvQT48L0ZPTlQ+PC9URD4NCjxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+DQogIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL2luZGV4Lmh0bWwiIFRBUkdFVD0iX3RvcCI+PEI+RlJBTUVTPC9CPjwvQT4gICZuYnNwOw0KJm5ic3A7PEEgSFJFRj0iWFN0cmluZy5odG1sIiBUQVJHRVQ9Il90b3AiPjxCPk5PIEZSQU1FUzwvQj48L0E+PC9GT05UPjwvVEQ+DQo8L1RSPg0KPFRSPg0KPFREIFZBTElHTj0idG9wIiBDTEFTUz0iTmF2QmFyQ2VsbDMiPjxGT05UIFNJWkU9Ii0yIj4NCiAgU1VNTUFSWTogJm5ic3A7SU5ORVImbmJzcDt8Jm5ic3A7PEEgSFJFRj0iI2ZpZWxkX3N1bW1hcnkiPkZJRUxEPC9BPiZuYnNwO3wmbmJzcDs8QSBIUkVGPSIjY29uc3RydWN0b3Jfc3VtbWFyeSI+Q09OU1RSPC9BPiZuYnNwO3wmbmJzcDs8QSBIUkVGPSIjbWV0aG9kX3N1bW1hcnkiPk1FVEhPRDwvQT48L0ZPTlQ+PC9URD4NCjxURCBWQUxJR049InRvcCIgQ0xBU1M9Ik5hdkJhckNlbGwzIj48Rk9OVCBTSVpFPSItMiI+DQpERVRBSUw6ICZuYnNwOzxBIEhSRUY9IiNmaWVsZF9kZXRhaWwiPkZJRUxEPC9BPiZuYnNwO3wmbmJzcDs8QSBIUkVGPSIjY29uc3RydWN0b3JfZGV0YWlsIj5DT05TVFI8L0E+Jm5ic3A7fCZuYnNwOzxBIEhSRUY9IiNtZXRob2RfZGV0YWlsIj5NRVRIT0Q8L0E+PC9GT05UPjwvVEQ+DQo8L1RSPg0KPC9UQUJMRT4NCjwhLS0gPT09PT09PT09PT0gRU5EIE9GIE5BVkJBUiA9PT09PT09PT09PSAtLT4NCg0KPEhSPg0KPCEtLSA9PT09PT09PSBTVEFSVCBPRiBDTEFTUyBEQVRBID09PT09PT09IC0tPg0KPEgyPg0KPEZPTlQgU0laRT0iLTEiPg0Kb3JnLmFwYWNoZS54cGF0aC5vYmplY3RzPC9GT05UPg0KPEJSPg0KQ2xhc3MgIFhTdHJpbmc8L0gyPg0KPFBSRT4NCmphdmEubGFuZy5PYmplY3QNCiAgfA0KICArLS08QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvYXBhY2hlL3hwYXRoL0V4cHJlc3Npb24uaHRtbCI+b3JnLmFwYWNoZS54cGF0aC5FeHByZXNzaW9uPC9BPg0KICAgICAgICB8DQogICAgICAgICstLTxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9hcGFjaGUveHBhdGgvb2JqZWN0cy9YT2JqZWN0Lmh0bWwiPm9yZy5hcGFjaGUueHBhdGgub2JqZWN0cy5YT2JqZWN0PC9BPg0KICAgICAgICAgICAgICB8DQogICAgICAgICAgICAgICstLTxCPm9yZy5hcGFjaGUueHBhdGgub2JqZWN0cy5YU3RyaW5nPC9CPg0KPC9QUkU+DQo8REw+DQo8RFQ+PEI+RGlyZWN0IEtub3duIFN1YmNsYXNzZXM6PC9CPiA8REQ+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2FwYWNoZS94cGF0aC9vYmplY3RzL1hTdHJpbmdGb3JDaGFycy5odG1sIj5YU3RyaW5nRm9yQ2hhcnM8L0E+LCA8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvYXBhY2hlL3hwYXRoL29iamVjdHMvWFN0cmluZ0ZvckZTQi5odG1sIj5YU3RyaW5nRm9yRlNCPC9BPjwvREQ+DQo8L0RMPg0KPEhSPg0KPERMPg0KPERUPnB1YmxpYyBjbGFzcyA8Qj5YU3RyaW5nPC9CPjxEVD5leHRlbmRzIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9hcGFjaGUveHBhdGgvb2JqZWN0cy9YT2JqZWN0Lmh0bWwiPlhPYmplY3Q8L0E+PERUPmltcGxlbWVudHMgPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2FwYWNoZS94bWwvdXRpbHMvWE1MU3RyaW5nLmh0bWwiPlhNTFN0cmluZzwvQT48L0RMPg0KDQo8UD4NClRoaXMgY2xhc3MgcmVwcmVzZW50cyBhbiBYUGF0aCBzdHJpbmcgb2JqZWN0LCBhbmQgaXMgY2FwYWJsZSBvZgogY29udmVydGluZyB0aGUgc3RyaW5nIHRvIG90aGVyIHR5cGVzLCBzdWNoIGFzIGEgbnVtYmVyLg0KPFA+DQo8REw+DQo8RFQ+PEI+U2VlIEFsc286IDwvQj48REQ+PEEgSFJFRj0iLi4vLi4vLi4vLi4vc2VyaWFsaXplZC1mb3JtLmh0bWwjb3JnLmFwYWNoZS54cGF0aC5vYmplY3RzLlhTdHJpbmciPlNlcmlhbGl6ZWQgRm9ybTwvQT48RFQ+PEI+VXNhZ2U6PC9CPjxERD48L0REPg0KPC9ETD4NCjxIUj4NCg0KPFA+DQo8IS0tID09PT09PT09IElOTkVSIENMQVNTIFNVTU1BUlkgPT09PT09PT0gLS0+DQoNCg0KPCEtLSA9PT09PT09PT09PSBGSUVMRCBTVU1NQVJZID09PT09PT09PT09IC0tPg0KDQo8QSBOQU1FPSJmaWVsZF9zdW1tYXJ5Ij48IS0tIC0tPjwvQT4KPFRBQkxFIEJPUkRFUj0iMSIgQ0VMTFBBRERJTkc9IjMiIENFTExTUEFDSU5HPSIwIiBXSURUSD0iMTAwJSI+DQo8VFIgQkdDT0xPUj0iI0NDQ0NGRiIgQ0xBU1M9IlRhYmxlSGVhZGluZ0NvbG9yIj4NCjxURCBDT0xTUEFOPTI+PEZPTlQgU0laRT0iKzIiPg0KPEI+RmllbGQgU3VtbWFyeTwvQj48L0ZPTlQ+PC9URD4NCjwvVFI+DQo8VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4NCjxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4NCjxDT0RFPnN0YXRpYyZuYnNwOzxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9hcGFjaGUveHBhdGgvb2JqZWN0cy9YU3RyaW5nLmh0bWwiPlhTdHJpbmc8L0E+PC9DT0RFPjwvRk9OVD48L1REPg0KPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9hcGFjaGUveHBhdGgvb2JqZWN0cy9YU3RyaW5nLmh0bWwjRU1QVFlTVFJJTkciPkVNUFRZU1RSSU5HPC9BPjwvQj48L0NPREU+DQoNCjxCUj4NCiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO0VtcHR5IHN0cmluZyBYU3RyaW5nIG9iamVjdDwvVEQ+DQo8L1RSPg0KPC9UQUJMRT4NCiZuYnNwOzxBIE5BTUU9ImZpZWxkc19pbmhlcml0ZWRfZnJvbV9jbGFzc19vcmcuYXBhY2hlLnhwYXRoLm9iamVjdHMuWE9iamVjdCI+PCEtLSAtLT48L0E+CjxUQUJMRSBCT1JERVI9IjEiIENFTExQQURESU5HPSIzIiBDRUxMU1BBQ0lORz0iMCIgV0lEVEg9IjEwMCUiPg0KPFRSIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJUYWJsZVN1YkhlYWRpbmdDb2xvciI+DQo8VEQ+PEI+RmllbGRzIGluaGVyaXRlZCBmcm9tIGNsYXNzIG9yZy5hcGFjaGUueHBhdGgub2JqZWN0cy48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvYXBhY2hlL3hwYXRoL29iamVjdHMvWE9iamVjdC5odG1sIj5YT2JqZWN0PC9BPjwvQj48L1REPg0KPC9UUj4NCjxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPg0KPFREPjxDT0RFPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9hcGFjaGUveHBhdGgvb2JqZWN0cy9YT2JqZWN0Lmh0bWwjQ0xBU1NfQk9PTEVBTiI+Q0xBU1NfQk9PTEVBTjwvQT4sICANCjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9hcGFjaGUveHBhdGgvb2JqZWN0cy9YT2JqZWN0Lmh0bWwjQ0xBU1NfTk9ERVNFVCI+Q0xBU1NfTk9ERVNFVDwvQT4sICANCjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9hcGFjaGUveHBhdGgvb2JqZWN0cy9YT2JqZWN0Lmh0bWwjQ0xBU1NfTlVMTCI+Q0xBU1NfTlVMTDwvQT4sICANCjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9hcGFjaGUveHBhdGgvb2JqZWN0cy9YT2JqZWN0Lmh0bWwjQ0xBU1NfTlVNQkVSIj5DTEFTU19OVU1CRVI8L0E+LCAgDQo8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvYXBhY2hlL3hwYXRoL29iamVjdHMvWE9iamVjdC5odG1sI0NMQVNTX1JUUkVFRlJBRyI+Q0xBU1NfUlRSRUVGUkFHPC9BPiwgIA0KPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2FwYWNoZS94cGF0aC9vYmplY3RzL1hPYmplY3QuaHRtbCNDTEFTU19TVFJJTkciPkNMQVNTX1NUUklORzwvQT4sICANCjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9hcGFjaGUveHBhdGgvb2JqZWN0cy9YT2JqZWN0Lmh0bWwjQ0xBU1NfVU5LTk9XTiI+Q0xBU1NfVU5LTk9XTjwvQT4sICANCjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9hcGFjaGUveHBhdGgvb2JqZWN0cy9YT2JqZWN0Lmh0bWwjQ0xBU1NfVU5SRVNPTFZFRFZBUklBQkxFIj5DTEFTU19VTlJFU09MVkVEVkFSSUFCTEU8L0E+PC9DT0RFPjwvVEQ+DQo8L1RSPg0KPC9UQUJMRT4NCiZuYnNwOw0KPCEtLSA9PT09PT09PSBDT05TVFJVQ1RPUiBTVU1NQVJZID09PT09PT09IC0tPg0KDQo8QSBOQU1FPSJjb25zdHJ1Y3Rvcl9zdW1tYXJ5Ij48IS0tIC0tPjwvQT4KPFRBQkxFIEJPUkRFUj0iMSIgQ0VMTFBBRERJTkc9IjMiIENFTExTUEFDSU5HPSIwIiBXSURUSD0iMTAwJSI+DQo8VFIgQkdDT0xPUj0iI0NDQ0NGRiIgQ0xBU1M9IlRhYmxlSGVhZGluZ0NvbG9yIj4NCjxURCBDT0xTUEFOPTI+PEZPTlQgU0laRT0iKzIiPg0KPEI+Q29uc3RydWN0b3IgU3VtbWFyeTwvQj48L0ZPTlQ+PC9URD4NCjwvVFI+DQo8VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4NCjxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvYXBhY2hlL3hwYXRoL29iamVjdHMvWFN0cmluZy5odG1sI1hTdHJpbmcoamF2YS5sYW5nLlN0cmluZykiPlhTdHJpbmc8L0E+PC9CPihqYXZhLmxhbmcuU3RyaW5nJm5ic3A7dmFsKTwvQ09ERT4NCg0KPEJSPg0KJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Q29uc3RydWN0IGEgWE5vZGVTZXQgb2JqZWN0LjwvVEQ+DQo8L1RSPg0KPC9UQUJMRT4NCiZuYnNwOw0KPCEtLSA9PT09PT09PT09IE1FVEhPRCBTVU1NQVJZID09PT09PT09PT09IC0tPg0KDQo8QSBOQU1FPSJtZXRob2Rfc3VtbWFyeSI+PCEtLSAtLT48L0E+CjxUQUJMRSBCT1JERVI9IjEiIENFTExQQURESU5HPSIzIiBDRUxMU1BBQ0lORz0iMCIgV0lEVEg9IjEwMCUiPg0KPFRSIEJHQ09MT1I9IiNDQ0NDRkYiIENMQVNTPSJUYWJsZUhlYWRpbmdDb2xvciI+DQo8VEQgQ09MU1BBTj0yPjxGT05UIFNJWkU9IisyIj4NCjxCPk1ldGhvZCBTdW1tYXJ5PC9CPjwvRk9OVD48L1REPg0KPC9UUj4NCjxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPg0KPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPg0KPENPREU+Jm5ic3A7Ym9vbGVhbjwvQ09ERT48L0ZPTlQ+PC9URD4NCjxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvYXBhY2hlL3hwYXRoL29iamVjdHMvWFN0cmluZy5odG1sI2Jvb2woKSI+Ym9vbDwvQT48L0I+KCk8L0NPREU+DQoNCjxCUj4NCiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO0Nhc3QgcmVzdWx0IG9iamVjdCB0byBhIGJvb2xlYW4uPC9URD4NCjwvVFI+DQo8VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4NCjxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4NCjxDT0RFPiZuYnNwO3ZvaWQ8L0NPREU+PC9GT05UPjwvVEQ+DQo8VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2FwYWNoZS94cGF0aC9vYmplY3RzL1hTdHJpbmcuaHRtbCNjYWxsVmlzaXRvcnMob3JnLmFwYWNoZS54cGF0aC5FeHByZXNzaW9uT3duZXIsIG9yZy5hcGFjaGUueHBhdGguWFBhdGhWaXNpdG9yKSI+Y2FsbFZpc2l0b3JzPC9BPjwvQj4oPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2FwYWNoZS94cGF0aC9FeHByZXNzaW9uT3duZXIuaHRtbCI+RXhwcmVzc2lvbk93bmVyPC9BPiZuYnNwO293bmVyLAogICAgICAgICAgICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2FwYWNoZS94cGF0aC9YUGF0aFZpc2l0b3IuaHRtbCI+WFBhdGhWaXNpdG9yPC9BPiZuYnNwO3Zpc2l0b3IpPC9DT0RFPg0KDQo8QlI+DQombmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDs8L1REPg0KPC9UUj4NCjxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPg0KPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPg0KPENPREU+Jm5ic3A7Y2hhcjwvQ09ERT48L0ZPTlQ+PC9URD4NCjxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvYXBhY2hlL3hwYXRoL29iamVjdHMvWFN0cmluZy5odG1sI2NoYXJBdChpbnQpIj5jaGFyQXQ8L0E+PC9CPihpbnQmbmJzcDtpbmRleCk8L0NPREU+DQoNCjxCUj4NCiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1JldHVybnMgdGhlIGNoYXJhY3RlciBhdCB0aGUgc3BlY2lmaWVkIGluZGV4LjwvVEQ+DQo8L1RSPg0KPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+DQo8VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+DQo8Q09ERT4mbmJzcDtpbnQ8L0NPREU+PC9GT05UPjwvVEQ+DQo8VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2FwYWNoZS94cGF0aC9vYmplY3RzL1hTdHJpbmcuaHRtbCNjb21wYXJlVG8ob3JnLmFwYWNoZS54bWwudXRpbHMuWE1MU3RyaW5nKSI+Y29tcGFyZVRvPC9BPjwvQj4oPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2FwYWNoZS94bWwvdXRpbHMvWE1MU3RyaW5nLmh0bWwiPlhNTFN0cmluZzwvQT4mbmJzcDt4c3RyKTwvQ09ERT4NCg0KPEJSPg0KJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Q29tcGFyZXMgdHdvIHN0cmluZ3MgbGV4aWNvZ3JhcGhpY2FsbHkuPC9URD4NCjwvVFI+DQo8VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4NCjxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4NCjxDT0RFPiZuYnNwO2ludDwvQ09ERT48L0ZPTlQ+PC9URD4NCjxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvYXBhY2hlL3hwYXRoL29iamVjdHMvWFN0cmluZy5odG1sI2NvbXBhcmVUb0lnbm9yZUNhc2Uob3JnLmFwYWNoZS54bWwudXRpbHMuWE1MU3RyaW5nKSI+Y29tcGFyZVRvSWdub3JlQ2FzZTwvQT48L0I+KDxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9hcGFjaGUveG1sL3V0aWxzL1hNTFN0cmluZy5odG1sIj5YTUxTdHJpbmc8L0E+Jm5ic3A7c3RyKTwvQ09ERT4NCg0KPEJSPg0KJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Q29tcGFyZXMgdHdvIHN0cmluZ3MgbGV4aWNvZ3JhcGhpY2FsbHksIGlnbm9yaW5nIGNhc2UgY29uc2lkZXJhdGlvbnMuPC9URD4NCjwvVFI+DQo8VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4NCjxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4NCjxDT0RFPiZuYnNwOzxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9hcGFjaGUveG1sL3V0aWxzL1hNTFN0cmluZy5odG1sIj5YTUxTdHJpbmc8L0E+PC9DT0RFPjwvRk9OVD48L1REPg0KPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9hcGFjaGUveHBhdGgvb2JqZWN0cy9YU3RyaW5nLmh0bWwjY29uY2F0KGphdmEubGFuZy5TdHJpbmcpIj5jb25jYXQ8L0E+PC9CPihqYXZhLmxhbmcuU3RyaW5nJm5ic3A7c3RyKTwvQ09ERT4NCg0KPEJSPg0KJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Q29uY2F0ZW5hdGVzIHRoZSBzcGVjaWZpZWQgc3RyaW5nIHRvIHRoZSBlbmQgb2YgdGhpcyBzdHJpbmcuPC9URD4NCjwvVFI+DQo8VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4NCjxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4NCjxDT0RFPiZuYnNwO3ZvaWQ8L0NPREU+PC9GT05UPjwvVEQ+DQo8VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2FwYWNoZS94cGF0aC9vYmplY3RzL1hTdHJpbmcuaHRtbCNkaXNwYXRjaEFzQ29tbWVudChvcmcueG1sLnNheC5leHQuTGV4aWNhbEhhbmRsZXIpIj5kaXNwYXRjaEFzQ29tbWVudDwvQT48L0I+KDxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy94bWwvc2F4L2V4dC9MZXhpY2FsSGFuZGxlci5odG1sIj5MZXhpY2FsSGFuZGxlcjwvQT4mbmJzcDtsaCk8L0NPREU+DQoNCjxCUj4NCiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO0RpcmVjdGx5IGNhbGwgdGhlCiBjb21tZW50IG1ldGhvZCBvbiB0aGUgcGFzc2VkIExleGljYWxIYW5kbGVyIGZvciB0aGUKIHN0cmluZy12YWx1ZS48L1REPg0KPC9UUj4NCjxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPg0KPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPg0KPENPREU+Jm5ic3A7dm9pZDwvQ09ERT48L0ZPTlQ+PC9URD4NCjxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvYXBhY2hlL3hwYXRoL29iamVjdHMvWFN0cmluZy5odG1sI2Rpc3BhdGNoQ2hhcmFjdGVyc0V2ZW50cyhvcmcueG1sLnNheC5Db250ZW50SGFuZGxlcikiPmRpc3BhdGNoQ2hhcmFjdGVyc0V2ZW50czwvQT48L0I+KDxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy94bWwvc2F4L0NvbnRlbnRIYW5kbGVyLmh0bWwiPkNvbnRlbnRIYW5kbGVyPC9BPiZuYnNwO2NoKTwvQ09ERT4NCg0KPEJSPg0KJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7RGlyZWN0bHkgY2FsbCB0aGUKIGNoYXJhY3RlcnMgbWV0aG9kIG9uIHRoZSBwYXNzZWQgQ29udGVudEhhbmRsZXIgZm9yIHRoZQogc3RyaW5nLXZhbHVlLjwvVEQ+DQo8L1RSPg0KPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+DQo8VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+DQo8Q09ERT4mbmJzcDtib29sZWFuPC9DT0RFPjwvRk9OVD48L1REPg0KPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9hcGFjaGUveHBhdGgvb2JqZWN0cy9YU3RyaW5nLmh0bWwjZW5kc1dpdGgoamF2YS5sYW5nLlN0cmluZykiPmVuZHNXaXRoPC9BPjwvQj4oamF2YS5sYW5nLlN0cmluZyZuYnNwO3N1ZmZpeCk8L0NPREU+DQoNCjxCUj4NCiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1Rlc3RzIGlmIHRoaXMgc3RyaW5nIGVuZHMgd2l0aCB0aGUgc3BlY2lmaWVkIHN1ZmZpeC48L1REPg0KPC9UUj4NCjxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPg0KPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPg0KPENPREU+Jm5ic3A7Ym9vbGVhbjwvQ09ERT48L0ZPTlQ+PC9URD4NCjxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvYXBhY2hlL3hwYXRoL29iamVjdHMvWFN0cmluZy5odG1sI2VxdWFscyhqYXZhLmxhbmcuT2JqZWN0KSI+ZXF1YWxzPC9BPjwvQj4oamF2YS5sYW5nLk9iamVjdCZuYnNwO29iajIpPC9DT0RFPg0KDQo8QlI+DQombmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtDb21wYXJlcyB0aGlzIHN0cmluZyB0byB0aGUgc3BlY2lmaWVkIG9iamVjdC48L1REPg0KPC9UUj4NCjxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPg0KPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPg0KPENPREU+Jm5ic3A7Ym9vbGVhbjwvQ09ERT48L0ZPTlQ+PC9URD4NCjxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvYXBhY2hlL3hwYXRoL29iamVjdHMvWFN0cmluZy5odG1sI2VxdWFscyhqYXZhLmxhbmcuU3RyaW5nKSI+ZXF1YWxzPC9BPjwvQj4oamF2YS5sYW5nLlN0cmluZyZuYnNwO29iajIpPC9DT0RFPg0KDQo8QlI+DQombmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtDb21wYXJlcyB0aGlzIHN0cmluZyB0byB0aGUgc3BlY2lmaWVkIDxjb2RlPlN0cmluZzwvY29kZT4uPC9URD4NCjwvVFI+DQo8VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4NCjxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4NCjxDT0RFPiZuYnNwO2Jvb2xlYW48L0NPREU+PC9GT05UPjwvVEQ+DQo8VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2FwYWNoZS94cGF0aC9vYmplY3RzL1hTdHJpbmcuaHRtbCNlcXVhbHMob3JnLmFwYWNoZS54bWwudXRpbHMuWE1MU3RyaW5nKSI+ZXF1YWxzPC9BPjwvQj4oPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2FwYWNoZS94bWwvdXRpbHMvWE1MU3RyaW5nLmh0bWwiPlhNTFN0cmluZzwvQT4mbmJzcDtvYmoyKTwvQ09ERT4NCg0KPEJSPg0KJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Q29tcGFyZXMgdGhpcyBzdHJpbmcgdG8gdGhlIHNwZWNpZmllZCBvYmplY3QuPC9URD4NCjwvVFI+DQo8VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4NCjxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4NCjxDT0RFPiZuYnNwO2Jvb2xlYW48L0NPREU+PC9GT05UPjwvVEQ+DQo8VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2FwYWNoZS94cGF0aC9vYmplY3RzL1hTdHJpbmcuaHRtbCNlcXVhbHMob3JnLmFwYWNoZS54cGF0aC5vYmplY3RzLlhPYmplY3QpIj5lcXVhbHM8L0E+PC9CPig8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvYXBhY2hlL3hwYXRoL29iamVjdHMvWE9iamVjdC5odG1sIj5YT2JqZWN0PC9BPiZuYnNwO29iajIpPC9DT0RFPg0KDQo8QlI+DQombmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtUZWxsIGlmIHR3byBvYmplY3RzIGFyZSBmdW5jdGlvbmFsbHkgZXF1YWwuPC9URD4NCjwvVFI+DQo8VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4NCjxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4NCjxDT0RFPiZuYnNwO2Jvb2xlYW48L0NPREU+PC9GT05UPjwvVEQ+DQo8VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2FwYWNoZS94cGF0aC9vYmplY3RzL1hTdHJpbmcuaHRtbCNlcXVhbHNJZ25vcmVDYXNlKGphdmEubGFuZy5TdHJpbmcpIj5lcXVhbHNJZ25vcmVDYXNlPC9BPjwvQj4oamF2YS5sYW5nLlN0cmluZyZuYnNwO2Fub3RoZXJTdHJpbmcpPC9DT0RFPg0KDQo8QlI+DQombmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtDb21wYXJlcyB0aGlzIDxjb2RlPlN0cmluZzwvY29kZT4gdG8gYW5vdGhlciA8Y29kZT5TdHJpbmc8L2NvZGU+LAogaWdub3JpbmcgY2FzZSBjb25zaWRlcmF0aW9ucy48L1REPg0KPC9UUj4NCjxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPg0KPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPg0KPENPREU+Jm5ic3A7PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2FwYWNoZS94bWwvdXRpbHMvWE1MU3RyaW5nLmh0bWwiPlhNTFN0cmluZzwvQT48L0NPREU+PC9GT05UPjwvVEQ+DQo8VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2FwYWNoZS94cGF0aC9vYmplY3RzL1hTdHJpbmcuaHRtbCNmaXhXaGl0ZVNwYWNlKGJvb2xlYW4sIGJvb2xlYW4sIGJvb2xlYW4pIj5maXhXaGl0ZVNwYWNlPC9BPjwvQj4oYm9vbGVhbiZuYnNwO3RyaW1IZWFkLAogICAgICAgICAgICAgIGJvb2xlYW4mbmJzcDt0cmltVGFpbCwKICAgICAgICAgICAgICBib29sZWFuJm5ic3A7ZG91YmxlUHVuY3R1YXRpb25TcGFjZXMpPC9DT0RFPg0KDQo8QlI+DQombmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtDb25kaXRpb25hbGx5IHRyaW0gYWxsIGxlYWRpbmcgYW5kIHRyYWlsaW5nIHdoaXRlc3BhY2UgaW4gdGhlIHNwZWNpZmllZCBTdHJpbmcuPC9URD4NCjwvVFI+DQo8VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4NCjxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4NCjxDT0RFPiZuYnNwO3ZvaWQ8L0NPREU+PC9GT05UPjwvVEQ+DQo8VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2FwYWNoZS94cGF0aC9vYmplY3RzL1hTdHJpbmcuaHRtbCNnZXRDaGFycyhpbnQsIGludCwgY2hhcltdLCBpbnQpIj5nZXRDaGFyczwvQT48L0I+KGludCZuYnNwO3NyY0JlZ2luLAogICAgICAgICBpbnQmbmJzcDtzcmNFbmQsCiAgICAgICAgIGNoYXJbXSZuYnNwO2RzdCwKICAgICAgICAgaW50Jm5ic3A7ZHN0QmVnaW4pPC9DT0RFPg0KDQo8QlI+DQombmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtDb3BpZXMgY2hhcmFjdGVycyBmcm9tIHRoaXMgc3RyaW5nIGludG8gdGhlIGRlc3RpbmF0aW9uIGNoYXJhY3RlcgogYXJyYXkuPC9URD4NCjwvVFI+DQo8VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4NCjxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4NCjxDT0RFPiZuYnNwO2ludDwvQ09ERT48L0ZPTlQ+PC9URD4NCjxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvYXBhY2hlL3hwYXRoL29iamVjdHMvWFN0cmluZy5odG1sI2dldFR5cGUoKSI+Z2V0VHlwZTwvQT48L0I+KCk8L0NPREU+DQoNCjxCUj4NCiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1RlbGwgdGhhdCB0aGlzIGlzIGEgQ0xBU1NfU1RSSU5HLjwvVEQ+DQo8L1RSPg0KPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+DQo8VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+DQo8Q09ERT4mbmJzcDtqYXZhLmxhbmcuU3RyaW5nPC9DT0RFPjwvRk9OVD48L1REPg0KPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9hcGFjaGUveHBhdGgvb2JqZWN0cy9YU3RyaW5nLmh0bWwjZ2V0VHlwZVN0cmluZygpIj5nZXRUeXBlU3RyaW5nPC9BPjwvQj4oKTwvQ09ERT4NCg0KPEJSPg0KJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7R2l2ZW4gYSByZXF1ZXN0IHR5cGUsIHJldHVybiB0aGUgZXF1aXZhbGVudCBzdHJpbmcuPC9URD4NCjwvVFI+DQo8VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4NCjxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4NCjxDT0RFPiZuYnNwO2ludDwvQ09ERT48L0ZPTlQ+PC9URD4NCjxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvYXBhY2hlL3hwYXRoL29iamVjdHMvWFN0cmluZy5odG1sI2hhc2hDb2RlKCkiPmhhc2hDb2RlPC9BPjwvQj4oKTwvQ09ERT4NCg0KPEJSPg0KJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7UmV0dXJucyBhIGhhc2hjb2RlIGZvciB0aGlzIHN0cmluZy48L1REPg0KPC9UUj4NCjxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPg0KPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPg0KPENPREU+Jm5ic3A7Ym9vbGVhbjwvQ09ERT48L0ZPTlQ+PC9URD4NCjxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvYXBhY2hlL3hwYXRoL29iamVjdHMvWFN0cmluZy5odG1sI2hhc1N0cmluZygpIj5oYXNTdHJpbmc8L0E+PC9CPigpPC9DT0RFPg0KDQo8QlI+DQombmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtUZWxsIGlmIHRoaXMgb2JqZWN0IGNvbnRhaW5zIGEgamF2YSBTdHJpbmcgb2JqZWN0LjwvVEQ+DQo8L1RSPg0KPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+DQo8VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+DQo8Q09ERT4mbmJzcDtpbnQ8L0NPREU+PC9GT05UPjwvVEQ+DQo8VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2FwYWNoZS94cGF0aC9vYmplY3RzL1hTdHJpbmcuaHRtbCNpbmRleE9mKGludCkiPmluZGV4T2Y8L0E+PC9CPihpbnQmbmJzcDtjaCk8L0NPREU+DQoNCjxCUj4NCiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1JldHVybnMgdGhlIGluZGV4IHdpdGhpbiB0aGlzIHN0cmluZyBvZiB0aGUgZmlyc3Qgb2NjdXJyZW5jZSBvZiB0aGUKIHNwZWNpZmllZCBjaGFyYWN0ZXIuPC9URD4NCjwvVFI+DQo8VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4NCjxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4NCjxDT0RFPiZuYnNwO2ludDwvQ09ERT48L0ZPTlQ+PC9URD4NCjxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvYXBhY2hlL3hwYXRoL29iamVjdHMvWFN0cmluZy5odG1sI2luZGV4T2YoaW50LCBpbnQpIj5pbmRleE9mPC9BPjwvQj4oaW50Jm5ic3A7Y2gsCiAgICAgICAgaW50Jm5ic3A7ZnJvbUluZGV4KTwvQ09ERT4NCg0KPEJSPg0KJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7UmV0dXJucyB0aGUgaW5kZXggd2l0aGluIHRoaXMgc3RyaW5nIG9mIHRoZSBmaXJzdCBvY2N1cnJlbmNlIG9mIHRoZQogc3BlY2lmaWVkIGNoYXJhY3Rlciwgc3RhcnRpbmcgdGhlIHNlYXJjaCBhdCB0aGUgc3BlY2lmaWVkIGluZGV4LjwvVEQ+DQo8L1RSPg0KPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+DQo8VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+DQo8Q09ERT4mbmJzcDtpbnQ8L0NPREU+PC9GT05UPjwvVEQ+DQo8VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2FwYWNoZS94cGF0aC9vYmplY3RzL1hTdHJpbmcuaHRtbCNpbmRleE9mKGphdmEubGFuZy5TdHJpbmcpIj5pbmRleE9mPC9BPjwvQj4oamF2YS5sYW5nLlN0cmluZyZuYnNwO3N0cik8L0NPREU+DQoNCjxCUj4NCiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1JldHVybnMgdGhlIGluZGV4IHdpdGhpbiB0aGlzIHN0cmluZyBvZiB0aGUgZmlyc3Qgb2NjdXJyZW5jZSBvZiB0aGUKIHNwZWNpZmllZCBzdWJzdHJpbmcuPC9URD4NCjwvVFI+DQo8VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4NCjxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4NCjxDT0RFPiZuYnNwO2ludDwvQ09ERT48L0ZPTlQ+PC9URD4NCjxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvYXBhY2hlL3hwYXRoL29iamVjdHMvWFN0cmluZy5odG1sI2luZGV4T2YoamF2YS5sYW5nLlN0cmluZywgaW50KSI+aW5kZXhPZjwvQT48L0I+KGphdmEubGFuZy5TdHJpbmcmbmJzcDtzdHIsCiAgICAgICAgaW50Jm5ic3A7ZnJvbUluZGV4KTwvQ09ERT4NCg0KPEJSPg0KJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7UmV0dXJucyB0aGUgaW5kZXggd2l0aGluIHRoaXMgc3RyaW5nIG9mIHRoZSBmaXJzdCBvY2N1cnJlbmNlIG9mIHRoZQogc3BlY2lmaWVkIHN1YnN0cmluZywgc3RhcnRpbmcgYXQgdGhlIHNwZWNpZmllZCBpbmRleC48L1REPg0KPC9UUj4NCjxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPg0KPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPg0KPENPREU+Jm5ic3A7aW50PC9DT0RFPjwvRk9OVD48L1REPg0KPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9hcGFjaGUveHBhdGgvb2JqZWN0cy9YU3RyaW5nLmh0bWwjaW5kZXhPZihvcmcuYXBhY2hlLnhtbC51dGlscy5YTUxTdHJpbmcpIj5pbmRleE9mPC9BPjwvQj4oPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2FwYWNoZS94bWwvdXRpbHMvWE1MU3RyaW5nLmh0bWwiPlhNTFN0cmluZzwvQT4mbmJzcDtzdHIpPC9DT0RFPg0KDQo8QlI+DQombmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtSZXR1cm5zIHRoZSBpbmRleCB3aXRoaW4gdGhpcyBzdHJpbmcgb2YgdGhlIGZpcnN0IG9jY3VycmVuY2Ugb2YgdGhlCiBzcGVjaWZpZWQgc3Vic3RyaW5nLjwvVEQ+DQo8L1RSPg0KPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+DQo8VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+DQo8Q09ERT4mbmJzcDtpbnQ8L0NPREU+PC9GT05UPjwvVEQ+DQo8VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2FwYWNoZS94cGF0aC9vYmplY3RzL1hTdHJpbmcuaHRtbCNsYXN0SW5kZXhPZihpbnQpIj5sYXN0SW5kZXhPZjwvQT48L0I+KGludCZuYnNwO2NoKTwvQ09ERT4NCg0KPEJSPg0KJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7UmV0dXJucyB0aGUgaW5kZXggd2l0aGluIHRoaXMgc3RyaW5nIG9mIHRoZSBsYXN0IG9jY3VycmVuY2Ugb2YgdGhlCiBzcGVjaWZpZWQgY2hhcmFjdGVyLjwvVEQ+DQo8L1RSPg0KPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+DQo8VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+DQo8Q09ERT4mbmJzcDtpbnQ8L0NPREU+PC9GT05UPjwvVEQ+DQo8VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2FwYWNoZS94cGF0aC9vYmplY3RzL1hTdHJpbmcuaHRtbCNsYXN0SW5kZXhPZihpbnQsIGludCkiPmxhc3RJbmRleE9mPC9BPjwvQj4oaW50Jm5ic3A7Y2gsCiAgICAgICAgICAgIGludCZuYnNwO2Zyb21JbmRleCk8L0NPREU+DQoNCjxCUj4NCiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1JldHVybnMgdGhlIGluZGV4IHdpdGhpbiB0aGlzIHN0cmluZyBvZiB0aGUgbGFzdCBvY2N1cnJlbmNlIG9mIHRoZQogc3BlY2lmaWVkIGNoYXJhY3Rlciwgc2VhcmNoaW5nIGJhY2t3YXJkIHN0YXJ0aW5nIGF0IHRoZSBzcGVjaWZpZWQKIGluZGV4LjwvVEQ+DQo8L1RSPg0KPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+DQo8VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+DQo8Q09ERT4mbmJzcDtpbnQ8L0NPREU+PC9GT05UPjwvVEQ+DQo8VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2FwYWNoZS94cGF0aC9vYmplY3RzL1hTdHJpbmcuaHRtbCNsYXN0SW5kZXhPZihqYXZhLmxhbmcuU3RyaW5nKSI+bGFzdEluZGV4T2Y8L0E+PC9CPihqYXZhLmxhbmcuU3RyaW5nJm5ic3A7c3RyKTwvQ09ERT4NCg0KPEJSPg0KJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7UmV0dXJucyB0aGUgaW5kZXggd2l0aGluIHRoaXMgc3RyaW5nIG9mIHRoZSByaWdodG1vc3Qgb2NjdXJyZW5jZQogb2YgdGhlIHNwZWNpZmllZCBzdWJzdHJpbmcuPC9URD4NCjwvVFI+DQo8VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4NCjxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4NCjxDT0RFPiZuYnNwO2ludDwvQ09ERT48L0ZPTlQ+PC9URD4NCjxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvYXBhY2hlL3hwYXRoL29iamVjdHMvWFN0cmluZy5odG1sI2xhc3RJbmRleE9mKGphdmEubGFuZy5TdHJpbmcsIGludCkiPmxhc3RJbmRleE9mPC9BPjwvQj4oamF2YS5sYW5nLlN0cmluZyZuYnNwO3N0ciwKICAgICAgICAgICAgaW50Jm5ic3A7ZnJvbUluZGV4KTwvQ09ERT4NCg0KPEJSPg0KJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7UmV0dXJucyB0aGUgaW5kZXggd2l0aGluIHRoaXMgc3RyaW5nIG9mIHRoZSBsYXN0IG9jY3VycmVuY2Ugb2YKIHRoZSBzcGVjaWZpZWQgc3Vic3RyaW5nLjwvVEQ+DQo8L1RSPg0KPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+DQo8VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+DQo8Q09ERT4mbmJzcDtpbnQ8L0NPREU+PC9GT05UPjwvVEQ+DQo8VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2FwYWNoZS94cGF0aC9vYmplY3RzL1hTdHJpbmcuaHRtbCNsZW5ndGgoKSI+bGVuZ3RoPC9BPjwvQj4oKTwvQ09ERT4NCg0KPEJSPg0KJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7UmV0dXJucyB0aGUgbGVuZ3RoIG9mIHRoaXMgc3RyaW5nLjwvVEQ+DQo8L1RSPg0KPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+DQo8VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+DQo8Q09ERT4mbmJzcDtkb3VibGU8L0NPREU+PC9GT05UPjwvVEQ+DQo8VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2FwYWNoZS94cGF0aC9vYmplY3RzL1hTdHJpbmcuaHRtbCNudW0oKSI+bnVtPC9BPjwvQj4oKTwvQ09ERT4NCg0KPEJSPg0KJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Q2FzdCByZXN1bHQgb2JqZWN0IHRvIGEgbnVtYmVyLjwvVEQ+DQo8L1RSPg0KPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+DQo8VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+DQo8Q09ERT4mbmJzcDtpbnQ8L0NPREU+PC9GT05UPjwvVEQ+DQo8VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2FwYWNoZS94cGF0aC9vYmplY3RzL1hTdHJpbmcuaHRtbCNydGYob3JnLmFwYWNoZS54cGF0aC5YUGF0aENvbnRleHQpIj5ydGY8L0E+PC9CPig8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvYXBhY2hlL3hwYXRoL1hQYXRoQ29udGV4dC5odG1sIj5YUGF0aENvbnRleHQ8L0E+Jm5ic3A7c3VwcG9ydCk8L0NPREU+DQoNCjxCUj4NCiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO0Nhc3QgcmVzdWx0IG9iamVjdCB0byBhIHJlc3VsdCB0cmVlIGZyYWdtZW50LjwvVEQ+DQo8L1RSPg0KPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+DQo8VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+DQo8Q09ERT4mbmJzcDtib29sZWFuPC9DT0RFPjwvRk9OVD48L1REPg0KPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9hcGFjaGUveHBhdGgvb2JqZWN0cy9YU3RyaW5nLmh0bWwjc3RhcnRzV2l0aChqYXZhLmxhbmcuU3RyaW5nKSI+c3RhcnRzV2l0aDwvQT48L0I+KGphdmEubGFuZy5TdHJpbmcmbmJzcDtwcmVmaXgpPC9DT0RFPg0KDQo8QlI+DQombmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtUZXN0cyBpZiB0aGlzIHN0cmluZyBzdGFydHMgd2l0aCB0aGUgc3BlY2lmaWVkIHByZWZpeC48L1REPg0KPC9UUj4NCjxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPg0KPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPg0KPENPREU+Jm5ic3A7Ym9vbGVhbjwvQ09ERT48L0ZPTlQ+PC9URD4NCjxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvYXBhY2hlL3hwYXRoL29iamVjdHMvWFN0cmluZy5odG1sI3N0YXJ0c1dpdGgoamF2YS5sYW5nLlN0cmluZywgaW50KSI+c3RhcnRzV2l0aDwvQT48L0I+KGphdmEubGFuZy5TdHJpbmcmbmJzcDtwcmVmaXgsCiAgICAgICAgICAgaW50Jm5ic3A7dG9mZnNldCk8L0NPREU+DQoNCjxCUj4NCiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1Rlc3RzIGlmIHRoaXMgc3RyaW5nIHN0YXJ0cyB3aXRoIHRoZSBzcGVjaWZpZWQgcHJlZml4IGJlZ2lubmluZwogYSBzcGVjaWZpZWQgaW5kZXguPC9URD4NCjwvVFI+DQo8VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4NCjxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4NCjxDT0RFPiZuYnNwO2Jvb2xlYW48L0NPREU+PC9GT05UPjwvVEQ+DQo8VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2FwYWNoZS94cGF0aC9vYmplY3RzL1hTdHJpbmcuaHRtbCNzdGFydHNXaXRoKG9yZy5hcGFjaGUueG1sLnV0aWxzLlhNTFN0cmluZykiPnN0YXJ0c1dpdGg8L0E+PC9CPig8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvYXBhY2hlL3htbC91dGlscy9YTUxTdHJpbmcuaHRtbCI+WE1MU3RyaW5nPC9BPiZuYnNwO3ByZWZpeCk8L0NPREU+DQoNCjxCUj4NCiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1Rlc3RzIGlmIHRoaXMgc3RyaW5nIHN0YXJ0cyB3aXRoIHRoZSBzcGVjaWZpZWQgcHJlZml4LjwvVEQ+DQo8L1RSPg0KPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+DQo8VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+DQo8Q09ERT4mbmJzcDtib29sZWFuPC9DT0RFPjwvRk9OVD48L1REPg0KPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9hcGFjaGUveHBhdGgvb2JqZWN0cy9YU3RyaW5nLmh0bWwjc3RhcnRzV2l0aChvcmcuYXBhY2hlLnhtbC51dGlscy5YTUxTdHJpbmcsIGludCkiPnN0YXJ0c1dpdGg8L0E+PC9CPig8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvYXBhY2hlL3htbC91dGlscy9YTUxTdHJpbmcuaHRtbCI+WE1MU3RyaW5nPC9BPiZuYnNwO3ByZWZpeCwKICAgICAgICAgICBpbnQmbmJzcDt0b2Zmc2V0KTwvQ09ERT4NCg0KPEJSPg0KJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7VGVzdHMgaWYgdGhpcyBzdHJpbmcgc3RhcnRzIHdpdGggdGhlIHNwZWNpZmllZCBwcmVmaXggYmVnaW5uaW5nCiBhIHNwZWNpZmllZCBpbmRleC48L1REPg0KPC9UUj4NCjxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPg0KPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPg0KPENPREU+Jm5ic3A7amF2YS5sYW5nLlN0cmluZzwvQ09ERT48L0ZPTlQ+PC9URD4NCjxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvYXBhY2hlL3hwYXRoL29iamVjdHMvWFN0cmluZy5odG1sI3N0cigpIj5zdHI8L0E+PC9CPigpPC9DT0RFPg0KDQo8QlI+DQombmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtDYXN0IHJlc3VsdCBvYmplY3QgdG8gYSBzdHJpbmcuPC9URD4NCjwvVFI+DQo8VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4NCjxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4NCjxDT0RFPiZuYnNwOzxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9hcGFjaGUveG1sL3V0aWxzL1hNTFN0cmluZy5odG1sIj5YTUxTdHJpbmc8L0E+PC9DT0RFPjwvRk9OVD48L1REPg0KPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9hcGFjaGUveHBhdGgvb2JqZWN0cy9YU3RyaW5nLmh0bWwjc3Vic3RyaW5nKGludCkiPnN1YnN0cmluZzwvQT48L0I+KGludCZuYnNwO2JlZ2luSW5kZXgpPC9DT0RFPg0KDQo8QlI+DQombmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtSZXR1cm5zIGEgbmV3IHN0cmluZyB0aGF0IGlzIGEgc3Vic3RyaW5nIG9mIHRoaXMgc3RyaW5nLjwvVEQ+DQo8L1RSPg0KPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+DQo8VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+DQo8Q09ERT4mbmJzcDs8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvYXBhY2hlL3htbC91dGlscy9YTUxTdHJpbmcuaHRtbCI+WE1MU3RyaW5nPC9BPjwvQ09ERT48L0ZPTlQ+PC9URD4NCjxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvYXBhY2hlL3hwYXRoL29iamVjdHMvWFN0cmluZy5odG1sI3N1YnN0cmluZyhpbnQsIGludCkiPnN1YnN0cmluZzwvQT48L0I+KGludCZuYnNwO2JlZ2luSW5kZXgsCiAgICAgICAgICBpbnQmbmJzcDtlbmRJbmRleCk8L0NPREU+DQoNCjxCUj4NCiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1JldHVybnMgYSBuZXcgc3RyaW5nIHRoYXQgaXMgYSBzdWJzdHJpbmcgb2YgdGhpcyBzdHJpbmcuPC9URD4NCjwvVFI+DQo8VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4NCjxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4NCjxDT0RFPiZuYnNwO2RvdWJsZTwvQ09ERT48L0ZPTlQ+PC9URD4NCjxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvYXBhY2hlL3hwYXRoL29iamVjdHMvWFN0cmluZy5odG1sI3RvRG91YmxlKCkiPnRvRG91YmxlPC9BPjwvQj4oKTwvQ09ERT4NCg0KPEJSPg0KJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Q29udmVydCBhIHN0cmluZyB0byBhIGRvdWJsZSAtLSBBbGxvd2VkIGlucHV0IGlzIGluIGZpeGVkCiBub3RhdGlvbiBkZGQuZmZmLjwvVEQ+DQo8L1RSPg0KPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+DQo8VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+DQo8Q09ERT4mbmJzcDs8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvYXBhY2hlL3htbC91dGlscy9YTUxTdHJpbmcuaHRtbCI+WE1MU3RyaW5nPC9BPjwvQ09ERT48L0ZPTlQ+PC9URD4NCjxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvYXBhY2hlL3hwYXRoL29iamVjdHMvWFN0cmluZy5odG1sI3RvTG93ZXJDYXNlKCkiPnRvTG93ZXJDYXNlPC9BPjwvQj4oKTwvQ09ERT4NCg0KPEJSPg0KJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Q29udmVydHMgYWxsIG9mIHRoZSBjaGFyYWN0ZXJzIGluIHRoaXMgPGNvZGU+U3RyaW5nPC9jb2RlPiB0byBsb3dlcgogY2FzZSB1c2luZyB0aGUgcnVsZXMgb2YgdGhlIGRlZmF1bHQgbG9jYWxlLCB3aGljaCBpcyByZXR1cm5lZAogYnkgPGNvZGU+TG9jYWxlLmdldERlZmF1bHQ8L2NvZGU+LjwvVEQ+DQo8L1RSPg0KPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+DQo8VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+DQo8Q09ERT4mbmJzcDs8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvYXBhY2hlL3htbC91dGlscy9YTUxTdHJpbmcuaHRtbCI+WE1MU3RyaW5nPC9BPjwvQ09ERT48L0ZPTlQ+PC9URD4NCjxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvYXBhY2hlL3hwYXRoL29iamVjdHMvWFN0cmluZy5odG1sI3RvTG93ZXJDYXNlKGphdmEudXRpbC5Mb2NhbGUpIj50b0xvd2VyQ2FzZTwvQT48L0I+KGphdmEudXRpbC5Mb2NhbGUmbmJzcDtsb2NhbGUpPC9DT0RFPg0KDQo8QlI+DQombmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtDb252ZXJ0cyBhbGwgb2YgdGhlIGNoYXJhY3RlcnMgaW4gdGhpcyA8Y29kZT5TdHJpbmc8L2NvZGU+IHRvIGxvd2VyCiBjYXNlIHVzaW5nIHRoZSBydWxlcyBvZiB0aGUgZ2l2ZW4gPGNvZGU+TG9jYWxlPC9jb2RlPi48L1REPg0KPC9UUj4NCjxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPg0KPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPg0KPENPREU+Jm5ic3A7PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2FwYWNoZS94bWwvdXRpbHMvWE1MU3RyaW5nLmh0bWwiPlhNTFN0cmluZzwvQT48L0NPREU+PC9GT05UPjwvVEQ+DQo8VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2FwYWNoZS94cGF0aC9vYmplY3RzL1hTdHJpbmcuaHRtbCN0b1VwcGVyQ2FzZSgpIj50b1VwcGVyQ2FzZTwvQT48L0I+KCk8L0NPREU+DQoNCjxCUj4NCiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO0NvbnZlcnRzIGFsbCBvZiB0aGUgY2hhcmFjdGVycyBpbiB0aGlzIDxjb2RlPlN0cmluZzwvY29kZT4gdG8gdXBwZXIKIGNhc2UgdXNpbmcgdGhlIHJ1bGVzIG9mIHRoZSBkZWZhdWx0IGxvY2FsZSwgd2hpY2ggaXMgcmV0dXJuZWQKIGJ5IDxjb2RlPkxvY2FsZS5nZXREZWZhdWx0PC9jb2RlPi48L1REPg0KPC9UUj4NCjxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPg0KPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPg0KPENPREU+Jm5ic3A7PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2FwYWNoZS94bWwvdXRpbHMvWE1MU3RyaW5nLmh0bWwiPlhNTFN0cmluZzwvQT48L0NPREU+PC9GT05UPjwvVEQ+DQo8VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2FwYWNoZS94cGF0aC9vYmplY3RzL1hTdHJpbmcuaHRtbCN0b1VwcGVyQ2FzZShqYXZhLnV0aWwuTG9jYWxlKSI+dG9VcHBlckNhc2U8L0E+PC9CPihqYXZhLnV0aWwuTG9jYWxlJm5ic3A7bG9jYWxlKTwvQ09ERT4NCg0KPEJSPg0KJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Q29udmVydHMgYWxsIG9mIHRoZSBjaGFyYWN0ZXJzIGluIHRoaXMgPGNvZGU+U3RyaW5nPC9jb2RlPiB0byB1cHBlcgogY2FzZSB1c2luZyB0aGUgcnVsZXMgb2YgdGhlIGdpdmVuIGxvY2FsZS48L1REPg0KPC9UUj4NCjxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPg0KPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPg0KPENPREU+Jm5ic3A7PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2FwYWNoZS94bWwvdXRpbHMvWE1MU3RyaW5nLmh0bWwiPlhNTFN0cmluZzwvQT48L0NPREU+PC9GT05UPjwvVEQ+DQo8VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2FwYWNoZS94cGF0aC9vYmplY3RzL1hTdHJpbmcuaHRtbCN0cmltKCkiPnRyaW08L0E+PC9CPigpPC9DT0RFPg0KDQo8QlI+DQombmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtSZW1vdmVzIHdoaXRlIHNwYWNlIGZyb20gYm90aCBlbmRzIG9mIHRoaXMgc3RyaW5nLjwvVEQ+DQo8L1RSPg0KPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+DQo8VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+DQo8Q09ERT4mbmJzcDs8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvYXBhY2hlL3htbC91dGlscy9YTUxTdHJpbmcuaHRtbCI+WE1MU3RyaW5nPC9BPjwvQ09ERT48L0ZPTlQ+PC9URD4NCjxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvYXBhY2hlL3hwYXRoL29iamVjdHMvWFN0cmluZy5odG1sI3hzdHIoKSI+eHN0cjwvQT48L0I+KCk8L0NPREU+DQoNCjxCUj4NCiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO0Nhc3QgcmVzdWx0IG9iamVjdCB0byBhIHN0cmluZy48L1REPg0KPC9UUj4NCjwvVEFCTEU+DQombmJzcDs8QSBOQU1FPSJtZXRob2RzX2luaGVyaXRlZF9mcm9tX2NsYXNzX29yZy5hcGFjaGUueHBhdGgub2JqZWN0cy5YT2JqZWN0Ij48IS0tIC0tPjwvQT4KPFRBQkxFIEJPUkRFUj0iMSIgQ0VMTFBBRERJTkc9IjMiIENFTExTUEFDSU5HPSIwIiBXSURUSD0iMTAwJSI+DQo8VFIgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9IlRhYmxlU3ViSGVhZGluZ0NvbG9yIj4NCjxURD48Qj5NZXRob2RzIGluaGVyaXRlZCBmcm9tIGNsYXNzIG9yZy5hcGFjaGUueHBhdGgub2JqZWN0cy48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvYXBhY2hlL3hwYXRoL29iamVjdHMvWE9iamVjdC5odG1sIj5YT2JqZWN0PC9BPjwvQj48L1REPg0KPC9UUj4NCjxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPg0KPFREPjxDT0RFPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9hcGFjaGUveHBhdGgvb2JqZWN0cy9YT2JqZWN0Lmh0bWwjYWxsb3dEZXRhY2hUb1JlbGVhc2UoYm9vbGVhbikiPmFsbG93RGV0YWNoVG9SZWxlYXNlPC9BPiwgDQo8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvYXBhY2hlL3hwYXRoL29iamVjdHMvWE9iamVjdC5odG1sI2FwcGVuZFRvRnNiKG9yZy5hcGFjaGUueG1sLnV0aWxzLkZhc3RTdHJpbmdCdWZmZXIpIj5hcHBlbmRUb0ZzYjwvQT4sIA0KPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2FwYWNoZS94cGF0aC9vYmplY3RzL1hPYmplY3QuaHRtbCNib29sV2l0aFNpZGVFZmZlY3RzKCkiPmJvb2xXaXRoU2lkZUVmZmVjdHM8L0E+LCANCjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9hcGFjaGUveHBhdGgvb2JqZWN0cy9YT2JqZWN0Lmh0bWwjY2FzdFRvVHlwZShpbnQsIG9yZy5hcGFjaGUueHBhdGguWFBhdGhDb250ZXh0KSI+Y2FzdFRvVHlwZTwvQT4sIA0KPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2FwYWNoZS94cGF0aC9vYmplY3RzL1hPYmplY3QuaHRtbCNjcmVhdGUoamF2YS5sYW5nLk9iamVjdCkiPmNyZWF0ZTwvQT4sIA0KPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2FwYWNoZS94cGF0aC9vYmplY3RzL1hPYmplY3QuaHRtbCNjcmVhdGUoamF2YS5sYW5nLk9iamVjdCwgb3JnLmFwYWNoZS54cGF0aC5YUGF0aENvbnRleHQpIj5jcmVhdGU8L0E+LCANCjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9hcGFjaGUveHBhdGgvb2JqZWN0cy9YT2JqZWN0Lmh0bWwjZGVlcEVxdWFscyhvcmcuYXBhY2hlLnhwYXRoLkV4cHJlc3Npb24pIj5kZWVwRXF1YWxzPC9BPiwgDQo8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvYXBhY2hlL3hwYXRoL29iamVjdHMvWE9iamVjdC5odG1sI2Rlc3RydWN0KCkiPmRlc3RydWN0PC9BPiwgDQo8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvYXBhY2hlL3hwYXRoL29iamVjdHMvWE9iamVjdC5odG1sI2RldGFjaCgpIj5kZXRhY2g8L0E+LCANCjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9hcGFjaGUveHBhdGgvb2JqZWN0cy9YT2JqZWN0Lmh0bWwjZXhlY3V0ZShvcmcuYXBhY2hlLnhwYXRoLlhQYXRoQ29udGV4dCkiPmV4ZWN1dGU8L0E+LCANCjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9hcGFjaGUveHBhdGgvb2JqZWN0cy9YT2JqZWN0Lmh0bWwjZml4dXBWYXJpYWJsZXMoamF2YS51dGlsLlZlY3RvciwgaW50KSI+Zml4dXBWYXJpYWJsZXM8L0E+LCANCjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9hcGFjaGUveHBhdGgvb2JqZWN0cy9YT2JqZWN0Lmh0bWwjZ2V0RnJlc2goKSI+Z2V0RnJlc2g8L0E+LCANCjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9hcGFjaGUveHBhdGgvb2JqZWN0cy9YT2JqZWN0Lmh0bWwjZ3JlYXRlclRoYW4ob3JnLmFwYWNoZS54cGF0aC5vYmplY3RzLlhPYmplY3QpIj5ncmVhdGVyVGhhbjwvQT4sIA0KPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2FwYWNoZS94cGF0aC9vYmplY3RzL1hPYmplY3QuaHRtbCNncmVhdGVyVGhhbk9yRXF1YWwob3JnLmFwYWNoZS54cGF0aC5vYmplY3RzLlhPYmplY3QpIj5ncmVhdGVyVGhhbk9yRXF1YWw8L0E+LCANCjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9hcGFjaGUveHBhdGgvb2JqZWN0cy9YT2JqZWN0Lmh0bWwjaXRlcigpIj5pdGVyPC9BPiwgDQo8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvYXBhY2hlL3hwYXRoL29iamVjdHMvWE9iamVjdC5odG1sI2xlc3NUaGFuKG9yZy5hcGFjaGUueHBhdGgub2JqZWN0cy5YT2JqZWN0KSI+bGVzc1RoYW48L0E+LCANCjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9hcGFjaGUveHBhdGgvb2JqZWN0cy9YT2JqZWN0Lmh0bWwjbGVzc1RoYW5PckVxdWFsKG9yZy5hcGFjaGUueHBhdGgub2JqZWN0cy5YT2JqZWN0KSI+bGVzc1RoYW5PckVxdWFsPC9BPiwgDQo8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvYXBhY2hlL3hwYXRoL29iamVjdHMvWE9iamVjdC5odG1sI211dGFibGVOb2Rlc2V0KCkiPm11dGFibGVOb2Rlc2V0PC9BPiwgDQo8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvYXBhY2hlL3hwYXRoL29iamVjdHMvWE9iamVjdC5odG1sI25vZGVsaXN0KCkiPm5vZGVsaXN0PC9BPiwgDQo8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvYXBhY2hlL3hwYXRoL29iamVjdHMvWE9iamVjdC5odG1sI25vZGVzZXQoKSI+bm9kZXNldDwvQT4sIA0KPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2FwYWNoZS94cGF0aC9vYmplY3RzL1hPYmplY3QuaHRtbCNub3RFcXVhbHMob3JnLmFwYWNoZS54cGF0aC5vYmplY3RzLlhPYmplY3QpIj5ub3RFcXVhbHM8L0E+LCANCjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9hcGFjaGUveHBhdGgvb2JqZWN0cy9YT2JqZWN0Lmh0bWwjbnVtV2l0aFNpZGVFZmZlY3RzKCkiPm51bVdpdGhTaWRlRWZmZWN0czwvQT4sIA0KPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2FwYWNoZS94cGF0aC9vYmplY3RzL1hPYmplY3QuaHRtbCNvYmplY3QoKSI+b2JqZWN0PC9BPiwgDQo8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvYXBhY2hlL3hwYXRoL29iamVjdHMvWE9iamVjdC5odG1sI3Jlc2V0KCkiPnJlc2V0PC9BPiwgDQo8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvYXBhY2hlL3hwYXRoL29iamVjdHMvWE9iamVjdC5odG1sI3J0ZigpIj5ydGY8L0E+LCANCjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9hcGFjaGUveHBhdGgvb2JqZWN0cy9YT2JqZWN0Lmh0bWwjcnRyZWUoKSI+cnRyZWU8L0E+LCANCjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9hcGFjaGUveHBhdGgvb2JqZWN0cy9YT2JqZWN0Lmh0bWwjcnRyZWUob3JnLmFwYWNoZS54cGF0aC5YUGF0aENvbnRleHQpIj5ydHJlZTwvQT4sIA0KPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2FwYWNoZS94cGF0aC9vYmplY3RzL1hPYmplY3QuaHRtbCN0b1N0cmluZygpIj50b1N0cmluZzwvQT48L0NPREU+PC9URD4NCjwvVFI+DQo8L1RBQkxFPg0KJm5ic3A7PEEgTkFNRT0ibWV0aG9kc19pbmhlcml0ZWRfZnJvbV9jbGFzc19vcmcuYXBhY2hlLnhwYXRoLkV4cHJlc3Npb24iPjwhLS0gLS0+PC9BPgo8VEFCTEUgQk9SREVSPSIxIiBDRUxMUEFERElORz0iMyIgQ0VMTFNQQUNJTkc9IjAiIFdJRFRIPSIxMDAlIj4NCjxUUiBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iVGFibGVTdWJIZWFkaW5nQ29sb3IiPg0KPFREPjxCPk1ldGhvZHMgaW5oZXJpdGVkIGZyb20gY2xhc3Mgb3JnLmFwYWNoZS54cGF0aC48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvYXBhY2hlL3hwYXRoL0V4cHJlc3Npb24uaHRtbCI+RXhwcmVzc2lvbjwvQT48L0I+PC9URD4NCjwvVFI+DQo8VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4NCjxURD48Q09ERT48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvYXBhY2hlL3hwYXRoL0V4cHJlc3Npb24uaHRtbCNhc0l0ZXJhdG9yKG9yZy5hcGFjaGUueHBhdGguWFBhdGhDb250ZXh0LCBpbnQpIj5hc0l0ZXJhdG9yPC9BPiwgDQo8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvYXBhY2hlL3hwYXRoL0V4cHJlc3Npb24uaHRtbCNhc0l0ZXJhdG9yUmF3KG9yZy5hcGFjaGUueHBhdGguWFBhdGhDb250ZXh0LCBpbnQpIj5hc0l0ZXJhdG9yUmF3PC9BPiwgDQo8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvYXBhY2hlL3hwYXRoL0V4cHJlc3Npb24uaHRtbCNhc05vZGUob3JnLmFwYWNoZS54cGF0aC5YUGF0aENvbnRleHQpIj5hc05vZGU8L0E+LCANCjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9hcGFjaGUveHBhdGgvRXhwcmVzc2lvbi5odG1sI2Fzc2VydGlvbihib29sZWFuLCBqYXZhLmxhbmcuU3RyaW5nKSI+YXNzZXJ0aW9uPC9BPiwgDQo8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvYXBhY2hlL3hwYXRoL0V4cHJlc3Npb24uaHRtbCNib29sKG9yZy5hcGFjaGUueHBhdGguWFBhdGhDb250ZXh0KSI+Ym9vbDwvQT4sIA0KPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2FwYWNoZS94cGF0aC9FeHByZXNzaW9uLmh0bWwjY2FuVHJhdmVyc2VPdXRzaWRlU3VidHJlZSgpIj5jYW5UcmF2ZXJzZU91dHNpZGVTdWJ0cmVlPC9BPiwgDQo8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvYXBhY2hlL3hwYXRoL0V4cHJlc3Npb24uaHRtbCNlcnJvcihvcmcuYXBhY2hlLnhwYXRoLlhQYXRoQ29udGV4dCwgamF2YS5sYW5nLlN0cmluZywgamF2YS5sYW5nLk9iamVjdFtdKSI+ZXJyb3I8L0E+LCANCjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9hcGFjaGUveHBhdGgvRXhwcmVzc2lvbi5odG1sI2V4ZWN1dGUob3JnLmFwYWNoZS54cGF0aC5YUGF0aENvbnRleHQsIGJvb2xlYW4pIj5leGVjdXRlPC9BPiwgDQo8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvYXBhY2hlL3hwYXRoL0V4cHJlc3Npb24uaHRtbCNleGVjdXRlKG9yZy5hcGFjaGUueHBhdGguWFBhdGhDb250ZXh0LCBpbnQpIj5leGVjdXRlPC9BPiwgDQo8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvYXBhY2hlL3hwYXRoL0V4cHJlc3Npb24uaHRtbCNleGVjdXRlKG9yZy5hcGFjaGUueHBhdGguWFBhdGhDb250ZXh0LCBpbnQsIG9yZy5hcGFjaGUueG1sLmR0bS5EVE0sIGludCkiPmV4ZWN1dGU8L0E+LCANCjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9hcGFjaGUveHBhdGgvRXhwcmVzc2lvbi5odG1sI2V4ZWN1dGVDaGFyc1RvQ29udGVudEhhbmRsZXIob3JnLmFwYWNoZS54cGF0aC5YUGF0aENvbnRleHQsIG9yZy54bWwuc2F4LkNvbnRlbnRIYW5kbGVyKSI+ZXhlY3V0ZUNoYXJzVG9Db250ZW50SGFuZGxlcjwvQT4sIA0KPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2FwYWNoZS94cGF0aC9FeHByZXNzaW9uLmh0bWwjZXhwckFkZENoaWxkKG9yZy5hcGFjaGUueHBhdGguRXhwcmVzc2lvbk5vZGUsIGludCkiPmV4cHJBZGRDaGlsZDwvQT4sIA0KPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2FwYWNoZS94cGF0aC9FeHByZXNzaW9uLmh0bWwjZXhwckdldENoaWxkKGludCkiPmV4cHJHZXRDaGlsZDwvQT4sIA0KPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2FwYWNoZS94cGF0aC9FeHByZXNzaW9uLmh0bWwjZXhwckdldE51bUNoaWxkcmVuKCkiPmV4cHJHZXROdW1DaGlsZHJlbjwvQT4sIA0KPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2FwYWNoZS94cGF0aC9FeHByZXNzaW9uLmh0bWwjZXhwckdldFBhcmVudCgpIj5leHByR2V0UGFyZW50PC9BPiwgDQo8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvYXBhY2hlL3hwYXRoL0V4cHJlc3Npb24uaHRtbCNleHByU2V0UGFyZW50KG9yZy5hcGFjaGUueHBhdGguRXhwcmVzc2lvbk5vZGUpIj5leHByU2V0UGFyZW50PC9BPiwgDQo8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvYXBhY2hlL3hwYXRoL0V4cHJlc3Npb24uaHRtbCNnZXRDb2x1bW5OdW1iZXIoKSI+Z2V0Q29sdW1uTnVtYmVyPC9BPiwgDQo8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvYXBhY2hlL3hwYXRoL0V4cHJlc3Npb24uaHRtbCNnZXRFeHByZXNzaW9uT3duZXIoKSI+Z2V0RXhwcmVzc2lvbk93bmVyPC9BPiwgDQo8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvYXBhY2hlL3hwYXRoL0V4cHJlc3Npb24uaHRtbCNnZXRMaW5lTnVtYmVyKCkiPmdldExpbmVOdW1iZXI8L0E+LCANCjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9hcGFjaGUveHBhdGgvRXhwcmVzc2lvbi5odG1sI2dldFB1YmxpY0lkKCkiPmdldFB1YmxpY0lkPC9BPiwgDQo8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvYXBhY2hlL3hwYXRoL0V4cHJlc3Npb24uaHRtbCNnZXRTeXN0ZW1JZCgpIj5nZXRTeXN0ZW1JZDwvQT4sIA0KPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2FwYWNoZS94cGF0aC9FeHByZXNzaW9uLmh0bWwjaXNOb2Rlc2V0RXhwcigpIj5pc05vZGVzZXRFeHByPC9BPiwgDQo8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvYXBhY2hlL3hwYXRoL0V4cHJlc3Npb24uaHRtbCNpc1N0YWJsZU51bWJlcigpIj5pc1N0YWJsZU51bWJlcjwvQT4sIA0KPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2FwYWNoZS94cGF0aC9FeHByZXNzaW9uLmh0bWwjbnVtKG9yZy5hcGFjaGUueHBhdGguWFBhdGhDb250ZXh0KSI+bnVtPC9BPiwgDQo8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvYXBhY2hlL3hwYXRoL0V4cHJlc3Npb24uaHRtbCN3YXJuKG9yZy5hcGFjaGUueHBhdGguWFBhdGhDb250ZXh0LCBqYXZhLmxhbmcuU3RyaW5nLCBqYXZhLmxhbmcuT2JqZWN0W10pIj53YXJuPC9BPiwgDQo8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvYXBhY2hlL3hwYXRoL0V4cHJlc3Npb24uaHRtbCN4c3RyKG9yZy5hcGFjaGUueHBhdGguWFBhdGhDb250ZXh0KSI+eHN0cjwvQT48L0NPREU+PC9URD4NCjwvVFI+DQo8L1RBQkxFPg0KJm5ic3A7PEEgTkFNRT0ibWV0aG9kc19pbmhlcml0ZWRfZnJvbV9jbGFzc19qYXZhLmxhbmcuT2JqZWN0Ij48IS0tIC0tPjwvQT4KPFRBQkxFIEJPUkRFUj0iMSIgQ0VMTFBBRERJTkc9IjMiIENFTExTUEFDSU5HPSIwIiBXSURUSD0iMTAwJSI+DQo8VFIgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9IlRhYmxlU3ViSGVhZGluZ0NvbG9yIj4NCjxURD48Qj5NZXRob2RzIGluaGVyaXRlZCBmcm9tIGNsYXNzIGphdmEubGFuZy5PYmplY3Q8L0I+PC9URD4NCjwvVFI+DQo8VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4NCjxURD48Q09ERT5nZXRDbGFzcywgDQpub3RpZnksIA0Kbm90aWZ5QWxsLCANCndhaXQsIA0Kd2FpdCwgDQp3YWl0PC9DT0RFPjwvVEQ+DQo8L1RSPg0KPC9UQUJMRT4NCiZuYnNwOw0KPFA+DQoNCjwhLS0gPT09PT09PT09PT09IEZJRUxEIERFVEFJTCA9PT09PT09PT09PSAtLT4NCg0KPEEgTkFNRT0iZmllbGRfZGV0YWlsIj48IS0tIC0tPjwvQT4KPFRBQkxFIEJPUkRFUj0iMSIgQ0VMTFBBRERJTkc9IjMiIENFTExTUEFDSU5HPSIwIiBXSURUSD0iMTAwJSI+DQo8VFIgQkdDT0xPUj0iI0NDQ0NGRiIgQ0xBU1M9IlRhYmxlSGVhZGluZ0NvbG9yIj4NCjxURCBDT0xTUEFOPTE+PEZPTlQgU0laRT0iKzIiPg0KPEI+RmllbGQgRGV0YWlsPC9CPjwvRk9OVD48L1REPg0KPC9UUj4NCjwvVEFCTEU+DQoNCjxBIE5BTUU9IkVNUFRZU1RSSU5HIj48IS0tIC0tPjwvQT48SDM+DQpFTVBUWVNUUklORzwvSDM+DQo8UFJFPg0KcHVibGljIHN0YXRpYyBmaW5hbCA8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvYXBhY2hlL3hwYXRoL29iamVjdHMvWFN0cmluZy5odG1sIj5YU3RyaW5nPC9BPiA8Qj5FTVBUWVNUUklORzwvQj48L1BSRT4NCjxETD4NCjxERD5FbXB0eSBzdHJpbmcgWFN0cmluZyBvYmplY3Q8L0RMPg0KDQo8IS0tID09PT09PT09PSBDT05TVFJVQ1RPUiBERVRBSUwgPT09PT09PT0gLS0+DQoNCjxBIE5BTUU9ImNvbnN0cnVjdG9yX2RldGFpbCI+PCEtLSAtLT48L0E+CjxUQUJMRSBCT1JERVI9IjEiIENFTExQQURESU5HPSIzIiBDRUxMU1BBQ0lORz0iMCIgV0lEVEg9IjEwMCUiPg0KPFRSIEJHQ09MT1I9IiNDQ0NDRkYiIENMQVNTPSJUYWJsZUhlYWRpbmdDb2xvciI+DQo8VEQgQ09MU1BBTj0xPjxGT05UIFNJWkU9IisyIj4NCjxCPkNvbnN0cnVjdG9yIERldGFpbDwvQj48L0ZPTlQ+PC9URD4NCjwvVFI+DQo8L1RBQkxFPg0KDQo8QSBOQU1FPSJYU3RyaW5nKGphdmEubGFuZy5TdHJpbmcpIj48IS0tIC0tPjwvQT48SDM+DQpYU3RyaW5nPC9IMz4NCjxQUkU+DQpwdWJsaWMgPEI+WFN0cmluZzwvQj4oamF2YS5sYW5nLlN0cmluZyZuYnNwO3ZhbCk8L1BSRT4NCjxETD4NCjxERD5Db25zdHJ1Y3QgYSBYTm9kZVNldCBvYmplY3QuPEREPjxETD4NCjxEVD48Qj5QYXJhbWV0ZXJzOjwvQj48REQ+PENPREU+dmFsPC9DT0RFPiAtIFN0cmluZyBvYmplY3QgdGhpcyB3aWxsIHdyYXAuPC9ETD4NCjwvREQ+DQo8L0RMPg0KDQo8IS0tID09PT09PT09PT09PSBNRVRIT0QgREVUQUlMID09PT09PT09PT0gLS0+DQoNCjxBIE5BTUU9Im1ldGhvZF9kZXRhaWwiPjwhLS0gLS0+PC9BPgo8VEFCTEUgQk9SREVSPSIxIiBDRUxMUEFERElORz0iMyIgQ0VMTFNQQUNJTkc9IjAiIFdJRFRIPSIxMDAlIj4NCjxUUiBCR0NPTE9SPSIjQ0NDQ0ZGIiBDTEFTUz0iVGFibGVIZWFkaW5nQ29sb3IiPg0KPFREIENPTFNQQU49MT48Rk9OVCBTSVpFPSIrMiI+DQo8Qj5NZXRob2QgRGV0YWlsPC9CPjwvRk9OVD48L1REPg0KPC9UUj4NCjwvVEFCTEU+DQoNCjxBIE5BTUU9ImdldFR5cGUoKSI+PCEtLSAtLT48L0E+PEgzPg0KZ2V0VHlwZTwvSDM+DQo8UFJFPg0KcHVibGljIGludCA8Qj5nZXRUeXBlPC9CPigpPC9QUkU+DQo8REw+DQo8REQ+VGVsbCB0aGF0IHRoaXMgaXMgYSBDTEFTU19TVFJJTkcuPEREPjxETD4NCjxEVD48Qj5SZXR1cm5zOjwvQj48REQ+dHlwZSBDTEFTU19TVFJJTkc8RFQ+PEI+T3ZlcnJpZGVzOjwvQj48REQ+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2FwYWNoZS94cGF0aC9vYmplY3RzL1hPYmplY3QuaHRtbCNnZXRUeXBlKCkiPmdldFR5cGU8L0E+IGluIGNsYXNzIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9hcGFjaGUveHBhdGgvb2JqZWN0cy9YT2JqZWN0Lmh0bWwiPlhPYmplY3Q8L0E+PC9ETD4NCjwvREQ+DQo8L0RMPg0KPEhSPg0KDQo8QSBOQU1FPSJnZXRUeXBlU3RyaW5nKCkiPjwhLS0gLS0+PC9BPjxIMz4NCmdldFR5cGVTdHJpbmc8L0gzPg0KPFBSRT4NCnB1YmxpYyBqYXZhLmxhbmcuU3RyaW5nIDxCPmdldFR5cGVTdHJpbmc8L0I+KCk8L1BSRT4NCjxETD4NCjxERD5HaXZlbiBhIHJlcXVlc3QgdHlwZSwgcmV0dXJuIHRoZSBlcXVpdmFsZW50IHN0cmluZy4KIEZvciBkaWFnbm9zdGljIHB1cnBvc2VzLjxERD48REw+DQo8RFQ+PEI+UmV0dXJuczo8L0I+PEREPnR5cGUgc3RyaW5nICIjU1RSSU5HIjxEVD48Qj5PdmVycmlkZXM6PC9CPjxERD48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvYXBhY2hlL3hwYXRoL29iamVjdHMvWE9iamVjdC5odG1sI2dldFR5cGVTdHJpbmcoKSI+Z2V0VHlwZVN0cmluZzwvQT4gaW4gY2xhc3MgPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2FwYWNoZS94cGF0aC9vYmplY3RzL1hPYmplY3QuaHRtbCI+WE9iamVjdDwvQT48L0RMPg0KPC9ERD4NCjwvREw+DQo8SFI+DQoNCjxBIE5BTUU9Imhhc1N0cmluZygpIj48IS0tIC0tPjwvQT48SDM+DQpoYXNTdHJpbmc8L0gzPg0KPFBSRT4NCnB1YmxpYyBib29sZWFuIDxCPmhhc1N0cmluZzwvQj4oKTwvUFJFPg0KPERMPg0KPEREPlRlbGwgaWYgdGhpcyBvYmplY3QgY29udGFpbnMgYSBqYXZhIFN0cmluZyBvYmplY3QuPEREPjxETD4NCjxEVD48Qj5TcGVjaWZpZWQgYnk6IDwvQj48REQ+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2FwYWNoZS94bWwvdXRpbHMvWE1MU3RyaW5nLmh0bWwjaGFzU3RyaW5nKCkiPmhhc1N0cmluZzwvQT4gaW4gaW50ZXJmYWNlIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9hcGFjaGUveG1sL3V0aWxzL1hNTFN0cmluZy5odG1sIj5YTUxTdHJpbmc8L0E+PERUPjxCPlJldHVybnM6PC9CPjxERD50cnVlIGlmIHRoaXMgWE1MU3RyaW5nIGNhbiByZXR1cm4gYSBzdHJpbmcgd2l0aG91dCBjcmVhdGluZyBvbmUuPC9ETD4NCjwvREQ+DQo8L0RMPg0KPEhSPg0KDQo8QSBOQU1FPSJudW0oKSI+PCEtLSAtLT48L0E+PEgzPg0KbnVtPC9IMz4NCjxQUkU+DQpwdWJsaWMgZG91YmxlIDxCPm51bTwvQj4oKTwvUFJFPg0KPERMPg0KPEREPkNhc3QgcmVzdWx0IG9iamVjdCB0byBhIG51bWJlci48REQ+PERMPg0KPERUPjxCPlJldHVybnM6PC9CPjxERD4wLjAgaWYgdGhpcyBzdHJpbmcgaXMgbnVsbCwgbnVtZXJpYyB2YWx1ZSBvZiB0aGlzIHN0cmluZwogb3IgTmFOPERUPjxCPk92ZXJyaWRlczo8L0I+PEREPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9hcGFjaGUveHBhdGgvb2JqZWN0cy9YT2JqZWN0Lmh0bWwjbnVtKCkiPm51bTwvQT4gaW4gY2xhc3MgPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2FwYWNoZS94cGF0aC9vYmplY3RzL1hPYmplY3QuaHRtbCI+WE9iamVjdDwvQT48L0RMPg0KPC9ERD4NCjwvREw+DQo8SFI+DQoNCjxBIE5BTUU9InRvRG91YmxlKCkiPjwhLS0gLS0+PC9BPjxIMz4NCnRvRG91YmxlPC9IMz4NCjxQUkU+DQpwdWJsaWMgZG91YmxlIDxCPnRvRG91YmxlPC9CPigpPC9QUkU+DQo8REw+DQo8REQ+Q29udmVydCBhIHN0cmluZyB0byBhIGRvdWJsZSAtLSBBbGxvd2VkIGlucHV0IGlzIGluIGZpeGVkCiBub3RhdGlvbiBkZGQuZmZmLjxERD48REw+DQo8RFQ+PEI+U3BlY2lmaWVkIGJ5OiA8L0I+PEREPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9hcGFjaGUveG1sL3V0aWxzL1hNTFN0cmluZy5odG1sI3RvRG91YmxlKCkiPnRvRG91YmxlPC9BPiBpbiBpbnRlcmZhY2UgPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2FwYWNoZS94bWwvdXRpbHMvWE1MU3RyaW5nLmh0bWwiPlhNTFN0cmluZzwvQT48RFQ+PEI+UmV0dXJuczo8L0I+PEREPkEgZG91YmxlIHZhbHVlIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBzdHJpbmcsIG9yIHJldHVybiBEb3VibGUuTmFOCiBpZiB0aGUgc3RyaW5nIGNhbiBub3QgYmUgY29udmVydGVkLjwvREw+DQo8L0REPg0KPC9ETD4NCjxIUj4NCg0KPEEgTkFNRT0iYm9vbCgpIj48IS0tIC0tPjwvQT48SDM+DQpib29sPC9IMz4NCjxQUkU+DQpwdWJsaWMgYm9vbGVhbiA8Qj5ib29sPC9CPigpPC9QUkU+DQo8REw+DQo8REQ+Q2FzdCByZXN1bHQgb2JqZWN0IHRvIGEgYm9vbGVhbi48REQ+PERMPg0KPERUPjxCPlJldHVybnM6PC9CPjxERD5UcnVlIGlmIHRoZSBsZW5ndGggb2YgdGhpcyBzdHJpbmcgb2JqZWN0IGlzIGdyZWF0ZXIKIHRoYW4gMC48RFQ+PEI+T3ZlcnJpZGVzOjwvQj48REQ+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2FwYWNoZS94cGF0aC9vYmplY3RzL1hPYmplY3QuaHRtbCNib29sKCkiPmJvb2w8L0E+IGluIGNsYXNzIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9hcGFjaGUveHBhdGgvb2JqZWN0cy9YT2JqZWN0Lmh0bWwiPlhPYmplY3Q8L0E+PC9ETD4NCjwvREQ+DQo8L0RMPg0KPEhSPg0KDQo8QSBOQU1FPSJ4c3RyKCkiPjwhLS0gLS0+PC9BPjxIMz4NCnhzdHI8L0gzPg0KPFBSRT4NCnB1YmxpYyA8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvYXBhY2hlL3htbC91dGlscy9YTUxTdHJpbmcuaHRtbCI+WE1MU3RyaW5nPC9BPiA8Qj54c3RyPC9CPigpPC9QUkU+DQo8REw+DQo8REQ+Q2FzdCByZXN1bHQgb2JqZWN0IHRvIGEgc3RyaW5nLjxERD48REw+DQo8RFQ+PEI+UmV0dXJuczo8L0I+PEREPlRoZSBzdHJpbmcgdGhpcyB3cmFwcyBvciB0aGUgZW1wdHkgc3RyaW5nIGlmIG51bGw8RFQ+PEI+T3ZlcnJpZGVzOjwvQj48REQ+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2FwYWNoZS94cGF0aC9vYmplY3RzL1hPYmplY3QuaHRtbCN4c3RyKCkiPnhzdHI8L0E+IGluIGNsYXNzIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9hcGFjaGUveHBhdGgvb2JqZWN0cy9YT2JqZWN0Lmh0bWwiPlhPYmplY3Q8L0E+PC9ETD4NCjwvREQ+DQo8L0RMPg0KPEhSPg0KDQo8QSBOQU1FPSJzdHIoKSI+PCEtLSAtLT48L0E+PEgzPg0Kc3RyPC9IMz4NCjxQUkU+DQpwdWJsaWMgamF2YS5sYW5nLlN0cmluZyA8Qj5zdHI8L0I+KCk8L1BSRT4NCjxETD4NCjxERD5DYXN0IHJlc3VsdCBvYmplY3QgdG8gYSBzdHJpbmcuPEREPjxETD4NCjxEVD48Qj5SZXR1cm5zOjwvQj48REQ+VGhlIHN0cmluZyB0aGlzIHdyYXBzIG9yIHRoZSBlbXB0eSBzdHJpbmcgaWYgbnVsbDxEVD48Qj5PdmVycmlkZXM6PC9CPjxERD48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvYXBhY2hlL3hwYXRoL29iamVjdHMvWE9iamVjdC5odG1sI3N0cigpIj5zdHI8L0E+IGluIGNsYXNzIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9hcGFjaGUveHBhdGgvb2JqZWN0cy9YT2JqZWN0Lmh0bWwiPlhPYmplY3Q8L0E+PC9ETD4NCjwvREQ+DQo8L0RMPg0KPEhSPg0KDQo8QSBOQU1FPSJydGYob3JnLmFwYWNoZS54cGF0aC5YUGF0aENvbnRleHQpIj48IS0tIC0tPjwvQT48SDM+DQpydGY8L0gzPg0KPFBSRT4NCnB1YmxpYyBpbnQgPEI+cnRmPC9CPig8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvYXBhY2hlL3hwYXRoL1hQYXRoQ29udGV4dC5odG1sIj5YUGF0aENvbnRleHQ8L0E+Jm5ic3A7c3VwcG9ydCk8L1BSRT4NCjxETD4NCjxERD5DYXN0IHJlc3VsdCBvYmplY3QgdG8gYSByZXN1bHQgdHJlZSBmcmFnbWVudC48REQ+PERMPg0KPERUPjxCPlBhcmFtZXRlcnM6PC9CPjxERD48Q09ERT5zdXBwb3J0PC9DT0RFPiAtIFhwYXRoIGNvbnRleHQgdG8gdXNlIGZvciB0aGUgY29udmVyc2lvbjxEVD48Qj5SZXR1cm5zOjwvQj48REQ+QSBkb2N1bWVudCBmcmFnbWVudCB3aXRoIHRoaXMgc3RyaW5nIGFzIGEgY2hpbGQgbm9kZTxEVD48Qj5PdmVycmlkZXM6PC9CPjxERD48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvYXBhY2hlL3hwYXRoL29iamVjdHMvWE9iamVjdC5odG1sI3J0ZihvcmcuYXBhY2hlLnhwYXRoLlhQYXRoQ29udGV4dCkiPnJ0ZjwvQT4gaW4gY2xhc3MgPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2FwYWNoZS94cGF0aC9vYmplY3RzL1hPYmplY3QuaHRtbCI+WE9iamVjdDwvQT48L0RMPg0KPC9ERD4NCjwvREw+DQo8SFI+DQoNCjxBIE5BTUU9ImRpc3BhdGNoQ2hhcmFjdGVyc0V2ZW50cyhvcmcueG1sLnNheC5Db250ZW50SGFuZGxlcikiPjwhLS0gLS0+PC9BPjxIMz4NCmRpc3BhdGNoQ2hhcmFjdGVyc0V2ZW50czwvSDM+DQo8UFJFPg0KcHVibGljIHZvaWQgPEI+ZGlzcGF0Y2hDaGFyYWN0ZXJzRXZlbnRzPC9CPig8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcveG1sL3NheC9Db250ZW50SGFuZGxlci5odG1sIj5Db250ZW50SGFuZGxlcjwvQT4mbmJzcDtjaCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3dzIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy94bWwvc2F4L1NBWEV4Y2VwdGlvbi5odG1sIj5TQVhFeGNlcHRpb248L0E+PC9QUkU+DQo8REw+DQo8REQ+RGlyZWN0bHkgY2FsbCB0aGUKIGNoYXJhY3RlcnMgbWV0aG9kIG9uIHRoZSBwYXNzZWQgQ29udGVudEhhbmRsZXIgZm9yIHRoZQogc3RyaW5nLXZhbHVlLiBNdWx0aXBsZSBjYWxscyB0byB0aGUKIENvbnRlbnRIYW5kbGVyJ3MgY2hhcmFjdGVycyBtZXRob2RzIG1heSB3ZWxsIG9jY3VyIGZvciBhIHNpbmdsZSBjYWxsIHRvCiB0aGlzIG1ldGhvZC48REQ+PERMPg0KPERUPjxCPlNwZWNpZmllZCBieTogPC9CPjxERD48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvYXBhY2hlL3htbC91dGlscy9YTUxTdHJpbmcuaHRtbCNkaXNwYXRjaENoYXJhY3RlcnNFdmVudHMob3JnLnhtbC5zYXguQ29udGVudEhhbmRsZXIpIj5kaXNwYXRjaENoYXJhY3RlcnNFdmVudHM8L0E+IGluIGludGVyZmFjZSA8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvYXBhY2hlL3htbC91dGlscy9YTUxTdHJpbmcuaHRtbCI+WE1MU3RyaW5nPC9BPjxEVD48Qj5QYXJhbWV0ZXJzOjwvQj48REQ+PENPREU+Y2g8L0NPREU+IC0gQSBub24tbnVsbCByZWZlcmVuY2UgdG8gYSBDb250ZW50SGFuZGxlci48RFQ+PEI+VGhyb3dzOjwvQj48REQ+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL3htbC9zYXgvU0FYRXhjZXB0aW9uLmh0bWwiPlNBWEV4Y2VwdGlvbjwvQT4gLSAmbmJzcDs8RFQ+PEI+T3ZlcnJpZGVzOjwvQj48REQ+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2FwYWNoZS94cGF0aC9vYmplY3RzL1hPYmplY3QuaHRtbCNkaXNwYXRjaENoYXJhY3RlcnNFdmVudHMob3JnLnhtbC5zYXguQ29udGVudEhhbmRsZXIpIj5kaXNwYXRjaENoYXJhY3RlcnNFdmVudHM8L0E+IGluIGNsYXNzIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9hcGFjaGUveHBhdGgvb2JqZWN0cy9YT2JqZWN0Lmh0bWwiPlhPYmplY3Q8L0E+PC9ETD4NCjwvREQ+DQo8L0RMPg0KPEhSPg0KDQo8QSBOQU1FPSJkaXNwYXRjaEFzQ29tbWVudChvcmcueG1sLnNheC5leHQuTGV4aWNhbEhhbmRsZXIpIj48IS0tIC0tPjwvQT48SDM+DQpkaXNwYXRjaEFzQ29tbWVudDwvSDM+DQo8UFJFPg0KcHVibGljIHZvaWQgPEI+ZGlzcGF0Y2hBc0NvbW1lbnQ8L0I+KDxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy94bWwvc2F4L2V4dC9MZXhpY2FsSGFuZGxlci5odG1sIj5MZXhpY2FsSGFuZGxlcjwvQT4mbmJzcDtsaCkKICAgICAgICAgICAgICAgICAgICAgICB0aHJvd3MgPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL3htbC9zYXgvU0FYRXhjZXB0aW9uLmh0bWwiPlNBWEV4Y2VwdGlvbjwvQT48L1BSRT4NCjxETD4NCjxERD5EaXJlY3RseSBjYWxsIHRoZQogY29tbWVudCBtZXRob2Qgb24gdGhlIHBhc3NlZCBMZXhpY2FsSGFuZGxlciBmb3IgdGhlCiBzdHJpbmctdmFsdWUuPEREPjxETD4NCjxEVD48Qj5TcGVjaWZpZWQgYnk6IDwvQj48REQ+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2FwYWNoZS94bWwvdXRpbHMvWE1MU3RyaW5nLmh0bWwjZGlzcGF0Y2hBc0NvbW1lbnQob3JnLnhtbC5zYXguZXh0LkxleGljYWxIYW5kbGVyKSI+ZGlzcGF0Y2hBc0NvbW1lbnQ8L0E+IGluIGludGVyZmFjZSA8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvYXBhY2hlL3htbC91dGlscy9YTUxTdHJpbmcuaHRtbCI+WE1MU3RyaW5nPC9BPjxEVD48Qj5QYXJhbWV0ZXJzOjwvQj48REQ+PENPREU+bGg8L0NPREU+IC0gQSBub24tbnVsbCByZWZlcmVuY2UgdG8gYSBMZXhpY2FsSGFuZGxlci48RFQ+PEI+VGhyb3dzOjwvQj48REQ+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL3htbC9zYXgvU0FYRXhjZXB0aW9uLmh0bWwiPlNBWEV4Y2VwdGlvbjwvQT4gLSAmbmJzcDs8L0RMPg0KPC9ERD4NCjwvREw+DQo8SFI+DQoNCjxBIE5BTUU9Imxlbmd0aCgpIj48IS0tIC0tPjwvQT48SDM+DQpsZW5ndGg8L0gzPg0KPFBSRT4NCnB1YmxpYyBpbnQgPEI+bGVuZ3RoPC9CPigpPC9QUkU+DQo8REw+DQo8REQ+UmV0dXJucyB0aGUgbGVuZ3RoIG9mIHRoaXMgc3RyaW5nLjxERD48REw+DQo8RFQ+PEI+U3BlY2lmaWVkIGJ5OiA8L0I+PEREPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9hcGFjaGUveG1sL3V0aWxzL1hNTFN0cmluZy5odG1sI2xlbmd0aCgpIj5sZW5ndGg8L0E+IGluIGludGVyZmFjZSA8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvYXBhY2hlL3htbC91dGlscy9YTUxTdHJpbmcuaHRtbCI+WE1MU3RyaW5nPC9BPjxEVD48Qj5SZXR1cm5zOjwvQj48REQ+dGhlIGxlbmd0aCBvZiB0aGUgc2VxdWVuY2Ugb2YgY2hhcmFjdGVycyByZXByZXNlbnRlZCBieSB0aGlzCiAgICAgICAgICBvYmplY3QuPC9ETD4NCjwvREQ+DQo8L0RMPg0KPEhSPg0KDQo8QSBOQU1FPSJjaGFyQXQoaW50KSI+PCEtLSAtLT48L0E+PEgzPg0KY2hhckF0PC9IMz4NCjxQUkU+DQpwdWJsaWMgY2hhciA8Qj5jaGFyQXQ8L0I+KGludCZuYnNwO2luZGV4KTwvUFJFPg0KPERMPg0KPEREPlJldHVybnMgdGhlIGNoYXJhY3RlciBhdCB0aGUgc3BlY2lmaWVkIGluZGV4LiBBbiBpbmRleCByYW5nZXMKIGZyb20gPGNvZGU+MDwvY29kZT4gdG8gPGNvZGU+bGVuZ3RoKCkgLSAxPC9jb2RlPi4gVGhlIGZpcnN0IGNoYXJhY3Rlcgogb2YgdGhlIHNlcXVlbmNlIGlzIGF0IGluZGV4IDxjb2RlPjA8L2NvZGU+LCB0aGUgbmV4dCBhdCBpbmRleAogPGNvZGU+MTwvY29kZT4sIGFuZCBzbyBvbiwgYXMgZm9yIGFycmF5IGluZGV4aW5nLjxERD48REw+DQo8RFQ+PEI+U3BlY2lmaWVkIGJ5OiA8L0I+PEREPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9hcGFjaGUveG1sL3V0aWxzL1hNTFN0cmluZy5odG1sI2NoYXJBdChpbnQpIj5jaGFyQXQ8L0E+IGluIGludGVyZmFjZSA8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvYXBhY2hlL3htbC91dGlscy9YTUxTdHJpbmcuaHRtbCI+WE1MU3RyaW5nPC9BPjxEVD48Qj5QYXJhbWV0ZXJzOjwvQj48REQ+PENPREU+aW5kZXg8L0NPREU+IC0gdGhlIGluZGV4IG9mIHRoZSBjaGFyYWN0ZXIuPERUPjxCPlJldHVybnM6PC9CPjxERD50aGUgY2hhcmFjdGVyIGF0IHRoZSBzcGVjaWZpZWQgaW5kZXggb2YgdGhpcyBzdHJpbmcuCiAgICAgICAgICAgICBUaGUgZmlyc3QgY2hhcmFjdGVyIGlzIGF0IGluZGV4IDxjb2RlPjA8L2NvZGU+LjxEVD48Qj5UaHJvd3M6PC9CPjxERD5qYXZhLmxhbmcuSW5kZXhPdXRPZkJvdW5kc0V4Y2VwdGlvbiAtIGlmIHRoZSA8Y29kZT5pbmRleDwvY29kZT4KICAgICAgICAgICAgIGFyZ3VtZW50IGlzIG5lZ2F0aXZlIG9yIG5vdCBsZXNzIHRoYW4gdGhlIGxlbmd0aCBvZiB0aGlzCiAgICAgICAgICAgICBzdHJpbmcuPC9ETD4NCjwvREQ+DQo8L0RMPg0KPEhSPg0KDQo8QSBOQU1FPSJnZXRDaGFycyhpbnQsIGludCwgY2hhcltdLCBpbnQpIj48IS0tIC0tPjwvQT48SDM+DQpnZXRDaGFyczwvSDM+DQo8UFJFPg0KcHVibGljIHZvaWQgPEI+Z2V0Q2hhcnM8L0I+KGludCZuYnNwO3NyY0JlZ2luLAogICAgICAgICAgICAgICAgICAgICBpbnQmbmJzcDtzcmNFbmQsCiAgICAgICAgICAgICAgICAgICAgIGNoYXJbXSZuYnNwO2RzdCwKICAgICAgICAgICAgICAgICAgICAgaW50Jm5ic3A7ZHN0QmVnaW4pPC9QUkU+DQo8REw+DQo8REQ+Q29waWVzIGNoYXJhY3RlcnMgZnJvbSB0aGlzIHN0cmluZyBpbnRvIHRoZSBkZXN0aW5hdGlvbiBjaGFyYWN0ZXIKIGFycmF5LjxERD48REw+DQo8RFQ+PEI+U3BlY2lmaWVkIGJ5OiA8L0I+PEREPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9hcGFjaGUveG1sL3V0aWxzL1hNTFN0cmluZy5odG1sI2dldENoYXJzKGludCwgaW50LCBjaGFyW10sIGludCkiPmdldENoYXJzPC9BPiBpbiBpbnRlcmZhY2UgPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2FwYWNoZS94bWwvdXRpbHMvWE1MU3RyaW5nLmh0bWwiPlhNTFN0cmluZzwvQT48RFQ+PEI+UGFyYW1ldGVyczo8L0I+PEREPjxDT0RFPnNyY0JlZ2luPC9DT0RFPiAtIGluZGV4IG9mIHRoZSBmaXJzdCBjaGFyYWN0ZXIgaW4gdGhlIHN0cmluZwogICAgICAgICAgICAgICAgICAgICAgICB0byBjb3B5LjxERD48Q09ERT5zcmNFbmQ8L0NPREU+IC0gaW5kZXggYWZ0ZXIgdGhlIGxhc3QgY2hhcmFjdGVyIGluIHRoZSBzdHJpbmcKICAgICAgICAgICAgICAgICAgICAgICAgdG8gY29weS48REQ+PENPREU+ZHN0PC9DT0RFPiAtIHRoZSBkZXN0aW5hdGlvbiBhcnJheS48REQ+PENPREU+ZHN0QmVnaW48L0NPREU+IC0gdGhlIHN0YXJ0IG9mZnNldCBpbiB0aGUgZGVzdGluYXRpb24gYXJyYXkuPERUPjxCPlRocm93czo8L0I+PEREPmphdmEubGFuZy5JbmRleE91dE9mQm91bmRzRXhjZXB0aW9uIC0gSWYgYW55IG9mIHRoZSBmb2xsb3dpbmcKICAgICAgICAgICAgaXMgdHJ1ZToKICAgICAgICAgICAgPHVsPjxsaT48Y29kZT5zcmNCZWdpbjwvY29kZT4gaXMgbmVnYXRpdmUuCiAgICAgICAgICAgIDxsaT48Y29kZT5zcmNCZWdpbjwvY29kZT4gaXMgZ3JlYXRlciB0aGFuIDxjb2RlPnNyY0VuZDwvY29kZT4KICAgICAgICAgICAgPGxpPjxjb2RlPnNyY0VuZDwvY29kZT4gaXMgZ3JlYXRlciB0aGFuIHRoZSBsZW5ndGggb2YgdGhpcwogICAgICAgICAgICAgICAgc3RyaW5nCiAgICAgICAgICAgIDxsaT48Y29kZT5kc3RCZWdpbjwvY29kZT4gaXMgbmVnYXRpdmUKICAgICAgICAgICAgPGxpPjxjb2RlPmRzdEJlZ2luKyhzcmNFbmQtc3JjQmVnaW4pPC9jb2RlPiBpcyBsYXJnZXIgdGhhbgogICAgICAgICAgICAgICAgPGNvZGU+ZHN0Lmxlbmd0aDwvY29kZT48L3VsPjxERD5qYXZhLmxhbmcuTnVsbFBvaW50ZXJFeGNlcHRpb24gLSBpZiA8Y29kZT5kc3Q8L2NvZGU+IGlzIDxjb2RlPm51bGw8L2NvZGU+PC9ETD4NCjwvREQ+DQo8L0RMPg0KPEhSPg0KDQo8QSBOQU1FPSJlcXVhbHMob3JnLmFwYWNoZS54cGF0aC5vYmplY3RzLlhPYmplY3QpIj48IS0tIC0tPjwvQT48SDM+DQplcXVhbHM8L0gzPg0KPFBSRT4NCnB1YmxpYyBib29sZWFuIDxCPmVxdWFsczwvQj4oPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2FwYWNoZS94cGF0aC9vYmplY3RzL1hPYmplY3QuaHRtbCI+WE9iamVjdDwvQT4mbmJzcDtvYmoyKTwvUFJFPg0KPERMPg0KPEREPlRlbGwgaWYgdHdvIG9iamVjdHMgYXJlIGZ1bmN0aW9uYWxseSBlcXVhbC48REQ+PERMPg0KPERUPjxCPlBhcmFtZXRlcnM6PC9CPjxERD48Q09ERT5vYmoyPC9DT0RFPiAtIE9iamVjdCB0byBjb21wYXJlIHRoaXMgdG88RFQ+PEI+UmV0dXJuczo8L0I+PEREPnRydWUgaWYgdGhlIHR3byBvYmplY3RzIGFyZSBlcXVhbDxEVD48Qj5UaHJvd3M6PC9CPjxERD48QSBIUkVGPSIuLi8uLi8uLi8uLi9qYXZheC94bWwvdHJhbnNmb3JtL1RyYW5zZm9ybWVyRXhjZXB0aW9uLmh0bWwiPlRyYW5zZm9ybWVyRXhjZXB0aW9uPC9BPiAtICZuYnNwOzxEVD48Qj5PdmVycmlkZXM6PC9CPjxERD48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvYXBhY2hlL3hwYXRoL29iamVjdHMvWE9iamVjdC5odG1sI2VxdWFscyhvcmcuYXBhY2hlLnhwYXRoLm9iamVjdHMuWE9iamVjdCkiPmVxdWFsczwvQT4gaW4gY2xhc3MgPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2FwYWNoZS94cGF0aC9vYmplY3RzL1hPYmplY3QuaHRtbCI+WE9iamVjdDwvQT48L0RMPg0KPC9ERD4NCjwvREw+DQo8SFI+DQoNCjxBIE5BTUU9ImVxdWFscyhqYXZhLmxhbmcuU3RyaW5nKSI+PCEtLSAtLT48L0E+PEgzPg0KZXF1YWxzPC9IMz4NCjxQUkU+DQpwdWJsaWMgYm9vbGVhbiA8Qj5lcXVhbHM8L0I+KGphdmEubGFuZy5TdHJpbmcmbmJzcDtvYmoyKTwvUFJFPg0KPERMPg0KPEREPkNvbXBhcmVzIHRoaXMgc3RyaW5nIHRvIHRoZSBzcGVjaWZpZWQgPGNvZGU+U3RyaW5nPC9jb2RlPi4KIFRoZSByZXN1bHQgaXMgPGNvZGU+dHJ1ZTwvY29kZT4gaWYgYW5kIG9ubHkgaWYgdGhlIGFyZ3VtZW50IGlzIG5vdAogPGNvZGU+bnVsbDwvY29kZT4gYW5kIGlzIGEgPGNvZGU+U3RyaW5nPC9jb2RlPiBvYmplY3QgdGhhdCByZXByZXNlbnRzCiB0aGUgc2FtZSBzZXF1ZW5jZSBvZiBjaGFyYWN0ZXJzIGFzIHRoaXMgb2JqZWN0LjxERD48REw+DQo8RFQ+PEI+U3BlY2lmaWVkIGJ5OiA8L0I+PEREPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9hcGFjaGUveG1sL3V0aWxzL1hNTFN0cmluZy5odG1sI2VxdWFscyhqYXZhLmxhbmcuU3RyaW5nKSI+ZXF1YWxzPC9BPiBpbiBpbnRlcmZhY2UgPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2FwYWNoZS94bWwvdXRpbHMvWE1MU3RyaW5nLmh0bWwiPlhNTFN0cmluZzwvQT48RFQ+PEI+UGFyYW1ldGVyczo8L0I+PEREPjxDT0RFPm9iajI8L0NPREU+IC0gdGhlIG9iamVjdCB0byBjb21wYXJlIHRoaXMgPGNvZGU+U3RyaW5nPC9jb2RlPiBhZ2FpbnN0LjxEVD48Qj5SZXR1cm5zOjwvQj48REQ+PGNvZGU+dHJ1ZTwvY29kZT4gaWYgdGhlIDxjb2RlPlN0cmluZzwvY29kZT5zIGFyZSBlcXVhbDsKICAgICAgICAgIDxjb2RlPmZhbHNlPC9jb2RlPiBvdGhlcndpc2UuPERUPjxCPlNlZSBBbHNvOiA8L0I+PEREPjxDT0RFPlN0cmluZy5jb21wYXJlVG8oamF2YS5sYW5nLlN0cmluZyk8L0NPREU+LCANCjxDT0RFPlN0cmluZy5lcXVhbHNJZ25vcmVDYXNlKGphdmEubGFuZy5TdHJpbmcpPC9DT0RFPjwvREw+DQo8L0REPg0KPC9ETD4NCjxIUj4NCg0KPEEgTkFNRT0iZXF1YWxzKG9yZy5hcGFjaGUueG1sLnV0aWxzLlhNTFN0cmluZykiPjwhLS0gLS0+PC9BPjxIMz4NCmVxdWFsczwvSDM+DQo8UFJFPg0KcHVibGljIGJvb2xlYW4gPEI+ZXF1YWxzPC9CPig8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvYXBhY2hlL3htbC91dGlscy9YTUxTdHJpbmcuaHRtbCI+WE1MU3RyaW5nPC9BPiZuYnNwO29iajIpPC9QUkU+DQo8REw+DQo8REQ+Q29tcGFyZXMgdGhpcyBzdHJpbmcgdG8gdGhlIHNwZWNpZmllZCBvYmplY3QuCiBUaGUgcmVzdWx0IGlzIDxjb2RlPnRydWU8L2NvZGU+IGlmIGFuZCBvbmx5IGlmIHRoZSBhcmd1bWVudCBpcyBub3QKIDxjb2RlPm51bGw8L2NvZGU+IGFuZCBpcyBhIDxjb2RlPlN0cmluZzwvY29kZT4gb2JqZWN0IHRoYXQgcmVwcmVzZW50cwogdGhlIHNhbWUgc2VxdWVuY2Ugb2YgY2hhcmFjdGVycyBhcyB0aGlzIG9iamVjdC48REQ+PERMPg0KPERUPjxCPlNwZWNpZmllZCBieTogPC9CPjxERD48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvYXBhY2hlL3htbC91dGlscy9YTUxTdHJpbmcuaHRtbCNlcXVhbHMob3JnLmFwYWNoZS54bWwudXRpbHMuWE1MU3RyaW5nKSI+ZXF1YWxzPC9BPiBpbiBpbnRlcmZhY2UgPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2FwYWNoZS94bWwvdXRpbHMvWE1MU3RyaW5nLmh0bWwiPlhNTFN0cmluZzwvQT48RFQ+PEI+UGFyYW1ldGVyczo8L0I+PEREPjxDT0RFPm9iajI8L0NPREU+IC0gdGhlIG9iamVjdCB0byBjb21wYXJlIHRoaXMgPGNvZGU+U3RyaW5nPC9jb2RlPgogICAgICAgICAgICAgICAgICAgICBhZ2FpbnN0LjxEVD48Qj5SZXR1cm5zOjwvQj48REQ+PGNvZGU+dHJ1ZTwvY29kZT4gaWYgdGhlIDxjb2RlPlN0cmluZyA8L2NvZGU+YXJlIGVxdWFsOwogICAgICAgICAgPGNvZGU+ZmFsc2U8L2NvZGU+IG90aGVyd2lzZS48RFQ+PEI+U2VlIEFsc286IDwvQj48REQ+PENPREU+U3RyaW5nLmNvbXBhcmVUbyhqYXZhLmxhbmcuU3RyaW5nKTwvQ09ERT4sIA0KPENPREU+U3RyaW5nLmVxdWFsc0lnbm9yZUNhc2UoamF2YS5sYW5nLlN0cmluZyk8L0NPREU+PC9ETD4NCjwvREQ+DQo8L0RMPg0KPEhSPg0KDQo8QSBOQU1FPSJlcXVhbHMoamF2YS5sYW5nLk9iamVjdCkiPjwhLS0gLS0+PC9BPjxIMz4NCmVxdWFsczwvSDM+DQo8UFJFPg0KcHVibGljIGJvb2xlYW4gPEI+ZXF1YWxzPC9CPihqYXZhLmxhbmcuT2JqZWN0Jm5ic3A7b2JqMik8L1BSRT4NCjxETD4NCjxERD5Db21wYXJlcyB0aGlzIHN0cmluZyB0byB0aGUgc3BlY2lmaWVkIG9iamVjdC4KIFRoZSByZXN1bHQgaXMgPGNvZGU+dHJ1ZTwvY29kZT4gaWYgYW5kIG9ubHkgaWYgdGhlIGFyZ3VtZW50IGlzIG5vdAogPGNvZGU+bnVsbDwvY29kZT4gYW5kIGlzIGEgPGNvZGU+U3RyaW5nPC9jb2RlPiBvYmplY3QgdGhhdCByZXByZXNlbnRzCiB0aGUgc2FtZSBzZXF1ZW5jZSBvZiBjaGFyYWN0ZXJzIGFzIHRoaXMgb2JqZWN0LjxERD48REw+DQo8RFQ+PEI+U3BlY2lmaWVkIGJ5OiA8L0I+PEREPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9hcGFjaGUveG1sL3V0aWxzL1hNTFN0cmluZy5odG1sI2VxdWFscyhqYXZhLmxhbmcuT2JqZWN0KSI+ZXF1YWxzPC9BPiBpbiBpbnRlcmZhY2UgPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2FwYWNoZS94bWwvdXRpbHMvWE1MU3RyaW5nLmh0bWwiPlhNTFN0cmluZzwvQT48RFQ+PEI+UGFyYW1ldGVyczo8L0I+PEREPjxDT0RFPm9iajI8L0NPREU+IC0gdGhlIG9iamVjdCB0byBjb21wYXJlIHRoaXMgPGNvZGU+U3RyaW5nPC9jb2RlPgogICAgICAgICAgICAgICAgICAgICBhZ2FpbnN0LjxEVD48Qj5SZXR1cm5zOjwvQj48REQ+PGNvZGU+dHJ1ZTwvY29kZT4gaWYgdGhlIDxjb2RlPlN0cmluZyA8L2NvZGU+YXJlIGVxdWFsOwogICAgICAgICAgPGNvZGU+ZmFsc2U8L2NvZGU+IG90aGVyd2lzZS48RFQ+PEI+T3ZlcnJpZGVzOjwvQj48REQ+ZXF1YWxzIGluIGNsYXNzIGphdmEubGFuZy5PYmplY3Q8RFQ+PEI+U2VlIEFsc286IDwvQj48REQ+PENPREU+U3RyaW5nLmNvbXBhcmVUbyhqYXZhLmxhbmcuU3RyaW5nKTwvQ09ERT4sIA0KPENPREU+U3RyaW5nLmVxdWFsc0lnbm9yZUNhc2UoamF2YS5sYW5nLlN0cmluZyk8L0NPREU+PC9ETD4NCjwvREQ+DQo8L0RMPg0KPEhSPg0KDQo8QSBOQU1FPSJlcXVhbHNJZ25vcmVDYXNlKGphdmEubGFuZy5TdHJpbmcpIj48IS0tIC0tPjwvQT48SDM+DQplcXVhbHNJZ25vcmVDYXNlPC9IMz4NCjxQUkU+DQpwdWJsaWMgYm9vbGVhbiA8Qj5lcXVhbHNJZ25vcmVDYXNlPC9CPihqYXZhLmxhbmcuU3RyaW5nJm5ic3A7YW5vdGhlclN0cmluZyk8L1BSRT4NCjxETD4NCjxERD5Db21wYXJlcyB0aGlzIDxjb2RlPlN0cmluZzwvY29kZT4gdG8gYW5vdGhlciA8Y29kZT5TdHJpbmc8L2NvZGU+LAogaWdub3JpbmcgY2FzZSBjb25zaWRlcmF0aW9ucy4gIFR3byBzdHJpbmdzIGFyZSBjb25zaWRlcmVkIGVxdWFsCiBpZ25vcmluZyBjYXNlIGlmIHRoZXkgYXJlIG9mIHRoZSBzYW1lIGxlbmd0aCwgYW5kIGNvcnJlc3BvbmRpbmcKIGNoYXJhY3RlcnMgaW4gdGhlIHR3byBzdHJpbmdzIGFyZSBlcXVhbCBpZ25vcmluZyBjYXNlLjxERD48REw+DQo8RFQ+PEI+U3BlY2lmaWVkIGJ5OiA8L0I+PEREPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9hcGFjaGUveG1sL3V0aWxzL1hNTFN0cmluZy5odG1sI2VxdWFsc0lnbm9yZUNhc2UoamF2YS5sYW5nLlN0cmluZykiPmVxdWFsc0lnbm9yZUNhc2U8L0E+IGluIGludGVyZmFjZSA8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvYXBhY2hlL3htbC91dGlscy9YTUxTdHJpbmcuaHRtbCI+WE1MU3RyaW5nPC9BPjxEVD48Qj5QYXJhbWV0ZXJzOjwvQj48REQ+PENPREU+YW5vdGhlclN0cmluZzwvQ09ERT4gLSB0aGUgPGNvZGU+U3RyaW5nPC9jb2RlPiB0byBjb21wYXJlIHRoaXMKICAgICAgICAgICAgICAgICAgICAgICAgICA8Y29kZT5TdHJpbmc8L2NvZGU+IGFnYWluc3QuPERUPjxCPlJldHVybnM6PC9CPjxERD48Y29kZT50cnVlPC9jb2RlPiBpZiB0aGUgYXJndW1lbnQgaXMgbm90IDxjb2RlPm51bGw8L2NvZGU+CiAgICAgICAgICBhbmQgdGhlIDxjb2RlPlN0cmluZzwvY29kZT5zIGFyZSBlcXVhbCwKICAgICAgICAgIGlnbm9yaW5nIGNhc2U7IDxjb2RlPmZhbHNlPC9jb2RlPiBvdGhlcndpc2UuPERUPjxCPlNlZSBBbHNvOiA8L0I+PEREPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9hcGFjaGUveHBhdGgvb2JqZWN0cy9YU3RyaW5nLmh0bWwjZXF1YWxzKGphdmEubGFuZy5PYmplY3QpIj48Q09ERT5lcXVhbHMoT2JqZWN0KTwvQ09ERT48L0E+LCANCjxDT0RFPkNoYXJhY3Rlci50b0xvd2VyQ2FzZShjaGFyKTwvQ09ERT4sIA0KPENPREU+Q2hhcmFjdGVyLnRvVXBwZXJDYXNlKGNoYXIpPC9DT0RFPjwvREw+DQo8L0REPg0KPC9ETD4NCjxIUj4NCg0KPEEgTkFNRT0iY29tcGFyZVRvKG9yZy5hcGFjaGUueG1sLnV0aWxzLlhNTFN0cmluZykiPjwhLS0gLS0+PC9BPjxIMz4NCmNvbXBhcmVUbzwvSDM+DQo8UFJFPg0KcHVibGljIGludCA8Qj5jb21wYXJlVG88L0I+KDxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9hcGFjaGUveG1sL3V0aWxzL1hNTFN0cmluZy5odG1sIj5YTUxTdHJpbmc8L0E+Jm5ic3A7eHN0cik8L1BSRT4NCjxETD4NCjxERD5Db21wYXJlcyB0d28gc3RyaW5ncyBsZXhpY29ncmFwaGljYWxseS48REQ+PERMPg0KPERUPjxCPlNwZWNpZmllZCBieTogPC9CPjxERD48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvYXBhY2hlL3htbC91dGlscy9YTUxTdHJpbmcuaHRtbCNjb21wYXJlVG8ob3JnLmFwYWNoZS54bWwudXRpbHMuWE1MU3RyaW5nKSI+Y29tcGFyZVRvPC9BPiBpbiBpbnRlcmZhY2UgPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2FwYWNoZS94bWwvdXRpbHMvWE1MU3RyaW5nLmh0bWwiPlhNTFN0cmluZzwvQT48RFQ+PEI+UGFyYW1ldGVyczo8L0I+PEREPjxDT0RFPnhzdHI8L0NPREU+IC0gdGhlIDxjb2RlPlN0cmluZzwvY29kZT4gdG8gYmUgY29tcGFyZWQuPERUPjxCPlJldHVybnM6PC9CPjxERD50aGUgdmFsdWUgPGNvZGU+MDwvY29kZT4gaWYgdGhlIGFyZ3VtZW50IHN0cmluZyBpcyBlcXVhbCB0bwogICAgICAgICAgdGhpcyBzdHJpbmc7IGEgdmFsdWUgbGVzcyB0aGFuIDxjb2RlPjA8L2NvZGU+IGlmIHRoaXMgc3RyaW5nCiAgICAgICAgICBpcyBsZXhpY29ncmFwaGljYWxseSBsZXNzIHRoYW4gdGhlIHN0cmluZyBhcmd1bWVudDsgYW5kIGEKICAgICAgICAgIHZhbHVlIGdyZWF0ZXIgdGhhbiA8Y29kZT4wPC9jb2RlPiBpZiB0aGlzIHN0cmluZyBpcwogICAgICAgICAgbGV4aWNvZ3JhcGhpY2FsbHkgZ3JlYXRlciB0aGFuIHRoZSBzdHJpbmcgYXJndW1lbnQuPERUPjxCPlRocm93czo8L0I+PEREPmphdmEubGFuZy5OdWxsUG9pbnRlckV4Y2VwdGlvbiAtIGlmIDxjb2RlPmFub3RoZXJTdHJpbmc8L2NvZGU+CiAgICAgICAgICBpcyA8Y29kZT5udWxsPC9jb2RlPi48L0RMPg0KPC9ERD4NCjwvREw+DQo8SFI+DQoNCjxBIE5BTUU9ImNvbXBhcmVUb0lnbm9yZUNhc2Uob3JnLmFwYWNoZS54bWwudXRpbHMuWE1MU3RyaW5nKSI+PCEtLSAtLT48L0E+PEgzPg0KY29tcGFyZVRvSWdub3JlQ2FzZTwvSDM+DQo8UFJFPg0KcHVibGljIGludCA8Qj5jb21wYXJlVG9JZ25vcmVDYXNlPC9CPig8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvYXBhY2hlL3htbC91dGlscy9YTUxTdHJpbmcuaHRtbCI+WE1MU3RyaW5nPC9BPiZuYnNwO3N0cik8L1BSRT4NCjxETD4NCjxERD5Db21wYXJlcyB0d28gc3RyaW5ncyBsZXhpY29ncmFwaGljYWxseSwgaWdub3JpbmcgY2FzZSBjb25zaWRlcmF0aW9ucy4KIFRoaXMgbWV0aG9kIHJldHVybnMgYW4gaW50ZWdlciB3aG9zZSBzaWduIGlzIHRoYXQgb2YKIDxjb2RlPnRoaXMudG9VcHBlckNhc2UoKS50b0xvd2VyQ2FzZSgpLmNvbXBhcmVUbygKIHN0ci50b1VwcGVyQ2FzZSgpLnRvTG93ZXJDYXNlKCkpPC9jb2RlPi4KIDxwPgogTm90ZSB0aGF0IHRoaXMgbWV0aG9kIGRvZXMgPGVtPm5vdDwvZW0+IHRha2UgbG9jYWxlIGludG8gYWNjb3VudCwKIGFuZCB3aWxsIHJlc3VsdCBpbiBhbiB1bnNhdGlzZmFjdG9yeSBvcmRlcmluZyBmb3IgY2VydGFpbiBsb2NhbGVzLgogVGhlIGphdmEudGV4dCBwYWNrYWdlIHByb3ZpZGVzIDxlbT5jb2xsYXRvcnM8L2VtPiB0byBhbGxvdwogbG9jYWxlLXNlbnNpdGl2ZSBvcmRlcmluZy48REQ+PERMPg0KPERUPjxCPlNwZWNpZmllZCBieTogPC9CPjxERD48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvYXBhY2hlL3htbC91dGlscy9YTUxTdHJpbmcuaHRtbCNjb21wYXJlVG9JZ25vcmVDYXNlKG9yZy5hcGFjaGUueG1sLnV0aWxzLlhNTFN0cmluZykiPmNvbXBhcmVUb0lnbm9yZUNhc2U8L0E+IGluIGludGVyZmFjZSA8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvYXBhY2hlL3htbC91dGlscy9YTUxTdHJpbmcuaHRtbCI+WE1MU3RyaW5nPC9BPjxEVD48Qj5QYXJhbWV0ZXJzOjwvQj48REQ+PENPREU+c3RyPC9DT0RFPiAtIHRoZSA8Y29kZT5TdHJpbmc8L2NvZGU+IHRvIGJlIGNvbXBhcmVkLjxEVD48Qj5SZXR1cm5zOjwvQj48REQ+YSBuZWdhdGl2ZSBpbnRlZ2VyLCB6ZXJvLCBvciBhIHBvc2l0aXZlIGludGVnZXIgYXMgdGhlCiAgICAgICAgICB0aGUgc3BlY2lmaWVkIFN0cmluZyBpcyBncmVhdGVyIHRoYW4sIGVxdWFsIHRvLCBvciBsZXNzCiAgICAgICAgICB0aGFuIHRoaXMgU3RyaW5nLCBpZ25vcmluZyBjYXNlIGNvbnNpZGVyYXRpb25zLjxEVD48Qj5TaW5jZTogPC9CPjxERD4xLjI8L0REPg0KPERUPjxCPlNlZSBBbHNvOiA8L0I+PEREPjxDT0RFPkNvbGxhdG9yLmNvbXBhcmUoU3RyaW5nLCBTdHJpbmcpPC9DT0RFPjwvREw+DQo8L0REPg0KPC9ETD4NCjxIUj4NCg0KPEEgTkFNRT0ic3RhcnRzV2l0aChqYXZhLmxhbmcuU3RyaW5nLCBpbnQpIj48IS0tIC0tPjwvQT48SDM+DQpzdGFydHNXaXRoPC9IMz4NCjxQUkU+DQpwdWJsaWMgYm9vbGVhbiA8Qj5zdGFydHNXaXRoPC9CPihqYXZhLmxhbmcuU3RyaW5nJm5ic3A7cHJlZml4LAogICAgICAgICAgICAgICAgICAgICAgICAgIGludCZuYnNwO3RvZmZzZXQpPC9QUkU+DQo8REw+DQo8REQ+VGVzdHMgaWYgdGhpcyBzdHJpbmcgc3RhcnRzIHdpdGggdGhlIHNwZWNpZmllZCBwcmVmaXggYmVnaW5uaW5nCiBhIHNwZWNpZmllZCBpbmRleC48REQ+PERMPg0KPERUPjxCPlNwZWNpZmllZCBieTogPC9CPjxERD48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvYXBhY2hlL3htbC91dGlscy9YTUxTdHJpbmcuaHRtbCNzdGFydHNXaXRoKGphdmEubGFuZy5TdHJpbmcsIGludCkiPnN0YXJ0c1dpdGg8L0E+IGluIGludGVyZmFjZSA8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvYXBhY2hlL3htbC91dGlscy9YTUxTdHJpbmcuaHRtbCI+WE1MU3RyaW5nPC9BPjxEVD48Qj5QYXJhbWV0ZXJzOjwvQj48REQ+PENPREU+cHJlZml4PC9DT0RFPiAtIHRoZSBwcmVmaXguPEREPjxDT0RFPnRvZmZzZXQ8L0NPREU+IC0gd2hlcmUgdG8gYmVnaW4gbG9va2luZyBpbiB0aGUgc3RyaW5nLjxEVD48Qj5SZXR1cm5zOjwvQj48REQ+PGNvZGU+dHJ1ZTwvY29kZT4gaWYgdGhlIGNoYXJhY3RlciBzZXF1ZW5jZSByZXByZXNlbnRlZCBieSB0aGUKICAgICAgICAgIGFyZ3VtZW50IGlzIGEgcHJlZml4IG9mIHRoZSBzdWJzdHJpbmcgb2YgdGhpcyBvYmplY3Qgc3RhcnRpbmcKICAgICAgICAgIGF0IGluZGV4IDxjb2RlPnRvZmZzZXQ8L2NvZGU+OyA8Y29kZT5mYWxzZTwvY29kZT4gb3RoZXJ3aXNlLgogICAgICAgICAgVGhlIHJlc3VsdCBpcyA8Y29kZT5mYWxzZTwvY29kZT4gaWYgPGNvZGU+dG9mZnNldDwvY29kZT4gaXMKICAgICAgICAgIG5lZ2F0aXZlIG9yIGdyZWF0ZXIgdGhhbiB0aGUgbGVuZ3RoIG9mIHRoaXMKICAgICAgICAgIDxjb2RlPlN0cmluZzwvY29kZT4gb2JqZWN0OyBvdGhlcndpc2UgdGhlIHJlc3VsdCBpcyB0aGUgc2FtZQogICAgICAgICAgYXMgdGhlIHJlc3VsdCBvZiB0aGUgZXhwcmVzc2lvbgogICAgICAgICAgPHByZT4KICAgICAgICAgIHRoaXMuc3ViU3RyaW5nKHRvZmZzZXQpLnN0YXJ0c1dpdGgocHJlZml4KQogICAgICAgICAgPC9wcmU+PERUPjxCPlRocm93czo8L0I+PEREPmphdmEubGFuZy5OdWxsUG9pbnRlckV4Y2VwdGlvbiAtIGlmIDxjb2RlPnByZWZpeDwvY29kZT4gaXMKICAgICAgICAgIDxjb2RlPm51bGw8L2NvZGU+LjwvREw+DQo8L0REPg0KPC9ETD4NCjxIUj4NCg0KPEEgTkFNRT0ic3RhcnRzV2l0aChqYXZhLmxhbmcuU3RyaW5nKSI+PCEtLSAtLT48L0E+PEgzPg0Kc3RhcnRzV2l0aDwvSDM+DQo8UFJFPg0KcHVibGljIGJvb2xlYW4gPEI+c3RhcnRzV2l0aDwvQj4oamF2YS5sYW5nLlN0cmluZyZuYnNwO3ByZWZpeCk8L1BSRT4NCjxETD4NCjxERD5UZXN0cyBpZiB0aGlzIHN0cmluZyBzdGFydHMgd2l0aCB0aGUgc3BlY2lmaWVkIHByZWZpeC48REQ+PERMPg0KPERUPjxCPlNwZWNpZmllZCBieTogPC9CPjxERD48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvYXBhY2hlL3htbC91dGlscy9YTUxTdHJpbmcuaHRtbCNzdGFydHNXaXRoKGphdmEubGFuZy5TdHJpbmcpIj5zdGFydHNXaXRoPC9BPiBpbiBpbnRlcmZhY2UgPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2FwYWNoZS94bWwvdXRpbHMvWE1MU3RyaW5nLmh0bWwiPlhNTFN0cmluZzwvQT48RFQ+PEI+UGFyYW1ldGVyczo8L0I+PEREPjxDT0RFPnByZWZpeDwvQ09ERT4gLSB0aGUgcHJlZml4LjxEVD48Qj5SZXR1cm5zOjwvQj48REQ+PGNvZGU+dHJ1ZTwvY29kZT4gaWYgdGhlIGNoYXJhY3RlciBzZXF1ZW5jZSByZXByZXNlbnRlZCBieSB0aGUKICAgICAgICAgIGFyZ3VtZW50IGlzIGEgcHJlZml4IG9mIHRoZSBjaGFyYWN0ZXIgc2VxdWVuY2UgcmVwcmVzZW50ZWQgYnkKICAgICAgICAgIHRoaXMgc3RyaW5nOyA8Y29kZT5mYWxzZTwvY29kZT4gb3RoZXJ3aXNlLgogICAgICAgICAgTm90ZSBhbHNvIHRoYXQgPGNvZGU+dHJ1ZTwvY29kZT4gd2lsbCBiZSByZXR1cm5lZCBpZiB0aGUKICAgICAgICAgIGFyZ3VtZW50IGlzIGFuIGVtcHR5IHN0cmluZyBvciBpcyBlcXVhbCB0byB0aGlzCiAgICAgICAgICA8Y29kZT5TdHJpbmc8L2NvZGU+IG9iamVjdCBhcyBkZXRlcm1pbmVkIGJ5IHRoZQogICAgICAgICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2FwYWNoZS94cGF0aC9vYmplY3RzL1hTdHJpbmcuaHRtbCNlcXVhbHMoamF2YS5sYW5nLk9iamVjdCkiPjxDT0RFPmVxdWFscyhPYmplY3QpPC9DT0RFPjwvQT4gbWV0aG9kLjxEVD48Qj5UaHJvd3M6PC9CPjxERD5qYXZhLmxhbmcuTnVsbFBvaW50ZXJFeGNlcHRpb24gLSBpZiA8Y29kZT5wcmVmaXg8L2NvZGU+IGlzCiAgICAgICAgICA8Y29kZT5udWxsPC9jb2RlPi48L0RMPg0KPC9ERD4NCjwvREw+DQo8SFI+DQoNCjxBIE5BTUU9InN0YXJ0c1dpdGgob3JnLmFwYWNoZS54bWwudXRpbHMuWE1MU3RyaW5nLCBpbnQpIj48IS0tIC0tPjwvQT48SDM+DQpzdGFydHNXaXRoPC9IMz4NCjxQUkU+DQpwdWJsaWMgYm9vbGVhbiA8Qj5zdGFydHNXaXRoPC9CPig8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvYXBhY2hlL3htbC91dGlscy9YTUxTdHJpbmcuaHRtbCI+WE1MU3RyaW5nPC9BPiZuYnNwO3ByZWZpeCwKICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQmbmJzcDt0b2Zmc2V0KTwvUFJFPg0KPERMPg0KPEREPlRlc3RzIGlmIHRoaXMgc3RyaW5nIHN0YXJ0cyB3aXRoIHRoZSBzcGVjaWZpZWQgcHJlZml4IGJlZ2lubmluZwogYSBzcGVjaWZpZWQgaW5kZXguPEREPjxETD4NCjxEVD48Qj5TcGVjaWZpZWQgYnk6IDwvQj48REQ+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2FwYWNoZS94bWwvdXRpbHMvWE1MU3RyaW5nLmh0bWwjc3RhcnRzV2l0aChvcmcuYXBhY2hlLnhtbC51dGlscy5YTUxTdHJpbmcsIGludCkiPnN0YXJ0c1dpdGg8L0E+IGluIGludGVyZmFjZSA8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvYXBhY2hlL3htbC91dGlscy9YTUxTdHJpbmcuaHRtbCI+WE1MU3RyaW5nPC9BPjxEVD48Qj5QYXJhbWV0ZXJzOjwvQj48REQ+PENPREU+cHJlZml4PC9DT0RFPiAtIHRoZSBwcmVmaXguPEREPjxDT0RFPnRvZmZzZXQ8L0NPREU+IC0gd2hlcmUgdG8gYmVnaW4gbG9va2luZyBpbiB0aGUgc3RyaW5nLjxEVD48Qj5SZXR1cm5zOjwvQj48REQ+PGNvZGU+dHJ1ZTwvY29kZT4gaWYgdGhlIGNoYXJhY3RlciBzZXF1ZW5jZSByZXByZXNlbnRlZCBieSB0aGUKICAgICAgICAgIGFyZ3VtZW50IGlzIGEgcHJlZml4IG9mIHRoZSBzdWJzdHJpbmcgb2YgdGhpcyBvYmplY3Qgc3RhcnRpbmcKICAgICAgICAgIGF0IGluZGV4IDxjb2RlPnRvZmZzZXQ8L2NvZGU+OyA8Y29kZT5mYWxzZTwvY29kZT4gb3RoZXJ3aXNlLgogICAgICAgICAgVGhlIHJlc3VsdCBpcyA8Y29kZT5mYWxzZTwvY29kZT4gaWYgPGNvZGU+dG9mZnNldDwvY29kZT4gaXMKICAgICAgICAgIG5lZ2F0aXZlIG9yIGdyZWF0ZXIgdGhhbiB0aGUgbGVuZ3RoIG9mIHRoaXMKICAgICAgICAgIDxjb2RlPlN0cmluZzwvY29kZT4gb2JqZWN0OyBvdGhlcndpc2UgdGhlIHJlc3VsdCBpcyB0aGUgc2FtZQogICAgICAgICAgYXMgdGhlIHJlc3VsdCBvZiB0aGUgZXhwcmVzc2lvbgogICAgICAgICAgPHByZT4KICAgICAgICAgIHRoaXMuc3ViU3RyaW5nKHRvZmZzZXQpLnN0YXJ0c1dpdGgocHJlZml4KQogICAgICAgICAgPC9wcmU+PERUPjxCPlRocm93czo8L0I+PEREPmphdmEubGFuZy5OdWxsUG9pbnRlckV4Y2VwdGlvbiAtIGlmIDxjb2RlPnByZWZpeDwvY29kZT4gaXMKICAgICAgICAgIDxjb2RlPm51bGw8L2NvZGU+LjwvREw+DQo8L0REPg0KPC9ETD4NCjxIUj4NCg0KPEEgTkFNRT0ic3RhcnRzV2l0aChvcmcuYXBhY2hlLnhtbC51dGlscy5YTUxTdHJpbmcpIj48IS0tIC0tPjwvQT48SDM+DQpzdGFydHNXaXRoPC9IMz4NCjxQUkU+DQpwdWJsaWMgYm9vbGVhbiA8Qj5zdGFydHNXaXRoPC9CPig8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvYXBhY2hlL3htbC91dGlscy9YTUxTdHJpbmcuaHRtbCI+WE1MU3RyaW5nPC9BPiZuYnNwO3ByZWZpeCk8L1BSRT4NCjxETD4NCjxERD5UZXN0cyBpZiB0aGlzIHN0cmluZyBzdGFydHMgd2l0aCB0aGUgc3BlY2lmaWVkIHByZWZpeC48REQ+PERMPg0KPERUPjxCPlNwZWNpZmllZCBieTogPC9CPjxERD48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvYXBhY2hlL3htbC91dGlscy9YTUxTdHJpbmcuaHRtbCNzdGFydHNXaXRoKG9yZy5hcGFjaGUueG1sLnV0aWxzLlhNTFN0cmluZykiPnN0YXJ0c1dpdGg8L0E+IGluIGludGVyZmFjZSA8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvYXBhY2hlL3htbC91dGlscy9YTUxTdHJpbmcuaHRtbCI+WE1MU3RyaW5nPC9BPjxEVD48Qj5QYXJhbWV0ZXJzOjwvQj48REQ+PENPREU+cHJlZml4PC9DT0RFPiAtIHRoZSBwcmVmaXguPERUPjxCPlJldHVybnM6PC9CPjxERD48Y29kZT50cnVlPC9jb2RlPiBpZiB0aGUgY2hhcmFjdGVyIHNlcXVlbmNlIHJlcHJlc2VudGVkIGJ5IHRoZQogICAgICAgICAgYXJndW1lbnQgaXMgYSBwcmVmaXggb2YgdGhlIGNoYXJhY3RlciBzZXF1ZW5jZSByZXByZXNlbnRlZCBieQogICAgICAgICAgdGhpcyBzdHJpbmc7IDxjb2RlPmZhbHNlPC9jb2RlPiBvdGhlcndpc2UuCiAgICAgICAgICBOb3RlIGFsc28gdGhhdCA8Y29kZT50cnVlPC9jb2RlPiB3aWxsIGJlIHJldHVybmVkIGlmIHRoZQogICAgICAgICAgYXJndW1lbnQgaXMgYW4gZW1wdHkgc3RyaW5nIG9yIGlzIGVxdWFsIHRvIHRoaXMKICAgICAgICAgIDxjb2RlPlN0cmluZzwvY29kZT4gb2JqZWN0IGFzIGRldGVybWluZWQgYnkgdGhlCiAgICAgICAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvYXBhY2hlL3hwYXRoL29iamVjdHMvWFN0cmluZy5odG1sI2VxdWFscyhqYXZhLmxhbmcuT2JqZWN0KSI+PENPREU+ZXF1YWxzKE9iamVjdCk8L0NPREU+PC9BPiBtZXRob2QuPERUPjxCPlRocm93czo8L0I+PEREPmphdmEubGFuZy5OdWxsUG9pbnRlckV4Y2VwdGlvbiAtIGlmIDxjb2RlPnByZWZpeDwvY29kZT4gaXMKICAgICAgICAgIDxjb2RlPm51bGw8L2NvZGU+LjwvREw+DQo8L0REPg0KPC9ETD4NCjxIUj4NCg0KPEEgTkFNRT0iZW5kc1dpdGgoamF2YS5sYW5nLlN0cmluZykiPjwhLS0gLS0+PC9BPjxIMz4NCmVuZHNXaXRoPC9IMz4NCjxQUkU+DQpwdWJsaWMgYm9vbGVhbiA8Qj5lbmRzV2l0aDwvQj4oamF2YS5sYW5nLlN0cmluZyZuYnNwO3N1ZmZpeCk8L1BSRT4NCjxETD4NCjxERD5UZXN0cyBpZiB0aGlzIHN0cmluZyBlbmRzIHdpdGggdGhlIHNwZWNpZmllZCBzdWZmaXguPEREPjxETD4NCjxEVD48Qj5TcGVjaWZpZWQgYnk6IDwvQj48REQ+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2FwYWNoZS94bWwvdXRpbHMvWE1MU3RyaW5nLmh0bWwjZW5kc1dpdGgoamF2YS5sYW5nLlN0cmluZykiPmVuZHNXaXRoPC9BPiBpbiBpbnRlcmZhY2UgPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2FwYWNoZS94bWwvdXRpbHMvWE1MU3RyaW5nLmh0bWwiPlhNTFN0cmluZzwvQT48RFQ+PEI+UGFyYW1ldGVyczo8L0I+PEREPjxDT0RFPnN1ZmZpeDwvQ09ERT4gLSB0aGUgc3VmZml4LjxEVD48Qj5SZXR1cm5zOjwvQj48REQ+PGNvZGU+dHJ1ZTwvY29kZT4gaWYgdGhlIGNoYXJhY3RlciBzZXF1ZW5jZSByZXByZXNlbnRlZCBieSB0aGUKICAgICAgICAgIGFyZ3VtZW50IGlzIGEgc3VmZml4IG9mIHRoZSBjaGFyYWN0ZXIgc2VxdWVuY2UgcmVwcmVzZW50ZWQgYnkKICAgICAgICAgIHRoaXMgb2JqZWN0OyA8Y29kZT5mYWxzZTwvY29kZT4gb3RoZXJ3aXNlLiBOb3RlIHRoYXQgdGhlCiAgICAgICAgICByZXN1bHQgd2lsbCBiZSA8Y29kZT50cnVlPC9jb2RlPiBpZiB0aGUgYXJndW1lbnQgaXMgdGhlCiAgICAgICAgICBlbXB0eSBzdHJpbmcgb3IgaXMgZXF1YWwgdG8gdGhpcyA8Y29kZT5TdHJpbmc8L2NvZGU+IG9iamVjdAogICAgICAgICAgYXMgZGV0ZXJtaW5lZCBieSB0aGUgPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2FwYWNoZS94cGF0aC9vYmplY3RzL1hTdHJpbmcuaHRtbCNlcXVhbHMoamF2YS5sYW5nLk9iamVjdCkiPjxDT0RFPmVxdWFscyhPYmplY3QpPC9DT0RFPjwvQT4gbWV0aG9kLjxEVD48Qj5UaHJvd3M6PC9CPjxERD5qYXZhLmxhbmcuTnVsbFBvaW50ZXJFeGNlcHRpb24gLSBpZiA8Y29kZT5zdWZmaXg8L2NvZGU+IGlzCiAgICAgICAgICA8Y29kZT5udWxsPC9jb2RlPi48L0RMPg0KPC9ERD4NCjwvREw+DQo8SFI+DQoNCjxBIE5BTUU9Imhhc2hDb2RlKCkiPjwhLS0gLS0+PC9BPjxIMz4NCmhhc2hDb2RlPC9IMz4NCjxQUkU+DQpwdWJsaWMgaW50IDxCPmhhc2hDb2RlPC9CPigpPC9QUkU+DQo8REw+DQo8REQ+UmV0dXJucyBhIGhhc2hjb2RlIGZvciB0aGlzIHN0cmluZy4gVGhlIGhhc2hjb2RlIGZvciBhCiA8Y29kZT5TdHJpbmc8L2NvZGU+IG9iamVjdCBpcyBjb21wdXRlZCBhcwogPGJsb2NrcXVvdGU+PHByZT4KIHNbMF0qMzFeKG4tMSkgKyBzWzFdKjMxXihuLTIpICsgLi4uICsgc1tuLTFdCiA8L3ByZT48L2Jsb2NrcXVvdGU+CiB1c2luZyA8Y29kZT5pbnQ8L2NvZGU+IGFyaXRobWV0aWMsIHdoZXJlIDxjb2RlPnNbaV08L2NvZGU+IGlzIHRoZQogPGk+aTwvaT50aCBjaGFyYWN0ZXIgb2YgdGhlIHN0cmluZywgPGNvZGU+bjwvY29kZT4gaXMgdGhlIGxlbmd0aCBvZgogdGhlIHN0cmluZywgYW5kIDxjb2RlPl48L2NvZGU+IGluZGljYXRlcyBleHBvbmVudGlhdGlvbi4KIChUaGUgaGFzaCB2YWx1ZSBvZiB0aGUgZW1wdHkgc3RyaW5nIGlzIHplcm8uKTxERD48REw+DQo8RFQ+PEI+U3BlY2lmaWVkIGJ5OiA8L0I+PEREPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9hcGFjaGUveG1sL3V0aWxzL1hNTFN0cmluZy5odG1sI2hhc2hDb2RlKCkiPmhhc2hDb2RlPC9BPiBpbiBpbnRlcmZhY2UgPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2FwYWNoZS94bWwvdXRpbHMvWE1MU3RyaW5nLmh0bWwiPlhNTFN0cmluZzwvQT48RFQ+PEI+UmV0dXJuczo8L0I+PEREPmEgaGFzaCBjb2RlIHZhbHVlIGZvciB0aGlzIG9iamVjdC48RFQ+PEI+T3ZlcnJpZGVzOjwvQj48REQ+aGFzaENvZGUgaW4gY2xhc3MgamF2YS5sYW5nLk9iamVjdDwvREw+DQo8L0REPg0KPC9ETD4NCjxIUj4NCg0KPEEgTkFNRT0iaW5kZXhPZihpbnQpIj48IS0tIC0tPjwvQT48SDM+DQppbmRleE9mPC9IMz4NCjxQUkU+DQpwdWJsaWMgaW50IDxCPmluZGV4T2Y8L0I+KGludCZuYnNwO2NoKTwvUFJFPg0KPERMPg0KPEREPlJldHVybnMgdGhlIGluZGV4IHdpdGhpbiB0aGlzIHN0cmluZyBvZiB0aGUgZmlyc3Qgb2NjdXJyZW5jZSBvZiB0aGUKIHNwZWNpZmllZCBjaGFyYWN0ZXIuIElmIGEgY2hhcmFjdGVyIHdpdGggdmFsdWUgPGNvZGU+Y2g8L2NvZGU+IG9jY3VycwogaW4gdGhlIGNoYXJhY3RlciBzZXF1ZW5jZSByZXByZXNlbnRlZCBieSB0aGlzIDxjb2RlPlN0cmluZzwvY29kZT4KIG9iamVjdCwgdGhlbiB0aGUgaW5kZXggb2YgdGhlIGZpcnN0IHN1Y2ggb2NjdXJyZW5jZSBpcyByZXR1cm5lZCAtLQogdGhhdCBpcywgdGhlIHNtYWxsZXN0IHZhbHVlIDxpPms8L2k+IHN1Y2ggdGhhdDoKIDxibG9ja3F1b3RlPjxwcmU+CiB0aGlzLmNoYXJBdCg8aT5rPC9pPikgPT0gY2gKIDwvcHJlPjwvYmxvY2txdW90ZT4KIGlzIDxjb2RlPnRydWU8L2NvZGU+LiBJZiBubyBzdWNoIGNoYXJhY3RlciBvY2N1cnMgaW4gdGhpcyBzdHJpbmcsCiB0aGVuIDxjb2RlPi0xPC9jb2RlPiBpcyByZXR1cm5lZC48REQ+PERMPg0KPERUPjxCPlNwZWNpZmllZCBieTogPC9CPjxERD48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvYXBhY2hlL3htbC91dGlscy9YTUxTdHJpbmcuaHRtbCNpbmRleE9mKGludCkiPmluZGV4T2Y8L0E+IGluIGludGVyZmFjZSA8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvYXBhY2hlL3htbC91dGlscy9YTUxTdHJpbmcuaHRtbCI+WE1MU3RyaW5nPC9BPjxEVD48Qj5QYXJhbWV0ZXJzOjwvQj48REQ+PENPREU+Y2g8L0NPREU+IC0gYSBjaGFyYWN0ZXIuPERUPjxCPlJldHVybnM6PC9CPjxERD50aGUgaW5kZXggb2YgdGhlIGZpcnN0IG9jY3VycmVuY2Ugb2YgdGhlIGNoYXJhY3RlciBpbiB0aGUKICAgICAgICAgIGNoYXJhY3RlciBzZXF1ZW5jZSByZXByZXNlbnRlZCBieSB0aGlzIG9iamVjdCwgb3IKICAgICAgICAgIDxjb2RlPi0xPC9jb2RlPiBpZiB0aGUgY2hhcmFjdGVyIGRvZXMgbm90IG9jY3VyLjwvREw+DQo8L0REPg0KPC9ETD4NCjxIUj4NCg0KPEEgTkFNRT0iaW5kZXhPZihpbnQsIGludCkiPjwhLS0gLS0+PC9BPjxIMz4NCmluZGV4T2Y8L0gzPg0KPFBSRT4NCnB1YmxpYyBpbnQgPEI+aW5kZXhPZjwvQj4oaW50Jm5ic3A7Y2gsCiAgICAgICAgICAgICAgICAgICBpbnQmbmJzcDtmcm9tSW5kZXgpPC9QUkU+DQo8REw+DQo8REQ+UmV0dXJucyB0aGUgaW5kZXggd2l0aGluIHRoaXMgc3RyaW5nIG9mIHRoZSBmaXJzdCBvY2N1cnJlbmNlIG9mIHRoZQogc3BlY2lmaWVkIGNoYXJhY3Rlciwgc3RhcnRpbmcgdGhlIHNlYXJjaCBhdCB0aGUgc3BlY2lmaWVkIGluZGV4LgogPHA+CiBJZiBhIGNoYXJhY3RlciB3aXRoIHZhbHVlIDxjb2RlPmNoPC9jb2RlPiBvY2N1cnMgaW4gdGhlIGNoYXJhY3Rlcgogc2VxdWVuY2UgcmVwcmVzZW50ZWQgYnkgdGhpcyA8Y29kZT5TdHJpbmc8L2NvZGU+IG9iamVjdCBhdCBhbiBpbmRleAogbm8gc21hbGxlciB0aGFuIDxjb2RlPmZyb21JbmRleDwvY29kZT4sIHRoZW4gdGhlIGluZGV4IG9mIHRoZSBmaXJzdAogc3VjaCBvY2N1cnJlbmNlIGlzIHJldHVybmVkLS10aGF0IGlzLCB0aGUgc21hbGxlc3QgdmFsdWUgPGk+azwvaT4KIHN1Y2ggdGhhdDoKIDxibG9ja3F1b3RlPjxwcmU+CiAodGhpcy5jaGFyQXQoPGk+azwvaT4pID09IGNoKSAmJiAoPGk+azwvaT4gPj0gZnJvbUluZGV4KQogPC9wcmU+PC9ibG9ja3F1b3RlPgogaXMgdHJ1ZS4gSWYgbm8gc3VjaCBjaGFyYWN0ZXIgb2NjdXJzIGluIHRoaXMgc3RyaW5nIGF0IG9yIGFmdGVyCiBwb3NpdGlvbiA8Y29kZT5mcm9tSW5kZXg8L2NvZGU+LCB0aGVuIDxjb2RlPi0xPC9jb2RlPiBpcyByZXR1cm5lZC4KIDxwPgogVGhlcmUgaXMgbm8gcmVzdHJpY3Rpb24gb24gdGhlIHZhbHVlIG9mIDxjb2RlPmZyb21JbmRleDwvY29kZT4uIElmIGl0CiBpcyBuZWdhdGl2ZSwgaXQgaGFzIHRoZSBzYW1lIGVmZmVjdCBhcyBpZiBpdCB3ZXJlIHplcm86IHRoaXMgZW50aXJlCiBzdHJpbmcgbWF5IGJlIHNlYXJjaGVkLiBJZiBpdCBpcyBncmVhdGVyIHRoYW4gdGhlIGxlbmd0aCBvZiB0aGlzCiBzdHJpbmcsIGl0IGhhcyB0aGUgc2FtZSBlZmZlY3QgYXMgaWYgaXQgd2VyZSBlcXVhbCB0byB0aGUgbGVuZ3RoIG9mCiB0aGlzIHN0cmluZzogPGNvZGU+LTE8L2NvZGU+IGlzIHJldHVybmVkLjxERD48REw+DQo8RFQ+PEI+U3BlY2lmaWVkIGJ5OiA8L0I+PEREPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9hcGFjaGUveG1sL3V0aWxzL1hNTFN0cmluZy5odG1sI2luZGV4T2YoaW50LCBpbnQpIj5pbmRleE9mPC9BPiBpbiBpbnRlcmZhY2UgPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2FwYWNoZS94bWwvdXRpbHMvWE1MU3RyaW5nLmh0bWwiPlhNTFN0cmluZzwvQT48RFQ+PEI+UGFyYW1ldGVyczo8L0I+PEREPjxDT0RFPmNoPC9DT0RFPiAtIGEgY2hhcmFjdGVyLjxERD48Q09ERT5mcm9tSW5kZXg8L0NPREU+IC0gdGhlIGluZGV4IHRvIHN0YXJ0IHRoZSBzZWFyY2ggZnJvbS48RFQ+PEI+UmV0dXJuczo8L0I+PEREPnRoZSBpbmRleCBvZiB0aGUgZmlyc3Qgb2NjdXJyZW5jZSBvZiB0aGUgY2hhcmFjdGVyIGluIHRoZQogICAgICAgICAgY2hhcmFjdGVyIHNlcXVlbmNlIHJlcHJlc2VudGVkIGJ5IHRoaXMgb2JqZWN0IHRoYXQgaXMgZ3JlYXRlcgogICAgICAgICAgdGhhbiBvciBlcXVhbCB0byA8Y29kZT5mcm9tSW5kZXg8L2NvZGU+LCBvciA8Y29kZT4tMTwvY29kZT4KICAgICAgICAgIGlmIHRoZSBjaGFyYWN0ZXIgZG9lcyBub3Qgb2NjdXIuPC9ETD4NCjwvREQ+DQo8L0RMPg0KPEhSPg0KDQo8QSBOQU1FPSJsYXN0SW5kZXhPZihpbnQpIj48IS0tIC0tPjwvQT48SDM+DQpsYXN0SW5kZXhPZjwvSDM+DQo8UFJFPg0KcHVibGljIGludCA8Qj5sYXN0SW5kZXhPZjwvQj4oaW50Jm5ic3A7Y2gpPC9QUkU+DQo8REw+DQo8REQ+UmV0dXJucyB0aGUgaW5kZXggd2l0aGluIHRoaXMgc3RyaW5nIG9mIHRoZSBsYXN0IG9jY3VycmVuY2Ugb2YgdGhlCiBzcGVjaWZpZWQgY2hhcmFjdGVyLiBUaGF0IGlzLCB0aGUgaW5kZXggcmV0dXJuZWQgaXMgdGhlIGxhcmdlc3QKIHZhbHVlIDxpPms8L2k+IHN1Y2ggdGhhdDoKIDxibG9ja3F1b3RlPjxwcmU+CiB0aGlzLmNoYXJBdCg8aT5rPC9pPikgPT0gY2gKIDwvcHJlPjwvYmxvY2txdW90ZT4KIGlzIHRydWUuCiBUaGUgU3RyaW5nIGlzIHNlYXJjaGVkIGJhY2t3YXJkcyBzdGFydGluZyBhdCB0aGUgbGFzdCBjaGFyYWN0ZXIuPEREPjxETD4NCjxEVD48Qj5TcGVjaWZpZWQgYnk6IDwvQj48REQ+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2FwYWNoZS94bWwvdXRpbHMvWE1MU3RyaW5nLmh0bWwjbGFzdEluZGV4T2YoaW50KSI+bGFzdEluZGV4T2Y8L0E+IGluIGludGVyZmFjZSA8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvYXBhY2hlL3htbC91dGlscy9YTUxTdHJpbmcuaHRtbCI+WE1MU3RyaW5nPC9BPjxEVD48Qj5QYXJhbWV0ZXJzOjwvQj48REQ+PENPREU+Y2g8L0NPREU+IC0gYSBjaGFyYWN0ZXIuPERUPjxCPlJldHVybnM6PC9CPjxERD50aGUgaW5kZXggb2YgdGhlIGxhc3Qgb2NjdXJyZW5jZSBvZiB0aGUgY2hhcmFjdGVyIGluIHRoZQogICAgICAgICAgY2hhcmFjdGVyIHNlcXVlbmNlIHJlcHJlc2VudGVkIGJ5IHRoaXMgb2JqZWN0LCBvcgogICAgICAgICAgPGNvZGU+LTE8L2NvZGU+IGlmIHRoZSBjaGFyYWN0ZXIgZG9lcyBub3Qgb2NjdXIuPC9ETD4NCjwvREQ+DQo8L0RMPg0KPEhSPg0KDQo8QSBOQU1FPSJsYXN0SW5kZXhPZihpbnQsIGludCkiPjwhLS0gLS0+PC9BPjxIMz4NCmxhc3RJbmRleE9mPC9IMz4NCjxQUkU+DQpwdWJsaWMgaW50IDxCPmxhc3RJbmRleE9mPC9CPihpbnQmbmJzcDtjaCwKICAgICAgICAgICAgICAgICAgICAgICBpbnQmbmJzcDtmcm9tSW5kZXgpPC9QUkU+DQo8REw+DQo8REQ+UmV0dXJucyB0aGUgaW5kZXggd2l0aGluIHRoaXMgc3RyaW5nIG9mIHRoZSBsYXN0IG9jY3VycmVuY2Ugb2YgdGhlCiBzcGVjaWZpZWQgY2hhcmFjdGVyLCBzZWFyY2hpbmcgYmFja3dhcmQgc3RhcnRpbmcgYXQgdGhlIHNwZWNpZmllZAogaW5kZXguIFRoYXQgaXMsIHRoZSBpbmRleCByZXR1cm5lZCBpcyB0aGUgbGFyZ2VzdCB2YWx1ZSA8aT5rPC9pPgogc3VjaCB0aGF0OgogPGJsb2NrcXVvdGU+PHByZT4KIHRoaXMuY2hhckF0KGspID09IGNoKSAmJiAoayA8PSBmcm9tSW5kZXgpCiA8L3ByZT48L2Jsb2NrcXVvdGU+CiBpcyB0cnVlLjxERD48REw+DQo8RFQ+PEI+U3BlY2lmaWVkIGJ5OiA8L0I+PEREPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9hcGFjaGUveG1sL3V0aWxzL1hNTFN0cmluZy5odG1sI2xhc3RJbmRleE9mKGludCwgaW50KSI+bGFzdEluZGV4T2Y8L0E+IGluIGludGVyZmFjZSA8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvYXBhY2hlL3htbC91dGlscy9YTUxTdHJpbmcuaHRtbCI+WE1MU3RyaW5nPC9BPjxEVD48Qj5QYXJhbWV0ZXJzOjwvQj48REQ+PENPREU+Y2g8L0NPREU+IC0gYSBjaGFyYWN0ZXIuPEREPjxDT0RFPmZyb21JbmRleDwvQ09ERT4gLSB0aGUgaW5kZXggdG8gc3RhcnQgdGhlIHNlYXJjaCBmcm9tLiBUaGVyZSBpcyBubwogICAgICAgICAgcmVzdHJpY3Rpb24gb24gdGhlIHZhbHVlIG9mIDxjb2RlPmZyb21JbmRleDwvY29kZT4uIElmIGl0IGlzCiAgICAgICAgICBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gdGhlIGxlbmd0aCBvZiB0aGlzIHN0cmluZywgaXQgaGFzCiAgICAgICAgICB0aGUgc2FtZSBlZmZlY3QgYXMgaWYgaXQgd2VyZSBlcXVhbCB0byBvbmUgbGVzcyB0aGFuIHRoZQogICAgICAgICAgbGVuZ3RoIG9mIHRoaXMgc3RyaW5nOiB0aGlzIGVudGlyZSBzdHJpbmcgbWF5IGJlIHNlYXJjaGVkLgogICAgICAgICAgSWYgaXQgaXMgbmVnYXRpdmUsIGl0IGhhcyB0aGUgc2FtZSBlZmZlY3QgYXMgaWYgaXQgd2VyZSAtMToKICAgICAgICAgIC0xIGlzIHJldHVybmVkLjxEVD48Qj5SZXR1cm5zOjwvQj48REQ+dGhlIGluZGV4IG9mIHRoZSBsYXN0IG9jY3VycmVuY2Ugb2YgdGhlIGNoYXJhY3RlciBpbiB0aGUKICAgICAgICAgIGNoYXJhY3RlciBzZXF1ZW5jZSByZXByZXNlbnRlZCBieSB0aGlzIG9iamVjdCB0aGF0IGlzIGxlc3MKICAgICAgICAgIHRoYW4gb3IgZXF1YWwgdG8gPGNvZGU+ZnJvbUluZGV4PC9jb2RlPiwgb3IgPGNvZGU+LTE8L2NvZGU+CiAgICAgICAgICBpZiB0aGUgY2hhcmFjdGVyIGRvZXMgbm90IG9jY3VyIGJlZm9yZSB0aGF0IHBvaW50LjwvREw+DQo8L0REPg0KPC9ETD4NCjxIUj4NCg0KPEEgTkFNRT0iaW5kZXhPZihqYXZhLmxhbmcuU3RyaW5nKSI+PCEtLSAtLT48L0E+PEgzPg0KaW5kZXhPZjwvSDM+DQo8UFJFPg0KcHVibGljIGludCA8Qj5pbmRleE9mPC9CPihqYXZhLmxhbmcuU3RyaW5nJm5ic3A7c3RyKTwvUFJFPg0KPERMPg0KPEREPlJldHVybnMgdGhlIGluZGV4IHdpdGhpbiB0aGlzIHN0cmluZyBvZiB0aGUgZmlyc3Qgb2NjdXJyZW5jZSBvZiB0aGUKIHNwZWNpZmllZCBzdWJzdHJpbmcuIFRoZSBpbnRlZ2VyIHJldHVybmVkIGlzIHRoZSBzbWFsbGVzdCB2YWx1ZQogPGk+azwvaT4gc3VjaCB0aGF0OgogPGJsb2NrcXVvdGU+PHByZT4KIHRoaXMuc3RhcnRzV2l0aChzdHIsIDxpPms8L2k+KQogPC9wcmU+PC9ibG9ja3F1b3RlPgogaXMgPGNvZGU+dHJ1ZTwvY29kZT4uPEREPjxETD4NCjxEVD48Qj5TcGVjaWZpZWQgYnk6IDwvQj48REQ+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2FwYWNoZS94bWwvdXRpbHMvWE1MU3RyaW5nLmh0bWwjaW5kZXhPZihqYXZhLmxhbmcuU3RyaW5nKSI+aW5kZXhPZjwvQT4gaW4gaW50ZXJmYWNlIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9hcGFjaGUveG1sL3V0aWxzL1hNTFN0cmluZy5odG1sIj5YTUxTdHJpbmc8L0E+PERUPjxCPlBhcmFtZXRlcnM6PC9CPjxERD48Q09ERT5zdHI8L0NPREU+IC0gYW55IHN0cmluZy48RFQ+PEI+UmV0dXJuczo8L0I+PEREPmlmIHRoZSBzdHJpbmcgYXJndW1lbnQgb2NjdXJzIGFzIGEgc3Vic3RyaW5nIHdpdGhpbiB0aGlzCiAgICAgICAgICBvYmplY3QsIHRoZW4gdGhlIGluZGV4IG9mIHRoZSBmaXJzdCBjaGFyYWN0ZXIgb2YgdGhlIGZpcnN0CiAgICAgICAgICBzdWNoIHN1YnN0cmluZyBpcyByZXR1cm5lZDsgaWYgaXQgZG9lcyBub3Qgb2NjdXIgYXMgYQogICAgICAgICAgc3Vic3RyaW5nLCA8Y29kZT4tMTwvY29kZT4gaXMgcmV0dXJuZWQuPERUPjxCPlRocm93czo8L0I+PEREPmphdmEubGFuZy5OdWxsUG9pbnRlckV4Y2VwdGlvbiAtIGlmIDxjb2RlPnN0cjwvY29kZT4gaXMKICAgICAgICAgIDxjb2RlPm51bGw8L2NvZGU+LjwvREw+DQo8L0REPg0KPC9ETD4NCjxIUj4NCg0KPEEgTkFNRT0iaW5kZXhPZihvcmcuYXBhY2hlLnhtbC51dGlscy5YTUxTdHJpbmcpIj48IS0tIC0tPjwvQT48SDM+DQppbmRleE9mPC9IMz4NCjxQUkU+DQpwdWJsaWMgaW50IDxCPmluZGV4T2Y8L0I+KDxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9hcGFjaGUveG1sL3V0aWxzL1hNTFN0cmluZy5odG1sIj5YTUxTdHJpbmc8L0E+Jm5ic3A7c3RyKTwvUFJFPg0KPERMPg0KPEREPlJldHVybnMgdGhlIGluZGV4IHdpdGhpbiB0aGlzIHN0cmluZyBvZiB0aGUgZmlyc3Qgb2NjdXJyZW5jZSBvZiB0aGUKIHNwZWNpZmllZCBzdWJzdHJpbmcuIFRoZSBpbnRlZ2VyIHJldHVybmVkIGlzIHRoZSBzbWFsbGVzdCB2YWx1ZQogPGk+azwvaT4gc3VjaCB0aGF0OgogPGJsb2NrcXVvdGU+PHByZT4KIHRoaXMuc3RhcnRzV2l0aChzdHIsIDxpPms8L2k+KQogPC9wcmU+PC9ibG9ja3F1b3RlPgogaXMgPGNvZGU+dHJ1ZTwvY29kZT4uPEREPjxETD4NCjxEVD48Qj5TcGVjaWZpZWQgYnk6IDwvQj48REQ+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2FwYWNoZS94bWwvdXRpbHMvWE1MU3RyaW5nLmh0bWwjaW5kZXhPZihvcmcuYXBhY2hlLnhtbC51dGlscy5YTUxTdHJpbmcpIj5pbmRleE9mPC9BPiBpbiBpbnRlcmZhY2UgPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2FwYWNoZS94bWwvdXRpbHMvWE1MU3RyaW5nLmh0bWwiPlhNTFN0cmluZzwvQT48RFQ+PEI+UGFyYW1ldGVyczo8L0I+PEREPjxDT0RFPnN0cjwvQ09ERT4gLSBhbnkgc3RyaW5nLjxEVD48Qj5SZXR1cm5zOjwvQj48REQ+aWYgdGhlIHN0cmluZyBhcmd1bWVudCBvY2N1cnMgYXMgYSBzdWJzdHJpbmcgd2l0aGluIHRoaXMKICAgICAgICAgIG9iamVjdCwgdGhlbiB0aGUgaW5kZXggb2YgdGhlIGZpcnN0IGNoYXJhY3RlciBvZiB0aGUgZmlyc3QKICAgICAgICAgIHN1Y2ggc3Vic3RyaW5nIGlzIHJldHVybmVkOyBpZiBpdCBkb2VzIG5vdCBvY2N1ciBhcyBhCiAgICAgICAgICBzdWJzdHJpbmcsIDxjb2RlPi0xPC9jb2RlPiBpcyByZXR1cm5lZC48RFQ+PEI+VGhyb3dzOjwvQj48REQ+amF2YS5sYW5nLk51bGxQb2ludGVyRXhjZXB0aW9uIC0gaWYgPGNvZGU+c3RyPC9jb2RlPiBpcwogICAgICAgICAgPGNvZGU+bnVsbDwvY29kZT4uPC9ETD4NCjwvREQ+DQo8L0RMPg0KPEhSPg0KDQo8QSBOQU1FPSJpbmRleE9mKGphdmEubGFuZy5TdHJpbmcsIGludCkiPjwhLS0gLS0+PC9BPjxIMz4NCmluZGV4T2Y8L0gzPg0KPFBSRT4NCnB1YmxpYyBpbnQgPEI+aW5kZXhPZjwvQj4oamF2YS5sYW5nLlN0cmluZyZuYnNwO3N0ciwKICAgICAgICAgICAgICAgICAgIGludCZuYnNwO2Zyb21JbmRleCk8L1BSRT4NCjxETD4NCjxERD5SZXR1cm5zIHRoZSBpbmRleCB3aXRoaW4gdGhpcyBzdHJpbmcgb2YgdGhlIGZpcnN0IG9jY3VycmVuY2Ugb2YgdGhlCiBzcGVjaWZpZWQgc3Vic3RyaW5nLCBzdGFydGluZyBhdCB0aGUgc3BlY2lmaWVkIGluZGV4LiBUaGUgaW50ZWdlcgogcmV0dXJuZWQgaXMgdGhlIHNtYWxsZXN0IHZhbHVlIDxpPms8L2k+IHN1Y2ggdGhhdDoKIDxibG9ja3F1b3RlPjxwcmU+CiB0aGlzLnN0YXJ0c1dpdGgoc3RyLCA8aT5rPC9pPikgJiYgKDxpPms8L2k+ID49IGZyb21JbmRleCkKIDwvcHJlPjwvYmxvY2txdW90ZT4KIGlzIDxjb2RlPnRydWU8L2NvZGU+LgogPHA+CiBUaGVyZSBpcyBubyByZXN0cmljdGlvbiBvbiB0aGUgdmFsdWUgb2YgPGNvZGU+ZnJvbUluZGV4PC9jb2RlPi4gSWYKIGl0IGlzIG5lZ2F0aXZlLCBpdCBoYXMgdGhlIHNhbWUgZWZmZWN0IGFzIGlmIGl0IHdlcmUgemVybzogdGhpcyBlbnRpcmUKIHN0cmluZyBtYXkgYmUgc2VhcmNoZWQuIElmIGl0IGlzIGdyZWF0ZXIgdGhhbiB0aGUgbGVuZ3RoIG9mIHRoaXMKIHN0cmluZywgaXQgaGFzIHRoZSBzYW1lIGVmZmVjdCBhcyBpZiBpdCB3ZXJlIGVxdWFsIHRvIHRoZSBsZW5ndGggb2YKIHRoaXMgc3RyaW5nOiA8Y29kZT4tMTwvY29kZT4gaXMgcmV0dXJuZWQuPEREPjxETD4NCjxEVD48Qj5TcGVjaWZpZWQgYnk6IDwvQj48REQ+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2FwYWNoZS94bWwvdXRpbHMvWE1MU3RyaW5nLmh0bWwjaW5kZXhPZihqYXZhLmxhbmcuU3RyaW5nLCBpbnQpIj5pbmRleE9mPC9BPiBpbiBpbnRlcmZhY2UgPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2FwYWNoZS94bWwvdXRpbHMvWE1MU3RyaW5nLmh0bWwiPlhNTFN0cmluZzwvQT48RFQ+PEI+UGFyYW1ldGVyczo8L0I+PEREPjxDT0RFPnN0cjwvQ09ERT4gLSB0aGUgc3Vic3RyaW5nIHRvIHNlYXJjaCBmb3IuPEREPjxDT0RFPmZyb21JbmRleDwvQ09ERT4gLSB0aGUgaW5kZXggdG8gc3RhcnQgdGhlIHNlYXJjaCBmcm9tLjxEVD48Qj5SZXR1cm5zOjwvQj48REQ+SWYgdGhlIHN0cmluZyBhcmd1bWVudCBvY2N1cnMgYXMgYSBzdWJzdHJpbmcgd2l0aGluIHRoaXMKICAgICAgICAgIG9iamVjdCBhdCBhIHN0YXJ0aW5nIGluZGV4IG5vIHNtYWxsZXIgdGhhbgogICAgICAgICAgPGNvZGU+ZnJvbUluZGV4PC9jb2RlPiwgdGhlbiB0aGUgaW5kZXggb2YgdGhlIGZpcnN0IGNoYXJhY3RlcgogICAgICAgICAgb2YgdGhlIGZpcnN0IHN1Y2ggc3Vic3RyaW5nIGlzIHJldHVybmVkLiBJZiBpdCBkb2VzIG5vdCBvY2N1cgogICAgICAgICAgYXMgYSBzdWJzdHJpbmcgc3RhcnRpbmcgYXQgPGNvZGU+ZnJvbUluZGV4PC9jb2RlPiBvciBiZXlvbmQsCiAgICAgICAgICA8Y29kZT4tMTwvY29kZT4gaXMgcmV0dXJuZWQuPERUPjxCPlRocm93czo8L0I+PEREPmphdmEubGFuZy5OdWxsUG9pbnRlckV4Y2VwdGlvbiAtIGlmIDxjb2RlPnN0cjwvY29kZT4gaXMKICAgICAgICAgIDxjb2RlPm51bGw8L2NvZGU+PC9ETD4NCjwvREQ+DQo8L0RMPg0KPEhSPg0KDQo8QSBOQU1FPSJsYXN0SW5kZXhPZihqYXZhLmxhbmcuU3RyaW5nKSI+PCEtLSAtLT48L0E+PEgzPg0KbGFzdEluZGV4T2Y8L0gzPg0KPFBSRT4NCnB1YmxpYyBpbnQgPEI+bGFzdEluZGV4T2Y8L0I+KGphdmEubGFuZy5TdHJpbmcmbmJzcDtzdHIpPC9QUkU+DQo8REw+DQo8REQ+UmV0dXJucyB0aGUgaW5kZXggd2l0aGluIHRoaXMgc3RyaW5nIG9mIHRoZSByaWdodG1vc3Qgb2NjdXJyZW5jZQogb2YgdGhlIHNwZWNpZmllZCBzdWJzdHJpbmcuICBUaGUgcmlnaHRtb3N0IGVtcHR5IHN0cmluZyAiIiBpcwogY29uc2lkZXJlZCB0byBvY2N1ciBhdCB0aGUgaW5kZXggdmFsdWUgPGNvZGU+dGhpcy5sZW5ndGgoKTwvY29kZT4uCiBUaGUgcmV0dXJuZWQgaW5kZXggaXMgdGhlIGxhcmdlc3QgdmFsdWUgPGk+azwvaT4gc3VjaCB0aGF0CiA8YmxvY2txdW90ZT48cHJlPgogdGhpcy5zdGFydHNXaXRoKHN0ciwgaykKIDwvcHJlPjwvYmxvY2txdW90ZT4KIGlzIHRydWUuPEREPjxETD4NCjxEVD48Qj5TcGVjaWZpZWQgYnk6IDwvQj48REQ+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2FwYWNoZS94bWwvdXRpbHMvWE1MU3RyaW5nLmh0bWwjbGFzdEluZGV4T2YoamF2YS5sYW5nLlN0cmluZykiPmxhc3RJbmRleE9mPC9BPiBpbiBpbnRlcmZhY2UgPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2FwYWNoZS94bWwvdXRpbHMvWE1MU3RyaW5nLmh0bWwiPlhNTFN0cmluZzwvQT48RFQ+PEI+UGFyYW1ldGVyczo8L0I+PEREPjxDT0RFPnN0cjwvQ09ERT4gLSB0aGUgc3Vic3RyaW5nIHRvIHNlYXJjaCBmb3IuPERUPjxCPlJldHVybnM6PC9CPjxERD5pZiB0aGUgc3RyaW5nIGFyZ3VtZW50IG9jY3VycyBvbmUgb3IgbW9yZSB0aW1lcyBhcyBhIHN1YnN0cmluZwogICAgICAgICAgd2l0aGluIHRoaXMgb2JqZWN0LCB0aGVuIHRoZSBpbmRleCBvZiB0aGUgZmlyc3QgY2hhcmFjdGVyIG9mCiAgICAgICAgICB0aGUgbGFzdCBzdWNoIHN1YnN0cmluZyBpcyByZXR1cm5lZC4gSWYgaXQgZG9lcyBub3Qgb2NjdXIgYXMKICAgICAgICAgIGEgc3Vic3RyaW5nLCA8Y29kZT4tMTwvY29kZT4gaXMgcmV0dXJuZWQuPERUPjxCPlRocm93czo8L0I+PEREPmphdmEubGFuZy5OdWxsUG9pbnRlckV4Y2VwdGlvbiAtIGlmIDxjb2RlPnN0cjwvY29kZT4gaXMKICAgICAgICAgIDxjb2RlPm51bGw8L2NvZGU+LjwvREw+DQo8L0REPg0KPC9ETD4NCjxIUj4NCg0KPEEgTkFNRT0ibGFzdEluZGV4T2YoamF2YS5sYW5nLlN0cmluZywgaW50KSI+PCEtLSAtLT48L0E+PEgzPg0KbGFzdEluZGV4T2Y8L0gzPg0KPFBSRT4NCnB1YmxpYyBpbnQgPEI+bGFzdEluZGV4T2Y8L0I+KGphdmEubGFuZy5TdHJpbmcmbmJzcDtzdHIsCiAgICAgICAgICAgICAgICAgICAgICAgaW50Jm5ic3A7ZnJvbUluZGV4KTwvUFJFPg0KPERMPg0KPEREPlJldHVybnMgdGhlIGluZGV4IHdpdGhpbiB0aGlzIHN0cmluZyBvZiB0aGUgbGFzdCBvY2N1cnJlbmNlIG9mCiB0aGUgc3BlY2lmaWVkIHN1YnN0cmluZy48REQ+PERMPg0KPERUPjxCPlNwZWNpZmllZCBieTogPC9CPjxERD48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvYXBhY2hlL3htbC91dGlscy9YTUxTdHJpbmcuaHRtbCNsYXN0SW5kZXhPZihqYXZhLmxhbmcuU3RyaW5nLCBpbnQpIj5sYXN0SW5kZXhPZjwvQT4gaW4gaW50ZXJmYWNlIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9hcGFjaGUveG1sL3V0aWxzL1hNTFN0cmluZy5odG1sIj5YTUxTdHJpbmc8L0E+PERUPjxCPlBhcmFtZXRlcnM6PC9CPjxERD48Q09ERT5zdHI8L0NPREU+IC0gdGhlIHN1YnN0cmluZyB0byBzZWFyY2ggZm9yLjxERD48Q09ERT5mcm9tSW5kZXg8L0NPREU+IC0gdGhlIGluZGV4IHRvIHN0YXJ0IHRoZSBzZWFyY2ggZnJvbS4gVGhlcmUgaXMgbm8KICAgICAgICAgIHJlc3RyaWN0aW9uIG9uIHRoZSB2YWx1ZSBvZiBmcm9tSW5kZXguIElmIGl0IGlzIGdyZWF0ZXIgdGhhbgogICAgICAgICAgdGhlIGxlbmd0aCBvZiB0aGlzIHN0cmluZywgaXQgaGFzIHRoZSBzYW1lIGVmZmVjdCBhcyBpZiBpdAogICAgICAgICAgd2VyZSBlcXVhbCB0byB0aGUgbGVuZ3RoIG9mIHRoaXMgc3RyaW5nOiB0aGlzIGVudGlyZSBzdHJpbmcKICAgICAgICAgIG1heSBiZSBzZWFyY2hlZC4gSWYgaXQgaXMgbmVnYXRpdmUsIGl0IGhhcyB0aGUgc2FtZSBlZmZlY3QKICAgICAgICAgIGFzIGlmIGl0IHdlcmUgLTE6IC0xIGlzIHJldHVybmVkLjxEVD48Qj5SZXR1cm5zOjwvQj48REQ+SWYgdGhlIHN0cmluZyBhcmd1bWVudCBvY2N1cnMgb25lIG9yIG1vcmUgdGltZXMgYXMgYSBzdWJzdHJpbmcKICAgICAgICAgIHdpdGhpbiB0aGlzIG9iamVjdCBhdCBhIHN0YXJ0aW5nIGluZGV4IG5vIGdyZWF0ZXIgdGhhbgogICAgICAgICAgPGNvZGU+ZnJvbUluZGV4PC9jb2RlPiwgdGhlbiB0aGUgaW5kZXggb2YgdGhlIGZpcnN0IGNoYXJhY3RlciBvZgogICAgICAgICAgdGhlIGxhc3Qgc3VjaCBzdWJzdHJpbmcgaXMgcmV0dXJuZWQuIElmIGl0IGRvZXMgbm90IG9jY3VyIGFzIGEKICAgICAgICAgIHN1YnN0cmluZyBzdGFydGluZyBhdCA8Y29kZT5mcm9tSW5kZXg8L2NvZGU+IG9yIGVhcmxpZXIsCiAgICAgICAgICA8Y29kZT4tMTwvY29kZT4gaXMgcmV0dXJuZWQuPERUPjxCPlRocm93czo8L0I+PEREPmphdmEubGFuZy5OdWxsUG9pbnRlckV4Y2VwdGlvbiAtIGlmIDxjb2RlPnN0cjwvY29kZT4gaXMKICAgICAgICAgIDxjb2RlPm51bGw8L2NvZGU+LjwvREw+DQo8L0REPg0KPC9ETD4NCjxIUj4NCg0KPEEgTkFNRT0ic3Vic3RyaW5nKGludCkiPjwhLS0gLS0+PC9BPjxIMz4NCnN1YnN0cmluZzwvSDM+DQo8UFJFPg0KcHVibGljIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9hcGFjaGUveG1sL3V0aWxzL1hNTFN0cmluZy5odG1sIj5YTUxTdHJpbmc8L0E+IDxCPnN1YnN0cmluZzwvQj4oaW50Jm5ic3A7YmVnaW5JbmRleCk8L1BSRT4NCjxETD4NCjxERD5SZXR1cm5zIGEgbmV3IHN0cmluZyB0aGF0IGlzIGEgc3Vic3RyaW5nIG9mIHRoaXMgc3RyaW5nLiBUaGUKIHN1YnN0cmluZyBiZWdpbnMgd2l0aCB0aGUgY2hhcmFjdGVyIGF0IHRoZSBzcGVjaWZpZWQgaW5kZXggYW5kCiBleHRlbmRzIHRvIHRoZSBlbmQgb2YgdGhpcyBzdHJpbmcuIDxwPgogRXhhbXBsZXM6CiA8YmxvY2txdW90ZT48cHJlPgogInVuaGFwcHkiLnN1YnN0cmluZygyKSByZXR1cm5zICJoYXBweSIKICJIYXJiaXNvbiIuc3Vic3RyaW5nKDMpIHJldHVybnMgImJpc29uIgogImVtcHRpbmVzcyIuc3Vic3RyaW5nKDkpIHJldHVybnMgIiIgKGFuIGVtcHR5IHN0cmluZykKIDwvcHJlPjwvYmxvY2txdW90ZT48REQ+PERMPg0KPERUPjxCPlNwZWNpZmllZCBieTogPC9CPjxERD48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvYXBhY2hlL3htbC91dGlscy9YTUxTdHJpbmcuaHRtbCNzdWJzdHJpbmcoaW50KSI+c3Vic3RyaW5nPC9BPiBpbiBpbnRlcmZhY2UgPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2FwYWNoZS94bWwvdXRpbHMvWE1MU3RyaW5nLmh0bWwiPlhNTFN0cmluZzwvQT48RFQ+PEI+UGFyYW1ldGVyczo8L0I+PEREPjxDT0RFPmJlZ2luSW5kZXg8L0NPREU+IC0gdGhlIGJlZ2lubmluZyBpbmRleCwgaW5jbHVzaXZlLjxEVD48Qj5SZXR1cm5zOjwvQj48REQ+dGhlIHNwZWNpZmllZCBzdWJzdHJpbmcuPERUPjxCPlRocm93czo8L0I+PEREPmphdmEubGFuZy5JbmRleE91dE9mQm91bmRzRXhjZXB0aW9uIC0gaWYKICAgICAgICAgICAgIDxjb2RlPmJlZ2luSW5kZXg8L2NvZGU+IGlzIG5lZ2F0aXZlIG9yIGxhcmdlciB0aGFuIHRoZQogICAgICAgICAgICAgbGVuZ3RoIG9mIHRoaXMgPGNvZGU+U3RyaW5nPC9jb2RlPiBvYmplY3QuPC9ETD4NCjwvREQ+DQo8L0RMPg0KPEhSPg0KDQo8QSBOQU1FPSJzdWJzdHJpbmcoaW50LCBpbnQpIj48IS0tIC0tPjwvQT48SDM+DQpzdWJzdHJpbmc8L0gzPg0KPFBSRT4NCnB1YmxpYyA8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvYXBhY2hlL3htbC91dGlscy9YTUxTdHJpbmcuaHRtbCI+WE1MU3RyaW5nPC9BPiA8Qj5zdWJzdHJpbmc8L0I+KGludCZuYnNwO2JlZ2luSW5kZXgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCZuYnNwO2VuZEluZGV4KTwvUFJFPg0KPERMPg0KPEREPlJldHVybnMgYSBuZXcgc3RyaW5nIHRoYXQgaXMgYSBzdWJzdHJpbmcgb2YgdGhpcyBzdHJpbmcuIFRoZQogc3Vic3RyaW5nIGJlZ2lucyBhdCB0aGUgc3BlY2lmaWVkIDxjb2RlPmJlZ2luSW5kZXg8L2NvZGU+IGFuZAogZXh0ZW5kcyB0byB0aGUgY2hhcmFjdGVyIGF0IGluZGV4IDxjb2RlPmVuZEluZGV4IC0gMTwvY29kZT4uCiBUaHVzIHRoZSBsZW5ndGggb2YgdGhlIHN1YnN0cmluZyBpcyA8Y29kZT5lbmRJbmRleC1iZWdpbkluZGV4PC9jb2RlPi48REQ+PERMPg0KPERUPjxCPlNwZWNpZmllZCBieTogPC9CPjxERD48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvYXBhY2hlL3htbC91dGlscy9YTUxTdHJpbmcuaHRtbCNzdWJzdHJpbmcoaW50LCBpbnQpIj5zdWJzdHJpbmc8L0E+IGluIGludGVyZmFjZSA8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvYXBhY2hlL3htbC91dGlscy9YTUxTdHJpbmcuaHRtbCI+WE1MU3RyaW5nPC9BPjxEVD48Qj5QYXJhbWV0ZXJzOjwvQj48REQ+PENPREU+YmVnaW5JbmRleDwvQ09ERT4gLSB0aGUgYmVnaW5uaW5nIGluZGV4LCBpbmNsdXNpdmUuPEREPjxDT0RFPmVuZEluZGV4PC9DT0RFPiAtIHRoZSBlbmRpbmcgaW5kZXgsIGV4Y2x1c2l2ZS48RFQ+PEI+UmV0dXJuczo8L0I+PEREPnRoZSBzcGVjaWZpZWQgc3Vic3RyaW5nLjxEVD48Qj5UaHJvd3M6PC9CPjxERD5qYXZhLmxhbmcuSW5kZXhPdXRPZkJvdW5kc0V4Y2VwdGlvbiAtIGlmIHRoZQogICAgICAgICAgICAgPGNvZGU+YmVnaW5JbmRleDwvY29kZT4gaXMgbmVnYXRpdmUsIG9yCiAgICAgICAgICAgICA8Y29kZT5lbmRJbmRleDwvY29kZT4gaXMgbGFyZ2VyIHRoYW4gdGhlIGxlbmd0aCBvZgogICAgICAgICAgICAgdGhpcyA8Y29kZT5TdHJpbmc8L2NvZGU+IG9iamVjdCwgb3IKICAgICAgICAgICAgIDxjb2RlPmJlZ2luSW5kZXg8L2NvZGU+IGlzIGxhcmdlciB0aGFuCiAgICAgICAgICAgICA8Y29kZT5lbmRJbmRleDwvY29kZT4uPC9ETD4NCjwvREQ+DQo8L0RMPg0KPEhSPg0KDQo8QSBOQU1FPSJjb25jYXQoamF2YS5sYW5nLlN0cmluZykiPjwhLS0gLS0+PC9BPjxIMz4NCmNvbmNhdDwvSDM+DQo8UFJFPg0KcHVibGljIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9hcGFjaGUveG1sL3V0aWxzL1hNTFN0cmluZy5odG1sIj5YTUxTdHJpbmc8L0E+IDxCPmNvbmNhdDwvQj4oamF2YS5sYW5nLlN0cmluZyZuYnNwO3N0cik8L1BSRT4NCjxETD4NCjxERD5Db25jYXRlbmF0ZXMgdGhlIHNwZWNpZmllZCBzdHJpbmcgdG8gdGhlIGVuZCBvZiB0aGlzIHN0cmluZy48REQ+PERMPg0KPERUPjxCPlNwZWNpZmllZCBieTogPC9CPjxERD48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvYXBhY2hlL3htbC91dGlscy9YTUxTdHJpbmcuaHRtbCNjb25jYXQoamF2YS5sYW5nLlN0cmluZykiPmNvbmNhdDwvQT4gaW4gaW50ZXJmYWNlIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9hcGFjaGUveG1sL3V0aWxzL1hNTFN0cmluZy5odG1sIj5YTUxTdHJpbmc8L0E+PERUPjxCPlBhcmFtZXRlcnM6PC9CPjxERD48Q09ERT5zdHI8L0NPREU+IC0gdGhlIDxjb2RlPlN0cmluZzwvY29kZT4gdGhhdCBpcyBjb25jYXRlbmF0ZWQgdG8gdGhlIGVuZAogICAgICAgICAgICAgICAgb2YgdGhpcyA8Y29kZT5TdHJpbmc8L2NvZGU+LjxEVD48Qj5SZXR1cm5zOjwvQj48REQ+YSBzdHJpbmcgdGhhdCByZXByZXNlbnRzIHRoZSBjb25jYXRlbmF0aW9uIG9mIHRoaXMgb2JqZWN0J3MKICAgICAgICAgIGNoYXJhY3RlcnMgZm9sbG93ZWQgYnkgdGhlIHN0cmluZyBhcmd1bWVudCdzIGNoYXJhY3RlcnMuPERUPjxCPlRocm93czo8L0I+PEREPmphdmEubGFuZy5OdWxsUG9pbnRlckV4Y2VwdGlvbiAtIGlmIDxjb2RlPnN0cjwvY29kZT4gaXMKICAgICAgICAgIDxjb2RlPm51bGw8L2NvZGU+LjwvREw+DQo8L0REPg0KPC9ETD4NCjxIUj4NCg0KPEEgTkFNRT0idG9Mb3dlckNhc2UoamF2YS51dGlsLkxvY2FsZSkiPjwhLS0gLS0+PC9BPjxIMz4NCnRvTG93ZXJDYXNlPC9IMz4NCjxQUkU+DQpwdWJsaWMgPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2FwYWNoZS94bWwvdXRpbHMvWE1MU3RyaW5nLmh0bWwiPlhNTFN0cmluZzwvQT4gPEI+dG9Mb3dlckNhc2U8L0I+KGphdmEudXRpbC5Mb2NhbGUmbmJzcDtsb2NhbGUpPC9QUkU+DQo8REw+DQo8REQ+Q29udmVydHMgYWxsIG9mIHRoZSBjaGFyYWN0ZXJzIGluIHRoaXMgPGNvZGU+U3RyaW5nPC9jb2RlPiB0byBsb3dlcgogY2FzZSB1c2luZyB0aGUgcnVsZXMgb2YgdGhlIGdpdmVuIDxjb2RlPkxvY2FsZTwvY29kZT4uPEREPjxETD4NCjxEVD48Qj5TcGVjaWZpZWQgYnk6IDwvQj48REQ+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2FwYWNoZS94bWwvdXRpbHMvWE1MU3RyaW5nLmh0bWwjdG9Mb3dlckNhc2UoamF2YS51dGlsLkxvY2FsZSkiPnRvTG93ZXJDYXNlPC9BPiBpbiBpbnRlcmZhY2UgPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2FwYWNoZS94bWwvdXRpbHMvWE1MU3RyaW5nLmh0bWwiPlhNTFN0cmluZzwvQT48RFQ+PEI+UGFyYW1ldGVyczo8L0I+PEREPjxDT0RFPmxvY2FsZTwvQ09ERT4gLSB1c2UgdGhlIGNhc2UgdHJhbnNmb3JtYXRpb24gcnVsZXMgZm9yIHRoaXMgbG9jYWxlPERUPjxCPlJldHVybnM6PC9CPjxERD50aGUgU3RyaW5nLCBjb252ZXJ0ZWQgdG8gbG93ZXJjYXNlLjxEVD48Qj5TZWUgQWxzbzogPC9CPjxERD48Q09ERT5DaGFyYWN0ZXIudG9Mb3dlckNhc2UoY2hhcik8L0NPREU+LCANCjxDT0RFPlN0cmluZy50b1VwcGVyQ2FzZShMb2NhbGUpPC9DT0RFPjwvREw+DQo8L0REPg0KPC9ETD4NCjxIUj4NCg0KPEEgTkFNRT0idG9Mb3dlckNhc2UoKSI+PCEtLSAtLT48L0E+PEgzPg0KdG9Mb3dlckNhc2U8L0gzPg0KPFBSRT4NCnB1YmxpYyA8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvYXBhY2hlL3htbC91dGlscy9YTUxTdHJpbmcuaHRtbCI+WE1MU3RyaW5nPC9BPiA8Qj50b0xvd2VyQ2FzZTwvQj4oKTwvUFJFPg0KPERMPg0KPEREPkNvbnZlcnRzIGFsbCBvZiB0aGUgY2hhcmFjdGVycyBpbiB0aGlzIDxjb2RlPlN0cmluZzwvY29kZT4gdG8gbG93ZXIKIGNhc2UgdXNpbmcgdGhlIHJ1bGVzIG9mIHRoZSBkZWZhdWx0IGxvY2FsZSwgd2hpY2ggaXMgcmV0dXJuZWQKIGJ5IDxjb2RlPkxvY2FsZS5nZXREZWZhdWx0PC9jb2RlPi4KIDxwPjxERD48REw+DQo8RFQ+PEI+U3BlY2lmaWVkIGJ5OiA8L0I+PEREPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9hcGFjaGUveG1sL3V0aWxzL1hNTFN0cmluZy5odG1sI3RvTG93ZXJDYXNlKCkiPnRvTG93ZXJDYXNlPC9BPiBpbiBpbnRlcmZhY2UgPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2FwYWNoZS94bWwvdXRpbHMvWE1MU3RyaW5nLmh0bWwiPlhNTFN0cmluZzwvQT48RFQ+PEI+UmV0dXJuczo8L0I+PEREPnRoZSBzdHJpbmcsIGNvbnZlcnRlZCB0byBsb3dlcmNhc2UuPERUPjxCPlNlZSBBbHNvOiA8L0I+PEREPjxDT0RFPkNoYXJhY3Rlci50b0xvd2VyQ2FzZShjaGFyKTwvQ09ERT4sIA0KPENPREU+U3RyaW5nLnRvTG93ZXJDYXNlKExvY2FsZSk8L0NPREU+PC9ETD4NCjwvREQ+DQo8L0RMPg0KPEhSPg0KDQo8QSBOQU1FPSJ0b1VwcGVyQ2FzZShqYXZhLnV0aWwuTG9jYWxlKSI+PCEtLSAtLT48L0E+PEgzPg0KdG9VcHBlckNhc2U8L0gzPg0KPFBSRT4NCnB1YmxpYyA8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvYXBhY2hlL3htbC91dGlscy9YTUxTdHJpbmcuaHRtbCI+WE1MU3RyaW5nPC9BPiA8Qj50b1VwcGVyQ2FzZTwvQj4oamF2YS51dGlsLkxvY2FsZSZuYnNwO2xvY2FsZSk8L1BSRT4NCjxETD4NCjxERD5Db252ZXJ0cyBhbGwgb2YgdGhlIGNoYXJhY3RlcnMgaW4gdGhpcyA8Y29kZT5TdHJpbmc8L2NvZGU+IHRvIHVwcGVyCiBjYXNlIHVzaW5nIHRoZSBydWxlcyBvZiB0aGUgZ2l2ZW4gbG9jYWxlLjxERD48REw+DQo8RFQ+PEI+U3BlY2lmaWVkIGJ5OiA8L0I+PEREPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9hcGFjaGUveG1sL3V0aWxzL1hNTFN0cmluZy5odG1sI3RvVXBwZXJDYXNlKGphdmEudXRpbC5Mb2NhbGUpIj50b1VwcGVyQ2FzZTwvQT4gaW4gaW50ZXJmYWNlIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9hcGFjaGUveG1sL3V0aWxzL1hNTFN0cmluZy5odG1sIj5YTUxTdHJpbmc8L0E+PERUPjxCPlBhcmFtZXRlcnM6PC9CPjxERD48Q09ERT5sb2NhbGU8L0NPREU+IC0gdXNlIHRoZSBjYXNlIHRyYW5zZm9ybWF0aW9uIHJ1bGVzIGZvciB0aGlzIGxvY2FsZTxEVD48Qj5SZXR1cm5zOjwvQj48REQ+dGhlIFN0cmluZywgY29udmVydGVkIHRvIHVwcGVyY2FzZS48RFQ+PEI+U2VlIEFsc286IDwvQj48REQ+PENPREU+Q2hhcmFjdGVyLnRvVXBwZXJDYXNlKGNoYXIpPC9DT0RFPiwgDQo8Q09ERT5TdHJpbmcudG9Mb3dlckNhc2UoTG9jYWxlKTwvQ09ERT48L0RMPg0KPC9ERD4NCjwvREw+DQo8SFI+DQoNCjxBIE5BTUU9InRvVXBwZXJDYXNlKCkiPjwhLS0gLS0+PC9BPjxIMz4NCnRvVXBwZXJDYXNlPC9IMz4NCjxQUkU+DQpwdWJsaWMgPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2FwYWNoZS94bWwvdXRpbHMvWE1MU3RyaW5nLmh0bWwiPlhNTFN0cmluZzwvQT4gPEI+dG9VcHBlckNhc2U8L0I+KCk8L1BSRT4NCjxETD4NCjxERD5Db252ZXJ0cyBhbGwgb2YgdGhlIGNoYXJhY3RlcnMgaW4gdGhpcyA8Y29kZT5TdHJpbmc8L2NvZGU+IHRvIHVwcGVyCiBjYXNlIHVzaW5nIHRoZSBydWxlcyBvZiB0aGUgZGVmYXVsdCBsb2NhbGUsIHdoaWNoIGlzIHJldHVybmVkCiBieSA8Y29kZT5Mb2NhbGUuZ2V0RGVmYXVsdDwvY29kZT4uCgogPHA+CiBJZiBubyBjaGFyYWN0ZXIgaW4gdGhpcyBzdHJpbmcgaGFzIGEgZGlmZmVyZW50IHVwcGVyY2FzZSB2ZXJzaW9uLAogYmFzZWQgb24gY2FsbGluZyB0aGUgPGNvZGU+dG9VcHBlckNhc2U8L2NvZGU+IG1ldGhvZCBkZWZpbmVkIGJ5CiA8Y29kZT5DaGFyYWN0ZXI8L2NvZGU+LCB0aGVuIHRoZSBvcmlnaW5hbCBzdHJpbmcgaXMgcmV0dXJuZWQuCiA8cD4KIE90aGVyd2lzZSwgdGhpcyBtZXRob2QgY3JlYXRlcyBhIG5ldyA8Y29kZT5TdHJpbmc8L2NvZGU+IG9iamVjdAogcmVwcmVzZW50aW5nIGEgY2hhcmFjdGVyIHNlcXVlbmNlIGlkZW50aWNhbCBpbiBsZW5ndGggdG8gdGhlCiBjaGFyYWN0ZXIgc2VxdWVuY2UgcmVwcmVzZW50ZWQgYnkgdGhpcyA8Y29kZT5TdHJpbmc8L2NvZGU+IG9iamVjdCBhbmQKIHdpdGggZXZlcnkgY2hhcmFjdGVyIGVxdWFsIHRvIHRoZSByZXN1bHQgb2YgYXBwbHlpbmcgdGhlIG1ldGhvZAogPGNvZGU+Q2hhcmFjdGVyLnRvVXBwZXJDYXNlPC9jb2RlPiB0byB0aGUgY29ycmVzcG9uZGluZyBjaGFyYWN0ZXIgb2YKIHRoaXMgPGNvZGU+U3RyaW5nPC9jb2RlPiBvYmplY3QuIDxwPgogRXhhbXBsZXM6CiA8YmxvY2txdW90ZT48cHJlPgogIkZhaHJ2ZXJnbiZ1dW1sO2dlbiIudG9VcHBlckNhc2UoKSByZXR1cm5zICJGQUhSVkVSR04mVXVtbDtHRU4iCiAiVmlzaXQgTGp1YmluamUhIi50b1VwcGVyQ2FzZSgpIHJldHVybnMgIlZJU0lUIExKVUJJTkpFISIKIDwvcHJlPjwvYmxvY2txdW90ZT48REQ+PERMPg0KPERUPjxCPlNwZWNpZmllZCBieTogPC9CPjxERD48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvYXBhY2hlL3htbC91dGlscy9YTUxTdHJpbmcuaHRtbCN0b1VwcGVyQ2FzZSgpIj50b1VwcGVyQ2FzZTwvQT4gaW4gaW50ZXJmYWNlIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9hcGFjaGUveG1sL3V0aWxzL1hNTFN0cmluZy5odG1sIj5YTUxTdHJpbmc8L0E+PERUPjxCPlJldHVybnM6PC9CPjxERD50aGUgc3RyaW5nLCBjb252ZXJ0ZWQgdG8gdXBwZXJjYXNlLjxEVD48Qj5TZWUgQWxzbzogPC9CPjxERD48Q09ERT5DaGFyYWN0ZXIudG9VcHBlckNhc2UoY2hhcik8L0NPREU+LCANCjxDT0RFPlN0cmluZy50b1VwcGVyQ2FzZShMb2NhbGUpPC9DT0RFPjwvREw+DQo8L0REPg0KPC9ETD4NCjxIUj4NCg0KPEEgTkFNRT0idHJpbSgpIj48IS0tIC0tPjwvQT48SDM+DQp0cmltPC9IMz4NCjxQUkU+DQpwdWJsaWMgPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2FwYWNoZS94bWwvdXRpbHMvWE1MU3RyaW5nLmh0bWwiPlhNTFN0cmluZzwvQT4gPEI+dHJpbTwvQj4oKTwvUFJFPg0KPERMPg0KPEREPlJlbW92ZXMgd2hpdGUgc3BhY2UgZnJvbSBib3RoIGVuZHMgb2YgdGhpcyBzdHJpbmcuPEREPjxETD4NCjxEVD48Qj5TcGVjaWZpZWQgYnk6IDwvQj48REQ+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2FwYWNoZS94bWwvdXRpbHMvWE1MU3RyaW5nLmh0bWwjdHJpbSgpIj50cmltPC9BPiBpbiBpbnRlcmZhY2UgPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2FwYWNoZS94bWwvdXRpbHMvWE1MU3RyaW5nLmh0bWwiPlhNTFN0cmluZzwvQT48RFQ+PEI+UmV0dXJuczo8L0I+PEREPnRoaXMgc3RyaW5nLCB3aXRoIHdoaXRlIHNwYWNlIHJlbW92ZWQgZnJvbSB0aGUgZnJvbnQgYW5kIGVuZC48L0RMPg0KPC9ERD4NCjwvREw+DQo8SFI+DQoNCjxBIE5BTUU9ImZpeFdoaXRlU3BhY2UoYm9vbGVhbiwgYm9vbGVhbiwgYm9vbGVhbikiPjwhLS0gLS0+PC9BPjxIMz4NCmZpeFdoaXRlU3BhY2U8L0gzPg0KPFBSRT4NCnB1YmxpYyA8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvYXBhY2hlL3htbC91dGlscy9YTUxTdHJpbmcuaHRtbCI+WE1MU3RyaW5nPC9BPiA8Qj5maXhXaGl0ZVNwYWNlPC9CPihib29sZWFuJm5ic3A7dHJpbUhlYWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sZWFuJm5ic3A7dHJpbVRhaWwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sZWFuJm5ic3A7ZG91YmxlUHVuY3R1YXRpb25TcGFjZXMpPC9QUkU+DQo8REw+DQo8REQ+Q29uZGl0aW9uYWxseSB0cmltIGFsbCBsZWFkaW5nIGFuZCB0cmFpbGluZyB3aGl0ZXNwYWNlIGluIHRoZSBzcGVjaWZpZWQgU3RyaW5nLgogQWxsIHN0cmluZ3Mgb2Ygd2hpdGUgc3BhY2UgYXJlCiByZXBsYWNlZCBieSBhIHNpbmdsZSBzcGFjZSBjaGFyYWN0ZXIgKCN4MjApLCBleGNlcHQgc3BhY2VzIGFmdGVyIHB1bmN0dWF0aW9uIHdoaWNoCiByZWNlaXZlIGRvdWJsZSBzcGFjZXMgaWYgZG91YmxlUHVuY3R1YXRpb25TcGFjZXMgaXMgdHJ1ZS4KIFRoaXMgZnVuY3Rpb24gbWF5IGJlIHVzZWZ1bCB0byBhIGZvcm1hdHRlciwgYnV0IHRvIGdldCBmaXJzdCBjbGFzcwogcmVzdWx0cywgdGhlIGZvcm1hdHRlciBzaG91bGQgcHJvYmFibHkgZG8gaXQncyBvd24gd2hpdGUgc3BhY2UgaGFuZGxpbmcKIGJhc2VkIG9uIHRoZSBzZW1hbnRpY3Mgb2YgdGhlIGZvcm1hdHRpbmcgb2JqZWN0LjxERD48REw+DQo8RFQ+PEI+U3BlY2lmaWVkIGJ5OiA8L0I+PEREPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9hcGFjaGUveG1sL3V0aWxzL1hNTFN0cmluZy5odG1sI2ZpeFdoaXRlU3BhY2UoYm9vbGVhbiwgYm9vbGVhbiwgYm9vbGVhbikiPmZpeFdoaXRlU3BhY2U8L0E+IGluIGludGVyZmFjZSA8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvYXBhY2hlL3htbC91dGlscy9YTUxTdHJpbmcuaHRtbCI+WE1MU3RyaW5nPC9BPjxEVD48Qj5QYXJhbWV0ZXJzOjwvQj48REQ+PENPREU+dHJpbUhlYWQ8L0NPREU+IC0gVHJpbSBsZWFkaW5nIHdoaXRlc3BhY2U/PEREPjxDT0RFPnRyaW1UYWlsPC9DT0RFPiAtIFRyaW0gdHJhaWxpbmcgd2hpdGVzcGFjZT88REQ+PENPREU+ZG91YmxlUHVuY3R1YXRpb25TcGFjZXM8L0NPREU+IC0gVXNlIGRvdWJsZSBzcGFjZXMgZm9yIHB1bmN0dWF0aW9uPzxEVD48Qj5SZXR1cm5zOjwvQj48REQ+VGhlIHRyaW1tZWQgc3RyaW5nLjwvREw+DQo8L0REPg0KPC9ETD4NCjxIUj4NCg0KPEEgTkFNRT0iY2FsbFZpc2l0b3JzKG9yZy5hcGFjaGUueHBhdGguRXhwcmVzc2lvbk93bmVyLCBvcmcuYXBhY2hlLnhwYXRoLlhQYXRoVmlzaXRvcikiPjwhLS0gLS0+PC9BPjxIMz4NCmNhbGxWaXNpdG9yczwvSDM+DQo8UFJFPg0KcHVibGljIHZvaWQgPEI+Y2FsbFZpc2l0b3JzPC9CPig8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvYXBhY2hlL3hwYXRoL0V4cHJlc3Npb25Pd25lci5odG1sIj5FeHByZXNzaW9uT3duZXI8L0E+Jm5ic3A7b3duZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvYXBhY2hlL3hwYXRoL1hQYXRoVmlzaXRvci5odG1sIj5YUGF0aFZpc2l0b3I8L0E+Jm5ic3A7dmlzaXRvcik8L1BSRT4NCjxETD4NCjxERD48REw+DQo8RFQ+PEI+T3ZlcnJpZGVzOjwvQj48REQ+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2FwYWNoZS94cGF0aC9vYmplY3RzL1hPYmplY3QuaHRtbCNjYWxsVmlzaXRvcnMob3JnLmFwYWNoZS54cGF0aC5FeHByZXNzaW9uT3duZXIsIG9yZy5hcGFjaGUueHBhdGguWFBhdGhWaXNpdG9yKSI+Y2FsbFZpc2l0b3JzPC9BPiBpbiBjbGFzcyA8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvYXBhY2hlL3hwYXRoL29iamVjdHMvWE9iamVjdC5odG1sIj5YT2JqZWN0PC9BPjxEVD48Qj5TZWUgQWxzbzogPC9CPjxERD48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvYXBhY2hlL3hwYXRoL1hQYXRoVmlzaXRhYmxlLmh0bWwjY2FsbFZpc2l0b3JzKG9yZy5hcGFjaGUueHBhdGguRXhwcmVzc2lvbk93bmVyLCBvcmcuYXBhY2hlLnhwYXRoLlhQYXRoVmlzaXRvcikiPjxDT0RFPlhQYXRoVmlzaXRhYmxlLmNhbGxWaXNpdG9ycyhFeHByZXNzaW9uT3duZXIsIFhQYXRoVmlzaXRvcik8L0NPREU+PC9BPjwvREw+DQo8L0REPg0KPC9ETD4NCjwhLS0gPT09PT09PT09IEVORCBPRiBDTEFTUyBEQVRBID09PT09PT09PSAtLT4NCjxIUj4NCg0KPCEtLSA9PT09PT09PT09IFNUQVJUIE9GIE5BVkJBUiA9PT09PT09PT09IC0tPg0KPEEgTkFNRT0ibmF2YmFyX2JvdHRvbSI+PCEtLSAtLT48L0E+CjxUQUJMRSBCT1JERVI9IjAiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMSIgQ0VMTFNQQUNJTkc9IjAiPg0KPFRSPg0KPFREIENPTFNQQU49MiBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPg0KPEEgTkFNRT0ibmF2YmFyX2JvdHRvbV9maXJzdHJvdyI+PCEtLSAtLT48L0E+CjxUQUJMRSBCT1JERVI9IjAiIENFTExQQURESU5HPSIwIiBDRUxMU1BBQ0lORz0iMyI+DQogIDxUUiBBTElHTj0iY2VudGVyIiBWQUxJR049InRvcCI+DQogIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi9vdmVydmlldy1zdW1tYXJ5Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+T3ZlcnZpZXc8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPg0KICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0icGFja2FnZS1zdW1tYXJ5Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+UGFja2FnZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+DQogIDxURCBCR0NPTE9SPSIjRkZGRkZGIiBDTEFTUz0iTmF2QmFyQ2VsbDFSZXYiPiAmbmJzcDs8Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDFSZXYiPjxCPkNsYXNzPC9CPjwvRk9OVD4mbmJzcDs8L1REPg0KICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iY2xhc3MtdXNlL1hTdHJpbmcuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5Vc2U8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPg0KICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0icGFja2FnZS10cmVlLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+VHJlZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+DQogIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi9kZXByZWNhdGVkLWxpc3QuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5EZXByZWNhdGVkPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4NCiAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL2luZGV4LWFsbC5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkluZGV4PC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4NCiAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL2hlbHAtZG9jLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+SGVscDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+DQogIDwvVFI+DQo8L1RBQkxFPg0KPC9URD4NCjxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBST1dTUEFOPTM+PEVNPg0KPC9FTT4NCjwvVEQ+DQo8L1RSPg0KDQo8VFI+DQo8VEQgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJOYXZCYXJDZWxsMiI+PEZPTlQgU0laRT0iLTIiPg0KJm5ic3A7PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2FwYWNoZS94cGF0aC9vYmplY3RzL1hSVHJlZUZyYWdTZWxlY3RXcmFwcGVyLmh0bWwiPjxCPlBSRVYgQ0xBU1M8L0I+PC9BPiZuYnNwOw0KJm5ic3A7PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2FwYWNoZS94cGF0aC9vYmplY3RzL1hTdHJpbmdGb3JDaGFycy5odG1sIj48Qj5ORVhUIENMQVNTPC9CPjwvQT48L0ZPTlQ+PC9URD4NCjxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+DQogIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL2luZGV4Lmh0bWwiIFRBUkdFVD0iX3RvcCI+PEI+RlJBTUVTPC9CPjwvQT4gICZuYnNwOw0KJm5ic3A7PEEgSFJFRj0iWFN0cmluZy5odG1sIiBUQVJHRVQ9Il90b3AiPjxCPk5PIEZSQU1FUzwvQj48L0E+PC9GT05UPjwvVEQ+DQo8L1RSPg0KPFRSPg0KPFREIFZBTElHTj0idG9wIiBDTEFTUz0iTmF2QmFyQ2VsbDMiPjxGT05UIFNJWkU9Ii0yIj4NCiAgU1VNTUFSWTogJm5ic3A7SU5ORVImbmJzcDt8Jm5ic3A7PEEgSFJFRj0iI2ZpZWxkX3N1bW1hcnkiPkZJRUxEPC9BPiZuYnNwO3wmbmJzcDs8QSBIUkVGPSIjY29uc3RydWN0b3Jfc3VtbWFyeSI+Q09OU1RSPC9BPiZuYnNwO3wmbmJzcDs8QSBIUkVGPSIjbWV0aG9kX3N1bW1hcnkiPk1FVEhPRDwvQT48L0ZPTlQ+PC9URD4NCjxURCBWQUxJR049InRvcCIgQ0xBU1M9Ik5hdkJhckNlbGwzIj48Rk9OVCBTSVpFPSItMiI+DQpERVRBSUw6ICZuYnNwOzxBIEhSRUY9IiNmaWVsZF9kZXRhaWwiPkZJRUxEPC9BPiZuYnNwO3wmbmJzcDs8QSBIUkVGPSIjY29uc3RydWN0b3JfZGV0YWlsIj5DT05TVFI8L0E+Jm5ic3A7fCZuYnNwOzxBIEhSRUY9IiNtZXRob2RfZGV0YWlsIj5NRVRIT0Q8L0E+PC9GT05UPjwvVEQ+DQo8L1RSPg0KPC9UQUJMRT4NCjwhLS0gPT09PT09PT09PT0gRU5EIE9GIE5BVkJBUiA9PT09PT09PT09PSAtLT4NCg0KPEhSPg0KQ29weXJpZ2h0IKkgMjAwNiBBcGFjaGUgWE1MIFByb2plY3QuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQo8L0JPRFk+DQo8L0hUTUw+DQo=