参考:
http://blog.csdn.net/langsand/article/details/53764805
http://blog.csdn.net/langsand/article/details/53764805
1.maven 的pom.xml配置:
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<dependencies>
<!-- https://mvnrepository.com/artifact/org.seleniumhq.selenium/selenium-java -->
<dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-java</artifactId>
<version>2.53.0</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.testng</groupId>
<artifactId>testng</artifactId>
<version>6.11</version>
<scope>test</scope>
</dependency>
<!-- https://mvnrepository.com/artifact/com.google.inject/guice -->
<dependency>
<groupId>com.google.inject</groupId>
<artifactId>guice</artifactId>
<version>4.1.0</version>
</dependency>
<!-- https://mvnrepository.com/artifact/velocity/velocity-dep -->
<dependency>
<groupId>velocity</groupId>
<artifactId>velocity-dep</artifactId>
<version>1.4</version>
</dependency>
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
</dependency>
<dependency>
<groupId>org.uncommons</groupId>
<artifactId>reportng</artifactId>
<version>1.1.4</version>
<scope>test</scope>
<exclusions>
<exclusion>
<groupId>org.testng</groupId>
<artifactId>testng</artifactId>
</exclusion>
</exclusions>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.1</version>
<configuration>
<source>1.7</source>
<target>1.7</target>
<compilerArgs>
<arg>-Xlint:unchecked</arg>
<arg>-Xlint:deprecation </arg>
<!--<arg>endorseddirs=${endorsed.dir}</arg>-->
</compilerArgs>
</configuration>
</plugin>
<!--添加插件 关联testNg.xml-->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.5</version>
<configuration>
<testFailureIgnore>true</testFailureIgnore>
<!--这里设置关联的testNG.xml路径,项目根目录下的res文件夹里面-->
<suiteXmlFiles>
<file>res/testNG.xml</file>
</suiteXmlFiles>
<properties>
<!--刚开始这里没有设置默认监听false,所以没有启用reportNG功能。-->
<property>
<name>usedefaultlisteners</name>
<value>false</value>
</property>
<!--Setting ReportNG listener-->
<property>
<name>listener</name>
<value>org.uncommons.reportng.HTMLReporter, org.uncommons.reportng.JUnitXMLReporter</value>
</property>
</properties>
<workingDirectory>target/</workingDirectory>
<forkMode>always</forkMode>
</configuration>
</plugin>
</plugins>
</build>
2.testNG.xml配置listener
<?xml version="1.0" encoding="utf-8" ?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >
<suite name="testproj" parallel="false">
<test name="testDemo1">
<packages>
<package name="com.aika.testng"/>
</packages>
<!--<classes>-->
<!--<class name="com.aika.testng.*"></class>-->
<!--</classes>-->
</test>
<!--<listeners>-->
<!--<listener class-name="org.uncommons.reportng.HTMLReporter" />-->
<!--<listener class-name="org.uncommons.reportng.JUnitXMLReporter" />-->
<!--</listeners>-->
</suite>
上面testNG.xml不设置的话,可以这样设置
![[个人笔记]IDEA+MAVEN+testNG(reportNG) [个人笔记]IDEA+MAVEN+testNG(reportNG)](/default/index/img?u=L2RlZmF1bHQvaW5kZXgvaW1nP3U9YUhSMGNITTZMeTlwYldGblpYTXlNREU0TG1OdVlteHZaM011WTI5dEwySnNiMmN2TVRJeU1qQTVPQzh5TURFM01URXZNVEl5TWpBNU9DMHlNREUzTVRFeU56RTJNelF3TURFeE1pMDBORFkyTnpnM016SXVjRzVu)
![[个人笔记]IDEA+MAVEN+testNG(reportNG) [个人笔记]IDEA+MAVEN+testNG(reportNG)](/default/index/img?u=L2RlZmF1bHQvaW5kZXgvaW1nP3U9YUhSMGNITTZMeTlwYldGblpYTXlNREU0TG1OdVlteHZaM011WTI5dEwySnNiMmN2TVRJeU1qQTVPQzh5TURFM01URXZNVEl5TWpBNU9DMHlNREUzTVRFeU56RTJNelF4TXpRM01pMHhOVFU0TVRVeU1EazJMbkJ1Wnc9PQ==)
![[个人笔记]IDEA+MAVEN+testNG(reportNG) [个人笔记]IDEA+MAVEN+testNG(reportNG)](/default/index/img?u=L2RlZmF1bHQvaW5kZXgvaW1nP3U9YUhSMGNITTZMeTlwYldGblpYTXlNREU0TG1OdVlteHZaM011WTI5dEwySnNiMmN2TVRJeU1qQTVPQzh5TURFM01URXZNVEl5TWpBNU9DMHlNREUzTVRFeU56RTJNelF5TWpneE5TMHhNekUzTURVMk9EVXhMbkJ1Wnc9PQ==)
3.配置好了,写一个简单的测试用例,此处不多做说明了。
IDEA的终端Terminal窗口,输入:mvn -f pom.xml clean test -DxmlFileName=testNG.xml
testNG.xml对应配置文件名称
生成成功,红框路径打开index.html
![[个人笔记]IDEA+MAVEN+testNG(reportNG) [个人笔记]IDEA+MAVEN+testNG(reportNG)](/default/index/img?u=ZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFuRUFBQUNyQ0FJQUFBQ0cxVjBQQUFBZ0FFbEVRVlI0bk8zZGZXeFVWZDRIOEJORFNBeU5rMkpvbnJhcHhLZWsyZzJsYlNwOVNnUFlicmV4dWdYZDlXMUpKaXhPYUhWWHN3MlNyRUFBMTBWWVhCVmo2SXRhVWZjaHNGb1JDdzdZdHl5dHJhV1B0RVZMaVFXVk5MeFVvRUk3NWM3TXZiMHovSjQvRHQ3ZXVTOHpkNFpMeGZyOVpFTG0vdWFjM3puM2NPLzhPdE9aWGtZQUFBQmdCL1pUVHdBQUFHQ0tRRTBGQUFDd0IycXFFY1p3d3cyM3FYWUR1UEZ3bkJuNXlVOSszSEREemZZYndJMkg0OHdJemtDQXFRUm5ORXdXSEdkR2NBWUNUQ1U0bzJHeTREZ3pnak1RWUNyQkdRMlRCY2VaRVp5QkFGTUp6bWlZTERqT2pPQU1CSmhLY0ViRFpNRnhaaVRXTXpBUUNIend3UWUyVDJjS3UvbFg3S2VkNGMyL1BqOFBxS2t3V1NhT004WVlZMnphdEduWjJkbi8rYzkvbEFpN3lZN0Z6czdPZSs2NVo4YU1HWC80d3g5dTFCaEdaeUJUV2JWcWxWblh6WnMzUzVKMDNlTlAzckpiM0s4d3ZmaFUrWjA1YythOCtPS0w0K1BqbWpZVkZSVzg0K2pvNk15Wk03Lzk5bHNsbFMwclpqWkQ5WHhpZG9ObWVET01yaitibGk5ZmZvUEcraWt4Um96Wi9yeHhQZWVweFhYV0RHR2xsMkdicUtaNmN6N3pSK3VuMm91SjhieGVMMk5NbHVXZW5wN1UxRlIxY0pMbkZGNUdSa1piVzl2VnExZXZKNGtnQ09IMnk2aW1LdXZqOVhxcnFxck11dmIwOUxqZDd1dVpHMDN1c2x2Y0x6MmZ6OGNZODNxOTZqeWpvNk9iTm0xNjVaVlhsTWo0K0xnb2lxKy8vanB2MXRIUndSamJ2bjI3a2tlL1loSCtkMHhvZXVubkV6TzdabWlGUHJNdFI1UVpXODZteVJUanlqTkdqTm4rdkRFSjU2bkg0N0ZsaUdqeldOazFXODdURzBxL0Y1TXdla2gyeHRqVnExYy8vL3h6cGFieTRBMmRRYlQ0Sks4elNWdGJXN1ExbFE4OU1qS2k2Zmo0NDQ5cm12M3RiMys3enVuUjVDNjc0WDVaN0tqZlBILytmRlpXbGxubXlzcktCeDU0b0xDd1VOMVJzMklSL25kTTZIdnA1eE16VzJab2hXRm1XNDRvUTdhY1RaTXB4cFZuakc3TTg4WWtuS2QyRFJGdG5vanQ3VHBQYnlqTldKTXd1dmI0WUl3bEp5ZnYzNy9mYkU3SGpoM0x5Y2xKVDAvdjd1N21rYnE2dXJTMHROVFUxSTZPRGg1NTZhV1hFaElTN3J6enppVkxscGoxMHM2RE1jWllUMDlQVmxhVzhvU3I3NlY1djFIZnhqQ1AyWERxWGV2cjY4dk16SnczYjE1ZlgxK1ltbXJsellSLy9ldGZnNE9EU3BjalI0NHd4cnE2dXY3NXozOGFqR1V5Wno3S21qVnJHR016WnN6UXJ5cnZ0V3JWcXFTa3BIMzc5dkZlK3YrTGI3Lzk5cjc3N3J2OTl0dGZmZlhWaUt0cXZCcm1xMnI0L0JJSUJHNjk5VmF6ekU4ODhjUkhIMzAwZCs3Y3MyZlBHcTZZWVMvOW5QWEhtTDZYZmo3Nm8yWEpraVdMRnk4dUtTbDUrZVdYRGZmZDRndzFLMis0WXNlUEg4L0t5a3BLU2xxN2RtMTVlYm5GL3d2OTZJWkhndjVPREdlVGZnRWo1bUdob3VxbE9Yb3RuaGVhU2VxUEJBT01VV2hIaTBlNExvM0JNZmI4ODg4bkp5ZnYzTG5UYkozTjhtZzJ0Mnpaa3B1YnF4eDFodzhmVGsxTmZlaWhoOEwvNzJ6YnR1M3k1Y3Y4anI2TlBvLythQ0dqNXcyeVVGUDFxeEhiZVdxWU51TFJHL0VzTU55TEdJK2ZhRVQrbVVzVExDb3E2dTN0SFJnWUtDa3A0WkhzN093TEZ5NE1EUTBsSkNUd1NFcEtTbXRyNjlqWTJNREFnRmt2RFVtU0dHT2JOMi8yZUR4aHhvbzRIOE04eG5zZW1xZTR1TGlwcWFtNXVibTR1RGhNVGVXSGIvak1Iby9udGRkZTQvZWZldXFwTjk1NFkvcjA2UXNXTENnckt6TVl5MlRPakxIUjBkR0ZDeGNxcVRTcnl0L0U2T2pvNk9ycW1qZHZIbStqLzcrNC8vNzdhMnRydlY1dlFVR0I0WW9aN3BlVkdlclhrRy9Lc3V4d09KVElwVXVYMU0zdXV1dXVFeWRPdlBEQ0MyKy8vYmJoaWhsbTFzOVpmNHhabVk4bUQyUHM1TW1UakxIdnZ2dE82YXZaZDRzejFLeTg0WXJsNWVVZE9YTGtxNisreXNuSk1kc3ZmV2I5NklaSEFxbmU2WXI1YkJvZkgxZEhyT2RSczlMTDhPaU43YWd6UEJLMGRHZTB4YkdNTW1tUHNlYm01ak5uemlRbUpscGNIOUt0c3l6TGpMR0dob1pUcDA1Tm16YU5CeGN1WEhqdzRNRlRwMDRwTFRXOXZ2bm1tN2k0dU5IUjBZNk9qcnk4UEZFVTlXMzBlZlJIQ3hrOWIrajMxTXBxeEhhZWFsZzg2aUtlQldaanhYTDhSQ1BxbXVwd09IaWRuelZyRm8vMDl2WXVXN1lzSlNWRmFkbmYzKzl5dVI1ODhNR3VyaTZ6WG9ZREJZUEI4R05abVk4K2o5bHdtanlTSkVtUzVIQTR3dFRVaUdtNXpaczM4OC9GdlBIR0czZmRkZGVNR1RNWVl6VTFOUVpqbWN5Wk1WWldWbmJmZmZlTmpZM3hpSDVWbFNmUXVMZzRIdEgvWHpnY0RyL2ZyOWxUL1lwcDVtOWxodnFPN01mM1d2UHo4dzBiWEx4NFVmazVzYlMwMUhERkREdnE1NnhmRFN2ejBlUlJmckJWOTlYdnU1VVo2bGRldjJJYk4yNU1UazcrMWE5KzFkdmJhN1pmK3N6NjBjMk9CTTJkR000bWZjUmlIbjJTaUwzMFIyOXNSNTNoa2FDZkVJVTUzODNITXR3MXcwMzE4Uk54ZmF6a2lZdUw0NTlOQzFNaG5ucnFxZHJhMm9xS2lrOCsrY1NzalQ2UC9vNys2Tlhuc2JJWHNaMm5obWtqSGo5V3pnTERzV0k1ZnFJeGtaMS81RVFRQlBYRCttQkJRWUdtVFY1ZVhrTkR3K0Rnb0RMWHJWdTNlcjNlN3U3dTJiTm5tL1hTNEQrcHliS3NEdXA3OFovQytFOWtobTBNOHhpYVBuMzZ1WFBuNnV2citXWmhZV0ZiVzF0cmEydGhZYUZoVGVWTDRmUDVJbVltb3U3dTdnTUhEaEJSZTNzN1kreVpaNTVoakgzMjJXY0dZeG5ObWYrb3RXL2Z2dDI3ZHovNzdMTThxRjlWeHRqWFgzL2QyTmk0WU1FQ0h0SC9YK1RuNTMvODhjYytuKy9kZDk4MVhESEQvWW80UTlKOVJvbHZlanllZi96akgvd2pTSHd2SkVrYUhSM2xMN1AyN2R2M205LzhoaWRNU2tvYUhoN1dyeGluK2QvUkh3bjYxZEQwMHM5SG44ZXdwbXIyM2VJTU5TdHZ1R0pwYVdsdXQvdmt5WlBLVHptRzU0VW1zMzUwL2I2bnBLUjg4ODAzbjMzMkdmOGZpZmxzNGgyVjRtMHhqNGJGWHZxajE4cFJwMThmd3lOQml6RUszVk9MWSttcFIrZEhPRDkzbEhNaDR2cVFicDM5ZnI4K1QwNU96dWVmZjk3WjJhbEVOTDJJcUwrL1B5MHRyYUNnUUtsQStqYjZQSnFqaFl5ZU53ekxRZmpWTU56M2lPZXAyZUpFUEg0aW5nVm1leEhMOFJNTjdidnptZ3F2eG9NOVBUM3o1OCtQajQvZnVIRWpqN2pkN3NURXhCVXJWdVRuNS9NWDVxV2xwVWxKU2ZIeDhaczJiVExycFoySGJuVERYaEhuWTVqSFVIdDdlMFpHeHU3ZHU1VThjK2ZPemNqSU9IcjBxR0ZOTmN1cy80d1N4ejlYTWp3OHpCajc2cXV2R0dOS0NRa1pLK3pLdi83NjY0eXg3T3hzTWxwVnh0anZmdmU3Tys2NG83VzFsVWYwL3hmOHZUVjFHeXNyWm4yR1NwemZ1ZnZ1dTdkdTNjclBCM1dEWjU1NVJva2NQSGp3NDQ4LzFnK3EvaVNPL245SGN5VG9WMFBUU3o4ZnczMG5YVTNWN0x2RkdXcFczbkJWVjYxYVZWMWQvZGUvL3RYbGN2RmZteG1lRjVyTSt0SDErNzVyMTY3azVPUVhYbmpCOEp3MVcwTjl5L0NiWm5rMHJJK3VPWG9qSG5XRzYyTjRKT2puUktIWkxJNmxwei9HMU1lL2xmWFJEMmVZNTlOUFAwMUpTYW1vcU5BOHBKbmtJNDg4OHRGSEg1bGxOc3lqT1ZySS9PaU51Q2JYZjU1R1hCenJtYzNPQWsyMmlNZlBzbVhMd3V4eVJGYmZ6UHhsTVhudk55cnZ2ZmZlNmRPbmJabU9JYzNMeENuZ1JxL1k5YnZPR1NZbUpuN3h4UmV5TEI4OWVqUXBLV21TUjcrcFRQYlJhOGNaRFdBRmpqTWpkcHlCZ2lCY3VIREJsdWtZc3Y2VDljL0ZqVjZ4NjNlZE0vend3dzh6TWpKbXpKaVJsWldsZk5oMTBrYS9xVXoyMFl1YUNwTUZ4NWtSbklFQVV3bk9hSmdzT002TTRBd0VtRXB3UnNOa3dYRm1CR2Nnd0ZTQ014b21DNDR6SS93TXhBMDMzS2JTRGVER3czRm01Q2MvK1hIRERUZmJid0EzSG80ekFBQUFlNkNtQWdBQTJBTTFGUUFBd0I2b3FRQUFBUFpBVFFVQUFMQ0gxYjhVZjczRFRMay9wQWNBQUtBUjd0cHlUbWZJVFlrTUQyc2Y0cmNkTzRpSUpJbTJieWVYaXlvclNYWEZJVzF5QUFDQUtTYkM5Vm9saVp4T1VpNDdLSXJrZEZKTHkwU2NSd0lCRWtYaWwzZDB1Nm16azJTWjJ0dXBzVEZjY2dBQWdLa2tRazBsdXZZS1ZiMzU2YWNoY2FlVEJHRmljOTA2NGxkd0VnVFNYRUF3VEUzZEZxcXJxd3NSUkJCQjVKY1ppZTVaSEc0bXNkVFUvbjQ2ZXpha3BpcHZEaFBSeXBYRXJ6a2ZDRkJaV1lUazZvZlV0bTNiaGdnaWlDRHl5NHhFK3p3T040OVlhbW93U0MwdElUWDF5cFdKemZKeUNnU0lpR1NaeXNzakpBY0FBSmd5WXFtcFJOcWFxclpoQXdrQ0VaSEhRK3ZYUjBnT0FBQXdaVVQzR1NXK0tVazBPSGl0bENvUlJYTXpIVHBFb2toTlRkZCs4MnFXSEFBQVlDcUo1YnMwL1A2YU5kb0lKOHRVVTBNdUYxVlY0YnMwQUFEd0M0Sy8rUUFBQUdBUEZEa0FBQUI3b0tZQ0FBRFlBelVWQUFEQUhxaXBBQUFBOWtCTkJRQUFzQWRxS2dBQWdEMVFVd0VBQU95Qm1nb0FBR0FQMUZRQUFBQjdvS1lDQUFEWUF6VVZBQURBSHZoN3Z3QUFBUGFJNWJvMHc4UGFoL2h0eHc0aUlrbWk3ZHZKNWFMS3lpaXVTOE9JOGRzY21yT2JkaXNSemFQcW16cXV5VE9INXJ4SUw0N1R1T0ZZUitoSVB1VlBwK21NV0FWVkdJNTFsYTYrUUMvTW9sbnphTjRtMmtSRStvaDZNanlQUHJNK0FnQUFVMVYwMTA4VlJYSTZxYVZsSXM0amdRQ0pJaDA0UUVUa2RsTm5KOGt5dGJkVFkyTzQ1R3BlOGpKaUVrbGQxSlZBQ1VRa2tLQ3Vjd0lKUk9Rakh5UG1KYSs2bDdLcFJFWnBkQk50ZW9WZU1Sd3JuZExycVY0aTZReWRlWTZlTXh6cmZYci9mK2wvUlJLSGFYZ05yU0VpZllTUE5VN2pJb212MCt1R21mVVJBQUNZcWlMVVZLS1FhNlB5VFg2bGNTWHVkSklnVEd5dVcwZGVMeEdSSU5ER2pSR1NoMDZGRVZFWGRTMmpaZXFJK283bXZuNVRpWnluODFtVVpUaFFPcVdmb2xPR3ZaUTd4VlRzSVkrNmdUN0NHNC9RaU5KWG45bHdMQUFBbUpKaXFhbjkvWFQyYkVoTlZWK1dmT1ZLQ2dhSmlBSUJLaXVMa0R4MEtvd1J5Nk84WVJwV0lwbzdaTG1tQmlod0s5MXFPTkNYOU9WdjZEZFAwcE9uNmJRK0Q3L3pYL1JmQVFxb2Ura2pwSHI3MXl5ejRWZ0FBREFseFZKVGcwRnFhUW1wcVZldVRHeVdsMU1nUUVRa3kxUmVIaUY1NkZUWVZicTZqL1k1eWFsRU5IZkljazJWU1hhUXcyeXNxM1MxbFZwL1Q3Ly9QL28vdzdGdXBWdXYwbFYxRjMyRU43NUVsOVJ6MEdmV1J3QUFZRXFLcGFZU2FXdXEyb1lOSkFoRVJCNFByVjhmSVhub1ZCZ1JpU1FxdFpCSGdoU003YjNmZk1vUE14d1JqZERJWFhTWDRWaVpsQ21ScEc2c2p4aU9yczlzRmdFQWdDa211czhvOFUxSm9zSEJhNlZVaVNpYW0rblFJUkpGYW1xNjlwdFhzK1JxL01OSDR6VGVRQTNabE0yRENaVFFSMzFOMUpSSWllcG15b2VTK0thZi9GZnA2bWs2dllrMjhZaUhQUCtnZjJ5bjdZWmpyYU4xMzlBM2Z2TFhVVjBPNVJpTzlRSzkwRVJORWtrWDZXSWxWUnBHbE05VmpkTG9hL1NhWVdiRHNRQUFZRXFLNWJzMC9QNmFOZG9JSjh0VVUwTXVGMVZWUmYxZG1sdm9saHpLNmFST0h0eEZ1MmJUN1ArbS85NVArMG4xeTB2OWQybjQ3Umw2aHQrNW0rN2VTbHRsa2czSHFxQUtSbXdhVGZzZitwOXU2alljeTBlK0NxcElwTVJGdEdpQUJnd2ptcUVOTXh1T0JRQUFVeEwrNWdNQUFJQTlVT1FBQUFEc2dab0tBQUJnRDlSVUFBQUFlNkNtQWdBQTJBTTFGUUFBd0I2b3FRQUFBUFpBVFFVQUFMQUhhaW9BQUlBOVVGTUJBQURzZ1pvS0FBQmdEOVJVQUFBQWUrRHYvUUlBQU5namx1dlNEQTlySCtLM0hUdUlpQ1NKdG04bmw0c3FLNk80TGcwQUFNRFBYWFRYVHhWRmNqcXBwV1VpemlPQkFJa2lIVGhBUk9SMlUyY255VEsxdDFOalk3amtBQUFBVTBtRW1rb1VjbTFVdnNtdk5LN0VuVTRTaEluTmRldkk2eVVpRWdUYXVERkNjc1cyVUYxZFhZZ2dnZ2dpdjh4SWRNL2ljRE9KcGFiMjk5UFpzeUUxVlgxWjhwVXJLUmdrSWdvRXFLd3NRbkwxUTJyYnRtMURCQkZFRVBsbFJxSjlIb2ViUnl3MU5SaWtscGFRbW5ybHlzUm1lVGtGQWtSRXNremw1UkdTQXdBQVRCbXgxRlFpYlUxVjI3Q0JCSUdJeU9PaDllc2pKQWNBQUpneW92dU1FdCtVSkJvY3ZGWktsWWlpdVprT0hTSlJwS2FtYTc5NU5Vc09BQUF3bGNUeVhScCtmODBhYllTVFphcXBJWmVMcXFyd1hSb0FBUGdGd2Q5OEFBQUFzQWVLSEFBQWdEMVFVd0VBQU95Qm1nb0FBR0FQMUZRQUFBQjdvS1lDQUFEWUF6VVZBQURBSHFpcEFBQUE5a0JOQlFBQXNBZHFLZ0FBZ0QxUVV3RUFBT3lCbWdvQUFHQVAvTDFmQUFBQWU4UnlYWnJoWWUxRC9MWmpCeEdSSk5IMjdlUnlVV1ZsRk5lbGNUcWRTdDE5NUpGSFl0K2Y2eWpleTVjdmozbGNNM3YyN0xubm5udmk0dUlXTEZqUTJ0cHEyT2JoaHg5V3BqMTM3bHlMRVFBQXVObEVkLzFVVVNTbmsxcGFKdUk4RWdpUUtOS0JBMFJFYmpkMWRwSXNVM3M3TlRhR1M2NVdYVjB0U1JKamJIeDhmT3ZXcldiTkJFR0lXQys5WG0vRU5sYnkyS0tvcUdoa1pFUVV4WDM3OWlVbkp4dTJLUzh2SHhvYTR2ZlBuVHRuTVFJQUFEZWJDRFdWS09UYXFIeVRYMmxjaVR1ZEpBZ1RtK3ZXa2RkTFJDUUl0SEZqaE9RUlI5ZG9hMnV6VWd2dHltUEY0NDgvSHJHTjMrLy81Sk5QVnE5ZUhiN1o4ZVBIQTRGQXRCRUFBTGhKeEZKVCsvdnA3Tm1RbXFxK0xQbktsUlFNRWhFRkFsUldGaUY1K05INyt2b3lNelBuelp2WDE5ZW5OTkM4dFZ0WFY1ZVdscGFhbXRyUjBSSFZRSm84K3MwbFM1WXNYcnk0cEtUazVaZGY1c0ZqeDQ3bDVPU2twNmQzZDNlSHo2OGY3ckhISGhNRUlVeWJZRERZR1BxNjNrcEU0NldYWGtwSVNManp6anVYTEZrUzFRd0JBT0Q2eFZKVGcwRnFhUW1wcVZldVRHeVdseE4vSFNYTFZGNGVJWG40MFl1TGk1dWFtcHFibTR1TGk4M2FaR2RuWDdod1lXaG9LQ0Vod2ZwQStqYmo0K09hbW5yeTVFbkcySGZmZmFmRWk0cUtlbnQ3QndZR1NrcEtJdVpYRXdUaHpUZmZmUExKSjhPMGFXeHNIQmdZaURhaWtaS1MwdHJhT2pZMkZyNFpBQURjQ0xIVVZDSnRUVlhic0lINDZ6R1BoOWF2ajVBOC9PZ09oME9TSkVtU0hBNkhXWnZlM3Q1bHk1YWxwS1JvS21MNGdRemI2RE9vLytYejRTOW5aODJhRlRHL2h0ZnJuVGx6WnBnR1pXVmw0NkdmNmJJUzBlanY3M2U1WEE4KytHQlhWMWUwTXdRQWdPc1UzV2VVK0tZazBlRGd0VktxUkJUTnpYVG9FSWtpTlRWZCs4MnJXWElOdjkvUEdQUDVmRXFrc0xDd3JhMnR0Ylcxc0xCUUNVNmZQdjNjdVhQMTlmVjhNeTh2cjZHaFlYQndVRW51OC9rWVkrSGZhTlhua1dXWmYwSktQVlZOVFMwb0tJaVlWcU9rcEdSMGRGUVFoS3FxcXZEdngrby96V3Nsb3JGMTYxYXYxOXZkM1QxNzl1eW81Z2tBQU5jdmx1L1M4UHRyMW1nam5DeFRUUTI1WEZSVkZjVjNhY2pvZDV3OVBUMXo1ODdOeU1nNGV2U29FbXh2YjgvSXlOaTllemZmZEx2ZGlZbUpLMWFzeU0vUEx5a3BZYUhDREtmSm8rbGlXRk43ZW5ybXo1OGZIeCsvVWZYaHEvQ2ZVZHExYTFkNmV2ck1tVE1mZmZUUk0yZk84T0N5WmN2MExmUHk4bUtJYUpTV2xpWWxKY1hIeDIvYXRDbDhTd0FBc0IzKzVnTUFBSUE5VU9RQUFBRHNnWm9LQUFCZ0Q5UlVBQUFBZTZDbUFnQUEyQU0xRlFBQXdCNm9xUUFBQVBaQVRRVUFBTEFIYWlvQUFJQTlVRk1CQUFEc2dab0tBQUJnRDlSVUFBQUFlK0R2L2NMUDJNakl5UER3OEU4OUN3Q0FhMks1THMzd3NQWWhmdHV4ZzRoSWttajdkbks1cUxJeWl1dlNxQzhtczJyVktpVytmUG55aVBzUXZrMVV0WHdTQ3YrSkV5ZEtTMHNkRGtkdWJtNWJXeHNSaWFKWVZsWjIyMjIzclZpeHd1LzM4MmFTSkpXV2xpcTlIbjc0WVdWOXdsenhUZFBMTUtKaFpYU24wNm1NL3Nnamo4UTgxcDQ5ZSs2NTU1NjR1TGdGQ3hhMHRyWmE3S1UrTnU2NDR3NzFRMDgvL1hSVFU1TzZaWmo5NnV6c1hMUm9rY1BoeU0vUFAzejRzTVhWTUZ3ZkFBQkQwVjAvVlJUSjZhU1dsb2s0andRQ0pJcDA0QUFSa2R0Tm5aMGt5OVRlVG8yTjRaS3JlYjFleHBnc3kxNnZ0NnFxeW9ZOUM4MXNzYkhINDRtcXBncUNFRzBOZHJsY3AwK2Y5dmw4dGJXMWMrYk1JYUthbXBxYW1ocWZ6N2QvLy83S3lrcmVURlBkeTh2TGg0YUcrUDF6NTg2WkpkZi9UQkR4cHdRcm8xZFhWMHVTeEJnYkh4L2Z1blZyekdNVkZSV05qSXlJb3JodjM3N2s1R1NMdmN3ZVBYejQ4TnExYTgxcXFuNi9VbE5UM1c2MzMrL2ZzMmNQWDNrOWZTL0Q5UUVBTUJTaHBoS0ZYQnVWYi9JcmpTdHhwNU1FWVdKejNUcnllb21JQklGVWx4azFUcTU1ZEdSazVFYThUSXdxWjFTTjI5cmE5TzNEWDFGMTZkS2wvSTdYNjAxTFN5T2lSWXNXL2ZEREQwUTBOamFXbjUvUEh4VkYwWEFteDQ4ZkR3UUNac24xdmN6eUtLeVBIakd6WVMvOWF2ajkvazgrK1dUMTZ0VVdleG5PMytmejFkZlg3OWl4dzZ5bTZ2Y3JOemVYWDRoM2VIajQzbnZ2TlJ4TDM4dHdmUUFBRE1WU1Uvdjc2ZXpaa0pxcXZpejV5cFVVREJJUkJRSlVWaFlodWVaUnpVc1d3ODB0VzdiazV1YjI5ZlVadGlHaWwxNTZLU0VoNGM0NzcxeXlaSW5TNXZubm4wOU9UdDY1Y3llUEhEdDJMQ2NuSnowOXZidTdtMGNPSHo2Y21wcjYwRU1QaFpsa1hWMWRXbHBhYW1wcVIwZUgyWnl0cTZ1cnE2dXJJNkpaczJiSnNreEVnVUJnMXF4WjZ2M1ZkQWtHZzQwL3Z2Wm5vY0wwMHEraHVwZjEwV09MNkRIR0hudnNNVUVRTFBaaWpHM2V2RGt4TVRFek0vUElrU004K09HSEg0NlBqeXMxMWNwK25UeDVjdDY4ZVU4Ly9mVGF0V3ZOWHV2cmU1bXREd0NBWGl3MU5SaWtscGFRbW5ybHlzUm1lVG54MTFHeVRPWGxFWkpySHIxOCtiSzZ6Zmo0dUhwVGxtWEdXRU5EdzZsVHA2Wk5tMmJZaG9oU1VsSmFXMXZIeHNZR0JnYVV6TTNOeldmT25FbE1UT1NSb3FLaTN0N2VnWUdCa3BJU0hsbTRjT0hCZ3dkUG5Ub1ZacExaMmRrWExsd1lHaHBLU0Vpd3VGTm1Pam82OXU3ZHkrOHJ6OXF5TElmUDNOallxT3lVbVdqcm5QWFI3YXFwZ2lDOCtlYWJUejc1cE1WZUgzend3Y1dMRi8xKy80NGRPeFlzV0VCRVgzLzk5VmRmZlVWRVlWNm42dmZyblhmZWFXaG8rUDc3NzZ1cnF5c3FLZ3pIMHZjeVd4OEFBTDFZYWlxUnRxYXFiZGhBL0JXSXgwUHIxMGRJSHZGUlRWRFpEUFBLckwrLzMrVnlQZmpnZzExZFhXYTlIQTRIZjBHanZQS0lpNHVUSkNuOEpIdDdlNWN0VzVhU2toTCtkV0ZFNzcvL3Z0dnRWamJ6OC9NdlhicEVSQjZQWjlHaVJXRXlsNVdWaldzKzk2VVRiWjJ6UHJwZE5aV0l2Rjd2ekprelkrZ1ZIeDlQUlAzOS9XMXRiVzF0YmM4OTk5eXJyNzc2N2JmZjZ2UG85MnYyN05uOHhiRWtTV2F2T1BXOXpOWUhBRUF2dXM4bzhVMUpvc0hCYTZWVWlTaWFtK25RSVJKRmFtcTY5cHRYcytScVBwK1BNZWJ6K2RSQi9zSlVxU0ordjE5cHd4anplcjM2TmtTMGRldFdyOWZiM2QwOWUvWnMrdkV6U3BwZUJRVUY2dmNlaVNnbkorZnp6ei92N094VTJ1amw1ZVUxTkRRTURnNnFkMlQ2OU9ubnpwMnJyNjgzMnpXTjJ0cmFYYnQyRVZFd0dIejc3YmVKcUtxcTZxMjMzdkw3L2ZYMTlkWFYxYnpaeFlzWEdXUG56NTlYOXczemlWK3pYb1o1MUN5T3JsNzhtTWNxS1NrWkhSMFZCS0dxcWtwNVp6NWlyNlZMbDQ2TWpQajkvcXFxcXQvKzlyZnFoOEs4VHRYdlYyWm01czZkTy8xKy85NjllN095c2l5dWh1SDZBQUFZaXVXN05QeittalhhQ0NmTFZGTkRMaGRWVmNYeVhab3dRZldtNW82NlkybHBhVkpTVW54OC9LWk5tOHg2OWZUMHpKOC9QejQrZnVPUEg2UDY5Tk5QVTFKU0tpb3E5Tk5RdU4zdXhNVEVGU3RXNU9mbksyOGF0N2UzWjJSazdONjlXMmtXL2pOS3Q5eHlpektsKysrL240aEVVVnk1Y21WY1hOd1RUendoL3ZqemkrR0M1T1hsaGNsczJNc3dqNXJGMFdPTFVPaHE3TnExS3owOWZlYk1tWTgrK3VpWk0yY3M5dnJ3d3c4ek16TWREa2RKU2NtSkV5ZVUrTmRmZjcxNjllcS8vLzN2WjgrZXRiSmYvZjM5eGNYRkRvZWpvS0RneXkrL05CeEwzOHR3ZlFBQURPRnZQZ0FBQU5nRFJRNEFBTUFlcUtrQUFBRDJRRTBGQUFDd0Iyb3FBQUNBUFZCVEFRQUE3SUdhQ2dBQVlBL1VWQUFBQUh1Z3BnSUFBTmdETlJVQUFNQWVxS2tBQUFEMlFFMEZBQUN3Qi83ZTc4OWVYMS9mQXc4ODhGUFBBZ0FBWXJvdXpmQ3c5aUYrMjdHRGlFaVNhUHQyY3Jtb3NqS1c2OUl3eGxhdFdxWEVseTlmSHQzK1dDamVqTEhGaXhjVFVYWjI5azFTNWlWSktpMHRWVFk3T3pzWExWcmtjRGp5OC9NUEh6NU1ZZWY4N0xQUDF0VFVFTkdKRXlkS1Mwc2REa2R1Ym01Ylc1dGhSQlRGc3JLeTIyNjdiY1dLRlg2L1AzeG1BQUNJU25UWFR4VkZjanFwcFdVaXppT0JBSWtpSFRoQVJPUjJVMmNueVRLMXQxTmpZN2prYXZ3cXA3SXNlNzNlcXFxcTY5a2xuaXBNQThaWVhGeWNJQWd6Wjg2OFNhcUk1dWVBMU5SVXQ5dnQ5L3YzN05relo4NGNNcC96Mk5oWVVsSVN2MmkyeStVNmZmcTB6K2VycmEzbHZmU1JtcHFhbXBvYW44KzNmLy8reXNyS01Ka0JBQ0JhRVdvcVVjaTFVZmttdjlLNEVuYzZTUkFtTnRldEkzNUpiMEdnSHk5T2FwcGM4K2pJeUlndFQrc1JCL3IxcjM5ZFgxKy9kT25TeWFraTRhK29Ta1NpS0twbmtwdWJlL1RvVVNJYUhoNis5OTU3eVh6Tzc3Nzc3cC8vL0dkK2YrblNwZnlPMSt0TlMwc3pqQ3hhdE9pSEgzNGdvckd4c2Z6OC9EQ1pBUUFnV3JIVTFQNStPbnMycEthcUwwdStjaVVGZzBSRWdRQ1ZsVVZJcm5uVThCclhtczB0VzdiazV1YjI5Zlh4WUYxZFhWcGFXbXBxYWtkSGgvV0JubnZ1dVQvKzhZOWJ0bXhSV2g0N2Rpd25KeWM5UGIyN3U1dTNXYkpreWVMRmkwdEtTbDUrK1dYZXBxK3ZMek16Yzk2OGVYeDBQcCtlbnA2c3JLekN3a0lsOHZ6enozZDBkRVQ3KzJOMTQ1TW5UODZiTisvcHA1OWV1M2J0dVhQbnpPWk1SSGw1ZVVlT0hOR2txcXVycTZ1ck00ek1talZMbG1VaUNnUUNzMmJOQ3BNWkFBQ2lGVXRORFFhcHBTV2twbDY1TXJGWlhrNkJBQkdSTEZONWVZVGtta2N2WDc2c2JqTStQcTdlbEdXWk1kYlEwSERxMUtscDA2YnhZSFoyOW9VTEY0YUdoaElTRXF3UDlPOS8venNoSWFHcHFVbHBXVlJVMU52Yk96QXdVRkpTd3R1Y1BIbVNNZmJkZDk4cGJZcUxpNXVhbXBxYm00dUxpNGxJa2lURzJPYk5tejBlRDI5dyt2VHAyMisvZldob3FLMnRMVHM3Ky9MbHkyR21vWitWY3YrZGQ5NXBhR2o0L3Z2dnE2dXJLeW9xek9iOHhSZGY1T1hsYWZKMGRIVHMzYnZYTEtMVVZGbVcrWW9aWmdZQWdCakVVbE9KdERWVmJjTUdFZ1FpSW8rSDFxK1BrRHppbzVxZ3NxbmM2ZTN0WGJac1dVcEtpdVlWYmZpQmpoOC96aGk3ZVBHaTB0TGhjUEJYbHNxck44Mi92STBrU1pJa09Sd09KVldRdnlyLzBXdXZ2WGJ3NEVHbjAxbGZYeDltRHVIM2RQYnMyWUlnRUpFa1NjcDg5SFArMDUvKzlONTc3Nm1UdlAvKysyNjNPMHdrUHorZi8vTFY0L0VzV3JUSUxETUFBTVFndXM4bzhVMUpvc0hCYTZWVWlTaWFtK25RSVJKRmFtcTY5cHRYcytScVBwK1BNZWJ6K2RSQi9zSjAvTWRQRC92OWZxVU5ZOHpyOVJKUlhsNWVRMFBENE9DZ2tweW40alhKZUo4Wkd4OGZuejkvdm5wS0JRVUY2aTZHTmJXd3NMQ3RyYTIxdFpXLzA4dW54MS8yS1ZQZUZrOEFBQUt3U1VSQlZMeGU3OEtGQ3hjc1dLQ3B0ZUh4ZW5iKy9IbSttWm1adVhQblRyL2Z2M2Z2M3F5c0xNTTVYN3AwS1NrcGFXeHNURWxTVzF1N2E5Y3VJZ29HZzIrLy9iWmhwS3FxNnEyMzN2TDcvZlgxOWRYVjFXYXJBUUFBTVlqbHV6VDgvcG8xMmdnbnkxUlRReTRYVlZYRjhsMmFNRUgxcG5MSDdYWW5KaWF1V0xFaVB6Ky9wS1NFaFRJYmk0aHFhMnZWVStycDZaay9mMzU4ZlB6R2pSdkpwS2IyOVBUTW5UczNJeU9EZjRESWJKUy8vT1V2bWhlTEVUK2pwRW5WMzk5ZlhGenNjRGdLQ2dxKy9QSkx3em5YMU5Tc1hyMWFuZVNXVzI1Ujh0eC8vLzJHRVZFVVY2NWNHUmNYOThRVFQ0aWlhTFlhQUFBUUEvek5CNXNORHcrWGxKUmN2WHIxUmcvMHdBTVBLQi9VQWdDQW04SFVMM0tUcWFpb0tETXpzNysvLzZlZUNBQUEvQVJRVXdFQUFPeUJtZ29BQUdBUDFGUUFBQUI3b0tZQ0FBRFlBelVWQUFEQUhxaXBBQUFBOWtCTkJRQUFzQWRxS2dBQWdEMVFVd0VBQU95Qm1nb0FBR0FQL0wxZkFBQUFlOFJ5WFpyaFllMUQvTFpqQnhHUkpOSDI3ZVJ5VVdWbEZOZWxBUUFBK0xtTDd2cXBva2hPSjdXMFRNUjVKQkFnVWFRREI0aUkzRzdxN0NSWnB2WjJhbXdNbHh3QUFHQXFpVkJUaVVLdWpjbzMrWlhHbGJqVFNZSXdzYmx1SFhtOVJFU0NRQnMzUmtpdTJCYXFxNnNMRVVRUVFlU1hHWW51V1J4dUpySFUxUDUrT25zMnBLYXFMMHUrY2lVRmcwUkVnUUNWbFVWSXJuNUliZHUyYllnZ2dnZ2l2OHhJdE0vamNQT0lwYVlHZzlUU0VsSlRyMXlaMkN3dnAwQ0FpRWlXcWJ3OFFuSUFBSUFwSTVhYVNxU3RxV29iTnBBZ0VCRjVQTFIrZllUa0FBQUFVMFowbjFIaW01SkVnNFBYU3FrU1VUUTMwNkZESklyVTFIVHRONjlteVFFQUFLYVNXTDVMdysrdldhT05jTEpNTlRYa2NsRlZGYjVMQXdBQXZ5RDRtdzhBQUFEMlFKRURBQUN3QjJvcUFBQ0FQVkJUQVFBQTdJR2FDZ0FBWUkvL0IzT0JPdDRJRGwrTUFBQUFBRWxGVGtTdVFtQ0M=)