├── ArcSoftFace ├── .vs │ └── ArcSoftFace │ │ └── v14 │ │ └── .suo ├── ArcSoftFace │ ├── favicon.ico │ ├── lib │ │ ├── AForge.dll │ │ ├── AForge.Math.dll │ │ ├── AForge.Imaging.dll │ │ ├── AForge.Video.dll │ │ ├── AForge.Controls.dll │ │ ├── AForge.Imaging.Formats.dll │ │ └── AForge.Video.DirectShow.dll │ ├── Resources │ │ └── favicon.ico │ ├── doc │ │ ├── ~$cSoftFace说明文档.docx │ │ └── ArcSoftFace C# Demo说明文档.pdf │ ├── Properties │ │ ├── Settings.settings │ │ ├── Settings.Designer.cs │ │ ├── AssemblyInfo.cs │ │ ├── Resources.Designer.cs │ │ └── Resources.resx │ ├── SDKModels │ │ ├── MRECT.cs │ │ ├── ASF_VERSION.cs │ │ ├── ASF_ImagePixelFormat.cs │ │ ├── ASF_AgeInfo.cs │ │ ├── ASF_GenderInfo.cs │ │ ├── ASF_FaceFeature.cs │ │ ├── ASF_SingleFaceInfo.cs │ │ ├── ASF_OrientPriority.cs │ │ ├── DetectionMode.cs │ │ ├── ASF_Face3DAngle.cs │ │ ├── ASF_MultiFaceInfo.cs │ │ ├── ASF_OrientCode.cs │ │ └── FaceEngineMask.cs │ ├── Entity │ │ ├── FaceTrackUnit.cs │ │ └── ImageInfo.cs │ ├── Program.cs │ ├── App.config │ ├── Utils │ │ ├── MemoryUtil.cs │ │ ├── ImageUtil.cs │ │ └── FaceUtil.cs │ ├── SDKUtil │ │ └── ASFFunctions.cs │ ├── ArcSoftFace.csproj │ ├── FaceForm.Designer.cs │ ├── FaceForm.cs │ └── FaceForm.resx └── ArcSoftFace.sln └── README.md /ArcSoftFace/.vs/ArcSoftFace/v14/.suo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SkyStonePan/ArcfaceDemo_CSharp/HEAD/ArcSoftFace/.vs/ArcSoftFace/v14/.suo -------------------------------------------------------------------------------- /ArcSoftFace/ArcSoftFace/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SkyStonePan/ArcfaceDemo_CSharp/HEAD/ArcSoftFace/ArcSoftFace/favicon.ico -------------------------------------------------------------------------------- /ArcSoftFace/ArcSoftFace/lib/AForge.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SkyStonePan/ArcfaceDemo_CSharp/HEAD/ArcSoftFace/ArcSoftFace/lib/AForge.dll -------------------------------------------------------------------------------- /ArcSoftFace/ArcSoftFace/lib/AForge.Math.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SkyStonePan/ArcfaceDemo_CSharp/HEAD/ArcSoftFace/ArcSoftFace/lib/AForge.Math.dll -------------------------------------------------------------------------------- /ArcSoftFace/ArcSoftFace/Resources/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SkyStonePan/ArcfaceDemo_CSharp/HEAD/ArcSoftFace/ArcSoftFace/Resources/favicon.ico -------------------------------------------------------------------------------- /ArcSoftFace/ArcSoftFace/lib/AForge.Imaging.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SkyStonePan/ArcfaceDemo_CSharp/HEAD/ArcSoftFace/ArcSoftFace/lib/AForge.Imaging.dll -------------------------------------------------------------------------------- /ArcSoftFace/ArcSoftFace/lib/AForge.Video.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SkyStonePan/ArcfaceDemo_CSharp/HEAD/ArcSoftFace/ArcSoftFace/lib/AForge.Video.dll -------------------------------------------------------------------------------- /ArcSoftFace/ArcSoftFace/doc/~$cSoftFace说明文档.docx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SkyStonePan/ArcfaceDemo_CSharp/HEAD/ArcSoftFace/ArcSoftFace/doc/~$cSoftFace说明文档.docx -------------------------------------------------------------------------------- /ArcSoftFace/ArcSoftFace/lib/AForge.Controls.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SkyStonePan/ArcfaceDemo_CSharp/HEAD/ArcSoftFace/ArcSoftFace/lib/AForge.Controls.dll -------------------------------------------------------------------------------- /ArcSoftFace/ArcSoftFace/doc/ArcSoftFace C# Demo说明文档.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SkyStonePan/ArcfaceDemo_CSharp/HEAD/ArcSoftFace/ArcSoftFace/doc/ArcSoftFace C# Demo说明文档.pdf -------------------------------------------------------------------------------- /ArcSoftFace/ArcSoftFace/lib/AForge.Imaging.Formats.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SkyStonePan/ArcfaceDemo_CSharp/HEAD/ArcSoftFace/ArcSoftFace/lib/AForge.Imaging.Formats.dll -------------------------------------------------------------------------------- /ArcSoftFace/ArcSoftFace/lib/AForge.Video.DirectShow.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SkyStonePan/ArcfaceDemo_CSharp/HEAD/ArcSoftFace/ArcSoftFace/lib/AForge.Video.DirectShow.dll -------------------------------------------------------------------------------- /ArcSoftFace/ArcSoftFace/Properties/Settings.settings: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /ArcSoftFace/ArcSoftFace/SDKModels/MRECT.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace ArcSoftFace.SDKModels 4 | { 5 | /// 6 | /// 人脸框信息结构体 7 | /// 8 | public struct MRECT 9 | { 10 | public int left; 11 | public int top; 12 | public int right; 13 | public int bottom; 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /ArcSoftFace/ArcSoftFace/SDKModels/ASF_VERSION.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace ArcSoftFace.SDKModels 4 | { 5 | /// 6 | /// SDK版本信息结构体 7 | /// 8 | public struct ASF_VERSION 9 | { 10 | public string version; 11 | public string buildDate; 12 | public string copyRight; 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /ArcSoftFace/ArcSoftFace/SDKModels/ASF_ImagePixelFormat.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using System.Threading.Tasks; 6 | 7 | namespace ArcSoftFace.SDKModels 8 | { 9 | public struct ASF_ImagePixelFormat 10 | { 11 | /// 12 | /// RGB24图片格式 13 | /// 14 | public const int ASVL_PAF_RGB24_B8G8R8 = 0x201; 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /ArcSoftFace/ArcSoftFace/SDKModels/ASF_AgeInfo.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace ArcSoftFace.SDKModels 4 | { 5 | /// 6 | /// 年龄结果结构体 7 | /// 8 | public struct ASF_AgeInfo 9 | { 10 | /// 11 | /// 年龄检测结果集合 12 | /// 13 | public IntPtr ageArray; 14 | /// 15 | /// 结果集大小 16 | /// 17 | public int num; 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /ArcSoftFace/ArcSoftFace/SDKModels/ASF_GenderInfo.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace ArcSoftFace.SDKModels 4 | { 5 | /// 6 | /// 性别结构体 7 | /// 8 | public struct ASF_GenderInfo 9 | { 10 | /// 11 | /// 性别检测结果集合 12 | /// 13 | public IntPtr genderArray; 14 | /// 15 | /// 结果集大小 16 | /// 17 | public int num; 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /ArcSoftFace/ArcSoftFace/SDKModels/ASF_FaceFeature.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace ArcSoftFace.SDKModels 4 | { 5 | /// 6 | /// 人脸特征结构体 7 | /// 8 | public struct ASF_FaceFeature 9 | { 10 | /// 11 | /// 特征值 byte[] 12 | /// 13 | public IntPtr feature; 14 | 15 | /// 16 | /// 结果集大小 17 | /// 18 | public int featureSize; 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /ArcSoftFace/ArcSoftFace/SDKModels/ASF_SingleFaceInfo.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace ArcSoftFace.SDKModels 4 | { 5 | /// 6 | /// 单人脸检测结构体 7 | /// 8 | public struct ASF_SingleFaceInfo 9 | { 10 | /// 11 | /// 人脸坐标Rect结果 12 | /// 13 | public MRECT faceRect; 14 | /// 15 | /// 人脸角度 16 | /// 17 | public int faceOrient; 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /ArcSoftFace/ArcSoftFace/SDKModels/ASF_OrientPriority.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace ArcSoftFace.SDKModels 4 | { 5 | /// 6 | /// 人脸检测优先角度结构体,推荐ASF_OP_0_HIGHER_EXT 7 | /// 8 | public struct ASF_OrientPriority 9 | { 10 | public const int ASF_OP_0_ONLY = 0x1; 11 | public const int ASF_OP_90_ONLY = 0x2; 12 | public const int ASF_OP_270_ONLY = 0x3; 13 | public const int ASF_OP_180_ONLY = 0x4; 14 | public const int ASF_OP_0_HIGHER_EXT = 0x5; 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /ArcSoftFace/ArcSoftFace/Entity/FaceTrackUnit.cs: -------------------------------------------------------------------------------- 1 | using ArcSoftFace.SDKModels; 2 | using System; 3 | using System.Collections.Generic; 4 | using System.Drawing; 5 | using System.Linq; 6 | using System.Text; 7 | using System.Threading.Tasks; 8 | 9 | namespace ArcSoftFace.Entity 10 | { 11 | /// 12 | /// 视频检测缓存实体类 13 | /// 14 | public class FaceTrackUnit 15 | { 16 | public MRECT Rect { get; set; } 17 | public IntPtr Feature { get; set; } 18 | public string message = ""; 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /ArcSoftFace/ArcSoftFace/SDKModels/DetectionMode.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace ArcSoftFace.SDKModels 4 | { 5 | /// 6 | /// 图片检测模式 7 | /// 8 | public struct DetectionMode 9 | { 10 | /// 11 | /// Video模式,一般用于多帧连续检测 12 | /// 13 | public const uint ASF_DETECT_MODE_VIDEO = 0x00000000; 14 | 15 | /// 16 | /// Image模式,一般用于静态图的单次检测 17 | /// 18 | public const uint ASF_DETECT_MODE_IMAGE = 0xFFFFFFFF; 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /ArcSoftFace/ArcSoftFace/SDKModels/ASF_Face3DAngle.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace ArcSoftFace.SDKModels 4 | { 5 | /// 6 | /// 3D人脸角度检测结构体,可参考https://ai.arcsoft.com.cn/bbs/forum.php?mod=viewthread&tid=1459&page=1&extra=&_dsign=fd9e1a7a 7 | /// 8 | public struct ASF_Face3DAngle 9 | { 10 | public IntPtr roll; 11 | public IntPtr yaw; 12 | public IntPtr pitch; 13 | /// 14 | /// 是否检测成功,0成功,其他为失败 15 | /// 16 | public IntPtr status; 17 | public int num; 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /ArcSoftFace/ArcSoftFace/Program.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Threading.Tasks; 5 | using System.Windows.Forms; 6 | 7 | namespace ArcSoftFace 8 | { 9 | static class Program 10 | { 11 | /// 12 | /// 应用程序的主入口点。 13 | /// 14 | [STAThread] 15 | static void Main() 16 | { 17 | Application.EnableVisualStyles(); 18 | Application.SetCompatibleTextRenderingDefault(false); 19 | Application.Run(new FaceForm()); 20 | } 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /ArcSoftFace/ArcSoftFace/App.config: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /ArcSoftFace/ArcSoftFace/SDKModels/ASF_MultiFaceInfo.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace ArcSoftFace.SDKModels 4 | { 5 | /// 6 | /// 多人脸检测结构体 7 | /// 8 | public struct ASF_MultiFaceInfo 9 | { 10 | /// 11 | /// 人脸Rect结果集 12 | /// 13 | public IntPtr faceRects; 14 | 15 | /// 16 | /// 人脸角度结果集,与faceRects一一对应 对应ASF_OrientCode 17 | /// 18 | public IntPtr faceOrients; 19 | /// 20 | /// 结果集大小 21 | /// 22 | public int faceNum; 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /ArcSoftFace/ArcSoftFace/Entity/ImageInfo.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace ArcSoftFace.Entity 4 | { 5 | public class ImageInfo 6 | { 7 | /// 8 | /// 图片的像素数据 9 | /// 10 | public IntPtr imgData { get; set; } 11 | 12 | /// 13 | /// 图片像素宽 14 | /// 15 | public int width { get; set; } 16 | 17 | /// 18 | /// 图片像素高 19 | /// 20 | public int height { get; set; } 21 | 22 | /// 23 | /// 图片格式 24 | /// 25 | public int format { get; set; } 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /ArcSoftFace/ArcSoftFace/SDKModels/ASF_OrientCode.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace ArcSoftFace.SDKModels 4 | { 5 | /// 6 | /// 人脸角度结构体 7 | /// 8 | public struct ASF_OrientCode 9 | { 10 | public const int ASF_OC_0 = 0x1; 11 | public const int ASF_OC_90 = 0x2; 12 | public const int ASF_OC_270 = 0x3; 13 | public const int ASF_OC_180 = 0x4; 14 | public const int ASF_OC_30 = 0x5; 15 | public const int ASF_OC_60 = 0x6; 16 | public const int ASF_OC_120 = 0x7; 17 | public const int ASF_OC_150 = 0x8; 18 | public const int ASF_OC_210 = 0x9; 19 | public const int ASF_OC_240 = 0xa; 20 | public const int ASF_OC_300 = 0xb; 21 | public const int ASF_OC_330 = 0xc; 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /ArcSoftFace/ArcSoftFace/Properties/Settings.Designer.cs: -------------------------------------------------------------------------------- 1 | //------------------------------------------------------------------------------ 2 | // 3 | // 此代码由工具生成。 4 | // 运行时版本:4.0.30319.42000 5 | // 6 | // 对此文件的更改可能会导致不正确的行为,并且如果 7 | // 重新生成代码,这些更改将会丢失。 8 | // 9 | //------------------------------------------------------------------------------ 10 | 11 | namespace ArcSoftFace.Properties { 12 | 13 | 14 | [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] 15 | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "14.0.0.0")] 16 | internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase { 17 | 18 | private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings()))); 19 | 20 | public static Settings Default { 21 | get { 22 | return defaultInstance; 23 | } 24 | } 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /ArcSoftFace/ArcSoftFace/Properties/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | using System.Reflection; 2 | using System.Runtime.CompilerServices; 3 | using System.Runtime.InteropServices; 4 | 5 | // 有关程序集的一般信息由以下 6 | // 控制。更改这些特性值可修改 7 | // 与程序集关联的信息。 8 | [assembly: AssemblyTitle("ArcSoftFace")] 9 | [assembly: AssemblyDescription("")] 10 | [assembly: AssemblyConfiguration("")] 11 | [assembly: AssemblyCompany("")] 12 | [assembly: AssemblyProduct("ArcSoftFace")] 13 | [assembly: AssemblyCopyright("Copyright © 2018")] 14 | [assembly: AssemblyTrademark("")] 15 | [assembly: AssemblyCulture("")] 16 | 17 | // 将 ComVisible 设置为 false 会使此程序集中的类型 18 | //对 COM 组件不可见。如果需要从 COM 访问此程序集中的类型 19 | //请将此类型的 ComVisible 特性设置为 true。 20 | [assembly: ComVisible(false)] 21 | 22 | // 如果此项目向 COM 公开,则下列 GUID 用于类型库的 ID 23 | [assembly: Guid("5e201b09-b51b-4de6-92b9-76bebeea7ce6")] 24 | 25 | // 程序集的版本信息由下列四个值组成: 26 | // 27 | // 主版本 28 | // 次版本 29 | // 生成号 30 | // 修订号 31 | // 32 | // 可以指定所有值,也可以使用以下所示的 "*" 预置版本号和修订号 33 | // 方法是按如下所示使用“*”: : 34 | // [assembly: AssemblyVersion("1.0.*")] 35 | [assembly: AssemblyVersion("1.0.0.0")] 36 | [assembly: AssemblyFileVersion("1.0.0.0")] 37 | -------------------------------------------------------------------------------- /ArcSoftFace/ArcSoftFace/SDKModels/FaceEngineMask.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace ArcSoftFace.SDKModels 4 | { 5 | /// 6 | /// 引擎方法类型结构体,在初始化时将用到的类型用|连接传入,如 ASF_NONE|ASF_FACE_DETECT|ASF_FACERECOGNITION 7 | /// 8 | public struct FaceEngineMask 9 | { 10 | /// 11 | /// 不做方法初始化方法类型 12 | /// 13 | public const int ASF_NONE = 0x00000000; 14 | /// 15 | /// 人脸检测方法类型常量 16 | /// 17 | public const int ASF_FACE_DETECT = 0x00000001; 18 | /// 19 | /// 人脸识别方法类型常量,包含图片feature提取和feature比对 20 | /// 21 | public const int ASF_FACERECOGNITION = 0x00000004; 22 | /// 23 | /// 年龄检测方法类型常量 24 | /// 25 | public const int ASF_AGE = 0x00000008; 26 | /// 27 | /// 性别检测方法类型常量 28 | /// 29 | public const int ASF_GENDER = 0x00000010; 30 | /// 31 | /// 3D角度检测方法类型常量 32 | /// 33 | public const int ASF_FACE3DANGLE = 0x00000020; 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | 快速上手: 2 | 3 | 1. 安装VS2012环境安装包(vcredist_x86_vs2012.exe)、VS2013环境安装包(vcredist_x86_vs2013.exe) 4 | 5 | 2. 从官网申请sdk http://www.arcsoft.com.cn/ai/arcface.html ,下载对应的sdk版本(x86或x64)并解压 6 | 7 | 3. 将libs中的“libarcsoft_face.dll”、“libarcsoft_face_engine.dll”拷贝到工程bin目录的对应平台的debug或release目录下 8 | 9 | 4. 将对应appid和appkey替换App.config文件中对应内容 10 | 11 | 5. 在Debug或者Release中选择配置管理器,选择对应的平台 12 | 13 | 6. 按F5启动程序 14 | 15 | 7. 点击“注册人脸”按钮增加人脸库图片 16 | 17 | 8. 点击“选择识别图”按钮增加人脸图片 18 | 19 | 9. 点击“开始匹配”按钮进行比较 20 | 21 | 10. 根据下面文本框查看相关信息 22 | 23 | 24 | 常见问题: 25 | 26 | 1.后引擎初始化失败 27 | (1)请选择对应的平台,如x64,x86 28 | (2)删除bin下面对应的asf_install.dat,freesdk_132512.dat; 29 | (3)请确保App.config下的appid,和appkey与当前sdk一一对应。 30 | 31 | 2.SDK支持那些格式的图片人脸检测? 32 | 目前SDK支持的图片格式有jpg,jpeg,png,bmp等。 33 | 34 | 3.使用人脸检测功能对图片大小有要求吗? 35 | 推荐的图片大小最大不要超过2M,因为图片过大会使人脸检测的效率不理想,当然图片也不宜过小,否则会导致无法检测到人脸。 36 | 37 | 4.使用人脸识别引擎提取到的人脸特征信息是什么? 38 | 人脸特征信息是从图片中的人脸上提取的人脸特征点,是byte[]数组格式。 39 | 40 | 5.SDK人脸比对的阈值设为多少合适? 41 | 推荐值为0.8,用户可根据不同场景适当调整阈值。 42 | 43 | 6.可不可以将人脸特征信息保存起来,等需要进行人脸比对的时候直接拿保存好的人脸特征进行比对? 44 | 可以,当人脸个数比较多时推荐先存储起来,在使用时直接进行比对,这样可以大大提高比对效率。存入数据库时,请以Blob的格式进行存储,不能以string或其他格式存储。 45 | 46 | 7.在.Net项目中出现堆栈溢出问题,如何解决? 47 | .Net平台设置的默认堆栈大小为256KB,SDK中需要的大小为512KB以上,推荐调整堆栈的方法为: 48 | new Thread(new ThreadStart(delegate { 49 | ASF_MultiFaceInfo multiFaceInfo = FaceUtil.DetectFace(pEngine, imageInfo); 50 | }), 1024 * 512).Start(); 51 | 52 | 8.X86模式下批量注册人脸有内存溢出或图片空指针 53 | 请增加虚拟内存或每次批量注册人脸控制在20张图片范围内 54 | 55 | 9.图片中有人脸,但是检测时未检测到人脸 56 | (1)请调整detectFaceScaleVal的值; 57 | (2)请确认图片的宽度是否为4的倍数; 58 | (3)请确认图片是否通过ImageUtil.ReadBMP方法进行数据调整。 59 | -------------------------------------------------------------------------------- /ArcSoftFace/ArcSoftFace.sln: -------------------------------------------------------------------------------- 1 | 2 | Microsoft Visual Studio Solution File, Format Version 12.00 3 | # Visual Studio 15 4 | VisualStudioVersion = 15.0.27703.2047 5 | MinimumVisualStudioVersion = 10.0.40219.1 6 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ArcSoftFace", "ArcSoftFace\ArcSoftFace.csproj", "{5E201B09-B51B-4DE6-92B9-76BEBEEA7CE6}" 7 | EndProject 8 | Global 9 | GlobalSection(SolutionConfigurationPlatforms) = preSolution 10 | Debug|Any CPU = Debug|Any CPU 11 | Debug|x64 = Debug|x64 12 | Debug|x86 = Debug|x86 13 | Release|Any CPU = Release|Any CPU 14 | Release|x64 = Release|x64 15 | Release|x86 = Release|x86 16 | EndGlobalSection 17 | GlobalSection(ProjectConfigurationPlatforms) = postSolution 18 | {5E201B09-B51B-4DE6-92B9-76BEBEEA7CE6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 19 | {5E201B09-B51B-4DE6-92B9-76BEBEEA7CE6}.Debug|Any CPU.Build.0 = Debug|Any CPU 20 | {5E201B09-B51B-4DE6-92B9-76BEBEEA7CE6}.Debug|x64.ActiveCfg = Debug|x64 21 | {5E201B09-B51B-4DE6-92B9-76BEBEEA7CE6}.Debug|x64.Build.0 = Debug|x64 22 | {5E201B09-B51B-4DE6-92B9-76BEBEEA7CE6}.Debug|x86.ActiveCfg = Debug|x86 23 | {5E201B09-B51B-4DE6-92B9-76BEBEEA7CE6}.Debug|x86.Build.0 = Debug|x86 24 | {5E201B09-B51B-4DE6-92B9-76BEBEEA7CE6}.Release|Any CPU.ActiveCfg = Release|Any CPU 25 | {5E201B09-B51B-4DE6-92B9-76BEBEEA7CE6}.Release|Any CPU.Build.0 = Release|Any CPU 26 | {5E201B09-B51B-4DE6-92B9-76BEBEEA7CE6}.Release|x64.ActiveCfg = Release|x64 27 | {5E201B09-B51B-4DE6-92B9-76BEBEEA7CE6}.Release|x64.Build.0 = Release|x64 28 | {5E201B09-B51B-4DE6-92B9-76BEBEEA7CE6}.Release|x86.ActiveCfg = Release|x86 29 | {5E201B09-B51B-4DE6-92B9-76BEBEEA7CE6}.Release|x86.Build.0 = Release|x86 30 | EndGlobalSection 31 | GlobalSection(SolutionProperties) = preSolution 32 | HideSolutionNode = FALSE 33 | EndGlobalSection 34 | GlobalSection(ExtensibilityGlobals) = postSolution 35 | SolutionGuid = {7BFF0664-09D6-4119-8629-FF22194D411F} 36 | EndGlobalSection 37 | EndGlobal 38 | -------------------------------------------------------------------------------- /ArcSoftFace/ArcSoftFace/Utils/MemoryUtil.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Runtime.InteropServices; 3 | 4 | namespace ArcSoftFace.Utils 5 | { 6 | public class MemoryUtil 7 | { 8 | /// 9 | /// 申请内存 10 | /// 11 | /// 内存长度(单位:字节) 12 | /// 内存首地址 13 | public static IntPtr Malloc(int len) 14 | { 15 | return Marshal.AllocHGlobal(len); 16 | } 17 | 18 | /// 19 | /// 释放ptr托管的内存 20 | /// 21 | /// 托管指针 22 | public static void Free(IntPtr ptr) 23 | { 24 | Marshal.FreeHGlobal(ptr); 25 | } 26 | 27 | /// 28 | /// 将字节数组的内容拷贝到托管内存中 29 | /// 30 | /// 元数据 31 | /// 元数据拷贝起始位置 32 | /// 托管内存 33 | /// 拷贝长度 34 | public static void Copy(byte[] source, int startIndex, IntPtr destination, int length) 35 | { 36 | Marshal.Copy(source, startIndex, destination, length); 37 | } 38 | 39 | /// 40 | /// 将托管内存的内容拷贝到字节数组中 41 | /// 42 | /// 托管内存 43 | /// 目标字节数组 44 | /// 拷贝起始位置 45 | /// 拷贝长度 46 | public static void Copy(IntPtr source, byte[] destination, int startIndex, int length) 47 | { 48 | Marshal.Copy(source, destination, startIndex, length); 49 | } 50 | 51 | /// 52 | /// 将ptr托管的内存转化为结构体对象 53 | /// 54 | /// 泛型 55 | /// 托管指针 56 | /// 转化后的对象 57 | public static T PtrToStructure(IntPtr ptr) 58 | { 59 | return Marshal.PtrToStructure(ptr); 60 | } 61 | 62 | /// 63 | /// 将结构体对象复制到ptr托管的内存 64 | /// 65 | /// 66 | /// 67 | /// 68 | public static void StructureToPtr(T t,IntPtr ptr) { 69 | Marshal.StructureToPtr(t,ptr,false); 70 | } 71 | 72 | /// 73 | /// 获取类型的大小 74 | /// 75 | /// 泛型 76 | /// 类型的大小 77 | public static int SizeOf() 78 | { 79 | return Marshal.SizeOf(); 80 | } 81 | } 82 | } 83 | -------------------------------------------------------------------------------- /ArcSoftFace/ArcSoftFace/Properties/Resources.Designer.cs: -------------------------------------------------------------------------------- 1 | //------------------------------------------------------------------------------ 2 | // 3 | // 此代码由工具生成。 4 | // 运行时版本:4.0.30319.42000 5 | // 6 | // 对此文件的更改可能会导致不正确的行为,并且如果 7 | // 重新生成代码,这些更改将会丢失。 8 | // 9 | //------------------------------------------------------------------------------ 10 | 11 | namespace ArcSoftFace.Properties { 12 | using System; 13 | 14 | 15 | /// 16 | /// 一个强类型的资源类,用于查找本地化的字符串等。 17 | /// 18 | // 此类是由 StronglyTypedResourceBuilder 19 | // 类通过类似于 ResGen 或 Visual Studio 的工具自动生成的。 20 | // 若要添加或移除成员,请编辑 .ResX 文件,然后重新运行 ResGen 21 | // (以 /str 作为命令选项),或重新生成 VS 项目。 22 | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")] 23 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] 24 | [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] 25 | internal class Resources { 26 | 27 | private static global::System.Resources.ResourceManager resourceMan; 28 | 29 | private static global::System.Globalization.CultureInfo resourceCulture; 30 | 31 | [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] 32 | internal Resources() { 33 | } 34 | 35 | /// 36 | /// 返回此类使用的缓存的 ResourceManager 实例。 37 | /// 38 | [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] 39 | internal static global::System.Resources.ResourceManager ResourceManager { 40 | get { 41 | if (object.ReferenceEquals(resourceMan, null)) { 42 | global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("ArcSoftFace.Properties.Resources", typeof(Resources).Assembly); 43 | resourceMan = temp; 44 | } 45 | return resourceMan; 46 | } 47 | } 48 | 49 | /// 50 | /// 使用此强类型资源类,为所有资源查找 51 | /// 重写当前线程的 CurrentUICulture 属性。 52 | /// 53 | [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] 54 | internal static global::System.Globalization.CultureInfo Culture { 55 | get { 56 | return resourceCulture; 57 | } 58 | set { 59 | resourceCulture = value; 60 | } 61 | } 62 | 63 | /// 64 | /// 查找类似于 (Icon) 的 System.Drawing.Icon 类型的本地化资源。 65 | /// 66 | internal static System.Drawing.Icon favicon { 67 | get { 68 | object obj = ResourceManager.GetObject("favicon", resourceCulture); 69 | return ((System.Drawing.Icon)(obj)); 70 | } 71 | } 72 | } 73 | } 74 | -------------------------------------------------------------------------------- /ArcSoftFace/ArcSoftFace/SDKUtil/ASFFunctions.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Runtime.InteropServices; 3 | 4 | namespace ArcSoftFace.SDKUtil 5 | { 6 | /// 7 | /// SDK中与人脸识别相关函数封装类 8 | /// 9 | public class ASFFunctions 10 | { 11 | 12 | /// 13 | /// SDK动态链接库路径 14 | /// 15 | public const string Dll_PATH = "libarcsoft_face_engine.dll"; 16 | 17 | /// 18 | /// 激活人脸识别SDK引擎函数 19 | /// 20 | /// SDK对应的AppID 21 | /// SDK对应的SDKKey 22 | /// 调用结果 23 | [DllImport(Dll_PATH, CallingConvention = CallingConvention.Cdecl)] 24 | public static extern int ASFActivation(string appId, string sdkKey); 25 | 26 | /// 27 | /// 初始化引擎 28 | /// 29 | /// AF_DETECT_MODE_VIDEO 视频模式 | AF_DETECT_MODE_IMAGE 图片模式 30 | /// 检测脸部的角度优先值,推荐:ASF_OrientPriority.ASF_OP_0_HIGHER_EXT 31 | /// 用于数值化表示的最小人脸尺寸 32 | /// 最大需要检测的人脸个数 33 | /// 用户选择需要检测的功能组合,可单个或多个 34 | /// 初始化返回的引擎handle 35 | /// 调用结果 36 | [DllImport(Dll_PATH, CallingConvention = CallingConvention.Cdecl)] 37 | public static extern int ASFInitEngine(uint detectMode, int detectFaceOrientPriority, int detectFaceScaleVal, int detectFaceMaxNum, int combinedMask, ref IntPtr pEngine); 38 | 39 | /// 40 | /// 人脸检测 41 | /// 42 | /// 引擎handle 43 | /// 图像宽度 44 | /// 图像高度 45 | /// 图像颜色空间 46 | /// 图像数据 47 | /// 人脸检测结果 48 | /// 调用结果 49 | [DllImport(Dll_PATH, CallingConvention = CallingConvention.Cdecl)] 50 | public static extern int ASFDetectFaces(IntPtr pEngine, int width, int height, int format, IntPtr imgData, IntPtr detectedFaces); 51 | 52 | /// 53 | /// 人脸信息检测(年龄/性别/人脸3D角度) 54 | /// 55 | /// 引擎handle 56 | /// 图像宽度 57 | /// 图像高度 58 | /// 图像颜色空间 59 | /// 图像数据 60 | /// 人脸信息,用户根据待检测的功能裁减选择需要使用的人脸 61 | /// 只支持初始化时候指定需要检测的功能,在process时进一步在这个已经指定的功能集中继续筛选例如初始化的时候指定检测年龄和性别, 在process的时候可以只检测年龄, 但是不能检测除年龄和性别之外的功能 62 | /// 调用结果 63 | [DllImport(Dll_PATH, CallingConvention = CallingConvention.Cdecl)] 64 | public static extern int ASFProcess(IntPtr pEngine, int width, int height, int format, IntPtr imgData, IntPtr detectedFaces, int combinedMask); 65 | 66 | 67 | /// 68 | /// 单人脸特征提取 69 | /// 70 | /// 引擎handle 71 | /// 图像宽度 72 | /// 图像高度 73 | /// 图像颜色空间 74 | /// 图像数据 75 | /// 单张人脸位置和角度信息 76 | /// 人脸特征 77 | /// 调用结果 78 | [DllImport(Dll_PATH, CallingConvention = CallingConvention.Cdecl)] 79 | public static extern int ASFFaceFeatureExtract(IntPtr pEngine, int width, int height, int format, IntPtr imgData, IntPtr faceInfo, IntPtr faceFeature); 80 | 81 | /// 82 | /// 人脸特征比对 83 | /// 84 | /// 引擎handle 85 | /// 待比较人脸特征1 86 | /// 待比较人脸特征2 87 | /// 相似度(0~1) 88 | /// 调用结果 89 | [DllImport(Dll_PATH, CallingConvention = CallingConvention.Cdecl)] 90 | public static extern int ASFFaceFeatureCompare(IntPtr pEngine, IntPtr faceFeature1, IntPtr faceFeature2, ref float similarity); 91 | 92 | /// 93 | /// 获取年龄信息 94 | /// 95 | /// 引擎handle 96 | /// 检测到的年龄信息 97 | /// 调用结果 98 | [DllImport(Dll_PATH, CallingConvention = CallingConvention.Cdecl)] 99 | public static extern int ASFGetAge(IntPtr pEngine, IntPtr ageInfo); 100 | 101 | /// 102 | /// 获取性别信息 103 | /// 104 | /// 引擎handle 105 | /// 检测到的性别信息 106 | /// 调用结果 107 | [DllImport(Dll_PATH, CallingConvention = CallingConvention.Cdecl)] 108 | public static extern int ASFGetGender(IntPtr pEngine, IntPtr genderInfo); 109 | 110 | /// 111 | /// 获取3D角度信息 112 | /// 113 | /// 引擎handle 114 | /// 检测到脸部3D角度信息 115 | /// 调用结果 116 | [DllImport(Dll_PATH, CallingConvention = CallingConvention.Cdecl)] 117 | public static extern int ASFGetFace3DAngle(IntPtr pEngine, IntPtr p3DAngleInfo); 118 | 119 | 120 | /// 121 | /// 销毁引擎 122 | /// 123 | /// 引擎handle 124 | /// 调用结果 125 | [DllImport(Dll_PATH, CallingConvention = CallingConvention.Cdecl)] 126 | public static extern int ASFUninitEngine(IntPtr pEngine); 127 | 128 | /// 129 | /// 获取版本信息 130 | /// 131 | /// 引擎handle 132 | /// 调用结果 133 | [DllImport(Dll_PATH, CallingConvention = CallingConvention.Cdecl)] 134 | public static extern IntPtr ASFGetVersion(IntPtr pEngine); 135 | } 136 | } -------------------------------------------------------------------------------- /ArcSoftFace/ArcSoftFace/Properties/Resources.resx: -------------------------------------------------------------------------------- 1 | 2 | 3 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | text/microsoft-resx 110 | 111 | 112 | 2.0 113 | 114 | 115 | System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 116 | 117 | 118 | System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 119 | 120 | 121 | 122 | ..\Resources\favicon.ico;System.Drawing.Icon, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a 123 | 124 | -------------------------------------------------------------------------------- /ArcSoftFace/ArcSoftFace/ArcSoftFace.csproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Debug 6 | AnyCPU 7 | {5E201B09-B51B-4DE6-92B9-76BEBEEA7CE6} 8 | WinExe 9 | ArcSoftFace 10 | ArcSoftFace 11 | v4.6.1 12 | 512 13 | true 14 | 15 | 16 | AnyCPU 17 | true 18 | full 19 | false 20 | bin\Debug\ 21 | DEBUG;TRACE 22 | prompt 23 | 4 24 | 25 | 26 | AnyCPU 27 | pdbonly 28 | true 29 | bin\Release\ 30 | TRACE 31 | prompt 32 | 4 33 | 34 | 35 | x64 36 | bin\x64\Debug\ 37 | 38 | 39 | x64 40 | bin\x64\Release\ 41 | 42 | 43 | x86 44 | bin\x86\Debug\ 45 | false 46 | 47 | 48 | x86 49 | bin\x86\Release\ 50 | 51 | 52 | favicon.ico 53 | 54 | 55 | 56 | False 57 | lib\AForge.dll 58 | 59 | 60 | False 61 | lib\AForge.Controls.dll 62 | 63 | 64 | False 65 | lib\AForge.Imaging.dll 66 | 67 | 68 | False 69 | lib\AForge.Imaging.Formats.dll 70 | 71 | 72 | False 73 | lib\AForge.Math.dll 74 | 75 | 76 | False 77 | lib\AForge.Video.dll 78 | 79 | 80 | False 81 | lib\AForge.Video.DirectShow.dll 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | 110 | 111 | 112 | Form 113 | 114 | 115 | FaceForm.cs 116 | 117 | 118 | 119 | 120 | True 121 | True 122 | Resources.resx 123 | 124 | 125 | 126 | 127 | 128 | 129 | FaceForm.cs 130 | 131 | 132 | ResXFileCodeGenerator 133 | Designer 134 | Resources.Designer.cs 135 | 136 | 137 | SettingsSingleFileGenerator 138 | Settings.Designer.cs 139 | 140 | 141 | True 142 | Settings.settings 143 | True 144 | 145 | 146 | 147 | 148 | Designer 149 | 150 | 151 | 152 | 153 | 154 | 155 | 156 | 157 | 158 | 159 | 160 | 161 | 162 | 163 | 164 | {6BF52A50-394A-11D3-B153-00C04F79FAA6} 165 | 1 166 | 0 167 | 0 168 | aximp 169 | False 170 | 171 | 172 | {00020430-0000-0000-C000-000000000046} 173 | 2 174 | 0 175 | 0 176 | primary 177 | False 178 | True 179 | 180 | 181 | 182 | 183 | 184 | 185 | -------------------------------------------------------------------------------- /ArcSoftFace/ArcSoftFace/Utils/ImageUtil.cs: -------------------------------------------------------------------------------- 1 | using ArcSoftFace.Entity; 2 | using ArcSoftFace.SDKModels; 3 | using System; 4 | using System.Drawing; 5 | using System.Drawing.Imaging; 6 | 7 | namespace ArcSoftFace.Utils 8 | { 9 | public class ImageUtil 10 | { 11 | /// 12 | /// 获取图片信息 13 | /// 14 | /// 图片 15 | /// 成功或失败 16 | public static ImageInfo ReadBMP(Image image) 17 | { 18 | ImageInfo imageInfo = new ImageInfo(); 19 | 20 | //将Image转换为Format24bppRgb格式的BMP 21 | Bitmap bm = new Bitmap(image); 22 | BitmapData data = bm.LockBits(new Rectangle(0, 0, bm.Width, bm.Height), ImageLockMode.ReadOnly, PixelFormat.Format24bppRgb); 23 | try 24 | { 25 | //位图中第一个像素数据的地址。它也可以看成是位图中的第一个扫描行 26 | IntPtr ptr = data.Scan0; 27 | 28 | //定义数组长度 29 | int soureBitArrayLength = data.Height * Math.Abs(data.Stride); 30 | byte[] sourceBitArray = new byte[soureBitArrayLength]; 31 | 32 | //将bitmap中的内容拷贝到ptr_bgr数组中 33 | MemoryUtil.Copy(ptr, sourceBitArray, 0, soureBitArrayLength); 34 | 35 | //填充引用对象字段值 36 | imageInfo.width = data.Width; 37 | imageInfo.height = data.Height; 38 | imageInfo.format = ASF_ImagePixelFormat.ASVL_PAF_RGB24_B8G8R8; 39 | 40 | //获取去除对齐位后度图像数据 41 | int line = imageInfo.width * 3; 42 | int pitch = Math.Abs(data.Stride); 43 | int bgr_len = line * imageInfo.height; 44 | byte[] destBitArray = new byte[bgr_len]; 45 | 46 | /* 47 | * 图片像素数据在内存中是按行存储,一般图像库都会有一个内存对齐,在每行像素的末尾位置 48 | * 每行的对齐位会使每行多出一个像素空间(三通道如RGB会多出3个字节,四通道RGBA会多出4个字节) 49 | * 以下循环目的是去除每行末尾的对齐位,将有效的像素拷贝到新的数组 50 | */ 51 | for (int i = 0; i < imageInfo.height; ++i) 52 | { 53 | Array.Copy(sourceBitArray, i * pitch, destBitArray, i * line, line); 54 | } 55 | 56 | imageInfo.imgData = MemoryUtil.Malloc(destBitArray.Length); 57 | MemoryUtil.Copy(destBitArray, 0, imageInfo.imgData, destBitArray.Length); 58 | 59 | return imageInfo; 60 | } 61 | catch (Exception e) 62 | { 63 | Console.WriteLine(e.Message); 64 | } 65 | finally 66 | { 67 | bm.UnlockBits(data); 68 | bm.Dispose(); 69 | } 70 | 71 | return null; 72 | } 73 | 74 | /// 75 | /// 用矩形框标记图片指定区域 76 | /// 77 | /// 图片 78 | /// 矩形框左上角X坐标 79 | /// 矩形框左上角Y坐标 80 | /// 矩形框宽度 81 | /// 矩形框高度 82 | /// 标记后的图片 83 | public static Image MarkRect(Image image, int startX, int startY, int width, int height) 84 | { 85 | Image clone = (Image)image.Clone(); 86 | Graphics g = Graphics.FromImage(clone); 87 | try 88 | { 89 | Brush brush = new SolidBrush(Color.Red); 90 | Pen pen = new Pen(brush, 2); 91 | pen.DashStyle = System.Drawing.Drawing2D.DashStyle.Dash; 92 | g.DrawRectangle(pen, new Rectangle(startX, startY, width, height)); 93 | return clone; 94 | } 95 | catch (Exception e) 96 | { 97 | Console.WriteLine(e.Message); 98 | } 99 | finally 100 | { 101 | g.Dispose(); 102 | } 103 | 104 | return null; 105 | } 106 | 107 | /// 108 | /// 用矩形框标记图片指定区域,添加年龄和性别标注 109 | /// 110 | /// 图片 111 | /// 矩形框左上角X坐标 112 | /// 矩形框左上角Y坐标 113 | /// 矩形框宽度 114 | /// 矩形框高度 115 | /// 年龄 116 | /// 性别 117 | /// 标记后的图片 118 | public static Image MarkRectAndString(Image image, int startX, int startY, int width, int height, int age, int gender,int showWidth) 119 | { 120 | Image clone = (Image)image.Clone(); 121 | Graphics g = Graphics.FromImage(clone); 122 | try 123 | { 124 | Brush brush = new SolidBrush(Color.Red); 125 | int penWidth = image.Width / showWidth; 126 | Pen pen = new Pen(brush, penWidth > 1? 2* penWidth:2); 127 | pen.DashStyle = System.Drawing.Drawing2D.DashStyle.Dash; 128 | g.DrawRectangle(pen, new Rectangle(startX < 1 ? 0 : startX, startY < 1 ? 0 : startY, width, height)); 129 | string genderStr = ""; 130 | if(gender >= 0) 131 | { 132 | if(gender == 0) 133 | { 134 | genderStr = "男"; 135 | } 136 | else if (gender == 1) 137 | { 138 | genderStr = "女"; 139 | } 140 | } 141 | int fontSize = image.Width / showWidth; 142 | if (fontSize > 1) 143 | { 144 | int temp = 12; 145 | for (int i = 0; i < fontSize; i++) 146 | { 147 | temp += 6; 148 | } 149 | fontSize = temp; 150 | } else if (fontSize == 1) { 151 | fontSize = 14; 152 | } else 153 | { 154 | fontSize = 12; 155 | } 156 | g.DrawString(string.Format("Age:{0} Gender:{1}", age, genderStr), new Font(FontFamily.GenericSerif, fontSize), brush, startX < 1?0:startX, (startY - 20)< 1?0: startY - 20); 157 | 158 | return clone; 159 | } 160 | catch (Exception e) 161 | { 162 | Console.WriteLine(e.Message); 163 | } 164 | finally 165 | { 166 | g.Dispose(); 167 | } 168 | 169 | return null; 170 | } 171 | 172 | /// 173 | /// 按指定宽高缩放图片 174 | /// 175 | /// 原图片 176 | /// 目标图片宽 177 | /// 目标图片高 178 | /// 179 | public static Image ScaleImage(Image image, int dstWidth, int dstHeight) 180 | { 181 | Graphics g = null; 182 | try 183 | { 184 | //按比例缩放 185 | float scaleRate = getWidthAndHeight(image.Width, image.Height, dstWidth, dstHeight); 186 | int width = (int)(image.Width * scaleRate); 187 | int height = (int)(image.Height * scaleRate); 188 | 189 | //将宽度调整为4的整数倍 190 | if (width % 4 != 0) { 191 | width = width - width % 4; 192 | } 193 | 194 | Bitmap destBitmap = new Bitmap(width, height); 195 | g = Graphics.FromImage(destBitmap); 196 | g.Clear(Color.Transparent); 197 | 198 | //设置画布的描绘质量 199 | g.CompositingQuality = System.Drawing.Drawing2D.CompositingQuality.HighQuality; 200 | g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality; 201 | g.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.HighQualityBicubic; 202 | g.DrawImage(image, new Rectangle((width - width) / 2, (height - height) / 2, width, height), 0, 0, image.Width, image.Height, GraphicsUnit.Pixel); 203 | 204 | //设置压缩质量 205 | EncoderParameters encoderParams = new EncoderParameters(); 206 | long[] quality = new long[1]; 207 | quality[0] = 100; 208 | EncoderParameter encoderParam = new EncoderParameter(Encoder.Quality, quality); 209 | encoderParams.Param[0] = encoderParam; 210 | 211 | return destBitmap; 212 | } 213 | catch (Exception e) 214 | { 215 | Console.WriteLine(e.Message); 216 | } 217 | finally 218 | { 219 | if (g != null) 220 | { 221 | g.Dispose(); 222 | } 223 | } 224 | 225 | return null; 226 | } 227 | 228 | /// 229 | /// 获取图片缩放比例 230 | /// 231 | /// 原图片宽 232 | /// 原图片高 233 | /// 目标图片宽 234 | /// 目标图片高 235 | /// 236 | public static float getWidthAndHeight(int oldWidth,int oldHeigt,int newWidth,int newHeight) 237 | { 238 | //按比例缩放 239 | float scaleRate = 0.0f; 240 | if (oldWidth >= newWidth && oldHeigt >= newHeight) 241 | { 242 | int widthDis = oldWidth - newWidth; 243 | int heightDis = oldHeigt - newHeight; 244 | if (widthDis > heightDis) 245 | { 246 | scaleRate = newWidth * 1f / oldWidth; 247 | } 248 | else 249 | { 250 | scaleRate = newHeight * 1f / oldHeigt; 251 | } 252 | } 253 | else if (oldWidth >= newWidth && oldHeigt < newHeight) 254 | { 255 | scaleRate = newWidth * 1f / oldWidth; 256 | } 257 | else if (oldWidth < newWidth && oldHeigt >= newHeight) 258 | { 259 | scaleRate = newHeight * 1f / oldHeigt; 260 | } 261 | else 262 | { 263 | int widthDis = newWidth - oldWidth; 264 | int heightDis = newHeight - oldHeigt; 265 | if (widthDis > heightDis) 266 | { 267 | scaleRate = newHeight * 1f / oldHeigt; 268 | } 269 | else 270 | { 271 | scaleRate = newWidth * 1f / oldWidth; 272 | } 273 | } 274 | return scaleRate; 275 | } 276 | 277 | /// 278 | /// 剪裁图片 279 | /// 280 | /// 原图片 281 | /// 左坐标 282 | /// 顶部坐标 283 | /// 右坐标 284 | /// 底部坐标 285 | /// 剪裁后的图片 286 | public static Image CutImage(Image src,int left,int top,int right,int bottom) 287 | { 288 | try 289 | { 290 | Bitmap srcBitmap = new Bitmap(src); 291 | Bitmap dstBitmap = srcBitmap.Clone(new Rectangle(left,top,right - left,bottom - top),PixelFormat.DontCare); 292 | return dstBitmap; 293 | } 294 | catch (Exception e) 295 | { 296 | Console.WriteLine(e); 297 | } 298 | return null; 299 | } 300 | 301 | 302 | } 303 | } 304 | -------------------------------------------------------------------------------- /ArcSoftFace/ArcSoftFace/FaceForm.Designer.cs: -------------------------------------------------------------------------------- 1 | namespace ArcSoftFace 2 | { 3 | partial class FaceForm 4 | { 5 | /// 6 | /// 必需的设计器变量。 7 | /// 8 | private System.ComponentModel.IContainer components = null; 9 | 10 | /// 11 | /// 清理所有正在使用的资源。 12 | /// 13 | /// 如果应释放托管资源,为 true;否则为 false。 14 | protected override void Dispose(bool disposing) 15 | { 16 | if (disposing && (components != null)) 17 | { 18 | components.Dispose(); 19 | } 20 | base.Dispose(disposing); 21 | } 22 | 23 | #region Windows 窗体设计器生成的代码 24 | 25 | /// 26 | /// 设计器支持所需的方法 - 不要修改 27 | /// 使用代码编辑器修改此方法的内容。 28 | /// 29 | private void InitializeComponent() 30 | { 31 | this.components = new System.ComponentModel.Container(); 32 | System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(FaceForm)); 33 | this.picImageCompare = new System.Windows.Forms.PictureBox(); 34 | this.lblImageList = new System.Windows.Forms.Label(); 35 | this.chooseMultiImgBtn = new System.Windows.Forms.Button(); 36 | this.logBox = new System.Windows.Forms.TextBox(); 37 | this.chooseImgBtn = new System.Windows.Forms.Button(); 38 | this.imageLists = new System.Windows.Forms.ImageList(this.components); 39 | this.imageList = new System.Windows.Forms.ListView(); 40 | this.matchBtn = new System.Windows.Forms.Button(); 41 | this.btnClearFaceList = new System.Windows.Forms.Button(); 42 | this.lblCompareImage = new System.Windows.Forms.Label(); 43 | this.lblCompareInfo = new System.Windows.Forms.Label(); 44 | this.videoSource = new AForge.Controls.VideoSourcePlayer(); 45 | this.btnStartVideo = new System.Windows.Forms.Button(); 46 | this.txtThreshold = new System.Windows.Forms.TextBox(); 47 | this.label1 = new System.Windows.Forms.Label(); 48 | ((System.ComponentModel.ISupportInitialize)(this.picImageCompare)).BeginInit(); 49 | this.SuspendLayout(); 50 | // 51 | // picImageCompare 52 | // 53 | this.picImageCompare.BackColor = System.Drawing.Color.White; 54 | this.picImageCompare.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D; 55 | this.picImageCompare.Location = new System.Drawing.Point(603, 37); 56 | this.picImageCompare.Name = "picImageCompare"; 57 | this.picImageCompare.Size = new System.Drawing.Size(494, 362); 58 | this.picImageCompare.SizeMode = System.Windows.Forms.PictureBoxSizeMode.CenterImage; 59 | this.picImageCompare.TabIndex = 1; 60 | this.picImageCompare.TabStop = false; 61 | // 62 | // lblImageList 63 | // 64 | this.lblImageList.AutoSize = true; 65 | this.lblImageList.Location = new System.Drawing.Point(12, 11); 66 | this.lblImageList.Name = "lblImageList"; 67 | this.lblImageList.Size = new System.Drawing.Size(47, 12); 68 | this.lblImageList.TabIndex = 7; 69 | this.lblImageList.Text = "人脸库:"; 70 | // 71 | // chooseMultiImgBtn 72 | // 73 | this.chooseMultiImgBtn.FlatStyle = System.Windows.Forms.FlatStyle.Flat; 74 | this.chooseMultiImgBtn.Location = new System.Drawing.Point(14, 431); 75 | this.chooseMultiImgBtn.Name = "chooseMultiImgBtn"; 76 | this.chooseMultiImgBtn.Size = new System.Drawing.Size(133, 26); 77 | this.chooseMultiImgBtn.TabIndex = 32; 78 | this.chooseMultiImgBtn.Text = "注册人脸"; 79 | this.chooseMultiImgBtn.UseVisualStyleBackColor = true; 80 | this.chooseMultiImgBtn.Click += new System.EventHandler(this.ChooseMultiImg); 81 | // 82 | // logBox 83 | // 84 | this.logBox.BackColor = System.Drawing.Color.White; 85 | this.logBox.Location = new System.Drawing.Point(14, 477); 86 | this.logBox.Multiline = true; 87 | this.logBox.Name = "logBox"; 88 | this.logBox.ReadOnly = true; 89 | this.logBox.ScrollBars = System.Windows.Forms.ScrollBars.Vertical; 90 | this.logBox.Size = new System.Drawing.Size(1083, 139); 91 | this.logBox.TabIndex = 31; 92 | // 93 | // chooseImgBtn 94 | // 95 | this.chooseImgBtn.FlatStyle = System.Windows.Forms.FlatStyle.Flat; 96 | this.chooseImgBtn.Location = new System.Drawing.Point(603, 431); 97 | this.chooseImgBtn.Name = "chooseImgBtn"; 98 | this.chooseImgBtn.Size = new System.Drawing.Size(109, 26); 99 | this.chooseImgBtn.TabIndex = 30; 100 | this.chooseImgBtn.Text = "选择识别图"; 101 | this.chooseImgBtn.UseVisualStyleBackColor = true; 102 | this.chooseImgBtn.Click += new System.EventHandler(this.ChooseImg); 103 | // 104 | // imageLists 105 | // 106 | this.imageLists.ImageStream = ((System.Windows.Forms.ImageListStreamer)(resources.GetObject("imageLists.ImageStream"))); 107 | this.imageLists.TransparentColor = System.Drawing.Color.Transparent; 108 | this.imageLists.Images.SetKeyName(0, "alai_152784032385984494.jpg"); 109 | // 110 | // imageList 111 | // 112 | this.imageList.LargeImageList = this.imageLists; 113 | this.imageList.Location = new System.Drawing.Point(14, 37); 114 | this.imageList.Name = "imageList"; 115 | this.imageList.Size = new System.Drawing.Size(527, 362); 116 | this.imageList.TabIndex = 33; 117 | this.imageList.UseCompatibleStateImageBehavior = false; 118 | // 119 | // matchBtn 120 | // 121 | this.matchBtn.FlatStyle = System.Windows.Forms.FlatStyle.Flat; 122 | this.matchBtn.Location = new System.Drawing.Point(748, 431); 123 | this.matchBtn.Name = "matchBtn"; 124 | this.matchBtn.Size = new System.Drawing.Size(104, 26); 125 | this.matchBtn.TabIndex = 34; 126 | this.matchBtn.Text = "开始匹配"; 127 | this.matchBtn.UseVisualStyleBackColor = true; 128 | this.matchBtn.Click += new System.EventHandler(this.matchBtn_Click); 129 | // 130 | // btnClearFaceList 131 | // 132 | this.btnClearFaceList.FlatStyle = System.Windows.Forms.FlatStyle.Flat; 133 | this.btnClearFaceList.Location = new System.Drawing.Point(416, 431); 134 | this.btnClearFaceList.Name = "btnClearFaceList"; 135 | this.btnClearFaceList.Size = new System.Drawing.Size(125, 26); 136 | this.btnClearFaceList.TabIndex = 35; 137 | this.btnClearFaceList.Text = "清空人脸库"; 138 | this.btnClearFaceList.UseVisualStyleBackColor = true; 139 | this.btnClearFaceList.Click += new System.EventHandler(this.btnClearFaceList_Click); 140 | // 141 | // lblCompareImage 142 | // 143 | this.lblCompareImage.AutoSize = true; 144 | this.lblCompareImage.Location = new System.Drawing.Point(601, 11); 145 | this.lblCompareImage.Name = "lblCompareImage"; 146 | this.lblCompareImage.Size = new System.Drawing.Size(59, 12); 147 | this.lblCompareImage.TabIndex = 36; 148 | this.lblCompareImage.Text = "比对人脸:"; 149 | // 150 | // lblCompareInfo 151 | // 152 | this.lblCompareInfo.AutoSize = true; 153 | this.lblCompareInfo.Font = new System.Drawing.Font("宋体", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(134))); 154 | this.lblCompareInfo.Location = new System.Drawing.Point(667, 11); 155 | this.lblCompareInfo.Name = "lblCompareInfo"; 156 | this.lblCompareInfo.Size = new System.Drawing.Size(0, 16); 157 | this.lblCompareInfo.TabIndex = 37; 158 | // 159 | // videoSource 160 | // 161 | this.videoSource.Location = new System.Drawing.Point(603, 37); 162 | this.videoSource.Name = "videoSource"; 163 | this.videoSource.Size = new System.Drawing.Size(494, 362); 164 | this.videoSource.TabIndex = 38; 165 | this.videoSource.Text = "videoSource"; 166 | this.videoSource.VideoSource = null; 167 | this.videoSource.Paint += new System.Windows.Forms.PaintEventHandler(this.videoSource_Paint); 168 | // 169 | // btnStartVideo 170 | // 171 | this.btnStartVideo.FlatStyle = System.Windows.Forms.FlatStyle.Flat; 172 | this.btnStartVideo.Location = new System.Drawing.Point(883, 431); 173 | this.btnStartVideo.Name = "btnStartVideo"; 174 | this.btnStartVideo.Size = new System.Drawing.Size(107, 26); 175 | this.btnStartVideo.TabIndex = 39; 176 | this.btnStartVideo.Text = "启用摄像头"; 177 | this.btnStartVideo.UseVisualStyleBackColor = true; 178 | this.btnStartVideo.Click += new System.EventHandler(this.btnStartVideo_Click); 179 | // 180 | // txtThreshold 181 | // 182 | this.txtThreshold.BackColor = System.Drawing.SystemColors.Window; 183 | this.txtThreshold.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; 184 | this.txtThreshold.Font = new System.Drawing.Font("微软雅黑", 10F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); 185 | this.txtThreshold.Location = new System.Drawing.Point(1037, 431); 186 | this.txtThreshold.Name = "txtThreshold"; 187 | this.txtThreshold.Size = new System.Drawing.Size(60, 25); 188 | this.txtThreshold.TabIndex = 40; 189 | this.txtThreshold.Text = "0.8"; 190 | this.txtThreshold.KeyPress += new System.Windows.Forms.KeyPressEventHandler(this.txtThreshold_KeyPress); 191 | this.txtThreshold.KeyUp += new System.Windows.Forms.KeyEventHandler(this.txtThreshold_KeyUp); 192 | // 193 | // label1 194 | // 195 | this.label1.AutoSize = true; 196 | this.label1.Location = new System.Drawing.Point(996, 436); 197 | this.label1.Name = "label1"; 198 | this.label1.Size = new System.Drawing.Size(41, 12); 199 | this.label1.TabIndex = 41; 200 | this.label1.Text = "阈值:"; 201 | // 202 | // FaceForm 203 | // 204 | this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F); 205 | this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; 206 | this.ClientSize = new System.Drawing.Size(1115, 633); 207 | this.Controls.Add(this.label1); 208 | this.Controls.Add(this.txtThreshold); 209 | this.Controls.Add(this.btnStartVideo); 210 | this.Controls.Add(this.videoSource); 211 | this.Controls.Add(this.lblCompareInfo); 212 | this.Controls.Add(this.lblCompareImage); 213 | this.Controls.Add(this.btnClearFaceList); 214 | this.Controls.Add(this.matchBtn); 215 | this.Controls.Add(this.imageList); 216 | this.Controls.Add(this.chooseMultiImgBtn); 217 | this.Controls.Add(this.logBox); 218 | this.Controls.Add(this.chooseImgBtn); 219 | this.Controls.Add(this.lblImageList); 220 | this.Controls.Add(this.picImageCompare); 221 | this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle; 222 | this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon"))); 223 | this.MaximizeBox = false; 224 | this.MinimizeBox = false; 225 | this.Name = "FaceForm"; 226 | this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen; 227 | this.Text = "ArcSoftFace C# demo"; 228 | this.FormClosed += new System.Windows.Forms.FormClosedEventHandler(this.Form_Closed); 229 | ((System.ComponentModel.ISupportInitialize)(this.picImageCompare)).EndInit(); 230 | this.ResumeLayout(false); 231 | this.PerformLayout(); 232 | 233 | } 234 | 235 | #endregion 236 | 237 | private System.Windows.Forms.PictureBox picImageCompare; 238 | private System.Windows.Forms.Label lblImageList; 239 | private System.Windows.Forms.Button chooseMultiImgBtn; 240 | private System.Windows.Forms.TextBox logBox; 241 | private System.Windows.Forms.Button chooseImgBtn; 242 | private System.Windows.Forms.ImageList imageLists; 243 | private System.Windows.Forms.ListView imageList; 244 | private System.Windows.Forms.Button matchBtn; 245 | private System.Windows.Forms.Button btnClearFaceList; 246 | private System.Windows.Forms.Label lblCompareImage; 247 | private System.Windows.Forms.Label lblCompareInfo; 248 | private AForge.Controls.VideoSourcePlayer videoSource; 249 | private System.Windows.Forms.Button btnStartVideo; 250 | private System.Windows.Forms.TextBox txtThreshold; 251 | private System.Windows.Forms.Label label1; 252 | } 253 | } 254 | 255 | -------------------------------------------------------------------------------- /ArcSoftFace/ArcSoftFace/Utils/FaceUtil.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using ArcSoftFace.SDKModels; 3 | using ArcSoftFace.SDKUtil; 4 | using ArcSoftFace.Entity; 5 | using System.Drawing; 6 | 7 | namespace ArcSoftFace.Utils 8 | { 9 | public class FaceUtil 10 | { 11 | /// 12 | /// 人脸检测(PS:检测RGB图像的人脸时,必须保证图像的宽度能被4整除,否则会失败) 13 | /// 14 | /// 引擎Handle 15 | /// 图像数据 16 | /// 人脸检测结果 17 | public static ASF_MultiFaceInfo DetectFace(IntPtr pEngine, ImageInfo imageInfo) 18 | { 19 | ASF_MultiFaceInfo multiFaceInfo = new ASF_MultiFaceInfo(); 20 | IntPtr pMultiFaceInfo = MemoryUtil.Malloc(MemoryUtil.SizeOf()); 21 | int retCode = ASFFunctions.ASFDetectFaces(pEngine, imageInfo.width, imageInfo.height, imageInfo.format, imageInfo.imgData, pMultiFaceInfo); 22 | if (retCode != 0) 23 | { 24 | MemoryUtil.Free(pMultiFaceInfo); 25 | return multiFaceInfo; 26 | } 27 | multiFaceInfo = MemoryUtil.PtrToStructure(pMultiFaceInfo); 28 | 29 | return multiFaceInfo; 30 | } 31 | 32 | /// 33 | /// 人脸检测 34 | /// 35 | /// 引擎Handle 36 | /// 图像 37 | /// 人脸检测结果 38 | private static object locks = new object(); 39 | public static ASF_MultiFaceInfo DetectFace(IntPtr pEngine, Image image) 40 | { 41 | lock (locks) 42 | { 43 | ASF_MultiFaceInfo multiFaceInfo = new ASF_MultiFaceInfo(); 44 | if (image != null) 45 | { 46 | image = ImageUtil.ScaleImage(image, image.Width, image.Height); 47 | ImageInfo imageInfo = ImageUtil.ReadBMP(image); 48 | multiFaceInfo = DetectFace(pEngine, imageInfo); 49 | MemoryUtil.Free(imageInfo.imgData); 50 | return multiFaceInfo; 51 | 52 | } 53 | else 54 | { 55 | return multiFaceInfo; 56 | } 57 | } 58 | } 59 | 60 | /// 61 | /// 提取人脸特征 62 | /// 63 | /// 引擎Handle 64 | /// 图像数据 65 | /// 人脸检测结果 66 | /// 保存人脸特征结构体指针 67 | public static IntPtr ExtractFeature(IntPtr pEngine, ImageInfo imageInfo, ASF_MultiFaceInfo multiFaceInfo, out ASF_SingleFaceInfo singleFaceInfo) 68 | { 69 | singleFaceInfo = new ASF_SingleFaceInfo(); 70 | singleFaceInfo.faceRect = MemoryUtil.PtrToStructure(multiFaceInfo.faceRects); 71 | singleFaceInfo.faceOrient = MemoryUtil.PtrToStructure(multiFaceInfo.faceOrients); 72 | IntPtr pSingleFaceInfo = MemoryUtil.Malloc(MemoryUtil.SizeOf()); 73 | MemoryUtil.StructureToPtr(singleFaceInfo, pSingleFaceInfo); 74 | 75 | IntPtr pFaceFeature = MemoryUtil.Malloc(MemoryUtil.SizeOf()); 76 | int retCode = ASFFunctions.ASFFaceFeatureExtract(pEngine, imageInfo.width, imageInfo.height, imageInfo.format, imageInfo.imgData, pSingleFaceInfo, pFaceFeature); 77 | Console.WriteLine("FR Extract Feature result:" + retCode); 78 | 79 | if (retCode != 0) 80 | { 81 | //释放指针 82 | MemoryUtil.Free(pSingleFaceInfo); 83 | MemoryUtil.Free(pFaceFeature); 84 | ASF_FaceFeature emptyFeature = new ASF_FaceFeature(); 85 | IntPtr pEmptyFeature = MemoryUtil.Malloc(MemoryUtil.SizeOf()); 86 | MemoryUtil.StructureToPtr(emptyFeature, pEmptyFeature); 87 | return pEmptyFeature; 88 | } 89 | 90 | //人脸特征feature过滤 91 | ASF_FaceFeature faceFeature = MemoryUtil.PtrToStructure(pFaceFeature); 92 | byte[] feature = new byte[faceFeature.featureSize]; 93 | MemoryUtil.Copy(faceFeature.feature, feature, 0, faceFeature.featureSize); 94 | 95 | ASF_FaceFeature localFeature = new ASF_FaceFeature(); 96 | localFeature.feature = MemoryUtil.Malloc(feature.Length); 97 | MemoryUtil.Copy(feature, 0, localFeature.feature, feature.Length); 98 | localFeature.featureSize = feature.Length; 99 | IntPtr pLocalFeature = MemoryUtil.Malloc(MemoryUtil.SizeOf()); 100 | MemoryUtil.StructureToPtr(localFeature, pLocalFeature); 101 | 102 | //释放指针 103 | MemoryUtil.Free(pSingleFaceInfo); 104 | MemoryUtil.Free(pFaceFeature); 105 | 106 | return pLocalFeature; 107 | } 108 | 109 | /// 110 | /// 提取人脸特征 111 | /// 112 | /// 引擎Handle 113 | /// 图像 114 | /// 保存人脸特征结构体指针 115 | public static IntPtr ExtractFeature(IntPtr pEngine, Image image, out ASF_SingleFaceInfo singleFaceInfo) 116 | { 117 | image = ImageUtil.ScaleImage(image, image.Width, image.Height); 118 | ImageInfo imageInfo = ImageUtil.ReadBMP(image); 119 | ASF_MultiFaceInfo multiFaceInfo = DetectFace(pEngine, imageInfo); 120 | singleFaceInfo = new ASF_SingleFaceInfo(); 121 | IntPtr pFaceModel = ExtractFeature(pEngine, imageInfo, multiFaceInfo, out singleFaceInfo); 122 | MemoryUtil.Free(imageInfo.imgData); 123 | return pFaceModel; 124 | } 125 | 126 | 127 | /// 128 | /// 提取单人脸特征 129 | /// 130 | /// 人脸识别引擎 131 | /// 图片 132 | /// 单人脸信息 133 | /// 单人脸特征 134 | public static IntPtr ExtractFeature(IntPtr pEngine, Image image, ASF_SingleFaceInfo singleFaceInfo) 135 | { 136 | ImageInfo imageInfo = ImageUtil.ReadBMP(image); 137 | IntPtr pSingleFaceInfo = MemoryUtil.Malloc(MemoryUtil.SizeOf()); 138 | MemoryUtil.StructureToPtr(singleFaceInfo, pSingleFaceInfo); 139 | 140 | IntPtr pFaceFeature = MemoryUtil.Malloc(MemoryUtil.SizeOf()); 141 | int retCode = -1; 142 | try 143 | { 144 | retCode = ASFFunctions.ASFFaceFeatureExtract(pEngine, imageInfo.width, imageInfo.height, imageInfo.format, imageInfo.imgData, pSingleFaceInfo, pFaceFeature); 145 | } 146 | catch (Exception e) 147 | { 148 | Console.WriteLine(e.Message); 149 | } 150 | Console.WriteLine("FR Extract Feature result:" + retCode); 151 | 152 | if (retCode != 0) 153 | { 154 | //释放指针 155 | MemoryUtil.Free(pSingleFaceInfo); 156 | MemoryUtil.Free(pFaceFeature); 157 | ASF_FaceFeature emptyFeature = new ASF_FaceFeature(); 158 | IntPtr pEmptyFeature = MemoryUtil.Malloc(MemoryUtil.SizeOf()); 159 | MemoryUtil.StructureToPtr(emptyFeature, pEmptyFeature); 160 | return pEmptyFeature; 161 | } 162 | 163 | //人脸特征feature过滤 164 | ASF_FaceFeature faceFeature = MemoryUtil.PtrToStructure(pFaceFeature); 165 | byte[] feature = new byte[faceFeature.featureSize]; 166 | MemoryUtil.Copy(faceFeature.feature, feature, 0, faceFeature.featureSize); 167 | 168 | ASF_FaceFeature localFeature = new ASF_FaceFeature(); 169 | localFeature.feature = MemoryUtil.Malloc(feature.Length); 170 | MemoryUtil.Copy(feature, 0, localFeature.feature, feature.Length); 171 | localFeature.featureSize = feature.Length; 172 | IntPtr pLocalFeature = MemoryUtil.Malloc(MemoryUtil.SizeOf()); 173 | MemoryUtil.StructureToPtr(localFeature, pLocalFeature); 174 | 175 | //释放指针 176 | MemoryUtil.Free(pSingleFaceInfo); 177 | MemoryUtil.Free(pFaceFeature); 178 | MemoryUtil.Free(imageInfo.imgData); 179 | 180 | return pLocalFeature; 181 | } 182 | 183 | 184 | 185 | /// 186 | /// 年龄检测 187 | /// 188 | /// 引擎Handle 189 | /// 图像数据 190 | /// 人脸检测结果 191 | /// 年龄检测结构体 192 | public static ASF_AgeInfo AgeEstimation(IntPtr pEngine, ImageInfo imageInfo, ASF_MultiFaceInfo multiFaceInfo, out int retCode) 193 | { 194 | retCode = -1; 195 | IntPtr pMultiFaceInfo = MemoryUtil.Malloc(MemoryUtil.SizeOf()); 196 | MemoryUtil.StructureToPtr(multiFaceInfo, pMultiFaceInfo); 197 | 198 | if (multiFaceInfo.faceNum == 0) 199 | { 200 | return new ASF_AgeInfo(); 201 | } 202 | 203 | //人脸信息处理 204 | retCode = ASFFunctions.ASFProcess(pEngine, imageInfo.width, imageInfo.height, imageInfo.format, imageInfo.imgData, pMultiFaceInfo, FaceEngineMask.ASF_AGE); 205 | if (retCode == 0) 206 | { 207 | //获取年龄信息 208 | IntPtr pAgeInfo = MemoryUtil.Malloc(MemoryUtil.SizeOf()); 209 | retCode = ASFFunctions.ASFGetAge(pEngine, pAgeInfo); 210 | Console.WriteLine("Get Age Result:" + retCode); 211 | ASF_AgeInfo ageInfo = MemoryUtil.PtrToStructure(pAgeInfo); 212 | 213 | //释放内存 214 | MemoryUtil.Free(pMultiFaceInfo); 215 | MemoryUtil.Free(pAgeInfo); 216 | return ageInfo; 217 | } 218 | else 219 | { 220 | return new ASF_AgeInfo(); 221 | } 222 | } 223 | 224 | 225 | /// 226 | /// 单人脸年龄检测 227 | /// 228 | /// 人脸识别引擎 229 | /// 图片 230 | /// 单人脸信息 231 | /// 年龄检测结果 232 | public static ASF_AgeInfo AgeEstimation(IntPtr pEngine, Image image, ASF_SingleFaceInfo singleFaceInfo) 233 | { 234 | ImageInfo imageInfo = ImageUtil.ReadBMP(image); 235 | ASF_MultiFaceInfo multiFaceInfo = new ASF_MultiFaceInfo(); 236 | multiFaceInfo.faceRects = MemoryUtil.Malloc(MemoryUtil.SizeOf()); 237 | MemoryUtil.StructureToPtr(singleFaceInfo.faceRect, multiFaceInfo.faceRects); 238 | multiFaceInfo.faceOrients = MemoryUtil.Malloc(MemoryUtil.SizeOf()); 239 | MemoryUtil.StructureToPtr(singleFaceInfo.faceOrient, multiFaceInfo.faceOrients); 240 | multiFaceInfo.faceNum = 1; 241 | ASF_AgeInfo ageInfo = AgeEstimation(pEngine, imageInfo, multiFaceInfo); 242 | MemoryUtil.Free(imageInfo.imgData); 243 | return ageInfo; 244 | } 245 | 246 | /// 247 | /// 性别检测 248 | /// 249 | /// 引擎Handle 250 | /// 图像数据 251 | /// 人脸检测结果 252 | /// 保存性别检测结果结构体 253 | public static ASF_GenderInfo GenderEstimation(IntPtr pEngine, ImageInfo imageInfo, ASF_MultiFaceInfo multiFaceInfo, out int retCode) 254 | { 255 | retCode = -1; 256 | IntPtr pMultiFaceInfo = MemoryUtil.Malloc(MemoryUtil.SizeOf()); 257 | MemoryUtil.StructureToPtr(multiFaceInfo, pMultiFaceInfo); 258 | 259 | if (multiFaceInfo.faceNum == 0) 260 | { 261 | return new ASF_GenderInfo(); 262 | } 263 | 264 | //人脸信息处理 265 | retCode = ASFFunctions.ASFProcess(pEngine, imageInfo.width, imageInfo.height, imageInfo.format, imageInfo.imgData, pMultiFaceInfo, FaceEngineMask.ASF_GENDER); 266 | if (retCode == 0) 267 | { 268 | //获取性别信息 269 | IntPtr pGenderInfo = MemoryUtil.Malloc(MemoryUtil.SizeOf()); 270 | retCode = ASFFunctions.ASFGetGender(pEngine, pGenderInfo); 271 | Console.WriteLine("Get Gender Result:" + retCode); 272 | ASF_GenderInfo genderInfo = MemoryUtil.PtrToStructure(pGenderInfo); 273 | 274 | //释放内存 275 | MemoryUtil.Free(pMultiFaceInfo); 276 | MemoryUtil.Free(pGenderInfo); 277 | 278 | return genderInfo; 279 | } 280 | else 281 | { 282 | return new ASF_GenderInfo(); 283 | } 284 | } 285 | 286 | /// 287 | /// 人脸3D角度检测 288 | /// 289 | /// 引擎Handle 290 | /// 图像数据 291 | /// 人脸检测结果 292 | /// 保存人脸3D角度检测结果结构体 293 | public static ASF_Face3DAngle Face3DAngleDetection(IntPtr pEngine, ImageInfo imageInfo, ASF_MultiFaceInfo multiFaceInfo,out int retCode) 294 | { 295 | IntPtr pMultiFaceInfo = MemoryUtil.Malloc(MemoryUtil.SizeOf()); 296 | MemoryUtil.StructureToPtr(multiFaceInfo, pMultiFaceInfo); 297 | 298 | if (multiFaceInfo.faceNum == 0) 299 | { 300 | retCode = -1; 301 | return new ASF_Face3DAngle(); 302 | } 303 | 304 | //人脸信息处理 305 | retCode = ASFFunctions.ASFProcess(pEngine, imageInfo.width, imageInfo.height, imageInfo.format, imageInfo.imgData, pMultiFaceInfo, FaceEngineMask.ASF_FACE3DANGLE); 306 | if (retCode == 0) 307 | { 308 | //获取人脸3D角度 309 | IntPtr pFace3DAngleInfo = MemoryUtil.Malloc(MemoryUtil.SizeOf()); 310 | retCode = ASFFunctions.ASFGetFace3DAngle(pEngine, pFace3DAngleInfo); 311 | Console.WriteLine("Get Face3D Angle Result:" + retCode); 312 | ASF_Face3DAngle face3DAngle = MemoryUtil.PtrToStructure(pFace3DAngleInfo); 313 | 314 | //释放内存 315 | MemoryUtil.Free(pMultiFaceInfo); 316 | MemoryUtil.Free(pFace3DAngleInfo); 317 | 318 | return face3DAngle; 319 | }else 320 | { 321 | return new ASF_Face3DAngle(); 322 | } 323 | } 324 | 325 | 326 | /// 327 | /// 性别检测 328 | /// 329 | /// 引擎Handle 330 | /// 图像数据 331 | /// 人脸检测结果 332 | /// 保存性别估计结果结构体 333 | public static ASF_GenderInfo GenderEstimation(IntPtr pEngine, ImageInfo imageInfo, ASF_MultiFaceInfo multiFaceInfo) 334 | { 335 | IntPtr pMultiFaceInfo = MemoryUtil.Malloc(MemoryUtil.SizeOf()); 336 | MemoryUtil.StructureToPtr(multiFaceInfo, pMultiFaceInfo); 337 | 338 | if (multiFaceInfo.faceNum == 0) 339 | { 340 | return new ASF_GenderInfo(); 341 | } 342 | 343 | //人脸信息处理 344 | int retCode = ASFFunctions.ASFProcess(pEngine, imageInfo.width, imageInfo.height, imageInfo.format, imageInfo.imgData, pMultiFaceInfo, FaceEngineMask.ASF_GENDER); 345 | 346 | //获取性别信息 347 | IntPtr pGenderInfo = MemoryUtil.Malloc(MemoryUtil.SizeOf()); 348 | retCode = ASFFunctions.ASFGetGender(pEngine, pGenderInfo); 349 | Console.WriteLine("Get Gender Result:" + retCode); 350 | ASF_GenderInfo genderInfo = MemoryUtil.PtrToStructure(pGenderInfo); 351 | 352 | //释放内存 353 | MemoryUtil.Free(pMultiFaceInfo); 354 | MemoryUtil.Free(pGenderInfo); 355 | 356 | return genderInfo; 357 | } 358 | 359 | 360 | 361 | /// 362 | /// 单人脸性别检测 363 | /// 364 | /// 引擎Handle 365 | /// 图片 366 | /// 单人脸信息 367 | /// 性别估计结果 368 | public static ASF_GenderInfo GenderEstimation(IntPtr pEngine, Image image, ASF_SingleFaceInfo singleFaceInfo) 369 | { 370 | ImageInfo imageInfo = ImageUtil.ReadBMP(image); 371 | ASF_MultiFaceInfo multiFaceInfo = new ASF_MultiFaceInfo(); 372 | multiFaceInfo.faceRects = MemoryUtil.Malloc(MemoryUtil.SizeOf()); 373 | MemoryUtil.StructureToPtr(singleFaceInfo.faceRect, multiFaceInfo.faceRects); 374 | multiFaceInfo.faceOrients = MemoryUtil.Malloc(MemoryUtil.SizeOf()); 375 | MemoryUtil.StructureToPtr(singleFaceInfo.faceOrient, multiFaceInfo.faceOrients); 376 | multiFaceInfo.faceNum = 1; 377 | ASF_GenderInfo genderInfo = GenderEstimation(pEngine, imageInfo, multiFaceInfo); 378 | MemoryUtil.Free(imageInfo.imgData); 379 | return genderInfo; 380 | } 381 | 382 | /// 383 | /// 年龄检测 384 | /// 385 | /// 引擎Handle 386 | /// 图像数据 387 | /// 人脸检测结果 388 | /// 年龄检测结构体 389 | public static ASF_AgeInfo AgeEstimation(IntPtr pEngine, ImageInfo imageInfo, ASF_MultiFaceInfo multiFaceInfo) 390 | { 391 | IntPtr pMultiFaceInfo = MemoryUtil.Malloc(MemoryUtil.SizeOf()); 392 | MemoryUtil.StructureToPtr(multiFaceInfo, pMultiFaceInfo); 393 | 394 | if (multiFaceInfo.faceNum == 0) 395 | { 396 | return new ASF_AgeInfo(); 397 | } 398 | 399 | //人脸信息处理 400 | int retCode = ASFFunctions.ASFProcess(pEngine, imageInfo.width, imageInfo.height, imageInfo.format, imageInfo.imgData, pMultiFaceInfo, FaceEngineMask.ASF_AGE); 401 | 402 | //获取年龄信息 403 | IntPtr pAgeInfo = MemoryUtil.Malloc(MemoryUtil.SizeOf()); 404 | retCode = ASFFunctions.ASFGetAge(pEngine, pAgeInfo); 405 | Console.WriteLine("Get Age Result:" + retCode); 406 | ASF_AgeInfo ageInfo = MemoryUtil.PtrToStructure(pAgeInfo); 407 | 408 | //释放内存 409 | MemoryUtil.Free(pMultiFaceInfo); 410 | MemoryUtil.Free(pAgeInfo); 411 | 412 | return ageInfo; 413 | } 414 | 415 | /// 416 | /// 获取多个人脸检测结果中面积最大的人脸 417 | /// 418 | /// 人脸检测结果 419 | /// 面积最大的人脸信息 420 | public static ASF_SingleFaceInfo GetMaxFace(ASF_MultiFaceInfo multiFaceInfo) 421 | { 422 | ASF_SingleFaceInfo singleFaceInfo = new ASF_SingleFaceInfo(); 423 | singleFaceInfo.faceRect = new MRECT(); 424 | singleFaceInfo.faceOrient = 1; 425 | 426 | int maxArea = 0; 427 | int index = -1; 428 | for (int i = 0; i < multiFaceInfo.faceNum; i++) 429 | { 430 | MRECT rect = MemoryUtil.PtrToStructure(multiFaceInfo.faceRects + MemoryUtil.SizeOf() * i); 431 | int area = (rect.right - rect.left) * (rect.bottom - rect.top); 432 | if (maxArea <= area) 433 | { 434 | maxArea = area; 435 | index = i; 436 | } 437 | } 438 | if (index != -1) 439 | { 440 | singleFaceInfo.faceRect = MemoryUtil.PtrToStructure(multiFaceInfo.faceRects + MemoryUtil.SizeOf() * index); 441 | singleFaceInfo.faceOrient = MemoryUtil.PtrToStructure(multiFaceInfo.faceOrients + MemoryUtil.SizeOf() * index); 442 | } 443 | return singleFaceInfo; 444 | } 445 | } 446 | } 447 | -------------------------------------------------------------------------------- /ArcSoftFace/ArcSoftFace/FaceForm.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Drawing; 4 | using System.Windows.Forms; 5 | using ArcSoftFace.SDKModels; 6 | using ArcSoftFace.SDKUtil; 7 | using ArcSoftFace.Utils; 8 | using ArcSoftFace.Entity; 9 | using System.IO; 10 | using System.Configuration; 11 | using System.Threading; 12 | using AForge.Video.DirectShow; 13 | using System.Text.RegularExpressions; 14 | using System.Runtime.Serialization.Formatters.Binary; 15 | using System.Runtime.Serialization; 16 | 17 | namespace ArcSoftFace 18 | { 19 | public partial class FaceForm : Form 20 | { 21 | //引擎Handle 22 | private IntPtr pImageEngine = IntPtr.Zero; 23 | 24 | //保存右侧图片路径 25 | private string image1Path; 26 | 27 | //右侧图片人脸特征 28 | private IntPtr image1Feature; 29 | 30 | //保存对比图片的列表 31 | private List imagePathList = new List(); 32 | 33 | //左侧图库人脸特征列表 34 | private List imagesFeatureList = new List(); 35 | 36 | //相似度 37 | private float threshold = 0.8f; 38 | 39 | //用于标记是否需要清除比对结果 40 | private bool isCompare = false; 41 | 42 | #region 视频模式下相关 43 | 44 | //视频引擎Handle 45 | private IntPtr pVideoEngine = IntPtr.Zero; 46 | 47 | //视频引擎 FR Handle 处理 FR和图片引擎分开,减少强占引擎的问题 48 | private IntPtr pVideoImageEngine = IntPtr.Zero; 49 | /// 50 | /// 视频输入设备信息 51 | /// 52 | private FilterInfoCollection filterInfoCollection; 53 | private VideoCaptureDevice deviceVideo; 54 | 55 | #endregion 56 | 57 | public FaceForm() 58 | { 59 | InitializeComponent(); 60 | InitEngines(); 61 | videoSource.Hide(); 62 | txtThreshold.Enabled = false; 63 | } 64 | 65 | /// 66 | /// 初始化引擎 67 | /// 68 | private void InitEngines() 69 | { 70 | //读取配置文件 71 | AppSettingsReader reader = new AppSettingsReader(); 72 | string appId = (string)reader.GetValue("APP_ID", typeof(string)); 73 | string sdkKey64 = (string)reader.GetValue("SDKKEY64", typeof(string)); 74 | string sdkKey32 = (string)reader.GetValue("SDKKEY32", typeof(string)); 75 | 76 | var is64CPU = Environment.Is64BitProcess; 77 | if (is64CPU) 78 | { 79 | if (string.IsNullOrWhiteSpace(appId) || string.IsNullOrWhiteSpace(sdkKey64)) 80 | { 81 | chooseMultiImgBtn.Enabled = false; 82 | matchBtn.Enabled = false; 83 | btnClearFaceList.Enabled = false; 84 | chooseImgBtn.Enabled = false; 85 | MessageBox.Show("请在App.config配置文件中先配置APP_ID和SDKKEY64!"); 86 | return; 87 | } 88 | } 89 | else 90 | { 91 | if (string.IsNullOrWhiteSpace(appId) || string.IsNullOrWhiteSpace(sdkKey32)) 92 | { 93 | chooseMultiImgBtn.Enabled = false; 94 | matchBtn.Enabled = false; 95 | btnClearFaceList.Enabled = false; 96 | chooseImgBtn.Enabled = false; 97 | MessageBox.Show("请在App.config配置文件中先配置APP_ID和SDKKEY32!"); 98 | return; 99 | } 100 | } 101 | 102 | //激活引擎 如出现错误,1.请先确认从官网下载的sdk库已放到对应的bin中,2.当前选择的CPU为x86或者x64 103 | int retCode = 0; 104 | 105 | try 106 | { 107 | retCode = ASFFunctions.ASFActivation(appId, is64CPU ? sdkKey64 : sdkKey32); 108 | } 109 | catch (Exception ex) 110 | { 111 | chooseMultiImgBtn.Enabled = false; 112 | matchBtn.Enabled = false; 113 | btnClearFaceList.Enabled = false; 114 | chooseImgBtn.Enabled = false; 115 | if (ex.Message.IndexOf("无法加载 DLL") > -1) 116 | { 117 | MessageBox.Show("请将sdk相关DLL放入bin对应的x86或x64下的文件夹中!"); 118 | } 119 | else 120 | { 121 | MessageBox.Show("激活引擎失败!"); 122 | } 123 | return; 124 | } 125 | Console.WriteLine("Activate Result:" + retCode); 126 | 127 | //初始化引擎 128 | uint detectMode = DetectionMode.ASF_DETECT_MODE_IMAGE; 129 | //检测脸部的角度优先值 130 | int detectFaceOrientPriority = ASF_OrientPriority.ASF_OP_0_HIGHER_EXT; 131 | //人脸在图片中所占比例,如果需要调整检测人脸尺寸请修改此值,有效数值为2-32 132 | int detectFaceScaleVal = 16; 133 | //最大需要检测的人脸个数 134 | int detectFaceMaxNum = 5; 135 | //引擎初始化时需要初始化的检测功能组合 136 | int combinedMask = FaceEngineMask.ASF_FACE_DETECT | FaceEngineMask.ASF_FACERECOGNITION | FaceEngineMask.ASF_AGE | FaceEngineMask.ASF_GENDER | FaceEngineMask.ASF_FACE3DANGLE; 137 | //初始化引擎,正常值为0,其他返回值请参考http://ai.arcsoft.com.cn/bbs/forum.php?mod=viewthread&tid=19&_dsign=dbad527e 138 | retCode = ASFFunctions.ASFInitEngine(detectMode, detectFaceOrientPriority, detectFaceScaleVal, detectFaceMaxNum, combinedMask, ref pImageEngine); 139 | Console.WriteLine("InitEngine Result:" + retCode); 140 | AppendText((retCode == 0) ? "引擎初始化成功!\n" : string.Format("引擎初始化失败!错误码为:{0}\n", retCode)); 141 | if (retCode != 0) 142 | { 143 | chooseMultiImgBtn.Enabled = false; 144 | matchBtn.Enabled = false; 145 | btnClearFaceList.Enabled = false; 146 | chooseImgBtn.Enabled = false; 147 | } 148 | 149 | 150 | //初始化视频模式下人脸检测引擎 151 | uint detectModeVideo = DetectionMode.ASF_DETECT_MODE_VIDEO; 152 | int combinedMaskVideo = FaceEngineMask.ASF_FACE_DETECT | FaceEngineMask.ASF_FACERECOGNITION; 153 | retCode = ASFFunctions.ASFInitEngine(detectModeVideo, detectFaceOrientPriority, detectFaceScaleVal, detectFaceMaxNum, combinedMaskVideo, ref pVideoEngine); 154 | 155 | //视频专用FR引擎 156 | detectFaceMaxNum = 1; 157 | combinedMask =FaceEngineMask.ASF_FACERECOGNITION | FaceEngineMask.ASF_FACE3DANGLE; 158 | retCode = ASFFunctions.ASFInitEngine(detectMode, detectFaceOrientPriority, detectFaceScaleVal, detectFaceMaxNum, combinedMask, ref pVideoImageEngine); 159 | Console.WriteLine("InitVideoEngine Result:" + retCode); 160 | 161 | 162 | initVideo(); 163 | } 164 | 165 | /// 166 | /// “选择识别图片”按钮事件 167 | /// 168 | private void ChooseImg(object sender, EventArgs e) 169 | { 170 | lblCompareInfo.Text = ""; 171 | if (pImageEngine == IntPtr.Zero) 172 | { 173 | chooseMultiImgBtn.Enabled = false; 174 | matchBtn.Enabled = false; 175 | btnClearFaceList.Enabled = false; 176 | chooseImgBtn.Enabled = false; 177 | MessageBox.Show("请先初始化引擎!"); 178 | return; 179 | } 180 | OpenFileDialog openFileDialog = new OpenFileDialog(); 181 | openFileDialog.Title = "选择图片"; 182 | openFileDialog.Filter = "图片文件|*.bmp;*.jpg;*.jpeg;*.png"; 183 | openFileDialog.Multiselect = false; 184 | openFileDialog.FileName = string.Empty; 185 | if (openFileDialog.ShowDialog() == DialogResult.OK) 186 | { 187 | DateTime detectStartTime = DateTime.Now; 188 | AppendText(string.Format("------------------------------开始检测,时间:{0}------------------------------\n", detectStartTime.ToString("yyyy-MM-dd HH:mm:ss:ms"))); 189 | image1Path = openFileDialog.FileName; 190 | 191 | //获取文件,拒绝过大的图片 192 | FileInfo fileInfo = new FileInfo(image1Path); 193 | long maxSize = 1024 * 1024 * 2; 194 | if (fileInfo.Length > maxSize) 195 | { 196 | MessageBox.Show("图像文件最大为2MB,请压缩后再导入!"); 197 | AppendText(string.Format("------------------------------检测结束,时间:{0}------------------------------\n", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss:ms"))); 198 | AppendText("\n"); 199 | return; 200 | } 201 | 202 | Image srcImage = Image.FromFile(image1Path); 203 | //调整图像宽度,需要宽度为4的倍数 204 | if (srcImage.Width % 4 != 0) 205 | { 206 | //srcImage = ImageUtil.ScaleImage(srcImage, picImageCompare.Width, picImageCompare.Height); 207 | srcImage = ImageUtil.ScaleImage(srcImage, srcImage.Width - (srcImage.Width % 4), srcImage.Height); 208 | } 209 | //调整图片数据,非常重要 210 | ImageInfo imageInfo = ImageUtil.ReadBMP(srcImage); 211 | //人脸检测 212 | ASF_MultiFaceInfo multiFaceInfo = FaceUtil.DetectFace(pImageEngine, imageInfo); 213 | //年龄检测 214 | int retCode_Age = -1; 215 | ASF_AgeInfo ageInfo = FaceUtil.AgeEstimation(pImageEngine, imageInfo, multiFaceInfo, out retCode_Age); 216 | //性别检测 217 | int retCode_Gender = -1; 218 | ASF_GenderInfo genderInfo = FaceUtil.GenderEstimation(pImageEngine, imageInfo, multiFaceInfo, out retCode_Gender); 219 | 220 | //3DAngle检测 221 | int retCode_3DAngle = -1; 222 | ASF_Face3DAngle face3DAngleInfo = FaceUtil.Face3DAngleDetection(pImageEngine, imageInfo, multiFaceInfo, out retCode_3DAngle); 223 | 224 | MemoryUtil.Free(imageInfo.imgData); 225 | 226 | if (multiFaceInfo.faceNum < 1) 227 | { 228 | srcImage = ImageUtil.ScaleImage(srcImage, picImageCompare.Width, picImageCompare.Height); 229 | image1Feature = IntPtr.Zero; 230 | picImageCompare.Image = srcImage; 231 | AppendText(string.Format("{0} - 未检测出人脸!\n\n", DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss"))); 232 | AppendText(string.Format("------------------------------检测结束,时间:{0}------------------------------\n", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss:ms"))); 233 | AppendText("\n"); 234 | return; 235 | } 236 | 237 | MRECT temp = new MRECT(); 238 | int ageTemp = 0; 239 | int genderTemp = 0; 240 | int rectTemp = 0; 241 | 242 | //标记出检测到的人脸 243 | for (int i = 0; i < multiFaceInfo.faceNum; i++) 244 | { 245 | MRECT rect = MemoryUtil.PtrToStructure(multiFaceInfo.faceRects + MemoryUtil.SizeOf() * i); 246 | int orient = MemoryUtil.PtrToStructure(multiFaceInfo.faceOrients + MemoryUtil.SizeOf() * i); 247 | int age = 0; 248 | 249 | if (retCode_Age != 0) 250 | { 251 | AppendText(string.Format("年龄检测失败,返回{0}!\n\n", retCode_Age)); 252 | } 253 | else 254 | { 255 | age = MemoryUtil.PtrToStructure(ageInfo.ageArray + MemoryUtil.SizeOf() * i); 256 | } 257 | 258 | int gender = -1; 259 | if (retCode_Gender != 0) 260 | { 261 | AppendText(string.Format("性别检测失败,返回{0}!\n\n", retCode_Gender)); 262 | } 263 | else 264 | { 265 | gender = MemoryUtil.PtrToStructure(genderInfo.genderArray + MemoryUtil.SizeOf() * i); 266 | } 267 | 268 | 269 | int face3DStatus = -1; 270 | float roll = 0f; 271 | float pitch = 0f; 272 | float yaw = 0f; 273 | if (retCode_3DAngle != 0) 274 | { 275 | AppendText(string.Format("3DAngle检测失败,返回{0}!\n\n", retCode_3DAngle)); 276 | } 277 | else 278 | { 279 | //角度状态 非0表示人脸不可信 280 | face3DStatus = MemoryUtil.PtrToStructure(face3DAngleInfo.status + MemoryUtil.SizeOf() * i); 281 | //roll为侧倾角,pitch为俯仰角,yaw为偏航角 282 | roll = MemoryUtil.PtrToStructure(face3DAngleInfo.roll + MemoryUtil.SizeOf() * i); 283 | pitch = MemoryUtil.PtrToStructure(face3DAngleInfo.pitch + MemoryUtil.SizeOf() * i); 284 | yaw = MemoryUtil.PtrToStructure(face3DAngleInfo.yaw + MemoryUtil.SizeOf() * i); 285 | } 286 | 287 | 288 | int rectWidth = rect.right - rect.left; 289 | int rectHeight = rect.bottom - rect.top; 290 | 291 | //查找最大人脸 292 | if (rectWidth * rectHeight > rectTemp) 293 | { 294 | rectTemp = rectWidth * rectHeight; 295 | temp = rect; 296 | ageTemp = age; 297 | genderTemp = gender; 298 | } 299 | 300 | //srcImage = ImageUtil.MarkRectAndString(srcImage, rect.left, rect.top, rect.right - rect.left, rect.bottom - rect.top, age, gender); 301 | AppendText(string.Format("{0} - 人脸坐标:[left:{1},top:{2},right:{3},bottom:{4},orient:{5},roll:{6},pitch:{7},yaw:{8},status:{11}] Age:{9} Gender:{10}\n", DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss"), rect.left, rect.top, rect.right, rect.bottom, orient, roll, pitch, yaw, age, (gender >= 0 ? gender.ToString() : ""), face3DStatus)); 302 | } 303 | 304 | 305 | AppendText(string.Format("{0} - 人脸数量:{1}\n\n", DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss"), multiFaceInfo.faceNum)); 306 | 307 | 308 | DateTime detectEndTime = DateTime.Now; 309 | AppendText(string.Format("------------------------------检测结束,时间:{0}------------------------------\n", detectEndTime.ToString("yyyy-MM-dd HH:mm:ss:ms"))); 310 | AppendText("\n"); 311 | ASF_SingleFaceInfo singleFaceInfo = new ASF_SingleFaceInfo(); 312 | //提取人脸特征 313 | image1Feature = FaceUtil.ExtractFeature(pImageEngine, srcImage, out singleFaceInfo); 314 | 315 | //清空上次的匹配结果 316 | for (int i = 0; i < imagesFeatureList.Count; i++) 317 | { 318 | imageList.Items[i].Text = string.Format("{0}号", i); 319 | } 320 | 321 | float scaleRate = ImageUtil.getWidthAndHeight(srcImage.Width, srcImage.Height, picImageCompare.Width, picImageCompare.Height); 322 | srcImage = ImageUtil.ScaleImage(srcImage, picImageCompare.Width, picImageCompare.Height); 323 | srcImage = ImageUtil.MarkRectAndString(srcImage, (int)(temp.left * scaleRate), (int)(temp.top * scaleRate), (int)(temp.right * scaleRate) - (int)(temp.left * scaleRate), (int)(temp.bottom * scaleRate) - (int)(temp.top * scaleRate), ageTemp, genderTemp, picImageCompare.Width); 324 | 325 | 326 | //显示标记后的图像 327 | picImageCompare.Image = srcImage; 328 | } 329 | } 330 | 331 | 332 | private object locker = new object(); 333 | /// 334 | /// 人脸库图片选择按钮事件 335 | /// 336 | private void ChooseMultiImg(object sender, EventArgs e) 337 | { 338 | lock (locker) 339 | { 340 | OpenFileDialog openFileDialog = new OpenFileDialog(); 341 | openFileDialog.Title = "选择图片"; 342 | openFileDialog.Filter = "图片文件|*.bmp;*.jpg;*.jpeg;*.png"; 343 | openFileDialog.Multiselect = true; 344 | openFileDialog.FileName = string.Empty; 345 | if (openFileDialog.ShowDialog() == DialogResult.OK) 346 | { 347 | 348 | List imagePathListTemp = new List(); 349 | var numStart = imagePathList.Count; 350 | int isGoodImage = 0; 351 | 352 | //保存图片路径并显示 353 | string[] fileNames = openFileDialog.FileNames; 354 | for (int i = 0; i < fileNames.Length; i++) 355 | { 356 | imagePathListTemp.Add(fileNames[i]); 357 | } 358 | 359 | 360 | 361 | //人脸检测以及提取人脸特征 362 | ThreadPool.QueueUserWorkItem(new WaitCallback(delegate 363 | { 364 | //禁止点击按钮 365 | Invoke(new Action(delegate 366 | { 367 | chooseMultiImgBtn.Enabled = false; 368 | matchBtn.Enabled = false; 369 | btnClearFaceList.Enabled = false; 370 | chooseImgBtn.Enabled = false; 371 | btnStartVideo.Enabled = false; 372 | })); 373 | 374 | //人脸检测和剪裁 375 | for (int i = 0; i < imagePathListTemp.Count; i++) 376 | { 377 | Image image = Image.FromFile(imagePathListTemp[i]); 378 | if (image.Width % 4 != 0) 379 | { 380 | image = ImageUtil.ScaleImage(image, image.Width - (image.Width % 4), image.Height); 381 | } 382 | ASF_MultiFaceInfo multiFaceInfo = FaceUtil.DetectFace(pImageEngine, image); 383 | 384 | if (multiFaceInfo.faceNum > 0) 385 | { 386 | imagePathList.Add(imagePathListTemp[i]); 387 | MRECT rect = MemoryUtil.PtrToStructure(multiFaceInfo.faceRects); 388 | image = ImageUtil.CutImage(image, rect.left, rect.top, rect.right, rect.bottom); 389 | } 390 | else 391 | { 392 | continue; 393 | } 394 | 395 | this.Invoke(new Action(delegate 396 | { 397 | if (image == null) 398 | { 399 | image = Image.FromFile(imagePathListTemp[i]); 400 | } 401 | imageLists.Images.Add(imagePathListTemp[i], image); 402 | imageList.Items.Add((numStart + isGoodImage) + "号", imagePathListTemp[i]); 403 | isGoodImage += 1; 404 | image = null; 405 | })); 406 | } 407 | 408 | 409 | //提取人脸特征 410 | for (int i = numStart; i < imagePathList.Count; i++) 411 | { 412 | ASF_SingleFaceInfo singleFaceInfo = new ASF_SingleFaceInfo(); 413 | IntPtr feature = FaceUtil.ExtractFeature(pImageEngine, Image.FromFile(imagePathList[i]), out singleFaceInfo); 414 | this.Invoke(new Action(delegate 415 | { 416 | if (singleFaceInfo.faceRect.left == 0 && singleFaceInfo.faceRect.right == 0) 417 | { 418 | AppendText(string.Format("{0}号未检测到人脸\r\n", i)); 419 | } 420 | else 421 | { 422 | AppendText(string.Format("已提取{0}号人脸特征值,[left:{1},right:{2},top:{3},bottom:{4},orient:{5}]\r\n", i, singleFaceInfo.faceRect.left, singleFaceInfo.faceRect.right, singleFaceInfo.faceRect.top, singleFaceInfo.faceRect.bottom, singleFaceInfo.faceOrient)); 423 | imagesFeatureList.Add(feature); 424 | } 425 | })); 426 | } 427 | //允许点击按钮 428 | Invoke(new Action(delegate 429 | { 430 | chooseMultiImgBtn.Enabled = true; 431 | btnClearFaceList.Enabled = true; 432 | btnStartVideo.Enabled = true; 433 | 434 | if (btnStartVideo.Text == "启用摄像头") 435 | { 436 | chooseImgBtn.Enabled = true; 437 | matchBtn.Enabled = true; 438 | } 439 | else 440 | { 441 | chooseImgBtn.Enabled = false; 442 | matchBtn.Enabled = false; 443 | } 444 | })); 445 | })); 446 | 447 | } 448 | } 449 | } 450 | 451 | /// 452 | /// 窗体关闭事件 453 | /// 454 | private void Form_Closed(object sender, FormClosedEventArgs e) 455 | { 456 | //销毁引擎 457 | int retCode = ASFFunctions.ASFUninitEngine(pImageEngine); 458 | Console.WriteLine("UninitEngine pImageEngine Result:" + retCode); 459 | //销毁引擎 460 | retCode = ASFFunctions.ASFUninitEngine(pVideoEngine); 461 | Console.WriteLine("UninitEngine pVideoEngine Result:" + retCode); 462 | 463 | if (videoSource.IsRunning) 464 | { 465 | videoSource.SignalToStop(); //关闭摄像头 466 | } 467 | } 468 | 469 | /// 470 | /// 追加公用方法 471 | /// 472 | /// 473 | private void AppendText(string message) 474 | { 475 | logBox.AppendText(message); 476 | } 477 | 478 | /// 479 | /// 匹配事件 480 | /// 481 | /// 482 | /// 483 | private void matchBtn_Click(object sender, EventArgs e) 484 | { 485 | if (imagesFeatureList.Count == 0) 486 | { 487 | MessageBox.Show("请注册人脸!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Error); 488 | return; 489 | } 490 | 491 | if (image1Feature == IntPtr.Zero) 492 | { 493 | if (picImageCompare.Image == null) 494 | { 495 | MessageBox.Show("请选择识别图!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Error); 496 | } 497 | else 498 | { 499 | MessageBox.Show("比对失败,识别图未提取到特征值!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Error); 500 | } 501 | return; 502 | } 503 | //标记已经做了匹配比对,在开启视频的时候要清除比对结果 504 | isCompare = true; 505 | float compareSimilarity = 0f; 506 | int compareNum = 0; 507 | AppendText(string.Format("------------------------------开始比对,时间:{0}------------------------------\r\n", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss:ms"))); 508 | for (int i = 0; i < imagesFeatureList.Count; i++) 509 | { 510 | IntPtr feature = imagesFeatureList[i]; 511 | float similarity = 0f; 512 | int ret = ASFFunctions.ASFFaceFeatureCompare(pImageEngine, image1Feature, feature, ref similarity); 513 | //增加异常值处理 514 | if(similarity.ToString().IndexOf("E") > -1) 515 | { 516 | similarity = 0f; 517 | } 518 | AppendText(string.Format("与{0}号比对结果:{1}\r\n", i, similarity)); 519 | imageList.Items[i].Text = string.Format("{0}号({1})", i, similarity); 520 | if (similarity > compareSimilarity) 521 | { 522 | compareSimilarity = similarity; 523 | compareNum = i; 524 | } 525 | } 526 | if (compareSimilarity > 0) 527 | { 528 | lblCompareInfo.Text = " " + compareNum + "号," + compareSimilarity; 529 | } 530 | AppendText(string.Format("------------------------------比对结束,时间:{0}------------------------------\r\n", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss:ms"))); 531 | } 532 | 533 | /// 534 | /// 清除人脸库事件 535 | /// 536 | /// 537 | /// 538 | private void btnClearFaceList_Click(object sender, EventArgs e) 539 | { 540 | //清除数据 541 | imageLists.Images.Clear(); 542 | imageList.Items.Clear(); 543 | imagesFeatureList.Clear(); 544 | imagePathList.Clear(); 545 | } 546 | 547 | #region 视频检测相关 548 | 549 | /// 550 | /// 摄像头初始化 551 | /// 552 | private void initVideo() 553 | { 554 | filterInfoCollection = new FilterInfoCollection(FilterCategory.VideoInputDevice); 555 | 556 | if (filterInfoCollection.Count == 0) 557 | { 558 | btnStartVideo.Enabled = false; 559 | } 560 | else 561 | { 562 | btnStartVideo.Enabled = true; 563 | } 564 | } 565 | 566 | /// 567 | /// 摄像头按钮点击事件 568 | /// 569 | /// 570 | /// 571 | private void btnStartVideo_Click(object sender, EventArgs e) 572 | { 573 | //必须保证有可用摄像头 574 | if (filterInfoCollection.Count == 0) 575 | { 576 | MessageBox.Show("未检测到摄像头,请确保已安装摄像头或驱动!"); 577 | } 578 | if (videoSource.IsRunning) 579 | { 580 | btnStartVideo.Text = "启用摄像头"; 581 | videoSource.SignalToStop(); //关闭摄像头 582 | chooseImgBtn.Enabled = true; 583 | matchBtn.Enabled = true; 584 | txtThreshold.Enabled = false; 585 | videoSource.Hide(); 586 | } 587 | else 588 | { 589 | if (isCompare) 590 | { 591 | //比对结果清除 592 | for (int i = 0; i < imagesFeatureList.Count; i++) 593 | { 594 | imageList.Items[i].Text = string.Format("{0}号", i); 595 | } 596 | lblCompareInfo.Text = ""; 597 | isCompare = false; 598 | } 599 | 600 | txtThreshold.Enabled = true; 601 | videoSource.Show(); 602 | chooseImgBtn.Enabled = false; 603 | matchBtn.Enabled = false; 604 | btnStartVideo.Text = "关闭摄像头"; 605 | deviceVideo = new VideoCaptureDevice(filterInfoCollection[0].MonikerString); 606 | deviceVideo.VideoResolution = deviceVideo.VideoCapabilities[0]; 607 | videoSource.VideoSource = deviceVideo; 608 | videoSource.Start(); 609 | } 610 | } 611 | 612 | private FaceTrackUnit trackUnit = new FaceTrackUnit(); 613 | private Font font = new Font(FontFamily.GenericSerif, 10f); 614 | private SolidBrush brush = new SolidBrush(Color.Red); 615 | private Pen pen = new Pen(Color.Red); 616 | private bool isLock = false; 617 | 618 | /// 619 | /// 图像显示到窗体上,得到每一帧图像,并进行处理 620 | /// 621 | /// 622 | /// 623 | private void videoSource_Paint(object sender, PaintEventArgs e) 624 | { 625 | if (videoSource.IsRunning) 626 | { 627 | //得到当前摄像头下的图片 628 | Bitmap bitmap = videoSource.GetCurrentVideoFrame(); 629 | if (bitmap == null) 630 | { 631 | return; 632 | } 633 | Graphics g = e.Graphics; 634 | float offsetX = videoSource.Width * 1f / bitmap.Width; 635 | float offsetY = videoSource.Height * 1f / bitmap.Height; 636 | //检测人脸,得到Rect框 637 | ASF_MultiFaceInfo multiFaceInfo = FaceUtil.DetectFace(pVideoEngine, bitmap); 638 | //得到最大人脸 639 | ASF_SingleFaceInfo maxFace = FaceUtil.GetMaxFace(multiFaceInfo); 640 | //得到Rect 641 | MRECT rect = maxFace.faceRect; 642 | float x = rect.left * offsetX; 643 | float width = rect.right * offsetX - x; 644 | float y = rect.top * offsetY; 645 | float height = rect.bottom * offsetY - y; 646 | //根据Rect进行画框 647 | g.DrawRectangle(pen, x, y, width, height); 648 | if (trackUnit.message != "" && x > 0 && y > 0) 649 | { 650 | //将上一帧检测结果显示到页面上 651 | g.DrawString(trackUnit.message, font, brush, x, y + 5); 652 | } 653 | //保证只检测一帧,防止页面卡顿以及出现其他内存被占用情况 654 | if (isLock == false) 655 | { 656 | isLock = true; 657 | //异步处理提取特征值和比对,不然页面会比较卡 658 | ThreadPool.QueueUserWorkItem(new WaitCallback(delegate 659 | { 660 | if (rect.left != 0 && rect.right != 0 && rect.top != 0 && rect.bottom != 0) 661 | { 662 | try 663 | { 664 | //提取人脸特征 665 | IntPtr feature = FaceUtil.ExtractFeature(pVideoImageEngine, bitmap, maxFace); 666 | float similarity = 0f; 667 | //得到比对结果 668 | int result = compareFeature(feature, out similarity); 669 | if (result > -1) 670 | { 671 | //将比对结果放到显示消息中,用于最新显示 672 | trackUnit.message = string.Format(" {0}号 {1}", result, similarity); 673 | } 674 | else 675 | { 676 | //重置显示消息 677 | trackUnit.message = ""; 678 | } 679 | } 680 | catch (Exception ex) 681 | { 682 | Console.WriteLine(ex.Message); 683 | } 684 | finally 685 | { 686 | isLock = false; 687 | } 688 | } 689 | isLock = false; 690 | })); 691 | } 692 | } 693 | } 694 | 695 | 696 | 697 | 698 | /// 699 | /// 得到feature比较结果 700 | /// 701 | /// 702 | /// 703 | private int compareFeature(IntPtr feature, out float similarity) 704 | { 705 | int result = -1; 706 | similarity = 0f; 707 | //如果人脸库不为空,则进行人脸匹配 708 | if (imagesFeatureList != null && imagesFeatureList.Count > 0) 709 | { 710 | for (int i = 0; i < imagesFeatureList.Count; i++) 711 | { 712 | //调用人脸匹配方法,进行匹配 713 | ASFFunctions.ASFFaceFeatureCompare(pVideoImageEngine, feature, imagesFeatureList[i], ref similarity); 714 | if (similarity >= threshold) 715 | { 716 | result = i; 717 | break; 718 | } 719 | } 720 | } 721 | return result; 722 | } 723 | 724 | /// 725 | /// 阈值文本框键按下事件,检测输入内容是否正确,不正确不能输入 726 | /// 727 | /// 728 | /// 729 | private void txtThreshold_KeyPress(object sender, KeyPressEventArgs e) 730 | { 731 | //阻止从键盘输入键 732 | e.Handled = true; 733 | //是数值键,回退键,.能输入,其他不能输入 734 | if (char.IsDigit(e.KeyChar) || e.KeyChar == 8 || e.KeyChar == '.') 735 | { 736 | //渠道当前文本框的内容 737 | string thresholdStr = txtThreshold.Text.Trim(); 738 | int countStr = 0; 739 | int startIndex = 0; 740 | //如果当前输入的内容是否是“.” 741 | if (e.KeyChar == '.') 742 | { 743 | countStr = 1; 744 | } 745 | //检测当前内容是否含有.的个数 746 | if (thresholdStr.IndexOf('.', startIndex) > -1) 747 | { 748 | countStr += 1; 749 | } 750 | //如果输入的内容已经超过12个字符, 751 | if (e.KeyChar != 8 && (thresholdStr.Length > 12 || countStr > 1)) 752 | { 753 | return; 754 | } 755 | e.Handled = false; 756 | } 757 | } 758 | 759 | /// 760 | /// 阈值文本框键抬起事件,检测阈值是否正确,不正确改为0.8f 761 | /// 762 | /// 763 | /// 764 | private void txtThreshold_KeyUp(object sender, KeyEventArgs e) 765 | { 766 | //如果输入的内容不正确改为默认值 767 | if (!float.TryParse(txtThreshold.Text.Trim(), out threshold)) 768 | { 769 | threshold = 0.8f; 770 | } 771 | } 772 | 773 | #endregion 774 | } 775 | } 776 | -------------------------------------------------------------------------------- /ArcSoftFace/ArcSoftFace/FaceForm.resx: -------------------------------------------------------------------------------- 1 | 2 | 3 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | text/microsoft-resx 110 | 111 | 112 | 2.0 113 | 114 | 115 | System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 116 | 117 | 118 | System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 119 | 120 | 121 | 17, 17 122 | 123 | 124 | 125 | AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w 126 | LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACZTeXN0 127 | ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAABo 128 | sgAAAk1TRnQBSQFMAwEBAAFoAQABaAEAAVABAAFQAQAE/wEhAQAI/wFCAU0BNgcAATYDAAEoAwABQAEB 129 | AgABUAMAAQEBAAEgBgABkAEBEQABIAEbARcB/wEdARcBEgH/ARkBEQEMAf8BFwEQAQsB/wEhARsBEwH/ 130 | ARUBEgENAf8BDgEMAQkB/wEXARUBEQH/AQEBAgEAAf8BFwEWARIB/wEVARMBDQH/AhMBDQH/ARQBEgEM 131 | Af8BDQEOAQYB/wETARUBDQH/ARgBFgEQAf8BFAESARAB/wEBAQIBAQH/AgUBAgH/ARABDQEHAf8BGAEV 132 | AQ8B/wEXARUBDwH/ASQBGAFjAf8BiAFtAcsB/wE5ASUBtgH/AWIBTwHDAf8BIwEdAV0B/wEMAQ0BCgH/ 133 | AQYBBAECAf8BCAEFAQQB/wETAQ8BDgH/AREBDgEMAf8BCQEHAQYB/wEKAgYB/wENAQkBBwH/AQ0BCwEI 134 | Af8BCwEKAQcB/wENAQ8BCwH/AQkBCwEIAf8BAwEFAQMB/wMAAf8BAAEBAQAB/wEXARMBDgH/ARgBFgEO 135 | Af8BFgETAQ4B/wMAAf8DAAH/AQkBAQE/Af8BDwEHAWQB/wEbAREBkQH/ASEBGQGQAf8CAAESAf8DAAH/ 136 | AQUBBwEDAf8BAAECAQAB/wECAQQBAQH/AQQBBgEEAf8BAwIEAf8BBAEFAQMB/wEFAQcBAgH/AQEBAgEA 137 | Af8BCQEIAQUB/wEKAQgBBQH/AQoBCAEGAf8BCwEHAQUB/wELAQoBBQH/AgsBBwH/AQoBDAEFAf8BDAEO 138 | AQUB/wEMAQ8BBgH/AQgBCgECAf8BDgENAQYB/wEPAQ4BCAH/AQoBCwEGAf8BDwEQAQ4B/wIQAQ8B/wES 139 | ARABDwH/ARIBEAEPAf8BEwEQAQ4B/wETARABDwH//wD/AP8AwwABHgEaARUB/wEbARcBEgH/ARoBEwEN 140 | Af8BGgETAQ4B/wEdARoBEQH/ARYBFAEOAf8BEwEQAQoB/wEVARMBEAH/AQMBBAEAAf8BGQEYAREB/wEW 141 | ARMBDgH/ARYBEwEOAf8BFgETAQ4B/wEOAQ0BBwH/AhEBCwH/ARsBGAETAf8BFwEUAREB/wEBAgAB/wIJ 142 | AQYB/wILAQUB/wEWARQBDgH/ARUBEwESAf8BLgEhAZwB/wE8AS0BqwH/AYYBbwHJAf8BUgFIAb8B/wEU 143 | AREBKAH/AQUBBgEDAf8BBQEEAQEB/wEMAQoBBwH/ARIBEAENAf8BDgEMAQoB/wEIAQcBBgH/AQwBCQEI 144 | Af8BDgEMAQkB/wILAQgB/wEMAQ4BCgH/AQkBCwEGAf8BCAEJAQcB/wECAQMBAQH/AwAB/wMAAf8BCgEI 145 | AQYB/wEVARIBDwH/ARkBFQETAf8BBQEEAQMB/wMAAf8CAAEUAf8BCwEEAVkB/wEQAQgBbQH/ARkBDQGP 146 | Af8BFgEPAWIB/wMAAf8CAgEAAf8BAAECAQAB/wEAAQIBAAH/AQQBBgEDAf8BAwEFAQMB/wEDAQQBAgH/ 147 | AQQBBQEBAf8BAAEBAQAB/wEJAQgBBQH/AQgBBgEEAf8BCQEHAQQB/wELAQkBBQH/AQsBCQEFAf8BCwEK 148 | AQYB/wEMAQsBBwH/AgoBBgH/AQsBDQEHAf8BBwEKAQEB/wENAQ4BBQH/ARABEQEIAf8CDAEJAf8BDQEO 149 | AQwB/wEPARABDgH/AREBDwEOAf8BEgEPAQ4B/wEVARIBDwH/ARMBEgEPAf//AP8A/wDDAAEeARoBFQH/ 150 | ARwBGAETAf8BGQEVARAB/wEZARMBEAH/AR4BGwEVAf8BFgETAQ0B/wEWARUBDQH/AhEBDQH/AQsBDAEK 151 | Af8BGgEWARMB/wEYARUBEAH/ARoBFwERAf8BGQEWARAB/wENAQoBBQH/ARUBEQENAf8BIQEcARkB/wEa 152 | ARcBEwH/AwAB/wEPAQ0BCgH/AQwBCAEFAf8BFQETAQ8B/wEYARIBOwH/AYoBgAHMAf8BvAGxAecB/wFW 153 | AU8BvwH/ASgBIwGPAf8CCQELAf8DAAH/AQcBBQEEAf8BDwELAQoB/wETAQ8BDgH/AQoBBwEGAf8BBAEC 154 | AQEB/wEOAQsBCgH/AQsBCgEGAf8BBgEIAQMB/wEGAQkBBAH/AQoBDAEIAf8BCgENAQsB/wEHAQkBCAH/ 155 | AwAB/wMAAf8DAAH/ARABDQEKAf8BFAERAQsB/wEXARUBEgH/AwAB/wMAAf8BBQEAATUB/wERAQcBZwH/ 156 | ARcBCwGCAf8BFQEMAYgB/wEGAQEBJQH/AwAB/wEBAQIBAAH/AwAB/wIBAQAB/wIDAQAB/wIDAQAB/wEB 157 | AQIBAAH/AQABAgEAAf8BCAEHAQUB/wEFAQQBAgH/AQYBBQECAf8CCAEEAf8BCgEJAQYB/wEMAQoBCAH/ 158 | AQwBCgEIAf8BCgEJAQcB/wEJAQoBBwH/AQgBCQEFAf8BCwENAQUB/wEOARABCAH/AQoBCwEIAf8BDQEO 159 | AQwB/wEOAQ8BDQH/AREBDwENAf8BEwEPAQ4B/wEUARABDwH/ARMBEQEQAf//AP8A/wDDAAEgARwBFwH/ 160 | AR8BGwEWAf8BHQEZARQB/wEaARYBEQH/ASABHAEXAf8BFwEUAQ4B/wEZARcBEQH/AQkBCgEGAf8BFwEV 161 | ARMB/wEZARcBEAH/ARgBFQEPAf8BGgEYAREB/wEYARUBDwH/AQwBCQEDAf8BGAEVAQ8B/wEmASIBHQH/ 162 | ARwBGAETAf8DAAH/AREBDwEKAf8BDwEMAQcB/wEMAQkBCAH/ASABGAFqAf8BLAEhAZ8B/wEhARsBmgH/ 163 | ASMBHAGhAf8BFwEVAUcB/wEBAQIBAAH/AwAB/wEGAQUBAwH/AQ8BDQELAf8BCgEIAQYB/wEJAQgBBgH/ 164 | AREBDwEOAf8BDAELAQoB/wEGAQUBBAH/ASUBJgEqAf8BWAFlAZAB/wFvAYsBsAH/AW8BjwG2Af8BZwGF 165 | AagB/wFBAUgBXAH/AQEBAwECAf8DAAH/AwAB/wEOAQ0BCgH/ARABDwELAf8CEQEOAf8DAAH/AgABBQH/ 166 | AQoBAwFQAf8BFgEKAXAB/wEVAQoBhQH/ARMBCAFfAf8DAAH/AQABAQEAAf8DAAH/AQECAAH/AQMBAgEA 167 | Af8BAwECAQAB/wEBAgAB/wMAAf8CBwEFAf8BAwEEAQEB/wEFAQYBAgH/AQgBBwEDAf8BCgEIAQYB/wIK 168 | AQYB/wELAQkBBQH/AQsBCQEGAf8BDQELAQkB/wEKAQkBBwH/AQwBCwEJAf8BEQEPAQ0B/wIKAQgB/wIP 169 | AQ0B/wEQAREBDgH/AhABCwH/ARYBFAEOAf8BFQEUAQ8B/wEUARIBDgH//wD/AP8AwwABIwEfARoB/wEi 170 | AR4BGQH/AR8BGwEWAf8BHQEZARUB/wEkASABGwH/AR4BGQEVAf8BGAEVAQ8B/wEMAQoBBAH/ARkBFgES 171 | Af8BFwEUAQ0B/wEYARQBEAH/AR4BGgEVAf8BFwETAQ8B/wEOAQoBBgH/ARYBEgENAf8BJwEjAR4B/wEf 172 | ARsBFgH/AwAB/wEQAQ8BCwH/AQ8BDQEJAf8CAAEGAf8BDQEHAVcB/wEMAQMBYgH/ARQBDgGBAf8BFgEO 173 | AW8B/wEBAQIBDwH/AwAB/wEAAQIBAAH/AQIBBAECAf8BYAFmAWMB/wIbARkB/wIQAQ4B/wEIAQkBBgH/ 174 | AQYBBwEFAf8BKwEvAToB/wGJAZ8BygH/AZsBsgHkAf8BnAGzAecB/wGUAa4B4QH/AY8BqAHZAf8BgQGZ 175 | AcoB/wFcAW0BlwH/ARIBFQEXAf8DAAH/AgUBAwH/AQsBDAEKAf8BDwEQAQ0B/wEMAQkBCAH/AwAB/wIA 176 | ASQB/wEJAQABVQH/ARcBCgGCAf8BLQEfAYoB/wIAAR0B/wMAAf8DAAH/AwAB/wMAAf8BAQIAAf8DAAH/ 177 | AwAB/wIGAQQB/wECAQMBAQH/AgQBAgH/AQcBBgEDAf8BCAEHAQMB/wEIAQkBBQH/AggBBAH/AQoBCAEG 178 | Af8BDgEMAQsB/wEKAQgBBwH/AQsBCgEIAf8BEgERAQ8B/wELAQkBBwH/AREBDwEOAf8BEwESARAB/wIS 179 | AQ0B/wEVARMBDgH/ARkBFwEPAf8BGAEWAQ4B//8A/wD/AMMAASEBHQEYAf8BJAEfARoB/wEfARoBFgH/ 180 | AR8BGwEYAf8BIgEfARgB/wEgARsBFQH/ARYBFAENAf8BEwERAQsB/wEaARcBEgH/ARYBEgENAf8BGwEX 181 | ARIB/wEeARoBFgH/ARUBEQEMAf8BEwEPAQoB/wEXARMBDgH/ASsBJAEhAf8BIwEeARoB/wMAAf8CCQEH 182 | Af8DAAH/AgABEgH/AgABOAH/AQEBAAFLAf8BBQEAAU8B/wEHAQABOQH/AwAB/wMAAf8DAAH/ASoBLwEu 183 | Af8CRgFDAf8BFAEVAREB/wMAAf8BAwEEAQAB/wEiASgBMQH/AYsBoQHJAf8BnAG0AegB/wGcAbYB5wH/ 184 | AZkBswHnAf8BlgGwAeQB/wGNAagB3AH/AYYBngHSAf8BbAGQAcAB/wFdAXEBnwH/ARABFQEZAf8DAAH/ 185 | AgQBAwH/AQwBCwEKAf8BFwEVARQB/wEGAQUBBAH/AgABAQH/AQEBAAE7Af8BDgELAVcB/wGQAYkBrAH/ 186 | AQ4BBgE6Af8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AgYBAwH/AQIBAwEBAf8DAwH/AQUBBAED 187 | Af8BCAEGAQMB/wEFAQcBBQH/AgcBBQH/AQoBCQEHAf8BCwEJAQgB/wENAQsBCgH/AgsBCQH/ARABEQEP 188 | Af8BDQEMAQsB/wERAQ8BDgH/ARYBFAESAf8BFQETAREB/wEVARMBEQH/ARUBFAEPAf8BGwEYARIB//8A 189 | /wD/AMMAASkBHwEbAf8BKgEhAR0B/wElAR4BGAH/ASIBHQEZAf8BIwEhARkB/wEfARsBFgH/ARABDAEI 190 | Af8BGAEVARAB/wEdARgBEwH/AR0BFgERAf8BIgEbARYB/wEeARoBFQH/ARYBEgENAf8BFgESAQ0B/wEZ 191 | ARMBDgH/AS4BJQEfAf8BJAEfARoB/wMAAf8BGAEWARMB/wMAAf8CAAEEAf8CAAEYAf8CAAEoAf8CAAEq 192 | Af8CAAEIAf8DAAH/AwAB/wMAAf8BHwEdARkB/wEtASoBJQH/AhoBFwH/AgIBAAH/ARwBIQEjAf8BhAGc 193 | AcEB/wGTAbEB3wH/AZQBrgHfAf8BlAGuAd8B/wGTAa8B4gH/AZIBrQHjAf8BjwGqAd4B/wGFAaAB0wH/ 194 | AW0BlAHEAf8BXQGDAa8B/wFGAVsBhgH/AQIBCAELAf8DAAH/AgMBAQH/AhABDwH/AgkBCAH/AwAB/wIA 195 | ARkB/wErASYBUwH/ATUBLgFdAf8BJAEcAU8B/wIAAQIB/wMAAf8DAAH/AwAB/wECAQEBAAH/AwAB/wMA 196 | Af8BBwEIAQQB/wEBAQIBAAH/AgIBAQH/AQQBBQECAf8BBQEGAQIB/wEHAQgBBAH/AQoBCAEEAf8BCwEJ 197 | AQYB/wEKAQkBBgH/AQ0BCwEJAf8BCgELAQkB/wEQAREBDwH/AREBEAEOAf8BDwENAQsB/wEXARUBEwH/ 198 | ARcBFQEUAf8BFwEWARIB/wEXARgBEgH/AhkBEwH//wD/AP8AwwABLgEjAR4B/wErASIBHQH/ASoBIgEb 199 | Af8BJAEdARcB/wEpASQBHwH/AR8BGwEXAf8BEQENAQkB/wEdARkBFAH/ASIBGgEWAf8BJQEbARYB/wEl 200 | AR0BGAH/ARwBFwETAf8BGwEXARMB/wEXARMBDgH/ARoBFAEPAf8BMAElAR4B/wEmASABGgH/AwAB/wEn 201 | ASABHAH/ATIBKgEkAf8BIwEeAR0B/wEXARMBGQH/ARQBEAEaAf8BDwEMARcB/wEKAQgBBwH/AQgBBgED 202 | Af8BBgEEAQEB/wEHAQYBAgH/ASMBIQEaAf8BJwEkASAB/wEBAgAB/wEhASQBKwH/AYUBnQHEAf8BkgGx 203 | Ad8B/wGPAawB2gH/AYkBpgHVAf8BgwGgAc8B/wGEAaAB0AH/AYcBogHTAf8BgwGfAdEB/wFyAZoBzAH/ 204 | AW0BlgHFAf8BZAGJAbcB/wFVAWoBogH/AUEBUgFuAf8BCAENARIB/wMAAf8BBwEJAQcB/wEIAQkBBwH/ 205 | AQABAQEAAf8CAAEEAf8BFgEVASkB/wELAQoBLAH/ARkBFAE5Af8CAgEOAf8DAAH/AwAB/wEJAgcB/wEL 206 | AQkBCAH/AwAB/wMAAf8BBgEHAQUB/wEAAQEBAAH/AQIBAwEBAf8BAwEFAQIB/wEDAQcBAwH/AQUBCQEE 207 | Af8BCAEKAQQB/wEMAQsBBwH/AQwBCgEIAf8BCwEKAQgB/wINAQwB/wERARIBEAH/ARkBGAEWAf8BCQEH 208 | AQUB/wEYARcBFQH/ARoBGAEVAf8CGAERAf8BFgEYARAB/wIcARQB//8A/wD/AMMAATMBJwEjAf8BLgEm 209 | AR0B/wEtASYBHAH/ASYBHgEXAf8BLgElASAB/wEgARwBFwH/ARcBEwEOAf8BHwEZARQB/wEoAR8BGwH/ 210 | ASgBHgEaAf8BIwEcARYB/wEeARkBFQH/AR0BGQEVAf8BFgETAQ4B/wEcARYBEQH/AS8BJgEfAf8BKAEi 211 | ARwB/wMAAf8BIwEcARgB/wE0ASsBJwH/AS8BKAEjAf8BLQEoASMB/wExASkBIwH/ASsBJwEhAf8BJwEk 212 | AR8B/wEjAR8BGwH/AScBIwEfAf8BIQEdARgB/wEjAR8BGwH/ARYBFAETAf8BHgElASwB/wGLAaUByQH/ 213 | AZUBsQHhAf8BjQGqAdYB/wGGAaIB0AH/AXIBnQHMAf8BbgGaAcgB/wFnAZQBwgH/AWMBkAG+Af8BZgGR 214 | Ab4B/wFnAZABwAH/AWcBkQHBAf8BYAGIAbYB/wFWAW0BqAH/AUkBYQGYAf8BOwFSAXAB/wEQARcBIQH/ 215 | AQcBCQEIAf8BBQEHAQYB/wEAAQIBAAH/AQMBBwEDAf8BBwEJAQcB/wELAQwBDwH/AQsBDQERAf8BDQEQ 216 | AQ8B/wEPAREBDwH/AQ8BDgEMAf8BDwEOAQsB/wEMAQoBCAH/AQMBBAEBAf8DAAH/AQMBBgECAf8BAAEB 217 | AQAB/wEBAQQBAAH/AQEBBQEBAf8BAQEFAQEB/wEGAQgBBAH/AQkBCgEFAf8BCQEMAQcB/wEIAQsBBgH/ 218 | AQoBDAEIAf8BEwERAQ4B/wEXARQBEgH/ARwBGgEXAf8CCgEEAf8CEgELAf8BHAEaARgB/wEcAR0BFgH/ 219 | AhoBFAH/AR4BHAEXAf//AP8A/wDDAAE0ASkBIgH/ATEBKAEfAf8BLAElARwB/wEsASMBGwH/ATUBKgEk 220 | Af8BJAEbARcB/wEjARoBFAH/AScBHgEZAf8BKQEgARwB/wEqASEBHAH/ASMBGwEWAf8BIQEcARgB/wEe 221 | ARoBFQH/ARYBEQENAf8BGgEUAQ8B/wEtASUBHwH/ASYBIQEbAf8DAAH/ARwBFgETAf8BMgEpASMB/wEv 222 | AScBIwH/ASkBJAEhAf8BKAEjAR8B/wEnASIBHQH/ASYBIgEeAf8BIwEfARoB/wEjAR8BGgH/ARwBGQEU 223 | Af8BJQEkASIB/wEXAR0BKAH/AYEBnAHEAf8BkQGsAdsB/wGQAasB2wH/AYkBpQHTAf8BgwGfAc4B/wFy 224 | AZwBywH/AWoBlQHEAf8BZgGRAb4B/wFfAYsBtwH/AVsBhgG1Af8BWwGGAbQB/wFZAYUBsgH/AVgBgwGw 225 | Af8BVgFwAasB/wFSAWkBpQH/AUUBXwGUAf8BOgFQAXIB/wEhAS4BPgH/ARkBHAEdAf8DAAH/AQIBBAED 226 | Af8BBwEIAQYB/wEGAQcBBAH/AQcBCQEGAf8BCgEMAQkB/wELAQ0BCwH/Ag8BDAH/ARABDwENAf8CDQEL 227 | Af8BCAEKAQcB/wMAAf8BAQEFAQAB/wEAAQIBAAH/AQABAQEAAf8BAQEFAQAB/wECAQYBAAH/AgkBBwH/ 228 | AQwBDQEKAf8BCQELAQYB/wEJAQwBBgH/ARABEgENAf8CEQENAf8BFQEUARIB/wIbARUB/wIVAQ0B/wIP 229 | AQkB/wEaARkBFwH/AiABGgH/ARwBHQEZAf8BIAEhAR4B//8A/wD/AMMAATcBLQEkAf8BNAEqASIB/wEs 230 | ASQBGwH/ATYBLQEkAf8BNAEqASIB/wEoAR4BGAH/ASgBHwEYAf8BJAEfARoB/wEoASQBIAH/ASsBJQEh 231 | Af8BKwEiAR4B/wEmAR8BGgH/ARwBGAEUAf8BGAEUARAB/wEZARUBEQH/AS4BJAEgAf8BJgEfARsB/wIC 232 | AQAB/wELAQoBBgH/ATABKAEgAf8BLgEnASIB/wEoASQBIAH/ASgBJAEfAf8BJwEjAR4B/wElASEBHAH/ 233 | ASMBHwEaAf8BIAEcARYB/wEZARgBFAH/ATgBQgFKAf8BTAFgAY4B/wGDAaQB0gH/AYUBpQHTAf8BhwGo 234 | AdYB/wGKAagB1wH/AYgBpQHSAf8BcgGdAcsB/wFqAZQBwwH/AWUBkAG+Af8BYAGMAbkB/wFcAYYBtAH/ 235 | AVYBggGvAf8BVQGBAa4B/wFWAYIBrwH/AVUBgAGtAf8BVgFuAagB/wFLAWgBoAH/AUUBXgGUAf8BOAFR 236 | AYEB/wFHAVcBZwH/ARoBIgEgAf8BAQEDAQEB/wEEAQYBBAH/AQUBBgEEAf8BBwEIAQYB/wEKAQsBCQH/ 237 | AQsBDAEKAf8BDgEQAQwB/wEQAREBDQH/AQ8BEgENAf8BCgEOAQkB/wECAQYBAQH/AQQBCAEDAf8BAAEC 238 | AQAB/wEAAQEBAAH/AQEBBAEAAf8BAwEFAQAB/wELAQoBBwH/ARABDgEMAf8BEwESARAB/wETARQBEQH/ 239 | ARMBFAERAf8BEwERAQ8B/wEXARYBEwH/AR4BHAEWAf8BGQEYARQB/wEaARkBFwH/ARYBFQETAf8CGgEX 240 | Af8BTwFMAUsB/wGmAaQBpwH//wD/AP8AwwABNQEtASMB/wErASIBGgH/ATABJQEeAf8BPgE1ASwB/wEz 241 | ASsBIgH/ASkBIgEaAf8BLQEoASIB/wEuASkBJAH/AS8BKQEjAf8BLwEnASAB/wEsASMBHwH/ASkBHgEa 242 | Af8BIAEYARIB/wEfARcBEQH/AR8BFwESAf8BMQEmASIB/wEnAR8BGgH/AQYBBwEGAf8DAAH/ATkBMgEx 243 | Af8BLgEnASIB/wErASYBIgH/ASkBJQEgAf8BJgEhARwB/wElASEBHAH/ASIBHgEZAf8BHQEZARQB/wEZ 244 | Ah4B/wEVAScBPgH/AYQBoAHMAf8BhQGkAdMB/wGOAawB2gH/AY8BrQHcAf8BjgGrAdoB/wGGAaMB0AH/ 245 | AWoBlAHCAf8BWgGEAbIB/wFVAXIBrQH/AVEBbgGoAf8BUgFuAacB/wFRAW8BqQH/AVQBcQGrAf8BVgGC 246 | Aa8B/wFaAYUBsgH/AVYBgAGvAf8BUgFvAawB/wFRAWcBowH/AUQBWwGUAf8BNAFJAWkB/wEfASkBMQH/ 247 | AQEBAwECAf8BAAECAQEB/wEDAQQBAgH/AQYBBwEFAf8BCwEMAQoB/wELAQwBCgH/AQ4BEQENAf8BDgES 248 | AQ0B/wEOARIBDQH/AQsBDwEKAf8BCgEOAQkB/wEEAQgBAwH/AQABAQEAAf8BAAEBAQAB/wECAQUBAAH/ 249 | AQgBCQEFAf8BEwERARAB/wEYARYBFQH/ARgBFgETAf8CFQESAf8BDwESAQ4B/wESARABDwH/AR8BHQEc 250 | Af8BIgEgAR0B/wEdARwBGQH/ASEBIgEfAf8BJgEnASUB/wKZAZoB/wHfAeAB5QH/At8B6AH//wD/AP8A 251 | wwABIwEdARcB/wE1ASsBIwH/ATwBMAEoAf8BQAE3AS4B/wE5ATEBKQH/AS0BKAEgAf8BJwEhARoB/wEs 252 | ASQBHAH/AS8BJQEeAf8BMgEnASIB/wEyAScBIwH/ASsBIAEcAf8BIgEZARUB/wEhARgBFAH/ASABFwES 253 | Af8BMQEmASEB/wEpAR8BHAH/AQ0BCwEJAf8DAAH/AUYBPwFfAf8BLgEnASEB/wEqAScBIgH/ASwBJQEg 254 | Af8BJQEgARsB/wEjAR8BGgH/AR8BGwEWAf8BHgEbARYB/wELARABFQH/ATgBTwFtAf8BgQGjAdAB/wGN 255 | Aa0B3AH/AZQBswHhAf8BkQGuAd0B/wGAAZ0BzAH/AV0BhQGyAf8BUgFuAaYB/wFRAW4BpQH/AU4BagGi 256 | Af8BTQFrAaQB/wFOAWwBpgH/AU0BbQGnAf8BTgFtAaYB/wFPAW0BpwH/AU4BbQGoAf8BUQFwAasB/wFV 257 | AXEBrgH/AVQBbAGpAf8BSQFiAZ0B/wE8AVEBhAH/AR0BKwE4Af8BAAIDAf8DAAH/AgIBAQH/AQQBBQED 258 | Af8BBwEIAQYB/wEMAQ0BCwH/ARABFAEPAf8BDwETAQ4B/wEJAQ0BCQH/AQsBDgELAf8BEAERAQ4B/wED 259 | AQYBAQH/AQABAgEAAf8BAAEDAQAB/wIKAQgB/wEVARQBEgH/ARUBEwESAf8BEAEPAQ0B/wIQAQ0B/wEQ 260 | AREBDQH/AQ0BEAEOAf8BFQESARAB/wEiAR8BHAH/ATEBLQEqAf8BMAEsASkB/wEzATIBLwH/AaABngGg 261 | Af8B4wHhAecB/wHhAeIB5wH/Ad8B4QHnAf//AP8A/wDDAAFoAVwBWgH/AUwBQgE6Af8BUAFGATwB/wFL 262 | AUABOAH/AUUBOwE1Af8BNQEsASUB/wEqASEBGQH/AS0BJAEcAf8BMAEmAR8B/wEzASgBIwH/ATUBKgEm 263 | Af8BLQEiAR4B/wEpAR4BGgH/ASsBIQEdAf8BKgEgARsB/wE0ASkBJAH/ASkBIAEcAf8BDgEMAQkB/wIA 264 | AQMB/wFLAUEBmgH/AS4BKgEjAf8BLQEnASEB/wEsASMBHwH/AScBIAEbAf8BIQEdARgB/wEgARwBFwH/ 265 | AR0BGQEVAf8BBgEOARQB/wFkAYsBtQH/AY0BrgHbAf8BmQG3AeYB/wGOAasB2gH/AWgBkgHBAf8BXAGF 266 | AbQB/wFaAYQBsQH/AVUBcQGrAf8BUAFqAaUB/wFIAWIBmwH/AUcBYwGbAf8BSgFpAaEB/wFRAW4BqAH/ 267 | AVABbAGnAf8BUwFwAasB/wFQAW4BqwH/AVEBbgGoAf8BTgFsAaYB/wFNAWoBpQH/AUkBaAGjAf8BQgFb 268 | AZIB/wEqATwBWQH/AQABAgEEAf8DAAH/AwAB/wEDAQQBAgH/AQcBCAEGAf8BDQEOAQwB/wEVARYBEgH/ 269 | ARABEgEOAf8BCgEMAQkB/wEOAQ8BDQH/AREBDwENAf8BAgEGAQEB/wEAAQIBAAH/AQQBBwEDAf8CEgEP 270 | Af8BFAETAREB/wETARIBEAH/ARQBEgEQAf8BMAEuAS0B/wFtAWsBbAH/AZwBmgGdAf8BrgGsAa4B/wHB 271 | Ab8BwwH/Ac4BzAHRAf8B0gHPAdMB/wHRAdMB1wH/Ad8B4wHoAf8B4AHjAegB/wHhAeQB6QH/AeAB5AHo 272 | Af//AP8A/wDDAAHvAu4B/wHtAuoB/wHsAegB5gH/Ac8BygHIAf8BoAGZAZYB/wFeAVUBTQH/AUQBOgEy 273 | Af8BOAEsASUB/wE5ASwBJgH/ATUBKwEmAf8BOgEvASsB/wE3ASwBKAH/ATIBJgEiAf8BLAEhAR0B/wEt 274 | ASMBHwH/ATQBKgElAf8BLgElASEB/wEPAQ0BCgH/AgABBAH/AUcBPQGyAf8BNAEuASwB/wEwAScBIwH/ 275 | ASwBJQEgAf8BKQEgARwB/wElAR0BGQH/ASUBHgEYAf8CGgEVAf8BGQElATcB/wGIAaYB1AH/AZoBtgHl 276 | Af8BkgGuAd0B/wFvAZgBxwH/AWgBlAHDAf8BYQGLAbkB/wFbAYIBrgH/AUwBZgGfAf8BPwFXAZIB/wE7 277 | AVQBjgH/AT4BXAGTAf8BQgFhAZkB/wFEAWABmgH/AUYBYwGeAf8BSAFmAaIB/wFNAWsBqQH/AVABbwGr 278 | Af8BUwFvAa0B/wFNAWwBqAH/AUYBZAGeAf8BRwFiAZoB/wE3AU0BhAH/AQ8BFgEiAf8DAAH/AwAB/wEB 279 | AQMBAQH/AggBBwH/AQ8BEAEMAf8BGQEYARYB/wESARABDwH/AQoBCQEHAf8CEQEPAf8BDQEOAQwB/wED 280 | AQYBAgH/AQIBBAECAf8BCQEMAQkB/wEZARgBEwH/ARwBGQEYAf8COwE6Af8BlQGWAZgB/wHWAdkB3wH/ 281 | AdsB3gHmAf8B3AHfAeYB/wHcAd4B5gH/Ad0B3wHnAf8B3AHgAeYB/wHeAeIB5gH/Ad8B5AHnAf8B3wHk 282 | AecB/wHfAeQB5wH/Ad8B5AHoAf8B3wHkAecB//8A/wD/AMMAA+8B/wPvAf8D7wH/A+8B/wHwAe4B8AH/ 283 | AekC5wH/Aa8BqQGmAf8BVQFNAUYB/wE9ATEBKwH/ATEBJwEhAf8BMwEoASQB/wErASABHAH/AS0BIgEe 284 | Af8BKwEgARwB/wExASYBIQH/ATQBKwElAf8BNgEuAScB/wETARABDgH/AgABCQH/AUMBMgHAAf8BOQEw 285 | AUwB/wE2ASsBJwH/AS4BJQEhAf8BKwEiAR4B/wErASIBHgH/ASkBIAEbAf8CFgEUAf8BOwFPAWsB/wGS 286 | AbAB3QH/AZMBsAHfAf8BggGgAc4B/wGAAZ4BzAH/AWsBlgHEAf8BWAFxAagB/wFAAVgBiwH/AT0BVQGJ 287 | Af8BQAFYAY8B/wFEAVwBlQH/AUYBYQGYAf8BRAFjAZwB/wFEAWQBngH/AUUBZAGfAf8BRQFhAZ0B/wFF 288 | AWEBnQH/AUoBZwGkAf8BUQFvAasB/wFVAYEBsgH/AVQBcAGvAf8BSwFlAaQB/wFBAVsBlAH/ASkBPAFX 289 | Af8DAAH/AwAB/wMAAf8BBgEHAQUB/wEPARABDAH/ARcBFgETAf8BDAEKAQgB/wIOAQsB/wERARIBDwH/ 290 | AQoBCwEIAf8BBwEIAQQB/wEGAQcBBQH/ARABEgERAf8BZgFoAWkB/wHKAcgBygH/AdwB3QHjAf8B3QHe 291 | AeYB/wHdAd8B5wH/Ad0B3wHnAf8B3QHfAecB/wHdAd8B5wH/Ad0B3wHnAf8B3gHiAecB/wHfAeMB6AH/ 292 | Ad8B4wHnAf8B3wHkAecB/wHfAeQB5wH/AeAB5QHoAf8B3wHkAecB//8A/wD/AMMAA+8B/wHwAe8B8AH/ 293 | Au8B8AH/Ae4C7wH/Ae4C7wH/A+8B/wHvAe4B7wH/AukB6AH/AboBtgG1Af8BkwGMAYoB/wFsAWIBXwH/ 294 | AUEBNwExAf8BNQEsASYB/wEvASQBHwH/ATIBKQEkAf8BMQEpASIB/wE8ATIBKwH/ASIBHgEYAf8CAAEK 295 | Af8BOgEpAbkB/wFAATQBgwH/ATUBKgEmAf8BMgEnASMB/wErASIBHQH/ASkBIAEbAf8BJwEeARoB/wEP 296 | AREBFQH/AVwBgwGlAf8BlAGyAeAB/wGHAaQB0gH/AYcBowHSAf8BgAGcAckB/wFRAWwBoQH/ATwBVwGF 297 | Af8BOwFUAYIB/wE4AVMBgAH/ATUBUAFvAf8BNgFOAW8B/wE2AU8BcQH/ATYBUgFyAf8BOgFUAYIB/wE9 298 | AVgBigH/AUEBXQGTAf8BSAFiAZ8B/wFIAWYBpAH/AUcBaAGnAf8BVQGAAbUB/wFcAYUBuwH/AVoBgQG3 299 | Af8BTwFmAaMB/wE5AVMBhgH/AQIBCQEOAf8DAAH/AwAB/wECAQYBBAH/ARIBFQESAf8BDAENAQoB/wEJ 300 | AQgBBgH/ARMBEgEQAf8CDwEMAf8CEwEPAf8BIgEhAR4B/wFeAlwB/wK5AbsB/wHeAeAB5QH/Ad0B3wHk 301 | Af8B3QHfAecB/wHdAd4B6AH/Ad0B3wHmAf8B3QHfAecB/wHdAd8B5wH/Ad4B4AHoAf8B3gHhAegB/wHf 302 | AeQB5wH/Ad8B4wHnAf8B3wHkAegB/wHfAeQB6AH/AeEB5AHqAf8B3wHkAegB/wHfAeQB5wH//wD/AP8A 303 | wwAB7wHzAfQB/wHvAfMB9AH/Ae4B8QHzAf8B8AHyAfMB/wPvAf8D7wH/A+8B/wPvAf8D7wH/A+4B/wLw 304 | Ae8B/wHpAecB5QH/AbUBsgGsAf8BYAFYAVIB/wE/ATQBLgH/ATMBKQEhAf8BOAEvASYB/wE2ASwBJgH/ 305 | AQwBCQEOAf8BZAFYAbIB/wFDATUBrwH/ATYBLgEsAf8BNAEpASUB/wEtASIBHgH/ASsBIgEbAf8BIgEc 306 | ARcB/wEJAQ8BFgH/AYUBnwHFAf8BjAGpAdYB/wGMAaoB1gH/AYYBogHOAf8BUAFsAZ4B/wE4AVUBgQH/ 307 | ATUBUQFvAf8BNAFQAW4B/wE0AVABbgH/ATsBVQGAAf8BQQFZAYYB/wFEAVwBhwH/AUABWgGEAf8BPQFY 308 | AYMB/wFDAV4BigH/AUMBXQGLAf8BRAFcAY8B/wFCAV0BkwH/AUcBYwGeAf8BTAFpAaoB/wFVAXIBtAH/ 309 | AV8BiAG+Af8BWgGEAboB/wFKAWQBoAH/ARoBJgE6Af8DAAH/AwAB/wECAQYBBAH/AREBFAEPAf8BBgEJ 310 | AQQB/wIMAQoB/wEWARUBEwH/AUcBRgFFAf8CpQGmAf8B1gHaAdwB/wHgAeIB5wH/Ad0B4AHlAf8B3QHg 311 | AeUB/wHcAd8B5AH/Ad0B3wHnAf8B3QHfAeYB/wHdAd8B5wH/Ad0B3wHnAf8B3QHfAecB/wHdAd8B5wH/ 312 | Ad0B4AHmAf8B3wHjAecB/wHfAeQB5wH/Ad8B5AHnAf8B4QHkAekB/wHlAeMB7gH/AeYB5AHtAf8B4gHl 313 | AekB//8A/wD/AMMAAfAB8wH3Af8B8AH0AfcB/wHwAfMB+AH/Ae8B8gH1Af8B8AHvAfAB/wPvAf8D7wH/ 314 | Ae8C8AH/Ae4C8AH/Ae8C8AH/AvAB7wH/Ae8C8AH/Ae8C8AH/Au8B7gH/AcQBvwG7Af8BWQFRAUkB/wEy 315 | ASgBHwH/AT0BNAEqAf8BHwEYARcB/wFIAT8BgwH/AVcBSAHIAf8BPQE1AVcB/wE4AS0BKQH/AS8BJAEh 316 | Af8BLAEkARsB/wEgAR0BGAH/AQoBEwEdAf8BjQGnAdAB/wGLAacB1AH/AYoBqAHTAf8BWQGBAaYB/wE2 317 | AVMBbwH/ATQBUAFtAf8BPQFZAYYB/wFMAWgBlQH/AVQBcAGdAf8BWAGBAaMB/wFWAXABogH/AVYBcAGi 318 | Af8BUAFpAZwB/wFQAWkBnAH/AVMBagGgAf8BUQFoAaAB/wFWAW0BpgH/AVABaAGfAf8BSQFjAZwB/wFF 319 | AWEBnwH/AU4BawGrAf8BWwGFAbkB/wFkAYwBwgH/AWABhwG8Af8BNgFIAWkB/wMAAf8DAAH/AQYBCAEE 320 | Af8BDAEOAQgB/wEIAQwBBwH/AQwBDwEMAf8BcgKAAf8B4AHjAeYB/wHeAeQB5wH/Ad4B5AHnAf8B3gHj 321 | AecB/wHeAd8B5gH/Ad0B3wHnAf8B3QHfAecB/wHcAd8B5AH/Ad0B4AHlAf8B3QHfAecB/wHdAd8B5wH/ 322 | Ad0B3wHnAf8B3QHfAecB/wHeAeEB5wH/Ad8B4wHnAf8B3wHkAecB/wHfAeQB5wH/AeIB4wHqAf8B5wHi 323 | Ae8B/wHnAeMB7wH/AeYB4wHsAf//AP8A/wDDAAH0AfMB+AH/AfQB8wH3Af8B9QHzAfgB/wHxAfMB9wH/ 324 | Ae8B8gHzAf8B7wHzAfUB/wHvAfMB9QH/Ae4C8QH/AvIB8QH/AfYB8gHwAf8B9AHxAfAB/wH0AfIB8QH/ 325 | AfAB8gHwAf8B8AHyAe8B/wHwAfEB7wH/AfAB7QHrAf8BvwG5AbUB/wFtAWUBYAH/ATwBNQEvAf8BMAEr 326 | ATcB/wFoAVoBvgH/AUgBQQGcAf8BPQE1AS4B/wEzASgBIgH/AS4BJgEdAf8BIQEeARoB/wENARgBJwH/ 327 | AYMBngHHAf8BkAGqAdgB/wFnAZABuAH/ATcBUQFwAf8BNAFQAW0B/wFIAWMBkgH/AWsBkwG9Af8BcAGZ 328 | AcIB/wFvAZYBwAH/AYIBmwHGAf8BcAGVAcMB/wFrAZEBvwH/AWABhgGxAf8BZQGKAbgB/wFkAYoBuAH/ 329 | AVoBggGvAf8BWwGDAbAB/wFbAYIBrQH/AV8BhgGzAf8BVgFvAasB/wFIAWIBoQH/AVABbAGtAf8BYAGH 330 | Ab4B/wFqAZAByQH/AVMBawGgAf8DAAH/AwAB/wMLAf8BJAEfAT4B/wELAQwBCwH/AWMCZQH/AeAC5QH/ 331 | Ad8B5AHmAf8B3wHkAecB/wHeAeQB5wH/Ad8B4wHmAf8B3gHhAeYB/wHdAd8B5gH/Ad0B3wHnAf8B3QHf 332 | AeYB/wHdAd8B5wH/Ad0B3wHnAf8B3QHfAecB/wHdAd8B5wH/Ad0B3wHnAf8B3QHfAecB/wHeAeMB5wH/ 333 | Ad8B5AHnAf8B3gHkAecB/wHfAeMB6AH/AecB4wHuAf8B6AHjAfAB/wLjAe0B//8A/wD/AMMAAfcB8wH4 334 | Af8B9wHzAfgB/wH4AfMB+AH/AvQB+AH/AfEB8wH1Af8B8AH0AfcB/wHwAfQB9wH/AfAB9AH2Af8B8QLy 335 | Af8B9AHyAe8B/wLxAe8B/wH0AfIB8QH/AvIB7gH/AfAB8gHuAf8B7gHyAe4B/wHvAfAB7wH/Ae8B8AHu 336 | Af8D8AH/Ad4B2AHVAf8BqgGjAaAB/wFyAW4BgQH/AYYBcAGtAf8BRAE/AUkB/wE4AS4BKQH/ATEBJgEi 337 | Af8BIQEdARoB/wEPARsBLQH/AW0BlgG/Af8BiQGkAcwB/wE5AVQBbwH/ATYBUQFtAf8BSQFmAZQB/wFx 338 | AZoBxgH/AYIBoQHSAf8BhgGnAdgB/wGNAagB2QH/AZEBqAHYAf8BiQGgAdAB/wGBAZoBzQH/AXEBlgHM 339 | Af8BawGTAckB/wFpAZMByQH/AWkBkgHHAf8BZQGPAcQB/wFlAY4BwAH/AWUBjAHAAf8BZgGNAcEB/wFZ 340 | AYIBswH/AU4BawGoAf8BVgFwAbEB/wFqAZEBxgH/AWcBjgG6Af8CAAECAf8BAAEBAQAB/wETARQBGgH/ 341 | ATgBNwFLAf8BnAGbAZ0B/wLmAecB/wHfAegB5wH/Ad4C5gH/Ad8B5AHmAf8B3gHkAecB/wHfAeQB5wH/ 342 | Ad8B4wHmAf8B3wHiAeYB/wHdAd8B5wH/Ad0B3wHnAf8B3QHgAeUB/wHdAeAB5QH/AdwB3wHlAf8B3QHg 343 | AeUB/wHdAd8B5wH/Ad4B4AHoAf8B3wHjAecB/wHfAeQB5wH/Ad4B5AHnAf8B4AHkAegB/wHmAeMB7gH/ 344 | AecB4wHuAf8B5gHjAekB//8A/wD/AMMAAfgB9QH3Af8B9wHzAfgB/wH3AfMB+AH/AfcB8wH4Af8B8AH0 345 | AfcB/wHvAfQB9wH/Ae8B9AH3Af8B8AHzAfYB/wHyAfMB8QH/AvEB7gH/AfAB8gHuAf8C8QHwAf8B8wHy 346 | Ae8B/wHwAfEB7gH/Ae8B8gHvAf8D7wH/A+8B/wPvAf8D8AH/AfMB8QHwAf8B+AHzAfAB/wH2AfAB8gH/ 347 | AaMBoAGoAf8BPgE2ATEB/wE1ASsBJwH/AScBIAEeAf8BBwEQAR4B/wGSAawB0gH/AUsBZgGUAf8BPQFW 348 | AYAB/wFNAWcBmAH/AWgBkQG8Af8BgQGfAc4B/wGEAaUB1gH/AY4BrgHlAf8BkAGwAeUB/wGaAbMB6AH/ 349 | AZkBrwHnAf8BkgGpAeMB/wGPAaIB4AH/AYQBmgHYAf8BbwGWAdEB/wFrAZIBzQH/AWQBjAHGAf8BZAGM 350 | AcUB/wFmAY8BxgH/AWUBjwHFAf8BYQGKAb4B/wFXAYEBsgH/AVMBbgGuAf8BWQGBAbUB/wFvAZYBwwH/ 351 | AQABAgEEAf8BBAEIAQUB/wGGAYkBiwH/AeYB6gHtAf8B5gLoAf8B5gLnAf8B5QLnAf8B3gLmAf8B3QHl 352 | AegB/wHfAeQB5wH/Ad8B5AHnAf8B3wHjAegB/wHfAeMB5QH/Ad0B3wHmAf8B3QHfAeYB/wHfAeAB5wH/ 353 | Ad4B4QHgAf8B3gHfAeMB/wHdAd8B5wH/Ad0B3wHnAf8B3gHhAeYB/wHeAeIB5wH/Ad4B4gHnAf8B4AHk 354 | AegB/wHgAeMB6AH/AecB4wHuAf8B6AHjAe0B/wHnAeMB6AH//wD/AP8AwwAB+AH1AfcB/wH3AfMB+AH/ 355 | AfcB8wH4Af8C9AH4Af8B8wH0AfgB/wHvAfQB9wH/Ae8B9AH3Af8B8QHyAfMB/wHyAfMB8AH/AfQB8gHw 356 | Af8B8AHyAe4B/wLxAe8B/wHxAfIB7wH/Ae8B8AHuAf8B8ALvAf8D7wH/A+8B/wPvAf8D7wH/AfMB8AHv 357 | Af8B9wHzAe4B/wH3AfMB7gH/AfUB8AHuAf8BggFvAWwB/wE2ATABKAH/ASYBIwEhAf8BLQE7AUwB/wFl 358 | AYwBrQH/AUABWgGIAf8BTQFqAZ4B/wFfAYkBtAH/AW4BlwHFAf8BgAGcAc0B/wGGAaMB2AH/AYgBpgHc 359 | Af8BigGnAd4B/wGFAaAB1wH/AYgBoAHaAf8BigGhAd4B/wGGAZsB2gH/AXABlQHTAf8BagGRAc8B/wFn 360 | AY4ByQH/AWQBiwHEAf8BYwGJAcQB/wFjAYkBwgH/AWIBigHDAf8BXwGHAb8B/wFgAYgBvgH/AVsBgwG3 361 | Af8BVAFuAa0B/wFhAYUBsgH/AQYBCwESAf8BIQElASMB/wHfAeIB5QH/AecB6wHwAf8B5gLpAf8B6ALn 362 | Af8B5ALnAf8B3gLnAf8B3gHmAegB/wHfAeQB5wH/Ad8B5AHnAf8B3wHkAecB/wHdAuIB/wHdAd8B5gH/ 363 | Ad4B3wHjAf8C3wHhAf8B3gHgAeEB/wLfAeAB/wLeAeIB/wLfAeIB/wHeAd8B5gH/Ad0B4AHlAf8B3wHj 364 | AecB/wHfAeQB5wH/AeAB5AHoAf8B4wHkAesB/wHnAeMB7wH/AeYB4wHqAf//AP8A/wDDAAH3AfYB9wH/ 365 | AfcB9AH3Af8B9wH0AfcB/wH1AfQB+AH/AfQB8wH4Af8B8QH0AfcB/wHvAfQB9wH/AfAB8wH1Af8B8AHy 366 | AfAB/wLxAe8B/wHzAfIB8AH/AfMB8QHwAf8B7wHwAe8B/wLwAe8B/wPvAf8D7wH/A+8B/wHxAvAB/wHx 367 | AvAB/wH0AfEB7wH/AfcB8gHvAf8B9wHyAe8B/wH3AfIB7wH/AecB4wHfAf8BQQE5ATMB/wEpASQBIgH/ 368 | ASEBKwE8Af8BRwFhAZAB/wFPAWgBnQH/AVkBhAGwAf8BZAGQAb0B/wFsAZcBxgH/AYMBngHSAf8BhAGe 369 | AdUB/wGIAaIB2AH/AYkBogHaAf8BgwGcAdUB/wFnAZAByQH/AWIBhQHDAf8BXAFxAbwB/wFhAYcBxAH/ 370 | AWMBigHHAf8BZAGLAckB/wFiAYgBxQH/AVgBbgG5Af8BWwGBAbwB/wFgAYgBwgH/AV8BhwHAAf8BWQGC 371 | AbkB/wFcAYUBuwH/AVwBhQG6Af8BXwGEAbsB/wFKAVkBhwH/Aa0BsAGzAf8B5wHsAfAB/wHoAewB7wH/ 372 | AeYC6QH/AegC5wH/AeQC5wH/AeAC5wH/Ad4B5QHnAf8B3gHlAecB/wHfAeQB5gH/Ad4B5AHjAf8B3QLi 373 | Af8B3QHgAeQB/wLfAeMB/wHfAd4B4AH/Ad8B3gHhAf8C3wHgAf8B4QHfAeEB/wHfAd4B4QH/Ad4B3wHm 374 | Af8B3QHfAecB/wHfAeIB5gH/Ad8B5AHnAf8B3wHkAecB/wHgAeQB6AH/AuMB6QH/AeMB4gHoAf//AP8A 375 | /wDDAAP3Af8B+AH1AfcB/wH3AfUB9gH/AfQB8wH3Af8B8QH0AfUB/wHvAfMB9gH/Ae8C9AH/AfAB8wHy 376 | Af8C8AHvAf8B8QHwAe8B/wHxAfAB7wH/AfAC7wH/A+8B/wPvAf8D7wH/A+8B/wPvAf8B8wHxAfAB/wHy 377 | AfAB7gH/AfgB8gHvAf8B9wHyAe8B/wH3AfIB7wH/AfcB8gHvAf8B9wHyAe8B/wGcAZcBkgH/ATIBMAE0 378 | Af8BTgFiAY8B/wFUAXEBpQH/AVwBhAGwAf8BYgGNAboB/wFqAZUBxAH/AW0BlwHIAf8BhQGgAdUB/wGM 379 | AacB3gH/AYkBogHbAf8BhQGdAdYB/wFxAZcB0QH/AWYBjQHIAf8BWwFxAbsB/wFXAWsBswH/AVYBbAG2 380 | Af8BWQFxAbwB/wFcAYIBvwH/AWUBigHIAf8BZAGLAckB/wFjAYkBxwH/AWMBigHFAf8BXwGHAcAB/wFe 381 | AYYBvgH/AV4BhwG+Af8BYQGJAcAB/wFkAYsBwwH/AWgBjAHDAf8BtQG/AdUB/wHqAe0B7gH/AeYB6wHw 382 | Af8B5gLqAf8B6ALnAf8B4wLnAf8B3ALnAf8B3gHmAegB/wHeAeQB5gH/Ad8B5AHmAf8B3gHkAeMB/wHd 383 | AeQB4AH/Ad0B4wHeAf8B3gHfAeIB/wHgAt8B/wHeAt8B/wPfAf8D3wH/Ad0B3wHhAf8B3gHgAeMB/wHd 384 | AeAB5QH/Ad8B4gHmAf8B3gHjAeYB/wHfAeQB5wH/Ad8B5AHnAf8B3wHkAecB/wHfAeMB5wH//wD/AP8A 385 | wwAD9wH/AfcB9QH3Af8B9gH0AfcB/wH3AfMB9wH/AfYC8wH/Ae8B9AH1Af8B8ALzAf8C8wHwAf8B8gHw 386 | Ae8B/wHvAfAB7wH/Ae8B8AHvAf8D7wH/A+8B/wPvAf8D7wH/A+8B/wPvAf8D7wH/AfAC7wH/AfYB8gHw 387 | Af8B9wHyAe8B/wH3AfIB7wH/AfcB8gHvAf8B9gHyAfAB/wHvAe0B6QH/AWkBhAGbAf8BYgGKAbAB/wFq 388 | AZABuwH/AWgBjwG+Af8BZwGSAcEB/wFnAZMBwgH/AYMBngHSAf8BkAGrAeAB/wGUAa4B5QH/AZUBrQHj 389 | Af8BhgGcAdkB/wFrAYsBzgH/AWgBhQHJAf8BYwFwAcIB/wFgAW4BwQH/AV4BawG/Af8BXgFqAb0B/wFf 390 | AW0BvwH/AWgBhwHKAf8BaQGKAc0B/wFjAYgBxgH/AWABiAHDAf8BXgGFAb4B/wFaAYEBuQH/AWABiQHA 391 | Af8BZQGNAcUB/wFoAZABxgH/AW8BkQHGAf8BhAGWAcUB/wHTAdoB5gH/AeYB7AHuAf8B5gLoAf8D5wH/ 392 | AeQC5wH/AeAC5wH/Ad8B5gHnAf8B3wHkAecB/wHfAeQB5gH/Ad4B5AHlAf8B3QHjAeAB/wHcAeIB3wH/ 393 | Ad4C3wH/AeAC3wH/At8B4AH/A98B/wLfAeAB/wHgAd8B4QH/Ad8B3gHfAf8B3gHgAeQB/wHeAeAB5gH/ 394 | Ad8B5AHmAf8B3wHkAecB/wHfAeQB5wH/Ad8B4wHnAf8B3gHgAeYB//8A/wD/AMMAA/cB/wP3Af8D9wH/ 395 | AfcB9QH2Af8B9wHzAfYB/wHzAfIB9gH/AfAB8wH3Af8B8QHzAfEB/wLzAe8B/wHzAfIB7wH/AfIB8wHw 396 | Af8B8AHxAe8B/wPvAf8D7wH/A+8B/wPwAf8D7wH/A+8B/wHzAfEB8AH/AfQB8QHvAf8B9wHyAfAB/wH4 397 | AfIB8AH/AfYB8gHwAf8B+AHyAe8B/wHWAdsB4gH/AYEBlgG7Af8BcgGWAcAB/wGCAZoBxgH/AYMBmwHK 398 | Af8BbAGWAcUB/wFlAY8BvgH/AWwBlAHEAf8BgwGhAdIB/wGRAawB3wH/AYIBkgHKAf8BcQGJAcYB/wGI 399 | AY0BzgH/AZIBlAHXAf8BcgGAAcYB/wFnAWoBvAH/AWEBZAG4Af8BXQFgAbEB/wFOAVYBowH/AUoBVQGg 400 | Af8BUQFjAa4B/wFbAXEBugH/AVgBcQG3Af8BUgFsAbEB/wFYAXIBuAH/AV4BigHBAf8BZQGQAccB/wFv 401 | AZIByQH/AXIBlAHJAf8BhAGWAcsB/wGjAbEB0QH/AecB7AHtAf8B5wHpAesB/wPnAf8B5gLnAf8D5wH/ 402 | AuUB5gH/Ad8B5AHnAf8B3wHkAecB/wHfAeQB5wH/Ad8C5AH/Ad0B4wHfAf8D3wH/A98B/wPfAf8D3wH/ 403 | Ad8B3gHgAf8B4AHfAeEB/wLfAeEB/wHfAeAB5gH/Ad0B4AHlAf8B3gHjAeYB/wHfAeQB5wH/Ad8B5AHn 404 | Af8B3wHjAecB/wHdAeAB5wH//wD/AP8AwwAB+AH5AfcB/wH3AfgB9wH/AfYC9wH/AfcB9gH4Af8B+AH1 405 | AfgB/wP3Af8D9wH/AfcB8wHyAf8B9wHyAe8B/wH3AfMB7wH/AfYB8wHvAf8B9gHzAe8B/wHzAfEB7wH/ 406 | AfAC7wH/A+8B/wPvAf8D7wH/Ae8B8AHuAf8B9QHxAe8B/wH1AfIB7gH/AfMB8gHwAf8B7wHxAe8B/wHw 407 | AfEB7wH/AfMB8gHxAf8BogG1Ac8B/wGKAaEBygH/AYwBogHOAf8BhgGfAc0B/wGAAZsBywH/AW8BmAHH 408 | Af8BYAGJAbcB/wFXAW4BpwH/AVcBbQGkAf8BVQFmAaAB/wE9AUYBhgH/ATsBQQGDAf8BOgFBAYYB/wE9 409 | AUIBiAH/ATcBOgGEAf8BNgE7AYUB/wEsATMBbgH/ATEBOQGAAf8BLQE2AXAB/wEvATcBbwH/AS8BOAFu 410 | Af8BNAFGAYYB/wFDAVkBlwH/AUgBYwGjAf8BUwFtAbEB/wFgAYoBwQH/AWYBjgHGAf8BbQGTAcoB/wGC 411 | AZgBzAH/AYgBmwHOAf8BigGeAc4B/wHXAdkB5QH/AeYC6gH/AegC5wH/A+cB/wPnAf8B5wHkAeYB/wHl 412 | AeQB6AH/AeAB5AHnAf8B3gHkAeYB/wHfAeMB5gH/Ad0B4gHgAf8D3wH/A98B/wPfAf8C3wHgAf8B4AHf 413 | AeEB/wPfAf8C3wHgAf8B3gHfAeYB/wHdAeAB5QH/Ad4B4wHnAf8B3wHkAecB/wHfAeQB5wH/Ad8B5AHn 414 | Af8B3wHhAecB//8A/wD/AMMAAfcB+wH2Af8B+AH5AfgB/wP3Af8D9wH/A/cB/wP3Af8D9wH/AfcB9gHy 415 | Af8B9wH0AfAB/wH3AfIB7wH/AfcB8gHvAf8B9gHzAe8B/wH2AfMB7gH/AvIB7wH/Ae8B8QHvAf8B8QHw 416 | Ae4B/wPvAf8B7QHwAe8B/wLwAe8B/wLxAe8B/wHxAfMB7wH/Ae8B8wHuAf8C8gHvAf8B4AHnAesB/wGU 417 | Aa4B0gH/AY0BpQHMAf8BiwGiAc8B/wFyAZoByQH/AWgBkwHCAf8BbQGVAcMB/wFiAYwBtwH/AVYBbwGi 418 | Af8BUwFoAZsB/wFqAY0BtwH/AYcBmwHJAf8BjQGiAdQB/wGEAZgBzgH/AWoBhwHBAf8BaAGFAcIB/wFu 419 | AYoBxwH/AWEBcAG7Af8BTgFgAaoB/wFQAWIBqwH/AVoBbAGyAf8BZAGCAb0B/wFmAYcBvgH/AVUBawGo 420 | Af8BVAFqAaYB/wFVAWwBqwH/AV8BhQG/Af8BZgGOAccB/wFqAZEByQH/AXIBlgHMAf8BhgGbAc8B/wGJ 421 | AZ4BzwH/AbYBwAHcAf8B6QHqAesB/wHmAegB5gH/A+gB/wPnAf8B5wHlAecB/wHmAeMB6AH/AeIB5AHo 422 | Af8B3wHkAecB/wHfAeQB5QH/Ad0B4gHfAf8B3wLgAf8D3wH/AeAB3wHeAf8B3QLgAf8B3wHgAeIB/wPf 423 | Af8B3QHfAeEB/wHeAd8B5QH/Ad0B3wHnAf8B3gHiAeYB/wHfAeQB5wH/Ad8B5AHnAf8B3wHkAecB/wHf 424 | AeMB6AH//wD/AP8AwwAB9wH7AfYB/wH3AfgB9wH/A/cB/wP3Af8D9wH/A/cB/wL3AfUB/wH0AfcB8QH/ 425 | AfYB9QHwAf8B9wHyAe8B/wH3AfIB7wH/AfYB8wHvAf8B9wHyAe8B/wH2AfIB7gH/AfEB8wHuAf8C8gHv 426 | Af8B8AHxAe8B/wHuAfAB7gH/Ae8B8AHvAf8B7wHyAe8B/wHwAfIB7gH/AfEB8gHuAf8B9AHzAe8B/wHH 427 | AdQB4wH/AZUBrgHWAf8BjAGlAc4B/wGEAZwBywH/AWkBkgHCAf8BYgGOAbwB/wFhAYoBuAH/AWIBigGy 428 | Af8BbgGTAbgB/wFvAZIBuQH/AYQBmgHHAf8BiwGfAc4B/wGOAaMB0wH/AY4BpAHUAf8BiQGeAdEB/wFq 429 | AYkBwgH/AWYBhQG/Af8BZQGGAb8B/wFgAYUBvQH/AWEBhgG+Af8BZAGGAb4B/wFoAYkBwwH/AWQBhQG8 430 | Af8BYAGCAbMB/wFZAXABqwH/AVsBcQGxAf8BXQGDAb0B/wFmAY4BxgH/AWQBjAHFAf8BbAGTAcoB/wGD 431 | AZkB0AH/AYsBnwHUAf8BnAGrAdMB/wHkAegB6wH/AeYB6gHnAf8B5gHoAecB/wPnAf8B6AHlAecB/wHm 432 | AeMB6AH/AeIB4wHnAf8B3wHkAecB/wHfAeMB5QH/Ad0B4gHfAf8B3QHiAd4B/wHeAt8B/wHfAeAB3wH/ 433 | A98B/wHdAeAB4gH/A98B/wHeAd8B4QH/Ad4B4AHiAf8B3gHgAeYB/wHdAeAB5QH/Ad8B5AHnAf8B3wHk 434 | AecB/wHeAeQB5wH/Ad8B4gHlAf//AP8A/wDDAAH3AfoB9wH/AfcB+AH3Af8D9wH/A/YB/wP3Af8C9gH3 435 | Af8C9wH1Af8C9gHwAf8B9wHzAe8B/wH4AfIB7wH/AfcB8gHvAf8B9wHyAe8B/wH2AfMB7wH/AfcB8gHv 436 | Af8B8wHyAe4B/wHxAfIB7gH/AvEB7wH/Ae8B7gHwAf8D7wH/AvEB7gH/AfQB8gHuAf8B9wHyAe8B/wH2 437 | AfMB7wH/AawBwAHaAf8BjwGrAdEB/wGGAaABygH/AWcBjQG6Af8BWgGBAa8B/wFUAXEBrQH/AVABbQGo 438 | Af8BYAGGAbEB/wFuAZIBuAH/AYkBnAHFAf8BiwGfAcwB/wGMAaEB0AH/AYwBoQHRAf8BggGXAcYB/wFu 439 | AZEBvwH/AWMBhAG2Af8BWQFsAawB/wFVAWgBqAH/AVoBbQGwAf8BXQFvAbQB/wFiAYABuQH/AWEBgAG4 440 | Af8BYAFyAbQB/wFhAYEBtAH/AWABgAG0Af8BXAFyAbYB/wFdAYMBvAH/AV8BhwHAAf8BYQGIAcAB/wFm 441 | AY0BxAH/AYABmQHOAf8BiwGfAdUB/wGUAaYB0wH/AdsB3gHmAf8B5wHqAegB/wHnAegB5gH/A+cB/wHo 442 | AeYB5wH/AecB4wHoAf8B5wHjAegB/wLjAegB/wHfAeMB5gH/Ad8C4gH/Ad0B4wHeAf8B3gHiAeAB/wHe 443 | At8B/wHeAd8B4AH/Ad0B3wHiAf8D3wH/At8B4AH/Ad4B4AHkAf8B3gHhAeYB/wHeAeMB5wH/Ad8B5AHn 444 | Af8B3wHkAecB/wHeAeQB5gH/Ad4B4wHmAf//AP8A/wDDAAH5AfoB9gH/AfcB+QH3Af8B9wL4Af8D9wH/ 445 | A/cB/wP3Af8D9wH/AfcB9QHzAf8B9wHzAfEB/wH2AfMB7wH/AfcB8gHvAf8B9wHyAe8B/wH2AfMB7wH/ 446 | AfcB8gHvAf8B9QHzAe8B/wHxAfIB7gH/AfAB8QHvAf8D7wH/Ae8B8AHuAf8B9AHyAe8B/wH4AfIB7wH/ 447 | AfcB8gHvAf8B6AHrAe4B/wGdAbUB1AH/AYkBowHHAf8BagGQAbgB/wFUAWsBpAH/AUkBYQGbAf8BSQFh 448 | AZwB/wFHAV8BmgH/AVABZwGiAf8BZgGIAbYB/wGDAZcBxgH/AY0BoAHRAf8BjwGiAdIB/wGJAZwBzQH/ 449 | AWQBgwGzAf8BWwFtAakB/wFXAWsBqgH/AU0BYQGfAf8BTAFfAZ8B/wFWAWcBqwH/AV0BbgGzAf8BXwFw 450 | AbYB/wFhAXIBtwH/AV4BbwG1Af8BXAFtAbQB/wFYAWoBsgH/AU8BZgGuAf8BWAFwAbgB/wFcAYABugH/ 451 | AV4BgwG9Af8BZgGLAcQB/wFuAZQBzAH/AYgBnwHSAf8BjQGkAdIB/wHNAdIB4AH/AegB6wHoAf8B6AHq 452 | AecB/wHnAegB5wH/AegC5wH/AekB5gHnAf8B5wHjAecB/wHkAeMB5wH/Ad8B4wHlAf8B3gHjAeIB/wHf 453 | AeAB3wH/Ad4B4QHfAf8B3gLgAf8B3wHgAeEB/wPfAf8B3gHgAeIB/wHeAd8B5AH/Ad4B4AHmAf8B3gHh 454 | AeYB/wHeAeIB5wH/Ad4B4wHmAf8B3wHkAecB/wHfAeQB5wH/Ad4B4QHlAf//AP8A/wDDAAH8AfsB9wH/ 455 | AfgB+gH2Af8B9gH4AfYB/wP3Af8D9wH/A/cB/wP3Af8B9gL1Af8B+AH2AfUB/wH4AfUB9AH/AfgC9AH/ 456 | AfcB9QH0Af8B9wHzAfEB/wH3AfIB8AH/AfcB8gHvAf8B9AHyAe4B/wHxAfIB7gH/AvIB7wH/AfQB8gHv 457 | Af8B9QHyAe8B/wH2AfMB7wH/AfgB8wHvAf8B2AHgAegB/wGYAbAB0gH/AYUBngHDAf8BZQGIAbMB/wFV 458 | AWkBpQH/AU4BYgGfAf8BTQFhAZ4B/wFIAV0BmQH/AUgBXAGaAf8BUAFjAaMB/wFnAYcBuwH/AYMBlQHL 459 | Af8BgQGSAcYB/wFAAVIBkgH/AT4BTQGNAf8BRAFVAZEB/wE6AU8BjQH/ATwBTgGTAf8BQwFVAZwB/wFK 460 | AVsBoQH/AVIBYgGpAf8BTwFdAaUB/wFRAWMBqgH/AVYBaAGwAf8BVgFoAbEB/wFOAWQBrAH/AVABZwGv 461 | Af8BVgFtAbkB/wFTAWkBtAH/AV8BgQHAAf8BZwGLAccB/wFvAZIBygH/AYUBmgHOAf8BiwGfAdAB/wHC 462 | AckB3wH/AekB6wHpAf8B6AHrAeUB/wHmAekB5gH/A+cB/wHnAeYB5wH/AeYB5AHoAf8B5AHjAegB/wHf 463 | AeQB5wH/Ad8B4gHkAf8C3wHgAf8D3wH/Ad4B4AHkAf8B3QHfAeYB/wHdAd8B5QH/Ad4B4AHkAf8B3gHg 464 | AeUB/wHdAeAB5QH/Ad4B4gHmAf8B3wHjAecB/wHgAeMB5wH/AeAB4wHnAf8B4AHjAegB/wHfAeEB5QH/ 465 | /wD/AP8AwwAB/wH6AfcB/wH+AfoB9wH/Af0B+gH3Af8B+AH5AfcB/wL4AfcB/wP3Af8D9wH/A/cB/wH4 466 | AvcB/wH4AvcB/wH3AvYB/wP3Af8B9wH0AfEB/wH3AfIB7wH/AfcB8gHvAf8B9wHyAe8B/wH4AfIB7wH/ 467 | AfgB8gHvAf8B9gHzAe8B/wH2AfIB7wH/AfgB8wHuAf8B4QHjAesB/wGoAbkB1gH/AYsBpAHIAf8BgwGc 468 | AcAB/wFuAZABvgH/AWUBhgG4Af8BZQGEAbkB/wFkAYMBugH/AV8BgAG3Af8BVgFqAa4B/wFQAWEBpgH/ 469 | AVQBZQGpAf8BaQGHAb8B/wFNAV4BpAH/ATQBRgGGAf8BIwEyAWIB/wEyAUMBggH/AUkBWgGgAf8BSwFc 470 | AaYB/wFJAVwBpQH/AToBSgGPAf8BLQE7AYAB/wE0AUMBjgH/AU8BXwGuAf8BRwFZAaMB/wFFAVgBoAH/ 471 | AUsBZAGtAf8BWwGBAcAB/wFgAYMBwQH/AWQBhgHEAf8BaAGIAcYB/wFvAY0BywH/AYYBlQHOAf8BhwGa 472 | Ac4B/wGJAZ0BzwH/AbkBwgHbAf8B7ALrAf8B6AHrAeYB/wHnAeoB5wH/AucB6AH/AecB5gHnAf8B5gHl 473 | AecB/wHmAeQB6AH/AeEB5AHnAf8B3gHkAeYB/wPfAf8D3wH/Ad8B4AHjAf8B3QHfAeYB/wHcAd4B6AH/ 474 | Ad0B3wHnAf8B3QHfAecB/wHeAeAB5QH/Ad8B5AHnAf8B3wHjAeYB/wHfAeQB5wH/AeEB5AHnAf8B4AHk 475 | AeYB/wHeAeEB5gH//wD/AP8AwwAB/wH8AfoC/wH6AfcC/wH6AfcB/wH7AfoB9wH/AvkB9wH/AfgB+QH4 476 | Af8B9gL3Af8D9wH/A/cB/wP3Af8B9gL3Af8D9wH/AvcB8wH/AfcB9QHyAf8B+AHyAe8B/wH3AfIB7wH/ 477 | AfcB8gHwAf8B8wHyAe8B/wH0AfMB7wH/AfcB8gHvAf8B9wHzAfEB/wG1AcMB6gH/AaUBuQHiAf8BiAGg 478 | AcQB/wGJAaEBxwH/AYYBmwHLAf8BgQGSAcsB/wFyAY8BygH/AYMBkwHNAf8BgAGTAcwB/wFlAYQBvgH/ 479 | AVoBawGyAf8BTQFeAaQB/wFiAYABugH/AYcBmAHWAf8BgAGUAdAB/wFlAYgBwwH/AWQBhwHBAf8BZgGD 480 | AcQB/wFgAXABvwH/AVgBaQG7Af8BWAFpAboB/wFZAWoBtwH/AWkBgwHIAf8BgAGOAdYB/wFJAVkBpgH/ 481 | AUEBUgGdAf8BWgFvAboB/wFlAYkBxwH/AWoBiwHKAf8BbAGMAcsB/wFxAY8BzgH/AXEBjwHOAf8BhwGY 482 | AdIB/wGKAZsB0QH/AYcBmwHOAf8BlAGkAdEB/wG5AcAB3gH/AeoB7AHpAf8B5wHqAekB/wHnAegB6QH/ 483 | A+cB/wHnAeYB6AH/AeYB5QHnAf8B4wHkAecB/wHfAeMB5wH/At8B4AH/A98B/wHgAt8B/wHeAeAB4gH/ 484 | Ad0B4QHlAf8B3QHfAeYB/wHdAeAB5QH/Ad8B4gHmAf8B3wHjAecB/wHfAeQB5wH/Ad4B5AHnAf8B3wHk 485 | AecB/wHfAeMB6AH/Ad4B4QHmAf//AP8A/wDDAAH/AfsB+gL/AfoB9wL/AfoB+AL/AfoB9wH/Af4B+gH3 486 | Af8B/QH6AfcB/wL6AfgB/wH3AfgB9wH/AfcB+AH3Af8B9wH4AfcB/wP4Af8D9wH/AfcB9gH3Af8D9wH/ 487 | AfgB8wHxAf8B+AHyAe8B/wH2AfIB8AH/AfcB8gHvAf8B9wHyAe8B/wH2AfMB7wH/AfcB9AHwAf8BuQHL 488 | AfMB/wGlAbsB4AH/AYsBpgHJAf8BlQGuAdgB/wGRAacB3QH/AY8BogHdAf8BkAGiAd4B/wGLAZ0B1wH/ 489 | AYYBlwHRAf8BgwGUAc0B/wFlAYMBvAH/AVwBbAGzAf8BWgFqAbMB/wGjAbMB7gH/AbEBwgH7Af8BoAGz 490 | AfIB/wGYAa0B7AH/AZoBqgHmAf8BhgGWAdwB/wFwAY0B0QH/AYABkgHUAf8BgQGSAdQB/wGDAZAB1wH/ 491 | AW0BiQHOAf8BSAFaAacB/wFZAW0BuAH/AWYBiQHHAf8BbQGRAc8B/wGAAZEB0wH/AYMBlAHVAf8BgwGU 492 | AdQB/wGFAZYB1AH/AYoBmwHWAf8BiAGaAdIB/wGGAZsBzwH/AYoBmgHRAf8BcAGLAcgB/wHhAeYB6gH/ 493 | AeYB6wHsAf8B6AHrAekB/wHnAugB/wHmAucB/wHoAeYB5wH/AuQB5gH/AeIB5AHnAf8B4AHjAeYB/wHf 494 | AeIB4wH/AeEB4gHjAf8B3gHhAeMB/wHeAeMB5AH/Ad8B4wHnAf8B3wHjAecB/wHfAeMB5wH/Ad8B5AHn 495 | Af8B3wHkAecB/wHfAeQB5wH/Ad8B5AHnAf8B3wHkAecB/wHdAeAB5QH//wD/AP8AwwAB/QH8AfgC/wH+ 496 | Af0C/wH7AfgB/wH+AfsB9wH/Af4B+wH3Af8B/gH7AfYB/wH+AfoB9wH/AfgB+gH3Af8B9wH6AfgB/wH3 497 | AfkB9wH/A/cB/wH3AfgB9wH/AfgC9wH/AfUC9wH/AvcB9gH/AfYB9AHyAf8B9wHzAe8B/wH3AfIB7wH/ 498 | AfcB8gHvAf8B9gHyAe8B/wH1AfMB8gH/AbkByAHxAf8BpAG8AeMB/wGVAbEB2gH/AZgBswHiAf8BmgGy 499 | AecB/wGaAbAB5gH/AZcBqwHfAf8BjwGhAdMB/wFxAZABxwH/AXIBkQHJAf8BaQGIAcAB/wFfAXEBtQH/ 500 | AVcBaQGvAf8BbgGNAcMB/wGsAbwB8wH/AawBvgH4Af8BvwHNAfsB/wG4AcQB9AH/AZMBogHrAf8BiQGZ 501 | Ad4B/wFuAYwBzgH/AWABcQHAAf8BZwGFAcYB/wFUAWQBsQH/AVYBagG3Af8BagGMAcsB/wFvAY8BzQH/ 502 | AYEBlAHTAf8BcQGSAdMB/wFyAZQB1AH/AXIBkgHTAf8BhAGUAdMB/wGGAZQB0QH/AYoBmgHUAf8BiAGb 503 | AdIB/wGHAZcBzQH/AWgBgwHCAf8B5QHnAe0B/wHoAesB7gH/AecB6gHtAf8B5gHqAewB/wPnAf8D5wH/ 504 | AecB5QHnAf8B6AHjAegB/wHkAeMB6AH/AeAB5AHnAf8B3wHkAeYB/wHfAeQB5gH/Ad8B5AHnAf8B3wHk 505 | AecB/wHfAeQB5wH/Ad8B5AHnAf8B3wHkAecB/wHfAeQB5wH/Ad8B5AHnAf8B3wHkAecB/wHfAeMB6AH/ 506 | Ad0B3wHmAf//AP8A/wDDAAn/Af4B/AL/AfoB9wH/Af4B+wH4Av8B+gH4Av8B+wH3Af8B/QH6AfcB/wH9 507 | AfoB9wH/AfwB+gH3Af8C+AH3Af8B9wH4AfYB/wP3Af8D9wH/AfYC9wH/AvcB9gH/AfgB9AHwAf8B9wHy 508 | Ae8B/wH3AfIB7wH/AfYB9AHwAf8B3wHiAe4B/wGRAaQB3AH/AZ8BtgHiAf8BmAG2AeEB/wGdAbYB5gH/ 509 | AZsBswHmAf8BngG0AeQB/wFyAY8BwQH/AV8BcQGvAf8BYgGDAbcB/wFpAYoBvwH/AWcBiAG+Af8BaQGJ 510 | Ab8B/wFhAYMBtwH/AWsBjQG+Af8BiAGdAdEB/wGkAbsB8gH/AcwB2QH6Af8BwgHMAfgB/wGYAacB7wH/ 511 | AYYBlgHcAf8BaAGHAcgB/wFZAWsBuAH/AVcBZwG0Af8BWAFnAbMB/wFbAW8BugH/AWUBhgHFAf8BaAGJ 512 | AcgB/wFoAYkByQH/AWgBigHKAf8BZQGHAckB/wFpAYkBygH/AWwBigHJAf8BggGRAc8B/wGIAZgB0wH/ 513 | AYcBmAHQAf8BhgGWAcwB/wFrAYUBwQH/AuwB7QH/Ae0B7AHvAf8C6wHvAf8B5wHrAe4B/wHnAugB/wPn 514 | Af8C5gHnAf8B5QHjAegB/wHnAeMB6AH/AeYB4wHoAf8B5AHjAegB/wLjAegB/wHiAeMB6AH/Ad4B5AHn 515 | Af8B3wHkAecB/wHfAeQB5wH/Ad8B5AHnAf8B3wHkAecB/wHfAeQB5wH/Ad8B5AHnAf8B3gHjAecB/wHd 516 | Ad8B5wH//wD/AP8AwwAM/wH+Af0B/AH/Af4B+gH3Av8B+gH4Af8B/gH9AfwC/wH7AfkC/wH6AfcB/wH+ 517 | AfoB9wH/AfkB+gH1Af8C+AH3Af8D9wH/A/cB/wP3Af8D9wH/AfcB9QH0Af8B+AH1AfEB/wH4AfIB7wH/ 518 | AfYB9QHxAf8BzgHWAe8B/wGUAagB4wH/AZgBrgHfAf8BmgG2AeQB/wGgAboB6gH/AY8BpAHNAf8BZgGF 519 | AaMB/wFXAWQBjQH/AVwBawGSAf8BZgGCAZsB/wFoAYQBngH/AWkBhQGgAf8BbwGMAaYB/wFqAYcBpAH/ 520 | AWkBhAGkAf8BWgFsAZ0B/wGIAZ8B0QH/Ab0BzgH2Af8BvAHKAfkB/wGbAaoB8gH/AYMBkwHZAf8BYAFy 521 | AcEB/wFXAWkBtgH/AVMBZAGoAf8BRwFZAZoB/wFLAVsBnQH/AVABYQGiAf8BVwFqAawB/wFcAXIBtgH/ 522 | AWIBggG9Af8BYgGFAb8B/wFlAYcBxAH/AWsBiwHIAf8BcgGPAcwB/wGFAZUB0AH/AYcBmAHQAf8BgQGR 523 | Ac0B/wFaAWcBwAH/Ad0B3wHqAf8B7wHuAe8B/wHvAewB8AH/AegB6wHuAf8B5gHnAegB/wPnAf8D5wH/ 524 | AecB5gHnAf8B5gHkAegB/wHnAeMB6AH/AecB4wHoAf8B5wHjAegB/wHmAeMB6AH/AeIB5AHoAf8B3wHk 525 | AecB/wHfAeQB5wH/Ad8B5AHnAf8B3wHkAecB/wHfAeQB5wH/Ad8B5AHnAf8B3QHhAecB/wHdAd8B5wH/ 526 | /wD/AP8AwwAQ/wH+Av0B/wH+Av0G/wH8AfoC/wH6AfcC/wH6AfcB/wH8AfoB9wH/AfYC9wH/AfcB+AH3 527 | Af8D9wH/A/cB/wP3Af8D9wH/AfgB9wH2Af8B+AL1Af8B9gH3AfMB/wHJAdEB6gH/AYsBmwHcAf8BiAGd 528 | AdAB/wGbAbkB6AH/AYwBpQHMAf8BXAFtAZUB/wGKAZ0BxQH/AYcBmgHEAf8BkgGoAdMB/wGGAZ0BzAH/ 529 | AYEBlwHGAf8BhwGbAcsB/wGNAZ0BywH/AZQBpwHOAf8BpgG1AdgB/wGoAbYB1QH/AVIBZAGQAf8BkQGj 530 | AdkB/wG0AcMB9wH/AZEBogHqAf8BZgGFAcsB/wFMAWEBpwH/ATQBRAFuAf8BOwFLAXAB/wFIAVkBigH/ 531 | AVUBagGgAf8BXgGCAasB/wFiAYUBsAH/AV0BcQGmAf8BUwFmAZcB/wFQAWEBkQH/AUwBXQGOAf8BRgFX 532 | AY4B/wFhAXABsAH/AXEBkAHMAf8BhQGVAc4B/wFlAYMBvwH/AVwBbAHDAf8B2QHbAecB/wPvAf8C7gHv 533 | Af8B6QHsAe0B/wHnAekB6gH/AeYC6AH/A+cB/wPnAf8C5gHoAf8B5gHlAecB/wHmAeMB6AH/AecB4wHo 534 | Af8B5wHjAegB/wHmAeMB6AH/AeAB4wHnAf8B3wHkAecB/wHfAeQB5wH/Ad8B4wHnAf8B3wHjAecB/wHe 535 | AeEB5gH/Ad0B3wHnAf8B3QHfAecB//8A/wD/AMMAHf8B/gH9Af8B/gH8AfkC/wH6AfcB/wH+AfsB9wH/ 536 | AvoB9wH/AfgB+QH3Af8D9wH/A/cB/wP3Af8D9wH/A/cB/wP3Af8B+QH4AfQB/wGyAboB4AH/AYsBmgHb 537 | Af8BiAGeAdAB/wGhAbwB5wH/AWEBggGiAf8BjQGmAc8B/wFgAYQBsgH/AYkBoAHOAf8BmAGuAdwB/wGE 538 | AZkBxwH/AXABkwG/Af8BZgGJAbIB/wFwAZEBugH/AZsBrgHUAf8BrwG/AeIB/wGsAb0B5wH/AYABlQHA 539 | Af8BTgFfAZkB/wGsAb4B8QH/AYkBnwHkAf8BXwGEAcMB/wE/AVIBkAH/ATIBQgFlAf8BSAFgAZ4B/wFZ 540 | AW8BrQH/AWEBhAGzAf8BXwGEAbEB/wFjAYYBtgH/AWgBiwG5Af8BaAGMAb0B/wFrAZIBwgH/AWUBjQG+ 541 | Af8BbAGNAb8B/wFqAYYBogH/AV0BbQGrAf8BhAGVAc4B/wFnAYQBwgH/AVgBZAG9Af8B5wHoAe4B/wPv 542 | Af8D7wH/AuwB7gH/AecB6wHtAf8B5wHpAeoB/wPnAf8D5wH/A+cB/wLmAecB/wHmAeMB6AH/AecB4wHo 543 | Af8B5gHjAegB/wHhAeMB5wH/Ad8B5AHnAf8B3wHkAecB/wHfAeQB5wH/Ad4B4wHmAf8B3wHhAegB/wHd 544 | AeAB5gH/Ad0B3wHnAf8B3AHeAeYB//8A/wD/AMMAHf8B/gP/Av4C/wH7AfgC/wH6AfcB/wH9AfoB9wH/ 545 | AvoB9wH/AfcB+QH3Af8D9wH/A/cB/wP3Af8D9wH/A/cB/wL4AfUB/wGWAaIB1QH/AYMBlQHXAf8BjwGl 546 | AdcB/wGlAb8B5wH/AV8BggGeAf8BggGYAcQB/wFtAY4BvAH/AaEBtgHkAf8BhwGeAc4B/wFVAW0BqAH/ 547 | AUsBXQGXAf8BRQFWAY0B/wFHAVkBjAH/AVUBZwGYAf8BgQGXAbgB/wGbAbAB0wH/AZQBrQHUAf8BRQFW 548 | AYkB/wFyAZYBygH/AWoBigHKAf8BSgFiAaoB/wE2AUcBcAH/ATkBTgGGAf8BTAFiAZsB/wFXAWwBpgH/ 549 | AVEBYQGcAf8BSQFaAZcB/wFKAV0BmgH/AU4BYAGfAf8BUgFmAaMB/wFbAXABrQH/AV4BcAGuAf8BYgGD 550 | AbMB/wFoAYgBtgH/AUsBWwGMAf8BgAGUAcgB/wFqAYcBxwH/AVYBYgG+Af8B6gHrAfAB/wPvAf8D7wH/ 551 | AewB6wHwAf8B5gHrAe0B/wHoAeoB6wH/AucB6AH/A+cB/wPnAf8D5wH/AecB5QHnAf8B5gHjAecB/wLk 552 | AegB/wHfAeQB5wH/Ad8B5AHnAf8B3wHjAeYB/wHfAeMB5wH/Ad0B4AHnAf8B3QHfAecB/wHdAd8B5wH/ 553 | Ad0B3wHnAf8B3QHfAecB//8A/wD/AMMAJf8B/QH8Av8B+gH5Av8B+gH3Af8B/gH6AfcB/wH5AfoB9gH/ 554 | A/cB/wP3Af8D9wH/A/cB/wP2Af8B9wH4AfYB/wGHAZUB0AH/AWQBhAHCAf8BiQGhAcwB/wGPAagBxQH/ 555 | AV4BcgGWAf8BagGPAbgB/wGXAbMB2wH/AZYBsgHcAf8BjAGlAc4B/wGPAaQBygH/AWsBiQGtAf8BTQFg 556 | AZIB/wE7AU0BggH/ATgBTAFtAf8BQgFWAYQB/wFiAYYBpQH/AXIBmQG6Af8BOQFIAWEB/wFwAZIBxAH/ 557 | AVwBbwG6Af8BRQFcAZoB/wE1AUUBZAH/AT8BVAGJAf8BRgFeAZMB/wFUAWYBmgH/AU4BYAGUAf8BTgFf 558 | AZUB/wFQAWUBoQH/AVYBagGkAf8BVgFsAagB/wFVAWoBqAH/AVMBZwGhAf8BVgFqAaYB/wFjAYMBswH/ 559 | AUgBVwGBAf8BggGWAcgB/wFxAZABzgH/AUcBUwGzAf8B4wHmAewB/wPvAf8D7wH/AuwB7gH/AeYB6wHp 560 | Af8B5wHrAegB/wHmAecB6AH/A+cB/wPnAf8D5wH/AecB5gHnAf8B5wHjAecB/wHlAeMB6AH/Ad8B5AHn 561 | Af8B3wHkAecB/wHfAeIB5gH/Ad4B4QHnAf8B3QHfAecB/wHdAd8B5wH/Ad0B3wHnAf8B3QHfAecB/wHc 562 | Ad4B5wH//wD/AP8AwwAg/wH+A/8B/gP/Av4B/QL/AfsB+AL/AfoB+AH/AfwB+wH3Af8B9wH4AfcB/wP3 563 | Af8D9wH/A/YB/wP3Af8B9QH3AfYB/wFSAWABsgH/AUUBUgGdAf8BbAGHAZ0B/wElATABNQH/AVkBawGR 564 | Af8BkQGqAc8B/wGQAawBzgH/AV0BgAGhAf8BUQFgAYgB/wFTAWABggH/ASoBNAE+Af8BEwEcASUB/wEh 565 | ASwBPAH/AR4BKwFCAf8BKwE6AVgB/wE/AVUBggH/AV0BgwGoAf8BLQE8AU8B/wFhAYYBsAH/AV0BgQG9 566 | Af8BPwFVAZEB/wEqAT0BVQH/AToBUAGDAf8BOwFPAW8B/wEoATYBTwH/ATkBRgFZAf8BJQExAT4B/wEp 567 | ATQBQgH/AT0BTgFqAf8BPgFOAWwB/wE/AU8BcAH/AUwBYAGTAf8BVwFrAaMB/wFoAYkBuAH/AUUBUwFs 568 | Af8BgAGTAcAB/wFiAYABwAH/ATwBQwGnAf8B6gHrAe4B/wPvAf8C7gHvAf8B7QHsAfAB/wHoAesB6QH/ 569 | AecB6gHnAf8B5wHpAegB/wPnAf8D5wH/AecB5gHnAf8B5wHlAecB/wLkAegB/wHeAeQB5wH/Ad4B4wHn 570 | Af8B3gHhAeYB/wHdAd8B5gH/Ad0B3wHnAf8B3QHfAecB/wHdAd8B5wH/Ad0B3wHnAf8B3QHfAecB/wLc 571 | AecB//8A/wD/AMMAKP8C/gH9Av8B+gH3Av8B+gH3Af8B/gH7AfcB/wL5AfYB/wH3AfgB9wH/A/cB/wP3 572 | Af8D9wH/AfUC9wH/AVABXwGxAf8BVQFkAaYB/wFlAW4BggH/AVABXgFwAf8BSQFZAWwB/wGDAZkBsQH/ 573 | AYABlQGyAf8BgQGTAbIB/wFXAWgBkgH/AUgBWQFwAf8BPQFMAV0B/wEyAUEBUgH/ASwBPQFTAf8BMgFE 574 | AWIB/wE5AU0BaQH/AT4BUgFtAf8BPwFUAW4B/wEUARoBHQH/AR8BJgEzAf8BJQEtAUAB/wEeAScBNgH/ 575 | ARoBIAEuAf8BPgFQAXAB/wE2AUoBaQH/ASsBPQFaAf8BIQEyAUYB/wEjATQBQgH/ASwBOwFHAf8BPAFM 576 | AWIB/wE1AUIBXwH/AUIBUwGBAf8BXAFyAaUB/wFlAYYBsAH/AWoBigG3Af8BRQFQAV8B/wFQAVgBbwH/ 577 | ATwBSAGQAf8BQQFMAaoB/wHuAe8B8QH/A+8B/wHvAe4B8AH/AuwB7wH/AegB6wHpAf8B5wHrAegB/wHm 578 | AegB5wH/A+cB/wPnAf8B6AHlAecB/wHmAeQB5wH/AeYB4wHoAf8B4AHkAegB/wHfAeMB6AH/Ad4B4AHm 579 | Af8B3gHgAeQB/wHdAd8B5QH/Ad0B3wHnAf8B3QHfAecB/wHdAd8B5wH/Ad0B3gHnAf8B3AHbAeYB//8A 580 | /wD/AMMAKP8C/gH9Av8B+gH3Av8B+gH3Af8B/gH7AfcB/wH5AfoB9gH/AfgB+QH2Af8D9wH/A/cB/wP3 581 | Af8B9gH4AfYB/wHBAc4B6AH/AZUBpwHHAf8BNQFGAVMB/wGYAbcB4QH/AZUBrwHVAf8BhgGbAbYB/wFq 582 | AYUBmQH/AWcBhAGaAf8BYAFtAZMB/wFXAWMBjAH/AUkBVwFwAf8BOQFLAWQB/wExAUIBWwH/AS4BPQFV 583 | Af8BKgE5AVUB/wErATwBXAH/ATcBSAFoAf8BTgFhAZgB/wFiAYIBsAH/AVMBZAGeAf8BRgFZAZAB/wE2 584 | AUYBZwH/ASMBNgFPAf8BJgE1AUsB/wEnATcBTQH/AS4BPwFXAf8BOwFOAWcB/wFBAVYBcQH/AU0BYQGO 585 | Af8BVAFlAZgB/wFeAW8BogH/AV4BcAGhAf8BXwFvAZ0B/wFfAWwBmAH/AToBRAFSAf8BNgFAAU8B/wFQ 586 | AV0BnQH/AWABaAG2Af8B8AHuAfAB/wPvAf8B7gHtAe8B/wHrAewB7wH/AegB6wHoAf8B5gHqAecB/wHm 587 | AegB5gH/A+cB/wPnAf8B5wHkAeYB/wHnAeMB5wH/AeMB5AHoAf8B3wHjAeYB/wHdAd8B5gH/Ad0B3wHm 588 | Af8C3wHiAf8C3gHjAf8B3QHfAecB/wHdAd8B5wH/Ad0B3wHnAf8B2wHcAeYB/wHZAdsB4wH//wD/AP8A 589 | wwAo/wL+Af0C/wH6AfcC/wH6AfcC/wH6AfcB/wL6AfcB/wH3AfkB9wH/AfYB+AH3Af8D9wH/A/cB/wL5 590 | AfQB/wHGAckBwwH/AVABVQFTAf8BKQEzATsB/wGbAbkB4AH/AZcBtgHcAf8BiQGkAcgB/wGAAZYBtgH/ 591 | AY0BpQHHAf8BoQG1AdsB/wGtAb0B5wH/AaABtAHbAf8BhQGcAckB/wFgAYMBrwH/AUoBXgGTAf8BPgFS 592 | AYYB/wE9AVABhwH/AUEBVAGNAf8BVAFpAagB/wFjAYQBuQH/AV4BcQGzAf8BUgFkAaUB/wFEAVkBkwH/ 593 | AToBTwGBAf8BNwFMAW8B/wE9AVEBgQH/AUkBXAGNAf8BVAFpAZoB/wFSAWkBmgH/AVEBYwGSAf8BSAFX 594 | AYcB/wFAAUsBawH/AT0BSAFiAf8BPQFJAWIB/wFNAVoBiQH/AVsBbwGnAf8BNQFFAWEB/wFKAVUBgAH/ 595 | AcIBxgHaAf8B7gLvAf8B8ALvAf8B7QHsAfAB/wHnAesB6gH/AecB6wHnAf8B6AHpAegB/wPnAf8D5wH/ 596 | AecB5QHnAf8B4wHkAecB/wHiAeQB5wH/AeAB4wHmAf8B3gHhAeYB/wHeAd8B5AH/At8B4gH/A98B/wLf 597 | AeEB/wLeAeQB/wLdAeYB/wHeAd0B5gH/AdwB2wHlAf8B2AHbAd8B//8A/wD/AMMAKP8C/gH9Av8B+gH3 598 | Av8B+gH3Af8B/gH7AfcC/wH6AfcB/wH5AfoB9gH/AfcB+QH3Af8D9wH/AfcB+AH2Af8B7gHvAekB/wGD 599 | AYUBgQH/AS4BMgEwAf8BMQE7AT8B/wGPAa0BzwH/AZkBuQHeAf8BhwGhAcQB/wFlAYcBngH/AWcBhwGf 600 | Af8BhgGXAbYB/wGXAaUBxQH/AY0BngG/Af8BYwGDAaUB/wFHAVkBhQH/ATYBSAFkAf8BNwFKAWkB/wFA 601 | AVIBgwH/AUYBWQGOAf8BVgFrAasB/wFhAYMBuQH/AWQBgwG7Af8BXgFvAbQB/wFLAV8BmgH/ATkBTAFt 602 | Af8BMAFDAVwB/wEnATYBTAH/ATABQAFZAf8BQQFQAW0B/wFMAV4BjAH/AVABYgGQAf8BSQFaAYkB/wFH 603 | AVYBggH/AUsBWQGEAf8BVwFpAZ0B/wFtAY4BvQH/AXABkgHBAf8BMwFAAVUB/wE6AT4BQQH/AcUBxgHH 604 | Af8B7gHtAe8B/wHwAe4B7wH/AesB7AHwAf8B5gHrAegB/wHnAeoB5wH/A+cB/wPnAf8B5gLnAf8B4QLm 605 | Af8B3wHkAecB/wHeAeMB5wH/Ad4B4QHmAf8B3gHgAeYB/wLfAeAB/wHgAt8B/wHeAt8B/wPeAf8C3gHh 606 | Af8B3AHbAecB/wHcAdsB5gH/AdYB2wHfAf8B1gHbAd0B//8A/wD/AMMALP8B/gH7AfcC/wH6AfcC/wH6 607 | AfcC/wH6AfgB/wH+AfoB9wH/AfcB+QH3Af8B9wH2AfcB/wH3AfoB9gH/AdoB3QHWAf8BTAFQAUwB/wEo 608 | AS0BKwH/ASwBNgE6Af8BgQGdAbsB/wGVAbcB3wH/AZoBtQHdAf8BhQGbAbQB/wFiAXEBkwH/AVoBagGJ 609 | Af8BVwFmAYUB/wE/AUsBWQH/ATEBOwFJAf8BKQEzAUMB/wElATEBQgH/ATcBRgFcAf8BTAFeAY0B/wFd 610 | AW4BrQH/AWIBgAG5Af8BZgGGAcAB/wFsAYsBxQH/AXABkAHJAf8BYwGCAbgB/wFMAV8BkwH/AT0BTQFn 611 | Af8BLAE3AUoB/wEgASoBNwH/ARoBIwEwAf8BJAEvAT4B/wEvAT0BTgH/ATIBQgFUAf8BQgFPAWgB/wFT 612 | AWUBlAH/AWYBiAG1Af8BcAGRAcQB/wFxAZEBxAH/ATABPAFQAf8BGAEgASQB/wFyAYQBhgH/AeUB5wHl 613 | Af8B7wHsAe8B/wHqAewB7gH/AecB6wHoAf8B5wHpAecB/wLnAegB/wHnAeYB6AH/AuQB6AH/Ad4B5AHn 614 | Af8B3wHkAeYB/wHeAeIB5gH/Ad0B4AHnAf8B3QHfAeQB/wHdAt8B/wLeAd8B/wHbAd0B3wH/AdsB3AHf 615 | Af8C3QHiAf8B2gHbAeQB/wHaAdsB5AH/AdYB2wHfAf8B1gHbAd4B//8A/wD/AMMALf8B/QH8Av8B+gH3 616 | Av8B+gH3Av8B+gH4Av8B+gH3Af8C+QH3Af8D9wH/AfcB+QH3Af8BvAG+AboB/wE2AToBNgH/ASYBKwEq 617 | Af8BLgE3ATsB/wFgAYcBoAH/AZQBsgHeAf8BlwG0AeIB/wGWAbIB2AH/AYkBngG5Af8BXwFwAYwB/wFO 618 | AVwBaAH/AUABSgFUAf8BPwFJAVcB/wFHAVEBZAH/AUkBVQFtAf8BYAFtAZwB/wFnAYcBtwH/AWkBiwHF 619 | Af8BawGOAcsB/wFvAZABzQH/AYYBmAHTAf8BjAGeAdgB/wFvAY4BywH/AWkBiQG/Af8BaAGGAbEB/wFZ 620 | AWYBlAH/AVEBWwGBAf8BRwFSAWUB/wFBAU0BYAH/AUEBTgFiAf8BQAFOAWQB/wFOAVwBiQH/AWABgwGw 621 | Af8BbAGOAcMB/wGAAZMByAH/AW0BjwG+Af8BJwE0AUMB/wEWARsBHwH/AUMBSQFKAf8B2gHbAdoB/wHu 622 | Ae0B7wH/AegB6wHqAf8B5gHpAegB/wHmAucB/wHlAeYB5wH/AeMB5QHnAf8B4gHkAegB/wHfAeQB5gH/ 623 | Ad8B5AHnAf8B3gHhAecB/wHdAd4B5QH/Ad4C3wH/Ad0B3gHfAf8B2gHeAd8B/wHXAdwB3gH/AdcB2wHe 624 | Af8B1wHbAd8B/wHXAdsB4AH/AdcB2wHfAf8B1gHbAd4B/wHWAdkB3gH//wD/AP8AwwAs/wL+A/8B+gH5 625 | Av8B+gH4Av8B+gH4Av8B+gH3Af8B+wH5AfcB/wH3AfgB9wH/AfcB+AH3Af8BxQHGAcMB/wE7AT8BPQH/ 626 | ARwBIAEhAf8BIwErAS4B/wFFAVoBaQH/AY8BrAHTAf8BlQG1AeEB/wGWAbgB5gH/AZYBswHcAf8BhgGb 627 | AbcB/wGBAZEBpwH/AY4BnAGzAf8BigGYAbMB/wGNAZoBugH/AY4BnQHEAf8BjgGgAdMB/wGAAZYB0gH/ 628 | AW8BkwHQAf8BbwGQAc4B/wGBAZkB0AH/AZEBpwHbAf8BmwGwAeYB/wGQAaQB3wH/AXEBlgHQAf8BbwGR 629 | AcoB/wGCAZIByQH/AYMBkwHEAf8BcAGPAbgB/wFsAYkBsAH/AWwBhwGtAf8BYwGCAagB/wFkAYYBtQH/ 630 | AWoBjQHDAf8BbgGSAcYB/wFsAZEBxAH/AWABhgGzAf8BHgEnATQB/wERARUBGQH/ATYBOwE8Af8B3ALd 631 | Af8B6QHrAewB/wHnAesB5wH/AeYB6AHnAf8B5gLnAf8B4gHmAecB/wHeAeUB5wH/Ad4B5AHmAf8B3gHj 632 | AeIB/wHdAeIB5gH/Ad4B3wHjAf8C3wHjAf8C3gHfAf8C3gHgAf8B1wHbAd4B/wHXAdsB3gH/AdcB2wHe 633 | Af8B1wHbAd8B/wHWAdsB3gH/AdYB2wHeAf8B1gHaAd4B/wHVAdgB3wH//wD/AP8AwwAw/wL9AfwB/wH8 634 | Af0B+AH/AfsB/QH3Af8B+wH8AfcB/wH5AfoB9wH/AfcB+QH2Af8C+AH3Af8CuwG3Af8BJQErASkB/wET 635 | ARgBGgH/ARUBHgEjAf8BMwFEAU4B/wGEAaMByAH/AZMBtAHhAf8BlAG1AeMB/wGVAbYB5gH/AaEBvwHo 636 | Af8BvAHRAfAB/wHRAd4B8wH/AcEB0QHyAf8BtQHCAesB/wGhAbUB5wH/AY0BpQHeAf8BcQGXAdUB/wGB 637 | AZcB1AH/AYMBmQHTAf8BhQGdAdQB/wGTAakB3QH/AZoBrwHlAf8BlQGrAeIB/wGMAaQB3gH/AYABmAHX 638 | Af8BgwGYAdYB/wGBAZcB0wH/AXABlAHOAf8BcgGWAcoB/wGAAZUByQH/AWkBkAHGAf8BZgGNAcMB/wFr 639 | AY8BxgH/AW0BkgHHAf8BZAGKAb0B/wFKAVwBjQH/ARUBHAElAf8BEQEWARgB/wFEAUkBSgH/AdYB1wHW 640 | Af8B6ALrAf8B5wHrAecB/wHnAegB5wH/AeUC5wH/AeAB5gHnAf8B3gHlAecB/wHeAeMB5AH/Ad0B4wHe 641 | Af8B3QHgAeQB/wLfAeIB/wHfAd4B4AH/A94B/wHaAd0B3gH/AdcB3AHeAf8B1gHbAd4B/wHWAdsB3gH/ 642 | AdYB2wHeAf8B1gHbAd4B/wHWAdsB3gH/AdYB2gHfAf8B1QHXAd8B//8A/wD/AMMAKP8B/gP/Af4D/wH9 643 | Av4B/wH8Af8B9wH/Af0B/wH3Af8B/gH/AfgB/wH4AfwB9wH/AfcB+gH2Af8B+AH5AfcB/wKwAa0B/wEe 644 | ASQBIgH/AQ4BEgEUAf8BEgEZAR0B/wEoATgBQQH/AW8BmgG+Af8BkQGzAeEB/wGUAbcB5gH/AZQBuQHn 645 | Af8BlgG3AeUB/wGpAcYB7QH/AbgB0AHzAf8BvwHUAfcB/wG1AcoB9AH/AZoBsQHnAf8BigGiAd4B/wGC 646 | AZsB2gH/AYIBmgHVAf8BgwGaAdIB/wGDAZsB0QH/AYkBoQHVAf8BjgGmAdwB/wGJAaAB2QH/AYkBnwHb 647 | Af8BbgGVAdQB/wFrAZMB0QH/AWoBkwHRAf8BZgGRAc0B/wFmAZIBygH/AWUBjwHHAf8BZgGOAccB/wFl 648 | AY8BxgH/AWcBkAHGAf8BagGQAccB/wFbAXIBsAH/ATYBRQFZAf8BDgEXAR4B/wEJAQ4BEQH/AS4CNAH/ 649 | AdUB1gHVAf8B5wHrAegB/wHnAeoB5gH/AucB5gH/AeMC5wH/Ad8B5QHnAf8B3wHjAecB/wHdAuIB/wHc 650 | AeMB3gH/At8B5AH/At8B4QH/A98B/wHdAd4B3wH/AdgC3QH/AdYB2wHeAf8B1QHaAd4B/wHWAdoB3gH/ 651 | AdYB2wHeAf8B1gHbAd4B/wHWAdsB3gH/AdQB2AHeAf8B1QHXAd8B//8A/wD/AMMAMv8B/gP/AfgD/wH3 652 | Af8B/QH+AfcB/wH3AfsB9gH/AvoB9gH/AfgB+gH3Af8CswGxAf8BGAIdAf8BCwEQAREB/wEJAQ4BEgH/ 653 | AR8BLAE1Af8BYwGLAasB/wGKAa0B2gH/AZIBtAHiAf8BlAG2AeQB/wGUAbYB5AH/AZ0BvAHpAf8BpwHD 654 | Ae4B/wGqAcMB7QH/AaIBuQHpAf8BjQGoAd4B/wGHAZ8B2gH/AYIBmgHVAf8BhAGaAdQB/wGGAZ0B0wH/ 655 | AYUBnAHQAf8BhwGgAdMB/wGIAaAB1gH/AYEBmQHSAf8BgwGbAdcB/wFrAZIB0QH/AWUBjgHOAf8BYwGM 656 | AcwB/wFhAYsByQH/AWIBjAHKAf8BXwGLAcYB/wFkAYwBxQH/AWYBjgHGAf8BZAGPAcMB/wFiAYsBwQH/ 657 | AU8BZwGeAf8BKgE4AUkB/wEOARQBGgH/AQUBCgEOAf8BQQJGAf8B3gHgAd8B/wHnAeoB6AH/AegB6QHm 658 | Af8B5QHnAegB/wHdAeYB5wH/Ad4B5AHmAf8B3wHkAecB/wHeAeMB4gH/Ad0B4gHfAf8B3gHfAeMB/wHd 659 | At8B/wPfAf8B2wHeAd8B/wHXAdwB3gH/AdYB2gHeAf8B1gHaAd4B/wHWAdoB3gH/AdUB2QHeAf8B1gHa 660 | Ad4B/wHVAdoB3gH/AdUB2AHfAf8B1QHXAd8B//8A/wD/AMMAMv8B/gP/AfwD/wH2Af8B/QH+AfcB/wH4 661 | AfsB9gH/Af0B+gH2Af8C9wH1Af8CwAG/Af8BFwIcAf8BBQEMAQoB/wEIAg0B/wEQARsBHgH/AUsBYwGJ 662 | Af8BggGmAdAB/wGMAa4B2wH/AYkBqwHZAf8BjQGvAd0B/wGaAbgB5wH/AaABtwHnAf8BogG3AecB/wGe 663 | AbQB5QH/AYkBogHYAf8BcgGYAdIB/wGBAZoB0gH/AYQBmwHRAf8BiQGfAdQB/wGGAZwB0AH/AYYBnQHU 664 | Af8BhwGfAdUB/wGCAZwB0gH/AYEBmQHSAf8BbwGXAdIB/wFlAY4BzgH/AWMBjAHMAf8BXwGKAcgB/wFe 665 | AYkBxwH/AV0BiAHBAf8BYgGKAcUB/wFjAYsBxAH/AWIBigHCAf8BXAGDAbsB/wFGAV4BkAH/ASQBMgE/ 666 | Af8BBwEMARAB/wEHAQwBDwH/AVkCXgH/AeQB5wHlAf8B5wHqAecB/wPnAf8B4wLnAf8B3QHlAecB/wHf 667 | AeQB5wH/Ad4B4wHlAf8B3QHjAeAB/wHeAeIB3gH/At4B4AH/At8B3gH/A94B/wHZAd0B3gH/AdYB2wHe 668 | Af8B1gHbAd4B/wHWAdsB3gH/AdUB2gHeAf8B1QHYAd4B/wHVAdcB3wH/AdUB1wHfAf8B1QHXAd8B/wHV 669 | AdcB3wH//wD/AP8AwwA2/wH+Af8B/gH/AfcD/wH4Af8B9gH4AfIB/wHxAfIB7gH/AcgBzAHIAf8BiQGP 670 | AYwB/wEWAhsB/wEGAQ0BDAH/AQYBDQELAf8BCQIRAf8BMQFDAVEB/wFmAZUBvAH/AYABogHPAf8BgQGj 671 | AdIB/wGIAakB1wH/AY8BqwHbAf8BnAGyAeAB/wGfAbMB4wH/AZwBsQHhAf8BiwGiAdYB/wFxAZkB0AH/ 672 | AYIBmwHSAf8BhAGbAdIB/wGJAZ0B0gH/AYIBmgHPAf8BgQGbAdIB/wFyAZkBzwH/AXEBmgHPAf8BgAGa 673 | AdAB/wFxAZgB0QH/AWcBkgHOAf8BYgGLAckB/wFdAYgBxgH/AV4BiAHHAf8BXQGHAcIB/wFeAYYBwAH/ 674 | AV4BiQHAAf8BXAGHAbwB/wFPAWkBpwH/ATUBSQFhAf8BEgEdASUB/wEEAQkBDQH/AQgBDQERAf8BXwFk 675 | AWUB/wHjAecB5gH/AecB6QHnAf8B5gLnAf8B4gLnAf8B3gHlAeYB/wHfAeQB5gH/Ad4B4wHkAf8B3QHi 676 | Ad8B/wHeAeEB3gH/A98B/wHfAeAB3wH/Ad0C3wH/AdkB3QHeAf8B1gHbAd4B/wHWAdsB3gH/AdUB2gHd 677 | Af8B1gHaAd4B/wHVAdgB3wH/AdUB1wHeAf8B1QHXAd4B/wHVAdgB3gH/AdQB2AHfAf//AP8A/wDDADj/ 678 | Af4B/wH6A/8B+AH/AfMB9AHvAf8B1wHaAdQB/wFFAUoBSQH/ATIBOAE3Af8BFQEaARkB/wEAAQQBAQH/ 679 | AQABBQEEAf8BAAIDAf8BEAEZARoB/wFNAWUBjAH/AWUBkwG8Af8BbwGdAccB/wGAAZ4BzAH/AYMBoAHN 680 | Af8BiwGkAdAB/wGOAaMB0gH/AYwBogHRAf8BgQGaAcsB/wFtAZcByAH/AW4BlwHIAf8BcQGXAcgB/wGC 681 | AZgByQH/AXEBmAHMAf8BbQGYAc0B/wFqAZYBywH/AW0BlwHOAf8BbQGXAc8B/wFtAZYBzgH/AWgBkwHL 682 | Af8BZgGQAcsB/wFfAYsBxwH/AV4BiQHFAf8BYAGIAcYB/wFgAYgBwAH/AV4BhQG9Af8BWQGAAbYB/wFD 683 | AVkBjQH/ASEBLgE6Af8BCwETARcB/wEDAQgBCwH/AQsBEAETAf8BjQKSAf8B5AHoAecB/wPnAf8B4QLn 684 | Af8B3wHlAegB/wHfAeQB5wH/Ad4B5QHmAf8B3wHjAeYB/wHdAeEB4wH/Ad4C4AH/A98B/wPfAf8B3QHe 685 | Ad8B/wHYAdsB3gH/AdUB2gHeAf8B1QHZAd4B/wHWAdoB3gH/AdYB2wHeAf8B1QHYAd8B/wHVAdgB3gH/ 686 | AdUB2QHfAf8B1QHYAd4B/wHQAdgB3wH//wD/AP8AwwA6/wH+Af8C/QH8Af8B7QHuAesB/wGpAa4BrAH/ 687 | ASQBKQEqAf8BBAEIAQYB/wEGAQkBCAH/AwAB/wEAAgMB/wEAAgEB/wIAAQIB/wEWASYBLAH/AUoBZgGO 688 | Af8BXgGJAasB/wFiAY0BsgH/AV8BigG0Af8BYgGJAbMB/wFlAYoBtgH/AWoBjwG9Af8BYwGMAboB/wFl 689 | AZABvQH/AWMBjQG8Af8BZwGPAb4B/wFrAZEBwQH/AWgBjwHBAf8BaAGRAccB/wFnAZABxgH/AWcBjwHG 690 | Af8BaQGSAckB/wFmAZIByAH/AWYBkQHIAf8BZQGRAccB/wFiAY8BxwH/AWIBiwHFAf8BYAGIAcAB/wFd 691 | AYUBuwH/AVgBcQG1Af8BUQFnAagB/wExAUQBWgH/AQ8BFwEgAf8BAgEHAQoB/wEBAQYBCQH/ARQBGQEc 692 | Af8BogGnAaYB/wHmAegB5wH/AeUC5wH/Ad8C5wH/Ad0B5AHoAf8B3wHkAecB/wHfAeQB5wH/Ad4B4AHo 693 | Af8B3gHgAeQB/wLfAeAB/wHdAd8B3gH/AdkB3AHfAf8B1wHbAd8B/wHWAdoB3wH/AdUB2QHeAf8B1QHX 694 | Ad4B/wHWAdkB3gH/AdUB2QHeAf8B1QHYAd8B/wHWAdoB3gH/AdUB2gHeAf8B0gHYAd4B/wHPAdYB3gH/ 695 | /wD/AP8AwwA8/wH9Af4B/QH/AfAB8QHtAf8BmgGdAZoB/wEhASYBKAH/AQABAwEBAf8DAAH/AwAB/wMA 696 | Af8DAAH/AwAB/wMAAf8BGQEnAS8B/wE5AVIBaAH/AUMBXgGGAf8BTwFjAZIB/wFUAWoBmwH/AVcBcAGi 697 | Af8BWwGAAagB/wFaAYABqQH/AVsBhAGsAf8BWAGBAasB/wFbAYUBsQH/AVoBhQGzAf8BXgGFAbUB/wFg 698 | AYgBugH/AWIBiwG9Af8BYAGIAboB/wFjAYsBvgH/AWEBigG/Af8BZQGNAcIB/wFkAYwBwgH/AWQBiwG/ 699 | Af8BYAGJAb4B/wFcAYUBvQH/AVgBcQG0Af8BUAFpAacB/wE9AVMBgAH/ARIBHgEnAf8BAAEGAQkB/wEB 700 | AQYBCQH/AQQBCQEMAf8BLAEwATIB/wHCAscB/wHjAegB5wH/Ad4C5wH/Ad0B5gHoAf8B3gHlAegB/wHe 701 | AeQB5wH/Ad4B4gHmAf8B3gHhAeUB/wHdAt8B/wHdAt4B/wHZAdwB3QH/AdcB2gHeAf8B1wHbAeAB/wHW 702 | AdkB3wH/AdUB2AHeAf8B1QHYAd4B/wHWAdoB3gH/AdUB2QHeAf8B1AHYAd4B/wHVAdcB4AH/AdUB1gHg 703 | Af8B0wHYAd4B/wHPAdUB3gH//wD/AP8AwwA8/wP+Af8B+gH7AfYB/wHMAc4ByQH/AUACRQH/AQcBCwEK 704 | Af8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AQwBGAEdAf8BJwE6AUsB/wE2AUoBYgH/AUQBWAGB 705 | Af8BRQFeAYoB/wFKAWIBkAH/AUsBYgGTAf8BTQFjAZgB/wFPAWYBnAH/AVABZgGgAf8BUQFqAaQB/wFU 706 | AWwBqAH/AVUBbgGqAf8BWwGCAbAB/wFaAYUBtAH/AVsBhwG2Af8BXgGIAboB/wFcAYYBuQH/AVwBhgG6 707 | Af8BXAGEAbcB/wFZAYEBtAH/AVIBagGpAf8BRgFfAZgB/wE8AU8BagH/ARcBIQEsAf8BAAEDAQgB/wEA 708 | AQEBBAH/AQABAwEHAf8BBwELAQ8B/wFPAlQB/wHbAeAB3wH/AeEC5wH/Ad0B5QHnAf8B3wHkAecB/wHe 709 | AeQB5wH/Ad4B4wHmAf8B3gHgAeYB/wHeAd8B5AH/At0B3gH/AdoB3gHgAf8B1wHbAd4B/wHWAdsB3gH/ 710 | AdUB2gHeAf8B1QHYAd4B/wHVAdcB3gH/AdYB2gHfAf8B0gHYAd4B/wHRAdcB3wH/AdIB1wHfAf8B1AHX 711 | Ad8B/wHVAdcB3wH/AdEB1wHeAf8BzQHVAd4B//8A/wD/AMMAQv8B+gH/AfgB+QH0Af8BsAG1AbMB/wEt 712 | AjMB/wEFAQoBCQH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wEAAgIB/wEOARYBHAH/ASIBMgE/ 713 | Af8BKQE5AU4B/wEsAT0BVAH/ATIBQwFdAf8BOAFNAWgB/wE+AVcBgQH/AUIBWwGLAf8BRgFfAZEB/wFI 714 | AWABlAH/AU0BZAGbAf8BTgFmAZwB/wFQAWsBoAH/AU4BaQGjAf8BUgFsAakB/wFQAWwBqAH/AVABawGo 715 | Af8BTAFoAaAB/wFFAV4BkQH/ATkBTgFoAf8BIQEuAUAB/wEFAQ4BFgH/AQABAgEFAf8BAAECAQUB/wEA 716 | AQUBCAH/AQYBDAEPAf8BEgEZARwB/wGAAocB/wHjAuYB/wHiAucB/wHeAeYB5wH/Ad8B5QHoAf8B3gLj 717 | Af8B3QHgAeUB/wLeAeYB/wLeAeEB/wHcAd0B3gH/AdYB2wHeAf8B1gHbAd4B/wHWAdsB3gH/AdUB2gHe 718 | Af8B1gHbAd8B/wHWAdoB3gH/AdEB2AHdAf8BzgHXAd4B/wHNAdcB3gH/Ac4B1wHeAf8B0QHXAd4B/wHR 719 | AdcB3gH/AdEB1gHfAf8BzgHVAd0B//8A/wD/AMMAJv8B/gP/Af4T/wH9A/8B+QH/AfkB+wH2Af8B7gHv 720 | AesB/wGSAZgBlQH/ASoBMAEvAf8BGgIcAf8BAAEFAQQB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMA 721 | Af8DAAH/AQABCgELAf8BCQEUARgB/wEPARsBIwH/ARgBJQEwAf8BIQEvAT8B/wEnATYBRwH/AS8BQAFV 722 | Af8BMQFDAV0B/wE5AUwBZQH/ATsBUgFsAf8BOAFQAWoB/wE3AU0BagH/AToBUAFuAf8BOQFLAWsB/wE3 723 | AUkBZgH/ASQBNQFJAf8BFgEjATAB/wEHAQ8BFwH/AQABBAEIAf8BAAEFAQcB/wEAAQQBBwH/AQMBCAEL 724 | Af8BBwEMAQ8B/wEKAQ8BEQH/ATcCPQH/Ab4CwwH/AeAB5wHmAf8B3gLnAf8B3gHlAeYB/wHfAeQB5wH/ 725 | Ad4B4wHfAf8B3wHhAeIB/wHeAd8B4QH/AeAC3wH/AdoB3QHfAf8B1gHbAd4B/wHWAdsB3gH/AdYB2wHd 726 | Af8B1QHaAd4B/wHUAdgB3wH/Ac8B2AHdAf8BzgHXAdwB/wHOAdcB3QH/Ac0B1wHeAf8BzgHXAd4B/wHO 727 | AdcB3gH/Ac4B1wHeAf8BzQHXAd4B/wHNAdMB2QH//wD/AP8AwwAi/wH+Af8B/gH/Af0B/wH+Af8B/gH/ 728 | Af4B/wH+D/8B/AP/AfgB/wH4AfsB9gH/AfcB+wH2Af8B7AHwAeoB/wGeAqEB/wFFAUkBSwH/AT4BQwFC 729 | Af8BJQEqASkB/wEaAR8BHgH/ARMBGAEXAf8BBAEIAQcB/wEAAQEBAAH/AwAB/wMAAf8DAAH/AwAB/wMA 730 | Af8BAAECAQAB/wECAQgBCQH/AQYBDgEQAf8BBQEOARIB/wEMARQBGgH/AREBHAEjAf8BGwEoATIB/wEb 731 | ASkBNQH/AR8BLQE8Af8BHwEtATsB/wEXASQBLwH/ARMBHQEpAf8BCwETARwB/wECAQkBDgH/AQABAQEE 732 | Af8BAAEBAQQB/wEAAQMBBgH/AQEBBgEJAf8BAwEIAQsB/wEFAQkBDQH/AQsBEQEUAf8BFQEbAR0B/wFr 733 | AXEBcAH/AdoC4AH/Ad0C5gH/Ad4B5QHoAf8B3wHkAecB/wHgAeMB5wH/Ad4B4QHjAf8B3gLgAf8B4AHe 734 | AeEB/wHbAdwB4QH/AdcB2wHeAf8B1gHbAd4B/wHWAdsB3gH/AdYB2gHdAf8B1QHZAd4B/wHUAdcB3wH/ 735 | Ac8B1gHeAf8BzgHUAd4B/wHPAdQB3gH/Ac8B1QHfAf8BzgHVAd8B/wHOAdYB3gH/Ac4B1gHeAf8BzQHX 736 | Ad4B/wHMAdUB2gH//wD/AP8AwwA+/wH7A/8B9wH/AfgB+wH2Af8B9wH7AfYB/wH4AfsB9gH/AfcB+gH2 737 | Af8BwwHHAcQB/wFTAVwBVgH/AToBQAE+Af8BLQExATAB/wEtATEBMAH/ATABNQE0Af8BHwElASMB/wEW 738 | ARsBGgH/AQ4BEgEUAf8BBQEKAQsB/wEAAgUB/wMAAf8DAAH/AQABAQEAAf8DAAH/AwAB/wMAAf8BAAED 739 | AQIB/wEAAQYBBwH/AQMBCAEMAf8BAwEJAQ0B/wEDAQkBDQH/AQABBQEIAf8BAAEFAQgB/wIAAQMB/wIA 740 | AQMB/wEAAQMBBgH/AQABBAEHAf8BBAEJAQoB/wEXARwBHQH/ARACFQH/AQ4BEwEVAf8BFgEaAR8B/wE/ 741 | AUMBRgH/AbYBvQG8Af8B3wLmAf8B3QHlAecB/wHfAeMB6AH/Ad4B4gHnAf8B3gHhAeYB/wLeAeIB/wLf 742 | AeAB/wHaAd0B4wH/AdcB2wHfAf8B1gHbAd0B/wHWAdsB3QH/AdUB2QHfAf8B1QHXAd4B/wHVAdcB3wH/ 743 | AdEB1wHeAf8BzQHVAd4B/wHOAdMB3gH/AdAB0gHfAf8BzgHUAd4B/wHNAdYB3QH/Ac4B1gHeAf8BzQHW 744 | Ad4B/wHNAdcB3gH/AcsB1AHZAf//AP8A/wDDAD7/AfoB/wH9Af4B9gH/AfgB/AH3Af8B9wH7AfYB/wH4 745 | AfoB9gH/AfUB9wHzAf8B8gHzAe8B/wGTAZcBkgH/AT0BQQFAAf8BMwI2Af8BMwE1ATQB/wE3AToBOQH/ 746 | AS8BNAEzAf8BJwEsASsB/wEdASEBIwH/ARYBGgEcAf8BDgIUAf8BCgIPAf8BBQEKAQkB/wEAAQUBBAH/ 747 | AQABAwECAf8BAAEGAQUB/wEAAQUBBAH/AQABAQEAAf8DAAH/AQABAwEGAf8CAAEEAf8DAAH/AwAB/wMA 748 | Af8DAAH/AwAB/wIAAQMB/wEAAQQBBwH/AQUBCgEMAf8BLwE0ATUB/wFOAVQBUwH/ASUBKgErAf8BKQEu 749 | ATEB/wFxAYMBhwH/AdsC4QH/Ad0B5AHnAf8B3gHjAeYB/wHfAeMB5gH/Ad4B4AHnAf8B3QHfAeQB/wHf 750 | Ad4B4AH/AdsB3gHgAf8B1wHdAeEB/wHWAdsB3gH/AdYB2gHfAf8B1gHYAd8B/wHTAdcB3wH/AdEB1wHe 751 | Af8BzwHWAd4B/wHOAdUB3QH/Ac4B1AHfAf8BzwHTAd0B/wHOAdMB2wH/AcwB0wHaAf8BywHWAdoB/wHN 752 | AdcB3AH/Ac0B1wHcAf8BzQHWAd0B/wHNAdQB2gH//wD/AP8AwwA+/wH5Af8B/QH+AfcB/wH3AfsB9gH/ 753 | AfcB+wH2Af8B+AH7AfYB/wH5AfoB9gH/AfcB+AH0Af8B5gHoAeUB/wGCAYYBhAH/ASwBMAEvAf8BHgEi 754 | ASAB/wEhASUBIwH/ASUBKQEnAf8BJAEoASYB/wEcASEBHwH/ARgBHgEdAf8BEQIWAf8BDgEUARMB/wEL 755 | ARABDwH/AQkCDgH/AQcBDQEMAf8BAwEJAQgB/wEEAQoBCQH/AQIBBwEIAf8BAwEIAQsB/wEAAQQBBwH/ 756 | AQABBAEHAf8DAAH/AgABAwH/AQABAwEGAf8CAAECAf8BAAECAQUB/wEAAQUBCAH/AQgBDAEQAf8BEwEY 757 | ARwB/wFEAUoBSwH/AY8BlAGVAf8BcAGCAYMB/wGlAaoBqwH/AdUB2gHbAf8B3QHhAeUB/wHcAeEB5AH/ 758 | Ad4B4QHmAf8B3gHgAeYB/wHeAeAB5gH/Ad4C4AH/AdsC3wH/AdgB3gHgAf8B1gHdAeAB/wHWAdsB3gH/ 759 | AdYB2QHeAf8B0wHXAd8B/wHPAdcB3gH/Ac0B1wHeAf8BzgHVAd4B/wHQAdMB3QH/Ac8B1AHdAf8BywHT 760 | AdgB/wHNAdMB1QH/AcwB0wHXAf8BzQHVAdsB/wHOAdUB3gH/Ac4B1QHeAf8BzgHUAd4B/wHOAdMB3gH/ 761 | /wD/AP8AwwA4/wH+Af8B/gH/Af4B/wH4Af8B/gH/AfcB/wH4AfsB9gH/AfcB+wH2Af8B9wH7AfYB/wH1 762 | AfgB9AH/AfUB9gHzAf8B8AHyAe8B/wHuAe8B7AH/AcoBzAHKAf8BXwJhAf8BNwE6ATkB/wE5ATsBOQH/ 763 | ATcBOQE3Af8BKwEuASwB/wEfASMBIQH/ARcBGwEaAf8BEgEYARYB/wEOAhMB/wELAhAB/wEKARABDwH/ 764 | AQgBDgEMAf8BCAINAf8BBgEJAQ0B/wEEAQkBDAH/AQgBDQEQAf8BBAEJAQwB/wEAAQUBCAH/AQQBCQEM 765 | Af8BBAEJAQwB/wEEAQkBDAH/AQYBCwEOAf8BBQEKAQ0B/wERARYBGQH/ASoBLgEyAf8BaAFsAW8B/wGl 766 | AakBrAH/AcMBxwHKAf8BzgHTAdUB/wHXAdsB3QH/AdwB3wHhAf8B3wHjAeYB/wHdAeAB5gH/Ad4B3wHm 767 | Af8B3gHfAeMB/wHdAd4B3wH/AdcC3QH/AdYB2wHdAf8B1QHbAd4B/wHVAdoB3gH/AdMB1wHeAf8BzgHX 768 | Ad4B/wHNAdcB3gH/Ac0B1wHeAf8BzgHXAd0B/wHNAdQB2AH/Ac4B0wHXAf8BzAHTAdYB/wHNAdMB1wH/ 769 | Ac4B1AHZAf8BzQHVAdwB/wHOAdMB3gH/Ac8B0wHeAf8BzwHUAd4B/wHNAdMB3wH//wD/AP8AwwA2/wH+ 770 | Af8B/gH/AfwB/wH9Af8B+AH/Av0B9wH/AfcB+wH2Af8B9wH7AfYB/wH3AfsB9gH/AfcB+gH3Af8B9AH1 771 | AfQB/wH3AfYB9wH/A/cB/wHzAfQB8AH/AewB7QHqAf8BrQGwAa4B/wFhAWIBXgH/AUABQQE+Af8BPgFA 772 | AT4B/wE8AT8BPgH/ATEBNAEzAf8BJQErASoB/wEdAiMB/wEWAhsB/wEOARQBEwH/AQoBEAEPAf8BCwEQ 773 | AQ8B/wELAQ8BEAH/AQkBDgEQAf8BCAENARAB/wEIAQ0BEAH/AQcBDAEPAf8BBwEMAQ8B/wELARABEwH/ 774 | AQsBEAETAf8BCAENARAB/wEKAQ8BEgH/ARkBHgEhAf8BTgFSAVUB/wGMAZABkgH/Aa8BsgG0Af8BzQHR 775 | AdMB/wHbAd8B4QH/Ad8B4gHmAf8B3wHiAecB/wHdAeAB5gH/Ad4B4AHkAf8B3gHfAeAB/wHeAd8B4AH/ 776 | Ad4C3wH/AdcB2wHdAf8B1gHbAd4B/wHWAdkB3gH/AdUB1wHeAf8BzwHXAd4B/wHNAdcB3gH/Ac0B1wHe 777 | Af8BzQHXAd0B/wHNAdYB2wH/Ac0B0wHXAf8BzQHTAdYB/wHMAdMB1gH/AcwB0wHWAf8BzgHTAdgB/wHO 778 | AdYB3gH/Ac8B0wHeAf8BzwHTAd4B/wHPAdMB3gH/AcwB0wHeAf//AP8A/wDDADb/Af4B/wH+Af8B+gH/ 779 | Af0B/wH5Af8B+AH8AfgB/wH3AfsB9gH/AfcB+wH2Af8B9wH7AfYB/wH3AfoB9gH/AfcB+AH3Af8D9wH/ 780 | AvgB9gH/AfcB+AHyAf8B9QH3AfAB/wHxAfMB7wH/AeAB4QHfAf8CrAGqAf8BbAFuAWsB/wFQAVIBUAH/ 781 | AToBPgE9Af8BMQE3ATYB/wEoAi4B/wEhAScBJgH/ARoBIAEfAf8BFQEbARwB/wETARgBHAH/ARABFAEY 782 | Af8BDQESARUB/wELARABEwH/AQoBDwESAf8BDgESARYB/wEOARIBFwH/AQ8BFAEYAf8BCAEOAREB/wEO 783 | ARQBFwH/ARQBGQEcAf8BOQE+AUIB/wGDAYcBiwH/AaMBpwGqAf8BvgHCAcUB/wHQAdMB1wH/AdsB3QHh 784 | Af8B3QHfAecB/wHeAeAB5gH/Ad0B3wHgAf8B3gHgAd8B/wPfAf8B2wHdAeAB/wHXAd0B4AH/AdYB2wHe 785 | Af8B1gHaAd4B/wHUAdcB3gH/AdQB1wHfAf8B0QHXAd4B/wHNAdYB3gH/Ac0B1wHeAf8BzgHXAd0B/wHN 786 | AdQB1wH/Ac4B0wHWAf8BzAHTAdcB/wHIAdIB1gH/AcoB1AHXAf8BywHTAdcB/wHNAdUB3QH/Ac8B0wHe 787 | Af8BzwHTAd4B/wHPAdMB3gH/AcwB0wHfAf//AP8A/wDDADX/Af4C/wH+Af8B+QH/Af0B/wH3Af8B+AH8 788 | AfYB/wH3AfsB9gH/AfcB+wH2Af8B9wH7AfYB/wH3AfsB9QH/AfcB+gH3Af8D9wH/AvcB8gH/AvcB7wH/ 789 | AfQB9gHvAf8B8gHzAe4B/wH2AfMB7wH/AfMB8gHwAf8B7gHvAe0B/wHXAdgB1gH/AasBrQGsAf8BaAFs 790 | AWsB/wE/AUQBQwH/ATEBNQE2Af8BJwEsAS0B/wEfASMBJgH/ARsBHwEkAf8BFgEcASEB/wEYAR0BIAH/ 791 | ARcBHAEfAf8BFgEbAR8B/wEUARgBHQH/AREBFgEbAf8BEAEUARkB/wEWARoBHwH/ASIBJgEqAf8BQgFG 792 | AUsB/wFxAYMBhQH/AagBrAGuAf8BqAGrAbAB/wHWAdkB3AH/AdUB2QHbAf8BzwHSAdYB/wHdAd8B5AH/ 793 | Ad4B3wHgAf8D3wH/At4B3wH/AdoB3AHeAf8B1gHaAd4B/wHWAdsB3gH/AdYB2gHeAf8B1QHYAd4B/wHT 794 | AdcB3wH/Ac8B1wHeAf8BzgHXAd4B/wHPAdQB3gH/Ac0B1QHcAf8BzQHWAd0B/wHPAdQB1wH/AcwB1AHX 795 | Af8ByAHSAdcB/wHGAdIB1gH/AcsB0wHWAf8BzgHTAdoB/wHOAdMB3gH/Ac4B0wHeAf8BzgHTAd4B/wHP 796 | AdMB3gH/Ac0B0wHfAf//AP8A/wDDADn/Av4B/wL9AfwB/wH4AfsB9gH/AfcB+wH2Af8B9gH6AfUB/wH3 797 | AfoB9wH/A/cB/wH3AfgB9QH/A/cB/wL2AfEB/wH1AfYB7wH/AfEB9AHuAf8B8AHzAe8B/wLxAe8B/wPv 798 | Af8D7wH/AfAB7wHuAf8B7gHsAeoB/wHjAeIB4AH/AdEB0AHRAf8BpQGqAacB/wFvAYEBgAH/AVIBVgFY 799 | Af8BOwE+AUMB/wEuATUBOQH/AScBLwEzAf8BJQEtATEB/wEiASoBLwH/ASQBKwEvAf8BMAE1ATcB/wFE 800 | AUcBTAH/AVQBVwFcAf8BXQFgAWUB/wFxAYEBhgH/AaMBpwGpAf8BqwGuAbEB/wHVAdgB3AH/AdkB2wHf 801 | Af8B2wHcAeAB/wHbAdwB4AH/AdgB2gHdAf8B3AHeAd8B/wPeAf8B2gHdAd8B/wHWAdsB3gH/AdUB2wHe 802 | Af8B1gHbAd4B/wHWAdgB3gH/AdUB1wHfAf8B0gHWAd8B/wHMAdgB3gH/Ac4B1wHeAf8B0AHTAd4B/wHO 803 | AdQB2gH/Ac0B0wHYAf8BzgHTAdYB/wHKAdMB1wH/AcYB0gHWAf8BxgHSAdYB/wHHAdMB1gH/AcsB0wHb 804 | Af8BzgHTAd8B/wHNAdMB3gH/AdAB0wHeAf8BzwHTAd4B/wHPAdIB3wH//wD/AP8AwwAs/wH+A/8B+wH/ 805 | Af4B/wH9A/8C/gL/AfoB+wH6Af8B9wH7AfYB/wH4AfkB9wH/A/cB/wP3Af8D9wH/AfcB+AH1Af8B9QH2 806 | AfEB/wHwAfMB7gH/AfAB8wHuAf8B7wHzAe4B/wHvAfIB7wH/A+8B/wPvAf8C7wHuAf8B7wHtAe8B/wHs 807 | AesB6gH/AeoC6wH/AekB6gHrAf8B5gHpAeYB/wHfAeIB4AH/AdIC1AH/Ab4BwAHBAf8BnAGeAaEB/wGC 808 | AYcBiAH/AWoBbgFxAf8BXwFiAWcB/wFpAWwBcAH/AXEBgAGDAf8BgwGGAYkB/wGZAZ0BnwH/AbMBtwG5 809 | Af8ByAHMAc8B/wHOAdEB1gH/AdgB2wHfAf8B2AHaAd0B/wHbAd0B3wH/AdoB3QHeAf8B2gHdAd4B/wHb 810 | Ad4B3wH/AdoB3AHdAf8B1gHaAd0B/wHWAdoB3gH/AdYB2gHeAf8B1gHbAd4B/wHWAdsB3gH/AdUB1wHf 811 | Af8B0gHXAd4B/wHRAdcB3wH/Ac4B1QHeAf8BzQHVAd8B/wHOAdQB3QH/AcwB0wHZAf8BzgHSAdcB/wHN 812 | AdIB1wH/AcgB0gHWAf8BxgHSAdYB/wHIAdMB2gH/AcsB0wHcAf8BzQHTAd0B/wHOAdMB3gH/Ac4B0gHd 813 | Af8BzwHTAd4B/wHKAdIB3wH/AcwB0gHfAf//AP8A/wDDACj/Af4D/wH8Af8B/gH/AfcB/wH+Af8B+AH/ 814 | AfoB/wH6Af0B+wH/AfcB+wH3Af8B9wH5AfYB/wH3AfgB9gH/A/cB/wP3Af8D9wH/AvYB9wH/AvYB8wH/ 815 | Ae8B8wHvAf8B8AHyAe8B/wHuAfAB7gH/Ae0C7wH/A+8B/wPvAf8D7wH/Au0B7wH/AegB6wHpAf8B5gHq 816 | AegB/wHmAesB5wH/AecB6AHnAf8D5wH/A+cB/wHjAuUB/wHfAeEB4gH/AdwC4QH/AdkC3gH/AdMB2AHa 817 | Af8BzwHSAdQB/wHVAdgB2QH/AdYC2gH/AdcB2wHcAf8B1wHbAd0B/wHaAd0B4QH/AdsB3gHiAf8B2QHc 818 | Ad0B/wLeAd8B/wHcAd0B3gH/AdoB3AHdAf8B2AHbAd0B/wHWAdsB3gH/AdYB2wHeAf8B1QHaAd4B/wHV 819 | AdkB3QH/AdQB2AHdAf8B1AHXAd4B/wHVAdgB3wH/AdQB1wHfAf8BzgHXAd4B/wHPAdUB3gH/Ac8B1AHe 820 | Af8BzQHUAd4B/wHMAdYB3AH/AcwB1AHXAf8BywHTAdcB/wHJAdIB1gH/AccB0wHXAf8BxgHSAdYB/wHL 821 | AdMB3QH/Ac0B0gHfAf8BzgHTAd8B/wHPAdMB3gH/Ac4B0wHeAf8BzgHTAd4B/wHJAdIB3wH/AckB0gHf 822 | Af//AP8A/wDDACD/Af4D/wH+Bf8B/gH/Af0D/wH4Af4B/QH/AfcB/QH4Af8B9wH7AfYB/wH3AfsB9QH/ 823 | AfgB+QH2Af8B9QH3AfYB/wH2AvcB/wH3AfYB+AH/AfYB9AH4Af8B9QH0AfcB/wHxAvMB/wHvAfIB8AH/ 824 | Ae4B8AHuAf8B7wHwAe8B/wPvAf8B7wHuAe8B/wLuAe8B/wPuAf8B6gLsAf8B5wHrAegB/wHmAeoB5wH/ 825 | AecB6QHnAf8B5gLnAf8D5wH/AeYC5wH/AeIB5gHnAf8B4AHmAecB/wHfAeQB6AH/Ad0B4gHkAf8B2wLg 826 | Af8B2wLgAf8B2QHeAd0B/wHaAd0B3gH/AdoB3QHeAf8B3AHeAeAB/wHcAd4B3wH/AdsC3gH/Ad4C3wH/ 827 | Ad4C3wH/AdwC3gH/AdgB2wHdAf8B1QHaAd0B/wHWAdsB3gH/AdYB2wHeAf8B1QHbAd4B/wHWAdoB3gH/ 828 | AdYB2AHeAf8B0wHXAeAB/wHQAdUB3wH/Ac4B1wHdAf8BzgHVAd4B/wHPAdQB3gH/Ac0B1gHeAf8BzQHW 829 | AdsB/wHMAdUB2AH/Ac4B0wHWAf8ByQHTAdYB/wHHAdIB1gH/AcUB0gHWAf8BxwHSAdYB/wHNAdMB3QH/ 830 | AcoB0gHfAf8BzgHSAeAB/wHPAdIB3wH/AcwB0wHdAf8BzgHTAd4B/wHPAdMB3gH/AckB0gHeAf//AP8A 831 | /wDDACD/Af4D/wH9Af8B/gH/AfwB/wH+Af8B+wH+Av8B9wH8AfgB/wH3AfsB9gH/AfcB+gH2Af8B9gH5 832 | AfcB/wHzAfcB9QH/AfMC9wH/AfQB9gH3Af8B8wH0AfUB/wHyAfQB9QH/AfEC8wH/Ae4B8QHwAf8B7gLw 833 | Af8D7wH/A+8B/wHvAe0B8AH/Ae8B7AHvAf8B7QHsAe4B/wHpAesB6gH/AecB6gHoAf8B5wHoAecB/wHm 834 | AucB/wPnAf8B5AHmAegB/wHjAeUB5wH/AeEB5QHmAf8B3QHkAeYB/wHgAeQB5wH/Ad0B4wHiAf8B3QHi 835 | AeAB/wHeAeIB3wH/AdwB4gHgAf8B3QHgAd8B/wHeAuAB/wHeAd8B4AH/Ad4B3wHgAf8B3QHeAd8B/wHZ 836 | AdwB3QH/AdcB2wHdAf8B1wHcAd0B/wHWAdsB3QH/AdUB2gHeAf8B1QHZAd4B/wHWAdoB3gH/AdUB2gHe 837 | Af8B1QHaAd8B/wHVAdgB3wH/AdYB1wHeAf8B0QHXAd4B/wHNAdYB3gH/Ac8B1gHfAf8BzwHUAd4B/wHP 838 | AdQB3gH/Ac0B1gHcAf8BzgHTAdYB/wHNAdMB1gH/AcoB0wHWAf8BygHSAdYB/wHHAdIB1gH/AcYB0gHW 839 | Af8BxwHSAdYB/wHNAdMB3QH/AckB0gHfAf8BywHSAd8B/wHJAdIB3gH/AcgB1AHdAf8BzQHTAd4B/wHL 840 | AdMB3gH/AckB0gHfAf//AP8A/wDDACD/AfwB/gL/AfoD/wH8Af4C/wH4Af0C/wH2AfsB+AH/AfcB+wH3 841 | Af8B9wH5AfcB/wH2AvcB/wHwAfYB8gH/Ae8B9gH1Af8B7gH0AfUB/wHvAfMB9AH/Ae4B8wHwAf8B7wHy 842 | Ae8B/wHuAfAB7wH/AewB8AHvAf8B7QHuAe8B/wHuAe0B8AH/AeoB6wHsAf8B6AHrAe4B/wHnAeoB7AH/ 843 | AeYB6QHoAf8B5gHoAeYB/wHmAucB/wHlAeYB5wH/AeQB5gHnAf8B4AHkAecB/wHeAeQB5QH/Ad8C5AH/ 844 | Ad4B4wHiAf8B3gHiAeEB/wHeAeEB4AH/Ad4B4AHfAf8D3wH/AdsC3wH/AdkC3wH/Ad0B3gHfAf8B3QLe 845 | Af8B3AHeAd8B/wHZAd0B3wH/AdYB2wHeAf8B1gHbAd4B/wHWAdsB3gH/AdUB2gHeAf8B1QHZAd4B/wHW 846 | AdkB3wH/AdQB1wHfAf8BzwHXAd4B/wHPAdgB3QH/Ac8B1wHdAf8BzwHXAd4B/wHOAdcB3gH/Ac8B1AHe 847 | Af8BzwHTAd4B/wHPAdMB3gH/AdAB0wHfAf8BzQHTAd0B/wHNAdMB1wH/AcsB0gHXAf8ByQHSAdYB/wHL 848 | AdIB1wH/AccB0gHYAf8BxwHSAdgB/wHGAdIB2AH/Ac0B1AHdAf8ByQHTAd8B/wHJAdIB3wH/AcgB0wHd 849 | Af8ByQHTAd0B/wHJAdMB3QH/AcgB0wHeAf8BxwHQAd0B//8A/wD/AMMAHP8B/gP/AfoB/gL/AfcD/wH3 850 | A/8B9wH8Av8B9gH7AfoB/wH3AfoB9wH/AfcB+AH3Af8B9QL3Af8B7wH1AfYB/wHuAfMB9gH/Ae8C8wH/ 851 | Ae4B8QHwAf8B7wHwAe8B/wHuAfAB7wH/AewC7wH/AeoB7wHuAf8B6QHsAe4B/wHpAeoB7QH/AecB6QHq 852 | Af8B5wHpAeoB/wHoAeYB6AH/AeUC5wH/AeIC5wH/AeAB5gHnAf8B3gHkAecB/wHfAeQB5gH/Ad4B4wHk 853 | Af8B3gHiAeAB/wHeAeAB3wH/Ad4B4QHgAf8B3wHgAd8B/wHaAt8B/wHZAd8B3gH/AdoC3gH/AdoB3QHe 854 | Af8B3AHdAd4B/wHXAdwB3QH/AdcB2wHdAf8B1gHbAd4B/wHWAdsB3gH/AdYB2wHeAf8B1QHaAd4B/wHW 855 | AdoB3gH/AdUB2QHeAf8B1AHYAd0B/wHUAdgB3gH/Ac8B1wHeAf8BzgHXAd4B/wHPAdYB3gH/Ac8B1gHf 856 | Af8BzgHWAd4B/wHOAdUB3gH/Ac8B0wHeAf8BzwHTAd4B/wHPAdMB3gH/Ac8B0wHeAf8BzgHUAdwB/wHM 857 | AdMB1wH/AckB0gHXAf8BxgHSAdcB/wHJAdMB3AH/AcsB0wHfAf8BywHTAd8B/wHHAdMB3gH/AccB0wHe 858 | Af8ByAHSAd8B/wHLAdIB3wH/Ac4B0wHeAf8BzwHTAd4B/wHNAdMB3gH/Ac4B0wHeAf8ByQHSAd8B//8A 859 | /wD/AMMADP8B/RP/AfoB/gL/AfcB/gL/AfgB/gL/AfcB/AH+Af8B9wL7Af8B9gH4AfcB/wHzAvcB/wHx 860 | AfYB+AH/AfAB9AH3Af8B7wHzAfQB/wHvAvEB/wHtAfAB7wH/AeoC7wH/AegC7gH/AecB7QHuAf8B5wLr 861 | Af8B5gHrAeoB/wHmAeoB6AH/AeUB6AHnAf8B4wLnAf8B3wHnAegB/wHeAeYB5wH/Ad8B5QHnAf8B3wHk 862 | AeUB/wHfAeQB4wH/Ad8B4gHgAf8B3wLgAf8B3gHgAd4B/wHcAt8B/wHbAd8B3gH/AdkB3wHeAf8B1gLe 863 | Af8B1wHcAd4B/wHYAdwB3gH/AdUB2wHeAf8B1gHbAd4B/wHXAdoB3gH/AdcB2gHeAf8B1gHbAd4B/wHV 864 | AdoB3gH/AdUB2AHdAf8B0wHYAd4B/wHUAdgB3gH/AdEB1wHeAf8BzwHXAd4B/wHOAdcB3QH/Ac0B1wHe 865 | Af8BzQHXAd4B/wHPAdQB3gH/Ac8B0wHeAf8BzwHTAd4B/wHPAdMB3gH/Ac8B1AHeAf8BzwHTAd4B/wHP 866 | AdMB3gH/Ac4B1QHcAf8BzgHTAdgB/wHKAdMB1wH/AccB0gHXAf8BzQHUAdwB/wHLAdMB3gH/AcgB0gHf 867 | Af8ByAHSAd8B/wHHAdMB3gH/AcgB0wHeAf8ByAHTAd4B/wHKAdMB3gH/Ac8B0wHeAf8BzwHTAd4B/wHO 868 | AdMB3gH/Ac4B0wHeAf8BywHSAd4B//8A/wD/AMMAAf4H/wH+A/8B+wP/Af4L/wH7A/8B9wP/AfYB/AL/ 869 | AfcB/AL/AfcC+gH/AfYB+AH3Af8B9AL3Af8B8AH3AfgB/wHvAfQB9wH/Ae8B8gH0Af8B7wHyAfAB/wHs 870 | Au8B/wHoAe4B7wH/AegB7QHvAf8B5gHsAe8B/wHnAewB7gH/AegB6gHoAf8B5wLoAf8B5QLnAf8B4QLn 871 | Af8B3wHkAecB/wHeAeQB5gH/Ad0B5AHjAf8B3wHjAeIB/wHfAuEB/wHeAeEB3wH/AdsB4AHfAf8B2QHf 872 | Ad4B/wHZAd8B3gH/AdgB3wHeAf8B1wHdAd4B/wHXAdsB3gH/AdYB2gHgAf8B1wHaAd4B/wHXAdoB3QH/ 873 | AdYB2QHeAf8B1gHZAd4B/wHWAdoB3gH/AdUB2QHdAf8B1gHZAdwB/wHUAdgB3gH/AdAB1wHdAf8B0AHX 874 | Ad0B/wHPAdgB3AH/Ac4B1QHbAf8BzgHUAd0B/wHOAdUB3AH/Ac8B1AHdAf8BzwHTAd4B/wHPAdMB3gH/ 875 | Ac8B0wHeAf8BzwHTAd4B/wHPAdMB3gH/Ac8B0gHfAf8BzgHTAdkB/wHOAdMB2AH/Ac4B0wHXAf8BywHT 876 | AdYB/wHGAdMB1QH/AcYB0wHWAf8BywHSAdwB/wHJAdIB3wH/AcgB0gHfAf8ByAHSAd8B/wHHAdMB3wH/ 877 | AccB0wHfAf8BywHTAd4B/wHOAdMB3gH/AdAB0wHeAf8BzwHTAd4B/wHNAdMB3gH/Ac4B0wHeAf8BzAHS 878 | Ad4B//8A/wD/AMMAAfsD/wH+B/8B/Af/Af4D/wH+A/8B+QH9Av8B+AH8Af0B/wH3AfwB/QH/AfYB+gH8 879 | Af8B9wL4Af8B9gL3Af8B7wH1AfYB/wHvAfQB9wH/AfAB9AH1Af8B7gHwAe8B/wHsAu8B/wHoAe0B7gH/ 880 | AecB7AHvAf8B5wHsAe4B/wHnAesB7AH/AecB6gHrAf8B4gHoAecB/wHgAucB/wHeAeUB5wH/Ad8B5AHn 881 | Af8B3gHjAeQB/wHeAeQB4AH/Ad4B4gHhAf8B3wHgAd8B/wHZAeAB3gH/AdkB3wHeAf8B1wLeAf8B1QHc 882 | Ad8B/wHWAdsB3gH/AdYB2wHeAf8B1gHbAd0B/wHWAdoB2wH/AdYB2AHaAf8B1gHXAdkB/wLWAdgB/wHW 883 | AdcB2AH/AdYB1wHYAf8B1AHXAdoB/wHTAtcB/wHSAdcB2AH/AdAB1gHcAf8BzgHUAdkB/wHOAdYB1wH/ 884 | AcwB1QHXAf8BzgHTAdsB/wHPAdIB3wH/Ac8B0wHeAf8B0AHUAd0B/wHOAdMB2gH/Ac4B0wHYAf8BzwHT 885 | AdkB/wHPAdMB2wH/Ac8B0wHeAf8BzQHTAdoB/wHNAdMB1gH/AcsB1AHWAf8ByAHSAdYB/wHGAdIB1gH/ 886 | AcYB0gHXAf8ByAHSAdwB/wHGAdAB3QH/AccB0AHeAf8ByAHRAd4B/wHIAdIB3wH/AccB0QHdAf8BxgHT 887 | Ad8B/wHMAdMB3gH/Ac8B0wHeAf8BzgHTAd4B/wHNAdMB3gH/Ac8B0wHeAf8BzgHTAd4B/wHPAdEB3wH/ 888 | /wD/AP8AwwABQgFNAT4HAAE+AwABKAMAAUABAQIAAVADAAEBAQABAQUAAYABDBYAA///AP8A/wD/AP8A 889 | /wD/AP8A/wD/AP8A/wCNAAs= 890 | 891 | 892 | 893 | 894 | 895 | AAABAAEAICAAAAEAIACoEAAAFgAAACgAAAAgAAAAQAAAAAEAIAAAAAAAgBAAAAAAAAAAAAAAAAAAAAAA 896 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 897 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 898 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/////+vr6//r6+v/6+vr/+vr6//7+/v//////AAAAAAAA 899 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD//////f39//r6 900 | +v/6+vr/+vr6//r6+v//////AAAAAAAAAAAAAAAAAAAAAP////+ZmZn/HR0d/yYmJv8mJib/MzMz/+Tk 901 | 5P//////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/////8DA 902 | wP8mJib/JiYm/yYmJv8dHR3/wMDA//////8AAAAAAAAAAAAAAAAAAAAAAAAAAOvr6/8VFRX/AAAA/wAA 903 | AP8AAAD/fX19//39/f8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 904 | AAD+/v7/Tk5O/wAAAP8AAAD/AAAA/zMzM//09PT/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/f39/5mZ 905 | mf8AAAD/AAAA/wAAAP8VFRX/5OTk//39/f8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 906 | AAAAAAAA/v7+/8zMzP8GBgb/AAAA/wAAAP8AAAD/wMDA//////8AAAAAAAAAAAAAAAAAAAAAAAAAAAAA 907 | AAAAAAAA9PT0/yYmJv8AAAD/AAAA/wAAAP99fX3//////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 908 | AAAAAAAAAAAAAAAAAAD/////Tk5O/wAAAP8AAAD/AAAA/05OTv/+/v7/AAAAAAAAAAAAAAAAAAAAAAAA 909 | AAAAAAAAAAAAAAAAAAD/////mZmZ/wAAAP8AAAD/AAAA/xUVFf/k5OT//f39/wAAAAAAAAAAAAAAAAAA 910 | AAAAAAAAAAAAAAAAAAAAAAAA/////8zMzP8GBgb/AAAA/wAAAP8CAgL/wMDA//////8AAAAAAAAAAAAA 911 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD09PT/MzMz/wAAAP8AAAD/AAAA/2ZmZv/09PT/6+vr/+vr 912 | 6//r6+v/6+vr/+vr6//r6+v/6+vr/+vr6//r6+v/Tk5O/wAAAP8AAAD/AAAA/05OTv//////AAAAAAAA 913 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////+oqKj/AgIC/wEBAf8AAAD/AQEB/xUV 914 | Ff8VFRX/FRUV/xUVFf8VFRX/FRUV/xUVFf8VFRX/FRUV/xUVFf8AAAD/AAAA/wAAAP8CAgL/zMzM//// 915 | //8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP39/f8zMzP/AAAA/wAA 916 | AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/2Zm 917 | Zv//////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/////6io 918 | qP8GBgb/AAAA/wAAAP8AAAD/BgYG/wYGBv8CAgL/AgIC/wICAv8GBgb/BgYG/wYGBv8AAAD/AAAA/wAA 919 | AP8MDAz/zMzM//////8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 920 | AAAAAAAA/f39/zMzM/8BAQH/AAAA/wAAAP9OTk7/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/Tk5O/wAA 921 | AP8AAAD/AAAA/2ZmZv/+/v7/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 922 | AAAAAAAAAAAAAAAAAAD+/v7/wMDA/wAAAP8AAAD/AAAA/xUVFf/r6+v/AAAAAAAAAAAAAAAAAAAAANra 923 | 2v8VFRX/AAAA/wAAAP8MDAz/2tra//////8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 924 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/////Tk5O/wAAAP8AAAD/AgIC/2ZmZv//////AAAAAAAA 925 | AAD/////ZmZm/wAAAP8AAAD/AAAA/2ZmZv//////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 926 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/////AwMD/BgYG/wAAAP8AAAD/DAwM/9ra 927 | 2v8AAAAAAAAAAMzMzP8MDAz/AAAA/wAAAP8VFRX/5OTk//7+/v8AAAAAAAAAAAAAAAAAAAAAAAAAAAAA 928 | AAD///////7///z7/////v////////39///9/f//AAAAAAAAAAAAAAAAAAAAAP////9OTk7/AQEB/wAA 929 | AP8AAAD/ZmZm////////////ZmZm/wAAAP8AAAD/AAAA/319ff//////AAAAAAAAAAAAAAAAAAAAAAAA 930 | AAAAAAAAAAAAAP/+//+Whvv/alT5/2pU+f9qVPn/alT5/9HK/f//////AAAAAAAAAAAAAAAA/////8zM 931 | zP8GBgb/AAAA/wAAAP8MDAz/5OTk/9ra2v8MDAz/AAAA/wAAAP8dHR3/5OTk//////8AAAAAAAAAAAAA 932 | AAAAAAAAAAAAAAAAAAAAAAAA/////5aG+/8WAPX/HwD2/x8A9v8WAPX/alT5//////8AAAAAAAAAAAAA 933 | AAAAAAAA/f39/2ZmZv8AAAD/AAAA/wAAAP+ZmZn/fX19/wAAAP8AAAD/AAAA/319ff//////AAAAAAAA 934 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA7er+/0Ai9/8lBPb/LAv2/ygG9v82F/f/4t7+//// 935 | //8AAAAAAAAAAAAAAAD/////2tra/wwMDP8AAAD/AAAA/zMzM/8mJib/AAAA/wAAAP8dHR3/6+vr//// 936 | //8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/////lob7/x8A9v8sC/b/LAv2/x8A 937 | 9v+Bbfr//////wAAAAAAAAAAAAAAAAAAAAD/////ZmZm/wICAv8AAAD/AAAA/wAAAP8AAAD/AAAA/5mZ 938 | mf/9/f3/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAO3q/v/19P//AAAAAAAAAADt6v7/QCL3/yUE 939 | 9v8sC/b/KAb2/zYX9//i3v7///7//wAAAAAAAAAAAAAAAP/////a2tr/DAwM/wAAAP8AAAD/AAAA/wAA 940 | AP8mJib/9PT0//////8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD19P//0cr9//39//8AAAAAAAAAAP/+ 941 | //+vo/v/HwD2/ywL9v8sC/b/HwD2/2Zm////////AAAAAAAAAAAAAAAAAAAAAP39/f99fX3/AAAA/wAA 942 | AP8AAAD/AAAA/5mZmf//////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/////8W8/f/i3v7//////wAA 943 | AAAAAAAAAAAAAP39//9qVPn/HwD2/ywL9v8sC/b/JQT2/6+j+///////AAAAAAAAAAAAAAAA/////+Tk 944 | 5P8VFRX/AAAA/wAAAP8zMzP/9PT0//////8AAAAAAAAAAAAAAAAAAAAAAAAAAP39///Ryv3/r6P7//// 945 | //8AAAAAAAAAAAAAAAAAAAAA/////+Le/v82F/f/JQT2/ywL9v8lBPb/Nhf3/+Le/v//////AAAAAAAA 946 | AAAAAAAA/////319ff8AAAD/AAAA/6ioqP/9/f3/AAAAAAAAAAAAAAAAAAAAAAAAAAD/////9fT//5aG 947 | +//t6v7///7//wAAAAAAAAAAAAAAAAAAAAAAAAAA//7//8W8/f8lBPb/JQT2/ywL9v8fAPb/SzL3/+3q 948 | /v//////AAAAAAAAAAD/////6+vr/xUVFf8zMzP/+vr6//////8AAAAAAAAAAAAAAAAAAAAA//////r5 949 | //+Bbfr/xbz9//////8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/f3//6+j+/8fAPb/KAb2/ywL 950 | 9v8fAPb/SzL3/+3q/v//////AAAAAAAAAAD/////fX19/6ioqP//////AAAAAAAAAAAAAAAAAAAAAP// 951 | ///6+f//gW36/5mZ////////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/////5mZ 952 | //8lBPb/JQT2/ywL9v8fAPb/SzL3/8W8/f/////////////////9/f3//f39//////8AAAAAAAAAAP/+ 953 | ///8+///4t7+/2pU+f+Whvv//////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 954 | AAAAAAAA/////6+j+/82F/f/HwD2/ygG9v8lBPb/KAb2/4Ft+v/i3v7////////////////////////+ 955 | ///8+///+vn//6+j+/9LMvf/mZn///////8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 956 | AAAAAAAAAAAAAAAAAAAAAAAA/////9HK/f9qVPn/HwD2/x8A9v8oBvb/HwD2/zYX9/9qVPn/r6P7/8W8 957 | /f/FvP3/xbz9/5aG+/9LMvf/SzL3/8W8/f//////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 958 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//////////+vo/v/ZjP//ygG9v8fAPb/FgD1/xYA 959 | 9f8WAPX/FgD1/x8A9v8fAPb/SzL3/5mZ///6+f///////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 960 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP///////v//0cr9/5aG 961 | +/+Bbfr/alT5/2pU+f+Bbfr/lob7/8W8/f///v///////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 962 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 963 | AAD//////////////////////////////////////////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 964 | AAAAAAAAAAAAAAAAAAAAAAAA//////Af/4DwD/8A+A//AfgH/gH8B/4D/AP8A/4AAAf+AAAH/wAAD/8A 965 | AA//gAAf/4DwH//AYD//wGA/AeAAfwDgAH8A8AD/gHAA/4B4AfzAOAH4wDwD8OAcA+HgDgfB8AYHg/gD 966 | Dwf8AAwP/gAAH/8AAD//gAB//+AB///4B/8= 967 | 968 | 969 | --------------------------------------------------------------------------------