PCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMC8vRU4iPg0KPCEtLU5ld1BhZ2UtLT4NCjxIVE1MPg0KPEhFQUQ+DQo8IS0tIEdlbmVyYXRlZCBieSBqYXZhZG9jIG9uIFRodSBOb3YgMjIgMTc6MTM6MDAgRVNUIDIwMDcgLS0+DQo8VElUTEU+DQpYYWxhbi1KYXZhIDIuNy4xOiBDbGFzcyAgQXR0cmlidXRlc0ltcGwNCjwvVElUTEU+DQo8TElOSyBSRUwgPSJzdHlsZXNoZWV0IiBUWVBFPSJ0ZXh0L2NzcyIgSFJFRj0iLi4vLi4vLi4vLi4vc3R5bGVzaGVldC5jc3MiIFRJVExFPSJTdHlsZSI+DQo8L0hFQUQ+DQo8Qk9EWSBCR0NPTE9SPSJ3aGl0ZSI+DQoNCjwhLS0gPT09PT09PT09PSBTVEFSVCBPRiBOQVZCQVIgPT09PT09PT09PSAtLT4NCjxBIE5BTUU9Im5hdmJhcl90b3AiPjwhLS0gLS0+PC9BPgo8VEFCTEUgQk9SREVSPSIwIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjEiIENFTExTUEFDSU5HPSIwIj4NCjxUUj4NCjxURCBDT0xTUEFOPTIgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4NCjxBIE5BTUU9Im5hdmJhcl90b3BfZmlyc3Ryb3ciPjwhLS0gLS0+PC9BPgo8VEFCTEUgQk9SREVSPSIwIiBDRUxMUEFERElORz0iMCIgQ0VMTFNQQUNJTkc9IjMiPg0KICA8VFIgQUxJR049ImNlbnRlciIgVkFMSUdOPSJ0b3AiPg0KICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3ZlcnZpZXctc3VtbWFyeS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPk92ZXJ2aWV3PC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4NCiAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9InBhY2thZ2Utc3VtbWFyeS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlBhY2thZ2U8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPg0KICA8VEQgQkdDT0xPUj0iI0ZGRkZGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxUmV2Ij4gJm5ic3A7PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxUmV2Ij48Qj5DbGFzczwvQj48L0ZPTlQ+Jm5ic3A7PC9URD4NCiAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9ImNsYXNzLXVzZS9BdHRyaWJ1dGVzSW1wbC5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlVzZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+DQogIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSJwYWNrYWdlLXRyZWUuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5UcmVlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4NCiAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL2RlcHJlY2F0ZWQtbGlzdC5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkRlcHJlY2F0ZWQ8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPg0KICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vaW5kZXgtYWxsLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+SW5kZXg8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPg0KICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vaGVscC1kb2MuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5IZWxwPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4NCiAgPC9UUj4NCjwvVEFCTEU+DQo8L1REPg0KPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFJPV1NQQU49Mz48RU0+DQo8L0VNPg0KPC9URD4NCjwvVFI+DQoNCjxUUj4NCjxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+DQombmJzcDs8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcveG1sL3NheC9oZWxwZXJzL0F0dHJpYnV0ZUxpc3RJbXBsLmh0bWwiPjxCPlBSRVYgQ0xBU1M8L0I+PC9BPiZuYnNwOw0KJm5ic3A7PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL3htbC9zYXgvaGVscGVycy9EZWZhdWx0SGFuZGxlci5odG1sIj48Qj5ORVhUIENMQVNTPC9CPjwvQT48L0ZPTlQ+PC9URD4NCjxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+DQogIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL2luZGV4Lmh0bWwiIFRBUkdFVD0iX3RvcCI+PEI+RlJBTUVTPC9CPjwvQT4gICZuYnNwOw0KJm5ic3A7PEEgSFJFRj0iQXR0cmlidXRlc0ltcGwuaHRtbCIgVEFSR0VUPSJfdG9wIj48Qj5OTyBGUkFNRVM8L0I+PC9BPjwvRk9OVD48L1REPg0KPC9UUj4NCjxUUj4NCjxURCBWQUxJR049InRvcCIgQ0xBU1M9Ik5hdkJhckNlbGwzIj48Rk9OVCBTSVpFPSItMiI+DQogIFNVTU1BUlk6ICZuYnNwO0lOTkVSJm5ic3A7fCZuYnNwO0ZJRUxEJm5ic3A7fCZuYnNwOzxBIEhSRUY9IiNjb25zdHJ1Y3Rvcl9zdW1tYXJ5Ij5DT05TVFI8L0E+Jm5ic3A7fCZuYnNwOzxBIEhSRUY9IiNtZXRob2Rfc3VtbWFyeSI+TUVUSE9EPC9BPjwvRk9OVD48L1REPg0KPFREIFZBTElHTj0idG9wIiBDTEFTUz0iTmF2QmFyQ2VsbDMiPjxGT05UIFNJWkU9Ii0yIj4NCkRFVEFJTDogJm5ic3A7RklFTEQmbmJzcDt8Jm5ic3A7PEEgSFJFRj0iI2NvbnN0cnVjdG9yX2RldGFpbCI+Q09OU1RSPC9BPiZuYnNwO3wmbmJzcDs8QSBIUkVGPSIjbWV0aG9kX2RldGFpbCI+TUVUSE9EPC9BPjwvRk9OVD48L1REPg0KPC9UUj4NCjwvVEFCTEU+DQo8IS0tID09PT09PT09PT09IEVORCBPRiBOQVZCQVIgPT09PT09PT09PT0gLS0+DQoNCjxIUj4NCjwhLS0gPT09PT09PT0gU1RBUlQgT0YgQ0xBU1MgREFUQSA9PT09PT09PSAtLT4NCjxIMj4NCjxGT05UIFNJWkU9Ii0xIj4NCm9yZy54bWwuc2F4LmhlbHBlcnM8L0ZPTlQ+DQo8QlI+DQpDbGFzcyAgQXR0cmlidXRlc0ltcGw8L0gyPg0KPFBSRT4NCmphdmEubGFuZy5PYmplY3QNCiAgfA0KICArLS08Qj5vcmcueG1sLnNheC5oZWxwZXJzLkF0dHJpYnV0ZXNJbXBsPC9CPg0KPC9QUkU+DQo8REw+DQo8RFQ+PEI+RGlyZWN0IEtub3duIFN1YmNsYXNzZXM6PC9CPiA8REQ+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL3htbC9zYXgvZXh0L0F0dHJpYnV0ZXMySW1wbC5odG1sIj5BdHRyaWJ1dGVzMkltcGw8L0E+LCA8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvYXBhY2hlL3htbC9zZXJpYWxpemVyL0F0dHJpYnV0ZXNJbXBsU2VyaWFsaXplci5odG1sIj5BdHRyaWJ1dGVzSW1wbFNlcmlhbGl6ZXI8L0E+LCA8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvYXBhY2hlL3htbC91dGlscy9NdXRhYmxlQXR0ckxpc3RJbXBsLmh0bWwiPk11dGFibGVBdHRyTGlzdEltcGw8L0E+PC9ERD4NCjwvREw+DQo8SFI+DQo8REw+DQo8RFQ+cHVibGljIGNsYXNzIDxCPkF0dHJpYnV0ZXNJbXBsPC9CPjxEVD5leHRlbmRzIGphdmEubGFuZy5PYmplY3Q8RFQ+aW1wbGVtZW50cyA8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcveG1sL3NheC9BdHRyaWJ1dGVzLmh0bWwiPkF0dHJpYnV0ZXM8L0E+PC9ETD4NCg0KPFA+DQpEZWZhdWx0IGltcGxlbWVudGF0aW9uIG9mIHRoZSBBdHRyaWJ1dGVzIGludGVyZmFjZS4KCiA8YmxvY2txdW90ZT4KIDxlbT5UaGlzIG1vZHVsZSwgYm90aCBzb3VyY2UgY29kZSBhbmQgZG9jdW1lbnRhdGlvbiwgaXMgaW4gdGhlCiBQdWJsaWMgRG9tYWluLCBhbmQgY29tZXMgd2l0aCA8c3Ryb25nPk5PIFdBUlJBTlRZPC9zdHJvbmc+LjwvZW0+CiBTZWUgPGEgaHJlZj0naHR0cDovL3d3dy5zYXhwcm9qZWN0Lm9yZyc+aHR0cDovL3d3dy5zYXhwcm9qZWN0Lm9yZzwvYT4KIGZvciBmdXJ0aGVyIGluZm9ybWF0aW9uLgogPC9ibG9ja3F1b3RlPgoKIDxwPlRoaXMgY2xhc3MgcHJvdmlkZXMgYSBkZWZhdWx0IGltcGxlbWVudGF0aW9uIG9mIHRoZSBTQVgyCiA8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcveG1sL3NheC9BdHRyaWJ1dGVzLmh0bWwiPkF0dHJpYnV0ZXM8L0E+IGludGVyZmFjZSwgd2l0aCB0aGUgCiBhZGRpdGlvbiBvZiBtYW5pcHVsYXRvcnMgc28gdGhhdCB0aGUgbGlzdCBjYW4gYmUgbW9kaWZpZWQgb3IgCiByZXVzZWQuPC9wPgoKIDxwPlRoZXJlIGFyZSB0d28gdHlwaWNhbCB1c2VzIG9mIHRoaXMgY2xhc3M6PC9wPgoKIDxvbD4KIDxsaT50byB0YWtlIGEgcGVyc2lzdGVudCBzbmFwc2hvdCBvZiBhbiBBdHRyaWJ1dGVzIG9iamVjdAogIGluIGEgPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL3htbC9zYXgvQ29udGVudEhhbmRsZXIuaHRtbCNzdGFydEVsZW1lbnQoamF2YS5sYW5nLlN0cmluZywgamF2YS5sYW5nLlN0cmluZywgamF2YS5sYW5nLlN0cmluZywgb3JnLnhtbC5zYXguQXR0cmlidXRlcykiPnN0YXJ0RWxlbWVudDwvQT4gZXZlbnQ7IG9yPC9saT4KIDxsaT50byBjb25zdHJ1Y3Qgb3IgbW9kaWZ5IGFuIEF0dHJpYnV0ZXMgb2JqZWN0IGluIGEgU0FYMiBkcml2ZXIgb3IgZmlsdGVyLjwvbGk+CiA8L29sPgoKIDxwPlRoaXMgY2xhc3MgcmVwbGFjZXMgdGhlIG5vdy1kZXByZWNhdGVkIFNBWDEgPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL3htbC9zYXgvaGVscGVycy9BdHRyaWJ1dGVMaXN0SW1wbC5odG1sIj5BdHRyaWJ1dGVMaXN0SW1wbDwvQT4KIGNsYXNzOyBpbiBhZGRpdGlvbiB0byBzdXBwb3J0aW5nIHRoZSB1cGRhdGVkIEF0dHJpYnV0ZXMKIGludGVyZmFjZSByYXRoZXIgdGhhbiB0aGUgZGVwcmVjYXRlZCA8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcveG1sL3NheC9BdHRyaWJ1dGVMaXN0Lmh0bWwiPkF0dHJpYnV0ZUxpc3Q8L0E+IGludGVyZmFjZSwgaXQgYWxzbyBpbmNsdWRlcyBhIG11Y2ggbW9yZSBlZmZpY2llbnQgCiBpbXBsZW1lbnRhdGlvbiB1c2luZyBhIHNpbmdsZSBhcnJheSByYXRoZXIgdGhhbiBhIHNldCBvZiBWZWN0b3JzLjwvcD4NCjxQPg0KPERMPg0KPERUPjxCPlNpbmNlOiA8L0I+PEREPlNBWCAyLjA8L0REPg0KPC9ETD4NCjxIUj4NCg0KPFA+DQo8IS0tID09PT09PT09IElOTkVSIENMQVNTIFNVTU1BUlkgPT09PT09PT0gLS0+DQoNCg0KPCEtLSA9PT09PT09PT09PSBGSUVMRCBTVU1NQVJZID09PT09PT09PT09IC0tPg0KDQoNCjwhLS0gPT09PT09PT0gQ09OU1RSVUNUT1IgU1VNTUFSWSA9PT09PT09PSAtLT4NCg0KPEEgTkFNRT0iY29uc3RydWN0b3Jfc3VtbWFyeSI+PCEtLSAtLT48L0E+CjxUQUJMRSBCT1JERVI9IjEiIENFTExQQURESU5HPSIzIiBDRUxMU1BBQ0lORz0iMCIgV0lEVEg9IjEwMCUiPg0KPFRSIEJHQ09MT1I9IiNDQ0NDRkYiIENMQVNTPSJUYWJsZUhlYWRpbmdDb2xvciI+DQo8VEQgQ09MU1BBTj0yPjxGT05UIFNJWkU9IisyIj4NCjxCPkNvbnN0cnVjdG9yIFN1bW1hcnk8L0I+PC9GT05UPjwvVEQ+DQo8L1RSPg0KPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+DQo8VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL3htbC9zYXgvaGVscGVycy9BdHRyaWJ1dGVzSW1wbC5odG1sI0F0dHJpYnV0ZXNJbXBsKCkiPkF0dHJpYnV0ZXNJbXBsPC9BPjwvQj4oKTwvQ09ERT4NCg0KPEJSPg0KJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Q29uc3RydWN0IGEgbmV3LCBlbXB0eSBBdHRyaWJ1dGVzSW1wbCBvYmplY3QuPC9URD4NCjwvVFI+DQo8VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4NCjxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcveG1sL3NheC9oZWxwZXJzL0F0dHJpYnV0ZXNJbXBsLmh0bWwjQXR0cmlidXRlc0ltcGwob3JnLnhtbC5zYXguQXR0cmlidXRlcykiPkF0dHJpYnV0ZXNJbXBsPC9BPjwvQj4oPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL3htbC9zYXgvQXR0cmlidXRlcy5odG1sIj5BdHRyaWJ1dGVzPC9BPiZuYnNwO2F0dHMpPC9DT0RFPg0KDQo8QlI+DQombmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtDb3B5IGFuIGV4aXN0aW5nIEF0dHJpYnV0ZXMgb2JqZWN0LjwvVEQ+DQo8L1RSPg0KPC9UQUJMRT4NCiZuYnNwOw0KPCEtLSA9PT09PT09PT09IE1FVEhPRCBTVU1NQVJZID09PT09PT09PT09IC0tPg0KDQo8QSBOQU1FPSJtZXRob2Rfc3VtbWFyeSI+PCEtLSAtLT48L0E+CjxUQUJMRSBCT1JERVI9IjEiIENFTExQQURESU5HPSIzIiBDRUxMU1BBQ0lORz0iMCIgV0lEVEg9IjEwMCUiPg0KPFRSIEJHQ09MT1I9IiNDQ0NDRkYiIENMQVNTPSJUYWJsZUhlYWRpbmdDb2xvciI+DQo8VEQgQ09MU1BBTj0yPjxGT05UIFNJWkU9IisyIj4NCjxCPk1ldGhvZCBTdW1tYXJ5PC9CPjwvRk9OVD48L1REPg0KPC9UUj4NCjxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPg0KPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPg0KPENPREU+Jm5ic3A7dm9pZDwvQ09ERT48L0ZPTlQ+PC9URD4NCjxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcveG1sL3NheC9oZWxwZXJzL0F0dHJpYnV0ZXNJbXBsLmh0bWwjYWRkQXR0cmlidXRlKGphdmEubGFuZy5TdHJpbmcsIGphdmEubGFuZy5TdHJpbmcsIGphdmEubGFuZy5TdHJpbmcsIGphdmEubGFuZy5TdHJpbmcsIGphdmEubGFuZy5TdHJpbmcpIj5hZGRBdHRyaWJ1dGU8L0E+PC9CPihqYXZhLmxhbmcuU3RyaW5nJm5ic3A7dXJpLAogICAgICAgICAgICAgamF2YS5sYW5nLlN0cmluZyZuYnNwO2xvY2FsTmFtZSwKICAgICAgICAgICAgIGphdmEubGFuZy5TdHJpbmcmbmJzcDtxTmFtZSwKICAgICAgICAgICAgIGphdmEubGFuZy5TdHJpbmcmbmJzcDt0eXBlLAogICAgICAgICAgICAgamF2YS5sYW5nLlN0cmluZyZuYnNwO3ZhbHVlKTwvQ09ERT4NCg0KPEJSPg0KJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7QWRkIGFuIGF0dHJpYnV0ZSB0byB0aGUgZW5kIG9mIHRoZSBsaXN0LjwvVEQ+DQo8L1RSPg0KPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+DQo8VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+DQo8Q09ERT4mbmJzcDt2b2lkPC9DT0RFPjwvRk9OVD48L1REPg0KPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy94bWwvc2F4L2hlbHBlcnMvQXR0cmlidXRlc0ltcGwuaHRtbCNjbGVhcigpIj5jbGVhcjwvQT48L0I+KCk8L0NPREU+DQoNCjxCUj4NCiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO0NsZWFyIHRoZSBhdHRyaWJ1dGUgbGlzdCBmb3IgcmV1c2UuPC9URD4NCjwvVFI+DQo8VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4NCjxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4NCjxDT0RFPiZuYnNwO2ludDwvQ09ERT48L0ZPTlQ+PC9URD4NCjxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcveG1sL3NheC9oZWxwZXJzL0F0dHJpYnV0ZXNJbXBsLmh0bWwjZ2V0SW5kZXgoamF2YS5sYW5nLlN0cmluZykiPmdldEluZGV4PC9BPjwvQj4oamF2YS5sYW5nLlN0cmluZyZuYnNwO3FOYW1lKTwvQ09ERT4NCg0KPEJSPg0KJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7TG9vayB1cCBhbiBhdHRyaWJ1dGUncyBpbmRleCBieSBxdWFsaWZpZWQgKHByZWZpeGVkKSBuYW1lLjwvVEQ+DQo8L1RSPg0KPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+DQo8VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+DQo8Q09ERT4mbmJzcDtpbnQ8L0NPREU+PC9GT05UPjwvVEQ+DQo8VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL3htbC9zYXgvaGVscGVycy9BdHRyaWJ1dGVzSW1wbC5odG1sI2dldEluZGV4KGphdmEubGFuZy5TdHJpbmcsIGphdmEubGFuZy5TdHJpbmcpIj5nZXRJbmRleDwvQT48L0I+KGphdmEubGFuZy5TdHJpbmcmbmJzcDt1cmksCiAgICAgICAgIGphdmEubGFuZy5TdHJpbmcmbmJzcDtsb2NhbE5hbWUpPC9DT0RFPg0KDQo8QlI+DQombmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtMb29rIHVwIGFuIGF0dHJpYnV0ZSdzIGluZGV4IGJ5IE5hbWVzcGFjZSBuYW1lLjwvVEQ+DQo8L1RSPg0KPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+DQo8VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+DQo8Q09ERT4mbmJzcDtpbnQ8L0NPREU+PC9GT05UPjwvVEQ+DQo8VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL3htbC9zYXgvaGVscGVycy9BdHRyaWJ1dGVzSW1wbC5odG1sI2dldExlbmd0aCgpIj5nZXRMZW5ndGg8L0E+PC9CPigpPC9DT0RFPg0KDQo8QlI+DQombmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtSZXR1cm4gdGhlIG51bWJlciBvZiBhdHRyaWJ1dGVzIGluIHRoZSBsaXN0LjwvVEQ+DQo8L1RSPg0KPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+DQo8VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+DQo8Q09ERT4mbmJzcDtqYXZhLmxhbmcuU3RyaW5nPC9DT0RFPjwvRk9OVD48L1REPg0KPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy94bWwvc2F4L2hlbHBlcnMvQXR0cmlidXRlc0ltcGwuaHRtbCNnZXRMb2NhbE5hbWUoaW50KSI+Z2V0TG9jYWxOYW1lPC9BPjwvQj4oaW50Jm5ic3A7aW5kZXgpPC9DT0RFPg0KDQo8QlI+DQombmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtSZXR1cm4gYW4gYXR0cmlidXRlJ3MgbG9jYWwgbmFtZS48L1REPg0KPC9UUj4NCjxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPg0KPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPg0KPENPREU+Jm5ic3A7amF2YS5sYW5nLlN0cmluZzwvQ09ERT48L0ZPTlQ+PC9URD4NCjxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcveG1sL3NheC9oZWxwZXJzL0F0dHJpYnV0ZXNJbXBsLmh0bWwjZ2V0UU5hbWUoaW50KSI+Z2V0UU5hbWU8L0E+PC9CPihpbnQmbmJzcDtpbmRleCk8L0NPREU+DQoNCjxCUj4NCiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1JldHVybiBhbiBhdHRyaWJ1dGUncyBxdWFsaWZpZWQgKHByZWZpeGVkKSBuYW1lLjwvVEQ+DQo8L1RSPg0KPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+DQo8VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+DQo8Q09ERT4mbmJzcDtqYXZhLmxhbmcuU3RyaW5nPC9DT0RFPjwvRk9OVD48L1REPg0KPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy94bWwvc2F4L2hlbHBlcnMvQXR0cmlidXRlc0ltcGwuaHRtbCNnZXRUeXBlKGludCkiPmdldFR5cGU8L0E+PC9CPihpbnQmbmJzcDtpbmRleCk8L0NPREU+DQoNCjxCUj4NCiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1JldHVybiBhbiBhdHRyaWJ1dGUncyB0eXBlIGJ5IGluZGV4LjwvVEQ+DQo8L1RSPg0KPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+DQo8VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+DQo8Q09ERT4mbmJzcDtqYXZhLmxhbmcuU3RyaW5nPC9DT0RFPjwvRk9OVD48L1REPg0KPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy94bWwvc2F4L2hlbHBlcnMvQXR0cmlidXRlc0ltcGwuaHRtbCNnZXRUeXBlKGphdmEubGFuZy5TdHJpbmcpIj5nZXRUeXBlPC9BPjwvQj4oamF2YS5sYW5nLlN0cmluZyZuYnNwO3FOYW1lKTwvQ09ERT4NCg0KPEJSPg0KJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7TG9vayB1cCBhbiBhdHRyaWJ1dGUncyB0eXBlIGJ5IHF1YWxpZmllZCAocHJlZml4ZWQpIG5hbWUuPC9URD4NCjwvVFI+DQo8VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4NCjxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4NCjxDT0RFPiZuYnNwO2phdmEubGFuZy5TdHJpbmc8L0NPREU+PC9GT05UPjwvVEQ+DQo8VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL3htbC9zYXgvaGVscGVycy9BdHRyaWJ1dGVzSW1wbC5odG1sI2dldFR5cGUoamF2YS5sYW5nLlN0cmluZywgamF2YS5sYW5nLlN0cmluZykiPmdldFR5cGU8L0E+PC9CPihqYXZhLmxhbmcuU3RyaW5nJm5ic3A7dXJpLAogICAgICAgIGphdmEubGFuZy5TdHJpbmcmbmJzcDtsb2NhbE5hbWUpPC9DT0RFPg0KDQo8QlI+DQombmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtMb29rIHVwIGFuIGF0dHJpYnV0ZSdzIHR5cGUgYnkgTmFtZXNwYWNlLXF1YWxpZmllZCBuYW1lLjwvVEQ+DQo8L1RSPg0KPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+DQo8VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+DQo8Q09ERT4mbmJzcDtqYXZhLmxhbmcuU3RyaW5nPC9DT0RFPjwvRk9OVD48L1REPg0KPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy94bWwvc2F4L2hlbHBlcnMvQXR0cmlidXRlc0ltcGwuaHRtbCNnZXRVUkkoaW50KSI+Z2V0VVJJPC9BPjwvQj4oaW50Jm5ic3A7aW5kZXgpPC9DT0RFPg0KDQo8QlI+DQombmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtSZXR1cm4gYW4gYXR0cmlidXRlJ3MgTmFtZXNwYWNlIFVSSS48L1REPg0KPC9UUj4NCjxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPg0KPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPg0KPENPREU+Jm5ic3A7amF2YS5sYW5nLlN0cmluZzwvQ09ERT48L0ZPTlQ+PC9URD4NCjxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcveG1sL3NheC9oZWxwZXJzL0F0dHJpYnV0ZXNJbXBsLmh0bWwjZ2V0VmFsdWUoaW50KSI+Z2V0VmFsdWU8L0E+PC9CPihpbnQmbmJzcDtpbmRleCk8L0NPREU+DQoNCjxCUj4NCiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1JldHVybiBhbiBhdHRyaWJ1dGUncyB2YWx1ZSBieSBpbmRleC48L1REPg0KPC9UUj4NCjxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPg0KPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPg0KPENPREU+Jm5ic3A7amF2YS5sYW5nLlN0cmluZzwvQ09ERT48L0ZPTlQ+PC9URD4NCjxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcveG1sL3NheC9oZWxwZXJzL0F0dHJpYnV0ZXNJbXBsLmh0bWwjZ2V0VmFsdWUoamF2YS5sYW5nLlN0cmluZykiPmdldFZhbHVlPC9BPjwvQj4oamF2YS5sYW5nLlN0cmluZyZuYnNwO3FOYW1lKTwvQ09ERT4NCg0KPEJSPg0KJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7TG9vayB1cCBhbiBhdHRyaWJ1dGUncyB2YWx1ZSBieSBxdWFsaWZpZWQgKHByZWZpeGVkKSBuYW1lLjwvVEQ+DQo8L1RSPg0KPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+DQo8VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+DQo8Q09ERT4mbmJzcDtqYXZhLmxhbmcuU3RyaW5nPC9DT0RFPjwvRk9OVD48L1REPg0KPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy94bWwvc2F4L2hlbHBlcnMvQXR0cmlidXRlc0ltcGwuaHRtbCNnZXRWYWx1ZShqYXZhLmxhbmcuU3RyaW5nLCBqYXZhLmxhbmcuU3RyaW5nKSI+Z2V0VmFsdWU8L0E+PC9CPihqYXZhLmxhbmcuU3RyaW5nJm5ic3A7dXJpLAogICAgICAgICBqYXZhLmxhbmcuU3RyaW5nJm5ic3A7bG9jYWxOYW1lKTwvQ09ERT4NCg0KPEJSPg0KJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7TG9vayB1cCBhbiBhdHRyaWJ1dGUncyB2YWx1ZSBieSBOYW1lc3BhY2UtcXVhbGlmaWVkIG5hbWUuPC9URD4NCjwvVFI+DQo8VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4NCjxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4NCjxDT0RFPiZuYnNwO3ZvaWQ8L0NPREU+PC9GT05UPjwvVEQ+DQo8VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL3htbC9zYXgvaGVscGVycy9BdHRyaWJ1dGVzSW1wbC5odG1sI3JlbW92ZUF0dHJpYnV0ZShpbnQpIj5yZW1vdmVBdHRyaWJ1dGU8L0E+PC9CPihpbnQmbmJzcDtpbmRleCk8L0NPREU+DQoNCjxCUj4NCiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1JlbW92ZSBhbiBhdHRyaWJ1dGUgZnJvbSB0aGUgbGlzdC48L1REPg0KPC9UUj4NCjxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPg0KPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPg0KPENPREU+Jm5ic3A7dm9pZDwvQ09ERT48L0ZPTlQ+PC9URD4NCjxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcveG1sL3NheC9oZWxwZXJzL0F0dHJpYnV0ZXNJbXBsLmh0bWwjc2V0QXR0cmlidXRlKGludCwgamF2YS5sYW5nLlN0cmluZywgamF2YS5sYW5nLlN0cmluZywgamF2YS5sYW5nLlN0cmluZywgamF2YS5sYW5nLlN0cmluZywgamF2YS5sYW5nLlN0cmluZykiPnNldEF0dHJpYnV0ZTwvQT48L0I+KGludCZuYnNwO2luZGV4LAogICAgICAgICAgICAgamF2YS5sYW5nLlN0cmluZyZuYnNwO3VyaSwKICAgICAgICAgICAgIGphdmEubGFuZy5TdHJpbmcmbmJzcDtsb2NhbE5hbWUsCiAgICAgICAgICAgICBqYXZhLmxhbmcuU3RyaW5nJm5ic3A7cU5hbWUsCiAgICAgICAgICAgICBqYXZhLmxhbmcuU3RyaW5nJm5ic3A7dHlwZSwKICAgICAgICAgICAgIGphdmEubGFuZy5TdHJpbmcmbmJzcDt2YWx1ZSk8L0NPREU+DQoNCjxCUj4NCiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1NldCBhbiBhdHRyaWJ1dGUgaW4gdGhlIGxpc3QuPC9URD4NCjwvVFI+DQo8VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4NCjxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4NCjxDT0RFPiZuYnNwO3ZvaWQ8L0NPREU+PC9GT05UPjwvVEQ+DQo8VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL3htbC9zYXgvaGVscGVycy9BdHRyaWJ1dGVzSW1wbC5odG1sI3NldEF0dHJpYnV0ZXMob3JnLnhtbC5zYXguQXR0cmlidXRlcykiPnNldEF0dHJpYnV0ZXM8L0E+PC9CPig8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcveG1sL3NheC9BdHRyaWJ1dGVzLmh0bWwiPkF0dHJpYnV0ZXM8L0E+Jm5ic3A7YXR0cyk8L0NPREU+DQoNCjxCUj4NCiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO0NvcHkgYW4gZW50aXJlIEF0dHJpYnV0ZXMgb2JqZWN0LjwvVEQ+DQo8L1RSPg0KPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+DQo8VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+DQo8Q09ERT4mbmJzcDt2b2lkPC9DT0RFPjwvRk9OVD48L1REPg0KPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy94bWwvc2F4L2hlbHBlcnMvQXR0cmlidXRlc0ltcGwuaHRtbCNzZXRMb2NhbE5hbWUoaW50LCBqYXZhLmxhbmcuU3RyaW5nKSI+c2V0TG9jYWxOYW1lPC9BPjwvQj4oaW50Jm5ic3A7aW5kZXgsCiAgICAgICAgICAgICBqYXZhLmxhbmcuU3RyaW5nJm5ic3A7bG9jYWxOYW1lKTwvQ09ERT4NCg0KPEJSPg0KJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7U2V0IHRoZSBsb2NhbCBuYW1lIG9mIGEgc3BlY2lmaWMgYXR0cmlidXRlLjwvVEQ+DQo8L1RSPg0KPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+DQo8VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+DQo8Q09ERT4mbmJzcDt2b2lkPC9DT0RFPjwvRk9OVD48L1REPg0KPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy94bWwvc2F4L2hlbHBlcnMvQXR0cmlidXRlc0ltcGwuaHRtbCNzZXRRTmFtZShpbnQsIGphdmEubGFuZy5TdHJpbmcpIj5zZXRRTmFtZTwvQT48L0I+KGludCZuYnNwO2luZGV4LAogICAgICAgICBqYXZhLmxhbmcuU3RyaW5nJm5ic3A7cU5hbWUpPC9DT0RFPg0KDQo8QlI+DQombmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtTZXQgdGhlIHF1YWxpZmllZCBuYW1lIG9mIGEgc3BlY2lmaWMgYXR0cmlidXRlLjwvVEQ+DQo8L1RSPg0KPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+DQo8VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+DQo8Q09ERT4mbmJzcDt2b2lkPC9DT0RFPjwvRk9OVD48L1REPg0KPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy94bWwvc2F4L2hlbHBlcnMvQXR0cmlidXRlc0ltcGwuaHRtbCNzZXRUeXBlKGludCwgamF2YS5sYW5nLlN0cmluZykiPnNldFR5cGU8L0E+PC9CPihpbnQmbmJzcDtpbmRleCwKICAgICAgICBqYXZhLmxhbmcuU3RyaW5nJm5ic3A7dHlwZSk8L0NPREU+DQoNCjxCUj4NCiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1NldCB0aGUgdHlwZSBvZiBhIHNwZWNpZmljIGF0dHJpYnV0ZS48L1REPg0KPC9UUj4NCjxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPg0KPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPg0KPENPREU+Jm5ic3A7dm9pZDwvQ09ERT48L0ZPTlQ+PC9URD4NCjxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcveG1sL3NheC9oZWxwZXJzL0F0dHJpYnV0ZXNJbXBsLmh0bWwjc2V0VVJJKGludCwgamF2YS5sYW5nLlN0cmluZykiPnNldFVSSTwvQT48L0I+KGludCZuYnNwO2luZGV4LAogICAgICAgamF2YS5sYW5nLlN0cmluZyZuYnNwO3VyaSk8L0NPREU+DQoNCjxCUj4NCiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1NldCB0aGUgTmFtZXNwYWNlIFVSSSBvZiBhIHNwZWNpZmljIGF0dHJpYnV0ZS48L1REPg0KPC9UUj4NCjxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPg0KPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPg0KPENPREU+Jm5ic3A7dm9pZDwvQ09ERT48L0ZPTlQ+PC9URD4NCjxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcveG1sL3NheC9oZWxwZXJzL0F0dHJpYnV0ZXNJbXBsLmh0bWwjc2V0VmFsdWUoaW50LCBqYXZhLmxhbmcuU3RyaW5nKSI+c2V0VmFsdWU8L0E+PC9CPihpbnQmbmJzcDtpbmRleCwKICAgICAgICAgamF2YS5sYW5nLlN0cmluZyZuYnNwO3ZhbHVlKTwvQ09ERT4NCg0KPEJSPg0KJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7U2V0IHRoZSB2YWx1ZSBvZiBhIHNwZWNpZmljIGF0dHJpYnV0ZS48L1REPg0KPC9UUj4NCjwvVEFCTEU+DQombmJzcDs8QSBOQU1FPSJtZXRob2RzX2luaGVyaXRlZF9mcm9tX2NsYXNzX2phdmEubGFuZy5PYmplY3QiPjwhLS0gLS0+PC9BPgo8VEFCTEUgQk9SREVSPSIxIiBDRUxMUEFERElORz0iMyIgQ0VMTFNQQUNJTkc9IjAiIFdJRFRIPSIxMDAlIj4NCjxUUiBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iVGFibGVTdWJIZWFkaW5nQ29sb3IiPg0KPFREPjxCPk1ldGhvZHMgaW5oZXJpdGVkIGZyb20gY2xhc3MgamF2YS5sYW5nLk9iamVjdDwvQj48L1REPg0KPC9UUj4NCjxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPg0KPFREPjxDT0RFPmVxdWFscywgDQpnZXRDbGFzcywgDQpoYXNoQ29kZSwgDQpub3RpZnksIA0Kbm90aWZ5QWxsLCANCnRvU3RyaW5nLCANCndhaXQsIA0Kd2FpdCwgDQp3YWl0PC9DT0RFPjwvVEQ+DQo8L1RSPg0KPC9UQUJMRT4NCiZuYnNwOw0KPFA+DQoNCjwhLS0gPT09PT09PT09PT09IEZJRUxEIERFVEFJTCA9PT09PT09PT09PSAtLT4NCg0KDQo8IS0tID09PT09PT09PSBDT05TVFJVQ1RPUiBERVRBSUwgPT09PT09PT0gLS0+DQoNCjxBIE5BTUU9ImNvbnN0cnVjdG9yX2RldGFpbCI+PCEtLSAtLT48L0E+CjxUQUJMRSBCT1JERVI9IjEiIENFTExQQURESU5HPSIzIiBDRUxMU1BBQ0lORz0iMCIgV0lEVEg9IjEwMCUiPg0KPFRSIEJHQ09MT1I9IiNDQ0NDRkYiIENMQVNTPSJUYWJsZUhlYWRpbmdDb2xvciI+DQo8VEQgQ09MU1BBTj0xPjxGT05UIFNJWkU9IisyIj4NCjxCPkNvbnN0cnVjdG9yIERldGFpbDwvQj48L0ZPTlQ+PC9URD4NCjwvVFI+DQo8L1RBQkxFPg0KDQo8QSBOQU1FPSJBdHRyaWJ1dGVzSW1wbCgpIj48IS0tIC0tPjwvQT48SDM+DQpBdHRyaWJ1dGVzSW1wbDwvSDM+DQo8UFJFPg0KcHVibGljIDxCPkF0dHJpYnV0ZXNJbXBsPC9CPigpPC9QUkU+DQo8REw+DQo8REQ+Q29uc3RydWN0IGEgbmV3LCBlbXB0eSBBdHRyaWJ1dGVzSW1wbCBvYmplY3QuPC9ETD4NCjxIUj4NCg0KPEEgTkFNRT0iQXR0cmlidXRlc0ltcGwob3JnLnhtbC5zYXguQXR0cmlidXRlcykiPjwhLS0gLS0+PC9BPjxIMz4NCkF0dHJpYnV0ZXNJbXBsPC9IMz4NCjxQUkU+DQpwdWJsaWMgPEI+QXR0cmlidXRlc0ltcGw8L0I+KDxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy94bWwvc2F4L0F0dHJpYnV0ZXMuaHRtbCI+QXR0cmlidXRlczwvQT4mbmJzcDthdHRzKTwvUFJFPg0KPERMPg0KPEREPkNvcHkgYW4gZXhpc3RpbmcgQXR0cmlidXRlcyBvYmplY3QuCgogPHA+VGhpcyBjb25zdHJ1Y3RvciBpcyBlc3BlY2lhbGx5IHVzZWZ1bCBpbnNpZGUgYQogPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL3htbC9zYXgvQ29udGVudEhhbmRsZXIuaHRtbCNzdGFydEVsZW1lbnQoamF2YS5sYW5nLlN0cmluZywgamF2YS5sYW5nLlN0cmluZywgamF2YS5sYW5nLlN0cmluZywgb3JnLnhtbC5zYXguQXR0cmlidXRlcykiPnN0YXJ0RWxlbWVudDwvQT4gZXZlbnQuPC9wPjxERD48REw+DQo8RFQ+PEI+UGFyYW1ldGVyczo8L0I+PEREPjxDT0RFPmF0dHM8L0NPREU+IC0gVGhlIGV4aXN0aW5nIEF0dHJpYnV0ZXMgb2JqZWN0LjwvREw+DQo8L0REPg0KPC9ETD4NCg0KPCEtLSA9PT09PT09PT09PT0gTUVUSE9EIERFVEFJTCA9PT09PT09PT09IC0tPg0KDQo8QSBOQU1FPSJtZXRob2RfZGV0YWlsIj48IS0tIC0tPjwvQT4KPFRBQkxFIEJPUkRFUj0iMSIgQ0VMTFBBRERJTkc9IjMiIENFTExTUEFDSU5HPSIwIiBXSURUSD0iMTAwJSI+DQo8VFIgQkdDT0xPUj0iI0NDQ0NGRiIgQ0xBU1M9IlRhYmxlSGVhZGluZ0NvbG9yIj4NCjxURCBDT0xTUEFOPTE+PEZPTlQgU0laRT0iKzIiPg0KPEI+TWV0aG9kIERldGFpbDwvQj48L0ZPTlQ+PC9URD4NCjwvVFI+DQo8L1RBQkxFPg0KDQo8QSBOQU1FPSJnZXRMZW5ndGgoKSI+PCEtLSAtLT48L0E+PEgzPg0KZ2V0TGVuZ3RoPC9IMz4NCjxQUkU+DQpwdWJsaWMgaW50IDxCPmdldExlbmd0aDwvQj4oKTwvUFJFPg0KPERMPg0KPEREPlJldHVybiB0aGUgbnVtYmVyIG9mIGF0dHJpYnV0ZXMgaW4gdGhlIGxpc3QuPEREPjxETD4NCjxEVD48Qj5TcGVjaWZpZWQgYnk6IDwvQj48REQ+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL3htbC9zYXgvQXR0cmlidXRlcy5odG1sI2dldExlbmd0aCgpIj5nZXRMZW5ndGg8L0E+IGluIGludGVyZmFjZSA8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcveG1sL3NheC9BdHRyaWJ1dGVzLmh0bWwiPkF0dHJpYnV0ZXM8L0E+PERUPjxCPlJldHVybnM6PC9CPjxERD5UaGUgbnVtYmVyIG9mIGF0dHJpYnV0ZXMgaW4gdGhlIGxpc3QuPERUPjxCPlNlZSBBbHNvOiA8L0I+PEREPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy94bWwvc2F4L0F0dHJpYnV0ZXMuaHRtbCNnZXRMZW5ndGgoKSI+PENPREU+QXR0cmlidXRlcy5nZXRMZW5ndGgoKTwvQ09ERT48L0E+PC9ETD4NCjwvREQ+DQo8L0RMPg0KPEhSPg0KDQo8QSBOQU1FPSJnZXRVUkkoaW50KSI+PCEtLSAtLT48L0E+PEgzPg0KZ2V0VVJJPC9IMz4NCjxQUkU+DQpwdWJsaWMgamF2YS5sYW5nLlN0cmluZyA8Qj5nZXRVUkk8L0I+KGludCZuYnNwO2luZGV4KTwvUFJFPg0KPERMPg0KPEREPlJldHVybiBhbiBhdHRyaWJ1dGUncyBOYW1lc3BhY2UgVVJJLjxERD48REw+DQo8RFQ+PEI+U3BlY2lmaWVkIGJ5OiA8L0I+PEREPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy94bWwvc2F4L0F0dHJpYnV0ZXMuaHRtbCNnZXRVUkkoaW50KSI+Z2V0VVJJPC9BPiBpbiBpbnRlcmZhY2UgPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL3htbC9zYXgvQXR0cmlidXRlcy5odG1sIj5BdHRyaWJ1dGVzPC9BPjxEVD48Qj5QYXJhbWV0ZXJzOjwvQj48REQ+PENPREU+aW5kZXg8L0NPREU+IC0gVGhlIGF0dHJpYnV0ZSdzIGluZGV4ICh6ZXJvLWJhc2VkKS48RFQ+PEI+UmV0dXJuczo8L0I+PEREPlRoZSBOYW1lc3BhY2UgVVJJLCB0aGUgZW1wdHkgc3RyaW5nIGlmIG5vbmUgaXMKICAgICAgICAgYXZhaWxhYmxlLCBvciBudWxsIGlmIHRoZSBpbmRleCBpcyBvdXQgb2YgcmFuZ2UuPERUPjxCPlNlZSBBbHNvOiA8L0I+PEREPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy94bWwvc2F4L0F0dHJpYnV0ZXMuaHRtbCNnZXRVUkkoaW50KSI+PENPREU+QXR0cmlidXRlcy5nZXRVUkkoaW50KTwvQ09ERT48L0E+PC9ETD4NCjwvREQ+DQo8L0RMPg0KPEhSPg0KDQo8QSBOQU1FPSJnZXRMb2NhbE5hbWUoaW50KSI+PCEtLSAtLT48L0E+PEgzPg0KZ2V0TG9jYWxOYW1lPC9IMz4NCjxQUkU+DQpwdWJsaWMgamF2YS5sYW5nLlN0cmluZyA8Qj5nZXRMb2NhbE5hbWU8L0I+KGludCZuYnNwO2luZGV4KTwvUFJFPg0KPERMPg0KPEREPlJldHVybiBhbiBhdHRyaWJ1dGUncyBsb2NhbCBuYW1lLjxERD48REw+DQo8RFQ+PEI+U3BlY2lmaWVkIGJ5OiA8L0I+PEREPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy94bWwvc2F4L0F0dHJpYnV0ZXMuaHRtbCNnZXRMb2NhbE5hbWUoaW50KSI+Z2V0TG9jYWxOYW1lPC9BPiBpbiBpbnRlcmZhY2UgPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL3htbC9zYXgvQXR0cmlidXRlcy5odG1sIj5BdHRyaWJ1dGVzPC9BPjxEVD48Qj5QYXJhbWV0ZXJzOjwvQj48REQ+PENPREU+aW5kZXg8L0NPREU+IC0gVGhlIGF0dHJpYnV0ZSdzIGluZGV4ICh6ZXJvLWJhc2VkKS48RFQ+PEI+UmV0dXJuczo8L0I+PEREPlRoZSBhdHRyaWJ1dGUncyBsb2NhbCBuYW1lLCB0aGUgZW1wdHkgc3RyaW5nIGlmIAogICAgICAgICBub25lIGlzIGF2YWlsYWJsZSwgb3IgbnVsbCBpZiB0aGUgaW5kZXggaWYgb3V0IG9mIHJhbmdlLjxEVD48Qj5TZWUgQWxzbzogPC9CPjxERD48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcveG1sL3NheC9BdHRyaWJ1dGVzLmh0bWwjZ2V0TG9jYWxOYW1lKGludCkiPjxDT0RFPkF0dHJpYnV0ZXMuZ2V0TG9jYWxOYW1lKGludCk8L0NPREU+PC9BPjwvREw+DQo8L0REPg0KPC9ETD4NCjxIUj4NCg0KPEEgTkFNRT0iZ2V0UU5hbWUoaW50KSI+PCEtLSAtLT48L0E+PEgzPg0KZ2V0UU5hbWU8L0gzPg0KPFBSRT4NCnB1YmxpYyBqYXZhLmxhbmcuU3RyaW5nIDxCPmdldFFOYW1lPC9CPihpbnQmbmJzcDtpbmRleCk8L1BSRT4NCjxETD4NCjxERD5SZXR1cm4gYW4gYXR0cmlidXRlJ3MgcXVhbGlmaWVkIChwcmVmaXhlZCkgbmFtZS48REQ+PERMPg0KPERUPjxCPlNwZWNpZmllZCBieTogPC9CPjxERD48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcveG1sL3NheC9BdHRyaWJ1dGVzLmh0bWwjZ2V0UU5hbWUoaW50KSI+Z2V0UU5hbWU8L0E+IGluIGludGVyZmFjZSA8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcveG1sL3NheC9BdHRyaWJ1dGVzLmh0bWwiPkF0dHJpYnV0ZXM8L0E+PERUPjxCPlBhcmFtZXRlcnM6PC9CPjxERD48Q09ERT5pbmRleDwvQ09ERT4gLSBUaGUgYXR0cmlidXRlJ3MgaW5kZXggKHplcm8tYmFzZWQpLjxEVD48Qj5SZXR1cm5zOjwvQj48REQ+VGhlIGF0dHJpYnV0ZSdzIHF1YWxpZmllZCBuYW1lLCB0aGUgZW1wdHkgc3RyaW5nIGlmIAogICAgICAgICBub25lIGlzIGF2YWlsYWJsZSwgb3IgbnVsbCBpZiB0aGUgaW5kZXggaXMgb3V0IG9mIGJvdW5kcy48RFQ+PEI+U2VlIEFsc286IDwvQj48REQ+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL3htbC9zYXgvQXR0cmlidXRlcy5odG1sI2dldFFOYW1lKGludCkiPjxDT0RFPkF0dHJpYnV0ZXMuZ2V0UU5hbWUoaW50KTwvQ09ERT48L0E+PC9ETD4NCjwvREQ+DQo8L0RMPg0KPEhSPg0KDQo8QSBOQU1FPSJnZXRUeXBlKGludCkiPjwhLS0gLS0+PC9BPjxIMz4NCmdldFR5cGU8L0gzPg0KPFBSRT4NCnB1YmxpYyBqYXZhLmxhbmcuU3RyaW5nIDxCPmdldFR5cGU8L0I+KGludCZuYnNwO2luZGV4KTwvUFJFPg0KPERMPg0KPEREPlJldHVybiBhbiBhdHRyaWJ1dGUncyB0eXBlIGJ5IGluZGV4LjxERD48REw+DQo8RFQ+PEI+U3BlY2lmaWVkIGJ5OiA8L0I+PEREPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy94bWwvc2F4L0F0dHJpYnV0ZXMuaHRtbCNnZXRUeXBlKGludCkiPmdldFR5cGU8L0E+IGluIGludGVyZmFjZSA8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcveG1sL3NheC9BdHRyaWJ1dGVzLmh0bWwiPkF0dHJpYnV0ZXM8L0E+PERUPjxCPlBhcmFtZXRlcnM6PC9CPjxERD48Q09ERT5pbmRleDwvQ09ERT4gLSBUaGUgYXR0cmlidXRlJ3MgaW5kZXggKHplcm8tYmFzZWQpLjxEVD48Qj5SZXR1cm5zOjwvQj48REQ+VGhlIGF0dHJpYnV0ZSdzIHR5cGUsICJDREFUQSIgaWYgdGhlIHR5cGUgaXMgdW5rbm93biwgb3IgbnVsbAogICAgICAgICBpZiB0aGUgaW5kZXggaXMgb3V0IG9mIGJvdW5kcy48RFQ+PEI+U2VlIEFsc286IDwvQj48REQ+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL3htbC9zYXgvQXR0cmlidXRlcy5odG1sI2dldFR5cGUoaW50KSI+PENPREU+QXR0cmlidXRlcy5nZXRUeXBlKGludCk8L0NPREU+PC9BPjwvREw+DQo8L0REPg0KPC9ETD4NCjxIUj4NCg0KPEEgTkFNRT0iZ2V0VmFsdWUoaW50KSI+PCEtLSAtLT48L0E+PEgzPg0KZ2V0VmFsdWU8L0gzPg0KPFBSRT4NCnB1YmxpYyBqYXZhLmxhbmcuU3RyaW5nIDxCPmdldFZhbHVlPC9CPihpbnQmbmJzcDtpbmRleCk8L1BSRT4NCjxETD4NCjxERD5SZXR1cm4gYW4gYXR0cmlidXRlJ3MgdmFsdWUgYnkgaW5kZXguPEREPjxETD4NCjxEVD48Qj5TcGVjaWZpZWQgYnk6IDwvQj48REQ+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL3htbC9zYXgvQXR0cmlidXRlcy5odG1sI2dldFZhbHVlKGludCkiPmdldFZhbHVlPC9BPiBpbiBpbnRlcmZhY2UgPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL3htbC9zYXgvQXR0cmlidXRlcy5odG1sIj5BdHRyaWJ1dGVzPC9BPjxEVD48Qj5QYXJhbWV0ZXJzOjwvQj48REQ+PENPREU+aW5kZXg8L0NPREU+IC0gVGhlIGF0dHJpYnV0ZSdzIGluZGV4ICh6ZXJvLWJhc2VkKS48RFQ+PEI+UmV0dXJuczo8L0I+PEREPlRoZSBhdHRyaWJ1dGUncyB2YWx1ZSBvciBudWxsIGlmIHRoZSBpbmRleCBpcyBvdXQgb2YgYm91bmRzLjxEVD48Qj5TZWUgQWxzbzogPC9CPjxERD48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcveG1sL3NheC9BdHRyaWJ1dGVzLmh0bWwjZ2V0VmFsdWUoaW50KSI+PENPREU+QXR0cmlidXRlcy5nZXRWYWx1ZShpbnQpPC9DT0RFPjwvQT48L0RMPg0KPC9ERD4NCjwvREw+DQo8SFI+DQoNCjxBIE5BTUU9ImdldEluZGV4KGphdmEubGFuZy5TdHJpbmcsIGphdmEubGFuZy5TdHJpbmcpIj48IS0tIC0tPjwvQT48SDM+DQpnZXRJbmRleDwvSDM+DQo8UFJFPg0KcHVibGljIGludCA8Qj5nZXRJbmRleDwvQj4oamF2YS5sYW5nLlN0cmluZyZuYnNwO3VyaSwKICAgICAgICAgICAgICAgICAgICBqYXZhLmxhbmcuU3RyaW5nJm5ic3A7bG9jYWxOYW1lKTwvUFJFPg0KPERMPg0KPEREPkxvb2sgdXAgYW4gYXR0cmlidXRlJ3MgaW5kZXggYnkgTmFtZXNwYWNlIG5hbWUuCgogPHA+SW4gbWFueSBjYXNlcywgaXQgd2lsbCBiZSBtb3JlIGVmZmljaWVudCB0byBsb29rIHVwIHRoZSBuYW1lIG9uY2UgYW5kCiB1c2UgdGhlIGluZGV4IHF1ZXJ5IG1ldGhvZHMgcmF0aGVyIHRoYW4gdXNpbmcgdGhlIG5hbWUgcXVlcnkgbWV0aG9kcwogcmVwZWF0ZWRseS48L3A+PEREPjxETD4NCjxEVD48Qj5TcGVjaWZpZWQgYnk6IDwvQj48REQ+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL3htbC9zYXgvQXR0cmlidXRlcy5odG1sI2dldEluZGV4KGphdmEubGFuZy5TdHJpbmcsIGphdmEubGFuZy5TdHJpbmcpIj5nZXRJbmRleDwvQT4gaW4gaW50ZXJmYWNlIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy94bWwvc2F4L0F0dHJpYnV0ZXMuaHRtbCI+QXR0cmlidXRlczwvQT48RFQ+PEI+UGFyYW1ldGVyczo8L0I+PEREPjxDT0RFPnVyaTwvQ09ERT4gLSBUaGUgYXR0cmlidXRlJ3MgTmFtZXNwYWNlIFVSSSwgb3IgdGhlIGVtcHR5CiAgICAgICAgc3RyaW5nIGlmIG5vbmUgaXMgYXZhaWxhYmxlLjxERD48Q09ERT5sb2NhbE5hbWU8L0NPREU+IC0gVGhlIGF0dHJpYnV0ZSdzIGxvY2FsIG5hbWUuPERUPjxCPlJldHVybnM6PC9CPjxERD5UaGUgYXR0cmlidXRlJ3MgaW5kZXgsIG9yIC0xIGlmIG5vbmUgbWF0Y2hlcy48RFQ+PEI+U2VlIEFsc286IDwvQj48REQ+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL3htbC9zYXgvQXR0cmlidXRlcy5odG1sI2dldEluZGV4KGphdmEubGFuZy5TdHJpbmcsIGphdmEubGFuZy5TdHJpbmcpIj48Q09ERT5BdHRyaWJ1dGVzLmdldEluZGV4KGphdmEubGFuZy5TdHJpbmcsamF2YS5sYW5nLlN0cmluZyk8L0NPREU+PC9BPjwvREw+DQo8L0REPg0KPC9ETD4NCjxIUj4NCg0KPEEgTkFNRT0iZ2V0SW5kZXgoamF2YS5sYW5nLlN0cmluZykiPjwhLS0gLS0+PC9BPjxIMz4NCmdldEluZGV4PC9IMz4NCjxQUkU+DQpwdWJsaWMgaW50IDxCPmdldEluZGV4PC9CPihqYXZhLmxhbmcuU3RyaW5nJm5ic3A7cU5hbWUpPC9QUkU+DQo8REw+DQo8REQ+TG9vayB1cCBhbiBhdHRyaWJ1dGUncyBpbmRleCBieSBxdWFsaWZpZWQgKHByZWZpeGVkKSBuYW1lLjxERD48REw+DQo8RFQ+PEI+U3BlY2lmaWVkIGJ5OiA8L0I+PEREPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy94bWwvc2F4L0F0dHJpYnV0ZXMuaHRtbCNnZXRJbmRleChqYXZhLmxhbmcuU3RyaW5nKSI+Z2V0SW5kZXg8L0E+IGluIGludGVyZmFjZSA8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcveG1sL3NheC9BdHRyaWJ1dGVzLmh0bWwiPkF0dHJpYnV0ZXM8L0E+PERUPjxCPlBhcmFtZXRlcnM6PC9CPjxERD48Q09ERT5xTmFtZTwvQ09ERT4gLSBUaGUgcXVhbGlmaWVkIG5hbWUuPERUPjxCPlJldHVybnM6PC9CPjxERD5UaGUgYXR0cmlidXRlJ3MgaW5kZXgsIG9yIC0xIGlmIG5vbmUgbWF0Y2hlcy48RFQ+PEI+U2VlIEFsc286IDwvQj48REQ+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL3htbC9zYXgvQXR0cmlidXRlcy5odG1sI2dldEluZGV4KGphdmEubGFuZy5TdHJpbmcpIj48Q09ERT5BdHRyaWJ1dGVzLmdldEluZGV4KGphdmEubGFuZy5TdHJpbmcpPC9DT0RFPjwvQT48L0RMPg0KPC9ERD4NCjwvREw+DQo8SFI+DQoNCjxBIE5BTUU9ImdldFR5cGUoamF2YS5sYW5nLlN0cmluZywgamF2YS5sYW5nLlN0cmluZykiPjwhLS0gLS0+PC9BPjxIMz4NCmdldFR5cGU8L0gzPg0KPFBSRT4NCnB1YmxpYyBqYXZhLmxhbmcuU3RyaW5nIDxCPmdldFR5cGU8L0I+KGphdmEubGFuZy5TdHJpbmcmbmJzcDt1cmksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgamF2YS5sYW5nLlN0cmluZyZuYnNwO2xvY2FsTmFtZSk8L1BSRT4NCjxETD4NCjxERD5Mb29rIHVwIGFuIGF0dHJpYnV0ZSdzIHR5cGUgYnkgTmFtZXNwYWNlLXF1YWxpZmllZCBuYW1lLjxERD48REw+DQo8RFQ+PEI+U3BlY2lmaWVkIGJ5OiA8L0I+PEREPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy94bWwvc2F4L0F0dHJpYnV0ZXMuaHRtbCNnZXRUeXBlKGphdmEubGFuZy5TdHJpbmcsIGphdmEubGFuZy5TdHJpbmcpIj5nZXRUeXBlPC9BPiBpbiBpbnRlcmZhY2UgPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL3htbC9zYXgvQXR0cmlidXRlcy5odG1sIj5BdHRyaWJ1dGVzPC9BPjxEVD48Qj5QYXJhbWV0ZXJzOjwvQj48REQ+PENPREU+dXJpPC9DT0RFPiAtIFRoZSBOYW1lc3BhY2UgVVJJLCBvciB0aGUgZW1wdHkgc3RyaW5nIGZvciBhIG5hbWUKICAgICAgICB3aXRoIG5vIGV4cGxpY2l0IE5hbWVzcGFjZSBVUkkuPEREPjxDT0RFPmxvY2FsTmFtZTwvQ09ERT4gLSBUaGUgbG9jYWwgbmFtZS48RFQ+PEI+UmV0dXJuczo8L0I+PEREPlRoZSBhdHRyaWJ1dGUncyB0eXBlLCBvciBudWxsIGlmIHRoZXJlIGlzIG5vCiAgICAgICAgIG1hdGNoaW5nIGF0dHJpYnV0ZS48RFQ+PEI+U2VlIEFsc286IDwvQj48REQ+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL3htbC9zYXgvQXR0cmlidXRlcy5odG1sI2dldFR5cGUoamF2YS5sYW5nLlN0cmluZywgamF2YS5sYW5nLlN0cmluZykiPjxDT0RFPkF0dHJpYnV0ZXMuZ2V0VHlwZShqYXZhLmxhbmcuU3RyaW5nLGphdmEubGFuZy5TdHJpbmcpPC9DT0RFPjwvQT48L0RMPg0KPC9ERD4NCjwvREw+DQo8SFI+DQoNCjxBIE5BTUU9ImdldFR5cGUoamF2YS5sYW5nLlN0cmluZykiPjwhLS0gLS0+PC9BPjxIMz4NCmdldFR5cGU8L0gzPg0KPFBSRT4NCnB1YmxpYyBqYXZhLmxhbmcuU3RyaW5nIDxCPmdldFR5cGU8L0I+KGphdmEubGFuZy5TdHJpbmcmbmJzcDtxTmFtZSk8L1BSRT4NCjxETD4NCjxERD5Mb29rIHVwIGFuIGF0dHJpYnV0ZSdzIHR5cGUgYnkgcXVhbGlmaWVkIChwcmVmaXhlZCkgbmFtZS48REQ+PERMPg0KPERUPjxCPlNwZWNpZmllZCBieTogPC9CPjxERD48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcveG1sL3NheC9BdHRyaWJ1dGVzLmh0bWwjZ2V0VHlwZShqYXZhLmxhbmcuU3RyaW5nKSI+Z2V0VHlwZTwvQT4gaW4gaW50ZXJmYWNlIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy94bWwvc2F4L0F0dHJpYnV0ZXMuaHRtbCI+QXR0cmlidXRlczwvQT48RFQ+PEI+UGFyYW1ldGVyczo8L0I+PEREPjxDT0RFPnFOYW1lPC9DT0RFPiAtIFRoZSBxdWFsaWZpZWQgbmFtZS48RFQ+PEI+UmV0dXJuczo8L0I+PEREPlRoZSBhdHRyaWJ1dGUncyB0eXBlLCBvciBudWxsIGlmIHRoZXJlIGlzIG5vCiAgICAgICAgIG1hdGNoaW5nIGF0dHJpYnV0ZS48RFQ+PEI+U2VlIEFsc286IDwvQj48REQ+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL3htbC9zYXgvQXR0cmlidXRlcy5odG1sI2dldFR5cGUoamF2YS5sYW5nLlN0cmluZykiPjxDT0RFPkF0dHJpYnV0ZXMuZ2V0VHlwZShqYXZhLmxhbmcuU3RyaW5nKTwvQ09ERT48L0E+PC9ETD4NCjwvREQ+DQo8L0RMPg0KPEhSPg0KDQo8QSBOQU1FPSJnZXRWYWx1ZShqYXZhLmxhbmcuU3RyaW5nLCBqYXZhLmxhbmcuU3RyaW5nKSI+PCEtLSAtLT48L0E+PEgzPg0KZ2V0VmFsdWU8L0gzPg0KPFBSRT4NCnB1YmxpYyBqYXZhLmxhbmcuU3RyaW5nIDxCPmdldFZhbHVlPC9CPihqYXZhLmxhbmcuU3RyaW5nJm5ic3A7dXJpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqYXZhLmxhbmcuU3RyaW5nJm5ic3A7bG9jYWxOYW1lKTwvUFJFPg0KPERMPg0KPEREPkxvb2sgdXAgYW4gYXR0cmlidXRlJ3MgdmFsdWUgYnkgTmFtZXNwYWNlLXF1YWxpZmllZCBuYW1lLjxERD48REw+DQo8RFQ+PEI+U3BlY2lmaWVkIGJ5OiA8L0I+PEREPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy94bWwvc2F4L0F0dHJpYnV0ZXMuaHRtbCNnZXRWYWx1ZShqYXZhLmxhbmcuU3RyaW5nLCBqYXZhLmxhbmcuU3RyaW5nKSI+Z2V0VmFsdWU8L0E+IGluIGludGVyZmFjZSA8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcveG1sL3NheC9BdHRyaWJ1dGVzLmh0bWwiPkF0dHJpYnV0ZXM8L0E+PERUPjxCPlBhcmFtZXRlcnM6PC9CPjxERD48Q09ERT51cmk8L0NPREU+IC0gVGhlIE5hbWVzcGFjZSBVUkksIG9yIHRoZSBlbXB0eSBzdHJpbmcgZm9yIGEgbmFtZQogICAgICAgIHdpdGggbm8gZXhwbGljaXQgTmFtZXNwYWNlIFVSSS48REQ+PENPREU+bG9jYWxOYW1lPC9DT0RFPiAtIFRoZSBsb2NhbCBuYW1lLjxEVD48Qj5SZXR1cm5zOjwvQj48REQ+VGhlIGF0dHJpYnV0ZSdzIHZhbHVlLCBvciBudWxsIGlmIHRoZXJlIGlzIG5vCiAgICAgICAgIG1hdGNoaW5nIGF0dHJpYnV0ZS48RFQ+PEI+U2VlIEFsc286IDwvQj48REQ+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL3htbC9zYXgvQXR0cmlidXRlcy5odG1sI2dldFZhbHVlKGphdmEubGFuZy5TdHJpbmcsIGphdmEubGFuZy5TdHJpbmcpIj48Q09ERT5BdHRyaWJ1dGVzLmdldFZhbHVlKGphdmEubGFuZy5TdHJpbmcsamF2YS5sYW5nLlN0cmluZyk8L0NPREU+PC9BPjwvREw+DQo8L0REPg0KPC9ETD4NCjxIUj4NCg0KPEEgTkFNRT0iZ2V0VmFsdWUoamF2YS5sYW5nLlN0cmluZykiPjwhLS0gLS0+PC9BPjxIMz4NCmdldFZhbHVlPC9IMz4NCjxQUkU+DQpwdWJsaWMgamF2YS5sYW5nLlN0cmluZyA8Qj5nZXRWYWx1ZTwvQj4oamF2YS5sYW5nLlN0cmluZyZuYnNwO3FOYW1lKTwvUFJFPg0KPERMPg0KPEREPkxvb2sgdXAgYW4gYXR0cmlidXRlJ3MgdmFsdWUgYnkgcXVhbGlmaWVkIChwcmVmaXhlZCkgbmFtZS48REQ+PERMPg0KPERUPjxCPlNwZWNpZmllZCBieTogPC9CPjxERD48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcveG1sL3NheC9BdHRyaWJ1dGVzLmh0bWwjZ2V0VmFsdWUoamF2YS5sYW5nLlN0cmluZykiPmdldFZhbHVlPC9BPiBpbiBpbnRlcmZhY2UgPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL3htbC9zYXgvQXR0cmlidXRlcy5odG1sIj5BdHRyaWJ1dGVzPC9BPjxEVD48Qj5QYXJhbWV0ZXJzOjwvQj48REQ+PENPREU+cU5hbWU8L0NPREU+IC0gVGhlIHF1YWxpZmllZCBuYW1lLjxEVD48Qj5SZXR1cm5zOjwvQj48REQ+VGhlIGF0dHJpYnV0ZSdzIHZhbHVlLCBvciBudWxsIGlmIHRoZXJlIGlzIG5vCiAgICAgICAgIG1hdGNoaW5nIGF0dHJpYnV0ZS48RFQ+PEI+U2VlIEFsc286IDwvQj48REQ+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL3htbC9zYXgvQXR0cmlidXRlcy5odG1sI2dldFZhbHVlKGphdmEubGFuZy5TdHJpbmcpIj48Q09ERT5BdHRyaWJ1dGVzLmdldFZhbHVlKGphdmEubGFuZy5TdHJpbmcpPC9DT0RFPjwvQT48L0RMPg0KPC9ERD4NCjwvREw+DQo8SFI+DQoNCjxBIE5BTUU9ImNsZWFyKCkiPjwhLS0gLS0+PC9BPjxIMz4NCmNsZWFyPC9IMz4NCjxQUkU+DQpwdWJsaWMgdm9pZCA8Qj5jbGVhcjwvQj4oKTwvUFJFPg0KPERMPg0KPEREPkNsZWFyIHRoZSBhdHRyaWJ1dGUgbGlzdCBmb3IgcmV1c2UuCgogPHA+Tm90ZSB0aGF0IGxpdHRsZSBtZW1vcnkgaXMgZnJlZWQgYnkgdGhpcyBjYWxsOgogdGhlIGN1cnJlbnQgYXJyYXkgaXMga2VwdCBzbyBpdCBjYW4gYmUgCiByZXVzZWQuPC9wPjxERD48REw+DQo8L0RMPg0KPC9ERD4NCjwvREw+DQo8SFI+DQoNCjxBIE5BTUU9InNldEF0dHJpYnV0ZXMob3JnLnhtbC5zYXguQXR0cmlidXRlcykiPjwhLS0gLS0+PC9BPjxIMz4NCnNldEF0dHJpYnV0ZXM8L0gzPg0KPFBSRT4NCnB1YmxpYyB2b2lkIDxCPnNldEF0dHJpYnV0ZXM8L0I+KDxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy94bWwvc2F4L0F0dHJpYnV0ZXMuaHRtbCI+QXR0cmlidXRlczwvQT4mbmJzcDthdHRzKTwvUFJFPg0KPERMPg0KPEREPkNvcHkgYW4gZW50aXJlIEF0dHJpYnV0ZXMgb2JqZWN0LgoKIDxwPkl0IG1heSBiZSBtb3JlIGVmZmljaWVudCB0byByZXVzZSBhbiBleGlzdGluZyBvYmplY3QKIHJhdGhlciB0aGFuIGNvbnN0YW50bHkgYWxsb2NhdGluZyBuZXcgb25lcy48L3A+PEREPjxETD4NCjxEVD48Qj5QYXJhbWV0ZXJzOjwvQj48REQ+PENPREU+YXR0czwvQ09ERT4gLSBUaGUgYXR0cmlidXRlcyB0byBjb3B5LjwvREw+DQo8L0REPg0KPC9ETD4NCjxIUj4NCg0KPEEgTkFNRT0iYWRkQXR0cmlidXRlKGphdmEubGFuZy5TdHJpbmcsIGphdmEubGFuZy5TdHJpbmcsIGphdmEubGFuZy5TdHJpbmcsIGphdmEubGFuZy5TdHJpbmcsIGphdmEubGFuZy5TdHJpbmcpIj48IS0tIC0tPjwvQT48SDM+DQphZGRBdHRyaWJ1dGU8L0gzPg0KPFBSRT4NCnB1YmxpYyB2b2lkIDxCPmFkZEF0dHJpYnV0ZTwvQj4oamF2YS5sYW5nLlN0cmluZyZuYnNwO3VyaSwKICAgICAgICAgICAgICAgICAgICAgICAgIGphdmEubGFuZy5TdHJpbmcmbmJzcDtsb2NhbE5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICBqYXZhLmxhbmcuU3RyaW5nJm5ic3A7cU5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICBqYXZhLmxhbmcuU3RyaW5nJm5ic3A7dHlwZSwKICAgICAgICAgICAgICAgICAgICAgICAgIGphdmEubGFuZy5TdHJpbmcmbmJzcDt2YWx1ZSk8L1BSRT4NCjxETD4NCjxERD5BZGQgYW4gYXR0cmlidXRlIHRvIHRoZSBlbmQgb2YgdGhlIGxpc3QuCgogPHA+Rm9yIHRoZSBzYWtlIG9mIHNwZWVkLCB0aGlzIG1ldGhvZCBkb2VzIG5vIGNoZWNraW5nCiB0byBzZWUgaWYgdGhlIGF0dHJpYnV0ZSBpcyBhbHJlYWR5IGluIHRoZSBsaXN0OiB0aGF0IGlzCiB0aGUgcmVzcG9uc2liaWxpdHkgb2YgdGhlIGFwcGxpY2F0aW9uLjwvcD48REQ+PERMPg0KPERUPjxCPlBhcmFtZXRlcnM6PC9CPjxERD48Q09ERT51cmk8L0NPREU+IC0gVGhlIE5hbWVzcGFjZSBVUkksIG9yIHRoZSBlbXB0eSBzdHJpbmcgaWYKICAgICAgICBub25lIGlzIGF2YWlsYWJsZSBvciBOYW1lc3BhY2UgcHJvY2Vzc2luZyBpcyBub3QKICAgICAgICBiZWluZyBwZXJmb3JtZWQuPEREPjxDT0RFPmxvY2FsTmFtZTwvQ09ERT4gLSBUaGUgbG9jYWwgbmFtZSwgb3IgdGhlIGVtcHR5IHN0cmluZyBpZgogICAgICAgIE5hbWVzcGFjZSBwcm9jZXNzaW5nIGlzIG5vdCBiZWluZyBwZXJmb3JtZWQuPEREPjxDT0RFPnFOYW1lPC9DT0RFPiAtIFRoZSBxdWFsaWZpZWQgKHByZWZpeGVkKSBuYW1lLCBvciB0aGUgZW1wdHkgc3RyaW5nCiAgICAgICAgaWYgcXVhbGlmaWVkIG5hbWVzIGFyZSBub3QgYXZhaWxhYmxlLjxERD48Q09ERT50eXBlPC9DT0RFPiAtIFRoZSBhdHRyaWJ1dGUgdHlwZSBhcyBhIHN0cmluZy48REQ+PENPREU+dmFsdWU8L0NPREU+IC0gVGhlIGF0dHJpYnV0ZSB2YWx1ZS48L0RMPg0KPC9ERD4NCjwvREw+DQo8SFI+DQoNCjxBIE5BTUU9InNldEF0dHJpYnV0ZShpbnQsIGphdmEubGFuZy5TdHJpbmcsIGphdmEubGFuZy5TdHJpbmcsIGphdmEubGFuZy5TdHJpbmcsIGphdmEubGFuZy5TdHJpbmcsIGphdmEubGFuZy5TdHJpbmcpIj48IS0tIC0tPjwvQT48SDM+DQpzZXRBdHRyaWJ1dGU8L0gzPg0KPFBSRT4NCnB1YmxpYyB2b2lkIDxCPnNldEF0dHJpYnV0ZTwvQj4oaW50Jm5ic3A7aW5kZXgsCiAgICAgICAgICAgICAgICAgICAgICAgICBqYXZhLmxhbmcuU3RyaW5nJm5ic3A7dXJpLAogICAgICAgICAgICAgICAgICAgICAgICAgamF2YS5sYW5nLlN0cmluZyZuYnNwO2xvY2FsTmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgIGphdmEubGFuZy5TdHJpbmcmbmJzcDtxTmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgIGphdmEubGFuZy5TdHJpbmcmbmJzcDt0eXBlLAogICAgICAgICAgICAgICAgICAgICAgICAgamF2YS5sYW5nLlN0cmluZyZuYnNwO3ZhbHVlKTwvUFJFPg0KPERMPg0KPEREPlNldCBhbiBhdHRyaWJ1dGUgaW4gdGhlIGxpc3QuCgogPHA+Rm9yIHRoZSBzYWtlIG9mIHNwZWVkLCB0aGlzIG1ldGhvZCBkb2VzIG5vIGNoZWNraW5nCiBmb3IgbmFtZSBjb25mbGljdHMgb3Igd2VsbC1mb3JtZWRuZXNzOiBzdWNoIGNoZWNrcyBhcmUgdGhlCiByZXNwb25zaWJpbGl0eSBvZiB0aGUgYXBwbGljYXRpb24uPC9wPjxERD48REw+DQo8RFQ+PEI+UGFyYW1ldGVyczo8L0I+PEREPjxDT0RFPmluZGV4PC9DT0RFPiAtIFRoZSBpbmRleCBvZiB0aGUgYXR0cmlidXRlICh6ZXJvLWJhc2VkKS48REQ+PENPREU+dXJpPC9DT0RFPiAtIFRoZSBOYW1lc3BhY2UgVVJJLCBvciB0aGUgZW1wdHkgc3RyaW5nIGlmCiAgICAgICAgbm9uZSBpcyBhdmFpbGFibGUgb3IgTmFtZXNwYWNlIHByb2Nlc3NpbmcgaXMgbm90CiAgICAgICAgYmVpbmcgcGVyZm9ybWVkLjxERD48Q09ERT5sb2NhbE5hbWU8L0NPREU+IC0gVGhlIGxvY2FsIG5hbWUsIG9yIHRoZSBlbXB0eSBzdHJpbmcgaWYKICAgICAgICBOYW1lc3BhY2UgcHJvY2Vzc2luZyBpcyBub3QgYmVpbmcgcGVyZm9ybWVkLjxERD48Q09ERT5xTmFtZTwvQ09ERT4gLSBUaGUgcXVhbGlmaWVkIG5hbWUsIG9yIHRoZSBlbXB0eSBzdHJpbmcKICAgICAgICBpZiBxdWFsaWZpZWQgbmFtZXMgYXJlIG5vdCBhdmFpbGFibGUuPEREPjxDT0RFPnR5cGU8L0NPREU+IC0gVGhlIGF0dHJpYnV0ZSB0eXBlIGFzIGEgc3RyaW5nLjxERD48Q09ERT52YWx1ZTwvQ09ERT4gLSBUaGUgYXR0cmlidXRlIHZhbHVlLjxEVD48Qj5UaHJvd3M6PC9CPjxERD5qYXZhLmxhbmcuQXJyYXlJbmRleE91dE9mQm91bmRzRXhjZXB0aW9uIC0gV2hlbiB0aGUKICAgICAgICAgICAgc3VwcGxpZWQgaW5kZXggZG9lcyBub3QgcG9pbnQgdG8gYW4gYXR0cmlidXRlCiAgICAgICAgICAgIGluIHRoZSBsaXN0LjwvREw+DQo8L0REPg0KPC9ETD4NCjxIUj4NCg0KPEEgTkFNRT0icmVtb3ZlQXR0cmlidXRlKGludCkiPjwhLS0gLS0+PC9BPjxIMz4NCnJlbW92ZUF0dHJpYnV0ZTwvSDM+DQo8UFJFPg0KcHVibGljIHZvaWQgPEI+cmVtb3ZlQXR0cmlidXRlPC9CPihpbnQmbmJzcDtpbmRleCk8L1BSRT4NCjxETD4NCjxERD5SZW1vdmUgYW4gYXR0cmlidXRlIGZyb20gdGhlIGxpc3QuPEREPjxETD4NCjxEVD48Qj5QYXJhbWV0ZXJzOjwvQj48REQ+PENPREU+aW5kZXg8L0NPREU+IC0gVGhlIGluZGV4IG9mIHRoZSBhdHRyaWJ1dGUgKHplcm8tYmFzZWQpLjxEVD48Qj5UaHJvd3M6PC9CPjxERD5qYXZhLmxhbmcuQXJyYXlJbmRleE91dE9mQm91bmRzRXhjZXB0aW9uIC0gV2hlbiB0aGUKICAgICAgICAgICAgc3VwcGxpZWQgaW5kZXggZG9lcyBub3QgcG9pbnQgdG8gYW4gYXR0cmlidXRlCiAgICAgICAgICAgIGluIHRoZSBsaXN0LjwvREw+DQo8L0REPg0KPC9ETD4NCjxIUj4NCg0KPEEgTkFNRT0ic2V0VVJJKGludCwgamF2YS5sYW5nLlN0cmluZykiPjwhLS0gLS0+PC9BPjxIMz4NCnNldFVSSTwvSDM+DQo8UFJFPg0KcHVibGljIHZvaWQgPEI+c2V0VVJJPC9CPihpbnQmbmJzcDtpbmRleCwKICAgICAgICAgICAgICAgICAgIGphdmEubGFuZy5TdHJpbmcmbmJzcDt1cmkpPC9QUkU+DQo8REw+DQo8REQ+U2V0IHRoZSBOYW1lc3BhY2UgVVJJIG9mIGEgc3BlY2lmaWMgYXR0cmlidXRlLjxERD48REw+DQo8RFQ+PEI+UGFyYW1ldGVyczo8L0I+PEREPjxDT0RFPmluZGV4PC9DT0RFPiAtIFRoZSBpbmRleCBvZiB0aGUgYXR0cmlidXRlICh6ZXJvLWJhc2VkKS48REQ+PENPREU+dXJpPC9DT0RFPiAtIFRoZSBhdHRyaWJ1dGUncyBOYW1lc3BhY2UgVVJJLCBvciB0aGUgZW1wdHkKICAgICAgICBzdHJpbmcgZm9yIG5vbmUuPERUPjxCPlRocm93czo8L0I+PEREPmphdmEubGFuZy5BcnJheUluZGV4T3V0T2ZCb3VuZHNFeGNlcHRpb24gLSBXaGVuIHRoZQogICAgICAgICAgICBzdXBwbGllZCBpbmRleCBkb2VzIG5vdCBwb2ludCB0byBhbiBhdHRyaWJ1dGUKICAgICAgICAgICAgaW4gdGhlIGxpc3QuPC9ETD4NCjwvREQ+DQo8L0RMPg0KPEhSPg0KDQo8QSBOQU1FPSJzZXRMb2NhbE5hbWUoaW50LCBqYXZhLmxhbmcuU3RyaW5nKSI+PCEtLSAtLT48L0E+PEgzPg0Kc2V0TG9jYWxOYW1lPC9IMz4NCjxQUkU+DQpwdWJsaWMgdm9pZCA8Qj5zZXRMb2NhbE5hbWU8L0I+KGludCZuYnNwO2luZGV4LAogICAgICAgICAgICAgICAgICAgICAgICAgamF2YS5sYW5nLlN0cmluZyZuYnNwO2xvY2FsTmFtZSk8L1BSRT4NCjxETD4NCjxERD5TZXQgdGhlIGxvY2FsIG5hbWUgb2YgYSBzcGVjaWZpYyBhdHRyaWJ1dGUuPEREPjxETD4NCjxEVD48Qj5QYXJhbWV0ZXJzOjwvQj48REQ+PENPREU+aW5kZXg8L0NPREU+IC0gVGhlIGluZGV4IG9mIHRoZSBhdHRyaWJ1dGUgKHplcm8tYmFzZWQpLjxERD48Q09ERT5sb2NhbE5hbWU8L0NPREU+IC0gVGhlIGF0dHJpYnV0ZSdzIGxvY2FsIG5hbWUsIG9yIHRoZSBlbXB0eQogICAgICAgIHN0cmluZyBmb3Igbm9uZS48RFQ+PEI+VGhyb3dzOjwvQj48REQ+amF2YS5sYW5nLkFycmF5SW5kZXhPdXRPZkJvdW5kc0V4Y2VwdGlvbiAtIFdoZW4gdGhlCiAgICAgICAgICAgIHN1cHBsaWVkIGluZGV4IGRvZXMgbm90IHBvaW50IHRvIGFuIGF0dHJpYnV0ZQogICAgICAgICAgICBpbiB0aGUgbGlzdC48L0RMPg0KPC9ERD4NCjwvREw+DQo8SFI+DQoNCjxBIE5BTUU9InNldFFOYW1lKGludCwgamF2YS5sYW5nLlN0cmluZykiPjwhLS0gLS0+PC9BPjxIMz4NCnNldFFOYW1lPC9IMz4NCjxQUkU+DQpwdWJsaWMgdm9pZCA8Qj5zZXRRTmFtZTwvQj4oaW50Jm5ic3A7aW5kZXgsCiAgICAgICAgICAgICAgICAgICAgIGphdmEubGFuZy5TdHJpbmcmbmJzcDtxTmFtZSk8L1BSRT4NCjxETD4NCjxERD5TZXQgdGhlIHF1YWxpZmllZCBuYW1lIG9mIGEgc3BlY2lmaWMgYXR0cmlidXRlLjxERD48REw+DQo8RFQ+PEI+UGFyYW1ldGVyczo8L0I+PEREPjxDT0RFPmluZGV4PC9DT0RFPiAtIFRoZSBpbmRleCBvZiB0aGUgYXR0cmlidXRlICh6ZXJvLWJhc2VkKS48REQ+PENPREU+cU5hbWU8L0NPREU+IC0gVGhlIGF0dHJpYnV0ZSdzIHF1YWxpZmllZCBuYW1lLCBvciB0aGUgZW1wdHkKICAgICAgICBzdHJpbmcgZm9yIG5vbmUuPERUPjxCPlRocm93czo8L0I+PEREPmphdmEubGFuZy5BcnJheUluZGV4T3V0T2ZCb3VuZHNFeGNlcHRpb24gLSBXaGVuIHRoZQogICAgICAgICAgICBzdXBwbGllZCBpbmRleCBkb2VzIG5vdCBwb2ludCB0byBhbiBhdHRyaWJ1dGUKICAgICAgICAgICAgaW4gdGhlIGxpc3QuPC9ETD4NCjwvREQ+DQo8L0RMPg0KPEhSPg0KDQo8QSBOQU1FPSJzZXRUeXBlKGludCwgamF2YS5sYW5nLlN0cmluZykiPjwhLS0gLS0+PC9BPjxIMz4NCnNldFR5cGU8L0gzPg0KPFBSRT4NCnB1YmxpYyB2b2lkIDxCPnNldFR5cGU8L0I+KGludCZuYnNwO2luZGV4LAogICAgICAgICAgICAgICAgICAgIGphdmEubGFuZy5TdHJpbmcmbmJzcDt0eXBlKTwvUFJFPg0KPERMPg0KPEREPlNldCB0aGUgdHlwZSBvZiBhIHNwZWNpZmljIGF0dHJpYnV0ZS48REQ+PERMPg0KPERUPjxCPlBhcmFtZXRlcnM6PC9CPjxERD48Q09ERT5pbmRleDwvQ09ERT4gLSBUaGUgaW5kZXggb2YgdGhlIGF0dHJpYnV0ZSAoemVyby1iYXNlZCkuPEREPjxDT0RFPnR5cGU8L0NPREU+IC0gVGhlIGF0dHJpYnV0ZSdzIHR5cGUuPERUPjxCPlRocm93czo8L0I+PEREPmphdmEubGFuZy5BcnJheUluZGV4T3V0T2ZCb3VuZHNFeGNlcHRpb24gLSBXaGVuIHRoZQogICAgICAgICAgICBzdXBwbGllZCBpbmRleCBkb2VzIG5vdCBwb2ludCB0byBhbiBhdHRyaWJ1dGUKICAgICAgICAgICAgaW4gdGhlIGxpc3QuPC9ETD4NCjwvREQ+DQo8L0RMPg0KPEhSPg0KDQo8QSBOQU1FPSJzZXRWYWx1ZShpbnQsIGphdmEubGFuZy5TdHJpbmcpIj48IS0tIC0tPjwvQT48SDM+DQpzZXRWYWx1ZTwvSDM+DQo8UFJFPg0KcHVibGljIHZvaWQgPEI+c2V0VmFsdWU8L0I+KGludCZuYnNwO2luZGV4LAogICAgICAgICAgICAgICAgICAgICBqYXZhLmxhbmcuU3RyaW5nJm5ic3A7dmFsdWUpPC9QUkU+DQo8REw+DQo8REQ+U2V0IHRoZSB2YWx1ZSBvZiBhIHNwZWNpZmljIGF0dHJpYnV0ZS48REQ+PERMPg0KPERUPjxCPlBhcmFtZXRlcnM6PC9CPjxERD48Q09ERT5pbmRleDwvQ09ERT4gLSBUaGUgaW5kZXggb2YgdGhlIGF0dHJpYnV0ZSAoemVyby1iYXNlZCkuPEREPjxDT0RFPnZhbHVlPC9DT0RFPiAtIFRoZSBhdHRyaWJ1dGUncyB2YWx1ZS48RFQ+PEI+VGhyb3dzOjwvQj48REQ+amF2YS5sYW5nLkFycmF5SW5kZXhPdXRPZkJvdW5kc0V4Y2VwdGlvbiAtIFdoZW4gdGhlCiAgICAgICAgICAgIHN1cHBsaWVkIGluZGV4IGRvZXMgbm90IHBvaW50IHRvIGFuIGF0dHJpYnV0ZQogICAgICAgICAgICBpbiB0aGUgbGlzdC48L0RMPg0KPC9ERD4NCjwvREw+DQo8IS0tID09PT09PT09PSBFTkQgT0YgQ0xBU1MgREFUQSA9PT09PT09PT0gLS0+DQo8SFI+DQoNCjwhLS0gPT09PT09PT09PSBTVEFSVCBPRiBOQVZCQVIgPT09PT09PT09PSAtLT4NCjxBIE5BTUU9Im5hdmJhcl9ib3R0b20iPjwhLS0gLS0+PC9BPgo8VEFCTEUgQk9SREVSPSIwIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjEiIENFTExTUEFDSU5HPSIwIj4NCjxUUj4NCjxURCBDT0xTUEFOPTIgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4NCjxBIE5BTUU9Im5hdmJhcl9ib3R0b21fZmlyc3Ryb3ciPjwhLS0gLS0+PC9BPgo8VEFCTEUgQk9SREVSPSIwIiBDRUxMUEFERElORz0iMCIgQ0VMTFNQQUNJTkc9IjMiPg0KICA8VFIgQUxJR049ImNlbnRlciIgVkFMSUdOPSJ0b3AiPg0KICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3ZlcnZpZXctc3VtbWFyeS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPk92ZXJ2aWV3PC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4NCiAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9InBhY2thZ2Utc3VtbWFyeS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlBhY2thZ2U8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPg0KICA8VEQgQkdDT0xPUj0iI0ZGRkZGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxUmV2Ij4gJm5ic3A7PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxUmV2Ij48Qj5DbGFzczwvQj48L0ZPTlQ+Jm5ic3A7PC9URD4NCiAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9ImNsYXNzLXVzZS9BdHRyaWJ1dGVzSW1wbC5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlVzZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+DQogIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSJwYWNrYWdlLXRyZWUuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5UcmVlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4NCiAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL2RlcHJlY2F0ZWQtbGlzdC5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkRlcHJlY2F0ZWQ8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPg0KICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vaW5kZXgtYWxsLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+SW5kZXg8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPg0KICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vaGVscC1kb2MuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5IZWxwPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4NCiAgPC9UUj4NCjwvVEFCTEU+DQo8L1REPg0KPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFJPV1NQQU49Mz48RU0+DQo8L0VNPg0KPC9URD4NCjwvVFI+DQoNCjxUUj4NCjxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+DQombmJzcDs8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcveG1sL3NheC9oZWxwZXJzL0F0dHJpYnV0ZUxpc3RJbXBsLmh0bWwiPjxCPlBSRVYgQ0xBU1M8L0I+PC9BPiZuYnNwOw0KJm5ic3A7PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL3htbC9zYXgvaGVscGVycy9EZWZhdWx0SGFuZGxlci5odG1sIj48Qj5ORVhUIENMQVNTPC9CPjwvQT48L0ZPTlQ+PC9URD4NCjxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+DQogIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL2luZGV4Lmh0bWwiIFRBUkdFVD0iX3RvcCI+PEI+RlJBTUVTPC9CPjwvQT4gICZuYnNwOw0KJm5ic3A7PEEgSFJFRj0iQXR0cmlidXRlc0ltcGwuaHRtbCIgVEFSR0VUPSJfdG9wIj48Qj5OTyBGUkFNRVM8L0I+PC9BPjwvRk9OVD48L1REPg0KPC9UUj4NCjxUUj4NCjxURCBWQUxJR049InRvcCIgQ0xBU1M9Ik5hdkJhckNlbGwzIj48Rk9OVCBTSVpFPSItMiI+DQogIFNVTU1BUlk6ICZuYnNwO0lOTkVSJm5ic3A7fCZuYnNwO0ZJRUxEJm5ic3A7fCZuYnNwOzxBIEhSRUY9IiNjb25zdHJ1Y3Rvcl9zdW1tYXJ5Ij5DT05TVFI8L0E+Jm5ic3A7fCZuYnNwOzxBIEhSRUY9IiNtZXRob2Rfc3VtbWFyeSI+TUVUSE9EPC9BPjwvRk9OVD48L1REPg0KPFREIFZBTElHTj0idG9wIiBDTEFTUz0iTmF2QmFyQ2VsbDMiPjxGT05UIFNJWkU9Ii0yIj4NCkRFVEFJTDogJm5ic3A7RklFTEQmbmJzcDt8Jm5ic3A7PEEgSFJFRj0iI2NvbnN0cnVjdG9yX2RldGFpbCI+Q09OU1RSPC9BPiZuYnNwO3wmbmJzcDs8QSBIUkVGPSIjbWV0aG9kX2RldGFpbCI+TUVUSE9EPC9BPjwvRk9OVD48L1REPg0KPC9UUj4NCjwvVEFCTEU+DQo8IS0tID09PT09PT09PT09IEVORCBPRiBOQVZCQVIgPT09PT09PT09PT0gLS0+DQoNCjxIUj4NCkNvcHlyaWdodCCpIDIwMDYgQXBhY2hlIFhNTCBQcm9qZWN0LiBBbGwgUmlnaHRzIFJlc2VydmVkLg0KPC9CT0RZPg0KPC9IVE1MPg0K